package com.cn.service.impl;

import java.sql.SQLException;
import java.util.List;

import com.cn.dao.AdminDao;
import com.cn.dao.impl.AdminDaoImpl;
import com.cn.domain.Admin;
import com.cn.service.AdminService;

/**
 * 实现AdminService接口，提供管理员相关的业务逻辑处理。
 */
public class AdminServiceImpl implements AdminService {
    private AdminDao adminDao = null; // 声明AdminDao类型的变量，用于数据库操作

    /**
     * 通过构造函数注入AdminDao对象。
     * @param adminDao AdminDao对象
     */
    public AdminServiceImpl(AdminDao adminDao) {
        this.adminDao = adminDao;
    }

    /**
     * 默认无参构造函数。
     */
    public AdminServiceImpl() {
    }

    /**
     * 添加管理员。
     * @param admin 管理员对象
     * @return 操作状态码，0表示成功
     */
    @Override
    public int addAdmin(Admin admin) {
        int status = 0; // 状态码，默认为0
        adminDao = new AdminDaoImpl(); // 实例化AdminDao对象
        try {
            status = adminDao.add(admin); // 调用add方法添加管理员
        } catch (SQLException e) {
            e.printStackTrace(); // 打印异常堆栈信息
        }
        return status; // 返回操作状态码
    }

    /**
     * 根据ID删除管理员。
     * @param adminId 管理员ID
     * @return 操作状态码，0表示成功
     */
    @Override
    public int deleteAdmin(int adminId) {
        int status = 0; // 状态码，默认为0
        adminDao = new AdminDaoImpl(); // 实例化AdminDao对象
        try {
            status = adminDao.delete(adminId); // 调用delete方法删除管理员
        } catch (SQLException e) {
            e.printStackTrace(); // 打印异常堆栈信息
        }
        return status; // 返回操作状态码
    }

    /**
     * 更新管理员信息。
     * @param admin 管理员对象
     * @return 操作状态码，0表示成功
     */
    @Override
    public int updateAdmin(Admin admin) {
        int status = 0; // 状态码，默认为0
        adminDao = new AdminDaoImpl(); // 实例化AdminDao对象
        try {
            status = adminDao.update(admin); // 调用update方法更新管理员信息
        } catch (SQLException e) {
            e.printStackTrace(); // 打印异常堆栈信息
        }
        return status; // 返回操作状态码
    }

    /**
     * 获取所有管理员信息。
     * @return 管理员列表
     */
    @Override
    public List<Admin> getAllAdmin() {
        List<Admin> list = null; // 管理员列表，默认为null
        adminDao = new AdminDaoImpl(); // 实例化AdminDao对象
        try {
            list = adminDao.getAll(); // 调用getAll方法获取所有管理员信息
        } catch (SQLException e) {
            e.printStackTrace(); // 打印异常堆栈信息
        }
        return list; // 返回管理员列表
    }

    /**
     * 根据ID获取管理员信息。
     * @param adminId 管理员ID
     * @return 管理员对象
     */
    @Override
    public Admin getAdminById(int adminId) {
        Admin admin = null; // 管理员对象，默认为null
        adminDao = new AdminDaoImpl(); // 实例化AdminDao对象
        try {
            admin = adminDao.getById(adminId); // 调用getById方法根据ID获取管理员信息
        } catch (SQLException e) {
            e.printStackTrace(); // 打印异常堆栈信息
        }
        return admin; // 返回管理员对象
    }

    /**
     * 根据用户名获取管理员信息。
     * @param userName 用户名
     * @return 管理员对象
     */
    @Override
    public Admin getAdminByName(String userName) {
        Admin admin = null; // 管理员对象，默认为null
        adminDao = new AdminDaoImpl(); // 实例化AdminDao对象
        try {
            admin = adminDao.getByName(userName); // 调用getByName方法根据用户名获取管理员信息
        } catch (SQLException e) {
            e.printStackTrace(); // 打印异常堆栈信息
        }
        return admin; // 返回管理员对象
    }
}
