瀏覽代碼

feat : 封禁管理测试bug修改

bilingfeng 2 年之前
父節點
當前提交
b00d2fe087

+ 5 - 0
game-module/game-common/src/main/java/com/zanxiang/common/enums/HttpStatusEnum.java

@@ -77,6 +77,11 @@ public enum HttpStatusEnum {
      */
     ACCOUNT_HALT(41108, "账号停用"),
 
+    /**
+     * ip封禁
+     */
+    IP_HALT(41109, "ip封禁"),
+
     /**
      * 账户未绑定手机
      */

+ 7 - 6
game-module/game-manage/src/main/java/com/zanxiang/manage/service/Impl/IpBanServiceImpl.java

@@ -8,6 +8,7 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.zanxiang.common.enums.BanStatusEnum;
 import com.zanxiang.common.utils.StringUtils;
 import com.zanxiang.common.utils.bean.BeanUtils;
+import com.zanxiang.erp.security.util.SecurityUtil;
 import com.zanxiang.manage.domain.params.IpBanAddParam;
 import com.zanxiang.manage.domain.params.IpBanListParam;
 import com.zanxiang.manage.domain.params.IpBanUpdateParam;
@@ -82,8 +83,8 @@ public class IpBanServiceImpl extends ServiceImpl<IpBanMapper, IpBan> implements
                         .ip(ip)
                         .banTime(LocalDateTime.now())
                         .status(BanStatusEnum.BAN_STATUS.getStatus())
-                        .operateId(1L)
-                        .operateName("赞象 admin")
+                        .operateId(SecurityUtil.getUserId())
+                        .operateName(SecurityUtil.getTokenInfo().getNickname())
                         .createTime(LocalDateTime.now())
                         .updateTime(LocalDateTime.now())
                         .build();
@@ -92,8 +93,8 @@ public class IpBanServiceImpl extends ServiceImpl<IpBanMapper, IpBan> implements
                     ipBan.setStatus(BanStatusEnum.BAN_STATUS.getStatus());
                     ipBan.setBanTime(LocalDateTime.now());
                     ipBan.setUpdateTime(LocalDateTime.now());
-                    ipBan.setOperateId(1L);
-                    ipBan.setOperateName("赞象 admin");
+                    ipBan.setOperateId(SecurityUtil.getUserId());
+                    ipBan.setOperateName(SecurityUtil.getTokenInfo().getNickname());
                 }
             }
             list.add(ipBan);
@@ -112,8 +113,8 @@ public class IpBanServiceImpl extends ServiceImpl<IpBanMapper, IpBan> implements
         return super.update(new LambdaUpdateWrapper<IpBan>()
                 .set(IpBan::getStatus, param.getStatus())
                 .set(IpBan::getBanTime, Objects.equals(param.getStatus(), BanStatusEnum.BAN_STATUS.getStatus()) ? LocalDateTime.now() : null)
-                .set(IpBan::getOperateId, 1L)
-                .set(IpBan::getOperateName, "赞象 admin")
+                .set(IpBan::getOperateId, SecurityUtil.getUserId())
+                .set(IpBan::getOperateName, SecurityUtil.getTokenInfo().getNickname())
                 .set(IpBan::getUpdateTime, LocalDateTime.now())
                 .eq(IpBan::getIp, param.getIp())
         );

+ 37 - 0
game-module/game-sdk/src/main/java/com/zanxiang/sdk/service/Impl/IpBanServiceImpl.java

@@ -0,0 +1,37 @@
+package com.zanxiang.sdk.service.Impl;
+
+import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.zanxiang.common.enums.BanStatusEnum;
+import com.zanxiang.mybatis.entity.IpBan;
+import com.zanxiang.mybatis.mapper.IpBanMapper;
+import com.zanxiang.sdk.service.IpBanService;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.stereotype.Service;
+
+import java.util.Objects;
+
+/**
+ * @author : lingfeng
+ * @time : 2022-06-28
+ * @description : ip封禁管理
+ */
+@Slf4j
+@Service
+public class IpBanServiceImpl extends ServiceImpl<IpBanMapper, IpBan> implements IpBanService {
+
+    /**
+     * 判断ip是否封禁状态
+     *
+     * @param ip : ip地址
+     * @return : 返回是否封禁
+     */
+    @Override
+    public boolean checkIpBan(String ip) {
+        IpBan ipBan = super.getOne(new LambdaUpdateWrapper<IpBan>()
+                .eq(IpBan::getIp, ip)
+        );
+        return ipBan != null && Objects.equals(ipBan.getStatus(), BanStatusEnum.BAN_STATUS.getStatus());
+    }
+
+}

+ 13 - 0
game-module/game-sdk/src/main/java/com/zanxiang/sdk/service/Impl/LoginServiceImpl.java

@@ -88,6 +88,9 @@ public class LoginServiceImpl implements RegisterLoginService {
     @Autowired
     private GameExtService gameExtService;
 
+    @Autowired
+    private IpBanService ipBanService;
+
     /**
      * QQ开发者应用id
      */
@@ -110,6 +113,10 @@ public class LoginServiceImpl implements RegisterLoginService {
     @Override
     @Transactional(rollbackFor = Exception.class)
     public ResultVO<UserLoginVO> loginPassword(LoginPasswordParam param, UserData userData) {
+        //验证登录ip是否封禁
+        if (ipBanService.checkIpBan(userData.getIp())) {
+            return new ResultVO<>(HttpStatusEnum.IP_HALT);
+        }
         String username = param.getUsername();
         String password = param.getPassword();
         //用户信息
@@ -146,6 +153,7 @@ public class LoginServiceImpl implements RegisterLoginService {
                     .agentId(promoChannelService.getAgentIdByChannel(userData.getChannel()))
                     .gameId(userData.getGameId())
                     .username(username)
+                    .nickname(RegisterUtil.randomNickName(username))
                     .password(RegisterUtil.cmfPassword(password))
                     .deviceType(userData.getDeviceType())
                     .status(AccountStatusEnum.NORMAL_STATUS.getStatus())
@@ -174,6 +182,10 @@ public class LoginServiceImpl implements RegisterLoginService {
     @Override
     @Transactional(rollbackFor = Exception.class)
     public ResultVO<UserLoginVO> loginMobile(LoginMobileParam param, UserData userData) {
+        //验证ip是否封禁
+        if (ipBanService.checkIpBan(userData.getIp())) {
+            return new ResultVO<>(HttpStatusEnum.IP_HALT);
+        }
         String mobile = param.getMobile();
         //验证码校验
         HttpStatusEnum httpStatusEnum = smsService.smsCheck(SmsTypeEnum.SMS_REG.getType(), mobile, param.getCode());
@@ -189,6 +201,7 @@ public class LoginServiceImpl implements RegisterLoginService {
                     .agentId(promoChannelService.getAgentIdByChannel(userData.getChannel()))
                     .gameId(userData.getGameId())
                     .username(mobile)
+                    .nickname(RegisterUtil.randomNickName(mobile))
                     .mobile(mobile)
                     .deviceType(userData.getDeviceType())
                     .status(AccountStatusEnum.NORMAL_STATUS.getStatus())

+ 21 - 0
game-module/game-sdk/src/main/java/com/zanxiang/sdk/service/Impl/UserTokenServiceImpl.java

@@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.zanxiang.common.constant.Constants;
 import com.zanxiang.common.domain.ResultVO;
+import com.zanxiang.common.enums.AccountStatusEnum;
 import com.zanxiang.common.enums.ExpireTimeEnum;
 import com.zanxiang.common.exception.BaseException;
 import com.zanxiang.common.text.UUID;
@@ -11,6 +12,7 @@ import com.zanxiang.common.utils.DateUtils;
 import com.zanxiang.common.utils.MD5Util;
 import com.zanxiang.common.utils.bean.BeanUtils;
 import com.zanxiang.mybatis.entity.GameExt;
+import com.zanxiang.mybatis.entity.User;
 import com.zanxiang.mybatis.entity.UserToken;
 import com.zanxiang.mybatis.mapper.UserTokenMapper;
 import com.zanxiang.sdk.constant.RedisKeyConstant;
@@ -18,6 +20,8 @@ import com.zanxiang.sdk.domain.dto.UserTokenDTO;
 import com.zanxiang.sdk.domain.params.UserData;
 import com.zanxiang.sdk.enums.TokenCheckEnum;
 import com.zanxiang.sdk.service.GameExtService;
+import com.zanxiang.sdk.service.IpBanService;
+import com.zanxiang.sdk.service.UserService;
 import com.zanxiang.sdk.service.UserTokenService;
 import com.zanxiang.sdk.util.RedisUtil;
 import com.zanxiang.sdk.util.SignUtil;
@@ -44,6 +48,12 @@ public class UserTokenServiceImpl extends ServiceImpl<UserTokenMapper, UserToken
     @Autowired
     private GameExtService gameExtService;
 
+    @Autowired
+    private IpBanService ipBanService;
+
+    @Autowired
+    private UserService userService;
+
     /**
      * 登录凭证验证
      *
@@ -98,6 +108,17 @@ public class UserTokenServiceImpl extends ServiceImpl<UserTokenMapper, UserToken
      */
     @Override
     public Boolean userTokenExpireTimeCheck(UserData userData) {
+        //验证ip是否封禁
+        if (ipBanService.checkIpBan(userData.getIp())) {
+            return Boolean.FALSE;
+        }
+        //查询用户信息
+        User user = userService.getById(userData.getUserId());
+        //判断账号是否停用
+        if (Objects.equals(AccountStatusEnum.FROZEN_STATUS.getStatus(), user.getStatus())) {
+            return Boolean.FALSE;
+        }
+        //token检测
         Long expireTime = userData.getExpireTime();
         if (expireTime == null) {
             return Boolean.FALSE;

+ 17 - 0
game-module/game-sdk/src/main/java/com/zanxiang/sdk/service/IpBanService.java

@@ -0,0 +1,17 @@
+package com.zanxiang.sdk.service;
+
+/**
+ * @author : lingfeng
+ * @time : 2022-06-28
+ * @description : ip封禁管理
+ */
+public interface IpBanService {
+
+    /**
+     * 判断ip是否封禁状态
+     *
+     * @param ip : ip地址
+     * @return : 返回是否封禁
+     */
+    boolean checkIpBan(String ip);
+}

+ 9 - 0
game-module/game-sdk/src/main/java/com/zanxiang/sdk/util/RegisterUtil.java

@@ -84,6 +84,15 @@ public class RegisterUtil {
         return HttpStatusEnum.SUCCESS;
     }
 
+    /**
+     * 随机用户昵称
+     *
+     * @return : 返回用户昵称
+     */
+    public static String randomNickName(String userName) {
+        return "smlgm" + Math.abs(userName.hashCode());
+    }
+
     /**
      * 密码cfm加密
      *