package com.cool.store.service;

import com.cool.store.context.LoginUserInfo;
import com.cool.store.dto.wallet.TradeRecordDTO;
import com.cool.store.entity.wallet.WalletTradeDO;
import com.cool.store.request.SplitOrderPageRequest;
import com.cool.store.request.SplitOrderRequest;
import com.cool.store.request.wallet.BillDetailRequest;
import com.cool.store.response.ResponseResult;
import com.cool.store.response.SplitOrderResponse;
import com.github.pagehelper.PageInfo;
import io.swagger.annotations.ApiOperation;
import org.springframework.web.bind.annotation.GetMapping;

import java.util.List;

/**
 * 分账主表 Service
 */
public interface SplitOrderService {

    /**
     * 新增分账单
     * @param request 分账单请求
     * @return 是否成功
     */
    Boolean add(SplitOrderRequest request);

    /**
     * 编辑分账单
     * @param request 分账单请求
     * @return 是否成功
     */
    Boolean update(SplitOrderRequest request);

    /**
     * 删除分账单
     * @param id 分账单ID
     * @return 是否成功
     */
    Boolean delete(Long id);

    /**
     * 根据ID查询分账单详情
     * @param id 分账单ID
     * @return 分账单详情
     */
    SplitOrderResponse getById(Long id);

    /**
     * 分页查询分账单
     * @param request 分页查询请求
     * @return 分页结果
     */
    PageInfo<SplitOrderResponse> page(SplitOrderPageRequest request);

    /**
     * 批量更新状态
     * @param ids 分账单ID列表
     * @param status 目标状态
     * @return 是否成功
     */
    Boolean batchUpdateStatus(List<Long> ids, String status);

    /**
     * 确认分账
     * @param id 分账单ID
     * @return 是否成功
     */
    Boolean confirmSplitOrder(Long id, LoginUserInfo userInfo);

    TradeRecordDTO getBillDetail(Long id);

    /**
     * 更新数据
     * @param walletTradeDO
     */
    Boolean updateWalletTrade(WalletTradeDO walletTradeDO);
}
