admin
2020-11-28 dc5be7d38446f70e6ff86df311119c32b41fe7f8
fanli/src/main/java/com/yeshi/fanli/service/impl/order/CommonOrderServiceImpl.java
@@ -2,16 +2,14 @@
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.service.inter.order.pdd.PDDOrderService;
import org.apache.commons.beanutils.PropertyUtils;
import org.springframework.context.annotation.Lazy;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.yeshi.utils.DateUtil;
@@ -161,6 +159,10 @@
    @Resource
    private RocketMQManager rocketMQManager;
    @Lazy
    @Resource
    private PDDOrderService pddOrderService;
    // 奖励订单图片
    public final static String PIC_REWARD = "http://img.flqapp.com/resource/order/order_state_reward.png";
@@ -277,6 +279,25 @@
                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("比价订单");
            }
        }
        List<UserSystemCouponRecord> listRecordTB = null;
        if (listTB.size() > 0) {
@@ -437,38 +458,43 @@
                hongBao = new BigDecimal(0);
            }
            if (CommonOrder.STATE_FK == orderState) {
                orderStateContent = "已付款";
            } else if (CommonOrder.STATE_JS == orderState) {
                orderStateContent = "已收货";
            } else if (CommonOrder.STATE_SX == orderState) {
                orderStateContent = "未付款/已退款";
            } else if (CommonOrder.STATE_WQ == orderState) {
                orderStateContent = "已售后";
                if (sourceType != null && sourceType == Constant.SOURCE_TYPE_TAOBAO) {
                    /* 订单维权 判断是否全部维权 */
                    List<TaoBaoWeiQuanOrder> listWQ = taoBaoWeiQuanOrderMapper
                            .selectListByOrderIdAndState(order.getOrderNo(), "维权成功");
            //判断状态是否预设了的
            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(), "维权成功");
                    boolean isPart = false;// 默认失效
                    BigDecimal weiQuanMoney = getWeiQuanMoney(listWQ, sourceType, uid);
                        boolean isPart = false;// 默认失效
                        BigDecimal weiQuanMoney = getWeiQuanMoney(listWQ, sourceType, uid);
                    if (!VersionUtil.greaterThan_1_6_0(acceptData.getPlatform(), acceptData.getVersion())) {
                        if (isPart) {
                            hongBaoState = HongBaoV2.STATE_BUFENSHIXIAO; // 部分失效
                        if (!VersionUtil.greaterThan_1_6_0(acceptData.getPlatform(), acceptData.getVersion())) {
                            if (isPart) {
                                hongBaoState = HongBaoV2.STATE_BUFENSHIXIAO; // 部分失效
                            } else {
                                hongBaoState = HongBaoV2.STATE_SHIXIAO; // 全部失效
                            }
                        } 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);
                            // 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);
                            }
                        }
                    }
                }
@@ -1350,7 +1376,7 @@
                    && oldCommonOrder.getSourceType() != Constant.SOURCE_TYPE_JD)
                    || oldCommonOrder.getState() == CommonOrder.STATE_SX
                    || oldCommonOrder.getState() == CommonOrder.STATE_WQ
                    || (oldCommonOrder.getState().intValue() == commonOrder.getState())) {
                    || (oldCommonOrder.getState().intValue() == commonOrder.getState()&&oldCommonOrder.getPayment().compareTo(commonOrder.getPayment())==0)) {
                return new CommonOrderAddResultDTO(oldCommonOrder, CommonOrderAddResultDTO.TYPE_NOUPDATE);
            }
            // 交易ID一致才修改
@@ -1463,16 +1489,16 @@
    @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<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 {
        List<CommonOrderVO> list = null;
        if (StringUtil.isNullOrEmpty(key) || keyType == 1) {// 搜索框无值或者按订单号搜索时都只搜索主订单
            list = commonOrderMapper.listQueryWithNoChild(start, count, keyType, key, state, type, orderState,
            list = commonOrderMapper.listQueryWithNoChild(start, count, keyType, key, state, typeList, orderState,
                    startTime, endTime, source, payment, system);
        } else {
            list = commonOrderMapper.listQuery(start, count, keyType, key, state, type, orderState, startTime, endTime,
            list = commonOrderMapper.listQuery(start, count, keyType, key, state, typeList, orderState, startTime, endTime,
                    source, listShopId, listGoodsId, minTime, money, payment, system);
        }
@@ -1658,14 +1684,14 @@
    }
    @Override
    public long countQuery(Integer keyType, String key, Integer state, Integer type, Integer orderState,
    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, type, orderState, startTime, endTime,
            return commonOrderMapper.countQueryWithNoChild(keyType, key, state, typeList, orderState, startTime, endTime,
                    source, payment, system);
        } else {
            return commonOrderMapper.countQuery(keyType, key, state, type, orderState, startTime, endTime, source,
            return commonOrderMapper.countQuery(keyType, key, state, typeList, orderState, startTime, endTime, source,
                    listShopId, listGoodsId, minTime, money, payment, system);
        }
    }
@@ -2023,6 +2049,19 @@
                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("比价订单");
            }
        }
        List<UserSystemCouponRecord> listRecordTB = null;
        if (listTB.size() > 0) {
@@ -2189,28 +2228,32 @@
            /* 订单状态 转换处理 */
            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 (!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);
                    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);
                        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);
                    }
                    hongBao = MoneyBigDecimalUtil.sub(hongBao, weiQuanMoney);
                }
            }
            orderStateMap.put("content", orderStateContent);