package com.yiqi.app.service;

import java.util.List;

import com.baomidou.mybatisplus.extension.service.IService;
import com.yiqi.app.domain.AppCouponItem;
import com.yiqi.app.domain.dto.*;
import com.yiqi.app.domain.dto.weapp.AppCouponItemCountQueryDTO;
import com.yiqi.app.domain.vo.AppCouponItemVO;
import com.yiqi.system.domain.SysOrg;

/**
 * 优惠券Service接口
 *
 * @author xiaohei
 * @date 2023-09-19
 */
public interface IAppCouponItemService extends IService<AppCouponItem> {

    public List<SysOrg> orgListByCouponId(Long couponTypeId);

    public List<AppCouponItemVO> getlistByAppUserId(AppCouponItemQueryByAppUserIdDTO appCouponItemQueryByAppUserIdDTO);

    /**
     * 查询优惠券
     *
     * @param id 优惠券主键
     * @return 优惠券
     */
    public AppCouponItem selectAppCouponItemById(Long id);

    /**
     * 查询优惠券列表
     *
     * @param appCouponItemQueryDTO 优惠券
     * @return 优惠券集合
     */
    public List<AppCouponItemVO> selectAppCouponItemList(AppCouponItemQueryDTO appCouponItemQueryDTO);


    public List<AppCouponItemVO> couponSendListByStore(AppCouponItemCountQueryDTO appCouponItemCountQueryDTO);

    public int countCouponSendListByStore(AppCouponItemCountQueryDTO appCouponItemCountQueryDTO);

    /**
     * 总部发放优惠券
     *
     * @param appCouponItemSendDTO 优惠券
     * @return 结果
     */
    public int insertAppCouponItemByHQ(AppCouponItemSendDTO appCouponItemSendDTO);

    /**
     * 门店发放优惠券
     *
     * @param appCouponItemSendDTO 优惠券
     * @return 结果
     */
    public int insertAppCouponItemByStore(AppCouponItemSendDTO appCouponItemSendDTO);


    /**
     * 用户领取优惠券
     *
     * @return 结果
     */
    public int receiveCouponItemByUser(Long couponId, Long appUserId);

    /**
     * 修改优惠券
     *
     * @param appCouponItem 优惠券
     * @return 结果
     */
    public int updateAppCouponItem(AppCouponItem appCouponItem);

    /**
     * 优惠券核销
     *
     * @param couponId  优惠券ID
     * @param appUserId 用户ID
     * @return 结果
     */
    public int checkCouponItem(Long couponId, Long appUserId);

    /**
     * 重置优惠券使用状态
     *
     * @param couponId 优惠券ID
     * @return 结果
     */
    public int resetCouponItem(Long couponId, Long appUserId);

    /**
     * 批量删除优惠券
     *
     * @param ids 需要删除的优惠券主键集合
     * @return 结果
     */
    public int deleteAppCouponItemByIds(Long[] ids);

    /**
     * 删除优惠券信息
     *
     * @param id 优惠券主键
     * @return 结果
     */
    public int deleteAppCouponItemById(Long id);


    List<AppCouponItem> getMemberCouponInfoByRecharge(MemberCouponItemQueryDTO memberCouponItemQueryDTO);

    int countMemberCouponInfoByRecharge(MemberCouponItemQueryDTO memberCouponItemQueryDTO);

    int countTodaySendNumber(String dateTimeNow);

    int countTodayHxNumber(String dateTimeNow);
}
