活动领取奖励数据校验

This commit is contained in:
meixiongfeng 2023-08-07 16:31:07 +08:00
parent ed86c3b6ed
commit a065967370
5 changed files with 57 additions and 56 deletions

View File

@ -1,7 +1,6 @@
package activity package activity
import ( import (
"fmt"
"go_dreamfactory/comm" "go_dreamfactory/comm"
"go_dreamfactory/pb" "go_dreamfactory/pb"
"go_dreamfactory/sys/configure" "go_dreamfactory/sys/configure"
@ -28,8 +27,8 @@ func (this *apiComp) GetHdData(session comm.IUserSession, req *pb.ActivityGetHdD
continue continue
} }
} }
key := fmt.Sprintf("%s:%s", session.GetUserId(), id) //key := fmt.Sprintf("%s-%s", session.GetUserId(), id)
list, _ := this.module.modelhdData.getHddataByOid(session.GetUserId(), key) list, _ := this.module.modelhdData.getHddataByOid(session.GetUserId(), id)
if activity.Itype == comm.HdTypeSign && !utils.IsToday(list.Lasttime) { if activity.Itype == comm.HdTypeSign && !utils.IsToday(list.Lasttime) {
list.Lasttime = curTime list.Lasttime = curTime
list.Val += 1 list.Val += 1
@ -55,8 +54,8 @@ func (this *apiComp) GetHdData(session comm.IUserSession, req *pb.ActivityGetHdD
// 获取开服庆典活动 // 获取开服庆典活动
if activity.Itype == comm.HdCelebration { if activity.Itype == comm.HdCelebration {
key := fmt.Sprintf("%s:%s", session.GetUserId(), id) // key := fmt.Sprintf("%s-%s", session.GetUserId(), id)
if data, err := this.module.modelhdData.getHddataByOid(session.GetUserId(), key); err != nil { if data, err := this.module.modelhdData.getHddataByOid(session.GetUserId(), id); err != nil {
// 注意 Gotarr:map[int32]int32 key value 已经挑战的次数 // 注意 Gotarr:map[int32]int32 key value 已经挑战的次数
if !utils.IsToday(data.Lasttime) { // 不是今天重置 if !utils.IsToday(data.Lasttime) { // 不是今天重置
data.Lasttime = configure.Now().Unix() data.Lasttime = configure.Now().Unix()

View File

@ -24,66 +24,68 @@ func (this *apiComp) GetReward(session comm.IUserSession, req *pb.ActivityGetRew
return return
} }
var ( var (
activity *pb.DBHuodong // 活动数据 activity *pb.DBHuodong // 活动详细信息
err error err error
reward []*cfg.Gameatn reward []*cfg.Gameatn
atno []*pb.UserAtno atno []*pb.UserAtno
) )
key := fmt.Sprintf("%s:%s", session.GetUserId(), req.Oid) //key := fmt.Sprintf("%s-%s", session.GetUserId(), req.Oid)
data, err := this.module.modelhdData.getHddataByOid(session.GetUserId(), key) data, err := this.module.modelhdData.getHddataByOid(session.GetUserId(), req.Oid)
if err == nil { 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
}
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{ errdata = &pb.ErrorData{
Code: pb.ErrorCode_DBError, Code: pb.ErrorCode_DBError,
Title: pb.ErrorCode_DBError.ToString(), Title: pb.ErrorCode_DBError.ToString(),
} }
return return
} }
// 发奖 if activity, err = this.module.modelhdList.getHdListByHdId(req.Oid); err == nil {
for _, v := range activity.Data.Prize { curTime := configure.Now().Unix()
if v.Val == req.Val { if activity.Stime > curTime || curTime > activity.Etime { //不在活动时间范围内
for _, v1 := range v.Prize { 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(),
Message: fmt.Sprintf("not found activity oid:%s", req.Oid),
}
return
}
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
}
}
for range activity.Data.Prize {
if len(activity.Data.Prize) > int(req.Val) {
for _, v2 := range activity.Data.Prize[req.Val].Prize {
reward = append(reward, &cfg.Gameatn{ reward = append(reward, &cfg.Gameatn{
A: v1.A, A: v2.A,
T: v1.T, T: v2.T,
N: v1.N, N: v2.N,
}) })
} }
if errdata, atno = this.module.DispenseAtno(session, reward, true); errdata != nil { if errdata, atno = this.module.DispenseAtno(session, reward, true); errdata != nil {
return return
} }
break
} }
} }
data.Gotarr[req.Val] = 1 data.Gotarr[req.Val] = 1

View File

@ -1,7 +1,6 @@
package activity package activity
import ( import (
"fmt"
"go_dreamfactory/comm" "go_dreamfactory/comm"
"go_dreamfactory/pb" "go_dreamfactory/pb"
"go_dreamfactory/sys/configure" "go_dreamfactory/sys/configure"
@ -30,8 +29,8 @@ func (this *apiComp) TurntableReward(session comm.IUserSession, req *pb.Activity
atno []*pb.UserAtno atno []*pb.UserAtno
reward []int32 reward []int32
) )
key := fmt.Sprintf("%s:%s", session.GetUserId(), req.Oid) //key := fmt.Sprintf("%s-%s", session.GetUserId(), req.Oid)
data, err := this.module.modelhdData.getHddataByOid(session.GetUserId(), key) data, err := this.module.modelhdData.getHddataByOid(session.GetUserId(), req.Oid)
if err == nil { if err == nil {
if activity, err = this.module.modelhdList.getHdListByHdId(req.Oid); err == nil { if activity, err = this.module.modelhdList.getHdListByHdId(req.Oid); err == nil {
curTime := configure.Now().Unix() curTime := configure.Now().Unix()

View File

@ -51,8 +51,9 @@ func (this *modelhdData) getHddataByOid(uid string, oid string) (result *pb.DBAc
Lasttime: 0, Lasttime: 0,
Val: 0, Val: 0,
} }
if err = this.GetListObj(uid, oid, &result); err == mongo.ErrNoDocuments { key := fmt.Sprintf("%s-%s", uid, oid)
result.Id = fmt.Sprintf("%s:%s", uid, oid) if err = this.GetListObj(uid, key, result); err == mongo.ErrNoDocuments {
result.Id = key
result.Uid = uid result.Uid = uid
result.Hdoid = oid result.Hdoid = oid
result.Lasttime = configure.Now().Unix() result.Lasttime = configure.Now().Unix()

View File

@ -217,8 +217,8 @@ func (this *Activity) HDCelebration(session comm.IUserSession, systemtype int32,
update := make(map[string]interface{}) update := make(map[string]interface{})
bChange := false bChange := false
// 查询玩家活动记录 // 查询玩家活动记录
key := fmt.Sprintf("%s:%s", session.GetUserId(), v.Id) //key := fmt.Sprintf("%s-%s", session.GetUserId(), v.Id)
if data, err := this.modelhdData.getHddataByOid(session.GetUserId(), key); err != nil { if data, err := this.modelhdData.getHddataByOid(session.GetUserId(), v.Id); err != nil {
// 注意 Gotarr:map[int32]int32 key value 已经挑战的次数 // 注意 Gotarr:map[int32]int32 key value 已经挑战的次数
if !utils.IsToday(data.Lasttime) { // 不是今天重置 if !utils.IsToday(data.Lasttime) { // 不是今天重置
data.Lasttime = configure.Now().Unix() data.Lasttime = configure.Now().Unix()