1.删除多余文件
2.部分代码微调
This commit is contained in:
@@ -1,30 +1,29 @@
|
||||
package com.njcn.user.controller.app;
|
||||
|
||||
import com.njcn.common.pojo.annotation.OperateInfo;
|
||||
import com.njcn.common.pojo.constant.PatternRegex;
|
||||
import com.njcn.common.pojo.constant.OperateType;
|
||||
import com.njcn.common.pojo.enums.common.LogEnum;
|
||||
import com.njcn.common.pojo.enums.response.CommonResponseEnum;
|
||||
import com.njcn.common.pojo.exception.BusinessException;
|
||||
import com.njcn.common.pojo.response.HttpResult;
|
||||
import com.njcn.common.utils.HttpResultUtil;
|
||||
import com.njcn.common.utils.PubUtils;
|
||||
import com.njcn.user.enums.UserResponseEnum;
|
||||
import com.njcn.common.utils.LogUtil;
|
||||
import com.njcn.user.pojo.param.UserParam;
|
||||
import com.njcn.user.pojo.vo.app.AppUserResultVO;
|
||||
import com.njcn.user.service.IAppUserService;
|
||||
import com.njcn.web.controller.BaseController;
|
||||
import com.njcn.web.utils.app.AESUtil;
|
||||
import com.njcn.web.utils.app.XssFilterUtil;
|
||||
import com.njcn.web.utils.RequestUtil;
|
||||
import io.swagger.annotations.Api;
|
||||
import io.swagger.annotations.ApiImplicitParam;
|
||||
import io.swagger.annotations.ApiImplicitParams;
|
||||
import io.swagger.annotations.ApiOperation;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.bouncycastle.asn1.ocsp.ResponseData;
|
||||
import org.apache.ibatis.annotations.Param;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
import org.springframework.web.bind.annotation.PostMapping;
|
||||
import org.springframework.web.bind.annotation.RequestBody;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
|
||||
@@ -58,7 +57,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 = "验证码类型", required = true, paramType = "query"),
|
||||
@ApiImplicitParam(name = "type", value = "验证码类型(0:登录 1:注册 2:重置密码 3:忘记密码 4:更换手机 5:确认旧手机验证码)", required = true, paramType = "query"),
|
||||
})
|
||||
public HttpResult<String> authCode(String phone, String devCode, String type) {
|
||||
String methodDescribe = getMethodDescribe("authCode");
|
||||
@@ -69,20 +68,22 @@ public class AppUserController extends BaseController {
|
||||
/**
|
||||
* 手机app注册
|
||||
*/
|
||||
@OperateInfo(info = LogEnum.SYSTEM_COMMON, operateType = OperateType.ADD)
|
||||
@PostMapping("register")
|
||||
@OperateInfo
|
||||
@ApiOperation(value = "注册入口", notes = "用户注册")
|
||||
@ApiOperation("App用户注册")
|
||||
@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<AppUserResultVO> register(String phone, String code, String devCode) {
|
||||
public HttpResult<AppUserResultVO> register(@Param("phone") String phone, @Param("code") String code, @Param("devCode") String devCode) {
|
||||
String methodDescribe = getMethodDescribe("register");
|
||||
LogUtil.njcnDebug(log, "{},手机号:{},验证码:{},设备码:{}", methodDescribe, phone,code,devCode);
|
||||
AppUserResultVO appUserResultVo = appUserService.register(phone,code,devCode);
|
||||
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, appUserResultVo, methodDescribe);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 手机app密码设置
|
||||
*/
|
||||
@@ -100,40 +101,6 @@ public class AppUserController extends BaseController {
|
||||
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, "success", methodDescribe);
|
||||
}
|
||||
|
||||
/**
|
||||
* 手机app登录入口
|
||||
*/
|
||||
@PostMapping("login")
|
||||
@OperateInfo
|
||||
@ApiOperation(value = "登录入口", notes = "APP登录")
|
||||
@ApiImplicitParams({
|
||||
@ApiImplicitParam(name = "phone", value = "手机号", required = true, paramType = "query"),
|
||||
@ApiImplicitParam(name = "type", value = "登录类型", required = true, paramType = "query"),
|
||||
@ApiImplicitParam(name = "key", value = "验证码/密码", required = true, paramType = "query"),
|
||||
@ApiImplicitParam(name = "devCode", value = "设备码", required = true, paramType = "query"),
|
||||
})
|
||||
public HttpResult<AppUserResultVO> login(String phone, String type, String key, String devCode, HttpServletRequest request) {
|
||||
String methodDescribe = getMethodDescribe("login");
|
||||
AppUserResultVO appUserResultVo = appUserService.login(phone,type,key,devCode);
|
||||
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, appUserResultVo, methodDescribe);
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
package com.njcn.user.mapper;
|
||||
|
||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
import com.njcn.user.pojo.po.app.AppUser;
|
||||
import com.njcn.user.pojo.po.User;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
@@ -11,6 +11,6 @@ import com.njcn.user.pojo.po.app.AppUser;
|
||||
* @author xuyang
|
||||
* @since 2023-06-07
|
||||
*/
|
||||
public interface AppUserMapper extends BaseMapper<AppUser> {
|
||||
public interface AppUserMapper extends BaseMapper<User> {
|
||||
|
||||
}
|
||||
|
||||
@@ -31,13 +31,4 @@ public interface IAppUserService {
|
||||
*/
|
||||
void setPsd(String userId, String devCode, String password);
|
||||
|
||||
/**
|
||||
* 用户设置密码
|
||||
* @param phone 手机号
|
||||
* @param type 登陆类型
|
||||
* @param key 验证码/密码
|
||||
* @param devCode 设备码
|
||||
*/
|
||||
AppUserResultVO login(String phone, String type, String key, String devCode);
|
||||
|
||||
}
|
||||
|
||||
@@ -9,24 +9,25 @@ import com.aliyuncs.profile.DefaultProfile;
|
||||
import com.aliyuncs.profile.IClientProfile;
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import com.njcn.common.pojo.constant.PatternRegex;
|
||||
import com.njcn.common.pojo.enums.response.CommonResponseEnum;
|
||||
import com.njcn.common.pojo.exception.BusinessException;
|
||||
import com.njcn.common.utils.HttpResultUtil;
|
||||
import com.njcn.common.utils.PubUtils;
|
||||
import com.njcn.common.utils.sm.Sm4Utils;
|
||||
import com.njcn.redis.pojo.enums.RedisKeyEnum;
|
||||
import com.njcn.redis.utils.RedisUtil;
|
||||
import com.njcn.user.enums.AppRoleEnum;
|
||||
import com.njcn.user.enums.MessageEnum;
|
||||
import com.njcn.user.enums.UserLevelEnum;
|
||||
import com.njcn.user.enums.UserResponseEnum;
|
||||
import com.njcn.user.mapper.AppUserMapper;
|
||||
import com.njcn.user.pojo.constant.UserState;
|
||||
import com.njcn.user.pojo.constant.UserType;
|
||||
import com.njcn.user.pojo.param.UserParam;
|
||||
import com.njcn.user.pojo.po.Role;
|
||||
import com.njcn.user.pojo.po.User;
|
||||
import com.njcn.user.pojo.po.UserSet;
|
||||
import com.njcn.user.pojo.po.app.AppInfoSet;
|
||||
import com.njcn.user.pojo.po.app.AppSendMsg;
|
||||
import com.njcn.user.pojo.po.app.AppUser;
|
||||
import com.njcn.user.pojo.vo.app.AppUserResultVO;
|
||||
import com.njcn.user.service.IAppInfoSetService;
|
||||
import com.njcn.user.service.IAppSendMsgService;
|
||||
import com.njcn.user.service.IAppUserService;
|
||||
import com.njcn.web.utils.app.AESUtil;
|
||||
import com.njcn.web.utils.app.XssFilterUtil;
|
||||
import com.njcn.user.service.*;
|
||||
import lombok.AllArgsConstructor;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.slf4j.Logger;
|
||||
@@ -35,6 +36,7 @@ import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
import java.time.LocalDateTime;
|
||||
import java.util.Collections;
|
||||
import java.util.Objects;
|
||||
import java.util.Random;
|
||||
|
||||
@@ -47,7 +49,7 @@ import java.util.Random;
|
||||
*/
|
||||
@Service
|
||||
@AllArgsConstructor
|
||||
public class AppUserServiceImpl extends ServiceImpl<AppUserMapper, AppUser> implements IAppUserService {
|
||||
public class AppUserServiceImpl extends ServiceImpl<AppUserMapper, User> implements IAppUserService {
|
||||
|
||||
private static final Logger logger = LoggerFactory.getLogger(AppUserServiceImpl.class);
|
||||
|
||||
@@ -57,14 +59,19 @@ public class AppUserServiceImpl extends ServiceImpl<AppUserMapper, AppUser> impl
|
||||
|
||||
private final IAppInfoSetService appInfoSetService;
|
||||
|
||||
private final IUserSetService userSetService;
|
||||
|
||||
private final IRoleService roleService;
|
||||
|
||||
private final IUserRoleService userRoleService;
|
||||
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public void setMessage(String phone, String devCode, String type) {
|
||||
if (!PubUtils.match(PatternRegex.PHONE_REGEX, XssFilterUtil.dealString(phone))){
|
||||
if (!PubUtils.match(PatternRegex.PHONE_REGEX, phone)){
|
||||
throw new BusinessException(UserResponseEnum.REGISTER_PHONE_WRONG);
|
||||
}
|
||||
try {
|
||||
devCode= AESUtil.aesPKCS5PaddingDecrypt(devCode);
|
||||
String msgTemplate;
|
||||
switch (type) {
|
||||
case "0":
|
||||
@@ -90,19 +97,19 @@ public class AppUserServiceImpl extends ServiceImpl<AppUserMapper, AppUser> impl
|
||||
}
|
||||
//type为4,账号替换为新手机号
|
||||
if (!msgTemplate.equalsIgnoreCase(MessageEnum.REGISTER.getTemplateCode())) {
|
||||
AppUser appUser = this.lambdaQuery().eq(AppUser::getPhone,phone).one();
|
||||
User user = this.lambdaQuery().eq(User::getPhone,phone).one();
|
||||
if ("4".equalsIgnoreCase(type)) {
|
||||
//注册,无需判断手机号与设备的匹配
|
||||
if (appUser != null) {
|
||||
if (user != null) {
|
||||
throw new BusinessException(UserResponseEnum.REGISTER_PHONE_FAIL);
|
||||
}
|
||||
} else {
|
||||
if (null == appUser) {
|
||||
if (null == user) {
|
||||
throw new BusinessException(UserResponseEnum.LOGIN_USERNAME_NOT_FOUND);
|
||||
} else {
|
||||
appUser.setDevCode(devCode);
|
||||
user.setDevCode(devCode);
|
||||
logger.info("更新手机id:" + devCode);
|
||||
this.updateById(appUser);
|
||||
this.updateById(user);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -136,10 +143,10 @@ public class AppUserServiceImpl extends ServiceImpl<AppUserMapper, AppUser> impl
|
||||
request.setTemplateParam(code);
|
||||
//请求失败这里会抛ClientException异常
|
||||
SendSmsResponse sendSmsResponse = acsClient.getAcsResponse(request);
|
||||
String key = phone + devCode;
|
||||
String key = RedisKeyEnum.SMS_LOGIN_KEY.getKey() + phone;
|
||||
if (sendSmsResponse.getCode() != null && "OK".equals(sendSmsResponse.getCode())) {
|
||||
//成功发送短信验证码后,保存进redis
|
||||
redisUtil.saveByKeyWithExpire(key, vcode, 300L);
|
||||
redisUtil.saveByKey(key, vcode);
|
||||
} else {
|
||||
throw new BusinessException(UserResponseEnum.SEND_CODE_FAIL);
|
||||
}
|
||||
@@ -160,61 +167,49 @@ public class AppUserServiceImpl extends ServiceImpl<AppUserMapper, AppUser> impl
|
||||
}
|
||||
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
@Transactional(rollbackFor = {Exception.class})
|
||||
public AppUserResultVO register(String phone, String code, String devCode) {
|
||||
AppUserResultVO appUserResultVo = new AppUserResultVO();
|
||||
if (!PubUtils.match(PatternRegex.PHONE_REGEX, XssFilterUtil.dealString(phone))){
|
||||
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 {
|
||||
devCode= AESUtil.aesPKCS5PaddingDecrypt(devCode);
|
||||
judgeCode(phone, code, devCode);
|
||||
//先根据手机号查询是否已被注册
|
||||
AppUser appUser = this.lambdaQuery().eq(AppUser::getPhone,phone).one();
|
||||
if (!Objects.isNull(appUser)){
|
||||
throw new BusinessException(UserResponseEnum.REGISTER_PHONE_REPEAT);
|
||||
} else {
|
||||
appUser = new AppUser();
|
||||
appUser.setPhone(phone);
|
||||
appUser.setLoginErrorTimes(0);
|
||||
appUser.setLoginTime(LocalDateTime.now());
|
||||
appUser.setPsdValidity(appUser.getLoginTime());
|
||||
appUser.setRegisterTime(appUser.getLoginTime());
|
||||
appUser.setUserLevel("5");
|
||||
appUser.setDevCode(devCode);
|
||||
logger.info("插入手机id:" + devCode);
|
||||
appUser.setReferralCode("DUCxda");
|
||||
appUser.setState(1);
|
||||
this.save(appUser);
|
||||
//消息默认配置
|
||||
AppInfoSet appInfoSet = new AppInfoSet();
|
||||
appInfoSet.setUserIndex(appUser.getUserIndex());
|
||||
appInfoSet.setDeviceInfo(1);
|
||||
appInfoSet.setEventInfo(1);
|
||||
appInfoSet.setSystemInfo(1);
|
||||
appInfoSet.setHarmonicInfo(1);
|
||||
appInfoSetService.save(appInfoSet);
|
||||
//配置返回数据
|
||||
appUserResultVo.setUserId(appUser.getUserIndex());
|
||||
appUserResultVo.setRoleName(UserLevelEnum.getMsgByCode(appUser.getUserLevel()));
|
||||
appUserResultVo.setPhone(appUser.getPhone());
|
||||
appUserResultVo.setRoleCode(appUser.getUserLevel());
|
||||
appUserResultVo.setUserName(StringUtils.isEmpty(appUser.getName()) ? null : appUser.getName());
|
||||
}
|
||||
} 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.REGISTER_FAIL);
|
||||
}
|
||||
judgeCode(phone, code, devCode);
|
||||
//先根据手机号查询是否已被注册
|
||||
User user = this.lambdaQuery().eq(User::getPhone,phone).one();
|
||||
if (!Objects.isNull(user)){
|
||||
throw new BusinessException(UserResponseEnum.REGISTER_PHONE_REPEAT);
|
||||
} else {
|
||||
//新增用户配置表
|
||||
UserParam.UserAddParam addUserParam = new UserParam.UserAddParam();
|
||||
UserSet userSet = userSetService.addUserSet(addUserParam);
|
||||
//新增用户表
|
||||
User newUser = cloneUserBoToUser(phone,devCode,userSet);
|
||||
//新增用户角色关系表
|
||||
Role role = roleService.getRoleByCode(AppRoleEnum.TOURIST.getCode());
|
||||
userRoleService.addUserRole(newUser.getId(), Collections.singletonList(role.getId()));
|
||||
//消息默认配置
|
||||
AppInfoSet appInfoSet = new AppInfoSet();
|
||||
appInfoSet.setUserIndex(newUser.getId());
|
||||
appInfoSet.setDeviceInfo(1);
|
||||
appInfoSet.setEventInfo(1);
|
||||
appInfoSet.setSystemInfo(1);
|
||||
appInfoSet.setHarmonicInfo(1);
|
||||
appInfoSetService.save(appInfoSet);
|
||||
//配置返回数据
|
||||
appUserResultVo.setUserId(newUser.getId());
|
||||
appUserResultVo.setRoleName(AppRoleEnum.TOURIST.getMessage());
|
||||
appUserResultVo.setPhone(newUser.getPhone());
|
||||
appUserResultVo.setRoleCode(AppRoleEnum.TOURIST.getCode());
|
||||
appUserResultVo.setUserName(StringUtils.isEmpty(newUser.getName()) ? null : newUser.getName());
|
||||
}
|
||||
return appUserResultVo;
|
||||
}
|
||||
|
||||
|
||||
|
||||
@Override
|
||||
public void setPsd(String userId, String devCode, String password) {
|
||||
//参数校验
|
||||
@@ -228,17 +223,15 @@ public class AppUserServiceImpl extends ServiceImpl<AppUserMapper, AppUser> impl
|
||||
throw new BusinessException(UserResponseEnum.DEV_CODE_WRONG);
|
||||
}
|
||||
try {
|
||||
devCode= AESUtil.aesPKCS5PaddingDecrypt(devCode);
|
||||
//查看是否存在该用户
|
||||
AppUser appUser = this.lambdaQuery().eq(AppUser::getUserIndex,userId).one();
|
||||
if (Objects.isNull(appUser)){
|
||||
User user = this.lambdaQuery().eq(User::getId,userId).one();
|
||||
if (Objects.isNull(user)){
|
||||
throw new BusinessException(UserResponseEnum.LOGIN_USERNAME_NOT_FOUND);
|
||||
} else {
|
||||
String appPwd = AESUtil.aesPKCS5PaddingEncrypt(password);
|
||||
appUser.setPassword(appPwd);
|
||||
appUser.setDevCode(devCode);
|
||||
user.setPassword(password);
|
||||
user.setDevCode(devCode);
|
||||
logger.info("更新手机id:" + devCode);
|
||||
this.updateById(appUser);
|
||||
this.updateById(user);
|
||||
}
|
||||
} catch (Exception e) {
|
||||
logger.error("app用户设置密码异常:" + e.toString());
|
||||
@@ -250,32 +243,6 @@ public class AppUserServiceImpl extends ServiceImpl<AppUserMapper, AppUser> impl
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public AppUserResultVO login(String phone, String type, String key, String devCode) {
|
||||
//参数校验
|
||||
if (!PubUtils.match(PatternRegex.PHONE_REGEX, XssFilterUtil.dealString(phone))){
|
||||
throw new BusinessException(UserResponseEnum.REGISTER_PHONE_WRONG);
|
||||
}
|
||||
if (StringUtils.isBlank(key)) {
|
||||
throw new BusinessException(UserResponseEnum.KEY_WRONG);
|
||||
}
|
||||
if (StringUtils.isBlank(devCode)) {
|
||||
throw new BusinessException(UserResponseEnum.DEV_CODE_WRONG);
|
||||
}
|
||||
AppUserResultVO vo = new AppUserResultVO();
|
||||
try {
|
||||
devCode= AESUtil.aesPKCS5PaddingDecrypt(devCode);
|
||||
|
||||
} 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.LOGIN_ERROR);
|
||||
}
|
||||
}
|
||||
return vo;
|
||||
}
|
||||
|
||||
/**
|
||||
* 自定义获取验证码,固定为字母和数字的组合
|
||||
@@ -302,4 +269,36 @@ public class AppUserServiceImpl extends ServiceImpl<AppUserMapper, AppUser> impl
|
||||
}
|
||||
}
|
||||
|
||||
private User cloneUserBoToUser(String phone, String devCode, UserSet userSet) {
|
||||
User user = new User();
|
||||
//设置用户id
|
||||
user.setId(userSet.getUserId());
|
||||
//对密码做处理 SM4加密(SM4_1密码+工作秘钥)
|
||||
String secretKey = userSet.getSecretKey();
|
||||
Sm4Utils sm4 = new Sm4Utils(secretKey);
|
||||
user.setPassword(sm4.encryptData_ECB(userSet.getStandBy() + secretKey));
|
||||
//填写一些默认值
|
||||
user.setPhone(phone);
|
||||
user.setDevCode(devCode);
|
||||
user.setName(phone);
|
||||
user.setLoginName(phone);
|
||||
user.setType(3);
|
||||
user.setState(UserState.ENABLE);
|
||||
user.setOrigin(UserState.NORMAL_ORIGIN);
|
||||
user.setCasualUser(UserType.OFFICIAL);
|
||||
user.setPwdState(UserState.NEED);
|
||||
user.setRegisterTime(LocalDateTime.now());
|
||||
user.setLoginTime(LocalDateTime.now());
|
||||
user.setPwdValidity(LocalDateTime.now());
|
||||
user.setLoginErrorTimes(UserState.ERROR_PASSWORD_TIMES);
|
||||
user.setReferralCode(PubUtils.randomCode(6));
|
||||
user.setSmsNotice(0);
|
||||
user.setEmailNotice(0);
|
||||
user.setLimitIpStart("0.0.0.0");
|
||||
user.setLimitIpStart("255.255.255.255");
|
||||
user.setLimitTime("0-24");
|
||||
this.save(user);
|
||||
return user;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user