Explorar o código

联系人附件相关接口:上传,下载,删除,重命名

yusm hai 1 ano
pai
achega
78668a7e2d

+ 78 - 0
fhKeeper/formulahousekeeper/management-crm/src/main/java/com/management/platform/controller/ContactsDocumentController.java

@@ -0,0 +1,78 @@
+package com.management.platform.controller;
+
+import com.management.platform.entity.dto.ContactsFileDto;
+import com.management.platform.service.ContactsDocumentService;
+import com.management.platform.util.HttpRespMsg;
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.RestController;
+import org.springframework.web.multipart.MultipartFile;
+
+import javax.annotation.Resource;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+/**
+ * <p>
+ *  前端控制器
+ * </p>
+ *
+ * @author Seyason
+ * @since 2024-03-14
+ */
+@RestController
+@RequestMapping("/contacts-document")
+public class ContactsDocumentController {
+    @Resource
+    private ContactsDocumentService documentService;
+
+
+    /**
+     * 上传附件
+     * @param request
+     * @param contactsId
+     * @param folderId
+     * @param files
+     * @return
+     */
+    @RequestMapping("/fileUpload")
+    public HttpRespMsg fileUpload (HttpServletRequest request, @RequestParam Integer contactsId, @RequestParam(required=false) Integer folderId, @RequestParam("file") MultipartFile[] files){
+        return documentService.fileUpload(request,contactsId,folderId,files);
+    }
+
+    /**
+     * 下载文件
+     * @param request
+     * @param response
+     * @param folderId
+     * @param contactsId
+     * @param fileId
+     * @return
+     */
+    @RequestMapping("/fileDown")
+    public HttpRespMsg fileDown (HttpServletRequest request, HttpServletResponse response, @RequestParam(required=false) Integer folderId, Integer contactsId, Integer fileId){
+        return documentService.fileDown(request,response,folderId,contactsId,fileId);
+    }
+
+    /**
+     *
+     * @param request
+     * @param contactsFileDto
+     * @return
+     */
+    @RequestMapping("/fileDelete")
+    public HttpRespMsg fileDelete (HttpServletRequest request, ContactsFileDto contactsFileDto){
+        return documentService.fileDelete(request,contactsFileDto);
+    }
+
+    @RequestMapping("/reNameFile")
+    public HttpRespMsg reNameFile(HttpServletRequest request,Integer fileId,Integer contactsId,String newName){
+        return documentService.reNameFile(request, fileId, contactsId, newName);
+    }
+
+
+
+
+}
+

+ 107 - 0
fhKeeper/formulahousekeeper/management-crm/src/main/java/com/management/platform/entity/ContactsDocument.java

@@ -0,0 +1,107 @@
+package com.management.platform.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.extension.activerecord.Model;
+import com.baomidou.mybatisplus.annotation.TableId;
+import java.time.LocalDateTime;
+import com.baomidou.mybatisplus.annotation.TableField;
+import java.io.Serializable;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+/**
+ * <p>
+ * 
+ * </p>
+ *
+ * @author Seyason
+ * @since 2024-03-14
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+public class ContactsDocument extends Model<ContactsDocument> {
+
+    private static final long serialVersionUID=1L;
+
+    @TableId(value = "id", type = IdType.AUTO)
+    private Integer id;
+
+    /**
+     * 文件名
+     */
+    @TableField("document_name")
+    private String documentName;
+
+    /**
+     * 服务器生成的文件名
+     */
+    @TableField("server_name")
+    private String serverName;
+
+    /**
+     * 对外访问地址
+     */
+    @TableField("url")
+    private String url;
+
+    /**
+     * 创建人id
+     */
+    @TableField("creator_id")
+    private String creatorId;
+
+    /**
+     * 创建人姓名
+     */
+    @TableField("creator_name")
+    private String creatorName;
+
+    /**
+     * 创建时间
+     */
+    @TableField("indate")
+    private LocalDateTime indate;
+
+    /**
+     * 联系人id
+     */
+    @TableField("contacts_id")
+    private Integer contactsId;
+
+    @TableField("folder_id")
+    private Integer folderId;
+
+    /**
+     * 文件大小
+     */
+    @TableField("size")
+    private String size;
+
+    /**
+     * 文件类型
+     * 0-图片文件,1-文本文件 ,2-压缩文件,3-txt,4-excle文件,5-压缩文件,6-视频文件,7-音频文件
+     */
+    @TableField("document_type")
+    private Integer documentType;
+
+    /**
+     * 文件状态0-存在,1-删除
+     */
+    @TableField("is_deleted")
+    private Integer isDeleted;
+
+    /**
+     * 是否是文件夹
+     */
+    @TableField("is_folder")
+    private Integer isFolder;
+
+
+    @Override
+    protected Serializable pkVal() {
+        return this.id;
+    }
+
+}

+ 11 - 0
fhKeeper/formulahousekeeper/management-crm/src/main/java/com/management/platform/entity/dto/ContactsFileDto.java

@@ -0,0 +1,11 @@
+package com.management.platform.entity.dto;
+
+import lombok.Data;
+
+import java.util.List;
+
+@Data
+public class ContactsFileDto {
+    private Integer contactsId;
+    private List<Integer> fileIds;
+}

+ 2 - 4
fhKeeper/formulahousekeeper/management-crm/src/main/java/com/management/platform/entity/vo/ContactsVo.java

@@ -1,9 +1,6 @@
 package com.management.platform.entity.vo;
 
-import com.management.platform.entity.BusinessOpportunity;
-import com.management.platform.entity.Contacts;
-import com.management.platform.entity.ContactsLog;
-import com.management.platform.entity.Task;
+import com.management.platform.entity.*;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
 import lombok.experimental.Accessors;
@@ -19,5 +16,6 @@ public class ContactsVo extends Contacts {
     private List<ContactsLog> contactsLogList;
     private List<Task> taskList;
     private List<BusinessOpportunity> businessOpportunityList;
+    private List<ContactsDocument> contactsDocumentList;
 
 }

+ 16 - 0
fhKeeper/formulahousekeeper/management-crm/src/main/java/com/management/platform/mapper/ContactsDocumentMapper.java

@@ -0,0 +1,16 @@
+package com.management.platform.mapper;
+
+import com.management.platform.entity.ContactsDocument;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * <p>
+ *  Mapper 接口
+ * </p>
+ *
+ * @author Seyason
+ * @since 2024-03-14
+ */
+public interface ContactsDocumentMapper extends BaseMapper<ContactsDocument> {
+
+}

+ 29 - 0
fhKeeper/formulahousekeeper/management-crm/src/main/java/com/management/platform/service/ContactsDocumentService.java

@@ -0,0 +1,29 @@
+package com.management.platform.service;
+
+import com.management.platform.entity.ContactsDocument;
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.management.platform.entity.dto.ContactsFileDto;
+import com.management.platform.util.HttpRespMsg;
+import org.springframework.web.multipart.MultipartFile;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+/**
+ * <p>
+ *  服务类
+ * </p>
+ *
+ * @author Seyason
+ * @since 2024-03-14
+ */
+public interface ContactsDocumentService extends IService<ContactsDocument> {
+
+    HttpRespMsg fileUpload(HttpServletRequest request, Integer contactsId, Integer folderId, MultipartFile[] files);
+
+    HttpRespMsg fileDown(HttpServletRequest request, HttpServletResponse response, Integer folderId, Integer contactsId, Integer fileId);
+
+    HttpRespMsg fileDelete(HttpServletRequest request, ContactsFileDto contactsFileDto);
+
+    HttpRespMsg reNameFile(HttpServletRequest request, Integer fileId, Integer contactsId, String newName);
+}

+ 164 - 0
fhKeeper/formulahousekeeper/management-crm/src/main/java/com/management/platform/service/impl/ContactsDocumentServiceImpl.java

@@ -0,0 +1,164 @@
+package com.management.platform.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
+import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
+import com.management.platform.entity.ContactsDocument;
+import com.management.platform.entity.ContractDocument;
+import com.management.platform.entity.User;
+import com.management.platform.entity.dto.ContactsFileDto;
+import com.management.platform.mapper.ContactsDocumentMapper;
+import com.management.platform.mapper.UserMapper;
+import com.management.platform.service.ContactsDocumentService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.management.platform.util.DocumentTypeUtil;
+import com.management.platform.util.FileUtil;
+import com.management.platform.util.HttpRespMsg;
+import com.management.platform.util.MessageUtils;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+import org.springframework.web.multipart.MultipartFile;
+
+import javax.annotation.Resource;
+import javax.servlet.ServletOutputStream;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import java.io.File;
+import java.io.IOException;
+import java.net.URLEncoder;
+import java.util.List;
+import java.util.UUID;
+
+/**
+ * <p>
+ *  服务实现类
+ * </p>
+ *
+ * @author Seyason
+ * @since 2024-03-14
+ */
+@Service
+public class ContactsDocumentServiceImpl extends ServiceImpl<ContactsDocumentMapper, ContactsDocument> implements ContactsDocumentService {
+    @Resource
+    private UserMapper userMapper;
+
+    @Resource
+    private ContactsDocumentMapper contactsDocumentMapper;
+
+    @Value(value = "${upload.path}")
+    private String path;
+
+    @Override
+    public HttpRespMsg fileUpload(HttpServletRequest request, Integer contactsId, Integer folderId, MultipartFile[] files) {
+        HttpRespMsg msg = new HttpRespMsg();
+        User user = userMapper.selectById(request.getHeader("token"));
+        for (MultipartFile file : files) {
+            ContactsDocument record = new ContactsDocument();
+            record.setCreatorId(user.getId());
+            record.setCreatorName(user.getName());
+            record.setDocumentName(file.getOriginalFilename());
+            record.setFolderId(folderId);
+            record.setContactsId(contactsId);
+            if (file != null && !file.isEmpty()) {
+                //截取文件后缀
+                String fileSuffix = file.getOriginalFilename().substring(file.getOriginalFilename().lastIndexOf("."));
+                record.setDocumentType(DocumentTypeUtil.DocumentType(fileSuffix));
+                //处理文件
+                File dir = new File(path);
+                if (!dir.exists()) {
+                    dir.mkdir();
+                }
+                String fileName= "";
+                if (file!=null && !file.isEmpty()) {
+                    fileName = file.getOriginalFilename();
+
+                    int pos = fileName.lastIndexOf(".");
+                    String suffix = fileName.substring(pos).toLowerCase();
+                    //用uuid替换原始的文件名
+                    String purFName = UUID.randomUUID().toString().replaceAll("-", "");
+                    fileName = purFName + suffix;
+                    File saveFile = new File(dir, fileName);
+                    try {
+                        saveFile.createNewFile();
+                        file.transferTo(saveFile);
+                        //计算文件大小
+                        long fileSize = saveFile.length();
+                        String fileLength = FileUtil.getReadableFileSize(fileSize);
+                        record.setServerName(path + fileName);
+                        record.setSize(fileLength);
+                        String pathPrefix = "/upload/";
+                        record.setUrl(pathPrefix + fileName);
+                        contactsDocumentMapper.insert(record);
+                        msg.data = record;
+                    } catch (IOException e) {
+                        e.printStackTrace();
+                        fileName = null;
+                        msg.setError(e.getMessage()+", path="+dir.getAbsolutePath());
+                    } catch (Exception e) {
+                        e.printStackTrace();
+                        fileName = null;
+                        msg.setError(e.getMessage()+", path="+dir.getAbsolutePath());
+                    }
+                } else {
+                    msg.setError(MessageUtils.message("file.nonExistentError"));
+                }
+            }
+        }
+        return msg;
+    }
+
+    @Override
+    public HttpRespMsg fileDown(HttpServletRequest request, HttpServletResponse response, Integer folderId, Integer contactsId, Integer fileId) {
+        HttpRespMsg msg = new HttpRespMsg();
+        User user = userMapper.selectById(request.getHeader("token"));
+        List<ContactsDocument> files = contactsDocumentMapper.selectList(new QueryWrapper<ContactsDocument>().eq("contacts_id", contactsId));
+        try {
+            ServletOutputStream os = response.getOutputStream();
+            for (ContactsDocument file : files) {
+                if (fileId.equals(file.getId())){
+                    File uploadFile = new File(file.getServerName());
+                    response.addHeader("Content-Disposition", "attachment;filename=" + URLEncoder.encode(file.getDocumentName(), "UTF-8"));
+                    response.setContentType("application/octet-stream");
+                    // 读取文件的字节流
+                    os.write(FileUtil.readFileByBytes(uploadFile));
+                    os.flush();
+                    break;
+                }
+            }
+        }catch (IOException e) {
+            msg.setError(MessageUtils.message("file.error"));
+            e.printStackTrace();
+        }
+        return msg;
+    }
+
+    @Override
+    @Transactional
+    public HttpRespMsg fileDelete(HttpServletRequest request, ContactsFileDto contactsFileDto) {
+        HttpRespMsg msg = new HttpRespMsg();
+        User user = userMapper.selectById(request.getHeader("Token"));
+        List<Integer> fileIds = contactsFileDto.getFileIds();
+        List<ContactsDocument> contactsDocuments = contactsDocumentMapper.selectBatchIds(fileIds);
+        for (ContactsDocument contactsDocument : contactsDocuments) {
+            contactsDocumentMapper.update(null,new UpdateWrapper<ContactsDocument>().eq("contacts_id", contactsDocument.getContactsId()).set("is_deleted", 1));
+        }
+        msg.setMsg("删除成功");
+        return msg;
+    }
+
+    @Override
+    @Transactional
+    public HttpRespMsg reNameFile(HttpServletRequest request, Integer fileId, Integer contactsId, String newName) {
+        HttpRespMsg msg = new HttpRespMsg();
+        ContactsDocument contactsDocument = contactsDocumentMapper.selectById(fileId);
+        if (contactsDocument==null){
+            msg.setError("文件不存在");
+        }
+        LambdaUpdateWrapper<ContactsDocument> ulw = new LambdaUpdateWrapper<>();
+        ulw.set(ContactsDocument::getDocumentName,newName).eq(ContactsDocument::getId,fileId);
+        contactsDocumentMapper.update(null,ulw);
+        return msg;
+    }
+}

+ 9 - 1
fhKeeper/formulahousekeeper/management-crm/src/main/java/com/management/platform/service/impl/ContactsServiceImpl.java

@@ -49,6 +49,9 @@ public class ContactsServiceImpl extends ServiceImpl<ContactsMapper, Contacts> i
     @Resource
     private CustomMapper customMapper;
 
+    @Resource
+    private ContactsDocumentMapper contactsDocumentMapper;
+
 
     @Override
     @Transactional
@@ -257,12 +260,17 @@ public class ContactsServiceImpl extends ServiceImpl<ContactsMapper, Contacts> i
                 }
             });
 
-            //todo 附件信息查询  uploadFile()方法
+            //附件信息查询
+            LambdaQueryWrapper<ContactsDocument> cDLqw = new LambdaQueryWrapper<>();
+            cDLqw.eq(ContactsDocument::getContactsId,contactsSelect.getId());
+            List<ContactsDocument> contactsDocuments = contactsDocumentMapper.selectList(cDLqw);
 
+            //返回数据
             BeanUtils.copyProperties(contactsSelect, contactsVo);
             contactsVo.setContactsLogList(contactsLogs);
             contactsVo.setTaskList(taskList);
             contactsVo.setBusinessOpportunityList(opportunityList);
+            contactsVo.setContactsDocumentList(contactsDocuments);
         }
         msg.setData(contactsVo);
         return msg;

+ 27 - 0
fhKeeper/formulahousekeeper/management-crm/src/main/resources/mapper/ContactsDocumentMapper.xml

@@ -0,0 +1,27 @@
+<?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.management.platform.mapper.ContactsDocumentMapper">
+
+    <!-- 通用查询映射结果 -->
+    <resultMap id="BaseResultMap" type="com.management.platform.entity.ContactsDocument">
+        <id column="id" property="id" />
+        <result column="document_name" property="documentName" />
+        <result column="server_name" property="serverName" />
+        <result column="url" property="url" />
+        <result column="creator_id" property="creatorId" />
+        <result column="creator_name" property="creatorName" />
+        <result column="indate" property="indate" />
+        <result column="contacts_id" property="contactsId" />
+        <result column="folder_id" property="folderId" />
+        <result column="size" property="size" />
+        <result column="document_type" property="documentType" />
+        <result column="is_deleted" property="isDeleted" />
+        <result column="is_folder" property="isFolder" />
+    </resultMap>
+
+    <!-- 通用查询结果列 -->
+    <sql id="Base_Column_List">
+        id, document_name, server_name, url, creator_id, creator_name, indate, contacts_id, folder_id, size, document_type, is_deleted, is_folder
+    </sql>
+
+</mapper>