package com.liquidnet.service.goblin.service;

import com.liquidnet.common.third.sqb.param.callback.CouponCallbackContent;
import com.liquidnet.common.third.sqb.param.callback.OrderCallbackContent;
import com.liquidnet.common.third.sqb.param.callback.RefundCallbackContent;
import com.liquidnet.service.base.ResponseDto;
import com.liquidnet.service.goblin.dto.manage.GoblinSqbOrderParam;
import com.liquidnet.service.goblin.dto.vo.GoblinSqbOrderCreateVo;

/**
 * 收钱吧订单服务接口
 */
public interface IGoblinSqbOrderService {

    /**
     * 创建收钱吧订单
     *
     * @param userId     用户ID（从 token 获取）
     * @param orderParam
     * @return 订单创建结果（orderId、acquiringSn、paymentVoucher）
     */
    ResponseDto<GoblinSqbOrderCreateVo> createOrder(String userId, GoblinSqbOrderParam orderParam);


    /**
     * 再次付款（待支付状态下重新拉起微信支付）
     *
     * @param userId  用户ID
     * @param orderId 本地订单ID
     * @return 新的 paymentVoucher（复用原 orderId）
     */
    ResponseDto<GoblinSqbOrderCreateVo> repay(String userId, String orderId);


    /**
     * 查询支付状态
     *
     * @param userId  用户ID
     * @param orderId 本地订单ID
     * @return 支付状态（0-待支付 1-已支付 9-失败）
     */
    ResponseDto<Integer> queryPayStatus(String userId, String orderId);


    /**
     * 支付成功回调（收钱吧主动推送）
     *
     * @param orderCallbackContent@return "success"
     */
    ResponseDto<String> handlePayCallback(OrderCallbackContent orderCallbackContent);

    /**
     * 退款成功回调（收钱吧主动推送）
     *
     * @param refundCallbackContent@return "success"
     */
    ResponseDto<String> handleRefundCallback(RefundCallbackContent refundCallbackContent);

    /**
     * 券状态变更回调（收钱吧主动推送）
     *
     * @param callbackContent@return "success"
     */
    ResponseDto<String> handleCouponCallback(CouponCallbackContent callbackContent);

}
