新增会员站内信消息
This commit is contained in:
@@ -1,18 +1,27 @@
|
||||
package cn.lili.listener;
|
||||
|
||||
import cn.hutool.json.JSONUtil;
|
||||
import cn.lili.common.enums.SwitchEnum;
|
||||
import cn.lili.common.rocketmq.tags.OtherTagsEnum;
|
||||
import cn.lili.common.sms.SmsUtil;
|
||||
import cn.lili.common.vo.PageVO;
|
||||
import cn.lili.modules.member.entity.dos.Member;
|
||||
import cn.lili.modules.member.entity.vo.MemberSearchVO;
|
||||
import cn.lili.modules.member.mapper.MemberMapper;
|
||||
import cn.lili.modules.member.service.MemberService;
|
||||
import cn.lili.modules.message.entity.dos.MemberMessage;
|
||||
import cn.lili.modules.message.entity.dos.Message;
|
||||
import cn.lili.modules.message.entity.dos.StoreMessage;
|
||||
import cn.lili.modules.message.entity.dto.SmsReachDTO;
|
||||
import cn.lili.modules.message.entity.enums.MessageSendClient;
|
||||
import cn.lili.modules.message.entity.enums.MessageStatusEnum;
|
||||
import cn.lili.modules.message.entity.enums.RangeEnum;
|
||||
import cn.lili.modules.message.service.MemberMessageService;
|
||||
import cn.lili.modules.message.service.StoreMessageService;
|
||||
import cn.lili.modules.store.entity.dos.Store;
|
||||
import cn.lili.modules.store.service.StoreService;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import org.apache.rocketmq.common.message.MessageExt;
|
||||
import org.apache.rocketmq.spring.annotation.RocketMQMessageListener;
|
||||
import org.apache.rocketmq.spring.core.RocketMQListener;
|
||||
@@ -41,9 +50,15 @@ public class NoticeSendMessageListener implements RocketMQListener<MessageExt> {
|
||||
//店铺消息
|
||||
@Autowired
|
||||
private StoreMessageService storeMessageService;
|
||||
//会员消息
|
||||
@Autowired
|
||||
private MemberMessageService memberMessageService;
|
||||
//店铺
|
||||
@Autowired
|
||||
private StoreService storeService;
|
||||
//会员
|
||||
@Autowired
|
||||
private MemberService memberService;
|
||||
|
||||
@Override
|
||||
public void onMessage(MessageExt messageExt) {
|
||||
@@ -51,7 +66,6 @@ public class NoticeSendMessageListener implements RocketMQListener<MessageExt> {
|
||||
case SMS:
|
||||
String smsJsonStr = new String(messageExt.getBody());
|
||||
SmsReachDTO smsReachDTO = JSONUtil.toBean(smsJsonStr, SmsReachDTO.class);
|
||||
|
||||
//发送全部会员
|
||||
if (smsReachDTO.getSmsRange().equals(RangeEnum.ALL.name())) {
|
||||
//获取所有会员的手机号
|
||||
@@ -65,38 +79,118 @@ public class NoticeSendMessageListener implements RocketMQListener<MessageExt> {
|
||||
//管理员发送站内信
|
||||
case MESSAGE:
|
||||
Message message = JSONUtil.toBean(new String(messageExt.getBody()), Message.class);
|
||||
List<StoreMessage> list = new ArrayList<>();
|
||||
//保存商家记录
|
||||
if (message.getMessageRange().equals("ALL")) {
|
||||
List<Store> storeList = storeService.list(new QueryWrapper<Store>().eq("store_disable", "OPEN"));
|
||||
storeList.forEach(item -> {
|
||||
StoreMessage storeMessage = new StoreMessage();
|
||||
storeMessage.setMessageId(message.getId());
|
||||
storeMessage.setStoreName(item.getStoreName());
|
||||
storeMessage.setStoreId(item.getId());
|
||||
storeMessage.setStatus(MessageStatusEnum.UN_READY.name());
|
||||
storeMessage.setTitle(message.getTitle());
|
||||
storeMessage.setContent(message.getContent());
|
||||
list.add(storeMessage);
|
||||
});
|
||||
// 管理端发送给商家的站内信
|
||||
if (message.getMessageClient().equals(MessageSendClient.STORE.name().toLowerCase())) {
|
||||
saveStoreMessage(message);
|
||||
} else {
|
||||
int i = 0;
|
||||
for (String str : message.getUserIds()) {
|
||||
StoreMessage storeMessage = new StoreMessage();
|
||||
storeMessage.setMessageId(message.getId());
|
||||
storeMessage.setStoreId(str);
|
||||
storeMessage.setStoreName(message.getUserNames()[i]);
|
||||
storeMessage.setStatus(MessageStatusEnum.UN_READY.name());
|
||||
storeMessage.setTitle(message.getTitle());
|
||||
storeMessage.setContent(message.getContent());
|
||||
list.add(storeMessage);
|
||||
i++;
|
||||
}
|
||||
//管理员发送给会员的站内信
|
||||
saveMemberMessage(message);
|
||||
}
|
||||
storeMessageService.save(list);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 保存店铺消息
|
||||
*
|
||||
* @param message 消息
|
||||
*/
|
||||
private void saveStoreMessage(Message message) {
|
||||
List<StoreMessage> list = new ArrayList<>();
|
||||
//发送全部商家情况
|
||||
if (message.getMessageRange().equals("ALL")) {
|
||||
List<Store> storeList = storeService.list(new QueryWrapper<Store>().eq("store_disable", "OPEN"));
|
||||
storeList.forEach(item -> {
|
||||
StoreMessage storeMessage = new StoreMessage();
|
||||
storeMessage.setMessageId(message.getId());
|
||||
storeMessage.setStoreName(item.getStoreName());
|
||||
storeMessage.setStoreId(item.getId());
|
||||
storeMessage.setStatus(MessageStatusEnum.UN_READY.name());
|
||||
storeMessage.setTitle(message.getTitle());
|
||||
storeMessage.setContent(message.getContent());
|
||||
list.add(storeMessage);
|
||||
});
|
||||
} else {
|
||||
//发送给指定商家情况
|
||||
int i = 0;
|
||||
for (String str : message.getUserIds()) {
|
||||
StoreMessage storeMessage = new StoreMessage();
|
||||
storeMessage.setMessageId(message.getId());
|
||||
storeMessage.setStoreId(str);
|
||||
storeMessage.setStoreName(message.getUserNames()[i]);
|
||||
storeMessage.setStatus(MessageStatusEnum.UN_READY.name());
|
||||
storeMessage.setTitle(message.getTitle());
|
||||
storeMessage.setContent(message.getContent());
|
||||
list.add(storeMessage);
|
||||
i++;
|
||||
}
|
||||
}
|
||||
if (list.size() > 0) {
|
||||
//执行保存
|
||||
storeMessageService.save(list);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 保存会员消息
|
||||
*
|
||||
* @param message 消息
|
||||
*/
|
||||
private void saveMemberMessage(Message message) {
|
||||
List<MemberMessage> list = new ArrayList<>();
|
||||
//如果是给所有会员发送消息
|
||||
if (message.getMessageRange().equals("ALL")) {
|
||||
//查询所有会员总数,因为会员总数比较大 如果一次性查出来会占用数据库资源,所以要分页查询
|
||||
MemberSearchVO memberSearchVO = new MemberSearchVO();
|
||||
memberSearchVO.setDisabled(SwitchEnum.OPEN.name());
|
||||
Integer memberNum = memberService.getMemberNum(memberSearchVO);
|
||||
//构建分页查询参数
|
||||
//100条查一次
|
||||
Integer pageSize = 200;
|
||||
Integer pageCount = 0;
|
||||
pageCount = memberNum / pageSize;
|
||||
pageCount = memberNum % pageSize > 0 ? pageCount + 1 : pageCount;
|
||||
for (int i = 1; i <= pageCount; i++) {
|
||||
PageVO pageVO = new PageVO();
|
||||
pageVO.setPageSize(pageSize);
|
||||
pageVO.setPageNumber(i);
|
||||
IPage<Member> page = memberService.getMemberPage(memberSearchVO, pageVO);
|
||||
//循环要保存的信息
|
||||
page.getRecords().forEach(item -> {
|
||||
MemberMessage memberMessage = new MemberMessage();
|
||||
memberMessage.setContent(message.getContent());
|
||||
memberMessage.setTitle(message.getTitle());
|
||||
memberMessage.setMessageId(message.getId());
|
||||
memberMessage.setMemberId(item.getId());
|
||||
memberMessage.setMemberName(item.getUsername());
|
||||
memberMessage.setStatus(MessageStatusEnum.UN_READY.name());
|
||||
list.add(memberMessage);
|
||||
});
|
||||
}
|
||||
|
||||
} else {
|
||||
//如果是给指定会员发送消息
|
||||
int i = 0;
|
||||
for (String str : message.getUserIds()) {
|
||||
MemberMessage memberMessage = new MemberMessage();
|
||||
memberMessage.setMessageId(message.getId());
|
||||
memberMessage.setMemberId(str);
|
||||
memberMessage.setMemberName(message.getUserNames()[i]);
|
||||
memberMessage.setStatus(MessageStatusEnum.UN_READY.name());
|
||||
memberMessage.setTitle(message.getTitle());
|
||||
memberMessage.setContent(message.getContent());
|
||||
list.add(memberMessage);
|
||||
i++;
|
||||
}
|
||||
}
|
||||
if (list.size() > 0) {
|
||||
//执行保存
|
||||
memberMessageService.save(list);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user