diff --git a/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/message/form/InfoIdDTO.java b/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/message/form/InfoIdDTO.java new file mode 100644 index 0000000000..8df6bd657e --- /dev/null +++ b/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/message/form/InfoIdDTO.java @@ -0,0 +1,36 @@ +package com.epmet.dataaggre.dto.message.form; + +import lombok.Data; + +import javax.validation.constraints.NotBlank; +import java.io.Serializable; + +/** + * @Description 通用dto + * @Author yinzuomei + * @Date 2021/8/20 7:48 下午 + */ +@Data +public class InfoIdDTO implements Serializable { + private static final long serialVersionUID = -3852837936492128925L; + public interface AddUserInternalGroup { + } + + @NotBlank(message = "消息id不能为空",groups = AddUserInternalGroup.class) + private String infoId; + + + //以下参数从token中获取 + /** + * 当前用户id + */ + @NotBlank(message = "userId不能为空",groups = AddUserInternalGroup.class) + private String userId; + + /** + * 当前客户id + */ + @NotBlank(message = "customerId不能为空",groups = AddUserInternalGroup.class) + private String customerId; +} + diff --git a/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/message/result/InfoDetailResDTO.java b/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/message/result/InfoDetailResDTO.java new file mode 100644 index 0000000000..d3b9f34c96 --- /dev/null +++ b/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/message/result/InfoDetailResDTO.java @@ -0,0 +1,97 @@ +package com.epmet.dataaggre.dto.message.result; + +import com.epmet.commons.tools.dto.form.FileCommonDTO; +import com.fasterxml.jackson.annotation.JsonFormat; +import lombok.Data; + +import java.io.Serializable; +import java.util.Date; +import java.util.List; + +/** + * @Description 消息详情 + * @Author yinzuomei + * @Date 2021/8/20 7:49 下午 + */ +@Data +public class InfoDetailResDTO implements Serializable { + private String infoId; + + /** + * 发布人头像 + */ + private String headPhoto; + + /** + * 发布人id + */ + private String publishStaffId; + + /** + * 发布人姓名 + */ + private String publishStaffName; + + /** + * 发布人2级组织名 + */ + private String publishOrgName; + + /** + * 发布人性别 + */ + private String publishStaffGender; + + /** + * 是否本人发布,true:是当前用户发布 + */ + private Boolean isMine; + + /** + * 消息内容完整版 + */ + private String content; + + /** + * 发送时间 + */ + @JsonFormat(pattern = "yyyy-MM-dd HH:mm", timezone = "GMT+8") + private Date publishTime; + + /** + * 共XX个接收人 + */ + private Integer totalReceiver; + + /** + * 已读的数量 + */ + private Integer readTotal; + + /** + * 未读的数量 + */ + private Integer unReadCount; + + /** + * 第一个接受人的id + */ + //@JsonIgnore + private String firstReceiverStaffId; + + /** + * 第一个接受人的姓名 + */ + private String firstReceiverName; + + /** + * 未读的回复数量 + */ + private Integer unReadReplyNum; + + /** + * 附件列表 + */ + private List attachmentList; +} + diff --git a/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/message/result/MyReceivedResDTO.java b/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/message/result/MyReceivedResDTO.java index 236fdd6143..d5a5f5b830 100644 --- a/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/message/result/MyReceivedResDTO.java +++ b/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/message/result/MyReceivedResDTO.java @@ -1,6 +1,7 @@ package com.epmet.dataaggre.dto.message.result; import com.epmet.commons.tools.dto.form.FileCommonDTO; +import com.fasterxml.jackson.annotation.JsonFormat; import lombok.Data; import java.io.Serializable; @@ -20,6 +21,7 @@ public class MyReceivedResDTO implements Serializable { private String publishStaffOrgName; private String headPhoto; private String content; + @JsonFormat(pattern = "yyyy-MM-dd HH:mm", timezone = "GMT+8") private Date publishTime; /** * 附件列表 列表默认返回一个 diff --git a/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/message/result/MySentResDTO.java b/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/message/result/MySentResDTO.java index 21a8a7c613..dbb72ca045 100644 --- a/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/message/result/MySentResDTO.java +++ b/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/message/result/MySentResDTO.java @@ -1,6 +1,7 @@ package com.epmet.dataaggre.dto.message.result; import com.epmet.commons.tools.dto.form.FileCommonDTO; +import com.fasterxml.jackson.annotation.JsonFormat; import lombok.Data; import java.io.Serializable; @@ -17,6 +18,7 @@ public class MySentResDTO implements Serializable { private static final long serialVersionUID = -6765856639039569052L; private String infoId; private String content; + @JsonFormat(pattern = "yyyy-MM-dd HH:mm", timezone = "GMT+8") private Date publishTime; private Integer totalReceiver; private Integer readTotal; diff --git a/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/controller/InfoController.java b/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/controller/InfoController.java index 4fe3598e1b..0d5cc65eba 100644 --- a/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/controller/InfoController.java +++ b/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/controller/InfoController.java @@ -8,6 +8,7 @@ import com.epmet.commons.tools.validator.ValidatorUtils; import com.epmet.dataaggre.dto.govorg.form.ReceiversFormDTO; import com.epmet.dataaggre.dto.govorg.result.ReceiversResultDTO; import com.epmet.dataaggre.dto.message.form.InfoGroupDetailFormDTO; +import com.epmet.dataaggre.dto.message.form.InfoIdDTO; import com.epmet.dataaggre.dto.message.form.InfoRepliesFormDTO; import com.epmet.dataaggre.dto.message.form.MySentFormDTO; import com.epmet.dataaggre.dto.message.result.*; @@ -138,4 +139,20 @@ public class InfoController { return new Result>().ok(epmetMessageService.queryMyReceivedList(formDTO)); } + /** + * 消息详情:我收到的,我发送的,通用 + * + * @param tokenDto + * @param infoIdDTO + * @return com.epmet.commons.tools.utils.Result + * @author yinzuomei + * @date 2021/8/20 7:57 下午 + */ + @PostMapping("infodetail") + public Result queryInfoDetail(@LoginUser TokenDto tokenDto,@RequestBody InfoIdDTO infoIdDTO){ + infoIdDTO.setCustomerId(tokenDto.getCustomerId()); + infoIdDTO.setUserId(tokenDto.getUserId()); + ValidatorUtils.validateEntity(infoIdDTO,InfoIdDTO.AddUserInternalGroup.class); + return new Result().ok(epmetMessageService.queryInfoDetail(infoIdDTO)); + } } diff --git a/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/dao/epmetmessage/InfoProfileDao.java b/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/dao/epmetmessage/InfoProfileDao.java index c63b974f3d..9dd9eae766 100644 --- a/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/dao/epmetmessage/InfoProfileDao.java +++ b/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/dao/epmetmessage/InfoProfileDao.java @@ -18,6 +18,8 @@ package com.epmet.dataaggre.dao.epmetmessage; import com.epmet.commons.mybatis.dao.BaseDao; +import com.epmet.commons.tools.dto.form.FileCommonDTO; +import com.epmet.dataaggre.dto.message.result.InfoDetailResDTO; import com.epmet.dataaggre.dto.message.result.MyReceivedResDTO; import com.epmet.dataaggre.dto.message.result.MySentResDTO; import com.epmet.dataaggre.entity.epmetmessage.InfoProfileEntity; @@ -55,4 +57,16 @@ public interface InfoProfileDao extends BaseDao { * @date 2021/8/20 7:01 下午 */ List selectListMyReceived(@Param("userId") String userId, @Param("content") String content); + + /** + * 消息详情 + * + * @param infoId + * @return com.epmet.dataaggre.dto.message.result.InfoDetailResDTO + * @author yinzuomei + * @date 2021/8/20 7:58 下午 + */ + InfoDetailResDTO selectInfoDetail(String infoId); + + List selectInfoAtt(String infoId); } \ No newline at end of file diff --git a/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/epmetmessage/EpmetMessageService.java b/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/epmetmessage/EpmetMessageService.java index bab161d78d..09f13e55b7 100644 --- a/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/epmetmessage/EpmetMessageService.java +++ b/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/epmetmessage/EpmetMessageService.java @@ -3,6 +3,7 @@ package com.epmet.dataaggre.service.epmetmessage; import com.epmet.dataaggre.dto.govorg.form.ReceiversFormDTO; import com.epmet.dataaggre.dto.govorg.result.ReceiversResultDTO; import com.epmet.dataaggre.dto.message.form.InfoGroupDetailFormDTO; +import com.epmet.dataaggre.dto.message.form.InfoIdDTO; import com.epmet.dataaggre.dto.message.form.InfoRepliesFormDTO; import com.epmet.dataaggre.dto.message.form.MySentFormDTO; import com.epmet.dataaggre.dto.message.result.*; @@ -80,4 +81,14 @@ public interface EpmetMessageService { * @date 2021/8/20 7:00 下午 */ List queryMyReceivedList(MySentFormDTO formDTO); + + /** + * 消息详情:我收到的,我发送的,通用 + * + * @param infoIdDTO + * @return com.epmet.dataaggre.dto.message.result.InfoDetailResDTO + * @author yinzuomei + * @date 2021/8/20 7:57 下午 + */ + InfoDetailResDTO queryInfoDetail(InfoIdDTO infoIdDTO); } diff --git a/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/epmetmessage/impl/EpmetMessageServiceImpl.java b/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/epmetmessage/impl/EpmetMessageServiceImpl.java index d31577edd5..df8653357b 100644 --- a/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/epmetmessage/impl/EpmetMessageServiceImpl.java +++ b/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/epmetmessage/impl/EpmetMessageServiceImpl.java @@ -16,6 +16,7 @@ import com.epmet.dataaggre.dto.govorg.ReceiverDTO; import com.epmet.dataaggre.dto.govorg.form.ReceiversFormDTO; import com.epmet.dataaggre.dto.govorg.result.ReceiversResultDTO; import com.epmet.dataaggre.dto.message.form.InfoGroupDetailFormDTO; +import com.epmet.dataaggre.dto.message.form.InfoIdDTO; import com.epmet.dataaggre.dto.message.form.InfoRepliesFormDTO; import com.epmet.dataaggre.dto.message.form.MySentFormDTO; import com.epmet.dataaggre.dto.message.result.*; @@ -221,7 +222,47 @@ public class EpmetMessageServiceImpl implements EpmetMessageService { public List queryMyReceivedList(MySentFormDTO formDTO) { PageInfo data = PageHelper.startPage(formDTO.getPageNo(), formDTO.getPageSize()) .doSelectPageInfo(() -> infoProfileDao.selectListMyReceived(formDTO.getUserId(),formDTO.getContent())); + CustomerStaffInfoCacheResult staffInfoCache = CustomerStaffRedis.getStaffInfo(formDTO.getCustomerId(), formDTO.getUserId()); + for(MyReceivedResDTO resDTO: data.getList()){ + resDTO.setHeadPhoto(StringUtils.isNotBlank(staffInfoCache.getHeadPhoto()) ? staffInfoCache.getHeadPhoto() : StrConstant.EPMETY_STR); + resDTO.setPublishStaffGender(String.valueOf(staffInfoCache.getGender())); + resDTO.setPublishStaffOrgName(staffInfoCache.getTwoOrgName()); + resDTO.setPublishStaffName(staffInfoCache.getRealName()); + } return data.getList(); } + /** + * 消息详情:我收到的,我发送的,通用 + * + * @param infoIdDTO + * @return com.epmet.dataaggre.dto.message.result.InfoDetailResDTO + * @author yinzuomei + * @date 2021/8/20 7:57 下午 + */ + @Override + public InfoDetailResDTO queryInfoDetail(InfoIdDTO infoIdDTO) { + InfoDetailResDTO resDTO=infoProfileDao.selectInfoDetail(infoIdDTO.getInfoId()); + if(null!=resDTO){ + if (resDTO.getPublishStaffId().equals(infoIdDTO.getUserId())) { + resDTO.setIsMine(true); + } else { + resDTO.setIsMine(false); + } + resDTO.setAttachmentList(infoProfileDao.selectInfoAtt(infoIdDTO.getInfoId())); + if(StringUtils.isNotBlank(resDTO.getPublishStaffId())){ + CustomerStaffInfoCacheResult publisher = CustomerStaffRedis.getStaffInfo(infoIdDTO.getCustomerId(), resDTO.getPublishStaffId()); + resDTO.setHeadPhoto(StringUtils.isNotBlank(publisher.getHeadPhoto()) ? publisher.getHeadPhoto() : StrConstant.EPMETY_STR); + resDTO.setPublishOrgName(publisher.getTwoOrgName()); + resDTO.setPublishStaffGender(publisher.getGender().toString()); + resDTO.setPublishStaffName(publisher.getRealName()); + } + if(StringUtils.isNotBlank(resDTO.getFirstReceiverStaffId())){ + CustomerStaffInfoCacheResult first = CustomerStaffRedis.getStaffInfo(infoIdDTO.getCustomerId(), resDTO.getFirstReceiverStaffId()); + resDTO.setFirstReceiverName(first.getRealName()); + } + } + return resDTO; + } + } diff --git a/epmet-module/data-aggregator/data-aggregator-server/src/main/resources/mapper/epmetmessage/InfoProfileDao.xml b/epmet-module/data-aggregator/data-aggregator-server/src/main/resources/mapper/epmetmessage/InfoProfileDao.xml index 3d0b8ab823..a899fc3372 100644 --- a/epmet-module/data-aggregator/data-aggregator-server/src/main/resources/mapper/epmetmessage/InfoProfileDao.xml +++ b/epmet-module/data-aggregator/data-aggregator-server/src/main/resources/mapper/epmetmessage/InfoProfileDao.xml @@ -11,12 +11,12 @@ - - - - - - + + + + + + @@ -29,12 +29,16 @@ ip.total_receiver, ip.read_total, ip.first_att_id, - IFNULL(ia.ATTACHMENT_NAME,'') AS name, - IFNULL(ia.ATTACHMENT_FORMAT,'') AS format, - IFNULL(ia.ATTACHMENT_TYPE,'') AS type, - IFNULL(ia.ATTACHMENT_URL,'') AS url, - IFNULL(ia.ATTACHMENT_SIZE,'') AS size, - IFNULL(ia.DURATION,'') AS duration + ia.ATTACHMENT_NAME AS name, + ia.ATTACHMENT_FORMAT AS format, + ia.ATTACHMENT_TYPE AS type, + ia.ATTACHMENT_URL AS url, + (case when ip.first_att_id is null or ip.first_att_id='' then null + else ia.ATTACHMENT_SIZE + end) as size, + (case when ip.first_att_id is null or ip.first_att_id='' then null + else ia.duration + end) as duration from info_profile ip inner join info i on(ip.INFO_ID=i.id) @@ -44,24 +48,24 @@ and i.DEL_FLAG='0' and i.publish_staff_id=#{publishStaffId} - i.content like concat('%',trim(#{content}),'%') + and i.content like concat('%',trim(#{content}),'%') order by i.CREATED_TIME desc - + - + - - - - - - + + + + + + + + + \ No newline at end of file diff --git a/epmet-module/data-aggregator/data-aggregator-server/src/main/resources/mapper/epmetmessage/InfoReceiversDao.xml b/epmet-module/data-aggregator/data-aggregator-server/src/main/resources/mapper/epmetmessage/InfoReceiversDao.xml index 52010a0236..e522a780b2 100644 --- a/epmet-module/data-aggregator/data-aggregator-server/src/main/resources/mapper/epmetmessage/InfoReceiversDao.xml +++ b/epmet-module/data-aggregator/data-aggregator-server/src/main/resources/mapper/epmetmessage/InfoReceiversDao.xml @@ -90,11 +90,19 @@