From de8028ab8aed98011ae282ffefafe6d6bb3e2d78 Mon Sep 17 00:00:00 2001
From: yujian <yujian>
Date: 星期五, 26 四月 2019 14:10:38 +0800
Subject: [PATCH] 动态查询优化-后台
---
fanli/src/main/java/com/yeshi/fanli/controller/client/UserMoneyController.java | 167 +++++++++++++++++++++++++++++++++++++++++++++++++++----
1 files changed, 154 insertions(+), 13 deletions(-)
diff --git a/fanli/src/main/java/com/yeshi/fanli/controller/client/UserMoneyController.java b/fanli/src/main/java/com/yeshi/fanli/controller/client/UserMoneyController.java
index 6f42de3..985e0e7 100644
--- a/fanli/src/main/java/com/yeshi/fanli/controller/client/UserMoneyController.java
+++ b/fanli/src/main/java/com/yeshi/fanli/controller/client/UserMoneyController.java
@@ -4,6 +4,7 @@
import java.io.PrintWriter;
import java.lang.reflect.Type;
import java.math.BigDecimal;
+import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.List;
@@ -12,6 +13,7 @@
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
+import org.yeshi.utils.BigDecimalUtil;
import org.yeshi.utils.JsonUtil;
import com.google.gson.Gson;
@@ -24,8 +26,9 @@
import com.google.gson.stream.JsonReader;
import com.google.gson.stream.JsonWriter;
import com.yeshi.fanli.entity.accept.AcceptData;
-import com.yeshi.fanli.entity.money.UserMoneyDetail;
import com.yeshi.fanli.entity.money.UserMoneyDetail.UserMoneyDetailTypeEnum;
+import com.yeshi.fanli.service.inter.hongbao.HongBaoV2Service;
+import com.yeshi.fanli.service.inter.user.UserInfoService;
import com.yeshi.fanli.service.inter.user.UserMoneyDetailService;
import com.yeshi.fanli.util.MoneyBigDecimalUtil;
import com.yeshi.fanli.util.StringUtil;
@@ -47,6 +50,12 @@
@Resource
private UserMoneyDetailService userMoneyDetailService;
+
+ @Resource
+ private UserInfoService userInfoService;
+
+ @Resource
+ private HongBaoV2Service hongBaoV2Service;
/**
* 鏂扮増璧勯噾璇︽儏锛�1.4.9锛�
@@ -116,7 +125,8 @@
if (value == null) {
return new JsonPrimitive("");
} else {
- return new JsonPrimitive(MoneyBigDecimalUtil.getWithNoZera(value).toString());
+ value = value.setScale(2);
+ return new JsonPrimitive(value.toString());
}
}
});
@@ -129,24 +139,155 @@
out.print(JsonUtil.loadTrueResult(data));
}
+ /**
+ * 鐢ㄦ埛璧勯噾缁熻
+ *
+ * @param acceptData
+ * @param uid
+ * @param out
+ */
@RequestMapping(value = "getUserMoneyStatistic")
public void getUserMoneyStatistic(AcceptData acceptData, Long uid, PrintWriter out) {
if (uid == null || uid == 0) {
out.print(JsonUtil.loadFalseResult(1, "鐢ㄦ埛鏈櫥褰�"));
return;
}
+
+ BigDecimal balance = userInfoService.getUserById(uid).getMyHongBao();
+
UserMoneyStatisticVO vo = new UserMoneyStatisticVO();
- vo.setBalanceMoney(new BigDecimal("0.02"));
- vo.setLastMonthExtractMoney(new BigDecimal("0.03"));
- vo.setLastMonthRecievedMoney(new BigDecimal("0.04"));
- vo.setLatestThreeMonthRecievedMoney(new BigDecimal("0.05"));
- vo.setMonthExtractMoney(new BigDecimal("0.06"));
- vo.setMonthRecievedMoney(new BigDecimal("0.07"));
- vo.setTotalInviteMoney(new BigDecimal("0.08"));
- vo.setTotalRecievedMoney(new BigDecimal("0.09"));
- vo.setTotalShareMoney(new BigDecimal("0.10"));
- Gson gson = JsonUtil.getConvertBigDecimalToStringSubZeroBuilder(new GsonBuilder()).create();
- out.print(JsonUtil.loadTrueResult(gson.toJson(vo)));
+ vo.setBalanceMoney(balance);
+ Date minDate = null;
+ Date maxDate = null;
+ List<UserMoneyDetailTypeEnum> typeList = new ArrayList<>();
+
+ // 涓婃湀鎻愮幇
+ typeList.clear();
+
+ typeList.add(UserMoneyDetailTypeEnum.extract);
+ typeList.add(UserMoneyDetailTypeEnum.extractReject);
+ typeList.add(UserMoneyDetailTypeEnum.extractVerify);
+ long timeStamp = System.currentTimeMillis();
+ Calendar calendar = Calendar.getInstance();
+ calendar.setTimeInMillis(timeStamp);
+ maxDate = new Date(TimeUtil
+ .convertToTimeTemp(calendar.get(Calendar.YEAR) + "-" + (calendar.get(Calendar.MONTH) + 1), "yyyy-M"));
+ calendar.add(Calendar.MONTH, -1);
+ minDate = new Date(TimeUtil
+ .convertToTimeTemp(calendar.get(Calendar.YEAR) + "-" + (calendar.get(Calendar.MONTH) + 1), "yyyy-M"));
+
+ vo.setLastMonthExtractMoney(
+ userMoneyDetailService.statisticUserTypeMoneyWithDate(uid, typeList, minDate, maxDate).abs());
+ // 涓婃湀鏀跺叆
+ typeList.clear();
+ typeList.add(UserMoneyDetailTypeEnum.fanli);
+ typeList.add(UserMoneyDetailTypeEnum.fanliWeiQuan);
+ typeList.add(UserMoneyDetailTypeEnum.share);
+ typeList.add(UserMoneyDetailTypeEnum.shareWeiQuan);
+ typeList.add(UserMoneyDetailTypeEnum.invite);
+ typeList.add(UserMoneyDetailTypeEnum.inviteWeiQuan);
+ typeList.add(UserMoneyDetailTypeEnum.inviteAndShare);
+ typeList.add(UserMoneyDetailTypeEnum.weiQuan);
+ typeList.add(UserMoneyDetailTypeEnum.hongbao);
+ typeList.add(UserMoneyDetailTypeEnum.hongbaoDeduct);
+
+ vo.setLastMonthRecievedMoney(
+ userMoneyDetailService.statisticUserTypeMoneyWithDate(uid, typeList, minDate, maxDate).abs());
+ // 鏈�杩戜笁涓湀鏀跺叆
+ maxDate = new Date(timeStamp);
+ minDate = new Date(timeStamp - 1000 * 60 * 60 * 24 * 90L);
+
+ vo.setLatestThreeMonthRecievedMoney(
+ userMoneyDetailService.statisticUserTypeMoneyWithDate(uid, typeList, minDate, maxDate).abs());
+ // 鏈湀鎻愮幇
+ 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);
+ typeList.clear();
+ typeList.add(UserMoneyDetailTypeEnum.extract);
+ typeList.add(UserMoneyDetailTypeEnum.extractReject);
+ typeList.add(UserMoneyDetailTypeEnum.extractVerify);
+
+ vo.setMonthExtractMoney(
+ userMoneyDetailService.statisticUserTypeMoneyWithDate(uid, typeList, minDate, maxDate).abs());
+ // 鏈湀鍒拌处
+ typeList.clear();
+ typeList.add(UserMoneyDetailTypeEnum.fanli);
+ typeList.add(UserMoneyDetailTypeEnum.fanliWeiQuan);
+ typeList.add(UserMoneyDetailTypeEnum.share);
+ typeList.add(UserMoneyDetailTypeEnum.shareWeiQuan);
+ typeList.add(UserMoneyDetailTypeEnum.invite);
+ typeList.add(UserMoneyDetailTypeEnum.inviteWeiQuan);
+ typeList.add(UserMoneyDetailTypeEnum.inviteAndShare);
+ typeList.add(UserMoneyDetailTypeEnum.weiQuan);
+ typeList.add(UserMoneyDetailTypeEnum.hongbao);
+ typeList.add(UserMoneyDetailTypeEnum.hongbaoDeduct);
+
+ vo.setMonthRecievedMoney(
+ userMoneyDetailService.statisticUserTypeMoneyWithDate(uid, typeList, minDate, maxDate).abs());
+ // 鎬荤殑閭�璇疯禋
+ typeList.clear();
+ typeList.add(UserMoneyDetailTypeEnum.invite);
+ typeList.add(UserMoneyDetailTypeEnum.inviteWeiQuan);
+ typeList.add(UserMoneyDetailTypeEnum.inviteAndShare);
+
+ minDate = new Date(0L);
+ maxDate = new Date(timeStamp);
+ vo.setTotalInviteMoney(
+ userMoneyDetailService.statisticUserTypeMoneyWithDate(uid, typeList, minDate, maxDate).abs());
+ // 鎬荤殑鍒拌处
+
+ typeList.clear();
+ typeList.add(UserMoneyDetailTypeEnum.fanli);
+ typeList.add(UserMoneyDetailTypeEnum.fanliWeiQuan);
+ typeList.add(UserMoneyDetailTypeEnum.share);
+ typeList.add(UserMoneyDetailTypeEnum.shareWeiQuan);
+ typeList.add(UserMoneyDetailTypeEnum.invite);
+ typeList.add(UserMoneyDetailTypeEnum.inviteWeiQuan);
+ typeList.add(UserMoneyDetailTypeEnum.inviteAndShare);
+ typeList.add(UserMoneyDetailTypeEnum.weiQuan);
+ typeList.add(UserMoneyDetailTypeEnum.hongbao);
+ typeList.add(UserMoneyDetailTypeEnum.hongbaoDeduct);
+ vo.setTotalRecievedMoney(
+ userMoneyDetailService.statisticUserTypeMoneyWithDate(uid, typeList, minDate, maxDate).abs());
+ // 鎬荤殑鍒嗕韩璧�
+
+ typeList.clear();
+ typeList.add(UserMoneyDetailTypeEnum.share);
+ typeList.add(UserMoneyDetailTypeEnum.shareWeiQuan);
+
+ vo.setTotalShareMoney(
+ userMoneyDetailService.statisticUserTypeMoneyWithDate(uid, typeList, minDate, maxDate).abs());
+
+ minDate = new Date(TimeUtil.convertToTimeTemp(TimeUtil.getGernalTime(timeStamp, "yyyy-MM"), "yyyy-MM"));
+ Calendar ca = Calendar.getInstance();
+ ca.setTime(new Date(timeStamp));
+ ca.add(Calendar.MONTH, 1);
+ maxDate = new Date(ca.getTimeInMillis());
+
+ // 鏈湀鏈埌璐�
+ vo.setMonthUnRecievedMoney(hongBaoV2Service.getUnRecievedMoneyWithPreGetTime(uid, minDate, maxDate));
+
+ // 鍏ㄩ儴鏈埌璐�
+ minDate = new Date(0);
+ vo.setTotalUnRecievedMoney(hongBaoV2Service.getUnRecievedMoneyWithCreateTime(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)));
}
}
--
Gitblit v1.8.0