From 022b17044ab6bb284fd6313da91d1d1dfb2d5079 Mon Sep 17 00:00:00 2001
From: kongzy <kongzy>
Date: Mon, 03 Jun 2024 13:20:42 +0800
Subject: [PATCH] update
---
assess-system/src/main/java/com/gkhy/assess/system/service/impl/SysUserServiceImpl.java | 85 ++++++++++++++++++++++++------------------
1 files changed, 49 insertions(+), 36 deletions(-)
diff --git a/assess-system/src/main/java/com/gkhy/assess/system/service/impl/SysUserServiceImpl.java b/assess-system/src/main/java/com/gkhy/assess/system/service/impl/SysUserServiceImpl.java
index 5004259..c0cef63 100644
--- a/assess-system/src/main/java/com/gkhy/assess/system/service/impl/SysUserServiceImpl.java
+++ b/assess-system/src/main/java/com/gkhy/assess/system/service/impl/SysUserServiceImpl.java
@@ -7,6 +7,7 @@
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.gkhy.assess.common.api.CommonPage;
import com.gkhy.assess.common.constant.CacheConstant;
+import com.gkhy.assess.common.domain.CustomerUsernamePasswordToken;
import com.gkhy.assess.common.domain.vo.AccountVO;
import com.gkhy.assess.common.domain.vo.LoginBody;
import com.gkhy.assess.common.enums.AttachTypeEnum;
@@ -70,9 +71,13 @@
@Override
public AccountVO login(LoginBody loginBody) {
+ if(loginBody.getIdentity()==null){
+ throw new ApiException("请选择登录用户身份");
+ }
// 验证码校验
- //validateCaptcha(loginBody.getUsername(), loginBody.getCode(), loginBody.getUuid());
- UsernamePasswordToken usernamePasswordToken = new UsernamePasswordToken(loginBody.getUsername(), Base64.decodeStr(loginBody.getPassword()), false);
+ validateCaptcha(loginBody.getUsername(), loginBody.getCode(), loginBody.getUuid());
+ // UsernamePasswordToken usernamePasswordToken = new UsernamePasswordToken(loginBody.getUsername(), Base64.decodeStr(loginBody.getPassword()), false);
+ CustomerUsernamePasswordToken usernamePasswordToken=new CustomerUsernamePasswordToken(loginBody.getUsername(), Base64.decodeStr(loginBody.getPassword()),loginBody.getIdentity());
Subject subject= SecurityUtils.getSubject();
String msg ;
try {
@@ -87,9 +92,9 @@
accountVO.setAgentName(agency.getName());
accountVO.setAgentId(agency.getId());
}
- String token = JwtTokenUtil.sign(sysUser.getUsername(),sysUser.getPassword());
+ String token = JwtTokenUtil.sign(sysUser.getUsername(),sysUser.getPassword(),loginBody.getIdentity());
accountVO.setToken(token);
- cacheUserToken(sysUser.getUsername(),token);
+ cacheUserToken(sysUser.getUsername(),sysUser.getIdentity(),token);
return accountVO;
}catch (UnknownAccountException | IncorrectCredentialsException uae){
throw new ApiException("用户名/密码错误,请重新输入");
@@ -106,8 +111,9 @@
@Override
public AccountVO appLogin(LoginBody loginBody) {
- // 验证码校验
- UsernamePasswordToken usernamePasswordToken = new UsernamePasswordToken(loginBody.getUsername(), Base64.decodeStr(loginBody.getPassword()), false);
+ // app端只能是专家用户登录
+ loginBody.setIdentity(UserIdentityEnum.EXPERT.getCode());
+ CustomerUsernamePasswordToken usernamePasswordToken = new CustomerUsernamePasswordToken(loginBody.getUsername(), Base64.decodeStr(loginBody.getPassword()), loginBody.getIdentity());
Subject subject= SecurityUtils.getSubject();
String msg ;
try {
@@ -122,10 +128,10 @@
accountVO.setAgentName(agency.getName());
accountVO.setAgentId(agency.getId());
}
- String token = JwtTokenUtil.sign(sysUser.getUsername(),sysUser.getPassword());
+ String token = JwtTokenUtil.sign(sysUser.getUsername(),sysUser.getPassword(),loginBody.getIdentity());
accountVO.setToken(token);
- cacheUserToken(sysUser.getUsername(),token);
- accountVO.setUserFace(userFaceMapper.getFaceByUserId(sysUser.getId()));
+ cacheUserToken(sysUser.getUsername(),sysUser.getIdentity(),token);
+ accountVO.setIdPhoto(sysUser.getIdPhoto());
return accountVO;
}catch (UnknownAccountException | IncorrectCredentialsException uae){
throw new ApiException("用户名/密码错误,请重新输入");
@@ -142,9 +148,8 @@
* 清空旧的登录信息,保证同时只有一个用户再登录,后登录用户会挤掉前一个用户
* @param username
*/
- public void cacheUserToken(String username,String newToken){
-
- String userKey = redisUtils.generateKey(CacheConstant.SYS_USER_TOKEN + ":" + username);
+ public void cacheUserToken(String username,Integer identity,String newToken){
+ String userKey = redisUtils.generateKey(CacheConstant.SYS_USER_TOKEN + ":" + username+"_"+identity);
String oldToken = (String) redisUtils.get(userKey);
if (StringUtils.isNotBlank(oldToken)) {
String oldTokenkey = redisUtils.generateKey(CacheConstant.SYS_USER_TOKEN + ":" + JwtTokenUtil.md5Encode(oldToken));
@@ -159,6 +164,7 @@
redisUtils.set(tokenKey,newToken);
redisUtils.expire(tokenKey,JwtTokenUtil.EXPIRATION*2/1000);
}
+
/**
* 校验验证码
@@ -191,7 +197,8 @@
String jwtToken = request.getHeader(JwtTokenUtil.USER_LOGIN_TOKEN);
if(StringUtils.isNotBlank(jwtToken)){
String username=JwtTokenUtil.getUsername(jwtToken);
- String userKey = redisUtils.generateKey(CacheConstant.SYS_USER_TOKEN + ":" + username);
+ Integer identity=JwtTokenUtil.getIdentity(jwtToken);
+ String userKey = redisUtils.generateKey(CacheConstant.SYS_USER_TOKEN + ":" + username+"_"+identity);
String tokenKey= redisUtils.generateKey(CacheConstant.SYS_USER_TOKEN+":"+JwtTokenUtil.md5Encode(jwtToken));
//删除redis缓存
redisUtils.del(tokenKey);
@@ -238,8 +245,8 @@
}
@Override
- public SysUser getUserByUsername(String username) {
- String key=redisUtils.generateKey(CacheConstant.SYS_USER_NAME+":"+username);
+ public SysUser getUserByUsername(String username,Integer identity) {
+ String key=redisUtils.generateKey(CacheConstant.SYS_USER_NAME + ":" + username+"_"+identity);
SysUser sysUser =null;
if(redisUtils.hasKey(key)){
sysUser= (SysUser) redisUtils.get(key);
@@ -250,19 +257,20 @@
return sysUser;
}
- public void delCacheByUsername(String username){
- String key=redisUtils.generateKey(CacheConstant.SYS_USER_NAME+":"+username);
+ @Override
+ public void delCacheByUsername(String username,Integer identity){
+ String key=redisUtils.generateKey(CacheConstant.SYS_USER_NAME+":"+username+"_"+identity);
redisUtils.del(key);
}
@Override
- public SysUser getUserByUsernamePhone(String username) {
- String key=redisUtils.generateKey(CacheConstant.SYS_USER_NAME+":"+username);
+ public SysUser getUserByUsernamePhone(String username,Integer identity) {
+ String key=redisUtils.generateKey(CacheConstant.SYS_USER_NAME+":"+username+"_"+identity);
SysUser sysUser =null;
if(redisUtils.hasKey(key)){
sysUser= (SysUser) redisUtils.get(key);
}else {
- sysUser = baseMapper.getUserByUsernamePhone(username);
+ sysUser = baseMapper.getUserByUsernamePhone(username,identity);
redisUtils.set(key,sysUser,10*60);
}
return sysUser;
@@ -280,7 +288,7 @@
if(!checkUsernameUnique(new SysUser().setUsername(user.getUsername()))){
throw new ApiException("用户名已存在");
}
- if(!checkPhoneUnique(new SysUser().setUsername(user.getPhone()))){
+ if(!checkPhoneUnique(new SysUser().setUsername(user.getPhone()).setIdentity(UserIdentityEnum.MONITOR.getCode()))){
throw new ApiException("手机号已存在");
}
String originPsword=Base64.decodeStr(user.getPassword());
@@ -303,7 +311,7 @@
if(!checkUsernameUnique(new SysUser().setUsername(user.getUsername()))){
throw new ApiException("用户名已存在");
}
- if(!checkPhoneUnique(new SysUser().setUsername(user.getPhone()))){
+ if(!checkPhoneUnique(new SysUser().setUsername(user.getPhone()).setIdentity(UserIdentityEnum.AGENCY.getCode()))){
throw new ApiException("手机号已存在");
}
String originPsword=Base64.decodeStr(user.getPassword());
@@ -317,15 +325,17 @@
if(!agencyService.checkAgencyNameUnique(new SysAgency().setName(agency.getName()))){
throw new ApiException("机构名称已存在");
}
- agency.setCreateBy(ShiroUtils.getSysUser().getUsername());
+ agency.setCreateBy(ShiroUtils.getSysUser()!=null?ShiroUtils.getSysUser().getUsername():"");
boolean b=agencyService.save(agency);
if(!b){
throw new ApiException("保存机构信息失败");
}
+
+ //创建机构用户
user.setIdentity(UserIdentityEnum.AGENCY.getCode());
user.setAgencyId(agency.getId());
user.setPassword(JwtTokenUtil.encryptPassword(user.getUsername(),originPsword,user.getSalt()));
- user.setCreateBy(ShiroUtils.getSysUser().getUsername());
+ user.setCreateBy(ShiroUtils.getSysUser()!=null?ShiroUtils.getSysUser().getUsername():"");
b=save(user);
if(!b){
throw new ApiException("创建机构用户信息失败");
@@ -342,7 +352,7 @@
if(!checkUsernameUnique(new SysUser().setUsername(user.getUsername()))){
throw new ApiException("用户名已存在");
}
- if(!checkPhoneUnique(new SysUser().setUsername(user.getPhone()))){
+ if(!checkPhoneUnique(new SysUser().setUsername(user.getPhone()).setIdentity(UserIdentityEnum.EXPERT.getCode()))){
throw new ApiException("手机号已存在");
}
String major=user.getMajor();
@@ -424,7 +434,7 @@
agencyService.updateById(agency);
}
}
- delCacheByUsername(user.getUsername());
+ delCacheByUsername(user.getUsername(),user.getIdentity());
user=new SysUser().setId(userId);
user.setUpdateBy(ShiroUtils.getSysUser().getUsername());
user.setDelFlag(DeleteFlagEnum.DELETED.getCode());
@@ -437,10 +447,10 @@
if(!checkUsernameUnique(user)){
throw new ApiException("用户名已存在");
}
- if(!checkPhoneUnique(user)){
+ if(!checkPhoneUnique(user.setIdentity(UserIdentityEnum.MONITOR.getCode()))){
throw new ApiException("手机号已存在");
}
- delCacheByUsername(user.getUsername());
+ delCacheByUsername(user.getUsername(),UserIdentityEnum.MONITOR.getCode());
user.setPassword(null);
user.setUpdateBy(ShiroUtils.getSysUser().getUsername());
boolean b=updateById(user);
@@ -458,7 +468,7 @@
if(!checkUsernameUnique(user)){
throw new ApiException("用户名已存在");
}
- if(!checkPhoneUnique(user)){
+ if(!checkPhoneUnique(user.setIdentity(UserIdentityEnum.AGENCY.getCode()))){
throw new ApiException("手机号已存在");
}
SysAgency agency=user.getAgency();
@@ -471,7 +481,7 @@
throw new ApiException("机构名称已存在");
}
- delCacheByUsername(user.getUsername());
+ delCacheByUsername(user.getUsername(),UserIdentityEnum.AGENCY.getCode());
agency.setUpdateBy(ShiroUtils.getSysUser().getUsername());
agencyService.updateById(agency);
user.setPassword(null);
@@ -490,7 +500,7 @@
if(!checkUsernameUnique(user)){
throw new ApiException("用户名已存在");
}
- if(!checkPhoneUnique(user)){
+ if(!checkPhoneUnique(user.setIdentity(UserIdentityEnum.EXPERT.getCode()))){
throw new ApiException("手机号已存在");
}
String major=user.getMajor();
@@ -542,7 +552,7 @@
if(!delIds.isEmpty()){
attachService.deleteAttachsByIds(delIds);
}
- delCacheByUsername(user.getUsername());
+ delCacheByUsername(user.getUsername(),UserIdentityEnum.EXPERT.getCode());
return row;
}
@@ -554,7 +564,7 @@
SysUser oldUser=checkUserDataScope(user.getId());
SysUser newUser=new SysUser().setId(user.getId()).setPassword(JwtTokenUtil.encryptPassword(oldUser.getUsername(),originPsword,oldUser.getSalt()));
newUser.setUpdateBy(ShiroUtils.getSysUser().getUsername());
- delCacheByUsername(oldUser.getUsername());
+ delCacheByUsername(oldUser.getUsername(),oldUser.getIdentity());
return updateById(newUser);
}
@@ -571,8 +581,11 @@
@Override
public boolean checkPhoneUnique(SysUser user) {
+ if(user.getIdentity()==null){
+ throw new ApiException("用户身份不能为空");
+ }
Long userId = user.getId()==null ? -1L : user.getId();
- SysUser info = baseMapper.checkPhoneUnique(user.getPhone());
+ SysUser info = baseMapper.checkPhoneUnique(user.getPhone(),user.getIdentity());
if (info!=null && info.getId().longValue() != userId.longValue())
{
return false;
@@ -625,7 +638,7 @@
SysUser existUser=checkUserDataScope(user.getId());
SysUser su=new SysUser().setId(user.getId()).setStatus(user.getStatus());
su.setUpdateBy(ShiroUtils.getSysUser().getUsername());
- delCacheByUsername(existUser.getUsername());
+ delCacheByUsername(existUser.getUsername(),existUser.getIdentity());
return updateById(su);
}
@@ -634,7 +647,7 @@
SysUser existUser=checkUserDataScope(user.getId());
SysUser su=new SysUser().setId(user.getId()).setState(user.getState());
su.setUpdateBy(ShiroUtils.getSysUser().getUsername());
- delCacheByUsername(existUser.getUsername());
+ delCacheByUsername(existUser.getUsername(),existUser.getIdentity());
return updateById(su);
}
}
--
Gitblit v1.9.2