package cn.lili.listener; import cn.hutool.json.JSONUtil; import cn.lili.event.*; import cn.lili.event.impl.ImTalkExecute; import cn.lili.modules.connect.entity.dto.MemberConnectLoginMessage; import cn.lili.modules.member.entity.dos.Member; import cn.lili.modules.member.entity.dos.MemberSign; import cn.lili.modules.member.entity.dto.MemberPointMessage; import cn.lili.modules.member.service.MemberSignService; import cn.lili.modules.wallet.entity.dto.MemberWithdrawalMessage; import cn.lili.rocketmq.tags.MemberTagsEnum; 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 paulG * @since 2020/12/9 **/ @Component @Slf4j @RocketMQMessageListener(topic = "${lili.data.rocketmq.member-topic}", consumerGroup = "${lili.data.rocketmq.member-group}") public class MemberMessageListener implements RocketMQListener { /** * 会员签到 */ @Autowired private MemberSignService memberSignService; /** * 会员积分变化 */ @Autowired private List memberPointChangeEvents; /** * 会员提现 */ @Autowired private List memberWithdrawalEvents; /** * 会员注册 */ @Autowired private List memberSignEvents; /** * 会员注册 */ @Autowired private List memberLoginEvents; @Autowired private List memberInfoChangeEvents; @Autowired private List memberConnectLoginEvents; @Override public void onMessage(MessageExt messageExt) { switch (MemberTagsEnum.valueOf(messageExt.getTags())) { //会员注册 case MEMBER_REGISTER: for (MemberRegisterEvent memberRegisterEvent : memberSignEvents) { try { Member member = JSONUtil.toBean(new String(messageExt.getBody()), Member.class); memberRegisterEvent.memberRegister(member); } catch (Exception e) { log.error("会员{},在{}业务中,状态修改事件执行异常", new String(messageExt.getBody()), memberRegisterEvent.getClass().getName(), e); } } break; //用户登录 case MEMBER_LOGIN: for (MemberLoginEvent memberLoginEvent : memberLoginEvents) { try { Member member = JSONUtil.toBean(new String(messageExt.getBody()), Member.class); memberLoginEvent.memberLogin(member); } catch (Exception e) { log.error("会员{},在{}业务中,状态修改事件执行异常", new String(messageExt.getBody()), memberLoginEvent.getClass().getName(), e); } } break; //会员签到 case MEMBER_SING: MemberSign memberSign = JSONUtil.toBean(new String(messageExt.getBody()), MemberSign.class); memberSignService.memberSignSendPoint(memberSign.getMemberId(), memberSign.getSignDay()); break; //会员积分变动 case MEMBER_POINT_CHANGE: for (MemberPointChangeEvent memberPointChangeEvent : memberPointChangeEvents) { try { MemberPointMessage memberPointMessage = JSONUtil.toBean(new String(messageExt.getBody()), MemberPointMessage.class); memberPointChangeEvent.memberPointChange(memberPointMessage); } catch (Exception e) { log.error("会员{},在{}业务中,状态修改事件执行异常", new String(messageExt.getBody()), memberPointChangeEvent.getClass().getName(), e); } } 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) { try { MemberWithdrawalMessage memberWithdrawalMessage = JSONUtil.toBean(new String(messageExt.getBody()), MemberWithdrawalMessage.class); memberWithdrawalEvent.memberWithdrawal(memberWithdrawalMessage); } catch (Exception e) { log.error("会员{},在{}业务中,提现事件执行异常", new String(messageExt.getBody()), memberWithdrawalEvent.getClass().getName(), e); } } break; //用户第三方登录 case MEMBER_CONNECT_LOGIN: for (MemberConnectLoginEvent memberConnectLoginEvent : memberConnectLoginEvents) { try { MemberConnectLoginMessage memberConnectLoginMessage = JSONUtil.toBean(new String(messageExt.getBody()), MemberConnectLoginMessage.class); memberConnectLoginEvent.memberConnectLogin(memberConnectLoginMessage.getMember(), memberConnectLoginMessage.getConnectAuthUser()); } catch (Exception e) { log.error("会员{},在{}业务中,状态修改事件执行异常", new String(messageExt.getBody()), memberConnectLoginEvent.getClass().getName(), e); } } break; default: break; } } }