Commit b2cdc19b authored by liming's avatar liming

排行列表页

parent 25186e73
package com.antai.sport.http.server.constants;
/**
* @Author liming
* @Date 2021/8/21 21:14
* @Email lmmax@126.com
* @Description:
*/
public class RankType {
//能力榜
public final static Integer SCORE = 1;
//热度榜
public final static Integer CALORIE = 2;
}
......@@ -50,7 +50,7 @@ public class SimpleMatchController {
}
@ApiOperation("创建日常赛")
@PostMapping("")
@PostMapping
public ResponseEntity<Result> save(@RequestBody SimpleMatchVO simpleMatchVO) {
simpleMatchService.save(simpleMatchVO);
return success();
......
package com.antai.sport.http.server.server.api.business.traininglog.service;
import com.antai.sport.http.server.constants.DeleteStatus;
import com.antai.sport.http.server.constants.RankType;
import com.antai.sport.http.server.constants.SportType;
import com.antai.sport.http.server.repository.sport.entity.SportUser;
import com.antai.sport.http.server.repository.sport.entity.SportUserMonthRank;
......@@ -16,11 +17,15 @@ import com.antai.sport.http.server.server.api.business.traininglog.dto.SportUser
import com.antai.sport.http.server.server.api.business.traininglog.mapper.SportUserTrainingLogBusinessMapper;
import com.antai.sport.http.server.server.api.business.user.converter.SportUserConverter;
import com.antai.sport.http.server.server.api.business.user.dto.ReqSportUserTrainingLog;
import com.antai.sport.http.server.server.api.business.user.dto.SportUserMonthRankRequestDTO;
import com.antai.sport.http.server.server.api.business.user.dto.SportUserMonthRankResponseDTO;
import com.antai.sport.http.server.server.api.business.user.mapper.SportUserMonthRankBusinessMapper;
import com.antai.sport.http.server.server.api.common.dto.CyclingDataDTO;
import com.antai.sport.http.server.server.api.utils.ScoreUtils;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.metadata.OrderItem;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
......@@ -198,7 +203,7 @@ public class SportUserTrainingLogService {
result.setTwentyMinutesFtp(BigDecimal.ZERO);
} else {
result = sportUserConverter.toSportUserMonthRankResponseDTO(rank);
result.setRank(sportUserMonthRankBusinessMapper.getMyRank(type, rank.getScore(),rank.getTotalCalorie(),rank.getUpdateTime(), year, month));
result.setRank(sportUserMonthRankBusinessMapper.getMyRank(type, rank.getScore(), rank.getTotalCalorie(), rank.getUpdateTime(), year, month));
}
SportUser user = sportUserMapper.selectById(userId);
......@@ -208,4 +213,27 @@ public class SportUserTrainingLogService {
result.setWeight(user.getWeight());
return result;
}
/**
* 分页查询玩家排行
*
* @param param
* @return
*/
public List<SportUserMonthRankResponseDTO> geRank(SportUserMonthRankRequestDTO param) {
Page<SportUserMonthRankResponseDTO> pageParam = new Page<>(param.getPageNo(), param.getPageSize());
if (RankType.SCORE.equals(param.getType())) {
pageParam.addOrder(new OrderItem("score", false));
} else {
pageParam.addOrder(new OrderItem("total_calorie", false));
}
pageParam.addOrder(new OrderItem("update_time", true));
pageParam.addOrder(new OrderItem("t1.id", true));
IPage<SportUserMonthRankResponseDTO> result = sportUserMonthRankBusinessMapper.getRank(pageParam, param);
System.out.println(result.getPages());
return result.getRecords();
}
}
......@@ -5,6 +5,7 @@ import com.antai.sport.http.server.server.api.business.traininglog.dto.SportUser
import com.antai.sport.http.server.server.api.business.traininglog.service.SportUserTrainingLogService;
import com.antai.sport.http.server.server.api.business.user.dto.ReqSportUserTrainingLog;
import com.antai.sport.http.server.server.api.business.user.dto.RespUserHomeInfo;
import com.antai.sport.http.server.server.api.business.user.dto.SportUserMonthRankRequestDTO;
import com.antai.sport.http.server.server.api.business.user.dto.SportUserMonthRankResponseDTO;
import com.antai.sport.http.server.server.api.business.user.service.SportUserService;
import io.swagger.annotations.Api;
......@@ -39,8 +40,15 @@ public class SportUserController {
}
@ApiOperation("查询我的排名 type: 1能力榜 2活跃度榜")
@GetMapping("/{userId}/{type}/rank")
@GetMapping("/{userId}/rank")
public ResponseEntity<Result<SportUserMonthRankResponseDTO>> getMyRank(@PathVariable("userId") Long userId, @RequestParam Integer type, @RequestParam Integer year, @RequestParam Integer month) {
return success(sportUserTrainingLogService.getMyRank(userId, type, year, month));
}
@ApiOperation("查询玩家排名列表")
@PostMapping("/rank")
public ResponseEntity<Result<List<SportUserMonthRankResponseDTO>>> geRank(@RequestBody SportUserMonthRankRequestDTO param) {
return success(sportUserTrainingLogService.geRank(param));
}
}
......@@ -11,6 +11,8 @@ public class SportUserMonthRankRequestDTO {
private Integer pageNo;
@ApiModelProperty("分页大小")
private Integer pageSize;
@ApiModelProperty("类型 1能力榜 2活跃度榜")
private Integer type;
@ApiModelProperty("年份")
private Integer year;
@ApiModelProperty("月份")
......
package com.antai.sport.http.server.server.api.business.user.mapper;
import com.antai.sport.http.server.server.api.business.user.dto.SportUserMonthRankRequestDTO;
import com.antai.sport.http.server.server.api.business.user.dto.SportUserMonthRankResponseDTO;
import com.baomidou.mybatisplus.core.metadata.IPage;
import org.apache.ibatis.annotations.Param;
import java.math.BigDecimal;
import java.time.LocalDateTime;
public interface SportUserMonthRankBusinessMapper {
Integer getMyRank(@Param("type") Integer type, @Param("score") BigDecimal score, @Param("totalCalorie") Integer totalCalorie,
@Param("updateTime") LocalDateTime updateTime,
@Param("year") Integer year, @Param("month") Integer month);
Integer getMyRank(@Param("type") Integer type, @Param("score") BigDecimal score, @Param("totalCalorie") Integer totalCalorie, @Param("updateTime") LocalDateTime updateTime, @Param("year") Integer year, @Param("month") Integer month);
IPage<SportUserMonthRankResponseDTO> getRank(IPage<SportUserMonthRankResponseDTO> page, @Param("param") SportUserMonthRankRequestDTO param);
}
package com.antai.sport.http.server.server.api.config;
import com.baomidou.mybatisplus.annotation.DbType;
import com.baomidou.mybatisplus.autoconfigure.ConfigurationCustomizer;
import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor;
import com.baomidou.mybatisplus.extension.plugins.inner.OptimisticLockerInnerInterceptor;
import com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.transaction.annotation.EnableTransactionManagement;
@Configuration
@EnableTransactionManagement
public class MybatisPlusConfig {
@Bean
public MybatisPlusInterceptor mybatisPlusInterceptor() {
MybatisPlusInterceptor mybatisPlusInterceptor = new MybatisPlusInterceptor();
mybatisPlusInterceptor.addInnerInterceptor(new OptimisticLockerInnerInterceptor());
PaginationInnerInterceptor innerInterceptor = new PaginationInnerInterceptor();
innerInterceptor.setDbType(DbType.MYSQL);
innerInterceptor.setOverflow(false);
mybatisPlusInterceptor.addInnerInterceptor(innerInterceptor);
return mybatisPlusInterceptor;
}
@Bean
public ConfigurationCustomizer configurationCustomizer() {
return mybatisConfiguration -> mybatisConfiguration.setUseGeneratedShortKey(false);
}
}
......@@ -43,6 +43,8 @@ swagger:
service-website: https://www.antaikeji.top/
mybatis-plus:
configuration:
log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
global-config:
db-config:
logic-delete-value: 1
......
......@@ -13,5 +13,14 @@
and (total_calorie &gt; #{totalCalorie} or (total_calorie = #{totalCalorie} and update_time &lt; #{updateTime} ))
</if>
</select>
<select id="getRank" resultType="com.antai.sport.http.server.server.api.business.user.dto.SportUserMonthRankResponseDTO">
select t1.player_id,t2.nickname,t2.avatar,t2.weight,t1.total_calorie,t1.one_minutes_ftp,
t1.five_minutes_ftp,t1.twenty_minutes_ftp,t1.score,t1.update_time
from sport_user_month_rank t1
left join sport_user t2 on t1.player_id = t2.id
where year = #{param.year}
and month = #{param.month}
</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