本帖最后由 骁垙 于 2026-2-4 16:12 编辑
可以在服务管理里面写一个接口, 在流程末尾放一个服务调用节点处理。不过我不习惯用 js 写接口, 自己写的模块提供接口服务
[JavaScript] 纯文本查看 复制代码 /********************
this.requestText // 请求正文
this.currentPerson // 当前用户
this.response // 响应对象,通过 this.response.setBody(data) 设置响应内容
this.org // 组织快速访问方法
********************/
var requestJson = JSON.parse(this.requestText);
var fun = requestJson.fun;
var data = requestJson.data || {};
var result = {};
var DriverManager = Java.type("java.sql.DriverManager");
var Class = Java.type("java.lang.Class");
var Timestamp = Java.type("java.sql.Timestamp");
var Date = Java.type("java.util.Date");
/**
* MySQL 连接信息(生产库)
*/
this.mysql = {
url: "jdbc:mysql://192.168.2.100:3306/prod_db?useUnicode=true&characterEncoding=utf8&useSSL=false&serverTimezone=UTC",
user: "prod_user",
password: "prod_pass"
};
/**
* 写入 MySQL
*/
this.saveToMysql = function(fun, keyword, rawJson) {
var conn = null;
var ps = null;
try {
Class.forName("com.mysql.cj.jdbc.Driver");
conn = DriverManager.getConnection(this.mysql.url, this.mysql.user, this.mysql.password);
var sql = "INSERT INTO api_request_log(user_token, fun, keyword, request_json, create_time) VALUES (?, ?, ?, ?, ?)";
ps = conn.prepareStatement(sql);
ps.setString(1, this.currentPerson.token);
ps.setString(2, fun);
ps.setString(3, keyword);
ps.setString(4, rawJson);
ps.setTimestamp(5, new Timestamp(new Date().getTime()));
ps.executeUpdate();
} finally {
if (ps !== null) ps.close();
if (conn !== null) conn.close();
}
};
/**
* 业务方法
*/
this.save = function() {
// 记录审计日志
this.saveToMysql(fun, keyword, JSON.stringify(requestJson));
result = {};
};
/**
* 统一入口
*/
try {
if (!this[fun]) {
throw new Error("方法不存在: " + fun);
}
this[fun]();
this.response.setBody(result, "application/json");
} catch (e) {
this.response.setBody(JSON.stringify({
success: false,
error: e.toString()
}), "application/json");
}
|