update gui

This commit is contained in:
zhaocy 2022-08-09 17:58:51 +08:00
parent f6931d0f6d
commit 4338450e0f
38 changed files with 842 additions and 105 deletions

View File

@ -110,6 +110,7 @@ const (
APP_TESTCASE_FORM_TASK_ACHIEVE = "成就" APP_TESTCASE_FORM_TASK_ACHIEVE = "成就"
APP_TESTCASE_FORM_BINGO = "命令" APP_TESTCASE_FORM_BINGO = "命令"
APP_TESTCASE_BTN_PUSH = "推送" APP_TESTCASE_BTN_PUSH = "推送"
APP_TESTCASE_FORM_LABEL_FID = "好友ID"
//button //button
BUTTON_LOGIN = "登录" BUTTON_LOGIN = "登录"

View File

@ -2,6 +2,7 @@ package main
import ( import (
"fmt" "fmt"
"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/cmd/v2/ui" "go_dreamfactory/cmd/v2/ui"
@ -53,7 +54,7 @@ func main() {
appUI := ui.NewUI(app.NewWithID("protocol-test-tool"), configService, connService, pttService, obs) appUI := ui.NewUI(app.NewWithID("protocol-test-tool"), configService, connService, pttService, obs)
mainWindow := ui.NewMainWindow(appUI) mainWindow := ui.NewMainWindow(appUI)
mainWindow.CreateWindow("robot_v2", 1366, 768, true) mainWindow.CreateWindow(common.APP_NAME, 1366, 768, true)
appUI.Run() appUI.Run()
} }

24
cmd/v2/model/friend.go Normal file
View File

@ -0,0 +1,24 @@
package model
type FriendModel struct {
Uid string
Name string
}
type FriendModelList struct {
DataList []*FriendModel
}
func NewFriendModelList() *FriendModelList {
return &FriendModelList{
DataList: make([]*FriendModel, 0),
}
}
func (s *FriendModelList) AsInterfaceArray() []interface{} {
rs := make([]interface{}, len(s.DataList), len(s.DataList))
for i := range s.DataList {
rs[i] = s.DataList[i]
}
return rs
}

View File

@ -1,15 +1,13 @@
package model package model
import ( import (
"google.golang.org/protobuf/types/known/anypb" "go_dreamfactory/pb"
) )
type PushModel struct { type PushModel struct {
MainType string
SubType string
MethodName string MethodName string
DataTime string DataTime string
Rsp *anypb.Any Msg *pb.UserMessage
} }
type PushModelList struct { type PushModelList struct {

View File

@ -1,16 +1,16 @@
services: services:
- service: - service:
sid: 1 sid: 1
name: service1 name: 外网
url: ws://10.0.0.100:7891/gateway url: ws://119.3.89.14:7891/gateway
- service: - service:
sid: 2 sid: 2
name: 赵长远 name: 赵长远
url: ws://10.0.0.238:7891/gateway url: ws://10.0.0.238:7891/gateway
- service: - service:
sid: 3 sid: 3
name: service3 name: 内网
url: ws://10.0.0.101:7891/gateway url: ws://10.0.0.9:7891/gateway
- service: - service:
sid: 4 sid: 4
name: service4 name: service4

View File

@ -9,10 +9,8 @@ import (
"strings" "strings"
"time" "time"
"github.com/golang/protobuf/ptypes"
"github.com/gorilla/websocket" "github.com/gorilla/websocket"
"github.com/sirupsen/logrus" "github.com/sirupsen/logrus"
"github.com/spf13/cast"
"google.golang.org/protobuf/proto" "google.golang.org/protobuf/proto"
) )
@ -52,6 +50,17 @@ func (c *ConnServiceImpl) Connect(wsUrl string) error {
return err return err
} }
c.ws = ws c.ws = ws
ticker := time.NewTicker(2 * time.Second)
go func() {
for {
_ = <-ticker.C
if err := c.ws.WriteMessage(websocket.PingMessage, []byte{}); err != nil {
c.obs.Notify(observer.EVENT_PING, err)
break
}
}
}()
return nil return nil
} }
@ -76,19 +85,35 @@ 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))
if strings.HasSuffix(methodName, "Push") {
p := &model.PushModel{ p := &model.PushModel{
MainType: msg.MainType, // MainType: msg.MainType,
SubType: msg.SubType, // SubType: msg.SubType,
MethodName: methodName, MethodName: methodName,
DataTime: time.Now().Format(time.RFC3339), DataTime: time.Now().Format(time.RFC3339),
Rsp: msg.Data, // Rsp: msg.Data,
Msg: msg,
} }
c.obs.Notify(observer.EVENT_APP_PUSH, p)
logrus.WithFields( logrus.WithFields(
logrus.Fields{"MainType": msg.MainType, "SubType": msg.SubType}, logrus.Fields{"MainType": msg.MainType, "SubType": msg.SubType},
).Debug(methodName) ).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)
}
if strings.HasSuffix(methodName, "Push") {
c.obs.Notify(observer.EVENT_APP_PUSH, p)
if methodName == "NotifyErrorNotifyPush" {
renderRespPanel(p)
}
} else {
//render appTestcase respPanel
renderRespPanel(p)
} }
} }
}() }()
@ -144,26 +169,26 @@ func (c *ConnServiceImpl) handleNotify(msg *pb.UserMessage) (code pb.ErrorCode)
} }
// response // response
func (c *ConnServiceImpl) RespHandle(t *model.TestCase) { // func (c *ConnServiceImpl) RespHandle(t *model.TestCase) {
for { // for {
if code, msg := c.ReceiveMsg(); code != pb.ErrorCode_Success { // if code, msg := c.ReceiveMsg(); code != pb.ErrorCode_Success {
c.obs.Notify(observer.EVENT_APP_LOG, cast.ToString(code)) // c.obs.Notify(observer.EVENT_APP_LOG, cast.ToString(code))
} else { // } else {
if msg.MainType == t.MainType && msg.SubType == t.SubType { // if msg.MainType == t.MainType && msg.SubType == t.SubType {
if t.Print == nil { // if t.Print == nil {
if a, err := ptypes.MarshalAny(msg.Data); err != nil { // if a, err := ptypes.MarshalAny(msg.Data); err != nil {
c.obs.Notify(observer.EVENT_APP_LOG, err.Error()) // c.obs.Notify(observer.EVENT_APP_LOG, err.Error())
} else { // } else {
c.obs.Notify(observer.EVENT_APP_LOG, a.String()) // c.obs.Notify(observer.EVENT_APP_LOG, a.String())
} // }
} else { // } else {
if !comm.ProtoUnmarshal(msg, t.Rsp) { // if !comm.ProtoUnmarshal(msg, t.Rsp) {
return // return
} // }
c.obs.Notify(observer.EVENT_APP_LOG, t.Print(t.Rsp)) // c.obs.Notify(observer.EVENT_APP_LOG, t.Print(t.Rsp))
} // }
break // break
} // }
} // }
} // }
} // }

View File

@ -1,7 +1,13 @@
package observer package observer
const ( const (
EVENT_PING = "ping"
//用户详情
EVENT_USERINFO Event = "userinfo" EVENT_USERINFO Event = "userinfo"
EVENT_APP_LOG Event = "app_log" //协议推送
EVENT_APP_PUSH Event = "push" EVENT_APP_PUSH Event = "push"
//测试用例响应事件
EVENT_CASE_RSP Event = "response"
// 清空 ui数据事件
EVENT_UI_CLEAN = "uiclean"
) )

View File

@ -37,9 +37,12 @@ func (this *appMonitor) LazyInit(obs observer.Observer) error {
// panel for output log // panel for output log
this.logPanel = widget.NewMultiLineEntry() this.logPanel = widget.NewMultiLineEntry()
this.logPanel.Wrapping = fyne.TextWrapWord this.logPanel.Wrapping = fyne.TextWrapWord
//clear button
clearBtn := widget.NewButtonWithIcon(common.APP_TESTCASE_BTN_CLEARLOG, theme.DeleteIcon(), func() { clearBtn := widget.NewButtonWithIcon(common.APP_TESTCASE_BTN_CLEARLOG, theme.DeleteIcon(), func() {
this.logPanel.SetText("") this.logPanel.SetText("")
this.monitorBinding.Set([]interface{}{})
}) })
resPanel := container.NewBorder(container.NewHBox(clearBtn, layout.NewSpacer()), nil, nil, nil, this.logPanel) resPanel := container.NewBorder(container.NewHBox(clearBtn, layout.NewSpacer()), nil, nil, nil, this.logPanel)
this.monitorBinding = binding.NewUntypedList() this.monitorBinding = binding.NewUntypedList()
@ -115,7 +118,7 @@ func (this *appMonitor) createMonitorList() {
func(data binding.DataItem, item fyne.CanvasObject) { func(data binding.DataItem, item fyne.CanvasObject) {
o, _ := data.(binding.Untyped).Get() o, _ := data.(binding.Untyped).Get()
pd := o.(*model.PushModel) pd := o.(*model.PushModel)
item.(*fyne.Container).Objects[0].(*widget.Label).SetText(fmt.Sprintf("%s.%s", pd.MainType, pd.SubType)) item.(*fyne.Container).Objects[0].(*widget.Label).SetText(fmt.Sprintf("%s.%s", pd.Msg.MainType, pd.Msg.SubType))
item.(*fyne.Container).Objects[1].(*widget.Label).SetText(pd.MethodName) item.(*fyne.Container).Objects[1].(*widget.Label).SetText(pd.MethodName)
item.(*fyne.Container).Objects[2].(*widget.Label).SetText(pd.DataTime) item.(*fyne.Container).Objects[2].(*widget.Label).SetText(pd.DataTime)
}, },
@ -127,7 +130,7 @@ func (this *appMonitor) createMonitorList() {
} else { } else {
o, _ := di.(binding.Untyped).Get() o, _ := di.(binding.Untyped).Get()
pd := o.(*model.PushModel) pd := o.(*model.PushModel)
if res, err := anypb.New(pd.Rsp); err == nil { if res, err := anypb.New(pd.Msg.Data); err == nil {
this.logPanel.Text = res.String() this.logPanel.Text = res.String()
this.logPanel.Refresh() this.logPanel.Refresh()
} else { } else {

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"
"go_dreamfactory/pb"
"fyne.io/fyne/v2" "fyne.io/fyne/v2"
"fyne.io/fyne/v2/container" "fyne.io/fyne/v2/container"
@ -43,19 +44,20 @@ func (a *appTester) LazyInit(obs observer.Observer) error {
content.Objects = []fyne.CanvasObject{} content.Objects = []fyne.CanvasObject{}
if view, ok := viewRegister[viewKey]; ok { if view, ok := viewRegister[viewKey]; ok {
view.Init() view.Init(obs, globalWin.w)
resLog := widget.NewMultiLineEntry() resLog := widget.NewMultiLineEntry()
obs.AddListener(observer.EVENT_APP_LOG, observer.Listener{ obs.AddListener(observer.EVENT_CASE_RSP, observer.Listener{
OnNotify: func(data interface{}, args ...interface{}) { OnNotify: func(data interface{}, args ...interface{}) {
if data == nil { if data == nil {
return return
} }
resLog.SetText(data.(string)) msg := data.(*pb.UserMessage)
resLog.SetText(msg.Data.String())
}, },
}) })
resLog.Wrapping = fyne.TextWrapBreak resLog.Wrapping = fyne.TextWrapBreak
formReq := view.CreateForm(t) formReq := view.CreateView(t)
// required! Refresh updates the widget // required! Refresh updates the widget
formReq.Refresh() formReq.Refresh()
formCard := widget.NewCard("", "", formReq) formCard := widget.NewCard("", "", formReq)

View File

@ -2,15 +2,21 @@ package formview
import ( import (
"go_dreamfactory/cmd/v2/lib/common" "go_dreamfactory/cmd/v2/lib/common"
"go_dreamfactory/cmd/v2/service/observer"
"fyne.io/fyne/v2"
"fyne.io/fyne/v2/widget" "fyne.io/fyne/v2/widget"
) )
type BaseformView struct { type BaseformView struct {
form *widget.Form form *widget.Form
obs observer.Observer
w fyne.Window
} }
func (this *BaseformView) Init() { func (this *BaseformView) Init(obs observer.Observer, w fyne.Window) {
this.obs = obs
this.w = w
this.form = widget.NewForm() this.form = widget.NewForm()
this.form.SubmitText = common.BUTTON_OK this.form.SubmitText = common.BUTTON_OK
} }

View File

@ -15,7 +15,7 @@ type BingoView struct {
BaseformView BaseformView
} }
func (this *BingoView) CreateForm(t *model.TestCase) fyne.CanvasObject { func (this *BingoView) CreateView(t *model.TestCase) fyne.CanvasObject {
bingo := widget.NewEntry() bingo := widget.NewEntry()
bingo.PlaceHolder = "eg. bingo:item,10001,1" bingo.PlaceHolder = "eg. bingo:item,10001,1"
this.form.AppendItem(widget.NewFormItem(common.APP_TESTCASE_FORM_BINGO, bingo)) this.form.AppendItem(widget.NewFormItem(common.APP_TESTCASE_FORM_BINGO, bingo))
@ -29,7 +29,7 @@ func (this *BingoView) CreateForm(t *model.TestCase) fyne.CanvasObject {
return return
} }
go service.GetConnService().RespHandle(t) // go service.GetConnService().RespHandle(t)
} }
return this.form return this.form
} }

View File

@ -0,0 +1,33 @@
package formview
import (
"go_dreamfactory/cmd/v2/lib/common"
"go_dreamfactory/cmd/v2/model"
"go_dreamfactory/cmd/v2/service"
"go_dreamfactory/pb"
"fyne.io/fyne/v2"
"fyne.io/fyne/v2/widget"
"github.com/sirupsen/logrus"
)
type FriendAddBlackView struct {
BaseformView
}
func (this *FriendAddBlackView) CreateView(t *model.TestCase) fyne.CanvasObject {
friendId := widget.NewEntry()
this.form.AppendItem(widget.NewFormItem(common.APP_TESTCASE_FORM_LABEL_FID, friendId))
this.form.OnSubmit = func() {
if err := service.GetPttService().SendToClient(
t.MainType,
t.SubType,
&pb.FriendBlackAddReq{FriendId: friendId.Text},
); err != nil {
logrus.Error(err)
return
}
}
return this.form
}

View File

@ -0,0 +1,91 @@
package formview
import (
"go_dreamfactory/cmd/v2/model"
"go_dreamfactory/cmd/v2/service"
"go_dreamfactory/cmd/v2/service/observer"
"go_dreamfactory/comm"
"go_dreamfactory/modules/friend"
"go_dreamfactory/pb"
"fyne.io/fyne/v2"
"fyne.io/fyne/v2/container"
"fyne.io/fyne/v2/theme"
"fyne.io/fyne/v2/widget"
"github.com/sirupsen/logrus"
)
type FriendAgreeView struct {
FriendListBaseView
}
func (this *FriendAgreeView) CreateView(t *model.TestCase) fyne.CanvasObject {
//init required
this.initFriendList()
//同意提交
agreeBtn := widget.NewButtonWithIcon("同意", theme.ConfirmIcon(), func() {
if err := service.GetPttService().SendToClient(
t.MainType,
t.SubType,
&pb.FriendAgreeReq{
FriendIds: this.selFriendIds,
},
); err != nil {
logrus.Error(err)
return
}
this.applyListBtnFun()
})
//拒绝
refuseBtn := widget.NewButtonWithIcon("拒绝", theme.CancelIcon(), func() {
if err := service.GetPttService().SendToClient(
string(comm.ModuleFriend),
friend.FriendSubTypeRefuse,
&pb.FriendRefuseReq{
FriendIds: this.selFriendIds,
}); err != nil {
logrus.Error(err)
return
}
this.applyListBtnFun()
})
this.createList()
applyListBtn := widget.NewButton("申请列表", this.applyListBtnFun())
split := container.NewHSplit(this.dataList, container.NewVBox(applyListBtn, agreeBtn, refuseBtn))
split.Offset = 1
this.dataListener()
return split
}
// listener applyListdata
func (this *FriendAgreeView) dataListener() {
this.obs.AddListener(observer.EVENT_CASE_RSP, observer.Listener{
OnNotify: func(d interface{}, args ...interface{}) {
data := d.(*pb.UserMessage)
if !(data.MainType == string(comm.ModuleFriend) &&
data.SubType == friend.FriendSubTypeApplyList) {
return
}
rsp := &pb.FriendApplyListResp{}
if !comm.ProtoUnmarshal(data, rsp) {
logrus.Error("unmarshal err")
}
for _, v := range rsp.List {
fm := &model.FriendModel{
Uid: v.UserId,
Name: v.NickName,
}
this.friendData.DataList = append(this.friendData.DataList, fm)
}
this.reloadFriendData()
},
})
}

View File

@ -0,0 +1,31 @@
package formview
import (
"go_dreamfactory/cmd/v2/lib/common"
"go_dreamfactory/cmd/v2/model"
"go_dreamfactory/cmd/v2/service"
"go_dreamfactory/pb"
"fyne.io/fyne/v2"
"fyne.io/fyne/v2/widget"
"github.com/sirupsen/logrus"
)
type FriendApplyView struct {
BaseformView
}
func (this *FriendApplyView) CreateView(t *model.TestCase) fyne.CanvasObject {
friendId := widget.NewEntry()
this.form.AppendItem(widget.NewFormItem(common.APP_TESTCASE_FORM_LABEL_FID, friendId))
this.form.OnSubmit = func() {
if err := service.GetPttService().SendToClient(t.MainType, t.SubType, &pb.FriendApplyReq{
FriendId: friendId.Text,
}); err != nil {
logrus.Error(err)
}
}
return this.form
}

View File

@ -0,0 +1,24 @@
package formview
import (
"go_dreamfactory/cmd/v2/model"
"go_dreamfactory/cmd/v2/service"
"go_dreamfactory/pb"
"fyne.io/fyne/v2"
"github.com/sirupsen/logrus"
)
type FriendApplyListView struct {
BaseformView
}
func (this *FriendApplyListView) CreateView(t *model.TestCase) fyne.CanvasObject {
this.form.OnSubmit = func() {
if err := service.GetPttService().SendToClient(t.MainType, t.SubType, &pb.FriendApplyListReq{}); err != nil {
logrus.Error(err)
}
}
return this.form
}

View File

@ -0,0 +1,75 @@
package formview
import (
"go_dreamfactory/cmd/v2/model"
"go_dreamfactory/cmd/v2/service"
"go_dreamfactory/comm"
"go_dreamfactory/modules/friend"
"go_dreamfactory/pb"
"go_dreamfactory/utils"
"fyne.io/fyne/v2"
"fyne.io/fyne/v2/container"
"fyne.io/fyne/v2/data/binding"
"fyne.io/fyne/v2/widget"
"github.com/sirupsen/logrus"
)
type FriendListBaseView struct {
BaseformView
dataList *widget.List
friendBinding binding.UntypedList
selFriendIds []string //选择的UID
friendData *model.FriendModelList
}
// init data
func (this *FriendListBaseView) initFriendList() {
this.friendBinding = binding.NewUntypedList()
this.friendData = model.NewFriendModelList()
}
// create list view
func (this *FriendListBaseView) createList() *widget.List {
this.dataList = widget.NewListWithData(this.friendBinding,
func() fyne.CanvasObject {
return container.NewHBox(
widget.NewCheck("", func(b bool) {}),
widget.NewLabelWithStyle("", fyne.TextAlignCenter, fyne.TextStyle{}),
)
},
func(data binding.DataItem, item fyne.CanvasObject) {
o, _ := data.(binding.Untyped).Get()
pd := o.(*model.FriendModel)
item.(*fyne.Container).Objects[0].(*widget.Check).OnChanged = func(b bool) {
if b {
this.selFriendIds = append(this.selFriendIds, pd.Uid)
} else {
utils.DeleteString(this.selFriendIds, pd.Uid)
}
}
item.(*fyne.Container).Objects[1].(*widget.Label).SetText(pd.Name)
},
)
return this.dataList
}
func (this *FriendListBaseView) applyListBtnFun() func() {
return func() {
if err := service.GetPttService().SendToClient(
string(comm.ModuleFriend),
friend.FriendSubTypeApplyList,
&pb.FriendApplyListReq{}); err != nil {
logrus.Error(err)
}
this.friendData = model.NewFriendModelList()
}
}
// set data
func (this *FriendListBaseView) reloadFriendData() {
if this.friendData != nil {
d := this.friendData.AsInterfaceArray()
this.friendBinding.Set(d)
}
}

View File

@ -0,0 +1,72 @@
package formview
import (
"go_dreamfactory/cmd/v2/model"
"go_dreamfactory/cmd/v2/service"
"go_dreamfactory/cmd/v2/service/observer"
"go_dreamfactory/comm"
"go_dreamfactory/modules/friend"
"go_dreamfactory/pb"
"fyne.io/fyne/v2"
"fyne.io/fyne/v2/container"
"fyne.io/fyne/v2/widget"
"github.com/sirupsen/logrus"
)
type FriendBlacklistView struct {
FriendListBaseView
}
func (this *FriendBlacklistView) CreateView(t *model.TestCase) fyne.CanvasObject {
// init required
this.initFriendList()
// create friend list view
this.createList()
friendList := func() {
if err := service.GetPttService().SendToClient(
string(comm.ModuleFriend),
friend.FriendSubTypeBlacklist,
&pb.FriendBlackListReq{}); err != nil {
logrus.Error(err)
}
this.friendData = model.NewFriendModelList()
}
friendListBtn := widget.NewButton("黑名单列表", friendList)
// layout
split := container.NewHSplit(this.dataList, container.NewVBox(friendListBtn))
split.Offset = 1
//data listener for
this.dataListener()
return split
}
func (this *FriendBlacklistView) dataListener() {
this.obs.AddListener(observer.EVENT_CASE_RSP, observer.Listener{
OnNotify: func(d interface{}, args ...interface{}) {
data := d.(*pb.UserMessage)
if !(data.MainType == string(comm.ModuleFriend) &&
data.SubType == friend.FriendSubTypeBlacklist) {
return
}
rsp := &pb.FriendBlackListResp{}
if !comm.ProtoUnmarshal(data, rsp) {
logrus.Error("unmarshal err")
}
for _, v := range rsp.Friends {
fm := &model.FriendModel{
Uid: v.UserId,
Name: v.NickName,
}
this.friendData.DataList = append(this.friendData.DataList, fm)
}
this.reloadFriendData()
},
})
}

View File

@ -0,0 +1,33 @@
package formview
import (
"go_dreamfactory/cmd/v2/lib/common"
"go_dreamfactory/cmd/v2/model"
"go_dreamfactory/cmd/v2/service"
"go_dreamfactory/pb"
"fyne.io/fyne/v2"
"fyne.io/fyne/v2/widget"
"github.com/sirupsen/logrus"
)
type FriendDelblackView struct {
BaseformView
}
func (this *FriendDelblackView) CreateView(t *model.TestCase) fyne.CanvasObject {
friendId := widget.NewEntry()
this.form.AppendItem(widget.NewFormItem(common.APP_TESTCASE_FORM_LABEL_FID, friendId))
this.form.OnSubmit = func() {
if err := service.GetPttService().SendToClient(
t.MainType,
t.SubType,
&pb.FriendDelBlackReq{FriendId: friendId.Text},
); err != nil {
logrus.Error(err)
return
}
}
return this.form
}

View File

@ -0,0 +1,74 @@
package formview
import (
"go_dreamfactory/cmd/v2/model"
"go_dreamfactory/cmd/v2/service"
"go_dreamfactory/cmd/v2/service/observer"
"go_dreamfactory/comm"
"go_dreamfactory/modules/friend"
"go_dreamfactory/pb"
"fyne.io/fyne/v2"
"fyne.io/fyne/v2/container"
"fyne.io/fyne/v2/widget"
"github.com/sirupsen/logrus"
)
//好友列表
type FriendListView struct {
FriendListBaseView //继承支持好友列表的基类
}
func (this *FriendListView) CreateView(t *model.TestCase) fyne.CanvasObject {
// init required
this.initFriendList()
// create friend list view
this.createList()
// new friendlist btn
friendList := func() {
if err := service.GetPttService().SendToClient(
string(comm.ModuleFriend),
friend.FriendSubTypeList,
&pb.FriendListReq{}); err != nil {
logrus.Error(err)
}
this.friendData = model.NewFriendModelList()
}
friendListBtn := widget.NewButton("好友列表", friendList)
// layout
split := container.NewHSplit(this.dataList, container.NewVBox(friendListBtn))
split.Offset = 1
//data listener for
this.dataListener()
return split
}
func (this *FriendListView) dataListener() {
this.obs.AddListener(observer.EVENT_CASE_RSP, observer.Listener{
OnNotify: func(d interface{}, args ...interface{}) {
data := d.(*pb.UserMessage)
if !(data.MainType == string(comm.ModuleFriend) &&
data.SubType == friend.FriendSubTypeList) {
return
}
rsp := &pb.FriendListResp{}
if !comm.ProtoUnmarshal(data, rsp) {
logrus.Error("unmarshal err")
}
for _, v := range rsp.List {
fm := &model.FriendModel{
Uid: v.UserId,
Name: v.NickName,
}
this.friendData.DataList = append(this.friendData.DataList, fm)
}
this.reloadFriendData()
},
})
}

View File

@ -0,0 +1,29 @@
package formview
import (
"go_dreamfactory/cmd/v2/model"
"go_dreamfactory/cmd/v2/service"
"go_dreamfactory/pb"
"fyne.io/fyne/v2"
"github.com/sirupsen/logrus"
)
type FriendRefuseView struct {
BaseformView
}
func (this *FriendRefuseView) CreateView(t *model.TestCase) fyne.CanvasObject {
this.form.OnSubmit = func() {
if err := service.GetPttService().SendToClient(
t.MainType,
t.SubType,
&pb.FriendRefuseReq{},
); err != nil {
logrus.Error(err)
return
}
}
return this.form
}

View File

@ -0,0 +1,33 @@
package formview
import (
"go_dreamfactory/cmd/v2/lib/common"
"go_dreamfactory/cmd/v2/model"
"go_dreamfactory/cmd/v2/service"
"go_dreamfactory/pb"
"fyne.io/fyne/v2"
"fyne.io/fyne/v2/widget"
"github.com/sirupsen/logrus"
)
type FriendSearchView struct {
BaseformView
}
func (this *FriendSearchView) CreateView(t *model.TestCase) fyne.CanvasObject {
name := widget.NewEntry()
this.form.AppendItem(widget.NewFormItem(common.APP_TESTCASE_FORM_LABEL_FID, name))
this.form.OnSubmit = func() {
if err := service.GetPttService().SendToClient(
t.MainType,
t.SubType,
&pb.FriendSearchReq{NickName: name.Text},
); err != nil {
logrus.Error(err)
return
}
}
return this.form
}

View File

@ -13,13 +13,12 @@ type HeroListView struct {
BaseformView BaseformView
} }
func (this *HeroListView) CreateForm(t *model.TestCase) fyne.CanvasObject { func (this *HeroListView) CreateView(t *model.TestCase) fyne.CanvasObject {
this.form.OnSubmit = func() { this.form.OnSubmit = func() {
if err := service.GetPttService().SendToClient(t.MainType, t.SubType, &pb.HeroListReq{}); err != nil { if err := service.GetPttService().SendToClient(t.MainType, t.SubType, &pb.HeroListReq{}); err != nil {
logrus.Error(err) logrus.Error(err)
} }
go service.GetConnService().RespHandle(t)
} }
return this.form return this.form
} }

View File

@ -17,7 +17,7 @@ type HeroStrengthenUpStarView struct {
BaseformView BaseformView
} }
func (this *HeroStrengthenUpStarView) CreateForm(t *model.TestCase) fyne.CanvasObject { func (this *HeroStrengthenUpStarView) CreateView(t *model.TestCase) fyne.CanvasObject {
heroObjID := widget.NewEntry() heroObjID := widget.NewEntry()
//HeroRace //HeroRace
heroRaceId := widget.NewEntry() heroRaceId := widget.NewEntry()
@ -91,7 +91,6 @@ func (this *HeroStrengthenUpStarView) CreateForm(t *model.TestCase) fyne.CanvasO
return return
} }
go service.GetConnService().RespHandle(t)
} }
return this.form return this.form
} }

View File

@ -17,7 +17,7 @@ type HeroStrengthenUplvView struct {
BaseformView BaseformView
} }
func (this *HeroStrengthenUplvView) CreateForm(t *model.TestCase) fyne.CanvasObject { func (this *HeroStrengthenUplvView) CreateView(t *model.TestCase) fyne.CanvasObject {
heroObjID := widget.NewEntry() heroObjID := widget.NewEntry()
@ -61,7 +61,6 @@ func (this *HeroStrengthenUplvView) CreateForm(t *model.TestCase) fyne.CanvasObj
return return
} }
go service.GetConnService().RespHandle(t)
} }
return this.form return this.form
} }

View File

@ -16,7 +16,7 @@ type TaskActiveListView struct {
BaseformView BaseformView
} }
func (this *TaskActiveListView) CreateForm(t *model.TestCase) fyne.CanvasObject { func (this *TaskActiveListView) CreateView(t *model.TestCase) fyne.CanvasObject {
tagSelect := getTaskTagSelect() tagSelect := getTaskTagSelect()
this.form.AppendItem(widget.NewFormItem(common.APP_TESTCASE_FORM_TASKTAG, tagSelect)) this.form.AppendItem(widget.NewFormItem(common.APP_TESTCASE_FORM_TASKTAG, tagSelect))
@ -27,8 +27,6 @@ func (this *TaskActiveListView) CreateForm(t *model.TestCase) fyne.CanvasObject
}); err != nil { }); err != nil {
logrus.Error(err) logrus.Error(err)
} }
go service.GetConnService().RespHandle(t)
} }
return this.form return this.form
} }

View File

@ -16,7 +16,7 @@ type TaskActiveReceiveView struct {
BaseformView BaseformView
} }
func (this *TaskActiveReceiveView) CreateForm(t *model.TestCase) fyne.CanvasObject { func (this *TaskActiveReceiveView) CreateView(t *model.TestCase) fyne.CanvasObject {
id := widget.NewEntry() id := widget.NewEntry()
tagSelect := getTaskTagSelect() tagSelect := getTaskTagSelect()
@ -31,7 +31,6 @@ func (this *TaskActiveReceiveView) CreateForm(t *model.TestCase) fyne.CanvasObje
logrus.Error(err) logrus.Error(err)
} }
go service.GetConnService().RespHandle(t)
} }
return this.form return this.form
} }

View File

@ -16,7 +16,7 @@ type TaskListView struct {
BaseformView BaseformView
} }
func (this *TaskListView) CreateForm(t *model.TestCase) fyne.CanvasObject { func (this *TaskListView) CreateView(t *model.TestCase) fyne.CanvasObject {
tagSelect := getTaskTagSelect() tagSelect := getTaskTagSelect()
this.form.AppendItem(widget.NewFormItem(common.APP_TESTCASE_FORM_TASKTAG, tagSelect)) this.form.AppendItem(widget.NewFormItem(common.APP_TESTCASE_FORM_TASKTAG, tagSelect))
@ -26,8 +26,6 @@ func (this *TaskListView) CreateForm(t *model.TestCase) fyne.CanvasObject {
}); err != nil { }); err != nil {
logrus.Error(err) logrus.Error(err)
} }
go service.GetConnService().RespHandle(t)
} }
return this.form return this.form
} }

View File

@ -18,7 +18,7 @@ type TaskReceiveView struct {
BaseformView BaseformView
} }
func (this *TaskReceiveView) CreateForm(t *model.TestCase) fyne.CanvasObject { func (this *TaskReceiveView) CreateView(t *model.TestCase) fyne.CanvasObject {
if t.MainType == string(comm.ModuleTask) && t.SubType == task.TaskSubTypeReceive { if t.MainType == string(comm.ModuleTask) && t.SubType == task.TaskSubTypeReceive {
id := widget.NewEntry() id := widget.NewEntry()
@ -33,7 +33,6 @@ func (this *TaskReceiveView) CreateForm(t *model.TestCase) fyne.CanvasObject {
return return
} }
go service.GetConnService().RespHandle(t)
} }
} }

View File

@ -15,7 +15,7 @@ type UserModifynameView struct {
BaseformView BaseformView
} }
func (this *UserModifynameView) CreateForm(t *model.TestCase) fyne.CanvasObject { func (this *UserModifynameView) CreateView(t *model.TestCase) fyne.CanvasObject {
name := widget.NewEntry() name := widget.NewEntry()
this.form.AppendItem(widget.NewFormItem(common.APP_TESTCASE_FORM_NICKNAME, name)) this.form.AppendItem(widget.NewFormItem(common.APP_TESTCASE_FORM_NICKNAME, name))
@ -29,7 +29,6 @@ func (this *UserModifynameView) CreateForm(t *model.TestCase) fyne.CanvasObject
return return
} }
go service.GetConnService().RespHandle(t)
} }
return this.form return this.form

View File

@ -58,6 +58,20 @@ func NewMainWindow(ui *UIImpl) MainWindow {
mw.at = newAppContainer(ui.obs) mw.at = newAppContainer(ui.obs)
globalWin = mw globalWin = mw
ui.obs.AddListener(observer.EVENT_PING, observer.Listener{
OnNotify: func(data interface{}, args ...interface{}) {
dialog.NewConfirm("链接中断", data.(error).Error(), func(
b bool) {
if b {
globalWin.w.Close()
} else {
dialog.NewInformation("提示", "重启登录", globalWin.w)
return
}
}, globalWin.w).Show()
},
})
return mw return mw
} }
@ -82,12 +96,17 @@ func (ui *MainWindowImpl) createWindowContainer() {
ui.at = newAppContainer(ui.obs) ui.at = newAppContainer(ui.obs)
content := container.NewBorder(ui.tb.toolbar, ui.sb.widget, nil, ui.toys.widget, ui.at) content := container.NewBorder(ui.tb.toolbar, ui.sb.widget, nil, ui.toys.widget, ui.at)
ui.w.SetContent(content) ui.w.SetContent(content)
ui.w.SetCloseIntercept(ui.quiteHandle)
} }
func (ui *MainWindowImpl) SetStatusMsg(msg string) { func (ui *MainWindowImpl) SetStatusMsg(msg string) {
ui.sb.setMessage(fmt.Sprintf("err:%s", msg)) ui.sb.setMessage(fmt.Sprintf("err:%s", msg))
} }
func (ui *MainWindowImpl) quiteHandle() {
ui.w.Close()
}
// CreateWindow .... // CreateWindow ....
func (ui *MainWindowImpl) CreateWindow(title string, width, height float32, _ bool) { func (ui *MainWindowImpl) CreateWindow(title string, width, height float32, _ bool) {
// init window // init window
@ -170,7 +189,7 @@ func (ui *MainWindowImpl) createChooseServerWindow(
} }
// createLoginWin // createLoginWin
func (ui *MainWindowImpl) createLoginWin(sid int32) { func (ui *MainWindowImpl) createLoginWin(sid int32, sname string) {
//form //form
account := widget.NewEntry() account := widget.NewEntry()
account.Text = "user8120" //default account account.Text = "user8120" //default account
@ -192,6 +211,7 @@ func (ui *MainWindowImpl) createLoginWin(sid int32) {
dialog.ShowError(err, ui.w) dialog.ShowError(err, ui.w)
} else { } else {
ui.w.SetTitle(fmt.Sprintf("%s[%d]", sname, sid))
ui.connService.ListenerPush() ui.connService.ListenerPush()
//show mainwindow //show mainwindow
// logrus.Debug(rsp) // logrus.Debug(rsp)
@ -282,7 +302,7 @@ func (ui *MainWindowImpl) NewWelcomeLabel(data string) {
fyne.TextStyle{Bold: true}), fyne.TextStyle{Bold: true}),
container.NewCenter(container.NewHBox( container.NewCenter(container.NewHBox(
widget.NewButton(common.BUTTON_LOGIN, func() { widget.NewButton(common.BUTTON_LOGIN, func() {
ui.createLoginWin(cast.ToInt32(p[0])) ui.createLoginWin(cast.ToInt32(p[0]), p[1])
}), }),
)), )),
)) ))

View File

@ -3,9 +3,11 @@ package ui
import ( import (
"fmt" "fmt"
"go_dreamfactory/cmd/v2/model" "go_dreamfactory/cmd/v2/model"
"go_dreamfactory/cmd/v2/service/observer"
"go_dreamfactory/cmd/v2/ui/formview" "go_dreamfactory/cmd/v2/ui/formview"
"go_dreamfactory/comm" "go_dreamfactory/comm"
"go_dreamfactory/lego/core" "go_dreamfactory/lego/core"
"go_dreamfactory/modules/friend"
"go_dreamfactory/modules/hero" "go_dreamfactory/modules/hero"
"go_dreamfactory/modules/task" "go_dreamfactory/modules/task"
"go_dreamfactory/modules/user" "go_dreamfactory/modules/user"
@ -16,8 +18,8 @@ import (
) )
type MyCaseView interface { type MyCaseView interface {
Init() Init(obs observer.Observer, w fyne.Window)
CreateForm(t *model.TestCase) fyne.CanvasObject CreateView(t *model.TestCase) fyne.CanvasObject
} }
// 1 注册接口测试的表单试图 // 1 注册接口测试的表单试图
@ -36,17 +38,55 @@ var (
ff(comm.ModuleHero, hero.HeroSubTypeList): &formview.HeroListView{}, ff(comm.ModuleHero, hero.HeroSubTypeList): &formview.HeroListView{},
ff(comm.ModuleHero, hero.StrengthenUplv): &formview.HeroStrengthenUplvView{}, ff(comm.ModuleHero, hero.StrengthenUplv): &formview.HeroStrengthenUplvView{},
ff(comm.ModuleHero, hero.StrengthenUpStar): &formview.HeroStrengthenUpStarView{}, ff(comm.ModuleHero, hero.StrengthenUpStar): &formview.HeroStrengthenUpStarView{},
//friend
ff(comm.ModuleFriend, friend.FriendSubTypeList): &formview.FriendListView{},
ff(comm.ModuleFriend, friend.FriendSubTypeApply): &formview.FriendApplyView{},
// ff(comm.ModuleFriend, friend.FriendSubTypeApplyList): &formview.FriendApplyListView{},
ff(comm.ModuleFriend, friend.FriendSubTypeAgree): &formview.FriendAgreeView{},
// ff(comm.ModuleFriend, friend.FriendSubTypeRefuse): &formview.FriendRefuseView{},
ff(comm.ModuleFriend, friend.FriendSubTypeBlacklist): &formview.FriendBlacklistView{},
ff(comm.ModuleFriend, friend.FriendSubTypeAddBlack): &formview.FriendAddBlackView{},
ff(comm.ModuleFriend, friend.FriendSubTypeDelBlack): &formview.FriendDelblackView{},
ff(comm.ModuleFriend, friend.FriendSubTypeSearch): &formview.FriendSearchView{},
} }
) )
// 2 添加导航菜单 // 2 添加导航菜单
var ( var (
CaseIndex = map[string][]string{ CaseIndex = map[string][]string{
"": {"gm", "user", "hero", "task"}, "": {
"gm": {"gm.cmd"}, string(comm.ModuleGM),
"user": {"user.modifyname"}, string(comm.ModuleUser),
"hero": {"hero.list", "hero.strengthenuplv", "hero.strengthenupstar"}, string(comm.ModuleHero),
"task": {"task.list", "task.receive", "task.activelist", "task.activereceive"}, string(comm.ModuleTask),
string(comm.ModuleFriend),
},
"gm": {ff(comm.ModuleGM, "cmd")},
"user": {
ff(comm.ModuleUser, user.UserSubTypeModifyName),
},
"hero": {
ff(comm.ModuleHero, hero.HeroSubTypeList),
ff(comm.ModuleHero, hero.StrengthenUplv),
ff(comm.ModuleHero, hero.StrengthenUpStar),
},
"task": {
ff(comm.ModuleTask, task.TaskSubTypeList),
ff(comm.ModuleTask, task.TaskSubTypeReceive),
ff(comm.ModuleTask, task.TaskSubTypeActiveList),
ff(comm.ModuleTask, task.TaskSubTypeActiveReceive),
},
"friend": {
ff(comm.ModuleFriend, friend.FriendSubTypeList),
ff(comm.ModuleFriend, friend.FriendSubTypeApply),
// ff(comm.ModuleFriend, friend.FriendSubTypeApplyList),
ff(comm.ModuleFriend, friend.FriendSubTypeAgree),
// ff(comm.ModuleFriend, friend.FriendSubTypeRefuse),
ff(comm.ModuleFriend, friend.FriendSubTypeBlacklist),
ff(comm.ModuleFriend, friend.FriendSubTypeAddBlack),
ff(comm.ModuleFriend, friend.FriendSubTypeDelBlack),
ff(comm.ModuleFriend, friend.FriendSubTypeSearch),
},
} }
) )
@ -153,6 +193,83 @@ var (
Rsp: &pb.HeroStrengthenUpStarResp{}, Rsp: &pb.HeroStrengthenUpStarResp{},
Enabled: true, Enabled: true,
}, },
//friend
string(comm.ModuleFriend): {
MainType: string(comm.ModuleFriend),
Enabled: true,
},
ff(comm.ModuleFriend, friend.FriendSubTypeList): {
Desc: "好友列表",
MainType: string(comm.ModuleFriend),
SubType: friend.FriendSubTypeList,
Req: &pb.FriendListReq{},
Rsp: &pb.FriendListResp{},
Enabled: true,
},
ff(comm.ModuleFriend, friend.FriendSubTypeApply): {
Desc: "好友申请",
MainType: string(comm.ModuleFriend),
SubType: friend.FriendSubTypeApply,
Req: &pb.FriendApplyReq{},
Rsp: &pb.FriendApplyResp{},
Enabled: true,
},
// ff(comm.ModuleFriend, friend.FriendSubTypeApplyList): {
// Desc: "申请列表",
// MainType: string(comm.ModuleFriend),
// SubType: friend.FriendSubTypeApplyList,
// Req: &pb.FriendApplyListReq{},
// Rsp: &pb.FriendApplyListResp{},
// Enabled: true,
// },
ff(comm.ModuleFriend, friend.FriendSubTypeBlacklist): {
Desc: "黑名单列表",
MainType: string(comm.ModuleFriend),
SubType: friend.FriendSubTypeBlacklist,
Req: &pb.FriendBlackListReq{},
Rsp: &pb.FriendBlackListResp{},
Enabled: true,
},
ff(comm.ModuleFriend, friend.FriendSubTypeAddBlack): {
Desc: "添加黑名单",
MainType: string(comm.ModuleFriend),
SubType: friend.FriendSubTypeAddBlack,
Req: &pb.FriendBlackAddReq{},
Rsp: &pb.FriendBlackAddResp{},
Enabled: true,
},
ff(comm.ModuleFriend, friend.FriendSubTypeDelBlack): {
Desc: "删除黑名单",
MainType: string(comm.ModuleFriend),
SubType: friend.FriendSubTypeDelBlack,
Req: &pb.FriendDelBlackReq{},
Rsp: &pb.FriendDelBlackResp{},
Enabled: true,
},
ff(comm.ModuleFriend, friend.FriendSubTypeAgree): {
Desc: "好友申请审批",
MainType: string(comm.ModuleFriend),
SubType: friend.FriendSubTypeAgree,
Req: &pb.FriendAgreeReq{},
Rsp: &pb.FriendAgreeResp{},
Enabled: true,
},
// ff(comm.ModuleFriend, friend.FriendSubTypeRefuse): {
// Desc: "拒绝",
// MainType: string(comm.ModuleFriend),
// SubType: friend.FriendSubTypeRefuse,
// Req: &pb.FriendRefuseReq{},
// Rsp: &pb.FriendRefuseResp{},
// Enabled: true,
// },
ff(comm.ModuleFriend, friend.FriendSubTypeSearch): {
Desc: "搜索好友",
MainType: string(comm.ModuleFriend),
SubType: friend.FriendSubTypeSearch,
Req: &pb.FriendSearchReq{},
Rsp: &pb.FriendSearchResp{},
Enabled: true,
},
} }
) )

View File

@ -3,8 +3,12 @@ package ui
import ( import (
"fmt" "fmt"
"go_dreamfactory/cmd/v2/lib/common" "go_dreamfactory/cmd/v2/lib/common"
"go_dreamfactory/cmd/v2/model"
"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"
"time" "time"
"fyne.io/fyne/v2" "fyne.io/fyne/v2"
@ -13,6 +17,7 @@ import (
"fyne.io/fyne/v2/layout" "fyne.io/fyne/v2/layout"
"fyne.io/fyne/v2/widget" "fyne.io/fyne/v2/widget"
"github.com/atotto/clipboard" "github.com/atotto/clipboard"
"github.com/sirupsen/logrus"
"github.com/spf13/cast" "github.com/spf13/cast"
) )
@ -36,7 +41,6 @@ func (this *toyUserInfo) Init(obs observer.Observer) error {
this.copyBtn = widget.NewButton(common.USERINFO_BTN_COPY, func() { this.copyBtn = widget.NewButton(common.USERINFO_BTN_COPY, func() {
if this.userInfo != nil && this.userInfo.DbUser != nil { if this.userInfo != nil && this.userInfo.DbUser != nil {
_ = clipboard.WriteAll(this.userInfo.DbUser.Uid) _ = clipboard.WriteAll(this.userInfo.DbUser.Uid)
} }
}) })
this.copyBtn.Disable() this.copyBtn.Disable()
@ -55,11 +59,11 @@ func (this *toyUserInfo) Init(obs observer.Observer) error {
nil, nil, nil, container.NewVScroll(this.dataList))) nil, nil, nil, container.NewVScroll(this.dataList)))
this.widget.Resize(fyne.NewSize(ToyWidth, 600)) this.widget.Resize(fyne.NewSize(ToyWidth, 600))
this.Run() this.dataListener()
return nil return nil
} }
func (this *toyUserInfo) Run() { func (this *toyUserInfo) dataListener() {
this.obs.AddListener(observer.EVENT_USERINFO, observer.Listener{ this.obs.AddListener(observer.EVENT_USERINFO, observer.Listener{
OnNotify: func(d interface{}, args ...interface{}) { OnNotify: func(d interface{}, args ...interface{}) {
time.Sleep(time.Millisecond * 50) time.Sleep(time.Millisecond * 50)
@ -72,7 +76,7 @@ func (this *toyUserInfo) Run() {
return return
} }
_ = this.data.Append(fmt.Sprintf("%-3s\t: %s", common.USERINFO_UID, this.userInfo.DbUser.Uid)) // _ = this.data.Append(fmt.Sprintf("%-3s\t: %s", common.USERINFO_UID, this.userInfo.DbUser.Uid))
_ = this.data.Append(fmt.Sprintf("%-3s\t: %s", common.USERINFO_ACC, this.userInfo.DbUser.Binduid)) _ = this.data.Append(fmt.Sprintf("%-3s\t: %s", common.USERINFO_ACC, this.userInfo.DbUser.Binduid))
_ = this.data.Append(fmt.Sprintf("%-3s\t: %s", common.USERINFO_NAME, this.userInfo.DbUser.Name)) _ = this.data.Append(fmt.Sprintf("%-3s\t: %s", common.USERINFO_NAME, this.userInfo.DbUser.Name))
_ = this.data.Append(fmt.Sprintf("%-3s\t: %s", common.USERINFO_AVATAR, cast.ToString(this.userInfo.DbUser.Avatar))) _ = this.data.Append(fmt.Sprintf("%-3s\t: %s", common.USERINFO_AVATAR, cast.ToString(this.userInfo.DbUser.Avatar)))
@ -82,4 +86,40 @@ func (this *toyUserInfo) Run() {
_ = this.data.Append(fmt.Sprintf("%-3s\t: %s", common.USERINFO_EXP, cast.ToString(this.userInfo.DbUser.Exp))) _ = this.data.Append(fmt.Sprintf("%-3s\t: %s", common.USERINFO_EXP, cast.ToString(this.userInfo.DbUser.Exp)))
}, },
}) })
this.obs.AddListener(observer.EVENT_CASE_RSP, observer.Listener{
OnNotify: func(d interface{}, args ...interface{}) {
data := d.(*pb.UserMessage)
//change name
if data.MainType == string(comm.ModuleUser) &&
data.SubType == user.UserSubTypeModifyName {
rsp := &pb.UserModifynameResp{}
if !comm.ProtoUnmarshal(data, rsp) {
logrus.Error("unmarshal err")
}
//TODO 改此协议 返回昵称
// _=this.data.SetValue(1, fmt.Sprintf("%-3s\t: %s", common.USERINFO_NAME, rsp.Uid))
}
},
})
this.obs.AddListener(observer.EVENT_APP_PUSH, observer.Listener{
OnNotify: func(d interface{}, args ...interface{}) {
data := d.(*model.PushModel)
// listener gold
if data.Msg.MainType == string(comm.ModuleUser) &&
data.Msg.SubType == "reschange" {
rsp := &pb.UserResChangePush{}
if !comm.ProtoUnmarshal(data.Msg, rsp) {
logrus.Error("unmarshal err")
}
_ = this.data.SetValue(5, fmt.Sprintf("%-3s\t: %s", common.USERINFO_GOLD, cast.ToString(rsp.Gold)))
}
// listener exp
if data.Msg.MainType == string(comm.ModuleUser) &&
data.Msg.SubType == "" {
//TODO change exp
}
},
})
} }

View File

@ -55,7 +55,7 @@ func (this *MCompConfigure) GetConfigure(name string) (v interface{}, err error)
//全局配置 //全局配置
func (this *MCompConfigure) GetGlobalConf(key string) string { func (this *MCompConfigure) GetGlobalConf(key string) string {
if v, err := this.GetConfigure(game_initial); err != nil { if v, err := this.GetConfigure(game_global); err != nil {
log.Errorf("get global conf err:%v", err) log.Errorf("get global conf err:%v", err)
return "" return ""
} else { } else {

View File

@ -29,11 +29,6 @@ func (this *apiComp) Apply(session comm.IUserSession, req *pb.FriendApplyReq) (c
Resp *pb.FriendApplyResp Resp *pb.FriendApplyResp
) )
defer func() {
// utils.TraceFunc(session.GetUserId(), string(this.module.GetType()), FriendSubTypeApply, req, Resp)
}()
defer func() { defer func() {
if code == pb.ErrorCode_Success { if code == pb.ErrorCode_Success {
Resp = &pb.FriendApplyResp{ Resp = &pb.FriendApplyResp{
@ -41,8 +36,7 @@ func (this *apiComp) Apply(session comm.IUserSession, req *pb.FriendApplyReq) (c
FriendId: req.FriendId, FriendId: req.FriendId,
} }
} }
err := session.SendMsg(string(this.module.GetType()), FriendSubTypeApply, Resp) if err := session.SendMsg(string(this.module.GetType()), FriendSubTypeApply, Resp); err != nil {
if err != nil {
code = pb.ErrorCode_SystemError code = pb.ErrorCode_SystemError
return return
} }

View File

@ -37,9 +37,14 @@ func (this *apiComp) ApplyList(session comm.IUserSession, req *pb.FriendApplyLis
} }
for _, userId := range self.ApplyIds { for _, userId := range self.ApplyIds {
user := this.module.ModuleUser.GetUser(userId)
if user == nil {
continue
}
//TODO 组装FriendBase明细数据 //TODO 组装FriendBase明细数据
list = append(list, &pb.FriendBase{ list = append(list, &pb.FriendBase{
UserId: userId, UserId: userId,
NickName: user.Name,
}) })
} }

View File

@ -38,9 +38,14 @@ func (this *apiComp) Blacklist(session comm.IUserSession, req *pb.FriendBlackLis
} }
for _, userId := range self.BlackIds { for _, userId := range self.BlackIds {
//TODO 完善FriendBase信息 user := this.module.ModuleUser.GetUser(userId)
if user == nil {
continue
}
list = append(list, &pb.FriendBase{ list = append(list, &pb.FriendBase{
UserId: userId, UserId: userId,
NickName: user.Name,
}) })
} }

View File

@ -37,8 +37,13 @@ func (this *apiComp) List(session comm.IUserSession, req *pb.FriendListReq) (cod
} }
for _, userId := range self.FriendIds { for _, userId := range self.FriendIds {
user := this.module.ModuleUser.GetUser(userId)
if user == nil {
continue
}
list = append(list, &pb.FriendBase{ list = append(list, &pb.FriendBase{
UserId: userId, UserId: userId,
NickName: user.Name,
}) })
} }

View File

@ -39,7 +39,7 @@ func (this *Friend) OnInstallComp() {
//获取最大好友数 //获取最大好友数
func (this *Friend) getFriendMax() int { func (this *Friend) getFriendMax() int {
if maxHy := this.configure.GetGlobalConf("max_hy"); maxHy != "" { if maxHy := this.configure.GetGlobalConf("friend_maxnum"); maxHy != "" {
return cast.ToInt(maxHy) return cast.ToInt(maxHy)
} }
return 0 return 0
@ -47,7 +47,7 @@ func (this *Friend) getFriendMax() int {
//获取最大黑名单数 //获取最大黑名单数
func (this *Friend) getBlackMax() int { func (this *Friend) getBlackMax() int {
if maxHy := this.configure.GetGlobalConf("max_hmd"); maxHy != "" { if maxHy := this.configure.GetGlobalConf("friend_black"); maxHy != "" {
return cast.ToInt(maxHy) return cast.ToInt(maxHy)
} }
return 0 return 0