From 8589216a7715a78f795a18c35160ea8d4a1b6579 Mon Sep 17 00:00:00 2001 From: shahaibo <1023316923@qq.com> Date: Tue, 4 Feb 2025 13:53:50 +0800 Subject: [PATCH] =?UTF-8?q?TASK:=E7=BB=91=E5=AE=9A=E9=82=AE=E7=AE=B1;?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ai/da/controller/AccountController.java | 2 +- .../com/ai/da/service/AccountService.java | 2 +- .../da/service/impl/AccountServiceImpl.java | 43 +++++++++++++++---- 3 files changed, 36 insertions(+), 11 deletions(-) diff --git a/src/main/java/com/ai/da/controller/AccountController.java b/src/main/java/com/ai/da/controller/AccountController.java index 5832bc80..a4431794 100644 --- a/src/main/java/com/ai/da/controller/AccountController.java +++ b/src/main/java/com/ai/da/controller/AccountController.java @@ -51,7 +51,7 @@ public class AccountController { @ApiOperation(value = "绑定邮箱") @PostMapping("/bindEmail") - public Response bindEmail(@Valid @RequestBody AccountBindEmailDTO accountBindEmailDTO) { + public Response bindEmail(@Valid @RequestBody AccountBindEmailDTO accountBindEmailDTO) { return Response.success(accountService.bindEmail(accountBindEmailDTO)); } diff --git a/src/main/java/com/ai/da/service/AccountService.java b/src/main/java/com/ai/da/service/AccountService.java index ee4d92c8..e8a2324b 100644 --- a/src/main/java/com/ai/da/service/AccountService.java +++ b/src/main/java/com/ai/da/service/AccountService.java @@ -48,7 +48,7 @@ public interface AccountService extends IService { * @param accountBindEmailDTO * @return */ - Boolean bindEmail(AccountBindEmailDTO accountBindEmailDTO); + BindEmailVO bindEmail(AccountBindEmailDTO accountBindEmailDTO); BindEmailVO bindEmail(String email); diff --git a/src/main/java/com/ai/da/service/impl/AccountServiceImpl.java b/src/main/java/com/ai/da/service/impl/AccountServiceImpl.java index efca739f..b3fc9c35 100644 --- a/src/main/java/com/ai/da/service/impl/AccountServiceImpl.java +++ b/src/main/java/com/ai/da/service/impl/AccountServiceImpl.java @@ -286,16 +286,14 @@ public class AccountServiceImpl extends ServiceImpl impl } @Override - public Boolean bindEmail(AccountBindEmailDTO accountBindEmailDTO) { -// Account account = baseMapper.selectById(accountBindEmailDTO.getUserId()); + public BindEmailVO bindEmail(AccountBindEmailDTO accountBindEmailDTO) { AuthPrincipalVo userHolder = UserContext.getUserHolder(); Account account = accountMapper.selectById(userHolder.getId()); + if (Objects.isNull(account)) { throw new BusinessException("userName.does.not.exist", ResultEnum.PROMPT.getCode()); } -// if (StringUtils.isNotBlank(account.getUserEmail())) { -// throw new BusinessException("user.has.bound.mailbox"); -// } + //校验邮箱验证码 String verifyCode = LocalCacheUtils.getVerifyCodeCache(AuthenticationOperationTypeEnum.BIND_MAILBOX.name() + "_" + accountBindEmailDTO.getUserEmail()); if (StringUtils.isBlank(verifyCode)) { @@ -305,10 +303,37 @@ public class AccountServiceImpl extends ServiceImpl impl throw new BusinessException("verification.code.error", ResultEnum.PROMPT.getCode()); } //绑定 - account.setUserEmail(accountBindEmailDTO.getUserEmail()); - accountMapper.updateById(account); -// updatePwdByUserId(accountBindEmailDTO.getUserEmail(), accountBindEmailDTO.getUserId()); - return Boolean.TRUE; + + BindEmailVO result = new BindEmailVO(); + + QueryWrapper qw = new QueryWrapper<>(); + qw.lambda().eq(Account::getUserEmail, accountBindEmailDTO.getUserEmail()); + List accounts = accountMapper.selectList(qw); + if (CollectionUtil.isNotEmpty(accounts)) { + Account accountOld = accounts.get(0); + + QueryWrapper accountExtendQW = new QueryWrapper<>(); + accountExtendQW.lambda().eq(AccountExtend::getAccountId, userHolder.getId()); + accountExtendQW.lambda().eq(AccountExtend::getAuthType, "Wechat"); + AccountExtend accountExtend = accountExtendMapper.selectOne(accountExtendQW); + accountExtend.setAccountId(accountOld.getId()); + accountExtendMapper.updateById(accountExtend); + + accountMapper.deleteById(userHolder.getId()); + + String token = LocalCacheUtils.getTokenCache(String.valueOf(accountOld.getId())); + if (StringUtils.isNotBlank(token)) { + //用户已登入 + result.setToken(token); + } else { + result.setToken(createAccountToken(accountOld)); + } + return result; + } + Account accountNew = accountMapper.selectById(userHolder.getId()); + accountNew.setUserEmail(accountBindEmailDTO.getUserEmail()); + accountMapper.updateById(accountNew); + return result; } @Transactional(rollbackFor = Exception.class)