diff --git a/service/dingdanxia/mongo.go b/service/dingdanxia/mongo.go new file mode 100644 index 00000000..1bca1bc4 --- /dev/null +++ b/service/dingdanxia/mongo.go @@ -0,0 +1,24 @@ +package dingdanxia + +import ( + "go.dtapp.net/library/utils/dorm" + "go.dtapp.net/library/utils/golog" + "go.dtapp.net/library/utils/gorequest" +) + +func (c *Client) mongoLog(request gorequest.Response) { + c.log.MongoRecord(golog.ApiMongoLog{ + RequestTime: dorm.BsonTime(request.RequestTime), //【请求】时间 + RequestUri: request.RequestUri, //【请求】链接 + RequestUrl: gorequest.UriParse(request.RequestUri).Url, //【请求】链接 + RequestApi: gorequest.UriParse(request.RequestUri).Path, //【请求】接口 + RequestMethod: request.RequestMethod, //【请求】方式 + RequestParams: request.RequestParams, //【请求】参数 + RequestHeader: request.RequestHeader, //【请求】头部 + ResponseHeader: request.ResponseHeader, //【返回】头部 + ResponseStatusCode: request.ResponseStatusCode, //【返回】状态码 + ResponseBody: request.ResponseBody, //【返回】内容 + ResponseContentLength: request.ResponseContentLength, //【返回】大小 + ResponseTime: dorm.BsonTime(request.ResponseTime), //【返回】时间 + }) +} diff --git a/service/dingdanxia/pgsql.go b/service/dingdanxia/pgsql.go index e82af9b1..d44882a3 100644 --- a/service/dingdanxia/pgsql.go +++ b/service/dingdanxia/pgsql.go @@ -9,7 +9,7 @@ import ( // 记录日志 func (c *Client) postgresqlLog(request gorequest.Response) { - c.log.Record(golog.ApiPostgresqlLog{ + c.log.GormRecord(golog.ApiPostgresqlLog{ RequestTime: golog.TimeString{Time: request.RequestTime}, //【请求】时间 RequestUri: request.RequestUri, //【请求】链接 RequestUrl: gorequest.UriParse(request.RequestUri).Url, //【请求】链接 diff --git a/service/dingtalk/mongo.go b/service/dingtalk/mongo.go new file mode 100644 index 00000000..a390db4d --- /dev/null +++ b/service/dingtalk/mongo.go @@ -0,0 +1,24 @@ +package dingtalk + +import ( + "go.dtapp.net/library/utils/dorm" + "go.dtapp.net/library/utils/golog" + "go.dtapp.net/library/utils/gorequest" +) + +func (c *Client) mongoLog(request gorequest.Response) { + c.log.MongoRecord(golog.ApiMongoLog{ + RequestTime: dorm.BsonTime(request.RequestTime), //【请求】时间 + RequestUri: request.RequestUri, //【请求】链接 + RequestUrl: gorequest.UriParse(request.RequestUri).Url, //【请求】链接 + RequestApi: gorequest.UriParse(request.RequestUri).Path, //【请求】接口 + RequestMethod: request.RequestMethod, //【请求】方式 + RequestParams: request.RequestParams, //【请求】参数 + RequestHeader: request.RequestHeader, //【请求】头部 + ResponseHeader: request.ResponseHeader, //【返回】头部 + ResponseStatusCode: request.ResponseStatusCode, //【返回】状态码 + ResponseBody: request.ResponseBody, //【返回】内容 + ResponseContentLength: request.ResponseContentLength, //【返回】大小 + ResponseTime: dorm.BsonTime(request.ResponseTime), //【返回】时间 + }) +} diff --git a/service/dingtalk/pgsql.go b/service/dingtalk/pgsql.go index 4b877eb3..0678002f 100644 --- a/service/dingtalk/pgsql.go +++ b/service/dingtalk/pgsql.go @@ -9,7 +9,7 @@ import ( // 记录日志 func (c *Client) postgresqlLog(request gorequest.Response) { - c.log.Record(golog.ApiPostgresqlLog{ + c.log.GormRecord(golog.ApiPostgresqlLog{ RequestTime: golog.TimeString{Time: request.RequestTime}, //【请求】时间 RequestUri: request.RequestUri, //【请求】链接 RequestUrl: gorequest.UriParse(request.RequestUri).Url, //【请求】链接 diff --git a/service/douyin/mongo.go b/service/douyin/mongo.go new file mode 100644 index 00000000..ffba4dc7 --- /dev/null +++ b/service/douyin/mongo.go @@ -0,0 +1,24 @@ +package douyin + +import ( + "go.dtapp.net/library/utils/dorm" + "go.dtapp.net/library/utils/golog" + "go.dtapp.net/library/utils/gorequest" +) + +func (c *Client) mongoLog(request gorequest.Response) { + c.log.MongoRecord(golog.ApiMongoLog{ + RequestTime: dorm.BsonTime(request.RequestTime), //【请求】时间 + RequestUri: request.RequestUri, //【请求】链接 + RequestUrl: gorequest.UriParse(request.RequestUri).Url, //【请求】链接 + RequestApi: gorequest.UriParse(request.RequestUri).Path, //【请求】接口 + RequestMethod: request.RequestMethod, //【请求】方式 + RequestParams: request.RequestParams, //【请求】参数 + RequestHeader: request.RequestHeader, //【请求】头部 + ResponseHeader: request.ResponseHeader, //【返回】头部 + ResponseStatusCode: request.ResponseStatusCode, //【返回】状态码 + ResponseBody: request.ResponseBody, //【返回】内容 + ResponseContentLength: request.ResponseContentLength, //【返回】大小 + ResponseTime: dorm.BsonTime(request.ResponseTime), //【返回】时间 + }) +} diff --git a/service/douyin/pgsql.go b/service/douyin/pgsql.go index a208999d..5f79ef0e 100644 --- a/service/douyin/pgsql.go +++ b/service/douyin/pgsql.go @@ -9,7 +9,7 @@ import ( // 记录日志 func (c *Client) postgresqlLog(request gorequest.Response) { - c.log.Record(golog.ApiPostgresqlLog{ + c.log.GormRecord(golog.ApiPostgresqlLog{ RequestTime: golog.TimeString{Time: request.RequestTime}, //【请求】时间 RequestUri: request.RequestUri, //【请求】链接 RequestUrl: gorequest.UriParse(request.RequestUri).Url, //【请求】链接 diff --git a/service/eastiot/mongo.go b/service/eastiot/mongo.go new file mode 100644 index 00000000..0329f18f --- /dev/null +++ b/service/eastiot/mongo.go @@ -0,0 +1,24 @@ +package eastiot + +import ( + "go.dtapp.net/library/utils/dorm" + "go.dtapp.net/library/utils/golog" + "go.dtapp.net/library/utils/gorequest" +) + +func (c *Client) mongoLog(request gorequest.Response) { + c.log.MongoRecord(golog.ApiMongoLog{ + RequestTime: dorm.BsonTime(request.RequestTime), //【请求】时间 + RequestUri: request.RequestUri, //【请求】链接 + RequestUrl: gorequest.UriParse(request.RequestUri).Url, //【请求】链接 + RequestApi: gorequest.UriParse(request.RequestUri).Path, //【请求】接口 + RequestMethod: request.RequestMethod, //【请求】方式 + RequestParams: request.RequestParams, //【请求】参数 + RequestHeader: request.RequestHeader, //【请求】头部 + ResponseHeader: request.ResponseHeader, //【返回】头部 + ResponseStatusCode: request.ResponseStatusCode, //【返回】状态码 + ResponseBody: request.ResponseBody, //【返回】内容 + ResponseContentLength: request.ResponseContentLength, //【返回】大小 + ResponseTime: dorm.BsonTime(request.ResponseTime), //【返回】时间 + }) +} diff --git a/service/eastiot/pgsql.go b/service/eastiot/pgsql.go index ed9ead99..9f6857ff 100644 --- a/service/eastiot/pgsql.go +++ b/service/eastiot/pgsql.go @@ -9,7 +9,7 @@ import ( // 记录日志 func (c *Client) postgresqlLog(request gorequest.Response) { - c.log.Record(golog.ApiPostgresqlLog{ + c.log.GormRecord(golog.ApiPostgresqlLog{ RequestTime: golog.TimeString{Time: request.RequestTime}, //【请求】时间 RequestUri: request.RequestUri, //【请求】链接 RequestUrl: gorequest.UriParse(request.RequestUri).Url, //【请求】链接 diff --git a/service/ejiaofei/mongo.go b/service/ejiaofei/mongo.go new file mode 100644 index 00000000..709a9789 --- /dev/null +++ b/service/ejiaofei/mongo.go @@ -0,0 +1,24 @@ +package ejiaofei + +import ( + "go.dtapp.net/library/utils/dorm" + "go.dtapp.net/library/utils/golog" + "go.dtapp.net/library/utils/gorequest" +) + +func (c *Client) mongoLog(request gorequest.Response) { + c.log.MongoRecord(golog.ApiMongoLog{ + RequestTime: dorm.BsonTime(request.RequestTime), //【请求】时间 + RequestUri: request.RequestUri, //【请求】链接 + RequestUrl: gorequest.UriParse(request.RequestUri).Url, //【请求】链接 + RequestApi: gorequest.UriParse(request.RequestUri).Path, //【请求】接口 + RequestMethod: request.RequestMethod, //【请求】方式 + RequestParams: request.RequestParams, //【请求】参数 + RequestHeader: request.RequestHeader, //【请求】头部 + ResponseHeader: request.ResponseHeader, //【返回】头部 + ResponseStatusCode: request.ResponseStatusCode, //【返回】状态码 + ResponseBody: dorm.XmlDecodeNoError(request.ResponseBody), //【返回】内容 + ResponseContentLength: request.ResponseContentLength, //【返回】大小 + ResponseTime: dorm.BsonTime(request.ResponseTime), //【返回】时间 + }) +} diff --git a/service/ejiaofei/pgsql.go b/service/ejiaofei/pgsql.go index 079367f5..b78e05e0 100644 --- a/service/ejiaofei/pgsql.go +++ b/service/ejiaofei/pgsql.go @@ -10,7 +10,7 @@ import ( // 记录日志 func (c *Client) postgresqlLog(request gorequest.Response) { - c.log.Record(golog.ApiPostgresqlLog{ + c.log.GormRecord(golog.ApiPostgresqlLog{ RequestTime: golog.TimeString{Time: request.RequestTime}, //【请求】时间 RequestUri: request.RequestUri, //【请求】链接 RequestUrl: gorequest.UriParse(request.RequestUri).Url, //【请求】链接 diff --git a/service/feishu/mongo.go b/service/feishu/mongo.go new file mode 100644 index 00000000..fdecfd4b --- /dev/null +++ b/service/feishu/mongo.go @@ -0,0 +1,24 @@ +package feishu + +import ( + "go.dtapp.net/library/utils/dorm" + "go.dtapp.net/library/utils/golog" + "go.dtapp.net/library/utils/gorequest" +) + +func (c *Client) mongoLog(request gorequest.Response) { + c.log.MongoRecord(golog.ApiMongoLog{ + RequestTime: dorm.BsonTime(request.RequestTime), //【请求】时间 + RequestUri: request.RequestUri, //【请求】链接 + RequestUrl: gorequest.UriParse(request.RequestUri).Url, //【请求】链接 + RequestApi: gorequest.UriParse(request.RequestUri).Path, //【请求】接口 + RequestMethod: request.RequestMethod, //【请求】方式 + RequestParams: request.RequestParams, //【请求】参数 + RequestHeader: request.RequestHeader, //【请求】头部 + ResponseHeader: request.ResponseHeader, //【返回】头部 + ResponseStatusCode: request.ResponseStatusCode, //【返回】状态码 + ResponseBody: request.ResponseBody, //【返回】内容 + ResponseContentLength: request.ResponseContentLength, //【返回】大小 + ResponseTime: dorm.BsonTime(request.ResponseTime), //【返回】时间 + }) +} diff --git a/service/feishu/pgsql.go b/service/feishu/pgsql.go index cf11bb62..230c6bcc 100644 --- a/service/feishu/pgsql.go +++ b/service/feishu/pgsql.go @@ -9,7 +9,7 @@ import ( // 记录日志 func (c *Client) postgresqlLog(request gorequest.Response) { - c.log.Record(golog.ApiPostgresqlLog{ + c.log.GormRecord(golog.ApiPostgresqlLog{ RequestTime: golog.TimeString{Time: request.RequestTime}, //【请求】时间 RequestUri: request.RequestUri, //【请求】链接 RequestUrl: gorequest.UriParse(request.RequestUri).Url, //【请求】链接 diff --git a/service/jd/mongo.go b/service/jd/mongo.go new file mode 100644 index 00000000..bbc6d99d --- /dev/null +++ b/service/jd/mongo.go @@ -0,0 +1,24 @@ +package jd + +import ( + "go.dtapp.net/library/utils/dorm" + "go.dtapp.net/library/utils/golog" + "go.dtapp.net/library/utils/gorequest" +) + +func (c *Client) mongoLog(api string, request gorequest.Response) { + c.log.MongoRecord(golog.ApiMongoLog{ + RequestTime: dorm.BsonTime(request.RequestTime), //【请求】时间 + RequestUri: request.RequestUri, //【请求】链接 + RequestUrl: gorequest.UriParse(request.RequestUri).Url, //【请求】链接 + RequestApi: api, //【请求】接口 + RequestMethod: request.RequestMethod, //【请求】方式 + RequestParams: request.RequestParams, //【请求】参数 + RequestHeader: request.RequestHeader, //【请求】头部 + ResponseHeader: request.ResponseHeader, //【返回】头部 + ResponseStatusCode: request.ResponseStatusCode, //【返回】状态码 + ResponseBody: request.ResponseBody, //【返回】内容 + ResponseContentLength: request.ResponseContentLength, //【返回】大小 + ResponseTime: dorm.BsonTime(request.ResponseTime), //【返回】时间 + }) +} diff --git a/service/jd/pgsql.go b/service/jd/pgsql.go index eb38abf4..01546c24 100644 --- a/service/jd/pgsql.go +++ b/service/jd/pgsql.go @@ -9,7 +9,7 @@ import ( // 记录日志 func (c *Client) postgresqlLog(api string, request gorequest.Response) { - c.log.Record(golog.ApiPostgresqlLog{ + c.log.GormRecord(golog.ApiPostgresqlLog{ RequestTime: golog.TimeString{Time: request.RequestTime}, //【请求】时间 RequestUri: request.RequestUri, //【请求】链接 RequestUrl: gorequest.UriParse(request.RequestUri).Url, //【请求】链接 diff --git a/service/kashangwl/mongo.go b/service/kashangwl/mongo.go new file mode 100644 index 00000000..e05108a6 --- /dev/null +++ b/service/kashangwl/mongo.go @@ -0,0 +1,24 @@ +package kashangwl + +import ( + "go.dtapp.net/library/utils/dorm" + "go.dtapp.net/library/utils/golog" + "go.dtapp.net/library/utils/gorequest" +) + +func (c *Client) mongoLog(request gorequest.Response) { + c.log.MongoRecord(golog.ApiMongoLog{ + RequestTime: dorm.BsonTime(request.RequestTime), //【请求】时间 + RequestUri: request.RequestUri, //【请求】链接 + RequestUrl: gorequest.UriParse(request.RequestUri).Url, //【请求】链接 + RequestApi: gorequest.UriParse(request.RequestUri).Path, //【请求】接口 + RequestMethod: request.RequestMethod, //【请求】方式 + RequestParams: request.RequestParams, //【请求】参数 + RequestHeader: request.RequestHeader, //【请求】头部 + ResponseHeader: request.ResponseHeader, //【返回】头部 + ResponseStatusCode: request.ResponseStatusCode, //【返回】状态码 + ResponseBody: request.ResponseBody, //【返回】内容 + ResponseContentLength: request.ResponseContentLength, //【返回】大小 + ResponseTime: dorm.BsonTime(request.ResponseTime), //【返回】时间 + }) +} diff --git a/service/kashangwl/pgsql.go b/service/kashangwl/pgsql.go index 6532faa6..c2d34b59 100644 --- a/service/kashangwl/pgsql.go +++ b/service/kashangwl/pgsql.go @@ -9,7 +9,7 @@ import ( // 记录日志 func (c *Client) postgresqlLog(request gorequest.Response) { - c.log.Record(golog.ApiPostgresqlLog{ + c.log.GormRecord(golog.ApiPostgresqlLog{ RequestTime: golog.TimeString{Time: request.RequestTime}, //【请求】时间 RequestUri: request.RequestUri, //【请求】链接 RequestUrl: gorequest.UriParse(request.RequestUri).Url, //【请求】链接 diff --git a/service/kuaishou/mongo.go b/service/kuaishou/mongo.go index 1b4dbbe3..773370ae 100644 --- a/service/kuaishou/mongo.go +++ b/service/kuaishou/mongo.go @@ -2,47 +2,23 @@ package kuaishou import ( "go.dtapp.net/library/utils/dorm" + "go.dtapp.net/library/utils/golog" "go.dtapp.net/library/utils/gorequest" - "net/http" ) -// 日志 -type mongoZap struct { - RequestTime dorm.BsonTime `json:"request_time" bson:"request_time"` //【请求】时间 - RequestUri string `json:"request_uri" bson:"request_uri"` //【请求】链接 - RequestUrl string `json:"request_url" bson:"request_url"` //【请求】链接 - RequestApi string `json:"request_api" bson:"request_api"` //【请求】接口 - RequestMethod string `json:"request_method" bson:"request_method"` //【请求】方式 - RequestParams gorequest.Params `json:"request_params" bson:"request_params"` //【请求】参数 - RequestHeader gorequest.Headers `json:"request_header" bson:"request_header"` //【请求】头部 - ResponseHeader http.Header `json:"response_header" bson:"response_header"` //【返回】头部 - ResponseStatusCode int `json:"response_status_code" bson:"response_status_code"` //【返回】状态码 - ResponseBody map[string]interface{} `json:"response_body" bson:"response_body"` //【返回】内容 - ResponseContentLength int64 `json:"response_content_length" bson:"response_content_length"` //【返回】大小 - ResponseTime dorm.BsonTime `json:"response_time" bson:"response_time"` //【返回】时间 -} - -func (m *mongoZap) Database() string { - return "zap_log" -} - -func (m *mongoZap) TableName() string { - return "kuaishou" -} - func (c *Client) mongoLog(request gorequest.Response) { - _, _ = c.config.MongoDb.Model(&mongoZap{}).InsertOne(mongoZap{ - RequestTime: dorm.BsonTime(request.RequestTime), //【请求】时间 - RequestUri: request.RequestUri, //【请求】链接 - RequestUrl: gorequest.UriParse(request.RequestUri).Url, //【请求】链接 - RequestApi: gorequest.UriParse(request.RequestUri).Path, //【请求】接口 - RequestMethod: request.RequestMethod, //【请求】方式 - RequestParams: request.RequestParams, //【请求】参数 - RequestHeader: request.RequestHeader, //【请求】头部 - ResponseHeader: request.ResponseHeader, //【返回】头部 - ResponseStatusCode: request.ResponseStatusCode, //【返回】状态码 - ResponseBody: dorm.JsonDecodeNoError(request.ResponseBody), //【返回】内容 - ResponseContentLength: request.ResponseContentLength, //【返回】大小 - ResponseTime: dorm.BsonTime(request.ResponseTime), //【返回】时间 + c.log.MongoRecord(golog.ApiMongoLog{ + RequestTime: dorm.BsonTime(request.RequestTime), //【请求】时间 + RequestUri: request.RequestUri, //【请求】链接 + RequestUrl: gorequest.UriParse(request.RequestUri).Url, //【请求】链接 + RequestApi: gorequest.UriParse(request.RequestUri).Path, //【请求】接口 + RequestMethod: request.RequestMethod, //【请求】方式 + RequestParams: request.RequestParams, //【请求】参数 + RequestHeader: request.RequestHeader, //【请求】头部 + ResponseHeader: request.ResponseHeader, //【返回】头部 + ResponseStatusCode: request.ResponseStatusCode, //【返回】状态码 + ResponseBody: request.ResponseBody, //【返回】内容 + ResponseContentLength: request.ResponseContentLength, //【返回】大小 + ResponseTime: dorm.BsonTime(request.ResponseTime), //【返回】时间 }) } diff --git a/service/kuaishou/pgsql.go b/service/kuaishou/pgsql.go index cdf62175..785a24d7 100644 --- a/service/kuaishou/pgsql.go +++ b/service/kuaishou/pgsql.go @@ -9,7 +9,7 @@ import ( // 记录日志 func (c *Client) postgresqlLog(request gorequest.Response) { - c.log.Record(golog.ApiPostgresqlLog{ + c.log.GormRecord(golog.ApiPostgresqlLog{ RequestTime: golog.TimeString{Time: request.RequestTime}, //【请求】时间 RequestUri: request.RequestUri, //【请求】链接 RequestUrl: gorequest.UriParse(request.RequestUri).Url, //【请求】链接 diff --git a/service/leshuazf/mongo.go b/service/leshuazf/mongo.go index 5124f3d1..a899ab0a 100644 --- a/service/leshuazf/mongo.go +++ b/service/leshuazf/mongo.go @@ -2,47 +2,23 @@ package leshuazf import ( "go.dtapp.net/library/utils/dorm" + "go.dtapp.net/library/utils/golog" "go.dtapp.net/library/utils/gorequest" - "net/http" ) -// 日志 -type mongoZap struct { - RequestTime dorm.BsonTime `json:"request_time" bson:"request_time"` //【请求】时间 - RequestUri string `json:"request_uri" bson:"request_uri"` //【请求】链接 - RequestUrl string `json:"request_url" bson:"request_url"` //【请求】链接 - RequestApi string `json:"request_api" bson:"request_api"` //【请求】接口 - RequestMethod string `json:"request_method" bson:"request_method"` //【请求】方式 - RequestParams gorequest.Params `json:"request_params" bson:"request_params"` //【请求】参数 - RequestHeader gorequest.Headers `json:"request_header" bson:"request_header"` //【请求】头部 - ResponseHeader http.Header `json:"response_header" bson:"response_header"` //【返回】头部 - ResponseStatusCode int `json:"response_status_code" bson:"response_status_code"` //【返回】状态码 - ResponseBody map[string]interface{} `json:"response_body" bson:"response_body"` //【返回】内容 - ResponseContentLength int64 `json:"response_content_length" bson:"response_content_length"` //【返回】大小 - ResponseTime dorm.BsonTime `json:"response_time" bson:"response_time"` //【返回】时间 -} - -func (m *mongoZap) Database() string { - return "zap_log" -} - -func (m *mongoZap) TableName() string { - return "leshuazf" -} - func (c *Client) mongoLog(request gorequest.Response) { - _, _ = c.config.MongoDb.Model(&mongoZap{}).InsertOne(mongoZap{ - RequestTime: dorm.BsonTime(request.RequestTime), //【请求】时间 - RequestUri: request.RequestUri, //【请求】链接 - RequestUrl: gorequest.UriParse(request.RequestUri).Url, //【请求】链接 - RequestApi: gorequest.UriParse(request.RequestUri).Path, //【请求】接口 - RequestMethod: request.RequestMethod, //【请求】方式 - RequestParams: request.RequestParams, //【请求】参数 - RequestHeader: request.RequestHeader, //【请求】头部 - ResponseHeader: request.ResponseHeader, //【返回】头部 - ResponseStatusCode: request.ResponseStatusCode, //【返回】状态码 - ResponseBody: dorm.JsonDecodeNoError(request.ResponseBody), //【返回】内容 - ResponseContentLength: request.ResponseContentLength, //【返回】大小 - ResponseTime: dorm.BsonTime(request.ResponseTime), //【返回】时间 + c.log.MongoRecord(golog.ApiMongoLog{ + RequestTime: dorm.BsonTime(request.RequestTime), //【请求】时间 + RequestUri: request.RequestUri, //【请求】链接 + RequestUrl: gorequest.UriParse(request.RequestUri).Url, //【请求】链接 + RequestApi: gorequest.UriParse(request.RequestUri).Path, //【请求】接口 + RequestMethod: request.RequestMethod, //【请求】方式 + RequestParams: request.RequestParams, //【请求】参数 + RequestHeader: request.RequestHeader, //【请求】头部 + ResponseHeader: request.ResponseHeader, //【返回】头部 + ResponseStatusCode: request.ResponseStatusCode, //【返回】状态码 + ResponseBody: request.ResponseBody, //【返回】内容 + ResponseContentLength: request.ResponseContentLength, //【返回】大小 + ResponseTime: dorm.BsonTime(request.ResponseTime), //【返回】时间 }) } diff --git a/service/leshuazf/pgsql.go b/service/leshuazf/pgsql.go index b61a2e82..8e2544a2 100644 --- a/service/leshuazf/pgsql.go +++ b/service/leshuazf/pgsql.go @@ -9,7 +9,7 @@ import ( // 记录日志 func (c *Client) postgresqlLog(request gorequest.Response) { - c.log.Record(golog.ApiPostgresqlLog{ + c.log.GormRecord(golog.ApiPostgresqlLog{ RequestTime: golog.TimeString{Time: request.RequestTime}, //【请求】时间 RequestUri: request.RequestUri, //【请求】链接 RequestUrl: gorequest.UriParse(request.RequestUri).Url, //【请求】链接 diff --git a/service/meituan/mongo.go b/service/meituan/mongo.go new file mode 100644 index 00000000..437a34b6 --- /dev/null +++ b/service/meituan/mongo.go @@ -0,0 +1,24 @@ +package meituan + +import ( + "go.dtapp.net/library/utils/dorm" + "go.dtapp.net/library/utils/golog" + "go.dtapp.net/library/utils/gorequest" +) + +func (c *Client) mongoLog(request gorequest.Response) { + c.log.MongoRecord(golog.ApiMongoLog{ + RequestTime: dorm.BsonTime(request.RequestTime), //【请求】时间 + RequestUri: request.RequestUri, //【请求】链接 + RequestUrl: gorequest.UriParse(request.RequestUri).Url, //【请求】链接 + RequestApi: gorequest.UriParse(request.RequestUri).Path, //【请求】接口 + RequestMethod: request.RequestMethod, //【请求】方式 + RequestParams: request.RequestParams, //【请求】参数 + RequestHeader: request.RequestHeader, //【请求】头部 + ResponseHeader: request.ResponseHeader, //【返回】头部 + ResponseStatusCode: request.ResponseStatusCode, //【返回】状态码 + ResponseBody: request.ResponseBody, //【返回】内容 + ResponseContentLength: request.ResponseContentLength, //【返回】大小 + ResponseTime: dorm.BsonTime(request.ResponseTime), //【返回】时间 + }) +} diff --git a/service/meituan/pgsql.go b/service/meituan/pgsql.go index 6b2049cd..24138bb1 100644 --- a/service/meituan/pgsql.go +++ b/service/meituan/pgsql.go @@ -9,7 +9,7 @@ import ( // 记录日志 func (c *Client) postgresqlLog(request gorequest.Response) { - c.log.Record(golog.ApiPostgresqlLog{ + c.log.GormRecord(golog.ApiPostgresqlLog{ RequestTime: golog.TimeString{Time: request.RequestTime}, //【请求】时间 RequestUri: request.RequestUri, //【请求】链接 RequestUrl: gorequest.UriParse(request.RequestUri).Url, //【请求】链接 diff --git a/service/pconline/mongo.go b/service/pconline/mongo.go index 0b917a7f..76e577c7 100644 --- a/service/pconline/mongo.go +++ b/service/pconline/mongo.go @@ -2,47 +2,23 @@ package pconline import ( "go.dtapp.net/library/utils/dorm" + "go.dtapp.net/library/utils/golog" "go.dtapp.net/library/utils/gorequest" - "net/http" ) -// 日志 -type mongoZap struct { - RequestTime dorm.BsonTime `json:"request_time" bson:"request_time"` //【请求】时间 - RequestUri string `json:"request_uri" bson:"request_uri"` //【请求】链接 - RequestUrl string `json:"request_url" bson:"request_url"` //【请求】链接 - RequestApi string `json:"request_api" bson:"request_api"` //【请求】接口 - RequestMethod string `json:"request_method" bson:"request_method"` //【请求】方式 - RequestParams gorequest.Params `json:"request_params" bson:"request_params"` //【请求】参数 - RequestHeader gorequest.Headers `json:"request_header" bson:"request_header"` //【请求】头部 - ResponseHeader http.Header `json:"response_header" bson:"response_header"` //【返回】头部 - ResponseStatusCode int `json:"response_status_code" bson:"response_status_code"` //【返回】状态码 - ResponseBody map[string]interface{} `json:"response_body" bson:"response_body"` //【返回】内容 - ResponseContentLength int64 `json:"response_content_length" bson:"response_content_length"` //【返回】大小 - ResponseTime dorm.BsonTime `json:"response_time" bson:"response_time"` //【返回】时间 -} - -func (m *mongoZap) Database() string { - return "zap_log" -} - -func (m *mongoZap) TableName() string { - return "pconline" -} - func (c *Client) mongoLog(request gorequest.Response) { - _, _ = c.config.MongoDb.Model(&mongoZap{}).InsertOne(mongoZap{ - RequestTime: dorm.BsonTime(request.RequestTime), //【请求】时间 - RequestUri: request.RequestUri, //【请求】链接 - RequestUrl: gorequest.UriParse(request.RequestUri).Url, //【请求】链接 - RequestApi: gorequest.UriParse(request.RequestUri).Path, //【请求】接口 - RequestMethod: request.RequestMethod, //【请求】方式 - RequestParams: request.RequestParams, //【请求】参数 - RequestHeader: request.RequestHeader, //【请求】头部 - ResponseHeader: request.ResponseHeader, //【返回】头部 - ResponseStatusCode: request.ResponseStatusCode, //【返回】状态码 - ResponseBody: dorm.JsonDecodeNoError(request.ResponseBody), //【返回】内容 - ResponseContentLength: request.ResponseContentLength, //【返回】大小 - ResponseTime: dorm.BsonTime(request.ResponseTime), //【返回】时间 + c.log.MongoRecord(golog.ApiMongoLog{ + RequestTime: dorm.BsonTime(request.RequestTime), //【请求】时间 + RequestUri: request.RequestUri, //【请求】链接 + RequestUrl: gorequest.UriParse(request.RequestUri).Url, //【请求】链接 + RequestApi: gorequest.UriParse(request.RequestUri).Path, //【请求】接口 + RequestMethod: request.RequestMethod, //【请求】方式 + RequestParams: request.RequestParams, //【请求】参数 + RequestHeader: request.RequestHeader, //【请求】头部 + ResponseHeader: request.ResponseHeader, //【返回】头部 + ResponseStatusCode: request.ResponseStatusCode, //【返回】状态码 + ResponseBody: request.ResponseBody, //【返回】内容 + ResponseContentLength: request.ResponseContentLength, //【返回】大小 + ResponseTime: dorm.BsonTime(request.ResponseTime), //【返回】时间 }) } diff --git a/service/pconline/pgsql.go b/service/pconline/pgsql.go index 37f1a0e7..df42fdda 100644 --- a/service/pconline/pgsql.go +++ b/service/pconline/pgsql.go @@ -9,7 +9,7 @@ import ( // 记录日志 func (c *Client) postgresqlLog(request gorequest.Response) { - c.log.Record(golog.ApiPostgresqlLog{ + c.log.GormRecord(golog.ApiPostgresqlLog{ RequestTime: golog.TimeString{Time: request.RequestTime}, //【请求】时间 RequestUri: request.RequestUri, //【请求】链接 RequestUrl: gorequest.UriParse(request.RequestUri).Url, //【请求】链接 diff --git a/service/pinduoduo/mongo.go b/service/pinduoduo/mongo.go new file mode 100644 index 00000000..8ab2b131 --- /dev/null +++ b/service/pinduoduo/mongo.go @@ -0,0 +1,24 @@ +package pinduoduo + +import ( + "go.dtapp.net/library/utils/dorm" + "go.dtapp.net/library/utils/golog" + "go.dtapp.net/library/utils/gorequest" +) + +func (c *Client) mongoLog(api string, request gorequest.Response) { + c.log.MongoRecord(golog.ApiMongoLog{ + RequestTime: dorm.BsonTime(request.RequestTime), //【请求】时间 + RequestUri: request.RequestUri, //【请求】链接 + RequestUrl: gorequest.UriParse(request.RequestUri).Url, //【请求】链接 + RequestApi: api, //【请求】接口 + RequestMethod: request.RequestMethod, //【请求】方式 + RequestParams: request.RequestParams, //【请求】参数 + RequestHeader: request.RequestHeader, //【请求】头部 + ResponseHeader: request.ResponseHeader, //【返回】头部 + ResponseStatusCode: request.ResponseStatusCode, //【返回】状态码 + ResponseBody: request.ResponseBody, //【返回】内容 + ResponseContentLength: request.ResponseContentLength, //【返回】大小 + ResponseTime: dorm.BsonTime(request.ResponseTime), //【返回】时间 + }) +} diff --git a/service/pinduoduo/pgsql.go b/service/pinduoduo/pgsql.go index 93ee1e42..94f84a8b 100644 --- a/service/pinduoduo/pgsql.go +++ b/service/pinduoduo/pgsql.go @@ -9,7 +9,7 @@ import ( // 记录日志 func (c *Client) postgresqlLog(api string, request gorequest.Response) { - c.log.Record(golog.ApiPostgresqlLog{ + c.log.GormRecord(golog.ApiPostgresqlLog{ RequestTime: golog.TimeString{Time: request.RequestTime}, //【请求】时间 RequestUri: request.RequestUri, //【请求】链接 RequestUrl: gorequest.UriParse(request.RequestUri).Url, //【请求】链接 diff --git a/service/pintoto/mongo.go b/service/pintoto/mongo.go new file mode 100644 index 00000000..1fe7de13 --- /dev/null +++ b/service/pintoto/mongo.go @@ -0,0 +1,24 @@ +package pintoto + +import ( + "go.dtapp.net/library/utils/dorm" + "go.dtapp.net/library/utils/golog" + "go.dtapp.net/library/utils/gorequest" +) + +func (c *Client) mongoLog(request gorequest.Response) { + c.log.MongoRecord(golog.ApiMongoLog{ + RequestTime: dorm.BsonTime(request.RequestTime), //【请求】时间 + RequestUri: request.RequestUri, //【请求】链接 + RequestUrl: gorequest.UriParse(request.RequestUri).Url, //【请求】链接 + RequestApi: gorequest.UriParse(request.RequestUri).Path, //【请求】接口 + RequestMethod: request.RequestMethod, //【请求】方式 + RequestParams: request.RequestParams, //【请求】参数 + RequestHeader: request.RequestHeader, //【请求】头部 + ResponseHeader: request.ResponseHeader, //【返回】头部 + ResponseStatusCode: request.ResponseStatusCode, //【返回】状态码 + ResponseBody: request.ResponseBody, //【返回】内容 + ResponseContentLength: request.ResponseContentLength, //【返回】大小 + ResponseTime: dorm.BsonTime(request.ResponseTime), //【返回】时间 + }) +} diff --git a/service/pintoto/pgsql.go b/service/pintoto/pgsql.go index 92ea2d86..28d5453c 100644 --- a/service/pintoto/pgsql.go +++ b/service/pintoto/pgsql.go @@ -9,7 +9,7 @@ import ( // 记录日志 func (c *Client) postgresqlLog(request gorequest.Response) { - c.log.Record(golog.ApiPostgresqlLog{ + c.log.GormRecord(golog.ApiPostgresqlLog{ RequestTime: golog.TimeString{Time: request.RequestTime}, //【请求】时间 RequestUri: request.RequestUri, //【请求】链接 RequestUrl: gorequest.UriParse(request.RequestUri).Url, //【请求】链接 diff --git a/service/sendcloud/mongo.go b/service/sendcloud/mongo.go new file mode 100644 index 00000000..b49e8b8e --- /dev/null +++ b/service/sendcloud/mongo.go @@ -0,0 +1,24 @@ +package sendcloud + +import ( + "go.dtapp.net/library/utils/dorm" + "go.dtapp.net/library/utils/golog" + "go.dtapp.net/library/utils/gorequest" +) + +func (c *Client) mongoLog(request gorequest.Response) { + c.log.MongoRecord(golog.ApiMongoLog{ + RequestTime: dorm.BsonTime(request.RequestTime), //【请求】时间 + RequestUri: request.RequestUri, //【请求】链接 + RequestUrl: gorequest.UriParse(request.RequestUri).Url, //【请求】链接 + RequestApi: gorequest.UriParse(request.RequestUri).Path, //【请求】接口 + RequestMethod: request.RequestMethod, //【请求】方式 + RequestParams: request.RequestParams, //【请求】参数 + RequestHeader: request.RequestHeader, //【请求】头部 + ResponseHeader: request.ResponseHeader, //【返回】头部 + ResponseStatusCode: request.ResponseStatusCode, //【返回】状态码 + ResponseBody: request.ResponseBody, //【返回】内容 + ResponseContentLength: request.ResponseContentLength, //【返回】大小 + ResponseTime: dorm.BsonTime(request.ResponseTime), //【返回】时间 + }) +} diff --git a/service/sendcloud/pgsql.go b/service/sendcloud/pgsql.go index 7a0b1cac..f216468c 100644 --- a/service/sendcloud/pgsql.go +++ b/service/sendcloud/pgsql.go @@ -9,7 +9,7 @@ import ( // 记录日志 func (c *Client) postgresqlLog(request gorequest.Response) { - c.log.Record(golog.ApiPostgresqlLog{ + c.log.GormRecord(golog.ApiPostgresqlLog{ RequestTime: golog.TimeString{Time: request.RequestTime}, //【请求】时间 RequestUri: request.RequestUri, //【请求】链接 RequestUrl: gorequest.UriParse(request.RequestUri).Url, //【请求】链接 diff --git a/service/taobao/mongo.go b/service/taobao/mongo.go new file mode 100644 index 00000000..ea098c56 --- /dev/null +++ b/service/taobao/mongo.go @@ -0,0 +1,24 @@ +package taobao + +import ( + "go.dtapp.net/library/utils/dorm" + "go.dtapp.net/library/utils/golog" + "go.dtapp.net/library/utils/gorequest" +) + +func (c *Client) mongoLog(api string, request gorequest.Response) { + c.log.MongoRecord(golog.ApiMongoLog{ + RequestTime: dorm.BsonTime(request.RequestTime), //【请求】时间 + RequestUri: request.RequestUri, //【请求】链接 + RequestUrl: gorequest.UriParse(request.RequestUri).Url, //【请求】链接 + RequestApi: api, //【请求】接口 + RequestMethod: request.RequestMethod, //【请求】方式 + RequestParams: request.RequestParams, //【请求】参数 + RequestHeader: request.RequestHeader, //【请求】头部 + ResponseHeader: request.ResponseHeader, //【返回】头部 + ResponseStatusCode: request.ResponseStatusCode, //【返回】状态码 + ResponseBody: request.ResponseBody, //【返回】内容 + ResponseContentLength: request.ResponseContentLength, //【返回】大小 + ResponseTime: dorm.BsonTime(request.ResponseTime), //【返回】时间 + }) +} diff --git a/service/taobao/pgsql.go b/service/taobao/pgsql.go index 384f6e0b..f534360e 100644 --- a/service/taobao/pgsql.go +++ b/service/taobao/pgsql.go @@ -9,7 +9,7 @@ import ( // 记录日志 func (c *Client) postgresqlLog(api string, request gorequest.Response) { - c.log.Record(golog.ApiPostgresqlLog{ + c.log.GormRecord(golog.ApiPostgresqlLog{ RequestTime: golog.TimeString{Time: request.RequestTime}, //【请求】时间 RequestUri: request.RequestUri, //【请求】链接 RequestUrl: gorequest.UriParse(request.RequestUri).Url, //【请求】链接 diff --git a/service/wechatminiprogram/mongo.go b/service/wechatminiprogram/mongo.go new file mode 100644 index 00000000..48a939ed --- /dev/null +++ b/service/wechatminiprogram/mongo.go @@ -0,0 +1,24 @@ +package wechatminiprogram + +import ( + "go.dtapp.net/library/utils/dorm" + "go.dtapp.net/library/utils/golog" + "go.dtapp.net/library/utils/gorequest" +) + +func (c *Client) mongoLog(request gorequest.Response) { + c.log.MongoRecord(golog.ApiMongoLog{ + RequestTime: dorm.BsonTime(request.RequestTime), //【请求】时间 + RequestUri: request.RequestUri, //【请求】链接 + RequestUrl: gorequest.UriParse(request.RequestUri).Url, //【请求】链接 + RequestApi: gorequest.UriParse(request.RequestUri).Path, //【请求】接口 + RequestMethod: request.RequestMethod, //【请求】方式 + RequestParams: request.RequestParams, //【请求】参数 + RequestHeader: request.RequestHeader, //【请求】头部 + ResponseHeader: request.ResponseHeader, //【返回】头部 + ResponseStatusCode: request.ResponseStatusCode, //【返回】状态码 + ResponseBody: request.ResponseBody, //【返回】内容 + ResponseContentLength: request.ResponseContentLength, //【返回】大小 + ResponseTime: dorm.BsonTime(request.ResponseTime), //【返回】时间 + }) +} diff --git a/service/wechatminiprogram/pgsql.go b/service/wechatminiprogram/pgsql.go index b5e97a88..cbd87142 100644 --- a/service/wechatminiprogram/pgsql.go +++ b/service/wechatminiprogram/pgsql.go @@ -25,5 +25,5 @@ func (c *Client) postgresqlLog(request gorequest.Response) { } else { body.ResponseBody = request.ResponseBody //【返回】内容 } - c.log.Record(body) + c.log.GormRecord(body) } diff --git a/service/wechatoffice/mongo.go b/service/wechatoffice/mongo.go new file mode 100644 index 00000000..27637ecb --- /dev/null +++ b/service/wechatoffice/mongo.go @@ -0,0 +1,24 @@ +package wechatoffice + +import ( + "go.dtapp.net/library/utils/dorm" + "go.dtapp.net/library/utils/golog" + "go.dtapp.net/library/utils/gorequest" +) + +func (c *Client) mongoLog(request gorequest.Response) { + c.log.MongoRecord(golog.ApiMongoLog{ + RequestTime: dorm.BsonTime(request.RequestTime), //【请求】时间 + RequestUri: request.RequestUri, //【请求】链接 + RequestUrl: gorequest.UriParse(request.RequestUri).Url, //【请求】链接 + RequestApi: gorequest.UriParse(request.RequestUri).Path, //【请求】接口 + RequestMethod: request.RequestMethod, //【请求】方式 + RequestParams: request.RequestParams, //【请求】参数 + RequestHeader: request.RequestHeader, //【请求】头部 + ResponseHeader: request.ResponseHeader, //【返回】头部 + ResponseStatusCode: request.ResponseStatusCode, //【返回】状态码 + ResponseBody: request.ResponseBody, //【返回】内容 + ResponseContentLength: request.ResponseContentLength, //【返回】大小 + ResponseTime: dorm.BsonTime(request.ResponseTime), //【返回】时间 + }) +} diff --git a/service/wechatoffice/pgsql.go b/service/wechatoffice/pgsql.go index 6764fcc2..006a4100 100644 --- a/service/wechatoffice/pgsql.go +++ b/service/wechatoffice/pgsql.go @@ -9,7 +9,7 @@ import ( // 记录日志 func (c *Client) postgresqlLog(request gorequest.Response) { - c.log.Record(golog.ApiPostgresqlLog{ + c.log.GormRecord(golog.ApiPostgresqlLog{ RequestTime: golog.TimeString{Time: request.RequestTime}, //【请求】时间 RequestUri: request.RequestUri, //【请求】链接 RequestUrl: gorequest.UriParse(request.RequestUri).Url, //【请求】链接 diff --git a/service/wechatopen/mongo.go b/service/wechatopen/mongo.go new file mode 100644 index 00000000..6795d909 --- /dev/null +++ b/service/wechatopen/mongo.go @@ -0,0 +1,24 @@ +package wechatopen + +import ( + "go.dtapp.net/library/utils/dorm" + "go.dtapp.net/library/utils/golog" + "go.dtapp.net/library/utils/gorequest" +) + +func (c *Client) mongoLog(request gorequest.Response) { + c.log.MongoRecord(golog.ApiMongoLog{ + RequestTime: dorm.BsonTime(request.RequestTime), //【请求】时间 + RequestUri: request.RequestUri, //【请求】链接 + RequestUrl: gorequest.UriParse(request.RequestUri).Url, //【请求】链接 + RequestApi: gorequest.UriParse(request.RequestUri).Path, //【请求】接口 + RequestMethod: request.RequestMethod, //【请求】方式 + RequestParams: request.RequestParams, //【请求】参数 + RequestHeader: request.RequestHeader, //【请求】头部 + ResponseHeader: request.ResponseHeader, //【返回】头部 + ResponseStatusCode: request.ResponseStatusCode, //【返回】状态码 + ResponseBody: request.ResponseBody, //【返回】内容 + ResponseContentLength: request.ResponseContentLength, //【返回】大小 + ResponseTime: dorm.BsonTime(request.ResponseTime), //【返回】时间 + }) +} diff --git a/service/wechatopen/pgsql.go b/service/wechatopen/pgsql.go index 2080027b..3f7c7f68 100644 --- a/service/wechatopen/pgsql.go +++ b/service/wechatopen/pgsql.go @@ -9,7 +9,7 @@ import ( // 记录日志 func (c *Client) postgresqlLog(request gorequest.Response) { - c.log.Record(golog.ApiPostgresqlLog{ + c.log.GormRecord(golog.ApiPostgresqlLog{ RequestTime: golog.TimeString{Time: request.RequestTime}, //【请求】时间 RequestUri: request.RequestUri, //【请求】链接 RequestUrl: gorequest.UriParse(request.RequestUri).Url, //【请求】链接 diff --git a/service/wechatpayapiv2/mongo.go b/service/wechatpayapiv2/mongo.go new file mode 100644 index 00000000..3beddb35 --- /dev/null +++ b/service/wechatpayapiv2/mongo.go @@ -0,0 +1,24 @@ +package wechatpayapiv2 + +import ( + "go.dtapp.net/library/utils/dorm" + "go.dtapp.net/library/utils/golog" + "go.dtapp.net/library/utils/gorequest" +) + +func (c *Client) mongoLog(request gorequest.Response) { + c.log.MongoRecord(golog.ApiMongoLog{ + RequestTime: dorm.BsonTime(request.RequestTime), //【请求】时间 + RequestUri: request.RequestUri, //【请求】链接 + RequestUrl: gorequest.UriParse(request.RequestUri).Url, //【请求】链接 + RequestApi: gorequest.UriParse(request.RequestUri).Path, //【请求】接口 + RequestMethod: request.RequestMethod, //【请求】方式 + RequestParams: request.RequestParams, //【请求】参数 + RequestHeader: request.RequestHeader, //【请求】头部 + ResponseHeader: request.ResponseHeader, //【返回】头部 + ResponseStatusCode: request.ResponseStatusCode, //【返回】状态码 + ResponseBody: dorm.XmlDecodeNoError(request.ResponseBody), //【返回】内容 + ResponseContentLength: request.ResponseContentLength, //【返回】大小 + ResponseTime: dorm.BsonTime(request.ResponseTime), //【返回】时间 + }) +} diff --git a/service/wechatpayapiv2/mongodb.go b/service/wechatpayapiv2/mongodb.go deleted file mode 100644 index 883e6897..00000000 --- a/service/wechatpayapiv2/mongodb.go +++ /dev/null @@ -1,50 +0,0 @@ -package wechatpayapiv2 - -import ( - "go.dtapp.net/library/utils/gomongo" - "go.dtapp.net/library/utils/gorequest" - "net/http" -) - -// 日志 -type mongoZap struct { - RequestTime gomongo.BsonTime `json:"request_time" bson:"request_time"` //【请求】时间 - RequestUri string `json:"request_uri" bson:"request_uri"` //【请求】链接 - RequestUrl string `json:"request_url" bson:"request_url"` //【请求】链接 - RequestApi string `json:"request_api" bson:"request_api"` //【请求】接口 - RequestMethod string `json:"request_method" bson:"request_method"` //【请求】方式 - RequestParams gorequest.Params `json:"request_params" bson:"request_params"` //【请求】参数 - RequestHeader gorequest.Headers `json:"request_header" bson:"request_header"` //【请求】头部 - ResponseHeader http.Header `json:"response_header" bson:"response_header"` //【返回】头部 - ResponseStatusCode int `json:"response_status_code" bson:"response_status_code"` //【返回】状态码 - ResponseBody map[string]interface{} `json:"response_body" bson:"response_body"` //【返回】内容 - ResponseXml string `json:"response_xml" bson:"response_xml"` //【返回】内容 - ResponseContentLength int64 `json:"response_content_length" bson:"response_content_length"` //【返回】大小 - ResponseTime gomongo.BsonTime `json:"response_time" bson:"response_time"` //【返回】时间 -} - -func (m *mongoZap) Database() string { - return "zap_log" -} - -func (m *mongoZap) TableName() string { - return "wechatpayapiv2" -} - -func (c *Client) mongoLog(request gorequest.Response) { - _, _ = c.config.MongoDb.Model(&mongoZap{}).InsertOne(mongoZap{ - RequestTime: gomongo.BsonTime(request.RequestTime), //【请求】时间 - RequestUri: request.RequestUri, //【请求】链接 - RequestUrl: gorequest.UriParse(request.RequestUri).Url, //【请求】链接 - RequestApi: gorequest.UriParse(request.RequestUri).Path, //【请求】接口 - RequestMethod: request.RequestMethod, //【请求】方式 - RequestParams: request.RequestParams, //【请求】参数 - RequestHeader: request.RequestHeader, //【请求】头部 - ResponseHeader: request.ResponseHeader, //【返回】头部 - ResponseStatusCode: request.ResponseStatusCode, //【返回】状态码 - ResponseBody: gomongo.XmlDecodeNoError(request.ResponseBody), //【返回】内容 - ResponseXml: string(request.ResponseBody), //【返回】内容 - ResponseContentLength: request.ResponseContentLength, //【返回】大小 - ResponseTime: gomongo.BsonTime(request.ResponseTime), //【返回】时间 - }) -} diff --git a/service/wechatpayapiv2/pgsql.go b/service/wechatpayapiv2/pgsql.go index f1dd5a5a..9b16c9dd 100644 --- a/service/wechatpayapiv2/pgsql.go +++ b/service/wechatpayapiv2/pgsql.go @@ -10,7 +10,7 @@ import ( // 记录日志 func (c *Client) postgresqlLog(request gorequest.Response) { - c.log.Record(golog.ApiPostgresqlLog{ + c.log.GormRecord(golog.ApiPostgresqlLog{ RequestTime: golog.TimeString{Time: request.RequestTime}, //【请求】时间 RequestUri: request.RequestUri, //【请求】链接 RequestUrl: gorequest.UriParse(request.RequestUri).Url, //【请求】链接 diff --git a/service/wechatpayapiv3/mongo.go b/service/wechatpayapiv3/mongo.go index 39ec40c1..96842f5e 100644 --- a/service/wechatpayapiv3/mongo.go +++ b/service/wechatpayapiv3/mongo.go @@ -2,47 +2,23 @@ package wechatpayapiv3 import ( "go.dtapp.net/library/utils/dorm" + "go.dtapp.net/library/utils/golog" "go.dtapp.net/library/utils/gorequest" - "net/http" ) -// 日志 -type mongoZap struct { - RequestTime dorm.BsonTime `json:"request_time" bson:"request_time"` //【请求】时间 - RequestUri string `json:"request_uri" bson:"request_uri"` //【请求】链接 - RequestUrl string `json:"request_url" bson:"request_url"` //【请求】链接 - RequestApi string `json:"request_api" bson:"request_api"` //【请求】接口 - RequestMethod string `json:"request_method" bson:"request_method"` //【请求】方式 - RequestParams gorequest.Params `json:"request_params" bson:"request_params"` //【请求】参数 - RequestHeader gorequest.Headers `json:"request_header" bson:"request_header"` //【请求】头部 - ResponseHeader http.Header `json:"response_header" bson:"response_header"` //【返回】头部 - ResponseStatusCode int `json:"response_status_code" bson:"response_status_code"` //【返回】状态码 - ResponseBody map[string]interface{} `json:"response_body" bson:"response_body"` //【返回】内容 - ResponseContentLength int64 `json:"response_content_length" bson:"response_content_length"` //【返回】大小 - ResponseTime dorm.BsonTime `json:"response_time" bson:"response_time"` //【返回】时间 -} - -func (m *mongoZap) Database() string { - return "zap_log" -} - -func (m *mongoZap) TableName() string { - return "wechatpayapiv3" -} - func (c *Client) mongoLog(request gorequest.Response) { - _, _ = c.config.MongoDb.Model(&mongoZap{}).InsertOne(mongoZap{ - RequestTime: dorm.BsonTime(request.RequestTime), //【请求】时间 - RequestUri: request.RequestUri, //【请求】链接 - RequestUrl: gorequest.UriParse(request.RequestUri).Url, //【请求】链接 - RequestApi: gorequest.UriParse(request.RequestUri).Path, //【请求】接口 - RequestMethod: request.RequestMethod, //【请求】方式 - RequestParams: request.RequestParams, //【请求】参数 - RequestHeader: request.RequestHeader, //【请求】头部 - ResponseHeader: request.ResponseHeader, //【返回】头部 - ResponseStatusCode: request.ResponseStatusCode, //【返回】状态码 - ResponseBody: dorm.JsonDecodeNoError(request.ResponseBody), //【返回】内容 - ResponseContentLength: request.ResponseContentLength, //【返回】大小 - ResponseTime: dorm.BsonTime(request.ResponseTime), //【返回】时间 + c.log.MongoRecord(golog.ApiMongoLog{ + RequestTime: dorm.BsonTime(request.RequestTime), //【请求】时间 + RequestUri: request.RequestUri, //【请求】链接 + RequestUrl: gorequest.UriParse(request.RequestUri).Url, //【请求】链接 + RequestApi: gorequest.UriParse(request.RequestUri).Path, //【请求】接口 + RequestMethod: request.RequestMethod, //【请求】方式 + RequestParams: request.RequestParams, //【请求】参数 + RequestHeader: request.RequestHeader, //【请求】头部 + ResponseHeader: request.ResponseHeader, //【返回】头部 + ResponseStatusCode: request.ResponseStatusCode, //【返回】状态码 + ResponseBody: request.ResponseBody, //【返回】内容 + ResponseContentLength: request.ResponseContentLength, //【返回】大小 + ResponseTime: dorm.BsonTime(request.ResponseTime), //【返回】时间 }) } diff --git a/service/wechatpayapiv3/pgsql.go b/service/wechatpayapiv3/pgsql.go index e197c265..203de73d 100644 --- a/service/wechatpayapiv3/pgsql.go +++ b/service/wechatpayapiv3/pgsql.go @@ -9,7 +9,7 @@ import ( // 记录日志 func (c *Client) postgresqlLog(request gorequest.Response) { - c.log.Record(golog.ApiPostgresqlLog{ + c.log.GormRecord(golog.ApiPostgresqlLog{ RequestTime: golog.TimeString{Time: request.RequestTime}, //【请求】时间 RequestUri: request.RequestUri, //【请求】链接 RequestUrl: gorequest.UriParse(request.RequestUri).Url, //【请求】链接 diff --git a/service/wechatpayopen/mongo.go b/service/wechatpayopen/mongo.go new file mode 100644 index 00000000..89084223 --- /dev/null +++ b/service/wechatpayopen/mongo.go @@ -0,0 +1,24 @@ +package wechatpayopen + +import ( + "go.dtapp.net/library/utils/dorm" + "go.dtapp.net/library/utils/golog" + "go.dtapp.net/library/utils/gorequest" +) + +func (c *Client) mongoLog(request gorequest.Response) { + c.log.MongoRecord(golog.ApiMongoLog{ + RequestTime: dorm.BsonTime(request.RequestTime), //【请求】时间 + RequestUri: request.RequestUri, //【请求】链接 + RequestUrl: gorequest.UriParse(request.RequestUri).Url, //【请求】链接 + RequestApi: gorequest.UriParse(request.RequestUri).Path, //【请求】接口 + RequestMethod: request.RequestMethod, //【请求】方式 + RequestParams: request.RequestParams, //【请求】参数 + RequestHeader: request.RequestHeader, //【请求】头部 + ResponseHeader: request.ResponseHeader, //【返回】头部 + ResponseStatusCode: request.ResponseStatusCode, //【返回】状态码 + ResponseBody: request.ResponseBody, //【返回】内容 + ResponseContentLength: request.ResponseContentLength, //【返回】大小 + ResponseTime: dorm.BsonTime(request.ResponseTime), //【返回】时间 + }) +} diff --git a/service/wechatpayopen/pgsql.go b/service/wechatpayopen/pgsql.go index 23926ae8..f3ade1ad 100644 --- a/service/wechatpayopen/pgsql.go +++ b/service/wechatpayopen/pgsql.go @@ -9,7 +9,7 @@ import ( // 记录日志 func (c *Client) postgresqlLog(request gorequest.Response) { - c.log.Record(golog.ApiPostgresqlLog{ + c.log.GormRecord(golog.ApiPostgresqlLog{ RequestTime: golog.TimeString{Time: request.RequestTime}, //【请求】时间 RequestUri: request.RequestUri, //【请求】链接 RequestUrl: gorequest.UriParse(request.RequestUri).Url, //【请求】链接 diff --git a/service/wechatqy/mongo.go b/service/wechatqy/mongo.go new file mode 100644 index 00000000..6d82a3d3 --- /dev/null +++ b/service/wechatqy/mongo.go @@ -0,0 +1,24 @@ +package wechatqy + +import ( + "go.dtapp.net/library/utils/dorm" + "go.dtapp.net/library/utils/golog" + "go.dtapp.net/library/utils/gorequest" +) + +func (c *Client) mongoLog(request gorequest.Response) { + c.log.MongoRecord(golog.ApiMongoLog{ + RequestTime: dorm.BsonTime(request.RequestTime), //【请求】时间 + RequestUri: request.RequestUri, //【请求】链接 + RequestUrl: gorequest.UriParse(request.RequestUri).Url, //【请求】链接 + RequestApi: gorequest.UriParse(request.RequestUri).Path, //【请求】接口 + RequestMethod: request.RequestMethod, //【请求】方式 + RequestParams: request.RequestParams, //【请求】参数 + RequestHeader: request.RequestHeader, //【请求】头部 + ResponseHeader: request.ResponseHeader, //【返回】头部 + ResponseStatusCode: request.ResponseStatusCode, //【返回】状态码 + ResponseBody: request.ResponseBody, //【返回】内容 + ResponseContentLength: request.ResponseContentLength, //【返回】大小 + ResponseTime: dorm.BsonTime(request.ResponseTime), //【返回】时间 + }) +} diff --git a/service/wechatqy/pgsql.go b/service/wechatqy/pgsql.go index 5979c337..fb6d4f8b 100644 --- a/service/wechatqy/pgsql.go +++ b/service/wechatqy/pgsql.go @@ -9,7 +9,7 @@ import ( // 记录日志 func (c *Client) postgresqlLog(request gorequest.Response) { - c.log.Record(golog.ApiPostgresqlLog{ + c.log.GormRecord(golog.ApiPostgresqlLog{ RequestTime: golog.TimeString{Time: request.RequestTime}, //【请求】时间 RequestUri: request.RequestUri, //【请求】链接 RequestUrl: gorequest.UriParse(request.RequestUri).Url, //【请求】链接 diff --git a/service/wechatunion/mongo.go b/service/wechatunion/mongo.go new file mode 100644 index 00000000..01580b91 --- /dev/null +++ b/service/wechatunion/mongo.go @@ -0,0 +1,24 @@ +package wechatunion + +import ( + "go.dtapp.net/library/utils/dorm" + "go.dtapp.net/library/utils/golog" + "go.dtapp.net/library/utils/gorequest" +) + +func (c *Client) mongoLog(request gorequest.Response) { + c.log.MongoRecord(golog.ApiMongoLog{ + RequestTime: dorm.BsonTime(request.RequestTime), //【请求】时间 + RequestUri: request.RequestUri, //【请求】链接 + RequestUrl: gorequest.UriParse(request.RequestUri).Url, //【请求】链接 + RequestApi: gorequest.UriParse(request.RequestUri).Path, //【请求】接口 + RequestMethod: request.RequestMethod, //【请求】方式 + RequestParams: request.RequestParams, //【请求】参数 + RequestHeader: request.RequestHeader, //【请求】头部 + ResponseHeader: request.ResponseHeader, //【返回】头部 + ResponseStatusCode: request.ResponseStatusCode, //【返回】状态码 + ResponseBody: request.ResponseBody, //【返回】内容 + ResponseContentLength: request.ResponseContentLength, //【返回】大小 + ResponseTime: dorm.BsonTime(request.ResponseTime), //【返回】时间 + }) +} diff --git a/service/wechatunion/pgsql.go b/service/wechatunion/pgsql.go index 0eb05018..b2a1fc95 100644 --- a/service/wechatunion/pgsql.go +++ b/service/wechatunion/pgsql.go @@ -9,7 +9,7 @@ import ( // 记录日志 func (c *Client) postgresqlLog(request gorequest.Response) { - c.log.Record(golog.ApiPostgresqlLog{ + c.log.GormRecord(golog.ApiPostgresqlLog{ RequestTime: golog.TimeString{Time: request.RequestTime}, //【请求】时间 RequestUri: request.RequestUri, //【请求】链接 RequestUrl: gorequest.UriParse(request.RequestUri).Url, //【请求】链接 diff --git a/service/weishi/mongo.go b/service/weishi/mongo.go new file mode 100644 index 00000000..2ab606ad --- /dev/null +++ b/service/weishi/mongo.go @@ -0,0 +1,24 @@ +package weishi + +import ( + "go.dtapp.net/library/utils/dorm" + "go.dtapp.net/library/utils/golog" + "go.dtapp.net/library/utils/gorequest" +) + +func (c *Client) mongoLog(request gorequest.Response) { + c.log.MongoRecord(golog.ApiMongoLog{ + RequestTime: dorm.BsonTime(request.RequestTime), //【请求】时间 + RequestUri: request.RequestUri, //【请求】链接 + RequestUrl: gorequest.UriParse(request.RequestUri).Url, //【请求】链接 + RequestApi: gorequest.UriParse(request.RequestUri).Path, //【请求】接口 + RequestMethod: request.RequestMethod, //【请求】方式 + RequestParams: request.RequestParams, //【请求】参数 + RequestHeader: request.RequestHeader, //【请求】头部 + ResponseHeader: request.ResponseHeader, //【返回】头部 + ResponseStatusCode: request.ResponseStatusCode, //【返回】状态码 + ResponseBody: request.ResponseBody, //【返回】内容 + ResponseContentLength: request.ResponseContentLength, //【返回】大小 + ResponseTime: dorm.BsonTime(request.ResponseTime), //【返回】时间 + }) +} diff --git a/service/weishi/pgsql.go b/service/weishi/pgsql.go index 588984df..b48e5fc1 100644 --- a/service/weishi/pgsql.go +++ b/service/weishi/pgsql.go @@ -9,7 +9,7 @@ import ( // 记录日志 func (c *Client) postgresqlLog(request gorequest.Response) { - c.log.Record(golog.ApiPostgresqlLog{ + c.log.GormRecord(golog.ApiPostgresqlLog{ RequestTime: golog.TimeString{Time: request.RequestTime}, //【请求】时间 RequestUri: request.RequestUri, //【请求】链接 RequestUrl: gorequest.UriParse(request.RequestUri).Url, //【请求】链接 diff --git a/service/wikeyun/mongo.go b/service/wikeyun/mongo.go new file mode 100644 index 00000000..68f377fd --- /dev/null +++ b/service/wikeyun/mongo.go @@ -0,0 +1,24 @@ +package wikeyun + +import ( + "go.dtapp.net/library/utils/dorm" + "go.dtapp.net/library/utils/golog" + "go.dtapp.net/library/utils/gorequest" +) + +func (c *Client) mongoLog(request gorequest.Response) { + c.log.MongoRecord(golog.ApiMongoLog{ + RequestTime: dorm.BsonTime(request.RequestTime), //【请求】时间 + RequestUri: request.RequestUri, //【请求】链接 + RequestUrl: gorequest.UriParse(request.RequestUri).Url, //【请求】链接 + RequestApi: gorequest.UriParse(request.RequestUri).Path, //【请求】接口 + RequestMethod: request.RequestMethod, //【请求】方式 + RequestParams: request.RequestParams, //【请求】参数 + RequestHeader: request.RequestHeader, //【请求】头部 + ResponseHeader: request.ResponseHeader, //【返回】头部 + ResponseStatusCode: request.ResponseStatusCode, //【返回】状态码 + ResponseBody: request.ResponseBody, //【返回】内容 + ResponseContentLength: request.ResponseContentLength, //【返回】大小 + ResponseTime: dorm.BsonTime(request.ResponseTime), //【返回】时间 + }) +} diff --git a/service/wikeyun/pgsql.go b/service/wikeyun/pgsql.go index 810338ce..8fb71fe9 100644 --- a/service/wikeyun/pgsql.go +++ b/service/wikeyun/pgsql.go @@ -9,7 +9,7 @@ import ( // 记录日志 func (c *Client) postgresqlLog(request gorequest.Response) { - c.log.Record(golog.ApiPostgresqlLog{ + c.log.GormRecord(golog.ApiPostgresqlLog{ RequestTime: golog.TimeString{Time: request.RequestTime}, //【请求】时间 RequestUri: request.RequestUri, //【请求】链接 RequestUrl: gorequest.UriParse(request.RequestUri).Url, //【请求】链接 diff --git a/utils/dorm/gorm.go b/utils/dorm/gorm.go index 9775ad78..fc354973 100644 --- a/utils/dorm/gorm.go +++ b/utils/dorm/gorm.go @@ -26,16 +26,14 @@ type GormClient struct { func NewGormMysqlClient(config *ConfigGormClient) (*GormClient, error) { - c := &GormClient{} - c.config = config + var err error + c := &GormClient{config: config} // 判断路径 if c.config.LogUrl == "" { logsUrl = "/logs/mysql" } - var err error - if c.config.Log == true { c.Db, err = gorm.Open(mysql.Open(c.config.Dns), &gorm.Config{ Logger: logger.New( diff --git a/utils/dorm/gorm_transaction.go b/utils/dorm/gorm_transaction.go new file mode 100644 index 00000000..d472c296 --- /dev/null +++ b/utils/dorm/gorm_transaction.go @@ -0,0 +1,18 @@ +package dorm + +import "gorm.io/gorm" + +// Begin 开始事务,不需要创建 Session 对象 +func (c *GormClient) Begin() *gorm.DB { + return c.Db.Begin() +} + +// Rollback 回滚事务 +func (c *GormClient) Rollback() *gorm.DB { + return c.Db.Rollback() +} + +// Commit 提交事务 +func (c *GormClient) Commit() *gorm.DB { + return c.Db.Commit() +} diff --git a/utils/dorm/mongo.go b/utils/dorm/mongo.go index 5d1d0951..46172c54 100644 --- a/utils/dorm/mongo.go +++ b/utils/dorm/mongo.go @@ -11,6 +11,7 @@ import ( type ConfigMongoClient struct { Dns string // 地址 + Opts *options.ClientOptions DatabaseName string // 库名 } @@ -24,16 +25,24 @@ type MongoClient struct { func NewMongoClient(config *ConfigMongoClient) (*MongoClient, error) { + var err error c := &MongoClient{config: config} // 连接到MongoDB - db, err := mongo.Connect(context.TODO(), options.Client().ApplyURI(c.config.Dns)) - if err != nil { - return nil, errors.New(fmt.Sprintf("连接失败:%v", err)) + if c.config.Dns != "" { + c.Db, err = mongo.Connect(context.Background(), options.Client().ApplyURI(c.config.Dns)) + if err != nil { + return nil, errors.New(fmt.Sprintf("连接失败:%v", err)) + } + } else { + c.Db, err = mongo.Connect(context.Background(), c.config.Opts) + if err != nil { + return nil, errors.New(fmt.Sprintf("连接失败:%v", err)) + } } // 检查连接 - err = db.Ping(context.TODO(), nil) + err = c.Db.Ping(context.TODO(), nil) if err != nil { return nil, errors.New(fmt.Sprintf("检查连接失败:%v", err)) } diff --git a/utils/dorm/mongo_official.go b/utils/dorm/mongo_official.go index ac4dbc50..6fde4feb 100644 --- a/utils/dorm/mongo_official.go +++ b/utils/dorm/mongo_official.go @@ -7,37 +7,32 @@ import ( "go.mongodb.org/mongo-driver/mongo/options" ) -func (c *MongoClient) Session() (session mongo.Session, err error) { - session, err = c.Db.StartSession() - return -} - // InsertOne 插入单个文档 -func (c *MongoClient) InsertOne(value interface{}) (result *mongo.InsertOneResult, err error) { +func (c *MongoClient) InsertOne(ctx context.Context, document interface{}, opts ...*options.InsertOneOptions) (result *mongo.InsertOneResult, err error) { collection := c.Db.Database(c.getDatabaseName()).Collection(c.collectionName) - result, err = collection.InsertOne(context.TODO(), value) + result, err = collection.InsertOne(ctx, document, opts...) return result, err } // InsertMany 插入多个文档 -func (c *MongoClient) InsertMany(values []interface{}) (result *mongo.InsertManyResult, err error) { +func (c *MongoClient) InsertMany(ctx context.Context, documents []interface{}, opts ...*options.InsertManyOptions) (result *mongo.InsertManyResult, err error) { collection := c.Db.Database(c.getDatabaseName()).Collection(c.collectionName) - result, err = collection.InsertMany(context.TODO(), values) + result, err = collection.InsertMany(ctx, documents, opts...) return result, err } // Delete 删除文档 -func (c *MongoClient) Delete(filter interface{}) (int64, error) { +func (c *MongoClient) Delete(ctx context.Context, filter interface{}, opts ...*options.DeleteOptions) (int64, error) { collection := c.Db.Database(c.getDatabaseName()).Collection(c.collectionName) - count, err := collection.DeleteOne(context.TODO(), filter, nil) + count, err := collection.DeleteOne(ctx, filter, opts...) return count.DeletedCount, err } // DeleteMany 删除多个文档 -func (c *MongoClient) DeleteMany(key string, value interface{}) (int64, error) { +func (c *MongoClient) DeleteMany(ctx context.Context, key string, value interface{}) (int64, error) { collection := c.Db.Database(c.getDatabaseName()).Collection(c.collectionName) filter := bson.D{{key, value}} - count, err := collection.DeleteMany(context.TODO(), filter) + count, err := collection.DeleteMany(ctx, filter) return count.DeletedCount, err } @@ -46,9 +41,9 @@ func (c *MongoClient) DeleteMany(key string, value interface{}) (int64, error) { // 字段增加值 inc($inc) // 从数组中增加一个元素 push($push) // 从数组中删除一个元素 pull($pull) -func (c *MongoClient) UpdateOne(filter, update interface{}) (int64, error) { +func (c *MongoClient) UpdateOne(ctx context.Context, filter interface{}, update interface{}, opts ...*options.UpdateOptions) (int64, error) { collection := c.Db.Database(c.getDatabaseName()).Collection(c.collectionName) - result, err := collection.UpdateOne(context.TODO(), filter, update) + result, err := collection.UpdateOne(ctx, filter, update, opts...) return result.UpsertedCount, err } @@ -57,9 +52,9 @@ func (c *MongoClient) UpdateOne(filter, update interface{}) (int64, error) { // 字段增加值 inc($inc) // 从数组中增加一个元素 push($push) // 从数组中删除一个元素 pull($pull) -func (c *MongoClient) UpdateMany(filter, update interface{}) (int64, error) { +func (c *MongoClient) UpdateMany(ctx context.Context, filter interface{}, update interface{}, opts ...*options.UpdateOptions) (int64, error) { collection := c.Db.Database(c.getDatabaseName()).Collection(c.collectionName) - result, err := collection.UpdateMany(context.TODO(), filter, update) + result, err := collection.UpdateMany(ctx, filter, update, opts...) return result.UpsertedCount, err } @@ -71,68 +66,68 @@ func (c *MongoClient) UpdateMany(filter, update interface{}) (int64, error) { //} // FindOne 查询单个文档 -func (c *MongoClient) FindOne(filter interface{}) (result *mongo.SingleResult) { +func (c *MongoClient) FindOne(ctx context.Context, filter interface{}, opts ...*options.FindOneOptions) (result *mongo.SingleResult) { collection := c.Db.Database(c.getDatabaseName()).Collection(c.collectionName) - result = collection.FindOne(context.TODO(), filter) + result = collection.FindOne(ctx, filter, opts...) return result } // FindMany 查询多个文档 -func (c *MongoClient) FindMany(filter interface{}) (result *mongo.Cursor, err error) { +func (c *MongoClient) FindMany(ctx context.Context, filter interface{}, opts ...*options.FindOptions) (result *mongo.Cursor, err error) { collection := c.Db.Database(c.getDatabaseName()).Collection(c.collectionName) - result, err = collection.Find(context.TODO(), filter) + result, err = collection.Find(ctx, filter, opts...) return result, err } // FindManyByFilters 多条件查询 -func (c *MongoClient) FindManyByFilters(filter interface{}) (result *mongo.Cursor, err error) { +func (c *MongoClient) FindManyByFilters(ctx context.Context, filter interface{}) (result *mongo.Cursor, err error) { collection, err := c.Db.Database(c.getDatabaseName()).Collection(c.collectionName).Clone() - result, err = collection.Find(context.TODO(), bson.M{"$and": filter}) + result, err = collection.Find(ctx, bson.M{"$and": filter}) return result, err } // FindManyByFiltersSort 多条件查询支持排序 -func (c *MongoClient) FindManyByFiltersSort(filter interface{}, Sort interface{}) (result *mongo.Cursor, err error) { +func (c *MongoClient) FindManyByFiltersSort(ctx context.Context, filter interface{}, Sort interface{}) (result *mongo.Cursor, err error) { collection, err := c.Db.Database(c.getDatabaseName()).Collection(c.collectionName).Clone() findOptions := options.Find() findOptions.SetSort(Sort) - result, err = collection.Find(context.TODO(), filter, findOptions) + result, err = collection.Find(ctx, filter, findOptions) return result, err } // FindCollection 查询集合文档 -func (c *MongoClient) FindCollection(Limit int64) (result *mongo.Cursor, err error) { +func (c *MongoClient) FindCollection(ctx context.Context, Limit int64) (result *mongo.Cursor, err error) { collection := c.Db.Database(c.getDatabaseName()).Collection(c.collectionName) findOptions := options.Find() findOptions.SetLimit(Limit) - result, err = collection.Find(context.TODO(), bson.D{{}}, findOptions) + result, err = collection.Find(ctx, bson.D{{}}, findOptions) return result, err } // FindCollectionSort 查询集合文档支持排序 -func (c *MongoClient) FindCollectionSort(Sort interface{}, Limit int64) (result *mongo.Cursor, err error) { +func (c *MongoClient) FindCollectionSort(ctx context.Context, Sort interface{}, Limit int64) (result *mongo.Cursor, err error) { collection := c.Db.Database(c.getDatabaseName()).Collection(c.collectionName) findOptions := options.Find() findOptions.SetSort(Sort) findOptions.SetLimit(Limit) - result, err = collection.Find(context.TODO(), bson.D{{}}, findOptions) + result, err = collection.Find(ctx, bson.D{{}}, findOptions) return result, err } // FindManyCollectionSort 查询集合文档支持排序支持条件 -func (c *MongoClient) FindManyCollectionSort(filter interface{}, Sort interface{}) (result *mongo.Cursor, err error) { +func (c *MongoClient) FindManyCollectionSort(ctx context.Context, filter interface{}, Sort interface{}) (result *mongo.Cursor, err error) { collection := c.Db.Database(c.getDatabaseName()).Collection(c.collectionName) findOptions := options.Find() findOptions.SetSort(Sort) - result, err = collection.Find(context.TODO(), filter, findOptions) + result, err = collection.Find(ctx, filter, findOptions) return result, err } // CollectionCount 查询集合里有多少数据 -func (c *MongoClient) CollectionCount() (name string, size int64) { +func (c *MongoClient) CollectionCount(ctx context.Context) (name string, size int64) { collection := c.Db.Database(c.getDatabaseName()).Collection(c.collectionName) name = collection.Name() - size, _ = collection.EstimatedDocumentCount(context.TODO()) + size, _ = collection.EstimatedDocumentCount(ctx) return name, size } @@ -140,25 +135,25 @@ func (c *MongoClient) CollectionCount() (name string, size int64) { // Skip 跳过 // Limit 读取数量 // sort 1 ,-1 . 1 为升序 , -1 为降序 -func (c *MongoClient) CollectionDocuments(Skip, Limit int64, sort int, key string, value interface{}) (result *mongo.Cursor, err error) { +func (c *MongoClient) CollectionDocuments(ctx context.Context, Skip, Limit int64, sort int, key string, value interface{}) (result *mongo.Cursor, err error) { collection := c.Db.Database(c.getDatabaseName()).Collection(c.collectionName) SORT := bson.D{{"_id", sort}} filter := bson.D{{key, value}} findOptions := options.Find().SetSort(SORT).SetLimit(Limit).SetSkip(Skip) - result, err = collection.Find(context.Background(), filter, findOptions) + result, err = collection.Find(ctx, filter, findOptions) return result, err } // AggregateByFiltersSort 统计分析 -func (c *MongoClient) AggregateByFiltersSort(pipeline interface{}, opts ...*options.AggregateOptions) (result *mongo.Cursor, err error) { +func (c *MongoClient) AggregateByFiltersSort(ctx context.Context, pipeline interface{}, opts ...*options.AggregateOptions) (result *mongo.Cursor, err error) { collection := c.Db.Database(c.getDatabaseName()).Collection(c.collectionName) - result, err = collection.Aggregate(context.TODO(), pipeline, opts...) + result, err = collection.Aggregate(ctx, pipeline, opts...) return result, err } // CountDocumentsByFilters 统计数量 -func (c *MongoClient) CountDocumentsByFilters(filter interface{}) (count int64, err error) { +func (c *MongoClient) CountDocumentsByFilters(ctx context.Context, filter interface{}) (count int64, err error) { collection := c.Db.Database(c.getDatabaseName()).Collection(c.collectionName) - count, err = collection.CountDocuments(context.TODO(), filter) + count, err = collection.CountDocuments(ctx, filter) return count, err } diff --git a/utils/dorm/mongo_options.go b/utils/dorm/mongo_options.go new file mode 100644 index 00000000..c3827735 --- /dev/null +++ b/utils/dorm/mongo_options.go @@ -0,0 +1 @@ +package dorm diff --git a/utils/dorm/mongo_transaction.go b/utils/dorm/mongo_transaction.go new file mode 100644 index 00000000..d59198bb --- /dev/null +++ b/utils/dorm/mongo_transaction.go @@ -0,0 +1,43 @@ +package dorm + +import ( + "context" + "go.mongodb.org/mongo-driver/mongo" +) + +type MongoTransaction struct { + startSession mongo.Session + Session mongo.SessionContext +} + +// Begin 开始事务,会同时创建开始会话需要在退出时关闭会话 +func (c *MongoClient) Begin() (ms MongoTransaction, err error) { + + // 开始会话 + ms.startSession, err = c.Db.StartSession() + if err != nil { + panic(err) + } + + // 会话上下文 + ms.Session = mongo.NewSessionContext(context.Background(), ms.startSession) + + // 会话开启事务 + err = ms.startSession.StartTransaction() + return ms, err +} + +// Close 关闭会话 +func (ms *MongoTransaction) Close() { + ms.startSession.EndSession(context.TODO()) +} + +// Rollback 回滚事务 +func (ms *MongoTransaction) Rollback() error { + return ms.startSession.AbortTransaction(context.Background()) +} + +// Commit 提交事务 +func (ms *MongoTransaction) Commit() error { + return ms.startSession.CommitTransaction(context.Background()) +} diff --git a/utils/dorm/xorm.go b/utils/dorm/xorm.go new file mode 100644 index 00000000..efff7e0d --- /dev/null +++ b/utils/dorm/xorm.go @@ -0,0 +1,29 @@ +package dorm + +import ( + "errors" + "fmt" + "xorm.io/xorm" +) + +type ConfigXormClient struct { + Dns string // 地址 +} + +type XormClient struct { + Db *xorm.Engine // 驱动 + config *ConfigXormClient // 配置 +} + +func NewXormMysqlClient(config *ConfigXormClient) (*XormClient, error) { + + var err error + c := &XormClient{config: config} + + c.Db, err = xorm.NewEngine("mysql", c.config.Dns) + if err != nil { + return nil, errors.New(fmt.Sprintf("连接失败:%v", err)) + } + + return c, nil +} diff --git a/utils/dorm/xorm_transaction.go b/utils/dorm/xorm_transaction.go new file mode 100644 index 00000000..0d83b193 --- /dev/null +++ b/utils/dorm/xorm_transaction.go @@ -0,0 +1,27 @@ +package dorm + +import ( + "xorm.io/xorm" +) + +// XormClientSession https://xorm.io/zh/docs/chapter-10/readme/ +type XormClientSession struct { + *xorm.Session +} + +// Begin 开始事务,需要创建 Session 对象 +//func (c *XormClient) Begin() (*XormClientSession, error) { +// session := c.Db.NewSession() +// defer session.Close() +// return &session, session.Begin() +//} + +// Rollback 回滚事务 +//func (c *XormClientSession) Rollback() error { +// return c.Rollback() +//} + +// Commit 提交事务 +//func (c *XormClientSession) Commit() error { +// return c.Commit() +//} diff --git a/utils/golog/api.go b/utils/golog/api.go index 4affa10a..63152bf1 100644 --- a/utils/golog/api.go +++ b/utils/golog/api.go @@ -1,7 +1,10 @@ package golog import ( + "context" "errors" + "github.com/siddontang/go/bson" + "go.dtapp.net/library/utils/dorm" "go.dtapp.net/library/utils/goip" "gorm.io/datatypes" "gorm.io/gorm" @@ -12,81 +15,109 @@ import ( "unicode/utf8" ) -type ConfigApiClient struct { - Db *gorm.DB // 驱动 - TableName string // 表名 -} - // ApiClient 接口 type ApiClient struct { - db *gorm.DB // pgsql数据库 - tableName string // 日志表名 - insideIp string // 内网ip - hostname string // 主机名 - goVersion string // go版本 + gormClient *gorm.DB // 驱动 + mongoCollectionClient *dorm.MongoClient // 驱动(温馨提示:需要已选择库) + config *struct { + logType string // 日志类型 + tableName string // 表名 + insideIp string // 内网ip + hostname string // 主机名 + goVersion string // go版本 + } // 配置 } // NewApiClient 创建接口实例化 -func NewApiClient(config *ConfigApiClient) (*ApiClient, error) { +func NewApiClient(attrs ...*OperationAttr) (*ApiClient, error) { c := &ApiClient{} - if config.Db == nil { - return nil, errors.New("驱动不正常") + for _, attr := range attrs { + c.gormClient = attr.gormClient + c.mongoCollectionClient = attr.mongoCollectionClient + c.config.logType = attr.logType + c.config.tableName = attr.tableName } - if config.TableName == "" { - return nil, errors.New("表名不能为空") - } - hostname, _ := os.Hostname() - c.db = config.Db - c.tableName = config.TableName - c.hostname = hostname - c.insideIp = goip.GetInsideIp() - c.goVersion = strings.TrimPrefix(runtime.Version(), "go") + switch c.config.logType { + case logTypeGorm: + + if c.gormClient == nil { + return nil, errors.New("驱动不能为空") + } + + if c.config.tableName == "" { + return nil, errors.New("表名不能为空") + } + + err := c.gormClient.Table(c.config.tableName).AutoMigrate(&ApiPostgresqlLog{}) + if err != nil { + return nil, errors.New("创建表失败:" + err.Error()) + } - err := c.db.Table(c.tableName).AutoMigrate(&ApiPostgresqlLog{}) - if err != nil { - return nil, errors.New("创建表失败:" + err.Error()) + case logTypeMongo: + + if c.mongoCollectionClient.Db == nil { + return nil, errors.New("驱动不能为空") + } + + if c.config.tableName == "" { + return nil, errors.New("表名不能为空") + } + + c.mongoCollectionClient = c.mongoCollectionClient.Collection(c.config.tableName) + + default: + return nil, errors.New("驱动为空") } + hostname, _ := os.Hostname() + + c.config.hostname = hostname + c.config.insideIp = goip.GetInsideIp() + c.config.goVersion = strings.TrimPrefix(runtime.Version(), "go") + return c, nil } -// ApiPostgresqlLog 结构体 -type ApiPostgresqlLog struct { - LogId uint `gorm:"primaryKey" json:"log_id"` //【记录】编号 - RequestTime TimeString `gorm:"index" json:"request_time"` //【请求】时间 - RequestUri string `gorm:"type:text" json:"request_uri"` //【请求】链接 - RequestUrl string `gorm:"type:text" json:"request_url"` //【请求】链接 - RequestApi string `gorm:"type:text;index" json:"request_api"` //【请求】接口 - RequestMethod string `gorm:"type:text;index" json:"request_method"` //【请求】方式 - RequestParams datatypes.JSON `gorm:"type:jsonb" json:"request_params"` //【请求】参数 - RequestHeader datatypes.JSON `gorm:"type:jsonb" json:"request_header"` //【请求】头部 - ResponseHeader datatypes.JSON `gorm:"type:jsonb" json:"response_header"` //【返回】头部 - ResponseStatusCode int `gorm:"type:bigint" json:"response_status_code"` //【返回】状态码 - ResponseBody datatypes.JSON `gorm:"type:jsonb" json:"response_body"` //【返回】内容 - ResponseContentLength int64 `gorm:"type:bigint" json:"response_content_length"` //【返回】大小 - ResponseTime TimeString `gorm:"index" json:"response_time"` //【返回】时间 - SystemHostName string `gorm:"type:text" json:"system_host_name"` //【系统】主机名 - SystemInsideIp string `gorm:"type:text" json:"system_inside_ip"` //【系统】内网ip - GoVersion string `gorm:"type:text" json:"go_version"` //【程序】Go版本 -} +// GormRecord 记录日志 +func (c *ApiClient) GormRecord(postgresqlLog ApiPostgresqlLog) error { -// Record 记录日志 -func (c *ApiClient) Record(content ApiPostgresqlLog) *gorm.DB { - if utf8.ValidString(string(content.ResponseBody)) == false { + if utf8.ValidString(string(postgresqlLog.ResponseBody)) == false { log.Println("内容格式无法记录") - content.ResponseBody = datatypes.JSON("") + postgresqlLog.ResponseBody = datatypes.JSON("") + } + + postgresqlLog.SystemHostName = c.config.hostname + if postgresqlLog.SystemInsideIp == "" { + postgresqlLog.SystemInsideIp = c.config.insideIp } - content.SystemHostName = c.hostname - if content.SystemInsideIp == "" { - content.SystemInsideIp = c.insideIp + postgresqlLog.GoVersion = c.config.goVersion + + return c.gormClient.Table(c.config.tableName).Create(&postgresqlLog).Error +} + +// GormQuery 查询 +func (c *ApiClient) GormQuery() *gorm.DB { + return c.gormClient.Table(c.config.tableName) +} + +// MongoRecord 记录日志 +func (c *ApiClient) MongoRecord(mongoLog ApiMongoLog) error { + + mongoLog.SystemHostName = c.config.hostname + if mongoLog.SystemInsideIp == "" { + mongoLog.SystemInsideIp = c.config.insideIp } - content.GoVersion = c.goVersion - return c.db.Table(c.tableName).Create(&content) + mongoLog.GoVersion = c.config.goVersion + + mongoLog.LogId = bson.NewObjectId() + + _, err := c.mongoCollectionClient.InsertOne(context.Background(), mongoLog) + return err } -// Query 查询 -func (c *ApiClient) Query() *gorm.DB { - return c.db.Table(c.tableName) +// MongoQuery 查询 +func (c *ApiClient) MongoQuery() *dorm.MongoClient { + return c.mongoCollectionClient } diff --git a/utils/golog/api_gorm.go b/utils/golog/api_gorm.go new file mode 100644 index 00000000..def415c8 --- /dev/null +++ b/utils/golog/api_gorm.go @@ -0,0 +1,23 @@ +package golog + +import "gorm.io/datatypes" + +// ApiPostgresqlLog 结构体 +type ApiPostgresqlLog struct { + LogId uint `gorm:"primaryKey" json:"log_id"` //【记录】编号 + RequestTime TimeString `gorm:"index" json:"request_time,omitempty"` //【请求】时间 + RequestUri string `gorm:"type:text" json:"request_uri,omitempty"` //【请求】链接 + RequestUrl string `gorm:"type:text" json:"request_url,omitempty"` //【请求】链接 + RequestApi string `gorm:"type:text;index" json:"request_api,omitempty"` //【请求】接口 + RequestMethod string `gorm:"type:text;index" json:"request_method,omitempty"` //【请求】方式 + RequestParams datatypes.JSON `gorm:"type:jsonb" json:"request_params,omitempty"` //【请求】参数 + RequestHeader datatypes.JSON `gorm:"type:jsonb" json:"request_header,omitempty"` //【请求】头部 + ResponseHeader datatypes.JSON `gorm:"type:jsonb" json:"response_header,omitempty"` //【返回】头部 + ResponseStatusCode int `gorm:"type:bigint" json:"response_status_code,omitempty"` //【返回】状态码 + ResponseBody datatypes.JSON `gorm:"type:jsonb" json:"response_body,omitempty"` //【返回】内容 + ResponseContentLength int64 `gorm:"type:bigint" json:"response_content_length,omitempty"` //【返回】大小 + ResponseTime TimeString `gorm:"index" json:"response_time,omitempty"` //【返回】时间 + SystemHostName string `gorm:"type:text" json:"system_host_name,omitempty"` //【系统】主机名 + SystemInsideIp string `gorm:"type:text" json:"system_inside_ip,omitempty"` //【系统】内网ip + GoVersion string `gorm:"type:text" json:"go_version,omitempty"` //【程序】Go版本 +} diff --git a/utils/golog/api_mongo.go b/utils/golog/api_mongo.go new file mode 100644 index 00000000..209124ec --- /dev/null +++ b/utils/golog/api_mongo.go @@ -0,0 +1,26 @@ +package golog + +import ( + "github.com/siddontang/go/bson" + "go.dtapp.net/library/utils/dorm" +) + +// ApiMongoLog 结构体 +type ApiMongoLog struct { + LogId bson.ObjectId `json:"log_id" bson:"log_id"` //【记录】编号 + RequestTime dorm.BsonTime `json:"request_time,omitempty" bson:"request_time,omitempty"` //【请求】时间 + RequestUri string `json:"request_uri,omitempty" bson:"request_uri,omitempty"` //【请求】链接 + RequestUrl string `json:"request_url,omitempty" bson:"request_url,omitempty"` //【请求】链接 + RequestApi string `json:"request_api,omitempty" bson:"request_api,omitempty"` //【请求】接口 + RequestMethod string `json:"request_method,omitempty" bson:"request_method,omitempty"` //【请求】方式 + RequestParams map[string]interface{} `json:"request_params,omitempty" bson:"request_params,omitempty"` //【请求】参数 + RequestHeader map[string]string `json:"request_header,omitempty" bson:"request_header,omitempty"` //【请求】头部 + ResponseHeader map[string][]string `json:"response_header,omitempty" bson:"response_header,omitempty"` //【返回】头部 + ResponseStatusCode int `json:"response_status_code,omitempty" bson:"response_status_code,omitempty"` //【返回】状态码 + ResponseBody interface{} `json:"response_body,omitempty" bson:"response_body,omitempty"` //【返回】内容 + ResponseContentLength int64 `json:"response_content_length,omitempty" bson:"response_content_length,omitempty"` //【返回】大小 + ResponseTime dorm.BsonTime `json:"response_time,omitempty" bson:"response_time,omitempty"` //【返回】时间 + SystemHostName string `json:"system_host_name,omitempty" bson:"system_host_name,omitempty"` //【系统】主机名 + SystemInsideIp string `json:"system_inside_ip,omitempty" bson:"system_inside_ip,omitempty"` //【系统】内网ip + GoVersion string `json:"go_version,omitempty" bson:"go_version,omitempty"` //【程序】Go版本 +} diff --git a/utils/golog/gin.go b/utils/golog/gin.go index ccf66983..3a011091 100644 --- a/utils/golog/gin.go +++ b/utils/golog/gin.go @@ -1,97 +1,115 @@ package golog import ( + "context" "errors" + "github.com/siddontang/go/bson" + "go.dtapp.net/library/utils/dorm" "go.dtapp.net/library/utils/goip" - "gorm.io/datatypes" "gorm.io/gorm" "os" "runtime" "strings" ) -type ConfigGinClient struct { - Db *gorm.DB // 驱动 - TableName string // 表名 -} - // GinClient 框架 type GinClient struct { - db *gorm.DB // pgsql数据库 - tableName string // 日志表名 - insideIp string // 内网ip - hostname string // 主机名 - goVersion string // go版本 + gormClient *gorm.DB // 驱动 + mongoCollectionClient *dorm.MongoClient // 驱动(温馨提示:需要已选择库) + config *struct { + logType string // 日志类型 + tableName string // 表名 + insideIp string // 内网ip + hostname string // 主机名 + goVersion string // go版本 + } // 配置 } // NewGinClient 创建框架实例化 -func NewGinClient(config *ConfigGinClient) (*GinClient, error) { +func NewGinClient(attrs ...*OperationAttr) (*GinClient, error) { c := &GinClient{} - if config.Db == nil { - return nil, errors.New("驱动不正常") + for _, attr := range attrs { + c.gormClient = attr.gormClient + c.mongoCollectionClient = attr.mongoCollectionClient + c.config.logType = attr.logType + c.config.tableName = attr.tableName } - if config.TableName == "" { - return nil, errors.New("表名不能为空") + + switch c.config.logType { + case logTypeGorm: + + if c.gormClient == nil { + return nil, errors.New("驱动不能为空") + } + + if c.config.tableName == "" { + return nil, errors.New("表名不能为空") + } + + err := c.gormClient.Table(c.config.tableName).AutoMigrate(&ApiPostgresqlLog{}) + if err != nil { + return nil, errors.New("创建表失败:" + err.Error()) + } + + case logTypeMongo: + + if c.mongoCollectionClient.Db == nil { + return nil, errors.New("驱动不能为空") + } + + if c.config.tableName == "" { + return nil, errors.New("表名不能为空") + } + + c.mongoCollectionClient = c.mongoCollectionClient.Collection(c.config.tableName) + + default: + return nil, errors.New("驱动为空") } + hostname, _ := os.Hostname() - c.db = config.Db - c.tableName = config.TableName - c.hostname = hostname - c.insideIp = goip.GetInsideIp() - c.goVersion = strings.TrimPrefix(runtime.Version(), "go") + c.config.hostname = hostname + c.config.insideIp = goip.GetInsideIp() + c.config.goVersion = strings.TrimPrefix(runtime.Version(), "go") + + return c, nil +} + +// GormRecord 记录日志 +func (c *GinClient) GormRecord(postgresqlLog GinPostgresqlLog) error { - err := c.db.Table(c.tableName).AutoMigrate(&GinPostgresqlLog{}) - if err != nil { - return nil, errors.New("创建表失败:" + err.Error()) + postgresqlLog.SystemHostName = c.config.hostname + if postgresqlLog.SystemInsideIp == "" { + postgresqlLog.SystemInsideIp = c.config.insideIp } + postgresqlLog.GoVersion = c.config.goVersion - return c, nil + return c.gormClient.Table(c.config.tableName).Create(&postgresqlLog).Error } -// GinPostgresqlLog 结构体 -type GinPostgresqlLog struct { - LogId uint `gorm:"primaryKey" json:"log_id"` //【记录】编号 - TraceId string `gorm:"type:text" json:"trace_id"` //【系统】链编号 - RequestTime TimeString `gorm:"index" json:"request_time"` //【请求】时间 - RequestUri string `gorm:"type:text" json:"request_uri"` //【请求】请求链接 域名+路径+参数 - RequestUrl string `gorm:"type:text" json:"request_url"` //【请求】请求链接 域名+路径 - RequestApi string `gorm:"type:text;index" json:"request_api"` //【请求】请求接口 路径 - RequestMethod string `gorm:"type:text;index" json:"request_method"` //【请求】请求方式 - RequestProto string `gorm:"type:text" json:"request_proto"` //【请求】请求协议 - RequestUa string `gorm:"type:text" json:"request_ua"` //【请求】请求UA - RequestReferer string `gorm:"type:text" json:"request_referer"` //【请求】请求referer - RequestBody datatypes.JSON `gorm:"type:jsonb" json:"request_body"` //【请求】请求主体 - RequestUrlQuery datatypes.JSON `gorm:"type:jsonb" json:"request_url_query"` //【请求】请求URL参数 - RequestIp string `gorm:"type:text" json:"request_ip"` //【请求】请求客户端Ip - RequestIpCountry string `gorm:"type:text" json:"request_ip_country"` //【请求】请求客户端城市 - RequestIpRegion string `gorm:"type:text" json:"request_ip_region"` //【请求】请求客户端区域 - RequestIpProvince string `gorm:"type:text" json:"request_ip_province"` //【请求】请求客户端省份 - RequestIpCity string `gorm:"type:text" json:"request_ip_city"` //【请求】请求客户端城市 - RequestIpIsp string `gorm:"type:text" json:"request_ip_isp"` //【请求】请求客户端运营商 - RequestHeader datatypes.JSON `gorm:"type:jsonb" json:"request_header"` //【请求】请求头 - ResponseTime TimeString `gorm:"index" json:"response_time"` //【返回】时间 - ResponseCode int `gorm:"type:bigint" json:"response_code"` //【返回】状态码 - ResponseMsg string `gorm:"type:text" json:"response_msg"` //【返回】描述 - ResponseData datatypes.JSON `gorm:"type:jsonb" json:"response_data"` //【返回】数据 - CostTime int64 `gorm:"type:bigint" json:"cost_time"` //【系统】花费时间 - SystemHostName string `gorm:"type:text" json:"system_host_name"` //【系统】主机名 - SystemInsideIp string `gorm:"type:text" json:"system_inside_ip"` //【系统】内网ip - GoVersion string `gorm:"type:text" json:"go_version"` //【程序】Go版本 +// GormQuery 查询 +func (c *GinClient) GormQuery() *gorm.DB { + return c.gormClient.Table(c.config.tableName) } -// Record 记录日志 -func (c *GinClient) Record(content GinPostgresqlLog) *gorm.DB { - content.SystemHostName = c.hostname - if content.SystemInsideIp == "" { - content.SystemInsideIp = c.insideIp +// MongoRecord 记录日志 +func (c *GinClient) MongoRecord(mongoLog GinMongoLog) error { + + mongoLog.SystemHostName = c.config.hostname + if mongoLog.SystemInsideIp == "" { + mongoLog.SystemInsideIp = c.config.insideIp } - content.GoVersion = c.goVersion - return c.db.Table(c.tableName).Create(&content) + mongoLog.GoVersion = c.config.goVersion + + mongoLog.LogId = bson.NewObjectId() + + _, err := c.mongoCollectionClient.InsertOne(context.Background(), mongoLog) + return err } -// Query 查询 -func (c *GinClient) Query() *gorm.DB { - return c.db.Table(c.tableName) +// MongoQuery 查询 +func (c *GinClient) MongoQuery() *dorm.MongoClient { + return c.mongoCollectionClient } diff --git a/utils/golog/gin_gorm.go b/utils/golog/gin_gorm.go new file mode 100644 index 00000000..3eb9ea93 --- /dev/null +++ b/utils/golog/gin_gorm.go @@ -0,0 +1,34 @@ +package golog + +import "gorm.io/datatypes" + +// GinPostgresqlLog 结构体 +type GinPostgresqlLog struct { + LogId uint `gorm:"primaryKey" json:"log_id"` //【记录】编号 + TraceId string `gorm:"type:text" json:"trace_id,omitempty"` //【系统】链编号 + RequestTime TimeString `gorm:"index" json:"request_time,omitempty"` //【请求】时间 + RequestUri string `gorm:"type:text" json:"request_uri,omitempty"` //【请求】请求链接 域名+路径+参数 + RequestUrl string `gorm:"type:text" json:"request_url,omitempty"` //【请求】请求链接 域名+路径 + RequestApi string `gorm:"type:text;index" json:"request_api,omitempty"` //【请求】请求接口 路径 + RequestMethod string `gorm:"type:text;index" json:"request_method,omitempty"` //【请求】请求方式 + RequestProto string `gorm:"type:text" json:"request_proto,omitempty"` //【请求】请求协议 + RequestUa string `gorm:"type:text" json:"request_ua,omitempty"` //【请求】请求UA + RequestReferer string `gorm:"type:text" json:"request_referer,omitempty"` //【请求】请求referer + RequestBody datatypes.JSON `gorm:"type:jsonb" json:"request_body,omitempty"` //【请求】请求主体 + RequestUrlQuery datatypes.JSON `gorm:"type:jsonb" json:"request_url_query,omitempty"` //【请求】请求URL参数 + RequestIp string `gorm:"type:text" json:"request_ip,omitempty"` //【请求】请求客户端Ip + RequestIpCountry string `gorm:"type:text" json:"request_ip_country,omitempty"` //【请求】请求客户端城市 + RequestIpRegion string `gorm:"type:text" json:"request_ip_region,omitempty"` //【请求】请求客户端区域 + RequestIpProvince string `gorm:"type:text" json:"request_ip_province,omitempty"` //【请求】请求客户端省份 + RequestIpCity string `gorm:"type:text" json:"request_ip_city,omitempty"` //【请求】请求客户端城市 + RequestIpIsp string `gorm:"type:text" json:"request_ip_isp,omitempty"` //【请求】请求客户端运营商 + RequestHeader datatypes.JSON `gorm:"type:jsonb" json:"request_header,omitempty"` //【请求】请求头 + ResponseTime TimeString `gorm:"index" json:"response_time,omitempty"` //【返回】时间 + ResponseCode int `gorm:"type:bigint" json:"response_code,omitempty"` //【返回】状态码 + ResponseMsg string `gorm:"type:text" json:"response_msg,omitempty"` //【返回】描述 + ResponseData datatypes.JSON `gorm:"type:jsonb" json:"response_data,omitempty"` //【返回】数据 + CostTime int64 `gorm:"type:bigint" json:"cost_time,omitempty"` //【系统】花费时间 + SystemHostName string `gorm:"type:text" json:"system_host_name,omitempty"` //【系统】主机名 + SystemInsideIp string `gorm:"type:text" json:"system_inside_ip,omitempty"` //【系统】内网ip + GoVersion string `gorm:"type:text" json:"go_version,omitempty"` //【程序】Go版本 +} diff --git a/utils/golog/gin_mongo.go b/utils/golog/gin_mongo.go new file mode 100644 index 00000000..2322821b --- /dev/null +++ b/utils/golog/gin_mongo.go @@ -0,0 +1,37 @@ +package golog + +import ( + "github.com/siddontang/go/bson" + "go.dtapp.net/library/utils/dorm" +) + +// GinMongoLog 结构体 +type GinMongoLog struct { + LogId bson.ObjectId `json:"log_id" bson:"log_id"` //【记录】编号 + TraceId string `json:"trace_id,omitempty" bson:"trace_id,omitempty"` //【系统】链编号 + RequestTime dorm.BsonTime `json:"request_time,omitempty" bson:"request_time,omitempty"` //【请求】时间 + RequestUri string `json:"request_uri,omitempty" bson:"request_uri,omitempty"` //【请求】请求链接 域名+路径+参数 + RequestUrl string `json:"request_url,omitempty" bson:"request_url,omitempty"` //【请求】请求链接 域名+路径 + RequestApi string `json:"request_api,omitempty" bson:"request_api,omitempty"` //【请求】请求接口 路径 + RequestMethod string `json:"request_method,omitempty" bson:"request_method,omitempty"` //【请求】请求方式 + RequestProto string `json:"request_proto,omitempty" bson:"request_proto,omitempty"` //【请求】请求协议 + RequestUa string `json:"request_ua,omitempty" bson:"request_ua,omitempty"` //【请求】请求UA + RequestReferer string `json:"request_referer,omitempty" bson:"request_referer,omitempty"` //【请求】请求referer + RequestBody interface{} `json:"request_body,omitempty" bson:"request_body,omitempty"` //【请求】请求主体 + RequestUrlQuery interface{} `json:"request_url_query,omitempty" bson:"request_url_query,omitempty"` //【请求】请求URL参数 + RequestIp string `json:"request_ip,omitempty" bson:"request_ip,omitempty"` //【请求】请求客户端Ip + RequestIpCountry string `json:"request_ip_country,omitempty" bson:"request_ip_country,omitempty"` //【请求】请求客户端城市 + RequestIpRegion string `json:"request_ip_region,omitempty" bson:"request_ip_region,omitempty"` //【请求】请求客户端区域 + RequestIpProvince string `json:"request_ip_province,omitempty" bson:"request_ip_province,omitempty"` //【请求】请求客户端省份 + RequestIpCity string `json:"request_ip_city,omitempty" bson:"request_ip_city,omitempty"` //【请求】请求客户端城市 + RequestIpIsp string `json:"request_ip_isp,omitempty" bson:"request_ip_isp,omitempty"` //【请求】请求客户端运营商 + RequestHeader interface{} `json:"request_header,omitempty" bson:"request_header,omitempty"` //【请求】请求头 + ResponseTime dorm.BsonTime `json:"response_time,omitempty" bson:"response_time,omitempty"` //【返回】时间 + ResponseCode int `json:"response_code,omitempty" bson:"response_code,omitempty"` //【返回】状态码 + ResponseMsg string `json:"response_msg,omitempty" bson:"response_msg,omitempty"` //【返回】描述 + ResponseData interface{} `json:"response_data,omitempty" bson:"response_data,omitempty"` //【返回】数据 + CostTime int64 `json:"cost_time,omitempty" bson:"cost_time,omitempty"` //【系统】花费时间 + SystemHostName string `json:"system_host_name,omitempty" bson:"system_host_name,omitempty"` //【系统】主机名 + SystemInsideIp string `json:"system_inside_ip,omitempty" bson:"system_inside_ip,omitempty"` //【系统】内网ip + GoVersion string `json:"go_version,omitempty" bson:"go_version,omitempty"` //【程序】Go版本 +} diff --git a/utils/golog/operation_attr.go b/utils/golog/operation_attr.go new file mode 100644 index 00000000..cf8b7f63 --- /dev/null +++ b/utils/golog/operation_attr.go @@ -0,0 +1,34 @@ +package golog + +import ( + "go.dtapp.net/library/utils/dorm" + "gorm.io/gorm" +) + +const ( + logTypeGorm = "gorm" + logTypeMongo = "mongo" +) + +// OperationAttr 操作属性 +type OperationAttr struct { + gormClient *gorm.DB // 驱动 + mongoCollectionClient *dorm.MongoClient // 驱动 + logType string // 类型 + tableName string // 表名 +} + +// WithGormClient 数据库驱动 +func WithGormClient(client *gorm.DB) *OperationAttr { + return &OperationAttr{gormClient: client, logType: logTypeGorm} +} + +// WithMongoCollectionClient 数据库驱动(温馨提示:需要已选择库) +func WithMongoCollectionClient(client *dorm.MongoClient) *OperationAttr { + return &OperationAttr{mongoCollectionClient: client, logType: logTypeMongo} +} + +// WithTableName 表名 +func WithTableName(tableName string) *OperationAttr { + return &OperationAttr{tableName: tableName} +}