From dbd76108eb8bcaa07fc5d6785f7d56ee85fb7a1c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=9C=E5=AD=A6=E6=88=90?= <1274337408@qq.com> Date: Thu, 22 Oct 2026 12:02:03 +0800 Subject: [PATCH] =?UTF-8?q?=E6=A0=A1=E5=B7=A5=E4=BC=9A=E6=96=87=E5=8C=96?= =?UTF-8?q?=E6=B4=BB=E5=8A=A8-=E4=BD=93=E8=82=B2=E6=AF=94=E8=B5=9B?= =?UTF-8?q?=E6=B4=BB=E5=8A=A8=EF=BC=9A=E5=9C=A8=E7=B3=BB=E7=BB=9F=E9=A6=96?= =?UTF-8?q?=E9=A1=B5=E6=9C=80=E6=96=B0=E6=B4=BB=E5=8A=A8=E5=88=97=E8=A1=A8?= =?UTF-8?q?=E5=B1=95=E7=A4=BA=E4=BD=93=E8=82=B2=E6=B4=BB=E5=8A=A8=EF=BC=9B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../platform/sys/SysHomeController.java | 35 +++++++++++++++++++ .../v/nutz/sys/models/Sys_home_activity.java | 5 +++ .../views/platform/sys/home/activity.js | 10 ++++-- 3 files changed, 47 insertions(+), 3 deletions(-) diff --git a/src/main/java/io/v/nutz/sys/controllers/platform/sys/SysHomeController.java b/src/main/java/io/v/nutz/sys/controllers/platform/sys/SysHomeController.java index 09aef20..5cda7f4 100644 --- a/src/main/java/io/v/nutz/sys/controllers/platform/sys/SysHomeController.java +++ b/src/main/java/io/v/nutz/sys/controllers/platform/sys/SysHomeController.java @@ -11,6 +11,7 @@ import io.v.nutz.sys.services.SysMenuService; import io.v.nutz.sys.services.SysUserService; import io.v.nutz.web.commons.base.Globals; import io.v.nutz.web.commons.utils.ShiroUtil; +import io.v.nutz.zhgh.activity.models.ActivitySchool; import io.v.nutz.zhgh.activity.models.ActivityUserScope; import org.apache.shiro.authz.annotation.RequiresAuthentication; import org.jsoup.Jsoup; @@ -211,6 +212,35 @@ public class SysHomeController { public Result listHomeActivity() { FieldFilter fieldFilter = FieldFilter.locked(Sys_home_activity.class, "classPath"); List list = Daos.ext(dao,fieldFilter) .query(Sys_home_activity.class, Cnd.where("enable", "=", 1).desc("top")); + boolean sportsApplyRole = ShiroUtil.hasAnyRoles("H04,sysadmin,SCHOOL_UNION_SPORTS_ADMIN,gh08,gh01"); + // 体育活动未写入首页活动表,在此转换以兼容已有数据 + List sportsActivities = dao.query(ActivitySchool.class, Cnd.where("isDisabled", "=", true) + .and("close", "!=", true) + .and("isSave", "!=", true) + .desc("applyStartTime")); + for (ActivitySchool sportsActivity : sportsActivities) { + if (StrUtil.isBlank(sportsActivity.getApplyStartTime()) || StrUtil.isBlank(sportsActivity.getApplyEndTime())) { + continue; + } + // 首页为PC入口,普通会员没有体育活动个人报名页面 + if (!sportsApplyRole) { + continue; + } + Sys_home_activity homeActivity = new Sys_home_activity(); + homeActivity.setId(sportsActivity.getId()); + homeActivity.setName(sportsActivity.getName()); + if (Lang.isNotEmpty(sportsActivity.getImage())) { + homeActivity.setCover(sportsActivity.getImage().get(0).getId()); + } + homeActivity.setUrl("/platform/activity/apply"); + homeActivity.setH5Url("/mobile/activity/Sports/list/activityList?id=" + sportsActivity.getId() + "&signUpMethod=2"); + homeActivity.setAllowUserGroupId(sportsActivity.getActivityGroupId()); + homeActivity.setStartDate(DateUtil.parse(sportsActivity.getApplyStartTime())); + homeActivity.setEndDate(DateUtil.parse(sportsActivity.getApplyEndTime())); + homeActivity.setEnable(true); + homeActivity.setType("Activity"); + list.add(homeActivity); + } String userId = ShiroUtil.getUserId(); List allowActivityList = new ArrayList<>(); // 今天的时间 @@ -226,6 +256,11 @@ public class SysHomeController { Integer allowUserGroupId = activity.getAllowUserGroupId(); String allowUserSql = activity.getAllowUserSql(); activity.setAllowUserSql(null); + // 体育活动管理员与报名页保持一致,不受活动分组限制 + if ("Activity".equals(activity.getType()) && sportsApplyRole) { + allowActivityList.add(activity); + continue; + } if (allowUserGroupId == null && StrUtil.isBlank(allowUserSql)) { allowActivityList.add(activity); continue; diff --git a/src/main/java/io/v/nutz/sys/models/Sys_home_activity.java b/src/main/java/io/v/nutz/sys/models/Sys_home_activity.java index 3a1026c..e1f0fe2 100644 --- a/src/main/java/io/v/nutz/sys/models/Sys_home_activity.java +++ b/src/main/java/io/v/nutz/sys/models/Sys_home_activity.java @@ -80,4 +80,9 @@ public class Sys_home_activity extends BaseModel { @ColDefine(type = ColType.DATETIME) private Date endDate; + /** + * 业务类型,不保存到数据库 + */ + private String type; + } diff --git a/src/main/resources/views/platform/sys/home/activity.js b/src/main/resources/views/platform/sys/home/activity.js index 006ac3d..a3b1ade 100644 --- a/src/main/resources/views/platform/sys/home/activity.js +++ b/src/main/resources/views/platform/sys/home/activity.js @@ -51,14 +51,18 @@ const activity = { }) }, enterActivity(item) { - if (item.type === "Activity" && "${@shiro.hasRole('sysadmin')||@shiro.hasRole('SchoolUnionAdmin')}||${@shiro.hasRole('gh01')||@shiro.hasRole('gh08')}" === 'false') { + if (item.type === "Activity" && "${@shiro.hasRole('H04')||@shiro.hasRole('sysadmin')||@shiro.hasRole('SCHOOL_UNION_SPORTS_ADMIN')||@shiro.hasRole('gh01')||@shiro.hasRole('gh08')}" === "false") { this.$message.warning("该活动只支持基层工会主席报名,个人报名请前往移动端") return } + if (item.type === "Activity" && "${@shiro.hasPermission('activity.apply')}" === "false") { + this.$message.warning("您没有体育活动报名权限") + return + } if (item.url) { sublime.jumpPagePjax(item.url) - } else if (item.url) { - this.$refs.openQRCode.openCode(item.url, "该活动只支持手机端报名,请使用手机扫描二维码报名!") + } else if (item.h5Url) { + this.$refs.openQRCode.openCode(item.h5Url, "该活动只支持手机端报名,请使用手机扫描二维码报名!") } else { this.$message.warning("该活动不支持,请在手机上选择!") }