From 8b3c82c0788e23acd889e6f67a91c855693352fd Mon Sep 17 00:00:00 2001 From: yujian <yujian@163.com> Date: 星期三, 13 五月 2020 16:38:29 +0800 Subject: [PATCH] 团队分红统计 --- fanli/src/main/java/com/yeshi/fanli/controller/client/v2/UserMoneyControllerV2.java | 311 ++++++++++++++++++++++++++++++++++++++------------- 1 files changed, 229 insertions(+), 82 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 a4a0377..1344121 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 @@ -18,6 +18,7 @@ import org.yeshi.utils.DateUtil; import org.yeshi.utils.JsonUtil; +import com.google.gson.Gson; import com.google.gson.GsonBuilder; import com.google.gson.JsonElement; import com.google.gson.JsonPrimitive; @@ -45,6 +46,7 @@ import com.yeshi.fanli.vo.money.IncomeDetailVO; import com.yeshi.fanli.vo.money.MoneyPredictVO; import com.yeshi.fanli.vo.money.MoneyStatisticVO; +import com.yeshi.fanli.vo.money.TeamPredictVO; import net.sf.json.JSONArray; import net.sf.json.JSONObject; @@ -83,6 +85,24 @@ @Resource private OrderMoneyDailyCountService orderMoneyDailyCountService; + + private Gson getGson() { + GsonBuilder builder = new GsonBuilder(); + builder.registerTypeAdapter(BigDecimal.class, new JsonSerializer<BigDecimal>() { + @Override + public JsonElement serialize(BigDecimal value, Type theType, JsonSerializationContext context) { + if (value == null) { + return new JsonPrimitive(""); + } else { + // 淇濈暀2浣嶅皬鏁� + value = value.setScale(2); + return new JsonPrimitive(value.toString()); + } + } + }); + return builder.create(); + } + /** * 鐢ㄦ埛璧勯噾缁熻 * @@ -210,21 +230,12 @@ calendar.add(Calendar.MONTH, -1); vo.setMonthPredict(cratePredictVO(orderMoneyDailyCountService.query(uid, minDate, maxDate))); - GsonBuilder builder = new GsonBuilder(); - builder.registerTypeAdapter(BigDecimal.class, new JsonSerializer<BigDecimal>() { - @Override - public JsonElement serialize(BigDecimal value, Type theType, JsonSerializationContext context) { - if (value == null) { - return new JsonPrimitive(""); - } else { - // 淇濈暀2浣嶅皬鏁� - value = value.setScale(2); - return new JsonPrimitive(value.toString()); - } - } - }); - out.print(JsonUtil.loadTrueResult(builder.create().toJson(vo))); + Gson gson = getGson(); + out.print(JsonUtil.loadTrueResult(gson.toJson(vo))); } + + + private MoneyPredictVO cratePredictVO(List<OrderMoneyDailyCount> list) { MoneyPredictVO predictVO = new MoneyPredictVO(); @@ -235,29 +246,64 @@ if (list != null && list.size() > 0) { for (OrderMoneyDailyCount dailyCount : list) { - if (dailyCount.getOrderNum() != null) { + if (dailyCount.getOrderNum() != null) predictVO.setMineNum(predictVO.getMineNum() + dailyCount.getOrderNum()); - } - - if (dailyCount.getOrderNumTeam() != null) { + if (dailyCount.getOrderNumTeam() != null) predictVO.setTeamNum(predictVO.getTeamNum() + dailyCount.getOrderNumTeam()); - } - - if (dailyCount.getIncome() != null) { - predictVO.setMineMoney(predictVO.getMineMoney().add(dailyCount.getIncome())); - } - - if (dailyCount.getIncomeTeam() != null) { - predictVO.setTeamMoney(predictVO.getTeamMoney().add(dailyCount.getIncomeTeam())); - } + if (dailyCount.getIncome() != null) + predictVO.setMineMoney(predictVO.getMineMoney().add(BigDecimal.valueOf(dailyCount.getIncome()/100))); + if (dailyCount.getIncomeTeam() != null) + predictVO.setTeamMoney(predictVO.getTeamMoney().add(BigDecimal.valueOf(dailyCount.getIncomeTeam()/100))); } } - predictVO.setTotalNum(predictVO.getTeamNum() + predictVO.getMineNum()); predictVO.setTotalMoney(predictVO.getMineMoney().add(predictVO.getTeamMoney())); return predictVO; } + /** + * 鎻愮幇鎴愬姛璁板綍 + * @param acceptData + * @param page + * @param uid + * @param out + */ + @RequestMapping(value = "getExtractRecord") + public void getExtractRecord(AcceptData acceptData, Integer page, Long uid, PrintWriter out) { + if (uid == null || uid == 0) { + out.print(JsonUtil.loadFalseResult(1, "鐢ㄦ埛鏈櫥褰�")); + return; + } + + List<Extract> list = extractService.getExtractSucceedRecord(page, Constant.PAGE_SIZE, uid); + if (list == null) { + list = new ArrayList<>(); + } + + JSONArray JSONArray = new JSONArray(); + for (Extract extract : list) { + Date receiveTime = extract.getReceiveTime(); + if (receiveTime == null) { + receiveTime = new Date(extract.getExtractTime()); + } + String account = "鏀粯瀹濓細" + UserUtil.filterAlipayAccount(extract.getAccount()); + account = account + "-濮撳悕锛�" + UserUtil.filterAlipayName(extract.getName()); + + JSONObject object = new JSONObject(); + object.put("title", "浣犱簬" + TimeUtil.formatDate(receiveTime) + "鎻愮幇鎴愬姛"); + object.put("account", account); + object.put("money", "楼" + extract.getMoney().setScale(2).toString()); + JSONArray.add(object); + } + + JSONObject json = new JSONObject(); + json.put("count", extractService.countExtractSucceedRecord(uid)); + json.put("list", JSONArray); + out.print(JsonUtil.loadTrueResult(json)); + } + + + /** * 鍘嗗彶璇︽儏 * @@ -334,9 +380,9 @@ Date countDay = dailyCount.getCountDay(); if (datetype == 1 && countDay != null && countDate.equals(formatDay.format(countDay))) { predictVO.setMineNum(dailyCount.getOrderNum()); - predictVO.setMineMoney(dailyCount.getIncome()); + predictVO.setMineMoney(BigDecimal.valueOf(dailyCount.getIncome()/100)); predictVO.setTeamNum(dailyCount.getOrderNumTeam()); - predictVO.setTeamMoney(dailyCount.getIncomeTeam()); + predictVO.setTeamMoney(BigDecimal.valueOf(dailyCount.getIncomeTeam()/100)); break; } @@ -344,9 +390,9 @@ if (datetype == 2 && !StringUtil.isNullOrEmpty(yearMonth) && countDate.equals(formatMonth.format(TimeUtil.parseYYYYMMDD(DateUtil.getFirstDayOfMonth(yearMonth))))) { predictVO.setMineNum(dailyCount.getOrderNum()); - predictVO.setMineMoney(dailyCount.getIncome()); + predictVO.setMineMoney(BigDecimal.valueOf(dailyCount.getIncome()/100)); predictVO.setTeamNum(dailyCount.getOrderNumTeam()); - predictVO.setTeamMoney(dailyCount.getIncomeTeam()); + predictVO.setTeamMoney(BigDecimal.valueOf(dailyCount.getIncomeTeam()/100)); break; } } @@ -356,23 +402,11 @@ predictVO.setTotalMoney(predictVO.getMineMoney().add(predictVO.getTeamMoney())); } - GsonBuilder builder = new GsonBuilder(); - builder.registerTypeAdapter(BigDecimal.class, new JsonSerializer<BigDecimal>() { - @Override - public JsonElement serialize(BigDecimal value, Type theType, JsonSerializationContext context) { - if (value == null) { - return new JsonPrimitive("0.00"); - } else { - // 淇濈暀2浣嶅皬鏁� - value = value.setScale(2); - return new JsonPrimitive(value.toString()); - } - } - }); + Gson gson = getGson(); JSONObject object = new JSONObject(); object.put("count", list.size()); - object.put("list", builder.create().toJson(list)); + object.put("list", gson.toJson(list)); out.print(JsonUtil.loadTrueResult(object)); } catch (ParseException e) { e.printStackTrace(); @@ -431,65 +465,178 @@ for (OrderMoneyDailyCount dailyCount : listDailyCount) { if (dailyCount.getSourceType() == typeEnum) { detail.setNum(detail.getNum() + dailyCount.getOrderNum()); - detail.setMoney(detail.getMoney().add(dailyCount.getIncome())); + detail.setMoney(detail.getMoney().add(BigDecimal.valueOf(dailyCount.getIncome()/100))); } } } list.add(detail); } - GsonBuilder builder = new GsonBuilder(); - builder.registerTypeAdapter(BigDecimal.class, new JsonSerializer<BigDecimal>() { - @Override - public JsonElement serialize(BigDecimal value, Type theType, JsonSerializationContext context) { - if (value == null) { - return new JsonPrimitive("0.00"); - } else { - // 淇濈暀2浣嶅皬鏁� - value = value.setScale(2); - return new JsonPrimitive(value.toString()); - } - } - }); + Gson gson = getGson(); JSONObject object = new JSONObject(); object.put("count", list.size()); - object.put("list", builder.create().toJson(list)); + object.put("list", gson.toJson(list)); out.print(JsonUtil.loadTrueResult(object)); } - @RequestMapping(value = "getExtractRecord") - public void getExtractRecord(AcceptData acceptData, Integer page, Long uid, PrintWriter out) { + + + /** + * 鍥㈤槦鍒嗙孩 + * @param acceptData + * @param uid + * @param out + */ + @RequestMapping(value = "getTeamDividendStatistic") + public void getTeamDividendStatistic(AcceptData acceptData, Long uid, PrintWriter out) { if (uid == null || uid == 0) { out.print(JsonUtil.loadFalseResult(1, "鐢ㄦ埛鏈櫥褰�")); return; } - List<Extract> list = extractService.getExtractSucceedRecord(page, Constant.PAGE_SIZE, uid); - if (list == null) { - list = new ArrayList<>(); + Date minDate = null; + Date maxDate = null; + long timeStamp = System.currentTimeMillis(); + Calendar calendar = Calendar.getInstance(); + calendar.setTimeInMillis(timeStamp); + // 浠婃棩棰勪及 + calendar.add(Calendar.DAY_OF_YEAR, -1); + minDate = new Date(TimeUtil.convertDateToTemp(TimeUtil.getGernalTime(timeStamp))); + MoneyPredictVO todayVO = cratePredictVO(orderMoneyDailyCountService.query(uid, minDate, null)); + + // 鏈湀棰勪及 + maxDate = new Date(timeStamp); + calendar = Calendar.getInstance(); + 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)); + + 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("today", gson.toJson(todayVO)); + object.put("month", gson.toJson(monthVO)); + out.print(JsonUtil.loadTrueResult(object)); + } + + + + + + + /** + * 鍘嗗彶璇︽儏 + * + * @param acceptData + * @param uid + * @param datetype 1-澶� - 2鏈� + * @param out + */ + @RequestMapping(value = "getTeamDividendHistory") + public void getTeamDividendHistory(AcceptData acceptData, Long uid, String date, Integer datetype, PrintWriter out) { + if (uid == null || uid == 0) { + out.print(JsonUtil.loadFalseResult(1, "鐢ㄦ埛鏈櫥褰�")); + return; } - JSONArray JSONArray = new JSONArray(); - for (Extract extract : list) { - Date receiveTime = extract.getReceiveTime(); - if (receiveTime == null) { - receiveTime = new Date(extract.getExtractTime()); + if (StringUtil.isNullOrEmpty(date) || datetype == null) { + out.print(JsonUtil.loadFalseResult(1, "鍙傛暟涓嶅畬鏁�")); + return; + } + + try { + Date minDay = new Date(); + Date maxDay = new Date(); + BigDecimal zero = new BigDecimal(0); + List<OrderMoneyDailyCount> listDailyCount = null; + List<TeamPredictVO> list = new ArrayList<>(); + SimpleDateFormat formatMonth = new SimpleDateFormat("yyyy骞碝M鏈�"); + SimpleDateFormat formatDay = new SimpleDateFormat("yyyy骞碝M鏈坉d鏃�"); + if (datetype == 1) { + // 鍚庨��7涓湀 + int countNum = 7; + Date day = TimeUtil.parseYYYYMMDD(date); + for (int i = 0; i < countNum; i++) { + TeamPredictVO predictVO = new TeamPredictVO(zero, 0, zero, 0); + if (i == 0) { + predictVO.setCountDate(formatDay.format(day)); + } else { + predictVO.setCountDate(formatDay.format(DateUtil.reduceDay(i, day))); + } + list.add(predictVO); + + if (i == countNum - 1) { + minDay = DateUtil.reduceDay(i, day); + } + } + maxDay = TimeUtil.parseYYYYMMDD_HHMMSS(date + " 23:59:59"); + listDailyCount = orderMoneyDailyCountService.sumTeamGroupByCountDay(uid, minDay, maxDay); + } else if (datetype == 2) { + // 鍚庨��3涓湀 + int countNum = 3; + Date day = TimeUtil.parseYYYYMMDD(DateUtil.getFirstDayOfMonth(date)); + for (int i = 0; i < countNum; i++) { + TeamPredictVO predictVO = new TeamPredictVO(zero, 0, zero, 0); + if (i == 0) { + predictVO.setCountDate(formatMonth.format(day)); + } else { + predictVO.setCountDate(formatMonth.format(DateUtil.reduceMonth(day, i))); + } + list.add(predictVO); + + if (i == countNum - 1) { + minDay = DateUtil.reduceMonth(day, i); + } + } + maxDay = TimeUtil.parseYYYYMMDD_HHMMSS(DateUtil.getLastDayOfMonth(date) + " 23:59:59"); + listDailyCount = orderMoneyDailyCountService.sumTeamGroupByYearMonth(uid, minDay, maxDay); } - String account = "鏀粯瀹濓細" + UserUtil.filterAlipayAccount(extract.getAccount()); - account = account + "-濮撳悕锛�" + UserUtil.filterAlipayName(extract.getName()); + + for (TeamPredictVO predictVO : list) { + String countDate = predictVO.getCountDate(); + + if (listDailyCount != null && listDailyCount.size() > 0) { + for (OrderMoneyDailyCount dailyCount : listDailyCount) { + 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.setSubsidyNum(dailyCount.getTeamSubsidyNum()); + predictVO.setSubsidy(BigDecimal.valueOf(dailyCount.getTeamSubsidy()/100)); + break; + } + + String yearMonth = dailyCount.getYearMonth(); + 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.setSubsidyNum(dailyCount.getTeamSubsidyNum()); + predictVO.setSubsidy(BigDecimal.valueOf(dailyCount.getTeamSubsidy()/100)); + break; + } + } + } + + predictVO.setTotalNum(predictVO.getRewardNum() + predictVO.getSubsidyNum()); + predictVO.setTotalMoney(predictVO.getReward().add(predictVO.getSubsidy())); + } + + Gson gson = getGson(); JSONObject object = new JSONObject(); - object.put("title", "浣犱簬" + TimeUtil.formatDate(receiveTime) + "鎻愮幇鎴愬姛"); - object.put("account", account); - object.put("money", "楼" + extract.getMoney().setScale(2).toString()); - JSONArray.add(object); + object.put("count", list.size()); + object.put("list", gson.toJson(list)); + out.print(JsonUtil.loadTrueResult(object)); + } catch (ParseException e) { + e.printStackTrace(); } - - JSONObject json = new JSONObject(); - json.put("count", extractService.countExtractSucceedRecord(uid)); - json.put("list", JSONArray); - out.print(JsonUtil.loadTrueResult(json)); } + + } -- Gitblit v1.8.0