Parcourir la source

1.查询当前默认创建空间大小 单位MB
2.修改当前默认创建空间大小 单位MB
3.查询所有用户的存储空间大小 单位MB
4.更改用户的存储空间大小 单位MB

jasonk5949 il y a 8 mois
Parent
commit
2c2210cbe3

+ 1 - 1
snowy-plugin/snowy-plugin-disk/snowy-plugin-disk-api/src/main/java/vip/xiaonuo/disk/api/NetDiskApi.java

@@ -6,7 +6,7 @@ package vip.xiaonuo.disk.api;
 public interface NetDiskApi {
 
     /**
-     * 添加用户角色
+     * 添加用户角色,初始化网盘空间大小
      *
      * @param userId 用户ID
      */

+ 79 - 0
snowy-plugin/snowy-plugin-disk/snowy-plugin-disk-func/src/main/java/vip/xiaonuo/disk/controller/StorageController.java

@@ -0,0 +1,79 @@
+package vip.xiaonuo.disk.controller;
+
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.qiwenshare.common.result.RestResult;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.web.bind.annotation.*;
+import vip.xiaonuo.common.pojo.CommonResult;
+import vip.xiaonuo.disk.domain.StorageBean;
+import vip.xiaonuo.disk.dto.storage.GetUserStorageDTO;
+import vip.xiaonuo.disk.service.IStorageService;
+import vip.xiaonuo.disk.vo.storage.StorageBeanVO;
+
+import javax.annotation.Resource;
+import java.util.List;
+
+/**
+ * 存储空间 controller
+ *
+ * @author jinjilong
+ */
+@RestController
+@Slf4j
+public class StorageController {
+
+    @Resource
+    private IStorageService storageService;
+
+
+    /**
+     * 查询当前默认创建空间大小 单位MB
+     *
+     * @return 默认创建空间大小
+     */
+    @GetMapping("/storage/getDefaultStorage")
+    public CommonResult<Long> getDefaultStorage() {
+        return storageService.getDefaultStorage();
+    }
+
+    /**
+     * 修改当前默认创建空间大小 单位MB
+     *
+     * @return 修改结果
+     */
+    @GetMapping("/storage/updateDefaultStorage")
+    public CommonResult<String> updateDefaultStorage(@RequestParam(value = "size") Long size) {
+        return storageService.updateDefaultStorage(size);
+    }
+
+
+    /**
+     * 查询所有用户的存储空间大小 单位MB
+     *
+     * @param getUserStorageDTO 查询条件
+     *
+     * @return 所有用户的存储空间大小
+     */
+    @PostMapping("/storage/getUserStorageList")
+    public CommonResult<Page<StorageBeanVO>> getUserStorageList(@RequestBody GetUserStorageDTO getUserStorageDTO) {
+        return storageService.getUserStorageList(getUserStorageDTO);
+    }
+
+    /**
+     * 更改用户的存储空间大小 单位MB
+     *
+     * @param getUserStorageDTO 更改条件
+     *
+     * @return 更改结果
+     */
+    @PostMapping("/storage/updateUserStorage")
+    public CommonResult<String> updateUserStorage(@RequestBody GetUserStorageDTO getUserStorageDTO) {
+        return storageService.updateUserStorage(getUserStorageDTO);
+    }
+
+
+
+
+
+
+}

+ 68 - 0
snowy-plugin/snowy-plugin-disk/snowy-plugin-disk-func/src/main/java/vip/xiaonuo/disk/dto/storage/GetUserStorageDTO.java

@@ -0,0 +1,68 @@
+package vip.xiaonuo.disk.dto.storage;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.List;
+
+/**
+ * 存储空间 DTO
+ *
+ * @author jinjilong
+ */
+@Data
+public class GetUserStorageDTO {
+
+    /**
+     * 用户ID
+     */
+    private Long userId;
+
+    /**
+     * 用户名称
+     */
+    private String username;
+
+    /**
+     * 用户昵称
+     */
+    private String nickname;
+
+    /**
+     * 用户名称或账号
+     */
+    private String usernameOrNickname;
+
+    /**
+     * 角色id
+     */
+    private Long roleId;
+
+    /**
+     * 总存储大小
+     */
+    private Long totalStorageSize;
+
+    /**
+     * 用户id列表
+     */
+    private List<Long> userIdList;
+
+    /** 当前页 */
+    @ApiModelProperty(value = "当前页码")
+    private Integer current;
+
+    /** 每页条数 */
+    @ApiModelProperty(value = "每页条数")
+    private Integer size;
+
+    /** 排序字段 */
+    @ApiModelProperty(value = "排序字段,字段驼峰名称,如:userName")
+    private String sortField;
+
+    /** 排序方式 */
+    @ApiModelProperty(value = "排序方式,升序:ASCEND;降序:DESCEND")
+    private String sortOrder;
+
+
+}

+ 23 - 0
snowy-plugin/snowy-plugin-disk/snowy-plugin-disk-func/src/main/java/vip/xiaonuo/disk/mapper/StorageMapper.java

@@ -2,9 +2,32 @@ package vip.xiaonuo.disk.mapper;
 
 
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import org.apache.ibatis.annotations.Param;
+import org.apache.poi.ss.formula.functions.T;
 import vip.xiaonuo.disk.domain.StorageBean;
+import vip.xiaonuo.disk.dto.storage.GetUserStorageDTO;
+import vip.xiaonuo.disk.vo.storage.StorageBeanVO;
+
+import java.util.List;
 
 public interface StorageMapper  extends BaseMapper<StorageBean> {
 
+    /**
+     * 获取用户存储列表
+     *
+     * @param getUserStorageDTO 查询条件
+     * @return 用户存储列表
+     */
+    Page<StorageBeanVO> getUserStorageList(@Param("page") Page<Object> page, @Param("getUserStorageDTO") GetUserStorageDTO getUserStorageDTO);
+
+    /**
+     * 根据用户ID获取角色名称列表
+     *
+     * @param userId 用户ID
+     * @return 角色名称列表
+     */
+    List<String> getUserRoleNameListById(@Param("userId") String userId);
+
 
 }

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

@@ -7,4 +7,25 @@
 <mapper namespace="vip.xiaonuo.disk.mapper.StorageMapper">
 
 
+    <select id="getUserStorageList" resultType="vip.xiaonuo.disk.vo.storage.StorageBeanVO">
+        select us.ID as userId, us.ACCOUNT as userName, us.NAME as nickName, st.TOTAL_STORAGE_SIZE as totalStorageSize  from STORAGE as st left join SYS_USER as us on st.USER_ID = us.ID
+        <where>
+                us.DELETE_FLAG = 'NOT_DELETE'
+            <if test="getUserStorageDTO.usernameOrNickname != null and getUserStorageDTO.usernameOrNickname != ''">
+                (
+                us.NAME LIKE CONCAT('/', '%', #{getUserStorageDTO.usernameOrNickname}, '%', '/')
+                OR us.ACCOUNT LIKE CONCAT('/', '%', #{getUserStorageDTO.usernameOrNickname}, '%', '/')
+                )
+            </if>
+            <if test="getUserStorageDTO.roleId != null">
+                and us.ID in (select re.OBJECT_ID from SYS_RELATION as re where re.CATEGORY = 'SYS_USER_HAS_ROLE' and re.TARGET_ID = #{getUserStorageDTO.roleId})
+            </if>
+        </where>
+    </select>
+
+    <select id="getUserRoleNameListById" resultType="java.lang.String">
+        select ro.NAME from SYS_ROLE as ro left join  SYS_RELATION as re on ro.ID = re.TARGET_ID where re.OBJECT_ID = #{userId}
+    </select>
+
+
 </mapper>

+ 37 - 0
snowy-plugin/snowy-plugin-disk/snowy-plugin-disk-func/src/main/java/vip/xiaonuo/disk/service/IStorageService.java

@@ -1,9 +1,46 @@
 package vip.xiaonuo.disk.service;
 
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.IService;
+import com.qiwenshare.common.result.RestResult;
+import vip.xiaonuo.common.pojo.CommonResult;
 import vip.xiaonuo.disk.domain.StorageBean;
+import vip.xiaonuo.disk.dto.storage.GetUserStorageDTO;
+import vip.xiaonuo.disk.vo.storage.StorageBeanVO;
+
+import java.util.List;
 
 public interface IStorageService extends IService<StorageBean> {
     Long getTotalStorageSize(String userId);
     boolean checkStorage(String userId, Long fileSize);
+
+    /**
+     * 查询当前默认创建空间大小 单位MB
+     *
+     * @return 默认创建空间大小
+     */
+    CommonResult<Long> getDefaultStorage();
+
+    /**
+     * 修改当前默认创建空间大小 单位MB
+     *
+     * @return 修改结果
+     */
+    CommonResult<String> updateDefaultStorage(Long size);
+
+    /**
+     * 查询所有用户的存储空间大小 单位MB
+     *
+     * @return 所有用户的存储空间大小
+     */
+    CommonResult<Page<StorageBeanVO>> getUserStorageList(GetUserStorageDTO getUserStorageDTO);
+
+    /**
+     * 更改用户的存储空间大小 单位MB
+     *
+     * @param getUserStorageDTO 更改条件
+     *
+     * @return 更改结果
+     */
+    CommonResult<String> updateUserStorage(GetUserStorageDTO getUserStorageDTO);
 }

+ 75 - 0
snowy-plugin/snowy-plugin-disk/snowy-plugin-disk-func/src/main/java/vip/xiaonuo/disk/service/impl/StorageService.java

@@ -1,7 +1,13 @@
 package vip.xiaonuo.disk.service.impl;
 
 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 com.qiwenshare.common.result.RestResult;
+import vip.xiaonuo.common.page.CommonPageRequest;
+import vip.xiaonuo.common.pojo.CommonResult;
+import vip.xiaonuo.disk.dto.storage.GetUserStorageDTO;
 import vip.xiaonuo.disk.service.IStorageService;
 import vip.xiaonuo.disk.domain.StorageBean;
 import vip.xiaonuo.disk.domain.SysParam;
@@ -11,8 +17,10 @@ import vip.xiaonuo.disk.mapper.UserFileMapper;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
+import vip.xiaonuo.disk.vo.storage.StorageBeanVO;
 
 import javax.annotation.Resource;
+import java.util.List;
 
 @Slf4j
 @Service
@@ -25,6 +33,7 @@ public class StorageService extends ServiceImpl<StorageMapper, StorageBean> impl
     @Resource
     UserFileMapper userFileMapper;
 
+
     public Long getTotalStorageSize(String userId) {
         LambdaQueryWrapper<StorageBean> lambdaQueryWrapper = new LambdaQueryWrapper<>();
         lambdaQueryWrapper.eq(StorageBean::getUserId, userId);
@@ -83,4 +92,70 @@ public class StorageService extends ServiceImpl<StorageMapper, StorageBean> impl
         return true;
 
     }
+
+    @Override
+    public CommonResult<Long> getDefaultStorage() {
+        // 查询sysparam表,根据totalStorageSize标识查询
+        LambdaQueryWrapper<SysParam> lambdaQueryWrapper1 = new LambdaQueryWrapper<>();
+        lambdaQueryWrapper1.eq(SysParam::getSysParamKey, "totalStorageSize");
+        SysParam sysParam = sysParamMapper.selectOne(lambdaQueryWrapper1);
+        return CommonResult.data(Long.parseLong(sysParam.getSysParamValue()));
+    }
+
+    @Override
+    public CommonResult<String> updateDefaultStorage(Long size) {
+        // 查询sysparam表,根据totalStorageSize标识查询
+        LambdaQueryWrapper<SysParam> lambdaQueryWrapper1 = new LambdaQueryWrapper<>();
+        lambdaQueryWrapper1.eq(SysParam::getSysParamKey, "totalStorageSize");
+        SysParam sysParam = sysParamMapper.selectOne(lambdaQueryWrapper1);
+        // 进行修改空间大小
+        sysParam.setSysParamValue(String.valueOf(size));
+        int i = sysParamMapper.updateById(sysParam);
+        if (i > 0) {
+            return CommonResult.data("修改成功");
+        }
+        return CommonResult.error("修改失败");
+    }
+
+    @Override
+    public CommonResult<Page<StorageBeanVO>> getUserStorageList(GetUserStorageDTO getUserStorageDTO) {
+        Page<StorageBeanVO> storageBeanList = storageMapper.getUserStorageList(CommonPageRequest.defaultPage(), getUserStorageDTO);
+        if (storageBeanList.getRecords() != null && storageBeanList.getSize() > 0) {
+            // 如果查出的数据不为空,关联用户的角色
+            for (StorageBeanVO storageBean : storageBeanList.getRecords()) {
+                String userId = storageBean.getUserId();
+                List<String> roleNameList = storageMapper.getUserRoleNameListById(userId);
+                if (roleNameList != null && roleNameList.size() > 0) {
+                    storageBean.setRoleName(roleNameList);
+                }
+            }
+        }
+        return CommonResult.data(storageBeanList);
+    }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public CommonResult<String> updateUserStorage(GetUserStorageDTO getUserStorageDTO) {
+        // 校验是否有此用户的存储空间
+        List<Long> userIdList = getUserStorageDTO.getUserIdList();
+        if (userIdList == null || userIdList.size() == 0) {
+            return CommonResult.error("用户ID不能为空");
+        }
+        try {
+            for (Long userId : userIdList) {
+                QueryWrapper<StorageBean> queryWrapper = new QueryWrapper<>();
+                queryWrapper.lambda().eq(StorageBean::getUserId, userId);
+                StorageBean storageBean = storageMapper.selectOne(queryWrapper);
+                if (storageBean != null) {
+                    storageBean.setTotalStorageSize(getUserStorageDTO.getTotalStorageSize());
+                    storageMapper.updateById(storageBean);
+                }
+            }
+        } catch (Exception ex) {
+            log.error("更新用户存储空间失败", ex);
+        }
+        return CommonResult.ok("更新成功");
+    }
+
+
 }

+ 20 - 0
snowy-plugin/snowy-plugin-disk/snowy-plugin-disk-func/src/main/java/vip/xiaonuo/disk/service/impl/UserService.java

@@ -9,6 +9,10 @@ import com.qiwenshare.common.util.DateUtil;
 import com.qiwenshare.common.util.HashUtils;
 import com.qiwenshare.common.util.PasswordUtil;
 import com.qiwenshare.common.util.security.JwtUser;
+import vip.xiaonuo.disk.domain.StorageBean;
+import vip.xiaonuo.disk.domain.SysParam;
+import vip.xiaonuo.disk.mapper.StorageMapper;
+import vip.xiaonuo.disk.mapper.SysParamMapper;
 import vip.xiaonuo.disk.service.IUserService;
 import vip.xiaonuo.disk.component.JwtComp;
 import vip.xiaonuo.disk.component.UserDealComp;
@@ -42,6 +46,12 @@ public class UserService extends ServiceImpl<UserMapper, UserBean> implements IU
     @Resource
     JwtComp jwtComp;
 
+    @Resource
+    private SysParamMapper sysParamMapper;
+
+    @Resource
+    private StorageMapper storageMapper;
+
     @Override
     public String getUserIdByToken(String token) {
         Claims c = null;
@@ -150,7 +160,17 @@ public class UserService extends ServiceImpl<UserMapper, UserBean> implements IU
 
     @Override
     public void insertUserRole(String userId) {
+        // 新增角色
         userMapper.insertUserRole(userId, 2);
+        // 初始化用户的网盘空间大小
+        LambdaQueryWrapper<SysParam> lambdaQueryWrapper1 = new LambdaQueryWrapper<>();
+        lambdaQueryWrapper1.eq(SysParam::getSysParamKey, "totalStorageSize");
+        SysParam sysParam = sysParamMapper.selectOne(lambdaQueryWrapper1);
+        long totalStorageSize = Long.parseLong(sysParam.getSysParamValue());
+        StorageBean storageBean = new StorageBean();
+        storageBean.setUserId(userId);
+        storageBean.setTotalStorageSize(totalStorageSize);
+        storageMapper.insert(storageBean);
     }
 
 }

+ 56 - 0
snowy-plugin/snowy-plugin-disk/snowy-plugin-disk-func/src/main/java/vip/xiaonuo/disk/vo/storage/StorageBeanVO.java

@@ -0,0 +1,56 @@
+package vip.xiaonuo.disk.vo.storage;
+
+import lombok.Data;
+
+import java.util.List;
+
+@Data
+public class StorageBeanVO {
+
+    /**
+     * 主键id
+     */
+    private Long storageId;
+
+    /**
+     * 用户id
+     */
+    private String userId;
+
+    /**
+     * 用户的账号
+     */
+    private String userName;
+
+    /**
+     * 用户的昵称
+     */
+    private String nickName;
+
+    /**
+     * 用户的角色名称
+     */
+    private List<String> roleName;
+
+    /**
+     * 占用存储大小
+     */
+    private Long storageSize;
+
+    /**
+     * 总存储大小
+     */
+    private Long totalStorageSize;
+
+    /**
+     * 修改时间
+     */
+    private String modifyTime;
+
+    /**
+     * 修改用户id
+     */
+    private Long modifyUserId;
+
+
+}

+ 1 - 1
snowy-plugin/snowy-plugin-sys/snowy-plugin-sys-func/src/main/java/vip/xiaonuo/sys/core/listener/SysDataChangeListener.java

@@ -46,7 +46,7 @@ public class SysDataChangeListener implements CommonDataChangeListener {
             // 重新缓存当前登录用户信息
             StpUtil.getTokenSession().set("loginUser", saBaseLoginUser);
         } else if (dataType.equals(SysDataTypeEnum.USER.getValue())) {
-            // 用户新增时,同时将用户添加至网盘的角色表中
+            // 用户新增时,同时将用户添加至网盘的角色表中,也初始化这个用户的默认网盘大小
             netDiskApi.insertUserRole(dataIdList.get(0));
         }
     }