yujian
2020-04-02 0ec22dcf4fd9c4496e6f681e7fab89f56c6e4e8a
fanli/src/main/java/com/yeshi/fanli/service/impl/money/tb/TaoBaoWeiQuanDrawBackServiceImpl.java
@@ -23,26 +23,32 @@
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.OrderTeamRewardDebt;
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.order.OrderTeamReward;
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.OrderTeamRewardDebtException;
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.OrderTeamRewardDebtService;
import com.yeshi.fanli.service.inter.money.UserMoneyDebtService;
import com.yeshi.fanli.service.inter.money.UserMoneyDetailService;
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.OrderTeamRewardService;
import com.yeshi.fanli.service.inter.order.tb.TaoBaoWeiQuanOrderService;
import com.yeshi.fanli.util.Constant;
import com.yeshi.fanli.util.StringUtil;
@@ -87,7 +93,16 @@
   private InviteOrderSubsidyService inviteOrderSubsidyService;
   @Resource
   private OrderTeamRewardService orderTeamRewardService;
   @Resource
   private InviteOrderSubsidyDebtService inviteOrderSubsidyDebtService;
   @Resource
   private OrderTeamRewardDebtService orderTeamRewardDebtService;
   @Resource
   private UserMoneyDetailService userMoneyDetailService;
   @Override
   public void addWeiQuanDrawBack(TaoBaoWeiQuanDrawBack taoBaoWeiQuanDrawBack) {
@@ -265,11 +280,34 @@
                  e1.printStackTrace();
               }
            }
            if (userMoneyDetail == null)
               throw new TaoBaoWeiQuanException(110, "资金记录生成失败");
            userMoneyService.subUserMoney(uid, drawBackMoney, userMoneyDetail);
            // 新版通知
            userMoneyMsgNotificationService.fanliOrderWeiQuan(uid, orderId, Constant.SOURCE_TYPE_TAOBAO,
                  drawBackMoney, userInfoMapper.selectByPrimaryKey(uid).getMyHongBao());
         } else {// 记录资金记录,但是不显示给用户
            UserMoneyDetail userMoneyDetail = null;
            // 新版资金记录
            try {
               userMoneyDetail = UserMoneyDetailFactory.createFanLiWeiQuan(uid, weiQuanDrawBack, drawBackMoney);
            } catch (UserMoneyDetailException e) {
               try {
                  LogHelper.errorDetailInfo(e);
               } catch (Exception e1) {
                  e1.printStackTrace();
               }
            }
            if (userMoneyDetail == null)
               throw new TaoBaoWeiQuanException(110, "资金记录生成失败");
            userMoneyDetail.setShow(false);
            try {
               userMoneyDetailService.addUserMoneyDetail(userMoneyDetail);
            } catch (UserMoneyDetailException e) {
               throw new TaoBaoWeiQuanException(111, "插入记录生成失败");
            }
         }
      }
      return userSubMoneyMap;
@@ -500,7 +538,8 @@
               taoBaoWeiQuanDrawBackMapper.insertSelective(weiQuanDrawBack);// 加入返还记录
               // 加入邀请补贴返还记录
               doInviteOrderSubsidy(orderId, Constant.SOURCE_TYPE_TAOBAO, uid, settleMent, wqMoney);
               doInviteOrderSubsidy(orderId, Constant.SOURCE_TYPE_TAOBAO, uid, settleMent, wqMoney,
                     weiQuanOrder.getOrderItemId());
               // 如果资金大于0才扣除
@@ -548,7 +587,7 @@
    * @param sourceType
    */
   private void doInviteOrderSubsidy(String orderId, int sourceType, Long uid, BigDecimal settleMent,
         BigDecimal weiQuanMoney) throws TaoBaoWeiQuanException {
         BigDecimal weiQuanMoney, String tradeId) throws TaoBaoWeiQuanException {
      InviteOrderSubsidy subSidy = inviteOrderSubsidyService.getByOrderNoAndType(uid, orderId, sourceType);
      if (subSidy != null)// 添加借贷关系
      {
@@ -560,14 +599,49 @@
         debt.setOriginMoney(drawBackMoney);
         debt.setUid(uid);
         debt.setCreateTime(new Date());
         debt.setSourceId(subSidy.getId());
         debt.setTradeId(tradeId);
         try {
            inviteOrderSubsidyDebtService.addDebt(debt);
         } catch (InviteOrderSubsidyDebtException e) {
            throw new TaoBaoWeiQuanException(101, "邀请订单补贴异常");
         }
         doOrderTeamReard(subSidy.getId(), settleMent, weiQuanMoney, tradeId);
      }
   }
   /**
    * 团队奖励维权处理
    * @Title: doOrderTeamReard
    * @Description:
    * @param subsidyId
    * void 返回类型
    * @throws
    */
   private void doOrderTeamReard(Long subsidyId, BigDecimal settleMent, BigDecimal weiQuanMoney, String tradeId)
         throws TaoBaoWeiQuanException {
      List<OrderTeamReward> list = orderTeamRewardService.listBySubsidyId(subsidyId);
      if (list != null)
         for (OrderTeamReward reward : list) {
            BigDecimal drawBackMoney = computeDrawBackMoney(settleMent, weiQuanMoney, reward.getOriginalMoney());
            if (drawBackMoney.compareTo(new BigDecimal(0)) <= 0)
               return;
            OrderTeamRewardDebt debt = new OrderTeamRewardDebt();
            debt.setBeiZhu("订单售后");
            debt.setOriginMoney(drawBackMoney);
            debt.setUid(reward.getUid());
            debt.setCreateTime(new Date());
            debt.setTradeId(tradeId);
            debt.setSourceId(reward.getId());
            try {
               orderTeamRewardDebtService.addDebt(debt);
            } catch (OrderTeamRewardDebtException e) {
               throw new TaoBaoWeiQuanException(102, "团队奖励异常");
            }
         }
   }
   @Override
   public TaoBaoWeiQuanDrawBack selectByOrderItemId(String orderItemId) {
      List<TaoBaoWeiQuanDrawBack> list = taoBaoWeiQuanDrawBackMapper.selectByOrderItemId(orderItemId);