admin
2019-03-13 33b4ed2bbf28ec16b66e552680f56a691a4e908d
fanli/src/main/java/com/yeshi/fanli/service/impl/order/OrderProcessServiceImpl.java
@@ -17,23 +17,19 @@
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;
import com.yeshi.fanli.dao.mybatis.AccountDetailsMapper;
import com.yeshi.fanli.dao.mybatis.AccountMessageMapper;
import com.yeshi.fanli.dao.mybatis.HongBaoManageMapper;
import com.yeshi.fanli.dao.mybatis.HongBaoV2Mapper;
import com.yeshi.fanli.dao.mybatis.MoneyRecordMapper;
import com.yeshi.fanli.dao.mybatis.PidOrderMapper;
import com.yeshi.fanli.dao.mybatis.ThreeSaleGiftMapper;
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.HongBaoOrderMapper;
import com.yeshi.fanli.dao.mybatis.order.OrderItemMapper;
import com.yeshi.fanli.dao.mybatis.order.OrderMapper;
import com.yeshi.fanli.dao.mybatis.share.PidUserMapper;
import com.yeshi.fanli.dao.mybatis.taobao.TaoBaoWeiQuanOrderMapper;
import com.yeshi.fanli.entity.bus.user.AccountDetails;
import com.yeshi.fanli.entity.bus.user.HongBao;
import com.yeshi.fanli.dto.HongBao;
import com.yeshi.fanli.entity.bus.user.HongBaoV2;
import com.yeshi.fanli.entity.bus.user.Order;
import com.yeshi.fanli.entity.bus.user.UserExtraTaoBaoInfo;
@@ -41,13 +37,11 @@
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.taobao.PidOrder;
import com.yeshi.fanli.entity.taobao.PidUser;
import com.yeshi.fanli.entity.taobao.TaoBaoOrder;
import com.yeshi.fanli.entity.taobao.TaoBaoUnionConfig;
import com.yeshi.fanli.entity.taobao.TaoBaoWeiQuanOrder;
import com.yeshi.fanli.exception.HongBaoException;
import com.yeshi.fanli.exception.ObjectStateException;
import com.yeshi.fanli.exception.OrderItemException;
import com.yeshi.fanli.exception.TaoBaoWeiQuanException;
import com.yeshi.fanli.exception.money.UserMoneyDetailException;
@@ -55,33 +49,27 @@
import com.yeshi.fanli.log.LogHelper;
import com.yeshi.fanli.service.inter.hongbao.AccountDetailsHongBaoMapService;
import com.yeshi.fanli.service.inter.hongbao.HongBaoManageService;
import com.yeshi.fanli.service.inter.hongbao.HongBaoService;
import com.yeshi.fanli.service.inter.hongbao.HongBaoV2Service;
import com.yeshi.fanli.service.inter.msg.UserMoneyMsgNotificationService;
import com.yeshi.fanli.service.inter.order.CommonOrderService;
import com.yeshi.fanli.service.inter.order.LostOrderService;
import com.yeshi.fanli.service.inter.order.OrderItemServcie;
import com.yeshi.fanli.service.inter.order.OrderProcessService;
import com.yeshi.fanli.service.inter.order.OrderService;
import com.yeshi.fanli.service.inter.order.PidOrderService;
import com.yeshi.fanli.service.inter.push.PushService;
import com.yeshi.fanli.service.inter.taobao.TaoBaoOrderService;
import com.yeshi.fanli.service.inter.taobao.TaoBaoUnionConfigService;
import com.yeshi.fanli.service.inter.taobao.TaoBaoWeiQuanDrawBackService;
import com.yeshi.fanli.service.inter.user.UserExtraTaoBaoInfoService;
import com.yeshi.fanli.service.inter.user.UserNotificationService;
import com.yeshi.fanli.service.inter.user.UserSystemCouponService;
import com.yeshi.fanli.util.CMQManager;
import com.yeshi.fanli.util.RedisManager;
import com.yeshi.fanli.util.StringUtil;
import com.yeshi.fanli.util.TimeUtil;
import com.yeshi.fanli.util.factory.AccountDetailsFactory;
import com.yeshi.fanli.util.factory.UserMoneyDetailFactory;
@Service
public class OrderProcessServiceImpl implements OrderProcessService {
   @Resource
   private PidOrderMapper pidOrderMapper;
   @Resource
   private OrderMapper orderMapper;
@@ -89,14 +77,6 @@
   @Resource
   private PidUserMapper pidUserMapper;
   @Resource
   private HongBaoService hongBaoService;
   @Resource
   private OrderItemServcie orderItemService;
   @Resource
   private PidOrderService pidOrderService;
   @Resource
   private UserInfoMapper userInfoMapper;
@@ -104,14 +84,9 @@
   @Resource
   private OrderItemMapper orderItemMapper;
   @Resource
   private HongBaoMapper hongBaoMapper;
   @Resource
   private HongBaoManageMapper hongBaoManageMapper;
   @Resource
   private AccountDetailsMapper accountDetailsMapper;
   @Resource
   private AccountMessageMapper accountMessageMapper;
@@ -167,6 +142,9 @@
   @Resource
   private UserExtraTaoBaoInfoService userExtraTaoBaoInfoService;
   @Resource
   private UserSystemCouponService userSystemCouponService;
   @Override
   public void processOrder(Map<String, List<TaoBaoOrder>> orders) {
      List<TaoBaoUnionConfig> configList = taoBaoUnionConfigService.getConfigByTypeCache(PidUser.TYPE_FANLI_ANDROID);
@@ -174,7 +152,6 @@
      // 分离出返利订单与分享赚订单
      Iterator<String> its = orders.keySet().iterator();
      Map<String, List<TaoBaoOrder>> fanliOrderMap = new HashMap<>();
      Map<String, List<PidOrder>> sharePidOrderMap = new HashMap<>();
      Map<String, List<TaoBaoOrder>> shareOrderMap = new HashMap<>();
      while (its.hasNext()) {
         String orderId = its.next();
@@ -287,7 +264,16 @@
         Iterator<String> its = orders.keySet().iterator();
         while (its.hasNext()) {
            String orderId = its.next();
            processShareGoodsOrderNew(orderId, orders.get(orderId));
            try {
               processShareGoodsOrderNew(orderId, orders.get(orderId));
            } catch (Exception e) {
               try {
                  LogHelper.errorDetailInfo(e, "processShareGoodsOrderNew出错", "订单号:" + orderId);
               } catch (Exception e1) {
                  e1.printStackTrace();
               }
            }
         }
      }
   }
@@ -473,31 +459,27 @@
         // 将自己添加到用户
         Long uid = its.next();
         BigDecimal money = userMoney.get(uid);
         userInfoMapper.addHongBaoByUid(uid, money);
         AccountDetails accountDetails = AccountDetailsFactory.create("+" + money, AccountDetailsFactory.FANLI, null,
               null, new UserInfo(uid));
         accountDetailsMapper.insertSelective(accountDetails);
         UserMoneyDetail userMoneyDetail = null;
         // 插入新版资金明细
         try {
            UserMoneyDetail userMoneyDetail = UserMoneyDetailFactory.createFanLi(uid,
                  hongBaoOrder.getCommonOrder().getOrderNo(), hongBaoOrder.getCommonOrder().getSourceType(), null,
                  money);
            userMoneyDetail.setId(accountDetails.getId());
            userMoneyDetailMapper.insert(userMoneyDetail);
            userMoneyDetail = UserMoneyDetailFactory.createFanLi(uid, hongBaoOrder.getCommonOrder().getOrderNo(),
                  hongBaoOrder.getCommonOrder().getSourceType(), null, money);
         } catch (UserMoneyDetailException e1) {
            try {
               LogHelper.errorDetailInfo(e1);
               LogHelper.errorDetailInfo(e1, "订单号:" + hongBaoOrder.getCommonOrder().getOrderNo(), "");
            } catch (Exception e2) {
               e2.printStackTrace();
            }
         }
         userMoneyDetailMapper.insert(userMoneyDetail);
         // 添加资金明细与红包的映射关系
         for (HongBaoV2 v2 : userHongBao.get(uid)) {
            accountDetailsHongBaoMapService.saveAccountDetailsHongBaoMap(v2.getId(), accountDetails.getId());
            accountDetailsHongBaoMapService.saveAccountDetailsHongBaoMap(v2.getId(), userMoneyDetail.getId());
         }
         // 增加用户资金
         userInfoMapper.addHongBaoByUid(uid, money);
         // 站内信+推送
         UserInfo user = userInfoMapper.selectByPrimaryKey(uid);
@@ -515,7 +497,12 @@
         // 新版通知
         userMoneyMsgNotificationService.fanliOrderReceived(uid, hongBaoOrder.getCommonOrder().getOrderNo(),
               userGoodsCount.get(uid), money, user.getMyHongBao());
      }
      // 通知免单到账
      try {
         userSystemCouponService.updateStateByArrivalAccount(hongBaoOrder.getCommonOrder().getOrderNo());
      } catch (Exception e) {
         e.printStackTrace();
      }
      // 维权扣款(2018-08-05后开始实行)
@@ -548,12 +535,6 @@
      if (order.getJieSuanTime().getTime() >= TimeUtil.convertToTimeTemp("2018-08-05", "yyyy-MM-dd")) {
         return;
      }
      try {
         orderService.failureOrderWithWeiQuan(order.getOrderId(), Order.ORDER_TYPE_TAOBAO);
      } catch (ObjectStateException e) {
         e.printStackTrace();
      }
      pidOrderService.weiQuan(order.getOrderId());
   }
   @Override
@@ -694,10 +675,6 @@
      // 邀请赚到账
      if (invitemoney.compareTo(new BigDecimal(0)) > 0) {
         userInfoMapper.addHongBaoByUid(uid, invitemoney);
         // 添加记录
         AccountDetails accountDetails = AccountDetailsFactory.create("+" + invitemoney,
               AccountDetailsFactory.TICHENG, null, null, new UserInfo(uid));
         accountDetailsMapper.insertSelective(accountDetails);
         // 添加新版详情记录
         try {
@@ -718,8 +695,9 @@
            UserMoneyDetail userMoneyDetail = UserMoneyDetailFactory.createInvite(uid, (int) validCount,
                  (int) weiQuanCount, (int) invalidCount, invitemoney, new Date());
            userMoneyDetail.setId(accountDetails.getId());
            userMoneyDetailMapper.insert(userMoneyDetail);
            // 添加到红包返利记录集合
            accountDetailsHongBaoMapService.saveAccountDetailsHongBaoMap(hbIdList, userMoneyDetail.getId());
         } catch (UserMoneyDetailException e) {
            try {
               LogHelper.errorDetailInfo(e);
@@ -727,11 +705,6 @@
               e1.printStackTrace();
            }
         }
         // 记录返利红包与资金详情的对应关系
         // 添加到红包返利记录集合
         accountDetailsHongBaoMapService.saveAccountDetailsHongBaoMap(hbIdList, accountDetails.getId());
         // 发送推送
         try {
@@ -798,11 +771,6 @@
      if (sharemoney.compareTo(new BigDecimal(0)) > 0) {
         userInfoMapper.addHongBaoByUid(uid, sharemoney);
         // 添加记录
         AccountDetails accountDetails = AccountDetailsFactory.create("+" + sharemoney,
               AccountDetailsFactory.SHARE_GOODS, null, null, new UserInfo(uid));
         accountDetailsMapper.insertSelective(accountDetails);
         // 添加新版详情记录
         try {
            // 计算本月的有效订单,失效订单,维权订单
@@ -823,8 +791,9 @@
            UserMoneyDetail userMoneyDetail = UserMoneyDetailFactory.createShare(uid, (int) validCount,
                  (int) weiQuanCount, (int) invalidCount, sharemoney, new Date());
            userMoneyDetail.setId(accountDetails.getId());
            userMoneyDetailMapper.insert(userMoneyDetail);
            // 添加到红包返利记录集合
            accountDetailsHongBaoMapService.saveAccountDetailsHongBaoMap(hbIdList, userMoneyDetail.getId());
         } catch (UserMoneyDetailException e) {
            try {
               LogHelper.errorDetailInfo(e);
@@ -832,10 +801,6 @@
               e1.printStackTrace();
            }
         }
         // 记录返利红包与资金详情的对应关系
         // 添加到红包返利记录集合
         accountDetailsHongBaoMapService.saveAccountDetailsHongBaoMap(hbIdList, accountDetails.getId());
         // 发送推送
         try {
@@ -953,7 +918,7 @@
            hongBaoV2Service.addHongBao(commonOrderList, HongBaoV2.TYPE_ZIGOU);
         } catch (CommonOrderException e) {
            try {
               LogHelper.errorDetailInfo(e, null, "订单号:" + orderId);
               LogHelper.errorDetailInfo(e, "addTaoBaoOrder或addHongBao出错", "订单号:" + orderId);
            } catch (Exception e1) {
               e1.printStackTrace();
            }