From 81da61b828e29b7745e1382dfbbaeb685dc083ef Mon Sep 17 00:00:00 2001
From: admin <weikou2014>
Date: 星期二, 23 一月 2024 17:17:55 +0800
Subject: [PATCH] 抖音转链修改

---
 fanli/src/main/java/com/yeshi/fanli/service/impl/order/CommonOrderServiceImpl.java | 4020 ++++++++++++++++++++++++++++++++---------------------------
 1 files changed, 2,174 insertions(+), 1,846 deletions(-)

diff --git a/fanli/src/main/java/com/yeshi/fanli/service/impl/order/CommonOrderServiceImpl.java b/fanli/src/main/java/com/yeshi/fanli/service/impl/order/CommonOrderServiceImpl.java
index 5e9a369..80381e5 100644
--- a/fanli/src/main/java/com/yeshi/fanli/service/impl/order/CommonOrderServiceImpl.java
+++ b/fanli/src/main/java/com/yeshi/fanli/service/impl/order/CommonOrderServiceImpl.java
@@ -2,15 +2,19 @@
 
 import java.math.BigDecimal;
 import java.text.SimpleDateFormat;
-import java.util.ArrayList;
-import java.util.Date;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
+import java.util.*;
 
 import javax.annotation.Resource;
 
+import com.yeshi.fanli.entity.SystemEnum;
+import com.yeshi.fanli.entity.dy.DYOrder;
+import com.yeshi.fanli.service.inter.order.pdd.PDDOrderService;
+import com.yeshi.fanli.util.goods.douyin.CSJCPSApiUtil;
+import com.yeshi.fanli.util.goods.douyin.vo.DYGoodsDetail;
 import org.apache.commons.beanutils.PropertyUtils;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.context.annotation.Lazy;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 import org.yeshi.utils.DateUtil;
@@ -18,7 +22,6 @@
 import org.yeshi.utils.taobao.TbImgUtil;
 
 import com.aliyun.openservices.ons.api.Message;
-import com.aliyun.openservices.ons.api.Producer;
 import com.yeshi.fanli.dao.mybatis.order.CommonOrderGoodsMapper;
 import com.yeshi.fanli.dao.mybatis.order.CommonOrderMapper;
 import com.yeshi.fanli.dao.mybatis.order.CommonOrderTradeIdMapMapper;
@@ -28,6 +31,8 @@
 import com.yeshi.fanli.dto.mq.order.body.OrderConfirmMQMsg;
 import com.yeshi.fanli.dto.order.CommonOrderAddResultDTO;
 import com.yeshi.fanli.dto.pdd.PDDGoodsDetail;
+import com.yeshi.fanli.dto.suning.SuningGoodsInfo;
+import com.yeshi.fanli.dto.vip.goods.VIPGoodsInfo;
 import com.yeshi.fanli.entity.accept.AcceptData;
 import com.yeshi.fanli.entity.bus.user.HongBaoV2;
 import com.yeshi.fanli.entity.bus.user.UserInfo;
@@ -43,13 +48,17 @@
 import com.yeshi.fanli.entity.order.ESOrder;
 import com.yeshi.fanli.entity.order.HongBaoOrder;
 import com.yeshi.fanli.entity.order.InviteOrderSubsidy;
+import com.yeshi.fanli.entity.order.SourceTypeEnum;
 import com.yeshi.fanli.entity.pdd.PDDOrder;
+import com.yeshi.fanli.entity.suning.SuningOrderInfo;
 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.goods.facade.entity.taobao.TaoBaoGoodsBrief;
 import com.yeshi.fanli.entity.taobao.TaoBaoOrder;
 import com.yeshi.fanli.entity.taobao.TaoBaoOrderGoods;
 import com.yeshi.fanli.entity.taobao.TaoBaoWeiQuanOrder;
+import com.yeshi.fanli.entity.vipshop.VipShopOrder;
+import com.yeshi.fanli.entity.vipshop.VipShopOrderDetail;
 import com.yeshi.fanli.exception.order.CommonOrderException;
 import com.yeshi.fanli.exception.taobao.TaobaoGoodsDownException;
 import com.yeshi.fanli.log.LogHelper;
@@ -68,11 +77,12 @@
 import com.yeshi.fanli.service.inter.user.UserSystemCouponService;
 import com.yeshi.fanli.service.inter.user.invite.UserInviteService;
 import com.yeshi.fanli.service.inter.user.vip.UserVIPInfoService;
+import com.yeshi.fanli.service.manger.msg.RocketMQManager;
 import com.yeshi.fanli.service.manger.user.UserLevelManager;
 import com.yeshi.fanli.util.Constant;
-import com.yeshi.fanli.util.MoneyBigDecimalUtil;
+import org.yeshi.utils.MoneyBigDecimalUtil;
 import com.yeshi.fanli.util.StringUtil;
-import com.yeshi.fanli.util.TimeUtil;
+import org.yeshi.utils.TimeUtil;
 import com.yeshi.fanli.util.VersionUtil;
 import com.yeshi.fanli.util.account.UserUtil;
 import com.yeshi.fanli.util.factory.CommonOrderGoodsFactory;
@@ -82,10 +92,13 @@
 import com.yeshi.fanli.util.pinduoduo.PinDuoDuoApiUtil;
 import com.yeshi.fanli.util.rocketmq.MQMsgBodyFactory;
 import com.yeshi.fanli.util.rocketmq.MQTopicName;
+import com.yeshi.fanli.util.suning.SuningApiUtil;
+import com.yeshi.fanli.util.suning.SuningUtil;
 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.util.vipshop.VipShopApiUtil;
+import com.yeshi.common.vo.ClientTextStyleVO;
 import com.yeshi.fanli.vo.order.CommonOrderGoodsVO;
 import com.yeshi.fanli.vo.order.CommonOrderVO;
 import com.yeshi.fanli.vo.order.HongBaoCountVO;
@@ -97,2116 +110,2431 @@
 @Service
 public class CommonOrderServiceImpl implements CommonOrderService {
 
-	@Resource
-	private CommonOrderMapper commonOrderMapper;
+    private Logger logger = LoggerFactory.getLogger(CommonOrderService.class);
 
-	@Resource
-	private TaoBaoWeiQuanOrderMapper taoBaoWeiQuanOrderMapper;
 
-	@Resource
-	private CommonOrderGoodsMapper commonOrderGoodsMapper;
+    @Resource
+    private CommonOrderMapper commonOrderMapper;
 
-	@Resource
-	private JumpDetailV2Service jumpDetailV2Service;
+    @Resource
+    private TaoBaoWeiQuanOrderMapper taoBaoWeiQuanOrderMapper;
 
-	@Resource
-	private ConfigService configService;
+    @Resource
+    private CommonOrderGoodsMapper commonOrderGoodsMapper;
 
-	@Resource
-	private UserSystemCouponService userSystemCouponService;
+    @Resource
+    private JumpDetailV2Service jumpDetailV2Service;
 
-	@Resource
-	private UserSystemCouponRecordService userSystemCouponRecordService;
+    @Resource
+    private ConfigService configService;
 
-	@Resource
-	private SystemCouponService systemCouponService;
+    @Resource
+    private UserSystemCouponService userSystemCouponService;
 
-	@Resource
-	private HongBaoV2Service hongBaoV2Service;
+    @Resource
+    private UserSystemCouponRecordService userSystemCouponRecordService;
 
-	@Resource
-	private CommonOrderTradeIdMapMapper commonOrderTradeIdMapMapper;
+    @Resource
+    private HongBaoV2Service hongBaoV2Service;
 
-	@Resource
-	private CommonGoodsService commonGoodsService;
+    @Resource
+    private CommonOrderTradeIdMapMapper commonOrderTradeIdMapMapper;
 
-	@Resource
-	private HongBaoOrderService hongBaoOrderService;
+    @Resource
+    private CommonGoodsService commonGoodsService;
 
-	@Resource
-	private InviteOrderSubsidyService inviteOrderSubsidyService;
+    @Resource
+    private HongBaoOrderService hongBaoOrderService;
 
-	@Resource
-	private UserVIPInfoService userVIPInfoService;
+    @Resource
+    private InviteOrderSubsidyService inviteOrderSubsidyService;
 
-	@Resource
-	private UserInfoService userInfoService;
+    @Resource
+    private UserVIPInfoService userVIPInfoService;
 
-	@Resource
-	private UserInviteService userInviteService;
+    @Resource
+    private UserInfoService userInfoService;
 
-	@Resource
-	private UserLevelManager userLevelManager;
+    @Resource
+    private UserInviteService userInviteService;
 
-	@Resource
-	private TaoBaoOrderGoodsMapper taoBaoOrderGoodsMapper;
+    @Resource
+    private UserLevelManager userLevelManager;
 
-	@Resource(name = "producer")
-	private Producer orderProducer;
+    @Resource
+    private TaoBaoOrderGoodsMapper taoBaoOrderGoodsMapper;
 
-	// 濂栧姳璁㈠崟鍥剧墖
-	public final static String PIC_REWARD = "http://img.flqapp.com/resource/order/order_state_reward.png";
+    @Resource
+    private RocketMQManager rocketMQManager;
 
-	// 鍏嶅崟鐘舵�佸浘鐗�
-	public final static String PIC_FREE_ON = "http://img.flqapp.com/resource/order/order_state_freeing.png";
-	public final static String PIC_FREE_FAIL = "http://img.flqapp.com/resource/order/order_state_free_fail.png";
-	public final static String PIC_FREE_SUCCEED = "http://img.flqapp.com/resource/order/order_state_free_suc.png";
+    @Lazy
+    @Resource
+    private PDDOrderService pddOrderService;
 
-	@Override
-	public int insert(CommonOrder record) {
-		return commonOrderMapper.insert(record);
-	}
+    // 濂栧姳璁㈠崟鍥剧墖
+    public final static String PIC_REWARD = "http://img.flqapp.com/resource/order/order_state_reward.png";
 
-	@Override
-	public int insertSelective(CommonOrder record) {
-		return commonOrderMapper.insertSelective(record);
-	}
+    // 鍏嶅崟鐘舵�佸浘鐗�
+    public final static String PIC_FREE_ON = "http://img.flqapp.com/resource/order/order_state_freeing.png";
+    public final static String PIC_FREE_FAIL = "http://img.flqapp.com/resource/order/order_state_free_fail.png";
+    public final static String PIC_FREE_SUCCEED = "http://img.flqapp.com/resource/order/order_state_free_suc.png";
 
-	@Override
-	public int updateByPrimaryKeySelective(CommonOrder record) {
-		return commonOrderMapper.updateByPrimaryKeySelective(record);
-	}
+    @Override
+    public int insert(CommonOrder record) {
+        return commonOrderMapper.insert(record);
+    }
 
-	@Override
-	public int updateByPrimaryKey(CommonOrder record) {
-		return commonOrderMapper.updateByPrimaryKey(record);
-	}
+    @Override
+    public int insertSelective(CommonOrder record) {
+        return commonOrderMapper.insertSelective(record);
+    }
 
-	@Override
-	public int deleteByPrimaryKey(Long id) {
-		return commonOrderMapper.deleteByPrimaryKey(id);
-	}
+    @Override
+    public int updateByPrimaryKeySelective(CommonOrder record) {
+        return commonOrderMapper.updateByPrimaryKeySelective(record);
+    }
 
-	@Override
-	public CommonOrder selectByPrimaryKey(Long id) {
-		return commonOrderMapper.selectByPrimaryKey(id);
-	}
+    @Override
+    public int updateByPrimaryKey(CommonOrder record) {
+        return commonOrderMapper.updateByPrimaryKey(record);
+    }
 
-	@Override
-	public List<CommonOrderVO> listGroupOrderNoByUid(long start, int count, Long uid, Integer state, Integer type,
-			Integer orderState, String orderNo, String startTime, String endTime, Integer dateType, Integer source)
-			throws CommonOrderException {
-		List<Integer> listSource = new ArrayList<>();
-		if (source != null) {
-			listSource.add(source);
-		}
+    @Override
+    public int deleteByPrimaryKey(Long id) {
+        return commonOrderMapper.deleteByPrimaryKey(id);
+    }
 
-		return commonOrderMapper.listUserOrder(start, count, uid, state, type, orderState, orderNo, startTime, endTime,
-				dateType, listSource);
-	}
+    @Override
+    public CommonOrder selectByPrimaryKey(Long id) {
+        return commonOrderMapper.selectByPrimaryKey(id);
+    }
 
-	@Override
-	public long countGroupOrderNoByUid(Long uid, Integer state, Integer type, Integer orderState, String orderNo,
-			String startTime, String endTime, Integer dateType, List<Integer> listSource) throws CommonOrderException {
-		return commonOrderMapper.countUserOrder(uid, state, type, orderState, orderNo, startTime, endTime, dateType,
-				listSource);
-	}
+    @Override
+    public List<CommonOrderVO> listGroupOrderNoByUid(long start, int count, Long uid, Integer state, Integer type,
+                                                     Integer orderState, String orderNo, String startTime, String endTime, Integer dateType, Integer source)
+            throws CommonOrderException {
+        List<Integer> listSource = new ArrayList<>();
+        if (source != null) {
+            listSource.add(source);
+        }
 
-	@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,
-			List<Integer> listSource) throws CommonOrderException, Exception {
+        return commonOrderMapper.listUserOrder(start, count, uid, state, type, orderState, orderNo, startTime, endTime,
+                dateType, listSource);
+    }
 
-		int pageSize = Constant.PAGE_SIZE;
-		
-		List<CommonOrderVO> listOrder = commonOrderMapper.listUserOrder((page - 1) * pageSize, pageSize, uid, state,
-				type, orderState, orderNo, startTime, endTime, dateType, listSource);
+    @Override
+    public long countGroupOrderNoByUid(Long uid, Integer state, Integer type, Integer orderState, String orderNo,
+                                       String startTime, String endTime, Integer dateType, List<Integer> listSource) throws CommonOrderException {
+        return commonOrderMapper.countUserOrder(uid, state, type, orderState, orderNo, startTime, endTime, dateType,
+                listSource);
+    }
 
-		// 璁㈠崟淇℃伅涓虹┖
-		if (listOrder == null || listOrder.size() == 0) {
-			listOrder = new ArrayList<CommonOrderVO>();
-			return listOrder;
-		}
+    @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,
+                                             List<Integer> listSource) throws CommonOrderException, Exception {
 
-		// 鍟嗗搧淇℃伅
-		List<CommonOrderVO> listGoods = commonOrderMapper.listOrderGoodsInfo(listOrder);
-		// 璁㈠崟鍟嗗搧涓虹┖
-		if (listGoods == null || listGoods.size() == 0) {
-			return listOrder;
-		}
+        int pageSize = Constant.PAGE_SIZE;
 
-		// 鏁版嵁鍔犲伐閲嶆柊缁勭粐
-		if (VersionUtil.greaterThan_2_1(acceptData.getPlatform(), acceptData.getVersion())) {
-			orderVOFactory21(acceptData, listOrder, listGoods, uid);
-		} else {
-			orderVOFactory(acceptData, listOrder, listGoods, uid);
-		}
+        List<CommonOrderVO> listOrder = commonOrderMapper.listUserOrder((page - 1) * pageSize, pageSize, uid, state,
+                type, orderState, orderNo, startTime, endTime, dateType, listSource);
 
-		return listOrder;
-	}
+        // 璁㈠崟淇℃伅涓虹┖
+        if (listOrder == null || listOrder.size() == 0) {
+            listOrder = new ArrayList<CommonOrderVO>();
+            return listOrder;
+        }
 
-	/**
-	 * 璁㈠崟淇℃伅鍔犲伐
-	 * 
-	 * @param acceptData
-	 * @param listOrder
-	 * @param listGoods
-	 * @param uid
-	 */
-	private void orderVOFactory(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<CommonOrderVO> listGoods = commonOrderMapper.listOrderGoodsInfo(listOrder);
+        // 璁㈠崟鍟嗗搧涓虹┖
+        if (listGoods == null || listGoods.size() == 0) {
+            return listOrder;
+        }
 
-		List<UserSystemCouponRecord> listRecordTB = null;
-		if (listTB.size() > 0) {
-			listRecordTB = userSystemCouponRecordService.getRecordByOrderNoList(Constant.SOURCE_TYPE_TAOBAO, listTB);
-		}
+        // 鏁版嵁鍔犲伐閲嶆柊缁勭粐
+        if (VersionUtil.greaterThan_2_1(acceptData.getPlatform(), acceptData.getVersion())) {
+            orderVOFactory21(acceptData, listOrder, listGoods, uid);
+        } else {
+            orderVOFactory(acceptData, listOrder, listGoods, uid);
+        }
 
-		List<UserSystemCouponRecord> listRecordJD = null;
-		if (listJD.size() > 0) {
-			listRecordJD = userSystemCouponRecordService.getRecordByOrderNoList(Constant.SOURCE_TYPE_JD, listJD);
-		}
+        return listOrder;
+    }
 
-		List<UserSystemCouponRecord> listRecordPDD = null;
-		if (listPDD.size() > 0) {
-			listRecordPDD = userSystemCouponRecordService.getRecordByOrderNoList(Constant.SOURCE_TYPE_PDD, listPDD);
-		}
+    /**
+     * 璁㈠崟淇℃伅鍔犲伐
+     *
+     * @param acceptData
+     * @param listOrder
+     * @param listGoods
+     * @param uid
+     */
+    private void orderVOFactory(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<String> pddOrderSnList = new ArrayList<>();
+        if (listPDD != null && listPDD.size() > 0) {
+            for (String orderSn : listPDD)
+                pddOrderSnList.add(orderSn);
+        }
+        List<PDDOrder> pddOrderList = pddOrderService.listByOrderSns(listPDD);
+        Set<String> bjOrders = new HashSet<>();
+        if (pddOrderList != null) {
+            for (PDDOrder pdd : pddOrderList)
+                if (pdd.getFailReason() != null && pdd.getFailReason().contains("姣斾环"))
+                    bjOrders.add(pdd.getOrderSn());
+        }
+        for (CommonOrderVO commonOrderVO : listOrder) {
+            if (commonOrderVO.getSourceType() == Constant.SOURCE_TYPE_PDD && bjOrders.contains(commonOrderVO.getOrderNo())) {
+                commonOrderVO.setOrderStateDesc("姣斾环璁㈠崟");
+            }
+        }
 
-		// 闇�瑕佹煡璇㈡槸鍚︿负VIP鐨勭敤鎴稩D,鍙湁閭�璇疯鍗曟墠闇�瑕佹煡璇�
-		List<Long> needSelectVIPUidList = new ArrayList<>();
 
-		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)
-				needSelectVIPUidList.add(Long.parseLong(order.getUserId()));
-		}
-		Map<Long, Boolean> vipUserMap = userVIPInfoService.listByUids(needSelectVIPUidList);
+        List<UserSystemCouponRecord> listRecordTB = null;
+        if (listTB.size() > 0) {
+            listRecordTB = userSystemCouponRecordService.getRecordByOrderNoList(Constant.SOURCE_TYPE_TAOBAO, listTB);
+        }
 
-		// 璁剧疆鏄惁涓簐ip璁㈠崟
-		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);
+        List<UserSystemCouponRecord> listRecordJD = null;
+        if (listJD.size() > 0) {
+            listRecordJD = userSystemCouponRecordService.getRecordByOrderNoList(Constant.SOURCE_TYPE_JD, listJD);
+        }
 
-			if (order.isVipOrder())
-				order.setVipOrderDesc("璁㈠崟鏉ユ簮锛氱敱瓒呯骇浼氬憳鐨勭矇涓濅骇鐢�");
-		}
+        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");
+        // 闇�瑕佹煡璇㈡槸鍚︿负VIP鐨勭敤鎴稩D,鍙湁閭�璇疯鍗曟墠闇�瑕佹煡璇�
+        List<Long> needSelectVIPUidList = new ArrayList<>();
 
-		// 褰撳墠鐢ㄦ埛鏄惁VIP
-		boolean vip = userInviteService.verifyVIP(uid);
+        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)
+                needSelectVIPUidList.add(Long.parseLong(order.getUserId()));
+        }
+        Map<Long, Boolean> vipUserMap = userVIPInfoService.listByUids(needSelectVIPUidList);
 
-		// 鏄惁瀛樺湪濂栧姳鍒�
-		boolean hasRewardCoupon = userSystemCouponService.getValidRebateCoupon(uid);
-		for (CommonOrderVO order : listOrder) {
-			String orderNo = order.getOrderNo();
-			Integer sourceType = order.getSourceType();
-			Integer hongBaoType = order.getHongBaoType();
+        // 璁剧疆鏄惁涓簐ip璁㈠崟
+        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);
 
-			// 鍟嗗搧淇℃伅缁勫悎
-			for (CommonOrderVO commonOrder : listGoods) {
-				CommonOrderGoods goods = commonOrder.getCommonOrderGoods();
-				if (goods == null) {
-					continue;
-				}
+            if (order.isVipOrder())
+                order.setVipOrderDesc("璁㈠崟鏉ユ簮锛氱敱瓒呯骇浼氬憳鐨勭矇涓濅骇鐢�");
+        }
 
-				if (sourceType.equals(commonOrder.getSourceType()) && orderNo.equals(commonOrder.getOrderNo())) {
-					CommonOrderGoodsVO commonGoodsVO = new CommonOrderGoodsVO();
-					PropertyUtils.copyProperties(commonGoodsVO, goods);
-					commonGoodsVO.setGoodsType(sourceType);
+        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");
 
-					// 娣樺疂鍟嗗搧鍥剧墖澶勭悊
-					String picture = commonGoodsVO.getPicture();
-					if (sourceType == Constant.SOURCE_TYPE_TAOBAO && !StringUtil.isNullOrEmpty(picture)
-							&& !picture.contains("320x320")) {
-						commonGoodsVO.setPicture(TbImgUtil.getTBSize320Img(picture));
-					}
+        // 褰撳墠鐢ㄦ埛鏄惁VIP
+        boolean vip = userInviteService.verifyVIP(uid);
 
-					// 璐拱鏁伴噺
-					commonGoodsVO.setActualCount(commonOrder.getTotalCount() + "浠�");
+        // 鏄惁瀛樺湪濂栧姳鍒�
+        boolean hasRewardCoupon = userSystemCouponService.getValidRebateCoupon(uid);
+        for (CommonOrderVO order : listOrder) {
+            String orderNo = order.getOrderNo();
+            Integer sourceType = order.getSourceType();
+            Integer hongBaoType = order.getHongBaoType();
 
-					// 瀹炰粯娆�
-					BigDecimal totalSettlement = commonOrder.getTotalSettlement();
-					if (totalSettlement == null || totalSettlement.compareTo(new BigDecimal(0)) <= 0) {
-						totalSettlement = commonOrder.getTotalPayment();
-					}
-					commonGoodsVO.setActualPay("浠樻閲戦锛毬�" + totalSettlement);
+            // 鍟嗗搧淇℃伅缁勫悎
+            for (CommonOrderVO commonOrder : listGoods) {
+                CommonOrderGoods goods = commonOrder.getCommonOrderGoods();
+                if (goods == null) {
+                    continue;
+                }
 
-					// 閭�璇疯鍗曚俊鎭繚鎶�
-					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);
-					}
+                if (sourceType.equals(commonOrder.getSourceType()) && orderNo.equals(commonOrder.getOrderNo())) {
+                    CommonOrderGoodsVO commonGoodsVO = new CommonOrderGoodsVO();
+                    PropertyUtils.copyProperties(commonGoodsVO, goods);
+                    commonGoodsVO.setGoodsType(sourceType);
+                    commonGoodsVO.setPlaceOrderTime(TimeUtil.getGernalTime(order.getThirdCreateTime().getTime(), "yyyy.MM.dd HH:mm"));
 
-					// 璁㈠崟绫诲瀷涓虹┖鏃� 宸插晢鍝佺被涓哄噯
-					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);
-				}
-			}
+                    // 娣樺疂鍟嗗搧鍥剧墖澶勭悊
+                    String picture = commonGoodsVO.getPicture();
+                    if (sourceType == Constant.SOURCE_TYPE_TAOBAO && !StringUtil.isNullOrEmpty(picture)
+                            && !picture.contains("320x320")) {
+                        commonGoodsVO.setPicture(TbImgUtil.getTBSize320Img(picture));
+                    }
 
-			Date thirdCreateTime = order.getThirdCreateTime();
-			order.setDownTime("涓嬪崟鏃堕棿锛�" + format.format(thirdCreateTime));
-			order.setObtainTime(thirdCreateTime.getTime());
+                    // 璐拱鏁伴噺
+                    commonGoodsVO.setActualCount(commonOrder.getTotalCount() + "浠�");
 
-			Date settleTime = order.getSettleTime();
-			if (settleTime != null) {
-				order.setReceiveTime("鏀惰揣鏃堕棿锛�" + format.format(settleTime));
-			}
+                    // 瀹炰粯娆�
+                    BigDecimal totalSettlement = commonOrder.getTotalSettlement();
+                    if (totalSettlement == null || totalSettlement.compareTo(new BigDecimal(0)) <= 0) {
+                        totalSettlement = commonOrder.getTotalPayment();
+                    }
+                    if (totalSettlement == null || totalSettlement.compareTo(new BigDecimal(0)) <= 0)
+                        commonGoodsVO.setPayState("鏈粯娆�/宸查��娆�");
+                    else
+                        commonGoodsVO.setPayState("宸蹭粯娆�");
 
-			// 璁㈠崟绫诲瀷
-			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);
-			}
+                    commonGoodsVO.setActualPay("浠樻閲戦锛毬�" + totalSettlement);
 
-			/* 璁㈠崟鐘舵�� 杞崲澶勭悊 */
-			String orderStateContent = "";
-			Map<String, String> orderStateMap = new HashMap<String, String>();
-			// 璁㈠崟鐘舵��
-			Integer orderState = order.getState();
-			// 绾㈠寘鐘舵��
-			Integer hongBaoState = order.getHongBaoState();
+                    // 閭�璇疯鍗曚俊鎭繚鎶�
+                    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 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();
-				}
-			}
+                    // 璁㈠崟绫诲瀷涓虹┖鏃� 宸插晢鍝佺被涓哄噯
+                    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);
+                        }
+                    }
 
-			BigDecimal hongBao = order.getHongBao();
-			if (hongBao == null) {
-				hongBao = new BigDecimal(0);
-			}
+                    order.getListOrderGoods().add(commonGoodsVO);
+                }
+            }
 
-			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(), "缁存潈鎴愬姛");
+            Date thirdCreateTime = order.getThirdCreateTime();
+            order.setDownTime("涓嬪崟鏃堕棿锛�" + format.format(thirdCreateTime));
+            order.setObtainTime(thirdCreateTime.getTime());
 
-					boolean isPart = false;// 榛樿澶辨晥
-					BigDecimal weiQuanMoney = getWeiQuanMoney(listWQ, sourceType, uid);
+            Date settleTime = order.getSettleTime();
+            if (settleTime != null) {
+                order.setReceiveTime("鏀惰揣鏃堕棿锛�" + format.format(settleTime));
+            }
 
-					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);
+            // 璁㈠崟绫诲瀷
+            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 hongbaoInfo = "";
-			// 璁㈠崟鏍囪瘑
-			List<String> signList = new ArrayList<String>();
-			/* 璁㈠崟杩斿埄绫诲瀷 杞崲 */
-			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);
+            /* 璁㈠崟鐘舵�� 杞崲澶勭悊 */
+            String orderStateContent = "";
+            Map<String, String> orderStateMap = new HashMap<String, String>();
+            // 璁㈠崟鐘舵��
+            Integer orderState = order.getState();
+            // 绾㈠寘鐘舵��
+            Integer hongBaoState = order.getHongBaoState();
 
-			} 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);
+            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();
+                }
+            }
 
-			} 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);
+            BigDecimal hongBao = order.getHongBao();
+            if (hongBao == null) {
+                hongBao = new BigDecimal(0);
+            }
 
-				// 鐗堟湰鍖哄垎锛�2-0-2
-				if (VersionUtil.greaterThan_2_0_5(acceptData.getPlatform(), acceptData.getVersion())) {
-					InviteOrderSubsidy orderSubsidy = inviteOrderSubsidyService.getByOrderNoAndType(uid,
-							order.getOrderNo(), sourceType);
-					if (orderSubsidy != null) {
-						ClientTextStyleVO subsidyInfo = new ClientTextStyleVO();
-						subsidyInfo.setContent("(琛ヨ创楼" + orderSubsidy.getMoney() + ")");
-						if (orderSubsidy.getState() == InviteOrderSubsidy.STATE_SUBSIDIZED) {
-							subsidyInfo.setColor("#E5005C");
-						} else {
-							subsidyInfo.setColor("#888888");
-						}
-						order.setSubsidy(subsidyInfo);
+            //鍒ゆ柇鐘舵�佹槸鍚﹂璁句簡鐨�
+            if (!StringUtil.isNullOrEmpty(order.getOrderStateDesc())) {
+                orderStateContent = order.getOrderStateDesc();
+            } else {
+                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(), "缁存潈鎴愬姛");
 
-						// 瑙i噴淇℃伅锛堥棶鍙凤級
-						List<String> subsidyList = new ArrayList<String>();
-						subsidyList.add("棰濆琛ヨ创鑳藉惁鑾峰緱鐢辩郴缁熺畻娉曡嚜鍔ㄥ垽鏂紝浜轰负鏃犳硶骞叉秹锛�");
-						subsidyList.add("棰濆琛ヨ创鍒拌处鏃堕棿浠ュ強閲戦璇蜂互瀹為檯鍒拌处涓哄噯锛�");
-						subsidyList.add("棰濆琛ヨ创浜х敓鍚庡皢浼氬湪娑堟伅-璧勯噾娑堟伅涓彁閱掍綘銆�");
-						order.setSubsidyList(subsidyList);
-					}
-				}
-			}
-			order.setSignList(signList);
+                        boolean isPart = false;// 榛樿澶辨晥
+                        BigDecimal weiQuanMoney = getWeiQuanMoney(listWQ, sourceType, uid);
 
-			String hongBaoDate = null;
-			String hongBaoState_Str = "";
-			String hongbaoInfoFontColor = "#E5005C";
+                        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 stateContent = "";
-			String stateFontColor = "#E5005C";
-			Integer orderHongBaoState = null;
+            String hongbaoInfo = "";
+            // 璁㈠崟鏍囪瘑
+            List<String> signList = new ArrayList<String>();
+            /* 璁㈠崟杩斿埄绫诲瀷 杞崲 */
+            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);
 
-			if (HongBaoV2.STATE_KELINGQU == hongBaoState || HongBaoV2.STATE_BUKELINGQU == hongBaoState) {
-				orderHongBaoState = 1;
-				stateContent = "鏈埌璐�";
-				hongBaoState_Str = "棰勪及";
+            } 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);
 
-				Date preAccountTime = order.getPreAccountTime();
-				if (preAccountTime != null) {
-					hongBaoDate = "棰勮鍒拌处鏃堕棿锛�" + formatday.format(preAccountTime);
-				}
+            } 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);
 
-			} else if (HongBaoV2.STATE_YILINGQU == hongBaoState) {
-				orderHongBaoState = 3;
-				stateContent = "宸插埌璐�";
+                // 鐗堟湰鍖哄垎锛�2-0-2
+                if (VersionUtil.greaterThan_2_0_5(acceptData.getPlatform(), acceptData.getVersion())) {
+                    InviteOrderSubsidy orderSubsidy = inviteOrderSubsidyService.getByOrderNoAndType(uid,
+                            order.getOrderNo(), sourceType);
+                    if (orderSubsidy != null) {
+                        ClientTextStyleVO subsidyInfo = new ClientTextStyleVO();
+                        subsidyInfo.setContent("(琛ヨ创楼" + orderSubsidy.getMoney() + ")");
+                        if (orderSubsidy.getState() == InviteOrderSubsidy.STATE_SUBSIDIZED) {
+                            subsidyInfo.setColor("#E5005C");
+                        } else {
+                            subsidyInfo.setColor("#888888");
+                        }
+                        order.setSubsidy(subsidyInfo);
 
-				Date accountTime = order.getAccountTime();
-				if (accountTime != null) {
-					hongBaoDate = "鍒拌处鏃堕棿锛�" + formatday.format(accountTime);
-				}
+                        // 瑙i噴淇℃伅锛堥棶鍙凤級
+                        List<String> subsidyList = new ArrayList<String>();
+                        subsidyList.add("棰濆琛ヨ创鑳藉惁鑾峰緱鐢辩郴缁熺畻娉曡嚜鍔ㄥ垽鏂紝浜轰负鏃犳硶骞叉秹锛�");
+                        subsidyList.add("棰濆琛ヨ创鍒拌处鏃堕棿浠ュ強閲戦璇蜂互瀹為檯鍒拌处涓哄噯锛�");
+                        subsidyList.add("棰濆琛ヨ创浜х敓鍚庡皢浼氬湪娑堟伅-璧勯噾娑堟伅涓彁閱掍綘銆�");
+                        order.setSubsidyList(subsidyList);
+                    }
+                }
+            }
+            order.setSignList(signList);
 
-			} else if (HongBaoV2.STATE_BUFENSHIXIAO == hongBaoState) {
-				stateContent = "閮ㄥ垎澶辨晥";
-				orderHongBaoState = 3;
-				Date accountTime = order.getAccountTime();
-				if (accountTime != null) {
-					hongBaoDate = "鍒拌处鏃堕棿锛�" + formatday.format(accountTime);
-				}
+            String hongBaoDate = null;
+            String hongBaoState_Str = "";
+            String hongbaoInfoFontColor = "#E5005C";
 
-			} else if (HongBaoV2.STATE_SHIXIAO == hongBaoState) {
-				orderHongBaoState = 4;
-				stateContent = "宸插け鏁�";
-				hongbaoInfoFontColor = "#888888";
-			}
-			order.setHongBaoState(orderHongBaoState);
-			order.setHongBaoDate(hongBaoDate);
+            /* 绾㈠寘鐘舵�� 杞崲 */
+            String stateContent = "";
+            String stateFontColor = "#E5005C";
+            Integer orderHongBaoState = null;
 
-			if (!StringUtil.isNullOrEmpty(order.getStateDesc())) {
-				stateContent = stateContent + "-" + order.getStateDesc();
-			}
+            if (HongBaoV2.STATE_KELINGQU == hongBaoState || HongBaoV2.STATE_BUKELINGQU == hongBaoState) {
+                orderHongBaoState = 1;
+                stateContent = "鏈埌璐�";
+                hongBaoState_Str = "棰勪及";
 
-			Map<String, String> stateMap = new HashMap<String, String>();
-			stateMap.put("content", stateContent);
-			stateMap.put("fontColor", stateFontColor);
-			order.setAccountState(stateMap);
+                Date preAccountTime = order.getPreAccountTime();
+                if (preAccountTime != null) {
+                    hongBaoDate = "棰勮鍒拌处鏃堕棿锛�" + formatday.format(preAccountTime);
+                }
 
-			hongbaoInfo = hongBaoState_Str + hongbaoInfo;
+            } else if (HongBaoV2.STATE_YILINGQU == hongBaoState) {
+                orderHongBaoState = 3;
+                stateContent = "宸插埌璐�";
 
-			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);
+                Date accountTime = order.getAccountTime();
+                if (accountTime != null) {
+                    hongBaoDate = "鍒拌处鏃堕棿锛�" + formatday.format(accountTime);
+                }
 
-			// 鏄剧ず杩斿埄銆佸厤鍗曡鎯�
-			if (HongBaoV2.TYPE_ZIGOU == hongBaoType) {
-				// 濂栧姳璁㈠崟銆佸厤鍗� 浣跨敤璁板綍
-				if (sourceType == null) {
-					couponFactory(order, hasRewardCoupon, hongBaoState, hongBaoType, null, uid, vip, acceptData,
-							hongBao);
-				} else if (sourceType == Constant.SOURCE_TYPE_TAOBAO) {
-					couponFactory(order, hasRewardCoupon, hongBaoState, hongBaoType, listRecordTB, uid, vip, acceptData,
-							hongBao);
-				} else if (sourceType == Constant.SOURCE_TYPE_JD) {
-					couponFactory(order, hasRewardCoupon, hongBaoState, hongBaoType, listRecordJD, uid, vip, acceptData,
-							hongBao);
-				} else if (sourceType == Constant.SOURCE_TYPE_PDD) {
-					couponFactory(order, hasRewardCoupon, hongBaoState, hongBaoType, listRecordPDD, uid, vip,
-							acceptData, hongBao);
-				}
-			}
+            } else if (HongBaoV2.STATE_BUFENSHIXIAO == hongBaoState) {
+                stateContent = "閮ㄥ垎澶辨晥";
+                orderHongBaoState = 3;
+                Date accountTime = order.getAccountTime();
+                if (accountTime != null) {
+                    hongBaoDate = "鍒拌处鏃堕棿锛�" + formatday.format(accountTime);
+                }
 
-			// 閭�璇� 闅愯棌璁㈠崟鍙�
-			if (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()));
-			}
-		}
-	}
+            } else if (HongBaoV2.STATE_SHIXIAO == hongBaoState) {
+                orderHongBaoState = 4;
+                stateContent = "宸插け鏁�";
+                hongbaoInfoFontColor = "#888888";
+            }
+            order.setHongBaoState(orderHongBaoState);
+            order.setHongBaoDate(hongBaoDate);
 
-	/**
-	 * 璁㈠崟锛� 鍏嶅崟鏍囪瘑 濂栧姳鏍囪瘑
-	 * 
-	 * @param order
-	 * @param hasRewardCoupon
-	 * @param hongBaoState
-	 * @param list
-	 * @param signList
-	 */
-	private void couponFactory(CommonOrderVO order, boolean hasRewardCoupon, Integer hongBaoState, Integer hongBaoType,
-			List<UserSystemCouponRecord> list, Long uid, boolean vip, AcceptData acceptData, BigDecimal hongBao)
-			throws Exception {
+            if (!StringUtil.isNullOrEmpty(order.getStateDesc())) {
+                stateContent = stateContent + "-" + order.getStateDesc();
+            }
 
-		// 鏄惁鍏嶅崟鍟嗗搧
-		boolean freeOrder = false;
-		// 鏄惁濂栧姳鎴愬姛
-		boolean rewardSuccess = false;
-		boolean version2_1 = VersionUtil.greaterThan_2_0_5(acceptData.getPlatform(), acceptData.getVersion());
+            Map<String, String> stateMap = new HashMap<String, String>();
+            stateMap.put("content", stateContent);
+            stateMap.put("fontColor", stateFontColor);
+            order.setAccountState(stateMap);
 
-		if (list != null && list.size() > 0) {
-			for (UserSystemCouponRecord couponRecord : list) {
-				int goodSource = couponRecord.getGoodSource();
-				if (goodSource == 0)
-					goodSource = 1;
+            hongbaoInfo = hongBaoState_Str + hongbaoInfo;
 
-				if (order.getOrderNo().equals(couponRecord.getOrderNo()) && goodSource == order.getSourceType()) {
-					Integer state = couponRecord.getState();
-					String systemCouponType = couponRecord.getCouponType();
-					if (CouponTypeEnum.rebatePercentCoupon.name().equals(systemCouponType)
-							&& UserSystemCouponRecord.STATE_SUCCESS == state) {
-						rewardSuccess = true;
-						if (!version2_1) {
-							// 濂栧姳鎴愬姛
-							order.getSignList().add(PIC_REWARD);
-						}
-					} else if (CouponTypeEnum.freeCoupon.name().equals(systemCouponType)
-							|| CouponTypeEnum.welfareFreeCoupon.name().equals(systemCouponType)
-							|| CouponTypeEnum.freeCouponBuy.name().equals(systemCouponType)) {
+            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 (UserSystemCouponRecord.STATE_FREE_ON == state) {
-							// 鍏嶅崟涓�
-							freeOrder = true;
-							order.getSignList().add(PIC_FREE_ON);
-						} else if (UserSystemCouponRecord.STATE_SUCCESS == state) {
-							// 鍏嶅崟鎴愬姛
-							freeOrder = true;
-							order.getSignList().add(PIC_FREE_SUCCEED);
-						} else if (UserSystemCouponRecord.STATE_FAIL_RULE == state
-								|| UserSystemCouponRecord.STATE_FAIL_DRAWBACK == state) {
-							// 瑙勫垯涓嶅尮閰嶃�侀��娆�
-							freeOrder = true;
-							order.getSignList().add(PIC_FREE_FAIL);
-						}
-					}
-					break;
-				}
-			}
-		}
+            // 鏄剧ず杩斿埄銆佸厤鍗曡鎯�
+            if (HongBaoV2.TYPE_ZIGOU == hongBaoType) {
+                // 濂栧姳璁㈠崟銆佸厤鍗� 浣跨敤璁板綍
+                if (sourceType == null) {
+                    couponFactory(order, hasRewardCoupon, hongBaoState, hongBaoType, null, uid, vip, acceptData,
+                            hongBao);
+                } else if (sourceType == Constant.SOURCE_TYPE_TAOBAO) {
+                    couponFactory(order, hasRewardCoupon, hongBaoState, hongBaoType, listRecordTB, uid, vip, acceptData,
+                            hongBao);
+                } else if (sourceType == Constant.SOURCE_TYPE_JD) {
+                    couponFactory(order, hasRewardCoupon, hongBaoState, hongBaoType, listRecordJD, uid, vip, acceptData,
+                            hongBao);
+                } else if (sourceType == Constant.SOURCE_TYPE_PDD) {
+                    couponFactory(order, hasRewardCoupon, hongBaoState, hongBaoType, listRecordPDD, uid, vip,
+                            acceptData, hongBao);
+                }
+            }
 
-		// 鍏嶅崟璇︽儏
-		if (freeOrder) {
-			ClientTextStyleVO rewardStyleVO = new ClientTextStyleVO();
-			rewardStyleVO.setContent("鍏嶅崟璇︽儏 >");
-			rewardStyleVO.setColor("#E5005C");
-			rewardStyleVO.setBottomColor("#FFDCEA");
+            // 閭�璇� 闅愯棌璁㈠崟鍙�
+            if (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()));
+            }
+        }
+    }
 
-			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() + "");
-			}
+    /**
+     * 璁㈠崟锛� 鍏嶅崟鏍囪瘑 濂栧姳鏍囪瘑
+     *
+     * @param order
+     * @param hasRewardCoupon
+     * @param hongBaoState
+     * @param list
+     */
+    private void couponFactory(CommonOrderVO order, boolean hasRewardCoupon, Integer hongBaoState, Integer hongBaoType,
+                               List<UserSystemCouponRecord> list, Long uid, boolean vip, AcceptData acceptData, BigDecimal hongBao)
+            throws Exception {
 
-			Map<String, Object> jump = new HashMap<String, Object>();
-			jump.put("type", 1); // 椤甸潰璺宠浆
-			jump.put("params", jumpLink);
-			jump.put("jumpDetail", jumpDetailV2Service.getByTypeCache("freeCouponDetail"));
+        // 鏄惁鍏嶅崟鍟嗗搧
+        boolean freeOrder = false;
+        // 鏄惁濂栧姳鎴愬姛
+        boolean rewardSuccess = false;
+        boolean version2_1 = VersionUtil.greaterThan_2_0_5(acceptData.getPlatform(), acceptData.getVersion());
 
-			Map<String, Object> rewardMap = new HashMap<String, Object>();
-			rewardMap.put("text", rewardStyleVO);
-			rewardMap.put("jump", jump);
-			order.setRewardDetail(rewardMap);
-		}
+        if (list != null && list.size() > 0) {
+            for (UserSystemCouponRecord couponRecord : list) {
+                int goodSource = couponRecord.getGoodSource();
+                if (goodSource == 0)
+                    goodSource = 1;
 
-		// 宸蹭娇鐢ㄥ鍔卞埜
-		if (rewardSuccess) {
-			ClientTextStyleVO rewardStyleVO = new ClientTextStyleVO();
-			rewardStyleVO.setColor("#E5005C");
-			rewardStyleVO.setBottomColor("#FFDCEA");
+                if (order.getOrderNo().equals(couponRecord.getOrderNo()) && goodSource == order.getSourceType()) {
+                    Integer state = couponRecord.getState();
+                    String systemCouponType = couponRecord.getCouponType();
+                    if (CouponTypeEnum.rebatePercentCoupon.name().equals(systemCouponType)
+                            && UserSystemCouponRecord.STATE_SUCCESS == state) {
+                        rewardSuccess = true;
+                        if (!version2_1) {
+                            // 濂栧姳鎴愬姛
+                            order.getSignList().add(PIC_REWARD);
+                        }
+                    } else if (CouponTypeEnum.freeCoupon.name().equals(systemCouponType)
+                            || CouponTypeEnum.welfareFreeCoupon.name().equals(systemCouponType)
+                            || CouponTypeEnum.freeCouponBuy.name().equals(systemCouponType)) {
 
-			if (version2_1) {
-				rewardStyleVO.setContent("宸蹭娇鐢ㄥ鍔卞埜 >");
-			} else {
-				rewardStyleVO.setContent("杩斿埄濂栧姳 >");
-			}
+                        if (UserSystemCouponRecord.STATE_FREE_ON == state) {
+                            // 鍏嶅崟涓�
+                            freeOrder = true;
+                            order.getSignList().add(PIC_FREE_ON);
+                        } else if (UserSystemCouponRecord.STATE_SUCCESS == state) {
+                            // 鍏嶅崟鎴愬姛
+                            freeOrder = true;
+                            order.getSignList().add(PIC_FREE_SUCCEED);
+                        } else if (UserSystemCouponRecord.STATE_FAIL_RULE == state
+                                || UserSystemCouponRecord.STATE_FAIL_DRAWBACK == state) {
+                            // 瑙勫垯涓嶅尮閰嶃�侀��娆�
+                            freeOrder = true;
+                            order.getSignList().add(PIC_FREE_FAIL);
+                        }
+                    }
+                    break;
+                }
+            }
+        }
 
-			Map<String, Object> rewardMap = new HashMap<String, Object>();
-			rewardMap.put("text", rewardStyleVO);
-			Map<String, Object> jumpLink = new HashMap<String, Object>();
-			jumpLink.put("orderNo", order.getOrderNo());
-			jumpLink.put("goodsType", order.getSourceType() + "");
+        // 鍏嶅崟璇︽儏
+        if (freeOrder) {
+            ClientTextStyleVO rewardStyleVO = new ClientTextStyleVO();
+            rewardStyleVO.setContent("鍏嶅崟璇︽儏 >");
+            rewardStyleVO.setColor("#E5005C");
+            rewardStyleVO.setBottomColor("#FFDCEA");
 
-			Map<String, Object> jump = new HashMap<String, Object>();
-			jump.put("type", 1); // 1 甯歌璺宠浆椤甸潰
-			jump.put("params", jumpLink);
-			jump.put("jumpDetail", jumpDetailV2Service.getByTypeCache("rewardCouponDetail"));
-			rewardMap.put("jump", jump);
-			order.setRewardDetail(rewardMap);
-		}
+            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 (hongBao.compareTo(Constant.REWARD_COUPON_LIMIT_MONEY) > 0) {
-			return;
-		}
+            Map<String, Object> jump = new HashMap<String, Object>();
+            jump.put("type", 1); // 椤甸潰璺宠浆
+            jump.put("params", jumpLink);
+            jump.put("jumpDetail", jumpDetailV2Service.getByTypeCache("freeCouponDetail", acceptData.getSystem()));
 
-		// 鏄惁鍙娇鐢ㄥ鍔卞埜
-		if (!rewardSuccess && !freeOrder && HongBaoV2.TYPE_ZIGOU == hongBaoType
-				&& HongBaoV2.STATE_YILINGQU == hongBaoState && !vip && CommonOrder.STATE_WQ != order.getState()) {
-			// 涓嬪崟鏃堕棿
-			Date thirdCreateTime = order.getThirdCreateTime();
-			// 鍒拌处鏃堕棿
-			Date accountTime = order.getAccountTime();
-			if (thirdCreateTime == null || accountTime == null)
-				return;
+            Map<String, Object> rewardMap = new HashMap<String, Object>();
+            rewardMap.put("text", rewardStyleVO);
+            rewardMap.put("jump", jump);
+            order.setRewardDetail(rewardMap);
+        }
 
-			// 涓嬪崟鏃ユ湡鏄惁鏄鍚堜笂绾挎棩鏈�
-			long downOrderTime = thirdCreateTime.getTime();
-			long limitDate = TimeUtil.convertDateToTemp(Constant.VIP_ONLINE_TIME);
-			if (downOrderTime > limitDate) {
-				// 2.1 寮�濮嬫柊鐗�
-				rewardCounponLimitTime(order, accountTime);
-			} else if (hasRewardCoupon) {
-				// 鍦�2.1鏂扮増涓婄嚎涔嬪墠璁㈠崟-瀛樺湪鍒欐樉绀哄鍔卞埜鍙娇鐢�
-				ClientTextStyleVO rewardStyleVO = new ClientTextStyleVO();
-				rewardStyleVO.setColor("#E5005C");
-				rewardStyleVO.setBottomColor("#FFDCEA");
-				rewardStyleVO.setContent("杩斿埄濂栧姳 >");
+        // 宸蹭娇鐢ㄥ鍔卞埜
+        if (rewardSuccess) {
+            ClientTextStyleVO rewardStyleVO = new ClientTextStyleVO();
+            rewardStyleVO.setColor("#E5005C");
+            rewardStyleVO.setBottomColor("#FFDCEA");
 
-				Map<String, Object> jumpLink = new HashMap<String, Object>();
-				jumpLink.put("orderNo", order.getOrderNo());
-				jumpLink.put("goodsType", order.getSourceType() + "");
+            if (version2_1) {
+                rewardStyleVO.setContent("宸蹭娇鐢ㄥ鍔卞埜 >");
+            } else {
+                rewardStyleVO.setContent("杩斿埄濂栧姳 >");
+            }
 
-				Map<String, Object> jump = new HashMap<String, Object>();
-				jump.put("type", 2); // 寮规
-				jump.put("params", jumpLink);
-				jump.put("jumpDetail", jumpDetailV2Service.getByTypeCache("rewardCouponDetail"));
+            Map<String, Object> rewardMap = new HashMap<String, Object>();
+            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> rewardMap = new HashMap<String, Object>();
-				rewardMap.put("text", rewardStyleVO);
-				rewardMap.put("jump", jump);
-				order.setRewardDetail(rewardMap);
-			}
-		}
-	}
+            Map<String, Object> jump = new HashMap<String, Object>();
+            jump.put("type", 1); // 1 甯歌璺宠浆椤甸潰
+            jump.put("params", jumpLink);
+            jump.put("jumpDetail", jumpDetailV2Service.getByTypeCache("rewardCouponDetail", acceptData.getSystem()));
+            rewardMap.put("jump", jump);
+            order.setRewardDetail(rewardMap);
+        }
 
-	private void rewardCounponLimitTime(CommonOrderVO order, Date accountTime) throws Exception {
-		// 鍊掕鏃堕獙璇�
-		Date endDay = DateUtil.plusDayDate(Constant.COUPON_REWARD_LIMIT_DAY, accountTime);
-		long currentTime = java.lang.System.currentTimeMillis();
-		if (endDay.getTime() <= currentTime)
-			return;
+        // 浣跨敤濂栧姳鍒� 閲戦棰濋檺鍒�
+        if (hongBao.compareTo(Constant.REWARD_COUPON_LIMIT_MONEY) > 0) {
+            return;
+        }
 
-		String num = null;
-		String unit = null;
-		boolean canUse = false;
-		DateInfo dateInfo = DateUtil.dateDiff3(currentTime, endDay.getTime());
+        // 鏄惁鍙娇鐢ㄥ鍔卞埜
+        if (!rewardSuccess && !freeOrder && HongBaoV2.TYPE_ZIGOU == hongBaoType
+                && HongBaoV2.STATE_YILINGQU == hongBaoState && !vip && CommonOrder.STATE_WQ != order.getState()) {
+            // 涓嬪崟鏃堕棿
+            Date thirdCreateTime = order.getThirdCreateTime();
+            // 鍒拌处鏃堕棿
+            Date accountTime = order.getAccountTime();
+            if (thirdCreateTime == null || accountTime == null)
+                return;
 
-		if (dateInfo.getDay() > 0) {
-			canUse = true;
-			unit = "澶�";
-			num = dateInfo.getDay().toString();
-		}
+            // 涓嬪崟鏃ユ湡鏄惁鏄鍚堜笂绾挎棩鏈�
+            long downOrderTime = thirdCreateTime.getTime();
+            long limitDate = TimeUtil.convertDateToTemp(Constant.VIP_ONLINE_TIME);
+            if (downOrderTime > limitDate) {
+                // 2.1 寮�濮嬫柊鐗�
+                rewardCounponLimitTime(order, accountTime, acceptData.getSystem());
+            } else if (hasRewardCoupon) {
+                // 鍦�2.1鏂扮増涓婄嚎涔嬪墠璁㈠崟-瀛樺湪鍒欐樉绀哄鍔卞埜鍙娇鐢�
+                ClientTextStyleVO rewardStyleVO = new ClientTextStyleVO();
+                rewardStyleVO.setColor("#E5005C");
+                rewardStyleVO.setBottomColor("#FFDCEA");
+                rewardStyleVO.setContent("杩斿埄濂栧姳 >");
 
-		if (!canUse && dateInfo.getHour() > 0) {
-			canUse = true;
-			unit = "灏忔椂";
-			num = dateInfo.getHour().toString();
-		}
+                Map<String, Object> jumpLink = new HashMap<String, Object>();
+                jumpLink.put("orderNo", order.getOrderNo());
+                jumpLink.put("goodsType", order.getSourceType() + "");
 
-		if (!canUse && dateInfo.getMinute() > 0) {
-			canUse = true;
-			unit = "鍒�";
-			num = dateInfo.getMinute().toString();
-		}
+                Map<String, Object> jump = new HashMap<String, Object>();
+                jump.put("type", 2); // 寮规
+                jump.put("params", jumpLink);
+                jump.put("jumpDetail", jumpDetailV2Service.getByTypeCache("rewardCouponDetail", acceptData.getSystem()));
 
-		if (!canUse && dateInfo.getSecond() > 0) {
-			canUse = true;
-			unit = "绉�";
-			num = dateInfo.getSecond().toString();
-		}
+                Map<String, Object> rewardMap = new HashMap<String, Object>();
+                rewardMap.put("text", rewardStyleVO);
+                rewardMap.put("jump", jump);
+                order.setRewardDetail(rewardMap);
+            }
+        }
+    }
 
-		// 宸茬粡瓒呮椂
-		if (!canUse)
-			return;
+    private void rewardCounponLimitTime(CommonOrderVO order, Date accountTime, SystemEnum system) throws Exception {
+        // 鍊掕鏃堕獙璇�
+        Date endDay = DateUtil.plusDayDate(Constant.COUPON_REWARD_LIMIT_DAY, accountTime);
+        long currentTime = java.lang.System.currentTimeMillis();
+        if (endDay.getTime() <= currentTime)
+            return;
 
-		Map<String, Object> rewardMap = new HashMap<String, Object>();
-		ClientTextStyleVO rewardStyleVO = new ClientTextStyleVO();
-		rewardStyleVO.setColor("#E5005C");
-		rewardStyleVO.setBottomColor("#FFDCEA");
-		rewardStyleVO.setContent("浣跨敤濂栧姳鍒�");
-		rewardMap.put("text", rewardStyleVO);
+        String num = null;
+        String unit = null;
+        boolean canUse = false;
+        DateInfo dateInfo = DateUtil.dateDiff3(currentTime, endDay.getTime());
 
-		ClientTextStyleVO txt1 = new ClientTextStyleVO();
-		txt1.setContent("鍓�");
-		txt1.setColor("#666666");
-		txt1.setBottomColor("#FFDCEA");
+        if (dateInfo.getDay() > 0) {
+            canUse = true;
+            unit = "澶�";
+            num = dateInfo.getDay().toString();
+        }
 
-		ClientTextStyleVO txt2 = new ClientTextStyleVO();
-		txt2.setContent(num);
-		txt2.setColor("#E5005C");
-		txt2.setBottomColor("#FFDCEA");
-		txt2.setFontSize("1.33");
+        if (!canUse && dateInfo.getHour() > 0) {
+            canUse = true;
+            unit = "灏忔椂";
+            num = dateInfo.getHour().toString();
+        }
 
-		ClientTextStyleVO txt3 = new ClientTextStyleVO();
-		txt3.setContent(unit + "鍏抽棴 >");
-		txt3.setColor("#666666");
-		txt3.setBottomColor("#FFDCEA");
+        if (!canUse && dateInfo.getMinute() > 0) {
+            canUse = true;
+            unit = "鍒�";
+            num = dateInfo.getMinute().toString();
+        }
 
-		List<ClientTextStyleVO> ticking = new ArrayList<ClientTextStyleVO>();
-		ticking.add(txt1);
-		ticking.add(txt2);
-		ticking.add(txt3);
-		rewardMap.put("ticking", ticking);
-		Map<String, Object> jumpLink = new HashMap<String, Object>();
-		jumpLink.put("orderNo", order.getOrderNo());
-		jumpLink.put("goodsType", order.getSourceType() + "");
+        if (!canUse && dateInfo.getSecond() > 0) {
+            canUse = true;
+            unit = "绉�";
+            num = dateInfo.getSecond().toString();
+        }
 
-		Map<String, Object> jump = new HashMap<String, Object>();
-		jump.put("type", 2); // 寮瑰嚭妗嗕娇鐢ㄥ埜
-		jump.put("params", jumpLink);
-		jump.put("jumpDetail", jumpDetailV2Service.getByTypeCache("rewardCouponDetail"));
-		rewardMap.put("jump", jump);
-		order.setRewardDetail(rewardMap);
-	}
+        // 宸茬粡瓒呮椂
+        if (!canUse)
+            return;
 
-	@Override
-	public Map<String, BigDecimal> countHistoryOrder(Long uid, Integer day, Integer source) {
-		return commonOrderMapper.countHistoryOrder(uid, day, source);
-	}
+        Map<String, Object> rewardMap = new HashMap<String, Object>();
+        ClientTextStyleVO rewardStyleVO = new ClientTextStyleVO();
+        rewardStyleVO.setColor("#E5005C");
+        rewardStyleVO.setBottomColor("#FFDCEA");
+        rewardStyleVO.setContent("浣跨敤濂栧姳鍒�");
+        rewardMap.put("text", rewardStyleVO);
 
-	@Override
-	public OrderCountVO getOrderCount(Long uid, Integer day, List<Integer> listSource) {
-		return commonOrderMapper.getOrderCount(uid, day, listSource);
-	}
+        ClientTextStyleVO txt1 = new ClientTextStyleVO();
+        txt1.setContent("鍓�");
+        txt1.setColor("#666666");
+        txt1.setBottomColor("#FFDCEA");
 
-	@Override
-	public long countBonusOrderNumber(Long uid, Integer type, Integer day, String startTime, String endTime,
-			Integer source) {
-		return commonOrderMapper.countBonusOrderNumber(uid, type, day, startTime, endTime, source);
-	}
+        ClientTextStyleVO txt2 = new ClientTextStyleVO();
+        txt2.setContent(num);
+        txt2.setColor("#E5005C");
+        txt2.setBottomColor("#FFDCEA");
+        txt2.setFontSize("1.33");
 
-	@Override
-	public BigDecimal countBonusOrderMoney(Long uid, Integer type, Integer day, String startTime, String endTime,
-			Integer source) {
-		return commonOrderMapper.countBonusOrderMoney(uid, type, day, startTime, endTime, source);
-	}
+        ClientTextStyleVO txt3 = new ClientTextStyleVO();
+        txt3.setContent(unit + "鍏抽棴 >");
+        txt3.setColor("#666666");
+        txt3.setBottomColor("#FFDCEA");
 
-	@Override
-	public Map<String, Object> countBonusOrderMoneyAndNumber(Long uid, Integer type, Integer day, String startTime,
-			String endTime, Integer source) {
-		return commonOrderMapper.countBonusOrderMoneyAndNumber(uid, type, day, startTime, endTime, source);
-	}
+        List<ClientTextStyleVO> ticking = new ArrayList<ClientTextStyleVO>();
+        ticking.add(txt1);
+        ticking.add(txt2);
+        ticking.add(txt3);
+        rewardMap.put("ticking", ticking);
+        Map<String, Object> jumpLink = new HashMap<String, Object>();
+        jumpLink.put("orderNo", order.getOrderNo());
+        jumpLink.put("goodsType", order.getSourceType() + "");
 
-	@Override
-	public Long countUserOrderToApp(Long uid, Integer type, String startTime, String endTime, Integer day,
-			Integer source, Integer state, Integer stateOrder) {
-		return commonOrderMapper.countUserOrderToApp(uid, type, startTime, endTime, day, source, state, stateOrder);
-	}
+        Map<String, Object> jump = new HashMap<String, Object>();
+        jump.put("type", 2); // 寮瑰嚭妗嗕娇鐢ㄥ埜
+        jump.put("params", jumpLink);
+        jump.put("jumpDetail", jumpDetailV2Service.getByTypeCache("rewardCouponDetail", system));
+        rewardMap.put("jump", jump);
+        order.setRewardDetail(rewardMap);
+    }
 
-	@Override
-	public BigDecimal getWeiQuanMoney(List<TaoBaoWeiQuanOrder> listWQ, int sourceType, Long uid) {
-		BigDecimal weiQuanMoney = new BigDecimal(0);
-		if (listWQ != null && listWQ.size() > 0) {
-			for (TaoBaoWeiQuanOrder weiQuanOrder : listWQ) {
-				String tradeId = weiQuanOrder.getOrderItemId();
-				// 鏌ヨ绾㈠寘
-				List<String> tradeList = new ArrayList<>();
-				tradeList.add(tradeId);
-				List<HongBaoV2> hongBaoList = hongBaoV2Service.listBySourceTypeAndTradeIdListAndUid(sourceType, uid,
-						tradeList);
-				if (hongBaoList != null && hongBaoList.size() > 0) {
-					CommonOrder commonOrder = commonOrderMapper.selectBySourceTypeAndTradeId(sourceType, tradeId);
-					if (commonOrder != null && commonOrder.getSettlement().compareTo(new BigDecimal(0)) > 0) {
-						BigDecimal wqMoney = MoneyBigDecimalUtil
-								.mul(hongBaoList.get(0).getMoney(), weiQuanOrder.getMoney())
-								.divide(commonOrder.getSettlement(), 2, BigDecimal.ROUND_UP);
-						if (wqMoney.compareTo(hongBaoList.get(0).getMoney()) > 0)
-							wqMoney = hongBaoList.get(0).getMoney();
-						weiQuanMoney = weiQuanMoney.add(wqMoney);
-					}
-				}
-			}
-		}
-		return weiQuanMoney;
-	}
+    @Override
+    public Map<String, BigDecimal> countHistoryOrder(Long uid, Integer day, Integer source) {
+        return commonOrderMapper.countHistoryOrder(uid, day, source);
+    }
 
-	@Override
-	public List<CommonOrder> listBySourceTypeAndOrderId(int sourceType, String orderId) {
-		return commonOrderMapper.listBySourceTypeAndOrderNo(sourceType, orderId);
-	}
+    @Override
+    public OrderCountVO getOrderCount(Long uid, Integer day, List<Integer> listSource) {
+        return commonOrderMapper.getOrderCount(uid, day, listSource);
+    }
 
-	@Transactional(rollbackFor = Exception.class)
-	@Override
-	public List<CommonOrderAddResultDTO> addTaoBaoOrder(List<TaoBaoOrder> taoBaoOrders, Long uid)
-			throws CommonOrderException {
-		List<CommonOrderAddResultDTO> commonOrderList = new ArrayList<>();
-		// 鍒ゆ柇鎵�鏈夌殑璁㈠崟鐘舵��
-		int invalidCount = 0;
-		for (TaoBaoOrder tb : taoBaoOrders) {
-			if ("璁㈠崟澶辨晥".equalsIgnoreCase(tb.getOrderState())) {
-				invalidCount++;
-			}
-		}
+    @Override
+    public long countBonusOrderNumber(Long uid, Integer type, Integer day, String startTime, String endTime,
+                                      Integer source) {
+        return commonOrderMapper.countBonusOrderNumber(uid, type, day, startTime, endTime, source);
+    }
 
-		// 鑾峰彇鏁翠綋璁㈠崟鐨勭姸鎬�
-		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;
+    @Override
+    public BigDecimal countBonusOrderMoney(Long uid, Integer type, Integer day, String startTime, String endTime,
+                                           Integer source) {
+        return commonOrderMapper.countBonusOrderMoney(uid, type, day, startTime, endTime, source);
+    }
 
-		for (TaoBaoOrder taoBaoOrder : taoBaoOrders) {
-			CommonOrder newCommonOrder = CommonOrderFactory.create(taoBaoOrder);
-			CommonOrderGoods cog = new CommonOrderGoods();
+    @Override
+    public Map<String, Object> countBonusOrderMoneyAndNumber(Long uid, Integer type, Integer day, String startTime,
+                                                             String endTime, Integer source) {
+        return commonOrderMapper.countBonusOrderMoneyAndNumber(uid, type, day, startTime, endTime, source);
+    }
 
-			if ("楗夸簡涔�".equalsIgnoreCase(taoBaoOrder.getOrderType())) {
-				cog.setGoodsId(taoBaoOrder.getTradeId() + "");
-				cog.setGoodsType(Constant.SOURCE_TYPE_ELME);
-				TaoBaoOrderGoods goods = taoBaoOrderGoodsMapper.selectByTradeId(taoBaoOrder.getTradeId());
-				if (goods == null) {
-					cog.setPicture("http://img.flqapp.com/resource/goods/elme_picture_demo.png");
-					cog.setTitle(taoBaoOrder.getTitle());
-				} else {
-					cog.setPicture(goods.getImg());
-					cog.setTitle(goods.getTitle());
-				}
-				newCommonOrder.setCommonOrderGoods(cog);
-			} else {
-				cog.setGoodsId(taoBaoOrder.getAuctionId() + "");
-				cog.setGoodsType(Constant.SOURCE_TYPE_TAOBAO);
-				newCommonOrder.setCommonOrderGoods(cog);
-			}
-			newCommonOrder.setStateWholeOrder(wholeOrderState);
-			// 璁㈠崟鍟嗗搧鎻掑叆
-			List<CommonOrderGoods> commonGoodsList = commonOrderGoodsMapper.listByGoodsIdAndGoodsType(cog.getGoodsId(),
-					cog.getGoodsType());
-			if (commonGoodsList.size() <= 0)// 涓嶅瓨鍦ㄥ氨鎻掑叆鍟嗗搧
-			{
-				TaoBaoGoodsBrief taoBaoGoods = null;
-				if (cog.getGoodsType() != Constant.SOURCE_TYPE_ELME) {
-					try {
-						taoBaoGoods = TaoKeApiUtil.getSimpleGoodsInfo(taoBaoOrder.getAuctionId());
-						LogManager.getLogger(LogType.taobaoGoods)
-								.info(String.format("璁㈠崟鍟嗗搧鍒嗙被:%s#%s#%s", taoBaoGoods.getAuctionId(),
-										taoBaoGoods.getRootCategoryName(), taoBaoGoods.getLeafName()));
-					} catch (TaobaoGoodsDownException e) {
-						e.printStackTrace();
-						LogHelper.errorDetailInfo(e, "AUCTIONID:" + taoBaoOrder.getAuctionId(), "");
-						try {
-							taoBaoGoods = TaoBaoUtil.getSimpleGoodsBrief(taoBaoOrder.getAuctionId());
-							// 璁板綍鍟嗗搧鍒嗙被
+    @Override
+    public Long countUserOrderToApp(Long uid, Integer type, String startTime, String endTime, Integer day,
+                                    Integer source, Integer state, Integer stateOrder) {
+        return commonOrderMapper.countUserOrderToApp(uid, type, startTime, endTime, day, source, state, stateOrder);
+    }
 
-						} catch (Exception e1) {
-							CommonGoods commonGoods = commonGoodsService.getCommonGoodsByGoodsIdAndGoodsType(
-									taoBaoOrder.getAuctionId(), Constant.SOURCE_TYPE_TAOBAO);
-							if (commonGoods != null)
-								taoBaoGoods = TaoBaoUtil.convert(commonGoods);
-						}
-					}
-				}
-				if (taoBaoGoods != null) {
-					cog = CommonOrderGoodsFactory.create(taoBaoGoods);
-				}
-				cog.setCreateTime(new Date());
-				cog.setUpdateTime(new Date());
-				commonOrderGoodsMapper.insertSelective(cog);
-			}
-			newCommonOrder.setUserInfo(new UserInfo(uid));
-			commonOrderList.add(addCommonOrder(newCommonOrder));
-		}
-		addConfirmMQMsg(commonOrderList);
-		return commonOrderList;
-	}
+    @Override
+    public BigDecimal getWeiQuanMoney(List<TaoBaoWeiQuanOrder> listWQ, int sourceType, Long uid) {
+        BigDecimal weiQuanMoney = new BigDecimal(0);
+        if (listWQ != null && listWQ.size() > 0) {
+            for (TaoBaoWeiQuanOrder weiQuanOrder : listWQ) {
+                String tradeId = weiQuanOrder.getOrderItemId();
+                // 鏌ヨ绾㈠寘
+                List<String> tradeList = new ArrayList<>();
+                tradeList.add(tradeId);
+                List<HongBaoV2> hongBaoList = hongBaoV2Service.listBySourceTypeAndTradeIdListAndUid(sourceType, uid,
+                        tradeList);
+                if (hongBaoList != null && hongBaoList.size() > 0) {
+                    CommonOrder commonOrder = commonOrderMapper.selectBySourceTypeAndTradeId(sourceType, tradeId);
+                    if (commonOrder != null && commonOrder.getSettlement().compareTo(new BigDecimal(0)) > 0) {
+                        BigDecimal wqMoney = MoneyBigDecimalUtil
+                                .mul(hongBaoList.get(0).getMoney(), weiQuanOrder.getMoney())
+                                .divide(commonOrder.getSettlement(), 2, BigDecimal.ROUND_UP);
+                        if (wqMoney.compareTo(hongBaoList.get(0).getMoney()) > 0)
+                            wqMoney = hongBaoList.get(0).getMoney();
+                        weiQuanMoney = weiQuanMoney.add(wqMoney);
+                    }
+                }
+            }
+        }
+        return weiQuanMoney;
+    }
+
+    @Override
+    public List<CommonOrder> listBySourceTypeAndOrderId(int sourceType, String orderId) {
+        return commonOrderMapper.listBySourceTypeAndOrderNo(sourceType, orderId);
+    }
+
+    @Transactional(rollbackFor = Exception.class)
+    @Override
+    public List<CommonOrderAddResultDTO> addTaoBaoOrder(List<TaoBaoOrder> taoBaoOrders, Long uid)
+            throws CommonOrderException {
+        List<CommonOrderAddResultDTO> 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 newCommonOrder = CommonOrderFactory.create(taoBaoOrder);
+            CommonOrderGoods cog = new CommonOrderGoods();
+
+            if ("楗夸簡涔�".equalsIgnoreCase(taoBaoOrder.getOrderType())) {
+                cog.setGoodsId(taoBaoOrder.getTradeId() + "");
+                cog.setGoodsType(Constant.SOURCE_TYPE_ELME);
+                TaoBaoOrderGoods goods = taoBaoOrderGoodsMapper.selectByTradeId(taoBaoOrder.getTradeId());
+                if (goods == null) {
+                    cog.setPicture("http://img.flqapp.com/resource/goods/elme_picture_demo.png");
+                    cog.setTitle(taoBaoOrder.getTitle());
+                } else {
+                    cog.setPicture(goods.getImg());
+                    cog.setTitle(goods.getTitle());
+                }
+                newCommonOrder.setCommonOrderGoods(cog);
+            } else {
+                cog.setGoodsId(taoBaoOrder.getAuctionId() + "");
+                cog.setGoodsType(Constant.SOURCE_TYPE_TAOBAO);
+                cog.setTitle(taoBaoOrder.getTitle());
+                newCommonOrder.setCommonOrderGoods(cog);
+            }
+            newCommonOrder.setStateWholeOrder(wholeOrderState);
+            // 璁㈠崟鍟嗗搧鎻掑叆
+            List<CommonOrderGoods> commonGoodsList = commonOrderGoodsMapper.listByGoodsIdAndGoodsType(cog.getGoodsId(),
+                    cog.getGoodsType());
+            if (commonGoodsList.size() <= 0)// 涓嶅瓨鍦ㄥ氨鎻掑叆鍟嗗搧
+            {
+                TaoBaoGoodsBrief taoBaoGoods = null;
+                if (cog.getGoodsType() != Constant.SOURCE_TYPE_ELME) {
+                    try {
+                        taoBaoGoods = TaoKeApiUtil.getSimpleGoodsInfo(taoBaoOrder.getAuctionId());
+                        LogManager.getLogger(LogType.taobaoGoods)
+                                .info(String.format("璁㈠崟鍟嗗搧鍒嗙被:%s#%s#%s", taoBaoGoods.getAuctionId(),
+                                        taoBaoGoods.getRootCategoryName(), taoBaoGoods.getLeafName()));
+                    } catch (TaobaoGoodsDownException e) {
+                        e.printStackTrace();
+                        logger.warn("娣樺疂鍟嗗搧涓嬫灦锛歿}", taoBaoOrder.getAuctionId(), e);
+                        try {
+                            taoBaoGoods = TaoBaoUtil.getSimpleGoodsBrief(taoBaoOrder.getAuctionId());
+                            // 璁板綍鍟嗗搧鍒嗙被
+                        } catch (Exception e1) {
+                            CommonGoods commonGoods = commonGoodsService.getCommonGoodsByGoodsIdAndGoodsType(
+                                    taoBaoOrder.getAuctionId(), Constant.SOURCE_TYPE_TAOBAO);
+                            if (commonGoods != null)
+                                taoBaoGoods = TaoBaoUtil.convert(commonGoods);
+                        }
+                    }
+                }
+                if (taoBaoGoods != null) {
+                    cog = CommonOrderGoodsFactory.create(taoBaoGoods);
+                }
+                cog.setCreateTime(new Date());
+                cog.setUpdateTime(new Date());
+                //瑕嗙洊鍘熸潵鐨勫晢鍝両D
+                cog.setGoodsId(newCommonOrder.getCommonOrderGoods().getGoodsId());
+                commonOrderGoodsMapper.insertSelective(cog);
+            }
+            newCommonOrder.setUserInfo(new UserInfo(uid));
+            commonOrderList.add(addCommonOrder(newCommonOrder));
+        }
+        addConfirmMQMsg(commonOrderList);
+        return commonOrderList;
+    }
+
+    @Transactional(rollbackFor = Exception.class)
+    @Override
+    public List<CommonOrderAddResultDTO> addPDDOrder(List<PDDOrder> pddOrderList, Long uid)
+            throws CommonOrderException {
+        List<CommonOrderAddResultDTO> commonOrderList = new ArrayList<>();
+        // 鍒ゆ柇鎵�鏈夌殑璁㈠崟鐘舵��
+        int invalidCount = 0;
+        for (PDDOrder order : pddOrderList) {
+            if (order.getOrderStatus() == -1 || order.getOrderStatus() == 4 || order.getOrderStatus() == 8) {
+                invalidCount++;
+            }
+        }
+        // 鑾峰彇鏁翠綋璁㈠崟鐨勭姸鎬�
+        int wholeOrderState = 0;
+        if (pddOrderList.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 (PDDOrder pddOrder : pddOrderList) {
+            CommonOrder newCommonOrder = CommonOrderFactory.create(pddOrder);
+            CommonOrderGoods cog = new CommonOrderGoods();
+            cog.setGoodsId(pddOrder.getGoodsId() + "");
+            cog.setGoodsType(Constant.SOURCE_TYPE_PDD);
+            newCommonOrder.setCommonOrderGoods(cog);
+            newCommonOrder.setStateWholeOrder(wholeOrderState);
+            // 璁㈠崟鍟嗗搧鎻掑叆
+            List<CommonOrderGoods> commonGoodsList = commonOrderGoodsMapper.listByGoodsIdAndGoodsType(cog.getGoodsId(),
+                    cog.getGoodsType());
+            if (commonGoodsList.size() <= 0)// 涓嶅瓨鍦ㄥ氨鎻掑叆鍟嗗搧
+            {
+                PDDGoodsDetail pddGoods = null;
+                pddGoods = PinDuoDuoApiUtil.getGoodsDetail(Long.parseLong(cog.getGoodsId()));
+                if (pddGoods != null) {
+                    cog = CommonOrderGoodsFactory.create(pddGoods);
+                }
+                cog.setCreateTime(new Date());
+                cog.setUpdateTime(new Date());
+                commonOrderGoodsMapper.insertSelective(cog);
+                newCommonOrder.setCommonOrderGoods(cog);
+            } else {
+            }
+            newCommonOrder.setUserInfo(new UserInfo(uid));
+            commonOrderList.add(addCommonOrder(newCommonOrder));
+        }
+        addConfirmMQMsg(commonOrderList);
+        return commonOrderList;
+    }
+
+    private void addConfirmMQMsg(List<CommonOrderAddResultDTO> resultList) {
+
+        // 璁㈠崟鏄惁鏂板鎴栬�呮洿鏂拌繃
+        boolean isAddOrUpdate = false;
+        for (CommonOrderAddResultDTO dto : resultList)
+            if (dto.getType() == CommonOrderAddResultDTO.TYPE_ADD
+                    || dto.getType() == CommonOrderAddResultDTO.TYPE_UPDATE) {
+                isAddOrUpdate = true;
+                break;
+            }
+        boolean hasSettleOrder = false;
+        // 鏌ヨ鏄惁鏈夌粨绠楃殑璁㈠崟
+        if (isAddOrUpdate) {
+            for (CommonOrderAddResultDTO dto : resultList) {
+                if (dto.getCommonOrder().getSettleTime() != null && dto.getCommonOrder().getSettlement() != null) {
+                    hasSettleOrder = true;
+                    break;
+                }
+            }
+        }
+        // 鏈夌粨绠楃殑璁㈠崟
+        if (hasSettleOrder) {
+            if (!Constant.IS_TEST) {
+                // 缁熻缁撶畻閲戦
+                BigDecimal settlement = new BigDecimal("0");
+                CommonOrder firstOrder = null;
+                for (CommonOrderAddResultDTO dto : resultList)
+                    if (dto.getCommonOrder().getSettlement() != null) {
+                        settlement = settlement.add(dto.getCommonOrder().getSettlement());
+                        if (firstOrder == null)
+                            firstOrder = dto.getCommonOrder();
+                    }
+                if (firstOrder != null) {
+                    Date placeDate = firstOrder.getThirdCreateTime();
+                    OrderConfirmMQMsg mqMsg = new OrderConfirmMQMsg(firstOrder.getOrderNo(), firstOrder.getSourceType(),
+                            settlement, firstOrder.getUserInfo().getId(), placeDate, new Date());
+                    Message msg = MQMsgBodyFactory.create(MQTopicName.TOPIC_ORDER, OrderTopicTagEnum.orderConfirm,
+                            mqMsg);
+                    rocketMQManager.sendNormalMsg(msg, null);
+                }
+            }
+        }
+
+    }
+
+    @Transactional(rollbackFor = Exception.class)
+    @Override
+    public List<CommonOrderAddResultDTO> addJDOrder(JDOrder jdOrder, Long uid) throws CommonOrderException {
+        List<CommonOrderAddResultDTO> commonOrderList = new ArrayList<>();
+        // 鍒ゆ柇鎵�鏈夌殑璁㈠崟鐘舵��
+        int invalidCount = 0;
+        for (JDOrderItem tb : jdOrder.getOrderItemList()) {
+            if (tb.getValidCode() < 16) {
+                invalidCount++;
+            }
+        }
+
+        // 鑾峰彇鏁翠綋璁㈠崟鐨勭姸鎬�
+        int wholeOrderState = 0;
+        if (jdOrder.getOrderItemList().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;
+
+        List<JDOrderItem> orderItemList = jdOrder.getOrderItemList();
+        jdOrder.setOrderItemList(null);
+
+        for (JDOrderItem itemOrder : orderItemList) {
+            itemOrder.setOrder(jdOrder);
+            CommonOrder newCommonOrder = CommonOrderFactory.create(itemOrder);
+            CommonOrderGoods cog = new CommonOrderGoods();
+            cog.setGoodsId(itemOrder.getSkuId() + "");
+            cog.setGoodsType(Constant.SOURCE_TYPE_JD);
+            newCommonOrder.setCommonOrderGoods(cog);
+            newCommonOrder.setStateWholeOrder(wholeOrderState);
+            // 璁㈠崟鍟嗗搧鎻掑叆
+            List<CommonOrderGoods> commonGoodsList = commonOrderGoodsMapper.listByGoodsIdAndGoodsType(cog.getGoodsId(),
+                    cog.getGoodsType());
+            if (commonGoodsList.size() <= 0)// 涓嶅瓨鍦ㄥ氨鎻掑叆鍟嗗搧
+            {
+                JDGoods goods = JDApiUtil.getGoodsDetail(itemOrder.getSkuId());
+                if (goods == null) {
+                    goods = JDUtil.getGoodsFromWeb(itemOrder.getSkuId());
+                }
+
+                if (goods == null) {
+                    goods = new JDGoods();
+                    goods.setSkuName(itemOrder.getSkuName());
+                    goods.setPrice(itemOrder.getPrice());
+                    goods.setSkuId(itemOrder.getSkuId());
+                }
+
+                if (goods != null) {
+                    cog = CommonOrderGoodsFactory.create(goods);
+                }
+
+                cog.setCreateTime(new Date());
+                cog.setUpdateTime(new Date());
+                commonOrderGoodsMapper.insertSelective(cog);
+            } else {
+
+            }
+            newCommonOrder.setUserInfo(new UserInfo(uid));
+            commonOrderList.add(addCommonOrder(newCommonOrder));
+        }
+        addConfirmMQMsg(commonOrderList);
+        return commonOrderList;
+    }
+
+    @Transactional(rollbackFor = Exception.class)
+    @Override
+    public List<CommonOrderAddResultDTO> addVipShopOrder(VipShopOrder vipShopOrder, Long uid)
+            throws CommonOrderException {
+        List<CommonOrderAddResultDTO> commonOrderList = new ArrayList<>();
+        // 鍒ゆ柇鎵�鏈夌殑璁㈠崟鐘舵��
+        int invalidCount = 0;
+        for (VipShopOrderDetail detail : vipShopOrder.getDetailList()) {
+            if (detail.getStatus() == VipShopOrderDetail.STATUS_INVALID) {
+                invalidCount++;
+            }
+        }
+
+        // 鑾峰彇鏁翠綋璁㈠崟鐨勭姸鎬�
+        int wholeOrderState = 0;
+        if (vipShopOrder.getDetailList().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;
+
+        List<VipShopOrderDetail> orderItemList = vipShopOrder.getDetailList();
+        vipShopOrder.setDetailList(null);
+
+        for (VipShopOrderDetail itemOrder : orderItemList) {
+            itemOrder.setOrder(vipShopOrder);
+            CommonOrder newCommonOrder = CommonOrderFactory.create(itemOrder);
+            CommonOrderGoods cog = new CommonOrderGoods();
+            cog.setGoodsId(itemOrder.getGoodsId());
+            cog.setGoodsType(Constant.SOURCE_TYPE_VIP);
+            newCommonOrder.setCommonOrderGoods(cog);
+            newCommonOrder.setStateWholeOrder(wholeOrderState);
+            // 璁㈠崟鍟嗗搧鎻掑叆
+            List<CommonOrderGoods> commonGoodsList = commonOrderGoodsMapper.listByGoodsIdAndGoodsType(cog.getGoodsId(),
+                    cog.getGoodsType());
+            if (commonGoodsList.size() <= 0)// 涓嶅瓨鍦ㄥ氨鎻掑叆鍟嗗搧
+            {
+                VIPGoodsInfo goods = VipShopApiUtil.getGoodsDetail(itemOrder.getGoodsId());
+                if (goods == null) {
+                    goods = new VIPGoodsInfo();
+                    goods.setGoodsName(itemOrder.getGoodsName());
+                    goods.setVipPrice("");
+                    goods.setGoodsId(itemOrder.getGoodsId());
+                    goods.setGoodsThumbUrl(itemOrder.getGoodsThumb());
+                }
+
+                if (goods != null) {
+                    cog = CommonOrderGoodsFactory.create(goods);
+                }
+
+                cog.setCreateTime(new Date());
+                cog.setUpdateTime(new Date());
+                commonOrderGoodsMapper.insertSelective(cog);
+            } else {
+
+            }
+            newCommonOrder.setUserInfo(new UserInfo(uid));
+            commonOrderList.add(addCommonOrder(newCommonOrder));
+        }
+        addConfirmMQMsg(commonOrderList);
+        return commonOrderList;
+    }
+
+    @Transactional(rollbackFor = Exception.class)
+    @Override
+    public List<CommonOrderAddResultDTO> addSuningOrder(List<SuningOrderInfo> suningOrderList, Long uid)
+            throws CommonOrderException {
+        List<CommonOrderAddResultDTO> commonOrderList = new ArrayList<>();
+        // 鍒ゆ柇鎵�鏈夌殑璁㈠崟鐘舵��
+        int invalidCount = 0;
+        for (SuningOrderInfo order : suningOrderList) {
+            if ("閫�娆�".equalsIgnoreCase(order.getOrderLineStatusDesc())
+                    || "璁㈠崟宸插彇娑�".equalsIgnoreCase(order.getOrderLineStatusDesc())) {
+                invalidCount++;
+            }
+        }
+        // 鑾峰彇鏁翠綋璁㈠崟鐨勭姸鎬�
+        int wholeOrderState = 0;
+        if (suningOrderList.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 (SuningOrderInfo suningOrderInfo : suningOrderList) {
+            CommonOrder newCommonOrder = CommonOrderFactory.create(suningOrderInfo);
+            CommonOrderGoods cog = new CommonOrderGoods();
+            cog.setGoodsId(suningOrderInfo.getGoodsNum() + "");
+            cog.setGoodsType(Constant.SOURCE_TYPE_SUNING);
+            newCommonOrder.setCommonOrderGoods(cog);
+            newCommonOrder.setStateWholeOrder(wholeOrderState);
+            // 璁㈠崟鍟嗗搧鎻掑叆
+            List<CommonOrderGoods> commonGoodsList = commonOrderGoodsMapper.listByGoodsIdAndGoodsType(cog.getGoodsId(),
+                    cog.getGoodsType());
+            if (commonGoodsList.size() <= 0)// 涓嶅瓨鍦ㄥ氨鎻掑叆鍟嗗搧
+            {
+                SuningGoodsInfo pddGoods = null;
+                // TODO 闇�瑕佽幏鍙�
+                pddGoods = SuningApiUtil.getGoodsDetail(suningOrderInfo.getGoodsNum(), "0000000000");
+                if (pddGoods != null) {
+                    cog = CommonOrderGoodsFactory.create(pddGoods);
+                }
+                cog.setCreateTime(new Date());
+                cog.setUpdateTime(new Date());
+                commonOrderGoodsMapper.insertSelective(cog);
+                newCommonOrder.setCommonOrderGoods(cog);
+            } else {
+            }
+            newCommonOrder.setUserInfo(new UserInfo(uid));
+            commonOrderList.add(addCommonOrder(newCommonOrder));
+        }
+        addConfirmMQMsg(commonOrderList);
+        return commonOrderList;
+    }
+
+    @Override
+    public List<CommonOrderAddResultDTO> addDYOrder(DYOrder order, Long uid) throws CommonOrderException {
+        List<CommonOrderAddResultDTO> commonOrderList = new ArrayList<>();
+
+            CommonOrder newCommonOrder = CommonOrderFactory.create(order);
+            CommonOrderGoods cog = new CommonOrderGoods();
+            cog.setGoodsId(order.getProduct_id());
+            cog.setGoodsType(Constant.SOURCE_TYPE_DY);
+            newCommonOrder.setCommonOrderGoods(cog);
+            newCommonOrder.setStateWholeOrder(newCommonOrder.getState());
+            // 璁㈠崟鍟嗗搧鎻掑叆
+            List<CommonOrderGoods> commonGoodsList = commonOrderGoodsMapper.listByGoodsIdAndGoodsType(cog.getGoodsId(),
+                    cog.getGoodsType());
+            if (commonGoodsList.size() <= 0)// 涓嶅瓨鍦ㄥ氨鎻掑叆鍟嗗搧
+            {
+                DYGoodsDetail goods = CSJCPSApiUtil.goodsDetail(Long.parseLong(order.getProduct_id()));
+                if (goods == null) {
+                    goods = new DYGoodsDetail();
+                    goods.setTitle(order.getProduct_name());
+                    goods.setPrice(0);
+                    goods.setProduct_id(Long.parseLong(order.getProduct_id()));
+                    goods.setCover(order.getProduct_img());
+                }
+
+                if (goods != null) {
+                    cog = CommonOrderGoodsFactory.create(goods);
+                }
+
+                cog.setCreateTime(new Date());
+                cog.setUpdateTime(new Date());
+                commonOrderGoodsMapper.insertSelective(cog);
+            } else {
+
+            }
+            newCommonOrder.setUserInfo(new UserInfo(uid));
+            commonOrderList.add(addCommonOrder(newCommonOrder));
+
+        addConfirmMQMsg(commonOrderList);
+        return commonOrderList;
+    }
+
+    private boolean needUpdateCommonOrder(CommonOrder oldCommonOrder, CommonOrder newCommonOrder) {
+        // 闈炰含涓滃凡缁忕粨绠楋紝宸茬粡澶辨晥锛岀姸鎬佹湭鏀瑰彉鐨勮鍗曚笉澶勭悊
+        if ((oldCommonOrder.getState() == CommonOrder.STATE_JS
+                && oldCommonOrder.getSourceType() != Constant.SOURCE_TYPE_JD)
+                || oldCommonOrder.getState() == CommonOrder.STATE_SX
+                || oldCommonOrder.getState() == CommonOrder.STATE_WQ) {
+            return false;
+        }
+
+
+        //鐘舵�佺浉鍚屼笖浠樻閲戦锛岀粨绠楅噾棰濅竴鑷存椂鎵嶄笉闇�瑕佹洿鏂�
+        if (oldCommonOrder.getState().intValue() == newCommonOrder.getState()) {
+            if (oldCommonOrder.getPayment().compareTo(newCommonOrder.getPayment()) == 0) {
+                if (oldCommonOrder.getSettlement() == null && newCommonOrder.getSettlement() == null) {
+                    return false;
+                } else if (oldCommonOrder.getSettlement() != null && newCommonOrder.getSettlement() != null && oldCommonOrder.getSettlement().compareTo(newCommonOrder.getSettlement()) == 0) {
+                    return false;
+                }
+            }
+        }
+
+        return true;
+    }
+
+    /**
+     * 娣诲姞璁㈠崟
+     *
+     * @param commonOrder
+     */
+    private CommonOrderAddResultDTO addCommonOrder(CommonOrder commonOrder) throws CommonOrderException {
+        // 鍒ゆ柇鍟嗗搧鏄惁瀛樺湪
+        if (commonOrder == null)
+            throw new CommonOrderException(1, "璁㈠崟涓虹┖");
+        if (commonOrder.getUserInfo() == null)
+            throw new CommonOrderException(2, "璁㈠崟鐢ㄦ埛涓虹┖");
+
+        if (commonOrder.getCommonOrderGoods() == null || commonOrder.getCommonOrderGoods().getGoodsId() == null
+                || commonOrder.getCommonOrderGoods().getGoodsType() == null)
+            throw new CommonOrderException(3, "璁㈠崟鍟嗗搧涓虹┖");
+        // 涓嶅瓨鍦ㄥ氨鎻掑叆锛屽瓨鍦ㄥ氨涓嶇
+        CommonOrderGoods goods = commonOrder.getCommonOrderGoods();
+
+        // 涔嬪墠涓嶅瓨鍦ㄤ簬鏁版嵁搴�
+        if (commonOrder.getCommonOrderGoods().getId() == null) {
+            List<CommonOrderGoods> commonGoodsList = commonOrderGoodsMapper
+                    .listByGoodsIdAndGoodsType(goods.getGoodsId(), goods.getGoodsType());
+
+            if (commonGoodsList == null || commonGoodsList.size() < 1) {// 涓嶅瓨鍦�
+                commonOrderGoodsMapper.insertSelective(goods);
+            } else {// 瀛樺湪
+                goods = commonGoodsList.get(0);
+            }
+            if (goods.getId() == null)
+                throw new CommonOrderException(4, "鍟嗗搧鎻掑叆澶辫触");
+            commonOrder.setCommonOrderGoods(goods);
+        }
+
+        CommonOrder oldCommonOrder = null;
+
+        if (!StringUtil.isNullOrEmpty(commonOrder.getTradeId()))
+            oldCommonOrder = commonOrderMapper.selectBySourceTypeAndTradeId(commonOrder.getSourceType(),
+                    commonOrder.getTradeId());
+        else {
+            throw new CommonOrderException(10, "浜ゆ槗ID涓虹┖");
+        }
+        if (oldCommonOrder == null)// 鏂板
+        {
+            commonOrder.setCreateTime(new Date());
+            UserLevelEnum userLevel = userLevelManager.getUserLevel(commonOrder.getUserInfo().getId(),
+                    commonOrder.getThirdCreateTime());
+            // 鏌ヨ鏄惁涓簐ip
+            if (userLevel != null)
+                commonOrder.setUrank(userLevel.getOrderRank());// VIP璁㈠崟
+            else {
+                UserInfo user = userInfoService.selectAvailableByPrimaryKey(commonOrder.getUserInfo().getId());
+                if (user != null)
+                    commonOrder.setUrank(user.getRank());
+            }
+
+            commonOrderMapper.insertSelective(commonOrder);
+            // 鎻掑叆鏄犲皠锛屼繚璇佷氦鏄揑D鐨勫畬鏁存��
+            commonOrderTradeIdMapMapper.insertSelective(new CommonOrderTradeIdMap(commonOrder.getId(),
+                    commonOrder.getTradeId(), new Date(), commonOrder.getSourceType()));
+            return new CommonOrderAddResultDTO(commonOrder, CommonOrderAddResultDTO.TYPE_ADD);
+        } else {// 淇敼
+
+            if (!needUpdateCommonOrder(oldCommonOrder, commonOrder)) {
+                return new CommonOrderAddResultDTO(oldCommonOrder, CommonOrderAddResultDTO.TYPE_NOUPDATE);
+            }
+            // 浜ゆ槗ID涓�鑷存墠淇敼
+            if (commonOrder.getTradeId() != null
+                    && commonOrder.getTradeId().equalsIgnoreCase(oldCommonOrder.getTradeId())) {
+                CommonOrder updateCommonOrder = new CommonOrder(oldCommonOrder.getId());
+                updateCommonOrder.seteIncome(commonOrder.geteIncome());
+                updateCommonOrder.setEstimate(commonOrder.getEstimate());
+                updateCommonOrder.setPayment(commonOrder.getPayment());
+                updateCommonOrder.setSettlement(commonOrder.getSettlement());
+                updateCommonOrder.setSettleTime(commonOrder.getSettleTime());
+                updateCommonOrder.setState(commonOrder.getState());
+                updateCommonOrder.setStateWholeOrder(commonOrder.getStateWholeOrder());
+                updateCommonOrder.setUpdateTime(new Date());
+                updateCommonOrder.setTradeId(commonOrder.getTradeId());
+                commonOrderMapper.updateByPrimaryKeySelective(updateCommonOrder);
+                return new CommonOrderAddResultDTO(commonOrderMapper.selectByPrimaryKey(updateCommonOrder.getId()),
+                        CommonOrderAddResultDTO.TYPE_UPDATE);
+            } else
+                return new CommonOrderAddResultDTO(oldCommonOrder, CommonOrderAddResultDTO.TYPE_NOUPDATE);
+        }
+    }
 
-	@Transactional(rollbackFor = Exception.class)
-	@Override
-	public List<CommonOrderAddResultDTO> addPDDOrder(List<PDDOrder> pddOrderList, Long uid)
-			throws CommonOrderException {
-		List<CommonOrderAddResultDTO> commonOrderList = new ArrayList<>();
-		// 鍒ゆ柇鎵�鏈夌殑璁㈠崟鐘舵��
-		int invalidCount = 0;
-		for (PDDOrder order : pddOrderList) {
-			if (order.getOrderStatus() == -1 || order.getOrderStatus() == 4 || order.getOrderStatus() == 8) {
-				invalidCount++;
-			}
-		}
-		// 鑾峰彇鏁翠綋璁㈠崟鐨勭姸鎬�
-		int wholeOrderState = 0;
-		if (pddOrderList.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;
+    @Override
+    public long countByUidAndOrderStateWithOrderBalanceTime(Long uid, int state, Date minDate, Date maxDate) {
+        return commonOrderMapper.countByUidAndOrderStateWithOrderBalanceTime(uid, state, minDate, maxDate);
+    }
 
-		for (PDDOrder pddOrder : pddOrderList) {
-			CommonOrder newCommonOrder = CommonOrderFactory.create(pddOrder);
-			CommonOrderGoods cog = new CommonOrderGoods();
-			cog.setGoodsId(pddOrder.getGoodsId() + "");
-			cog.setGoodsType(Constant.SOURCE_TYPE_PDD);
-			newCommonOrder.setCommonOrderGoods(cog);
-			newCommonOrder.setStateWholeOrder(wholeOrderState);
-			// 璁㈠崟鍟嗗搧鎻掑叆
-			List<CommonOrderGoods> commonGoodsList = commonOrderGoodsMapper.listByGoodsIdAndGoodsType(cog.getGoodsId(),
-					cog.getGoodsType());
-			if (commonGoodsList.size() <= 0)// 涓嶅瓨鍦ㄥ氨鎻掑叆鍟嗗搧
-			{
-				PDDGoodsDetail pddGoods = null;
-				pddGoods = PinDuoDuoApiUtil.getGoodsDetail(Long.parseLong(cog.getGoodsId()));
-				if (pddGoods != null) {
-					cog = CommonOrderGoodsFactory.create(pddGoods);
-				}
-				cog.setCreateTime(new Date());
-				cog.setUpdateTime(new Date());
-				commonOrderGoodsMapper.insertSelective(cog);
-				newCommonOrder.setCommonOrderGoods(cog);
-			} else {
-			}
-			newCommonOrder.setUserInfo(new UserInfo(uid));
-			commonOrderList.add(addCommonOrder(newCommonOrder));
-		}
-		addConfirmMQMsg(commonOrderList);
-		return commonOrderList;
-	}
+    @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 {
 
-	private void addConfirmMQMsg(List<CommonOrderAddResultDTO> resultList) {
+        List<CommonOrderVO> list = commonOrderMapper.listQueryByUid(start, count, uid, state, type, orderState, orderNo,
+                startTime, endTime, dateType);
 
-		// 璁㈠崟鏄惁鏂板鎴栬�呮洿鏂拌繃
-		boolean isAddOrUpdate = false;
-		for (CommonOrderAddResultDTO dto : resultList)
-			if (dto.getType() == CommonOrderAddResultDTO.TYPE_ADD
-					|| dto.getType() == CommonOrderAddResultDTO.TYPE_UPDATE) {
-				isAddOrUpdate = true;
-				break;
-			}
-		boolean hasSettleOrder = false;
-		// 鏌ヨ鏄惁鏈夌粨绠楃殑璁㈠崟
-		if (isAddOrUpdate) {
-			for (CommonOrderAddResultDTO dto : resultList) {
-				if (dto.getCommonOrder().getSettleTime() != null && dto.getCommonOrder().getSettlement() != null) {
-					hasSettleOrder = true;
-					break;
-				}
-			}
-		}
-		// 鏈夌粨绠楃殑璁㈠崟
-		if (hasSettleOrder) {
-			if (!Constant.IS_TEST) {
-				// 缁熻缁撶畻閲戦
-				BigDecimal settlement = new BigDecimal("0");
-				CommonOrder firstOrder = null;
-				for (CommonOrderAddResultDTO dto : resultList)
-					if (dto.getCommonOrder().getSettlement() != null) {
-						settlement = settlement.add(dto.getCommonOrder().getSettlement());
-						if (firstOrder == null)
-							firstOrder = dto.getCommonOrder();
-					}
-				if (firstOrder != null) {
-					Date placeDate = firstOrder.getThirdCreateTime();
-					OrderConfirmMQMsg mqMsg = new OrderConfirmMQMsg(firstOrder.getOrderNo(), firstOrder.getSourceType(),
-							settlement, firstOrder.getUserInfo().getId(), placeDate, new Date());
-					Message msg = MQMsgBodyFactory.create(MQTopicName.TOPIC_ORDER, OrderTopicTagEnum.orderConfirm,
-							mqMsg);
-					orderProducer.send(msg);
-				}
-			}
-		}
+        if (list == null) {
+            list = new ArrayList<CommonOrderVO>();
+        }
 
-	}
+        if (list.size() == 0) {
+            return list;
+        }
 
-	@Transactional(rollbackFor = Exception.class)
-	@Override
-	public List<CommonOrderAddResultDTO> addJDOrder(JDOrder jdOrder, Long uid) throws CommonOrderException {
-		List<CommonOrderAddResultDTO> commonOrderList = new ArrayList<>();
-		// 鍒ゆ柇鎵�鏈夌殑璁㈠崟鐘舵��
-		int invalidCount = 0;
-		for (JDOrderItem tb : jdOrder.getOrderItemList()) {
-			if (tb.getValidCode() < 16) {
-				invalidCount++;
-			}
-		}
+        SimpleDateFormat format = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
+        for (CommonOrderVO order : list) {
 
-		// 鑾峰彇鏁翠綋璁㈠崟鐨勭姸鎬�
-		int wholeOrderState = 0;
-		if (jdOrder.getOrderItemList().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;
+            // 涓嬪崟鏃堕棿
+            Date thirdCreateTime = order.getThirdCreateTime();
+            if (thirdCreateTime != null) {
+                order.setDownTime(format.format(thirdCreateTime));
+            }
+            // 鏀惰揣鏃堕棿
+            Date settleTime = order.getSettleTime();
+            if (settleTime != null) {
+                order.setReceiveTime(format.format(settleTime));
+            }
 
-		List<JDOrderItem> orderItemList = jdOrder.getOrderItemList();
-		jdOrder.setOrderItemList(null);
+            // 鍒拌处鏃堕棿
+            Date accountTime = order.getAccountTime();
+            if (accountTime != null) {
+                order.setHongBaoDate(format.format(accountTime));
+            }
 
-		for (JDOrderItem itemOrder : orderItemList) {
-			itemOrder.setOrder(jdOrder);
-			CommonOrder newCommonOrder = CommonOrderFactory.create(itemOrder);
-			CommonOrderGoods cog = new CommonOrderGoods();
-			cog.setGoodsId(itemOrder.getSkuId() + "");
-			cog.setGoodsType(Constant.SOURCE_TYPE_JD);
-			newCommonOrder.setCommonOrderGoods(cog);
-			newCommonOrder.setStateWholeOrder(wholeOrderState);
-			// 璁㈠崟鍟嗗搧鎻掑叆
-			List<CommonOrderGoods> commonGoodsList = commonOrderGoodsMapper.listByGoodsIdAndGoodsType(cog.getGoodsId(),
-					cog.getGoodsType());
-			if (commonGoodsList.size() <= 0)// 涓嶅瓨鍦ㄥ氨鎻掑叆鍟嗗搧
-			{
-				JDGoods goods = JDApiUtil.getGoodsDetail(itemOrder.getSkuId());
-				if (goods == null) {
-					goods = JDUtil.getGoodsFromWeb(itemOrder.getSkuId());
-				}
+            BigDecimal settlement = order.getSettlement();
+            if (settlement != null && settlement.compareTo(new BigDecimal(0)) > 0) {
+                order.setPayment(settlement); // 瀹為檯浠樻閲戦
+            }
 
-				if (goods == null) {
-					goods = new JDGoods();
-					goods.setSkuName(itemOrder.getSkuName());
-					goods.setPrice(itemOrder.getPrice());
-					goods.setSkuId(itemOrder.getSkuId());
-				}
+            /* 璁㈠崟杩斿埄绫诲瀷 杞崲 */
+            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);
+            }
 
-				if (goods != null) {
-					cog = CommonOrderGoodsFactory.create(goods);
-				}
+            Integer hongBaoState = order.getHongBaoState();
+            if (HongBaoV2.STATE_KELINGQU == hongBaoState || HongBaoV2.STATE_BUKELINGQU == hongBaoState) {
+                // 鏈埌璐�
+                order.setHongBaoState(1);
 
-				cog.setCreateTime(new Date());
-				cog.setUpdateTime(new Date());
-				commonOrderGoodsMapper.insertSelective(cog);
-			} else {
+            } else if (HongBaoV2.STATE_YILINGQU == hongBaoState) {
+                // 宸插埌璐�
+                order.setHongBaoState(2);
 
-			}
-			newCommonOrder.setUserInfo(new UserInfo(uid));
-			commonOrderList.add(addCommonOrder(newCommonOrder));
-		}
-		addConfirmMQMsg(commonOrderList);
-		return commonOrderList;
-	}
+            } else if (HongBaoV2.STATE_SHIXIAO == hongBaoState) {
+                // 宸插け鏁�
+                order.setHongBaoState(3);
+            }
 
-	/**
-	 * 娣诲姞璁㈠崟
-	 * 
-	 * @param commonOrder
-	 */
-	@Transactional(rollbackFor = Exception.class)
-	private CommonOrderAddResultDTO addCommonOrder(CommonOrder commonOrder) throws CommonOrderException {
-		// 鍒ゆ柇鍟嗗搧鏄惁瀛樺湪
-		if (commonOrder == null)
-			throw new CommonOrderException(1, "璁㈠崟涓虹┖");
-		if (commonOrder.getUserInfo() == null)
-			throw new CommonOrderException(2, "璁㈠崟鐢ㄦ埛涓虹┖");
+        }
 
-		if (commonOrder.getCommonOrderGoods() == null || commonOrder.getCommonOrderGoods().getGoodsId() == null
-				|| commonOrder.getCommonOrderGoods().getGoodsType() == null)
-			throw new CommonOrderException(3, "璁㈠崟鍟嗗搧涓虹┖");
-		// 涓嶅瓨鍦ㄥ氨鎻掑叆锛屽瓨鍦ㄥ氨涓嶇
-		CommonOrderGoods goods = commonOrder.getCommonOrderGoods();
+        return list;
 
-		// 涔嬪墠涓嶅瓨鍦ㄤ簬鏁版嵁搴�
-		if (commonOrder.getCommonOrderGoods().getId() == null) {
-			List<CommonOrderGoods> commonGoodsList = commonOrderGoodsMapper
-					.listByGoodsIdAndGoodsType(goods.getGoodsId(), goods.getGoodsType());
+    }
 
-			if (commonGoodsList == null || commonGoodsList.size() < 1) {// 涓嶅瓨鍦�
-				commonOrderGoodsMapper.insertSelective(goods);
-			} else {// 瀛樺湪
-				goods = commonGoodsList.get(0);
-			}
-			if (goods.getId() == null)
-				throw new CommonOrderException(4, "鍟嗗搧鎻掑叆澶辫触");
-			commonOrder.setCommonOrderGoods(goods);
-		}
+    @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);
+    }
 
-		CommonOrder oldCommonOrder = null;
+    @Override
+    public List<CommonOrderVO> listQuery(long start, int count, Integer keyType, String key, Integer state,
+                                         List<Integer> typeList, Integer orderState, String startTime, String endTime, Integer source, List<Long> listShopId,
+                                         List<Long> listGoodsId, Date minTime, BigDecimal money, BigDecimal payment, SystemEnum system) throws CommonOrderException {
 
-		if (!StringUtil.isNullOrEmpty(commonOrder.getTradeId()))
-			oldCommonOrder = commonOrderMapper.selectBySourceTypeAndTradeId(commonOrder.getSourceType(),
-					commonOrder.getTradeId());
-		else {
-			throw new CommonOrderException(10, "浜ゆ槗ID涓虹┖");
-		}
-		if (oldCommonOrder == null)// 鏂板
-		{
-			commonOrder.setCreateTime(new Date());
-			UserLevelEnum userLevel = userLevelManager.getUserLevel(commonOrder.getUserInfo().getId(),
-					commonOrder.getThirdCreateTime());
-			// 鏌ヨ鏄惁涓簐ip
-			if (userLevel != null)
-				commonOrder.setUrank(userLevel.getOrderRank());// VIP璁㈠崟
-			else {
-				UserInfo user = userInfoService.selectAvailableByPrimaryKey(commonOrder.getUserInfo().getId());
-				if (user != null)
-					commonOrder.setUrank(user.getRank());
-			}
+        List<CommonOrderVO> list = null;
 
-			commonOrderMapper.insertSelective(commonOrder);
-			// 鎻掑叆鏄犲皠锛屼繚璇佷氦鏄揑D鐨勫畬鏁存��
-			commonOrderTradeIdMapMapper.insertSelective(new CommonOrderTradeIdMap(commonOrder.getId(),
-					commonOrder.getTradeId(), new Date(), commonOrder.getSourceType()));
-			return new CommonOrderAddResultDTO(commonOrder, CommonOrderAddResultDTO.TYPE_ADD);
-		} else {// 淇敼
-			// 闈炰含涓滃凡缁忕粨绠楋紝宸茬粡澶辨晥锛岀姸鎬佹湭鏀瑰彉鐨勮鍗曚笉澶勭悊
-			if ((oldCommonOrder.getState() == CommonOrder.STATE_JS
-					&& oldCommonOrder.getSourceType() != Constant.SOURCE_TYPE_JD)
-					|| oldCommonOrder.getState() == CommonOrder.STATE_SX
-					|| oldCommonOrder.getState() == CommonOrder.STATE_WQ
-					|| (oldCommonOrder.getState().intValue() == commonOrder.getState())) {
-				return new CommonOrderAddResultDTO(oldCommonOrder, CommonOrderAddResultDTO.TYPE_NOUPDATE);
-			}
-			// 浜ゆ槗ID涓�鑷存墠淇敼
-			if (commonOrder.getTradeId() != null
-					&& commonOrder.getTradeId().equalsIgnoreCase(oldCommonOrder.getTradeId())) {
-				CommonOrder updateCommonOrder = new CommonOrder(oldCommonOrder.getId());
-				updateCommonOrder.seteIncome(commonOrder.geteIncome());
-				updateCommonOrder.setEstimate(commonOrder.getEstimate());
-				updateCommonOrder.setPayment(commonOrder.getPayment());
-				updateCommonOrder.setSettlement(commonOrder.getSettlement());
-				updateCommonOrder.setSettleTime(commonOrder.getSettleTime());
-				updateCommonOrder.setState(commonOrder.getState());
-				updateCommonOrder.setStateWholeOrder(commonOrder.getStateWholeOrder());
-				updateCommonOrder.setUpdateTime(new Date());
-				updateCommonOrder.setTradeId(commonOrder.getTradeId());
-				commonOrderMapper.updateByPrimaryKeySelective(updateCommonOrder);
-				return new CommonOrderAddResultDTO(commonOrderMapper.selectByPrimaryKey(updateCommonOrder.getId()),
-						CommonOrderAddResultDTO.TYPE_UPDATE);
-			} else
-				return new CommonOrderAddResultDTO(oldCommonOrder, CommonOrderAddResultDTO.TYPE_NOUPDATE);
-		}
-	}
+        if (StringUtil.isNullOrEmpty(key) || keyType == 1) {// 鎼滅储妗嗘棤鍊兼垨鑰呮寜璁㈠崟鍙锋悳绱㈡椂閮藉彧鎼滅储涓昏鍗�
+            list = commonOrderMapper.listQueryWithNoChild(start, count, keyType, key, state, typeList, orderState,
+                    startTime, endTime, source, payment, system);
+        } else {
+            list = commonOrderMapper.listQuery(start, count, keyType, key, state, typeList, orderState, startTime, endTime,
+                    source, listShopId, listGoodsId, minTime, money, payment, system);
+        }
 
-	@Override
-	public long countByUidAndOrderStateWithOrderBalanceTime(Long uid, int state, Date minDate, Date maxDate) {
-		return commonOrderMapper.countByUidAndOrderStateWithOrderBalanceTime(uid, state, minDate, maxDate);
-	}
+        if (list == null) {
+            list = new ArrayList<CommonOrderVO>();
+        }
 
-	@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 {
+        if (list.size() == 0) {
+            return list;
+        }
 
-		List<CommonOrderVO> list = commonOrderMapper.listQueryByUid(start, count, uid, state, type, orderState, orderNo,
-				startTime, endTime, dateType);
+        List<String> listTB = new ArrayList<String>();
+        List<String> listJD = new ArrayList<String>();
+        List<String> listPDD = new ArrayList<String>();
+        for (CommonOrderVO commonOrderVO : list) {
+            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());
+            }
+        }
 
-		if (list == null) {
-			list = new ArrayList<CommonOrderVO>();
-		}
+        List<UserSystemCouponRecord> listRecordTB = null;
+        if (listTB.size() > 0) {
+            listRecordTB = userSystemCouponRecordService.getRecordByOrderNoList(Constant.SOURCE_TYPE_TAOBAO, listTB);
+        }
 
-		if (list.size() == 0) {
-			return list;
-		}
+        List<UserSystemCouponRecord> listRecordJD = null;
+        if (listJD.size() > 0) {
+            listRecordJD = userSystemCouponRecordService.getRecordByOrderNoList(Constant.SOURCE_TYPE_JD, listJD);
+        }
 
-		SimpleDateFormat format = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
-		for (CommonOrderVO order : list) {
+        List<UserSystemCouponRecord> listRecordPDD = null;
+        if (listPDD.size() > 0) {
+            listRecordPDD = userSystemCouponRecordService.getRecordByOrderNoList(Constant.SOURCE_TYPE_PDD, listPDD);
+        }
 
-			// 涓嬪崟鏃堕棿
-			Date thirdCreateTime = order.getThirdCreateTime();
-			if (thirdCreateTime != null) {
-				order.setDownTime(format.format(thirdCreateTime));
-			}
-			// 鏀惰揣鏃堕棿
-			Date settleTime = order.getSettleTime();
-			if (settleTime != null) {
-				order.setReceiveTime(format.format(settleTime));
-			}
+        SimpleDateFormat format = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
+        for (CommonOrderVO order : list) {
 
-			// 鍒拌处鏃堕棿
-			Date accountTime = order.getAccountTime();
-			if (accountTime != null) {
-				order.setHongBaoDate(format.format(accountTime));
-			}
+            // 涓嬪崟鏃堕棿
+            Date thirdCreateTime = order.getThirdCreateTime();
+            if (thirdCreateTime != null) {
+                order.setDownTime(format.format(thirdCreateTime));
+            }
+            // 鏀惰揣鏃堕棿
+            Date settleTime = order.getSettleTime();
+            if (settleTime != null) {
+                order.setReceiveTime(format.format(settleTime));
+            }
 
-			BigDecimal settlement = order.getSettlement();
-			if (settlement != null && settlement.compareTo(new BigDecimal(0)) > 0) {
-				order.setPayment(settlement); // 瀹為檯浠樻閲戦
-			}
+            // 鍒拌处鏃堕棿
+            Date accountTime = order.getAccountTime();
+            if (accountTime != null) {
+                order.setHongBaoDate(format.format(accountTime));
+            }
 
-			/* 璁㈠崟杩斿埄绫诲瀷 杞崲 */
-			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);
-			}
+            BigDecimal settlement = order.getSettlement();
+            if (settlement != null && settlement.compareTo(new BigDecimal(0)) > 0) {
+                order.setPayment(settlement); // 瀹為檯浠樻閲戦
+            }
 
-			Integer hongBaoState = order.getHongBaoState();
-			if (HongBaoV2.STATE_KELINGQU == hongBaoState || HongBaoV2.STATE_BUKELINGQU == hongBaoState) {
-				// 鏈埌璐�
-				order.setHongBaoState(1);
+            /* 璁㈠崟杩斿埄绫诲瀷 杞崲 */
+            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);
+            }
 
-			} else if (HongBaoV2.STATE_YILINGQU == hongBaoState) {
-				// 宸插埌璐�
-				order.setHongBaoState(2);
+            Integer hongBaoState = order.getHongBaoState();
+            if (HongBaoV2.STATE_KELINGQU == hongBaoState || HongBaoV2.STATE_BUKELINGQU == hongBaoState) {
+                // 鏈埌璐�
+                order.setHongBaoState(1);
 
-			} else if (HongBaoV2.STATE_SHIXIAO == hongBaoState) {
-				// 宸插け鏁�
-				order.setHongBaoState(3);
-			}
+            } else if (HongBaoV2.STATE_YILINGQU == hongBaoState) {
+                // 宸插埌璐�
+                order.setHongBaoState(2);
 
-		}
+            } else if (HongBaoV2.STATE_SHIXIAO == hongBaoState) {
+                // 宸插け鏁�
+                order.setHongBaoState(3);
+            }
 
-		return list;
+            List<HongBaoV2> listhb = hongBaoV2Service.listChildrenById(order.getHongbaoId());
+            if (listhb != null && listhb.size() > 0) {
+                if (listhb.size() == 1) {
+                    UserInfo userInfo = listhb.get(0).getUserInfo();
+                    if (userInfo != null) {
+                        order.setLevelOneId(userInfo.getId() + "");
+                        order.setLevelOneMoney(listhb.get(0).getMoney() + "");
+                    }
+                } else if (listhb.size() == 2) {
+                    UserInfo userInfo = listhb.get(0).getUserInfo();
+                    if (userInfo != null) {
+                        order.setLevelOneId(userInfo.getId() + "");
+                        order.setLevelOneMoney(listhb.get(0).getMoney() + "");
+                    }
 
-	}
+                    UserInfo userInfo2 = listhb.get(1).getUserInfo();
+                    if (userInfo2 != null) {
+                        order.setLevelTwoId(userInfo2.getId() + "");
+                        order.setLevelTwoMoney(listhb.get(1).getMoney() + "");
+                    }
+                }
+            }
 
-	@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);
-	}
+            Integer sourceType = order.getSourceType();
+            // 濂栧姳璁㈠崟銆佸厤鍗� 浣跨敤璁板綍
+            if (sourceType == null) {
 
-	@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 {
+            } else if (sourceType == Constant.SOURCE_TYPE_TAOBAO && listRecordTB != null && listRecordTB.size() > 0) {
+                for (UserSystemCouponRecord couponRecord : listRecordTB) {
+                    if (order.getOrderNo().equals(couponRecord.getOrderNo())) {
+                        String systemCouponType = couponRecord.getCouponType();
+                        Integer couponState = couponRecord.getState();
+                        if (CouponTypeEnum.freeCoupon.name().equals(systemCouponType)
+                                || CouponTypeEnum.welfareFreeCoupon.name().equals(systemCouponType)
+                                || CouponTypeEnum.freeCouponBuy.name().equals(systemCouponType)) {
+                            if (UserSystemCouponRecord.STATE_SUCCESS == couponState) {
+                                // 鍏嶅崟鎴愬姛
+                                order.setOtherState(2);
+                            } else if (UserSystemCouponRecord.STATE_FREE_ON == couponState) {
+                                order.setOtherState(1);
+                            }
+                        }
+                        break;
+                    }
+                }
+            } else if (sourceType == Constant.SOURCE_TYPE_JD && listRecordJD != null && listRecordJD.size() > 0) {
+                for (UserSystemCouponRecord couponRecord : listRecordJD) {
+                    if (order.getOrderNo().equals(couponRecord.getOrderNo())) {
+                        String systemCouponType = couponRecord.getCouponType();
+                        Integer couponState = couponRecord.getState();
+                        if (CouponTypeEnum.freeCoupon.name().equals(systemCouponType)
+                                || CouponTypeEnum.welfareFreeCoupon.name().equals(systemCouponType)
+                                || CouponTypeEnum.freeCouponBuy.name().equals(systemCouponType)) {
+                            if (UserSystemCouponRecord.STATE_SUCCESS == couponState) {
+                                // 鍏嶅崟鎴愬姛
+                                order.setOtherState(2);
+                            } else if (UserSystemCouponRecord.STATE_FREE_ON == couponState) {
+                                order.setOtherState(1);
+                            }
+                        }
+                        break;
+                    }
+                }
+            } else if (sourceType == Constant.SOURCE_TYPE_PDD && listRecordPDD != null && listRecordPDD.size() > 0) {
+                for (UserSystemCouponRecord couponRecord : listRecordPDD) {
+                    if (order.getOrderNo().equals(couponRecord.getOrderNo())) {
+                        String systemCouponType = couponRecord.getCouponType();
+                        Integer couponState = couponRecord.getState();
+                        if (CouponTypeEnum.freeCoupon.name().equals(systemCouponType)
+                                || CouponTypeEnum.welfareFreeCoupon.name().equals(systemCouponType)
+                                || CouponTypeEnum.freeCouponBuy.name().equals(systemCouponType)) {
+                            if (UserSystemCouponRecord.STATE_SUCCESS == couponState) {
+                                // 鍏嶅崟鎴愬姛
+                                order.setOtherState(2);
+                            } else if (UserSystemCouponRecord.STATE_FREE_ON == couponState) {
+                                order.setOtherState(1);
+                            }
+                        }
+                        break;
+                    }
+                }
+            }
+        }
 
-		List<CommonOrderVO> list = null;
+        return list;
 
-		if (StringUtil.isNullOrEmpty(key) || keyType == 1) {// 鎼滅储妗嗘棤鍊兼垨鑰呮寜璁㈠崟鍙锋悳绱㈡椂閮藉彧鎼滅储涓昏鍗�
-			list = commonOrderMapper.listQueryWithNoChild(start, count, keyType, key, state, type, orderState,
-					startTime, endTime, source, payment);
-		} else {
-			list = commonOrderMapper.listQuery(start, count, keyType, key, state, type, orderState, startTime, endTime,
-					source, listShopId, listGoodsId, minTime, money, payment);
-		}
+    }
 
-		if (list == null) {
-			list = new ArrayList<CommonOrderVO>();
-		}
+    @Override
+    public long countQuery(Integer keyType, String key, Integer state, List<Integer> typeList, Integer orderState,
+                           String startTime, String endTime, Integer source, List<Long> listShopId, List<Long> listGoodsId,
+                           Date minTime, BigDecimal money, BigDecimal payment, SystemEnum system) throws CommonOrderException {
+        if (StringUtil.isNullOrEmpty(key) || keyType == 1) {// 鎼滅储妗嗘棤鍊兼垨鑰呮寜璁㈠崟鍙锋悳绱㈡椂閮藉彧鎼滅储涓昏鍗�
+            return commonOrderMapper.countQueryWithNoChild(keyType, key, state, typeList, orderState, startTime, endTime,
+                    source, payment, system);
+        } else {
+            return commonOrderMapper.countQuery(keyType, key, state, typeList, orderState, startTime, endTime, source,
+                    listShopId, listGoodsId, minTime, money, payment, system);
+        }
+    }
 
-		if (list.size() == 0) {
-			return list;
-		}
+    @Override
+    public CommonOrderVO getCommonOrderByOrderNo(Long uid, String orderNo, Integer orderState, Integer sourceType)
+            throws CommonOrderException {
 
-		List<String> listTB = new ArrayList<String>();
-		List<String> listJD = new ArrayList<String>();
-		List<String> listPDD = new ArrayList<String>();
-		for (CommonOrderVO commonOrderVO : list) {
-			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());
-			}
-		}
+        if (sourceType == null) {
+            sourceType = Constant.SOURCE_TYPE_TAOBAO;
+        }
 
-		List<UserSystemCouponRecord> listRecordTB = null;
-		if (listTB.size() > 0) {
-			listRecordTB = userSystemCouponRecordService.getRecordByOrderNoList(Constant.SOURCE_TYPE_TAOBAO, listTB);
-		}
+        CommonOrderVO commonOrderVO = commonOrderMapper.getCommonOrderByOrderNo(uid, orderNo, orderState, sourceType);
+        // 璁㈠崟淇℃伅涓虹┖
+        if (commonOrderVO == null) {
+            return null;
+        }
 
-		List<UserSystemCouponRecord> listRecordJD = null;
-		if (listJD.size() > 0) {
-			listRecordJD = userSystemCouponRecordService.getRecordByOrderNoList(Constant.SOURCE_TYPE_JD, listJD);
-		}
+        List<CommonOrderVO> listOrder = new ArrayList<CommonOrderVO>();
+        listOrder.add(commonOrderVO);
 
-		List<UserSystemCouponRecord> listRecordPDD = null;
-		if (listPDD.size() > 0) {
-			listRecordPDD = userSystemCouponRecordService.getRecordByOrderNoList(Constant.SOURCE_TYPE_PDD, listPDD);
-		}
+        // 鍟嗗搧淇℃伅
+        List<CommonOrderVO> listGoods = commonOrderMapper.listOrderGoodsInfo(listOrder);
+        // 璁㈠崟鍟嗗搧涓虹┖
+        if (listGoods == null || listGoods.size() == 0) {
+            return null;
+        }
 
-		SimpleDateFormat format = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
-		for (CommonOrderVO order : list) {
+        /* 缁勫悎鍟嗗搧淇℃伅 */
+        for (CommonOrderVO commonOrder : listGoods) {
 
-			// 涓嬪崟鏃堕棿
-			Date thirdCreateTime = order.getThirdCreateTime();
-			if (thirdCreateTime != null) {
-				order.setDownTime(format.format(thirdCreateTime));
-			}
-			// 鏀惰揣鏃堕棿
-			Date settleTime = order.getSettleTime();
-			if (settleTime != null) {
-				order.setReceiveTime(format.format(settleTime));
-			}
+            CommonOrderGoods goods = commonOrder.getCommonOrderGoods();
+            if (goods == null) {
+                continue;
+            }
 
-			// 鍒拌处鏃堕棿
-			Date accountTime = order.getAccountTime();
-			if (accountTime != null) {
-				order.setHongBaoDate(format.format(accountTime));
-			}
+            String orderNo1 = commonOrder.getOrderNo();
+            Integer sourceType1 = commonOrder.getSourceType();
 
-			BigDecimal settlement = order.getSettlement();
-			if (settlement != null && settlement.compareTo(new BigDecimal(0)) > 0) {
-				order.setPayment(settlement); // 瀹為檯浠樻閲戦
-			}
+            String orderNo2 = commonOrderVO.getOrderNo();
+            Integer sourceType2 = commonOrderVO.getSourceType();
 
-			/* 璁㈠崟杩斿埄绫诲瀷 杞崲 */
-			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);
-			}
+            // 鏉ユ簮銆佽鍗曞彿鐩稿悓
+            if (sourceType1.equals(sourceType2) && orderNo1.equals(orderNo2)) {
+                // 鍔犲叆鍟嗗搧淇℃伅
+                List<CommonOrderGoodsVO> listOrderGoods = commonOrderVO.getListOrderGoods();
 
-			Integer hongBaoState = order.getHongBaoState();
-			if (HongBaoV2.STATE_KELINGQU == hongBaoState || HongBaoV2.STATE_BUKELINGQU == hongBaoState) {
-				// 鏈埌璐�
-				order.setHongBaoState(1);
+                CommonOrderGoodsVO commonGoodsVO = new CommonOrderGoodsVO();
+                try {
+                    PropertyUtils.copyProperties(commonGoodsVO, goods);
+                } catch (Exception e) {
+                    e.printStackTrace();
+                }
+                commonGoodsVO.setPlaceOrderTime(TimeUtil.getGernalTime(commonOrder.getThirdCreateTime().getTime(), "yyyy.MM.dd HH:mm"));
 
-			} else if (HongBaoV2.STATE_YILINGQU == hongBaoState) {
-				// 宸插埌璐�
-				order.setHongBaoState(2);
+                String picture = commonGoodsVO.getPicture();
+                if (!StringUtil.isNullOrEmpty(picture) && !picture.contains("320x320")) {
+                    commonGoodsVO.setPicture(TbImgUtil.getTBSize320Img(picture));
+                }
 
-			} else if (HongBaoV2.STATE_SHIXIAO == hongBaoState) {
-				// 宸插け鏁�
-				order.setHongBaoState(3);
-			}
+                Integer hongBaoType = commonOrderVO.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);
+                }
 
-			List<HongBaoV2> listhb = hongBaoV2Service.listChildrenById(order.getHongbaoId());
-			if (listhb != null && listhb.size() > 0) {
-				if (listhb.size() == 1) {
-					UserInfo userInfo = listhb.get(0).getUserInfo();
-					if (userInfo != null) {
-						order.setLevelOneId(userInfo.getId() + "");
-						order.setLevelOneMoney(listhb.get(0).getMoney() + "");
-					}
-				} else if (listhb.size() == 2) {
-					UserInfo userInfo = listhb.get(0).getUserInfo();
-					if (userInfo != null) {
-						order.setLevelOneId(userInfo.getId() + "");
-						order.setLevelOneMoney(listhb.get(0).getMoney() + "");
-					}
+                // 璐拱鏁伴噺
+                commonGoodsVO.setActualCount(commonOrder.getTotalCount() + "浠�");
 
-					UserInfo userInfo2 = listhb.get(1).getUserInfo();
-					if (userInfo2 != null) {
-						order.setLevelTwoId(userInfo2.getId() + "");
-						order.setLevelTwoMoney(listhb.get(1).getMoney() + "");
-					}
-				}
-			}
+                BigDecimal totalSettlement = commonOrder.getTotalSettlement();
+                if (totalSettlement == null || totalSettlement.compareTo(new BigDecimal(0)) <= 0) {
+                    totalSettlement = commonOrder.getTotalPayment();
+                }
+                if (totalSettlement == null || totalSettlement.compareTo(new BigDecimal(0)) <= 0)
+                    commonGoodsVO.setPayState("鏈粯娆�/宸查��娆�");
+                else
+                    commonGoodsVO.setPayState("宸蹭粯娆�");
+                // 瀹炰粯娆�
+                commonGoodsVO.setActualPay("浠樻閲戦锛毬�" + totalSettlement);
 
-			Integer sourceType = order.getSourceType();
-			// 濂栧姳璁㈠崟銆佸厤鍗� 浣跨敤璁板綍
-			if (sourceType == null) {
+                listOrderGoods.add(commonGoodsVO);
 
-			} else if (sourceType == Constant.SOURCE_TYPE_TAOBAO && listRecordTB != null && listRecordTB.size() > 0) {
-				for (UserSystemCouponRecord couponRecord : listRecordTB) {
-					if (order.getOrderNo().equals(couponRecord.getOrderNo())) {
-						String systemCouponType = couponRecord.getCouponType();
-						Integer couponState = couponRecord.getState();
-						if (CouponTypeEnum.freeCoupon.name().equals(systemCouponType)
-								|| CouponTypeEnum.welfareFreeCoupon.name().equals(systemCouponType)
-								|| CouponTypeEnum.freeCouponBuy.name().equals(systemCouponType)) {
-							if (UserSystemCouponRecord.STATE_SUCCESS == couponState) {
-								// 鍏嶅崟鎴愬姛
-								order.setOtherState(2);
-							} else if (UserSystemCouponRecord.STATE_FREE_ON == couponState) {
-								order.setOtherState(1);
-							}
-						}
-						break;
-					}
-				}
-			} else if (sourceType == Constant.SOURCE_TYPE_JD && listRecordJD != null && listRecordJD.size() > 0) {
-				for (UserSystemCouponRecord couponRecord : listRecordJD) {
-					if (order.getOrderNo().equals(couponRecord.getOrderNo())) {
-						String systemCouponType = couponRecord.getCouponType();
-						Integer couponState = couponRecord.getState();
-						if (CouponTypeEnum.freeCoupon.name().equals(systemCouponType)
-								|| CouponTypeEnum.welfareFreeCoupon.name().equals(systemCouponType)
-								|| CouponTypeEnum.freeCouponBuy.name().equals(systemCouponType)) {
-							if (UserSystemCouponRecord.STATE_SUCCESS == couponState) {
-								// 鍏嶅崟鎴愬姛
-								order.setOtherState(2);
-							} else if (UserSystemCouponRecord.STATE_FREE_ON == couponState) {
-								order.setOtherState(1);
-							}
-						}
-						break;
-					}
-				}
-			} else if (sourceType == Constant.SOURCE_TYPE_PDD && listRecordPDD != null && listRecordPDD.size() > 0) {
-				for (UserSystemCouponRecord couponRecord : listRecordPDD) {
-					if (order.getOrderNo().equals(couponRecord.getOrderNo())) {
-						String systemCouponType = couponRecord.getCouponType();
-						Integer couponState = couponRecord.getState();
-						if (CouponTypeEnum.freeCoupon.name().equals(systemCouponType)
-								|| CouponTypeEnum.welfareFreeCoupon.name().equals(systemCouponType)
-								|| CouponTypeEnum.freeCouponBuy.name().equals(systemCouponType)) {
-							if (UserSystemCouponRecord.STATE_SUCCESS == couponState) {
-								// 鍏嶅崟鎴愬姛
-								order.setOtherState(2);
-							} else if (UserSystemCouponRecord.STATE_FREE_ON == couponState) {
-								order.setOtherState(1);
-							}
-						}
-						break;
-					}
-				}
-			}
-		}
+                Integer orderType = commonOrder.getOrderType();
+                if (orderType == null) {
+                    String shopType = commonGoodsVO.getShopType();
+                    if (CommonOrderGoodsVO.TYPE_TAOBAO.equalsIgnoreCase(shopType)) {
+                        commonOrder.setOrderType(1);
+                    } else if (CommonOrderGoodsVO.TYPE_TMALL.equalsIgnoreCase(shopType)) {
+                        commonOrder.setOrderType(2);
+                    }
+                }
 
-		return list;
+                break;
+            }
+        }
 
-	}
+        return commonOrderVO;
+    }
 
-	@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 {
-		if (StringUtil.isNullOrEmpty(key) || keyType == 1) {// 鎼滅储妗嗘棤鍊兼垨鑰呮寜璁㈠崟鍙锋悳绱㈡椂閮藉彧鎼滅储涓昏鍗�
-			return commonOrderMapper.countQueryWithNoChild(keyType, key, state, type, orderState, startTime, endTime,
-					source, payment);
-		} else {
-			return commonOrderMapper.countQuery(keyType, key, state, type, orderState, startTime, endTime, source,
-					listShopId, listGoodsId, minTime, money, payment);
-		}
-	}
+    @Override
+    public JSONObject getRewardJumpInfo(String orderNo, Integer goodsType, SystemEnum system) {
 
-	@Override
-	public CommonOrderVO getCommonOrderByOrderNo(Long uid, String orderNo, Integer orderState, Integer sourceType)
-			throws CommonOrderException {
+        JSONObject map = new JSONObject();
+        // 璁㈠崟鏍囪瘑
+        List<String> signList = new ArrayList<String>();
+        // signList.add(CommonOrder.TYPE_FANLI);
+        // signList.add(PIC_REWARD); // 鍔犲叆濂栧姳鎴愬姛鍥剧墖
+        map.put("signList", signList);
 
-		if (sourceType == null) {
-			sourceType = Constant.SOURCE_TYPE_TAOBAO;
-		}
+        ClientTextStyleVO rewardStyleVO = new ClientTextStyleVO();
+        // 濂栧姳鍒歌繘搴﹁鎯�
+        rewardStyleVO.setContent("宸蹭娇鐢ㄥ鍔卞埜 >");
+        rewardStyleVO.setColor("#E5005C");
+        rewardStyleVO.setBottomColor("#FFDCEA");
 
-		CommonOrderVO commonOrderVO = commonOrderMapper.getCommonOrderByOrderNo(uid, orderNo, orderState, sourceType);
-		// 璁㈠崟淇℃伅涓虹┖
-		if (commonOrderVO == null) {
-			return null;
-		}
+        Map<String, Object> jumpLink = new HashMap<String, Object>();
+        jumpLink.put("orderNo", orderNo);
+        jumpLink.put("goodsType", goodsType == null ? goodsType : goodsType + "");
 
-		List<CommonOrderVO> listOrder = new ArrayList<CommonOrderVO>();
-		listOrder.add(commonOrderVO);
+        Map<String, Object> jump = new HashMap<String, Object>();
+        jump.put("type", 1);
+        jump.put("params", jumpLink);
+        jump.put("jumpDetail", jumpDetailV2Service.getByTypeCache("rewardCouponDetail", system));
 
-		// 鍟嗗搧淇℃伅
-		List<CommonOrderVO> listGoods = commonOrderMapper.listOrderGoodsInfo(listOrder);
-		// 璁㈠崟鍟嗗搧涓虹┖
-		if (listGoods == null || listGoods.size() == 0) {
-			return null;
-		}
+        Map<String, Object> rewardMap = new HashMap<String, Object>();
+        rewardMap.put("text", rewardStyleVO);
+        rewardMap.put("jump", jump);
+        map.put("rewardDetail", rewardMap);
+        return map;
+    }
 
-		/* 缁勫悎鍟嗗搧淇℃伅 */
-		for (CommonOrderVO commonOrder : listGoods) {
+    @Override
+    public CommonOrder selectBySourceTypeAndTradeId(int sourceType, String tradeId) {
+        return commonOrderMapper.selectBySourceTypeAndTradeId(sourceType, tradeId);
+    }
 
-			CommonOrderGoods goods = commonOrder.getCommonOrderGoods();
-			if (goods == null) {
-				continue;
-			}
+    @Transactional
+    @Override
+    public void deleteErrorCommonOrder(Long coId) {
+        // 鏌ヨ鏄惁杩斿埄鍒拌处
+        HongBaoOrder hongBaoOrder = hongBaoOrderService.selectDetailByCommonOrderId(coId);
+        if (hongBaoOrder.getHongBaoV2().getState() == HongBaoV2.STATE_YILINGQU)
+            return;
+        List<HongBaoV2> hongBaoList = hongBaoV2Service.listChildrenById(hongBaoOrder.getHongBaoV2().getId());
+        boolean canDelete = true;
+        for (HongBaoV2 child : hongBaoList)
+            if (child.getState() == HongBaoV2.STATE_YILINGQU) {
+                canDelete = false;
+                break;
+            }
+        // 涓嶈兘鍒犻櫎
+        if (!canDelete)
+            return;
 
-			String orderNo1 = commonOrder.getOrderNo();
-			Integer sourceType1 = commonOrder.getSourceType();
+        // 鍒犻櫎child
+        for (HongBaoV2 child : hongBaoList)
+            hongBaoV2Service.deleteByPrimaryKey(child.getId());
+        // 鍒犻櫎涓荤孩鍖�
+        hongBaoV2Service.deleteByPrimaryKey(hongBaoOrder.getHongBaoV2().getId());
+        // 鍒犻櫎hongbaoOrder
+        hongBaoOrderService.deleteByPrimaryKey(hongBaoOrder.getId());
+        // 鍒犻櫎CommonOrder
+        commonOrderMapper.deleteByPrimaryKey(hongBaoOrder.getCommonOrder().getId());
+    }
 
-			String orderNo2 = commonOrderVO.getOrderNo();
-			Integer sourceType2 = commonOrderVO.getSourceType();
+    @Override
+    public List<CommonOrder> listBySourceTypeAndTradeId(int sourceType, String tradeId) {
+        return commonOrderMapper.listBySourceTypeAndTradeId(sourceType, tradeId);
+    }
 
-			// 鏉ユ簮銆佽鍗曞彿鐩稿悓
-			if (sourceType1.equals(sourceType2) && orderNo1.equals(orderNo2)) {
-				// 鍔犲叆鍟嗗搧淇℃伅
-				List<CommonOrderGoodsVO> listOrderGoods = commonOrderVO.getListOrderGoods();
+    @Override
+    public List<CommonOrder> listBySourceTypeAndStateAndThirdCrateTime(int sourceType, Integer state, Long minTime,
+                                                                       Long maxTime, int page, int pageSize) {
+        return commonOrderMapper.listBySourceTypeAndStateAndThirdCrateTime(sourceType, state, minTime, maxTime,
+                (page - 1) * pageSize, pageSize);
+    }
 
-				CommonOrderGoodsVO commonGoodsVO = new CommonOrderGoodsVO();
-				try {
-					PropertyUtils.copyProperties(commonGoodsVO, goods);
-				} catch (Exception e) {
-					e.printStackTrace();
-				}
+    @Override
+    public List<CommonOrder> getByOrderNo(Long uid, String orderNO) {
+        if(uid!=null) {
+            return commonOrderMapper.getByOrderNo(uid, orderNO);
+        }else{
+            CommonOrderMapper.DaoQuery daoQuery=new CommonOrderMapper.DaoQuery();
+            daoQuery.orderId = orderNO;
+            return  commonOrderMapper.list(daoQuery,0,100);
+        }
+    }
 
-				String picture = commonGoodsVO.getPicture();
-				if (!StringUtil.isNullOrEmpty(picture) && !picture.contains("320x320")) {
-					commonGoodsVO.setPicture(TbImgUtil.getTBSize320Img(picture));
-				}
 
-				Integer hongBaoType = commonOrderVO.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);
-				}
+    @Override
+    public List<CommonOrder> getByOrderNoAndSourceType(Long uid, String orderNO, int sourceType) {
+        return commonOrderMapper.getByOrderNoAndSourceType(uid, orderNO, sourceType);
+    }
 
-				// 璐拱鏁伴噺
-				commonGoodsVO.setActualCount(commonOrder.getTotalCount() + "浠�");
 
-				BigDecimal totalSettlement = commonOrder.getTotalSettlement();
-				if (totalSettlement == null || totalSettlement.compareTo(new BigDecimal(0)) <= 0) {
-					totalSettlement = commonOrder.getTotalPayment();
-				}
-				// 瀹炰粯娆�
-				commonGoodsVO.setActualPay("浠樻閲戦锛毬�" + totalSettlement);
+    @Override
+    public CommonOrder selectLatestValidByUid(Long uid) {
+        List<Integer> stateList = new ArrayList<>();
+        stateList.add(CommonOrder.STATE_FK);
+        stateList.add(CommonOrder.STATE_JS);
+        List<CommonOrder> commonOrderList = commonOrderMapper.listByUid(uid, stateList, 0, 1);
+        if (commonOrderList == null || commonOrderList.size() == 0)
+            return null;
+        return commonOrderList.get(0);
+    }
 
-				listOrderGoods.add(commonGoodsVO);
+    @Override
+    public CommonOrderVO firstValidOrderByUid(Long uid) {
+        return commonOrderMapper.firstValidOrderByUid(uid, null, null);
+    }
 
-				Integer orderType = commonOrder.getOrderType();
-				if (orderType == null) {
-					String shopType = commonGoodsVO.getShopType();
-					if (CommonOrderGoodsVO.TYPE_TAOBAO.equalsIgnoreCase(shopType)) {
-						commonOrder.setOrderType(1);
-					} else if (CommonOrderGoodsVO.TYPE_TMALL.equalsIgnoreCase(shopType)) {
-						commonOrder.setOrderType(2);
-					}
-				}
+    @Override
+    public CommonOrderVO firstValidOrderByUidAndType(Long uid, Integer type) {
+        return commonOrderMapper.firstValidOrderByUid(uid, type, null);
+    }
 
-				break;
-			}
-		}
+    @Override
+    public CommonOrderVO firstValidOrderLastMonthByUidAndType(Long uid, Integer type) {
+        return commonOrderMapper.firstValidOrderByUid(uid, type, 4);
+    }
 
-		return commonOrderVO;
-	}
+    @Override
+    public CommonOrder getFirstShareOrderByUid(Long uid) {
+        return commonOrderMapper.getFirstShareOrderByUid(uid);
+    }
 
-	@Override
-	public JSONObject getRewardJumpInfo(String orderNo, Integer goodsType) {
+    @Override
+    public BigDecimal getTotalRewardMoneyByOrderNoAndSourceType(String orderNo, Integer sourceType) {
+        return commonOrderMapper.getTotalRewardMoneyByOrderNoAndSourceType(orderNo, sourceType);
+    }
 
-		JSONObject map = new JSONObject();
-		// 璁㈠崟鏍囪瘑
-		List<String> signList = new ArrayList<String>();
-		// signList.add(CommonOrder.TYPE_FANLI);
-		// signList.add(PIC_REWARD); // 鍔犲叆濂栧姳鎴愬姛鍥剧墖
-		map.put("signList", signList);
+    @Override
+    public long count24HValidOrderByUid(Long uid, Date minTime) {
+        return commonOrderMapper.count24HValidOrderByUid(uid, minTime);
+    }
 
-		ClientTextStyleVO rewardStyleVO = new ClientTextStyleVO();
-		// 濂栧姳鍒歌繘搴﹁鎯�
-		rewardStyleVO.setContent("宸蹭娇鐢ㄥ鍔卞埜 >");
-		rewardStyleVO.setColor("#E5005C");
-		rewardStyleVO.setBottomColor("#FFDCEA");
+    @Override
+    public long countSearchOrderByUid(Long uid, List<ESOrder> list) {
+        return commonOrderMapper.countSearchOrderByUid(uid, list);
+    }
 
-		Map<String, Object> jumpLink = new HashMap<String, Object>();
-		jumpLink.put("orderNo", orderNo);
-		jumpLink.put("goodsType", goodsType == null ? goodsType : goodsType + "");
+    @Override
+    public List<CommonOrder> getMinSettleTimeAndUid() {
+        return commonOrderMapper.getMinSettleTimeAndUid();
+    }
 
-		Map<String, Object> jump = new HashMap<String, Object>();
-		jump.put("type", 1);
-		jump.put("params", jumpLink);
-		jump.put("jumpDetail", jumpDetailV2Service.getByTypeCache("rewardCouponDetail"));
+    @Override
+    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);
 
-		Map<String, Object> rewardMap = new HashMap<String, Object>();
-		rewardMap.put("text", rewardStyleVO);
-		rewardMap.put("jump", jump);
-		map.put("rewardDetail", rewardMap);
-		return map;
-	}
+        // 璁㈠崟淇℃伅涓虹┖
+        if (listVO == null || listVO.size() == 0) {
+            listVO = new ArrayList<CommonOrderVO>();
+            return listVO;
+        }
 
-	@Override
-	public CommonOrder selectBySourceTypeAndTradeId(int sourceType, String tradeId) {
-		return commonOrderMapper.selectBySourceTypeAndTradeId(sourceType, tradeId);
-	}
+        // 鍟嗗搧淇℃伅
+        List<CommonOrderVO> listGoods = commonOrderMapper.listOrderGoodsInfo(listVO);
+        // 璁㈠崟鍟嗗搧涓虹┖
+        if (listGoods == null || listGoods.size() == 0) {
+            return listVO;
+        }
 
-	@Transactional
-	@Override
-	public void deleteErrorCommonOrder(Long coId) {
-		// 鏌ヨ鏄惁杩斿埄鍒拌处
-		HongBaoOrder hongBaoOrder = hongBaoOrderService.selectDetailByCommonOrderId(coId);
-		if (hongBaoOrder.getHongBaoV2().getState() == HongBaoV2.STATE_YILINGQU)
-			return;
-		List<HongBaoV2> hongBaoList = hongBaoV2Service.listChildrenById(hongBaoOrder.getHongBaoV2().getId());
-		boolean canDelete = true;
-		for (HongBaoV2 child : hongBaoList)
-			if (child.getState() == HongBaoV2.STATE_YILINGQU) {
-				canDelete = false;
-				break;
-			}
-		// 涓嶈兘鍒犻櫎
-		if (!canDelete)
-			return;
+        // 鏁版嵁鍔犲伐閲嶆柊缁勭粐
+        if (VersionUtil.greaterThan_2_1(acceptData.getPlatform(), acceptData.getVersion())) {
+            orderVOFactory21(acceptData, listVO, listGoods, uid);
+        } else {
+            orderVOFactory(acceptData, listVO, listGoods, uid);
+        }
 
-		// 鍒犻櫎child
-		for (HongBaoV2 child : hongBaoList)
-			hongBaoV2Service.deleteByPrimaryKey(child.getId());
-		// 鍒犻櫎涓荤孩鍖�
-		hongBaoV2Service.deleteByPrimaryKey(hongBaoOrder.getHongBaoV2().getId());
-		// 鍒犻櫎hongbaoOrder
-		hongBaoOrderService.deleteByPrimaryKey(hongBaoOrder.getId());
-		// 鍒犻櫎CommonOrder
-		commonOrderMapper.deleteByPrimaryKey(hongBaoOrder.getCommonOrder().getId());
-	}
+        return listVO;
+    }
 
-	@Override
-	public List<CommonOrder> listBySourceTypeAndTradeId(int sourceType, String tradeId) {
-		return commonOrderMapper.listBySourceTypeAndTradeId(sourceType, tradeId);
-	}
+    @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();
+    }
 
-	@Override
-	public List<CommonOrder> listBySourceTypeAndStateAndThirdCrateTime(int sourceType, Integer state, Long minTime,
-			Long maxTime, int page, int pageSize) {
-		return commonOrderMapper.listBySourceTypeAndStateAndThirdCrateTime(sourceType, state, minTime, maxTime,
-				(page - 1) * pageSize, pageSize);
-	}
+    @Override
+    public List<CommonOrderVO> getOrderList(AcceptData acceptData, Integer page, Long uid, Integer state, Integer type,
+                                            Integer orderState, String orderNo, String startTime, String endTime, Integer dateType,
+                                            List<Integer> listSource) throws CommonOrderException, Exception {
 
-	@Override
-	public List<CommonOrder> getByOrderNo(Long uid, String orderNO) {
-		return commonOrderMapper.getByOrderNo(uid, orderNO);
-	}
+        int pageSize = Constant.PAGE_SIZE;
 
-	@Override
-	public CommonOrder selectLatestValidByUid(Long uid) {
-		List<Integer> stateList = new ArrayList<>();
-		stateList.add(CommonOrder.STATE_FK);
-		stateList.add(CommonOrder.STATE_JS);
-		List<CommonOrder> commonOrderList = commonOrderMapper.listByUid(uid, stateList, 0, 1);
-		if (commonOrderList == null || commonOrderList.size() == 0)
-			return null;
-		return commonOrderList.get(0);
-	}
+        List<CommonOrderVO> listOrder = commonOrderMapper.getOrderList((page - 1) * pageSize, pageSize, uid, state,
+                type, orderState, orderNo, startTime, endTime, dateType, listSource);
 
-	@Override
-	public CommonOrderVO firstValidOrderByUid(Long uid) {
-		return commonOrderMapper.firstValidOrderByUid(uid, null, null);
-	}
+        // 璁㈠崟淇℃伅涓虹┖
+        if (listOrder == null || listOrder.size() == 0) {
+            listOrder = new ArrayList<CommonOrderVO>();
+            return listOrder;
+        }
 
-	@Override
-	public CommonOrderVO firstValidOrderByUidAndType(Long uid, Integer type) {
-		return commonOrderMapper.firstValidOrderByUid(uid, type, null);
-	}
+        // 鍟嗗搧淇℃伅
+        List<CommonOrderVO> listGoods = commonOrderMapper.listOrderGoodsInfo(listOrder);
+        if (listGoods == null || listGoods.size() == 0) {
+            return listOrder;
+        }
 
-	@Override
-	public CommonOrderVO firstValidOrderLastMonthByUidAndType(Long uid, Integer type) {
-		return commonOrderMapper.firstValidOrderByUid(uid, type, 4);
-	}
+        // 鏁版嵁鍔犲伐閲嶆柊缁勭粐
+        orderVOFactory21(acceptData, listOrder, listGoods, uid);
 
-	@Override
-	public CommonOrder getFirstShareOrderByUid(Long uid) {
-		return commonOrderMapper.getFirstShareOrderByUid(uid);
-	}
+        return listOrder;
+    }
 
-	@Override
-	public BigDecimal getTotalRewardMoneyByOrderNoAndSourceType(String orderNo, Integer sourceType) {
-		return commonOrderMapper.getTotalRewardMoneyByOrderNoAndSourceType(orderNo, sourceType);
-	}
+    @Override
+    public long countOrderList(Long uid, Integer state, Integer type, Integer orderState, String orderNo,
+                               String startTime, String endTime, Integer dateType, List<Integer> listSource) {
+        return commonOrderMapper.countOrderList(uid, state, type, orderState, orderNo, startTime, endTime, dateType,
+                listSource);
+    }
 
-	@Override
-	public long count24HValidOrderByUid(Long uid, Date minTime) {
-		return commonOrderMapper.count24HValidOrderByUid(uid, minTime);
-	}
+    /**
+     * 璁㈠崟淇℃伅鍔犲伐
+     *
+     * @param acceptData
+     * @param listOrder
+     * @param listGoods
+     * @param uid
+     */
+    private void orderVOFactory21(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>();
+        List<String> listVIP = new ArrayList<String>();
+        List<String> listSuNing = new ArrayList<String>();
+        for (CommonOrderVO order : listOrder) {
+            if (order.getHongBaoType() == HongBaoV2.TYPE_YIJI || order.getHongBaoType() == HongBaoV2.TYPE_ERJI
+                    || order.getHongBaoType() == HongBaoV2.TYPE_SHARE_YIJI
+                    || order.getHongBaoType() == HongBaoV2.TYPE_SHARE_ERJI) {
+                Integer urank = order.getUrank();
+                if (urank != null) {
+                    UserLevelEnum levelEnum = UserLevelUtil.getByOrderRank(urank);
+                    if (levelEnum != null) {
+                        levelEnum = UserLevelUtil.getShowLevel(levelEnum);
+                        order.setOrderDesc("璁㈠崟鏉ユ簮锛�" + levelEnum.getName());
+                    }
+                }
+            }
 
-	@Override
-	public long countSearchOrderByUid(Long uid, List<ESOrder> list) {
-		return commonOrderMapper.countSearchOrderByUid(uid, list);
-	}
+            Integer sourceType = order.getSourceType();
+            if (sourceType == null) {
+                continue;
+            } else if (sourceType == Constant.SOURCE_TYPE_TAOBAO) {
+                listTB.add(order.getOrderNo());
+            } else if (sourceType == Constant.SOURCE_TYPE_JD) {
+                listJD.add(order.getOrderNo());
+            } else if (sourceType == Constant.SOURCE_TYPE_PDD) {
+                listPDD.add(order.getOrderNo());
+            } else if (sourceType == Constant.SOURCE_TYPE_VIP) {
+                listVIP.add(order.getOrderNo());
+            } else if (sourceType == Constant.SOURCE_TYPE_SUNING) {
+                listSuNing.add(order.getOrderNo());
+            }
+        }
+        //鏌ヨ鎷煎澶氱殑璁㈠崟璇︽儏
+        List<PDDOrder> pddOrderList = pddOrderService.listByOrderSns(listPDD);
+        Set<String> bjOrders = new HashSet<>();
+        if (pddOrderList != null) {
+            for (PDDOrder pdd : pddOrderList)
+                if (pdd.getFailReason() != null && pdd.getFailReason().contains("姣斾环"))
+                    bjOrders.add(pdd.getOrderSn());
+        }
+        for (CommonOrderVO commonOrderVO : listOrder) {
+            if (commonOrderVO.getSourceType() == Constant.SOURCE_TYPE_PDD && bjOrders.contains(commonOrderVO.getOrderNo())) {
+                commonOrderVO.setOrderStateDesc("姣斾环璁㈠崟");
+            }
+        }
 
-	@Override
-	public List<CommonOrder> getMinSettleTimeAndUid() {
-		return commonOrderMapper.getMinSettleTimeAndUid();
-	}
+        List<UserSystemCouponRecord> listRecordTB = null;
+        if (listTB.size() > 0) {
+            listRecordTB = userSystemCouponRecordService.getRecordByOrderNoList(Constant.SOURCE_TYPE_TAOBAO, listTB);
+        }
 
-	@Override
-	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);
+        List<UserSystemCouponRecord> listRecordJD = null;
+        if (listJD.size() > 0) {
+            listRecordJD = userSystemCouponRecordService.getRecordByOrderNoList(Constant.SOURCE_TYPE_JD, listJD);
+        }
 
-		// 璁㈠崟淇℃伅涓虹┖
-		if (listVO == null || listVO.size() == 0) {
-			listVO = new ArrayList<CommonOrderVO>();
-			return listVO;
-		}
+        List<UserSystemCouponRecord> listRecordPDD = null;
+        if (listPDD.size() > 0) {
+            listRecordPDD = userSystemCouponRecordService.getRecordByOrderNoList(Constant.SOURCE_TYPE_PDD, listPDD);
+        }
 
-		// 鍟嗗搧淇℃伅
-		List<CommonOrderVO> listGoods = commonOrderMapper.listOrderGoodsInfo(listVO);
-		// 璁㈠崟鍟嗗搧涓虹┖
-		if (listGoods == null || listGoods.size() == 0) {
-			return listVO;
-		}
+        List<UserSystemCouponRecord> listRecordVIP = null;
+        if (listVIP.size() > 0) {
+            listRecordVIP = userSystemCouponRecordService.getRecordByOrderNoList(Constant.SOURCE_TYPE_VIP, listVIP);
+        }
 
-		// 鏁版嵁鍔犲伐閲嶆柊缁勭粐
-		if (VersionUtil.greaterThan_2_1(acceptData.getPlatform(), acceptData.getVersion())) {
-			orderVOFactory21(acceptData, listVO, listGoods, uid);
-		} else {
-			orderVOFactory(acceptData, listVO, listGoods, uid);
-		}
+        List<UserSystemCouponRecord> listRecordSuNing = null;
+        if (listSuNing.size() > 0) {
+            listRecordSuNing = userSystemCouponRecordService.getRecordByOrderNoList(Constant.SOURCE_TYPE_SUNING, listSuNing);
+        }
 
-		return listVO;
-	}
 
-	@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();
-	}
+        SimpleDateFormat format = new SimpleDateFormat("yyyy.MM.dd HH:mm");
+        SimpleDateFormat formatday = new SimpleDateFormat("yyyy.MM.dd");
+        // 鏄惁瀛樺湪濂栧姳鍒�
+        for (CommonOrderVO order : listOrder) {
+            String orderNo = order.getOrderNo();
+            Integer sourceType = order.getSourceType();
+            Integer hongBaoType = order.getHongBaoType();
 
-	@Override
-	public List<CommonOrderVO> getOrderList(AcceptData acceptData, Integer page, Long uid, Integer state, Integer type,
-			Integer orderState, String orderNo, String startTime, String endTime, Integer dateType,
-			List<Integer> listSource, boolean notBackSuVip) throws CommonOrderException, Exception {
+            // 鍟嗗搧淇℃伅缁勫悎
+            for (CommonOrderVO commonOrder : listGoods) {
+                CommonOrderGoods goods = commonOrder.getCommonOrderGoods();
+                if (goods == null) {
+                    continue;
+                }
 
-		int pageSize = Constant.PAGE_SIZE;
-		
-		List<CommonOrderVO> listOrder = commonOrderMapper.getOrderList((page - 1) * pageSize, pageSize, uid, state,
-				type, orderState, orderNo, startTime, endTime, dateType, listSource,notBackSuVip);
+                if (sourceType.equals(commonOrder.getSourceType()) && orderNo.equals(commonOrder.getOrderNo())) {
+                    CommonOrderGoodsVO commonGoodsVO = new CommonOrderGoodsVO();
+                    PropertyUtils.copyProperties(commonGoodsVO, goods);
+                    if (commonGoodsVO.getGoodsType() == null) {
+                        commonGoodsVO.setGoodsType(sourceType);
+                    }
+                    commonGoodsVO.setPlaceOrderTime(TimeUtil.getGernalTime(order.getThirdCreateTime().getTime(), "yyyy.MM.dd HH:mm"));
 
-		// 璁㈠崟淇℃伅涓虹┖
-		if (listOrder == null || listOrder.size() == 0) {
-			listOrder = new ArrayList<CommonOrderVO>();
-			return listOrder;
-		}
+                    // 娣樺疂鍟嗗搧鍥剧墖澶勭悊
+                    String picture = commonGoodsVO.getPicture();
+                    if (sourceType == Constant.SOURCE_TYPE_TAOBAO && !StringUtil.isNullOrEmpty(picture)
+                            && !picture.contains("320x320")) {
+                        commonGoodsVO.setPicture(TbImgUtil.getTBSize320Img(picture));
+                    }
 
-		// 鍟嗗搧淇℃伅
-		List<CommonOrderVO> listGoods = commonOrderMapper.listOrderGoodsInfo(listOrder);
-		if (listGoods == null || listGoods.size() == 0) {
-			return listOrder;
-		}
+                    // 璐拱鏁伴噺
+                    commonGoodsVO.setActualCount(commonOrder.getTotalCount() + "浠�");
 
-		// 鏁版嵁鍔犲伐閲嶆柊缁勭粐
-		orderVOFactory21(acceptData, listOrder, listGoods, uid);
+                    // 瀹炰粯娆�
+                    BigDecimal totalSettlement = commonOrder.getTotalSettlement();
+                    if (totalSettlement == null || totalSettlement.compareTo(new BigDecimal(0)) <= 0) {
+                        totalSettlement = commonOrder.getTotalPayment();
+                    }
+                    if (totalSettlement == null || totalSettlement.compareTo(new BigDecimal(0)) <= 0)
+                        commonGoodsVO.setPayState("鏈粯娆�/宸查��娆�");
+                    else
+                        commonGoodsVO.setPayState("宸蹭粯娆�");
 
-		return listOrder;
-	}
+                    commonGoodsVO.setActualPay("浠樻閲戦锛毬�" + totalSettlement);
 
-	@Override
-	public long countOrderList(Long uid, Integer state, Integer type, Integer orderState, String orderNo,
-			String startTime, String endTime, Integer dateType, List<Integer> listSource, boolean notBackSuVip) throws CommonOrderException {
-		return commonOrderMapper.countOrderList(uid, state, type, orderState, orderNo, startTime, endTime, dateType,
-				listSource, notBackSuVip);
-	}
+                    // 閭�璇疯鍗曚俊鎭繚鎶�
+                    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);
+                    }
 
-	/**
-	 * 璁㈠崟淇℃伅鍔犲伐
-	 * 
-	 * @param acceptData
-	 * @param listOrder
-	 * @param listGoods
-	 * @param uid
-	 */
-	private void orderVOFactory21(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 order : listOrder) {
-			if (order.getHongBaoType() == HongBaoV2.TYPE_YIJI || order.getHongBaoType() == HongBaoV2.TYPE_ERJI
-					|| order.getHongBaoType() == HongBaoV2.TYPE_SHARE_YIJI
-					|| order.getHongBaoType() == HongBaoV2.TYPE_SHARE_ERJI) {
-				Integer urank = order.getUrank();
-				if (urank != null) {
-					 UserLevelEnum levelEnum = UserLevelUtil.getByOrderRank(urank);
-					if (levelEnum != null) {
-						levelEnum = UserLevelUtil.getShowLevel(levelEnum);
-						order.setOrderDesc("璁㈠崟鏉ユ簮锛�" + levelEnum.getName());
-					}
-				}
-			}
+                    // 璁㈠崟绫诲瀷涓虹┖鏃� 宸插晢鍝佺被涓哄噯
+                    String shopType = commonGoodsVO.getShopType();
+                    if (CommonOrderGoodsVO.TYPE_TAOBAO.equalsIgnoreCase(shopType)) {
+                        order.setOrderType(1);
+                    } else if (CommonOrderGoodsVO.TYPE_TMALL.equalsIgnoreCase(shopType)) {
+                        order.setOrderType(2);
+                    }
 
-			Integer sourceType = order.getSourceType();
-			if (sourceType == null) {
-				continue;
-			} else if (sourceType == Constant.SOURCE_TYPE_TAOBAO) {
-				listTB.add(order.getOrderNo());
-			} else if (sourceType == Constant.SOURCE_TYPE_JD) {
-				listJD.add(order.getOrderNo());
-			} else if (sourceType == Constant.SOURCE_TYPE_PDD) {
-				listPDD.add(order.getOrderNo());
-			}
-		}
+                    Integer goodsType = commonGoodsVO.getGoodsType();
+                    if (goodsType != null & goodsType == Constant.SOURCE_TYPE_ELME) {
+                        order.setOrderType(Constant.SOURCE_TYPE_ELME); // 楗夸簡涔堣鍗�
+                        commonGoodsVO.setGoodsId("0");
+                    }
 
-		List<UserSystemCouponRecord> listRecordTB = null;
-		if (listTB.size() > 0) {
-			listRecordTB = userSystemCouponRecordService.getRecordByOrderNoList(Constant.SOURCE_TYPE_TAOBAO, listTB);
-		}
+                    if (goodsType == Constant.SOURCE_TYPE_SUNING) {
+                        commonGoodsVO.setGoodsId(SuningUtil.getConcatGoodsIId(commonGoodsVO.getShopId() + "", commonGoodsVO.getGoodsId()));
+                    }
+                    order.getListOrderGoods().add(commonGoodsVO);
+                }
+            }
 
-		List<UserSystemCouponRecord> listRecordJD = null;
-		if (listJD.size() > 0) {
-			listRecordJD = userSystemCouponRecordService.getRecordByOrderNoList(Constant.SOURCE_TYPE_JD, listJD);
-		}
+            // 璁㈠崟绫诲瀷
+            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);
+            }
 
-		List<UserSystemCouponRecord> listRecordPDD = null;
-		if (listPDD.size() > 0) {
-			listRecordPDD = userSystemCouponRecordService.getRecordByOrderNoList(Constant.SOURCE_TYPE_PDD, listPDD);
-		}
+            // 瀛愭潵婧愮被鍨�
+            ClientTextStyleVO shopStyleVO = new ClientTextStyleVO();
+            SourceTypeEnum typeEnum = SourceTypeEnum.getByDesc(order.getChildSourceType());
+            if (typeEnum == null) {
+                shopStyleVO.setContent("鍏朵粬");
+                shopStyleVO.setColor("#FF5000");
+                shopStyleVO.setBorderColor("#FF5000");
+            } else {
+                shopStyleVO.setContent(typeEnum.getDescShow());
+                shopStyleVO.setColor(typeEnum.getFontColor());
+                shopStyleVO.setBorderColor(typeEnum.getBorderColor());
+            }
+            order.setShopType(shopStyleVO);
 
-		SimpleDateFormat format = new SimpleDateFormat("yyyy.MM.dd HH:mm");
-		SimpleDateFormat formatday = new SimpleDateFormat("yyyy.MM.dd");
-		// 鏄惁瀛樺湪濂栧姳鍒�
-		for (CommonOrderVO order : listOrder) {
-			String orderNo = order.getOrderNo();
-			Integer sourceType = order.getSourceType();
-			Integer hongBaoType = order.getHongBaoType();
 
-			// 鍟嗗搧淇℃伅缁勫悎
-			for (CommonOrderVO commonOrder : listGoods) {
-				CommonOrderGoods goods = commonOrder.getCommonOrderGoods();
-				if (goods == null) {
-					continue;
-				}
+            Date thirdCreateTime = order.getThirdCreateTime();
+            if (thirdCreateTime != null) {
+                order.setDownTime("涓嬪崟鏃堕棿锛�" + format.format(thirdCreateTime));
+                order.setObtainTime(thirdCreateTime.getTime());
+            }
 
-				if (sourceType.equals(commonOrder.getSourceType()) && orderNo.equals(commonOrder.getOrderNo())) {
-					CommonOrderGoodsVO commonGoodsVO = new CommonOrderGoodsVO();
-					PropertyUtils.copyProperties(commonGoodsVO, goods);
-					if (commonGoodsVO.getGoodsType() == null) {
-						commonGoodsVO.setGoodsType(sourceType);
-					}
+            Date settleTime = order.getSettleTime();
+            if (settleTime != null) {
+                order.setReceiveTime("鏀惰揣鏃堕棿锛�" + format.format(settleTime));
+            }
 
-					// 娣樺疂鍟嗗搧鍥剧墖澶勭悊
-					String picture = commonGoodsVO.getPicture();
-					if (sourceType == Constant.SOURCE_TYPE_TAOBAO && !StringUtil.isNullOrEmpty(picture)
-							&& !picture.contains("320x320")) {
-						commonGoodsVO.setPicture(TbImgUtil.getTBSize320Img(picture));
-					}
+            Map<String, String> orderStateMap = new HashMap<String, String>();
+            // 璁㈠崟鐘舵��
+            Integer orderState = order.getState();
+            Integer stateWholeOrder = order.getStateWholeOrder();
+            if (CommonOrder.STATE_WHOLE_ORDER_BUFENYOUXIAO == stateWholeOrder) {
+                // 鏁翠釜璁㈠崟閮ㄥ垎澶辨晥锛氬垽鏂湡瀹炵姸鎬� 璁㈠崟銆佺孩鍖�
+                CommonOrderVO buFenOrder = commonOrderMapper.getBuFenOrderState(uid, order.getOrderNo());
+                if (buFenOrder != null) {
+                    // 鏈夋晥鐨勮鍗曠姸鎬�
+                    orderState = buFenOrder.getState();
+                }
+            }
 
-					// 璐拱鏁伴噺
-					commonGoodsVO.setActualCount(commonOrder.getTotalCount() + "浠�");
+            // 鏄剧ず杩斿埄璇存槑杩炴帴> 鏈け鏁�
+            if (CommonOrder.STATE_SX != orderState
+                    && thirdCreateTime.getTime() > TimeUtil.convertDateToTemp(Constant.ORDER_SHOW_BRACE_TIME)) {
+                String rebateLink = configService.getValue(ConfigKeyEnum.orderRebateDescLink.getKey(), acceptData.getSystem());
+                order.setRebateLink(rebateLink + "?orderNo=" + orderNo + "&sourceType=" + sourceType);
+            }
 
-					// 瀹炰粯娆�
-					BigDecimal totalSettlement = commonOrder.getTotalSettlement();
-					if (totalSettlement == null || totalSettlement.compareTo(new BigDecimal(0)) <= 0) {
-						totalSettlement = commonOrder.getTotalPayment();
-					}
-					commonGoodsVO.setActualPay("浠樻閲戦锛毬�" + totalSettlement);
+            // 绾㈠寘淇℃伅
+            List<HongBaoOrder> hongBaoOrderList = hongBaoOrderService.listDetailByOrderIdAndSourceTypeAndUid(orderNo,
+                    sourceType, uid);
+            HongBaoCountVO hongBaoCountVO = hongBaoOrderService.getHongBaoCountVO(hongBaoOrderList);
+            BigDecimal hongBao = hongBaoCountVO.getValidMoney();
+            Integer hongBaoState = hongBaoCountVO.getCurrentState();
 
-					// 閭�璇疯鍗曚俊鎭繚鎶�
-					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);
-					}
+            /* 璁㈠崟鐘舵�� 杞崲澶勭悊 */
+            String orderStateContent = "";
+            if (!StringUtil.isNullOrEmpty(order.getOrderStateDesc()))
+                orderStateContent = order.getOrderStateDesc();
+            else {
+                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 == Constant.SOURCE_TYPE_TAOBAO) {
+                        /* 璁㈠崟缁存潈 鍒ゆ柇鏄惁鍏ㄩ儴缁存潈 */
+                        List<TaoBaoWeiQuanOrder> listWQ = taoBaoWeiQuanOrderMapper
+                                .selectListByOrderIdAndState(order.getOrderNo(), "缁存潈鎴愬姛");
+                        BigDecimal weiQuanMoney = getWeiQuanMoney(listWQ, sourceType, uid);
 
-					// 璁㈠崟绫诲瀷涓虹┖鏃� 宸插晢鍝佺被涓哄噯
-					String shopType = commonGoodsVO.getShopType();
-					if (CommonOrderGoodsVO.TYPE_TAOBAO.equalsIgnoreCase(shopType)) {
-						order.setOrderType(1);
-					} else if (CommonOrderGoodsVO.TYPE_TMALL.equalsIgnoreCase(shopType)) {
-						order.setOrderType(2);
-					}
+                        if (settleTime != null) {
+                            orderStateContent = "鍞悗鎴愬姛";
+                            WeiQuanInfo weiQuanInfo = new WeiQuanInfo();
+                            weiQuanInfo.setOldHongBao("楼" + hongBao.setScale(2, BigDecimal.ROUND_DOWN).toString());
+                            weiQuanInfo.setWqHongBao("鍞悗锛�-楼" + weiQuanMoney.setScale(2, BigDecimal.ROUND_DOWN).toString());
+                            order.setWeiQuanInfo(weiQuanInfo);
+                        }
+                        hongBao = MoneyBigDecimalUtil.sub(hongBao, weiQuanMoney);
+                    }
+                }
+            }
+            orderStateMap.put("content", orderStateContent);
+            orderStateMap.put("fontColor", "#666666");
+            order.setOrderState(orderStateMap);
 
-					Integer goodsType = commonGoodsVO.getGoodsType();
-					if (goodsType != null & goodsType == Constant.SOURCE_TYPE_ELME) {
-						order.setOrderType(Constant.SOURCE_TYPE_ELME); // 楗夸簡涔堣鍗�
-					}
-					order.getListOrderGoods().add(commonGoodsVO);
-				}
-			}
+            // 璁㈠崟鏍囪瘑
+            List<String> signList = new ArrayList<String>();
+            /* 璁㈠崟杩斿埄绫诲瀷 杞崲 */
+            if (HongBaoV2.TYPE_ZIGOU == hongBaoType || 2 == hongBaoType) {
+                // 鑷喘
+                order.setOrderOrigin("1");
+                order.setHongBaoTypePic(CommonOrder.TYPE_FANLI);
+                signList.add(CommonOrder.TYPE_FANLI);
 
-			// 璁㈠崟绫诲瀷
-			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);
-			}
+                // 鏄惁宸蹭娇鐢ㄥ鍔卞埜銆佸厤鍗曞埜鎯呭喌
+                if (sourceType == Constant.SOURCE_TYPE_TAOBAO) {
+                    couponUseFactory(order, listRecordTB);
+                } else if (sourceType == Constant.SOURCE_TYPE_JD) {
+                    couponUseFactory(order, listRecordJD);
+                } else if (sourceType == Constant.SOURCE_TYPE_PDD) {
+                    couponUseFactory(order, listRecordPDD);
+                } else if (sourceType == Constant.SOURCE_TYPE_VIP) {
+                    couponUseFactory(order, listRecordVIP);
+                } else if (sourceType == Constant.SOURCE_TYPE_SUNING) {
+                    couponUseFactory(order, listRecordSuNing);
+                }
+            } else if (HongBaoV2.TYPE_SHARE_GOODS == hongBaoType) {
+                // 鍒嗕韩
+                order.setOrderOrigin("2");
+                order.setHongBaoTypePic(CommonOrder.TYPE_SHARE);
+                signList.add(CommonOrder.TYPE_SHARE);
 
-			Date thirdCreateTime = order.getThirdCreateTime();
-			if (thirdCreateTime != null) {
-				order.setDownTime("涓嬪崟鏃堕棿锛�" + format.format(thirdCreateTime));
-				order.setObtainTime(thirdCreateTime.getTime());
-			}
+            } else if (HongBaoV2.TYPE_SHARE_YIJI == hongBaoType || HongBaoV2.TYPE_SHARE_ERJI == hongBaoType
+                    || HongBaoV2.TYPE_YAOQING == hongBaoType || HongBaoV2.TYPE_YIJI == hongBaoType
+                    || HongBaoV2.TYPE_ERJI == hongBaoType) {
+                // 閭�璇疯鍗�
+                order.setOrderOrigin("3");
+                order.setHongBaoTypePic(CommonOrder.TYPE_INVITE);
+                signList.add(CommonOrder.TYPE_INVITE);
+            }
+            order.setSignList(signList);
 
-			Date settleTime = order.getSettleTime();
-			if (settleTime != null) {
-				order.setReceiveTime("鏀惰揣鏃堕棿锛�" + format.format(settleTime));
-			}
+            String hongBaoDate = null;
+            String hongBaoState_Str = "";
+            String hongbaoInfoFontColor = "#E5005C";
 
-			Map<String, String> orderStateMap = new HashMap<String, String>();
-			// 璁㈠崟鐘舵��
-			Integer orderState = order.getState();
-			Integer stateWholeOrder = order.getStateWholeOrder();
-			if (CommonOrder.STATE_WHOLE_ORDER_BUFENYOUXIAO == stateWholeOrder) {
-				// 鏁翠釜璁㈠崟閮ㄥ垎澶辨晥锛氬垽鏂湡瀹炵姸鎬� 璁㈠崟銆佺孩鍖�
-				CommonOrderVO buFenOrder = commonOrderMapper.getBuFenOrderState(uid, order.getOrderNo());
-				if (buFenOrder != null) {
-					// 鏈夋晥鐨勮鍗曠姸鎬�
-					orderState = buFenOrder.getState();
-				}
-			}
+            /* 绾㈠寘鐘舵�� 杞崲 */
+            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_SHIXIAO == hongBaoState) {
+                orderHongBaoState = 4;
+                stateContent = "宸插け鏁�";
+                hongbaoInfoFontColor = "#888888";
+            }
+            order.setHongBaoState(orderHongBaoState);
+            order.setHongBaoDate(hongBaoDate);
 
-			// 鏄剧ず杩斿埄璇存槑杩炴帴> 鏈け鏁�
-			if (CommonOrder.STATE_SX != orderState
-					&& thirdCreateTime.getTime() > TimeUtil.convertDateToTemp(Constant.ORDER_SHOW_BRACE_TIME)) {
-				String rebateLink = configService.get(ConfigKeyEnum.orderRebateDescLink.getKey());
-				order.setRebateLink(rebateLink + "?orderNo=" + orderNo + "&sourceType=" + sourceType);
-			}
+            if (!StringUtil.isNullOrEmpty(order.getStateDesc())) {
+                stateContent = stateContent + "-" + order.getStateDesc();
+            }
 
-			// 绾㈠寘淇℃伅
-			List<HongBaoOrder> hongBaoOrderList = hongBaoOrderService.listDetailByOrderIdAndSourceTypeAndUid(orderNo,
-					sourceType, uid);
-			HongBaoCountVO hongBaoCountVO = hongBaoOrderService.getHongBaoCountVO(hongBaoOrderList);
-			BigDecimal hongBao = hongBaoCountVO.getValidMoney();
-			Integer hongBaoState = hongBaoCountVO.getCurrentState();
+            Map<String, String> stateMap = new HashMap<String, String>();
+            stateMap.put("content", stateContent);
+            stateMap.put("fontColor", stateFontColor);
+            order.setAccountState(stateMap);
 
-			/* 璁㈠崟鐘舵�� 杞崲澶勭悊 */
-			String orderStateContent = "";
-			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 == Constant.SOURCE_TYPE_TAOBAO) {
-					/* 璁㈠崟缁存潈 鍒ゆ柇鏄惁鍏ㄩ儴缁存潈 */
-					List<TaoBaoWeiQuanOrder> listWQ = taoBaoWeiQuanOrderMapper
-							.selectListByOrderIdAndState(order.getOrderNo(), "缁存潈鎴愬姛");
-					BigDecimal weiQuanMoney = getWeiQuanMoney(listWQ, sourceType, uid);
-					
-					if (settleTime != null) {
-						orderStateContent = "鍞悗鎴愬姛";
-						WeiQuanInfo weiQuanInfo = new WeiQuanInfo();
-						weiQuanInfo.setOldHongBao("楼" + hongBao.setScale(2, BigDecimal.ROUND_DOWN).toString());
-						weiQuanInfo.setWqHongBao("鍞悗锛�-楼" + weiQuanMoney.setScale(2, BigDecimal.ROUND_DOWN).toString());
-						order.setWeiQuanInfo(weiQuanInfo);
-					}
-					hongBao = MoneyBigDecimalUtil.sub(hongBao, weiQuanMoney);
-				}
-			}
-			orderStateMap.put("content", orderStateContent);
-			orderStateMap.put("fontColor", "#666666");
-			order.setOrderState(orderStateMap);
+            Map<String, String> hongBaoMap = new HashMap<String, String>();
+            hongBaoMap.put("content",
+                    hongBaoState_Str + "鏀剁泭 楼" + hongBao.setScale(2, BigDecimal.ROUND_DOWN).toString());
+            hongBaoMap.put("fontColor", hongbaoInfoFontColor);
+            order.setHongBaoInfo(hongBaoMap);
 
-			// 璁㈠崟鏍囪瘑
-			List<String> signList = new ArrayList<String>();
-			/* 璁㈠崟杩斿埄绫诲瀷 杞崲 */
-			if (HongBaoV2.TYPE_ZIGOU == hongBaoType || 2 == hongBaoType) {
-				// 鑷喘
-				order.setOrderOrigin("1");
-				order.setHongBaoTypePic(CommonOrder.TYPE_FANLI);
-				signList.add(CommonOrder.TYPE_FANLI);
+            // 鍒嗕韩銆侀個璇� 闅愯棌璁㈠崟鍙�
+            if (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()));
+            }
+        }
+    }
 
-				// 鏄惁宸蹭娇鐢ㄥ鍔卞埜銆佸厤鍗曞埜鎯呭喌
-				if (sourceType == Constant.SOURCE_TYPE_TAOBAO) {
-					couponUseFactory(order, listRecordTB);
-				} else if (sourceType == Constant.SOURCE_TYPE_JD) {
-					couponUseFactory(order, listRecordJD);
-				} else if (sourceType == Constant.SOURCE_TYPE_PDD) {
-					couponUseFactory(order, listRecordPDD);
-				}
-			} else if (HongBaoV2.TYPE_SHARE_GOODS == hongBaoType) {
-				// 鍒嗕韩
-				order.setOrderOrigin("2");
-				order.setHongBaoTypePic(CommonOrder.TYPE_SHARE);
-				signList.add(CommonOrder.TYPE_SHARE);
+    /**
+     * 璁㈠崟锛� 鍏嶅崟鏍囪瘑 濂栧姳鏍囪瘑
+     *
+     * @param order
+     * @param list
+     */
+    private void couponUseFactory(CommonOrderVO order, List<UserSystemCouponRecord> list) throws Exception {
+        if (list == null || list.size() == 0) {
+            return;
+        }
 
-			} else if (HongBaoV2.TYPE_SHARE_YIJI == hongBaoType || HongBaoV2.TYPE_SHARE_ERJI == hongBaoType
-					|| HongBaoV2.TYPE_YAOQING == hongBaoType || HongBaoV2.TYPE_YIJI == hongBaoType
-					|| HongBaoV2.TYPE_ERJI == hongBaoType) {
-				// 閭�璇疯鍗�
-				order.setOrderOrigin("3");
-				order.setHongBaoTypePic(CommonOrder.TYPE_INVITE);
-				signList.add(CommonOrder.TYPE_INVITE);
-			}
-			order.setSignList(signList);
+        String text = null;
+        for (UserSystemCouponRecord couponRecord : list) {
+            int goodSource = couponRecord.getGoodSource();
+            if (goodSource == 0)
+                goodSource = 1;
 
-			String hongBaoDate = null;
-			String hongBaoState_Str = "";
-			String hongbaoInfoFontColor = "#E5005C";
+            String orderNo = couponRecord.getOrderNo();
+            if (order.getOrderNo().equals(orderNo) && goodSource == order.getSourceType()) {
+                Integer state = couponRecord.getState();
+                String systemCouponType = couponRecord.getCouponType();
+                if (CouponTypeEnum.rebatePercentCoupon.name().equals(systemCouponType)
+                        && UserSystemCouponRecord.STATE_SUCCESS == state) {
+                    text = "宸插鍔�";
+                } else if (CouponTypeEnum.freeCoupon.name().equals(systemCouponType)
+                        || CouponTypeEnum.welfareFreeCoupon.name().equals(systemCouponType)
+                        || CouponTypeEnum.freeCouponBuy.name().equals(systemCouponType)) {
+                    if (UserSystemCouponRecord.STATE_FREE_ON == state) {
+                        text = "鍏嶅崟涓�";
+                    } else if (UserSystemCouponRecord.STATE_SUCCESS == state) {
+                        text = "宸插厤鍗�";
+                    }
+                }
+                break;
+            }
+        }
 
-			/* 绾㈠寘鐘舵�� 杞崲 */
-			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_SHIXIAO == hongBaoState) {
-				orderHongBaoState = 4;
-				stateContent = "宸插け鏁�";
-				hongbaoInfoFontColor = "#888888";
-			}
-			order.setHongBaoState(orderHongBaoState);
-			order.setHongBaoDate(hongBaoDate);
+        if (!StringUtil.isNullOrEmpty(text)) {
+            ClientTextStyleVO rewardStyleVO = new ClientTextStyleVO();
+            rewardStyleVO.setContent(text);
+            rewardStyleVO.setColor("#E5005C");
+            rewardStyleVO.setBottomColor("#FFDCEA");
 
-			if (!StringUtil.isNullOrEmpty(order.getStateDesc())) {
-				stateContent = stateContent + "-" + order.getStateDesc();
-			}
+            Map<String, Object> rewardMap = new HashMap<String, Object>();
+            rewardMap.put("text", rewardStyleVO);
+            order.setRewardDetail(rewardMap);
+        }
+    }
 
-			Map<String, String> stateMap = new HashMap<String, String>();
-			stateMap.put("content", stateContent);
-			stateMap.put("fontColor", stateFontColor);
-			order.setAccountState(stateMap);
+    @Override
+    public long countOrderByUidAndSettled(Long uid, BigDecimal payment) {
+        Long count = commonOrderMapper.countOrderByUidAndSettled(uid, payment);
+        if (count == null) {
+            count = 0L;
+        }
+        return count;
+    }
 
-			Map<String, String> hongBaoMap = new HashMap<String, String>();
-			hongBaoMap.put("content",
-					hongBaoState_Str + "鏀剁泭 楼" + hongBao.setScale(2, BigDecimal.ROUND_DOWN).toString());
-			hongBaoMap.put("fontColor", hongbaoInfoFontColor);
-			order.setHongBaoInfo(hongBaoMap);
+    @Override
+    public String getNewestOrderNoByTaoBao() {
+        return commonOrderMapper.getNewestOrderNoByTaoBao();
+    }
 
-			// 鍒嗕韩銆侀個璇� 闅愯棌璁㈠崟鍙�
-			if (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> listByOrderNo(String orderNo) {
+        return commonOrderMapper.listByOrderNo(orderNo);
+    }
 
-	/**
-	 * 璁㈠崟锛� 鍏嶅崟鏍囪瘑 濂栧姳鏍囪瘑
-	 * 
-	 * @param order
-	 * @param list
-	 */
-	private void couponUseFactory(CommonOrderVO order, List<UserSystemCouponRecord> list) throws Exception {
-		if (list == null || list.size() == 0) {
-			return;
-		}
+    @Override
+    public CommonOrder getFirstOrder(Long uid) {
+        return commonOrderMapper.getFirstOrder(uid);
+    }
 
-		String text = null;
-		for (UserSystemCouponRecord couponRecord : list) {
-			int goodSource = couponRecord.getGoodSource();
-			if (goodSource == 0)
-				goodSource = 1;
+    @Override
+    public List<CommonOrder> listByGoodsIdAndUidAndMinThirdCreateTime(Long goodsId, Long uid, Date minThirdCreateTime) {
 
-			String orderNo = couponRecord.getOrderNo();
-			if (order.getOrderNo().equals(orderNo) && goodSource == order.getSourceType()) {
-				Integer state = couponRecord.getState();
-				String systemCouponType = couponRecord.getCouponType();
-				if (CouponTypeEnum.rebatePercentCoupon.name().equals(systemCouponType)
-						&& UserSystemCouponRecord.STATE_SUCCESS == state) {
-					text = "宸插鍔�";
-				} else if (CouponTypeEnum.freeCoupon.name().equals(systemCouponType)
-						|| CouponTypeEnum.welfareFreeCoupon.name().equals(systemCouponType)
-						|| CouponTypeEnum.freeCouponBuy.name().equals(systemCouponType)) {
-					if (UserSystemCouponRecord.STATE_FREE_ON == state) {
-						text = "鍏嶅崟涓�";
-					} else if (UserSystemCouponRecord.STATE_SUCCESS == state) {
-						text = "宸插厤鍗�";
-					}
-				}
-				break;
-			}
-		}
+        return commonOrderMapper.listByGoodsIdAndUidAndMinThirdCreateTime(goodsId, uid, minThirdCreateTime, 0, 1000);
+    }
 
-		if (!StringUtil.isNullOrEmpty(text)) {
-			ClientTextStyleVO rewardStyleVO = new ClientTextStyleVO();
-			rewardStyleVO.setContent(text);
-			rewardStyleVO.setColor("#E5005C");
-			rewardStyleVO.setBottomColor("#FFDCEA");
+    @Override
+    public List<CommonOrder> listPayStateOrder(Integer sourceType, Date minThirdCreateTime, Date maxThirdCreateTime,int page,int pageSize) {
+        CommonOrderMapper.DaoQuery daoQuery = new CommonOrderMapper.DaoQuery();
+        daoQuery.minThirdCreateTime = minThirdCreateTime;
+        daoQuery.maxThirdCreateTime = maxThirdCreateTime;
+        daoQuery.state = CommonOrder.STATE_FK;
+        daoQuery.sourceType = sourceType;
+        daoQuery.sortList = Arrays.asList(new String[]{"co_third_create_time ASC"});
+        return commonOrderMapper.list(daoQuery, (page-1)*pageSize, pageSize);
+    }
 
-			Map<String, Object> rewardMap = new HashMap<String, Object>();
-			rewardMap.put("text", rewardStyleVO);
-			order.setRewardDetail(rewardMap);
-		}
-	}
-	
-	
-	@Override
-	public long countOrderByUidAndSettled(Long uid, BigDecimal payment) {
-		Long count = commonOrderMapper.countOrderByUidAndSettled(uid, payment);
-		if (count == null) {
-			count = 0L;
-		}
-		return count;
-	}
-	
-	
-	@Override
-	public String getNewestOrderNoByTaoBao() {
-		return commonOrderMapper.getNewestOrderNoByTaoBao();
-	}
-	
-	
-	@Override
-	public List<CommonOrder> listByOrderNo(String orderNo) {
-		return commonOrderMapper.listByOrderNo(orderNo);
-	}
-	
 }

--
Gitblit v1.8.0