From 6d43bc53d9315f6951524783584aa8aee3ee0c12 Mon Sep 17 00:00:00 2001 From: zhaoqifeng Date: Thu, 2 Feb 2023 10:03:07 +0800 Subject: [PATCH] =?UTF-8?q?=E7=83=9F=E5=8F=B0=E6=A5=BC=E9=99=A2=E5=B0=8F?= =?UTF-8?q?=E7=BB=84=E5=8A=9F=E8=83=BD=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../dto/topic/form/YtTopicPageFormDTO.java | 31 +++++++++++++- .../topic/result/YtTopicDetailResultDTO.java | 2 +- .../topic/result/YtTopicInfoResultDTO.java | 1 + .../topic/controller/YtTopicController.java | 7 +++- .../modules/topic/entity/YtTopicEntity.java | 10 +++++ .../service/impl/YtTopicServiceImpl.java | 29 +++++++++++++- .../db/migration/V0.0.28__yt_topic.sql | 2 + .../resources/mapper/topic/YtTopicDao.xml | 40 +++++++++++++------ 8 files changed, 105 insertions(+), 17 deletions(-) diff --git a/epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/dto/topic/form/YtTopicPageFormDTO.java b/epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/dto/topic/form/YtTopicPageFormDTO.java index 45a77a1c6f..b0649e5cc8 100644 --- a/epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/dto/topic/form/YtTopicPageFormDTO.java +++ b/epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/dto/topic/form/YtTopicPageFormDTO.java @@ -13,9 +13,13 @@ import java.io.Serializable; public class YtTopicPageFormDTO extends PageFormDTO implements Serializable{ private static final long serialVersionUID = 1L; + /** + * 组织Id + * */ + private String agencyId; /** - * 组Id + * 网格Id,source是居民端时必填 * */ @NotBlank(message = "网格Id不能为空") private String gridId; @@ -29,4 +33,29 @@ public class YtTopicPageFormDTO extends PageFormDTO implements Serializable{ * 用户Id * */ private String userId; + + /** + * 请求来源0 居民端,1 PC端 + * */ + private String source; + + /** + * 话题内容 + * */ + private String topicContent; + + /** + * 话题发表人 + * */ + private String userName; + + /** + * 发布时间 + * */ + private String startDate; + + /** + * 发布时间 + * */ + private String endDate; } diff --git a/epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/dto/topic/result/YtTopicDetailResultDTO.java b/epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/dto/topic/result/YtTopicDetailResultDTO.java index 955d88532a..6b3aaed414 100644 --- a/epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/dto/topic/result/YtTopicDetailResultDTO.java +++ b/epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/dto/topic/result/YtTopicDetailResultDTO.java @@ -81,5 +81,5 @@ public class YtTopicDetailResultDTO implements Serializable { * 投票反对数 * */ private String oppositionCount; - + private String userName; } diff --git a/epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/dto/topic/result/YtTopicInfoResultDTO.java b/epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/dto/topic/result/YtTopicInfoResultDTO.java index 4cc58aca38..b6f346b1f2 100644 --- a/epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/dto/topic/result/YtTopicInfoResultDTO.java +++ b/epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/dto/topic/result/YtTopicInfoResultDTO.java @@ -29,6 +29,7 @@ public class YtTopicInfoResultDTO implements Serializable { * 发布人名称 * */ private String releaseUserName; + private String userName; /** * 发布人头像 diff --git a/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/topic/controller/YtTopicController.java b/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/topic/controller/YtTopicController.java index 1e6ddcf394..ab324cb1b3 100644 --- a/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/topic/controller/YtTopicController.java +++ b/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/topic/controller/YtTopicController.java @@ -1,7 +1,9 @@ package com.epmet.modules.topic.controller; import com.epmet.commons.tools.annotation.LoginUser; +import com.epmet.commons.tools.annotation.MaskResponse; import com.epmet.commons.tools.aop.NoRepeatSubmit; +import com.epmet.commons.tools.constant.NumConstant; import com.epmet.commons.tools.page.PageData; import com.epmet.commons.tools.security.dto.TokenDto; import com.epmet.commons.tools.utils.Result; @@ -76,9 +78,12 @@ public class YtTopicController { * @Date 2023/1/30 16:55 */ @PostMapping("topicList") + @MaskResponse(fieldNames = "userName", fieldsMaskType = {MaskResponse.MASK_TYPE_CHINESE_NAME}) public Result> getTopicList(@LoginUser TokenDto tokenDto, @RequestBody YtTopicPageFormDTO topicPageFormDTO) { topicPageFormDTO.setUserId(tokenDto.getUserId()); - ValidatorUtils.validateEntity(topicPageFormDTO); + if (NumConstant.ZERO_STR.equals(topicPageFormDTO.getSource())) { + ValidatorUtils.validateEntity(topicPageFormDTO); + } return new Result>().ok(ytTopicService.getTopicList(tokenDto, topicPageFormDTO)); } diff --git a/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/topic/entity/YtTopicEntity.java b/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/topic/entity/YtTopicEntity.java index 6ccb37a2c8..df7773368d 100644 --- a/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/topic/entity/YtTopicEntity.java +++ b/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/topic/entity/YtTopicEntity.java @@ -28,6 +28,11 @@ public class YtTopicEntity extends BaseEpmetEntity { */ private String gridId; + /** + * 网格所有上级组织ID + */ + private String pids; + /** * */ @@ -88,4 +93,9 @@ public class YtTopicEntity extends BaseEpmetEntity { */ private String locateLatitude; + /** + * 话题发表人姓名 + */ + private String userName; + } diff --git a/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/topic/service/impl/YtTopicServiceImpl.java b/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/topic/service/impl/YtTopicServiceImpl.java index 36d148cfc3..a2e4681dec 100644 --- a/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/topic/service/impl/YtTopicServiceImpl.java +++ b/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/topic/service/impl/YtTopicServiceImpl.java @@ -3,10 +3,14 @@ package com.epmet.modules.topic.service.impl; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.epmet.commons.mybatis.service.impl.BaseServiceImpl; import com.epmet.commons.tools.constant.NumConstant; +import com.epmet.commons.tools.dto.result.CustomerStaffInfoCacheResult; import com.epmet.commons.tools.exception.EpmetErrorCode; import com.epmet.commons.tools.exception.EpmetException; import com.epmet.commons.tools.page.PageData; +import com.epmet.commons.tools.redis.common.CustomerOrgRedis; import com.epmet.commons.tools.redis.common.CustomerResiUserRedis; +import com.epmet.commons.tools.redis.common.CustomerStaffRedis; +import com.epmet.commons.tools.redis.common.bean.GridInfoCache; import com.epmet.commons.tools.redis.common.bean.ResiUserInfoCache; import com.epmet.commons.tools.security.dto.TokenDto; import com.epmet.commons.tools.utils.ConvertUtils; @@ -71,20 +75,31 @@ public class YtTopicServiceImpl extends BaseServiceImpl TopicConstant.MAX_NUMBER_OF_CONTENT){ //内容超过最大限制 log.error(ModuleConstant.TOPIC_CONTENT_NUMBER_OF_WORDS_EXCEEDED); throw new EpmetException(ModuleConstant.TOPIC_CONTENT_NUMBER_OF_WORDS_EXCEEDED); } - + //1.保存话题 YtTopicEntity topic = ConvertUtils.sourceToTarget(formDTO, YtTopicEntity.class); //如果只有语音,则话题内容为语音话题 if (CollectionUtils.isNotEmpty(formDTO.getVoiceList()) && StringUtils.isBlank(formDTO.getTopicContent())) { topic.setTopicContent("语音话题"); } + GridInfoCache gridInfo = CustomerOrgRedis.getGridInfo(formDTO.getGridId()); + if (null == gridInfo) { + String msg = "获取网格信息失败"; + throw new EpmetException(EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(), msg, msg); + } + ResiUserInfoCache userInfo = CustomerResiUserRedis.getUserBaseInfo(tokenDto.getUserId()); + if (null == userInfo) { + String msg = "获取用户信息失败"; + throw new EpmetException(EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(), msg, msg); + } topic.setCustomerId(tokenDto.getCustomerId()); topic.setStatus(TopicConstant.PUBLISHMENT); + topic.setPids(gridInfo.getPids()); + topic.setUserName(userInfo.getRealName()); baseDao.insert(topic); //保存图片附件 @@ -217,6 +232,16 @@ public class YtTopicServiceImpl extends BaseServiceImpl getTopicList(TokenDto tokenDto, YtTopicPageFormDTO topicPageFormDTO) { + if (NumConstant.ONE_STR.equals(topicPageFormDTO.getSource())) { + if (StringUtils.isBlank(topicPageFormDTO.getGridId())) { + CustomerStaffInfoCacheResult staffInfo = CustomerStaffRedis.getStaffInfo(tokenDto.getCustomerId(), tokenDto.getUserId()); + if (null == staffInfo) { + String msg = "获取工作人员信息失败"; + throw new EpmetException(EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(), msg, msg); + } + topicPageFormDTO.setAgencyId(staffInfo.getAgencyId()); + } + } PageMethod.startPage(topicPageFormDTO.getPageNo(), topicPageFormDTO.getPageSize()); List list = baseDao.selectTopicList(topicPageFormDTO); PageInfo pageInfo = new PageInfo<>(list); diff --git a/epmet-module/resi-group/resi-group-server/src/main/resources/db/migration/V0.0.28__yt_topic.sql b/epmet-module/resi-group/resi-group-server/src/main/resources/db/migration/V0.0.28__yt_topic.sql index 93d13f692f..d73eeef70f 100644 --- a/epmet-module/resi-group/resi-group-server/src/main/resources/db/migration/V0.0.28__yt_topic.sql +++ b/epmet-module/resi-group/resi-group-server/src/main/resources/db/migration/V0.0.28__yt_topic.sql @@ -2,6 +2,7 @@ CREATE TABLE `yt_topic` ( `ID` varchar(64) NOT NULL COMMENT '主键', `CUSTOMER_ID` varchar(64) DEFAULT NULL COMMENT '客户ID', `GRID_ID` varchar(64) DEFAULT NULL COMMENT '网格ID', + `PIDS` varchar(255) DEFAULT NULL COMMENT '网格所有上级组织ID', `TOPIC_CONTENT` text COMMENT '话题内容', `STATUS` varchar(32) NOT NULL COMMENT '话题状态(讨论中 - discussing、 已屏蔽 - hidden、 已关闭 - closed)', `CLOSED_STATUS` varchar(32) DEFAULT NULL COMMENT '关闭状态:已解决 resolved,未解决 unresolved', @@ -14,6 +15,7 @@ CREATE TABLE `yt_topic` ( `LOCATE_ADDRESS` varchar(255) DEFAULT NULL COMMENT '定位地址', `LOCATE_LONGITUDE` varchar(32) DEFAULT NULL COMMENT '定位经度', `LOCATE_LATITUDE` varchar(32) DEFAULT NULL COMMENT '定位维度', + `USER_NAME` varchar(20) DEFAULT NULL COMMENT '话题发表人姓名', `DEL_FLAG` varchar(1) NOT NULL COMMENT '删除标记 0:未删除,1:已删除', `REVISION` int(11) NOT NULL COMMENT '乐观锁', `CREATED_BY` varchar(32) NOT NULL COMMENT '创建人,发布人Id来源于user', diff --git a/epmet-module/resi-group/resi-group-server/src/main/resources/mapper/topic/YtTopicDao.xml b/epmet-module/resi-group/resi-group-server/src/main/resources/mapper/topic/YtTopicDao.xml index 3abcced9d6..46087bf06a 100644 --- a/epmet-module/resi-group/resi-group-server/src/main/resources/mapper/topic/YtTopicDao.xml +++ b/epmet-module/resi-group/resi-group-server/src/main/resources/mapper/topic/YtTopicDao.xml @@ -2,18 +2,34 @@ - + SELECT ID AS topicId, + TOPIC_CONTENT, + STATUS, + USER_NAME, + CREATED_BY AS userId, + CREATED_TIME AS releaseTime + FROM yt_topic + WHERE + DEL_FLAG = '0' + + AND PIDS LIKE CONCAT('%', #{agencyId}, '%') + + + AND GRID_ID = #{gridId} + + + AND TOPIC_CONTENT LIKE CONCAT('%', #{topicContent}, '%') + + + AND USER_NAME LIKE CONCAT('%', #{userName}, '%') + + + AND DATE_FORMAT(CREATED_TIME, "%Y-%m-%d") >= #{startDate} + + + AND DATE_FORMAT(CREATED_TIME, "%Y-%m-%d") <= #{endDate} + ORDER BY CREATED_TIME DESC \ No newline at end of file