From dd5b15229cb15459fa7c31ccea77dac28cbfafbd Mon Sep 17 00:00:00 2001 From: admin <weikou2014> Date: 星期一, 13 四月 2020 10:04:20 +0800 Subject: [PATCH] Merge remote-tracking branch 'origin/div' into div --- fanli/src/main/java/com/yeshi/fanli/service/impl/user/vip/UserVIPPreInfoServiceImpl.java | 216 ++++++++++++++++++++++++++++++----------------------- 1 files changed, 121 insertions(+), 95 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..c5d8eb8 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; @@ -12,40 +11,39 @@ import org.springframework.context.annotation.Lazy; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import org.yeshi.utils.DateUtil; 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.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.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.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.annotation.RequestSerializableByKeyService; -import com.yeshi.fanli.vo.msg.ClientTextStyleVO; -import com.yeshi.fanli.vo.msg.CommonMsgItemVO; -import com.yeshi.fanli.vo.msg.CommonMsgItemVOFactory; @Service public class UserVIPPreInfoServiceImpl implements UserVIPPreInfoService { @@ -59,9 +57,6 @@ @Resource private ThreeSaleSerivce threeSaleSerivce; - @Resource - private MsgAccountDetailService msgAccountDetailService; - @Resource private UserVipConfigService userVipConfigService; @@ -90,6 +85,14 @@ @Resource private UserOtherMsgNotificationService userOtherMsgNotificationService; + @Resource + private UserAccountMsgNotificationService userAccountMsgNotificationService; + + @Resource + private UserInfoRegisterService userInfoRegisterService; + + @Resource + private UserInviteMsgNotificationService userInviteMsgNotificationService; @Override public void addUserVIPPreInfo(UserVIPPreInfo info) throws UserVIPPreInfoException { @@ -222,15 +225,12 @@ * @param secondTeam */ @Transactional(rollbackFor = Exception.class) - private boolean oneProcess(Long uid, long countZiGou, long countShare, long firstTeam, long secondTeam) { + private boolean oneProcess(Long uid, long countZiGou, long countShare, long firstTeam, long secondTeam) throws Exception{ 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)) { @@ -255,32 +255,46 @@ limitSecond = Long.parseLong(second); } + String item = ""; + Integer type = null; + long targetNum1 = 0L; + Long targetNum2 = 0L; + boolean process = false; if (countZiGou >= limitZiGou) { process = true; - msg = "鎭枩浣狅紒杩斿埄璁㈠崟杈惧埌 " + limitZiGou + "绗�"; + type = Constant.TYPE_REBATE; + targetNum1 = limitZiGou; + item = "杩斿埄璁㈠崟"; } else if (countShare >= limitShare) { process = true; - msg = "鎭枩浣狅紒鍒嗕韩璁㈠崟杈惧埌 " + limitShare + "绗�"; + type = Constant.TYPE_SHAER; + targetNum1 = limitShare; + item = "鍒嗕韩璁㈠崟"; } else if (firstTeam >= limitFirst && secondTeam >= limitSecond) { process = true; - msg = "鐩存帴绮変笣杈惧埌" + limitFirst + "浜猴紝闂存帴绮変笣杈惧埌 " + limitSecond + "浜�"; + targetNum1 = limitFirst; + targetNum2 = limitSecond; + item = "閭�璇风矇涓�"; } if (process) { try { + Date upgradeTime = new Date(); UserVIPPreInfo info = new UserVIPPreInfo(); info.setUid(uid); info.setProcess(UserVIPPreInfo.PROCESS_1); - info.setCreateTime(new Date()); - info.setUpdateTime(new Date()); + info.setCreateTime(upgradeTime); + info.setUpdateTime(upgradeTime); addUserVIPPreInfo(info); - // 娑堟伅 - MsgAccountVipDTO msgDto = new MsgAccountVipDTO(); - msgDto.setStatus("绯荤粺宸插皢浣犵殑璐︽埛鐢卞揩鐪佽揪浜哄崌绾т负鏅�氫細鍛�"); - msgDto.setEquity("浠庢敹鍒版湰娑堟伅璧凤紝浣犲皢鑾峰緱鍏ㄩ儴鏅�氫細鍛樻潈鐩�"); - msgAccountDetailService.addMsgVIP(uid, msg, "濡傛湁鐤戦棶璇疯仈绯绘垜鐨�-浜哄伐瀹㈡湇", msgDto); - + // 鍗囩骇娑堟伅 + Date registerTime = new Date(1577836800000L); + UserInfoRegister userInfoRegister = userInfoRegisterService.selectByPrimaryKey(uid); + if (userInfoRegister != null && userInfoRegister.getCreateTime() != null) { + registerTime = userInfoRegister.getCreateTime(); + } + int daysBetween = DateUtil.daysBetween(registerTime, new Date()); + userAccountMsgNotificationService.vipPreUpgrade(uid, "蹇渷杈句汉", "鏅�氫細鍛�", daysBetween, targetNum1, targetNum2, type); // 璧犻�侀噾甯� String goldcoin = userVipConfigService.getValueByKey("vip_pre_3_gift_goldcoin"); @@ -292,7 +306,7 @@ detail.setTitle("鍗囩骇VIP绂忓埄"); detail.setUid(uid); detail.setMoney(Integer.parseInt(goldcoin)); - detail.setCreateTime(new Date()); + detail.setCreateTime(upgradeTime); detail.setUniqueKey("VIP-3-" + uid); integralDetailService.insertSelective(detail); @@ -300,21 +314,14 @@ 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); + UserInfoExtra userInfoExtra = userInfoExtraService.getUserInfoExtra(uid); + userOtherMsgNotificationService.goldCoinSystemGiveMsg(uid, goldcoinNum, userInfoExtra.getGoldCoin()); } - // 鏄惁瀛樺湪涓嬬骇鑴辩鏈熼檺 -鏇存柊涓嶈劚绂� userInviteSeparateService.updateInvalidByBossId(uid); - // 涓婄骇鑴辩鍏崇郴 - remindBoss(uid); + // 鎻愰啋涓婄骇 + remindBoss(uid, "鏅�氫細鍛�", item, upgradeTime, true); } catch (UserVIPPreInfoException e) { e.printStackTrace(); @@ -322,31 +329,6 @@ } 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; - } - - // 楠岃瘉涓婄骇鏄惁宸叉槸浼氬憳 - UserVIPPreInfo oldInfo = userVIPPreInfoMapper.selectByUidAndProcess(bossId, UserVIPPreInfo.PROCESS_1); - if (oldInfo != null) { - return; - } - - // 娣诲姞鑴辩鍏崇郴鍊掕鏃� - userInviteSeparateService.addPreSeparateRecord(uid, bossId); - } - /** @@ -360,14 +342,11 @@ */ @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 limitZiGou = 0; + 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"); @@ -387,51 +366,54 @@ limitSecond = Long.parseLong(second); } + Integer type = null; + long targetNum1 = 0L; + Long targetNum2 = 0L; + String item = ""; + boolean process = false; if (countZiGou >= limitZiGou) { process = true; - msg = "鎭枩浣狅紒杩斿埄璁㈠崟杈惧埌 " + limitZiGou + "绗�"; + targetNum1 = limitZiGou; + type = Constant.TYPE_REBATE; + item = "杩斿埄璁㈠崟"; } else if (countShare >= limitShare) { process = true; - msg = "鎭枩浣狅紒鍒嗕韩璁㈠崟杈惧埌 " + limitShare + "绗�"; + targetNum1 = limitShare; + type = Constant.TYPE_SHAER; + item = "鍒嗕韩璁㈠崟"; } else if (firstTeam >= limitFirst && secondTeam >= limitSecond) { process = true; - msg = "鐩存帴绮変笣杈惧埌" + limitFirst + "浜猴紝闂存帴绮変笣杈惧埌 " + limitSecond + "浜�"; + targetNum1 = limitFirst; + targetNum2 = limitSecond; + item = "閭�璇风矇涓�"; } if (process) { try { + Date upgradeTime = new Date(); UserVIPPreInfo info = new UserVIPPreInfo(); info.setUid(uid); info.setProcess(UserVIPPreInfo.PROCESS_2); - info.setCreateTime(new Date()); - info.setUpdateTime(new Date()); + info.setCreateTime(upgradeTime); + info.setUpdateTime(upgradeTime); addUserVIPPreInfo(info); - - // 娑堟伅 - MsgAccountVipDTO msgDto = new MsgAccountVipDTO(); - msgDto.setStatus("绯荤粺宸插皢浣犵殑璐︽埛鐢辨櫘閫氫細鍛樺崌绾т负楂樼骇浼氬憳"); - msgDto.setEquity("浠庢敹鍒版湰娑堟伅璧凤紝浣犲皢鑾峰緱鍏ㄩ儴楂樼骇浼氬憳鏉冪泭"); - msgAccountDetailService.addMsgVIP(uid, msg, "濡傛湁鐤戦棶璇疯仈绯绘垜鐨�-浜哄伐瀹㈡湇", msgDto); + + // 鍗囩骇娑堟伅 + UserVIPPreInfo pre1 = userVIPPreInfoMapper.selectByUidAndProcess(uid, UserVIPPreInfo.PROCESS_1); + int daysBetween = DateUtil.daysBetween(pre1.getCreateTime(), upgradeTime); + userAccountMsgNotificationService.vipPreUpgrade(uid, "鏅�氫細鍛�", "楂樼骇浼氬憳", daysBetween, targetNum1, targetNum2, type); // 璧犻�佸鍔卞埜 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); + userSystemCouponService.rewardCouponWin(uid, UserSystemCoupon.SOURCE_SYSTEM_PUSH, num, true, percent); } + + // 鎻愰啋涓婄骇 + remindBoss(uid, "楂樼骇浼氬憳", item, upgradeTime, false); + } catch (Exception e) { e.printStackTrace(); LogHelper.error(e); @@ -439,8 +421,52 @@ } return process; } + @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 oldInfo = userVIPPreInfoMapper.selectByUidAndProcess(bossId, UserVIPPreInfo.PROCESS_1); + if (oldInfo == null) { + // 娣诲姞鑴辩鍏崇郴鍊掕鏃� + userInviteSeparateService.addPreSeparateRecord(uid, bossId); + + // 鐩存帴绮変笣鑴辩-寮�濮嬭劚绂绘彁閱� + userInviteMsgNotificationService.fansPreDivorced(bossId, rankName, userInfo.getNickName(), item, time); + + //闂存帴绮変笣鑴辩-寮�濮嬭劚绂绘彁閱� + if (threeSaleSuper != null) { + UserInfo boss = userInfoService.selectByPKey(bossId); + Long bossIdSuper = threeSaleSuper.getBoss().getId(); + userInviteMsgNotificationService.fansPredivorcedIndirect(bossIdSuper, rankName, userInfo.getNickName(), + boss.getNickName(), item, time); + } + } + } + + @Override public UserVIPPreInfo selectByUidAndProcess(Long uid, int process) { UserVIPPreInfo info = userVIPPreInfoMapper.selectByUidAndProcess(uid, process); return info; -- Gitblit v1.8.0