Prechádzať zdrojové kódy

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

zhimo 1 rok pred
rodič
commit
172757c183
69 zmenil súbory, kde vykonal 1351 pridanie a 207 odobranie
  1. 0 17
      game-data/game-data-base/src/main/java/com/zangxiang/game/base/pojo/vo/SendMsgVo.java
  2. 12 8
      game-data/game-data-serve/src/main/java/com/zanxiang/game/data/serve/controller/AdsGameServerController.java
  3. 3 4
      game-data/game-data-serve/src/main/java/com/zanxiang/game/data/serve/controller/RoleManageController.java
  4. 68 0
      game-data/game-data-serve/src/main/java/com/zanxiang/game/data/serve/pojo/dto/GSGameServerDayDTO.java
  5. 14 0
      game-data/game-data-serve/src/main/java/com/zanxiang/game/data/serve/pojo/dto/GameDto.java
  6. 0 3
      game-data/game-data-serve/src/main/java/com/zanxiang/game/data/serve/pojo/dto/MsgTaskDto.java
  7. 7 0
      game-data/game-data-serve/src/main/java/com/zanxiang/game/data/serve/pojo/dto/SendMsgTaskDto.java
  8. 1 0
      game-data/game-data-serve/src/main/java/com/zanxiang/game/data/serve/pojo/vo/FlowMonitorCountVo.java
  9. 368 0
      game-data/game-data-serve/src/main/java/com/zanxiang/game/data/serve/pojo/vo/GSGameServerDayVO.java
  10. 6 0
      game-data/game-data-serve/src/main/java/com/zanxiang/game/data/serve/service/IGameServerService.java
  11. 1 1
      game-data/game-data-serve/src/main/java/com/zanxiang/game/data/serve/service/IRoleManageService.java
  12. 11 0
      game-data/game-data-serve/src/main/java/com/zanxiang/game/data/serve/service/impl/GameServerServiceImpl.java
  13. 64 45
      game-data/game-data-serve/src/main/java/com/zanxiang/game/data/serve/service/impl/RoleManageServiceImpl.java
  14. 0 1
      game-module/game-module-base/src/main/java/com/zanxiang/game/module/base/pojo/dto/SendMsgDto.java
  15. 22 0
      game-module/game-module-base/src/main/java/com/zanxiang/game/module/base/pojo/params/SendMsgTaskParam.java
  16. 79 0
      game-module/game-module-base/src/main/java/com/zanxiang/game/module/base/pojo/vo/SendMsgVo.java
  17. 10 0
      game-module/game-module-base/src/main/java/com/zanxiang/game/module/base/rpc/ICPSendMsgRpc.java
  18. 45 0
      game-module/game-module-base/src/main/java/com/zanxiang/game/module/base/util/PageUtil.java
  19. 1 1
      game-module/game-module-manage/src/main/java/com/zanxiang/game/module/manage/ManageApplication.java
  20. 3 3
      game-module/game-module-manage/src/main/java/com/zanxiang/game/module/manage/controller/RoleAssignController.java
  21. 2 6
      game-module/game-module-manage/src/main/java/com/zanxiang/game/module/manage/controller/RoleGiftController.java
  22. 0 6
      game-module/game-module-manage/src/main/java/com/zanxiang/game/module/manage/controller/RoleMailController.java
  23. 29 0
      game-module/game-module-manage/src/main/java/com/zanxiang/game/module/manage/enums/CpSendRoleResultEnum.java
  24. 24 0
      game-module/game-module-manage/src/main/java/com/zanxiang/game/module/manage/pojo/dto/CpSendMsgResultDTO.java
  25. 0 1
      game-module/game-module-manage/src/main/java/com/zanxiang/game/module/manage/pojo/params/GameAdPolicyBatchStartParam.java
  26. 0 1
      game-module/game-module-manage/src/main/java/com/zanxiang/game/module/manage/pojo/params/GameGiftAddParam.java
  27. 0 2
      game-module/game-module-manage/src/main/java/com/zanxiang/game/module/manage/pojo/params/GamePolicyConfigListParam.java
  28. 0 1
      game-module/game-module-manage/src/main/java/com/zanxiang/game/module/manage/pojo/params/GameVipAddParam.java
  29. 0 3
      game-module/game-module-manage/src/main/java/com/zanxiang/game/module/manage/pojo/params/GameVipListParam.java
  30. 0 3
      game-module/game-module-manage/src/main/java/com/zanxiang/game/module/manage/pojo/params/RoleAssignRecordAddParam.java
  31. 0 2
      game-module/game-module-manage/src/main/java/com/zanxiang/game/module/manage/pojo/params/RoleAssignRecordListParam.java
  32. 0 1
      game-module/game-module-manage/src/main/java/com/zanxiang/game/module/manage/pojo/params/RoleGiftRecordListParam.java
  33. 0 1
      game-module/game-module-manage/src/main/java/com/zanxiang/game/module/manage/pojo/params/RoleInfoParam.java
  34. 0 1
      game-module/game-module-manage/src/main/java/com/zanxiang/game/module/manage/pojo/params/RoleMailRecordAddParam.java
  35. 0 4
      game-module/game-module-manage/src/main/java/com/zanxiang/game/module/manage/pojo/params/RoleOperateParam.java
  36. 0 1
      game-module/game-module-manage/src/main/java/com/zanxiang/game/module/manage/pojo/params/RoleSysUserAssignParam.java
  37. 14 36
      game-module/game-module-manage/src/main/java/com/zanxiang/game/module/manage/rpc/impl/CpSendMsgRpcImpl.java
  38. 22 0
      game-module/game-module-manage/src/main/java/com/zanxiang/game/module/manage/service/ICPSendMsgTaskService.java
  39. 24 0
      game-module/game-module-manage/src/main/java/com/zanxiang/game/module/manage/service/ICpSendMsgLogService.java
  40. 12 0
      game-module/game-module-manage/src/main/java/com/zanxiang/game/module/manage/service/ICpSendMsgResultService.java
  41. 1 1
      game-module/game-module-manage/src/main/java/com/zanxiang/game/module/manage/service/IGameGiftService.java
  42. 2 4
      game-module/game-module-manage/src/main/java/com/zanxiang/game/module/manage/service/IRoleAssignRecordService.java
  43. 1 1
      game-module/game-module-manage/src/main/java/com/zanxiang/game/module/manage/service/IRoleGiftRecordService.java
  44. 1 1
      game-module/game-module-manage/src/main/java/com/zanxiang/game/module/manage/service/IRoleMailRecordService.java
  45. 82 0
      game-module/game-module-manage/src/main/java/com/zanxiang/game/module/manage/service/impl/CPSendMsgTaskServiceImpl.java
  46. 50 9
      game-module/game-module-manage/src/main/java/com/zanxiang/game/module/manage/service/impl/CpCallServiceImpl.java
  47. 173 0
      game-module/game-module-manage/src/main/java/com/zanxiang/game/module/manage/service/impl/CpSendMsgLogServiceImpl.java
  48. 18 0
      game-module/game-module-manage/src/main/java/com/zanxiang/game/module/manage/service/impl/CpSendMsgResultServiceImpl.java
  49. 2 3
      game-module/game-module-manage/src/main/java/com/zanxiang/game/module/manage/service/impl/GameGiftServiceImpl.java
  50. 0 1
      game-module/game-module-manage/src/main/java/com/zanxiang/game/module/manage/service/impl/GameSupperServiceImpl.java
  51. 2 3
      game-module/game-module-manage/src/main/java/com/zanxiang/game/module/manage/service/impl/RoleAssignRecordServiceImpl.java
  52. 4 4
      game-module/game-module-manage/src/main/java/com/zanxiang/game/module/manage/service/impl/RoleGiftRecordServiceImpl.java
  53. 2 5
      game-module/game-module-manage/src/main/java/com/zanxiang/game/module/manage/service/impl/RoleMailRecordServiceImpl.java
  54. 66 0
      game-module/game-module-mybatis/src/main/java/com/zanxiang/game/module/mybatis/entity/CpSendMsgLog.java
  55. 66 0
      game-module/game-module-mybatis/src/main/java/com/zanxiang/game/module/mybatis/entity/CpSendMsgResult.java
  56. 1 1
      game-module/game-module-mybatis/src/main/java/com/zanxiang/game/module/mybatis/entity/GameAdMonitor.java
  57. 2 3
      game-module/game-module-mybatis/src/main/java/com/zanxiang/game/module/mybatis/entity/GameGift.java
  58. 1 2
      game-module/game-module-mybatis/src/main/java/com/zanxiang/game/module/mybatis/entity/GameVip.java
  59. 1 3
      game-module/game-module-mybatis/src/main/java/com/zanxiang/game/module/mybatis/entity/RoleAssignRecord.java
  60. 2 3
      game-module/game-module-mybatis/src/main/java/com/zanxiang/game/module/mybatis/entity/RoleGiftRecord.java
  61. 2 3
      game-module/game-module-mybatis/src/main/java/com/zanxiang/game/module/mybatis/entity/RoleMailRecord.java
  62. 1 3
      game-module/game-module-mybatis/src/main/java/com/zanxiang/game/module/mybatis/entity/RoleOperate.java
  63. 12 0
      game-module/game-module-mybatis/src/main/java/com/zanxiang/game/module/mybatis/mapper/CpSendMsgLogMapper.java
  64. 12 0
      game-module/game-module-mybatis/src/main/java/com/zanxiang/game/module/mybatis/mapper/CpSendMsgResultMapper.java
  65. 1 1
      game-module/game-module-mybatis/src/main/java/com/zanxiang/game/module/mybatis/mapper/GameGiftMapper.java
  66. 1 1
      game-module/game-module-mybatis/src/main/java/com/zanxiang/game/module/mybatis/mapper/RoleAssignRecordMapper.java
  67. 1 1
      game-module/game-module-mybatis/src/main/java/com/zanxiang/game/module/mybatis/mapper/RoleGiftRecordMapper.java
  68. 1 1
      game-module/game-module-mybatis/src/main/java/com/zanxiang/game/module/mybatis/mapper/RoleMailRecordMapper.java
  69. 1 1
      game-module/game-module-mybatis/src/main/java/com/zanxiang/game/module/mybatis/mapper/RoleOperateMapper.java

+ 0 - 17
game-data/game-data-base/src/main/java/com/zangxiang/game/base/pojo/vo/SendMsgVo.java

@@ -1,17 +0,0 @@
-package com.zangxiang.game.base.pojo.vo;
-
-import lombok.Data;
-
-import java.io.Serializable;
-import java.util.List;
-
-@Data
-public class SendMsgVo implements Serializable {
-
-    private static final long serialVersionUID = 1L;
-
-
-
-
-
-}

+ 12 - 8
game-data/game-data-serve/src/main/java/com/zanxiang/game/data/serve/controller/AdsGameServerController.java

@@ -1,14 +1,8 @@
 package com.zanxiang.game.data.serve.controller;
 
 import com.zanxiang.erp.security.annotation.PreAuthorize;
-import com.zanxiang.game.data.serve.pojo.dto.GameServerDayDTO;
-import com.zanxiang.game.data.serve.pojo.dto.GameServerDayTotalDTO;
-import com.zanxiang.game.data.serve.pojo.dto.GameServerSumDayDTO;
-import com.zanxiang.game.data.serve.pojo.dto.GameServerSumDayTotalDTO;
-import com.zanxiang.game.data.serve.pojo.vo.GameServerDayTotalVO;
-import com.zanxiang.game.data.serve.pojo.vo.GameServerDayVO;
-import com.zanxiang.game.data.serve.pojo.vo.GameServerSumDayTotalVO;
-import com.zanxiang.game.data.serve.pojo.vo.GameServerSumDayVO;
+import com.zanxiang.game.data.serve.pojo.dto.*;
+import com.zanxiang.game.data.serve.pojo.vo.*;
 import com.zanxiang.game.data.serve.service.IGameServerService;
 import com.zanxiang.game.data.serve.utils.Page;
 import com.zanxiang.module.util.pojo.ResultVO;
@@ -63,4 +57,14 @@ public class AdsGameServerController {
         return ResultVO.ok(gameServerService.getGameServerDataSumDayTotal(dto));
     }
 
+    @ApiOperation(value = "GS区服数据")
+    @PreAuthorize(permissionKey = "gameServer:GSAdsGameServerDay:day")
+    @PostMapping("/gs/day")
+    public ResultVO<Page<GSGameServerDayVO>> getGSGameServerDataDay(@RequestBody GSGameServerDayDTO dto) {
+        return ResultVO.ok(gameServerService.getGSGameServerDataDay(dto));
+    }
+
+
+
+
 }

+ 3 - 4
game-data/game-data-serve/src/main/java/com/zanxiang/game/data/serve/controller/RoleManageController.java

@@ -1,6 +1,6 @@
 package com.zanxiang.game.data.serve.controller;
 
-import com.zangxiang.game.base.pojo.vo.SendMsgVo;
+import com.zanxiang.game.module.base.pojo.vo.SendMsgVo;
 import com.zanxiang.erp.security.annotation.PreAuthorize;
 import com.zanxiang.game.data.serve.pojo.dto.MsgTaskDto;
 import com.zanxiang.game.data.serve.pojo.dto.RoleCombatRankingDTO;
@@ -13,7 +13,6 @@ import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.beans.factory.annotation.Value;
 import org.springframework.web.bind.annotation.PostMapping;
 import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.bind.annotation.RequestMapping;
@@ -50,11 +49,11 @@ public class RoleManageController {
     }
 
     @ApiOperation(value = "创建发送消息任务")
-//    @PreAuthorize(permissionKey = "roleManage:sendMsgTask:create")
+    @PreAuthorize(permissionKey = "roleManage:sendMsgTask:create")
     @PostMapping("/sendMsgTask")
     public ResultVO createSendMsgTask(@RequestBody SendMsgTaskDto dto) {
         roleManageService.createSendMsgTask(dto);
-        return ResultVO.ok();
+        return ResultVO.ok("操作成功", true);
     }
 
     @ApiOperation(value = "查询发送消息任务列表")

+ 68 - 0
game-data/game-data-serve/src/main/java/com/zanxiang/game/data/serve/pojo/dto/GSGameServerDayDTO.java

@@ -0,0 +1,68 @@
+package com.zanxiang.game.data.serve.pojo.dto;
+
+import com.zanxiang.game.data.serve.pojo.base.BasePage;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.time.LocalDate;
+import java.util.List;
+
+/**
+ * @author ZhangXianyu
+ * @description: 游戏区服列表条件类
+ * @date 2024-03-14 19:06:50
+ */
+@Data
+public class GSGameServerDayDTO extends BasePage implements Serializable {
+
+    /**
+     * 游戏维度:1-子游戏维度;2-父游戏维度;3-超父游戏维度
+     */
+    @ApiModelProperty(notes = "游戏维度:1-子游戏维度;2-父游戏维度")
+    private Integer gameDimension = 1;
+
+    /**
+     * 游戏id
+     */
+    @ApiModelProperty(value = "游戏id")
+    private List<Long> gameId;
+
+    /**
+     * GS id
+     */
+    @ApiModelProperty(value = "GS id")
+    private List<Long> gsId;
+
+    /**
+     * 区服名称
+     */
+    @ApiModelProperty(value = "区服名称")
+    private String serverName;
+
+    /**
+     * 区服id
+     */
+    @ApiModelProperty(value = "区服id")
+    private Long serverId;
+
+    /**
+     * 开服时间
+     */
+    @ApiModelProperty(value = "开服时间(起始)")
+    private LocalDate beginDate;
+
+    /**
+     * 开服时间
+     */
+    @ApiModelProperty(value = "开服时间(结束)")
+    private LocalDate endDate;
+
+    /**
+     * 开服天数
+     */
+    @ApiModelProperty(value = "开服天数")
+    private Integer day;
+
+}

+ 14 - 0
game-data/game-data-serve/src/main/java/com/zanxiang/game/data/serve/pojo/dto/GameDto.java

@@ -0,0 +1,14 @@
+package com.zanxiang.game.data.serve.pojo.dto;
+
+import lombok.Data;
+
+@Data
+public class GameDto {
+
+
+    private Integer id;
+
+    private Integer parentId;
+
+    private String gameName;
+}

+ 0 - 3
game-data/game-data-serve/src/main/java/com/zanxiang/game/data/serve/pojo/dto/MsgTaskDto.java

@@ -1,7 +1,6 @@
 package com.zanxiang.game.data.serve.pojo.dto;
 
 import com.zanxiang.game.data.serve.pojo.base.BasePage;
-import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 
@@ -11,6 +10,4 @@ public class MsgTaskDto extends BasePage {
     @ApiModelProperty(value = "游戏id")
     private Long gameId;
 
-    @ApiModelProperty(value = "游戏名称")
-    private String gameName;
 }

+ 7 - 0
game-data/game-data-serve/src/main/java/com/zanxiang/game/data/serve/pojo/dto/SendMsgTaskDto.java

@@ -4,6 +4,9 @@ package com.zanxiang.game.data.serve.pojo.dto;
 import com.zanxiang.game.data.serve.pojo.enums.TaskStrategyEnum;
 import lombok.Data;
 
+import javax.validation.constraints.NotBlank;
+import javax.validation.constraints.NotEmpty;
+import javax.validation.constraints.NotNull;
 import java.io.Serializable;
 import java.time.LocalDate;
 import java.util.List;
@@ -19,16 +22,19 @@ public class SendMsgTaskDto  implements Serializable {
     /**
      * 任务名称
      */
+    @NotBlank(message = "任务名称不能为空")
     private String taskName;
 
     /**
      * 游戏id
      */
+    @NotNull(message = "游戏id不能为空")
     private Long gameId;
 
     /**
      * 发送文本内容
      */
+    @NotBlank(message = "发送文本内容不能为空")
     private String sendContent;
     /**
      * 任务条件
@@ -38,6 +44,7 @@ public class SendMsgTaskDto  implements Serializable {
     /**
      * 角色id
      */
+    @NotEmpty(message = "角色id不能为空")
     private List<String> roleIds;
 
 

+ 1 - 0
game-data/game-data-serve/src/main/java/com/zanxiang/game/data/serve/pojo/vo/FlowMonitorCountVo.java

@@ -32,4 +32,5 @@ public class FlowMonitorCountVo implements Serializable {
     private Double recoveryCount = 0.0;
 
 
+
 }

+ 368 - 0
game-data/game-data-serve/src/main/java/com/zanxiang/game/data/serve/pojo/vo/GSGameServerDayVO.java

@@ -0,0 +1,368 @@
+package com.zanxiang.game.data.serve.pojo.vo;
+
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.time.LocalDate;
+
+/**
+ * @author ZhangXianyu
+ * @description: 游戏区服列表数据
+ * @date 2024-03-14 19:06:50
+ */
+@Data
+public class GSGameServerDayVO implements Serializable {
+    private static final long serialVersionUID = 1L;
+
+
+    @ApiModelProperty(value = "游戏名称")
+    private String gameName;
+
+    @ApiModelProperty(value = "游戏类别")
+    private String parentGameClassify;
+
+    @ApiModelProperty(value = "游戏区服名称")
+    private String serverName;
+
+    @ApiModelProperty(value = "SDK来源")
+    private String sourceSystem;
+
+    @ApiModelProperty(value = "开服天数")
+    private Integer day;
+
+    @ApiModelProperty(value = "开服时间")
+    private LocalDate beginDate;
+
+
+    @ApiModelProperty(value = "新用户人数")
+    private Integer newUserCount;
+
+    @ApiModelProperty(value = "创角人数")
+    private Integer newRoleCount;
+
+    @ApiModelProperty(value = "付费人数")
+    private Integer payUserCount;
+
+    /**
+     * 区服第1天:活跃留存率/付费留存率/小R留存率/中R留存率/大R留存率/超大R留存率/第N天创角总人数/第N天付费总人数
+     */
+    @ApiModelProperty(value = "不展示")
+    private String da1;
+
+    /**
+     * 区服第1天:活跃留存率/付费留存率/小R留存率/中R留存率/大R留存率/超大R留存率/第N天创角总人数/第N天付费总人数
+     */
+    @ApiModelProperty(value = "不展示")
+    private String da2;
+
+    /**
+     * 区服第2天:活跃留存率/付费留存率/小R留存率/中R留存率/大R留存率/超大R留存率/第N天创角总人数/第N天付费总人数
+     */
+    @ApiModelProperty(value = "不展示")
+    private String da3;
+
+    /**
+     * 区服第3天:活跃留存率/付费留存率/小R留存率/中R留存率/大R留存率/超大R留存率/第N天创角总人数/第N天付费总人数
+     */
+    @ApiModelProperty(value = "不展示")
+    private String da4;
+
+    /**
+     * 区服第4天:活跃留存率/付费留存率/小R留存率/中R留存率/大R留存率/超大R留存率/第N天创角总人数/第N天付费总人数
+     */
+    @ApiModelProperty(value = "不展示")
+    private String da5;
+
+
+    @ApiModelProperty(value = "不展示")
+    private String da6;
+
+
+    @ApiModelProperty(value = "不展示")
+    private String da7;
+
+
+    @ApiModelProperty(value = "不展示")
+    private String da8;
+
+    @ApiModelProperty(value = "不展示")
+    private String da9;
+
+    @ApiModelProperty(value = "不展示")
+    private String da10;
+
+
+    @ApiModelProperty(value = "不展示")
+    private String da11;
+
+
+    @ApiModelProperty(value = "不展示")
+    private String da12;
+
+    @ApiModelProperty(value = "不展示")
+    private String da13;
+
+
+    @ApiModelProperty(value = "不展示")
+    private String da14;
+
+
+    @ApiModelProperty(value = "不展示")
+    private String da15;
+
+
+    @ApiModelProperty(value = "不展示")
+    private String da16;
+
+
+    @ApiModelProperty(value = "不展示")
+    private String da17;
+
+
+    @ApiModelProperty(value = "不展示")
+    private String da18;
+
+
+    @ApiModelProperty(value = "不展示")
+    private String da19;
+
+
+    @ApiModelProperty(value = "不展示")
+    private String da20;
+
+
+    @ApiModelProperty(value = "不展示")
+    private String da21;
+
+
+    @ApiModelProperty(value = "不展示")
+    private String da22;
+
+
+    @ApiModelProperty(value = "不展示")
+    private String da23;
+
+
+    @ApiModelProperty(value = "不展示")
+    private String da24;
+
+
+    @ApiModelProperty(value = "不展示")
+    private String da25;
+
+
+    @ApiModelProperty(value = "不展示")
+    private String da26;
+
+
+    @ApiModelProperty(value = "不展示")
+    private String da27;
+
+
+    @ApiModelProperty(value = "不展示")
+    private String da28;
+
+
+    @ApiModelProperty(value = "不展示")
+    private String da29;
+
+    @ApiModelProperty(value = "不展示")
+    private String da30;
+    @ApiModelProperty(value = "不展示")
+    private String da31;
+    @ApiModelProperty(value = "不展示")
+    private String da32;
+    @ApiModelProperty(value = "不展示")
+    private String da33;
+    @ApiModelProperty(value = "不展示")
+    private String da34;
+    @ApiModelProperty(value = "不展示")
+    private String da35;
+    @ApiModelProperty(value = "不展示")
+    private String da36;
+    @ApiModelProperty(value = "不展示")
+    private String da37;
+    @ApiModelProperty(value = "不展示")
+    private String da38;
+    @ApiModelProperty(value = "不展示")
+    private String da39;
+
+    @ApiModelProperty(value = "不展示")
+    private String da40;
+    @ApiModelProperty(value = "不展示")
+    private String da41;
+    @ApiModelProperty(value = "不展示")
+    private String da42;
+    @ApiModelProperty(value = "不展示")
+    private String da43;
+    @ApiModelProperty(value = "不展示")
+    private String da44;
+    @ApiModelProperty(value = "不展示")
+    private String da45;
+    @ApiModelProperty(value = "不展示")
+    private String da46;
+    @ApiModelProperty(value = "不展示")
+    private String da47;
+    @ApiModelProperty(value = "不展示")
+    private String da48;
+    @ApiModelProperty(value = "不展示")
+    private String da49;
+
+    @ApiModelProperty(value = "不展示")
+    private String da50;
+    @ApiModelProperty(value = "不展示")
+    private String da51;
+    @ApiModelProperty(value = "不展示")
+    private String da52;
+    @ApiModelProperty(value = "不展示")
+    private String da53;
+    @ApiModelProperty(value = "不展示")
+    private String da54;
+    @ApiModelProperty(value = "不展示")
+    private String da55;
+    @ApiModelProperty(value = "不展示")
+    private String da56;
+    @ApiModelProperty(value = "不展示")
+    private String da57;
+    @ApiModelProperty(value = "不展示")
+    private String da58;
+    @ApiModelProperty(value = "不展示")
+    private String da59;
+
+    @ApiModelProperty(value = "不展示")
+    private String da60;
+    @ApiModelProperty(value = "不展示")
+    private String da61;
+    @ApiModelProperty(value = "不展示")
+    private String da62;
+    @ApiModelProperty(value = "不展示")
+    private String da63;
+    @ApiModelProperty(value = "不展示")
+    private String da64;
+    @ApiModelProperty(value = "不展示")
+    private String da65;
+    @ApiModelProperty(value = "不展示")
+    private String da66;
+    @ApiModelProperty(value = "不展示")
+    private String da67;
+    @ApiModelProperty(value = "不展示")
+    private String da68;
+    @ApiModelProperty(value = "不展示")
+    private String da69;
+
+    @ApiModelProperty(value = "不展示")
+    private String da70;
+    @ApiModelProperty(value = "不展示")
+    private String da71;
+    @ApiModelProperty(value = "不展示")
+    private String da72;
+    @ApiModelProperty(value = "不展示")
+    private String da73;
+    @ApiModelProperty(value = "不展示")
+    private String da74;
+    @ApiModelProperty(value = "不展示")
+    private String da75;
+    @ApiModelProperty(value = "不展示")
+    private String da76;
+    @ApiModelProperty(value = "不展示")
+    private String da77;
+    @ApiModelProperty(value = "不展示")
+    private String da78;
+    @ApiModelProperty(value = "不展示")
+    private String da79;
+
+    @ApiModelProperty(value = "不展示")
+    private String da80;
+    @ApiModelProperty(value = "不展示")
+    private String da81;
+    @ApiModelProperty(value = "不展示")
+    private String da82;
+    @ApiModelProperty(value = "不展示")
+    private String da83;
+    @ApiModelProperty(value = "不展示")
+    private String da84;
+    @ApiModelProperty(value = "不展示")
+    private String da85;
+    @ApiModelProperty(value = "不展示")
+    private String da86;
+    @ApiModelProperty(value = "不展示")
+    private String da87;
+    @ApiModelProperty(value = "不展示")
+    private String da88;
+    @ApiModelProperty(value = "不展示")
+    private String da89;
+    @ApiModelProperty(value = "不展示")
+    private String da90;
+
+    /**
+     * 区服在第4月:活跃留存率/付费留存率/小R留存率/中R留存率/大R留存率/超大R留存率/第N天创角总人数/第N天付费总人数
+     */
+    @ApiModelProperty(value = "不展示")
+    private String m4;
+
+    /**
+     * 区服在第5月:活跃留存率/付费留存率/小R留存率/中R留存率/大R留存率/超大R留存率/第N天创角总人数/第N天付费总人数
+     */
+    @ApiModelProperty(value = "不展示")
+    private String m5;
+
+    /**
+     * 区服在第6月:活跃留存率/付费留存率/小R留存率/中R留存率/大R留存率/超大R留存率/第N天创角总人数/第N天付费总人数
+     */
+    @ApiModelProperty(value = "不展示")
+    private String m6;
+
+    /**
+     * 区服在第7月:活跃留存率/付费留存率/小R留存率/中R留存率/大R留存率/超大R留存率/第N天创角总人数/第N天付费总人数
+     */
+    @ApiModelProperty(value = "不展示")
+    private String m7;
+
+    /**
+     * 区服在第8月:活跃留存率/付费留存率/小R留存率/中R留存率/大R留存率/超大R留存率/第N天创角总人数/第N天付费总人数
+     */
+    @ApiModelProperty(value = "不展示")
+    private String m8;
+
+    /**
+     * 区服在第9月:活跃留存率/付费留存率/小R留存率/中R留存率/大R留存率/超大R留存率/第N天创角总人数/第N天付费总人数
+     */
+    @ApiModelProperty(value = "不展示")
+    private String m9;
+
+    /**
+     * 区服在第10月:活跃留存率/付费留存率/小R留存率/中R留存率/大R留存率/超大R留存率/第N天创角总人数/第N天付费总人数
+     */
+    @ApiModelProperty(value = "不展示")
+    private String m10;
+
+    /**
+     * 区服在第11月:活跃留存率/付费留存率/小R留存率/中R留存率/大R留存率/超大R留存率/第N天创角总人数/第N天付费总人数
+     */
+    @ApiModelProperty(value = "不展示")
+    private String m11;
+
+    /**
+     * 区服在第1年:活跃留存率/付费留存率/小R留存率/中R留存率/大R留存率/超大R留存率/第N天创角总人数/第N天付费总人数
+     */
+    @ApiModelProperty(value = "不展示")
+    private String m12;
+
+//    /**
+//     * 区服至今:活跃留存率/付费留存率/小R留存率/中R留存率/大R留存率/超大R留存率/第N天创角总人数/第N天付费总人数
+//     */
+//    @ApiModelProperty(value = "区服至今总数据")
+//    private GameServerTrendVO totalTrend;
+
+    /**
+     * 昨日区服数据:活跃留存率/付费留存率/小R留存率/中R留存率/大R留存率/超大R留存率/第N天创角总人数/第N天付费总人数
+     */
+    @ApiModelProperty(value = "不展示")
+    private String yesterday;
+
+
+
+
+}

+ 6 - 0
game-data/game-data-serve/src/main/java/com/zanxiang/game/data/serve/service/IGameServerService.java

@@ -44,4 +44,10 @@ public interface IGameServerService {
      */
     List<GameServerVO> getAllGameServer(GameServerListDTO dto);
 
+    /**
+     * GS区服数据
+     * @param dto
+     * @return
+     */
+    Page<GSGameServerDayVO> getGSGameServerDataDay(GSGameServerDayDTO dto);
 }

+ 1 - 1
game-data/game-data-serve/src/main/java/com/zanxiang/game/data/serve/service/IRoleManageService.java

@@ -1,6 +1,6 @@
 package com.zanxiang.game.data.serve.service;
 
-import com.zangxiang.game.base.pojo.vo.SendMsgVo;
+import com.zanxiang.game.module.base.pojo.vo.SendMsgVo;
 import com.zanxiang.game.data.serve.pojo.dto.MsgTaskDto;
 import com.zanxiang.game.data.serve.pojo.dto.RoleCombatRankingDTO;
 import com.zanxiang.game.data.serve.pojo.dto.RoleRechargeRankingDTO;

+ 11 - 0
game-data/game-data-serve/src/main/java/com/zanxiang/game/data/serve/service/impl/GameServerServiceImpl.java

@@ -495,6 +495,17 @@ public class GameServerServiceImpl implements IGameServerService {
         return sql.getList(GameServerVO.class);
     }
 
+    /**
+     * 游戏区服数据
+     * @param dto GameServerDayDTO
+     * @return Page<GameServerDayVO>
+     */
+    @Override
+    public Page<GSGameServerDayVO> getGSGameServerDataDay(GSGameServerDayDTO dto) {
+
+        return null;
+    }
+
     /**
      * 将vo中的原始String数据修改为一个对象
      * @param vo 展示给前端的游戏区服数据

+ 64 - 45
game-data/game-data-serve/src/main/java/com/zanxiang/game/data/serve/service/impl/RoleManageServiceImpl.java

@@ -1,19 +1,20 @@
 package com.zanxiang.game.data.serve.service.impl;
 
 import com.alibaba.fastjson2.JSON;
-import com.zangxiang.game.base.pojo.vo.SendMsgVo;
+import com.zanxiang.game.data.serve.pojo.dto.*;
+import com.zanxiang.game.data.serve.pojo.vo.GameDataDayVO;
+import com.zanxiang.game.module.base.pojo.vo.SendMsgVo;
 import com.zanxiang.erp.base.ErpServer;
 import com.zanxiang.erp.base.rpc.ISysUserRpc;
 import com.zanxiang.erp.security.util.SecurityUtil;
-import com.zanxiang.game.data.serve.pojo.dto.MsgTaskDto;
-import com.zanxiang.game.data.serve.pojo.dto.RoleCombatRankingDTO;
-import com.zanxiang.game.data.serve.pojo.dto.RoleRechargeRankingDTO;
-import com.zanxiang.game.data.serve.pojo.dto.SendMsgTaskDto;
 import com.zanxiang.game.data.serve.pojo.enums.OrderByEnum;
 import com.zanxiang.game.data.serve.service.IRoleManageService;
 import com.zanxiang.game.data.serve.utils.Page;
+import com.zanxiang.game.module.base.ServerInfo;
 import com.zanxiang.game.module.base.pojo.dto.SendMsgDto;
-import com.zanxiang.game.module.base.rpc.SendMsgRpc;
+import com.zanxiang.game.module.base.pojo.params.SendMsgTaskParam;
+import com.zanxiang.game.module.base.rpc.ICPSendMsgRpc;
+import com.zanxiang.game.module.base.util.PageUtil;
 import com.zanxiang.module.util.exception.BaseException;
 import com.zanxiang.module.util.pojo.ResultVO;
 import lombok.extern.slf4j.Slf4j;
@@ -29,7 +30,6 @@ import org.nutz.dao.sql.Sql;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
-import javax.validation.Valid;
 import java.util.*;
 import java.util.stream.Collectors;
 
@@ -48,11 +48,8 @@ public class RoleManageServiceImpl implements IRoleManageService {
     @DubboReference(providedBy = ErpServer.SERVER_DUBBO_NAME)
     private ISysUserRpc sysUserRpc;
 
-    @DubboReference
-    private SendMsgRpc sendMsgRpc;
-
-
-
+    @DubboReference(providedBy = ServerInfo.SERVER_DUBBO_NAME)
+    private ICPSendMsgRpc sendMsgRpc;
 
 
     /**
@@ -336,15 +333,10 @@ public class RoleManageServiceImpl implements IRoleManageService {
      */
     @Override
     public void createSendMsgTask(SendMsgTaskDto dto) {
-        //校验参数
-        validation(dto);
-
         //获取当前用户id
         Long sysUserId = SecurityUtil.getUserId();
-
         //构建发送消息dto
         SendMsgDto sendMsgDto = buildSendMsgDto(dto, sysUserId);
-
         //调用发送消息接口
         ResultVO<Boolean> booleanResultVO = sendMsgRpc.sendMsg(sendMsgDto);
         if (!booleanResultVO.isSuccess()) {
@@ -352,34 +344,15 @@ public class RoleManageServiceImpl implements IRoleManageService {
         }
     }
 
-    /**
-     * 校验参数
-     * @param dto
-     */
-    private void validation(SendMsgTaskDto dto) {
-        if (StringUtils.isBlank(dto.getTaskName())) {
-            throw new BaseException("任务名称不能为空");
-        }
-        if (StringUtils.isBlank(dto.getSendContent())) {
-            throw new BaseException("发送内容不能为空");
-        }
-        if(dto.getGameId()==null){
-            throw new BaseException("游戏id不能为空");
-        }
-        if(CollectionUtils.isEmpty(dto.getRoleIds())){
-            throw new BaseException("角色id不能为空");
-        }
-
-    }
 
     private SendMsgDto buildSendMsgDto(SendMsgTaskDto dto, Long sysUserId) {
-        //先查出来所有的角色
-        List<Map> roleList = getRoleList(dto.getRoleRechargeRankingDTO());
-
-        //筛选出角色id
-        List<String> roleIdList = roleList.stream()
-                .map(map -> Optional.ofNullable(map.get("role_id")).map(Object::toString).orElse(null))
-                .collect(Collectors.toList());
+//        //先查出来所有的角色
+//        List<Map> roleList = getRoleList(dto.getRoleRechargeRankingDTO());
+//
+//        //筛选出角色id
+//        List<String> roleIdList = roleList.stream()
+//                .map(map -> Optional.ofNullable(map.get("role_id")).map(Object::toString).orElse(null))
+//                .toList();
 
         SendMsgDto sendMsgDto = new SendMsgDto();
         //任务名称
@@ -588,8 +561,54 @@ public class RoleManageServiceImpl implements IRoleManageService {
      */
     @Override
     public Page<SendMsgVo> getSendMsgTaskList(MsgTaskDto dto) {
-//        sendMsgRpc.getSendMsgTaskList(dto);
-        return null;
+        try {
+            SendMsgTaskParam sendMsgTaskParam = new SendMsgTaskParam();
+            sendMsgTaskParam.setGameId(dto.getGameId());
+            sendMsgTaskParam.setPageNum(dto.getPageNum());
+            sendMsgTaskParam.setPageSize(dto.getPageSize());
+            PageUtil<SendMsgVo> sendMsgTaskList = sendMsgRpc.getSendMsgTaskList(sendMsgTaskParam);
+            //查询所有游戏名称
+            Sql sql = Sqls.create(getGameSql());
+            sql.setCallback(Sqls.callback.entities());
+            sql.setEntity(dao.getEntity(GameDto.class));
+            dao.execute(sql);
+            List<GameDto> gameDtoList = sql.getList(GameDto.class);
+            //将游戏拼成map key为父游戏id,value为游戏名称
+            HashMap<Integer, String> gameMap = new HashMap<>();
+            gameDtoList.forEach(item -> {
+                gameMap.put(item.getParentId(), item.getGameName());
+            });
+            //循环遍历获取游戏名称
+            sendMsgTaskList.getRecords().forEach(item -> {
+                String gameName = gameMap.get(item.getGameId());
+                if (gameName != null){
+                    item.setGameName(gameName);
+                }
+            });
+            return new Page<>(sendMsgTaskList.getRecords(),sendMsgTaskList.getTotal(),sendMsgTaskList.getSize(),sendMsgTaskList.getCurrent(),sendMsgTaskList.getPages());
+        }catch (Exception exception){
+            log.error("获取发送消息任务列表失败", exception);
+            throw new BaseException("获取发送消息任务列表失败");
+        }
+    }
+
+
+    /**
+     * 查询游戏sql
+     * @return String
+     */
+    private String getGameSql() {
+        return """
+                 SELECT
+                            -- 游戏名称、游戏类型、父游戏id、超父游戏id
+                            source_system,
+                            id,
+                            game_name,
+                            classify,
+                            parent_id,
+                            super_game_id
+                        FROM dm_game_order.t_game
+                """;
     }
 
     /**

+ 0 - 1
game-module/game-module-base/src/main/java/com/zanxiang/game/module/base/pojo/dto/SendMsgDto.java

@@ -3,7 +3,6 @@ package com.zanxiang.game.module.base.pojo.dto;
 import lombok.Data;
 
 import java.io.Serializable;
-import java.time.LocalDate;
 import java.util.List;
 
 @Data

+ 22 - 0
game-module/game-module-base/src/main/java/com/zanxiang/game/module/base/pojo/params/SendMsgTaskParam.java

@@ -0,0 +1,22 @@
+package com.zanxiang.game.module.base.pojo.params;
+
+import com.zanxiang.module.web.pojo.BaseListDTO;
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ * @author : ZhangXianyu
+ * @time : 2024-03-14 10:42:18
+ * @description : 查询消息任务列表参数
+ */
+@Data
+public class SendMsgTaskParam extends BaseListDTO implements Serializable {
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 游戏id
+     */
+    private Long gameId;
+
+}

+ 79 - 0
game-module/game-module-base/src/main/java/com/zanxiang/game/module/base/pojo/vo/SendMsgVo.java

@@ -0,0 +1,79 @@
+package com.zanxiang.game.module.base.pojo.vo;
+
+import lombok.Data;
+
+import java.io.Serializable;
+import java.time.LocalDateTime;
+
+@Data
+public class SendMsgVo implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+
+    /**
+     * 任务id
+     */
+    private Long id;
+
+    /**
+     * 消息内容
+     */
+    private String msg;
+
+    /**
+     * 游戏名称
+     */
+    private String gameName;
+
+    /**
+     * 任务人数
+     */
+    private Long roleIdCount;
+
+    /**
+     * 任务名称
+     */
+    private String taskName;
+
+    /**
+     * 任务条件
+     */
+    private String taskCondition;
+
+    /**
+     * 游戏id
+     */
+    private Long gameId;
+
+    /**
+     * 任务类型
+     */
+    private String type;
+
+    /**
+     * 任务状态
+     */
+    private String status;
+
+    /**
+     * 创建人
+     */
+    private Long createBy;
+
+    /**
+     * 创建时间
+     */
+    private LocalDateTime createTime;
+
+    /**
+     * 更新时间
+     */
+    private LocalDateTime updateTime;
+
+
+
+
+
+
+}

+ 10 - 0
game-module/game-module-base/src/main/java/com/zanxiang/game/module/base/rpc/ICPSendMsgRpc.java

@@ -1,6 +1,9 @@
 package com.zanxiang.game.module.base.rpc;
 
 import com.zanxiang.game.module.base.pojo.dto.SendMsgDto;
+import com.zanxiang.game.module.base.pojo.params.SendMsgTaskParam;
+import com.zanxiang.game.module.base.pojo.vo.SendMsgVo;
+import com.zanxiang.game.module.base.util.PageUtil;
 import com.zanxiang.module.util.pojo.ResultVO;
 
 /**
@@ -10,5 +13,12 @@ import com.zanxiang.module.util.pojo.ResultVO;
  */
 public interface ICPSendMsgRpc {
 
+    /**
+     * 发送消息
+     * @param sendMsgDto
+     * @return
+     */
     ResultVO<Boolean> sendMsg(SendMsgDto sendMsgDto);
+
+    PageUtil<SendMsgVo> getSendMsgTaskList(SendMsgTaskParam sendMsgTaskParam);
 }

+ 45 - 0
game-module/game-module-base/src/main/java/com/zanxiang/game/module/base/util/PageUtil.java

@@ -0,0 +1,45 @@
+package com.zanxiang.game.module.base.util;
+
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.util.Collections;
+import java.util.List;
+
+/**
+ * @author shishaosong
+ */
+@Data
+@NoArgsConstructor
+@AllArgsConstructor
+@Builder
+public class PageUtil<T> {
+
+    /**
+     * 查询数据列表
+     */
+    private List<T> records = Collections.emptyList();
+
+    /**
+     * 总数
+     */
+    private long total = 0;
+    /**
+     * 每页显示条数,默认 10
+     */
+    private long size = 10;
+
+    /**
+     * 当前页
+     */
+    private long current = 1;
+
+    /**
+     * 总页数
+     */
+    private long pages;
+
+
+}

+ 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服务启动成功 <解决客服系统小程序消息推送的问题 ( ´・・)ノ(._.`) \n" +
+        System.out.println("赞象Manage服务启动成功 <CP推送消息代码提交 ( ´・・)ノ(._.`) \n" +
                 "___  ___  ___   _   _   ___  _____  _____ \n" +
                 "|  \\/  | / _ \\ | \\ | | / _ \\|  __ \\|  ___|\n" +
                 "| .  . |/ /_\\ \\|  \\| |/ /_\\ \\ |  \\/| |__  \n" +

+ 3 - 3
game-module/game-module-manage/src/main/java/com/zanxiang/game/module/manage/controller/RoleAssignController.java

@@ -2,7 +2,9 @@ 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.*;
+import com.zanxiang.game.module.manage.pojo.params.RoleAssignRecordAddParam;
+import com.zanxiang.game.module.manage.pojo.params.RoleAssignRecordListParam;
+import com.zanxiang.game.module.manage.pojo.params.RoleSysUserAssignParam;
 import com.zanxiang.game.module.manage.pojo.vo.RoleAssignRecordListVO;
 import com.zanxiang.game.module.manage.service.IRoleAssignRecordService;
 import com.zanxiang.module.util.pojo.ResultVO;
@@ -13,8 +15,6 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.validation.annotation.Validated;
 import org.springframework.web.bind.annotation.*;
 
-import java.util.List;
-
 @Api(tags = {"角色指派记录"})
 @RestController
 @RequestMapping("/role/assign/record")

+ 2 - 6
game-module/game-module-manage/src/main/java/com/zanxiang/game/module/manage/controller/RoleGiftController.java

@@ -2,17 +2,13 @@ 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.*;
-import com.zanxiang.game.module.manage.pojo.vo.CpVO;
+import com.zanxiang.game.module.manage.pojo.params.RoleGiftRecordAddParam;
+import com.zanxiang.game.module.manage.pojo.params.RoleGiftRecordListParam;
 import com.zanxiang.game.module.manage.pojo.vo.RoleGiftRecordListVO;
-import com.zanxiang.game.module.manage.pojo.vo.RoleMailRecordListVO;
-import com.zanxiang.game.module.manage.service.ICpService;
 import com.zanxiang.game.module.manage.service.IRoleGiftRecordService;
 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;

+ 0 - 6
game-module/game-module-manage/src/main/java/com/zanxiang/game/module/manage/controller/RoleMailController.java

@@ -2,19 +2,13 @@ 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.CpAddUpdateParam;
-import com.zanxiang.game.module.manage.pojo.params.CpListParam;
 import com.zanxiang.game.module.manage.pojo.params.RoleMailRecordAddParam;
 import com.zanxiang.game.module.manage.pojo.params.RoleMailRecordListParam;
-import com.zanxiang.game.module.manage.pojo.vo.CpVO;
 import com.zanxiang.game.module.manage.pojo.vo.RoleMailRecordListVO;
-import com.zanxiang.game.module.manage.service.ICpService;
 import com.zanxiang.game.module.manage.service.IRoleMailRecordService;
 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;

+ 29 - 0
game-module/game-module-manage/src/main/java/com/zanxiang/game/module/manage/enums/CpSendRoleResultEnum.java

@@ -0,0 +1,29 @@
+package com.zanxiang.game.module.manage.enums;
+
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+
+/**
+ * @author : lingfeng
+ * @time : 2024-03-14
+ * @description : 角色发送结果
+ */
+@Getter
+@AllArgsConstructor
+public enum CpSendRoleResultEnum {
+
+    /**
+     * 成功
+     */
+    CP_SEND_ROLE_RESULT_SUCCESS("CP_SEND_ROLE_RESULT_SUCCESS"),
+
+    /**
+     * 失败
+     */
+    CP_SEND_ROLE_RESULT_FAIL("CP_SEND_ROLE_RESULT_FAIL");
+
+    /**
+     * 状态
+     */
+    private String value;
+}

+ 24 - 0
game-module/game-module-manage/src/main/java/com/zanxiang/game/module/manage/pojo/dto/CpSendMsgResultDTO.java

@@ -0,0 +1,24 @@
+package com.zanxiang.game.module.manage.pojo.dto;
+
+import lombok.Data;
+
+import java.util.List;
+
+/**
+ * @author : lingfeng
+ * @time : 2024-03-14
+ * @description : CP发送消息结果
+ */
+@Data
+public class CpSendMsgResultDTO {
+
+    /**
+     * 成功人数
+     */
+    private Long sucessCount;
+
+    /**
+     * 失败列表
+     */
+    private List<String> failList;
+}

+ 0 - 1
game-module/game-module-manage/src/main/java/com/zanxiang/game/module/manage/pojo/params/GameAdPolicyBatchStartParam.java

@@ -6,7 +6,6 @@ import lombok.Data;
 import javax.validation.constraints.NotEmpty;
 import javax.validation.constraints.NotNull;
 import java.util.List;
-import java.util.Set;
 
 /**
  * @author tianhua

+ 0 - 1
game-module/game-module-manage/src/main/java/com/zanxiang/game/module/manage/pojo/params/GameGiftAddParam.java

@@ -6,7 +6,6 @@ import lombok.Data;
 
 import javax.validation.constraints.NotBlank;
 import javax.validation.constraints.NotNull;
-import java.time.LocalDateTime;
 
 
 @ApiModel

+ 0 - 2
game-module/game-module-manage/src/main/java/com/zanxiang/game/module/manage/pojo/params/GamePolicyConfigListParam.java

@@ -5,8 +5,6 @@ import com.zanxiang.module.web.pojo.BaseListDTO;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 
-import javax.validation.constraints.NotNull;
-
 /**
  * @author tianhua
  * @version 1.0

+ 0 - 1
game-module/game-module-manage/src/main/java/com/zanxiang/game/module/manage/pojo/params/GameVipAddParam.java

@@ -3,7 +3,6 @@ package com.zanxiang.game.module.manage.pojo.params;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 
-import javax.validation.constraints.NotBlank;
 import javax.validation.constraints.NotNull;
 import java.math.BigDecimal;
 

+ 0 - 3
game-module/game-module-manage/src/main/java/com/zanxiang/game/module/manage/pojo/params/GameVipListParam.java

@@ -5,9 +5,6 @@ import com.zanxiang.module.web.pojo.BaseListDTO;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 
-import javax.validation.constraints.NotNull;
-import java.math.BigDecimal;
-
 /**
  * @author tianhua
  * @version 1.0

+ 0 - 3
game-module/game-module-manage/src/main/java/com/zanxiang/game/module/manage/pojo/params/RoleAssignRecordAddParam.java

@@ -4,11 +4,8 @@ import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 
-import javax.validation.constraints.NotEmpty;
 import javax.validation.constraints.NotNull;
 import java.time.LocalDate;
-import java.time.LocalDateTime;
-import java.util.List;
 
 
 /**

+ 0 - 2
game-module/game-module-manage/src/main/java/com/zanxiang/game/module/manage/pojo/params/RoleAssignRecordListParam.java

@@ -1,13 +1,11 @@
 package com.zanxiang.game.module.manage.pojo.params;
 
 import com.zanxiang.game.module.mybatis.entity.RoleAssignRecord;
-import com.zanxiang.game.module.mybatis.entity.RoleGiftRecord;
 import com.zanxiang.module.web.pojo.BaseListDTO;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 
 import javax.validation.constraints.NotNull;
-import java.time.LocalDateTime;
 
 /**
  * @author shishaosong

+ 0 - 1
game-module/game-module-manage/src/main/java/com/zanxiang/game/module/manage/pojo/params/RoleGiftRecordListParam.java

@@ -1,7 +1,6 @@
 package com.zanxiang.game.module.manage.pojo.params;
 
 import com.zanxiang.game.module.mybatis.entity.RoleGiftRecord;
-import com.zanxiang.game.module.mybatis.entity.RoleMailRecord;
 import com.zanxiang.module.web.pojo.BaseListDTO;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;

+ 0 - 1
game-module/game-module-manage/src/main/java/com/zanxiang/game/module/manage/pojo/params/RoleInfoParam.java

@@ -5,7 +5,6 @@ import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 
 import javax.validation.constraints.NotNull;
-import java.time.LocalDateTime;
 
 
 /**

+ 0 - 1
game-module/game-module-manage/src/main/java/com/zanxiang/game/module/manage/pojo/params/RoleMailRecordAddParam.java

@@ -4,7 +4,6 @@ import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 
-import javax.validation.constraints.NotBlank;
 import javax.validation.constraints.NotEmpty;
 import javax.validation.constraints.NotNull;
 import java.time.LocalDateTime;

+ 0 - 4
game-module/game-module-manage/src/main/java/com/zanxiang/game/module/manage/pojo/params/RoleOperateParam.java

@@ -1,14 +1,10 @@
 package com.zanxiang.game.module.manage.pojo.params;
 
-import com.baomidou.mybatisplus.annotation.FieldStrategy;
-import com.baomidou.mybatisplus.annotation.TableField;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 
 import javax.validation.constraints.NotEmpty;
-import javax.validation.constraints.NotNull;
-import java.time.LocalDateTime;
 import java.util.List;
 
 

+ 0 - 1
game-module/game-module-manage/src/main/java/com/zanxiang/game/module/manage/pojo/params/RoleSysUserAssignParam.java

@@ -7,7 +7,6 @@ import lombok.Data;
 import javax.validation.constraints.NotEmpty;
 import javax.validation.constraints.NotNull;
 import java.time.LocalDate;
-import java.time.LocalDateTime;
 import java.util.List;
 
 

+ 14 - 36
game-module/game-module-manage/src/main/java/com/zanxiang/game/module/manage/rpc/impl/CpSendMsgRpcImpl.java

@@ -1,18 +1,16 @@
 package com.zanxiang.game.module.manage.rpc.impl;
 
 import com.zanxiang.game.module.base.pojo.dto.SendMsgDto;
+import com.zanxiang.game.module.base.pojo.params.SendMsgTaskParam;
+import com.zanxiang.game.module.base.pojo.vo.SendMsgVo;
 import com.zanxiang.game.module.base.rpc.ICPSendMsgRpc;
-import com.zanxiang.game.module.manage.enums.CpSendMsgTaskStatusEnum;
-import com.zanxiang.game.module.manage.enums.CpSendMsgTaskTypeEnum;
+import com.zanxiang.game.module.base.util.PageUtil;
 import com.zanxiang.game.module.manage.service.ICPSendMsgTaskService;
-import com.zanxiang.game.module.mybatis.entity.CpSendMsgTask;
 import com.zanxiang.module.util.pojo.ResultVO;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.dubbo.config.annotation.DubboService;
 
 import javax.annotation.Resource;
-import java.time.LocalDateTime;
-import java.time.ZoneId;
 
 @DubboService
 @Slf4j
@@ -23,38 +21,18 @@ public class CpSendMsgRpcImpl implements ICPSendMsgRpc {
 
     @Override
     public ResultVO<Boolean> sendMsg(SendMsgDto sendMsgDto) {
-        try {
-            // 数据校验
-            if (sendMsgDto == null || sendMsgDto.getMsg() == null || sendMsgDto.getGameId() == null || sendMsgDto.getCreateBy() == null || sendMsgDto.getRoles() == null || sendMsgDto.getRoles().isEmpty()) {
-                return ResultVO.fail("参数不能为空");
-            }
-            //创建任务
-            CpSendMsgTask cpSendMsgTask = createSendMsgTask(sendMsgDto);
-            //保存任务
-            sendMsgTaskService.save(cpSendMsgTask);
-            //todo:发送消息
-            log.info("发送消息成功");
-            return ResultVO.ok();
-        } catch (Exception e) {
-            log.error("发送消息异常, sendMsgDto : {}, e : {}", sendMsgDto, e.getMessage());
-            return ResultVO.fail("发送消息异常");
-        }
+       return sendMsgTaskService.sendMsg(sendMsgDto);
     }
 
-    private CpSendMsgTask createSendMsgTask(SendMsgDto dto) {
-        CpSendMsgTask cpSendMsgTask = new CpSendMsgTask();
-        cpSendMsgTask.setMsg(dto.getMsg());
-        cpSendMsgTask.setRoleIdCount((long) dto.getRoles().size());
-        cpSendMsgTask.setTaskName(dto.getTaskName());
-        cpSendMsgTask.setTaskCondition(dto.getSendConditionJson());
-        cpSendMsgTask.setGameId(dto.getGameId());
-        //任务类型
-        cpSendMsgTask.setType(CpSendMsgTaskTypeEnum.IMMEDIATE_TASK.getValue());
-        //任务状态
-        cpSendMsgTask.setStatus(CpSendMsgTaskStatusEnum.WAIT_SEND.getValue());
-        cpSendMsgTask.setCreateBy(dto.getCreateBy());
-        cpSendMsgTask.setCreateTime(LocalDateTime.now(ZoneId.of("UTC")));
-        cpSendMsgTask.setUpdateTime(LocalDateTime.now(ZoneId.of("UTC")));
-        return cpSendMsgTask;
+    @Override
+    public PageUtil<SendMsgVo> getSendMsgTaskList(SendMsgTaskParam param) {
+       return sendMsgTaskService.getSendMsgTaskList(param);
     }
+
+
+
+
+
+
+
 }

+ 22 - 0
game-module/game-module-manage/src/main/java/com/zanxiang/game/module/manage/service/ICPSendMsgTaskService.java

@@ -1,7 +1,29 @@
 package com.zanxiang.game.module.manage.service;
 
 import com.baomidou.mybatisplus.extension.service.IService;
+import com.zanxiang.game.module.base.pojo.dto.SendMsgDto;
+import com.zanxiang.game.module.base.pojo.params.SendMsgTaskParam;
+import com.zanxiang.game.module.base.pojo.vo.SendMsgVo;
+import com.zanxiang.game.module.base.util.PageUtil;
 import com.zanxiang.game.module.mybatis.entity.CpSendMsgTask;
+import com.zanxiang.module.util.pojo.ResultVO;
 
 public interface ICPSendMsgTaskService extends IService<CpSendMsgTask> {
+
+    /**
+     * 创建消息任务并发送消息
+     * @param sendMsgDto
+     * @return
+     */
+    ResultVO<Boolean> sendMsg(SendMsgDto sendMsgDto);
+
+    /**
+     * 获取消息任务列表
+     * @param param
+     * @return
+     */
+    PageUtil<SendMsgVo> getSendMsgTaskList(SendMsgTaskParam param);
+
+
+
 }

+ 24 - 0
game-module/game-module-manage/src/main/java/com/zanxiang/game/module/manage/service/ICpSendMsgLogService.java

@@ -0,0 +1,24 @@
+package com.zanxiang.game.module.manage.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.zanxiang.game.module.mybatis.entity.CpSendMsgLog;
+
+import java.util.List;
+
+/**
+ * @author : lingfeng
+ * @time : 2024-03-14
+ * @description : CP消息发送记录
+ */
+public interface ICpSendMsgLogService extends IService<CpSendMsgLog> {
+
+    /**
+     * CP发送消息
+     *
+     * @param taskId     : 任务id
+     * @param gameId     : 游戏od
+     * @param text       : 文本内容
+     * @param roleIdList : 角色列表
+     */
+    void cpSendMsg(Long taskId, Long gameId, String text, List<String> roleIdList);
+}

+ 12 - 0
game-module/game-module-manage/src/main/java/com/zanxiang/game/module/manage/service/ICpSendMsgResultService.java

@@ -0,0 +1,12 @@
+package com.zanxiang.game.module.manage.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.zanxiang.game.module.mybatis.entity.CpSendMsgResult;
+
+/**
+ * @author : lingfeng
+ * @time : 2024-03-14
+ * @description :
+ */
+public interface ICpSendMsgResultService extends IService<CpSendMsgResult> {
+}

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

@@ -1,11 +1,11 @@
 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.GameGiftAddParam;
 import com.zanxiang.game.module.manage.pojo.params.GameGiftListParam;
 import com.zanxiang.game.module.manage.pojo.vo.GameGiftListVO;
 import com.zanxiang.game.module.mybatis.entity.GameGift;
-import com.baomidou.mybatisplus.extension.service.IService;
 
 import java.util.List;
 

+ 2 - 4
game-module/game-module-manage/src/main/java/com/zanxiang/game/module/manage/service/IRoleAssignRecordService.java

@@ -1,14 +1,12 @@
 package com.zanxiang.game.module.manage.service;
 
 import com.baomidou.mybatisplus.core.metadata.IPage;
-import com.zanxiang.game.module.manage.pojo.params.RoleAssignRecordListParam;
+import com.baomidou.mybatisplus.extension.service.IService;
 import com.zanxiang.game.module.manage.pojo.params.RoleAssignRecordAddParam;
+import com.zanxiang.game.module.manage.pojo.params.RoleAssignRecordListParam;
 import com.zanxiang.game.module.manage.pojo.params.RoleSysUserAssignParam;
 import com.zanxiang.game.module.manage.pojo.vo.RoleAssignRecordListVO;
 import com.zanxiang.game.module.mybatis.entity.RoleAssignRecord;
-import com.baomidou.mybatisplus.extension.service.IService;
-
-import java.util.List;
 
 /**
  * <p>

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

@@ -1,11 +1,11 @@
 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.RoleGiftRecordAddParam;
 import com.zanxiang.game.module.manage.pojo.params.RoleGiftRecordListParam;
 import com.zanxiang.game.module.manage.pojo.vo.RoleGiftRecordListVO;
 import com.zanxiang.game.module.mybatis.entity.RoleGiftRecord;
-import com.baomidou.mybatisplus.extension.service.IService;
 
 import java.util.List;
 

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

@@ -1,11 +1,11 @@
 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.RoleMailRecordAddParam;
 import com.zanxiang.game.module.manage.pojo.params.RoleMailRecordListParam;
 import com.zanxiang.game.module.manage.pojo.vo.RoleMailRecordListVO;
 import com.zanxiang.game.module.mybatis.entity.RoleMailRecord;
-import com.baomidou.mybatisplus.extension.service.IService;
 
 import java.util.List;
 

+ 82 - 0
game-module/game-module-manage/src/main/java/com/zanxiang/game/module/manage/service/impl/CPSendMsgTaskServiceImpl.java

@@ -1,11 +1,93 @@
 package com.zanxiang.game.module.manage.service.impl;
 
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.zanxiang.game.module.base.pojo.dto.SendMsgDto;
+import com.zanxiang.game.module.base.pojo.params.SendMsgTaskParam;
+import com.zanxiang.game.module.base.pojo.vo.SendMsgVo;
+import com.zanxiang.game.module.base.util.PageUtil;
+import com.zanxiang.game.module.manage.enums.CpSendMsgTaskStatusEnum;
+import com.zanxiang.game.module.manage.enums.CpSendMsgTaskTypeEnum;
 import com.zanxiang.game.module.manage.service.ICPSendMsgTaskService;
+import com.zanxiang.game.module.manage.service.ICpSendMsgLogService;
 import com.zanxiang.game.module.mybatis.entity.CpSendMsgTask;
 import com.zanxiang.game.module.mybatis.mapper.CpSendMsgTaskMapper;
+import com.zanxiang.module.util.bean.BeanUtil;
+import com.zanxiang.module.util.pojo.ResultVO;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.context.annotation.Lazy;
 import org.springframework.stereotype.Service;
 
+import javax.annotation.Resource;
+import java.time.LocalDateTime;
+import java.time.ZoneId;
+import java.util.List;
+import java.util.Objects;
+import java.util.stream.Collectors;
+
 @Service
+@Slf4j
 public class CPSendMsgTaskServiceImpl extends ServiceImpl<CpSendMsgTaskMapper, CpSendMsgTask> implements ICPSendMsgTaskService {
+
+    @Lazy
+    @Resource
+    private ICPSendMsgTaskService sendMsgTaskService;
+
+    @Resource
+    private ICpSendMsgLogService cpSendMsgLogService;
+
+    @Override
+    public ResultVO<Boolean> sendMsg(SendMsgDto sendMsgDto) {
+        try {
+            //创建任务
+            CpSendMsgTask cpSendMsgTask = createSendMsgTask(sendMsgDto);
+            //保存任务
+            sendMsgTaskService.save(cpSendMsgTask);
+            //发消息
+            cpSendMsgLogService.cpSendMsg(cpSendMsgTask.getId(), sendMsgDto.getGameId(), sendMsgDto.getMsg(), sendMsgDto.getRoles());
+            log.info("发送消息成功");
+            return ResultVO.ok();
+        } catch (Exception e) {
+            log.error("发送消息异常, sendMsgDto : {}, e : {}", sendMsgDto, e.getMessage());
+            return ResultVO.fail("发送消息异常");
+        }
+    }
+
+    @Override
+    public PageUtil<SendMsgVo> getSendMsgTaskList(SendMsgTaskParam param) {
+        Page<CpSendMsgTask> page = sendMsgTaskService.page(new Page<>(param.getPageNum(), param.getPageSize()),
+                new LambdaQueryWrapper<CpSendMsgTask>()
+                        .eq(param.getGameId() != null, CpSendMsgTask::getGameId, param.getGameId())
+                        .orderByDesc(CpSendMsgTask::getCreateTime));
+        List<CpSendMsgTask> cpSendMsgTasks = page.getRecords();
+        List<SendMsgVo> sendMsgVos = toVo(cpSendMsgTasks);
+        return new PageUtil<>(sendMsgVos, page.getTotal(), param.getPageSize(), param.getPageNum(),0);
+    }
+
+    private List<SendMsgVo> toVo(List<CpSendMsgTask> cpSendMsgTasks) {
+        if (Objects.isNull(cpSendMsgTasks) || cpSendMsgTasks.isEmpty()) {
+            return null;
+        }
+        return cpSendMsgTasks.stream()
+                .map(task -> BeanUtil.copy(task, SendMsgVo.class))
+                .collect(Collectors.toList());
+    }
+
+    private CpSendMsgTask createSendMsgTask(SendMsgDto dto) {
+        CpSendMsgTask cpSendMsgTask = new CpSendMsgTask();
+        cpSendMsgTask.setMsg(dto.getMsg());
+        cpSendMsgTask.setRoleIdCount((long) dto.getRoles().size());
+        cpSendMsgTask.setTaskName(dto.getTaskName());
+        cpSendMsgTask.setTaskCondition(dto.getSendConditionJson());
+        cpSendMsgTask.setGameId(dto.getGameId());
+        //任务类型
+        cpSendMsgTask.setType(CpSendMsgTaskTypeEnum.IMMEDIATE_TASK.getValue());
+        //任务状态
+        cpSendMsgTask.setStatus(CpSendMsgTaskStatusEnum.WAIT_SEND.getValue());
+        cpSendMsgTask.setCreateBy(dto.getCreateBy());
+        cpSendMsgTask.setCreateTime(LocalDateTime.now(ZoneId.of("UTC")));
+        cpSendMsgTask.setUpdateTime(LocalDateTime.now(ZoneId.of("UTC")));
+        return cpSendMsgTask;
+    }
 }

+ 50 - 9
game-module/game-module-manage/src/main/java/com/zanxiang/game/module/manage/service/impl/CpCallServiceImpl.java

@@ -1,6 +1,8 @@
 package com.zanxiang.game.module.manage.service.impl;
 
+import com.zanxiang.game.module.manage.pojo.dto.CpSendMsgResultDTO;
 import com.zanxiang.module.util.JsonUtil;
+import com.zanxiang.module.util.exception.BaseException;
 import org.springframework.http.HttpEntity;
 import org.springframework.http.HttpHeaders;
 import org.springframework.http.MediaType;
@@ -8,15 +10,12 @@ import org.springframework.web.client.RestTemplate;
 
 import java.nio.charset.StandardCharsets;
 import java.security.MessageDigest;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
+import java.util.*;
 
 /**
  * @author : lingfeng
  * @time : 2024-02-22
- * @description : CP接口交互
+ * @description : CP接口交互 demo类, 测试完成要删除
  */
 public class CpCallServiceImpl {
 
@@ -26,9 +25,51 @@ public class CpCallServiceImpl {
     private static final String SIGN_MD5 = "MD5";
 
 //    public static void main(String[] args) throws Exception {
-//        test();
+//
+//        String text = "尊敬的尊享玩家“角色名”:\n" +
+//                "叮,尊享管家小诗正在微信上等待与您的见面,根据您的游戏角色成长,小诗特意为您定制一份战力快速升级的攻略和几个尊享限定礼包,助您快速提升~\n" +
+//                "您要尽快通过游戏内“联系客服”按钮与我联系,时间有限,请您尽快与我联系哦。\n" +
+//                "联系时请您带上此页面截图,同时请您保密勿将此内容分享给其他玩家,可能会导致尊享限定礼包被冒领哦!";
+////        test();
+//        CpSendMsgResultDTO result = cpSendMsgApi("testMsgId2", "668", Collections.singletonList("821112073166082222"), text);
+//        System.out.println("11111111" + JsonUtil.toString(result));
 //    }
 
+    public static CpSendMsgResultDTO cpSendMsgApi(String msgId, String serverId, List<String> roleIdList, String text) throws Exception {
+        long time = System.currentTimeMillis() / 1000;
+        Map<String, Object> param = new HashMap<>(8);
+        param.put("msgId", msgId);
+        param.put("strRan", msgId);
+        param.put("time", time);
+        param.put("sign", MD5("key=" + "355b7f07125c1ef71cfd10166e0b90aa" + "&msgId=" + msgId + "&strRan=" + msgId + "&time=" + time));
+        param.put("pushType", 1);
+        param.put("serverid", serverId);
+        param.put("roleIds", roleIdList);
+        //图片地址弄一张最小的, CP方不会用, 有默认底图
+        List<String> imgList = Collections.singletonList("https://manage.84game.cn/image/WechatIMG56.jpeg");
+        Map<String, Object> msgContent = new HashMap<>(2);
+        msgContent.put("text", text);
+        msgContent.put("imgs", JsonUtil.toString(imgList));
+        param.put("msgContent", msgContent);
+        //请求头
+        HttpHeaders headers = new HttpHeaders();
+        headers.setContentType(MediaType.APPLICATION_JSON);
+        headers.set(HttpHeaders.ACCEPT_CHARSET, "UTF-8");
+        HttpEntity<String> request = new HttpEntity<>(JsonUtil.toString(param), headers);
+        String result;
+        try {
+            RestTemplate restTemplate = new RestTemplate();
+            result = restTemplate.postForObject("https://ht.lttx.t5yx.cn/extapi?action=BgzszhSendTip",
+                    request, String.class);
+        } catch (Exception e) {
+            System.out.println(e.getMessage());
+            throw new BaseException("消息发送失败");
+        }
+        System.out.println("返回结果" + result);
+        CpSendMsgResultDTO cpSendMsgResultDTO = JsonUtil.toObj(result, CpSendMsgResultDTO.class);
+        return cpSendMsgResultDTO;
+    }
+
     public static void test() throws Exception {
         String key = "355b7f07125c1ef71cfd10166e0b90aa";
         RestTemplate restTemplate = new RestTemplate();
@@ -54,10 +95,10 @@ public class CpCallServiceImpl {
         param.put("sign", CpCallServiceImpl.MD5(signStr));
 
 //        param.put("serverid", 226);
-        param.put("serverid", 592);
+        param.put("serverid", 668);
         List<String> roleIds = new ArrayList<>();
 //        roleIds.add("798136461189027272");
-        roleIds.add("815728771283100062");
+        roleIds.add("821112073166082222");
         param.put("roleIds", roleIds);
 
         param.put("pushType", 1);
@@ -71,7 +112,7 @@ public class CpCallServiceImpl {
 
         List<String> imgs = new ArrayList<>();
         //图片地址弄一张最小的, CP方不会用, 有默认底图
-        imgs.add("https://test.84game.cn/1709024863.jpeg");
+        imgs.add("https://manage.84game.cn/image/WechatIMG56.jpeg");
         msgContent.put("imgs", JsonUtil.toString(imgs));
 
         param.put("msgContent", msgContent);

+ 173 - 0
game-module/game-module-manage/src/main/java/com/zanxiang/game/module/manage/service/impl/CpSendMsgLogServiceImpl.java

@@ -0,0 +1,173 @@
+package com.zanxiang.game.module.manage.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
+import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.zanxiang.game.module.manage.enums.CpSendRoleResultEnum;
+import com.zanxiang.game.module.manage.pojo.dto.CpSendMsgResultDTO;
+import com.zanxiang.game.module.manage.service.ICpSendMsgLogService;
+import com.zanxiang.game.module.manage.service.ICpSendMsgResultService;
+import com.zanxiang.game.module.manage.service.IGameUserRoleService;
+import com.zanxiang.game.module.mybatis.entity.CpSendMsgLog;
+import com.zanxiang.game.module.mybatis.entity.CpSendMsgResult;
+import com.zanxiang.game.module.mybatis.entity.GameUserRole;
+import com.zanxiang.game.module.mybatis.mapper.CpSendMsgLogMapper;
+import com.zanxiang.module.util.JsonUtil;
+import com.zanxiang.module.util.exception.BaseException;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.http.HttpEntity;
+import org.springframework.http.HttpHeaders;
+import org.springframework.http.MediaType;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.support.TransactionTemplate;
+import org.springframework.web.client.RestTemplate;
+
+import java.nio.charset.StandardCharsets;
+import java.security.MessageDigest;
+import java.time.LocalDateTime;
+import java.util.*;
+import java.util.stream.Collectors;
+
+/**
+ * @author : lingfeng
+ * @time : 2024-03-14
+ * @description : CP消息发送记录
+ */
+@Slf4j
+@Service
+public class CpSendMsgLogServiceImpl extends ServiceImpl<CpSendMsgLogMapper, CpSendMsgLog> implements ICpSendMsgLogService {
+
+    private static final String SIGN_MD5 = "MD5";
+
+    private static final String CP_API_KEY = "355b7f07125c1ef71cfd10166e0b90aa";
+
+    @Autowired
+    private TransactionTemplate transactionTemplate;
+
+    @Autowired
+    private RestTemplate restTemplate;
+
+    @Autowired
+    private IGameUserRoleService gameUserRoleService;
+
+    @Autowired
+    private ICpSendMsgResultService cpSendMsgResultService;
+
+    @Override
+    public void cpSendMsg(Long taskId, Long gameId, String text, List<String> roleIdList) {
+        //查询角色区服信息
+        List<GameUserRole> gameUserRoleList = gameUserRoleService.list(new LambdaQueryWrapper<GameUserRole>()
+                .select(GameUserRole::getGameId, GameUserRole::getServerId, GameUserRole::getRoleId)
+                .eq(GameUserRole::getGameId, gameId)
+                .in(GameUserRole::getRoleId, roleIdList));
+        String msgId = UUID.randomUUID().toString().replace("-", "");
+        //保存发送记录
+        CpSendMsgLog cpSendMsgLog = this.transform(taskId, gameId, msgId, gameUserRoleList.size());
+        super.save(cpSendMsgLog);
+        if (CollectionUtils.isEmpty(gameUserRoleList)) {
+            return;
+        }
+        //角色信息按区服分组
+        Map<String, List<GameUserRole>> serverIdRoleMap = gameUserRoleList.stream()
+                .collect(Collectors.groupingBy(GameUserRole::getServerId));
+        serverIdRoleMap.forEach((serverId, roleList) -> {
+            List<String> serverRoleIdList = roleList.stream().map(GameUserRole::getRoleId).collect(Collectors.toList());
+            try {
+                CpSendMsgResultDTO result = this.cpSendMsgApi(msgId, serverId, serverRoleIdList, text);
+                this.resultHandle(cpSendMsgLog, result, serverId, serverRoleIdList);
+            } catch (Exception e) {
+                log.error("CP消息发送API调用异常, serverId : {}, roleList : {}", serverId, roleList);
+            }
+        });
+    }
+
+    private CpSendMsgLog transform(Long taskId, Long gameId, String msgId, Integer roleCount) {
+        return CpSendMsgLog.builder()
+                .msgId(msgId)
+                .taskId(taskId)
+                .gameId(gameId)
+                .roleCount(roleCount)
+                .successCount(0L)
+                .failCount(0L)
+                .createTime(LocalDateTime.now())
+                .build();
+    }
+
+    private void resultHandle(CpSendMsgLog cpSendMsgLog, CpSendMsgResultDTO result, String serverId, List<String> roleList) {
+        //结果列表
+        List<CpSendMsgResult> resultList = new ArrayList<>();
+        roleList.forEach(roleId -> {
+            //状态判断
+            CpSendRoleResultEnum resultEnum = result.getFailList().contains(roleId) ?
+                    CpSendRoleResultEnum.CP_SEND_ROLE_RESULT_FAIL : CpSendRoleResultEnum.CP_SEND_ROLE_RESULT_SUCCESS;
+            resultList.add(this.transform(cpSendMsgLog.getTaskId(), cpSendMsgLog.getMsgId(), resultEnum.getValue(),
+                    cpSendMsgLog.getGameId(), serverId, roleId));
+        });
+        //在同一个事物中进行表更新
+        transactionTemplate.execute(status -> {
+            cpSendMsgResultService.saveBatch(resultList);
+            super.update(new LambdaUpdateWrapper<CpSendMsgLog>()
+                    .setSql("success_count=success_count+" + result.getSucessCount())
+                    .setSql("fail_count=fail_count+" + result.getFailList().size())
+                    .eq(CpSendMsgLog::getMsgId, cpSendMsgLog.getMsgId())
+            );
+            return Boolean.TRUE;
+        });
+    }
+
+    private CpSendMsgResult transform(Long taskId, String msgId, String sendStatus, Long gameId, String serverId, String roleId) {
+        return CpSendMsgResult.builder()
+                .taskId(taskId)
+                .msgId(msgId)
+                .gameId(gameId)
+                .serverId(serverId)
+                .roleId(roleId)
+                .sendStatus(sendStatus)
+                .createTime(LocalDateTime.now())
+                .build();
+    }
+
+    private CpSendMsgResultDTO cpSendMsgApi(String msgId, String serverId, List<String> roleIdList, String text) throws Exception {
+        long time = System.currentTimeMillis() / 1000;
+        Map<String, Object> param = new HashMap<>(8);
+        param.put("msgId", msgId);
+        param.put("strRan", msgId);
+        param.put("time", time);
+        param.put("sign", this.MD5("key=" + CP_API_KEY + "&msgId=" + msgId + "&strRan=" + msgId + "&time=" + time));
+        param.put("pushType", 1);
+        param.put("serverid", serverId);
+        param.put("roleIds", roleIdList);
+        //图片地址弄一张最小的, CP方不会用, 有默认底图
+        List<String> imgList = Collections.singletonList("https://manage.84game.cn/image/WechatIMG56.jpeg");
+        Map<String, Object> msgContent = new HashMap<>(2);
+        msgContent.put("text", text);
+        msgContent.put("imgs", JsonUtil.toString(imgList));
+        param.put("msgContent", msgContent);
+        //请求头
+        HttpHeaders headers = new HttpHeaders();
+        headers.setContentType(MediaType.APPLICATION_JSON);
+        headers.set(HttpHeaders.ACCEPT_CHARSET, "UTF-8");
+        HttpEntity<String> request = new HttpEntity<>(JsonUtil.toString(param), headers);
+        String result;
+        try {
+            result = restTemplate.postForObject("https://ht.lttx.t5yx.cn/extapi?action=BgzszhSendTip",
+                    request, String.class);
+        } catch (Exception e) {
+            System.out.println(e.getMessage());
+            throw new BaseException("消息发送失败");
+        }
+        return JsonUtil.toObj(result, CpSendMsgResultDTO.class);
+    }
+
+    private String MD5(String data) throws Exception {
+        java.security.MessageDigest md = MessageDigest.getInstance(SIGN_MD5);
+        byte[] array = md.digest(data.getBytes(StandardCharsets.UTF_8));
+        StringBuilder sb = new StringBuilder();
+        for (byte item : array) {
+            sb.append(Integer.toHexString((item & 0xFF) | 0x100), 1, 3);
+        }
+        return sb.toString();
+    }
+}

+ 18 - 0
game-module/game-module-manage/src/main/java/com/zanxiang/game/module/manage/service/impl/CpSendMsgResultServiceImpl.java

@@ -0,0 +1,18 @@
+package com.zanxiang.game.module.manage.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.zanxiang.game.module.manage.service.ICpSendMsgResultService;
+import com.zanxiang.game.module.mybatis.entity.CpSendMsgResult;
+import com.zanxiang.game.module.mybatis.mapper.CpSendMsgResultMapper;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.stereotype.Service;
+
+/**
+ * @author : lingfeng
+ * @time : 2024-03-14
+ * @description : CP消息发送结果
+ */
+@Slf4j
+@Service
+public class CpSendMsgResultServiceImpl extends ServiceImpl<CpSendMsgResultMapper, CpSendMsgResult> implements ICpSendMsgResultService {
+}

+ 2 - 3
game-module/game-module-manage/src/main/java/com/zanxiang/game/module/manage/service/impl/GameGiftServiceImpl.java

@@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.core.toolkit.StringUtils;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.zanxiang.erp.base.ErpServer;
 import com.zanxiang.erp.base.rpc.ISysUserRpc;
 import com.zanxiang.erp.security.util.SecurityUtil;
@@ -11,14 +12,12 @@ import com.zanxiang.game.module.manage.pojo.dto.GameDTO;
 import com.zanxiang.game.module.manage.pojo.params.GameGiftAddParam;
 import com.zanxiang.game.module.manage.pojo.params.GameGiftListParam;
 import com.zanxiang.game.module.manage.pojo.vo.GameGiftListVO;
+import com.zanxiang.game.module.manage.service.IGameGiftService;
 import com.zanxiang.game.module.manage.service.IGameService;
 import com.zanxiang.game.module.manage.service.IGameSupperService;
 import com.zanxiang.game.module.mybatis.entity.GameGift;
 import com.zanxiang.game.module.mybatis.entity.GameSupper;
-import com.zanxiang.game.module.mybatis.entity.RoleMailRecord;
 import com.zanxiang.game.module.mybatis.mapper.GameGiftMapper;
-import com.zanxiang.game.module.manage.service.IGameGiftService;
-import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.zanxiang.module.util.exception.BaseException;
 import org.apache.dubbo.config.annotation.DubboReference;
 import org.springframework.beans.factory.annotation.Autowired;

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

@@ -10,7 +10,6 @@ import lombok.extern.slf4j.Slf4j;
 import org.springframework.stereotype.Service;
 
 import java.util.List;
-import java.util.Map;
 import java.util.stream.Collectors;
 
 /**

+ 2 - 3
game-module/game-module-manage/src/main/java/com/zanxiang/game/module/manage/service/impl/RoleAssignRecordServiceImpl.java

@@ -5,20 +5,19 @@ import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
 import com.baomidou.mybatisplus.core.toolkit.StringUtils;
-import com.zanxiang.corp.base.pojo.entity.CorpUserChangeRecord;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.zanxiang.erp.base.ErpServer;
 import com.zanxiang.erp.base.rpc.ISysUserRpc;
 import com.zanxiang.erp.security.util.SecurityUtil;
 import com.zanxiang.game.module.manage.pojo.dto.GameDTO;
-import com.zanxiang.game.module.manage.pojo.params.RoleAssignRecordListParam;
 import com.zanxiang.game.module.manage.pojo.params.RoleAssignRecordAddParam;
+import com.zanxiang.game.module.manage.pojo.params.RoleAssignRecordListParam;
 import com.zanxiang.game.module.manage.pojo.params.RoleInfoAndAgentParam;
 import com.zanxiang.game.module.manage.pojo.params.RoleSysUserAssignParam;
 import com.zanxiang.game.module.manage.pojo.vo.RoleAssignRecordListVO;
 import com.zanxiang.game.module.manage.service.*;
 import com.zanxiang.game.module.mybatis.entity.*;
 import com.zanxiang.game.module.mybatis.mapper.RoleAssignRecordMapper;
-import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.zanxiang.module.util.exception.BaseException;
 import org.apache.dubbo.config.annotation.DubboReference;
 import org.springframework.beans.factory.annotation.Autowired;

+ 4 - 4
game-module/game-module-manage/src/main/java/com/zanxiang/game/module/manage/service/impl/RoleGiftRecordServiceImpl.java

@@ -6,6 +6,7 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
 import com.baomidou.mybatisplus.core.toolkit.StringUtils;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.zanxiang.erp.base.ErpServer;
 import com.zanxiang.erp.base.rpc.ISysUserRpc;
 import com.zanxiang.erp.security.util.SecurityUtil;
@@ -13,15 +14,14 @@ import com.zanxiang.game.module.manage.pojo.dto.GameDTO;
 import com.zanxiang.game.module.manage.pojo.params.RoleGiftRecordAddParam;
 import com.zanxiang.game.module.manage.pojo.params.RoleGiftRecordListParam;
 import com.zanxiang.game.module.manage.pojo.vo.RoleGiftRecordListVO;
-import com.zanxiang.game.module.manage.pojo.vo.RoleMailRecordListVO;
 import com.zanxiang.game.module.manage.service.IGameGiftService;
 import com.zanxiang.game.module.manage.service.IGameService;
+import com.zanxiang.game.module.manage.service.IRoleGiftRecordService;
 import com.zanxiang.game.module.manage.service.IRoleOperateService;
-import com.zanxiang.game.module.mybatis.entity.*;
+import com.zanxiang.game.module.mybatis.entity.GameGift;
 import com.zanxiang.game.module.mybatis.entity.RoleGiftRecord;
+import com.zanxiang.game.module.mybatis.entity.RoleOperate;
 import com.zanxiang.game.module.mybatis.mapper.RoleGiftRecordMapper;
-import com.zanxiang.game.module.manage.service.IRoleGiftRecordService;
-import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import org.apache.dubbo.config.annotation.DubboReference;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;

+ 2 - 5
game-module/game-module-manage/src/main/java/com/zanxiang/game/module/manage/service/impl/RoleMailRecordServiceImpl.java

@@ -4,21 +4,18 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.zanxiang.erp.base.ErpServer;
 import com.zanxiang.erp.base.rpc.ISysUserRpc;
 import com.zanxiang.erp.security.util.SecurityUtil;
 import com.zanxiang.game.module.manage.pojo.params.RoleMailRecordAddParam;
 import com.zanxiang.game.module.manage.pojo.params.RoleMailRecordListParam;
 import com.zanxiang.game.module.manage.pojo.vo.RoleMailRecordListVO;
+import com.zanxiang.game.module.manage.service.IRoleMailRecordService;
 import com.zanxiang.game.module.manage.service.IRoleOperateService;
-import com.zanxiang.game.module.mybatis.entity.RoleGiftRecord;
-import com.zanxiang.game.module.mybatis.entity.RoleMailRecord;
 import com.zanxiang.game.module.mybatis.entity.RoleMailRecord;
 import com.zanxiang.game.module.mybatis.entity.RoleOperate;
 import com.zanxiang.game.module.mybatis.mapper.RoleMailRecordMapper;
-import com.zanxiang.game.module.manage.service.IRoleMailRecordService;
-import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
-import com.zanxiang.module.util.exception.BaseException;
 import org.apache.dubbo.config.annotation.DubboReference;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;

+ 66 - 0
game-module/game-module-mybatis/src/main/java/com/zanxiang/game/module/mybatis/entity/CpSendMsgLog.java

@@ -0,0 +1,66 @@
+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.io.Serializable;
+import java.time.LocalDateTime;
+
+/**
+ * @author : lingfeng
+ * @time : 2024-03-14
+ * @description : cp发送消息记录
+ */
+@Data
+@NoArgsConstructor
+@AllArgsConstructor
+@ToString
+@Builder
+@TableName("t_cp_send_msg_log")
+public class CpSendMsgLog implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 消息id
+     */
+    @TableId(value = "msg_id", type = IdType.INPUT)
+    private String msgId;
+
+    /**
+     * 任务id
+     */
+    private Long taskId;
+
+    /**
+     * 游戏id
+     */
+    private Long gameId;
+
+    /**
+     * 角色执行人数
+     */
+    private Integer roleCount;
+
+    /**
+     * 成功人数
+     */
+    private Long successCount;
+
+    /**
+     * 失败人数
+     */
+    private Long failCount;
+
+    /**
+     * 创建时间
+     */
+    private LocalDateTime createTime;
+
+    /**
+     * 更新时间
+     */
+    private LocalDateTime updateTime;
+}

+ 66 - 0
game-module/game-module-mybatis/src/main/java/com/zanxiang/game/module/mybatis/entity/CpSendMsgResult.java

@@ -0,0 +1,66 @@
+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.io.Serializable;
+import java.time.LocalDateTime;
+
+/**
+ * @author : lingfeng
+ * @time : 2024-03-14
+ * @description : cp发送消息结果
+ */
+@Data
+@NoArgsConstructor
+@AllArgsConstructor
+@ToString
+@Builder
+@TableName("t_cp_send_msg_result")
+public class CpSendMsgResult implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 主键
+     */
+    @TableId(value = "id", type = IdType.AUTO)
+    private Long id;
+
+    /**
+     * 任务id
+     */
+    private Long taskId;
+
+    /**
+     * 消息id
+     */
+    private String msgId;
+
+    /**
+     * 游戏id
+     */
+    private Long gameId;
+
+    /**
+     * 区服id
+     */
+    private String serverId;
+
+    /**
+     * 角色id
+     */
+    private String roleId;
+
+    /**
+     * 发送状态
+     */
+    private String sendStatus;
+
+    /**
+     * 创建时间
+     */
+    private LocalDateTime createTime;
+}

+ 1 - 1
game-module/game-module-mybatis/src/main/java/com/zanxiang/game/module/mybatis/entity/GameAdMonitor.java

@@ -5,8 +5,8 @@ import com.baomidou.mybatisplus.annotation.TableId;
 import com.baomidou.mybatisplus.annotation.TableName;
 import lombok.*;
 
-import java.time.LocalDateTime;
 import java.io.Serializable;
+import java.time.LocalDateTime;
 
 /**
  * 游戏广告监控告警配置表(TGameAdMonitor)实体类

+ 2 - 3
game-module/game-module-mybatis/src/main/java/com/zanxiang/game/module/mybatis/entity/GameGift.java

@@ -3,12 +3,11 @@ 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.io.Serializable;
 import java.time.LocalDateTime;
 
-import lombok.*;
-import lombok.experimental.Accessors;
-
 /**
  * <p>
  * 游戏礼包表

+ 1 - 2
game-module/game-module-mybatis/src/main/java/com/zanxiang/game/module/mybatis/entity/GameVip.java

@@ -5,10 +5,9 @@ import com.baomidou.mybatisplus.annotation.TableId;
 import com.baomidou.mybatisplus.annotation.TableName;
 import lombok.*;
 
+import java.io.Serializable;
 import java.math.BigDecimal;
 import java.time.LocalDateTime;
-import java.util.Date;
-import java.io.Serializable;
 
 /**
  * 游戏vip档位表(TGameVip)实体类

+ 1 - 3
game-module/game-module-mybatis/src/main/java/com/zanxiang/game/module/mybatis/entity/RoleAssignRecord.java

@@ -1,14 +1,12 @@
 package com.zanxiang.game.module.mybatis.entity;
 
 import com.baomidou.mybatisplus.annotation.*;
+import lombok.*;
 
 import java.io.Serializable;
 import java.time.LocalDate;
 import java.time.LocalDateTime;
 
-import lombok.*;
-import lombok.experimental.Accessors;
-
 /**
  * <p>
  * 角色指派记录表

+ 2 - 3
game-module/game-module-mybatis/src/main/java/com/zanxiang/game/module/mybatis/entity/RoleGiftRecord.java

@@ -3,12 +3,11 @@ 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.io.Serializable;
 import java.time.LocalDateTime;
 
-import lombok.*;
-import lombok.experimental.Accessors;
-
 /**
  * <p>
  * 角色礼包发送记录表

+ 2 - 3
game-module/game-module-mybatis/src/main/java/com/zanxiang/game/module/mybatis/entity/RoleMailRecord.java

@@ -3,12 +3,11 @@ 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.io.Serializable;
 import java.time.LocalDateTime;
 
-import lombok.*;
-import lombok.experimental.Accessors;
-
 /**
  * <p>
  * 角色邮件发送记录表

+ 1 - 3
game-module/game-module-mybatis/src/main/java/com/zanxiang/game/module/mybatis/entity/RoleOperate.java

@@ -1,13 +1,11 @@
 package com.zanxiang.game.module.mybatis.entity;
 
 import com.baomidou.mybatisplus.annotation.*;
+import lombok.*;
 
 import java.io.Serializable;
 import java.time.LocalDateTime;
 
-import lombok.*;
-import lombok.experimental.Accessors;
-
 /**
  * <p>
  * 角色操作表

+ 12 - 0
game-module/game-module-mybatis/src/main/java/com/zanxiang/game/module/mybatis/mapper/CpSendMsgLogMapper.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.CpSendMsgLog;
+
+/**
+ * @author : lingfeng
+ * @time : 2024-03-14
+ * @description : ${description}
+ */
+public interface CpSendMsgLogMapper extends BaseMapper<CpSendMsgLog> {
+}

+ 12 - 0
game-module/game-module-mybatis/src/main/java/com/zanxiang/game/module/mybatis/mapper/CpSendMsgResultMapper.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.CpSendMsgResult;
+
+/**
+ * @author : lingfeng
+ * @time : 2024-03-14
+ * @description : ${description}
+ */
+public interface CpSendMsgResultMapper extends BaseMapper<CpSendMsgResult> {
+}

+ 1 - 1
game-module/game-module-mybatis/src/main/java/com/zanxiang/game/module/mybatis/mapper/GameGiftMapper.java

@@ -1,7 +1,7 @@
 package com.zanxiang.game.module.mybatis.mapper;
 
-import com.zanxiang.game.module.mybatis.entity.GameGift;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.zanxiang.game.module.mybatis.entity.GameGift;
 
 /**
  * <p>

+ 1 - 1
game-module/game-module-mybatis/src/main/java/com/zanxiang/game/module/mybatis/mapper/RoleAssignRecordMapper.java

@@ -1,7 +1,7 @@
 package com.zanxiang.game.module.mybatis.mapper;
 
-import com.zanxiang.game.module.mybatis.entity.RoleAssignRecord;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.zanxiang.game.module.mybatis.entity.RoleAssignRecord;
 
 /**
  * <p>

+ 1 - 1
game-module/game-module-mybatis/src/main/java/com/zanxiang/game/module/mybatis/mapper/RoleGiftRecordMapper.java

@@ -1,7 +1,7 @@
 package com.zanxiang.game.module.mybatis.mapper;
 
-import com.zanxiang.game.module.mybatis.entity.RoleGiftRecord;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.zanxiang.game.module.mybatis.entity.RoleGiftRecord;
 
 /**
  * <p>

+ 1 - 1
game-module/game-module-mybatis/src/main/java/com/zanxiang/game/module/mybatis/mapper/RoleMailRecordMapper.java

@@ -1,7 +1,7 @@
 package com.zanxiang.game.module.mybatis.mapper;
 
-import com.zanxiang.game.module.mybatis.entity.RoleMailRecord;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.zanxiang.game.module.mybatis.entity.RoleMailRecord;
 
 /**
  * <p>

+ 1 - 1
game-module/game-module-mybatis/src/main/java/com/zanxiang/game/module/mybatis/mapper/RoleOperateMapper.java

@@ -1,7 +1,7 @@
 package com.zanxiang.game.module.mybatis.mapper;
 
-import com.zanxiang.game.module.mybatis.entity.RoleOperate;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.zanxiang.game.module.mybatis.entity.RoleOperate;
 
 /**
  * <p>