From a06040f0d92b6179eadc3616a33fa21b3ad349d8 Mon Sep 17 00:00:00 2001 From: admin <weikou2014> Date: 星期一, 24 十二月 2018 11:31:11 +0800 Subject: [PATCH] zijinxiangqing --- fanli/src/main/java/com/yeshi/fanli/service/impl/taobao/TaoBaoWeiQuanDrawBackServiceImpl.java | 156 ++++++++++++++++++++++++++++++++++++++++++++++++++- 1 files changed, 152 insertions(+), 4 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 244b98c..9420e0e 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 @@ -15,21 +15,26 @@ import com.yeshi.fanli.dao.mybatis.AccountDetailsMapper; import com.yeshi.fanli.dao.mybatis.UserInfoMapper; import com.yeshi.fanli.dao.mybatis.hongbao.HongBaoMapper; +import com.yeshi.fanli.dao.mybatis.money.UserMoneyDetailMapper; import com.yeshi.fanli.dao.mybatis.taobao.TaoBaoOrderMapper; import com.yeshi.fanli.dao.mybatis.taobao.TaoBaoWeiQuanDrawBackMapper; import com.yeshi.fanli.entity.bus.user.AccountDetails; import com.yeshi.fanli.entity.bus.user.HongBao; import com.yeshi.fanli.entity.bus.user.UserInfo; +import com.yeshi.fanli.entity.money.UserMoneyDetail; 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.TaoBaoWeiQuanException; +import com.yeshi.fanli.exception.money.UserMoneyDetailException; +import com.yeshi.fanli.log.LogHelper; 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.MoneyBigDecimalUtil; import com.yeshi.fanli.util.StringUtil; import com.yeshi.fanli.util.factory.AccountDetailsFactory; +import com.yeshi.fanli.util.factory.UserMoneyDetailFactory; @Service public class TaoBaoWeiQuanDrawBackServiceImpl implements TaoBaoWeiQuanDrawBackService { @@ -47,6 +52,9 @@ @Resource private UserInfoMapper userInfoMapper; + + @Resource + private UserMoneyDetailMapper userMoneyDetailMapper; @Resource private AccountDetailsMapper accountDetailsMapper; @@ -114,9 +122,10 @@ BigDecimal userGetMoney = fanMoneyMap.get(uid); BigDecimal fanMoney = new BigDecimal("0"); // 缁熻鐢ㄦ埛鍦ㄨ繖涓崟涓渶瑕佹墸闄ょ殑璧勯噾 + TaoBaoWeiQuanDrawBack weiQuanDrawBack = null; for (TaoBaoWeiQuanOrder weiQuanOrder : list) { - TaoBaoWeiQuanDrawBack weiQuanDrawBack = taoBaoWeiQuanDrawBackMapper - .selectByOrderItemIdAndUid(weiQuanOrder.getOrderItemId(), uid); + weiQuanDrawBack = taoBaoWeiQuanDrawBackMapper.selectByOrderItemIdAndUid(weiQuanOrder.getOrderItemId(), + uid); if (weiQuanDrawBack != null) continue; // 閫�娆剧殑璧勯噾 @@ -142,10 +151,25 @@ AccountDetails accountDetails = AccountDetailsFactory.create("-" + drawBackMoney, AccountDetailsFactory.SHARE_GOODS_DRAWBACK, null, null, new UserInfo(uid)); accountDetailsMapper.insertSelective(accountDetails); + // 鏂扮増璧勯噾璁板綍 + try { + UserMoneyDetail userMoneyDetail = UserMoneyDetailFactory.createFanLiWeiQuan(uid, weiQuanDrawBack, + drawBackMoney); + userMoneyDetail.setId(accountDetails.getId()); + userMoneyDetailMapper.insert(userMoneyDetail); + } catch (UserMoneyDetailException e) { + try { + LogHelper.errorDetailInfo(e); + } catch (Exception e1) { + e1.printStackTrace(); + } + } + userNotificationService.weiQuanFanli(uid, orderId, drawBackMoney); } } + @Transactional @Override public void doWeiQuanShare(String orderId) throws TaoBaoWeiQuanException { if (StringUtil.isNullOrEmpty(orderId)) @@ -204,9 +228,10 @@ BigDecimal userGetMoney = fanMoneyMap.get(uid); BigDecimal fanMoney = new BigDecimal("0"); // 缁熻鐢ㄦ埛鍦ㄨ繖涓崟涓渶瑕佹墸闄ょ殑璧勯噾 + TaoBaoWeiQuanDrawBack weiQuanDrawBack = null; for (TaoBaoWeiQuanOrder weiQuanOrder : list) { - TaoBaoWeiQuanDrawBack weiQuanDrawBack = taoBaoWeiQuanDrawBackMapper - .selectByOrderItemIdAndUid(weiQuanOrder.getOrderItemId(), uid); + weiQuanDrawBack = taoBaoWeiQuanDrawBackMapper.selectByOrderItemIdAndUid(weiQuanOrder.getOrderItemId(), + uid); if (weiQuanDrawBack != null) continue; // 閫�娆剧殑璧勯噾 @@ -232,6 +257,129 @@ AccountDetails accountDetails = AccountDetailsFactory.create("-" + drawBackMoney, AccountDetailsFactory.SHARE_GOODS_DRAWBACK, null, null, new UserInfo(uid)); accountDetailsMapper.insertSelective(accountDetails); + // 鏂扮増璧勯噾璁板綍 + try { + UserMoneyDetail userMoneyDetail = UserMoneyDetailFactory.createShareWeiQuan(uid, weiQuanDrawBack, + drawBackMoney); + userMoneyDetail.setId(accountDetails.getId()); + userMoneyDetailMapper.insert(userMoneyDetail); + } catch (UserMoneyDetailException e) { + try { + LogHelper.errorDetailInfo(e); + } catch (Exception e1) { + e1.printStackTrace(); + } + } + + userNotificationService.weiQuanTiCheng(uid, orderId, drawBackMoney); + } + + } + + @Transactional + @Override + public void doWeiQuanInvite(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<TaoBaoOrder> orderList = taoBaoOrderMapper.selectTaoBaoOrderByOrderId(orderId); + // 璁$畻娣樺疂鑱旂洘杩旂粰骞冲彴鐨勮祫閲� + BigDecimal sumFee = new BigDecimal("0"); + for (TaoBaoOrder order : orderList) + if (order.getOrderState().equalsIgnoreCase("璁㈠崟缁撶畻")) + sumFee = sumFee.add(order.geteIncome()); + // 鑾峰彇鍜岃璁㈠崟鍙锋湁鍏宠仈鐨勭敤鎴� + // 鑾峰彇涓荤孩鍖�(鍚屼竴涓鍗曞彿鐨勫崟鍙細瀵瑰簲鍚屼竴涓敤鎴�) + List<HongBao> mainHongBaoList = hongBaoMapper.selectByOrderIdWithoutChild(orderId); + if (mainHongBaoList == null || mainHongBaoList.size() == 0) + return; + + // 涓荤敤鎴稩D + Map<Long, BigDecimal> fanMoneyMap = new HashMap<>(); + + if (mainHongBaoList != null) + for (HongBao hongBao : mainHongBaoList) { + if (hongBao.getState() == HongBao.STATE_SHIXIAO) + continue; + // 杩斿埄绾㈠寘涓嶈鍏� + if (hongBao.getType() != HongBao.TYPE_TAOBAO) { + // 绱涓荤孩鍖呯殑閲戦 + 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<HongBao> childHongBaoList = hongBaoMapper.selectChildHongBaoByPid(hongBao.getId()); + if (childHongBaoList != null) + for (HongBao child : childHongBaoList) { + if (child.getState() == HongBao.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())); + } + } + + // 璁$畻姣忎釜鐢ㄦ埛鐨勮繑鍒╂瘮渚� + 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; + 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)); + taoBaoWeiQuanDrawBackMapper.insertSelective(weiQuanDrawBack); + } + + if (fanMoney.compareTo(new BigDecimal("0")) <= 0) + continue; + + // 閫�娆鹃噾棰� + BigDecimal drawBackMoney = MoneyBigDecimalUtil.div(userGetMoney.multiply(fanMoney), sumFee); + userInfoMapper.subHongBaoByUid(uid, drawBackMoney); + // 娣诲姞璧勯噾璁板綍 + AccountDetails accountDetails = AccountDetailsFactory.create("-" + drawBackMoney, + AccountDetailsFactory.SHARE_GOODS_DRAWBACK, null, null, new UserInfo(uid)); + accountDetailsMapper.insertSelective(accountDetails); + + // 鏂扮増璧勯噾璁板綍 + try { + UserMoneyDetail userMoneyDetail = UserMoneyDetailFactory.createInviteWeiQuan(uid, weiQuanDrawBack, + drawBackMoney); + userMoneyDetail.setId(accountDetails.getId()); + userMoneyDetailMapper.insert(userMoneyDetail); + } catch (UserMoneyDetailException e) { + try { + LogHelper.errorDetailInfo(e); + } catch (Exception e1) { + e1.printStackTrace(); + } + } + + // userNotificationService.weiQuanTiCheng(uid, orderId, drawBackMoney); } -- Gitblit v1.8.0