瀏覽代碼

Merge branch 'package' of GameCenter/game-center into dev

zhimo 14 小時之前
父節點
當前提交
a3c0e1a44a

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

@@ -87,6 +87,11 @@ public enum HttpStatusEnum {
      */
     IP_HALT(41109, "ip封禁, 请联系客服"),
 
+    /**
+     * 设备封禁
+     */
+    DEVICES_HALT(41109, "设备封禁, 请联系客服"),
+
     /**
      * 账户未绑定手机
      */

+ 1 - 1
game-module/game-module-manage/src/main/java/com/zanxiang/game/module/manage/ManageApplication.java

@@ -23,7 +23,7 @@ public class ManageApplication {
 
     public static void main(String[] args) {
         SpringApplication.run(ManageApplication.class, args);
-        System.out.println("赞象Manage服务启动成功 < (玩家封禁新增字段, 聊天记录增加查询条件-02 ・・)ノ(._.`) \n" +
+        System.out.println("赞象Manage服务启动成功 < (玩家封禁新增游戏id字段 ・・)ノ(._.`) \n" +
                 "___  ___  ___   _   _   ___  _____  _____ \n" +
                 "|  \\/  | / _ \\ | \\ | | / _ \\|  __ \\|  ___|\n" +
                 "| .  . |/ /_\\ \\|  \\| |/ /_\\ \\ |  \\/| |__  \n" +

+ 1 - 0
game-module/game-module-manage/src/main/java/com/zanxiang/game/module/manage/service/impl/UserBanServiceImpl.java

@@ -107,6 +107,7 @@ public class UserBanServiceImpl extends ServiceImpl<UserBanMapper, UserBan> impl
     private UserBan transform(UserDTO userDTO, Integer status) {
         return UserBan.builder()
                 .userId(userDTO.getId())
+                .gameId(userDTO.getGameId())
                 .userName(userDTO.getUsername())
                 .userNickName(userDTO.getNickname())
                 .regTime(userDTO.getCreateTime())

+ 5 - 0
game-module/game-module-mybatis/src/main/java/com/zanxiang/game/module/mybatis/entity/UserBan.java

@@ -35,6 +35,11 @@ public class UserBan implements Serializable {
      */
     private Long userId;
 
+    /**
+     * 游戏id
+     */
+    private Long gameId;
+
     /**
      * 用户账号
      */

+ 10 - 0
game-module/game-module-sdk/src/main/java/com/zanxiang/game/module/sdk/service/IIpBanService.java

@@ -1,6 +1,8 @@
 package com.zanxiang.game.module.sdk.service;
 
 import com.baomidou.mybatisplus.extension.service.IService;
+import com.github.sd4324530.jtuple.Tuple2;
+import com.zanxiang.game.module.base.pojo.enums.HttpStatusEnum;
 import com.zanxiang.game.module.mybatis.entity.IpBan;
 import com.zanxiang.game.module.sdk.pojo.param.UserData;
 
@@ -18,4 +20,12 @@ public interface IIpBanService extends IService<IpBan> {
      * @return boolean
      */
     boolean checkIpBan(UserData userData);
+
+    /**
+     * 封禁IP和设备检测
+     *
+     * @param userData : 用户数据
+     * @return : 返回检测结果
+     */
+    Tuple2<Boolean, HttpStatusEnum> banCheck(UserData userData);
 }

+ 12 - 0
game-module/game-module-sdk/src/main/java/com/zanxiang/game/module/sdk/service/IUserBanService.java

@@ -0,0 +1,12 @@
+package com.zanxiang.game.module.sdk.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.zanxiang.game.module.mybatis.entity.UserBan;
+
+/**
+ * @author : lingfeng
+ * @time : 2022-06-28
+ * @description : 玩家封禁管理
+ */
+public interface IUserBanService extends IService<UserBan> {
+}

+ 40 - 35
game-module/game-module-sdk/src/main/java/com/zanxiang/game/module/sdk/service/impl/IpBanServiceImpl.java

@@ -6,22 +6,18 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.github.sd4324530.jtuple.Tuple2;
 import com.zanxiang.game.module.base.pojo.enums.BanStatusEnum;
 import com.zanxiang.game.module.base.pojo.enums.HttpStatusEnum;
-import com.zanxiang.game.module.mybatis.entity.Game;
-import com.zanxiang.game.module.mybatis.entity.GameSupper;
 import com.zanxiang.game.module.mybatis.entity.IpBan;
-import com.zanxiang.game.module.mybatis.entity.UserEvent;
+import com.zanxiang.game.module.mybatis.entity.UserBan;
 import com.zanxiang.game.module.mybatis.mapper.IpBanMapper;
 import com.zanxiang.game.module.sdk.pojo.param.UserData;
-import com.zanxiang.game.module.sdk.service.IGameService;
-import com.zanxiang.game.module.sdk.service.IGameSupperService;
 import com.zanxiang.game.module.sdk.service.IIpBanService;
-import com.zanxiang.game.module.sdk.service.IUserEventService;
+import com.zanxiang.game.module.sdk.service.IUserBanService;
 import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
 import java.util.Objects;
-import java.util.Optional;
 
 /**
  * @author : lingfeng
@@ -33,13 +29,7 @@ import java.util.Optional;
 public class IpBanServiceImpl extends ServiceImpl<IpBanMapper, IpBan> implements IIpBanService {
 
     @Autowired
-    private IUserEventService userEventService;
-
-    @Autowired
-    private IGameSupperService gameSupperService;
-
-    @Autowired
-    private IGameService gameService;
+    private IUserBanService userBanService;
 
     @Override
     public boolean checkIpBan(UserData userData) {
@@ -50,32 +40,47 @@ public class IpBanServiceImpl extends ServiceImpl<IpBanMapper, IpBan> implements
         return ipBan != null && Objects.equals(ipBan.getStatus(), BanStatusEnum.BAN_STATUS.getStatus());
     }
 
-    public Tuple2<Boolean, HttpStatusEnum> checkIpBanAndGetStatus(UserData userData) {
-        IpBan ipBan = super.getOne(new LambdaUpdateWrapper<IpBan>()
-                .eq(IpBan::getIp, userData.getIp())
+    public Tuple2<Boolean, HttpStatusEnum> banCheck(UserData userData) {
+        //IP检测
+        if (super.count(new LambdaQueryWrapper<IpBan>()
                 .eq(IpBan::getGameId, userData.getGameId())
-        );
-        if (ipBan != null && Objects.equals(ipBan.getStatus(), BanStatusEnum.BAN_STATUS.getStatus())) {
+                .eq(IpBan::getIp, userData.getIp())
+                .eq(IpBan::getStatus, BanStatusEnum.BAN_STATUS.getStatus())
+        ) > 0) {
             return Tuple2.with(Boolean.TRUE, HttpStatusEnum.IP_HALT);
         }
-        //获取游戏维护状态
-        Boolean serverMaintain = Optional.ofNullable(gameService.getById(userData.getGameId()))
-                .map(Game::getSuperGameId)
-                .flatMap(superGameId -> Optional.ofNullable(gameSupperService.getById(superGameId)))
-                .map(GameSupper::getServerMaintain)
-                .orElse(null);
-        //没有维护, 直接放行
-        if (!Objects.equals(serverMaintain, Boolean.TRUE)) {
+        //封禁检测
+        if (StringUtils.isAllBlank(userData.getImei(), userData.getAndroidId(), userData.getOaid())) {
             return Tuple2.with(Boolean.FALSE, HttpStatusEnum.SUCCESS);
         }
-        //维护中, 测试账号直接放行
-        if (userEventService.count(new LambdaQueryWrapper<UserEvent>()
-                .eq(UserEvent::getGameId, userData.getGameId())
-                .eq(UserEvent::getIp, userData.getIp())
-        ) > 0) {
-            return Tuple2.with(Boolean.FALSE, HttpStatusEnum.SUCCESS);
+        //匹配已封禁设备标识
+        LambdaQueryWrapper<UserBan> queryWrapper = new LambdaQueryWrapper<UserBan>();
+        queryWrapper.and(qw -> {
+            boolean hasCondition = false;
+            //安卓id匹配
+            if (StringUtils.isNoneBlank(userData.getAndroidId())) {
+                qw.or().eq(UserBan::getAndroidId, userData.getAndroidId());
+                hasCondition = true;
+            }
+            //imei匹配
+            if (StringUtils.isNoneBlank(userData.getImei())) {
+                qw.or().eq(UserBan::getImei, userData.getImei());
+                hasCondition = true;
+            }
+            //oaid匹配
+            if (StringUtils.isNoneBlank(userData.getOaid())) {
+                qw.or().eq(UserBan::getOaid, userData.getOaid());
+                hasCondition = true;
+            }
+            // 避免无条件的OR查询
+            if (!hasCondition) {
+                qw.or().apply("1=0");
+            }
+        });
+        //查询
+        if (userBanService.count(queryWrapper) > 0) {
+            return Tuple2.with(Boolean.TRUE, HttpStatusEnum.IP_HALT);
         }
-        //返回服务器正在维护中
-        return Tuple2.with(Boolean.TRUE, HttpStatusEnum.SERVER_MAINTAIN);
+        return Tuple2.with(Boolean.FALSE, HttpStatusEnum.SUCCESS);
     }
 }

+ 18 - 0
game-module/game-module-sdk/src/main/java/com/zanxiang/game/module/sdk/service/impl/UserBanServiceImpl.java

@@ -0,0 +1,18 @@
+package com.zanxiang.game.module.sdk.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.zanxiang.game.module.mybatis.entity.UserBan;
+import com.zanxiang.game.module.mybatis.mapper.UserBanMapper;
+import com.zanxiang.game.module.sdk.service.IUserBanService;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.stereotype.Service;
+
+/**
+ * @author : lingfeng
+ * @time : 2022-06-28
+ * @description : 玩家封禁管理
+ */
+@Slf4j
+@Service
+public class UserBanServiceImpl extends ServiceImpl<UserBanMapper, UserBan> implements IUserBanService {
+}