Kaynağa Gözat

feat : 游戏分类标签抽成单独得表

bilingfeng 2 yıl önce
ebeveyn
işleme
c847daafe1
17 değiştirilmiş dosya ile 579 ekleme ve 232 silme
  1. 10 8
      game-module/game-manage/src/main/java/com/zanxiang/manage/controller/ChoiceController.java
  2. 10 9
      game-module/game-manage/src/main/java/com/zanxiang/manage/controller/GameCategoryController.java
  3. 7 7
      game-module/game-manage/src/main/java/com/zanxiang/manage/domain/dto/GameCategoryDTO.java
  4. 40 0
      game-module/game-manage/src/main/java/com/zanxiang/manage/domain/params/GameTagAddUpdateParam.java
  5. 29 0
      game-module/game-manage/src/main/java/com/zanxiang/manage/domain/params/GameTagListParam.java
  6. 37 0
      game-module/game-manage/src/main/java/com/zanxiang/manage/domain/vo/GameCategoryChoiceVO.java
  7. 2 2
      game-module/game-manage/src/main/java/com/zanxiang/manage/domain/vo/GameInfoVO.java
  8. 37 0
      game-module/game-manage/src/main/java/com/zanxiang/manage/domain/vo/GameTagChoiceVO.java
  9. 69 0
      game-module/game-manage/src/main/java/com/zanxiang/manage/domain/vo/GameTagVO.java
  10. 4 41
      game-module/game-manage/src/main/java/com/zanxiang/manage/service/GameCategoryService.java
  11. 58 0
      game-module/game-manage/src/main/java/com/zanxiang/manage/service/GameTagService.java
  12. 9 154
      game-module/game-manage/src/main/java/com/zanxiang/manage/service/Impl/GameCategoryServiceImpl.java
  13. 7 5
      game-module/game-manage/src/main/java/com/zanxiang/manage/service/Impl/GameServiceImpl.java
  14. 169 0
      game-module/game-manage/src/main/java/com/zanxiang/manage/service/Impl/GameTagServiceImpl.java
  15. 6 6
      game-module/game-mybatis/src/main/java/com/zanxiang/mybatis/entity/GameCategory.java
  16. 73 0
      game-module/game-mybatis/src/main/java/com/zanxiang/mybatis/entity/GameTag.java
  17. 12 0
      game-module/game-mybatis/src/main/java/com/zanxiang/mybatis/mapper/GameTagMapper.java

+ 10 - 8
game-module/game-manage/src/main/java/com/zanxiang/manage/controller/ChoiceController.java

@@ -1,7 +1,6 @@
 package com.zanxiang.manage.controller;
 
 import com.zanxiang.common.domain.ResultVO;
-import com.zanxiang.common.enums.GameCategoryEnum;
 import com.zanxiang.common.enums.OsEnum;
 import com.zanxiang.common.enums.VipLevelEnum;
 import com.zanxiang.common.utils.bean.BeanUtils;
@@ -53,6 +52,9 @@ public class ChoiceController {
     @Autowired
     private PayMerchantService payMerchantService;
 
+    @Autowired
+    private GameTagService gameTagService;
+
     @ApiOperation(value = "vip等级选择列表")
     @GetMapping(value = "/vip/level/list")
     @PreAuthorize(permissionKey = "sdk:choiceVipLevel:list")
@@ -88,17 +90,17 @@ public class ChoiceController {
     @ApiOperation(value = "游戏应用类型选择列表")
     @GetMapping(value = "/game/category/list")
     @PreAuthorize(permissionKey = "sdk:gameCategoryChoice:list")
-    @ApiResponses(value = {@ApiResponse(code = 200, message = "成功", response = GameCategoryParentVO.class, responseContainer = "list")})
-    public ResultVO<List<GameCategoryParentVO>> gameCategoryChoiceList() {
-        return ResultVO.ok(gameCategoryService.getGameCategoryParent(GameCategoryEnum.GAME_TYPE.getCategoryType()));
+    @ApiResponses(value = {@ApiResponse(code = 200, message = "成功", response = GameCategoryChoiceVO.class, responseContainer = "list")})
+    public ResultVO<List<GameCategoryChoiceVO>> gameCategoryChoiceList() {
+        return ResultVO.ok(gameCategoryService.gameCategoryChoiceList());
     }
 
-    @ApiOperation(value = "游戏选择列表")
+    @ApiOperation(value = "游戏分类标签选择列表")
     @GetMapping(value = "/game/tags/list")
     @PreAuthorize(permissionKey = "sdk:gameTagsChoice:list")
-    @ApiResponses(value = {@ApiResponse(code = 200, message = "成功", response = GameCategoryParentVO.class, responseContainer = "list")})
-    public ResultVO<List<GameCategoryParentVO>> gameTagsChoiceList() {
-        return ResultVO.ok(gameCategoryService.getGameCategoryParent(GameCategoryEnum.GAME_LABEL.getCategoryType()));
+    @ApiResponses(value = {@ApiResponse(code = 200, message = "成功", response = GameTagChoiceVO.class, responseContainer = "list")})
+    public ResultVO<List<GameTagChoiceVO>> gameTagsChoiceList() {
+        return ResultVO.ok(gameTagService.gameTagsChoiceList());
     }
 
     @ApiOperation(value = "注册渠道选择列表")

+ 10 - 9
game-module/game-manage/src/main/java/com/zanxiang/manage/controller/GameCategoryController.java

@@ -3,10 +3,11 @@ package com.zanxiang.manage.controller;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.zanxiang.common.domain.ResultVO;
 import com.zanxiang.erp.security.annotation.PreAuthorize;
-import com.zanxiang.manage.domain.params.GameCategoryAddUpdateParam;
-import com.zanxiang.manage.domain.params.GameCategoryListParam;
+import com.zanxiang.manage.domain.params.GameTagAddUpdateParam;
+import com.zanxiang.manage.domain.params.GameTagListParam;
 import com.zanxiang.manage.domain.vo.GameCategoryVO;
-import com.zanxiang.manage.service.GameCategoryService;
+import com.zanxiang.manage.domain.vo.GameTagVO;
+import com.zanxiang.manage.service.GameTagService;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import io.swagger.annotations.ApiResponse;
@@ -28,22 +29,22 @@ import org.springframework.web.bind.annotation.*;
 public class GameCategoryController {
 
     @Autowired
-    private GameCategoryService gameCategoryService;
+    private GameTagService gameTagService;
 
     @ApiOperation(value = "查询游戏标签列表")
     @PostMapping(value = "/list")
     @PreAuthorize(permissionKey = "sdk:gameCategory:list")
     @ApiResponses(value = {@ApiResponse(code = 200, message = "成功", response = GameCategoryVO.class)})
-    public ResultVO<IPage<GameCategoryVO>> list(@Validated @RequestBody GameCategoryListParam param) {
-        return ResultVO.ok(gameCategoryService.list(param));
+    public ResultVO<IPage<GameTagVO>> list(@Validated @RequestBody GameTagListParam param) {
+        return ResultVO.ok(gameTagService.list(param));
     }
 
     @ApiOperation(value = "游戏标签分类添加或修改")
     @PostMapping(value = "/add/or/update")
     @PreAuthorize(permissionKey = "sdk:gameCategory:addOrUpdate")
     @ApiResponses(value = {@ApiResponse(code = 200, message = "成功", response = Boolean.class)})
-    public ResultVO<Boolean> addOrUpdate(@Validated @RequestBody GameCategoryAddUpdateParam param) {
-        return ResultVO.ok(gameCategoryService.addOrUpdate(param));
+    public ResultVO<Boolean> addOrUpdate(@Validated @RequestBody GameTagAddUpdateParam param) {
+        return ResultVO.ok(gameTagService.addOrUpdate(param));
     }
 
     @ApiOperation(value = "游戏标签分类删除")
@@ -51,6 +52,6 @@ public class GameCategoryController {
     @PreAuthorize(permissionKey = "sdk:gameCategory:deleteById")
     @ApiResponses(value = {@ApiResponse(code = 200, message = "成功", response = Boolean.class)})
     public ResultVO<Boolean> deleteById(@RequestParam Long id) {
-        return ResultVO.ok(gameCategoryService.deleteById(id));
+        return ResultVO.ok(gameTagService.deleteById(id));
     }
 }

+ 7 - 7
game-module/game-manage/src/main/java/com/zanxiang/manage/domain/dto/GameCategoryDTO.java

@@ -11,15 +11,10 @@ import lombok.Data;
 public class GameCategoryDTO {
 
     /**
-     * 游戏分类ID
+     * 主键id
      */
     private Long id;
 
-    /**
-     * 分类类型 1、游戏类型(微信小游戏/抖音小游戏/h5/app等) 2、游戏分类(策略游戏/卡牌游戏/)
-     */
-    private Integer type;
-
     /**
      * 标签名称
      */
@@ -31,7 +26,12 @@ public class GameCategoryDTO {
     private String remark;
 
     /**
-     * 父分类id(顶层游戏分类为0)
+     * 是否父应用类型
+     */
+    private Boolean isParent;
+
+    /**
+     * 父应用类型id
      */
     private Long parentId;
 

+ 40 - 0
game-module/game-manage/src/main/java/com/zanxiang/manage/domain/params/GameTagAddUpdateParam.java

@@ -0,0 +1,40 @@
+package com.zanxiang.manage.domain.params;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import javax.validation.constraints.NotBlank;
+
+/**
+ * @author : lingfeng
+ * @time : 2022-11-16
+ * @description : 游戏分类标签
+ */
+@Data
+public class GameTagAddUpdateParam {
+
+    /**
+     * id
+     */
+    @ApiModelProperty(notes = "id, 不传id为新增, 传id为修改")
+    private Long id;
+
+    /**
+     * 父标签id
+     */
+    @ApiModelProperty(notes = "父标签id")
+    private Long parentId;
+
+    /**
+     * 名称
+     */
+    @NotBlank(message = "标签分类名称不可为空")
+    @ApiModelProperty(notes = "名称")
+    private String name;
+
+    /**
+     * 标签描述
+     */
+    @ApiModelProperty(notes = "标签描述")
+    private String remark;
+}

+ 29 - 0
game-module/game-manage/src/main/java/com/zanxiang/manage/domain/params/GameTagListParam.java

@@ -0,0 +1,29 @@
+package com.zanxiang.manage.domain.params;
+
+import com.zanxiang.common.base.BasePage;
+import com.zanxiang.mybatis.entity.GameTag;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+/**
+ * @author : lingfeng
+ * @time : 2022-11-16
+ * @description : 游戏分类标签查询参数
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+public class GameTagListParam extends BasePage<GameTag> {
+
+    /**
+     * 标签名称
+     */
+    @ApiModelProperty(notes = "标签名称")
+    private String labelName;
+
+    /**
+     * 是否父标签
+     */
+    @ApiModelProperty(notes = "是否父标签")
+    private Boolean isParent;
+}

+ 37 - 0
game-module/game-manage/src/main/java/com/zanxiang/manage/domain/vo/GameCategoryChoiceVO.java

@@ -0,0 +1,37 @@
+package com.zanxiang.manage.domain.vo;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+ * @author : lingfeng
+ * @time : 2022-11-16
+ * @description : 游戏应用类型
+ */
+@Data
+public class GameCategoryChoiceVO {
+
+    /**
+     * 主键id
+     */
+    @ApiModelProperty(notes = "主键id")
+    private Long id;
+
+    /**
+     * 名称
+     */
+    @ApiModelProperty(notes = "名称")
+    private String name;
+
+    /**
+     * 是否父标签
+     */
+    @ApiModelProperty(notes = "是否父标签")
+    private Boolean isParent;
+
+    /**
+     * 父分类id
+     */
+    @ApiModelProperty(notes = "父分类id")
+    private Long parentId;
+}

+ 2 - 2
game-module/game-manage/src/main/java/com/zanxiang/manage/domain/vo/GameInfoVO.java

@@ -47,13 +47,13 @@ public class GameInfoVO {
      * 游戏分类id, 多个
      */
     @ApiModelProperty(notes = "游戏分类id, 多个")
-    private List<GameCategoryParentVO> classifyList;
+    private List<GameTagChoiceVO> classifyList;
 
     /**
      * 游戏应用类型Id
      */
     @ApiModelProperty(notes = "游戏应用类型Id")
-    private GameCategoryParentVO category;
+    private GameTagChoiceVO category;
 
     /**
      * 分成比例

+ 37 - 0
game-module/game-manage/src/main/java/com/zanxiang/manage/domain/vo/GameTagChoiceVO.java

@@ -0,0 +1,37 @@
+package com.zanxiang.manage.domain.vo;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+ * @author : lingfeng
+ * @time : 2022-11-16
+ * @description : 游戏分类标签
+ */
+@Data
+public class GameTagChoiceVO {
+
+    /**
+     * 主键id
+     */
+    @ApiModelProperty(notes = "主键id")
+    private Long id;
+
+    /**
+     * 名称
+     */
+    @ApiModelProperty(notes = "名称")
+    private String name;
+
+    /**
+     * 是否父标签
+     */
+    @ApiModelProperty(notes = "是否父标签")
+    private Boolean isParent;
+
+    /**
+     * 父分类id(顶层游戏分类为0)
+     */
+    @ApiModelProperty(notes = "是否父标签")
+    private Long parentId;
+}

+ 69 - 0
game-module/game-manage/src/main/java/com/zanxiang/manage/domain/vo/GameTagVO.java

@@ -0,0 +1,69 @@
+package com.zanxiang.manage.domain.vo;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.time.LocalDateTime;
+
+/**
+ * @author : lingfeng
+ * @time : 2022-11-16
+ * @description : 游戏分类标签
+ */
+@Data
+public class GameTagVO {
+
+    /**
+     * id
+     */
+    @ApiModelProperty(notes = "id")
+    private Long id;
+
+    /**
+     * 名称
+     */
+    @ApiModelProperty(notes = "名称")
+    private String name;
+
+    /**
+     * 父标签id
+     */
+    @ApiModelProperty(notes = "父标签id")
+    private Long parentId;
+
+    /**
+     * 父标签名称
+     */
+    @ApiModelProperty(notes = "父标签名称")
+    private String parentName;
+
+    /**
+     * 标签描述
+     */
+    @ApiModelProperty(notes = "标签描述")
+    private String remark;
+
+    /**
+     * 操作者id
+     */
+    @ApiModelProperty(notes = "操作者id")
+    private Long operatorId;
+
+    /**
+     * 操作者名字
+     */
+    @ApiModelProperty(notes = "操作者名字")
+    private String operatorName;
+
+    /**
+     * 创建时间
+     */
+    @ApiModelProperty(notes = "创建时间")
+    private LocalDateTime createTime;
+
+    /**
+     * 更新时间
+     */
+    @ApiModelProperty(notes = "更新时间")
+    private LocalDateTime updateTime;
+}

+ 4 - 41
game-module/game-manage/src/main/java/com/zanxiang/manage/service/GameCategoryService.java

@@ -1,11 +1,8 @@
 package com.zanxiang.manage.service;
 
-import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.zanxiang.manage.domain.dto.GameCategoryDTO;
-import com.zanxiang.manage.domain.params.GameCategoryAddUpdateParam;
-import com.zanxiang.manage.domain.params.GameCategoryListParam;
-import com.zanxiang.manage.domain.vo.GameCategoryParentVO;
+import com.zanxiang.manage.domain.vo.GameCategoryChoiceVO;
 import com.zanxiang.manage.domain.vo.GameCategoryVO;
 import com.zanxiang.mybatis.entity.GameCategory;
 
@@ -19,15 +16,6 @@ import java.util.Map;
  */
 public interface GameCategoryService extends IService<GameCategory> {
 
-    /**
-     * 根据主键id查询分类以及子分类
-     *
-     * @param idList : 主键id列表
-     * @param type   : 类型
-     * @return : 返回游戏分类信息
-     */
-    List<GameCategoryVO> listByIdList(List<Long> idList, Integer type);
-
     /**
      * 根据主键id查询
      *
@@ -37,12 +25,11 @@ public interface GameCategoryService extends IService<GameCategory> {
     GameCategoryVO getById(Long id);
 
     /**
-     * 查询所有父标签列表
+     * 查询所有应用类型列表
      *
-     * @param type : 标签分类
-     * @return : 返回所有父游戏标签
+     * @return : 返回所有应用类型
      */
-    List<GameCategoryParentVO> getGameCategoryParent(Integer type);
+    List<GameCategoryChoiceVO> gameCategoryChoiceList();
 
     /**
      * 查询游戏分类和标签
@@ -50,28 +37,4 @@ public interface GameCategoryService extends IService<GameCategory> {
      * @return : 返回所有游戏分类和标签
      */
     Map<Long, GameCategoryDTO> gameCategoryMap();
-
-    /**
-     * 查询游戏标签列表
-     *
-     * @param param : 游戏标签列表查询呢参数
-     * @return : 返回分页信息
-     */
-    IPage<GameCategoryVO> list(GameCategoryListParam param);
-
-    /**
-     * 游戏标签分类添加或修改
-     *
-     * @param param : 参数
-     * @return : 返回结果
-     */
-    Boolean addOrUpdate(GameCategoryAddUpdateParam param);
-
-    /**
-     * 根据主键id删除
-     *
-     * @param id : 主键id
-     * @return : 删除结果
-     */
-    Boolean deleteById(Long id);
 }

+ 58 - 0
game-module/game-manage/src/main/java/com/zanxiang/manage/service/GameTagService.java

@@ -0,0 +1,58 @@
+package com.zanxiang.manage.service;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.zanxiang.manage.domain.params.GameTagAddUpdateParam;
+import com.zanxiang.manage.domain.params.GameTagListParam;
+import com.zanxiang.manage.domain.vo.GameTagChoiceVO;
+import com.zanxiang.manage.domain.vo.GameTagVO;
+import com.zanxiang.mybatis.entity.GameTag;
+
+import java.util.List;
+
+/**
+ * @author : lingfeng
+ * @time : 2022-11-16
+ * @description : 游戏分类标签
+ */
+public interface GameTagService extends IService<GameTag> {
+
+    /**
+     * 根据主键id查询分类以及子分类
+     *
+     * @param ids : 主键id列表
+     * @return : 返回游戏分类信息
+     */
+    List<GameTagVO> listByIds(List<Long> ids);
+
+    /**
+     * 查询所有标签
+     *
+     * @return : 返回所有游戏标签
+     */
+    List<GameTagChoiceVO> gameTagsChoiceList();
+
+    /**
+     * 查询游戏标签列表
+     *
+     * @param param : 游戏标签列表查询呢参数
+     * @return : 返回分页信息
+     */
+    IPage<GameTagVO> list(GameTagListParam param);
+
+    /**
+     * 游戏标签分类添加或修改
+     *
+     * @param param : 参数
+     * @return : 返回结果
+     */
+    Boolean addOrUpdate(GameTagAddUpdateParam param);
+
+    /**
+     * 根据主键id删除
+     *
+     * @param id : 主键id
+     * @return : 删除结果
+     */
+    Boolean deleteById(Long id);
+}

+ 9 - 154
game-module/game-manage/src/main/java/com/zanxiang/manage/service/Impl/GameCategoryServiceImpl.java

@@ -1,57 +1,33 @@
 package com.zanxiang.manage.service.Impl;
 
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
-import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
-import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
-import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
-import com.zanxiang.common.enums.GameCategoryEnum;
-import com.zanxiang.common.exception.BaseException;
-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.dto.GameCategoryDTO;
-import com.zanxiang.manage.domain.params.GameCategoryAddUpdateParam;
-import com.zanxiang.manage.domain.params.GameCategoryListParam;
-import com.zanxiang.manage.domain.vo.GameCategoryParentVO;
+import com.zanxiang.manage.domain.vo.GameCategoryChoiceVO;
 import com.zanxiang.manage.domain.vo.GameCategoryVO;
 import com.zanxiang.manage.service.GameCategoryService;
 import com.zanxiang.mybatis.entity.GameCategory;
 import com.zanxiang.mybatis.mapper.GameCategoryMapper;
 import lombok.extern.slf4j.Slf4j;
-import org.apache.logging.log4j.util.Strings;
 import org.springframework.stereotype.Service;
 
-import java.time.LocalDateTime;
-import java.util.*;
+import java.util.Collections;
+import java.util.List;
+import java.util.Map;
 import java.util.function.Function;
 import java.util.stream.Collectors;
 
 /**
  * @author : lingfeng
  * @time : 2022-06-23
- * @description : 游戏分类标签管理
+ * @description : 游戏应用类型
  */
 @Slf4j
 @Service
 public class GameCategoryServiceImpl extends ServiceImpl<GameCategoryMapper, GameCategory> implements GameCategoryService {
 
-    /**
-     * 根据主键id查询分类以及子分类
-     *
-     * @param idList : 主键id列表
-     * @param type   : 类型
-     * @return : 返回游戏分类信息
-     */
-    @Override
-    public List<GameCategoryVO> listByIdList(List<Long> idList, Integer type) {
-        List<GameCategory> gameCategoryList = super.list(new LambdaQueryWrapper<GameCategory>()
-                .eq(GameCategory::getType, type)
-                .in(GameCategory::getId, idList));
-        return BeanUtils.copyList(gameCategoryList, GameCategoryVO.class);
-    }
-
     /**
      * 根据主键id查询
      *
@@ -64,24 +40,13 @@ public class GameCategoryServiceImpl extends ServiceImpl<GameCategoryMapper, Gam
     }
 
     /**
-     * 查询所有父标签列表
+     * 查询所有应用类型列表
      *
-     * @param type : 标签分类
-     * @return : 返回所有父游戏标签
+     * @return : 返回所有应用类型
      */
     @Override
-    public List<GameCategoryParentVO> getGameCategoryParent(Integer type) {
-        List<GameCategory> gameCategoryList = list(new LambdaQueryWrapper<GameCategory>()
-                .eq(GameCategory::getType, type)
-                .eq(Objects.equals(type, GameCategoryEnum.GAME_TYPE.getCategoryType()), GameCategory::getParentId, 0));
-        List<GameCategoryParentVO> voList = BeanUtils.copyList(gameCategoryList, GameCategoryParentVO.class);
-        for (GameCategoryParentVO vo : voList) {
-            if (Objects.equals(vo.getParentId(), 0L)) {
-                vo.setIsParent(Boolean.TRUE);
-                vo.setParentId(vo.getParentId());
-            }
-        }
-        return voList;
+    public List<GameCategoryChoiceVO> gameCategoryChoiceList() {
+        return BeanUtils.copyList(super.list(), GameCategoryChoiceVO.class);
     }
 
     /**
@@ -100,114 +65,4 @@ public class GameCategoryServiceImpl extends ServiceImpl<GameCategoryMapper, Gam
         return gameCategoryDTOList.stream().collect(Collectors.toMap(GameCategoryDTO::getId, Function.identity()));
     }
 
-    /**
-     * 查询游戏标签列表
-     *
-     * @param param : 游戏标签列表查询呢参数
-     * @return : 返回分页信息
-     */
-    @Override
-    public IPage<GameCategoryVO> list(GameCategoryListParam param) {
-        //模糊查询父标签列表
-        List<GameCategory> categoryList = new ArrayList<>();
-        if (Strings.isNotBlank(param.getLabelName()) && Objects.equals(param.getIsParent(), Boolean.TRUE)) {
-            categoryList = super.list(new LambdaQueryWrapper<GameCategory>()
-                    .like(GameCategory::getName, param.getLabelName())
-                    .eq(GameCategory::getParentId, 0)
-                    .eq(GameCategory::getType, GameCategoryEnum.GAME_LABEL.getCategoryType()));
-            //查询父标签, 但是却查不到, 直接返回空
-            if (categoryList.isEmpty()) {
-                return new Page<>(param.getPageNum(), param.getPageSize());
-            }
-        }
-        List<Long> parentIdList = categoryList.stream().map(GameCategory::getId).collect(Collectors.toList());
-        return page(param.toPage(), new QueryWrapper<GameCategory>().lambda()
-                //条件不为空没勾选父标签
-                .like(StringUtils.isNotBlank(param.getLabelName()) && !Objects.equals(param.getIsParent(), Boolean.TRUE),
-                        GameCategory::getName, param.getLabelName())
-                //条件为空查询所有父标签
-                .eq(StringUtils.isBlank(param.getLabelName()) && Objects.equals(param.getIsParent(), Boolean.TRUE),
-                        GameCategory::getParentId, 0)
-                //条件不为空查询父标签
-                .and(StringUtils.isNotBlank(param.getLabelName()) && Objects.equals(param.getIsParent(), Boolean.TRUE),
-                        qw -> qw.in(GameCategory::getParentId, parentIdList).or().like(GameCategory::getName, param.getLabelName()))
-                .eq(GameCategory::getType, GameCategoryEnum.GAME_LABEL.getCategoryType())
-                .orderByDesc(GameCategory::getCreateTime))
-                .convert(this::toVo);
-    }
-
-    /**
-     * 游戏标签对象转换
-     *
-     * @param gameCategory : 游戏标签信息
-     * @return : 返回游戏标签vo
-     */
-    private GameCategoryVO toVo(GameCategory gameCategory) {
-        if (Objects.isNull(gameCategory)) {
-            return null;
-        }
-        GameCategoryVO categoryVO = BeanUtils.copy(gameCategory, GameCategoryVO.class);
-        if (Objects.equals(categoryVO.getParentId(), 0L)) {
-            categoryVO.setParentName(categoryVO.getName());
-        } else {
-            GameCategory category = super.getById(categoryVO.getParentId());
-            if (category != null) {
-                categoryVO.setParentName(category.getName());
-            }
-        }
-        return categoryVO;
-    }
-
-    /**
-     * 游戏标签分类添加或修改
-     *
-     * @param param : 参数
-     * @return : 返回结果
-     */
-    @Override
-    public Boolean addOrUpdate(GameCategoryAddUpdateParam param) {
-        Long id = param.getId();
-        Long parentId = param.getParentId() == null ? 0 : param.getParentId();
-        //更新
-        if (id != null) {
-            GameCategory gameCategory = super.getById(id);
-            if (gameCategory == null) {
-                throw new BaseException("参数错误, 游戏分类标签信息不存在");
-            }
-            gameCategory.setParentId(parentId);
-            gameCategory.setName(param.getName());
-            gameCategory.setRemark(param.getRemark());
-            gameCategory.setUpdateTime(LocalDateTime.now());
-            return super.updateById(gameCategory);
-        }
-        //判断cp名称是否已经存在
-        int count = super.count(new LambdaQueryWrapper<GameCategory>()
-                .eq(GameCategory::getName, param.getName()));
-        if (count > 0) {
-            throw new BaseException("游戏分类标签名称已经存在");
-        }
-        //创建
-        return super.save(GameCategory.builder()
-                .type(GameCategoryEnum.GAME_LABEL.getCategoryType())
-                .name(param.getName())
-                .remark(param.getRemark())
-                .parentId(parentId)
-                .operatorId(SecurityUtil.getUserId())
-                .operatorName(SecurityUtil.getTokenInfo().getNickname())
-                .createTime(LocalDateTime.now())
-                .updateTime(LocalDateTime.now())
-                .build());
-    }
-
-    /**
-     * 根据主键id删除
-     *
-     * @param id : 主键id
-     * @return : 删除结果
-     */
-    @Override
-    public Boolean deleteById(Long id) {
-        return super.removeById(id);
-    }
-
 }

+ 7 - 5
game-module/game-manage/src/main/java/com/zanxiang/manage/service/Impl/GameServiceImpl.java

@@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
-import com.zanxiang.common.enums.GameCategoryEnum;
 import com.zanxiang.common.enums.GameStatusEnum;
 import com.zanxiang.common.utils.bean.BeanUtils;
 import com.zanxiang.manage.domain.dto.GameCategoryDTO;
@@ -48,6 +47,9 @@ public class GameServiceImpl extends ServiceImpl<GameMapper, Game> implements Ga
     @Autowired
     private GameCategoryService gameCategoryService;
 
+    @Autowired
+    private GameTagService gameTagService;
+
     @Autowired
     private CpService cpService;
 
@@ -249,12 +251,12 @@ public class GameServiceImpl extends ServiceImpl<GameMapper, Game> implements Ga
         if (Strings.isNotBlank(game.getClassify())) {
             String[] split = game.getClassify().split(",");
             List<Long> idList = Arrays.stream(split).map(Long::valueOf).collect(Collectors.toList());
-            List<GameCategoryVO> gameCategoryList = gameCategoryService.listByIdList(idList, GameCategoryEnum.GAME_LABEL.getCategoryType());
-            gameInfoVO.setClassifyList(BeanUtils.copyList(gameCategoryList, GameCategoryParentVO.class));
+            List<GameTagVO> gameTagVOList = gameTagService.listByIds(idList);
+            gameInfoVO.setClassifyList(BeanUtils.copyList(gameTagVOList, GameTagChoiceVO.class));
         }
         if (game.getCategory() != null) {
             GameCategoryVO gameCategoryVO = gameCategoryService.getById(game.getCategory());
-            gameInfoVO.setCategory(BeanUtils.copy(gameCategoryVO, GameCategoryParentVO.class));
+            gameInfoVO.setCategory(BeanUtils.copy(gameCategoryVO, GameTagChoiceVO.class));
         }
         //是否主游戏
         gameInfoVO.setIsParentGame(Objects.equals(gameInfoVO.getParentId(), 0L));
@@ -368,7 +370,7 @@ public class GameServiceImpl extends ServiceImpl<GameMapper, Game> implements Ga
         if (CollectionUtils.isEmpty(classifyList)) {
             return Collections.emptyMap();
         }
-        List<GameCategoryVO> gameCategoryVOList = gameCategoryService.listByIdList(classifyList, GameCategoryEnum.GAME_LABEL.getCategoryType());
+        List<GameTagVO> gameCategoryVOList = gameTagService.listByIds(classifyList);
         Set<Long> classifySet = new HashSet<>();
         Set<Long> classifyParentSet = new HashSet<>();
         gameCategoryVOList.forEach(vo -> {

+ 169 - 0
game-module/game-manage/src/main/java/com/zanxiang/manage/service/Impl/GameTagServiceImpl.java

@@ -0,0 +1,169 @@
+package com.zanxiang.manage.service.Impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.zanxiang.common.exception.BaseException;
+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.GameTagAddUpdateParam;
+import com.zanxiang.manage.domain.params.GameTagListParam;
+import com.zanxiang.manage.domain.vo.GameTagChoiceVO;
+import com.zanxiang.manage.domain.vo.GameTagVO;
+import com.zanxiang.manage.service.GameTagService;
+import com.zanxiang.mybatis.entity.GameTag;
+import com.zanxiang.mybatis.mapper.GameTagMapper;
+import lombok.extern.slf4j.Slf4j;
+import org.apache.logging.log4j.util.Strings;
+import org.springframework.stereotype.Service;
+
+import java.time.LocalDateTime;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
+import java.util.Objects;
+import java.util.stream.Collectors;
+
+/**
+ * @author : lingfeng
+ * @time : 2022-11-16
+ * @description : 游戏分类标签
+ */
+@Slf4j
+@Service
+public class GameTagServiceImpl extends ServiceImpl<GameTagMapper, GameTag> implements GameTagService {
+
+    /**
+     * 根据主键id查询分类以及子分类
+     *
+     * @param ids : 主键id列表
+     * @return : 返回游戏分类信息
+     */
+    @Override
+    public List<GameTagVO> listByIds(List<Long> ids) {
+        if (CollectionUtils.isEmpty(ids)) {
+            return Collections.emptyList();
+        }
+        return BeanUtils.copyList(super.listByIds(ids), GameTagVO.class);
+    }
+
+    /**
+     * 标签选择列表查询
+     *
+     * @return : 返回所有游戏标签
+     */
+    @Override
+    public List<GameTagChoiceVO> gameTagsChoiceList() {
+        return BeanUtils.copyList(super.list(), GameTagChoiceVO.class);
+    }
+
+    /**
+     * 查询游戏标签列表
+     *
+     * @param param : 游戏标签列表查询呢参数
+     * @return : 返回分页信息
+     */
+    @Override
+    public IPage<GameTagVO> list(GameTagListParam param) {
+        //模糊查询父标签列表
+        List<GameTag> categoryList = new ArrayList<>();
+        if (Strings.isNotBlank(param.getLabelName()) && Objects.equals(param.getIsParent(), Boolean.TRUE)) {
+            categoryList = super.list(new LambdaQueryWrapper<GameTag>()
+                    .like(GameTag::getName, param.getLabelName())
+                    .eq(GameTag::getIsParent, Boolean.TRUE));
+            //查询父标签, 但是却查不到, 直接返回空
+            if (categoryList.isEmpty()) {
+                return new Page<>(param.getPageNum(), param.getPageSize());
+            }
+        }
+        List<Long> parentIdList = categoryList.stream().map(GameTag::getId).collect(Collectors.toList());
+        return page(param.toPage(), new QueryWrapper<GameTag>().lambda()
+                //条件不为空没勾选父标签
+                .like(StringUtils.isNotBlank(param.getLabelName()) && !Objects.equals(param.getIsParent(), Boolean.TRUE),
+                        GameTag::getName, param.getLabelName())
+                //条件为空查询所有父标签
+                .eq(StringUtils.isBlank(param.getLabelName()) && Objects.equals(param.getIsParent(), Boolean.TRUE),
+                        GameTag::getIsParent, Boolean.TRUE)
+                //条件不为空查询父标签
+                .and(StringUtils.isNotBlank(param.getLabelName()) && Objects.equals(param.getIsParent(), Boolean.TRUE),
+                        qw -> qw.in(GameTag::getParentId, parentIdList).or().like(GameTag::getName, param.getLabelName()))
+                .orderByDesc(GameTag::getCreateTime))
+                .convert(this::toVo);
+    }
+
+    /**
+     * 游戏分类标签对象转换
+     *
+     * @param gameTag : 游戏分类标签信息
+     * @return : 返回游戏标签
+     */
+    private GameTagVO toVo(GameTag gameTag) {
+        if (Objects.isNull(gameTag)) {
+            return null;
+        }
+        GameTagVO gameTagVO = BeanUtils.copy(gameTag, GameTagVO.class);
+        if (Objects.equals(gameTag.getIsParent(), Boolean.TRUE)) {
+            gameTagVO.setParentName(gameTagVO.getName());
+        } else {
+            GameTag parentGameTag = super.getById(gameTag.getParentId());
+            if (parentGameTag != null) {
+                gameTagVO.setParentName(parentGameTag.getName());
+            }
+        }
+        return gameTagVO;
+    }
+
+    /**
+     * 游戏标签分类添加或修改
+     *
+     * @param param : 参数
+     * @return : 返回结果
+     */
+    @Override
+    public Boolean addOrUpdate(GameTagAddUpdateParam param) {
+        Long id = param.getId();
+        //更新
+        if (id != null) {
+            GameTag gameTag = super.getById(id);
+            if (gameTag == null) {
+                throw new BaseException("参数错误, 游戏分类标签信息不存在");
+            }
+            gameTag.setParentId(param.getParentId());
+            gameTag.setName(param.getName());
+            gameTag.setRemark(param.getRemark());
+            gameTag.setUpdateTime(LocalDateTime.now());
+            return super.updateById(gameTag);
+        }
+        //判断cp名称是否已经存在
+        int count = super.count(new LambdaQueryWrapper<GameTag>()
+                .eq(GameTag::getName, param.getName()));
+        if (count > 0) {
+            throw new BaseException("游戏分类标签名称已经存在");
+        }
+        //创建
+        return super.save(GameTag.builder()
+                .name(param.getName())
+                .remark(param.getRemark())
+                .parentId(param.getParentId())
+                .operatorId(SecurityUtil.getUserId())
+                .operatorName(SecurityUtil.getTokenInfo().getNickname())
+                .createTime(LocalDateTime.now())
+                .updateTime(LocalDateTime.now())
+                .build());
+    }
+
+    /**
+     * 根据主键id删除
+     *
+     * @param id : 主键id
+     * @return : 删除结果
+     */
+    @Override
+    public Boolean deleteById(Long id) {
+        return super.removeById(id);
+    }
+}

+ 6 - 6
game-module/game-mybatis/src/main/java/com/zanxiang/mybatis/entity/GameCategory.java

@@ -24,11 +24,6 @@ public class GameCategory {
     @TableId(value = "id", type = IdType.AUTO)
     private Long id;
 
-    /**
-     * 分类类型 1、游戏类型(微信小游戏/抖音小游戏/h5/app等) 2、游戏分类(策略游戏/卡牌游戏/)
-     */
-    private Integer type;
-
     /**
      * 标签名称
      */
@@ -41,7 +36,12 @@ public class GameCategory {
     private String remark;
 
     /**
-     * 父分类id(顶层游戏分类为0)
+     * 是否父应用类型
+     */
+    private Boolean isParent;
+
+    /**
+     * 父应用类型id
      */
     private Long parentId;
 

+ 73 - 0
game-module/game-mybatis/src/main/java/com/zanxiang/mybatis/entity/GameTag.java

@@ -0,0 +1,73 @@
+package com.zanxiang.mybatis.entity;
+
+import com.baomidou.mybatisplus.annotation.*;
+import lombok.*;
+
+import java.time.LocalDateTime;
+
+/**
+ * @author : lingfeng
+ * @time : 2022-11-16
+ * @description : 游戏分类标签
+ */
+@Data
+@NoArgsConstructor
+@AllArgsConstructor
+@ToString
+@Builder
+@TableName("t_game_tag")
+public class GameTag {
+
+    /**
+     * 主键id
+     */
+    @TableId(value = "id", type = IdType.AUTO)
+    private Long id;
+
+    /**
+     * 名称
+     */
+    private String name;
+
+    /**
+     * 描述
+     */
+    @TableField(updateStrategy = FieldStrategy.IGNORED)
+    private String remark;
+
+    /**
+     * 是否父标签
+     */
+    private Boolean isParent;
+
+    /**
+     * 父分类id
+     */
+    private Long parentId;
+
+    /**
+     * 操作者id
+     */
+    private Long operatorId;
+
+    /**
+     * 操作者名称
+     */
+    private String operatorName;
+
+    /**
+     * 0: 正常, 1:删除
+     */
+    @TableLogic
+    private Integer isDelete;
+
+    /**
+     * 创建时间
+     */
+    private LocalDateTime createTime;
+
+    /**
+     * 更新时间
+     */
+    private LocalDateTime updateTime;
+}

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

@@ -0,0 +1,12 @@
+package com.zanxiang.mybatis.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.zanxiang.mybatis.entity.GameTag;
+
+/**
+ * @author : lingfeng
+ * @time : 2022-11-16
+ * @description : ${description}
+ */
+public interface GameTagMapper extends BaseMapper<GameTag> {
+}