From 2bd2200f209ddb7bcc59b636d9de6f8b3f762958 Mon Sep 17 00:00:00 2001 From: yujian <yujian@163.com> Date: 星期四, 23 四月 2020 10:00:26 +0800 Subject: [PATCH] Merge remote-tracking branch 'origin/div' into div --- fanli/src/main/java/com/yeshi/fanli/service/impl/user/vip/UserVIPInfoServiceImpl.java | 195 ++++++++++++++++++++++++++---------------------- 1 files changed, 105 insertions(+), 90 deletions(-) diff --git a/fanli/src/main/java/com/yeshi/fanli/service/impl/user/vip/UserVIPInfoServiceImpl.java b/fanli/src/main/java/com/yeshi/fanli/service/impl/user/vip/UserVIPInfoServiceImpl.java index d98c06e..3c14853 100644 --- a/fanli/src/main/java/com/yeshi/fanli/service/impl/user/vip/UserVIPInfoServiceImpl.java +++ b/fanli/src/main/java/com/yeshi/fanli/service/impl/user/vip/UserVIPInfoServiceImpl.java @@ -1,6 +1,5 @@ package com.yeshi.fanli.service.impl.user.vip; -import java.util.ArrayList; import java.util.Date; import java.util.HashMap; import java.util.List; @@ -11,38 +10,35 @@ import org.springframework.context.annotation.Lazy; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; -import org.yeshi.utils.DateUtil; +import com.aliyun.openservices.ons.api.Message; +import com.aliyun.openservices.ons.api.Producer; import com.yeshi.fanli.dao.mybatis.user.vip.UserVIPInfoMapper; -import com.yeshi.fanli.entity.bus.msg.MsgOtherDetail.MsgTypeOtherTypeEnum; -import com.yeshi.fanli.entity.bus.user.HongBaoV2; -import com.yeshi.fanli.entity.bus.user.UserInfoExtra; +import com.yeshi.fanli.dto.mq.user.UserTopicTagEnum; +import com.yeshi.fanli.dto.mq.user.body.UserLevelChangedMQMsg; +import com.yeshi.fanli.entity.bus.user.ThreeSale; +import com.yeshi.fanli.entity.bus.user.UserInfo; import com.yeshi.fanli.entity.bus.user.UserInviteValidNum; -import com.yeshi.fanli.entity.bus.user.UserSystemCoupon; +import com.yeshi.fanli.entity.bus.user.vip.UserLevelEnum; +import com.yeshi.fanli.entity.bus.user.vip.UserLevelUpgradedNotify; import com.yeshi.fanli.entity.bus.user.vip.UserVIPInfo; import com.yeshi.fanli.entity.bus.user.vip.UserVIPPreInfo; -import com.yeshi.fanli.entity.system.SystemCoupon.CouponTypeEnum; import com.yeshi.fanli.exception.user.vip.UserVIPInfoException; -import com.yeshi.fanli.service.inter.config.ConfigService; import com.yeshi.fanli.service.inter.count.HongBaoV2CountService; -import com.yeshi.fanli.service.inter.msg.UserOtherMsgNotificationService; -import com.yeshi.fanli.service.inter.shop.BanLiShopOrderService; -import com.yeshi.fanli.service.inter.user.UserInfoExtraService; import com.yeshi.fanli.service.inter.user.UserInfoService; -import com.yeshi.fanli.service.inter.user.UserInviteSeparateService; -import com.yeshi.fanli.service.inter.user.UserSystemCouponService; -import com.yeshi.fanli.service.inter.user.integral.IntegralDetailService; import com.yeshi.fanli.service.inter.user.invite.ThreeSaleSerivce; +import com.yeshi.fanli.service.inter.user.invite.UserInviteMsgNotificationService; import com.yeshi.fanli.service.inter.user.invite.UserInviteValidNumService; import com.yeshi.fanli.service.inter.user.msg.UserAccountMsgNotificationService; +import com.yeshi.fanli.service.inter.user.vip.UserLevelUpgradedNotifyService; import com.yeshi.fanli.service.inter.user.vip.UserVIPInfoService; import com.yeshi.fanli.service.inter.user.vip.UserVIPPreInfoService; import com.yeshi.fanli.service.inter.user.vip.UserVipConfigService; import com.yeshi.fanli.util.Constant; import com.yeshi.fanli.util.StringUtil; -import com.yeshi.fanli.vo.msg.ClientTextStyleVO; -import com.yeshi.fanli.vo.msg.CommonMsgItemVO; -import com.yeshi.fanli.vo.msg.CommonMsgItemVOFactory; +import com.yeshi.fanli.util.TimeUtil; +import com.yeshi.fanli.util.rocketmq.MQMsgBodyFactory; +import com.yeshi.fanli.util.rocketmq.MQTopicName; @Service public class UserVIPInfoServiceImpl implements UserVIPInfoService { @@ -54,36 +50,16 @@ private UserInfoService userInfoService; @Resource - private UserInfoExtraService userInfoExtraService; - - @Resource private UserVipConfigService userVipConfigService; @Lazy @Resource private HongBaoV2CountService hongBaoV2CountService; - @Resource - private IntegralDetailService integralDetailService; - - @Resource - private BanLiShopOrderService banLiShopOrderService; - - @Resource - private UserOtherMsgNotificationService userOtherMsgNotificationService; @Resource private ThreeSaleSerivce threeSaleSerivce; - @Resource - private UserInviteSeparateService userInviteSeparateService; - - @Resource - private ConfigService configService; - - @Lazy - @Resource - private UserSystemCouponService userSystemCouponService; @Resource private UserVIPPreInfoService userVIPPreInfoService; @@ -93,6 +69,17 @@ @Resource private UserInviteValidNumService userInviteValidNumService; + + @Resource + private UserLevelUpgradedNotifyService userLevelUpgradedNotifyService; + + @Resource + private UserInviteMsgNotificationService userInviteMsgNotificationService; + + @Resource(name = "producer") + private Producer producer; + + @Override @Transactional(rollbackFor = Exception.class) @@ -211,67 +198,58 @@ if (!verifyVip(uid)) throw new UserVIPInfoException(1, "绯荤粺楠岃瘉锛氫笉婊¤冻鍗囩骇鏉′欢"); - - // 棰濆淇℃伅 - UserInfoExtra userInfoExtra = userInfoExtraService.getByUidForUpdate(uid); - if (userInfoExtra == null) - throw new UserVIPInfoException(1, "鐢ㄦ埛淇℃伅涓嶅瓨鍦�"); - + + Date upgradeTime = new Date(); // 閫氳繃瓒呯骇浼氬憳 UserVIPInfo info = new UserVIPInfo(); info.setId(userVIPInfo.getId()); - info.setSuccessTime(new Date()); + info.setSuccessTime(upgradeTime); info.setState(UserVIPInfo.STATE_SUCCESS); - info.setUpdateTime(new Date()); + info.setUpdateTime(upgradeTime); userVIPInfoMapper.updateByPrimaryKeySelective(info); - try { - // 璧犻�佸厤鍗曞埜 - String giveCoupon = userVipConfigService.getValueByKey("vip_pre_10_gift_givefree_coupon"); - if (!StringUtil.isNullOrEmpty(giveCoupon)) { - int num = Integer.parseInt(giveCoupon); - for (int i = 0; i < num; i++) { - userSystemCouponService.insertUserCoupon(uid, CouponTypeEnum.freeCouponGive.name(), - UserSystemCoupon.SOURCE_SYSTEM_PUSH, null, false); - } - - // 娑堟伅 - List<CommonMsgItemVO> listMsg = new ArrayList<>(); - listMsg.add(CommonMsgItemVOFactory.createMsgItemVO(new ClientTextStyleVO("鐘� 鎬�", ClientTextStyleVO.COLOR_TITLE), - new ClientTextStyleVO("鎭枩浣狅紒鎴愬姛鍗囩骇涓鸿秴绾т細鍛�", ClientTextStyleVO.COLOR_CONTENT))); - listMsg.add(CommonMsgItemVOFactory.createMsgItemVO(new ClientTextStyleVO("濂� 鍔�", ClientTextStyleVO.COLOR_TITLE), - new ClientTextStyleVO("鑾峰緱璧犻�佸厤鍗曞埜" + num +"寮�", ClientTextStyleVO.COLOR_CONTENT))); - listMsg.add(CommonMsgItemVOFactory.createMsgItemVO(new ClientTextStyleVO("澶� 娉�", ClientTextStyleVO.COLOR_TITLE), - new ClientTextStyleVO("璇︽儏鏌ョ湅锛屽搴斾細鍛樻潈鐩�", ClientTextStyleVO.COLOR_CONTENT))); - userOtherMsgNotificationService.createMsgOtherDetail(uid, listMsg, MsgTypeOtherTypeEnum.vipUpgradeReward); - } - } catch (Exception e) { - throw new UserVIPInfoException(1, "鍒歌禒閫佸け璐�"); - } + // 鍗囩骇寮规鎻愮ず + UserLevelUpgradedNotify notify = new UserLevelUpgradedNotify(); + notify.setUid(uid); + notify.setFromLevel(UserLevelEnum.highVIP); + notify.setToLevel(UserLevelEnum.superVIP); + notify.setValid(true); + notify.setCreateTime(new Date()); + userLevelUpgradedNotifyService.addUserLevelUpgradedNotify(notify); - // 鍗囩骇娑堟伅 try { + // 鍗囩骇娑堟伅 UserVIPPreInfo pre1 = userVIPPreInfoService.getVipByProcess(uid, UserVIPPreInfo.PROCESS_2); - int days = DateUtil.daysBetween(pre1.getCreateTime(), new Date()); - userAccountMsgNotificationService.vipUpgradeSuccess(uid, days); + userAccountMsgNotificationService.vipUpgradeSuccess(uid, TimeUtil.getDayDifferenceCount(pre1.getCreateTime(), new Date())); + + // 鐩存帴绮変笣鍗囩骇鎻愰啋 + ThreeSale threeSale = threeSaleSerivce.getMyBoss(uid); + if (threeSale != null) { + Long bossId = threeSale.getBoss().getId(); + UserInfo userInfo = userInfoService.selectByPKey(uid); + userInviteMsgNotificationService.fansUpgrade(bossId, "瓒呯骇浼氬憳", userInfo.getNickName(), getPassItem(uid), upgradeTime); + } } catch (Exception e) { e.printStackTrace(); } + + + if (!Constant.IS_TEST) { + UserLevelChangedMQMsg msg = new UserLevelChangedMQMsg(uid, UserLevelEnum.highVIP,UserLevelEnum.superVIP, new Date()); + Message message = MQMsgBodyFactory.create(MQTopicName.TOPIC_USER, UserTopicTagEnum.userLevelChanged, msg); + producer.send(message); + } } + /** * 楠岃瘉鏄惁绗﹀悎VIP * @param uid * @return */ - private boolean verifyVip(Long uid) { - // 鑷喘璁㈠崟 - long doneZiGou = hongBaoV2CountService.counOrderByUidAndOrderType(uid, Constant.VIP_ORDER_PAY, - HongBaoV2.TYPE_ZIGOU); - // 鍒嗕韩璁㈠崟 - long doneShare = hongBaoV2CountService.counOrderByUidAndOrderType(uid, Constant.VIP_ORDER_PAY, - HongBaoV2.TYPE_SHARE_GOODS); - + private String getPassItem(Long uid) { + // 鑷喘 + 鍒嗕韩璁㈠崟 + long doneOrder = hongBaoV2CountService.countMyDirectOrderByCashArrival(uid, Constant.VIP_ORDER_PAY); // 鏈夋晥绮変笣 int doneFirst = 0; int doneSecond = 0; @@ -281,16 +259,10 @@ doneSecond = userInviteValidNum.getNumSecond() == null ? 0 : userInviteValidNum.getNumSecond(); } - long limitZiGou = 0; - String zigou = userVipConfigService.getValueByKey("vip_pre_10_zigou_order_count"); + long limitOrder = 0; + String zigou = userVipConfigService.getValueByKey("vip_pre_10_order_count"); if (!StringUtil.isNullOrEmpty(zigou)) { - limitZiGou = Long.parseLong(zigou); - } - - long limitShare = 0; - String share = userVipConfigService.getValueByKey("vip_pre_10_share_order_count"); - if (!StringUtil.isNullOrEmpty(share)) { - limitShare = Long.parseLong(share); + limitOrder = Long.parseLong(zigou); } long limitFirst = 0; @@ -305,7 +277,51 @@ limitSecond = Long.parseLong(second); } - if (doneZiGou >= limitZiGou || doneShare >= limitShare || (doneFirst >= limitFirst && doneSecond >= limitSecond)) { + String item = ""; + if (doneOrder >= limitOrder) { + item = "杩斿埄+鍒嗕韩璁㈠崟"; + } else if (doneFirst >= limitFirst && doneSecond >= limitSecond) { + item = "鐩存帴+闂存帴绮変笣"; + } + return item; + } + + + /** + * 楠岃瘉鏄惁绗﹀悎VIP + * @param uid + * @return + */ + private boolean verifyVip(Long uid) { + // 鑷喘 + 鍒嗕韩璁㈠崟 + long doneOrder = hongBaoV2CountService.countMyDirectOrderByCashArrival(uid, Constant.VIP_ORDER_PAY); + // 鏈夋晥绮変笣 + int doneFirst = 0; + int doneSecond = 0; + UserInviteValidNum userInviteValidNum = userInviteValidNumService.selectByPrimaryKey(uid); + if (userInviteValidNum != null) { + doneFirst = userInviteValidNum.getNumFirst() == null ? 0 : userInviteValidNum.getNumFirst(); + doneSecond = userInviteValidNum.getNumSecond() == null ? 0 : userInviteValidNum.getNumSecond(); + } + long limitOrder = 0; + String zigou = userVipConfigService.getValueByKey("vip_pre_10_order_count"); + if (!StringUtil.isNullOrEmpty(zigou)) { + limitOrder = Long.parseLong(zigou); + } + + long limitFirst = 0; + String first = userVipConfigService.getValueByKey("vip_pre_10_first_level_team_count"); + if (!StringUtil.isNullOrEmpty(first)) { + limitFirst = Long.parseLong(first); + } + + long limitSecond = 0; + String second = userVipConfigService.getValueByKey("vip_pre_10_second_level_team_count"); + if (!StringUtil.isNullOrEmpty(second)) { + limitSecond = Long.parseLong(second); + } + + if (doneOrder >= limitOrder || (doneFirst >= limitFirst && doneSecond >= limitSecond)) { return true; } return false; @@ -327,7 +343,6 @@ info.setState(UserVIPInfo.STATE_INVALID); info.setUpdateTime(new Date()); userVIPInfoMapper.updateByPrimaryKeySelective(info); - // 娑堟伅 userAccountMsgNotificationService.vipUpgradeFail(uid, reason); } -- Gitblit v1.8.0