From 96429703280e9560cb83505f08136430389c989d Mon Sep 17 00:00:00 2001 From: = <=> Date: Sat, 16 May 2026 15:13:03 +0800 Subject: [PATCH] commit --- .../ActivityBasicScopeController.java | 25 ++++++++++++++++++- ...ctivityCultureApplyActivityController.java | 3 ++- .../common/ClubCommonController.java | 7 ++++++ .../infoManage/ClubInfoManageController.java | 3 ++- .../ClubRefreshReportController.java | 4 ++- .../infoManage/ClubRuleUpdateController.java | 2 ++ .../statistics/ClubStatisticsController.java | 17 ++++++++++--- .../impl/SysClubInfoManageServiceImpl.java | 3 ++- .../club/service/impl/SysClubServiceImpl.java | 4 ++- .../assets/platform/js/tool/businessTool.js | 13 ++++++++++ .../components/module/activity/UserScope.vue | 20 +++++++++++---- .../static/components/module/kh/KhZb.vue | 2 +- .../activity/culture/common/applyActivity.js | 3 ++- .../club/infoManage/manage/clubInfoManage.js | 2 +- .../infoManage/manage/schoolClubManage.js | 2 +- 15 files changed, 92 insertions(+), 18 deletions(-) diff --git a/src/main/java/com/budwk/app/zhgh/activity/basic/controller/ActivityBasicScopeController.java b/src/main/java/com/budwk/app/zhgh/activity/basic/controller/ActivityBasicScopeController.java index 1d78f37..697ad5a 100644 --- a/src/main/java/com/budwk/app/zhgh/activity/basic/controller/ActivityBasicScopeController.java +++ b/src/main/java/com/budwk/app/zhgh/activity/basic/controller/ActivityBasicScopeController.java @@ -24,6 +24,8 @@ import com.budwk.app.zhgh.activity.basic.models.ActivityUserScope; import com.budwk.app.zhgh.activity.basic.param.ActivityUserScopePageParam; import com.budwk.app.zhgh.activity.basic.service.ActivityBasicScopeService; import com.budwk.app.zhgh.activity.basic.template.UserTemp; +import com.budwk.app.zhgh.club.model.SysClub; +import com.budwk.app.zhgh.club.service.SysClubService; import io.swagger.annotations.ApiOperation; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.ArrayUtils; @@ -73,6 +75,9 @@ public class ActivityBasicScopeController { @Inject private ActivityBasicScopeService activityBasicScopeService; + @Inject + private SysClubService sysClubService; + @Inject private Dao dao; @@ -244,6 +249,8 @@ public class ActivityBasicScopeController { return Result.success(new NutMap() {{ addv("is_A06", StpUtil.hasRole(RoleConstant.SCHOOL_UNION_ADMIN.name())); addv("is_H04", StpUtil.hasRole(RoleConstant.BRANCH_UNION_CHAIRMAN.name())); + addv("is_H02", StpUtil.hasRole(RoleConstant.SCHOOL_UNION_CLUB_ADMIN.name())); + addv("is_CLUB_PRESIDENT", StpUtil.hasRole(RoleConstant.CLUB_PRESIDENT.name())); addv("is_sysadmin", StpUtil.hasRole(RoleConstant.SYSADMIN.name())); addv("unionid", SecurityUtil.getUnionId()); }}); @@ -377,7 +384,23 @@ public class ActivityBasicScopeController { try { if (!AuthUtil.hasRoleOr(RoleConstant.SYSADMIN.name(), RoleConstant.SCHOOL_UNION_ADMIN.name())){ - cnd.andEX("u.unionid", "=", SecurityUtil.getUnionId()); + boolean isBranchUnionChairman = AuthUtil.hasRole(RoleConstant.BRANCH_UNION_CHAIRMAN.name()); + boolean isClubPresident = AuthUtil.hasRole(RoleConstant.CLUB_PRESIDENT.name()); + List manageClubIdList = sysClubService.getMyManageClub().stream().map(SysClub::getId).toList(); + if (isBranchUnionChairman && isClubPresident) { + // Users with both roles can search their union users and their managed club members. + SqlExpressionGroup scopeGroup = new SqlExpressionGroup(); + scopeGroup.or("u.unionid", "=", SecurityUtil.getUnionId()); + if (Lang.isNotEmpty(manageClubIdList)) { + scopeGroup.or("clubuser.clubid", "in", manageClubIdList); + } + cnd.and(scopeGroup); + } else if (isClubPresident) { + // Club presidents can only search members from clubs they manage. + cnd.and("clubuser.clubid", "in", Lang.isNotEmpty(manageClubIdList) ? manageClubIdList : List.of("__EMPTY_CLUB_ID__")); + } else { + cnd.andEX("u.unionid", "=", SecurityUtil.getUnionId()); + } } cnd.andEX("u.unionid", EQ_OR_NEQ_OP, activityUserScopePageParam.getUnionId()); cnd.andEX("u.unitid", EQ_OR_NEQ_OP, activityUserScopePageParam.getUnitId()); diff --git a/src/main/java/com/budwk/app/zhgh/activity/culture/controller/ActivityCultureApplyActivityController.java b/src/main/java/com/budwk/app/zhgh/activity/culture/controller/ActivityCultureApplyActivityController.java index b063de7..917603b 100644 --- a/src/main/java/com/budwk/app/zhgh/activity/culture/controller/ActivityCultureApplyActivityController.java +++ b/src/main/java/com/budwk/app/zhgh/activity/culture/controller/ActivityCultureApplyActivityController.java @@ -141,7 +141,8 @@ public class ActivityCultureApplyActivityController { args.set(FlowConst.SUBMIT_TYPE, ProcessSubmitTypeEnum.APPLY.getCode()); args.set(FlowConst.FORM_DATA, tissue); args.set("activity_type", tissue.getActivity_type()); - ProcessInstance instance = flowEngine.startProcessInstanceByKey(tissue.getActivity_type().equals(40002) ? "FGHWHHD" : "XHWHHD", tissue.getId(), SecurityUtil.getUserId(), args); +// ProcessInstance instance = flowEngine.startProcessInstanceByKey(tissue.getActivity_type().equals(40002) ? "FGHWHHD" : "XHWHHD", tissue.getId(), SecurityUtil.getUserId(), args); + ProcessInstance instance = flowEngine.startProcessInstanceByKey("WHHD", tissue.getId(), SecurityUtil.getUserId(), args); // 自动完成第一个申请任务 List doingTaskList = flowEngine.processTaskService().getDoingTaskList(instance.getId(), null); diff --git a/src/main/java/com/budwk/app/zhgh/club/controller/common/ClubCommonController.java b/src/main/java/com/budwk/app/zhgh/club/controller/common/ClubCommonController.java index b54162f..49360af 100644 --- a/src/main/java/com/budwk/app/zhgh/club/controller/common/ClubCommonController.java +++ b/src/main/java/com/budwk/app/zhgh/club/controller/common/ClubCommonController.java @@ -82,4 +82,11 @@ public class ClubCommonController { return Result.success(list); } + @At + @SaCheckLogin + public Result listManageClubByRole() { + // Activity user scope uses manageable clubs, not all clubs the user has joined. + return Result.success(sysClubService.getMyManageClub()); + } + } diff --git a/src/main/java/com/budwk/app/zhgh/club/controller/infoManage/ClubInfoManageController.java b/src/main/java/com/budwk/app/zhgh/club/controller/infoManage/ClubInfoManageController.java index 442dc25..fa3ec42 100644 --- a/src/main/java/com/budwk/app/zhgh/club/controller/infoManage/ClubInfoManageController.java +++ b/src/main/java/com/budwk/app/zhgh/club/controller/infoManage/ClubInfoManageController.java @@ -282,7 +282,8 @@ public class ClubInfoManageController { } Sys_role sysRole = sysRoleService.getByCode(roleCode); for (String user : users) { - if (AuthUtil.hasRoleOr(RoleConstant.SYSADMIN.name(), RoleConstant.SCHOOL_UNION_ADMIN.name(), RoleConstant.SCHOOL_UNION_CLUB_ADMIN.name()) || !Objects.equals(RoleConstant.CLUB_MEMBER.name(), roleCode)) { + // 校工会主席可按校级管理角色录入协会会员并同步用户角色。 + if (AuthUtil.hasRoleOr(RoleConstant.SYSADMIN.name(), RoleConstant.SCHOOL_UNION_ADMIN.name(), RoleConstant.SCHOOL_UNION_CLUB_ADMIN.name(), RoleConstant.SCHOOL_UNION_CHAIRMAN.name()) || !Objects.equals(RoleConstant.CLUB_MEMBER.name(), roleCode)) { Sys_user_role sysUserRole = new Sys_user_role(); sysUserRole.setUserId(user); sysUserRole.setRoleId(sysRole.getId()); diff --git a/src/main/java/com/budwk/app/zhgh/club/controller/infoManage/ClubRefreshReportController.java b/src/main/java/com/budwk/app/zhgh/club/controller/infoManage/ClubRefreshReportController.java index a9b4980..1e84fa7 100644 --- a/src/main/java/com/budwk/app/zhgh/club/controller/infoManage/ClubRefreshReportController.java +++ b/src/main/java/com/budwk/app/zhgh/club/controller/infoManage/ClubRefreshReportController.java @@ -118,8 +118,10 @@ public class ClubRefreshReportController { public Object submit(@Param("data") SysClubRefresh clubRefresh) { Cnd cnd = Cnd.NEW(); - cnd.and("userId", "=", SecurityUtil.getUserId()); + // cnd.and("userId", "=", SecurityUtil.getUserId()); // cnd.and("clubId", "=", clubRefresh.getClubId()); + // 只校验当前协会的未完成换届报告申请,避免其他协会记录误拦截。 + cnd.and(SysClubRefresh::getClubId, "=", clubRefresh.getClubId()); if(StrUtil.isNotBlank(clubRefresh.getId())) { cnd.and(SysClubRefresh::getId, "!=", clubRefresh.getId()); } diff --git a/src/main/java/com/budwk/app/zhgh/club/controller/infoManage/ClubRuleUpdateController.java b/src/main/java/com/budwk/app/zhgh/club/controller/infoManage/ClubRuleUpdateController.java index ef62fa4..bd6dfa7 100644 --- a/src/main/java/com/budwk/app/zhgh/club/controller/infoManage/ClubRuleUpdateController.java +++ b/src/main/java/com/budwk/app/zhgh/club/controller/infoManage/ClubRuleUpdateController.java @@ -119,6 +119,8 @@ public class ClubRuleUpdateController { public Object submit(@Param("data")SysClubRule clubRule) { Cnd cnd = Cnd.NEW(); + // 只校验当前协会的未完成章程备案申请,避免其他协会记录误拦截。 + cnd.and(SysClubRule::getClubId, "=", clubRule.getClubId()); if(StrUtil.isNotBlank(clubRule.getId())) { cnd.and(SysClubRule::getId, "!=", clubRule.getId()); } diff --git a/src/main/java/com/budwk/app/zhgh/club/controller/statistics/ClubStatisticsController.java b/src/main/java/com/budwk/app/zhgh/club/controller/statistics/ClubStatisticsController.java index 9199e75..58cec93 100644 --- a/src/main/java/com/budwk/app/zhgh/club/controller/statistics/ClubStatisticsController.java +++ b/src/main/java/com/budwk/app/zhgh/club/controller/statistics/ClubStatisticsController.java @@ -291,8 +291,20 @@ public class ClubStatisticsController { response.setHeader("Content-Disposition", "attachment;filename=" + URLUtil.encode("上传资料数据.zip")); LinkedHashMap> fileList = new LinkedHashMap<>(); - //查询社团 - List clubList = sysClubService.query(Cnd.NEW().andEX("id", "=", clubId)); + // 导出上传资料时只取未删除且注册流程已完成的协会,避免历史删除协会资料被打包。 + Cnd clubCnd = Cnd.NEW(); + clubCnd.andEX("id", "=", clubId); + clubCnd.and("dismiss", "=", false); + List clubList = sysClubService.query(clubCnd); + if (!clubList.isEmpty()) { + List instanceList = sysClubService.dao().query( + ProcessInstance.class, + Cnd.where(ProcessInstance::getBusinessNo, "in", clubList.stream().map(SysClub::getId).toList()) + .and(ProcessInstance::getState, "=", ProcessInstanceStateEnum.FINISHED.getCode()) + ); + List passList = instanceList.stream().map(ProcessInstance::getBusinessNo).toList(); + clubList = clubList.stream().filter(o -> passList.contains(o.getId())).toList(); + } clubList.forEach(item -> { List file = new ArrayList<>(); file.addAll(Optional.ofNullable(item.getFiles()).orElseGet(ArrayList::new)); @@ -301,7 +313,6 @@ public class ClubStatisticsController { file.addAll(Optional.ofNullable(item.getManageFile()).orElseGet(ArrayList::new)); file.addAll(Optional.ofNullable(item.getYearPlanFile()).orElseGet(ArrayList::new)); file.addAll(Optional.ofNullable(item.getReplaceReport()).orElseGet(ArrayList::new)); - file.addAll(Optional.ofNullable(item.getRulesFile()).orElseGet(ArrayList::new)); fileList.put(item.getId(), file); }); diff --git a/src/main/java/com/budwk/app/zhgh/club/service/impl/SysClubInfoManageServiceImpl.java b/src/main/java/com/budwk/app/zhgh/club/service/impl/SysClubInfoManageServiceImpl.java index 37ef5e9..33866aa 100644 --- a/src/main/java/com/budwk/app/zhgh/club/service/impl/SysClubInfoManageServiceImpl.java +++ b/src/main/java/com/budwk/app/zhgh/club/service/impl/SysClubInfoManageServiceImpl.java @@ -113,7 +113,8 @@ public class SysClubInfoManageServiceImpl extends BaseServiceImpl clubIdList = clubList.stream().map(Sys_user_role::getClubId).toList(); diff --git a/src/main/java/com/budwk/app/zhgh/club/service/impl/SysClubServiceImpl.java b/src/main/java/com/budwk/app/zhgh/club/service/impl/SysClubServiceImpl.java index e6ca750..03fbda4 100644 --- a/src/main/java/com/budwk/app/zhgh/club/service/impl/SysClubServiceImpl.java +++ b/src/main/java/com/budwk/app/zhgh/club/service/impl/SysClubServiceImpl.java @@ -114,7 +114,8 @@ public class SysClubServiceImpl extends BaseServiceImpl implements SysC Cnd cnd = Cnd.where("dismiss", "=", false); cnd.asc("createTime"); - if (!AuthUtil.hasRoleOr(RoleConstant.SYSADMIN.name(), RoleConstant.SCHOOL_UNION_ADMIN.name(), RoleConstant.SCHOOL_UNION_CLUB_ADMIN.name())) { + // 校工会主席在协会管理界面按校级管理角色查看全部协会。 + if (!AuthUtil.hasRoleOr(RoleConstant.SYSADMIN.name(), RoleConstant.SCHOOL_UNION_ADMIN.name(), RoleConstant.SCHOOL_UNION_CLUB_ADMIN.name(), RoleConstant.SCHOOL_UNION_CHAIRMAN.name())) { List roleList = commonService.findUserRoleByRoleCode(List.of(RoleConstant.CLUB_PRESIDENT.name(), RoleConstant.CLUB_VICE_PRESIDENT.name(), RoleConstant.CLUB_SECRETARY.name(), RoleConstant.CLUB_VICE_SECRETARY.name(),RoleConstant.CLUB_OPERATOR.name())); List clubList = dao().query(Sys_user_role.class, Cnd.where("roleId", "in", roleList).and("userId", "=", SecurityUtil.getUserId()).and("clubId", "is not", null)); List clubIdList = clubList.stream().map(Sys_user_role::getClubId).toList(); @@ -245,6 +246,7 @@ public class SysClubServiceImpl extends BaseServiceImpl implements SysC cnd.andEX("year(info.createTime)", "=", pageForm.getYear()); cnd.and("info.userId", "=", SecurityUtil.getUserId()); cnd.desc("createTime"); +// cnd.groupBy("info.id"); sql.setCondition(cnd); return listPageVO(pageForm, sql, ClubRegisterPageVo.class); } diff --git a/src/main/resources/static/assets/platform/js/tool/businessTool.js b/src/main/resources/static/assets/platform/js/tool/businessTool.js index 2e0b8c8..a58c1ae 100644 --- a/src/main/resources/static/assets/platform/js/tool/businessTool.js +++ b/src/main/resources/static/assets/platform/js/tool/businessTool.js @@ -48,6 +48,19 @@ const businessTool = { } }) }, + // 查询当前用户可管理的协会,供活动人员范围筛选使用 + listManageClubByRole() { + return commonUtil + .axiosService() + .post("/platform/club/common/listManageClubByRole", {}) + .then((resp) => { + if (resp.code === 0) { + return resp.data + } else { + return [] + } + }) + }, /** * 获取字典数据,不包含禁用 * @param code diff --git a/src/main/resources/static/components/module/activity/UserScope.vue b/src/main/resources/static/components/module/activity/UserScope.vue index cb739ca..50e25fb 100644 --- a/src/main/resources/static/components/module/activity/UserScope.vue +++ b/src/main/resources/static/components/module/activity/UserScope.vue @@ -228,12 +228,12 @@ + v-if="is_A06===true||is_sysadmin===true||is_H02===true||is_CLUB_PRESIDENT===true"> 协会: diff --git a/src/main/resources/views/platform/zhgh/activity/culture/common/applyActivity.js b/src/main/resources/views/platform/zhgh/activity/culture/common/applyActivity.js index 77239c4..84d02f7 100644 --- a/src/main/resources/views/platform/zhgh/activity/culture/common/applyActivity.js +++ b/src/main/resources/views/platform/zhgh/activity/culture/common/applyActivity.js @@ -3,8 +3,9 @@ const ACTIVITY_CULTURE_APPLY_ACTIVITY = {