package com.red.circle.other.app.service;

import com.red.circle.framework.dto.PageResult;
import com.red.circle.other.app.dto.clientobject.PropCouponCO;
import com.red.circle.other.app.dto.clientobject.PropCouponRecordCO;
import com.red.circle.other.inner.model.cmd.material.PropCouponGrantCmd;
import com.red.circle.other.app.dto.cmd.PropCouponQueryCmd;
import com.red.circle.other.app.dto.cmd.PropCouponSendCmd;
import com.red.circle.other.app.dto.cmd.PropCouponUseCmd;

/**
 * 道具券服务接口
 *
 * @author system
 * @date 2025-11-05
 */
public interface PropCouponService {

    /**
     * 使用道具券
     */
    void useCoupon(PropCouponUseCmd cmd);

    /**
     * 赠送道具券
     */
    void sendCoupon(PropCouponSendCmd cmd);

    /**
     * 查询我的道具券列表
     */
    PageResult<PropCouponCO> queryMyCoupons(PropCouponQueryCmd cmd);

    /**
     * 查询使用记录
     */
    PageResult<PropCouponRecordCO> queryUseRecords(PropCouponQueryCmd cmd);

    /**
     * 后台赠送道具券
     */
    void grantCoupons(PropCouponGrantCmd cmd);
}
