Sfoglia il codice sorgente

20221028
知识分享

sunruiqi 2 anni fa
parent
commit
2e06756957
17 ha cambiato i file con 922 aggiunte e 0 eliminazioni
  1. 85 0
      jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/knowledge/controller/KnowledgeShareInfoController.java
  2. 75 0
      jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/knowledge/controller/TypeController.java
  3. 33 0
      jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/knowledge/domain/KnowledgeShareComment.java
  4. 26 0
      jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/knowledge/domain/KnowledgeShareDetail.java
  5. 26 0
      jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/knowledge/domain/KnowledgeShareType.java
  6. 38 0
      jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/knowledge/domain/KnowledgeShareVisit.java
  7. 7 0
      jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/knowledge/mapper/KnowledgeShareCommentMapper.java
  8. 13 0
      jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/knowledge/mapper/KnowledgeShareDetailMapper.java
  9. 18 0
      jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/knowledge/mapper/KnowledgeShareTypeMapper.java
  10. 7 0
      jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/knowledge/mapper/KnowledgeShareVisitMapper.java
  11. 30 0
      jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/knowledge/mapper/xml/KnowledgeShareDetailMapper.xml
  12. 46 0
      jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/knowledge/mapper/xml/KnowledgeShareTypeMapper.xml
  13. 245 0
      jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/knowledge/service/KnowledgeShareInfoService.java
  14. 67 0
      jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/knowledge/service/TypeService.java
  15. 82 0
      jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/knowledge/service/dto/KnowledgeShareInfoDto.java
  16. 67 0
      jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/knowledge/service/dto/KnowledgeShareListDto.java
  17. 57 0
      jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/knowledge/service/dto/KnowledgeShareTypeDto.java

+ 85 - 0
jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/knowledge/controller/KnowledgeShareInfoController.java

@@ -0,0 +1,85 @@
+package com.jeeplus.test.knowledge.controller;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.jeeplus.test.knowledge.domain.KnowledgeShareComment;
+import com.jeeplus.test.knowledge.domain.KnowledgeShareDetail;
+import com.jeeplus.test.knowledge.service.KnowledgeShareInfoService;
+import com.jeeplus.test.knowledge.service.dto.KnowledgeShareInfoDto;
+import com.jeeplus.test.knowledge.service.dto.KnowledgeShareListDto;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.http.ResponseEntity;
+import org.springframework.web.bind.annotation.*;
+
+import javax.annotation.Resource;
+
+@RestController
+@Api("/知识分享")
+@RequestMapping(value = "/knowledgeShare/info")
+public class KnowledgeShareInfoController {
+
+    @Resource
+    private KnowledgeShareInfoService service;
+
+    /**
+     * 列表
+     */
+    @GetMapping("list")
+    @ApiOperation(value = "列表")
+    public ResponseEntity<IPage<KnowledgeShareListDto>> list(Page<KnowledgeShareListDto> page, KnowledgeShareDetail detail) {
+        IPage<KnowledgeShareListDto> iPage = service.list(page, detail);
+        return ResponseEntity.ok(iPage);
+    }
+
+    /**
+     * 新增/修改
+     */
+    @PostMapping("save")
+    @ApiOperation(value = "新增/修改")
+    public ResponseEntity<String> save(@RequestBody KnowledgeShareInfoDto dto) {
+        String s = service.save(dto);
+        return ResponseEntity.ok(s);
+    }
+
+    /**
+     * 查看
+     */
+    @GetMapping("/findById")
+    @ApiOperation(value = "查看")
+    public ResponseEntity<KnowledgeShareInfoDto> findById(String id, String method) {
+        KnowledgeShareInfoDto dto = service.findById(id, method);
+        return ResponseEntity.ok(dto);
+    }
+
+    /**
+     * 删除知识分享
+     */
+    @GetMapping("/removeById")
+    @ApiOperation(value = "删除")
+    public ResponseEntity<String> removeById(String id) {
+        String s = service.removeById(id);
+        return ResponseEntity.ok(s);
+    }
+
+    /**
+     * 评论
+     */
+    @PostMapping("/addComment")
+    @ApiOperation(value = "添加评论")
+    public ResponseEntity<String> addComment(@RequestBody KnowledgeShareComment comment) {
+        String s = service.addComment(comment);
+        return ResponseEntity.ok(s);
+    }
+
+    /**
+     * 删除评论
+     */
+    @GetMapping("/delComment")
+    @ApiOperation(value = "删除评论")
+    public ResponseEntity<String> delComment(String id) {
+        String s = service.delComment(id);
+        return ResponseEntity.ok(s);
+    }
+
+}

+ 75 - 0
jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/knowledge/controller/TypeController.java

@@ -0,0 +1,75 @@
+package com.jeeplus.test.knowledge.controller;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.jeeplus.test.knowledge.domain.KnowledgeShareType;
+import com.jeeplus.test.knowledge.mapper.KnowledgeShareTypeMapper;
+import com.jeeplus.test.knowledge.service.TypeService;
+import com.jeeplus.test.knowledge.service.dto.KnowledgeShareTypeDto;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.http.ResponseEntity;
+import org.springframework.web.bind.annotation.*;
+
+import javax.annotation.Resource;
+import java.util.List;
+
+@RestController
+@Api("/知识分享类型")
+@RequestMapping(value = "/knowledgeShare/type")
+public class TypeController {
+
+    @Resource
+    private TypeService service;
+
+    @Resource
+    private KnowledgeShareTypeMapper mapper;
+
+    /**
+     * 列表查询
+     * @param type
+     * @return
+     */
+    @ApiOperation(value = "列表")
+    @GetMapping("/list")
+    public ResponseEntity<IPage<KnowledgeShareTypeDto>> list(Page<KnowledgeShareTypeDto> page, KnowledgeShareType type) {
+        return ResponseEntity.ok(service.list(page, type));
+    }
+
+    /**
+     * 新增/修改
+     * @param type
+     * @return
+     */
+    @ApiOperation(value = "新增/修改")
+    @PostMapping("/save")
+    public ResponseEntity<String> save(@RequestBody KnowledgeShareType type) {
+        String s = service.save(type);
+        return ResponseEntity.ok(s);
+    }
+
+    /**
+     * 根据id查询
+     * @param id
+     * @return
+     */
+    @ApiOperation(value = "根据id查询")
+    @GetMapping("/findById")
+    public ResponseEntity<KnowledgeShareType> findById(String id) {
+        KnowledgeShareType knowledgeShareType = mapper.selectById(id);
+        return ResponseEntity.ok(knowledgeShareType);
+    }
+
+    /**
+     * 根据id删除
+     * @param id
+     * @return
+     */
+    @ApiOperation(value = "根据id删除")
+    @GetMapping("/remove")
+    public ResponseEntity<String> remove(String id) {
+        mapper.deleteById(id);
+        return ResponseEntity.ok("操作完成");
+    }
+
+}

+ 33 - 0
jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/knowledge/domain/KnowledgeShareComment.java

@@ -0,0 +1,33 @@
+package com.jeeplus.test.knowledge.domain;
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.jeeplus.core.domain.BaseEntity;
+import lombok.Data;
+
+@Data
+@TableName(value = "knowledge_share_comment")
+public class KnowledgeShareComment extends BaseEntity {
+
+    /**
+     * 知识分享详情id
+     */
+    private String detailId;
+
+    /**
+     * 评论人id
+     */
+    private String userId;
+
+    /**
+     * 内容
+     */
+    private String content;
+
+    /**
+     * 时间差
+     */
+    @TableField(exist = false)
+    private String deff;
+
+}

+ 26 - 0
jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/knowledge/domain/KnowledgeShareDetail.java

@@ -0,0 +1,26 @@
+package com.jeeplus.test.knowledge.domain;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.jeeplus.core.domain.BaseEntity;
+import lombok.Data;
+
+@Data
+@TableName(value = "knowledge_share_detail")
+public class KnowledgeShareDetail extends BaseEntity {
+
+    /**
+     * 知识分享类型id
+     */
+    private String typeId;
+
+    /**
+     * 主题
+     */
+    private String title;
+
+    /**
+     * 内容
+     */
+    private String detail;
+
+}

+ 26 - 0
jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/knowledge/domain/KnowledgeShareType.java

@@ -0,0 +1,26 @@
+package com.jeeplus.test.knowledge.domain;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.jeeplus.core.domain.BaseEntity;
+import lombok.Data;
+
+@Data
+@TableName("knowledge_share_type")
+public class KnowledgeShareType extends BaseEntity {
+
+    /**
+     * 分享类型key值
+     */
+    private String klgsKey;
+
+    /**
+     * 分享类型
+     */
+    private String klgsType;
+
+    /**
+     * 排序
+     */
+    private Integer klgsSort;
+
+}

+ 38 - 0
jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/knowledge/domain/KnowledgeShareVisit.java

@@ -0,0 +1,38 @@
+package com.jeeplus.test.knowledge.domain;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.jeeplus.core.domain.BaseEntity;
+import lombok.Data;
+
+import java.util.Date;
+
+@Data
+@TableName(value = "knowledge_share_visit")
+public class KnowledgeShareVisit extends BaseEntity {
+
+    /**
+     * 知识分享详情id
+     */
+    private String detailId;
+
+    /**
+     * 访问人id
+     */
+    private String userId;
+
+    /**
+     * 初次访问时间
+     */
+    private Date firstTime;
+
+    /**
+     * 最近访问时间
+     */
+    private Date lastTime;
+
+    /**
+     * 访问次数
+     */
+    private Integer num;
+
+}

+ 7 - 0
jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/knowledge/mapper/KnowledgeShareCommentMapper.java

@@ -0,0 +1,7 @@
+package com.jeeplus.test.knowledge.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.jeeplus.test.knowledge.domain.KnowledgeShareComment;
+
+public interface KnowledgeShareCommentMapper extends BaseMapper<KnowledgeShareComment> {
+}

+ 13 - 0
jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/knowledge/mapper/KnowledgeShareDetailMapper.java

@@ -0,0 +1,13 @@
+package com.jeeplus.test.knowledge.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.jeeplus.test.knowledge.domain.KnowledgeShareDetail;
+import com.jeeplus.test.knowledge.service.dto.KnowledgeShareListDto;
+
+public interface KnowledgeShareDetailMapper extends BaseMapper<KnowledgeShareDetail> {
+
+    IPage<KnowledgeShareListDto> findList(Page<KnowledgeShareListDto> page, KnowledgeShareDetail detail);
+
+}

+ 18 - 0
jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/knowledge/mapper/KnowledgeShareTypeMapper.java

@@ -0,0 +1,18 @@
+package com.jeeplus.test.knowledge.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.jeeplus.test.knowledge.domain.KnowledgeShareType;
+import com.jeeplus.test.knowledge.service.dto.KnowledgeShareTypeDto;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+
+public interface KnowledgeShareTypeMapper extends BaseMapper<KnowledgeShareType> {
+
+    IPage<KnowledgeShareTypeDto> findList(Page<KnowledgeShareTypeDto> page, @Param("type") String type);
+
+    List<KnowledgeShareType> checkList(@Param("type")String type, @Param("key")String key);
+
+}

+ 7 - 0
jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/knowledge/mapper/KnowledgeShareVisitMapper.java

@@ -0,0 +1,7 @@
+package com.jeeplus.test.knowledge.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.jeeplus.test.knowledge.domain.KnowledgeShareVisit;
+
+public interface KnowledgeShareVisitMapper extends BaseMapper<KnowledgeShareVisit> {
+}

+ 30 - 0
jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/knowledge/mapper/xml/KnowledgeShareDetailMapper.xml

@@ -0,0 +1,30 @@
+<?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.jeeplus.test.knowledge.mapper.KnowledgeShareDetailMapper">
+
+	<select id="findList" resultType="com.jeeplus.test.knowledge.service.dto.KnowledgeShareListDto">
+		SELECT
+			a.id,
+			b.`name` AS create_by,
+			a.create_date,
+			a.update_by,
+			a.update_date,
+			a.del_flag,
+			a.type_id,
+			a.title,
+			a.detail,
+			(SELECT count(0) FROM knowledge_share_visit b WHERE a.id = b.detail_id AND b.del_flag = 0) AS visit_num,
+			(SELECT count(0) FROM knowledge_share_comment c WHERE a.id = c.detail_id AND c.del_flag = 0) AS comment_num
+		FROM knowledge_share_detail a
+		LEFT JOIN sys_user b ON a.create_by = b.id
+		WHERE a.del_flag = 0
+		<if test="detail.title != null and detail.title != ''">
+			AND a.title LIKE CONCAT ('%', #{detail.title}, '%')
+		</if>
+		<if test="detail.createBy != null and detail.createBy != ''">
+			AND b.`name` = #{detail.createBy}
+		</if>
+		ORDER BY a.update_date DESC
+	</select>
+
+</mapper>

+ 46 - 0
jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/knowledge/mapper/xml/KnowledgeShareTypeMapper.xml

@@ -0,0 +1,46 @@
+<?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.jeeplus.test.knowledge.mapper.KnowledgeShareTypeMapper">
+
+	<select id="findList" resultType="com.jeeplus.test.knowledge.service.dto.KnowledgeShareTypeDto">
+		SELECT
+			a.id,
+			b.`name` AS create_by,
+			a.create_date,
+			a.update_by,
+			a.update_date,
+			a.del_flag,
+			a.klgs_key,
+			a.klgs_type,
+			a.klgs_sort
+		FROM
+			knowledge_share_type a
+			LEFT JOIN sys_user b ON a.create_by = b.id
+		WHERE
+			a.del_flag = 0
+			<if test="type != null and type != ''">
+				AND a.klgs_type LIKE CONCAT ('%', #{type}, '%')
+			</if>
+		ORDER BY
+			a.klgs_sort
+	</select>
+
+	<select id="checkList" resultType="com.jeeplus.test.knowledge.domain.KnowledgeShareType">
+		SELECT
+			id,
+			create_by,
+			create_date,
+			update_by,
+			update_date,
+			del_flag,
+			klgs_key,
+			klgs_type,
+			klgs_sort
+		FROM
+			knowledge_share_type
+		WHERE
+			del_flag =0
+			AND (klgs_key LIKE CONCAT ('%', #{key}, '%') OR klgs_type LIKE CONCAT ('%', #{type}, '%'))
+	</select>
+
+</mapper>

+ 245 - 0
jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/knowledge/service/KnowledgeShareInfoService.java

@@ -0,0 +1,245 @@
+package com.jeeplus.test.knowledge.service;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.jeeplus.core.domain.BaseEntity;
+import com.jeeplus.core.service.dto.BaseDTO;
+import com.jeeplus.sys.service.dto.UserDTO;
+import com.jeeplus.sys.utils.UserUtils;
+import com.jeeplus.test.knowledge.domain.KnowledgeShareComment;
+import com.jeeplus.test.knowledge.domain.KnowledgeShareDetail;
+import com.jeeplus.test.knowledge.domain.KnowledgeShareVisit;
+import com.jeeplus.test.knowledge.mapper.KnowledgeShareCommentMapper;
+import com.jeeplus.test.knowledge.mapper.KnowledgeShareDetailMapper;
+import com.jeeplus.test.knowledge.mapper.KnowledgeShareTypeMapper;
+import com.jeeplus.test.knowledge.mapper.KnowledgeShareVisitMapper;
+import com.jeeplus.test.knowledge.service.dto.KnowledgeShareInfoDto;
+import com.jeeplus.test.knowledge.service.dto.KnowledgeShareListDto;
+import com.jeeplus.test.oss.domain.WorkAttachment;
+import com.jeeplus.test.oss.mapper.OssServiceMapper;
+import com.jeeplus.test.workContract.mapper.WorkContractInfoMapper;
+import com.jeeplus.test.workContract.service.WorkContractService;
+import com.jeeplus.test.workContract.service.dto.WorkAttachmentDto;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.beans.BeanUtils;
+import org.springframework.stereotype.Service;
+
+import javax.annotation.Resource;
+import java.util.Date;
+import java.util.List;
+import java.util.UUID;
+
+@Service
+public class KnowledgeShareInfoService {
+
+    @Resource
+    private KnowledgeShareDetailMapper detailMapper;
+
+    @Resource
+    private KnowledgeShareVisitMapper visitMapper;
+
+    @Resource
+    private KnowledgeShareCommentMapper commentMapper;
+
+    @Resource
+    private KnowledgeShareTypeMapper typeMapper;
+
+    @Resource
+    private OssServiceMapper ossServiceMapper;
+
+    @Resource
+    private WorkContractInfoMapper workContractInfoMapper;
+
+    @Resource
+    private WorkContractService workContractService;
+
+    public IPage<KnowledgeShareListDto> list(Page<KnowledgeShareListDto> page, KnowledgeShareDetail detail) {
+        return detailMapper.findList(page, detail);
+    }
+
+    public String save(KnowledgeShareInfoDto dto) {
+        if (StringUtils.isNotEmpty(dto.getId())) {
+            return update(dto);
+        } else {
+            return add(dto);
+        }
+    }
+
+    public String add(KnowledgeShareInfoDto dto) {
+        // 获取当前登录人信息
+        UserDTO userDTO = UserUtils.getCurrentUserDTO();
+        // 生成id
+        String id = UUID.randomUUID().toString().replace("-", "");
+        // 保存知识分享详情信息
+        KnowledgeShareDetail detail = new KnowledgeShareDetail();
+        BeanUtils.copyProperties(dto, detail);
+        detail.setId(id);
+        detail.setCreateBy(userDTO.getId());
+        detail.setCreateDate(new Date());
+        detail.setUpdateBy(userDTO.getId());
+        detail.setUpdateDate(new Date());
+        detail.setDelFlag(0);
+        detailMapper.insert(detail);
+        // 保存附件信息
+        if (CollectionUtils.isNotEmpty(dto.getFiles())) {
+            workContractService.saveFilesNew(dto.getFiles(), userDTO, id, "knowledgeShare");
+        }
+        return "操作完成";
+    }
+
+    public String update(KnowledgeShareInfoDto dto) {
+        // 获取当前登录人信息
+        UserDTO userDTO = UserUtils.getCurrentUserDTO();
+        // 保存知识分享详情信息
+        KnowledgeShareDetail detail = new KnowledgeShareDetail();
+        BeanUtils.copyProperties(dto, detail);
+        detail.setUpdateBy(userDTO.getId());
+        detail.setUpdateDate(new Date());
+        detailMapper.updateById(detail);
+        // 保存附件信息
+        if (CollectionUtils.isNotEmpty(dto.getFiles())) {
+            workContractService.updateFiles(dto.getFiles(), userDTO, dto.getId());
+        }
+        return "操作完成";
+    }
+
+    public KnowledgeShareInfoDto findById(String id, String method) {
+        KnowledgeShareInfoDto dto = new KnowledgeShareInfoDto();
+        // 获取当前登录人信息
+        UserDTO userDTO = UserUtils.getCurrentUserDTO();
+        if ("view".equals(method)) {
+            // 保存访问信息
+            saveVisit(id, userDTO);
+        }
+        // 查询数据
+        KnowledgeShareDetail detail = detailMapper.selectById(id);
+        BeanUtils.copyProperties(detail, dto);
+        dto.setTypeName(typeMapper.selectById(detail.getTypeId()).getKlgsType());
+        // 查询访问记录
+        LambdaQueryWrapper<KnowledgeShareVisit> visitWrapper = new LambdaQueryWrapper<>();
+        visitWrapper.eq(KnowledgeShareVisit::getDetailId, id).eq(BaseEntity::getDelFlag, 0);
+        List<KnowledgeShareVisit> visits = visitMapper.selectList(visitWrapper);
+        if (CollectionUtils.isNotEmpty(visits)) {
+            visits.stream().forEach(i -> {
+                UserDTO visitUser = UserUtils.get(i.getUserId());
+                i.setUserId(visitUser.getName());
+            });
+        }
+        dto.setVisits(visits);
+        // 查询回复记录
+        LambdaQueryWrapper<KnowledgeShareComment> commentWrapper = new LambdaQueryWrapper<>();
+        commentWrapper.eq(KnowledgeShareComment::getDetailId, id).eq(BaseEntity::getDelFlag, 0).orderByDesc(BaseEntity::getCreateDate);
+        List<KnowledgeShareComment> comments = commentMapper.selectList(commentWrapper);
+        if (CollectionUtils.isNotEmpty(comments)) {
+            comments.stream().forEach(i -> {
+                UserDTO commentUser = UserUtils.get(i.getUserId());
+                i.setUserId(commentUser.getName());
+                i.setDeff(timeDef(i.getCreateDate()));
+            });
+        }
+        dto.setComments(comments);
+        // 查询附件信息
+        List<WorkAttachmentDto> dtos = workContractInfoMapper.findDtos(id);
+        if (org.flowable.editor.language.json.converter.util.CollectionUtils.isNotEmpty(dtos)) {
+            for (WorkAttachmentDto i : dtos) {
+                i.setCreateBy(UserUtils.get(i.getBy()));
+            }
+        }
+        dto.setFiles(dtos);
+        return dto;
+    }
+
+    public String removeById(String id) {
+        // 删除知识分享主表
+        detailMapper.deleteById(id);
+        // 删除知识分享浏览记录表
+        LambdaQueryWrapper<KnowledgeShareVisit> visitWrapper = new LambdaQueryWrapper<>();
+        visitWrapper.eq(KnowledgeShareVisit::getDetailId, id).eq(BaseEntity::getDelFlag, 0);
+        visitMapper.delete(visitWrapper);
+        // 删除知识分享评论表
+        LambdaQueryWrapper<KnowledgeShareComment> commentWrapper = new LambdaQueryWrapper<>();
+        commentWrapper.eq(KnowledgeShareComment::getDetailId, id).eq(BaseEntity::getDelFlag, 0);
+        commentMapper.delete(commentWrapper);
+        // 删除附件信息表
+        LambdaQueryWrapper<WorkAttachment> wrapper = new LambdaQueryWrapper<>();
+        wrapper.eq(WorkAttachment::getAttachmentId, id).eq(BaseDTO::getDelFlag, 0);
+        ossServiceMapper.delete(wrapper);
+        return "操作完成";
+    }
+
+    public String addComment(KnowledgeShareComment comment) {
+        // 获取当前登录人
+        UserDTO userDTO = UserUtils.getCurrentUserDTO();
+        // 生成id
+        String id = UUID.randomUUID().toString().replace("-", "");
+        comment.setId(id);
+        comment.setCreateBy(userDTO.getId());
+        comment.setCreateDate(new Date());
+        comment.setUpdateBy(userDTO.getId());
+        comment.setUpdateDate(new Date());
+        comment.setDelFlag(0);
+        comment.setUserId(userDTO.getId());
+        commentMapper.insert(comment);
+        return "操作完成";
+    }
+
+    public String delComment(String id) {
+        commentMapper.deleteById(id);
+        return "操作完成";
+    }
+
+    /**
+     * 保存访问记录
+     */
+    public Boolean saveVisit(String id, UserDTO userDTO) {
+        LambdaQueryWrapper<KnowledgeShareVisit> wrapper = new LambdaQueryWrapper<>();
+        wrapper.eq(BaseEntity::getDelFlag, 0).eq(KnowledgeShareVisit::getDetailId, id).eq(KnowledgeShareVisit::getUserId, userDTO.getId());
+        KnowledgeShareVisit visit = visitMapper.selectOne(wrapper);
+        if (visit != null) {
+            // 访问记录存在,则增加访问次数和更改最近访问时间
+            visit.setNum(visit.getNum() + 1);
+            visit.setLastTime(new Date());
+            visitMapper.updateById(visit);
+        } else {
+            // 访问记录不存在,则新增访问记录
+            visit = new KnowledgeShareVisit();
+            // 生成id
+            String visitId = UUID.randomUUID().toString().replace("-", "");
+            visit.setId(visitId);
+            visit.setCreateBy(userDTO.getId());
+            visit.setCreateDate(new Date());
+            visit.setUpdateBy(userDTO.getId());
+            visit.setUpdateDate(new Date());
+            visit.setDelFlag(0);
+            visit.setDetailId(id);
+            visit.setUserId(userDTO.getId());
+            visit.setFirstTime(new Date());
+            visit.setLastTime(new Date());
+            visit.setNum(1);
+            visitMapper.insert(visit);
+        }
+        return true;
+    }
+
+    /**
+     * 计算时间差
+     */
+    public String timeDef(Date time) {
+        Long def = new Date().getTime() - time.getTime();
+        // 计算天数
+        long day = def / (1000 * 60 * 60 * 24);
+        if (day != 0) {
+            return day + "天前";
+        }
+        // 计算小时
+        long house = def / (1000 * 60 * 60);
+        if (house != 0) {
+            return house + "小时前";
+        }
+        // 计算分钟
+        long min = def / (1000 * 60);
+        return min + "分钟前";
+    }
+}

+ 67 - 0
jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/knowledge/service/TypeService.java

@@ -0,0 +1,67 @@
+package com.jeeplus.test.knowledge.service;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.jeeplus.core.domain.BaseEntity;
+import com.jeeplus.sys.service.dto.UserDTO;
+import com.jeeplus.sys.utils.UserUtils;
+import com.jeeplus.test.knowledge.domain.KnowledgeShareType;
+import com.jeeplus.test.knowledge.mapper.KnowledgeShareTypeMapper;
+import com.jeeplus.test.knowledge.service.dto.KnowledgeShareTypeDto;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.stereotype.Service;
+
+import javax.annotation.Resource;
+import java.util.Date;
+import java.util.List;
+import java.util.UUID;
+
+@Service
+public class TypeService {
+
+    @Resource
+    private KnowledgeShareTypeMapper mapper;
+
+    public IPage<KnowledgeShareTypeDto> list(Page<KnowledgeShareTypeDto> page, KnowledgeShareType type) {
+        return mapper.findList(page, type.getKlgsType());
+    }
+
+    public String save(KnowledgeShareType type) {
+        List<KnowledgeShareType> list = mapper.checkList(type.getKlgsType(), type.getKlgsKey());
+        if (CollectionUtils.isNotEmpty(list)) {
+            return "已存在同名类型,请重新输入";
+        }
+        if (StringUtils.isNotEmpty(type.getId())) {
+            return update(type);
+        } else {
+            return add(type);
+        }
+    }
+
+    public String update(KnowledgeShareType type) {
+        // 获取当前登录人
+        UserDTO userDTO = UserUtils.getCurrentUserDTO();
+        type.setUpdateBy(userDTO.getId());
+        type.setUpdateDate(new Date());
+        mapper.updateById(type);
+        return "操作完成";
+    }
+
+    public String add(KnowledgeShareType type) {
+        // 获取当前登录人
+        UserDTO userDTO = UserUtils.getCurrentUserDTO();
+        // 生成id
+        String id = UUID.randomUUID().toString().replace("-", "");
+        type.setId(id);
+        type.setCreateBy(userDTO.getId());
+        type.setCreateDate(new Date());
+        type.setUpdateBy(userDTO.getId());
+        type.setUpdateDate(new Date());
+        type.setDelFlag(0);
+        mapper.insert(type);
+        return "操作完成";
+    }
+
+}

+ 82 - 0
jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/knowledge/service/dto/KnowledgeShareInfoDto.java

@@ -0,0 +1,82 @@
+package com.jeeplus.test.knowledge.service.dto;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.jeeplus.test.knowledge.domain.KnowledgeShareComment;
+import com.jeeplus.test.knowledge.domain.KnowledgeShareVisit;
+import com.jeeplus.test.oss.domain.WorkAttachment;
+import com.jeeplus.test.workContract.service.dto.WorkAttachmentDto;
+import lombok.Data;
+
+import java.util.Date;
+import java.util.List;
+
+@Data
+public class KnowledgeShareInfoDto {
+
+    /**
+     * 主键
+     */
+    private String id;
+
+    /**
+     * 创建人
+     */
+    private String createBy;
+
+    /**
+     * 创建时间
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    private Date createDate;
+
+    /**
+     * 更新人
+     */
+    private String updateBy;
+
+    /**
+     * 更新时间
+     */
+    private Date updateDate;
+
+    /**
+     * 删除状态
+     */
+    private Integer delFlag;
+
+    /**
+     * 知识分享类型id
+     */
+    private String typeId;
+
+    /**
+     * 知识分享类型名称
+     */
+    private String typeName;
+
+    /**
+     * 主题
+     */
+    private String title;
+
+    /**
+     * 内容
+     */
+    private String detail;
+
+    /**
+     * 访问记录
+     */
+    private List<KnowledgeShareVisit> visits;
+
+    /**
+     * 评论记录
+     */
+    private List<KnowledgeShareComment> comments;
+
+    /**
+     * 附件列表
+     */
+    private List<WorkAttachmentDto> files;
+
+}

+ 67 - 0
jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/knowledge/service/dto/KnowledgeShareListDto.java

@@ -0,0 +1,67 @@
+package com.jeeplus.test.knowledge.service.dto;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.Data;
+
+import java.util.Date;
+
+@Data
+public class KnowledgeShareListDto {
+
+    /**
+     * 主键
+     */
+    private String id;
+
+    /**
+     * 创建人
+     */
+    private String createBy;
+
+    /**
+     * 创建时间
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:dd")
+    private Date createDate;
+
+    /**
+     * 更新人
+     */
+    private String updateBy;
+
+    /**
+     * 更新时间
+     */
+    private Date updateDate;
+
+    /**
+     * 删除状态
+     */
+    private Integer delFlag;
+
+    /**
+     * 知识分享类型id
+     */
+    private String typeId;
+
+    /**
+     * 主题
+     */
+    private String title;
+
+    /**
+     * 内容
+     */
+    private String detail;
+
+    /**
+     * 阅读量
+     */
+    private Integer visitNum;
+
+    /**
+     * 回复量
+     */
+    private Integer commentNum;
+
+}

+ 57 - 0
jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/knowledge/service/dto/KnowledgeShareTypeDto.java

@@ -0,0 +1,57 @@
+package com.jeeplus.test.knowledge.service.dto;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.Data;
+
+import java.util.Date;
+
+@Data
+public class KnowledgeShareTypeDto {
+
+    /**
+     * 主键
+     */
+    private String id;
+
+    /**
+     * 创建人
+     */
+    private String createBy;
+
+    /**
+     * 创建时间
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    private Date createDate;
+
+    /**
+     * 更新人
+     */
+    private String updateBy;
+
+    /**
+     * 更新时间
+     */
+    private Date updateDate;
+
+    /**
+     * 删除状态
+     */
+    private Integer delFlag;
+
+    /**
+     * 分享类型key值
+     */
+    private String klgsKey;
+
+    /**
+     * 分享类型
+     */
+    private String klgsType;
+
+    /**
+     * 排序
+     */
+    private Integer klgsSort;
+
+}