From 74d197cd63834e4d17466fb507429de4f3e318f6 Mon Sep 17 00:00:00 2001 From: khalil Date: Thu, 13 Mar 2025 17:42:17 +0800 Subject: [PATCH] =?UTF-8?q?=E9=82=AE=E7=AE=B1-=E7=BB=91=E5=AE=9A=E9=82=AE?= =?UTF-8?q?=E7=AE=B1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/accompany/core/model/Account.java | 2 +- .../java/com/accompany/core/vo/UserVo.java | 2 +- .../core/service/account/AccountService.java | 10 ++++ .../core/service/user/UsersBaseService.java | 50 ++++++++++++------- .../com/accompany/common/redis/RedisKey.java | 2 +- .../business/service/user/UsersService.java | 22 +++++++- .../controller/user/UsersController.java | 17 ++++++- 7 files changed, 81 insertions(+), 24 deletions(-) diff --git a/accompany-base/accompany-basic/accompany-basic-sdk/src/main/java/com/accompany/core/model/Account.java b/accompany-base/accompany-basic/accompany-basic-sdk/src/main/java/com/accompany/core/model/Account.java index 84fc1af12..6c9e87cf9 100644 --- a/accompany-base/accompany-basic/accompany-basic-sdk/src/main/java/com/accompany/core/model/Account.java +++ b/accompany-base/accompany-basic/accompany-basic-sdk/src/main/java/com/accompany/core/model/Account.java @@ -24,8 +24,8 @@ public class Account { private Long uid; private String phone; - private String phoneAreaCode; + private String email; private Long erbanNo; diff --git a/accompany-base/accompany-basic/accompany-basic-sdk/src/main/java/com/accompany/core/vo/UserVo.java b/accompany-base/accompany-basic/accompany-basic-sdk/src/main/java/com/accompany/core/vo/UserVo.java index 3c9b13faa..c78994dd1 100644 --- a/accompany-base/accompany-basic/accompany-basic-sdk/src/main/java/com/accompany/core/vo/UserVo.java +++ b/accompany-base/accompany-basic/accompany-basic-sdk/src/main/java/com/accompany/core/vo/UserVo.java @@ -27,8 +27,8 @@ public class UserVo { private Date birth; private String phone; - private String phoneAreaCode; + private String email; private Byte star; diff --git a/accompany-base/accompany-basic/accompany-basic-service/src/main/java/com/accompany/core/service/account/AccountService.java b/accompany-base/accompany-basic/accompany-basic-service/src/main/java/com/accompany/core/service/account/AccountService.java index 2c0e1d076..15b528947 100644 --- a/accompany-base/accompany-basic/accompany-basic-service/src/main/java/com/accompany/core/service/account/AccountService.java +++ b/accompany-base/accompany-basic/accompany-basic-service/src/main/java/com/accompany/core/service/account/AccountService.java @@ -79,6 +79,16 @@ public class AccountService extends ServiceImpl { return accountList.get(0); } + public Account getAccountByEmail(String email) { + QueryWrapper wrapper = new QueryWrapper<>(); + wrapper.lambda().eq(Account::getEmail, email); + List accountList = list(wrapper); + if (CollectionUtils.isEmpty(accountList)) { + return null; + } + return accountList.get(0); + } + public Account getAccountByErBanNo(Long erbanNo) { QueryWrapper wrapper = new QueryWrapper<>(); wrapper.lambda().eq(Account::getErbanNo, erbanNo); diff --git a/accompany-base/accompany-basic/accompany-basic-service/src/main/java/com/accompany/core/service/user/UsersBaseService.java b/accompany-base/accompany-basic/accompany-basic-service/src/main/java/com/accompany/core/service/user/UsersBaseService.java index c02a1e6f8..2c869a898 100644 --- a/accompany-base/accompany-basic/accompany-basic-service/src/main/java/com/accompany/core/service/user/UsersBaseService.java +++ b/accompany-base/accompany-basic/accompany-basic-service/src/main/java/com/accompany/core/service/user/UsersBaseService.java @@ -108,17 +108,6 @@ public class UsersBaseService extends BaseService { return Collections.emptyList(); } - public boolean checkWxPubFansOpenidExists(String wxPubFansOpenid) { - UsersExample usersExample = new UsersExample(); - usersExample.createCriteria().andWxPubFansOpenidEqualTo(wxPubFansOpenid); - List usersList = usersMapper.selectByExample(usersExample); - if (CollectionUtils.isEmpty(usersList)) { - return false; - } else { - return true; - } - } - public List getUsersListByUids(List uids) { UsersExample usersExample = new UsersExample(); usersExample.createCriteria().andUidIn(uids); @@ -289,6 +278,33 @@ public class UsersBaseService extends BaseService { saveUserCache(userDb); } + public void boundEmail(Long uid, String email) { + UsersExample usersExample = new UsersExample(); + usersExample.createCriteria().andEmailEqualTo(email); + List dbUserList = usersMapper.selectByExample(usersExample); + if (!CollectionUtils.isEmpty(dbUserList)){ + throw new ServiceException(BusiStatus.THE_PHONE_NUMBER_HAS_BEEN_REGISTERED); + } + + Account dbAcount = accountService.getAccountByEmail(email); + if (null != dbAcount){ + throw new ServiceException(BusiStatus.THE_PHONE_NUMBER_HAS_BEEN_REGISTERED); + } + + Users user = new Users(); + user.setUid(uid); + user.setEmail(email); + usersMapper.updateByPrimaryKeySelective(user); + + Account account = new Account(); + account.setUid(uid); + account.setEmail(email); + accountService.updateById(account); + + Users userDb = usersMapper.selectByPrimaryKey(user.getUid()); + saveUserCache(userDb); + } + private void saveUserCache(Users users) { if (users == null) { return; @@ -310,6 +326,11 @@ public class UsersBaseService extends BaseService { } } + public boolean checkEmailExists(String email) { + Account account = accountService.getAccountByEmail(email); + return account != null; + } + /** * 更新用户资料 平台号、手机号码、性别不能修改。必须通过单独的接口修改 * @@ -487,11 +508,4 @@ public class UsersBaseService extends BaseService { deleteUserRelateCache(uid.toString()); } - public String getTicketCacheByUid(Long uid) { - String ticketStr = jedisService.hget(RedisKey.uid_ticket.getKey(), uid.toString()); - if (!org.apache.commons.lang3.StringUtils.isEmpty(ticketStr)) { - return ticketStr; - } - return null; - } } diff --git a/accompany-base/accompany-core/src/main/java/com/accompany/common/redis/RedisKey.java b/accompany-base/accompany-core/src/main/java/com/accompany/common/redis/RedisKey.java index 407b0e790..4ae306306 100644 --- a/accompany-base/accompany-core/src/main/java/com/accompany/common/redis/RedisKey.java +++ b/accompany-base/accompany-core/src/main/java/com/accompany/common/redis/RedisKey.java @@ -962,7 +962,7 @@ public enum RedisKey { modify_pwd_sign,//String.用于注销校验 blind_phone_sign,//String.用于注销校验 user_frozen_sign,//String,用于注销恢复 - + blind_email_sign,//String.用于注销校验 dynamic_square_top_lock,//广场置顶锁 dynamic_topic_top_lock,//话题置顶锁 diff --git a/accompany-business/accompany-business-service/src/main/java/com/accompany/business/service/user/UsersService.java b/accompany-business/accompany-business-service/src/main/java/com/accompany/business/service/user/UsersService.java index 156e1946b..86cfda1dd 100644 --- a/accompany-business/accompany-business-service/src/main/java/com/accompany/business/service/user/UsersService.java +++ b/accompany-business/accompany-business-service/src/main/java/com/accompany/business/service/user/UsersService.java @@ -77,6 +77,7 @@ import com.accompany.core.vo.headwear.UserHeadwearVo; import com.accompany.core.vo.live.LiveUserInfoSkillVo; import com.accompany.core.vo.user.UserNameplateVo; import com.accompany.core.vo.vip.UserVipInfoVO; +import com.accompany.email.service.EmailService; import com.accompany.payment.service.RechargeUserService; import com.accompany.sms.service.SmsService; import com.alibaba.fastjson.JSONObject; @@ -149,6 +150,8 @@ public class UsersService extends BaseService { @Autowired protected SmsService smsService; @Autowired + private EmailService emailService; + @Autowired private SysConfService sysConfService; @Autowired private AccountBlockService accountBlockService; @@ -415,6 +418,7 @@ public class UsersService extends BaseService { userVo.setErbanNo(user.getErbanNo()); userVo.setPhone(StringUtils.maskPhone(user.getPhoneAreaCode(), user.getPhone())); userVo.setPhoneAreaCode(user.getPhoneAreaCode()); + userVo.setEmail(user.getEmail()); userVo.setAvatar(user.getAvatar()); userVo.setBirth(user.getBirth()); userVo.setGender(user.getGender()); @@ -1395,6 +1399,23 @@ public class UsersService extends BaseService { } } + public void boundEmail(Long uid, String email, String code) { + if (usersBaseService.checkEmailExists(email)) { + //todo code + throw new ServiceException(BusiStatus.THE_PHONE_NUMBER_HAS_BEEN_REGISTERED); + } + + if (!emailService.verifyEmailCode(email, code)) { + throw new ServiceException(BusiStatus.SMSCODEERROR); + } + + usersBaseService.boundEmail(uid, email); + + //记录最近30天内绑定手机号 + jedisService.setex(RedisKey.blind_phone_sign.getKey(String.valueOf(uid)), + 30 * 24 * 60 * 60, String.valueOf(new Date().getTime())); + } + /** * 最近一天有登录记录的主播 * @@ -1482,5 +1503,4 @@ public class UsersService extends BaseService { public List listUid(Integer offect, Integer pageSize) { return usersMapper.listUid(offect, pageSize); } - } diff --git a/accompany-business/accompany-business-web/src/main/java/com/accompany/business/controller/user/UsersController.java b/accompany-business/accompany-business-web/src/main/java/com/accompany/business/controller/user/UsersController.java index 94faccd0d..72825705e 100644 --- a/accompany-business/accompany-business-web/src/main/java/com/accompany/business/controller/user/UsersController.java +++ b/accompany-business/accompany-business-web/src/main/java/com/accompany/business/controller/user/UsersController.java @@ -768,9 +768,10 @@ public class UsersController extends BaseController { * @param code * @return */ + @ApiOperation("绑定手机号") @PostMapping(value = "/boundPhone") @Authorization - public BusiResult boundPhone(@RequestParam("phone") String phone, + public BusiResult boundPhone(@RequestParam("phone") String phone, @RequestParam("code") String code, @RequestParam("phoneAreaCode") String phoneAreaCode, HttpServletRequest request) throws Exception { @@ -778,9 +779,21 @@ public class UsersController extends BaseController { if (phoneBlackService.checkIsNeedInterceptWithPhoneAreaCode(phoneAreaCode, phone)) { throw new ServiceException(BusiStatus.PHONE_NUMBER_BE_INTERCEPTED); } - return new BusiResult(usersService.boundPhone(getUid(request), phone, code, phoneAreaCode)); + Boolean success = usersService.boundPhone(getUid(request), phone, code, phoneAreaCode); + return BusiResult.success(success); } + @ApiOperation("绑定邮箱") + @PostMapping(value = "/boundEmail") + @Authorization + public BusiResult boundPhone(String email, + String code, + HttpServletRequest request) { + email = decryptSensitiveInfo(request, email); + Long uid = getUid(request); + usersService.boundEmail(uid, email, code); + return BusiResult.success(); + } @Authorization @PostMapping("/setting/update")