日志API增加多语言代号参数

This commit is contained in:
GoEdgeLab
2023-06-30 18:10:11 +08:00
parent 0204d75942
commit 9d220a8bc5
3 changed files with 76 additions and 27 deletions

View File

@@ -1,9 +1,11 @@
package models
import (
"encoding/json"
dbutils "github.com/TeaOSLab/EdgeAPI/internal/db/utils"
"github.com/TeaOSLab/EdgeAPI/internal/errors"
"github.com/TeaOSLab/EdgeAPI/internal/utils"
"github.com/TeaOSLab/EdgeCommon/pkg/langs"
_ "github.com/go-sql-driver/mysql"
"github.com/iwind/TeaGo/Tea"
"github.com/iwind/TeaGo/dbs"
@@ -36,7 +38,7 @@ func init() {
}
// CreateLog 创建管理员日志
func (this *LogDAO) CreateLog(tx *dbs.Tx, adminType string, adminId int64, level string, description string, action string, ip string) error {
func (this *LogDAO) CreateLog(tx *dbs.Tx, adminType string, adminId int64, level string, description string, action string, ip string, langMessageCode langs.MessageCode, langMessageArgs []any) error {
var op = NewLogOperator()
op.Level = level
op.Description = utils.LimitString(description, 1000)
@@ -53,6 +55,16 @@ func (this *LogDAO) CreateLog(tx *dbs.Tx, adminType string, adminId int64, level
op.ProviderId = adminId
}
// i18n
op.LangMessageCode = langMessageCode
if len(langMessageArgs) > 0 {
langMessageArgsJSON, err := json.Marshal(langMessageArgs)
if err != nil {
return err
}
op.LangMesageArgs = langMessageArgsJSON
}
op.Day = timeutil.Format("Ymd")
op.Type = LogTypeAdmin
err := this.Save(tx, op)

View File

@@ -1,6 +1,26 @@
package models
// 操作日志
import "github.com/iwind/TeaGo/dbs"
const (
LogFieldId dbs.FieldName = "id" // ID
LogFieldLevel dbs.FieldName = "level" // 级别
LogFieldDescription dbs.FieldName = "description" // 描述
LogFieldCreatedAt dbs.FieldName = "createdAt" // 创建时间
LogFieldAction dbs.FieldName = "action" // 动作
LogFieldUserId dbs.FieldName = "userId" // 用户ID
LogFieldAdminId dbs.FieldName = "adminId" // 管理员ID
LogFieldProviderId dbs.FieldName = "providerId" // 供应商ID
LogFieldIp dbs.FieldName = "ip" // IP地址
LogFieldType dbs.FieldName = "type" // 类型admin, user
LogFieldDay dbs.FieldName = "day" // 日期
LogFieldBillId dbs.FieldName = "billId" // 账单ID
LogFieldLangMessageCode dbs.FieldName = "langMessageCode" // 多语言消息代号
LogFieldLangMesageArgs dbs.FieldName = "langMesageArgs" // 多语言参数
LogFieldParams dbs.FieldName = "params" // 关联对象参数
)
// Log 操作日志
type Log struct {
Id uint32 `field:"id"` // ID
Level string `field:"level"` // 级别
@@ -14,21 +34,27 @@ type Log struct {
Type string `field:"type"` // 类型admin, user
Day string `field:"day"` // 日期
BillId uint32 `field:"billId"` // 账单ID
LangMessageCode string `field:"langMessageCode"` // 多语言消息代号
LangMesageArgs dbs.JSON `field:"langMesageArgs"` // 多语言参数
Params dbs.JSON `field:"params"` // 关联对象参数
}
type LogOperator struct {
Id interface{} // ID
Level interface{} // 级别
Description interface{} // 描述
CreatedAt interface{} // 创建时间
Action interface{} // 动作
UserId interface{} // 用户ID
AdminId interface{} // 管理员ID
ProviderId interface{} // 供应商ID
Ip interface{} // IP地址
Type interface{} // 类型admin, user
Day interface{} // 日期
BillId interface{} // 账单ID
Id any // ID
Level any // 级别
Description any // 描述
CreatedAt any // 创建时间
Action any // 动作
UserId any // 用户ID
AdminId any // 管理员ID
ProviderId any // 供应商ID
Ip any // IP地址
Type any // 类型admin, user
Day any // 日期
BillId any // 账单ID
LangMessageCode any // 多语言消息代号
LangMesageArgs any // 多语言参数
Params any // 关联对象参数
}
func NewLogOperator() *LogOperator {

View File

@@ -2,8 +2,10 @@ package services
import (
"context"
"encoding/json"
"github.com/TeaOSLab/EdgeAPI/internal/db/models"
rpcutils "github.com/TeaOSLab/EdgeAPI/internal/rpc/utils"
"github.com/TeaOSLab/EdgeCommon/pkg/langs"
"github.com/TeaOSLab/EdgeCommon/pkg/rpc/pb"
)
@@ -22,7 +24,16 @@ func (this *LogService) CreateLog(ctx context.Context, req *pb.CreateLogRequest)
var tx = this.NullTx()
err = models.SharedLogDAO.CreateLog(tx, userType, userId, req.Level, req.Description, req.Action, req.Ip)
// i18n
var langMessageArgs = []any{}
if len(req.LangMessagesArgsJSON) > 0 {
err = json.Unmarshal(req.LangMessagesArgsJSON, &langMessageArgs)
if err != nil {
return nil, err
}
}
err = models.SharedLogDAO.CreateLog(tx, userType, userId, req.Level, req.Description, req.Action, req.Ip, langs.MessageCode(req.LangMessageCode), langMessageArgs)
if err != nil {
return nil, err
}