yujian
2020-04-01 7e37f77192fa701e309fa04f821aa5fd5259ca33
fanli/src/main/java/com/yeshi/fanli/controller/client/v2/UserOrderControllerV2.java
@@ -20,6 +20,8 @@
import com.yeshi.fanli.entity.bus.user.UserInfo;
import com.yeshi.fanli.entity.bus.user.vip.UserLevelEnum;
import com.yeshi.fanli.entity.order.ESOrder;
import com.yeshi.fanli.entity.order.InviteOrderSubsidy;
import com.yeshi.fanli.entity.order.OrderTeamReward;
import com.yeshi.fanli.entity.system.ConfigKeyEnum;
import com.yeshi.fanli.exception.order.CommonOrderException;
import com.yeshi.fanli.log.LogHelper;
@@ -27,10 +29,14 @@
import com.yeshi.fanli.service.inter.count.HongBaoV2CountService;
import com.yeshi.fanli.service.inter.order.CommonOrderService;
import com.yeshi.fanli.service.inter.order.ESOrderService;
import com.yeshi.fanli.service.inter.order.InviteOrderSubsidyServiceV2;
import com.yeshi.fanli.service.inter.order.OrderTeamRewardService;
import com.yeshi.fanli.service.inter.user.UserCustomSettingsService;
import com.yeshi.fanli.service.inter.user.UserInfoExtraService;
import com.yeshi.fanli.service.inter.user.UserInfoService;
import com.yeshi.fanli.service.inter.user.vip.UserVIPInfoService;
import com.yeshi.fanli.util.Constant;
import com.yeshi.fanli.util.MoneyBigDecimalUtil;
import com.yeshi.fanli.util.RedisManager;
import com.yeshi.fanli.util.StringUtil;
import com.yeshi.fanli.util.VersionUtil;
@@ -73,8 +79,14 @@
   @Resource
   private ESOrderService esOrderService;
   @Resource
   private OrderTeamRewardService orderTeamRewardService;
   
   @Resource
   private UserVIPInfoService userVIPInfoService;
   
   @Resource
   private InviteOrderSubsidyServiceV2 inviteOrderSubsidyServiceV2;
   
   /**
    * 订单列表
@@ -403,16 +415,26 @@
      
      // 团队奖励 TODO
      if (VersionUtil.greaterThan_2_1(acceptData.getPlatform(), acceptData.getVersion())) {
         data.put("teamSubsidy", "999.66");
         data.put("teamReward", "777.66");
         data.put("tutorSubsidy", "888.66");
         BigDecimal teamSubsidy = inviteOrderSubsidyServiceV2.sumValidMoneyByUidAndDate(uid, dateType, null);
         if (teamSubsidy == null) {
            teamSubsidy = new BigDecimal(0);
         }
         BigDecimal teamReward = orderTeamRewardService.sumValidMoneyByUidAndDate(uid, dateType, null);
         if (teamReward == null) {
            teamReward = new BigDecimal(0);
         }
         data.put("teamSubsidy", teamSubsidy.setScale(2, BigDecimal.ROUND_DOWN).toString());
         data.put("teamReward", teamReward.setScale(2, BigDecimal.ROUND_DOWN).toString());
         data.put("tutorSubsidy", "0.00");
      }
      out.print(JsonUtil.loadTrueResult(data));
   }
   
   /**
    * 团队收益统计
    * 团队收益统计  统计已到账未到账 : 累计只统计已到账
    * @param acceptData
    * @param uid
    * @param type 1-团队补贴   2-团队奖励 3-导师津贴
@@ -434,38 +456,224 @@
         type = 1;
      }
      
      JSONObject data = new JSONObject();
      data.put("link", "https://www.baidu.com/");
      String total = "";
      if (type == 1) {
         total = "111.3";
         // 补贴
         sumTeamSubsidy(out, user);
      } else if (type == 2) {
         total = "222.3";
      } else if (type == 3) {
         total = "333.3";
      }
      if (StringUtil.isNullOrEmpty(total)) {
         data.put("exist", false);
         // 奖励
         sumTeamReward(out, user);
      } else {
         data.put("exist",  true);
         data.put("portrait", user.getPortrait());
         TeamBonusVO today = new TeamBonusVO("1.3", "2.3" ,"3.6");
         TeamBonusVO yesterday = new TeamBonusVO("1.3", "2.3" ,"3.6");
         TeamBonusVO thisMonth = new TeamBonusVO("1.3", "2.3" ,"3.6");
         TeamBonusVO lastMonth = new TeamBonusVO("1.3", "2.3" ,"3.6");
         data.put("total", total);
         data.put("direct", "655.36");
         data.put("indirect", "236.58");
         data.put("today", today);
         data.put("yesterday", yesterday);
         data.put("thisMonth", thisMonth);
         data.put("lastMonth", lastMonth);
         // 导师津贴
         JSONObject data = new JSONObject();
         data.put("exist", false);
         data.put("link", configService.get(ConfigKeyEnum.tutorSubsidyLink.getKey()));
         out.print(JsonUtil.loadTrueResult(data));
      }
      out.print(JsonUtil.loadTrueResult(data));
   }
   /**
    * 统计补贴
    * @param out
    * @param user
    */
   private void sumTeamSubsidy(PrintWriter out, UserInfo user) {
      Long uid = user.getId();
      // 是否VIP
      boolean vip = userVIPInfoService.isVIP(uid);
      JSONObject data = new JSONObject();
      data.put("link", configService.get(ConfigKeyEnum.orderTeamSubsidyLink.getKey()));
      if (!vip) {
         data.put("exist",  false);
         out.print(JsonUtil.loadTrueResult(data));
         return;
      }
      data.put("exist",  true);
      data.put("portrait", user.getPortrait());
      // 今日统计
      BigDecimal todayDirect = inviteOrderSubsidyServiceV2.sumValidMoneyByUidAndDate(uid, 1, InviteOrderSubsidy.LEVEL_ONE);
      if (todayDirect == null) {
         todayDirect = new BigDecimal(0);
      }
      BigDecimal todayIndirect = inviteOrderSubsidyServiceV2.sumValidMoneyByUidAndDate(uid, 1, InviteOrderSubsidy.LEVEL_TWO);
      if (todayIndirect == null) {
         todayIndirect = new BigDecimal(0);
      }
      TeamBonusVO today = new TeamBonusVO();
      today.setDirect(todayDirect.setScale(2, BigDecimal.ROUND_DOWN).toString());
      today.setIndirect(todayIndirect.setScale(2, BigDecimal.ROUND_DOWN).toString());
      today.setTotal(MoneyBigDecimalUtil.add(todayDirect, todayIndirect).setScale(2, BigDecimal.ROUND_DOWN).toString());
      // 昨日统计
      BigDecimal yesterdayDirect = inviteOrderSubsidyServiceV2.sumValidMoneyByUidAndDate(uid, 2, InviteOrderSubsidy.LEVEL_ONE);
      if (yesterdayDirect == null) {
         yesterdayDirect = new BigDecimal(0);
      }
      BigDecimal yesterdayIndirect = inviteOrderSubsidyServiceV2.sumValidMoneyByUidAndDate(uid, 2, InviteOrderSubsidy.LEVEL_TWO);
      if (yesterdayIndirect == null) {
         yesterdayIndirect = new BigDecimal(0);
      }
      TeamBonusVO yesterday = new TeamBonusVO();
      yesterday.setDirect(yesterdayDirect.setScale(2, BigDecimal.ROUND_DOWN).toString());
      yesterday.setIndirect(yesterdayIndirect.setScale(2, BigDecimal.ROUND_DOWN).toString());
      yesterday.setTotal(MoneyBigDecimalUtil.add(yesterdayDirect, yesterdayIndirect).setScale(2, BigDecimal.ROUND_DOWN).toString());
      // 本月统计
      BigDecimal thisMonthDirect = inviteOrderSubsidyServiceV2.sumValidMoneyByUidAndDate(uid, 3, InviteOrderSubsidy.LEVEL_ONE);
      if (thisMonthDirect == null) {
         thisMonthDirect = new BigDecimal(0);
      }
      BigDecimal thisMonthIndirect = inviteOrderSubsidyServiceV2.sumValidMoneyByUidAndDate(uid, 3, InviteOrderSubsidy.LEVEL_TWO);
      if (thisMonthIndirect == null) {
         thisMonthIndirect = new BigDecimal(0);
      }
      TeamBonusVO thisMonth = new TeamBonusVO();
      thisMonth.setDirect(thisMonthDirect.setScale(2, BigDecimal.ROUND_DOWN).toString());
      thisMonth.setIndirect(thisMonthIndirect.setScale(2, BigDecimal.ROUND_DOWN).toString());
      thisMonth.setTotal(MoneyBigDecimalUtil.add(thisMonthDirect, thisMonthIndirect).setScale(2, BigDecimal.ROUND_DOWN).toString());
      // 本月统计
      BigDecimal lastMonthDirect = inviteOrderSubsidyServiceV2.sumValidMoneyByUidAndDate(uid, 4, InviteOrderSubsidy.LEVEL_ONE);
      if (lastMonthDirect == null) {
         lastMonthDirect = new BigDecimal(0);
      }
      BigDecimal lastMonthIndirect = inviteOrderSubsidyServiceV2.sumValidMoneyByUidAndDate(uid, 4, InviteOrderSubsidy.LEVEL_TWO);
      if (lastMonthIndirect == null) {
         lastMonthIndirect = new BigDecimal(0);
      }
      TeamBonusVO lastMonth = new TeamBonusVO();
      lastMonth.setDirect(lastMonthDirect.setScale(2, BigDecimal.ROUND_DOWN).toString());
      lastMonth.setIndirect(lastMonthIndirect.setScale(2, BigDecimal.ROUND_DOWN).toString());
      lastMonth.setTotal(MoneyBigDecimalUtil.add(lastMonthDirect, lastMonthIndirect).setScale(2, BigDecimal.ROUND_DOWN).toString());
      BigDecimal direct = inviteOrderSubsidyServiceV2.sumRecievedMoneyByUid(uid, InviteOrderSubsidy.LEVEL_ONE);
      if (direct == null) {
         direct = new BigDecimal(0);
      }
      BigDecimal indirect = inviteOrderSubsidyServiceV2.sumRecievedMoneyByUid(uid, InviteOrderSubsidy.LEVEL_TWO);
      if (indirect == null) {
         indirect = new BigDecimal(0);
      }
      BigDecimal total = MoneyBigDecimalUtil.add(direct, indirect);
      data.put("today", today);
      data.put("yesterday", yesterday);
      data.put("thisMonth", thisMonth);
      data.put("lastMonth", lastMonth);
      data.put("total", total.setScale(2, BigDecimal.ROUND_DOWN).toString());
      data.put("direct", direct.setScale(2, BigDecimal.ROUND_DOWN).toString());
      data.put("indirect", indirect.setScale(2, BigDecimal.ROUND_DOWN).toString());
      out.print(JsonUtil.loadTrueResult(data));
   }
   /**
    * 统计团队奖励
    * @param out
    * @param user
    */
   private void sumTeamReward(PrintWriter out, UserInfo user) {
      Long uid = user.getId();
      // 是否VIP
      boolean vip = userVIPInfoService.isVIP(uid);
      JSONObject data = new JSONObject();
      data.put("link", configService.get(ConfigKeyEnum.orderTeamRewardLink.getKey()));
      if (!vip) {
         data.put("exist",  false);
         out.print(JsonUtil.loadTrueResult(data));
         return;
      }
      data.put("exist",  true);
      data.put("portrait", user.getPortrait());
      // 今日统计
      BigDecimal todayDirect = orderTeamRewardService.sumValidMoneyByUidAndDate(uid, 1, OrderTeamReward.LEVEL_ONE);
      if (todayDirect == null) {
         todayDirect = new BigDecimal(0);
      }
      BigDecimal todayIndirect = orderTeamRewardService.sumValidMoneyByUidAndDate(uid, 1, OrderTeamReward.LEVEL_TWO);
      if (todayIndirect == null) {
         todayIndirect = new BigDecimal(0);
      }
      TeamBonusVO today = new TeamBonusVO();
      today.setDirect(todayDirect.setScale(2, BigDecimal.ROUND_DOWN).toString());
      today.setIndirect(todayIndirect.setScale(2, BigDecimal.ROUND_DOWN).toString());
      today.setTotal(MoneyBigDecimalUtil.add(todayDirect, todayIndirect).setScale(2, BigDecimal.ROUND_DOWN).toString());
      // 昨日统计
      BigDecimal yesterdayDirect = orderTeamRewardService.sumValidMoneyByUidAndDate(uid, 2, OrderTeamReward.LEVEL_ONE);
      if (yesterdayDirect == null) {
         yesterdayDirect = new BigDecimal(0);
      }
      BigDecimal yesterdayIndirect = orderTeamRewardService.sumValidMoneyByUidAndDate(uid, 2, OrderTeamReward.LEVEL_TWO);
      if (yesterdayIndirect == null) {
         yesterdayIndirect = new BigDecimal(0);
      }
      TeamBonusVO yesterday = new TeamBonusVO();
      yesterday.setDirect(yesterdayDirect.setScale(2, BigDecimal.ROUND_DOWN).toString());
      yesterday.setIndirect(yesterdayIndirect.setScale(2, BigDecimal.ROUND_DOWN).toString());
      yesterday.setTotal(MoneyBigDecimalUtil.add(yesterdayDirect, yesterdayIndirect).setScale(2, BigDecimal.ROUND_DOWN).toString());
      // 本月统计
      BigDecimal thisMonthDirect = orderTeamRewardService.sumValidMoneyByUidAndDate(uid, 3, OrderTeamReward.LEVEL_ONE);
      if (thisMonthDirect == null) {
         thisMonthDirect = new BigDecimal(0);
      }
      BigDecimal thisMonthIndirect = orderTeamRewardService.sumValidMoneyByUidAndDate(uid, 3, OrderTeamReward.LEVEL_TWO);
      if (thisMonthIndirect == null) {
         thisMonthIndirect = new BigDecimal(0);
      }
      TeamBonusVO thisMonth = new TeamBonusVO();
      thisMonth.setDirect(thisMonthDirect.setScale(2, BigDecimal.ROUND_DOWN).toString());
      thisMonth.setIndirect(thisMonthIndirect.setScale(2, BigDecimal.ROUND_DOWN).toString());
      thisMonth.setTotal(MoneyBigDecimalUtil.add(thisMonthDirect, thisMonthIndirect).setScale(2, BigDecimal.ROUND_DOWN).toString());
      // 本月统计
      BigDecimal lastMonthDirect = orderTeamRewardService.sumValidMoneyByUidAndDate(uid, 4, OrderTeamReward.LEVEL_ONE);
      if (lastMonthDirect == null) {
         lastMonthDirect = new BigDecimal(0);
      }
      BigDecimal lastMonthIndirect = orderTeamRewardService.sumValidMoneyByUidAndDate(uid, 4, OrderTeamReward.LEVEL_TWO);
      if (lastMonthIndirect == null) {
         lastMonthIndirect = new BigDecimal(0);
      }
      TeamBonusVO lastMonth = new TeamBonusVO();
      lastMonth.setDirect(lastMonthDirect.setScale(2, BigDecimal.ROUND_DOWN).toString());
      lastMonth.setIndirect(lastMonthIndirect.setScale(2, BigDecimal.ROUND_DOWN).toString());
      lastMonth.setTotal(MoneyBigDecimalUtil.add(lastMonthDirect, lastMonthIndirect).setScale(2, BigDecimal.ROUND_DOWN).toString());
      BigDecimal direct = orderTeamRewardService.sumRecievedMoneyByUid(uid, OrderTeamReward.LEVEL_ONE);
      if (direct == null) {
         direct = new BigDecimal(0);
      }
      BigDecimal indirect = orderTeamRewardService.sumRecievedMoneyByUid(uid, OrderTeamReward.LEVEL_TWO);
      if (indirect == null) {
         indirect = new BigDecimal(0);
      }
      BigDecimal total = MoneyBigDecimalUtil.add(direct, indirect);
      data.put("today", today);
      data.put("yesterday", yesterday);
      data.put("thisMonth", thisMonth);
      data.put("lastMonth", lastMonth);
      data.put("total", total.setScale(2, BigDecimal.ROUND_DOWN).toString());
      data.put("direct", direct.setScale(2, BigDecimal.ROUND_DOWN).toString());
      data.put("indirect", indirect.setScale(2, BigDecimal.ROUND_DOWN).toString());
      out.print(JsonUtil.loadTrueResult(data));
   }
   
   /**
    * 返利说明