Commit 7f406f8a authored by liming's avatar liming

系列赛轮次编辑

parent 6948a781
...@@ -2,12 +2,10 @@ package com.antai.sport.http.server.management.api.business.series.controller; ...@@ -2,12 +2,10 @@ package com.antai.sport.http.server.management.api.business.series.controller;
import com.antai.sport.http.server.common.base.Result; import com.antai.sport.http.server.common.base.Result;
import com.antai.sport.http.server.management.api.annotation.LoginUser; import com.antai.sport.http.server.management.api.annotation.LoginUser;
import com.antai.sport.http.server.management.api.business.series.dto.SeriesAreaDTO; import com.antai.sport.http.server.management.api.business.series.dto.*;
import com.antai.sport.http.server.management.api.business.series.dto.SeriesAreaSaveDTO;
import com.antai.sport.http.server.management.api.business.series.dto.SeriesListQueryDTO;
import com.antai.sport.http.server.management.api.business.series.dto.SeriesSaveDTO;
import com.antai.sport.http.server.management.api.business.series.service.SeriesService; import com.antai.sport.http.server.management.api.business.series.service.SeriesService;
import com.antai.sport.http.server.management.api.business.series.vo.SeriesListPageVO; import com.antai.sport.http.server.management.api.business.series.vo.SeriesListPageVO;
import com.antai.sport.http.server.management.api.business.series.vo.SeriesRoundDetailVO;
import com.antai.sport.http.server.repository.series.entity.Series; import com.antai.sport.http.server.repository.series.entity.Series;
import com.antai.sport.http.server.repository.sys.entity.SysUser; import com.antai.sport.http.server.repository.sys.entity.SysUser;
import io.swagger.annotations.Api; import io.swagger.annotations.Api;
...@@ -81,4 +79,15 @@ public class SeriesController { ...@@ -81,4 +79,15 @@ public class SeriesController {
return success(); return success();
} }
@GetMapping("round/{roundId}")
public ResponseEntity<Result<SeriesRoundDetailVO>> getSeriesRoundDetail(@PathVariable("roundId") Long roundId) {
return success(seriesService.getSeriesRoundDetail(roundId));
}
@PostMapping("round")
public ResponseEntity<Result> saveSeriesRound(@RequestBody SeriesRoundSaveDTO dto) {
seriesService.saveSeriesRound(dto);
return success();
}
} }
package com.antai.sport.http.server.management.api.business.series.converter; package com.antai.sport.http.server.management.api.business.series.converter;
import com.antai.sport.http.server.management.api.business.series.dto.SeriesAreaDTO; import com.antai.sport.http.server.management.api.business.series.dto.SeriesAreaDTO;
import com.antai.sport.http.server.management.api.business.series.dto.SeriesRoundSaveDTO;
import com.antai.sport.http.server.management.api.business.series.dto.SeriesSaveDTO; import com.antai.sport.http.server.management.api.business.series.dto.SeriesSaveDTO;
import com.antai.sport.http.server.repository.series.entity.Series; import com.antai.sport.http.server.repository.series.entity.Series;
import com.antai.sport.http.server.repository.series.entity.SeriesArea; import com.antai.sport.http.server.repository.series.entity.SeriesArea;
import com.antai.sport.http.server.repository.series.entity.SeriesRound;
import org.mapstruct.Mapper; import org.mapstruct.Mapper;
import org.mapstruct.Mapping; import org.mapstruct.Mapping;
...@@ -17,4 +19,7 @@ public interface SeriesConverter { ...@@ -17,4 +19,7 @@ public interface SeriesConverter {
List<SeriesAreaDTO> toSeriesAreaDTO(List<SeriesArea> source); List<SeriesAreaDTO> toSeriesAreaDTO(List<SeriesArea> source);
List<SeriesArea> toSeriesArea(List<SeriesAreaDTO> source); List<SeriesArea> toSeriesArea(List<SeriesAreaDTO> source);
@Mapping(source = "source.roundId", target = "id")
SeriesRound toSeriesRound(SeriesRoundSaveDTO source);
} }
package com.antai.sport.http.server.management.api.business.series.dto;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;
import java.math.BigDecimal;
import java.time.LocalDateTime;
@Data
public class SeriesRoundSaveDTO {
private Long roundId;
private Long seriesId;
private String name;
private Integer type;
@JsonFormat(pattern = "yyyy-MM-dd HH:mm", timezone = "GMT+8")
private LocalDateTime startTime;
private Integer chance;
private String map;
private String path;
private BigDecimal distance;
private BigDecimal climbDistance;
private Boolean started;
private Boolean finished;
private Boolean resultConfirm;
}
...@@ -2,10 +2,15 @@ package com.antai.sport.http.server.management.api.business.series.mapper; ...@@ -2,10 +2,15 @@ package com.antai.sport.http.server.management.api.business.series.mapper;
import com.antai.sport.http.server.management.api.business.series.dto.SeriesListQueryDTO; import com.antai.sport.http.server.management.api.business.series.dto.SeriesListQueryDTO;
import com.antai.sport.http.server.management.api.business.series.vo.SeriesListVO; import com.antai.sport.http.server.management.api.business.series.vo.SeriesListVO;
import com.antai.sport.http.server.repository.series.entity.SeriesRound;
import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.metadata.IPage;
import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Param;
import java.util.List;
public interface SeriesBusinessMapper { public interface SeriesBusinessMapper {
IPage<SeriesListVO> getSeriesList(IPage<SeriesListVO> pageParam, @Param("param") SeriesListQueryDTO param); IPage<SeriesListVO> getSeriesList(IPage<SeriesListVO> pageParam, @Param("param") SeriesListQueryDTO param);
List<SeriesRound> getRoundBySeriesId(@Param("seriesId") Long SeriesId);
} }
...@@ -2,27 +2,37 @@ package com.antai.sport.http.server.management.api.business.series.service; ...@@ -2,27 +2,37 @@ package com.antai.sport.http.server.management.api.business.series.service;
import com.antai.sport.http.server.common.exception.BusinessException; import com.antai.sport.http.server.common.exception.BusinessException;
import com.antai.sport.http.server.management.api.business.series.converter.SeriesConverter; import com.antai.sport.http.server.management.api.business.series.converter.SeriesConverter;
import com.antai.sport.http.server.management.api.business.series.dto.SeriesAreaDTO; import com.antai.sport.http.server.management.api.business.series.dto.*;
import com.antai.sport.http.server.management.api.business.series.dto.SeriesAreaSaveDTO;
import com.antai.sport.http.server.management.api.business.series.dto.SeriesListQueryDTO;
import com.antai.sport.http.server.management.api.business.series.dto.SeriesSaveDTO;
import com.antai.sport.http.server.management.api.business.series.mapper.SeriesBusinessMapper; import com.antai.sport.http.server.management.api.business.series.mapper.SeriesBusinessMapper;
import com.antai.sport.http.server.management.api.business.series.vo.SeriesListPageVO; import com.antai.sport.http.server.management.api.business.series.vo.SeriesListPageVO;
import com.antai.sport.http.server.management.api.business.series.vo.SeriesListVO; import com.antai.sport.http.server.management.api.business.series.vo.SeriesListVO;
import com.antai.sport.http.server.management.api.business.series.vo.SeriesRoundDetailVO;
import com.antai.sport.http.server.management.api.business.simplematch.dto.vo.MapPathVO;
import com.antai.sport.http.server.repository.map.entity.Map;
import com.antai.sport.http.server.repository.map.entity.MapPath;
import com.antai.sport.http.server.repository.map.mapper.MapMapper;
import com.antai.sport.http.server.repository.map.mapper.MapPathMapper;
import com.antai.sport.http.server.repository.series.entity.Series; import com.antai.sport.http.server.repository.series.entity.Series;
import com.antai.sport.http.server.repository.series.entity.SeriesArea; import com.antai.sport.http.server.repository.series.entity.SeriesArea;
import com.antai.sport.http.server.repository.series.entity.SeriesMatch;
import com.antai.sport.http.server.repository.series.entity.SeriesRound;
import com.antai.sport.http.server.repository.series.mapper.SeriesAreaMapper; import com.antai.sport.http.server.repository.series.mapper.SeriesAreaMapper;
import com.antai.sport.http.server.repository.series.mapper.SeriesMapper; import com.antai.sport.http.server.repository.series.mapper.SeriesMapper;
import com.antai.sport.http.server.repository.series.mapper.SeriesMatchMapper;
import com.antai.sport.http.server.repository.series.mapper.SeriesRoundMapper;
import com.antai.sport.http.server.repository.sys.entity.SysUser; import com.antai.sport.http.server.repository.sys.entity.SysUser;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.metadata.OrderItem; import com.baomidou.mybatisplus.core.metadata.OrderItem;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.google.common.collect.Iterables;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource; import javax.annotation.Resource;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List; import java.util.List;
@Service @Service
...@@ -33,6 +43,14 @@ public class SeriesService { ...@@ -33,6 +43,14 @@ public class SeriesService {
private SeriesMapper seriesMapper; private SeriesMapper seriesMapper;
@Resource @Resource
private SeriesAreaMapper seriesAreaMapper; private SeriesAreaMapper seriesAreaMapper;
@Resource
private SeriesRoundMapper seriesRoundMapper;
@Resource
private MapMapper mapMapper;
@Resource
private MapPathMapper mapPathMapper;
@Resource
private SeriesMatchMapper seriesMatchMapper;
@Resource @Resource
private SeriesConverter seriesConverter; private SeriesConverter seriesConverter;
...@@ -137,4 +155,86 @@ public class SeriesService { ...@@ -137,4 +155,86 @@ public class SeriesService {
} }
} }
} }
public SeriesRoundDetailVO getSeriesRoundDetail(Long roundId) {
SeriesRoundDetailVO result = new SeriesRoundDetailVO();
SeriesRound round;
if (roundId == null || roundId == 0) {
round = new SeriesRound();
round.setStatus(10);
round.setFinished(false);
round.setStarted(false);
round.setResultConfirm(false);
} else {
round = seriesRoundMapper.selectById(roundId);
if (round == null) {
throw new BusinessException("您查询的系列赛不存在");
}
}
result.setSeriesRound(round);
List<Map> mapList = mapMapper.selectList(null);
List<MapPath> mapPathList = mapPathMapper.selectList(null);
HashMap<String, MapPathVO> mapPathVOHashMap = new HashMap<>();
List<MapPathVO> mapPathVOList = new ArrayList<>(mapList.size());
mapList.forEach(item -> {
MapPathVO mapVO = new MapPathVO();
mapVO.setId(item.getId());
mapVO.setKey(item.getMapKey());
mapVO.setName(item.getMapName());
mapVO.setPathList(new ArrayList<>());
mapPathVOList.add(mapVO);
mapPathVOHashMap.put(item.getMapKey(), mapVO);
});
mapPathList.forEach(item -> {
MapPathVO mapPathVO = new MapPathVO();
mapPathVO.setId(item.getId());
mapPathVO.setKey(item.getPathKey());
mapPathVO.setName(item.getPathName());
if (mapPathVOHashMap.containsKey(item.getMapKey())) {
mapPathVOHashMap.get(item.getMapKey()).getPathList().add(mapPathVO);
}
});
result.setMapList(mapPathVOList);
return result;
}
@Transactional
public void saveSeriesRound(SeriesRoundSaveDTO dto) {
SeriesRound seriesRound = seriesConverter.toSeriesRound(dto);
List<SeriesRound> roundList = seriesBusinessMapper.getRoundBySeriesId(dto.getSeriesId());
if (seriesRound.getId() == null || seriesRound.getId() == 0) {
seriesRound.setFinalRound(true);
seriesRound.setShowOrder(1);
seriesRound.setStatus(10);
if (!roundList.isEmpty()) {
if (seriesRound.getType().equals(10)) {
throw new BusinessException("只有第一轮可以配置为预选赛");
}
SeriesRound lastRound = Iterables.getLast(roundList);
lastRound.setFinalRound(false);
seriesRoundMapper.updateById(lastRound);
seriesRound.setPreRoundId(lastRound.getId());
seriesRound.setShowOrder(lastRound.getShowOrder() + 1);
}
seriesRoundMapper.insert(seriesRound);
} else {
if (seriesRound.getType().equals(10) && !roundList.get(0).getId().equals(seriesRound.getId())) {
throw new BusinessException("只有第一轮可以配置为预选赛");
}
seriesRoundMapper.updateById(seriesRound);
QueryWrapper<SeriesMatch> matchQuery = new QueryWrapper<>();
matchQuery.lambda().eq(SeriesMatch::getRoundId, seriesRound.getId()).eq(SeriesMatch::getDeleted, 0);
List<SeriesMatch> matchList = seriesMatchMapper.selectList(matchQuery);
for (SeriesMatch item : matchList) {
item.setMap(seriesRound.getMap());
item.setPath(seriesRound.getPath());
item.setDistance(seriesRound.getDistance());
item.setClimbDistance(seriesRound.getClimbDistance());
item.setType(seriesRound.getType());
seriesMatchMapper.updateById(item);
}
}
}
} }
package com.antai.sport.http.server.management.api.business.series.vo;
import com.antai.sport.http.server.management.api.business.simplematch.dto.vo.MapPathVO;
import com.antai.sport.http.server.repository.series.entity.SeriesRound;
import lombok.Data;
import java.util.List;
@Data
public class SeriesRoundDetailVO {
private SeriesRound seriesRound;
private List<MapPathVO> mapList;
}
...@@ -43,7 +43,7 @@ public class SimpleMatchController { ...@@ -43,7 +43,7 @@ public class SimpleMatchController {
return success(); return success();
} }
@ApiOperation("获取用户数据") @ApiOperation("获取比赛数据")
@GetMapping("/{matchId}") @GetMapping("/{matchId}")
public ResponseEntity<Result<SimpleMatchResponseDTO>> getSimpleMatch(@PathVariable("matchId") Long matchId) { public ResponseEntity<Result<SimpleMatchResponseDTO>> getSimpleMatch(@PathVariable("matchId") Long matchId) {
return success(simpleMatchService.getSimpleMatch(matchId)); return success(simpleMatchService.getSimpleMatch(matchId));
...@@ -57,4 +57,7 @@ public class SimpleMatchController { ...@@ -57,4 +57,7 @@ public class SimpleMatchController {
} }
} }
...@@ -13,4 +13,7 @@ ...@@ -13,4 +13,7 @@
</if> </if>
</select> </select>
<select id="getRoundBySeriesId" resultType="com.antai.sport.http.server.repository.series.entity.SeriesRound">
select * from series_round where deleted = 0 and series_id = #{seriesId} order by show_order,id
</select>
</mapper> </mapper>
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment