Переглянути джерело

1.资源共享-群组功能开发
2.文字转拼音工具类

honorfire 8 місяців тому
батько
коміт
b01e9853de
17 змінених файлів з 532 додано та 44 видалено
  1. 6 0
      snowy-base/snowy-common/pom.xml
  2. 91 0
      snowy-base/snowy-common/src/main/java/vip/xiaonuo/common/util/PinyinUtils.java
  3. 3 0
      snowy-modules/snowy-web-app/pom.xml
  4. 4 0
      snowy-plugin/snowy-plugin-disk/snowy-plugin-disk-func/pom.xml
  5. 155 23
      snowy-plugin/snowy-plugin-disk/snowy-plugin-disk-func/src/main/java/vip/xiaonuo/disk/controller/ShareGroupController.java
  6. 9 2
      snowy-plugin/snowy-plugin-disk/snowy-plugin-disk-func/src/main/java/vip/xiaonuo/disk/dto/ShareGroupuser/ShareGroupAddParam.java
  7. 11 6
      snowy-plugin/snowy-plugin-disk/snowy-plugin-disk-func/src/main/java/vip/xiaonuo/disk/dto/ShareGroupuser/ShareGroupEditParam.java
  8. 5 5
      snowy-plugin/snowy-plugin-disk/snowy-plugin-disk-func/src/main/java/vip/xiaonuo/disk/dto/ShareGroupuser/ShareGroupIdParam.java
  9. 2 1
      snowy-plugin/snowy-plugin-disk/snowy-plugin-disk-func/src/main/java/vip/xiaonuo/disk/dto/ShareGroupuser/ShareGroupUser.java
  10. 11 0
      snowy-plugin/snowy-plugin-disk/snowy-plugin-disk-func/src/main/java/vip/xiaonuo/disk/mapper/ShareGroupUserMapper.java
  11. 20 0
      snowy-plugin/snowy-plugin-disk/snowy-plugin-disk-func/src/main/java/vip/xiaonuo/disk/mapper/mapping/ShareGroupUserMapper.xml
  12. 44 2
      snowy-plugin/snowy-plugin-disk/snowy-plugin-disk-func/src/main/java/vip/xiaonuo/disk/service/ShareGroupUserService.java
  13. 76 5
      snowy-plugin/snowy-plugin-disk/snowy-plugin-disk-func/src/main/java/vip/xiaonuo/disk/service/impl/ShareGroupUserServiceImpl.java
  14. 8 0
      snowy-plugin/snowy-plugin-sys/snowy-plugin-sys-func/src/main/java/vip/xiaonuo/sys/modular/user/mapper/SysUserMapper.java
  15. 16 0
      snowy-plugin/snowy-plugin-sys/snowy-plugin-sys-func/src/main/java/vip/xiaonuo/sys/modular/user/mapper/mapping/SysUserMapper.xml
  16. 30 0
      snowy-plugin/snowy-plugin-sys/snowy-plugin-sys-func/src/main/java/vip/xiaonuo/sys/modular/user/service/SysUserService.java
  17. 41 0
      snowy-plugin/snowy-plugin-sys/snowy-plugin-sys-func/src/main/java/vip/xiaonuo/sys/modular/user/service/impl/SysUserServiceImpl.java

+ 6 - 0
snowy-base/snowy-common/pom.xml

@@ -180,6 +180,12 @@
             <artifactId>json-flattener</artifactId>
         </dependency>
 
+        <dependency>
+            <groupId>com.belerweb</groupId>
+            <artifactId>pinyin4j</artifactId>
+            <version>2.5.0</version>
+        </dependency>
+
         <dependency>
             <groupId>org.openjdk.nashorn</groupId>
             <artifactId>nashorn-core</artifactId>

+ 91 - 0
snowy-base/snowy-common/src/main/java/vip/xiaonuo/common/util/PinyinUtils.java

@@ -0,0 +1,91 @@
+package vip.xiaonuo.common.util;
+
+import net.sourceforge.pinyin4j.PinyinHelper;
+import net.sourceforge.pinyin4j.format.HanyuPinyinCaseType;
+import net.sourceforge.pinyin4j.format.HanyuPinyinOutputFormat;
+import net.sourceforge.pinyin4j.format.HanyuPinyinToneType;
+import net.sourceforge.pinyin4j.format.HanyuPinyinVCharType;
+import org.springframework.stereotype.Component;
+
+/**
+ * 文字转拼音工具类
+ * */
+@Component
+public class PinyinUtils {
+
+    private static final HanyuPinyinOutputFormat FORMAT;
+
+    static {
+        FORMAT = new HanyuPinyinOutputFormat();
+        FORMAT.setToneType(HanyuPinyinToneType.WITHOUT_TONE); // 不带音调
+        FORMAT.setCaseType(HanyuPinyinCaseType.LOWERCASE);     // 小写输出
+        FORMAT.setVCharType(HanyuPinyinVCharType.WITH_U_UNICODE); // ü
+    }
+
+    /**
+     * 获取全拼(如:你好 -> ni hao)
+     */
+    public static String toPinyin(String chinese) {
+        return toPinyin(chinese, true);
+    }
+
+    /**
+     * 获取全拼,可选是否保留非中文字符
+     */
+    public static String toPinyin(String chinese, boolean retainNonChinese) {
+        if (chinese == null || chinese.trim().isEmpty()) return "";
+
+        StringBuilder sb = new StringBuilder();
+
+        for (char ch : chinese.toCharArray()) {
+            if (Character.toString(ch).matches("[\\u4E00-\\u9FA5]")) {
+                try {
+                    String[] pinyins = PinyinHelper.toHanyuPinyinStringArray(ch, FORMAT);
+                    if (pinyins != null && pinyins.length > 0) {
+                        sb.append(pinyins[0]).append(" ");
+                    }
+                } catch (Exception e) {
+                    sb.append(ch);
+                }
+            } else if (retainNonChinese) {
+                sb.append(ch);
+            }
+        }
+
+        return sb.toString().trim();
+    }
+
+    /**
+     * 获取拼音首字母(如:你好 -> nh)
+     */
+    public static String toFirstLetters(String chinese) {
+        return toFirstLetters(chinese, true);
+    }
+
+    /**
+     * 获取拼音首字母,可选是否保留非中文字符
+     */
+    public static String toFirstLetters(String chinese, boolean retainNonChinese) {
+        if (chinese == null || chinese.trim().isEmpty()) return "";
+
+        StringBuilder sb = new StringBuilder();
+
+        for (char ch : chinese.toCharArray()) {
+            if (Character.toString(ch).matches("[\\u4E00-\\u9FA5]")) {
+                try {
+                    String[] pinyins = PinyinHelper.toHanyuPinyinStringArray(ch, FORMAT);
+                    if (pinyins != null && pinyins.length > 0) {
+                        sb.append(pinyins[0].charAt(0));
+                    }
+                } catch (Exception e) {
+                    // 忽略异常
+                }
+            } else if (retainNonChinese) {
+                sb.append(ch);
+            }
+        }
+
+        return sb.toString();
+    }
+}
+

+ 3 - 0
snowy-modules/snowy-web-app/pom.xml

@@ -79,12 +79,15 @@
             <artifactId>snowy-common</artifactId>
         </dependency>
 
+
         <!-- 登录鉴权插件 -->
         <dependency>
             <groupId>vip.xiaonuo</groupId>
             <artifactId>snowy-plugin-auth-func</artifactId>
         </dependency>
 
+
+
         <!-- C端功能插件 -->
         <dependency>
             <groupId>vip.xiaonuo</groupId>

+ 4 - 0
snowy-plugin/snowy-plugin-disk/snowy-plugin-disk-func/pom.xml

@@ -96,6 +96,10 @@
             <groupId>vip.xiaonuo</groupId>
             <artifactId>snowy-plugin-sys-api</artifactId>
         </dependency>
+        <dependency>
+            <groupId>vip.xiaonuo</groupId>
+            <artifactId>snowy-plugin-sys-func</artifactId>
+        </dependency>
 
         <!-- 引入开发工具接口,用于配置信息 -->
         <dependency>

+ 155 - 23
snowy-plugin/snowy-plugin-disk/snowy-plugin-disk-func/src/main/java/vip/xiaonuo/disk/controller/ShareGroupController.java

@@ -13,25 +13,43 @@
 package vip.xiaonuo.disk.controller;
 
 import cn.dev33.satoken.annotation.SaCheckPermission;
+import cn.hutool.core.collection.CollStreamUtil;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
 import com.github.xiaoymin.knife4j.annotations.ApiSupport;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
+import org.apache.commons.lang3.StringUtils;
 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.auth.core.enums.SysUserStatusEnum;
+import vip.xiaonuo.auth.core.util.StpLoginUserUtil;
 import vip.xiaonuo.common.annotation.CommonLog;
 import vip.xiaonuo.common.pojo.CommonResult;
 import vip.xiaonuo.common.pojo.CommonValidList;
+import vip.xiaonuo.common.util.CommonAvatarUtil;
+import vip.xiaonuo.common.util.CommonCryptogramUtil;
+import vip.xiaonuo.common.util.PinyinUtils;
+import vip.xiaonuo.dev.api.DevConfigApi;
 import vip.xiaonuo.disk.dto.ShareGroupuser.*;
 import vip.xiaonuo.disk.service.ShareGroupUserService;
+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.param.SysUserIdParam;
+import vip.xiaonuo.sys.modular.user.service.SysUserService;
 
 import javax.annotation.Resource;
+import javax.servlet.http.HttpServletRequest;
 import javax.validation.Valid;
 import javax.validation.constraints.NotEmpty;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
 
 /**
  * 资源共享-群组控制器
@@ -47,19 +65,33 @@ public class ShareGroupController {
 
     @Resource
     private ShareGroupUserService shareGroupUserService;
+    @Resource
+    private DevConfigApi devConfigApi;
+    @Resource
+    private PinyinUtils pinyinUtils;
+    @Resource
+    private SysUserService sysUserService;
+    @Resource
+    private SysRelationService sysRelationService;
+
+
+    private static final String SNOWY_SYS_DEFAULT_PASSWORD_KEY = "SNOWY_SYS_DEFAULT_PASSWORD";
 
     /**
-     * 获取资源共享-群组人员关联表分页
+     * 资源共享-群组-分页列表
      *
      * @author honorfire
      * @date  2025/06/18 14:16
      */
     @ApiOperationSupport(order = 1)
-    @ApiOperation("获取资源共享-群组人员关联表分页")
-    @SaCheckPermission("/disk/sharegroupuser/page")
-    @GetMapping("/disk/sharegroupuser/page")
-    public CommonResult<Page<ShareGroupUser>> page(ShareGroupUserPageParam shareGroupUserPageParam) {
-        return CommonResult.data(shareGroupUserService.page(shareGroupUserPageParam));
+    @ApiOperation("资源共享-群组-分页列表")
+    @SaCheckPermission("/disk/sharegroup/page")
+    @GetMapping("/disk/sharegroup/page")
+    public CommonResult<Page<Map<String,Object>>> page(ShareGroupUserPageParam shareGroupUserPageParam, HttpServletRequest req) {
+        Map param =new HashMap();
+        param.put("userId", StpLoginUserUtil.getLoginUser().getId());
+        Page<Map<String,Object>> groupList=sysUserService.getGroupList(param);
+        return CommonResult.data(groupList);
     }
 
     /**
@@ -74,25 +106,111 @@ public class ShareGroupController {
     @SaCheckPermission("/disk/sharegroup/add")
     @PostMapping("/disk/sharegroup/add")
     public CommonResult<String> add(@RequestBody @Valid ShareGroupAddParam shareGroupAddParam) {
-        //先创建一个角色为群组的用户
+        //1.先创建一个角色为群组的用户
+        SysUser groupUser = new SysUser();
+        groupUser.setName(shareGroupAddParam.getName());
+        //设置账号,账号采取文字拼音加时间戳
+        String groupUserAccount=pinyinUtils.toFirstLetters(shareGroupAddParam.getName())+System.currentTimeMillis();
+        groupUser.setAccount(groupUserAccount);
+        //设置群组默认组织、职位
+        groupUser.setOrgId("100");
+        groupUser.setPositionId("100");
+        //资源库专用账号
+        groupUser.setIsResourceaccount("1");
+        // 设置默认头像
+        groupUser.setAvatar(CommonAvatarUtil.generateImg(groupUser.getName()));
+        // 设置默认密码
+        groupUser.setPassword(CommonCryptogramUtil.doHashValue(devConfigApi.getValueByKey(SNOWY_SYS_DEFAULT_PASSWORD_KEY)));
+        // 设置状态
+        groupUser.setUserStatus(SysUserStatusEnum.ENABLE.getValue());
+        //先保存一下该群组”用户“
+        groupUser=sysUserService.editOne(groupUser);
+
+        //2.存入该群组”用户“特定职务
+        sysRelationService.saveRelationWithAppend(groupUser.getId(),"101",SysRelationCategoryEnum.SYS_USER_HAS_ROLE.getValue());
+
+        //3.存入群组关系
+        String userIdsStr=shareGroupAddParam.getUserIds();
+        String[] userIdList = userIdsStr.split(",");
+        List<ShareGroupUser> shareGroupUserList=new ArrayList<>();
+        //首先添加创建群组的人
+        ShareGroupUser ownGroupUser=new ShareGroupUser();
+        ownGroupUser.setUserId(StpLoginUserUtil.getLoginUser().getId());
+        ownGroupUser.setGroupId(groupUser.getId());
+        ownGroupUser.setIsCreater("1");
+        shareGroupUserList.add(ownGroupUser);
+        for(String userId:userIdList)
+        {
+            ShareGroupUser otherGroupUser=new ShareGroupUser();
+            otherGroupUser.setUserId(userId);
+            otherGroupUser.setGroupId(groupUser.getId());
+            otherGroupUser.setIsCreater("0");
+            shareGroupUserList.add(otherGroupUser);
+        }
 
         shareGroupUserService.add(shareGroupAddParam);
         return CommonResult.ok();
     }
 
     /**
-     * 编辑资源共享-群组人员关联表
+     * 资源共享-群组-编辑
      *
      * @author honorfire
      * @date  2025/06/18 14:16
      */
     @ApiOperationSupport(order = 3)
-    @ApiOperation("编辑资源共享-群组人员关联表")
-    @CommonLog("编辑资源共享-群组人员关联表")
-    @SaCheckPermission("/disk/sharegroupuser/edit")
-    @PostMapping("/disk/sharegroupuser/edit")
+    @ApiOperation("资源共享-群组-编辑")
+    @CommonLog("资源共享-群组-编辑")
+    @SaCheckPermission("/disk/sharegroup/edit")
+    @PostMapping("/disk/sharegroup/edit")
     public CommonResult<String> edit(@RequestBody @Valid ShareGroupEditParam shareGroupEditParam) {
-        shareGroupUserService.edit(shareGroupEditParam);
+        //1.先创建一个角色为群组的用户
+        SysUser groupUser = new SysUser();
+        if(StringUtils.isNotEmpty(shareGroupEditParam.getName()))
+        {
+            groupUser.setName(shareGroupEditParam.getName());
+            //设置账号,账号采取文字拼音加时间戳
+            String groupUserAccount=pinyinUtils.toFirstLetters(shareGroupEditParam.getName())+System.currentTimeMillis();
+        }
+        //先保存一下该群组”用户“
+        groupUser=sysUserService.addOne(groupUser);
+
+        //2.群组用户id不为空的情况,重新存入群组关系
+        if(StringUtils.isNotEmpty(shareGroupEditParam.getUserIds()))
+        {
+            //删除旧群组id
+            //查询旧关联id
+            Map queryDeleteGroupUserMap=new HashMap();
+            queryDeleteGroupUserMap.put("groupId",groupUser.getId());
+            List<Map<String, Object>> groupUserList= shareGroupUserService.queryGroupUserList(queryDeleteGroupUserMap);
+            List<String> deleteGroupUserIdList=new ArrayList<>();
+            for(Map<String, Object> deleteGroupUser:groupUserList)
+            {
+                deleteGroupUserIdList.add(deleteGroupUser.get("groupUserId").toString());
+            }
+            shareGroupUserService.deleteByIds(deleteGroupUserIdList);
+
+            //重新存入群组关系
+            String userIdsStr=shareGroupEditParam.getUserIds();
+            String[] userIdList = userIdsStr.split(",");
+            List<ShareGroupUser> shareGroupUserList=new ArrayList<>();
+            //首先添加创建群组的人
+            ShareGroupUser ownGroupUser=new ShareGroupUser();
+            ownGroupUser.setUserId(StpLoginUserUtil.getLoginUser().getId());
+            ownGroupUser.setGroupId(groupUser.getId());
+            ownGroupUser.setIsCreater("1");
+            shareGroupUserList.add(ownGroupUser);
+            for(String userId:userIdList)
+            {
+                ShareGroupUser otherGroupUser=new ShareGroupUser();
+                otherGroupUser.setUserId(userId);
+                otherGroupUser.setGroupId(groupUser.getId());
+                otherGroupUser.setIsCreater("0");
+                shareGroupUserList.add(otherGroupUser);
+            }
+        }
+
+
         return CommonResult.ok();
     }
 
@@ -105,26 +223,40 @@ public class ShareGroupController {
     @ApiOperationSupport(order = 4)
     @ApiOperation("删除资源共享-群组人员关联表")
     @CommonLog("删除资源共享-群组人员关联表")
-    @SaCheckPermission("/disk/sharegroupuser/delete")
-    @PostMapping("/disk/sharegroupuser/delete")
+    @SaCheckPermission("/disk/sharegroup/delete")
+    @PostMapping("/disk/sharegroup/delete")
     public CommonResult<String> delete(@RequestBody @Valid @NotEmpty(message = "集合不能为空")
-                                                   CommonValidList<ShareGroupUserIdParam> shareGroupUserIdParamList) {
-        shareGroupUserService.delete(shareGroupUserIdParamList);
+                                                   CommonValidList<ShareGroupIdParam> shareGroupIdParamList) {
+        List<String> groupIdList = CollStreamUtil.toList(shareGroupIdParamList, ShareGroupIdParam::getGroupId);
+        sysUserService.deleteByIds(groupIdList);
         return CommonResult.ok();
     }
 
     /**
-     * 获取资源共享-群组人员关联表详情
+     * 资源共享-群组-详情
      *
      * @author honorfire
      * @date  2025/06/18 14:16
      */
     @ApiOperationSupport(order = 5)
-    @ApiOperation("获取资源共享-群组人员关联表详情")
-    @SaCheckPermission("/disk/sharegroupuser/detail")
-    @GetMapping("/disk/sharegroupuser/detail")
-    public CommonResult<ShareGroupUser> detail(@Valid ShareGroupUserIdParam shareGroupUserIdParam) {
-        return CommonResult.data(shareGroupUserService.detail(shareGroupUserIdParam));
+    @ApiOperation("资源共享-群组-详情")
+    @SaCheckPermission("/disk/sharegroup/detail")
+    @GetMapping("/disk/sharegroup/detail")
+    public CommonResult<Map<String,Object>> detail(@Valid ShareGroupIdParam shareGroupIdParam) {
+        Map param=new HashMap();
+        Map<String,Object> result= new HashMap<>();
+        //查回群组基本信息
+        SysUser group=sysUserService.queryEntity(shareGroupIdParam.getGroupId());
+        result.put("groupId",group.getId());
+        result.put("groupName",group.getName());
+        result.put("groupAccount",group.getAccount());
+        //查回群组所有关联人员
+        Map queryGroupUserMap=new HashMap();
+        queryGroupUserMap.put("groupId",group);
+        List<Map<String, Object>> groupUserList= shareGroupUserService.queryGroupUserList(queryGroupUserMap);
+        result.put("groupUserList",groupUserList);
+
+        return CommonResult.data(result);
     }
 
 }

+ 9 - 2
snowy-plugin/snowy-plugin-disk/snowy-plugin-disk-func/src/main/java/vip/xiaonuo/disk/dto/ShareGroupuser/ShareGroupAddParam.java

@@ -17,6 +17,8 @@ import io.swagger.annotations.ApiModelProperty;
 import lombok.Getter;
 import lombok.Setter;
 
+import javax.validation.constraints.NotBlank;
+
 /**
  * 资源共享-群组人员关联表添加参数
  *
@@ -28,12 +30,17 @@ import lombok.Setter;
 @JsonIgnoreProperties(ignoreUnknown = true) // 忽略未知字段
 public class ShareGroupAddParam {
 
+    /** 群组名字 */
+    @ApiModelProperty(value = "群组id", position = 2)
+    @NotBlank(message = "群组名字不能为空")
+    private String name;
+
     /** 群组id */
     @ApiModelProperty(value = "群组id", position = 2)
     private String groupId;
 
-    /** 用户id(多个逗号拼接) */
-    @ApiModelProperty(value = "用户id(多个逗号拼接)", position = 3)
+    /** 群组用户id(多个逗号拼接) */
+    @ApiModelProperty(value = "群组用户id(多个逗号拼接)", position = 3)
     private String userIds;
 
     /** 是否是群组创造者,0否1是 */

+ 11 - 6
snowy-plugin/snowy-plugin-disk/snowy-plugin-disk-func/src/main/java/vip/xiaonuo/disk/dto/ShareGroupuser/ShareGroupEditParam.java

@@ -33,13 +33,18 @@ public class ShareGroupEditParam {
     @NotBlank(message = "id不能为空")
     private String id;
 
-    /** 用户id(多个逗号拼接) */
-    @ApiModelProperty(value = "用户id(多个逗号拼接)", position = 3)
-    private String userIds;
+    /** 群组名字 */
+    @ApiModelProperty(value = "群组id", position = 2)
+    private String name;
+
+    /** 群组id */
+    @ApiModelProperty(value = "群组id", position = 2)
+    private String groupId;
 
-    /** 用户id */
-    @ApiModelProperty(value = "用户id", position = 3)
-    private String userId;
+    /** 群组用户id(多个逗号拼接) */
+    @ApiModelProperty(value = "群组用户id(多个逗号拼接)", position = 3)
+    @NotBlank(message = "群组用户不能为空")
+    private String userIds;
 
     /** 是否是群组创造者,0否1是 */
     @ApiModelProperty(value = "是否是群组创造者,0否1是", position = 4)

+ 5 - 5
snowy-plugin/snowy-plugin-disk/snowy-plugin-disk-func/src/main/java/vip/xiaonuo/disk/dto/ShareGroupuser/ShareGroupUserIdParam.java → snowy-plugin/snowy-plugin-disk/snowy-plugin-disk-func/src/main/java/vip/xiaonuo/disk/dto/ShareGroupuser/ShareGroupIdParam.java

@@ -26,10 +26,10 @@ import javax.validation.constraints.NotBlank;
  **/
 @Getter
 @Setter
-public class ShareGroupUserIdParam {
+public class ShareGroupIdParam {
 
-    /** 主键id */
-    @ApiModelProperty(value = "主键id", required = true)
-    @NotBlank(message = "id不能为空")
-    private String id;
+    /** 群组id */
+    @ApiModelProperty(value = "群组id", required = true)
+    @NotBlank(message = "群组id不能为空")
+    private String groupId;
 }

+ 2 - 1
snowy-plugin/snowy-plugin-disk/snowy-plugin-disk-func/src/main/java/vip/xiaonuo/disk/dto/ShareGroupuser/ShareGroupUser.java

@@ -16,6 +16,7 @@ import com.baomidou.mybatisplus.annotation.*;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Getter;
 import lombok.Setter;
+import vip.xiaonuo.common.pojo.CommonEntity;
 
 /**
  * 资源共享-群组人员关联表实体
@@ -26,7 +27,7 @@ import lombok.Setter;
 @Getter
 @Setter
 @TableName("SHARE_GROUP_USER")
-public class ShareGroupUser {
+public class ShareGroupUser extends CommonEntity {
 
     /** 主键id */
     @TableId

+ 11 - 0
snowy-plugin/snowy-plugin-disk/snowy-plugin-disk-func/src/main/java/vip/xiaonuo/disk/mapper/ShareGroupUserMapper.java

@@ -15,6 +15,9 @@ package vip.xiaonuo.disk.mapper;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import vip.xiaonuo.disk.dto.ShareGroupuser.ShareGroupUser;
 
+import java.util.List;
+import java.util.Map;
+
 /**
  * 资源共享-群组人员关联表Mapper接口
  *
@@ -22,4 +25,12 @@ import vip.xiaonuo.disk.dto.ShareGroupuser.ShareGroupUser;
  * @date  2025/06/18 14:16
  **/
 public interface ShareGroupUserMapper extends BaseMapper<ShareGroupUser> {
+
+    /**
+     * 群组人员关联表-查询列表
+     *
+     * @author honorfire
+     * @date  2025/06/18 14:16
+     **/
+    List<Map<String, Object>> queryGroupUserList(Map param);
 }

+ 20 - 0
snowy-plugin/snowy-plugin-disk/snowy-plugin-disk-func/src/main/java/vip/xiaonuo/disk/mapper/mapping/ShareGroupUserMapper.xml

@@ -2,4 +2,24 @@
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 <mapper namespace="vip.xiaonuo.disk.mapper.ShareGroupUserMapper">
 
+    <select id="queryGroupUserList" resultType="java.util.Map">
+        SELECT
+            t1.ID AS groupUserId,
+            t1.GROUP_ID AS groupId,
+            t3.NAME AS groupIdName,
+            t1.USER_ID AS userId,
+            t2.NAME AS userIdName,
+            t1.IS_CREATER AS isCreater,
+            IFNULL(( SELECT dd1.DICT_LABEL FROM (SELECT d1.DICT_LABEL,d1.DICT_VALUE  FROM  DEV_DICT d1 WHERE PARENT_ID = (SELECT d2.ID  FROM  DEV_DICT d2 WHERE d2.DICT_VALUE='GROUP_IS_CREATER') )dd1 WHERE dd1.DICT_VALUE= t1.IS_CREATER ),'') AS isCreaterName
+        FROM SHARE_GROUP_USER t1
+        LEFT JOIN SYS_USER t2 ON t1.USER_ID=t2.ID AND t2.DELETE_FLAG ='NOT_DELETE'
+        LEFT JOIN SYS_USER t3 ON t1.USER_ID=t3.ID AND t3.DELETE_FLAG ='NOT_DELETE' AND t3.IS_RESOURCEACCOUNT ='1'
+        where t1.DELETE_FLAG ='NOT_DELETE'
+        <if test="groupId!=null and groupId != ''">
+            and t1.GROUP_ID=#{groupId}
+        </if>
+        <if test="userId!=null and userId != ''">
+            and t1.USER_ID=#{userId}
+        </if>
+    </select>
 </mapper>

+ 44 - 2
snowy-plugin/snowy-plugin-disk/snowy-plugin-disk-func/src/main/java/vip/xiaonuo/disk/service/ShareGroupUserService.java

@@ -17,6 +17,7 @@ import com.baomidou.mybatisplus.extension.service.IService;
 import vip.xiaonuo.disk.dto.ShareGroupuser.*;
 
 import java.util.List;
+import java.util.Map;
 
 /**
  * 资源共享-群组人员关联表Service接口
@@ -42,6 +43,22 @@ public interface ShareGroupUserService extends IService<ShareGroupUser> {
      */
     void add(ShareGroupAddParam shareGroupAddParam);
 
+    /**
+     * 添加资源共享-群组人员关联表
+     *
+     * @author honorfire
+     * @date  2025/06/18 14:16
+     */
+    ShareGroupUser addone(ShareGroupUser shareGroupUser);
+
+    /**
+     * 添加资源共享-群组人员关联表-批量
+     *
+     * @author honorfire
+     * @date  2025/06/18 14:16
+     */
+    void addBatch(List<ShareGroupUser> shareGroupUserList);
+
     /**
      * 编辑资源共享-群组人员关联表
      *
@@ -50,13 +67,30 @@ public interface ShareGroupUserService extends IService<ShareGroupUser> {
      */
     void edit(ShareGroupEditParam shareGroupEditParam);
 
+    /**
+     * 添加资源共享-群组人员关联表
+     *
+     * @author honorfire
+     * @date  2025/06/18 14:16
+     */
+    ShareGroupUser editone(ShareGroupUser shareGroupUser);
+
+
     /**
      * 删除资源共享-群组人员关联表
      *
      * @author honorfire
      * @date  2025/06/18 14:16
      */
-    void delete(List<ShareGroupUserIdParam> shareGroupUserIdParamList);
+    void delete(List<ShareGroupIdParam> shareGroupIdParamList);
+
+    /**
+     * 删除资源共享-群组人员关联表
+     *
+     * @author honorfire
+     * @date  2025/06/18 14:16
+     */
+    void deleteByIds(List<String> deleteIdList);
 
     /**
      * 获取资源共享-群组人员关联表详情
@@ -64,7 +98,7 @@ public interface ShareGroupUserService extends IService<ShareGroupUser> {
      * @author honorfire
      * @date  2025/06/18 14:16
      */
-    ShareGroupUser detail(ShareGroupUserIdParam shareGroupUserIdParam);
+    ShareGroupUser detail(ShareGroupIdParam shareGroupIdParam);
 
     /**
      * 获取资源共享-群组人员关联表详情
@@ -74,4 +108,12 @@ public interface ShareGroupUserService extends IService<ShareGroupUser> {
      **/
     ShareGroupUser queryEntity(String id);
 
+    /**
+     * 群组人员关联表-查询列表
+     *
+     * @author honorfire
+     * @date  2025/06/18 14:16
+     **/
+    List<Map<String, Object>> queryGroupUserList(Map param);
+
 }

+ 76 - 5
snowy-plugin/snowy-plugin-disk/snowy-plugin-disk-func/src/main/java/vip/xiaonuo/disk/service/impl/ShareGroupUserServiceImpl.java

@@ -28,11 +28,13 @@ import vip.xiaonuo.disk.dto.ShareGroupuser.ShareGroupUser;
 import vip.xiaonuo.disk.mapper.ShareGroupUserMapper;
 import vip.xiaonuo.disk.dto.ShareGroupuser.ShareGroupAddParam;
 import vip.xiaonuo.disk.dto.ShareGroupuser.ShareGroupEditParam;
-import vip.xiaonuo.disk.dto.ShareGroupuser.ShareGroupUserIdParam;
+import vip.xiaonuo.disk.dto.ShareGroupuser.ShareGroupIdParam;
 import vip.xiaonuo.disk.dto.ShareGroupuser.ShareGroupUserPageParam;
 import vip.xiaonuo.disk.service.ShareGroupUserService;
 
+import javax.annotation.Resource;
 import java.util.List;
+import java.util.Map;
 
 /**
  * 资源共享-群组人员关联表Service接口实现类
@@ -43,6 +45,9 @@ import java.util.List;
 @Service
 public class ShareGroupUserServiceImpl extends ServiceImpl<ShareGroupUserMapper, ShareGroupUser> implements ShareGroupUserService {
 
+    @Resource
+    private ShareGroupUserMapper shareGroupUserMapper;
+
 
     @Override
     public Page<ShareGroupUser> page(ShareGroupUserPageParam shareGroupUserPageParam) {
@@ -64,6 +69,33 @@ public class ShareGroupUserServiceImpl extends ServiceImpl<ShareGroupUserMapper,
         this.save(shareGroupUser);
     }
 
+    /**
+     * 添加资源共享-群组人员关联表
+     *
+     * @author honorfire
+     * @date  2025/06/18 14:16
+     */
+    @Transactional(rollbackFor = Exception.class)
+    @Override
+    public ShareGroupUser addone(ShareGroupUser shareGroupUser)
+    {
+        this.save(shareGroupUser);
+        return shareGroupUser;
+    }
+
+    /**
+     * 添加资源共享-群组人员关联表-批量
+     *
+     * @author honorfire
+     * @date  2025/06/18 14:16
+     */
+    @Transactional(rollbackFor = Exception.class)
+    @Override
+    public void addBatch(List<ShareGroupUser> shareGroupUserList)
+    {
+        this.saveBatch(shareGroupUserList);
+    }
+
     @Transactional(rollbackFor = Exception.class)
     @Override
     public void edit(ShareGroupEditParam shareGroupEditParam) {
@@ -72,16 +104,43 @@ public class ShareGroupUserServiceImpl extends ServiceImpl<ShareGroupUserMapper,
         this.updateById(shareGroupUser);
     }
 
+    /**
+     * 添加资源共享-群组人员关联表
+     *
+     * @author honorfire
+     * @date  2025/06/18 14:16
+     */
+    @Transactional(rollbackFor = Exception.class)
+    @Override
+    public ShareGroupUser editone(ShareGroupUser shareGroupUser)
+    {
+        this.updateById(shareGroupUser);
+        return shareGroupUser;
+    }
+
     @Transactional(rollbackFor = Exception.class)
     @Override
-    public void delete(List<ShareGroupUserIdParam> shareGroupUserIdParamList) {
+    public void delete(List<ShareGroupIdParam> shareGroupIdParamList) {
         // 执行删除
-        this.removeByIds(CollStreamUtil.toList(shareGroupUserIdParamList, ShareGroupUserIdParam::getId));
+        this.removeByIds(CollStreamUtil.toList(shareGroupIdParamList, ShareGroupIdParam::getGroupId));
+    }
+
+    /**
+     * 删除资源共享-群组人员关联表
+     *
+     * @author honorfire
+     * @date  2025/06/18 14:16
+     */
+    @Transactional(rollbackFor = Exception.class)
+    @Override
+    public void deleteByIds(List<String> deleteIdList)
+    {
+        this.removeByIds(deleteIdList);
     }
 
     @Override
-    public ShareGroupUser detail(ShareGroupUserIdParam shareGroupUserIdParam) {
-        return this.queryEntity(shareGroupUserIdParam.getId());
+    public ShareGroupUser detail(ShareGroupIdParam shareGroupIdParam) {
+        return this.queryEntity(shareGroupIdParam.getGroupId());
     }
 
     @Override
@@ -93,4 +152,16 @@ public class ShareGroupUserServiceImpl extends ServiceImpl<ShareGroupUserMapper,
         return shareGroupUser;
     }
 
+    /**
+     * 群组人员关联表-查询列表
+     *
+     * @author honorfire
+     * @date  2025/06/18 14:16
+     **/
+    @Override
+    public List<Map<String, Object>> queryGroupUserList(Map param)
+    {
+        return shareGroupUserMapper.queryGroupUserList(param);
+    }
+
 }

+ 8 - 0
snowy-plugin/snowy-plugin-sys/snowy-plugin-sys-func/src/main/java/vip/xiaonuo/sys/modular/user/mapper/SysUserMapper.java

@@ -15,9 +15,12 @@ package vip.xiaonuo.sys.modular.user.mapper;
 import com.baomidou.mybatisplus.annotation.InterceptorIgnore;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import org.apache.ibatis.annotations.Param;
 import vip.xiaonuo.sys.modular.user.entity.SysUser;
 
+import java.util.Map;
+
 /**
  * 用户Mapper接口
  *
@@ -34,4 +37,9 @@ public interface SysUserMapper extends BaseMapper<SysUser> {
      */
     @InterceptorIgnore(tenantLine = "true")
     void deleteIgnoreInterceptor(@Param("ew") LambdaQueryWrapper<SysUser> lambdaQueryWrapper);
+
+    /**
+     * 资源共享-群组-分页列表
+     */
+    Page<Map<String,Object>> getGroupList(@Param("param") Map param, @Param("page") Page<Object> page);
 }

+ 16 - 0
snowy-plugin/snowy-plugin-sys/snowy-plugin-sys-func/src/main/java/vip/xiaonuo/sys/modular/user/mapper/mapping/SysUserMapper.xml

@@ -5,4 +5,20 @@
     <delete id="deleteIgnoreInterceptor">
         DELETE FROM SYS_USER ${ew.customSqlSegment}
     </delete>
+
+    <select id="getGroupList" resultType="java.util.Map">
+        SELECT
+            t1.ID AS groupId,
+            t1.NAME AS groupIdName,
+            t1.ACCOUNT AS account
+        FROM SYS_USER t1
+        WHERE t1.DELETE_FLAG ='NOT_DELETE'
+        AND t1.IS_RESOURCEACCOUNT='1'
+        <if test="param.groupIdName !=null and param.groupIdName != ''">
+            and t1.NAME like concat("%",#{param.groupIdName},"%")
+        </if>
+        <if test="param.groupId !=null and param.groupId != ''">
+            and t1.NAME = #{param.groupId}
+        </if>
+    </select>
 </mapper>

+ 30 - 0
snowy-plugin/snowy-plugin-sys/snowy-plugin-sys-func/src/main/java/vip/xiaonuo/sys/modular/user/service/SysUserService.java

@@ -28,6 +28,7 @@ import vip.xiaonuo.sys.modular.user.result.*;
 import javax.servlet.http.HttpServletResponse;
 import java.io.IOException;
 import java.util.List;
+import java.util.Map;
 
 /**
  * 用户Service接口
@@ -85,6 +86,14 @@ public interface SysUserService extends IService<SysUser> {
      */
     void add(SysUserAddParam sysUserAddParam);
 
+    /**
+     * 添加用户
+     *
+     * @author xuyuxiang
+     * @date 2022/4/24 20:48
+     */
+    SysUser addOne(SysUser sysUser);
+
     /**
      * 编辑用户
      *
@@ -93,6 +102,14 @@ public interface SysUserService extends IService<SysUser> {
      */
     void edit(SysUserEditParam sysUserEditParam);
 
+    /**
+     * 编辑用户
+     *
+     * @author xuyuxiang
+     * @date 2022/4/24 21:13
+     */
+    SysUser editOne(SysUser sysUser);
+
     /**
      * 删除用户
      *
@@ -101,6 +118,14 @@ public interface SysUserService extends IService<SysUser> {
      */
     void delete(List<SysUserIdParam> sysUserIdParamList);
 
+    /**
+     * 删除用户
+     *
+     * @author xuyuxiang
+     * @date 2022/4/24 21:18
+     */
+    void deleteByIds(List<String> sysUserIdList);
+
     /**
      * 获取用户详情
      *
@@ -485,4 +510,9 @@ public interface SysUserService extends IService<SysUser> {
      * @date 2023/8/28 10:10
      **/
     String getAvatarById(SysUserIdParam sysUserIdParam);
+
+    /**
+     * 资源共享-群组-分页列表
+     */
+    Page<Map<String,Object>> getGroupList(Map param);
 }

+ 41 - 0
snowy-plugin/snowy-plugin-sys/snowy-plugin-sys-func/src/main/java/vip/xiaonuo/sys/modular/user/service/impl/SysUserServiceImpl.java

@@ -173,6 +173,9 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
     @Resource
     private MobileButtonApi mobileButtonApi;
 
+    @Resource
+    private SysUserMapper sysUserMapper;
+
     @Override
     public SysLoginUser getUserById(String id) {
         SysUser sysUser = this.getById(id);
@@ -258,6 +261,13 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
         CommonDataChangeEventCenter.doAddWithData(SysDataTypeEnum.USER.getValue(), JSONUtil.createArray().put(sysUser));
     }
 
+    @Transactional(rollbackFor = Exception.class)
+    @Override
+    public SysUser addOne(SysUser sysUser) {
+        this.save(sysUser);
+        return sysUser;
+    }
+
     private void checkParam(SysUserAddParam sysUserAddParam) {
         if (this.count(new LambdaQueryWrapper<SysUser>()
                 .eq(SysUser::getAccount, sysUserAddParam.getAccount())) > 0) {
@@ -300,6 +310,20 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
         CommonDataChangeEventCenter.doUpdateWithData(SysDataTypeEnum.USER.getValue(), JSONUtil.createArray().put(sysUser));
     }
 
+    /**
+     * 编辑用户
+     *
+     * @author xuyuxiang
+     * @date 2022/4/24 21:13
+     */
+    @Transactional(rollbackFor = Exception.class)
+    @Override
+    public SysUser editOne(SysUser sysUser)
+    {
+        this.updateById(sysUser);
+        return sysUser;
+    }
+
     private void checkParam(SysUserEditParam sysUserEditParam) {
         if (this.count(new LambdaQueryWrapper<SysUser>()
                 .eq(SysUser::getAccount, sysUserEditParam.getAccount())
@@ -366,6 +390,14 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
         }
     }
 
+    @Transactional(rollbackFor = Exception.class)
+    @Override
+    public void deleteByIds(List<String> sysUserIdList) {
+        // 执行删除
+        this.removeByIds(sysUserIdList);
+    }
+
+
     @Override
     public SysUser detail(SysUserIdParam sysUserIdParam) {
         return this.queryEntity(sysUserIdParam.getId());
@@ -1577,4 +1609,13 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
     public String getAvatarById(SysUserIdParam sysUserIdParam) {
         return this.detail(sysUserIdParam).getAvatar();
     }
+
+    /**
+     * 资源共享-群组-分页列表
+     */
+    @Override
+    public Page<Map<String,Object>> getGroupList(Map param)
+    {
+        return sysUserMapper.getGroupList(param,CommonPageRequest.defaultPage());
+    }
 }