This commit is contained in:
chenxudong 2025-01-02 14:56:18 +08:00
commit eb973e59c0
9 changed files with 38 additions and 0 deletions

View File

@ -2,6 +2,7 @@ package com.electromagnetic.industry.software.manage.config;
import cn.hutool.core.date.SystemClock; import cn.hutool.core.date.SystemClock;
import com.electromagnetic.industry.software.common.cons.UserConstants; import com.electromagnetic.industry.software.common.cons.UserConstants;
import com.electromagnetic.industry.software.common.enums.AdminTypeEnum;
import com.electromagnetic.industry.software.common.pojo.UserLoginInfo; import com.electromagnetic.industry.software.common.pojo.UserLoginInfo;
import com.electromagnetic.industry.software.common.util.TokenUtil; import com.electromagnetic.industry.software.common.util.TokenUtil;
import com.electromagnetic.industry.software.common.util.UserThreadLocal; import com.electromagnetic.industry.software.common.util.UserThreadLocal;
@ -70,6 +71,7 @@ public class LoginInterceptor implements HandlerInterceptor {
userLoginInfo.setUserId(claims.get(UserConstants.LOGIN_USER_ID, String.class)); userLoginInfo.setUserId(claims.get(UserConstants.LOGIN_USER_ID, String.class));
userLoginInfo.setUsername(claims.get(UserConstants.LOGIN_USER_NAME, String.class)); userLoginInfo.setUsername(claims.get(UserConstants.LOGIN_USER_NAME, String.class));
userLoginInfo.setWorkNumber(claims.get(UserConstants.LOGIN_WORK_NUMBER, String.class)); userLoginInfo.setWorkNumber(claims.get(UserConstants.LOGIN_WORK_NUMBER, String.class));
userLoginInfo.setAdminType(claims.get(UserConstants.LOGIN_ADMIN_TYPE, String.class));
UserThreadLocal.set(userLoginInfo); UserThreadLocal.set(userLoginInfo);
} }
return true; return true;

View File

@ -69,6 +69,11 @@ public class User {
*/ */
private Date internshipEndDate; private Date internshipEndDate;
/**
* 管理员类型
*/
private String adminType;
/** /**
* 是否已发布系统管理员 * 是否已发布系统管理员
*/ */

View File

@ -10,4 +10,6 @@ public class UserLoginResponse implements Serializable {
private String token; private String token;
private String userId; private String userId;
private String adminType;
} }

View File

@ -65,12 +65,14 @@ public class UserServiceImpl implements UserService {
User user = userMapper.selectUserByWorkNumber(info.getWorkNumber()); User user = userMapper.selectUserByWorkNumber(info.getWorkNumber());
info.setUserId(user.getUserId()); info.setUserId(user.getUserId());
info.setUsername(user.getUserName()); info.setUsername(user.getUserName());
info.setAdminType(user.getAdminType());
if (checkUserValid(user) && matchPassword(user, decodePwd)) { if (checkUserValid(user) && matchPassword(user, decodePwd)) {
String tokenStr = createToken(info); String tokenStr = createToken(info);
createUserToken(user, tokenStr); createUserToken(user, tokenStr);
UserLoginResponse userLoginResponse = new UserLoginResponse(); UserLoginResponse userLoginResponse = new UserLoginResponse();
userLoginResponse.setToken(tokenStr); userLoginResponse.setToken(tokenStr);
userLoginResponse.setUserId(user.getUserId()); userLoginResponse.setUserId(user.getUserId());
userLoginResponse.setAdminType(user.getAdminType());
return ElectromagneticResultUtil.success(userLoginResponse); return ElectromagneticResultUtil.success(userLoginResponse);
} }
return ElectromagneticResultUtil.fail("500", "用户不存在/密码错误"); return ElectromagneticResultUtil.fail("500", "用户不存在/密码错误");
@ -99,6 +101,7 @@ public class UserServiceImpl implements UserService {
claims.put(UserConstants.LOGIN_USER_ID, loginInfo.getUserId()); claims.put(UserConstants.LOGIN_USER_ID, loginInfo.getUserId());
claims.put(UserConstants.LOGIN_USER_NAME, loginInfo.getUsername()); claims.put(UserConstants.LOGIN_USER_NAME, loginInfo.getUsername());
claims.put(UserConstants.LOGIN_WORK_NUMBER, loginInfo.getWorkNumber()); claims.put(UserConstants.LOGIN_WORK_NUMBER, loginInfo.getWorkNumber());
claims.put(UserConstants.LOGIN_ADMIN_TYPE, loginInfo.getAdminType());
return Jwts.builder() return Jwts.builder()
.addClaims(claims) .addClaims(claims)
.setIssuedAt(DateTime.now()) .setIssuedAt(DateTime.now())

View File

@ -16,6 +16,7 @@
<result column="salt" jdbcType="VARCHAR" property="salt"/> <result column="salt" jdbcType="VARCHAR" property="salt"/>
<result column="user_status" jdbcType="VARCHAR" property="userStatus"/> <result column="user_status" jdbcType="VARCHAR" property="userStatus"/>
<result column="internship_end_date" jdbcType="DATE" property="internshipEndDate"/> <result column="internship_end_date" jdbcType="DATE" property="internshipEndDate"/>
<result column="admin_type" jdbcType="VARCHAR" property="adminType"/>
<result column="creator" jdbcType="VARCHAR" property="creator"/> <result column="creator" jdbcType="VARCHAR" property="creator"/>
<result column="creator_name" jdbcType="VARCHAR" property="creatorName"/> <result column="creator_name" jdbcType="VARCHAR" property="creatorName"/>
<result column="gmt_create" jdbcType="TIMESTAMP" property="gmtCreate"/> <result column="gmt_create" jdbcType="TIMESTAMP" property="gmtCreate"/>
@ -39,6 +40,7 @@
salt, salt,
user_status, user_status,
internship_end_date, internship_end_date,
admin_type,
creator, creator,
creator_name, creator_name,
gmt_create, gmt_create,

View File

@ -33,6 +33,7 @@ public interface UserConstants {
String LOGIN_USER_NAME = "userName"; String LOGIN_USER_NAME = "userName";
String LOGIN_WORK_NUMBER = "workNumber"; String LOGIN_WORK_NUMBER = "workNumber";
String LOGIN_USER_ID = "userId"; String LOGIN_USER_ID = "userId";
String LOGIN_ADMIN_TYPE = "adminType";
/** /**
* 管理员账号 * 管理员账号

View File

@ -0,0 +1,16 @@
package com.electromagnetic.industry.software.common.enums;
import lombok.AllArgsConstructor;
import lombok.Getter;
@Getter
@AllArgsConstructor
public enum AdminTypeEnum {
SYSTEM("system"),
AUDIT("audit"),
NORMAL("normal"),
SECURITY("security");
private String value;
}

View File

@ -29,4 +29,9 @@ public class UserLoginInfo {
* 令牌 * 令牌
*/ */
private String token; private String token;
/**
* 管理员类型
*/
private String adminType;
} }

View File

@ -25,6 +25,8 @@ public class UserThreadLocal {
return userThread.get().getUserId(); return userThread.get().getUserId();
} }
public static String getAdminType() {return userThread.get().getAdminType();}
public static void remove() { public static void remove() {
userThread.remove(); userThread.remove();
} }