mirror of
				https://github.com/TeaOSLab/EdgeAPI.git
				synced 2025-11-04 07:50:25 +08:00 
			
		
		
		
	日志API增加多语言代号参数
This commit is contained in:
		@@ -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)
 | 
			
		||||
 
 | 
			
		||||
@@ -1,34 +1,60 @@
 | 
			
		||||
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"`       // 级别
 | 
			
		||||
	Description string `field:"description"` // 描述
 | 
			
		||||
	CreatedAt   uint64 `field:"createdAt"`   // 创建时间
 | 
			
		||||
	Action      string `field:"action"`      // 动作
 | 
			
		||||
	UserId      uint32 `field:"userId"`      // 用户ID
 | 
			
		||||
	AdminId     uint32 `field:"adminId"`     // 管理员ID
 | 
			
		||||
	ProviderId  uint32 `field:"providerId"`  // 供应商ID
 | 
			
		||||
	Ip          string `field:"ip"`          // IP地址
 | 
			
		||||
	Type        string `field:"type"`        // 类型:admin, user
 | 
			
		||||
	Day         string `field:"day"`         // 日期
 | 
			
		||||
	BillId      uint32 `field:"billId"`      // 账单ID
 | 
			
		||||
	Id              uint32   `field:"id"`              // ID
 | 
			
		||||
	Level           string   `field:"level"`           // 级别
 | 
			
		||||
	Description     string   `field:"description"`     // 描述
 | 
			
		||||
	CreatedAt       uint64   `field:"createdAt"`       // 创建时间
 | 
			
		||||
	Action          string   `field:"action"`          // 动作
 | 
			
		||||
	UserId          uint32   `field:"userId"`          // 用户ID
 | 
			
		||||
	AdminId         uint32   `field:"adminId"`         // 管理员ID
 | 
			
		||||
	ProviderId      uint32   `field:"providerId"`      // 供应商ID
 | 
			
		||||
	Ip              string   `field:"ip"`              // IP地址
 | 
			
		||||
	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 {
 | 
			
		||||
 
 | 
			
		||||
@@ -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
 | 
			
		||||
	}
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user