소스 검색

:feat:查询消息任务详情

zhangxianyu 1 년 전
부모
커밋
8f491e6ecb
13개의 변경된 파일335개의 추가작업 그리고 21개의 파일을 삭제
  1. 14 9
      game-data/game-data-serve/src/main/java/com/zanxiang/game/data/serve/controller/RoleManageController.java
  2. 5 0
      game-data/game-data-serve/src/main/java/com/zanxiang/game/data/serve/pojo/dto/MsgTaskDto.java
  3. 20 0
      game-data/game-data-serve/src/main/java/com/zanxiang/game/data/serve/pojo/dto/MsgTaskResultDto.java
  4. 45 0
      game-data/game-data-serve/src/main/java/com/zanxiang/game/data/serve/pojo/dto/TaskResultDto.java
  5. 9 4
      game-data/game-data-serve/src/main/java/com/zanxiang/game/data/serve/service/IRoleManageService.java
  6. 76 1
      game-data/game-data-serve/src/main/java/com/zanxiang/game/data/serve/service/impl/RoleManageServiceImpl.java
  7. 17 0
      game-module/game-module-base/src/main/java/com/zanxiang/game/module/base/pojo/params/SendMsgTaskResultParam.java
  8. 77 0
      game-module/game-module-base/src/main/java/com/zanxiang/game/module/base/pojo/vo/SendMsgResultVo.java
  9. 14 0
      game-module/game-module-base/src/main/java/com/zanxiang/game/module/base/rpc/ICPSendMsgRpc.java
  10. 12 7
      game-module/game-module-manage/src/main/java/com/zanxiang/game/module/manage/rpc/impl/CpSendMsgRpcImpl.java
  11. 9 0
      game-module/game-module-manage/src/main/java/com/zanxiang/game/module/manage/service/ICpSendMsgResultService.java
  12. 3 0
      game-module/game-module-manage/src/main/java/com/zanxiang/game/module/manage/service/impl/CPSendMsgTaskServiceImpl.java
  13. 34 0
      game-module/game-module-manage/src/main/java/com/zanxiang/game/module/manage/service/impl/CpSendMsgResultServiceImpl.java

+ 14 - 9
game-data/game-data-serve/src/main/java/com/zanxiang/game/data/serve/controller/RoleManageController.java

@@ -1,11 +1,9 @@
 package com.zanxiang.game.data.serve.controller;
 
+import com.zanxiang.game.data.serve.pojo.dto.*;
+import com.zanxiang.game.module.base.pojo.vo.SendMsgResultVo;
 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;
-import com.zanxiang.game.data.serve.pojo.dto.RoleRechargeRankingDTO;
-import com.zanxiang.game.data.serve.pojo.dto.SendMsgTaskDto;
 import com.zanxiang.game.data.serve.service.IRoleManageService;
 import com.zanxiang.game.data.serve.utils.Page;
 import com.zanxiang.module.util.pojo.ResultVO;
@@ -13,11 +11,9 @@ 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.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.RequestBody;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
+import org.springframework.web.bind.annotation.*;
 
+import javax.validation.Valid;
 import java.util.Map;
 
 /**
@@ -51,7 +47,7 @@ public class RoleManageController {
     @ApiOperation(value = "创建发送消息任务")
     @PreAuthorize(permissionKey = "roleManage:sendMsgTask:create")
     @PostMapping("/sendMsgTask")
-    public ResultVO createSendMsgTask(@RequestBody SendMsgTaskDto dto) {
+    public ResultVO createSendMsgTask(@RequestBody @Valid SendMsgTaskDto dto) {
         roleManageService.createSendMsgTask(dto);
         return ResultVO.ok("操作成功", true);
     }
@@ -63,4 +59,13 @@ public class RoleManageController {
         return ResultVO.ok(roleManageService.getSendMsgTaskList(dto));
     }
 
+
+    @ApiOperation(value = "查询发送消息任务结果")
+    @PreAuthorize(permissionKey = "roleManage:sendMsgTask:resultList")
+    @PostMapping("/sendMsgTask/resultList")
+    public ResultVO<Page<SendMsgResultVo>> getSendMsgResultList(@RequestBody @Valid MsgTaskResultDto msgTaskResultDto) {
+        return ResultVO.ok(roleManageService.getSendMsgResultList(msgTaskResultDto));
+    }
+
+
 }

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

@@ -4,6 +4,11 @@ import com.zanxiang.game.data.serve.pojo.base.BasePage;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 
+/**
+ * @author ZhangXianyu
+ * @time 2024-03-15 13:50:01
+ * @Description 消息任务查询dto
+ **/
 @Data
 public class MsgTaskDto extends BasePage {
 

+ 20 - 0
game-data/game-data-serve/src/main/java/com/zanxiang/game/data/serve/pojo/dto/MsgTaskResultDto.java

@@ -0,0 +1,20 @@
+package com.zanxiang.game.data.serve.pojo.dto;
+
+import com.zanxiang.game.data.serve.pojo.base.BasePage;
+import lombok.Data;
+
+import javax.validation.constraints.NotNull;
+import java.io.Serializable;
+
+/**
+ * @author ZhangXianyu
+ * @time 2024-03-15 13:50:22
+ * @Description 查询任务结果Dto
+ **/
+@Data
+public class MsgTaskResultDto extends BasePage implements Serializable {
+    private static final long serialVersionUID = 1L;
+
+    @NotNull(message = "任务id不能为空")
+    private Long taskId;
+}

+ 45 - 0
game-data/game-data-serve/src/main/java/com/zanxiang/game/data/serve/pojo/dto/TaskResultDto.java

@@ -0,0 +1,45 @@
+package com.zanxiang.game.data.serve.pojo.dto;
+
+import lombok.Data;
+
+import java.time.LocalDateTime;
+
+/**
+ * @author ZhangXianyu
+ * @time 2024-03-15 13:51:10
+ * @Description 补充任务查询结果Dto
+ **/
+@Data
+public class TaskResultDto {
+
+    /**
+     * 角色id
+     */
+    private String roleId;
+
+    /**
+     * 角色名称
+     */
+    private String roleName;
+
+    /**
+     * 角色创建时间
+     */
+    private LocalDateTime createTime;
+
+    /**
+     * 角色vip等级
+     */
+    private Integer roleVip;
+
+    /**
+     * 区服名称
+     */
+    private String serverName;
+
+    /**
+     * 游戏名称
+     */
+    private String gameName;
+
+}

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

@@ -1,10 +1,8 @@
 package com.zanxiang.game.data.serve.service;
 
+import com.zanxiang.game.data.serve.pojo.dto.*;
+import com.zanxiang.game.module.base.pojo.vo.SendMsgResultVo;
 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;
-import com.zanxiang.game.data.serve.pojo.dto.SendMsgTaskDto;
 import com.zanxiang.game.data.serve.utils.Page;
 
 import java.util.List;
@@ -36,4 +34,11 @@ public interface IRoleManageService {
      * @return
      */
     Page<SendMsgVo> getSendMsgTaskList(MsgTaskDto dto);
+
+    /**
+     * 查询发送消息任务结果
+     * @param msgTaskResultDto
+     * @return
+     */
+    Page<SendMsgResultVo> getSendMsgResultList(MsgTaskResultDto msgTaskResultDto);
 }

+ 76 - 1
game-data/game-data-serve/src/main/java/com/zanxiang/game/data/serve/service/impl/RoleManageServiceImpl.java

@@ -2,7 +2,8 @@ package com.zanxiang.game.data.serve.service.impl;
 
 import com.alibaba.fastjson2.JSON;
 import com.zanxiang.game.data.serve.pojo.dto.*;
-import com.zanxiang.game.data.serve.pojo.vo.GameDataDayVO;
+import com.zanxiang.game.module.base.pojo.params.SendMsgTaskResultParam;
+import com.zanxiang.game.module.base.pojo.vo.SendMsgResultVo;
 import com.zanxiang.game.module.base.pojo.vo.SendMsgVo;
 import com.zanxiang.erp.base.ErpServer;
 import com.zanxiang.erp.base.rpc.ISysUserRpc;
@@ -592,6 +593,80 @@ public class RoleManageServiceImpl implements IRoleManageService {
         }
     }
 
+    /**
+     * 查询发送消息任务结果
+     * @param msgTaskResultDto msgTaskResultDto
+     * @return Page<SendMsgResultVo>
+     */
+    @Override
+    public Page<SendMsgResultVo> getSendMsgResultList(MsgTaskResultDto msgTaskResultDto) {
+        try {
+            SendMsgTaskResultParam param = new SendMsgTaskResultParam();
+            param.setTaskId(msgTaskResultDto.getTaskId());
+            param.setPageNum(msgTaskResultDto.getPageNum());
+            param.setPageSize(msgTaskResultDto.getPageSize());
+            PageUtil<SendMsgResultVo> sendMsgTaskResultList = sendMsgRpc.getSendMsgTaskResultList(param);
+            if(CollectionUtils.isEmpty(sendMsgTaskResultList.getRecords())){
+                return new Page<>(sendMsgTaskResultList.getRecords(),sendMsgTaskResultList.getTotal(),sendMsgTaskResultList.getSize(),sendMsgTaskResultList.getCurrent(),sendMsgTaskResultList.getPages());
+            }
+            //取角色id变成list
+            List<String> roleId = sendMsgTaskResultList.getRecords().stream().
+                    map(SendMsgResultVo::getRoleId).collect(Collectors.toList());
+
+            SendMsgResultVo sendMsgResultVo = sendMsgTaskResultList.getRecords().get(0);
+            Criteria cri = Cnd.cri();
+            //拼接游戏ID
+            cri.where().andInStrList("role_id", roleId);
+            cri.where().andEquals("parent_id", sendMsgResultVo.getGameId());
+
+            //补齐参数
+            Sql sql = Sqls.create(getTaskResultSql() + cri);
+            sql.setCallback(Sqls.callback.entities());
+            sql.setEntity(dao.getEntity(TaskResultDto.class));
+            dao.execute(sql);
+            List<TaskResultDto> list = sql.getList(TaskResultDto.class);
+            //拼成map key为角色id
+            HashMap<String, TaskResultDto> taskResultMap = new HashMap<>();
+            list.forEach(item -> {
+                taskResultMap.put(item.getRoleId(), item);
+            });
+            sendMsgTaskResultList.getRecords().forEach(item -> {
+                TaskResultDto taskResultDto = taskResultMap.get(item.getRoleId());
+                if(taskResultDto!=null){
+                    item.setGameName(taskResultDto.getGameName());
+                    item.setRoleName(taskResultDto.getRoleName());
+                    item.setRoleCreateTime(taskResultDto.getCreateTime());
+                    item.setServerName(taskResultDto.getServerName());
+                    item.setRoleVip(taskResultDto.getRoleVip());
+                }
+            });
+
+            return new Page<>(sendMsgTaskResultList.getRecords(),sendMsgTaskResultList.getTotal(),sendMsgTaskResultList.getSize(),sendMsgTaskResultList.getCurrent(),sendMsgTaskResultList.getPages());
+        }catch (Exception e){
+            log.error("查询发送消息任务结果失败", e);
+            throw new BaseException("查询发送消息任务结果失败");
+        }
+    }
+
+    /**
+     * 补充查询发送消息任务结果sql
+     * @return String
+     */
+    private String getTaskResultSql() {
+        return """
+                select
+                    a.role_name,
+                    a.role_id,
+                    a.server_name,
+                    a.create_time,
+                    a.role_vip,
+                    b.game_name
+                    from dm_game_order.t_game_user_role a
+                         left join dm_game_order.t_game b on a.source_system= b.source_system and a.game_id = b.id
+                """;
+
+    }
+
 
     /**
      * 查询游戏sql

+ 17 - 0
game-module/game-module-base/src/main/java/com/zanxiang/game/module/base/pojo/params/SendMsgTaskResultParam.java

@@ -0,0 +1,17 @@
+package com.zanxiang.game.module.base.pojo.params;
+
+import com.zanxiang.module.web.pojo.BaseListDTO;
+import lombok.Data;
+
+import java.io.Serializable;
+
+@Data
+public class SendMsgTaskResultParam extends BaseListDTO implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 任务id
+     */
+    private Long taskId;
+}

+ 77 - 0
game-module/game-module-base/src/main/java/com/zanxiang/game/module/base/pojo/vo/SendMsgResultVo.java

@@ -0,0 +1,77 @@
+package com.zanxiang.game.module.base.pojo.vo;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.time.LocalDateTime;
+
+@Data
+public class SendMsgResultVo implements Serializable {
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 主键
+     */
+    private Long id;
+
+    /**
+     * 任务id
+     */
+    private Long taskId;
+
+    /**
+     * 消息id
+     */
+    private String msgId;
+
+    /**
+     * 游戏id
+     */
+    private Long gameId;
+    /**
+     * 游戏名称
+     */
+    private String gameName;
+
+    /**
+     * 区服id
+     */
+    private String serverId;
+
+    /**
+     * 区服名称
+     */
+    private String serverName;
+
+    /**
+     * 角色id
+     */
+    private String roleId;
+    /**
+     * 角色名称
+     */
+    private String roleName;
+    /**
+     * 角色VIP
+     */
+    private Integer roleVip;
+    /**
+     * 创角时间
+     */
+    private LocalDateTime roleCreateTime;
+
+    /**
+     * 发送状态
+     */
+    private String sendStatus;
+
+    /**
+     * 发送时间
+     */
+    private LocalDateTime createTime;
+
+
+
+}

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

@@ -2,6 +2,8 @@ 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.params.SendMsgTaskResultParam;
+import com.zanxiang.game.module.base.pojo.vo.SendMsgResultVo;
 import com.zanxiang.game.module.base.pojo.vo.SendMsgVo;
 import com.zanxiang.game.module.base.util.PageUtil;
 import com.zanxiang.module.util.pojo.ResultVO;
@@ -20,5 +22,17 @@ public interface ICPSendMsgRpc {
      */
     ResultVO<Boolean> sendMsg(SendMsgDto sendMsgDto);
 
+    /**
+     * 获取发送消息任务列表
+     * @param sendMsgTaskParam
+     * @return
+     */
     PageUtil<SendMsgVo> getSendMsgTaskList(SendMsgTaskParam sendMsgTaskParam);
+
+    /**
+     * 获取发送消息任务结果
+     * @param sendMsgTaskResultParam
+     * @return
+     */
+    PageUtil<SendMsgResultVo> getSendMsgTaskResultList(SendMsgTaskResultParam sendMsgTaskResultParam);
 }

+ 12 - 7
game-module/game-module-manage/src/main/java/com/zanxiang/game/module/manage/rpc/impl/CpSendMsgRpcImpl.java

@@ -2,10 +2,13 @@ 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.params.SendMsgTaskResultParam;
+import com.zanxiang.game.module.base.pojo.vo.SendMsgResultVo;
 import com.zanxiang.game.module.base.pojo.vo.SendMsgVo;
 import com.zanxiang.game.module.base.rpc.ICPSendMsgRpc;
 import com.zanxiang.game.module.base.util.PageUtil;
 import com.zanxiang.game.module.manage.service.ICPSendMsgTaskService;
+import com.zanxiang.game.module.manage.service.ICpSendMsgResultService;
 import com.zanxiang.module.util.pojo.ResultVO;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.dubbo.config.annotation.DubboService;
@@ -17,22 +20,24 @@ import javax.annotation.Resource;
 public class CpSendMsgRpcImpl implements ICPSendMsgRpc {
 
     @Resource
-    private ICPSendMsgTaskService sendMsgTaskService;
+    private ICPSendMsgTaskService cpSendMsgTaskService;
+    @Resource
+    private ICpSendMsgResultService cpSendMsgResultService;
 
     @Override
     public ResultVO<Boolean> sendMsg(SendMsgDto sendMsgDto) {
-       return sendMsgTaskService.sendMsg(sendMsgDto);
+       return cpSendMsgTaskService.sendMsg(sendMsgDto);
     }
 
     @Override
     public PageUtil<SendMsgVo> getSendMsgTaskList(SendMsgTaskParam param) {
-       return sendMsgTaskService.getSendMsgTaskList(param);
+       return cpSendMsgTaskService.getSendMsgTaskList(param);
     }
 
-
-
-
-
+    @Override
+    public PageUtil<SendMsgResultVo> getSendMsgTaskResultList(SendMsgTaskResultParam sendMsgTaskResultParam) {
+        return cpSendMsgResultService.getSendMsgTaskResultList(sendMsgTaskResultParam);
+    }
 
 
 }

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

@@ -1,6 +1,9 @@
 package com.zanxiang.game.module.manage.service;
 
 import com.baomidou.mybatisplus.extension.service.IService;
+import com.zanxiang.game.module.base.pojo.params.SendMsgTaskResultParam;
+import com.zanxiang.game.module.base.pojo.vo.SendMsgResultVo;
+import com.zanxiang.game.module.base.util.PageUtil;
 import com.zanxiang.game.module.mybatis.entity.CpSendMsgResult;
 
 /**
@@ -9,4 +12,10 @@ import com.zanxiang.game.module.mybatis.entity.CpSendMsgResult;
  * @description :
  */
 public interface ICpSendMsgResultService extends IService<CpSendMsgResult> {
+    /**
+     * 获取发送消息任务结果列表
+     * @param sendMsgTaskResultParam
+     * @return
+     */
+    PageUtil<SendMsgResultVo> getSendMsgTaskResultList(SendMsgTaskResultParam sendMsgTaskResultParam);
 }

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

@@ -45,6 +45,9 @@ public class CPSendMsgTaskServiceImpl extends ServiceImpl<CpSendMsgTaskMapper, C
             sendMsgTaskService.save(cpSendMsgTask);
             //发消息
             cpSendMsgLogService.cpSendMsg(cpSendMsgTask.getId(), sendMsgDto.getGameId(), sendMsgDto.getMsg(), sendMsgDto.getRoles());
+            //成功后修改状态
+            cpSendMsgTask.setStatus(CpSendMsgTaskStatusEnum.SUCCESS_SEND.getValue());
+            sendMsgTaskService.updateById(cpSendMsgTask);
             log.info("发送消息成功");
             return ResultVO.ok();
         } catch (Exception e) {

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

@@ -1,12 +1,24 @@
 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.params.SendMsgTaskResultParam;
+import com.zanxiang.game.module.base.pojo.vo.SendMsgResultVo;
+import com.zanxiang.game.module.base.pojo.vo.SendMsgVo;
+import com.zanxiang.game.module.base.util.PageUtil;
 import com.zanxiang.game.module.manage.service.ICpSendMsgResultService;
 import com.zanxiang.game.module.mybatis.entity.CpSendMsgResult;
+import com.zanxiang.game.module.mybatis.entity.CpSendMsgTask;
 import com.zanxiang.game.module.mybatis.mapper.CpSendMsgResultMapper;
+import com.zanxiang.module.util.bean.BeanUtil;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.stereotype.Service;
 
+import java.util.List;
+import java.util.Objects;
+import java.util.stream.Collectors;
+
 /**
  * @author : lingfeng
  * @time : 2024-03-14
@@ -15,4 +27,26 @@ import org.springframework.stereotype.Service;
 @Slf4j
 @Service
 public class CpSendMsgResultServiceImpl extends ServiceImpl<CpSendMsgResultMapper, CpSendMsgResult> implements ICpSendMsgResultService {
+
+
+    @Override
+    public PageUtil<SendMsgResultVo> getSendMsgTaskResultList(SendMsgTaskResultParam param) {
+        Page<CpSendMsgResult> page = this.page(new Page<>(param.getPageNum(), param.getPageSize()),
+                new LambdaQueryWrapper<CpSendMsgResult>()
+                        .eq(CpSendMsgResult::getTaskId, param.getTaskId())
+                        .orderByDesc(CpSendMsgResult::getCreateTime)
+        );
+        List<CpSendMsgResult> cpSendMsgResults = page.getRecords();
+        List<SendMsgResultVo> sendMsgVos = toVo(cpSendMsgResults);
+        return new PageUtil<>(sendMsgVos, page.getTotal(), param.getPageSize(), param.getPageNum(),0);
+    }
+
+    private List<SendMsgResultVo> toVo(List<CpSendMsgResult> cpSendMsgResults) {
+        if (Objects.isNull(cpSendMsgResults) || cpSendMsgResults.isEmpty()) {
+            return null;
+        }
+        return cpSendMsgResults.stream()
+                .map(task -> BeanUtil.copy(task, SendMsgResultVo.class))
+                .collect(Collectors.toList());
+    }
 }