token修改及实验课程

pull/445/head
wei 4 months ago
parent 692f6225a3
commit 8f198ea261

@ -52,4 +52,10 @@ public interface RemoteUserService extends InnerRemoteUserService
*/
@PutMapping("/user/recordlogin")
public R<Boolean> recordUserLogin(@RequestBody SysUser sysUser, @RequestHeader(SecurityConstants.FROM_SOURCE) String source);
/**
* go
*/
@PostMapping("/user/syncGO")
public R<Boolean> syncGO(@RequestBody SysUser sysUser);
}

@ -68,6 +68,11 @@ public class RemoteUserFallbackFactory implements FallbackFactory<RemoteUserServ
return R.fail("记录用户登录信息失败:" + throwable.getMessage());
}
@Override
public R<Boolean> syncGO(SysUser sysUser) {
return R.fail("同步用户信息至GO失败:" + throwable.getMessage());
}
@NotNull
@Override
public R<LoginUser> edit_Inner(@NotNull LoginUser user, @NotNull String source) {

@ -12,6 +12,20 @@ public class SecurityConstants
*/
public static final String DETAILS_USER_ID = "user_id";
/**
* ID
*/
public static final String DETAILS_SUB = "sub";
/**
* ID
*/
public static final String DETAILS_IAT= "iat";
/**
* ID
*/
public static final String DETAILS_EXP= "exp";
/**
*
*/

@ -1,13 +1,18 @@
package com.ruoyi.common.core.utils;
import java.util.Base64;
import java.util.Map;
import com.ruoyi.common.core.constant.SecurityConstants;
import com.ruoyi.common.core.constant.TokenConstants;
import com.ruoyi.common.core.exception.ServiceException;
import com.ruoyi.common.core.text.Convert;
import io.jsonwebtoken.Claims;
import io.jsonwebtoken.Jwts;
import io.jsonwebtoken.SignatureAlgorithm;
import javax.naming.AuthenticationException;
import javax.servlet.http.HttpServletResponse;
/**
* Jwt
*
@ -15,7 +20,7 @@ import io.jsonwebtoken.SignatureAlgorithm;
*/
public class JwtUtils
{
public static String secret = TokenConstants.SECRET;
public static String secret = Base64.getEncoder().encodeToString(TokenConstants.SECRET.getBytes()) ;
/**
*

@ -1,9 +1,14 @@
package com.ruoyi.common.security.service;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;
import java.util.concurrent.TimeUnit;
import javax.servlet.http.HttpServletRequest;
import io.jsonwebtoken.Claims;
import io.jsonwebtoken.Jwts;
import io.jsonwebtoken.impl.DefaultClaims;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
@ -61,6 +66,10 @@ public class TokenService
claimsMap.put(SecurityConstants.USER_KEY, token);
claimsMap.put(SecurityConstants.DETAILS_USER_ID, userId);
claimsMap.put(SecurityConstants.DETAILS_USERNAME, userName);
claimsMap.put(SecurityConstants.DETAILS_SUB,userId);
int now = Math.toIntExact(System.currentTimeMillis() / 1000);
claimsMap.put(SecurityConstants.DETAILS_IAT,now);
claimsMap.put(SecurityConstants.DETAILS_EXP,now+TOKEN_EXPIRE_TIME*60);
// 接口返回信息
Map<String, Object> rspMap = new HashMap<String, Object>();

@ -44,7 +44,6 @@ public class AuthFilter implements GlobalFilter, Ordered
{
ServerHttpRequest request = exchange.getRequest();
ServerHttpRequest.Builder mutate = request.mutate();
String url = request.getURI().getPath();
// 跳过不需要验证的路径
if (StringUtils.matches(url, ignoreWhite.getWhites()))
@ -56,11 +55,19 @@ public class AuthFilter implements GlobalFilter, Ordered
{
return unauthorizedResponse(exchange, "令牌不能为空");
}
Claims claims = JwtUtils.parseToken(token);
/*Claims claims = JwtUtils.parseToken(token);
if (claims == null)
{
return unauthorizedResponse(exchange, "令牌已过期或验证不正确!");
}
}*/
Claims claims;
try{
claims = JwtUtils.parseToken(token);
if (claims == null)
return unauthorizedResponse(exchange, "令牌已过期或验证不正确!");
}catch (Exception e){
return unauthorizedResponse(exchange, "令牌已过期或验证不正确!");
}
String userkey = JwtUtils.getUserKey(claims);
boolean islogin = redisService.hasKey(getTokenKey(userkey));
if (!islogin)

@ -34,7 +34,6 @@ public class GatewayExceptionHandler implements ErrorWebExceptionHandler
}
String msg;
if (ex instanceof NotFoundException)
{
msg = "服务未找到";

@ -27,8 +27,10 @@ public class LiveTask {
public void CourseSmsNotice(){
List<ScClassUserInfo> list = scClassUserInfoMapper.waitNoticeCourseUser();
list.forEach(item->{
log.info("发送打卡提醒",item.getUserId(),item.getNickName(),item.getPhonenumber());
smsAliyuncs.sendStudyNoticeSms(item.getPhonenumber());
if (item.getPhonenumber() != null && !item.getPhonenumber().trim().isEmpty()){
log.info("发送打卡提醒 {} {} {}",item.getUserId(),item.getNickName(),item.getPhonenumber());
smsAliyuncs.sendStudyNoticeSms(item.getPhonenumber());
}
});
}
}

@ -166,6 +166,16 @@ public class SysUserController extends BaseController
return R.ok(userService.updateUserProfile(sysUser));
}
/**
*IP
*/
@InnerAuth
@PutMapping("/syncGO")
public R<Boolean> syncGO(@RequestBody SysUser sysUser)
{
return R.ok(userService.syncGO(sysUser));
}
/**
*
*

@ -0,0 +1,15 @@
package com.ruoyi.system.domain;
import lombok.Data;
@Data
public class SyncGoUser {
private Integer userId;
private String nickname;
private String username;
private String mobile;
private String lastIp;
private String remark;
private String avatar;
private Integer status;
}

@ -170,6 +170,14 @@ public interface ISysUserService
*/
public boolean updateUserProfile(SysUser user);
/**
*
*
* @param user
* @return
*/
public boolean syncGO(SysUser user);
/**
*
*

@ -6,12 +6,17 @@ import java.util.Objects;
import java.util.stream.Collectors;
import javax.validation.Validator;
import cn.hutool.system.UserInfo;
import com.github.pagehelper.Page;
import com.ruoyi.system.api.domain.KSysUserAccount;
import com.ruoyi.system.domain.SyncGoUser;
import com.ruoyi.system.service.IKSysUserService;
import org.apache.http.client.methods.HttpPost;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.http.ResponseEntity;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.CollectionUtils;
@ -35,6 +40,7 @@ import com.ruoyi.system.mapper.SysUserRoleMapper;
import com.ruoyi.system.service.ISysConfigService;
import com.ruoyi.system.service.ISysDeptService;
import com.ruoyi.system.service.ISysUserService;
import org.springframework.web.client.RestTemplate;
/**
*
@ -44,6 +50,11 @@ import com.ruoyi.system.service.ISysUserService;
@Service
public class SysUserServiceImpl implements ISysUserService
{
@Value("${go.host}")
private String goHost;
@Value("${go.accessKey}")
private String accessKey;
private static final Logger log = LoggerFactory.getLogger(SysUserServiceImpl.class);
@Autowired
@ -73,6 +84,7 @@ public class SysUserServiceImpl implements ISysUserService
@Autowired
protected Validator validator;
/**
*
*
@ -308,7 +320,9 @@ public class SysUserServiceImpl implements ISysUserService
@Override
public boolean registerUser(SysUser user)
{
return userMapper.insertUser(user) > 0;
boolean res = userMapper.insertUser(user) > 0;
this.syncGO(user);
return res;
}
/**
@ -335,6 +349,7 @@ public class SysUserServiceImpl implements ISysUserService
kSysUserService.updateSysUserAccount(user.getSysUserAccount());
}
}
this.syncGO(user);
return userMapper.updateUser(user);
}
@ -361,6 +376,7 @@ public class SysUserServiceImpl implements ISysUserService
@Override
public int updateUserStatus(SysUser user)
{
this.syncGO(user);
return userMapper.updateUser(user);
}
@ -373,9 +389,39 @@ public class SysUserServiceImpl implements ISysUserService
@Override
public boolean updateUserProfile(SysUser user)
{
this.syncGO(user);
return userMapper.updateUser(user) > 0;
}
/**
*
*
* @param user
* @return
*/
@Override
public boolean syncGO(SysUser user){
RestTemplate restTemplate = new RestTemplate();
String url = goHost + "/api/v2/mini/user/zkSyncUser/"+accessKey;
SyncGoUser syncGoUser = new SyncGoUser();
syncGoUser.setUserId(Math.toIntExact(user.getUserId()));
syncGoUser.setNickname(user.getNickName());
syncGoUser.setUsername(user.getUserName());
syncGoUser.setMobile(user.getPhonenumber());
syncGoUser.setLastIp(user.getLoginIp());
syncGoUser.setRemark(user.getRemark());
syncGoUser.setAvatar(user.getAvatar());
syncGoUser.setStatus(Objects.equals(user.getStatus(), "正常") ?0:1);
ResponseEntity<String> response = restTemplate.postForEntity(url, syncGoUser, String.class);
// 检查响应状态码
if (response.getStatusCode().is2xxSuccessful()) {
System.out.println("响应内容:" + response.getBody());
} else {
System.out.println("请求失败,状态码:" + response.getStatusCode());
}
return true;
}
/**
*
*

@ -141,7 +141,9 @@ open class InnerSysUserController : BaseController() {
originUser.avatar = targetUser.avatar ?: originUser.avatar
originUser.sex = targetUser.sex ?: originUser.sex
originUser.updateBy = originUser.userName
originUser.sysUserAccount = loginUser.sysUser.sysUserAccount.apply { this.userId = originUser.userId }
if (loginUser.sysUser.sysUserAccount != null){
originUser.sysUserAccount = loginUser.sysUser.sysUserAccount.apply { this.userId = originUser.userId }
}
userService.updateUser(originUser)
// 更新缓存用户信息
tokenService.setLoginUser(loginUser)

Loading…
Cancel
Save