Browse Source

发送消息

master
yinzuomei 2 years ago
parent
commit
f8c5ae7324
  1. 9
      epmet-module/epmet-message/epmet-message-client/src/main/java/com/epmet/dto/result/OrganizationMessageResultDTO.java
  2. 5
      epmet-module/epmet-message/epmet-message-server/pom.xml
  3. 10
      epmet-module/epmet-message/epmet-message-server/src/main/java/com/epmet/entity/OrganizationMessageEntity.java
  4. 93
      epmet-module/epmet-message/epmet-message-server/src/main/java/com/epmet/service/impl/OrganizationMessageServiceImpl.java
  5. 2
      epmet-module/epmet-message/epmet-message-server/src/main/resources/mapper/OrganizationMessageDao.xml
  6. 33
      epmet-user/epmet-user-client/src/main/java/com/epmet/dto/form/RegisterRelationPageFormDTO.java
  7. 8
      epmet-user/epmet-user-client/src/main/java/com/epmet/feign/EpmetUserOpenFeignClient.java
  8. 11
      epmet-user/epmet-user-client/src/main/java/com/epmet/feign/fallback/EpmetUserOpenFeignClientFallback.java
  9. 18
      epmet-user/epmet-user-server/src/main/java/com/epmet/controller/RegisterRelationController.java
  10. 5
      epmet-user/epmet-user-server/src/main/java/com/epmet/dao/RegisterRelationDao.java
  11. 12
      epmet-user/epmet-user-server/src/main/java/com/epmet/service/RegisterRelationService.java
  12. 20
      epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/RegisterRelationServiceImpl.java
  13. 17
      epmet-user/epmet-user-server/src/main/resources/mapper/RegisterRelationDao.xml

9
epmet-module/epmet-message/epmet-message-client/src/main/java/com/epmet/dto/result/OrganizationMessageResultDTO.java

@ -61,5 +61,14 @@ public class OrganizationMessageResultDTO {
* 发布人所属组织名称 * 发布人所属组织名称
*/ */
private String publishOrgName; private String publishOrgName;
/**
* 发送结果
*/
private String sendMsgRes;
/**
* 共发送出多少条消息
*/
private Integer totalReceiver;
} }

5
epmet-module/epmet-message/epmet-message-server/pom.xml

@ -101,11 +101,6 @@
<artifactId>flyway-core</artifactId> <artifactId>flyway-core</artifactId>
<!--<version>5.1.1</version>--> <!--<version>5.1.1</version>-->
</dependency> </dependency>
<dependency>
<groupId>com.epmet</groupId>
<artifactId>epmet-user-client</artifactId>
<version>2.0.0</version>
</dependency>
<dependency> <dependency>
<groupId>com.epmet</groupId> <groupId>com.epmet</groupId>
<artifactId>epmet-third-client</artifactId> <artifactId>epmet-third-client</artifactId>

10
epmet-module/epmet-message/epmet-message-server/src/main/java/com/epmet/entity/OrganizationMessageEntity.java

@ -65,5 +65,13 @@ public class OrganizationMessageEntity extends BaseEpmetEntity {
* 发布时间 * 发布时间
*/ */
private Date publishTime; private Date publishTime;
/**
* 发送结果
* sending发送中failed失败success成功
*/
private String sendMsgRes;
/**
* 共发送出多少条消息
*/
private Integer totalReceiver;
} }

93
epmet-module/epmet-message/epmet-message-server/src/main/java/com/epmet/service/impl/OrganizationMessageServiceImpl.java

@ -1,9 +1,15 @@
package com.epmet.service.impl; package com.epmet.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.epmet.commons.mybatis.service.impl.BaseServiceImpl; import com.epmet.commons.mybatis.service.impl.BaseServiceImpl;
import com.epmet.commons.tools.constant.AppClientConstant;
import com.epmet.commons.tools.constant.Constant;
import com.epmet.commons.tools.constant.NumConstant; import com.epmet.commons.tools.constant.NumConstant;
import com.epmet.commons.tools.constant.StrConstant;
import com.epmet.commons.tools.dto.result.CustomerStaffInfoCacheResult; import com.epmet.commons.tools.dto.result.CustomerStaffInfoCacheResult;
import com.epmet.commons.tools.enums.OrgTypeEnum; import com.epmet.commons.tools.enums.OrgTypeEnum;
import com.epmet.commons.tools.exception.ExceptionUtils;
import com.epmet.commons.tools.page.PageData; import com.epmet.commons.tools.page.PageData;
import com.epmet.commons.tools.redis.common.CustomerOrgRedis; import com.epmet.commons.tools.redis.common.CustomerOrgRedis;
import com.epmet.commons.tools.redis.common.CustomerStaffRedis; import com.epmet.commons.tools.redis.common.CustomerStaffRedis;
@ -12,18 +18,26 @@ import com.epmet.commons.tools.redis.common.bean.GridInfoCache;
import com.epmet.commons.tools.utils.ConvertUtils; import com.epmet.commons.tools.utils.ConvertUtils;
import com.epmet.commons.tools.utils.EpmetRequestHolder; import com.epmet.commons.tools.utils.EpmetRequestHolder;
import com.epmet.commons.tools.utils.PidUtils; import com.epmet.commons.tools.utils.PidUtils;
import com.epmet.commons.tools.utils.Result;
import com.epmet.dao.OrganizationMessageDao; import com.epmet.dao.OrganizationMessageDao;
import com.epmet.dao.OrganizationMessagePublishRangeDao; import com.epmet.dao.OrganizationMessagePublishRangeDao;
import com.epmet.dao.UserMessageDao;
import com.epmet.dto.OrganizationMessageFormDTO; import com.epmet.dto.OrganizationMessageFormDTO;
import com.epmet.dto.OrganizationMessagePublishRangeDTO; import com.epmet.dto.OrganizationMessagePublishRangeDTO;
import com.epmet.dto.RegisterRelationDTO;
import com.epmet.dto.form.RegisterRelationPageFormDTO;
import com.epmet.dto.result.OrganizationMessageResultDTO; import com.epmet.dto.result.OrganizationMessageResultDTO;
import com.epmet.entity.OrganizationMessageEntity; import com.epmet.entity.OrganizationMessageEntity;
import com.epmet.entity.OrganizationMessagePublishRangeEntity; import com.epmet.entity.OrganizationMessagePublishRangeEntity;
import com.epmet.entity.UserMessageEntity;
import com.epmet.feign.EpmetUserOpenFeignClient;
import com.epmet.service.OrganizationMessageService; import com.epmet.service.OrganizationMessageService;
import com.github.pagehelper.PageHelper; import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo; import com.github.pagehelper.PageInfo;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.collections4.CollectionUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.scheduling.annotation.Async;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
@ -36,10 +50,16 @@ import java.util.List;
* @author generator generator@elink-cn.com * @author generator generator@elink-cn.com
* @since v1.0.0 2023-05-04 * @since v1.0.0 2023-05-04
*/ */
@Slf4j
@Service @Service
public class OrganizationMessageServiceImpl extends BaseServiceImpl<OrganizationMessageDao, OrganizationMessageEntity> implements OrganizationMessageService { public class OrganizationMessageServiceImpl extends BaseServiceImpl<OrganizationMessageDao, OrganizationMessageEntity> implements OrganizationMessageService {
@Autowired @Autowired
private OrganizationMessagePublishRangeDao organizationMessagePublishRangeDao; private OrganizationMessagePublishRangeDao organizationMessagePublishRangeDao;
@Autowired
private UserMessageDao userMessageDao;
@Autowired
private EpmetUserOpenFeignClient epmetUserOpenFeignClient;
/** /**
* 分页列表 * 分页列表
@ -93,6 +113,7 @@ public class OrganizationMessageServiceImpl extends BaseServiceImpl<Organization
messageEntity.setPublishOrgIdPath(PidUtils.convertPid2OrgIdPath(staffInfoCacheResult.getAgencyId(), staffInfoCacheResult.getAgencyPIds())); messageEntity.setPublishOrgIdPath(PidUtils.convertPid2OrgIdPath(staffInfoCacheResult.getAgencyId(), staffInfoCacheResult.getAgencyPIds()));
messageEntity.setPublishOrgName(staffInfoCacheResult.getAgencyName()); messageEntity.setPublishOrgName(staffInfoCacheResult.getAgencyName());
messageEntity.setPublishTime(new Date()); messageEntity.setPublishTime(new Date());
messageEntity.setSendMsgRes("sending");
baseDao.insert(messageEntity); baseDao.insert(messageEntity);
for (OrganizationMessagePublishRangeDTO dto : formDTO.getRangeList()) { for (OrganizationMessagePublishRangeDTO dto : formDTO.getRangeList()) {
OrganizationMessagePublishRangeEntity rangeEntity = new OrganizationMessagePublishRangeEntity(); OrganizationMessagePublishRangeEntity rangeEntity = new OrganizationMessagePublishRangeEntity();
@ -105,18 +126,86 @@ public class OrganizationMessageServiceImpl extends BaseServiceImpl<Organization
rangeEntity.setPid(gridInfoCache.getPid()); rangeEntity.setPid(gridInfoCache.getPid());
rangeEntity.setOrgIdPath(PidUtils.convertPid2OrgIdPath(dto.getOrgId(), gridInfoCache.getPids())); rangeEntity.setOrgIdPath(PidUtils.convertPid2OrgIdPath(dto.getOrgId(), gridInfoCache.getPids()));
rangeEntity.setOrgName(gridInfoCache.getGridNamePath()); rangeEntity.setOrgName(gridInfoCache.getGridNamePath());
} else if (OrgTypeEnum.AGENCY.getCode().equals(dto.getOrgType())) { } else {
//if (OrgTypeEnum.AGENCY.getCode().equals(dto.getOrgType()))
AgencyInfoCache agencyInfoCache = CustomerOrgRedis.getAgencyInfo(dto.getOrgId()); AgencyInfoCache agencyInfoCache = CustomerOrgRedis.getAgencyInfo(dto.getOrgId());
rangeEntity.setPid(agencyInfoCache.getPid()); rangeEntity.setPid(agencyInfoCache.getPid());
rangeEntity.setOrgIdPath(PidUtils.convertPid2OrgIdPath(dto.getOrgId(), agencyInfoCache.getPids())); rangeEntity.setOrgIdPath(PidUtils.convertPid2OrgIdPath(dto.getOrgId(), agencyInfoCache.getPids()));
rangeEntity.setOrgName(agencyInfoCache.getOrganizationName()); rangeEntity.setOrgName(agencyInfoCache.getOrganizationName());
} }
dto.setPid(rangeEntity.getPid());
dto.setOrgIdPath(rangeEntity.getOrgIdPath());
organizationMessagePublishRangeDao.insert(rangeEntity); organizationMessagePublishRangeDao.insert(rangeEntity);
} }
String messageId = messageEntity.getId(); String messageId = messageEntity.getId();
// todo 发送消息 发布范围下有哪些网格,网格下所有的注册居民,每人发送一条消息 // 发送消息 发布范围下有哪些网格,网格下所有的注册居民,每人发送一条消息
sendUserMsg(messageId,formDTO.getContent(),formDTO.getPublishStaffId(),formDTO.getRangeList(),messageEntity.getCustomerId());
return messageId; return messageId;
} }
@Async
public void sendUserMsg(String messageId, String content, String publishStaffId,List<OrganizationMessagePublishRangeDTO> rangeList, String customerId) {
String result = "success";
int totalMsg = NumConstant.ZERO;
try {
for (OrganizationMessagePublishRangeDTO rangeDto : rangeList) {
RegisterRelationPageFormDTO pageFormDTO=new RegisterRelationPageFormDTO();
pageFormDTO.setCustomerId(customerId);
pageFormDTO.setFirstRegister(NumConstant.ONE_STR);
pageFormDTO.setPageNo(NumConstant.ONE);
pageFormDTO.setPageSize(NumConstant.TWO);
// pageFormDTO.setPageSize(NumConstant.ONE_THOUSAND);
if (OrgTypeEnum.GRID.getCode().equals(rangeDto.getOrgType())) {
// 查询该网格下的注册居民
pageFormDTO.setGridId(rangeDto.getOrgId());
} else {
// 查询该组织下的注册居民
pageFormDTO.setAgencyIdPath(rangeDto.getOrgIdPath());
}
List<RegisterRelationDTO> list=null;
do {
Result<PageData<RegisterRelationDTO>> regRes = epmetUserOpenFeignClient.pageQueryRegisterUser(pageFormDTO);
list = regRes.getData().getList();
for (RegisterRelationDTO regUser : list) {
LambdaQueryWrapper<UserMessageEntity> queryWrapper=new LambdaQueryWrapper();
queryWrapper.eq(UserMessageEntity::getCustomerId,customerId)
.eq(UserMessageEntity::getTargetId,messageId)
.eq(UserMessageEntity::getUserId,regUser.getUserId());
UserMessageEntity origin=userMessageDao.selectOne(queryWrapper);
if(null==origin){
UserMessageEntity userMessageEntity = new UserMessageEntity();
userMessageEntity.setCustomerId(customerId);
userMessageEntity.setGridId(regUser.getGridId());
userMessageEntity.setUserId(regUser.getUserId());
userMessageEntity.setApp(AppClientConstant.APP_RESI);
userMessageEntity.setTitle("您有一条社区消息!");
userMessageEntity.setMessageContent(content);
userMessageEntity.setReadFlag(Constant.UNREAD);
userMessageEntity.setReferer(StrConstant.EPMETY_STR);
userMessageEntity.setMessageType("organization_message");
userMessageEntity.setTargetId(messageId);
userMessageEntity.setCreatedBy(publishStaffId);
userMessageEntity.setUpdatedBy(publishStaffId);
userMessageDao.insert(userMessageEntity);
totalMsg += 1;
}
}
pageFormDTO.setPageNo(pageFormDTO.getPageNo() + NumConstant.ONE);
} while (CollectionUtils.isNotEmpty(list) && list.size() == pageFormDTO.getPageSize());
}
} catch (Exception e) {
log.error(String.format("messageId:%s,发送消息异常:%s", messageId, ExceptionUtils.getErrorStackTrace(e)));
result = "failed";
} finally {
LambdaUpdateWrapper<OrganizationMessageEntity> updateWrapper = new LambdaUpdateWrapper<>();
updateWrapper.eq(OrganizationMessageEntity::getId, messageId)
.set(OrganizationMessageEntity::getSendMsgRes, result)
.set(OrganizationMessageEntity::getTotalReceiver, totalMsg)
.set(OrganizationMessageEntity::getUpdatedTime,new Date());
baseDao.update(null, updateWrapper);
}
}
} }

2
epmet-module/epmet-message/epmet-message-server/src/main/resources/mapper/OrganizationMessageDao.xml

@ -32,6 +32,8 @@
om.PUBLISH_ORG_ID as publishStaffName, om.PUBLISH_ORG_ID as publishStaffName,
om.PUBLISH_ORG_ID_PATH as publishOrgIdPath, om.PUBLISH_ORG_ID_PATH as publishOrgIdPath,
OM.PUBLISH_ORG_NAME as publishOrgName, OM.PUBLISH_ORG_NAME as publishOrgName,
om.SEND_MSG_RES as sendMsgRes,
om.TOTAL_RECEIVER as totalReceiver,
GROUP_CONCAT(r.ORG_NAME) as publishRangeName GROUP_CONCAT(r.ORG_NAME) as publishRangeName
from organization_message om from organization_message om
left join organization_message_publish_range r left join organization_message_publish_range r

33
epmet-user/epmet-user-client/src/main/java/com/epmet/dto/form/RegisterRelationPageFormDTO.java

@ -0,0 +1,33 @@
package com.epmet.dto.form;
import com.epmet.commons.tools.dto.form.PageFormDTO;
import lombok.Data;
/**
* @Description
* @Author yzm
* @Date 2023/5/5 9:47
*/
@Data
public class RegisterRelationPageFormDTO extends PageFormDTO {
/**
* 客户Id (customer.id)
*/
private String customerId;
/**
* agencyId的所有上级包含自己
*/
private String agencyIdPath;
/**
* 网格Id (customer_grid.id)
*/
private String gridId;
/**
* 首次注册用户 0表示不参与计数 1表示参与计数
*/
private String firstRegister;
}

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

@ -1033,4 +1033,12 @@ public interface EpmetUserOpenFeignClient {
*/ */
@PostMapping("/epmetuser/icNat/clearNatRecords") @PostMapping("/epmetuser/icNat/clearNatRecords")
Result clearNatRecords(@RequestBody Map<String, Object> map); Result clearNatRecords(@RequestBody Map<String, Object> map);
/**
* 分页查询注册居民
* @param pageFormDTO
* @return
*/
@PostMapping("/epmetuser/registerrelation/pageQueryRegisterUser")
Result<PageData<RegisterRelationDTO>> pageQueryRegisterUser(@RequestBody RegisterRelationPageFormDTO pageFormDTO);
} }

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

@ -756,4 +756,15 @@ public class EpmetUserOpenFeignClientFallback implements EpmetUserOpenFeignClien
public Result clearNatRecords(Map<String, Object> map) { public Result clearNatRecords(Map<String, Object> map) {
return ModuleUtils.feignConError(ServiceConstant.EPMET_USER_SERVER, "clearNatRecords", map); return ModuleUtils.feignConError(ServiceConstant.EPMET_USER_SERVER, "clearNatRecords", map);
} }
/**
* 分页查询注册居民
*
* @param pageFormDTO
* @return
*/
@Override
public Result<PageData<RegisterRelationDTO>> pageQueryRegisterUser(RegisterRelationPageFormDTO pageFormDTO) {
return ModuleUtils.feignConError(ServiceConstant.EPMET_USER_SERVER, "pageQueryRegisterUser", pageFormDTO);
}
} }

18
epmet-user/epmet-user-server/src/main/java/com/epmet/controller/RegisterRelationController.java

@ -28,6 +28,7 @@ import com.epmet.commons.tools.validator.group.UpdateGroup;
import com.epmet.dto.RegisterRelationDTO; import com.epmet.dto.RegisterRelationDTO;
import com.epmet.dto.form.AllResiByGridFormDTO; import com.epmet.dto.form.AllResiByGridFormDTO;
import com.epmet.dto.form.EnterGridFormDTO; import com.epmet.dto.form.EnterGridFormDTO;
import com.epmet.dto.form.RegisterRelationPageFormDTO;
import com.epmet.dto.result.UserInfoOnEnterGridResultDTO; import com.epmet.dto.result.UserInfoOnEnterGridResultDTO;
import com.epmet.excel.RegisterRelationExcel; import com.epmet.excel.RegisterRelationExcel;
import com.epmet.service.RegisterRelationService; import com.epmet.service.RegisterRelationService;
@ -120,4 +121,21 @@ public class RegisterRelationController {
ValidatorUtils.validateEntity(formDTO, AllResiByGridFormDTO.AllResiByGridForm.class); ValidatorUtils.validateEntity(formDTO, AllResiByGridFormDTO.AllResiByGridForm.class);
return new Result<Integer>().ok(registerRelationService.getAllResiByGrid(formDTO)); return new Result<Integer>().ok(registerRelationService.getAllResiByGrid(formDTO));
} }
/**
* 分页查询注册居民信息
* @param pageFormDTO
* @return
*/
@PostMapping("pageQueryRegisterUser")
public Result<PageData<RegisterRelationDTO>> pageQueryRegisterUser(@RequestBody RegisterRelationPageFormDTO pageFormDTO){
return new Result<PageData<RegisterRelationDTO>>().ok(registerRelationService.pageQueryRegisterUser(pageFormDTO.getPageNo(),
pageFormDTO.getPageSize(),
pageFormDTO.getCustomerId(),
pageFormDTO.getGridId(),
pageFormDTO.getAgencyIdPath(),
pageFormDTO.getFirstRegister()));
}
} }

5
epmet-user/epmet-user-server/src/main/java/com/epmet/dao/RegisterRelationDao.java

@ -71,4 +71,9 @@ public interface RegisterRelationDao extends BaseDao<RegisterRelationEntity> {
* @date 2022/10/8 10:48 * @date 2022/10/8 10:48
*/ */
Integer getAllResiByGrid(@Param("gridId")String gridId); Integer getAllResiByGrid(@Param("gridId")String gridId);
List<RegisterRelationDTO> pageQueryRegisterUser(@Param("customerId") String customerId,
@Param("gridId") String gridId,
@Param("agencyIdPath") String agencyIdPath,
@Param("firstRegister") String firstRegister);
} }

12
epmet-user/epmet-user-server/src/main/java/com/epmet/service/RegisterRelationService.java

@ -123,4 +123,16 @@ public interface RegisterRelationService extends BaseService<RegisterRelationEnt
* @date 2022/10/8 10:41 * @date 2022/10/8 10:41
*/ */
Integer getAllResiByGrid(AllResiByGridFormDTO formDTO); Integer getAllResiByGrid(AllResiByGridFormDTO formDTO);
/**
* 分页查询注册居民信息
* @param pageNo
* @param pageSize
* @param customerId
* @param gridId
* @param agencyIdPath
* @param firstRegister
* @return
*/
PageData<RegisterRelationDTO> pageQueryRegisterUser(Integer pageNo, Integer pageSize, String customerId, String gridId, String agencyIdPath, String firstRegister);
} }

20
epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/RegisterRelationServiceImpl.java

@ -48,6 +48,8 @@ import com.epmet.feign.GovOrgOpenFeignClient;
import com.epmet.service.GridVisitedService; import com.epmet.service.GridVisitedService;
import com.epmet.service.RegisterRelationService; import com.epmet.service.RegisterRelationService;
import com.epmet.util.ModuleConstant; import com.epmet.util.ModuleConstant;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
@ -389,4 +391,22 @@ public class RegisterRelationServiceImpl extends BaseServiceImpl<RegisterRelatio
return baseDao.getAllResiByGrid(formDTO.getGridId()); return baseDao.getAllResiByGrid(formDTO.getGridId());
} }
/**
* 分页查询注册居民信息
*
* @param pageNo
* @param pageSize
* @param customerId
* @param gridId
* @param agencyIdPath
* @param firstRegister
* @return
*/
@Override
public PageData<RegisterRelationDTO> pageQueryRegisterUser(Integer pageNo, Integer pageSize, String customerId, String gridId, String agencyIdPath, String firstRegister) {
PageHelper.startPage(pageNo,pageSize);
List<RegisterRelationDTO> resList=baseDao.pageQueryRegisterUser(customerId,gridId,agencyIdPath,firstRegister);
PageInfo<RegisterRelationDTO> pageInfo = new PageInfo<>(resList);
return new PageData<>(resList, pageInfo.getTotal());
}
} }

17
epmet-user/epmet-user-server/src/main/resources/mapper/RegisterRelationDao.xml

@ -97,5 +97,20 @@
AND grid_id = #{gridId} AND grid_id = #{gridId}
</select> </select>
<select id="pageQueryRegisterUser" parameterType="map" resultType="com.epmet.dto.RegisterRelationDTO">
select rr.*
from register_relation rr
where rr.CUSTOMER_ID=#{customerId}
and rr.DEL_FLAG='0'
<if test='firstRegister != null and firstRegister != "" '>
and rr.FIRST_REGISTER=#{firstRegister}
</if>
<if test='gridId != null and gridId != "" '>
and rr.GRID_ID=#{gridId}
</if>
<if test='agencyIdPath != null and agencyIdPath != "" '>
and rr.AGENCY_ID_PATH like concat(#{agencyIdPath},'%')
</if>
order by rr.ID asc
</select>
</mapper> </mapper>

Loading…
Cancel
Save