From 393e3a365b5ebbed6e9eef07fbd18881cde73711 Mon Sep 17 00:00:00 2001 From: yujian <yujian@163.com> Date: 星期六, 28 三月 2020 16:51:04 +0800 Subject: [PATCH] Merge branch 'div' into div-1 --- fanli/src/main/java/com/yeshi/fanli/service/impl/user/vip/UserVIPPreInfoServiceImpl.java | 288 ++++++++++++++++++++++++++++++++++++++++----------------- 1 files changed, 203 insertions(+), 85 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 4ca3a02..3828a5f 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 @@ -11,15 +11,20 @@ import org.springframework.transaction.annotation.Transactional; import com.yeshi.fanli.dao.mybatis.user.vip.UserVIPPreInfoMapper; +import com.yeshi.fanli.dto.msg.MsgAccountVipDTO; import com.yeshi.fanli.entity.bus.user.HongBaoV2; -import com.yeshi.fanli.entity.bus.user.vip.UserVIPInfo; +import com.yeshi.fanli.entity.bus.user.UserInfo; import com.yeshi.fanli.entity.bus.user.vip.UserVIPPreInfo; import com.yeshi.fanli.exception.user.vip.UserVIPPreInfoException; +import com.yeshi.fanli.log.LogHelper; import com.yeshi.fanli.service.inter.count.HongBaoV2CountService; import com.yeshi.fanli.service.inter.user.invite.ThreeSaleSerivce; -import com.yeshi.fanli.service.inter.user.vip.UserVIPInfoService; +import com.yeshi.fanli.service.inter.user.msg.MsgAccountDetailService; 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; @Service @@ -27,15 +32,19 @@ @Resource private UserVIPPreInfoMapper userVIPPreInfoMapper; - + @Resource private HongBaoV2CountService hongBaoV2CountService; - + @Resource private ThreeSaleSerivce threeSaleSerivce; + + @Resource + private MsgAccountDetailService msgAccountDetailService; @Resource - private UserVIPInfoService userVIPInfoService; + private UserVipConfigService userVipConfigService; + @Override public void addUserVIPPreInfo(UserVIPPreInfo info) throws UserVIPPreInfoException { @@ -68,45 +77,87 @@ return infoList.get(0); } - + @Override + public UserVIPPreInfo getProcessInfo(Long uid, Date time) { + List<UserVIPPreInfo> infoList = userVIPPreInfoMapper.listByUid(uid); + if (infoList == null || infoList.size() == 0) + return null; + Comparator<UserVIPPreInfo> cm = new Comparator<UserVIPPreInfo>() { + + @Override + public int compare(UserVIPPreInfo o1, UserVIPPreInfo o2) { + return o2.getProcess() - o1.getProcess(); + } + }; + Collections.sort(infoList, cm); + + for (UserVIPPreInfo info : infoList) { + if (time.getTime() >= info.getCreateTime().getTime()) + return info; + } + return null; + } + @RequestSerializableByKeyService(key = "#uid") @Transactional(rollbackFor = Exception.class) @Override - public void verifyVipCondition(Long uid) { + public void verifyVipPreInfo(Long uid, boolean inviteSuccess) { if (uid == null || uid <= 0) return; - - // 楠岃瘉鏄惁VIP - boolean vip = userVIPInfoService.isVIP(uid); - if (vip) { - return; + + verifyCondition(uid); + + // 楠岃瘉涓婄骇 + if (inviteSuccess) { + UserInfo boss = threeSaleSerivce.getBoss(uid); + if (boss != null) { + verifyVipPreInfoBoss(boss.getId()); + } } - - // 閭�璇疯鍗� - long countZiGou = hongBaoV2CountService.counOrderByUidAndOrderType(uid, Constant.VIP_ORDER_PAY, HongBaoV2.TYPE_ZIGOU); - // 閭�璇疯鍗� - long countShare = hongBaoV2CountService.counOrderByUidAndOrderType(uid, Constant.VIP_ORDER_PAY, HongBaoV2.TYPE_SHARE_GOODS); - // 闃熷憳 - long firstTeam = threeSaleSerivce.countFirstTeam(uid, 1); - long secondTeam = threeSaleSerivce.countSecondTeam(uid, 1); - - // 涓�闃舵 - boolean process1 = oneProcess(uid, countZiGou, countShare, firstTeam, secondTeam); - if (!process1) { - return; - } - - // 涓�闃舵 - boolean process2 = twoProcess(uid, countZiGou, countShare, firstTeam, secondTeam); - if (!process2) { - return; - } - - vipProcess(uid, countZiGou, countShare, firstTeam, secondTeam); } - + + // 涓婄骇楠岃瘉 + 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 countZiGou = hongBaoV2CountService.counOrderByUidAndOrderType(uid, Constant.VIP_ORDER_PAY, + HongBaoV2.TYPE_ZIGOU); + // 閭�璇疯鍗� + long countShare = hongBaoV2CountService.counOrderByUidAndOrderType(uid, Constant.VIP_ORDER_PAY, + HongBaoV2.TYPE_SHARE_GOODS); + // 闃熷憳 + long firstTeam = threeSaleSerivce.countFirstTeam(uid, 1); + long secondTeam = threeSaleSerivce.countSecondTeam(uid, 1); + + // 涓�闃舵 + boolean process1 = oneProcess(uid, countZiGou, countShare, firstTeam, secondTeam); + if (!process1) { + return; + } + + // 浜岄樁娈� + twoProcess(uid, countZiGou, countShare, firstTeam, secondTeam); + } catch (Exception e) { + LogHelper.errorDetailInfo(e); + } + } + /** * 涓�闃舵 + * * @param uid * @param countZiGou * @param countShare @@ -114,27 +165,68 @@ * @param secondTeam */ 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); } - if (countZiGou >= Constant.VIP_PROCESS_1_ZIGOU || countShare >= Constant.VIP_PROCESS_1_SHARE - || (firstTeam >= Constant.VIP_PROCESS_1_TEAM && secondTeam >= Constant.VIP_PROCESS_1_TEAM_SECOND)) { - UserVIPPreInfo info = new UserVIPPreInfo(); - info.setUid(uid); - info.setProcess(UserVIPPreInfo.PROCESS_1); - info.setCreateTime(new Date()); - info.setUpdateTime(new Date()); - userVIPPreInfoMapper.insertSelective(info); - return true; + long limitShare = 0; + String share = userVipConfigService.getValueByKey("vip_pre_3_share_order_count"); + if (!StringUtil.isNullOrEmpty(share)) { + limitShare = Long.parseLong(share); } - return false; + + 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); + } catch (UserVIPPreInfoException e) { + e.printStackTrace(); + } + } + return process; } - - + /** - * 涓�闃舵 + * 浜岄樁娈� + * * @param uid * @param countZiGou * @param countShare @@ -142,43 +234,69 @@ * @param secondTeam */ private boolean twoProcess(Long uid, long countZiGou, long countShare, long firstTeam, long secondTeam) { - UserVIPPreInfo oldInfo = userVIPPreInfoMapper.selectByUidAndProcess(uid, UserVIPPreInfo.PROCESS_2); - if (oldInfo != null) { - return true; + boolean process = false; + String msg = ""; + + long limitZiGou = 0; + String zigou = userVipConfigService.getValueByKey("vip_pre_7_zigou_order_count"); + if (!StringUtil.isNullOrEmpty(zigou)) { + limitZiGou = Long.parseLong(zigou); } - if (countZiGou >= Constant.VIP_PROCESS_2_ZIGOU || countShare >= Constant.VIP_PROCESS_2_SHARE - || (firstTeam >= Constant.VIP_PROCESS_2_TEAM && secondTeam >= Constant.VIP_PROCESS_2_TEAM_SECOND)) { - UserVIPPreInfo info = new UserVIPPreInfo(); - info.setUid(uid); - info.setProcess(UserVIPPreInfo.PROCESS_2); - info.setCreateTime(new Date()); - info.setUpdateTime(new Date()); - userVIPPreInfoMapper.insertSelective(info); - return true; + long limitShare = 0; + String share = userVipConfigService.getValueByKey("vip_pre_7_share_order_count"); + if (!StringUtil.isNullOrEmpty(share)) { + limitShare = Long.parseLong(share); } - return false; - } - - - /** - * 涓�闃舵 - * @param uid - * @param countZiGou - * @param countShare - * @param firstTeam - * @param secondTeam - */ - private boolean vipProcess(Long uid, long countZiGou, long countShare, long firstTeam, long secondTeam) { - if (countZiGou >= Constant.VIP_PROCESS_3_ZIGOU || countShare >= Constant.VIP_PROCESS_3_SHARE - || (firstTeam >= Constant.VIP_PROCESS_3_TEAM && secondTeam >= Constant.VIP_PROCESS_3_TEAM_SECOND)) { - - - - return true; + + long limitFirst = 0; + String first = userVipConfigService.getValueByKey("vip_pre_7_first_level_team_count"); + if (!StringUtil.isNullOrEmpty(first)) { + limitFirst = Long.parseLong(first); } - return false; + + 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); + } catch (UserVIPPreInfoException e) { + e.printStackTrace(); + } + } + return process; } - - + + @Override + public UserVIPPreInfo selectByUidAndProcess(Long uid, int process) { + UserVIPPreInfo info = userVIPPreInfoMapper.selectByUidAndProcess(uid, process); + return info; + } + } -- Gitblit v1.8.0