diff --git a/epmet-module/gov-issue/gov-issue-client/src/main/java/com/epmet/constant/IssueOpenConstant.java b/epmet-module/gov-issue/gov-issue-client/src/main/java/com/epmet/constant/IssueOpenConstant.java index 6d971c59d5..48a9cfc1f0 100644 --- a/epmet-module/gov-issue/gov-issue-client/src/main/java/com/epmet/constant/IssueOpenConstant.java +++ b/epmet-module/gov-issue/gov-issue-client/src/main/java/com/epmet/constant/IssueOpenConstant.java @@ -27,4 +27,9 @@ public interface IssueOpenConstant { * 议题解决类型-未解决 */ String ISSUE_UNRESOLVED = "unresolved"; + + /** + * 议题来源类型 eg:resi_topic + */ + String SOURCE_TYPE_RT="resi_topic"; } diff --git a/epmet-module/gov-issue/gov-issue-client/src/main/java/com/epmet/dto/IssueDTO.java b/epmet-module/gov-issue/gov-issue-client/src/main/java/com/epmet/dto/IssueDTO.java index 457a165fd6..960bf286a7 100644 --- a/epmet-module/gov-issue/gov-issue-client/src/main/java/com/epmet/dto/IssueDTO.java +++ b/epmet-module/gov-issue/gov-issue-client/src/main/java/com/epmet/dto/IssueDTO.java @@ -17,9 +17,10 @@ package com.epmet.dto; +import lombok.Data; + import java.io.Serializable; import java.util.Date; -import lombok.Data; /** @@ -143,4 +144,14 @@ public class IssueDTO implements Serializable { */ private Date updatedTime; + /** + * 转项目日期 (服务间调用日期一致性) 戳 + */ + private Long shiftedTimeStamp; + + /** + * 关闭日期 戳 + */ + private Long closedTimeStamp; + } \ No newline at end of file diff --git a/epmet-module/gov-issue/gov-issue-server/src/main/resources/mapper/IssueDao.xml b/epmet-module/gov-issue/gov-issue-server/src/main/resources/mapper/IssueDao.xml index f69fccd5f3..681242272c 100644 --- a/epmet-module/gov-issue/gov-issue-server/src/main/resources/mapper/IssueDao.xml +++ b/epmet-module/gov-issue/gov-issue-server/src/main/resources/mapper/IssueDao.xml @@ -391,12 +391,15 @@ WHERE i.DEL_FLAG = '0' AND i.ISSUE_STATUS = 'voting' AND i.CREATED_BY = #{userId} + ORDER BY i.CREATED_TIME DESC \ No newline at end of file diff --git a/epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/dto/member/result/ApplyingMemberResultDTO.java b/epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/dto/member/result/ApplyingMemberResultDTO.java index 881333be54..6374a9314b 100644 --- a/epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/dto/member/result/ApplyingMemberResultDTO.java +++ b/epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/dto/member/result/ApplyingMemberResultDTO.java @@ -3,6 +3,7 @@ package com.epmet.resi.group.dto.member.result; import lombok.Data; import java.io.Serializable; +import java.util.List; /** * @Description @@ -45,4 +46,9 @@ public class ApplyingMemberResultDTO implements Serializable { * 入群被拒 - rejected 、 */ private String status; + + /** + * 用户徽章Url列表 + */ + private List badgeList; } diff --git a/epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/dto/member/result/GroupMemberListResultDTO.java b/epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/dto/member/result/GroupMemberListResultDTO.java index a5f69fc7c3..b6aaf3b8db 100644 --- a/epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/dto/member/result/GroupMemberListResultDTO.java +++ b/epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/dto/member/result/GroupMemberListResultDTO.java @@ -4,6 +4,7 @@ import lombok.Data; import javax.validation.constraints.NotBlank; import java.io.Serializable; +import java.util.List; /** * @Description @@ -43,4 +44,9 @@ public class GroupMemberListResultDTO implements Serializable { * 审核通过 - approved、 已禁言 - silent */ private String status; + + /** + * 用户徽章列表 + */ + private List badgeList; } diff --git a/epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/dto/topic/result/MyTopicsResultDTO.java b/epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/dto/topic/result/MyTopicsResultDTO.java index fd08497c00..2a3573f726 100644 --- a/epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/dto/topic/result/MyTopicsResultDTO.java +++ b/epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/dto/topic/result/MyTopicsResultDTO.java @@ -9,6 +9,7 @@ public class MyTopicsResultDTO { private Long releaseTime; private String topicContent; private String releaseGroupName; + private String releaseGridId; private String releaseGridName; } diff --git a/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/member/service/impl/ResiGroupMemberServiceImpl.java b/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/member/service/impl/ResiGroupMemberServiceImpl.java index 318989299c..6c3b9ff19c 100644 --- a/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/member/service/impl/ResiGroupMemberServiceImpl.java +++ b/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/member/service/impl/ResiGroupMemberServiceImpl.java @@ -31,12 +31,10 @@ import com.epmet.commons.tools.page.PageData; import com.epmet.commons.tools.utils.ConvertUtils; import com.epmet.commons.tools.utils.Result; import com.epmet.constant.ReadFlagConstant; -import com.epmet.dto.form.UserMessageFormDTO; -import com.epmet.dto.form.UserResiInfoFormDTO; -import com.epmet.dto.form.UserResiInfoListFormDTO; -import com.epmet.dto.form.WxSubscribeMessageFormDTO; +import com.epmet.dto.form.*; import com.epmet.dto.result.UserResiInfoResultDTO; import com.epmet.feign.EpmetMessageOpenFeignClient; +import com.epmet.feign.EpmetUserOpenFeignClient; import com.epmet.modules.constant.GroupMemberConstant; import com.epmet.modules.constant.UserMessageConstant; import com.epmet.modules.feign.EpmetUserFeignClient; @@ -65,6 +63,7 @@ import com.epmet.resi.group.dto.member.GroupMemeberOperationDTO; import com.epmet.resi.group.dto.member.ResiGroupMemberDTO; import com.epmet.resi.group.dto.member.ResiGroupMemberInfoRedisDTO; import com.epmet.resi.group.dto.member.form.*; +import com.epmet.resi.group.dto.member.form.CommonGridIdListFormDTO; import com.epmet.resi.group.dto.member.result.ApplyingMemberResultDTO; import com.epmet.resi.group.dto.member.result.GridVotableCountResultDTO; import com.epmet.resi.group.dto.member.result.GroupMemberListResultDTO; @@ -75,10 +74,12 @@ import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import org.springframework.util.CollectionUtils; import java.text.DateFormat; import java.text.SimpleDateFormat; import java.util.*; +import java.util.stream.Collectors; /** * 群组成员关系表 @@ -118,6 +119,8 @@ public class ResiGroupMemberServiceImpl extends BaseServiceImpl page(Map params) { @@ -329,6 +332,24 @@ public class ResiGroupMemberServiceImpl extends BaseServiceImpl>> badgeR + = userOpenFeignClient.userShowBadge(new UserGroupFormDTO(group.getCustomerId(), userIdList)); + if(null != badgeR && badgeR.success() && null != badgeR.getData() && !badgeR.getData().isEmpty()){ + Map> map = badgeR.getData(); + list.forEach(member -> { + member.setBadgeList( + CollectionUtils.isEmpty(map.get(member.getUserId())) ? + Collections.EMPTY_LIST: + map.get(member.getUserId()).stream().map(UserBadgeUnitFormDTO :: getBadgeIcon).collect(Collectors.toList()) ); + }); + }else{ + list.forEach(member -> member.setBadgeList(Collections.EMPTY_LIST)); + } + } + return list; } @@ -368,6 +389,26 @@ public class ResiGroupMemberServiceImpl extends BaseServiceImpl>> badgeR + = userOpenFeignClient.userShowBadge(new UserGroupFormDTO(group.getCustomerId(), userIdList)); + if(null != badgeR && badgeR.success() && null != badgeR.getData() && !badgeR.getData().isEmpty()){ + Map> map = badgeR.getData(); + list.forEach(member -> { + member.setBadgeList( + CollectionUtils.isEmpty(map.get(member.getApplyUserId())) ? + Collections.EMPTY_LIST: + map.get(member.getApplyUserId()).stream().map(UserBadgeUnitFormDTO :: getBadgeIcon).collect(Collectors.toList()) ); + }); + }else{ + list.forEach(member -> member.setBadgeList(Collections.EMPTY_LIST)); + } + } + return list; } diff --git a/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/topic/service/impl/ResiTopicServiceImpl.java b/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/topic/service/impl/ResiTopicServiceImpl.java index 6e86d0221b..c4b77e453d 100644 --- a/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/topic/service/impl/ResiTopicServiceImpl.java +++ b/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/topic/service/impl/ResiTopicServiceImpl.java @@ -37,12 +37,15 @@ import com.epmet.commons.tools.utils.ConvertUtils; import com.epmet.commons.tools.utils.DateUtils; import com.epmet.commons.tools.utils.Result; import com.epmet.commons.tools.utils.ScanContentUtils; +import com.epmet.constant.OrgInfoConstant; import com.epmet.dto.CustomerGridDTO; import com.epmet.dto.form.*; import com.epmet.dto.result.CommonDataFilterResultDTO; import com.epmet.dto.result.IssueInitiatorResultDTO; +import com.epmet.dto.result.OrgInfoResultDTO; import com.epmet.dto.result.UserResiInfoResultDTO; import com.epmet.feign.EpmetUserOpenFeignClient; +import com.epmet.feign.GovOrgOpenFeignClient; import com.epmet.modules.constant.GroupMemberConstant; import com.epmet.modules.constant.ResiGroupRedisKeys; import com.epmet.modules.feign.EpmetUserFeignClient; @@ -141,6 +144,9 @@ public class ResiTopicServiceImpl extends BaseServiceImpl listMyTopics(String customerId, String userId, Integer pageNo, Integer pageSize) { PageHelper.startPage(pageNo, pageSize); List myTopics = resiTopicDao.listMyTopics(userId, customerId); - // todo 查询网格名称,赋值 + + HashMap gridIdAndNames = new HashMap<>(); + Set gridIds = myTopics.stream().map(c -> c.getReleaseGridId()).collect(Collectors.toSet()); + + OrgInfoFormDTO form = new OrgInfoFormDTO(); + form.setOrgType(OrgInfoConstant.GRID); + form.setOrgIds(new ArrayList<>(gridIds)); + Result> gridInfoResult = govOrgOpenFeignClient.selectOrgInfo(form); + if (gridInfoResult.success()) { + List grids = gridInfoResult.getData(); + for (OrgInfoResultDTO grid : grids) { + gridIdAndNames.put(grid.getOrgId(), grid.getOrgName()); + } + } + + for (MyTopicsResultDTO myTopic : myTopics) { + myTopic.setReleaseGridName(gridIdAndNames.get(myTopic.getReleaseGridId())); + } + return myTopics; } } diff --git a/epmet-module/resi-group/resi-group-server/src/main/resources/mapper/topic/ResiTopicDao.xml b/epmet-module/resi-group/resi-group-server/src/main/resources/mapper/topic/ResiTopicDao.xml index cf570c9eda..5678bda9ea 100644 --- a/epmet-module/resi-group/resi-group-server/src/main/resources/mapper/topic/ResiTopicDao.xml +++ b/epmet-module/resi-group/resi-group-server/src/main/resources/mapper/topic/ResiTopicDao.xml @@ -451,7 +451,8 @@ select t.id as topicId, t.topic_content as topicContent, unix_timestamp(t.created_time) as releaseTime, - g.GROUP_NAME as releaseGroupName + g.GROUP_NAME as releaseGroupName, + g.GRID_ID as releaseGridId from resi_topic t inner join resi_group g on (t.GROUP_ID = g.ID and g.CUSTOMER_ID = #{customerId}) where t.CREATED_BY = #{userId} diff --git a/epmet-module/resi-mine/resi-mine-server/src/main/java/com/epmet/modules/person/service/impl/IssueServiceImpl.java b/epmet-module/resi-mine/resi-mine-server/src/main/java/com/epmet/modules/person/service/impl/IssueServiceImpl.java index 2cb0181662..aaa6043612 100644 --- a/epmet-module/resi-mine/resi-mine-server/src/main/java/com/epmet/modules/person/service/impl/IssueServiceImpl.java +++ b/epmet-module/resi-mine/resi-mine-server/src/main/java/com/epmet/modules/person/service/impl/IssueServiceImpl.java @@ -5,18 +5,23 @@ import com.epmet.commons.tools.exception.RenException; import com.epmet.commons.tools.security.dto.TokenDto; import com.epmet.commons.tools.utils.Result; import com.epmet.constant.IssueOpenConstant; +import com.epmet.constant.OrgInfoConstant; import com.epmet.dto.IssueDTO; import com.epmet.dto.form.MyPartIssuesFormDTO; import com.epmet.dto.form.MyPubIssuesAuditingFormDTO; +import com.epmet.dto.form.OrgInfoFormDTO; import com.epmet.dto.result.*; import com.epmet.feign.GovIssueOpenFeignClient; import com.epmet.feign.GovOrgOpenFeignClient; import com.epmet.feign.GovProjectOpenFeignClient; import com.epmet.modules.person.service.IssueService; +import com.epmet.resi.group.dto.group.form.GroupInfoFormDTO; +import com.epmet.resi.group.dto.group.result.GroupInfoResultDTO; import com.epmet.resi.group.dto.topic.result.IssueGridResultDTO; import com.epmet.resi.group.feign.ResiGroupOpenFeignClient; import com.epmet.resi.mine.dto.from.MyPartProjectsFormDTO; import lombok.extern.slf4j.Slf4j; +import org.apache.commons.lang3.StringUtils; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.springframework.beans.factory.annotation.Autowired; @@ -169,7 +174,34 @@ public class IssueServiceImpl implements IssueService { if(null==issueResult||CollectionUtils.isEmpty(issueResult.getData())){ return new ArrayList<>(); } - //todo - return null; + //议题来源话题id集合 + List topicIds=new ArrayList<>(); + issueResult.getData().forEach(issueDTO ->{ + if(IssueOpenConstant.SOURCE_TYPE_RT.equals(issueDTO.getSourceType())&& StringUtils.isNotBlank(issueDTO.getSourceId())){ + topicIds.add(issueDTO.getSourceId()); + } + } ); + //查询网格名称 + Result> gridNameList = govOrgOpenFeignClient.selectOrgInfo(new OrgInfoFormDTO(OrgInfoConstant.GRID, issueResult.getData().stream().map(m -> m.getGridId()).collect(Collectors.toList()))); + if (!gridNameList.success()){ + logger.error("查询议题来源网格名称失败......"); + } + //查询话题来源小组名称 + Result> groupNameList = resiGroupOpenFeignClient.selectGroupInfo(new GroupInfoFormDTO(topicIds)); + if (!groupNameList.success()){ + logger.error("查询议题来源小组名称失败......"); + } + List resultDTOList=new ArrayList<>(); + for(IssueDTO issueDTO:issueResult.getData()){ + MyPubIssuesClosedResultDTO resultDTO=new MyPubIssuesClosedResultDTO(); + resultDTO.setIssueId(issueDTO.getId()); + resultDTO.setIssueTitle(issueDTO.getIssueTitle()); + resultDTO.setSuggestion(issueDTO.getSuggestion()); + resultDTO.setClosedTime(issueDTO.getClosedTimeStamp()); + gridNameList.getData().stream().filter(o -> issueDTO.getGridId().equals(o.getOrgId())).forEach(o -> resultDTO.setTopicReleaseGridName(o.getOrgName())); + groupNameList.getData().stream().filter(g -> issueDTO.getSourceId().equals(g.getTopicId())).forEach(g -> resultDTO.setTopicReleaseGroupName(g.getTopicGroupName())); + resultDTOList.add(resultDTO); + } + return resultDTOList; } } diff --git a/epmet-user/epmet-user-server/src/main/resources/db/migration/V0.0.7__add_useradvice.sql b/epmet-user/epmet-user-server/src/main/resources/db/migration/V0.0.7__add_useradvice.sql new file mode 100644 index 0000000000..e2e4c2cf9b --- /dev/null +++ b/epmet-user/epmet-user-server/src/main/resources/db/migration/V0.0.7__add_useradvice.sql @@ -0,0 +1,42 @@ +CREATE TABLE `user_advice` ( + `ID` varchar(64) NOT NULL COMMENT '主键', + `CUSTOMER_ID` varchar(64) NOT NULL COMMENT '客户ID', + `CUSTOMER_NAME` varchar(64) NOT NULL COMMENT '客户名', + `AGENCY_ID` varchar(64) NOT NULL COMMENT '组织ID', + `AGENCY_NAME` varchar(64) NOT NULL COMMENT '组织名', + `GRID_ID` varchar(64) NOT NULL COMMENT '网格ID', + `GRID_NAME` varchar(64) NOT NULL COMMENT '网格名', + `USER_ID` varchar(64) NOT NULL COMMENT 'userid', + `USER_NAME` varchar(32) NOT NULL COMMENT '用户姓名', + `REG_PHONE` varchar(32) NOT NULL COMMENT '用户注册手机号', + `ADVICE_CONTENT` varchar(500) NOT NULL COMMENT '建议描述', + `PHONE` varchar(32) DEFAULT NULL COMMENT '填写手机号', + `ADVICE_TIME` datetime NOT NULL COMMENT '建议时间', + `ADVICE_TYPE` varchar(32) DEFAULT NULL COMMENT '问题分类(gov政府software软件,逗号分隔)', + `REPLY_CONTENT` varchar(500) DEFAULT NULL COMMENT '回复内容', + `REPLY_USER_ID` varchar(64) DEFAULT NULL COMMENT '回复人id', + `REPLY_USER_NAME` varchar(32) DEFAULT NULL COMMENT '回复人姓名', + `REPLY_TIME` datetime DEFAULT NULL COMMENT '回复时间', + `GOV_CONTENT` varchar(500) DEFAULT NULL COMMENT '政府存证文字', + `DEL_FLAG` varchar(1) NOT NULL COMMENT '删除标志', + `REVISION` int(11) NOT NULL COMMENT '乐观锁', + `CREATED_BY` varchar(64) NOT NULL COMMENT '创建人', + `CREATED_TIME` datetime NOT NULL COMMENT '创建时间', + `UPDATED_BY` varchar(64) NOT NULL COMMENT '更新人', + `UPDATED_TIME` datetime NOT NULL COMMENT '更新时间', + PRIMARY KEY (`ID`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='用户建议表'; + +CREATE TABLE `user_advice_img` ( + `ID` varchar(64) NOT NULL COMMENT '主键', + `ADVICE_ID` varchar(64) NOT NULL COMMENT '建议id', + `TYPE` varchar(10) NOT NULL COMMENT '图片类型,resi是用户上传的建议图片,oper是运营上传的代替政府回复的存证', + `IMG_URL` varchar(255) NOT NULL COMMENT '图片url', + `DEL_FLAG` varchar(1) NOT NULL COMMENT '删除标志', + `REVISION` int(11) NOT NULL COMMENT '乐观锁', + `CREATED_BY` varchar(64) NOT NULL COMMENT '创建人', + `CREATED_TIME` datetime NOT NULL COMMENT '创建时间', + `UPDATED_BY` varchar(64) NOT NULL COMMENT '更新人', + `UPDATED_TIME` datetime NOT NULL COMMENT '更新时间', + PRIMARY KEY (`ID`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='用户建议图片';