From 14ce37f823716d087ab6a1ddb9b4cd440b138cd9 Mon Sep 17 00:00:00 2001 From: zhouhefeng Date: Wed, 19 Nov 2025 14:23:04 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E5=B7=A5=E4=BB=A3=E4=BC=9A?= =?UTF-8?q?=E5=A7=94=E5=91=98=E4=BC=9A=E7=AE=A1=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../budwk/app/base/constant/RoleConstant.java | 4 + .../SysUnionCommitteeMemberController.java | 128 ++++++++++++++ .../app/sys/models/SysCommitteeMember.java | 55 ++++++ .../union/branchUnionCommitteeMemberManage.js | 163 ++++++++++++++++++ .../views/platform/sys/union/index.html | 17 +- 5 files changed, 363 insertions(+), 4 deletions(-) create mode 100644 src/main/java/com/budwk/app/sys/controller/SysUnionCommitteeMemberController.java create mode 100644 src/main/java/com/budwk/app/sys/models/SysCommitteeMember.java create mode 100644 src/main/resources/views/platform/sys/union/branchUnionCommitteeMemberManage.js diff --git a/src/main/java/com/budwk/app/base/constant/RoleConstant.java b/src/main/java/com/budwk/app/base/constant/RoleConstant.java index ec51f0ff..bf340f6e 100644 --- a/src/main/java/com/budwk/app/base/constant/RoleConstant.java +++ b/src/main/java/com/budwk/app/base/constant/RoleConstant.java @@ -14,6 +14,8 @@ RoleConstant { MEMBER("会员角色"), SYSADMIN("系统管理员"), + UNION_COMMITTEE_MEMBER("工代会委员"), + SCHOOL_UNION_ADMIN("校工会管理员"), SCHOOL_UNION_CHAIRMAN("校工会主席"), SCHOOL_UNION_VICE_CHAIRMAN("校工会副主席"), @@ -90,6 +92,8 @@ RoleConstant { PSYCHOLOGY_DOCTOR("心理咨询师"), LEGAL_DOCTOR("法律顾问"), + + ; /** * 避免和枚举类的name冲突 diff --git a/src/main/java/com/budwk/app/sys/controller/SysUnionCommitteeMemberController.java b/src/main/java/com/budwk/app/sys/controller/SysUnionCommitteeMemberController.java new file mode 100644 index 00000000..5bcc798b --- /dev/null +++ b/src/main/java/com/budwk/app/sys/controller/SysUnionCommitteeMemberController.java @@ -0,0 +1,128 @@ +package com.budwk.app.sys.controller; + +import cn.dev33.satoken.annotation.SaCheckPermission; +import com.budwk.app.base.constant.RoleConstant; +import com.budwk.app.base.page.Pagination; +import com.budwk.app.base.param.PageForm; +import com.budwk.app.base.result.Result; +import com.budwk.app.sys.models.SysCommitteeMember; +import com.budwk.app.sys.models.Sys_role; +import com.budwk.app.sys.models.Sys_user; +import com.budwk.app.sys.models.Sys_user_role; +import com.budwk.app.sys.services.SysRoleService; +import com.budwk.app.sys.services.SysUserService; +import com.budwk.app.sys.views.View_user; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.nutz.aop.interceptor.ioc.TransAop; +import org.nutz.dao.Cnd; +import org.nutz.dao.Sqls; +import org.nutz.dao.sql.Sql; +import org.nutz.dao.util.cri.SqlExpressionGroup; +import org.nutz.ioc.aop.Aop; +import org.nutz.ioc.loader.annotation.Inject; +import org.nutz.ioc.loader.annotation.IocBean; +import org.nutz.mvc.annotation.At; +import org.nutz.mvc.annotation.Ok; + +import javax.validation.Valid; +import java.util.List; + +/** + * @author zhf + * @date 2025/11/18 17:26 + * @description 工会委员会 + */ +@IocBean +@At("/platform/sys/committeeMember") +@Ok("json:full") +@Api(tags = "工会委员管理") +public class SysUnionCommitteeMemberController { + + @Inject + private SysUserService sysUserService; + @Inject + private SysRoleService sysRoleService; + + @At + @ApiOperation("分页查询") + @SaCheckPermission("sys.manager.union.committeeMember") + public Result pageData(PageForm pageForm, @Valid String sessionId) { + Sql sql = Sqls.create(""" + SELECT * FROM `sys_committee_member` $condition + """); + Cnd cnd = Cnd.NEW(); + SqlExpressionGroup seg = new SqlExpressionGroup(); + seg.orLike(SysCommitteeMember::getLoginName, pageForm.getSearchKeyword(), true); + seg.orLike(SysCommitteeMember::getUserName, pageForm.getSearchKeyword(), true); +// cnd.and(seg); + cnd.and(SysCommitteeMember::getSessionId, "=", sessionId); + sql.setCondition(cnd); + return Result.success(sysUserService.listPageMap(pageForm.getPageNumber(), pageForm.getPageSize(), sql)); + } + + + @At + @ApiOperation("查询没有设置的人员") + @SaCheckPermission("sys.manager.union.committeeMember") + public Result listUserSelect(@Valid String keyWord, @Valid String sessionId) { + Sql sql = Sqls.create("select id,loginname,username,unitName from vw_user $condition"); + Cnd cnd = Cnd.NEW(); + SqlExpressionGroup seg = new SqlExpressionGroup(); + seg.orLike(View_user::getLoginname, keyWord, true); + seg.orLike(View_user::getUsername, keyWord, true); + cnd.and(seg); + cnd.and("id", "not in", "(select userId from sys_committee_member where sessionId='%s')".formatted(sessionId)); + sql.setCondition(cnd); + Pagination pagination = sysUserService.listPageMap(1, 10, sql); + return Result.success(pagination.getList()); + } + + @At + @ApiOperation("添加委员") + @SaCheckPermission("sys.manager.union.committeeMember") + @Aop(TransAop.READ_COMMITTED) + public Result insert(SysCommitteeMember sysCommitteeMember) { + Sys_user user = sysUserService.fetch(sysCommitteeMember.getUserId()); + sysCommitteeMember.setLoginName(user.getLoginname()); + sysCommitteeMember.setUserName(user.getUsername()); + sysUserService.insert(sysCommitteeMember); + Sys_role sys_role = sysRoleService.fetch(Cnd.where(Sys_role::getCode, "=", RoleConstant.UNION_COMMITTEE_MEMBER.name())); + Sys_user_role user_role = new Sys_user_role(); + user_role.setRoleId(sys_role.getId()); + user_role.setUserId(sysCommitteeMember.getUserId()); + sysRoleService.insert(user_role); + sysRoleService.clearCache(); + sysUserService.clearCache(); + return Result.success(); + } + + + @At + @ApiOperation("删除委员") + @SaCheckPermission("sys.manager.union.committeeMember") + @Aop(TransAop.READ_COMMITTED) + public Result delete(@Valid String id) { + SysCommitteeMember committeeMember = sysUserService.dao().fetch(SysCommitteeMember.class, id); + Sys_role sys_role = sysRoleService.fetch(Cnd.where(Sys_role::getCode, "=", RoleConstant.UNION_COMMITTEE_MEMBER.name())); + sysUserService.dao().delete(SysCommitteeMember.class, id); + sysRoleService.dao().clear(Sys_user_role.class, Cnd.where(Sys_user_role::getUserId, "=", committeeMember.getUserId()) + .and(Sys_user_role::getRoleId, "=", sys_role.getId())); + return Result.success(); + } + + @At + @ApiOperation("删除委员角色") + @SaCheckPermission("sys.manager.union.committeeMember") + @Aop(TransAop.READ_COMMITTED) + public Result deleteRole(@Valid String sessionId) { + List memberList = sysUserService.dao().query(SysCommitteeMember.class, Cnd.where(SysCommitteeMember::getSessionId, "=", sessionId)); + Sys_role sys_role = sysRoleService.fetch(Cnd.where(Sys_role::getCode, "=", RoleConstant.UNION_COMMITTEE_MEMBER.name())); + List userids = memberList.stream().map(SysCommitteeMember::getUserId).toList(); + sysRoleService.dao().clear(Sys_user_role.class, Cnd.where(Sys_user_role::getUserId, "in", userids) + .and(Sys_user_role::getRoleId, "=", sys_role.getId())); + return Result.success(); + } + + +} diff --git a/src/main/java/com/budwk/app/sys/models/SysCommitteeMember.java b/src/main/java/com/budwk/app/sys/models/SysCommitteeMember.java new file mode 100644 index 00000000..8d76ed50 --- /dev/null +++ b/src/main/java/com/budwk/app/sys/models/SysCommitteeMember.java @@ -0,0 +1,55 @@ +package com.budwk.app.sys.models; + +import lombok.Data; +import org.nutz.dao.entity.annotation.*; +import org.nutz.dao.interceptor.annotation.PrevInsert; + +/** + * @author zhf + * @date 2025/11/19 09:25 + * @description 工会委员 + */ +@Data +@Table("sys_committee_member") +public class SysCommitteeMember { + + @Name + @ColDefine + @Column + @PrevInsert(uu32 = true) + @Comment("id") + private String id; + + @ColDefine(type = ColType.VARCHAR, width = 100) + @Comment("工号") + @Column + private String loginName; + + @ColDefine(type = ColType.VARCHAR, width = 100) + @Comment("姓名") + @Column + private String userName; + + @ColDefine(type = ColType.VARCHAR, width = 32) + @Comment("userId") + @Column + private String userId; + + @ColDefine(type = ColType.VARCHAR, width = 100) + @Comment("职务") + @Column + private String position; + + @ColDefine(type = ColType.VARCHAR, width = 100) + @Comment("届次名称") + @Column + private String sessionName; + + + @ColDefine(type = ColType.VARCHAR, width = 32) + @Comment("届次Id") + @Column + private String sessionId; + + +} diff --git a/src/main/resources/views/platform/sys/union/branchUnionCommitteeMemberManage.js b/src/main/resources/views/platform/sys/union/branchUnionCommitteeMemberManage.js new file mode 100644 index 00000000..cdf49d7a --- /dev/null +++ b/src/main/resources/views/platform/sys/union/branchUnionCommitteeMemberManage.js @@ -0,0 +1,163 @@ +const branchUnionCommitteeMemberManage = { + template: /*language=HTML*/ ` +
+ + + + + + + + + + 添加委员 + + + 删除当前届次委员角色 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ `, + mixins: [initTableMixins], + data() { + return { + dialogFormVisible: false, + formData: {}, + formRules: { + sessionId: [{required: true, message: "必填", trigger: ["change", "blur"]}], + userId: [{required: true, message: "必填", trigger: ["change", "blur"]}], + }, + sessionOptions: [] + } + }, + methods: { + listSession() { + this.$axios.post("/platform/teacherCongress/common/listSession").then((res) => { + if (res.code === 0) { + this.sessionOptions = res.data + if (this.sessionOptions.length > 0) { + this.$set(this.pageForm, "sessionId", this.sessionOptions[0].id) + this.pageData() + } + } + }) + }, + pageData() { + $.get("/platform/sys/committeeMember/pageData", this.pageForm).then((res) => { + this.tableData = res.data.list + this.pageForm.totalCount = res.data.totalCount + }) + }, + openAdd() { + this.dialogFormVisible = true + this.$nextTick(() => { + this.formData = {} + }) + }, + doSubmit() { + this.$refs.formRef.validate((valid) => { + if (!valid) return + const session = this.sessionOptions.find(item => item.id === this.formData.sessionId) + this.formData.sessionName = session.fullName + $.post("/platform/sys/committeeMember/insert", this.formData).then((res) => { + this.dialogFormVisible = false + this.$message.success(res.msg) + this.pageData() + }) + }) + }, + doDelete(id) { + this.$confirm("您确定要删除吗?", "提示", { + confirmButtonText: "确定", + cancelButtonText: "取消", + type: "info" + }).then(() => { + $.post("/platform/sys/committeeMember/delete", {id}).then((res) => { + this.$message.success(res.msg) + this.pageData() + }) + }) + }, + deleteRole() { + this.$confirm("您当前操作委员信息不会删除,只会删除当前届次委员的角色,确定要删除吗?", "提示", { + confirmButtonText: "确定", + cancelButtonText: "取消", + type: "info" + }).then(() => { + $.post("/platform/sys/committeeMember/deleteRole", {sessionId:this.pageForm.sessionId}).then((res) => { + this.$message.success(res.msg) + this.pageData() + }) + }) + } + }, + created() { + this.listSession() + + } +} diff --git a/src/main/resources/views/platform/sys/union/index.html b/src/main/resources/views/platform/sys/union/index.html index 1db0b973..ec7b9d31 100644 --- a/src/main/resources/views/platform/sys/union/index.html +++ b/src/main/resources/views/platform/sys/union/index.html @@ -51,8 +51,15 @@ layout("/layouts/platform.html"){ + + + + 工会委员信息 + + + - + @@ -89,7 +96,7 @@ layout("/layouts/platform.html"){ - +