Commit 86a23ac7 authored by liming's avatar liming

团练接口

parent d7c99862
package com.antai.sport.http.server.repository.teamtraining.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 2022-06-07
*/
@Data
@EqualsAndHashCode(callSuper = false)
public class TeamTraining implements Serializable {
private static final long serialVersionUID = 1L;
/**
* 主键
*/
@TableId(value = "id", type = IdType.AUTO)
private Long id;
/**
* 比赛名称
*/
private String name;
/**
* 地图key
*/
private String map;
/**
* 赛道key
*/
private String path;
/**
* 团长id
*/
private Long leaderId;
/**
* 训练时长(分钟)
*/
private Integer trainingMinute;
/**
* 允许进入时间
*/
private LocalDateTime entryTime;
/**
* 比赛开始时间
*/
private LocalDateTime startTime;
/**
* 比赛结束时间
*/
private LocalDateTime endTime;
/**
* 总长度
*/
private BigDecimal distance;
/**
* 爬坡高度
*/
private BigDecimal climbDistance;
/**
* 描述
*/
private String description;
/**
* 状态 10:未发布 20:已发布
*/
private Integer status;
/**
* 显示顺序
*/
private Integer showOrder;
/**
* 版本号
*/
private Long version;
/**
* 删除标记
*/
private Integer deleted;
/**
* 创建人
*/
private Long createBy;
/**
* 创建时间
*/
private LocalDateTime createTime;
/**
* 修改人
*/
private Long updateBy;
/**
* 修改时间
*/
private LocalDateTime updateTime;
}
package com.antai.sport.http.server.repository.teamtraining.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 2022-06-07
*/
@Data
@EqualsAndHashCode(callSuper = false)
public class TeamTrainingBanner implements Serializable {
private static final long serialVersionUID = 1L;
/**
* 主键
*/
@TableId(value = "id", type = IdType.AUTO)
private Long id;
/**
* 图片地址
*/
private String imgUrl;
/**
* 显示顺序
*/
private Integer showOrder;
/**
* 删除状态
*/
private Integer deleted;
/**
* 创建人
*/
private Long createBy;
/**
* 创建时间
*/
private LocalDateTime createTime;
/**
* 修改人
*/
private Long updateBy;
/**
* 修改时间
*/
private LocalDateTime updateTime;
}
package com.antai.sport.http.server.repository.teamtraining.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 2022-06-07
*/
@Data
@EqualsAndHashCode(callSuper = false)
public class TeamTrainingLeader implements Serializable {
private static final long serialVersionUID = 1L;
/**
* 主键
*/
@TableId(value = "id", type = IdType.AUTO)
private Long id;
/**
* 用户名
*/
private String username;
/**
* 密码
*/
private String password;
/**
* 联系电话
*/
private String phone;
/**
* 真实姓名
*/
private String realName;
/**
* 头像地址
*/
private String avatar;
/**
* 备注
*/
private String remark;
/**
* 排序号
*/
private Integer showOrder;
/**
* 数据版本号
*/
private Integer version;
/**
* 删除标记
*/
private Integer deleted;
/**
* 创建人
*/
private Long createBy;
/**
* 创建时间
*/
private LocalDateTime ctDate;
/**
* 修改人
*/
private Long updateBy;
/**
* 修改时间
*/
private LocalDateTime updateDate;
}
package com.antai.sport.http.server.repository.teamtraining.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 2022-06-07
*/
@Data
@EqualsAndHashCode(callSuper = false)
public class TeamTrainingPlayerRecord implements Serializable {
private static final long serialVersionUID = 1L;
/**
* 主键
*/
@TableId(value = "id", type = IdType.AUTO)
private Long id;
/**
* 比赛id
*/
private Long teamTrainingId;
/**
* 玩家id
*/
private Long playerId;
/**
* 比赛进入时间
*/
private LocalDateTime entryTime;
/**
* 比赛完成时间
*/
private LocalDateTime finishTime;
/**
* 比赛用时(秒)
*/
private Integer duration;
/**
* 比赛名次
*/
private Integer matchRank;
/**
* 骑行总长度
*/
private BigDecimal distance;
/**
* 爬坡距离
*/
private BigDecimal climbDistance;
/**
* 平均功率
*/
private BigDecimal avgFtp;
/**
* 平均速度
*/
private BigDecimal avgSpeed;
/**
* 卡路里
*/
private Integer calorie;
/**
* 体重
*/
private BigDecimal weight;
/**
* 1分钟平均最佳FTP
*/
private BigDecimal oneMinutesFtp;
/**
* 5分钟平均最佳FTP
*/
private BigDecimal fiveMinutesFtp;
/**
* 20分钟平均最佳FTP
*/
private BigDecimal twentyMinutesFtp;
/**
* 1分钟平均最佳功体比
*/
private BigDecimal oneMinutesWkg;
/**
* 5分钟平均最佳功体比
*/
private BigDecimal fiveMinutesWkg;
/**
* 20分钟平均最佳功体比
*/
private BigDecimal twentyMinutesWkg;
/**
* 得分
*/
private BigDecimal score;
/**
* 获攒数量
*/
private Integer praiseNum;
/**
* 比赛状态10:未完成比赛 20:完成比赛
*/
private Integer status;
/**
* 创建时间
*/
private LocalDateTime createTime;
/**
* 修改时间
*/
private LocalDateTime updateTime;
}
package com.antai.sport.http.server.repository.teamtraining.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 2022-06-07
*/
@Data
@EqualsAndHashCode(callSuper = false)
public class TeamTrainingPlayerRegistLog implements Serializable {
private static final long serialVersionUID = 1L;
/**
* 主键
*/
@TableId(value = "id", type = IdType.AUTO)
private Long id;
/**
* 比赛id
*/
private Long teamTrainingId;
/**
* 玩家id
*/
private Long playerId;
/**
* 创建时间
*/
private LocalDateTime createTime;
}
package com.antai.sport.http.server.repository.teamtraining.mapper;
import com.antai.sport.http.server.repository.teamtraining.entity.TeamTrainingBanner;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
/**
* <p>
* Mapper 接口
* </p>
*
* @author liming
* @since 2022-06-07
*/
public interface TeamTrainingBannerMapper extends BaseMapper<TeamTrainingBanner> {
}
package com.antai.sport.http.server.repository.teamtraining.mapper;
import com.antai.sport.http.server.repository.teamtraining.entity.TeamTrainingLeader;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
/**
* <p>
* Mapper 接口
* </p>
*
* @author liming
* @since 2022-06-07
*/
public interface TeamTrainingLeaderMapper extends BaseMapper<TeamTrainingLeader> {
}
package com.antai.sport.http.server.repository.teamtraining.mapper;
import com.antai.sport.http.server.repository.teamtraining.entity.TeamTraining;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
/**
* <p>
* Mapper 接口
* </p>
*
* @author liming
* @since 2022-06-07
*/
public interface TeamTrainingMapper extends BaseMapper<TeamTraining> {
}
package com.antai.sport.http.server.repository.teamtraining.mapper;
import com.antai.sport.http.server.repository.teamtraining.entity.TeamTrainingPlayerRecord;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
/**
* <p>
* Mapper 接口
* </p>
*
* @author liming
* @since 2022-06-07
*/
public interface TeamTrainingPlayerRecordMapper extends BaseMapper<TeamTrainingPlayerRecord> {
}
package com.antai.sport.http.server.repository.teamtraining.mapper;
import com.antai.sport.http.server.repository.teamtraining.entity.TeamTrainingPlayerRegistLog;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
/**
* <p>
* Mapper 接口
* </p>
*
* @author liming
* @since 2022-06-07
*/
public interface TeamTrainingPlayerRegistLogMapper extends BaseMapper<TeamTrainingPlayerRegistLog> {
}
<?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.teamtraining.mapper.TeamTrainingBannerMapper">
</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.teamtraining.mapper.TeamTrainingLeaderMapper">
</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.teamtraining.mapper.TeamTrainingMapper">
</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.teamtraining.mapper.TeamTrainingPlayerRecordMapper">
</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.teamtraining.mapper.TeamTrainingPlayerRegistLogMapper">
</mapper>
package com.antai.sport.http.server.server.api.business.teamtraining.converter;
import com.antai.sport.http.server.repository.teamtraining.entity.TeamTrainingBanner;
import com.antai.sport.http.server.server.api.business.teamtraining.dto.TeamTrainingBannerResponseDTO;
import org.mapstruct.Mapper;
import java.util.List;
@Mapper(componentModel = "spring")
public interface TeamTrainingConverter {
List<TeamTrainingBannerResponseDTO> toTeamTrainingBannerResponseDTO(List<TeamTrainingBanner> source);
}
package com.antai.sport.http.server.server.api.business.teamtraining.dto;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@Data
@ApiModel("团练Banner")
public class TeamTrainingBannerResponseDTO {
@ApiModelProperty("banner图片路径")
private String imgUrl;
}
package com.antai.sport.http.server.server.api.business.teamtraining.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;
@Data
@ApiModel("团练列表对象")
public class TeamTrainingForListResponseDTO {
@ApiModelProperty("团练id")
public Long id;
@ApiModelProperty("团长id")
public Long leaderId;
@ApiModelProperty("团长姓名")
public String leaderName;
@ApiModelProperty("头像")
private String avatar;
@ApiModelProperty("训练时长(分钟)")
public Integer trainingMinute;
@ApiModelProperty("团练名称")
public String name;
@ApiModelProperty("列表展示时间 yyyy-MM-dd HH:mm")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm", timezone = "GMT+8")
public LocalDateTime showTime;
@ApiModelProperty("地图")
private String map;
@ApiModelProperty("赛道")
private String path;
@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("长度")
public BigDecimal distance;
@ApiModelProperty("爬坡高度")
public BigDecimal climbDistance;
@ApiModelProperty("报名人数")
public BigDecimal registerNum;
@ApiModelProperty("是否已报名,只有当按用户查询时有效")
public Boolean registered;
}
package com.antai.sport.http.server.server.api.business.teamtraining.dto;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@Data
@ApiModel("团练报名对象")
public class TeamTrainingRegistRequestDTO {
@ApiModelProperty("团练id")
private Long teamTrainingId;
@ApiModelProperty("玩家id")
private Long playerId;
}
package com.antai.sport.http.server.server.api.business.teamtraining.mapper;
import com.antai.sport.http.server.server.api.business.teamtraining.dto.TeamTrainingForListResponseDTO;
import org.apache.ibatis.annotations.Param;
import java.time.LocalDateTime;
import java.util.List;
public interface TeamTrainingBusinessMapper {
List<TeamTrainingForListResponseDTO> getUnFinishedTeamTrainingForUser(@Param("userId") Long userId, @Param("now") LocalDateTime now);
List<TeamTrainingForListResponseDTO> getUnFinishedTeamTrainingForServer(@Param("now") LocalDateTime now);
}
<?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.server.api.business.teamtraining.mapper.TeamTrainingBusinessMapper">
<select id="getUnFinishedTeamTrainingForUser"
resultType="com.antai.sport.http.server.server.api.business.teamtraining.dto.TeamTrainingForListResponseDTO">
select *
from (
select ifnull(t2.base_order, 0) registered,
t1.start_time as show_time,
t4.real_name as leader_name,
t4.avatar,
t1.*
from team_training t1
left join (
select j1.team_training_id, 1 base_order
from team_training_player_regist_log j1
where j1.player_id = #{userId}
) t2 on t1.id = t2.team_training_id
left join (
select j1.team_training_id, count(1) as register_num
from team_training_player_regist_log j1
group by j1.team_training_id
) t3 on t1.id = t2.team_training_id
left join team_training_leader t4 on t1.leader_id = t4.id
where t1.end_time &gt; #{now}
and t1.deleted = 0
and t1.status = 20
) t1
order by t1.registered desc, t1.show_order, t1.start_time
</select>
<select id="getUnFinishedTeamTrainingForServer"
resultType="com.antai.sport.http.server.server.api.business.teamtraining.dto.TeamTrainingForListResponseDTO">
select t1.start_time as show_time
, t1.*
from team_training t1
where t1.end_time &gt; #{now}
and t1.deleted = 0
and t1.status = 20
order by t1.show_order, t1.start_time
</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