Merge branch 'dev' of http://git.legu.cc/liwei_3d/go_dreamfactory into liwei
This commit is contained in:
commit
13dec018fe
@ -13,32 +13,32 @@
|
||||
},
|
||||
{
|
||||
"msgid": "chat",
|
||||
"routrules": "~/worker",
|
||||
"open": true,
|
||||
"routrules": "~/worker",
|
||||
"describe": "聊天系统"
|
||||
},
|
||||
{
|
||||
"msgid": "chat.chanagechannel",
|
||||
"routrules": "~/worker",
|
||||
"open": true,
|
||||
"routrules": "~/worker",
|
||||
"describe": "聊天系统"
|
||||
},
|
||||
{
|
||||
"msgid": "chat.crosschannel",
|
||||
"routrules": "~/worker",
|
||||
"open": true,
|
||||
"routrules": "~/worker",
|
||||
"describe": "聊天系统"
|
||||
},
|
||||
{
|
||||
"msgid": "chat.getcrosslist",
|
||||
"routrules": "~/worker",
|
||||
"open": true,
|
||||
"routrules": "~/worker",
|
||||
"describe": "聊天系统"
|
||||
},
|
||||
{
|
||||
"msgid": "chat.sendcross",
|
||||
"routrules": "~/worker",
|
||||
"open": true,
|
||||
"routrules": "~/worker",
|
||||
"describe": "聊天系统"
|
||||
},
|
||||
{
|
||||
@ -154,5 +154,11 @@
|
||||
"open": true,
|
||||
"routrules": "~/worker",
|
||||
"describe": "好友推荐"
|
||||
},
|
||||
{
|
||||
"msgid": "friend.assistherolist",
|
||||
"open": true,
|
||||
"routrules": "~/worker",
|
||||
"describe": "好友助战英雄列表"
|
||||
}
|
||||
]
|
@ -4,5 +4,5 @@ Website = "http://legu.cc"
|
||||
Icon = "app.png"
|
||||
Name = "RobotGUI"
|
||||
ID = "cc.legu.app"
|
||||
Version = "1.0.17"
|
||||
Build = 20
|
||||
Version = "1.0.18"
|
||||
Build = 21
|
||||
|
@ -82,6 +82,7 @@ var (
|
||||
ff(comm.ModuleFriend, friend.FriendSubTypeGetreward): &formview.FriendGetrewardView{},
|
||||
ff(comm.ModuleFriend, friend.FriendSubTypeAssistlist): &formview.FriendAssistListView{},
|
||||
ff(comm.ModuleFriend, friend.FriendSubTypeAssistHero): &formview.FriendAssistHeroView{},
|
||||
ff(comm.ModuleFriend, friend.FriendSubTypeAssistHeroList): &formview.FriendAssistHeroListView{},
|
||||
|
||||
// shop
|
||||
ff(comm.ModuleShop, "getlist"): &formview.ShopListView{},
|
||||
@ -180,6 +181,7 @@ var (
|
||||
ff(comm.ModuleFriend, friend.FriendSubTypeGetreward),
|
||||
ff(comm.ModuleFriend, friend.FriendSubTypeAssistHero),
|
||||
ff(comm.ModuleFriend, friend.FriendSubTypeAssistlist),
|
||||
ff(comm.ModuleFriend, friend.FriendSubTypeAssistHeroList),
|
||||
},
|
||||
"shop": {
|
||||
ff(comm.ModuleShop, "getlist"),
|
||||
@ -616,6 +618,13 @@ var (
|
||||
SubType: friend.FriendSubTypeGetreward,
|
||||
Enabled: true,
|
||||
},
|
||||
ff(comm.ModuleFriend, friend.FriendSubTypeAssistHeroList): {
|
||||
NavLabel: "助战英雄列表",
|
||||
Desc: "我的好友助战英雄列表",
|
||||
MainType: string(comm.ModuleFriend),
|
||||
SubType: friend.FriendSubTypeAssistHeroList,
|
||||
Enabled: true,
|
||||
},
|
||||
|
||||
//shop
|
||||
string(comm.ModuleShop): {
|
||||
|
38
cmd/v2/ui/views/friend_assistherolist.go
Normal file
38
cmd/v2/ui/views/friend_assistherolist.go
Normal file
@ -0,0 +1,38 @@
|
||||
package formview
|
||||
|
||||
import (
|
||||
"go_dreamfactory/cmd/v2/model"
|
||||
"go_dreamfactory/cmd/v2/service"
|
||||
"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 FriendAssistHeroListView struct {
|
||||
BaseformView
|
||||
assistHeroList func()
|
||||
}
|
||||
|
||||
func (this *FriendAssistHeroListView) CreateView(t *model.TestCase) fyne.CanvasObject {
|
||||
this.assistHeroList = func() {
|
||||
if err := service.GetPttService().SendToClient(t.MainType, t.SubType,
|
||||
&pb.FriendAssistHeroListReq{}); err != nil {
|
||||
logrus.Error(err)
|
||||
}
|
||||
}
|
||||
defer this.assistHeroList()
|
||||
|
||||
refreshBtn := widget.NewButtonWithIcon("", theme.ViewRefreshIcon(), func() {
|
||||
|
||||
this.assistHeroList()
|
||||
})
|
||||
|
||||
buttonBar := container.NewHBox(refreshBtn)
|
||||
|
||||
c := container.NewBorder(buttonBar, nil, nil, nil)
|
||||
return c
|
||||
}
|
@ -4,6 +4,7 @@ import (
|
||||
"go_dreamfactory/cmd/v2/model"
|
||||
"go_dreamfactory/cmd/v2/service"
|
||||
"go_dreamfactory/pb"
|
||||
"strings"
|
||||
|
||||
"fyne.io/fyne/v2"
|
||||
"fyne.io/fyne/v2/widget"
|
||||
@ -19,18 +20,19 @@ func (this *HeroInfoView) CreateView(t *model.TestCase) fyne.CanvasObject {
|
||||
uidEntry.PlaceHolder = "玩家ID"
|
||||
|
||||
heroIdEntry := widget.NewEntry()
|
||||
heroIdEntry.PlaceHolder = "英雄ObjID"
|
||||
heroIdEntry.PlaceHolder = "英雄ObjID,多个用逗号分隔"
|
||||
|
||||
this.form.AppendItem(widget.NewFormItem("UID", uidEntry))
|
||||
this.form.AppendItem(widget.NewFormItem("HeroObjID", heroIdEntry))
|
||||
|
||||
heroIds := strings.Split(heroIdEntry.Text, ",")
|
||||
this.form.OnSubmit = func() {
|
||||
if err := service.GetPttService().SendToClient(
|
||||
t.MainType,
|
||||
t.SubType,
|
||||
&pb.HeroInfoReq{
|
||||
Uid: uidEntry.Text,
|
||||
HeroId: heroIdEntry.Text,
|
||||
HeroId: heroIds,
|
||||
},
|
||||
); err != nil {
|
||||
logrus.Error(err)
|
||||
|
@ -123,6 +123,8 @@ const (
|
||||
TablePagodaRankList = "pagodaranklist"
|
||||
|
||||
TableSeasonRankList = "seasonranklist" // 赛季塔列表
|
||||
|
||||
TableSeasonRecord = "seasonRecord" // 赛季塔记录
|
||||
/// 美食馆
|
||||
TableSmithy = "smithy"
|
||||
/// 赛季塔数据表
|
||||
|
@ -24,6 +24,7 @@ const (
|
||||
FriendSubTypeDel = "del"
|
||||
FriendSubTypeAssistlist = "assistlist"
|
||||
FriendSubTypeGetreward = "getreward"
|
||||
FriendSubTypeAssistHeroList = "assistherolist"
|
||||
)
|
||||
|
||||
type apiComp struct {
|
||||
@ -39,6 +40,7 @@ func (this *apiComp) Init(service core.IService, module core.IModule, comp core.
|
||||
|
||||
func (this *apiComp) setDefaultFriendUserBaseInfo(userId string) *pb.FriendBase {
|
||||
if user, err := this.moduleFriend.ModuleUser.GetRmoteUser(userId); err != nil {
|
||||
this.moduleFriend.Errorf("GetRmoteUser err:%v", err)
|
||||
return nil
|
||||
} else {
|
||||
if user != nil {
|
||||
|
@ -65,18 +65,20 @@ func (this *apiComp) Assisthero(session comm.IUserSession, req *pb.FriendAssisth
|
||||
return
|
||||
}
|
||||
|
||||
//推送
|
||||
push := &pb.FriendAssistHeroListPush{}
|
||||
for _, fId := range self.FriendIds {
|
||||
d := this.moduleFriend.modelFriend.GetFriend(fId)
|
||||
push.Friends = append(push.Friends, &pb.FriendBase{
|
||||
HeroObjId: d.AssistHeroId,
|
||||
})
|
||||
// 有好友时再推送
|
||||
if len(self.FriendIds) > 0 {
|
||||
//把设置的助战英雄推送给好友
|
||||
push := &pb.FriendAssistHeroUpdatePush{
|
||||
Friend: &pb.FriendBase{
|
||||
UserId: self.Uid,
|
||||
HeroObjId: req.HeroObjId,
|
||||
},
|
||||
}
|
||||
if err := this.moduleFriend.SendMsgToUsers(string(this.moduleFriend.GetType()), "AssistHeroList",
|
||||
&pb.FriendAssistHeroListPush{}, self.FriendIds...); err != nil {
|
||||
|
||||
if err := this.moduleFriend.SendMsgToUsers(string(this.moduleFriend.GetType()), "assistheroupdate", push, self.FriendIds...); err != nil {
|
||||
this.moduleFriend.Errorf("push AssistHeroList err:", err)
|
||||
}
|
||||
}
|
||||
|
||||
// 随机任务Rtype13
|
||||
this.moduleFriend.ModuleRtask.SendToRtask(session, comm.Rtype13, 1)
|
||||
|
40
modules/friend/api_cross_assistherolist.go
Normal file
40
modules/friend/api_cross_assistherolist.go
Normal file
@ -0,0 +1,40 @@
|
||||
package friend
|
||||
|
||||
import (
|
||||
"go_dreamfactory/comm"
|
||||
"go_dreamfactory/pb"
|
||||
|
||||
"google.golang.org/protobuf/proto"
|
||||
)
|
||||
|
||||
// 好友助战英雄列表
|
||||
|
||||
func (this *apiComp) AssistHeroListCheck(session comm.IUserSession, req *pb.FriendAssistHeroListReq) (code pb.ErrorCode) {
|
||||
return
|
||||
}
|
||||
|
||||
func (this *apiComp) AssistHeroList(session comm.IUserSession, req *pb.FriendAssistHeroListReq) (code pb.ErrorCode, data proto.Message) {
|
||||
|
||||
//获取玩家自己好友数据
|
||||
self := this.moduleFriend.modelFriend.GetFriend(session.GetUserId())
|
||||
if self == nil {
|
||||
code = pb.ErrorCode_FriendSelfNoData
|
||||
return
|
||||
}
|
||||
|
||||
rsp := &pb.FriendAssistHeroListResp{}
|
||||
for _, v := range self.FriendIds {
|
||||
f := this.moduleFriend.modelFriend.GetFriend(v)
|
||||
|
||||
rsp.Friends = append(rsp.Friends, &pb.FriendBase{
|
||||
UserId: v,
|
||||
HeroObjId: f.AssistHeroId,
|
||||
})
|
||||
}
|
||||
|
||||
if err := session.SendMsg(string(this.moduleFriend.GetType()), FriendSubTypeAssistHeroList, rsp); err != nil {
|
||||
code = pb.ErrorCode_SystemError
|
||||
}
|
||||
|
||||
return
|
||||
}
|
@ -3,6 +3,7 @@ package friend
|
||||
import (
|
||||
"go_dreamfactory/comm"
|
||||
"go_dreamfactory/pb"
|
||||
"go_dreamfactory/utils"
|
||||
"sort"
|
||||
|
||||
"google.golang.org/protobuf/proto"
|
||||
@ -29,14 +30,20 @@ func (this *apiComp) Assistlist(session comm.IUserSession, req *pb.FriendAssistl
|
||||
if target == nil {
|
||||
continue
|
||||
}
|
||||
if target.AssistHeroId != "" {
|
||||
base.HeroObjId = target.AssistHeroId
|
||||
base.Score = target.ZhuzhanScore
|
||||
base.Score = target.AssistScore
|
||||
base.UpdateTime = target.UpdateTime
|
||||
list = append(list, base)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//排序并取前三
|
||||
sort.Slice(list, func(i, j int) bool {
|
||||
if list[i].Score == list[j].Score {
|
||||
return list[i].UpdateTime < list[j].UpdateTime
|
||||
}
|
||||
return list[i].Score < list[j].Score
|
||||
})
|
||||
|
||||
@ -47,8 +54,13 @@ func (this *apiComp) Assistlist(session comm.IUserSession, req *pb.FriendAssistl
|
||||
}
|
||||
}
|
||||
|
||||
//助战记录一周清空
|
||||
if utils.IsAfterWeek(self.UpdateTime) {
|
||||
self.Record = []*pb.AssistRecord{}
|
||||
}
|
||||
|
||||
rsp := &pb.FriendAssistlistResp{
|
||||
List: list,
|
||||
List: firstThree,
|
||||
HeroObjId: self.AssistHeroId,
|
||||
Record: self.Record,
|
||||
}
|
||||
|
@ -2,9 +2,11 @@ package friend
|
||||
|
||||
import (
|
||||
"context"
|
||||
"errors"
|
||||
"go_dreamfactory/comm"
|
||||
"go_dreamfactory/modules"
|
||||
"go_dreamfactory/pb"
|
||||
"go_dreamfactory/utils"
|
||||
"time"
|
||||
|
||||
"go_dreamfactory/lego/base"
|
||||
@ -88,11 +90,12 @@ func (this *Friend) GetFriendList(uid string) (uids []string) {
|
||||
}
|
||||
|
||||
func (this *Friend) RpcUseAssisHero(ctx context.Context, req *pb.RPCGeneralReqA2, reply *pb.DBHero) error {
|
||||
this.Debug("Rpc_ModuleFriendUseAssitHero", log.Field{Key: "req", Value: req})
|
||||
hero, err := this.UseAssistHero(req.Param1, req.Param2)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
reply = hero
|
||||
*reply = *hero
|
||||
return nil
|
||||
}
|
||||
|
||||
@ -104,18 +107,35 @@ func (this *Friend) UseAssistHero(uid, friendId string) (*pb.DBHero, error) {
|
||||
for _, fId := range friend.FriendIds {
|
||||
// 判断uid是否在指定玩家的好友列表中
|
||||
if fId == uid {
|
||||
//好友没有设置助战英雄
|
||||
if friend.AssistHeroId == "" {
|
||||
break
|
||||
}
|
||||
//遍历助战记录
|
||||
for _, r := range friend.Record {
|
||||
if r.AssistHeroId == friend.AssistHeroId {
|
||||
if utils.IsToday(r.AssistTime) {
|
||||
log.Warnf("今日已助战 uid:%v friendId:%v heroId:%v", uid, friendId, r.AssistHeroId)
|
||||
return nil, errors.New("今日已助战")
|
||||
}
|
||||
}
|
||||
}
|
||||
//更新助战记录和助战分数
|
||||
friend.ZhuzhanScore++
|
||||
friend.Record = append(friend.Record, &pb.ZhuZhanRecord{
|
||||
friend.AssistScore++
|
||||
// 设置助战记录
|
||||
friend.Record = append(friend.Record, &pb.AssistRecord{
|
||||
Uid: uid,
|
||||
Zhuzhantime: time.Now().Unix(),
|
||||
AssistHeroId: friend.AssistHeroId,
|
||||
AssistTime: time.Now().Unix(),
|
||||
})
|
||||
update := map[string]interface{}{
|
||||
"zhuzhanScore": friend.ZhuzhanScore,
|
||||
"assistScore": friend.AssistScore,
|
||||
"record": friend.Record,
|
||||
"updateTime": time.Now().Unix(),
|
||||
}
|
||||
return friend.Hero, this.modelFriend.Change(friendId, update)
|
||||
}
|
||||
}
|
||||
return nil, nil
|
||||
log.Errorf("[friendId:%v]不是你[uid:%v]的好友", uid, friendId)
|
||||
return nil, errors.New("非好友")
|
||||
}
|
||||
|
@ -2,8 +2,11 @@ package pagoda
|
||||
|
||||
import (
|
||||
"go_dreamfactory/comm"
|
||||
"go_dreamfactory/lego/sys/log"
|
||||
"go_dreamfactory/pb"
|
||||
"go_dreamfactory/sys/db"
|
||||
|
||||
"go.mongodb.org/mongo-driver/bson"
|
||||
"go.mongodb.org/mongo-driver/bson/primitive"
|
||||
"google.golang.org/protobuf/proto"
|
||||
)
|
||||
@ -107,7 +110,23 @@ func (this *apiComp) ChallengeOver(session comm.IUserSession, req *pb.PagodaChal
|
||||
}
|
||||
}
|
||||
}
|
||||
this.module.modulerank.addPagodaList(session, pagoda, req.Report.Info.Redflist[0].Leadpos, sz, req.Report.Costtime)
|
||||
if !this.module.IsCross() {
|
||||
if conn, err := db.Cross(); err == nil {
|
||||
userinfo := this.module.ModuleUser.GetUser(session.GetUserId())
|
||||
newData := &pb.DBPagodaRecord{
|
||||
Id: primitive.NewObjectID().Hex(),
|
||||
Uid: session.GetUserId(),
|
||||
PagodaId: pagoda.PagodaId,
|
||||
Type: pagoda.Type,
|
||||
Nickname: userinfo.Name,
|
||||
Icon: "", // icon 暂无
|
||||
Lv: userinfo.Lv,
|
||||
CostTime: req.Report.Costtime,
|
||||
}
|
||||
conn.Mgo.InsertOne(comm.TablePagodaRecord, newData)
|
||||
}
|
||||
}
|
||||
//this.module.modulerank.addPagodaList(session, pagoda, req.Report.Info.Redflist[0].Leadpos, sz, req.Report.Costtime)
|
||||
}
|
||||
// 普通塔通关了
|
||||
Nomalcfg := this.module.configure.GetPagodaConfigData(comm.PagodaType, pagoda.PagodaId+1)
|
||||
@ -122,7 +141,13 @@ func (this *apiComp) ChallengeOver(session comm.IUserSession, req *pb.PagodaChal
|
||||
|
||||
seasonPagoda.Uid = session.GetUserId()
|
||||
seasonPagoda.PagodaId = 0 // 初始数据0层
|
||||
seasonPagoda.Type = 201
|
||||
|
||||
if conn, err := db.Cross(); err == nil {
|
||||
rst := conn.Mgo.FindOne(comm.TableServerData, bson.M{})
|
||||
server := &pb.DBServerData{}
|
||||
rst.Decode(server)
|
||||
seasonPagoda.Type = server.SeasonType // 动态获取塔数据
|
||||
}
|
||||
this.module.modelSeasonPagoda.addNewSeasonPagoda(session.GetUserId(), seasonPagoda)
|
||||
// 推送新的
|
||||
pagoda.PagodaId = seasonPagoda.PagodaId
|
||||
@ -142,13 +167,57 @@ func (this *apiComp) ChallengeOver(session comm.IUserSession, req *pb.PagodaChal
|
||||
}
|
||||
}
|
||||
}
|
||||
this.module.modulerank.addPagodaRankList(session, seasonPagoda, req.Report.Info.Redflist[0].Leadpos, sz, req.Report.Costtime)
|
||||
// 数据直接插入跨服数据库中
|
||||
userinfo := this.module.ModuleUser.GetUser(session.GetUserId())
|
||||
newData := &pb.DBPagodaRecord{
|
||||
Id: primitive.NewObjectID().Hex(),
|
||||
Uid: session.GetUserId(),
|
||||
PagodaId: seasonPagoda.PagodaId,
|
||||
Type: seasonPagoda.Type,
|
||||
Nickname: userinfo.Name,
|
||||
Icon: "", // icon 暂无
|
||||
Lv: userinfo.Lv,
|
||||
CostTime: req.Report.Costtime,
|
||||
}
|
||||
// 数据写到跨服中
|
||||
if !this.module.IsCross() {
|
||||
if conn, err := db.Cross(); err == nil {
|
||||
conn.Mgo.InsertOne(comm.TableSeasonRecord, newData)
|
||||
}
|
||||
}
|
||||
//this.module.modulerank.addPagodaRankList(session, seasonPagoda, req.Report.Info.Redflist[0].Leadpos, sz, req.Report.Costtime)
|
||||
}
|
||||
|
||||
// 挑战处理
|
||||
seasonPagoda.PagodaId = conf.LayerNum
|
||||
mapData["pagodaId"] = conf.LayerNum
|
||||
if !this.module.IsCross() {
|
||||
if conn, err := db.Cross(); err == nil {
|
||||
data := &comm.Autogenerated{
|
||||
ID: primitive.NewObjectID().Hex(),
|
||||
UID: seasonPagoda.Uid,
|
||||
Act: string(comm.LogHandleType_Update),
|
||||
}
|
||||
table := comm.TableSeasonRecord //, uid, , data)
|
||||
data.D = append(data.D, table) // D[0]
|
||||
data.D = append(data.D, bson.M{"uid": session.GetUserId()}) // D[1]
|
||||
data.D = append(data.D, seasonPagoda) // D[2]
|
||||
|
||||
_, err = conn.Mgo.InsertOne("model_log", data)
|
||||
if err != nil {
|
||||
log.Errorf("insert model db err %v", err)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
code = this.module.ModifySeasonPagodaData(session.GetUserId(), mapData)
|
||||
pagoda = &pb.DBPagoda{
|
||||
Id: seasonPagoda.Id,
|
||||
Uid: seasonPagoda.Uid,
|
||||
PagodaId: seasonPagoda.PagodaId,
|
||||
Reward: seasonPagoda.Reward,
|
||||
Type: seasonPagoda.Type,
|
||||
}
|
||||
session.SendMsg(string(this.module.GetType()), PagodaChallengeOverResp, &pb.PagodaChallengeOverResp{Data: pagoda})
|
||||
}
|
||||
|
||||
|
@ -39,7 +39,7 @@ func (this *apiComp) GetList(session comm.IUserSession, req *pb.PagodaGetListReq
|
||||
}
|
||||
} else {
|
||||
season, _ := this.module.modelSeasonPagoda.getSeasonPagodaList(session.GetUserId())
|
||||
if season.PagodaId == 0 { // 创建一条新的数据
|
||||
if season.Id == "" {
|
||||
season.Id = primitive.NewObjectID().Hex()
|
||||
season.Uid = session.GetUserId()
|
||||
season.PagodaId = 0 // 初始数据0层
|
||||
@ -51,6 +51,7 @@ func (this *apiComp) GetList(session comm.IUserSession, req *pb.PagodaGetListReq
|
||||
}
|
||||
this.module.modelSeasonPagoda.addNewSeasonPagoda(session.GetUserId(), season)
|
||||
}
|
||||
|
||||
list = &pb.DBPagoda{
|
||||
Id: season.Id,
|
||||
Uid: season.Uid,
|
||||
@ -59,7 +60,6 @@ func (this *apiComp) GetList(session comm.IUserSession, req *pb.PagodaGetListReq
|
||||
Type: season.Type,
|
||||
}
|
||||
}
|
||||
|
||||
session.SendMsg(string(this.module.GetType()), PagodaGetListResp, &pb.PagodaGetListResp{Data: list})
|
||||
return
|
||||
}
|
||||
|
@ -8,6 +8,7 @@ import (
|
||||
"go_dreamfactory/lego/sys/redis"
|
||||
"go_dreamfactory/modules"
|
||||
"go_dreamfactory/pb"
|
||||
"go_dreamfactory/sys/db"
|
||||
"sort"
|
||||
"time"
|
||||
|
||||
@ -55,7 +56,10 @@ func (this *ModelRank) ChangeUserRank(uid string, value map[string]interface{})
|
||||
|
||||
func (this *ModelRank) GetRankData() (data []*pb.DBPagodaRecord, err error) {
|
||||
data = make([]*pb.DBPagodaRecord, 0)
|
||||
err = this.Redis.LRange(comm.TablePagodaRankList, 0, -1, &data)
|
||||
if conn, err := db.Cross(); err == nil {
|
||||
err = conn.Redis.LRange(comm.TableSeasonRankList, 0, -1, &data)
|
||||
}
|
||||
//err = this.Redis.LRange(comm.TablePagodaRankList, 0, -1, &data)
|
||||
|
||||
return
|
||||
}
|
||||
|
@ -4,11 +4,12 @@ import (
|
||||
"go_dreamfactory/comm"
|
||||
"go_dreamfactory/lego/core"
|
||||
"go_dreamfactory/lego/sys/log"
|
||||
"go_dreamfactory/lego/sys/redis"
|
||||
"go_dreamfactory/modules"
|
||||
"go_dreamfactory/pb"
|
||||
"go_dreamfactory/sys/db"
|
||||
|
||||
"go.mongodb.org/mongo-driver/bson"
|
||||
"go.mongodb.org/mongo-driver/bson/primitive"
|
||||
"go.mongodb.org/mongo-driver/mongo"
|
||||
"go.mongodb.org/mongo-driver/x/bsonx"
|
||||
)
|
||||
@ -34,9 +35,7 @@ func (this *ModelSeasonPagoda) Init(service core.IService, module core.IModule,
|
||||
func (this *ModelSeasonPagoda) getSeasonPagodaList(uid string) (result *pb.DBSeasonPagoda, err error) {
|
||||
result = &pb.DBSeasonPagoda{}
|
||||
if err = this.Get(uid, result); err != nil {
|
||||
if redis.RedisNil != err {
|
||||
result = nil
|
||||
}
|
||||
|
||||
return
|
||||
}
|
||||
err = nil
|
||||
@ -55,6 +54,25 @@ func (this *ModelSeasonPagoda) addNewSeasonPagoda(uId string, data *pb.DBSeasonP
|
||||
this.module.Errorf("err:%v", err)
|
||||
return
|
||||
}
|
||||
|
||||
if !this.module.IsCross() {
|
||||
if conn, err := db.Cross(); err == nil {
|
||||
data1 := &comm.Autogenerated{
|
||||
ID: primitive.NewObjectID().Hex(),
|
||||
UID: uId,
|
||||
Act: string(comm.LogHandleType_Update),
|
||||
}
|
||||
table := comm.TableSeasonRecord //, uid, , data)
|
||||
data1.D = append(data1.D, table) // D[0]
|
||||
data1.D = append(data1.D, bson.M{"uid": uId}) // D[1]
|
||||
data1.D = append(data1.D, data) // D[2]
|
||||
|
||||
_, err = conn.Mgo.InsertOne("model_log", data1)
|
||||
if err != nil {
|
||||
log.Errorf("insert model db err %v", err)
|
||||
}
|
||||
}
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
|
@ -66,6 +66,7 @@ func (this *ChatComp) Start() (err error) {
|
||||
} else {
|
||||
weekStr = "*"
|
||||
}
|
||||
|
||||
cronStr := fmt.Sprintf("0 %d %d ? * %s", v1.TimeM, v1.TimeH, weekStr)
|
||||
this.module.Debug("注册Chat广播公告消息", log.Field{Key: "cronStr", Value: cronStr}, log.Field{Key: "text", Value: v1.Text})
|
||||
if id, err = cron.AddFunc(cronStr, this.chatNoticen(v1.Text)); err != nil {
|
||||
|
@ -62,7 +62,6 @@ func (this *Timer) OnInstallComp() {
|
||||
this.rank3 = this.RegisterComp(new(HuntingRank)).(*HuntingRank)
|
||||
this.chat = this.RegisterComp(new(ChatComp)).(*ChatComp)
|
||||
this.season = this.RegisterComp(new(SeasonPagoda)).(*SeasonPagoda)
|
||||
|
||||
}
|
||||
|
||||
//日志
|
||||
|
@ -7,6 +7,7 @@ import (
|
||||
"go_dreamfactory/pb"
|
||||
|
||||
"go_dreamfactory/lego/core"
|
||||
"go_dreamfactory/lego/core/cbase"
|
||||
"go_dreamfactory/lego/sys/cron"
|
||||
"go_dreamfactory/lego/sys/log"
|
||||
|
||||
@ -15,8 +16,10 @@ import (
|
||||
)
|
||||
|
||||
type PagodaRank struct {
|
||||
cbase.ModuleBase
|
||||
modules.MCompModel
|
||||
service core.IService
|
||||
module *Timer
|
||||
}
|
||||
|
||||
//组件初始化接口
|
||||
@ -24,20 +27,25 @@ func (this *PagodaRank) Init(service core.IService, module core.IModule, comp co
|
||||
|
||||
this.TableName = comm.TablePagodaRecord
|
||||
this.MCompModel.Init(service, module, comp, options)
|
||||
this.module = module.(*Timer)
|
||||
this.service = service
|
||||
return
|
||||
}
|
||||
|
||||
func (this *PagodaRank) Start() (err error) {
|
||||
err = this.MCompModel.Start()
|
||||
cron.AddFunc("*/60 * * * * ?", this.Timer) //每60s执行一次
|
||||
|
||||
cron.AddFunc("*/60 * * * * ?", this.TimerPagoda) //每60s执行一次
|
||||
|
||||
cron.AddFunc("*/60 * * * * ?", this.TimerSeason) //每60s执行一次
|
||||
|
||||
return
|
||||
}
|
||||
|
||||
// 处理排行榜排序
|
||||
func (this *PagodaRank) Timer() {
|
||||
func (this *PagodaRank) TimerPagoda() {
|
||||
data := make([]interface{}, 0) // options.Find().SetLimit(comm.MaxRankList)
|
||||
if _data, err := this.DB.Find(comm.TableSeasonPagoda, bson.M{}, options.Find().SetSort(bson.M{"pagodaId": -1}).SetLimit(comm.MaxRankList)); err == nil {
|
||||
if _data, err := this.DB.Find(comm.TablePagoda, bson.M{}, options.Find().SetSort(bson.M{"pagodaId": -1}).SetLimit(comm.MaxRankList)); err == nil {
|
||||
for _data.Next(context.TODO()) {
|
||||
temp := &pb.DBPagodaRecord{}
|
||||
if err = _data.Decode(temp); err == nil {
|
||||
@ -55,3 +63,24 @@ func (this *PagodaRank) Timer() {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func (this *PagodaRank) TimerSeason() {
|
||||
data := make([]interface{}, 0) // options.Find().SetLimit(comm.MaxRankList)
|
||||
if _data, err := this.DB.Find(comm.TableSeasonPagoda, bson.M{}, options.Find().SetSort(bson.M{"pagodaId": -1}).SetLimit(comm.MaxRankList)); err == nil {
|
||||
for _data.Next(context.TODO()) {
|
||||
temp := &pb.DBPagodaRecord{}
|
||||
if err = _data.Decode(temp); err == nil {
|
||||
data = append(data, temp)
|
||||
}
|
||||
}
|
||||
}
|
||||
if len(data) > 0 {
|
||||
err := this.Redis.RPush(comm.TableSeasonRankList, data...)
|
||||
if err == nil {
|
||||
err = this.Redis.Ltrim(comm.TableSeasonRankList, -1*len(data), -1) //对一个列表进行修剪
|
||||
if err != nil {
|
||||
log.Errorf("delete failed")
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -49,20 +49,6 @@ func (this *SeasonPagoda) Start() (err error) {
|
||||
cron.AddFunc("0 0 23 L * ?", this.TimerSeasonOver) //每月最后一天23点执行一次
|
||||
cron.AddFunc("0 0 5 /* * ?", this.TimerSeasonStar) //每月第一天5点执行一次
|
||||
|
||||
// _data := this.GetSeasonLoop(2)
|
||||
// this.module.Debugf("%v", _data)
|
||||
// for i := 0; i < 10000; i++ {
|
||||
// this.CreatTestData(i)
|
||||
// }
|
||||
|
||||
// if conn, err := db.Cross(); err == nil {
|
||||
// rst := conn.Mgo.FindOne(comm.TableServerData, bson.M{})
|
||||
// server := &pb.DBServerData{}
|
||||
// rst.Decode(server)
|
||||
// fmt.Printf("%v", server)
|
||||
// }
|
||||
|
||||
this.TimerSeasonOver()
|
||||
return
|
||||
}
|
||||
func (this *SeasonPagoda) CreatTestData(index int) {
|
||||
@ -135,3 +121,49 @@ func (this *SeasonPagoda) TimerSeasonOver() {
|
||||
func (this *SeasonPagoda) TimerSeasonStar() {
|
||||
this.module.Debugf("TimerSeasonStar:%d", time.Now().Unix())
|
||||
}
|
||||
|
||||
// 测试用 后面删
|
||||
func (this *SeasonPagoda) TestFunc() {
|
||||
// newData1 := &pb.DBSeasonPagoda{
|
||||
// Id: primitive.NewObjectID().Hex(),
|
||||
// Uid: "sdsdassd",
|
||||
// PagodaId: 1,
|
||||
// Reward: map[int32]bool{},
|
||||
// Type: 201,
|
||||
// }
|
||||
// if conn, err := db.Cross(); err == nil {
|
||||
// rst, err := conn.Mgo.InsertOne(comm.TableSeasonPagoda, newData)
|
||||
|
||||
// fmt.Printf("%v,%v", rst, err)
|
||||
// }
|
||||
// _data := this.GetSeasonLoop(2)
|
||||
// this.module.Debugf("%v", _data)
|
||||
// for i := 0; i < 10000; i++ {
|
||||
// this.CreatTestData(i)
|
||||
// }
|
||||
|
||||
// if conn, err := db.Cross(); err == nil {
|
||||
// rst := conn.Mgo.FindOne(comm.TableServerData, bson.M{})
|
||||
// server := &pb.DBServerData{}
|
||||
// rst.Decode(server)
|
||||
// fmt.Printf("%v", server)
|
||||
// }
|
||||
|
||||
// newData := &pb.DBPagodaRecord{
|
||||
// Id: primitive.NewObjectID().Hex(),
|
||||
// Uid: "sdsd",
|
||||
// PagodaId: 1,
|
||||
// Type: 2,
|
||||
// Nickname: "userinfo.Name",
|
||||
// Icon: "", // icon 暂无
|
||||
// Lv: 12,
|
||||
// CostTime: 12000,
|
||||
// }
|
||||
// // 数据写到跨服中
|
||||
// if !db.IsCross() {
|
||||
// if conn, err := db.Cross(); err == nil {
|
||||
// conn.Mgo.InsertOne(comm.TableSeasonRecord, newData)
|
||||
// }
|
||||
// }
|
||||
//this.TimerSeasonOver()
|
||||
}
|
||||
|
@ -356,7 +356,6 @@ func (this *User) getUserFromRemoteDb(uid string, rsp *pb.DBUser) error {
|
||||
}
|
||||
conn, err := db.ServerDBConn(sid)
|
||||
if err != nil {
|
||||
log.Errorf("cross db err: %v", err)
|
||||
return err
|
||||
}
|
||||
model := db.NewDBModel(comm.TableUser, 0, conn)
|
||||
|
@ -129,7 +129,7 @@ func (this *Service) InitSys() {
|
||||
// }
|
||||
|
||||
_len, err1 := model.DB.CountDocuments(comm.TableServerData, bson.M{})
|
||||
if err1 != nil && _len > 0 {
|
||||
if err1 == nil && _len == 0 {
|
||||
fmt.Printf("%v,%v", _len, err1)
|
||||
server := &pb.DBServerData{
|
||||
Id: primitive.NewObjectID().Hex(),
|
||||
|
Loading…
Reference in New Issue
Block a user