package cn.iocoder.yudao.module.shop.service;

import cn.iocoder.yudao.module.shop.entity.ShopUserBalanceChanges;
import cn.iocoder.yudao.module.shop.entity.UserBalance;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.extension.service.IService;
import java.util.List;

/**
 * 用户积分Service接口
 *
 * @author ruoyi
 * @date 2023-07-09
 */
public interface IUserBalanceService extends IService<UserBalance>
{
    /**
     * 查询用户积分
     *
     * @param id 用户积分主键
     * @return 用户积分
     */
    public UserBalance selectShopUserBalanceById(Long id);

    List<ShopUserBalanceChanges> getDetail(Long userId);

    /**
     * 查询用户积分列表
     *
     * @param shopUserBalance 用户积分
     * @return 用户积分集合
     */
    public List<UserBalance> selectShopUserBalanceList(UserBalance shopUserBalance);

    /**
     * 新增用户积分
     *
     * @param shopUserBalance 用户积分
     * @return 结果
     */
    public int insertShopUserBalance(UserBalance shopUserBalance);

    /**
     * 修改用户积分
     *
     * @param shopUserBalance 用户积分
     * @return 结果
     */
    public int updateShopUserBalance(UserBalance shopUserBalance);

    /**
     * 批量删除用户积分
     *
     * @param ids 需要删除的用户积分主键集合
     * @return 结果
     */
    public int deleteShopUserBalanceByIds(Long[] ids);

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

    public UserBalance selectShopUserBalanceByUserId(Long userId);
    void addBalance(Long balance,Long userId, JSONObject orderInfo);
    void frozenBalance(Long balance,Long userId);
    //解冻积分
    void thawBalance(Long balance,  Long userId);
    //核销冻结积分
    void subtractFrozenBalance(Long balance, Long userId, JSONObject orderInfo);
    //核销积分
    void subtractBalance(Long balance, Long userId, JSONObject orderInfo);
    //邀请注册奖励积分
    void inviteRewards(Long userId);
    //邀请用户消费奖励积分
    void inviteSpend(Long userId,Long amount);
    //退款返回积分
    void refundBalance(Long userId,Long balance,JSONObject orderInfo);
}
