package com.hfkj.service;

import com.hfkj.entity.BsDeviceOrder;
import com.hfkj.model.UserInfoModel;
import com.hfkj.sysenum.DeviceOrderTypeEnum;
import com.hfkj.sysenum.DeviceTypeEnum;

import java.util.List;
import java.util.Map;

/**
 * @className: BsDeviceOrderService
 * @author: HuRui
 * @date: 2022/12/28
 **/
public interface BsDeviceOrderService {

    /**
     * 编辑数据
     * @param deviceOrder
     * @return
     */
    BsDeviceOrder editData(BsDeviceOrder deviceOrder);

    /**
     * 创建订单
     * @param orderType     订单类型
     * @param deviceType    设备类型
     * @param deviceNum     设备数量
     * @param userInfoModel 用户
     * @return
     * @throws Exception
     */
    BsDeviceOrder createOrder(DeviceOrderTypeEnum orderType,DeviceTypeEnum deviceType, Integer deviceNum, UserInfoModel userInfoModel) throws Exception;

    /**
     * 订单支付成功
     * @param order
     */
    void paySuccess(BsDeviceOrder order);

    /**
     * 分配订单
     * @param orderNo
     * @param deviceNoList
     */
    void assignOrder(String orderNo, List<String> deviceNoList);

    /**
     * 更换设备
     * @param deviceOrderAssignId
     * @param newDeviceNo
     */
    void replaceDevice(Long deviceOrderAssignId, String newDeviceNo);

    /**
     * 订单退款
     * @param orderNo
     */
    void orderRefund(String orderNo) throws Exception;

    /**
     * 设备退款
     * @param deviceOrderAssignId
     * @throws Exception
     */
    void deviceRefund(Long deviceOrderAssignId) throws Exception;

    /**
     * 查询订单详情
     * @param orderNo
     * @return
     */
    BsDeviceOrder getDetailOrder(String orderNo);

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