package com.hfkj.service.order;

import com.alibaba.fastjson.JSONArray;
import com.hfkj.entity.BsOrder;
import com.hfkj.model.order.OrderModel;

import java.math.BigDecimal;
import java.util.List;
import java.util.Map;

/**
 * @className: BsOrderService
 * @author: HuRui
 * @date: 2024/4/29
 **/
public interface BsOrderService {

    /**
     * 编辑数据
     * @param order
     * @return
     */
    BsOrder editData(BsOrder order);

    /**
     * 更新缓存
     * @param order
     * @return
     */
    OrderModel cache(OrderModel order);

    /**
     * 删除缓存
     * @param orderNo
     * @return
     */
    void cacheDelete(String orderNo);

    /**
     * 创建订单
     * @param order 订单
     * @return
     */
    OrderModel create(OrderModel order) throws Exception;

    /**
     * 取消订单
     * @param orderNo
     * @param system 系统取消 false：不是  true：是
     * @return
     */
    OrderModel cancel(String orderNo, boolean system);


    void deleteOrder(BsOrder order);

    /**
     * 子订单完成
     * @param childOrderNo
     */
    void childOrderComplete(String childOrderNo);

    /**
     * 支付成功业务
     * @param order
     */
    void orderPaySuccessHandle(OrderModel order);

    /**
     * 查询订单
     * @param orderNo
     * @return
     */
    BsOrder getOrder(String orderNo);

    /**
     * 查询订单详情
     * @param orderNo 交易单号
     * @return
     */
    OrderModel getDetail(String orderNo);

    /**
     * 查询订单列表
     * @param param
     * @return
     */
    List<BsOrder> getOrderList(Map<String,Object> param);

    /**
     * @MethodName cinemaComputePrice
     * @Description:计算电影票金额
     * @param jsonArray
     * @param seatsIdArray
     * @return: java.math.BigDecimal
     * @Author: Sum1Dream
     * @Date: 2024/7/5 下午3:40
     */
    BigDecimal cinemaComputePrice(JSONArray jsonArray, String[] seatsIdArray , Integer drawMode);

}
