diff --git a/.idea/vcs.xml b/.idea/vcs.xml index 088d39e..94a25f7 100644 --- a/.idea/vcs.xml +++ b/.idea/vcs.xml @@ -1,7 +1,6 @@ - - + \ No newline at end of file diff --git a/src/main/java/com/inks/hb/authinfo/controller/AuthInfoExcelServlet.java b/src/main/java/com/inks/hb/authinfo/controller/AuthInfoExcelServlet.java index a258f3d..7e3d26b 100644 --- a/src/main/java/com/inks/hb/authinfo/controller/AuthInfoExcelServlet.java +++ b/src/main/java/com/inks/hb/authinfo/controller/AuthInfoExcelServlet.java @@ -1,38 +1,49 @@ package com.inks.hb.authinfo.controller; -import com.inks.hb.authinfo.pojo.AuthInfo; -import com.inks.hb.authinfo.service.AuthService; -import com.inks.hb.authinfo.service.AuthServiceImpl; -import com.inks.hb.common.ExportExcel; - -import javax.servlet.annotation.WebServlet; -import javax.servlet.http.HttpServlet; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; -import java.sql.SQLException; -import java.util.ArrayList; - +import com.inks.hb.authinfo.pojo.AuthInfo; // 引入AuthInfo实体类 +import com.inks.hb.authinfo.service.AuthService; // 引入AuthService接口 +import com.inks.hb.authinfo.service.AuthServiceImpl; // 引入AuthServiceImpl实现类 +import com.inks.hb.common.ExportExcel; // 引入ExportExcel工具类 + +import javax.servlet.annotation.WebServlet; // 引入@WebServlet注解 +import javax.servlet.http.HttpServlet; // 引入HttpServlet类 +import javax.servlet.http.HttpServletRequest; // 引入HttpServletRequest接口 +import javax.servlet.http.HttpServletResponse; // 引入HttpServletResponse接口 +import java.sql.SQLException; // 引入SQLException异常类 +import java.util.ArrayList; // 引入ArrayList类 + +// 使用@WebServlet注解定义Servlet的名称和URL映射 @WebServlet(name = "AuthInfoExcelServlet", value = "/AuthInfoExcelServlet") public class AuthInfoExcelServlet extends HttpServlet { + // 重写doPost方法,调用doGet方法 protected void doPost(HttpServletRequest request, HttpServletResponse response) { this.doGet(request, response); } + // 重写doGet方法,处理HTTP GET请求 protected void doGet(HttpServletRequest request, HttpServletResponse response) { + // 创建AuthService实例 AuthService service = new AuthServiceImpl(); + // 声明并初始化AuthInfo列表 ArrayList infoArrayList = null; try { + // 查询所有AuthInfo并赋值给infoArrayList infoArrayList = service.query(1, service.queryAuthInfoNum()); } catch (SQLException e) { + // 捕获并打印SQLException异常 e.printStackTrace(); } + // 定义Excel表头 String[] headers = {"权限ID", "权限名称", "可读", "可写", "可改", "可删"}; + // 定义导出的Excel文件名 String fileName = "权限信息"; + // 创建ExportExcel实例 ExportExcel ee = new ExportExcel<>(); + // 调用exportExcel方法导出Excel文件 ee.exportExcel(headers, infoArrayList, fileName, response); } } diff --git a/src/main/java/com/inks/hb/authinfo/controller/AuthInfoServlet.java b/src/main/java/com/inks/hb/authinfo/controller/AuthInfoServlet.java index 15ccc67..d94c8d4 100644 --- a/src/main/java/com/inks/hb/authinfo/controller/AuthInfoServlet.java +++ b/src/main/java/com/inks/hb/authinfo/controller/AuthInfoServlet.java @@ -16,48 +16,52 @@ import java.sql.SQLException; import java.util.ArrayList; /** - * 分页查询权限表 - * 如查询过程中出现异常,统一返回'数据查询出现异常' - * 返回数据为pojotoGson类型 + * 分页查询权限表的Servlet + * 如果查询过程中出现异常,则统一返回'数据查询出现异常' + * 返回的数据类型为PojotoGson */ @WebServlet(value = "/AuthInfoServlet", name = "AuthInfoServlet") public class AuthInfoServlet extends HttpServlet { + // 重写doPost方法,调用doGet方法以处理POST请求 protected void doPost(HttpServletRequest request, HttpServletResponse response) throws IOException { this.doGet(request, response); } + // 重写doGet方法,处理GET请求 protected void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException { - + // 设置请求和响应的字符编码 request.setCharacterEncoding("utf-8"); response.setContentType("text/html;charset=utf-8"); + // 获取响应输出流 PrintWriter out = response.getWriter(); + // 从请求中获取分页参数和操作类型 int page = Integer.parseInt(request.getParameter("page")); // 当前页码 int limit = Integer.parseInt(request.getParameter("limit")); // 每页的数据量 - int make = Integer.parseInt(request.getParameter("make")); + int make = Integer.parseInt(request.getParameter("make")); // 操作类型 - // 调用service + // 创建AuthService实例 AuthService service = new AuthServiceImpl(); - // 默认输出信息 - String code = "0"; //状态码 - String msg = "数据查询正常"; //状态信息 - String count = ""; //数据总数 - ArrayList list = new ArrayList<>(); //数据内容 + // 初始化返回信息 + String code = "0"; // 状态码,默认为0表示成功 + String msg = "数据查询正常"; // 状态信息,默认为正常 + String count = ""; // 数据总数,初始化为空字符串 + ArrayList list = new ArrayList<>(); // 数据内容列表 - //单个全局属性 - int authId; //权限ID - String authItem = ""; //权限名称 - String isRead; //可读 - String isWrite; //可写 - String isChange; //可改 - String isDelete; //可删 - AuthInfo authInfo = null; + // 声明单个全局属性 + int authId; // 权限ID + String authItem = ""; // 权限名称 + String isRead; // 可读 + String isWrite; // 可写 + String isChange; // 可改 + String isDelete; // 可删 + AuthInfo authInfo = null; // AuthInfo对象 try { - - // 状态标志 make 0重载 1新增 2修改 3搜索 4删除 + // 根据操作类型执行不同的逻辑 if (make == 2) { + // 修改权限信息 authId = Integer.parseInt(request.getParameter("authId")); authItem = request.getParameter("authItem"); isRead = request.getParameter("isRead"); @@ -65,38 +69,33 @@ public class AuthInfoServlet extends HttpServlet { isChange = request.getParameter("isChange"); isDelete = request.getParameter("isDelete"); authInfo = new AuthInfo(authId, authItem, isRead, isWrite, isChange, isDelete); + service.updateAuthInfo(authInfo); // 更新权限信息 } else if (make == 3) { + // 搜索权限信息 authItem = request.getParameter("authItem"); + authInfo = service.query(authItem); // 查询权限信息 + list.clear(); // 清空列表 + list.add(authInfo); // 添加查询结果到列表 } - switch (make) { - case 2: - service.updateAuthInfo(authInfo); - break; - case 3: - authInfo = service.query(authItem); - list.clear(); - list.add(authInfo); - break; - } + // 根据操作类型获取数据 if (make != 3) { - list = service.query(page, limit); - count = String.valueOf(service.queryAuthInfoNum()); + list = service.query(page, limit); // 分页查询权限信息 + count = String.valueOf(service.queryAuthInfoNum()); // 获取权限信息总数 } else { - if (authInfo.getAuthId() == 0) { - count = "0"; - } else { - count = "1"; - } + // 如果搜索结果为空,则设置count为0,否则为1 + count = (authInfo.getAuthId() == 0) ? "0" : "1"; } } catch (SQLException e) { + // 捕获到SQLException异常,设置错误状态码和信息 code = "1"; msg = "数据查询出现异常"; - e.printStackTrace(); + e.printStackTrace(); // 打印异常堆栈信息 } finally { + // 创建PojotoGson对象并序列化为JSON字符串 PojotoGson pojotoGson = new PojotoGson(code, msg, count, list); Gson gson = new Gson(); - out.print(gson.toJson(pojotoGson)); + out.print(gson.toJson(pojotoGson)); // 输出JSON字符串 } } } diff --git a/src/main/java/com/inks/hb/authinfo/dao/AuthInfoDao.java b/src/main/java/com/inks/hb/authinfo/dao/AuthInfoDao.java index 476d902..5f0ddb7 100644 --- a/src/main/java/com/inks/hb/authinfo/dao/AuthInfoDao.java +++ b/src/main/java/com/inks/hb/authinfo/dao/AuthInfoDao.java @@ -10,48 +10,58 @@ import java.sql.ResultSet; import java.sql.SQLException; import java.util.ArrayList; +// 实现CommonDao接口,提供AuthInfo数据访问对象 public class AuthInfoDao implements CommonDao { + // 插入AuthInfo数据到数据库 @Override public void insertData(Object o) throws SQLException { - AuthInfo authInfo = (AuthInfo) o; + AuthInfo authInfo = (AuthInfo) o; // 将Object对象转换为AuthInfo对象 - Connection conn = DBUtil.getConnection(); + Connection conn = DBUtil.getConnection(); // 获取数据库连接 + // SQL插入语句 String sql = "insert into authInfo (authItem, isRead, isWrite, isChange, isDelete) values (?,?,?,?,?)"; PreparedStatement pstmt = conn.prepareStatement(sql); + // 设置SQL语句中的参数 pstmt.setString(1, authInfo.getAuthItem()); pstmt.setString(2, authInfo.getIsRead()); pstmt.setString(3, authInfo.getIsWrite()); pstmt.setString(4, authInfo.getIsChange()); pstmt.setString(5, authInfo.getIsDelete()); - pstmt.executeUpdate(); - pstmt.close(); + pstmt.executeUpdate(); // 执行插入操作 + pstmt.close(); // 关闭PreparedStatement } + // 删除AuthInfo数据 @Override public void deleteData(Object o) throws SQLException { - AuthInfo authInfo = (AuthInfo) o; + AuthInfo authInfo = (AuthInfo) o; // 将Object对象转换为AuthInfo对象 - Connection conn = DBUtil.getConnection(); + Connection conn = DBUtil.getConnection(); // 获取数据库连接 + // SQL删除语句 String sql = "DELETE FROM authInfo WHERE authId = ?"; PreparedStatement pstmt = conn.prepareStatement(sql); + // 设置SQL语句中的参数 pstmt.setInt(1, authInfo.getAuthId()); - pstmt.executeUpdate(); - pstmt.close(); + pstmt.executeUpdate(); // 执行删除操作 + pstmt.close(); // 关闭PreparedStatement } + // 更新AuthInfo数据 @Override public void updateData(Object o) throws SQLException { - AuthInfo authInfo = (AuthInfo) o; + AuthInfo authInfo = (AuthInfo) o; // 将Object对象转换为AuthInfo对象 - Connection conn = DBUtil.getConnection(); + Connection conn = DBUtil.getConnection(); // 获取数据库连接 + // SQL更新语句 String sql = "UPDATE authInfo SET authItem = ? ,isRead = ?,isWrite = ?,isChange = ?,isDelete = ? WHERE authId = ?"; PreparedStatement pstmt = conn.prepareStatement(sql); + // 设置SQL语句中的参数 pstmt.setString(1, authInfo.getAuthItem()); pstmt.setString(2, authInfo.getIsRead()); pstmt.setString(3, authInfo.getIsWrite()); @@ -59,53 +69,59 @@ public class AuthInfoDao implements CommonDao { pstmt.setString(5, authInfo.getIsDelete()); pstmt.setInt(6, authInfo.getAuthId()); - pstmt.executeUpdate(); - pstmt.close(); + pstmt.executeUpdate(); // 执行更新操作 + pstmt.close(); // 关闭PreparedStatement } + // 查询AuthInfo数据总数 @Override public int queryDataNum() throws SQLException { + Connection conn = DBUtil.getConnection(); // 获取数据库连接 - Connection conn = DBUtil.getConnection(); - + // SQL查询总数语句 String sql = "select count(*) from authInfo;"; PreparedStatement pstmt = conn.prepareStatement(sql); - ResultSet rs = pstmt.executeQuery(); + ResultSet rs = pstmt.executeQuery(); // 执行查询操作 int num; - if (rs.next()) num = rs.getInt("count(*)"); - else num = 0; + if (rs.next()) { + num = rs.getInt("count(*)"); // 获取总数 + } else { + num = 0; // 如果没有数据,总数为0 + } - rs.close(); - pstmt.close(); + rs.close(); // 关闭ResultSet + pstmt.close(); // 关闭PreparedStatement - return num; + return num; // 返回数据总数 } + // 分页查询AuthInfo数据 @Override public ArrayList query(int start, int length) throws SQLException { + Connection conn = DBUtil.getConnection(); // 获取数据库连接 - Connection conn = DBUtil.getConnection(); - + // SQL分页查询语句 String sql = "select * from authInfo limit ?, ?;"; PreparedStatement pstmt = conn.prepareStatement(sql); + // 设置分页参数 pstmt.setInt(1, start - 1); pstmt.setInt(2, length); - ResultSet rs = pstmt.executeQuery(); + ResultSet rs = pstmt.executeQuery(); // 执行查询操作 - ArrayList list = new ArrayList<>(); + ArrayList list = new ArrayList<>(); // 创建AuthInfo列表 AuthInfo authInfo; - while (rs.next()) { - authInfo = new AuthInfo(rs.getInt(1), rs.getString(2), rs.getString(3) - , rs.getString(4), rs.getString(5), rs.getString(6)); + while (rs.next()) { // 遍历结果集 + // 创建AuthInfo对象并添加到列表 + authInfo = new AuthInfo(rs.getInt(1), rs.getString(2), rs.getString(3), rs.getString(4), rs.getString(5), rs.getString(6)); list.add(authInfo); } - rs.close(); - pstmt.close(); + rs.close(); // 关闭ResultSet + pstmt.close(); // 关闭PreparedStatement - return list; + return list; // 返回AuthInfo列表 } @Override diff --git a/src/main/java/com/inks/hb/authinfo/service/AuthServiceImpl.java b/src/main/java/com/inks/hb/authinfo/service/AuthServiceImpl.java index 658911e..b99c8a8 100644 --- a/src/main/java/com/inks/hb/authinfo/service/AuthServiceImpl.java +++ b/src/main/java/com/inks/hb/authinfo/service/AuthServiceImpl.java @@ -6,46 +6,50 @@ import com.inks.hb.authinfo.pojo.AuthInfo; import java.sql.SQLException; import java.util.ArrayList; +// 实现AuthService接口,提供AuthInfo业务逻辑服务 public class AuthServiceImpl implements AuthService { - private AuthInfoDao dao = new AuthInfoDao(); + private AuthInfoDao dao = new AuthInfoDao(); // AuthInfo数据访问对象 + // 查询AuthInfo记录总数 @Override public int queryAuthInfoNum() throws SQLException { - - return dao.queryDataNum(); + return dao.queryDataNum(); // 调用DAO层的方法查询总数 } + // 根据ID查询AuthInfo记录 @Override public AuthInfo query(int authId) throws SQLException { - AuthInfo authInfo = new AuthInfo(); - authInfo.setAuthId(authId); + AuthInfo authInfo = new AuthInfo(); // 创建AuthInfo对象 + authInfo.setAuthId(authId); // 设置查询条件 - return (AuthInfo) dao.query(authInfo); + return (AuthInfo) dao.query(authInfo); // 调用DAO层的方法进行查询 } + // 根据权限项名称查询AuthInfo记录 @Override public AuthInfo query(String authItem) throws SQLException { - AuthInfo authInfo = new AuthInfo(); - authInfo.setAuthItem(authItem); + AuthInfo authInfo = new AuthInfo(); // 创建AuthInfo对象 + authInfo.setAuthItem(authItem); // 设置查询条件 - return dao.queryName(authInfo); + return dao.queryName(authInfo); // 调用DAO层的方法进行查询 } + // 分页查询AuthInfo记录 @Override public ArrayList query(int page, int limit) throws SQLException { + int start = (page * limit) - limit + 1; // 计算分页查询的起始位置 - int start = (page * limit) - limit + 1; //每一页的起始位置 - - if (start < 1) - start = 1; + if (start < 1) { + start = 1; // 如果起始位置小于1,则设置为1 + } - return dao.query(start, limit); + return dao.query(start, limit); // 调用DAO层的方法进行分页查询 } + // 更新AuthInfo记录 @Override public void updateAuthInfo(AuthInfo authInfo) throws SQLException { - - dao.updateData(authInfo); + dao.updateData(authInfo); // 调用DAO层的方法进行更新操作 } } diff --git a/src/main/java/com/inks/hb/billinfo/pojo/BillInfo.java b/src/main/java/com/inks/hb/billinfo/pojo/BillInfo.java index bbab7db..3b90d28 100644 --- a/src/main/java/com/inks/hb/billinfo/pojo/BillInfo.java +++ b/src/main/java/com/inks/hb/billinfo/pojo/BillInfo.java @@ -1,24 +1,31 @@ package com.inks.hb.billinfo.pojo; /** - * 账单表 + * 账单表对应的实体类 */ public class BillInfo { + // 账单ID private int billId; + // 审核ID private String checkedId; + // 费用金额 private String costMoney; + // 费用日期 private String costDate; + // 备注 private String remark; + // 默认构造方法 public BillInfo() { super(); } + // 带参数的构造方法,用于创建BillInfo对象时初始化字段 public BillInfo(int billId, String checkedId, String costMoney, String costDate, String remark) { this.billId = billId; this.checkedId = checkedId; @@ -27,46 +34,57 @@ public class BillInfo { this.remark = remark; } + // 获取账单ID public int getBillId() { return billId; } + // 设置账单ID public void setBillId(int billId) { this.billId = billId; } + // 获取审核ID public String getCheckedId() { return checkedId; } + // 设置审核ID public void setCheckedId(String checkedId) { this.checkedId = checkedId; } + // 获取费用金额 public String getCostMoney() { return costMoney; } + // 设置费用金额 public void setCostMoney(String costMoney) { this.costMoney = costMoney; } + // 获取费用日期 public String getCostDate() { return costDate; } + // 设置费用日期 public void setCostDate(String costDate) { this.costDate = costDate; } + // 获取备注 public String getRemark() { return remark; } + // 设置备注 public void setRemark(String remark) { this.remark = remark; } + // 重写toString方法,用于打印BillInfo对象的字符串表示 @Override public String toString() { return "BillInfo{" + diff --git a/src/main/java/com/inks/hb/common/MD5.java b/src/main/java/com/inks/hb/common/MD5.java index f4279b6..f85a4b3 100644 --- a/src/main/java/com/inks/hb/common/MD5.java +++ b/src/main/java/com/inks/hb/common/MD5.java @@ -5,18 +5,33 @@ import java.util.Base64; public class MD5 { + /** + * 生成给定字符串的MD5哈希值,并返回其Base64编码结果。 + * @param str 要进行哈希处理的字符串 + * @return 经过Base64编码的哈希值 + */ public String getMD5(String str) { + // 在输入字符串前添加盐值 String Salt = "mH8yhBL-n*j-2gmC" + str; + // 将带盐值的字符串转换为字节数组,并进行Base64编码 return Base64.getEncoder().encodeToString(Salt.getBytes(StandardCharsets.UTF_8)); } + /** + * 检查新字符串的MD5哈希值是否与旧字符串的哈希值匹配。 + * @param newStr 新的字符串 + * @param oldStr 旧的哈希值字符串 + * @return 如果两个哈希值相等则返回true,否则返回false + */ public boolean checkMD5(String newStr, String oldStr) { + // 比较新字符串的MD5哈希值与旧字符串的哈希值是否相等 return getMD5(newStr).equals(oldStr); } public static void main(String[] args) { + // 创建MD5类的实例 MD5 md5 = new MD5(); + // 输出字符串"toor"的MD5哈希值 System.out.println(md5.getMD5("toor")); } } -