From 922f0882c659de97731f9d00519f03d8cb07c604 Mon Sep 17 00:00:00 2001 From: liurunyu <lry9898@163.com> Date: 星期四, 07 十二月 2023 21:06:45 +0800 Subject: [PATCH] 实现重置用户密码功能 --- pipIrr-platform/pipIrr-web/pipIrr-web-base/src/main/java/com/dy/pipIrrBase/user/UserCtrl.java | 370 ++++++++++++++++++++++++++++++++++++++++++++++------ 1 files changed, 327 insertions(+), 43 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 e38a597..2c75af8 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,11 +1,17 @@ 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.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; @@ -16,12 +22,10 @@ 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.validation.BindingResult; -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.web.bind.annotation.*; import java.util.List; import java.util.Objects; @@ -29,19 +33,50 @@ @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", consumes = MediaType.TEXT_PLAIN_VALUE) + 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 = "杩斿洖涓�椤电敤鎴锋暟鎹�") @@ -53,20 +88,21 @@ schema = @Schema(implementation = BaUser.class))} ) }) - @PostMapping(path = "some") + @PostMapping(path = "some", consumes = MediaType.APPLICATION_JSON_VALUE) @SsoAop("-1") - public BaseResponse<QueryResultVo<List<BaUser>>> some(QueryVo vo){ + public BaseResponse<QueryResultVo<List<BaUser>>> some(@RequestBody @Parameter(description = "鏌ヨform琛ㄥ崟json鏁版嵁", required = true) @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 = "寰楀埌涓�涓敤鎴锋暟鎹�") @@ -78,14 +114,15 @@ schema = @Schema(implementation = BaUser.class))} ) }) - @GetMapping(path = "one") + @GetMapping(path = "one", consumes = MediaType.TEXT_PLAIN_VALUE) @SsoAop("-1") - public BaseResponse<BaUser> one(@Parameter(description = "瀹炰綋id", required = true) Long id){ - return BaseResponseUtils.buildSuccess(this.sv.selectById(id)); + public BaseResponse<BaUser> one(@Parameter(description = "瀹炰綋id", required = true) String id) { + return BaseResponseUtils.buildSuccess(this.sv.selectById(Long.parseLong(id))); } /** * 淇濆瓨鐢ㄦ埛 + * * @param po 淇濆瓨鐢ㄦ埛form琛ㄥ崟瀵硅薄 * @return 鏄惁鎴愬姛 */ @@ -98,29 +135,44 @@ schema = @Schema(implementation = Boolean.class))} ) }) - @PostMapping(path = "save", consumes = MediaType.MULTIPART_FORM_DATA_VALUE) + @PostMapping(path = "save", consumes = MediaType.APPLICATION_JSON_VALUE) @SsoAop("-1")//@SsoAop(power = "-1") - public BaseResponse<Boolean> save(@Parameter(description = "form琛ㄥ崟鏁版嵁", required = true) @Valid BaUser po, @Parameter(hidden = true) BindingResult bindingResult){ - if(bindingResult != null && bindingResult.hasErrors()){ + public BaseResponse<Boolean> save(@RequestBody @Parameter(description = "form琛ㄥ崟json鏁版嵁", required = true) @Valid BaUser po, @Parameter(hidden = true) BindingResult bindingResult) { + if (bindingResult != null && bindingResult.hasErrors()) { return BaseResponseUtils.buildFail(Objects.requireNonNull(bindingResult.getFieldError()).getDefaultMessage()); } - po.id = null ; + 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()) ; + return BaseResponseUtils.buildException(e.getMessage()); } - if(count <= 0){ - return BaseResponseUtils.buildFail("鏁版嵁搴撳瓨鍌ㄥけ璐�") ; - }else{ - return BaseResponseUtils.buildSuccess(true) ; + if (count <= 0) { + return BaseResponseUtils.buildFail("鏁版嵁搴撳瓨鍌ㄥけ璐�"); + } else { + return BaseResponseUtils.buildSuccess(true); } } /** * 缂栬緫淇敼鐢ㄦ埛 + * * @param po 淇濆瓨鐢ㄦ埛form琛ㄥ崟瀵硅薄 * @return 鏄惁鎴愬姛 */ @@ -133,32 +185,264 @@ schema = @Schema(implementation = Boolean.class))} ) }) - @PostMapping(path = "update", consumes = MediaType.MULTIPART_FORM_DATA_VALUE) + @PostMapping(path = "update", consumes = MediaType.APPLICATION_JSON_VALUE) @SsoAop("-1")//@SsoAop(power = "-1") - public BaseResponse<Boolean> update(@Parameter(description = "form琛ㄥ崟鏁版嵁", required = true) @Valid BaUser po, @Parameter(hidden = true) BindingResult bindingResult){ - if(bindingResult != null && bindingResult.hasErrors()){ + public BaseResponse<Boolean> update(@RequestBody @Parameter(description = "form琛ㄥ崟json鏁版嵁", required = true) @Valid BaUser po, @Parameter(hidden = true) BindingResult bindingResult) { + if (bindingResult != null && bindingResult.hasErrors()) { return BaseResponseUtils.buildFail(Objects.requireNonNull(bindingResult.getFieldError()).getDefaultMessage()); } - if(po.id == null){ - return BaseResponseUtils.buildFail("鏃犳暟鎹疄浣揑D") ; + 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()) ; + return BaseResponseUtils.buildException(e.getMessage()); } - if(count <= 0){ - return BaseResponseUtils.buildFail("鏁版嵁搴撳瓨鍌ㄥけ璐�") ; - }else{ - return BaseResponseUtils.buildSuccess(true) ; + 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) + @SsoAop("-1")//@SsoAop(power = "-1") + public BaseResponse<Boolean> changePassword(@Parameter(description = "瀹炰綋id", required = true) String id, + @Parameter(description = "鏃у瘑鐮�", required = true) String oldPassword, + @Parameter(description = "鏂板瘑鐮�", required = true) 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("-1")//@SsoAop(power = "-1") + public BaseResponse<Boolean> resetPassword(@RequestBody @Parameter(description = "form琛ㄥ崟json鏁版嵁", required = true) 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("-1")//@SsoAop(power = "-1") + public BaseResponse<Boolean> resetPasswordByDefault(@Parameter(description = "瀹炰綋id", required = true) 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("-1")//@SsoAop(power = "-1") + public BaseResponse<String> resetPasswordByRandom(@Parameter(description = "瀹炰綋id", required = true) 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("-1")//@SsoAop(power = "-1") + public BaseResponse<Boolean> setRoles(@Parameter(description = "瀹炰綋id", required = true) 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 鏄惁鎴愬姛 */ @@ -173,21 +457,21 @@ }) @GetMapping(path = "delete", consumes = MediaType.TEXT_PLAIN_VALUE) @SsoAop("-1")//@SsoAop(power = "-1") - public BaseResponse<Boolean> delete(@Parameter(description = "瀹炰綋id", required = true) Long id){ - if(id == null){ - return BaseResponseUtils.buildFail("id涓嶈兘涓虹┖") ; + public BaseResponse<Boolean> delete(@Parameter(description = "瀹炰綋id", required = true) String id) { + if (id == null) { + return BaseResponseUtils.buildFail("id涓嶈兘涓虹┖"); } int count; try { - count = this.sv.delete(id); + count = this.sv.delete(Long.parseLong(id)); } catch (Exception e) { log.error("淇濆瓨鐢ㄦ埛寮傚父", e); - return BaseResponseUtils.buildException(e.getMessage()) ; + return BaseResponseUtils.buildException(e.getMessage()); } - if(count <= 0){ - return BaseResponseUtils.buildFail("鏁版嵁搴撳瓨鍌ㄥけ璐�") ; - }else{ - return BaseResponseUtils.buildSuccess(true) ; + if (count <= 0) { + return BaseResponseUtils.buildFail("鏁版嵁搴撳瓨鍌ㄥけ璐�"); + } else { + return BaseResponseUtils.buildSuccess(true); } } } -- Gitblit v1.8.0