Browse Source

Merge remote-tracking branch 'origin/dev_personal_center' into dev_personal_center

dev_shibei_match
jianjun 5 years ago
parent
commit
ff7a3abb01
  1. 8
      epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/constant/AppClientConstant.java
  2. 5
      epmet-module/gov-issue/gov-issue-client/src/main/java/com/epmet/constant/IssueOpenConstant.java
  3. 17
      epmet-module/gov-issue/gov-issue-client/src/main/java/com/epmet/dto/IssueDTO.java
  4. 2
      epmet-module/gov-issue/gov-issue-client/src/main/java/com/epmet/dto/result/IssueProjectResultDTO.java
  5. 5
      epmet-module/gov-issue/gov-issue-client/src/main/java/com/epmet/feign/GovIssueOpenFeignClient.java
  6. 14
      epmet-module/gov-issue/gov-issue-server/src/main/resources/mapper/IssueDao.xml
  7. 1
      epmet-module/gov-issue/gov-issue-server/src/main/resources/mapper/IssueVoteDetailDao.xml
  8. 8
      epmet-module/gov-project/gov-project-client/src/main/java/com/epmet/dto/ProjectDTO.java
  9. 10
      epmet-module/gov-project/gov-project-client/src/main/java/com/epmet/dto/ProjectRelatedPersonnelDTO.java
  10. 11
      epmet-module/gov-project/gov-project-client/src/main/java/com/epmet/feign/GovProjectOpenFeignClient.java
  11. 13
      epmet-module/gov-project/gov-project-client/src/main/java/com/epmet/feign/fallback/GovProjectOpenFeignClientFallback.java
  12. 10
      epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/controller/ProjectController.java
  13. 10
      epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/entity/ProjectRelatedPersonnelEntity.java
  14. 6
      epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/excel/ProjectRelatedPersonnelExcel.java
  15. 3
      epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/ProjectService.java
  16. 47
      epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/impl/ProjectServiceImpl.java
  17. 5
      epmet-module/gov-project/gov-project-server/src/main/resources/db/migration/V0.0.4__alter_project_related_personnel.sql
  18. 6
      epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/dto/member/result/ApplyingMemberResultDTO.java
  19. 6
      epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/dto/member/result/GroupMemberListResultDTO.java
  20. 30
      epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/dto/topic/form/CustomerPageFormDTO.java
  21. 1
      epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/dto/topic/result/MyTopicsResultDTO.java
  22. 26
      epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/dto/topic/result/ParticipatedTopicUnitResultDTO.java
  23. 11
      epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/feign/ResiGroupOpenFeignClient.java
  24. 7
      epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/feign/fallback/ResiGroupOpenFeignClientFallback.java
  25. 49
      epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/member/service/impl/ResiGroupMemberServiceImpl.java
  26. 13
      epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/topic/controller/ResiTopicController.java
  27. 9
      epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/topic/dao/ResiTopicDao.java
  28. 9
      epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/topic/service/ResiTopicService.java
  29. 53
      epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/topic/service/impl/ResiTopicServiceImpl.java
  30. 24
      epmet-module/resi-group/resi-group-server/src/main/resources/mapper/topic/ResiTopicDao.xml
  31. 86
      epmet-module/resi-mine/resi-mine-server/src/main/java/com/epmet/modules/person/service/impl/IssueServiceImpl.java
  32. 42
      epmet-user/epmet-user-server/src/main/resources/db/migration/V0.0.7__add_useradvice.sql

8
epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/constant/AppClientConstant.java

@ -54,4 +54,12 @@ public interface AppClientConstant {
* app类型-工作端
*/
String APP_WORK = "work";
/**
* 来源类型-话题topic
*/
String TOPIC = "topic";
/**
* 来源类型-议题issue
*/
String ISSUE = "issue";
}

5
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";
}

17
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,18 @@ public class IssueDTO implements Serializable {
*/
private Date updatedTime;
/**
* 转项目日期 服务间调用日期一致性
*/
private Long shiftedTimeStamp;
/**
* 关闭日期
*/
private Long closedTimeStamp;
/**
* 议题转项目后-对应的项目id
*/
private String projectId;
}

2
epmet-module/gov-issue/gov-issue-client/src/main/java/com/epmet/dto/result/IssueProjectResultDTO.java

@ -1,6 +1,7 @@
package com.epmet.dto.result;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;
import java.io.Serializable;
@ -26,6 +27,7 @@ public class IssueProjectResultDTO implements Serializable {
/**
* 议题转项目时间(项目表创建时间)
*/
@JsonFormat
private Date shiftedTime;
}

5
epmet-module/gov-issue/gov-issue-client/src/main/java/com/epmet/feign/GovIssueOpenFeignClient.java

@ -7,9 +7,6 @@ import com.epmet.dto.form.MyPartIssuesFormDTO;
import com.epmet.dto.form.MyPubIssuesAuditingFormDTO;
import com.epmet.dto.result.MyPartIssuesResultDTO;
import com.epmet.dto.result.MyPubIssuesAuditingResultDTO;
import org.springframework.cloud.openfeign.FeignClient;
import com.epmet.commons.tools.constant.ServiceConstant;
import com.epmet.feign.fallback.GovIssueOpenFeignClientFallBack;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.http.MediaType;
@ -25,7 +22,7 @@ import java.util.List;
* @date 2020/6/4 13:37
*/
@FeignClient(name = ServiceConstant.GOV_ISSUE_SERVER, fallback = GovIssueOpenFeignClientFallBack.class)
//@FeignClient(name = ServiceConstant.GOV_ISSUE_SERVER, fallback = GovIssueOpenFeignClientFallBack.class,url = "localhost:8101")
// @FeignClient(name = ServiceConstant.GOV_ISSUE_SERVER, fallback = GovIssueOpenFeignClientFallBack.class,url = "localhost:8101")
public interface GovIssueOpenFeignClient {
/**

14
epmet-module/gov-issue/gov-issue-server/src/main/resources/mapper/IssueDao.xml

@ -391,25 +391,31 @@
WHERE i.DEL_FLAG = '0'
AND i.ISSUE_STATUS = 'voting'
AND i.CREATED_BY = #{userId}
ORDER BY i.CREATED_TIME DESC
</select>
<!-- 查询我发起的议题(可根据状态查询)-->
<select id="selectMyPubIssues" parameterType="map" resultType="com.epmet.dto.IssueDTO">
SELECT
*
i.*,
UNIX_TIMESTAMP(i.CLOSED_TIME) AS closedTimeStamp,
UNIX_TIMESTAMP(i.SHIFTED_TIME) AS shiftedTimeStamp,
m.PROJECT_ID
FROM
issue i
left join issue_project_relation m
on(i.id=m.ISSUE_ID and m.del_flag='0')
WHERE
i.DEL_FLAG = '0'
AND i.CREATED_BY = #{userId}
<if test ='null != issueStatus and "" != issueStatus'>
and i.ISSUE_STATUS=#{issueStatus}
</if>
<if test ='"shift_project" == issueStatus'>
<if test="issueStatus == 'shift_project'">
ORDER BY
i.SHIFTED_TIME DESC
m.CREATED_TIME DESC
</if>
<if test ='"closed" == issueStatus'>
<if test="issueStatus == 'closed'">
ORDER BY
i.CLOSED_TIME DESC
</if>

1
epmet-module/gov-issue/gov-issue-server/src/main/resources/mapper/IssueVoteDetailDao.xml

@ -85,5 +85,6 @@
WHERE i.DEL_FLAG = '0'
AND vd.DEL_FLAG = '0'
AND vd.CREATED_BY = #{userId}
ORDER BY i.CREATED_TIME DESC
</select>
</mapper>

8
epmet-module/gov-project/gov-project-client/src/main/java/com/epmet/dto/ProjectDTO.java

@ -17,9 +17,11 @@
package com.epmet.dto;
import lombok.Data;
import java.io.Serializable;
import java.util.Date;
import lombok.Data;
import java.util.List;
/**
@ -113,4 +115,8 @@ public class ProjectDTO implements Serializable {
*/
private Date updatedTime;
/**
* 当前处理部门名称列表
*/
private List<String> currentDepartmentNameList;
}

10
epmet-module/gov-project/gov-project-client/src/main/java/com/epmet/dto/ProjectRelatedPersonnelDTO.java

@ -58,6 +58,16 @@ public class ProjectRelatedPersonnelDTO implements Serializable {
*/
private String userId;
/**
* 来源类型(话题:topic 议题:issue)
*/
private String sourceType;
/**
* 来源Id(话题或议题Id)
*/
private String sourceId;
/**
* 删除标识
*/

11
epmet-module/gov-project/gov-project-client/src/main/java/com/epmet/feign/GovProjectOpenFeignClient.java

@ -22,6 +22,7 @@ import java.util.List;
* @author yinzuomei@elink-cn.com
* @date 2020/6/4 13:32
*/
// @FeignClient(name = ServiceConstant.GOV_PROJECT_SERVER, fallback = GovProjectOpenFeignClientFallback.class,url = "localhost:8102")
@FeignClient(name = ServiceConstant.GOV_PROJECT_SERVER, fallback = GovProjectOpenFeignClientFallback.class)
public interface GovProjectOpenFeignClient {
/**
@ -53,4 +54,14 @@ public interface GovProjectOpenFeignClient {
*/
@PostMapping("gov/project/project/issuetoprojectlist")
Result<List<MyPartProjectsResultDTO>> issueToProjectList(MyPartProjectsFormDTO formDTO);
/**
* @return com.epmet.commons.tools.utils.Result<java.util.List<com.epmet.dto.ProjectDTO>>
* @param projectIds 项目id数组
* @author yinzuomei
* @description 根据项目id查询项目基本信息
* @Date 2020/11/11 17:40
**/
@PostMapping("gov/project/project/queryprojectinfobyids")
Result<List<ProjectDTO>> queryProjectInfoByIds(@RequestBody List<String> projectIds);
}

13
epmet-module/gov-project/gov-project-client/src/main/java/com/epmet/feign/fallback/GovProjectOpenFeignClientFallback.java

@ -9,7 +9,6 @@ import com.epmet.dto.form.ProjectListFromDTO;
import com.epmet.dto.result.MyPartProjectsResultDTO;
import com.epmet.dto.result.PendProjectListResultDTO;
import com.epmet.dto.result.ProcessAndCurrentDeptResultDTO;
import com.epmet.dto.result.ProcesslistResultDTO;
import com.epmet.feign.GovProjectOpenFeignClient;
import com.epmet.resi.mine.dto.from.MyPartProjectsFormDTO;
import org.springframework.stereotype.Component;
@ -51,4 +50,16 @@ public class GovProjectOpenFeignClientFallback implements GovProjectOpenFeignCli
public Result<List<MyPartProjectsResultDTO>> issueToProjectList(MyPartProjectsFormDTO formDTO) {
return ModuleUtils.feignConError(ServiceConstant.GOV_PROJECT_SERVER, "issueToProjectList", formDTO);
}
/**
* @param projectIds 项目id数组
* @return com.epmet.commons.tools.utils.Result<java.util.List < com.epmet.dto.ProjectDTO>>
* @author yinzuomei
* @description 根据项目id查询项目基本信息
* @Date 2020/11/11 17:40
**/
@Override
public Result<List<ProjectDTO>> queryProjectInfoByIds(List<String> projectIds) {
return ModuleUtils.feignConError(ServiceConstant.GOV_PROJECT_SERVER, "queryProjectInfoByIds", projectIds);
}
}

10
epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/controller/ProjectController.java

@ -17,18 +17,14 @@
package com.epmet.controller;
import com.epmet.commons.tools.annotation.LoginUser;
import com.epmet.commons.tools.annotation.RequirePermission;
import com.epmet.commons.tools.enums.RequirePermissionEnum;
import com.epmet.commons.tools.page.PageData;
import com.epmet.commons.tools.security.dto.TokenDto;
import com.epmet.commons.tools.utils.ExcelUtils;
import com.epmet.commons.tools.utils.Result;
import com.epmet.commons.tools.validator.AssertUtils;
import com.epmet.commons.tools.validator.ValidatorUtils;
import com.epmet.commons.tools.validator.group.AddGroup;
import com.epmet.commons.tools.validator.group.UpdateGroup;
import com.epmet.commons.tools.validator.group.DefaultGroup;
import com.epmet.commons.tools.validator.group.UpdateGroup;
import com.epmet.dto.ProjectDTO;
import com.epmet.dto.form.LatestListFormDTO;
import com.epmet.dto.form.ProjectListFromDTO;
@ -192,4 +188,8 @@ public class ProjectController {
return new Result<List<MyPartProjectsResultDTO>>().ok(projectService.issueToProjectList(formDTO));
}
@PostMapping("queryprojectinfobyids")
public Result<List<ProjectDTO>> queryProjectInfoByIds(@RequestBody List<String> projectIds){
return new Result<List<ProjectDTO>>().ok(projectService.queryProjectInfoByIds(projectIds));
}
}

10
epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/entity/ProjectRelatedPersonnelEntity.java

@ -58,4 +58,14 @@ public class ProjectRelatedPersonnelEntity extends BaseEpmetEntity {
*/
private String userId;
/**
* 来源类型(话题:topic 议题:issue)
*/
private String sourceType;
/**
* 来源Id(话题或议题Id)
*/
private String sourceId;
}

6
epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/excel/ProjectRelatedPersonnelExcel.java

@ -46,6 +46,12 @@ public class ProjectRelatedPersonnelExcel {
@Excel(name = "用户ID")
private String userId;
@Excel(name = "来源类型")
private String sourceType;
@Excel(name = "来源ID")
private String sourceId;
@Excel(name = "删除标识")
private String delFlag;

3
epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/ProjectService.java

@ -19,7 +19,6 @@ package com.epmet.service;
import com.epmet.commons.mybatis.service.BaseService;
import com.epmet.commons.tools.page.PageData;
import com.epmet.commons.tools.security.dto.TokenDto;
import com.epmet.dto.ProjectDTO;
import com.epmet.dto.form.*;
import com.epmet.dto.result.*;
@ -224,4 +223,6 @@ public interface ProjectService extends BaseService<ProjectEntity> {
* @Description 根据议题Id集合查询对应的项目信息
**/
List<MyPartProjectsResultDTO> issueToProjectList(MyPartProjectsFormDTO formDTO);
List<ProjectDTO> queryProjectInfoByIds(List<String> projectIds);
}

47
epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/impl/ProjectServiceImpl.java

@ -688,6 +688,18 @@ public class ProjectServiceImpl extends BaseServiceImpl<ProjectDao, ProjectEntit
return detentionDays.getData().get(NumConstant.ZERO).getDetentionDays();
}
/**
* @param formDTO
* @return
* @Author sun
* @Description 获取客户下已结案项目列表按结案时间倒序(结案时间结案说明处理部门)
**/
@Override
public List<LatestListResultDTO> getClosedProjectList(LatestListFormDTO formDTO) {
return baseDao.selectClosedProjectList(formDTO);
}
/**
* @param formDTO
* @return
@ -804,7 +816,7 @@ public class ProjectServiceImpl extends BaseServiceImpl<ProjectDao, ProjectEntit
//7:初始化机关-项目时间关联数据
Date current = new Date();
Date current = new Date();
List<String> projectStaffIds = entityList.stream().map(ProjectStaffEntity::getId).distinct().collect(Collectors.toList());
if(!CollectionUtils.isEmpty(projectStaffIds)){
List<ProjectOrgRelationEntity> container = new LinkedList<>();
@ -827,8 +839,12 @@ public class ProjectServiceImpl extends BaseServiceImpl<ProjectDao, ProjectEntit
entity1.setApp(AppClientConstant.APP_RESI);
entity1.setGridId(issueDTO.getGridId());
entity1.setUserId(formDTO.getTopicDTO().getCreatedBy());
entity1.setSourceType(AppClientConstant.TOPIC);
entity1.setSourceId(formDTO.getTopicDTO().getId());
ProjectRelatedPersonnelEntity entity2 = ConvertUtils.sourceToTarget(entity1,ProjectRelatedPersonnelEntity.class);
entity2.setUserId(issueDTO.getCreatedBy());
entity2.setSourceType(AppClientConstant.ISSUE);
entity2.setSourceId(issueDTO.getId());
list.add(entity1);
list.add(entity2);
projectRelatedPersonnelService.insertBatch(list);
@ -842,18 +858,6 @@ public class ProjectServiceImpl extends BaseServiceImpl<ProjectDao, ProjectEntit
return issueProjectResultDTO;
}
/**
* @param formDTO
* @return
* @Author sun
* @Description 获取客户下已结案项目列表按结案时间倒序(结案时间结案说明处理部门)
**/
@Override
public List<LatestListResultDTO> getClosedProjectList(LatestListFormDTO formDTO) {
return baseDao.selectClosedProjectList(formDTO);
}
@Override
public void response(ProjectResponseFormDTO formDTO) {
//公开回复内容审核
@ -1388,4 +1392,21 @@ public class ProjectServiceImpl extends BaseServiceImpl<ProjectDao, ProjectEntit
return list;
}
@Override
public List<ProjectDTO> queryProjectInfoByIds(List<String> projectIds) {
List<ProjectEntity> entityList=baseDao.selectBatchIds(projectIds);
List<ProjectDTO> projectDTOList=ConvertUtils.sourceToTarget(entityList, ProjectDTO.class);
//2.使用已有方法查询项目当前处理部门信息
projectDTOList.forEach(l -> {
if (ProjectConstant.CLOSED.equals(l.getStatus())) {
l.setCurrentDepartmentNameList(new ArrayList<String>());
} else {
ProjectDTO dto = new ProjectDTO();
dto.setId(l.getId());
l.setCurrentDepartmentNameList(baseDao.selectDepartmentNameList(dto));
}
});
return projectDTOList;
}
}

5
epmet-module/gov-project/gov-project-server/src/main/resources/db/migration/V0.0.4__alter_project_related_personnel.sql

@ -0,0 +1,5 @@
ALTER TABLE `project_related_personnel` ADD COLUMN `SOURCE_TYPE` VARCHAR (32) CHARACTER
SET utf8mb4 COLLATE utf8mb4_general_ci NULL COMMENT '来源类型(话题:topic 议题:issue)' AFTER `GRID_ID`,
ADD COLUMN `SOURCE_ID` VARCHAR (64) CHARACTER
SET utf8mb4 COLLATE utf8mb4_general_ci NULL COMMENT '来源Id(话题或议题Id)' AFTER `SOURCE_TYPE`;

6
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<String> badgeList;
}

6
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<String> badgeList;
}

30
epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/dto/topic/form/CustomerPageFormDTO.java

@ -0,0 +1,30 @@
package com.epmet.resi.group.dto.topic.form;
import lombok.Data;
import javax.validation.constraints.Min;
import javax.validation.constraints.NotBlank;
import java.io.Serializable;
/**
* @Description 客户Id 用户Id 分页
* @ClassName CustomerPageFormDTO
* @Auth wangc
* @Date 2020-11-11 23:15
*/
@Data
public class CustomerPageFormDTO implements Serializable {
private static final long serialVersionUID = 8678047078015445193L;
@NotBlank(message = "客户Id不能为空")
private String customerId;
@NotBlank(message = "用户Id不能为空")
private String userId;
@Min(1)
private Integer pageNo;
@Min(1)
private Integer pageSize;
}

1
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;
}

26
epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/dto/topic/result/ParticipatedTopicUnitResultDTO.java

@ -0,0 +1,26 @@
package com.epmet.resi.group.dto.topic.result;
import lombok.Data;
import java.io.Serializable;
/**
* @Description 个人中心 参与过的话题返参DTO
* @ClassName ParticipatedTopicUnitResultDTO
* @Auth wangc
* @Date 2020-11-11 23:00
*/
@Data
public class ParticipatedTopicUnitResultDTO implements Serializable {
private static final long serialVersionUID = 1392205563783715932L;
private String topicId;
private String topicReleaseGridName;
private String topicContent;
private Long releaseTime;
private String topicReleaseGroupName;
}

11
epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/feign/ResiGroupOpenFeignClient.java

@ -4,7 +4,9 @@ import com.epmet.commons.tools.constant.ServiceConstant;
import com.epmet.commons.tools.utils.Result;
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.form.CustomerPageFormDTO;
import com.epmet.resi.group.dto.topic.result.IssueGridResultDTO;
import com.epmet.resi.group.dto.topic.result.ParticipatedTopicUnitResultDTO;
import com.epmet.resi.group.feign.fallback.ResiGroupOpenFeignClientFallback;
import com.epmet.resi.mine.dto.from.MyPartProjectsFormDTO;
import org.springframework.cloud.openfeign.FeignClient;
@ -39,4 +41,13 @@ public interface ResiGroupOpenFeignClient {
@PostMapping("resi/group/group/groupinfo")
Result<List<GroupInfoResultDTO>> selectGroupInfo(@RequestBody GroupInfoFormDTO groupInfoFormDTO);
/**
* @Description 个人中心-我参与过的话题
* @param param
* @return java.util.List<com.epmet.resi.group.dto.topic.result.ParticipatedTopicUnitResultDTO>
* @author wangc
* @date 2020.11.11 23:20
*/
@PostMapping("resi/group/topic/my-part-topics")
Result<List<ParticipatedTopicUnitResultDTO>> myPartTopics(@RequestBody CustomerPageFormDTO param);
}

7
epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/feign/fallback/ResiGroupOpenFeignClientFallback.java

@ -5,7 +5,9 @@ import com.epmet.commons.tools.utils.ModuleUtils;
import com.epmet.commons.tools.utils.Result;
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.form.CustomerPageFormDTO;
import com.epmet.resi.group.dto.topic.result.IssueGridResultDTO;
import com.epmet.resi.group.dto.topic.result.ParticipatedTopicUnitResultDTO;
import com.epmet.resi.group.feign.ResiGroupOpenFeignClient;
import com.epmet.resi.mine.dto.from.MyPartProjectsFormDTO;
import org.springframework.stereotype.Component;
@ -31,4 +33,9 @@ public class ResiGroupOpenFeignClientFallback implements ResiGroupOpenFeignClien
return ModuleUtils.feignConError(ServiceConstant.RESI_GROUP_SERVER, "selectGroupInfo", groupInfoFormDTO);
}
@Override
public Result<List<ParticipatedTopicUnitResultDTO>> myPartTopics(CustomerPageFormDTO param) {
return ModuleUtils.feignConError(ServiceConstant.RESI_GROUP_SERVER, "myPartTopics", param);
}
}

49
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<ResiGroupMemberD
private ResiGroupRedis resiGroupRedis;
@Autowired
private ResiGroupDao resiGroupDao;
@Autowired
private EpmetUserOpenFeignClient userOpenFeignClient;
@Override
public PageData<ResiGroupMemberDTO> page(Map<String, Object> params) {
@ -329,6 +332,24 @@ public class ResiGroupMemberServiceImpl extends BaseServiceImpl<ResiGroupMemberD
userResiInfoDTOListResult.getCode(),
userResiInfoDTOListResult.getMsg()));
}
//徽章信息
ResiGroupEntity group = resiGroupDao.selectById(groupMemberListFormDTO.getGroupId());
if(null != group && StringUtils.isNotBlank(group.getCustomerId())){
Result<Map<String, List<UserBadgeUnitFormDTO>>> badgeR
= userOpenFeignClient.userShowBadge(new UserGroupFormDTO(group.getCustomerId(), userIdList));
if(null != badgeR && badgeR.success() && null != badgeR.getData() && !badgeR.getData().isEmpty()){
Map<String, List<UserBadgeUnitFormDTO>> 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<ResiGroupMemberD
}else{
logger.warn(String.format("居民端组长【%s】查看入群待审核列表调用%s服务,获取用户头像显示昵称失败,错误码%s,错误提示%s",applyingMemberFormDTO.getUserId(), ServiceConstant.EPMET_USER_SERVER, userResiInfoDTOListResult.getCode(), userResiInfoDTOListResult.getMsg()));
}
//徽章信息
ResiGroupEntity group = resiGroupDao.selectById(applyingMemberFormDTO.getGroupId());
if(null != group && StringUtils.isNotBlank(group.getCustomerId())){
Result<Map<String, List<UserBadgeUnitFormDTO>>> badgeR
= userOpenFeignClient.userShowBadge(new UserGroupFormDTO(group.getCustomerId(), userIdList));
if(null != badgeR && badgeR.success() && null != badgeR.getData() && !badgeR.getData().isEmpty()){
Map<String, List<UserBadgeUnitFormDTO>> 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;
}

13
epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/topic/controller/ResiTopicController.java

@ -272,5 +272,18 @@ public class ResiTopicController {
return new Result().ok(myTopics);
}
/**
* @Description 个人中心-我参与过的话题
* @param param
* @return java.util.List<com.epmet.resi.group.dto.topic.result.ParticipatedTopicUnitResultDTO>
* @author wangc
* @date 2020.11.11 23:20
*/
@PostMapping("my-part-topics")
public Result<List<ParticipatedTopicUnitResultDTO>> myPartTopics(@RequestBody CustomerPageFormDTO param){
ValidatorUtils.validateEntity(param);
return new Result<List<ParticipatedTopicUnitResultDTO>>().ok(topicService.getParticipatedTopics(param));
}
}

9
epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/topic/dao/ResiTopicDao.java

@ -161,4 +161,13 @@ public interface ResiTopicDao extends BaseDao<ResiTopicEntity> {
*/
List<IssueGridResultDTO> selectIssueList(@Param("topicList") List<String> topicList);
/**
* @Description 查询我参与过的话题
* @param customerId
* @param userId
* @return java.util.List<com.epmet.resi.group.dto.topic.result.ParticipatedTopicUnitResultDTO>
* @author wangc
* @date 2020.11.11 23:08
*/
List<ParticipatedTopicUnitResultDTO> selectParticipatedTopics(@Param("customerId") String customerId,@Param("userId") String userId);
}

9
epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/topic/service/ResiTopicService.java

@ -271,4 +271,13 @@ public interface ResiTopicService extends BaseService<ResiTopicEntity> {
* @date 2020.11.10 15:03
*/
List<MyTopicsResultDTO> listMyTopics(String customerId, String userId, Integer pageNo, Integer pageSize);
/**
* @Description 个人中心-我参与过的话题
* @param param
* @return java.util.List<com.epmet.resi.group.dto.topic.result.ParticipatedTopicUnitResultDTO>
* @author wangc
* @date 2020.11.11 23:20
*/
List<ParticipatedTopicUnitResultDTO> getParticipatedTopics(CustomerPageFormDTO param);
}

53
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;
@ -81,6 +84,7 @@ import com.epmet.resi.group.dto.topic.form.CheckTopicPublisherFormDTO;
import com.epmet.resi.group.dto.topic.form.GovTopicIssueInfoFormDTO;
import com.epmet.resi.group.dto.topic.result.*;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.apache.commons.logging.Log;
@ -141,6 +145,9 @@ public class ResiTopicServiceImpl extends BaseServiceImpl<ResiTopicDao, ResiTopi
@Autowired
private GovOrgFeignClient govOrgFeignClient;
@Autowired
private GovOrgOpenFeignClient govOrgOpenFeignClient;
@Autowired
private GovIssueFeignClient govIssueFeignClient;
@ -1386,9 +1393,53 @@ public class ResiTopicServiceImpl extends BaseServiceImpl<ResiTopicDao, ResiTopi
public List<MyTopicsResultDTO> listMyTopics(String customerId, String userId, Integer pageNo, Integer pageSize) {
PageHelper.startPage(pageNo, pageSize);
List<MyTopicsResultDTO> myTopics = resiTopicDao.listMyTopics(userId, customerId);
// todo 查询网格名称,赋值
HashMap<String, String> gridIdAndNames = new HashMap<>();
Set<String> gridIds = myTopics.stream().map(c -> c.getReleaseGridId()).collect(Collectors.toSet());
OrgInfoFormDTO form = new OrgInfoFormDTO();
form.setOrgType(OrgInfoConstant.GRID);
form.setOrgIds(new ArrayList<>(gridIds));
Result<List<OrgInfoResultDTO>> gridInfoResult = govOrgOpenFeignClient.selectOrgInfo(form);
if (gridInfoResult.success()) {
List<OrgInfoResultDTO> 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;
}
/**
* @Description 个人中心-我参与过的话题
* @param param
* @return java.util.List<com.epmet.resi.group.dto.topic.result.ParticipatedTopicUnitResultDTO>
* @author wangc
* @date 2020.11.11 23:20
*/
@Override
public List<ParticipatedTopicUnitResultDTO> getParticipatedTopics(CustomerPageFormDTO param) {
PageInfo<ParticipatedTopicUnitResultDTO> page =
PageHelper.startPage(Optional.ofNullable(param.getPageNo()).orElse(NumConstant.ONE),
Optional.ofNullable(param.getPageSize()).orElse(NumConstant.ONE)).doSelectPageInfo(() ->
baseDao.selectParticipatedTopics(param.getCustomerId(),param.getUserId()));
List<ParticipatedTopicUnitResultDTO> result = page.getList();
if(CollectionUtils.isEmpty(result)) return Collections.EMPTY_LIST;
Result<List<OrgInfoResultDTO>> gridR = govOrgOpenFeignClient.selectOrgInfo(
new OrgInfoFormDTO(OrgInfoConstant.GRID,result.stream().map(ParticipatedTopicUnitResultDTO :: getTopicReleaseGridName).distinct().collect(Collectors.toList())));
if(gridR.success() && !CollectionUtils.isEmpty(gridR.getData())){
return result.stream().flatMap(topic -> gridR.getData().stream() .filter(grid -> StringUtils.equals(grid.getOrgId(),topic.getTopicReleaseGridName())).map(orgInfo -> {
topic.setTopicReleaseGridName(orgInfo.getOrgId());
return topic;
})).collect(Collectors.toList());
} return Collections.EMPTY_LIST;
}
}

24
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}
@ -473,5 +474,26 @@
</foreach>
</select>
<!-- 查询我参与过的话题 -->
<select id="selectParticipatedTopics" resultType="com.epmet.resi.group.dto.topic.result.ParticipatedTopicUnitResultDTO">
SELECT
topic.id AS topicId,
topic.topic_content,
UNIX_TIMESTAMP(topic.created_time) AS releaseTime,
groupp.group_name AS topicReleaseGroupName,
groupp.grid_id AS topicReleaseGridName
FROM
resi_topic topic LEFT JOIN resi_group groupp ON topic.group_id = groupp.ID AND groupp.del_flag = '0' AND groupp.customer_id = #{customerId}
WHERE
topic.del_flag = '0'
AND
topic.id IN (
SELECT DISTINCT topic_id FROM resi_topic_comment WHERE
del_flag = '0' AND created_by = #{userId}
)
AND topic.created_by <![CDATA[ <> ]]> #{userId}
ORDER BY topic.created_time desc
</select>
</mapper>

86
epmet-module/resi-mine/resi-mine-server/src/main/java/com/epmet/modules/person/service/impl/IssueServiceImpl.java

@ -5,18 +5,24 @@ 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.ProjectDTO;
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;
@ -146,13 +152,56 @@ public class IssueServiceImpl implements IssueService {
/**
* @param formDTO
* @author yinzuomei
* @description 个人中心-我发起的议题列表-已转项目
* @description 个人中心-我发起的议题列表-已转项目 按照转项目时间排序
* @Date 2020/11/11 13:35
**/
@Override
public List<MyPubIssuesShiftProjectResultDTO> getMyPubIssuesShiftProject(MyPubIssuesAuditingFormDTO formDTO) {
//todo
return null;
//查询我发起的议题,并且 已转项目
formDTO.setIssueStatus(IssueOpenConstant.ISSUE_SHIFT_PROJECT);
Result<List<IssueDTO>> issueResult=issueOpenFeignClient.getMyPubIssues(formDTO);
if(null==issueResult||CollectionUtils.isEmpty(issueResult.getData())){
return new ArrayList<>();
}
//议题来源话题id集合
List<String> topicIds=new ArrayList<>();
List<String> projectIds=new ArrayList<>();
issueResult.getData().forEach(issueDTO ->{
if(IssueOpenConstant.SOURCE_TYPE_RT.equals(issueDTO.getSourceType())&& StringUtils.isNotBlank(issueDTO.getSourceId())){
topicIds.add(issueDTO.getSourceId());
projectIds.add(issueDTO.getProjectId());
}
} );
//查询网格名称
Result<List<OrgInfoResultDTO>> gridNameList = govOrgOpenFeignClient.selectOrgInfo(new OrgInfoFormDTO(OrgInfoConstant.GRID, issueResult.getData().stream().map(m -> m.getGridId()).collect(Collectors.toList())));
if (!gridNameList.success()){
logger.error("查询议题来源网格名称失败......");
}
//查询话题来源小组名称
Result<List<GroupInfoResultDTO>> groupNameList = resiGroupOpenFeignClient.selectGroupInfo(new GroupInfoFormDTO(topicIds));
if (!groupNameList.success()){
logger.error("查询议题来源小组名称失败......");
}
//查询项目基本信息
Result<List<ProjectDTO>> projectRes=govProjectOpenFeignClient.queryProjectInfoByIds(projectIds);
if(!projectRes.success()){
logger.error("查询项目信息失败......");
}
List<MyPubIssuesShiftProjectResultDTO> list=new ArrayList<>();
for(IssueDTO issueDTO:issueResult.getData()){
MyPubIssuesShiftProjectResultDTO resultDTO=new MyPubIssuesShiftProjectResultDTO();
resultDTO.setProjectId(issueDTO.getProjectId());
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()));
resultDTO.setShiftProjectTime(issueDTO.getShiftedTimeStamp());
projectRes.getData().stream().filter(p->issueDTO.getProjectId().equals(p.getId())).forEach(projectDTO -> resultDTO.setProjectTitle(projectDTO.getTitle()));
//当前处理部门名称列表
projectRes.getData().stream().filter(p->issueDTO.getProjectId().equals(p.getId())).forEach(projectDTO -> resultDTO.setDepartmentNameList(projectDTO.getCurrentDepartmentNameList()));
list.add(resultDTO);
}
return list;
}
/**
@ -169,7 +218,34 @@ public class IssueServiceImpl implements IssueService {
if(null==issueResult||CollectionUtils.isEmpty(issueResult.getData())){
return new ArrayList<>();
}
//todo
return null;
//议题来源话题id集合
List<String> topicIds=new ArrayList<>();
issueResult.getData().forEach(issueDTO ->{
if(IssueOpenConstant.SOURCE_TYPE_RT.equals(issueDTO.getSourceType())&& StringUtils.isNotBlank(issueDTO.getSourceId())){
topicIds.add(issueDTO.getSourceId());
}
} );
//查询网格名称
Result<List<OrgInfoResultDTO>> gridNameList = govOrgOpenFeignClient.selectOrgInfo(new OrgInfoFormDTO(OrgInfoConstant.GRID, issueResult.getData().stream().map(m -> m.getGridId()).collect(Collectors.toList())));
if (!gridNameList.success()){
logger.error("查询议题来源网格名称失败......");
}
//查询话题来源小组名称
Result<List<GroupInfoResultDTO>> groupNameList = resiGroupOpenFeignClient.selectGroupInfo(new GroupInfoFormDTO(topicIds));
if (!groupNameList.success()){
logger.error("查询议题来源小组名称失败......");
}
List<MyPubIssuesClosedResultDTO> 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;
}
}

42
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='用户建议图片';
Loading…
Cancel
Save