admin
2020-04-13 dd5b15229cb15459fa7c31ccea77dac28cbfafbd
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;
@@ -14,7 +13,6 @@
import org.yeshi.utils.DateUtil;
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.entity.bus.user.UserInviteValidNum;
@@ -40,9 +38,6 @@
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;
@Service
public class UserVIPInfoServiceImpl implements UserVIPInfoService {
@@ -217,12 +212,13 @@
      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 {
@@ -230,35 +226,85 @@
         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);
            userSystemCouponService.freeCouponWin(uid, CouponTypeEnum.freeCouponGive,
                  UserSystemCoupon.SOURCE_SYSTEM_PUSH, num, true);
         }
      } catch (Exception e) {
         throw new UserVIPInfoException(1, "券赠送失败");
      }
      
      // 升级消息
      try {
         // 升级消息
         UserVIPPreInfo pre1 = userVIPPreInfoService.getVipByProcess(uid, UserVIPPreInfo.PROCESS_2);
         int days = DateUtil.daysBetween(pre1.getCreateTime(), new Date());
         userAccountMsgNotificationService.vipUpgradeSuccess(uid, days);
         // 升级提醒上级
         userVIPPreInfoService.remindBoss(uid, "超级会员", getPassItem(uid), upgradeTime, false);
      } catch (Exception e) {
         e.printStackTrace();
      }
   }
   /**
    * 验证是否符合VIP
    * @param uid
    * @return
    */
   private String getPassItem(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);
      // 有效粉丝
      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 limitZiGou = 0;
      String zigou = userVipConfigService.getValueByKey("vip_pre_10_zigou_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);
      }
      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);
      }
      String item = "";
      if (doneZiGou >= limitZiGou) {
         item = "返利订单";
      } else if (doneShare >= limitShare) {
         item = "分享订单";
      } else if (doneFirst >= limitFirst && doneSecond >= limitSecond) {
         item = "邀请粉丝";
      }
      return item;
   }
   /**
    * 验证是否符合VIP
    * @param uid