写日志 封装接口

This commit is contained in:
meixiongfeng 2022-06-13 20:50:03 +08:00
parent a36305f174
commit 0c4ece6630
7 changed files with 102 additions and 36 deletions

View File

@ -28,7 +28,7 @@ const (
SM_PackModule core.M_Modules = "pack" //背包模块 SM_PackModule core.M_Modules = "pack" //背包模块
SM_MailModule core.M_Modules = "mail" //邮件模块 SM_MailModule core.M_Modules = "mail" //邮件模块
SM_FriendModule core.M_Modules = "friend" //好友模块 SM_FriendModule core.M_Modules = "friend" //好友模块
SM_LogModelMueule core.M_Modules = "model" //日志模块 SM_LogModelModule core.M_Modules = "model" //日志模块
) )
//RPC服务接口定义处 //RPC服务接口定义处
@ -55,6 +55,21 @@ type ISC_GateRouteComp interface {
RegisterRoute(methodName string, comp reflect.Value, msg reflect.Type, fn reflect.Method) RegisterRoute(methodName string, comp reflect.Value, msg reflect.Type, fn reflect.Method)
} }
type Autogenerated struct {
ID string `json:"_id"`
UID string `json:"uid"`
Act string `json:"act"` // insert update delete
D []interface{}
}
type LogHandleType string
const (
LogHandleType_Insert LogHandleType = "insert"
LogHandleType_Update LogHandleType = "update"
LogHandleType_Delete LogHandleType = "delete"
)
//用户会话 //用户会话
type IUserSession interface { type IUserSession interface {
GetSessionId() string GetSessionId() string

View File

@ -18,7 +18,4 @@ type (
///添加多个物品到背包 (可以加物品和减物品) ///添加多个物品到背包 (可以加物品和减物品)
AddItemsToUserPack(uId string, items map[int32]int32) (err error) AddItemsToUserPack(uId string, items map[int32]int32) (err error)
} }
Imodel interface {
AddModelLogs() (err error)
}
) )

View File

@ -15,13 +15,10 @@ type (
SendMsgToUser(mainType, subType string, msg proto.Message, user *pb.Cache_UserData) (err error) SendMsgToUser(mainType, subType string, msg proto.Message, user *pb.Cache_UserData) (err error)
///向多个用户发送消息 ///向多个用户发送消息
SendMsgToUsers(mainType, subType string, msg proto.Message, user ...*pb.Cache_UserData) (err error) SendMsgToUsers(mainType, subType string, msg proto.Message, user ...*pb.Cache_UserData) (err error)
// 向db 写日志信息
InsertModelLogs(table string, uID string, handle interface{}) (err error)
DeleteModelLogs(table string, uID string, where interface{}) (err error)
UpdateModelLogs(table string, uID string, where interface{}, handle interface{}) (err error)
} }
) )
type LogHandleType string
const (
LogHandleType_Insert LogHandleType = "insert"
LogHandleType_Update LogHandleType = "update"
LogHandleType_Delete LogHandleType = "delete"
)

View File

@ -1,11 +1,15 @@
package modules package modules
import ( import (
"go_dreamfactory/comm"
"go_dreamfactory/lego/base" "go_dreamfactory/lego/base"
"go_dreamfactory/lego/core" "go_dreamfactory/lego/core"
"go_dreamfactory/lego/core/cbase" "go_dreamfactory/lego/core/cbase"
"go_dreamfactory/lego/sys/log"
"go_dreamfactory/lego/sys/mgo" "go_dreamfactory/lego/sys/mgo"
"go_dreamfactory/sys/db" "go_dreamfactory/sys/db"
"go.mongodb.org/mongo-driver/bson/primitive"
) )
/* /*
@ -13,8 +17,9 @@ import (
*/ */
type MComp_DBComp struct { type MComp_DBComp struct {
cbase.ModuleCompBase cbase.ModuleCompBase
S base.IRPCXService //rpc服务对象 S base.IRPCXService //rpc服务对象
M core.IModule //当前业务模块 M core.IModule //当前业务模块
DB mgo.ISys DB mgo.ISys
} }
@ -26,3 +31,62 @@ func (this *MComp_DBComp) Init(service core.IService, module core.IModule, comp
this.DB = db.Mgo() this.DB = db.Mgo()
return return
} }
func (this *MComp_DBComp) Start() (err error) {
err = this.ModuleCompBase.Start()
return
}
func (this *MComp_DBComp) InsertModelLogs(table string, uID string, dbType comm.LogHandleType, where interface{}, target interface{}) (err error) {
data := &comm.Autogenerated{
ID: primitive.NewObjectID().Hex(),
UID: uID,
Act: string(dbType),
}
data.D = append(data.D, table) // D[0]
data.D = append(data.D, target) // D[1]
_, err = this.DB.InsertOne("model", data)
if err != nil {
log.Errorf("insert model db err %v", err)
}
return err
}
func (this *MComp_DBComp) DeleteModelLogs(table string, uID string, dbType comm.LogHandleType, where interface{}, target interface{}) (err error) {
data := &comm.Autogenerated{
ID: primitive.NewObjectID().Hex(),
UID: uID,
Act: string(dbType),
}
data.D = append(data.D, table) // D[0]
data.D = append(data.D, where) // D[1]
_, err = this.DB.InsertOne("model", data)
if err != nil {
log.Errorf("insert model db err %v", err)
}
return err
}
func (this *MComp_DBComp) UpdateModelLogs(table string, uID string, dbType comm.LogHandleType, where interface{}, target interface{}) (err error) {
data := &comm.Autogenerated{
ID: primitive.NewObjectID().Hex(),
UID: uID,
Act: string(dbType),
}
data.D = append(data.D, table) // D[0]
data.D = append(data.D, where) // D[1]
data.D = append(data.D, target) // D[2]
_, err = this.DB.InsertOne("model", data)
if err != nil {
log.Errorf("insert model db err %v", err)
}
return err
}

View File

@ -3,11 +3,11 @@ package model
import ( import (
"context" "context"
"errors" "errors"
"go_dreamfactory/comm"
"go_dreamfactory/lego/core" "go_dreamfactory/lego/core"
"go_dreamfactory/lego/core/cbase" "go_dreamfactory/lego/core/cbase"
"go_dreamfactory/lego/sys/log" "go_dreamfactory/lego/sys/log"
"go_dreamfactory/lego/sys/mgo" "go_dreamfactory/lego/sys/mgo"
"go_dreamfactory/modules"
"go.mongodb.org/mongo-driver/bson" "go.mongodb.org/mongo-driver/bson"
"go.mongodb.org/mongo-driver/mongo/options" "go.mongodb.org/mongo-driver/mongo/options"
@ -21,12 +21,6 @@ type DB_Comp struct {
cbase.ModuleCompBase cbase.ModuleCompBase
mgo mgo.ISys mgo mgo.ISys
} }
type Autogenerated struct {
ID string `json:"_id"`
UID string `json:"uid"`
Act string `json:"act"` // insert update delete
D []interface{}
}
// type data struct { // type data struct {
// Table string // Table string
@ -44,12 +38,12 @@ const (
) )
type IModel interface { type IModel interface {
Model_UpdateDBBylog() (err error) // 读取日志并更新对应的表 Model_UpdateDBByLog() (err error) // 读取日志并更新对应的表
Model_InsertDBBylog(data *Autogenerated) (err error) // 插入日志 Model_InsertDBByLog(data *comm.Autogenerated) (err error) // 插入日志
Model_UpdateUserDataByUid(uid string) (err error) // 读取指定玩家信息到db中 Model_UpdateUserDataByUid(uid string) (err error) // 读取指定玩家信息到db中
} }
func (this *DB_Comp) Model_UpdateDBBylog() (err error) { func (this *DB_Comp) Model_UpdateDBByLog() (err error) {
_delID := make([]string, 0) // 处理完成要删除的id _delID := make([]string, 0) // 处理完成要删除的id
_data, err := this.mgo.Find(DB_ModelTable, bson.M{}, options.Find().SetLimit(int64(WriteMaxNum))) _data, err := this.mgo.Find(DB_ModelTable, bson.M{}, options.Find().SetLimit(int64(WriteMaxNum)))
@ -57,7 +51,7 @@ func (this *DB_Comp) Model_UpdateDBBylog() (err error) {
return err return err
} }
for _data.Next(context.TODO()) { // 处理删除逻辑 for _data.Next(context.TODO()) { // 处理删除逻辑
data := &Autogenerated{} data := &comm.Autogenerated{}
if err = _data.Decode(data); err == nil { if err = _data.Decode(data); err == nil {
_delID = append(_delID, data.ID) _delID = append(_delID, data.ID)
} else { } else {
@ -66,7 +60,7 @@ func (this *DB_Comp) Model_UpdateDBBylog() (err error) {
} }
log.Debugf("======= insert log : %+v =======", data) log.Debugf("======= insert log : %+v =======", data)
if data.Act == string(modules.LogHandleType_Insert) { if data.Act == string(comm.LogHandleType_Insert) {
if len(data.D) < 2 { // 参数校验 if len(data.D) < 2 { // 参数校验
log.Errorf("parameter len _id : %s,uid : %s d.len:%v", data.ID, data.UID, len(data.D)) log.Errorf("parameter len _id : %s,uid : %s d.len:%v", data.ID, data.UID, len(data.D))
return errors.New("parameter len err") return errors.New("parameter len err")
@ -76,7 +70,7 @@ func (this *DB_Comp) Model_UpdateDBBylog() (err error) {
if err != nil { if err != nil {
log.Errorf("insert %s db err:%v", data.D[0].(core.SqlTable), err) log.Errorf("insert %s db err:%v", data.D[0].(core.SqlTable), err)
} }
} else if data.Act == string(modules.LogHandleType_Delete) { } else if data.Act == string(comm.LogHandleType_Delete) {
if len(data.D) < 2 { // 参数校验 if len(data.D) < 2 { // 参数校验
log.Errorf("parameter len _id : %s,uid : %s d.len:%v", data.ID, data.UID, len(data.D)) log.Errorf("parameter len _id : %s,uid : %s d.len:%v", data.ID, data.UID, len(data.D))
return errors.New("parameter len err") return errors.New("parameter len err")
@ -110,7 +104,7 @@ func (this *DB_Comp) Model_UpdateDBBylog() (err error) {
return return
} }
func (this *DB_Comp) Model_InsertDBBylog(data *Autogenerated) (err error) { func (this *DB_Comp) Model_InsertDBByLog(data *comm.Autogenerated) (err error) {
_, err = this.mgo.InsertOne(DB_ModelTable, data) _, err = this.mgo.InsertOne(DB_ModelTable, data)
if err != nil { if err != nil {
@ -127,7 +121,7 @@ func (this *DB_Comp) Model_UpdateUserDataByUid(uid string) (err error) {
return err return err
} }
for _data.Next(context.TODO()) { // 处理删除逻辑 for _data.Next(context.TODO()) { // 处理删除逻辑
data := &Autogenerated{} data := &comm.Autogenerated{}
if err = _data.Decode(data); err == nil { if err = _data.Decode(data); err == nil {
_delID = append(_delID, data.ID) _delID = append(_delID, data.ID)
} else { } else {
@ -136,17 +130,16 @@ func (this *DB_Comp) Model_UpdateUserDataByUid(uid string) (err error) {
} }
log.Debugf("======= insert log : %+v =======", data) log.Debugf("======= insert log : %+v =======", data)
if data.Act == string(modules.LogHandleType_Insert) { if data.Act == string(comm.LogHandleType_Insert) {
if len(data.D) < 2 { // 参数校验 if len(data.D) < 2 { // 参数校验
log.Errorf("parameter len _id : %s,uid : %s d.len:%v", data.ID, data.UID, len(data.D)) log.Errorf("parameter len _id : %s,uid : %s d.len:%v", data.ID, data.UID, len(data.D))
return errors.New("parameter len err") return errors.New("parameter len err")
} }
query := data.D[1].([]interface{}) _, err := this.mgo.InsertMany(data.D[0].(core.SqlTable), data.D[1].([]interface{}))
_, err := this.mgo.InsertMany(data.D[0].(core.SqlTable), query)
if err != nil { if err != nil {
log.Errorf("insert %s db err:%v", data.D[0].(core.SqlTable), err) log.Errorf("insert %s db err:%v", data.D[0].(core.SqlTable), err)
} }
} else if data.Act == string(modules.LogHandleType_Delete) { } else if data.Act == string(comm.LogHandleType_Delete) {
if len(data.D) < 2 { // 参数校验 if len(data.D) < 2 { // 参数校验
log.Errorf("parameter len _id : %s,uid : %s d.len:%v", data.ID, data.UID, len(data.D)) log.Errorf("parameter len _id : %s,uid : %s d.len:%v", data.ID, data.UID, len(data.D))
return errors.New("parameter len err") return errors.New("parameter len err")

View File

@ -29,7 +29,7 @@ func (this *DBService_Comp) run() {
case v := <-this.task: case v := <-this.task:
this.Model_UpdateUserDataByUid(v) this.Model_UpdateUserDataByUid(v)
case <-time.After(time.Second): case <-time.After(time.Second):
this.Model_UpdateDBBylog() this.Model_UpdateDBByLog()
} }
} }
} }

View File

@ -31,7 +31,7 @@ func (this *Model) Start() (err error) {
} }
func (this *Model) GetType() core.M_Modules { func (this *Model) GetType() core.M_Modules {
return comm.SM_LogModelMueule return comm.SM_LogModelModule
} }
func (this *Model) OnInstallComp() { func (this *Model) OnInstallComp() {