diff --git a/cmd/v2/service/connService.go b/cmd/v2/service/connService.go index 2d696c7ba..73cb15467 100644 --- a/cmd/v2/service/connService.go +++ b/cmd/v2/service/connService.go @@ -86,28 +86,21 @@ func (c *ConnServiceImpl) ListenerPush() { methodStr := msg.Data.TypeUrl methodName := common.SubStr(methodStr, 20, len(methodStr)) p := &model.PushModel{ - // MainType: msg.MainType, - // SubType: msg.SubType, MethodName: methodName, DataTime: time.Now().Format(time.RFC3339), - // Rsp: msg.Data, - Msg: msg, + Msg: msg, } logrus.WithFields( logrus.Fields{"MainType": msg.MainType, "SubType": msg.SubType}, ).Debug(methodName) renderRespPanel := func(p *model.PushModel) { - // data, err := anypb.New(p.Msg) - // if err != nil { - // logrus.Error(err) - // return - // } - c.obs.Notify(observer.EVENT_CASE_RSP, p.Msg) + c.obs.Notify(observer.EVENT_REQ_RSP, p.Msg) } if strings.HasSuffix(methodName, "Push") { - c.obs.Notify(observer.EVENT_APP_PUSH, p) + c.obs.Notify(observer.EVENT_APP_MONI, p) + c.obs.Notify(observer.EVENT_USER_CHANGE, p) if methodName == "NotifyErrorNotifyPush" { renderRespPanel(p) } diff --git a/cmd/v2/service/observer/event.go b/cmd/v2/service/observer/event.go index dd2a7e1a2..5a6129629 100644 --- a/cmd/v2/service/observer/event.go +++ b/cmd/v2/service/observer/event.go @@ -5,9 +5,10 @@ const ( //用户详情 EVENT_USERINFO Event = "userinfo" //协议推送 - EVENT_APP_PUSH Event = "push" + EVENT_APP_MONI Event = "push" + EVENT_USER_CHANGE = "chanage" //测试用例响应事件 - EVENT_CASE_RSP Event = "response" + EVENT_REQ_RSP Event = "response" // 清空 ui数据事件 EVENT_UI_CLEAN = "uiclean" ) diff --git a/cmd/v2/service/pttService.go b/cmd/v2/service/pttService.go index b089642a1..239fc4c98 100644 --- a/cmd/v2/service/pttService.go +++ b/cmd/v2/service/pttService.go @@ -15,8 +15,8 @@ var ( ) type PttService interface { - Login(sid, account string) (code pb.ErrorCode, rsp *pb.UserLoginResp) - CreateRole(nickName string) (code pb.ErrorCode, rsp *pb.UserCreateResp) + Login(sid, account string) (code pb.ErrorCode) + CreateRole(nickName string) (code pb.ErrorCode) GetUser() *UserInfo SetUser(dbUser *pb.DBUser, dbUserExpand *pb.DBUserExpand) SendToClient(mainType, subType string, rsp proto.Message) error @@ -61,7 +61,7 @@ func (p *PttServiceImpl) SendToClient(mainType, subType string, rsp proto.Messag } // Login -func (p *PttServiceImpl) Login(sid, account string) (code pb.ErrorCode, rsp *pb.UserLoginResp) { +func (p *PttServiceImpl) Login(sid, account string) (code pb.ErrorCode) { head := &pb.UserMessage{MainType: string(comm.ModuleUser), SubType: user.UserSubTypeLogin} head.Sec = common.BuildSecStr(sid, account) if err := p.connService.SendMsg(head, &pb.UserLoginReq{ @@ -72,29 +72,11 @@ func (p *PttServiceImpl) Login(sid, account string) (code pb.ErrorCode, rsp *pb. logrus.WithField("err", err).Error("Login") return } - - //respone - for { - if cd, msg := p.connService.ReceiveMsg(); cd != pb.ErrorCode_Success { - code = cd - break - } else { - //suc - rsp = &pb.UserLoginResp{} - if msg.MainType == string(comm.ModuleUser) && msg.SubType == user.UserSubTypeLogin { - if !comm.ProtoUnmarshal(msg, rsp) { - code = pb.ErrorCode_PbError - return - } - break - } - } - } return } // create role -func (p *PttServiceImpl) CreateRole(nickName string) (code pb.ErrorCode, rsp *pb.UserCreateResp) { +func (p *PttServiceImpl) CreateRole(nickName string) (code pb.ErrorCode) { head := &pb.UserMessage{MainType: string(comm.ModuleUser), SubType: user.UserSubTypeCreate} head.Sec = common.BuildSecStr(p.user.DbUser.Sid, p.user.DbUser.Binduid) if err := p.connService.SendMsg(head, &pb.UserCreateReq{ @@ -104,26 +86,5 @@ func (p *PttServiceImpl) CreateRole(nickName string) (code pb.ErrorCode, rsp *pb logrus.WithField("err", err).Error("CreateRole") return } - - //response - // for { - // if cd, msg := p.connService.ReceiveMsg(); cd != pb.ErrorCode_Success { - // code = cd - // break - // } else { - // rsp = &pb.UserCreateResp{} - // if msg.MainType == string(comm.ModuleUser) && msg.SubType == user.UserSubTypeCreate { - // if !comm.ProtoUnmarshal(msg, rsp) { - // code = pb.ErrorCode_PbError - // return - // } - // logrus. - // WithFields(logrus.Fields{"nickname": nickName}). - // WithFields(logrus.Fields{"rsp": rsp.IsSucc}). - // Debug("response create role") - // break - // } - // } - // } return } diff --git a/cmd/v2/ui/app_monitor.go b/cmd/v2/ui/app_monitor.go index 5d81420c7..5a3d3a5b8 100644 --- a/cmd/v2/ui/app_monitor.go +++ b/cmd/v2/ui/app_monitor.go @@ -5,6 +5,7 @@ import ( "go_dreamfactory/cmd/v2/lib/common" "go_dreamfactory/cmd/v2/model" "go_dreamfactory/cmd/v2/service/observer" + "time" "fyne.io/fyne/v2" "fyne.io/fyne/v2/container" @@ -71,8 +72,9 @@ func (a appMonitor) OnClose() bool { // monitor list data func (this *appMonitor) Run() { - this.obs.AddListener(observer.EVENT_APP_PUSH, observer.Listener{ + this.obs.AddListener(observer.EVENT_APP_MONI, observer.Listener{ OnNotify: func(d interface{}, args ...interface{}) { + time.Sleep(time.Millisecond * 20) data := d.(*model.PushModel) this.monitorData.DataList = append(this.monitorData.DataList, data) this.reloadMonitorData() diff --git a/cmd/v2/ui/app_testcase.go b/cmd/v2/ui/app_testcase.go index 78e390ecb..317d94872 100644 --- a/cmd/v2/ui/app_testcase.go +++ b/cmd/v2/ui/app_testcase.go @@ -44,9 +44,9 @@ func (a *appTester) LazyInit(obs observer.Observer) error { content.Objects = []fyne.CanvasObject{} if view, ok := viewRegister[viewKey]; ok { - view.Init(obs, globalWin.w) + view.Init(obs, globalWin.w) resLog := widget.NewMultiLineEntry() - obs.AddListener(observer.EVENT_CASE_RSP, observer.Listener{ + obs.AddListener(observer.EVENT_REQ_RSP, observer.Listener{ OnNotify: func(data interface{}, args ...interface{}) { if data == nil { return diff --git a/cmd/v2/ui/formview/baseformview.go b/cmd/v2/ui/formview/baseformview.go index 1796ed24d..b268bc772 100644 --- a/cmd/v2/ui/formview/baseformview.go +++ b/cmd/v2/ui/formview/baseformview.go @@ -20,3 +20,7 @@ func (this *BaseformView) Init(obs observer.Observer, w fyne.Window) { this.form = widget.NewForm() this.form.SubmitText = common.BUTTON_OK } + +func (this *BaseformView) Load() { + this.form.OnSubmit() +} diff --git a/cmd/v2/ui/formview/friend_agree.go b/cmd/v2/ui/formview/friend_agree.go index 13faad421..f1434dd1c 100644 --- a/cmd/v2/ui/formview/friend_agree.go +++ b/cmd/v2/ui/formview/friend_agree.go @@ -65,7 +65,7 @@ func (this *FriendAgreeView) CreateView(t *model.TestCase) fyne.CanvasObject { // listener applyListdata func (this *FriendAgreeView) dataListener() { - this.obs.AddListener(observer.EVENT_CASE_RSP, observer.Listener{ + this.obs.AddListener(observer.EVENT_REQ_RSP, observer.Listener{ OnNotify: func(d interface{}, args ...interface{}) { data := d.(*pb.UserMessage) if !(data.MainType == string(comm.ModuleFriend) && diff --git a/cmd/v2/ui/formview/friend_blacklist.go b/cmd/v2/ui/formview/friend_blacklist.go index ffc5ae394..e755e5e3a 100644 --- a/cmd/v2/ui/formview/friend_blacklist.go +++ b/cmd/v2/ui/formview/friend_blacklist.go @@ -46,7 +46,7 @@ func (this *FriendBlacklistView) CreateView(t *model.TestCase) fyne.CanvasObject } func (this *FriendBlacklistView) dataListener() { - this.obs.AddListener(observer.EVENT_CASE_RSP, observer.Listener{ + this.obs.AddListener(observer.EVENT_REQ_RSP, observer.Listener{ OnNotify: func(d interface{}, args ...interface{}) { data := d.(*pb.UserMessage) if !(data.MainType == string(comm.ModuleFriend) && diff --git a/cmd/v2/ui/formview/friend_list.go b/cmd/v2/ui/formview/friend_list.go index 801e2a040..3c45bd1e0 100644 --- a/cmd/v2/ui/formview/friend_list.go +++ b/cmd/v2/ui/formview/friend_list.go @@ -18,6 +18,7 @@ import ( //好友列表 type FriendListView struct { FriendListBaseView //继承支持好友列表的基类 + friendList func() } func (this *FriendListView) CreateView(t *model.TestCase) fyne.CanvasObject { @@ -28,7 +29,7 @@ func (this *FriendListView) CreateView(t *model.TestCase) fyne.CanvasObject { this.createList() // new friendlist btn - friendList := func() { + this.friendList = func() { if err := service.GetPttService().SendToClient( string(comm.ModuleFriend), friend.FriendSubTypeList, @@ -37,7 +38,7 @@ func (this *FriendListView) CreateView(t *model.TestCase) fyne.CanvasObject { } this.friendData = model.NewFriendModelList() } - friendListBtn := widget.NewButton("好友列表", friendList) + friendListBtn := widget.NewButton("好友列表", this.friendList) //点赞 zanBtn := widget.NewButtonWithIcon("点赞", theme.ConfirmIcon(), func() { @@ -64,8 +65,12 @@ func (this *FriendListView) CreateView(t *model.TestCase) fyne.CanvasObject { return split } +func (this *FriendListView) Load() { + this.friendList() +} + func (this *FriendListView) dataListener() { - this.obs.AddListener(observer.EVENT_CASE_RSP, observer.Listener{ + this.obs.AddListener(observer.EVENT_REQ_RSP, observer.Listener{ OnNotify: func(d interface{}, args ...interface{}) { data := d.(*pb.UserMessage) if !(data.MainType == string(comm.ModuleFriend) && diff --git a/cmd/v2/ui/formview/friend_zan.go b/cmd/v2/ui/formview/friend_zan.go index da4a1c844..0f98f18e2 100644 --- a/cmd/v2/ui/formview/friend_zan.go +++ b/cmd/v2/ui/formview/friend_zan.go @@ -54,7 +54,7 @@ func (this *FriendZanView) CreateView(t *model.TestCase) fyne.CanvasObject { this.createList() // layout - split := container.NewHSplit(this.dataList, container.NewVBox( zanListBtn, receiveBtn)) + split := container.NewHSplit(this.dataList, container.NewVBox(zanListBtn, receiveBtn)) split.Offset = 1 this.dataListener() @@ -62,7 +62,7 @@ func (this *FriendZanView) CreateView(t *model.TestCase) fyne.CanvasObject { } func (this *FriendZanView) dataListener() { - this.obs.AddListener(observer.EVENT_CASE_RSP, observer.Listener{ + this.obs.AddListener(observer.EVENT_REQ_RSP, observer.Listener{ OnNotify: func(d interface{}, args ...interface{}) { data := d.(*pb.UserMessage) if !(data.MainType == string(comm.ModuleFriend) && @@ -75,6 +75,7 @@ func (this *FriendZanView) dataListener() { logrus.Error("unmarshal err") } + this.friendData = model.NewFriendModelList() for _, v := range rsp.List { fm := &model.FriendModel{ Uid: v.UserId, diff --git a/cmd/v2/ui/mainwindow.go b/cmd/v2/ui/mainwindow.go index 38ca35909..12418cb8a 100644 --- a/cmd/v2/ui/mainwindow.go +++ b/cmd/v2/ui/mainwindow.go @@ -5,8 +5,9 @@ import ( "go_dreamfactory/cmd/v2/lib/common" "go_dreamfactory/cmd/v2/service" "go_dreamfactory/cmd/v2/service/observer" + "go_dreamfactory/comm" + "go_dreamfactory/modules/user" "go_dreamfactory/pb" - "os" "strings" "fyne.io/fyne/v2" @@ -73,7 +74,6 @@ func NewMainWindow(ui *UIImpl) MainWindow { conf.SetDismissText("取消") conf.SetConfirmText("退出") conf.Show() - os.Exit(0) }, }) return mw @@ -210,31 +210,52 @@ func (ui *MainWindowImpl) createLoginWin(sid, sname string) { } else { if account.Text != "" { logrus.WithField("account", account.Text).Debug("submit login") - if code, rsp := ui.pttService.Login(sid, account.Text); code != pb.ErrorCode_Success { + ui.createWindowContainer() + appName, err := ui.at.openDefaultApp() + if err != nil { + logrus.WithField("appName", appName).Error(err) + } + // 必须在创建窗口之后调用 + ui.connService.ListenerPush() + if code := ui.pttService.Login(sid, account.Text); code != pb.ErrorCode_Success { err := fmt.Errorf("login err: %v[%d]", code, int32(code)) dialog.ShowError(err, ui.w) - } else { - ui.w.SetTitle(fmt.Sprintf("%s[%s]", sname, sid)) - ui.connService.ListenerPush() - //show mainwindow - // logrus.Debug(rsp) - ui.pttService.SetUser(rsp.Data, rsp.Ex) - // isCreateRole - if rsp.Data.Created { - // ui.renderUserContainer() - ui.createWindowContainer() - ui.sb.setMessage(common.LABEL_WELCOME + rsp.Data.Binduid) - appName, err := ui.at.openDefaultApp() - if err != nil { - logrus.WithField("appName", appName).Error(err) - } - ui.obs.Notify(observer.EVENT_USERINFO, ui.pttService.GetUser()) - } else { - ui.createRoleWindowPopUp() - } + // + ui.obs.AddListener(observer.EVENT_REQ_RSP, observer.Listener{ + OnNotify: func(data interface{}, args ...interface{}) { + if data == nil { + return + } + msg := data.(*pb.UserMessage) + if msg.MainType == string(comm.ModuleUser) && + msg.SubType == user.UserSubTypeLogin { + rsp := &pb.UserLoginResp{} + if !comm.ProtoUnmarshal(msg, rsp) { + logrus.Error("unmarshal err") + return + } + ui.w.SetTitle(fmt.Sprintf("%s[%s]", sname, sid)) + + //show mainwindow + // logrus.Debug(rsp) + ui.pttService.SetUser(rsp.Data, rsp.Ex) + // isCreateRole + if rsp.Data.Created { + // ui.renderUserContainer() + + ui.sb.setMessage(common.LABEL_WELCOME + rsp.Data.Binduid) + + ui.obs.Notify(observer.EVENT_USERINFO, ui.pttService.GetUser()) + } else { + ui.createRoleWindowPopUp() + } + } + }, + }) } + } } @@ -273,7 +294,7 @@ func (ui *MainWindowImpl) createRoleWindowPopUp() { } else { if nickname.Text != "" { logrus.WithField("nickname", nickname.Text).Debug("submit crete role") - if code, _ := ui.pttService.CreateRole(nickname.Text); code != pb.ErrorCode_Success { + if code := ui.pttService.CreateRole(nickname.Text); code != pb.ErrorCode_Success { err := fmt.Errorf("login err: %v[%d]", code, int32(code)) dialog.ShowError(err, ui.w) } else { diff --git a/cmd/v2/ui/protocol.go b/cmd/v2/ui/protocol.go index 61393d25e..927aec6c3 100644 --- a/cmd/v2/ui/protocol.go +++ b/cmd/v2/ui/protocol.go @@ -20,6 +20,7 @@ import ( type MyCaseView interface { Init(obs observer.Observer, w fyne.Window) CreateView(t *model.TestCase) fyne.CanvasObject + Load() } // 1 注册接口测试的表单试图 diff --git a/cmd/v2/ui/toy_userinfo.go b/cmd/v2/ui/toy_userinfo.go index 029a9c536..4f0d4a6e8 100644 --- a/cmd/v2/ui/toy_userinfo.go +++ b/cmd/v2/ui/toy_userinfo.go @@ -87,7 +87,7 @@ func (this *toyUserInfo) dataListener() { }, }) - this.obs.AddListener(observer.EVENT_CASE_RSP, observer.Listener{ + this.obs.AddListener(observer.EVENT_REQ_RSP, observer.Listener{ OnNotify: func(d interface{}, args ...interface{}) { data := d.(*pb.UserMessage) //change name @@ -103,7 +103,7 @@ func (this *toyUserInfo) dataListener() { }, }) - this.obs.AddListener(observer.EVENT_APP_PUSH, observer.Listener{ + this.obs.AddListener(observer.EVENT_USER_CHANGE, observer.Listener{ OnNotify: func(d interface{}, args ...interface{}) { data := d.(*model.PushModel) // listener gold @@ -120,6 +120,9 @@ func (this *toyUserInfo) dataListener() { data.Msg.SubType == "" { //TODO change exp } + // + logrus.WithField("key", "a").Debug(data.Msg.SubType) + }, }) } diff --git a/modules/friend/api_zan.go b/modules/friend/api_zan.go index 6d40e29b0..98ff6c01b 100644 --- a/modules/friend/api_zan.go +++ b/modules/friend/api_zan.go @@ -23,33 +23,36 @@ func (this *apiComp) Zan(session comm.IUserSession, req *pb.FriendZanReq) (code } var ( - self *pb.DBFriend - err error + target *pb.DBFriend + err error + selfId string ) - self = this.moduleFriend.modelFriend.GetFriend(session.GetUserId()) - if self == nil { + selfId = session.GetUserId() + + target = this.moduleFriend.modelFriend.GetFriend(req.FriendId) + if target == nil { code = pb.ErrorCode_FriendSelfNoData return } // 不能给自己点赞 - if req.FriendId == self.Uid { + if req.FriendId == selfId { code = pb.ErrorCode_FriendZanSelf return } - // 好友是否被点赞 - if _, ok := utils.Find(self.ZanIds, req.FriendId); ok { + // 是否已给好友点赞 + if _, ok := utils.Find(target.ZanIds, selfId); ok { code = pb.ErrorCode_FriendZaned return } //设置被点赞玩家 - self.ZanIds = append(self.ZanIds, req.FriendId) + target.ZanIds = append(target.ZanIds, selfId) - if err = this.moduleFriend.modelFriend.Change(req.FriendId, map[string]interface{}{ - "ZanIds": self.ZanIds, + if err = this.moduleFriend.modelFriend.Change(target.GetUid(), map[string]interface{}{ + "zanIds": target.ZanIds, }); err != nil { code = pb.ErrorCode_DBError return