From cf0101150472ae9f99df2df0bbd20c0bd3135d66 Mon Sep 17 00:00:00 2001 From: Chopper Date: Thu, 31 Mar 2022 16:49:12 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B3=A8=E9=94=80=E5=8A=9F=E8=83=BD=E6=8E=A5?= =?UTF-8?q?=E5=8F=A3=E6=8F=90=E4=BE=9B=E5=AE=8C=E5=96=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../passport/MemberBuyerController.java | 29 ++++++++- .../java/cn/lili/common/enums/ResultCode.java | 1 + .../connect/service/ConnectService.java | 7 +++ .../serviceimpl/ConnectServiceImpl.java | 7 +++ .../modules/member/service/MemberService.java | 31 +++++++++- .../member/serviceimpl/MemberServiceImpl.java | 62 +++++++++++++++++++ 6 files changed, 135 insertions(+), 2 deletions(-) diff --git a/buyer-api/src/main/java/cn/lili/controller/passport/MemberBuyerController.java b/buyer-api/src/main/java/cn/lili/controller/passport/MemberBuyerController.java index d3b9929e..02dfc48a 100644 --- a/buyer-api/src/main/java/cn/lili/controller/passport/MemberBuyerController.java +++ b/buyer-api/src/main/java/cn/lili/controller/passport/MemberBuyerController.java @@ -125,7 +125,6 @@ public class MemberBuyerController { @ApiOperation(value = "修改密码") @ApiImplicitParams({ - @ApiImplicitParam(name = "mobile", value = "手机号", required = true, paramType = "query"), @ApiImplicitParam(name = "password", value = "是否保存登录", required = true, paramType = "query") }) @PostMapping("/resetPassword") @@ -152,6 +151,34 @@ public class MemberBuyerController { return ResultUtil.data(memberService.modifyPass(password, newPassword)); } + @ApiOperation(value = "初始设置密码") + @ApiImplicitParams({ + @ApiImplicitParam(name = "newPassword", value = "新密码", required = true, paramType = "query") + }) + @PutMapping("/canInitPassword") + public ResultMessage canInitPassword() { + return ResultUtil.data(memberService.canInitPass()); + } + + @ApiOperation(value = "初始设置密码") + @ApiImplicitParams({ + @ApiImplicitParam(name = "newPassword", value = "新密码", required = true, paramType = "query") + }) + @PutMapping("/initPassword") + public ResultMessage initPassword(@NotNull(message = "密码不能为空") @RequestParam String password) { + memberService.initPass(password); + return ResultUtil.success(); + } + + @ApiOperation(value = "注销账号") + @ApiImplicitParams({ + @ApiImplicitParam(name = "password", value = "密码", required = true, paramType = "query") + }) + @PutMapping("/cancellation") + public ResultMessage cancellation(@NotNull(message = "密码不能为空") @RequestParam String password) { + memberService.cancellation(password); + return ResultUtil.success(); + } @ApiOperation(value = "刷新token") @GetMapping("/refresh/{refreshToken}") diff --git a/framework/src/main/java/cn/lili/common/enums/ResultCode.java b/framework/src/main/java/cn/lili/common/enums/ResultCode.java index 021c2b36..1f352b7d 100644 --- a/framework/src/main/java/cn/lili/common/enums/ResultCode.java +++ b/framework/src/main/java/cn/lili/common/enums/ResultCode.java @@ -40,6 +40,7 @@ public enum ResultCode { FILE_TYPE_NOT_SUPPORT(1010, "不支持上传的文件类型!"), PLATFORM_NOT_SUPPORTED_IM(1006, "平台未开启IM"), STORE_NOT_SUPPORTED_IM(1007, "店铺未开启IM"), + UNINITIALIZED_PASSWORD(1008, "非初始化密码,无法进行初始化设置"), /** * 分类 */ diff --git a/framework/src/main/java/cn/lili/modules/connect/service/ConnectService.java b/framework/src/main/java/cn/lili/modules/connect/service/ConnectService.java index 6df3b143..9aef44aa 100644 --- a/framework/src/main/java/cn/lili/modules/connect/service/ConnectService.java +++ b/framework/src/main/java/cn/lili/modules/connect/service/ConnectService.java @@ -112,4 +112,11 @@ public interface ConnectService extends IService { * @return */ Connect queryConnect(ConnectQueryDTO connectQueryDTO); + + /** + * 根据会员id删除记录 + * + * @param userId 会员id + */ + void deleteByMemberId(String userId); } \ No newline at end of file diff --git a/framework/src/main/java/cn/lili/modules/connect/serviceimpl/ConnectServiceImpl.java b/framework/src/main/java/cn/lili/modules/connect/serviceimpl/ConnectServiceImpl.java index f7a98a6b..1ea33779 100644 --- a/framework/src/main/java/cn/lili/modules/connect/serviceimpl/ConnectServiceImpl.java +++ b/framework/src/main/java/cn/lili/modules/connect/serviceimpl/ConnectServiceImpl.java @@ -245,6 +245,13 @@ public class ConnectServiceImpl extends ServiceImpl impl return this.getOne(queryWrapper); } + @Override + public void deleteByMemberId(String userId) { + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + queryWrapper.eq(Connect::getUserId, userId); + this.remove(queryWrapper); + } + /** * 会员绑定 绑定微信小程序 *

diff --git a/framework/src/main/java/cn/lili/modules/member/service/MemberService.java b/framework/src/main/java/cn/lili/modules/member/service/MemberService.java index d7115916..6824b7cd 100644 --- a/framework/src/main/java/cn/lili/modules/member/service/MemberService.java +++ b/framework/src/main/java/cn/lili/modules/member/service/MemberService.java @@ -25,6 +25,11 @@ import java.util.Map; */ public interface MemberService extends IService { + /** + * 默认密码 + */ + static String DEFAULT_PASSWORD = "111111"; + /** * 获取当前登录的用户信息 * @@ -92,6 +97,29 @@ public interface MemberService extends IService { */ Member modifyPass(String oldPassword, String newPassword); + /** + * 是否可以初始化密码 + * + * @return + */ + boolean canInitPass(); + + /** + * 初始化密码 + * + * @param password 密码 + * @return 操作结果 + */ + void initPass(String password); + + /** + * 注销账号 + * + * @param password 密码 + * @return 操作结果 + */ + void cancellation(String password); + /** * 注册会员 * @@ -209,7 +237,7 @@ public interface MemberService extends IService { /** * 获取指定会员数据 * - * @param columns 指定获取的列 + * @param columns 指定获取的列 * @param memberIds 会员ids * @return 指定会员数据 */ @@ -239,6 +267,7 @@ public interface MemberService extends IService { /** * 获取用户VO + * * @param id 会员id * @return 用户VO */ diff --git a/framework/src/main/java/cn/lili/modules/member/serviceimpl/MemberServiceImpl.java b/framework/src/main/java/cn/lili/modules/member/serviceimpl/MemberServiceImpl.java index 377b44ff..27e04bbe 100644 --- a/framework/src/main/java/cn/lili/modules/member/serviceimpl/MemberServiceImpl.java +++ b/framework/src/main/java/cn/lili/modules/member/serviceimpl/MemberServiceImpl.java @@ -198,6 +198,7 @@ public class MemberServiceImpl extends ServiceImpl impleme Member member = new Member(username, UuidUtils.getUUID(), authUser.getAvatar(), authUser.getNickname(), authUser.getGender() != null ? Convert.toInt(authUser.getGender().getCode()) : 0); registerHandler(member); + member.setPassword(DEFAULT_PASSWORD); //绑定登录方式 loginBindUser(member, authUser.getUuid(), authUser.getSource()); return memberTokenGenerate.createToken(member, false); @@ -283,6 +284,67 @@ public class MemberServiceImpl extends ServiceImpl impleme return member; } + @Override + public boolean canInitPass() { + AuthUser tokenUser = UserContext.getCurrentUser(); + if (tokenUser == null) { + throw new ServiceException(ResultCode.USER_NOT_LOGIN); + } + Member member = this.getById(tokenUser.getId()); + if (member.getPassword().equals(DEFAULT_PASSWORD)) { + return true; + } + return false; + + } + + @Override + public void initPass(String password) { + AuthUser tokenUser = UserContext.getCurrentUser(); + if (tokenUser == null) { + throw new ServiceException(ResultCode.USER_NOT_LOGIN); + } + Member member = this.getById(tokenUser.getId()); + if (member.getPassword().equals(DEFAULT_PASSWORD)) { + //修改会员密码 + LambdaUpdateWrapper lambdaUpdateWrapper = Wrappers.lambdaUpdate(); + lambdaUpdateWrapper.eq(Member::getId, member.getId()); + lambdaUpdateWrapper.set(Member::getPassword, new BCryptPasswordEncoder().encode(password)); + this.update(lambdaUpdateWrapper); + } + throw new ServiceException(ResultCode.UNINITIALIZED_PASSWORD); + + } + + @Override + public void cancellation(String password) { + + AuthUser tokenUser = UserContext.getCurrentUser(); + if (tokenUser == null) { + throw new ServiceException(ResultCode.USER_NOT_LOGIN); + } + Member member = this.getById(tokenUser.getId()); + if (member.getPassword().equals(new BCryptPasswordEncoder().encode(password))) { + //删除联合登录 + connectService.deleteByMemberId(member.getId()); + //混淆用户信息 + this.confusionMember(member); + } + } + + /** + * 混淆之前的会员信息 + * + * @param member + */ + private void confusionMember(Member member) { + member.setUsername(UuidUtils.getUUID()); + member.setMobile(UuidUtils.getUUID() + member.getMobile()); + member.setNickName("用户已注销"); + member.setDisabled(false); + this.updateById(member); + } + @Override public Token register(String userName, String password, String mobilePhone) { //检测会员信息