From 8e30aa7c1f0384f09278699318b4902b815b42a7 Mon Sep 17 00:00:00 2001 From: admin <weikou2014> Date: 星期五, 26 四月 2019 18:01:25 +0800 Subject: [PATCH] 维权返利初步修改,拼多多初步增加 --- fanli/src/main/java/com/yeshi/fanli/service/impl/taobao/TaoBaoWeiQuanDrawBackServiceImpl.java | 202 ++++++++++++++++++++++++++++++++++++++++++++++++- 1 files changed, 195 insertions(+), 7 deletions(-) diff --git a/fanli/src/main/java/com/yeshi/fanli/service/impl/taobao/TaoBaoWeiQuanDrawBackServiceImpl.java b/fanli/src/main/java/com/yeshi/fanli/service/impl/taobao/TaoBaoWeiQuanDrawBackServiceImpl.java index 87baa53..1b5f81d 100644 --- a/fanli/src/main/java/com/yeshi/fanli/service/impl/taobao/TaoBaoWeiQuanDrawBackServiceImpl.java +++ b/fanli/src/main/java/com/yeshi/fanli/service/impl/taobao/TaoBaoWeiQuanDrawBackServiceImpl.java @@ -22,6 +22,8 @@ import com.yeshi.fanli.dao.mybatis.taobao.TaoBaoWeiQuanDrawBackMapper; import com.yeshi.fanli.entity.bus.user.HongBaoV2; import com.yeshi.fanli.entity.bus.user.UserInfo; +import com.yeshi.fanli.entity.money.UserMoneyDebt; +import com.yeshi.fanli.entity.money.UserMoneyDebt.UserMoneyDebtTypeEnum; import com.yeshi.fanli.entity.money.UserMoneyDetail; import com.yeshi.fanli.entity.order.CommonOrder; import com.yeshi.fanli.entity.order.HongBaoOrder; @@ -29,15 +31,19 @@ import com.yeshi.fanli.entity.taobao.TaoBaoWeiQuanDrawBack; import com.yeshi.fanli.entity.taobao.TaoBaoWeiQuanOrder; import com.yeshi.fanli.exception.TaoBaoWeiQuanException; +import com.yeshi.fanli.exception.money.UserMoneyDebtException; import com.yeshi.fanli.exception.money.UserMoneyDetailException; import com.yeshi.fanli.log.LogHelper; +import com.yeshi.fanli.service.inter.money.UserMoneyDebtService; import com.yeshi.fanli.service.inter.msg.UserMoneyMsgNotificationService; +import com.yeshi.fanli.service.inter.order.CommonOrderService; import com.yeshi.fanli.service.inter.taobao.TaoBaoWeiQuanDrawBackService; import com.yeshi.fanli.service.inter.taobao.TaoBaoWeiQuanOrderService; import com.yeshi.fanli.service.inter.user.UserNotificationService; import com.yeshi.fanli.util.Constant; import com.yeshi.fanli.util.MoneyBigDecimalUtil; import com.yeshi.fanli.util.StringUtil; +import com.yeshi.fanli.util.TaoBaoConstant; import com.yeshi.fanli.util.factory.UserMoneyDetailFactory; import com.yeshi.fanli.vo.order.CommonOrderVO; @@ -73,10 +79,26 @@ @Resource private UserMoneyMsgNotificationService userMoneyMsgNotificationService; + @Resource + private UserMoneyDebtService userMoneyDebtService; + @Override public void addWeiQuanDrawBack(TaoBaoWeiQuanDrawBack taoBaoWeiQuanDrawBack) { taoBaoWeiQuanDrawBackMapper.selectByOrderItemIdAndUid(taoBaoWeiQuanDrawBack.getOrderItemId(), taoBaoWeiQuanDrawBack.getUser().getId()); + } + + @Transactional + private void addDebt(Long uid, Long hbId, BigDecimal money) throws UserMoneyDebtException { + UserMoneyDebt debt = new UserMoneyDebt(); + debt.setBeiZhu(null); + debt.setCreateTime(new Date()); + debt.setLeftMoney(money); + debt.setOriginMoney(money); + debt.setSourceId(hbId); + debt.setType(UserMoneyDebtTypeEnum.order); + debt.setUid(uid); + userMoneyDebtService.addUserMoneyDebt(debt); } @Transactional @@ -93,8 +115,11 @@ // 璁$畻娣樺疂鑱旂洘杩旂粰骞冲彴鐨勮祫閲� BigDecimal sumFee = new BigDecimal("0"); for (TaoBaoOrder order : orderList) - if (order.getOrderState().equalsIgnoreCase("璁㈠崟缁撶畻")) + if (order.getOrderState().equalsIgnoreCase("璁㈠崟缁撶畻")) { sumFee = sumFee.add(order.geteIncome()); + if (order.getSubsidy() != null) + sumFee = sumFee.add(order.getSubsidy()); + } if (new BigDecimal(0).compareTo(sumFee) == 0) throw new TaoBaoWeiQuanException(TaoBaoWeiQuanException.CODE_NEDD_UPDATE_ORDER, "闇�瑕佹洿鏂拌鍗�"); @@ -157,6 +182,7 @@ BigDecimal fanMoney = new BigDecimal("0"); // 缁熻鐢ㄦ埛鍦ㄨ繖涓崟涓渶瑕佹墸闄ょ殑璧勯噾 TaoBaoWeiQuanDrawBack weiQuanDrawBack = null; + List<TaoBaoWeiQuanDrawBack> newWeiQuanDrawBackList = new ArrayList<>(); for (TaoBaoWeiQuanOrder weiQuanOrder : list) { weiQuanDrawBack = taoBaoWeiQuanDrawBackMapper.selectByOrderItemIdAndUid(weiQuanOrder.getOrderItemId(), uid); @@ -164,7 +190,6 @@ continue; // 閫�娆剧殑璧勯噾 fanMoney = fanMoney.add(weiQuanOrder.getFanMoney()); - // 鎻掑叆璁板綍 weiQuanDrawBack = new TaoBaoWeiQuanDrawBack(); weiQuanDrawBack.setCreateTime(new Date()); // 鏆傛椂璁句负0 @@ -172,14 +197,52 @@ weiQuanDrawBack.setOrderId(weiQuanOrder.getOrderId()); weiQuanDrawBack.setOrderItemId(weiQuanOrder.getOrderItemId()); weiQuanDrawBack.setUser(new UserInfo(uid)); - taoBaoWeiQuanDrawBackMapper.insertSelective(weiQuanDrawBack); + newWeiQuanDrawBackList.add(weiQuanDrawBack); } if (fanMoney.compareTo(new BigDecimal("0")) <= 0) continue; + // 鎻掑叆璁板綍 + for (TaoBaoWeiQuanDrawBack drawBack : newWeiQuanDrawBackList) { + taoBaoWeiQuanDrawBackMapper.insertSelective(drawBack); + } + // 閫�娆鹃噾棰� BigDecimal drawBackMoney = MoneyBigDecimalUtil.div(userGetMoney.multiply(fanMoney), sumFee); + // 璁$畻璧勯噾鏄惁鍏呰冻 + UserInfo user = userInfoMapper.selectByPKey(uid); + if (user != null && user.getMyHongBao().compareTo(drawBackMoney) < 0)// 璧勯噾涓嶈冻 + { + // 娣诲姞鍊哄姟 + for (TaoBaoWeiQuanOrder weiQuanOrder : list) { + TaoBaoOrder taoBaoOrder = taoBaoOrderMapper + .selectTaoBaoOrderByTradeId(weiQuanOrder.getOrderItemId()); + if (taoBaoOrder != null) { + BigDecimal totalFee = taoBaoOrder.geteIncome(); + if (taoBaoOrder.getSubsidy() != null) + totalFee = totalFee.add(taoBaoOrder.getSubsidy()); + // + CommonOrder co = commonOrderMapper.selectBySourceTypeAndTradeId(Constant.SOURCE_TYPE_TAOBAO, + weiQuanOrder.getOrderItemId()); + if (co != null) { + HongBaoOrder hongBaoOrder = hongBaoOrderMapper.selectByCommonOrderId(co.getId()); + if (hongBaoOrder != null && hongBaoOrder.getHongBaoV2() != null) { + BigDecimal drawback = MoneyBigDecimalUtil.div( + hongBaoOrder.getHongBaoV2().getMoney().multiply(weiQuanOrder.getFanMoney()), + totalFee); + try { + addDebt(uid, hongBaoOrder.getHongBaoV2().getId(), drawback); + } catch (UserMoneyDebtException e) { + throw new TaoBaoWeiQuanException(101, "璧勯噾鍊熻捶寮傚父"); + } + } + } + } + } + continue; + } + userInfoMapper.subHongBaoByUid(uid, drawBackMoney); // 鏂扮増璧勯噾璁板綍 try { @@ -216,8 +279,11 @@ // 璁$畻娣樺疂鑱旂洘杩旂粰骞冲彴鐨勮祫閲� BigDecimal sumFee = new BigDecimal("0"); for (TaoBaoOrder order : orderList) - if (order.getOrderState().equalsIgnoreCase("璁㈠崟缁撶畻")) + if (order.getOrderState().equalsIgnoreCase("璁㈠崟缁撶畻")) { sumFee = sumFee.add(order.geteIncome()); + if (order.getSubsidy() != null) + sumFee = sumFee.add(order.getSubsidy()); + } // 鑾峰彇鍜岃璁㈠崟鍙锋湁鍏宠仈鐨勭敤鎴� // 鑾峰彇涓荤孩鍖�(鍚屼竴涓鍗曞彿鐨勫崟鍙細瀵瑰簲鍚屼竴涓敤鎴�) @@ -284,6 +350,8 @@ BigDecimal fanMoney = new BigDecimal("0"); // 缁熻鐢ㄦ埛鍦ㄨ繖涓崟涓渶瑕佹墸闄ょ殑璧勯噾 TaoBaoWeiQuanDrawBack weiQuanDrawBack = null; + + List<TaoBaoWeiQuanDrawBack> newWeiQuanDrawBackList = new ArrayList<>(); for (TaoBaoWeiQuanOrder weiQuanOrder : list) { weiQuanDrawBack = taoBaoWeiQuanDrawBackMapper.selectByOrderItemIdAndUid(weiQuanOrder.getOrderItemId(), uid); @@ -299,7 +367,7 @@ weiQuanDrawBack.setOrderId(weiQuanOrder.getOrderId()); weiQuanDrawBack.setOrderItemId(weiQuanOrder.getOrderItemId()); weiQuanDrawBack.setUser(new UserInfo(uid)); - taoBaoWeiQuanDrawBackMapper.insertSelective(weiQuanDrawBack); + newWeiQuanDrawBackList.add(weiQuanDrawBack); } if (fanMoney.compareTo(new BigDecimal("0")) <= 0) @@ -307,6 +375,52 @@ // 閫�娆鹃噾棰� BigDecimal drawBackMoney = MoneyBigDecimalUtil.div(userGetMoney.multiply(fanMoney), sumFee); + + for (TaoBaoWeiQuanDrawBack drawBack : newWeiQuanDrawBackList) + taoBaoWeiQuanDrawBackMapper.insertSelective(drawBack); + // 璁$畻璧勯噾鏄惁鍏呰冻 + UserInfo user = userInfoMapper.selectByPKey(uid); + if (user != null && user.getMyHongBao().compareTo(drawBackMoney) < 0)// 璧勯噾涓嶈冻 + { + // 娣诲姞鍊哄姟 + for (TaoBaoWeiQuanOrder weiQuanOrder : list) { + TaoBaoOrder taoBaoOrder = taoBaoOrderMapper + .selectTaoBaoOrderByTradeId(weiQuanOrder.getOrderItemId()); + if (taoBaoOrder != null) { + BigDecimal totalFee = taoBaoOrder.geteIncome(); + if (taoBaoOrder.getSubsidy() != null) + totalFee = totalFee.add(taoBaoOrder.getSubsidy()); + // + CommonOrder co = commonOrderMapper.selectBySourceTypeAndTradeId(Constant.SOURCE_TYPE_TAOBAO, + weiQuanOrder.getOrderItemId()); + if (co != null) { + HongBaoOrder hongBaoOrder = hongBaoOrderMapper.selectByCommonOrderId(co.getId()); + if (hongBaoOrder != null && hongBaoOrder.getHongBaoV2() != null) { + List<HongBaoV2> hongBaoList = hongBaoV2Mapper + .listChildrenById(hongBaoOrder.getHongBaoV2().getId()); + for (int i = 0; i < hongBaoList.size(); i++) { + if (hongBaoList.get(i).getUserInfo().getId().longValue() != uid) { + hongBaoList.remove(i); + i--; + } + } + + for (HongBaoV2 hb : hongBaoList) { + BigDecimal drawback = MoneyBigDecimalUtil + .div(hb.getMoney().multiply(weiQuanOrder.getFanMoney()), totalFee); + try { + addDebt(uid, hb.getId(), drawback); + } catch (UserMoneyDebtException e) { + throw new TaoBaoWeiQuanException(101, "璧勯噾鍊熻捶寮傚父"); + } + } + } + } + } + } + continue; + } + userInfoMapper.subHongBaoByUid(uid, drawBackMoney); // 鏂扮増璧勯噾璁板綍 try { @@ -343,8 +457,11 @@ // 璁$畻娣樺疂鑱旂洘杩旂粰骞冲彴鐨勮祫閲� BigDecimal sumFee = new BigDecimal("0"); for (TaoBaoOrder order : orderList) - if (order.getOrderState().equalsIgnoreCase("璁㈠崟缁撶畻")) + if (order.getOrderState().equalsIgnoreCase("璁㈠崟缁撶畻")) { sumFee = sumFee.add(order.geteIncome()); + if (order.getSubsidy() != null) + sumFee = sumFee.add(order.getSubsidy()); + } // 鑾峰彇鍜岃璁㈠崟鍙锋湁鍏宠仈鐨勭敤鎴� // 鑾峰彇涓荤孩鍖�(鍚屼竴涓鍗曞彿鐨勫崟鍙細瀵瑰簲鍚屼竴涓敤鎴�) List<CommonOrderVO> typeList = new ArrayList<>(); @@ -412,6 +529,7 @@ BigDecimal fanMoney = new BigDecimal("0"); // 缁熻鐢ㄦ埛鍦ㄨ繖涓崟涓渶瑕佹墸闄ょ殑璧勯噾 TaoBaoWeiQuanDrawBack weiQuanDrawBack = null; + List<TaoBaoWeiQuanDrawBack> newWeiQuanDrawBackList = new ArrayList<>(); for (TaoBaoWeiQuanOrder weiQuanOrder : list) { weiQuanDrawBack = taoBaoWeiQuanDrawBackMapper.selectByOrderItemIdAndUid(weiQuanOrder.getOrderItemId(), uid); @@ -427,14 +545,61 @@ weiQuanDrawBack.setOrderId(weiQuanOrder.getOrderId()); weiQuanDrawBack.setOrderItemId(weiQuanOrder.getOrderItemId()); weiQuanDrawBack.setUser(new UserInfo(uid)); - taoBaoWeiQuanDrawBackMapper.insertSelective(weiQuanDrawBack); + newWeiQuanDrawBackList.add(weiQuanDrawBack); } if (fanMoney.compareTo(new BigDecimal("0")) <= 0) continue; + for (TaoBaoWeiQuanDrawBack drawBack : newWeiQuanDrawBackList) + taoBaoWeiQuanDrawBackMapper.insertSelective(drawBack); + // 閫�娆鹃噾棰� BigDecimal drawBackMoney = MoneyBigDecimalUtil.div(userGetMoney.multiply(fanMoney), sumFee); + + // 璁$畻璧勯噾鏄惁鍏呰冻 + UserInfo user = userInfoMapper.selectByPKey(uid); + if (user != null && user.getMyHongBao().compareTo(drawBackMoney) < 0)// 璧勯噾涓嶈冻 + { + // 娣诲姞鍊哄姟 + for (TaoBaoWeiQuanOrder weiQuanOrder : list) { + TaoBaoOrder taoBaoOrder = taoBaoOrderMapper + .selectTaoBaoOrderByTradeId(weiQuanOrder.getOrderItemId()); + if (taoBaoOrder != null) { + BigDecimal totalFee = taoBaoOrder.geteIncome(); + if (taoBaoOrder.getSubsidy() != null) + totalFee = totalFee.add(taoBaoOrder.getSubsidy()); + // + CommonOrder co = commonOrderMapper.selectBySourceTypeAndTradeId(Constant.SOURCE_TYPE_TAOBAO, + weiQuanOrder.getOrderItemId()); + if (co != null) { + HongBaoOrder hongBaoOrder = hongBaoOrderMapper.selectByCommonOrderId(co.getId()); + if (hongBaoOrder != null && hongBaoOrder.getHongBaoV2() != null) { + List<HongBaoV2> hongBaoList = hongBaoV2Mapper + .listChildrenById(hongBaoOrder.getHongBaoV2().getId()); + for (int i = 0; i < hongBaoList.size(); i++) { + if (hongBaoList.get(i).getUserInfo().getId().longValue() != uid) { + hongBaoList.remove(i); + i--; + } + } + + for (HongBaoV2 hb : hongBaoList) { + BigDecimal drawback = MoneyBigDecimalUtil + .div(hb.getMoney().multiply(weiQuanOrder.getFanMoney()), totalFee); + try { + addDebt(uid, hb.getId(), drawback); + } catch (UserMoneyDebtException e) { + throw new TaoBaoWeiQuanException(101, "璧勯噾鍊熻捶寮傚父"); + } + } + } + } + } + } + continue; + } + userInfoMapper.subHongBaoByUid(uid, drawBackMoney); // 鏂扮増璧勯噾璁板綍 @@ -459,4 +624,27 @@ } + @Override + public TaoBaoWeiQuanDrawBack selectByOrderItemId(String orderItemId) { + List<TaoBaoWeiQuanDrawBack> list = taoBaoWeiQuanDrawBackMapper.selectByOrderItemId(orderItemId); + if (list != null && list.size() > 0) + return list.get(0); + else + return null; + } + + @Override + public TaoBaoWeiQuanDrawBack selectByHongBaoId(Long hbId) { + Long uid = null; + HongBaoV2 hb = hongBaoV2Mapper.selectByPrimaryKey(hbId); + uid = hb.getUserInfo().getId(); + if (hb.getParent() != null) + hb = hb.getParent(); + HongBaoOrder hbo = hongBaoOrderMapper.selectByHongBaoId(hb.getId()); + if (hbo != null && hbo.getCommonOrder() != null) { + return taoBaoWeiQuanDrawBackMapper.selectByOrderItemIdAndUid(hbo.getCommonOrder().getTradeId(), uid); + } + return null; + } + } -- Gitblit v1.8.0