Commit 157ae9df by 吴博

读者扫码后发现内容为空,除给读者外,给指定的人发模板消息与邮件

parent 8edf95ad
......@@ -363,4 +363,6 @@ public class BookConstant {
public static final String countryRegionCode = "100000";
public static final Integer countryAreaCode = 0;
public static final String NO_RESOURCE_REMIND = "no_resource_remind";
}
......@@ -23,6 +23,7 @@ import com.pcloud.common.dto.ResponseDto;
import com.pcloud.common.exceptions.BizException;
import com.pcloud.common.utils.ListUtils;
import com.pcloud.common.utils.ResponseHandleUtil;
import com.pcloud.channelcenter.wechat.entity.SpecialUser;
import org.apache.regexp.RE;
import org.slf4j.Logger;
......@@ -56,6 +57,8 @@ public class QrcodeSceneConsr {
@Autowired
private AccountSettingService accountSettingService;
/**
* 删除书籍关联的二维码
*/
......@@ -407,4 +410,16 @@ public class QrcodeSceneConsr {
}
return qrcodeSceneDtos;
}
public List<SpecialUser> getAllSpcialUser() {
List<SpecialUser> specialUsers = null;
try {
specialUsers = ResponseHandleUtil.parseList(messageService.getAllSpecialUser(), SpecialUser.class);
} catch (Exception e) {
LOGGER.error("调用messageService.mapServeCount4Applet失败" + e.getMessage(), e);
}
return specialUsers;
}
}
......@@ -1197,7 +1197,7 @@ public class BookGroupBizImpl implements BookGroupBiz {
BookAppletScene byBookGroupId = bookAppletSceneDao.getByBookGroupId(bookGroupDTO.getId());
bookGroupDTO.setAppletUrl(byBookGroupId == null ? "" : byBookGroupId.getAppletUrl());
bookGroupDTO.setUrl(bookGroupQrcodeDomain + "/" + bookGroupDTO.getId());
bookGroupDTO.setAppletId(byBookGroupId.getAppletId());
bookGroupDTO.setAppletId(byBookGroupId == null ? "" : byBookGroupId.getAppletId());
}
return bookGroupDTO;
}
......
package com.pcloud.book.mq.topic;
import com.alibaba.druid.util.StringUtils;
import com.google.common.collect.Lists;
import com.pcloud.book.book.biz.BookBiz;
import com.pcloud.book.book.constant.BookConstant;
import com.pcloud.book.book.dto.BookDto;
import com.pcloud.book.consumer.channel.QrcodeSceneConsr;
import com.pcloud.book.consumer.message.TemplateConsr;
import com.pcloud.book.consumer.user.AdviserConsr;
import com.pcloud.book.consumer.user.AgentConsr;
import com.pcloud.book.group.dao.BookGroupDao;
import com.pcloud.book.group.dao.BookGroupServeDao;
import com.pcloud.book.group.dto.BookGroupDTO;
......@@ -8,11 +16,26 @@ import com.pcloud.book.group.enums.JoinGroupTypeEnum;
import com.pcloud.book.keywords.dao.BookKeywordDao;
import com.pcloud.book.keywords.dao.SelfRobotKeywordDao;
import com.pcloud.book.mq.config.MQTopicConumer;
import com.pcloud.book.util.properties.BookProps;
import com.pcloud.channelcenter.base.constants.ChannelConstants;
import com.pcloud.channelcenter.wechat.dto.AccountSettingDto;
import com.pcloud.channelcenter.wechat.dto.JsonDataAndTempletId;
import com.pcloud.channelcenter.wechat.entity.SpecialUser;
import com.pcloud.channelcenter.wechat.enums.UserSendTypeEnum;
import com.pcloud.channelcenter.qrcode.dto.QrcodeSceneDto;
import com.pcloud.common.core.aspect.ParamLog;
import com.pcloud.common.core.biz.MessageBiz;
import com.pcloud.common.core.biz.TemplateQueueBiz;
import com.pcloud.common.core.constant.SceneCode;
import com.pcloud.common.core.constant.SendType;
import com.pcloud.common.core.constant.SystemCode;
import com.pcloud.common.core.constant.WechatCode;
import com.pcloud.common.core.dto.SendEmailDto;
import com.pcloud.common.core.dto.TemplateMessageDto;
import com.pcloud.common.exceptions.BizException;
import com.pcloud.common.utils.ListUtils;
import com.pcloud.common.utils.string.StringUtil;
import org.apache.commons.collections.MapUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.amqp.rabbit.annotation.RabbitHandler;
......@@ -21,7 +44,10 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Objects;
import java.util.stream.Collectors;
/**
* @Description社群码扫码人数达到一定数量
......@@ -43,6 +69,20 @@ public class SomeUserScanBookGroupListener {
private TemplateConsr templateConsr;
@Autowired
private SelfRobotKeywordDao selfRobotKeywordDao;
@Autowired
private QrcodeSceneConsr qrcodeSceneConsr;
@Autowired
private BookProps bookProps;
@Autowired
private TemplateQueueBiz templateQueueBiz;
@Autowired
private MessageBiz messageBiz;
@Autowired
private AdviserConsr adviserConsr;
@Autowired
private AgentConsr agentConsr;
@Autowired
private BookBiz bookBiz;
@ParamLog("接收社群码扫码人数达到一定数量topic")
@RabbitHandler
......@@ -81,18 +121,111 @@ public class SomeUserScanBookGroupListener {
if (isSend) {
//发送模板消息
sendTemplate(dto);
//配置资源为空则推送模板消息和发送邮件
sendTemplataAndEmail(dto);
}
}
@ParamLog("发送模板消息")
private void sendTemplate(BookGroupDTO dto) {
private void sendTemplataAndEmail(BookGroupDTO dto) {
LOGGER.info("配置资源为空则推送模板消息和发送邮件:{}", dto);
Map<String, String> temParam = getStringStringMap(dto);
//获取待发送的openId
List<SpecialUser> specialUsers = qrcodeSceneConsr.getAllSpcialUser();
if (ListUtils.isEmpty(specialUsers)) {
return;
}
List<String> openIds = specialUsers.stream().filter(e -> Objects.equals(UserSendTypeEnum.OPENID.value, e.getSendType())).
map(m -> m.getOpenid()).collect(Collectors.toList());
List<String> emails = specialUsers.stream().filter(e -> Objects.equals(UserSendTypeEnum.EMAIL.value, e.getSendType())).
map(m -> m.getEmail()).collect(Collectors.toList());
if (!ListUtils.isEmpty(openIds)) {
openIds.stream().forEach(openid -> {
sendTemplate4Openid(dto, openid);
});
}
if (!ListUtils.isEmpty(emails)) {
sendEmail(emails, dto);
}
}
private void sendEmail(List<String> emails, BookGroupDTO bookGroupDTO) {
SendEmailDto sendEmailDto = new SendEmailDto();
if (emails.size() > 1) {
sendEmailDto.setToEmail(emails.get(0));
emails = emails.subList(1, emails.size());
String ccEmail = String.join(",", emails);
sendEmailDto.setCcEmail(ccEmail);
} else {
sendEmailDto.setToEmail(emails.get(0));
}
sendEmailDto.setTypeCode(BookConstant.NO_RESOURCE_REMIND);
Map<String, Object> content = new HashMap<>();
content.put("sceneName", bookGroupDTO.getGroupQrcodeName());
if (null != bookGroupDTO.getCreateUser()) {
String adviserName = adviserConsr.getNameById(bookGroupDTO.getCreateUser());
content.put("adviserName", adviserName);
}
if (null != bookGroupDTO.getAgentId()) {
Map<Long, String> agentMap = agentConsr.getNames(Lists.newArrayList(bookGroupDTO.getAgentId()));
if (MapUtils.isNotEmpty(agentMap) && agentMap.containsKey(bookGroupDTO.getAgentId())) {
content.put("agentName", agentMap.get(bookGroupDTO.getAgentId()));
}
}
if (null != bookGroupDTO.getBookId()) {
BookDto bookDto = bookBiz.getBaseById(bookGroupDTO.getBookId());
if (null != bookDto) {
content.put("bookName", bookDto.getBookName());
}
}
sendEmailDto.setContent(content);
LOGGER.info("发送邮件sendEmailDto:{}", sendEmailDto);
messageBiz.sendEmail(sendEmailDto);
}
private void sendTemplate4Openid(BookGroupDTO dto, String openid) {
try {
Map<String, String> temParam = getStringStringMap(dto);
// 组装参数对象
TemplateMessageDto templateMessageDto = new TemplateMessageDto();
templateMessageDto.setSceneCode(SceneCode.PROJECT_TASK_SCENE.value);
templateMessageDto.setAccountSettingId(bookProps.getManageOfficialId());
templateMessageDto.setSendPartyId(bookProps.getOurManagerAccountId());
templateMessageDto.setSendPartyRole(WechatCode.AGENT.value);
templateMessageDto.setTemParam(temParam);
templateMessageDto.setSendType(SendType.SEND_BY_OPENID.value);
templateMessageDto.setOpenId(openid);
templateMessageDto.setIsApp(false);
try {
templateQueueBiz.sendMessageQueue(templateMessageDto);
} catch (Exception e) {
LOGGER.error("【模板消息(消)】发送模板消息topic(管理公众号),<ERROR>.[sendMessageQueue]:" + e.getMessage(), e);
}
LOGGER.info("资源未配置发送模板消息temParam="+temParam.toString()+"dto="+dto.toString());
} catch (Exception e) {
LOGGER.error("编辑管理--删除副编辑,发送模板消息失败<ERROR>" + e.getMessage());
}
}
private Map<String, String> getStringStringMap(BookGroupDTO bookGroupDTO) {
Map<String, String> temParam = new HashMap<>();
String word="已有读者扫码!您的二维码“" + dto.getGroupQrcodeName() + "”还未配置任何资源服务。请及时完善该二维码资源服务。";
String word="已有读者扫码!您的二维码“" + bookGroupDTO.getGroupQrcodeName() + "”还未配置任何资源服务。请及时完善该二维码资源服务。";
temParam.put("first", word);
temParam.put("keyword1", "【提醒】您的二维码还未配置资源服务");
temParam.put("keyword2", "请前往编辑端为二维码配置相关资源或服务");
temParam.put("remark", "请及时处理");
return temParam;
}
@ParamLog("发送模板消息")
private void sendTemplate(BookGroupDTO dto) {
try {
Map<String, String> temParam = getStringStringMap(dto);
templateConsr.sendManage(SceneCode.PROJECT_TASK_SCENE.value, dto.getAgentId(), dto.getCreateUser(),
SystemCode.adviser.code, "", temParam, SendType.SEND_BY_PARTY_ID.value, false);
LOGGER.info("资源未配置发送模板消息temParam="+temParam.toString()+"dto="+dto.toString());
......
......@@ -92,4 +92,25 @@ public class BookProps {
public void setWechatDomain( String wechatDomain ) {
BookProps.wechatDomain = wechatDomain;
}
@Value("${manage_official_id}")
private Long manageOfficialId;
public Long getManageOfficialId() {
return manageOfficialId;
}
public void setManageOfficialId(Long manageOfficialId) {
this.manageOfficialId = manageOfficialId;
}
@Value("${our_manager_account_id}")
private Long ourManagerAccountId;
public Long getOurManagerAccountId() {
return ourManagerAccountId;
}
public void setOurManagerAccountId(Long ourManagerAccountId) {
this.ourManagerAccountId = ourManagerAccountId;
}
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment