diff --git a/pqs-common/common-redis/src/main/java/com/njcn/redis/pojo/enums/RedisKeyEnum.java b/pqs-common/common-redis/src/main/java/com/njcn/redis/pojo/enums/RedisKeyEnum.java index e9a745562..b85111355 100644 --- a/pqs-common/common-redis/src/main/java/com/njcn/redis/pojo/enums/RedisKeyEnum.java +++ b/pqs-common/common-redis/src/main/java/com/njcn/redis/pojo/enums/RedisKeyEnum.java @@ -24,7 +24,15 @@ public enum RedisKeyEnum { /** * 终端信息查询缓存的公共key前缀 */ - DEVICE_INFO_KEY("DEVICE_INFO_PUBLIC:",-1L); + DEVICE_INFO_KEY("DEVICE_INFO_PUBLIC:",-1L), + + /** + * APP角色推荐码 + */ + ROLE_REFERRAL_CODE_KEY("ROLE_REFERRAL_CODE",2L), + ; + + private final String key; diff --git a/pqs-user/user-api/src/main/java/com/njcn/user/enums/MessageEnum.java b/pqs-user/user-api/src/main/java/com/njcn/user/enums/MessageEnum.java index 0e40d0c14..727675ef1 100644 --- a/pqs-user/user-api/src/main/java/com/njcn/user/enums/MessageEnum.java +++ b/pqs-user/user-api/src/main/java/com/njcn/user/enums/MessageEnum.java @@ -10,13 +10,17 @@ public enum MessageEnum { * 阿里云短信模板编号 */ LOGIN(0, "SMS_176180086"), - REGISTER(1, "SMS_176200101"), - RESET_PWD(2, "SMS_176195072"), - FORGET_PWD(3, "SMS_176195072"), + REGISTER(1, "SMS_175995085"), + UPDATE_PASSWORD(2,"SMS_175995084"), + DEFAULT_PASSWORD(3,"SMS_212270827"), UPDATE_PHONE(4, "SMS_175583840"), - JUDGE_OLD_PHONE(5, "SMS_176195072"), - EVENT_MESSAGE_NOTICE(6,"SMS_212270827"), - DEFAULT_PASSWORD(7,"SMS_212270827"), + + RESET_PWD(5, "SMS_176195072"), + FORGET_PWD(6, "SMS_176195072"), + JUDGE_OLD_PHONE(7, "SMS_176195072"), + EVENT_MESSAGE_NOTICE(8,"SMS_212270827"), + + ; private final int code; diff --git a/pqs-user/user-boot/src/main/java/com/njcn/user/controller/RoleController.java b/pqs-user/user-boot/src/main/java/com/njcn/user/controller/RoleController.java index 6109f6aae..5677f284d 100644 --- a/pqs-user/user-boot/src/main/java/com/njcn/user/controller/RoleController.java +++ b/pqs-user/user-boot/src/main/java/com/njcn/user/controller/RoleController.java @@ -140,7 +140,7 @@ public class RoleController extends BaseController { @ApiOperation("根据权限类型查询相关角色") @ApiImplicitParam(name = "id", value = "权限类型索引", required = true) public HttpResult selectRoleDetail(@RequestParam("id") Integer id) { - String methodDescribe = getMethodDescribe("list"); + String methodDescribe = getMethodDescribe("selectRoleDetail"); LogUtil.njcnDebug(log, "{},查询数据为:{}", methodDescribe, id); List result = roleService.selectRoleDetail(id); return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, result, methodDescribe); diff --git a/pqs-user/user-boot/src/main/java/com/njcn/user/controller/app/AppUserController.java b/pqs-user/user-boot/src/main/java/com/njcn/user/controller/app/AppUserController.java index ea72f41ab..792a3b0d0 100644 --- a/pqs-user/user-boot/src/main/java/com/njcn/user/controller/app/AppUserController.java +++ b/pqs-user/user-boot/src/main/java/com/njcn/user/controller/app/AppUserController.java @@ -51,7 +51,7 @@ public class AppUserController extends BaseController { @ApiImplicitParams({ @ApiImplicitParam(name = "phone", value = "手机号", required = true, paramType = "query"), @ApiImplicitParam(name = "devCode", value = "设备码", required = true, paramType = "query"), - @ApiImplicitParam(name = "type", value = "验证码类型(0:登录 1:注册 2:重置密码 3:忘记密码 4:更换手机 5:确认旧手机验证码)", required = true, paramType = "query"), + @ApiImplicitParam(name = "type", value = "验证码类型(0:登录 1:注册 2:修改密码 3:注册初始密码 4:换绑手机)", required = true, paramType = "query"), }) public HttpResult authCode(String phone, String devCode, String type) { String methodDescribe = getMethodDescribe("authCode"); @@ -61,7 +61,6 @@ public class AppUserController extends BaseController { /** * 手机app注册 - * @return */ @OperateInfo(info = LogEnum.SYSTEM_COMMON, operateType = OperateType.ADD) @PostMapping("register") @@ -75,12 +74,11 @@ public class AppUserController extends BaseController { String methodDescribe = getMethodDescribe("register"); LogUtil.njcnDebug(log, "{},手机号:{},验证码:{},设备码:{}", methodDescribe, phone,code,devCode); appUserService.register(phone,code,devCode); - return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, "success", methodDescribe); + return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, null, methodDescribe); } /** * app用户注册完自动登录 - * @return */ @OperateInfo(info = LogEnum.SYSTEM_COMMON, operateType = OperateType.ADD) @PostMapping("autoLogin") @@ -95,26 +93,75 @@ public class AppUserController extends BaseController { return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, object, methodDescribe); } - /** - * 手机app密码设置 + * 手机app已登录修改密码 */ - @PostMapping("setPsd") - @OperateInfo - @ApiOperation(value = "设置密码", notes = "设置密码") + @OperateInfo(info = LogEnum.SYSTEM_COMMON, operateType = OperateType.ADD) + @PostMapping("modifyPsd") + @ApiOperation("修改密码") @ApiImplicitParams({ - @ApiImplicitParam(name = "userId", value = "用户索引", required = true, paramType = "query"), + @ApiImplicitParam(name = "userId", value = "用户ID", required = true, paramType = "query"), + @ApiImplicitParam(name = "phone", value = "手机号", required = true, paramType = "query"), + @ApiImplicitParam(name = "code", value = "验证码", required = true, paramType = "query"), @ApiImplicitParam(name = "password", value = "密码", required = true, paramType = "query"), @ApiImplicitParam(name = "devCode", value = "设备码", required = true, paramType = "query"), }) - public HttpResult setPsd(String userId, String password, String devCode) { - String methodDescribe = getMethodDescribe("setPsd"); - appUserService.setPsd(userId, devCode, password); - return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, "success", methodDescribe); + public HttpResult modifyPsd(String userId,String phone, String code,String password, String devCode) { + String methodDescribe = getMethodDescribe("modifyPsd"); + appUserService.modifyPsd(userId,phone,code,password,devCode); + return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, null, methodDescribe); } + /** + * 手机app忘记密码-重置密码 + */ + @OperateInfo(info = LogEnum.SYSTEM_COMMON, operateType = OperateType.ADD) + @PostMapping("resetPsd") + @ApiOperation("重置密码") + @ApiImplicitParams({ + @ApiImplicitParam(name = "phone", value = "手机号", required = true, paramType = "query"), + @ApiImplicitParam(name = "code", value = "验证码", required = true, paramType = "query"), + @ApiImplicitParam(name = "password", value = "密码", required = true, paramType = "query"), + @ApiImplicitParam(name = "devCode", value = "设备码", required = true, paramType = "query"), + }) + public HttpResult resetPsd(String phone, String code,String password, String devCode) { + String methodDescribe = getMethodDescribe("modifyPsd"); + appUserService.resetPsd(phone,code,password,devCode); + return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, null, methodDescribe); + } + /** + * 手机app确认旧手机验证码 + */ + @OperateInfo(info = LogEnum.SYSTEM_COMMON, operateType = OperateType.ADD) + @PostMapping("confirmCode") + @ApiOperation("确认旧手机验证码") + @ApiImplicitParams({ + @ApiImplicitParam(name = "phone", value = "手机号", required = true, paramType = "query"), + @ApiImplicitParam(name = "code", value = "验证码", required = true, paramType = "query"), + @ApiImplicitParam(name = "devCode", value = "设备码", required = true, paramType = "query"), + }) + public HttpResult confirmCode(String phone,String code,String devCode) { + String methodDescribe = getMethodDescribe("confirmCode"); + appUserService.confirmCode(phone,code,devCode); + return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, null, methodDescribe); + } - - + /** + * app用户手机换绑 + */ + @OperateInfo(info = LogEnum.SYSTEM_COMMON, operateType = OperateType.ADD) + @PostMapping("rebindPhone") + @ApiOperation("换绑新手机号") + @ApiImplicitParams({ + @ApiImplicitParam(name = "userId", value = "用户ID", required = true, paramType = "query"), + @ApiImplicitParam(name = "phoneNew", value = "新号码", required = true, paramType = "query"), + @ApiImplicitParam(name = "code", value = "短信验证码", required = true, paramType = "query"), + @ApiImplicitParam(name = "devCode", value = "设备码", required = true, paramType = "query") + }) + public HttpResult rebindPhone(String userId,String phoneNew,String code,String devCode) { + String methodDescribe = getMethodDescribe("rebindPhone"); + appUserService.rebindPhone(userId,phoneNew,code,devCode); + return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, null, methodDescribe); + } } diff --git a/pqs-user/user-boot/src/main/java/com/njcn/user/service/IAppUserService.java b/pqs-user/user-boot/src/main/java/com/njcn/user/service/IAppUserService.java index 9f77fdcca..fbf440e6d 100644 --- a/pqs-user/user-boot/src/main/java/com/njcn/user/service/IAppUserService.java +++ b/pqs-user/user-boot/src/main/java/com/njcn/user/service/IAppUserService.java @@ -1,7 +1,5 @@ package com.njcn.user.service; -import com.njcn.common.pojo.response.HttpResult; - /** * @author xuyang */ @@ -29,11 +27,23 @@ public interface IAppUserService { Object autoLogin(String phone, String devCode); /** - * 用户设置密码 - * @param userId 用户id - * @param devCode 设备码 - * @param password 密码 + * 手机app已登录修改密码 */ - void setPsd(String userId, String devCode, String password); + void modifyPsd(String userId, String phone, String code, String password, String devCode); + + /** + * app用户忘记密码 + */ + void resetPsd(String phone, String code, String password, String devCode); + + /** + * 旧手机验证码确认 + */ + void confirmCode(String phone, String code, String devCode); + + /** + * 换绑手机号 + */ + void rebindPhone(String userId, String phoneNew, String code, String devCode); } diff --git a/pqs-user/user-boot/src/main/java/com/njcn/user/service/impl/AppRoleServiceImpl.java b/pqs-user/user-boot/src/main/java/com/njcn/user/service/impl/AppRoleServiceImpl.java index 06fc92a72..7029233ce 100644 --- a/pqs-user/user-boot/src/main/java/com/njcn/user/service/impl/AppRoleServiceImpl.java +++ b/pqs-user/user-boot/src/main/java/com/njcn/user/service/impl/AppRoleServiceImpl.java @@ -1,23 +1,22 @@ package com.njcn.user.service.impl; -import com.alibaba.fastjson.JSONObject; -import com.alibaba.fastjson.TypeReference; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.njcn.common.pojo.exception.BusinessException; import com.njcn.common.utils.PubUtils; +import com.njcn.redis.pojo.enums.RedisKeyEnum; import com.njcn.redis.utils.RedisUtil; import com.njcn.user.enums.UserResponseEnum; import com.njcn.user.pojo.po.UserRole; -import com.njcn.user.pojo.vo.app.RoleReferralCodeVO; import com.njcn.user.service.IAppRoleService; -import com.njcn.user.service.IReferralCodeService; import com.njcn.user.service.IRoleService; import com.njcn.user.service.IUserRoleService; -import com.njcn.web.utils.RequestUtil; import lombok.AllArgsConstructor; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; -import java.util.*; +import java.util.LinkedHashMap; +import java.util.Map; +import java.util.Objects; /** * 类的介绍: @@ -37,8 +36,9 @@ public class AppRoleServiceImpl implements IAppRoleService { private final IUserRoleService userRoleService; @Override + @Transactional(rollbackFor = {Exception.class}) public void roleUpdate(String userId, String referralCode, String devCode) { - Object object = redisUtil.getObjectByKey("roleReferralCode"); + Object object = redisUtil.getObjectByKey(RedisKeyEnum.ROLE_REFERRAL_CODE_KEY.getKey()); if (Objects.isNull(object)){ throw new BusinessException(UserResponseEnum.REFERRAL_CODE_LAPSE); } @@ -59,7 +59,7 @@ public class AppRoleServiceImpl implements IAppRoleService { roleMap.put(entry.getKey(),entry.getValue()); } } - redisUtil.saveByKeyWithExpire("roleReferralCode",roleMap,120L); + redisUtil.saveByKey(RedisKeyEnum.ROLE_REFERRAL_CODE_KEY.getKey(),roleMap); } } diff --git a/pqs-user/user-boot/src/main/java/com/njcn/user/service/impl/AppUserServiceImpl.java b/pqs-user/user-boot/src/main/java/com/njcn/user/service/impl/AppUserServiceImpl.java index c5da5f569..a1e877684 100644 --- a/pqs-user/user-boot/src/main/java/com/njcn/user/service/impl/AppUserServiceImpl.java +++ b/pqs-user/user-boot/src/main/java/com/njcn/user/service/impl/AppUserServiceImpl.java @@ -214,38 +214,79 @@ public class AppUserServiceImpl extends ServiceImpl impleme return object; } - @Override - public void setPsd(String userId, String devCode, String password) { - //参数校验 - if (StringUtils.isBlank(userId)) { - throw new BusinessException(UserResponseEnum.LOGIN_USER_INDEX_INVALID); - } - if (StringUtils.isBlank(userId)) { - throw new BusinessException(UserResponseEnum.PASSWORD_INVALID); + public void modifyPsd(String userId, String phone, String code, String password, String devCode) { + if (!PubUtils.match(PatternRegex.PHONE_REGEX, phone)){ + throw new BusinessException(UserResponseEnum.REGISTER_PHONE_WRONG); } if (StringUtils.isBlank(devCode)) { throw new BusinessException(UserResponseEnum.DEV_CODE_WRONG); } - try { - //查看是否存在该用户 - User user = this.lambdaQuery().eq(User::getId,userId).one(); - if (Objects.isNull(user)){ - throw new BusinessException(UserResponseEnum.LOGIN_USERNAME_NOT_FOUND); - } else { - user.setPassword(password); - user.setDevCode(devCode); - logger.info("更新手机id:" + devCode); - this.updateById(user); - } - } catch (Exception e) { - logger.error("app用户设置密码异常:" + e.toString()); - if (e.getMessage().length() < 10) { - throw new BusinessException(UserResponseEnum.getCodeByMsg(e.getMessage())); - } else { - throw new BusinessException(UserResponseEnum.PASSWORD_SET_ERROR); - } + judgeCode(phone, code); + //判断用户是否存在 + User user = this.lambdaQuery().eq(User::getId,userId).one(); + if (Objects.isNull(user)){ + throw new BusinessException(UserResponseEnum.LOGIN_USERNAME_NOT_FOUND); } + String secretPassword = userSetService.updatePassword(userId, password); + user.setPassword(secretPassword); + user.setPwdValidity(LocalDateTime.now()); + user.setLoginTime(LocalDateTime.now()); + user.setDevCode(devCode); + this.updateById(user); + } + + @Override + public void resetPsd(String phone, String code, String password, String devCode) { + if (!PubUtils.match(PatternRegex.PHONE_REGEX, phone)){ + throw new BusinessException(UserResponseEnum.REGISTER_PHONE_WRONG); + } + if (StringUtils.isBlank(devCode)) { + throw new BusinessException(UserResponseEnum.DEV_CODE_WRONG); + } + judgeCode(phone, code); + //判断用户是否存在 + User user = this.lambdaQuery().eq(User::getPhone,phone).one(); + if (Objects.isNull(user)){ + throw new BusinessException(UserResponseEnum.LOGIN_USERNAME_NOT_FOUND); + } + String secretPassword = userSetService.updatePassword(user.getId(), password); + user.setPassword(secretPassword); + user.setPwdValidity(LocalDateTime.now()); + user.setLoginTime(LocalDateTime.now()); + user.setDevCode(devCode); + this.updateById(user); + } + + @Override + public void confirmCode(String phone, String code, String devCode) { + if (!PubUtils.match(PatternRegex.PHONE_REGEX, phone)){ + throw new BusinessException(UserResponseEnum.REGISTER_PHONE_WRONG); + } + if (StringUtils.isBlank(devCode)) { + throw new BusinessException(UserResponseEnum.DEV_CODE_WRONG); + } + judgeCode(phone, code); + } + + @Override + public void rebindPhone(String userId, String phoneNew, String code, String devCode) { + if (!PubUtils.match(PatternRegex.PHONE_REGEX, phoneNew)){ + throw new BusinessException(UserResponseEnum.REGISTER_PHONE_WRONG); + } + if (StringUtils.isBlank(devCode)) { + throw new BusinessException(UserResponseEnum.DEV_CODE_WRONG); + } + judgeCode(phoneNew, code); + User user = this.lambdaQuery().eq(User::getPhone,phoneNew).one(); + if (!Objects.isNull(user)){ + throw new BusinessException(UserResponseEnum.REGISTER_PHONE_REPEAT); + } + user.setName(phoneNew); + user.setLoginName(phoneNew); + user.setPhone(phoneNew); + user.setDevCode(devCode); + this.updateById(user); } diff --git a/pqs-user/user-boot/src/main/java/com/njcn/user/service/impl/ReferralCodeServiceImpl.java b/pqs-user/user-boot/src/main/java/com/njcn/user/service/impl/ReferralCodeServiceImpl.java index 126b9d3b4..644329d2d 100644 --- a/pqs-user/user-boot/src/main/java/com/njcn/user/service/impl/ReferralCodeServiceImpl.java +++ b/pqs-user/user-boot/src/main/java/com/njcn/user/service/impl/ReferralCodeServiceImpl.java @@ -1,7 +1,9 @@ package com.njcn.user.service.impl; import com.njcn.common.utils.PubUtils; +import com.njcn.redis.pojo.enums.RedisKeyEnum; import com.njcn.redis.utils.RedisUtil; +import com.njcn.user.enums.AppRoleEnum; import com.njcn.user.pojo.vo.app.RoleReferralCodeVO; import com.njcn.user.service.IReferralCodeService; import com.njcn.user.service.IRoleService; @@ -30,28 +32,11 @@ public class ReferralCodeServiceImpl implements IReferralCodeService { @Override public List findReferralCode() { List list = new ArrayList<>(); - Object object = redisUtil.getObjectByKey("roleReferralCode"); + Object object = redisUtil.getObjectByKey(RedisKeyEnum.ROLE_REFERRAL_CODE_KEY.getKey()); if (Objects.isNull(object)){ - LinkedHashMap roleMap = new LinkedHashMap<>(); - String code1 = PubUtils.getCode(6); - String code2 = PubUtils.getCode(6); - String code3 = PubUtils.getCode(6); - roleMap.put(code1,"market_user"); - roleMap.put(code2,"engineering_user"); - roleMap.put(code3,"app_user"); - redisUtil.saveByKeyWithExpire("roleReferralCode",roleMap,120L); - RoleReferralCodeVO vo1 = new RoleReferralCodeVO(); - vo1.setRoleName(roleService.getRoleByCode("market_user").getName()); - vo1.setRoleReferralCode(code1); - RoleReferralCodeVO vo2 = new RoleReferralCodeVO(); - vo2.setRoleName(roleService.getRoleByCode("engineering_user").getName()); - vo2.setRoleReferralCode(code2); - RoleReferralCodeVO vo3 = new RoleReferralCodeVO(); - vo3.setRoleName(roleService.getRoleByCode("app_user").getName()); - vo3.setRoleReferralCode(code3); - list = Arrays.asList(vo1,vo2,vo3); + list = refreshReferralCode(); } else { - LinkedHashMap map = (LinkedHashMap) redisUtil.getObjectByKey("roleReferralCode"); + LinkedHashMap map = (LinkedHashMap) redisUtil.getObjectByKey(RedisKeyEnum.ROLE_REFERRAL_CODE_KEY.getKey()); for (Map.Entry entry : map.entrySet()) { RoleReferralCodeVO vo = new RoleReferralCodeVO(); vo.setRoleReferralCode(entry.getKey()); @@ -68,20 +53,19 @@ public class ReferralCodeServiceImpl implements IReferralCodeService { String code1 = PubUtils.getCode(6); String code2 = PubUtils.getCode(6); String code3 = PubUtils.getCode(6); - roleMap.put(code1,"market_user"); - roleMap.put(code2,"engineering_user"); - roleMap.put(code3,"app_user"); - redisUtil.saveByKeyWithExpire("roleReferralCode",roleMap,120L); + roleMap.put(code1,AppRoleEnum.MARKET_USER.getCode()); + roleMap.put(code2,AppRoleEnum.ENGINEERING_USER.getCode()); + roleMap.put(code3,AppRoleEnum.APP_VIP_USER.getCode()); + redisUtil.saveByKey(RedisKeyEnum.ROLE_REFERRAL_CODE_KEY.getKey(),roleMap); RoleReferralCodeVO vo1 = new RoleReferralCodeVO(); - vo1.setRoleName(roleService.getRoleByCode("market_user").getName()); + vo1.setRoleName(roleService.getRoleByCode(AppRoleEnum.MARKET_USER.getCode()).getName()); vo1.setRoleReferralCode(code1); RoleReferralCodeVO vo2 = new RoleReferralCodeVO(); - vo2.setRoleName(roleService.getRoleByCode("engineering_user").getName()); + vo2.setRoleName(roleService.getRoleByCode(AppRoleEnum.ENGINEERING_USER.getCode()).getName()); vo2.setRoleReferralCode(code2); RoleReferralCodeVO vo3 = new RoleReferralCodeVO(); - vo3.setRoleName(roleService.getRoleByCode("app_user").getName()); + vo3.setRoleName(roleService.getRoleByCode(AppRoleEnum.APP_VIP_USER.getCode()).getName()); vo3.setRoleReferralCode(code3); - return Arrays.asList(vo1,vo2,vo3); }