admin
2021-01-28 8c1c003c60d2f27b3c55e248451caeec7f2b5631
service-daylucky/src/main/java/com/ks/daylucky/util/mq/consumer/MsgConsumer.java
@@ -6,16 +6,18 @@
import com.ks.daylucky.service.UserInfoExtraService;
import com.ks.daylucky.service.UserInfoService;
import com.ks.daylucky.service.UserMsgService;
import com.ks.daylucky.service.impl.AlipayTemplateMsgManager;
import com.ks.daylucky.service.impl.AppManager;
import com.ks.daylucky.util.LoggerUtil;
import com.ks.daylucky.util.factory.LuckyMsgContentFactory;
import com.ks.daylucky.util.factory.UserMsgFactory;
import com.ks.daylucky.util.mq.CMQManager;
import com.ks.lucky.exception.LuckyActivityException;
import com.ks.lucky.exception.LuckyActivityJoinAssistException;
import com.ks.lucky.pojo.DO.*;
import com.ks.lucky.pojo.DTO.ActivitySimpleUser;
import com.ks.lucky.pojo.DTO.mq.*;
import com.ks.lucky.remote.service.LuckyActivityAwardResultService;
import com.ks.lucky.remote.service.LuckyActivityAwardService;
import com.ks.lucky.remote.service.LuckyActivityJoinAssistService;
import com.ks.lucky.remote.service.LuckyActivityJoinService;
import com.ks.lucky.remote.service.*;
import com.ks.lucky.utils.LuckyCMQConstant;
import com.ks.lucky.utils.mq.CMQConsumeRunner;
import com.qcloud.cmq.Message;
@@ -39,17 +41,26 @@
    @Resource
    private UserInfoService userInfoService;
    @Reference(version = "1.0.0",check = false)
    @Reference(version = "1.0.0", check = false)
    private LuckyActivityJoinAssistService luckyActivityJoinAssistService;
    @Reference(version = "1.0.0",check = false)
    @Reference(version = "1.0.0", check = false)
    private LuckyActivityJoinService luckyActivityJoinService;
    @Reference(version = "1.0.0",check = false)
    @Reference(version = "1.0.0", check = false)
    private LuckyActivityAwardResultService luckyActivityAwardResultService;
    @Reference(version = "1.0.0",check = false)
    @Reference(version = "1.0.0", check = false)
    private LuckyActivityAwardService luckyActivityAwardService;
    @Reference(version = "1.0.0", check = false)
    private LuckyActivityService luckyActivityService;
    @Resource
    private AppManager appManager;
    @Resource
    private AlipayTemplateMsgManager alipayTemplateMsgManager;
    @Resource
    private UserMsgService userMsgService;
@@ -82,6 +93,7 @@
        new JobThreadExecutorServiceImpl().run(new Runnable() {
            @Override
            public void run() {
                LoggerUtil.mqLogger.info("接收消息 {}", MsgConsumer.class.getSimpleName());
                List<Message> messageList = CMQManager.getInstance().consumeMsgMsg(16);
                if (messageList != null) {
                    for (Message message : messageList) {
@@ -100,25 +112,31 @@
                                    for (ActivitySimpleUser user : userList) {
                                        //判断是否中奖
                                        UserMsgSettings settings = getUserMsgSetting(Long.parseLong(user.getUid()));
                                        LuckyActivity activity = luckyActivityService.getActivity(dto.getActivityId());
                                        LuckyActivityAwardResult result = luckyActivityAwardResultService.getResult(user.getAppId(), user.getUid(), dto.getActivityId());
                                        if (result != null) {
                                            if (settings.getDrawnMsg()) {
                                            if (settings.getDrawnMsg() != null && settings.getDrawnMsg()) {
                                                LuckyActivityAwards awards = luckyActivityAwardService.getAwardDetail(result.getAwardId());
                                                try {
                                                    userMsgService.addMsg(UserMsgFactory.createLuckyMsg(Long.parseLong(result.getUid()), LuckyMsgContentFactory.createDrawn(dto.getActivityId(), awards.getAwardName())));
                                                    userMsgService.addMsg(UserMsgFactory.createLuckyMsg(Long.parseLong(result.getUid()), LuckyMsgContentFactory.createDrawn(dto.getActivityId(), activity.getCreateTime(), awards.getAwardName())));
                                                } catch (UserMsgException e) {
                                                    logger.error("添加中奖消息出错", e.getMessage(), result.getId());
                                                    logger.error("添加中奖消息出错 awardResultId-{}", result.getId(), e);
                                                }
                                                //发送中奖模板消息
                                                alipayTemplateMsgManager.sendDrawnMsg(activity, Long.parseLong(result.getUid()));
                                            }
                                        } else {
                                            if (settings.getNotDrawnMsg()) {
                                            if (settings.getNotDrawnMsg() != null && settings.getNotDrawnMsg()) {
                                                try {
                                                    userMsgService.addMsg(UserMsgFactory.createLuckyMsg(Long.parseLong(user.getUid()), LuckyMsgContentFactory.createNotDrawn(dto.getActivityId())));
                                                    userMsgService.addMsg(UserMsgFactory.createLuckyMsg(Long.parseLong(user.getUid()), LuckyMsgContentFactory.createNotDrawn(dto.getActivityId(), activity.getCreateTime())));
                                                } catch (UserMsgException e) {
                                                    logger.error("添加未中奖消息出错", e.getMessage(), user.getUid(), dto.getActivityId());
                                                    logger.error("添加未中奖消息出错  activityId-{} uid-{} ",  dto.getActivityId(),user.getUid(),e);
                                                }
                                                //发送未中奖模板消息
                                                alipayTemplateMsgManager.sendUnDrawnMsg(activity, Long.parseLong(result.getUid()));
                                            }
                                        }
                                    }
@@ -126,14 +144,15 @@
                                case LuckyActivity.STATE_OPEN_FAIL:
                                    userList = getValidJoinerList(dto.getActivityId());
                                    LuckyActivity activity = luckyActivityService.getActivity(dto.getActivityId());
                                    for (ActivitySimpleUser user : userList) {
                                        //判断是否中奖
                                        UserMsgSettings settings = getUserMsgSetting(Long.parseLong(user.getUid()));
                                        if (settings.getNotOpenActivityMsg()) {
                                        if (settings.getNotOpenActivityMsg() != null && settings.getNotOpenActivityMsg()) {
                                            try {
                                                userMsgService.addMsg(UserMsgFactory.createLuckyMsg(Long.parseLong(user.getUid()), LuckyMsgContentFactory.createOpenFail(dto.getActivityId())));
                                                userMsgService.addMsg(UserMsgFactory.createLuckyMsg(Long.parseLong(user.getUid()), LuckyMsgContentFactory.createOpenFail(dto.getActivityId(), activity.getCreateTime())));
                                            } catch (UserMsgException e) {
                                                logger.error("添加未开奖消息出错", e.getMessage(), user.getUid(), dto.getActivityId());
                                                logger.error("添加未开奖消息出错 activityId-{} uid-{}", dto.getActivityId(), user.getUid(), e);
                                            }
                                        }
                                    }
@@ -145,30 +164,29 @@
                        } else if (tag.equalsIgnoreCase(LuckyCMQConstant.TAG_ACTIVITY_JOIN)) {
                            ActivityJoinMsgDTO dto = JsonUtil.getSimpleGson().fromJson(message.msgBody, ActivityJoinMsgDTO.class);
                            LuckyActivity activity = luckyActivityService.getActivity(dto.getActivityId());
                            UserMsgSettings settings = getUserMsgSetting(Long.parseLong(dto.getUid()));
                            if (settings.getJoinActivityMsg()) {
                            if (settings.getJoinActivityMsg() != null && settings.getJoinActivityMsg()) {
                                try {
                                    userMsgService.addMsg(UserMsgFactory.createLuckyMsg(Long.parseLong(dto.getUid()), LuckyMsgContentFactory.createJoinSuccess(dto.getActivityId())));
                                    userMsgService.addMsg(UserMsgFactory.createLuckyMsg(Long.parseLong(dto.getUid()), LuckyMsgContentFactory.createJoinSuccess(dto.getActivityId(), activity.getCreateTime())));
                                } catch (UserMsgException e) {
                                    logger.error("添加参与成功消息出错", e.getMessage(), dto.getUid(), dto.getActivityId());
                                    logger.error("添加参与成功消息出错 activityId-{} uid-{}", dto.getActivityId(), dto.getUid(), e);
                                }
                            }
                            //查询是否有助力别人
                            LuckyActivityJoinAssist assist = luckyActivityJoinAssistService.getRecord(dto.getJoinId(), dto.getAppId(), dto.getUid(), ActivityJoinAssistEvent.assistJoin);
                            //查询本活动是否有助力别人
                            LuckyActivityJoinAssist assist = luckyActivityJoinAssistService.getRecord(null, dto.getActivityId(), dto.getAppId(), dto.getUid(), ActivityJoinAssistEvent.assist);
                            if (assist != null) {
                                //是否助力过别人
                                LuckyActivityJoinRecord joinRecord = luckyActivityJoinService.getJoinRecord(assist.getJoinId());
                                if (joinRecord != null) {
                                    settings = getUserMsgSetting(Long.parseLong(joinRecord.getUid()));
                                    if (settings.getAssistSuccessMsg()) {
                                        SimpleUser user = userInfoService.getSimpleUser(Long.parseLong(dto.getUid()));
                                        try {
                                            userMsgService.addMsg(UserMsgFactory.createLuckyMsg(Long.parseLong(joinRecord.getUid()), LuckyMsgContentFactory.createAssistAndJoin(dto.getActivityId(), user, assist.getWeight())));
                                        } catch (UserMsgException e) {
                                            logger.error("添加助力成功且自己参加消息出错", e.getMessage(), dto.getUid(), dto.getActivityId());
                                        }
                                    //得幸运券
                                    try {
                                        luckyActivityJoinAssistService.assist(activity.getId(), dto.getAppId(), dto.getUid(), joinRecord.getUid(), ActivityJoinAssistEvent.assistJoin, 1);
                                    } catch (LuckyActivityException e) {
                                        e.printStackTrace();
                                    } catch (LuckyActivityJoinAssistException e) {
                                        e.printStackTrace();
                                    }
                                }
                            }
@@ -177,28 +195,34 @@
                        } else if (tag.equalsIgnoreCase(LuckyCMQConstant.TAG_ASSIST)) {
                            //助力
                            ActivityAssistMsgDTO dto = JsonUtil.getSimpleGson().fromJson(message.msgBody, ActivityAssistMsgDTO.class);
                            UserMsgSettings settings = getUserMsgSetting(Long.parseLong(dto.getUid()));
                            if (settings.getAssistSuccessMsg()) {
                            LuckyActivity activity = luckyActivityService.getActivity(dto.getActivityId());
                            UserMsgSettings settings = getUserMsgSetting(Long.parseLong(dto.getTargetUid()));
                            if (settings.getAssistSuccessMsg() != null && settings.getAssistSuccessMsg()) {
                                LuckyActivityJoinRecord record = luckyActivityJoinService.getJoinInfo(dto.getActivityId(), dto.getAppId(), dto.getTargetUid());
                                if (record != null) {
                                    LuckyActivityJoinAssist assist = luckyActivityJoinAssistService.getRecord(record.getId(), dto.getAppId(), dto.getUid(), ActivityJoinAssistEvent.assist);
                                    LuckyActivityJoinAssist assist = luckyActivityJoinAssistService.getRecord(record.getId(), null, dto.getAppId(), dto.getUid(), dto.getAssistEvent());
                                    SimpleUser user = userInfoService.getSimpleUser(Long.parseLong(dto.getUid()));
                                    try {
                                        userMsgService.addMsg(UserMsgFactory.createLuckyMsg(Long.parseLong(dto.getTargetUid()), LuckyMsgContentFactory.createAssist(dto.getActivityId(), user, assist.getWeight())));
                                        if (dto.getAssistEvent() == ActivityJoinAssistEvent.assist) {
                                            userMsgService.addMsg(UserMsgFactory.createLuckyMsg(Long.parseLong(dto.getTargetUid()), LuckyMsgContentFactory.createAssist(dto.getActivityId(), activity.getCreateTime(), user, assist.getWeight())));
                                        } else if (dto.getAssistEvent() == ActivityJoinAssistEvent.assistJoin) {
                                            userMsgService.addMsg(UserMsgFactory.createLuckyMsg(Long.parseLong(dto.getTargetUid()), LuckyMsgContentFactory.createAssistAndJoin(dto.getActivityId(), activity.getCreateTime(), user, assist.getWeight())));
                                        }
                                    } catch (UserMsgException e) {
                                        logger.error("添加助力成功消息出错", e.getMessage(), dto.getUid(), dto.getActivityId());
                                        logger.error("添加助力成功消息出错:activityId-{} uid-{}", dto.getActivityId(), dto.getUid(), e);
                                    }
                                }
                            }
                        } else if (tag.equalsIgnoreCase(LuckyCMQConstant.TAG_ACTIVITY_DRAWN)) {
                            ActivityDrawnMsgDTO dto = JsonUtil.getSimpleGson().fromJson(message.msgBody, ActivityDrawnMsgDTO.class);
                            LuckyActivity activity = luckyActivityService.getActivity(dto.getActivityId());
                            switch (dto.getAwardResultState()) {
                                case LuckyActivityAwardResult.STATE_OUT_OF_DATE:
                                    try {
                                        userMsgService.addMsg(UserMsgFactory.createLuckyMsg(Long.parseLong(dto.getUid()), LuckyMsgContentFactory.createReceiveOutDate(dto.getActivityId())));
                                        userMsgService.addMsg(UserMsgFactory.createLuckyMsg(Long.parseLong(dto.getUid()), LuckyMsgContentFactory.createReceiveOutDate(dto.getActivityId(), activity.getCreateTime())));
                                    } catch (UserMsgException e) {
                                        logger.error("添加过期未领消息出错", e.getMessage(), dto.getUid(), dto.getActivityId());
                                        logger.error("添加过期未领消息出错:", dto.getActivityId(), dto.getUid(), e);
                                    }
                                    break;