写日志 封装接口

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_MailModule core.M_Modules = "mail" //邮件模块
SM_FriendModule core.M_Modules = "friend" //好友模块
SM_LogModelMueule core.M_Modules = "model" //日志模块
SM_LogModelModule core.M_Modules = "model" //日志模块
)
//RPC服务接口定义处
@ -55,6 +55,21 @@ type ISC_GateRouteComp interface {
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 {
GetSessionId() string

View File

@ -18,7 +18,4 @@ type (
///添加多个物品到背包 (可以加物品和减物品)
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)
///向多个用户发送消息
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
import (
"go_dreamfactory/comm"
"go_dreamfactory/lego/base"
"go_dreamfactory/lego/core"
"go_dreamfactory/lego/core/cbase"
"go_dreamfactory/lego/sys/log"
"go_dreamfactory/lego/sys/mgo"
"go_dreamfactory/sys/db"
"go.mongodb.org/mongo-driver/bson/primitive"
)
/*
@ -13,8 +17,9 @@ import (
*/
type MComp_DBComp struct {
cbase.ModuleCompBase
S base.IRPCXService //rpc服务对象
M core.IModule //当前业务模块
S base.IRPCXService //rpc服务对象
M core.IModule //当前业务模块
DB mgo.ISys
}
@ -26,3 +31,62 @@ func (this *MComp_DBComp) Init(service core.IService, module core.IModule, comp
this.DB = db.Mgo()
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 (
"context"
"errors"
"go_dreamfactory/comm"
"go_dreamfactory/lego/core"
"go_dreamfactory/lego/core/cbase"
"go_dreamfactory/lego/sys/log"
"go_dreamfactory/lego/sys/mgo"
"go_dreamfactory/modules"
"go.mongodb.org/mongo-driver/bson"
"go.mongodb.org/mongo-driver/mongo/options"
@ -21,12 +21,6 @@ type DB_Comp struct {
cbase.ModuleCompBase
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 {
// Table string
@ -44,12 +38,12 @@ const (
)
type IModel interface {
Model_UpdateDBBylog() (err error) // 读取日志并更新对应的表
Model_InsertDBBylog(data *Autogenerated) (err error) // 插入日志
Model_UpdateUserDataByUid(uid string) (err error) // 读取指定玩家信息到db中
Model_UpdateDBByLog() (err error) // 读取日志并更新对应的表
Model_InsertDBByLog(data *comm.Autogenerated) (err error) // 插入日志
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
_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
}
for _data.Next(context.TODO()) { // 处理删除逻辑
data := &Autogenerated{}
data := &comm.Autogenerated{}
if err = _data.Decode(data); err == nil {
_delID = append(_delID, data.ID)
} else {
@ -66,7 +60,7 @@ func (this *DB_Comp) Model_UpdateDBBylog() (err error) {
}
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 { // 参数校验
log.Errorf("parameter len _id : %s,uid : %s d.len:%v", data.ID, data.UID, len(data.D))
return errors.New("parameter len err")
@ -76,7 +70,7 @@ func (this *DB_Comp) Model_UpdateDBBylog() (err error) {
if err != nil {
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 { // 参数校验
log.Errorf("parameter len _id : %s,uid : %s d.len:%v", data.ID, data.UID, len(data.D))
return errors.New("parameter len err")
@ -110,7 +104,7 @@ func (this *DB_Comp) Model_UpdateDBBylog() (err error) {
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)
if err != nil {
@ -127,7 +121,7 @@ func (this *DB_Comp) Model_UpdateUserDataByUid(uid string) (err error) {
return err
}
for _data.Next(context.TODO()) { // 处理删除逻辑
data := &Autogenerated{}
data := &comm.Autogenerated{}
if err = _data.Decode(data); err == nil {
_delID = append(_delID, data.ID)
} else {
@ -136,17 +130,16 @@ func (this *DB_Comp) Model_UpdateUserDataByUid(uid string) (err error) {
}
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 { // 参数校验
log.Errorf("parameter len _id : %s,uid : %s d.len:%v", data.ID, data.UID, len(data.D))
return errors.New("parameter len err")
}
query := data.D[1].([]interface{})
_, err := this.mgo.InsertMany(data.D[0].(core.SqlTable), query)
_, err := this.mgo.InsertMany(data.D[0].(core.SqlTable), data.D[1].([]interface{}))
if err != nil {
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 { // 参数校验
log.Errorf("parameter len _id : %s,uid : %s d.len:%v", data.ID, data.UID, len(data.D))
return errors.New("parameter len err")

View File

@ -29,7 +29,7 @@ func (this *DBService_Comp) run() {
case v := <-this.task:
this.Model_UpdateUserDataByUid(v)
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 {
return comm.SM_LogModelMueule
return comm.SM_LogModelModule
}
func (this *Model) OnInstallComp() {