package com.cn.service.impl; // 定义了代码所在的包名

import java.sql.SQLException; // 导入SQLException类，用于处理数据库操作中的异常
import java.util.List; // 导入List接口，用于操作列表集合

import com.cn.dao.MemberDao; // 导入MemberDao接口，用于数据库操作
import com.cn.dao.impl.MemberDaoImpl; // 导入MemberDao接口的实现类
import com.cn.domain.Member; // 导入Member类，代表会员对象
import com.cn.service.MemberService; // 导入MemberService接口，定义会员服务的方法

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

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

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

    /**
     * 添加会员。
     * @param member 会员对象
     * @return 操作状态码，0表示成功
     */
    @Override
    public int addMember(Member member) {
        int status = 0; // 状态码，默认为0
        memberDao = new MemberDaoImpl(); // 实例化MemberDao对象
        if (member != null) { // 检查传入的会员对象是否为null
            try {
                status = memberDao.add(member); // 调用add方法添加会员
            } catch (SQLException e) {
                e.printStackTrace(); // 打印异常堆栈信息
            }
        }
        return status; // 返回操作状态码
    }

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

    /**
     * 更新会员信息。
     * @param member 会员对象
     * @return 操作状态码，0表示成功
     */
    @Override
    public int updateMember(Member member) {
        int status = 0; // 状态码，默认为0
        memberDao = new MemberDaoImpl(); // 实例化MemberDao对象
        if (member != null) { // 检查传入的会员对象是否为null
            try {
                status = memberDao.update(member); // 调用update方法更新会员信息
            } catch (SQLException e) {
                e.printStackTrace(); // 打印异常堆栈信息
            }
        }
        return status; // 返回操作状态码
    }

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





    /**
     * 根据ID获取会员信息。
     * @param memberId 会员ID
     * @return 会员对象
     */
    @Override
    public Member getMemberById(int memberId) {
        Member member = null; // 会员对象，默认为null
        memberDao = new MemberDaoImpl(); // 实例化MemberDao对象
        try {
            member = memberDao.getMemberById(memberId); // 调用getMemberById方法根据ID获取会员信息
        } catch (SQLException e) {
            e.printStackTrace(); // 打印异常堆栈信息
        }
        return member; // 返回会员对象
    }

    /**
     * 根据用户名获取会员信息。
     * @param userName 用户名
     * @return 会员对象
     */
    @Override
    public Member getMemberByName(String userName) {
        Member member = new Member(); // 初始化会员对象
        memberDao = new MemberDaoImpl(); // 实例化MemberDao对象
        try {
            member = memberDao.getMemberByName(userName); // 调用getMemberByName方法根据用户名获取会员信息
        } catch (SQLException e) {
            e.printStackTrace(); // 打印异常堆栈信息
        }
        return member; // 返回会员对象
    }
}
