diff --git a/src/main/java/io/v/nutz/mobile/activity/unionActivity/UnionActivityRegisterController.java b/src/main/java/io/v/nutz/mobile/activity/unionActivity/UnionActivityRegisterController.java index 2ce410e..d3ce280 100644 --- a/src/main/java/io/v/nutz/mobile/activity/unionActivity/UnionActivityRegisterController.java +++ b/src/main/java/io/v/nutz/mobile/activity/unionActivity/UnionActivityRegisterController.java @@ -478,6 +478,7 @@ public class UnionActivityRegisterController { activityTissuePerson.setMobile(principal.getMobile()); activityTissuePerson.setUnitName(principal.getUnit().getName()); activityTissuePerson.setUnionName(principal.getUnion().getUnionname()); + activityTissuePerson.setSignTime(cn.hutool.core.date.DateUtil.now()); simpleService.dao().insert(activityTissuePerson); lock.unlock(); return Result.success().addMsg("报名成功!"); diff --git a/src/main/java/io/v/nutz/mobile/mine/MobileMineController.java b/src/main/java/io/v/nutz/mobile/mine/MobileMineController.java index 1496a19..9299ae1 100644 --- a/src/main/java/io/v/nutz/mobile/mine/MobileMineController.java +++ b/src/main/java/io/v/nutz/mobile/mine/MobileMineController.java @@ -2,13 +2,18 @@ package io.v.nutz.mobile.mine; import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.StrUtil; +import io.v.nutz.activity.models.ActivitySchoolApply; +import io.v.nutz.activity.models.ActivityTissuePerson; 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.apache.shiro.authz.annotation.RequiresAuthentication; import org.nutz.dao.Cnd; import org.nutz.dao.Dao; +import org.nutz.dao.Sqls; +import org.nutz.dao.sql.Sql; import org.nutz.ioc.loader.annotation.Inject; import org.nutz.ioc.loader.annotation.IocBean; import org.nutz.lang.util.NutMap; @@ -34,55 +39,113 @@ public class MobileMineController { @At @ViReturn + @RequiresAuthentication 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; + Sql sql = Sqls.create(""" + SELECT + ua.activityName, + ua.activityStartTime, + ua.activityEndTime, + ua.cover + FROM + train_sign_up_user su + LEFT JOIN train_sign_up_activity ua ON su.activityId = ua.id + $condition + """); + Cnd cnd = Cnd.NEW(); + cnd.and("su.userId", "=", ShiroUtil.getUserId()); + cnd.andEX("year(signUpTime)", "=", year); + cnd.groupBy("su.activityId"); + sql.setCondition(cnd); + return baseService.listMap(sql); } @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; + @RequiresAuthentication + public Object getTrainVideo(Integer year) { + Sql sql = Sqls.create(""" + SELECT + ev.title AS activityName, + ev.startDate as activityStartTime, + ev.endDate as activityEndTime, + ev.coverUrl as cover + FROM + train_edu_video_watch_record wr + LEFT JOIN train_edu_video ev ON wr.videoId = ev.id + $condition + """); + Cnd cnd = Cnd.NEW(); + cnd.and("wr.userId", "=", ShiroUtil.getUserId()); + cnd.andEX("year(watchTime)", "=", year); + cnd.groupBy("wr.videoId"); + sql.setCondition(cnd); + return baseService.listMap(sql); + } + + @At + @ViReturn + @RequiresAuthentication + public Object getSportActivity(Integer year) { + Sql sql = Sqls.create(""" + SELECT + sch.name AS activityName, + sch.startTime as activityStartTime, + sch.endTime as activityEndTime, + JSON_EXTRACT(sch.image, '$[0]') as cover + FROM + activity_school_apply sa + LEFT JOIN activity_school sch ON sa.activityId = sch.id + $condition + """); + Cnd cnd = Cnd.NEW(); + cnd.and("sa.userId", "=", ShiroUtil.getUserId()); + cnd.andEX("year(applyDate)", "=", year); + cnd.groupBy("sa.activityId"); + sql.setCondition(cnd); + return baseService.listMap(sql); + } + + @At + @ViReturn + @RequiresAuthentication + public Object getCultureActivity(Integer year) { + Sql sql = Sqls.create(""" + SELECT + at.name AS activityName, + at.startTime as activityStartTime, + at.endTime as activityEndTime, + at.cover as cover + FROM + activity_tissue_person tp + LEFT JOIN activity_tissue at ON tp.tissueId = at.id + $condition + """); + Cnd cnd = Cnd.NEW(); + cnd.and("tp.userId", "=", ShiroUtil.getUserId()); + cnd.andEX("year(signTime)", "=", year); + cnd.groupBy("tp.tissueId"); + sql.setCondition(cnd); + return baseService.listMap(sql); + } + + @At + @ViReturn + @RequiresAuthentication + public Object getActivityCount(Integer year) { + int trainSignUpCount = dao.count(TrainSignUpUser.class, Cnd.where("userId", "=", ShiroUtil.getUserId()) + .andEX("year(signUpTime)", "=", year)); + int trainVideoCount = dao.count(TrainEduVideoWatchRecord.class, Cnd.where("userId", "=", ShiroUtil.getUserId()) + .andEX("year(watchTime)", "=", year)); + int sportActivityCount = dao.count(ActivitySchoolApply.class, Cnd.where("userId", "=", ShiroUtil.getUserId()) + .andEX("year(applyDate)", "=", year)); + int cultureActivityCount = dao.count(ActivityTissuePerson.class, Cnd.where("userId", "=", ShiroUtil.getUserId()) + .andEX("year(signTime)", "=", year)); + return Map.of( + "trainSignUpCount", Math.max(trainSignUpCount, 0), + "trainVideoCount", Math.max(trainVideoCount, 0), + "sportActivityCount", Math.max(sportActivityCount, 0), + "cultureActivityCount", Math.max(cultureActivityCount, 0) + ); } } diff --git a/src/main/resources/views/mobile/mine/index.html b/src/main/resources/views/mobile/mine/index.html index 3d239bf..ec9c241 100644 --- a/src/main/resources/views/mobile/mine/index.html +++ b/src/main/resources/views/mobile/mine/index.html @@ -16,7 +16,7 @@ layout("/mobile/platform.html"){ padding: 8px 8px; } .main_content { - height: 230px; + height: calc(100vh - 570px); background: linear-gradient(to top right, rgb(238, 163, 175), rgb(149, 214, 240)); border-radius: 0 0 20px 20px; } @@ -24,7 +24,7 @@ layout("/mobile/platform.html"){ display: flex; justify-content: space-between; align-items: center; - padding: 40px 30px 40px; + padding: 40px 30px 20px; } .basic { font-weight: bold; @@ -52,6 +52,46 @@ layout("/mobile/platform.html"){ font-size: 14px; margin-right: 20px; } + .van-tabs__nav--line { + background-color: transparent !important; + } + .van-tab--active { + color: white; + } + .van-tab { + color: white; + } + .van-cell__title { + max-width: 60px; + } + img { + border-radius: 10px; + } + .van-image__error, .van-image__loading { + border-radius: 10px; + } + .activity_name { + font-weight: bold; + } + .activity_time { + color: grey; + } + .van-empty { + position: relative; + transform: revert; + left: 0; + } + .activity_tooltip { + margin-bottom: 10px; + color: white; + padding: 0 10px; + font-size: 15px; + text-indent: 1em; + line-height: 20px; + } + .activity_count { + color: #EE0A24; + } @@ -67,35 +107,57 @@ layout("/mobile/platform.html"){
{{getShortName()}}
+
+ {{pageForm.year ? pageForm.year : '全部'}}年度, 您一共参与了, + {{activityCount.trainVideoCount}}次培训教育, + {{activityCount.trainSignUpCount}}次品牌活动, + {{activityCount.sportActivityCount}}次体育活动, + {{activityCount.cultureActivityCount}}次文化活动。 +
- -
品牌活动
-
- -
培训教育
-
+ + +
- 筛选 + 年度筛选
- - - - -
-
-
- 品牌活动 + +
+
+ + +
+
{{ item.activityName }}
+
+
开始时间:{{ moment(item.activityStartTime).format('YYYY-MM-DD HH:mm') }}
+
结束时间:{{ moment(item.activityEndTime).format('YYYY-MM-DD HH:mm') }}
+
+
+
+
- -
-
-
- 培训教育 -
-
@@ -109,7 +171,6 @@ layout("/mobile/platform.html"){ > -