admin
2019-10-26 a56bd9db6b5c989fb2eaecd3a854ac6782b55f95
fanli/src/main/java/com/yeshi/fanli/service/impl/order/CommonOrderServiceImpl.java
@@ -14,6 +14,8 @@
import org.apache.commons.beanutils.PropertyUtils;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.yeshi.utils.DateUtil;
import org.yeshi.utils.entity.DateInfo;
import org.yeshi.utils.taobao.TbImgUtil;
import com.yeshi.fanli.dao.mybatis.order.CommonOrderGoodsMapper;
@@ -34,6 +36,7 @@
import com.yeshi.fanli.entity.order.CommonOrderGoods;
import com.yeshi.fanli.entity.order.CommonOrderTradeIdMap;
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.SystemCoupon.CouponTypeEnum;
import com.yeshi.fanli.entity.taobao.TaoBaoGoodsBrief;
@@ -49,6 +52,7 @@
import com.yeshi.fanli.service.inter.order.CommonOrderService;
import com.yeshi.fanli.service.inter.order.HongBaoOrderService;
import com.yeshi.fanli.service.inter.order.HongBaoV2Service;
import com.yeshi.fanli.service.inter.order.InviteOrderSubsidyService;
import com.yeshi.fanli.service.inter.user.UserSystemCouponRecordService;
import com.yeshi.fanli.service.inter.user.UserSystemCouponService;
import com.yeshi.fanli.util.Constant;
@@ -110,6 +114,10 @@
   @Resource
   private HongBaoOrderService hongBaoOrderService;
   @Resource
   private InviteOrderSubsidyService inviteOrderSubsidyService;
   // 奖励订单图片
   public final static String PIC_REWARD = "http://img.flqapp.com/resource/order/order_state_reward.png";
@@ -167,7 +175,7 @@
   @Override
   public List<CommonOrderVO> getOrderByUid(AcceptData acceptData, Integer page, Long uid, Integer state, Integer type,
         Integer orderState, String orderNo, String startTime, String endTime, Integer dateType, Integer source)
         throws CommonOrderException {
         throws CommonOrderException, Exception{
      int pageSize = Constant.PAGE_SIZE;
@@ -188,8 +196,8 @@
      }
      // 数据加工重新组织
      listDataFactory(acceptData, listOrder, listGoods, uid);
      orderInfoFactory(acceptData, listOrder, listGoods, uid);
      //listDataFactory(acceptData, listOrder, listGoods, uid);
      return listOrder;
   }
@@ -474,36 +482,58 @@
         String hongbaoInfo = "";
         // 订单标识
         List<String> signList = new ArrayList<String>();
         /* 订单返利类型 转换 */
         Integer hongBaoType = order.getHongBaoType();
         if (HongBaoV2.TYPE_ZIGOU == hongBaoType || 2 == hongBaoType) {
            // 自购
         if (HongBaoV2.TYPE_ZIGOU == hongBaoType || 2 == hongBaoType) { // 自购
            hongbaoInfo = "返利";
            order.setOrderOrigin("1");
            order.setHongBaoTypePic(CommonOrder.TYPE_FANLI);
            signList.add(CommonOrder.TYPE_FANLI);
         } else if (HongBaoV2.TYPE_SHARE_GOODS == hongBaoType) {
            // 分享
         } else if (HongBaoV2.TYPE_SHARE_GOODS == hongBaoType) { // 分享
            hongbaoInfo = "奖金";
            order.setOrderOrigin("2");
            order.setHongBaoTypePic(CommonOrder.TYPE_SHARE);
            signList.add(CommonOrder.TYPE_SHARE);
         } else if (HongBaoV2.TYPE_YAOQING == hongBaoType || HongBaoV2.TYPE_YIJI == hongBaoType
               || HongBaoV2.TYPE_ERJI == hongBaoType || HongBaoV2.TYPE_SHARE_YIJI == hongBaoType
               || HongBaoV2.TYPE_SHARE_ERJI == hongBaoType) {
            // 邀请
         } else if (HongBaoV2.TYPE_SHARE_YIJI == hongBaoType || HongBaoV2.TYPE_SHARE_ERJI == hongBaoType) {
            // 邀请订单 (下级的分享订单)
            hongbaoInfo = "奖金";
            order.setOrderOrigin("3");
            order.setHongBaoTypePic(CommonOrder.TYPE_INVITE);
            signList.add(CommonOrder.TYPE_INVITE);
         } else if (HongBaoV2.TYPE_YAOQING == hongBaoType || HongBaoV2.TYPE_YIJI == hongBaoType
               || HongBaoV2.TYPE_ERJI == hongBaoType) {  // 邀请订单
            hongbaoInfo = "奖金";
            order.setOrderOrigin("3");
            order.setHongBaoTypePic(CommonOrder.TYPE_INVITE);
            signList.add(CommonOrder.TYPE_INVITE);
            // 版本区分:2-0-2
            if (VersionUtil.greaterThan_2_0_2(acceptData.getPlatform(), acceptData.getVersion())) {
               InviteOrderSubsidy orderSubsidy = inviteOrderSubsidyService.getByOrderNoAndType(uid, order.getOrderNo(), sourceType2);
               if (orderSubsidy != null) {
                  ClientTextStyleVO subsidyInfo = new ClientTextStyleVO();
                  if (orderSubsidy.getState() == InviteOrderSubsidy.STATE_SUBSIDIZED) {
                     subsidyInfo.setColor("#E5005C");
                     subsidyInfo.setContent("已补贴¥" + orderSubsidy.getMoney());
                  } else {
                     subsidyInfo.setColor("#888888");
                     subsidyInfo.setContent("补贴¥" + orderSubsidy.getMoney());
                     // 解释信息(问号)
                     List<String> subsidyList = new ArrayList<String>();
                     subsidyList.add("额外补贴能否获得由系统算法自动判断,人为无法干涉;");
                     subsidyList.add("额外补贴到账时间以及金额请以实际到账为准;");
                     subsidyList.add("额外补贴产生后将会在消息-资金消息中提醒你。");
                     order.setSubsidyList(subsidyList);
                  }
                  order.setSubsidy(subsidyInfo);
               }
            }
         }
         String hongBaoDate = null;
         String hongBaoState_Str = "";
         String hongbaoInfoFontColor = "#E5005C";
         /* 红包状态 转换 */
         String stateContent = "";
         String stateFontColor = "#E5005C";
         Integer orderHongBaoState = null;
@@ -512,29 +542,21 @@
            orderHongBaoState = 1;
            stateContent = "未到账";
            hongBaoState_Str = "预估";
            Date preAccountTime = order.getPreAccountTime();
            if (preAccountTime != null) {
            if (preAccountTime != null)
               hongBaoDate = "预计到账时间:" + formatday.format(preAccountTime);
            }
         } else if (HongBaoV2.STATE_YILINGQU == hongBaoState) {
            orderHongBaoState = 3;
            stateContent = "已到账";
            Date accountTime = order.getAccountTime();
            if (accountTime != null) {
            if (accountTime != null)
               hongBaoDate = "到账时间:" + formatday.format(accountTime);
            }
         } else if (HongBaoV2.STATE_BUFENSHIXIAO == hongBaoState) {
            stateContent = "部分失效";
            orderHongBaoState = 3;
            Date accountTime = order.getAccountTime();
            if (accountTime != null) {
            if (accountTime != null)
               hongBaoDate = "到账时间:" + formatday.format(accountTime);
            }
         } else if (HongBaoV2.STATE_SHIXIAO == hongBaoState) {
            orderHongBaoState = 4;
            stateContent = "已失效";
@@ -542,10 +564,9 @@
         }
         order.setHongBaoState(orderHongBaoState);
         order.setHongBaoDate(hongBaoDate);
         if (!StringUtil.isNullOrEmpty(order.getStateDesc())) {
         if (!StringUtil.isNullOrEmpty(order.getStateDesc()))
            stateContent = stateContent + "-" + order.getStateDesc();
         }
         
         Map<String, String> stateMap = new HashMap<String, String>();
         stateMap.put("content", stateContent);
@@ -553,7 +574,6 @@
         order.setAccountState(stateMap);
         hongbaoInfo = hongBaoState_Str + hongbaoInfo;
         Map<String, String> hongBaoMap = new HashMap<String, String>();
         hongBaoMap.put("content", hongbaoInfo + " ¥" + hongBao.setScale(2, BigDecimal.ROUND_DOWN).toString());
         hongBaoMap.put("fontColor", hongbaoInfoFontColor);
@@ -603,7 +623,7 @@
         AcceptData acceptData) {
      // 是否免单商品
      boolean freeOrder = false;
      boolean freeOrder = false;
      // 是否奖励成功
      boolean rewardSuccess = false;
@@ -676,28 +696,103 @@
      }
      if (rewardOrder) {
         ClientTextStyleVO rewardStyleVO = new ClientTextStyleVO();
         // 奖励券进度详情
         rewardStyleVO.setContent("返利奖励 >");
         rewardStyleVO.setColor("#E5005C");
         rewardStyleVO.setBottomColor("#FFDCEA");
         try {
            boolean newEdition = false;
            String num = null;
            String unit = null;
            boolean canUse = false;
            // 版本区分:2.0.2
            if (VersionUtil.greaterThan_2_0_2(acceptData.getPlatform(), acceptData.getVersion())) {
               Date thirdCreateTime = order.getThirdCreateTime();
               if (thirdCreateTime != null) {
                  long downOrderTime = thirdCreateTime.getTime();
                  long limitDate = Long.parseLong("1573315200000"); // TODO 日期待确定2019-11-10
                  if (downOrderTime > limitDate) {
                     newEdition = true;
                     Date endDay = DateUtil.plusDayDate(4, thirdCreateTime);
                     long currentTime = java.lang.System.currentTimeMillis();
                     if (endDay.getTime() > currentTime) {
                        DateInfo dateInfo = DateUtil.dateDiff3(currentTime, endDay.getTime());
                        if (dateInfo != null) {
                           if (dateInfo.getDay() > 0) {
                              canUse = true;
                              unit = "天";
                              num = dateInfo.getDay().toString();
                           }
         Map<String, Object> jumpLink = new HashMap<String, Object>();
         jumpLink.put("orderNo", order.getOrderNo());
         if (VersionUtil.greaterThan_1_6_0(acceptData.getPlatform(), acceptData.getVersion())) {
            jumpLink.put("goodsType", order.getSourceType()+"");
                           if (!canUse && dateInfo.getHour() > 0) {
                              canUse = true;
                              unit = "小时";
                              num = dateInfo.getHour().toString();
                           }
                           if (!canUse && dateInfo.getMinute() > 0) {
                              canUse = true;
                              unit = "分";
                              num = dateInfo.getMinute().toString();
                           }
                           if (!canUse && dateInfo.getSecond() > 0) {
                              canUse = true;
                              unit = "秒";
                              num = dateInfo.getSecond().toString();
                           }
                        }
                     }
                  }
               }
            }
            if (newEdition && !canUse) {
               // 新版不可使用
            } else {
               Map<String, Object> rewardMap = new HashMap<String, Object>();
               ClientTextStyleVO rewardStyleVO = new ClientTextStyleVO();
               rewardStyleVO.setColor("#E5005C");
               rewardStyleVO.setBottomColor("#FFDCEA");
               if (!newEdition) {
                  rewardStyleVO.setContent("返利奖励 >");
               } else if (canUse) {
                  rewardStyleVO.setContent("返利奖励 ");
                  ClientTextStyleVO txt1 = new ClientTextStyleVO();
                  txt1.setContent("剩");
                  txt1.setColor("#666666");
                  txt1.setBottomColor("#FFDCEA");
                  ClientTextStyleVO txt2 = new ClientTextStyleVO();
                  txt2.setContent(num);
                  txt2.setColor("#E5005C");
                  txt2.setBottomColor("#FFDCEA");
                  ClientTextStyleVO txt3 = new ClientTextStyleVO();
                  txt3.setContent(unit + "关闭 >");
                  txt3.setColor("#666666");
                  txt3.setBottomColor("#FFDCEA");
                  List<ClientTextStyleVO> ticking = new ArrayList<ClientTextStyleVO>();
                  ticking.add(txt1);
                  ticking.add(txt2);
                  ticking.add(txt3);
                  rewardMap.put("ticking", ticking);
               }
               rewardMap.put("text", rewardStyleVO);
               Map<String, Object> jumpLink = new HashMap<String, Object>();
               jumpLink.put("orderNo", order.getOrderNo());
               jumpLink.put("goodsType", order.getSourceType() + "");
               Map<String, Object> jump = new HashMap<String, Object>();
               jump.put("type", type);
               jump.put("params", jumpLink);
               jump.put("jumpDetail", jumpDetailV2Service.getByTypeCache("rewardCouponDetail"));
               rewardMap.put("jump", jump);
               order.setRewardDetail(rewardMap);
            }
         } catch (Exception e) {
            e.printStackTrace();
         }
         Map<String, Object> jump = new HashMap<String, Object>();
         jump.put("type", type);
         jump.put("params", jumpLink);
         jump.put("jumpDetail", jumpDetailV2Service.getByTypeCache("rewardCouponDetail"));
         Map<String, Object> rewardMap = new HashMap<String, Object>();
         rewardMap.put("text", rewardStyleVO);
         rewardMap.put("jump", jump);
         order.setRewardDetail(rewardMap);
      }
      if (freeOrder) {
@@ -726,6 +821,359 @@
      }
   }
   /**
    * 订单信息加工
    * @param acceptData
    * @param listOrder
    * @param listGoods
    * @param uid
    */
   public void orderInfoFactory(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>();
      for (CommonOrderVO commonOrderVO : listOrder) {
         Integer sourceType = commonOrderVO.getSourceType();
         if (sourceType == null) {
            continue;
         } else if (sourceType == Constant.SOURCE_TYPE_TAOBAO) {
            listTB.add(commonOrderVO.getOrderNo());
         } else if (sourceType == Constant.SOURCE_TYPE_JD) {
            listJD.add(commonOrderVO.getOrderNo());
         } else if (sourceType == Constant.SOURCE_TYPE_PDD) {
            listPDD.add(commonOrderVO.getOrderNo());
         }
      }
      List<UserSystemCouponRecord> listRecordTB = null;
      if (listTB.size() > 0) {
         listRecordTB = userSystemCouponRecordService.getRecordByOrderNoList(Constant.SOURCE_TYPE_TAOBAO, listTB);
      }
      List<UserSystemCouponRecord> listRecordJD = null;
      if (listJD.size() > 0) {
         listRecordJD = userSystemCouponRecordService.getRecordByOrderNoList(Constant.SOURCE_TYPE_JD, listJD);
      }
      List<UserSystemCouponRecord> listRecordPDD = null;
      if (listPDD.size() > 0) {
         listRecordPDD = userSystemCouponRecordService.getRecordByOrderNoList(Constant.SOURCE_TYPE_PDD, listPDD);
      }
      SimpleDateFormat format = new SimpleDateFormat("yyyy.MM.dd HH:mm");
      SimpleDateFormat formatday = new SimpleDateFormat("yyyy.MM.dd");
      // 2019.8.1开始返回维权信息
      Date august = TimeUtil.parse("2019-08-01");
      // 是否存在奖励券
      boolean hasRewardCoupon = userSystemCouponService.getIncludeNotExchange(uid);
      boolean exchangeCoupon = userSystemCouponService.getIncludeExchange(uid);
      for (CommonOrderVO order: listOrder) {
         String orderNo = order.getOrderNo();
         Integer sourceType = order.getSourceType();
         // 商品信息组合
         for (CommonOrderVO commonOrder: listGoods) {
            CommonOrderGoods goods = commonOrder.getCommonOrderGoods();
            if (goods == null) {
               continue;
            }
            if (sourceType.equals(commonOrder.getSourceType()) && orderNo.equals(commonOrder.getOrderNo())) {
               CommonOrderGoodsVO commonGoodsVO = new CommonOrderGoodsVO();
               PropertyUtils.copyProperties(commonGoodsVO, goods);
               commonGoodsVO.setGoodsType(sourceType);
               // 淘宝商品图片处理
               String picture = commonGoodsVO.getPicture();
               if (sourceType == Constant.SOURCE_TYPE_TAOBAO && !StringUtil.isNullOrEmpty(picture)
                     && !picture.contains("320x320")) {
                  commonGoodsVO.setPicture(TbImgUtil.getTBSize320Img(picture));
               }
               // 购买数量
               commonGoodsVO.setActualCount(commonOrder.getTotalCount() + "件");
               // 实付款
               BigDecimal totalSettlement = commonOrder.getTotalSettlement();
               if (totalSettlement == null || totalSettlement.compareTo(new BigDecimal(0)) <= 0) {
                  totalSettlement = commonOrder.getTotalPayment();
               }
               commonGoodsVO.setActualPay("付款金额:¥" + totalSettlement);
               Integer hongBaoType = order.getHongBaoType();
               // 邀请订单信息保护
               if (HongBaoV2.TYPE_YAOQING == hongBaoType || HongBaoV2.TYPE_YIJI == hongBaoType
                     || HongBaoV2.TYPE_ERJI == hongBaoType || HongBaoV2.TYPE_SHARE_YIJI == hongBaoType
                     || HongBaoV2.TYPE_SHARE_ERJI == hongBaoType) {
                  Map<String, String> titleMap = new HashMap<String, String>();
                  titleMap.put("content", "为保障用户隐私,商品信息已隐藏!");
                  titleMap.put("fontColor", "#888888");
                  titleMap.put("bottomColor", "#E9E9E9");
                  commonGoodsVO.setTitle(null);
                  commonGoodsVO.setGoodsTitle(titleMap);
               }
               // 订单类型为空时 已商品类为准
               Integer orderType = order.getOrderType();
               if (orderType == null) {
                  String shopType = commonGoodsVO.getShopType();
                  if (CommonOrderGoodsVO.TYPE_TAOBAO.equalsIgnoreCase(shopType)) {
                     order.setOrderType(1);
                  } else if (CommonOrderGoodsVO.TYPE_TMALL.equalsIgnoreCase(shopType)) {
                     order.setOrderType(2);
                  }
               }
               order.getListOrderGoods().add(commonGoodsVO);
            }
         }
         Date thirdCreateTime = order.getThirdCreateTime();
         if (thirdCreateTime != null) {
            order.setDownTime("下单时间:" + format.format(thirdCreateTime));
            order.setObtainTime(thirdCreateTime.getTime());
         }
         Date settleTime = order.getSettleTime();
         if (settleTime != null) {
            order.setReceiveTime("收货时间:" + format.format(settleTime));
         }
         // 订单类型
         if (sourceType == Constant.SOURCE_TYPE_TAOBAO) {
            Integer orderType = order.getOrderType();
            if (orderType == null)
               order.setOrderType(1);
         } else if (sourceType == Constant.SOURCE_TYPE_JD) {
            order.setOrderType(3);
         } else if (sourceType == Constant.SOURCE_TYPE_PDD) {
            order.setOrderType(4);
         }
         /* 订单状态 转换处理 */
         String orderStateContent = "";
         Map<String, String> orderStateMap = new HashMap<String, String>();
         // 订单状态
         Integer orderState = order.getState();
         // 红包状态
         Integer hongBaoState = order.getHongBaoState();
         Integer stateWholeOrder = order.getStateWholeOrder();
         if (CommonOrder.STATE_WHOLE_ORDER_BUFENYOUXIAO == stateWholeOrder) {
            // 整个订单部分失效:判断真实状态 订单、红包
            CommonOrderVO buFenOrder = commonOrderMapper.getBuFenOrderState(uid, order.getOrderNo());
            if (buFenOrder != null) {
               // 有效的订单状态
               orderState = buFenOrder.getState();
               // 有效的红包状态
               hongBaoState = buFenOrder.getHongBaoState();
            }
         }
         BigDecimal hongBao = order.getHongBao();
         if (hongBao == null) {
            hongBao = new BigDecimal(0);
         }
         if (CommonOrder.STATE_FK == orderState) {
            orderStateContent = "已付款";
         } else if (CommonOrder.STATE_JS == orderState) {
            orderStateContent = "已收货";
         } else if (CommonOrder.STATE_SX == orderState) {
            orderStateContent = "未付款/已退款";
         } else if (CommonOrder.STATE_WQ == orderState) {
            orderStateContent = "已维权";
            if (sourceType != null && sourceType == Constant.SOURCE_TYPE_TAOBAO) {
               /* 订单维权 判断是否全部维权 */
               List<TaoBaoWeiQuanOrder> listWQ = taoBaoWeiQuanOrderMapper
                     .selectListByOrderIdAndState(order.getOrderNo(), "维权成功");
               boolean isPart = false;// 默认失效
               BigDecimal weiQuanMoney = getWeiQuanMoney(listWQ, sourceType, uid);
               if (!VersionUtil.greaterThan_1_6_0(acceptData.getPlatform(), acceptData.getVersion())) {
                  if (isPart) {
                     hongBaoState = HongBaoV2.STATE_BUFENSHIXIAO; // 部分失效
                  } else {
                     hongBaoState = HongBaoV2.STATE_SHIXIAO; // 全部失效
                  }
               } else {
                  // 2019.8.1 返回维权信息
                  if (settleTime != null && august != null && settleTime.getTime() > august.getTime()) {
                     orderStateContent = "维权成功";
                     WeiQuanInfo weiQuanInfo = new WeiQuanInfo();
                     weiQuanInfo.setOldHongBao("¥" + hongBao.setScale(2, BigDecimal.ROUND_DOWN).toString());
                     weiQuanInfo.setWqHongBao("维权:-¥" + weiQuanMoney.setScale(2, BigDecimal.ROUND_DOWN).toString());
                     hongBao = MoneyBigDecimalUtil.sub(hongBao, weiQuanMoney);
                     order.setWeiQuanInfo(weiQuanInfo);
                  }
               }
            }
         }
         orderStateMap.put("content", orderStateContent);
         orderStateMap.put("fontColor", "#666666");
         order.setOrderState(orderStateMap);
         String hongbaoInfo = "";
         // 订单标识
         List<String> signList = new ArrayList<String>();
         /* 订单返利类型 转换 */
         Integer hongBaoType = order.getHongBaoType();
         if (HongBaoV2.TYPE_ZIGOU == hongBaoType || 2 == hongBaoType) {
            // 自购
            hongbaoInfo = "返利";
            order.setOrderOrigin("1");
            order.setHongBaoTypePic(CommonOrder.TYPE_FANLI);
            signList.add(CommonOrder.TYPE_FANLI);
         } else if (HongBaoV2.TYPE_SHARE_GOODS == hongBaoType) {
            // 分享
            hongbaoInfo = "奖金";
            order.setOrderOrigin("2");
            order.setHongBaoTypePic(CommonOrder.TYPE_SHARE);
            signList.add(CommonOrder.TYPE_SHARE);
         } else if (HongBaoV2.TYPE_SHARE_YIJI == hongBaoType || HongBaoV2.TYPE_SHARE_ERJI == hongBaoType) {
            // 下级的分享订单:  显示邀请
            hongbaoInfo = "奖金";
            order.setOrderOrigin("3");
            order.setHongBaoTypePic(CommonOrder.TYPE_INVITE);
            signList.add(CommonOrder.TYPE_INVITE);
         } else if (HongBaoV2.TYPE_YAOQING == hongBaoType || HongBaoV2.TYPE_YIJI == hongBaoType
               || HongBaoV2.TYPE_ERJI == hongBaoType) {
            // 邀请订单
            hongbaoInfo = "奖金";
            order.setOrderOrigin("3");
            order.setHongBaoTypePic(CommonOrder.TYPE_INVITE);
            signList.add(CommonOrder.TYPE_INVITE);
            // 版本区分:2-0-2
            if (VersionUtil.greaterThan_2_0_2(acceptData.getPlatform(), acceptData.getVersion())) {
               InviteOrderSubsidy orderSubsidy = inviteOrderSubsidyService.getByOrderNoAndType(uid, order.getOrderNo(), sourceType);
               if (orderSubsidy != null) {
                  ClientTextStyleVO subsidyInfo = new ClientTextStyleVO();
                  if (orderSubsidy.getState() == InviteOrderSubsidy.STATE_SUBSIDIZED) {
                     subsidyInfo.setColor("#E5005C");
                     subsidyInfo.setContent("已补贴¥" + orderSubsidy.getMoney());
                  } else {
                     subsidyInfo.setColor("#888888");
                     subsidyInfo.setContent("补贴¥" + orderSubsidy.getMoney());
                     // 解释信息(问号)
                     List<String> subsidyList = new ArrayList<String>();
                     subsidyList.add("额外补贴能否获得由系统算法自动判断,人为无法干涉;");
                     subsidyList.add("额外补贴到账时间以及金额请以实际到账为准;");
                     subsidyList.add("额外补贴产生后将会在消息-资金消息中提醒你。");
                     order.setSubsidyList(subsidyList);
                  }
                  order.setSubsidy(subsidyInfo);
               }
            }
         }
         String hongBaoDate = null;
         String hongBaoState_Str = "";
         String hongbaoInfoFontColor = "#E5005C";
         /* 红包状态 转换 */
         String stateContent = "";
         String stateFontColor = "#E5005C";
         Integer orderHongBaoState = null;
         if (HongBaoV2.STATE_KELINGQU == hongBaoState || HongBaoV2.STATE_BUKELINGQU == hongBaoState) {
            orderHongBaoState = 1;
            stateContent = "未到账";
            hongBaoState_Str = "预估";
            Date preAccountTime = order.getPreAccountTime();
            if (preAccountTime != null) {
               hongBaoDate = "预计到账时间:" + formatday.format(preAccountTime);
            }
         } else if (HongBaoV2.STATE_YILINGQU == hongBaoState) {
            orderHongBaoState = 3;
            stateContent = "已到账";
            Date accountTime = order.getAccountTime();
            if (accountTime != null) {
               hongBaoDate = "到账时间:" + formatday.format(accountTime);
            }
         } else if (HongBaoV2.STATE_BUFENSHIXIAO == hongBaoState) {
            stateContent = "部分失效";
            orderHongBaoState = 3;
            Date accountTime = order.getAccountTime();
            if (accountTime != null) {
               hongBaoDate = "到账时间:" + formatday.format(accountTime);
            }
         } else if (HongBaoV2.STATE_SHIXIAO == hongBaoState) {
            orderHongBaoState = 4;
            stateContent = "已失效";
            hongbaoInfoFontColor = "#888888";
         }
         order.setHongBaoState(orderHongBaoState);
         order.setHongBaoDate(hongBaoDate);
         if (!StringUtil.isNullOrEmpty(order.getStateDesc())) {
            stateContent = stateContent + "-" + order.getStateDesc();
         }
         Map<String, String> stateMap = new HashMap<String, String>();
         stateMap.put("content", stateContent);
         stateMap.put("fontColor", stateFontColor);
         order.setAccountState(stateMap);
         hongbaoInfo = hongBaoState_Str + hongbaoInfo;
         Map<String, String> hongBaoMap = new HashMap<String, String>();
         hongBaoMap.put("content", hongbaoInfo + " ¥" + hongBao.setScale(2, BigDecimal.ROUND_DOWN).toString());
         hongBaoMap.put("fontColor", hongbaoInfoFontColor);
         order.setHongBaoInfo(hongBaoMap);
         // 非自购的订单 不显示返利、免单详情
         if (HongBaoV2.TYPE_ZIGOU != hongBaoType) {
            order.setSignList(signList);
         } else {
            // 奖励订单、免单 使用记录
            if (sourceType == null) {
               setSystemCouponRecord(order, hasRewardCoupon, exchangeCoupon, hongBaoState, hongBaoType, null,
                     signList, acceptData);
            } else if (sourceType == Constant.SOURCE_TYPE_TAOBAO) {
               setSystemCouponRecord(order, hasRewardCoupon, exchangeCoupon, hongBaoState, hongBaoType,
                     listRecordTB, signList, acceptData);
            } else if (sourceType == Constant.SOURCE_TYPE_JD) {
               setSystemCouponRecord(order, hasRewardCoupon, exchangeCoupon, hongBaoState, hongBaoType,
                     listRecordJD, signList, acceptData);
            } else if (sourceType == Constant.SOURCE_TYPE_PDD) {
               setSystemCouponRecord(order, hasRewardCoupon, exchangeCoupon, hongBaoState, hongBaoType,
                     listRecordPDD, signList, acceptData);
            }
         }
         // 分享、邀请 隐藏订单号
         if (HongBaoV2.TYPE_SHARE_GOODS == hongBaoType || HongBaoV2.TYPE_YAOQING == hongBaoType
               || HongBaoV2.TYPE_YIJI == hongBaoType || HongBaoV2.TYPE_ERJI == hongBaoType
               || HongBaoV2.TYPE_SHARE_YIJI == hongBaoType || HongBaoV2.TYPE_SHARE_ERJI == hongBaoType) {
            order.setOrderNo(UserUtil.filterOrderId(order.getOrderNo()));
         }
      }
   }
   @Override
   public List<CommonOrder> listBySourceTypeAndOrderId(int sourceType, String orderId) {
      return commonOrderMapper.listBySourceTypeAndOrderNo(sourceType, orderId);