From 62a447d89331aee1feae7724c7616aa1bb2cfe79 Mon Sep 17 00:00:00 2001 From: admin <weikou2014> Date: 星期三, 16 十月 2024 14:28:37 +0800 Subject: [PATCH] 将CMQ替换为rabbitmq --- fanli/src/main/java/com/yeshi/fanli/controller/client/v2/PreviewInfoControllerV2.java | 1082 ++++++++++++++++++++++++++++---------------------------- 1 files changed, 541 insertions(+), 541 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 9083263..b6cab29 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 @@ -1,541 +1,541 @@ -package com.yeshi.fanli.controller.client.v2; - -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.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.PayInfo; -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.PayInfoService; -import com.yeshi.fanli.service.inter.user.PreviewInfoService; -import com.yeshi.fanli.service.inter.user.UserInfoService; -import com.yeshi.fanli.util.Constant; -import org.yeshi.utils.MoneyBigDecimalUtil; -import com.yeshi.fanli.util.RedisManager; -import com.yeshi.fanli.util.StringUtil; -import org.yeshi.utils.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; - -import net.sf.json.JSONArray; -import net.sf.json.JSONObject; - -@Controller -@RequestMapping("api/v2/preview") -public class PreviewInfoControllerV2 { - @Resource - private PreviewInfoService previewInfoService; - - @Resource - private UserInfoService userInfoService; - - @Resource - private RedisManager redisManager; - - @Resource - private HongBaoV2CountService hongBaoV2CountService; - - @Resource - private UserMoneyDetailService userMoneyDetailService; - - @Resource - private OrderMoneyDailyCountService orderMoneyDailyCountService; - - @Resource - private CommonOrderService commonOrderService; - - @Resource - private PushService pushService; - - @Resource - private PayInfoService payInfoService; - - /** - * 淇濆瓨璧勯噾淇℃伅 - * - * @param callback - * @param acceptData - * @param uid - * @param vo - * @param out - */ - @RequestMapping(value = "saveMoneyInfo") - public void saveMoneyInfo(String callback, AcceptData acceptData, Long uid, MoneyStatisticVO vo, PrintWriter out) { - if (uid == null) { - JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("鐢ㄦ埛鏈櫥褰�")); - return; - } - try { - previewInfoService.saveMoneyInfo(uid, vo); - JsonUtil.printMode(out, callback, JsonUtil.loadTrueResult("淇濆瓨鎴愬姛")); - } catch (PreviewInfoException e) { - JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult(e.getMsg())); - } - } - - @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())) { - dto = new Gson().fromJson(previewInfo.getContent(), MoneyStatisticVO.class); - } else { - 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; - } - - /** - * 淇濆瓨鎻愮幇璁板綍 - * - * @param callback - * @param acceptData - * @param uid - * @param vo - * @param out - */ - @RequestMapping(value = "saveExtractRecord") - 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, dayTime, money); - JsonUtil.printMode(out, callback, JsonUtil.loadTrueResult("淇濆瓨鎴愬姛")); - } catch (PreviewInfoException e) { - JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult(e.getMsg())); - } - } - - @RequestMapping(value = "getExtractRecord") - public void getExtractRecord(String callback, AcceptData acceptData, Long uid, PrintWriter out) { - List<Extract> list = null; - PreviewInfo previewInfo = previewInfoService.get(uid, PreviewEnum.extractRecord); - if (previewInfo != null && !StringUtil.isNullOrEmpty(previewInfo.getContent())) { - Gson gson = new Gson(); - list = gson.fromJson(previewInfo.getContent(), new TypeToken<ArrayList<Extract>>() { - }.getType()); - } - - if (list == null) - list = new ArrayList<>(); - - JSONArray JSONArray = new JSONArray(); - 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 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(); - } - } - - /** - * 鍒犻櫎鎻愮幇璁板綍 - * - * @param callback - * @param acceptData - * @param uid - * @param vo - * @param out - */ - @RequestMapping(value = "deleteExtractRecord") - public void deleteExtractRecord(String callback, AcceptData acceptData, Long uid, Long id, PrintWriter out) { - if (uid == null || id == null) { - JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("鍙傛暟涓嶅畬鏁�")); - return; - } - previewInfoService.deleteExtractRecord(uid, id); - JsonUtil.printMode(out, callback, JsonUtil.loadTrueResult("鍒犻櫎鎴愬姛")); - } - - /** - * 淇濆瓨鎴戠殑淇℃伅 - * - * @param callback - * @param acceptData - * @param infoVO - * @param file - * @param out - */ - @RequestMapping(value = "saveMineInfo") - 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); - 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("淇濆瓨澶辫触")); - } - } - - @RequestMapping(value = "getMineInfo") - public void getMineInfo(String callback, AcceptData acceptData, Long uid, PrintWriter out) { - PreviewInfo previewInfo = previewInfoService.get(uid, PreviewEnum.mineInfo); - MineInfoVO dto = null; - if (previewInfo != null && !StringUtil.isNullOrEmpty(previewInfo.getContent())) { - dto = new Gson().fromJson(previewInfo.getContent(), MineInfoVO.class); - } - - if (dto == null) - dto = new MineInfoVO(); - JsonUtil.printMode(out, callback, JsonUtil.loadTrueResult(JsonUtil.getSimpleGson().toJson(dto))); - } - - /** - * 鍒拌处棰勮-鐢熶骇鍥剧墖 - * - * @param callback - * @param acceptData - * @param uid - * @param money - * @param time - * @param orderNo - * @param out - */ - @RequestMapping(value = "saveMoneyArrival") - public void saveMoneyArrival(String callback, AcceptData acceptData, Long uid, BigDecimal money, String dayTime, - PrintWriter out) { - try { - // 鏌ヨ鏈�鏂颁竴鏉℃敮浠樺疂璁㈠崟鍙� - PayInfo payInfo = payInfoService.getNearInfo(); - String orderNo = getAlipayNo(payInfo.getOrderId()); - - 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("棰勮澶辫触")); - } - } - - private String getAlipayNo(String payNo) { - // 鏇挎崲鍓�8浣� - String newNo = payNo.substring(9, payNo.length()); - newNo = TimeUtil.getyyyyMMdd(java.lang.System.currentTimeMillis()) + newNo; - // 闅忔満鐢熸垚鏇挎崲鍚�6浣� - newNo = newNo.substring(0, payNo.length() - 6); - newNo += (long) ((Math.random() * 9 + 1) * 100000); - return newNo; - } - - @RequestMapping(value = "getMoneyArrivalImg") - public void getMoneyArrivalImg(String callback, AcceptData acceptData, Long uid, PrintWriter out) { - PreviewInfo previewInfo = previewInfoService.get(uid, PreviewEnum.moneyInfo); - String link = null; - if (previewInfo != null && StringUtil.isNullOrEmpty(previewInfo.getContent())) { - link = previewInfo.getContent(); - } - JSONObject object = new JSONObject(); - 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); - // new Thread(new Runnable() { - // - // @Override - // public void run() { - for (String orderId : list) { - PushContentDTO dto = PushMsgFactory.createInviteOrderStatisticed(Constant.SOURCE_TYPE_TAOBAO, orderId, - BigDecimal.ZERO); - try { - pushService.pushZNX(uid, dto.getTitle(), dto.getContent(), null, null,acceptData.getSystem()); - } catch (NumberFormatException e) { - e.printStackTrace(); - } catch (PushException e) { - e.printStackTrace(); - } - try { - Thread.sleep(100); - } catch (InterruptedException e) { - e.printStackTrace(); - } - } - // } - // }).start(); - - 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; - } -} +package com.yeshi.fanli.controller.client.v2; + +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.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.PayInfo; +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.PayInfoService; +import com.yeshi.fanli.service.inter.user.PreviewInfoService; +import com.yeshi.fanli.service.inter.user.UserInfoService; +import com.yeshi.fanli.util.Constant; +import org.yeshi.utils.MoneyBigDecimalUtil; +import com.yeshi.fanli.util.RedisManager; +import com.yeshi.fanli.util.StringUtil; +import org.yeshi.utils.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; + +import net.sf.json.JSONArray; +import net.sf.json.JSONObject; + +@Controller +@RequestMapping("api/v2/preview") +public class PreviewInfoControllerV2 { + @Resource + private PreviewInfoService previewInfoService; + + @Resource + private UserInfoService userInfoService; + + @Resource + private RedisManager redisManager; + + @Resource + private HongBaoV2CountService hongBaoV2CountService; + + @Resource + private UserMoneyDetailService userMoneyDetailService; + + @Resource + private OrderMoneyDailyCountService orderMoneyDailyCountService; + + @Resource + private CommonOrderService commonOrderService; + + @Resource + private PushService pushService; + + @Resource + private PayInfoService payInfoService; + + /** + * 淇濆瓨璧勯噾淇℃伅 + * + * @param callback + * @param acceptData + * @param uid + * @param vo + * @param out + */ + @RequestMapping(value = "saveMoneyInfo") + public void saveMoneyInfo(String callback, AcceptData acceptData, Long uid, MoneyStatisticVO vo, PrintWriter out) { + if (uid == null) { + JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("鐢ㄦ埛鏈櫥褰�")); + return; + } + try { + previewInfoService.saveMoneyInfo(uid, vo); + JsonUtil.printMode(out, callback, JsonUtil.loadTrueResult("淇濆瓨鎴愬姛")); + } catch (PreviewInfoException e) { + JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult(e.getMsg())); + } + } + + @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())) { + dto = new Gson().fromJson(previewInfo.getContent(), MoneyStatisticVO.class); + } else { + 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; + } + + /** + * 淇濆瓨鎻愮幇璁板綍 + * + * @param callback + * @param acceptData + * @param uid + * @param vo + * @param out + */ + @RequestMapping(value = "saveExtractRecord") + 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, dayTime, money); + JsonUtil.printMode(out, callback, JsonUtil.loadTrueResult("淇濆瓨鎴愬姛")); + } catch (PreviewInfoException e) { + JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult(e.getMsg())); + } + } + + @RequestMapping(value = "getExtractRecord") + public void getExtractRecord(String callback, AcceptData acceptData, Long uid, PrintWriter out) { + List<Extract> list = null; + PreviewInfo previewInfo = previewInfoService.get(uid, PreviewEnum.extractRecord); + if (previewInfo != null && !StringUtil.isNullOrEmpty(previewInfo.getContent())) { + Gson gson = new Gson(); + list = gson.fromJson(previewInfo.getContent(), new TypeToken<ArrayList<Extract>>() { + }.getType()); + } + + if (list == null) + list = new ArrayList<>(); + + JSONArray JSONArray = new JSONArray(); + 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 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(); + } + } + + /** + * 鍒犻櫎鎻愮幇璁板綍 + * + * @param callback + * @param acceptData + * @param uid + * @param vo + * @param out + */ + @RequestMapping(value = "deleteExtractRecord") + public void deleteExtractRecord(String callback, AcceptData acceptData, Long uid, Long id, PrintWriter out) { + if (uid == null || id == null) { + JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("鍙傛暟涓嶅畬鏁�")); + return; + } + previewInfoService.deleteExtractRecord(uid, id); + JsonUtil.printMode(out, callback, JsonUtil.loadTrueResult("鍒犻櫎鎴愬姛")); + } + + /** + * 淇濆瓨鎴戠殑淇℃伅 + * + * @param callback + * @param acceptData + * @param infoVO + * @param file + * @param out + */ + @RequestMapping(value = "saveMineInfo") + 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); + 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("淇濆瓨澶辫触")); + } + } + + @RequestMapping(value = "getMineInfo") + public void getMineInfo(String callback, AcceptData acceptData, Long uid, PrintWriter out) { + PreviewInfo previewInfo = previewInfoService.get(uid, PreviewEnum.mineInfo); + MineInfoVO dto = null; + if (previewInfo != null && !StringUtil.isNullOrEmpty(previewInfo.getContent())) { + dto = new Gson().fromJson(previewInfo.getContent(), MineInfoVO.class); + } + + if (dto == null) + dto = new MineInfoVO(); + JsonUtil.printMode(out, callback, JsonUtil.loadTrueResult(JsonUtil.getSimpleGson().toJson(dto))); + } + + /** + * 鍒拌处棰勮-鐢熶骇鍥剧墖 + * + * @param callback + * @param acceptData + * @param uid + * @param money + * @param time + * @param orderNo + * @param out + */ + @RequestMapping(value = "saveMoneyArrival") + public void saveMoneyArrival(String callback, AcceptData acceptData, Long uid, BigDecimal money, String dayTime, + PrintWriter out) { + try { + // 鏌ヨ鏈�鏂颁竴鏉℃敮浠樺疂璁㈠崟鍙� + PayInfo payInfo = payInfoService.getNearInfo(); + String orderNo = getAlipayNo(payInfo.getOrderId()); + + 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("棰勮澶辫触")); + } + } + + private String getAlipayNo(String payNo) { + // 鏇挎崲鍓�8浣� + String newNo = payNo.substring(9, payNo.length()); + newNo = TimeUtil.getyyyyMMdd(java.lang.System.currentTimeMillis()) + newNo; + // 闅忔満鐢熸垚鏇挎崲鍚�6浣� + newNo = newNo.substring(0, payNo.length() - 6); + newNo += (long) ((Math.random() * 9 + 1) * 100000); + return newNo; + } + + @RequestMapping(value = "getMoneyArrivalImg") + public void getMoneyArrivalImg(String callback, AcceptData acceptData, Long uid, PrintWriter out) { + PreviewInfo previewInfo = previewInfoService.get(uid, PreviewEnum.moneyInfo); + String link = null; + if (previewInfo != null && StringUtil.isNullOrEmpty(previewInfo.getContent())) { + link = previewInfo.getContent(); + } + JSONObject object = new JSONObject(); + 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); + // new Thread(new Runnable() { + // + // @Override + // public void run() { + for (String orderId : list) { + PushContentDTO dto = PushMsgFactory.createInviteOrderStatisticed(Constant.SOURCE_TYPE_TAOBAO, orderId, + BigDecimal.ZERO); + try { + pushService.pushZNX(uid, dto.getTitle(), dto.getContent(), null, null,acceptData.getSystem()); + } catch (NumberFormatException e) { + e.printStackTrace(); + } catch (PushException e) { + e.printStackTrace(); + } + try { + Thread.sleep(100); + } catch (InterruptedException e) { + e.printStackTrace(); + } + } + // } + // }).start(); + + 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