Browse Source

Merge remote-tracking branch 'origin/dev_group0329' into dev_temp

# Conflicts:
#	epmet-module/gov-issue/gov-issue-client/src/main/java/com/epmet/feign/GovIssueOpenFeignClient.java
#	epmet-module/gov-issue/gov-issue-client/src/main/java/com/epmet/feign/fallback/GovIssueOpenFeignClientFallBack.java
dev_shibei_match
yinzuomei 5 years ago
parent
commit
7942f09912
  1. 11
      epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/redis/RedisUtils.java
  2. 4
      epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/constant/GroupConstant.java
  3. 21
      epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/epmetuser/result/UserInfosResultDTO.java
  4. 35
      epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/resigroup/form/CandidateListFormDTO.java
  5. 57
      epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/resigroup/result/CandidateListResultDTO.java
  6. 29
      epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/controller/ResiGroupController.java
  7. 14
      epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/dao/epmetuser/UserBaseInfoDao.java
  8. 12
      epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/dao/resigroup/ResiGroupDao.java
  9. 47
      epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/redis/ResiGroupRedis.java
  10. 13
      epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/epmetuser/EpmetUserService.java
  11. 19
      epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/epmetuser/impl/EpmetUserServiceImpl.java
  12. 10
      epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/resigroup/ResiGroupService.java
  13. 52
      epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/resigroup/impl/ResiGroupServiceImpl.java
  14. 19
      epmet-module/data-aggregator/data-aggregator-server/src/main/resources/mapper/epmetuser/UserBaseInfoDao.xml
  15. 12
      epmet-module/data-aggregator/data-aggregator-server/src/main/resources/mapper/resigroup/ResiGroupDao.xml
  16. 8
      epmet-module/gov-issue/gov-issue-client/src/main/java/com/epmet/feign/GovIssueOpenFeignClient.java
  17. 5
      epmet-module/gov-issue/gov-issue-client/src/main/java/com/epmet/feign/fallback/GovIssueOpenFeignClientFallBack.java
  18. 10
      epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/controller/IssueApplicationController.java
  19. 8
      epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/dao/IssueApplicationDao.java
  20. 7
      epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/service/IssueApplicationService.java
  21. 11
      epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/service/impl/IssueApplicationServiceImpl.java
  22. 14
      epmet-module/gov-issue/gov-issue-server/src/main/resources/mapper/IssueApplicationDao.xml
  23. 43
      epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/dto/group/form/ExitGroupFormDTO.java
  24. 48
      epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/group/controller/ExitGroupController.java
  25. 18
      epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/group/service/ExitGroupService.java
  26. 120
      epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/group/service/impl/ExitGroupServiceImpl.java
  27. 6
      epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/member/dao/GroupMemeberOperationDao.java
  28. 6
      epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/member/dao/ResiGroupMemberDao.java
  29. 13
      epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/topic/dao/ResiTopicCommentDao.java
  30. 12
      epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/topic/dao/ResiTopicDao.java
  31. 16
      epmet-module/resi-group/resi-group-server/src/main/resources/mapper/member/GroupMemeberOperationDao.xml
  32. 14
      epmet-module/resi-group/resi-group-server/src/main/resources/mapper/member/ResiGroupMemberDao.xml
  33. 29
      epmet-module/resi-group/resi-group-server/src/main/resources/mapper/topic/ResiTopicCommentDao.xml
  34. 27
      epmet-module/resi-group/resi-group-server/src/main/resources/mapper/topic/ResiTopicDao.xml

11
epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/redis/RedisUtils.java

@ -206,6 +206,17 @@ public class RedisUtils {
}).collect(Collectors.toList());
}
/**
* @Description 获取缓存List
* @Param key
* @author zxc
* @date 2021/3/30 下午3:33
*/
public List<Object> getListLrange(String key){
List<Object> range = redisTemplate.opsForList().range(key, 0, -1);
return range;
}
/**
* @Description Redis lrem :
* 根据参数 count 的值移除列表中与参数 value 相等的元素

4
epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/constant/GroupConstant.java

@ -5,4 +5,8 @@ package com.epmet.dataaggre.constant;
* @DateTime 2020/12/25 上午10:55
*/
public interface GroupConstant {
String BADGE_ICON = "badgeIcon";
String BADGE_KEY = "epmet:badge:user:";
}

21
epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/epmetuser/result/UserInfosResultDTO.java

@ -0,0 +1,21 @@
package com.epmet.dataaggre.dto.epmetuser.result;
import lombok.Data;
import java.io.Serializable;
/**
* @Author zxc
* @DateTime 2021/3/30 上午11:04
* @DESC
*/
@Data
public class UserInfosResultDTO implements Serializable {
private static final long serialVersionUID = 7129564173128153335L;
private String userId;
private String userShowName;
private String headPhoto;
}

35
epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/resigroup/form/CandidateListFormDTO.java

@ -0,0 +1,35 @@
package com.epmet.dataaggre.dto.resigroup.form;
import lombok.Data;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import java.io.Serializable;
/**
* @Author zxc
* @DateTime 2021/3/30 上午9:34
* @DESC
*/
@Data
public class CandidateListFormDTO implements Serializable {
private static final long serialVersionUID = 6184071611057671961L;
public interface CandidateListForm{}
/**
* 小组ID
*/
@NotBlank(message = "小组ID不能为空",groups = CandidateListForm.class)
private String groupId;
@NotNull(message = "pageNo不能为空",groups = CandidateListForm.class)
private Integer pageNo;
@NotNull(message = "pageSize不能为空",groups = CandidateListForm.class)
private Integer pageSize;
private String customerId;
}

57
epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/resigroup/result/CandidateListResultDTO.java

@ -0,0 +1,57 @@
package com.epmet.dataaggre.dto.resigroup.result;
import lombok.Data;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;
/**
* @Author zxc
* @DateTime 2021/3/30 上午9:15
* @DESC
*/
@Data
public class CandidateListResultDTO implements Serializable {
private static final long serialVersionUID = 4720936429310456924L;
/**
* resi_group_member.id: 成员id
*/
private String memberId;
/**
* 组员的用户id
*/
private String userId;
/**
* 成员头像
*/
private String headPhoto;
/**
* 成员的显示名称
*/
private String userShowName;
/**
* 徽章Url集合
*/
private String leaderFlag;
/**
* leader群主member成员
*/
private List<String> badgeList;
public CandidateListResultDTO() {
this.memberId = "";
this.userId = "";
this.headPhoto = "";
this.userShowName = "";
this.leaderFlag = "";
this.badgeList = new ArrayList<>();
}
}

29
epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/controller/ResiGroupController.java

@ -1,8 +1,20 @@
package com.epmet.dataaggre.controller;
import com.epmet.commons.tools.annotation.LoginUser;
import com.epmet.commons.tools.security.dto.TokenDto;
import com.epmet.commons.tools.utils.Result;
import com.epmet.commons.tools.validator.ValidatorUtils;
import com.epmet.dataaggre.dto.resigroup.form.CandidateListFormDTO;
import com.epmet.dataaggre.dto.resigroup.result.CandidateListResultDTO;
import com.epmet.dataaggre.service.resigroup.ResiGroupService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.List;
/**
* @Author zxc
* @DateTime 2020/12/25 上午9:45
@ -10,4 +22,21 @@ import org.springframework.web.bind.annotation.RestController;
@RestController
@RequestMapping("resigroup")
public class ResiGroupController {
@Autowired
private ResiGroupService resiGroupService;
/**
* @Description 可胜任组长-组员列表(工作端通用)
* @Param formDTO
* @author zxc
* @date 2021/3/30 上午9:45
*/
@PostMapping("candidatelist")
public Result<List<CandidateListResultDTO>> candidateList(@RequestBody CandidateListFormDTO formDTO, @LoginUser TokenDto tokenDto){
ValidatorUtils.validateEntity(formDTO, CandidateListFormDTO.CandidateListForm.class);
formDTO.setCustomerId(tokenDto.getCustomerId());
return new Result<List<CandidateListResultDTO>>().ok(resiGroupService.candidateList(formDTO));
}
}

14
epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/dao/epmetuser/UserBaseInfoDao.java

@ -18,8 +18,12 @@
package com.epmet.dataaggre.dao.epmetuser;
import com.epmet.commons.mybatis.dao.BaseDao;
import com.epmet.dataaggre.dto.epmetuser.result.UserInfosResultDTO;
import com.epmet.dataaggre.entity.epmetuser.UserBaseInfoEntity;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import java.util.List;
/**
* 用户基础信息
@ -29,5 +33,13 @@ import org.apache.ibatis.annotations.Mapper;
*/
@Mapper
public interface UserBaseInfoDao extends BaseDao<UserBaseInfoEntity> {
/**
* @Description 根据UserIds查询
* @Param userIds
* @author zxc
* @date 2021/3/30 上午11:07
*/
List<UserInfosResultDTO> selectUserInfosByUserIds(@Param("userIds") List<String> userIds);
}

12
epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/dao/resigroup/ResiGroupDao.java

@ -18,8 +18,12 @@
package com.epmet.dataaggre.dao.resigroup;
import com.epmet.commons.mybatis.dao.BaseDao;
import com.epmet.dataaggre.dto.resigroup.result.CandidateListResultDTO;
import com.epmet.dataaggre.entity.resigroup.ResiGroupEntity;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import java.util.List;
/**
* 群组信息表
@ -29,5 +33,13 @@ import org.apache.ibatis.annotations.Mapper;
*/
@Mapper
public interface ResiGroupDao extends BaseDao<ResiGroupEntity> {
/**
* @Description 根据小组ID查询组员信息身份不包括组长
* @Param groupId
* @author zxc
* @date 2021/3/30 上午10:13
*/
List<CandidateListResultDTO> candidateList(@Param("groupId")String groupId);
}

47
epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/redis/ResiGroupRedis.java

@ -0,0 +1,47 @@
package com.epmet.dataaggre.redis;
import com.epmet.commons.tools.redis.RedisUtils;
import com.epmet.dataaggre.constant.GroupConstant;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import org.springframework.util.CollectionUtils;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
/**
* @Author zxc
* @DateTime 2021/3/30 下午1:39
* @DESC
*/
@Component
@Slf4j
public class ResiGroupRedis {
@Autowired
private RedisUtils redisUtils;
/**
* @Description 获取用户徽章
* @Param customerId
* @Param userId
* @author zxc
* @date 2021/3/30 下午3:33
*/
public List<String> getBadgeInfoByUserId(String customerId,String userId){
String key = GroupConstant.BADGE_KEY+customerId+":"+userId;
List<Object> result = redisUtils.getListLrange(key);
if (!CollectionUtils.isEmpty(result)){
List<String> icons = new ArrayList<>();
for (Object o : result) {
Map<String,String> map = (Map<String, String>) o;
icons.add(map.get(GroupConstant.BADGE_ICON));
}
return icons;
}
return new ArrayList<>();
}
}

13
epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/epmetuser/EpmetUserService.java

@ -1,8 +1,21 @@
package com.epmet.dataaggre.service.epmetuser;
import com.epmet.dataaggre.dto.epmetuser.result.UserInfosResultDTO;
import java.util.List;
/**
* @Author zxc
* @DateTime 2020/12/25 上午9:20
*/
public interface EpmetUserService {
/**
* @Description 根据UserIds查询
* @Param userIds
* @author zxc
* @date 2021/3/30 上午11:07
*/
List<UserInfosResultDTO> selectUserInfosByUserIds(List<String> userIds);
}

19
epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/epmetuser/impl/EpmetUserServiceImpl.java

@ -2,10 +2,15 @@ package com.epmet.dataaggre.service.epmetuser.impl;
import com.epmet.commons.dynamic.datasource.annotation.DataSource;
import com.epmet.dataaggre.constant.DataSourceConstant;
import com.epmet.dataaggre.dao.epmetuser.UserBaseInfoDao;
import com.epmet.dataaggre.dto.epmetuser.result.UserInfosResultDTO;
import com.epmet.dataaggre.service.epmetuser.EpmetUserService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
/**
* @Author zxc
* @DateTime 2020/12/25 上午9:21
@ -14,4 +19,18 @@ import org.springframework.stereotype.Service;
@DataSource(DataSourceConstant.EPMET_USER)
@Slf4j
public class EpmetUserServiceImpl implements EpmetUserService {
@Autowired
private UserBaseInfoDao userBaseInfoDao;
/**
* @Description 根据UserIds查询
* @Param userIds
* @author zxc
* @date 2021/3/30 上午11:07
*/
@Override
public List<UserInfosResultDTO> selectUserInfosByUserIds(List<String> userIds) {
return userBaseInfoDao.selectUserInfosByUserIds(userIds);
}
}

10
epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/resigroup/ResiGroupService.java

@ -1,6 +1,9 @@
package com.epmet.dataaggre.service.resigroup;
import com.epmet.dataaggre.dto.resigroup.ResiTopicDTO;
import com.epmet.dataaggre.dto.resigroup.form.CandidateListFormDTO;
import com.epmet.dataaggre.dto.resigroup.result.CandidateListResultDTO;
import org.apache.ibatis.annotations.Param;
import java.util.List;
@ -9,5 +12,12 @@ import java.util.List;
* @DateTime 2020/12/25 上午9:21
*/
public interface ResiGroupService {
/**
* @Description 可胜任组长-组员列表(工作端通用)
* @Param formDTO
* @author zxc
* @date 2021/3/30 上午9:45
*/
List<CandidateListResultDTO> candidateList(CandidateListFormDTO formDTO);
List<ResiTopicDTO> selectTopicInfoByIds(List<String> topicIds);
}

52
epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/resigroup/impl/ResiGroupServiceImpl.java

@ -2,14 +2,25 @@ package com.epmet.dataaggre.service.resigroup.impl;
import com.epmet.commons.dynamic.datasource.annotation.DataSource;
import com.epmet.dataaggre.constant.DataSourceConstant;
import com.epmet.dataaggre.dao.resigroup.ResiGroupDao;
import com.epmet.dataaggre.dao.resigroup.ResiTopicDao;
import com.epmet.dataaggre.dto.epmetuser.result.UserInfosResultDTO;
import com.epmet.dataaggre.dto.resigroup.ResiTopicDTO;
import com.epmet.dataaggre.dto.resigroup.form.CandidateListFormDTO;
import com.epmet.dataaggre.dto.resigroup.result.CandidateListResultDTO;
import com.epmet.dataaggre.redis.ResiGroupRedis;
import com.epmet.dataaggre.service.epmetuser.EpmetUserService;
import com.epmet.dataaggre.service.resigroup.ResiGroupService;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils;
import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;
/**
* @Author zxc
@ -21,9 +32,50 @@ import java.util.List;
public class ResiGroupServiceImpl implements ResiGroupService {
@Autowired
private ResiTopicDao resiTopicDao;
@Autowired
private ResiGroupDao resiGroupDao;
@Autowired
private EpmetUserService epmetUserService;
@Autowired
private ResiGroupRedis resiGroupRedis;
@Override
public List<ResiTopicDTO> selectTopicInfoByIds(List<String> topicIds) {
return resiTopicDao.selectTopicInfoByIds(topicIds);
}
/**
* @Description 可胜任组长-组员列表(工作端通用)
* @Param formDTO
* @author zxc
* @date 2021/3/30 上午9:45
*/
@Override
public List<CandidateListResultDTO> candidateList(CandidateListFormDTO formDTO) {
// 根据小组ID查询组员信息身份【不包括组长自己】
PageInfo<CandidateListResultDTO> pageInfo = PageHelper.startPage(formDTO.getPageNo(), formDTO.getPageSize()).doSelectPageInfo(() -> resiGroupDao.candidateList(formDTO.getGroupId()));
List<CandidateListResultDTO> result = pageInfo.getList();
// 没有直接返回空集合
if (CollectionUtils.isEmpty(result)){
return new ArrayList<>();
}
// 获取userIds
List<String> userIds = result.stream().map(m -> m.getUserId()).collect(Collectors.toList());
// 查询用户信息【名字 头像】
List<UserInfosResultDTO> userInfos = epmetUserService.selectUserInfosByUserIds(userIds);
result.forEach(r -> {
if (!CollectionUtils.isEmpty(userInfos)){
userInfos.forEach(u -> {
if (r.getUserId().equals(u.getUserId())){
r.setHeadPhoto(u.getHeadPhoto());
r.setUserShowName(u.getUserShowName());
}
});
}
// 徽章赋值
List<String> badgeInfo = resiGroupRedis.getBadgeInfoByUserId(formDTO.getCustomerId(), r.getUserId());
r.setBadgeList(null==badgeInfo ? new ArrayList<>() : badgeInfo);
});
return result;
}
}

19
epmet-module/data-aggregator/data-aggregator-server/src/main/resources/mapper/epmetuser/UserBaseInfoDao.xml

@ -3,4 +3,23 @@
<mapper namespace="com.epmet.dataaggre.dao.epmetuser.UserBaseInfoDao">
<!-- 根据UserIds查询 -->
<select id="selectUserInfosByUserIds" resultType="com.epmet.dataaggre.dto.epmetuser.result.UserInfosResultDTO">
SELECT
user_id,
CONCAT(STREET,'-',SURNAME,
CASE WHEN GENDER = '1' THEN '先生'
WHEN GENDER = '2' THEN '女士'
ELSE '先生/女士' END
) AS userShowName,
HEAD_IMG_URL AS headPhoto
FROM user_base_info
WHERE DEL_FLAG = 0
AND
(
<foreach collection="userIds" item="userId" separator=" OR ">
USER_ID = #{userId}
</foreach>
)
</select>
</mapper>

12
epmet-module/data-aggregator/data-aggregator-server/src/main/resources/mapper/resigroup/ResiGroupDao.xml

@ -3,4 +3,16 @@
<mapper namespace="com.epmet.dataaggre.dao.resigroup.ResiGroupDao">
<!-- 根据小组ID查询组员信息身份【不包括组长】 -->
<select id="candidateList" resultType="com.epmet.dataaggre.dto.resigroup.result.CandidateListResultDTO">
SELECT
rgm.ID AS memberId,
rgm.CUSTOMER_USER_ID AS userId,
rgm.GROUP_LEADER_FLAG AS leaderFlag
FROM resi_group_member rgm
WHERE rgm.DEL_FLAG = '0'
AND rgm.`STATUS` = 'approved'
AND rgm.GROUP_LEADER_FLAG != 'leader'
AND rgm.RESI_GROUP_ID = #{groupId}
</select>
</mapper>

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

@ -288,4 +288,12 @@ public interface GovIssueOpenFeignClient {
**/
@PostMapping(value = "/gov/issue/issueprojectcategorydict/getcustomercategorydict")
Result<List<ProjectCategoryDictResultDTO>> getCustomerCategoryDict(@RequestBody CustomerCategoryDTO dto);
/**
* @param topicIdList
* @Description 查询当前未成为议题的话题但是提交了转议题申请的
* @author sun
*/
@PostMapping("/gov/issue/issueapplication/notissuetotopicids")
Result<List<String>> notIssueToTopicIds(@RequestBody List<String> topicIdList);
}

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

@ -240,6 +240,11 @@ public class GovIssueOpenFeignClientFallBack implements GovIssueOpenFeignClient
return ModuleUtils.feignConError(ServiceConstant.GOV_ISSUE_SERVER, "detail", formDTO);
}
@Override
public Result<List<String>> notIssueToTopicIds(List<String> topicIdList) {
return ModuleUtils.feignConError(ServiceConstant.GOV_ISSUE_SERVER, "notIssueToTopicIds", topicIdList);
}
@Override
public Result<GovIssueDetailResultDTO> votingissuedetail(IssueDetailFormDTO issueDetail) {
return ModuleUtils.feignConError(ServiceConstant.GOV_ISSUE_SERVER, "votingissuedetail", issueDetail);

10
epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/controller/IssueApplicationController.java

@ -164,4 +164,14 @@ public class IssueApplicationController {
ValidatorUtils.validateEntity(fomrDTO, PageFormDTO.AddUserInternalGroup.class);
return new Result<List<UserPubAuditingIssueResDTO>>().ok(issueApplicationService.queryUserPubAuditingIssues(fomrDTO));
}
/**
* @param topicIdList
* @Description 查询当前未成为议题的话题但是提交了转议题申请的
* @author sun
*/
@PostMapping("notissuetotopicids")
public Result<List<String>> notIssueToTopicIds(@RequestBody List<String> topicIdList) {
return new Result<List<String>>().ok(issueApplicationService.notIssueToTopicIds(topicIdList));
}
}

8
epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/dao/IssueApplicationDao.java

@ -66,4 +66,12 @@ public interface IssueApplicationDao extends BaseDao<IssueApplicationEntity> {
List<UserPubAuditingIssueResDTO> selectUserPubAuditingIssues(UserPubAuditingIssueFormDTO formDTO);
List<IssueApplicationDTO> selectByTopicId(@Param("topicId") String topicId);
/**
* @param topicIdList
* @Description 查询当前未成为议题的话题但是提交了转议题申请的
* @author sun
*/
List<String> selectTopicIdList(@Param("topicIdList") List<String> topicIdList);
}

7
epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/service/IssueApplicationService.java

@ -143,4 +143,11 @@ public interface IssueApplicationService extends BaseService<IssueApplicationEnt
* @Date 2020/11/23 9:35
**/
List<UserPubAuditingIssueResDTO> queryUserPubAuditingIssues(UserPubAuditingIssueFormDTO fomrDTO);
/**
* @param topicIdList
* @Description 查询当前未成为议题的话题但是提交了转议题申请的
* @author sun
*/
List<String> notIssueToTopicIds(List<String> topicIdList);
}

11
epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/service/impl/IssueApplicationServiceImpl.java

@ -175,4 +175,15 @@ public class IssueApplicationServiceImpl extends BaseServiceImpl<IssueApplicatio
return null;
}
/**
* @param topicIdList
* @Description 查询当前未成为议题的话题但是提交了转议题申请的
* @author sun
*/
@Override
public List<String> notIssueToTopicIds(List<String> topicIdList) {
List<String> idList = baseDao.selectTopicIdList(topicIdList);
return idList;
}
}

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

@ -72,4 +72,18 @@
AND TOPIC_ID = #{topicId}
ORDER BY CREATED_TIME DESC
</select>
<select id="selectTopicIdList" resultType="java.lang.String">
SELECT
topic_id
FROM
issue_application
WHERE
del_flag = '0'
AND apply_status = 'under_auditing'
<foreach collection="topicIdList" item="topicId" open="AND (" close=")" separator=" OR ">
topic_id = #{topicId}
</foreach>
</select>
</mapper>

43
epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/dto/group/form/ExitGroupFormDTO.java

@ -0,0 +1,43 @@
package com.epmet.resi.group.dto.group.form;
import lombok.Data;
import lombok.NoArgsConstructor;
import javax.validation.constraints.NotBlank;
import java.io.Serializable;
/**
* @author sun
* @Description 删除组员-接口入参
*/
@NoArgsConstructor
@Data
public class ExitGroupFormDTO implements Serializable {
private static final long serialVersionUID = 9033824126731443502L;
/**
* 屏蔽突然的话题及评论勾选yes不勾选no
*/
@NotBlank(message = "是否屏蔽话题及评论不能为空")
private String shieldFlag;
/**
* 组成员用户id
*/
@NotBlank(message = "被删除用户Id不能为空")
private String userId;
/**
* 小组ID
*/
@NotBlank(message = "小组Id不能为空")
private String groupId;
/**
* 客户Id
*/
private String customerId;
/**
* OPERATE_USER_ID操作人id
*/
private String operateUserId;
}

48
epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/group/controller/ExitGroupController.java

@ -0,0 +1,48 @@
package com.epmet.modules.group.controller;
import com.epmet.commons.tools.annotation.LoginUser;
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.commons.tools.validator.ValidatorUtils;
import com.epmet.modules.group.service.ExitGroupService;
import com.epmet.resi.group.dto.group.form.ExitGroupFormDTO;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
* @author sun
* @dscription
*/
@Slf4j
@RestController
@RequestMapping("exitgroup")
public class ExitGroupController {
@Autowired
private ExitGroupService exitGroupService;
/**
* @param formDTO
* @Description 删除组员
* @author sun
* 如果shieldFlag=yes, 则将讨论中的话题并且不存在正在审核的议题申请的置为已屏蔽
* 不要忘了插入exit_group_record
*/
@PostMapping("removemember")
public Result removeMember(@LoginUser TokenDto tokenDto, @RequestBody ExitGroupFormDTO formDTO) {
ValidatorUtils.validateEntity(formDTO);
if(!"yes".equals(formDTO.getShieldFlag())&&!"no".equals(formDTO.getShieldFlag())){
throw new RenException("参数错误,是否屏蔽历史话题参数值错误");
}
formDTO.setCustomerId(tokenDto.getCustomerId());
formDTO.setOperateUserId(tokenDto.getUserId());
exitGroupService.removeMember(formDTO);
return new Result();
}
}

18
epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/group/service/ExitGroupService.java

@ -0,0 +1,18 @@
package com.epmet.modules.group.service;
import com.epmet.resi.group.dto.group.form.ExitGroupFormDTO;
/**
* @author sun
* @dscription
*/
public interface ExitGroupService {
/**
* @param formDTO
* @Description 删除组员
* @author sun
*/
void removeMember(ExitGroupFormDTO formDTO);
}

120
epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/group/service/impl/ExitGroupServiceImpl.java

@ -0,0 +1,120 @@
package com.epmet.modules.group.service.impl;
import com.epmet.commons.tools.constant.NumConstant;
import com.epmet.commons.tools.exception.RenException;
import com.epmet.commons.tools.utils.Result;
import com.epmet.feign.GovIssueOpenFeignClient;
import com.epmet.modules.group.service.ExitGroupService;
import com.epmet.modules.member.dao.ExitGroupRecordDao;
import com.epmet.modules.member.dao.GroupMemeberOperationDao;
import com.epmet.modules.member.dao.ResiGroupMemberDao;
import com.epmet.modules.member.entity.ExitGroupRecordEntity;
import com.epmet.modules.topic.dao.ResiTopicCommentDao;
import com.epmet.modules.topic.dao.ResiTopicDao;
import com.epmet.modules.topic.entity.ResiTopicEntity;
import com.epmet.resi.group.dto.group.form.ExitGroupFormDTO;
import com.epmet.resi.group.dto.member.GroupMemeberOperationDTO;
import lombok.extern.slf4j.Slf4j;
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.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;
/**
* @author sun
* @dscription
*/
@Slf4j
@Service
public class ExitGroupServiceImpl implements ExitGroupService {
@Autowired
private ResiGroupMemberDao resiGroupMemberDao;
@Autowired
private GroupMemeberOperationDao groupMemeberOperationDao;
@Autowired
private ExitGroupRecordDao exitGroupRecordDao;
@Autowired
private ResiTopicDao resiTopicDao;
@Autowired
private GovIssueOpenFeignClient govIssueOpenFeignClient;
@Autowired
private ResiTopicCommentDao resiTopicCommentDao;
/**
* @param formDTO
* @Description 删除组员
* @author sun
*/
@Override
@Transactional(rollbackFor = Exception.class)
public void removeMember(ExitGroupFormDTO formDTO) {
//1.校验被删除人员是否是当前小组内成员
int num = resiGroupMemberDao.checkUserInGroup(formDTO.getUserId(), formDTO.getGroupId());
if (num < NumConstant.ONE) {
throw new RenException("当前待删除人员不是本小组成员");
}
//2.判断是否屏蔽本小组内历史话题
List<String> delIdList = new ArrayList<>();
if ("yes".equals(formDTO.getShieldFlag())) {
//2-1.查询当前被删除人员发表过的话题还未成为议题的并且只是谈论中的数据
List<String> topicIdList = resiTopicDao.selectIdList(formDTO.getGroupId(), formDTO.getUserId());
//2-2.查询当前未成为议题的话题但是提交了转议题申请的话题
if (!CollectionUtils.isEmpty(topicIdList)) {
Result<List<String>> listResult = govIssueOpenFeignClient.notIssueToTopicIds(topicIdList);
if (!listResult.success()) {
throw new RenException(listResult.getInternalMsg());
}
//获取只是单纯的话题既没有被转成议题又不存在转议题申请待审核数据
delIdList = topicIdList.stream().filter(o -> !listResult.getData().contains(o)).collect(Collectors.toList());
}
//2-3.屏蔽这些单纯的话题
if (delIdList.size() > NumConstant.ZERO) {
resiTopicDao.upTopicList(delIdList, formDTO.getOperateUserId());
}
}
//3.判断是否屏蔽本小组内历史评论
if ("yes".equals(formDTO.getShieldFlag())) {
//3-1.查询别人的话题但自己评论过的话题Id
List<String> commetTopicList = resiTopicCommentDao.selectTopicIds(formDTO.getGroupId(), formDTO.getUserId());
delIdList.addAll(commetTopicList);
//3-2.本小组内屏蔽自己创建的话题发表过的评论以及别人发表的话题自己评论过的评论
if (delIdList.size() > NumConstant.ZERO) {
resiTopicCommentDao.upTopicCommentList(delIdList, formDTO.getUserId(), formDTO.getOperateUserId());
}
}
//4.修改组成员出入群记录表数据状态、删除组成员关系表数据、新增退群记录表数据
//4-1.修改组成员出入群记录表数据状态
GroupMemeberOperationDTO operationDTO = new GroupMemeberOperationDTO();
operationDTO.setGroupId(formDTO.getGroupId());
operationDTO.setCustomerUserId(formDTO.getUserId());
operationDTO.setOperateUserId(formDTO.getOperateUserId());
if (groupMemeberOperationDao.upByGroupAndUserId(operationDTO) < NumConstant.ONE) {
throw new RenException(String.format("修改组成员出入群记录表数据失败,小组Id【%s】被修改人Id【%s】", formDTO.getGroupId(), formDTO.getUserId()));
}
//4-2.删除组成员关系表数据并修改状态
if (resiGroupMemberDao.delByGroupAndUserId(formDTO.getGroupId(), formDTO.getUserId()) < NumConstant.ONE) {
throw new RenException(String.format("删除组成员关系表数据操作失败,小组Id【%s】被修改人Id【%s】", formDTO.getGroupId(), formDTO.getUserId()));
}
//4-3.新增退群记录表数据
ExitGroupRecordEntity entity = new ExitGroupRecordEntity();
entity.setCustomerId(formDTO.getCustomerId());
entity.setGroupId(formDTO.getGroupId());
entity.setMemberUserId(formDTO.getUserId());
entity.setShieldFlag(formDTO.getShieldFlag());
entity.setLeaveType("0");
if (exitGroupRecordDao.insert(entity) < NumConstant.ONE) {
throw new RenException(String.format("新增退群记录表数据操作失败,小组Id【%s】被修改人Id【%s】", formDTO.getGroupId(), formDTO.getUserId()));
}
}
}

6
epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/member/dao/GroupMemeberOperationDao.java

@ -59,4 +59,10 @@ public interface GroupMemeberOperationDao extends BaseDao<GroupMemeberOperationE
* @date 2020/12/18 下午4:40
*/
Integer checkAwaitAudit(@Param("userId")String userId,@Param("groupId")String groupId);
/**
* @Description 修改组成员数据状态
* @author sun
*/
int upByGroupAndUserId(GroupMemeberOperationDTO formDTO);
}

6
epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/member/dao/ResiGroupMemberDao.java

@ -128,4 +128,10 @@ public interface ResiGroupMemberDao extends BaseDao<ResiGroupMemberEntity> {
* @date 2020/12/18 下午4:33
*/
Integer checkUserInGroup(@Param("userId")String userId,@Param("groupId")String groupId);
/**
* @Description 修改组成员数据状态
* @author sun
*/
int delByGroupAndUserId(@Param("groupId")String groupId, @Param("userId")String userId);
}

13
epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/topic/dao/ResiTopicCommentDao.java

@ -67,4 +67,17 @@ public interface ResiTopicCommentDao extends BaseDao<ResiTopicCommentEntity> {
* @date 2020/12/23 上午11:09
*/
Integer selectCommentCountByUserId(@Param("userId") String userId);
/**
* @Description 查询本小组内自己评论过的别人发表的话题Id集合
* @author sun
*/
List<String> selectTopicIds(@Param("groupId") String groupId, @Param("userId") String userId);
/**
* @Description 屏蔽自己发表的话题且自己评论过的评论
* @author sun
*/
void upTopicCommentList(@Param("delIdList") List<String> delIdList, @Param("userId") String userId, @Param("operateUserId") String operateUserId);
}

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

@ -212,4 +212,16 @@ public interface ResiTopicDao extends BaseDao<ResiTopicEntity> {
String selectCustomerIdByTopicId(@Param("topicId")String topicId);
ResiTopicDTO selectByIssueId(@Param("issueId") String issueId);
/**
* @Description 查询当前小组里被删除人员创建的话题还未转为议题并且是讨论中的话题数据
* @author sun
*/
List<String> selectIdList(@Param("groupId") String groupId, @Param("userId") String userId);
/**
* @Description 批量修改话题状态
* @author sun
*/
int upTopicList(@Param("delIdList") List<String> delIdList, @Param("userId") String userId);
}

16
epmet-module/resi-group/resi-group-server/src/main/resources/mapper/member/GroupMemeberOperationDao.xml

@ -39,4 +39,20 @@
AND GROUP_ID = #{groupId}
AND OPERATE_STATUS = 'under_auditting'
</select>
<!-- 更新最新一条进组记录数据状态 -->
<update id="upByGroupAndUserId">
UPDATE group_memeber_operation
SET operate_status = 'removed',
operate_user_id = #{operateUserId},
updated_by = #{operateUserId},
updated_time = NOW()
WHERE
group_id = #{groupId}
AND customer_user_id = #{customerUserId}
ORDER BY
created_time DESC
LIMIT 1
</update>
</mapper>

14
epmet-module/resi-group/resi-group-server/src/main/resources/mapper/member/ResiGroupMemberDao.xml

@ -164,4 +164,18 @@
AND RESI_GROUP_ID = #{groupId}
AND `STATUS` = 'approved'
</select>
<!-- 修改群成员关系数据状态 -->
<update id="delByGroupAndUserId">
UPDATE resi_group_member
SET del_flag = '1',
status = 'removed'
WHERE
resi_group_id = #{groupId}
AND customer_user_id = #{userId}
ORDER BY
created_time DESC
LIMIT 1
</update>
</mapper>

29
epmet-module/resi-group/resi-group-server/src/main/resources/mapper/topic/ResiTopicCommentDao.xml

@ -97,4 +97,33 @@
AND CREATED_BY = #{userId}
</select>
<select id="selectTopicIds" resultType="java.lang.String">
SELECT DISTINCT
re.topic_id
FROM
resi_topic_comment re
INNER JOIN resi_topic rt ON re.topic_id = rt.id
WHERE
rt.del_flag = '0'
AND re.del_flag = '0'
<!-- 本小组内不是当前被删除人创建的话题 但是当前人评论过的话题 -->
AND rt.group_id = #{groupId}
AND rt.created_by != #{userId}
AND re.created_by = #{userId}
</select>
<!-- 屏蔽当前人员对某些话题的评论 -->
<update id="upTopicCommentList">
UPDATE resi_topic_comment
SET `status` = 'hidden',
updated_by = #{operateUserId},
updated_time = NOW()
WHERE
del_flag = '0'
AND created_by = #{userId}
<foreach collection="delIdList" item="topicId" open="AND (" close=")" separator=" OR ">
topic_id = #{topicId}
</foreach>
</update>
</mapper>

27
epmet-module/resi-group/resi-group-server/src/main/resources/mapper/topic/ResiTopicDao.xml

@ -576,5 +576,32 @@
where rt.DEL_FLAG='0'
and rt.ISSUE_ID=#{issueId}
</select>
<!-- 查询小组内还未成为议题的是当前人员创建的讨论中的话题 -->
<select id="selectIdList" resultType="java.lang.String">
SELECT
id
FROM
resi_topic
WHERE
del_flag = '0'
AND shift_issue = '0'
AND `status` = 'discussing'
AND group_id = #{groupId}
AND created_by = #{userId}
</select>
<update id="upTopicList">
UPDATE resi_topic
SET status = 'hidden',
updated_by = #{userId},
updated_time = NOW()
WHERE
del_flag = '0'
<foreach collection="delIdList" item="id" open="AND (" close=")" separator=" OR ">
id = #{id}
</foreach>
</update>
</mapper>

Loading…
Cancel
Save