package com.zsElectric.boot.business.service;

import com.zsElectric.boot.business.model.entity.CouponTemplate;
import com.zsElectric.boot.business.model.form.CouponTemplateForm;
import com.zsElectric.boot.business.model.query.CouponTemplateQuery;
import com.zsElectric.boot.business.model.vo.CouponTemplateVO;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService;

import java.util.List;

/**
 * 优惠劵模板服务类
 *
 * @author zsElectric
 * @since 2025-12-19 10:10
 */
public interface CouponTemplateService extends IService<CouponTemplate> {

    /**
     *优惠劵模板分页列表
     *
     * @return {@link IPage<CouponTemplateVO>} 优惠劵模板分页列表
     */
    IPage<CouponTemplateVO> getCouponTemplatePage(CouponTemplateQuery queryParams);

    /**
     * 获取优惠劵模板表单数据
     *
     * @param id 优惠劵模板ID
     * @return 优惠劵模板表单数据
     */
     CouponTemplateForm getCouponTemplateFormData(Long id);

    /**
     * 新增优惠劵模板
     *
     * @param formData 优惠劵模板表单对象
     * @return 是否新增成功
     */
    boolean saveCouponTemplate(CouponTemplateForm formData);

    /**
     * 修改优惠劵模板
     *
     * @param id   优惠劵模板ID
     * @param formData 优惠劵模板表单对象
     * @return 是否修改成功
     */
    boolean updateCouponTemplate(Long id, CouponTemplateForm formData);

    /**
     * 删除优惠劵模板
     *
     * @param ids 优惠劵模板ID，多个以英文逗号(,)分割
     * @return 是否删除成功
     */
    boolean deleteCouponTemplates(String ids);

    /**
     * 验证优惠券模板是否有效
     *
     * @param templateId 模板ID
     * @return 是否有效
     */
    boolean isValidTemplate(Long templateId);

    /**
     * 检查模板是否可以上线
     *
     * @param template 模板对象
     * @return 是否可以上线
     */
    boolean canOnlineTemplate(CouponTemplate template);

    /**
     * 上下线优惠券模板
     *
     * @param templateId 模板ID
     * @return 是否上线成功
     */
    boolean onlineOrOfflineTemplate(Long templateId);

    /**
     * 获取指定状态的优惠券模板列表
     *
     * @param status 模板状态
     * @return 模板列表
     */
    List<CouponTemplate> getTemplatesByStatus(Integer status);

}
