修复跨服好友申请
This commit is contained in:
parent
e5f8fe912c
commit
2f6722bc5a
@ -74,14 +74,15 @@ func (f *ItemList) CreateDefaultCheckList() *widget.List {
|
||||
},
|
||||
func(id widget.ListItemID, item fyne.CanvasObject) {
|
||||
c, _ := item.(*widget.Check)
|
||||
_id := f.CachedList.Items[id].Id
|
||||
c.Text = f.CachedList.Items[id].Text
|
||||
c.Checked = f.CachedList.Items[id].Checked
|
||||
|
||||
c.OnChanged = func(b bool) {
|
||||
if b {
|
||||
f.SelItemIds = append(f.SelItemIds, c.Text)
|
||||
f.SelItemIds = append(f.SelItemIds, _id)
|
||||
} else {
|
||||
f.SelItemIds = utils.DeleteString(f.SelItemIds, c.Text)
|
||||
f.SelItemIds = utils.DeleteString(f.SelItemIds, _id)
|
||||
}
|
||||
f.TitleLabel.SetText(fmt.Sprintf("(%d/%d)", len(f.SelItemIds), f.ItemTotal))
|
||||
f.CachedList.Items[id].Checked = b
|
||||
|
@ -125,9 +125,9 @@ func (a *appTester) makeNav(setNav func(testCase *model.TestCase)) fyne.CanvasOb
|
||||
if a.disEnabled(t) {
|
||||
obj.(*widget.Label).TextStyle = fyne.TextStyle{Italic: true}
|
||||
if branch { //parent
|
||||
obj.(*widget.Label).SetText(fmt.Sprintf("%s(dis)", t.MainType))
|
||||
obj.(*widget.Label).SetText(fmt.Sprintf("%s(dis0)", t.MainType))
|
||||
} else {
|
||||
obj.(*widget.Label).SetText(fmt.Sprintf("%s(dis)", t.SubType))
|
||||
// obj.(*widget.Label).SetText(fmt.Sprintf("%s(dis1)", t.SubType))
|
||||
}
|
||||
} else {
|
||||
if branch { //parent
|
||||
|
@ -70,8 +70,8 @@ var (
|
||||
ff(comm.ModuleEquipment, "equip"): &formview.EquipUpDownView{},
|
||||
ff(comm.ModuleEquipment, "upgrade"): &formview.EquipUpgradeView{},
|
||||
//friend
|
||||
ff(comm.ModuleFriend, friend.FriendSubTypeList): &formview.FriendListView{},
|
||||
ff(comm.ModuleFriend, friend.FriendSubTypeApply): &formview.FriendApplyView{},
|
||||
ff(comm.ModuleFriend, friend.FriendSubTypeList): &formview.FriendListView{},
|
||||
// ff(comm.ModuleFriend, friend.FriendSubTypeApply): &formview.FriendApplyView{},
|
||||
ff(comm.ModuleFriend, friend.FriendSubTypeAgree): &formview.FriendAgreeView{},
|
||||
ff(comm.ModuleFriend, friend.FriendSubTypeBlacklist): &formview.FriendBlacklistView{},
|
||||
ff(comm.ModuleFriend, friend.FriendSubTypeAddBlack): &formview.FriendAddBlackView{},
|
||||
@ -169,7 +169,7 @@ var (
|
||||
},
|
||||
"friend": {
|
||||
ff(comm.ModuleFriend, friend.FriendSubTypeList),
|
||||
ff(comm.ModuleFriend, friend.FriendSubTypeApply),
|
||||
// ff(comm.ModuleFriend, friend.FriendSubTypeApply),
|
||||
ff(comm.ModuleFriend, friend.FriendSubTypeAgree),
|
||||
ff(comm.ModuleFriend, friend.FriendSubTypeBlacklist),
|
||||
ff(comm.ModuleFriend, friend.FriendSubTypeAddBlack),
|
||||
@ -533,8 +533,8 @@ var (
|
||||
},
|
||||
},
|
||||
ff(comm.ModuleFriend, friend.FriendSubTypeList): {
|
||||
NavLabel: "好友列表",
|
||||
Desc: "好友列表",
|
||||
NavLabel: "我的好友",
|
||||
Desc: "我的好友列表",
|
||||
MainType: string(comm.ModuleFriend),
|
||||
SubType: friend.FriendSubTypeList,
|
||||
Req: &pb.FriendListReq{},
|
||||
@ -548,7 +548,7 @@ var (
|
||||
SubType: friend.FriendSubTypeApply,
|
||||
Req: &pb.FriendApplyReq{},
|
||||
Rsp: &pb.FriendApplyResp{},
|
||||
Enabled: true,
|
||||
Enabled: false,
|
||||
},
|
||||
ff(comm.ModuleFriend, friend.FriendSubTypeBlacklist): {
|
||||
NavLabel: "黑名单",
|
||||
|
@ -630,7 +630,7 @@ func (a *appTerm) createDownloadWindow() fyne.Window {
|
||||
}
|
||||
|
||||
for _, f := range files {
|
||||
a.downloadList.AddItem(common.Item{Text: f.FileName, Size: f.Size})
|
||||
a.downloadList.AddItem(common.Item{Id: f.FileName, Text: f.FileName, Size: f.Size})
|
||||
}
|
||||
}()
|
||||
|
||||
|
@ -1,6 +1,7 @@
|
||||
package formview
|
||||
|
||||
import (
|
||||
"go_dreamfactory/cmd/v2/lib/common"
|
||||
"go_dreamfactory/cmd/v2/model"
|
||||
"go_dreamfactory/cmd/v2/service"
|
||||
"go_dreamfactory/cmd/v2/service/observer"
|
||||
@ -17,51 +18,76 @@ import (
|
||||
|
||||
// 好友审批
|
||||
type FriendAgreeView struct {
|
||||
ListBaseView
|
||||
BaseformView
|
||||
itemList common.ItemList
|
||||
flag bool
|
||||
greeList func()
|
||||
}
|
||||
|
||||
func (this *FriendAgreeView) CreateView(t *model.TestCase) fyne.CanvasObject {
|
||||
//init required
|
||||
this.initItemList()
|
||||
this.itemList = *common.NewItemList()
|
||||
|
||||
this.itemList.ItemList = this.itemList.CreateDefaultCheckList()
|
||||
|
||||
this.greeList = func() {
|
||||
if err := service.GetPttService().SendToClient(
|
||||
string(comm.ModuleFriend),
|
||||
friend.FriendSubTypeApplyList,
|
||||
&pb.FriendApplyListReq{}); err != nil {
|
||||
logrus.Error(err)
|
||||
}
|
||||
}
|
||||
defer this.greeList()
|
||||
|
||||
refreshBtn := widget.NewButtonWithIcon("", theme.ViewRefreshIcon(), func() {
|
||||
this.itemList.Reset()
|
||||
this.greeList()
|
||||
})
|
||||
|
||||
//同意提交
|
||||
agreeBtn := widget.NewButtonWithIcon("同意", theme.ConfirmIcon(), func() {
|
||||
if len(this.itemList.SelItemIds) == 0 {
|
||||
common.ShowTip("请选择项目")
|
||||
return
|
||||
}
|
||||
logrus.Debug(this.itemList.SelItemIds)
|
||||
if err := service.GetPttService().SendToClient(
|
||||
t.MainType,
|
||||
t.SubType,
|
||||
&pb.FriendAgreeReq{
|
||||
FriendIds: this.selItemIds,
|
||||
FriendIds: this.itemList.SelItemIds,
|
||||
},
|
||||
); err != nil {
|
||||
logrus.Error(err)
|
||||
return
|
||||
}
|
||||
this.listBtnFun()
|
||||
})
|
||||
|
||||
//拒绝
|
||||
refuseBtn := widget.NewButtonWithIcon("拒绝", theme.CancelIcon(), func() {
|
||||
if len(this.itemList.SelItemIds) == 0 {
|
||||
common.ShowTip("请选择项目")
|
||||
return
|
||||
}
|
||||
if err := service.GetPttService().SendToClient(
|
||||
string(comm.ModuleFriend),
|
||||
friend.FriendSubTypeRefuse,
|
||||
&pb.FriendRefuseReq{
|
||||
FriendIds: this.selItemIds,
|
||||
FriendIds: this.itemList.SelItemIds,
|
||||
}); err != nil {
|
||||
logrus.Error(err)
|
||||
return
|
||||
}
|
||||
this.listBtnFun()
|
||||
|
||||
})
|
||||
|
||||
this.createItemListWithCheck()
|
||||
// layout
|
||||
buttonBar := container.NewHBox(refreshBtn, agreeBtn, refuseBtn)
|
||||
|
||||
applyListBtn := widget.NewButton("申请列表", this.listBtnFun())
|
||||
|
||||
split := container.NewHSplit(this.dataListWidget, container.NewVBox(applyListBtn, agreeBtn, refuseBtn))
|
||||
split.Offset = 1
|
||||
c := container.NewBorder(buttonBar, nil, nil, nil, this.itemList.ItemList)
|
||||
|
||||
this.dataListener()
|
||||
return split
|
||||
return c
|
||||
}
|
||||
|
||||
// listener applyListdata
|
||||
@ -80,15 +106,13 @@ func (this *FriendAgreeView) dataListener() {
|
||||
return
|
||||
}
|
||||
|
||||
this.itemListData = model.NewItemModelList()
|
||||
for _, v := range rsp.List {
|
||||
fm := &model.ItemModel{
|
||||
Id: v.UserId,
|
||||
Label: v.NickName,
|
||||
item := common.Item{
|
||||
Id: v.UserId,
|
||||
Text: v.NickName,
|
||||
}
|
||||
this.itemListData.DataList = append(this.itemListData.DataList, fm)
|
||||
this.itemList.AddItem(item)
|
||||
}
|
||||
this.reloadListData()
|
||||
},
|
||||
})
|
||||
}
|
||||
|
@ -1,6 +1,7 @@
|
||||
package formview
|
||||
|
||||
import (
|
||||
"go_dreamfactory/cmd/v2/lib/common"
|
||||
"go_dreamfactory/cmd/v2/model"
|
||||
"go_dreamfactory/cmd/v2/service"
|
||||
"go_dreamfactory/cmd/v2/service/observer"
|
||||
@ -17,17 +18,16 @@ import (
|
||||
|
||||
//好友列表
|
||||
type FriendListView struct {
|
||||
ListBaseView //继承支持好友列表的基类
|
||||
friendList func()
|
||||
flag bool
|
||||
friendList func()
|
||||
BaseformView
|
||||
itemList *common.ItemList
|
||||
flag bool
|
||||
}
|
||||
|
||||
func (this *FriendListView) CreateView(t *model.TestCase) fyne.CanvasObject {
|
||||
// init required
|
||||
this.initItemList()
|
||||
this.itemList = common.NewItemList()
|
||||
|
||||
// create friend list view
|
||||
this.createItemListWithCheck()
|
||||
this.itemList.ItemList = this.itemList.CreateDefaultCheckList()
|
||||
|
||||
// new friendlist btn
|
||||
this.friendList = func() {
|
||||
@ -37,33 +37,42 @@ func (this *FriendListView) CreateView(t *model.TestCase) fyne.CanvasObject {
|
||||
&pb.FriendListReq{}); err != nil {
|
||||
logrus.Error(err)
|
||||
}
|
||||
this.itemListData = model.NewItemModelList()
|
||||
}
|
||||
friendListBtn := widget.NewButton("好友列表", this.friendList)
|
||||
|
||||
defer this.friendList()
|
||||
|
||||
refreshBtn := widget.NewButtonWithIcon("", theme.ViewRefreshIcon(), func() {
|
||||
this.itemList.Reset()
|
||||
this.friendList()
|
||||
})
|
||||
|
||||
//点赞
|
||||
zanBtn := widget.NewButtonWithIcon("点赞", theme.ConfirmIcon(), func() {
|
||||
|
||||
if len(this.itemList.SelItemIds) == 0 {
|
||||
common.ShowTip("请选择项目")
|
||||
return
|
||||
}
|
||||
if err := service.GetPttService().SendToClient(
|
||||
t.MainType,
|
||||
friend.FriendSubTypeZan,
|
||||
&pb.FriendZanReq{
|
||||
FriendIds: this.selItemIds,
|
||||
FriendIds: this.itemList.SelItemIds,
|
||||
},
|
||||
); err != nil {
|
||||
logrus.Error(err)
|
||||
return
|
||||
}
|
||||
this.listBtnFun()
|
||||
})
|
||||
|
||||
// layout
|
||||
split := container.NewHSplit(this.dataListWidget, container.NewVBox(friendListBtn, zanBtn))
|
||||
split.Offset = 1
|
||||
buttonBar := container.NewHBox(refreshBtn, zanBtn)
|
||||
|
||||
// layout
|
||||
// split := container.NewHSplit(this.itemList.ItemList, container.NewVBox(friendListBtn, zanBtn))
|
||||
// split.Offset = 1
|
||||
c := container.NewBorder(buttonBar, nil, nil, nil, this.itemList.ItemList)
|
||||
//data listener for
|
||||
this.dataListener()
|
||||
return split
|
||||
return c
|
||||
}
|
||||
|
||||
func (this *FriendListView) Load() {
|
||||
@ -88,15 +97,14 @@ func (this *FriendListView) dataListener() {
|
||||
return
|
||||
}
|
||||
|
||||
this.itemListData = model.NewItemModelList()
|
||||
for _, v := range rsp.List {
|
||||
fm := &model.ItemModel{
|
||||
Id: v.UserId,
|
||||
Label: v.NickName,
|
||||
item := common.Item{
|
||||
Id: v.UserId,
|
||||
Text: v.NickName,
|
||||
}
|
||||
this.itemListData.DataList = append(this.itemListData.DataList, fm)
|
||||
this.itemList.AddItem(item)
|
||||
}
|
||||
this.reloadListData()
|
||||
|
||||
},
|
||||
})
|
||||
this.flag = true
|
||||
|
@ -1,24 +1,97 @@
|
||||
package formview
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"go_dreamfactory/cmd/v2/lib/common"
|
||||
"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 FriendRandListView struct {
|
||||
BaseformView
|
||||
itemList *common.ItemList
|
||||
friendRandList func()
|
||||
flag bool
|
||||
}
|
||||
|
||||
func (this *FriendRandListView) CreateView(t *model.TestCase) fyne.CanvasObject {
|
||||
this.form.OnSubmit = func() {
|
||||
this.itemList = common.NewItemList()
|
||||
|
||||
this.itemList.ItemList = this.itemList.CreateList()
|
||||
|
||||
this.friendRandList = func() {
|
||||
if err := service.GetPttService().SendToClient(t.MainType, t.SubType,
|
||||
&pb.FriendRandlistReq{}); err != nil {
|
||||
logrus.Error(err)
|
||||
}
|
||||
}
|
||||
return this.form
|
||||
defer this.friendRandList()
|
||||
|
||||
refreshBtn := widget.NewButtonWithIcon("", theme.ViewRefreshIcon(), func() {
|
||||
this.itemList.Reset()
|
||||
this.friendRandList()
|
||||
})
|
||||
//好友申请
|
||||
friendApplyBtn := widget.NewButton("申请", func() {
|
||||
selItems := this.itemList.SelItemIds
|
||||
if len(selItems) == 0 || (len(selItems) > 0 && selItems[0] == "") {
|
||||
common.ShowTip("请选择项目")
|
||||
return
|
||||
}
|
||||
logrus.Debug(this.itemList.SelItemIds[0])
|
||||
if err := service.GetPttService().SendToClient(t.MainType, "apply", &pb.FriendApplyReq{
|
||||
FriendId: this.itemList.SelItemIds[0],
|
||||
}); err != nil {
|
||||
logrus.Error(err)
|
||||
}
|
||||
})
|
||||
|
||||
btnBar := container.NewHBox(refreshBtn, friendApplyBtn)
|
||||
|
||||
// layout
|
||||
c := container.NewBorder(btnBar, nil, nil, nil, this.itemList.ItemList)
|
||||
|
||||
this.dataListener()
|
||||
return c
|
||||
}
|
||||
|
||||
func (this *FriendRandListView) dataListener() {
|
||||
if this.flag {
|
||||
return
|
||||
}
|
||||
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) &&
|
||||
data.SubType == friend.FriendSubTypeRandList) {
|
||||
return
|
||||
}
|
||||
rsp := &pb.FriendRandlistResp{}
|
||||
|
||||
if !comm.ProtoUnmarshal(data, rsp) {
|
||||
logrus.Error("unmarshal err")
|
||||
return
|
||||
}
|
||||
|
||||
for _, v := range rsp.List {
|
||||
item := common.Item{
|
||||
Id: v.UserId,
|
||||
Text: fmt.Sprintf("%s 服务:%s", v.NickName, v.ServerId),
|
||||
}
|
||||
this.itemList.AddItem(item)
|
||||
}
|
||||
|
||||
},
|
||||
})
|
||||
this.flag = true
|
||||
}
|
||||
|
@ -50,6 +50,14 @@ func (this *apiComp) Agree(session comm.IUserSession, req *pb.FriendAgreeReq) (c
|
||||
//同意的好友
|
||||
agreeIds := []string{}
|
||||
for _, friendId := range req.FriendIds {
|
||||
// 验证friendId是否有效
|
||||
user, err := this.moduleFriend.ModuleUser.GetRmoteUser(friendId)
|
||||
if err != nil {
|
||||
continue
|
||||
}
|
||||
if user.Uid == "" {
|
||||
continue
|
||||
}
|
||||
if _, ok := utils.Find(self.FriendIds, friendId); !ok {
|
||||
//不在好友列表中就加入
|
||||
agreeIds = append(agreeIds, friendId)
|
||||
@ -82,6 +90,7 @@ func (this *apiComp) Agree(session comm.IUserSession, req *pb.FriendAgreeReq) (c
|
||||
})
|
||||
if err != nil {
|
||||
code = pb.ErrorCode_DBError
|
||||
return
|
||||
}
|
||||
|
||||
//将目标从申请列表中删除
|
||||
|
@ -58,7 +58,9 @@ func (this *apiComp) Randlist(session comm.IUserSession, req *pb.FriendRandlistR
|
||||
}
|
||||
} else {
|
||||
for _, v := range newList {
|
||||
randOnlineUsers = append(randOnlineUsers, v.Uid)
|
||||
if v.Uid != "" {
|
||||
randOnlineUsers = append(randOnlineUsers, v.Uid)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -79,9 +81,10 @@ func (this *apiComp) Randlist(session comm.IUserSession, req *pb.FriendRandlistR
|
||||
// 申请过的在线好友,设置申请状态
|
||||
if _, ok := utils.Findx(target.ApplyIds, self.Uid); ok {
|
||||
base.IsApplied = true
|
||||
} else {
|
||||
userList = append(userList, base)
|
||||
}
|
||||
|
||||
userList = append(userList, base)
|
||||
}
|
||||
|
||||
rsp := &pb.FriendRandlistResp{
|
||||
|
Loading…
Reference in New Issue
Block a user