Kaynağa Gözat

:fix:发消息

zhangxianyu 1 yıl önce
ebeveyn
işleme
0b3c11cd94

+ 0 - 45
game-data/game-data-base/src/main/java/com/zangxiang/game/base/pojo/dto/SendMsgDto.java

@@ -1,45 +0,0 @@
-package com.zangxiang.game.base.pojo.dto;
-
-import lombok.Data;
-
-import java.io.Serializable;
-import java.time.LocalDate;
-import java.util.List;
-
-@Data
-public class SendMsgDto implements Serializable {
-
-    private static final long serialVersionUID = 1L;
-
-    /**
-     * 创建人
-     */
-    private Long createBy;
-
-    /**
-     * 任务名称
-     */
-    private String taskName;
-    /**
-     * 消息
-     */
-    private String msg;
-    /**
-     * 角色列表
-     */
-    private List<String> roles;
-
-    /**
-     * 发送对象条件(筛选条件放入JSON)
-     */
-    private String sendConditionJson;
-
-    /**
-     * 游戏名称
-     */
-    private String gameName;
-
-
-
-
-}

+ 0 - 20
game-data/game-data-base/src/main/java/com/zangxiang/game/base/rpc/SendMsgRpc.java

@@ -1,20 +0,0 @@
-package com.zangxiang.game.base.rpc;
-
-
-import com.zangxiang.game.base.pojo.dto.SendMsgDto;
-import com.zangxiang.game.base.pojo.vo.SendMsgVo;
-import com.zanxiang.module.util.pojo.ResultVO;
-import org.apache.dubbo.common.utils.DefaultPage;
-import org.apache.dubbo.common.utils.Page;
-
-/**
- * @author : ZhangXianyu
- * @time : 2024-03-13 11:05:18
- * @description : 发送消息
- */
-public interface SendMsgRpc {
-
-    ResultVO<Boolean> sendMsg(SendMsgDto sendMsgDto);
-
-    ResultVO<DefaultPage<SendMsgVo>> getSendMsgTaskList();
-}

+ 27 - 19
game-data/game-data-serve/src/main/java/com/zanxiang/game/data/serve/pojo/dto/SendMsgTaskDto.java

@@ -22,25 +22,9 @@ public class SendMsgTaskDto  implements Serializable {
     private String taskName;
     private String taskName;
 
 
     /**
     /**
-     * 任务调度策略
-     * {@link TaskStrategyEnum}
+     * 游戏id
      */
      */
-    private Integer taskStrategy;
-
-    /**
-     * 定时发送时间
-     */
-    private LocalDate sendOnTime;
-
-    /**
-     * 定时发送开始时间
-     */
-    private LocalDate everyDayBeginTime;
-
-    /**
-     * 定时发送结束时间(默认2099表示永久)
-     */
-    private LocalDate everyDayEndTime;
+    private Long gameId;
 
 
     /**
     /**
      * 发送文本内容
      * 发送文本内容
@@ -52,11 +36,35 @@ public class SendMsgTaskDto  implements Serializable {
     private RoleRechargeRankingDTO roleRechargeRankingDTO;
     private RoleRechargeRankingDTO roleRechargeRankingDTO;
 
 
     /**
     /**
-     * 用户id
+     * 角色id
      */
      */
     private List<String> roleIds;
     private List<String> roleIds;
 
 
 
 
+//    /**
+//     * 任务调度策略
+//     * {@link TaskStrategyEnum}
+//     */
+//    private Integer taskStrategy;
+//
+//    /**
+//     * 定时发送时间
+//     */
+//    private LocalDate sendOnTime;
+//
+//    /**
+//     * 定时发送开始时间
+//     */
+//    private LocalDate everyDayBeginTime;
+//
+//    /**
+//     * 定时发送结束时间(默认2099表示永久)
+//     */
+//    private LocalDate everyDayEndTime;
+
+
+
+
 
 
 
 
 }
 }

+ 31 - 9
game-data/game-data-serve/src/main/java/com/zanxiang/game/data/serve/service/impl/RoleManageServiceImpl.java

@@ -1,7 +1,6 @@
 package com.zanxiang.game.data.serve.service.impl;
 package com.zanxiang.game.data.serve.service.impl;
 
 
 import com.alibaba.fastjson2.JSON;
 import com.alibaba.fastjson2.JSON;
-import com.zangxiang.game.base.pojo.dto.SendMsgDto;
 import com.zangxiang.game.base.pojo.vo.SendMsgVo;
 import com.zangxiang.game.base.pojo.vo.SendMsgVo;
 import com.zanxiang.erp.base.ErpServer;
 import com.zanxiang.erp.base.ErpServer;
 import com.zanxiang.erp.base.rpc.ISysUserRpc;
 import com.zanxiang.erp.base.rpc.ISysUserRpc;
@@ -13,7 +12,8 @@ import com.zanxiang.game.data.serve.pojo.dto.SendMsgTaskDto;
 import com.zanxiang.game.data.serve.pojo.enums.OrderByEnum;
 import com.zanxiang.game.data.serve.pojo.enums.OrderByEnum;
 import com.zanxiang.game.data.serve.service.IRoleManageService;
 import com.zanxiang.game.data.serve.service.IRoleManageService;
 import com.zanxiang.game.data.serve.utils.Page;
 import com.zanxiang.game.data.serve.utils.Page;
-import com.zanxiang.module.util.JsonUtil;
+import com.zanxiang.game.module.base.pojo.dto.SendMsgDto;
+import com.zanxiang.game.module.base.rpc.SendMsgRpc;
 import com.zanxiang.module.util.exception.BaseException;
 import com.zanxiang.module.util.exception.BaseException;
 import com.zanxiang.module.util.pojo.ResultVO;
 import com.zanxiang.module.util.pojo.ResultVO;
 import lombok.extern.slf4j.Slf4j;
 import lombok.extern.slf4j.Slf4j;
@@ -28,8 +28,8 @@ import org.nutz.dao.sql.Criteria;
 import org.nutz.dao.sql.Sql;
 import org.nutz.dao.sql.Sql;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.stereotype.Service;
-import com.zangxiang.game.base.rpc.SendMsgRpc;
 
 
+import javax.validation.Valid;
 import java.util.*;
 import java.util.*;
 import java.util.stream.Collectors;
 import java.util.stream.Collectors;
 
 
@@ -336,6 +336,9 @@ public class RoleManageServiceImpl implements IRoleManageService {
      */
      */
     @Override
     @Override
     public void createSendMsgTask(SendMsgTaskDto dto) {
     public void createSendMsgTask(SendMsgTaskDto dto) {
+        //校验参数
+        validation(dto);
+
         //获取当前用户id
         //获取当前用户id
         Long sysUserId = SecurityUtil.getUserId();
         Long sysUserId = SecurityUtil.getUserId();
 
 
@@ -349,6 +352,26 @@ 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) {
     private SendMsgDto buildSendMsgDto(SendMsgTaskDto dto, Long sysUserId) {
         //先查出来所有的角色
         //先查出来所有的角色
         List<Map> roleList = getRoleList(dto.getRoleRechargeRankingDTO());
         List<Map> roleList = getRoleList(dto.getRoleRechargeRankingDTO());
@@ -359,17 +382,16 @@ public class RoleManageServiceImpl implements IRoleManageService {
                 .collect(Collectors.toList());
                 .collect(Collectors.toList());
 
 
         SendMsgDto sendMsgDto = new SendMsgDto();
         SendMsgDto sendMsgDto = new SendMsgDto();
+        //任务名称
         sendMsgDto.setTaskName(dto.getTaskName());
         sendMsgDto.setTaskName(dto.getTaskName());
+        //消息
         sendMsgDto.setMsg(dto.getSendContent());
         sendMsgDto.setMsg(dto.getSendContent());
-
+        //游戏id
+        sendMsgDto.setGameId(dto.getGameId());
         //暂时用前端传的角色id后期在用自己查的
         //暂时用前端传的角色id后期在用自己查的
         sendMsgDto.setRoles(dto.getRoleIds());
         sendMsgDto.setRoles(dto.getRoleIds());
+        //创建人
         sendMsgDto.setCreateBy(sysUserId);
         sendMsgDto.setCreateBy(sysUserId);
-
-        if (!roleList.isEmpty()) {
-            String gameName = roleList.get(0).get("role_reg_parent_game_name").toString();
-            sendMsgDto.setGameName(gameName);
-        }
         //条件
         //条件
         RoleRechargeRankingDTO roleRechargeRankingDTO = dto.getRoleRechargeRankingDTO();
         RoleRechargeRankingDTO roleRechargeRankingDTO = dto.getRoleRechargeRankingDTO();
         sendMsgDto.setSendConditionJson(JSON.toJSONString(roleRechargeRankingDTO));
         sendMsgDto.setSendConditionJson(JSON.toJSONString(roleRechargeRankingDTO));

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

@@ -11,16 +11,15 @@ public class SendMsgDto implements Serializable {
 
 
     private static final long serialVersionUID = 1L;
     private static final long serialVersionUID = 1L;
 
 
-    /**
-     * 任务名称
-     */
-    private String taskName;
-
     /**
     /**
      * 创建人
      * 创建人
      */
      */
     private Long createBy;
     private Long createBy;
 
 
+    /**
+     * 任务名称
+     */
+    private String taskName;
     /**
     /**
      * 消息
      * 消息
      */
      */
@@ -38,6 +37,7 @@ public class SendMsgDto implements Serializable {
     /**
     /**
      * 游戏名称
      * 游戏名称
      */
      */
-    private String gameName;
+    private Long gameId;
+
 
 
 }
 }

+ 31 - 0
game-module/game-module-manage/src/main/java/com/zanxiang/game/module/manage/enums/MsgTaskStatusEnum.java

@@ -0,0 +1,31 @@
+package com.zanxiang.game.module.manage.enums;
+
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+
+
+/**
+ * @author : ZhangXianyu
+ * @time : 2024-03-13 19:25:51
+ * @description : 任务状态枚举
+ */
+@Getter
+@AllArgsConstructor
+public enum MsgTaskStatusEnum {
+
+    /**
+     * 已发送
+     */
+    SUCCESS_SEND("success_send"),
+    /**
+     * 待发送
+     */
+    WAIT_SEND("wait_send");
+
+
+    /**
+     * 任务类型
+     */
+    private String name;
+
+}

+ 35 - 0
game-module/game-module-manage/src/main/java/com/zanxiang/game/module/manage/enums/MsgTaskTypeEnum.java

@@ -0,0 +1,35 @@
+package com.zanxiang.game.module.manage.enums;
+
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+
+
+/**
+ * @author : ZhangXianyu
+ * @time : 2024-03-13 19:18:30
+ * @description : 消息任务类型枚举
+ */
+@Getter
+@AllArgsConstructor
+public enum MsgTaskTypeEnum {
+
+    /**
+     * 即时任务
+     */
+    IMMEDIATE_TASK("immediate_task"),
+    /**
+     * 循环任务
+     */
+    CYCLE_TASK("cycle_task"),
+    /**
+     * 定时任务
+     */
+    SCHEDULE_TASK("schedule_task");
+
+
+    /**
+     * 任务类型
+     */
+    private String name;
+
+}

+ 21 - 12
game-module/game-module-manage/src/main/java/com/zanxiang/game/module/manage/rpc/impl/SendMsgImpl.java

@@ -2,6 +2,8 @@ package com.zanxiang.game.module.manage.rpc.impl;
 
 
 import com.zanxiang.game.module.base.pojo.dto.SendMsgDto;
 import com.zanxiang.game.module.base.pojo.dto.SendMsgDto;
 import com.zanxiang.game.module.base.rpc.SendMsgRpc;
 import com.zanxiang.game.module.base.rpc.SendMsgRpc;
+import com.zanxiang.game.module.manage.enums.MsgTaskStatusEnum;
+import com.zanxiang.game.module.manage.enums.MsgTaskTypeEnum;
 import com.zanxiang.game.module.manage.service.ISendMsgTaskService;
 import com.zanxiang.game.module.manage.service.ISendMsgTaskService;
 import com.zanxiang.game.module.mybatis.entity.SendMsgTask;
 import com.zanxiang.game.module.mybatis.entity.SendMsgTask;
 import com.zanxiang.module.util.pojo.ResultVO;
 import com.zanxiang.module.util.pojo.ResultVO;
@@ -9,6 +11,9 @@ import lombok.extern.slf4j.Slf4j;
 import org.apache.dubbo.config.annotation.DubboService;
 import org.apache.dubbo.config.annotation.DubboService;
 
 
 import javax.annotation.Resource;
 import javax.annotation.Resource;
+import java.time.LocalDate;
+import java.time.LocalDateTime;
+import java.time.ZoneId;
 
 
 @DubboService
 @DubboService
 @Slf4j
 @Slf4j
@@ -21,7 +26,7 @@ public class SendMsgImpl implements SendMsgRpc {
     public ResultVO<Boolean> sendMsg(SendMsgDto sendMsgDto) {
     public ResultVO<Boolean> sendMsg(SendMsgDto sendMsgDto) {
         try {
         try {
             // 数据校验
             // 数据校验
-            if (sendMsgDto == null || sendMsgDto.getMsg() == null || sendMsgDto.getGameName() == null || sendMsgDto.getCreateBy() == null || sendMsgDto.getRoles() == null || sendMsgDto.getRoles().isEmpty()) {
+            if (sendMsgDto == null || sendMsgDto.getMsg() == null || sendMsgDto.getGameId() == null || sendMsgDto.getCreateBy() == null || sendMsgDto.getRoles() == null || sendMsgDto.getRoles().isEmpty()) {
                 return ResultVO.fail("参数不能为空");
                 return ResultVO.fail("参数不能为空");
             }
             }
             //创建任务
             //创建任务
@@ -37,16 +42,20 @@ public class SendMsgImpl implements SendMsgRpc {
         }
         }
     }
     }
 
 
-    private SendMsgTask createSendMsgTask(SendMsgDto sendMsgDto) {
-//        SendMsgTask sendMsgTask = new SendMsgTask();
-//        sendMsgTask.setTaskName(sendMsgDto.getTaskName());
-//        sendMsgTask.setMsg(sendMsgDto.getMsg());
-//        sendMsgTask.setTaskCondition(sendMsgDto.getSendConditionJson());
-//        sendMsgTask.setGameName(sendMsgDto.getGameName());
-//        sendMsgTask.setCreateBy(sendMsgDto.getCreateBy());
-//        sendMsgTask.setCreateTime(LocalDate.now(ZoneId.of("UTC")));
-//        sendMsgTask.setRoleIds(String.join(",", sendMsgDto.getRoles()));
-//        return sendMsgTask;
-        return null;
+    private SendMsgTask createSendMsgTask(SendMsgDto dto) {
+        SendMsgTask sendMsgTask = new SendMsgTask();
+        sendMsgTask.setMsg(dto.getMsg());
+        sendMsgTask.setRoleIdCount((long) dto.getRoles().size());
+        sendMsgTask.setTaskName(dto.getTaskName());
+        sendMsgTask.setTaskCondition(dto.getSendConditionJson());
+        sendMsgTask.setGameId(dto.getGameId());
+        //任务类型
+        sendMsgTask.setType(MsgTaskTypeEnum.IMMEDIATE_TASK.getName());
+        //任务状态
+        sendMsgTask.setStatus(MsgTaskStatusEnum.WAIT_SEND.getName());
+        sendMsgTask.setCreateBy(dto.getCreateBy());
+        sendMsgTask.setCreateTime(LocalDateTime.now(ZoneId.of("UTC")));
+        sendMsgTask.setUpdateTime(LocalDateTime.now(ZoneId.of("UTC")));
+        return sendMsgTask;
     }
     }
 }
 }