package com.iamberry.wechat.service.mapper;

import com.iamberry.wechat.core.entity.PageBean;
import com.iamberry.wechat.core.entity.integral.*;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;

import java.util.List;

public interface UseIntegralMapper {
    /**
     * 全部积分记录
     * @param useIntegral
     * @return
     */
    List<UseIntegral> listIntegralInfo(UseIntegral useIntegral);
    /**
     * 获得的总积分数
     * @param userOpenId
     * @return
     */
    Integer getGainIntegralCount(String userOpenId);

    /**
     * 使用的总积分数
     * @param openid
     * @return
     */
    Integer getUseIntegralCount(String openid);

    /**
     * 待入账的总积分数
     * @param userOpenId
     * @return
     */
    Integer getStayIntegralCount(String userOpenId);

    /**
     * 查询积分来源信息
     * @param integralConfig
     * @return
     */
    List<IntegralConfig> listIntegralConfig(IntegralConfig integralConfig);

    /**
     * 添加积分日志
     * @param useIntegral
     * @return
     */
    Integer addUseIntegral(UseIntegral useIntegral);

    /**
     * 删除积分日志
     * @param integralId
     * @return
     */
    Integer delUseIntegral(UseIntegral integralId);

    /**
     * 查询会员积分等级规则信息
     * @param rankRule
     * @return
     */
    List<RankRule> listRankRule(RankRule rankRule);

    /**
     * 添加会员信息
     * @param memberIntegral
     * @return
     */
    Integer addMemberIntegral(MemberIntegral memberIntegral);

    /**
     * 获取会员信息.会员等级名称
     * @param openId
     * @return
     */
    MemberIntegral getMemberInfoAndRankName(String openId);

    /**
     * 查询会员等级信息
     * @return
     */
    List<RankRule> getRankRule();


    /**
     * 修改待入账信息
     * @return
     */
    Integer updateStayIntegral(StayIntegral stayIntegral);

    /**
     * 查询待入账积分的集合
     * @return
     */
    List<StayIntegral>  listStayIntegral(StayIntegral stayIntegral);

    /**
     *  查询所有收入支出积分记录
     * @return
     */
    List<UseIntegral> listUseIntegral(UseIntegral useIntegral);
    /**
     *  查询所有收入支出积分记录总条数
     * @return
     */
    Integer listUseIntegralCount(UseIntegral useIntegral);

    /**
     *  查询所有待入账积分记录
     * @return
     */
    List<StayIntegral> listAdminStayIntegral(StayIntegral stayIntegral);
    /**
     *  查询所有待入账积分记录总数
     * @return
     */
    Integer listAdminStayIntegralCount(StayIntegral stayIntegral);

    /**
     * 修改待入账积分记录
     * @param stayIntegral
     * @return
     */
    Integer updatestayIntegralStatus(StayIntegral stayIntegral);
}
