yujian
2020-03-28 393e3a365b5ebbed6e9eef07fbd18881cde73711
fanli/src/main/java/com/yeshi/fanli/controller/client/v2/UserAccountControllerV2.java
@@ -23,10 +23,14 @@
import com.google.gson.JsonPrimitive;
import com.google.gson.JsonSerializationContext;
import com.google.gson.JsonSerializer;
import com.yeshi.fanli.dto.user.UserInviteLevelEnum;
import com.yeshi.fanli.entity.accept.AcceptData;
import com.yeshi.fanli.entity.bus.user.HongBaoV2;
import com.yeshi.fanli.entity.bus.user.SMSHistory;
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.UserInviteValidNum;
import com.yeshi.fanli.entity.bus.user.vip.UserVIPInfo;
import com.yeshi.fanli.entity.money.UserMoneyDetail.UserMoneyDetailTypeEnum;
import com.yeshi.fanli.entity.push.DeviceActive;
@@ -67,6 +71,8 @@
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.UserInviteService;
import com.yeshi.fanli.service.inter.user.invite.UserInviteValidNumService;
import com.yeshi.fanli.service.inter.user.vip.UserVIPInfoService;
import com.yeshi.fanli.service.inter.user.vip.UserVipConfigService;
import com.yeshi.fanli.util.Constant;
@@ -193,6 +199,13 @@
   @Resource
   private UserMoneyDetailService userMoneyDetailService;
   @Resource
   private UserInviteService userInviteService;
   @Resource
   private UserInviteValidNumService userInviteValidNumService;
   /**
    * 新版登录 V1.5.3
    * 
@@ -232,6 +245,7 @@
         } else {
            JSONObject data = new JSONObject();
            data.put("userInfo", UserUtil.filterForClientUser(userInfo));
            data.put("inviteCode", userInfoExtraService.getInviteCodeByUid(userInfo.getId()));
            out.print(JsonUtil.loadTrueResult(data));
            final UserInfo uuser = userInfo;
@@ -268,7 +282,7 @@
         } else {
            out.print(JsonUtil.loadFalseResult(e.getCode(), e.getMsg()));
            try {
               LogHelper.cookieLog("登录出错:" + e.getCode() + "-" + e.getMessage());
               LogHelper.error("登录出错:" + e.getCode() + "-" + e.getMessage());
            } catch (Exception e1) {
               e1.printStackTrace();
            }
@@ -441,16 +455,34 @@
      }
      vo.setFinishMoney(hongBaoV2CountService.getRewardMoneyBySelf(uid));
      List<Integer> list = new ArrayList<Integer>();
      list.add(BanLiShopOrder.STATE_SUCCESS);
      BigDecimal payMoney = new BigDecimal(userVipConfigService.getValueByKey("require_order_pay"));
      vo.setFinishGoldCoin(Long.parseLong(integralDetailService.getCumulativeMoney(uid).setScale(0).toString()));
      vo.setFinishTeam(hongBaoV2CountService.countValidOrderTeamUserByUid(uid, TimeUtil.convertDateToTemp(Constant.VIP_ONLINE_TIME), payMoney));
//      vo.setFinishTeam(hongBaoV2CountService.countValidOrderTeamUserByUid(uid,
//            , payMoney));
      int finishTeam = 0;
      long vipBegin = TimeUtil.convertDateToTemp(Constant.VIP_ONLINE_TIME);
      List<ThreeSale> listThreeSale = threeSaleSerivce.getValidWorkerIdsByTime(uid, vipBegin);
      if (listThreeSale != null && listThreeSale.size() > 0) {
         for (ThreeSale three: listThreeSale) {
            UserInfo worker = three.getWorker();
            if (worker == null || worker.getId() == null) {
               continue;
            }
            // 1、邀请关系成功后;2、单(分享 + 自购)实付款大于1元
            long countValid = hongBaoV2CountService.countValidOrderByUidAndTime(worker.getId(), three.getSucceedTime(), payMoney);
            if (countValid > 0) {
               finishTeam ++;
            }
         }
      }
      vo.setFinishTeam(finishTeam);
      vo.setFinishHongBao(banLiShopOrderService.countByUidAndState(uid, list));
      // 区分老用户和新用户
      String limtDate = userVipConfigService.getValueByKey("vip_execute_time");
      Date executeDate = null;
@@ -521,7 +553,27 @@
      BigDecimal payMoney = new BigDecimal(userVipConfigService.getValueByKey("require_order_pay"));
      BigDecimal finishGoldCoin = integralDetailService.getCumulativeMoney(uid);
      long finishTeam = hongBaoV2CountService.countValidOrderTeamUserByUid(uid, TimeUtil.convertDateToTemp(Constant.VIP_ONLINE_TIME), payMoney);
//      long finishTeam = hongBaoV2CountService.countValidOrderTeamUserByUid(uid,
//            TimeUtil.convertDateToTemp(Constant.VIP_ONLINE_TIME), payMoney);
//
      long finishTeam = 0L;
      long vipBegin = TimeUtil.convertDateToTemp(Constant.VIP_ONLINE_TIME);
      List<ThreeSale> listThreeSale = threeSaleSerivce.getValidWorkerIdsByTime(uid, vipBegin);
      if (listThreeSale != null && listThreeSale.size() > 0) {
         for (ThreeSale three: listThreeSale) {
            UserInfo worker = three.getWorker();
            if (worker == null || worker.getId() == null) {
               continue;
            }
            // 1、邀请关系成功后;2、单(分享 + 自购)实付款大于1元
            long countValid = hongBaoV2CountService.countValidOrderByUidAndTime(worker.getId(), three.getSucceedTime(), payMoney);
            if (countValid > 0) {
               finishTeam ++;
            }
         }
      }
      long finishHongBao = banLiShopOrderService.countByUidAndState(uid, list);
      BigDecimal finishMoney = hongBaoV2CountService.getRewardMoneyBySelf(uid);
@@ -536,7 +588,7 @@
      } catch (ParseException e) {
         e.printStackTrace();
      }
      UserInfoExtra extra = userInfoExtraService.getUserInfoExtra(uid);
      if (extra != null
            && (extra.getFirstLoginTime() == null || extra.getFirstLoginTime().getTime() < executeDate.getTime())) {
@@ -578,4 +630,195 @@
      }
   }
   /**
    * 获取vip信息
    *
    * @param acceptData
    * @param uid
    * @param out
    */
   @RequestMapping(value = "getVIPInfoV2")
   public void getVIPInfoV2(String callback, AcceptData acceptData, Long uid, PrintWriter out) {
      if (uid == null || uid <= 0) {
         JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult(1, "用户未登录"));
         return;
      }
      // 用户信息
      UserInfo userInfo = userInfoService.selectByPKey(uid);
      if (userInfo == null) {
         JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult(1, "该用户不存在"));
         return;
      }
      // 获取等级
      UserInviteLevelEnum level = userInviteService.getUserInviteLevelNew(uid);
      // 达人
      long limitZiGou = 0;
      long limitShare = 0;
      long limitFirst = 0;
      long limitSecond = 0;
      String school = "板栗学院";
      String platformSubsidy = "补贴返佣 ";
      String teamSubsidy = "会员专属";
      String teamReward = "超级会员专属";
      if (level == UserInviteLevelEnum.actived ||  level == UserInviteLevelEnum.noActive) {
         // TODO 比例
         school += "达人班";
         platformSubsidy += "<label style=\"color:#E5005C;\">52.5%</label>";
         String zigou = userVipConfigService.getValueByKey("vip_pre_3_zigou_order_count");
         if (!StringUtil.isNullOrEmpty(zigou)) {
            limitZiGou = Long.parseLong(zigou);
         }
         String share = userVipConfigService.getValueByKey("vip_pre_3_share_order_count");
         if (!StringUtil.isNullOrEmpty(share)) {
            limitShare = Long.parseLong(share);
         }
         String first = userVipConfigService.getValueByKey("vip_pre_3_first_level_team_count");
         if (!StringUtil.isNullOrEmpty(first)) {
            limitFirst = Long.parseLong(first);
         }
         String second = userVipConfigService.getValueByKey("vip_pre_3_second_level_team_count");
         if (!StringUtil.isNullOrEmpty(second)) {
            limitSecond = Long.parseLong(second);
         }
      } else if (level == UserInviteLevelEnum.vipPre1) {
         // TODO 比例
         school += "普通班";
         platformSubsidy += "<label style=\"color:#E5005C;\">60%</label>";
         teamSubsidy = "会员专属最高<label style=\"color:#E5005C;\">7.5%</label>";
         String zigou = userVipConfigService.getValueByKey("vip_pre_7_zigou_order_count");
         if (!StringUtil.isNullOrEmpty(zigou)) {
            limitZiGou = Long.parseLong(zigou);
         }
         String share = userVipConfigService.getValueByKey("vip_pre_7_share_order_count");
         if (!StringUtil.isNullOrEmpty(share)) {
            limitShare = Long.parseLong(share);
         }
         String first = userVipConfigService.getValueByKey("vip_pre_7_first_level_team_count");
         if (!StringUtil.isNullOrEmpty(first)) {
            limitFirst = Long.parseLong(first);
         }
         String second = userVipConfigService.getValueByKey("vip_pre_7_second_level_team_count");
         if (!StringUtil.isNullOrEmpty(second)) {
            limitSecond = Long.parseLong(second);
         }
      } else if (level == UserInviteLevelEnum.vipPre2 || level == UserInviteLevelEnum.vipApply) {
         school += "高级班";
         platformSubsidy += "<label style=\"color:#E5005C;\">70%</label>";
         teamSubsidy = "会员专属最高<label style=\"color:#E5005C;\">15%</label>";
         String zigou = userVipConfigService.getValueByKey("vip_pre_10_zigou_order_count");
         if (!StringUtil.isNullOrEmpty(zigou)) {
            limitZiGou = Long.parseLong(zigou);
         }
         String share = userVipConfigService.getValueByKey("vip_pre_10_share_order_count");
         if (!StringUtil.isNullOrEmpty(share)) {
            limitShare = Long.parseLong(share);
         }
         String first = userVipConfigService.getValueByKey("vip_pre_10_first_level_team_count");
         if (!StringUtil.isNullOrEmpty(first)) {
            limitFirst = Long.parseLong(first);
         }
         String second = userVipConfigService.getValueByKey("vip_pre_10_second_level_team_count");
         if (!StringUtil.isNullOrEmpty(second)) {
            limitSecond = Long.parseLong(second);
         }
      } else if (level == UserInviteLevelEnum.vip || level == UserInviteLevelEnum.tearcherApply) {
         // TODO 比例
         school += "超级班";
         platformSubsidy += "<label style=\"color:#E5005C;\">115%</label>";
         teamSubsidy = "会员专属最高<label style=\"color:#E5005C;\">22.5%</label>";
         teamReward = "超级会员专属最高<label style=\"color:#E5005C;\">40%</label>";
      } else if (level == UserInviteLevelEnum.tearcher) {
         // TODO
      }
      // 邀请订单
      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);
      Date now = new Date();
      Date start = new Date(0);
      // 有效粉丝
      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();
      }
      // 省钱: ---返利订单、奖励券提成
      List<UserMoneyDetailTypeEnum> typeFanli = new ArrayList<>();
      typeFanli.add(UserMoneyDetailTypeEnum.fanli);
      typeFanli.add(UserMoneyDetailTypeEnum.orderReward);
      BigDecimal saveMoney = userMoneyDetailService.statisticUserTypeMoneyWithDate(uid, typeFanli, start, now).abs();
      // 赚钱: 邀请订单、分享订单、补贴
      List<UserMoneyDetailTypeEnum> typeList = new ArrayList<>();
      typeList.add(UserMoneyDetailTypeEnum.share);
      typeList.add(UserMoneyDetailTypeEnum.invite);
      typeList.add(UserMoneyDetailTypeEnum.inviteAndShare);
      typeList.add(UserMoneyDetailTypeEnum.systemEqualize);
      typeList.add(UserMoneyDetailTypeEnum.subsidy);
      BigDecimal earnMoney = userMoneyDetailService.statisticUserTypeMoneyWithDate(uid, typeList, start, now).abs();
      if (level != UserInviteLevelEnum.vip) {
         BigDecimal rate = new BigDecimal("0.409");
         saveMoney = MoneyBigDecimalUtil.mul2(saveMoney, rate);
         earnMoney = MoneyBigDecimalUtil.mul2(earnMoney, rate);
      }
      JSONObject json = new JSONObject();
      json.put("level", level.name());
      json.put("nickName", userInfo.getNickName());
      json.put("portrait", userInfo.getPortrait());
      json.put("ruleLink", userVipConfigService.getValueByKey("help_link_vip_h5"));
      json.put("tearcherTip", "导师按钮:弹框内容");
      json.put("saveMoney", saveMoney);
      json.put("earnMoney", earnMoney);
      // 已完成
      json.put("doneZiGou", doneZiGou);
      json.put("doneShare", doneShare);
      json.put("doneFirst", doneFirst);
      json.put("doneSecond", doneSecond);
      // 标准
      json.put("limitZiGou", limitZiGou);
      json.put("limitShare", limitShare);
      json.put("limitFirst", limitFirst);
      json.put("limitSecond", limitSecond);
      // 文字内容
      json.put("platformSubsidy", platformSubsidy);
      json.put("school", school);
      json.put("teamSubsidy", teamSubsidy);
      json.put("teamReward", teamReward);
      // 人工客服链接
      json.put("csdLink", configService.get(ConfigKeyEnum.customerServiceLink.getKey()));
      if (!StringUtil.isNullOrEmpty(callback)) {
         out.print(JsonUtil.loadJSONP(callback, JsonUtil.loadTrueResult(json)));
      } else {
         out.print(JsonUtil.loadTrueResult(json));
      }
   }
}