Merge remote-tracking branch 'origin/develop_comac' into develop
This commit is contained in:
commit
fecb6d2102
|
|
@ -30,7 +30,9 @@ public class UserController {
|
|||
|
||||
@ApiOperation(value="编辑用户信息",notes = "")
|
||||
@PutMapping("/updateUser")
|
||||
public ElectromagneticResult<?> updateUser(@RequestBody UserModiRequest userModiRequest){ return userFacade.modifyUser(userModiRequest);}
|
||||
public ElectromagneticResult<?> updateUser(@RequestBody UserModiRequest userModiRequest){
|
||||
return userFacade.modifyUser(userModiRequest);
|
||||
}
|
||||
|
||||
@ApiOperation(value = "发布用户信息", notes = "")
|
||||
@RequestMapping(value = "/publish", method = RequestMethod.POST)
|
||||
|
|
|
|||
|
|
@ -1,6 +1,13 @@
|
|||
package com.electromagnetic.industry.software.data.manage.domain.boardservice.user.interceptor;
|
||||
|
||||
import com.electromagnetic.industry.software.data.manage.domain.boardservice.user.service.TokenService;
|
||||
import electromagnetic.data.framework.share.constants.UserConstants;
|
||||
import electromagnetic.data.framework.share.model.UserLoginInfo;
|
||||
import electromagnetic.data.framework.share.util.TokenUtil;
|
||||
import electromagnetic.data.framework.share.util.UserThreadLocal;
|
||||
import io.jsonwebtoken.Claims;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
import org.springframework.stereotype.Component;
|
||||
import org.springframework.web.servlet.HandlerInterceptor;
|
||||
import org.springframework.web.servlet.ModelAndView;
|
||||
|
|
@ -12,6 +19,8 @@ import javax.servlet.http.HttpServletResponse;
|
|||
@Component
|
||||
public class LoginInterceptor implements HandlerInterceptor {
|
||||
|
||||
private static Logger LOGGER = LoggerFactory.getLogger("LOGIN_INTERCEPTOR");
|
||||
|
||||
@Resource
|
||||
TokenService tokenService;
|
||||
|
||||
|
|
@ -19,17 +28,31 @@ public class LoginInterceptor implements HandlerInterceptor {
|
|||
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
|
||||
|
||||
String token = request.getHeader("Authorization");
|
||||
if (token==null || !token.startsWith("Bearer ")) {
|
||||
if (token==null) {
|
||||
LOGGER.error("Authorization header is null");
|
||||
response.setStatus(401);
|
||||
return false;
|
||||
} else {
|
||||
//token = token.substring(7);
|
||||
token = token.substring(7);
|
||||
}
|
||||
boolean result = tokenService.isTokenValid(token.substring(7));
|
||||
boolean result = tokenService.isTokenValid(token);
|
||||
if (!result) {
|
||||
LOGGER.error("Invalid token");
|
||||
response.setStatus(401);
|
||||
return false;
|
||||
} else {
|
||||
Claims claims = TokenUtil.getLoginInfo(token);
|
||||
if (claims==null) {
|
||||
LOGGER.error("User info is missing");
|
||||
response.setStatus(401);
|
||||
return false;
|
||||
} else {
|
||||
UserLoginInfo userLoginInfo = new UserLoginInfo();
|
||||
userLoginInfo.setUserId(claims.get(UserConstants.LOGIN_USER_ID, String.class));
|
||||
userLoginInfo.setUsername(claims.get(UserConstants.LOGIN_USER_NAME, String.class));
|
||||
userLoginInfo.setWorkNumber(claims.get(UserConstants.LOGIN_WORK_NUMBER, String.class));
|
||||
UserThreadLocal.set(userLoginInfo);
|
||||
}
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
|
@ -41,6 +64,6 @@ public class LoginInterceptor implements HandlerInterceptor {
|
|||
|
||||
@Override
|
||||
public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {
|
||||
|
||||
UserThreadLocal.remove();
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
package com.electromagnetic.industry.software.data.manage.domain.boardservice.user.service;
|
||||
|
||||
import com.electromagnetic.industry.software.data.manage.domain.boardservice.user.model.User;
|
||||
import com.electromagnetic.industry.software.data.manage.domain.boardservice.user.model.UserLoginInfo;
|
||||
import electromagnetic.data.framework.share.model.UserLoginInfo;
|
||||
|
||||
public interface TokenService {
|
||||
|
||||
|
|
|
|||
|
|
@ -4,10 +4,10 @@ import cn.hutool.core.date.DateTime;
|
|||
import cn.hutool.core.date.SystemClock;
|
||||
import com.electromagnetic.industry.software.data.manage.domain.boardservice.user.model.Token;
|
||||
import com.electromagnetic.industry.software.data.manage.domain.boardservice.user.model.User;
|
||||
import com.electromagnetic.industry.software.data.manage.domain.boardservice.user.model.UserLoginInfo;
|
||||
import electromagnetic.data.framework.share.model.UserLoginInfo;
|
||||
import com.electromagnetic.industry.software.data.manage.domain.boardservice.user.repository.TokenRepository;
|
||||
import com.electromagnetic.industry.software.data.manage.domain.boardservice.user.service.TokenService;
|
||||
import com.electromagnetic.industry.software.data.manage.domain.boardservice.user.util.UserConstant;
|
||||
import electromagnetic.data.framework.share.constants.UserConstants;
|
||||
import io.jsonwebtoken.Jwts;
|
||||
import io.jsonwebtoken.SignatureAlgorithm;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
|
@ -16,7 +16,6 @@ import javax.annotation.Resource;
|
|||
import java.util.Date;
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
import java.util.UUID;
|
||||
|
||||
import static cn.hutool.core.date.SystemClock.now;
|
||||
|
||||
|
|
@ -33,15 +32,15 @@ public class TokenServiceImpl implements TokenService {
|
|||
*/
|
||||
@Override
|
||||
public String createToken(UserLoginInfo loginInfo){
|
||||
String token = UUID.randomUUID().toString();
|
||||
loginInfo.setToken(token);
|
||||
Map<String, Object> claims = new HashMap<>();
|
||||
claims.put(UserConstant.LOGIN_USER_KEY, loginInfo);
|
||||
Jwts.builder()
|
||||
claims.put(UserConstants.LOGIN_USER_ID, loginInfo.getUserId());
|
||||
claims.put(UserConstants.LOGIN_USER_NAME, loginInfo.getUsername());
|
||||
claims.put(UserConstants.LOGIN_WORK_NUMBER, loginInfo.getWorkNumber());
|
||||
return Jwts.builder()
|
||||
.addClaims(claims)
|
||||
.signWith(SignatureAlgorithm.HS512, UserConstant.SECRET_KEY)
|
||||
.setIssuedAt(DateTime.now())
|
||||
.signWith(SignatureAlgorithm.HS512, UserConstants.SECRET_KEY)
|
||||
.compact();
|
||||
return token;
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
@ -55,7 +54,7 @@ public class TokenServiceImpl implements TokenService {
|
|||
Token token = new Token();
|
||||
token.setUserId(user.getUserId());
|
||||
token.setToken(tokenStr);
|
||||
token.setExpireAt(new DateTime(now()+UserConstant.DEFAULT_EXPIRE_TIME));
|
||||
token.setExpireAt(new DateTime(now()+ UserConstants.DEFAULT_EXPIRE_TIME));
|
||||
return tokenRepository.insert(token)>0;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
package com.electromagnetic.industry.software.data.manage.domain.boardservice.user.util;
|
||||
package electromagnetic.data.framework.share.constants;
|
||||
|
||||
public class UserConstant {
|
||||
public class UserConstants {
|
||||
|
||||
/**
|
||||
* 默认初始密码
|
||||
|
|
@ -25,5 +25,7 @@ public class UserConstant {
|
|||
/**
|
||||
* 令牌前缀
|
||||
*/
|
||||
public static final String LOGIN_USER_KEY = "login_user_key";
|
||||
public static final String LOGIN_USER_NAME = "userName";
|
||||
public static final String LOGIN_WORK_NUMBER = "workNumber";
|
||||
public static final String LOGIN_USER_ID = "userId";
|
||||
}
|
||||
|
|
@ -1,4 +1,4 @@
|
|||
package com.electromagnetic.industry.software.data.manage.domain.boardservice.user.model;
|
||||
package electromagnetic.data.framework.share.model;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
|
|
@ -10,6 +10,16 @@ public class UserLoginInfo {
|
|||
*/
|
||||
private String workNumber;
|
||||
|
||||
/**
|
||||
* 用户名
|
||||
*/
|
||||
private String username;
|
||||
|
||||
/**
|
||||
* 用户编号
|
||||
*/
|
||||
private String userId;
|
||||
|
||||
/**
|
||||
* 用户密码
|
||||
*/
|
||||
|
|
@ -0,0 +1,21 @@
|
|||
package electromagnetic.data.framework.share.util;
|
||||
|
||||
import electromagnetic.data.framework.share.constants.UserConstants;
|
||||
import io.jsonwebtoken.Claims;
|
||||
import io.jsonwebtoken.Jwts;
|
||||
|
||||
public class TokenUtil {
|
||||
|
||||
/**
|
||||
* 获取Claim
|
||||
*
|
||||
* @param token
|
||||
* @return
|
||||
*/
|
||||
public static Claims getLoginInfo(String token) {
|
||||
return Jwts.parser()
|
||||
.setSigningKey(UserConstants.SECRET_KEY)
|
||||
.parseClaimsJws(token)
|
||||
.getBody();
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,30 @@
|
|||
package electromagnetic.data.framework.share.util;
|
||||
|
||||
import electromagnetic.data.framework.share.model.UserLoginInfo;
|
||||
|
||||
public class UserThreadLocal {
|
||||
/**
|
||||
* 存储用户信息
|
||||
*/
|
||||
private static ThreadLocal<UserLoginInfo> userThread = new ThreadLocal<>();
|
||||
|
||||
public static void set(UserLoginInfo userLoginInfo) {
|
||||
userThread.set(userLoginInfo);
|
||||
}
|
||||
|
||||
public static UserLoginInfo getUser() {
|
||||
return userThread.get();
|
||||
}
|
||||
|
||||
public static String getUsername() {
|
||||
return userThread.get().getUsername();
|
||||
}
|
||||
|
||||
public static String getUserId() {
|
||||
return userThread.get().getUserId();
|
||||
}
|
||||
|
||||
public static void remove() {
|
||||
userThread.remove();
|
||||
}
|
||||
}
|
||||
|
|
@ -16,13 +16,4 @@ public class UserDeleteRequest extends BaseRequest implements Serializable {
|
|||
*/
|
||||
private String userId;
|
||||
|
||||
/**
|
||||
* 更新人姓名
|
||||
*/
|
||||
private String modifier;
|
||||
|
||||
/**
|
||||
* 更新人工号
|
||||
*/
|
||||
private String modifierName;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -57,14 +57,4 @@ public class UserModiRequest extends BaseRequest implements Serializable {
|
|||
* 实习截止日期
|
||||
*/
|
||||
private Date internshipEndDate;
|
||||
|
||||
/**
|
||||
* 创建者
|
||||
*/
|
||||
private String modifier;
|
||||
|
||||
/**
|
||||
* 创建者姓名
|
||||
*/
|
||||
private String modifierName;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -17,13 +17,4 @@ public class UserPublishRequest extends BaseRequest implements Serializable {
|
|||
*/
|
||||
private List<String> userIds;
|
||||
|
||||
/**
|
||||
* 编辑者
|
||||
*/
|
||||
private String modifier;
|
||||
|
||||
/**
|
||||
* 编辑者姓名
|
||||
*/
|
||||
private String modifierName;
|
||||
}
|
||||
|
|
@ -53,24 +53,4 @@ public class UserRequest extends BaseRequest implements Serializable {
|
|||
*/
|
||||
private Date internshipEndDate;
|
||||
|
||||
/**
|
||||
* 创建者
|
||||
*/
|
||||
private String creator;
|
||||
|
||||
/**
|
||||
* 创建者姓名
|
||||
*/
|
||||
private String creatorName;
|
||||
|
||||
/**
|
||||
* 编辑者userId
|
||||
*/
|
||||
private String modifier;
|
||||
|
||||
/**
|
||||
* 编辑者姓名
|
||||
*/
|
||||
private String modifierName;
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -82,6 +82,7 @@
|
|||
<if test="internshipEndDate != null">internship_end_date = #{internshipEndDate},</if>
|
||||
<if test="modifier != null and modifier != ''">modifier = #{modifier},</if>
|
||||
<if test="modifierName != null and modifierName != ''">modifier_name = #{modifierName},</if>
|
||||
gmt_modified=now()
|
||||
</set>
|
||||
where user_id= #{userId}
|
||||
</update>
|
||||
|
|
@ -93,6 +94,7 @@
|
|||
is_published = 1,
|
||||
<if test="modifier != null and modifier != ''">modifier = #{modifier},</if>
|
||||
<if test="modifierName != null and modifierName != ''">modifier_name = #{modifierName},</if>
|
||||
gmt_modified = now()
|
||||
</trim>
|
||||
where user_id IN
|
||||
<foreach collection="userIds" item="userId" open="(" separator="," close=")">
|
||||
|
|
@ -202,7 +204,8 @@
|
|||
<set>
|
||||
effect_flag=0,
|
||||
modifier=#{modifier},
|
||||
modifier_name=#{modifierName}
|
||||
modifier_name=#{modifierName},
|
||||
gmt_modified = now()
|
||||
</set>
|
||||
where user_id = #{userId}
|
||||
</update>
|
||||
|
|
|
|||
|
|
@ -2,13 +2,13 @@ package com.electromagnetic.industry.software.data.manage.service.facade.user;
|
|||
|
||||
import com.electromagnetic.industry.software.data.manage.common.ElectromagneticErrorEnum;
|
||||
import com.electromagnetic.industry.software.data.manage.domain.boardservice.user.model.User;
|
||||
import com.electromagnetic.industry.software.data.manage.domain.boardservice.user.model.UserLoginInfo;
|
||||
import electromagnetic.data.framework.share.model.UserLoginInfo;
|
||||
import com.electromagnetic.industry.software.data.manage.domain.boardservice.user.params.PublishParam;
|
||||
import com.electromagnetic.industry.software.data.manage.domain.boardservice.user.params.SearchKeyWords;
|
||||
import com.electromagnetic.industry.software.data.manage.domain.boardservice.user.params.UserDeleteKeyWords;
|
||||
import com.electromagnetic.industry.software.data.manage.domain.boardservice.user.service.TokenService;
|
||||
import com.electromagnetic.industry.software.data.manage.domain.boardservice.user.service.UserService;
|
||||
import com.electromagnetic.industry.software.data.manage.domain.boardservice.user.util.UserConstant;
|
||||
import electromagnetic.data.framework.share.constants.UserConstants;
|
||||
import com.electromagnetic.industry.software.data.manage.facade.user.UserFacade;
|
||||
import com.electromagnetic.industry.software.data.manage.request.user.*;
|
||||
import com.electromagnetic.industry.software.data.manage.response.user.SingleUserResponse;
|
||||
|
|
@ -20,11 +20,12 @@ import electromagnetic.data.framework.share.model.ElectromagneticResult;
|
|||
import electromagnetic.data.framework.share.model.ElectromagneticResultUtil;
|
||||
import electromagnetic.data.framework.share.sign.AESUtils;
|
||||
import electromagnetic.data.framework.share.util.SignUtils;
|
||||
import electromagnetic.data.framework.share.util.TokenUtil;
|
||||
import electromagnetic.data.framework.share.util.UserThreadLocal;
|
||||
import org.apache.commons.lang3.RandomStringUtils;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import java.util.List;
|
||||
|
||||
@Service
|
||||
|
|
@ -43,8 +44,10 @@ public class UserFacadeImpl implements UserFacade {
|
|||
@Override
|
||||
public ElectromagneticResult<UserLoginResponse> login(UserLoginRequest loginRequest) {
|
||||
UserLoginInfo info = UserMappers.INSTANCE.getUserLoginRequestToModel(loginRequest);
|
||||
String decodePwd = AESUtils.decrypt(info.getUserPwd(), UserConstant.SECRET_KEY);
|
||||
String decodePwd = AESUtils.decrypt(info.getUserPwd(), UserConstants.SECRET_KEY);
|
||||
User user = userService.getUserByWorkNumber(info.getWorkNumber());
|
||||
info.setUserId(user.getUserId());
|
||||
info.setUsername(user.getUserName());
|
||||
if ( userService.checkUserValid(user) && userService.matchPassword(user, decodePwd)) {
|
||||
String tokenStr = tokenService.createToken(info);
|
||||
tokenService.createUserToken(user, tokenStr);
|
||||
|
|
@ -66,8 +69,10 @@ public class UserFacadeImpl implements UserFacade {
|
|||
User user = UserMappers.INSTANCE.getUserRequestToModel(userRequest);
|
||||
user.setSalt(RandomStringUtils.randomAlphanumeric(16));
|
||||
user.setUserId(IdWorker.getSnowFlakeIdString());
|
||||
user.setUserPwd(SignUtils.MD5(UserConstant.DEFAULT_PASSWORD+user.getSalt()));
|
||||
user.setIsPublished(UserConstant.DEFAULT_PUBLISH_STATUS);
|
||||
user.setUserPwd(SignUtils.MD5(UserConstants.DEFAULT_PASSWORD+user.getSalt()));
|
||||
user.setIsPublished(UserConstants.DEFAULT_PUBLISH_STATUS);
|
||||
user.setCreator(UserThreadLocal.getUserId());
|
||||
user.setCreatorName(UserThreadLocal.getUsername());
|
||||
return ElectromagneticResultUtil.success(userService.createUser(user));
|
||||
}
|
||||
|
||||
|
|
@ -80,6 +85,8 @@ public class UserFacadeImpl implements UserFacade {
|
|||
public ElectromagneticResult<Boolean> modifyUser(UserModiRequest userModiRequest) {
|
||||
// 将请求对象转换为模型对象
|
||||
User user = UserMappers.INSTANCE.getUserModiRequestToModel(userModiRequest);
|
||||
user.setModifier(UserThreadLocal.getUserId());
|
||||
user.setModifierName(UserThreadLocal.getUsername());
|
||||
//根据操作结果构建 BaseResult 对象并返回
|
||||
return ElectromagneticResultUtil.success(userService.modifyUser(user));
|
||||
}
|
||||
|
|
@ -92,6 +99,8 @@ public class UserFacadeImpl implements UserFacade {
|
|||
@Override
|
||||
public ElectromagneticResult<Boolean> publishUser(UserPublishRequest userPublishRequest){
|
||||
PublishParam model = UserMappers.INSTANCE.getUserPublishRequestToModel(userPublishRequest);
|
||||
model.setModifier(UserThreadLocal.getUserId());
|
||||
model.setModifierName(UserThreadLocal.getUsername());
|
||||
return ElectromagneticResultUtil.success(userService.publishUser(model));
|
||||
}
|
||||
|
||||
|
|
@ -179,6 +188,8 @@ public class UserFacadeImpl implements UserFacade {
|
|||
public ElectromagneticResult<?> deleteUser(UserDeleteRequest userDeleteRequest) {
|
||||
// 将请求对象转换为模型对象
|
||||
UserDeleteKeyWords userDeleteKeyWords = UserMappers.INSTANCE.getUserDeleteRequestToModel(userDeleteRequest);
|
||||
userDeleteKeyWords.setModifier(UserThreadLocal.getUserId());
|
||||
userDeleteKeyWords.setModifierName(UserThreadLocal.getUsername());
|
||||
|
||||
// 检查用户是否已经被逻辑删除
|
||||
User existingUser = userService.getSingleUser(userDeleteKeyWords.getUserId());
|
||||
|
|
|
|||
|
|
@ -4,7 +4,7 @@
|
|||
package com.electromagnetic.industry.software.data.manage.service.mappers;
|
||||
|
||||
import com.electromagnetic.industry.software.data.manage.domain.boardservice.user.model.User;
|
||||
import com.electromagnetic.industry.software.data.manage.domain.boardservice.user.model.UserLoginInfo;
|
||||
import electromagnetic.data.framework.share.model.UserLoginInfo;
|
||||
import com.electromagnetic.industry.software.data.manage.domain.boardservice.user.params.PublishParam;
|
||||
import com.electromagnetic.industry.software.data.manage.domain.boardservice.user.params.SearchKeyWords;
|
||||
import com.electromagnetic.industry.software.data.manage.domain.boardservice.user.params.UserDeleteKeyWords;
|
||||
|
|
|
|||
Loading…
Reference in New Issue