zhijiezhao 2 vuotta sitten
vanhempi
commit
843af39b3b

+ 140 - 19
src/main/java/com/caimei/controller/admin/auth/DatabaseApi.java

@@ -1,21 +1,23 @@
 package com.caimei.controller.admin.auth;
 
+import com.alibaba.fastjson.JSONObject;
+import com.caimei.annotation.CurrentUser;
 import com.caimei.model.ResponseJson;
+import com.caimei.model.po.SysUser;
 import com.caimei.model.vo.FileTreeVo;
 import com.caimei.service.data.DatabaseService;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiImplicitParam;
+import io.swagger.annotations.ApiImplicitParams;
 import io.swagger.annotations.ApiOperation;
 import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
+import org.springframework.web.bind.annotation.*;
+
 
-import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
-import java.io.IOException;
 import java.util.HashMap;
+import java.util.List;
 
 /**
  * @author zzj
@@ -30,36 +32,155 @@ public class DatabaseApi {
     private final DatabaseService databaseService;
 
     @ApiOperation("获取当前路径下文件")
-    @ApiImplicitParam(name = "fileId",value = "文件Id")
+    @ApiImplicitParam(name = "fileId", required = true, value = "文件Id")
     @GetMapping("/path/file")
-    public ResponseJson<FileTreeVo> getFileById(Integer fileId) {
-       return databaseService.getFileById(fileId);
+    public ResponseJson<List<FileTreeVo>> getFileById(@CurrentUser SysUser sysUser, Integer fileId) {
+        if (null == sysUser) {
+            return ResponseJson.error("用户信息异常", null);
+        }
+        // 获取供应商用户id
+        Integer userIdentity = sysUser.getUserIdentity();
+        Integer authUserId = 2 == userIdentity ? sysUser.getId() : 3 == userIdentity ? sysUser.getParentId() : null;
+        if (null == authUserId) {
+            return ResponseJson.error("供应商用户id不能为空", null);
+        }
+        return databaseService.getFileById(fileId, authUserId);
     }
 
+    @ApiOperation("面包屑")
+    @ApiImplicitParam(name = "fileId", required = true, value = "当前文件夹Id")
+    @GetMapping("/path/crumbs")
+    public ResponseJson<FileTreeVo> getCrumbs(@CurrentUser SysUser sysUser, Integer fileId) {
+        if (null == sysUser) {
+            return ResponseJson.error("用户信息异常", null);
+        }
+        // 获取供应商用户id
+        Integer userIdentity = sysUser.getUserIdentity();
+        Integer authUserId = 2 == userIdentity ? sysUser.getId() : 3 == userIdentity ? sysUser.getParentId() : null;
+        if (null == authUserId) {
+            return ResponseJson.error("供应商用户id不能为空", null);
+        }
+        return databaseService.getCrumbs(fileId, authUserId);
+    }
 
     @ApiOperation("创建文件夹")
-    @ApiImplicitParam(name = "fileId",value = "当前文件夹Id")
-    @GetMapping("/path/package")
-    public ResponseJson createPackage(Integer fileId,String packageName){
-        return databaseService.createPackage(fileId,packageName);
+    @ApiImplicitParams({
+            @ApiImplicitParam(name = "fileId", required = true, value = "当前文件夹Id"),
+            @ApiImplicitParam(name = "fileName", required = true, value = "文件夹名称")
+    })
+    @PostMapping("/path/package")
+    public ResponseJson createPackage(@CurrentUser SysUser sysUser, @RequestBody String param) {
+        if (null == sysUser) {
+            return ResponseJson.error("用户信息异常", null);
+        }
+        // 获取供应商用户id
+        Integer userIdentity = sysUser.getUserIdentity();
+        Integer authUserId = 2 == userIdentity ? sysUser.getId() : 3 == userIdentity ? sysUser.getParentId() : null;
+        if (null == authUserId) {
+            return ResponseJson.error("供应商用户id不能为空", null);
+        }
+        JSONObject jsonObject = JSONObject.parseObject(param);
+        Integer fileId = jsonObject.getInteger("fileId");
+        String fileName = jsonObject.getString("fileName");
+        return databaseService.createPackage(authUserId, fileId, fileName);
+    }
+
+    @ApiOperation("修改文件/文件夹名")
+    @ApiImplicitParams({
+            @ApiImplicitParam(name = "fileId", required = true, value = "当前文件夹Id"),
+            @ApiImplicitParam(name = "fileName", required = true, value = "修改的文件名称"),
+            @ApiImplicitParam(name = "packageType", required = true, value = "0是文件夹,1是文件")
+    })
+    @PostMapping("/update/fileName")
+    public ResponseJson updatePackage(@RequestBody String params) {
+        JSONObject parseObject = JSONObject.parseObject(params);
+        Integer fileId = parseObject.getInteger("fileId");
+        String fileName = parseObject.getString("fileName");
+        Integer packageType = parseObject.getInteger("packageType");
+        return databaseService.updatePackage(fileId, fileName, packageType);
+    }
+
+    @ApiOperation("移动文件")
+    @ApiImplicitParams({
+            @ApiImplicitParam(name = "fileId", required = true, value = "当前文件Id"),
+            @ApiImplicitParam(name = "parentId", required = true, value = "目标文件夹Id")
+    })
+    @PostMapping("/move/package")
+    public ResponseJson movePackage(@RequestBody String param ) {
+        JSONObject jsonObject = JSONObject.parseObject(param);
+        Integer fileId = jsonObject.getInteger("fileId");
+        Integer parentId=jsonObject.getInteger("parentId");
+        return databaseService.movePackage(fileId, parentId);
+    }
+
+    @ApiOperation("文件夹目录")
+    @GetMapping("/file/tree")
+    public ResponseJson<FileTreeVo> getPackageTree(@CurrentUser SysUser sysUser){
+        if (null == sysUser) {
+            return ResponseJson.error("用户信息异常", null);
+        }
+        // 获取供应商用户id
+        Integer userIdentity = sysUser.getUserIdentity();
+        Integer authUserId = 2 == userIdentity ? sysUser.getId() : 3 == userIdentity ? sysUser.getParentId() : null;
+        if (null == authUserId) {
+            return ResponseJson.error("供应商用户id不能为空", null);
+        }
+        return databaseService.getPackageTree(authUserId);
     }
 
     @ApiOperation("下载文件夹")
-    @ApiImplicitParam(name = "fileId",value = "当前文件夹Id")
+    @ApiImplicitParams({
+            @ApiImplicitParam(name = "fileId", required = true, value = "当前文件夹Id"),
+            @ApiImplicitParam(name = "fileName", required = true, value = "文件夹名称")
+    })
     @GetMapping("/path/package/zip")
-    public void downLoadPackageZip(Integer fileId,String packageName, HttpServletResponse response){
-        databaseService.downLoadZip(fileId,packageName,response);
+    public ResponseJson downLoadPackageZip(@CurrentUser SysUser sysUser, Integer fileId, String fileName, HttpServletResponse response) {
+        if (null == sysUser) {
+            return ResponseJson.error("用户信息异常", null);
+        }
+        // 获取供应商用户id
+        Integer userIdentity = sysUser.getUserIdentity();
+        Integer authUserId = 2 == userIdentity ? sysUser.getId() : 3 == userIdentity ? sysUser.getParentId() : null;
+        if (null == authUserId) {
+            return ResponseJson.error("供应商用户id不能为空", null);
+        }
+        return databaseService.downLoadZip(fileId, fileName, authUserId, response);
+    }
+
+    @ApiOperation("删除文件")
+    @ApiImplicitParam(name = "fileId", required = true, value = "当前文件Id")
+    @PostMapping("/delete/file")
+    public ResponseJson deleteFiles(@RequestBody String fileId) {
+        JSONObject jsonObject = JSONObject.parseObject(fileId);
+        String fil = jsonObject.getString("fileId");
+        return databaseService.deleteFiles(fil);
     }
 
     @ApiOperation("上传结果")
-    @GetMapping("/oss/upload/result")
-    public ResponseJson getOssUploadResult(String fileName,String ossName,String ossUrl,String fileSize,Integer parentId){
-        return databaseService.getOssUploadResult(fileName,ossName,ossUrl,fileSize,parentId);
+    @ApiImplicitParam(name = "params", required = true, value = "fileName:文件原名;ossName:阿里云文件名:ossUrl:阿里云文件url;fileSize:文件大小;parentId:父级文件夹id")
+    @PostMapping("/oss/upload/result")
+    public ResponseJson getOssUploadResult(@CurrentUser SysUser sysUser, @RequestBody String params) {
+        if (null == sysUser) {
+            return ResponseJson.error("用户信息异常", null);
+        }
+        // 获取供应商用户id
+        Integer userIdentity = sysUser.getUserIdentity();
+        Integer authUserId = 2 == userIdentity ? sysUser.getId() : 3 == userIdentity ? sysUser.getParentId() : null;
+        if (null == authUserId) {
+            return ResponseJson.error("供应商用户id不能为空", null);
+        }
+        JSONObject parseObject = JSONObject.parseObject(params);
+        String fileName = parseObject.getString("fileName");
+        String ossName = parseObject.getString("ossName");
+        String ossUrl = parseObject.getString("ossUrl");
+        String fileSize = parseObject.getString("fileSize");
+        Integer parentId = parseObject.getInteger("parentId");
+        return databaseService.getOssUploadResult(authUserId, fileName, ossName, ossUrl, fileSize, parentId);
     }
 
     @ApiOperation("获取阿里云token")
     @GetMapping("/oss/token")
-    public ResponseJson<HashMap<String,String>> ossTokenGet(){
+    public ResponseJson<HashMap<String, String>> ossTokenGet() {
         return databaseService.ossTokenGet();
     }
 }

+ 1 - 3
src/main/java/com/caimei/controller/admin/auth/UploadApi.java

@@ -37,7 +37,6 @@ public class UploadApi {
     @Value("${caimei.imageDomain}")
     private String imageDomain;
     private final UploadService uploadService;
-    private final DatabaseService databaseService;
 
     /**
      * 上传图片
@@ -65,7 +64,7 @@ public class UploadApi {
     @ApiOperation("上传文件")
     @ApiImplicitParam(name = "file", value = "文件", required = true)
     @PostMapping("/file")
-    public Map<String, Object> uploadFile(MultipartFile file,Integer parentId) throws IOException {
+    public Map<String, Object> uploadFile(MultipartFile file) throws IOException {
         Map<String, Object> map = new HashMap<>(2);
         String fileAllName = file.getOriginalFilename();
         String realName = fileAllName.substring(0, fileAllName.lastIndexOf("."));
@@ -87,7 +86,6 @@ public class UploadApi {
             map.put("previewUrl", previewUrl);
             map.put("downloadUrl", filePath);
             map.put("fileName", fileName);
-            databaseService.insertNewFile(fileName, filePath, previewUrl,parentId,fileType);
             map.put("msg", "上传成功");
             logger.info(">>>>>>>>>>>>>>>>文件上传成功:" + previewUrl);
         } else {

+ 4 - 2
src/main/java/com/caimei/controller/admin/data/ArticleApi.java

@@ -60,7 +60,7 @@ public class ArticleApi {
     }
 
     @ApiOperation("添加/编辑文章")
-    @ApiImplicitParam(name = "params", value = "articleId:文章id;articleTitle:文章标题;articleImage:文章图片;articleContent:文章内容", required = true)
+    @ApiImplicitParam(name = "params", value = "articleId:文章id;articleTitle:文章标题;articleImage:文章图片;articleContent:文章内容;parentId:父级文件夹id;articleType:文章类型1自主2第三方", required = true)
     @PostMapping("/save")
     public ResponseJson saveArticle(@CurrentUser SysUser sysUser, @RequestBody String params) {
         if (null == sysUser) {
@@ -74,8 +74,10 @@ public class ArticleApi {
         String articleTitle = paramsMap.getString("articleTitle");
         String articleImage = paramsMap.getString("articleImage");
         String articleContent = paramsMap.getString("articleContent");
+        Integer parentId = paramsMap.getInteger("parentId");
         Integer sort = paramsMap.getInteger("sort");
-        return articleService.saveArticle(articleId, authUserId, articleTitle, articleImage, articleContent, sort);
+        Integer articleType=paramsMap.getInteger("articleType");
+        return articleService.saveArticle(articleId, authUserId, articleTitle, articleImage, articleContent, sort, parentId,articleType);
     }
 
     @ApiOperation("文章回显数据")

+ 43 - 5
src/main/java/com/caimei/controller/wechat/WxDataApi.java

@@ -5,6 +5,7 @@ import com.caimei.aop.IpSave;
 import com.caimei.model.ResponseJson;
 import com.caimei.model.vo.*;
 import com.caimei.service.auth.*;
+import com.caimei.service.data.DatabaseService;
 import com.caimei.service.data.FileService;
 import com.caimei.service.data.ImageService;
 import com.caimei.service.data.VideoService;
@@ -17,6 +18,9 @@ import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.web.bind.annotation.*;
 
+import javax.servlet.http.HttpServletResponse;
+import java.util.List;
+
 /**
  * @author Aslee
  */
@@ -31,6 +35,7 @@ public class WxDataApi {
     private final VideoService videoService;
     private final FileService fileService;
     private final AuthClubService authClubService;
+    private final DatabaseService databaseService;
 
     @ApiOperation("资料库文章列表")
     @ApiImplicitParams({
@@ -39,7 +44,7 @@ public class WxDataApi {
             @ApiImplicitParam(name = "pageNum", required = false, value = "第几页"),
             @ApiImplicitParam(name = "pageSize", required = false, value = "一页多少条")
     })
-    @IpSave(saveName = "文章列表",saveParams = true)
+    @IpSave(saveName = "文章列表", saveParams = true)
     @GetMapping("/article/list")
     public ResponseJson<PageInfo<WxArticleListVo>> getWxArticleList(Integer authUserId, String articleTitle,
                                                                     @RequestParam(value = "pageNum", defaultValue = "1") Integer pageNum,
@@ -47,9 +52,42 @@ public class WxDataApi {
         return articleService.getWxArticleList(authUserId, articleTitle, pageNum, pageSize);
     }
 
+    @ApiOperation("获取当前路径下文件")
+    @ApiImplicitParams({
+            @ApiImplicitParam(name = "fileId", required = true, value = "文件Id"),
+            @ApiImplicitParam(name = "authUserId", required = true, value = "供应商用户id")
+    })
+    @GetMapping("/path/file")
+    public ResponseJson<List<FileTreeVo>> getFileById(Integer fileId, Integer authUserId) {
+        return databaseService.getFileById(fileId, authUserId);
+    }
+
+
+    @ApiOperation("面包屑")
+    @ApiImplicitParams({
+            @ApiImplicitParam(name = "fileId", required = true, value = "当前文件夹Id"),
+            @ApiImplicitParam(name = "authUserId", required = true, value = "供应商用户id")
+    })
+    @GetMapping("/path/crumbs")
+    public ResponseJson<FileTreeVo> getCrumbs(Integer fileId, Integer authUserId) {
+        return databaseService.getCrumbs(fileId, authUserId);
+    }
+
+    @ApiOperation("下载文件夹")
+    @ApiImplicitParams({
+            @ApiImplicitParam(name = "fileId", required = true, value = "当前文件夹Id"),
+            @ApiImplicitParam(name = "fileName", required = true, value = "文件夹名称"),
+            @ApiImplicitParam(name = "authUserId", required = true, value = "供应商用户id")
+    })
+    @GetMapping("/path/package/zip")
+    public ResponseJson downLoadPackageZip(Integer fileId, String fileName, Integer authUserId, HttpServletResponse response) {
+        return databaseService.downLoadZip(fileId, fileName, authUserId, response);
+    }
+
+
     @ApiOperation("资料库文章回显数据")
     @ApiImplicitParam(name = "articleId", value = "文章id", required = true)
-    @IpSave(saveName = "文章详情",saveParams = true)
+    @IpSave(saveName = "文章详情", saveParams = true)
     @GetMapping("/article/form/data")
     public ResponseJson<ArticleFormVo> getArticleFormData(Integer articleId) {
         return articleService.getArticleFormData(articleId);
@@ -62,7 +100,7 @@ public class WxDataApi {
             @ApiImplicitParam(name = "pageNum", required = false, value = "第几页"),
             @ApiImplicitParam(name = "pageSize", required = false, value = "一页多少条")
     })
-    @IpSave(saveName = "图片列表",saveParams = true)
+    @IpSave(saveName = "图片列表", saveParams = true)
     @GetMapping("/image/list")
     public ResponseJson<PageInfo<WxImageListVo>> getWxImageList(Integer authUserId, String imageTitle,
                                                                 @RequestParam(value = "pageNum", defaultValue = "1") Integer pageNum,
@@ -77,7 +115,7 @@ public class WxDataApi {
             @ApiImplicitParam(name = "pageNum", required = false, value = "第几页"),
             @ApiImplicitParam(name = "pageSize", required = false, value = "一页多少条")
     })
-    @IpSave(saveName = "资料库视频列表",saveParams = true)
+    @IpSave(saveName = "资料库视频列表", saveParams = true)
     @GetMapping("/video/list")
     public ResponseJson<PageInfo<WxVideoListVo>> getWxVideoList(Integer authUserId, String videoTitle,
                                                                 @RequestParam(value = "pageNum", defaultValue = "1") Integer pageNum,
@@ -93,7 +131,7 @@ public class WxDataApi {
             @ApiImplicitParam(name = "pageNum", required = false, value = "第几页"),
             @ApiImplicitParam(name = "pageSize", required = false, value = "一页多少条")
     })
-    @IpSave(saveName = "文件列表",saveParams = true)
+    @IpSave(saveName = "文件列表", saveParams = true)
     @GetMapping("/file/list")
     public ResponseJson<PageInfo<WxFileListVo>> getWxFileList(Integer authUserId, Integer fileType, String fileTitle,
                                                               @RequestParam(value = "pageNum", defaultValue = "1") Integer pageNum,

+ 10 - 3
src/main/java/com/caimei/mapper/cmMapper/FileMapper.java

@@ -52,17 +52,24 @@ public interface FileMapper {
     FilePo getFileForm(Integer fileId);
 
     void checkFile(Integer fileId);
+
     List<AuthVo> getAuthImageList(Integer authUserId);
 
-    FileTreeVo findFileById(Integer fileId);
+    List<FileTreeVo> findFileTree(@Param("fileId") Integer fileId, @Param("authUserId") Integer authUserId,@Param("packageType")Integer packageType);
 
     List<FileTreeVo> findFileChild(Integer fileId);
 
-    void creatPackage(@Param("fileId")Integer fileId,@Param("packageName") String packageName);
+    void creatPackage(@Param("authUserId") Integer authUserId,@Param("fileId") Integer fileId, @Param("packageName") String packageName);
 
     List<FileTreeVo> findSonFiles(Integer fileId);
 
-    List<FileTreeVo> findSonPackage(@Param("fileId")Integer fileId,@Param("selectFor")Integer selectFor);
+    List<FileTreeVo> findSonPackage(@Param("fileId") Integer fileId, @Param("authUserId") Integer authUserId, @Param("selectFor") Integer selectFor);
 
     void insertNewFile(FileTreeVo fileTreeVo);
+
+    void updateFile(FileTreeVo fileTreeVo);
+
+    FileTreeVo findFile(@Param("fileId")Integer fileId,@Param("authUserId") Integer authUserId,@Param("packageType")Integer packageType);
+
+    void deleteFileTreeById(Integer fileId);
 }

+ 4 - 0
src/main/java/com/caimei/model/po/ArticlePo.java

@@ -74,4 +74,8 @@ public class ArticlePo {
      * 排序值
      */
     private Integer sort;
+    /**
+     * 文章类型1自主2第三方
+     */
+    private Integer articleType;
 }

+ 10 - 1
src/main/java/com/caimei/model/vo/FileTreeVo.java

@@ -11,6 +11,7 @@ import java.util.List;
  */
 @Data
 public class FileTreeVo implements Serializable {
+    private Integer authUserId;
     /**
      * 父级文件id
      */
@@ -40,7 +41,11 @@ public class FileTreeVo implements Serializable {
      */
     protected FileTreeVo parentNode;
     /**
-     * 子级文件
+     * 子级节点
+     */
+    protected FileTreeVo childNode;
+    /**
+     * 子级节点列表
      */
     protected List<FileTreeVo> childList;
     /**
@@ -51,4 +56,8 @@ public class FileTreeVo implements Serializable {
      * 文件大小
      */
     private String fileSize;
+    /**
+     * 0是文件夹,1不是
+     */
+    private Integer packageType;
 }

+ 37 - 29
src/main/java/com/caimei/service/auth/ArticleService.java

@@ -17,73 +17,81 @@ public interface ArticleService {
     /**
      * 获取文章列表
      *
-     * @param listType      列表类型:1文章列表,2文章审核列表
-     * @param authUserId    供应商用户id
-     * @param articleTitle  文章标题
-     * @param auditStatus   审核状态
-     * @param status        上线状态
-     * @param pageNum       第几页
-     * @param pageSize      一页多少条
-     * @return  ArticleVo
+     * @param listType     列表类型:1文章列表,2文章审核列表
+     * @param authUserId   供应商用户id
+     * @param articleTitle 文章标题
+     * @param auditStatus  审核状态
+     * @param status       上线状态
+     * @param pageNum      第几页
+     * @param pageSize     一页多少条
+     * @return ArticleVo
      */
     ResponseJson<PageInfo<ArticleListVo>> getArticleList(Integer listType, Integer authUserId, String articleTitle, Integer auditStatus, Integer status, Integer pageNum, Integer pageSize);
 
     /**
      * 添加/编辑文章
-     * @param articleId         文章id
-     * @param authUserId        供应商用户id
-     * @param articleTitle      文章标题
-     * @param articleImage      文章图片
-     * @param articleContent    文章内容
+     *
+     * @param articleId      文章id
+     * @param authUserId     供应商用户id
+     * @param articleTitle   文章标题
+     * @param articleImage   文章图片
+     * @param articleContent 文章内容
      * @param sort
-     * @return  ResponseJson
+     * @param parentId       父级文件夹id
+     * @return ResponseJson
      */
-    ResponseJson saveArticle(Integer articleId, Integer authUserId, String articleTitle, String articleImage, String articleContent, Integer sort);
+    ResponseJson saveArticle(Integer articleId, Integer authUserId, String articleTitle, String articleImage, String articleContent, Integer sort, Integer parentId,Integer articleType);
 
     /**
      * 更新文章状态
-     * @param articleId     文章id
-     * @param status        文章状态:0停用 1启用
-     * @return  ResponseJson
+     *
+     * @param articleId 文章id
+     * @param status    文章状态:0停用 1启用
+     * @return ResponseJson
      */
     ResponseJson updateArticleStatus(Integer articleId, Integer status);
 
     /**
      * 删除文章
-     * @param articleId     文章id
-     * @return  ResponseJson
+     *
+     * @param articleId 文章id
+     * @return ResponseJson
      */
     ResponseJson deleteArticle(Integer articleId);
 
     /**
      * 审核文章
-     * @param articleId         文章id
-     * @param auditStatus       审核状态:0审核未通过,1审核通过,2待审核
-     * @param invalidReason     审核不通过原因
-     * @param auditBy           审核人用户id
+     *
+     * @param articleId     文章id
+     * @param auditStatus   审核状态:0审核未通过,1审核通过,2待审核
+     * @param invalidReason 审核不通过原因
+     * @param auditBy       审核人用户id
      * @return
      */
     ResponseJson auditArticle(Integer articleId, Integer auditStatus, String invalidReason, Integer auditBy);
 
     /**
      * 文章回显数据
-     * @param articleId     文章id
+     *
+     * @param articleId 文章id
      * @return
      */
     ResponseJson<ArticleFormVo> getArticleFormData(Integer articleId);
 
     /**
      * 微信公众号文章列表
-     * @param authUserId    供应商用户id
-     * @param articleTitle   文章名称
-     * @param pageNum       第几页
-     * @param pageSize      一页多少条
+     *
+     * @param authUserId   供应商用户id
+     * @param articleTitle 文章名称
+     * @param pageNum      第几页
+     * @param pageSize     一页多少条
      * @return
      */
     ResponseJson<PageInfo<WxArticleListVo>> getWxArticleList(Integer authUserId, String articleTitle, Integer pageNum, Integer pageSize);
 
     /**
      * 更改查看标记
+     *
      * @param articleId
      * @return
      */

+ 4 - 1
src/main/java/com/caimei/service/auth/impl/ArticleServiceImpl.java

@@ -4,6 +4,7 @@ import com.caimei.mapper.cmMapper.ArticleMapper;
 import com.caimei.mapper.cmMapper.AuthMapper;
 import com.caimei.model.ResponseJson;
 import com.caimei.model.po.ArticlePo;
+import com.caimei.model.po.SysUser;
 import com.caimei.model.vo.ArticleFormVo;
 import com.caimei.model.vo.ArticleListVo;
 import com.caimei.model.vo.WxArticleListVo;
@@ -44,7 +45,7 @@ public class ArticleServiceImpl implements ArticleService {
     }
 
     @Override
-    public ResponseJson saveArticle(Integer articleId, Integer authUserId, String articleTitle, String articleImage, String articleContent, Integer sort) {
+    public ResponseJson saveArticle(Integer articleId, Integer authUserId, String articleTitle, String articleImage, String articleContent, Integer sort, Integer parentId,Integer articleType) {
         if (null == articleId && null == authUserId) {
             return ResponseJson.error("参数异常,请输入供应商用户id");
         }
@@ -91,6 +92,8 @@ public class ArticleServiceImpl implements ArticleService {
             article.setCreateTime(new Date());
             // 插入文章
             articleMapper.insertArticle(article);
+            log.info("返回id------------》" + article.getId());
+//            articleMapper.inertDatabaseLink(article.getId(),articleTitle,sys )
         } else {
             article.setId(articleId);
             // 更新文章

+ 16 - 5
src/main/java/com/caimei/service/data/DatabaseService.java

@@ -5,20 +5,31 @@ import com.caimei.model.vo.FileTreeVo;
 
 import javax.servlet.http.HttpServletResponse;
 import java.util.HashMap;
+import java.util.List;
 
 /**
  * @author zzj
  */
 public interface DatabaseService {
-    ResponseJson<FileTreeVo> getFileById(Integer fileId);
+    ResponseJson<List<FileTreeVo>> getFileById(Integer fileId,Integer authUserId);
 
-    ResponseJson createPackage(Integer fileId, String packageName);
+    ResponseJson createPackage(Integer authUserId,Integer fileId, String packageName);
 
-    void downLoadZip(Integer fileId, String packageName, HttpServletResponse response);
+    ResponseJson downLoadZip(Integer fileId, String packageName, Integer authUserId,HttpServletResponse response);
 
-    void insertNewFile(String fileName, String filePath, String previewUrl, Integer parentId,String fileType);
+    ResponseJson insertNewFile(String fileName, String filePath, String previewUrl, Integer parentId,String fileType);
 
     ResponseJson<HashMap<String, String>> ossTokenGet();
 
-    ResponseJson getOssUploadResult(String fileName, String ossName, String ossUrl, String fileSize,Integer parentId);
+    ResponseJson getOssUploadResult(Integer authUserId,String fileName, String ossName, String ossUrl, String fileSize,Integer parentId);
+
+    ResponseJson updatePackage(Integer fileId, String packageName, Integer packageType);
+
+    ResponseJson movePackage(Integer fileId, Integer parentId);
+
+    ResponseJson deleteFiles(String fileId);
+
+    ResponseJson<FileTreeVo> getCrumbs(Integer fileId, Integer authUserId);
+
+    ResponseJson<FileTreeVo> getPackageTree(Integer authUserId);
 }

+ 119 - 17
src/main/java/com/caimei/service/data/impl/DatabaseServiceImpl.java

@@ -9,6 +9,7 @@ import com.caimei.model.vo.FileTreeVo;
 import com.caimei.service.data.DatabaseService;
 import com.caimei.utils.FileZipUtils;
 import com.caimei.utils.OSSUtils;
+import com.sun.org.apache.regexp.internal.RE;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Service;
@@ -39,20 +40,19 @@ public class DatabaseServiceImpl implements DatabaseService {
     private String active;
 
     @Override
-    public ResponseJson<FileTreeVo> getFileById(Integer fileId) {
-        FileTreeVo fileTree = fileMapper.findFileById(fileId);
-        fileTree.setChildList(fileMapper.findFileChild(fileId));
+    public ResponseJson<List<FileTreeVo>> getFileById(Integer fileId, Integer authUserId) {
+        List<FileTreeVo> fileTree = fileMapper.findFileTree(fileId, authUserId, null);
         return ResponseJson.success(fileTree);
     }
 
     @Override
-    public ResponseJson createPackage(Integer fileId, String packageName) {
-        fileMapper.creatPackage(fileId, packageName);
+    public ResponseJson createPackage(Integer authUserId, Integer fileId, String packageName) {
+        fileMapper.creatPackage(authUserId, fileId, packageName);
         return ResponseJson.success();
     }
 
     @Override
-    public void downLoadZip(Integer fileId, String packageName, HttpServletResponse response) {
+    public ResponseJson downLoadZip(Integer fileId, String packageName, Integer authUserId, HttpServletResponse response) {
         //有package则在服务器固定路径new file.mkdir
         UUID uuid = UUID.randomUUID();
         String filePath = "/mnt/newdatadrive/data/runtime/jar-instance/zplma/tempFile/" + uuid + "/";
@@ -68,7 +68,8 @@ public class DatabaseServiceImpl implements DatabaseService {
         boolean mkdirs = new File(filePath).mkdirs();
         Assert.isTrue(mkdirs, "文件夹创建失败");
 
-        recursion(fileId, filePath);
+        String param = fileId + "," + authUserId;
+        recursion(param, filePath);
         //压缩
         FileZipUtils.compress(zipPath, "", true);
         String s = zipPath + ".zip";
@@ -96,10 +97,11 @@ public class DatabaseServiceImpl implements DatabaseService {
             e.printStackTrace();
         }
         FileZipUtils.deleteFile(new File(delPath));
+        return ResponseJson.success();
     }
 
     @Override
-    public void insertNewFile(String fileName, String filePath, String previewUrl,Integer parentId,String fileType) {
+    public ResponseJson insertNewFile(String fileName, String filePath, String previewUrl, Integer parentId, String fileType) {
         FileTreeVo fileTreeVo = new FileTreeVo();
         fileTreeVo.setFileName(fileName);
         fileTreeVo.setOssName(filePath);
@@ -107,6 +109,7 @@ public class DatabaseServiceImpl implements DatabaseService {
         fileTreeVo.setParentId(parentId);
         fileTreeVo.setFileType(fileType);
         fileMapper.insertNewFile(fileTreeVo);
+        return ResponseJson.success();
     }
 
     @Override
@@ -115,22 +118,120 @@ public class DatabaseServiceImpl implements DatabaseService {
     }
 
     @Override
-    public ResponseJson getOssUploadResult(String fileName, String ossName, String ossUrl, String fileSize,Integer parentId) {
+    public ResponseJson getOssUploadResult(Integer authUserId, String fileName, String ossName, String ossUrl, String fileSize, Integer parentId) {
         FileTreeVo fileTreeVo = new FileTreeVo();
         fileTreeVo.setFileName(fileName);
         fileTreeVo.setOssName(ossName);
         fileTreeVo.setOssUrl(ossUrl);
         fileTreeVo.setParentId(parentId);
-        fileTreeVo.setFileType(fileName.substring(fileName.indexOf(".")+1));
+        if (fileName.contains(".")) {
+            fileTreeVo.setFileType(fileName.substring(fileName.lastIndexOf(".") + 1));
+        }
         fileTreeVo.setFileSize(fileSize);
+        fileTreeVo.setPackageType(1);
+        fileTreeVo.setAuthUserId(authUserId);
         fileMapper.insertNewFile(fileTreeVo);
         return ResponseJson.success();
     }
 
-    private void recursion(Integer fileId, String filePath) {
+    @Override
+    public ResponseJson updatePackage(Integer fileId, String packageName, Integer packageType) {
+        FileTreeVo fileTreeVo = new FileTreeVo();
+        fileTreeVo.setId(fileId);
+        fileTreeVo.setPackageType(packageType);
+        fileTreeVo.setFileName(packageName);
+        fileMapper.updateFile(fileTreeVo);
+        return ResponseJson.success();
+    }
+
+    @Override
+    public ResponseJson movePackage(Integer fileId, Integer parentId) {
+        FileTreeVo fileTreeVo = new FileTreeVo();
+        fileTreeVo.setId(fileId);
+        fileTreeVo.setParentId(parentId);
+        fileMapper.updateFile(fileTreeVo);
+        return ResponseJson.success();
+    }
+
+    @Override
+    public ResponseJson deleteFiles(String fileId) {
+        if (fileId.contains(",")) {
+            String[] split = fileId.split(",");
+            for (String s : split) {
+                deleteFilesById(Integer.valueOf(s));
+            }
+        } else {
+            deleteFilesById(Integer.valueOf(fileId));
+        }
+        return ResponseJson.success();
+    }
+
+    private void deleteFilesById(Integer fileId) {
+        FileTreeVo file = fileMapper.findFile(fileId, null, null);
+        if (0 == file.getPackageType()) {
+            //文件夹
+            List<FileTreeVo> fileTree = fileMapper.findFileTree(fileId, null, null);
+            fileTree.forEach(f -> {
+                OSSUtils.deleteSingleFile(f.getOssName());
+                fileMapper.deleteFileTreeById(f.getId());
+            });
+            fileMapper.deleteFileTreeById(fileId);
+        } else {
+            //单文件
+            OSSUtils.deleteSingleFile(file.getOssName());
+            fileMapper.deleteFileTreeById(fileId);
+        }
+    }
+
+    @Override
+    public ResponseJson<FileTreeVo> getCrumbs(Integer fileId, Integer authUserId) {
+        if (fileId > 0) {
+            FileTreeVo file = fileMapper.findFile(fileId, authUserId, null);
+            FileTreeVo crumbsParent = getCrumbsParent(file, authUserId);
+            return ResponseJson.success(crumbsParent);
+        } else {
+            return ResponseJson.success();
+        }
+    }
+
+    @Override
+    public ResponseJson<FileTreeVo> getPackageTree(Integer authUserId) {
+        FileTreeVo fileTreeVo = new FileTreeVo();
+        fileTreeVo.setId(0);
+        fileTreeVo.setAuthUserId(authUserId);
+        fileTreeVo.setPackageType(0);
+        PackageTree(fileTreeVo);
+        return ResponseJson.success(fileTreeVo);
+    }
+
+    private void PackageTree(FileTreeVo fileTreeVo) {
+        if (null == fileTreeVo) {
+            return;
+        }
+        List<FileTreeVo> fileList = fileMapper.findFileTree(fileTreeVo.getId(), fileTreeVo.getAuthUserId(), fileTreeVo.getPackageType());
+        if (null != fileList && fileList.size() > 0) {
+            fileTreeVo.setChildList(fileList);
+        }
+        fileList.forEach(this::PackageTree);
+    }
+
+
+    private FileTreeVo getCrumbsParent(FileTreeVo file, Integer authUserId) {
+        if (null != file && 0 == file.getParentId()) {
+            return file;
+        }
+        FileTreeVo fil = fileMapper.findFile(file.getParentId(), authUserId, null);
+        fil.setChildNode(file);
+        return getCrumbsParent(fil, authUserId);
+    }
+
+    private void recursion(String param, String filePath) {
+        String[] split = param.split(",");
+        Integer fileId = Integer.valueOf(split[0]);
+        Integer authUserId = Integer.valueOf(split[1]);
         //1.如果当前目录存在普通文件,下载当前目录下的文件到文件夹中
         String finalFilePath = filePath;
-        List<FileTreeVo> commonFile = existsPackageOrCommonFile(fileId, 2);
+        List<FileTreeVo> commonFile = existsPackageOrCommonFile(fileId, authUserId, 2);
         if (null != commonFile && commonFile.size() > 0) {
             commonFile.forEach(c -> {
                 String fileName = "";
@@ -143,8 +244,8 @@ public class DatabaseServiceImpl implements DatabaseService {
             });
         }
         //2.如果存在文件夹循环文件夹,递归本方法
-        List<FileTreeVo> packages = existsPackageOrCommonFile(fileId, 1);
-        HashMap<Integer, String> sonPackage = new HashMap<Integer, String>();
+        List<FileTreeVo> packages = existsPackageOrCommonFile(fileId, authUserId, 1);
+        HashMap<String, String> sonPackage = new HashMap<String, String>();
         if (null != packages && packages.size() > 0) {
             for (FileTreeVo aPackage : packages) {
                 if ("dev".equals(active)) {
@@ -154,7 +255,8 @@ public class DatabaseServiceImpl implements DatabaseService {
                 }
                 File fil = new File(filePath.toString());
                 fil.mkdirs();
-                sonPackage.put(aPackage.getId(), filePath);
+                String params = aPackage.getId() + "," + authUserId;
+                sonPackage.put(params, filePath);
             }
         }
         sonPackage.forEach(this::recursion);
@@ -167,7 +269,7 @@ public class DatabaseServiceImpl implements DatabaseService {
      * @param selectFor
      * @return
      */
-    private List<FileTreeVo> existsPackageOrCommonFile(Integer fileId, Integer selectFor) {
-        return fileMapper.findSonPackage(fileId, selectFor);
+    private List<FileTreeVo> existsPackageOrCommonFile(Integer fileId, Integer authUserId, Integer selectFor) {
+        return fileMapper.findSonPackage(fileId, authUserId, selectFor);
     }
 }

+ 17 - 6
src/main/resources/mapper/ArticleMapper.xml

@@ -1,9 +1,11 @@
 <?xml version="1.0" encoding="UTF-8" ?>
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 <mapper namespace="com.caimei.mapper.cmMapper.ArticleMapper">
-    <insert id="insertArticle">
-        insert into cm_brand_article(authUserId, title, image, content, auditStatus, status, createTime, auditBy, auditTime, checkFlag, sort)
-        values (#{authUserId}, #{title}, #{image}, #{content}, #{auditStatus}, #{status}, #{createTime}, #{auditBy}, #{auditTime}, #{checkFlag}, #{sort})
+    <insert id="insertArticle" useGeneratedKeys="true" keyColumn="id">
+        insert into cm_brand_article(authUserId, title, image, content, auditStatus, status, createTime, auditBy,
+                                     auditTime, checkFlag, sort, articleType)
+        values (#{authUserId}, #{title}, #{image}, #{content}, #{auditStatus}, #{status}, #{createTime}, #{auditBy},
+                #{auditTime}, #{checkFlag}, #{sort}, #{articleType})
     </insert>
     <update id="updateArticleByArticleId">
         update cm_brand_article
@@ -12,7 +14,8 @@
             content     = #{content},
             status      = #{status},
             auditStatus = #{auditStatus},
-            sort        = #{sort}
+            sort        = #{sort},
+            articleType = #{articleType}
         where id = #{id}
     </update>
     <update id="updateArticleStatusByArticleId">
@@ -40,7 +43,9 @@
         where id = #{articleId}
     </update>
     <delete id="deleteArticleByArticleId">
-        delete from cm_brand_article where id = #{articleId}
+        delete
+        from cm_brand_article
+        where id = #{articleId}
     </delete>
     <select id="getArticleList" resultType="com.caimei.model.vo.ArticleListVo">
         select a.id as articleId,a.title as articleTitle,a.image as articleImage,
@@ -68,7 +73,13 @@
         </choose>
     </select>
     <select id="getArticleForm" resultType="com.caimei.model.vo.ArticleFormVo">
-        select id as articleId, title as articleTitle, image as articleImage, content as articleContent, createTime, auditStatus, sort
+        select id      as articleId,
+               title   as articleTitle,
+               image   as articleImage,
+               content as articleContent,
+               createTime,
+               auditStatus,
+               sort
         from cm_brand_article
         where id = #{articleId}
     </select>

+ 86 - 9
src/main/resources/mapper/FileMapper.xml

@@ -1,7 +1,8 @@
 <?xml version="1.0" encoding="UTF-8" ?>
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 <mapper namespace="com.caimei.mapper.cmMapper.FileMapper">
-    <insert id="insertFile" keyColumn="id" keyProperty="id" parameterType="com.caimei.model.po.FilePo" useGeneratedKeys="true">
+    <insert id="insertFile" keyColumn="id" keyProperty="id" parameterType="com.caimei.model.po.FilePo"
+            useGeneratedKeys="true">
         insert into cm_brand_file(authUserId, fileType, title, name, previewUrl, downloadUrl, auditStatus, status,
                                   createTime, auditBy, auditTime, checkFlag)
         values (#{authUserId}, #{fileType}, #{title}, #{name}, #{previewUrl}, #{downloadUrl}, #{auditStatus}, #{status},
@@ -12,12 +13,14 @@
         values (#{title}, #{name}, #{ossName}, #{fileType}, #{fileModule}, NOW());
     </insert>
     <insert id="creatPackage">
-        insert into cm_tree_file(parentId, fileType, fileName, saveTime)
-        values (#{fileId}, 'package', #{packageName}, now())
+        insert into cm_tree_file(parentId, fileType, fileName, saveTime, packageType, authUserId)
+        values (#{fileId}, 'package', #{packageName}, now(), 0, #{authUserId})
     </insert>
     <insert id="insertNewFile">
-        insert into cm_tree_file(parentId, fileType, saveTime, ossUrl, fileName, ossName, fileSize)
-        values (#{parentId}, #{fileType}, now(), #{ossUrl}, #{fileName}, #{ossName}, #{fileSize})
+        insert into cm_tree_file(parentId, fileType, saveTime, ossUrl, fileName, ossName, fileSize, packageType,
+                                 authUserId)
+        values (#{parentId}, #{fileType}, now(), #{ossUrl}, #{fileName}, #{ossName}, #{fileSize}, #{packageType},
+                #{authUserId})
     </insert>
     <update id="updateFileByFileId">
         update cm_brand_file
@@ -81,6 +84,36 @@
         set checkFlag = 1
         where id = #{fileId}
     </update>
+    <update id="updateFile">
+        update cm_tree_file
+        <set>
+            <if test="null != parentId">
+                parentId=#{parentId},
+            </if>
+            <if test="null != fileType and fileType != ''">
+                fileType= #{fileType},
+            </if>
+            <if test="null != ossName and ossName != ''">
+                ossName=#{ossName},
+            </if>
+            <if test="null != fileName and fileName != ''">
+                fileName=#{fileName},
+            </if>
+            <if test="null != ossUrl and ossUrl != ''">
+                ossUrl=#{ossUrl},
+            </if>
+            <if test="null != saveTime">
+                saveTime=#{saveTime},
+            </if>
+            <if test="null != fileSize and fileSize != ''">
+                fileSize=#{fileSize},
+            </if>
+            <if test="null != packageType and packageType != ''">
+                packageType=#{packageType},
+            </if>
+        </set>
+        where id = #{id}
+    </update>
     <delete id="deleteFileByFileId">
         delete
         from cm_brand_file
@@ -91,6 +124,11 @@
         from cm_brand_course_file
         where id = #{fileId}
     </delete>
+    <delete id="deleteFileTreeById">
+        delete
+        from cm_tree_file
+        where id = #{fileId}
+    </delete>
     <select id="getFileList" resultType="com.caimei.model.vo.FileListVo">
         select a.id as fileId,a.title as fileTitle,a.name as fileName,a.previewUrl as filePreviewUrl,
         a.downloadUrl as fileDownloadUrl, a.auditStatus,a.invalidReason,a.status,a.createTime,
@@ -169,12 +207,30 @@
           and find_in_set(a.id, #{authIds})
     </select>
     <select id="getFileForm" resultType="com.caimei.model.po.FilePo">
-        select id,auditStatus from cm_brand_file where id = #{fileId}
+        select id, auditStatus
+        from cm_brand_file
+        where id = #{fileId}
     </select>
-    <select id="findFileById" resultType="com.caimei.model.vo.FileTreeVo">
-        select id, parentId, fileType, fileName, ossUrl, saveTime
+    <select id="findFileTree" resultType="com.caimei.model.vo.FileTreeVo">
+        select id,
+        parentId,
+        fileType,
+        fileName,
+        ossUrl,
+        ossName,
+        fileSize,
+        saveTime,
+        packageType,
+        authUserId
         from cm_tree_file
-        where id = #{fileId}
+        where parentId = #{fileId}
+        <if test="null != authUserId">
+            and authUserId = #{authUserId}
+        </if>
+        <if test="null != packageType">
+            and packageType =#{packageType}
+        </if>
+        order by packageType ASC,saveTime DESC
     </select>
     <select id="findFileChild" resultType="com.caimei.model.vo.FileTreeVo">
         select id, parentId, fileType, fileName, ossUrl, saveTime
@@ -189,6 +245,7 @@
     <select id="findSonPackage" resultType="com.caimei.model.vo.FileTreeVo">
         select id,parentId,fileType,fileName,ossName from cm_tree_file
         where parentId =#{fileId}
+        and authUserId = #{authUserId}
         <if test="selectFor == 1">
             and fileType = 'package'
         </if>
@@ -196,4 +253,24 @@
             and fileType != 'package'
         </if>
     </select>
+    <select id="findFile" resultType="com.caimei.model.vo.FileTreeVo">
+        select id,
+        parentId,
+        fileType,
+        fileName,
+        ossUrl,
+        ossName,
+        fileSize,
+        saveTime,
+        packageType,
+        authUserId
+        from cm_tree_file
+        where id = #{fileId}
+        <if test="null != authUserId">
+            and authUserId = #{authUserId}
+        </if>
+        <if test="null != packageType">
+            and packageType =#{packageType}
+        </if>
+    </select>
 </mapper>