|
@@ -29,9 +29,11 @@ import org.dromara.system.domain.vo.GameEventProjectVo;
|
|
import org.dromara.system.domain.GameEventProject;
|
|
import org.dromara.system.domain.GameEventProject;
|
|
import org.dromara.system.mapper.GameEventProjectMapper;
|
|
import org.dromara.system.mapper.GameEventProjectMapper;
|
|
import org.dromara.system.service.IGameEventProjectService;
|
|
import org.dromara.system.service.IGameEventProjectService;
|
|
|
|
+import org.springframework.transaction.annotation.Transactional;
|
|
|
|
|
|
import java.util.*;
|
|
import java.util.*;
|
|
import java.util.stream.Collectors;
|
|
import java.util.stream.Collectors;
|
|
|
|
+import java.util.stream.Stream;
|
|
|
|
|
|
/**
|
|
/**
|
|
* 赛事项目Service业务层处理
|
|
* 赛事项目Service业务层处理
|
|
@@ -95,8 +97,8 @@ public class GameEventProjectServiceImpl implements IGameEventProjectService {
|
|
|
|
|
|
Optional.ofNullable(vo.getRefereeGroup())
|
|
Optional.ofNullable(vo.getRefereeGroup())
|
|
.filter(ObjectUtil::isNotEmpty)
|
|
.filter(ObjectUtil::isNotEmpty)
|
|
- .ifPresent(refereeId -> {
|
|
|
|
- List<Long> refereeList = JSONUtil.toList(refereeId, Long.class);
|
|
|
|
|
|
+ .ifPresent(refereeGroup -> {
|
|
|
|
+ List<Long> refereeList = JSONUtil.toList(refereeGroup, Long.class);
|
|
vo.setRefereeGroups(refereeList);
|
|
vo.setRefereeGroups(refereeList);
|
|
});
|
|
});
|
|
});
|
|
});
|
|
@@ -104,6 +106,48 @@ public class GameEventProjectServiceImpl implements IGameEventProjectService {
|
|
return TableDataInfo.build(result);
|
|
return TableDataInfo.build(result);
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+ @Override
|
|
|
|
+ public TableDataInfo<GameEventProjectVo> queryAllProjectList(GameEventProjectBo bo, PageQuery pageQuery) {
|
|
|
|
+ // 获取默认赛事ID
|
|
|
|
+ Object cacheObject = RedisUtils.getCacheObject(GameEventConstant.DEFAULT_EVENT_ID);
|
|
|
|
+ final Long defaultEventID;
|
|
|
|
+ if (cacheObject instanceof Integer) {
|
|
|
|
+ defaultEventID = ((Integer) cacheObject).longValue();
|
|
|
|
+ } else if (cacheObject instanceof Long) {
|
|
|
|
+ defaultEventID = (Long) cacheObject;
|
|
|
|
+ } else {
|
|
|
|
+ defaultEventID = null;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ // 构建查询条件,排除默认赛事ID
|
|
|
|
+ LambdaQueryWrapper<GameEventProject> lqw = buildQueryWrapperForProjectLibrary(bo, defaultEventID);
|
|
|
|
+ Page<GameEventProjectVo> result = baseMapper.selectVoPage(pageQuery.build(), lqw);
|
|
|
|
+
|
|
|
|
+ // 处理记录
|
|
|
|
+ result.getRecords().forEach(record -> {
|
|
|
|
+ Optional.ofNullable(record.getEventId())
|
|
|
|
+ .filter(ObjectUtil::isNotEmpty)
|
|
|
|
+ .ifPresent(eventId -> {
|
|
|
|
+ GameEvent gameEvent = gameEventMapper.selectById(eventId);
|
|
|
|
+ if (gameEvent != null) {
|
|
|
|
+ record.setEventName(gameEvent.getEventName());
|
|
|
|
+ }
|
|
|
|
+ });
|
|
|
|
+ //不获取关联性数据
|
|
|
|
+ record.setRefereeGroup("[]");
|
|
|
|
+ //移除原始的projectId,确保添加为新项目
|
|
|
|
+ record.setProjectId(null);
|
|
|
|
+ });
|
|
|
|
+
|
|
|
|
+ // 按更新时间降序排序(最新的在前)
|
|
|
|
+ List<GameEventProjectVo> sortedRecords = result.getRecords().stream()
|
|
|
|
+ .sorted(Comparator.comparing(GameEventProjectVo::getUpdateTime, Comparator.nullsLast(Comparator.reverseOrder())))
|
|
|
|
+ .collect(Collectors.toList());
|
|
|
|
+ result.setRecords(sortedRecords);
|
|
|
|
+
|
|
|
|
+ return TableDataInfo.build(result);
|
|
|
|
+ }
|
|
|
|
+
|
|
/**
|
|
/**
|
|
* 查询符合条件的赛事项目列表
|
|
* 查询符合条件的赛事项目列表
|
|
*
|
|
*
|
|
@@ -173,6 +217,48 @@ public class GameEventProjectServiceImpl implements IGameEventProjectService {
|
|
return lqw;
|
|
return lqw;
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+ /**
|
|
|
|
+ * 构建项目库查询条件,排除默认赛事ID
|
|
|
|
+ */
|
|
|
|
+ private LambdaQueryWrapper<GameEventProject> buildQueryWrapperForProjectLibrary(GameEventProjectBo bo, Long defaultEventID) {
|
|
|
|
+ Map<String, Object> params = bo.getParams();
|
|
|
|
+ LambdaQueryWrapper<GameEventProject> lqw = Wrappers.lambdaQuery();
|
|
|
|
+ lqw.orderByAsc(GameEventProject::getProjectId);
|
|
|
|
+
|
|
|
|
+ // 排除默认赛事ID
|
|
|
|
+ if (defaultEventID != null) {
|
|
|
|
+ lqw.ne(GameEventProject::getEventId, defaultEventID);
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ // 如果指定了eventId,则按指定条件查询
|
|
|
|
+ lqw.eq(bo.getEventId() != null, GameEventProject::getEventId, bo.getEventId());
|
|
|
|
+
|
|
|
|
+ // 通过名称模糊查询
|
|
|
|
+ Optional.ofNullable(bo.getEventName())
|
|
|
|
+ .ifPresent(eventName -> {
|
|
|
|
+ List<GameEvent> gameEvents = gameEventMapper.selectList(
|
|
|
|
+ Wrappers.lambdaQuery(GameEvent.class)
|
|
|
|
+ .like(GameEvent::getEventName, bo.getEventName())
|
|
|
|
+ .select(GameEvent::getEventId)
|
|
|
|
+ );
|
|
|
|
+ if (CollectionUtils.isNotEmpty(gameEvents)) {
|
|
|
|
+ List<Long> ids = gameEvents.stream()
|
|
|
|
+ .map(GameEvent::getEventId)
|
|
|
|
+ .collect(Collectors.toList());
|
|
|
|
+ lqw.in(GameEventProject::getEventId, ids);
|
|
|
|
+ } else {
|
|
|
|
+ lqw.apply("1=0");
|
|
|
|
+ }
|
|
|
|
+ });
|
|
|
|
+ lqw.like(StringUtils.isNotBlank(bo.getProjectName()), GameEventProject::getProjectName, bo.getProjectName());
|
|
|
|
+ lqw.eq(StringUtils.isNotBlank(bo.getProjectType()), GameEventProject::getProjectType, bo.getProjectType());
|
|
|
|
+ lqw.eq(StringUtils.isNotBlank(bo.getClassification()), GameEventProject::getClassification, bo.getClassification());
|
|
|
|
+ lqw.eq(bo.getStartTime() != null, GameEventProject::getStartTime, bo.getStartTime());
|
|
|
|
+ lqw.eq(StringUtils.isNotBlank(bo.getOrderType()), GameEventProject::getOrderType, bo.getOrderType());
|
|
|
|
+ lqw.eq(StringUtils.isNotBlank(bo.getStatus()), GameEventProject::getStatus, bo.getStatus());
|
|
|
|
+ return lqw;
|
|
|
|
+ }
|
|
|
|
+
|
|
/**
|
|
/**
|
|
* 新增赛事项目
|
|
* 新增赛事项目
|
|
*
|
|
*
|
|
@@ -201,6 +287,25 @@ public class GameEventProjectServiceImpl implements IGameEventProjectService {
|
|
return flag;
|
|
return flag;
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+ @Override
|
|
|
|
+ @Transactional(rollbackFor = Exception.class)
|
|
|
|
+ public Boolean BatchInsertByProjectList(Collection<GameEventProject> projectList) {
|
|
|
|
+ Object cacheObject = RedisUtils.getCacheObject(GameEventConstant.DEFAULT_EVENT_ID);
|
|
|
|
+ final Long defaultEventID;
|
|
|
|
+ if (cacheObject instanceof Integer) {
|
|
|
|
+ defaultEventID = ((Integer) cacheObject).longValue();
|
|
|
|
+ } else if (cacheObject instanceof Long) {
|
|
|
|
+ defaultEventID = (Long) cacheObject;
|
|
|
|
+ } else {
|
|
|
|
+ defaultEventID = null;
|
|
|
|
+ }
|
|
|
|
+ projectList.forEach(projectBo -> projectBo.setEventId(defaultEventID));
|
|
|
|
+ if (CollectionUtils.isNotEmpty(projectList)){
|
|
|
|
+ return baseMapper.insertBatch(projectList);
|
|
|
|
+ }
|
|
|
|
+ return false;
|
|
|
|
+ }
|
|
|
|
+
|
|
/**
|
|
/**
|
|
* 修改赛事项目
|
|
* 修改赛事项目
|
|
*
|
|
*
|