Merge branch 'dev-评论' of http://47.97.8.94:19527/yj/zn-cloud into aiKai
# Conflicts: # yudao-module-system/yudao-module-system-api/src/main/java/cn/iocoder/yudao/module/system/enums/ErrorCodeConstants.java # yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/worklog/LogInstanceServiceImpl.java
This commit is contained in:
commit
2dbe7c387e
@ -171,6 +171,11 @@ public interface ErrorCodeConstants {
|
|||||||
// ========== 站内信发送 1-002-028-000 ==========
|
// ========== 站内信发送 1-002-028-000 ==========
|
||||||
ErrorCode NOTIFY_SEND_TEMPLATE_PARAM_MISS = new ErrorCode(1_002_028_000, "模板参数({})缺失");
|
ErrorCode NOTIFY_SEND_TEMPLATE_PARAM_MISS = new ErrorCode(1_002_028_000, "模板参数({})缺失");
|
||||||
|
|
||||||
|
ErrorCode FORM_NOT_EXISTS = new ErrorCode(1_009_010_000, "动态表单不存在");
|
||||||
|
ErrorCode FORM_FIELD_REPEAT = new ErrorCode(1_009_010_001, "表单项({}) 和 ({}) 使用了相同的字段名({})");
|
||||||
|
ErrorCode LOG_INSTANCE_NOT_EXISTS = new ErrorCode(1_009_010_002, "日志实例的拓展不存在");
|
||||||
|
|
||||||
|
ErrorCode LOG_RULE_NOT_EXISTS = new ErrorCode(1_009_010_003, "日志规则不存在");
|
||||||
// ========== 站内信发送 1-003-001-000 ==========
|
// ========== 站内信发送 1-003-001-000 ==========
|
||||||
ErrorCode SCHEDULING_NOT_EXISTS = new ErrorCode(1_003_001_000, "排班制考勤设置不存在");
|
ErrorCode SCHEDULING_NOT_EXISTS = new ErrorCode(1_003_001_000, "排班制考勤设置不存在");
|
||||||
ErrorCode PUNCH_RECORD_NOT_EXISTS = new ErrorCode(1_003_002_000, "用户打卡记录不存在");
|
ErrorCode PUNCH_RECORD_NOT_EXISTS = new ErrorCode(1_003_002_000, "用户打卡记录不存在");
|
||||||
@ -178,11 +183,6 @@ public interface ErrorCodeConstants {
|
|||||||
ErrorCode GROUP_SHIFT_NOT_EXISTS = new ErrorCode(1_003_004_000, "考勤组班次不存在");
|
ErrorCode GROUP_SHIFT_NOT_EXISTS = new ErrorCode(1_003_004_000, "考勤组班次不存在");
|
||||||
ErrorCode GROUP_NOT_EXISTS = new ErrorCode(1_003_005_000, "考勤组不存在");
|
ErrorCode GROUP_NOT_EXISTS = new ErrorCode(1_003_005_000, "考勤组不存在");
|
||||||
ErrorCode FIXED_NOT_EXISTS = new ErrorCode(1_003_006_000, "固定班制考勤设置");
|
ErrorCode FIXED_NOT_EXISTS = new ErrorCode(1_003_006_000, "固定班制考勤设置");
|
||||||
ErrorCode FORM_NOT_EXISTS = new ErrorCode(1_009_010_000, "动态表单不存在");
|
|
||||||
ErrorCode FORM_FIELD_REPEAT = new ErrorCode(1_009_010_001, "表单项({}) 和 ({}) 使用了相同的字段名({})");
|
|
||||||
ErrorCode LOG_INSTANCE_NOT_EXISTS = new ErrorCode(1_009_010_002, "日志实例的拓展不存在");
|
|
||||||
|
|
||||||
ErrorCode LOG_RULE_NOT_EXISTS = new ErrorCode(1_009_010_003, "日志规则不存在");
|
|
||||||
|
|
||||||
ErrorCode LOG_RULE_NOT_FIND = new ErrorCode(1_009_010_004, "该模板没配置规则");
|
ErrorCode LOG_RULE_NOT_FIND = new ErrorCode(1_009_010_004, "该模板没配置规则");
|
||||||
|
|
||||||
|
@ -0,0 +1,50 @@
|
|||||||
|
package cn.iocoder.yudao.module.system.controller.app.comment;
|
||||||
|
|
||||||
|
import cn.iocoder.yudao.framework.common.pojo.CommonResult;
|
||||||
|
import cn.iocoder.yudao.module.system.controller.app.comment.dto.CommentDTO;
|
||||||
|
import cn.iocoder.yudao.module.system.controller.app.comment.vo.CommentPageListVO;
|
||||||
|
import cn.iocoder.yudao.module.system.controller.app.comment.vo.CommentTypeCountVO;
|
||||||
|
import cn.iocoder.yudao.module.system.controller.app.comment.vo.WorkLogCommentSaveReqVO;
|
||||||
|
import cn.iocoder.yudao.module.system.service.comment.WorkLogCommentService;
|
||||||
|
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||||
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||||
|
import io.swagger.v3.oas.annotations.Operation;
|
||||||
|
import io.swagger.v3.oas.annotations.tags.Tag;
|
||||||
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
import org.springframework.validation.annotation.Validated;
|
||||||
|
import org.springframework.web.bind.annotation.*;
|
||||||
|
|
||||||
|
import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
|
||||||
|
|
||||||
|
@Tag(name = "管理后台 - 工作日志评论")
|
||||||
|
@RestController
|
||||||
|
@RequestMapping("/system/work-log-comment")
|
||||||
|
@Validated
|
||||||
|
public class WorkLogCommentController {
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private WorkLogCommentService workLogCommentService;
|
||||||
|
|
||||||
|
@Operation(summary = "用户工作日志评论-分页查询评论列表")
|
||||||
|
@GetMapping(value = "/queryCommentPageList")
|
||||||
|
public CommonResult<IPage<CommentPageListVO>> queryCommentPageList(CommentDTO dto,
|
||||||
|
@RequestParam(name = "pageNo", defaultValue = "1") Integer pageNo,
|
||||||
|
@RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize) {
|
||||||
|
Page<CommentPageListVO> page = new Page<>(pageNo, pageSize);
|
||||||
|
IPage<CommentPageListVO> pageList = workLogCommentService.queryCommentPageList(page, dto);
|
||||||
|
return success(pageList);
|
||||||
|
}
|
||||||
|
|
||||||
|
@PostMapping("/create")
|
||||||
|
@Operation(summary = "创建工作日志评论")
|
||||||
|
public CommonResult<Long> createWorkLogComment(@RequestBody WorkLogCommentSaveReqVO createReqVO) {
|
||||||
|
return success(workLogCommentService.createWorkLogComment(createReqVO));
|
||||||
|
}
|
||||||
|
|
||||||
|
@GetMapping("/queryCommentTypeCount")
|
||||||
|
@Operation(summary = "获取评论类型数量")
|
||||||
|
public CommonResult<CommentTypeCountVO> queryCommentTypeCount() {
|
||||||
|
return success(workLogCommentService.queryCommentTypeCount());
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,23 @@
|
|||||||
|
package cn.iocoder.yudao.module.system.controller.app.comment.dto;
|
||||||
|
|
||||||
|
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
|
||||||
|
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
|
||||||
|
import io.swagger.v3.oas.annotations.media.Schema;
|
||||||
|
import lombok.Data;
|
||||||
|
|
||||||
|
@Data
|
||||||
|
public class CommentDTO {
|
||||||
|
@Schema(description = "工作日志id")
|
||||||
|
@JsonSerialize(using = ToStringSerializer.class)
|
||||||
|
private Long workLogId;
|
||||||
|
@Schema(description = "评论类型(0|评论;1|回评")
|
||||||
|
private Integer type;
|
||||||
|
@Schema(description = "是否需要显示日志内容 0否 1是 默认否")
|
||||||
|
private Integer isShowWorkLogContent;
|
||||||
|
|
||||||
|
@Schema(description = "是否查看自己的评论记录 0否 1是")
|
||||||
|
private Integer checkMyselfFlag;
|
||||||
|
|
||||||
|
@Schema(description = "用户id")
|
||||||
|
private Long userId;
|
||||||
|
}
|
@ -0,0 +1,53 @@
|
|||||||
|
package cn.iocoder.yudao.module.system.controller.app.comment.vo;
|
||||||
|
|
||||||
|
import com.fasterxml.jackson.annotation.JsonFormat;
|
||||||
|
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
|
||||||
|
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
|
||||||
|
import io.swagger.v3.oas.annotations.media.Schema;
|
||||||
|
import lombok.Data;
|
||||||
|
import org.springframework.format.annotation.DateTimeFormat;
|
||||||
|
|
||||||
|
@Data
|
||||||
|
public class CommentPageListVO {
|
||||||
|
@JsonSerialize(using = ToStringSerializer.class)
|
||||||
|
@Schema(description = "id")
|
||||||
|
private Long id;
|
||||||
|
@Schema(description = "工作日志ID")
|
||||||
|
@JsonSerialize(using = ToStringSerializer.class)
|
||||||
|
private Long workLogId;
|
||||||
|
@Schema(description = "评论用户ID")
|
||||||
|
@JsonSerialize(using = ToStringSerializer.class)
|
||||||
|
private Long userId;
|
||||||
|
@Schema(description = "评论用户头像")
|
||||||
|
private String avatar;
|
||||||
|
@Schema(description = "评论用户名称")
|
||||||
|
private String userName;
|
||||||
|
|
||||||
|
@Schema(description = "被评论用户ID")
|
||||||
|
@JsonSerialize(using = ToStringSerializer.class)
|
||||||
|
private Long commentUserId;
|
||||||
|
@Schema(description = "被评论用户头像")
|
||||||
|
private String commentAvatar;
|
||||||
|
@Schema(description = "被评论用户名称")
|
||||||
|
private String commentUserName;
|
||||||
|
|
||||||
|
@Schema(description = "评论内容")
|
||||||
|
private String comment;
|
||||||
|
@Schema(description = "评论类型(0|评论;1|回评)")
|
||||||
|
private Integer type;
|
||||||
|
|
||||||
|
@Schema(description = "被回评内容")
|
||||||
|
private String replyComment;
|
||||||
|
|
||||||
|
@Schema(description = "工作日志内容(部分)")
|
||||||
|
private String workLogContent;
|
||||||
|
@Schema(description = "工作日志名称")
|
||||||
|
private String workLogName;
|
||||||
|
@Schema(description = "工作日志模版id")
|
||||||
|
private Long workFormId;
|
||||||
|
|
||||||
|
@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
|
||||||
|
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
|
||||||
|
@Schema(description = "创建日期")
|
||||||
|
private String createTime;
|
||||||
|
}
|
@ -0,0 +1,16 @@
|
|||||||
|
package cn.iocoder.yudao.module.system.controller.app.comment.vo;
|
||||||
|
|
||||||
|
import io.swagger.v3.oas.annotations.media.Schema;
|
||||||
|
import lombok.Data;
|
||||||
|
|
||||||
|
@Data
|
||||||
|
public class CommentTypeCountVO {
|
||||||
|
|
||||||
|
@Schema(description = "全部数量")
|
||||||
|
private Integer allNum;
|
||||||
|
@Schema(description = "评论数量")
|
||||||
|
private Integer commentNum;
|
||||||
|
@Schema(description = "回复数量")
|
||||||
|
private Integer replyNum;
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,43 @@
|
|||||||
|
package cn.iocoder.yudao.module.system.controller.app.comment.vo;
|
||||||
|
|
||||||
|
import lombok.*;
|
||||||
|
import java.util.*;
|
||||||
|
import io.swagger.v3.oas.annotations.media.Schema;
|
||||||
|
import cn.iocoder.yudao.framework.common.pojo.PageParam;
|
||||||
|
import org.springframework.format.annotation.DateTimeFormat;
|
||||||
|
import java.time.LocalDateTime;
|
||||||
|
|
||||||
|
import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
|
||||||
|
|
||||||
|
@Schema(description = "管理后台 - 工作日志评论分页 Request VO")
|
||||||
|
@Data
|
||||||
|
@EqualsAndHashCode(callSuper = true)
|
||||||
|
@ToString(callSuper = true)
|
||||||
|
public class WorkLogCommentPageReqVO extends PageParam {
|
||||||
|
|
||||||
|
@Schema(description = "动态ID", example = "26393")
|
||||||
|
private Long workLogId;
|
||||||
|
|
||||||
|
@Schema(description = "评论ID(回复评论的ID)", example = "25541")
|
||||||
|
private Long commentId;
|
||||||
|
|
||||||
|
@Schema(description = "评论用户ID", example = "17082")
|
||||||
|
private Long userId;
|
||||||
|
|
||||||
|
@Schema(description = "被评论用户ID", example = "22388")
|
||||||
|
private Long commentUserId;
|
||||||
|
|
||||||
|
@Schema(description = "评论内容")
|
||||||
|
private String comment;
|
||||||
|
|
||||||
|
@Schema(description = "评论类型(0|评论;1|回评)", example = "1")
|
||||||
|
private Boolean type;
|
||||||
|
|
||||||
|
@Schema(description = "楼栋标识")
|
||||||
|
private String buildingCode;
|
||||||
|
|
||||||
|
@Schema(description = "创建时间")
|
||||||
|
@DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
|
||||||
|
private LocalDateTime[] createTime;
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,52 @@
|
|||||||
|
package cn.iocoder.yudao.module.system.controller.app.comment.vo;
|
||||||
|
|
||||||
|
import io.swagger.v3.oas.annotations.media.Schema;
|
||||||
|
import lombok.*;
|
||||||
|
import java.util.*;
|
||||||
|
import java.util.*;
|
||||||
|
import org.springframework.format.annotation.DateTimeFormat;
|
||||||
|
import java.time.LocalDateTime;
|
||||||
|
import com.alibaba.excel.annotation.*;
|
||||||
|
|
||||||
|
@Schema(description = "管理后台 - 工作日志评论 Response VO")
|
||||||
|
@Data
|
||||||
|
@ExcelIgnoreUnannotated
|
||||||
|
public class WorkLogCommentRespVO {
|
||||||
|
|
||||||
|
@Schema(description = "id", requiredMode = Schema.RequiredMode.REQUIRED, example = "21304")
|
||||||
|
@ExcelProperty("id")
|
||||||
|
private Long id;
|
||||||
|
|
||||||
|
@Schema(description = "动态ID", example = "26393")
|
||||||
|
@ExcelProperty("动态ID")
|
||||||
|
private Long workLogId;
|
||||||
|
|
||||||
|
@Schema(description = "评论ID(回复评论的ID)", example = "25541")
|
||||||
|
@ExcelProperty("评论ID(回复评论的ID)")
|
||||||
|
private Long commentId;
|
||||||
|
|
||||||
|
@Schema(description = "评论用户ID", example = "17082")
|
||||||
|
@ExcelProperty("评论用户ID")
|
||||||
|
private Long userId;
|
||||||
|
|
||||||
|
@Schema(description = "被评论用户ID", example = "22388")
|
||||||
|
@ExcelProperty("被评论用户ID")
|
||||||
|
private Long commentUserId;
|
||||||
|
|
||||||
|
@Schema(description = "评论内容")
|
||||||
|
@ExcelProperty("评论内容")
|
||||||
|
private String comment;
|
||||||
|
|
||||||
|
@Schema(description = "评论类型(0|评论;1|回评)", example = "1")
|
||||||
|
@ExcelProperty("评论类型(0|评论;1|回评)")
|
||||||
|
private Boolean type;
|
||||||
|
|
||||||
|
@Schema(description = "楼栋标识")
|
||||||
|
@ExcelProperty("楼栋标识")
|
||||||
|
private String buildingCode;
|
||||||
|
|
||||||
|
@Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED)
|
||||||
|
@ExcelProperty("创建时间")
|
||||||
|
private LocalDateTime createTime;
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,28 @@
|
|||||||
|
package cn.iocoder.yudao.module.system.controller.app.comment.vo;
|
||||||
|
|
||||||
|
import io.swagger.v3.oas.annotations.media.Schema;
|
||||||
|
import lombok.*;
|
||||||
|
import java.util.*;
|
||||||
|
import javax.validation.constraints.*;
|
||||||
|
import java.util.*;
|
||||||
|
|
||||||
|
@Schema(description = "管理后台 - 工作日志评论新增/修改 Request VO")
|
||||||
|
@Data
|
||||||
|
public class WorkLogCommentSaveReqVO {
|
||||||
|
|
||||||
|
@Schema(description = "工作日志ID", example = "26393")
|
||||||
|
private Long workLogId;
|
||||||
|
|
||||||
|
@Schema(description = "评论ID(回复评论的ID)", example = "25541")
|
||||||
|
private Long commentId;
|
||||||
|
|
||||||
|
@Schema(description = "被评论用户ID", example = "22388")
|
||||||
|
private Long commentUserId;
|
||||||
|
|
||||||
|
@Schema(description = "评论内容")
|
||||||
|
private String comment;
|
||||||
|
|
||||||
|
@Schema(description = "评论类型(0|评论;1|回评)", example = "1")
|
||||||
|
private Boolean type;
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,59 @@
|
|||||||
|
package cn.iocoder.yudao.module.system.dal.dataobject.comment;
|
||||||
|
|
||||||
|
import lombok.*;
|
||||||
|
import java.util.*;
|
||||||
|
import java.time.LocalDateTime;
|
||||||
|
import java.time.LocalDateTime;
|
||||||
|
import com.baomidou.mybatisplus.annotation.*;
|
||||||
|
import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 工作日志评论 DO
|
||||||
|
*
|
||||||
|
* @author 艾楷
|
||||||
|
*/
|
||||||
|
@TableName("work_log_comment")
|
||||||
|
@KeySequence("work_log_comment_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。
|
||||||
|
@Data
|
||||||
|
@EqualsAndHashCode(callSuper = true)
|
||||||
|
@ToString(callSuper = true)
|
||||||
|
@Builder
|
||||||
|
@NoArgsConstructor
|
||||||
|
@AllArgsConstructor
|
||||||
|
public class WorkLogCommentDO extends BaseDO {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* id
|
||||||
|
*/
|
||||||
|
@TableId
|
||||||
|
private Long id;
|
||||||
|
/**
|
||||||
|
* 工作日志ID
|
||||||
|
*/
|
||||||
|
private Long workLogId;
|
||||||
|
/**
|
||||||
|
* 评论ID(回复评论的ID)
|
||||||
|
*/
|
||||||
|
private Long commentId;
|
||||||
|
/**
|
||||||
|
* 评论用户ID
|
||||||
|
*/
|
||||||
|
private Long userId;
|
||||||
|
/**
|
||||||
|
* 被评论用户ID
|
||||||
|
*/
|
||||||
|
private Long commentUserId;
|
||||||
|
/**
|
||||||
|
* 评论内容
|
||||||
|
*/
|
||||||
|
private String comment;
|
||||||
|
/**
|
||||||
|
* 评论类型(0|评论;1|回评)
|
||||||
|
*/
|
||||||
|
private Boolean type;
|
||||||
|
/**
|
||||||
|
* 楼栋标识
|
||||||
|
*/
|
||||||
|
private String buildingCode;
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,44 @@
|
|||||||
|
package cn.iocoder.yudao.module.system.dal.mysql.comment;
|
||||||
|
|
||||||
|
import java.util.*;
|
||||||
|
|
||||||
|
import cn.iocoder.yudao.framework.common.pojo.PageResult;
|
||||||
|
import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX;
|
||||||
|
import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
|
||||||
|
import cn.iocoder.yudao.module.system.controller.app.comment.dto.CommentDTO;
|
||||||
|
import cn.iocoder.yudao.module.system.dal.dataobject.comment.WorkLogCommentDO;
|
||||||
|
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||||
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||||
|
import org.apache.ibatis.annotations.Mapper;
|
||||||
|
import cn.iocoder.yudao.module.system.controller.app.comment.vo.*;
|
||||||
|
import org.apache.ibatis.annotations.Param;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 工作日志评论 Mapper
|
||||||
|
*
|
||||||
|
* @author 艾楷
|
||||||
|
*/
|
||||||
|
@Mapper
|
||||||
|
public interface WorkLogCommentMapper extends BaseMapperX<WorkLogCommentDO> {
|
||||||
|
|
||||||
|
default PageResult<WorkLogCommentDO> selectPage(WorkLogCommentPageReqVO reqVO) {
|
||||||
|
return selectPage(reqVO, new LambdaQueryWrapperX<WorkLogCommentDO>()
|
||||||
|
.eqIfPresent(WorkLogCommentDO::getWorkLogId, reqVO.getWorkLogId())
|
||||||
|
.eqIfPresent(WorkLogCommentDO::getCommentId, reqVO.getCommentId())
|
||||||
|
.eqIfPresent(WorkLogCommentDO::getUserId, reqVO.getUserId())
|
||||||
|
.eqIfPresent(WorkLogCommentDO::getCommentUserId, reqVO.getCommentUserId())
|
||||||
|
.eqIfPresent(WorkLogCommentDO::getComment, reqVO.getComment())
|
||||||
|
.eqIfPresent(WorkLogCommentDO::getType, reqVO.getType())
|
||||||
|
.eqIfPresent(WorkLogCommentDO::getBuildingCode, reqVO.getBuildingCode())
|
||||||
|
.betweenIfPresent(WorkLogCommentDO::getCreateTime, reqVO.getCreateTime())
|
||||||
|
.orderByDesc(WorkLogCommentDO::getId));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @param page
|
||||||
|
* @param dto
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
IPage<CommentPageListVO> queryCommentPageList(@Param("page") Page<CommentPageListVO> page, @Param("dto") CommentDTO dto);
|
||||||
|
}
|
@ -0,0 +1,73 @@
|
|||||||
|
package cn.iocoder.yudao.module.system.service.comment;
|
||||||
|
|
||||||
|
import cn.iocoder.yudao.framework.common.pojo.PageResult;
|
||||||
|
import cn.iocoder.yudao.module.system.controller.app.comment.dto.CommentDTO;
|
||||||
|
import cn.iocoder.yudao.module.system.controller.app.comment.vo.CommentPageListVO;
|
||||||
|
import cn.iocoder.yudao.module.system.controller.app.comment.vo.CommentTypeCountVO;
|
||||||
|
import cn.iocoder.yudao.module.system.controller.app.comment.vo.WorkLogCommentPageReqVO;
|
||||||
|
import cn.iocoder.yudao.module.system.controller.app.comment.vo.WorkLogCommentSaveReqVO;
|
||||||
|
import cn.iocoder.yudao.module.system.dal.dataobject.comment.WorkLogCommentDO;
|
||||||
|
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||||
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||||
|
|
||||||
|
import javax.validation.Valid;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 工作日志评论 Service 接口
|
||||||
|
*
|
||||||
|
* @author 艾楷
|
||||||
|
*/
|
||||||
|
public interface WorkLogCommentService {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 创建工作日志评论
|
||||||
|
*
|
||||||
|
* @param createReqVO 创建信息
|
||||||
|
* @return 编号
|
||||||
|
*/
|
||||||
|
Long createWorkLogComment(@Valid WorkLogCommentSaveReqVO createReqVO);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 更新工作日志评论
|
||||||
|
*
|
||||||
|
* @param updateReqVO 更新信息
|
||||||
|
*/
|
||||||
|
void updateWorkLogComment(@Valid WorkLogCommentSaveReqVO updateReqVO);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 删除工作日志评论
|
||||||
|
*
|
||||||
|
* @param id 编号
|
||||||
|
*/
|
||||||
|
void deleteWorkLogComment(Long id);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获得工作日志评论
|
||||||
|
*
|
||||||
|
* @param id 编号
|
||||||
|
* @return 工作日志评论
|
||||||
|
*/
|
||||||
|
WorkLogCommentDO getWorkLogComment(Long id);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获得工作日志评论分页
|
||||||
|
*
|
||||||
|
* @param pageReqVO 分页查询
|
||||||
|
* @return 工作日志评论分页
|
||||||
|
*/
|
||||||
|
PageResult<WorkLogCommentDO> getWorkLogCommentPage(WorkLogCommentPageReqVO pageReqVO);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param page
|
||||||
|
* @param dto
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
IPage<CommentPageListVO> queryCommentPageList(Page<CommentPageListVO> page, CommentDTO dto);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取评论类型数量
|
||||||
|
*
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
CommentTypeCountVO queryCommentTypeCount();
|
||||||
|
}
|
@ -0,0 +1,134 @@
|
|||||||
|
package cn.iocoder.yudao.module.system.service.comment;
|
||||||
|
|
||||||
|
import cn.hutool.core.util.StrUtil;
|
||||||
|
import cn.hutool.json.JSONObject;
|
||||||
|
import cn.iocoder.yudao.framework.common.pojo.PageResult;
|
||||||
|
import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
|
||||||
|
import cn.iocoder.yudao.framework.web.core.util.WebFrameworkUtils;
|
||||||
|
import cn.iocoder.yudao.module.system.controller.app.comment.dto.CommentDTO;
|
||||||
|
import cn.iocoder.yudao.module.system.controller.app.comment.vo.CommentPageListVO;
|
||||||
|
import cn.iocoder.yudao.module.system.controller.app.comment.vo.CommentTypeCountVO;
|
||||||
|
import cn.iocoder.yudao.module.system.controller.app.comment.vo.WorkLogCommentPageReqVO;
|
||||||
|
import cn.iocoder.yudao.module.system.controller.app.comment.vo.WorkLogCommentSaveReqVO;
|
||||||
|
import cn.iocoder.yudao.module.system.dal.dataobject.comment.WorkLogCommentDO;
|
||||||
|
import cn.iocoder.yudao.module.system.dal.dataobject.worklog.LogFormDO;
|
||||||
|
import cn.iocoder.yudao.module.system.dal.mysql.comment.WorkLogCommentMapper;
|
||||||
|
import cn.iocoder.yudao.module.system.service.worklog.LogFormService;
|
||||||
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||||
|
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||||
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||||
|
import org.springframework.stereotype.Service;
|
||||||
|
import org.springframework.validation.annotation.Validated;
|
||||||
|
|
||||||
|
import javax.annotation.Resource;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 工作日志评论 Service 实现类
|
||||||
|
*
|
||||||
|
* @author 艾楷
|
||||||
|
*/
|
||||||
|
@Service
|
||||||
|
@Validated
|
||||||
|
public class WorkLogCommentServiceImpl implements WorkLogCommentService {
|
||||||
|
|
||||||
|
@Resource
|
||||||
|
private WorkLogCommentMapper workLogCommentMapper;
|
||||||
|
@Resource
|
||||||
|
private LogFormService logFormService;
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Long createWorkLogComment(WorkLogCommentSaveReqVO createReqVO) {
|
||||||
|
// 插入
|
||||||
|
WorkLogCommentDO workLogComment = BeanUtils.toBean(createReqVO, WorkLogCommentDO.class);
|
||||||
|
Long userId = WebFrameworkUtils.getLoginUserId();
|
||||||
|
workLogComment.setUserId(userId);
|
||||||
|
workLogCommentMapper.insert(workLogComment);
|
||||||
|
// 返回
|
||||||
|
return workLogComment.getId();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void updateWorkLogComment(WorkLogCommentSaveReqVO updateReqVO) {
|
||||||
|
// 校验存在
|
||||||
|
// validateWorkLogCommentExists(updateReqVO.getId());
|
||||||
|
// 更新
|
||||||
|
WorkLogCommentDO updateObj = BeanUtils.toBean(updateReqVO, WorkLogCommentDO.class);
|
||||||
|
workLogCommentMapper.updateById(updateObj);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void deleteWorkLogComment(Long id) {
|
||||||
|
// 校验存在
|
||||||
|
// validateWorkLogCommentExists(id);
|
||||||
|
// 删除
|
||||||
|
workLogCommentMapper.deleteById(id);
|
||||||
|
}
|
||||||
|
|
||||||
|
// private void validateWorkLogCommentExists(Long id) {
|
||||||
|
// if (workLogCommentMapper.selectById(id) == null) {
|
||||||
|
// throw exception(WORK_LOG_COMMENT_NOT_EXISTS);
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public WorkLogCommentDO getWorkLogComment(Long id) {
|
||||||
|
return workLogCommentMapper.selectById(id);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public PageResult<WorkLogCommentDO> getWorkLogCommentPage(WorkLogCommentPageReqVO pageReqVO) {
|
||||||
|
return workLogCommentMapper.selectPage(pageReqVO);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public IPage<CommentPageListVO> queryCommentPageList(Page<CommentPageListVO> page, CommentDTO dto) {
|
||||||
|
if (dto.getCheckMyselfFlag() == 1) {
|
||||||
|
Long userId = WebFrameworkUtils.getLoginUserId();
|
||||||
|
dto.setUserId(userId);
|
||||||
|
}
|
||||||
|
IPage<CommentPageListVO> pageList = workLogCommentMapper.queryCommentPageList(page, dto);
|
||||||
|
List<CommentPageListVO> records = pageList.getRecords();
|
||||||
|
if (dto.getIsShowWorkLogContent() != null && dto.getIsShowWorkLogContent() == 1 && !records.isEmpty()) {
|
||||||
|
//模版ids过滤
|
||||||
|
List<Long> workFormIds = records.stream().map(CommentPageListVO::getWorkFormId).collect(Collectors.toList());
|
||||||
|
// 查询模版列表
|
||||||
|
List<LogFormDO> formList = logFormService.getFormList(workFormIds);
|
||||||
|
Map<Long, LogFormDO> formMap = formList.stream().collect(Collectors.toMap(LogFormDO::getId, item -> item));
|
||||||
|
pageList.getRecords().forEach(item -> {
|
||||||
|
LogFormDO logFormDO = formMap.get(item.getWorkFormId());
|
||||||
|
List<String> fields = logFormDO.getFields();
|
||||||
|
StringBuilder workLogContent = new StringBuilder();
|
||||||
|
if (StrUtil.isNotEmpty(item.getWorkLogContent())) {
|
||||||
|
JSONObject workLogContentJson = new JSONObject(item.getWorkLogContent());
|
||||||
|
for (String fieldItem : fields) {
|
||||||
|
JSONObject fieldJson = new JSONObject(fieldItem);
|
||||||
|
String fieldStr = fieldJson.getStr("field");
|
||||||
|
String title = fieldJson.getStr("title");
|
||||||
|
String field = workLogContentJson.getStr(fieldStr);
|
||||||
|
workLogContent.append(title).append(":").append(field);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
item.setWorkLogContent(workLogContent.toString());
|
||||||
|
});
|
||||||
|
}
|
||||||
|
return pageList;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public CommentTypeCountVO queryCommentTypeCount() {
|
||||||
|
Long userId = WebFrameworkUtils.getLoginUserId();
|
||||||
|
CommentTypeCountVO vo = new CommentTypeCountVO();
|
||||||
|
Integer commentNum = Math.toIntExact(workLogCommentMapper.selectCount(new LambdaQueryWrapper<WorkLogCommentDO>()
|
||||||
|
.eq(WorkLogCommentDO::getUserId, userId)));
|
||||||
|
Integer replyNum = Math.toIntExact(workLogCommentMapper.selectCount(new LambdaQueryWrapper<WorkLogCommentDO>()
|
||||||
|
.eq(WorkLogCommentDO::getCommentUserId, userId)));
|
||||||
|
vo.setCommentNum(commentNum);
|
||||||
|
vo.setReplyNum(replyNum);
|
||||||
|
vo.setAllNum(commentNum + replyNum);
|
||||||
|
return vo;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,52 @@
|
|||||||
|
<?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="cn.iocoder.yudao.module.system.dal.mysql.comment.WorkLogCommentMapper">
|
||||||
|
|
||||||
|
<!--
|
||||||
|
一般情况下,尽可能使用 Mapper 进行 CRUD 增删改查即可。
|
||||||
|
无法满足的场景,例如说多表关联查询,才使用 XML 编写 SQL。
|
||||||
|
代码生成器暂时只生成 Mapper XML 文件本身,更多推荐 MybatisX 快速开发插件来生成查询。
|
||||||
|
文档可见:https://www.iocoder.cn/MyBatis/x-plugins/
|
||||||
|
-->
|
||||||
|
|
||||||
|
<select id="queryCommentPageList"
|
||||||
|
resultType="cn.iocoder.yudao.module.system.controller.app.comment.vo.CommentPageListVO">
|
||||||
|
SELECT a.id,
|
||||||
|
a.work_log_id AS workLogId,
|
||||||
|
a.user_id AS userId,
|
||||||
|
c.avatar AS avatar,
|
||||||
|
c.nickname AS userName,
|
||||||
|
a.comment_user_id AS commentUserId,
|
||||||
|
d.avatar AS commentAvatar,
|
||||||
|
d.nickname AS commentUserName,
|
||||||
|
a.COMMENT AS COMMENT,
|
||||||
|
a.type AS type,
|
||||||
|
e.COMMENT AS replyComment,
|
||||||
|
<if test="dto.isShowWorkLogContent != null and dto.isShowWorkLogContent == 1">
|
||||||
|
b.name as workLogName,
|
||||||
|
b.form_variables AS workLogContent,
|
||||||
|
b.form_id as workFormId,
|
||||||
|
</if>
|
||||||
|
a.create_time AS createTime
|
||||||
|
FROM work_log_comment AS a
|
||||||
|
<if test="dto.isShowWorkLogContent != null and dto.isShowWorkLogContent == 1">
|
||||||
|
LEFT JOIN work_log_instance_ext AS b ON a.work_log_id = b.id
|
||||||
|
</if>
|
||||||
|
LEFT JOIN system_users AS c ON a.user_id = c.id
|
||||||
|
LEFT JOIN system_users AS d ON a.comment_user_id = d.id
|
||||||
|
LEFT JOIN work_log_comment AS e ON a.comment_id = e.id
|
||||||
|
|
||||||
|
<where>
|
||||||
|
<if test="dto.workLogId != null">
|
||||||
|
and a.work_log_id = #{dto.workLogId}
|
||||||
|
</if>
|
||||||
|
<if test="dto.type != null">
|
||||||
|
and a.type = #{dto.type}
|
||||||
|
</if>
|
||||||
|
<if test="dto.userId != null">
|
||||||
|
and (a.user_id = #{dto.userId} or a.comment_user_id = #{dto.userId})
|
||||||
|
</if>
|
||||||
|
</where>
|
||||||
|
ORDER BY a.create_time DESC
|
||||||
|
</select>
|
||||||
|
</mapper>
|
Loading…
Reference in New Issue
Block a user