diff --git a/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/redis/RedisUtils.java b/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/redis/RedisUtils.java index 309cb9192e..dac7d44896 100644 --- a/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/redis/RedisUtils.java +++ b/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 getListLrange(String key){ + List range = redisTemplate.opsForList().range(key, 0, -1); + return range; + } + /** * @Description Redis lrem : * 根据参数 count 的值,移除列表中与参数 value 相等的元素 diff --git a/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/constant/GroupConstant.java b/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/constant/GroupConstant.java index ba879a3fee..928115a08f 100644 --- a/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/constant/GroupConstant.java +++ b/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:"; } diff --git a/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/epmetuser/result/UserInfosResultDTO.java b/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/epmetuser/result/UserInfosResultDTO.java new file mode 100644 index 0000000000..19bfd88186 --- /dev/null +++ b/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; + +} diff --git a/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/resigroup/ResiTopicCommentDTO.java b/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/resigroup/ResiTopicCommentDTO.java index b84e9d8f10..149ecb2089 100644 --- a/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/resigroup/ResiTopicCommentDTO.java +++ b/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; diff --git a/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/resigroup/form/CandidateListFormDTO.java b/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/resigroup/form/CandidateListFormDTO.java new file mode 100644 index 0000000000..60113c8ed1 --- /dev/null +++ b/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; + +} diff --git a/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/resigroup/result/CandidateListResultDTO.java b/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/resigroup/result/CandidateListResultDTO.java new file mode 100644 index 0000000000..100c94f58d --- /dev/null +++ b/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 badgeList; + + public CandidateListResultDTO() { + this.memberId = ""; + this.userId = ""; + this.headPhoto = ""; + this.userShowName = ""; + this.leaderFlag = ""; + this.badgeList = new ArrayList<>(); + } +} diff --git a/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/controller/ResiGroupController.java b/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/controller/ResiGroupController.java index 984db9af9f..259b22cff0 100644 --- a/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/controller/ResiGroupController.java +++ b/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> candidateList(@RequestBody CandidateListFormDTO formDTO, @LoginUser TokenDto tokenDto){ + ValidatorUtils.validateEntity(formDTO, CandidateListFormDTO.CandidateListForm.class); + formDTO.setCustomerId(tokenDto.getCustomerId()); + return new Result>().ok(resiGroupService.candidateList(formDTO)); + } + } diff --git a/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/dao/epmetuser/UserBaseInfoDao.java b/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/dao/epmetuser/UserBaseInfoDao.java index f7ced8b6f0..805657fc11 100644 --- a/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/dao/epmetuser/UserBaseInfoDao.java +++ b/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,21 @@ import org.apache.ibatis.annotations.Mapper; */ @Mapper public interface UserBaseInfoDao extends BaseDao { - + + /** + * @Description 根据UserIds查询 + * @Param userIds + * @author zxc + * @date 2021/3/30 上午11:07 + */ + List selectUserInfosByUserIds(@Param("userIds") List userIds); + + /** + * @Description 查询是党员/热心居民的userId + * @Param userIds + * @author zxc + * @date 2021/4/1 上午9:08 + */ + List selectUserIdByCustomerId(@Param("userIds") List userIds); + } \ No newline at end of file diff --git a/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/dao/resigroup/ResiGroupDao.java b/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/dao/resigroup/ResiGroupDao.java index 1658a05ad9..f297a4f82f 100644 --- a/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/dao/resigroup/ResiGroupDao.java +++ b/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 { + + /** + * @Description 根据小组ID查询组员信息身份【不包括组长】 + * @Param groupId + * @author zxc + * @date 2021/3/30 上午10:13 + */ + List candidateList(@Param("groupId")String groupId); } \ No newline at end of file diff --git a/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/entity/resigroup/ResiTopicCommentEntity.java b/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/entity/resigroup/ResiTopicCommentEntity.java index ff12b3fb1a..18ceec8a1b 100644 --- a/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/entity/resigroup/ResiTopicCommentEntity.java +++ b/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; diff --git a/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/redis/ResiGroupRedis.java b/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/redis/ResiGroupRedis.java new file mode 100644 index 0000000000..3efbd220d4 --- /dev/null +++ b/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 getBadgeInfoByUserId(String customerId,String userId){ + String key = GroupConstant.BADGE_KEY+customerId+":"+userId; + List result = redisUtils.getListLrange(key); + if (!CollectionUtils.isEmpty(result)){ + List icons = new ArrayList<>(); + for (Object o : result) { + Map map = (Map) o; + icons.add(map.get(GroupConstant.BADGE_ICON)); + } + return icons; + } + return new ArrayList<>(); + } + +} diff --git a/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/epmetuser/EpmetUserService.java b/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/epmetuser/EpmetUserService.java index fc3acacff7..d6e03f7f40 100644 --- a/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/epmetuser/EpmetUserService.java +++ b/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 selectUserInfosByUserIds(List userIds); + + /** + * @Description 查询是党员/热心居民的userId + * @Param userIds + * @author zxc + * @date 2021/4/1 上午9:08 + */ + List selectUserIdByCustomerId(List userIds); + } diff --git a/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/epmetuser/impl/EpmetUserServiceImpl.java b/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/epmetuser/impl/EpmetUserServiceImpl.java index a992809a17..2dac9b0ccd 100644 --- a/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/epmetuser/impl/EpmetUserServiceImpl.java +++ b/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 selectUserInfosByUserIds(List userIds) { + return userBaseInfoDao.selectUserInfosByUserIds(userIds); + } + + /** + * @Description 查询是党员/热心居民的userId + * @Param userIds + * @author zxc + * @date 2021/4/1 上午9:08 + */ + @Override + public List selectUserIdByCustomerId(List userIds) { + return userBaseInfoDao.selectUserIdByCustomerId(userIds); + } } diff --git a/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/resigroup/ResiGroupService.java b/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/resigroup/ResiGroupService.java index 0b3b4d1891..5b163c4f5d 100644 --- a/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/resigroup/ResiGroupService.java +++ b/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 candidateList(CandidateListFormDTO formDTO); List selectTopicInfoByIds(List topicIds); } diff --git a/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/resigroup/impl/ResiGroupServiceImpl.java b/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/resigroup/impl/ResiGroupServiceImpl.java index 931c13ffbb..5e5c727555 100644 --- a/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/resigroup/impl/ResiGroupServiceImpl.java +++ b/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 selectTopicInfoByIds(List topicIds) { return resiTopicDao.selectTopicInfoByIds(topicIds); } + + /** + * @Description 可胜任组长-组员列表(工作端通用) + * @Param formDTO + * @author zxc + * @date 2021/3/30 上午9:45 + */ + @Override + public List candidateList(CandidateListFormDTO formDTO) { + // 根据小组ID查询组员信息身份【不包括组长自己】 + PageInfo pageInfo = PageHelper.startPage(formDTO.getPageNo(), formDTO.getPageSize()).doSelectPageInfo(() -> resiGroupDao.candidateList(formDTO.getGroupId())); + List result = pageInfo.getList(); + // 没有直接返回空集合 + if (CollectionUtils.isEmpty(result)){ + return new ArrayList<>(); + } + // 获取userIds + List userIds = result.stream().map(m -> m.getUserId()).collect(Collectors.toList()); + // 查询用户信息【名字 头像】 + List 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 badgeInfo = resiGroupRedis.getBadgeInfoByUserId(formDTO.getCustomerId(), r.getUserId()); + r.setBadgeList(null==badgeInfo ? new ArrayList<>() : badgeInfo); + }); + List showUsers = epmetUserService.selectUserIdByCustomerId(userIds); + if (CollectionUtils.isEmpty(showUsers)){ + return new ArrayList<>(); + } + List disResult = new ArrayList<>(); + showUsers.forEach(u -> result.stream().filter(r -> u.equals(r.getUserId())).forEach(r -> disResult.add(r))); + return disResult; + } } diff --git a/epmet-module/data-aggregator/data-aggregator-server/src/main/resources/mapper/epmetuser/UserBaseInfoDao.xml b/epmet-module/data-aggregator/data-aggregator-server/src/main/resources/mapper/epmetuser/UserBaseInfoDao.xml index 72039e24cd..489908227d 100644 --- a/epmet-module/data-aggregator/data-aggregator-server/src/main/resources/mapper/epmetuser/UserBaseInfoDao.xml +++ b/epmet-module/data-aggregator/data-aggregator-server/src/main/resources/mapper/epmetuser/UserBaseInfoDao.xml @@ -3,4 +3,38 @@ + + + + + \ No newline at end of file diff --git a/epmet-module/data-aggregator/data-aggregator-server/src/main/resources/mapper/resigroup/ResiGroupDao.xml b/epmet-module/data-aggregator/data-aggregator-server/src/main/resources/mapper/resigroup/ResiGroupDao.xml index d2c9e20e2d..8a350ceec9 100644 --- a/epmet-module/data-aggregator/data-aggregator-server/src/main/resources/mapper/resigroup/ResiGroupDao.xml +++ b/epmet-module/data-aggregator/data-aggregator-server/src/main/resources/mapper/resigroup/ResiGroupDao.xml @@ -3,4 +3,16 @@ + + \ No newline at end of file diff --git a/epmet-module/gov-issue/gov-issue-client/src/main/java/com/epmet/feign/GovIssueOpenFeignClient.java b/epmet-module/gov-issue/gov-issue-client/src/main/java/com/epmet/feign/GovIssueOpenFeignClient.java index 277239669d..888c6b8ff3 100644 --- a/epmet-module/gov-issue/gov-issue-client/src/main/java/com/epmet/feign/GovIssueOpenFeignClient.java +++ b/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> getCustomerCategoryDict(@RequestBody CustomerCategoryDTO dto); + + /** + * @param topicIdList + * @Description 查询当前未成为议题的话题但是提交了转议题申请的 + * @author sun + */ + @PostMapping("/gov/issue/issueapplication/notissuetotopicids") + Result> notIssueToTopicIds(@RequestBody List topicIdList); } diff --git a/epmet-module/gov-issue/gov-issue-client/src/main/java/com/epmet/feign/fallback/GovIssueOpenFeignClientFallBack.java b/epmet-module/gov-issue/gov-issue-client/src/main/java/com/epmet/feign/fallback/GovIssueOpenFeignClientFallBack.java index a304db1fa7..518a93d629 100644 --- a/epmet-module/gov-issue/gov-issue-client/src/main/java/com/epmet/feign/fallback/GovIssueOpenFeignClientFallBack.java +++ b/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> getCustomerCategoryDict(CustomerCategoryDTO customerCategoryDTO) { return ModuleUtils.feignConError(ServiceConstant.GOV_ISSUE_SERVER, "getCustomerCategoryDict", customerCategoryDTO); } + + @Override + public Result> notIssueToTopicIds(List topicIdList) { + return ModuleUtils.feignConError(ServiceConstant.GOV_ISSUE_SERVER, "notIssueToTopicIds", topicIdList); + } } diff --git a/epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/controller/IssueApplicationController.java b/epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/controller/IssueApplicationController.java index 63f5af6117..575b75a56b 100644 --- a/epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/controller/IssueApplicationController.java +++ b/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>().ok(issueApplicationService.queryUserPubAuditingIssues(fomrDTO)); } + + /** + * @param topicIdList + * @Description 查询当前未成为议题的话题但是提交了转议题申请的 + * @author sun + */ + @PostMapping("notissuetotopicids") + public Result> notIssueToTopicIds(@RequestBody List topicIdList) { + return new Result>().ok(issueApplicationService.notIssueToTopicIds(topicIdList)); + } } \ No newline at end of file diff --git a/epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/dao/IssueApplicationDao.java b/epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/dao/IssueApplicationDao.java index 38ec62c1d6..33296076b6 100644 --- a/epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/dao/IssueApplicationDao.java +++ b/epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/dao/IssueApplicationDao.java @@ -66,4 +66,12 @@ public interface IssueApplicationDao extends BaseDao { List selectUserPubAuditingIssues(UserPubAuditingIssueFormDTO formDTO); List selectByTopicId(@Param("topicId") String topicId); + + /** + * @param topicIdList + * @Description 查询当前未成为议题的话题但是提交了转议题申请的 + * @author sun + */ + List selectTopicIdList(@Param("topicIdList") List topicIdList); + } \ No newline at end of file diff --git a/epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/service/IssueApplicationService.java b/epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/service/IssueApplicationService.java index 6c2df1b318..aecc10b0b5 100644 --- a/epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/service/IssueApplicationService.java +++ b/epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/service/IssueApplicationService.java @@ -143,4 +143,11 @@ public interface IssueApplicationService extends BaseService queryUserPubAuditingIssues(UserPubAuditingIssueFormDTO fomrDTO); + + /** + * @param topicIdList + * @Description 查询当前未成为议题的话题但是提交了转议题申请的 + * @author sun + */ + List notIssueToTopicIds(List topicIdList); } \ No newline at end of file diff --git a/epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/service/impl/IssueApplicationServiceImpl.java b/epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/service/impl/IssueApplicationServiceImpl.java index 71e62d3e1f..a699e58a61 100644 --- a/epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/service/impl/IssueApplicationServiceImpl.java +++ b/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 notIssueToTopicIds(List topicIdList) { + List idList = baseDao.selectTopicIdList(topicIdList); + return idList; + } + } \ No newline at end of file diff --git a/epmet-module/gov-issue/gov-issue-server/src/main/resources/mapper/IssueApplicationDao.xml b/epmet-module/gov-issue/gov-issue-server/src/main/resources/mapper/IssueApplicationDao.xml index 3d94af1c56..2820a43019 100644 --- a/epmet-module/gov-issue/gov-issue-server/src/main/resources/mapper/IssueApplicationDao.xml +++ b/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 + + + \ No newline at end of file diff --git a/epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/dto/group/form/ExitGroupFormDTO.java b/epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/dto/group/form/ExitGroupFormDTO.java new file mode 100644 index 0000000000..0c10e60de1 --- /dev/null +++ b/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; +} diff --git a/epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/dto/member/ExitGroupRecordDTO.java b/epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/dto/member/ExitGroupRecordDTO.java new file mode 100644 index 0000000000..ad0cc7e1ef --- /dev/null +++ b/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 + *

+ * 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. + *

+ * 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. + *

+ * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +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; + +} \ No newline at end of file diff --git a/epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/dto/member/GroupLeaderTransferRecordDTO.java b/epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/dto/member/GroupLeaderTransferRecordDTO.java new file mode 100644 index 0000000000..7bd1e2a490 --- /dev/null +++ b/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 + *

+ * 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. + *

+ * 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. + *

+ * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +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; + +} \ No newline at end of file diff --git a/epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/dto/member/form/ConfirmTransferFormDTO.java b/epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/dto/member/form/ConfirmTransferFormDTO.java new file mode 100644 index 0000000000..3fd80cd64c --- /dev/null +++ b/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; +} diff --git a/epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/dto/topic/ResiTopicCommentDTO.java b/epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/dto/topic/ResiTopicCommentDTO.java index bfe36f8c40..82cf7f5653 100644 --- a/epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/dto/topic/ResiTopicCommentDTO.java +++ b/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; diff --git a/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/comment/entity/ResiTopicCommentEntity.java b/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/comment/entity/ResiTopicCommentEntity.java index 040f966e2d..37c991d8db 100644 --- a/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/comment/entity/ResiTopicCommentEntity.java +++ b/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; diff --git a/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/constant/GroupMemberConstant.java b/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/constant/GroupMemberConstant.java index fdd709ca73..15761d2eac 100644 --- a/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/constant/GroupMemberConstant.java +++ b/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 = "禁言成功"; + } diff --git a/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/constant/UserMessageConstant.java b/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/constant/UserMessageConstant.java index 29f89329e4..eff45ac9a5 100644 --- a/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/constant/UserMessageConstant.java +++ b/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】的组长身份,请查看。"; } diff --git a/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/group/controller/ExitGroupController.java b/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/group/controller/ExitGroupController.java new file mode 100644 index 0000000000..a987253c0d --- /dev/null +++ b/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(); + } + +} diff --git a/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/group/service/ExitGroupService.java b/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/group/service/ExitGroupService.java new file mode 100644 index 0000000000..af8b7f30c7 --- /dev/null +++ b/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); + +} diff --git a/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/group/service/impl/ExitGroupServiceImpl.java b/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/group/service/impl/ExitGroupServiceImpl.java new file mode 100644 index 0000000000..186531756b --- /dev/null +++ b/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 delIdList = new ArrayList<>(); + if (Constant.YES.equals(formDTO.getShieldFlag())) { + //2-1.查询当前被删除人员发表过的话题还未成为议题的并且只是谈论中的数据 + List topicIdList = resiTopicDao.selectIdList(formDTO.getGroupId(), formDTO.getUserId()); + //2-2.查询当前未成为议题的话题但是提交了转议题申请的话题 + if (!CollectionUtils.isEmpty(topicIdList)) { + Result> 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 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 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> resultUser = epmetUserOpenFeignClient.getUserRoleInfo(dto); + if (!resultUser.success()) { + throw new RenException(resultUser.getInternalMsg()); + } + List 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()); + + } + + +} diff --git a/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/member/controller/ExitGroupRecordController.java b/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/member/controller/ExitGroupRecordController.java new file mode 100644 index 0000000000..065ca72efe --- /dev/null +++ b/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 + *

+ * 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. + *

+ * 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. + *

+ * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +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; + + +} \ No newline at end of file diff --git a/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/member/controller/GroupLeaderTransferRecordController.java b/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/member/controller/GroupLeaderTransferRecordController.java new file mode 100644 index 0000000000..98376bb68e --- /dev/null +++ b/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 + *

+ * 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. + *

+ * 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. + *

+ * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +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(); + } +} \ No newline at end of file diff --git a/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/member/dao/ExitGroupRecordDao.java b/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/member/dao/ExitGroupRecordDao.java new file mode 100644 index 0000000000..8169ded9f5 --- /dev/null +++ b/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 + *

+ * 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. + *

+ * 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. + *

+ * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +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 { + +} \ No newline at end of file diff --git a/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/member/dao/GroupLeaderTransferRecordDao.java b/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/member/dao/GroupLeaderTransferRecordDao.java new file mode 100644 index 0000000000..aa9b14bc0a --- /dev/null +++ b/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 + *

+ * 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. + *

+ * 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. + *

+ * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +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 { + +} \ No newline at end of file diff --git a/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/member/dao/GroupMemeberOperationDao.java b/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/member/dao/GroupMemeberOperationDao.java index 49ecf7fbbe..bf0f443668 100644 --- a/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/member/dao/GroupMemeberOperationDao.java +++ b/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 { * @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 + * @param groupId + * @param userId + * @author yinzuomei + * @description 查询当前用户被移出群的记录,按创建时间降序 + * @Date 2021/4/6 12:50 + **/ + List queryMemberRemovedRecs(@Param("groupId")String groupId, @Param("userId")String userId); } diff --git a/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/member/entity/ExitGroupRecordEntity.java b/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/member/entity/ExitGroupRecordEntity.java new file mode 100644 index 0000000000..2af81275a9 --- /dev/null +++ b/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 + *

+ * 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. + *

+ * 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. + *

+ * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +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; + +} diff --git a/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/member/entity/GroupLeaderTransferRecordEntity.java b/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/member/entity/GroupLeaderTransferRecordEntity.java new file mode 100644 index 0000000000..652ac30046 --- /dev/null +++ b/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 + *

+ * 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. + *

+ * 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. + *

+ * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +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; + +} diff --git a/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/member/redis/ResiGroupMemberRedis.java b/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/member/redis/ResiGroupMemberRedis.java index fcb7cb7b4a..f3d5f52942 100644 --- a/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/member/redis/ResiGroupMemberRedis.java +++ b/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 param = new HashMap<>(); + /*Map 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 memberList = memberService.list(param); + List memberList = memberService.list(param);*/ + List memberList=new ArrayList<>(); + ResiGroupMemberDTO resiGroupMemberDTO=memberService.getResiGroupMember(groupId,userId); + if (null == resiGroupMemberDTO) { + //查询组员被移除的记录 + List 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); + } } diff --git a/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/member/service/ExitGroupRecordService.java b/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/member/service/ExitGroupRecordService.java new file mode 100644 index 0000000000..b87212ba9f --- /dev/null +++ b/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 + *

+ * 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. + *

+ * 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. + *

+ * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +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 { + + /** + * 默认分页 + * + * @param params + * @return PageData + * @author generator + * @date 2021-03-29 + */ + PageData page(Map params); + + /** + * 默认查询 + * + * @param params + * @return java.util.List + * @author generator + * @date 2021-03-29 + */ + List list(Map 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); +} \ No newline at end of file diff --git a/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/member/service/GroupLeaderTransferRecordService.java b/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/member/service/GroupLeaderTransferRecordService.java new file mode 100644 index 0000000000..9d4e947536 --- /dev/null +++ b/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 + *

+ * 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. + *

+ * 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. + *

+ * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +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 { + + /** + * 默认分页 + * + * @param params + * @return PageData + * @author generator + * @date 2021-03-29 + */ + PageData page(Map params); + + /** + * 默认查询 + * + * @param params + * @return java.util.List + * @author generator + * @date 2021-03-29 + */ + List list(Map 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); +} \ No newline at end of file diff --git a/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/member/service/ResiGroupMemberService.java b/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/member/service/ResiGroupMemberService.java index a7e1a10aee..5a9563141b 100644 --- a/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/member/service/ResiGroupMemberService.java +++ b/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 + * @param groupId + * @param userId + * @author yinzuomei + * @description 查询当前用户被移出群的记录,按创建时间降序 + * @Date 2021/4/6 12:48 + **/ + List queryMemberRemovedRecs(String groupId, String userId); } diff --git a/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/member/service/impl/ExitGroupRecordServiceImpl.java b/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/member/service/impl/ExitGroupRecordServiceImpl.java new file mode 100644 index 0000000000..181efcdbfc --- /dev/null +++ b/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 + *

+ * 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. + *

+ * 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. + *

+ * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +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 implements ExitGroupRecordService { + + @Override + public PageData page(Map params) { + IPage page = baseDao.selectPage( + getPage(params, FieldConstant.CREATED_TIME, false), + getWrapper(params) + ); + return getPageData(page, ExitGroupRecordDTO.class); + } + + @Override + public List list(Map params) { + List entityList = baseDao.selectList(getWrapper(params)); + + return ConvertUtils.sourceToTarget(entityList, ExitGroupRecordDTO.class); + } + + private QueryWrapper getWrapper(Map params){ + String id = (String)params.get(FieldConstant.ID_HUMP); + + QueryWrapper 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)); + } + +} \ No newline at end of file diff --git a/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/member/service/impl/GroupLeaderTransferRecordServiceImpl.java b/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/member/service/impl/GroupLeaderTransferRecordServiceImpl.java new file mode 100644 index 0000000000..492047cf9b --- /dev/null +++ b/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 + *

+ * 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. + *

+ * 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. + *

+ * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +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 implements GroupLeaderTransferRecordService { + @Autowired + private ResiGroupMemberService resiGroupMemberService; + @Autowired + private EpmetMessageOpenFeignClient epmetMessageOpenFeignClient; + @Autowired + private ResiGroupService resiGroupService; + @Autowired + private ResiGroupMemberRedis resiGroupMemberRedis; + + @Override + public PageData page(Map params) { + IPage page = baseDao.selectPage( + getPage(params, FieldConstant.CREATED_TIME, false), + getWrapper(params) + ); + return getPageData(page, GroupLeaderTransferRecordDTO.class); + } + + @Override + public List list(Map params) { + List entityList = baseDao.selectList(getWrapper(params)); + + return ConvertUtils.sourceToTarget(entityList, GroupLeaderTransferRecordDTO.class); + } + + private QueryWrapper getWrapper(Map params){ + String id = (String)params.get(FieldConstant.ID_HUMP); + + QueryWrapper 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 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("转让组发送站内信失败"); + } + } + +} \ No newline at end of file diff --git a/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/member/service/impl/ResiGroupMemberServiceImpl.java b/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/member/service/impl/ResiGroupMemberServiceImpl.java index 33c2af52a6..7fd7e48259 100644 --- a/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/member/service/impl/ResiGroupMemberServiceImpl.java +++ b/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/member/service/impl/ResiGroupMemberServiceImpl.java @@ -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 + * @author yinzuomei + * @description 查询当前用户被移出群的记录,按创建时间降序 + * @Date 2021/4/6 12:48 + **/ + @Override + public List queryMemberRemovedRecs(String groupId, String userId) { + return baseDao.queryMemberRemovedRecs(groupId,userId); + } + /** * @param groupMemberListFormDTO * @return com.epmet.commons.tools.utils.Result diff --git a/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/topic/dao/ResiTopicCommentDao.java b/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/topic/dao/ResiTopicCommentDao.java index 57ef0adc97..36b7513617 100644 --- a/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/topic/dao/ResiTopicCommentDao.java +++ b/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 { * @date 2020/12/23 上午11:09 */ Integer selectCommentCountByUserId(@Param("userId") String userId); + + /** + * @Description 查询本小组内自己评论过的别人发表的话题Id集合 + * @author sun + */ + List selectTopicIds(@Param("groupId") String groupId, @Param("userId") String userId); + + /** + * @Description 屏蔽自己发表的话题且自己评论过的评论 + * @author sun + */ + void upTopicCommentList(@Param("delIdList") List delIdList, @Param("userId") String userId, @Param("operateUserId") String operateUserId); + } \ No newline at end of file diff --git a/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/topic/dao/ResiTopicDao.java b/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/topic/dao/ResiTopicDao.java index ebbab2046a..abc817659d 100644 --- a/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/topic/dao/ResiTopicDao.java +++ b/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 { String selectCustomerIdByTopicId(@Param("topicId")String topicId); ResiTopicDTO selectByIssueId(@Param("issueId") String issueId); + + /** + * @Description 查询当前小组里被删除人员创建的话题还未转为议题并且是讨论中的话题数据 + * @author sun + */ + List selectIdList(@Param("groupId") String groupId, @Param("userId") String userId); + + /** + * @Description 批量修改话题状态 + * @author sun + */ + int upTopicList(@Param("delIdList") List delIdList, @Param("userId") String userId); } \ No newline at end of file diff --git a/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/topic/service/impl/ResiTopicCommentServiceImpl.java b/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/topic/service/impl/ResiTopicCommentServiceImpl.java index ed76255ad1..f7c7f95d0e 100644 --- a/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/topic/service/impl/ResiTopicCommentServiceImpl.java +++ b/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/topic/service/impl/ResiTopicCommentServiceImpl.java @@ -391,15 +391,17 @@ public class ResiTopicCommentServiceImpl extends BaseServiceImpl + + + + + + + \ No newline at end of file diff --git a/epmet-module/resi-group/resi-group-server/src/main/resources/mapper/member/GroupLeaderTransferRecordDao.xml b/epmet-module/resi-group/resi-group-server/src/main/resources/mapper/member/GroupLeaderTransferRecordDao.xml new file mode 100644 index 0000000000..b8a5334e28 --- /dev/null +++ b/epmet-module/resi-group/resi-group-server/src/main/resources/mapper/member/GroupLeaderTransferRecordDao.xml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/epmet-module/resi-group/resi-group-server/src/main/resources/mapper/member/GroupMemeberOperationDao.xml b/epmet-module/resi-group/resi-group-server/src/main/resources/mapper/member/GroupMemeberOperationDao.xml index c47f80f4d3..4389897bff 100644 --- a/epmet-module/resi-group/resi-group-server/src/main/resources/mapper/member/GroupMemeberOperationDao.xml +++ b/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' + + + + 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 + + diff --git a/epmet-module/resi-group/resi-group-server/src/main/resources/mapper/member/ResiGroupMemberDao.xml b/epmet-module/resi-group/resi-group-server/src/main/resources/mapper/member/ResiGroupMemberDao.xml index 92408b540b..183de49bad 100644 --- a/epmet-module/resi-group/resi-group-server/src/main/resources/mapper/member/ResiGroupMemberDao.xml +++ b/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} @@ -165,4 +164,31 @@ AND RESI_GROUP_ID = #{groupId} AND `STATUS` = 'approved' + + + + 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 + + + diff --git a/epmet-module/resi-group/resi-group-server/src/main/resources/mapper/topic/ResiTopicCommentDao.xml b/epmet-module/resi-group/resi-group-server/src/main/resources/mapper/topic/ResiTopicCommentDao.xml index 87f46e1efc..21a0456e9f 100644 --- a/epmet-module/resi-group/resi-group-server/src/main/resources/mapper/topic/ResiTopicCommentDao.xml +++ b/epmet-module/resi-group/resi-group-server/src/main/resources/mapper/topic/ResiTopicCommentDao.xml @@ -54,20 +54,20 @@ + + + + + UPDATE resi_topic_comment + SET `status` = 'hidden', + updated_by = #{operateUserId}, + updated_time = NOW() + WHERE + del_flag = '0' + AND created_by = #{userId} + + topic_id = #{topicId} + + + diff --git a/epmet-module/resi-group/resi-group-server/src/main/resources/mapper/topic/ResiTopicDao.xml b/epmet-module/resi-group/resi-group-server/src/main/resources/mapper/topic/ResiTopicDao.xml index e1e57899c9..63f7f951b3 100644 --- a/epmet-module/resi-group/resi-group-server/src/main/resources/mapper/topic/ResiTopicDao.xml +++ b/epmet-module/resi-group/resi-group-server/src/main/resources/mapper/topic/ResiTopicDao.xml @@ -570,5 +570,32 @@ where rt.DEL_FLAG='0' and rt.ISSUE_ID=#{issueId} + + + + + + UPDATE resi_topic + SET status = 'hidden', + updated_by = #{userId}, + updated_time = NOW() + WHERE + del_flag = '0' + + id = #{id} + + + diff --git a/epmet-user/epmet-user-client/src/main/java/com/epmet/feign/EpmetUserOpenFeignClient.java b/epmet-user/epmet-user-client/src/main/java/com/epmet/feign/EpmetUserOpenFeignClient.java index 3332aec3a1..5f5ae5b5ce 100644 --- a/epmet-user/epmet-user-client/src/main/java/com/epmet/feign/EpmetUserOpenFeignClient.java +++ b/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> queryCustomerGovRoleList(@PathVariable("customerId")String customerId); + + /** + * @return UserRoleResultDTO + * @Description 根据用户Id、来源app、客户Id查询用户角色 + * @Param userRoleFormDTO + * @Author sun + **/ + @PostMapping(value = "/epmetuser/userrole/getuserroleinfo") + Result> getUserRoleInfo(@RequestBody UserRoleFormDTO userRoleFormDTO); } diff --git a/epmet-user/epmet-user-client/src/main/java/com/epmet/feign/fallback/EpmetUserOpenFeignClientFallback.java b/epmet-user/epmet-user-client/src/main/java/com/epmet/feign/fallback/EpmetUserOpenFeignClientFallback.java index c1944b43a3..328b98f1f3 100644 --- a/epmet-user/epmet-user-client/src/main/java/com/epmet/feign/fallback/EpmetUserOpenFeignClientFallback.java +++ b/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> getUserRoleInfo(UserRoleFormDTO userRoleFormDTO) { + return ModuleUtils.feignConError(ServiceConstant.EPMET_USER_SERVER, "getUserRoleInfo", userRoleFormDTO); + } }