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/UserMoneyControllerV2.java | 860 ++++++++++++++++++++++++++++++++++++++++++++------------ 1 files changed, 671 insertions(+), 189 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 d4d3e00..4345f80 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 @@ -4,6 +4,8 @@ import java.lang.reflect.Type; import java.math.BigDecimal; import java.math.RoundingMode; +import java.text.ParseException; +import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Calendar; import java.util.Date; @@ -13,33 +15,45 @@ import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; +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; import com.google.gson.JsonSerializationContext; import com.google.gson.JsonSerializer; +import com.google.gson.reflect.TypeToken; import com.yeshi.fanli.entity.accept.AcceptData; import com.yeshi.fanli.entity.bus.user.Extract; +import com.yeshi.fanli.entity.bus.user.PreviewInfo.PreviewEnum; 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; import com.yeshi.fanli.service.inter.order.OrderMoneyDailyCountService; +import com.yeshi.fanli.service.inter.user.PreviewInfoService; 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; 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 com.yeshi.fanli.vo.order.OrderRankingVO; import net.sf.json.JSONArray; import net.sf.json.JSONObject; @@ -74,12 +88,34 @@ @Resource private HongBaoV2CountService hongBaoV2CountService; - + @Resource private OrderMoneyDailyCountService orderMoneyDailyCountService; + + @Resource + private TeamEincomeRecordService teamEincomeRecordService; + + @Resource + private PreviewInfoService previewInfoService; - + 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(); + } + /** * 鐢ㄦ埛璧勯噾缁熻 * @@ -93,28 +129,50 @@ out.print(JsonUtil.loadFalseResult(1, "鐢ㄦ埛鏈櫥褰�")); return; } - UserInfo user = userInfoService.getUserById(uid); + // VIP鏁版嵁棰勮 + MoneyStatisticVO vo = null; + String redisContent = previewInfoService.getRedisContent(uid, PreviewEnum.moneyInfo); + if (!StringUtil.isNullOrEmpty(redisContent)) { + vo = new Gson().fromJson(redisContent, MoneyStatisticVO.class); + if (vo != null) { + vo.setLink(configService.get(ConfigKeyEnum.autoExtractHelpUrl.getKey())); + vo.setExtractDesc("鎻愮幇閲戦灏辨槸宸叉垚鍔熸彁鐜板埌鏀粯瀹濈殑璧勯噾"); + vo.setMoneyArrivalDesc("璁㈠崟宸插埌璐﹀悗鎻愮幇鏃堕棿鍜岄噾棰濆潎涓嶅彈闄愬埗"); + } + } + + if (vo == null) { + vo = createMoneyStatistic(uid); + } + + Gson gson = getGson(); + out.print(JsonUtil.loadTrueResult(gson.toJson(vo))); + } + + + public MoneyStatisticVO createMoneyStatistic(Long uid) { + UserInfo user = userInfoService.getUserById(uid); + MoneyStatisticVO vo = new MoneyStatisticVO(); vo.setLink(configService.get(ConfigKeyEnum.autoExtractHelpUrl.getKey())); vo.setBalanceMoney(user.getMyHongBao()); - vo.setExtractDesc("鎻愮幇閲戦灏辨槸宸叉垚鍔熻浆璐﹀埌鎻愮幇鏀粯瀹濈殑璧勯噾銆�"); - vo.setMoneyArrivalDesc("璧勯噾宸插埌璐﹀悗鎻愮幇鏃堕棿涓嶅彈闄愬埗銆侀噾棰濆彈闄愬埗銆�"); - + vo.setExtractDesc("鎻愮幇閲戦灏辨槸宸叉垚鍔熸彁鐜板埌鏀粯瀹濈殑璧勯噾"); + vo.setMoneyArrivalDesc("璁㈠崟宸插埌璐﹀悗鎻愮幇鏃堕棿鍜岄噾棰濆潎涓嶅彈闄愬埗"); + // 鑾峰彇鎻愮幇涓殑淇℃伅 BigDecimal extractingMoney = extractService.sumVerifyingMoney(uid); if (extractingMoney.compareTo(new BigDecimal(0)) > 0) vo.setExtractingMoneyInfo("鎻愮幇涓�:楼" + extractingMoney.setScale(2, RoundingMode.HALF_UP)); - + 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); @@ -122,27 +180,31 @@ 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")); + 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()); + 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")); + 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(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); @@ -159,7 +221,8 @@ typeList.add(UserMoneyDetailTypeEnum.share); typeList.add(UserMoneyDetailTypeEnum.shareNew); typeList.add(UserMoneyDetailTypeEnum.shareWeiQuan); - vo.setTotalShareMoney(userMoneyDetailService.statisticUserTypeMoneyWithDate(uid, typeList, minDate, maxDate).abs()); + vo.setTotalShareMoney( + userMoneyDetailService.statisticUserTypeMoneyWithDate(uid, typeList, minDate, maxDate).abs()); // 绱閭�璇疯禋 typeList.clear(); @@ -168,235 +231,654 @@ typeList.add(UserMoneyDetailTypeEnum.inviteAndShare); typeList.add(UserMoneyDetailTypeEnum.subsidy); typeList.add(UserMoneyDetailTypeEnum.teamReward); - vo.setTotalInviteMoney(userMoneyDetailService.statisticUserTypeMoneyWithDate(uid, typeList, minDate, maxDate).abs()); + 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")); + 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")); + 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")); + 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")); + 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))); - - - 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))); + return 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(); 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) { + for (OrderMoneyDailyCount dailyCount : list) { + 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(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; } - - - /** - * 鍘嗗彶璇︽儏 - * @param acceptData - * @param uid - * @param datetype 1-澶� - 2鏈� - * @param out - */ - @RequestMapping(value = "getHistoryDetail") - public void getHistoryDetail(AcceptData acceptData, Long uid, Integer datetype, PrintWriter out) { - if (uid == null || uid == 0) { - out.print(JsonUtil.loadFalseResult(1, "鐢ㄦ埛鏈櫥褰�")); - return; - } - - if (datetype == null) { - datetype = 1; - } - - - MoneyPredictVO predictVO = new MoneyPredictVO(); - predictVO.setMineNum(0); - predictVO.setTeamNum(0); - predictVO.setMineMoney(BigDecimal.valueOf(0)); - predictVO.setTeamMoney(BigDecimal.valueOf(0)); - predictVO.setTotalNum(predictVO.getTeamNum() + predictVO.getMineNum()); - predictVO.setTotalMoney(predictVO.getMineMoney().add(predictVO.getTeamMoney())); - predictVO.setCountDate("2020骞�05鏈�09鏃�"); - - MoneyPredictVO predictVO2 = new MoneyPredictVO(); - predictVO2.setMineNum(0); - predictVO2.setTeamNum(0); - predictVO2.setMineMoney(BigDecimal.valueOf(0)); - predictVO2.setTeamMoney(BigDecimal.valueOf(0)); - predictVO2.setTotalNum(predictVO.getTeamNum() + predictVO.getMineNum()); - predictVO2.setTotalMoney(predictVO.getMineMoney().add(predictVO.getTeamMoney())); - predictVO2.setCountDate("2020骞�05鏈�08鏃�"); - - List<MoneyPredictVO> list = new ArrayList<>(); - list.add(predictVO); - list.add(predictVO2); - - 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()); - } - } - }); - - JSONObject object = new JSONObject(); - object.put("count", list.size()); - object.put("list", builder.create().toJson(list)); - out.print(JsonUtil.loadTrueResult(object)); - } - - /** - * 鏀剁泭璇︽儏 - * @param acceptData - * @param uid - * @param datetype - * @param type - * @param out - */ - @RequestMapping(value = "getIncomeDetail") - public void getIncomeDetail(AcceptData acceptData, Long uid, Integer datetype, int type, PrintWriter out) { - if (uid == null || uid == 0) { - out.print(JsonUtil.loadFalseResult(1, "鐢ㄦ埛鏈櫥褰�")); - return; - } - - IncomeDetailVO detailVO = new IncomeDetailVO(); - detailVO.setIcon("https://image.baidu.com/search/detail?ct=503316480&z=0&ipn=d&word=%E5%9B%BE%E6%A0%87&hs=2&pn=4&spn=0&di=140910&pi=0&rn=1&tn=baiduimagedetail&is=0%2C0&ie=utf-8&oe=utf-8&cl=2&lm=-1&cs=1127089551%2C1776911506&os=1048215048%2C2112739689&simid=3430760525%2C458613076&adpicid=0&lpn=0&ln=30&fr=ala&fm=&sme=&cg=&bdtype=0&oriquery=%E5%9B%BE%E6%A0%87&objurl=http%3A%2F%2Fbpic.588ku.com%2Felement_origin_min_pic%2F16%2F08%2F20%2F2357b8781a8b798.jpg!%2Ffwfh%2F804x804%2Fquality%2F90%2Funsharp%2Ftrue%2Fcompress%2Ftrue&fromurl=ippr_z2C%24qAzdH3FAzdH3Flafij3t_z%26e3Bv54AzdH3Ff7vwtAzdH3F8clm90md_z%26e3Bip4s&gsm=5&islist=&querylist="); - detailVO.setNum(0); - detailVO.setMoney(BigDecimal.valueOf(0)); - - IncomeDetailVO detailVO2 = new IncomeDetailVO(); - detailVO2.setIcon("https://image.baidu.com/search/detail?ct=503316480&z=0&ipn=d&word=%E5%9B%BE%E6%A0%87&hs=2&pn=5&spn=0&di=63690&pi=0&rn=1&tn=baiduimagedetail&is=0%2C0&ie=utf-8&oe=utf-8&cl=2&lm=-1&cs=2705540191%2C3386342097&os=1154083183%2C368350028&simid=3434290922%2C367349849&adpicid=0&lpn=0&ln=30&fr=ala&fm=&sme=&cg=&bdtype=0&oriquery=%E5%9B%BE%E6%A0%87&objurl=http%3A%2F%2Fhbimg.b0.upaiyun.com%2Ffe2a5be541f3c011972f74d3b50b96578116a92c2f63-tK5HwY_fw658&fromurl=ippr_z2C%24qAzdH3FAzdH3Fi7wkwg_z%26e3Bv54AzdH3FrtgfAzdH3F8ca0l0acmdAzdH3F&gsm=5&islist=&querylist="); - detailVO2.setNum(0); - detailVO2.setMoney(BigDecimal.valueOf(0)); - List<IncomeDetailVO> list = new ArrayList<>(); - list.add(detailVO); - list.add(detailVO2); - - 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()); - } - } - }); - - JSONObject object = new JSONObject(); - object.put("count", list.size()); - object.put("list", builder.create().toJson(list)); - out.print(JsonUtil.loadTrueResult(object)); - } - - - + /** + * 鎻愮幇鎴愬姛璁板綍 + * @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<>(); + + List<Extract> list = null; + String redisContent = previewInfoService.getRedisContent(uid, PreviewEnum.extractRecord); + if (!StringUtil.isNullOrEmpty(redisContent)) { + Gson gson = new Gson(); + list = gson.fromJson(redisContent, new TypeToken<ArrayList<Extract>>() {}.getType()); } + // 鏌ヨ鐪熷疄 + long count = 0; + if (list == null) { + list = extractService.getExtractSucceedRecord(page, Constant.PAGE_SIZE, uid); + count = extractService.countExtractSucceedRecord(uid); + } + + if (list == null) + list = new ArrayList<>(); + JSONArray JSONArray = new JSONArray(); - for (Extract extract: list) { + for (Extract extract : list) { Date receiveTime = extract.getReceiveTime(); if (receiveTime == null) { - receiveTime = new Date(extract.getExtractTime()); + receiveTime = new Date(extract.getExtractTime()); } - String account = "鏀粯瀹濓細" + UserUtil.filterAlipayAccount(extract.getAccount()); - account = account + "-濮撳悕锛�"+ UserUtil.filterAlipayName(extract.getName()); - + String account = "鏀粯瀹濓細" + UserUtil.filterAlipayAccount(extract.getAccount()); + account = account + "-濮撳悕锛�" + UserUtil.filterAlipayName(extract.getName()); + JSONObject object = new JSONObject(); - object.put("title", "浣犱簬"+ TimeUtil.formatDate(receiveTime) +"鎻愮幇鎴愬姛"); + object.put("title", "浣犱簬" + TimeUtil.formatDate(receiveTime) + "鎻愮幇鎴愬姛"); object.put("account", account); - object.put("money","楼" + extract.getMoney().setScale(2).toString()); + object.put("money", "楼" + extract.getMoney().setScale(2).toString()); JSONArray.add(object); } - + JSONObject json = new JSONObject(); - json.put("count", extractService.countExtractSucceedRecord(uid)); + json.put("count", count == 0 ? list.size() : 0); json.put("list", JSONArray); out.print(JsonUtil.loadTrueResult(json)); } + /** + * 鍘嗗彶璇︽儏 + * + * @param acceptData + * @param uid + * @param datetype 1-澶� - 2鏈� + * @param out + */ + @RequestMapping(value = "getHistoryDetail") + public void getHistoryDetail(AcceptData acceptData, Long uid, String date, Integer datetype, PrintWriter out) { + if (uid == null || uid == 0) { + out.print(JsonUtil.loadFalseResult(1, "鐢ㄦ埛鏈櫥褰�")); + return; + } + + 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<MoneyPredictVO> 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++) { + MoneyPredictVO predictVO = new MoneyPredictVO(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.sumGroupByCountDay(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++) { + MoneyPredictVO predictVO = new MoneyPredictVO(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.sumGroupByYearMonth(uid, minDay, maxDay); + } + + BigDecimal hundred = BigDecimal.valueOf(100); + for (MoneyPredictVO 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.setMineNum(dailyCount.getOrderNum()); + predictVO.setMineMoney( + MoneyBigDecimalUtil.div(BigDecimal.valueOf(dailyCount.getIncome()), hundred)); + predictVO.setTeamNum(dailyCount.getOrderNumTeam()); + 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))))) { + predictVO.setMineNum(dailyCount.getOrderNum()); + predictVO.setMineMoney( + MoneyBigDecimalUtil.div(BigDecimal.valueOf(dailyCount.getIncome()), hundred)); + predictVO.setTeamNum(dailyCount.getOrderNumTeam()); + predictVO.setTeamMoney( + MoneyBigDecimalUtil.div(BigDecimal.valueOf(dailyCount.getIncomeTeam()), hundred)); + break; + } + } + } + + predictVO.setTotalNum(predictVO.getTeamNum() + predictVO.getMineNum()); + predictVO.setTotalMoney(predictVO.getMineMoney().add(predictVO.getTeamMoney())); + } + + Gson gson = getGson(); + + JSONObject object = new JSONObject(); + object.put("count", list.size()); + object.put("list", gson.toJson(list)); + out.print(JsonUtil.loadTrueResult(object)); + } catch (ParseException e) { + e.printStackTrace(); + } + } + + /** + * 鏀剁泭璇︽儏 + * + * @param acceptData + * @param uid + * @param datetype + * @param type + * @param out + */ + @RequestMapping(value = "getIncomeDetail") + public void getIncomeDetail(AcceptData acceptData, Long uid, String date, Integer datetype, Integer type, + PrintWriter out) { + if (uid == null || uid == 0) { + out.print(JsonUtil.loadFalseResult(1, "鐢ㄦ埛鏈櫥褰�")); + return; + } + + if (StringUtil.isNullOrEmpty(date) || datetype == null || type == null) { + out.print(JsonUtil.loadFalseResult(1, "鍙傛暟涓嶅畬鏁�")); + return; + } + + Date minDay = new Date(); + Date maxDay = new Date(); + if (datetype == 1) { + minDay = TimeUtil.parseYYYYMMDD(date); + maxDay = TimeUtil.parseYYYYMMDD_HHMMSS(date + " 23:59:59"); + } else if (datetype == 2) { + String firstDay = DateUtil.getFirstDayOfMonth(date); + String lastDay = DateUtil.getLastDayOfMonth(date); + minDay = TimeUtil.parseYYYYMMDD(firstDay); + maxDay = TimeUtil.parseYYYYMMDD_HHMMSS(lastDay + " 23:59:59"); + } + + List<OrderMoneyDailyCount> listDailyCount = null; + if (type == 1) { + listDailyCount = orderMoneyDailyCountService.sumGroupBySourceType(uid, minDay, maxDay); + } 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]; + IncomeDetailVO detail = new IncomeDetailVO(typeEnum.getIcon(), 0, zero); + if (listDailyCount != null && listDailyCount.size() > 0) { + for (OrderMoneyDailyCount dailyCount : listDailyCount) { + if (dailyCount.getSourceType() == typeEnum) { + detail.setNum(detail.getNum() + dailyCount.getOrderNum()); + detail.setMoney(detail.getMoney() + .add(MoneyBigDecimalUtil.div(BigDecimal.valueOf(dailyCount.getIncome()), hundred))); + } + } + } + list.add(detail); + } + + Gson gson = getGson(); + + JSONObject object = new JSONObject(); + object.put("count", list.size()); + object.put("list", gson.toJson(list)); + out.print(JsonUtil.loadTrueResult(object)); + } + + /** + * 鍥㈤槦鍒嗙孩 + * @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; + } + + 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))); + TeamPredictVO todayVO = crateTeamPredictVO(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); + 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", 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; + } + + /** + * 鍘嗗彶璇︽儏 + * + * @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; + } + + 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); + } + + BigDecimal hundred = BigDecimal.valueOf(100); + 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( + MoneyBigDecimalUtil.div(BigDecimal.valueOf(dailyCount.getTeamReward()), hundred)); + predictVO.setSubsidyNum(dailyCount.getTeamSubsidyNum()); + 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))))) { + predictVO.setRewardNum(dailyCount.getTeamRewardNum()); + predictVO.setReward( + MoneyBigDecimalUtil.div(BigDecimal.valueOf(dailyCount.getTeamReward()), hundred)); + predictVO.setSubsidyNum(dailyCount.getTeamSubsidyNum()); + predictVO.setSubsidy( + MoneyBigDecimalUtil.div(BigDecimal.valueOf(dailyCount.getTeamSubsidy()), hundred)); + break; + } + } + } + + predictVO.setTotalNum(predictVO.getRewardNum() + predictVO.getSubsidyNum()); + predictVO.setTotalMoney(predictVO.getReward().add(predictVO.getSubsidy())); + } + + Gson gson = getGson(); + + JSONObject object = new JSONObject(); + object.put("count", list.size()); + object.put("list", gson.toJson(list)); + out.print(JsonUtil.loadTrueResult(object)); + } catch (ParseException e) { + e.printStackTrace(); + } + } + + + /** + * 璁㈠崟缁熻-h5 + * + * @param acceptData + * @param id + * @param out + */ + @RequestMapping(value = "countTeamOrderNum") + public void countTeamOrderNum(String callback, AcceptData acceptData, Long uid, PrintWriter out) { + try { + + 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))); + OrderMoneyDailyCount todayRecord = createVO(orderMoneyDailyCountService.sumTeamOrderNumGroupByCountDay(uid, minDate, null)); + + // 鏄ㄦ棩棰勪及 + calendar.add(Calendar.DAY_OF_YEAR, -1); + maxDate = new Date(TimeUtil.convertDateToTemp(TimeUtil.getGernalTime(timeStamp))); + minDate = DateUtil.reduceDay(1, maxDate); + OrderMoneyDailyCount yesterdayRecord = createVO(orderMoneyDailyCountService.sumTeamOrderNumGroupByCountDay(uid, minDate, maxDate)); + + // 鏈湀棰勪及 + 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); + OrderMoneyDailyCount monthRecord = createVO(orderMoneyDailyCountService.sumTeamOrderNumGroupByYearMonth(uid, minDate, maxDate)); + + // 绱 + OrderMoneyDailyCount totalityRecord = createVO(orderMoneyDailyCountService.sumTeamOrderNumGroupByUid(uid, null, null)); + + JSONObject today = new JSONObject(); + today.put("direct", todayRecord.getDirectOrderNum()); + today.put("indirect", todayRecord.getInDirectOrderNum()); + today.put("beyond", todayRecord.getBeyondOrderNum()); + + JSONObject yesterday = new JSONObject(); + yesterday.put("direct", yesterdayRecord.getDirectOrderNum()); + yesterday.put("indirect", yesterdayRecord.getInDirectOrderNum()); + yesterday.put("beyond", yesterdayRecord.getBeyondOrderNum()); + + JSONObject month = new JSONObject(); + month.put("direct", monthRecord.getDirectOrderNum()); + month.put("indirect", monthRecord.getInDirectOrderNum()); + month.put("beyond", monthRecord.getBeyondOrderNum()); + + JSONObject totality = new JSONObject(); + totality.put("direct", totalityRecord.getDirectOrderNum()); + totality.put("indirect", totalityRecord.getInDirectOrderNum()); + totality.put("beyond", totalityRecord.getBeyondOrderNum()); + + + JSONObject json = new JSONObject(); + json.put("today", today); + json.put("yesterday", yesterday); + json.put("month", month); + json.put("totality", totality); + JsonUtil.printMode(out, callback, JsonUtil.loadTrueResult(json)); + } catch (Exception e) { + JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("缁熻澶辫触")); + e.printStackTrace(); + } + } + private OrderMoneyDailyCount createVO(List<OrderMoneyDailyCount> list) { + OrderMoneyDailyCount totalityRecord = new OrderMoneyDailyCount(0,0,0); + if (list != null && list.size() > 0) { + for (OrderMoneyDailyCount record: list) { + totalityRecord.setDirectOrderNum(totalityRecord.getDirectOrderNum() + record.getDirectOrderNum()); + totalityRecord.setInDirectOrderNum(totalityRecord.getInDirectOrderNum() + record.getInDirectOrderNum()); + totalityRecord.setBeyondOrderNum(totalityRecord.getBeyondOrderNum() + record.getBeyondOrderNum()); + } + } + return totalityRecord; + } + + + + /** + * 璁㈠崟鎺掕姒� + * @param callback + * @param acceptData + * @param uid + * @param dateType + * @param out + */ + @RequestMapping(value = "getRanking") + public void getRanking(String callback, AcceptData acceptData, Long uid, Integer dateType, PrintWriter out) { + if (uid == null || dateType == null) { + JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("鍙傛暟缂哄け")); + return; + } + + try { + Date minDate = null; + Date maxDate = null; + long timeStamp = System.currentTimeMillis(); + + Calendar calendar = Calendar.getInstance(); + calendar.setTimeInMillis(timeStamp); + + if (dateType == 1) { + // 浠婃棩 + calendar.add(Calendar.DAY_OF_YEAR, -1); + minDate = new Date(TimeUtil.convertDateToTemp(TimeUtil.getGernalTime(timeStamp))); + } else if (dateType == 2) { + // 鏄ㄦ棩 + calendar.add(Calendar.DAY_OF_YEAR, -1); + maxDate = new Date(TimeUtil.convertDateToTemp(TimeUtil.getGernalTime(timeStamp))); + minDate = DateUtil.reduceDay(1, maxDate); + } else { + // 鏈湀 + 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); + } + + List<OrderRankingVO> list = orderMoneyDailyCountService.getRankingByOrderNum(uid, minDate, maxDate); + if (list.size() > 0) { + for (OrderRankingVO vo: list) { + UserInfo user = userInfoService.getUserByIdWithMybatis(vo.getUid()); + vo.setNickName(user.getNickName()); + vo.setPortrait(user.getPortrait()); + } + } + + JSONObject json = new JSONObject(); + json.put("list", list); + JsonUtil.printMode(out, callback, JsonUtil.loadTrueResult(json)); + } catch (Exception e) { + JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("缁熻澶辫触")); + e.printStackTrace(); + } + } } -- Gitblit v1.8.0