Переглянути джерело

作者:张哲
时间:2023/02/15
类型:开发
描述:里程碑(2)知识专辑点评模块开发

ZizgZh 2 роки тому
батько
коміт
8adf725e5c

+ 1 - 1
src/main/java/com/redxun/knowledge/album/controller/AlbumYelpApproveController.java

@@ -21,7 +21,7 @@ import org.springframework.web.bind.annotation.RestController;
 @RestController
 @RequestMapping("/api-knowledge/album/yelp/approve")
 @Api(tags = "业务--专辑点评审批表")
-@ClassDefine(title = "业务--专辑点评审批表", alias = "AlbumYelpApproveController", path = "/album/album/albumYelpApprove", packages = "album", packageName = "子系统名称")
+@ClassDefine(title = "业务--专辑点评审批表", alias = "AlbumYelpApproveController", path = "/api-knowledge/album/yelp/approve", packages = "album", packageName = "子系统名称")
 public class AlbumYelpApproveController extends BaseController<AlbumYelpApprove> {
 
     @Autowired

+ 10 - 0
src/main/java/com/redxun/knowledge/album/controller/AlbumYelpController.java

@@ -4,6 +4,7 @@ import com.redxun.common.annotation.ClassDefine;
 import com.redxun.common.base.db.BaseService;
 import com.redxun.common.base.entity.JsonResult;
 import com.redxun.knowledge.album.entity.dao.AlbumYelp;
+import com.redxun.knowledge.album.entity.vo.AlbumYelpInfoVo;
 import com.redxun.knowledge.album.service.AlbumYelpServiceImpl;
 import com.redxun.web.controller.BaseController;
 import io.swagger.annotations.Api;
@@ -12,6 +13,7 @@ import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.GetMapping;
 import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestParam;
 import org.springframework.web.bind.annotation.RestController;
 
 @Slf4j
@@ -43,5 +45,13 @@ public class AlbumYelpController extends BaseController<AlbumYelp> {
         return jsonResult.setData(total);
     }
 
+    @ApiOperation("根据点评ID获取点评审核信息数据")
+    @GetMapping("info")
+    public JsonResult info(@RequestParam("pkId") String pkId){
+        JsonResult jsonResult = JsonResult.getSuccessResult("");
+        AlbumYelpInfoVo albumYelpInfo = albumYelpService.info(pkId);
+        return jsonResult.setData(albumYelpInfo);
+    }
+
 }
 

+ 51 - 0
src/main/java/com/redxun/knowledge/album/entity/enums/AlbumYelpEnum.java

@@ -0,0 +1,51 @@
+package com.redxun.knowledge.album.entity.enums;
+
+/**
+ * 文件名: AlbumEnum
+ * 作者: Zizg
+ * 时间: 2023/2/2
+ * 描述:
+ * 修改人:
+ * 修改时间:
+ * 修改内容:
+ */
+public enum AlbumYelpEnum {
+
+    APPROVE_PROGRESS(0,"审核中"),
+    APPROVE_SUCCESS(1,"审核通过"),
+    APPROVE_FAIL(2,"审核未通过");
+
+    private Integer code;
+    private String message;
+
+    AlbumYelpEnum(Integer code, String message) {
+        this.code = code;
+        this.message = message;
+    }
+
+    public Integer getCode() {
+        return code;
+    }
+
+    public void setCode(Integer code) {
+        this.code = code;
+    }
+
+    public String getMessage() {
+        return message;
+    }
+
+    public void setMessage(String message) {
+        this.message = message;
+    }
+
+    public static String getMessage(Integer code) {
+        AlbumYelpEnum[] albumInfoEnums = values();
+        for (AlbumYelpEnum albumInfoEnum : albumInfoEnums) {
+            if (albumInfoEnum.code.equals(code)) {
+                return albumInfoEnum.message;
+            }
+        }
+        return null;
+    }
+}

+ 70 - 0
src/main/java/com/redxun/knowledge/album/entity/vo/AlbumYelpInfoVo.java

@@ -0,0 +1,70 @@
+package com.redxun.knowledge.album.entity.vo;
+
+import com.alibaba.fastjson.annotation.JSONField;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.io.Serializable;
+import java.util.Date;
+import java.util.List;
+
+/**
+ * 文件名: AlbumYelpInfo
+ * 作者: Zizg
+ * 时间: 2023/2/16
+ * 描述:
+ * 修改人:
+ * 修改时间:
+ * 修改内容:
+ */
+@ApiModel("根据点评ID获取点评审核信息数据")
+@Data
+public class AlbumYelpInfoVo implements Serializable {
+
+    @ApiModelProperty("点评Id")
+    private String pkId;
+
+    @ApiModelProperty("创建人名称")
+    private String createName;
+
+    @ApiModelProperty("创建人头像")
+    private String createPhoto;
+
+    @ApiModelProperty("评论内容")
+    private String content;
+
+    @ApiModelProperty("评论时间")
+    @DateTimeFormat(
+            pattern = "yyyy-MM-dd HH:mm:ss"
+    )
+    @JSONField(
+            format = "yyyy-MM-dd HH:mm:ss"
+    )
+    @JsonFormat(
+            pattern = "yyyy-MM-dd HH:mm:ss",
+            timezone = "GMT+8"
+    )
+    private Date createTime;
+
+    @ApiModelProperty("审核状态 0-审核中  1-审核通过  2-审核未通过")
+    private Integer state;
+
+    @ApiModelProperty("审核状态名称")
+    private String stateName;
+
+    @ApiModelProperty("动作标记")
+    private List<String> actionFlag;
+
+    @ApiModelProperty("点评内容 如果审核的是评论,则返回对应的点评内容")
+    private AlbumYelpInfoVo albumYelpInfoVo;
+
+    @ApiModelProperty("专辑基础信息")
+    private AlbumInfoDetailVo albumInfoDetailVo;
+
+    @ApiModelProperty("审批流程")
+    private List<AlbumApproveVo> flows;
+
+}

+ 60 - 0
src/main/java/com/redxun/knowledge/album/entity/vo/AlbumYelpListPcVo.java

@@ -0,0 +1,60 @@
+package com.redxun.knowledge.album.entity.vo;
+
+import com.alibaba.fastjson.annotation.JSONField;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.io.Serializable;
+import java.util.Date;
+import java.util.List;
+
+/**
+ * 文件名: AlbumYelpInfoPcVo
+ * 作者: Zizg
+ * 时间: 2023/2/15
+ * 描述:
+ * 修改人:
+ * 修改时间:
+ * 修改内容:
+ */
+@ApiModel("PC点评信息列表Vo")
+@Data
+public class AlbumYelpListPcVo implements Serializable {
+
+    @ApiModelProperty("点评Id")
+    private String pkId;
+
+    @ApiModelProperty("点评状态")
+    private Integer state;
+
+    @ApiModelProperty("创建人名称")
+    private String createName;
+
+    @ApiModelProperty("创建人头像")
+    private String createPhoto;
+
+    @ApiModelProperty("评论内容")
+    private String content;
+
+    @ApiModelProperty("评论时间")
+    @DateTimeFormat(
+            pattern = "yyyy-MM-dd HH:mm:ss"
+    )
+    @JSONField(
+            format = "yyyy-MM-dd HH:mm:ss"
+    )
+    @JsonFormat(
+            pattern = "yyyy-MM-dd HH:mm:ss",
+            timezone = "GMT+8"
+    )
+    private Date createTime;
+
+    @ApiModelProperty("回复数量")
+    private Integer replyCount;
+
+    @ApiModelProperty("回复内容")
+    private List<AlbumYelpListPcVo> replies;
+}

+ 13 - 0
src/main/java/com/redxun/knowledge/album/mapper/AlbumYelpMapper.java

@@ -1,8 +1,12 @@
 package com.redxun.knowledge.album.mapper;
 
+import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.redxun.common.base.db.BaseDao;
 import com.redxun.knowledge.album.entity.dao.AlbumYelp;
 import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.Map;
 
 /**
 * 业务--专辑点评表数据库访问层
@@ -16,4 +20,13 @@ public interface AlbumYelpMapper extends BaseDao<AlbumYelp> {
      * @param ids
      */
     void deleteByAlbumId(String ids);
+
+    /**
+     * PC端分页查询一级点评信息(最多返回两条回复)
+     * @param page
+     * @param params
+     * @param order
+     * @return
+     */
+    IPage findAllYelpInfo(IPage page, @Param("params") Map<String, Object> params,@Param("w") Map<String, Object> order);
 }

+ 147 - 0
src/main/java/com/redxun/knowledge/album/service/AlbumYelpServiceImpl.java

@@ -1,15 +1,27 @@
 package com.redxun.knowledge.album.service;
 
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.redxun.common.base.db.BaseDao;
 import com.redxun.common.base.db.BaseService;
+import com.redxun.common.base.db.PageHelper;
 import com.redxun.common.base.search.QueryFilter;
 import com.redxun.common.service.impl.SuperServiceImpl;
 import com.redxun.common.tool.IdGenerator;
 import com.redxun.knowledge.album.entity.consts.AlbumConst;
 import com.redxun.knowledge.album.entity.dao.*;
 import com.redxun.knowledge.album.entity.dto.YelpDto;
+import com.redxun.knowledge.album.entity.enums.AlbumInfoEnum;
+import com.redxun.knowledge.album.entity.enums.AlbumVersionEnum;
+import com.redxun.knowledge.album.entity.enums.AlbumYelpEnum;
+import com.redxun.knowledge.album.entity.vo.AlbumApproveVo;
+import com.redxun.knowledge.album.entity.vo.AlbumInfoDetailVo;
+import com.redxun.knowledge.album.entity.vo.AlbumYelpInfoVo;
+import com.redxun.knowledge.album.entity.vo.AlbumYelpListPcVo;
+import com.redxun.knowledge.album.mapper.AlbumCategoryMapper;
+import com.redxun.knowledge.album.mapper.AlbumInfoMapper;
+import com.redxun.knowledge.album.mapper.AlbumVersionMapper;
 import com.redxun.knowledge.album.mapper.AlbumYelpMapper;
 import com.redxun.knowledge.common.UserService;
 import org.springframework.beans.BeanUtils;
@@ -18,6 +30,7 @@ import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
 import javax.annotation.Resource;
+import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
@@ -33,6 +46,15 @@ public class AlbumYelpServiceImpl extends SuperServiceImpl<AlbumYelpMapper, Albu
     @Resource
     private AlbumYelpMapper albumYelpMapper;
 
+    @Autowired
+    private AlbumInfoMapper albumInfoMapper;
+
+    @Autowired
+    private AlbumCategoryMapper albumCategoryMapper;
+
+    @Autowired
+    private AlbumVersionMapper albumVersionMapper;
+
     @Autowired
     private AlbumYelpApprovalNodeServiceImpl albumYelpApprovalNodeService;
 
@@ -47,6 +69,33 @@ public class AlbumYelpServiceImpl extends SuperServiceImpl<AlbumYelpMapper, Albu
         return albumYelpMapper;
     }
 
+
+    /**
+     * PC端分页查询一级点评信息(最多返回两条回复)
+     * @param queryFilter
+     * @return
+     */
+    @Override
+    public IPage query(QueryFilter queryFilter) {
+        Map<String, Object> params = PageHelper.constructParams(queryFilter);
+        queryFilter.getParams().put("createBy",userService.queryLoginUser());
+        IPage page = albumYelpMapper.findAllYelpInfo(queryFilter.getPage(), queryFilter.getParams(), params);
+        List<AlbumYelp> albumYelpList = page.getRecords();
+        List<AlbumYelpListPcVo> albumYelpListPcVoList = albumYelpList.parallelStream().map(albumYelp -> {
+            AlbumYelpListPcVo albumYelpListPcVo = new AlbumYelpListPcVo();
+            albumYelpListPcVo.setPkId(albumYelp.getPkId());
+            albumYelpListPcVo.setState(albumYelp.getState());
+            albumYelpListPcVo.setCreateName(userService.queryOsUserDto(albumYelp.getCreateBy()).getFullName());
+            albumYelpListPcVo.setCreatePhoto((String) userService.querySexAndPhoto(albumYelp.getCreateBy()).get("photo"));
+            albumYelpListPcVo.setContent(albumYelp.getContent());
+            albumYelpListPcVo.setCreateTime(albumYelp.getCreateTime());
+            // TODO: 2023/2/16  下级回复
+            return albumYelpListPcVo;
+        }).collect(Collectors.toList());
+        page.setRecords(albumYelpListPcVoList);
+        return page;
+    }
+
     /**
      * 根据专辑Id删除点评信息
      *
@@ -121,4 +170,102 @@ public class AlbumYelpServiceImpl extends SuperServiceImpl<AlbumYelpMapper, Albu
         long total = page.getTotal();
         return total;
     }
+
+    /**
+     * 根据点评ID获取点评审核信息数据
+     * @param pkId
+     * @return
+     */
+    public AlbumYelpInfoVo info(String pkId) {
+        AlbumYelpInfoVo albumYelpInfoVo = new AlbumYelpInfoVo();
+        //点评基础信息及上级评论信息
+        AlbumYelp albumYelp = albumYelpMapper.selectById(pkId);
+        albumYelpInfoVo.setPkId(albumYelp.getPkId());
+        albumYelpInfoVo.setCreateName(userService.queryOsUserDto(albumYelp.getCreateBy()).getFullName());
+        albumYelpInfoVo.setCreatePhoto((String) userService.querySexAndPhoto(albumYelp.getCreateBy()).get("photo"));
+        albumYelpInfoVo.setContent(albumYelp.getContent());
+        albumYelpInfoVo.setCreateTime(albumYelp.getCreateTime());
+        albumYelpInfoVo.setState(albumYelp.getState());
+        albumYelpInfoVo.setStateName(AlbumYelpEnum.getMessage(albumYelp.getState()));
+        List<String> actionFlag = new ArrayList<>();
+        if (albumYelp.getState() == 0){
+            actionFlag.add("approve");
+        } else {
+            actionFlag.add("view");
+        }
+        albumYelpInfoVo.setActionFlag(actionFlag);
+        //上级点评
+        if (albumYelp.getYelpId() != null){
+            AlbumYelp albumYelpParent = albumYelpMapper.selectById(albumYelp.getYelpId());
+            AlbumYelpInfoVo albumYelpInfoVoParent = new AlbumYelpInfoVo();
+            albumYelpInfoVoParent.setCreateName(userService.queryOsUserDto(albumYelpParent.getCreateBy()).getFullName());
+            albumYelpInfoVo.setCreatePhoto((String) userService.querySexAndPhoto(albumYelpParent.getCreateBy()).get("photo"));
+            albumYelpInfoVo.setContent(albumYelpParent.getContent());
+            albumYelpInfoVo.setCreateTime(albumYelpParent.getCreateTime());
+            albumYelpInfoVo.setAlbumYelpInfoVo(albumYelpInfoVoParent);
+        }
+        //专辑信息
+        AlbumInfoDetailVo albumInfoDetailVo = new AlbumInfoDetailVo();
+        AlbumInfo albumInfo = albumInfoMapper.selectById(albumYelp.getAlbumId());
+        BeanUtils.copyProperties(albumInfo, albumInfoDetailVo);
+        //专辑负责人姓名
+        albumInfoDetailVo.setOwner(userService.queryOsUserDto(albumInfo.getOwnerId()).getFullName());
+        //所属公司名称
+        albumInfoDetailVo.setOwnerCompany(userService.findDeptByDeptId(albumInfo.getOwnerCompanyId()).getName());
+        //所属部门名称
+        albumInfoDetailVo.setOwnerDepartment(userService.findDeptByDeptId(albumInfo.getOwnerDepartmentId()).getName());
+        //分类名称
+        AlbumCategory albumCategory = albumCategoryMapper.selectById(albumInfo.getCategoryId());
+        if (albumCategory.getGrade() == 1) {
+            albumInfoDetailVo.setCategoryName(albumCategory.getName());
+        } else {
+            AlbumCategory albumCategoryParent = albumCategoryMapper.
+                    selectOne(new LambdaQueryWrapper<AlbumCategory>().eq(AlbumCategory::getPkId, albumCategory.getParent()));
+            albumInfoDetailVo.setCategoryName(albumCategoryParent.getName() + "|" + albumCategory.getName());
+        }
+        //专辑状态名称
+        albumInfoDetailVo.setStateName(AlbumInfoEnum.getMessage(albumInfo.getState()));
+        //版本状态名称
+        QueryWrapper<AlbumVersion> queryWrapper = new QueryWrapper<>();
+        queryWrapper.eq("ALBUM_ID", pkId);
+        queryWrapper.orderByDesc("CREATE_TIME_");
+        List<AlbumVersion> albumVersions = albumVersionMapper.selectList(queryWrapper);
+        //最新版本状态
+        albumInfoDetailVo.setVersionState(albumVersions.get(0).getState());
+        albumInfoDetailVo.setVersionStateName(AlbumVersionEnum.getMessage(albumVersions.get(0).getState()));
+        //专辑点评量(当前专辑中通过审核的点评量总和)
+        Integer countYelp = albumYelpMapper.selectCount(new LambdaQueryWrapper<AlbumYelp>().
+                eq(AlbumYelp::getAlbumId, pkId).
+                eq(AlbumYelp::getState, 1));
+        albumInfoDetailVo.setYelpTotal(countYelp);
+        albumYelpInfoVo.setAlbumInfoDetailVo(albumInfoDetailVo);
+        //审核流程
+        QueryWrapper<AlbumYelpApprove> queryWrapperApprove = new QueryWrapper<>();
+        queryWrapper.eq("YELP_ID", pkId);
+        queryWrapper.orderByAsc("SORT");
+        List<AlbumYelpApprove> albumApproveList = albumYelpApproveService.findAll(queryWrapperApprove);
+        List<AlbumApproveVo> albumApproveVoList = new ArrayList<>();
+        boolean flag = true;
+        for (int i = 0; i < albumApproveList.size(); i++) {
+            AlbumApproveVo albumApproveVo = new AlbumApproveVo();
+            BeanUtils.copyProperties(albumApproveList.get(i), albumApproveVo);
+            albumApproveVo.setComment(albumApproveList.get(i).getRemark());
+            if (albumApproveList.get(i).getResult() == null) {
+                if (flag) {
+                    albumApproveVo.setApprovalStatus("提交审核");
+                    flag = false;
+                } else {
+                    albumApproveVo.setApprovalStatus("");
+                }
+            } else if (albumApproveList.get(i).getResult() == 0) {
+                albumApproveVo.setApprovalStatus("审核驳回");
+                flag = false;
+            } else if (albumApproveList.get(i).getResult() == 1) {
+                albumApproveVo.setApprovalStatus("审核通过");
+            }
+            albumApproveVoList.add(albumApproveVo);
+        }
+        albumYelpInfoVo.setFlows(albumApproveVoList);
+        return albumYelpInfoVo;
+    }
 }

+ 15 - 0
src/main/resources/mapper/knowledge/album/AlbumYelpMapper.xml

@@ -20,6 +20,11 @@
                 <result property="approvalState" column="APPROVAL_STATE" jdbcType="INTEGER"/>
     </resultMap>
 
+    <sql id="COLUMNS">
+        PK_ID,ALBUM_ID,TYPE,CONTENT,YELP_ID,STATE,IS_DEL,COMPANY_ID_,CREATE_DEP_ID_,TENANT_ID_,CREATE_BY_,CREATE_TIME_,
+        UPDATE_BY_,UPDATE_TIME_,APPROVAL_STATE
+    </sql>
+
 
     <select id="query" resultType="com.redxun.knowledge.album.entity.dao.AlbumYelp" parameterType="java.util.Map">
         select PK_ID,ALBUM_ID,TYPE,CONTENT,YELP_ID,STATE,IS_DEL,COMPANY_ID_,CREATE_DEP_ID_,TENANT_ID_,CREATE_BY_,CREATE_TIME_,
@@ -43,6 +48,16 @@
         where ALBUM_ID = #{albumId}
     </delete>
 
+    <select id="findAllYelpInfo" resultType="com.redxun.knowledge.album.entity.dao.AlbumYelp">
+        select
+        <include refid="COLUMNS"/>
+        from KM_ALBUM_YELP
+        <where>
+            (STATE = 1 or CREATE_BY_ = #{params.createBy}) and TYPE = 1 and IS_DEL = 0
+        </where>
+        order by CREATE_TIME_
+    </select>
+
 
 </mapper>