package com.jeesharp.business.modules.coupon.mapper;

import com.jeesharp.business.modules.coupon.entity.CouponTemplate;
import com.jeesharp.business.modules.coupon.vo.CouponTemplateQueryVO;
import com.jeesharp.framework.mybatis.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

/**
 * 优惠券模板 Mapper；标准 CRUD、列表查询及配额自增 SQL 见
 * {@code src/main/resources/com/jeesharp/business/modules/coupon/mapper/xml/CouponTemplateMapper.xml}。
 *
 * @author jeesharp
 * @since 2026-05-07
 */
@Mapper
public interface CouponTemplateMapper extends BaseMapper<CouponTemplate, CouponTemplateQueryVO> {

    /**
     * 在仍有配额时自增已发放数量，返回影响行数（0 表示已无配额或模板不存在）。
     */
    int increaseIssuedCountIfQuotaAllows(@Param("id") String id);

    int increaseUsedCount(@Param("id") String id);

    int decreaseUsedCountIfPositive(@Param("id") String id);

    /**
     * 按编码查询模板（同租户下唯一校验用）。
     */
    CouponTemplate findByCouponCodeAndTenant(@Param("couponCode") String couponCode,
                                             @Param("tenantId") String tenantId);

    /**
     * 更新领券太阳码字段。
     */
    int updateClaimQrcode(@Param("id") String id,
                          @Param("claimWxScene") String claimWxScene,
                          @Param("claimQrcodeUrl") String claimQrcodeUrl);
}
