package com.snack.server.module.coupon.service;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.snack.server.module.coupon.dto.req.CouponPageReq;
import com.snack.server.module.coupon.dto.req.CouponSaveReq;
import com.snack.server.module.coupon.dto.req.UserCouponPageReq;
import com.snack.server.module.coupon.vo.CouponVO;
import com.snack.server.module.coupon.vo.UserCouponVO;

import java.util.List;

/**
 * 优惠券服务
 */
public interface CouponService {

    /** 管理端：分页查询优惠券模板 */
    Page<CouponVO> pageCoupons(CouponPageReq req);

    /** 管理端：优惠券详情 */
    CouponVO getCouponById(Long id);

    /** 管理端：创建优惠券模板 */
    Long createCoupon(CouponSaveReq req);

    /** 管理端：更新优惠券模板 */
    void updateCoupon(CouponSaveReq req);

    /** 管理端：删除优惠券模板 */
    void deleteCoupon(Long id);

    /** 管理端：更新状态 */
    void updateStatus(Long id, Integer status);

    /** 管理端：分页查询领取记录 */
    Page<UserCouponVO> pageUserCoupons(UserCouponPageReq req);

    /** 用户端：可领取优惠券列表 */
    List<CouponVO> listReceivableCoupons(Long userId);

    /** 用户端：领取优惠券 */
    Long receiveCoupon(Long couponId, Long userId);

    /** 用户端：我的优惠券 */
    List<UserCouponVO> listMyCoupons(Long userId, Integer status);
}
