From 7477a16a47418dec9a04848096be91a3920878e9 Mon Sep 17 00:00:00 2001 From: Mzaxd Date: Wed, 24 May 2023 14:50:54 +0800 Subject: [PATCH 1/2] =?UTF-8?q?feat:=E7=AB=99=E5=86=85=E4=BF=A1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/adc/da/report/TestMessage.java | 46 ++++++++ .../da/report/constant/MessageConstants.java | 23 ++++ .../da/report/constant/MessageTypeEnum.java | 40 +++++++ .../report/controller/MessageController.java | 49 ++++++++ .../adc/da/report/dao/mysql/MessageDao.java | 30 +++++ .../da/report/dao/mysql/UserMessageDao.java | 18 +++ .../com/adc/da/report/eo/MessageEntity.java | 70 ++++++++++++ .../adc/da/report/eo/UserMessageEntity.java | 56 +++++++++ .../da/report/service/IMessageService.java | 36 ++++++ .../report/service/IUserMessageService.java | 13 +++ .../service/impl/IMessageServiceImpl.java | 108 ++++++++++++++++++ .../service/impl/IUserMessageServiceImpl.java | 22 ++++ .../com/adc/da/report/vo/MessageQueryVo.java | 41 +++++++ .../java/com/adc/da/report/vo/MessageVo.java | 79 +++++++++++++ .../mybatis/mapper/mysql/MessageDao.xml | 48 ++++++++ 15 files changed, 679 insertions(+) create mode 100644 adc-da-main/src/test/java/com/adc/da/report/TestMessage.java create mode 100644 adc-da-report/src/main/java/com/adc/da/report/constant/MessageConstants.java create mode 100644 adc-da-report/src/main/java/com/adc/da/report/constant/MessageTypeEnum.java create mode 100644 adc-da-report/src/main/java/com/adc/da/report/controller/MessageController.java create mode 100644 adc-da-report/src/main/java/com/adc/da/report/dao/mysql/MessageDao.java create mode 100644 adc-da-report/src/main/java/com/adc/da/report/dao/mysql/UserMessageDao.java create mode 100644 adc-da-report/src/main/java/com/adc/da/report/eo/MessageEntity.java create mode 100644 adc-da-report/src/main/java/com/adc/da/report/eo/UserMessageEntity.java create mode 100644 adc-da-report/src/main/java/com/adc/da/report/service/IMessageService.java create mode 100644 adc-da-report/src/main/java/com/adc/da/report/service/IUserMessageService.java create mode 100644 adc-da-report/src/main/java/com/adc/da/report/service/impl/IMessageServiceImpl.java create mode 100644 adc-da-report/src/main/java/com/adc/da/report/service/impl/IUserMessageServiceImpl.java create mode 100644 adc-da-report/src/main/java/com/adc/da/report/vo/MessageQueryVo.java create mode 100644 adc-da-report/src/main/java/com/adc/da/report/vo/MessageVo.java create mode 100644 adc-da-report/src/main/resources/mybatis/mapper/mysql/MessageDao.xml diff --git a/adc-da-main/src/test/java/com/adc/da/report/TestMessage.java b/adc-da-main/src/test/java/com/adc/da/report/TestMessage.java new file mode 100644 index 0000000..7a79029 --- /dev/null +++ b/adc-da-main/src/test/java/com/adc/da/report/TestMessage.java @@ -0,0 +1,46 @@ +package com.adc.da.report; + +import com.adc.da.report.constant.MessageTypeEnum; +import com.adc.da.report.eo.MessageEntity; +import com.adc.da.report.service.IMessageService; +import com.adc.da.util.utils.UUID; +import io.github.swagger2markup.GroupBy; +import io.github.swagger2markup.Language; +import io.github.swagger2markup.Swagger2MarkupConfig; +import io.github.swagger2markup.Swagger2MarkupConverter; +import io.github.swagger2markup.builder.Swagger2MarkupConfigBuilder; +import io.github.swagger2markup.markup.builder.MarkupLanguage; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.test.context.junit4.SpringRunner; + +import javax.annotation.Resource; +import java.net.URL; +import java.nio.file.Paths; +import java.util.ArrayList; +import java.util.Date; +import java.util.List; + +@RunWith(SpringRunner.class) +@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.DEFINED_PORT) +public class TestMessage { + + @Resource + private IMessageService messageService; + + @Test + public void testMessagePublish() { + MessageEntity messageEntity = new MessageEntity(); + messageEntity.setMessageTitle("测试批量发送标题") + .setMessageType(MessageTypeEnum.SYSTEM_MESSAGE.getValue()) + .setId(UUID.randomUUID10()) + .setContent("测试测试最后一次") + .setDelFlag(0) + .setCreateUser("ZGGJP3N7FT") + .setCreateDate(new Date()); + List userIds = new ArrayList<>(); + userIds.add("ZGGJP3N7FT"); + messageService.publishMessage(messageEntity, false, userIds); + } +} \ No newline at end of file diff --git a/adc-da-report/src/main/java/com/adc/da/report/constant/MessageConstants.java b/adc-da-report/src/main/java/com/adc/da/report/constant/MessageConstants.java new file mode 100644 index 0000000..7902caf --- /dev/null +++ b/adc-da-report/src/main/java/com/adc/da/report/constant/MessageConstants.java @@ -0,0 +1,23 @@ +package com.adc.da.report.constant; + +import io.swagger.models.auth.In; + +/** + * @author: CaiHaohan + * @Date: 2023/5/23 15:17 + * @Description: + */ +public class MessageConstants { + + /** + * 消息状态 未读 + */ + public static final Integer UNREAD = 0; + + + /** + * 消息状态 已读 + */ + public static final Integer READ = 1; + +} diff --git a/adc-da-report/src/main/java/com/adc/da/report/constant/MessageTypeEnum.java b/adc-da-report/src/main/java/com/adc/da/report/constant/MessageTypeEnum.java new file mode 100644 index 0000000..b8cda0e --- /dev/null +++ b/adc-da-report/src/main/java/com/adc/da/report/constant/MessageTypeEnum.java @@ -0,0 +1,40 @@ +package com.adc.da.report.constant; + +import com.baomidou.mybatisplus.annotation.EnumValue; +import com.fasterxml.jackson.annotation.JsonValue; + +/** + * @author: CaiHaohan + * @Date: 2023/5/24 10:44 + * @Description: + */ +public enum MessageTypeEnum { + + /** + * 系统消息 + */ + SYSTEM_MESSAGE(0, "系统消息"); + + /** + * 对应值 + */ + private Integer code; + + /** + * 描述 + */ + private String desc; + + MessageTypeEnum(Integer code, String desc) { + this.code = code; + this.desc = desc; + } + + public Integer getValue() { + return code; + } + + public String getDesc() { + return desc; + } +} diff --git a/adc-da-report/src/main/java/com/adc/da/report/controller/MessageController.java b/adc-da-report/src/main/java/com/adc/da/report/controller/MessageController.java new file mode 100644 index 0000000..79c80a7 --- /dev/null +++ b/adc-da-report/src/main/java/com/adc/da/report/controller/MessageController.java @@ -0,0 +1,49 @@ +package com.adc.da.report.controller; + +import com.adc.da.report.service.IMessageService; +import com.adc.da.report.vo.MessageQueryVo; +import com.adc.da.report.vo.MessageVo; +import com.adc.da.util.http.ResponseMessage; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.extern.slf4j.Slf4j; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import javax.validation.Valid; + +/** + * @Author caihaohan + * @Date 2021/11/9 13:46 + */ +@Slf4j +@Api(tags = "站内信") +@RestController +@RequestMapping("/${restPath}/message") +public class MessageController { + + + @Resource + private IMessageService messageEntityService; + + /** + * 站内信消息列表 + * @return + */ + @ApiOperation("站内信消息列表") + @GetMapping("/list") + public ResponseMessage list(@Valid MessageQueryVo messageQueryVo) { + return messageEntityService.listByCurrentUser(messageQueryVo); + } + + /** + * 全部已读 + * @return + */ + @ApiOperation("全部已读接口") + @GetMapping("/allRead") + public ResponseMessage allRead() { + return messageEntityService.allRead(); + } + +} diff --git a/adc-da-report/src/main/java/com/adc/da/report/dao/mysql/MessageDao.java b/adc-da-report/src/main/java/com/adc/da/report/dao/mysql/MessageDao.java new file mode 100644 index 0000000..c0ad01a --- /dev/null +++ b/adc-da-report/src/main/java/com/adc/da/report/dao/mysql/MessageDao.java @@ -0,0 +1,30 @@ +package com.adc.da.report.dao.mysql; + +import com.adc.da.report.eo.MessageEntity; +import com.adc.da.report.vo.MessageQueryVo; +import com.adc.da.report.vo.MessageVo; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import org.apache.ibatis.annotations.Param; + +/** +* @author ThinkBook +* @description 针对表【ts_message】的数据库操作Mapper +* @createDate 2023-05-23 11:22:15 +* @Entity com.adc.da.report.eo.MessageEntityEntity +*/ +public interface MessageDao extends BaseMapper { + + /** + * 根据当前用户展示站内信列表 + * @param page + * @param messageVo + * @param userId + * @return + */ + IPage listByUser(IPage page, @Param("vo") MessageQueryVo messageVo, @Param("userId") String userId); +} + + + + diff --git a/adc-da-report/src/main/java/com/adc/da/report/dao/mysql/UserMessageDao.java b/adc-da-report/src/main/java/com/adc/da/report/dao/mysql/UserMessageDao.java new file mode 100644 index 0000000..fc37a79 --- /dev/null +++ b/adc-da-report/src/main/java/com/adc/da/report/dao/mysql/UserMessageDao.java @@ -0,0 +1,18 @@ +package com.adc.da.report.dao.mysql; + +import com.adc.da.report.eo.UserMessageEntity; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** +* @author ThinkBook +* @description 针对表【ts_user_message】的数据库操作Mapper +* @createDate 2023-05-23 11:30:04 +* @Entity com.adc.da.report.eo.UserMessage +*/ +public interface UserMessageDao extends BaseMapper { + +} + + + + diff --git a/adc-da-report/src/main/java/com/adc/da/report/eo/MessageEntity.java b/adc-da-report/src/main/java/com/adc/da/report/eo/MessageEntity.java new file mode 100644 index 0000000..cce9217 --- /dev/null +++ b/adc-da-report/src/main/java/com/adc/da/report/eo/MessageEntity.java @@ -0,0 +1,70 @@ +package com.adc.da.report.eo; + +import com.adc.da.report.constant.MessageTypeEnum; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import java.io.Serializable; +import java.util.Date; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; +import lombok.experimental.Accessors; + +/** + * + * @author Caihaohan + * @TableName ts_message + */ +@TableName(value ="ts_message") +@Data +@NoArgsConstructor +@AllArgsConstructor +@Accessors(chain = true) +public class MessageEntity implements Serializable { + /** + * 主键id + */ + @TableId(value = "id") + private String id; + + /** + * 标题 + */ + @TableField(value = "message_title") + private String messageTitle; + + /** + * 内容 + */ + @TableField(value = "content") + private String content; + + /** + * 消息类型 + */ + @TableField(value = "message_type") + private Integer messageType; + + /** + * 发布人 + */ + @TableField(value = "createUser") + private String createUser; + + /** + * 发布时间 + */ + @TableField(value = "createDate") + private Date createDate; + + /** + * 删除标记(0未删除 1已删除) + */ + @TableField(value = "del_flag") + private Integer delFlag; + + @TableField(exist = false) + private static final long serialVersionUID = 1314298673425876932L; +} \ No newline at end of file diff --git a/adc-da-report/src/main/java/com/adc/da/report/eo/UserMessageEntity.java b/adc-da-report/src/main/java/com/adc/da/report/eo/UserMessageEntity.java new file mode 100644 index 0000000..76131e3 --- /dev/null +++ b/adc-da-report/src/main/java/com/adc/da/report/eo/UserMessageEntity.java @@ -0,0 +1,56 @@ +package com.adc.da.report.eo; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import java.io.Serializable; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; +import lombok.experimental.Accessors; + +/** + * + * @author ThinkBook + * @TableName ts_user_message + */ +@TableName(value ="ts_user_message") +@Data +@NoArgsConstructor +@AllArgsConstructor +@Accessors(chain = true) +public class UserMessageEntity implements Serializable { + /** + * 主键id + */ + @TableId(value = "id") + private String id; + + /** + * 用户id + */ + @TableField(value = "user_id") + private String userId; + + /** + * 站内信id + */ + @TableField(value = "message_id") + private String messageId; + + /** + * 阅读状态(0代表未读,1代表已读) + */ + @TableField(value = "read_type") + private Integer readType; + + /** + * 删除标记(0未删除 1已删除) + */ + @TableField(value = "del_flag") + private Integer delFlag; + + @TableField(exist = false) + private static final long serialVersionUID = 1L; +} \ No newline at end of file diff --git a/adc-da-report/src/main/java/com/adc/da/report/service/IMessageService.java b/adc-da-report/src/main/java/com/adc/da/report/service/IMessageService.java new file mode 100644 index 0000000..fe1016c --- /dev/null +++ b/adc-da-report/src/main/java/com/adc/da/report/service/IMessageService.java @@ -0,0 +1,36 @@ +package com.adc.da.report.service; + +import com.adc.da.report.eo.MessageEntity; +import com.adc.da.report.vo.MessageQueryVo; +import com.adc.da.util.http.ResponseMessage; +import com.baomidou.mybatisplus.extension.service.IService; + +import java.util.List; + +/** +* @author ThinkBook +* @description 针对表【ts_message】的数据库操作Service +* @createDate 2023-05-23 11:22:15 +*/ +public interface IMessageService extends IService { + + /** + * 返回当前用户的消息列表 + * @return + */ + ResponseMessage listByCurrentUser(MessageQueryVo messageVo); + + /** + * 全部已读接口 + * @return + */ + ResponseMessage allRead(); + + /** + * 发布站内信(当用户数过多的时候谨慎使用发送给全部用户) + * @param message + * @param toAllUser + * @param userIds + */ + void publishMessage(MessageEntity message, boolean toAllUser, List userIds); +} diff --git a/adc-da-report/src/main/java/com/adc/da/report/service/IUserMessageService.java b/adc-da-report/src/main/java/com/adc/da/report/service/IUserMessageService.java new file mode 100644 index 0000000..53500ef --- /dev/null +++ b/adc-da-report/src/main/java/com/adc/da/report/service/IUserMessageService.java @@ -0,0 +1,13 @@ +package com.adc.da.report.service; + +import com.adc.da.report.eo.UserMessageEntity; +import com.baomidou.mybatisplus.extension.service.IService; + +/** +* @author ThinkBook +* @description 针对表【ts_user_message】的数据库操作Service +* @createDate 2023-05-23 11:30:04 +*/ +public interface IUserMessageService extends IService { + +} diff --git a/adc-da-report/src/main/java/com/adc/da/report/service/impl/IMessageServiceImpl.java b/adc-da-report/src/main/java/com/adc/da/report/service/impl/IMessageServiceImpl.java new file mode 100644 index 0000000..a8987b9 --- /dev/null +++ b/adc-da-report/src/main/java/com/adc/da/report/service/impl/IMessageServiceImpl.java @@ -0,0 +1,108 @@ +package com.adc.da.report.service.impl; + +import com.adc.da.login.util.UserUtils; +import com.adc.da.report.constant.MessageConstants; +import com.adc.da.report.constant.MessageTypeEnum; +import com.adc.da.report.constant.ReportConstants; +import com.adc.da.report.dao.mysql.UserMessageDao; +import com.adc.da.report.eo.UserMessageEntity; +import com.adc.da.report.service.IUserMessageService; +import com.adc.da.report.vo.MessageQueryVo; +import com.adc.da.report.vo.MessageVo; +import com.adc.da.sys.dao.mysql.UserEODao; +import com.adc.da.sys.entity.UserEO; +import com.adc.da.sys.service.iservice.IUserEoService; +import com.adc.da.util.exception.AdcDaBaseException; +import com.adc.da.util.http.ResponseMessage; +import com.adc.da.util.http.Result; +import com.adc.da.util.utils.UUID; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; +import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.adc.da.report.eo.MessageEntity; +import com.adc.da.report.service.IMessageService; +import com.adc.da.report.dao.mysql.MessageDao; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import javax.annotation.Resource; +import java.util.ArrayList; +import java.util.List; +import java.util.stream.Collectors; + +/** +* @author ThinkBook +* @description 针对表【ts_message】的数据库操作Service实现 +* @createDate 2023-05-23 11:22:15 +*/ +@Service +public class IMessageServiceImpl extends ServiceImpl + implements IMessageService { + + @Resource + private MessageDao messageDao; + + @Resource + private IUserMessageService userMessageService; + + @Resource + private UserEODao userEODao; + + @Override + public ResponseMessage listByCurrentUser(MessageQueryVo messageVo) { + IPage page = new Page<>(); + page.setCurrent(messageVo.getPageNo()); + page.setSize(messageVo.getPageSize()); + IPage list = messageDao.listByUser(page, messageVo, UserUtils.getUserId()); + return Result.success(list); + } + + @Override + public ResponseMessage allRead() { + LambdaUpdateWrapper wrapper = new LambdaUpdateWrapper<>(); + wrapper.eq(UserMessageEntity::getReadType, MessageConstants.UNREAD); + wrapper.eq(UserMessageEntity::getUserId, UserUtils.getUserId()); + wrapper.set(UserMessageEntity::getReadType, MessageConstants.READ); + userMessageService.update(wrapper); + return Result.success("全部已读"); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public void publishMessage(MessageEntity message, boolean toAllUser, List userIds) { + List userEoIds = new ArrayList<>(); + if (toAllUser) { + LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper<>(); + lambdaQueryWrapper.eq(UserEO::getDelFlag, 0); + List userEOS = userEODao.selectList(lambdaQueryWrapper); + if (userEOS != null) { + userEoIds = userEOS.stream().map(UserEO::getUsid).collect(Collectors.toList()); + } + } else { + userEoIds = userIds; + if (userEoIds.isEmpty()) { + throw new AdcDaBaseException("无指定发送的用户,无法发送站内信"); + } + } + //保存消息信息 + save(message); + List userMessageEntities = new ArrayList<>(); + userEoIds.forEach(userId -> { + UserMessageEntity userMessageEntity = new UserMessageEntity(); + userMessageEntity.setId(UUID.randomUUID10()) + .setUserId(userId) + .setMessageId(message.getId()) + .setReadType(MessageConstants.UNREAD) + .setDelFlag(0); + userMessageEntities.add(userMessageEntity); + }); + userMessageService.saveBatch(userMessageEntities); + } +} + + + + diff --git a/adc-da-report/src/main/java/com/adc/da/report/service/impl/IUserMessageServiceImpl.java b/adc-da-report/src/main/java/com/adc/da/report/service/impl/IUserMessageServiceImpl.java new file mode 100644 index 0000000..1d02f07 --- /dev/null +++ b/adc-da-report/src/main/java/com/adc/da/report/service/impl/IUserMessageServiceImpl.java @@ -0,0 +1,22 @@ +package com.adc.da.report.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.adc.da.report.eo.UserMessageEntity; +import com.adc.da.report.service.IUserMessageService; +import com.adc.da.report.dao.mysql.UserMessageDao; +import org.springframework.stereotype.Service; + +/** +* @author ThinkBook +* @description 针对表【ts_user_message】的数据库操作Service实现 +* @createDate 2023-05-23 11:30:04 +*/ +@Service +public class IUserMessageServiceImpl extends ServiceImpl + implements IUserMessageService { + +} + + + + diff --git a/adc-da-report/src/main/java/com/adc/da/report/vo/MessageQueryVo.java b/adc-da-report/src/main/java/com/adc/da/report/vo/MessageQueryVo.java new file mode 100644 index 0000000..29052a0 --- /dev/null +++ b/adc-da-report/src/main/java/com/adc/da/report/vo/MessageQueryVo.java @@ -0,0 +1,41 @@ +package com.adc.da.report.vo; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +import javax.validation.constraints.Min; +import javax.validation.constraints.NotNull; + +/** + * @author: CaiHaohan + * @Date: 2023/5/23 14:14 + * @Description: + */ +@Data +@NoArgsConstructor +@AllArgsConstructor +public class MessageQueryVo { + + /** + * 标题 + */ + private String messageTitle; + + /** + * 发布人姓名 + */ + private String createUserName; + + /** + * 页数 + */ + @Min(1) + private int pageNo; + + /** + * 每页数量 + */ + @NotNull + private int pageSize; +} diff --git a/adc-da-report/src/main/java/com/adc/da/report/vo/MessageVo.java b/adc-da-report/src/main/java/com/adc/da/report/vo/MessageVo.java new file mode 100644 index 0000000..0f0b3d8 --- /dev/null +++ b/adc-da-report/src/main/java/com/adc/da/report/vo/MessageVo.java @@ -0,0 +1,79 @@ +package com.adc.da.report.vo; + +import com.adc.da.report.constant.MessageTypeEnum; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; +import lombok.experimental.Accessors; + +import java.util.Date; + +/** + * @author: CaiHaohan + * @Date: 2023/5/23 11:54 + * @Description: + */ +@Data +@NoArgsConstructor +@AllArgsConstructor +@Accessors(chain = true) +public class MessageVo { + + /** + * 关系表的id + */ + private String id; + + /** + * 标题 + */ + private String messageTitle; + + /** + * 内容 + */ + private String content; + + /** + * 消息类型 + */ + private Integer messageType; + + /** + * 消息类型 + */ + private String messageTypeDesc; + + /** + * 发布时间 + */ + private Date createDate; + + /** + * 创建用户id + */ + private String createUser; + + /** + * 消息id + */ + private String messageId; + + /** + * 阅读状态(0未读 1已读) + */ + private Integer readType; + + public void setMessageType(Integer messageType) { + this.messageType = messageType; + switch (messageType) { + case 0: + this.messageTypeDesc = MessageTypeEnum.SYSTEM_MESSAGE.getDesc(); + break; + default: + this.messageTypeDesc = "未知"; + } + } +} diff --git a/adc-da-report/src/main/resources/mybatis/mapper/mysql/MessageDao.xml b/adc-da-report/src/main/resources/mybatis/mapper/mysql/MessageDao.xml new file mode 100644 index 0000000..abe682f --- /dev/null +++ b/adc-da-report/src/main/resources/mybatis/mapper/mysql/MessageDao.xml @@ -0,0 +1,48 @@ + + + + + + + + + + + + + + id,content,message_type, + createDate,del_flag + + + From 34e0852d400214e6303f712f4ee3515fcaf9028e Mon Sep 17 00:00:00 2001 From: Mzaxd Date: Wed, 24 May 2023 15:29:44 +0800 Subject: [PATCH 2/2] =?UTF-8?q?feat:=E9=A2=84=E8=A7=88-=E6=96=87=E4=BB=B6?= =?UTF-8?q?=E5=88=97=E8=A1=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../da/report/constant/ReportConstants.java | 9 ++ .../java/com/adc/da/report/eo/ReportFile.java | 14 ++ .../service/impl/IReportServiceImpl.java | 141 ++++++++++-------- .../java/com/adc/da/report/vo/FileVo.java | 21 +++ .../com/adc/da/report/vo/ReportDetailVo.java | 13 +- .../mapper/mysql/ReportManageMapper.xml | 4 - 6 files changed, 129 insertions(+), 73 deletions(-) create mode 100644 adc-da-report/src/main/java/com/adc/da/report/vo/FileVo.java diff --git a/adc-da-report/src/main/java/com/adc/da/report/constant/ReportConstants.java b/adc-da-report/src/main/java/com/adc/da/report/constant/ReportConstants.java index 3801efc..fc25652 100644 --- a/adc-da-report/src/main/java/com/adc/da/report/constant/ReportConstants.java +++ b/adc-da-report/src/main/java/com/adc/da/report/constant/ReportConstants.java @@ -23,6 +23,15 @@ public class ReportConstants { */ public static final String NO_USER_PRIVACY_INVOLVED = "不涉及用户隐私"; + /** + * 流程中 + */ + public static final Integer IN_PROCESS = 1; + + /** + * 不在流程中 + */ + public static final Integer NOT_IN_PROCESS = 2; } diff --git a/adc-da-report/src/main/java/com/adc/da/report/eo/ReportFile.java b/adc-da-report/src/main/java/com/adc/da/report/eo/ReportFile.java index 5a950c5..4315fa4 100644 --- a/adc-da-report/src/main/java/com/adc/da/report/eo/ReportFile.java +++ b/adc-da-report/src/main/java/com/adc/da/report/eo/ReportFile.java @@ -1,14 +1,28 @@ package com.adc.da.report.eo; +import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.AllArgsConstructor; import lombok.Data; +import lombok.NoArgsConstructor; +import lombok.experimental.Accessors; @Data +@TableName("ts_report_file") +@Accessors(chain = true) public class ReportFile { + @TableId(value = "id",type = IdType.INPUT) + private String id; + @TableField("report_id") private String reportId; @TableField("file_id") private String fileId; + + @TableField("state") + private String state; } diff --git a/adc-da-report/src/main/java/com/adc/da/report/service/impl/IReportServiceImpl.java b/adc-da-report/src/main/java/com/adc/da/report/service/impl/IReportServiceImpl.java index d356c1f..187b11d 100644 --- a/adc-da-report/src/main/java/com/adc/da/report/service/impl/IReportServiceImpl.java +++ b/adc-da-report/src/main/java/com/adc/da/report/service/impl/IReportServiceImpl.java @@ -6,14 +6,12 @@ import com.adc.da.login.util.UserUtils; import com.adc.da.report.constant.ReportConstants; import com.adc.da.report.dao.mysql.FileDao; import com.adc.da.report.dao.mysql.ReportDao; +import com.adc.da.report.dao.mysql.ReportFileDao; import com.adc.da.report.dao.mysql.ReportLabelDao; import com.adc.da.report.eo.*; import com.adc.da.report.service.*; import com.adc.da.report.util.*; -import com.adc.da.report.vo.ChangeUploaderVo; -import com.adc.da.report.vo.ReportDetailVo; -import com.adc.da.report.vo.ReportQueryVo; -import com.adc.da.report.vo.ReportVo; +import com.adc.da.report.vo.*; import com.adc.da.sys.dao.mysql.RoleEODao; import com.adc.da.sys.dao.mysql.UserEODao; import com.adc.da.sys.entity.MenuEO; @@ -22,6 +20,7 @@ import com.adc.da.sys.entity.RoleEO; import com.adc.da.sys.entity.UserEO; import com.adc.da.sys.service.MenuEOService; import com.adc.da.sys.service.OrgEOService; +import com.adc.da.sys.util.BeanCopyUtils; import com.adc.da.util.http.ResponseMessage; import com.adc.da.util.http.Result; import com.adc.da.util.utils.CollectionUtils; @@ -128,6 +127,9 @@ public class IReportServiceImpl extends ServiceImpl @Resource private MenuEOService menuEOService; + @Resource + private ReportFileDao reportFileDao; + @Override public void addOrUpdate(ReportEntity reportEntity) { SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); @@ -529,38 +531,38 @@ public class IReportServiceImpl extends ServiceImpl }); } - list.getRecords().forEach(c -> { - FileEntity fileEntity = Optional.ofNullable(fileDao.selectById(c.getFileId())).orElse(new FileEntity()); - if (StringUtils.isEmpty(fileEntity.getFileType())) { - c.setFileType(null); - } - //ppt文件 - else if (ReportConstants.FILE_EXTENSIONS_PPT.equalsIgnoreCase(fileEntity.getFileType()) || - ReportConstants.FILE_EXTENSIONS_PPTX.equalsIgnoreCase(fileEntity.getFileType())) { - c.setFileType("1"); - } - //excel文件 - else if (ReportConstants.FILE_EXTENSIONS_XLS.equalsIgnoreCase(fileEntity.getFileType()) || - ReportConstants.FILE_EXTENSIONS_XLSX.equalsIgnoreCase(fileEntity.getFileType())) { - c.setFileType("2"); - } - //pdf文件 - else if (ReportConstants.FILE_EXTENSIONS_PDF.equalsIgnoreCase(fileEntity.getFileType())) { - c.setFileType("3"); - } - //word文件 - else { - c.setFileType("4"); - } - - //文件大小 - c.setFileSize(StringUtils.isNotEmpty(fileEntity.getFileSize()) - ? String.valueOf(Integer.parseInt(fileEntity.getFileSize()) / 1024) + "kb" : "0kb"); - c.setFileName(fileEntity.getFileName()); +// list.getRecords().forEach(c -> { +// FileEntity fileEntity = Optional.ofNullable(fileDao.selectById(c.getFileId())).orElse(new FileEntity()); +// if (StringUtils.isEmpty(fileEntity.getFileType())) { +// c.setFileType(null); +// } +// //ppt文件 +// else if (ReportConstants.FILE_EXTENSIONS_PPT.equalsIgnoreCase(fileEntity.getFileType()) || +// ReportConstants.FILE_EXTENSIONS_PPTX.equalsIgnoreCase(fileEntity.getFileType())) { +// c.setFileType("1"); +// } +// //excel文件 +// else if (ReportConstants.FILE_EXTENSIONS_XLS.equalsIgnoreCase(fileEntity.getFileType()) || +// ReportConstants.FILE_EXTENSIONS_XLSX.equalsIgnoreCase(fileEntity.getFileType())) { +// c.setFileType("2"); +// } +// //pdf文件 +// else if (ReportConstants.FILE_EXTENSIONS_PDF.equalsIgnoreCase(fileEntity.getFileType())) { +// c.setFileType("3"); +// } +// //word文件 +// else { +// c.setFileType("4"); +// } +// +// //文件大小 +// c.setFileSize(StringUtils.isNotEmpty(fileEntity.getFileSize()) +// ? String.valueOf(Integer.parseInt(fileEntity.getFileSize()) / 1024) + "kb" : "0kb"); +// c.setFileName(fileEntity.getFileName()); // List userIdList = reportUserDao.selectList( // new QueryWrapper().eq("reportId", c.getId())) // .stream().map(ReportUserEntity::getUserId).collect(Collectors.toList()); - }); +// }); return list; } @@ -612,38 +614,38 @@ public class IReportServiceImpl extends ServiceImpl } }); - list.getRecords().forEach(c -> { - FileEntity fileEntity = Optional.ofNullable(fileDao.selectById(c.getFileId())).orElse(new FileEntity()); - if (StringUtils.isEmpty(fileEntity.getFileType())) { - c.setFileType(null); - } - //ppt文件 - else if (ReportConstants.FILE_EXTENSIONS_PPT.equalsIgnoreCase(fileEntity.getFileType()) || - ReportConstants.FILE_EXTENSIONS_PPTX.equalsIgnoreCase(fileEntity.getFileType())) { - c.setFileType("1"); - } - //excel文件 - else if (ReportConstants.FILE_EXTENSIONS_XLS.equalsIgnoreCase(fileEntity.getFileType()) || - ReportConstants.FILE_EXTENSIONS_XLSX.equalsIgnoreCase(fileEntity.getFileType())) { - c.setFileType("2"); - } - //pdf文件 - else if (ReportConstants.FILE_EXTENSIONS_PDF.equalsIgnoreCase(fileEntity.getFileType())) { - c.setFileType("3"); - } - //word文件 - else { - c.setFileType("4"); - } - - //文件大小 - c.setFileSize(StringUtils.isNotEmpty(fileEntity.getFileSize()) - ? String.valueOf(Integer.parseInt(fileEntity.getFileSize()) / 1024) + "kb" : "0kb"); - c.setFileName(fileEntity.getFileName()); +// list.getRecords().forEach(c -> { +// FileEntity fileEntity = Optional.ofNullable(fileDao.selectById(c.getFileId())).orElse(new FileEntity()); +// if (StringUtils.isEmpty(fileEntity.getFileType())) { +// c.setFileType(null); +// } +// //ppt文件 +// else if (ReportConstants.FILE_EXTENSIONS_PPT.equalsIgnoreCase(fileEntity.getFileType()) || +// ReportConstants.FILE_EXTENSIONS_PPTX.equalsIgnoreCase(fileEntity.getFileType())) { +// c.setFileType("1"); +// } +// //excel文件 +// else if (ReportConstants.FILE_EXTENSIONS_XLS.equalsIgnoreCase(fileEntity.getFileType()) || +// ReportConstants.FILE_EXTENSIONS_XLSX.equalsIgnoreCase(fileEntity.getFileType())) { +// c.setFileType("2"); +// } +// //pdf文件 +// else if (ReportConstants.FILE_EXTENSIONS_PDF.equalsIgnoreCase(fileEntity.getFileType())) { +// c.setFileType("3"); +// } +// //word文件 +// else { +// c.setFileType("4"); +// } +// +// //文件大小 +// c.setFileSize(StringUtils.isNotEmpty(fileEntity.getFileSize()) +// ? String.valueOf(Integer.parseInt(fileEntity.getFileSize()) / 1024) + "kb" : "0kb"); +// c.setFileName(fileEntity.getFileName()); // List userIdList = reportUserDao.selectList( // new QueryWrapper().eq("reportId", c.getId())) // .stream().map(ReportUserEntity::getUserId).collect(Collectors.toList()); - }); +// }); return list; } @@ -716,6 +718,21 @@ public class IReportServiceImpl extends ServiceImpl @Override public ResponseMessage reportDetail(String reportId) { ReportDetailVo reportDetailVo = reportDao.reportDetail(reportId); + //设置文件信息 + LambdaQueryWrapper reportFileLambdaQueryWrapper = new LambdaQueryWrapper<>(); + reportFileLambdaQueryWrapper.eq(ReportFile::getReportId, reportDetailVo.getId()); + reportFileLambdaQueryWrapper.eq(ReportFile::getState, ReportConstants.NOT_IN_PROCESS); + List reportFiles = reportFileDao.selectList(reportFileLambdaQueryWrapper); + List fileIds = new ArrayList<>(); + if (reportFiles != null) { + fileIds = reportFiles.stream().map(ReportFile::getFileId).collect(Collectors.toList()); + } + if (CollectionUtils.isNotEmpty(fileIds)) { + List fileEntities = fileDao.selectBatchIds(fileIds); + List fileVos = BeanCopyUtils.copyBeanList(fileEntities, FileVo.class); + reportDetailVo.setFileList(fileVos); + } + //设置部门名称 String department = reportDetailVo.getDepartment(); if (StrUtil.isNotBlank(department)) { diff --git a/adc-da-report/src/main/java/com/adc/da/report/vo/FileVo.java b/adc-da-report/src/main/java/com/adc/da/report/vo/FileVo.java new file mode 100644 index 0000000..8ef3be2 --- /dev/null +++ b/adc-da-report/src/main/java/com/adc/da/report/vo/FileVo.java @@ -0,0 +1,21 @@ +package com.adc.da.report.vo; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +@Data +@NoArgsConstructor +@AllArgsConstructor +public class FileVo { + + /** + * 文件主键id + */ + private String fileId; + + /** + * 文件名 + */ + private String fileName; +} diff --git a/adc-da-report/src/main/java/com/adc/da/report/vo/ReportDetailVo.java b/adc-da-report/src/main/java/com/adc/da/report/vo/ReportDetailVo.java index 5843c73..712f15a 100644 --- a/adc-da-report/src/main/java/com/adc/da/report/vo/ReportDetailVo.java +++ b/adc-da-report/src/main/java/com/adc/da/report/vo/ReportDetailVo.java @@ -44,6 +44,7 @@ public class ReportDetailVo { */ private String departmentId; + private String department; /** * 部门 @@ -65,13 +66,6 @@ public class ReportDetailVo { */ private String privacyLevel; - /** - * 文件id - */ - private String fileId; - - private String fileName; - /** * 创建人id */ @@ -111,4 +105,9 @@ public class ReportDetailVo { * 保密到期日期 */ private Date secrecyLast; + + /** + * 文件列表 + */ + private List fileList; } diff --git a/adc-da-report/src/main/resources/mybatis/mapper/mysql/ReportManageMapper.xml b/adc-da-report/src/main/resources/mybatis/mapper/mysql/ReportManageMapper.xml index cb7feca..b6c6103 100644 --- a/adc-da-report/src/main/resources/mybatis/mapper/mysql/ReportManageMapper.xml +++ b/adc-da-report/src/main/resources/mybatis/mapper/mysql/ReportManageMapper.xml @@ -100,7 +100,6 @@ eo.maincontent AS mainContent, eo.DEPARTMENT AS department, eo.`YEAR` AS `year`, - eo.fileid AS fileId, eo.confidentialLevel AS confidentialLevel, eo.privacyLevel AS privacyLevel, eo.createUserId AS createUserId, @@ -284,15 +283,12 @@ rm.maincontent AS maincontent, rm.department AS department, rm.`year` AS `year`, - rm.fileId AS fileId, - f.file_name as fileName, rm.confidentialLevel AS confidentialLevel, rm.privacyLevel AS privacyLevel, rm.secrecy_last AS secrecyLast FROM `tt_report_manage` AS rm LEFT JOIN ts_user AS u ON u.USID = rm.createUserId LEFT JOIN ts_org as org on org.id = rm.department - LEFT JOIN ts_file as f on rm.fileId=f.file_id WHERE rm.id = #{reportId} AND rm.del_flag = 0