package com.cool.store.service;

import com.cool.store.context.CurrentUserHolder;
import com.cool.store.context.LoginUserInfo;
import com.cool.store.request.*;
import com.cool.store.request.wallet.ConfirmRechargeRequest;
import com.cool.store.response.AdjustmentOrderResponse;
import com.github.pagehelper.PageInfo;

import java.util.List;

/**
 * 费用调整单 Service
 */
public interface AdjustmentOrderService {

    /**
     * 新增费用调整单
     * @param request 调整单请求
     * @return 是否成功
     */
    Boolean add(AdjustmentOrderRequest request);

    /**
     * 编辑费用调整单
     * @param request 调整单请求
     * @return 是否成功
     */
    Boolean update(AdjustmentOrderRequest request);

    /**
     * 删除费用调整单
     * @param id 调整单ID
     * @return 是否成功
     */
    Boolean delete(Long id);

    /**
     * 根据ID查询费用调整单详情
     * @param id 调整单ID
     * @return 调整单详情
     */
    AdjustmentOrderResponse getById(Long id);

    /**
     * 分页查询费用调整单
     * @param request 分页查询请求
     * @return 分页结果
     */
    PageInfo<AdjustmentOrderResponse> page(AdjustmentOrderPageRequest request);

    PageInfo<AdjustmentOrderResponse> getSpecialStatusData(AdjustmentSpecialPageRequest request);


    /**
     * 生成分账单
     * @param request 生成分账单请求
     * @return 分账单号
     */
    String generateSplitOrder(GenerateSplitOrderRequest request);

    /**
     * 认款
     * @param request 认款请求
     * @return 是否成功
     */
    Boolean recognizePayment(RecognizePaymentRequest request, LoginUserInfo userInfo);

    /**
     * 计算金额
     * @param id
     * @param transferAmount
     * @return
     */
    Boolean calculateAmount(Long id ,String transferAmount);

    /**
     * 确认充值
     * @return
     */
    Boolean confirmRecharge(ConfirmRechargeRequest request);




}
