package com.yiqi.app.service;

import java.util.List;

import com.baomidou.mybatisplus.extension.service.IService;
import com.yiqi.app.domain.AppUserPointLog;
import com.yiqi.common.enums.MemberPointSourceEnum;

/**
 * 积分日志Service接口
 *
 * @author douya
 * @date 2024-09-04
 */
public interface IAppUserPointLogService extends IService<AppUserPointLog> {

    //<editor-folder desc="基础函数">

    /**
     * 查询积分日志
     *
     * @param id 积分日志主键
     * @return 积分日志
     */
    public AppUserPointLog selectAppUserPointLogById(Integer id);

    /**
     * 查询积分日志列表
     *
     * @param appUserPointLog 积分日志
     * @return 积分日志集合
     */
    public List<AppUserPointLog> selectAppUserPointLogList(AppUserPointLog appUserPointLog);

    /**
     * 新增积分日志
     *
     * @param appUserPointLog 积分日志
     * @return 结果
     */
    public int insertAppUserPointLog(AppUserPointLog appUserPointLog);

    /**
     * 修改积分日志
     *
     * @param appUserPointLog 积分日志
     * @return 结果
     */
    public int updateAppUserPointLog(AppUserPointLog appUserPointLog);

    /**
     * 批量删除积分日志
     *
     * @param ids 需要删除的积分日志主键集合
     * @return 结果
     */
    public int deleteAppUserPointLogByIds(Integer[] ids);

    /**
     * 删除积分日志信息
     *
     * @param id 积分日志主键
     * @return 结果
     */
    public int deleteAppUserPointLogById(Integer id);

    /**
     * 增减会员积分
     *
     * @param appUserId  会员id
     * @param point      本次添加的积分 负数为扣 正数为加
     * @param from       积分来源
     * @param remark     描述
     */
    void addPoint(Long appUserId, Integer point, String relationId, MemberPointSourceEnum from, String remark);


    /**
     * 扣除会员积分
     *
     * @param appUserId  会员id
     * @param point      本次添加的积分
     * @param from       积分来源
     * @param remark     描述
     */
    void reducePoint(Long appUserId, Integer point, String relationId, MemberPointSourceEnum from, String remark);
}
