yujian
2020-05-14 e33f868ce527b080b470ec89bee0f33e25dea960
fanli/src/main/java/com/yeshi/fanli/controller/client/v2/UserMoneyControllerV2.java
@@ -27,12 +27,14 @@
import com.yeshi.fanli.entity.accept.AcceptData;
import com.yeshi.fanli.entity.bus.user.Extract;
import com.yeshi.fanli.entity.bus.user.UserInfo;
import com.yeshi.fanli.entity.money.TeamEincomeRecord;
import com.yeshi.fanli.entity.money.UserMoneyDetail.UserMoneyDetailTypeEnum;
import com.yeshi.fanli.entity.order.OrderMoneyDailyCount;
import com.yeshi.fanli.entity.order.OrderMoneyDailyCount.SourceTypeEnum;
import com.yeshi.fanli.entity.system.ConfigKeyEnum;
import com.yeshi.fanli.service.inter.config.ConfigService;
import com.yeshi.fanli.service.inter.count.HongBaoV2CountService;
import com.yeshi.fanli.service.inter.money.TeamEincomeRecordService;
import com.yeshi.fanli.service.inter.money.UserMoneyDetailService;
import com.yeshi.fanli.service.inter.money.extract.ExtractService;
import com.yeshi.fanli.service.inter.order.HongBaoV2Service;
@@ -40,6 +42,7 @@
import com.yeshi.fanli.service.inter.user.UserInfoExtraService;
import com.yeshi.fanli.service.inter.user.UserInfoService;
import com.yeshi.fanli.util.Constant;
import com.yeshi.fanli.util.MoneyBigDecimalUtil;
import com.yeshi.fanli.util.StringUtil;
import com.yeshi.fanli.util.TimeUtil;
import com.yeshi.fanli.util.account.UserUtil;
@@ -85,7 +88,9 @@
   @Resource
   private OrderMoneyDailyCountService orderMoneyDailyCountService;
   @Resource
   private TeamEincomeRecordService teamEincomeRecordService;
   private Gson getGson() {
      GsonBuilder builder = new GsonBuilder();
      builder.registerTypeAdapter(BigDecimal.class, new JsonSerializer<BigDecimal>() {
@@ -102,7 +107,7 @@
      });
      return builder.create();
   }
   /**
    * 用户资金统计
    * 
@@ -122,7 +127,7 @@
      vo.setLink(configService.get(ConfigKeyEnum.autoExtractHelpUrl.getKey()));
      vo.setBalanceMoney(user.getMyHongBao());
      vo.setExtractDesc("提现金额就是已成功转账到提现支付宝的资金。");
      vo.setMoneyArrivalDesc("资金已到账后提现时间不受限制、金额受限制。");
      vo.setMoneyArrivalDesc("资金已到账后提现时间不受限制、金额不受限制。");
      // 获取提现中的信息
      BigDecimal extractingMoney = extractService.sumVerifyingMoney(uid);
@@ -233,9 +238,25 @@
      Gson gson = getGson();
      out.print(JsonUtil.loadTrueResult(gson.toJson(vo)));
   }
   @RequestMapping(value = "getUserMoneyInfo")
   public void getUserMoneyInfo(AcceptData acceptData, Long uid, PrintWriter out) {
      if (uid == null || uid == 0) {
         out.print(JsonUtil.loadFalseResult(1, "用户未登录"));
         return;
      }
      UserInfo user = userInfoService.getUserById(uid);
      MoneyStatisticVO vo = new MoneyStatisticVO();
      vo.setLink(configService.get(ConfigKeyEnum.autoExtractHelpUrl.getKey()));
      vo.setBalanceMoney(user.getMyHongBao());
      // 获取提现中的信息
      BigDecimal extractingMoney = extractService.sumVerifyingMoney(uid);
      if (extractingMoney.compareTo(new BigDecimal(0)) > 0)
         vo.setExtractingMoneyInfo("提现中:¥" + extractingMoney.setScale(2, RoundingMode.HALF_UP));
      Gson gson = getGson();
      out.print(JsonUtil.loadTrueResult(gson.toJson(vo)));
   }
   private MoneyPredictVO cratePredictVO(List<OrderMoneyDailyCount> list) {
      MoneyPredictVO predictVO = new MoneyPredictVO();
@@ -243,7 +264,7 @@
      predictVO.setTeamNum(0);
      predictVO.setMineMoney(BigDecimal.valueOf(0));
      predictVO.setTeamMoney(BigDecimal.valueOf(0));
      BigDecimal hundred = BigDecimal.valueOf(100);
      if (list != null && list.size() > 0) {
         for (OrderMoneyDailyCount dailyCount : list) {
            if (dailyCount.getOrderNum() != null)
@@ -251,9 +272,11 @@
            if (dailyCount.getOrderNumTeam() != null)
               predictVO.setTeamNum(predictVO.getTeamNum() + dailyCount.getOrderNumTeam());
            if (dailyCount.getIncome() != null)
               predictVO.setMineMoney(predictVO.getMineMoney().add(BigDecimal.valueOf(dailyCount.getIncome()/100)));
               predictVO.setMineMoney(predictVO.getMineMoney()
                     .add(MoneyBigDecimalUtil.div(BigDecimal.valueOf(dailyCount.getIncome()), hundred)));
            if (dailyCount.getIncomeTeam() != null)
               predictVO.setTeamMoney(predictVO.getTeamMoney().add(BigDecimal.valueOf(dailyCount.getIncomeTeam()/100)));
               predictVO.setTeamMoney(predictVO.getTeamMoney()
                     .add(MoneyBigDecimalUtil.div(BigDecimal.valueOf(dailyCount.getIncomeTeam()), hundred)));
         }
      }
      predictVO.setTotalNum(predictVO.getTeamNum() + predictVO.getMineNum());
@@ -302,8 +325,6 @@
      out.print(JsonUtil.loadTrueResult(json));
   }
   /**
    * 历史详情
    * 
@@ -372,6 +393,7 @@
            listDailyCount = orderMoneyDailyCountService.sumGroupByYearMonth(uid, minDay, maxDay);
         }
         BigDecimal hundred = BigDecimal.valueOf(100);
         for (MoneyPredictVO predictVO : list) {
            String countDate = predictVO.getCountDate();
@@ -380,19 +402,23 @@
                  Date countDay = dailyCount.getCountDay();
                  if (datetype == 1 && countDay != null && countDate.equals(formatDay.format(countDay))) {
                     predictVO.setMineNum(dailyCount.getOrderNum());
                     predictVO.setMineMoney(BigDecimal.valueOf(dailyCount.getIncome()/100));
                     predictVO.setMineMoney(
                           MoneyBigDecimalUtil.div(BigDecimal.valueOf(dailyCount.getIncome()), hundred));
                     predictVO.setTeamNum(dailyCount.getOrderNumTeam());
                     predictVO.setTeamMoney(BigDecimal.valueOf(dailyCount.getIncomeTeam()/100));
                     predictVO.setTeamMoney(
                           MoneyBigDecimalUtil.div(BigDecimal.valueOf(dailyCount.getIncomeTeam()), hundred));
                     break;
                  }
                  String yearMonth = dailyCount.getYearMonth();
                  if (datetype == 2 && !StringUtil.isNullOrEmpty(yearMonth)
                        && countDate.equals(formatMonth.format(TimeUtil.parseYYYYMMDD(DateUtil.getFirstDayOfMonth(yearMonth))))) {
                  if (datetype == 2 && !StringUtil.isNullOrEmpty(yearMonth) && countDate.equals(
                        formatMonth.format(TimeUtil.parseYYYYMMDD(DateUtil.getFirstDayOfMonth(yearMonth))))) {
                     predictVO.setMineNum(dailyCount.getOrderNum());
                     predictVO.setMineMoney(BigDecimal.valueOf(dailyCount.getIncome()/100));
                     predictVO.setMineMoney(
                           MoneyBigDecimalUtil.div(BigDecimal.valueOf(dailyCount.getIncome()), hundred));
                     predictVO.setTeamNum(dailyCount.getOrderNumTeam());
                     predictVO.setTeamMoney(BigDecimal.valueOf(dailyCount.getIncomeTeam()/100));
                     predictVO.setTeamMoney(
                           MoneyBigDecimalUtil.div(BigDecimal.valueOf(dailyCount.getIncomeTeam()), hundred));
                     break;
                  }
               }
@@ -450,13 +476,14 @@
      List<OrderMoneyDailyCount> listDailyCount = null;
      if (type == 1) {
         listDailyCount = orderMoneyDailyCountService.sumGroupBySourceType(uid, minDay, maxDay);
      } else if (type == 1) {
      } else if (type == 2) {
         listDailyCount = orderMoneyDailyCountService.sumTeamGroupBySourceType(uid, minDay, maxDay);
      }
      BigDecimal zero = new BigDecimal(0);
      List<IncomeDetailVO> list = new ArrayList<>();
      BigDecimal hundred = BigDecimal.valueOf(100);
      SourceTypeEnum[] arrayEnun = SourceTypeEnum.values();
      for (int m = 0; m < arrayEnun.length; m++) {
         SourceTypeEnum typeEnum = arrayEnun[m];
@@ -465,7 +492,8 @@
            for (OrderMoneyDailyCount dailyCount : listDailyCount) {
               if (dailyCount.getSourceType() == typeEnum) {
                  detail.setNum(detail.getNum() + dailyCount.getOrderNum());
                  detail.setMoney(detail.getMoney().add(BigDecimal.valueOf(dailyCount.getIncome()/100)));
                  detail.setMoney(detail.getMoney()
                        .add(MoneyBigDecimalUtil.div(BigDecimal.valueOf(dailyCount.getIncome()), hundred)));
               }
            }
         }
@@ -480,8 +508,6 @@
      out.print(JsonUtil.loadTrueResult(object));
   }
   /**
    * 团队分红
    * @param acceptData
@@ -503,7 +529,7 @@
      // 今日预估
      calendar.add(Calendar.DAY_OF_YEAR, -1);
      minDate = new Date(TimeUtil.convertDateToTemp(TimeUtil.getGernalTime(timeStamp)));
      MoneyPredictVO todayVO = cratePredictVO(orderMoneyDailyCountService.query(uid, minDate, null));
      TeamPredictVO todayVO = crateTeamPredictVO(orderMoneyDailyCountService.query(uid, minDate, null));
      // 本月预估
      maxDate = new Date(timeStamp);
@@ -511,23 +537,45 @@
      minDate = new Date(TimeUtil
            .convertToTimeTemp(calendar.get(Calendar.YEAR) + "-" + (calendar.get(Calendar.MONTH) + 1), "yyyy-M"));
      calendar.add(Calendar.MONTH, -1);
      MoneyPredictVO monthVO = cratePredictVO(orderMoneyDailyCountService.query(uid, minDate, maxDate));
      TeamPredictVO monthVO = crateTeamPredictVO(orderMoneyDailyCountService.query(uid, minDate, maxDate));
      // 统计已到账分红、补贴
      BigDecimal subsidy = teamEincomeRecordService.sumRecieveByType(uid, TeamEincomeRecord.TYPE_TEAM_SUBSIDY);
      BigDecimal reward = teamEincomeRecordService.sumRecieveByType(uid, TeamEincomeRecord.TYPE_TEAM_DIVIDENTS);
      Gson gson = getGson();
      JSONObject object = new JSONObject();
      object.put("total", "0.00"); //TODO
      object.put("reward", "0.00");
      object.put("subsidy", "0.00");
      object.put("total", subsidy.add(reward).setScale(2).toString());
      object.put("reward", reward.setScale(2).toString());
      object.put("subsidy", subsidy.setScale(2).toString());
      object.put("today", gson.toJson(todayVO));
      object.put("month", gson.toJson(monthVO));
      out.print(JsonUtil.loadTrueResult(object));
   }
   private TeamPredictVO crateTeamPredictVO(List<OrderMoneyDailyCount> list) {
      TeamPredictVO predictVO = new TeamPredictVO(BigDecimal.ZERO, 0, BigDecimal.ZERO, 0);
      if (list != null && list.size() > 0) {
         BigDecimal hundred = BigDecimal.valueOf(100);
         for (OrderMoneyDailyCount dailyCount : list) {
            if (dailyCount.getTeamRewardNum() != null)
               predictVO.setRewardNum(predictVO.getRewardNum() + dailyCount.getTeamRewardNum());
            if (dailyCount.getTeamSubsidyNum() != null)
               predictVO.setSubsidyNum(predictVO.getSubsidyNum() + dailyCount.getTeamSubsidyNum());
            if (dailyCount.getTeamReward() != null)
               predictVO.setReward(predictVO.getReward()
                     .add(MoneyBigDecimalUtil.div(BigDecimal.valueOf(dailyCount.getTeamReward()), hundred)));
            if (dailyCount.getTeamSubsidy() != null)
               predictVO.setSubsidy(predictVO.getSubsidy()
                     .add(MoneyBigDecimalUtil.div(BigDecimal.valueOf(dailyCount.getTeamSubsidy()), hundred)));
         }
      }
      predictVO.setTotalNum(predictVO.getRewardNum() + predictVO.getSubsidyNum());
      predictVO.setTotalMoney(predictVO.getReward().add(predictVO.getSubsidy()));
      return predictVO;
   }
   /**
    * 历史详情
    * 
@@ -537,7 +585,8 @@
    * @param out
    */
   @RequestMapping(value = "getTeamDividendHistory")
   public void getTeamDividendHistory(AcceptData acceptData, Long uid, String date, Integer datetype, PrintWriter out) {
   public void getTeamDividendHistory(AcceptData acceptData, Long uid, String date, Integer datetype,
         PrintWriter out) {
      if (uid == null || uid == 0) {
         out.print(JsonUtil.loadFalseResult(1, "用户未登录"));
         return;
@@ -596,6 +645,7 @@
            listDailyCount = orderMoneyDailyCountService.sumTeamGroupByYearMonth(uid, minDay, maxDay);
         }
         BigDecimal hundred = BigDecimal.valueOf(100);
         for (TeamPredictVO predictVO : list) {
            String countDate = predictVO.getCountDate();
@@ -604,19 +654,23 @@
                  Date countDay = dailyCount.getCountDay();
                  if (datetype == 1 && countDay != null && countDate.equals(formatDay.format(countDay))) {
                     predictVO.setRewardNum(dailyCount.getTeamRewardNum());
                     predictVO.setReward(BigDecimal.valueOf(dailyCount.getTeamReward()/100));
                     predictVO.setReward(
                           MoneyBigDecimalUtil.div(BigDecimal.valueOf(dailyCount.getTeamReward()), hundred));
                     predictVO.setSubsidyNum(dailyCount.getTeamSubsidyNum());
                     predictVO.setSubsidy(BigDecimal.valueOf(dailyCount.getTeamSubsidy()/100));
                     predictVO.setSubsidy(
                           MoneyBigDecimalUtil.div(BigDecimal.valueOf(dailyCount.getTeamSubsidy()), hundred));
                     break;
                  }
                  String yearMonth = dailyCount.getYearMonth();
                  if (datetype == 2 && !StringUtil.isNullOrEmpty(yearMonth)
                        && countDate.equals(formatMonth.format(TimeUtil.parseYYYYMMDD(DateUtil.getFirstDayOfMonth(yearMonth))))) {
                  if (datetype == 2 && !StringUtil.isNullOrEmpty(yearMonth) && countDate.equals(
                        formatMonth.format(TimeUtil.parseYYYYMMDD(DateUtil.getFirstDayOfMonth(yearMonth))))) {
                     predictVO.setRewardNum(dailyCount.getTeamRewardNum());
                     predictVO.setReward(BigDecimal.valueOf(dailyCount.getTeamReward()/100));
                     predictVO.setReward(
                           MoneyBigDecimalUtil.div(BigDecimal.valueOf(dailyCount.getTeamReward()), hundred));
                     predictVO.setSubsidyNum(dailyCount.getTeamSubsidyNum());
                     predictVO.setSubsidy(BigDecimal.valueOf(dailyCount.getTeamSubsidy()/100));
                     predictVO.setSubsidy(
                           MoneyBigDecimalUtil.div(BigDecimal.valueOf(dailyCount.getTeamSubsidy()), hundred));
                     break;
                  }
               }
@@ -636,7 +690,5 @@
         e.printStackTrace();
      }
   }
}