This commit is contained in:
liwei 2023-08-02 16:26:31 +08:00
commit 27908f10f0
9 changed files with 181 additions and 87 deletions

View File

@ -585,6 +585,7 @@ const (
Reddot28101 ReddotType = 28101 // 剩余车票
//种族塔
Reddot29101 ReddotType = 29101 // 今日剩余可挑战关卡x
)
type TaskType int32
@ -984,13 +985,12 @@ const (
)
const (
HdTypeSign = 9 // 七日签到
HdTypeWarorder = 1 // 圣桃战令类型
HdTypePay = 2 // 圣桃充值礼包
KFSevenTask = 3 //开服任务
XSFundPhysical = 4 //现时活动 体力基金
XSFundRecruit = 5 //现时活动 招募基金
XSFundExp = 6 //现时活动 经验基金
HdLevel = 7 //开服等级活动
HdTypeSign = 8 // 七日签到
)

View File

@ -1,6 +1,7 @@
package activity
import (
"fmt"
"go_dreamfactory/comm"
"go_dreamfactory/pb"
"go_dreamfactory/sys/configure"
@ -13,41 +14,35 @@ func (this *apiComp) GetHdDataCheck(session comm.IUserSession, req *pb.ActivityG
return
}
// 活动活动
func (this *apiComp) GetHdData(session comm.IUserSession, req *pb.ActivityGetHdDataReq) (errdata *pb.ErrorData) {
var (
list *pb.DBActivityData
err error
result []*pb.DBActivityData
activity *pb.DBHuodong
err error
)
if req.Oid == "" {
} else {
list, err = this.module.modelhdData.getHddataByOid(session.GetUserId(), req.Oid)
if err != nil {
errdata = &pb.ErrorData{
Code: pb.ErrorCode_DBError,
Title: pb.ErrorCode_DBError.ToString(),
}
return
}
}
// 校验活动是否过期
if a, err := this.module.modelhdList.getHdListByHdId(req.Oid); err != nil {
curTime := configure.Now().Unix()
if a.Htype == comm.HdTypeSign && a.Stime <= curTime && curTime <= a.Etime {
if !utils.IsToday(list.Lasttime) {
list.Lasttime = curTime
list.Val += 1
update := make(map[string]interface{})
update["lasttime"] = list.Lasttime
update["val"] = list.Val
this.module.modelhdData.ModifyActivityList(session.GetUserId(), list.Id, update)
curTime := configure.Now().Unix()
for _, id := range req.Oid {
if activity, err = this.module.modelhdList.getHdListByHdId(id); err != nil {
if activity.Stime <= curTime && curTime <= activity.Etime {
continue
}
}
key := fmt.Sprintf("%s:%s", session.GetUserId(), id)
list, _ := this.module.modelhdData.getHddataByOid(session.GetUserId(), key)
if activity.Itype == comm.HdTypeSign && !utils.IsToday(list.Lasttime) {
list.Lasttime = curTime
list.Val += 1
update := make(map[string]interface{})
update["lasttime"] = list.Lasttime
update["val"] = list.Val
this.module.modelhdData.ModifyActivityList(session.GetUserId(), list.Id, update)
}
result = append(result, list)
}
session.SendMsg(string(this.module.GetType()), "gethddata", &pb.ActivityGetHdDataResp{
Data: []*pb.DBActivityData{list},
Data: result,
})
return
}

View File

@ -1,6 +1,7 @@
package activity
import (
"fmt"
"go_dreamfactory/comm"
"go_dreamfactory/pb"
"go_dreamfactory/sys/configure"
@ -28,31 +29,47 @@ func (this *apiComp) GetReward(session comm.IUserSession, req *pb.ActivityGetRew
reward []*cfg.Gameatn
atno []*pb.UserAtno
)
if activity, err = this.module.modelhdList.getHdListByHdId(req.Oid); err != nil {
curTime := configure.Now().Unix()
if activity.Stime <= curTime && curTime <= activity.Etime {
key := fmt.Sprintf("%s:%s", session.GetUserId(), req.Oid)
data, err := this.module.modelhdData.getHddataByOid(session.GetUserId(), key)
if err == nil {
if activity, err = this.module.modelhdList.getHdListByHdId(req.Oid); err == nil {
curTime := configure.Now().Unix()
if activity.Stime > curTime || curTime > activity.Etime { //不在活动时间范围内
errdata = &pb.ErrorData{
Code: pb.ErrorCode_ActivityNotIntime,
Title: pb.ErrorCode_ActivityNotIntime.ToString(),
}
return
}
} else {
errdata = &pb.ErrorData{
Code: pb.ErrorCode_ActivityInvalid,
Title: pb.ErrorCode_ActivityInvalid.ToString(),
}
return
}
} else { // 补充错误码
return
}
data, err := this.module.modelhdData.getHddataByOid(session.GetUserId(), req.Oid)
if err != nil {
if data.Val <= req.Val { //没达到领奖条件
errdata = &pb.ErrorData{
Code: pb.ErrorCode_ActivityCantReward,
Title: pb.ErrorCode_ActivityCantReward.ToString(),
}
return
}
if data.Gotarr != nil {
if _, ok := data.Gotarr[req.Val]; ok { // 重复领奖
errdata = &pb.ErrorData{
Code: pb.ErrorCode_ActivityRepatReward,
Title: pb.ErrorCode_ActivityRepatReward.ToString(),
}
return
}
}
} else {
errdata = &pb.ErrorData{
Code: pb.ErrorCode_DBError,
Title: pb.ErrorCode_DBError.ToString(),
}
return
} else {
if data.Val <= req.Val { //没达到领奖条件
return
}
if data.Gotarr != nil {
if _, ok := data.Gotarr[req.Val]; ok { // 重复领奖
return
}
}
}
// 发奖
for _, v := range activity.Data.Prize {

View File

@ -1,6 +1,7 @@
package activity
import (
"fmt"
"go_dreamfactory/comm"
"go_dreamfactory/lego/core"
"go_dreamfactory/modules"
@ -30,8 +31,7 @@ func (this *modelhdData) Init(service core.IService, module core.IModule, comp c
}
// 获取所有活动数据
func (this *modelhdData) getHdAlldata(uid string, oid string) (result []*pb.DBActivityData, err error) {
func (this *modelhdData) getHdAlldata(uid string) (result []*pb.DBActivityData, err error) {
result = make([]*pb.DBActivityData, 0)
if err = this.GetList(uid, &result); err != nil {
this.module.Errorf("err:%v", err)
@ -42,9 +42,20 @@ func (this *modelhdData) getHdAlldata(uid string, oid string) (result []*pb.DBAc
// 通过活动唯一ID 获取活动数据
func (this *modelhdData) getHddataByOid(uid string, oid string) (result *pb.DBActivityData, err error) {
result = &pb.DBActivityData{}
if err = this.GetListObj(uid, oid, &result); err != nil {
this.module.Errorf("err:%v", err)
result = &pb.DBActivityData{
Id: "",
Uid: uid,
Hdoid: oid,
Gotarr: map[int32]int32{},
Lasttime: 0,
Val: 0,
}
if err = this.GetListObj(uid, oid, &result); err == mongo.ErrNoDocuments {
result.Id = fmt.Sprintf("%s:%s", uid, oid)
result.Uid = uid
result.Hdoid = oid
this.AddList(uid, result.Id, result)
err = nil
return
}
return

View File

@ -21,10 +21,10 @@ func (this *apiComp) ChallengeRaceCheck(session comm.IUserSession, req *pb.Pagod
// /阵营塔开始挑战
func (this *apiComp) ChallengeRace(session comm.IUserSession, req *pb.PagodaChallengeRaceReq) (errdata *pb.ErrorData) {
var (
pagoda *pb.DBPagodaRace
err error
//timeCheckOk bool
pType pb.PlayType
pagoda *pb.DBPagodaRace
err error
timeCheckOk bool
pType pb.PlayType
)
if errdata = this.ChallengeRaceCheck(session, req); errdata != nil {
return // 参数校验失败直接返回
@ -40,24 +40,24 @@ func (this *apiComp) ChallengeRace(session comm.IUserSession, req *pb.PagodaChal
return
}
// 判断开启时间
// curWeekDay := int32(configure.Now().Weekday())
// if curWeekDay == 0 {
// curWeekDay = 7
// }
// for _, v := range conf.Openingtime {
// if v == curWeekDay {
// timeCheckOk = true
// break
// }
// }
// if !timeCheckOk {
// errdata = &pb.ErrorData{
// Code: pb.ErrorCode_PagodaTimeError,
// Title: pb.ErrorCode_PagodaTimeError.ToString(),
// }
// return
// }
//判断开启时间
curWeekDay := int32(configure.Now().Weekday())
if curWeekDay == 0 {
curWeekDay = 7
}
for _, v := range conf.Openingtime {
if v == curWeekDay {
timeCheckOk = true
break
}
}
if !timeCheckOk {
errdata = &pb.ErrorData{
Code: pb.ErrorCode_PagodaTimeError,
Title: pb.ErrorCode_PagodaTimeError.ToString(),
}
return
}
pagoda, err = this.module.modelRacePagoda.getPagodaRaceList(session.GetUserId())
if err != nil {
errdata = &pb.ErrorData{

View File

@ -159,12 +159,55 @@ func (this *Pagoda) Reddot(session comm.IUserSession, rid ...comm.ReddotType) (r
Activated: this.CheckPoint6(session.GetUserId()),
}
break
case comm.Reddot29101:
reddot[comm.Reddot29101] = &pb.ReddotItem{
Rid: int32(comm.Reddot29101),
Activated: this.CheckPoint29101(session.GetUserId()),
}
break
}
}
return
}
func (this *Pagoda) CheckPoint29101(uid string) bool {
var (
curWeekDay int32 //今天周几
)
curWeekDay = int32(configure.Now().Weekday())
if curWeekDay == 0 {
curWeekDay = 7
}
list, err := this.modelRacePagoda.getPagodaRaceList(uid)
if err != nil {
return false
}
for _, v := range list.Race {
if v.Race < 10 {
bOpen := false
// 校验今天是否开启
if c, err := this.configure.GetPagodaCirculateConf(v.Race, v.Curfloor); err != nil {
for _, v := range c.Openingtime {
if curWeekDay == v {
bOpen = true
break
}
}
}
if !bOpen {
break
}
if !utils.IsToday(v.Rtime) {
list.Race[v.Race].Rtime = configure.Now().Unix()
list.Race[v.Race].Defeat = 0
return true
}
if v.Defeat < 10 {
return true
}
}
}
return true
}
// 红点检测
func (this *Pagoda) CheckPoint6(uid string) bool {

View File

@ -327,7 +327,7 @@ type DBActivityData struct {
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id" bson:"_id"` //ID
Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id" bson:"_id"` //自定义id uid+hdoid
Uid string `protobuf:"bytes,2,opt,name=uid,proto3" json:"uid"`
Hdoid string `protobuf:"bytes,3,opt,name=hdoid,proto3" json:"hdoid"` // 活动唯一id
Gotarr map[int32]int32 `protobuf:"bytes,4,rep,name=gotarr,proto3" json:"gotarr" protobuf_key:"varint,1,opt,name=key,proto3" protobuf_val:"varint,2,opt,name=value,proto3"`

View File

@ -112,7 +112,7 @@ type ActivityGetHdDataReq struct {
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
Oid string `protobuf:"bytes,1,opt,name=oid,proto3" json:"oid"` // obj 为空 取所有的活动
Oid []string `protobuf:"bytes,1,rep,name=oid,proto3" json:"oid"` //
}
func (x *ActivityGetHdDataReq) Reset() {
@ -147,11 +147,11 @@ func (*ActivityGetHdDataReq) Descriptor() ([]byte, []int) {
return file_activity_activity_msg_proto_rawDescGZIP(), []int{2}
}
func (x *ActivityGetHdDataReq) GetOid() string {
func (x *ActivityGetHdDataReq) GetOid() []string {
if x != nil {
return x.Oid
}
return ""
return nil
}
// 获取活动数据列表
@ -208,7 +208,7 @@ type ActivityGetRewardReq struct {
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
Oid string `protobuf:"bytes,1,opt,name=oid,proto3" json:"oid"` // 活动唯一id
Oid string `protobuf:"bytes,1,opt,name=oid,proto3" json:"oid"`
Val int32 `protobuf:"varint,2,opt,name=val,proto3" json:"val"`
}
@ -328,7 +328,7 @@ var file_activity_activity_msg_proto_rawDesc = []byte{
0x32, 0x0a, 0x2e, 0x44, 0x42, 0x48, 0x75, 0x6f, 0x64, 0x6f, 0x6e, 0x67, 0x52, 0x04, 0x64, 0x61,
0x74, 0x61, 0x22, 0x28, 0x0a, 0x14, 0x41, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x47, 0x65,
0x74, 0x48, 0x64, 0x44, 0x61, 0x74, 0x61, 0x52, 0x65, 0x71, 0x12, 0x10, 0x0a, 0x03, 0x6f, 0x69,
0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6f, 0x69, 0x64, 0x22, 0x3c, 0x0a, 0x15,
0x64, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x03, 0x6f, 0x69, 0x64, 0x22, 0x3c, 0x0a, 0x15,
0x41, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x47, 0x65, 0x74, 0x48, 0x64, 0x44, 0x61, 0x74,
0x61, 0x52, 0x65, 0x73, 0x70, 0x12, 0x23, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20,
0x03, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x44, 0x42, 0x41, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79,

View File

@ -424,6 +424,13 @@ const (
ErrorCode_StonehengeEnterRoomFailed ErrorCode = 4904 // 进入房间失败
ErrorCode_StonehengeRepeatedReward ErrorCode = 4905 // 事件重复完成
ErrorCode_StonehengeGotoRoomFailed ErrorCode = 4906 // 进入房间失败
// 活动错误码
ErrorCode_ActivityOver ErrorCode = 5001 //活动结束
ErrorCode_ActivityUnOpened ErrorCode = 5002 // 活动未开启
ErrorCode_ActivityRepatReward ErrorCode = 5003 // 重复领取
ErrorCode_ActivityNotIntime ErrorCode = 5004 // 不在活动时间范围
ErrorCode_ActivityInvalid ErrorCode = 5005 // 不存在的活动
ErrorCode_ActivityCantReward ErrorCode = 5006 // 还不能领奖
)
// Enum value maps for ErrorCode.
@ -788,6 +795,12 @@ var (
4904: "StonehengeEnterRoomFailed",
4905: "StonehengeRepeatedReward",
4906: "StonehengeGotoRoomFailed",
5001: "ActivityOver",
5002: "ActivityUnOpened",
5003: "ActivityRepatReward",
5004: "ActivityNotIntime",
5005: "ActivityInvalid",
5006: "ActivityCantReward",
}
ErrorCode_value = map[string]int32{
"Success": 0,
@ -1149,6 +1162,12 @@ var (
"StonehengeEnterRoomFailed": 4904,
"StonehengeRepeatedReward": 4905,
"StonehengeGotoRoomFailed": 4906,
"ActivityOver": 5001,
"ActivityUnOpened": 5002,
"ActivityRepatReward": 5003,
"ActivityNotIntime": 5004,
"ActivityInvalid": 5005,
"ActivityCantReward": 5006,
}
)
@ -1183,7 +1202,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, 0xb4, 0x42, 0x0a, 0x09, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x43, 0x6f, 0x64, 0x65, 0x12,
0x6f, 0x2a, 0xbf, 0x43, 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, 0x14, 0x0a, 0x10,
0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x45, 0x78, 0x63, 0x65, 0x70, 0x74, 0x69, 0x6f, 0x6e,
0x10, 0x01, 0x12, 0x11, 0x0a, 0x0d, 0x4e, 0x6f, 0x46, 0x69, 0x6e, 0x64, 0x53, 0x65, 0x72, 0x76,
@ -1714,8 +1733,17 @@ var file_errorcode_proto_rawDesc = []byte{
0x6f, 0x6e, 0x65, 0x68, 0x65, 0x6e, 0x67, 0x65, 0x52, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64,
0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x10, 0xa9, 0x26, 0x12, 0x1d, 0x0a, 0x18, 0x53, 0x74, 0x6f,
0x6e, 0x65, 0x68, 0x65, 0x6e, 0x67, 0x65, 0x47, 0x6f, 0x74, 0x6f, 0x52, 0x6f, 0x6f, 0x6d, 0x46,
0x61, 0x69, 0x6c, 0x65, 0x64, 0x10, 0xaa, 0x26, 0x42, 0x06, 0x5a, 0x04, 0x2e, 0x3b, 0x70, 0x62,
0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
0x61, 0x69, 0x6c, 0x65, 0x64, 0x10, 0xaa, 0x26, 0x12, 0x11, 0x0a, 0x0c, 0x41, 0x63, 0x74, 0x69,
0x76, 0x69, 0x74, 0x79, 0x4f, 0x76, 0x65, 0x72, 0x10, 0x89, 0x27, 0x12, 0x15, 0x0a, 0x10, 0x41,
0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x55, 0x6e, 0x4f, 0x70, 0x65, 0x6e, 0x65, 0x64, 0x10,
0x8a, 0x27, 0x12, 0x18, 0x0a, 0x13, 0x41, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x52, 0x65,
0x70, 0x61, 0x74, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x10, 0x8b, 0x27, 0x12, 0x16, 0x0a, 0x11,
0x41, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x4e, 0x6f, 0x74, 0x49, 0x6e, 0x74, 0x69, 0x6d,
0x65, 0x10, 0x8c, 0x27, 0x12, 0x14, 0x0a, 0x0f, 0x41, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79,
0x49, 0x6e, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x10, 0x8d, 0x27, 0x12, 0x17, 0x0a, 0x12, 0x41, 0x63,
0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x43, 0x61, 0x6e, 0x74, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64,
0x10, 0x8e, 0x27, 0x42, 0x06, 0x5a, 0x04, 0x2e, 0x3b, 0x70, 0x62, 0x62, 0x06, 0x70, 0x72, 0x6f,
0x74, 0x6f, 0x33,
}
var (