更新推送监听

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
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,
}
logrus.WithFields(
@ -98,16 +95,12 @@ func (c *ConnServiceImpl) ListenerPush() {
).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)
}

View File

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

View File

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

View File

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

View File

@ -46,7 +46,7 @@ func (a *appTester) LazyInit(obs observer.Observer) error {
if view, ok := viewRegister[viewKey]; ok {
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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@ -20,6 +20,7 @@ import (
type MyCaseView interface {
Init(obs observer.Observer, w fyne.Window)
CreateView(t *model.TestCase) fyne.CanvasObject
Load()
}
// 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{}) {
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)
},
})
}

View File

@ -23,33 +23,36 @@ func (this *apiComp) Zan(session comm.IUserSession, req *pb.FriendZanReq) (code
}
var (
self *pb.DBFriend
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