健步走提交

This commit is contained in:
2026-08-29 16:49:19 +08:00
parent d8f2784d79
commit fd07d1be14
4 changed files with 14 additions and 9 deletions
@@ -69,7 +69,7 @@ public class FitnessWalkStepRankingController {
* @param unitId 单位ID,空字符串表示全部单位
* @param mode 排行范围:today、oneMonth、halfYear、oneYear、activityall 兼容原活动期间参数
* @param sex 性别:空字符串表示全部,男或女表示指定性别
* @param ageRange 年龄段:空字符串表示全体,under40、41to50、51to55 表示指定年龄段
* @param ageRange 年龄段:空字符串表示全体,under40、41to50、51to55、over55 表示指定年龄段over55 表示年龄大于55岁
* @return Resultdata.list 为排行榜数据,data.totalCount 为符合条件的总人数
*/
@At
@@ -84,7 +84,7 @@ public class FitnessWalkStepRankingController {
if (Strings.isNotBlank(sex) && !List.of("", "").contains(sex)) {
return Result.error("性别筛选参数不正确");
}
if (Strings.isNotBlank(ageRange) && !List.of("under40", "41to50", "51to55").contains(ageRange)) {
if (Strings.isNotBlank(ageRange) && !List.of("under40", "41to50", "51to55", "over55").contains(ageRange)) {
return Result.error("年龄段筛选参数不正确");
}
String actualMode = Strings.isBlank(mode) ? "today" : mode;
@@ -110,7 +110,7 @@ public class FitnessWalkStepRankingController {
* @param userId 当前登录用户ID,用于返回“我的指标”和“我的名次”
* @param rankingType 排行指标:totalSteps 累计步数、completionRate 目标完成率、complianceDays 达标天数
* @param sex 性别筛选:空字符串表示全部,男或女表示指定性别
* @param ageRange 年龄段:空字符串表示全体,under40、41to50、51to55 表示指定年龄段
* @param ageRange 年龄段:空字符串表示全体,under40、41to50、51to55、over55 表示指定年龄段over55 表示年龄大于55岁
* @param timeRange 时间范围:today 当日、oneMonth 近1个月、halfYear 近半年、oneYear 近1年、activity 活动开始至今
* @param pageNumber 页码,从1开始
* @param pageSize 每页条数,最大50条
@@ -138,7 +138,7 @@ public class FitnessWalkStepRankingController {
if (Strings.isNotBlank(sex) && !List.of("", "").contains(sex)) {
return Result.error("性别筛选参数不正确");
}
if (Strings.isNotBlank(ageRange) && !List.of("under40", "41to50", "51to55").contains(ageRange)) {
if (Strings.isNotBlank(ageRange) && !List.of("under40", "41to50", "51to55", "over55").contains(ageRange)) {
return Result.error("年龄段筛选参数不正确");
}
String actualTimeRange = Strings.isBlank(timeRange) ? "today" : timeRange;
@@ -230,7 +230,7 @@ public class FitnessWalkStepRankingController {
* @param unitId 单位ID,空字符串表示全部
* @param mode 排行范围:today、oneMonth、halfYear、oneYear、activityall 兼容原活动期间参数
* @param sex 性别:空字符串表示全部,男或女表示指定性别
* @param ageRange 年龄段:空字符串表示全部,under40、41to50、51to55表示指定年龄段
* @param ageRange 年龄段:空字符串表示全部,under40、41to50、51to55、over55表示指定年龄段;over55 表示年龄大于55岁
* @param response HTTP响应,返回XSSF格式的Excel文件流
*/
@At
@@ -249,7 +249,7 @@ public class FitnessWalkStepRankingController {
if (Strings.isNotBlank(sex) && !List.of("", "").contains(sex)) {
throw new IllegalArgumentException("性别筛选参数不正确");
}
if (Strings.isNotBlank(ageRange) && !List.of("under40", "41to50", "51to55").contains(ageRange)) {
if (Strings.isNotBlank(ageRange) && !List.of("under40", "41to50", "51to55", "over55").contains(ageRange)) {
throw new IllegalArgumentException("年龄段筛选参数不正确");
}
String actualMode = Strings.isBlank(mode) ? "today" : mode;
@@ -92,7 +92,7 @@ public interface FitnessWalkCommonService extends BaseService<FitnessWalkAwardUs
* @param unitId 单位ID,空字符串表示全部
* @param mode 排行范围:today、oneMonth、halfYear、oneYear、activityall兼容活动期间
* @param sex 性别:空字符串表示全部,男或女表示指定性别
* @param ageRange 年龄段:空字符串表示全部,under40、41to50、51to55表示指定年龄段
* @param ageRange 年龄段:空字符串表示全部,under40、41to50、51to55、over55表示指定年龄段;over55 表示年龄大于55岁
* @return 排行榜导出数据,包含页面表格展示的用户资料、步数和达标天数
*/
List<NutMap> getStepRankingList(String searchName,
@@ -481,7 +481,7 @@ public class FitnessWalkCommonServiceImpl extends BaseServiceImpl<FitnessWalkAwa
* @param userId 当前登录用户ID,用于定位当前用户行和名次
* @param rankingType totalSteps、completionRate 或 complianceDays
* @param sex 空字符串、男或女
* @param ageRange 空字符串、under40、41to50 或 51to55
* @param ageRange 空字符串、under40、41to50、51to55 或 over55over55 表示年龄大于55岁
* @param timeRange today、oneMonth、halfYear、oneYear 或 activity
* @param pageNumber 页码,从1开始
* @param pageSize 每页条数
@@ -683,6 +683,8 @@ public class FitnessWalkCommonServiceImpl extends BaseServiceImpl<FitnessWalkAwa
ageCondition = "AND u.birthday IS NOT NULL AND TIMESTAMPDIFF(YEAR, u.birthday, CURDATE()) BETWEEN 41 AND 50";
} else if ("51to55".equals(ageRange)) {
ageCondition = "AND u.birthday IS NOT NULL AND TIMESTAMPDIFF(YEAR, u.birthday, CURDATE()) BETWEEN 51 AND 55";
} else if ("over55".equals(ageRange)) {
ageCondition = "AND u.birthday IS NOT NULL AND TIMESTAMPDIFF(YEAR, u.birthday, CURDATE()) > 55";
}
Sql sql = Sqls.create("""
@@ -919,7 +921,7 @@ public class FitnessWalkCommonServiceImpl extends BaseServiceImpl<FitnessWalkAwa
/**
* 生成PC端排行榜查询。性别使用用户资料中的 sex 字段,年龄根据 birthday 实时计算;
* ageRange 为空时不限制年龄,under40、41to50、51to55 分别对应页面的个年龄段。
* ageRange 为空时不限制年龄,under40、41to50、51to55、over55 分别对应页面的个年龄段over55 表示年龄大于55岁
* mode 控制今日、近1个月、近半年、近1年或活动开始至今,并始终限制在活动有效期内。
*/
private Sql rankingListSql(String searchName,
@@ -1023,6 +1025,8 @@ public class FitnessWalkCommonServiceImpl extends BaseServiceImpl<FitnessWalkAwa
} else if ("51to55".equals(ageRange)) {
cnd.and(ageExpression, ">=", 51);
cnd.and(ageExpression, "<=", 55);
} else if ("over55".equals(ageRange)) {
cnd.and(ageExpression, ">", 55);
}
if (Strings.isNotBlank(searchName) && Strings.isNotBlank(searchKeyword)) {
@@ -53,6 +53,7 @@ layout("/layouts/platform.html"){
<el-option label="40岁及以下" value="under40"></el-option>
<el-option label="41-50岁" value="41to50"></el-option>
<el-option label="51-55岁" value="51to55"></el-option>
<el-option label="55岁以上" value="over55"></el-option>
</el-select>
</div>
</div>