瀏覽代碼

fix : 角色指派相关功能上线

bilingfeng 11 月之前
父節點
當前提交
cb04ab4bd5

+ 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服务启动成功 < (客服接入玩家线程锁未释放bug修复´・・)ノ(._.`) \n" +
+        System.out.println("赞象Manage服务启动成功 < (角色指派相关功能上线´・・)ノ(._.`) \n" +
                 "___  ___  ___   _   _   ___  _____  _____ \n" +
                 "|  \\/  | / _ \\ | \\ | | / _ \\|  __ \\|  ___|\n" +
                 "| .  . |/ /_\\ \\|  \\| |/ /_\\ \\ |  \\/| |__  \n" +

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

@@ -24,6 +24,14 @@ public class RoleAssignController {
     @Autowired
     private IRoleAssignRecordService roleAssignRecordService;
 
+    @ApiOperation(value = "更新状态字段同步")
+    @GetMapping(value = "/update/status/sync")
+    @PreAuthorize(permissionKey = "manage:roleAssign:updateStatusSync")
+    public ResultVO<Void> updateStatusSync() {
+        roleAssignRecordService.updateStatusSync();
+        return ResultVO.ok();
+    }
+
     @ApiOperation(value = "指派人员")
     @PostMapping(value = "/config/sysUser")
     @PreAuthorize(permissionKey = "manage:roleAssign:configSysUser")

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

@@ -73,4 +73,10 @@ public class RoleOperateParam {
     @ApiModelProperty("投手")
     private Long putUserId;
 
+    /**
+     * GS账号
+     */
+    @ApiModelProperty("GS账号")
+    private Long gsAccount;
+
 }

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

@@ -17,6 +17,9 @@ import com.zanxiang.game.module.mybatis.entity.RoleAssignRecord;
  * @since 2023-09-09
  */
 public interface IRoleAssignRecordService extends IService<RoleAssignRecord> {
+
+    void updateStatusSync();
+
     IPage<RoleAssignRecordListVO> listOfPage(RoleAssignRecordListParam param);
 
     boolean deleteById(Long id);

+ 59 - 9
game-module/game-module-manage/src/main/java/com/zanxiang/game/module/manage/service/impl/RoleAssignRecordServiceImpl.java

@@ -26,8 +26,7 @@ import org.springframework.transaction.annotation.Transactional;
 
 import java.time.LocalDate;
 import java.time.LocalDateTime;
-import java.util.ArrayList;
-import java.util.List;
+import java.util.*;
 import java.util.stream.Collectors;
 
 /**
@@ -40,20 +39,59 @@ import java.util.stream.Collectors;
  */
 @Service
 public class RoleAssignRecordServiceImpl extends ServiceImpl<RoleAssignRecordMapper, RoleAssignRecord> implements IRoleAssignRecordService {
+
+    @DubboReference(providedBy = ErpServer.SERVER_DUBBO_NAME)
+    private ISysUserRpc sysUserRpc;
+
     @Autowired
     private IAgentService agentService;
+
     @Autowired
     private IGameService gameService;
-    @Autowired
-    private IUserService userService;
+
     @Autowired
     private IGameServerService gameServerService;
+
     @Autowired
     private IGameUserRoleService gameUserRoleService;
+
     @Autowired
     private IRoleOperateService roleOperateService;
-    @DubboReference(providedBy = ErpServer.SERVER_DUBBO_NAME)
-    private ISysUserRpc sysUserRpc;
+
+    @Override
+    public void updateStatusSync() {
+        List<RoleAssignRecord> recordList = super.list();
+        //数据分组
+        Map<String, List<RoleAssignRecord>> map = new HashMap<>();
+        recordList.forEach(record -> {
+            String key = record.getGameId() + "_" + record.getServerId() + "_" + record.getRoleId();
+            if (map.containsKey(key)) {
+                map.get(key).add(record);
+            } else {
+                List<RoleAssignRecord> list = new ArrayList<>();
+                list.add(record);
+                map.put(key, list);
+            }
+        });
+        //循环处理
+        map.forEach((key, list) -> {
+            //排序
+            list.sort(Comparator.comparing(RoleAssignRecord::getStartTime));
+            //循环判断
+            Long tempGsId = null;
+            Long tempOperUserId = null;
+            Long tempCustomerServiceId = null;
+            for (RoleAssignRecord r : list) {
+                r.setIsGsUpdate(!Objects.equals(r.getGsId(), tempGsId));
+                r.setIsOperUpdate(!Objects.equals(r.getOperUserId(), tempOperUserId));
+                r.setIsCustomerUpdate(!Objects.equals(r.getCustomerServiceId(), tempCustomerServiceId));
+                tempGsId = r.getGsId();
+                tempOperUserId = r.getOperUserId();
+                tempCustomerServiceId = r.getCustomerServiceId();
+            }
+            super.updateBatchById(list);
+        });
+    }
 
     @Override
     @Transactional(rollbackFor = Exception.class)
@@ -75,6 +113,9 @@ public class RoleAssignRecordServiceImpl extends ServiceImpl<RoleAssignRecordMap
                     .customerServiceId(param.getCustomerServiceId())
                     .operUserId(param.getOperUserId())
                     .remark(param.getRemark())
+                    .isGsUpdate(lastAssignRecord == null ? Boolean.TRUE : param.getGsId() != null && !Objects.equals(param.getGsId(), lastAssignRecord.getGsId()))
+                    .isOperUpdate(lastAssignRecord == null ? Boolean.TRUE : param.getOperUserId() != null && !Objects.equals(param.getOperUserId(), lastAssignRecord.getOperUserId()))
+                    .isCustomerUpdate(lastAssignRecord == null ? Boolean.TRUE : param.getCustomerServiceId() != null && !Objects.equals(param.getCustomerServiceId(), lastAssignRecord.getCustomerServiceId()))
                     .createBy(sysUserId)
                     .createTime(now)
                     .updateBy(sysUserId)
@@ -91,9 +132,16 @@ public class RoleAssignRecordServiceImpl extends ServiceImpl<RoleAssignRecordMap
                 lastAssignRecord.setUpdateBy(sysUserId);
                 lastAssignRecord.setUpdateTime(now);
                 if (compare == 0) {
-                    lastAssignRecord.setCustomerServiceId(param.getCustomerServiceId());
+                    //上一条记录
+                    RoleAssignRecord previousAssignRecord = previousAssignRecord(lastAssignRecord, param.getStartTime());
+                    //记录是否变更参数
+                    lastAssignRecord.setIsGsUpdate(previousAssignRecord == null ? Boolean.TRUE : param.getGsId() != null && !Objects.equals(param.getGsId(), previousAssignRecord.getGsId()));
+                    lastAssignRecord.setIsOperUpdate(previousAssignRecord == null ? Boolean.TRUE : param.getOperUserId() != null && !Objects.equals(param.getOperUserId(), previousAssignRecord.getOperUserId()));
+                    lastAssignRecord.setIsCustomerUpdate(previousAssignRecord == null ? Boolean.TRUE : param.getCustomerServiceId() != null && !Objects.equals(param.getCustomerServiceId(), previousAssignRecord.getCustomerServiceId()));
+                    //参数变更
                     lastAssignRecord.setGsId(param.getGsId());
                     lastAssignRecord.setOperUserId(param.getOperUserId());
+                    lastAssignRecord.setCustomerServiceId(param.getCustomerServiceId());
                     lastAssignRecord.setRemark(param.getRemark());
                 } else {
                     lastAssignRecord.setEndTime(param.getStartTime());
@@ -108,7 +156,6 @@ public class RoleAssignRecordServiceImpl extends ServiceImpl<RoleAssignRecordMap
         if (CollectionUtils.isNotEmpty(insertAssignRecordList)) {
             saveBatch(insertAssignRecordList);
         }
-
         //角色操作表更新
         List<RoleOperate> roleOperateList = param.getRoleInfoAndAgentParamList().stream()
                 .map(this::getModifyRoleOperate).collect(Collectors.toList());
@@ -122,6 +169,9 @@ public class RoleAssignRecordServiceImpl extends ServiceImpl<RoleAssignRecordMap
         LocalDateTime now = LocalDateTime.now();
         RoleAssignRecord changeRecord = getById(param.getId());
         RoleAssignRecord previousAssignRecord = previousAssignRecord(changeRecord, param.getStartTime());
+        changeRecord.setIsCustomerUpdate(previousAssignRecord == null ? Boolean.TRUE : param.getCustomerServiceId() != null && !Objects.equals(param.getCustomerServiceId(), previousAssignRecord.getCustomerServiceId()));
+        changeRecord.setIsOperUpdate(previousAssignRecord == null ? Boolean.TRUE : param.getOperUserId() != null && !Objects.equals(param.getOperUserId(), previousAssignRecord.getOperUserId()));
+        changeRecord.setIsGsUpdate(previousAssignRecord == null ? Boolean.TRUE : param.getGsId() != null && !Objects.equals(param.getGsId(), previousAssignRecord.getGsId()));
         changeRecord.setStartTime(param.getStartTime());
         changeRecord.setOperUserId(param.getOperUserId());
         changeRecord.setGsId(param.getGsId());
@@ -156,7 +206,7 @@ public class RoleAssignRecordServiceImpl extends ServiceImpl<RoleAssignRecordMap
     public IPage<RoleAssignRecordListVO> listOfPage(RoleAssignRecordListParam param) {
         Agent agent = agentService.getById(param.getRegAgentId());
         GameDTO game = gameService.getById(param.getGameId());
-        Long superGameId = null == game.getSuperGameId() ? param.getGameId():game.getSuperGameId();
+        Long superGameId = null == game.getSuperGameId() ? param.getGameId() : game.getSuperGameId();
         GameServer gameServer = gameServerService.getOne(new LambdaQueryWrapper<GameServer>()
                 .eq(GameServer::getGameId, superGameId)
                 .eq(GameServer::getServerId, param.getServerId()));

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

@@ -67,6 +67,7 @@ public class RoleOperateServiceImpl extends ServiceImpl<RoleOperateMapper, RoleO
                     roleOperate.setIsWakeUp(param.getIsWakeUp());
                     roleOperate.setRemark(param.getRemark());
                     roleOperate.setPutUserId(param.getPutUserId());
+                    roleOperate.setGsAccount(param.getGsAccount());
                     roleOperate.setUpdateBy(sysUserId);
                     roleOperate.setUpdateTime(now);
                     return roleOperate;

+ 15 - 0
game-module/game-module-mybatis/src/main/java/com/zanxiang/game/module/mybatis/entity/RoleAssignRecord.java

@@ -86,6 +86,21 @@ public class RoleAssignRecord implements Serializable {
      */
     private String remark;
 
+    /**
+     * 是否GS变更
+     */
+    private Boolean isGsUpdate;
+
+    /**
+     * 是否客服变更
+     */
+    private Boolean isCustomerUpdate;
+
+    /**
+     * 是否运营变更
+     */
+    private Boolean isOperUpdate;
+
     /**
      * 创建时间
      */

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

@@ -126,6 +126,12 @@ public class RoleOperate implements Serializable {
     @TableField(updateStrategy = FieldStrategy.IGNORED)
     private Long putUserId;
 
+    /**
+     * GS账号(记录GS人员id)
+     */
+    @TableField(updateStrategy = FieldStrategy.IGNORED)
+    private Long gsAccount;
+
     /**
      * 创建时间
      */