package com.ruoyi.ss.orderOper.service;

import com.ruoyi.ss.order.domain.OrderVO;
import com.ruoyi.ss.orderOper.domain.OrderOper;

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

/**
 * 操作操作履历Service接口
 *
 * @author qzz
 * @date 2024-10-10
 */
public interface IOrderOperService
{
    /**
     * 查询操作操作履历
     *
     * @param operId 操作操作履历主键
     * @return 操作操作履历
     */
    public OrderOper selectRlOrderOperByOperId(Long operId);

    /**
     * 查询操作操作履历列表
     *
     * @param rlOrderOper 操作操作履历
     * @return 操作操作履历集合
     */
    public List<OrderOper> selectRlOrderOperList(OrderOper rlOrderOper);

    /**
     * 新增操作操作履历
     *
     * @param rlOrderOper 操作操作履历
     * @return 结果
     */
    public int insertRlOrderOper(OrderOper rlOrderOper);

    /**
     * 修改操作操作履历
     *
     * @param rlOrderOper 操作操作履历
     * @return 结果
     */
    public int updateRlOrderOper(OrderOper rlOrderOper);

    /**
     * 批量删除操作操作履历
     *
     * @param operIds 需要删除的操作操作履历主键集合
     * @return 结果
     */
    public int deleteRlOrderOperByOperIds(Long[] operIds);

    /**
     * 删除操作操作履历信息
     *
     * @param operId 操作操作履历主键
     * @return 结果
     */
    public int deleteRlOrderOperByOperId(Long operId);

    /**
     * 记录订单操作日志
     *
     * @param orderNo      订单号，标识唯一订单。
     * @param type         操作类型，表示订单的操作行为，如下单、支付等（参考订单操作类型常量）。
     * @param beforeStatus 操作前的订单状态。
     * @param afterStatus  操作后的订单状态。
     * @param beforeAmount 操作前的金额（如订单金额、押金等）。
     * @param afterAmount  操作后的金额（如订单金额调整后，押金退款等变化）。
     * @param userId       操作用户的ID，记录是哪个用户执行了该操作。
     * @param phone        操作用户的手机号，用于追溯用户信息。
     *
     * @return 返回操作是否成功的结果，`true` 表示成功，`false` 表示失败。
     */
    public boolean recordOrderHistory(String orderNo, String type, String beforeStatus, String afterStatus,
                                      BigDecimal beforeAmount, BigDecimal afterAmount, Long userId, String phone,String detail);

}
