From 835ac4c14a2ae8d17578e2b7bbbaa54d5a12f40a Mon Sep 17 00:00:00 2001 From: wuzeyu <1223318623@qq.com> Date: 星期一, 15 一月 2024 17:01:45 +0800 Subject: [PATCH] Merge remote-tracking branch 'origin/master' --- pipIrr-platform/pipIrr-web/pipIrr-web-base/src/main/java/com/dy/pipIrrBase/user/UserCtrl.java | 453 ++++++++++++++++++++++++++++++++++++++++++++++++++++++- 1 files changed, 438 insertions(+), 15 deletions(-) diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-base/src/main/java/com/dy/pipIrrBase/user/UserCtrl.java b/pipIrr-platform/pipIrr-web/pipIrr-web-base/src/main/java/com/dy/pipIrrBase/user/UserCtrl.java index 01b01bb..3aa4298 100644 --- a/pipIrr-platform/pipIrr-web/pipIrr-web-base/src/main/java/com/dy/pipIrrBase/user/UserCtrl.java +++ b/pipIrr-platform/pipIrr-web/pipIrr-web-base/src/main/java/com/dy/pipIrrBase/user/UserCtrl.java @@ -1,43 +1,81 @@ package com.dy.pipIrrBase.user; +import com.dy.common.aop.SsoAop; +import com.dy.common.multiDataSource.DataSourceContext; +import com.dy.common.mybatis.envm.Deleted; +import com.dy.common.mybatis.envm.Disabled; +import com.dy.common.util.MD5; import com.dy.common.webUtil.BaseResponse; import com.dy.common.webUtil.BaseResponseUtils; import com.dy.common.webUtil.QueryResultVo; import com.dy.common.webUtil.ResultCodeMsg; import com.dy.pipIrrGlobal.pojoBa.BaUser; +import com.dy.pipIrrGlobal.util.Constant; +import com.dy.pipIrrGlobal.voBa.VoUserInfo; +import com.mysql.cj.util.StringUtils; import io.swagger.v3.oas.annotations.Operation; -import io.swagger.v3.oas.annotations.Parameter; import io.swagger.v3.oas.annotations.media.Content; import io.swagger.v3.oas.annotations.media.Schema; import io.swagger.v3.oas.annotations.responses.ApiResponse; import io.swagger.v3.oas.annotations.responses.ApiResponses; import io.swagger.v3.oas.annotations.tags.Tag; +import jakarta.validation.Valid; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; import org.springframework.http.MediaType; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; +import org.springframework.validation.BindingResult; +import org.springframework.web.bind.annotation.*; import java.util.List; +import java.util.Objects; @Slf4j @Tag(name = "鐢ㄦ埛绠$悊", description = "鐢ㄦ埛澧炲垹鏀规煡绛夋搷浣�") @RestController -@RequestMapping(path="user") +@RequestMapping(path = "user") @SuppressWarnings("unchecked")//java鐗堟湰瓒婇珮锛屽娉涘瀷绾︽潫瓒婁弗锛屾墍浠ラ厤缃甋uppressWarnings("unchecked") public class UserCtrl { - private UserSv sv ; + private UserSv sv; + + @Value("${user.defaultTrueRandomFalsePassword:true}") + private Boolean defaultTrueRandomFalsePassword; + + @Value("${user.defaultPassword:ABC123}") + private String defaultPassword; @Autowired - private void setSv(UserSv sv){ - this.sv = sv ; + private void setSv(UserSv sv) { + this.sv = sv; + } + + /** + * 瀹㈡埛绔姹傚緱鍒伴粯璁ゅ瘑鐮� + * @return 榛樿瀵嗙爜 + */ + @Operation(summary = "鑾峰緱榛樿瀵嗙爜", description = "鑾峰緱榛樿瀵嗙爜") + @ApiResponses(value = { + @ApiResponse( + responseCode = ResultCodeMsg.RsCode.SUCCESS_CODE, + description = "杩斿洖榛樿瀵嗙爜锛圔aseResponse.content:password锛�", + content = {@Content(mediaType = MediaType.APPLICATION_JSON_VALUE, + schema = @Schema(implementation = String.class))} + ) + }) + @GetMapping(path = "defaultPassword") + public BaseResponse<String> defaultPassword(){ + if(defaultTrueRandomFalsePassword){ + return BaseResponseUtils.buildSuccess(defaultPassword) ; + }else{ + String password = this.sv.getStringRandom(6) ; + return BaseResponseUtils.buildSuccess(password) ; + } } /** * 瀹㈡埛绔姹傚緱鍒版墍鏈夌敤鎴锋暟鎹� + * * @return 鎵�鏈夌敤鎴锋暟鎹� */ @Operation(summary = "鑾峰緱涓�椤电敤鎴�", description = "杩斿洖涓�椤电敤鎴锋暟鎹�") @@ -49,19 +87,21 @@ schema = @Schema(implementation = BaUser.class))} ) }) - @PostMapping(path = "some") - public BaseResponse<QueryResultVo<List<BaUser>>> some(QueryVo vo){ + @PostMapping(path = "some", consumes = MediaType.APPLICATION_JSON_VALUE) + @SsoAop() + public BaseResponse<QueryResultVo<List<BaUser>>> some(@RequestBody @Valid QueryVo vo) { try { - QueryResultVo<List<BaUser>> res = this.sv.selectSome(vo) ; + QueryResultVo<List<BaUser>> res = this.sv.selectSome(vo); return BaseResponseUtils.buildSuccess(res); } catch (Exception e) { log.error("鏌ヨ鐢ㄦ埛寮傚父", e); - return BaseResponseUtils.buildException(e.getMessage()) ; + return BaseResponseUtils.buildException(e.getMessage()); } } /** * 寰楀埌涓�涓敤鎴锋暟鎹� + * * @return 涓�涓敤鎴锋暟鎹� */ @Operation(summary = "涓�涓敤鎴�", description = "寰楀埌涓�涓敤鎴锋暟鎹�") @@ -73,9 +113,392 @@ schema = @Schema(implementation = BaUser.class))} ) }) + //@GetMapping(path = "one", consumes = MediaType.TEXT_PLAIN_VALUE) @GetMapping(path = "one") - public BaseResponse<BaUser> one(@Parameter(description = "瀹炰綋id", required = true) Long id){ - return BaseResponseUtils.buildSuccess(this.sv.selectById(id)); + @SsoAop() + public BaseResponse<BaUser> one(String id) { + return BaseResponseUtils.buildSuccess(this.sv.selectById(Long.parseLong(id))); } + /** + * 淇濆瓨鐢ㄦ埛 + * + * @param po 淇濆瓨鐢ㄦ埛form琛ㄥ崟瀵硅薄 + * @return 鏄惁鎴愬姛 + */ + @Operation(summary = "淇濆瓨鐢ㄦ埛", description = "鎻愪氦鐢ㄦ埛鏁版嵁锛坒orm琛ㄥ崟锛夛紝杩涜淇濆瓨") + @ApiResponses(value = { + @ApiResponse( + responseCode = ResultCodeMsg.RsCode.SUCCESS_CODE, + description = "鎿嶄綔缁撴灉锛歵rue锛氭垚鍔燂紝false锛氬け璐ワ紙BaseResponse.content锛�", + content = {@Content(mediaType = MediaType.APPLICATION_JSON_VALUE, + schema = @Schema(implementation = Boolean.class))} + ) + }) + @PostMapping(path = "save", consumes = MediaType.APPLICATION_JSON_VALUE) + @SsoAop() + public BaseResponse<Boolean> save(@RequestBody @Valid BaUser po, BindingResult bindingResult) { + if (bindingResult != null && bindingResult.hasErrors()) { + return BaseResponseUtils.buildFail(Objects.requireNonNull(bindingResult.getFieldError()).getDefaultMessage()); + } + po.id = null; + int count; + try { + po.supperAdmin = Constant.no.byteValue() ; + po.disabled = Disabled.NO;//榛樿涓嶇鐢� + po.deleted = Deleted.NO;//榛樿涓嶅垹闄� + po.orgTag = DataSourceContext.get();//鏈烘瀯鏍囩 + if (!StringUtils.isNullOrEmpty(po.password)) { + /* + 濡傛灉鍓嶇杩涜浜哹ase64鍔犲瘑 + po.password = new String(Base64.getDecoder().decode(po.password)) ; + */ + po.password = MD5.encrypt(po.password);//杩涜鍔犲瘑鐮� + } else { + po.password = MD5.encrypt(defaultPassword); + } + count = this.sv.save(po); + this.sv.setRoles(po.id, po.roleIds); + } catch (Exception e) { + log.error("淇濆瓨鐢ㄦ埛寮傚父", e); + return BaseResponseUtils.buildException(e.getMessage()); + } + if (count <= 0) { + return BaseResponseUtils.buildFail("鏁版嵁搴撳瓨鍌ㄥけ璐�"); + } else { + return BaseResponseUtils.buildSuccess(true); + } + } + + /** + * 缂栬緫淇敼鐢ㄦ埛 + * + * @param po 淇濆瓨鐢ㄦ埛form琛ㄥ崟瀵硅薄 + * @return 鏄惁鎴愬姛 + */ + @Operation(summary = "缂栬緫淇敼鐢ㄦ埛", description = "鎻愪氦鐢ㄦ埛鏁版嵁锛坒orm琛ㄥ崟锛夛紝杩涜淇敼") + @ApiResponses(value = { + @ApiResponse( + responseCode = ResultCodeMsg.RsCode.SUCCESS_CODE, + description = "鎿嶄綔缁撴灉锛歵rue锛氭垚鍔燂紝false锛氬け璐ワ紙BaseResponse.content锛�", + content = {@Content(mediaType = MediaType.APPLICATION_JSON_VALUE, + schema = @Schema(implementation = Boolean.class))} + ) + }) + @PostMapping(path = "update", consumes = MediaType.APPLICATION_JSON_VALUE) + @SsoAop() + public BaseResponse<Boolean> update(@RequestBody @Valid BaUser po, BindingResult bindingResult) { + if (bindingResult != null && bindingResult.hasErrors()) { + return BaseResponseUtils.buildFail(Objects.requireNonNull(bindingResult.getFieldError()).getDefaultMessage()); + } + if (po.id == null) { + return BaseResponseUtils.buildFail("鏃犳暟鎹疄浣揑D"); + } + int count; + try { + po.supperAdmin = null;//璁剧疆涓簄ull锛屼笉鍋氭洿鏂� + po.deleted = null;//璁剧疆涓簄ull锛屼笉鍋氭洿鏂� + po.orgTag = null;//璁剧疆涓簄ull锛屼笉鍋氭洿鏂� + count = this.sv.update(po); + this.sv.setRoles(po.id, po.roleIds); + } catch (Exception e) { + log.error("淇濆瓨鐢ㄦ埛寮傚父", e); + return BaseResponseUtils.buildException(e.getMessage()); + } + if (count <= 0) { + return BaseResponseUtils.buildFail("鏁版嵁搴撳瓨鍌ㄥけ璐�"); + } else { + return BaseResponseUtils.buildSuccess(true); + } + } + + + /** + * 淇敼瀵嗙爜 + * + * @param id 鐢ㄦ埛ID + * @return 鏄惁鎴愬姛 + */ + @Operation(summary = "淇敼瀵嗙爜", description = "鎻愪氦鐢ㄦ埛ID銆佹棫瀵嗙爜銆佹柊瀵嗙爜锛岃繘琛屾敼瀵嗙爜") + @ApiResponses(value = { + @ApiResponse( + responseCode = ResultCodeMsg.RsCode.SUCCESS_CODE, + description = "鎿嶄綔缁撴灉锛歵rue锛氭垚鍔燂紝false锛氬け璐ワ紙BaseResponse.content锛�", + content = {@Content(mediaType = MediaType.APPLICATION_JSON_VALUE, + schema = @Schema(implementation = Boolean.class))} + ) + }) + //@GetMapping(path = "changePassword", consumes = MediaType.TEXT_PLAIN_VALUE) + @GetMapping(path = "changePassword") + @SsoAop() + public BaseResponse<Boolean> changePassword(String id, String oldPassword, String newPassword) throws Exception { + if (id == null) { + return BaseResponseUtils.buildFail("id涓嶈兘涓虹┖"); + } + if (StringUtils.isNullOrEmpty(oldPassword)) { + return BaseResponseUtils.buildFail("鏃у瘑鐮佷笉鑳戒负绌�"); + } + if (StringUtils.isNullOrEmpty(newPassword)) { + return BaseResponseUtils.buildFail("鏂板瘑鐮佷笉鑳戒负绌�"); + } + /* + 濡傛灉鍓嶇杩涜浜哹ase64鍔犲瘑 + oldPassword = new String(Base64.getDecoder().decode(oldPassword)) ; + newPassword = new String(Base64.getDecoder().decode(newPassword)) ; + */ + oldPassword = MD5.encrypt(oldPassword);//杩涜鍔犲瘑鐮� + newPassword = MD5.encrypt(newPassword);//杩涜鍔犲瘑鐮� + + Long idLg = Long.parseLong(id); + int count; + try { + BaUser po = this.sv.selectById(idLg); + if (Objects.isNull(po)) { + return BaseResponseUtils.buildFail("鏈緱鍒扮敤鎴凤紝璇锋眰澶辫触"); + } else { + if (!po.password.equalsIgnoreCase(oldPassword)) { + return BaseResponseUtils.buildFail("鏃у瘑鐮佷笉姝g‘锛岃姹傚け璐�"); + } else { + count = this.sv.changePassword(idLg, newPassword); + } + } + } catch (Exception e) { + log.error("淇濆瓨鐢ㄦ埛寮傚父", e); + return BaseResponseUtils.buildException(e.getMessage()); + } + if (count <= 0) { + return BaseResponseUtils.buildFail("鏁版嵁搴撳瓨鍌ㄥけ璐�"); + } else { + return BaseResponseUtils.buildSuccess(true); + } + } + + /** + * 閲嶇疆瀵嗙爜 + * @param vo form琛ㄥ崟瀵硅薄 + * @return 鏄惁鎴愬姛 + */ + @Operation(summary = "閲嶇疆瀵嗙爜", description = "鎻愪氦鏁版嵁锛坒orm琛ㄥ崟json鏁版嵁锛夛紝杩涜瀵嗙爜閲嶇疆") + @ApiResponses(value = { + @ApiResponse( + responseCode = ResultCodeMsg.RsCode.SUCCESS_CODE, + description = "鎿嶄綔缁撴灉锛歵rue锛氭垚鍔燂紝false锛氬け璐ワ紙BaseResponse.content锛�", + content = {@Content(mediaType = MediaType.APPLICATION_JSON_VALUE, + schema = @Schema(implementation = Boolean.class))} + ) + }) + @PostMapping(path = "resetPassword", consumes = MediaType.APPLICATION_JSON_VALUE) + @SsoAop() + public BaseResponse<Boolean> resetPassword(@RequestBody ResetPasswordVo vo) throws Exception { + if (vo.id == null) { + return BaseResponseUtils.buildFail("id涓嶈兘涓虹┖"); + } + String password = MD5.encrypt(vo.password);//杩涜鍔犲瘑鐮� + Long idLg = Long.parseLong(vo.id); + int count; + try { + BaUser po = this.sv.selectById(idLg); + if (Objects.isNull(po)) { + return BaseResponseUtils.buildFail("鏈緱鍒扮敤鎴凤紝璇锋眰澶辫触"); + } else { + count = this.sv.changePassword(idLg, password); + } + } catch (Exception e) { + log.error("淇濆瓨鐢ㄦ埛寮傚父", e); + return BaseResponseUtils.buildException(e.getMessage()); + } + if (count <= 0) { + return BaseResponseUtils.buildFail("鏁版嵁搴撳瓨鍌ㄥけ璐�"); + } else { + return BaseResponseUtils.buildSuccess(true); + } + } + + /* + * 閲嶇疆瀵嗙爜涓洪粯璁ゅ�� + * + * @param id 鐢ㄦ埛ID + * @return 鏄惁鎴愬姛 + + @Operation(summary = "閲嶇疆瀵嗙爜涓洪粯璁ゅ瘑鐮�", description = "鎻愪氦鐢ㄦ埛ID") + @ApiResponses(value = { + @ApiResponse( + responseCode = ResultCodeMsg.RsCode.SUCCESS_CODE, + description = "鎿嶄綔缁撴灉锛歵rue锛氭垚鍔燂紝false锛氬け璐ワ紙BaseResponse.content锛�", + content = {@Content(mediaType = MediaType.APPLICATION_JSON_VALUE, + schema = @Schema(implementation = Boolean.class))} + ) + }) + @GetMapping(path = "resetPasswordByDefault", consumes = MediaType.TEXT_PLAIN_VALUE) + @SsoAop() + public BaseResponse<Boolean> resetPasswordByDefault(String id) throws Exception { + if (id == null) { + return BaseResponseUtils.buildFail("id涓嶈兘涓虹┖"); + } + String password = MD5.encrypt(defaultPassword);//杩涜鍔犲瘑鐮� + Long idLg = Long.parseLong(id); + int count; + try { + BaUser po = this.sv.selectById(idLg); + if (Objects.isNull(po)) { + return BaseResponseUtils.buildFail("鏈緱鍒扮敤鎴凤紝璇锋眰澶辫触"); + } else { + count = this.sv.changePassword(idLg, password); + } + } catch (Exception e) { + log.error("淇濆瓨鐢ㄦ埛寮傚父", e); + return BaseResponseUtils.buildException(e.getMessage()); + } + if (count <= 0) { + return BaseResponseUtils.buildFail("鏁版嵁搴撳瓨鍌ㄥけ璐�"); + } else { + return BaseResponseUtils.buildSuccess(true); + } + } + */ + + /* + * 閲嶇疆瀵嗙爜涓洪殢鏈烘暟瀛楀姞瀛楁瘝 + * + * @param id 鐢ㄦ埛ID + * @return 鏄惁鎴愬姛 + + @Operation(summary = "閲嶇疆瀵嗙爜涓洪殢鏈烘暟瀛楀姞瀛楁瘝", description = "鎻愪氦鐢ㄦ埛ID") + @ApiResponses(value = { + @ApiResponse( + responseCode = ResultCodeMsg.RsCode.SUCCESS_CODE, + description = "鎿嶄綔缁撴灉锛歵rue锛氭垚鍔燂紝false锛氬け璐ワ紙BaseResponse.content锛�", + content = {@Content(mediaType = MediaType.APPLICATION_JSON_VALUE, + schema = @Schema(implementation = Boolean.class))} + ) + }) + @GetMapping(path = "resetPasswordByRandom", consumes = MediaType.TEXT_PLAIN_VALUE) + @SsoAop() + public BaseResponse<String> resetPasswordByRandom(String id) throws Exception { + if (id == null) { + return BaseResponseUtils.buildFail("id涓嶈兘涓虹┖"); + } + String randomPassword = this.sv.getStringRandom(6); + String password = MD5.encrypt(randomPassword);//杩涜鍔犲瘑鐮� + Long idLg = Long.parseLong(id); + int count; + try { + BaUser po = this.sv.selectById(idLg); + if (Objects.isNull(po)) { + return BaseResponseUtils.buildFail("鏈緱鍒扮敤鎴凤紝璇锋眰澶辫触"); + } else { + count = this.sv.changePassword(idLg, password); + } + } catch (Exception e) { + log.error("淇濆瓨鐢ㄦ埛寮傚父", e); + return BaseResponseUtils.buildException(e.getMessage()); + } + if (count <= 0) { + return BaseResponseUtils.buildFail("鏁版嵁搴撳瓨鍌ㄥけ璐�"); + } else { + return BaseResponseUtils.buildSuccess(randomPassword); + } + } + */ + + /* + * 2023-12-05 鍦� save鍜寀pdate鏂规硶涓繘琛屼簡瑙掕壊璁剧疆鍏宠仈锛屾湰鏂规硶搴熷純 + * 璁剧疆鐢ㄦ埛瑙掕壊 + * + * @param id 鐢ㄦ埛ID + * @return 鏄惁鎴愬姛 + + @Operation(summary = "璁剧疆鐢ㄦ埛瑙掕壊", description = "鎻愪氦鐢ㄦ埛ID锛屽強鎵�閫夋嫨鐨勮鑹睮D闆嗗悎锛堟暟缁勶級") + @ApiResponses(value = { + @ApiResponse( + responseCode = ResultCodeMsg.RsCode.SUCCESS_CODE, + description = "鎿嶄綔缁撴灉锛歵rue锛氭垚鍔燂紝false锛氬け璐ワ紙BaseResponse.content锛�", + content = {@Content(mediaType = MediaType.APPLICATION_JSON_VALUE, + schema = @Schema(implementation = Boolean.class))} + ) + }) + @GetMapping(path = "setRoles", consumes = MediaType.TEXT_PLAIN_VALUE) + @SsoAop() + public BaseResponse<Boolean> setRoles(String id, + @Parameter(description = "瑙掕壊id鏁扮粍") String[] roleIds) { + Long[] roleId_lg = null; + if (roleIds != null && roleIds.length > 0) { + roleId_lg = new Long[roleIds.length]; + int index = 0; + for (String roleId : roleIds) { + roleId_lg[index++] = Long.parseLong(roleId); + } + } + try { + this.sv.setRoles(Long.parseLong(id), roleId_lg); + } catch (Exception e) { + log.error("淇濆瓨鐢ㄦ埛寮傚父", e); + return BaseResponseUtils.buildException(e.getMessage()); + } + return BaseResponseUtils.buildSuccess(true); + } + */ + + /** + * 鍒犻櫎鐢ㄦ埛 + * + * @param id 鐢ㄦ埛ID + * @return 鏄惁鎴愬姛 + */ + @Operation(summary = "鍒犻櫎鐢ㄦ埛", description = "鎻愪氦鐢ㄦ埛ID锛岃繘琛岄�昏緫鍒犻櫎") + @ApiResponses(value = { + @ApiResponse( + responseCode = ResultCodeMsg.RsCode.SUCCESS_CODE, + description = "鎿嶄綔缁撴灉锛歵rue锛氭垚鍔燂紝false锛氬け璐ワ紙BaseResponse.content锛�", + content = {@Content(mediaType = MediaType.APPLICATION_JSON_VALUE, + schema = @Schema(implementation = Boolean.class))} + ) + }) + //@GetMapping(path = "delete", consumes = MediaType.TEXT_PLAIN_VALUE) + @GetMapping(path = "delete") + @SsoAop() + public BaseResponse<Boolean> delete(String id) { + if (id == null) { + return BaseResponseUtils.buildFail("id涓嶈兘涓虹┖"); + } + int count; + try { + count = this.sv.delete(Long.parseLong(id)); + } catch (Exception e) { + log.error("淇濆瓨鐢ㄦ埛寮傚父", e); + return BaseResponseUtils.buildException(e.getMessage()); + } + if (count <= 0) { + return BaseResponseUtils.buildFail("鏁版嵁搴撳瓨鍌ㄥけ璐�"); + } else { + return BaseResponseUtils.buildSuccess(true); + } + } + + /** + * 鏍规嵁鐢ㄦ埛缂栧彿鑾峰彇鐢ㄦ埛淇℃伅 + * @param userId 鐢ㄦ埛缂栧彿 + * @return 鐢ㄦ埛淇℃伅鍒楄〃 + */ + @Operation(summary = "鑾峰緱鍏ㄩ儴鐢ㄦ埛淇℃伅", description = "杩斿洖鍏ㄩ儴鐢ㄦ埛淇℃伅鏁版嵁") + @ApiResponses(value = { + @ApiResponse( + responseCode = ResultCodeMsg.RsCode.SUCCESS_CODE, + description = "杩斿洖鍏ㄩ儴鐢ㄦ埛鏁版嵁锛圔aseResponse.content:QueryResultVo[{}]锛�", + content = {@Content(mediaType = MediaType.APPLICATION_JSON_VALUE, + schema = @Schema(implementation = BaUser.class))} + ) + }) + @GetMapping("/getUserInfos/{userId}") + @SsoAop() + public BaseResponse<QueryResultVo<VoUserInfo>> getUserInfos(@PathVariable("userId") Long userId) { + try { + VoUserInfo res = this.sv.getUserInfos(userId); + System.out.println(" :" + res); + return BaseResponseUtils.buildSuccess(res); + } catch (Exception e) { + log.error("鏌ヨ鐢ㄦ埛淇℃伅寮傚父", e); + return BaseResponseUtils.buildException(e.getMessage()); + } + } } -- Gitblit v1.8.0