admin
2021-01-15 5405154d6979f1b50ce2d881bb164b1acca80b6d
service-daylucky/src/main/java/com/ks/daylucky/util/mq/consumer/MsgConsumer.java
@@ -1,21 +1,30 @@
package com.ks.daylucky.util.mq.consumer;
import com.alipay.api.AlipayApiException;
import com.ks.app.entity.AppInfo;
import com.ks.app.util.AlipayAppUtil;
import com.ks.daylucky.exception.UserMsgException;
import com.ks.daylucky.pojo.DO.UserInfo;
import com.ks.daylucky.pojo.DO.UserMsg;
import com.ks.daylucky.pojo.DTO.UserMsgSettings;
import com.ks.daylucky.pojo.DTO.msg.LuckyMsgContent;
import com.ks.daylucky.pojo.VO.SimpleUser;
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.UserInfoUtil;
import com.ks.daylucky.util.activity.ActivityUtil;
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;
@@ -23,6 +32,8 @@
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.yeshi.utils.JsonUtil;
import org.yeshi.utils.alipay.AlipayXcxUtil;
import org.yeshi.utils.exception.AlipayXcxException;
import org.yeshi.utils.mq.JobThreadExecutorServiceImpl;
import javax.annotation.Resource;
@@ -50,6 +61,15 @@
    @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 +102,7 @@
        new JobThreadExecutorServiceImpl().run(new Runnable() {
            @Override
            public void run() {
                logger.info("读取消息队列数据");
                List<Message> messageList = CMQManager.getInstance().consumeMsgMsg(16);
                if (messageList != null) {
                    for (Message message : messageList) {
@@ -100,25 +121,32 @@
                                    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());
                                                }
                                                //发送中奖模板消息
                                                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());
                                                }
                                                //发送未中奖模板消息
                                                alipayTemplateMsgManager.sendUnDrawnMsg(activity, Long.parseLong(result.getUid()));
                                            }
                                        }
                                    }
@@ -126,12 +154,13 @@
                                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());
                                            }
@@ -145,30 +174,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());
                                }
                            }
                            //查询是否有助力别人
                            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());
                                        }
                                        luckyActivityJoinAssistService.assist(activity.getId(), dto.getAppId(), dto.getUid(), joinRecord.getUid(), ActivityJoinAssistEvent.assistJoin, 1);
                                    } catch (LuckyActivityException e) {
                                        e.printStackTrace();
                                    } catch (LuckyActivityJoinAssistException e) {
                                        e.printStackTrace();
                                    }
                                }
                            }
@@ -177,14 +205,19 @@
                        } 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());
                                    }
@@ -193,10 +226,11 @@
                        } 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());
                                    }