Prechádzať zdrojové kódy

fix : 游戏玩家充值白名单操作接口

bilingfeng 1 deň pred
rodič
commit
f18c3f3338
13 zmenil súbory, kde vykonal 437 pridanie a 5 odobranie
  1. 2 2
      game-data/game-data-base/pom.xml
  2. 2 2
      game-data/pom.xml
  3. 1 1
      game-module/game-module-manage/src/main/java/com/zanxiang/game/module/manage/ManageApplication.java
  4. 66 0
      game-module/game-module-manage/src/main/java/com/zanxiang/game/module/manage/controller/UserRechargeWhiteController.java
  5. 26 0
      game-module/game-module-manage/src/main/java/com/zanxiang/game/module/manage/pojo/params/UserRechargeWhiteAddParam.java
  6. 37 0
      game-module/game-module-manage/src/main/java/com/zanxiang/game/module/manage/pojo/params/UserRechargeWhiteListParam.java
  7. 49 0
      game-module/game-module-manage/src/main/java/com/zanxiang/game/module/manage/pojo/vo/UserRechargeWhiteVO.java
  8. 26 0
      game-module/game-module-manage/src/main/java/com/zanxiang/game/module/manage/service/IUserRechargeWhiteService.java
  9. 138 0
      game-module/game-module-manage/src/main/java/com/zanxiang/game/module/manage/service/impl/UserRechargeWhiteServiceImpl.java
  10. 48 0
      game-module/game-module-mybatis/src/main/java/com/zanxiang/game/module/mybatis/entity/UserRechargeWhite.java
  11. 12 0
      game-module/game-module-mybatis/src/main/java/com/zanxiang/game/module/mybatis/mapper/UserRechargeWhiteMapper.java
  12. 12 0
      game-module/game-module-sdk/src/main/java/com/zanxiang/game/module/sdk/service/IUserRechargeWhiteService.java
  13. 18 0
      game-module/game-module-sdk/src/main/java/com/zanxiang/game/module/sdk/service/impl/UserRechargeWhiteServiceImpl.java

+ 2 - 2
game-data/game-data-base/pom.xml

@@ -12,8 +12,8 @@
     <artifactId>game-data-base</artifactId>
 
     <properties>
-        <maven.compiler.source>8</maven.compiler.source>
-        <maven.compiler.target>8</maven.compiler.target>
+        <maven.compiler.source>17</maven.compiler.source>
+        <maven.compiler.target>17</maven.compiler.target>
     </properties>
 
 

+ 2 - 2
game-data/pom.xml

@@ -17,8 +17,8 @@
     </modules>
 
     <properties>
-        <maven.compiler.source>8</maven.compiler.source>
-        <maven.compiler.target>8</maven.compiler.target>
+        <maven.compiler.source>17</maven.compiler.source>
+        <maven.compiler.target>17</maven.compiler.target>
     </properties>
 
 </project>

+ 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服务启动成功 < (聊天记录, 区服id数据修正 ・・)ノ(._.`) \n" +
+        System.out.println("赞象Manage服务启动成功 < (游戏玩家充值白名单操作接口 ・・)ノ(._.`) \n" +
                 "___  ___  ___   _   _   ___  _____  _____ \n" +
                 "|  \\/  | / _ \\ | \\ | | / _ \\|  __ \\|  ___|\n" +
                 "| .  . |/ /_\\ \\|  \\| |/ /_\\ \\ |  \\/| |__  \n" +

+ 66 - 0
game-module/game-module-manage/src/main/java/com/zanxiang/game/module/manage/controller/UserRechargeWhiteController.java

@@ -0,0 +1,66 @@
+package com.zanxiang.game.module.manage.controller;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.zanxiang.erp.security.annotation.PreAuthorize;
+import com.zanxiang.game.module.manage.pojo.params.UserRechargeWhiteAddParam;
+import com.zanxiang.game.module.manage.pojo.params.UserRechargeWhiteListParam;
+import com.zanxiang.game.module.manage.pojo.vo.UserRechargeWhiteVO;
+import com.zanxiang.game.module.manage.service.IUserRechargeWhiteService;
+import com.zanxiang.module.util.pojo.ResultVO;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import io.swagger.annotations.ApiResponse;
+import io.swagger.annotations.ApiResponses;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.Map;
+
+/**
+ * @author : lingfeng
+ * @time : 2025-05-13
+ * @description :
+ */
+@Api(tags = {"玩家充值白名单接口"})
+@RestController
+@RequestMapping("/user/recharge/white")
+@Slf4j
+public class UserRechargeWhiteController {
+
+    @Autowired
+    private IUserRechargeWhiteService userRechargeWhiteService;
+
+    @ApiOperation(value = "查询有配置的游戏")
+    @GetMapping(value = "/game/list")
+    @PreAuthorize(permissionKey = "manage:userRechargeWhite:gameList")
+    @ApiResponses(value = {@ApiResponse(code = 200, message = "成功", response = Map.class)})
+    public ResultVO<Map<Long, String>> chatGameMap() {
+        return ResultVO.ok(userRechargeWhiteService.rechargeWhiteGameMap());
+    }
+
+    @ApiOperation(value = "添加白名单配置")
+    @PutMapping(value = "/add")
+    @PreAuthorize(permissionKey = "manage:userRechargeWhite:add")
+    @ApiResponses(value = {@ApiResponse(code = 200, message = "成功", response = Boolean.class)})
+    public ResultVO<Boolean> addRechargeWhite(@RequestBody @Validated UserRechargeWhiteAddParam param) {
+        return ResultVO.ok(userRechargeWhiteService.addRechargeWhite(param));
+    }
+
+    @ApiOperation(value = "查询白名单配置列表")
+    @PostMapping(value = "/list")
+    @PreAuthorize(permissionKey = "manage:userRechargeWhite:listOfPage")
+    @ApiResponses(value = {@ApiResponse(code = 200, message = "成功", response = UserRechargeWhiteVO.class)})
+    public ResultVO<IPage<UserRechargeWhiteVO>> listOfPage(@Validated @RequestBody UserRechargeWhiteListParam param) {
+        return ResultVO.ok(userRechargeWhiteService.listOfPage(param));
+    }
+
+    @ApiOperation(value = "白名单删除配置")
+    @DeleteMapping(value = "/del")
+    @PreAuthorize(permissionKey = "manage:userRechargeWhite:del")
+    @ApiResponses(value = {@ApiResponse(code = 200, message = "成功", response = Boolean.class)})
+    public ResultVO<Boolean> delRechargeWhite(@RequestParam Long id) {
+        return ResultVO.ok(userRechargeWhiteService.delRechargeWhite(id));
+    }
+}

+ 26 - 0
game-module/game-module-manage/src/main/java/com/zanxiang/game/module/manage/pojo/params/UserRechargeWhiteAddParam.java

@@ -0,0 +1,26 @@
+package com.zanxiang.game.module.manage.pojo.params;
+
+import lombok.Data;
+
+import javax.validation.constraints.NotNull;
+
+/**
+ * @author : lingfeng
+ * @time : 2025-05-13
+ * @description : 添加玩家充值白名单参数
+ */
+@Data
+public class UserRechargeWhiteAddParam {
+
+    /**
+     * 游戏id
+     */
+    @NotNull(message = "游戏id不能为空")
+    private Long gameId;
+
+    /**
+     * 手机号/账号/玩家id
+     */
+    @NotNull(message = "手机号/账号/玩家id不能为空")
+    private String account;
+}

+ 37 - 0
game-module/game-module-manage/src/main/java/com/zanxiang/game/module/manage/pojo/params/UserRechargeWhiteListParam.java

@@ -0,0 +1,37 @@
+package com.zanxiang.game.module.manage.pojo.params;
+
+import com.zanxiang.game.module.mybatis.entity.UserRechargeWhite;
+import com.zanxiang.module.web.pojo.BaseListDTO;
+import lombok.Data;
+
+import javax.validation.constraints.NotNull;
+
+/**
+ * @author : lingfeng
+ * @time : 2025-05-13
+ * @description : 玩家充值白名单查询参数
+ */
+@Data
+public class UserRechargeWhiteListParam extends BaseListDTO<UserRechargeWhite> {
+
+    /**
+     * 游戏id
+     */
+    @NotNull(message = "游戏id不能为空")
+    private Long gameId;
+
+    /**
+     * 玩家账号/手机号/id
+     */
+    private String account;
+
+    /**
+     * 角色id
+     */
+    private String roleId;
+
+    /**
+     * 角色名称
+     */
+    private String roleName;
+}

+ 49 - 0
game-module/game-module-manage/src/main/java/com/zanxiang/game/module/manage/pojo/vo/UserRechargeWhiteVO.java

@@ -0,0 +1,49 @@
+package com.zanxiang.game.module.manage.pojo.vo;
+
+import lombok.Data;
+
+import java.time.LocalDateTime;
+
+/**
+ * @author : lingfeng
+ * @time : 2025-05-13
+ * @description : 充值白名单
+ */
+@Data
+public class UserRechargeWhiteVO {
+
+    /**
+     * 主键id
+     */
+    private Long id;
+
+    /**
+     * 玩家id
+     */
+    private Long userId;
+
+    /**
+     * 用户名
+     */
+    private String username;
+
+    /**
+     * 绑定手机号码
+     */
+    private String mobile;
+
+    /**
+     * 游戏id
+     */
+    private Long gameId;
+
+    /**
+     * 游戏名称
+     */
+    private String gameName;
+
+    /**
+     * 创建时间
+     */
+    private LocalDateTime createTime;
+}

+ 26 - 0
game-module/game-module-manage/src/main/java/com/zanxiang/game/module/manage/service/IUserRechargeWhiteService.java

@@ -0,0 +1,26 @@
+package com.zanxiang.game.module.manage.service;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.zanxiang.game.module.manage.pojo.params.UserRechargeWhiteAddParam;
+import com.zanxiang.game.module.manage.pojo.params.UserRechargeWhiteListParam;
+import com.zanxiang.game.module.manage.pojo.vo.UserRechargeWhiteVO;
+import com.zanxiang.game.module.mybatis.entity.UserRechargeWhite;
+
+import java.util.Map;
+
+/**
+ * @author : lingfeng
+ * @time : 2025-05-13
+ * @description : 玩家充值白名单
+ */
+public interface IUserRechargeWhiteService extends IService<UserRechargeWhite> {
+
+    Map<Long, String> rechargeWhiteGameMap();
+
+    boolean addRechargeWhite(UserRechargeWhiteAddParam param);
+
+    IPage<UserRechargeWhiteVO> listOfPage(UserRechargeWhiteListParam param);
+
+    boolean delRechargeWhite(Long id);
+}

+ 138 - 0
game-module/game-module-manage/src/main/java/com/zanxiang/game/module/manage/service/impl/UserRechargeWhiteServiceImpl.java

@@ -0,0 +1,138 @@
+package com.zanxiang.game.module.manage.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.zanxiang.game.module.manage.pojo.params.UserRechargeWhiteAddParam;
+import com.zanxiang.game.module.manage.pojo.params.UserRechargeWhiteListParam;
+import com.zanxiang.game.module.manage.pojo.vo.UserRechargeWhiteVO;
+import com.zanxiang.game.module.manage.service.IGameUserRoleService;
+import com.zanxiang.game.module.manage.service.IUserRechargeWhiteService;
+import com.zanxiang.game.module.manage.service.IUserService;
+import com.zanxiang.game.module.mybatis.entity.GameUserRole;
+import com.zanxiang.game.module.mybatis.entity.User;
+import com.zanxiang.game.module.mybatis.entity.UserRechargeWhite;
+import com.zanxiang.game.module.mybatis.mapper.UserRechargeWhiteMapper;
+import com.zanxiang.module.util.bean.BeanUtil;
+import com.zanxiang.module.util.exception.BaseException;
+import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.collections4.CollectionUtils;
+import org.apache.logging.log4j.util.Strings;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.time.LocalDateTime;
+import java.util.Collections;
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
+
+/**
+ * @author : lingfeng
+ * @time : 2025-05-13
+ * @description : 玩家充值白名单
+ */
+@Slf4j
+@Service
+public class UserRechargeWhiteServiceImpl extends ServiceImpl<UserRechargeWhiteMapper, UserRechargeWhite> implements IUserRechargeWhiteService {
+
+    @Autowired
+    private IUserService userService;
+
+    @Autowired
+    private IGameUserRoleService gameUserRoleService;
+
+    @Override
+    public Map<Long, String> rechargeWhiteGameMap() {
+        return Collections.singletonMap(36L, "仙剑Android通");
+    }
+
+    @Override
+    public boolean addRechargeWhite(UserRechargeWhiteAddParam param) {
+        //查询玩家
+        User user = userService.getOne(new LambdaQueryWrapper<User>()
+                .eq(User::getGameId, param.getGameId())
+                .and(qw -> qw.eq(User::getMobile, param.getAccount())
+                        .or().eq(User::getUsername, param.getAccount())
+                        .or().eq(User::getId, param.getAccount()))
+                .orderByDesc(User::getUpdateTime)
+                .apply("limit 1"));
+        if (user == null) {
+            throw new BaseException("添加玩家充值白名单失败, 玩家不存在");
+        }
+        //查询玩家是否已经添加
+        if (super.count(new LambdaQueryWrapper<UserRechargeWhite>()
+                .eq(UserRechargeWhite::getGameId, user.getGameId())
+                .eq(UserRechargeWhite::getUserId, user.getId())
+        ) > 0) {
+            throw new BaseException("玩家已在白名单中, 禁止重复添加");
+        }
+        //新建保存
+        return super.save(UserRechargeWhite.builder()
+                .userId(user.getId())
+                .gameId(user.getGameId())
+                .createTime(LocalDateTime.now())
+                .build());
+    }
+
+    @Override
+    public IPage<UserRechargeWhiteVO> listOfPage(UserRechargeWhiteListParam param) {
+        //玩家id列表
+        List<Long> userIdList = null;
+        //账号条件
+        if (Strings.isNotBlank(param.getAccount())) {
+            userIdList = userService.list(new LambdaQueryWrapper<User>()
+                    .eq(User::getGameId, param.getGameId())
+                    .and(qw -> qw.eq(User::getMobile, param.getAccount())
+                            .or().eq(User::getUsername, param.getAccount())
+                            .or().eq(User::getId, param.getAccount()))
+            ).stream().map(User::getId).collect(Collectors.toList());
+        }
+        //角色条件
+        if (Strings.isNotBlank(param.getRoleId()) || Strings.isNotBlank(param.getRoleName())) {
+            userIdList = gameUserRoleService.list(new LambdaQueryWrapper<GameUserRole>()
+                    .eq(GameUserRole::getGameId, param.getGameId())
+                    .in(CollectionUtils.isNotEmpty(userIdList), GameUserRole::getUserId, userIdList)
+                    .eq(Strings.isNotBlank(param.getRoleId()), GameUserRole::getRoleId, param.getRoleId())
+                    .like(Strings.isNotBlank(param.getRoleName()), GameUserRole::getRoleName, param.getRoleName())
+            ).stream().map(GameUserRole::getUserId).distinct().collect(Collectors.toList());
+        }
+        //分页查询
+        IPage<UserRechargeWhite> rechargeWhitePage = super.page(param.toPage(), new LambdaQueryWrapper<UserRechargeWhite>()
+                .eq(UserRechargeWhite::getGameId, param.getGameId())
+                .in(CollectionUtils.isNotEmpty(userIdList), UserRechargeWhite::getUserId, userIdList)
+        );
+        //对象转换
+        Page<UserRechargeWhiteVO> userRechargeWhiteVOPage = new Page<>(rechargeWhitePage.getCurrent(),
+                rechargeWhitePage.getSize(), rechargeWhitePage.getTotal());
+        userRechargeWhiteVOPage.setRecords(this.toBatchVO(rechargeWhitePage.getRecords()));
+        return userRechargeWhiteVOPage;
+    }
+
+    private List<UserRechargeWhiteVO> toBatchVO(List<UserRechargeWhite> userRechargeWhiteList) {
+        if (CollectionUtils.isEmpty(userRechargeWhiteList)) {
+            return Collections.emptyList();
+        }
+        //游戏列表
+        Map<Long, String> gameMap = this.rechargeWhiteGameMap();
+        //玩家列表
+        List<Long> userIdList = userRechargeWhiteList.stream().map(UserRechargeWhite::getUserId)
+                .distinct().collect(Collectors.toList());
+        Map<Long, User> userMap = userService.listByIds(userIdList).stream()
+                .collect(Collectors.toMap(User::getId, user -> user));
+        return userRechargeWhiteList.stream().map(userRechargeWhite -> {
+            UserRechargeWhiteVO userRechargeWhiteVO = BeanUtil.copy(userRechargeWhite, UserRechargeWhiteVO.class);
+            User user = userMap.get(userRechargeWhiteVO.getUserId());
+            userRechargeWhiteVO.setUsername(user.getUsername());
+            userRechargeWhiteVO.setMobile(user.getMobile());
+            userRechargeWhiteVO.setGameName(gameMap.get(userRechargeWhiteVO.getGameId()));
+            return userRechargeWhiteVO;
+        }).collect(Collectors.toList());
+    }
+
+    @Override
+    public boolean delRechargeWhite(Long id) {
+        return super.removeById(id);
+    }
+}

+ 48 - 0
game-module/game-module-mybatis/src/main/java/com/zanxiang/game/module/mybatis/entity/UserRechargeWhite.java

@@ -0,0 +1,48 @@
+package com.zanxiang.game.module.mybatis.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.*;
+
+import java.time.LocalDateTime;
+
+/**
+ * @author : lingfeng
+ * @time : 2025-05-13
+ * @description : 玩家充值白名单
+ */
+@Data
+@NoArgsConstructor
+@AllArgsConstructor
+@ToString
+@Builder
+@TableName("t_user_recharge_white")
+public class UserRechargeWhite {
+
+    /**
+     * 主键id
+     */
+    @TableId(value = "id", type = IdType.AUTO)
+    private Long id;
+
+    /**
+     * 玩家id
+     */
+    private Long userId;
+
+    /**
+     * 游戏id
+     */
+    private Long gameId;
+
+    /**
+     * 角色id
+     */
+    private String roleId;
+
+    /**
+     * 创建时间
+     */
+    private LocalDateTime createTime;
+}

+ 12 - 0
game-module/game-module-mybatis/src/main/java/com/zanxiang/game/module/mybatis/mapper/UserRechargeWhiteMapper.java

@@ -0,0 +1,12 @@
+package com.zanxiang.game.module.mybatis.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.zanxiang.game.module.mybatis.entity.UserRechargeWhite;
+
+/**
+ * @author : lingfeng
+ * @time : 2025-05-13
+ * @description : ${description}
+ */
+public interface UserRechargeWhiteMapper extends BaseMapper<UserRechargeWhite> {
+}

+ 12 - 0
game-module/game-module-sdk/src/main/java/com/zanxiang/game/module/sdk/service/IUserRechargeWhiteService.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.UserRechargeWhite;
+
+/**
+ * @author : lingfeng
+ * @time : 2025-05-13
+ * @description : 玩家充值白名单
+ */
+public interface IUserRechargeWhiteService extends IService<UserRechargeWhite> {
+}

+ 18 - 0
game-module/game-module-sdk/src/main/java/com/zanxiang/game/module/sdk/service/impl/UserRechargeWhiteServiceImpl.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.UserRechargeWhite;
+import com.zanxiang.game.module.mybatis.mapper.UserRechargeWhiteMapper;
+import com.zanxiang.game.module.sdk.service.IUserRechargeWhiteService;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.stereotype.Service;
+
+/**
+ * @author : lingfeng
+ * @time : 2025-05-13
+ * @description : 玩家充值白名单
+ */
+@Slf4j
+@Service
+public class UserRechargeWhiteServiceImpl extends ServiceImpl<UserRechargeWhiteMapper, UserRechargeWhite> implements IUserRechargeWhiteService {
+}