From e5a8d3a710c36f4f4d7d10b2569ded0e9c1eadb0 Mon Sep 17 00:00:00 2001 From: meixiongfeng <766881921@qq.com> Date: Thu, 16 Jun 2022 11:39:09 +0800 Subject: [PATCH] =?UTF-8?q?=E6=8E=A5=E5=8F=A3=E4=BF=AE=E6=94=B9=20?= =?UTF-8?q?=E6=95=B0=E6=8D=AE=E5=90=8C=E6=AD=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- modules/core.go | 3 +- modules/dbservice/core.go | 7 --- modules/dbservice/db_comp.go | 27 +++++----- modules/dbservice/mail_test.go | 47 ----------------- modules/model_comp.go | 2 +- sys/cache/init_test.go | 93 ++++++++++++++++++++++++---------- 6 files changed, 81 insertions(+), 98 deletions(-) delete mode 100644 modules/dbservice/mail_test.go diff --git a/modules/core.go b/modules/core.go index d8a7d5da0..8123a7a6c 100644 --- a/modules/core.go +++ b/modules/core.go @@ -5,6 +5,7 @@ import ( "go_dreamfactory/pb" "github.com/golang/protobuf/proto" + "go.mongodb.org/mongo-driver/bson" ) type ( @@ -26,7 +27,7 @@ type ( // 向db 写日志信息 InsertModelLogs(table string, uID string, target interface{}) (err error) DeleteModelLogs(table string, uID string, where interface{}) (err error) - UpdateModelLogs(table string, uID string, where interface{}, target interface{}) (err error) + UpdateModelLogs(table string, uID string, where bson.M, target interface{}) (err error) } IDB_Comp interface { } diff --git a/modules/dbservice/core.go b/modules/dbservice/core.go index f4b9d8432..6c7345fa7 100644 --- a/modules/dbservice/core.go +++ b/modules/dbservice/core.go @@ -2,8 +2,6 @@ package dbservice import ( "go_dreamfactory/lego/core" - - "go.mongodb.org/mongo-driver/bson" ) const ( @@ -16,11 +14,6 @@ var ( ErrorLogCount = make(map[string]uint32, 0) ) -type QueryStruct struct { - Selector bson.M - Query bson.M -} - const ( DB_ModelTable core.SqlTable = "model_log" ) diff --git a/modules/dbservice/db_comp.go b/modules/dbservice/db_comp.go index eab23f4cc..adf78f107 100644 --- a/modules/dbservice/db_comp.go +++ b/modules/dbservice/db_comp.go @@ -89,7 +89,7 @@ func (this *DB_Comp) Model_UpdateDBByLog(uid string) (err error) { log.Errorf("insert db err max num %s db err:%v", data.ID, err) _, err = this.DB.DeleteOne(DB_ModelTable, bson.M{"_id": data.ID}) if err != nil { - log.Errorf("insert %s db err:%v", data.ID, err) + log.Errorf("insert %s db err:%+v", data.ID, err) } } continue @@ -116,7 +116,7 @@ func (this *DB_Comp) Model_UpdateDBByLog(uid string) (err error) { log.Errorf("del db err max num %s db err:%v", data.ID, err) _, err = this.DB.DeleteOne(DB_ModelTable, bson.M{"_id": data.ID}) if err != nil { - log.Errorf("insert %s db err:%v", data.ID, err) + log.Errorf("insert %s db err:%+v", data.ID, err) } } continue @@ -126,20 +126,19 @@ func (this *DB_Comp) Model_UpdateDBByLog(uid string) (err error) { log.Errorf("parameter len _id : %s,uid : %s d.len:%v", data.ID, data.UID, len(data.D)) continue } + _key := data.D[0].(string) - where := data.D[1].(bson.D) - _obj := &QueryStruct{ - Selector: make(map[string]interface{}), - Query: make(map[string]interface{}), + Where := make(bson.M, 0) + Query := make(bson.M, 0) + Query1 := make(bson.M, 0) + Query1["$set"] = Query + for _, v := range data.D[1].(bson.D) { + Where[v.Key] = v } - for _, v := range where { - _obj.Selector[v.Key] = v + for _, v := range data.D[2].(bson.D) { + Query[v.Key] = v } - query := data.D[2].(bson.D) - for _, v := range query { - _obj.Query[v.Key] = v - } - _, err := this.DB.UpdateMany(core.SqlTable(_key), _obj.Selector, _obj.Query) + _, err := this.DB.UpdateMany(core.SqlTable(_key), Where, Query1) if err != nil { log.Errorf("Update %s db err:%v", core.SqlTable(_key), err) ErrorLogCount[data.ID]++ @@ -147,7 +146,7 @@ func (this *DB_Comp) Model_UpdateDBByLog(uid string) (err error) { log.Errorf("update db err max num %s db err:%v", data.ID, err) _, err = this.DB.DeleteOne(DB_ModelTable, bson.M{"_id": data.ID}) if err != nil { - log.Errorf("insert %s db err:%v", data.ID, err) + log.Errorf("insert %s db err:%+v", data.ID, err) } } continue diff --git a/modules/dbservice/mail_test.go b/modules/dbservice/mail_test.go deleted file mode 100644 index 7a7377708..000000000 --- a/modules/dbservice/mail_test.go +++ /dev/null @@ -1,47 +0,0 @@ -package dbservice - -import ( - "go_dreamfactory/pb" - "os" - "testing" - "time" - - "go.mongodb.org/mongo-driver/bson/primitive" -) - -var module = new(DBService) - -func TestMain(m *testing.M) { - for i := 0; i < 50000; i++ { - //go func() { - _mail := &pb.DB_MailData{ - ObjId: primitive.NewObjectID().Hex(), - UserId: "uid123", - Title: "系统邮件", - - Contex: "恭喜获得专属礼包一份", - CreateTime: uint64(time.Now().Unix()), - DueTime: uint64(time.Now().Unix()) + 30*24*3600, - Check: false, - Reward: false, - } - module.db_comp.InsertModelLogs("mail", "uid123", _mail) - //db.InsertModelLogs("mail", "uid123", _mail) - //InsertModelLogs("mail", "uid123", _mail) - // data := &comm.Autogenerated{ - // ID: primitive.NewObjectID().Hex(), - // UID: "uid123", - // Act: string(comm.LogHandleType_Insert), - // } - // data.D = append(data.D, "mail") // D[0] - // data.D = append(data.D, _mail) // D[1] - - // _, err1 := module.db_comp.DB.InsertOne("model_log", data) - // if err1 != nil { - // log.Errorf("insert model db err %v", err1) - // } - //}() - } - time.Sleep(time.Second * 10) - defer os.Exit(m.Run()) -} diff --git a/modules/model_comp.go b/modules/model_comp.go index 05f56da92..6f7a7695a 100644 --- a/modules/model_comp.go +++ b/modules/model_comp.go @@ -79,7 +79,7 @@ func (this *Model_Comp) DeleteModelLogs(table string, uID string, where interfac return err } -func (this *Model_Comp) UpdateModelLogs(table string, uID string, where interface{}, target interface{}) (err error) { +func (this *Model_Comp) UpdateModelLogs(table string, uID string, where bson.M, target interface{}) (err error) { data := &comm.Autogenerated{ ID: primitive.NewObjectID().Hex(), diff --git a/sys/cache/init_test.go b/sys/cache/init_test.go index b2171305f..93a2a8eb9 100644 --- a/sys/cache/init_test.go +++ b/sys/cache/init_test.go @@ -2,16 +2,21 @@ package cache_test import ( "fmt" + "go_dreamfactory/comm" + "go_dreamfactory/lego/sys/log" "go_dreamfactory/pb" "go_dreamfactory/sys/cache" "go_dreamfactory/sys/db" "os" "reflect" "testing" + "time" "go_dreamfactory/utils" "github.com/stretchr/testify/require" + "go.mongodb.org/mongo-driver/bson" + "go.mongodb.org/mongo-driver/bson/primitive" ) //测试环境下初始化db和cache 系统 @@ -24,36 +29,68 @@ func TestMain(m *testing.M) { fmt.Printf("err:%v\n", err) return } - // for i := 0; i < 50000; i++ { - // //go func() { - // _mail := &pb.DB_MailData{ - // ObjId: primitive.NewObjectID().Hex(), - // UserId: "uid123", - // Title: "系统邮件", + for i := 0; i < 50000; i++ { + //go func() { + _mail := &pb.DB_MailData{ + ObjId: primitive.NewObjectID().Hex(), + UserId: "uid123", + Title: "系统邮件", - // Contex: "恭喜获得专属礼包一份", - // CreateTime: uint64(time.Now().Unix()), - // DueTime: uint64(time.Now().Unix()) + 30*24*3600, - // Check: false, - // Reward: false, - // } - // //db.InsertModelLogs("mail", "uid123", _mail) - // //InsertModelLogs("mail", "uid123", _mail) - // data := &comm.Autogenerated{ - // ID: primitive.NewObjectID().Hex(), - // UID: "uid123", - // Act: string(comm.LogHandleType_Insert), - // } - // data.D = append(data.D, "mail") // D[0] - // data.D = append(data.D, _mail) // D[1] + Contex: "恭喜获得专属礼包一份", + CreateTime: uint64(time.Now().Unix()), + DueTime: uint64(time.Now().Unix()) + 30*24*3600, + Check: false, + Reward: false, + } + //db.InsertModelLogs("mail", "uid123", _mail) + db.Defsys.Mgo().InsertOne("mail", _mail) + data := &comm.Autogenerated{ + ID: primitive.NewObjectID().Hex(), + UID: "uid123", + Act: string(comm.LogHandleType_Insert), + } + data.D = append(data.D, "mail") // D[0] + data.D = append(data.D, _mail) // D[1] - // _, err1 := db.Defsys.Mgo().InsertOne("model_log", data) - // if err1 != nil { - // log.Errorf("insert model db err %v", err1) - // } - // //}() - // } - // time.Sleep(time.Second * 10) + _, err1 := db.Defsys.Mgo().InsertOne("model_log", data) + if err1 != nil { + log.Errorf("insert model db err %v", err1) + } + //}() + + /////////////////////////////////////// + filter := bson.M{ + "userid": "uid123", + "title": "系统邮件", + } + var nd *pb.DB_MailData + err := db.Defsys.Mgo().FindOne("mail", filter).Decode(&nd) + if err == nil { + nd.Check = true + nd.Reward = true + + data1 := &comm.Autogenerated{ + ID: primitive.NewObjectID().Hex(), + UID: "uid123", + Act: string(comm.LogHandleType_Update), + } + filter1 := bson.M{ + "userid": "uid123", + "title": "系统邮件", + } + data1.D = make([]interface{}, 0) + data1.D = append(data1.D, "mail") // D[0] + data1.D = append(data1.D, &filter1) // D[1] + data1.D = append(data1.D, nd) // D[2] + + _, err = db.Defsys.Mgo().InsertOne("model_log", data1) + if err != nil { + log.Errorf("insert model db err %v", err) + } + + } + } + time.Sleep(time.Second * 10) defer os.Exit(m.Run())