package com.iamberry.wechat.face.ism;

import com.iamberry.wechat.core.entity.ism.IntegralLog;
import com.iamberry.wechat.core.entity.order.Order;
import com.iamberry.wechat.core.entity.page.PageRequest;
import com.iamberry.wechat.core.entity.page.PagedResult;

import java.util.List;

/**
 *  积分记录表接口
 * @author Administrator
 * @Date 2019-11-10
 */
public interface IntegralLogService {
    /**
     * 获取集合
     * @param  integralLog
     * @return List
     */
    List<IntegralLog> getIntegralLogList(IntegralLog integralLog);
    /**
     * 获取集合 - 前端页面，获取增加积分和消费积分记录
     * @param  integralLog
     * @return List
     */
    List<IntegralLog> getIntegralLogListByAccoUser(IntegralLog integralLog);

    /*分页 -- 前台专用*/
    PagedResult<IntegralLog> listIntegralLog(PageRequest<IntegralLog> pageRequest);

    /**
     * 获取集合-定时器，获取所有待入账记录
     * @param
     * @return List
     */
    List<IntegralLog> getIntegralLogListByWaitUser();
    /**
     * 查询单条数据
     * @param  id
     * @return  integralLog
     */
    IntegralLog getIntegralLogById(Integer id);
    /**
     * 增加数据
     * @param  integralLog
     * @return Integer
     */
    Integer  save(IntegralLog integralLog);
    /**
     * 修改数据
     * @param  integralLog
     * @return Integer
     */
    Integer  update(IntegralLog integralLog);
    /**
     * 删除数据
     * @param  id
     * @return Integer
     */
    Integer  delete(Integer id);

    /**
     * 订单结算获得积分
     * @return Integer
     */
    Integer addOrderChangIntegra(String orderId, Integer integraConfigId);

    /**
     * 订单结算使用积分
     * @return Integer
     */
    Integer muOrderChangIntegra(Order order);

    /**
     * 直接加减积分
     * @param  openId
     * @return Integer
     */
    Integer  updateIntegral(String openId, Integer inteConfId, Integer inteLogType);

    /**
     * 取消订单待入账积分
     * @param  orderId
     * @return Integer
     */
    Integer cancelSurplusIntegral(String orderId);

    /**
     * 积分操作
     * @param  openId
     * @return Integer
     */
    Integer  changeIntegral(String openId, Integer inteConfId, Integer integralNum, Integer inteLogType, String waitingOrderId, String useOrderId, String remake);

    /**
     * 定时器-处理待入账-》已入账
     * @param  integralLog
     * @return Integer
     */
    Integer  waitUser(IntegralLog integralLog);
}