| 
					
				 | 
			
			
				@@ -0,0 +1,322 @@ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+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.metadata.IPage; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import com.baomidou.mybatisplus.core.toolkit.CollectionUtils; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import com.baomidou.mybatisplus.core.toolkit.StringUtils; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+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.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; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import org.springframework.stereotype.Service; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+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.stream.Collectors; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+/** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ * <p> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ * 角色指派记录表 服务实现类 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ * </p> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ * 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ * @author auto 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ * @since 2023-09-09 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+@Service 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+public class RoleAssignRecordServiceImpl extends ServiceImpl<RoleAssignRecordMapper, RoleAssignRecord> implements IRoleAssignRecordService { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    @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 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    @Transactional(rollbackFor = Exception.class) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    public boolean configSysUser(RoleSysUserAssignParam param) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        Long sysUserId = SecurityUtil.getUserId(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        LocalDateTime now = LocalDateTime.now(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        List<RoleAssignRecord> lastAssignRecordList = new ArrayList<>(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        List<RoleAssignRecord> insertAssignRecordList = new ArrayList<>(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        param.getRoleInfoAndAgentParamList().forEach(item -> { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            RoleAssignRecord lastAssignRecord = lastAssignRecord(item); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            RoleAssignRecord insertRoleAssignRecord = RoleAssignRecord.builder() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    .gameId(item.getGameId()) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    .serverId(item.getServerId()) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    .userId(item.getUserId()) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    .roleId(item.getRoleId()) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    .regAgentId(item.getRegAgentId()) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    .startTime(param.getStartTime()) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    .gsId(param.getGsId()) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    .customerServiceId(param.getCustomerServiceId()) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    .operUserId(param.getOperUserId()) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    .remark(param.getRemark()) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    .createBy(sysUserId) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    .createTime(now) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    .updateBy(sysUserId) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    .updateTime(now) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    .build(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            if (null == lastAssignRecord) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                insertAssignRecordList.add(insertRoleAssignRecord); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                //存在记录,更新最后一条记录 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                int compare = param.getStartTime().compareTo(lastAssignRecord.getStartTime()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                if (compare < 0) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    throw new BaseException("角色" + item.getRoleId() + "开始时间不能早于上条指派记录的开始时间!!!"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                lastAssignRecord.setUpdateBy(sysUserId); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                lastAssignRecord.setUpdateTime(now); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                if (compare == 0) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    lastAssignRecord.setCustomerServiceId(param.getCustomerServiceId()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    lastAssignRecord.setGsId(param.getGsId()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    lastAssignRecord.setOperUserId(param.getOperUserId()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    lastAssignRecord.setRemark(param.getRemark()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                } else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    lastAssignRecord.setEndTime(param.getStartTime()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    insertAssignRecordList.add(insertRoleAssignRecord); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                lastAssignRecordList.add(lastAssignRecord); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if (CollectionUtils.isNotEmpty(lastAssignRecordList)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            updateBatchById(lastAssignRecordList); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if (CollectionUtils.isNotEmpty(insertAssignRecordList)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            saveBatch(insertAssignRecordList); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        //角色操作表更新 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        List<RoleOperate> roleOperateList = param.getRoleInfoAndAgentParamList().stream() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                .map(this::getModifyRoleOperate).collect(Collectors.toList()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        return roleOperateService.saveOrUpdateBatch(roleOperateList); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    @Override 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    @Transactional(rollbackFor = Exception.class) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    public boolean modify(RoleAssignRecordAddParam param) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        Long sysUserId = SecurityUtil.getUserId(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        LocalDateTime now = LocalDateTime.now(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        RoleAssignRecord changeRecord = getById(param.getId()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        RoleAssignRecord previousAssignRecord = previousAssignRecord(changeRecord, param.getStartTime()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        changeRecord.setStartTime(param.getStartTime()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        changeRecord.setOperUserId(param.getOperUserId()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        changeRecord.setGsId(param.getGsId()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        changeRecord.setCustomerServiceId(param.getCustomerServiceId()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        changeRecord.setRemark(param.getRemark()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        changeRecord.setUpdateBy(sysUserId); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        changeRecord.setUpdateTime(now); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if (previousAssignRecord != null) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            if (previousAssignRecord.getStartTime().compareTo(changeRecord.getStartTime()) >= 0) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                throw new BaseException("开始时间必须大于下一条记录的开始时间!"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            update(new LambdaUpdateWrapper<RoleAssignRecord>() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    .set(RoleAssignRecord::getEndTime, changeRecord.getStartTime()) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    .eq(RoleAssignRecord::getId, previousAssignRecord.getId()) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            ); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        updateById(changeRecord); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        //角色操作表更新 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        RoleInfoAndAgentParam roleInfoAndAgentParam = RoleInfoAndAgentParam.builder() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                .regAgentId(changeRecord.getRegAgentId()) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                .gameId(changeRecord.getGameId()) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                .serverId(changeRecord.getServerId()) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                .userId(changeRecord.getUserId()) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                .roleId(changeRecord.getRoleId()) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                .build(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        RoleOperate modifyRoleOperate = getModifyRoleOperate(roleInfoAndAgentParam); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        return roleOperateService.saveOrUpdate(modifyRoleOperate); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    @Override 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    @Transactional(rollbackFor = Exception.class) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    public IPage<RoleAssignRecordListVO> listOfPage(RoleAssignRecordListParam param) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        Agent agent = agentService.getById(param.getRegAgentId()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        GameDTO game = gameService.getById(param.getGameId()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        GameServer gameServer = gameServerService.getOne(new LambdaQueryWrapper<GameServer>() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                .eq(GameServer::getGameId, param.getGameId()) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                .eq(GameServer::getServerId, param.getServerId())); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        GameUserRole role = gameUserRoleService.getOne(new LambdaQueryWrapper<GameUserRole>() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                .eq(GameUserRole::getGameId, param.getGameId()) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                .eq(GameUserRole::getServerId, param.getServerId()) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                .eq(GameUserRole::getUserId, param.getUserId()) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                .eq(GameUserRole::getRoleId, param.getRoleId())); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        return page(param.toPage(), new LambdaQueryWrapper<RoleAssignRecord>() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                .eq(RoleAssignRecord::getRegAgentId, param.getRegAgentId()) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                .eq(RoleAssignRecord::getGameId, param.getGameId()) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                .eq(RoleAssignRecord::getServerId, param.getServerId()) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                .eq(RoleAssignRecord::getUserId, param.getUserId()) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                .eq(RoleAssignRecord::getRoleId, param.getRoleId()) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                .like(StringUtils.isNotBlank(param.getRemark()), RoleAssignRecord::getRemark, param.getRemark()) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                .eq(null != param.getGsId(), RoleAssignRecord::getGsId, param.getGsId()) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                .eq(null != param.getOperUserId(), RoleAssignRecord::getOperUserId, param.getOperUserId()) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                .eq(null != param.getCustomerServiceId(), RoleAssignRecord::getCustomerServiceId, param.getCustomerServiceId()) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                .eq(RoleAssignRecord::getIsDelete, 0) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                .orderByDesc(RoleAssignRecord::getCreateTime)) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                .convert(item -> RoleAssignRecordListVO.builder() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        .id(item.getId()) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        .gameId(item.getGameId()) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        .gameName(null == game ? null : game.getName()) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        .serverId(item.getServerId()) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        .serverName(null == gameServer ? null : gameServer.getServerName()) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        .userId(item.getUserId()) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        .roleId(item.getRoleId()) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        .roleName(null == role ? null : role.getRoleName()) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        .regAgentId(null == agent ? null : agent.getAgentName()) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        .startTime(item.getStartTime()) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        .endTime(item.getEndTime()) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        .gsId(item.getGsId()) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        .gsName(getNickname(item.getGsId())) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        .operUserId(item.getOperUserId()) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        .operUserName(getNickname(item.getOperUserId())) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        .customerServiceId(item.getCustomerServiceId()) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        .customerServiceName(getNickname(item.getCustomerServiceId())) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        .remark(item.getRemark()) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        .createBy(item.getCreateBy()) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        .createName(getNickname(item.getCreateBy())) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        .createTime(item.getCreateTime()) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        .updateBy(item.getUpdateBy()) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        .updateName(getNickname(item.getUpdateBy())) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        .updateTime(item.getUpdateTime()) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        .build()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    @Override 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    @Transactional(rollbackFor = Exception.class) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    public boolean deleteByIds(List<Long> ids) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        Long sysUserId = SecurityUtil.getUserId(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        LocalDateTime now = LocalDateTime.now(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        update(new LambdaUpdateWrapper<RoleAssignRecord>() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                .set(RoleAssignRecord::getIsDelete, 1) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                .set(RoleAssignRecord::getUpdateBy, sysUserId) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                .set(RoleAssignRecord::getUpdateTime, now) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                .in(RoleAssignRecord::getId, ids)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        List<RoleAssignRecord> roleAssignRecordList = listByIds(ids); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if (CollectionUtils.isNotEmpty(roleAssignRecordList)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            RoleAssignRecord roleAssignRecord = roleAssignRecordList.get(0); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            RoleInfoAndAgentParam roleInfoAndAgentParam = RoleInfoAndAgentParam.builder() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    .regAgentId(roleAssignRecord.getRegAgentId()) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    .gameId(roleAssignRecord.getGameId()) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    .serverId(roleAssignRecord.getServerId()) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    .userId(roleAssignRecord.getUserId()) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    .roleId(roleAssignRecord.getRoleId()) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    .build(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            RoleOperate modifyRoleOperate = getModifyRoleOperate(roleInfoAndAgentParam); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            return roleOperateService.saveOrUpdate(modifyRoleOperate); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        return true; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    /** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+     * 最后记录 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+     * 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+     * @param item 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+     * @return 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+     */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    private RoleAssignRecord lastAssignRecord(RoleInfoAndAgentParam item) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        return getOne(new LambdaQueryWrapper<RoleAssignRecord>() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                .eq(RoleAssignRecord::getRegAgentId, item.getRegAgentId()) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                .eq(RoleAssignRecord::getGameId, item.getGameId()) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                .eq(RoleAssignRecord::getServerId, item.getServerId()) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                .eq(RoleAssignRecord::getUserId, item.getUserId()) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                .eq(RoleAssignRecord::getRoleId, item.getRoleId()) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                .orderByDesc(RoleAssignRecord::getStartTime) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                .eq(RoleAssignRecord::getIsDelete, 0) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                .last("limit 1")); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    /** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+     * 上一条记录 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+     * 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+     * @return 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+     */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    private RoleAssignRecord previousAssignRecord(RoleAssignRecord item, LocalDate startTime) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        return getOne(new LambdaQueryWrapper<RoleAssignRecord>() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                .eq(RoleAssignRecord::getRegAgentId, item.getRegAgentId()) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                .eq(RoleAssignRecord::getGameId, item.getGameId()) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                .eq(RoleAssignRecord::getServerId, item.getServerId()) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                .eq(RoleAssignRecord::getUserId, item.getUserId()) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                .eq(RoleAssignRecord::getRoleId, item.getRoleId()) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                .le(RoleAssignRecord::getStartTime, startTime) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                .orderByDesc(RoleAssignRecord::getStartTime) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                .eq(RoleAssignRecord::getIsDelete, 0) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                .last("limit 1")); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    /** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+     * 下一条记录 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+     * 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+     * @return 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+     */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    private RoleAssignRecord getNextRecord(RoleAssignRecord item, LocalDate startTime) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        return getOne(new LambdaQueryWrapper<RoleAssignRecord>() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                .eq(RoleAssignRecord::getRegAgentId, item.getRegAgentId()) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                .eq(RoleAssignRecord::getGameId, item.getGameId()) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                .eq(RoleAssignRecord::getServerId, item.getServerId()) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                .eq(RoleAssignRecord::getUserId, item.getUserId()) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                .eq(RoleAssignRecord::getRoleId, item.getRoleId()) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                .ge(RoleAssignRecord::getStartTime, startTime) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                .orderByAsc(RoleAssignRecord::getStartTime) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                .eq(RoleAssignRecord::getIsDelete, 0) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                .last("limit 1") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        ); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    private String getNickname(Long sysUserId) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        return sysUserRpc.getById(sysUserId).getData().getNickname(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    private RoleOperate getModifyRoleOperate(RoleInfoAndAgentParam roleInfoAndAgentParam) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        RoleAssignRecord lastAssignRecord = lastAssignRecord(roleInfoAndAgentParam); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        Long sysUserId = SecurityUtil.getUserId(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        LocalDateTime now = LocalDateTime.now(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        RoleOperate roleOperate = RoleOperate.builder().build(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        RoleOperate queryOne = roleOperateService.getOne(new LambdaQueryWrapper<RoleOperate>() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                .eq(RoleOperate::getGameId, lastAssignRecord.getGameId()) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                .eq(RoleOperate::getServerId, lastAssignRecord.getServerId()) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                .eq(RoleOperate::getUserId, lastAssignRecord.getUserId()) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                .eq(RoleOperate::getRoleId, lastAssignRecord.getRoleId()) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                .eq(RoleOperate::getIsDelete, 0)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if (null == queryOne) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            roleOperate.setGameId(lastAssignRecord.getGameId()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            roleOperate.setServerId(lastAssignRecord.getServerId()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            roleOperate.setUserId(lastAssignRecord.getUserId()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            roleOperate.setRoleId(lastAssignRecord.getRoleId()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            roleOperate.setCreateBy(sysUserId); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            roleOperate.setCreateTime(now); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            roleOperate = queryOne; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        roleOperate.setGsId(lastAssignRecord.getGsId()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        roleOperate.setCustomerServiceId(lastAssignRecord.getCustomerServiceId()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        roleOperate.setOperUserId(lastAssignRecord.getOperUserId()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        roleOperate.setRemark(lastAssignRecord.getRemark()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        roleOperate.setUpdateBy(sysUserId); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        roleOperate.setUpdateTime(now); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        return roleOperate; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 |