package com.czg.order.service;

import com.alibaba.fastjson2.JSONObject;
import com.czg.account.entity.HandoverRecord;
import com.czg.account.vo.HandoverCategoryListVo;
import com.czg.account.vo.HandoverProductListVo;

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

/**
 * 订单RpcService
 *
 * @author tankaikai
 * @since 2025-02-28 11:28
 */
public interface OrderInfoRpcService {

    /**
     * 订单支付成功回调 扣减商品库存及耗材库存
     *
     * @param orderId 订单id
     */
    void paySuccessCallback(Long orderId);

    /**
     * 订单取消回调 恢复商品库存及耗材库存
     *
     * @param orderId 订单id
     */
    void orderCancelCallback(Long orderId);

    /**
     * 订单退款回调 返还商品库存及耗材库存
     *
     * @param data k-商品id v-数量
     */
    void orderRefundCallback(JSONObject data);

    /**
     * 订单交班回调 发送答应交班小票消息至MQ
     *
     * @param record 交班记录id
     */
    void sendHandoverReceiptPrintMsgToMq(Long shopId, HandoverRecord record);

    /**
     * 交班售出商品明细
     *
     * @param shopId       店铺id
     * @param loginTime    上岗时间
     * @param handoverTime 交班时间
     * @return 交班售出商品明细
     */
    List<HandoverProductListVo> getHandoverDetailList(Long shopId, String loginTime, String handoverTime);

    /**
     * 交班售出商品分类统计
     *
     * @param shopId       店铺id
     * @param loginTime    上岗时间
     * @param handoverTime 交班时间
     * @return 售出商品分类统计
     */
    List<HandoverCategoryListVo> getHandoverCategoryList(Long shopId, String loginTime, String handoverTime);


//---------------------------------------------------------------------------------------->

    /**
     * 支付金额统计
     * 营业额为 订单收款额度 不包括充值
     */
    HandoverRecord getOnlinePayTypeDate(Long shopId, String loginTime, String handoverTime);

    /**
     * 订单退菜数量
     */
    BigDecimal countReturnDish(Long shopId, String loginTime, String handoverTime);

    /**
     * 会员充值金额 退款金额
     */
    HandoverRecord countShopUserFlow(Long shopId, String loginTime, String handoverTime);

}
