报错修改

This commit is contained in:
meixiongfeng 2022-06-15 18:37:36 +08:00
parent f6ccb37e3b
commit d9a5fbe5ba
2 changed files with 87 additions and 12 deletions

View File

@ -15,12 +15,14 @@ import (
type DB_Comp struct { type DB_Comp struct {
modules.Model_Comp modules.Model_Comp
task chan string task chan string
_data *mongo.Cursor
} }
func (this *DB_Comp) Init(service core.IService, module core.IModule, comp core.IModuleComp, options core.IModuleOptions) (err error) { func (this *DB_Comp) Init(service core.IService, module core.IModule, comp core.IModuleComp, options core.IModuleOptions) (err error) {
this.Model_Comp.Init(service, module, comp, options) this.Model_Comp.Init(service, module, comp, options)
this.task = make(chan string, TaskMaxNum) this.task = make(chan string, TaskMaxNum)
this._data = new(mongo.Cursor)
return return
} }
@ -46,24 +48,24 @@ func (this *DB_Comp) PushUserTask(uid string) {
} }
func (this *DB_Comp) Model_UpdateDBByLog(uid string) (err error) { func (this *DB_Comp) Model_UpdateDBByLog(uid string) (err error) {
_data := &mongo.Cursor{}
if uid == "" { if uid == "" {
_data, err = this.DB.Find(DB_ModelTable, bson.M{}, options.Find().SetLimit(int64(WriteMaxNum))) this._data, err = this.DB.Find(DB_ModelTable, bson.M{}, options.Find().SetLimit(int64(WriteMaxNum)))
if err != nil { if err != nil {
return err return err
} }
} else { } else {
_data, err = this.DB.Find(DB_ModelTable, bson.M{"uid": uid}, options.Find()) this._data, err = this.DB.Find(DB_ModelTable, bson.M{"uid": uid}, options.Find())
if err != nil { if err != nil {
return err return err
} }
} }
_delID := make([]string, 0) // 处理完成要删除的id _delID := make([]string, 0) // 处理完成要删除的id
for _data.Next(context.TODO()) { // 处理删除逻辑 for this._data.Next(context.TODO()) { // 处理删除逻辑
data := &comm.Autogenerated{} data := &comm.Autogenerated{}
if err = _data.Decode(data); err != nil { if err = this._data.Decode(data); err != nil {
log.Errorf("Decode Data err : %v", err) log.Errorf("Decode Data err : %v", err)
continue continue
} }
@ -126,7 +128,10 @@ func (this *DB_Comp) Model_UpdateDBByLog(uid string) (err error) {
} }
_key := data.D[0].(string) _key := data.D[0].(string)
where := data.D[1].(bson.D) where := data.D[1].(bson.D)
_obj := &QueryStruct{} _obj := &QueryStruct{
Selector: make(map[string]interface{}),
Query: make(map[string]interface{}),
}
for _, v := range where { for _, v := range where {
_obj.Selector[v.Key] = v _obj.Selector[v.Key] = v
} }
@ -150,11 +155,14 @@ func (this *DB_Comp) Model_UpdateDBByLog(uid string) (err error) {
} }
_delID = append(_delID, data.ID) // 都操作都成功了记录要删除的key _delID = append(_delID, data.ID) // 都操作都成功了记录要删除的key
} }
// 批量删除已处理的数据
_, err = this.DB.DeleteMany(DB_ModelTable, bson.M{"_id": bson.M{"$in": _delID}}, options.Delete()) if len(_delID) > 0 {
if err != nil { _, err = this.DB.DeleteMany(DB_ModelTable, bson.M{"_id": bson.M{"$in": _delID}}, options.Delete()) // 批量删除已处理的数据
log.Errorf("del err %v", err) if err != nil {
log.Errorf("del err %v", err)
}
} }
return return
} }

View File

@ -0,0 +1,67 @@
package main
import (
"flag"
"fmt"
"go_dreamfactory/modules/dbservice"
"go_dreamfactory/services"
"go_dreamfactory/sys/cache"
"go_dreamfactory/sys/db"
"go_dreamfactory/lego"
"go_dreamfactory/lego/base/rpcx"
"go_dreamfactory/lego/core"
"go_dreamfactory/lego/sys/log"
)
/*
服务类型:dbservice
服务描述:处理梦工厂的具体业务需求包含 user,pack,mail,friend...功能业务模块
*/
var (
conf = flag.String("conf", "./conf/dbservice.yaml", "获取需要启动的服务配置文件") //启动服务的Id
)
/*服务启动的入口函数*/
func main() {
flag.Parse()
s := NewService(
rpcx.SetConfPath(*conf),
rpcx.SetVersion("1.0.0.0"),
)
s.OnInstallComp( //装备组件
//services.NewGateRouteComp(), //此服务需要接受用户的消息 需要装备网关组件
)
lego.Run(s, //运行模块
dbservice.NewModule(),
)
}
func NewService(ops ...rpcx.Option) core.IService {
s := new(Service)
s.Configure(ops...)
return s
}
//worker 的服务对象定义
type Service struct {
services.ServiceBase
}
//初始化worker需要的一些系统工具
func (this *Service) InitSys() {
this.ServiceBase.InitSys()
//缓存系统
if err := cache.OnInit(this.GetSettings().Sys["cache"]); err != nil {
panic(fmt.Sprintf("init sys.cache err: %s", err.Error()))
} else {
log.Infof("init sys.cache success!")
}
//存储系统
if err := db.OnInit(this.GetSettings().Sys["db"]); err != nil {
panic(fmt.Sprintf("init sys.db err: %s", err.Error()))
} else {
log.Infof("init sys.db success!")
}
}