You need to sign in or sign up before continuing.
Commit c2d17ae6 authored by liming's avatar liming

系列赛详情接口

parent 0c3f7307
This source diff could not be displayed because it is too large. You can view the blob instead.
......@@ -27,6 +27,11 @@ public class SeriesNotice implements Serializable {
@TableId(value = "id", type = IdType.AUTO)
private Long id;
/**
* 通知内容
*/
private String content;
/**
* 系列赛id
*/
......
......@@ -2,11 +2,13 @@ package com.antai.sport.http.server.server.api.business.series.controller;
import com.antai.sport.http.server.common.base.Result;
import com.antai.sport.http.server.server.api.business.series.service.SeriesService;
import com.antai.sport.http.server.server.api.business.series.vo.SeriesDetailsVO;
import com.antai.sport.http.server.server.api.business.series.vo.SeriesListVO;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
......@@ -28,4 +30,10 @@ public class SeriesController {
return success(seriesService.getSeriesList());
}
@GetMapping("{id}")
@ApiOperation(value = "查询系列赛详情")
public ResponseEntity<Result<SeriesDetailsVO>> getSeriesDetails(@PathVariable("id") Long id) {
return success(seriesService.getSeriesDetails(id));
}
}
package com.antai.sport.http.server.server.api.business.series.converter;
import com.antai.sport.http.server.repository.series.entity.Series;
import com.antai.sport.http.server.server.api.business.series.vo.SeriesDetailsVO;
import org.mapstruct.Mapper;
import org.mapstruct.Mapping;
@Mapper(componentModel = "spring")
public interface SeriesConverter {
@Mapping(source = "status",target = "status")
SeriesDetailsVO toSeriesDetailVO(Series series,Integer status);
}
package com.antai.sport.http.server.server.api.business.series.mapper;
import com.antai.sport.http.server.server.api.business.series.vo.SeriesListVO;
import com.antai.sport.http.server.server.api.business.series.vo.SeriesNoticeVO;
import org.apache.ibatis.annotations.Param;
import java.util.List;
public interface SeriesBusinessMapper {
List<SeriesListVO> getSeriesList();
List<SeriesNoticeVO> getSeriesNotice(@Param("seriesId") Long seriesId);
}
package com.antai.sport.http.server.server.api.business.series.service;
import com.antai.sport.http.server.common.exception.BusinessException;
import com.antai.sport.http.server.repository.series.entity.Series;
import com.antai.sport.http.server.repository.series.mapper.SeriesMapper;
import com.antai.sport.http.server.server.api.business.series.converter.SeriesConverter;
import com.antai.sport.http.server.server.api.business.series.mapper.SeriesBusinessMapper;
import com.antai.sport.http.server.server.api.business.series.vo.SeriesDetailsVO;
import com.antai.sport.http.server.server.api.business.series.vo.SeriesListVO;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.time.LocalDateTime;
import java.util.List;
@Service
public class SeriesService {
@Resource
private SeriesMapper seriesMapper;
@Resource
private SeriesConverter seriesConverter;
@Resource
private SeriesBusinessMapper seriesBusinessMapper;
......@@ -17,4 +29,27 @@ public class SeriesService {
return seriesBusinessMapper.getSeriesList();
}
public SeriesDetailsVO getSeriesDetails(Long id) {
Series series = seriesMapper.selectById(id);
if (series == null) {
throw new BusinessException("您查询的系列赛信息不存在");
}
LocalDateTime now = LocalDateTime.now();
Integer status;
if (series.getFinished()) {
status = 40;
} else if (now.isBefore(series.getApplyStartTime())) {
status = 30;
} else if (now.isAfter(series.getApplyStartTime()) && now.isBefore(series.getApplyEndTime())) {
status = 10;
} else {
status = 20;
}
SeriesDetailsVO result = seriesConverter.toSeriesDetailVO(series, status);
result.setNoticeList(seriesBusinessMapper.getSeriesNotice(id));
return result;
}
}
package com.antai.sport.http.server.server.api.business.series.vo;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.time.LocalDateTime;
import java.util.List;
@ApiModel("系列赛详情")
@Data
public class SeriesDetailsVO {
@ApiModelProperty("id")
private Long id;
@ApiModelProperty("名称")
private String name;
@ApiModelProperty("描述")
private String description;
@ApiModelProperty("协议")
private String agreement;
@ApiModelProperty("状态 10 报名中 20 进行中 30 未开赛 40 已完赛")
private Integer status;
@ApiModelProperty("报名开始时间")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm", timezone = "GMT+8")
private LocalDateTime applyStartTime;
@ApiModelProperty("报名结束时间")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm", timezone = "GMT+8")
private LocalDateTime applyEndTime;
@ApiModelProperty("报名数量")
private Integer applyNum;
@ApiModelProperty("通知列表")
List<SeriesNoticeVO> noticeList;
}
package com.antai.sport.http.server.server.api.business.series.vo;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.time.LocalDateTime;
@ApiModel("系列赛通知")
@Data
public class SeriesNoticeVO {
@ApiModelProperty("通知内容")
private String content;
@ApiModelProperty("创建时间")
@JsonFormat(pattern = "yyyy-MM-dd",timezone = "GMT+8")
private LocalDateTime createTime;
}
......@@ -11,4 +11,12 @@
where deleted = 0 and status = 20
) t1 order by t1.status,t1.id desc
</select>
<select id="getSeriesNotice" resultType="com.antai.sport.http.server.server.api.business.series.vo.SeriesNoticeVO">
select content,create_time
from series_notice
where status = 20
and series_id = #{seriesId}
order by create_time desc
</select>
</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