活动领取奖励数据校验

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

View File

@ -24,66 +24,68 @@ func (this *apiComp) GetReward(session comm.IUserSession, req *pb.ActivityGetRew
return
}
var (
activity *pb.DBHuodong // 活动数据
activity *pb.DBHuodong // 活动详细信息
err error
reward []*cfg.Gameatn
atno []*pb.UserAtno
)
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
}
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 {
//key := fmt.Sprintf("%s-%s", session.GetUserId(), req.Oid)
data, 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
}
// 发奖
for _, v := range activity.Data.Prize {
if v.Val == req.Val {
for _, v1 := range v.Prize {
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(),
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{
A: v1.A,
T: v1.T,
N: v1.N,
A: v2.A,
T: v2.T,
N: v2.N,
})
}
if errdata, atno = this.module.DispenseAtno(session, reward, true); errdata != nil {
return
}
break
}
}
data.Gotarr[req.Val] = 1

View File

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

View File

@ -51,8 +51,9 @@ func (this *modelhdData) getHddataByOid(uid string, oid string) (result *pb.DBAc
Lasttime: 0,
Val: 0,
}
if err = this.GetListObj(uid, oid, &result); err == mongo.ErrNoDocuments {
result.Id = fmt.Sprintf("%s:%s", uid, oid)
key := fmt.Sprintf("%s-%s", uid, oid)
if err = this.GetListObj(uid, key, result); err == mongo.ErrNoDocuments {
result.Id = key
result.Uid = uid
result.Hdoid = oid
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{})
bChange := false
// 查询玩家活动记录
key := fmt.Sprintf("%s:%s", session.GetUserId(), v.Id)
if data, err := this.modelhdData.getHddataByOid(session.GetUserId(), key); err != nil {
//key := fmt.Sprintf("%s-%s", session.GetUserId(), v.Id)
if data, err := this.modelhdData.getHddataByOid(session.GetUserId(), v.Id); err != nil {
// 注意 Gotarr:map[int32]int32 key value 已经挑战的次数
if !utils.IsToday(data.Lasttime) { // 不是今天重置
data.Lasttime = configure.Now().Unix()