package com.dora.service;

import com.dora.entity.PointsPackage;

import java.util.List;

/**
 * 管理端积分套餐服务接口
 * 
 * @author 1818AI
 * @since 2025-10-24
 */
public interface AdminPointsPackageService {

    /**
     * 获取所有积分套餐（管理端）
     *
     * @return 套餐列表
     */
    List<PointsPackage> getAllPackages();

    /**
     * 根据ID获取套餐详情
     *
     * @param id 套餐ID
     * @return 套餐信息
     */
    PointsPackage getPackageById(Long id);

    /**
     * 创建新的积分套餐
     *
     * @param pointsPackage 套餐信息
     * @return 创建后的套餐信息
     */
    PointsPackage createPackage(PointsPackage pointsPackage);

    /**
     * 更新积分套餐
     *
     * @param id 套餐ID
     * @param pointsPackage 更新的套餐信息
     * @return 更新后的套餐信息
     */
    PointsPackage updatePackage(Long id, PointsPackage pointsPackage);

    /**
     * 更新套餐状态（上架/下架）
     *
     * @param id 套餐ID
     * @param isActive 是否上架（1-上架，0-下架）
     * @return 是否操作成功
     */
    boolean updatePackageStatus(Long id, Integer isActive);

    /**
     * 删除积分套餐（逻辑删除）
     *
     * @param id 套餐ID
     * @return 是否删除成功
     */
    boolean deletePackage(Long id);

    /**
     * 批量更新套餐排序
     *
     * @param packageIds 套餐ID列表（按顺序排列）
     * @return 是否操作成功
     */
    boolean updatePackageSort(List<Long> packageIds);

    /**
     * 获取积分套餐统计信息
     *
     * @return 统计信息
     */
    PackageStatsResponse getPackageStats();

    /**
     * 套餐统计响应类
     */
    class PackageStatsResponse {
        private Long totalPackages;
        private Long activePackages;
        private Long hotPackages;
        
        public PackageStatsResponse() {}
        
        public PackageStatsResponse(Long totalPackages, Long activePackages, Long hotPackages) {
            this.totalPackages = totalPackages;
            this.activePackages = activePackages;
            this.hotPackages = hotPackages;
        }

        public Long getTotalPackages() {
            return totalPackages;
        }

        public void setTotalPackages(Long totalPackages) {
            this.totalPackages = totalPackages;
        }

        public Long getActivePackages() {
            return activePackages;
        }

        public void setActivePackages(Long activePackages) {
            this.activePackages = activePackages;
        }

        public Long getHotPackages() {
            return hotPackages;
        }

        public void setHotPackages(Long hotPackages) {
            this.hotPackages = hotPackages;
        }
    }
}
