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='用户建议图片';