admin
2020-03-20 f0d06601a6be8c09ef5e8e7e76666cb1e8ef72a5
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
               order.setVipOrder(false);
         } else
            order.setVipOrder(false);
      if (VersionUtil.greaterThan_2_1(acceptData.getPlatform(), acceptData.getVersion())) {
         for (CommonOrderVO order : listOrder) {
         if (order.isVipOrder())
            order.setVipOrderDesc("订单来源:由超级会员的粉丝产生");
            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);
            if (order.isVipOrder())
               order.setVipOrderDesc("订单来源:由超级会员的粉丝产生");
         }
      }
      SimpleDateFormat format = new SimpleDateFormat("yyyy.MM.dd HH:mm");
@@ -293,11 +316,14 @@
      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 +353,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
@@ -356,9 +391,17 @@
         }
         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 +489,6 @@
         // 订单标识
         List<String> signList = new ArrayList<String>();
         /* 订单返利类型 转换 */
         Integer hongBaoType = order.getHongBaoType();
         if (HongBaoV2.TYPE_ZIGOU == hongBaoType || 2 == hongBaoType) {
            // 自购
            hongbaoInfo = "返利";
@@ -1240,7 +1282,7 @@
   @Override
   public List<CommonOrderVO> listQuery(long start, int count, Integer keyType, String key, Integer state,
         Integer type, Integer orderState, String startTime, String endTime, Integer source, List<Long> listShopId,
         List<Long> listGoodsId, Date minTime, BigDecimal money,BigDecimal payment) throws CommonOrderException {
         List<Long> listGoodsId, Date minTime, BigDecimal money, BigDecimal payment) throws CommonOrderException {
      List<CommonOrderVO> list = null;
@@ -1249,7 +1291,7 @@
               startTime, endTime, source, payment);
      } else {
         list = commonOrderMapper.listQuery(start, count, keyType, key, state, type, orderState, startTime, endTime,
               source, listShopId, listGoodsId, minTime, money,payment);
               source, listShopId, listGoodsId, minTime, money, payment);
      }
      if (list == null) {
@@ -1436,7 +1478,7 @@
   @Override
   public long countQuery(Integer keyType, String key, Integer state, Integer type, Integer orderState,
         String startTime, String endTime, Integer source, List<Long> listShopId, List<Long> listGoodsId,
         Date minTime, BigDecimal money,BigDecimal payment) throws CommonOrderException {
         Date minTime, BigDecimal money, BigDecimal payment) throws CommonOrderException {
      if (StringUtil.isNullOrEmpty(key) || keyType == 1) {// 搜索框无值或者按订单号搜索时都只搜索主订单
         return commonOrderMapper.countQueryWithNoChild(keyType, key, state, type, orderState, startTime, endTime,
               source, payment);
@@ -1673,7 +1715,8 @@
   }
   @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,8 +1746,8 @@
    * @param listGoods
    * @param uid
    */
   private void orderVOFactoryNew(List<CommonOrderVO> listOrder, List<CommonOrderVO> listGoods, Long uid)
         throws Exception {
   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>();
      List<String> listPDD = new ArrayList<String>();
@@ -1747,21 +1790,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
               order.setVipOrder(false);
         } else
            order.setVipOrder(false);
      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);
                  }
               }
            }
         if (order.isVipOrder())
            order.setVipOrderDesc("订单来源:由超级会员的粉丝产生");
         }
      } 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);
            if (order.isVipOrder())
               order.setVipOrderDesc("订单来源:由超级会员的粉丝产生");
         }
      }
      SimpleDateFormat format = new SimpleDateFormat("yyyy.MM.dd HH:mm");
@@ -1774,9 +1834,14 @@
      // 是否存在奖励券
      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) {
@@ -1807,7 +1872,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
@@ -1839,6 +1913,16 @@
         if (thirdCreateTime != null) {
            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_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();
@@ -1915,7 +1999,6 @@
         // 订单标识
         List<String> signList = new ArrayList<String>();
         /* 订单返利类型 转换 */
         Integer hongBaoType = order.getHongBaoType();
         if (HongBaoV2.TYPE_ZIGOU == hongBaoType || 2 == hongBaoType) {
            // 自购
            hongbaoInfo = "返利";
@@ -2184,4 +2267,12 @@
      }
   }
   @Override
   public Date getThirdCreateTime(String orderId, int sourceType) {
      List<CommonOrder> list = listBySourceTypeAndOrderId(sourceType, orderId);
      if (list == null || list.size() == 0)
         return null;
      return list.get(0).getThirdCreateTime();
   }
}