From bf5c02aaecb3f7a42daa4fa356c62a2e6bca0db5 Mon Sep 17 00:00:00 2001 From: yujian <yujian@123.com> Date: 星期一, 28 十月 2019 09:55:59 +0800 Subject: [PATCH] Merge branch 'div' of ssh://193.112.35.168:29418/fanli-server into div --- fanli/src/main/java/com/yeshi/fanli/service/impl/money/tb/TaoBaoWeiQuanDrawBackServiceImpl.java | 145 +++++++++++++++++++++++++++--------------------- 1 files changed, 82 insertions(+), 63 deletions(-) diff --git a/fanli/src/main/java/com/yeshi/fanli/service/impl/money/tb/TaoBaoWeiQuanDrawBackServiceImpl.java b/fanli/src/main/java/com/yeshi/fanli/service/impl/money/tb/TaoBaoWeiQuanDrawBackServiceImpl.java index f71c207..7261dbb 100644 --- a/fanli/src/main/java/com/yeshi/fanli/service/impl/money/tb/TaoBaoWeiQuanDrawBackServiceImpl.java +++ b/fanli/src/main/java/com/yeshi/fanli/service/impl/money/tb/TaoBaoWeiQuanDrawBackServiceImpl.java @@ -22,25 +22,29 @@ 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.InviteOrderSubsidyDebt; 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; +import com.yeshi.fanli.entity.order.InviteOrderSubsidy; import com.yeshi.fanli.entity.taobao.TaoBaoOrder; import com.yeshi.fanli.entity.taobao.TaoBaoWeiQuanDrawBack; import com.yeshi.fanli.entity.taobao.TaoBaoWeiQuanOrder; +import com.yeshi.fanli.exception.money.InviteOrderSubsidyDebtException; import com.yeshi.fanli.exception.money.UserMoneyDebtException; 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.money.InviteOrderSubsidyDebtService; import com.yeshi.fanli.service.inter.money.UserMoneyDebtService; 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.InviteOrderSubsidyService; import com.yeshi.fanli.service.inter.order.tb.TaoBaoWeiQuanOrderService; import com.yeshi.fanli.util.Constant; -import com.yeshi.fanli.util.MoneyBigDecimalUtil; import com.yeshi.fanli.util.StringUtil; import com.yeshi.fanli.util.factory.UserMoneyDetailFactory; import com.yeshi.fanli.vo.order.CommonOrderVO; @@ -79,6 +83,12 @@ @Resource private UserMoneyService userMoneyService; + + @Resource + private InviteOrderSubsidyService inviteOrderSubsidyService; + + @Resource + private InviteOrderSubsidyDebtService inviteOrderSubsidyDebtService; @Override public void addWeiQuanDrawBack(TaoBaoWeiQuanDrawBack taoBaoWeiQuanDrawBack) { @@ -123,40 +133,13 @@ List<TaoBaoWeiQuanOrder> list = taoBaoWeiQuanOrderService.getWeiQuanSuccessOrders(orderId); if (list == null || list.size() == 0) return; - // 鑾峰彇鍜岃璁㈠崟鍙锋湁鍏宠仈鐨勭敤鎴� - // 鑾峰彇涓荤孩鍖�(鍚屼竴涓鍗曞彿鐨勫崟鍙細瀵瑰簲鍚屼竴涓敤鎴�) - List<CommonOrderVO> typeList = new ArrayList<>(); - CommonOrderVO cv = new CommonOrderVO(); - cv.setSourceType(Constant.SOURCE_TYPE_TAOBAO); - cv.setOrderNo(orderId); - typeList.add(cv); + List<HongBaoV2> mainHongBaoList = getWeiQuanMainHongBao(list, orderId); - List<CommonOrderVO> commonOrderList = commonOrderMapper.listOrderGoodsInfo(typeList); - List<HongBaoV2> mainHongBaoList = new ArrayList<>(); - if (commonOrderList != null) - for (CommonOrderVO vo : commonOrderList) { - // 淇敼璁㈠崟鐘舵�佷负缁存潈 - CommonOrder co = new CommonOrder(vo.getId()); - co.setState(CommonOrder.STATE_WQ); - co.setUpdateTime(new Date()); - commonOrderMapper.updateByPrimaryKeySelective(co); - - HongBaoOrder hongBaoOrder = hongBaoOrderMapper.selectByCommonOrderId(vo.getId()); - if (hongBaoOrder.getCommonOrder() != null - && !StringUtil.isNullOrEmpty(hongBaoOrder.getCommonOrder().getTradeId())) - // 鏌ヨ鏄惁宸茬粡缁存潈 - { - TaoBaoWeiQuanDrawBack drawBack = taoBaoWeiQuanDrawBackMapper.selectByOrderItemIdAndUid( - hongBaoOrder.getCommonOrder().getTradeId(), - hongBaoOrder.getHongBaoV2().getUserInfo().getId()); - if (drawBack == null)// 娣诲姞杩樻湭鎵f鐨勫瓙璁㈠崟 - mainHongBaoList.add(hongBaoOrder.getHongBaoV2()); - } - } if (mainHongBaoList == null || mainHongBaoList.size() == 0) return; for (int i = 0; i < mainHongBaoList.size(); i++) { - HongBaoV2 hb = hongBaoV2Mapper.selectByPrimaryKey(mainHongBaoList.get(i).getId()); + // 閿佽锛岄槻姝㈤噸澶� 鎿嶄綔 + HongBaoV2 hb = hongBaoV2Mapper.selectByPrimaryKeyForUpdate(mainHongBaoList.get(i).getId()); mainHongBaoList.set(i, hb); // 鍙鐞嗚繑鍒╄鍗� if (hb.getType() != HongBaoV2.TYPE_ZIGOU) { @@ -288,44 +271,50 @@ } } + private List<HongBaoV2> getWeiQuanMainHongBao(List<TaoBaoWeiQuanOrder> list, String orderId) { + // 鏌ヨ鏄惁涓虹淮鏉冭鍗� + if (list == null || list.size() == 0) + return null; + // 鑾峰彇鍜岃璁㈠崟鍙锋湁鍏宠仈鐨勭敤鎴� + // 鏌ヨ杩樻湭鎵f鐨勪富绾㈠寘 + List<HongBaoV2> mainHongBaoList = new ArrayList<>(); + for (TaoBaoWeiQuanOrder weiQuanOrder : list) { + List<CommonOrder> orderList = commonOrderMapper.listBySourceTypeAndTradeId(Constant.SOURCE_TYPE_TAOBAO, + weiQuanOrder.getOrderItemId()); + if (orderList != null && orderList.size() > 0) + for (CommonOrder commonOrder : orderList) { + // 淇敼璁㈠崟鐘舵�佷负缁存潈 + CommonOrder co = new CommonOrder(commonOrder.getId()); + co.setState(CommonOrder.STATE_WQ); + co.setUpdateTime(new Date()); + commonOrderMapper.updateByPrimaryKeySelective(co); + + HongBaoOrder hongBaoOrder = hongBaoOrderMapper.selectByCommonOrderId(commonOrder.getId()); + if (hongBaoOrder.getCommonOrder() != null + && !StringUtil.isNullOrEmpty(hongBaoOrder.getCommonOrder().getTradeId())) + // 鏌ヨ鏄惁宸茬粡缁存潈 + { + TaoBaoWeiQuanDrawBack drawBack = taoBaoWeiQuanDrawBackMapper.selectByOrderItemIdAndUid( + hongBaoOrder.getCommonOrder().getTradeId(), + hongBaoOrder.getHongBaoV2().getUserInfo().getId()); + if (drawBack == null)// 娣诲姞杩樻湭鎵f鐨勫瓙璁㈠崟 + mainHongBaoList.add(hongBaoOrder.getHongBaoV2()); + } + } + } + return mainHongBaoList; + } + @Transactional @Override public void doWeiQuanShare(String orderId) throws TaoBaoWeiQuanException { if (StringUtil.isNullOrEmpty(orderId)) throw new TaoBaoWeiQuanException(1, "璁㈠崟鍙蜂负绌哄��"); - // 鏌ヨ鏄惁涓虹淮鏉冭鍗� - List<TaoBaoWeiQuanOrder> list = taoBaoWeiQuanOrderService.getWeiQuanSuccessOrders(orderId); - if (list == null || list.size() == 0) - return; - // 鑾峰彇鍜岃璁㈠崟鍙锋湁鍏宠仈鐨勭敤鎴� - // 鑾峰彇涓荤孩鍖�(鍚屼竴涓鍗曞彿鐨勫崟鍙細瀵瑰簲鍚屼竴涓敤鎴�) - List<CommonOrderVO> typeList = new ArrayList<>(); - CommonOrderVO cv = new CommonOrderVO(); - cv.setSourceType(Constant.SOURCE_TYPE_TAOBAO); - cv.setOrderNo(orderId); - typeList.add(cv); - List<CommonOrderVO> commonOrderList = commonOrderMapper.listOrderGoodsInfo(typeList); - List<HongBaoV2> mainHongBaoList = new ArrayList<>(); - if (commonOrderList != null) - for (CommonOrderVO vo : commonOrderList) { - // 鏇存敼璁㈠崟鐘舵�� - CommonOrder co = new CommonOrder(vo.getId()); - co.setState(CommonOrder.STATE_WQ); - co.setUpdateTime(new Date()); - commonOrderMapper.updateByPrimaryKeySelective(co); - HongBaoOrder hongBaoOrder = hongBaoOrderMapper.selectByCommonOrderId(vo.getId()); - if (hongBaoOrder.getCommonOrder() != null - && !StringUtil.isNullOrEmpty(hongBaoOrder.getCommonOrder().getTradeId())) - // 鏌ヨ鏄惁宸茬粡缁存潈 - { - TaoBaoWeiQuanDrawBack drawBack = taoBaoWeiQuanDrawBackMapper.selectByOrderItemIdAndUid( - hongBaoOrder.getCommonOrder().getTradeId(), - hongBaoOrder.getHongBaoV2().getUserInfo().getId()); - if (drawBack == null)// 娣诲姞杩樻湭鎵f鐨勫瓙璁㈠崟 - mainHongBaoList.add(hongBaoOrder.getHongBaoV2()); - } - } + List<TaoBaoWeiQuanOrder> list = taoBaoWeiQuanOrderService.getWeiQuanSuccessOrders(orderId); + if(list==null||list.size()==0) + return; + List<HongBaoV2> mainHongBaoList = getWeiQuanMainHongBao(list, orderId); if (mainHongBaoList == null || mainHongBaoList.size() == 0) return; @@ -506,6 +495,9 @@ weiQuanDrawBack.setUser(child.getUserInfo()); taoBaoWeiQuanDrawBackMapper.insertSelective(weiQuanDrawBack);// 鍔犲叆杩旇繕璁板綍 + // 鍔犲叆閭�璇疯ˉ璐磋繑杩樿褰� + doInviteOrderSubsidy(orderId, Constant.SOURCE_TYPE_TAOBAO, uid, settleMent, wqMoney); + // 濡傛灉璧勯噾澶т簬0鎵嶆墸闄� if (drawBackMoney != null && drawBackMoney.compareTo(new BigDecimal(0)) > 0) { @@ -545,6 +537,33 @@ } } + /** + * 閭�璇疯鍗曡ˉ璐寸淮鏉冨鐞� + * + * @param orderId + * @param sourceType + */ + private void doInviteOrderSubsidy(String orderId, int sourceType, Long uid, BigDecimal settleMent, + BigDecimal weiQuanMoney) throws TaoBaoWeiQuanException { + InviteOrderSubsidy subSidy = inviteOrderSubsidyService.getByOrderNoAndType(uid, orderId, sourceType); + if (subSidy != null)// 娣诲姞鍊熻捶鍏崇郴 + { + BigDecimal drawBackMoney = computeDrawBackMoney(settleMent, weiQuanMoney, subSidy.getOriginalMoney()); + if (drawBackMoney.compareTo(new BigDecimal(0)) <= 0) + return; + InviteOrderSubsidyDebt debt = new InviteOrderSubsidyDebt(); + debt.setBeiZhu("璁㈠崟缁存潈:" + orderId + "-" + sourceType); + debt.setOriginMoney(drawBackMoney); + debt.setUid(uid); + debt.setCreateTime(new Date()); + try { + inviteOrderSubsidyDebtService.addDebt(debt); + } catch (InviteOrderSubsidyDebtException e) { + throw new TaoBaoWeiQuanException(101, "閭�璇疯鍗曡ˉ璐村紓甯�"); + } + } + } + @Override public TaoBaoWeiQuanDrawBack selectByOrderItemId(String orderItemId) { List<TaoBaoWeiQuanDrawBack> list = taoBaoWeiQuanDrawBackMapper.selectByOrderItemId(orderItemId); -- Gitblit v1.8.0