|
@@ -16,6 +16,8 @@ import cn.cslg.permission.domain.ReSetPasswordDTO;
|
|
import cn.cslg.permission.domain.Tenant;
|
|
import cn.cslg.permission.domain.Tenant;
|
|
import cn.cslg.permission.domain.associate.AssoFunctionModule;
|
|
import cn.cslg.permission.domain.associate.AssoFunctionModule;
|
|
import cn.cslg.permission.domain.associate.AssoPersonnelMachine;
|
|
import cn.cslg.permission.domain.associate.AssoPersonnelMachine;
|
|
|
|
+import cn.cslg.permission.exception.ExceptionEnum;
|
|
|
|
+import cn.cslg.permission.exception.XiaoShiException;
|
|
import cn.cslg.permission.mapper.FunctionMapper;
|
|
import cn.cslg.permission.mapper.FunctionMapper;
|
|
import cn.cslg.permission.mapper.PersonnelMapper;
|
|
import cn.cslg.permission.mapper.PersonnelMapper;
|
|
import cn.cslg.permission.mapper.associate.AssoFunctionModuleMapper;
|
|
import cn.cslg.permission.mapper.associate.AssoFunctionModuleMapper;
|
|
@@ -360,15 +362,15 @@ public class LoginService extends ServiceImpl<PersonnelMapper, Personnel> {
|
|
long currentTimeSecond = System.currentTimeMillis() / 1000;
|
|
long currentTimeSecond = System.currentTimeMillis() / 1000;
|
|
final long second = currentTimeSecond - currentTimeMillis;
|
|
final long second = currentTimeSecond - currentTimeMillis;
|
|
if (second > 30) {
|
|
if (second > 30) {
|
|
- return Response.error(ResponseEnum.THE_REQUEST_TIME_OVERTIME);
|
|
|
|
|
|
+ throw new XiaoShiException(ExceptionEnum.THE_REQUEST_TIME_OVERTIME);
|
|
}
|
|
}
|
|
String appSecret = appKey + currentTimeMillis;
|
|
String appSecret = appKey + currentTimeMillis;
|
|
String md5Sign = SecureUtil.md5(appSecret);
|
|
String md5Sign = SecureUtil.md5(appSecret);
|
|
if (Boolean.TRUE.equals(StringUtils.isEmpty(sign)) || !sign.equals(md5Sign)) {
|
|
if (Boolean.TRUE.equals(StringUtils.isEmpty(sign)) || !sign.equals(md5Sign)) {
|
|
- return Response.error(ResponseEnum.THE_SIGN_IS_NOT_SAME);
|
|
|
|
|
|
+ throw new XiaoShiException(ExceptionEnum.THE_SIGN_IS_NOT_SAME);
|
|
}
|
|
}
|
|
if (Boolean.TRUE.equals(StringUtils.isEmpty(machineCode))) {
|
|
if (Boolean.TRUE.equals(StringUtils.isEmpty(machineCode))) {
|
|
- return Response.error(ResponseEnum.THE_MACHINE_CODE_IS_NULL);
|
|
|
|
|
|
+ throw new XiaoShiException(ExceptionEnum.THE_MACHINE_CODE_IS_NULL);
|
|
}
|
|
}
|
|
//用用户名查询人员信息
|
|
//用用户名查询人员信息
|
|
LambdaQueryWrapper<Personnel> queryWrapper = new LambdaQueryWrapper<>();
|
|
LambdaQueryWrapper<Personnel> queryWrapper = new LambdaQueryWrapper<>();
|
|
@@ -378,16 +380,16 @@ public class LoginService extends ServiceImpl<PersonnelMapper, Personnel> {
|
|
final Integer personId = personnel.getId();
|
|
final Integer personId = personnel.getId();
|
|
//如果查不到 报错 用户名不存在
|
|
//如果查不到 报错 用户名不存在
|
|
if (ObjectUtils.isEmpty(personnel)) {
|
|
if (ObjectUtils.isEmpty(personnel)) {
|
|
- return Response.error(ResponseEnum.USERNAME_ERROR);
|
|
|
|
|
|
+ throw new XiaoShiException(ExceptionEnum.THE_PERSONNEL_IS_NOT_EXIST);
|
|
}
|
|
}
|
|
if (personnel.getPersonnelStatus().equals(0)) {
|
|
if (personnel.getPersonnelStatus().equals(0)) {
|
|
- return Response.error(ResponseEnum.THE_PERSONNEL_IS_FORBIDDEN);
|
|
|
|
|
|
+ throw new XiaoShiException(ExceptionEnum.THE_PERSONNEL_IS_FORBIDDEN);
|
|
}
|
|
}
|
|
//校验密码是否正确
|
|
//校验密码是否正确
|
|
boolean isPassword = personnel.getPersonnelPassword().equals(SecureUtil.md5(password));
|
|
boolean isPassword = personnel.getPersonnelPassword().equals(SecureUtil.md5(password));
|
|
if (!isPassword) {
|
|
if (!isPassword) {
|
|
//登录日志记录登录是否成功
|
|
//登录日志记录登录是否成功
|
|
- return Response.error(ResponseEnum.PASSWORD_ERROR);
|
|
|
|
|
|
+ throw new XiaoShiException(ExceptionEnum.LOGIN_PASWORD_MISTAKE);
|
|
}
|
|
}
|
|
//人员信息中私钥或公钥为空则添加进去
|
|
//人员信息中私钥或公钥为空则添加进去
|
|
updatePersonnel(personnel.getPrivateKey(), personnel.getPublicKey(), personnel.getSymmetryKey(), personId);
|
|
updatePersonnel(personnel.getPrivateKey(), personnel.getPublicKey(), personnel.getSymmetryKey(), personId);
|
|
@@ -397,7 +399,7 @@ public class LoginService extends ServiceImpl<PersonnelMapper, Personnel> {
|
|
.eq(AssoPersonnelMachine::getPersonnelId, personId)
|
|
.eq(AssoPersonnelMachine::getPersonnelId, personId)
|
|
.ne(AssoPersonnelMachine::getMachineCode, SecureUtil.md5(machineCode)));
|
|
.ne(AssoPersonnelMachine::getMachineCode, SecureUtil.md5(machineCode)));
|
|
if (machineList.size() > 1) {
|
|
if (machineList.size() > 1) {
|
|
- return Response.error(ResponseEnum.DO_NOT_LOG_IN_TO_MORE_THAN_TWO_NEW_MACHINES_WITH_THE_SAME_ACCOUNT);
|
|
|
|
|
|
+ throw new XiaoShiException(ExceptionEnum.DO_NOT_LOG_IN_TO_MORE_THAN_TWO_NEW_MACHINES_WITH_THE_SAME_ACCOUNT);
|
|
}
|
|
}
|
|
boolean flag = addOrUpdatePersonnelMachine(machineCode, personnel);
|
|
boolean flag = addOrUpdatePersonnelMachine(machineCode, personnel);
|
|
EncryptionLoginVO loginVO = new EncryptionLoginVO();
|
|
EncryptionLoginVO loginVO = new EncryptionLoginVO();
|
|
@@ -556,10 +558,10 @@ public class LoginService extends ServiceImpl<PersonnelMapper, Personnel> {
|
|
public String getPhoneCode(SendCodeDTO vo) {
|
|
public String getPhoneCode(SendCodeDTO vo) {
|
|
String res = "发送验证码失败";
|
|
String res = "发送验证码失败";
|
|
if (Boolean.TRUE.equals(StringUtils.isEmpty(vo.getPhoneNum()))) {
|
|
if (Boolean.TRUE.equals(StringUtils.isEmpty(vo.getPhoneNum()))) {
|
|
- return Response.error(ResponseEnum.THE_PHONE_IS_NOT_EMPTY);
|
|
|
|
|
|
+ throw new XiaoShiException(ExceptionEnum.THE_PHONE_IS_NOT_EMPTY);
|
|
}
|
|
}
|
|
if (!RegexUtil.isPhoneLegal(vo.getPhoneNum())) {
|
|
if (!RegexUtil.isPhoneLegal(vo.getPhoneNum())) {
|
|
- return Response.error(ResponseEnum.THE_PHONE_FORMAT_ERROR);
|
|
|
|
|
|
+ throw new XiaoShiException(ExceptionEnum.THE_PHONE_FORMAT_ERROR);
|
|
}
|
|
}
|
|
if (StringUtils.isNotEmpty(vo.getPhoneNum())) {
|
|
if (StringUtils.isNotEmpty(vo.getPhoneNum())) {
|
|
//生成验证码
|
|
//生成验证码
|
|
@@ -581,7 +583,7 @@ public class LoginService extends ServiceImpl<PersonnelMapper, Personnel> {
|
|
* @return
|
|
* @return
|
|
*/
|
|
*/
|
|
@Transactional(propagation = Propagation.REQUIRED, rollbackFor = Throwable.class)
|
|
@Transactional(propagation = Propagation.REQUIRED, rollbackFor = Throwable.class)
|
|
- public String loginByPhone(PhoneLoginDTO dto) throws Exception {
|
|
|
|
|
|
+ public PhoneLoginVO loginByPhone(PhoneLoginDTO dto) throws Exception {
|
|
String machineCode = dto.getMachineCode();
|
|
String machineCode = dto.getMachineCode();
|
|
final String sign = dto.getSign();
|
|
final String sign = dto.getSign();
|
|
final String appKey = dto.getAppKey();
|
|
final String appKey = dto.getAppKey();
|
|
@@ -589,29 +591,29 @@ public class LoginService extends ServiceImpl<PersonnelMapper, Personnel> {
|
|
long currentTimeSecond = System.currentTimeMillis() / 1000;
|
|
long currentTimeSecond = System.currentTimeMillis() / 1000;
|
|
final long second = currentTimeSecond - currentTimeMillis;
|
|
final long second = currentTimeSecond - currentTimeMillis;
|
|
if (second > 30) {
|
|
if (second > 30) {
|
|
- return Response.error(ResponseEnum.THE_REQUEST_TIME_OVERTIME);
|
|
|
|
|
|
+ throw new XiaoShiException(ExceptionEnum.THE_REQUEST_TIME_OVERTIME);
|
|
}
|
|
}
|
|
String appSecret = appKey + currentTimeMillis;
|
|
String appSecret = appKey + currentTimeMillis;
|
|
String md5Sign = SecureUtil.md5(appSecret);
|
|
String md5Sign = SecureUtil.md5(appSecret);
|
|
if (Boolean.TRUE.equals(StringUtils.isEmpty(sign)) || !sign.equals(md5Sign)) {
|
|
if (Boolean.TRUE.equals(StringUtils.isEmpty(sign)) || !sign.equals(md5Sign)) {
|
|
- return Response.error(ResponseEnum.THE_SIGN_IS_NOT_SAME);
|
|
|
|
|
|
+ throw new XiaoShiException(ExceptionEnum.THE_SIGN_IS_NOT_SAME);
|
|
}
|
|
}
|
|
if (Boolean.TRUE.equals(StringUtils.isEmpty(machineCode))) {
|
|
if (Boolean.TRUE.equals(StringUtils.isEmpty(machineCode))) {
|
|
- return Response.error(ResponseEnum.THE_MACHINE_CODE_IS_NULL);
|
|
|
|
|
|
+ throw new XiaoShiException(ExceptionEnum.THE_MACHINE_CODE_IS_NULL);
|
|
}
|
|
}
|
|
//获取缓存中验证码
|
|
//获取缓存中验证码
|
|
String code = redisUtil.get(LoginCacheKeyUtil.getLoginCaptcha(dto.getPhoneNum()));
|
|
String code = redisUtil.get(LoginCacheKeyUtil.getLoginCaptcha(dto.getPhoneNum()));
|
|
if (Boolean.TRUE.equals(StringUtils.isEmpty(code))) {
|
|
if (Boolean.TRUE.equals(StringUtils.isEmpty(code))) {
|
|
- return Response.error(ResponseEnum.THE_PHONE_CODE_IS_INVALID);
|
|
|
|
|
|
+ throw new XiaoShiException(ExceptionEnum.THE_PHONE_CODE_IS_INVALID);
|
|
}
|
|
}
|
|
|
|
|
|
//校验验证码
|
|
//校验验证码
|
|
if (Boolean.TRUE.equals(StringUtils.isEmpty(dto.getPhoneCode()))) {
|
|
if (Boolean.TRUE.equals(StringUtils.isEmpty(dto.getPhoneCode()))) {
|
|
- return Response.error(ResponseEnum.THE_PHONE_CODE_IS_NOT_NULL);
|
|
|
|
|
|
+ throw new XiaoShiException(ExceptionEnum.THE_PHONE_CODE_IS_NOT_NULL);
|
|
}
|
|
}
|
|
|
|
|
|
if (!org.apache.commons.lang3.StringUtils.equals(code, dto.getPhoneCode())) {
|
|
if (!org.apache.commons.lang3.StringUtils.equals(code, dto.getPhoneCode())) {
|
|
- return Response.error(ResponseEnum.THE_PHONE_CODE_IS_INCONFORMITY);
|
|
|
|
|
|
+ throw new XiaoShiException(ExceptionEnum.THE_PHONE_CODE_IS_INCONFORMITY);
|
|
}
|
|
}
|
|
//校验验证码成功后使其失效
|
|
//校验验证码成功后使其失效
|
|
redisUtil.delete(LoginCacheKeyUtil.getLoginCaptcha(dto.getPhoneNum()));
|
|
redisUtil.delete(LoginCacheKeyUtil.getLoginCaptcha(dto.getPhoneNum()));
|
|
@@ -622,10 +624,10 @@ public class LoginService extends ServiceImpl<PersonnelMapper, Personnel> {
|
|
}
|
|
}
|
|
Personnel person = personnelMapper.selectOne(queryWrapper);
|
|
Personnel person = personnelMapper.selectOne(queryWrapper);
|
|
if (org.apache.commons.lang3.ObjectUtils.isEmpty(person)) {
|
|
if (org.apache.commons.lang3.ObjectUtils.isEmpty(person)) {
|
|
- return Response.error(ResponseEnum.THE_PERSONNEL_IS_NOT_EXIST);
|
|
|
|
|
|
+ throw new XiaoShiException(ExceptionEnum.THE_PERSONNEL_IS_NOT_EXIST);
|
|
}
|
|
}
|
|
if (person.getPersonnelStatus().equals(0)) {
|
|
if (person.getPersonnelStatus().equals(0)) {
|
|
- return Response.error(ResponseEnum.THE_PERSONNEL_IS_FORBIDDEN);
|
|
|
|
|
|
+ throw new XiaoShiException(ExceptionEnum.THE_PERSONNEL_IS_FORBIDDEN);
|
|
}
|
|
}
|
|
//人员信息中私钥或公钥为空则添加进去
|
|
//人员信息中私钥或公钥为空则添加进去
|
|
this.updatePersonnel(person.getPrivateKey(), person.getPublicKey(), person.getSymmetryKey(), person.getId());
|
|
this.updatePersonnel(person.getPrivateKey(), person.getPublicKey(), person.getSymmetryKey(), person.getId());
|
|
@@ -634,7 +636,7 @@ public class LoginService extends ServiceImpl<PersonnelMapper, Personnel> {
|
|
.eq(AssoPersonnelMachine::getPersonnelId, person.getId())
|
|
.eq(AssoPersonnelMachine::getPersonnelId, person.getId())
|
|
.ne(AssoPersonnelMachine::getMachineCode, SecureUtil.md5(machineCode)));
|
|
.ne(AssoPersonnelMachine::getMachineCode, SecureUtil.md5(machineCode)));
|
|
if (machineList.size() > 1) {
|
|
if (machineList.size() > 1) {
|
|
- return Response.error(ResponseEnum.DO_NOT_LOG_IN_TO_MORE_THAN_TWO_NEW_MACHINES_WITH_THE_SAME_ACCOUNT);
|
|
|
|
|
|
+ throw new XiaoShiException(ExceptionEnum.DO_NOT_LOG_IN_TO_MORE_THAN_TWO_NEW_MACHINES_WITH_THE_SAME_ACCOUNT);
|
|
}
|
|
}
|
|
addOrUpdatePersonnelMachine(machineCode, person);
|
|
addOrUpdatePersonnelMachine(machineCode, person);
|
|
PhoneLoginVO loginVO = new PhoneLoginVO();
|
|
PhoneLoginVO loginVO = new PhoneLoginVO();
|
|
@@ -648,6 +650,6 @@ public class LoginService extends ServiceImpl<PersonnelMapper, Personnel> {
|
|
//Sa-token 登录方法 登录后 生成Token 如果集成了Redis的话 会自动存入Redis
|
|
//Sa-token 登录方法 登录后 生成Token 如果集成了Redis的话 会自动存入Redis
|
|
StpUtil.login(person.getId());
|
|
StpUtil.login(person.getId());
|
|
loginVO.setToken(StpUtil.getTokenValue());
|
|
loginVO.setToken(StpUtil.getTokenValue());
|
|
- return Response.success(loginVO);
|
|
|
|
|
|
+ return loginVO;
|
|
}
|
|
}
|
|
}
|
|
}
|