package com.iformall.mapper;

import com.iformall.common.CommonMapper;
import com.iformall.domain.po.WxCouponOrder;
import com.iformall.domain.vo.*;
import org.apache.ibatis.annotations.Param;

import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

public interface WxCouponOrderMapper extends CommonMapper<WxCouponOrder, Long> {

    List<WxCouponOrder> findList(WxCouponOrder wxCouponOrder);

    List<WxCouponOrder> findListOfOrderedByDate(Map dateMap);
    List<WxCouponOrder> findListOfVerifiedByDate(Map dateMap);

    List<WxCouponOrder> findExpiredFreeCouponOrderByValidDate();

    List<WxCouponOrder> findExpiredCouponOrderByValidDate();

    // 券包核销
    int updateVerifyCouponOrder(WxCouponOrder wxCouponOrder);
	int updateVerifyCouponOrderStatus(WxCouponOrder wxCouponOrder);
    int cancelVerifyCouponOrder(WxCouponOrder wxCouponOrder);

	//统一的计数接口
	int findCount(WxCouponOrder wxCouponOrder);
	List<Map<String, Object>> getCountByBusinessId(WxCouponOrder wxCouponOrder);
	List<Map<String, Object>> getCountBySubBusinessId(WxCouponOrder wxCouponOrder);
	//统一额度统计接口
	int queryPriceTotal(WxCouponOrder wxCouponOrder);

	List<WxCouponOrderCarCVo> findCarListOfCUser(WxCouponOrder wxCouponOrder);

	List<WxCouponOrderBVo> findListOfOrderedByDateForBUser(Map dateMap);
	List<WxCouponOrderBVo> findListOfVerifiedByDateForBUser(Map dateMap);

	List<WxCouponOrderCVo> findListOfCUser(WxCouponOrder wxCouponOrder);
	WxCouponOrderCVo findDetailOfCUser(@Param("id")Long id);
	List<WxCouponOrderBVo> findListOfAdmin(WxCouponOrderBVo wxCouponOrder);
	WxCouponOrderBVo findDetailOfAdmin(@Param("id")Long id);

	//营销报表 券数据图表
	List<MarkingCouponDataReportVo> couponDataMap(HashMap<String,Object> params);

	//营销报表 券数据报表
	List<MarkingCouponDataReportVo> couponDataList(HashMap<String,Object> params); //返回日期格式yy-MM-dd

	//营销报表 触达用户数
	List<TouchUsersReportVo> touchUsersReportList(HashMap<String,Object> params); //返回日期格式yy-MM-dd


	/**
	 * 日期分组 消费总数
	 * @param tenantId
	 * @param startTime
	 * @param endTime
	 * @return
	 */
	List<CUserDateAmountVo> queryPriceTotalGroup(@Param("tenantId")String tenantId, @Param("startTime") Date startTime, @Param("endTime")Date endTime);


	List<MarkingSceneDataVo> queryForSceneRepotyHistoryVerified(HashMap<String,Object> params);
	List<MarkingSceneDataVo> queryForSceneRepotyHistoryOrdered(HashMap<String,Object> params);
	List<MarkingSceneDataVo> queryForSceneRepotyMechantHistoryOrdered(HashMap<String,Object> params);



	//// 卡相关接口
	List<WxCardCVo> findCardListOfCUser(WxCardCVo wxCardCVo);
	WxCardCVo findCardDetailOfCUser(@Param("id")Long id);


	/// POS接口
	List<WxCouponOrderCVo> findAvailCouponOrder(Map<String,Object> params);
}
