接口修改 数据同步

This commit is contained in:
meixiongfeng 2022-06-16 11:39:09 +08:00
parent 3879ccf652
commit e5a8d3a710
6 changed files with 81 additions and 98 deletions

View File

@ -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 {
}

View File

@ -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"
)

View File

@ -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

View File

@ -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())
}

View File

@ -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(),

View File

@ -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())