package servlet.admin;

import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import javabean.JDBCBean;
import net.sf.json.JSONObject;


/**
 * Servlet 实现类，用于管理员删除书籍
 *
 * 该 Servlet 处理管理员请求删除书籍的操作，根据书籍 ID 从数据库中删除相应的记录。
 * 删除成功后，返回包含成功状态的 JSON 响应；删除失败则返回错误信息。
 */
@WebServlet("/admin/bookDel")
public class BookDel extends HttpServlet {

	/**
	 * 处理 GET 请求，执行书籍的删除操作
	 *
	 * 该方法接收管理员提交的删除请求，获取要删除的书籍 ID，并执行删除操作。
	 * 删除操作通过 JDBC 执行，如果删除成功，返回成功的 JSON 响应；否则，返回错误信息。
	 *
	 * @param req 请求对象
	 * @param resp 响应对象
	 * @throws ServletException 如果发生 Servlet 错误
	 * @throws IOException 如果发生 I/O 错误
	 */
	@Override
	protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
		// 设置响应内容类型为 JSON，字符编码为 UTF-8
		resp.setContentType("application/json; charset=utf8");

		// 获取请求参数中的书籍 ID
		String id = req.getParameter("id");

		// 创建 JSON 对象用于响应数据
		JSONObject json = new JSONObject();

		// 创建 JDBCBean 对象用于执行数据库操作
		JDBCBean db = new JDBCBean();

		// 构建 SQL 删除语句，删除指定 ID 的书籍
		String sql = "delete from books where id = " + id;

		// 定义删除操作的结果变量
		int result = 0;
		// 默认状态为失败
		int code = 1;
		String msg = "";

		// 如果 ID 不为空且不为 "空" 字符串，则执行删除操作
		if (id != null && !id.equals("")) {
			// 执行 SQL 删除语句，返回影响的行数
			result = db.executeUpdate(sql);
		}

		// 判断删除操作是否成功，1 表示成功，0 表示失败
		if (result == 1) {
			code = 0;  // 删除成功
			msg = "删除成功";  // 返回成功消息
		} else {
			code = 1;  // 删除失败
			msg = "删除失败";  // 返回失败消息
		}

		// 将操作结果封装为 JSON 对象
		json.put("code", code);
		json.put("msg", msg);

		// 关闭数据库连接
		db.close();

		// 获取响应输出流并将 JSON 数据写入响应
		PrintWriter out = resp.getWriter();
		out.print(json.toString());
	}
}
