package beilv.userbill.service;



import beilv.system.domain.dto.SysMemberDTO;
import beilv.userbill.domain.SysUserBill;

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

/**
 * 用户积分流水Service接口
 *
 * @author ruoyi
 * @date 2024-12-31
 */
public interface ISysUserBillService {
    /**
     * 查询用户积分流水
     *
     * @param id 用户积分流水主键
     * @return 用户积分流水
     */
    public SysUserBill selectSysUserBillById(Long id);

    /**
     * 查询用户积分流水列表
     *
     * @param sysUserBill 用户积分流水
     * @return 用户积分流水集合
     */
    public List<SysUserBill> selectSysUserBillList(SysUserBill sysUserBill);

    /**
     * 新增用户积分流水
     *
     * @param sysUserBill 用户积分流水
     * @return 结果
     */
    public int insertSysUserBill(SysUserBill sysUserBill);

    /**
     * 修改用户积分流水
     *
     * @param sysUserBill 用户积分流水
     * @return 结果
     */
    public int updateSysUserBill(SysUserBill sysUserBill);

    /**
     * 批量删除用户积分流水
     *
     * @param ids 需要删除的用户积分流水主键集合
     * @return 结果
     */
    public int deleteSysUserBillByIds(String ids);

    /**
     * 删除用户积分流水信息
     *
     * @param id 用户积分流水主键
     * @return 结果
     */
    public int deleteSysUserBillById(Long id);

    /**
     * 增加收入流水
     *
     * @param userId  userId
     * @param title   账单标题
     * @param number  明细数字
     * @param balance 剩余
     * @param remark  备注
     */
    void income(Long userId, String title, BigDecimal number, BigDecimal balance, String remark);

    /**
     * 增加支出流水
     *
     * @param userId  userId
     * @param title   账单标题
     * @param number  明细数字
     * @param balance 剩余
     * @param remark  备注
     */
    void expend(Long userId, String title, BigDecimal number, BigDecimal balance, String remark);

    /**
     * 用户积分兑换商品
     *
     * @param dto 会员用户信息
     * @return 结果
     */
    int exchange(SysMemberDTO dto);

    /**
     * 根据userId查询用户积分流水列表
     *
     * @param userId 用户ID
     * @return 用户积分流水集合
     */
    public List<SysUserBill> listByUserId(Long userId);
}
