zuy 2 лет назад
Родитель
Сommit
e4f3d068c3

+ 19 - 0
common/src/main/java/com/kym/common/IQuery.java

@@ -1,5 +1,8 @@
 package com.kym.common;
 
+import java.util.List;
+
+
 /**
  * 实体查询对象
  *
@@ -9,4 +12,20 @@ public class IQuery<T> {
     public int pageSize = -1;
     public int pageNum;
     public T query;
+
+
+    public static class  IPageBean<T>{
+        public int pageSize;
+        public int pageNum;
+        public int total;
+        public List<T> list;
+    }
+
+    public static IPageBean  newPageBean(long count,List<?> dtoList){
+        IPageBean page = new IPageBean();
+        page.total = (int) count;
+        page.list = dtoList;
+        return page;
+    }
+
 }

+ 8 - 2
common/src/main/java/com/kym/common/exception/BusinessException.java

@@ -1,6 +1,8 @@
 package com.kym.common.exception;
 
 import com.kym.common.constant.IResponseCode;
+import com.kym.common.constant.ResponseEnum;
+
 
 /**
  * @author skyline
@@ -23,8 +25,12 @@ public class BusinessException extends BaseException {
         super(responseEnum, args, message, cause);
     }
 
-    public BusinessException(int code,String message) {
-        super(code,message);
+    public BusinessException(int code, String message) {
+        super(code, message);
+    }
+
+    public BusinessException(String message) {
+        super(ResponseEnum.HTTP_STATUS_500.getCode(), message);
     }
 }
 

+ 2 - 0
common/src/main/java/com/kym/common/utils/OssUtil.java

@@ -18,6 +18,8 @@ import java.nio.file.Files;
 
 
 /**
+ * 私有写
+ * https://oss.console.aliyun.com/bucket/oss-cn-shenzhen/kym-static/overview
  * aliyun 对象存储工具类
  */
 public class OssUtil {

+ 7 - 0
miniapp/src/main/java/com/kym/miniapp/controller/DataDictController.java

@@ -40,4 +40,11 @@ public class DataDictController extends IController {
     }
 
 
+    @ApiLog("字典列表")
+    @PostMapping("listV2")
+    public R<?> listV2(@RequestBody IQuery<DataDict> query) {
+        return resp(() -> dataDictService.listV2(query));
+    }
+
+
 }

+ 21 - 6
miniapp/src/main/java/com/kym/miniapp/controller/FileController.java

@@ -3,10 +3,11 @@ package com.kym.miniapp.controller;
 import cn.hutool.core.io.FileUtil;
 import com.kym.common.R;
 import com.kym.common.annotation.ApiLog;
+import com.kym.common.controller.IController;
 import com.kym.common.utils.CommUtil;
-import com.kym.entity.miniapp.Attachment;
 import com.kym.service.miniapp.AttachmentService;
 import jakarta.annotation.Resource;
+import org.springframework.web.bind.annotation.PathVariable;
 import org.springframework.web.bind.annotation.PostMapping;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RestController;
@@ -22,18 +23,32 @@ import java.io.IOException;
  */
 @RestController
 @RequestMapping("/file")
-public class FileController {
+public class FileController extends IController {
 
     @Resource
     private AttachmentService attachmentService;
 
     @ApiLog("文件上传")
     @PostMapping("/upload")
-    public R<?> upload(MultipartFile file) throws IOException {
+    public R<?> upload(MultipartFile file)  {
         var fileName = file.getOriginalFilename();
-        CommUtil.asserts(!CommUtil.isExecutable(FileUtil.getSuffix(fileName)), "上传文件类型不支持");
-        Attachment attachment = attachmentService.upload(file);
-        return R.success(attachment);
+        CommUtil.asserts(!CommUtil.isExecutable(FileUtil.getSuffix(fileName)),"上传文件类型不支持");
+        return resp(()-> {
+            try {
+                return attachmentService.upload(file);
+            } catch (IOException e) {
+                throw new RuntimeException(e);
+            }
+        });
+    }
+
+
+
+    @ApiLog("文件删除")
+    @PostMapping("/delete/{fileId}")
+    public R<?> delete(@PathVariable String fileId){
+        CommUtil.asserts(!CommUtil.isEmptyOrNull(fileId),"删除文件不能为空");
+        return resp((t)->attachmentService.delete(fileId));
     }
 
 }

+ 3 - 3
miniapp/src/main/resources/application.yml

@@ -134,8 +134,8 @@ upload:
 
 oss:
   endpoint: oss-cn-shenzhen.aliyuncs.com
-  keyId:
-  keySecret:
+  keyId: LTAI5tEPpmhZGDRb6sgqhiA2
+  keySecret: HjlRw844NVP894jAzZna45Vns6axes
   bucket: kym-static
-  prefix: static.kuaiyuman.cn
+  prefix: http://static.kuaiyuman.cn  # 前端访问拼接为 prefix+uuid,例 http://static.kuaiyuman.cn /b2ee8dbd259d4f44a63a8e36c8121f89.vue
 

+ 2 - 0
service/src/main/java/com/kym/service/miniapp/AttachmentService.java

@@ -18,4 +18,6 @@ import java.io.IOException;
 public interface AttachmentService extends IService<Attachment> {
 
     Attachment upload(MultipartFile file) throws IOException;
+
+    void delete(String fileId);
 }

+ 2 - 0
service/src/main/java/com/kym/service/miniapp/DataDictService.java

@@ -16,4 +16,6 @@ import com.baomidou.mybatisplus.extension.service.IService;
 public interface DataDictService extends IService<DataDict> {
 
     Object list(IQuery<DataDict> query);
+
+    Object listV2(IQuery<DataDict> query);
 }

+ 24 - 5
service/src/main/java/com/kym/service/miniapp/impl/AttachmentServiceImpl.java

@@ -3,18 +3,20 @@ package com.kym.service.miniapp.impl;
 import cn.dev33.satoken.stp.StpUtil;
 import cn.hutool.core.io.FileUtil;
 import cn.hutool.core.lang.UUID;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.kym.common.utils.CommUtil;
+import com.kym.common.utils.OssUtil;
 import com.kym.entity.miniapp.Attachment;
 import com.kym.mapper.miniapp.AttachmentMapper;
 import com.kym.service.miniapp.AttachmentService;
-import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Service;
 import org.springframework.web.multipart.MultipartFile;
 
 import java.io.File;
 import java.io.IOException;
+import java.util.Objects;
 
 
 /**
@@ -48,19 +50,36 @@ public class AttachmentServiceImpl extends ServiceImpl<AttachmentMapper, Attachm
         attachment.setSize(file.getSize());
         attachment.setUuid(UUID.fastUUID().toString(true) + "." + FileUtil.getSuffix(fileName));
         attachment.setUploadBy(userId);
+//        attachment.setUploadName("admin");
         attachment.setUploadName(CommUtil.null2String(StpUtil.getSession().get("username")));
         attachment.setIsDelete(false);
 
         String applicationPath = System.getProperty("user.dir");
 
-        File dir = new File(applicationPath,fileStoragePath);
-        if(!dir.exists()){
-            CommUtil.asserts(dir.mkdirs(),"文件上传异常");
+        File dir = new File(applicationPath, fileStoragePath);
+        if (!dir.exists()) {
+            CommUtil.asserts(dir.mkdirs(), "文件上传异常");
         }
-        File storeFile = new File(dir,attachment.getUuid());
+        File storeFile = new File(dir, attachment.getUuid());
         file.transferTo(storeFile);
 
+        OssUtil.upload(attachment.getUuid(), storeFile);
+
         baseMapper.insert(attachment);
         return attachment;
     }
+
+    @Override
+    public void delete(String fileId) {
+        StpUtil.checkLogin();
+        Long userId = CommUtil.null2Long(StpUtil.getSession().get("userId"));
+        Attachment attachment = baseMapper.selectOne(Wrappers.query(Attachment.class).eq("uuid", fileId));
+        CommUtil.asserts(null!=attachment&& Objects.equals(attachment.getUploadBy(), userId),"无删除权限");
+        String applicationPath = System.getProperty("user.dir");
+
+        File dir = new File(applicationPath, fileStoragePath);
+        File storeFile = new File(dir, fileId);
+        storeFile.delete();
+        OssUtil.delete(fileId);
+    }
 }

+ 25 - 15
service/src/main/java/com/kym/service/miniapp/impl/DataDictServiceImpl.java

@@ -3,8 +3,6 @@ package com.kym.service.miniapp.impl;
 import cn.hutool.core.util.ClassUtil;
 import cn.hutool.core.util.ReflectUtil;
 import com.baomidou.dynamic.datasource.annotation.DS;
-import com.baomidou.mybatisplus.core.conditions.Wrapper;
-import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.extension.conditions.query.QueryChainWrapper;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.github.pagehelper.PageHelper;
@@ -18,6 +16,7 @@ import org.springframework.stereotype.Service;
 
 import java.lang.reflect.Field;
 import java.lang.reflect.Modifier;
+import java.util.List;
 
 
 /**
@@ -32,31 +31,42 @@ import java.lang.reflect.Modifier;
 @DS("db-miniapp")
 public class DataDictServiceImpl extends ServiceImpl<DataDictMapper, DataDict> implements DataDictService {
 
+
     @Override
     public Object list(IQuery<DataDict> query) {
         PageHelper.startPage(query.pageNum, query.pageSize);
-        Wrapper wrapper = getWrapper(query);
-        return new PageInfo<>(list(wrapper));
+        List<DataDict> list = list();
+        return new PageInfo<>(list);
     }
 
-    public Wrapper<?> getWrapper(IQuery<?> query) {
-        Object queryObject = query.query;
-        if (null == queryObject) {
-            return new QueryWrapper<>();
+
+    @Override
+    public Object listV2(IQuery<DataDict> query) {
+        QueryChainWrapper<DataDict> wrapper = getWrapper(query.query, DataDict.class);
+        Long count = wrapper.count();
+        List<DataDict> list = wrapper.list();
+        return IQuery.newPageBean(count,list);
+    }
+
+
+
+    public <T> QueryChainWrapper<T> getWrapper(Object query, Class<T> clz) {
+        QueryChainWrapper<T> wrapper = new QueryChainWrapper<>(clz);
+        if (null == query) {
+            return wrapper;
         }
 
-        QueryChainWrapper<?> wrapper = new QueryChainWrapper<>(queryObject.getClass());
 
-        Field[] fields = ClassUtil.getDeclaredFields(queryObject.getClass());
-        if(!CommUtil.isEmptyOrNull(fields)){
+        Field[] fields = ClassUtil.getDeclaredFields(query.getClass());
+        if (!CommUtil.isEmptyOrNull(fields)) {
             for (Field field : fields) {
                 int modifiers = field.getModifiers();
-                if(Modifier.isFinal(modifiers)||Modifier.isStatic(modifiers)){
+                if (Modifier.isFinal(modifiers) || Modifier.isStatic(modifiers)) {
                     continue;
                 }
-                Object fieldValue = ReflectUtil.getFieldValue(queryObject, field);
-                if(!CommUtil.isEmptyOrNull(fieldValue)){
-                    wrapper.eq(CommUtil.toDbColumn(field.getName()),fieldValue);
+                Object fieldValue = ReflectUtil.getFieldValue(query, field);
+                if (!CommUtil.isEmptyOrNull(fieldValue)) {
+                    wrapper.eq(CommUtil.toDbColumn(field.getName()), fieldValue);
                 }
             }
         }