From d92226ce9f81c44fd0e159662d928767ce423b83 Mon Sep 17 00:00:00 2001 From: admin <weikou2014> Date: 星期一, 29 四月 2019 08:57:02 +0800 Subject: [PATCH] 淘宝用于自购的渠道ID存储 --- fanli/src/main/java/com/yeshi/fanli/service/impl/taobao/TaoBaoWeiQuanDrawBackServiceImpl.java | 247 ++++++++++++++---------------------------------- 1 files changed, 74 insertions(+), 173 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 1b5f81d..76db6ac 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 @@ -319,8 +319,8 @@ if (hongBao.getState() == HongBaoV2.STATE_SHIXIAO) continue; - // 杩斿埄绾㈠寘涓嶈鍏� - if (hongBao.getType() != HongBaoV2.TYPE_ZIGOU) { + // 鍙鍏ュ垎浜禋鐨勭孩鍖� + if (hongBao.getType() == HongBaoV2.TYPE_SHARE_GOODS) { // 绱涓荤孩鍖呯殑閲戦 if (fanMoneyMap.get(hongBao.getUserInfo().getId()) == null) { fanMoneyMap.put(hongBao.getUserInfo().getId(), hongBao.getMoney()); @@ -328,18 +328,6 @@ fanMoneyMap.put(hongBao.getUserInfo().getId(), fanMoneyMap.get(hongBao.getUserInfo().getId()).add(hongBao.getMoney())); } - // 绱瀛愮孩鍖呯殑閲戦 - List<HongBaoV2> childHongBaoList = hongBaoV2Mapper.listChildrenById(hongBao.getId()); - if (childHongBaoList != null) - for (HongBaoV2 child : childHongBaoList) { - if (child.getState() == HongBaoV2.STATE_SHIXIAO) - continue; - if (fanMoneyMap.get(child.getUserInfo().getId()) == null) { - fanMoneyMap.put(child.getUserInfo().getId(), child.getMoney()); - } else - fanMoneyMap.put(child.getUserInfo().getId(), - fanMoneyMap.get(child.getUserInfo().getId()).add(child.getMoney())); - } } // 璁$畻姣忎釜鐢ㄦ埛鐨勮繑鍒╂瘮渚� @@ -395,6 +383,15 @@ weiQuanOrder.getOrderItemId()); if (co != null) { HongBaoOrder hongBaoOrder = hongBaoOrderMapper.selectByCommonOrderId(co.getId()); + 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, "璧勯噾鍊熻捶寮傚父"); + } + if (hongBaoOrder != null && hongBaoOrder.getHongBaoV2() != null) { List<HongBaoV2> hongBaoList = hongBaoV2Mapper .listChildrenById(hongBaoOrder.getHongBaoV2().getId()); @@ -406,10 +403,10 @@ } for (HongBaoV2 hb : hongBaoList) { - BigDecimal drawback = MoneyBigDecimalUtil + drawback = MoneyBigDecimalUtil .div(hb.getMoney().multiply(weiQuanOrder.getFanMoney()), totalFee); try { - addDebt(uid, hb.getId(), drawback); + addDebt(hb.getUserInfo().getId(), hb.getId(), drawback); } catch (UserMoneyDebtException e) { throw new TaoBaoWeiQuanException(101, "璧勯噾鍊熻捶寮傚父"); } @@ -440,7 +437,6 @@ userNotificationService.weiQuanTiCheng(uid, orderId, drawBackMoney); } - } @Transactional @@ -453,175 +449,80 @@ if (list == null || list.size() == 0) return; // 鏌ヨ璁㈠崟搴� - List<TaoBaoOrder> orderList = taoBaoOrderMapper.selectTaoBaoOrderByOrderId(orderId); - // 璁$畻娣樺疂鑱旂洘杩旂粰骞冲彴鐨勮祫閲� - BigDecimal sumFee = new BigDecimal("0"); - for (TaoBaoOrder order : orderList) - if (order.getOrderState().equalsIgnoreCase("璁㈠崟缁撶畻")) { - sumFee = sumFee.add(order.geteIncome()); - if (order.getSubsidy() != null) - sumFee = sumFee.add(order.getSubsidy()); + for (TaoBaoWeiQuanOrder weiQuanOrder : list) { + TaoBaoOrder taoBaoOrder = taoBaoOrderMapper.selectTaoBaoOrderByTradeId(weiQuanOrder.getOrderItemId()); + BigDecimal fanMoney = weiQuanOrder.getFanMoney(); + if (taoBaoOrder == null) + throw new TaoBaoWeiQuanException(1, "鏉ユ簮浜ゆ槗ID鏈夎"); + BigDecimal sumFee = new BigDecimal("0"); + if (taoBaoOrder.getOrderState().equalsIgnoreCase("璁㈠崟缁撶畻")) { + sumFee = sumFee.add(taoBaoOrder.geteIncome()); + if (taoBaoOrder.getSubsidy() != null) + sumFee = sumFee.add(taoBaoOrder.getSubsidy()); } - // 鑾峰彇鍜岃璁㈠崟鍙锋湁鍏宠仈鐨勭敤鎴� - // 鑾峰彇涓荤孩鍖�(鍚屼竴涓鍗曞彿鐨勫崟鍙細瀵瑰簲鍚屼竴涓敤鎴�) - 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 = commonOrderMapper.selectByPrimaryKey(vo.getId()); - if (co.getState() != CommonOrder.STATE_WQ) { - co = new CommonOrder(vo.getId()); - co.setState(CommonOrder.STATE_WQ); - co.setUpdateTime(new Date()); - commonOrderMapper.updateByPrimaryKeySelective(co); - } + // 鏌ヨ涓嬬骇瀛愮敤鎴� + CommonOrder commonOrder = commonOrderMapper.selectBySourceTypeAndTradeId(Constant.SOURCE_TYPE_TAOBAO, + weiQuanOrder.getOrderItemId()); + if (commonOrder == null) + throw new TaoBaoWeiQuanException(2, "璁㈠崟鏈夎"); - HongBaoOrder hongBaoOrder = hongBaoOrderMapper.selectByCommonOrderId(vo.getId()); - mainHongBaoList.add(hongBaoOrder.getHongBaoV2()); - } - if (mainHongBaoList == null || mainHongBaoList.size() == 0) - return; + HongBaoOrder hongbaoOrder = hongBaoOrderMapper.selectByCommonOrderId(commonOrder.getId()); - // 涓荤敤鎴稩D - Map<Long, BigDecimal> fanMoneyMap = new HashMap<>(); + if (hongbaoOrder == null || hongbaoOrder.getHongBaoV2() == null) + throw new TaoBaoWeiQuanException(3, "绾㈠寘鏈夎"); - if (mainHongBaoList != null) - for (HongBaoV2 hongBao : mainHongBaoList) { - HongBaoV2 hb = hongBaoV2Mapper.selectByPrimaryKey(hongBao.getId()); - hongBao = hb; + List<HongBaoV2> childList = hongBaoV2Mapper.listChildrenById(hongbaoOrder.getHongBaoV2().getId()); - if (hongBao.getState() == HongBaoV2.STATE_SHIXIAO) - continue; - // 杩斿埄绾㈠寘涓嶈鍏� - if (hongBao.getType() != HongBaoV2.TYPE_ZIGOU) { - // 绱涓荤孩鍖呯殑閲戦 - if (fanMoneyMap.get(hongBao.getUserInfo().getId()) == null) { - fanMoneyMap.put(hongBao.getUserInfo().getId(), hongBao.getMoney()); - } else - fanMoneyMap.put(hongBao.getUserInfo().getId(), - fanMoneyMap.get(hongBao.getUserInfo().getId()).add(hongBao.getMoney())); - } - // 绱瀛愮孩鍖呯殑閲戦 - List<HongBaoV2> childHongBaoList = hongBaoV2Mapper.listChildrenById(hongBao.getId()); - if (childHongBaoList != null) - for (HongBaoV2 child : childHongBaoList) { - if (child.getState() == HongBaoV2.STATE_SHIXIAO) - continue; - if (fanMoneyMap.get(child.getUserInfo().getId()) == null) { - fanMoneyMap.put(child.getUserInfo().getId(), child.getMoney()); - } else - fanMoneyMap.put(child.getUserInfo().getId(), - fanMoneyMap.get(child.getUserInfo().getId()).add(child.getMoney())); + if (childList != null) + for (HongBaoV2 child : childList) { + Long uid = child.getUserInfo().getId(); + if (child.getState() != HongBaoV2.STATE_YILINGQU) + continue; + TaoBaoWeiQuanDrawBack weiQuanDrawBack = taoBaoWeiQuanDrawBackMapper + .selectByOrderItemIdAndUid(weiQuanOrder.getOrderItemId(), child.getUserInfo().getId()); + if (weiQuanDrawBack != null) + continue; + BigDecimal drawBackMoney = MoneyBigDecimalUtil.div(child.getMoney().multiply(fanMoney), sumFee); + weiQuanDrawBack = new TaoBaoWeiQuanDrawBack(); + weiQuanDrawBack.setCreateTime(new Date()); + weiQuanDrawBack.setDrawBackMoney(drawBackMoney); + weiQuanDrawBack.setOrderId(weiQuanOrder.getOrderId()); + weiQuanDrawBack.setOrderItemId(weiQuanOrder.getOrderItemId()); + weiQuanDrawBack.setUser(child.getUserInfo()); + taoBaoWeiQuanDrawBackMapper.insertSelective(weiQuanDrawBack);// 鍔犲叆杩旇繕璁板綍 + + // 鍒ゆ柇璧勯噾鏄惁瓒冲鎵f + UserInfo user = userInfoMapper.selectByPKey(uid); + if (user != null && user.getMyHongBao().compareTo(drawBackMoney) < 0)// 璧勯噾涓嶈冻 + { + try { + addDebt(uid, child.getId(), drawBackMoney); + } catch (UserMoneyDebtException e) { + throw new TaoBaoWeiQuanException(101, "璧勯噾鍊熻捶寮傚父"); + } + continue; } - } - // 璁$畻姣忎釜鐢ㄦ埛鐨勮繑鍒╂瘮渚� - Iterator<Long> its = fanMoneyMap.keySet().iterator(); - while (its.hasNext()) { - Long uid = its.next(); - BigDecimal userGetMoney = fanMoneyMap.get(uid); - BigDecimal fanMoney = new BigDecimal("0"); - // 缁熻鐢ㄦ埛鍦ㄨ繖涓崟涓渶瑕佹墸闄ょ殑璧勯噾 - TaoBaoWeiQuanDrawBack weiQuanDrawBack = null; - List<TaoBaoWeiQuanDrawBack> newWeiQuanDrawBackList = new ArrayList<>(); - for (TaoBaoWeiQuanOrder weiQuanOrder : list) { - weiQuanDrawBack = taoBaoWeiQuanDrawBackMapper.selectByOrderItemIdAndUid(weiQuanOrder.getOrderItemId(), - uid); - if (weiQuanDrawBack != null) - continue; - // 閫�娆剧殑璧勯噾 - fanMoney = fanMoney.add(weiQuanOrder.getFanMoney()); - // 鎻掑叆璁板綍 - weiQuanDrawBack = new TaoBaoWeiQuanDrawBack(); - weiQuanDrawBack.setCreateTime(new Date()); - // TODO 鏆傛椂璁句负0 - weiQuanDrawBack.setDrawBackMoney(new BigDecimal(0)); - weiQuanDrawBack.setOrderId(weiQuanOrder.getOrderId()); - weiQuanDrawBack.setOrderItemId(weiQuanOrder.getOrderItemId()); - weiQuanDrawBack.setUser(new UserInfo(uid)); - newWeiQuanDrawBackList.add(weiQuanDrawBack); - } + userInfoMapper.subHongBaoByUid(uid, drawBackMoney); - 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, "璧勯噾鍊熻捶寮傚父"); - } - } - } + // 鏂扮増璧勯噾璁板綍 + try { + UserMoneyDetail userMoneyDetail = UserMoneyDetailFactory.createInviteWeiQuan(uid, + weiQuanDrawBack, drawBackMoney); + userMoneyDetailMapper.insert(userMoneyDetail); + } catch (UserMoneyDetailException e) { + try { + LogHelper.errorDetailInfo(e); + } catch (Exception e1) { + e1.printStackTrace(); } } + // 鏂扮増閫氱煡 + userMoneyMsgNotificationService.inviteOrderWeiQuan(uid, orderId, drawBackMoney, + userInfoMapper.selectByPrimaryKey(uid).getMyHongBao()); } - continue; - } - - userInfoMapper.subHongBaoByUid(uid, drawBackMoney); - - // 鏂扮増璧勯噾璁板綍 - try { - UserMoneyDetail userMoneyDetail = UserMoneyDetailFactory.createInviteWeiQuan(uid, weiQuanDrawBack, - drawBackMoney); - userMoneyDetailMapper.insert(userMoneyDetail); - } catch (UserMoneyDetailException e) { - try { - LogHelper.errorDetailInfo(e); - } catch (Exception e1) { - e1.printStackTrace(); - } - } - - // 鏂扮増閫氱煡 - userMoneyMsgNotificationService.inviteOrderWeiQuan(uid, orderId, drawBackMoney, - userInfoMapper.selectByPrimaryKey(uid).getMyHongBao()); - - userNotificationService.weiQuanTiCheng(uid, orderId, drawBackMoney); } - } @Override -- Gitblit v1.8.0