im
This commit is contained in:
parent
49b517f1ab
commit
54e04be768
@ -265,6 +265,8 @@ lili:
|
||||
order-group: lili_order_group
|
||||
member-topic: lili_member_topic
|
||||
member-group: lili_member_group
|
||||
store-topic: lili_store_topic
|
||||
store-group: lili_store_group
|
||||
other-topic: lili_other_topic
|
||||
other-group: lili_other_group
|
||||
notice-topic: lili_notice_topic
|
||||
|
@ -0,0 +1,17 @@
|
||||
package cn.lili.event;
|
||||
|
||||
import cn.lili.modules.member.entity.dos.Member;
|
||||
|
||||
/**
|
||||
* @author chc
|
||||
* @since 2022/6/2114:46
|
||||
*/
|
||||
public interface MemberInfoChangeEvent {
|
||||
|
||||
/**
|
||||
* 会员信息更改消息
|
||||
*
|
||||
* @param member 会员信息
|
||||
*/
|
||||
void memberInfoChange(Member member);
|
||||
}
|
@ -0,0 +1,18 @@
|
||||
package cn.lili.event;
|
||||
|
||||
|
||||
import cn.lili.modules.store.entity.dos.Store;
|
||||
|
||||
/**
|
||||
* @author chc
|
||||
* @since 2022/6/2114:46
|
||||
*/
|
||||
public interface StoreSettingChangeEvent {
|
||||
|
||||
/**
|
||||
* 店铺信息更改消息
|
||||
*
|
||||
* @param store 店铺信息
|
||||
*/
|
||||
void StoreSettingChange(Store store);
|
||||
}
|
60
consumer/src/main/java/cn/lili/event/impl/ImTalkExecute.java
Normal file
60
consumer/src/main/java/cn/lili/event/impl/ImTalkExecute.java
Normal file
@ -0,0 +1,60 @@
|
||||
package cn.lili.event.impl;
|
||||
|
||||
import cn.lili.event.MemberInfoChangeEvent;
|
||||
import cn.lili.event.StoreSettingChangeEvent;
|
||||
import cn.lili.modules.im.entity.dos.ImTalk;
|
||||
import cn.lili.modules.im.service.ImTalkService;
|
||||
import cn.lili.modules.member.entity.dos.Member;
|
||||
import cn.lili.modules.store.entity.dos.Store;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* Im对话消息
|
||||
*
|
||||
* @author chc
|
||||
* @since 2022/6/2114:46
|
||||
*/
|
||||
@Service
|
||||
public class ImTalkExecute implements MemberInfoChangeEvent, StoreSettingChangeEvent {
|
||||
|
||||
@Autowired
|
||||
private ImTalkService imTalkService;
|
||||
|
||||
@Override
|
||||
public void memberInfoChange(Member member) {
|
||||
//当与UserId1相等时
|
||||
List<ImTalk> imTalkList1 = imTalkService.list(new LambdaQueryWrapper<ImTalk>().eq(ImTalk::getUserId1, member.getId()));
|
||||
for (ImTalk imTalk : imTalkList1) {
|
||||
imTalk.setName1(member.getNickName());
|
||||
imTalk.setFace1(member.getFace());
|
||||
}
|
||||
imTalkService.updateBatchById(imTalkList1);
|
||||
List<ImTalk> imTalkList2 = imTalkService.list(new LambdaQueryWrapper<ImTalk>().eq(ImTalk::getUserId2, member.getId()));
|
||||
for (ImTalk imTalk : imTalkList2) {
|
||||
imTalk.setName2(member.getNickName());
|
||||
imTalk.setFace2(member.getFace());
|
||||
}
|
||||
imTalkService.updateBatchById(imTalkList2);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void StoreSettingChange(Store store) {
|
||||
//当与UserId1相等时
|
||||
List<ImTalk> imTalkList1 = imTalkService.list(new LambdaQueryWrapper<ImTalk>().eq(ImTalk::getUserId1, store.getId()));
|
||||
for (ImTalk imTalk : imTalkList1) {
|
||||
imTalk.setName1(store.getStoreName());
|
||||
imTalk.setFace1(store.getStoreLogo());
|
||||
}
|
||||
imTalkService.updateBatchById(imTalkList1);
|
||||
List<ImTalk> imTalkList2 = imTalkService.list(new LambdaQueryWrapper<ImTalk>().eq(ImTalk::getUserId2, store.getId()));
|
||||
for (ImTalk imTalk : imTalkList2) {
|
||||
imTalk.setName2(store.getStoreName());
|
||||
imTalk.setFace2(store.getStoreLogo());
|
||||
}
|
||||
imTalkService.updateBatchById(imTalkList2);
|
||||
}
|
||||
}
|
@ -1,10 +1,8 @@
|
||||
package cn.lili.listener;
|
||||
|
||||
import cn.hutool.json.JSONUtil;
|
||||
import cn.lili.event.MemberLoginEvent;
|
||||
import cn.lili.event.MemberPointChangeEvent;
|
||||
import cn.lili.event.MemberRegisterEvent;
|
||||
import cn.lili.event.MemberWithdrawalEvent;
|
||||
import cn.lili.event.*;
|
||||
import cn.lili.event.impl.ImTalkExecute;
|
||||
import cn.lili.modules.member.entity.dos.Member;
|
||||
import cn.lili.modules.member.entity.dos.MemberSign;
|
||||
import cn.lili.modules.member.entity.dto.MemberPointMessage;
|
||||
@ -58,6 +56,9 @@ public class MemberMessageListener implements RocketMQListener<MessageExt> {
|
||||
@Autowired
|
||||
private List<MemberLoginEvent> memberLoginEvents;
|
||||
|
||||
@Autowired
|
||||
private List<MemberInfoChangeEvent> memberInfoChangeEvents;
|
||||
|
||||
|
||||
@Override
|
||||
public void onMessage(MessageExt messageExt) {
|
||||
@ -110,6 +111,20 @@ public class MemberMessageListener implements RocketMQListener<MessageExt> {
|
||||
}
|
||||
}
|
||||
break;
|
||||
//会员信息更改
|
||||
case MEMBER_INFO_EDIT:
|
||||
for (MemberInfoChangeEvent memberInfoChangeEvent : memberInfoChangeEvents) {
|
||||
try {
|
||||
Member member = JSONUtil.toBean(new String(messageExt.getBody()), Member.class);
|
||||
memberInfoChangeEvent.memberInfoChange(member);
|
||||
} catch (Exception e) {
|
||||
log.error("会员{},在{}业务中,提现事件执行异常",
|
||||
new String(messageExt.getBody()),
|
||||
memberInfoChangeEvent.getClass().getName(),
|
||||
e);
|
||||
}
|
||||
}
|
||||
break;
|
||||
//会员提现
|
||||
case MEMBER_WITHDRAWAL:
|
||||
for (MemberWithdrawalEvent memberWithdrawalEvent : memberWithdrawalEvents) {
|
||||
|
@ -0,0 +1,51 @@
|
||||
package cn.lili.listener;
|
||||
|
||||
import cn.hutool.json.JSONUtil;
|
||||
import cn.lili.event.MemberRegisterEvent;
|
||||
import cn.lili.event.StoreSettingChangeEvent;
|
||||
import cn.lili.modules.member.entity.dos.Member;
|
||||
import cn.lili.modules.store.entity.dos.Store;
|
||||
import cn.lili.rocketmq.tags.StoreTagsEnum;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.apache.rocketmq.common.message.MessageExt;
|
||||
import org.apache.rocketmq.spring.annotation.RocketMQMessageListener;
|
||||
import org.apache.rocketmq.spring.core.RocketMQListener;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 店铺消息
|
||||
* @author chc
|
||||
* @since 2022/6/2114:46
|
||||
*/
|
||||
@Component
|
||||
@Slf4j
|
||||
@RocketMQMessageListener(topic = "${lili.data.rocketmq.store-topic}", consumerGroup = "${lili.data.rocketmq.store-group}")
|
||||
public class StoreMessageListener implements RocketMQListener<MessageExt> {
|
||||
@Autowired
|
||||
private List<StoreSettingChangeEvent> storeSettingChangeEventList;
|
||||
|
||||
@Override
|
||||
public void onMessage(MessageExt messageExt) {
|
||||
switch (StoreTagsEnum.valueOf(messageExt.getTags())){
|
||||
//修改店铺
|
||||
case EDIT_STORE_SETTING:
|
||||
for (StoreSettingChangeEvent storeSettingChangeEvent : storeSettingChangeEventList) {
|
||||
try {
|
||||
Store store = JSONUtil.toBean(new String(messageExt.getBody()), Store.class);
|
||||
storeSettingChangeEvent.StoreSettingChange(store);
|
||||
} catch (Exception e) {
|
||||
log.error("会员{},在{}业务中,状态修改事件执行异常",
|
||||
new String(messageExt.getBody()),
|
||||
storeSettingChangeEvent.getClass().getName(),
|
||||
e);
|
||||
}
|
||||
}
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
@ -260,6 +260,8 @@ lili:
|
||||
order-group: lili_order_group
|
||||
member-topic: lili_member_topic
|
||||
member-group: lili_member_group
|
||||
store-topic: lili_store_topic
|
||||
store-group: lili_store_group
|
||||
other-topic: lili_other_topic
|
||||
other-group: lili_other_group
|
||||
notice-topic: lili_notice_topic
|
||||
|
@ -40,6 +40,7 @@ import cn.lili.modules.store.entity.dos.Store;
|
||||
import cn.lili.modules.store.entity.enums.StoreStatusEnum;
|
||||
import cn.lili.modules.store.service.StoreService;
|
||||
import cn.lili.mybatis.util.PageUtil;
|
||||
import cn.lili.rocketmq.RocketmqSendCallbackBuilder;
|
||||
import cn.lili.rocketmq.tags.MemberTagsEnum;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||
@ -48,6 +49,7 @@ import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import org.apache.rocketmq.spring.core.RocketMQTemplate;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.context.ApplicationEventPublisher;
|
||||
import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
|
||||
@ -95,6 +97,9 @@ public class MemberServiceImpl extends ServiceImpl<MemberMapper, Member> impleme
|
||||
@Autowired
|
||||
private RocketmqCustomProperties rocketmqCustomProperties;
|
||||
|
||||
@Autowired
|
||||
private RocketMQTemplate rocketMQTemplate;
|
||||
|
||||
@Autowired
|
||||
private ApplicationEventPublisher applicationEventPublisher;
|
||||
/**
|
||||
@ -301,6 +306,9 @@ public class MemberServiceImpl extends ServiceImpl<MemberMapper, Member> impleme
|
||||
BeanUtil.copyProperties(memberEditDTO, member);
|
||||
//修改会员
|
||||
this.updateById(member);
|
||||
String destination = rocketmqCustomProperties.getMemberTopic() + ":" + MemberTagsEnum.MEMBER_INFO_EDIT.name();
|
||||
//发送订单变更mq消息
|
||||
rocketMQTemplate.asyncSend(destination, member, RocketmqSendCallbackBuilder.commonCallback());
|
||||
return member;
|
||||
}
|
||||
|
||||
|
@ -25,6 +25,8 @@ import cn.lili.modules.store.service.StoreDetailService;
|
||||
import cn.lili.modules.store.service.StoreService;
|
||||
import cn.lili.rocketmq.RocketmqSendCallbackBuilder;
|
||||
import cn.lili.rocketmq.tags.GoodsTagsEnum;
|
||||
import cn.lili.rocketmq.tags.MemberTagsEnum;
|
||||
import cn.lili.rocketmq.tags.StoreTagsEnum;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
|
||||
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
||||
@ -99,6 +101,9 @@ public class StoreDetailServiceImpl extends ServiceImpl<StoreDetailMapper, Store
|
||||
if (result) {
|
||||
this.updateStoreGoodsInfo(store);
|
||||
}
|
||||
String destination = rocketmqCustomProperties.getStoreTopic() + ":" + StoreTagsEnum.EDIT_STORE_SETTING.name();
|
||||
//发送订单变更mq消息
|
||||
rocketMQTemplate.asyncSend(destination, store, RocketmqSendCallbackBuilder.commonCallback());
|
||||
return result;
|
||||
}
|
||||
|
||||
|
@ -6,6 +6,7 @@ import cn.lili.cache.Cache;
|
||||
import cn.lili.cache.CachePrefix;
|
||||
import cn.lili.common.enums.ResultCode;
|
||||
import cn.lili.common.exception.ServiceException;
|
||||
import cn.lili.common.properties.RocketmqCustomProperties;
|
||||
import cn.lili.common.security.AuthUser;
|
||||
import cn.lili.common.security.context.UserContext;
|
||||
import cn.lili.common.utils.BeanUtil;
|
||||
@ -27,12 +28,15 @@ import cn.lili.modules.store.mapper.StoreMapper;
|
||||
import cn.lili.modules.store.service.StoreDetailService;
|
||||
import cn.lili.modules.store.service.StoreService;
|
||||
import cn.lili.mybatis.util.PageUtil;
|
||||
import cn.lili.rocketmq.RocketmqSendCallbackBuilder;
|
||||
import cn.lili.rocketmq.tags.StoreTagsEnum;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import org.apache.rocketmq.spring.core.RocketMQTemplate;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
@ -72,6 +76,12 @@ public class StoreServiceImpl extends ServiceImpl<StoreMapper, Store> implements
|
||||
@Autowired
|
||||
private StoreDetailService storeDetailService;
|
||||
|
||||
@Autowired
|
||||
private RocketmqCustomProperties rocketmqCustomProperties;
|
||||
|
||||
@Autowired
|
||||
private RocketMQTemplate rocketMQTemplate;
|
||||
|
||||
@Autowired
|
||||
private Cache cache;
|
||||
|
||||
@ -159,7 +169,11 @@ public class StoreServiceImpl extends ServiceImpl<StoreMapper, Store> implements
|
||||
if (result) {
|
||||
storeDetailService.updateStoreGoodsInfo(store);
|
||||
}
|
||||
String destination = rocketmqCustomProperties.getStoreTopic() + ":" + StoreTagsEnum.EDIT_STORE_SETTING.name();
|
||||
//发送订单变更mq消息
|
||||
rocketMQTemplate.asyncSend(destination, store, RocketmqSendCallbackBuilder.commonCallback());
|
||||
}
|
||||
|
||||
cache.remove(CachePrefix.STORE.getPrefix() + storeEditDTO.getStoreId());
|
||||
return store;
|
||||
}
|
||||
|
@ -23,6 +23,10 @@ public enum MemberTagsEnum {
|
||||
* 会员提现
|
||||
*/
|
||||
MEMBER_WITHDRAWAL("会员提现"),
|
||||
/**
|
||||
* 会员信息更改
|
||||
*/
|
||||
MEMBER_INFO_EDIT("会员信息更改"),
|
||||
/**
|
||||
* 会员积分变动
|
||||
*/
|
||||
|
@ -0,0 +1,20 @@
|
||||
package cn.lili.rocketmq.tags;
|
||||
|
||||
/**
|
||||
* @author chc
|
||||
* @since 2022/6/2114:46
|
||||
*/
|
||||
public enum StoreTagsEnum {
|
||||
|
||||
EDIT_STORE_SETTING("修改商家设置");
|
||||
|
||||
private final String description;
|
||||
|
||||
StoreTagsEnum(String description) {
|
||||
this.description = description;
|
||||
}
|
||||
|
||||
public String description() {
|
||||
return description;
|
||||
}
|
||||
}
|
@ -3,6 +3,7 @@ package cn.lili.controller.im;
|
||||
import cn.lili.cache.Cache;
|
||||
import cn.lili.common.security.AuthUser;
|
||||
import cn.lili.common.security.context.UserContext;
|
||||
import cn.lili.common.security.enums.UserEnums;
|
||||
import cn.lili.common.utils.SnowFlake;
|
||||
import cn.lili.modules.im.config.CustomSpringConfigurator;
|
||||
import cn.lili.modules.im.entity.dos.ImMessage;
|
||||
@ -12,6 +13,8 @@ import cn.lili.modules.im.entity.vo.MessageVO;
|
||||
import cn.lili.modules.im.service.ImMessageService;
|
||||
import cn.lili.modules.member.entity.dos.Member;
|
||||
import cn.lili.modules.member.service.MemberService;
|
||||
import cn.lili.modules.store.entity.dos.Store;
|
||||
import cn.lili.modules.store.service.StoreService;
|
||||
import com.alibaba.druid.util.StringUtils;
|
||||
import com.alibaba.fastjson.JSON;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
@ -44,6 +47,9 @@ public class WebSocketServer {
|
||||
@Autowired
|
||||
private MemberService memberService;
|
||||
|
||||
@Autowired
|
||||
private StoreService storeService;
|
||||
|
||||
|
||||
@Autowired
|
||||
private Cache cache;
|
||||
@ -61,9 +67,16 @@ public class WebSocketServer {
|
||||
@OnOpen
|
||||
public void onOpen(@PathParam("accessToken") String accessToken, Session session) throws IOException {
|
||||
AuthUser authUser = UserContext.getAuthUser(accessToken);
|
||||
Member member = memberService.getById(authUser.getId());
|
||||
sessionPools.put(authUser.getId(), session);
|
||||
MessageVO messageVO = new MessageVO(MessageResultType.FRIENDS, member);
|
||||
Object message = null;
|
||||
if (UserEnums.STORE.equals(authUser.getRole())) {
|
||||
message = storeService.getById(authUser.getStoreId());
|
||||
sessionPools.put(authUser.getStoreId(), session);
|
||||
|
||||
} else if (UserEnums.MEMBER.equals(authUser.getRole())) {
|
||||
message = memberService.getById(authUser.getId());
|
||||
sessionPools.put(authUser.getId(), session);
|
||||
}
|
||||
MessageVO messageVO = new MessageVO(MessageResultType.FRIENDS, message);
|
||||
sendMessage(authUser.getId(), messageVO);
|
||||
}
|
||||
|
||||
|
@ -248,6 +248,8 @@ lili:
|
||||
order-group: lili_order_group
|
||||
member-topic: lili_member_topic
|
||||
member-group: lili_member_group
|
||||
store-topic: lili_store_topic
|
||||
store-group: lili_store_group
|
||||
other-topic: lili_other_topic
|
||||
other-group: lili_other_group
|
||||
notice-topic: lili_notice_topic
|
||||
|
@ -248,6 +248,8 @@ lili:
|
||||
order-group: lili_order_group
|
||||
member-topic: lili_member_topic
|
||||
member-group: lili_member_group
|
||||
store-topic: lili_store_topic
|
||||
store-group: lili_store_group
|
||||
other-topic: lili_other_topic
|
||||
other-group: lili_other_group
|
||||
notice-topic: lili_notice_topic
|
||||
|
@ -241,6 +241,8 @@ lili:
|
||||
order-group: lili_order_group
|
||||
member-topic: lili_member_topic
|
||||
member-group: lili_member_group
|
||||
store-topic: lili_store_topic
|
||||
store-group: lili_store_group
|
||||
other-topic: lili_other_topic
|
||||
other-group: lili_other_group
|
||||
notice-topic: lili_notice_topic
|
||||
|
Loading…
x
Reference in New Issue
Block a user