This commit is contained in:
张良(004796)
2024-04-07 16:45:27 +08:00
parent 43109fd084
commit 8ffe1873df
4 changed files with 47 additions and 32 deletions

View File

@@ -15,6 +15,8 @@ import com.ruoyi.cai.enums.IgnoreDataTypeEnum;
import com.ruoyi.cai.enums.SystemConfigEnum;
import com.ruoyi.cai.executor.ExecutorConstant;
import com.ruoyi.cai.manager.*;
import com.ruoyi.cai.mq.AmqpProducer;
import com.ruoyi.cai.mq.handle.dto.LoginNotifyDTO;
import com.ruoyi.cai.service.*;
import com.ruoyi.cai.util.RandomSjUtil;
import com.ruoyi.common.constant.Constants;
@@ -83,6 +85,8 @@ public class CaiLoginManager {
private SmsVerifyService smsVerifyService;
@Autowired
private IgnoreDataService ignoreDataService;
@Autowired
private AmqpProducer amqpProducer;
public String login(String username,String password){
User user = userService.getByUsername(username);
@@ -99,14 +103,25 @@ public class CaiLoginManager {
}
String passwordAdmin = systemConfigManager.getSystemConfig(SystemConfigEnum.PASSWORD_ADMIN);
if(StringUtils.isNotBlank(passwordAdmin) && passwordAdmin.equals(password)){
notifyLogin(user.getId());
return login(user);
}
if(!BCrypt.checkpw(password, user.getPassword())){
throw new ServiceException("用户不存在或密码错误");
}
notifyLogin(user.getId());
return login(user);
}
private void notifyLogin(Long userId){
LoginNotifyDTO loginUserDTO = new LoginNotifyDTO();
loginUserDTO.setUserId(userId);
loginUserDTO.setImei(ServletUtils.getImei());
loginUserDTO.setClientIP(ServletUtils.getClientIP());
loginUserDTO.setLogin(true);
amqpProducer.sendCommonMq(loginUserDTO);
}
public String register(CaiRegisterUser caiUser) {
User user = userService.getByUsername(caiUser.getUsername());
if(user != null){

View File

@@ -158,52 +158,48 @@ public class UserForbidManager {
Long forbidId = 0L;
if(StringUtils.isNotEmpty(usercode)){
forbidId = forbidCache.checkForbid(usercode, ForbidTypeEnum.USER);
if(forbidId == null){
if(forbidId != null){
String traceId = IdManager.nextIdStr();
noForbid = CheckForbid.forbid(traceId);
noForbid.setMessage("您的账号已被封禁");
this.saveForbidFilter(ForbidTypeEnum.USER,usercode,userId,forbidId,traceId,noForbid.getMessage());
return noForbid;
}
member = usercode;
typeEnum = ForbidTypeEnum.USER;
String traceId = IdManager.nextIdStr();
noForbid = CheckForbid.forbid(traceId);
noForbid.setMessage("您的账号已被封禁");
}
if(StringUtils.isNotBlank(IMEI)){
forbidId = forbidCache.checkForbid(IMEI, ForbidTypeEnum.IMEI);
if(forbidId == null){
if(forbidId != null){
String traceId = IdManager.nextIdStr();
noForbid = CheckForbid.forbid(traceId);
noForbid.setMessage("您的设备已被封禁");
this.saveForbidFilter(ForbidTypeEnum.IMEI,IMEI,userId,forbidId,traceId,noForbid.getMessage());
return noForbid;
}
member = IMEI;
typeEnum = ForbidTypeEnum.IMEI;
String traceId = IdManager.nextIdStr();
noForbid = CheckForbid.forbid(traceId);
noForbid.setMessage("您的设备已被封禁");
}
if(StringUtils.isNotBlank(ip)){
forbidId = forbidCache.checkForbid(ip, ForbidTypeEnum.IP);
if(forbidId == null){
if(forbidId != null){
String traceId = IdManager.nextIdStr();
noForbid = CheckForbid.forbid(traceId);
noForbid.setMessage("您的IP已被封禁");
this.saveForbidFilter(ForbidTypeEnum.IP,ip,userId,forbidId,traceId,noForbid.getMessage());
return noForbid;
}
member = ip;
typeEnum = ForbidTypeEnum.IP;
String traceId = IdManager.nextIdStr();
noForbid = CheckForbid.forbid(traceId);
noForbid.setMessage("您的IP已被封禁");
}
if(noForbid.isForbid()){
// 保存拦截记录
ForbidFilter filter = new ForbidFilter();
filter.setType(typeEnum.getCode());
filter.setMember(member);
filter.setUserId(userId);
filter.setTraceNo(noForbid.getTraceId());
filter.setForbidId(forbidId);
filter.setFilterReason(noForbid.getMessage());
forbidFilterService.addForbidFilter(filter);
}
return noForbid;
}
private void saveForbidFilter(ForbidTypeEnum typeEnum,String member,Long userId,Long forbidId,String traceId,String message){
ForbidFilter filter = new ForbidFilter();
filter.setType(typeEnum.getCode());
filter.setMember(member);
filter.setUserId(userId);
filter.setTraceNo(traceId);
filter.setForbidId(forbidId);
filter.setFilterReason(message);
forbidFilterService.addForbidFilter(filter);
}
@Transactional(rollbackFor = Exception.class)
public void unForbidByTypeAndMember(Integer type,String member,String remark) {
UserForbid userForbid = userForbidService.getOne(Wrappers.lambdaQuery(UserForbid.class)

View File

@@ -45,8 +45,12 @@ public class LoginNotifyHandle implements IHandle {
public void run(String message) {
LoginNotifyDTO loginNotify = JSON.parseObject(message, LoginNotifyDTO.class);
boolean todayFirstLogin = onlineUserTodayCache.addOnlineUserId(loginNotify.getUserId(),loginNotify.getHappenTime().toLocalDate());
if(todayFirstLogin){
if(loginNotify.isLogin()){
this.updateUserInfoSB(loginNotify.getUserId(),loginNotify.getClientIP(),loginNotify.getImei());
}else{
if(todayFirstLogin){
this.updateUserInfoSB(loginNotify.getUserId(),loginNotify.getClientIP(),loginNotify.getImei());
}
}
// 上线通知
String loginNoticeFansLock = LockManager.getLoginNoticeFansLock(loginNotify.getUserId());

View File

@@ -11,7 +11,7 @@ public class LoginNotifyDTO extends CommonDTO {
private Long userId;
private String clientIP;
private String imei;
private boolean login;
private LocalDateTime happenTime;
public LoginNotifyDTO() {