From 161e27e08b1495c04cd3f35906c1d7dd873f1d60 Mon Sep 17 00:00:00 2001 From: puhanshu <a9236326> Date: 星期一, 17 一月 2022 11:38:20 +0800 Subject: [PATCH] 商业街bug修改 --- springcloud_k8s_panzhihuazhihuishequ/service_user/src/main/java/com/panzhihua/service_user/service/impl/UserServiceImpl.java | 107 ++++++++++++++++++++++++++++++++++++++++++++++++++--- 1 files changed, 101 insertions(+), 6 deletions(-) diff --git a/springcloud_k8s_panzhihuazhihuishequ/service_user/src/main/java/com/panzhihua/service_user/service/impl/UserServiceImpl.java b/springcloud_k8s_panzhihuazhihuishequ/service_user/src/main/java/com/panzhihua/service_user/service/impl/UserServiceImpl.java index 29f7924..7a5d5a4 100644 --- a/springcloud_k8s_panzhihuazhihuishequ/service_user/src/main/java/com/panzhihua/service_user/service/impl/UserServiceImpl.java +++ b/springcloud_k8s_panzhihuazhihuishequ/service_user/src/main/java/com/panzhihua/service_user/service/impl/UserServiceImpl.java @@ -16,7 +16,10 @@ import java.util.stream.Collectors; import javax.annotation.Resource; +import javax.validation.constraints.NotBlank; +import com.alibaba.fastjson.JSONObject; +import com.panzhihua.common.model.dtos.community.microCommercialStreet.BindUserPhoneDTO; import com.panzhihua.common.model.vos.community.microCommercialStreet.McsLoginUserInfoVO; import org.apache.commons.lang.time.DateFormatUtils; import org.apache.commons.lang.time.DateUtils; @@ -139,6 +142,9 @@ @Slf4j @Service public class UserServiceImpl implements UserService { + + private static final String DEFAULT_IMAGE_URL = "https://www.psciio.com//idcard/91313573d071436ab1f934231b31c6e5.jpg"; + @Resource private UserDao userDao; @Resource @@ -2816,13 +2822,23 @@ public R addMcsMerchantUser(McsMerchantDTO mcsMerchantDTO) { SysUserDO sysUserDO; sysUserDO = userDao.selectOne(new QueryWrapper<SysUserDO>().lambda() - .eq(SysUserDO::getAccount, mcsMerchantDTO.getAccount()).eq(SysUserDO::getType, 11)); + .eq(SysUserDO::getPhone, mcsMerchantDTO.getPhone()).eq(SysUserDO::getType, 11)); + String encode = new BCryptPasswordEncoder().encode(mcsMerchantDTO.getPassword()); if (nonNull(sysUserDO)) { - return R.fail("账户已经存在"); + sysUserDO.setAccount(mcsMerchantDTO.getAccount()); + sysUserDO.setStatus(mcsMerchantDTO.getAccountStatus()); + sysUserDO.setPhone(mcsMerchantDTO.getPhone()); + sysUserDO.setPassword(encode); + sysUserDO.setPlaintextPassword(mcsMerchantDTO.getPassword()); + sysUserDO.setImageUrl(mcsMerchantDTO.getLogo()); + sysUserDO.setName(mcsMerchantDTO.getName()); + userDao.updateById(sysUserDO); + McsLoginUserInfoVO loginUserInfoVO = new McsLoginUserInfoVO(); + BeanUtils.copyProperties(sysUserDO, loginUserInfoVO); + return R.ok(loginUserInfoVO); } // sys_user 表 sysUserDO = new SysUserDO(); - String encode = new BCryptPasswordEncoder().encode(mcsMerchantDTO.getPassword()); BeanUtils.copyProperties(mcsMerchantDTO, sysUserDO); sysUserDO.setAccount(mcsMerchantDTO.getAccount()); sysUserDO.setType(11); @@ -2831,6 +2847,7 @@ sysUserDO.setPhone(mcsMerchantDTO.getPhone()); sysUserDO.setPassword(encode); sysUserDO.setPlaintextPassword(mcsMerchantDTO.getPassword()); + sysUserDO.setImageUrl(mcsMerchantDTO.getLogo()); try { userDao.insert(sysUserDO); McsLoginUserInfoVO loginUserInfoVO = new McsLoginUserInfoVO(); @@ -2865,6 +2882,7 @@ String account = mcsMerchantDTO.getAccount(); String phone = mcsMerchantDTO.getPhone(); Integer accountStatus = mcsMerchantDTO.getAccountStatus(); + String name = mcsMerchantDTO.getName(); if (isNotBlank(account)) { sysUserDO.setAccount(account); } @@ -2873,6 +2891,9 @@ } if (nonNull(accountStatus)) { sysUserDO.setStatus(accountStatus); + } + if (isNotBlank(name)) { + sysUserDO.setName(name); } try { userDao.updateById(sysUserDO); @@ -2925,7 +2946,7 @@ } /** - * 发送验证码登录 + * 发送验证码 * @param phone 手机号 * @param clientIP 用户ip * @param prefixKey redis Key 前缀 @@ -2934,13 +2955,13 @@ * @return */ @Override - public R sendMessageCodeForLogin(String phone, String clientIP, String prefixKey, Integer limit, Integer timeout) { + public R sendMessageCode(String phone, String clientIP, String prefixKey, Integer limit, Integer timeout) { ValueOperations<String, String> opsForValue = stringRedisTemplate.opsForValue(); if (isNotBlank(clientIP)) { String redisKey = String.join("::", prefixKey, clientIP); Long increment = opsForValue.increment(redisKey, 1); if (increment > limit) { - return R.fail("请求频繁,请稍后再试"); + return R.fail(String.format("请求过于频繁,请%d分钟后再次尝试!", timeout/60)); } stringRedisTemplate.expire(redisKey, timeout, TimeUnit.SECONDS); } @@ -2958,4 +2979,78 @@ } return R.fail(); } + + /** + * 根据openId获取微商业街用户 + * @param openid + * @return + */ + @Override + public R getMcsUserByOpenId(String openid) { + SysUserDO sysUserDO = userDao.selectOne(new QueryWrapper<SysUserDO>().lambda().eq(SysUserDO::getOpenid, openid).eq(SysUserDO::getType, 11)); + McsLoginUserInfoVO loginUserInfoVO = null; + if (nonNull(sysUserDO) && isNotBlank(sysUserDO.getOpenid())) { + loginUserInfoVO = new McsLoginUserInfoVO(); + BeanUtils.copyProperties(sysUserDO, loginUserInfoVO); + } + return R.ok(loginUserInfoVO); + } + + /** + * 商业街用户微信授权-绑定手机号 + * @param bindUserPhoneDTO + * @return + */ + @Override + public R bindOrAddMcsUser(BindUserPhoneDTO bindUserPhoneDTO) { + String phone = bindUserPhoneDTO.getPhone(); + String openId = bindUserPhoneDTO.getOpenId(); + String redisKey = String.join("::", phone, bindUserPhoneDTO.getCode()); + Boolean hasKey = stringRedisTemplate.hasKey(redisKey); + if (hasKey) { + //通过验证 + SysUserDO sysUserDO = userDao.selectOne(new QueryWrapper<SysUserDO>().lambda().eq(SysUserDO::getPhone, phone).eq(SysUserDO::getType, 11)); + if (nonNull(sysUserDO)) { + //已有用户 + sysUserDO.setOpenid(openId); + int result = userDao.updateById(sysUserDO); + if (result > 0) { + McsLoginUserInfoVO loginUserInfoVO = new McsLoginUserInfoVO(); + BeanUtils.copyProperties(sysUserDO, loginUserInfoVO); + stringRedisTemplate.delete(redisKey); + return R.ok(loginUserInfoVO); + } + return R.fail("绑定失败,请重试"); + } else { + //自动创建用户 + McsMerchantDTO mcsMerchantDTO = new McsMerchantDTO(); + mcsMerchantDTO.setAccount(phone); + mcsMerchantDTO.setPassword("88888888"); + mcsMerchantDTO.setAccountStatus(1); + mcsMerchantDTO.setPhone(phone); + mcsMerchantDTO.setName("用户" + retrieveRandomCode(5)); + mcsMerchantDTO.setImageUrl(DEFAULT_IMAGE_URL); + mcsMerchantDTO.setOpenId(openId); + R addUserResult = addMcsMerchantUser(mcsMerchantDTO); + if (R.isOk(addUserResult)) { + McsLoginUserInfoVO loginUserInfoVO = JSONObject.parseObject(JSONObject.toJSONString(addUserResult.getData()), McsLoginUserInfoVO.class); + loginUserInfoVO.setPlaintextPassword("88888888"); + stringRedisTemplate.delete(redisKey); + return R.ok(loginUserInfoVO); + } + return addUserResult; + } + } else { + return R.fail("验证码错误"); + } + } + + private String retrieveRandomCode(int length) { + Random r = new Random(); + StringBuilder rs = new StringBuilder(); + for (int i = 0; i < length; i++) { + rs.append(r.nextInt(10)); + } + return rs.toString(); + } } -- Gitblit v1.7.1