package com.cn.service.impl; // 定义服务实现类的包名

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

import org.apache.log4j.Logger; // 导入Logger类，用于记录日志信息

import com.cn.dao.PrepDao; // 导入PrepDao接口，用于访问订单数据
import com.cn.dao.impl.PrepDaoImpl; // 导入PrepDao接口的实现类，用于具体的数据库操作
import com.cn.domain.Prep; // 导入Prep类，该类定义了订单的数据结构
import com.cn.domain.Train; // 导入Train类，该类定义了车次的数据结构（尽管在此实现类中未使用）
import com.cn.service.PrepService; // 导入PrepService接口，该接口定义了订单服务的方法

/**
 * 实现PrepService接口的类，提供订单服务的具体实现。
 * @ClassName: PrepServiceImpl 类名：PrepServiceImpl
 * @Description: PrepService的实现类，用于处理订单相关的业务逻辑。
 * @author: ljy 实现类的作者
 * @date: 2019年9月14日 下午10:46:51 实现类的创建日期和时间
 */
public class PrepServiceImpl implements PrepService {
	
	private PrepDao prepDao = new PrepDaoImpl(); // 成员变量，用于数据库操作的PrepDao对象，使用PrepDaoImpl实现类
	private static Logger logger = Logger.getLogger(PrepServiceImpl.class); // 日志记录器，用于记录日志信息

	/**
	 * 添加订单的方法实现。
	 * @param prep 要添加的订单对象。
	 * @return 返回记录数，表示添加操作影响的行数。
	 */
	@Override
	public int add(Prep prep) {
		int recordNumber = 0; // 记录数，默认为0
		if(prep!=null) { // 检查传入的订单对象是否为null
			try {
				recordNumber = prepDao.add(prep); // 调用PrepDao的add方法添加订单
			} catch (SQLException e) {
				logger.error(e.toString()); // 记录错误日志
				e.printStackTrace(); // 打印异常堆栈跟踪
			}
		}else {
			logger.debug("PrepServiceImpl.add 中 prep为null"); // 记录调试日志，当prep为null时
		}
		return recordNumber; // 返回记录数
	}

	/**
	 * 根据订单ID删除订单的方法实现。
	 * @param prepId 要删除的订单ID。
	 * @return 返回记录数，表示删除操作影响的行数。
	 */
	@Override
	public int delete(Integer prepId) {
		int recordNumber = 0; // 记录数，默认为0
		if(prepId!=null && prepId!=0) { // 检查传入的订单ID是否为null或0
			try {
				recordNumber = prepDao.delete(prepId); // 调用PrepDao的delete方法删除订单
			} catch (SQLException e) {
				logger.error(e.toString()); // 记录错误日志
				e.printStackTrace(); // 打印异常堆栈跟踪
			}
		}else {
			logger.debug("PrepServiceImpl.delete 中 prepId为null或0"); // 记录调试日志，当prepId为null或0时
		}
		return recordNumber; // 返回记录数
	}

	/**
	 * 更新订单的方法实现。
	 * @param prep 包含更新信息的订单对象。
	 * @return 返回记录数，表示更新操作影响的行数。
	 */
	@Override
	public int update(Prep prep) {
		int recordNumber = 0; // 记录数，默认为0
		if(prep!=null) { // 检查传入的订单对象是否为null
			try {
				recordNumber = prepDao.update(prep); // 调用PrepDao的update方法更新订单
			} catch (SQLException e) {
				logger.error(e.toString()); // 记录错误日志
				e.printStackTrace(); // 打印异常堆栈跟踪
			}
		}else {
			logger.debug("PrepServiceImpl.update 中 prep为null"); // 记录调试日志，当prep为null时
		}
		return recordNumber; // 返回记录数
	}

	/**
	 * 获取所有订单信息的方法实现。
	 * @return 返回包含所有订单信息的列表。
	 */
	@Override
	public List<Prep> getAll() {
		List<Prep> list = null; // 订单列表，默认为null
		try {
			list = prepDao.getAll(); // 调用PrepDao的getAll方法获取所有订单信息
		} catch (SQLException e) {
			logger.error(e.toString()); // 记录错误日志
			e.printStackTrace(); // 打印异常堆栈跟踪
		}
		return list; // 返回订单列表
	}

	/**
	 * 根据会员信息ID查询订单的方法实现。
	 * @param pmemberId 会员信息ID。
	 * @return 返回包含所有匹配会员信息ID的订单信息的列表。
	 */
	@Override
	public List<Prep> getPrepByPmemberId(Integer pmemberId) {
		List<Prep> list = null; // 订单列表，默认为null
		if(pmemberId!=null && pmemberId!=0) { // 检查传入的会员信息ID是否为null或0
			try {
				list = prepDao.getPrepByPmemberId(pmemberId); // 调用PrepDao的getPrepByPmemberId方法根据会员信息ID获取订单
			} catch (SQLException e) {
				logger.error(e.toString()); // 记录错误日志
				e.printStackTrace(); // 打印异常堆栈跟踪
			}
		} else {
			logger.debug("PrepServiceImpl.getPrepByPmemberId 中 pmemberId为null或0"); // 记录调试日志，当pmemberId为null或0时
		}		
		return list; // 返回订单列表
	}

	/**
	 * 根据订单ID查询订单的方法实现。
	 * @param prepId 订单ID。
	 * @return 返回包含指定订单ID的订单对象。
	 */
	@Override
	public Prep getById(Integer prepId) {
		Prep prep = null; // 订单对象，默认为null
		if(prepId!=null && prepId!=0) { // 检查传入的订单ID是否为null或0
			try {
				prep = prepDao.getById(prepId); // 调用PrepDao的getById方法根据订单ID获取订单
			} catch (SQLException e) {
				logger.error(e.toString()); // 记录错误日志
				e.printStackTrace(); // 打印异常堆栈跟踪
			}
		}else {
			logger.debug("PrepServiceImpl.getById 中 prepId为null或0"); // 记录调试日志，当prepId为null或0时
		}
		return prep; // 返回订单对象
	}

}