diff --git a/bin/json/game_privilegecard.json b/bin/json/game_privilegecard.json index a640f6cc0..c08835790 100644 --- a/bin/json/game_privilegecard.json +++ b/bin/json/game_privilegecard.json @@ -1,6 +1,7 @@ [ { "id": "yueka_lv1", + "pType": 1, "name": "经典月卡", "assert_day": 30, "renew_day": 3, @@ -26,6 +27,7 @@ }, { "id": "yueka_lv2", + "pType": 2, "name": "典藏月卡", "assert_day": 30, "renew_day": 3, @@ -51,6 +53,7 @@ }, { "id": "passcheck_1", + "pType": 3, "name": "爬塔战令", "assert_day": 30, "renew_day": 0, diff --git a/comm/const.go b/comm/const.go index 53ebb322c..2cc51d6b9 100644 --- a/comm/const.go +++ b/comm/const.go @@ -469,3 +469,9 @@ const ( TrollSurprise //惊喜货物售价系数 ) + +// 邮件ID +const ( + Yueka_1 string = "Activity_PrivilegeCardDailyReward_lv1" + Yueka_2 string = "Activity_PrivilegeCardDailyReward_lv2" +) diff --git a/comm/imodule.go b/comm/imodule.go index e647cf8b0..c2e7cdea3 100644 --- a/comm/imodule.go +++ b/comm/imodule.go @@ -120,6 +120,8 @@ type ( ModifyMainlineData(uid string, id int32) (code pb.ErrorCode) /// 查询章节ID GetUsermainLineData(uid string) (mainlineId int32) + + Reddot(uid string, rid ...ReddotType) map[ReddotType]bool } //任务 ITask interface { @@ -199,6 +201,8 @@ type ( IPagoda interface { ModifyPagodaFloor(session IUserSession, level int32) (code pb.ErrorCode) CheckUserBasePagodaInfo(uid string) (data *pb.DBPagodaRecord) // 查询玩家最佳通关记录 + + Reddot(uid string, rid ...ReddotType) map[ReddotType]bool } IHeroFetter interface { diff --git a/modules/mainline/module.go b/modules/mainline/module.go index 13bb24e42..d0061dbc8 100644 --- a/modules/mainline/module.go +++ b/modules/mainline/module.go @@ -98,3 +98,42 @@ func (this *Mainline) Start() (err error) { this.battle = module.(comm.IBattle) return } + +//红点查询 +func (this *Mainline) Reddot(uid string, rid ...comm.ReddotType) (reddot map[comm.ReddotType]bool) { + reddot = make(map[comm.ReddotType]bool) + for _, v := range rid { + if v == comm.Reddot5 { + reddot[comm.Reddot5] = this.CheckPoint(uid) + break + } + } + return +} + +// 红点检测 +func (this *Mainline) CheckPoint(uid string) bool { + list, err := this.modelMainline.getMainlineList(uid) + if err != nil { + return false + } + for _, v := range list { + conf := this.configure.GetMainlineChapter(v.ChapterId) + if conf == nil { + continue + } + bFind := false + for _, v1 := range conf.Episode { + for _, banch := range v.BranchID { + if banch == v1 { + bFind = true + break + } + } + } + if !bFind { // 没找到 显示红点 + return false + } + } + return true +} diff --git a/modules/pagoda/module.go b/modules/pagoda/module.go index bebbe16c1..629469b8a 100644 --- a/modules/pagoda/module.go +++ b/modules/pagoda/module.go @@ -139,3 +139,33 @@ func (this *Pagoda) SetPagodaRankList(tableName string, score int32, uid string) } } } + +//红点查询 +func (this *Pagoda) Reddot(uid string, rid ...comm.ReddotType) (reddot map[comm.ReddotType]bool) { + reddot = make(map[comm.ReddotType]bool) + + return +} + +// 红点检测 +func (this *Pagoda) CheckPoint(uid string) bool { + list, err := this.modelPagoda.getPagodaList(uid) + if err != nil { + return false + } + maxFloor := this.configure.GetPagodaFloor(list.Type) + if list.PagodaId < maxFloor { // 层数不够 显示红点 + return true + } + + // 检测赛季塔 + season, err := this.modelSeasonPagoda.getSeasonPagodaList(uid) + if err != nil { + return false + } + maxFloor = this.configure.GetPagodaFloor(list.Type) + if season.PagodaId < maxFloor { // 层数不够 显示红点 + return true + } + return true +} diff --git a/modules/privilege/module.go b/modules/privilege/module.go index 260e6f8d8..d84fe7ff8 100644 --- a/modules/privilege/module.go +++ b/modules/privilege/module.go @@ -91,7 +91,14 @@ func (this *Privilege) CreatePrivilegeCard(session comm.IUserSession, cId string if v.ETime > configure.Now().Unix() { // 加时间 v.ETime += int64(conf.AssertDay) * 24 * 3600 } else { - v.ETime = configure.Now().Unix() + int64(conf.AssertDay)*24*3600 + // 检测能否续费 + if configure.Now().Unix()-v.ETime <= int64(conf.RenewDay)*24*3600 { + v.ETime = configure.Now().Unix() + int64(conf.AssertDay)*24*3600 + } else { + code = pb.ErrorCode_PayRenewTimeErr + return + } + } if err = this.modelPrivilege.Change(session.GetUserId(), map[string]interface{}{ "eTime": v.ETime, @@ -105,6 +112,7 @@ func (this *Privilege) CreatePrivilegeCard(session comm.IUserSession, cId string } } if !bFind { + data = &pb.DBPrivilege{ Id: primitive.NewObjectID().Hex(), Uid: session.GetUserId(), @@ -119,7 +127,7 @@ func (this *Privilege) CreatePrivilegeCard(session comm.IUserSession, cId string data.PrivilegeID = append(data.PrivilegeID, v) } this.modelPrivilege.addNewPrivilegeData(session.GetUserId(), data) - this.SendDailyMail(session, session.GetUserId(), 1) + this.SendDailyMail(session, cId, 1, conf.PType) } if code = this.DispenseRes(session, conf.DisposableReward, true); code != pb.ErrorCode_Success { @@ -225,7 +233,10 @@ func (this *Privilege) QueryPrivilege(session comm.IUserSession) (privilegeID [] this.Errorf("delete privilege failed:%v", err) } } else { - + conf, err := this.configure.GetPrivilegeCard(v.CId) + if err != nil { + return nil + } privilegeID = append(privilegeID, v.PrivilegeID...) // 检查 每日奖励是否发放 if !utils.IsToday(v.RewardTime) { @@ -239,14 +250,14 @@ func (this *Privilege) QueryPrivilege(session comm.IUserSession) (privilegeID [] // 检查离上次领奖过去几天 dt := configure.Now().Unix() - utils.GetZeroTime(v.RewardTime) count := dt / (24 * 3600) - this.SendDailyMail(session, v.Id, int32(count+1)) + this.SendDailyMail(session, v.CId, int32(count+1), conf.PType) } } } return } -func (this *Privilege) SendDailyMail(session comm.IUserSession, cId string, count int32) { +func (this *Privilege) SendDailyMail(session comm.IUserSession, cId string, count int32, pType int32) { conf, err := this.configure.GetPrivilegeCard(cId) if err != nil { return @@ -266,8 +277,8 @@ func (this *Privilege) SendDailyMail(session comm.IUserSession, cId string, coun mail := &pb.DBMailData{ ObjId: "", Uid: session.GetUserId(), - Title: "", - Contex: "", + Title: "Everyday Rewards", + Contex: "Everyday Rewards", CreateTime: uint64(configure.Now().Unix()), DueTime: uint64(configure.Now().Unix() + 30*24*3600), Check: false, @@ -276,6 +287,11 @@ func (this *Privilege) SendDailyMail(session comm.IUserSession, cId string, coun Cid: "", Param: []string{}, } + if pType == 1 { + mail.Cid = comm.Yueka_1 + } else if pType == 2 { + mail.Cid = comm.Yueka_2 + } for i := 0; i < int(count); i++ { mail.ObjId = primitive.NewObjectID().Hex() this.mail.CreateNewMail(session, mail) diff --git a/pb/errorcode.pb.go b/pb/errorcode.pb.go index ef3c4d2a0..321b2971f 100644 --- a/pb/errorcode.pb.go +++ b/pb/errorcode.pb.go @@ -259,6 +259,7 @@ const ( ErrorCode_GrowtaskAdvReceive ErrorCode = 3602 //进阶奖励领取失败 // pay ErrorCode_PayBuyNumNotEnough ErrorCode = 3701 //支付次数不足 + ErrorCode_PayRenewTimeErr ErrorCode = 3702 // 续费时间没达到要求 // worldtask ErrorCode_WorldtaskFinish ErrorCode = 3801 //任务完成失败 ErrorCode_WorldtaskLvNotEnough ErrorCode = 3802 //等级不满足 @@ -478,6 +479,7 @@ var ( 3601: "GrowtaskReceive", 3602: "GrowtaskAdvReceive", 3701: "PayBuyNumNotEnough", + 3702: "PayRenewTimeErr", 3801: "WorldtaskFinish", 3802: "WorldtaskLvNotEnough", 3803: "WorldtaskNoAccept", @@ -693,6 +695,7 @@ var ( "GrowtaskReceive": 3601, "GrowtaskAdvReceive": 3602, "PayBuyNumNotEnough": 3701, + "PayRenewTimeErr": 3702, "WorldtaskFinish": 3801, "WorldtaskLvNotEnough": 3802, "WorldtaskNoAccept": 3803, @@ -730,7 +733,7 @@ var File_errorcode_proto protoreflect.FileDescriptor var file_errorcode_proto_rawDesc = []byte{ 0x0a, 0x0f, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x63, 0x6f, 0x64, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x2a, 0xec, 0x25, 0x0a, 0x09, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x43, 0x6f, 0x64, 0x65, 0x12, + 0x6f, 0x2a, 0x82, 0x26, 0x0a, 0x09, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x0b, 0x0a, 0x07, 0x53, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x10, 0x00, 0x12, 0x11, 0x0a, 0x0d, 0x4e, 0x6f, 0x46, 0x69, 0x6e, 0x64, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x10, 0x0a, 0x12, 0x1b, 0x0a, 0x17, 0x4e, 0x6f, 0x46, 0x69, 0x6e, 0x64, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, @@ -1028,12 +1031,14 @@ var file_errorcode_proto_rawDesc = []byte{ 0x76, 0x65, 0x10, 0x91, 0x1c, 0x12, 0x17, 0x0a, 0x12, 0x47, 0x72, 0x6f, 0x77, 0x74, 0x61, 0x73, 0x6b, 0x41, 0x64, 0x76, 0x52, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x10, 0x92, 0x1c, 0x12, 0x17, 0x0a, 0x12, 0x50, 0x61, 0x79, 0x42, 0x75, 0x79, 0x4e, 0x75, 0x6d, 0x4e, 0x6f, 0x74, 0x45, 0x6e, - 0x6f, 0x75, 0x67, 0x68, 0x10, 0xf5, 0x1c, 0x12, 0x14, 0x0a, 0x0f, 0x57, 0x6f, 0x72, 0x6c, 0x64, - 0x74, 0x61, 0x73, 0x6b, 0x46, 0x69, 0x6e, 0x69, 0x73, 0x68, 0x10, 0xd9, 0x1d, 0x12, 0x19, 0x0a, - 0x14, 0x57, 0x6f, 0x72, 0x6c, 0x64, 0x74, 0x61, 0x73, 0x6b, 0x4c, 0x76, 0x4e, 0x6f, 0x74, 0x45, - 0x6e, 0x6f, 0x75, 0x67, 0x68, 0x10, 0xda, 0x1d, 0x12, 0x16, 0x0a, 0x11, 0x57, 0x6f, 0x72, 0x6c, - 0x64, 0x74, 0x61, 0x73, 0x6b, 0x4e, 0x6f, 0x41, 0x63, 0x63, 0x65, 0x70, 0x74, 0x10, 0xdb, 0x1d, - 0x42, 0x06, 0x5a, 0x04, 0x2e, 0x3b, 0x70, 0x62, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x6f, 0x75, 0x67, 0x68, 0x10, 0xf5, 0x1c, 0x12, 0x14, 0x0a, 0x0f, 0x50, 0x61, 0x79, 0x52, 0x65, + 0x6e, 0x65, 0x77, 0x54, 0x69, 0x6d, 0x65, 0x45, 0x72, 0x72, 0x10, 0xf6, 0x1c, 0x12, 0x14, 0x0a, + 0x0f, 0x57, 0x6f, 0x72, 0x6c, 0x64, 0x74, 0x61, 0x73, 0x6b, 0x46, 0x69, 0x6e, 0x69, 0x73, 0x68, + 0x10, 0xd9, 0x1d, 0x12, 0x19, 0x0a, 0x14, 0x57, 0x6f, 0x72, 0x6c, 0x64, 0x74, 0x61, 0x73, 0x6b, + 0x4c, 0x76, 0x4e, 0x6f, 0x74, 0x45, 0x6e, 0x6f, 0x75, 0x67, 0x68, 0x10, 0xda, 0x1d, 0x12, 0x16, + 0x0a, 0x11, 0x57, 0x6f, 0x72, 0x6c, 0x64, 0x74, 0x61, 0x73, 0x6b, 0x4e, 0x6f, 0x41, 0x63, 0x63, + 0x65, 0x70, 0x74, 0x10, 0xdb, 0x1d, 0x42, 0x06, 0x5a, 0x04, 0x2e, 0x3b, 0x70, 0x62, 0x62, 0x06, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( diff --git a/sys/configure/structs/Game.PrivilegeCardData.go b/sys/configure/structs/Game.PrivilegeCardData.go index 76b9c4793..917294a21 100644 --- a/sys/configure/structs/Game.PrivilegeCardData.go +++ b/sys/configure/structs/Game.PrivilegeCardData.go @@ -12,6 +12,7 @@ import "errors" type GamePrivilegeCardData struct { Id string + PType int32 Name string AssertDay int32 RenewDay int32 @@ -28,6 +29,7 @@ func (*GamePrivilegeCardData) GetTypeId() int32 { func (_v *GamePrivilegeCardData)Deserialize(_buf map[string]interface{}) (err error) { { var _ok_ bool; if _v.Id, _ok_ = _buf["id"].(string); !_ok_ { err = errors.New("id error"); return } } + { var _ok_ bool; var _tempNum_ float64; if _tempNum_, _ok_ = _buf["pType"].(float64); !_ok_ { err = errors.New("pType error"); return }; _v.PType = int32(_tempNum_) } { var _ok_ bool; if _v.Name, _ok_ = _buf["name"].(string); !_ok_ { err = errors.New("name error"); return } } { var _ok_ bool; var _tempNum_ float64; if _tempNum_, _ok_ = _buf["assert_day"].(float64); !_ok_ { err = errors.New("assert_day error"); return }; _v.AssertDay = int32(_tempNum_) } { var _ok_ bool; var _tempNum_ float64; if _tempNum_, _ok_ = _buf["renew_day"].(float64); !_ok_ { err = errors.New("renew_day error"); return }; _v.RenewDay = int32(_tempNum_) }