diff --git a/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/constant/DataSourceConstant.java b/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/constant/DataSourceConstant.java index c6a3b0e1bc..dd9ab18035 100644 --- a/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/constant/DataSourceConstant.java +++ b/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/constant/DataSourceConstant.java @@ -32,5 +32,5 @@ public interface DataSourceConstant { String EVALUATION_INDEX = "evaluationIndex"; String OPERCUSTOMIZE="opercustomize"; - String EPMET_MESSAGE="epmentmessage"; + String EPMET_MESSAGE="epmetmessage"; } diff --git a/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/message/form/InfoGroupDetailFormDTO.java b/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/message/form/InfoGroupDetailFormDTO.java new file mode 100644 index 0000000000..7b1ba38061 --- /dev/null +++ b/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/message/form/InfoGroupDetailFormDTO.java @@ -0,0 +1,34 @@ +package com.epmet.dataaggre.dto.message.form; + +import com.epmet.commons.tools.dto.form.PageFormDTO; +import lombok.Data; + +import javax.validation.constraints.NotBlank; +import java.io.Serializable; + +/** + * @Description 群组列表 + * @Author yinzuomei + * @Date 2021/8/20 12:54 下午 + */ +@Data +public class InfoGroupDetailFormDTO extends PageFormDTO implements Serializable { + @NotBlank(message = "群组id不能为空",groups = PageFormDTO.AddUserInternalGroup.class) + private String receiverGroupId; + + + + //以下参数从token中获取 + /** + * 当前用户id + */ + @NotBlank(message = "userId不能为空",groups =PageFormDTO.AddUserInternalGroup.class) + private String userId; + + /** + * 当前客户id + */ + @NotBlank(message = "customerId不能为空",groups = PageFormDTO.AddUserInternalGroup.class) + private String customerId; +} + diff --git a/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/message/result/InfoGroupDetailResDTO.java b/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/message/result/InfoGroupDetailResDTO.java new file mode 100644 index 0000000000..552e4c2a77 --- /dev/null +++ b/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/message/result/InfoGroupDetailResDTO.java @@ -0,0 +1,19 @@ +package com.epmet.dataaggre.dto.message.result; + +import lombok.Data; + +import java.io.Serializable; +import java.util.List; + +/** + * @Description 群组详情 + * @Author yinzuomei + * @Date 2021/8/20 12:58 下午 + */ +@Data +public class InfoGroupDetailResDTO implements Serializable { + private String receiverGroupId; + private String name; + private List staffList; +} + diff --git a/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/message/result/MyInfoGroupResultDTO.java b/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/message/result/MyInfoGroupResultDTO.java new file mode 100644 index 0000000000..4e4c89b2d0 --- /dev/null +++ b/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/message/result/MyInfoGroupResultDTO.java @@ -0,0 +1,24 @@ +package com.epmet.dataaggre.dto.message.result; + +import com.fasterxml.jackson.annotation.JsonIgnore; +import lombok.Data; + +import java.io.Serializable; +import java.util.List; + +/** + * @Description 我创建的群组列表 + * @Author yinzuomei + * @Date 2021/8/20 10:30 上午 + */ +@Data +public class MyInfoGroupResultDTO implements Serializable { + private static final long serialVersionUID = 3621868560778309056L; + private String receiverGroupId; + private String name; + private Integer totalMem; + @JsonIgnore + private List staffIdList; + private List staffNameList; +} + diff --git a/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/message/result/StaffInfoCommonDTO.java b/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/message/result/StaffInfoCommonDTO.java new file mode 100644 index 0000000000..c766f176ec --- /dev/null +++ b/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/message/result/StaffInfoCommonDTO.java @@ -0,0 +1,21 @@ +package com.epmet.dataaggre.dto.message.result; + +import lombok.Data; + +import java.io.Serializable; + +/** + * @Description 工作人员列表基本信息,通用吧 + * @Author yinzuomei + * @Date 2021/8/20 1:02 下午 + */ +@Data +public class StaffInfoCommonDTO implements Serializable { + private String staffId; + private String staffName; + private String gender; + private String orgName; + private String headPhoto; + +} + diff --git a/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/controller/InfoController.java b/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/controller/InfoController.java index 29d4ea7e24..8df2d52213 100644 --- a/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/controller/InfoController.java +++ b/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/controller/InfoController.java @@ -1,9 +1,15 @@ package com.epmet.dataaggre.controller; +import com.epmet.commons.tools.annotation.LoginUser; +import com.epmet.commons.tools.dto.form.PageFormDTO; +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.govorg.form.ReceiversFormDTO; import com.epmet.dataaggre.dto.govorg.result.ReceiversResultDTO; +import com.epmet.dataaggre.dto.message.form.InfoGroupDetailFormDTO; +import com.epmet.dataaggre.dto.message.result.InfoGroupDetailResDTO; +import com.epmet.dataaggre.dto.message.result.MyInfoGroupResultDTO; import com.epmet.dataaggre.service.epmetmessage.EpmetMessageService; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; @@ -11,6 +17,7 @@ import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import javax.annotation.Resource; +import java.util.List; /** * @Description @@ -37,4 +44,34 @@ public class InfoController { return new Result().ok(result); } + + /** + * 发送消息-我创建的群组列表 + * + * @param tokenDto + * @return com.epmet.commons.tools.utils.Result> + * @author yinzuomei + * @date 2021/8/20 10:32 上午 + */ + @PostMapping("grouplist") + public Result> queryMyGroupList(@LoginUser TokenDto tokenDto){ + return new Result>().ok(epmetMessageService.queryMyGroupList(tokenDto.getUserId(),tokenDto.getCustomerId())); + } + + /** + * 发送消息-群组详情 + * + * @param tokenDto + * @param formDTO + * @return com.epmet.commons.tools.utils.Result + * @author yinzuomei + * @date 2021/8/20 12:59 下午 + */ + @PostMapping("groupdetail") + public Result queryGroupDetail(@LoginUser TokenDto tokenDto, @RequestBody InfoGroupDetailFormDTO formDTO){ + formDTO.setCustomerId(tokenDto.getCustomerId()); + formDTO.setUserId(tokenDto.getUserId()); + ValidatorUtils.validateEntity(formDTO, PageFormDTO.AddUserInternalGroup.class); + return new Result().ok(epmetMessageService.queryGroupDetail(formDTO)); + } } diff --git a/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/dao/epmetmessage/InfoReceiversDao.java b/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/dao/epmetmessage/InfoReceiversDao.java index be4a2b9b00..194410bce2 100644 --- a/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/dao/epmetmessage/InfoReceiversDao.java +++ b/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/dao/epmetmessage/InfoReceiversDao.java @@ -18,8 +18,12 @@ package com.epmet.dataaggre.dao.epmetmessage; import com.epmet.commons.mybatis.dao.BaseDao; +import com.epmet.dataaggre.dto.message.result.MyInfoGroupResultDTO; import com.epmet.dataaggre.entity.epmetmessage.InfoReceiversEntity; import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; /** * 消息接收人记录表 @@ -29,5 +33,28 @@ import org.apache.ibatis.annotations.Mapper; */ @Mapper public interface InfoReceiversDao extends BaseDao { - + + /** + * 我创建的群组列表 + * + * @param staffId + * @param customerId + * @return java.util.List + * @author yinzuomei + * @date 2021/8/20 10:37 上午 + */ + List selectMyGroupList(@Param("staffId") String staffId,@Param("customerId") String customerId,@Param("receiverGroupId")String receiverGroupId); + + /** + * 我创建的组内所有的人 + * + * @param staffId + * @param customerId + * @return java.util.List + * @author yinzuomei + * @date 2021/8/20 10:46 上午 + */ + List selectDistinctStaffIds(@Param("staffId") String staffId, + @Param("customerId") String customerId, + @Param("receiverGroupId")String receiverGroupId); } \ No newline at end of file diff --git a/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/epmetmessage/EpmetMessageService.java b/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/epmetmessage/EpmetMessageService.java index eb5cd94040..982cb862a3 100644 --- a/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/epmetmessage/EpmetMessageService.java +++ b/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/epmetmessage/EpmetMessageService.java @@ -2,6 +2,11 @@ package com.epmet.dataaggre.service.epmetmessage; import com.epmet.dataaggre.dto.govorg.form.ReceiversFormDTO; import com.epmet.dataaggre.dto.govorg.result.ReceiversResultDTO; +import com.epmet.dataaggre.dto.message.form.InfoGroupDetailFormDTO; +import com.epmet.dataaggre.dto.message.result.InfoGroupDetailResDTO; +import com.epmet.dataaggre.dto.message.result.MyInfoGroupResultDTO; + +import java.util.List; /** * @author Administrator @@ -15,4 +20,25 @@ public interface EpmetMessageService { * @Date 2021/8/19 14:56 */ ReceiversResultDTO getReceiverList(ReceiversFormDTO formDTO); + + /** + * 我创建的群组列表 + * + * @param staffId + * @param customerId + * @return java.util.List + * @author yinzuomei + * @date 2021/8/20 10:33 上午 + */ + List queryMyGroupList(String staffId, String customerId); + + /** + * 发送消息-群组详情 + * + * @param formDTO + * @return com.epmet.dataaggre.dto.message.result.InfoGroupDetailResDTO + * @author yinzuomei + * @date 2021/8/20 12:59 下午 + */ + InfoGroupDetailResDTO queryGroupDetail(InfoGroupDetailFormDTO formDTO); } diff --git a/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/epmetmessage/impl/EpmetMessageServiceImpl.java b/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/epmetmessage/impl/EpmetMessageServiceImpl.java index 892ada3a5e..c83e72ac5e 100644 --- a/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/epmetmessage/impl/EpmetMessageServiceImpl.java +++ b/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/epmetmessage/impl/EpmetMessageServiceImpl.java @@ -5,19 +5,27 @@ import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.epmet.commons.dynamic.datasource.annotation.DataSource; import com.epmet.commons.tools.constant.NumConstant; +import com.epmet.commons.tools.constant.StrConstant; +import com.epmet.commons.tools.redis.common.CustomerStaffRedis; +import com.epmet.commons.tools.redis.common.bean.CustomerStaffInfoCache; import com.epmet.dataaggre.constant.DataSourceConstant; import com.epmet.dataaggre.dao.epmetmessage.InfoReceiversDao; import com.epmet.dataaggre.dto.govorg.ReceiverDTO; import com.epmet.dataaggre.dto.govorg.form.ReceiversFormDTO; import com.epmet.dataaggre.dto.govorg.result.ReceiversResultDTO; +import com.epmet.dataaggre.dto.message.form.InfoGroupDetailFormDTO; +import com.epmet.dataaggre.dto.message.result.InfoGroupDetailResDTO; +import com.epmet.dataaggre.dto.message.result.MyInfoGroupResultDTO; +import com.epmet.dataaggre.dto.message.result.StaffInfoCommonDTO; import com.epmet.dataaggre.entity.epmetmessage.InfoReceiversEntity; import com.epmet.dataaggre.service.epmetmessage.EpmetMessageService; import lombok.extern.slf4j.Slf4j; import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.lang3.StringUtils; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; -import javax.annotation.Resource; +import java.util.ArrayList; import java.util.Collections; import java.util.List; import java.util.stream.Collectors; @@ -31,9 +39,10 @@ import java.util.stream.Collectors; @DataSource(DataSourceConstant.EPMET_MESSAGE) @Slf4j public class EpmetMessageServiceImpl implements EpmetMessageService { - @Resource + @Autowired private InfoReceiversDao infoReceiversDao; - + @Autowired + private CustomerStaffRedis customerStaffRedis; /** * @param formDTO @@ -70,4 +79,76 @@ public class EpmetMessageServiceImpl implements EpmetMessageService { result.setDataList(dataList); return result; } + + /** + * 我创建的群组列表 + * + * @param staffId + * @param customerId + * @return java.util.List + * @author yinzuomei + * @date 2021/8/20 10:33 上午 + */ + @Override + public List queryMyGroupList(String staffId, String customerId) { + List list = infoReceiversDao.selectMyGroupList(staffId, customerId,null); + if (CollectionUtils.isNotEmpty(list)) { + // 2、遍历每个群组,赋值工作人员姓名列表 + for (MyInfoGroupResultDTO group : list) { + List staffNameList = new ArrayList<>(); + for (String userId : group.getStaffIdList()) { + //查询每个工作人员的基本信息,获取姓名 + CustomerStaffInfoCache staffInfoCache = customerStaffRedis.getStaffInfo(customerId, userId); + if (null != staffInfoCache) { + staffNameList.add(staffInfoCache.getRealName()); + } + } + group.setStaffNameList(staffNameList); + } + } + return list; + } + + /** + * 发送消息-群组详情 + * + * @param formDTO + * @return com.epmet.dataaggre.dto.message.result.InfoGroupDetailResDTO + * @author yinzuomei + * @date 2021/8/20 12:59 下午 + */ + @Override + public InfoGroupDetailResDTO queryGroupDetail(InfoGroupDetailFormDTO formDTO) { + List list = infoReceiversDao.selectMyGroupList(formDTO.getUserId(), formDTO.getCustomerId(),formDTO.getReceiverGroupId()); + InfoGroupDetailResDTO resDTO = new InfoGroupDetailResDTO(); + if (CollectionUtils.isNotEmpty(list)) { + // 2、遍历每个群组,赋值工作人员姓名列表 + for (MyInfoGroupResultDTO group : list) { + resDTO.setReceiverGroupId(group.getReceiverGroupId()); + resDTO.setName(group.getName()); + List staffList=new ArrayList<>(); + + for (String userId : group.getStaffIdList()) { + //查询每个工作人员的基本信息 + CustomerStaffInfoCache staffInfoCache = customerStaffRedis.getStaffInfo(formDTO.getCustomerId(), userId); + if (null != staffInfoCache) { + StaffInfoCommonDTO staffInfo=new StaffInfoCommonDTO(); + staffInfo.setStaffId(userId); + staffInfo.setStaffName(staffInfoCache.getRealName()); + staffInfo.setGender(staffInfoCache.getGender().toString()); + staffInfo.setHeadPhoto(StringUtils.isNotBlank(staffInfoCache.getHeadPhoto())?staffInfoCache.getHeadPhoto(): StrConstant.EPMETY_STR); + // 从网格添加的,显示 XXX-网格名 + // 部门添加的,显示XXX-部门名 + // 组织添加的,XXX组织名-XXX组织名 + String showOrgName="todo"; + //todo + staffInfo.setOrgName(showOrgName); + staffList.add(staffInfo); + } + } + resDTO.setStaffList(staffList); + } + } + return resDTO; + } } diff --git a/epmet-module/data-aggregator/data-aggregator-server/src/main/resources/mapper/epmetmessage/InfoReceiversDao.xml b/epmet-module/data-aggregator/data-aggregator-server/src/main/resources/mapper/epmetmessage/InfoReceiversDao.xml index dc4ed3221c..3c8d98b10a 100644 --- a/epmet-module/data-aggregator/data-aggregator-server/src/main/resources/mapper/epmetmessage/InfoReceiversDao.xml +++ b/epmet-module/data-aggregator/data-aggregator-server/src/main/resources/mapper/epmetmessage/InfoReceiversDao.xml @@ -3,6 +3,50 @@ + + + + + + + + + + - + + \ No newline at end of file