Răsfoiți Sursa

按文件名查询

wukai 2 ani în urmă
părinte
comite
d7ac0baec6
22 a modificat fișierele cu 540 adăugiri și 245 ștergeri
  1. 16 0
      doc-admin/pom.xml
  2. 31 0
      doc-admin/src/test/java/com/test/DocTest.java
  3. 28 3
      doc-biz/src/main/java/com/doc/biz/controller/ApiController.java
  4. 2 2
      doc-biz/src/main/java/com/doc/biz/controller/DocDirController.java
  5. 66 51
      doc-biz/src/main/java/com/doc/biz/controller/DocInfoController.java
  6. 3 3
      doc-biz/src/main/java/com/doc/biz/controller/DocSpaceController.java
  7. 1 1
      doc-biz/src/main/java/com/doc/biz/controller/ElasticSearchController.java
  8. 97 0
      doc-biz/src/main/java/com/doc/biz/controller/OnlyOfficeController.java
  9. 10 0
      doc-biz/src/main/java/com/doc/biz/mapper/DocDirMapper.java
  10. 9 0
      doc-biz/src/main/java/com/doc/biz/mapper/DocSpaceMapper.java
  11. 9 0
      doc-biz/src/main/java/com/doc/biz/service/IDocDirService.java
  12. 4 2
      doc-biz/src/main/java/com/doc/biz/service/IDocSpaceService.java
  13. 25 0
      doc-biz/src/main/java/com/doc/biz/service/impl/DocDirServiceImpl.java
  14. 24 22
      doc-biz/src/main/java/com/doc/biz/service/impl/DocSpaceServiceImpl.java
  15. 71 0
      doc-biz/src/main/java/com/doc/biz/vo/DocInfoVO.java
  16. 2 1
      doc-biz/src/main/java/com/doc/biz/vo/DocumentVO.java
  17. 2 1
      doc-biz/src/main/java/com/doc/biz/vo/TreeVO.java
  18. 12 99
      doc-biz/src/main/java/com/doc/chat/domain/ChatMsg.java
  19. 17 6
      doc-biz/src/main/java/com/doc/chat/service/impl/ChatMsgServiceImpl.java
  20. 56 27
      doc-biz/src/main/resources/mapper/biz/DocDirMapper.xml
  21. 9 1
      doc-biz/src/main/resources/mapper/biz/DocInfoMapper.xml
  22. 46 26
      doc-biz/src/main/resources/mapper/biz/DocSpaceMapper.xml

+ 16 - 0
doc-admin/pom.xml

@@ -53,6 +53,22 @@
             <groupId>com.jjt</groupId>
             <artifactId>jjt-biz</artifactId>
         </dependency>
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-test</artifactId>
+            <scope>test</scope>
+        </dependency>
+        <dependency>
+            <groupId>junit</groupId>
+            <artifactId>junit</artifactId>
+            <version>4.13.2</version>
+            <scope>test</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.springframework</groupId>
+            <artifactId>spring-test</artifactId>
+            <scope>test</scope>
+        </dependency>
 
     </dependencies>
 

+ 31 - 0
doc-admin/src/test/java/com/test/DocTest.java

@@ -0,0 +1,31 @@
+package com.test;
+
+import com.doc.RuoYiApplication;
+import com.doc.biz.domain.DocDir;
+import com.doc.biz.service.IDocDirService;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.springframework.boot.test.context.SpringBootTest;
+import org.springframework.test.context.junit4.SpringRunner;
+
+import javax.annotation.Resource;
+import java.util.List;
+
+/**
+ * Test$
+ *
+ * @author wukai
+ * @date 2023/9/7 16:57
+ */
+@RunWith(SpringRunner.class)
+@SpringBootTest(classes = RuoYiApplication.class, webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)
+public class DocTest {
+    @Resource
+    IDocDirService dirService;
+
+    @Test
+    public void test() {
+//        List<DocDir> list = dirService.selectDirByUser(1L);
+//        list.forEach(System.out::println);
+    }
+}

+ 28 - 3
doc-biz/src/main/java/com/doc/biz/controller/FileUploadController.java → doc-biz/src/main/java/com/doc/biz/controller/ApiController.java

@@ -1,15 +1,22 @@
 package com.doc.biz.controller;
 
 import com.doc.biz.service.IMongoService;
+import com.doc.biz.vo.DocumentVO;
 import com.doc.common.core.controller.BaseController;
 import com.doc.common.core.domain.AjaxResult;
+import io.swagger.annotations.ApiOperation;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.data.redis.core.StringRedisTemplate;
+import org.springframework.http.HttpHeaders;
+import org.springframework.http.HttpStatus;
+import org.springframework.http.ResponseEntity;
 import org.springframework.web.bind.annotation.*;
 import org.springframework.web.multipart.MultipartFile;
+import org.yaml.snakeyaml.util.UriEncoder;
 
 import javax.annotation.Resource;
 import java.util.List;
+import java.util.Objects;
 
 /**
  * 文件上传
@@ -20,16 +27,34 @@ import java.util.List;
 @Slf4j
 @RestController
 @RequestMapping("/api")
-public class FileUploadController extends BaseController {
+public class ApiController extends BaseController {
 
     /**
      * 文件上传实现类
      */
     @Resource
     private IMongoService mongoService;
-    @Resource
-    private StringRedisTemplate stringRedisTemplate;
 
+    /**
+     * 文件下载
+     *
+     * @param fileId fileId
+     * @return
+     */
+    @ApiOperation("文件预览")
+    @GetMapping("/access/{fileId}")
+    public ResponseEntity<Object> access(@PathVariable(name = "fileId") String fileId) {
+        DocumentVO vo = mongoService.downloadFile(fileId);
+        if (Objects.nonNull(vo)) {
+            return ResponseEntity.ok()
+                    .header(HttpHeaders.CONTENT_DISPOSITION, "filename=\"" + UriEncoder.encode(vo.getFileName()) + "\"")
+                    .header(HttpHeaders.CONTENT_TYPE, vo.getContentType())
+                    .header(HttpHeaders.CONTENT_LENGTH, vo.getFileSize() + "").header("Connection", "close")
+                    .body(vo.getData());
+        } else {
+            return ResponseEntity.status(HttpStatus.NOT_FOUND).body("file does not exist");
+        }
+    }
 
     /**
      * 文件上传

+ 2 - 2
doc-biz/src/main/java/com/doc/biz/controller/DocDirController.java

@@ -48,7 +48,7 @@ public class DocDirController extends BaseController {
     @ApiOperation("获取顶层目录")
     @GetMapping(value = "/top-dir/{type}")
     public DocDir topDir(@ApiParam(value = "目录类型(1.公共 2.部门 3.个人)", required = true) @PathVariable("type") String type) {
-        DocSpace space = spaceService.selectDocSpaceByType(type);
+        DocSpace space = spaceService.selectDocSpaceListByType(type);
 
         DocDir dir = new DocDir();
         dir.setSpaceId(space.getSpaceId());
@@ -87,7 +87,7 @@ public class DocDirController extends BaseController {
      * @return
      */
     private TreeVO tree(String type, boolean fileTree) {
-        DocSpace space = spaceService.selectDocSpaceByType(type);
+        DocSpace space = spaceService.selectDocSpaceListByType(type);
         DocDir docDir = new DocDir();
         docDir.setSpaceId(space.getSpaceId());
         docDir.setParentId(0L);

+ 66 - 51
doc-biz/src/main/java/com/doc/biz/controller/DocInfoController.java

@@ -1,12 +1,8 @@
 package com.doc.biz.controller;
 
-import com.doc.biz.domain.DocInfo;
-import com.doc.biz.domain.DocShare;
-import com.doc.biz.domain.EsDocInfo;
-import com.doc.biz.service.IDocInfoService;
-import com.doc.biz.service.IDocShareService;
-import com.doc.biz.service.IEsDocInfoService;
-import com.doc.biz.service.IMongoService;
+import com.doc.biz.domain.*;
+import com.doc.biz.service.*;
+import com.doc.biz.vo.DocInfoVO;
 import com.doc.biz.vo.DocumentVO;
 import com.doc.chat.domain.ChatMsg;
 import com.doc.common.annotation.Log;
@@ -17,6 +13,7 @@ import com.doc.common.core.page.TableDataInfo;
 import com.doc.common.enums.BusinessType;
 import com.doc.common.utils.FileContentUtils;
 import com.doc.common.utils.SecurityUtils;
+import com.doc.common.utils.bean.BeanUtils;
 import com.doc.common.utils.poi.ExcelUtil;
 import com.doc.system.service.ISysConfigService;
 import io.swagger.annotations.*;
@@ -31,10 +28,7 @@ import org.yaml.snakeyaml.util.UriEncoder;
 
 import javax.annotation.Resource;
 import javax.servlet.http.HttpServletResponse;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.Objects;
+import java.util.*;
 import java.util.function.Function;
 
 /**
@@ -60,6 +54,8 @@ public class DocInfoController extends BaseController {
     private IDocShareService shareService;
     @Resource
     private ISysConfigService configService;
+    @Resource
+    private IDocDirService dirService;
 
     /**
      * 文件上传
@@ -69,9 +65,7 @@ public class DocInfoController extends BaseController {
      */
     @ApiOperation("文件上传-单文件")
     @PostMapping("/upload")
-    public AjaxResult uploadFile(@ApiParam(value = "文件", required = true) @RequestPart(value = "file") MultipartFile file,
-                                 @ApiParam(value = "空间ID", required = true) @RequestParam Long spaceId,
-                                 @ApiParam(value = "目录ID", required = true) @RequestParam Long dirId) {
+    public AjaxResult uploadFile(@ApiParam(value = "文件", required = true) @RequestPart(value = "file") MultipartFile file, @ApiParam(value = "空间ID", required = true) @RequestParam Long spaceId, @ApiParam(value = "目录ID", required = true) @RequestParam Long dirId) {
         try {
             DocumentVO vo = mongoService.uploadFile(file);
             process(vo, spaceId, dirId);
@@ -90,9 +84,7 @@ public class DocInfoController extends BaseController {
      */
     @ApiOperation("文件上传-多文件")
     @PostMapping("/uploadFiles")
-    public AjaxResult uploadFile(@ApiParam(value = "文件", required = true) @RequestPart(value = "files") List<MultipartFile> files,
-                                 @ApiParam(value = "空间ID", required = true) @RequestParam Long spaceId,
-                                 @ApiParam(value = "目录ID", required = true) @RequestParam Long dirId) {
+    public AjaxResult uploadFile(@ApiParam(value = "文件", required = true) @RequestPart(value = "files") List<MultipartFile> files, @ApiParam(value = "空间ID", required = true) @RequestParam Long spaceId, @ApiParam(value = "目录ID", required = true) @RequestParam Long dirId) {
         try {
             mongoService.uploadFiles(files).stream().forEach(vo -> {
                 process(vo, spaceId, dirId);
@@ -134,13 +126,14 @@ public class DocInfoController extends BaseController {
     @ApiOperation("文件下载")
     @GetMapping("/download/{fileId}")
     public ResponseEntity<Object> download(@PathVariable(name = "fileId") String fileId) {
-        DocumentVO mongoFileVo = mongoService.downloadFile(fileId);
-        if (Objects.nonNull(mongoFileVo)) {
-            return ResponseEntity.ok()
-                    .header(HttpHeaders.CONTENT_DISPOSITION, "attachment;filename=\"" + UriEncoder.encode(mongoFileVo.getFileName()) + "\"")
-                    .header(HttpHeaders.CONTENT_TYPE, mongoFileVo.getContentType())
-                    .header(HttpHeaders.CONTENT_LENGTH, mongoFileVo.getFileSize() + "").header("Connection", "close")
-                    .body(mongoFileVo.getData());
+        return down(fileId, true);
+    }
+
+    private ResponseEntity<Object> down(String fileId, boolean down) {
+        DocumentVO vo = mongoService.downloadFile(fileId);
+        if (Objects.nonNull(vo)) {
+            String disposition = down ? "attachment;" : "" + "filename=\"" + UriEncoder.encode(vo.getFileName()) + "\"";
+            return ResponseEntity.ok().header(HttpHeaders.CONTENT_DISPOSITION, disposition).header(HttpHeaders.CONTENT_TYPE, vo.getContentType()).header(HttpHeaders.CONTENT_LENGTH, vo.getFileSize() + "").header("Connection", "close").body(vo.getData());
         } else {
             return ResponseEntity.status(HttpStatus.NOT_FOUND).body("file does not exist");
         }
@@ -155,16 +148,7 @@ public class DocInfoController extends BaseController {
     @ApiOperation("文件预览")
     @GetMapping("/preview/{fileId}")
     public ResponseEntity<Object> preview(@PathVariable(name = "fileId") String fileId) {
-        DocumentVO mongoFileVo = mongoService.downloadFile(fileId);
-        if (Objects.nonNull(mongoFileVo)) {
-            return ResponseEntity.ok()
-                    .header(HttpHeaders.CONTENT_DISPOSITION, "filename=\"" + UriEncoder.encode(mongoFileVo.getFileName()) + "\"")
-                    .header(HttpHeaders.CONTENT_TYPE, mongoFileVo.getContentType())
-                    .header(HttpHeaders.CONTENT_LENGTH, mongoFileVo.getFileSize() + "").header("Connection", "close")
-                    .body(mongoFileVo.getData());
-        } else {
-            return ResponseEntity.status(HttpStatus.NOT_FOUND).body("file does not exist");
-        }
+        return down(fileId, false);
     }
 
     /**
@@ -172,11 +156,7 @@ public class DocInfoController extends BaseController {
      */
     @ApiOperation("文件移动")
     @GetMapping("/move")
-    @ApiImplicitParams({
-            @ApiImplicitParam(name = "docId", value = "文件ID", required = true),
-            @ApiImplicitParam(name = "spaceId", value = "空间ID"),
-            @ApiImplicitParam(name = "dirId", value = "新目录ID", required = true)
-    })
+    @ApiImplicitParams({@ApiImplicitParam(name = "docId", value = "文件ID", required = true), @ApiImplicitParam(name = "spaceId", value = "空间ID"), @ApiImplicitParam(name = "dirId", value = "新目录ID", required = true)})
     public AjaxResult move(Long docId, Long dirId) {
         DocInfo info = docInfoService.selectDocInfoByDocId(docId);
         info.setDirId(dirId);
@@ -191,11 +171,7 @@ public class DocInfoController extends BaseController {
      */
     @ApiOperation("文件复制")
     @GetMapping("/copy")
-    @ApiImplicitParams({
-            @ApiImplicitParam(name = "docId", value = "文件ID", required = true),
-            @ApiImplicitParam(name = "spaceId", value = "空间ID"),
-            @ApiImplicitParam(name = "dirId", value = "新目录ID", required = true)
-    })
+    @ApiImplicitParams({@ApiImplicitParam(name = "docId", value = "文件ID", required = true), @ApiImplicitParam(name = "spaceId", value = "空间ID"), @ApiImplicitParam(name = "dirId", value = "新目录ID", required = true)})
     public AjaxResult copy(Long docId, Long spaceId, Long dirId) {
         DocInfo info = docInfoService.selectDocInfoByDocId(docId);
         info.setDocId(null);
@@ -221,16 +197,15 @@ public class DocInfoController extends BaseController {
     @ApiOperation("文件分享添加人员")
     @PostMapping("/share/{docId}")
     public AjaxResult share(@ApiParam(value = "文件ID", required = true) @PathVariable(name = "docId") Long docId, @ApiParam(value = "分享人员", required = true) @RequestBody List<DocShare> shares) {
-        DocInfo info = docInfoService.selectDocInfoByDocId(docId);
         shareService.deleteDocShareByDocId(docId);
 
         String content = configService.selectConfigByKey("msg.share.content");
-        String finalContent = content.replace("{from}", SecurityUtils.getLoginUser().getUser().getNickName()).replace("{file}", info.getFileName());
         shares.forEach(s -> {
             s.setDocId(docId);
             ChatMsg msg = new ChatMsg();
+            msg.setMsgType("1");
             msg.setToId(s.getUserId());
-            msg.setContent(finalContent);
+            msg.setContent(docId + "");
             msg.setFromId(SecurityUtils.getUserId());
             shareService.insertDocShare(s);
         });
@@ -243,10 +218,7 @@ public class DocInfoController extends BaseController {
      */
     @ApiOperation("文件重命名")
     @GetMapping("/rename")
-    @ApiImplicitParams({
-            @ApiImplicitParam(name = "docId", value = "文件ID", required = true),
-            @ApiImplicitParam(name = "name", value = "新文件名", required = true)
-    })
+    @ApiImplicitParams({@ApiImplicitParam(name = "docId", value = "文件ID", required = true), @ApiImplicitParam(name = "name", value = "新文件名", required = true)})
     public AjaxResult rename(Long docId, String name) {
         DocInfo info = new DocInfo();
         info.setDocId(docId);
@@ -272,6 +244,49 @@ public class DocInfoController extends BaseController {
     }
 
     /**
+     * 文件搜索
+     */
+    @ApiOperation("文件搜索")
+    //@PreAuthorize("@ss.hasPermi('biz:info:list')")
+    @GetMapping("/search")
+    public TableDataInfo search(@ApiParam(value = "搜索关键字", required = true) @RequestParam String keyword) {
+        startPage();
+        Map<String, Object> temp = dirService.selectDirByUser(SecurityUtils.getUserId());
+        List<DocDir> dirList = (List<DocDir>) temp.get("dir");
+        List<DocSpace> spaceList = (List<DocSpace>) temp.get("space");
+        Map<Long, DocDir> dirMap = new HashMap<>(16);
+        Map<Long, DocSpace> spaceMap = new HashMap<>(16);
+        List<Long> dirIds = new ArrayList<>();
+        dirList.forEach(dir -> {
+            dirIds.add(dir.getDirId());
+            dirMap.put(dir.getDirId(), dir);
+        });
+
+        spaceList.forEach(space -> {
+            spaceMap.put(space.getSpaceId(), space);
+        });
+
+        Map<String, Object> map = new HashMap<>(4);
+        map.put("dirIds", dirIds);
+
+        DocInfo docInfo = new DocInfo();
+        docInfo.setFileName(keyword);
+        docInfo.setParams(map);
+        List<DocInfo> list = docInfoService.selectDocInfoList(docInfo);
+        List<DocInfoVO> result = new ArrayList<>();
+        list.forEach(info -> {
+            DocInfoVO vo = new DocInfoVO();
+            BeanUtils.copyProperties(info, vo);
+
+            vo.setDir(dirMap.get(vo.getDirId()));
+            vo.setSpace(spaceMap.get(vo.getSpaceId()));
+
+            result.add(vo);
+        });
+        return getDataTable(result);
+    }
+
+    /**
      * 查询文件基本信息表列表
      */
     @ApiOperation("根据目录ID查询文件列表")

+ 3 - 3
doc-biz/src/main/java/com/doc/biz/controller/DocSpaceController.java

@@ -38,7 +38,7 @@ public class DocSpaceController extends BaseController {
     @GetMapping("/list")
     public TableDataInfo list(DocSpace docSpace) {
         startPage();
-        List<DocSpace> list = docSpaceService.selectDocSpaceByType(docSpace);
+        List<DocSpace> list = docSpaceService.selectDocSpaceList(docSpace);
         return getDataTable(list);
     }
 
@@ -50,7 +50,7 @@ public class DocSpaceController extends BaseController {
     @Log(title = "文档空间管理", businessType = BusinessType.EXPORT)
     @PostMapping("/export")
     public void export(HttpServletResponse response, DocSpace docSpace) {
-        List<DocSpace> list = docSpaceService.selectDocSpaceByType(docSpace);
+        List<DocSpace> list = docSpaceService.selectDocSpaceList(docSpace);
         ExcelUtil<DocSpace> util = new ExcelUtil<DocSpace>(DocSpace.class);
         util.exportExcel(response, list, "文档空间管理数据");
     }
@@ -71,7 +71,7 @@ public class DocSpaceController extends BaseController {
     @ApiOperation("获取空间信息")
     @GetMapping(value = "/info/{type}")
     public AjaxResult spaceType(@ApiParam(value = "空间类型(1.公共 2.部门 3.个人)", required = true) @PathVariable("type") String type) {
-        return success(docSpaceService.selectDocSpaceByType(type));
+        return success(docSpaceService.selectDocSpaceListByType(type));
     }
 
     /**

+ 1 - 1
doc-biz/src/main/java/com/doc/biz/controller/ElasticSearchController.java

@@ -66,7 +66,7 @@ public class ElasticSearchController {
         } else if (type.equals(SpaceType.PERSONAL.getValue())) {
             space.setOwner(SecurityUtils.getUserId());
         }
-        List<DocSpace> list = docSpaceService.selectDocSpaceByType(space);
+        List<DocSpace> list = docSpaceService.selectDocSpaceList(space);
         if (list.size() > 0) {
             String indexName = "docs_" + list.get(0).getSpaceId();
             esConfig.setIndexName(indexName);

+ 97 - 0
doc-biz/src/main/java/com/doc/biz/controller/OnlyOfficeController.java

@@ -0,0 +1,97 @@
+package com.doc.biz.controller;
+
+import com.alibaba.fastjson2.JSONObject;
+import com.doc.biz.service.IDocInfoService;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.ResponseBody;
+import org.springframework.web.bind.annotation.RestController;
+
+import javax.annotation.Resource;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import java.io.PrintWriter;
+import java.util.Scanner;
+
+/**
+ * 分组成员Controller
+ *
+ * @author wukai
+ * @date 2023-03-27
+ */
+@RestController
+@RequestMapping("/only-office")
+public class OnlyOfficeController {
+    @Resource
+    private IDocInfoService docInfoService;
+
+    /**
+     * only office修改回调
+     *
+     * @param id       文档ID
+     * @param name     当前登录的用户名
+     * @param request  请求参数
+     * @param response 响应参数
+     * @throws Exception
+     */
+    @RequestMapping("/callback")
+    @ResponseBody
+    public void save(@RequestParam("id") Long id, @RequestParam("name") String name, HttpServletRequest request, HttpServletResponse response) throws Exception {
+        PrintWriter writer = null;
+        String body = "";
+        try {
+            writer = response.getWriter();
+            Scanner scanner = new Scanner(request.getInputStream());
+            scanner.useDelimiter("\\A");
+            body = scanner.hasNext() ? scanner.next() : "";
+            scanner.close();
+        } catch (Exception ex) {
+            writer.write("get request.getInputStream error:" + ex.getMessage());
+            return;
+        }
+
+        if (body.isEmpty()) {
+            throw new Exception("ONLYOFFICE回调保存请求体为空");
+        }
+
+        JSONObject jsonObj = JSONObject.parseObject(body);
+        int status = (Integer) jsonObj.get("status");
+       /* 定义文档的状态。 可以有以下值:
+        1 - 正在编辑文档,
+        2 - 文档已准备好保存,
+        3 - 发生文档保存错误,
+        4 - 文档已关闭,没有任何更改,
+        6 - 正在编辑文档,但保存了当前文档状态,
+        7 - 强制保存文档时发生错误。*/
+        int saved = 0;
+        String key = jsonObj.get("key").toString();
+        if (status == 2 || status == 3 || status == 6) {
+            //MustSave, Corrupted
+            String downloadUri = (String) jsonObj.get("url");
+//            docInfoService.updateFile(id, year, name, downloadUri);
+//            System.err.println(downloadUri);
+//            try {
+//                URL url = new URL(downloadUri);
+//                HttpURLConnection connection = (java.net.HttpURLConnection) url.openConnection();
+//                InputStream stream = connection.getInputStream();
+//                String pathForSave = "D:\\SYSTEM\\Desktop\\temp\\test.docx";
+//                File savedFile = new File(pathForSave);
+//                try (FileOutputStream out = new FileOutputStream(savedFile)) {
+//                    int read;
+//                    final byte[] bytes = new byte[1024];
+//                    while ((read = stream.read(bytes)) != -1) {
+//                        out.write(bytes, 0, read);
+//                    }
+//
+//                    out.flush();
+//                }
+//
+//                connection.disconnect();
+//            } catch (Exception ex) {
+//                saved = 1;
+//                ex.printStackTrace();
+//            }
+        }
+        writer.write("{\"error\":" + saved + "}");
+    }
+}

+ 10 - 0
doc-biz/src/main/java/com/doc/biz/mapper/DocDirMapper.java

@@ -2,6 +2,7 @@ package com.doc.biz.mapper;
 
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.doc.biz.domain.DocDir;
+import org.apache.ibatis.annotations.Param;
 
 import java.util.List;
 
@@ -59,4 +60,13 @@ public interface DocDirMapper extends BaseMapper<DocDir> {
      * @return 结果
      */
     public int deleteDocDirByDirIds(Long[] dirIds);
+
+    /**
+     * 查询当前用户下所有有权限的目录ID
+     *
+     * @param spaceIds 空间ID
+     * @param userId   用户ID
+     * @return 结果集
+     */
+    List<DocDir> selectDirByUser(@Param("spaceIds") List<Long> spaceIds, @Param("userId") Long userId);
 }

+ 9 - 0
doc-biz/src/main/java/com/doc/biz/mapper/DocSpaceMapper.java

@@ -2,6 +2,7 @@ package com.doc.biz.mapper;
 
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.doc.biz.domain.DocSpace;
+import org.apache.ibatis.annotations.Param;
 
 import java.util.List;
 
@@ -59,4 +60,12 @@ public interface DocSpaceMapper extends BaseMapper<DocSpace> {
      * @return 结果
      */
     public int deleteDocSpaceBySpaceIds(Long[] spaceIds);
+
+    /**
+     * 根据用户查询出该用户所有空间信息
+     *
+     * @param userId 用户ID
+     * @return 结果
+     */
+    List<DocSpace> selectDocSpaceByUser(@Param("userId") Long userId);
 }

+ 9 - 0
doc-biz/src/main/java/com/doc/biz/service/IDocDirService.java

@@ -4,6 +4,7 @@ import com.doc.biz.domain.DocDir;
 import com.doc.biz.domain.DocSpace;
 
 import java.util.List;
+import java.util.Map;
 
 /**
  * 文档目录管理Service接口
@@ -66,4 +67,12 @@ public interface IDocDirService {
      * @param space 空间信息
      */
     void initTopDir(DocSpace space);
+
+    /**
+     * 查询当前用户下所有有权限的目录
+     *
+     * @param userId 用户ID
+     * @return 结果集
+     */
+    Map<String, Object> selectDirByUser(Long userId);
 }

+ 4 - 2
doc-biz/src/main/java/com/doc/biz/service/IDocSpaceService.java

@@ -27,7 +27,7 @@ public interface IDocSpaceService {
      * @param docSpace 文档空间管理
      * @return 文档空间管理集合
      */
-    public List<DocSpace> selectDocSpaceByType(DocSpace docSpace);
+    public List<DocSpace> selectDocSpaceList(DocSpace docSpace);
 
     /**
      * 根据空间类型查询目录
@@ -35,7 +35,9 @@ public interface IDocSpaceService {
      * @param type 空间类型
      * @return 文档空间管理集合
      */
-    DocSpace selectDocSpaceByType(String type);
+    DocSpace selectDocSpaceListByType(String type);
+
+    List<DocSpace> getSpaceByUser(Long userId);
 
     /**
      * 新增文档空间管理

+ 25 - 0
doc-biz/src/main/java/com/doc/biz/service/impl/DocDirServiceImpl.java

@@ -4,11 +4,15 @@ import com.doc.biz.domain.DocDir;
 import com.doc.biz.domain.DocSpace;
 import com.doc.biz.mapper.DocDirMapper;
 import com.doc.biz.service.IDocDirService;
+import com.doc.biz.service.IDocSpaceService;
 import com.doc.common.utils.DateUtils;
 import org.springframework.stereotype.Service;
 
 import javax.annotation.Resource;
+import java.util.ArrayList;
+import java.util.HashMap;
 import java.util.List;
+import java.util.Map;
 
 /**
  * 文档目录管理Service业务层处理
@@ -20,6 +24,8 @@ import java.util.List;
 public class DocDirServiceImpl implements IDocDirService {
     @Resource
     private DocDirMapper docDirMapper;
+    @Resource
+    private IDocSpaceService docSpaceService;
 
     /**
      * 查询文档目录管理
@@ -111,4 +117,23 @@ public class DocDirServiceImpl implements IDocDirService {
             insertDocDir(dir);
         }
     }
+
+    /**
+     * 查询当前用户下所有有权限的目录
+     *
+     * @param userId 用户ID
+     * @return 结果集
+     */
+    @Override
+    public Map<String, Object> selectDirByUser(Long userId) {
+        Map<String, Object> result = new HashMap<>(4);
+        List<DocSpace> spaceList = docSpaceService.getSpaceByUser(userId);
+        result.put("space", spaceList);
+        List<Long> spaceIds = new ArrayList<>();
+        spaceList.forEach(space -> {
+            spaceIds.add(space.getSpaceId());
+        });
+        result.put("dir", docDirMapper.selectDirByUser(spaceIds, userId));
+        return result;
+    }
 }

+ 24 - 22
doc-biz/src/main/java/com/doc/biz/service/impl/DocSpaceServiceImpl.java

@@ -9,7 +9,9 @@ import com.doc.common.core.domain.entity.SysUser;
 import com.doc.common.enums.SpaceType;
 import com.doc.common.utils.DateUtils;
 import com.doc.common.utils.SecurityUtils;
+import com.doc.common.utils.bean.BeanUtils;
 import com.doc.system.service.ISysConfigService;
+import com.doc.system.service.ISysUserService;
 import org.springframework.stereotype.Service;
 
 import javax.annotation.Resource;
@@ -49,7 +51,7 @@ public class DocSpaceServiceImpl implements IDocSpaceService {
      * @return 文档空间管理
      */
     @Override
-    public List<DocSpace> selectDocSpaceByType(DocSpace docSpace) {
+    public List<DocSpace> selectDocSpaceList(DocSpace docSpace) {
         return docSpaceMapper.selectDocSpaceList(docSpace);
     }
 
@@ -60,26 +62,26 @@ public class DocSpaceServiceImpl implements IDocSpaceService {
      * @return 文档空间管理集合
      */
     @Override
-    public DocSpace selectDocSpaceByType(String type) {
-        DocSpace search = new DocSpace();
-        search.setSpaceType(type);
-        switch (type) {
-//            case "1":
-//                break;
-            case "2":
-                search.setOwner(SecurityUtils.getDeptId());
-                break;
-            case "3":
-                search.setOwner(SecurityUtils.getUserId());
-                break;
-            default:
-        }
-        List<DocSpace> space = selectDocSpaceByType(search);
-        if (space.size() == 1) {
-            return space.get(0);
-        } else {
-            return null;
-        }
+    public DocSpace selectDocSpaceListByType(String type) {
+        List<DocSpace> spaceList = getSpaceByUser(SecurityUtils.getUserId());
+        DocSpace space = new DocSpace();
+        spaceList.forEach(s -> {
+            if (type.equals(s.getSpaceType())) {
+                BeanUtils.copyProperties(s, space);
+            }
+        });
+        return space;
+    }
+
+    /**
+     * 通过用户ID获取公共空间、部门空间和个人空间
+     *
+     * @param userId 用户ID
+     * @return 结果集
+     */
+    @Override
+    public List<DocSpace> getSpaceByUser(Long userId) {
+        return docSpaceMapper.selectDocSpaceByUser(userId);
     }
 
     /**
@@ -168,7 +170,7 @@ public class DocSpaceServiceImpl implements IDocSpaceService {
         space.setSpaceType(spaceType.getValue());
         space.setOwner(owner);
 
-        List<DocSpace> list = selectDocSpaceByType(space);
+        List<DocSpace> list = selectDocSpaceList(space);
         space.setSpaceName(spaceName);
         if (list.size() > 0) {
             //如果有记录,则更新空间名称

+ 71 - 0
doc-biz/src/main/java/com/doc/biz/vo/DocInfoVO.java

@@ -0,0 +1,71 @@
+package com.doc.biz.vo;
+
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.doc.biz.domain.DocDir;
+import com.doc.biz.domain.DocSpace;
+import com.doc.common.core.domain.BaseEntity;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import org.apache.commons.lang3.builder.ToStringBuilder;
+import org.apache.commons.lang3.builder.ToStringStyle;
+
+import java.io.Serializable;
+
+/**
+ * 文件基本信息表对象 doc_info
+ *
+ * @author wukai
+ * @date 2023-08-21
+ */
+@ApiModel(value = "DocInfoVO", description = "文件信息表")
+@Data
+public class DocInfoVO extends BaseEntity {
+    /**
+     * 文件ID
+     */
+    @ApiModelProperty("文档ID")
+    private Long docId;
+
+    /**
+     * 空间ID
+     */
+    @ApiModelProperty("空间ID")
+    private Long spaceId;
+
+    @ApiModelProperty("空间信息")
+    private DocSpace space;
+
+    /**
+     * 目录ID
+     */
+    @ApiModelProperty("目录ID")
+    private Long dirId;
+
+    @ApiModelProperty("目录信息")
+    private DocDir dir;
+
+    /**
+     * 文件名称
+     */
+    @ApiModelProperty("文件名称")
+    private String fileName;
+
+    /**
+     * 文件ID
+     */
+    @ApiModelProperty("文件ID")
+    private String fileId;
+
+    /**
+     * 文件大小
+     */
+    @ApiModelProperty("文件大小")
+    private Long fileSize;
+
+    /**
+     * 文件类型
+     */
+    @ApiModelProperty("文件类型")
+    private String fileType;
+}

+ 2 - 1
doc-biz/src/main/java/com/doc/biz/vo/DocumentVO.java

@@ -5,6 +5,7 @@ import com.doc.common.utils.bean.BeanUtils;
 import com.fasterxml.jackson.annotation.JsonIgnore;
 import lombok.Data;
 
+import java.io.Serializable;
 import java.util.Objects;
 
 /**
@@ -14,7 +15,7 @@ import java.util.Objects;
  * @date 2023-08-15
  */
 @Data
-public class DocumentVO {
+public class DocumentVO implements Serializable {
 
     private String fileId;
 

+ 2 - 1
doc-biz/src/main/java/com/doc/biz/vo/TreeVO.java

@@ -2,6 +2,7 @@ package com.doc.biz.vo;
 
 import lombok.Data;
 
+import java.io.Serializable;
 import java.util.List;
 
 /**
@@ -11,7 +12,7 @@ import java.util.List;
  * @date 2023/8/30 17:00
  */
 @Data
-public class TreeVO {
+public class TreeVO implements Serializable {
     private Long id;
     private String label;
     private Boolean disabled;

+ 12 - 99
doc-biz/src/main/java/com/doc/chat/domain/ChatMsg.java

@@ -7,6 +7,7 @@ import com.doc.common.annotation.Excel;
 import com.doc.common.core.domain.BaseEntity;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
 import org.apache.commons.lang3.builder.ToStringBuilder;
 import org.apache.commons.lang3.builder.ToStringStyle;
 
@@ -18,7 +19,8 @@ import java.util.List;
  * @author wukai
  * @date 2023-08-25
  */
-@ApiModel(value = "ChatMsg" , description = "聊天消息管理")
+@Data
+@ApiModel(value = "ChatMsg", description = "聊天消息管理")
 public class ChatMsg extends BaseEntity {
     private static final long serialVersionUID = 1L;
 
@@ -91,109 +93,20 @@ public class ChatMsg extends BaseEntity {
     /**
      * 文件列表
      */
-    @ApiModelProperty("文件列表")
+    @ApiModelProperty("文件信息")
     @TableField(exist = false)
-    private List<DocInfo> fileList;
-
-
-    public String getFromAvatar() {
-        return fromAvatar;
-    }
-
-    public void setFromAvatar(String fromAvatar) {
-        this.fromAvatar = fromAvatar;
-    }
-
-    public String getToAvatar() {
-        return toAvatar;
-    }
-
-    public void setToAvatar(String toAvatar) {
-        this.toAvatar = toAvatar;
-    }
-
-    public String getFromName() {
-        return fromName;
-    }
-
-    public void setFromName(String fromName) {
-        this.fromName = fromName;
-    }
-
-    public String getToName() {
-        return toName;
-    }
-
-    public void setToName(String toName) {
-        this.toName = toName;
-    }
-
-    public List<DocInfo> getFileList() {
-        return fileList;
-    }
-
-    public void setFileList(List<DocInfo> fileList) {
-        this.fileList = fileList;
-    }
-
-    public void setMsgId(Long msgId) {
-        this.msgId = msgId;
-    }
-
-    public Long getMsgId() {
-        return msgId;
-    }
-
-    public void setFromId(Long fromId) {
-        this.fromId = fromId;
-    }
-
-    public Long getFromId() {
-        return fromId;
-    }
-
-    public void setToId(Long toId) {
-        this.toId = toId;
-    }
-
-    public Long getToId() {
-        return toId;
-    }
-
-    public void setMsgType(String msgType) {
-        this.msgType = msgType;
-    }
-
-    public String getMsgType() {
-        return msgType;
-    }
-
-    public void setContent(String content) {
-        this.content = content;
-    }
-
-    public String getContent() {
-        return content;
-    }
-
-    public void setIdIndex(String idIndex) {
-        this.idIndex = idIndex;
-    }
-
-    public String getIdIndex() {
-        return idIndex;
-    }
+    private DocInfo file;
 
     @Override
     public String toString() {
         return new ToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE)
-                .append("msgId" , getMsgId())
-                .append("fromId" , getFromId())
-                .append("toId" , getToId())
-                .append("msgType" , getMsgType())
-                .append("content" , getContent())
-                .append("idIndex" , getIdIndex())
-                .append("createTime" , getCreateTime())
+                .append("msgId", getMsgId())
+                .append("fromId", getFromId())
+                .append("toId", getToId())
+                .append("msgType", getMsgType())
+                .append("content", getContent())
+                .append("idIndex", getIdIndex())
+                .append("createTime", getCreateTime())
                 .toString();
     }
 }

+ 17 - 6
doc-biz/src/main/java/com/doc/chat/service/impl/ChatMsgServiceImpl.java

@@ -1,6 +1,7 @@
 package com.doc.chat.service.impl;
 
 import com.alibaba.fastjson2.JSON;
+import com.doc.biz.service.IDocInfoService;
 import com.doc.chat.domain.ChatMsg;
 import com.doc.chat.mapper.ChatMsgMapper;
 import com.doc.chat.service.IChatMsgService;
@@ -8,6 +9,7 @@ import com.doc.common.constant.CacheConstants;
 import com.doc.common.core.domain.entity.SysUser;
 import com.doc.common.utils.DateUtils;
 import com.doc.common.utils.SecurityUtils;
+import com.doc.common.utils.StringUtils;
 import com.doc.system.service.ISysUserService;
 import org.springframework.data.redis.core.StringRedisTemplate;
 import org.springframework.stereotype.Service;
@@ -31,6 +33,8 @@ public class ChatMsgServiceImpl implements IChatMsgService {
     private ISysUserService userService;
     @Resource
     private StringRedisTemplate stringRedisTemplate;
+    @Resource
+    private IDocInfoService docInfoService;
 
 
     /**
@@ -120,7 +124,7 @@ public class ChatMsgServiceImpl implements IChatMsgService {
     @Override
     public List<ChatMsg> selectRecordList(Long fromId, Long toId) {
         List<ChatMsg> msgList = chatMsgMapper.selectRecordList(getIdIndex(fromId, toId));
-        setUserInfo(msgList);
+        process(msgList);
         return msgList;
     }
 
@@ -133,7 +137,7 @@ public class ChatMsgServiceImpl implements IChatMsgService {
     @Override
     public List<ChatMsg> selectFriendList(Long userId) {
         List<ChatMsg> msgList = chatMsgMapper.selectFriendList(userId);
-        setUserInfo(msgList);
+        process(msgList);
         return msgList;
     }
 
@@ -154,13 +158,20 @@ public class ChatMsgServiceImpl implements IChatMsgService {
     }
 
     /**
-     * 设置用户信息
+     * 设置用户及文件信息
      *
      * @param msgList 消息列表
      */
-    private void setUserInfo(List<ChatMsg> msgList) {
+    private void process(List<ChatMsg> msgList) {
         Map<Long, SysUser> userMap = userService.selectAllUser();
-        for (ChatMsg msg : msgList) {
+        msgList.forEach(msg -> {
+            String type = "1";
+            if (type.equals(msg.getMsgType())) {
+                if (StringUtils.isNotEmpty(msg.getContent())) {
+                    Long docId = new Long(msg.getContent());
+                    msg.setFile(docInfoService.selectDocInfoByDocId(docId));
+                }
+            }
             SysUser fromUser = userMap.get(msg.getFromId());
             SysUser toUser = userMap.get(msg.getToId());
             if (fromUser != null) {
@@ -171,7 +182,7 @@ public class ChatMsgServiceImpl implements IChatMsgService {
                 msg.setToName(toUser.getNickName());
                 msg.setToAvatar(toUser.getAvatar());
             }
-        }
+        });
     }
 
 }

+ 56 - 27
doc-biz/src/main/resources/mapper/biz/DocDirMapper.xml

@@ -1,43 +1,70 @@
 <?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">
+        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 <mapper namespace="com.doc.biz.mapper.DocDirMapper">
-    
+
     <resultMap type="DocDir" id="DocDirResult">
-        <result property="dirId"    column="DIR_ID"    />
-        <result property="spaceId"    column="SPACE_ID"    />
-        <result property="dirType"    column="DIR_TYPE"    />
-        <result property="dirRole"    column="DIR_ROLE"    />
-        <result property="dirName"    column="DIR_NAME"    />
-        <result property="parentId"    column="PARENT_ID"    />
-        <result property="dirPath"    column="DIR_PATH"    />
-        <result property="createBy"    column="CREATE_BY"    />
-        <result property="createTime"    column="CREATE_TIME"    />
-        <result property="updateBy"    column="UPDATE_BY"    />
-        <result property="updateTime"    column="UPDATE_TIME"    />
-        <result property="remark"    column="REMARK"    />
+        <result property="dirId" column="DIR_ID"/>
+        <result property="spaceId" column="SPACE_ID"/>
+        <result property="dirType" column="DIR_TYPE"/>
+        <result property="dirRole" column="DIR_ROLE"/>
+        <result property="dirName" column="DIR_NAME"/>
+        <result property="parentId" column="PARENT_ID"/>
+        <result property="dirPath" column="DIR_PATH"/>
+        <result property="createBy" column="CREATE_BY"/>
+        <result property="createTime" column="CREATE_TIME"/>
+        <result property="updateBy" column="UPDATE_BY"/>
+        <result property="updateTime" column="UPDATE_TIME"/>
+        <result property="remark" column="REMARK"/>
     </resultMap>
 
     <sql id="selectDocDirVo">
-        select DIR_ID, SPACE_ID, DIR_TYPE, DIR_ROLE, DIR_NAME, PARENT_ID, DIR_PATH, CREATE_BY, CREATE_TIME, UPDATE_BY, UPDATE_TIME, REMARK from doc_dir
+        select DIR_ID,
+               SPACE_ID,
+               DIR_TYPE,
+               DIR_ROLE,
+               DIR_NAME,
+               PARENT_ID,
+               DIR_PATH,
+               CREATE_BY,
+               CREATE_TIME,
+               UPDATE_BY,
+               UPDATE_TIME,
+               REMARK
+        from doc_dir
     </sql>
 
     <select id="selectDocDirList" parameterType="DocDir" resultMap="DocDirResult">
         <include refid="selectDocDirVo"/>
-        <where>  
-            <if test="dirType != null  and dirType != ''"> and DIR_TYPE = #{dirType}</if>
-            <if test="dirRole != null  and dirRole != ''"> and DIR_ROLE = #{dirRole}</if>
-            <if test="dirName != null  and dirName != ''"> and DIR_NAME like concat('%', #{dirName}, '%')</if>
-            <if test="parentId != null "> and PARENT_ID = #{parentId}</if>
+        <where>
+            <if test="dirType != null  and dirType != ''">and DIR_TYPE = #{dirType}</if>
+            <if test="dirRole != null  and dirRole != ''">and DIR_ROLE = #{dirRole}</if>
+            <if test="dirName != null  and dirName != ''">and DIR_NAME like concat('%', #{dirName}, '%')</if>
+            <if test="parentId != null ">and PARENT_ID = #{parentId}</if>
         </where>
     </select>
-    
+
     <select id="selectDocDirByDirId" parameterType="Long" resultMap="DocDirResult">
         <include refid="selectDocDirVo"/>
         where DIR_ID = #{dirId}
     </select>
-        
+    <select id="selectDirByUser" resultType="com.doc.biz.domain.DocDir">
+        <include refid="selectDocDirVo"/>
+        WHERE space_id IN
+        <foreach collection="spaceIds" open="(" separator="," close=")" item="spaceId">
+            #{spaceId}
+        </foreach>
+        AND (
+        dir_type = '1' OR (
+        dir_type = '2' AND dir_id IN
+        (
+        SELECT dir_id FROM doc_dir_user WHERE user_id = #{userId}
+        )
+        )
+        )
+    </select>
+
     <insert id="insertDocDir" parameterType="DocDir" useGeneratedKeys="true" keyProperty="dirId">
         insert into doc_dir
         <trim prefix="(" suffix=")" suffixOverrides=",">
@@ -52,7 +79,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <if test="updateBy != null">UPDATE_BY,</if>
             <if test="updateTime != null">UPDATE_TIME,</if>
             <if test="remark != null">REMARK,</if>
-         </trim>
+        </trim>
         <trim prefix="values (" suffix=")" suffixOverrides=",">
             <if test="spaceId != null">#{spaceId},</if>
             <if test="dirType != null">#{dirType},</if>
@@ -65,7 +92,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <if test="updateBy != null">#{updateBy},</if>
             <if test="updateTime != null">#{updateTime},</if>
             <if test="remark != null">#{remark},</if>
-         </trim>
+        </trim>
     </insert>
 
     <update id="updateDocDir" parameterType="DocDir">
@@ -87,11 +114,13 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
     </update>
 
     <delete id="deleteDocDirByDirId" parameterType="Long">
-        delete from doc_dir where DIR_ID = #{dirId}
+        delete
+        from doc_dir
+        where DIR_ID = #{dirId}
     </delete>
 
     <delete id="deleteDocDirByDirIds" parameterType="String">
-        delete from doc_dir where DIR_ID in 
+        delete from doc_dir where DIR_ID in
         <foreach item="dirId" collection="array" open="(" separator="," close=")">
             #{dirId}
         </foreach>

+ 9 - 1
doc-biz/src/main/resources/mapper/biz/DocInfoMapper.xml

@@ -25,7 +25,15 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
 
     <select id="selectDocInfoList" parameterType="DocInfo" resultMap="DocInfoResult">
         <include refid="selectDocInfoVo"/>
-        <where>  
+        <where>
+            <if test="fileName != null  and fileName != ''"> and FILE_NAME like concat('%', #{fileName}, '%')</if>
+            <if test="params.beginCreateTime != null and params.beginCreateTime != '' and params.endCreateTime != null and params.endCreateTime != ''"> and CREATE_TIME between #{params.beginCreateTime} and #{params.endCreateTime}</if>
+            <if test="params.dirIds!=null">
+                AND DIR_ID IN
+                <foreach collection="params.dirIds" open="(" separator="," close=")" item="id">
+                    #{id}
+                </foreach>
+            </if>
         </where>
     </select>
     

+ 46 - 26
doc-biz/src/main/resources/mapper/biz/DocSpaceMapper.xml

@@ -1,42 +1,60 @@
 <?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">
+        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 <mapper namespace="com.doc.biz.mapper.DocSpaceMapper">
-    
+
     <resultMap type="DocSpace" id="DocSpaceResult">
-        <result property="spaceId"    column="SPACE_ID"    />
-        <result property="spaceType"    column="SPACE_TYPE"    />
-        <result property="spaceName"    column="SPACE_NAME"    />
-        <result property="spaceCap"    column="SPACE_CAP"    />
-        <result property="usedCap"    column="USED_CAP"    />
-        <result property="freeCap"    column="FREE_CAP"    />
-        <result property="owner"    column="OWNER"    />
-        <result property="createBy"    column="CREATE_BY"    />
-        <result property="createTime"    column="CREATE_TIME"    />
-        <result property="updateBy"    column="UPDATE_BY"    />
-        <result property="updateTime"    column="UPDATE_TIME"    />
-        <result property="remark"    column="REMARK"    />
+        <result property="spaceId" column="SPACE_ID"/>
+        <result property="spaceType" column="SPACE_TYPE"/>
+        <result property="spaceName" column="SPACE_NAME"/>
+        <result property="spaceCap" column="SPACE_CAP"/>
+        <result property="usedCap" column="USED_CAP"/>
+        <result property="freeCap" column="FREE_CAP"/>
+        <result property="owner" column="OWNER"/>
+        <result property="createBy" column="CREATE_BY"/>
+        <result property="createTime" column="CREATE_TIME"/>
+        <result property="updateBy" column="UPDATE_BY"/>
+        <result property="updateTime" column="UPDATE_TIME"/>
+        <result property="remark" column="REMARK"/>
     </resultMap>
 
     <sql id="selectDocSpaceVo">
-        select SPACE_ID, SPACE_TYPE, SPACE_NAME, SPACE_CAP, USED_CAP, FREE_CAP, OWNER, CREATE_BY, CREATE_TIME, UPDATE_BY, UPDATE_TIME, REMARK from doc_space
+        select SPACE_ID,
+               SPACE_TYPE,
+               SPACE_NAME,
+               SPACE_CAP,
+               USED_CAP,
+               FREE_CAP,
+               OWNER,
+               CREATE_BY,
+               CREATE_TIME,
+               UPDATE_BY,
+               UPDATE_TIME,
+               REMARK
+        from doc_space
     </sql>
 
     <select id="selectDocSpaceList" parameterType="DocSpace" resultMap="DocSpaceResult">
         <include refid="selectDocSpaceVo"/>
-        <where>  
-            <if test="spaceType != null  and spaceType != ''"> and SPACE_TYPE = #{spaceType}</if>
-            <if test="spaceName != null  and spaceName != ''"> and SPACE_NAME like concat('%', #{spaceName}, '%')</if>
-            <if test="owner != null  and owner != ''"> and OWNER =#{owner}</if>
+        <where>
+            <if test="spaceType != null  and spaceType != ''">and SPACE_TYPE = #{spaceType}</if>
+            <if test="spaceName != null  and spaceName != ''">and SPACE_NAME like concat('%', #{spaceName}, '%')</if>
+            <if test="owner != null  and owner != ''">and OWNER =#{owner}</if>
         </where>
     </select>
-    
+
     <select id="selectDocSpaceBySpaceId" parameterType="Long" resultMap="DocSpaceResult">
         <include refid="selectDocSpaceVo"/>
         where SPACE_ID = #{spaceId}
     </select>
-        
+    <select id="selectDocSpaceByUser" parameterType="Long" resultMap="DocSpaceResult">
+        <include refid="selectDocSpaceVo"/>
+        where SPACE_TYPE='1'
+        or (SPACE_TYPE='2' and OWNER=(select dept_id from sys_user where user_id=#{userId}))
+        or (SPACE_TYPE='3' and OWNER=#{userId})
+    </select>
+
     <insert id="insertDocSpace" parameterType="DocSpace" useGeneratedKeys="true" keyProperty="spaceId">
         insert into doc_space
         <trim prefix="(" suffix=")" suffixOverrides=",">
@@ -51,7 +69,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <if test="updateBy != null">UPDATE_BY,</if>
             <if test="updateTime != null">UPDATE_TIME,</if>
             <if test="remark != null">REMARK,</if>
-         </trim>
+        </trim>
         <trim prefix="values (" suffix=")" suffixOverrides=",">
             <if test="spaceType != null">#{spaceType},</if>
             <if test="spaceName != null">#{spaceName},</if>
@@ -64,7 +82,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <if test="updateBy != null">#{updateBy},</if>
             <if test="updateTime != null">#{updateTime},</if>
             <if test="remark != null">#{remark},</if>
-         </trim>
+        </trim>
     </insert>
 
     <update id="updateDocSpace" parameterType="DocSpace">
@@ -86,11 +104,13 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
     </update>
 
     <delete id="deleteDocSpaceBySpaceId" parameterType="Long">
-        delete from doc_space where SPACE_ID = #{spaceId}
+        delete
+        from doc_space
+        where SPACE_ID = #{spaceId}
     </delete>
 
     <delete id="deleteDocSpaceBySpaceIds" parameterType="String">
-        delete from doc_space where SPACE_ID in 
+        delete from doc_space where SPACE_ID in
         <foreach item="spaceId" collection="array" open="(" separator="," close=")">
             #{spaceId}
         </foreach>