From 9cf6ec2b5e9e890c86d722fb4ce2a3e283c42d45 Mon Sep 17 00:00:00 2001 From: "@jyuhsin" <729757837@qq.com> Date: Sat, 23 Nov 2024 11:40:20 +0800 Subject: [PATCH] commit --- .../mobile/mine/MobileMineController.java | 88 ++++++++ .../assets/mobile/img/mine/user_info_back.png | Bin 0 -> 13676 bytes .../resources/views/mobile/mine/index.html | 202 ++++++++++++++++++ 3 files changed, 290 insertions(+) create mode 100644 src/main/java/io/v/nutz/mobile/mine/MobileMineController.java create mode 100644 src/main/resources/static/assets/mobile/img/mine/user_info_back.png create mode 100644 src/main/resources/views/mobile/mine/index.html diff --git a/src/main/java/io/v/nutz/mobile/mine/MobileMineController.java b/src/main/java/io/v/nutz/mobile/mine/MobileMineController.java new file mode 100644 index 0000000..1496a19 --- /dev/null +++ b/src/main/java/io/v/nutz/mobile/mine/MobileMineController.java @@ -0,0 +1,88 @@ +package io.v.nutz.mobile.mine; + +import cn.hutool.core.date.DateUtil; +import cn.hutool.core.util.StrUtil; +import io.v.nutz.annontation.ViReturn; +import io.v.nutz.base.service.BaseService; +import io.v.nutz.trainEducation.models.TrainEduVideoWatchRecord; +import io.v.nutz.trainSignUp.models.TrainSignUpUser; +import io.v.nutz.web.commons.utils.ShiroUtil; +import org.nutz.dao.Cnd; +import org.nutz.dao.Dao; +import org.nutz.ioc.loader.annotation.Inject; +import org.nutz.ioc.loader.annotation.IocBean; +import org.nutz.lang.util.NutMap; +import org.nutz.mvc.annotation.At; +import org.nutz.mvc.annotation.Ok; + +import java.util.*; + +@IocBean +@At("/mobile/mine") +@Ok("json:full") +public class MobileMineController { + + @Inject + private BaseService baseService; + + @Inject + private Dao dao; + + @At("") + @Ok("beetl:/mobile/mine/index.html") + public void index() {} + + @At + @ViReturn + public Object getTrainActivity(Integer year) { + + NutMap map = new NutMap(); + //查询当前登录用户报名的所有活动 + List signUpUsers = dao.query(TrainSignUpUser.class, Cnd.where("userId", "=", ShiroUtil.getUserId()) + .groupBy("activityId")); + //根据年份获取 + if(year == null) { + map.put("count", signUpUsers.size()); + year = DateUtil.thisYear(); + } else { + Integer finalYear = year; + long count = signUpUsers.stream().filter(o -> Objects.equals(DateUtil.year(o.getSignUpTime()), finalYear)).count(); + map.put("count", count); + } + List> result = new ArrayList<>(); + int brearYear = year - 5; + for (int i = year; i > brearYear; i--) { + Integer finalYear1 = i; + long count = signUpUsers.stream().filter(o -> Objects.equals(DateUtil.year(o.getSignUpTime()), finalYear1)).count(); + result.add(Map.of("label", i, "value", count)); + } + map.put("result", result); + return map; + } + + @At + @ViReturn + public Object getVideo(Integer year) { + NutMap map = new NutMap(); + List videoWatchRecords = dao.query(TrainEduVideoWatchRecord.class, Cnd.where("userId", "=", ShiroUtil.getUserId()) + .groupBy("videoId")); + //根据年份获取 + if(year == null) { + map.put("count", videoWatchRecords.size()); + year = DateUtil.thisYear(); + } else { + Integer finalYear = year; + long count = videoWatchRecords.stream().filter(o -> Objects.equals(DateUtil.year(o.getWatchTime()), finalYear)).count(); + map.put("count", count); + } + List> result = new ArrayList<>(); + int brearYear = year - 5; + for (int i = year; i > brearYear; i--) { + Integer finalYear1 = i; + long count = videoWatchRecords.stream().filter(o -> Objects.equals(DateUtil.year(o.getWatchTime()), finalYear1)).count(); + result.add(Map.of("label", i, "value", count)); + } + map.put("result", result); + return map; + } +} diff --git a/src/main/resources/static/assets/mobile/img/mine/user_info_back.png b/src/main/resources/static/assets/mobile/img/mine/user_info_back.png new file mode 100644 index 0000000000000000000000000000000000000000..223c68f699d03b7d12b41f17b69dc6e0d5124949 GIT binary patch literal 13676 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 + + +
+ +
+ +
+ +
品牌活动
+
+ +
培训教育
+
+
+
+ 筛选 + +
+
+ + + + +
+
+
+ 品牌活动 +
+ +
+
+
+ 培训教育 +
+ +
+
+ + +
+ + + +