Merge remote-tracking branch 'origin/后台运营yy' into 后台运营yy

后台运营yy
yangyang 8 months ago
commit 324fc357d9

@ -1,21 +1,37 @@
package com.tamguo.common.utils;
// LogHandler接口定义了一套统一的日志处理方法规范旨在为不同的日志级别如信息、错误、调试、警告等提供一致的调用方式方便具体的日志实现类去实现这些方法以满足在各种场景下记录相应级别日志的需求。
public interface LogHandler {
// 用于记录信息级别INFO的日志该方法接收要记录的日志消息内容以及调用类的全限定名作为参数。
// 通常在程序正常运行过程中,需要记录一些关键业务操作、流程步骤等信息时使用,方便后续查看程序执行的轨迹和状态,例如记录用户登录成功、数据查询完成等情况。
public void info(String msg, String fqnOfCallingClass);
// 同样用于记录信息级别INFO的日志但此方法还关联了一个表示异常情况的Throwable对象除了记录基本的日志消息内容外
// 还可以在出现异常但不影响整体业务流程继续执行的情况下,将异常相关信息一并记录下来,方便排查可能存在的隐患或者了解一些特殊情况,例如记录某个数据获取操作虽然成功了,但是过程中出现了可忽略的小异常等场景。
public void info(String msg, Throwable t, String fqnOfCallingClass);
// 用于记录错误级别ERROR的日志接收日志消息内容和调用类的全限定名作为参数主要用于在程序出现严重错误影响业务正常执行时
// 记录详细的错误信息,比如数据库连接失败、关键业务逻辑执行出错等情况,便于开发人员快速定位和解决问题,保障系统的稳定性。
public void error(String msg, String fqnOfCallingClass);
// 记录错误级别ERROR的日志同时关联异常对象在出现错误且需要详细的异常堆栈信息来辅助排查问题时使用例如出现未捕获的运行时异常、业务规则验证不通过导致的严重错误等场景
// 通过记录异常对象包含的详细堆栈信息、异常类型及消息等,可以更精准地分析错误产生的根源,进而修复问题。
public void error(String msg, Throwable t, String fqnOfCallingClass);
// 用于记录调试级别DEBUG的日志接收日志消息内容和调用类的全限定名作为参数在开发和调试阶段开发人员可以通过此方法输出一些关键变量的值、代码执行路径等详细的调试信息
// 帮助理解程序的执行逻辑,查找潜在的逻辑错误或者验证代码是否按照预期执行,通常在非生产环境下使用较多,方便调试代码。
public void debug(String msg, String fqnOfCallingClass);
// 记录调试级别DEBUG的日志并关联异常对象在调试过程中如果遇到异常情况既可以输出自定义的调试消息又能同时展示异常的详细信息
// 方便开发人员快速定位是在何种调试场景下出现的异常,对于复杂的业务逻辑调试和问题排查很有帮助。
public void debug(String msg, Throwable t, String fqnOfCallingClass);
// 用于记录警告级别WARNING的日志接收日志消息内容和调用类的全限定名作为参数主要用于记录一些可能会导致问题但当前还未影响业务正常运行的情况
// 比如配置文件中的某个参数值不太合理、即将达到系统资源阈值等场景,通过记录警告信息提醒开发人员关注相关情况,提前采取措施避免问题恶化。
public void warning(String msg, String fqnOfCallingClass);
// 记录警告级别WARNING的日志并关联异常对象在出现警告情况且存在相关异常信息需要一并记录时使用例如读取外部资源时遇到了可恢复的异常虽然当前不影响主要业务但值得记录下来作为后续优化或者排查潜在问题的参考。
public void warning(String msg, Throwable t, String fqnOfCallingClass);
}
}

@ -5,23 +5,32 @@ import java.util.HashMap;
import java.util.List;
import java.util.Map;
// Result类用于封装操作结果相关的信息包括操作的状态码、具体的结果数据以及对应的提示消息等实现了Serializable接口意味着该类的对象可以被序列化方便在网络传输、持久化存储等场景下使用。
public class Result implements Serializable {
// 序列化版本号,用于在序列化和反序列化过程中确保类结构的兼容性,当类的结构发生变化(如新增、删除字段等)时,可能需要更新该版本号,这里已经给定了一个初始值。
private static final long serialVersionUID = -1651614836984397356L;
// 用于存储操作结果的状态码,不同的数值代表不同的操作结果状态,例如成功、失败等情况,方便调用者根据状态码快速判断操作是否成功以及进行相应的后续处理。
private int code;
// 用于存放具体的操作结果数据,可以是各种类型的对象,比如查询数据库返回的实体对象列表、单个对象,或者是经过业务逻辑处理后的其他相关数据等。
private Object result;
// 用于存储与操作结果相关的提示消息,例如操作成功时可以为空字符串,操作失败时则存放具体的失败原因描述信息,便于向调用者反馈操作的详细情况。
private String message;
// 定义表示成功的状态码常量方便在代码中统一使用通常在操作顺利完成、符合预期的情况下使用该状态码来表示成功状态值为0。
public static final int SUCCESS_CODE = 0;
// 定义表示失败的状态码常量用于在操作出现错误、未达到预期结果时标记失败状态值为1便于在代码中清晰地标识操作失败的情况。
public static final int FAIL_CODE = 1;
// 私有构造函数,将构造函数私有化,阻止外部直接通过`new`关键字创建`Result`对象,强制使用类中提供的静态方法来获取`Result`实例,这样可以更好地控制对象的创建和初始化过程,确保对象状态的一致性。
private Result() {
}
// 私有构造函数,用于在类内部根据传入的状态码、结果数据以及消息来创建`Result`对象,外部无法直接调用,同样是为了保证对象创建的规范性和可控性。
private Result(int code, Object result, String message) {
this.code = code;
this.result = result;
@ -29,48 +38,114 @@ public class Result implements Serializable {
}
/**
*
*
* @param result
* @return
* `Result``SUCCESS_CODE`
* 使
*
* @param result `Result``result`
* @return `Result``SUCCESS_CODE`
*/
public static Result successResult(Object result) {
return result(SUCCESS_CODE, result, "");
}
/**
* `successResult`
* `resultOfList``Map``Map``Result`
* `successResult``null`
*
* @param records
* @param recordSum 便
* @param rowsOfPage
* @return `Result``SUCCESS_CODE``Map`
*/
public static Result successResult(Object records, Long recordSum, Long rowsOfPage) {
return successResult(records, recordSum, rowsOfPage, null);
}
/**
*
* `resultOfList``Map``Map`
* `Map``successResult(Object result)``Result`
*
* @param records
* @param recordSum 便
* @param rowsOfPage
* @param userData `Map`便使
* @return `Result``SUCCESS_CODE``Map`
*/
public static Result successResult(Object records, Long recordSum, Long rowsOfPage, Object userData) {
Map<String, Object> result = resultOfList(records, recordSum, rowsOfPage, userData);
return successResult(result);
}
/**
* `Map``resultOfList``null``Map`
* 便使
*
* @param records
* @param recordSum 便
* @param rowsOfPage
* @return `Map` "rows""records""total"便使
*/
public static Map<String, Object> resultOfList(Object records, Long recordSum, Long rowsOfPage) {
return resultOfList(records, recordSum, rowsOfPage, null);
}
/**
* `Map`
* `HashMap`
* - "rows"`Obj`便
* - "records"`records`便
* - "total"`rowsOfPage`
* - `userData``null` "userdata" `Map`便
* `Map`
*
* @param Obj `Map` "rows"
* @param records 便`Map` "records"
* @param rowsOfPage `Map` "total"
* @param userData `null``Map` "userdata"
* @return `Map`便
*/
public static Map<String, Object> resultOfList(Object Obj, Long records, Long rowsOfPage, Object userData) {
Map<String, Object> result = new HashMap<String, Object>();
result.put("rows", Obj);
result.put("records", records);
result.put("total", rowsOfPage);
if (null != userData) {
if (null!= userData) {
result.put("userdata", userData);
}
;
return result;
}
/**
* `jqGrid``Map`
* `HashMap`
* - "list"`list``jqGrid`
* - "count"`totalCount`便`jqGrid`
* - "next"`currPage``totalPage`1`jqGrid`
* - "prev"11`jqGrid`
* - "first"1`jqGrid`
* - "last"`totalPage``jqGrid`
* - "pageSize"`pageSize``jqGrid`
* - "pageNo"`currPage`便`jqGrid`
* `jqGrid``Map`便`jqGrid`
*
* @param list `jqGrid`
* @param totalCount 便`jqGrid`
* @param pageSize `jqGrid`
* @param currPage 便`jqGrid`
* @param totalPage `jqGrid`
* @return `jqGrid``Map``jqGrid`
*/
public static Map<String, Object> jqGridResult(List<?> list, long totalCount, int pageSize, int currPage,
int totalPage) {
int totalPage) {
Map<String, Object> result = new HashMap<String, Object>();
result.put("list", list);
result.put("count", totalCount);
result.put("next", currPage == totalPage ? currPage : currPage + 1);
result.put("prev", currPage == 1 ? 1 : currPage - 1);
result.put("next", currPage == totalPage? currPage : currPage + 1);
result.put("prev", currPage == 1? 1 : currPage - 1);
result.put("first", 1);
result.put("last", totalPage);
result.put("pageSize", pageSize);
@ -79,30 +154,56 @@ public class Result implements Serializable {
}
/**
*
*
* @param errorMsg
* @return
* `Result``FAIL_CODE`
* 使
*
* @param errorMsg "数据库连接失败""参数校验不通过" `Result``message`便
* @return `Result``FAIL_CODE`
*/
public static Result failResult(String errorMsg) {
return result(FAIL_CODE, "", errorMsg);
}
/**
* `Result``Result``Result`
*
* @param code 使`SUCCESS_CODE``FAIL_CODE`
* @param result `Result``result`
* @param message `Result``message`
* @return `Result`
*/
public static Result result(int code, Object result, String message) {
Result res = new Result(code, result, message);
return res;
}
// 以下是用于获取`Result`对象中各个属性的公共访问方法,方便外部调用者获取`Result`对象封装的状态码、结果数据以及消息信息。
/**
* `Result`
*
* @return `Result`
*/
public int getCode() {
return code;
}
/**
* `Result`
*
* @return `Result`
*/
public Object getResult() {
return result;
}
/**
* `Result`
*
* @return `Result`便
*/
public String getMessage() {
return message;
}
}
}

@ -1,5 +1,12 @@
package com.tamguo.common.utils;
// Status枚举用于定义一组表示某种状态的常量值在当前代码情境下大概率是用于表示某个操作比如文件上传、业务流程执行等相关操作的不同结果状态
// 通过使用枚举可以使代码更加清晰、易读,并且限定了合法的状态取值范围,避免使用随意的字符串或整数来表示状态而可能导致的混淆和错误。
public enum Status {
SUCCESS , ERROR
}
// 表示操作成功的状态值,通常在相关操作顺利完成、达到预期结果时使用该枚举常量来标记成功状态,方便在代码中统一判断和处理操作成功的情况。
SUCCESS,
// 表示操作出现错误的状态值,用于在操作执行过程中发生异常、未达到预期等失败情况时进行标识,便于后续根据该状态执行相应的错误处理逻辑、返回错误提示信息等操作。
ERROR
}

@ -2,66 +2,84 @@ package com.tamguo.common.utils;
import java.util.ArrayList;
// UploaderMessage类主要用于封装文件上传相关操作的结果信息包含了文件上传的状态、状态消息、错误相关信息、文件路径以及文件所在的域名等内容方便在文件上传操作完成后统一向调用者反馈详细的情况。
public class UploaderMessage {
// 用于表示文件上传操作的整体状态,通常会是一些预定义的枚举值(此处虽然未展示枚举定义,但推测`Status`是一个枚举类型),比如成功、失败、正在处理等不同的状态情况,方便外部调用者快速知晓文件上传的大致结果。
private Status status;
// 用于存放关于文件上传状态的详细描述消息,例如在上传成功时可以是"文件上传成功",出现部分问题时可以是具体的错误提示等,初始值为空字符串,后续可根据实际情况进行设置。
private String statusMsg = "";
// 用于存储文件上传过程中出现错误的相关键值推测可能是与错误对应的一些标识编号等具体含义取决于业务逻辑中对错误的定义和编码方式使用ArrayList来存储多个整数值方便记录多个可能出现的错误相关标识初始值为null在未添加元素时的默认情况
private ArrayList<Integer> errorKys;
// 用于存放文件上传操作出现错误时的具体错误信息,例如"文件大小超出限制"、"网络连接失败导致上传中断"等详细的错误描述内容,初始值为空字符串,当有错误发生时可设置相应的错误消息字符串。
private String error = "";
// 用于记录上传文件在服务器端存储的文件路径信息,方便后续需要访问该文件时能准确找到其位置,初始值为空字符串,在文件上传成功并确定存储路径后可进行设置。
private String filePath = "";
// 用于表示上传文件所在的域名信息,例如在有多个不同域名的服务器用于存储文件的场景下,指明该文件所属的具体域名,初始值为空字符串,可根据实际的文件存储配置进行设置。
private String fileDomain = "";
// 获取文件上传操作的状态,外部调用者通过此方法可以获取到表示当前文件上传状态的枚举值(由`Status`类型表示),进而根据该状态进行相应的后续处理,比如展示不同的提示信息给用户等。
public Status getStatus() {
return status;
}
// 设置文件上传操作的状态,在文件上传过程中或者完成后,由相关的业务逻辑代码调用此方法,传入合适的`Status`枚举值来更新文件上传的状态信息,以便后续外部能获取到准确的状态情况。
public void setStatus(Status status) {
this.status = status;
}
public String getStatusMsg() {
// 获取文件上传状态的详细描述消息,外部调用者通过调用此方法能得到关于文件上传结果的详细文本描述信息,用于向用户展示或者记录日志等操作,展示更具体的文件上传情况反馈。
public Status getStatusMsg() {
return statusMsg;
}
// 设置文件上传状态的详细描述消息,在文件上传的不同阶段,根据实际情况调用此方法来更新状态消息内容,比如在上传成功时设置为"文件已成功上传至服务器",出现错误时设置相应的错误提示消息等。
public void setStatusMsg(String statusMsg) {
this.statusMsg = statusMsg;
}
// 获取文件上传过程中出现错误的相关键值列表外部调用者可以通过此方法获取到记录错误相关标识编号的ArrayList进而分析具体出现了哪些预定义的错误情况方便进行针对性的错误处理或者统计等操作。
public ArrayList<Integer> getErrorKys() {
return errorKys;
}
// 设置文件上传过程中出现错误的相关键值列表当检测到文件上传出现错误并确定对应的错误标识编号后通过此方法将包含这些编号的ArrayList传入更新错误相关键值信息以便后续获取和分析。
public void setErrorKys(ArrayList<Integer> errorKys) {
this.errorKys = errorKys;
}
// 获取文件上传操作出现错误时的具体错误信息,外部调用者调用此方法能得到详细的错误描述字符串,用于向用户展示具体的错误原因或者记录到日志中进行错误排查等操作。
public String getError() {
return error;
}
// 设置文件上传操作出现错误时的具体错误信息,在文件上传出现错误并确定具体的错误原因后,通过此方法将错误消息字符串传入,更新错误信息内容,方便后续获取和展示给相关人员。
public void setError(String error) {
this.error = error;
}
public String getFilePath() {
return filePath;
}
public void setFilePath(String filePath) {
this.filePath = filePath;
}
public String getFileDomain() {
return fileDomain;
}
public void setFileDomain(String fileDomain) {
this.fileDomain = fileDomain;
}
}
// 获取上传文件在服务器端存储的文件路径信息,外部调用者可以通过此方法获取到文件的存储路径字符串,用于后续可能的文件访问、下载等操作,比如在前端页面展示文件链接供用户下载等场景。
public String getFilePath() {
return filePath;
}
// 设置上传文件在服务器端存储的文件路径信息,在文件上传成功并确定其在服务器上的存储位置后,通过此方法将文件路径字符串传入,更新文件路径属性,以便后续能准确获取到该文件的存储位置信息。
public void setFilePath(String filePath) {
this.filePath = filePath;
}
// 获取上传文件所在的域名信息,外部调用者调用此方法能得到文件所属的域名字符串,在涉及多域名文件存储或者需要明确文件来源域名等场景下有重要作用,例如根据域名进行不同的资源访问配置等操作。
public String getFileDomain() {
return fileDomain;
}
// 设置上传文件所在的域名信息,当确定文件存储的具体域名后,通过此方法将域名字符串传入,更新文件域名属性,方便后续获取和使用该域名相关信息。
public void setFileDomain(String fileDomain) {
this.fileDomain = fileDomain;
}
}

@ -8,9 +8,23 @@ import javax.xml.parsers.DocumentBuilderFactory;
import org.w3c.dom.Document;
// XMLConfiguration类主要用于读取XML配置文件并将其解析为可操作的Document对象方便后续对XML配置内容进行访问和处理提供了从文件路径以及输入流两种方式读取XML配置文件的功能。
public class XMLConfiguration {
// 用于存储解析后的XML文档对象初始值为null在成功调用读取配置文件的方法并解析成功后会存放对应的Document对象代表整个XML文档的树形结构可用于后续的节点查询、数据提取等操作。
private Document document = null;
/**
* XMLDocument
* `DocumentBuilderFactory.newInstance()``DocumentBuilderFactory``DocumentBuilder`XML
* `try`使`dbf.newDocumentBuilder()``DocumentBuilder`XML
* `db.parse(configFilename)``configFilename`XML`Document``document`
* `IOException`XML
* `document``null``false``document``null``true`
*
* @param configFilename XML "/path/to/config.xml"
* @return XML`Document``true``document``null``false`
*/
public boolean readConfigFile(String configFilename) {
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
try {
@ -27,6 +41,17 @@ public class XMLConfiguration {
return true;
}
/**
* `InputStream`XMLDocument
* `DocumentBuilderFactory.newInstance()``DocumentBuilderFactory`
* `try``dbf.newDocumentBuilder()``DocumentBuilder``db.parse(stream)``stream`XML`Document``document`
* `IOException`XML
* `document``null``null``false``null``true`XML`Document`
* XML
*
* @param stream XMLXMLXML
* @return XML`Document``true``document``null``false`
*/
public boolean readConfigFile(InputStream stream) {
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
try {
@ -43,11 +68,21 @@ public class XMLConfiguration {
return true;
}
/**
* XMLXML`Document`DOM APIXML
*
* @return XMLXML`null`
*/
public Document getDocument() {
return document;
}
/**
* XML`document`使XML
*
* @param document XML`Document``document`
*/
protected void setDocument(Document document) {
this.document = document;
}
}
}
Loading…
Cancel
Save