From 3f523af7802cc66d898d867f032543c506403758 Mon Sep 17 00:00:00 2001 From: zhora Date: Tue, 16 Sep 2025 11:32:41 +0800 Subject: [PATCH] =?UTF-8?q?=E5=91=A8=E5=8D=A1,=E5=8E=82=E5=95=86=E9=80=BB?= =?UTF-8?q?=E8=BE=91=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- call/config.go | 48 +++- call/pay.go | 156 +++++-------- call/pdd.go | 9 + common/activity.go | 25 ++- common/recharge.go | 1 + common/redis_keys.go | 5 + modules/backend/migrate.go | 1 + modules/web/app/balance.go | 32 ++- modules/web/handler/firstpage.go | 2 +- modules/web/handler/game.go | 2 +- modules/web/handler/recharge.go | 19 +- modules/web/handler/weekCard.go | 328 ++++++++++++++-------------- modules/web/providers/base/base.go | 2 + modules/web/providers/sn/api.go | 6 - modules/web/providers/sn/base.go | 20 +- modules/web/providers/sn/handler.go | 78 ++++--- modules/web/providers/sn/values.go | 41 ++-- modules/web/values/activity.go | 31 ++- modules/web/values/pay.go | 7 +- 19 files changed, 449 insertions(+), 364 deletions(-) diff --git a/call/config.go b/call/config.go index 4b5fd4b..6b748e3 100644 --- a/call/config.go +++ b/call/config.go @@ -1437,6 +1437,19 @@ func GetConfigCurrencyResourceNeedBet(t common.CurrencyRes, amount int64, speMul return } +func GetConfigCurrencyResourceNeedBetByActId(activityId int, amount int64) (needBet int64) { + if amount <= 0 { + return + } + switch activityId { + case common.ActivityIDWeekCard: + config := GetConfigWeekCard() + needBet = int64(config.BetMultiples) * amount + return + } + return +} + // LoadConfigFirstPay 首充 func LoadConfigFirstPay() (err error) { one := []*common.ConfigFirstPay{} @@ -2147,18 +2160,45 @@ func GetConfigGameTag() (result []*common.ConfigGameTag) { return } -func GetConfigGameTagByIds(ids []int) (result []*common.ConfigGameTag) { +func GetConfigGameTagByIds(ids []int, notSort bool) (result []*common.ConfigGameTag) { if len(configGameTag) == 0 { LoadConfigGameTag() } + + idOrderMap := make(map[int]int) + for i, id := range ids { + idOrderMap[id] = i + } + for _, v := range configGameTag { if util.SliceContain(ids, v.TagId) { result = append(result, v) } } - sort.Slice(result, func(i, j int) bool { - return result[i].Sort > result[j].Sort - }) + + if notSort { + sort.Slice(result, func(i, j int) bool { + orderI, okI := idOrderMap[result[i].TagId] + orderJ, okJ := idOrderMap[result[j].TagId] + + if okI && okJ { + return orderI < orderJ + } + + if okI && !okJ { + return true + } + if !okI && okJ { + return false + } + + return result[i].Sort > result[j].Sort + }) + } else { + sort.Slice(result, func(i, j int) bool { + return result[i].Sort > result[j].Sort + }) + } return } diff --git a/call/pay.go b/call/pay.go index f4dbb3b..e234d54 100644 --- a/call/pay.go +++ b/call/pay.go @@ -6,6 +6,7 @@ import ( "errors" "fmt" jsoniter "github.com/json-iterator/go" + "gorm.io/gorm/clause" "io/ioutil" "math/rand" "net/http" @@ -222,7 +223,14 @@ func RechargeCallback(r *common.RechargeOrder, success bool, payAccount, extra s t = common.CurrencyResourceRechargeWithBonus } } - needBet := GetConfigCurrencyResourceNeedBet(t, amount+bonus) + var needBet int64 + if r.ActivityID != 0 { + needBet = GetConfigCurrencyResourceNeedBetByActId(r.ActivityID, amount) + } + if needBet == 0 { + needBet = GetConfigCurrencyResourceNeedBet(t, amount+bonus) + } + cb := &common.CurrencyBalance{ UID: r.UID, Type: r.CurrencyType, @@ -533,6 +541,7 @@ func PayActivity(r *common.RechargeOrder, notCharge bool, user *common.PlayerDBI } // todo util.Go(func() { + // 分享活动 UpdateShare(r.UID, 2, r.Amount) shareInfo := common.ShareInfo{UID: user.Id} @@ -594,24 +603,24 @@ func CheckAllActivity(r *common.RechargeOrder) { if r.ProductID > 0 { product = GetConfigPayProductByID(r.ProductID) } - // slots奖池活动 - ActivitySlots(r, product) + //// slots奖池活动 + //ActivitySlots(r, product) - if product == nil { - return - } + //if product == nil { + // return + //} - switch product.ActivityID { - case common.ActivityIDBreakGift: - ActivityBreakGift(r, product) + switch r.ActivityID { case common.ActivityIDWeekCard: ActivityWeekCard(r, product) - case common.ActivityIDLuckyShop: - ActivityLuckyShop(r, product) - case common.ActivityIDSevenDayBox: - ActivitySevenDayBox(r, product) - case common.ActivityIDSuper: - ActivitySuper(r, product) + //case common.ActivityIDBreakGift: + // ActivityBreakGift(r, product) + //case common.ActivityIDLuckyShop: + // ActivityLuckyShop(r, product) + //case common.ActivityIDSevenDayBox: + // ActivitySevenDayBox(r, product) + //case common.ActivityIDSuper: + // ActivitySuper(r, product) } } @@ -643,89 +652,6 @@ func ActivityBreakGift(r *common.RechargeOrder, product *common.ConfigPayProduct UploadActivityData(r.UID, common.ActivityIDBreakGift, common.ActivityDataJoin, product.Value) } -func ActivityWeekCard(r *common.RechargeOrder, product *common.ConfigPayProduct) { - con := GetConfigWeekCard() - if con == nil { - return - } - rows, err := db.Mysql().UpdateRes(&common.ActivityWeekCardData{UID: r.UID}, map[string]interface{}{ - "recharge_time": time.Now().Unix(), "day": 0, "recharge_amount": r.Amount, "rewards": ""}) - if err != nil || rows == 0 { - log.Error("err:%v", err) - return - } - // ok - UpdateCurrencyPro(&common.UpdateCurrency{ - CurrencyBalance: &common.CurrencyBalance{ - UID: r.UID, - Value: product.Value, - Event: common.CurrencyEventActivityWeekCard, - Type: common.CurrencyINR, - NeedBet: GetConfigCurrencyResourceNeedBet(common.CurrencyResourceBonus, product.Value), - ChannelID: r.ChannelID, - Exi1: product.ProductID, - }, - }) - UploadActivityData(r.UID, common.ActivityIDWeekCard, common.ActivityDataJoin, product.Value) - // 自动领第一天的 - cons := GetConfigWeekCard() - cardInfo := GetUserWeekCard(r.UID) - var rewardList []int64 - _ = rewardList - _ = cons - //rewardList, err = util.GenerateRandomSequence(cons.RewardAmount, cons.MiniLimit, 5) - //if err != nil { - // log.Error("err:%v", err) - //} - //rewardList = append([]int64{cons.DayOneReward}, rewardList...) - //rewardList = append(rewardList, 0) - //if cardInfo.ID <= 0 || len(cardInfo.Rewards) == 0 { - // cardInfo.Day = 0 - // rewardList, err = util.GenerateRandomSequence(cons.RewardAmount, cons.MiniLimit, 5) - // if err != nil { - // log.Error("err:%v", err) - // } - // rewardList = append([]int64{cons.DayOneReward}, rewardList...) - // rewardList = append(rewardList, 0) - // cardInfo.Rewards = strings.Join(util.Int64SliceToStringSlice(rewardList), ",") - // db.Mysql().Update(&common.ActivityWeekCardData{UID: r.UID}, map[string]interface{}{ - // "rewards": cardInfo.Rewards, - // }) - //} - rewards, _ := util.StringToInt64Slice(cardInfo.Rewards, ",") - if cardInfo.Day >= len(rewards) { - log.Error("The weekly card has been collected") - return - } - now := time.Now() - rows, err = db.Mysql().UpdateRes(&common.ActivityWeekCardData{UID: r.UID}, - map[string]interface{}{"day": gorm.Expr("day + 1"), "last_draw": now.Unix()}) - if rows == 0 || err != nil { - log.Error("err:%v", err) - return - } - var reward int64 - if cardInfo.Day < 6 { - reward = rewards[cardInfo.Day] * common.DecimalDigits - } - resource := common.CurrencyResourceWeekCard - if cardInfo.Day > 0 { - resource = common.CurrencyResourceBonus - } - if reward > 0 { - UpdateCurrencyPro(&common.UpdateCurrency{ - CurrencyBalance: &common.CurrencyBalance{ - UID: r.UID, - Type: common.CurrencyINR, - Value: reward, - Event: common.CurrencyEventActivityWeekCard, - ChannelID: r.ChannelID, - NeedBet: GetConfigCurrencyResourceNeedBet(resource, reward), - }, - }) - } -} - func ActivityLuckyShop(r *common.RechargeOrder, product *common.ConfigPayProduct) { rows, err := db.Mysql().UpdateResW(&common.ActivityLuckyShopData{}, map[string]interface{}{"buy": 1}, fmt.Sprintf("uid = %d and product_id = %d and buy = 0", r.UID, product.ProductID)) @@ -894,3 +820,37 @@ func WithdrawInfoGet(uid int) (withdrawInfo common.WithdrawInfo, err error) { } return } + +func ActivityWeekCard(r *common.RechargeOrder, product *common.ConfigPayProduct) { + con := GetConfigWeekCard() + if con == nil { + return + } + now := time.Now() + weekCardData := common.WeekCardData{ + UID: r.UID, + BeginAt: now.Unix(), + CardPrice: int(product.Amount / common.DecimalDigits), + AwardTimes: 1, + AwardAt: now.Unix(), + AwardTotal: int(product.Amount), + AwardTotalHistory: int(product.Amount), + BuyCardTimes: 1, + } + err := db.Mysql().C().Model(&common.WeekCardData{}).Clauses(clause.OnConflict{ + Columns: []clause.Column{{Name: "uid"}}, + DoUpdates: clause.Assignments(map[string]interface{}{ + "begin_at": weekCardData.BeginAt, + "card_price": weekCardData.CardPrice, + "award_times": weekCardData.AwardTimes, + "award_at": weekCardData.AwardAt, + "award_total": weekCardData.AwardTotal, + "award_total_history": gorm.Expr("`award_total_history` + ?", weekCardData.AwardTotalHistory), + "buy_card_times": gorm.Expr("`buy_card_times` + ?", weekCardData.BuyCardTimes), + }), + }).Create(&weekCardData).Error + if err != nil { + log.Error("update week card err:%v", err.Error()) + return + } +} diff --git a/call/pdd.go b/call/pdd.go index bebaa63..a23cf0e 100644 --- a/call/pdd.go +++ b/call/pdd.go @@ -47,3 +47,12 @@ func GetPddData(uid int) (result *common.PddDataNew, err error) { } return } + +func GetWeekCardData(uid int) (result *common.WeekCardData, err error) { + err = db.Mysql().C().Model(&common.WeekCardData{}).Where("uid = ?", uid).Find(&result).Error + if err != nil { + log.Error("get week card data err, %s", err.Error()) + return + } + return +} diff --git a/common/activity.go b/common/activity.go index e735ab7..02eb22e 100644 --- a/common/activity.go +++ b/common/activity.go @@ -671,9 +671,10 @@ type WeekCardDay struct { } type ConfigWeekCard struct { - ID int `gorm:"primarykey"` - Switch int `gorm:"column:switch;type:int(11);default:0;comment:开关(1开2关)" json:"Switch" web:"switch"` - Amount int64 `gorm:"column:amount;type:int(20);default:50000;comment:周卡价格" json:"Amount" web:"amount"` + ID int `gorm:"primarykey"` + Switch int `gorm:"column:switch;type:int(11);default:0;comment:开关(1开2关)" json:"Switch" web:"switch"` + Amount int64 `gorm:"column:amount;type:int(20);default:50000;comment:周卡价格" json:"Amount" web:"amount"` + BetMultiples int `gorm:"column:bet_multiples;type:int(11);comment:打码倍数" json:"BetMultiples" web:"bet_multiples"` // []WeekCardDay json AwardData string `gorm:"column:award_data;type:varchar(512);default:'';comment:奖励数据" json:"AwardData" web:"award_data"` @@ -684,3 +685,21 @@ type ConfigWeekCard struct { func (c *ConfigWeekCard) TableName() string { return "config_week_card" } + +type WeekCardData struct { + ID int `gorm:"primarykey"` + UID int `gorm:"column:uid;not null;type:int(11);uniqueIndex:uid"` + BeginAt int64 `gorm:"column:begin_at;type:bigint(20);default:0;comment:周卡开始时间"` + CardPrice int `gorm:"column:card_price;type:int(11);default:0;comment:周卡价格"` + Amount int `gorm:"column:amount;type:bigint(20);default:0;comment:当前领取金额"` + AwardTimes int `gorm:"column:award_times;type:int(11);default:0;comment:当前领取次数"` + AwardAt int64 `gorm:"column:award_at;type:bigint(20);comment:最近领取时间"` + AwardTotal int `gorm:"column:award_total;type:bigint(20);comment:当前总奖励"` + + AwardTotalHistory int `gorm:"column:award_total_history;type:bigint(20);comment:历史总奖励"` + BuyCardTimes int `gorm:"column:buy_card_times;type:bigint(20);comment:买卡次数"` +} + +func (m *WeekCardData) TableName() string { + return "week_card_data" +} diff --git a/common/recharge.go b/common/recharge.go index 2020ca9..7161098 100644 --- a/common/recharge.go +++ b/common/recharge.go @@ -134,6 +134,7 @@ type RechargeOrder struct { Event int `gorm:"column:event;not null;type:smallint(4);comment:事件类型"` CurrencyType CurrencyType `gorm:"column:currency_type;not null;type:int(11);comment:货币类型"` ProductID int `gorm:"column:productid;not null;type:int(11)"` + ActivityID int `gorm:"column:activity_id;default:0;type:int(11)"` Status uint8 `gorm:"column:status;not null;type:tinyint(4);comment:1新建,2支付完成,3发货完成,4支付失败,5取消"` FailReason string `gorm:"column:fail_reason;type:varchar(255);comment:失败原因"` ChannelID int `gorm:"column:channel_id;type:bigint(20);default:1;comment:渠道id" redis:"channel_id"` diff --git a/common/redis_keys.go b/common/redis_keys.go index 35f5cf1..2c8041f 100644 --- a/common/redis_keys.go +++ b/common/redis_keys.go @@ -51,6 +51,7 @@ const ( RedisKeyLuckyWheel = "luckyWheel" RedisKeyPdd = "pdd" RedisKeyShare = "share" + RedisKeyWeekCard = "week_card" ) const ( @@ -214,3 +215,7 @@ func GetRedisKeyPdd(uid int) string { func GetRedisKeyShare(uid int) string { return fmt.Sprintf("%v:%v", RedisKeyShare, uid) } + +func GetRedisKeyWeekCard(uid int) string { + return fmt.Sprintf("%v:%v", RedisKeyWeekCard, uid) +} diff --git a/modules/backend/migrate.go b/modules/backend/migrate.go index 2d0de3b..2a02962 100644 --- a/modules/backend/migrate.go +++ b/modules/backend/migrate.go @@ -150,6 +150,7 @@ func MigrateDB() { new(common.ShareRankData), new(common.LuckyWheelReward), new(common.ConfigWeekCard), + new(common.WeekCardData), ) if err != nil { panic("Migrate db fail") diff --git a/modules/web/app/balance.go b/modules/web/app/balance.go index 5866706..1259f0c 100644 --- a/modules/web/app/balance.go +++ b/modules/web/app/balance.go @@ -2,6 +2,7 @@ package app import ( "fmt" + "github.com/liangdas/mqant/log" "server/call" "server/common" "server/db" @@ -57,11 +58,13 @@ func (g *Gin) CheckWithdrawCondition(amount int64, t common.CurrencyType) (ok bo } // CanBuyProduct 判断是否满足可以购买该商品 -func (g *Gin) CanBuyProduct(actID, pid int) (can bool) { - if actID == 0 || actID < common.ProductTypeAll { - return true +func (g *Gin) CanBuyProduct(actID, pid int) (can bool, product *common.ConfigPayProduct) { + if actID == 0 { + return } - if !g.CheckActivityExpire(actID) { + productList := call.GetConfigPayProductByActivityID(actID) + if len(productList) == 0 { + log.Debug("get activity[%d] product is nil", actID) return } switch actID { @@ -72,6 +75,25 @@ func (g *Gin) CanBuyProduct(actID, pid int) (can bool) { g.Code = values.CodeBuyLimit return } + case common.ActivityIDWeekCard: + configWeekCard := call.GetConfigWeekCard() + if configWeekCard == nil { + return + } + weekCardData, err := call.GetWeekCardData(g.UID) + if err != nil { + return + } + if weekCardData.BeginAt > 0 { // 还在周期中,不能购买 + return + } + for _, v := range productList { + if configWeekCard.Amount*common.DecimalDigits == v.Amount { + can = true + product = v + return + } + } } - return true + return } diff --git a/modules/web/handler/firstpage.go b/modules/web/handler/firstpage.go index b35853c..a9244c6 100644 --- a/modules/web/handler/firstpage.go +++ b/modules/web/handler/firstpage.go @@ -167,7 +167,7 @@ func FirstPageNew(c *gin.Context) { Multiple: item.Multiple / 100, }) } - configGameTags := call.GetConfigGameTagByIds(call.GetConfigShowGameTagIds()) + configGameTags := call.GetConfigGameTagByIds(call.GetConfigShowGameTagIds(), false) tags := make([]values.Tag, 0, len(configGameTags)) for _, v := range configGameTags { tags = append(tags, values.Tag{ diff --git a/modules/web/handler/game.go b/modules/web/handler/game.go index 3634adf..0c251d4 100644 --- a/modules/web/handler/game.go +++ b/modules/web/handler/game.go @@ -98,7 +98,7 @@ func GameTag(c *gin.Context) { return } showGameTag := showGameTags[0] - configGameTags := call.GetConfigGameTagByIds(showGameTag.ShowTagIdsInt) + configGameTags := call.GetConfigGameTagByIds(showGameTag.ShowTagIdsInt, true) tags := make([]values.TagWithGameList, 0, len(configGameTags)) for _, v := range configGameTags { showCount := v.ShowCount diff --git a/modules/web/handler/recharge.go b/modules/web/handler/recharge.go index cda11a5..15d3fe7 100644 --- a/modules/web/handler/recharge.go +++ b/modules/web/handler/recharge.go @@ -232,6 +232,16 @@ func PlayerRecharge(c *gin.Context) { return } req.Amount = product.Amount + req.ActivityID = product.ActivityID + if product.ActivityID > 0 { + can, _ := a.CanBuyProduct(req.ActivityID, req.ProductID) + if !can { + a.Code = values.CodeRetry + a.Msg = "Buy limit" + return + } + req.Bonus = false + } } else { req.Amount = common.RoundCurrency(req.CurrencyType, req.Amount) } @@ -290,7 +300,6 @@ func NewRechargeImp(req *values.RechargeReq, uid, cid int, ip string) *RechargeI return nil } order := &common.RechargeOrder{ - // ProductID: product.ProductID, Amount: product.Amount, CreateTime: time.Now().Unix(), CurrencyType: req.CurrencyType, Amount: req.Amount, @@ -300,8 +309,16 @@ func NewRechargeImp(req *values.RechargeReq, uid, cid int, ip string) *RechargeI Event: int(common.CurrencyEventReCharge), UPI: req.PayChannel, ProductID: req.ProductID, + ActivityID: req.ActivityID, + } + if req.ActivityID > 0 { + switch req.ActivityID { + case common.ActivityIDWeekCard: + order.Event = int(common.CurrencyEventActivityWeekCard) + } } // 只有商城购买才能使用优惠券 + // todo activityId为0才是商城购买 if req.ProductID == 0 && req.DiscountTicketId > 0 { // 判断是否有折扣券 ticket := call.GetItem(req.DiscountTicketId) diff --git a/modules/web/handler/weekCard.go b/modules/web/handler/weekCard.go index c05fbd1..43bfb2c 100644 --- a/modules/web/handler/weekCard.go +++ b/modules/web/handler/weekCard.go @@ -4,17 +4,14 @@ import ( "fmt" "github.com/gin-gonic/gin" "github.com/liangdas/mqant/log" - "github.com/olivere/elastic/v7" "gorm.io/gorm" + "math/rand" "server/call" "server/common" - "server/config" "server/db" "server/modules/web/app" "server/modules/web/values" - "server/pb" "server/util" - "sort" "time" ) @@ -24,78 +21,60 @@ func WeekCardInfo(c *gin.Context) { a.Response() }() a.GetUID() - if !a.CheckActivityExpire(common.ActivityIDWeekCard) { - return - } - resp := &values.ActivityWeekCardInfoResp{} + resp := &values.WeekCardInfoResp{} a.Data = resp + uid := a.UID cons := call.GetConfigWeekCard() - _ = cons - cardInfo := new(common.ActivityWeekCardData) - if a.UID > 0 { - cardInfo = call.GetUserWeekCard(a.UID) - } - var rewardList []int64 - var err error - _ = err - //rewardList, err = util.GenerateRandomSequence(cons.RewardAmount, cons.MiniLimit, 5) - //if err != nil { - // log.Error("err:%v", err) - //} - //rewardList = append([]int64{cons.DayOneReward}, rewardList...) - //rewardList = append(rewardList, 0) - //if cardInfo.ID <= 0 || len(cardInfo.Rewards) == 0 { - // cardInfo.Day = 0 - // rewardList, err = util.GenerateRandomSequence(cons.RewardAmount, cons.MiniLimit, 5) - // if err != nil { - // log.Error("err:%v", err) - // } - // rewardList = append([]int64{cons.DayOneReward}, rewardList...) - // rewardList = append(rewardList, 0) - // if cardInfo.ID <= 0 { - // cardInfo.Rewards = strings.Join(util.Int64SliceToStringSlice(rewardList), ",") - // if a.UID > 0 { - // db.Mysql().Create(cardInfo) - // } - // } else { - // cardInfo.Rewards = strings.Join(util.Int64SliceToStringSlice(rewardList), ",") - // db.Mysql().Update(&common.ActivityWeekCardData{UID: a.UID}, map[string]interface{}{ - // "rewards": cardInfo.Rewards, - // }) - // } - //} - - if rewardList == nil { - rewardList, _ = util.StringToInt64Slice(cardInfo.Rewards, ",") - } - if cardInfo.RechargeTime != 0 { - resp.RechargeStatus = true - } - // step:签完7天就重置 - if cardInfo.Day >= len(rewardList) { - resp.RechargeStatus = false - } - for _, item := range rewardList { - _ = item - //resp.RewardList = append(resp.RewardList, values.WeekCardInfo{ - // Min: cons.MiniLimit, - // Max: cons.RewardAmount - cons.MiniLimit*4, - // Val: item, - //}) - } - resp.Status = true - if config.GetBase().Release { - if util.IsSameDayTimeStamp(time.Now().Unix(), cardInfo.LastDraw) { - resp.Status = false + if cons == nil { + a.Code = values.CodeRetry + return + } + weekCardData, err := call.GetWeekCardData(uid) + if err != nil { + log.Error("get week card data err, %s", err.Error()) + a.Code = values.CodeRetry + return + } + resp.Amount = cons.Amount + resp.List = make([]values.WeekCardDay, 0, len(cons.AwardDetails)) + now := time.Now() + for index := 1; index <= 7; index++ { + var state int + if weekCardData != nil && weekCardData.ID != 0 && weekCardData.BeginAt != 0 { // 已经购买周卡的情况下 + resp.IsUnlock = true + if util.IsSameDayTimeStamp(now.Unix(), weekCardData.AwardAt) { + resp.Time = int64(util.GetZeroTime(now.AddDate(0, 0, 1)).Sub(now).Seconds()) + } + if weekCardData.AwardTimes >= index { + state = 2 + } else if weekCardData.AwardTimes < index { + state = 0 + if !util.IsSameDayTimeStamp(now.Unix(), weekCardData.AwardAt) && + weekCardData.AwardTimes+1 == index { + state = 1 + } + } + } + award := cons.AwardDetails[index] + var coinDesc string + if award.AwardLower == award.AwardUpper || award.AwardUpper == 0 { + coinDesc = fmt.Sprintf("₹%d", award.AwardLower) + } else { + coinDesc = fmt.Sprintf("₹%d-₹%d", award.AwardLower, award.AwardUpper) } + resp.List = append(resp.List, values.WeekCardDay{ + State: state, + Coin: coinDesc, + }) } - resp.RewardDay = cardInfo.Day - resp.ChannelList = call.GetConfigPayChannelsByID(common.CurrencyINR) - resp.ProductList = call.GetConfigPayProductByActivityID(common.ActivityIDWeekCard) - if resp.Status && resp.RechargeStatus { - call.PushRed(a.UID, pb.RedPointModule_RedPointWeekCard, 1) + + products := call.GetConfigPayProductByActivityID(common.ActivityIDWeekCard) + for _, v := range products { + if v.Amount == resp.Amount*common.DecimalDigits { + resp.ProductId = v.ProductID + break + } } - call.UploadActivityData(a.UID, common.ActivityIDSign, common.ActivityDataClick, 0) } func WeekCardDraw(c *gin.Context) { @@ -103,123 +82,136 @@ func WeekCardDraw(c *gin.Context) { defer func() { a.Response() }() - if !a.CheckActivityExpire(common.ActivityIDWeekCard) { - return - } - req := new(values.ActivityWeekCardDrawReq) + req := new(values.WeekCardDrawReq) if !a.S(req) { return } - resp := &values.ActivityWeekCardDrawResp{} + resp := &values.WeekCardDrawResp{} a.Data = resp - // conf := call.GetConfigActivityWeekCard() - card := call.GetUserWeekCard(a.UID) - if card.ID == 0 { + uid := a.UID + + if !db.Redis().Lock(common.GetRedisKeyWeekCard(uid)) { a.Code = values.CodeRetry return } - now := time.Now().Unix() - if config.GetBase().Release { - if util.IsSameDayTimeStamp(now, card.LastDraw) { - a.Code = values.CodeRetry - a.Msg = "today has reward" - return - } + defer func() { + db.Redis().UnLock(common.GetRedisKeyWeekCard(uid)) + }() + + configWeekCard := call.GetConfigWeekCard() + if configWeekCard == nil { + log.Error("get week card config is nil") + a.Code = values.CodeRetry + a.Msg = "Illegal request" + return } - rewards, _ := util.StringToInt64Slice(card.Rewards, ",") - if card.Day >= len(rewards) { + + weekCardData, err := call.GetWeekCardData(uid) + if err != nil { + log.Error("get week card data err, %s", err.Error()) a.Code = values.CodeRetry - a.Msg = "The weekly card has been collected" return } - rows, err := db.Mysql().UpdateRes(&common.ActivityWeekCardData{UID: a.UID}, - map[string]interface{}{"day": gorm.Expr("day + 1"), "last_draw": now}) - if rows == 0 || err != nil { - log.Error("err:%v", err) + now := time.Now() + if weekCardData.ID == 0 || weekCardData.BeginAt == 0 { a.Code = values.CodeRetry + a.Msg = "Not unlocked Week Card" return } - var reward int64 - if card.Day < 6 { - reward = rewards[card.Day] * common.DecimalDigits + + if util.IsSameDayTimeStamp(now.Unix(), weekCardData.AwardAt) { + a.Code = values.CodeRetry + a.Msg = "Already received today" + return + } + if req.Index != weekCardData.AwardTimes+1 { + a.Code = values.CodeRetry + a.Msg = "Illegal request" + return + } + var awardCount int64 + maxAwardCount := weekCardData.CardPrice * 2 * common.DecimalDigits // 总奖励金额 + lessAwardCount := maxAwardCount - weekCardData.AwardTotal // 剩余奖励金额 + if req.Index == 7 { // 最后一天 + awardCount = int64(maxAwardCount - weekCardData.AwardTotal) } else { - // 第几天折扣券 - // 用户画像一:6天内充值3笔及以上用户 - // 推送当前最高额度向上一档充值满减卷 - // 用户画像二:只解锁周卡,未充值的玩家 - // 推送当前额度向下一档充值满减卷,最低300 - var list []common.CurrencyBalance - q := elastic.NewBoolQuery() - q.Filter(elastic.NewRangeQuery("time").Gte(card.RechargeTime)) - q.Filter(elastic.NewRangeQuery("time").Lte(now)) - q.Filter(elastic.NewRangeQuery("event").Gte(common.CurrencyEventReCharge)) - q.Must(elastic.NewTermsQuery("uid", a.UID)) - db.ES().QueryList(common.ESIndexBalance, 0, 100, q, &list, "time", true) - up := false - maxAmount := card.RechargeAmount - if len(list) >= 3 { - up = true - for _, item := range list { - if item.Value > maxAmount { - maxAmount = item.Value - } + tryCount := 10 + awardOffset := 0 + lessMinAwardCount := 0 // 剩下每天的最低金额 + lessMaxAwardCount := 0 // 剩下每天的最大金额 + for index := req.Index + 1; index <= 7; index++ { + lessMinAwardCount += configWeekCard.AwardDetails[index].AwardLower * common.DecimalDigits + lessMaxAwardCount += configWeekCard.AwardDetails[index].AwardUpper * common.DecimalDigits + } + try: + awardDetail := configWeekCard.AwardDetails[req.Index] + if awardDetail.AwardUpper == awardDetail.AwardLower || awardDetail.AwardUpper == 0 { + awardCount = int64(awardDetail.AwardUpper * common.DecimalDigits) + } else { + randValue := (awardDetail.AwardUpper - awardDetail.AwardLower) + awardOffset + if randValue < 0 { + randValue = 1 } + awardCount = int64((rand.Intn(randValue) + awardDetail.AwardLower) * common.DecimalDigits) } - log.Info("maxAmount:%v", maxAmount) - ticket := call.GetConfigDiscountTicketByAmount(maxAmount) - log.Info("ticket:%v", ticket) - if ticket.ID > 0 { - // 赠送优惠券 - tickets := call.GetConfigDiscountTicket() - sort.Slice(tickets, func(i, j int) bool { - return tickets[i].RechargeAmount < tickets[j].RechargeAmount - }) - // 获取下一档 - nextIdx := -1 - for idx, item := range tickets { - if item.RechargeAmount == maxAmount { - if up { - nextIdx = idx + 1 - } else if item.RechargeAmount >= 300*common.DecimalDigits { - nextIdx = idx - 1 - } - break + if lessMinAwardCount+int(awardCount) > lessAwardCount || + lessMaxAwardCount+int(awardCount) < lessAwardCount { // 当前金额+之后每天最低金额比剩余金额还大的时候 + if tryCount > 0 { + tryCount-- + if lessMinAwardCount+int(awardCount) > lessAwardCount { + awardOffset -= 10 * common.DecimalDigits + } else if lessMaxAwardCount+int(awardCount) < lessAwardCount { + awardOffset += 10 * common.DecimalDigits } + goto try } - var nextTicket = ticket - if len(tickets) > nextIdx && nextIdx != -1 { - nextTicket = tickets[nextIdx] - } - if up { - call.AddUserDiscountTicket(a.UID, ticket.DiscountAmount, ticket.RechargeAmount, -1, 0, false) - call.SendMailWithContent(a.UID, call.SystemTitle, fmt.Sprintf(call.EmailDiscount, ticket.DiscountAmount/common.DecimalDigits, ticket.RechargeAmount/common.DecimalDigits)) - resp.DiscountTicket = ticket.DiscountAmount - resp.Amount = ticket.RechargeAmount - } else if nextTicket.ID > 0 { - call.AddUserDiscountTicket(a.UID, nextTicket.DiscountAmount, nextTicket.RechargeAmount, -1, 1, false) - call.SendMailWithContent(a.UID, call.SystemTitle, fmt.Sprintf(call.EmailDiscount, ticket.DiscountAmount/common.DecimalDigits, ticket.RechargeAmount/common.DecimalDigits)) - resp.DiscountTicket = nextTicket.DiscountAmount - resp.Amount = nextTicket.RechargeAmount - } + log.Error("uid:%d weekCard draw err, lessAward:%d lessMinAward:%d lessMaxAward:%d | awardCount:%d awardOffset:%d", uid, lessAwardCount, lessMinAwardCount, lessMaxAwardCount, awardCount, awardOffset) + a.Code = values.CodeRetry + return } } - resource := common.CurrencyResourceWeekCard - if card.Day > 0 { - resource = common.CurrencyResourceBonus - } - resp.Reward = reward - if reward > 0 { - call.UpdateCurrencyPro(&common.UpdateCurrency{ - CurrencyBalance: &common.CurrencyBalance{ - UID: a.UID, - Type: common.CurrencyINR, - Value: reward, - Event: common.CurrencyEventActivityWeekCard, - ChannelID: a.Channel, - NeedBet: call.GetConfigCurrencyResourceNeedBet(resource, reward), - }, - }) + + if int(awardCount)+weekCardData.AwardTotal > maxAwardCount { + awardCount = int64(maxAwardCount - weekCardData.AwardTotal) + } + + if awardCount <= 0 { + a.Code = values.CodeRetry + return + } + + _, err = call.UpdateCurrencyPro(&common.UpdateCurrency{ + CurrencyBalance: &common.CurrencyBalance{ + UID: a.UID, + Type: common.CurrencyINR, + Value: awardCount, + Event: common.CurrencyEventActivityWeekCard, + ChannelID: a.Channel, + NeedBet: call.GetConfigCurrencyResourceNeedBet(common.CurrencyResourceBonus, awardCount, configWeekCard.BetMultiples), + }, + }) + if err != nil { + log.Error("update currency err, %s", err.Error()) + return + } + updates := make(map[string]interface{}) + if req.Index == 7 { + updates["begin_at"] = 0 + updates["award_times"] = 0 + updates["award_at"] = 0 + updates["award_total"] = 0 + updates["card_price"] = 0 + updates["award_total_history"] = gorm.Expr("`award_total_history` + ?", awardCount) + } else { + updates["award_total"] = gorm.Expr("award_total + ?", awardCount) + updates["award_times"] = gorm.Expr("`award_times` + ?", 1) + updates["award_at"] = now.Unix() + updates["award_total_history"] = gorm.Expr("`award_total_history` + ?", awardCount) + } + err = db.Mysql().C().Model(&common.WeekCardData{}).Where("id = ?", weekCardData.ID).Updates(updates).Error + if err != nil { + log.Error("update week card data err, %s", err.Error()) } - call.PushRed(a.UID, pb.RedPointModule_RedPointWeekCard, 0) - call.UploadActivityData(a.UID, common.ActivityIDSign, common.ActivityDataJoin, reward) + resp.Reward = awardCount + return } diff --git a/modules/web/providers/base/base.go b/modules/web/providers/base/base.go index 88c0093..9ed1622 100644 --- a/modules/web/providers/base/base.go +++ b/modules/web/providers/base/base.go @@ -83,6 +83,8 @@ type BetReq struct { SessionID string // 轮次id Time int64 VoidType int64 // 注单无效原因 + // todo + IsFinish int // (为0不处理,1:未结束,2:结束) // SettleWithoutBet bool // 如果为true,代表结算的时候settle值为玩家实际加减值,不需要扣除下注 } diff --git a/modules/web/providers/sn/api.go b/modules/web/providers/sn/api.go index 4ee41ad..e1b68b6 100644 --- a/modules/web/providers/sn/api.go +++ b/modules/web/providers/sn/api.go @@ -3,12 +3,6 @@ package sn // Success Codes const ( CodeSuccess = 0 // 操作成功 - - SnAccount = "wjA77Game_N601" - DefaultLanguage = "en" - AgentId = 320 - SnId = 135 - SignKey = "2e0af20e8f0444a7decde7ae4c382dec" ) // Request Error Codes diff --git a/modules/web/providers/sn/base.go b/modules/web/providers/sn/base.go index 246d8cf..5ac7ed5 100644 --- a/modules/web/providers/sn/base.go +++ b/modules/web/providers/sn/base.go @@ -25,12 +25,24 @@ func (s *Sub) Init() { API = APITest APICreate = APICreateUserTest APIControl = APIControlTest - AgentMap = AgentMapTest + SnAccount = TestSnAccount + DefaultLanguage = TestDefaultLanguage + ApiKey = TestApiKey + WalletKey = TestWalletKey + ControlKey = TestControlKey + AgentId = TestAgentId + SnId = TestSnId if config.GetBase().Release { API = APIRlease APICreate = APICreateUserRlease APIControl = APIControlRlease - AgentMap = AgentMapRelease + SnAccount = ReleaseSnAccount + DefaultLanguage = ReleaseDefaultLanguage + ApiKey = ReleaseApiKey + WalletKey = ReleaseWalletKey + ControlKey = ReleaseControlKey + AgentId = ReleaseAgentId + SnId = ReleaseSnId } } @@ -105,7 +117,7 @@ func (s *Sub) EnterGame() string { reqBody, _ := json.Marshal(req) var tmpValue map[string]interface{} json.Unmarshal(reqBody, &tmpValue) - req.Sign = GeneratedSign(tmpValue, SignKey) + req.Sign = GeneratedSign(tmpValue, ApiKey) var resp EnterResp err := util.HttpPost(API, req, &resp, nil) @@ -143,7 +155,7 @@ func (s *Sub) createUser() error { reqBody, _ := json.Marshal(req) var tmpValue map[string]interface{} json.Unmarshal(reqBody, &tmpValue) - req.Sign = GeneratedSign(tmpValue, SignKey) + req.Sign = GeneratedSign(tmpValue, ApiKey) var resp CreateUserResp err := util.HttpPost(APICreate, req, &resp, nil) diff --git a/modules/web/providers/sn/handler.go b/modules/web/providers/sn/handler.go index 0f525ff..c5a8907 100644 --- a/modules/web/providers/sn/handler.go +++ b/modules/web/providers/sn/handler.go @@ -40,7 +40,8 @@ func GetBalance(c *gin.Context) { resp.Code = INVALIDREQUESTERR return } - log.Debug("sn get balance:%s", string(body)) + account := c.GetHeader("account") + log.Debug("sn get balance, %s:%s", account, string(body)) err = json.Unmarshal(body, &req) if err != nil { log.Error("unmarshal err, %s", err.Error()) @@ -48,7 +49,6 @@ func GetBalance(c *gin.Context) { return } - account := c.GetHeader("account") headers := make(map[string]string) for key, values := range c.Request.Header { if len(values) > 0 { @@ -61,7 +61,7 @@ func GetBalance(c *gin.Context) { newBody, _ := json.Marshal(req) var tmpValue map[string]interface{} json.Unmarshal(newBody, &tmpValue) - tmpSign := GeneratedSign(tmpValue, SignKey) + tmpSign := GeneratedSign(tmpValue, WalletKey) if tmpSign != req.Sign { log.Error("sign is wrong, %+v", req) resp.Code = INVALIDREQUESTERR @@ -84,7 +84,7 @@ func GetBalance(c *gin.Context) { resp.Msg = "success" resp.Data.Chips = int(call.GetUserCurrencyFloat(uid, common.CurrencyType(currency), 0) * common.DecimalDigits) - log.Debug("GetBalanceResp:%+v", resp) + log.Debug("sn getBalanceResp, %s:%+v", account, resp) } func GameBet(c *gin.Context) { @@ -101,14 +101,14 @@ func GameBet(c *gin.Context) { resp.Code = INVALIDREQUESTERR return } - log.Debug("sn game bet:%s", string(body)) + account := c.GetHeader("account") + log.Debug("sn game bet, %s:%s", account, string(body)) err = json.Unmarshal(body, &req) if err != nil { log.Error("unmarshal err, %s", err.Error()) resp.Code = INVALIDREQUESTERR return } - account := c.GetHeader("account") headers := make(map[string]string) for key, values := range c.Request.Header { if len(values) > 0 { @@ -126,7 +126,7 @@ func GameBet(c *gin.Context) { resp.Code = INVALIDREQUESTERR return } - tmpSign := GeneratedSign(tmpValue, SignKey) + tmpSign := GeneratedSign(tmpValue, WalletKey) if tmpSign != req.Sign { log.Error("sign is wrong, %+v", req) resp.Code = INVALIDREQUESTERR @@ -158,8 +158,8 @@ func GameBet(c *gin.Context) { GameID: req.GameId, GameName: configGame.GameCode, Provider: provider, - BetID: req.BetId, - SessionID: req.OrderId, + BetID: req.OrderId, + SessionID: req.BetId, Time: now, BetAmount: int64(betAmount), TurnOver: int64(betAmount), @@ -180,7 +180,7 @@ func GameBet(c *gin.Context) { resp.Data.DeductionAmount = betAmount resp.Data.Chips = int(call.GetUserCurrencyFloat(uid, common.CurrencyType(0), 0) * common.DecimalDigits) resp.Msg = "success" - log.Debug("GameBetResp:%+v", resp) + log.Debug("sn gameBetResp, %s:%+v", account, resp) a.Data = resp } @@ -198,14 +198,14 @@ func Settle(c *gin.Context) { resp.Code = INVALIDREQUESTERR return } - log.Debug("sn settle:%s", string(body)) + account := c.GetHeader("account") + log.Debug("sn settle, %s:%s", account, string(body)) err = json.Unmarshal(body, &req) if err != nil { log.Error("unmarshal err, %s", err.Error()) resp.Code = INVALIDREQUESTERR return } - account := c.GetHeader("account") headers := make(map[string]string) for key, values := range c.Request.Header { if len(values) > 0 { @@ -222,7 +222,7 @@ func Settle(c *gin.Context) { resp.Code = INVALIDREQUESTERR return } - tmpSign := GeneratedSign(tmpValue, SignKey) + tmpSign := GeneratedSign(tmpValue, WalletKey) if tmpSign != req.Sign { log.Error("sign is wrong, %+v", req) resp.Code = INVALIDREQUESTERR @@ -236,17 +236,23 @@ func Settle(c *gin.Context) { return } provider := call.GetConfigGameProvider(common.ProviderSn) - { // 订单是否合法 + + var betId string + if len(req.Details) > 0 { + betId = req.Details[0].BetId + } + { // todo 订单是否合法 record := &common.ProviderBetRecord{ UID: uid, Provider: provider.ProviderID, Type: base.SessionTypeBet, - SessionID: req.OrderId, + SessionID: betId, } db.Mysql().Get(record) if record.ID == 0 { resp.Code = INVALIDREQUESTERR resp.Data.Chips = int(call.GetUserCurrencyFloat(uid, common.CurrencyType(0), 0) * common.DecimalDigits) + log.Debug("sn settleResp, %s:%+v", account, resp) return } } @@ -257,10 +263,7 @@ func Settle(c *gin.Context) { resp.Code = INVALIDREQUESTERR return } - var betId string - if len(req.Details) > 0 { - betId = req.Details[0].BetId - } + settleAmount := int64(req.JpBonus + req.BackAmount) betReq := &base.BetReq{ UID: uid, @@ -269,13 +272,18 @@ func Settle(c *gin.Context) { GameID: req.GameId, GameName: configGame.GameCode, Provider: provider, - BetID: betId, - SessionID: req.OrderId, + BetID: req.OrderId, + SessionID: betId, Time: now, } + isFinish := 1 for _, detail := range req.Details { settleAmount += int64(detail.WinAmount) + if detail.IsFinish { + isFinish = 2 + } } + betReq.IsFinish = isFinish betReq.SettleAmount = settleAmount betResp := base.SessionBet(betReq) if betResp.Code != base.CodeOk { @@ -287,13 +295,13 @@ func Settle(c *gin.Context) { } else { resp.Msg = "operation failed." } - log.Error("GameBetResp err:%v", resp.Code) + log.Error("sn gameBetResp err, %s:%+v", account, betResp) return } resp.Data.Chips = int(call.GetUserCurrencyFloat(uid, common.CurrencyType(0), 0) * common.DecimalDigits) resp.Msg = "success" - log.Debug("SettleResp:%+v", resp) + log.Debug("sn settleResp, %s:%+v", account, resp) a.Data = resp } @@ -311,14 +319,14 @@ func Rollback(c *gin.Context) { resp.Code = INVALIDREQUESTERR return } - log.Debug("sn rollback:%s", string(body)) + account := c.GetHeader("account") + log.Debug("sn rollback, %s:%s", account, string(body)) err = json.Unmarshal(body, &req) if err != nil { log.Error("unmarshal err, %s", err.Error()) resp.Code = INVALIDREQUESTERR return } - account := c.GetHeader("account") headers := make(map[string]string) for key, values := range c.Request.Header { if len(values) > 0 { @@ -335,7 +343,7 @@ func Rollback(c *gin.Context) { resp.Code = INVALIDREQUESTERR return } - tmpSign := GeneratedSign(tmpValue, SignKey) + tmpSign := GeneratedSign(tmpValue, WalletKey) if tmpSign != req.Sign { log.Error("sign is wrong, %+v", req) resp.Code = INVALIDREQUESTERR @@ -399,7 +407,7 @@ func Rollback(c *gin.Context) { } resp.Data.Chips = int(call.GetUserCurrencyFloat(uid, common.CurrencyType(0), 0) * common.DecimalDigits) resp.Msg = "success" - log.Debug("rollback:%+v", resp) + log.Debug("sn rollback, %s:%+v", account, resp) a.Data = resp } @@ -417,14 +425,14 @@ func Update(c *gin.Context) { resp.Code = INVALIDREQUESTERR return } - log.Debug("sn update:%s", string(body)) + account := c.GetHeader("account") + log.Debug("sn update, %s:%s", account, string(body)) err = json.Unmarshal(body, &req) if err != nil { log.Error("unmarshal err, %s", err.Error()) resp.Code = INVALIDREQUESTERR return } - account := c.GetHeader("account") headers := make(map[string]string) for key, values := range c.Request.Header { if len(values) > 0 { @@ -441,7 +449,7 @@ func Update(c *gin.Context) { resp.Code = INVALIDREQUESTERR return } - tmpSign := GeneratedSign(tmpValue, SignKey) + tmpSign := GeneratedSign(tmpValue, WalletKey) if tmpSign != req.Sign { log.Error("sign is wrong, %+v", req) resp.Code = INVALIDREQUESTERR @@ -529,7 +537,7 @@ func Update(c *gin.Context) { } resp.Data.Chips = int(call.GetUserCurrencyFloat(uid, common.CurrencyType(0), 0) * common.DecimalDigits) resp.Msg = "success" - log.Debug("rollback:%+v", resp) + log.Debug("sn rollback, %s:%+v", account, resp) a.Data = resp } @@ -547,14 +555,14 @@ func GameControlCallback(c *gin.Context) { resp.Code = INVALIDREQUESTERR return } - log.Debug("sn gameControlCallback:%s", string(body)) + account := c.GetHeader("account") + log.Debug("sn gameControlCallback, %s:%s", account, string(body)) err = json.Unmarshal(body, &req) if err != nil { log.Error("unmarshal err, %s", err.Error()) resp.Code = INVALIDREQUESTERR return } - account := c.GetHeader("account") headers := make(map[string]string) for key, values := range c.Request.Header { if len(values) > 0 { @@ -571,7 +579,7 @@ func GameControlCallback(c *gin.Context) { resp.Code = INVALIDREQUESTERR return } - tmpSign := GeneratedSign(tmpValue, SignKey) + tmpSign := GeneratedSign(tmpValue, ControlKey) if tmpSign != req.Sign { log.Error("sign is wrong, %+v", req) resp.Code = INVALIDREQUESTERR @@ -624,7 +632,7 @@ func Control(uid int, controlId int) error { reqBody, _ := json.Marshal(req) var tmpValue map[string]interface{} json.Unmarshal(reqBody, &tmpValue) - req.Sign = GeneratedSign(tmpValue, SignKey) + req.Sign = GeneratedSign(tmpValue, ApiKey) var resp ControlResp err := util.HttpPost(APIControl, req, &resp, nil) diff --git a/modules/web/providers/sn/values.go b/modules/web/providers/sn/values.go index 46b6c72..7a85175 100644 --- a/modules/web/providers/sn/values.go +++ b/modules/web/providers/sn/values.go @@ -11,18 +11,30 @@ import ( ) const ( - APIRlease = "https://api.nbetps.com/v2/launch_game" + APIRlease = "https://ve-api.1betnbet.com/v2/launch_game" APITest = "https://api.nbetps.com/v2/launch_game" - APICreateUserRlease = "https://api.nbetps.com/v1/create_user" + APICreateUserRlease = "https://ve-api.1betnbet.com/v1/create_user" APICreateUserTest = "https://api.nbetps.com/v1/create_user" - APIControlRlease = "https://api.nbetps.com/v1/control" + APIControlRlease = "https://ve-api.1betnbet.com/v1/control" APIControlTest = "https://api.nbetps.com/v1/control" - // LaunchGameURL = "/api/usr/ingame" - // GetGameListURL = "/api/game/loadlist" - // Lang = "hi" + TestSnAccount = "wjA77Game_N601" + TestDefaultLanguage = "en" + TestAgentId = 320 + TestSnId = 135 + TestApiKey = "2e0af20e8f0444a7decde7ae4c382dec" + TestWalletKey = "2e0af20e8f0444a7decde7ae4c382dec" + TestControlKey = "2e0af20e8f0444a7decde7ae4c382dec" + + ReleaseSnAccount = "veveA77Game_603" + ReleaseDefaultLanguage = "en" + ReleaseAgentId = 338 + ReleaseSnId = 141 + ReleaseApiKey = "f5b7582b32420f7a602b47c0e99a69b7" + ReleaseWalletKey = "2e0af20e8f0444a7decde7ae4c382dec" + ReleaseControlKey = "2e0af20e8f0444a7decde7ae4c382dec" ) type Agent struct { @@ -31,18 +43,11 @@ type Agent struct { } var ( - API = "" - APICreate = "" - APIControl = "" - AgentMap Agent - AgentMapTest = Agent{ - MchId: "slotgolden777test", - Key: "010804d1-7bbf-4ed5-9b50-60fbd2b22e34", - } - AgentMapRelease = Agent{ - MchId: "slotgolden777", - Key: "ddeaeb76-5624-41fe-a6ea-7ad9307d7701", - } + API = "" + APICreate = "" + APIControl = "" + SnAccount, DefaultLanguage, ApiKey, WalletKey, ControlKey string + AgentId, SnId int ) func getSignStr(str string, pass ...string) string { diff --git a/modules/web/values/activity.go b/modules/web/values/activity.go index 7f48787..2ffae63 100644 --- a/modules/web/values/activity.go +++ b/modules/web/values/activity.go @@ -144,31 +144,28 @@ type OneWeekCard struct { TotalReward int64 } -type WeekCardInfo struct { - Min int64 - Val int64 - Max int64 +type WeekCardDay struct { + State int `json:"state"` // 0没领取,1可领取,2已经领取 + Coin string `json:"coin"` // 金币数值 } -type ActivityWeekCardInfoResp struct { - RewardList []WeekCardInfo // 奖励列表 - RewardDay int // 领取天数 - Status bool // 是否可领取 - RechargeStatus bool // 是否充值 - ChannelList []*common.ConfigPayChannels - ProductList []*common.ConfigPayProduct + +type WeekCardInfoResp struct { + List []WeekCardDay `json:"list"` // 奖励配置 + Amount int64 `json:"tAmount"` // 周卡价格 + IsUnlock bool `json:"isUnlock"` // 是否解锁 + Time int64 `json:"time"` // 下次领取任务倒计时/可领取奖励 + ProductId int `json:"productId"` // 商品id } // Level 领取的周卡的等级 -type ActivityWeekCardDrawReq struct { - Level int +type WeekCardDrawReq struct { + Index int `json:"index"` } // Reward 获得的奖励 // DiscountTicket 获得的折扣券折扣 -type ActivityWeekCardDrawResp struct { - Reward int64 - DiscountTicket int64 - Amount int64 +type WeekCardDrawResp struct { + Reward int64 } // Spin 可转次数 diff --git a/modules/web/values/pay.go b/modules/web/values/pay.go index 6094ce5..fe4c79b 100644 --- a/modules/web/values/pay.go +++ b/modules/web/values/pay.go @@ -56,9 +56,10 @@ type RechargeReq struct { DiscountTicketId int `json:"DiscountTicketId"` // 折扣券ID - Amount int64 `json:"amount"` - Bonus bool `json:"bonus"` - ProductID int `json:"productId"` + Amount int64 `json:"amount"` + Bonus bool `json:"bonus"` + ProductID int `json:"productId"` + ActivityID int `json:"activityID"` UserName *string `json:"userName"` // 用户姓名 UserPhone string `json:"userPhone"` // 用户手机号