This commit is contained in:
zhouwentao 2024-04-20 12:42:58 +08:00
parent 954b15b9b6
commit 683432317f
2 changed files with 31 additions and 11 deletions

View File

@ -10,6 +10,7 @@ import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang.StringUtils; import org.apache.commons.lang.StringUtils;
import org.apache.shiro.SecurityUtils; import org.apache.shiro.SecurityUtils;
import org.jeecg.common.api.vo.Result; import org.jeecg.common.api.vo.Result;
import org.jeecg.common.constant.CacheConstant;
import org.jeecg.common.constant.CommonConstant; import org.jeecg.common.constant.CommonConstant;
import org.jeecg.common.exception.JeecgBootException; import org.jeecg.common.exception.JeecgBootException;
import org.jeecg.common.system.util.JwtUtil; import org.jeecg.common.system.util.JwtUtil;
@ -26,6 +27,7 @@ import org.jetbrains.annotations.NotNull;
import org.springframework.beans.BeanUtils; import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value; import org.springframework.beans.factory.annotation.Value;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.http.HttpStatus; import org.springframework.http.HttpStatus;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
@ -35,6 +37,7 @@ import javax.crypto.spec.IvParameterSpec;
import javax.crypto.spec.SecretKeySpec; import javax.crypto.spec.SecretKeySpec;
import java.security.Security; import java.security.Security;
import java.security.spec.AlgorithmParameterSpec; import java.security.spec.AlgorithmParameterSpec;
import java.util.Collection;
import java.util.HashMap; import java.util.HashMap;
import java.util.Map; import java.util.Map;
@ -59,6 +62,8 @@ public class MiniUserController {
@Autowired @Autowired
private RedisUtil redisUtil; private RedisUtil redisUtil;
@Autowired @Autowired
public RedisTemplate redisTemplate;
@Autowired
private ISysUserService sysUserService; private ISysUserService sysUserService;
@Autowired @Autowired
private MiniUserService miniUserService; private MiniUserService miniUserService;
@ -151,7 +156,8 @@ public class MiniUserController {
result.error500("用户名或密码错误"); result.error500("用户名或密码错误");
return result; return result;
} }
//仅保留一端登录
oneUserLogin(sysUser);
//用户登录信息 //用户登录信息
//1.生成token //1.生成token
String token = JwtUtil.sign(sysUser.getUsername(), syspassword); String token = JwtUtil.sign(sysUser.getUsername(), syspassword);
@ -175,7 +181,6 @@ public class MiniUserController {
return Result.OK(obj); return Result.OK(obj);
} }
@PostMapping("/phoneLogin") @PostMapping("/phoneLogin")
@ApiOperation(value = "微信小程序手机号登录") @ApiOperation(value = "微信小程序手机号登录")
public Result<?> wechatLogin(@NotNull @RequestBody WxModel wxModel) { public Result<?> wechatLogin(@NotNull @RequestBody WxModel wxModel) {
@ -219,6 +224,9 @@ public class MiniUserController {
sysUserService.updateById(user); sysUserService.updateById(user);
} }
} }
//仅保留一端登录
oneUserLogin(user);
String username = user.getUsername(); String username = user.getUsername();
String syspassword = user.getPassword(); String syspassword = user.getPassword();
//1.生成token //1.生成token
@ -264,7 +272,6 @@ public class MiniUserController {
return Result.OK(); return Result.OK();
} }
@PostMapping("/dy/login") @PostMapping("/dy/login")
@ApiOperation("抖音-登录接口") @ApiOperation("抖音-登录接口")
public Result<?> dyLogin(@RequestBody DyLoginVo vo) { public Result<?> dyLogin(@RequestBody DyLoginVo vo) {
@ -307,6 +314,10 @@ public class MiniUserController {
user.setOrgCode(null); user.setOrgCode(null);
sysUserService.saveUser(user, null, null, null); sysUserService.saveUser(user, null, null, null);
} }
//仅保留一端登录
oneUserLogin(user);
String username = user.getUsername(); String username = user.getUsername();
String syspassword = user.getPassword(); String syspassword = user.getPassword();
//1.生成token //1.生成token
@ -370,6 +381,23 @@ public class MiniUserController {
return Result.OK(2); return Result.OK(2);
} }
public void oneUserLogin(SysUser user){
//仅保留一端登录
Collection<String> keys = redisTemplate.keys(CommonConstant.PREFIX_USER_TOKEN + "*");
for (String token : keys) {
SysUser sysUser = sysUserService.getUserByName(JwtUtil.getUsername(token));
if (sysUser.getId().equals(user.getId())) {
//清空用户登录Token缓存
redisUtil.del(CommonConstant.PREFIX_USER_TOKEN + token);
//清空用户登录Shiro权限缓存
redisUtil.del(CommonConstant.PREFIX_USER_SHIRO_CACHE + sysUser.getId());
//清空用户的缓存信息包括部门信息例如sys:cache:user::<username>
redisUtil.del(String.format("%s::%s", CacheConstant.SYS_USERS_CACHE, sysUser.getUsername()));
}
}
}
public static String phoneDecrypt(String encrypted, String sessionKey, String iv) { public static String phoneDecrypt(String encrypted, String sessionKey, String iv) {
String phoneNumber = null; String phoneNumber = null;
try { try {

View File

@ -6,8 +6,6 @@ import java.util.Map;
import java.util.Set; import java.util.Set;
import java.util.stream.Collectors; import java.util.stream.Collectors;
import java.io.IOException; import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.net.URLDecoder;
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpServletResponse;
@ -15,10 +13,8 @@ import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.lang.StringUtils; import org.apache.commons.lang.StringUtils;
import org.jeecg.common.api.vo.Result; import org.jeecg.common.api.vo.Result;
import org.jeecg.common.system.query.QueryGenerator; import org.jeecg.common.system.query.QueryGenerator;
import org.jeecg.common.util.oConvertUtils;
import org.jeecg.modules.yx.entity.YxMajor; import org.jeecg.modules.yx.entity.YxMajor;
import org.jeecg.modules.yx.entity.YxSchool; import org.jeecg.modules.yx.entity.YxSchool;
import org.jeecg.modules.yx.entity.YxSchoolDoubleFirstPlan;
import org.jeecg.modules.yx.entity.YxSubjectEvaluation; import org.jeecg.modules.yx.entity.YxSubjectEvaluation;
import org.jeecg.modules.yx.service.IYxSchoolService; import org.jeecg.modules.yx.service.IYxSchoolService;
import org.jeecg.modules.yx.service.IYxSubjectEvaluationService; import org.jeecg.modules.yx.service.IYxSubjectEvaluationService;
@ -29,17 +25,13 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.jeecgframework.poi.excel.ExcelImportUtil; import org.jeecgframework.poi.excel.ExcelImportUtil;
import org.jeecgframework.poi.excel.def.NormalExcelConstants;
import org.jeecgframework.poi.excel.entity.ExportParams;
import org.jeecgframework.poi.excel.entity.ImportParams; import org.jeecgframework.poi.excel.entity.ImportParams;
import org.jeecgframework.poi.excel.view.JeecgEntityExcelView;
import org.jeecg.common.system.base.controller.JeecgController; import org.jeecg.common.system.base.controller.JeecgController;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile; import org.springframework.web.multipart.MultipartFile;
import org.springframework.web.multipart.MultipartHttpServletRequest; import org.springframework.web.multipart.MultipartHttpServletRequest;
import org.springframework.web.servlet.ModelAndView; import org.springframework.web.servlet.ModelAndView;
import com.alibaba.fastjson.JSON;
import io.swagger.annotations.Api; import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiOperation;
import org.jeecg.common.aspect.annotation.AutoLog; import org.jeecg.common.aspect.annotation.AutoLog;