From e33f868ce527b080b470ec89bee0f33e25dea960 Mon Sep 17 00:00:00 2001 From: yujian <yujian@163.com> Date: 星期四, 14 五月 2020 18:04:59 +0800 Subject: [PATCH] 粉丝信息统计 --- fanli/src/main/java/com/yeshi/fanli/controller/client/v2/UserMoneyControllerV2.java | 134 +++++++++++++++++++++++++++++++------------- 1 files changed, 93 insertions(+), 41 deletions(-) diff --git a/fanli/src/main/java/com/yeshi/fanli/controller/client/v2/UserMoneyControllerV2.java b/fanli/src/main/java/com/yeshi/fanli/controller/client/v2/UserMoneyControllerV2.java index 1344121..31039f3 100644 --- a/fanli/src/main/java/com/yeshi/fanli/controller/client/v2/UserMoneyControllerV2.java +++ b/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(); } } - - } -- Gitblit v1.8.0