From 2648e2ecc3f6b7fa7b9e1dd2f78d2754a34998d0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E4=BF=9E=E5=AE=9D=E5=B1=B1?= <1253070437@qq.com> Date: Tue, 24 Dec 2024 04:37:24 +0800 Subject: [PATCH] =?UTF-8?q?=E3=80=90=E5=8D=87=E7=BA=A7=E3=80=91=E6=96=B0?= =?UTF-8?q?=E5=A2=9E=E7=94=A8=E6=88=B7=E7=BB=84=E5=8A=9F=E8=83=BD-?= =?UTF-8?q?=E8=B4=A6=E5=8F=B7=E4=BD=93=E7=B3=BB=E3=80=81=E4=B8=9A=E5=8A=A1?= =?UTF-8?q?=E4=BD=93=E7=B3=BB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- snowy-admin-web/src/api/biz/bizGroupApi.js | 44 +++++ snowy-admin-web/src/api/sys/groupApi.js | 44 +++++ snowy-admin-web/src/views/biz/group/form.vue | 81 ++++++++ snowy-admin-web/src/views/biz/group/index.vue | 183 ++++++++++++++++++ snowy-admin-web/src/views/sys/group/form.vue | 90 +++++++++ snowy-admin-web/src/views/sys/group/index.vue | 179 +++++++++++++++++ .../java/vip/xiaonuo/sys/api/SysGroupApi.java | 41 ++++ .../group/controller/BizGroupController.java | 176 +++++++++++++++++ .../biz/modular/group/entity/BizGroup.java | 52 +++++ .../biz/modular/group/enums/BizGroupEnum.java | 34 ++++ .../modular/group/mapper/BizGroupMapper.java | 25 +++ .../group/mapper/mapping/BizGroupMapper.xml | 5 + .../modular/group/param/BizGroupAddParam.java | 44 +++++ .../group/param/BizGroupEditParam.java | 49 +++++ .../group/param/BizGroupGrantUserParam.java | 42 ++++ .../modular/group/param/BizGroupIdParam.java | 35 ++++ .../group/param/BizGroupPageParam.java | 52 +++++ .../param/BizGroupSelectorUserParam.java | 44 +++++ .../group/service/BizGroupService.java | 111 +++++++++++ .../service/impl/BizGroupServiceImpl.java | 178 +++++++++++++++++ .../group/controller/SysGroupController.java | 166 ++++++++++++++++ .../sys/modular/group/entity/SysGroup.java | 53 +++++ .../sys/modular/group/enums/SysGroupEnum.java | 34 ++++ .../modular/group/mapper/SysGroupMapper.java | 25 +++ .../group/mapper/mapping/SysGroupMapper.xml | 5 + .../modular/group/param/SysGroupAddParam.java | 45 +++++ .../group/param/SysGroupEditParam.java | 50 +++++ .../group/param/SysGroupGrantUserParam.java | 42 ++++ .../modular/group/param/SysGroupIdParam.java | 34 ++++ .../group/param/SysGroupPageParam.java | 53 +++++ .../param/SysGroupSelectorUserParam.java | 44 +++++ .../group/provider/SysGroupApiProvider.java | 49 +++++ .../group/service/SysGroupService.java | 111 +++++++++++ .../service/impl/SysGroupServiceImpl.java | 174 +++++++++++++++++ .../enums/SysRelationCategoryEnum.java | 5 +- .../xiaonuo/core/config/GlobalConfigure.java | 1 + .../src/main/resources/_sql/snowy_mysql.sql | 33 ++++ 37 files changed, 2432 insertions(+), 1 deletion(-) create mode 100644 snowy-admin-web/src/api/biz/bizGroupApi.js create mode 100644 snowy-admin-web/src/api/sys/groupApi.js create mode 100644 snowy-admin-web/src/views/biz/group/form.vue create mode 100644 snowy-admin-web/src/views/biz/group/index.vue create mode 100644 snowy-admin-web/src/views/sys/group/form.vue create mode 100644 snowy-admin-web/src/views/sys/group/index.vue create mode 100644 snowy-plugin-api/snowy-plugin-sys-api/src/main/java/vip/xiaonuo/sys/api/SysGroupApi.java create mode 100644 snowy-plugin/snowy-plugin-biz/src/main/java/vip/xiaonuo/biz/modular/group/controller/BizGroupController.java create mode 100644 snowy-plugin/snowy-plugin-biz/src/main/java/vip/xiaonuo/biz/modular/group/entity/BizGroup.java create mode 100644 snowy-plugin/snowy-plugin-biz/src/main/java/vip/xiaonuo/biz/modular/group/enums/BizGroupEnum.java create mode 100644 snowy-plugin/snowy-plugin-biz/src/main/java/vip/xiaonuo/biz/modular/group/mapper/BizGroupMapper.java create mode 100644 snowy-plugin/snowy-plugin-biz/src/main/java/vip/xiaonuo/biz/modular/group/mapper/mapping/BizGroupMapper.xml create mode 100644 snowy-plugin/snowy-plugin-biz/src/main/java/vip/xiaonuo/biz/modular/group/param/BizGroupAddParam.java create mode 100644 snowy-plugin/snowy-plugin-biz/src/main/java/vip/xiaonuo/biz/modular/group/param/BizGroupEditParam.java create mode 100644 snowy-plugin/snowy-plugin-biz/src/main/java/vip/xiaonuo/biz/modular/group/param/BizGroupGrantUserParam.java create mode 100644 snowy-plugin/snowy-plugin-biz/src/main/java/vip/xiaonuo/biz/modular/group/param/BizGroupIdParam.java create mode 100644 snowy-plugin/snowy-plugin-biz/src/main/java/vip/xiaonuo/biz/modular/group/param/BizGroupPageParam.java create mode 100644 snowy-plugin/snowy-plugin-biz/src/main/java/vip/xiaonuo/biz/modular/group/param/BizGroupSelectorUserParam.java create mode 100644 snowy-plugin/snowy-plugin-biz/src/main/java/vip/xiaonuo/biz/modular/group/service/BizGroupService.java create mode 100644 snowy-plugin/snowy-plugin-biz/src/main/java/vip/xiaonuo/biz/modular/group/service/impl/BizGroupServiceImpl.java create mode 100644 snowy-plugin/snowy-plugin-sys/src/main/java/vip/xiaonuo/sys/modular/group/controller/SysGroupController.java create mode 100644 snowy-plugin/snowy-plugin-sys/src/main/java/vip/xiaonuo/sys/modular/group/entity/SysGroup.java create mode 100644 snowy-plugin/snowy-plugin-sys/src/main/java/vip/xiaonuo/sys/modular/group/enums/SysGroupEnum.java create mode 100644 snowy-plugin/snowy-plugin-sys/src/main/java/vip/xiaonuo/sys/modular/group/mapper/SysGroupMapper.java create mode 100644 snowy-plugin/snowy-plugin-sys/src/main/java/vip/xiaonuo/sys/modular/group/mapper/mapping/SysGroupMapper.xml create mode 100644 snowy-plugin/snowy-plugin-sys/src/main/java/vip/xiaonuo/sys/modular/group/param/SysGroupAddParam.java create mode 100644 snowy-plugin/snowy-plugin-sys/src/main/java/vip/xiaonuo/sys/modular/group/param/SysGroupEditParam.java create mode 100644 snowy-plugin/snowy-plugin-sys/src/main/java/vip/xiaonuo/sys/modular/group/param/SysGroupGrantUserParam.java create mode 100644 snowy-plugin/snowy-plugin-sys/src/main/java/vip/xiaonuo/sys/modular/group/param/SysGroupIdParam.java create mode 100644 snowy-plugin/snowy-plugin-sys/src/main/java/vip/xiaonuo/sys/modular/group/param/SysGroupPageParam.java create mode 100644 snowy-plugin/snowy-plugin-sys/src/main/java/vip/xiaonuo/sys/modular/group/param/SysGroupSelectorUserParam.java create mode 100644 snowy-plugin/snowy-plugin-sys/src/main/java/vip/xiaonuo/sys/modular/group/provider/SysGroupApiProvider.java create mode 100644 snowy-plugin/snowy-plugin-sys/src/main/java/vip/xiaonuo/sys/modular/group/service/SysGroupService.java create mode 100644 snowy-plugin/snowy-plugin-sys/src/main/java/vip/xiaonuo/sys/modular/group/service/impl/SysGroupServiceImpl.java diff --git a/snowy-admin-web/src/api/biz/bizGroupApi.js b/snowy-admin-web/src/api/biz/bizGroupApi.js new file mode 100644 index 00000000..bd2b5c57 --- /dev/null +++ b/snowy-admin-web/src/api/biz/bizGroupApi.js @@ -0,0 +1,44 @@ +import { baseRequest } from '@/utils/request' + +const request = (url, ...arg) => baseRequest(`/biz/group/` + url, ...arg) + +/** + * 用户组Api接口管理器 + * + * @author yubaoshan + * @date 2024/12/24 03:33 + **/ +export default { + // 获取用户组分页 + bizGroupPage(data) { + return request('page', data, 'get') + }, + // 提交用户组表单 edit为true时为编辑,默认为新增 + bizGroupSubmitForm(data, edit = false) { + return request(edit ? 'edit' : 'add', data) + }, + // 删除用户组 + bizGroupDelete(data) { + return request('delete', data) + }, + // 获取用户组详情 + bizGroupDetail(data) { + return request('detail', data, 'get') + }, + // 获取用户组下的用户 + bizGroupOwnUser(data) { + return request('ownUser', data, 'get') + }, + // 获取机构树 + bizGroupOrgTreeSelector(data) { + return request('orgTreeSelector', data, 'get') + }, + // 获取用户选择器 + bizGroupUserSelector(data) { + return request('userSelector', data, 'get') + }, + // 给用户组授权用户 + bizGroupGrantUser(data) { + return request('grantUser', data) + } +} diff --git a/snowy-admin-web/src/api/sys/groupApi.js b/snowy-admin-web/src/api/sys/groupApi.js new file mode 100644 index 00000000..6959bdb3 --- /dev/null +++ b/snowy-admin-web/src/api/sys/groupApi.js @@ -0,0 +1,44 @@ +import { baseRequest } from '@/utils/request' + +const request = (url, ...arg) => baseRequest(`/sys/group/` + url, ...arg) + +/** + * 用户组Api接口管理器 + * + * @author yubaoshan + * @date 2024/12/21 01:25 + **/ +export default { + // 获取用户组分页 + sysGroupPage(data) { + return request('page', data, 'get') + }, + // 提交用户组表单 edit为true时为编辑,默认为新增 + sysGroupSubmitForm(data, edit = false) { + return request(edit ? 'edit' : 'add', data) + }, + // 删除用户组 + sysGroupDelete(data) { + return request('delete', data) + }, + // 获取用户组详情 + sysGroupDetail(data) { + return request('detail', data, 'get') + }, + // 获取用户组下的用户 + sysGroupOwnUser(data) { + return request('ownUser', data, 'get') + }, + // 获取机构树 + sysGroupOrgTreeSelector(data) { + return request('orgTreeSelector', data, 'get') + }, + // 获取用户选择器 + sysGroupUserSelector(data) { + return request('userSelector', data, 'get') + }, + // 给用户组授权用户 + sysGroupGrantUser(data) { + return request('grantUser', data) + } +} diff --git a/snowy-admin-web/src/views/biz/group/form.vue b/snowy-admin-web/src/views/biz/group/form.vue new file mode 100644 index 00000000..1be0f789 --- /dev/null +++ b/snowy-admin-web/src/views/biz/group/form.vue @@ -0,0 +1,81 @@ + + + diff --git a/snowy-admin-web/src/views/biz/group/index.vue b/snowy-admin-web/src/views/biz/group/index.vue new file mode 100644 index 00000000..d0c7f56a --- /dev/null +++ b/snowy-admin-web/src/views/biz/group/index.vue @@ -0,0 +1,183 @@ + + + diff --git a/snowy-admin-web/src/views/sys/group/form.vue b/snowy-admin-web/src/views/sys/group/form.vue new file mode 100644 index 00000000..7d8f165a --- /dev/null +++ b/snowy-admin-web/src/views/sys/group/form.vue @@ -0,0 +1,90 @@ + + + diff --git a/snowy-admin-web/src/views/sys/group/index.vue b/snowy-admin-web/src/views/sys/group/index.vue new file mode 100644 index 00000000..60927f6c --- /dev/null +++ b/snowy-admin-web/src/views/sys/group/index.vue @@ -0,0 +1,179 @@ + + + diff --git a/snowy-plugin-api/snowy-plugin-sys-api/src/main/java/vip/xiaonuo/sys/api/SysGroupApi.java b/snowy-plugin-api/snowy-plugin-sys-api/src/main/java/vip/xiaonuo/sys/api/SysGroupApi.java new file mode 100644 index 00000000..ddeabce0 --- /dev/null +++ b/snowy-plugin-api/snowy-plugin-sys-api/src/main/java/vip/xiaonuo/sys/api/SysGroupApi.java @@ -0,0 +1,41 @@ +/* + * Copyright [2022] [https://www.xiaonuo.vip] + * + * Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点: + * + * 1.请不要删除和修改根目录下的LICENSE文件。 + * 2.请不要删除和修改Snowy源码头部的版权声明。 + * 3.本项目代码可免费商业使用,商业使用请保留源码和相关描述文件的项目出处,作者声明等。 + * 4.分发源码时候,请注明软件出处 https://www.xiaonuo.vip + * 5.不可二次分发开源参与同类竞品,如有想法可联系团队xiaonuobase@qq.com商议合作。 + * 6.若您的项目无法满足以上几点,需要更多功能代码,获取Snowy商业授权许可,请在官网购买授权,地址为 https://www.xiaonuo.vip + */ +package vip.xiaonuo.sys.api; + +import java.util.List; + +/** + * 用户Api + * + * @author xuyuxiang + * @date 2022/6/6 11:33 + **/ +public interface SysGroupApi { + + + /** + * 获取用户组拥有人员 + * + * @author xuyuxiang + * @date 2022/5/13 21:00 + */ + List ownUser(String userId); + + /** + * 给用户组授权用户 + * + * @author xuyuxiang + * @date 2022/8/1 18:28 + */ + void grantUser(String userId, List roleIdList); +} diff --git a/snowy-plugin/snowy-plugin-biz/src/main/java/vip/xiaonuo/biz/modular/group/controller/BizGroupController.java b/snowy-plugin/snowy-plugin-biz/src/main/java/vip/xiaonuo/biz/modular/group/controller/BizGroupController.java new file mode 100644 index 00000000..7ec8b1dd --- /dev/null +++ b/snowy-plugin/snowy-plugin-biz/src/main/java/vip/xiaonuo/biz/modular/group/controller/BizGroupController.java @@ -0,0 +1,176 @@ +/* + * Copyright [2022] [https://www.xiaonuo.vip] + * + * Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点: + * + * 1.请不要删除和修改根目录下的LICENSE文件。 + * 2.请不要删除和修改Snowy源码头部的版权声明。 + * 3.本项目代码可免费商业使用,商业使用请保留源码和相关描述文件的项目出处,作者声明等。 + * 4.分发源码时候,请注明软件出处 https://www.xiaonuo.vip + * 5.不可二次分发开源参与同类竞品,如有想法可联系团队xiaonuobase@qq.com商议合作。 + * 6.若您的项目无法满足以上几点,需要更多功能代码,获取Snowy商业授权许可,请在官网购买授权,地址为 https://www.xiaonuo.vip + */ +package vip.xiaonuo.biz.modular.group.controller; + +import cn.dev33.satoken.annotation.SaCheckPermission; +import cn.hutool.core.lang.tree.Tree; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import io.swagger.v3.oas.annotations.tags.Tag; +import io.swagger.v3.oas.annotations.Operation; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RestController; +import vip.xiaonuo.biz.modular.group.param.*; +import vip.xiaonuo.biz.modular.user.entity.BizUser; +import vip.xiaonuo.common.annotation.CommonLog; +import vip.xiaonuo.common.pojo.CommonResult; +import vip.xiaonuo.biz.modular.group.entity.BizGroup; +import vip.xiaonuo.biz.modular.group.service.BizGroupService; + +import jakarta.annotation.Resource; +import jakarta.validation.Valid; +import jakarta.validation.constraints.NotEmpty; +import java.util.List; + +/** + * 用户组控制器 + * + * @author yubaoshan + * @date 2024/12/24 03:33 + */ +@Tag(name = "用户组控制器") +@RestController +@Validated +public class BizGroupController { + + @Resource + private BizGroupService bizGroupService; + + /** + * 获取用户组分页 + * + * @author yubaoshan + * @date 2024/12/24 03:33 + */ + @Operation(summary = "获取用户组分页") + @SaCheckPermission("/biz/group/page") + @GetMapping("/biz/group/page") + public CommonResult> page(BizGroupPageParam bizGroupPageParam) { + return CommonResult.data(bizGroupService.page(bizGroupPageParam)); + } + + /** + * 添加用户组 + * + * @author yubaoshan + * @date 2024/12/24 03:33 + */ + @Operation(summary = "添加用户组") + @CommonLog("添加用户组") + @SaCheckPermission("/biz/group/add") + @PostMapping("/biz/group/add") + public CommonResult add(@RequestBody @Valid BizGroupAddParam bizGroupAddParam) { + bizGroupService.add(bizGroupAddParam); + return CommonResult.ok(); + } + + /** + * 编辑用户组 + * + * @author yubaoshan + * @date 2024/12/24 03:33 + */ + @Operation(summary = "编辑用户组") + @CommonLog("编辑用户组") + @SaCheckPermission("/biz/group/edit") + @PostMapping("/biz/group/edit") + public CommonResult edit(@RequestBody @Valid BizGroupEditParam bizGroupEditParam) { + bizGroupService.edit(bizGroupEditParam); + return CommonResult.ok(); + } + + /** + * 删除用户组 + * + * @author yubaoshan + * @date 2024/12/24 03:33 + */ + @Operation(summary = "删除用户组") + @CommonLog("删除用户组") + @SaCheckPermission("/biz/group/delete") + @PostMapping("/biz/group/delete") + public CommonResult delete(@RequestBody @Valid @NotEmpty(message = "集合不能为空") + List bizGroupIdParamList) { + bizGroupService.delete(bizGroupIdParamList); + return CommonResult.ok(); + } + + /** + * 获取用户组详情 + * + * @author yubaoshan + * @date 2024/12/24 03:33 + */ + @Operation(summary = "获取用户组详情") + @SaCheckPermission("/biz/group/detail") + @GetMapping("/biz/group/detail") + public CommonResult detail(@Valid BizGroupIdParam bizGroupIdParam) { + return CommonResult.data(bizGroupService.detail(bizGroupIdParam)); + } + + /** + * 获取用户组下的用户 + * + * @author yubaoshan + * @date 2024/12/21 01:25 + */ + @Operation(summary = "获取用户组下的用户") + @SaCheckPermission("/biz/group/ownUser") + @GetMapping("/biz/group/ownUser") + public CommonResult> ownUser(@Valid BizGroupIdParam bizGroupIdParam) { + return CommonResult.data(bizGroupService.ownUser(bizGroupIdParam)); + } + + /** + * 获取组织树选择器 + * + * @author yubaoshan + * @date 2024/12/21 01:25 + */ + @Operation(summary = "获取组织树选择器") + @SaCheckPermission("/biz/group/orgTreeSelector") + @GetMapping("/biz/group/orgTreeSelector") + public CommonResult>> orgTreeSelector() { + return CommonResult.data(bizGroupService.orgTreeSelector()); + } + + /** + * 获取用户选择器 + * + * @author yubaoshan + * @date 2024/12/21 01:25 + */ + @Operation(summary = "获取用户选择器") + @SaCheckPermission("/biz/group/userSelector") + @GetMapping("/biz/group/userSelector") + public CommonResult> userSelector(BizGroupSelectorUserParam bizGroupSelectorUserParam) { + return CommonResult.data(bizGroupService.userSelector(bizGroupSelectorUserParam)); + } + + /** + * 给用户组授权用户 + * + * @author yubaoshan + * @date 2024/12/21 01:25 + */ + @Operation(summary = "给用户组授权用户") + @CommonLog("给用户组授权用户") + @SaCheckPermission("/biz/group/grantUser") + @PostMapping("/biz/group/grantUser") + public CommonResult grantUser(@RequestBody @Valid BizGroupGrantUserParam bizGroupGrantUserParam) { + bizGroupService.grantUser(bizGroupGrantUserParam); + return CommonResult.ok(); + } +} diff --git a/snowy-plugin/snowy-plugin-biz/src/main/java/vip/xiaonuo/biz/modular/group/entity/BizGroup.java b/snowy-plugin/snowy-plugin-biz/src/main/java/vip/xiaonuo/biz/modular/group/entity/BizGroup.java new file mode 100644 index 00000000..6870cdae --- /dev/null +++ b/snowy-plugin/snowy-plugin-biz/src/main/java/vip/xiaonuo/biz/modular/group/entity/BizGroup.java @@ -0,0 +1,52 @@ +/* + * Copyright [2022] [https://www.xiaonuo.vip] + * + * Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点: + * + * 1.请不要删除和修改根目录下的LICENSE文件。 + * 2.请不要删除和修改Snowy源码头部的版权声明。 + * 3.本项目代码可免费商业使用,商业使用请保留源码和相关描述文件的项目出处,作者声明等。 + * 4.分发源码时候,请注明软件出处 https://www.xiaonuo.vip + * 5.不可二次分发开源参与同类竞品,如有想法可联系团队xiaonuobase@qq.com商议合作。 + * 6.若您的项目无法满足以上几点,需要更多功能代码,获取Snowy商业授权许可,请在官网购买授权,地址为 https://www.xiaonuo.vip + */ +package vip.xiaonuo.biz.modular.group.entity; + +import com.baomidou.mybatisplus.annotation.*; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Getter; +import lombok.Setter; +import vip.xiaonuo.common.pojo.CommonEntity; + +/** + * 用户组实体 + * + * @author yubaoshan + * @date 2024/12/24 03:33 + **/ +@Getter +@Setter +@TableName("SYS_GROUP") +public class BizGroup extends CommonEntity { + + /** 主键 */ + @TableId + @Schema(description = "主键") + private String id; + + /** 名称 */ + @Schema(description = "名称") + private String name; + + /** 备注 */ + @Schema(description = "备注") + private String remark; + + /** 排序码 */ + @Schema(description = "排序码") + private Integer sortCode; + + /** 扩展信息 */ + @Schema(description = "扩展信息") + private String extJson; +} diff --git a/snowy-plugin/snowy-plugin-biz/src/main/java/vip/xiaonuo/biz/modular/group/enums/BizGroupEnum.java b/snowy-plugin/snowy-plugin-biz/src/main/java/vip/xiaonuo/biz/modular/group/enums/BizGroupEnum.java new file mode 100644 index 00000000..c3ad49fe --- /dev/null +++ b/snowy-plugin/snowy-plugin-biz/src/main/java/vip/xiaonuo/biz/modular/group/enums/BizGroupEnum.java @@ -0,0 +1,34 @@ +/* + * Copyright [2022] [https://www.xiaonuo.vip] + * + * Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点: + * + * 1.请不要删除和修改根目录下的LICENSE文件。 + * 2.请不要删除和修改Snowy源码头部的版权声明。 + * 3.本项目代码可免费商业使用,商业使用请保留源码和相关描述文件的项目出处,作者声明等。 + * 4.分发源码时候,请注明软件出处 https://www.xiaonuo.vip + * 5.不可二次分发开源参与同类竞品,如有想法可联系团队xiaonuobase@qq.com商议合作。 + * 6.若您的项目无法满足以上几点,需要更多功能代码,获取Snowy商业授权许可,请在官网购买授权,地址为 https://www.xiaonuo.vip + */ +package vip.xiaonuo.biz.modular.group.enums; + +import lombok.Getter; + +/** + * 用户组枚举 + * + * @author yubaoshan + * @date 2024/12/24 03:33 + **/ +@Getter +public enum BizGroupEnum { + + /** 测试 */ + TEST("TEST"); + + private final String value; + + BizGroupEnum(String value) { + this.value = value; + } +} diff --git a/snowy-plugin/snowy-plugin-biz/src/main/java/vip/xiaonuo/biz/modular/group/mapper/BizGroupMapper.java b/snowy-plugin/snowy-plugin-biz/src/main/java/vip/xiaonuo/biz/modular/group/mapper/BizGroupMapper.java new file mode 100644 index 00000000..88ad10dd --- /dev/null +++ b/snowy-plugin/snowy-plugin-biz/src/main/java/vip/xiaonuo/biz/modular/group/mapper/BizGroupMapper.java @@ -0,0 +1,25 @@ +/* + * Copyright [2022] [https://www.xiaonuo.vip] + * + * Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点: + * + * 1.请不要删除和修改根目录下的LICENSE文件。 + * 2.请不要删除和修改Snowy源码头部的版权声明。 + * 3.本项目代码可免费商业使用,商业使用请保留源码和相关描述文件的项目出处,作者声明等。 + * 4.分发源码时候,请注明软件出处 https://www.xiaonuo.vip + * 5.不可二次分发开源参与同类竞品,如有想法可联系团队xiaonuobase@qq.com商议合作。 + * 6.若您的项目无法满足以上几点,需要更多功能代码,获取Snowy商业授权许可,请在官网购买授权,地址为 https://www.xiaonuo.vip + */ +package vip.xiaonuo.biz.modular.group.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import vip.xiaonuo.biz.modular.group.entity.BizGroup; + +/** + * 用户组Mapper接口 + * + * @author yubaoshan + * @date 2024/12/24 03:33 + **/ +public interface BizGroupMapper extends BaseMapper { +} diff --git a/snowy-plugin/snowy-plugin-biz/src/main/java/vip/xiaonuo/biz/modular/group/mapper/mapping/BizGroupMapper.xml b/snowy-plugin/snowy-plugin-biz/src/main/java/vip/xiaonuo/biz/modular/group/mapper/mapping/BizGroupMapper.xml new file mode 100644 index 00000000..34b35a0a --- /dev/null +++ b/snowy-plugin/snowy-plugin-biz/src/main/java/vip/xiaonuo/biz/modular/group/mapper/mapping/BizGroupMapper.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/snowy-plugin/snowy-plugin-biz/src/main/java/vip/xiaonuo/biz/modular/group/param/BizGroupAddParam.java b/snowy-plugin/snowy-plugin-biz/src/main/java/vip/xiaonuo/biz/modular/group/param/BizGroupAddParam.java new file mode 100644 index 00000000..48093c10 --- /dev/null +++ b/snowy-plugin/snowy-plugin-biz/src/main/java/vip/xiaonuo/biz/modular/group/param/BizGroupAddParam.java @@ -0,0 +1,44 @@ +/* + * Copyright [2022] [https://www.xiaonuo.vip] + * + * Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点: + * + * 1.请不要删除和修改根目录下的LICENSE文件。 + * 2.请不要删除和修改Snowy源码头部的版权声明。 + * 3.本项目代码可免费商业使用,商业使用请保留源码和相关描述文件的项目出处,作者声明等。 + * 4.分发源码时候,请注明软件出处 https://www.xiaonuo.vip + * 5.不可二次分发开源参与同类竞品,如有想法可联系团队xiaonuobase@qq.com商议合作。 + * 6.若您的项目无法满足以上几点,需要更多功能代码,获取Snowy商业授权许可,请在官网购买授权,地址为 https://www.xiaonuo.vip + */ +package vip.xiaonuo.biz.modular.group.param; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Getter; +import lombok.Setter; +import jakarta.validation.constraints.NotBlank; +import jakarta.validation.constraints.NotNull; + +/** + * 用户组添加参数 + * + * @author yubaoshan + * @date 2024/12/24 03:33 + **/ +@Getter +@Setter +public class BizGroupAddParam { + + /** 名称 */ + @Schema(description = "名称", requiredMode = Schema.RequiredMode.REQUIRED) + @NotBlank(message = "name不能为空") + private String name; + + /** 备注 */ + @Schema(description = "备注") + private String remark; + + /** 排序码 */ + @Schema(description = "排序码", requiredMode = Schema.RequiredMode.REQUIRED) + @NotNull(message = "sortCode不能为空") + private Integer sortCode; +} diff --git a/snowy-plugin/snowy-plugin-biz/src/main/java/vip/xiaonuo/biz/modular/group/param/BizGroupEditParam.java b/snowy-plugin/snowy-plugin-biz/src/main/java/vip/xiaonuo/biz/modular/group/param/BizGroupEditParam.java new file mode 100644 index 00000000..9b14c16b --- /dev/null +++ b/snowy-plugin/snowy-plugin-biz/src/main/java/vip/xiaonuo/biz/modular/group/param/BizGroupEditParam.java @@ -0,0 +1,49 @@ +/* + * Copyright [2022] [https://www.xiaonuo.vip] + * + * Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点: + * + * 1.请不要删除和修改根目录下的LICENSE文件。 + * 2.请不要删除和修改Snowy源码头部的版权声明。 + * 3.本项目代码可免费商业使用,商业使用请保留源码和相关描述文件的项目出处,作者声明等。 + * 4.分发源码时候,请注明软件出处 https://www.xiaonuo.vip + * 5.不可二次分发开源参与同类竞品,如有想法可联系团队xiaonuobase@qq.com商议合作。 + * 6.若您的项目无法满足以上几点,需要更多功能代码,获取Snowy商业授权许可,请在官网购买授权,地址为 https://www.xiaonuo.vip + */ +package vip.xiaonuo.biz.modular.group.param; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Getter; +import lombok.Setter; +import jakarta.validation.constraints.NotBlank; +import jakarta.validation.constraints.NotNull; + +/** + * 用户组编辑参数 + * + * @author yubaoshan + * @date 2024/12/24 03:33 + **/ +@Getter +@Setter +public class BizGroupEditParam { + + /** 主键 */ + @Schema(description = "主键", requiredMode = Schema.RequiredMode.REQUIRED) + @NotBlank(message = "id不能为空") + private String id; + + /** 名称 */ + @Schema(description = "名称", requiredMode = Schema.RequiredMode.REQUIRED) + @NotBlank(message = "name不能为空") + private String name; + + /** 备注 */ + @Schema(description = "备注") + private String remark; + + /** 排序码 */ + @Schema(description = "排序码", requiredMode = Schema.RequiredMode.REQUIRED) + @NotNull(message = "sortCode不能为空") + private Integer sortCode; +} diff --git a/snowy-plugin/snowy-plugin-biz/src/main/java/vip/xiaonuo/biz/modular/group/param/BizGroupGrantUserParam.java b/snowy-plugin/snowy-plugin-biz/src/main/java/vip/xiaonuo/biz/modular/group/param/BizGroupGrantUserParam.java new file mode 100644 index 00000000..e023f89c --- /dev/null +++ b/snowy-plugin/snowy-plugin-biz/src/main/java/vip/xiaonuo/biz/modular/group/param/BizGroupGrantUserParam.java @@ -0,0 +1,42 @@ +/* + * Copyright [2022] [https://www.xiaonuo.vip] + * + * Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点: + * + * 1.请不要删除和修改根目录下的LICENSE文件。 + * 2.请不要删除和修改Snowy源码头部的版权声明。 + * 3.本项目代码可免费商业使用,商业使用请保留源码和相关描述文件的项目出处,作者声明等。 + * 4.分发源码时候,请注明软件出处 https://www.xiaonuo.vip + * 5.不可二次分发开源参与同类竞品,如有想法可联系团队xiaonuobase@qq.com商议合作。 + * 6.若您的项目无法满足以上几点,需要更多功能代码,获取Snowy商业授权许可,请在官网购买授权,地址为 https://www.xiaonuo.vip + */ +package vip.xiaonuo.biz.modular.group.param; + +import io.swagger.v3.oas.annotations.media.Schema; +import jakarta.validation.constraints.NotBlank; +import jakarta.validation.constraints.NotNull; +import lombok.Getter; +import lombok.Setter; + +import java.util.List; + +/** + * 用户组授权用户参数 + * + * @author yubaoshan + * @date 2024/12/21 01:25 + **/ +@Getter +@Setter +public class BizGroupGrantUserParam { + + /** 用户组id */ + @Schema(description = "用户组id", requiredMode = Schema.RequiredMode.REQUIRED) + @NotBlank(message = "id不能为空") + private String id; + + /** 授权用户信息 */ + @Schema(description = "授权用户信息", requiredMode = Schema.RequiredMode.REQUIRED) + @NotNull(message = "grantInfoList不能为空") + private List grantInfoList; +} diff --git a/snowy-plugin/snowy-plugin-biz/src/main/java/vip/xiaonuo/biz/modular/group/param/BizGroupIdParam.java b/snowy-plugin/snowy-plugin-biz/src/main/java/vip/xiaonuo/biz/modular/group/param/BizGroupIdParam.java new file mode 100644 index 00000000..7df88659 --- /dev/null +++ b/snowy-plugin/snowy-plugin-biz/src/main/java/vip/xiaonuo/biz/modular/group/param/BizGroupIdParam.java @@ -0,0 +1,35 @@ +/* + * Copyright [2022] [https://www.xiaonuo.vip] + * + * Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点: + * + * 1.请不要删除和修改根目录下的LICENSE文件。 + * 2.请不要删除和修改Snowy源码头部的版权声明。 + * 3.本项目代码可免费商业使用,商业使用请保留源码和相关描述文件的项目出处,作者声明等。 + * 4.分发源码时候,请注明软件出处 https://www.xiaonuo.vip + * 5.不可二次分发开源参与同类竞品,如有想法可联系团队xiaonuobase@qq.com商议合作。 + * 6.若您的项目无法满足以上几点,需要更多功能代码,获取Snowy商业授权许可,请在官网购买授权,地址为 https://www.xiaonuo.vip + */ +package vip.xiaonuo.biz.modular.group.param; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Getter; +import lombok.Setter; + +import jakarta.validation.constraints.NotBlank; + +/** + * 用户组Id参数 + * + * @author yubaoshan + * @date 2024/12/24 03:33 + **/ +@Getter +@Setter +public class BizGroupIdParam { + + /** 主键 */ + @Schema(description = "主键", requiredMode = Schema.RequiredMode.REQUIRED) + @NotBlank(message = "id不能为空") + private String id; +} diff --git a/snowy-plugin/snowy-plugin-biz/src/main/java/vip/xiaonuo/biz/modular/group/param/BizGroupPageParam.java b/snowy-plugin/snowy-plugin-biz/src/main/java/vip/xiaonuo/biz/modular/group/param/BizGroupPageParam.java new file mode 100644 index 00000000..3ae858c1 --- /dev/null +++ b/snowy-plugin/snowy-plugin-biz/src/main/java/vip/xiaonuo/biz/modular/group/param/BizGroupPageParam.java @@ -0,0 +1,52 @@ +/* + * Copyright [2022] [https://www.xiaonuo.vip] + * + * Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点: + * + * 1.请不要删除和修改根目录下的LICENSE文件。 + * 2.请不要删除和修改Snowy源码头部的版权声明。 + * 3.本项目代码可免费商业使用,商业使用请保留源码和相关描述文件的项目出处,作者声明等。 + * 4.分发源码时候,请注明软件出处 https://www.xiaonuo.vip + * 5.不可二次分发开源参与同类竞品,如有想法可联系团队xiaonuobase@qq.com商议合作。 + * 6.若您的项目无法满足以上几点,需要更多功能代码,获取Snowy商业授权许可,请在官网购买授权,地址为 https://www.xiaonuo.vip + */ +package vip.xiaonuo.biz.modular.group.param; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Getter; +import lombok.Setter; + +/** + * 用户组查询参数 + * + * @author yubaoshan + * @date 2024/12/24 03:33 + **/ +@Getter +@Setter +public class BizGroupPageParam { + + /** 当前页 */ + @Schema(description = "当前页码") + private Integer current; + + /** 每页条数 */ + @Schema(description = "每页条数") + private Integer size; + + /** 排序字段 */ + @Schema(description = "排序字段,字段驼峰名称,如:userName") + private String sortField; + + /** 排序方式 */ + @Schema(description = "排序方式,升序:ASCEND;降序:DESCEND") + private String sortOrder; + + /** 关键词 */ + @Schema(description = "关键词") + private String searchKey; + + /** 名称 */ + @Schema(description = "名称") + private String name; +} diff --git a/snowy-plugin/snowy-plugin-biz/src/main/java/vip/xiaonuo/biz/modular/group/param/BizGroupSelectorUserParam.java b/snowy-plugin/snowy-plugin-biz/src/main/java/vip/xiaonuo/biz/modular/group/param/BizGroupSelectorUserParam.java new file mode 100644 index 00000000..3715100a --- /dev/null +++ b/snowy-plugin/snowy-plugin-biz/src/main/java/vip/xiaonuo/biz/modular/group/param/BizGroupSelectorUserParam.java @@ -0,0 +1,44 @@ +/* + * Copyright [2022] [https://www.xiaonuo.vip] + * + * Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点: + * + * 1.请不要删除和修改根目录下的LICENSE文件。 + * 2.请不要删除和修改Snowy源码头部的版权声明。 + * 3.本项目代码可免费商业使用,商业使用请保留源码和相关描述文件的项目出处,作者声明等。 + * 4.分发源码时候,请注明软件出处 https://www.xiaonuo.vip + * 5.不可二次分发开源参与同类竞品,如有想法可联系团队xiaonuobase@qq.com商议合作。 + * 6.若您的项目无法满足以上几点,需要更多功能代码,获取Snowy商业授权许可,请在官网购买授权,地址为 https://www.xiaonuo.vip + */ +package vip.xiaonuo.biz.modular.group.param; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Getter; +import lombok.Setter; + +/** + * 用户选择器参数 + * + * @author yubaoshan + * @date 2024/12/21 01:25 + **/ +@Getter +@Setter +public class BizGroupSelectorUserParam { + + /** 当前页 */ + @Schema(description = "当前页码") + private Integer current; + + /** 每页条数 */ + @Schema(description = "每页条数") + private Integer size; + + /** 组织id */ + @Schema(description = "组织id") + private String orgId; + + /** 姓名关键词 */ + @Schema(description = "姓名关键词") + private String searchKey; +} diff --git a/snowy-plugin/snowy-plugin-biz/src/main/java/vip/xiaonuo/biz/modular/group/service/BizGroupService.java b/snowy-plugin/snowy-plugin-biz/src/main/java/vip/xiaonuo/biz/modular/group/service/BizGroupService.java new file mode 100644 index 00000000..ce6fcc81 --- /dev/null +++ b/snowy-plugin/snowy-plugin-biz/src/main/java/vip/xiaonuo/biz/modular/group/service/BizGroupService.java @@ -0,0 +1,111 @@ +/* + * Copyright [2022] [https://www.xiaonuo.vip] + * + * Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点: + * + * 1.请不要删除和修改根目录下的LICENSE文件。 + * 2.请不要删除和修改Snowy源码头部的版权声明。 + * 3.本项目代码可免费商业使用,商业使用请保留源码和相关描述文件的项目出处,作者声明等。 + * 4.分发源码时候,请注明软件出处 https://www.xiaonuo.vip + * 5.不可二次分发开源参与同类竞品,如有想法可联系团队xiaonuobase@qq.com商议合作。 + * 6.若您的项目无法满足以上几点,需要更多功能代码,获取Snowy商业授权许可,请在官网购买授权,地址为 https://www.xiaonuo.vip + */ +package vip.xiaonuo.biz.modular.group.service; + +import cn.hutool.core.lang.tree.Tree; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.IService; +import vip.xiaonuo.biz.modular.group.entity.BizGroup; +import vip.xiaonuo.biz.modular.group.param.*; +import vip.xiaonuo.biz.modular.user.entity.BizUser; + +import java.util.List; + +/** + * 用户组Service接口 + * + * @author yubaoshan + * @date 2024/12/24 03:33 + **/ +public interface BizGroupService extends IService { + + /** + * 获取用户组分页 + * + * @author yubaoshan + * @date 2024/12/24 03:33 + */ + Page page(BizGroupPageParam bizGroupPageParam); + + /** + * 添加用户组 + * + * @author yubaoshan + * @date 2024/12/24 03:33 + */ + void add(BizGroupAddParam bizGroupAddParam); + + /** + * 编辑用户组 + * + * @author yubaoshan + * @date 2024/12/24 03:33 + */ + void edit(BizGroupEditParam bizGroupEditParam); + + /** + * 删除用户组 + * + * @author yubaoshan + * @date 2024/12/24 03:33 + */ + void delete(List bizGroupIdParamList); + + /** + * 获取用户组详情 + * + * @author yubaoshan + * @date 2024/12/24 03:33 + */ + BizGroup detail(BizGroupIdParam bizGroupIdParam); + + /** + * 获取用户组详情 + * + * @author yubaoshan + * @date 2024/12/24 03:33 + **/ + BizGroup queryEntity(String id); + + /** + * 获取用户组下的用户 + * + * @author yubaoshan + * @date 2024/12/21 01:25 + */ + List ownUser(BizGroupIdParam sysGroupIdParam); + + /** + * 获取机构树选择器 + * + * @author yubaoshan + * @date 2024/12/21 01:25 + */ + List> orgTreeSelector(); + + /** + * 获取用户选择器 + * + * @author yubaoshan + * @date 2024/12/21 01:25 + */ + Page userSelector(BizGroupSelectorUserParam bizGroupSelectorUserParam); + + /** + * 给用户组授权用户 + * + * @author yubaoshan + * @date 2024/12/21 01:25 + */ + void grantUser(BizGroupGrantUserParam bizGroupGrantUserParam); +} diff --git a/snowy-plugin/snowy-plugin-biz/src/main/java/vip/xiaonuo/biz/modular/group/service/impl/BizGroupServiceImpl.java b/snowy-plugin/snowy-plugin-biz/src/main/java/vip/xiaonuo/biz/modular/group/service/impl/BizGroupServiceImpl.java new file mode 100644 index 00000000..a178abe8 --- /dev/null +++ b/snowy-plugin/snowy-plugin-biz/src/main/java/vip/xiaonuo/biz/modular/group/service/impl/BizGroupServiceImpl.java @@ -0,0 +1,178 @@ +/* + * Copyright [2022] [https://www.xiaonuo.vip] + * + * Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点: + * + * 1.请不要删除和修改根目录下的LICENSE文件。 + * 2.请不要删除和修改Snowy源码头部的版权声明。 + * 3.本项目代码可免费商业使用,商业使用请保留源码和相关描述文件的项目出处,作者声明等。 + * 4.分发源码时候,请注明软件出处 https://www.xiaonuo.vip + * 5.不可二次分发开源参与同类竞品,如有想法可联系团队xiaonuobase@qq.com商议合作。 + * 6.若您的项目无法满足以上几点,需要更多功能代码,获取Snowy商业授权许可,请在官网购买授权,地址为 https://www.xiaonuo.vip + */ +package vip.xiaonuo.biz.modular.group.service.impl; + +import cn.hutool.core.bean.BeanUtil; +import cn.hutool.core.collection.CollStreamUtil; +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.lang.tree.Tree; +import cn.hutool.core.lang.tree.TreeNode; +import cn.hutool.core.lang.tree.TreeUtil; +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; +import cn.hutool.json.JSONUtil; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import jakarta.annotation.Resource; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; +import vip.xiaonuo.auth.core.util.StpLoginUserUtil; +import vip.xiaonuo.biz.modular.group.param.*; +import vip.xiaonuo.biz.modular.org.entity.BizOrg; +import vip.xiaonuo.biz.modular.org.service.BizOrgService; +import vip.xiaonuo.biz.modular.user.entity.BizUser; +import vip.xiaonuo.biz.modular.user.service.BizUserService; +import vip.xiaonuo.common.enums.CommonSortOrderEnum; +import vip.xiaonuo.common.exception.CommonException; +import vip.xiaonuo.common.page.CommonPageRequest; +import vip.xiaonuo.biz.modular.group.entity.BizGroup; +import vip.xiaonuo.biz.modular.group.mapper.BizGroupMapper; +import vip.xiaonuo.biz.modular.group.service.BizGroupService; +import vip.xiaonuo.sys.api.SysGroupApi; + +import java.util.List; +import java.util.Set; +import java.util.stream.Collectors; + +/** + * 用户组Service接口实现类 + * + * @author yubaoshan + * @date 2024/12/24 03:33 + **/ +@Service +public class BizGroupServiceImpl extends ServiceImpl implements BizGroupService { + + @Resource + private SysGroupApi sysGroupApi; + + @Resource + private BizUserService bizUserService; + + @Resource + private BizOrgService bizOrgService; + + @Override + public Page page(BizGroupPageParam bizGroupPageParam) { + QueryWrapper queryWrapper = new QueryWrapper().checkSqlInjection(); + if(ObjectUtil.isNotEmpty(bizGroupPageParam.getName())) { + queryWrapper.lambda().like(BizGroup::getName, bizGroupPageParam.getName()); + } + if(ObjectUtil.isAllNotEmpty(bizGroupPageParam.getSortField(), bizGroupPageParam.getSortOrder())) { + CommonSortOrderEnum.validate(bizGroupPageParam.getSortOrder()); + queryWrapper.orderBy(true, bizGroupPageParam.getSortOrder().equals(CommonSortOrderEnum.ASC.getValue()), + StrUtil.toUnderlineCase(bizGroupPageParam.getSortField())); + } else { + queryWrapper.lambda().orderByAsc(BizGroup::getSortCode); + } + return this.page(CommonPageRequest.defaultPage(), queryWrapper); + } + + @Transactional(rollbackFor = Exception.class) + @Override + public void add(BizGroupAddParam bizGroupAddParam) { + BizGroup bizGroup = BeanUtil.toBean(bizGroupAddParam, BizGroup.class); + this.save(bizGroup); + } + + @Transactional(rollbackFor = Exception.class) + @Override + public void edit(BizGroupEditParam bizGroupEditParam) { + BizGroup bizGroup = this.queryEntity(bizGroupEditParam.getId()); + BeanUtil.copyProperties(bizGroupEditParam, bizGroup); + this.updateById(bizGroup); + } + + @Transactional(rollbackFor = Exception.class) + @Override + public void delete(List bizGroupIdParamList) { + // 执行删除 + this.removeByIds(CollStreamUtil.toList(bizGroupIdParamList, BizGroupIdParam::getId)); + } + + @Override + public BizGroup detail(BizGroupIdParam bizGroupIdParam) { + return this.queryEntity(bizGroupIdParam.getId()); + } + + @Override + public BizGroup queryEntity(String id) { + BizGroup bizGroup = this.getById(id); + if(ObjectUtil.isEmpty(bizGroup)) { + throw new CommonException("用户组不存在,id值为:{}", id); + } + return bizGroup; + } + + @Override + public List ownUser(BizGroupIdParam sysGroupIdParam) { + return sysGroupApi.ownUser(sysGroupIdParam.getId()); + } + + @Override + public List> orgTreeSelector() { + // 获取所有机构 + List allOrgList = bizOrgService.list(); + // 定义机构集合 + Set bizOrgSet = CollectionUtil.newHashSet(); + // 校验数据范围 + List loginUserDataScope = StpLoginUserUtil.getLoginUserDataScope(); + if(ObjectUtil.isNotEmpty(loginUserDataScope)) { + loginUserDataScope.forEach(orgId -> bizOrgSet.addAll(bizOrgService.getParentListById(allOrgList, orgId, true))); + } else { + return CollectionUtil.newArrayList(); + } + List> treeNodeList = bizOrgSet.stream().map(bizOrg -> + new TreeNode<>(bizOrg.getId(), bizOrg.getParentId(), + bizOrg.getName(), bizOrg.getSortCode()).setExtra(JSONUtil.parseObj(bizOrg))) + .collect(Collectors.toList()); + return TreeUtil.build(treeNodeList, "0"); + } + + @Override + public Page userSelector(BizGroupSelectorUserParam bizGroupSelectorUserParam) { + LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper<>(); + // 校验数据范围 + List loginUserDataScope = StpLoginUserUtil.getLoginUserDataScope(); + if(ObjectUtil.isNotEmpty(loginUserDataScope)) { + lambdaQueryWrapper.in(BizUser::getOrgId, loginUserDataScope); + } else { + return new Page<>(); + } + // 只查询部分字段 + lambdaQueryWrapper.select(BizUser::getId, BizUser::getAvatar, BizUser::getOrgId, BizUser::getPositionId, BizUser::getAccount, + BizUser::getName, BizUser::getSortCode, BizUser::getGender, BizUser::getEntryDate); + if (ObjectUtil.isNotEmpty(bizGroupSelectorUserParam.getOrgId())) { + // 如果机构id不为空,则查询该机构及其子机构下的所有人 + List childOrgIdList = CollStreamUtil.toList(bizOrgService.getChildListById(bizOrgService + .getAllOrgList(), bizGroupSelectorUserParam.getOrgId(), true), BizOrg::getId); + if (ObjectUtil.isNotEmpty(childOrgIdList)) { + lambdaQueryWrapper.in(BizUser::getOrgId, childOrgIdList); + } else { + return new Page<>(); + } + } + if(ObjectUtil.isNotEmpty(bizGroupSelectorUserParam.getSearchKey())) { + lambdaQueryWrapper.like(BizUser::getName, bizGroupSelectorUserParam.getSearchKey()); + } + lambdaQueryWrapper.orderByAsc(BizUser::getSortCode); + return bizUserService.page(CommonPageRequest.defaultPage(), lambdaQueryWrapper); + } + + @Override + public void grantUser(BizGroupGrantUserParam bizGroupGrantUserParam) { + sysGroupApi.grantUser(bizGroupGrantUserParam.getId(), bizGroupGrantUserParam.getGrantInfoList()); + } +} diff --git a/snowy-plugin/snowy-plugin-sys/src/main/java/vip/xiaonuo/sys/modular/group/controller/SysGroupController.java b/snowy-plugin/snowy-plugin-sys/src/main/java/vip/xiaonuo/sys/modular/group/controller/SysGroupController.java new file mode 100644 index 00000000..ab1411e6 --- /dev/null +++ b/snowy-plugin/snowy-plugin-sys/src/main/java/vip/xiaonuo/sys/modular/group/controller/SysGroupController.java @@ -0,0 +1,166 @@ +/* + * Copyright [2022] [https://www.xiaonuo.vip] + * + * Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点: + * + * 1.请不要删除和修改根目录下的LICENSE文件。 + * 2.请不要删除和修改Snowy源码头部的版权声明。 + * 3.本项目代码可免费商业使用,商业使用请保留源码和相关描述文件的项目出处,作者声明等。 + * 4.分发源码时候,请注明软件出处 https://www.xiaonuo.vip + * 5.不可二次分发开源参与同类竞品,如有想法可联系团队xiaonuobase@qq.com商议合作。 + * 6.若您的项目无法满足以上几点,需要更多功能代码,获取Snowy商业授权许可,请在官网购买授权,地址为 https://www.xiaonuo.vip + */ +package vip.xiaonuo.sys.modular.group.controller; + +import cn.hutool.core.lang.tree.Tree; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import io.swagger.v3.oas.annotations.tags.Tag; +import io.swagger.v3.oas.annotations.Operation; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RestController; +import vip.xiaonuo.common.annotation.CommonLog; +import vip.xiaonuo.common.pojo.CommonResult; +import vip.xiaonuo.sys.modular.group.entity.SysGroup; +import vip.xiaonuo.sys.modular.group.param.*; +import vip.xiaonuo.sys.modular.group.service.SysGroupService; +import jakarta.annotation.Resource; +import jakarta.validation.Valid; +import jakarta.validation.constraints.NotEmpty; +import vip.xiaonuo.sys.modular.user.entity.SysUser; + +import java.util.List; + +/** + * 用户组控制器 + * + * @author yubaoshan + * @date 2024/12/21 01:25 + */ +@Tag(name = "用户组控制器") +@RestController +@Validated +public class SysGroupController { + + @Resource + private SysGroupService sysGroupService; + + /** + * 获取用户组分页 + * + * @author yubaoshan + * @date 2024/12/21 01:25 + */ + @Operation(summary = "获取用户组分页") + @GetMapping("/sys/group/page") + public CommonResult> page(SysGroupPageParam sysGroupPageParam) { + return CommonResult.data(sysGroupService.page(sysGroupPageParam)); + } + + /** + * 添加用户组 + * + * @author yubaoshan + * @date 2024/12/21 01:25 + */ + @Operation(summary = "添加用户组") + @CommonLog("添加用户组") + @PostMapping("/sys/group/add") + public CommonResult add(@RequestBody @Valid SysGroupAddParam sysGroupAddParam) { + sysGroupService.add(sysGroupAddParam); + return CommonResult.ok(); + } + + /** + * 编辑用户组 + * + * @author yubaoshan + * @date 2024/12/21 01:25 + */ + @Operation(summary = "编辑用户组") + @CommonLog("编辑用户组") + @PostMapping("/sys/group/edit") + public CommonResult edit(@RequestBody @Valid SysGroupEditParam sysGroupEditParam) { + sysGroupService.edit(sysGroupEditParam); + return CommonResult.ok(); + } + + /** + * 删除用户组 + * + * @author yubaoshan + * @date 2024/12/21 01:25 + */ + @Operation(summary = "删除用户组") + @CommonLog("删除用户组") + @PostMapping("/sys/group/delete") + public CommonResult delete(@RequestBody @Valid @NotEmpty(message = "集合不能为空") + List sysGroupIdParamList) { + sysGroupService.delete(sysGroupIdParamList); + return CommonResult.ok(); + } + + /** + * 获取用户组详情 + * + * @author yubaoshan + * @date 2024/12/21 01:25 + */ + @Operation(summary = "获取用户组详情") + @GetMapping("/sys/group/detail") + public CommonResult detail(@Valid SysGroupIdParam sysGroupIdParam) { + return CommonResult.data(sysGroupService.detail(sysGroupIdParam)); + } + + /** + * 获取用户组下的用户 + * + * @author yubaoshan + * @date 2024/12/21 01:25 + */ + @Operation(summary = "获取用户组下的用户") + @GetMapping("/sys/group/ownUser") + public CommonResult> ownUser(@Valid SysGroupIdParam sysGroupIdParam) { + return CommonResult.data(sysGroupService.ownUser(sysGroupIdParam)); + } + + /** + * 获取组织树选择器 + * + * @author yubaoshan + * @date 2024/12/21 01:25 + */ + @Operation(summary = "获取组织树选择器") + @GetMapping("/sys/group/orgTreeSelector") + public CommonResult>> orgTreeSelector() { + return CommonResult.data(sysGroupService.orgTreeSelector()); + } + + /** + * 获取用户选择器 + * + * @author yubaoshan + * @date 2024/12/21 01:25 + */ + @Operation(summary = "获取用户选择器") + @GetMapping("/sys/group/userSelector") + public CommonResult> userSelector(SysGroupSelectorUserParam sysGroupSelectorUserParam) { + return CommonResult.data(sysGroupService.userSelector(sysGroupSelectorUserParam)); + } + + /** + * 给用户组授权用户 + * + * @author yubaoshan + * @date 2024/12/21 01:25 + */ + @Operation(summary = "给用户组授权用户") + @CommonLog("给用户组授权用户") + @PostMapping("/sys/group/grantUser") + public CommonResult grantUser(@RequestBody @Valid SysGroupGrantUserParam sysGroupGrantUserParam) { + sysGroupService.grantUser(sysGroupGrantUserParam); + return CommonResult.ok(); + } +} diff --git a/snowy-plugin/snowy-plugin-sys/src/main/java/vip/xiaonuo/sys/modular/group/entity/SysGroup.java b/snowy-plugin/snowy-plugin-sys/src/main/java/vip/xiaonuo/sys/modular/group/entity/SysGroup.java new file mode 100644 index 00000000..60bd0a90 --- /dev/null +++ b/snowy-plugin/snowy-plugin-sys/src/main/java/vip/xiaonuo/sys/modular/group/entity/SysGroup.java @@ -0,0 +1,53 @@ +/* + * Copyright [2022] [https://www.xiaonuo.vip] + * + * Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点: + * + * 1.请不要删除和修改根目录下的LICENSE文件。 + * 2.请不要删除和修改Snowy源码头部的版权声明。 + * 3.本项目代码可免费商业使用,商业使用请保留源码和相关描述文件的项目出处,作者声明等。 + * 4.分发源码时候,请注明软件出处 https://www.xiaonuo.vip + * 5.不可二次分发开源参与同类竞品,如有想法可联系团队xiaonuobase@qq.com商议合作。 + * 6.若您的项目无法满足以上几点,需要更多功能代码,获取Snowy商业授权许可,请在官网购买授权,地址为 https://www.xiaonuo.vip + */ +package vip.xiaonuo.sys.modular.group.entity; + +import com.baomidou.mybatisplus.annotation.*; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Getter; +import lombok.Setter; +import vip.xiaonuo.common.pojo.CommonEntity; + + +/** + * 用户组实体 + * + * @author yubaoshan + * @date 2024/12/21 01:25 + **/ +@Getter +@Setter +@TableName("SYS_GROUP") +public class SysGroup extends CommonEntity { + + /** 主键 */ + @TableId + @Schema(description = "主键") + private String id; + + /** 名称 */ + @Schema(description = "名称") + private String name; + + /** 备注 */ + @Schema(description = "备注") + private String remark; + + /** 排序码 */ + @Schema(description = "排序码") + private Integer sortCode; + + /** 扩展信息 */ + @Schema(description = "扩展信息") + private String extJson; +} diff --git a/snowy-plugin/snowy-plugin-sys/src/main/java/vip/xiaonuo/sys/modular/group/enums/SysGroupEnum.java b/snowy-plugin/snowy-plugin-sys/src/main/java/vip/xiaonuo/sys/modular/group/enums/SysGroupEnum.java new file mode 100644 index 00000000..37cbaab8 --- /dev/null +++ b/snowy-plugin/snowy-plugin-sys/src/main/java/vip/xiaonuo/sys/modular/group/enums/SysGroupEnum.java @@ -0,0 +1,34 @@ +/* + * Copyright [2022] [https://www.xiaonuo.vip] + * + * Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点: + * + * 1.请不要删除和修改根目录下的LICENSE文件。 + * 2.请不要删除和修改Snowy源码头部的版权声明。 + * 3.本项目代码可免费商业使用,商业使用请保留源码和相关描述文件的项目出处,作者声明等。 + * 4.分发源码时候,请注明软件出处 https://www.xiaonuo.vip + * 5.不可二次分发开源参与同类竞品,如有想法可联系团队xiaonuobase@qq.com商议合作。 + * 6.若您的项目无法满足以上几点,需要更多功能代码,获取Snowy商业授权许可,请在官网购买授权,地址为 https://www.xiaonuo.vip + */ +package vip.xiaonuo.sys.modular.group.enums; + +import lombok.Getter; + +/** + * 用户组枚举 + * + * @author yubaoshan + * @date 2024/12/21 01:25 + **/ +@Getter +public enum SysGroupEnum { + + /** 测试 */ + TEST("TEST"); + + private final String value; + + SysGroupEnum(String value) { + this.value = value; + } +} diff --git a/snowy-plugin/snowy-plugin-sys/src/main/java/vip/xiaonuo/sys/modular/group/mapper/SysGroupMapper.java b/snowy-plugin/snowy-plugin-sys/src/main/java/vip/xiaonuo/sys/modular/group/mapper/SysGroupMapper.java new file mode 100644 index 00000000..6454f138 --- /dev/null +++ b/snowy-plugin/snowy-plugin-sys/src/main/java/vip/xiaonuo/sys/modular/group/mapper/SysGroupMapper.java @@ -0,0 +1,25 @@ +/* + * Copyright [2022] [https://www.xiaonuo.vip] + * + * Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点: + * + * 1.请不要删除和修改根目录下的LICENSE文件。 + * 2.请不要删除和修改Snowy源码头部的版权声明。 + * 3.本项目代码可免费商业使用,商业使用请保留源码和相关描述文件的项目出处,作者声明等。 + * 4.分发源码时候,请注明软件出处 https://www.xiaonuo.vip + * 5.不可二次分发开源参与同类竞品,如有想法可联系团队xiaonuobase@qq.com商议合作。 + * 6.若您的项目无法满足以上几点,需要更多功能代码,获取Snowy商业授权许可,请在官网购买授权,地址为 https://www.xiaonuo.vip + */ +package vip.xiaonuo.sys.modular.group.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import vip.xiaonuo.sys.modular.group.entity.SysGroup; + +/** + * 用户组Mapper接口 + * + * @author yubaoshan + * @date 2024/12/21 01:25 + **/ +public interface SysGroupMapper extends BaseMapper { +} diff --git a/snowy-plugin/snowy-plugin-sys/src/main/java/vip/xiaonuo/sys/modular/group/mapper/mapping/SysGroupMapper.xml b/snowy-plugin/snowy-plugin-sys/src/main/java/vip/xiaonuo/sys/modular/group/mapper/mapping/SysGroupMapper.xml new file mode 100644 index 00000000..4534cb42 --- /dev/null +++ b/snowy-plugin/snowy-plugin-sys/src/main/java/vip/xiaonuo/sys/modular/group/mapper/mapping/SysGroupMapper.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/snowy-plugin/snowy-plugin-sys/src/main/java/vip/xiaonuo/sys/modular/group/param/SysGroupAddParam.java b/snowy-plugin/snowy-plugin-sys/src/main/java/vip/xiaonuo/sys/modular/group/param/SysGroupAddParam.java new file mode 100644 index 00000000..354a8ab9 --- /dev/null +++ b/snowy-plugin/snowy-plugin-sys/src/main/java/vip/xiaonuo/sys/modular/group/param/SysGroupAddParam.java @@ -0,0 +1,45 @@ +/* + * Copyright [2022] [https://www.xiaonuo.vip] + * + * Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点: + * + * 1.请不要删除和修改根目录下的LICENSE文件。 + * 2.请不要删除和修改Snowy源码头部的版权声明。 + * 3.本项目代码可免费商业使用,商业使用请保留源码和相关描述文件的项目出处,作者声明等。 + * 4.分发源码时候,请注明软件出处 https://www.xiaonuo.vip + * 5.不可二次分发开源参与同类竞品,如有想法可联系团队xiaonuobase@qq.com商议合作。 + * 6.若您的项目无法满足以上几点,需要更多功能代码,获取Snowy商业授权许可,请在官网购买授权,地址为 https://www.xiaonuo.vip + */ +package vip.xiaonuo.sys.modular.group.param; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Getter; +import lombok.Setter; +import jakarta.validation.constraints.NotBlank; +import jakarta.validation.constraints.NotNull; + +/** + * 用户组添加参数 + * + * @author yubaoshan + * @date 2024/12/21 01:25 + **/ +@Getter +@Setter +public class SysGroupAddParam { + + /** 名称 */ + @Schema(description = "名称", requiredMode = Schema.RequiredMode.REQUIRED) + @NotBlank(message = "name不能为空") + private String name; + + /** 备注 */ + @Schema(description = "备注") + private String remark; + + /** 排序码 */ + @Schema(description = "排序码", requiredMode = Schema.RequiredMode.REQUIRED) + @NotNull(message = "sortCode不能为空") + private Integer sortCode; + +} diff --git a/snowy-plugin/snowy-plugin-sys/src/main/java/vip/xiaonuo/sys/modular/group/param/SysGroupEditParam.java b/snowy-plugin/snowy-plugin-sys/src/main/java/vip/xiaonuo/sys/modular/group/param/SysGroupEditParam.java new file mode 100644 index 00000000..efdc7bdd --- /dev/null +++ b/snowy-plugin/snowy-plugin-sys/src/main/java/vip/xiaonuo/sys/modular/group/param/SysGroupEditParam.java @@ -0,0 +1,50 @@ +/* + * Copyright [2022] [https://www.xiaonuo.vip] + * + * Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点: + * + * 1.请不要删除和修改根目录下的LICENSE文件。 + * 2.请不要删除和修改Snowy源码头部的版权声明。 + * 3.本项目代码可免费商业使用,商业使用请保留源码和相关描述文件的项目出处,作者声明等。 + * 4.分发源码时候,请注明软件出处 https://www.xiaonuo.vip + * 5.不可二次分发开源参与同类竞品,如有想法可联系团队xiaonuobase@qq.com商议合作。 + * 6.若您的项目无法满足以上几点,需要更多功能代码,获取Snowy商业授权许可,请在官网购买授权,地址为 https://www.xiaonuo.vip + */ +package vip.xiaonuo.sys.modular.group.param; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Getter; +import lombok.Setter; +import jakarta.validation.constraints.NotBlank; +import jakarta.validation.constraints.NotNull; + +/** + * 用户组编辑参数 + * + * @author yubaoshan + * @date 2024/12/21 01:25 + **/ +@Getter +@Setter +public class SysGroupEditParam { + + /** 主键 */ + @Schema(description = "主键", requiredMode = Schema.RequiredMode.REQUIRED) + @NotBlank(message = "id不能为空") + private String id; + + /** 名称 */ + @Schema(description = "名称", requiredMode = Schema.RequiredMode.REQUIRED) + @NotBlank(message = "name不能为空") + private String name; + + /** 备注 */ + @Schema(description = "备注") + private String remark; + + /** 排序码 */ + @Schema(description = "排序码", requiredMode = Schema.RequiredMode.REQUIRED) + @NotNull(message = "sortCode不能为空") + private Integer sortCode; + +} diff --git a/snowy-plugin/snowy-plugin-sys/src/main/java/vip/xiaonuo/sys/modular/group/param/SysGroupGrantUserParam.java b/snowy-plugin/snowy-plugin-sys/src/main/java/vip/xiaonuo/sys/modular/group/param/SysGroupGrantUserParam.java new file mode 100644 index 00000000..4088b995 --- /dev/null +++ b/snowy-plugin/snowy-plugin-sys/src/main/java/vip/xiaonuo/sys/modular/group/param/SysGroupGrantUserParam.java @@ -0,0 +1,42 @@ +/* + * Copyright [2022] [https://www.xiaonuo.vip] + * + * Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点: + * + * 1.请不要删除和修改根目录下的LICENSE文件。 + * 2.请不要删除和修改Snowy源码头部的版权声明。 + * 3.本项目代码可免费商业使用,商业使用请保留源码和相关描述文件的项目出处,作者声明等。 + * 4.分发源码时候,请注明软件出处 https://www.xiaonuo.vip + * 5.不可二次分发开源参与同类竞品,如有想法可联系团队xiaonuobase@qq.com商议合作。 + * 6.若您的项目无法满足以上几点,需要更多功能代码,获取Snowy商业授权许可,请在官网购买授权,地址为 https://www.xiaonuo.vip + */ +package vip.xiaonuo.sys.modular.group.param; + +import io.swagger.v3.oas.annotations.media.Schema; +import jakarta.validation.constraints.NotBlank; +import jakarta.validation.constraints.NotNull; +import lombok.Getter; +import lombok.Setter; + +import java.util.List; + +/** + * 用户组授权用户参数 + * + * @author yubaoshan + * @date 2024/12/21 01:25 + **/ +@Getter +@Setter +public class SysGroupGrantUserParam { + + /** 用户组id */ + @Schema(description = "用户组id", requiredMode = Schema.RequiredMode.REQUIRED) + @NotBlank(message = "id不能为空") + private String id; + + /** 授权用户信息 */ + @Schema(description = "授权用户信息", requiredMode = Schema.RequiredMode.REQUIRED) + @NotNull(message = "grantInfoList不能为空") + private List grantInfoList; +} diff --git a/snowy-plugin/snowy-plugin-sys/src/main/java/vip/xiaonuo/sys/modular/group/param/SysGroupIdParam.java b/snowy-plugin/snowy-plugin-sys/src/main/java/vip/xiaonuo/sys/modular/group/param/SysGroupIdParam.java new file mode 100644 index 00000000..1ffbcc69 --- /dev/null +++ b/snowy-plugin/snowy-plugin-sys/src/main/java/vip/xiaonuo/sys/modular/group/param/SysGroupIdParam.java @@ -0,0 +1,34 @@ +/* + * Copyright [2022] [https://www.xiaonuo.vip] + * + * Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点: + * + * 1.请不要删除和修改根目录下的LICENSE文件。 + * 2.请不要删除和修改Snowy源码头部的版权声明。 + * 3.本项目代码可免费商业使用,商业使用请保留源码和相关描述文件的项目出处,作者声明等。 + * 4.分发源码时候,请注明软件出处 https://www.xiaonuo.vip + * 5.不可二次分发开源参与同类竞品,如有想法可联系团队xiaonuobase@qq.com商议合作。 + * 6.若您的项目无法满足以上几点,需要更多功能代码,获取Snowy商业授权许可,请在官网购买授权,地址为 https://www.xiaonuo.vip + */ +package vip.xiaonuo.sys.modular.group.param; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Getter; +import lombok.Setter; +import jakarta.validation.constraints.NotBlank; + +/** + * 用户组Id参数 + * + * @author yubaoshan + * @date 2024/12/21 01:25 + **/ +@Getter +@Setter +public class SysGroupIdParam { + + /** 主键 */ + @Schema(description = "主键", requiredMode = Schema.RequiredMode.REQUIRED) + @NotBlank(message = "id不能为空") + private String id; +} diff --git a/snowy-plugin/snowy-plugin-sys/src/main/java/vip/xiaonuo/sys/modular/group/param/SysGroupPageParam.java b/snowy-plugin/snowy-plugin-sys/src/main/java/vip/xiaonuo/sys/modular/group/param/SysGroupPageParam.java new file mode 100644 index 00000000..3653d12b --- /dev/null +++ b/snowy-plugin/snowy-plugin-sys/src/main/java/vip/xiaonuo/sys/modular/group/param/SysGroupPageParam.java @@ -0,0 +1,53 @@ +/* + * Copyright [2022] [https://www.xiaonuo.vip] + * + * Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点: + * + * 1.请不要删除和修改根目录下的LICENSE文件。 + * 2.请不要删除和修改Snowy源码头部的版权声明。 + * 3.本项目代码可免费商业使用,商业使用请保留源码和相关描述文件的项目出处,作者声明等。 + * 4.分发源码时候,请注明软件出处 https://www.xiaonuo.vip + * 5.不可二次分发开源参与同类竞品,如有想法可联系团队xiaonuobase@qq.com商议合作。 + * 6.若您的项目无法满足以上几点,需要更多功能代码,获取Snowy商业授权许可,请在官网购买授权,地址为 https://www.xiaonuo.vip + */ +package vip.xiaonuo.sys.modular.group.param; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Getter; +import lombok.Setter; + +/** + * 用户组查询参数 + * + * @author yubaoshan + * @date 2024/12/21 01:25 + **/ +@Getter +@Setter +public class SysGroupPageParam { + + /** 当前页 */ + @Schema(description = "当前页码") + private Integer current; + + /** 每页条数 */ + @Schema(description = "每页条数") + private Integer size; + + /** 排序字段 */ + @Schema(description = "排序字段,字段驼峰名称,如:userName") + private String sortField; + + /** 排序方式 */ + @Schema(description = "排序方式,升序:ASCEND;降序:DESCEND") + private String sortOrder; + + /** 关键词 */ + @Schema(description = "关键词") + private String searchKey; + + /** 名称 */ + @Schema(description = "名称") + private String name; + +} diff --git a/snowy-plugin/snowy-plugin-sys/src/main/java/vip/xiaonuo/sys/modular/group/param/SysGroupSelectorUserParam.java b/snowy-plugin/snowy-plugin-sys/src/main/java/vip/xiaonuo/sys/modular/group/param/SysGroupSelectorUserParam.java new file mode 100644 index 00000000..72fb4722 --- /dev/null +++ b/snowy-plugin/snowy-plugin-sys/src/main/java/vip/xiaonuo/sys/modular/group/param/SysGroupSelectorUserParam.java @@ -0,0 +1,44 @@ +/* + * Copyright [2022] [https://www.xiaonuo.vip] + * + * Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点: + * + * 1.请不要删除和修改根目录下的LICENSE文件。 + * 2.请不要删除和修改Snowy源码头部的版权声明。 + * 3.本项目代码可免费商业使用,商业使用请保留源码和相关描述文件的项目出处,作者声明等。 + * 4.分发源码时候,请注明软件出处 https://www.xiaonuo.vip + * 5.不可二次分发开源参与同类竞品,如有想法可联系团队xiaonuobase@qq.com商议合作。 + * 6.若您的项目无法满足以上几点,需要更多功能代码,获取Snowy商业授权许可,请在官网购买授权,地址为 https://www.xiaonuo.vip + */ +package vip.xiaonuo.sys.modular.group.param; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Getter; +import lombok.Setter; + +/** + * 用户选择器参数 + * + * @author yubaoshan + * @date 2024/12/21 01:25 + **/ +@Getter +@Setter +public class SysGroupSelectorUserParam { + + /** 当前页 */ + @Schema(description = "当前页码") + private Integer current; + + /** 每页条数 */ + @Schema(description = "每页条数") + private Integer size; + + /** 组织id */ + @Schema(description = "组织id") + private String orgId; + + /** 姓名关键词 */ + @Schema(description = "姓名关键词") + private String searchKey; +} diff --git a/snowy-plugin/snowy-plugin-sys/src/main/java/vip/xiaonuo/sys/modular/group/provider/SysGroupApiProvider.java b/snowy-plugin/snowy-plugin-sys/src/main/java/vip/xiaonuo/sys/modular/group/provider/SysGroupApiProvider.java new file mode 100644 index 00000000..00188fe7 --- /dev/null +++ b/snowy-plugin/snowy-plugin-sys/src/main/java/vip/xiaonuo/sys/modular/group/provider/SysGroupApiProvider.java @@ -0,0 +1,49 @@ +/* + * Copyright [2022] [https://www.xiaonuo.vip] + * + * Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点: + * + * 1.请不要删除和修改根目录下的LICENSE文件。 + * 2.请不要删除和修改Snowy源码头部的版权声明。 + * 3.本项目代码可免费商业使用,商业使用请保留源码和相关描述文件的项目出处,作者声明等。 + * 4.分发源码时候,请注明软件出处 https://www.xiaonuo.vip + * 5.不可二次分发开源参与同类竞品,如有想法可联系团队xiaonuobase@qq.com商议合作。 + * 6.若您的项目无法满足以上几点,需要更多功能代码,获取Snowy商业授权许可,请在官网购买授权,地址为 https://www.xiaonuo.vip + */ +package vip.xiaonuo.sys.modular.group.provider; + +import jakarta.annotation.Resource; +import org.springframework.stereotype.Service; +import vip.xiaonuo.sys.api.SysGroupApi; +import vip.xiaonuo.sys.modular.group.param.SysGroupGrantUserParam; +import vip.xiaonuo.sys.modular.group.param.SysGroupIdParam; +import vip.xiaonuo.sys.modular.group.service.SysGroupService; +import java.util.List; + +/** + * 用户组API接口提供者 + * + * @author yubaoshan + * @date 2024/12/21 01:25 + **/ +@Service +public class SysGroupApiProvider implements SysGroupApi { + + @Resource + private SysGroupService sysGroupService; + + @Override + public List ownUser(String groupId) { + SysGroupIdParam sysGroupIdParam = new SysGroupIdParam(); + sysGroupIdParam.setId(groupId); + return sysGroupService.ownUser(sysGroupIdParam); + } + + @Override + public void grantUser(String groupId, List userIdList) { + SysGroupGrantUserParam sysGroupGrantUserParam = new SysGroupGrantUserParam(); + sysGroupGrantUserParam.setId(groupId); + sysGroupGrantUserParam.setGrantInfoList(userIdList); + sysGroupService.grantUser(sysGroupGrantUserParam); + } +} diff --git a/snowy-plugin/snowy-plugin-sys/src/main/java/vip/xiaonuo/sys/modular/group/service/SysGroupService.java b/snowy-plugin/snowy-plugin-sys/src/main/java/vip/xiaonuo/sys/modular/group/service/SysGroupService.java new file mode 100644 index 00000000..dddb583b --- /dev/null +++ b/snowy-plugin/snowy-plugin-sys/src/main/java/vip/xiaonuo/sys/modular/group/service/SysGroupService.java @@ -0,0 +1,111 @@ +/* + * Copyright [2022] [https://www.xiaonuo.vip] + * + * Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点: + * + * 1.请不要删除和修改根目录下的LICENSE文件。 + * 2.请不要删除和修改Snowy源码头部的版权声明。 + * 3.本项目代码可免费商业使用,商业使用请保留源码和相关描述文件的项目出处,作者声明等。 + * 4.分发源码时候,请注明软件出处 https://www.xiaonuo.vip + * 5.不可二次分发开源参与同类竞品,如有想法可联系团队xiaonuobase@qq.com商议合作。 + * 6.若您的项目无法满足以上几点,需要更多功能代码,获取Snowy商业授权许可,请在官网购买授权,地址为 https://www.xiaonuo.vip + */ +package vip.xiaonuo.sys.modular.group.service; + +import cn.hutool.core.lang.tree.Tree; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.IService; +import vip.xiaonuo.sys.modular.group.entity.SysGroup; +import vip.xiaonuo.sys.modular.group.param.*; +import vip.xiaonuo.sys.modular.user.entity.SysUser; + +import java.util.List; + +/** + * 用户组Service接口 + * + * @author yubaoshan + * @date 2024/12/21 01:25 + **/ +public interface SysGroupService extends IService { + + /** + * 获取用户组分页 + * + * @author yubaoshan + * @date 2024/12/21 01:25 + */ + Page page(SysGroupPageParam sysGroupPageParam); + + /** + * 添加用户组 + * + * @author yubaoshan + * @date 2024/12/21 01:25 + */ + void add(SysGroupAddParam sysGroupAddParam); + + /** + * 编辑用户组 + * + * @author yubaoshan + * @date 2024/12/21 01:25 + */ + void edit(SysGroupEditParam sysGroupEditParam); + + /** + * 删除用户组 + * + * @author yubaoshan + * @date 2024/12/21 01:25 + */ + void delete(List sysGroupIdParamList); + + /** + * 获取用户组详情 + * + * @author yubaoshan + * @date 2024/12/21 01:25 + */ + SysGroup detail(SysGroupIdParam sysGroupIdParam); + + /** + * 获取用户组详情 + * + * @author yubaoshan + * @date 2024/12/21 01:25 + **/ + SysGroup queryEntity(String id); + + /** + * 获取用户组下的用户 + * + * @author yubaoshan + * @date 2024/12/21 01:25 + */ + List ownUser(SysGroupIdParam sysGroupIdParam); + + /** + * 获取组织树选择器 + * + * @author yubaoshan + * @date 2024/12/21 01:25 + */ + List> orgTreeSelector(); + + /** + * 获取用户选择器 + * + * @author yubaoshan + * @date 2024/12/21 01:25 + */ + Page userSelector(SysGroupSelectorUserParam sysGroupSelectorUserParam); + + /** + * 给用户组授权用户 + * + * @author yubaoshan + * @date 2024/12/21 01:25 + */ + void grantUser(SysGroupGrantUserParam sysGroupGrantUserParam); +} diff --git a/snowy-plugin/snowy-plugin-sys/src/main/java/vip/xiaonuo/sys/modular/group/service/impl/SysGroupServiceImpl.java b/snowy-plugin/snowy-plugin-sys/src/main/java/vip/xiaonuo/sys/modular/group/service/impl/SysGroupServiceImpl.java new file mode 100644 index 00000000..d1c27fdf --- /dev/null +++ b/snowy-plugin/snowy-plugin-sys/src/main/java/vip/xiaonuo/sys/modular/group/service/impl/SysGroupServiceImpl.java @@ -0,0 +1,174 @@ +/* + * Copyright [2022] [https://www.xiaonuo.vip] + * + * Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点: + * + * 1.请不要删除和修改根目录下的LICENSE文件。 + * 2.请不要删除和修改Snowy源码头部的版权声明。 + * 3.本项目代码可免费商业使用,商业使用请保留源码和相关描述文件的项目出处,作者声明等。 + * 4.分发源码时候,请注明软件出处 https://www.xiaonuo.vip + * 5.不可二次分发开源参与同类竞品,如有想法可联系团队xiaonuobase@qq.com商议合作。 + * 6.若您的项目无法满足以上几点,需要更多功能代码,获取Snowy商业授权许可,请在官网购买授权,地址为 https://www.xiaonuo.vip + */ +package vip.xiaonuo.sys.modular.group.service.impl; + +import cn.hutool.core.bean.BeanUtil; +import cn.hutool.core.collection.CollStreamUtil; +import cn.hutool.core.lang.tree.Tree; +import cn.hutool.core.lang.tree.TreeNode; +import cn.hutool.core.lang.tree.TreeUtil; +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import jakarta.annotation.Resource; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; +import vip.xiaonuo.common.enums.CommonSortOrderEnum; +import vip.xiaonuo.common.exception.CommonException; +import vip.xiaonuo.common.page.CommonPageRequest; +import vip.xiaonuo.sys.modular.group.entity.SysGroup; +import vip.xiaonuo.sys.modular.group.mapper.SysGroupMapper; +import vip.xiaonuo.sys.modular.group.param.*; +import vip.xiaonuo.sys.modular.group.service.SysGroupService; +import vip.xiaonuo.sys.modular.org.entity.SysOrg; +import vip.xiaonuo.sys.modular.org.service.SysOrgService; +import vip.xiaonuo.sys.modular.relation.entity.SysRelation; +import vip.xiaonuo.sys.modular.relation.enums.SysRelationCategoryEnum; +import vip.xiaonuo.sys.modular.relation.service.SysRelationService; +import vip.xiaonuo.sys.modular.user.entity.SysUser; +import vip.xiaonuo.sys.modular.user.service.SysUserService; + +import java.util.List; +import java.util.stream.Collectors; + +/** + * 用户组Service接口实现类 + * + * @author yubaoshan + * @date 2024/12/21 01:25 + **/ +@Service +public class SysGroupServiceImpl extends ServiceImpl implements SysGroupService { + + @Resource + private SysRelationService sysRelationService; + + @Resource + private SysUserService sysUserService; + + @Resource + private SysOrgService sysOrgService; + + @Override + public Page page(SysGroupPageParam sysGroupPageParam) { + QueryWrapper queryWrapper = new QueryWrapper().checkSqlInjection(); + if(ObjectUtil.isNotEmpty(sysGroupPageParam.getName())) { + queryWrapper.lambda().like(SysGroup::getName, sysGroupPageParam.getName()); + } + if(ObjectUtil.isAllNotEmpty(sysGroupPageParam.getSortField(), sysGroupPageParam.getSortOrder())) { + CommonSortOrderEnum.validate(sysGroupPageParam.getSortOrder()); + queryWrapper.orderBy(true, sysGroupPageParam.getSortOrder().equals(CommonSortOrderEnum.ASC.getValue()), + StrUtil.toUnderlineCase(sysGroupPageParam.getSortField())); + } else { + queryWrapper.lambda().orderByAsc(SysGroup::getSortCode); + } + return this.page(CommonPageRequest.defaultPage(), queryWrapper); + } + + @Transactional(rollbackFor = Exception.class) + @Override + public void add(SysGroupAddParam sysGroupAddParam) { + SysGroup sysGroup = BeanUtil.toBean(sysGroupAddParam, SysGroup.class); + this.save(sysGroup); + } + + @Transactional(rollbackFor = Exception.class) + @Override + public void edit(SysGroupEditParam sysGroupEditParam) { + SysGroup sysGroup = this.queryEntity(sysGroupEditParam.getId()); + BeanUtil.copyProperties(sysGroupEditParam, sysGroup); + this.updateById(sysGroup); + } + + @Transactional(rollbackFor = Exception.class) + @Override + public void delete(List sysGroupIdParamList) { + // 执行删除 + this.removeByIds(CollStreamUtil.toList(sysGroupIdParamList, SysGroupIdParam::getId)); + } + + @Override + public SysGroup detail(SysGroupIdParam sysGroupIdParam) { + return this.queryEntity(sysGroupIdParam.getId()); + } + + @Override + public SysGroup queryEntity(String id) { + SysGroup sysGroup = this.getById(id); + if(ObjectUtil.isEmpty(sysGroup)) { + throw new CommonException("用户组不存在,id值为:{}", id); + } + return sysGroup; + } + + @Override + public List ownUser(SysGroupIdParam sysGroupIdParam) { + return sysRelationService.getRelationObjectIdListByTargetIdAndCategory(sysGroupIdParam.getId(), + SysRelationCategoryEnum.SYS_USER_HAS_GROUP.getValue()); + } + + @Override + public List> orgTreeSelector() { + List sysOrgList = sysOrgService.getAllOrgList(); + List> treeNodeList = sysOrgList.stream().map(sysOrg -> + new TreeNode<>(sysOrg.getId(), sysOrg.getParentId(), sysOrg.getName(), sysOrg.getSortCode())) + .collect(Collectors.toList()); + return TreeUtil.build(treeNodeList, "0"); + } + + @Override + public Page userSelector(SysGroupSelectorUserParam sysGroupSelectorUserParam) { + LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper<>(); + // 只查询部分字段 + lambdaQueryWrapper.select(SysUser::getId, SysUser::getAvatar, SysUser::getOrgId, SysUser::getPositionId, SysUser::getAccount, + SysUser::getName, SysUser::getSortCode, SysUser::getGender, SysUser::getEntryDate); + // 如果查询条件为空,则直接查询 + if(ObjectUtil.isAllEmpty(sysGroupSelectorUserParam.getOrgId(), sysGroupSelectorUserParam.getSearchKey())) { + return sysUserService.getAllUserSelectorList(); + } else { + if (ObjectUtil.isNotEmpty(sysGroupSelectorUserParam.getOrgId())) { + // 如果组织id不为空,则查询该组织及其子极其子下的所有人 + List childOrgIdList = CollStreamUtil.toList(sysOrgService.getChildListById(sysOrgService + .getAllOrgList(), sysGroupSelectorUserParam.getOrgId(), true), SysOrg::getId); + if (ObjectUtil.isNotEmpty(childOrgIdList)) { + lambdaQueryWrapper.in(SysUser::getOrgId, childOrgIdList); + } else { + return new Page<>(); + } + } + if (ObjectUtil.isNotEmpty(sysGroupSelectorUserParam.getSearchKey())) { + lambdaQueryWrapper.like(SysUser::getName, sysGroupSelectorUserParam.getSearchKey()); + } + lambdaQueryWrapper.orderByAsc(SysUser::getSortCode); + return sysUserService.page(CommonPageRequest.defaultPage(), lambdaQueryWrapper); + } + } + + @Override + public void grantUser(SysGroupGrantUserParam sysGroupGrantUserParam) { + String id = sysGroupGrantUserParam.getId(); + List grantInfoList = sysGroupGrantUserParam.getGrantInfoList(); + sysRelationService.remove(new LambdaQueryWrapper().eq(SysRelation::getTargetId, id) + .eq(SysRelation::getCategory, SysRelationCategoryEnum.SYS_USER_HAS_GROUP.getValue())); + sysRelationService.saveBatch(grantInfoList.stream().map(userId -> { + SysRelation sysRelation = new SysRelation(); + sysRelation.setObjectId(userId); + sysRelation.setTargetId(id); + sysRelation.setCategory(SysRelationCategoryEnum.SYS_USER_HAS_GROUP.getValue()); + return sysRelation; + }).collect(Collectors.toList())); + } +} diff --git a/snowy-plugin/snowy-plugin-sys/src/main/java/vip/xiaonuo/sys/modular/relation/enums/SysRelationCategoryEnum.java b/snowy-plugin/snowy-plugin-sys/src/main/java/vip/xiaonuo/sys/modular/relation/enums/SysRelationCategoryEnum.java index 98a58cb8..cbb4ac33 100644 --- a/snowy-plugin/snowy-plugin-sys/src/main/java/vip/xiaonuo/sys/modular/relation/enums/SysRelationCategoryEnum.java +++ b/snowy-plugin/snowy-plugin-sys/src/main/java/vip/xiaonuo/sys/modular/relation/enums/SysRelationCategoryEnum.java @@ -45,7 +45,10 @@ public enum SysRelationCategoryEnum { SYS_ROLE_HAS_MOBILE_MENU("SYS_ROLE_HAS_MOBILE_MENU"), /** 角色拥有权限 */ - SYS_ROLE_HAS_PERMISSION("SYS_ROLE_HAS_PERMISSION"); + SYS_ROLE_HAS_PERMISSION("SYS_ROLE_HAS_PERMISSION"), + + /** 用户拥有用户组 */ + SYS_USER_HAS_GROUP("SYS_USER_HAS_GROUP"); private final String value; diff --git a/snowy-web-app/src/main/java/vip/xiaonuo/core/config/GlobalConfigure.java b/snowy-web-app/src/main/java/vip/xiaonuo/core/config/GlobalConfigure.java index 9cad2b3d..e7622be3 100644 --- a/snowy-web-app/src/main/java/vip/xiaonuo/core/config/GlobalConfigure.java +++ b/snowy-web-app/src/main/java/vip/xiaonuo/core/config/GlobalConfigure.java @@ -157,6 +157,7 @@ public class GlobalConfigure implements WebMvcConfigurer { "/auth/third/page", "/client/user/**", "/sys/org/**", + "/sys/group/**", "/sys/position/**", "/sys/button/**", "/sys/menu/**", diff --git a/snowy-web-app/src/main/resources/_sql/snowy_mysql.sql b/snowy-web-app/src/main/resources/_sql/snowy_mysql.sql index 6624555e..9e5fa12a 100644 --- a/snowy-web-app/src/main/resources/_sql/snowy_mysql.sql +++ b/snowy-web-app/src/main/resources/_sql/snowy_mysql.sql @@ -662,6 +662,28 @@ INSERT INTO `MOBILE_RESOURCE` VALUES ('1623696236267024386', '162338076520231321 INSERT INTO `MOBILE_RESOURCE` VALUES ('1623696292042878977', '1623380765202313218', '编辑人员', 'mobileBizUserEdit', 'BUTTON', NULL, NULL, NULL, NULL, NULL, NULL, NULL, 2, NULL, 'NOT_DELETE', NULL, NULL, NULL, NULL); INSERT INTO `MOBILE_RESOURCE` VALUES ('1623696346547859458', '1623380765202313218', '删除人员', 'mobileBizUserDelete', 'BUTTON', NULL, NULL, NULL, NULL, NULL, NULL, NULL, 3, NULL, 'NOT_DELETE', NULL, NULL, NULL, NULL); +-- ---------------------------- +-- Table structure for SYS_GROUP +-- ---------------------------- +DROP TABLE IF EXISTS `SYS_GROUP`; +CREATE TABLE `SYS_GROUP` ( + `ID` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '主键', + `NAME` varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '名称', + `REMARK` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '备注', + `SORT_CODE` int(11) NULL DEFAULT NULL COMMENT '排序码', + `EXT_JSON` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL COMMENT '扩展信息', + `DELETE_FLAG` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '删除标志', + `CREATE_TIME` datetime(0) NULL DEFAULT NULL COMMENT '创建时间', + `CREATE_USER` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '创建用户', + `UPDATE_TIME` datetime(0) NULL DEFAULT NULL COMMENT '修改时间', + `UPDATE_USER` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '修改用户', + PRIMARY KEY (`ID`) USING BTREE +) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '用户组' ROW_FORMAT = Dynamic; + +-- ---------------------------- +-- Records of SYS_GROUP +-- ---------------------------- + -- ---------------------------- -- Table structure for SYS_ORG -- ---------------------------- @@ -889,6 +911,9 @@ INSERT INTO `SYS_RELATION` VALUES ('1813960110876631049', '1570687866138206208', INSERT INTO `SYS_RELATION` VALUES ('1813960110876631050', '1570687866138206208', '/biz/notice/page', 'SYS_ROLE_HAS_PERMISSION', '{\"apiUrl\":\"/biz/notice/page\",\"scopeCategory\":\"SCOPE_ALL\",\"scopeDefineOrgIdList\":[]}'); INSERT INTO `SYS_RELATION` VALUES ('1813959903803842580', '1570687866138206208', '1813959658013433858', 'SYS_ROLE_HAS_RESOURCE', '{\"menuId\":\"1813959658013433858\",\"buttonInfo\":[]}'); +INSERT INTO `SYS_RELATION` VALUES ('1871280434097565701', '1570687866138206208', '1870158678418993154', 'SYS_ROLE_HAS_RESOURCE', '{\"menuId\":\"1870158678418993154\",\"buttonInfo\":[\"1870158678481907713\",\"1870158678481907714\",\"1870158678481907715\",\"1870158678481907716\"]}'); +INSERT INTO `SYS_RELATION` VALUES ('1871280434097565751', '1570687866138206208', '1871278073018986498', 'SYS_ROLE_HAS_RESOURCE', '{\"menuId\":\"1871278073018986498\",\"buttonInfo\":[\"1871278073086095361\",\"1871278073086095362\",\"1871278073086095363\",\"1871278073086095364\",\"1871280381043814402\"]}'); + -- ---------------------------- -- Table structure for SYS_RESOURCE -- ---------------------------- @@ -1009,6 +1034,14 @@ INSERT INTO `SYS_RESOURCE` VALUES ('1811290937503387650', '1811290937444667393', INSERT INTO `SYS_RESOURCE` VALUES ('1811328402989662210', '1811290937444667393', '更新状态', NULL, 'bizNoticerUpdateStatus', 'BUTTON', NULL, NULL, NULL, NULL, NULL, NULL, NULL, 5, NULL, 'NOT_DELETE', NULL, NULL, NULL, NULL); INSERT INTO `SYS_RESOURCE` VALUES ('1811330359695400961', '1811290937444667393', '通知公告详情', NULL, 'bizNoticeDetail', 'BUTTON', NULL, NULL, NULL, NULL, NULL, NULL, NULL, 6, NULL, 'NOT_DELETE', NULL, NULL, NULL, NULL); +INSERT INTO `SYS_RESOURCE` VALUES ('1870158678418993154', '1548901111999770726', '用户组管理', 'groupIndex', 'd4KUq2ZnK7', 'MENU', '1548901111999770525', 'MENU', '/sys/group', 'sys/group/index', 'team-outlined', NULL, 'TRUE', 99, NULL, 'NOT_DELETE', NULL, NULL, NULL, NULL); +INSERT INTO `SYS_RESOURCE` VALUES ('1871278073018986498', '1548901111999773977', '用户组', 'bizGroupIndex', 'HQVofyRf7Z', 'MENU', '1548901111999773976', 'MENU', '/biz/group', 'biz/group/index', 'team-outlined', NULL, 'TRUE', 55, NULL, 'NOT_DELETE', NULL, NULL, NULL, NULL); +INSERT INTO `SYS_RESOURCE` VALUES ('1871278073086095361', '1871278073018986498', '新增用户组', NULL, 'bizGroupAdd', 'BUTTON', NULL, NULL, NULL, NULL, NULL, NULL, NULL, 1, NULL, 'NOT_DELETE', NULL, NULL, NULL, NULL); +INSERT INTO `SYS_RESOURCE` VALUES ('1871278073086095362', '1871278073018986498', '编辑用户组', NULL, 'bizGroupEdit', 'BUTTON', NULL, NULL, NULL, NULL, NULL, NULL, NULL, 2, NULL, 'NOT_DELETE', NULL, NULL, NULL, NULL); +INSERT INTO `SYS_RESOURCE` VALUES ('1871278073086095363', '1871278073018986498', '删除用户组', NULL, 'bizGroupDelete', 'BUTTON', NULL, NULL, NULL, NULL, NULL, NULL, NULL, 3, NULL, 'NOT_DELETE', NULL, NULL, NULL, NULL); +INSERT INTO `SYS_RESOURCE` VALUES ('1871278073086095364', '1871278073018986498', '批量删除', NULL, 'bizGroupBatchDelete', 'BUTTON', NULL, NULL, NULL, NULL, NULL, NULL, NULL, 4, NULL, 'NOT_DELETE', NULL, NULL, NULL, NULL); +INSERT INTO `SYS_RESOURCE` VALUES ('1871280381043814402', '1871278073018986498', '授权用户', NULL, 'bizGroupGrantUser', 'BUTTON', NULL, NULL, NULL, NULL, NULL, NULL, NULL, 5, NULL, 'NOT_DELETE', NULL, NULL, NULL, NULL); + -- ---------------------------- -- Table structure for SYS_ROLE -- ----------------------------