diff --git a/cmd/v2/ui/views/reddot.go b/cmd/v2/ui/views/reddot.go index 45b84cdc5..08f25858d 100644 --- a/cmd/v2/ui/views/reddot.go +++ b/cmd/v2/ui/views/reddot.go @@ -1,22 +1,35 @@ 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/pb" "strings" "fyne.io/fyne/v2" + "fyne.io/fyne/v2/container" + "fyne.io/fyne/v2/theme" "fyne.io/fyne/v2/widget" "github.com/sirupsen/logrus" "github.com/spf13/cast" ) type ReddotView struct { + reddotList func() BaseformView + itemList *common.ItemList + flag bool } func (this *ReddotView) CreateView(t *model.TestCase) fyne.CanvasObject { + this.itemList = common.NewItemList() + + this.itemList.ItemList = this.itemList.CreateList() + reddotTypeEntry := widget.NewEntry() this.form.AppendItem(widget.NewFormItem("红点类型", reddotTypeEntry)) @@ -33,5 +46,51 @@ func (this *ReddotView) CreateView(t *model.TestCase) fyne.CanvasObject { logrus.Error(err) } } - return this.form + + this.reddotList = func() { + if err := service.GetPttService().SendToClient( + string(comm.ModuleReddot), + "getall", + &pb.ReddotGetAllReq{}); err != nil { + logrus.Error(err) + } + } + + defer this.reddotList() + + refreshBtn := widget.NewButtonWithIcon("", theme.ViewRefreshIcon(), func() { + this.itemList.Reset() + this.reddotList() + }) + + this.dataListener() + buttonBar := container.NewHBox(refreshBtn) + c := container.NewBorder(buttonBar, this.form, nil, nil, this.itemList.ItemList) + return c +} + +func (this *ReddotView) dataListener() { + this.obs.AddListener(observer.EVENT_REQ_RSP, observer.Listener{ + OnNotify: func(d interface{}, args ...interface{}) { + data := d.(*pb.UserMessage) + if !(data.MainType == string(comm.ModuleReddot) && + data.SubType == "getall") { + return + } + rsp := &pb.ReddotGetAllResp{} + + if !comm.ProtoUnmarshal(data, rsp) { + logrus.Error("unmarshal err") + } + + for k, v := range rsp.Reddot { + item := common.Item{ + Id: cast.ToString(k), + Text: fmt.Sprintf("%v - %v", k, v), + } + this.itemList.AddItem(item) + } + + }, + }) } diff --git a/modules/reddot/api_getall.go b/modules/reddot/api_getall.go index 7d522f985..d6b8eda7a 100644 --- a/modules/reddot/api_getall.go +++ b/modules/reddot/api_getall.go @@ -21,7 +21,8 @@ func (this *apiComp) GetAll(session comm.IUserSession, req *pb.ReddotGetAllReq) if code = this.GetAllCheck(session, req); code != pb.ErrorCode_Success { return } - for k, v := range this.module.ModuleTask.Reddot(session, comm.Reddot1, comm.Reddot2, comm.Reddot3, comm.Reddot4) { + for k, v := range this.module.ModuleTask.Reddot(session, comm.Reddot1, comm.Reddot2, comm.Reddot4, comm.Reddot27, + comm.Reddot28) { reddot[int32(k)] = v } for k, v := range this.module.mainline.Reddot(session, comm.Reddot5) { @@ -42,6 +43,10 @@ func (this *apiComp) GetAll(session comm.IUserSession, req *pb.ReddotGetAllReq) for k, v := range this.module.gourmet.Reddot(session, comm.Reddot20, comm.Reddot21, comm.Reddot22) { reddot[int32(k)] = v } + + for k, v := range this.module.sociaty.Reddot(session, comm.Reddot3, comm.Reddot29) { + reddot[int32(k)] = v + } // for k, v := range this.module.mail.Reddot(session, comm.Reddot26) { // reddot[int32(k)] = v // } diff --git a/modules/reddot/module.go b/modules/reddot/module.go index 82b609e12..983cfef19 100644 --- a/modules/reddot/module.go +++ b/modules/reddot/module.go @@ -26,6 +26,7 @@ type Reddot struct { horoscope comm.IHoroscope arena comm.IArena gourmet comm.IGourmet + sociaty comm.ISociaty // mail comm.Imail api_comp *apiComp } @@ -68,6 +69,11 @@ func (this *Reddot) Start() (err error) { return } this.gourmet = module.(comm.IGourmet) + + if module, err = this.service.GetModule(comm.ModuleSociaty); err != nil { + return + } + this.sociaty = module.(comm.ISociaty) // if module, err = this.service.GetModule(comm.ModuleMail); err != nil { // return // } diff --git a/modules/sociaty/model_sociaty.go b/modules/sociaty/model_sociaty.go index 759641aea..fb0b47de8 100644 --- a/modules/sociaty/model_sociaty.go +++ b/modules/sociaty/model_sociaty.go @@ -225,6 +225,7 @@ func (this *ModelSociaty) getUserSociaty(uid string) (sociaty *pb.DBSociaty) { sociaty); err != nil { this.moduleSociaty.Errorln(err) } + log.Debug("跨服获取公会信息", log.Fields{"uid": uid, "sociatyId": sociaty.Id}) } } @@ -680,6 +681,7 @@ func (this *ModelSociaty) sign(uid string, sociaty *pb.DBSociaty) error { } // 是否已签到 +// 已签到true 未签到false func (this *ModelSociaty) IsSign(uid string, sociaty *pb.DBSociaty) bool { if _, ok := utils.Findx(sociaty.SignIds, uid); ok { return ok diff --git a/modules/sociaty/module.go b/modules/sociaty/module.go index 09a5e818e..e496053e8 100644 --- a/modules/sociaty/module.go +++ b/modules/sociaty/module.go @@ -124,30 +124,31 @@ func (this *Sociaty) Reddot(session comm.IUserSession, rid ...comm.ReddotType) ( sociaty := this.modelSociaty.getUserSociaty(session.GetUserId()) if sociaty == nil || sociaty.Id == "" { log.Warn("公会红点未获得公会信息", log.Fields{"uid": session.GetUserId()}) - return - } - - var applyReddot bool - if this.modelSociaty.isRight(session.GetUserId(), sociaty, - pb.SociatyJob_PRESIDENT, - pb.SociatyJob_VICEPRESIDENT, - pb.SociatyJob_ADMIN) { - - if len(sociaty.ApplyRecord) > 0 { - applyReddot = true + for _, v := range rid { + reddot[v] = false } - return - } - for _, v := range rid { - switch v { - case comm.Reddot3: - if ok := this.modelSociaty.IsSign(session.GetUserId(), sociaty); !ok { - reddot[comm.Reddot3] = true + } else { + var applyReddot bool + if this.modelSociaty.isRight(session.GetUserId(), sociaty, + pb.SociatyJob_PRESIDENT, + pb.SociatyJob_VICEPRESIDENT, + pb.SociatyJob_ADMIN) { + + if len(sociaty.ApplyRecord) > 0 { + applyReddot = true + } + } + for _, v := range rid { + switch v { + case comm.Reddot3: + tf := this.modelSociaty.IsSign(session.GetUserId(), sociaty) + reddot[comm.Reddot3] = !tf + case comm.Reddot29: + reddot[comm.Reddot29] = applyReddot } - case comm.Reddot29: - reddot[comm.Reddot29] = applyReddot } } + return } diff --git a/modules/task/module.go b/modules/task/module.go index 47e4dc99c..de480b92e 100644 --- a/modules/task/module.go +++ b/modules/task/module.go @@ -144,28 +144,21 @@ func (this *ModuleTask) Reddot(session comm.IUserSession, rid ...comm.ReddotType for _, v := range rid { switch v { case comm.Reddot1: - if ok, _ := this.modelTask.noReceiveTask(session.GetUserId(), comm.TASK_DAILY); ok { - reddot[comm.Reddot1] = ok - break - } + tf, _ := this.modelTask.noReceiveTask(session.GetUserId(), comm.TASK_DAILY) + reddot[comm.Reddot1] = tf case comm.Reddot2: - if ok, _ := this.modelTask.noReceiveTask(session.GetUserId(), comm.TASK_WEEKLY); ok { - reddot[comm.Reddot2] = ok - break - } + tf, _ := this.modelTask.noReceiveTask(session.GetUserId(), comm.TASK_WEEKLY) + reddot[comm.Reddot2] = tf + case comm.Reddot4: - if ok, _ := this.modelTask.noReceiveTask(session.GetUserId(), comm.TASK_ACHIEVE); ok { - reddot[comm.Reddot4] = ok - break - } + tf, _ := this.modelTask.noReceiveTask(session.GetUserId(), comm.TASK_ACHIEVE) + reddot[comm.Reddot4] = tf case comm.Reddot27: - if ok,_:= this.modelTaskActive.noReceiveTaskActive(session.GetUserId(), comm.TASK_DAILY);ok{ - reddot[comm.Reddot27] = ok - } + tf, _ := this.modelTaskActive.noReceiveTaskActive(session.GetUserId(), comm.TASK_DAILY) + reddot[comm.Reddot27] = tf case comm.Reddot28: - if ok,_:= this.modelTaskActive.noReceiveTaskActive(session.GetUserId(), comm.TASK_WEEKLY);ok{ - reddot[comm.Reddot28] = ok - } + tf, _ := this.modelTaskActive.noReceiveTaskActive(session.GetUserId(), comm.TASK_WEEKLY) + reddot[comm.Reddot28] = tf } } return