package cn.iocoder.yudao.module.member.service.amount;

import cn.iocoder.yudao.module.member.dal.dataobject.order.DishOrderDO;

import java.math.BigDecimal;

public interface DeductionService {

    /**
     * 餐盘扣减余额
     */
    void deduction(DishOrderDO  dishOrderDO);

    /**
     * 异常订单处理
     */
    void abnormalOrderHandle(DishOrderDO  dishOrderDO);

    /**
     * 异常订单扣费
     */
    void abnormalOrderDeduct(DishOrderDO  dishOrderDO);

    /**
     * 订单转让处理
     */
    void orderTransferHandle(DishOrderDO  dishOrderDO,Long transferUserId);

    /**
     * 现金提现
     */
    void cashDraw(Long userId, BigDecimal money,String type,Long storeId);

    /**
     * 微信提现 金额单位：分
     */
    void wxDraw(Integer amount, Long userId);

    /**
     * 退款
     */
    void refund(Long userId,BigDecimal money,DishOrderDO dishOrderDO);

    /**
     * 减免、退款
     */
    void reduction(Long userId, BigDecimal money, BigDecimal giftAmount, BigDecimal cashAmount, BigDecimal wxAmount,Long storeId);

    /**
     * 超市扣款
     */
    BigDecimal storeDeduction(BigDecimal total, Long userId,Long storeId);

    /**
     * 扣款
     */
    void deduct(Long userId, BigDecimal money,String type,Long storeId,String time);

    /**
     * 太空舱扣款
     */
    void spaceDeduct(Long userId, BigDecimal money,String type,Long storeId);

    /**
     * 超市离线扣款
     */
    void storeOfflineDeduction(BigDecimal total, Long userId,Long storeId);

}
