From 398783c256f28a4c058900b9febb8f20170363be Mon Sep 17 00:00:00 2001 From: liwei1dao Date: Tue, 26 Jul 2022 20:12:32 +0800 Subject: [PATCH] =?UTF-8?q?=E4=B8=8A=E4=BC=A0item=20=E5=86=99=E5=85=A5mgo?= =?UTF-8?q?=E6=97=A5=E5=BF=97=E5=BC=82=E5=B8=B8bug=E4=BF=AE=E5=A4=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lego/core/cbase/servicebase.go | 62 ++++++++++++++++++---------------- modules/items/api_getlist.go | 16 ++++----- modules/items/modelitems.go | 6 ---- 3 files changed, 39 insertions(+), 45 deletions(-) diff --git a/lego/core/cbase/servicebase.go b/lego/core/cbase/servicebase.go index 86f6cac58..47b27eae1 100644 --- a/lego/core/cbase/servicebase.go +++ b/lego/core/cbase/servicebase.go @@ -92,43 +92,45 @@ func (this *ServiceBase) Start() (err error) { //运行模块 func (this *ServiceBase) Run(mod ...core.IModule) { - for _, v := range mod { //初始化模块对象 分配配置参数 - if sf, ok := this.service.GetSettings().Modules[string(v.GetType())]; ok { - this.modules[v.GetType()] = &defaultModule{ - seetring: sf, - mi: v, - closeSig: make(chan bool, 1), + go func() { + for _, v := range mod { //初始化模块对象 分配配置参数 + if sf, ok := this.service.GetSettings().Modules[string(v.GetType())]; ok { + this.modules[v.GetType()] = &defaultModule{ + seetring: sf, + mi: v, + closeSig: make(chan bool, 1), + } + } else { + this.modules[v.GetType()] = &defaultModule{ + seetring: make(map[string]interface{}), + mi: v, + closeSig: make(chan bool, 1), + } } - } else { - this.modules[v.GetType()] = &defaultModule{ - seetring: make(map[string]interface{}), - mi: v, - closeSig: make(chan bool, 1), + log.Infof("注册模块【%s】", v.GetType()) + } + for _, v := range this.modules { //序列化每一个模块的参数对象 完成模块的初始化 过程 + options := v.mi.NewOptions() + if err := options.LoadConfig(v.seetring); err == nil { + err := v.mi.Init(this.service, v.mi, options) + if err != nil { + log.Panicf(fmt.Sprintf("初始化模块【%s】错误 err:%v", v.mi.GetType(), err)) + } + } else { + log.Panicf(fmt.Sprintf("模块【%s】 Options:%v 配置错误 err:%v", v.mi.GetType(), v.seetring, err)) } } - log.Infof("注册模块【%s】", v.GetType()) - } - for _, v := range this.modules { //序列化每一个模块的参数对象 完成模块的初始化 过程 - options := v.mi.NewOptions() - if err := options.LoadConfig(v.seetring); err == nil { - err := v.mi.Init(this.service, v.mi, options) + for _, v := range this.modules { //完成模块的启动过程 + err := v.mi.Start() if err != nil { - log.Panicf(fmt.Sprintf("初始化模块【%s】错误 err:%v", v.mi.GetType(), err)) + log.Panicf(fmt.Sprintf("启动模块【%s】错误 err:%v", v.mi.GetType(), err)) } - } else { - log.Panicf(fmt.Sprintf("模块【%s】 Options:%v 配置错误 err:%v", v.mi.GetType(), v.seetring, err)) } - } - for _, v := range this.modules { //完成模块的启动过程 - err := v.mi.Start() - if err != nil { - log.Panicf(fmt.Sprintf("启动模块【%s】错误 err:%v", v.mi.GetType(), err)) + for _, v := range this.modules { //启动模块的独立协程 + go v.run() } - } - for _, v := range this.modules { //启动模块的独立协程 - go v.run() - } - event.TriggerEvent(core.Event_ServiceStartEnd) //广播服务启动完毕事件 + event.TriggerEvent(core.Event_ServiceStartEnd) //广播服务启动完毕事件 + }() //监听外部关闭服务信号 c := make(chan os.Signal, 1) //添加进程结束信号 diff --git a/modules/items/api_getlist.go b/modules/items/api_getlist.go index b6429da06..1459c0153 100644 --- a/modules/items/api_getlist.go +++ b/modules/items/api_getlist.go @@ -26,16 +26,13 @@ func (this *apiComp) Getlist(session comm.IUserSession, req *pb.ItemsGetlistReq) dels []*pb.DB_UserItemData ) defer func() { - session.SendMsg(string(this.module.GetType()), "getlist", &pb.ItemsGetlistResp{Grids: items}) if code == pb.ErrorCode_Success { - go func() { //异步处理修改数据 - if len(modifys) > 0 { - this.module.modelItems.UpdateUserPack(session.GetUserId(), modifys...) - } - if len(dels) > 0 { - this.module.modelItems.DeleteUserPack(session.GetUserId(), dels...) - } - }() + if len(modifys) > 0 { + this.module.modelItems.UpdateUserPack(session.GetUserId(), modifys...) + } + if len(dels) > 0 { + this.module.modelItems.DeleteUserPack(session.GetUserId(), dels...) + } } }() @@ -61,5 +58,6 @@ func (this *apiComp) Getlist(session comm.IUserSession, req *pb.ItemsGetlistReq) } } } + session.SendMsg(string(this.module.GetType()), "getlist", &pb.ItemsGetlistResp{Grids: items}) return } diff --git a/modules/items/modelitems.go b/modules/items/modelitems.go index a8e008697..6d7e919ef 100644 --- a/modules/items/modelitems.go +++ b/modules/items/modelitems.go @@ -1,7 +1,6 @@ package items import ( - "errors" "fmt" "go_dreamfactory/lego/core" "go_dreamfactory/modules" @@ -68,11 +67,6 @@ func (this *ModelItemsComp) DelUserPack(uId string, ids ...string) (err error) { //更新用户的背包信息 func (this *ModelItemsComp) UpdateUserPack(uid string, itmes ...*pb.DB_UserItemData) (err error) { - if len(uid) == 0 { - err = errors.New("UpdateUserPack uid is nil") - this.module.Panicf("err:%v", err) - return - } for _, v := range itmes { this.ChangeList(uid, v.GridId, map[string]interface{}{ "amount": v.Amount,