package com.chinacreator.video.mapper;

import com.chinacreator.video.restful.bean.OrderInfo;
import com.chinacreator.video.restful.bean.OrderLog;
import com.chinacreator.video.restful.bean.PointShopOrderBean;
import org.apache.ibatis.annotations.Param;
import org.springframework.cache.annotation.Cacheable;
import org.springframework.stereotype.Component;

import java.sql.SQLException;
import java.util.HashMap;
import java.util.List;
import java.util.Map;


/**
 * 积分商城
 * @author xu.zhou
 * @date 20190704
 */
@Component
public interface PointShopDao {
	
    @Cacheable("areainfo")
    public List<Map> getAreaInfo(@Param("callerhead") String callerhead);


    @Cacheable("spinfo")
    public List<HashMap> findSpInfo(@Param("spid") String spid);

	/**
	 * 根据产品编码查询配置信息
	 * @param goodsCode
	 * @return
	 */
	@Cacheable("pointshop")
    List<Map> getPointShopConfig(@Param("goodscode") String goodscode);

	/**
	 * 根据产品编码（实际传入的是配置表的SPID）查询配置信息
	 * @param goodsCode
	 * @return
	 */
	@Cacheable("pointshop")
    List<Map> getPointShopConfigBySpid(@Param("spid") String spid);

	/*
	 * 获取所有订购关系
	 */
	List<HashMap> findOrderRelaAll(String userid);

	/**
	 * 根据订单编码查询订单信息
	 * @param orderNo
	 * @return
	 */
	List<Map> getOrderRecByOrderNo(String orderNo);


	/**
	 * 根据id查询订单信息
	 * @param orderNo
	 * @return
	 */
	PointShopOrderBean getOrderRecById(String id);

	/**
	 * 新增订购操作到后向订购记录表
	 * @param bean
	 * @return
	 */
	int addOrderRec(PointShopOrderBean bean);

	/**
	 * 新增订购操作到积分商城记录表
	 * @param bean
	 * @return
	 */
	int addBackOrderRec(PointShopOrderBean bean);

	/**
	 * 添加或更新订购关系
	 * @param orderInfo
	 * @return
	 */
	int addOrderRal(OrderInfo orderInfo);

	/**
	 * 记录订购日志
	 * @param orderLog
	 * @return
	 */
	int addOrderLog(OrderLog orderLog);

	/**
	 * 更新操作记录表
	 * @param bean
	 * @return
	 */
	int updOrderRec(PointShopOrderBean bean);

	/**
	 * 更新回调状态
	 * @param bcstatus
	 * @param bcinfo
	 * @param id
	 * @return
	 */
	int updCallBack(String bcstatus, String bcinfo, String id);

	/**
	 * 新增订购输出输入日志
	 * @param paramsLogMap
	 * @return
	 */
	int addOrderParamsLog(Map paramsLogMap);

	/**
	 * 获取ID
	 * @return
	 */
	String getOrderId();

	/**
	 * 获取从当天算起31天的日期
	 * @return
	 */
	String curr31Day();

	/**
	 * 获取当前时间
	 * @return
	 */
	String currTime();
	/**
	 * 获取从指定日期算起加31天的日期
	 * @param endtime
	 * @return
	 */
	String endtime31Day(String endtime);

	/**
	 * 根据USERID，CPID，SPID查找订购关系
	 * @param qrymap
	 * @return
	 */
	Map findByUserAndSpid(@Param("userid") String userid, @Param("cpid") String cpid, @Param("spid") String spid);

	/**
	 * 获取赠送VIP状态
	 * @param orderId
	 * @return
	 */
	String getVipstatus(String orderId);

	/**
	 * 获取从指定时间加多少天有效期
	 * @param days	加多少天
	 * @param endtime	起始日期
	 * @return
	 * @throws SQLException
	 */
	 String endtimeParamDay(@Param("days") String days, @Param("endtime") String endtime);

	/**
	 * 获取从当前天起加多少天的有效期
	 * @param days	加多少天
	 * @return
	 * @throws SQLException
	 */
	 String currParamDay(@Param("days") String days);

	 /**
	  * 根据结束日期获取开始时间
	  * @param endtime
	  * @return
	  */
	 String getStartTime(@Param("endtime") String endtime, @Param("netdays") String netdays);

    String endtimeTheMonthLastDay();

    String endtimeNextMonthLastDay(@Param("currEndtime") String currEndtime);

    String getKsStartTime();

    void updBusiStatus(PointShopOrderBean psoBean);

    void updPointStatus(PointShopOrderBean psoBean);

    String getBackVipstatus(String id);

    void order(PointShopOrderBean psoBean);

    void updBackOrderRec(PointShopOrderBean psoBean);

    List<HashMap> getBackBusiConf(@Param("cpid") String cpid, @Param("spid") String spid);

    PointShopOrderBean getOrderRec(@Param("id") String id);

    void updParamsByCb(@Param("cbReqParams") String cbReqParams, @Param("cbRspParams") String cbRspParams, @Param("requestId") String requestId);


}
