| | |
| | | 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; |
| | |
| | | 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; |
| | |
| | | |
| | | @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; |
| | |
| | | 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) { |
| | |
| | | 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())); |
| | | } |
| | | } |
| | | } |
| | |
| | | |
| | | 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()); |
| | | } |
| | |
| | | |
| | | } 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(); |
| | | } |
| | | } |
| | | } |
| | |
| | | } 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()); |
| | | } |
| | |
| | | |
| | | } 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()); |
| | | } |