Browse Source

Merge remote-tracking branch 'origin/dev'

master
yinzuomei 4 years ago
parent
commit
3adf5631bf
  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. 5
      epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/resigroup/ResiTopicCommentDTO.java
  5. 35
      epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/resigroup/form/CandidateListFormDTO.java
  6. 57
      epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/resigroup/result/CandidateListResultDTO.java
  7. 29
      epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/controller/ResiGroupController.java
  8. 20
      epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/dao/epmetuser/UserBaseInfoDao.java
  9. 12
      epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/dao/resigroup/ResiGroupDao.java
  10. 5
      epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/entity/resigroup/ResiTopicCommentEntity.java
  11. 47
      epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/redis/ResiGroupRedis.java
  12. 21
      epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/epmetuser/EpmetUserService.java
  13. 30
      epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/epmetuser/impl/EpmetUserServiceImpl.java
  14. 10
      epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/resigroup/ResiGroupService.java
  15. 58
      epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/resigroup/impl/ResiGroupServiceImpl.java
  16. 34
      epmet-module/data-aggregator/data-aggregator-server/src/main/resources/mapper/epmetuser/UserBaseInfoDao.xml
  17. 12
      epmet-module/data-aggregator/data-aggregator-server/src/main/resources/mapper/resigroup/ResiGroupDao.xml
  18. 8
      epmet-module/gov-issue/gov-issue-client/src/main/java/com/epmet/feign/GovIssueOpenFeignClient.java
  19. 5
      epmet-module/gov-issue/gov-issue-client/src/main/java/com/epmet/feign/fallback/GovIssueOpenFeignClientFallBack.java
  20. 10
      epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/controller/IssueApplicationController.java
  21. 8
      epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/dao/IssueApplicationDao.java
  22. 7
      epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/service/IssueApplicationService.java
  23. 11
      epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/service/impl/IssueApplicationServiceImpl.java
  24. 14
      epmet-module/gov-issue/gov-issue-server/src/main/resources/mapper/IssueApplicationDao.xml
  25. 43
      epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/dto/group/form/ExitGroupFormDTO.java
  26. 97
      epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/dto/member/ExitGroupRecordDTO.java
  27. 97
      epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/dto/member/GroupLeaderTransferRecordDTO.java
  28. 32
      epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/dto/member/form/ConfirmTransferFormDTO.java
  29. 5
      epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/dto/topic/ResiTopicCommentDTO.java
  30. 5
      epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/comment/entity/ResiTopicCommentEntity.java
  31. 3
      epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/constant/GroupMemberConstant.java
  32. 9
      epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/constant/UserMessageConstant.java
  33. 48
      epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/group/controller/ExitGroupController.java
  34. 18
      epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/group/service/ExitGroupService.java
  35. 197
      epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/group/service/impl/ExitGroupServiceImpl.java
  36. 40
      epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/member/controller/ExitGroupRecordController.java
  37. 61
      epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/member/controller/GroupLeaderTransferRecordController.java
  38. 33
      epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/member/dao/ExitGroupRecordDao.java
  39. 33
      epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/member/dao/GroupLeaderTransferRecordDao.java
  40. 6
      epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/member/dao/GroupMemeberOperationDao.java
  41. 16
      epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/member/dao/ResiGroupMemberDao.java
  42. 63
      epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/member/entity/ExitGroupRecordEntity.java
  43. 63
      epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/member/entity/GroupLeaderTransferRecordEntity.java
  44. 32
      epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/member/redis/ResiGroupMemberRedis.java
  45. 95
      epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/member/service/ExitGroupRecordService.java
  46. 105
      epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/member/service/GroupLeaderTransferRecordService.java
  47. 19
      epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/member/service/ResiGroupMemberService.java
  48. 99
      epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/member/service/impl/ExitGroupRecordServiceImpl.java
  49. 226
      epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/member/service/impl/GroupLeaderTransferRecordServiceImpl.java
  50. 31
      epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/member/service/impl/ResiGroupMemberServiceImpl.java
  51. 13
      epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/topic/dao/ResiTopicCommentDao.java
  52. 12
      epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/topic/dao/ResiTopicDao.java
  53. 2
      epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/topic/service/impl/ResiTopicCommentServiceImpl.java
  54. 18
      epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/topic/service/impl/ResiTopicServiceImpl.java
  55. 15
      epmet-module/resi-group/resi-group-server/src/main/resources/db/migration/V0.0.12__group_leader_transfer_record.sql
  56. 15
      epmet-module/resi-group/resi-group-server/src/main/resources/db/migration/V0.0.13__exit_group_record.sql
  57. 8
      epmet-module/resi-group/resi-group-server/src/main/resources/mapper/group/ResiGroupDao.xml
  58. 8
      epmet-module/resi-group/resi-group-server/src/main/resources/mapper/member/ExitGroupRecordDao.xml
  59. 8
      epmet-module/resi-group/resi-group-server/src/main/resources/mapper/member/GroupLeaderTransferRecordDao.xml
  60. 16
      epmet-module/resi-group/resi-group-server/src/main/resources/mapper/member/GroupMemeberOperationDao.xml
  61. 28
      epmet-module/resi-group/resi-group-server/src/main/resources/mapper/member/ResiGroupMemberDao.xml
  62. 39
      epmet-module/resi-group/resi-group-server/src/main/resources/mapper/topic/ResiTopicCommentDao.xml
  63. 27
      epmet-module/resi-group/resi-group-server/src/main/resources/mapper/topic/ResiTopicDao.xml
  64. 9
      epmet-user/epmet-user-client/src/main/java/com/epmet/feign/EpmetUserOpenFeignClient.java
  65. 4
      epmet-user/epmet-user-client/src/main/java/com/epmet/feign/fallback/EpmetUserOpenFeignClientFallback.java

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

5
epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/resigroup/ResiTopicCommentDTO.java

@ -17,9 +17,10 @@
package com.epmet.dataaggre.dto.resigroup;
import lombok.Data;
import java.io.Serializable;
import java.util.Date;
import lombok.Data;
/**
@ -49,7 +50,7 @@ public class ResiTopicCommentDTO implements Serializable {
private String topicId;
/**
* 评论状态
* 评论状态讨论中discussing已屏蔽 :hidden
*/
private String status;

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

20
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;
/**
* 用户基础信息
@ -30,4 +34,20 @@ 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);
/**
* @Description 查询是党员/热心居民的userId
* @Param userIds
* @author zxc
* @date 2021/4/1 上午9:08
*/
List<String> selectUserIdByCustomerId(@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;
/**
* 群组信息表
@ -30,4 +34,12 @@ 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);
}

5
epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/entity/resigroup/ResiTopicCommentEntity.java

@ -18,13 +18,10 @@
package com.epmet.dataaggre.entity.resigroup;
import com.baomidou.mybatisplus.annotation.TableName;
import com.epmet.commons.mybatis.entity.BaseEpmetEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.util.Date;
/**
* 话题评论表
*
@ -49,7 +46,7 @@ public class ResiTopicCommentEntity extends BaseEpmetEntity {
private String topicId;
/**
* 评论状态
* 评论状态讨论中discussing已屏蔽 :hidden
*/
private String status;

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<>();
}
}

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

@ -1,8 +1,29 @@
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);
/**
* @Description 查询是党员/热心居民的userId
* @Param userIds
* @author zxc
* @date 2021/4/1 上午9:08
*/
List<String> selectUserIdByCustomerId(List<String> userIds);
}

30
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,29 @@ 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);
}
/**
* @Description 查询是党员/热心居民的userId
* @Param userIds
* @author zxc
* @date 2021/4/1 上午9:08
*/
@Override
public List<String> selectUserIdByCustomerId(List<String> userIds) {
return userBaseInfoDao.selectUserIdByCustomerId(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);
}

58
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,56 @@ 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);
});
List<String> showUsers = epmetUserService.selectUserIdByCustomerId(userIds);
if (CollectionUtils.isEmpty(showUsers)){
return new ArrayList<>();
}
List<CandidateListResultDTO> disResult = new ArrayList<>();
showUsers.forEach(u -> result.stream().filter(r -> u.equals(r.getUserId())).forEach(r -> disResult.add(r)));
return disResult;
}
}

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

@ -3,4 +3,38 @@
<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>
<!-- 查询客户下是党员/热心居民的userId -->
<select id="selectUserIdByCustomerId" resultType="java.lang.String">
SELECT
DISTINCT(ur.USER_ID) AS userId
FROM epmet_role er
LEFT JOIN user_role ur ON ur.ROLE_ID = er.ID
WHERE ur.DEL_FLAG = 0
AND (er.ROLE_KEY = 'warmhearted' OR er.ROLE_KEY = 'partymember')
AND (
<foreach collection="userIds" item="userId" separator=" OR ">
ur.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

@ -282,4 +282,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

@ -241,4 +241,9 @@ public class GovIssueOpenFeignClientFallBack implements GovIssueOpenFeignClient
public Result<List<ProjectCategoryDictResultDTO>> getCustomerCategoryDict(CustomerCategoryDTO customerCategoryDTO) {
return ModuleUtils.feignConError(ServiceConstant.GOV_ISSUE_SERVER, "getCustomerCategoryDict", customerCategoryDTO);
}
@Override
public Result<List<String>> notIssueToTopicIds(List<String> topicIdList) {
return ModuleUtils.feignConError(ServiceConstant.GOV_ISSUE_SERVER, "notIssueToTopicIds", topicIdList);
}
}

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

97
epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/dto/member/ExitGroupRecordDTO.java

@ -0,0 +1,97 @@
/**
* Copyright 2018 人人开源 https://www.renren.io
* <p>
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
* <p>
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
* <p>
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package com.epmet.resi.group.dto.member;
import lombok.Data;
import java.io.Serializable;
import java.util.Date;
/**
* 退群记录表
*
* @author generator generator@elink-cn.com
* @since v1.0.0 2021-03-29
*/
@Data
public class ExitGroupRecordDTO implements Serializable {
private static final long serialVersionUID = 1L;
/**
* 主键
*/
private String id;
/**
* 客户id
*/
private String customerId;
/**
* 小组id
*/
private String groupId;
/**
* 组成员用户id
*/
private String memberUserId;
/**
* 屏蔽他的话题及评论 yes屏蔽 no不屏蔽
*/
private String shieldFlag;
/**
* 0组长移除;
*/
private String leaveType;
/**
* 删除标识
*/
private String delFlag;
/**
* 乐观锁
*/
private Integer revision;
/**
* 当前操作人id
*/
private String createdBy;
/**
* 创建时间
*/
private Date createdTime;
/**
* 更新人
*/
private String updatedBy;
/**
* 更新时间
*/
private Date updatedTime;
}

97
epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/dto/member/GroupLeaderTransferRecordDTO.java

@ -0,0 +1,97 @@
/**
* Copyright 2018 人人开源 https://www.renren.io
* <p>
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
* <p>
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
* <p>
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package com.epmet.resi.group.dto.member;
import lombok.Data;
import java.io.Serializable;
import java.util.Date;
/**
* 组长身份转让记录表
*
* @author generator generator@elink-cn.com
* @since v1.0.0 2021-03-29
*/
@Data
public class GroupLeaderTransferRecordDTO implements Serializable {
private static final long serialVersionUID = 1L;
/**
* 主键
*/
private String id;
/**
* 客户id
*/
private String customerId;
/**
* 小组id
*/
private String groupId;
/**
* 原组长userId
*/
private String originalLeader;
/**
* 新组长userId
*/
private String newLeader;
/**
* 组长自主转让resi工作人员转让gov
*/
private String type;
/**
* 删除标识
*/
private String delFlag;
/**
* 乐观锁
*/
private Integer revision;
/**
* 当前操作人id即组长id
*/
private String createdBy;
/**
* 创建时间
*/
private Date createdTime;
/**
* 更新人
*/
private String updatedBy;
/**
* 更新时间
*/
private Date updatedTime;
}

32
epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/dto/member/form/ConfirmTransferFormDTO.java

@ -0,0 +1,32 @@
package com.epmet.resi.group.dto.member.form;
import lombok.Data;
import javax.validation.constraints.NotBlank;
import java.io.Serializable;
/**
* 确认转让组-(工作端通用)入参
*
* @author yinzuomei@elink-cn.com
* @date 2021/3/30 10:06
*/
@Data
public class ConfirmTransferFormDTO implements Serializable {
private static final long serialVersionUID = -6087185953287544147L;
@NotBlank(message = "小组id不能为空")
private String groupId;
@NotBlank(message = "新组长用户id不能为空")
private String newLeaderUserId;
@NotBlank(message = "type不能为空:自主转让resi,工作人员转让gov")
private String type;
/**************************以上是需要前端传入的参数*******************************************************/
@NotBlank(message = "tokenDto中获取customerId为空")
private String customerId;
@NotBlank(message = "tokenDto中获取userId为空")
private String currentUserId;
}

5
epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/dto/topic/ResiTopicCommentDTO.java

@ -17,9 +17,10 @@
package com.epmet.resi.group.dto.topic;
import lombok.Data;
import java.io.Serializable;
import java.util.Date;
import lombok.Data;
/**
@ -49,7 +50,7 @@ public class ResiTopicCommentDTO implements Serializable {
private String topicId;
/**
* 评论状态
* 评论状态讨论中discussing已屏蔽 :hidden
*/
private String status;

5
epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/comment/entity/ResiTopicCommentEntity.java

@ -18,13 +18,10 @@
package com.epmet.modules.comment.entity;
import com.baomidou.mybatisplus.annotation.TableName;
import com.epmet.commons.mybatis.entity.BaseEpmetEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.util.Date;
/**
* 话题评论表
*
@ -49,7 +46,7 @@ public class ResiTopicCommentEntity extends BaseEpmetEntity {
private String topicId;
/**
* 评论状态
* 评论状态讨论中discussing已屏蔽 :hidden
*/
private String status;

3
epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/constant/GroupMemberConstant.java

@ -13,7 +13,8 @@ public interface GroupMemberConstant {
/**
* 删除组成员时对应话题操作日志表设置默认的屏蔽理由
*/
String DELETE_MEMBER_REASON = "删除组成员,屏蔽该成员话题";
String DELETE_MEMBER_REASON = "删除组员,屏蔽他的话题及评论";
String SLIENT_SUCCESS = "禁言成功";
}

9
epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/constant/UserMessageConstant.java

@ -90,4 +90,13 @@ public interface UserMessageConstant {
*/
String SCANCODE_OPERATE = "通过扫码加入小组。";
/**
* 新组长上任收到消息
* */
String NEW_LEADER_UP = "您已成为【%s】的组长,请查看。";
/**
* 原组长下台
* */
String ORIGINAL_LEADER_DOWN="您已失去【%s】的组长身份,请查看。";
}

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

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

@ -0,0 +1,197 @@
package com.epmet.modules.group.service.impl;
import com.epmet.commons.tools.constant.AppClientConstant;
import com.epmet.commons.tools.constant.Constant;
import com.epmet.commons.tools.constant.EpmetRoleKeyConstant;
import com.epmet.commons.tools.constant.NumConstant;
import com.epmet.commons.tools.exception.RenException;
import com.epmet.commons.tools.utils.Result;
import com.epmet.dto.form.UserRoleFormDTO;
import com.epmet.dto.result.UserRoleResultDTO;
import com.epmet.feign.EpmetUserOpenFeignClient;
import com.epmet.feign.GovIssueOpenFeignClient;
import com.epmet.modules.constant.GroupMemberConstant;
import com.epmet.modules.group.dao.ResiGroupDao;
import com.epmet.modules.group.dao.ResiGroupStatisticalDao;
import com.epmet.modules.group.entity.ResiGroupEntity;
import com.epmet.modules.group.entity.ResiGroupStatisticalEntity;
import com.epmet.modules.group.redis.ResiGroupRedis;
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.ResiTopicOperationEntity;
import com.epmet.modules.topic.service.ResiTopicOperationService;
import com.epmet.resi.group.constant.TopicConstant;
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;
@Autowired
private ResiTopicOperationService resiTopicOperationService;
@Autowired
private EpmetUserOpenFeignClient epmetUserOpenFeignClient;
@Autowired
private ResiGroupStatisticalDao resiGroupStatisticalDao;
@Autowired
private ResiGroupRedis resiGroupRedis;
@Autowired
private ResiGroupDao resiGroupDao;
/**
* @param formDTO
* @Description 删除组员
* @author sun
*/
@Override
@Transactional(rollbackFor = Exception.class)
public void removeMember(ExitGroupFormDTO formDTO) {
//0.组长自己不能删除自己
if(formDTO.getUserId().equals(formDTO.getOperateUserId())){
throw new RenException("群组长不能删除自己");
}
//1.校验被删除人员是否是当前小组内成员
int num = resiGroupMemberDao.checkUserInGroup(formDTO.getUserId(), formDTO.getGroupId());
if (num < NumConstant.ONE) {
throw new RenException("当前待删除人员不是本小组成员");
}
//2.判断是否屏蔽本小组内历史话题
List<String> delIdList = new ArrayList<>();
if (Constant.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());
//2-4.话题操作日志表批量新增记录
List<ResiTopicOperationEntity> list = new ArrayList<>();
delIdList.forEach(d->{
ResiTopicOperationEntity entity = new ResiTopicOperationEntity();
entity.setOperationType(TopicConstant.HIDDEN);
entity.setOperationReason(GroupMemberConstant.DELETE_MEMBER_REASON);
entity.setTopicId(d);
list.add(entity);
});
resiTopicOperationService.insertBatch(list);
}
}
//去重
if(delIdList.size()>NumConstant.ZERO){
delIdList = delIdList.stream().distinct().collect(Collectors.toList());
}
int count = delIdList.size();
//3.判断是否屏蔽本小组内历史评论
if (Constant.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(NumConstant.ZERO_STR);
if (exitGroupRecordDao.insert(entity) < NumConstant.ONE) {
throw new RenException(String.format("新增退群记录表数据操作失败,小组Id【%s】被修改人Id【%s】", formDTO.getGroupId(), formDTO.getUserId()));
}
//5.群组统计表修改数据
//5-1.获取被删人员当前网格居民端角色信息
ResiGroupEntity groupEntity = resiGroupDao.selectById(formDTO.getGroupId());
UserRoleFormDTO dto = new UserRoleFormDTO();
dto.setApp(AppClientConstant.APP_RESI);
dto.setUserId(formDTO.getUserId());
dto.setCustomerId(formDTO.getCustomerId());
dto.setGridId(groupEntity.getGridId());
Result<List<UserRoleResultDTO>> resultUser = epmetUserOpenFeignClient.getUserRoleInfo(dto);
if (!resultUser.success()) {
throw new RenException(resultUser.getInternalMsg());
}
List<UserRoleResultDTO> roleList = resultUser.getData();
//5-2.群组统计表数据修改,缓存数据修改
ResiGroupStatisticalEntity statisticalEntity = resiGroupStatisticalDao.selectByResiGroupId(formDTO.getGroupId());
if (null == statisticalEntity) {
throw new RenException("未查询到群组统计数据,删除失败");
}
statisticalEntity.setTotalMembers(statisticalEntity.getTotalMembers() - 1);
statisticalEntity.setTotalTopics(statisticalEntity.getTotalTopics()-count);
statisticalEntity.setTotalNormalMemebers(statisticalEntity.getTotalNormalMemebers() - 1);
roleList.forEach(r -> {
if (EpmetRoleKeyConstant.PARTYMEMBER.equals(r.getRoleKey())) {//党员总数减一
statisticalEntity.setTotalPartyMembers(statisticalEntity.getTotalPartyMembers() - 1);
}
if (EpmetRoleKeyConstant.WARMHEARTED.equals(r.getRoleKey())) {//热心居民总数减一
statisticalEntity.setTotalEarnestMemebers(statisticalEntity.getTotalEarnestMemebers() - 1);
}
});
resiGroupStatisticalDao.updateById(statisticalEntity);
resiGroupRedis.delGroup(formDTO.getGroupId());
resiGroupRedis.get(formDTO.getGroupId());
}
}

40
epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/member/controller/ExitGroupRecordController.java

@ -0,0 +1,40 @@
/**
* Copyright 2018 人人开源 https://www.renren.io
* <p>
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
* <p>
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
* <p>
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package com.epmet.modules.member.controller;
import com.epmet.modules.member.service.ExitGroupRecordService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
* 退群记录表
*
* @author generator generator@elink-cn.com
* @since v1.0.0 2021-03-29
*/
@RestController
@RequestMapping("exitgroup")
public class ExitGroupRecordController {
@Autowired
private ExitGroupRecordService exitGroupRecordService;
}

61
epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/member/controller/GroupLeaderTransferRecordController.java

@ -0,0 +1,61 @@
/**
* Copyright 2018 人人开源 https://www.renren.io
* <p>
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
* <p>
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
* <p>
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package com.epmet.modules.member.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.modules.member.service.GroupLeaderTransferRecordService;
import com.epmet.resi.group.dto.member.form.ConfirmTransferFormDTO;
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 generator generator@elink-cn.com
* @since v1.0.0 2021-03-29
*/
@RestController
@RequestMapping("leadertransfer")
public class GroupLeaderTransferRecordController {
@Autowired
private GroupLeaderTransferRecordService groupLeaderTransferRecordService;
/**
* @return com.epmet.commons.tools.utils.Result
* @param formDTO
* @author yinzuomei
* @description 确认转让组-(工作端通用) NEI:https://nei.netease.com/interface/detail/?pid=52286&id=355049
* @Date 2021/3/30 10:08
**/
@PostMapping("confirmtransfer")
public Result confirmTransfer(@LoginUser TokenDto tokenDto, @RequestBody ConfirmTransferFormDTO formDTO){
formDTO.setCustomerId(tokenDto.getCustomerId());
formDTO.setCurrentUserId(tokenDto.getUserId());
ValidatorUtils.validateEntity(formDTO);
groupLeaderTransferRecordService.confirmTransfer(formDTO);
return new Result();
}
}

33
epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/member/dao/ExitGroupRecordDao.java

@ -0,0 +1,33 @@
/**
* Copyright 2018 人人开源 https://www.renren.io
* <p>
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
* <p>
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
* <p>
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package com.epmet.modules.member.dao;
import com.epmet.commons.mybatis.dao.BaseDao;
import com.epmet.modules.member.entity.ExitGroupRecordEntity;
import org.apache.ibatis.annotations.Mapper;
/**
* 退群记录表
*
* @author generator generator@elink-cn.com
* @since v1.0.0 2021-03-29
*/
@Mapper
public interface ExitGroupRecordDao extends BaseDao<ExitGroupRecordEntity> {
}

33
epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/member/dao/GroupLeaderTransferRecordDao.java

@ -0,0 +1,33 @@
/**
* Copyright 2018 人人开源 https://www.renren.io
* <p>
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
* <p>
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
* <p>
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package com.epmet.modules.member.dao;
import com.epmet.commons.mybatis.dao.BaseDao;
import com.epmet.modules.member.entity.GroupLeaderTransferRecordEntity;
import org.apache.ibatis.annotations.Mapper;
/**
* 组长身份转让记录表
*
* @author generator generator@elink-cn.com
* @since v1.0.0 2021-03-29
*/
@Mapper
public interface GroupLeaderTransferRecordDao extends BaseDao<GroupLeaderTransferRecordEntity> {
}

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

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

@ -128,4 +128,20 @@ 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);
/**
* @return java.util.List<com.epmet.resi.group.dto.member.ResiGroupMemberDTO>
* @param groupId
* @param userId
* @author yinzuomei
* @description 查询当前用户被移出群的记录按创建时间降序
* @Date 2021/4/6 12:50
**/
List<ResiGroupMemberDTO> queryMemberRemovedRecs(@Param("groupId")String groupId, @Param("userId")String userId);
}

63
epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/member/entity/ExitGroupRecordEntity.java

@ -0,0 +1,63 @@
/**
* Copyright 2018 人人开源 https://www.renren.io
* <p>
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
* <p>
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
* <p>
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package com.epmet.modules.member.entity;
import com.baomidou.mybatisplus.annotation.TableName;
import com.epmet.commons.mybatis.entity.BaseEpmetEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;
/**
* 退群记录表
*
* @author generator generator@elink-cn.com
* @since v1.0.0 2021-03-29
*/
@Data
@EqualsAndHashCode(callSuper=false)
@TableName("exit_group_record")
public class ExitGroupRecordEntity extends BaseEpmetEntity {
private static final long serialVersionUID = 1L;
/**
* 客户id
*/
private String customerId;
/**
* 小组id
*/
private String groupId;
/**
* 组成员用户id
*/
private String memberUserId;
/**
* 屏蔽他的话题及评论 yes屏蔽 no不屏蔽
*/
private String shieldFlag;
/**
* 0组长移除;
*/
private String leaveType;
}

63
epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/member/entity/GroupLeaderTransferRecordEntity.java

@ -0,0 +1,63 @@
/**
* Copyright 2018 人人开源 https://www.renren.io
* <p>
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
* <p>
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
* <p>
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package com.epmet.modules.member.entity;
import com.baomidou.mybatisplus.annotation.TableName;
import com.epmet.commons.mybatis.entity.BaseEpmetEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;
/**
* 组长身份转让记录表
*
* @author generator generator@elink-cn.com
* @since v1.0.0 2021-03-29
*/
@Data
@EqualsAndHashCode(callSuper=false)
@TableName("group_leader_transfer_record")
public class GroupLeaderTransferRecordEntity extends BaseEpmetEntity {
private static final long serialVersionUID = 1L;
/**
* 客户id
*/
private String customerId;
/**
* 小组id
*/
private String groupId;
/**
* 原组长userId
*/
private String originalLeader;
/**
* 新组长userId
*/
private String newLeader;
/**
* 组长自主转让resi工作人员转让gov
*/
private String type;
}

32
epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/member/redis/ResiGroupMemberRedis.java

@ -19,9 +19,7 @@ package com.epmet.modules.member.redis;
import cn.hutool.core.bean.BeanUtil;
import com.epmet.commons.tools.constant.FieldConstant;
import com.epmet.commons.tools.constant.NumConstant;
import com.epmet.commons.tools.redis.RedisKeys;
import com.epmet.commons.tools.redis.RedisUtils;
import com.epmet.commons.tools.utils.ConvertUtils;
import com.epmet.commons.tools.utils.Result;
@ -33,10 +31,10 @@ import com.epmet.modules.feign.EpmetUserFeignClient;
import com.epmet.modules.group.service.ResiGroupService;
import com.epmet.modules.member.service.ResiGroupMemberService;
import com.epmet.modules.utils.ModuleConstant;
import com.epmet.resi.group.constant.TopicConstant;
import com.epmet.resi.group.dto.member.ResiGroupMemberDTO;
import com.epmet.resi.group.dto.member.ResiGroupMemberInfoRedisDTO;
import com.epmet.resi.group.dto.member.result.ResiGroupMemberInfoRedisResultDTO;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@ -100,11 +98,23 @@ public class ResiGroupMemberRedis {
(ResiGroupMemberInfoRedisDTO) redisUtils.get(ResiGroupRedisKeys.getResiGroupMemberInfoKey(groupId,userId));
//如果缓存中没有该成员数据
if(null == memberCache || StringUtils.isBlank(memberCache.getUserId())){
Map<String,Object> param = new HashMap<>();
/*Map<String,Object> param = new HashMap<>();
param.put(TopicConstant.CUSTOMER_USER_ID,userId);
param.put(TopicConstant.RESI_GROUP_ID,groupId);
param.put(FieldConstant.DEL_FLAG, NumConstant.ZERO_STR);
List<ResiGroupMemberDTO> memberList = memberService.list(param);
List<ResiGroupMemberDTO> memberList = memberService.list(param);*/
List<ResiGroupMemberDTO> memberList=new ArrayList<>();
ResiGroupMemberDTO resiGroupMemberDTO=memberService.getResiGroupMember(groupId,userId);
if (null == resiGroupMemberDTO) {
//查询组员被移除的记录
List<ResiGroupMemberDTO> delMemberList = memberService.queryMemberRemovedRecs(groupId, userId);
if (CollectionUtils.isNotEmpty(delMemberList)) {
logger.warn(String.format("groupId=%s,userId=%s,组员已被删除", groupId, userId));
memberList.add(delMemberList.get(NumConstant.ZERO));
}
}else{
memberList.add(resiGroupMemberDTO);
}
if(null != memberList && memberList.size() >= 1){
if(memberList.size() > 1) {
memberList.sort(Comparator.comparing(ResiGroupMemberDTO::getCreatedTime, Collections.reverseOrder()));
@ -204,4 +214,16 @@ public class ResiGroupMemberRedis {
return null;
}
/**
* @return void
* @param groupId
* @param userId
* @author yinzuomei
* @description 删除某个小组成员的缓存信息
* @Date 2021/3/31 10:08
**/
public void deleteMemberCatche(String groupId, String userId) {
String key=ResiGroupRedisKeys.getResiGroupMemberInfoKey(groupId,userId);
redisUtils.delete(key);
}
}

95
epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/member/service/ExitGroupRecordService.java

@ -0,0 +1,95 @@
/**
* Copyright 2018 人人开源 https://www.renren.io
* <p>
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
* <p>
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
* <p>
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package com.epmet.modules.member.service;
import com.epmet.commons.mybatis.service.BaseService;
import com.epmet.commons.tools.page.PageData;
import com.epmet.modules.member.entity.ExitGroupRecordEntity;
import com.epmet.resi.group.dto.member.ExitGroupRecordDTO;
import java.util.List;
import java.util.Map;
/**
* 退群记录表
*
* @author generator generator@elink-cn.com
* @since v1.0.0 2021-03-29
*/
public interface ExitGroupRecordService extends BaseService<ExitGroupRecordEntity> {
/**
* 默认分页
*
* @param params
* @return PageData<ExitGroupRecordDTO>
* @author generator
* @date 2021-03-29
*/
PageData<ExitGroupRecordDTO> page(Map<String, Object> params);
/**
* 默认查询
*
* @param params
* @return java.util.List<ExitGroupRecordDTO>
* @author generator
* @date 2021-03-29
*/
List<ExitGroupRecordDTO> list(Map<String, Object> params);
/**
* 单条查询
*
* @param id
* @return ExitGroupRecordDTO
* @author generator
* @date 2021-03-29
*/
ExitGroupRecordDTO get(String id);
/**
* 默认保存
*
* @param dto
* @return void
* @author generator
* @date 2021-03-29
*/
void save(ExitGroupRecordDTO dto);
/**
* 默认更新
*
* @param dto
* @return void
* @author generator
* @date 2021-03-29
*/
void update(ExitGroupRecordDTO dto);
/**
* 批量删除
*
* @param ids
* @return void
* @author generator
* @date 2021-03-29
*/
void delete(String[] ids);
}

105
epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/member/service/GroupLeaderTransferRecordService.java

@ -0,0 +1,105 @@
/**
* Copyright 2018 人人开源 https://www.renren.io
* <p>
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
* <p>
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
* <p>
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package com.epmet.modules.member.service;
import com.epmet.commons.mybatis.service.BaseService;
import com.epmet.commons.tools.page.PageData;
import com.epmet.modules.member.entity.GroupLeaderTransferRecordEntity;
import com.epmet.resi.group.dto.member.GroupLeaderTransferRecordDTO;
import com.epmet.resi.group.dto.member.form.ConfirmTransferFormDTO;
import java.util.List;
import java.util.Map;
/**
* 组长身份转让记录表
*
* @author generator generator@elink-cn.com
* @since v1.0.0 2021-03-29
*/
public interface GroupLeaderTransferRecordService extends BaseService<GroupLeaderTransferRecordEntity> {
/**
* 默认分页
*
* @param params
* @return PageData<GroupLeaderTransferRecordDTO>
* @author generator
* @date 2021-03-29
*/
PageData<GroupLeaderTransferRecordDTO> page(Map<String, Object> params);
/**
* 默认查询
*
* @param params
* @return java.util.List<GroupLeaderTransferRecordDTO>
* @author generator
* @date 2021-03-29
*/
List<GroupLeaderTransferRecordDTO> list(Map<String, Object> params);
/**
* 单条查询
*
* @param id
* @return GroupLeaderTransferRecordDTO
* @author generator
* @date 2021-03-29
*/
GroupLeaderTransferRecordDTO get(String id);
/**
* 默认保存
*
* @param dto
* @return void
* @author generator
* @date 2021-03-29
*/
void save(GroupLeaderTransferRecordDTO dto);
/**
* 默认更新
*
* @param dto
* @return void
* @author generator
* @date 2021-03-29
*/
void update(GroupLeaderTransferRecordDTO dto);
/**
* 批量删除
*
* @param ids
* @return void
* @author generator
* @date 2021-03-29
*/
void delete(String[] ids);
/**
* @return void
* @param formDTO
* @author yinzuomei
* @description 确认转让组-(工作端通用)
* @Date 2021/3/30 10:11
**/
void confirmTransfer(ConfirmTransferFormDTO formDTO);
}

19
epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/member/service/ResiGroupMemberService.java

@ -206,4 +206,23 @@ public interface ResiGroupMemberService extends BaseService<ResiGroupMemberEntit
* @date 2020.12.22 13:48
*/
void sendMessageToGroupLeader(ResiGroupDTO resiGroupDTO, String currentUserId);
/**
* @return com.epmet.resi.group.dto.member.ResiGroupMemberDTO
* @param groupId
* @author yinzuomei
* @description 获取组长信息
* @Date 2021/3/30 10:17
**/
ResiGroupMemberDTO getGroupLeader(String groupId);
/**
* @return java.util.List<com.epmet.resi.group.dto.member.ResiGroupMemberDTO>
* @param groupId
* @param userId
* @author yinzuomei
* @description 查询当前用户被移出群的记录按创建时间降序
* @Date 2021/4/6 12:48
**/
List<ResiGroupMemberDTO> queryMemberRemovedRecs(String groupId, String userId);
}

99
epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/member/service/impl/ExitGroupRecordServiceImpl.java

@ -0,0 +1,99 @@
/**
* Copyright 2018 人人开源 https://www.renren.io
* <p>
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
* <p>
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
* <p>
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package com.epmet.modules.member.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.epmet.commons.mybatis.service.impl.BaseServiceImpl;
import com.epmet.commons.tools.constant.FieldConstant;
import com.epmet.commons.tools.page.PageData;
import com.epmet.commons.tools.utils.ConvertUtils;
import com.epmet.modules.member.dao.ExitGroupRecordDao;
import com.epmet.modules.member.entity.ExitGroupRecordEntity;
import com.epmet.modules.member.service.ExitGroupRecordService;
import com.epmet.resi.group.dto.member.ExitGroupRecordDTO;
import org.apache.commons.lang3.StringUtils;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.Arrays;
import java.util.List;
import java.util.Map;
/**
* 退群记录表
*
* @author generator generator@elink-cn.com
* @since v1.0.0 2021-03-29
*/
@Service
public class ExitGroupRecordServiceImpl extends BaseServiceImpl<ExitGroupRecordDao, ExitGroupRecordEntity> implements ExitGroupRecordService {
@Override
public PageData<ExitGroupRecordDTO> page(Map<String, Object> params) {
IPage<ExitGroupRecordEntity> page = baseDao.selectPage(
getPage(params, FieldConstant.CREATED_TIME, false),
getWrapper(params)
);
return getPageData(page, ExitGroupRecordDTO.class);
}
@Override
public List<ExitGroupRecordDTO> list(Map<String, Object> params) {
List<ExitGroupRecordEntity> entityList = baseDao.selectList(getWrapper(params));
return ConvertUtils.sourceToTarget(entityList, ExitGroupRecordDTO.class);
}
private QueryWrapper<ExitGroupRecordEntity> getWrapper(Map<String, Object> params){
String id = (String)params.get(FieldConstant.ID_HUMP);
QueryWrapper<ExitGroupRecordEntity> wrapper = new QueryWrapper<>();
wrapper.eq(StringUtils.isNotBlank(id), FieldConstant.ID, id);
return wrapper;
}
@Override
public ExitGroupRecordDTO get(String id) {
ExitGroupRecordEntity entity = baseDao.selectById(id);
return ConvertUtils.sourceToTarget(entity, ExitGroupRecordDTO.class);
}
@Override
@Transactional(rollbackFor = Exception.class)
public void save(ExitGroupRecordDTO dto) {
ExitGroupRecordEntity entity = ConvertUtils.sourceToTarget(dto, ExitGroupRecordEntity.class);
insert(entity);
}
@Override
@Transactional(rollbackFor = Exception.class)
public void update(ExitGroupRecordDTO dto) {
ExitGroupRecordEntity entity = ConvertUtils.sourceToTarget(dto, ExitGroupRecordEntity.class);
updateById(entity);
}
@Override
@Transactional(rollbackFor = Exception.class)
public void delete(String[] ids) {
// 逻辑删除(@TableLogic 注解)
baseDao.deleteBatchIds(Arrays.asList(ids));
}
}

226
epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/member/service/impl/GroupLeaderTransferRecordServiceImpl.java

@ -0,0 +1,226 @@
/**
* Copyright 2018 人人开源 https://www.renren.io
* <p>
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
* <p>
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
* <p>
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package com.epmet.modules.member.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.epmet.commons.mybatis.service.impl.BaseServiceImpl;
import com.epmet.commons.tools.constant.FieldConstant;
import com.epmet.commons.tools.exception.EpmetErrorCode;
import com.epmet.commons.tools.exception.RenException;
import com.epmet.commons.tools.page.PageData;
import com.epmet.commons.tools.utils.ConvertUtils;
import com.epmet.dto.form.UserMessageFormDTO;
import com.epmet.feign.EpmetMessageOpenFeignClient;
import com.epmet.modules.constant.UserMessageConstant;
import com.epmet.modules.group.service.ResiGroupService;
import com.epmet.modules.member.dao.GroupLeaderTransferRecordDao;
import com.epmet.modules.member.entity.GroupLeaderTransferRecordEntity;
import com.epmet.modules.member.redis.ResiGroupMemberRedis;
import com.epmet.modules.member.service.GroupLeaderTransferRecordService;
import com.epmet.modules.member.service.ResiGroupMemberService;
import com.epmet.modules.utils.ModuleConstant;
import com.epmet.resi.group.constant.LeaderFlagConstant;
import com.epmet.resi.group.dto.group.ResiGroupDTO;
import com.epmet.resi.group.dto.member.GroupLeaderTransferRecordDTO;
import com.epmet.resi.group.dto.member.ResiGroupMemberDTO;
import com.epmet.resi.group.dto.member.form.ConfirmTransferFormDTO;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Map;
/**
* 组长身份转让记录表
*
* @author generator generator@elink-cn.com
* @since v1.0.0 2021-03-29
*/
@Slf4j
@Service
public class GroupLeaderTransferRecordServiceImpl extends BaseServiceImpl<GroupLeaderTransferRecordDao, GroupLeaderTransferRecordEntity> implements GroupLeaderTransferRecordService {
@Autowired
private ResiGroupMemberService resiGroupMemberService;
@Autowired
private EpmetMessageOpenFeignClient epmetMessageOpenFeignClient;
@Autowired
private ResiGroupService resiGroupService;
@Autowired
private ResiGroupMemberRedis resiGroupMemberRedis;
@Override
public PageData<GroupLeaderTransferRecordDTO> page(Map<String, Object> params) {
IPage<GroupLeaderTransferRecordEntity> page = baseDao.selectPage(
getPage(params, FieldConstant.CREATED_TIME, false),
getWrapper(params)
);
return getPageData(page, GroupLeaderTransferRecordDTO.class);
}
@Override
public List<GroupLeaderTransferRecordDTO> list(Map<String, Object> params) {
List<GroupLeaderTransferRecordEntity> entityList = baseDao.selectList(getWrapper(params));
return ConvertUtils.sourceToTarget(entityList, GroupLeaderTransferRecordDTO.class);
}
private QueryWrapper<GroupLeaderTransferRecordEntity> getWrapper(Map<String, Object> params){
String id = (String)params.get(FieldConstant.ID_HUMP);
QueryWrapper<GroupLeaderTransferRecordEntity> wrapper = new QueryWrapper<>();
wrapper.eq(StringUtils.isNotBlank(id), FieldConstant.ID, id);
return wrapper;
}
@Override
public GroupLeaderTransferRecordDTO get(String id) {
GroupLeaderTransferRecordEntity entity = baseDao.selectById(id);
return ConvertUtils.sourceToTarget(entity, GroupLeaderTransferRecordDTO.class);
}
@Override
@Transactional(rollbackFor = Exception.class)
public void save(GroupLeaderTransferRecordDTO dto) {
GroupLeaderTransferRecordEntity entity = ConvertUtils.sourceToTarget(dto, GroupLeaderTransferRecordEntity.class);
insert(entity);
}
@Override
@Transactional(rollbackFor = Exception.class)
public void update(GroupLeaderTransferRecordDTO dto) {
GroupLeaderTransferRecordEntity entity = ConvertUtils.sourceToTarget(dto, GroupLeaderTransferRecordEntity.class);
updateById(entity);
}
@Override
@Transactional(rollbackFor = Exception.class)
public void delete(String[] ids) {
// 逻辑删除(@TableLogic 注解)
baseDao.deleteBatchIds(Arrays.asList(ids));
}
/**
* @param formDTO
* @return void
* @author yinzuomei
* @description 确认转让组-(工作端通用)
* @Date 2021/3/30 10:11
**/
@Transactional(rollbackFor = Exception.class)
@Override
public void confirmTransfer(ConfirmTransferFormDTO formDTO) {
//原组长
ResiGroupMemberDTO originalLeader = resiGroupMemberService.getGroupLeader(formDTO.getGroupId());
if(formDTO.getNewLeaderUserId().equals(originalLeader.getCustomerUserId())){
log.warn("候选人已经是组长");
return;
}
//如果是居民端转让组,只能是当前组长操作
if (ModuleConstant.APP_RESI.equals(formDTO.getType())) {
//当前用户如果不是组长,不允许提交
if (!originalLeader.getCustomerUserId().equals(formDTO.getCurrentUserId())) {
//只有组长才可以操作
throw new RenException(EpmetErrorCode.GROUP_LEADER_CAN_EDIT_GROUP_INFO.getCode(),EpmetErrorCode.GROUP_LEADER_CAN_EDIT_GROUP_INFO.getMsg());
}
}
originalLeader.setGroupLeaderFlag(LeaderFlagConstant.GROUP_MEMBER);
resiGroupMemberService.update(originalLeader);
//新组长赋值为组员
ResiGroupMemberDTO newLeader=resiGroupMemberService.getResiGroupMember(formDTO.getGroupId(),formDTO.getNewLeaderUserId());
newLeader.setGroupLeaderFlag(LeaderFlagConstant.GROUP_LEADER);
resiGroupMemberService.update(newLeader);
//插入日志表
GroupLeaderTransferRecordEntity entity = new GroupLeaderTransferRecordEntity();
entity.setCustomerId(formDTO.getCustomerId());
entity.setGroupId(formDTO.getGroupId());
//原组长userId
entity.setOriginalLeader(originalLeader.getCustomerUserId());
entity.setNewLeader(formDTO.getNewLeaderUserId());
entity.setType(formDTO.getType());
insert(entity);
//发送站内信
saveUserMessage(formDTO,originalLeader.getCustomerUserId());
//新组长、原组长成员缓存更新
this.updateGroupMemberInfo(originalLeader.getCustomerUserId(),formDTO.getNewLeaderUserId(),formDTO.getGroupId());
}
/**
* @return void
* @param originalLeaderUserId
* @param newLeaderUserId
* @param groupId
* @author yinzuomei
* @description 先删缓存后查没有会查数据库同时放进缓存
* @Date 2021/3/31 10:09
**/
private void updateGroupMemberInfo(String originalLeaderUserId, String newLeaderUserId, String groupId) {
resiGroupMemberRedis.deleteMemberCatche(groupId,originalLeaderUserId);
resiGroupMemberRedis.deleteMemberCatche(groupId,newLeaderUserId);
resiGroupMemberRedis.get(groupId,originalLeaderUserId);
resiGroupMemberRedis.get(groupId,newLeaderUserId);
}
private void saveUserMessage(ConfirmTransferFormDTO formDTO,String originalLeaderUserId) {
ResiGroupDTO resiGroupDTO=resiGroupService.get(formDTO.getGroupId());
//组长自己操作:
//组长将组转给组员后,成为组长的组员收到站内信“您有一条小组消息 您已成为【某某小组】的组长,请查看。
//工作人员操作:
//工作人员将组转给组员后,成为组长的组员收到站内信“您有一条小组消息 您已成为【某某小组】的组长,请查看。
// 原组长收到站内信“您有一条小组消息 您已失去【某某小组】的组长身份,请查看。
List<UserMessageFormDTO> msgList=new ArrayList<>();
if(ModuleConstant.APP_GOV.equals(formDTO.getType())){
//原组长
UserMessageFormDTO originalLeader = new UserMessageFormDTO();
originalLeader.setUserId(originalLeaderUserId);
originalLeader.setTitle(UserMessageConstant.GROUP_TITLE);
originalLeader.setReadFlag(ModuleConstant.UNREAD);
originalLeader.setApp(ModuleConstant.APP_RESI);
//小组所属的网格
originalLeader.setGridId(resiGroupDTO.getGridId());
originalLeader.setCustomerId(formDTO.getCustomerId());
originalLeader.setMessageContent(String.format(UserMessageConstant.ORIGINAL_LEADER_DOWN,resiGroupDTO.getGroupName()));
msgList.add(originalLeader);
}
//新组长
UserMessageFormDTO newLeader = new UserMessageFormDTO();
newLeader.setUserId(formDTO.getNewLeaderUserId());
newLeader.setTitle(UserMessageConstant.GROUP_TITLE);
newLeader.setReadFlag(ModuleConstant.UNREAD);
newLeader.setApp(ModuleConstant.APP_RESI);
//小组所属的网格
newLeader.setGridId(resiGroupDTO.getGridId());
newLeader.setCustomerId(formDTO.getCustomerId());
newLeader.setMessageContent(String.format(UserMessageConstant.NEW_LEADER_UP,resiGroupDTO.getGroupName()));
msgList.add(newLeader);
if(!epmetMessageOpenFeignClient.saveUserMessageList(msgList).success()){
log.warn("转让组发送站内信失败");
}
}
}

31
epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/member/service/impl/ResiGroupMemberServiceImpl.java

@ -35,7 +35,6 @@ import com.epmet.constant.ReadFlagConstant;
import com.epmet.dto.IssueShareLinkVisitRecordDTO;
import com.epmet.dto.form.*;
import com.epmet.dto.result.UserBaseInfoResultDTO;
import com.epmet.dto.result.UserBasicInfo;
import com.epmet.dto.result.UserResiInfoResultDTO;
import com.epmet.feign.EpmetMessageOpenFeignClient;
import com.epmet.feign.EpmetUserOpenFeignClient;
@ -53,7 +52,6 @@ import com.epmet.modules.member.entity.ResiGroupMemberEntity;
import com.epmet.modules.member.redis.ResiGroupMemberRedis;
import com.epmet.modules.member.service.GroupMemeberOperationService;
import com.epmet.modules.member.service.ResiGroupMemberService;
import com.epmet.modules.topic.dao.ResiTopicDao;
import com.epmet.modules.topic.entity.TopicShareLinkVisitRecordEntity;
import com.epmet.modules.topic.service.ResiTopicService;
import com.epmet.modules.topic.service.TopicShareLinkVisitRecordService;
@ -70,8 +68,8 @@ import com.epmet.resi.group.dto.group.ResiGroupStatisticalInfoRedisDTO;
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.form.*;
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;
@ -314,6 +312,33 @@ public class ResiGroupMemberServiceImpl extends BaseServiceImpl<ResiGroupMemberD
e.printStackTrace();
}
}
/**
* @param groupId
* @return com.epmet.resi.group.dto.member.ResiGroupMemberDTO
* @author yinzuomei
* @description 获取组长信息
* @Date 2021/3/30 10:17
**/
@Override
public ResiGroupMemberDTO getGroupLeader(String groupId) {
ResiGroupMemberDTO groupLeader = resiGroupDao.selectGroupLeader(groupId);
return groupLeader;
}
/**
* @param groupId
* @param userId
* @return java.util.List<com.epmet.resi.group.dto.member.ResiGroupMemberDTO>
* @author yinzuomei
* @description 查询当前用户被移出群的记录按创建时间降序
* @Date 2021/4/6 12:48
**/
@Override
public List<ResiGroupMemberDTO> queryMemberRemovedRecs(String groupId, String userId) {
return baseDao.queryMemberRemovedRecs(groupId,userId);
}
/**
* @param groupMemberListFormDTO
* @return com.epmet.commons.tools.utils.Result

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

2
epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/topic/service/impl/ResiTopicCommentServiceImpl.java

@ -391,6 +391,7 @@ public class ResiTopicCommentServiceImpl extends BaseServiceImpl<ResiTopicCommen
//存入缓存
ResiGroupMemberInfoRedisDTO memberRedisDTO = new ResiGroupMemberInfoRedisDTO();
ResiGroupMemberDTO memberMySql = resiGroupMemberDao.selectGroupMemberInfo(groupId, user.getUserId());
if (null != memberMySql) {
memberRedisDTO.setMemberStatus(memberMySql.getStatus());
memberRedisDTO.setUserId(user.getUserId());
memberRedisDTO.setUserShowName(user.getShowName());
@ -401,6 +402,7 @@ public class ResiTopicCommentServiceImpl extends BaseServiceImpl<ResiTopicCommen
memberRedisDTO.setGroupId(groupId);
resiGroupMemberRedis.set(memberRedisDTO);
}
}
} else {
logger.warn(ModuleConstant.USER_INFO_LIST_NOT_FOUND);

18
epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/topic/service/impl/ResiTopicServiceImpl.java

@ -102,7 +102,6 @@ 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.jsoup.helper.StringUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
@ -907,21 +906,18 @@ public class ResiTopicServiceImpl extends BaseServiceImpl<ResiTopicDao, ResiTopi
private Result verifyLeader(ResiTopicEntity topic,String userId){
if(null != topic){
ResiGroupMemberDTO leaderVerify = resiGroupMemberDao.selectLeaderMember(topic.getGroupId());
if(null != leaderVerify){
if (null == leaderVerify) {
throw new RenException(String.format("没有找到该组组长,groupId=%s", topic.getGroupId()));
}
//1.2判断是否是组长
if(!StringUtils.equals(leaderVerify.getCustomerUserId(),userId)){
if (!StringUtils.equals(leaderVerify.getCustomerUserId(), userId)) {
//非组长,无权限进行操作
logger.error(ModuleConstant.NO_TEAMLEADER_AUTH);
throw new RenException(ModuleConstant.NO_TEAMLEADER_AUTH);
}else{
} else {
//是组长
return new Result();
}
}else{
//未找到当前用户的成员信息
logger.error(ModuleConstant.NOT_BELONG_TO_CURRENT_GROUP);
throw new RenException(ModuleConstant.NOT_BELONG_TO_CURRENT_GROUP);
}
}else{
//未能识别该话题基本信息
logger.error(ModuleConstant.NO_SUCH_TOPIC);
@ -1120,6 +1116,7 @@ public class ResiTopicServiceImpl extends BaseServiceImpl<ResiTopicDao, ResiTopi
//存入缓存
ResiGroupMemberInfoRedisDTO memberRedisDTO = new ResiGroupMemberInfoRedisDTO();
ResiGroupMemberDTO memberMySql = resiGroupMemberDao.selectGroupMemberInfo(groupId, user.getUserId());
if(null != memberMySql){
memberRedisDTO.setMemberStatus(memberMySql.getStatus());
memberRedisDTO.setUserId(user.getUserId());
memberRedisDTO.setUserShowName(user.getShowName());
@ -1130,6 +1127,7 @@ public class ResiTopicServiceImpl extends BaseServiceImpl<ResiTopicDao, ResiTopi
memberRedisDTO.setGroupId(groupId);
resiGroupMemberRedis.set(memberRedisDTO);
}
}
} else {
logger.warn(ModuleConstant.USER_INFO_LIST_NOT_FOUND);
@ -1194,6 +1192,7 @@ public class ResiTopicServiceImpl extends BaseServiceImpl<ResiTopicDao, ResiTopi
//存入缓存
ResiGroupMemberInfoRedisDTO memberRedisDTO = new ResiGroupMemberInfoRedisDTO();
ResiGroupMemberDTO memberMySql = resiGroupMemberDao.selectGroupMemberInfo(groupId, user.getUserId());
if (null != memberMySql) {
memberRedisDTO.setMemberStatus(memberMySql.getStatus());
memberRedisDTO.setUserId(user.getUserId());
memberRedisDTO.setUserShowName(user.getShowName());
@ -1204,6 +1203,7 @@ public class ResiTopicServiceImpl extends BaseServiceImpl<ResiTopicDao, ResiTopi
memberRedisDTO.setGroupId(groupId);
resiGroupMemberRedis.set(memberRedisDTO);
}
}
} else {
logger.warn(ModuleConstant.USER_INFO_LIST_NOT_FOUND);

15
epmet-module/resi-group/resi-group-server/src/main/resources/db/migration/V0.0.12__group_leader_transfer_record.sql

@ -0,0 +1,15 @@
DROP TABLE IF EXISTS `group_leader_transfer_record`;
CREATE TABLE `group_leader_transfer_record` (
`ID` varchar(64) NOT NULL COMMENT '主键',
`CUSTOMER_ID` varchar(64) NOT NULL COMMENT '客户id',
`GROUP_ID` varchar(64) NOT NULL COMMENT '小组id',
`ORIGINAL_LEADER` varchar(64) NOT NULL COMMENT '原组长userId',
`NEW_LEADER` varchar(64) NOT NULL COMMENT '新组长userId',
`TYPE` varchar(32) NOT NULL COMMENT '组长自主转让resi,工作人员转让gov',
`DEL_FLAG` varchar(1) NOT NULL DEFAULT '0' COMMENT '删除标识',
`REVISION` int(11) NOT NULL DEFAULT '0' COMMENT '乐观锁',
`CREATED_BY` varchar(64) NOT NULL COMMENT '当前操作人id即组长id',
`CREATED_TIME` datetime NOT NULL COMMENT '创建时间',
`UPDATED_BY` varchar(64) NOT NULL COMMENT '更新人',
`UPDATED_TIME` datetime NOT NULL COMMENT '更新时间'
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC COMMENT='组长身份转让记录表';

15
epmet-module/resi-group/resi-group-server/src/main/resources/db/migration/V0.0.13__exit_group_record.sql

@ -0,0 +1,15 @@
DROP TABLE IF EXISTS `exit_group_record`;
CREATE TABLE `exit_group_record` (
`ID` varchar(64) NOT NULL COMMENT '主键',
`CUSTOMER_ID` varchar(64) NOT NULL COMMENT '客户id',
`GROUP_ID` varchar(64) NOT NULL COMMENT '小组id',
`MEMBER_USER_ID` varchar(64) NOT NULL COMMENT '组成员用户id',
`SHIELD_FLAG` varchar(3) NOT NULL COMMENT '屏蔽他的话题及评论 yes:屏蔽 no:不屏蔽',
`LEAVE_TYPE` varchar(2) NOT NULL COMMENT '0:组长移除;',
`DEL_FLAG` varchar(1) NOT NULL DEFAULT '0' COMMENT '删除标识',
`REVISION` int(11) NOT NULL DEFAULT '0' COMMENT '乐观锁',
`CREATED_BY` varchar(64) NOT NULL COMMENT '当前操作人id',
`CREATED_TIME` datetime NOT NULL COMMENT '创建时间',
`UPDATED_BY` varchar(64) NOT NULL COMMENT '更新人',
`UPDATED_TIME` datetime NOT NULL COMMENT '更新时间'
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC COMMENT='退群记录表';

8
epmet-module/resi-group/resi-group-server/src/main/resources/mapper/group/ResiGroupDao.xml

@ -155,7 +155,10 @@
FROM
resi_group rg
LEFT JOIN resi_group_statistical rgs ON ( rg.id = rgs.RESI_GROUP_ID )
LEFT JOIN resi_group_member rgm ON ( rg.id = rgm.RESI_GROUP_ID AND rgm.CUSTOMER_USER_ID =#{userId})
LEFT JOIN resi_group_member rgm
ON ( rg.id = rgm.RESI_GROUP_ID
AND rgm.DEL_FLAG='0'
AND rgm.CUSTOMER_USER_ID =#{userId})
WHERE
rg.DEL_FLAG = '0'
AND rgs.DEL_FLAG = '0'
@ -188,10 +191,9 @@
rg.*
FROM
resi_group rg
LEFT JOIN resi_group_member rgm ON ( rg.id = rgm.RESI_GROUP_ID )
LEFT JOIN resi_group_member rgm ON ( rg.id = rgm.RESI_GROUP_ID AND rgm.DEL_FLAG = '0')
WHERE
rg.DEL_FLAG = '0'
AND rgm.DEL_FLAG = '0'
AND rgm.GROUP_LEADER_FLAG = 'leader'
AND rgm.CUSTOMER_USER_ID = #{userId}
AND rg.GROUP_NAME = #{groupName}

8
epmet-module/resi-group/resi-group-server/src/main/resources/mapper/member/ExitGroupRecordDao.xml

@ -0,0 +1,8 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.epmet.modules.member.dao.ExitGroupRecordDao">
</mapper>

8
epmet-module/resi-group/resi-group-server/src/main/resources/mapper/member/GroupLeaderTransferRecordDao.xml

@ -0,0 +1,8 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.epmet.modules.member.dao.GroupLeaderTransferRecordDao">
</mapper>

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>

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

@ -69,7 +69,6 @@
resi_group_member rgm
WHERE
rgm.DEL_FLAG = '0'
AND rgm.ENTER_GROUP_TYPE = 'created'
AND rgm.GROUP_LEADER_FLAG = 'leader'
AND rgm.RESI_GROUP_ID = #{groupId}
</select>
@ -165,4 +164,31 @@
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>
<select id="queryMemberRemovedRecs" parameterType="map" resultType="com.epmet.resi.group.dto.member.ResiGroupMemberDTO">
SELECT
*
FROM
resi_group_member rgm
WHERE
rgm.RESI_GROUP_ID = #{groupId}
AND rgm.CUSTOMER_USER_ID = #{userId}
AND rgm.DEL_FLAG = '1'
AND rgm.STATUS = 'removed'
ORDER BY
rgm.CREATED_TIME DESC
</select>
</mapper>

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

@ -63,11 +63,11 @@
RESI_TOPIC_COMMENT
WHERE
DEL_FLAG = '0'
AND
TOPIC_ID = #{topicId}
ORDER BY CREATED_TIME DESC
LIMIT
#{pageNo},#{pageSize}
and `STATUS`='discussing'
AND TOPIC_ID = #{topicId}
ORDER BY
CREATED_TIME DESC
LIMIT #{pageNo},#{pageSize}
</select>
<select id="selectTopicList" resultType="java.lang.String">
@ -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

@ -570,5 +570,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>

9
epmet-user/epmet-user-client/src/main/java/com/epmet/feign/EpmetUserOpenFeignClient.java

@ -496,4 +496,13 @@ public interface EpmetUserOpenFeignClient {
**/
@GetMapping(value = "/epmetuser/govstaffrole/querycustomergovrolelist/{customerId}")
Result<List<RoleInfoResultDTO>> queryCustomerGovRoleList(@PathVariable("customerId")String customerId);
/**
* @return UserRoleResultDTO
* @Description 根据用户Id来源app客户Id查询用户角色
* @Param userRoleFormDTO
* @Author sun
**/
@PostMapping(value = "/epmetuser/userrole/getuserroleinfo")
Result<List<UserRoleResultDTO>> getUserRoleInfo(@RequestBody UserRoleFormDTO userRoleFormDTO);
}

4
epmet-user/epmet-user-client/src/main/java/com/epmet/feign/fallback/EpmetUserOpenFeignClientFallback.java

@ -354,4 +354,8 @@ public class EpmetUserOpenFeignClientFallback implements EpmetUserOpenFeignClien
return ModuleUtils.feignConError(ServiceConstant.EPMET_USER_SERVER, "initGovStaffRolesForCustomer", customerId);
}
@Override
public Result<List<UserRoleResultDTO>> getUserRoleInfo(UserRoleFormDTO userRoleFormDTO) {
return ModuleUtils.feignConError(ServiceConstant.EPMET_USER_SERVER, "getUserRoleInfo", userRoleFormDTO);
}
}

Loading…
Cancel
Save