From 0b57cfd62e842b309d03467b96a331c673ecad7c Mon Sep 17 00:00:00 2001 From: admin <weikou2014> Date: 星期二, 21 四月 2020 14:08:18 +0800 Subject: [PATCH] 删除普通会员等级 --- fanli/src/main/java/com/yeshi/fanli/service/impl/user/vip/UserVIPPreInfoServiceImpl.java | 661 ++++++++++++++++++++++++++++++++---------------------- 1 files changed, 393 insertions(+), 268 deletions(-) diff --git a/fanli/src/main/java/com/yeshi/fanli/service/impl/user/vip/UserVIPPreInfoServiceImpl.java b/fanli/src/main/java/com/yeshi/fanli/service/impl/user/vip/UserVIPPreInfoServiceImpl.java index d8006e2..809be6d 100644 --- a/fanli/src/main/java/com/yeshi/fanli/service/impl/user/vip/UserVIPPreInfoServiceImpl.java +++ b/fanli/src/main/java/com/yeshi/fanli/service/impl/user/vip/UserVIPPreInfoServiceImpl.java @@ -1,7 +1,6 @@ package com.yeshi.fanli.service.impl.user.vip; import java.math.BigDecimal; -import java.util.ArrayList; import java.util.Collections; import java.util.Comparator; import java.util.Date; @@ -10,42 +9,52 @@ import javax.annotation.Resource; import org.springframework.context.annotation.Lazy; +import org.springframework.core.task.TaskExecutor; 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.UserVIPPreInfoMapper; -import com.yeshi.fanli.dto.msg.MsgAccountVipDTO; -import com.yeshi.fanli.entity.bus.msg.MsgOtherDetail.MsgTypeOtherTypeEnum; +import com.yeshi.fanli.dto.mq.user.UserTopicTagEnum; +import com.yeshi.fanli.dto.mq.user.body.UserLevelChangedMQMsg; import com.yeshi.fanli.entity.bus.user.HongBaoV2; import com.yeshi.fanli.entity.bus.user.ThreeSale; import com.yeshi.fanli.entity.bus.user.UserInfo; +import com.yeshi.fanli.entity.bus.user.UserInfoExtra; +import com.yeshi.fanli.entity.bus.user.UserInfoRegister; 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.UserVIPPreInfo; import com.yeshi.fanli.entity.integral.IntegralDetail; import com.yeshi.fanli.entity.system.ConfigKeyEnum; -import com.yeshi.fanli.entity.system.SystemCoupon.CouponTypeEnum; import com.yeshi.fanli.exception.user.vip.UserVIPPreInfoException; import com.yeshi.fanli.log.LogHelper; 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.user.UserInfoExtraService; +import com.yeshi.fanli.service.inter.user.UserInfoRegisterService; 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.MsgAccountDetailService; +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.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.util.TimeUtil; import com.yeshi.fanli.util.annotation.RequestSerializableByKeyService; -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.rocketmq.MQMsgBodyFactory; +import com.yeshi.fanli.util.rocketmq.MQTopicName; @Service public class UserVIPPreInfoServiceImpl implements UserVIPPreInfoService { @@ -59,9 +68,6 @@ @Resource private ThreeSaleSerivce threeSaleSerivce; - @Resource - private MsgAccountDetailService msgAccountDetailService; - @Resource private UserVipConfigService userVipConfigService; @@ -89,6 +95,24 @@ @Resource private UserOtherMsgNotificationService userOtherMsgNotificationService; + + @Resource + private UserAccountMsgNotificationService userAccountMsgNotificationService; + + @Resource + private UserInfoRegisterService userInfoRegisterService; + + @Resource + private UserInviteMsgNotificationService userInviteMsgNotificationService; + + @Resource + private UserLevelUpgradedNotifyService userLevelUpgradedNotifyService; + + @Resource(name = "taskExecutor") + private TaskExecutor executor; + + @Resource(name = "producer") + private Producer producer; @Override @@ -149,69 +173,179 @@ return null; } + + @Override @RequestSerializableByKeyService(key = "#uid") @Transactional(rollbackFor = Exception.class) + public void upgradeVipByFanLiOrder(Long uid) { + UserVIPPreInfo latest = getLatestProcessInfo(uid); + if (latest != null && latest.getProcess() == UserVIPPreInfo.PROCESS_2) { + return; + } + + if (latest == null) { + String inviteCode = userInfoExtraService.getInviteCodeByUid(uid); + if (StringUtil.isNullOrEmpty(inviteCode)) { + return; //鏈縺娲婚個璇风爜 + } + } + + // 鑷喘璁㈠崟鍒拌处 + long doneZiGou = hongBaoV2CountService.counOrderByUidAndOrderType(uid, Constant.VIP_ORDER_PAY, HongBaoV2.TYPE_ZIGOU); + // 楂樼骇浼氬憳闄愬埗鏉′欢 + long limitZiGou7 = 0; + String zigou7 = userVipConfigService.getValueByKey("vip_pre_7_zigou_order_count"); + if (!StringUtil.isNullOrEmpty(zigou7)) { + limitZiGou7 = Long.parseLong(zigou7); + } + + // 楠岃瘉鏄惁婊¤冻鍗囩骇楂樼骇浼氬憳 + if (doneZiGou >= limitZiGou7) { + twoProcess(uid, limitZiGou7, null, Constant.TYPE_REBATE); + return; + } + + // 宸茬粡鎴愪负鏅�氫細鍛� + if (latest != null && latest.getProcess() == UserVIPPreInfo.PROCESS_1) { + return; + } + + // 鏅�氫細鍛樻潯浠� + long limitZiGou3 = 0; + String zigou3 = userVipConfigService.getValueByKey("vip_pre_3_zigou_order_count"); + if (!StringUtil.isNullOrEmpty(zigou3)) { + limitZiGou3 = Long.parseLong(zigou3); + } + if (doneZiGou >= limitZiGou3) { + oneProcess(uid, limitZiGou3, null, Constant.TYPE_REBATE); + } + } + + @Override - public void verifyVipPreInfo(Long uid, boolean inviteSuccess) { - if (uid == null || uid <= 0) + @RequestSerializableByKeyService(key = "#uid") + @Transactional(rollbackFor = Exception.class) + public void upgradeVipByShareOrder(Long uid) { + UserVIPPreInfo latest = getLatestProcessInfo(uid); + if (latest != null && latest.getProcess() == UserVIPPreInfo.PROCESS_2) { return; - - verifyCondition(uid); - - // 楠岃瘉涓婄骇 - if (inviteSuccess) { - UserInfo boss = threeSaleSerivce.getBoss(uid); - if (boss != null) { - verifyVipPreInfoBoss(boss.getId()); + } + + if (latest == null) { + String inviteCode = userInfoExtraService.getInviteCodeByUid(uid); + if (StringUtil.isNullOrEmpty(inviteCode)) { + return; //鏈縺娲婚個璇风爜 } + } + + // 鍒嗕韩璁㈠崟宸插埌璐� + long doneShare = hongBaoV2CountService.counOrderByUidAndOrderType(uid, Constant.VIP_ORDER_PAY, + HongBaoV2.TYPE_SHARE_GOODS); + // 楂樼骇浼氬憳闄愬埗鏉′欢 + long limitShare7 = 0; + String share7 = userVipConfigService.getValueByKey("vip_pre_7_share_order_count"); + if (!StringUtil.isNullOrEmpty(share7)) { + limitShare7 = Long.parseLong(share7); + } + + // 楠岃瘉鏄惁婊¤冻鍗囩骇楂樼骇浼氬憳 + if (doneShare >= limitShare7) { + twoProcess(uid, limitShare7, null, Constant.TYPE_SHAER); + return; + } + + // 宸茬粡鎴愪负鏅�氫細鍛� + if (latest != null && latest.getProcess() == UserVIPPreInfo.PROCESS_1) { + return; + } + + // 鏅�氫細鍛樻潯浠� + long limitShare3 = 0; + String share3 = userVipConfigService.getValueByKey("vip_pre_3_share_order_count"); + if (!StringUtil.isNullOrEmpty(share3)) { + limitShare3 = Long.parseLong(share3); + } + if (doneShare >= limitShare3) { + oneProcess(uid, limitShare3, null, Constant.TYPE_SHAER); + } + } + + + @Override + @RequestSerializableByKeyService(key = "#tid") + @Transactional(rollbackFor = Exception.class) + public void upgradeVipByTeamNum(Long tid) { + UserInfo boss = threeSaleSerivce.getBoss(tid); + if (boss == null) { + return; + } + Long bossId = boss.getId(); + + // 楠岃瘉涓婁笂绾� -闂存帴绮変笣鏄惁婊¤冻 + executor.execute(new Runnable() { + @Override + public void run() { + upgradeVipByTeamNum(bossId); + } + }); + + UserVIPPreInfo latest = getLatestProcessInfo(bossId); + if (latest != null && latest.getProcess() == UserVIPPreInfo.PROCESS_2) { + return; + } + + // 鏈夋晥绮変笣 + int doneFirst = 0; + int doneSecond = 0; + UserInviteValidNum userInviteValidNum = userInviteValidNumService.selectByPrimaryKey(bossId); + if (userInviteValidNum != null) { + doneFirst = userInviteValidNum.getNumFirst() == null ? 0 : userInviteValidNum.getNumFirst(); + doneSecond = userInviteValidNum.getNumSecond() == null ? 0 : userInviteValidNum.getNumSecond(); + } + + long limitFirst7 = 0; + String first7 = userVipConfigService.getValueByKey("vip_pre_7_first_level_team_count"); + if (!StringUtil.isNullOrEmpty(first7)) { + limitFirst7 = Long.parseLong(first7); + } + long limitSecond7 = 0; + String second7 = userVipConfigService.getValueByKey("vip_pre_7_second_level_team_count"); + if (!StringUtil.isNullOrEmpty(second7)) { + limitSecond7 = Long.parseLong(second7); + } + + // 楠岃瘉鏄惁婊¤冻鍗囩骇楂樼骇浼氬憳 + if (doneFirst >= limitFirst7 && doneSecond >= limitSecond7) { + twoProcess(bossId, limitFirst7, limitSecond7, null); + return; + } + + // 宸茬粡鎴愪负鏅�氫細鍛� + if (latest != null && latest.getProcess() == UserVIPPreInfo.PROCESS_1) { + return; + } + + // 鏅�氫細鍛� 鏉′欢 + long limitFirst3 = 0; + String first = userVipConfigService.getValueByKey("vip_pre_3_first_level_team_count"); + if (!StringUtil.isNullOrEmpty(first)) { + limitFirst3 = Long.parseLong(first); + } + + long limitSecond3 = 0; + String second = userVipConfigService.getValueByKey("vip_pre_3_second_level_team_count"); + if (!StringUtil.isNullOrEmpty(second)) { + limitSecond3 = Long.parseLong(second); + } + + if (doneFirst >= limitFirst3 && doneSecond >= limitSecond3) { + oneProcess(bossId, limitFirst3, limitSecond3, null); } } - - // 涓婄骇楠岃瘉 - private void verifyVipPreInfoBoss(Long uid) { - if (uid == null || uid <= 0) - return; - - verifyCondition(uid); - } - - private void verifyCondition(Long uid) { - try { - // 楠岃瘉浜岄樁娈� - UserVIPPreInfo oldInfo = userVIPPreInfoMapper.selectByUidAndProcess(uid, UserVIPPreInfo.PROCESS_2); - if (oldInfo != null) { - return; - } - - // 鑷喘璁㈠崟 - 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); - - // 鏈夋晥绮変笣 - 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(); - } - - // 涓�闃舵 - boolean process1 = oneProcess(uid, doneZiGou, doneShare, doneFirst, doneSecond); - if (!process1) { - return; - } - - // 浜岄樁娈� - twoProcess(uid, doneZiGou, doneShare, doneFirst, doneSecond); - } catch (Exception e) { - LogHelper.errorDetailInfo(e); - } - } - + + + + /** * 涓�闃舵 * @@ -222,129 +356,59 @@ * @param secondTeam */ @Transactional(rollbackFor = Exception.class) - private boolean oneProcess(Long uid, long countZiGou, long countShare, long firstTeam, long secondTeam) { - UserVIPPreInfo oldInfo = userVIPPreInfoMapper.selectByUidAndProcess(uid, UserVIPPreInfo.PROCESS_1); - if (oldInfo != null) { - return true; - } - - boolean process = false; - String msg = ""; - - long limitZiGou = 0; - String zigou = userVipConfigService.getValueByKey("vip_pre_3_zigou_order_count"); - if (!StringUtil.isNullOrEmpty(zigou)) { - limitZiGou = Long.parseLong(zigou); - } - - long limitShare = 0; - String share = userVipConfigService.getValueByKey("vip_pre_3_share_order_count"); - if (!StringUtil.isNullOrEmpty(share)) { - limitShare = Long.parseLong(share); - } - - long limitFirst = 0; - String first = userVipConfigService.getValueByKey("vip_pre_3_first_level_team_count"); - if (!StringUtil.isNullOrEmpty(first)) { - limitFirst = Long.parseLong(first); - } - - long limitSecond = 0; - String second = userVipConfigService.getValueByKey("vip_pre_3_second_level_team_count"); - if (!StringUtil.isNullOrEmpty(second)) { - limitSecond = Long.parseLong(second); - } - - if (countZiGou >= limitZiGou) { - process = true; - msg = "鎭枩浣狅紒杩斿埄璁㈠崟杈惧埌 " + limitZiGou + "绗�"; - } else if (countShare >= limitShare) { - process = true; - msg = "鎭枩浣狅紒鍒嗕韩璁㈠崟杈惧埌 " + limitShare + "绗�"; - } else if (firstTeam >= limitFirst && secondTeam >= limitSecond) { - process = true; - msg = "鐩存帴绮変笣杈惧埌" + limitFirst + "浜猴紝闂存帴绮変笣杈惧埌 " + limitSecond + "浜�"; - } - - if (process) { - try { - UserVIPPreInfo info = new UserVIPPreInfo(); - info.setUid(uid); - info.setProcess(UserVIPPreInfo.PROCESS_1); - info.setCreateTime(new Date()); - info.setUpdateTime(new Date()); - addUserVIPPreInfo(info); - - // 娑堟伅 - MsgAccountVipDTO msgDto = new MsgAccountVipDTO(); - msgDto.setStatus("绯荤粺宸插皢浣犵殑璐︽埛鐢卞揩鐪佽揪浜哄崌绾т负鏅�氫細鍛�"); - msgDto.setEquity("浠庢敹鍒版湰娑堟伅璧凤紝浣犲皢鑾峰緱鍏ㄩ儴鏅�氫細鍛樻潈鐩�"); - msgAccountDetailService.addMsgVIP(uid, msg, "濡傛湁鐤戦棶璇疯仈绯绘垜鐨�-浜哄伐瀹㈡湇", msgDto); - - - // 璧犻�侀噾甯� - String goldcoin = userVipConfigService.getValueByKey("vip_pre_3_gift_goldcoin"); - if (!StringUtil.isNullOrEmpty(goldcoin)) { - - int goldcoinNum = Integer.parseInt(goldcoin); - // 娣诲姞閲戝竵鏄庣粏 - IntegralDetail detail = new IntegralDetail(); - detail.setTitle("鍗囩骇VIP绂忓埄"); - detail.setUid(uid); - detail.setMoney(Integer.parseInt(goldcoin)); - detail.setCreateTime(new Date()); - detail.setUniqueKey("VIP-3-" + uid); - integralDetailService.insertSelective(detail); - - // 娣诲姞閲戝竵 - userInfoExtraService.addGoldCoinByUid(uid, Integer.parseInt(goldcoin)); - - // 娑堟伅 - 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("鑾峰緱閲戝竵" + goldcoinNum+"鏋�", ClientTextStyleVO.COLOR_CONTENT))); - listMsg.add(CommonMsgItemVOFactory.createMsgItemVO(new ClientTextStyleVO("澶� 娉�", ClientTextStyleVO.COLOR_TITLE), - new ClientTextStyleVO("璇︽儏鏌ョ湅锛屽搴斾細鍛樻潈鐩�", ClientTextStyleVO.COLOR_CONTENT))); - userOtherMsgNotificationService.createMsgOtherDetail(uid, listMsg, MsgTypeOtherTypeEnum.vipUpgradeReward); - } - - // 鏄惁瀛樺湪涓嬬骇鑴辩鏈熼檺 -鏇存柊涓嶈劚绂� - userInviteSeparateService.updateInvalidByBossId(uid); - - // 涓婄骇鑴辩鍏崇郴 - remindBoss(uid); - - } catch (UserVIPPreInfoException e) { - e.printStackTrace(); + private void oneProcess(Long uid, long limit1, Long limit2, Integer type) { + try { + String item = null; + if (type == null) { + item = "閭�璇风矇涓�"; + } else if (type == Constant.TYPE_REBATE) { + item = "杩斿埄璁㈠崟"; + } else { + item = "鍒嗕韩璁㈠崟"; } - } - return process; - } - - private void remindBoss(Long uid) { - // 鏄惁瀛樺湪涓婄骇 - ThreeSale threeSale = threeSaleSerivce.getMyBoss(uid); - if (threeSale == null) - return; - - // 楠岃瘉涓婄骇鏄惁姝e父 - Long bossId = threeSale.getBoss().getId(); - UserInfo userInfo = userInfoService.getUserById(bossId); - if (userInfo == null || userInfo.getState() != UserInfo.STATE_NORMAL) { - return; + Date upgradeTime = new Date(); + UserVIPPreInfo info = new UserVIPPreInfo(); + info.setUid(uid); + info.setProcess(UserVIPPreInfo.PROCESS_1); + info.setCreateTime(upgradeTime); + info.setUpdateTime(upgradeTime); + addUserVIPPreInfo(info); + + // 鍗囩骇娑堟伅 + Date registerTime = new Date(1577836800000L); + UserInfoRegister userInfoRegister = userInfoRegisterService.selectByPrimaryKey(uid); + if (userInfoRegister != null && userInfoRegister.getCreateTime() != null) { + registerTime = userInfoRegister.getCreateTime(); + } + int daysBetween = TimeUtil.getDayDifferenceCount(registerTime, new Date()); + userAccountMsgNotificationService.vipPreUpgrade(uid, "蹇渷杈句汉", "鏅�氫細鍛�", daysBetween, limit1, limit2, type); + + // 鍗囩骇寮规鎻愮ず + UserLevelUpgradedNotify notify = new UserLevelUpgradedNotify(); + notify.setUid(uid); + notify.setFromLevel(UserLevelEnum.daRen); + notify.setToLevel(UserLevelEnum.normalVIP); + notify.setValid(true); + notify.setCreateTime(new Date()); + userLevelUpgradedNotifyService.addUserLevelUpgradedNotify(notify); + + // 閲戝竵濂栧姳 + goldcoinReward(uid); + + // 鏄惁瀛樺湪涓嬬骇鑴辩鏈熼檺 -鏇存柊涓嶈劚绂� + userInviteSeparateService.updateInvalidByBossId(uid); + // 鎻愰啋涓婄骇 + remindBoss(uid, "鏅�氫細鍛�", item, upgradeTime, true); + + if (!Constant.IS_TEST) { + UserLevelChangedMQMsg msg = new UserLevelChangedMQMsg(uid, UserLevelEnum.daRen,UserLevelEnum.normalVIP, new Date()); + Message message = MQMsgBodyFactory.create(MQTopicName.TOPIC_USER, UserTopicTagEnum.userLevelChanged, msg); + producer.send(message); + } + } catch (Exception e) { + e.printStackTrace(); } - - // 楠岃瘉涓婄骇鏄惁宸叉槸浼氬憳 - UserVIPPreInfo oldInfo = userVIPPreInfoMapper.selectByUidAndProcess(bossId, UserVIPPreInfo.PROCESS_1); - if (oldInfo != null) { - return; - } - - // 娣诲姞鑴辩鍏崇郴鍊掕鏃� - userInviteSeparateService.addPreSeparateRecord(uid, bossId); } @@ -359,91 +423,152 @@ * @param secondTeam */ @Transactional(rollbackFor = Exception.class) - private boolean twoProcess(Long uid, long countZiGou, long countShare, long firstTeam, long secondTeam) { - boolean process = false; - String msg = ""; - - long limitZiGou = 10; -// String zigou = userVipConfigService.getValueByKey("vip_pre_7_zigou_order_count"); -// if (!StringUtil.isNullOrEmpty(zigou)) { -// limitZiGou = Long.parseLong(zigou); -// } - - long limitShare = 0; - String share = userVipConfigService.getValueByKey("vip_pre_7_share_order_count"); - if (!StringUtil.isNullOrEmpty(share)) { - limitShare = Long.parseLong(share); - } - - long limitFirst = 0; - String first = userVipConfigService.getValueByKey("vip_pre_7_first_level_team_count"); - if (!StringUtil.isNullOrEmpty(first)) { - limitFirst = Long.parseLong(first); - } - - long limitSecond = 0; - String second = userVipConfigService.getValueByKey("vip_pre_7_second_level_team_count"); - if (!StringUtil.isNullOrEmpty(second)) { - limitSecond = Long.parseLong(second); - } - - if (countZiGou >= limitZiGou) { - process = true; - msg = "鎭枩浣狅紒杩斿埄璁㈠崟杈惧埌 " + limitZiGou + "绗�"; - } else if (countShare >= limitShare) { - process = true; - msg = "鎭枩浣狅紒鍒嗕韩璁㈠崟杈惧埌 " + limitShare + "绗�"; - } else if (firstTeam >= limitFirst && secondTeam >= limitSecond) { - process = true; - msg = "鐩存帴绮変笣杈惧埌" + limitFirst + "浜猴紝闂存帴绮変笣杈惧埌 " + limitSecond + "浜�"; - } - - if (process) { - try { - UserVIPPreInfo info = new UserVIPPreInfo(); - info.setUid(uid); - info.setProcess(UserVIPPreInfo.PROCESS_2); - info.setCreateTime(new Date()); - info.setUpdateTime(new Date()); - addUserVIPPreInfo(info); - - // 娑堟伅 - MsgAccountVipDTO msgDto = new MsgAccountVipDTO(); - msgDto.setStatus("绯荤粺宸插皢浣犵殑璐︽埛鐢辨櫘閫氫細鍛樺崌绾т负楂樼骇浼氬憳"); - msgDto.setEquity("浠庢敹鍒版湰娑堟伅璧凤紝浣犲皢鑾峰緱鍏ㄩ儴楂樼骇浼氬憳鏉冪泭"); - msgAccountDetailService.addMsgVIP(uid, msg, "濡傛湁鐤戦棶璇疯仈绯绘垜鐨�-浜哄伐瀹㈡湇", msgDto); - - // 璧犻�佸鍔卞埜 - String rewardCoupon = userVipConfigService.getValueByKey("vip_pre_7_gift_reward_coupon"); - if (!StringUtil.isNullOrEmpty(rewardCoupon)) { - int num = Integer.parseInt(rewardCoupon); - BigDecimal percent = new BigDecimal(configService.get(ConfigKeyEnum.exchangeRebatePercent.getKey())); - for (int i = 0; i < num; i++) { - userSystemCouponService.insertUserCoupon(uid, CouponTypeEnum.rebatePercentCoupon.name(), - UserSystemCoupon.SOURCE_SYSTEM_PUSH, percent, 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) { - e.printStackTrace(); - LogHelper.error(e); + private void twoProcess(Long uid, long limit1, Long limit2, Integer type) { + try { + String item = null; + if (type == null) { + item = "閭�璇风矇涓�"; + } else if (type == Constant.TYPE_REBATE) { + item = "杩斿埄璁㈠崟"; + } else { + item = "鍒嗕韩璁㈠崟"; } - } - return process; - } + Date upgradeTime = new Date(); + UserVIPPreInfo info = new UserVIPPreInfo(); + info.setUid(uid); + info.setProcess(UserVIPPreInfo.PROCESS_2); + info.setCreateTime(upgradeTime); + info.setUpdateTime(upgradeTime); + addUserVIPPreInfo(info); + + // 鍗囩骇寮规鎻愮ず + UserLevelUpgradedNotify notify = new UserLevelUpgradedNotify(); + notify.setUid(uid); + notify.setFromLevel(UserLevelEnum.normalVIP); + notify.setToLevel(UserLevelEnum.highVIP); + notify.setValid(true); + notify.setCreateTime(new Date()); + userLevelUpgradedNotifyService.addUserLevelUpgradedNotify(notify); + + // 鍗囩骇绂忓埄-璧犻�佸鍔卞埜 + String rewardCoupon = userVipConfigService.getValueByKey("vip_pre_7_gift_reward_coupon"); + if (!StringUtil.isNullOrEmpty(rewardCoupon)) { + int num = Integer.parseInt(rewardCoupon); + BigDecimal percent = new BigDecimal(configService.get(ConfigKeyEnum.exchangeRebatePercent.getKey())); + userSystemCouponService.rewardCouponWin(uid, UserSystemCoupon.SOURCE_SYSTEM_PUSH, num, true, percent); + } + + // 鍗囩骇娑堟伅 + UserLevelEnum fromLevel = UserLevelEnum.normalVIP; + int daysBetween = 0; + boolean divorced = false; + String beforeName = "蹇渷杈句汉"; + UserVIPPreInfo pre1 = userVIPPreInfoMapper.selectByUidAndProcess(uid, UserVIPPreInfo.PROCESS_1); + if (pre1 != null) { + beforeName = "鏅�氫細鍛�"; + daysBetween = DateUtil.daysBetween(pre1.getCreateTime(), upgradeTime); + } else { + Date registerTime = new Date(1577836800000L); + UserInfoRegister userInfoRegister = userInfoRegisterService.selectByPrimaryKey(uid); + if (userInfoRegister != null && userInfoRegister.getCreateTime() != null) { + registerTime = userInfoRegister.getCreateTime(); + } + daysBetween = TimeUtil.getDayDifferenceCount(registerTime, upgradeTime); + + // 閲戝竵濂栧姳 锛堢洿鎺ュ崌绾ч珮绾т細鍛樿ˉ榻愪竴绾у鍔憋級 + goldcoinReward(uid); + // 闇�瑕佸彂閫佽劚绂讳俊鎭� + divorced = true; + fromLevel = UserLevelEnum.daRen; + } + userAccountMsgNotificationService.vipPreUpgrade(uid, beforeName, "楂樼骇浼氬憳", daysBetween, limit1, limit2, type); + + // 鎻愰啋涓婄骇 + remindBoss(uid, "楂樼骇浼氬憳", item, upgradeTime, divorced); + + + if (!Constant.IS_TEST) { + UserLevelChangedMQMsg msg = new UserLevelChangedMQMsg(uid, fromLevel,UserLevelEnum.highVIP, new Date()); + Message message = MQMsgBodyFactory.create(MQTopicName.TOPIC_USER, UserTopicTagEnum.userLevelChanged, msg); + producer.send(message); + } + } catch (Exception e) { + e.printStackTrace(); + LogHelper.error(e); + } + } + + /** + * 鍗囩骇濂栧姳閲戝竵 + * @param uid + */ + private void goldcoinReward(Long uid) { + String goldcoin = userVipConfigService.getValueByKey("vip_pre_3_gift_goldcoin"); + if (!StringUtil.isNullOrEmpty(goldcoin)) { + int goldcoinNum = Integer.parseInt(goldcoin); + // 娣诲姞閲戝竵鏄庣粏 + IntegralDetail detail = new IntegralDetail(); + detail.setTitle("鍗囩骇VIP绂忓埄"); + detail.setUid(uid); + detail.setMoney(Integer.parseInt(goldcoin)); + detail.setCreateTime(new Date()); + detail.setUniqueKey("VIP-3-" + uid); + integralDetailService.insertSelective(detail); + // 娣诲姞閲戝竵 + userInfoExtraService.addGoldCoinByUid(uid, Integer.parseInt(goldcoin)); + // 娑堟伅 + UserInfoExtra userInfoExtra = userInfoExtraService.getUserInfoExtra(uid); + userOtherMsgNotificationService.goldCoinSystemGiveMsg(uid, goldcoinNum, userInfoExtra.getGoldCoin()); + } + } + + + @Override + public void remindBoss(Long uid, String rankName, String item, Date time, boolean divorced) { + // 鏄惁瀛樺湪涓婄骇 + ThreeSale threeSale = threeSaleSerivce.getMyBoss(uid); + if (threeSale == null) + return; + Long bossId = threeSale.getBoss().getId(); + UserInfo userInfo = userInfoService.selectByPKey(uid); + + // 绮変笣鍗囩骇鎻愰啋 + userInviteMsgNotificationService.fansUpgrade(bossId, "鐩存帴绮変笣", rankName, userInfo.getNickName(), item, time); + + // 鏄惁瀛樺湪涓婁笂绾� + ThreeSale threeSaleSuper = threeSaleSerivce.getMyBoss(bossId); + if (threeSaleSuper != null) { // 绮変笣鍗囩骇鎻愰啋 + Long bossIdSuper = threeSaleSuper.getBoss().getId(); + userInviteMsgNotificationService.fansUpgrade(bossIdSuper, "闂存帴绮変笣", rankName, userInfo.getNickName(), item, time); + } + + // 鏄惁鍗囩骇鑴辩 + if (!divorced) { + return; + } + + UserVIPPreInfo latestInfo = getLatestProcessInfo(bossId); + if (latestInfo == null) { + // 娣诲姞鑴辩鍏崇郴鍊掕鏃� + userInviteSeparateService.addPreSeparateRecord(uid, bossId); + + // 鐩存帴绮変笣鑴辩-寮�濮嬭劚绂绘彁閱� + userInviteMsgNotificationService.fansPreDivorced(bossId, rankName, userInfo.getNickName(), time); + + //闂存帴绮変笣鑴辩-寮�濮嬭劚绂绘彁閱� + if (threeSaleSuper != null) { + UserInfo boss = userInfoService.selectByPKey(bossId); + Long bossIdSuper = threeSaleSuper.getBoss().getId(); + userInviteMsgNotificationService.fansPredivorcedIndirect(bossIdSuper, rankName, userInfo.getNickName(), + boss.getNickName(), time); + } + } + } + @Override public UserVIPPreInfo selectByUidAndProcess(Long uid, int process) { - UserVIPPreInfo info = userVIPPreInfoMapper.selectByUidAndProcess(uid, process); - return info; + return userVIPPreInfoMapper.selectByUidAndProcess(uid, process); } } -- Gitblit v1.8.0