package com.iamberry.wechat.face.integral;

import com.iamberry.wechat.core.entity.PageBean;
import com.iamberry.wechat.core.entity.ResultMsg;
import com.iamberry.wechat.core.entity.integral.*;
import com.iamberry.wechat.core.entity.page.PageRequest;
import com.iamberry.wechat.core.entity.page.PagedResult;
import com.sun.org.apache.xpath.internal.operations.Bool;

import java.util.List;

public interface UseIntegralService {
    /**
     * 全部积分记录
     * @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 openId
     * @return
     */
    MemberIntegral getMemberInfoAndRankName(String openId);

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

    /**
     * 查询会员等级信息
     * @param  id
     * @return  rankRule
     */
    RankRule  getRankRuleById(Integer  id);

    /**
     * 定时任务
     * 待入账积分更改到已入账操作
     * @return
     */
    boolean updateIntegralStayToAlready();

    /**
     * 定时任务
     * 待入账积分更改到已入账操作
     * @return
     */
    String integralStayToAlready(StayIntegral stayIntegral);

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

    /**
     *  查询所有收入支出积分记录
     * @return
     */
    PagedResult<UseIntegral> listUseIntegral(PageRequest<UseIntegral> pageRequest);

    /**
     *  查询所有收入支出积分记录总条数
     * @return
     */
    Integer listUseIntegralCount(UseIntegral useIntegral);
    /**
     *  查询所有待入账积分记录
     * @return
     */
    PagedResult<StayIntegral> listAdminStayIntegral(PageRequest<StayIntegral> pageRequest);
    /**
     *  查询所有待入账积分记录总数
     * @return
     */
    Integer listAdminStayIntegralCount(StayIntegral stayIntegral);

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

    /**
     * 查询单条数据
     * @param  id
     * @return  integralConfig
     */
    IntegralConfig  getIntegralConfigById(Integer  id);

    /**
     * 获取集合
     * @param  useIntegral
     * @return List
     */
    List<UseIntegral>  getUseIntegralList(UseIntegral  useIntegral);




}
