From de4110d3d3944ffcd797fd8c43f0d455cc731f84 Mon Sep 17 00:00:00 2001
From: yujian <yujian@163.com>
Date: 星期日, 17 五月 2020 11:43:52 +0800
Subject: [PATCH] 活动详情

---
 fanli/src/main/java/com/yeshi/fanli/controller/client/v2/PreviewInfoControllerV2.java |  241 ++++++++++++++++++++++++++++++++++++++++++++----
 1 files changed, 220 insertions(+), 21 deletions(-)

diff --git a/fanli/src/main/java/com/yeshi/fanli/controller/client/v2/PreviewInfoControllerV2.java b/fanli/src/main/java/com/yeshi/fanli/controller/client/v2/PreviewInfoControllerV2.java
index 4c176a0..fd3361b 100644
--- a/fanli/src/main/java/com/yeshi/fanli/controller/client/v2/PreviewInfoControllerV2.java
+++ b/fanli/src/main/java/com/yeshi/fanli/controller/client/v2/PreviewInfoControllerV2.java
@@ -3,6 +3,7 @@
 import java.io.PrintWriter;
 import java.math.BigDecimal;
 import java.util.ArrayList;
+import java.util.Calendar;
 import java.util.Date;
 import java.util.List;
 
@@ -10,7 +11,6 @@
 
 import org.springframework.stereotype.Controller;
 import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.multipart.MultipartFile;
 import org.yeshi.utils.JsonUtil;
 
 import com.google.gson.Gson;
@@ -19,14 +19,22 @@
 import com.yeshi.fanli.entity.bus.user.Extract;
 import com.yeshi.fanli.entity.bus.user.PreviewInfo;
 import com.yeshi.fanli.entity.bus.user.PreviewInfo.PreviewEnum;
+import com.yeshi.fanli.entity.bus.user.UserInfo;
+import com.yeshi.fanli.entity.money.UserMoneyDetail.UserMoneyDetailTypeEnum;
+import com.yeshi.fanli.entity.order.OrderMoneyDailyCount;
 import com.yeshi.fanli.exception.user.PreviewInfoException;
 import com.yeshi.fanli.log.LogHelper;
+import com.yeshi.fanli.service.inter.count.HongBaoV2CountService;
+import com.yeshi.fanli.service.inter.money.UserMoneyDetailService;
+import com.yeshi.fanli.service.inter.order.OrderMoneyDailyCountService;
 import com.yeshi.fanli.service.inter.user.PreviewInfoService;
 import com.yeshi.fanli.service.inter.user.UserInfoService;
+import com.yeshi.fanli.util.MoneyBigDecimalUtil;
 import com.yeshi.fanli.util.RedisManager;
 import com.yeshi.fanli.util.StringUtil;
 import com.yeshi.fanli.util.TimeUtil;
 import com.yeshi.fanli.util.account.UserUtil;
+import com.yeshi.fanli.vo.money.MoneyPredictVO;
 import com.yeshi.fanli.vo.money.MoneyStatisticVO;
 import com.yeshi.fanli.vo.user.MineInfoVO;
 
@@ -46,9 +54,15 @@
 	private RedisManager redisManager;
 	
 	@Resource
-	private UserMoneyControllerV2 userMoneyControllerV2;
+	private HongBaoV2CountService hongBaoV2CountService;
 	
-
+	@Resource
+	private UserMoneyDetailService userMoneyDetailService;
+	
+	@Resource
+	private OrderMoneyDailyCountService orderMoneyDailyCountService;
+	
+	
 	/**
 	 * 淇濆瓨璧勯噾淇℃伅
 	 * 
@@ -80,11 +94,144 @@
 		if (previewInfo != null && !StringUtil.isNullOrEmpty(previewInfo.getContent())) {
 			dto = new Gson().fromJson(previewInfo.getContent(), MoneyStatisticVO.class);
 		} else {
-			dto = userMoneyControllerV2.createMoneyStatistic(uid);
+			dto = createMoneyStatistic(uid);
 		}
 		JsonUtil.printMode(out, callback, JsonUtil.loadTrueResult(dto));
 	}
 
+	private MoneyStatisticVO createMoneyStatistic(Long uid) {
+		UserInfo user = userInfoService.getUserById(uid);
+
+		MoneyStatisticVO vo = new MoneyStatisticVO();
+		vo.setBalanceMoney(user.getMyHongBao());
+		Date minDate = null;
+		Date maxDate = null;
+		long timeStamp = System.currentTimeMillis();
+		List<UserMoneyDetailTypeEnum> typeList = new ArrayList<>();
+
+		Calendar calendar = Calendar.getInstance();
+		calendar.setTimeInMillis(timeStamp);
+
+		typeList.clear();
+		typeList.add(UserMoneyDetailTypeEnum.extract);
+		typeList.add(UserMoneyDetailTypeEnum.extractNew);
+		typeList.add(UserMoneyDetailTypeEnum.extractVerify);
+		typeList.add(UserMoneyDetailTypeEnum.extractVerifyNew);
+		typeList.add(UserMoneyDetailTypeEnum.extractReject);
+		typeList.add(UserMoneyDetailTypeEnum.extractAutoWX);
+
+		// 鏈湀鎻愮幇
+		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);
+		vo.setMonthExtractMoney(
+				userMoneyDetailService.statisticUserTypeMoneyWithDate(uid, typeList, minDate, maxDate, 1).abs());
+
+		// 涓婃湀鎻愮幇
+		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, 1).abs());
+
+		minDate = new Date(0L);
+		maxDate = new Date(timeStamp);
+		// 绱鎴愬姛鎻愮幇
+		vo.setTotalExtractMoney(
+				userMoneyDetailService.statisticUserTypeMoneyWithDate(uid, typeList, minDate, maxDate, 1).abs());
+
+		// 绱鑷喘杩斿埄
+		typeList.clear();
+		typeList.add(UserMoneyDetailTypeEnum.fanli);
+		typeList.add(UserMoneyDetailTypeEnum.fanliNew);
+		typeList.add(UserMoneyDetailTypeEnum.fanliWeiQuan);
+		typeList.add(UserMoneyDetailTypeEnum.fanliWeiQuanNew);
+		typeList.add(UserMoneyDetailTypeEnum.orderReward);
+		typeList.add(UserMoneyDetailTypeEnum.orderRewardNew);
+		vo.setTotalFanLiMoney(
+				userMoneyDetailService.statisticUserTypeMoneyWithDate(uid, typeList, minDate, maxDate).abs());
+
+		// 绱鍒嗕韩璧�
+		typeList.clear();
+		typeList.add(UserMoneyDetailTypeEnum.share);
+		typeList.add(UserMoneyDetailTypeEnum.shareNew);
+		typeList.add(UserMoneyDetailTypeEnum.shareWeiQuan);
+		vo.setTotalShareMoney(
+				userMoneyDetailService.statisticUserTypeMoneyWithDate(uid, typeList, minDate, maxDate).abs());
+
+		// 绱閭�璇疯禋
+		typeList.clear();
+		typeList.add(UserMoneyDetailTypeEnum.invite);
+		typeList.add(UserMoneyDetailTypeEnum.inviteWeiQuan);
+		typeList.add(UserMoneyDetailTypeEnum.inviteAndShare);
+		typeList.add(UserMoneyDetailTypeEnum.subsidy);
+		typeList.add(UserMoneyDetailTypeEnum.teamReward);
+		vo.setTotalInviteMoney(
+				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);
+		vo.setMonthSettleMoney(hongBaoV2CountService.sumMoneyBySettleTimeAndUid(uid, minDate, maxDate));
+
+		// 涓婃湀鏀惰揣
+		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.setLastMonthSettleMoney(hongBaoV2CountService.sumMoneyBySettleTimeAndUid(uid, minDate, maxDate));
+
+		// 寰呯‘璁ゆ敹璐э紙180澶╁唴锛�
+		vo.setNotSettleMoney(hongBaoV2CountService.sumMoneyByANotSettleAndUid(uid));
+
+		// 浠婃棩棰勪及
+		calendar.add(Calendar.DAY_OF_YEAR, -1);
+		minDate = new Date(TimeUtil.convertDateToTemp(TimeUtil.getGernalTime(timeStamp)));
+		vo.setTodayPredict(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);
+		vo.setMonthPredict(cratePredictVO(orderMoneyDailyCountService.query(uid, minDate, maxDate)));
+		return vo;
+	}
+	
+	private MoneyPredictVO cratePredictVO(List<OrderMoneyDailyCount> list) {
+		MoneyPredictVO predictVO = new MoneyPredictVO();
+		predictVO.setMineNum(0);
+		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)
+					predictVO.setMineNum(predictVO.getMineNum() + dailyCount.getOrderNum());
+				if (dailyCount.getOrderNumTeam() != null)
+					predictVO.setTeamNum(predictVO.getTeamNum() + dailyCount.getOrderNumTeam());
+				if (dailyCount.getIncome() != null)
+					predictVO.setMineMoney(predictVO.getMineMoney()
+							.add(MoneyBigDecimalUtil.div(BigDecimal.valueOf(dailyCount.getIncome()), hundred)));
+				if (dailyCount.getIncomeTeam() != null)
+					predictVO.setTeamMoney(predictVO.getTeamMoney()
+							.add(MoneyBigDecimalUtil.div(BigDecimal.valueOf(dailyCount.getIncomeTeam()), hundred)));
+			}
+		}
+		predictVO.setTotalNum(predictVO.getTeamNum() + predictVO.getMineNum());
+		predictVO.setTotalMoney(predictVO.getMineMoney().add(predictVO.getTeamMoney()));
+		return predictVO;
+	}
 	
 	/**
 	 * 淇濆瓨鎻愮幇璁板綍
@@ -96,14 +243,14 @@
 	 * @param out
 	 */
 	@RequestMapping(value = "saveExtractRecord")
-	public void saveExtractRecord(String callback, AcceptData acceptData, Long uid, String time, BigDecimal money,
+	public void saveExtractRecord(String callback, AcceptData acceptData, Long uid, String dayTime, BigDecimal money,
 			PrintWriter out) {
 		if (uid == null) {
 			JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("鐢ㄦ埛鏈櫥褰�"));
 			return;
 		}
 		try {
-			previewInfoService.saveExtractRecord(uid, time, money);
+			previewInfoService.saveExtractRecord(uid, dayTime, money);
 		} catch (PreviewInfoException e) {
 			JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult(e.getMsg()));
 		}
@@ -123,26 +270,54 @@
 			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());
+		
+		if (list.size() > 0) {
+			for (Extract extract : list) {
+				Date receiveTime = extract.getReceiveTime();
+				if (receiveTime == null) {
+					continue;
+				}
+				String account = "鏀粯瀹濓細" + UserUtil.filterAlipayAccount(extract.getAccount());
+				account = account + "-濮撳悕锛�" + UserUtil.filterAlipayName(extract.getName());
 
-			JSONObject object = new JSONObject();
-			object.put("id", extract.getId());
-			object.put("title", "浣犱簬" + TimeUtil.formatDate(receiveTime) + "鎻愮幇鎴愬姛");
-			object.put("account", account);
-			object.put("money", "楼" + extract.getMoney().setScale(2).toString());
-			JSONArray.add(object);
+				JSONObject object = new JSONObject();
+				object.put("id", extract.getId());
+				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", JSONArray.size());
 		json.put("list", JSONArray);
 		JsonUtil.printMode(out, callback, JsonUtil.loadTrueResult(json));
+	}
+	
+	/**
+	 * 鍒犻櫎鎻愮幇璁板綍
+	 * 
+	 * @param callback
+	 * @param acceptData
+	 * @param uid
+	 * @param vo
+	 * @param out
+	 */
+	@RequestMapping(value = "previewExtractRecord")
+	public void previewExtractRecord(String callback, AcceptData acceptData, Long uid, PrintWriter out) {
+		if (uid == null) {
+			JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("鐢ㄦ埛鏈櫥褰�"));
+			return;
+		}
+		try {
+			previewInfoService.previewExtractRecord(uid);
+			JsonUtil.printMode(out, callback, JsonUtil.loadTrueResult("宸叉坊鍔犻瑙�"));
+		} catch (PreviewInfoException e) {
+			JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult(e.getMsg()));
+			e.printStackTrace();
+		}
 	}
 	
 	/**
@@ -212,7 +387,7 @@
 	 * @param out
 	 */
 	@RequestMapping(value = "saveMoneyArrival")
-	public void saveMoneyArrival(String callback, AcceptData acceptData, Long uid, BigDecimal money, String time,
+	public void saveMoneyArrival(String callback, AcceptData acceptData, Long uid, BigDecimal money, String dayTime,
 			String orderNo, PrintWriter out) {
 		if (uid == null) {
 			JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("鐢ㄦ埛鏈櫥褰�"));
@@ -220,10 +395,12 @@
 		}
 
 		try {
-			String link = previewInfoService.saveMoneyArrival(uid, money, time, orderNo);
+			String link = previewInfoService.saveMoneyArrival(uid, money, dayTime, orderNo);
 			JSONObject object = new JSONObject();
 			object.put("link", link);
 			JsonUtil.printMode(out, callback, JsonUtil.loadTrueResult(object));
+		} catch (PreviewInfoException e) { 
+			JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult(e.getMsg()));
 		} catch (Exception e) {
 			LogHelper.errorDetailInfo(e);
 			JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("淇濆瓨澶辫触"));
@@ -243,4 +420,26 @@
 		JsonUtil.printMode(out, callback, JsonUtil.loadTrueResult(object));
 	}
 
+	/**
+	 * 鎺ㄩ�侀瑙�
+	 * @param callback
+	 * @param acceptData
+	 * @param uid
+	 * @param vo
+	 * @param out
+	 */
+	@RequestMapping(value = "saveOrderInfo")
+	public void saveOrderInfo(String callback, AcceptData acceptData, Long uid, Integer type, Integer num, PrintWriter out) {
+		if (uid == null) {
+			JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("鐢ㄦ埛鏈櫥褰�"));
+			return;
+		}
+		
+		if (type == null || num == null) {
+			JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("璇峰畬鍠勬暟鎹�"));
+			return;
+		}
+		 
+		JsonUtil.printMode(out, callback, JsonUtil.loadTrueResult("淇濆瓨鎴愬姛"));
+	}
 }

--
Gitblit v1.8.0