123
This commit is contained in:
@@ -7,12 +7,16 @@ import cn.hutool.core.util.IdUtil;
|
||||
import cn.hutool.extra.spring.SpringUtil;
|
||||
import com.alibaba.fastjson2.JSON;
|
||||
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
||||
import com.ruoyi.cai.constant.RedisHttpConstant;
|
||||
import com.ruoyi.cai.domain.*;
|
||||
import com.ruoyi.cai.dto.admin.UserForbidDTO;
|
||||
import com.ruoyi.cai.dto.commom.ignoredata.InviteIgnoreData;
|
||||
import com.ruoyi.cai.enums.CodeEnum;
|
||||
import com.ruoyi.cai.enums.GenderEnum;
|
||||
import com.ruoyi.cai.enums.IgnoreDataTypeEnum;
|
||||
import com.ruoyi.cai.enums.SystemConfigEnum;
|
||||
import com.ruoyi.cai.enums.forbid.ForbidTimeEnum;
|
||||
import com.ruoyi.cai.enums.forbid.ForbidTypeEnum;
|
||||
import com.ruoyi.cai.executor.ExecutorConstant;
|
||||
import com.ruoyi.cai.manager.*;
|
||||
import com.ruoyi.cai.mq.AmqpHttpProducer;
|
||||
@@ -33,6 +37,8 @@ import com.ruoyi.yunxin.req.UpdateTokenReq;
|
||||
import com.ruoyi.yunxin.resp.YxCommonR;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.redisson.api.RAtomicLong;
|
||||
import org.redisson.api.RBucket;
|
||||
import org.redisson.api.RLock;
|
||||
import org.redisson.api.RedissonClient;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
@@ -106,13 +112,35 @@ public class CaiLoginManager {
|
||||
notifyLogin(user.getId());
|
||||
return login(user);
|
||||
}
|
||||
if(!BCrypt.checkpw(password, user.getPassword())){
|
||||
throw new ServiceException("用户不存在或密码错误");
|
||||
}
|
||||
checkLogin(username,password,user);
|
||||
notifyLogin(user.getId());
|
||||
return login(user);
|
||||
}
|
||||
|
||||
public void checkLogin(String username,String password,User user){
|
||||
String key = String.format(RedisHttpConstant.CHECK_LOGIN_NUM, username);
|
||||
if(!BCrypt.checkpw(password, user.getPassword())){
|
||||
RAtomicLong atomicLong = redissonClient.getAtomicLong(key);
|
||||
Long passwordMaxNum = systemConfigManager.getSystemConfigOfLong(SystemConfigEnum.LOGIN_PASSWORD_ERROR_MAX_NUM);
|
||||
long num = atomicLong.incrementAndGet();
|
||||
if(num >= passwordMaxNum){
|
||||
String error = String.format("密码错误次数超过%s次,账号已被封禁,请联系客服解锁", passwordMaxNum);
|
||||
UserForbidDTO userForbid = new UserForbidDTO();
|
||||
userForbid.setForbidTime(ForbidTimeEnum.MONTH_1.getCode());
|
||||
userForbid.setForbidType(ForbidTypeEnum.USER.getCode());
|
||||
userForbid.setMember(user.getUsercode());
|
||||
userForbid.setRemark(error);
|
||||
userForbidManager.forbid(userForbid);
|
||||
redissonClient.getAtomicLong(key).delete();
|
||||
throw new ServiceException(error);
|
||||
}else{
|
||||
String error = String.format("密码错误,已错误%s次,还剩%s次", num, passwordMaxNum-num);
|
||||
throw new ServiceException(error);
|
||||
}
|
||||
}
|
||||
redissonClient.getAtomicLong(key).delete();
|
||||
}
|
||||
|
||||
private void notifyLogin(Long userId){
|
||||
LoginNotifyDTO loginUserDTO = new LoginNotifyDTO();
|
||||
loginUserDTO.setUserId(userId);
|
||||
|
||||
@@ -17,6 +17,7 @@ public class RedisHttpConstant {
|
||||
public static final String WITHDRAW_RANK_REDIS = REDIS_P + "withdrawRank:%s:%s";
|
||||
public static final String RECHARGE_RANK_REDIS = REDIS_P + "rechargeRank:%s:%s";
|
||||
public static final String ANCHOR_COUNT_REDIS = REDIS_P + "anchorCount:%s";
|
||||
public static final String CHECK_LOGIN_NUM = REDIS_P + "checkLoginNum:%s";
|
||||
|
||||
public static final String HOME_RECOMMEND_TOP_REDIS = REDIS_P + "homeRecommendAnchorTop";
|
||||
public static final String HOME_RECOMMEND_REDIS = REDIS_P + "homeRecommendAnchor";
|
||||
|
||||
@@ -29,6 +29,7 @@ public enum SystemConfigEnum {
|
||||
REGISTER_AWARD("88", "注册奖励",SystemConfigGroupEnum.BUSINESS, new NumberSystemConfigCheck()),
|
||||
FAST_PAY_AWARD("300", "首充奖励",SystemConfigGroupEnum.BUSINESS, new NumberSystemConfigCheck()),
|
||||
JOIN_ANCHOR_INVITE_AWARD("300", "主播入驻邀请人奖励",SystemConfigGroupEnum.BUSINESS, new NumberSystemConfigCheck()),
|
||||
LOGIN_PASSWORD_ERROR_MAX_NUM("5", "登录输错密码上限",SystemConfigGroupEnum.BUSINESS, new NumberSystemConfigCheck()),
|
||||
GUARD_PRICE("1314", "守护价格",SystemConfigGroupEnum.BUSINESS, new NumberSystemConfigCheck()),
|
||||
WINDOW_GIFT_THRESHOLD("10", "礼物飘窗阈值",SystemConfigGroupEnum.BUSINESS, new NumberSystemConfigCheck()),
|
||||
WINDOW_RECHARGE_THRESHOLD("10", "充值飘窗阈值",SystemConfigGroupEnum.BUSINESS, new NumberSystemConfigCheck()),
|
||||
|
||||
Reference in New Issue
Block a user