From 98b1a0affd69bbe63223c21fdd2c404e8bedfccb Mon Sep 17 00:00:00 2001 From: admin <weikou2014> Date: 星期三, 20 五月 2020 17:25:08 +0800 Subject: [PATCH] Merge remote-tracking branch 'origin/div' into 2.1.2 --- fanli/src/main/java/com/yeshi/fanli/controller/client/v2/PreviewInfoControllerV2.java | 356 ++++++++++++++++++++++++++++++++++++++++++++++++++++------- 1 files changed, 314 insertions(+), 42 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 c43dd4b..a8d4646 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,30 +3,47 @@ import java.io.PrintWriter; import java.math.BigDecimal; import java.util.ArrayList; +import java.util.Calendar; +import java.util.Collections; import java.util.Date; +import java.util.HashSet; import java.util.List; +import java.util.Set; import javax.annotation.Resource; 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; import com.google.gson.reflect.TypeToken; +import com.yeshi.fanli.dto.push.PushContentDTO; import com.yeshi.fanli.entity.accept.AcceptData; 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.config.push.PushMsgFactory; +import com.yeshi.fanli.entity.money.UserMoneyDetail.UserMoneyDetailTypeEnum; +import com.yeshi.fanli.entity.order.OrderMoneyDailyCount; +import com.yeshi.fanli.exception.push.PushException; 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.CommonOrderService; +import com.yeshi.fanli.service.inter.order.OrderMoneyDailyCountService; +import com.yeshi.fanli.service.inter.push.PushService; import com.yeshi.fanli.service.inter.user.PreviewInfoService; 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.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; @@ -44,7 +61,24 @@ @Resource private RedisManager redisManager; - + + @Resource + private HongBaoV2CountService hongBaoV2CountService; + + @Resource + private UserMoneyDetailService userMoneyDetailService; + + @Resource + private OrderMoneyDailyCountService orderMoneyDailyCountService; + + @Resource + private CommonOrderService commonOrderService; + + @Resource + private PushService pushService; + + + /** * 淇濆瓨璧勯噾淇℃伅 * @@ -71,15 +105,149 @@ @RequestMapping(value = "getMoneyInfo") public void getMoneyInfo(String callback, AcceptData acceptData, Long uid, PrintWriter out) { + MoneyStatisticVO dto = null; PreviewInfo previewInfo = previewInfoService.get(uid, PreviewEnum.moneyInfo); - if (previewInfo == null || StringUtil.isNullOrEmpty(previewInfo.getContent())) { - JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("鏆傛棤鏁版嵁")); - return; + if (previewInfo != null && !StringUtil.isNullOrEmpty(previewInfo.getContent())) { + dto = new Gson().fromJson(previewInfo.getContent(), MoneyStatisticVO.class); + } else { + dto = createMoneyStatistic(uid); } - MoneyStatisticVO dto = new Gson().fromJson(previewInfo.getContent(), MoneyStatisticVO.class); 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; + } /** * 淇濆瓨鎻愮幇璁板綍 @@ -91,18 +259,18 @@ * @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); + JsonUtil.printMode(out, callback, JsonUtil.loadTrueResult("淇濆瓨鎴愬姛")); } catch (PreviewInfoException e) { JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult(e.getMsg())); } - JsonUtil.printMode(out, callback, JsonUtil.loadTrueResult("淇濆瓨鎴愬姛")); } @RequestMapping(value = "getExtractRecord") @@ -118,26 +286,53 @@ 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(); + } } /** @@ -169,15 +364,16 @@ * @param out */ @RequestMapping(value = "saveMineInfo") - public void saveMineInfo(String callback, AcceptData acceptData, MineInfoVO infoVO, MultipartFile file, - PrintWriter out) { + public void saveMineInfo(String callback, AcceptData acceptData, MineInfoVO infoVO, PrintWriter out) { if (infoVO == null || infoVO.getUid() == null) { JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("鐢ㄦ埛鏈櫥褰�")); return; } try { - previewInfoService.saveMineInfo(infoVO, file); + previewInfoService.saveMineInfo(infoVO); JsonUtil.printMode(out, callback, JsonUtil.loadTrueResult("淇濆瓨鎴愬姛")); + } catch (PreviewInfoException e) { + JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult(e.getMsg())); } catch (Exception e) { LogHelper.errorDetailInfo(e); JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("淇濆瓨澶辫触")); @@ -187,13 +383,14 @@ @RequestMapping(value = "getMineInfo") public void getMineInfo(String callback, AcceptData acceptData, Long uid, PrintWriter out) { PreviewInfo previewInfo = previewInfoService.get(uid, PreviewEnum.mineInfo); - if (previewInfo == null || StringUtil.isNullOrEmpty(previewInfo.getContent())) { - JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("鏆傛棤鏁版嵁")); - return; + MineInfoVO dto = null; + if (previewInfo != null && !StringUtil.isNullOrEmpty(previewInfo.getContent())) { + dto = new Gson().fromJson(previewInfo.getContent(), MineInfoVO.class); } - MineInfoVO dto = new Gson().fromJson(previewInfo.getContent(), MineInfoVO.class); - JsonUtil.printMode(out, callback, JsonUtil.loadTrueResult(dto)); + if (dto == null) + dto = new MineInfoVO(); + JsonUtil.printMode(out, callback, JsonUtil.loadTrueResult(JsonUtil.getSimpleGson().toJson(dto))); } /** @@ -208,21 +405,18 @@ * @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("鐢ㄦ埛鏈櫥褰�")); - return; - } - try { - String link = previewInfoService.saveMoneyArrival(uid, money, time, orderNo); + String link = previewInfoService.saveMoneyArrival(uid, money, dayTime, orderNo, acceptData.getPlatform()); 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("淇濆瓨澶辫触")); + JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("棰勮澶辫触")); } } @@ -230,13 +424,91 @@ @RequestMapping(value = "getMoneyArrivalImg") public void getMoneyArrivalImg(String callback, AcceptData acceptData, Long uid, PrintWriter out) { PreviewInfo previewInfo = previewInfoService.get(uid, PreviewEnum.moneyInfo); - if (previewInfo == null || StringUtil.isNullOrEmpty(previewInfo.getContent())) { - JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("鏆傛棤鏁版嵁")); - return; + String link = null; + if (previewInfo != null && StringUtil.isNullOrEmpty(previewInfo.getContent())) { + link = previewInfo.getContent(); } JSONObject object = new JSONObject(); - object.put("link", previewInfo.getContent()); + object.put("link", link); 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 || type < 1 || type > 2) { + JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("璇烽�夋嫨璁㈠崟绫诲瀷")); + return; + } + + if (num == null || num <= 0) { + JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("璇峰~鍐欐帹閫佹暟閲�")); + return; + } + + if (num > 50) { + JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("鏈�澶氭敮鎸�50鏉�")); + return; + } + + // 鑾峰彇鏈�鏂拌鍗曞彿 + String orderNo = commonOrderService.getNewestOrderNoByTaoBao(); + + // 闅忔満璁㈠崟鍙� + List<String> list = getRandomOrderNo(orderNo, num); + for (String orderId: list) { + PushContentDTO dto = PushMsgFactory.createFanLiOrderStatisticed(Constant.SOURCE_TYPE_TAOBAO, + orderId, BigDecimal.ZERO); + try { + pushService.pushZNX(uid, dto.getTitle(), dto.getContent(), null, null); + } catch (NumberFormatException e) { + e.printStackTrace(); + } catch (PushException e) { + e.printStackTrace(); + } + } + JsonUtil.printMode(out, callback, JsonUtil.loadTrueResult("鎺ㄩ�佹垚鍔�")); + } + + + private List<String> getRandomOrderNo(String orderNo, int count) { + String newNo = orderNo.substring(0, 3); + long lenth = orderNo.length() - 3; + + long tempNum = 1; + for (long i = 0; i < lenth - 1; i++) { + tempNum = tempNum * 10; + } + + Set<String> set = new HashSet<>(); + for (int i = 0; i < count; i++) { + int temp = set.size(); + while (set.size() <= temp) { + long randomNum = (long) ((Math.random() * 9 + 1) * tempNum); + set.add(newNo + randomNum); + } + } + + // 杞崲list + List<String> list = new ArrayList<>(); + for (String s : set) { + list.add(s); + } + // 鎺掑簭 + Collections.sort(list); + + return list; + } } -- Gitblit v1.8.0