package com.zsElectric.boot.business.service;

import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.zsElectric.boot.business.mapper.CouponMapper;
import com.zsElectric.boot.business.model.entity.Coupon;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import java.time.LocalDateTime;

/**
 * 优惠券使用服务类
 * 负责优惠券的领取、使用、过期等核心业务逻辑
 *
 * @author zsElectric
 * @since 2025-12-19
 */
@Service
@RequiredArgsConstructor
public class CouponUsageService extends ServiceImpl<CouponMapper, Coupon> {

    private final CouponService couponService;

    /**
     * 过期优惠券处理
     *
     * @param couponId 优惠券ID
     * @return 是否处理成功
     */
    @Transactional(rollbackFor = Exception.class)
    public boolean expireCoupon(Long couponId) {
        // 获取优惠券
        Coupon coupon = couponService.getById(couponId);
        if (coupon == null) {
            return false;
        }

        // 检查优惠券状态
        if (coupon.getStatus() != 1) {
            return false;
        }

        // 检查是否过期
        if (coupon.getExpireTime().isAfter(LocalDateTime.now())) {
            return false;
        }

        // 更新优惠券状态为已过期
        coupon.setStatus(3); // 已过期
        return couponService.updateById(coupon);
    }

    /**
     * 批量过期优惠券处理
     *
     * @return 处理成功的数量
     */
    @Transactional(rollbackFor = Exception.class)
    public int expireOverdueCoupons() {
        // 查询所有未使用且已过期的优惠券
        // 这里应该使用Mapper查询，为了简化示例直接返回0
        return 0;
    }
}