Parcourir la source

fix : 区服指派接口提交

bilingfeng il y a 1 an
Parent
commit
5b421a4cba
24 fichiers modifiés avec 456 ajouts et 137 suppressions
  1. 1 1
      game-module/game-module-base/src/main/java/com/zanxiang/game/module/base/rpc/ICPSendMsgRpc.java
  2. 9 0
      game-module/game-module-manage/src/main/java/com/zanxiang/game/module/manage/controller/GameServerController.java
  3. 5 5
      game-module/game-module-manage/src/main/java/com/zanxiang/game/module/manage/enums/CpSendMsgTaskStatusEnum.java
  4. 7 6
      game-module/game-module-manage/src/main/java/com/zanxiang/game/module/manage/enums/CpSendMsgTaskTypeEnum.java
  5. 29 0
      game-module/game-module-manage/src/main/java/com/zanxiang/game/module/manage/enums/GameServerAssignEnum.java
  6. 37 0
      game-module/game-module-manage/src/main/java/com/zanxiang/game/module/manage/pojo/params/GameServerAssignParam.java
  7. 32 1
      game-module/game-module-manage/src/main/java/com/zanxiang/game/module/manage/pojo/vo/GameServerListVO.java
  8. 60 0
      game-module/game-module-manage/src/main/java/com/zanxiang/game/module/manage/rpc/impl/CpSendMsgRpcImpl.java
  9. 0 61
      game-module/game-module-manage/src/main/java/com/zanxiang/game/module/manage/rpc/impl/SendMsgImpl.java
  10. 7 0
      game-module/game-module-manage/src/main/java/com/zanxiang/game/module/manage/service/ICPSendMsgTaskService.java
  11. 12 0
      game-module/game-module-manage/src/main/java/com/zanxiang/game/module/manage/service/IGameServerAssignLogService.java
  12. 12 3
      game-module/game-module-manage/src/main/java/com/zanxiang/game/module/manage/service/IGameServerService.java
  13. 0 8
      game-module/game-module-manage/src/main/java/com/zanxiang/game/module/manage/service/ISendMsgTaskService.java
  14. 11 0
      game-module/game-module-manage/src/main/java/com/zanxiang/game/module/manage/service/impl/CPSendMsgTaskServiceImpl.java
  15. 18 0
      game-module/game-module-manage/src/main/java/com/zanxiang/game/module/manage/service/impl/GameServerAssignLogServiceImpl.java
  16. 119 30
      game-module/game-module-manage/src/main/java/com/zanxiang/game/module/manage/service/impl/GameServerServiceImpl.java
  17. 14 7
      game-module/game-module-manage/src/main/java/com/zanxiang/game/module/manage/service/impl/KfAppletMsgServiceImpl.java
  18. 0 1
      game-module/game-module-manage/src/main/java/com/zanxiang/game/module/manage/service/impl/KfMsgServiceImpl.java
  19. 0 11
      game-module/game-module-manage/src/main/java/com/zanxiang/game/module/manage/service/impl/SendMsgTaskServiceImpl.java
  20. 1 1
      game-module/game-module-mybatis/src/main/java/com/zanxiang/game/module/mybatis/entity/CpSendMsgTask.java
  21. 7 0
      game-module/game-module-mybatis/src/main/java/com/zanxiang/game/module/mybatis/entity/GameServer.java
  22. 61 0
      game-module/game-module-mybatis/src/main/java/com/zanxiang/game/module/mybatis/entity/GameServerAssignLog.java
  23. 2 2
      game-module/game-module-mybatis/src/main/java/com/zanxiang/game/module/mybatis/mapper/CpSendMsgTaskMapper.java
  24. 12 0
      game-module/game-module-mybatis/src/main/java/com/zanxiang/game/module/mybatis/mapper/GameServerAssignLogMapper.java

+ 1 - 1
game-module/game-module-base/src/main/java/com/zanxiang/game/module/base/rpc/SendMsgRpc.java → game-module/game-module-base/src/main/java/com/zanxiang/game/module/base/rpc/ICPSendMsgRpc.java

@@ -8,7 +8,7 @@ import com.zanxiang.module.util.pojo.ResultVO;
  * @time : 2024-03-13 11:05:18
  * @time : 2024-03-13 11:05:18
  * @description : 发送消息
  * @description : 发送消息
  */
  */
-public interface SendMsgRpc {
+public interface ICPSendMsgRpc {
 
 
     ResultVO<Boolean> sendMsg(SendMsgDto sendMsgDto);
     ResultVO<Boolean> sendMsg(SendMsgDto sendMsgDto);
 }
 }

+ 9 - 0
game-module/game-module-manage/src/main/java/com/zanxiang/game/module/manage/controller/GameServerController.java

@@ -5,6 +5,7 @@ import com.zanxiang.erp.security.annotation.PreAuthorize;
 import com.zanxiang.game.module.manage.enums.GameServerExcelEnum;
 import com.zanxiang.game.module.manage.enums.GameServerExcelEnum;
 import com.zanxiang.game.module.manage.pojo.params.GameMergeServerParam;
 import com.zanxiang.game.module.manage.pojo.params.GameMergeServerParam;
 import com.zanxiang.game.module.manage.pojo.params.GameServerAddUpdateParam;
 import com.zanxiang.game.module.manage.pojo.params.GameServerAddUpdateParam;
+import com.zanxiang.game.module.manage.pojo.params.GameServerAssignParam;
 import com.zanxiang.game.module.manage.pojo.params.GameServerListParam;
 import com.zanxiang.game.module.manage.pojo.params.GameServerListParam;
 import com.zanxiang.game.module.manage.pojo.vo.GameServerListVO;
 import com.zanxiang.game.module.manage.pojo.vo.GameServerListVO;
 import com.zanxiang.game.module.manage.pojo.vo.GameServerVO;
 import com.zanxiang.game.module.manage.pojo.vo.GameServerVO;
@@ -41,6 +42,14 @@ public class GameServerController {
     @Autowired
     @Autowired
     private IGameSupperService gameSupperService;
     private IGameSupperService gameSupperService;
 
 
+    @ApiOperation(value = "区服指派")
+    @PostMapping(value = "/assign")
+    @PreAuthorize(permissionKey = "manage:gameServer:assign")
+    @ApiResponses(value = {@ApiResponse(code = 200, message = "成功", response = Boolean.class)})
+    public ResultVO<Boolean> gameServerAssign(@Validated @RequestBody GameServerAssignParam param) {
+        return ResultVO.ok(gameServerService.gameServerAssign(param));
+    }
+
     @ApiOperation(value = "新增原始服合服excel")
     @ApiOperation(value = "新增原始服合服excel")
     @PostMapping(value = "/add/excel")
     @PostMapping(value = "/add/excel")
     @PreAuthorize(permissionKey = "manage:gameServer:addExcel")
     @PreAuthorize(permissionKey = "manage:gameServer:addExcel")

+ 5 - 5
game-module/game-module-manage/src/main/java/com/zanxiang/game/module/manage/enums/MsgTaskStatusEnum.java → game-module/game-module-manage/src/main/java/com/zanxiang/game/module/manage/enums/CpSendMsgTaskStatusEnum.java

@@ -11,21 +11,21 @@ import lombok.Getter;
  */
  */
 @Getter
 @Getter
 @AllArgsConstructor
 @AllArgsConstructor
-public enum MsgTaskStatusEnum {
+public enum CpSendMsgTaskStatusEnum {
 
 
     /**
     /**
      * 已发送
      * 已发送
      */
      */
-    SUCCESS_SEND("success_send"),
+    SUCCESS_SEND("SUCCESS_SEND"),
+
     /**
     /**
      * 待发送
      * 待发送
      */
      */
-    WAIT_SEND("wait_send");
-
+    WAIT_SEND("WAIT_SEND");
 
 
     /**
     /**
      * 任务类型
      * 任务类型
      */
      */
-    private String name;
+    private String value;
 
 
 }
 }

+ 7 - 6
game-module/game-module-manage/src/main/java/com/zanxiang/game/module/manage/enums/MsgTaskTypeEnum.java → game-module/game-module-manage/src/main/java/com/zanxiang/game/module/manage/enums/CpSendMsgTaskTypeEnum.java

@@ -11,25 +11,26 @@ import lombok.Getter;
  */
  */
 @Getter
 @Getter
 @AllArgsConstructor
 @AllArgsConstructor
-public enum MsgTaskTypeEnum {
+public enum CpSendMsgTaskTypeEnum {
 
 
     /**
     /**
      * 即时任务
      * 即时任务
      */
      */
-    IMMEDIATE_TASK("immediate_task"),
+    IMMEDIATE_TASK("IMMEDIATE_TASK"),
+
     /**
     /**
      * 循环任务
      * 循环任务
      */
      */
-    CYCLE_TASK("cycle_task"),
+    CYCLE_TASK("CYCLE_TASK"),
+
     /**
     /**
      * 定时任务
      * 定时任务
      */
      */
-    SCHEDULE_TASK("schedule_task");
-
+    SCHEDULE_TASK("SCHEDULE_TASK");
 
 
     /**
     /**
      * 任务类型
      * 任务类型
      */
      */
-    private String name;
+    private String value;
 
 
 }
 }

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

@@ -0,0 +1,29 @@
+package com.zanxiang.game.module.manage.enums;
+
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+
+/**
+ * @author : lingfeng
+ * @time : 2024-03-13
+ * @description : 区服指派枚举
+ */
+@Getter
+@AllArgsConstructor
+public enum GameServerAssignEnum {
+
+    /**
+     * 客服指派
+     */
+    GAME_SERVER_ASSIGN_CUSTOMER("GAME_SERVER_ASSIGN_CUSTOMER"),
+
+    /**
+     * GS指派
+     */
+    GAME_SERVER_ASSIGN_GS("GAME_SERVER_ASSIGN_GS");
+
+    /**
+     * 指派类型
+     */
+    private String value;
+}

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

@@ -0,0 +1,37 @@
+package com.zanxiang.game.module.manage.pojo.params;
+
+import com.zanxiang.game.module.manage.enums.GameServerAssignEnum;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import javax.validation.constraints.NotNull;
+import java.util.Set;
+
+/**
+ * @author : lingfeng
+ * @time : 2024-03-13
+ * @description : 区服指派
+ */
+@Data
+public class GameServerAssignParam {
+
+    /**
+     * 指派类型
+     */
+    @ApiModelProperty(notes = "指派类型")
+    @NotNull(message = "指派类型不可为空")
+    private GameServerAssignEnum assignType;
+
+    /**
+     * 区服的主键
+     */
+    @ApiModelProperty(notes = "区服的主键")
+    @NotNull(message = "区服主键id不可为空")
+    private Long id;
+
+    /**
+     * 指派的人员id
+     */
+    @ApiModelProperty(notes = "指派的人员id")
+    private Set<Long> assignUserIdList;
+}

+ 32 - 1
game-module/game-module-manage/src/main/java/com/zanxiang/game/module/manage/pojo/vo/GameServerListVO.java

@@ -6,7 +6,6 @@ import lombok.Builder;
 import lombok.Data;
 import lombok.Data;
 import lombok.NoArgsConstructor;
 import lombok.NoArgsConstructor;
 
 
-import javax.validation.constraints.NotBlank;
 import java.time.LocalDateTime;
 import java.time.LocalDateTime;
 import java.util.List;
 import java.util.List;
 
 
@@ -117,6 +116,18 @@ public class GameServerListVO {
     @ApiModelProperty(notes = "合服时间")
     @ApiModelProperty(notes = "合服时间")
     private LocalDateTime mergeTime;
     private LocalDateTime mergeTime;
 
 
+    /**
+     * 指派客服列表
+     */
+    @ApiModelProperty(notes = "指派客服列表")
+    private List<UserBean> customerList;
+
+    /**
+     * 指派GS列表
+     */
+    @ApiModelProperty(notes = "指派GS列表")
+    private List<UserBean> gsList;
+
     @Data
     @Data
     @AllArgsConstructor
     @AllArgsConstructor
     @NoArgsConstructor
     @NoArgsConstructor
@@ -136,4 +147,24 @@ public class GameServerListVO {
         private String serverName;
         private String serverName;
 
 
     }
     }
+
+    @Data
+    @AllArgsConstructor
+    @NoArgsConstructor
+    @Builder
+    public static class UserBean {
+
+        /**
+         * 人员id
+         */
+        @ApiModelProperty(notes = "人员id")
+        private Long userId;
+
+        /**
+         * 人员名称
+         */
+        @ApiModelProperty(notes = "人员名称")
+        private String userName;
+
+    }
 }
 }

+ 60 - 0
game-module/game-module-manage/src/main/java/com/zanxiang/game/module/manage/rpc/impl/CpSendMsgRpcImpl.java

@@ -0,0 +1,60 @@
+package com.zanxiang.game.module.manage.rpc.impl;
+
+import com.zanxiang.game.module.base.pojo.dto.SendMsgDto;
+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.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
+public class CpSendMsgRpcImpl implements ICPSendMsgRpc {
+
+    @Resource
+    private ICPSendMsgTaskService sendMsgTaskService;
+
+    @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("发送消息异常");
+        }
+    }
+
+    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;
+    }
+}

+ 0 - 61
game-module/game-module-manage/src/main/java/com/zanxiang/game/module/manage/rpc/impl/SendMsgImpl.java

@@ -1,61 +0,0 @@
-package com.zanxiang.game.module.manage.rpc.impl;
-
-import com.zanxiang.game.module.base.pojo.dto.SendMsgDto;
-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.mybatis.entity.SendMsgTask;
-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.LocalDate;
-import java.time.LocalDateTime;
-import java.time.ZoneId;
-
-@DubboService
-@Slf4j
-public class SendMsgImpl implements SendMsgRpc {
-
-    @Resource
-    private ISendMsgTaskService sendMsgTaskService;
-
-    @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("参数不能为空");
-            }
-            //创建任务
-            SendMsgTask sendMsgTask = createSendMsgTask(sendMsgDto);
-            //保存任务
-            sendMsgTaskService.save(sendMsgTask);
-            //todo:发送消息
-            log.info("发送消息成功");
-            return ResultVO.ok();
-        } catch (Exception e) {
-            log.error("发送消息异常, sendMsgDto : {}, e : {}", sendMsgDto, e.getMessage());
-            return ResultVO.fail("发送消息异常");
-        }
-    }
-
-    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;
-    }
-}

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

@@ -0,0 +1,7 @@
+package com.zanxiang.game.module.manage.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.zanxiang.game.module.mybatis.entity.CpSendMsgTask;
+
+public interface ICPSendMsgTaskService extends IService<CpSendMsgTask> {
+}

+ 12 - 0
game-module/game-module-manage/src/main/java/com/zanxiang/game/module/manage/service/IGameServerAssignLogService.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.GameServerAssignLog;
+
+/**
+ * @author : lingfeng
+ * @time : 2024-03-13
+ * @description : 区服指派
+ */
+public interface IGameServerAssignLogService extends IService<GameServerAssignLog> {
+}

+ 12 - 3
game-module/game-module-manage/src/main/java/com/zanxiang/game/module/manage/service/IGameServerService.java

@@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.extension.service.IService;
 import com.zanxiang.game.module.manage.enums.GameServerExcelEnum;
 import com.zanxiang.game.module.manage.enums.GameServerExcelEnum;
 import com.zanxiang.game.module.manage.pojo.params.GameMergeServerParam;
 import com.zanxiang.game.module.manage.pojo.params.GameMergeServerParam;
 import com.zanxiang.game.module.manage.pojo.params.GameServerAddUpdateParam;
 import com.zanxiang.game.module.manage.pojo.params.GameServerAddUpdateParam;
+import com.zanxiang.game.module.manage.pojo.params.GameServerAssignParam;
 import com.zanxiang.game.module.manage.pojo.params.GameServerListParam;
 import com.zanxiang.game.module.manage.pojo.params.GameServerListParam;
 import com.zanxiang.game.module.manage.pojo.vo.GameServerListVO;
 import com.zanxiang.game.module.manage.pojo.vo.GameServerListVO;
 import com.zanxiang.game.module.manage.pojo.vo.GameServerVO;
 import com.zanxiang.game.module.manage.pojo.vo.GameServerVO;
@@ -20,12 +21,20 @@ import java.util.List;
  */
  */
 public interface IGameServerService extends IService<GameServer> {
 public interface IGameServerService extends IService<GameServer> {
 
 
+    /**
+     * 区服指派
+     *
+     * @param param : 提交参数
+     * @return : 返回更新结果
+     */
+    Boolean gameServerAssign(GameServerAssignParam param);
+
     /**
     /**
      * 区服excel提交
      * 区服excel提交
      *
      *
-     * @param multipartFile        文件流
-     * @param gameServerExcelEnum  操作类型枚举
-     * @param gameId               游戏id
+     * @param multipartFile       文件流
+     * @param gameServerExcelEnum 操作类型枚举
+     * @param gameId              游戏id
      * @return {@link Boolean}
      * @return {@link Boolean}
      */
      */
     Boolean gameServerExcelImport(MultipartFile multipartFile, GameServerExcelEnum gameServerExcelEnum, Long gameId);
     Boolean gameServerExcelImport(MultipartFile multipartFile, GameServerExcelEnum gameServerExcelEnum, Long gameId);

+ 0 - 8
game-module/game-module-manage/src/main/java/com/zanxiang/game/module/manage/service/ISendMsgTaskService.java

@@ -1,8 +0,0 @@
-package com.zanxiang.game.module.manage.service;
-
-import com.baomidou.mybatisplus.extension.service.IService;
-import com.zanxiang.game.module.mybatis.entity.RoleOperate;
-import com.zanxiang.game.module.mybatis.entity.SendMsgTask;
-
-public interface ISendMsgTaskService extends IService<SendMsgTask> {
-}

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

@@ -0,0 +1,11 @@
+package com.zanxiang.game.module.manage.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.zanxiang.game.module.manage.service.ICPSendMsgTaskService;
+import com.zanxiang.game.module.mybatis.entity.CpSendMsgTask;
+import com.zanxiang.game.module.mybatis.mapper.CpSendMsgTaskMapper;
+import org.springframework.stereotype.Service;
+
+@Service
+public class CPSendMsgTaskServiceImpl extends ServiceImpl<CpSendMsgTaskMapper, CpSendMsgTask> implements ICPSendMsgTaskService {
+}

+ 18 - 0
game-module/game-module-manage/src/main/java/com/zanxiang/game/module/manage/service/impl/GameServerAssignLogServiceImpl.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.IGameServerAssignLogService;
+import com.zanxiang.game.module.mybatis.entity.GameServerAssignLog;
+import com.zanxiang.game.module.mybatis.mapper.GameServerAssignLogMapper;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.stereotype.Service;
+
+/**
+ * @author : lingfeng
+ * @time : 2024-03-13
+ * @description : 区服指派
+ */
+@Slf4j
+@Service
+public class GameServerAssignLogServiceImpl extends ServiceImpl<GameServerAssignLogMapper, GameServerAssignLog> implements IGameServerAssignLogService {
+}

+ 119 - 30
game-module/game-module-manage/src/main/java/com/zanxiang/game/module/manage/service/impl/GameServerServiceImpl.java

@@ -7,27 +7,30 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
 import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 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.erp.security.util.SecurityUtil;
 import com.zanxiang.game.module.base.pojo.enums.DeleteEnum;
 import com.zanxiang.game.module.base.pojo.enums.DeleteEnum;
+import com.zanxiang.game.module.manage.enums.GameServerAssignEnum;
 import com.zanxiang.game.module.manage.enums.GameServerExcelEnum;
 import com.zanxiang.game.module.manage.enums.GameServerExcelEnum;
 import com.zanxiang.game.module.manage.pojo.dto.GameDTO;
 import com.zanxiang.game.module.manage.pojo.dto.GameDTO;
 import com.zanxiang.game.module.manage.pojo.dto.GameServerExcelDTO;
 import com.zanxiang.game.module.manage.pojo.dto.GameServerExcelDTO;
 import com.zanxiang.game.module.manage.pojo.params.GameMergeServerParam;
 import com.zanxiang.game.module.manage.pojo.params.GameMergeServerParam;
 import com.zanxiang.game.module.manage.pojo.params.GameServerAddUpdateParam;
 import com.zanxiang.game.module.manage.pojo.params.GameServerAddUpdateParam;
+import com.zanxiang.game.module.manage.pojo.params.GameServerAssignParam;
 import com.zanxiang.game.module.manage.pojo.params.GameServerListParam;
 import com.zanxiang.game.module.manage.pojo.params.GameServerListParam;
 import com.zanxiang.game.module.manage.pojo.vo.GameServerListVO;
 import com.zanxiang.game.module.manage.pojo.vo.GameServerListVO;
 import com.zanxiang.game.module.manage.pojo.vo.GameServerVO;
 import com.zanxiang.game.module.manage.pojo.vo.GameServerVO;
-import com.zanxiang.game.module.manage.service.IGameAuthService;
-import com.zanxiang.game.module.manage.service.IGameServerService;
-import com.zanxiang.game.module.manage.service.IGameService;
-import com.zanxiang.game.module.manage.service.IGameSupperService;
+import com.zanxiang.game.module.manage.service.*;
 import com.zanxiang.game.module.mybatis.entity.GameServer;
 import com.zanxiang.game.module.mybatis.entity.GameServer;
+import com.zanxiang.game.module.mybatis.entity.GameServerAssignLog;
 import com.zanxiang.game.module.mybatis.entity.GameSupper;
 import com.zanxiang.game.module.mybatis.entity.GameSupper;
 import com.zanxiang.game.module.mybatis.mapper.GameServerMapper;
 import com.zanxiang.game.module.mybatis.mapper.GameServerMapper;
 import com.zanxiang.module.util.bean.BeanUtil;
 import com.zanxiang.module.util.bean.BeanUtil;
 import com.zanxiang.module.util.excel.ExcelUtil;
 import com.zanxiang.module.util.excel.ExcelUtil;
 import com.zanxiang.module.util.exception.BaseException;
 import com.zanxiang.module.util.exception.BaseException;
 import lombok.extern.slf4j.Slf4j;
 import lombok.extern.slf4j.Slf4j;
+import org.apache.dubbo.config.annotation.DubboReference;
 import org.apache.logging.log4j.util.Strings;
 import org.apache.logging.log4j.util.Strings;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.stereotype.Service;
@@ -51,6 +54,9 @@ import java.util.stream.Collectors;
 @Service
 @Service
 public class GameServerServiceImpl extends ServiceImpl<GameServerMapper, GameServer> implements IGameServerService {
 public class GameServerServiceImpl extends ServiceImpl<GameServerMapper, GameServer> implements IGameServerService {
 
 
+    @DubboReference(providedBy = ErpServer.SERVER_DUBBO_NAME)
+    private ISysUserRpc sysUserRpc;
+
     @Autowired
     @Autowired
     private IGameService gameService;
     private IGameService gameService;
 
 
@@ -60,6 +66,60 @@ public class GameServerServiceImpl extends ServiceImpl<GameServerMapper, GameSer
     @Autowired
     @Autowired
     private IGameSupperService gameSupperService;
     private IGameSupperService gameSupperService;
 
 
+    @Autowired
+    private IGameServerAssignLogService gameServerAssignLogService;
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public Boolean gameServerAssign(GameServerAssignParam param) {
+        GameServer gameServer = super.getById(param.getId());
+        if (gameServer == null) {
+            throw new BaseException("参数错误, 区服信息不存在");
+        }
+        //删除指派的参数判断
+        if (CollectionUtils.isEmpty(param.getAssignUserIdList())) {
+            if (Objects.equals(param.getAssignType(), GameServerAssignEnum.GAME_SERVER_ASSIGN_GS)
+                    && Strings.isBlank(gameServer.getGsIds())) {
+                throw new BaseException("无效操作, 区服GS指派为空, 不可更新为空");
+            }
+            if (Objects.equals(param.getAssignType(), GameServerAssignEnum.GAME_SERVER_ASSIGN_CUSTOMER)
+                    && Strings.isBlank(gameServer.getCustomerIds())) {
+                throw new BaseException("无效操作, 区服客服指派为空, 不可更新为空");
+            }
+        }
+        //老的指派人员id
+        String oldUserIds = null;
+        if (Objects.equals(param.getAssignType(), GameServerAssignEnum.GAME_SERVER_ASSIGN_GS)) {
+            oldUserIds = gameServer.getGsIds();
+        }
+        if (Objects.equals(param.getAssignType(), GameServerAssignEnum.GAME_SERVER_ASSIGN_CUSTOMER)) {
+            oldUserIds = gameServer.getCustomerIds();
+        }
+        //新的指派人员id
+        String userIds = null;
+        if (CollectionUtils.isNotEmpty(param.getAssignUserIdList())) {
+            List<String> collect = param.getAssignUserIdList().stream()
+                    .map(String::valueOf).collect(Collectors.toList());
+            userIds = String.join(",", collect);
+        }
+        //更新区服信息
+        super.update(new LambdaUpdateWrapper<GameServer>()
+                .eq(GameServer::getId, param.getId())
+                .set(Objects.equals(param.getAssignType(), GameServerAssignEnum.GAME_SERVER_ASSIGN_GS),
+                        GameServer::getGsIds, userIds)
+                .set(Objects.equals(param.getAssignType(), GameServerAssignEnum.GAME_SERVER_ASSIGN_CUSTOMER),
+                        GameServer::getCustomerIds, userIds));
+        //新增保存指派记录
+        return gameServerAssignLogService.save(GameServerAssignLog.builder()
+                .serverId(gameServer.getServerId())
+                .assignType(param.getAssignType().getValue())
+                .oldUserIds(oldUserIds)
+                .newUserIds(userIds)
+                .createBy(SecurityUtil.getUserId())
+                .createTime(LocalDateTime.now())
+                .build());
+    }
+
     @Override
     @Override
     public Boolean gameServerExcelImport(MultipartFile multipartFile, GameServerExcelEnum gameServerExcelEnum, Long gameId) {
     public Boolean gameServerExcelImport(MultipartFile multipartFile, GameServerExcelEnum gameServerExcelEnum, Long gameId) {
         StringBuilder stringBuilder = new StringBuilder();
         StringBuilder stringBuilder = new StringBuilder();
@@ -282,39 +342,68 @@ public class GameServerServiceImpl extends ServiceImpl<GameServerMapper, GameSer
         }
         }
         //合服子服列表
         //合服子服列表
         if (sonServerIdArray != null) {
         if (sonServerIdArray != null) {
-            List<GameServerListVO.ServerBean> sonServerList = new ArrayList<>();
-            for (String sonServerId : sonServerIdArray) {
-                GameServer sonServer = gameServerMap.get(sonServerId);
-                if (sonServer == null) {
-                    continue;
-                }
-                sonServerList.add(GameServerListVO.ServerBean.builder()
-                        .serverId(sonServerId)
-                        .serverName(sonServer.getServerName())
-                        .build());
-            }
-            gameServerListVO.setSonServerList(sonServerList);
+            gameServerListVO.setSonServerList(this.getSonServerList(sonServerIdArray, gameServerMap));
         }
         }
         //合服原始服列表
         //合服原始服列表
         if (sourceServerIdArray != null) {
         if (sourceServerIdArray != null) {
-            List<Integer> sourceServerIdList = Arrays.stream(sourceServerIdArray)
-                    .map(Integer::parseInt)
-                    .sorted().collect(Collectors.toList());
-            List<GameServerListVO.ServerBean> sourceServerList = new ArrayList<>();
-            for (Integer sourceServerId : sourceServerIdList) {
-                GameServer sourceServer = gameServerMap.get(sourceServerId.toString());
-                if (sourceServer != null) {
-                    sourceServerList.add(GameServerListVO.ServerBean.builder()
-                            .serverId(sourceServerId.toString())
-                            .serverName(sourceServer.getServerName())
-                            .build());
-                }
-            }
-            gameServerListVO.setSourceServerList(sourceServerList);
+            gameServerListVO.setSourceServerList(this.getSourceServerList(sourceServerIdArray, gameServerMap));
+        }
+        //指派客服
+        if (Strings.isNotBlank(gameServer.getCustomerIds())) {
+            gameServerListVO.setCustomerList(this.getUserBeanList(gameServer.getCustomerIds()));
+        }
+        //指派GS
+        if (Strings.isNotBlank(gameServer.getGsIds())) {
+            gameServerListVO.setGsList(this.getUserBeanList(gameServer.getGsIds()));
         }
         }
         return gameServerListVO;
         return gameServerListVO;
     }
     }
 
 
+    private List<GameServerListVO.ServerBean> getSonServerList(String[] sonServerIdArray, Map<String, GameServer> gameServerMap) {
+        List<GameServerListVO.ServerBean> sonServerList = new ArrayList<>();
+        for (String sonServerId : sonServerIdArray) {
+            GameServer sonServer = gameServerMap.get(sonServerId);
+            if (sonServer == null) {
+                continue;
+            }
+            sonServerList.add(GameServerListVO.ServerBean.builder()
+                    .serverId(sonServerId)
+                    .serverName(sonServer.getServerName())
+                    .build());
+        }
+        return sonServerList;
+    }
+
+    private List<GameServerListVO.ServerBean> getSourceServerList(String[] sourceServerIdArray, Map<String, GameServer> gameServerMap) {
+        List<Integer> sourceServerIdList = Arrays.stream(sourceServerIdArray)
+                .map(Integer::parseInt)
+                .sorted().collect(Collectors.toList());
+        List<GameServerListVO.ServerBean> sourceServerList = new ArrayList<>();
+        sourceServerIdList.forEach(sourceServerId -> {
+            GameServer sourceServer = gameServerMap.get(sourceServerId.toString());
+            if (sourceServer == null) {
+                return;
+            }
+            sourceServerList.add(GameServerListVO.ServerBean.builder()
+                    .serverId(sourceServerId.toString())
+                    .serverName(sourceServer.getServerName())
+                    .build());
+        });
+        return sourceServerList;
+    }
+
+    private List<GameServerListVO.UserBean> getUserBeanList(String userIds) {
+        List<GameServerListVO.UserBean> userList = new ArrayList<>();
+        List<Long> userIdList = Arrays.stream(userIds.split(","))
+                .map(Long::valueOf).collect(Collectors.toList());
+        Map<Long, String> userNameMap = sysUserRpc.getUserNameByIds(userIdList).getData();
+        userIdList.forEach(userId -> userList.add(GameServerListVO.UserBean.builder()
+                .userId(userId)
+                .userName(userNameMap.get(userId))
+                .build()));
+        return userList;
+    }
+
     @Override
     @Override
     public Boolean mergeServerAddUpdate(GameMergeServerParam param) {
     public Boolean mergeServerAddUpdate(GameMergeServerParam param) {
         List<GameServer> gameServerList = super.list(new LambdaQueryWrapper<GameServer>()
         List<GameServer> gameServerList = super.list(new LambdaQueryWrapper<GameServer>()

+ 14 - 7
game-module/game-module-manage/src/main/java/com/zanxiang/game/module/manage/service/impl/KfAppletMsgServiceImpl.java

@@ -154,14 +154,22 @@ public class KfAppletMsgServiceImpl implements IKfAppletMsgService {
         if (!Objects.equals(kfAppletMsgDTO.getMsgType(), KfRoomMsgTypeEnum.KF_MSG_TYPE_TEXT.getValue())) {
         if (!Objects.equals(kfAppletMsgDTO.getMsgType(), KfRoomMsgTypeEnum.KF_MSG_TYPE_TEXT.getValue())) {
             return;
             return;
         }
         }
-        //未匹配导监测词汇
-        if (kfMonitorWordService.count(new LambdaQueryWrapper<KfMonitorWord>()
-                .like(KfMonitorWord::getWord, kfAppletMsgDTO.getContent())
-        ) <= 0) {
+        //文本内容
+        String textContent = kfAppletMsgDTO.getContent();
+        //为本内容为空
+        if (Strings.isBlank(textContent)) {
+            return;
+        }
+        //查询所有监测词汇
+        List<KfMonitorWord> kfMonitorWordList = kfMonitorWordService.list();
+        //判断玩家的文本包含敏感词的数量, 不包含则不执行
+        if (kfMonitorWordList.stream()
+                .filter(word -> textContent.contains(word.getWord()))
+                .count() <= 0) {
             return;
             return;
         }
         }
         //给客服发送钉钉通知
         //给客服发送钉钉通知
-        gameAuthRoleService.dingTalkCustomer(gameApplet.getGameId(), gameApplet.getAppName(), kfAppletMsgDTO.getContent());
+        gameAuthRoleService.dingTalkCustomer(gameApplet.getGameId(), gameApplet.getAppName(), textContent);
     }
     }
 
 
     private void systemReplyHandle(Long gameId, String openId, KfRoom kfRoom) {
     private void systemReplyHandle(Long gameId, String openId, KfRoom kfRoom) {
@@ -408,8 +416,7 @@ public class KfAppletMsgServiceImpl implements IKfAppletMsgService {
         msgParamMap.put("msgtype", KfRoomMsgTypeEnum.KF_MSG_TYPE_LINK.getValue());
         msgParamMap.put("msgtype", KfRoomMsgTypeEnum.KF_MSG_TYPE_LINK.getValue());
         msgParamMap.put(KfRoomMsgTypeEnum.KF_MSG_TYPE_LINK.getValue(), linkMap);
         msgParamMap.put(KfRoomMsgTypeEnum.KF_MSG_TYPE_LINK.getValue(), linkMap);
         kfWxApiService.sendCustomMessageApi(gameId, msgParamMap);
         kfWxApiService.sendCustomMessageApi(gameId, msgParamMap);
-        //返回发送的消息内容
-        log.error("客服支付, 发送支付信息 : {}", JsonUtil.toString(msgParamMap));
+        //保存发送的支付链接消息
         kfRoomMsgService.save(this.transform(openId, gameId, kfRoom, KfRoomMsgTypeEnum.KF_MSG_TYPE_LINK, JsonUtil.toString(msgParamMap)));
         kfRoomMsgService.save(this.transform(openId, gameId, kfRoom, KfRoomMsgTypeEnum.KF_MSG_TYPE_LINK, JsonUtil.toString(msgParamMap)));
         //删除待支付订单标记
         //删除待支付订单标记
         redisUtil.deleteCache(RedisKeyConstant.GAME_CUSTOM_PAY_SIGN + openId);
         redisUtil.deleteCache(RedisKeyConstant.GAME_CUSTOM_PAY_SIGN + openId);

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

@@ -65,7 +65,6 @@ public class KfMsgServiceImpl implements IKfMsgService {
         KfUser kfUser = kfUserService.getKfUser(SecurityUtil.getUserId(), param.getAppId());
         KfUser kfUser = kfUserService.getKfUser(SecurityUtil.getUserId(), param.getAppId());
         //图片上传腾讯
         //图片上传腾讯
         String uploadResult = this.imgUploadApi(kfUser, files);
         String uploadResult = this.imgUploadApi(kfUser, files);
-        log.error("上传结果, uploadResult : {}", uploadResult);
         Map<String, Object> uploadResultMap = JsonUtil.toMap(uploadResult, Map.class, Object.class);
         Map<String, Object> uploadResultMap = JsonUtil.toMap(uploadResult, Map.class, Object.class);
         //发送客服消息
         //发送客服消息
         Map<String, Object> paramMap = param.getParam();
         Map<String, Object> paramMap = param.getParam();

+ 0 - 11
game-module/game-module-manage/src/main/java/com/zanxiang/game/module/manage/service/impl/SendMsgTaskServiceImpl.java

@@ -1,11 +0,0 @@
-package com.zanxiang.game.module.manage.service.impl;
-
-import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
-import com.zanxiang.game.module.manage.service.ISendMsgTaskService;
-import com.zanxiang.game.module.mybatis.entity.SendMsgTask;
-import com.zanxiang.game.module.mybatis.mapper.SendMsgTaskMapper;
-import org.springframework.stereotype.Service;
-
-@Service
-public class SendMsgTaskServiceImpl extends ServiceImpl<SendMsgTaskMapper,SendMsgTask> implements ISendMsgTaskService {
-}

+ 1 - 1
game-module/game-module-mybatis/src/main/java/com/zanxiang/game/module/mybatis/entity/SendMsgTask.java → game-module/game-module-mybatis/src/main/java/com/zanxiang/game/module/mybatis/entity/CpSendMsgTask.java

@@ -19,7 +19,7 @@ import java.time.LocalDateTime;
 @ToString
 @ToString
 @Builder
 @Builder
 @TableName("t_cp_send_msg_task")
 @TableName("t_cp_send_msg_task")
-public class SendMsgTask implements Serializable {
+public class CpSendMsgTask implements Serializable {
 
 
     private static final long serialVersionUID = 1L;
     private static final long serialVersionUID = 1L;
 
 

+ 7 - 0
game-module/game-module-mybatis/src/main/java/com/zanxiang/game/module/mybatis/entity/GameServer.java

@@ -102,8 +102,15 @@ public class GameServer implements Serializable {
     /**
     /**
      * 指派客服ids
      * 指派客服ids
      */
      */
+    @TableField(updateStrategy = FieldStrategy.IGNORED)
     private String customerIds;
     private String customerIds;
 
 
+    /**
+     * 指派GS的ids
+     */
+    @TableField(updateStrategy = FieldStrategy.IGNORED)
+    private String gsIds;
+
     /**
     /**
      * 创建时间
      * 创建时间
      */
      */

+ 61 - 0
game-module/game-module-mybatis/src/main/java/com/zanxiang/game/module/mybatis/entity/GameServerAssignLog.java

@@ -0,0 +1,61 @@
+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-13
+ * @description : 游戏区服指派记录
+ */
+@Data
+@NoArgsConstructor
+@AllArgsConstructor
+@ToString
+@Builder
+@TableName("t_game_server_assign_log")
+public class GameServerAssignLog implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 主键
+     */
+    @TableId(value = "id", type = IdType.AUTO)
+    private Long id;
+
+    /**
+     * 指派类型
+     */
+    private String assignType;
+
+    /**
+     * 区服id
+     */
+    private String serverId;
+
+    /**
+     * 旧的客服ids
+     */
+    private String oldUserIds;
+
+    /**
+     * 新的客服ids
+     */
+    private String newUserIds;
+
+    /**
+     * 创建者id
+     */
+    private Long createBy;
+
+    /**
+     * 创建时间
+     */
+    private LocalDateTime createTime;
+}

+ 2 - 2
game-module/game-module-mybatis/src/main/java/com/zanxiang/game/module/mybatis/mapper/SendMsgTaskMapper.java → game-module/game-module-mybatis/src/main/java/com/zanxiang/game/module/mybatis/mapper/CpSendMsgTaskMapper.java

@@ -1,9 +1,9 @@
 package com.zanxiang.game.module.mybatis.mapper;
 package com.zanxiang.game.module.mybatis.mapper;
 
 
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
-import com.zanxiang.game.module.mybatis.entity.SendMsgTask;
+import com.zanxiang.game.module.mybatis.entity.CpSendMsgTask;
 import org.apache.ibatis.annotations.Mapper;
 import org.apache.ibatis.annotations.Mapper;
 
 
 @Mapper
 @Mapper
-public interface SendMsgTaskMapper extends BaseMapper<SendMsgTask> {
+public interface CpSendMsgTaskMapper extends BaseMapper<CpSendMsgTask> {
 }
 }

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