yujian
2020-03-18 47f034b4239ac0865560953e9f6edafa487b0fb9
fanli/src/main/java/com/yeshi/fanli/service/impl/order/CommonOrderServiceImpl.java
@@ -38,6 +38,7 @@
import com.yeshi.fanli.entity.order.HongBaoOrder;
import com.yeshi.fanli.entity.order.InviteOrderSubsidy;
import com.yeshi.fanli.entity.pdd.PDDOrder;
import com.yeshi.fanli.entity.system.ConfigKeyEnum;
import com.yeshi.fanli.entity.system.SystemCoupon.CouponTypeEnum;
import com.yeshi.fanli.entity.taobao.TaoBaoGoodsBrief;
import com.yeshi.fanli.entity.taobao.TaoBaoOrder;
@@ -73,6 +74,7 @@
import com.yeshi.fanli.util.taobao.TaoBaoOrderUtil;
import com.yeshi.fanli.util.taobao.TaoBaoUtil;
import com.yeshi.fanli.util.taobao.TaoKeApiUtil;
import com.yeshi.fanli.util.user.UserLevelUtil;
import com.yeshi.fanli.vo.msg.ClientTextStyleVO;
import com.yeshi.fanli.vo.order.CommonOrderGoodsVO;
import com.yeshi.fanli.vo.order.CommonOrderVO;
@@ -210,7 +212,11 @@
      }
      // 数据加工重新组织
      orderVOFactory(acceptData, listOrder, listGoods, uid);
      if (VersionUtil.greaterThan_2_1(acceptData.getPlatform(), acceptData.getVersion())) {
         orderVOFactoryNew(acceptData, listOrder, listGoods, uid);
      } else {
         orderVOFactory(acceptData, listOrder, listGoods, uid);
      }
      return listOrder;
   }
@@ -267,21 +273,38 @@
      }
      Map<Long, Boolean> vipUserMap = userVIPInfoService.listByUids(needSelectVIPUidList);
      // 设置是否为vip订单
      for (CommonOrderVO order : listOrder) {
         if (order.getHongBaoType() == HongBaoV2.TYPE_YIJI || order.getHongBaoType() == HongBaoV2.TYPE_ERJI
               || order.getHongBaoType() == HongBaoV2.TYPE_SHARE_ERJI
               || order.getHongBaoType() == HongBaoV2.TYPE_SHARE_ERJI) {
            if (vipUserMap.get(Long.parseLong(order.getUserId())) != null
                  && vipUserMap.get(Long.parseLong(order.getUserId())) == true)
               order.setVipOrder(true);
            else
      if (VersionUtil.greaterThan_2_1(acceptData.getPlatform(), acceptData.getVersion())) {
         for (CommonOrderVO order : listOrder) {
            if (order.getHongBaoType() == HongBaoV2.TYPE_YIJI || order.getHongBaoType() == HongBaoV2.TYPE_ERJI
                  || order.getHongBaoType() == HongBaoV2.TYPE_SHARE_ERJI
                  || order.getHongBaoType() == HongBaoV2.TYPE_SHARE_ERJI) {
               Integer urank = order.getUrank();
               if (urank != null) {
                  String levelName = UserLevelUtil.getLevelName(urank);
                  if (!StringUtil.isNullOrEmpty(levelName)) {
                     order.setOrderDesc(levelName);
                  }
               }
            }
         }
      } else {
         // 设置是否为vip订单
         for (CommonOrderVO order : listOrder) {
            if (order.getHongBaoType() == HongBaoV2.TYPE_YIJI || order.getHongBaoType() == HongBaoV2.TYPE_ERJI
                  || order.getHongBaoType() == HongBaoV2.TYPE_SHARE_ERJI
                  || order.getHongBaoType() == HongBaoV2.TYPE_SHARE_ERJI) {
               if (vipUserMap.get(Long.parseLong(order.getUserId())) != null
                     && vipUserMap.get(Long.parseLong(order.getUserId())) == true)
                  order.setVipOrder(true);
               else
                  order.setVipOrder(false);
            } else
               order.setVipOrder(false);
         } else
            order.setVipOrder(false);
         if (order.isVipOrder())
            order.setVipOrderDesc("订单来源:由超级会员的粉丝产生");
            if (order.isVipOrder())
               order.setVipOrderDesc("订单来源:由超级会员的粉丝产生");
         }
      }
      SimpleDateFormat format = new SimpleDateFormat("yyyy.MM.dd HH:mm");
@@ -293,11 +316,15 @@
      boolean vip = userVIPInfoService.isVIP(uid);
      // 是否存在奖励券
      boolean hasRewardCoupon = userSystemCouponService.getValidRebateCoupon(uid);
      long nowTime = java.lang.System.currentTimeMillis();
      for (CommonOrderVO order : listOrder) {
         String orderNo = order.getOrderNo();
         Integer sourceType = order.getSourceType();
         Integer hongBaoType = order.getHongBaoType();
         BigDecimal totalPay = new BigDecimal(0);
         BigDecimal totalActual = new BigDecimal(0);
         // 商品信息组合
         for (CommonOrderVO commonOrder : listGoods) {
            CommonOrderGoods goods = commonOrder.getCommonOrderGoods();
@@ -327,7 +354,16 @@
               }
               commonGoodsVO.setActualPay("付款金额:¥" + totalSettlement);
               Integer hongBaoType = order.getHongBaoType();
               totalPay = MoneyBigDecimalUtil.add(totalPay, totalSettlement);
               // 商品价格
               BigDecimal actualPrice = commonGoodsVO.getActualPrice();
               if (actualPrice != null) {
                  Integer totalCount = commonOrder.getTotalCount();
                  totalActual = MoneyBigDecimalUtil.add(totalActual,
                        MoneyBigDecimalUtil.mul(new BigDecimal(totalCount), actualPrice));
               }
               // 邀请订单信息保护
               if (HongBaoV2.TYPE_YAOQING == hongBaoType || HongBaoV2.TYPE_YIJI == hongBaoType
                     || HongBaoV2.TYPE_ERJI == hongBaoType || HongBaoV2.TYPE_SHARE_YIJI == hongBaoType
@@ -354,11 +390,19 @@
               order.getListOrderGoods().add(commonGoodsVO);
            }
         }
         Date thirdCreateTime = order.getThirdCreateTime();
         if (thirdCreateTime != null) {
            order.setDownTime("下单时间:" + format.format(thirdCreateTime));
            order.setObtainTime(thirdCreateTime.getTime());
         order.setDownTime("下单时间:" + format.format(thirdCreateTime));
         order.setObtainTime(thirdCreateTime.getTime());
         // 2.1分享订单和返利订单实付金额大于或者小于券后价的时候,订单页面 只显示3天 下单时间开始
         if (VersionUtil.greaterThan_2_1(acceptData.getPlatform(), acceptData.getVersion())) {
            if (HongBaoV2.TYPE_SHARE_YIJI == hongBaoType
                  && DateUtil.plusDayDate(3, thirdCreateTime).getTime() > nowTime
                  && totalPay.compareTo(totalActual) != 0) {
               order.setFanliDesc("由实付金额*返利比计算而来");
               order.setFanliDescLink(configService.get(ConfigKeyEnum.shareOrderRebateDescLink.getKey()));
            }
         }
         Date settleTime = order.getSettleTime();
@@ -446,7 +490,6 @@
         // 订单标识
         List<String> signList = new ArrayList<String>();
         /* 订单返利类型 转换 */
         Integer hongBaoType = order.getHongBaoType();
         if (HongBaoV2.TYPE_ZIGOU == hongBaoType || 2 == hongBaoType) {
            // 自购
            hongbaoInfo = "返利";
@@ -1673,7 +1716,7 @@
   }
   @Override
   public List<CommonOrderVO> searchOrderByUid(int page, int size, Long uid, List<ESOrder> list) throws Exception {
   public List<CommonOrderVO> searchOrderByUid(AcceptData acceptData, int page, int size, Long uid, List<ESOrder> list) throws Exception {
      List<CommonOrderVO> listVO = commonOrderMapper.searchOrderByUid((page - 1) * size, size, uid, list);
      // 订单信息为空
@@ -1690,7 +1733,7 @@
      }
      // 数据加工重新组织
      orderVOFactoryNew(listVO, listGoods, uid);
      orderVOFactoryNew(acceptData, listVO, listGoods, uid);
      return listVO;
   }
@@ -1703,7 +1746,7 @@
    * @param listGoods
    * @param uid
    */
   private void orderVOFactoryNew(List<CommonOrderVO> listOrder, List<CommonOrderVO> listGoods, Long uid)
   private void orderVOFactoryNew(AcceptData acceptData, List<CommonOrderVO> listOrder, List<CommonOrderVO> listGoods, Long uid)
         throws Exception {
      List<String> listTB = new ArrayList<String>();
      List<String> listJD = new ArrayList<String>();
@@ -1747,22 +1790,40 @@
      }
      Map<Long, Boolean> vipUserMap = userVIPInfoService.listByUids(needSelectVIPUidList);
      // 设置是否为vip订单
      for (CommonOrderVO order : listOrder) {
         if (order.getHongBaoType() == HongBaoV2.TYPE_YIJI || order.getHongBaoType() == HongBaoV2.TYPE_ERJI
               || order.getHongBaoType() == HongBaoV2.TYPE_SHARE_ERJI
               || order.getHongBaoType() == HongBaoV2.TYPE_SHARE_ERJI) {
            if (vipUserMap.get(Long.parseLong(order.getUserId())) != null
                  && vipUserMap.get(Long.parseLong(order.getUserId())) == true)
               order.setVipOrder(true);
            else
      if (VersionUtil.greaterThan_2_1(acceptData.getPlatform(), acceptData.getVersion())) {
         for (CommonOrderVO order : listOrder) {
            if (order.getHongBaoType() == HongBaoV2.TYPE_YIJI || order.getHongBaoType() == HongBaoV2.TYPE_ERJI
                  || order.getHongBaoType() == HongBaoV2.TYPE_SHARE_ERJI
                  || order.getHongBaoType() == HongBaoV2.TYPE_SHARE_ERJI) {
               Integer urank = order.getUrank();
               if (urank != null) {
                  String levelName = UserLevelUtil.getLevelName(urank);
                  if (!StringUtil.isNullOrEmpty(levelName)) {
                     order.setOrderDesc(levelName);
                  }
               }
            }
         }
      } else {
         // 设置是否为vip订单
         for (CommonOrderVO order : listOrder) {
            if (order.getHongBaoType() == HongBaoV2.TYPE_YIJI || order.getHongBaoType() == HongBaoV2.TYPE_ERJI
                  || order.getHongBaoType() == HongBaoV2.TYPE_SHARE_ERJI
                  || order.getHongBaoType() == HongBaoV2.TYPE_SHARE_ERJI) {
               if (vipUserMap.get(Long.parseLong(order.getUserId())) != null
                     && vipUserMap.get(Long.parseLong(order.getUserId())) == true)
                  order.setVipOrder(true);
               else
                  order.setVipOrder(false);
            } else
               order.setVipOrder(false);
         } else
            order.setVipOrder(false);
         if (order.isVipOrder())
            order.setVipOrderDesc("订单来源:由超级会员的粉丝产生");
            if (order.isVipOrder())
               order.setVipOrderDesc("订单来源:由超级会员的粉丝产生");
         }
      }
      SimpleDateFormat format = new SimpleDateFormat("yyyy.MM.dd HH:mm");
      SimpleDateFormat formatday = new SimpleDateFormat("yyyy.MM.dd");
@@ -1773,11 +1834,17 @@
      boolean vip = userVIPInfoService.isVIP(uid);
      // 是否存在奖励券
      boolean hasRewardCoupon = userSystemCouponService.getValidRebateCoupon(uid);
      long nowTime = java.lang.System.currentTimeMillis();
      for (CommonOrderVO order : listOrder) {
         String orderNo = order.getOrderNo();
         Integer sourceType = order.getSourceType();
         Integer hongBaoType = order.getHongBaoType();
         BigDecimal totalPay = new BigDecimal(0);
         BigDecimal totalActual = new BigDecimal(0);
         // 商品信息组合
         for (CommonOrderVO commonOrder : listGoods) {
            CommonOrderGoods goods = commonOrder.getCommonOrderGoods();
@@ -1806,8 +1873,19 @@
                  totalSettlement = commonOrder.getTotalPayment();
               }
               commonGoodsVO.setActualPay("付款金额:¥" + totalSettlement);
               totalPay = MoneyBigDecimalUtil.add(totalPay, totalSettlement);
               Integer hongBaoType = order.getHongBaoType();
               // 商品价格
               BigDecimal actualPrice = commonGoodsVO.getActualPrice();
               if (actualPrice != null) {
                  Integer totalCount = commonOrder.getTotalCount();
                  totalActual = MoneyBigDecimalUtil.add(totalActual,
                        MoneyBigDecimalUtil.mul(new BigDecimal(totalCount), actualPrice));
               }
               // 邀请订单信息保护
               if (HongBaoV2.TYPE_YAOQING == hongBaoType || HongBaoV2.TYPE_YIJI == hongBaoType
                     || HongBaoV2.TYPE_ERJI == hongBaoType || HongBaoV2.TYPE_SHARE_YIJI == hongBaoType
@@ -1841,6 +1919,16 @@
            order.setObtainTime(thirdCreateTime.getTime());
         }
         // 2.1分享订单和返利订单实付金额大于或者小于券后价的时候,订单页面 只显示3天 下单时间开始
         if (VersionUtil.greaterThan_2_1(acceptData.getPlatform(), acceptData.getVersion())) {
            if (HongBaoV2.TYPE_SHARE_GOODS == hongBaoType
                  && DateUtil.plusDayDate(3, thirdCreateTime).getTime() > nowTime
                  && totalPay.compareTo(totalActual) != 0) {
               order.setFanliDesc("由实付金额*返利比计算而来");
               order.setFanliDescLink(configService.get(ConfigKeyEnum.shareOrderRebateDescLink.getKey()));
            }
         }
         Date settleTime = order.getSettleTime();
         if (settleTime != null) {
            order.setReceiveTime("收货时间:" + format.format(settleTime));
@@ -1915,7 +2003,6 @@
         // 订单标识
         List<String> signList = new ArrayList<String>();
         /* 订单返利类型 转换 */
         Integer hongBaoType = order.getHongBaoType();
         if (HongBaoV2.TYPE_ZIGOU == hongBaoType || 2 == hongBaoType) {
            // 自购
            hongbaoInfo = "返利";