yujian
2019-01-14 92c681fabac989d1a9f16fa13202d7f5ccac52d9
fanli/src/main/java/com/yeshi/fanli/service/impl/order/CommonOrderServiceImpl.java
@@ -13,6 +13,7 @@
import org.apache.commons.beanutils.PropertyUtils;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.yeshi.utils.taobao.TbImgUtil;
import com.yeshi.fanli.dao.mybatis.order.CommonOrderGoodsMapper;
import com.yeshi.fanli.dao.mybatis.order.CommonOrderMapper;
@@ -29,6 +30,7 @@
import com.yeshi.fanli.service.inter.order.CommonOrderService;
import com.yeshi.fanli.util.Constant;
import com.yeshi.fanli.util.MoneyBigDecimalUtil;
import com.yeshi.fanli.util.StringUtil;
import com.yeshi.fanli.util.factory.CommonOrderGoodsFactory;
import com.yeshi.fanli.util.taobao.TaoBaoOrderUtil;
import com.yeshi.fanli.util.taobao.TaoKeApiUtil;
@@ -81,15 +83,14 @@
   public List<CommonOrderVO> listGroupOrderNoByUid(long start, int count, Long uid, Integer state, Integer type,
         Integer orderState, String orderNo, String startTime, String endTime, Integer dateType)
         throws CommonOrderException {
      return commonOrderMapper.listUserOrder(start, count, uid, state, type, orderState, orderNo, startTime,
            endTime, dateType);
      return commonOrderMapper.listUserOrder(start, count, uid, state, type, orderState, orderNo, startTime, endTime,
            dateType);
   }
   @Override
   public long countGroupOrderNoByUid(Long uid, Integer state, Integer type, Integer orderState, String orderNo,
         String startTime, String endTime, Integer dateType) throws CommonOrderException {
      return commonOrderMapper.countUserOrder(uid, state, type, orderState, orderNo, startTime, endTime,
            dateType);
      return commonOrderMapper.countUserOrder(uid, state, type, orderState, orderNo, startTime, endTime, dateType);
   }
   @Override
@@ -134,6 +135,12 @@
   public BigDecimal countBonusOrderMoney(Long uid, Integer type, Integer day, String startTime, String endTime) {
      return commonOrderMapper.countBonusOrderMoney(uid, type, day, startTime, endTime);
   }
   @Override
   public Map<String, Object> countBonusOrderMoneyAndNumber(Long uid, Integer type, Integer day,
         String startTime, String endTime) {
      return commonOrderMapper.countBonusOrderMoneyAndNumber(uid, type, day, startTime, endTime);
   }
   @Override
   public Map<String, BigDecimal> countByUidAndOrderState(Long uid, Integer type, String startTime, String endTime,
@@ -170,6 +177,11 @@
                  e.printStackTrace();
               }
               String picture = commonGoodsVO.getPicture();
               if (!StringUtil.isNullOrEmpty(picture) && !picture.contains("320x320")) {
                  commonGoodsVO.setPicture(TbImgUtil.getTBSize320Img(picture));
               }
               Integer hongBaoType = order.getHongBaoType();
               // 邀请订单信息保护
               if (HongBaoV2.TYPE_YAOQING == hongBaoType || HongBaoV2.TYPE_YIJI == hongBaoType
@@ -185,14 +197,14 @@
               // 购买数量
               commonGoodsVO.setActualCount(commonOrder.getTotalCount() + "件");
               BigDecimal totalSettlement = commonOrder.getTotalSettlement();
               if (totalSettlement == null || totalSettlement.compareTo(new BigDecimal(0)) <= 0) {
                  totalSettlement = commonOrder.getTotalPayment();
               }
               // 实付款
               commonGoodsVO.setActualPay("实付款:¥" + totalSettlement);
               listOrderGoods.add(commonGoodsVO);
               Integer orderType = commonOrder.getOrderType();
@@ -214,14 +226,11 @@
      SimpleDateFormat formatday = new SimpleDateFormat("yyyy.MM.dd");
      for (CommonOrderVO order : listOrder) {
         Date createTime = order.getCreateTime();
         if (createTime != null) {
            order.setObtainTime(createTime.getTime());
         }
         Date thirdCreateTime = order.getThirdCreateTime();
         if (thirdCreateTime != null) {
            order.setDownTime("下单时间:" + format.format(thirdCreateTime));
            order.setObtainTime(thirdCreateTime.getTime());
         }
         Date settleTime = order.getSettleTime();
@@ -369,6 +378,23 @@
   @Override
   public List<CommonOrder> addTaoBaoOrder(List<TaoBaoOrder> taoBaoOrders, Long uid) throws CommonOrderException {
      List<CommonOrder> commonOrderList = new ArrayList<>();
      // 判断所有的订单状态
      int invalidCount = 0;
      for (TaoBaoOrder tb : taoBaoOrders) {
         if ("订单失效".equalsIgnoreCase(tb.getOrderState())) {
            invalidCount++;
         }
      }
      // 获取整体订单的状态
      int wholeOrderState = 0;
      if (taoBaoOrders.size() == invalidCount)
         wholeOrderState = CommonOrder.STATE_WHOLE_ORDER_SHIXIAO;
      else if (invalidCount == 0)
         wholeOrderState = CommonOrder.STATE_WHOLE_ORDER_YOUXIAO;
      else
         wholeOrderState = CommonOrder.STATE_WHOLE_ORDER_BUFENYOUXIAO;
      for (TaoBaoOrder taoBaoOrder : taoBaoOrders) {
         CommonOrder commonOrder = commonOrderMapper.selectByOrderNoAndOrderTypeAndOrderBy(taoBaoOrder.getOrderId(),
               Constant.SOURCE_TYPE_TAOBAO, taoBaoOrder.getOrderBy());
@@ -378,6 +404,7 @@
            CommonOrderGoods goods = new CommonOrderGoods();
            goods.setGoodsId(taoBaoOrder.getAuctionId() + "");
            goods.setGoodsType(Constant.SOURCE_TYPE_TAOBAO);
            // 商品是否已经插入
            List<CommonOrderGoods> commonGoodsList = commonOrderGoodsMapper
                  .listByGoodsIdAndGoodsType(goods.getGoodsId(), goods.getGoodsType());
@@ -400,6 +427,7 @@
            commonOrder.setCommonOrderGoods(goods);
            commonOrder.setUserInfo(new UserInfo(uid));
            commonOrder.setCreateTime(new Date());
            commonOrder.setStateWholeOrder(wholeOrderState);
            commonOrderMapper.insertSelective(commonOrder);
            commonOrderList.add(commonOrder);
@@ -418,6 +446,7 @@
            updateCommonOrder.setSettlement(newCommonOrder.getSettlement());
            updateCommonOrder.setSettleTime(newCommonOrder.getSettleTime());
            updateCommonOrder.setState(newCommonOrder.getState());
            updateCommonOrder.setStateWholeOrder(wholeOrderState);
            updateCommonOrder.setUpdateTime(new Date());
            commonOrderMapper.updateByPrimaryKeySelective(updateCommonOrder);
            commonOrderList.add(commonOrderMapper.selectByPrimaryKey(updateCommonOrder.getId()));
@@ -427,10 +456,94 @@
      return commonOrderList;
   }
   @Override
   public long countByUidAndOrderStateWithOrderBalanceTime(Long uid, int state, Date minDate, Date maxDate) {
      return commonOrderMapper.countByUidAndOrderStateWithOrderBalanceTime(uid, state, minDate, maxDate);
   }
   @Override
   public List<CommonOrderVO> listQueryByUid(long start, int count, Long uid, Integer state, Integer type,
         Integer orderState, String orderNo, String startTime, String endTime, Integer dateType)
         throws CommonOrderException {
      List<CommonOrderVO> list = commonOrderMapper.listQueryByUid(start, count, uid, state, type,
            orderState, orderNo, startTime, endTime, dateType);
      if (list == null) {
         list = new ArrayList<CommonOrderVO>();
      }
      if (list.size() == 0) {
         return list;
      }
      SimpleDateFormat format = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
      for (CommonOrderVO order : list) {
         // 下单时间
         Date thirdCreateTime = order.getThirdCreateTime();
         if (thirdCreateTime != null) {
            order.setDownTime(format.format(thirdCreateTime));
         }
         // 收货时间
         Date settleTime = order.getSettleTime();
         if (settleTime != null) {
            order.setReceiveTime(format.format(settleTime));
         }
         // 到账时间
         Date accountTime = order.getAccountTime();
         if (accountTime != null) {
            order.setHongBaoDate(format.format(accountTime));
         }
         BigDecimal settlement = order.getSettlement();
         if (settlement != null && settlement.compareTo(new BigDecimal(0)) > 0) {
            order.setPayment(settlement); // 实际付款金额
         }
         /* 订单返利类型 转换 */
         Integer hongBaoType = order.getHongBaoType();
         if (HongBaoV2.TYPE_ZIGOU == hongBaoType || 2 == hongBaoType) {
            // 自购
            order.setHongBaoType(1);
         } else if (HongBaoV2.TYPE_SHARE_GOODS == hongBaoType) {
            // 分享
            order.setHongBaoType(2);
         } else if (HongBaoV2.TYPE_YAOQING == hongBaoType || HongBaoV2.TYPE_YIJI == hongBaoType
               || HongBaoV2.TYPE_ERJI == hongBaoType || HongBaoV2.TYPE_SHARE_YIJI == hongBaoType
               || HongBaoV2.TYPE_SHARE_ERJI == hongBaoType) {
            // 邀请
            order.setHongBaoType(3);
         }
         Integer hongBaoState = order.getHongBaoState();
         if (HongBaoV2.STATE_KELINGQU == hongBaoState || HongBaoV2.STATE_BUKELINGQU == hongBaoState) {
            // 未到账
            order.setHongBaoState(1);
         } else if (HongBaoV2.STATE_YILINGQU == hongBaoState) {
            // 已到账
            order.setHongBaoState(2);
         } else if (HongBaoV2.STATE_SHIXIAO == hongBaoState) {
            // 已失效
            order.setHongBaoState(3);
         }
      }
      return list;
   }
   @Override
   public long countQueryByUid(Long uid, Integer state, Integer type, Integer orderState, String orderNo,
         String startTime, String endTime, Integer dateType) throws CommonOrderException {
      return commonOrderMapper.countQueryByUid(uid, state, type, orderState, orderNo, startTime, endTime, dateType);
   }
}