修改周卡逻辑

dev_aagame_provider
zhora 2 months ago
parent 40c0a7b8d6
commit b7983ffcab
  1. 28
      call/config.go
  2. 45
      call/pay.go
  3. 18
      call/reload.go
  4. 33
      common/activity.go
  5. 6
      common/config.go
  6. 21
      common/share.go
  7. 2
      modules/backend/migrate.go
  8. 4
      modules/backend/values/gm.go
  9. 68
      modules/web/handler/activity.go
  10. 1
      modules/web/routers/routers.go
  11. 11
      modules/web/routers/routers_weekCard.go

@ -57,7 +57,6 @@ var (
configActivitySign []*common.ConfigActivitySign
configActivityBreakGift []*common.ConfigActivityBreakGift
configShareRobot []*common.ConfigShareRobot
configActivityWeekCard *common.ConfigActivityWeekCard
configActivitySlots []*common.ConfigActivitySlots
configActivityLuckyShop []*common.ConfigActivityLuckyShop
configServerFlag []*common.ConfigServerFlag
@ -97,6 +96,8 @@ var (
configShareMu sync.Mutex
configShareMap map[int]*common.ConfigShare
configWeekCard *common.ConfigWeekCard
)
var (
@ -1676,17 +1677,30 @@ func GetConfigShareRobotByID(robotID int) *common.ConfigShareRobot {
return nil
}
func LoadConfigActivityWeekCard() (err error) {
one := new(common.ConfigActivityWeekCard)
if err := db.Mysql().Get(one); err != nil {
func LoadConfigWeekCard() (err error) {
one := new(common.ConfigWeekCard)
if _, err = db.Mysql().QueryAll("switch = 1", "", &common.ConfigWeekCard{}, &one); err != nil {
log.Error("err:%v", err)
return err
}
configActivityWeekCard = one
if one.AwardData != "" {
var awardData []common.WeekCardDay
err = json.Unmarshal([]byte(one.AwardData), &awardData)
if err != nil {
log.Error("unmarshal err, %s", err.Error())
return
}
one.AwardDetails = make(map[int]common.WeekCardDay)
for _, v := range awardData {
one.AwardDetails[v.Day] = v
}
}
configWeekCard = one
return nil
}
func GetConfigActivityWeekCard() *common.ConfigActivityWeekCard {
return configActivityWeekCard
func GetConfigWeekCard() *common.ConfigWeekCard {
return configWeekCard
}
func LoadConfigActivitySlots() (err error) {

@ -16,7 +16,6 @@ import (
"server/pb"
"server/util"
"sort"
"strings"
"time"
"github.com/gogo/protobuf/proto"
@ -645,7 +644,7 @@ func ActivityBreakGift(r *common.RechargeOrder, product *common.ConfigPayProduct
}
func ActivityWeekCard(r *common.RechargeOrder, product *common.ConfigPayProduct) {
con := GetConfigActivityWeekCard()
con := GetConfigWeekCard()
if con == nil {
return
}
@ -669,28 +668,30 @@ func ActivityWeekCard(r *common.RechargeOrder, product *common.ConfigPayProduct)
})
UploadActivityData(r.UID, common.ActivityIDWeekCard, common.ActivityDataJoin, product.Value)
// 自动领第一天的
cons := GetConfigActivityWeekCard()
cons := GetConfigWeekCard()
cardInfo := GetUserWeekCard(r.UID)
var rewardList []int64
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,
})
}
_ = 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")

@ -385,15 +385,6 @@ func CommonReload(c map[int][]func(*pb.ReloadGameConfig) error) {
return nil
}}
}
//if _, ok := c[common.ReloadConfigActivityWeekCard]; !ok {
// c[common.ReloadConfigActivityWeekCard] = []func(*pb.ReloadGameConfig) error{func(rgc *pb.ReloadGameConfig) error {
// if err := LoadConfigActivityWeekCard(); err != nil {
// log.Error("error : [%s]", err.Error())
// return err
// }
// return nil
// }}
//}
if _, ok := c[common.ReloadConfigActivitySlots]; !ok {
c[common.ReloadConfigActivitySlots] = []func(*pb.ReloadGameConfig) error{func(rgc *pb.ReloadGameConfig) error {
if err := LoadConfigActivitySlots(); err != nil {
@ -632,4 +623,13 @@ func CommonReload(c map[int][]func(*pb.ReloadGameConfig) error) {
return nil
}}
}
if _, ok := c[common.ReloadConfigWeekCard]; !ok {
c[common.ReloadConfigWeekCard] = []func(*pb.ReloadGameConfig) error{func(rgc *pb.ReloadGameConfig) error {
if err := LoadConfigWeekCard(); err != nil {
log.Error("error : [%s]", err.Error())
return err
}
return nil
}}
}
}

@ -297,18 +297,6 @@ func (c *ConfigActivityBreakGift) TableName() string {
return "config_activity_break_gift"
}
type ConfigActivityWeekCard struct {
ID int `gorm:"primarykey"`
DayOneReward int64 `gorm:"column:day_one_reward;type:bigint(20);default:0;comment:第一天奖励" web:"day_one_reward"` // 下限
MiniLimit int64 `gorm:"column:mini_limit;type:bigint(20);default:0;comment:下限" web:"mini_limit"` // 下限
RewardAmount int64 `gorm:"column:reward_amount;type:bigint(20);default:0;comment:第二到第6天奖励金额" web:"reward_amount"` // 第二到第6天奖励金额
Discount int64 `gorm:"column:discount;type:bigint(20);default:0;comment:第二到第6天奖励金额" web:"discount"` // 满减券折扣
}
func (c *ConfigActivityWeekCard) TableName() string {
return "config_activity_week_card"
}
const (
ActivityWeekCardTicketExpireTime = 48 * 3600 // 两个小时
)
@ -675,3 +663,24 @@ type PddLotteryHistory struct {
func (m *PddLotteryHistory) TableName() string {
return "pdd_lottery_history"
}
type WeekCardDay struct {
Day int // 天数
AwardUpper int // 奖励上限
AwardLower int // 奖励下限
}
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"`
// []WeekCardDay json
AwardData string `gorm:"column:award_data;type:varchar(512);default:'';comment:奖励数据" json:"awardData" web:"award_data"`
AwardDetails map[int]WeekCardDay `gorm:"-"`
UpdatedBase
}
func (c *ConfigWeekCard) TableName() string {
return "config_week_card"
}

@ -43,7 +43,6 @@ const (
ReloadConfigActivitySign // 签到配置
ReloadConfigActivityBreakGift // 破产礼包
ReloadConfigShareRobot // 分享机器人
ReloadConfigActivityWeekCard // 周卡
ReloadConfigActivitySlots // slots奖池活动
ReloadConfigActivityLuckyShop // 幸运商店活动
ReloadConfigServerFlag // 服务器配置
@ -73,6 +72,7 @@ const (
ReloadConfigShareBanner
ReloadTypeConfigWithdrawWeight
ReloadTypeConfigShareRankAward
ReloadConfigWeekCard // 周卡
ReloadTypeExcel
)
@ -148,8 +148,6 @@ func GetConfigStructByType(t int) (interface{}, interface{}) {
return &ConfigActivityBreakGift{}, &[]ConfigActivityBreakGift{}
case ReloadConfigShareRobot:
return &ConfigShareRobot{}, &[]ConfigShareRobot{}
case ReloadConfigActivityWeekCard:
return &ConfigActivityWeekCard{}, &[]ConfigActivityWeekCard{}
case ReloadConfigActivitySlots:
return &ConfigActivitySlots{}, &[]ConfigActivitySlots{}
case ReloadConfigActivityLuckyShop:
@ -202,6 +200,8 @@ func GetConfigStructByType(t int) (interface{}, interface{}) {
return &ConfigWithdrawChannels{}, &[]ConfigWithdrawChannels{}
case ReloadTypeConfigShareRankAward:
return &ConfigShareRankAward{}, &[]ConfigShareRankAward{}
case ReloadConfigWeekCard:
return &ConfigWeekCard{}, &[]ConfigWeekCard{}
default:
return nil, nil
}

@ -255,6 +255,7 @@ type ConfigShare struct {
BetRebate int64 `gorm:"column:bet_rebate;type:int(11);default:0;comment:客损返利(*1万)" web:"bet_rebate"`
RechargeRebate int64 `gorm:"column:recharge_rebate;type:int(11);default:0;comment:充值返利(*1万)" web:"recharge_rebate"`
InviteRebate int64 `gorm:"column:invite_rebate;type:int(11);default:0;comment:拉人奖励" web:"invite_rebate"`
InviteRebateTotal int64 `gorm:"column:invite_rebate_total;type:int(11);default:80500;comment:拉人总奖励" web:"invite_rebate_total"`
BeInviteRebate int64 `gorm:"column:be_invite_rebate;type:int(11);default:10;comment:被拉人奖励" web:"be_invite_rebate"`
RewardTiers string `gorm:"column:reward_tiers;type:varchar(256);default:'[]';comment:返利层级配置" web:"reward_tiers"`
SubRewardTiers []ConfigShareTiers `gorm:"-"`
@ -518,20 +519,20 @@ func (c *ConfigShareRankAward) TableName() string {
type ShareRankData struct {
ID int64 `gorm:"column:id;type:bigint(20);primaryKey;autoIncrement:true" json:"id"`
UID int `gorm:"column:uid;type:bigint(11);not null;uniqueIndex:rank_idx,priority:3;comment:玩家id" json:"uid"` // 玩家id
UID int `gorm:"column:uid;type:bigint(11);not null;uniqueIndex:rank_idx,priority:3;comment:玩家id" json:"uid"` // 玩家id
RankCycle int `gorm:"column:rank_cycle;type:int(11);default:0;uniqueIndex:rank_idx,priority:1;comment:排行榜周期(1:日,2:周,3:月)" json:"rank_cycle"` // 排行榜周期(1:日,2:周,3:月)
RankAt int64 `gorm:"column:rank_at;type:bigint(20);not null;uniqueIndex:rank_idx,priority:2;comment:排行榜开始日期" json:"rank_at"` // 排行榜开始日期
RankValue int64 `gorm:"column:rank_value;type:bigint(20);not null;comment:玩家数值" json:"rank_value"` // 玩家数值
IsRobot int `gorm:"column:is_robot;type:int(11);not null;comment:是不是机器人(0:不是,1:是)" json:"is_robot"` // 是不是机器人(0:不是,1:是)
UserAward int `gorm:"column:user_award;type:int(11);not null;comment:玩家奖励比例(*10000)" json:"user_award"` // 玩家奖励比例(*10000)
UserAwardCount int64 `gorm:"column:user_award_count;type:bigint(20);not null;comment:玩家奖励数量" json:"user_award_count"` // 玩家奖励数量
Rank int `gorm:"column:rank;type:int(11);default:0;comment:排名" json:"rank"` // 玩家奖励比例(*10000)
UpdatedAt int64 `gorm:"column:updated_at;type:bigint(20);not null;comment:更新时间" json:"updated_at"` // 更新时间
RankAt int64 `gorm:"column:rank_at;type:bigint(20);not null;uniqueIndex:rank_idx,priority:2;comment:排行榜开始日期" json:"rank_at"` // 排行榜开始日期
RankValue int64 `gorm:"column:rank_value;type:bigint(20);not null;comment:玩家数值" json:"rank_value"` // 玩家数值
IsRobot int `gorm:"column:is_robot;type:int(11);not null;comment:是不是机器人(0:不是,1:是)" json:"is_robot"` // 是不是机器人(0:不是,1:是)
UserAward int `gorm:"column:user_award;type:int(11);not null;comment:玩家奖励比例(*10000)" json:"user_award"` // 玩家奖励比例(*10000)
UserAwardCount int64 `gorm:"column:user_award_count;type:bigint(20);not null;comment:玩家奖励数量" json:"user_award_count"` // 玩家奖励数量
Rank int `gorm:"column:rank;type:int(11);default:0;comment:排名" json:"rank"` // 玩家奖励比例(*10000)
UpdatedAt int64 `gorm:"column:updated_at;type:bigint(20);not null;comment:更新时间" json:"updated_at"` // 更新时间
}
type ShareRankDataWithUser struct {
ShareRankData `gorm:"embedded"` // RankData的所有字段会展开到表中
UserInfo PlayerDBInfo `gorm:"embedded"` // UserInfo的所有字段也会展开到同一张表中
ShareRankData `gorm:"embedded"` // RankData的所有字段会展开到表中
UserInfo PlayerDBInfo `gorm:"embedded"` // UserInfo的所有字段也会展开到同一张表中
}
func (c *ShareRankData) TableName() string {

@ -96,7 +96,6 @@ func MigrateDB() {
new(common.ActivitySignData),
new(common.ConfigActivityBreakGift),
new(common.ConfigShareRobot),
new(common.ConfigActivityWeekCard),
new(common.ActivityWeekCardData),
new(common.ConfigActivitySlots),
new(common.ActivitySlotsData),
@ -150,6 +149,7 @@ func MigrateDB() {
new(common.ConfigShareRankAward),
new(common.ShareRankData),
new(common.LuckyWheelReward),
new(common.ConfigWeekCard),
)
if err != nil {
panic("Migrate db fail")

@ -145,8 +145,6 @@ func GetControlType(path string) int {
return common.ReloadConfigActivityBreakGift
case "shareRobot":
return common.ReloadConfigShareRobot
case "weekCard":
return common.ReloadConfigActivityWeekCard
case "slots":
return common.ReloadConfigActivitySlots
case "luckyShop":
@ -206,6 +204,8 @@ func GetControlType(path string) int {
return common.ReloadConfigShareBanner
case "shareRankAward":
return common.ReloadTypeConfigShareRankAward
case "weekCard":
return common.ReloadConfigWeekCard
default:
return 0
}

@ -13,7 +13,6 @@ import (
"server/util"
"sort"
"strconv"
"strings"
"time"
"github.com/gin-gonic/gin"
@ -1335,39 +1334,41 @@ func ActivityWeekCardInfo(c *gin.Context) {
}
resp := &values.ActivityWeekCardInfoResp{}
a.Data = resp
cons := call.GetConfigActivityWeekCard()
cons := call.GetConfigWeekCard()
_ = cons
cardInfo := new(common.ActivityWeekCardData)
if a.UID > 0 {
cardInfo = call.GetUserWeekCard(a.UID)
}
var rewardList []int64
var err error
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,
})
}
}
_ = 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, ",")
@ -1380,11 +1381,12 @@ func ActivityWeekCardInfo(c *gin.Context) {
resp.RechargeStatus = false
}
for _, item := range rewardList {
resp.RewardList = append(resp.RewardList, values.WeekCardInfo{
Min: cons.MiniLimit,
Max: cons.RewardAmount - cons.MiniLimit*4,
Val: item,
})
_ = 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 {

@ -58,6 +58,7 @@ func SetUpRouter() *gin.Engine {
popUp(auth)
luckyWheel(auth)
pdd(auth)
weekCard(auth)
}
provider := r.Group("provider/")
if config.GetBase().Release {

@ -0,0 +1,11 @@
package routers
import (
"github.com/gin-gonic/gin"
"server/modules/web/handler"
)
func weekCard(e *gin.RouterGroup) {
e.POST("/weekCard/info", handler.ActivityWeekCardInfo)
e.POST("/weekCard/draw", handler.ActivityWeekCardDraw)
}
Loading…
Cancel
Save