admin
2019-01-05 86e46bc28e78b3a883132816e23dbcca37f9ca3a
fanli/src/main/java/com/yeshi/fanli/service/impl/taobao/TaoBaoWeiQuanDrawBackServiceImpl.java
@@ -1,6 +1,7 @@
package com.yeshi.fanli.service.impl.taobao;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.Iterator;
@@ -13,15 +14,18 @@
import org.springframework.transaction.annotation.Transactional;
import com.yeshi.fanli.dao.mybatis.AccountDetailsMapper;
import com.yeshi.fanli.dao.mybatis.HongBaoV2Mapper;
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.order.CommonOrderMapper;
import com.yeshi.fanli.dao.mybatis.order.HongBaoOrderMapper;
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.HongBaoV2;
import com.yeshi.fanli.entity.bus.user.UserInfo;
import com.yeshi.fanli.entity.money.UserMoneyDetail;
import com.yeshi.fanli.entity.order.HongBaoOrder;
import com.yeshi.fanli.entity.taobao.TaoBaoOrder;
import com.yeshi.fanli.entity.taobao.TaoBaoWeiQuanDrawBack;
import com.yeshi.fanli.entity.taobao.TaoBaoWeiQuanOrder;
@@ -31,18 +35,17 @@
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.factory.AccountDetailsFactory;
import com.yeshi.fanli.util.factory.UserMoneyDetailFactory;
import com.yeshi.fanli.vo.order.CommonOrderVO;
@Service
public class TaoBaoWeiQuanDrawBackServiceImpl implements TaoBaoWeiQuanDrawBackService {
   @Resource
   private TaoBaoWeiQuanDrawBackMapper taoBaoWeiQuanDrawBackMapper;
   @Resource
   private HongBaoMapper hongBaoMapper;
   @Resource
   private TaoBaoWeiQuanOrderService taoBaoWeiQuanOrderService;
@@ -61,6 +64,15 @@
   @Resource
   private UserNotificationService userNotificationService;
   @Resource
   private CommonOrderMapper commonOrderMapper;
   @Resource
   private HongBaoV2Mapper hongBaoV2Mapper;
   @Resource
   private HongBaoOrderMapper hongBaoOrderMapper;
   @Override
   public void addWeiQuanDrawBack(TaoBaoWeiQuanDrawBack taoBaoWeiQuanDrawBack) {
@@ -86,12 +98,24 @@
            sumFee = sumFee.add(order.geteIncome());
      // 获取和该订单号有关联的用户
      // 获取主红包(同一个订单号的单只会对应同一个用户)
      List<HongBao> mainHongBaoList = hongBaoMapper.selectByOrderIdWithoutChild(orderId);
      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.listByOrderNoAndType(typeList);
      List<HongBaoV2> mainHongBaoList = new ArrayList<>();
      if (commonOrderList != null)
         for (CommonOrderVO vo : commonOrderList) {
            HongBaoOrder hongBaoOrder = hongBaoOrderMapper.selectByCommonOrderId(vo.getId());
            mainHongBaoList.add(hongBaoOrder.getHongBaoV2());
         }
      if (mainHongBaoList == null || mainHongBaoList.size() == 0)
         return;
      for (int i = 0; i < mainHongBaoList.size(); i++) {
         // 只处理返利订单
         if (mainHongBaoList.get(i).getType() != HongBao.TYPE_TAOBAO) {
         if (mainHongBaoList.get(i).getType() != HongBaoV2.TYPE_ZIGOU) {
            mainHongBaoList.remove(i);
            i--;
         }
@@ -104,8 +128,8 @@
      Map<Long, BigDecimal> fanMoneyMap = new HashMap<>();
      if (mainHongBaoList != null)
         for (HongBao hongBao : mainHongBaoList) {
            if (hongBao.getState() == HongBao.STATE_SHIXIAO)
         for (HongBaoV2 hongBao : mainHongBaoList) {
            if (hongBao.getState() == HongBaoV2.STATE_SHIXIAO)
               continue;
            // 累计主红包的金额
            if (fanMoneyMap.get(hongBao.getUserInfo().getId()) == null) {
@@ -187,7 +211,21 @@
            sumFee = sumFee.add(order.geteIncome());
      // 获取和该订单号有关联的用户
      // 获取主红包(同一个订单号的单只会对应同一个用户)
      List<HongBao> mainHongBaoList = hongBaoMapper.selectByOrderIdWithoutChild(orderId);
      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.listByOrderNoAndType(typeList);
      List<HongBaoV2> mainHongBaoList = new ArrayList<>();
      if (commonOrderList != null)
         for (CommonOrderVO vo : commonOrderList) {
            HongBaoOrder hongBaoOrder = hongBaoOrderMapper.selectByCommonOrderId(vo.getId());
            mainHongBaoList.add(hongBaoOrder.getHongBaoV2());
         }
      if (mainHongBaoList == null || mainHongBaoList.size() == 0)
         return;
@@ -195,11 +233,13 @@
      Map<Long, BigDecimal> fanMoneyMap = new HashMap<>();
      if (mainHongBaoList != null)
         for (HongBao hongBao : mainHongBaoList) {
            if (hongBao.getState() == HongBao.STATE_SHIXIAO)
         for (HongBaoV2 hongBao : mainHongBaoList) {
            hongBao = hongBaoV2Mapper.selectByPrimaryKey(hongBao.getId());
            if (hongBao.getState() == HongBaoV2.STATE_SHIXIAO)
               continue;
            // 返利红包不计入
            if (hongBao.getType() != HongBao.TYPE_TAOBAO) {
            if (hongBao.getType() != HongBaoV2.TYPE_ZIGOU) {
               // 累计主红包的金额
               if (fanMoneyMap.get(hongBao.getUserInfo().getId()) == null) {
                  fanMoneyMap.put(hongBao.getUserInfo().getId(), hongBao.getMoney());
@@ -208,10 +248,10 @@
                        fanMoneyMap.get(hongBao.getUserInfo().getId()).add(hongBao.getMoney()));
            }
            // 累计子红包的金额
            List<HongBao> childHongBaoList = hongBaoMapper.selectChildHongBaoByPid(hongBao.getId());
            List<HongBaoV2> childHongBaoList = hongBaoV2Mapper.listChildrenById(hongBao.getId());
            if (childHongBaoList != null)
               for (HongBao child : childHongBaoList) {
                  if (child.getState() == HongBao.STATE_SHIXIAO)
               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());
@@ -294,7 +334,19 @@
            sumFee = sumFee.add(order.geteIncome());
      // 获取和该订单号有关联的用户
      // 获取主红包(同一个订单号的单只会对应同一个用户)
      List<HongBao> mainHongBaoList = hongBaoMapper.selectByOrderIdWithoutChild(orderId);
      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.listByOrderNoAndType(typeList);
      List<HongBaoV2> mainHongBaoList = new ArrayList<>();
      if (commonOrderList != null)
         for (CommonOrderVO vo : commonOrderList) {
            HongBaoOrder hongBaoOrder = hongBaoOrderMapper.selectByCommonOrderId(vo.getId());
            mainHongBaoList.add(hongBaoOrder.getHongBaoV2());
         }
      if (mainHongBaoList == null || mainHongBaoList.size() == 0)
         return;
@@ -302,11 +354,11 @@
      Map<Long, BigDecimal> fanMoneyMap = new HashMap<>();
      if (mainHongBaoList != null)
         for (HongBao hongBao : mainHongBaoList) {
            if (hongBao.getState() == HongBao.STATE_SHIXIAO)
         for (HongBaoV2 hongBao : mainHongBaoList) {
            if (hongBao.getState() == HongBaoV2.STATE_SHIXIAO)
               continue;
            // 返利红包不计入
            if (hongBao.getType() != HongBao.TYPE_TAOBAO) {
            if (hongBao.getType() != HongBaoV2.TYPE_ZIGOU) {
               // 累计主红包的金额
               if (fanMoneyMap.get(hongBao.getUserInfo().getId()) == null) {
                  fanMoneyMap.put(hongBao.getUserInfo().getId(), hongBao.getMoney());
@@ -315,10 +367,10 @@
                        fanMoneyMap.get(hongBao.getUserInfo().getId()).add(hongBao.getMoney()));
            }
            // 累计子红包的金额
            List<HongBao> childHongBaoList = hongBaoMapper.selectChildHongBaoByPid(hongBao.getId());
            List<HongBaoV2> childHongBaoList = hongBaoV2Mapper.listChildrenById(hongBao.getId());
            if (childHongBaoList != null)
               for (HongBao child : childHongBaoList) {
                  if (child.getState() == HongBao.STATE_SHIXIAO)
               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());