From 0ec22dcf4fd9c4496e6f681e7fab89f56c6e4e8a Mon Sep 17 00:00:00 2001 From: yujian <yujian@163.com> Date: 星期四, 02 四月 2020 14:45:20 +0800 Subject: [PATCH] vip 消息 --- fanli/src/main/java/com/yeshi/fanli/service/impl/order/OrderMoneySettleServiceImpl.java | 234 ++++++++++++++++++++++++++++++++++++++++++---------------- 1 files changed, 169 insertions(+), 65 deletions(-) diff --git a/fanli/src/main/java/com/yeshi/fanli/service/impl/order/OrderMoneySettleServiceImpl.java b/fanli/src/main/java/com/yeshi/fanli/service/impl/order/OrderMoneySettleServiceImpl.java index 538ba34..ce58095 100644 --- a/fanli/src/main/java/com/yeshi/fanli/service/impl/order/OrderMoneySettleServiceImpl.java +++ b/fanli/src/main/java/com/yeshi/fanli/service/impl/order/OrderMoneySettleServiceImpl.java @@ -28,7 +28,8 @@ import com.yeshi.fanli.dao.mybatis.order.HongBaoOrderMapper; import com.yeshi.fanli.dao.mybatis.taobao.TaoBaoWeiQuanOrderMapper; import com.yeshi.fanli.dto.HongBao; -import com.yeshi.fanli.dto.order.OrderMoneyRecievedMQMsgDTO; +import com.yeshi.fanli.dto.mq.order.OrderTopicTagEnum; +import com.yeshi.fanli.dto.mq.order.body.OrderMoneyRecievedMQMsg; import com.yeshi.fanli.entity.bus.user.HongBaoV2; import com.yeshi.fanli.entity.bus.user.UserInfo; import com.yeshi.fanli.entity.money.UserMoneyDetail; @@ -36,22 +37,25 @@ import com.yeshi.fanli.entity.order.HongBaoOrder; import com.yeshi.fanli.entity.order.HongBaoV2SettleTemp; import com.yeshi.fanli.entity.order.InviteOrderSubsidy; -import com.yeshi.fanli.entity.taobao.TaoBaoOrder; +import com.yeshi.fanli.entity.order.OrderTeamReward; import com.yeshi.fanli.entity.taobao.TaoBaoWeiQuanOrder; import com.yeshi.fanli.exception.money.InviteOrderSubsidyDebtException; import com.yeshi.fanli.exception.money.OrderMoneySettleException; +import com.yeshi.fanli.exception.money.OrderTeamRewardDebtException; import com.yeshi.fanli.exception.money.UserMoneyDetailException; import com.yeshi.fanli.exception.order.TaoBaoWeiQuanException; import com.yeshi.fanli.log.LogHelper; import com.yeshi.fanli.service.inter.hongbao.AccountDetailsHongBaoMapService; import com.yeshi.fanli.service.inter.hongbao.HongBaoV2SettleTempService; import com.yeshi.fanli.service.inter.money.InviteOrderSubsidyDebtService; +import com.yeshi.fanli.service.inter.money.OrderTeamRewardDebtService; import com.yeshi.fanli.service.inter.money.UserMoneyService; import com.yeshi.fanli.service.inter.money.msg.UserMoneyMsgNotificationService; import com.yeshi.fanli.service.inter.money.tb.TaoBaoWeiQuanDrawBackService; import com.yeshi.fanli.service.inter.order.CommonOrderService; import com.yeshi.fanli.service.inter.order.InviteOrderSubsidyService; import com.yeshi.fanli.service.inter.order.OrderMoneySettleService; +import com.yeshi.fanli.service.inter.order.OrderTeamRewardService; import com.yeshi.fanli.service.inter.order.tb.TaoBaoOrderService; import com.yeshi.fanli.service.inter.user.UserSystemCouponService; import com.yeshi.fanli.util.Constant; @@ -59,8 +63,8 @@ import com.yeshi.fanli.util.TimeUtil; import com.yeshi.fanli.util.cmq.HongBaoRecieveCMQManager; import com.yeshi.fanli.util.factory.UserMoneyDetailFactory; +import com.yeshi.fanli.util.rocketmq.MQMsgBodyFactory; import com.yeshi.fanli.util.rocketmq.MQTopicName; -import com.yeshi.fanli.util.taobao.TaoKeOrderApiUtil; @Service public class OrderMoneySettleServiceImpl implements OrderMoneySettleService { @@ -112,7 +116,22 @@ @Resource private HongBaoV2SettleTempService hongBaoV2SettleTempService; - @Transactional + @Resource + private OrderTeamRewardService orderTeamRewardService; + + @Resource + private OrderTeamRewardDebtService orderTeamRewardDebtService; + + // 涓嬬骇琚皝绂侊紝绾㈠寘澶辨晥 + private void invalidHongBaoForbidden(Long id) { + HongBaoV2 updateHongBaoV2 = new HongBaoV2(id); + updateHongBaoV2.setState(HongBaoV2.STATE_SHIXIAO); + updateHongBaoV2.setBeizhu("灏佺澶辨晥"); + updateHongBaoV2.setUpdateTime(new Date()); + hongBaoV2Mapper.updateByPrimaryKeySelective(updateHongBaoV2); + } + + @Transactional(rollbackFor = Exception.class) @Override public void inviteSettleTB(Long uid) throws OrderMoneySettleException { // 鏌ヨUID鐨勪竴浜岀骇閭�璇疯禋 @@ -143,6 +162,7 @@ // 涓婄骇鐢ㄦ埛涓嶆槸姝e父鐢ㄦ埛锛岃鍗曞潎涓嶈兘鍒拌处 UserInfo userInfo = userInfoMapper.selectAvailableByPrimaryKey(co.getUserInfo().getId()); if (userInfo == null || userInfo.getState() != UserInfo.STATE_NORMAL) { + invalidHongBaoForbidden(item.getId()); hongBaoList.remove(i); i--; } @@ -152,9 +172,10 @@ } // 閭�璇疯禋鍒拌处浜嬪姟娑堟伅 - OrderMoneyRecievedMQMsgDTO mqMsg = new OrderMoneyRecievedMQMsgDTO(OrderMoneyRecievedMQMsgDTO.TYPE_INVITE, uid, - sourceType, null, null, new Date()); - Message msg = new Message(MQTopicName.TOPIC_FANLI.name(), "actual", new Gson().toJson(mqMsg).getBytes()); + OrderMoneyRecievedMQMsg mqMsg = new OrderMoneyRecievedMQMsg(OrderMoneyRecievedMQMsg.TYPE_INVITE, uid, + sourceType, null, null, new Date(), 0); + + Message msg = MQMsgBodyFactory.create(MQTopicName.TOPIC_ORDER, OrderTopicTagEnum.orderFanLiActual, mqMsg); String taskKey = getTaskKey(uid); msg.setKey(taskKey); // 娣诲姞浜嬪姟娑堟伅 @@ -173,9 +194,10 @@ } catch (Exception e) { LogHelper.mqError(e.getMessage(), msg.getTopic(), msg.getTag(), new Gson().toJson(mqMsg)); } + System.out.println(new Gson().toJson(mqMsg)); } - @Transactional + @Transactional(rollbackFor = Exception.class) @Override public void inviteSettleJD(Long uid) throws OrderMoneySettleException { // 鏌ヨUID鐨勪竴浜岀骇閭�璇疯禋 @@ -206,6 +228,7 @@ // 涓婄骇鐢ㄦ埛涓嶆槸姝e父鐢ㄦ埛锛岃鍗曞潎涓嶈兘鍒拌处 UserInfo userInfo = userInfoMapper.selectAvailableByPrimaryKey(co.getUserInfo().getId()); if (userInfo == null || userInfo.getState() != UserInfo.STATE_NORMAL) { + invalidHongBaoForbidden(item.getId()); hongBaoList.remove(i); i--; } @@ -215,9 +238,9 @@ } // 閭�璇疯禋鍒拌处浜嬪姟娑堟伅 - OrderMoneyRecievedMQMsgDTO mqMsg = new OrderMoneyRecievedMQMsgDTO(OrderMoneyRecievedMQMsgDTO.TYPE_INVITE, uid, - sourceType, null, null, new Date()); - Message msg = new Message(MQTopicName.TOPIC_FANLI.name(), "actual", new Gson().toJson(mqMsg).getBytes()); + OrderMoneyRecievedMQMsg mqMsg = new OrderMoneyRecievedMQMsg(OrderMoneyRecievedMQMsg.TYPE_INVITE, uid, + sourceType, null, null, new Date(), 0); + Message msg = MQMsgBodyFactory.create(MQTopicName.TOPIC_ORDER, OrderTopicTagEnum.orderFanLiActual, mqMsg); String taskKey = getTaskKey(uid); msg.setKey(taskKey); // 娣诲姞浜嬪姟娑堟伅 @@ -234,7 +257,7 @@ } } - @Transactional + @Transactional(rollbackFor = Exception.class) @Override public void inviteSettlePDD(Long uid) throws OrderMoneySettleException { // 鏌ヨUID鐨勪竴浜岀骇閭�璇疯禋 @@ -265,6 +288,7 @@ // 涓婄骇鐢ㄦ埛涓嶆槸姝e父鐢ㄦ埛锛岃鍗曞潎涓嶈兘鍒拌处 UserInfo userInfo = userInfoMapper.selectAvailableByPrimaryKey(co.getUserInfo().getId()); if (userInfo == null || userInfo.getState() != UserInfo.STATE_NORMAL) { + invalidHongBaoForbidden(item.getId()); hongBaoList.remove(i); i--; } @@ -274,9 +298,9 @@ } // 閭�璇疯禋鍒拌处浜嬪姟娑堟伅 - OrderMoneyRecievedMQMsgDTO mqMsg = new OrderMoneyRecievedMQMsgDTO(OrderMoneyRecievedMQMsgDTO.TYPE_INVITE, uid, - sourceType, null, null, new Date()); - Message msg = new Message(MQTopicName.TOPIC_FANLI.name(), "actual", new Gson().toJson(mqMsg).getBytes()); + OrderMoneyRecievedMQMsg mqMsg = new OrderMoneyRecievedMQMsg(OrderMoneyRecievedMQMsg.TYPE_INVITE, uid, + sourceType, null, null, new Date(), 0); + Message msg = MQMsgBodyFactory.create(MQTopicName.TOPIC_ORDER, OrderTopicTagEnum.orderFanLiActual, mqMsg); String taskKey = getTaskKey(uid); msg.setKey(taskKey); // 娣诲姞浜嬪姟娑堟伅 @@ -293,7 +317,7 @@ } } - @Transactional + @Transactional(rollbackFor = Exception.class) @Override public void shareSettleTB(Long uid) throws OrderMoneySettleException { /** @@ -315,9 +339,9 @@ hongBaoList.addAll(tempHongBaoList); } - OrderMoneyRecievedMQMsgDTO mqMsg = new OrderMoneyRecievedMQMsgDTO(OrderMoneyRecievedMQMsgDTO.TYPE_SHARE, uid, - sourceType, null, null, new Date()); - Message msg = new Message(MQTopicName.TOPIC_FANLI.name(), "actual", new Gson().toJson(mqMsg).getBytes()); + OrderMoneyRecievedMQMsg mqMsg = new OrderMoneyRecievedMQMsg(OrderMoneyRecievedMQMsg.TYPE_SHARE, uid, sourceType, + null, null, new Date(), 0); + Message msg = MQMsgBodyFactory.create(MQTopicName.TOPIC_ORDER, OrderTopicTagEnum.orderFanLiActual, mqMsg); String taskKey = getTaskKey(uid); msg.setKey(taskKey); // 娣诲姞浜嬪姟娑堟伅 @@ -338,7 +362,7 @@ } } - @Transactional + @Transactional(rollbackFor = Exception.class) @Override public void shareSettleJD(Long uid) throws OrderMoneySettleException { /** @@ -360,9 +384,9 @@ hongBaoList.addAll(tempHongBaoList); } - OrderMoneyRecievedMQMsgDTO mqMsg = new OrderMoneyRecievedMQMsgDTO(OrderMoneyRecievedMQMsgDTO.TYPE_SHARE, uid, - sourceType, null, null, new Date()); - Message msg = new Message(MQTopicName.TOPIC_FANLI.name(), "actual", new Gson().toJson(mqMsg).getBytes()); + OrderMoneyRecievedMQMsg mqMsg = new OrderMoneyRecievedMQMsg(OrderMoneyRecievedMQMsg.TYPE_SHARE, uid, sourceType, + null, null, new Date(), 0); + Message msg = MQMsgBodyFactory.create(MQTopicName.TOPIC_ORDER, OrderTopicTagEnum.orderFanLiActual, mqMsg); String taskKey = getTaskKey(uid); msg.setKey(taskKey); // 娣诲姞浜嬪姟娑堟伅 @@ -379,7 +403,7 @@ } } - @Transactional + @Transactional(rollbackFor = Exception.class) @Override public void shareSettlePDD(Long uid) throws OrderMoneySettleException { /** @@ -401,9 +425,9 @@ hongBaoList.addAll(tempHongBaoList); } - OrderMoneyRecievedMQMsgDTO mqMsg = new OrderMoneyRecievedMQMsgDTO(OrderMoneyRecievedMQMsgDTO.TYPE_SHARE, uid, - sourceType, null, null, new Date()); - Message msg = new Message(MQTopicName.TOPIC_FANLI.name(), "actual", new Gson().toJson(mqMsg).getBytes()); + OrderMoneyRecievedMQMsg mqMsg = new OrderMoneyRecievedMQMsg(OrderMoneyRecievedMQMsg.TYPE_SHARE, uid, sourceType, + null, null, new Date(), 0); + Message msg = MQMsgBodyFactory.create(MQTopicName.TOPIC_ORDER, OrderTopicTagEnum.orderFanLiActual, mqMsg); String taskKey = getTaskKey(uid); msg.setKey(taskKey); // 娣诲姞浜嬪姟娑堟伅 @@ -420,7 +444,7 @@ } } - @Transactional + @Transactional(rollbackFor = Exception.class) @Override public void ziGouSettle(String orderId, int sourceType, String taskKey) throws OrderMoneySettleException { // 鏌ヨ鍚屼竴璁㈠崟鍙风殑绾㈠寘 @@ -463,6 +487,25 @@ userHongBao.put(uid, new ArrayList<>()); userHongBao.get(uid).add(hb); } + } + } + + // 鑾峰彇缁存潈璧勯噾 + if (sourceType == Constant.SOURCE_TYPE_TAOBAO) { + try { + Map<Long, BigDecimal> userSubMoneyMap = taoBaoWeiQuanDrawBackService.doWeiQuanFanli(orderId, false); + if (userSubMoneyMap != null) { + for (Iterator<Long> its = userMoney.keySet().iterator(); its.hasNext();) { + Long uid = its.next(); + if (userSubMoneyMap.get(uid) != null) { + // 鍑忓幓缁存潈璧勯噾 + userMoney.put(uid, userMoney.get(uid).subtract(userSubMoneyMap.get(uid))); + } + } + } + } catch (Exception e) { + LogHelper.errorDetailInfo(e); + throw new OrderMoneySettleException(2, "缁存潈璁㈠崟鍑洪敊"); } } @@ -519,31 +562,6 @@ e.printStackTrace(); } - // 缁存潈鎵f锛�2018-08-05鍚庡紑濮嬪疄琛岋級 - - try { - if (sourceType == Constant.SOURCE_TYPE_TAOBAO) - taoBaoWeiQuanDrawBackService.doWeiQuanFanli(orderId); - } catch (TaoBaoWeiQuanException e) { - if (e.getCode() == TaoBaoWeiQuanException.CODE_NEDD_UPDATE_ORDER) { - List<TaoBaoOrder> olist = taoBaoOrderService.getTaoBaoOrderByOrderId(orderId); - if (olist != null && olist.size() > 0) { - long time = TimeUtil.convertToTimeTemp(olist.get(0).getCreateTime(), "yyyy-MM-dd HH:mm:ss"); - olist = TaoKeOrderApiUtil.getTaoBaoCommonOrderList(time, time + 1000 * 2L, 1); - if (olist != null && olist.size() > 0) { - for (int i = 0; i < olist.size(); i++) { - if (!olist.get(i).getOrderId().equalsIgnoreCase(orderId)) {// 鍒犻櫎鏃犲叧璁㈠崟 - olist.remove(i); - i--; - } - } - taoBaoOrderService.addTaoBaoOrderList(olist); - } - } - } else - throw new OrderMoneySettleException(e.getCode(), "缁存潈澶勭悊鍑洪敊:" + e.getMsg()); - } - // 娣诲姞缁撶畻鏄犲皠 } @@ -572,7 +590,7 @@ return hongBao; } - @Transactional + @Transactional(rollbackFor = Exception.class) private void fanliInviteTB(List<HongBaoV2> hongBaoList, Long uid, String key) throws TaoBaoWeiQuanException { List<Long> hbIdList = new ArrayList<>(); BigDecimal invitemoney = new BigDecimal(0); @@ -625,9 +643,9 @@ Date minDate = new Date(TimeUtil .convertToTimeTemp(ca.get(Calendar.YEAR) + "-" + (ca.get(Calendar.MONTH) + 1), "yyyy-M")); long validCount = hongBaoV2Mapper.countInviteOrderCountByUidAndSettleTime(uid, CommonOrder.STATE_JS, - minDate, maxDate); + minDate, maxDate, Constant.SOURCE_TYPE_TAOBAO); long weiQuanCount = hongBaoV2Mapper.countInviteOrderCountByUidAndSettleTime(uid, CommonOrder.STATE_WQ, - minDate, maxDate); + minDate, maxDate, Constant.SOURCE_TYPE_TAOBAO); UserMoneyDetail userMoneyDetail = UserMoneyDetailFactory.createInvite(uid, Constant.SOURCE_TYPE_TAOBAO, (int) validCount, (int) weiQuanCount, invitemoney, new Date()); @@ -711,9 +729,9 @@ Date minDate = new Date(TimeUtil .convertToTimeTemp(ca.get(Calendar.YEAR) + "-" + (ca.get(Calendar.MONTH) + 1), "yyyy-M")); long validCount = hongBaoV2Mapper.countInviteOrderCountByUidAndSettleTime(uid, CommonOrder.STATE_JS, - minDate, maxDate); + minDate, maxDate, sourceType); long weiQuanCount = hongBaoV2Mapper.countInviteOrderCountByUidAndSettleTime(uid, CommonOrder.STATE_WQ, - minDate, maxDate); + minDate, maxDate, sourceType); UserMoneyDetail userMoneyDetail = UserMoneyDetailFactory.createInvite(uid, sourceType, (int) validCount, (int) weiQuanCount, invitemoney, new Date()); @@ -809,9 +827,9 @@ Date minDate = new Date(TimeUtil .convertToTimeTemp(ca.get(Calendar.YEAR) + "-" + (ca.get(Calendar.MONTH) + 1), "yyyy-M")); long validCount = hongBaoV2Mapper.countShareOrderCountByUidAndSettleTime(uid, CommonOrder.STATE_JS, - minDate, maxDate); + minDate, maxDate, Constant.SOURCE_TYPE_TAOBAO); long weiQuanCount = hongBaoV2Mapper.countShareOrderCountByUidAndSettleTime(uid, CommonOrder.STATE_WQ, - minDate, maxDate); + minDate, maxDate, Constant.SOURCE_TYPE_TAOBAO); UserMoneyDetail userMoneyDetail = UserMoneyDetailFactory.createShare(uid, Constant.SOURCE_TYPE_TAOBAO, (int) validCount, (int) weiQuanCount, sharemoney, new Date()); @@ -907,12 +925,12 @@ Date minDate = new Date(TimeUtil .convertToTimeTemp(ca.get(Calendar.YEAR) + "-" + (ca.get(Calendar.MONTH) + 1), "yyyy-M")); long validCount = hongBaoV2Mapper.countShareOrderCountByUidAndSettleTime(uid, CommonOrder.STATE_JS, - minDate, maxDate); + minDate, maxDate, sourceType); long weiQuanCount = hongBaoV2Mapper.countShareOrderCountByUidAndSettleTime(uid, CommonOrder.STATE_WQ, - minDate, maxDate); + minDate, maxDate, sourceType); - UserMoneyDetail userMoneyDetail = UserMoneyDetailFactory.createShare(uid, Constant.SOURCE_TYPE_TAOBAO, - (int) validCount, (int) weiQuanCount, sharemoney, new Date()); + UserMoneyDetail userMoneyDetail = UserMoneyDetailFactory.createShare(uid, sourceType, (int) validCount, + (int) weiQuanCount, sharemoney, new Date()); // 娣诲姞璧勯噾 userMoneyService.addUserMoney(uid, sharemoney, userMoneyDetail); @@ -952,7 +970,7 @@ * @param orderId * @param sourceType */ - @Transactional + @Transactional(rollbackFor = Exception.class) @Override public void inviteSubsidySettle(Long uid, String taskKey) throws OrderMoneySettleException { // 鏌ヨkey @@ -1054,4 +1072,90 @@ } return debtMoney; } + + private BigDecimal kouKuanReward(List<OrderTeamReward> rewardList, BigDecimal debtMoney) { + BigDecimal average = debtMoney.divide(new BigDecimal(rewardList.size()), 2, RoundingMode.UP); + for (int i = 0; i < rewardList.size(); i++) { + OrderTeamReward sidy = rewardList.get(i); + BigDecimal subMoney = null; + if (average.compareTo(sidy.getMoney()) >= 0) { + subMoney = sidy.getMoney(); + } else { + subMoney = average; + } + if (subMoney.compareTo(debtMoney) > 0) + subMoney = debtMoney; + debtMoney = debtMoney.subtract(subMoney); + sidy.setMoney(sidy.getMoney().subtract(subMoney)); + + if (sidy.getMoney().compareTo(new BigDecimal(0)) == 0) { + rewardList.remove(i); + i--; + } + } + return debtMoney; + } + + @Transactional(rollbackFor = Exception.class) + @Override + public void orderTeamRewardSettle(Long uid) throws OrderMoneySettleException { + long count = orderTeamRewardService.countCanSettle(uid); + if (count <= 0) { + return; + } + int pageSize = 2000; + int page = (int) (count % pageSize == 0 ? count / pageSize : count / pageSize + 1); + // 鏌ヨ鍑洪渶瑕佸埌璐︾殑濂栧姳 + List<OrderTeamReward> totalList = new ArrayList<>(); + for (int i = 0; i < page; i++) { + List<OrderTeamReward> list = orderTeamRewardService.listCanSettle(uid, i + 1, pageSize); + if (list != null && list.size() > 0) + totalList.addAll(list); + } + + if (totalList.size() > 0) { + BigDecimal debtMoney = orderTeamRewardDebtService.getTotalDebtMoney(uid); + BigDecimal originalDebtMoney = new BigDecimal(debtMoney.toString());// 鎬荤殑娆犳 + List<OrderTeamReward> copyRewardList = new ArrayList<>(); + copyRewardList.addAll(totalList); + while (debtMoney.compareTo(new BigDecimal(0)) > 0 && copyRewardList.size() > 0) {// 鏈夋瑺娆撅紝杩樻湁杩樼殑 + debtMoney = kouKuanReward(copyRewardList, debtMoney); + } + // 鍋胯繕娆犳閲戦 + BigDecimal repayMoney = originalDebtMoney.subtract(debtMoney); + BigDecimal bannce = null; + if (repayMoney.compareTo(new BigDecimal(0)) > 0) { + try { + bannce = orderTeamRewardDebtService.repayDebtByUid(uid, repayMoney); + // 鍓╀綑鐨勮ˉ璐撮噾棰� + } catch (OrderTeamRewardDebtException e) { + throw new OrderMoneySettleException(2, "杩樻寮傚父"); + } + } + if (bannce != null && bannce.compareTo(new BigDecimal(0)) > 0) { + // 濡傛灉鏈夎繕鍓╀笅鐨勯挶灏卞姞鍒扮涓�涓笂闈� + totalList.get(0).setMoney(totalList.get(0).getMoney().add(bannce)); + } + + BigDecimal totalMoney = new BigDecimal(0); + for (OrderTeamReward reward : totalList) { + orderTeamRewardService.settleById(reward.getId(), reward.getMoney()); + totalMoney = totalMoney.add(reward.getMoney()); + } + + // 瀹為檯鍒拌处濂栧姳 + UserMoneyDetail userMoneyDetail = null; + try { + userMoneyDetail = UserMoneyDetailFactory.createOrderTeamReward(uid, totalMoney, new Date()); + } catch (UserMoneyDetailException e) { + throw new OrderMoneySettleException(1, "璐︽埛鏄庣粏鏋勫缓鍑洪敊"); + } + // 娣诲姞璧勯噾 + userMoneyService.addUserMoney(uid, totalMoney, userMoneyDetail); + // 娣诲姞娑堟伅 + userMoneyMsgNotificationService.orderTeamReward(uid, new Date(), "绯荤粺鑷姩涓嬪彂", totalMoney, + userInfoMapper.selectAvailableByPrimaryKey(uid).getMyHongBao()); + } + + } } -- Gitblit v1.8.0