package com.hai.order.service;

import com.alibaba.fastjson.JSONObject;
import com.hai.entity.HighChildOrder;
import com.hai.entity.HighDiscountUserRel;
import com.hai.entity.HighOrder;
import com.hai.model.ResponseData;
import com.hai.order.model.CreateOrderCheckReturnData;
import com.hai.order.model.CreateOrderChildModel;
import com.hai.order.model.CreateOrderModel;

import java.util.List;

/**
 * 创建订单-业务校验、组装数据
 * @className: CreateOrderCheckService
 * @author: HuRui
 * @date: 2022/8/25
 **/
public interface OrderCreateHandleService {

    /**
     * 卡券校验处理
     * @param discountUserRel  优惠券
     * @param createOrderChild       子订单参数
     * @return
     */
    List<HighChildOrder> couponHandle(HighDiscountUserRel discountUserRel, CreateOrderChildModel createOrderChild) throws Exception;

    /**
     * 积分充值校验
     * @param createOrderChild
     * @return
     */
    HighChildOrder integralRecharge(HighOrder order , CreateOrderChildModel createOrderChild);

    /**
     * 加油校验
     * @param discountUserRel  优惠券
     * @param createOrderChild       子订单参数
     * @return
     */
    HighChildOrder oilHandle(HighOrder order, HighDiscountUserRel discountUserRel, CreateOrderModel createOrderModel,CreateOrderChildModel createOrderChild) throws Exception;

    /**
     * 优惠券包校验
     * @param createOrderChild
     * @return
     */
    HighChildOrder couponPackage(HighOrder order , CreateOrderChildModel createOrderChild);

    /**
     * 汇联通充值校验
     * @param createOrderChild
     * @return
     */
    HighChildOrder hltUnionCardRecharge(HighOrder order, CreateOrderChildModel createOrderChild);

    /**
     * @Author Sum1Dream
     * @Name kfcOrder
     * @Description // 肯德基,星巴克，第三方会员充值 订单校验
     * @Date 09:24 2022/10/24
     * @Param [object]
     * @Return java.util.List<com.hai.entity.HighChildOrder>
     */
    List<HighChildOrder> thirdPartyOrder(HighOrder order, JSONObject object) throws Exception;

    /**
     * @Author Sum1Dream
     * @Name prepaidRecharge
     * @Description // 话费充值订单校验
     * @Date 16:45 2022/10/25
     * @Param [object]
     * @Return com.hai.entity.HighChildOrder
     */
    HighChildOrder mobileRecharge(HighOrder order , JSONObject object) throws Exception;

    /**
     * @Author Sum1Dream
     * @Name goods
     * @Description // 实物订单校验
     * @Date 17:32 2023/4/18
     * @Param [order, createOrderChild]
     * @Return com.hai.entity.HighChildOrder
     */
    HighChildOrder goods(HighOrder order, CreateOrderChildModel createOrderChild) throws Exception;

}
