admin
2024-01-23 81da61b828e29b7745e1382dfbbaeb685dc083ef
fanli/src/main/java/com/yeshi/fanli/service/impl/order/OrderProcessServiceImpl.java
@@ -1,6 +1,7 @@
package com.yeshi.fanli.service.impl.order;
import java.math.BigDecimal;
import java.math.RoundingMode;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
@@ -15,8 +16,10 @@
import com.yeshi.fanli.entity.SystemEnum;
import com.yeshi.fanli.entity.SystemPIDInfo;
import com.yeshi.fanli.entity.dy.DYOrder;
import com.yeshi.fanli.service.manger.PIDManager;
import com.yeshi.fanli.service.manger.order.TeamRewardManager;
import com.yeshi.fanli.util.goods.douyin.DYUtil;
import com.yeshi.fanli.util.pinduoduo.PinDuoDuoUtil;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Propagation;
@@ -686,7 +689,7 @@
    }
    @Override
    public void fanliShare(Date maxTime) {
    public int fanliShare(Date maxTime) {
        // 查出邀请赚的用户ID
        List<Integer> typeList = new ArrayList<>();
        typeList.add(HongBaoV2.TYPE_SHARE_GOODS);
@@ -717,6 +720,7 @@
            }
        }
        return uidSets.size();
    }
    @Override
@@ -752,6 +756,12 @@
        } catch (OrderMoneySettleException e) {
            e.printStackTrace();
        }
        try {
            orderMoneySettleService.inviteSettleDY(uid, maxPreGetTime);
        } catch (OrderMoneySettleException e) {
            e.printStackTrace();
        }
    }
    @Override
@@ -784,6 +794,12 @@
        try {
            orderMoneySettleService.shareSettleSuning(uid, maxPreGetTime);
        } catch (OrderMoneySettleException e) {
            e.printStackTrace();
        }
        try {
            orderMoneySettleService.shareSettleDY(uid, maxPreGetTime);
        } catch (OrderMoneySettleException e) {
            e.printStackTrace();
        }
@@ -976,10 +992,13 @@
    public void processJDOrder(JDOrder order) {
        if (order == null || order.getOrderItemList() == null || order.getOrderItemList().size() == 0)
            return;
        // 拆单的不做处理
        if (order.getValidCode() == 2)
            return;
        // 拆单且不在commonorder中的不做处理
        if (order.getValidCode() == 2) {
            List<CommonOrder> list=  commonOrderService.listBySourceTypeAndOrderId(Constant.SOURCE_TYPE_JD,order.getOrderId()+"");
            if(list==null||list.size()==0) {
                return;
            }
        }
        // 根据ext1与subUnionId跟单
        String uidStr = order.getExt1();
        if (StringUtil.isNullOrEmpty(uidStr))
@@ -1301,7 +1320,7 @@
    }
    /**
     * 处理京东返利订单
     * 处理唯品会返利订单
     *
     * @param vipShopOrder
     * @param uid
@@ -1437,8 +1456,10 @@
        }
    }
    /**
     * 处理拼多多自购返利订单
     * 处理苏宁自购返利订单
     *
     * @param suningOrder
     * @param uid
@@ -1514,7 +1535,7 @@
    }
    /**
     * 处理拼多多分享订单
     * 处理苏宁分享订单
     *
     * @param suningOrder
     * @param uid
@@ -1545,6 +1566,130 @@
            }
        }
    }
    @Override
    public void processDYOrder(DYOrder order) {
        if (order == null)
            return;
        // 根据ext1与subUnionId跟单
        String extra_info = order.getExternal_info();
        Long uid = DYUtil.getUid(extra_info);
        String type = DYUtil.getTypeFromExtraInfo(extra_info);
        if ("buy".equalsIgnoreCase(type))// 返利订单
        {
            processFanLiDYOrder(order, uid);
            lostOrderService.processSuceess(order.getOrder_id() + "", Constant.SOURCE_TYPE_DY);
        } else if ("share".equalsIgnoreCase(type)) {// 分享订单
            if (uid == null)// 分享订单不允许找回
                return;
            processShareDYOrder(order, uid);
        } else {// 处理是否有订单找回的状态
            processFanLiDYOrder(order, null);
        }
    }
    /**
     * 处理抖音返利订单
     *
     * @param dyOrder
     * @param uid
     */
    private void processFanLiDYOrder(DYOrder dyOrder, Long uid) {
        BigDecimal totalMoney = new BigDecimal(dyOrder.getTotal_pay_amount()).divide(new BigDecimal(100),2, RoundingMode.FLOOR);
        // 加入订单
        Order oldOrder = orderMapper.selectOrderByOrderIdAndOrderType(dyOrder.getOrder_id() + "",
                Constant.SOURCE_TYPE_DY);
        if (uid == null && oldOrder != null && oldOrder.getBeizhu() != null && oldOrder.getBeizhu().contains("补单"))
            uid = oldOrder.getUserInfo().getId();
        if (uid == null)
            return;
        if (oldOrder == null)// 新增
        {
            Order order = new Order();
            order.setBeizhu("抖音返利订单");
            order.setCreatetime(System.currentTimeMillis());
            order.setOrderId(dyOrder.getOrder_id() + "");
            order.setOrderType(Constant.SOURCE_TYPE_DY);
            order.setState(
                    (dyOrder.getFlow_point().equalsIgnoreCase(DYOrder.FLOW_POINT_REFUND)) ? Order.STATE_SHIXIAO : Order.STATE_YIZHIFU);
            order.setUserInfo(new UserInfo(uid));
            order.setVersion(2);
            order.setThirdCreateTime(new Date(TimeUtil.convertToTimeTemp(dyOrder.getPay_success_time(),"yyyy-MM-dd HH:mm:ss")));
            order.setMoney(totalMoney);
            // 加入到订单表
            orderMapper.insertSelective(order);
        } else {
            Order updateOrder = new Order();
            updateOrder.setId(oldOrder.getId());
            updateOrder.setMoney(totalMoney);
            orderMapper.updateByPrimaryKeySelective(updateOrder);
        }
        try {
            List<CommonOrderAddResultDTO> commonOrderList = commonOrderService.addDYOrder(dyOrder, uid);
            addHongBaoWithMQ(commonOrderList, dyOrder.getOrder_id() + "", uid, Constant.SOURCE_TYPE_DY,
                    HongBaoV2.TYPE_ZIGOU);
            if (isCommonOrderAllAdd(commonOrderList)) {
                Order order = new Order();
                order.setOrderId(dyOrder.getOrder_id());
                order.setOrderType(Constant.SOURCE_TYPE_DY);
                order.setUserInfo(new UserInfo(uid));
                try {
                    if (Constant.ENABLE_MQ)
                        PlaceOrderCMQManager.getInstance().addPlaceOrderMsg(order);
                } catch (Exception e) {
                }
            }
        } catch (CommonOrderException e) {
            try {
                LogHelper.errorDetailInfo(e, "addDYOrder或addHongBao出错", "订单号:" + dyOrder.getOrder_id());
            } catch (Exception e1) {
                e1.printStackTrace();
            }
        }
    }
    /**
     * 处理抖音分享订单
     *
     * @param dyOrder
     * @param uid
     */
    private void processShareDYOrder(DYOrder dyOrder, Long uid) {
        try {
            List<CommonOrderAddResultDTO> commonOrderList = commonOrderService.addDYOrder(dyOrder, uid);
            addHongBaoWithMQ(commonOrderList, dyOrder.getOrder_id() + "", uid, Constant.SOURCE_TYPE_DY,
                    HongBaoV2.TYPE_SHARE_GOODS);
            if (isCommonOrderAllAdd(commonOrderList)) {
                Order order = new Order();
                order.setOrderId(dyOrder.getOrder_id());
                order.setOrderType(Constant.SOURCE_TYPE_DY);
                order.setUserInfo(new UserInfo(uid));
                try {
                    if (Constant.ENABLE_MQ)
                        PlaceOrderCMQManager.getInstance().addPlaceOrderMsg(order);
                } catch (Exception e) {
                }
            }
        } catch (CommonOrderException e) {
            try {
                LogHelper.errorDetailInfo(e, "addDYOrder或addHongBao出错", "订单号:" + dyOrder.getOrder_id());
            } catch (Exception e1) {
                e1.printStackTrace();
            }
        }
    }
    @Override
    public void repairCommonOrderByByTaoBaoOrder(String orderId) {
@@ -1774,14 +1919,22 @@
            else
                result = hongBaoV2AddManager.addHongBao(coList, hongBaoType);
        } catch (HongBaoException e) {
            try {
                LogHelper.errorDetailInfo(e, "addJDOrder或addHongBao出错", "订单号:" + orderId);
            } catch (Exception e1) {
                e1.printStackTrace();
            if (e.getCode() != HongBaoException.CODE_ORDER_WEIQUAN) {
                try {
                    LogHelper.errorDetailInfo(e, "addJDOrder或addHongBao出错", "订单号:" + orderId);
                } catch (Exception e1) {
                    e1.printStackTrace();
                }
            }
        } catch (UserAccountException e) {
        }
        if (result == null) {
            return;
        }
        if (!Constant.IS_TEST)
            if (result.getResultCode() == HongBaoAddResult.CODE_ADD) {// 只发送新增消息
                OrderMQMsg mqMsg = new OrderMQMsg(orderId, sourceType, uid, OrderMQMsg.HANDLE_TYPE_ADD,