Commit fc155140 authored by liming's avatar liming

清空前期临时数据接口

parent e15d0ce2
This source diff could not be displayed because it is too large. You can view the blob instead.
package com.antai.sport.http.server.mobile.api.business.match.bicycle.controller;
import com.antai.sport.http.server.mobile.api.business.match.bicycle.dto.DtoMatchBicycleResult;
import com.antai.sport.http.server.mobile.api.business.match.bicycle.dto.ReqMatchBicycleSave;
import com.antai.sport.http.server.mobile.api.business.match.bicycle.dto.RespMatchBicycleList;
import com.antai.sport.http.server.mobile.api.business.match.bicycle.service.MatchBicyclePlayerService;
import com.antai.sport.http.server.mobile.api.business.match.bicycle.service.MatchBicycleService;
import com.antai.sport.http.server.common.annotation.LoginSportUser;
import com.antai.sport.http.server.common.base.Result;
import com.antai.sport.http.server.mobile.api.business.match.bicycle.dto.DtoMatchAutoCreate;
import com.antai.sport.http.server.repository.sport.entity.SportUser;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import java.util.List;
import static com.antai.sport.http.server.common.util.ResultUtil.success;
/**
* @Author liming
* @Date 2021/9/11 18:31
* @Email lmmax@126.com
* @Description:
*/
@RestController()
@RequestMapping("/match/bicycle")
@Api(tags = {"比赛相关接口"})
public class MatchBicycleController {
@Resource
private MatchBicycleService matchBicycleService;
@Resource
private MatchBicyclePlayerService matchBicyclePlayerService;
@PostMapping
@ApiOperation(value = "创建比赛", notes = "data 为创建成功的比赛Id")
public ResponseEntity<Result<Long>> saveMatchBicycle(@RequestBody ReqMatchBicycleSave data) {
return success(matchBicycleService.saveMatchBicycle(data));
}
@GetMapping()
@ApiOperation(value = "获取比赛列表接口", notes = "data为比赛列表数据")
public ResponseEntity<Result<List<RespMatchBicycleList>>> getMatchBicycleList() {
return success(matchBicycleService.getMatchBicycleList());
}
@DeleteMapping("/{matchId}")
@ApiOperation(value = "删除比赛接口" )
public ResponseEntity<Result> deleteMatchBicycle(@PathVariable Long matchId) {
matchBicycleService.removeById(matchId);
return success();
}
@PostMapping("/entry/{matchId}")
@ApiOperation(value = "加入比赛接口")
public ResponseEntity<Result> entryMatchBicycle(@LoginSportUser SportUser loginUser, @PathVariable Long matchId) {
matchBicycleService.entryMatchBicycle(loginUser, matchId);
return success();
}
@PostMapping("/player/record")
@ApiOperation(value = "比赛数据保存")
public ResponseEntity<Result> saveMatchBicyclePlayerRecord(@RequestBody List<DtoMatchBicycleResult> resultList) {
matchBicyclePlayerService.saveMatchBicyclePlayerRecord(resultList);
return success();
}
@GetMapping("/player/record/{matchId}")
@ApiOperation(value = "比赛数据查询")
public ResponseEntity<Result<List<DtoMatchBicycleResult>>> getMatchBicyclePlayerRecord(@PathVariable Long matchId) {
return success(matchBicyclePlayerService.getMatchBicyclePlayerRecord(matchId));
}
/**
* 自动结束当前比赛并且重新开启一场比赛
*/
@PostMapping("/auto/create")
@ApiOperation(value = "自动关闭当前赛事,创建一个新的比赛",
notes = "创建比赛规则:进入时间=当前时间+1分钟 开始时间=进入时间+1分钟 结束时间=开始时间+20分钟")
public ResponseEntity<Result> autoCreate(@RequestBody DtoMatchAutoCreate param){
matchBicycleService.autoCreate(param);
return success();
}
}
package com.antai.sport.http.server.mobile.api.business.match.bicycle.dto;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@Data
@ApiModel("自动创建")
public class DtoMatchAutoCreate {
@ApiModelProperty("比赛名称")
private String name;
@ApiModelProperty("延迟进入时间间隔(分钟)")
private Integer delayEntryMinute;
@ApiModelProperty("准备时间(分钟)")
private Integer warmUpMinute;
@ApiModelProperty("比赛总时长(分钟)")
private Integer matchMinute;
@ApiModelProperty("比赛总距离(米)")
private Integer distance;
}
package com.antai.sport.http.server.mobile.api.business.match.bicycle.dto;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.math.BigDecimal;
import java.time.LocalDateTime;
/**
* @Author liming
* @Date 2021/9/11 19:48
* @Email lmmax@126.com
* @Description:
*/
@Data
@ApiModel("比赛结果")
public class DtoMatchBicycleResult {
@ApiModelProperty("比赛id")
private Long matchId;
@ApiModelProperty("用户id")
private Long userId;
@ApiModelProperty("用户昵称")
private String nickname;
@ApiModelProperty("进入时间 yyyy-MM-dd HH:mm:ss")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
private LocalDateTime entryTime;
@ApiModelProperty("完成时间 yyyy-MM-dd HH:mm:ss")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
private LocalDateTime finishTime;
@ApiModelProperty("比赛用时(秒)")
private Integer duration;
@ApiModelProperty("比赛名次")
private Integer matchRank;
@ApiModelProperty("骑行总长度")
private BigDecimal distance;
@ApiModelProperty("爬坡高度")
private BigDecimal climbDistance;
@ApiModelProperty("平均功率")
private BigDecimal avgFtp;
@ApiModelProperty("平均速度")
private BigDecimal avgSpeed;
@ApiModelProperty("比赛状态1.完成比赛 2.未完成比赛")
private Integer status;
}
package com.antai.sport.http.server.mobile.api.business.match.bicycle.dto;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.time.LocalDateTime;
@Data
@ApiModel("创建比赛")
public class ReqMatchBicycleSave {
@ApiModelProperty("比赛名称")
private String name;
@ApiModelProperty("允许进入时间 yyyy-MM-dd HH:mm:ss")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
private LocalDateTime entryTime;
@ApiModelProperty("开始比赛时间 yyyy-MM-dd HH:mm:ss")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
private LocalDateTime startTime;
@ApiModelProperty("比赛结束时间 yyyy-MM-dd HH:mm:ss")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
private LocalDateTime endTime;
@ApiModelProperty("总长度")
private Integer distance;
}
package com.antai.sport.http.server.mobile.api.business.match.bicycle.dto;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.time.LocalDateTime;
/**
* @Author liming
* @Date 2021/9/11 18:57
* @Email lmmax@126.com
* @Description:
*/
@Data
@ApiModel("比赛列表")
public class RespMatchBicycleList {
@ApiModelProperty("比赛id")
private Long id;
@ApiModelProperty("比赛名称")
private String name;
@ApiModelProperty("允许进入时间")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
private LocalDateTime entryTime;
@ApiModelProperty("开始比赛时间")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
private LocalDateTime startTime;
@ApiModelProperty("比赛结束时间")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
private LocalDateTime endTime;
@ApiModelProperty("总长度")
private Integer distance;
}
package com.antai.sport.http.server.mobile.api.business.match.bicycle.mapper;
import com.antai.sport.http.server.mobile.api.business.match.bicycle.dto.DtoMatchBicycleResult;
import com.antai.sport.http.server.mobile.api.business.match.bicycle.dto.RespMatchBicycleList;
import org.apache.ibatis.annotations.Param;
import java.time.LocalDateTime;
import java.util.List;
/**
* @Author liming
* @Date 2021/9/11 19:04
* @Email lmmax@126.com
* @Description:
*/
public interface MatchBicycleBusinessMapper {
List<RespMatchBicycleList> getMatchBicycleList();
List<DtoMatchBicycleResult> getMatchBicyclePlayerRecord(Long matchId);
Boolean checkMatchRepeat(@Param("entryTime") LocalDateTime entryTime, @Param("endTime") LocalDateTime endTime);
}
package com.antai.sport.http.server.mobile.api.business.match.bicycle.service;
import com.antai.sport.http.server.mobile.api.business.match.bicycle.dto.DtoMatchBicycleResult;
import com.antai.sport.http.server.constants.SportType;
import com.antai.sport.http.server.mobile.api.business.match.bicycle.mapper.MatchBicycleBusinessMapper;
import com.antai.sport.http.server.mobile.api.business.sport.user.SportUserSummaryService;
import com.antai.sport.http.server.repository.match.entity.MatchBicyclePlayer;
import com.antai.sport.http.server.repository.match.mapper.MatchBicyclePlayerMapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.List;
/**
* @Author liming
* @Date 2021/9/11 18:32
* @Email lmmax@126.com
* @Description:
*/
@Service
public class MatchBicyclePlayerService extends ServiceImpl<MatchBicyclePlayerMapper, MatchBicyclePlayer> {
@Resource
private MatchBicycleBusinessMapper matchBicycleBusinessMapper;
@Resource
private SportUserSummaryService sportUserSummaryService;
/**
* 保存比赛结果
*
* @param resultList
*/
@Transactional
public void saveMatchBicyclePlayerRecord(List<DtoMatchBicycleResult> resultList) {
if (resultList == null || resultList.isEmpty()) {
return;
}
List<MatchBicyclePlayer> saveList = new ArrayList<>(resultList.size());
for (DtoMatchBicycleResult item : resultList) {
MatchBicyclePlayer record = new MatchBicyclePlayer();
record.setMatchId(item.getMatchId());
record.setUserId(item.getUserId());
record.setEntryTime(item.getEntryTime());
record.setFinishTime(item.getFinishTime());
record.setDuration(item.getDuration());
record.setMatchRank(item.getMatchRank());
record.setClimbDistance(item.getClimbDistance());
record.setDistance(item.getDistance());
record.setAvgFtp(item.getAvgFtp());
record.setAvgSpeed(item.getAvgSpeed());
record.setStatus(item.getStatus());
saveList.add(record);
sportUserSummaryService.summary(item.getUserId(), SportType.BICYCLE, item.getDistance(), item.getClimbDistance(), item.getDuration());
}
this.saveBatch(saveList);
}
public List<DtoMatchBicycleResult> getMatchBicyclePlayerRecord(Long matchId) {
return matchBicycleBusinessMapper.getMatchBicyclePlayerRecord(matchId);
}
}
package com.antai.sport.http.server.mobile.api.business.match.bicycle.service;
import com.antai.sport.http.server.common.exception.BusinessException;
import com.antai.sport.http.server.constants.DeleteStatus;
import com.antai.sport.http.server.mobile.api.business.match.bicycle.dto.DtoMatchAutoCreate;
import com.antai.sport.http.server.mobile.api.business.match.bicycle.dto.ReqMatchBicycleSave;
import com.antai.sport.http.server.mobile.api.business.match.bicycle.dto.RespMatchBicycleList;
import com.antai.sport.http.server.mobile.api.business.match.bicycle.mapper.MatchBicycleBusinessMapper;
import com.antai.sport.http.server.repository.match.entity.MatchBicycle;
import com.antai.sport.http.server.repository.match.mapper.MatchBicycleMapper;
import com.antai.sport.http.server.repository.sport.entity.SportUser;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.client.RestTemplate;
import javax.annotation.Resource;
import java.time.LocalDateTime;
import java.util.List;
/**
* @Author liming
* @Date 2021/9/11 18:32
* @Email lmmax@126.com
* @Description:
*/
@Service
public class MatchBicycleService extends ServiceImpl<MatchBicycleMapper, MatchBicycle> {
@Resource
private MatchBicycleBusinessMapper matchBicycleBusinessMapper;
@Value("${game-server-address}")
private String gameServerAddress;
public Long saveMatchBicycle(@RequestBody ReqMatchBicycleSave data) {
if (StringUtils.isBlank(data.getName())) {
throw new BusinessException("比赛名称不能为空");
}
if (data.getEntryTime() == null || data.getStartTime() == null || data.getEndTime() == null) {
throw new BusinessException("所有输入时间不能为空");
}
if (data.getEntryTime().equals(data.getStartTime()) || data.getEntryTime().isAfter(data.getStartTime())) {
throw new BusinessException("允许进入时间必须早于比赛开始时间");
}
if (data.getStartTime().equals(data.getEndTime()) || data.getStartTime().isAfter(data.getEndTime())) {
throw new BusinessException("比赛开始时间必须早于比赛结束时间");
}
if (matchBicycleBusinessMapper.checkMatchRepeat(data.getEntryTime(), data.getEndTime())) {
throw new BusinessException("比赛时间段有冲突,请修改比赛时间");
}
MatchBicycle match = new MatchBicycle();
match.setName(data.getName());
match.setEntryTime(data.getEntryTime());
match.setStartTime(data.getStartTime());
match.setEndTime(data.getEndTime());
match.setDistance(data.getDistance());
this.save(match);
return match.getId();
}
public List<RespMatchBicycleList> getMatchBicycleList() {
return matchBicycleBusinessMapper.getMatchBicycleList();
}
public void entryMatchBicycle(SportUser loginUser, Long matchId) {
MatchBicycle match = this.getById(matchId);
if (match == null || match.getEndTime() == null) {
throw new BusinessException("您报名的比赛不存在");
}
LocalDateTime now = LocalDateTime.now();
if (now.isBefore(match.getEntryTime())) {
throw new BusinessException("当前比赛还没到进入时间,请查看比赛详情");
}
if (now.isAfter(match.getEndTime())) {
throw new BusinessException("当前比赛已经结束,您已无法参加");
}
if (now.isAfter(match.getStartTime())) {
throw new BusinessException("当前比赛已经开始,您已无法加入");
}
}
public void autoCreate(DtoMatchAutoCreate param) {
//查询当前进行中的比赛进行,设置结束时间为当前时间
QueryWrapper<MatchBicycle> matchQuery = new QueryWrapper<>();
LocalDateTime now = LocalDateTime.now();
matchQuery.eq("deleted", DeleteStatus.UNDELETED).ge("end_time", now);
List<MatchBicycle> matchList = this.list(matchQuery);
if (matchList != null && matchList.size() > 0) {
for (MatchBicycle item : matchList) {
item.setEndTime(now);
item.setStartTime(now);
}
this.saveOrUpdateBatch(matchList);
}
//调用游戏服务端的暂停接口
RestTemplate restTemplate = new RestTemplate();
restTemplate.getForObject(gameServerAddress, String.class);
//创建一场新的比赛 创建比赛规则:进入时间=当前时间+1分钟 开始时间=进入时间+1分钟 结束时间=开始时间+20分钟
MatchBicycle match = new MatchBicycle();
match.setName(param.getName());
match.setEntryTime(now.plusMinutes(param.getDelayEntryMinute()));
match.setStartTime(now.plusMinutes(param.getDelayEntryMinute() + param.getWarmUpMinute()));
match.setEndTime(now.plusMinutes(param.getDelayEntryMinute() + param.getWarmUpMinute() + param.getMatchMinute()));
match.setDistance(param.getDistance());
this.save(match);
}
}
......@@ -83,30 +83,4 @@ public class SportUserController {
public ResponseEntity<Result<List<RespUserInfo>>> getUserInfoLike(@RequestBody String key) {
return success(sportUserService.getUserInfoLike(key));
}
// @ApiOperation(value = "用户角色信息获取")
// @GetMapping("/user/role")
// public ResponseEntity<Result<List<RespSportSection>>> getUserRole(@LoginSportUser SportUser loginUser) {
// return success(sportUserService.getUserSection(UserSectionType.ROLE, loginUser));
// }
// @ApiOperation(value = "用户角色信息保存")
// @PostMapping("/user/role")
// public ResponseEntity<Result> saveUserRole(@LoginSportUser SportUser loginUser, @RequestBody List<ReqSaveUserSkin> param) {
// sportUserService.saveUserSkin(UserSectionType.ROLE, loginUser, param);
// return success();
// }
// @ApiOperation(value = "用户装备信息获取")
// @GetMapping("/user/equipment")
// public ResponseEntity<Result<List<RespSportSection>>> getUserEquipment(@LoginSportUser SportUser loginUser) {
// return success(sportUserService.getUserSection(UserSectionType.EQUIPMENT, loginUser));
// }
// @ApiOperation(value = "用户装备信息保存")
// @PostMapping("/user/equipment")
// public ResponseEntity<Result> saveUserEquipment(@LoginSportUser SportUser loginUser, @RequestBody List<ReqSaveUserSkin> param) {
// sportUserService.saveUserSkin(UserSectionType.EQUIPMENT, loginUser, param);
// return success();
// }
}
......@@ -51,10 +51,6 @@ public class SportUserService {
@Resource
private SportUserMapper sportUserMapper;
@Resource
private SportSectionMapper sportSectionMapper;
@Resource
private SportSectionSkinMapper sportSectionSkinMapper;
@Resource
private SportUserSectionSkinMapper sportUserSectionSkinMapper;
@Resource
private BaseAvatarMapper baseAvatarMapper;
......@@ -197,93 +193,6 @@ public class SportUserService {
redisTemplate.delete("sport_user::" + loginUser.getPhone());
}
/**
* @param loginUser
* @return
*/
public List<RespSportSection> getUserSection(Integer sectionType, SportUser loginUser) {
if (loginUser.getSex() == null) {
throw new BusinessException("请先选择姓名别");
}
List<RespSportSection> resultList = new ArrayList<>();
QueryWrapper<SportSection> sectionQueryWrapper = new QueryWrapper<>();
sectionQueryWrapper.eq("type", sectionType);
sectionQueryWrapper.orderBy(true, true, Arrays.asList("show_order", "id"));
List<SportSection> sectionList = sportSectionMapper.selectList(sectionQueryWrapper);
QueryWrapper<SportSectionSkin> sectionSkinQueryWrapper = new QueryWrapper<>();
sectionSkinQueryWrapper.eq("type", sectionType);
sectionSkinQueryWrapper.eq("sex", loginUser.getSex());
sectionSkinQueryWrapper.orderBy(true, true, Arrays.asList("show_order", "id"));
List<SportSectionSkin> sectionSkinList = sportSectionSkinMapper.selectList(sectionSkinQueryWrapper);
Map<Long, String> skinKeyMap = new HashMap<>();
Map<Long, List<RespSportSectionSkin>> sectionSkinMap = new HashMap<>();
for (SportSectionSkin item : sectionSkinList) {
skinKeyMap.put(item.getId(), item.getSkinKey());
if (!sectionSkinMap.containsKey(item.getSection())) {
sectionSkinMap.put(item.getSection(), new ArrayList<>());
}
sectionSkinMap.get(item.getSection()).add(new RespSportSectionSkin(item));
}
Map<Long, String> userSkinMap = new HashMap<>();
QueryWrapper<SportUserSectionSkin> userSkinQueryWrapper = new QueryWrapper();
userSkinQueryWrapper.eq("sport_user_id", loginUser.getId());
userSkinQueryWrapper.eq("type", sectionType);
List<SportUserSectionSkin> userSkinList = sportUserSectionSkinMapper.selectList(userSkinQueryWrapper);
for (SportUserSectionSkin item : userSkinList) {
if (skinKeyMap.containsKey(item.getSkin())) {
userSkinMap.put(item.getSection(), skinKeyMap.get(item.getSkin()));
}
}
for (SportSection item : sectionList) {
if (sectionSkinMap.containsKey(item.getId())) {
RespSportSection section = new RespSportSection(item);
section.setSkinList(sectionSkinMap.get(item.getId()));
if (userSkinMap.containsKey(item.getId())) {
section.setSkinKey(userSkinMap.get(item.getId()));
} else {
section.setSkinKey(section.getSkinList().get(0).getKey());
}
resultList.add(section);
}
}
return resultList;
}
/**
* 保存用户皮肤
*
* @param sectionType
* @param loginUser
* @param skinList
*/
@Transactional
public void saveUserSkin(Integer sectionType, SportUser loginUser, List<ReqSaveUserSkin> skinList) {
List<Long> delUserSectionList = new ArrayList<>(skinList.size());
List<SportUserSectionSkin> saveList = new ArrayList<>();
for (ReqSaveUserSkin item : skinList) {
delUserSectionList.add(item.getSection());
SportUserSectionSkin userSkin = new SportUserSectionSkin();
userSkin.setSportUserId(loginUser.getId());
userSkin.setSection(item.getSection());
userSkin.setSkin(item.getSkin());
userSkin.setType(sectionType);
saveList.add(userSkin);
}
QueryWrapper<SportUserSectionSkin> userSkinQueryWrapper = new QueryWrapper<>();
userSkinQueryWrapper.eq("sport_user_id", loginUser.getId());
userSkinQueryWrapper.in("section", delUserSectionList);
sportUserSectionSkinMapper.delete(userSkinQueryWrapper);
sportUserSectionSkinService.saveBatch(saveList);
}
@Transactional
public void saveUserSkin(SportUser loginUser, List<ReqSaveUserSkin> skinList) {
List<String> delUserSectionList = new ArrayList<>(skinList.size());
......
package com.antai.sport.http.server.mobile.api.business.sport.user.dto;
import com.antai.sport.http.server.repository.sport.entity.SportSection;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.List;
/**
* @Author liming
* @Date 2021/8/23 15:48
* @Email lmmax@126.com
* @Description:
*/
@Data
public class RespSportSection {
public RespSportSection(SportSection sportSection) {
this.id = sportSection.getId();
this.type = sportSection.getType();
this.name = sportSection.getName();
this.key = sportSection.getSectionKey();
}
@ApiModelProperty("部位id")
private Long id;
@ApiModelProperty("部位类型")
private Integer type;
@ApiModelProperty("部位名称")
private String name;
@ApiModelProperty("部位key")
private String key;
@ApiModelProperty("当前选中皮肤key")
private String skinKey;
@ApiModelProperty("皮肤列表")
List<RespSportSectionSkin> skinList;
}
package com.antai.sport.http.server.mobile.api.business.sport.user.dto;
import com.antai.sport.http.server.repository.sport.entity.SportSectionSkin;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
* @Author liming
* @Date 2021/8/23 15:48
* @Email lmmax@126.com
* @Description:
*/
@Data
public class RespSportSectionSkin {
public RespSportSectionSkin(SportSectionSkin sportSectionSkin) {
this.id = sportSectionSkin.getId();
this.name = sportSectionSkin.getName();
this.key = sportSectionSkin.getSkinKey();
}
@ApiModelProperty("皮肤id")
private Long id;
@ApiModelProperty("皮肤名称")
private String name;
@ApiModelProperty("皮肤key")
private String key;
}
......@@ -29,7 +29,7 @@ public class ReqTrainRecord {
private BigDecimal avgFtp;
@ApiModelProperty("平均速度")
private BigDecimal avgSpeed;
@ApiModelProperty("配速 运动类型跑步的时候赋值")
@ApiModelProperty("配速 运动类型跑步的时候赋值")
private BigDecimal pace;
}
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.antai.sport.http.server.mobile.api.business.match.bicycle.mapper.MatchBicycleBusinessMapper">
<select id="getMatchBicycleList"
resultType="com.antai.sport.http.server.mobile.api.business.match.bicycle.dto.RespMatchBicycleList">
select *
from match_bicycle
where deleted = 0
order by end_time desc
</select>
<select id="checkMatchRepeat"
resultType="java.lang.Boolean">
select count(1)>0
from match_bicycle
where deleted = 0 and (
(entry_time &gt;= #{entryTime} and entry_time &lt;= #{endTime}) or
(end_time &gt;= #{entryTime} and end_time &lt;= #{endTime}) or
(entry_time &lt;= #{entryTime} and end_time &gt;= #{endTime})
)
</select>
<select id="getMatchBicyclePlayerRecord"
resultType="com.antai.sport.http.server.mobile.api.business.match.bicycle.dto.DtoMatchBicycleResult">
select t1.*,t2.nickname
from match_bicycle_player t1
left join sport_user t2 on t1.user_id = t2.id
where t1.deleted = 0 and t1.match_id = #{matchId}
order by match_rank
</select>
</mapper>
package com.antai.sport.http.server.repository.match.entity;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import java.time.LocalDateTime;
import java.io.Serializable;
import lombok.Data;
import lombok.EqualsAndHashCode;
/**
* <p>
* 比赛信息表
* </p>
*
* @author liming
* @since 2021-09-11
*/
@Data
@EqualsAndHashCode(callSuper = false)
public class MatchBicycle implements Serializable {
private static final long serialVersionUID = 1L;
/**
* 主键
*/
@TableId(value = "id", type = IdType.AUTO)
private Long id;
/**
* 比赛名称
*/
private String name;
/**
* 允许进入时间
*/
private LocalDateTime entryTime;
/**
* 比赛开始时间
*/
private LocalDateTime startTime;
/**
* 比赛结束时间
*/
private LocalDateTime endTime;
/**
* 总长度
*/
private Integer distance;
/**
* 显示顺序
*/
private Integer showOrder;
/**
* 版本号
*/
private Long version;
/**
* 删除标记
*/
private Integer deleted;
/**
* 创建部门id
*/
private Long ctDeptId;
/**
* 创建人id
*/
private Long ctUserId;
/**
* 创建时间
*/
private LocalDateTime ctDate;
/**
* 修改人id
*/
private Long lmUserId;
/**
* 修改时间
*/
private LocalDateTime lmDate;
}
package com.antai.sport.http.server.repository.match.entity;
import java.math.BigDecimal;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import java.time.LocalDateTime;
import java.io.Serializable;
import lombok.Data;
import lombok.EqualsAndHashCode;
/**
* <p>
* 比赛玩家
* </p>
*
* @author liming
* @since 2021-09-11
*/
@Data
@EqualsAndHashCode(callSuper = false)
public class MatchBicyclePlayer implements Serializable {
private static final long serialVersionUID = 1L;
/**
* 主键
*/
@TableId(value = "id", type = IdType.AUTO)
private Long id;
/**
* 比赛id
*/
private Long matchId;
/**
* 比赛用户id
*/
private Long userId;
/**
* 比赛进入时间
*/
private LocalDateTime entryTime;
/**
* 比赛完成时间
*/
private LocalDateTime finishTime;
/**
* 比赛用时(秒)
*/
private Integer duration;
/**
* 比赛名次
*/
private Integer matchRank;
/**
* 爬坡距离
*/
private BigDecimal climbDistance;
/**
* 骑行总长度
*/
private BigDecimal distance;
/**
* 平均功率
*/
private BigDecimal avgFtp;
/**
* 平均速度
*/
private BigDecimal avgSpeed;
/**
* 比赛状态1.完成比赛 2.未完成比赛
*/
private Integer status;
/**
* 版本号
*/
private Long version;
/**
* 删除标记
*/
private Integer deleted;
/**
* 创建部门id
*/
private Long ctDeptId;
/**
* 创建人id
*/
private Long ctUserId;
/**
* 创建时间
*/
private LocalDateTime ctDate;
/**
* 修改人id
*/
private Long lmUserId;
/**
* 修改时间
*/
private LocalDateTime lmDate;
}
package com.antai.sport.http.server.repository.match.mapper;
import com.antai.sport.http.server.repository.match.entity.MatchBicycle;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
/**
* <p>
* 比赛信息表 Mapper 接口
* </p>
*
* @author liming
* @since 2021-09-11
*/
public interface MatchBicycleMapper extends BaseMapper<MatchBicycle> {
}
package com.antai.sport.http.server.repository.match.mapper;
import com.antai.sport.http.server.repository.match.entity.MatchBicyclePlayer;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
/**
* <p>
* 比赛玩家 Mapper 接口
* </p>
*
* @author liming
* @since 2021-09-11
*/
public interface MatchBicyclePlayerMapper extends BaseMapper<MatchBicyclePlayer> {
}
package com.antai.sport.http.server.repository.sport.entity;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import java.time.LocalDateTime;
import java.io.Serializable;
import com.baomidou.mybatisplus.annotation.TableLogic;
import lombok.Data;
import lombok.EqualsAndHashCode;
/**
* <p>
* 用户默认选装
* </p>
*
* @author liming
* @since 2021-08-23
*/
@Data
@EqualsAndHashCode(callSuper = false)
public class SportDefaultSectionSkin implements Serializable {
private static final long serialVersionUID = 1L;
/**
* 主键
*/
@TableId(value = "id", type = IdType.AUTO)
private Long id;
/**
* 性别
*/
private Integer sex;
/**
* 类型 1.身体部位 2.设备
*/
private Integer type;
/**
* 部位
*/
private Long section;
/**
* 皮肤
*/
private Long skin;
/**
* 备注
*/
private String remark;
/**
* 排序号
*/
private Integer showOrder;
/**
* 删除标记
*/
@TableLogic
private Integer deleted;
/**
* 数据版本号
*/
private Integer version;
/**
* 创建人
*/
private Long ctUserId;
/**
* 创建时间
*/
private LocalDateTime ctDate;
/**
* 最后修改人
*/
private Long lmUserId;
/**
* 最后修改时间
*/
private LocalDateTime lmDate;
}
package com.antai.sport.http.server.repository.sport.entity;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableLogic;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.io.Serializable;
import java.time.LocalDateTime;
/**
* <p>
* 用户选装部位
* </p>
*
* @author liming
* @since 2021-08-23
*/
@Data
@EqualsAndHashCode(callSuper = false)
public class SportSection implements Serializable {
private static final long serialVersionUID = 1L;
/**
* 主键
*/
@TableId(value = "id", type = IdType.AUTO)
private Long id;
/**
* 类型 1.身体部位 2.设备
*/
private Integer type;
/**
* 名称
*/
private String name;
/**
* 部位Key
*/
private String sectionKey;
/**
* 备注
*/
private String remark;
/**
* 排序号
*/
private Integer showOrder;
/**
* 删除标记
*/
@TableLogic
private Integer deleted;
/**
* 数据版本号
*/
private Integer version;
/**
* 创建人
*/
private Long ctUserId;
/**
* 创建时间
*/
private LocalDateTime ctDate;
/**
* 最后修改人
*/
private Long lmUserId;
/**
* 最后修改时间
*/
private LocalDateTime lmDate;
}
package com.antai.sport.http.server.repository.sport.entity;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableLogic;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.io.Serializable;
import java.time.LocalDateTime;
/**
* <p>
* 用户选装部位皮肤
* </p>
*
* @author liming
* @since 2021-08-23
*/
@Data
@EqualsAndHashCode(callSuper = false)
public class SportSectionSkin implements Serializable {
private static final long serialVersionUID = 1L;
/**
* 主键
*/
@TableId(value = "id", type = IdType.AUTO)
private Long id;
/**
* 性别
*/
private Integer sex;
/**
* 类型 1.身体部位 2.设备
*/
private Integer type;
/**
* 部位
*/
private Long section;
/**
* 名称
*/
private String name;
/**
* 游戏中的标识
*/
private String skinKey;
/**
* 备注
*/
private String remark;
/**
* 排序号
*/
private Integer showOrder;
/**
* 删除标记
*/
@TableLogic
private Integer deleted;
/**
* 数据版本号
*/
private Integer version;
/**
* 创建人
*/
private Long ctUserId;
/**
* 创建时间
*/
private LocalDateTime ctDate;
/**
* 最后修改人
*/
private Long lmUserId;
/**
* 最后修改时间
*/
private LocalDateTime lmDate;
}
package com.antai.sport.http.server.repository.sport.mapper;
import com.antai.sport.http.server.repository.sport.entity.SportDefaultSectionSkin;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
/**
* <p>
* 用户默认选装 Mapper 接口
* </p>
*
* @author liming
* @since 2021-08-23
*/
public interface SportDefaultSectionSkinMapper extends BaseMapper<SportDefaultSectionSkin> {
}
package com.antai.sport.http.server.repository.sport.mapper;
import com.antai.sport.http.server.repository.sport.entity.SportSection;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
/**
* <p>
* 用户选装部位 Mapper 接口
* </p>
*
* @author liming
* @since 2021-08-23
*/
public interface SportSectionMapper extends BaseMapper<SportSection> {
}
package com.antai.sport.http.server.repository.sport.mapper;
import com.antai.sport.http.server.repository.sport.entity.SportSectionSkin;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
/**
* <p>
* 用户选装部位皮肤 Mapper 接口
* </p>
*
* @author liming
* @since 2021-08-23
*/
public interface SportSectionSkinMapper extends BaseMapper<SportSectionSkin> {
}
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.antai.sport.http.server.repository.match.mapper.MatchBicycleMapper">
</mapper>
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.antai.sport.http.server.repository.match.mapper.MatchBicyclePlayerMapper">
</mapper>
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.antai.sport.http.server.repository.sport.mapper.SportDefaultSectionSkinMapper">
</mapper>
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.antai.sport.http.server.repository.sport.mapper.SportSectionMapper">
</mapper>
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.antai.sport.http.server.repository.sport.mapper.SportSectionSkinMapper">
</mapper>
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