更新推送监听

This commit is contained in:
wh_zcy 2022-08-10 19:24:07 +08:00
parent d1a1a2bc57
commit 55127dc69b
14 changed files with 96 additions and 101 deletions

View File

@ -86,11 +86,8 @@ func (c *ConnServiceImpl) ListenerPush() {
methodStr := msg.Data.TypeUrl methodStr := msg.Data.TypeUrl
methodName := common.SubStr(methodStr, 20, len(methodStr)) methodName := common.SubStr(methodStr, 20, len(methodStr))
p := &model.PushModel{ p := &model.PushModel{
// MainType: msg.MainType,
// SubType: msg.SubType,
MethodName: methodName, MethodName: methodName,
DataTime: time.Now().Format(time.RFC3339), DataTime: time.Now().Format(time.RFC3339),
// Rsp: msg.Data,
Msg: msg, Msg: msg,
} }
logrus.WithFields( logrus.WithFields(
@ -98,16 +95,12 @@ func (c *ConnServiceImpl) ListenerPush() {
).Debug(methodName) ).Debug(methodName)
renderRespPanel := func(p *model.PushModel) { renderRespPanel := func(p *model.PushModel) {
// data, err := anypb.New(p.Msg) c.obs.Notify(observer.EVENT_REQ_RSP, p.Msg)
// if err != nil {
// logrus.Error(err)
// return
// }
c.obs.Notify(observer.EVENT_CASE_RSP, p.Msg)
} }
if strings.HasSuffix(methodName, "Push") { 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" { if methodName == "NotifyErrorNotifyPush" {
renderRespPanel(p) renderRespPanel(p)
} }

View File

@ -5,9 +5,10 @@ const (
//用户详情 //用户详情
EVENT_USERINFO Event = "userinfo" 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数据事件 // 清空 ui数据事件
EVENT_UI_CLEAN = "uiclean" EVENT_UI_CLEAN = "uiclean"
) )

View File

@ -15,8 +15,8 @@ var (
) )
type PttService interface { type PttService interface {
Login(sid, account string) (code pb.ErrorCode, rsp *pb.UserLoginResp) Login(sid, account string) (code pb.ErrorCode)
CreateRole(nickName string) (code pb.ErrorCode, rsp *pb.UserCreateResp) CreateRole(nickName string) (code pb.ErrorCode)
GetUser() *UserInfo GetUser() *UserInfo
SetUser(dbUser *pb.DBUser, dbUserExpand *pb.DBUserExpand) SetUser(dbUser *pb.DBUser, dbUserExpand *pb.DBUserExpand)
SendToClient(mainType, subType string, rsp proto.Message) error SendToClient(mainType, subType string, rsp proto.Message) error
@ -61,7 +61,7 @@ func (p *PttServiceImpl) SendToClient(mainType, subType string, rsp proto.Messag
} }
// Login // 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 := &pb.UserMessage{MainType: string(comm.ModuleUser), SubType: user.UserSubTypeLogin}
head.Sec = common.BuildSecStr(sid, account) head.Sec = common.BuildSecStr(sid, account)
if err := p.connService.SendMsg(head, &pb.UserLoginReq{ 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") logrus.WithField("err", err).Error("Login")
return 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 return
} }
// create role // 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 := &pb.UserMessage{MainType: string(comm.ModuleUser), SubType: user.UserSubTypeCreate}
head.Sec = common.BuildSecStr(p.user.DbUser.Sid, p.user.DbUser.Binduid) head.Sec = common.BuildSecStr(p.user.DbUser.Sid, p.user.DbUser.Binduid)
if err := p.connService.SendMsg(head, &pb.UserCreateReq{ 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") logrus.WithField("err", err).Error("CreateRole")
return 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 return
} }

View File

@ -5,6 +5,7 @@ import (
"go_dreamfactory/cmd/v2/lib/common" "go_dreamfactory/cmd/v2/lib/common"
"go_dreamfactory/cmd/v2/model" "go_dreamfactory/cmd/v2/model"
"go_dreamfactory/cmd/v2/service/observer" "go_dreamfactory/cmd/v2/service/observer"
"time"
"fyne.io/fyne/v2" "fyne.io/fyne/v2"
"fyne.io/fyne/v2/container" "fyne.io/fyne/v2/container"
@ -71,8 +72,9 @@ func (a appMonitor) OnClose() bool {
// monitor list data // monitor list data
func (this *appMonitor) Run() { 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{}) { OnNotify: func(d interface{}, args ...interface{}) {
time.Sleep(time.Millisecond * 20)
data := d.(*model.PushModel) data := d.(*model.PushModel)
this.monitorData.DataList = append(this.monitorData.DataList, data) this.monitorData.DataList = append(this.monitorData.DataList, data)
this.reloadMonitorData() this.reloadMonitorData()

View File

@ -46,7 +46,7 @@ func (a *appTester) LazyInit(obs observer.Observer) error {
if view, ok := viewRegister[viewKey]; ok { if view, ok := viewRegister[viewKey]; ok {
view.Init(obs, globalWin.w) view.Init(obs, globalWin.w)
resLog := widget.NewMultiLineEntry() 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{}) { OnNotify: func(data interface{}, args ...interface{}) {
if data == nil { if data == nil {
return return

View File

@ -20,3 +20,7 @@ func (this *BaseformView) Init(obs observer.Observer, w fyne.Window) {
this.form = widget.NewForm() this.form = widget.NewForm()
this.form.SubmitText = common.BUTTON_OK this.form.SubmitText = common.BUTTON_OK
} }
func (this *BaseformView) Load() {
this.form.OnSubmit()
}

View File

@ -65,7 +65,7 @@ func (this *FriendAgreeView) CreateView(t *model.TestCase) fyne.CanvasObject {
// listener applyListdata // listener applyListdata
func (this *FriendAgreeView) dataListener() { 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{}) { OnNotify: func(d interface{}, args ...interface{}) {
data := d.(*pb.UserMessage) data := d.(*pb.UserMessage)
if !(data.MainType == string(comm.ModuleFriend) && if !(data.MainType == string(comm.ModuleFriend) &&

View File

@ -46,7 +46,7 @@ func (this *FriendBlacklistView) CreateView(t *model.TestCase) fyne.CanvasObject
} }
func (this *FriendBlacklistView) dataListener() { 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{}) { OnNotify: func(d interface{}, args ...interface{}) {
data := d.(*pb.UserMessage) data := d.(*pb.UserMessage)
if !(data.MainType == string(comm.ModuleFriend) && if !(data.MainType == string(comm.ModuleFriend) &&

View File

@ -18,6 +18,7 @@ import (
//好友列表 //好友列表
type FriendListView struct { type FriendListView struct {
FriendListBaseView //继承支持好友列表的基类 FriendListBaseView //继承支持好友列表的基类
friendList func()
} }
func (this *FriendListView) CreateView(t *model.TestCase) fyne.CanvasObject { func (this *FriendListView) CreateView(t *model.TestCase) fyne.CanvasObject {
@ -28,7 +29,7 @@ func (this *FriendListView) CreateView(t *model.TestCase) fyne.CanvasObject {
this.createList() this.createList()
// new friendlist btn // new friendlist btn
friendList := func() { this.friendList = func() {
if err := service.GetPttService().SendToClient( if err := service.GetPttService().SendToClient(
string(comm.ModuleFriend), string(comm.ModuleFriend),
friend.FriendSubTypeList, friend.FriendSubTypeList,
@ -37,7 +38,7 @@ func (this *FriendListView) CreateView(t *model.TestCase) fyne.CanvasObject {
} }
this.friendData = model.NewFriendModelList() this.friendData = model.NewFriendModelList()
} }
friendListBtn := widget.NewButton("好友列表", friendList) friendListBtn := widget.NewButton("好友列表", this.friendList)
//点赞 //点赞
zanBtn := widget.NewButtonWithIcon("点赞", theme.ConfirmIcon(), func() { zanBtn := widget.NewButtonWithIcon("点赞", theme.ConfirmIcon(), func() {
@ -64,8 +65,12 @@ func (this *FriendListView) CreateView(t *model.TestCase) fyne.CanvasObject {
return split return split
} }
func (this *FriendListView) Load() {
this.friendList()
}
func (this *FriendListView) dataListener() { 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{}) { OnNotify: func(d interface{}, args ...interface{}) {
data := d.(*pb.UserMessage) data := d.(*pb.UserMessage)
if !(data.MainType == string(comm.ModuleFriend) && if !(data.MainType == string(comm.ModuleFriend) &&

View File

@ -54,7 +54,7 @@ func (this *FriendZanView) CreateView(t *model.TestCase) fyne.CanvasObject {
this.createList() this.createList()
// layout // layout
split := container.NewHSplit(this.dataList, container.NewVBox( zanListBtn, receiveBtn)) split := container.NewHSplit(this.dataList, container.NewVBox(zanListBtn, receiveBtn))
split.Offset = 1 split.Offset = 1
this.dataListener() this.dataListener()
@ -62,7 +62,7 @@ func (this *FriendZanView) CreateView(t *model.TestCase) fyne.CanvasObject {
} }
func (this *FriendZanView) dataListener() { 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{}) { OnNotify: func(d interface{}, args ...interface{}) {
data := d.(*pb.UserMessage) data := d.(*pb.UserMessage)
if !(data.MainType == string(comm.ModuleFriend) && if !(data.MainType == string(comm.ModuleFriend) &&
@ -75,6 +75,7 @@ func (this *FriendZanView) dataListener() {
logrus.Error("unmarshal err") logrus.Error("unmarshal err")
} }
this.friendData = model.NewFriendModelList()
for _, v := range rsp.List { for _, v := range rsp.List {
fm := &model.FriendModel{ fm := &model.FriendModel{
Uid: v.UserId, Uid: v.UserId,

View File

@ -5,8 +5,9 @@ import (
"go_dreamfactory/cmd/v2/lib/common" "go_dreamfactory/cmd/v2/lib/common"
"go_dreamfactory/cmd/v2/service" "go_dreamfactory/cmd/v2/service"
"go_dreamfactory/cmd/v2/service/observer" "go_dreamfactory/cmd/v2/service/observer"
"go_dreamfactory/comm"
"go_dreamfactory/modules/user"
"go_dreamfactory/pb" "go_dreamfactory/pb"
"os"
"strings" "strings"
"fyne.io/fyne/v2" "fyne.io/fyne/v2"
@ -73,7 +74,6 @@ func NewMainWindow(ui *UIImpl) MainWindow {
conf.SetDismissText("取消") conf.SetDismissText("取消")
conf.SetConfirmText("退出") conf.SetConfirmText("退出")
conf.Show() conf.Show()
os.Exit(0)
}, },
}) })
return mw return mw
@ -210,31 +210,52 @@ func (ui *MainWindowImpl) createLoginWin(sid, sname string) {
} else { } else {
if account.Text != "" { if account.Text != "" {
logrus.WithField("account", account.Text).Debug("submit login") 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)) err := fmt.Errorf("login err: %v[%d]", code, int32(code))
dialog.ShowError(err, ui.w) dialog.ShowError(err, ui.w)
} else { } else {
//
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)) ui.w.SetTitle(fmt.Sprintf("%s[%s]", sname, sid))
ui.connService.ListenerPush()
//show mainwindow //show mainwindow
// logrus.Debug(rsp) // logrus.Debug(rsp)
ui.pttService.SetUser(rsp.Data, rsp.Ex) ui.pttService.SetUser(rsp.Data, rsp.Ex)
// isCreateRole // isCreateRole
if rsp.Data.Created { if rsp.Data.Created {
// ui.renderUserContainer() // ui.renderUserContainer()
ui.createWindowContainer()
ui.sb.setMessage(common.LABEL_WELCOME + rsp.Data.Binduid) 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()) ui.obs.Notify(observer.EVENT_USERINFO, ui.pttService.GetUser())
} else { } else {
ui.createRoleWindowPopUp() ui.createRoleWindowPopUp()
} }
} }
},
})
}
} }
} }
@ -273,7 +294,7 @@ func (ui *MainWindowImpl) createRoleWindowPopUp() {
} else { } else {
if nickname.Text != "" { if nickname.Text != "" {
logrus.WithField("nickname", nickname.Text).Debug("submit crete role") 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)) err := fmt.Errorf("login err: %v[%d]", code, int32(code))
dialog.ShowError(err, ui.w) dialog.ShowError(err, ui.w)
} else { } else {

View File

@ -20,6 +20,7 @@ import (
type MyCaseView interface { type MyCaseView interface {
Init(obs observer.Observer, w fyne.Window) Init(obs observer.Observer, w fyne.Window)
CreateView(t *model.TestCase) fyne.CanvasObject CreateView(t *model.TestCase) fyne.CanvasObject
Load()
} }
// 1 注册接口测试的表单试图 // 1 注册接口测试的表单试图

View File

@ -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{}) { OnNotify: func(d interface{}, args ...interface{}) {
data := d.(*pb.UserMessage) data := d.(*pb.UserMessage)
//change name //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{}) { OnNotify: func(d interface{}, args ...interface{}) {
data := d.(*model.PushModel) data := d.(*model.PushModel)
// listener gold // listener gold
@ -120,6 +120,9 @@ func (this *toyUserInfo) dataListener() {
data.Msg.SubType == "" { data.Msg.SubType == "" {
//TODO change exp //TODO change exp
} }
//
logrus.WithField("key", "a").Debug(data.Msg.SubType)
}, },
}) })
} }

View File

@ -23,33 +23,36 @@ func (this *apiComp) Zan(session comm.IUserSession, req *pb.FriendZanReq) (code
} }
var ( var (
self *pb.DBFriend target *pb.DBFriend
err error err error
selfId string
) )
self = this.moduleFriend.modelFriend.GetFriend(session.GetUserId()) selfId = session.GetUserId()
if self == nil {
target = this.moduleFriend.modelFriend.GetFriend(req.FriendId)
if target == nil {
code = pb.ErrorCode_FriendSelfNoData code = pb.ErrorCode_FriendSelfNoData
return return
} }
// 不能给自己点赞 // 不能给自己点赞
if req.FriendId == self.Uid { if req.FriendId == selfId {
code = pb.ErrorCode_FriendZanSelf code = pb.ErrorCode_FriendZanSelf
return return
} }
// 好友是否被点赞 // 是否已给好友点赞
if _, ok := utils.Find(self.ZanIds, req.FriendId); ok { if _, ok := utils.Find(target.ZanIds, selfId); ok {
code = pb.ErrorCode_FriendZaned code = pb.ErrorCode_FriendZaned
return 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{}{ if err = this.moduleFriend.modelFriend.Change(target.GetUid(), map[string]interface{}{
"ZanIds": self.ZanIds, "zanIds": target.ZanIds,
}); err != nil { }); err != nil {
code = pb.ErrorCode_DBError code = pb.ErrorCode_DBError
return return