Commit 5ed82d23cf34515b75069a7e0ef432729ef6b160
1 parent
bb2b13bb
Exists in
master
and in
1 other branch
faet: 卡牌功能重构为支持多个游戏,数据库自己实现模拟orm接口
Showing
27 changed files
with
795 additions
and
474 deletions
Show diff stats
| @@ -0,0 +1,8 @@ | @@ -0,0 +1,8 @@ | ||
| 1 | +CREATE TABLE `{tablename}` ( | ||
| 2 | + `uid` bigint(20) NOT NULL COMMENT '玩家唯一ID', | ||
| 3 | + `activity_id` bigint(20) NOT NULL DEFAULT 0 COMMENT '活动ID', | ||
| 4 | + `details_text` longtext CHARACTER SET latin1 COLLATE latin1_swedish_ci NOT NULL COMMENT '活动详情封装', | ||
| 5 | + `create_time` bigint(20) NOT NULL DEFAULT 0 COMMENT '创建时间戳', | ||
| 6 | + `update_time` bigint(20) NOT NULL DEFAULT 0 COMMENT '修改时间戳', | ||
| 7 | + PRIMARY KEY (`uid`) USING BTREE | ||
| 8 | +) ENGINE = InnoDB CHARACTER SET = utf8mb4 COMMENT = '卡包卡牌数据'; | ||
| 0 | \ No newline at end of file | 9 | \ No newline at end of file |
| @@ -0,0 +1,11 @@ | @@ -0,0 +1,11 @@ | ||
| 1 | +CREATE TABLE `{tablename}` ( | ||
| 2 | + `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '日志ID', | ||
| 3 | + `uid` bigint(20) NOT NULL DEFAULT 0 COMMENT '玩家唯一ID', | ||
| 4 | + `activity_id` bigint(20) NOT NULL DEFAULT 0 COMMENT '活动ID', | ||
| 5 | + `round` int(11) NOT NULL DEFAULT 0 COMMENT '活动轮次', | ||
| 6 | + `cardholder_id` int(11) NOT NULL DEFAULT 0 COMMENT '卡包ID', | ||
| 7 | + `cardholder_count` int(11) NOT NULL DEFAULT 0 COMMENT '卡包数量', | ||
| 8 | + `create_time` bigint(20) NOT NULL DEFAULT 0 COMMENT '创建时间戳', | ||
| 9 | + `update_time` bigint(20) NOT NULL DEFAULT 0 COMMENT '修改时间戳', | ||
| 10 | + PRIMARY KEY (`id`) USING BTREE | ||
| 11 | +) ENGINE = InnoDB CHARACTER SET = utf8mb4 COMMENT = '开卡包活动日志获得卡包'; | ||
| 0 | \ No newline at end of file | 12 | \ No newline at end of file |
| @@ -0,0 +1,11 @@ | @@ -0,0 +1,11 @@ | ||
| 1 | +CREATE TABLE `{tablename}` ( | ||
| 2 | + `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '日志ID', | ||
| 3 | + `uid` bigint(20) NOT NULL DEFAULT 0 COMMENT '玩家唯一ID', | ||
| 4 | + `activity_id` bigint(20) NOT NULL DEFAULT 0 COMMENT '活动ID', | ||
| 5 | + `round` int(11) NOT NULL DEFAULT 0 COMMENT '活动轮次', | ||
| 6 | + `cardholder_id` int(11) NOT NULL DEFAULT 0 COMMENT '卡包ID', | ||
| 7 | + `card_list` varchar(255) NOT NULL DEFAULT '' COMMENT '开卡内容', | ||
| 8 | + `create_time` bigint(20) NOT NULL DEFAULT 0 COMMENT '创建时间戳', | ||
| 9 | + `update_time` bigint(20) NOT NULL DEFAULT 0 COMMENT '修改时间戳', | ||
| 10 | + PRIMARY KEY (`id`) USING BTREE | ||
| 11 | +) ENGINE = InnoDB CHARACTER SET = utf8mb4 COMMENT = '开卡包活动日志开卡包'; | ||
| 0 | \ No newline at end of file | 12 | \ No newline at end of file |
| @@ -0,0 +1,11 @@ | @@ -0,0 +1,11 @@ | ||
| 1 | +CREATE TABLE `{tablename}` ( | ||
| 2 | + `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '日志ID', | ||
| 3 | + `uid` bigint(20) NOT NULL DEFAULT 0 COMMENT '玩家唯一ID', | ||
| 4 | + `activity_id` bigint(20) NOT NULL DEFAULT 0 COMMENT '活动ID', | ||
| 5 | + `round` int(11) NOT NULL DEFAULT 0 COMMENT '活动轮次', | ||
| 6 | + `album_id` int(11) NOT NULL DEFAULT 0 COMMENT '卡组ID', | ||
| 7 | + `award` varchar(255) NOT NULL DEFAULT '' COMMENT '奖励内容', | ||
| 8 | + `create_time` bigint(20) NOT NULL DEFAULT 0 COMMENT '创建时间戳', | ||
| 9 | + `update_time` bigint(20) NOT NULL DEFAULT 0 COMMENT '修改时间戳', | ||
| 10 | + PRIMARY KEY (`id`) USING BTREE | ||
| 11 | +) ENGINE = InnoDB CHARACTER SET = utf8mb4 COMMENT = '开卡包活动日志领取卡组奖励'; | ||
| 0 | \ No newline at end of file | 12 | \ No newline at end of file |
| @@ -0,0 +1,10 @@ | @@ -0,0 +1,10 @@ | ||
| 1 | +CREATE TABLE `{tablename}` ( | ||
| 2 | + `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '日志ID', | ||
| 3 | + `uid` bigint(20) NOT NULL DEFAULT 0 COMMENT '玩家唯一ID', | ||
| 4 | + `activity_id` bigint(20) NOT NULL DEFAULT 0 COMMENT '活动ID', | ||
| 5 | + `round` int(11) NOT NULL DEFAULT 0 COMMENT '活动轮次', | ||
| 6 | + `award` varchar(255) NOT NULL DEFAULT '' COMMENT '奖励内容', | ||
| 7 | + `create_time` bigint(20) NOT NULL DEFAULT 0 COMMENT '创建时间戳', | ||
| 8 | + `update_time` bigint(20) NOT NULL DEFAULT 0 COMMENT '修改时间戳', | ||
| 9 | + PRIMARY KEY (`id`) USING BTREE | ||
| 10 | +) ENGINE = InnoDB CHARACTER SET = utf8mb4 COMMENT = '开卡包活动日志领取轮次奖励'; | ||
| 0 | \ No newline at end of file | 11 | \ No newline at end of file |
conf/prod.conf
dto/cardholder-record.go
| @@ -3,6 +3,7 @@ package dto | @@ -3,6 +3,7 @@ package dto | ||
| 3 | import ( | 3 | import ( |
| 4 | "apigame/service/constd" | 4 | "apigame/service/constd" |
| 5 | "apigame/util/util-lx/lxtime" | 5 | "apigame/util/util-lx/lxtime" |
| 6 | + "fmt" | ||
| 6 | ) | 7 | ) |
| 7 | 8 | ||
| 8 | // CardHolderRecordGetNew 开卡包活动日志获得卡包 | 9 | // CardHolderRecordGetNew 开卡包活动日志获得卡包 |
| @@ -17,8 +18,24 @@ type CardHolderRecordGetNew struct { | @@ -17,8 +18,24 @@ type CardHolderRecordGetNew struct { | ||
| 17 | UpdateTime int64 // 修改时间戳 | 18 | UpdateTime int64 // 修改时间戳 |
| 18 | } | 19 | } |
| 19 | 20 | ||
| 20 | -func (d *CardHolderRecordGetNew) TableName() string { | ||
| 21 | - return constd.MYSQL_TABLE_S_CARDHOLDER_RECORD_GETNEW + constd.GAME_ID_HT | 21 | +func (d *CardHolderRecordGetNew) TableName(gameId string) string { |
| 22 | + return constd.MYSQL_TABLE_S_CARDHOLDER_RECORD_GETNEW + gameId | ||
| 23 | +} | ||
| 24 | + | ||
| 25 | +func (d *CardHolderRecordGetNew) CreateSqlPath() string { | ||
| 26 | + return constd.MYSQL_TABLE_S_CARDHOLDER_RECORD_GETNEW | ||
| 27 | +} | ||
| 28 | + | ||
| 29 | +func (d *CardHolderRecordGetNew) SqlPairs() map[string]string { | ||
| 30 | + m := make(map[string]string) | ||
| 31 | + m["uid"] = fmt.Sprintf("%d", d.Uid) | ||
| 32 | + m["activity_id"] = fmt.Sprintf("%d", d.ActivityId) | ||
| 33 | + m["round"] = fmt.Sprintf("%d", d.Round) | ||
| 34 | + m["cardholder_id"] = fmt.Sprintf("%d", d.CardholderId) | ||
| 35 | + m["cardholder_count"] = fmt.Sprintf("%d", d.CardholderCount) | ||
| 36 | + m["create_time"] = fmt.Sprintf("%d", d.CreateTime) | ||
| 37 | + m["update_time"] = fmt.Sprintf("%d", d.UpdateTime) | ||
| 38 | + return m | ||
| 22 | } | 39 | } |
| 23 | 40 | ||
| 24 | func NewCardHolderRecordGetNew(uid int64, activityId int64, round int, | 41 | func NewCardHolderRecordGetNew(uid int64, activityId int64, round int, |
| @@ -47,8 +64,24 @@ type CardHolderRecordOpen struct { | @@ -47,8 +64,24 @@ type CardHolderRecordOpen struct { | ||
| 47 | UpdateTime int64 // 修改时间戳 | 64 | UpdateTime int64 // 修改时间戳 |
| 48 | } | 65 | } |
| 49 | 66 | ||
| 50 | -func (d *CardHolderRecordOpen) TableName() string { | ||
| 51 | - return constd.MYSQL_TABLE_S_CARDHOLDER_RECORD_OPEN + constd.GAME_ID_HT | 67 | +func (d *CardHolderRecordOpen) TableName(gameId string) string { |
| 68 | + return constd.MYSQL_TABLE_S_CARDHOLDER_RECORD_OPEN + gameId | ||
| 69 | +} | ||
| 70 | + | ||
| 71 | +func (d *CardHolderRecordOpen) CreateSqlPath() string { | ||
| 72 | + return constd.MYSQL_TABLE_S_CARDHOLDER_RECORD_OPEN | ||
| 73 | +} | ||
| 74 | + | ||
| 75 | +func (d *CardHolderRecordOpen) SqlPairs() map[string]string { | ||
| 76 | + m := make(map[string]string) | ||
| 77 | + m["uid"] = fmt.Sprintf("%d", d.Uid) | ||
| 78 | + m["activity_id"] = fmt.Sprintf("%d", d.ActivityId) | ||
| 79 | + m["round"] = fmt.Sprintf("%d", d.Round) | ||
| 80 | + m["cardholder_id"] = fmt.Sprintf("%d", d.CardholderId) | ||
| 81 | + m["card_list"] = fmt.Sprintf("'%s'", d.CardList) | ||
| 82 | + m["create_time"] = fmt.Sprintf("%d", d.CreateTime) | ||
| 83 | + m["update_time"] = fmt.Sprintf("%d", d.UpdateTime) | ||
| 84 | + return m | ||
| 52 | } | 85 | } |
| 53 | 86 | ||
| 54 | func NewCardHolderRecordOpen(uid int64, activityId int64, round int, | 87 | func NewCardHolderRecordOpen(uid int64, activityId int64, round int, |
| @@ -77,8 +110,24 @@ type CardHolderRecordRewardAlbum struct { | @@ -77,8 +110,24 @@ type CardHolderRecordRewardAlbum struct { | ||
| 77 | UpdateTime int64 // 修改时间戳 | 110 | UpdateTime int64 // 修改时间戳 |
| 78 | } | 111 | } |
| 79 | 112 | ||
| 80 | -func (d *CardHolderRecordRewardAlbum) TableName() string { | ||
| 81 | - return constd.MYSQL_TABLE_S_CARDHOLDER_RECORD_REWARDALBUM + constd.GAME_ID_HT | 113 | +func (d *CardHolderRecordRewardAlbum) TableName(gameId string) string { |
| 114 | + return constd.MYSQL_TABLE_S_CARDHOLDER_RECORD_REWARDALBUM + gameId | ||
| 115 | +} | ||
| 116 | + | ||
| 117 | +func (d *CardHolderRecordRewardAlbum) CreateSqlPath() string { | ||
| 118 | + return constd.MYSQL_TABLE_S_CARDHOLDER_RECORD_REWARDALBUM | ||
| 119 | +} | ||
| 120 | + | ||
| 121 | +func (d *CardHolderRecordRewardAlbum) SqlPairs() map[string]string { | ||
| 122 | + m := make(map[string]string) | ||
| 123 | + m["uid"] = fmt.Sprintf("%d", d.Uid) | ||
| 124 | + m["activity_id"] = fmt.Sprintf("%d", d.ActivityId) | ||
| 125 | + m["round"] = fmt.Sprintf("%d", d.Round) | ||
| 126 | + m["album_id"] = fmt.Sprintf("%d", d.AlbumId) | ||
| 127 | + m["award"] = fmt.Sprintf("'%s'", d.Award) | ||
| 128 | + m["create_time"] = fmt.Sprintf("%d", d.CreateTime) | ||
| 129 | + m["update_time"] = fmt.Sprintf("%d", d.UpdateTime) | ||
| 130 | + return m | ||
| 82 | } | 131 | } |
| 83 | 132 | ||
| 84 | func NewCardHolderRecordRewardAlbum(uid int64, activityId int64, round int, | 133 | func NewCardHolderRecordRewardAlbum(uid int64, activityId int64, round int, |
| @@ -95,7 +144,7 @@ func NewCardHolderRecordRewardAlbum(uid int64, activityId int64, round int, | @@ -95,7 +144,7 @@ func NewCardHolderRecordRewardAlbum(uid int64, activityId int64, round int, | ||
| 95 | } | 144 | } |
| 96 | } | 145 | } |
| 97 | 146 | ||
| 98 | -// CardHolderRecordRewardRound 开卡包活动日志领取卡组奖励 | 147 | +// CardHolderRecordRewardRound 开卡包活动日志领取轮次奖励 |
| 99 | type CardHolderRecordRewardRound struct { | 148 | type CardHolderRecordRewardRound struct { |
| 100 | Id int64 `orm:"auto"` // 日志ID | 149 | Id int64 `orm:"auto"` // 日志ID |
| 101 | Uid int64 // 玩家唯一ID | 150 | Uid int64 // 玩家唯一ID |
| @@ -106,8 +155,23 @@ type CardHolderRecordRewardRound struct { | @@ -106,8 +155,23 @@ type CardHolderRecordRewardRound struct { | ||
| 106 | UpdateTime int64 // 修改时间戳 | 155 | UpdateTime int64 // 修改时间戳 |
| 107 | } | 156 | } |
| 108 | 157 | ||
| 109 | -func (d *CardHolderRecordRewardRound) TableName() string { | ||
| 110 | - return constd.MYSQL_TABLE_S_CARDHOLDER_RECORD_REWARDROUND + constd.GAME_ID_HT | 158 | +func (d *CardHolderRecordRewardRound) TableName(gameId string) string { |
| 159 | + return constd.MYSQL_TABLE_S_CARDHOLDER_RECORD_REWARDROUND + gameId | ||
| 160 | +} | ||
| 161 | + | ||
| 162 | +func (d *CardHolderRecordRewardRound) CreateSqlPath() string { | ||
| 163 | + return constd.MYSQL_TABLE_S_CARDHOLDER_RECORD_REWARDROUND | ||
| 164 | +} | ||
| 165 | + | ||
| 166 | +func (d *CardHolderRecordRewardRound) SqlPairs() map[string]string { | ||
| 167 | + m := make(map[string]string) | ||
| 168 | + m["uid"] = fmt.Sprintf("%d", d.Uid) | ||
| 169 | + m["activity_id"] = fmt.Sprintf("%d", d.ActivityId) | ||
| 170 | + m["round"] = fmt.Sprintf("%d", d.Round) | ||
| 171 | + m["award"] = fmt.Sprintf("'%s'", d.Award) | ||
| 172 | + m["create_time"] = fmt.Sprintf("%d", d.CreateTime) | ||
| 173 | + m["update_time"] = fmt.Sprintf("%d", d.UpdateTime) | ||
| 174 | + return m | ||
| 111 | } | 175 | } |
| 112 | 176 | ||
| 113 | func NewCardHolderRecordRewardRound(uid int64, activityId int64, round int, | 177 | func NewCardHolderRecordRewardRound(uid int64, activityId int64, round int, |
dto/cardholder.go
| @@ -4,29 +4,33 @@ import ( | @@ -4,29 +4,33 @@ import ( | ||
| 4 | "apigame/models" | 4 | "apigame/models" |
| 5 | "apigame/service/constd" | 5 | "apigame/service/constd" |
| 6 | "apigame/util/util-lx/lxalilog" | 6 | "apigame/util/util-lx/lxalilog" |
| 7 | + "apigame/util/util-lx/lxtime" | ||
| 7 | "encoding/json" | 8 | "encoding/json" |
| 9 | + "fmt" | ||
| 8 | "github.com/astaxie/beego/orm" | 10 | "github.com/astaxie/beego/orm" |
| 9 | ) | 11 | ) |
| 10 | 12 | ||
| 11 | func InitCardholder() { | 13 | func InitCardholder() { |
| 12 | 14 | ||
| 13 | - // register model | ||
| 14 | - orm.RegisterModel(new(CardHolderData)) | ||
| 15 | - orm.RegisterModel(new(CardHolderRecordGetNew)) | ||
| 16 | - orm.RegisterModel(new(CardHolderRecordOpen)) | ||
| 17 | - orm.RegisterModel(new(CardHolderRecordRewardAlbum)) | ||
| 18 | - orm.RegisterModel(new(CardHolderRecordRewardRound)) | ||
| 19 | - | ||
| 20 | // create table | 15 | // create table |
| 21 | - orm.RunSyncdb("default", false, true) | 16 | + o := orm.NewOrm() |
| 17 | + for _, gameId := range constd.GameListCardHolder { | ||
| 18 | + CreateTable(o, constd.MYSQL_MERGECOMMON, new(CardHolderData), gameId) | ||
| 19 | + | ||
| 20 | + CreateTable(o, constd.MYSQL_MERGECOMMON, new(CardHolderRecordGetNew), gameId) | ||
| 21 | + CreateTable(o, constd.MYSQL_MERGECOMMON, new(CardHolderRecordOpen), gameId) | ||
| 22 | + CreateTable(o, constd.MYSQL_MERGECOMMON, new(CardHolderRecordRewardAlbum), gameId) | ||
| 23 | + CreateTable(o, constd.MYSQL_MERGECOMMON, new(CardHolderRecordRewardRound), gameId) | ||
| 24 | + } | ||
| 25 | + | ||
| 22 | } | 26 | } |
| 23 | 27 | ||
| 24 | // CardHolderData 卡牌活动持久数据 | 28 | // CardHolderData 卡牌活动持久数据 |
| 25 | type CardHolderData struct { | 29 | type CardHolderData struct { |
| 26 | - Uid int64 `orm:"pk"` // 玩家唯一ID | 30 | + Uid int64 // 玩家唯一ID |
| 27 | ActivityId int64 // 活动ID | 31 | ActivityId int64 // 活动ID |
| 28 | - Details *CardHolderDataDetails `orm:"-"` // 活动详情 | ||
| 29 | - DetailsText string `orm:"type(text)"` // 活动详情封装 | 32 | + Details *CardHolderDataDetails // 活动详情 |
| 33 | + DetailsText string // 活动详情封装 | ||
| 30 | CreateTime int64 // 创建时间戳 | 34 | CreateTime int64 // 创建时间戳 |
| 31 | UpdateTime int64 // 修改时间戳 | 35 | UpdateTime int64 // 修改时间戳 |
| 32 | } | 36 | } |
| @@ -42,10 +46,12 @@ type CardHolderDataDetails struct { | @@ -42,10 +46,12 @@ type CardHolderDataDetails struct { | ||
| 42 | } | 46 | } |
| 43 | 47 | ||
| 44 | func NewCardHolderData(uid int64) *CardHolderData { | 48 | func NewCardHolderData(uid int64) *CardHolderData { |
| 45 | - return &CardHolderData{ | 49 | + d := &CardHolderData{ |
| 46 | Uid: uid, | 50 | Uid: uid, |
| 47 | Details: NewCardHolderDataDetails(), | 51 | Details: NewCardHolderDataDetails(), |
| 48 | } | 52 | } |
| 53 | + d.Encode() | ||
| 54 | + return d | ||
| 49 | } | 55 | } |
| 50 | 56 | ||
| 51 | func NewCardHolderDataDetails() *CardHolderDataDetails { | 57 | func NewCardHolderDataDetails() *CardHolderDataDetails { |
| @@ -59,8 +65,26 @@ func NewCardHolderDataDetails() *CardHolderDataDetails { | @@ -59,8 +65,26 @@ func NewCardHolderDataDetails() *CardHolderDataDetails { | ||
| 59 | } | 65 | } |
| 60 | } | 66 | } |
| 61 | 67 | ||
| 62 | -func (d *CardHolderData) TableName() string { | ||
| 63 | - return constd.MYSQL_TABLE_S_CARDHOLDER_DATA + constd.GAME_ID_HT | 68 | +func (d *CardHolderData) TableName(gameId string) string { |
| 69 | + return constd.MYSQL_TABLE_S_CARDHOLDER_DATA + gameId | ||
| 70 | +} | ||
| 71 | + | ||
| 72 | +func (d *CardHolderData) CreateSqlPath() string { | ||
| 73 | + return constd.MYSQL_TABLE_S_CARDHOLDER_DATA | ||
| 74 | +} | ||
| 75 | + | ||
| 76 | +func (d *CardHolderData) SqlPairs() map[string]string { | ||
| 77 | + m := make(map[string]string) | ||
| 78 | + m["activity_id"] = fmt.Sprintf("%d", d.ActivityId) | ||
| 79 | + m["details_text"] = fmt.Sprintf("'%s'", d.DetailsText) | ||
| 80 | + m["create_time"] = fmt.Sprintf("%d", d.CreateTime) | ||
| 81 | + m["update_time"] = fmt.Sprintf("%d", d.UpdateTime) | ||
| 82 | + return m | ||
| 83 | +} | ||
| 84 | + | ||
| 85 | +func (d *CardHolderData) Init(uid int64) { | ||
| 86 | + d.Uid = uid | ||
| 87 | + d.CreateTime = lxtime.NowUninx() | ||
| 64 | } | 88 | } |
| 65 | 89 | ||
| 66 | // Encode 打包数据 | 90 | // Encode 打包数据 |
| @@ -0,0 +1,46 @@ | @@ -0,0 +1,46 @@ | ||
| 1 | +package dto | ||
| 2 | + | ||
| 3 | +import ( | ||
| 4 | + "github.com/astaxie/beego/logs" | ||
| 5 | + "github.com/astaxie/beego/orm" | ||
| 6 | + "io/ioutil" | ||
| 7 | + "os" | ||
| 8 | + "strings" | ||
| 9 | +) | ||
| 10 | + | ||
| 11 | +func CreateTable(o orm.Ormer, dbName string, tb ITableData, gameId string) (err error) { | ||
| 12 | + | ||
| 13 | + o.Using(dbName) | ||
| 14 | + | ||
| 15 | + createSqlPath := "./conf/conf/db/" + tb.CreateSqlPath() + ".sql" | ||
| 16 | + createSql, err := readFileSql(createSqlPath, tb.TableName(gameId)) | ||
| 17 | + if err != nil { | ||
| 18 | + logs.Error(err) | ||
| 19 | + return | ||
| 20 | + } | ||
| 21 | + | ||
| 22 | + _, err = o.Raw(createSql).Exec() | ||
| 23 | + if err != nil { | ||
| 24 | + //logs.Error(err) | ||
| 25 | + return | ||
| 26 | + } | ||
| 27 | + | ||
| 28 | + return | ||
| 29 | +} | ||
| 30 | + | ||
| 31 | +func readFileSql(createSqlPath, tableName string) (sql string, err error) { | ||
| 32 | + filePtr, err := os.Open(createSqlPath) | ||
| 33 | + if err != nil { | ||
| 34 | + return | ||
| 35 | + } | ||
| 36 | + defer filePtr.Close() | ||
| 37 | + | ||
| 38 | + by, err := ioutil.ReadAll(filePtr) | ||
| 39 | + if err != nil { | ||
| 40 | + return | ||
| 41 | + } | ||
| 42 | + | ||
| 43 | + sql = strings.Replace(string(by), "{tablename}", tableName, -1) | ||
| 44 | + | ||
| 45 | + return | ||
| 46 | +} |
| @@ -0,0 +1,26 @@ | @@ -0,0 +1,26 @@ | ||
| 1 | +package dto | ||
| 2 | + | ||
| 3 | +// ITableData 数据库表 | ||
| 4 | +type ITableData interface { | ||
| 5 | + // TableName 表名 后缀是 gameId | ||
| 6 | + TableName(gameId string) string | ||
| 7 | + // CreateSqlPath 创建sql位置 | ||
| 8 | + CreateSqlPath() string | ||
| 9 | +} | ||
| 10 | + | ||
| 11 | +type IRecordData interface { | ||
| 12 | + // TableName 表名 后缀是 gameId | ||
| 13 | + TableName(gameId string) string | ||
| 14 | + // SqlPairs 数据键值对 | ||
| 15 | + SqlPairs() map[string]string | ||
| 16 | +} | ||
| 17 | + | ||
| 18 | +// IPlayerData 玩家数据表 | ||
| 19 | +type IPlayerData interface { | ||
| 20 | + // TableName 表名 后缀是 gameId | ||
| 21 | + TableName(gameId string) string | ||
| 22 | + // SqlPairs 数据键值对 | ||
| 23 | + SqlPairs() map[string]string | ||
| 24 | + // Init 新建 | ||
| 25 | + Init(uid int64) | ||
| 26 | +} |
| @@ -0,0 +1,67 @@ | @@ -0,0 +1,67 @@ | ||
| 1 | +package dto | ||
| 2 | + | ||
| 3 | +import ( | ||
| 4 | + "apigame/service/constd" | ||
| 5 | + "apigame/util/util-lx/lxalilog" | ||
| 6 | + "apigame/util/utmysql" | ||
| 7 | + "fmt" | ||
| 8 | + "github.com/astaxie/beego/orm" | ||
| 9 | +) | ||
| 10 | + | ||
| 11 | +func LoadPlayerData(gameId string, uid int64, data IPlayerData) (has bool, err error) { | ||
| 12 | + tableName := data.TableName(gameId) | ||
| 13 | + sql := fmt.Sprintf("select * from %s where uid=%d limit 1", tableName, uid) | ||
| 14 | + has, err = utmysql.FindOneSql(constd.MYSQL_MERGECOMMON, sql, data) | ||
| 15 | + if err != nil { | ||
| 16 | + lxalilog.Errors(err, sql, gameId, uid) | ||
| 17 | + return | ||
| 18 | + } | ||
| 19 | + // 档案不存在 新建 | ||
| 20 | + if !has { | ||
| 21 | + data.Init(uid) | ||
| 22 | + CreatePlayerData(gameId, uid, data) | ||
| 23 | + } | ||
| 24 | + return | ||
| 25 | +} | ||
| 26 | + | ||
| 27 | +func CreatePlayerData(gameId string, uid int64, data IPlayerData) { | ||
| 28 | + text1 := "" | ||
| 29 | + text2 := "" | ||
| 30 | + for s, s2 := range data.SqlPairs() { | ||
| 31 | + text1 += "," + s | ||
| 32 | + text2 += "," + s2 | ||
| 33 | + } | ||
| 34 | + sql := fmt.Sprintf("insert into %s (uid%s) value (%d%s)", | ||
| 35 | + data.TableName(gameId), text1, uid, text2) | ||
| 36 | + | ||
| 37 | + o := orm.NewOrm() | ||
| 38 | + o.Using(constd.MYSQL_MERGECOMMON) | ||
| 39 | + | ||
| 40 | + _, err := o.Raw(sql).Exec() | ||
| 41 | + if err != nil { | ||
| 42 | + lxalilog.Errors(err, sql, gameId, uid) | ||
| 43 | + return | ||
| 44 | + } | ||
| 45 | +} | ||
| 46 | + | ||
| 47 | +func SavePlayerData(gameId string, uid int64, data IPlayerData) { | ||
| 48 | + text := "" | ||
| 49 | + indexPairs := 0 | ||
| 50 | + for s, s2 := range data.SqlPairs() { | ||
| 51 | + if indexPairs != 0 { | ||
| 52 | + text += "," | ||
| 53 | + } | ||
| 54 | + text += fmt.Sprintf("%s=%s", s, s2) | ||
| 55 | + indexPairs++ | ||
| 56 | + } | ||
| 57 | + sql := fmt.Sprintf("update %s set %s where uid=%d", data.TableName(gameId), text, uid) | ||
| 58 | + | ||
| 59 | + o := orm.NewOrm() | ||
| 60 | + o.Using(constd.MYSQL_MERGECOMMON) | ||
| 61 | + | ||
| 62 | + _, err := o.Raw(sql).Exec() | ||
| 63 | + if err != nil { | ||
| 64 | + lxalilog.Errors(err, sql, gameId, uid) | ||
| 65 | + return | ||
| 66 | + } | ||
| 67 | +} |
dto/record.go
| 1 | package dto | 1 | package dto |
| 2 | 2 | ||
| 3 | -type RecordMysql interface { | ||
| 4 | - TableName() string | 3 | +import ( |
| 4 | + "apigame/service/constd" | ||
| 5 | + "apigame/util/util-lx/lxalilog" | ||
| 6 | + "fmt" | ||
| 7 | + "github.com/astaxie/beego/orm" | ||
| 8 | +) | ||
| 9 | + | ||
| 10 | +func SaveRecord(gameId string, data IRecordData) { | ||
| 11 | + text1 := "" | ||
| 12 | + text2 := "" | ||
| 13 | + indexPairs := 0 | ||
| 14 | + for s, s2 := range data.SqlPairs() { | ||
| 15 | + if indexPairs != 0 { | ||
| 16 | + text1 += "," | ||
| 17 | + text2 += "," | ||
| 18 | + } | ||
| 19 | + text1 += s | ||
| 20 | + text2 += s2 | ||
| 21 | + indexPairs++ | ||
| 22 | + } | ||
| 23 | + sql := fmt.Sprintf("insert into %s (%s) value (%s)", | ||
| 24 | + data.TableName(gameId), text1, text2) | ||
| 25 | + | ||
| 26 | + o := orm.NewOrm() | ||
| 27 | + o.Using(constd.MYSQL_MERGECOMMON) | ||
| 28 | + | ||
| 29 | + _, err := o.Raw(sql).Exec() | ||
| 30 | + if err != nil { | ||
| 31 | + lxalilog.Errors(err, sql, gameId) | ||
| 32 | + return | ||
| 33 | + } | ||
| 5 | } | 34 | } |
| @@ -0,0 +1,73 @@ | @@ -0,0 +1,73 @@ | ||
| 1 | +package models | ||
| 2 | + | ||
| 3 | +// 海滩卡包 | ||
| 4 | + | ||
| 5 | +// CardHolderInfo 卡包信息 | ||
| 6 | +type CardHolderInfo struct { | ||
| 7 | + Cardholder map[int]int `form:"cardholder" json:"cardholder"` // 卡包数量 k=卡包ID v=卡包数量 | ||
| 8 | + Cards map[int]int `form:"cards" json:"cards"` // 每张卡集了多少张 k=卡牌ID v=数量 | ||
| 9 | + Album map[string]int `form:"album" json:"album"` // 卡组奖励领取 k=卡组ID v=数量 | ||
| 10 | + Round int `form:"round" json:"round"` // 卡册当前轮次 | ||
| 11 | +} | ||
| 12 | + | ||
| 13 | +// ReqCardHolderInfo 请求 卡包信息 | ||
| 14 | +type ReqCardHolderInfo struct { | ||
| 15 | + BaseLoginInfo | ||
| 16 | + BaseSign | ||
| 17 | +} | ||
| 18 | + | ||
| 19 | +// RspCardHolderInfo 返回 卡包信息 | ||
| 20 | +type RspCardHolderInfo struct { | ||
| 21 | + CardHolderInfo | ||
| 22 | +} | ||
| 23 | + | ||
| 24 | +// ReqCardHolderGetNew 请求 获取卡包 | ||
| 25 | +type ReqCardHolderGetNew struct { | ||
| 26 | + BaseLoginInfo | ||
| 27 | + BaseSign | ||
| 28 | + Id int `form:"id" json:"id" valid:"Required"` // 卡包ID | ||
| 29 | + Count int `form:"count" json:"count" valid:"Required"` // 卡包数量 | ||
| 30 | +} | ||
| 31 | + | ||
| 32 | +// RspCardHolderGetNew 返回 获取卡包 | ||
| 33 | +type RspCardHolderGetNew struct { | ||
| 34 | + CardHolderInfo | ||
| 35 | +} | ||
| 36 | + | ||
| 37 | +// ReqCardHolderOpen 请求 打开卡包 | ||
| 38 | +type ReqCardHolderOpen struct { | ||
| 39 | + BaseLoginInfo | ||
| 40 | + BaseSign | ||
| 41 | + Id int `form:"id" json:"id" valid:"Required"` // 卡包ID | ||
| 42 | +} | ||
| 43 | + | ||
| 44 | +// RspCardHolderOpen 返回 打开卡包 | ||
| 45 | +type RspCardHolderOpen struct { | ||
| 46 | + CardHolderInfo | ||
| 47 | + NewCards []int `form:"new_cards" json:"new_cards"` // 新获得的卡牌列表 | ||
| 48 | +} | ||
| 49 | + | ||
| 50 | +// ReqCardHolderGetRewardAlbum 请求 领取卡组奖励 | ||
| 51 | +type ReqCardHolderGetRewardAlbum struct { | ||
| 52 | + BaseLoginInfo | ||
| 53 | + BaseSign | ||
| 54 | + Id int `form:"id" json:"id" valid:"Required"` // 卡组ID | ||
| 55 | +} | ||
| 56 | + | ||
| 57 | +// RspCardHolderGetRewardAlbum 返回 领取卡组奖励 | ||
| 58 | +type RspCardHolderGetRewardAlbum struct { | ||
| 59 | + CardHolderInfo | ||
| 60 | + Award string `form:"award" json:"award"` // 奖励字符串 | ||
| 61 | +} | ||
| 62 | + | ||
| 63 | +// ReqCardHolderGetRewardRound 请求 领取轮次奖励 | ||
| 64 | +type ReqCardHolderGetRewardRound struct { | ||
| 65 | + BaseLoginInfo | ||
| 66 | + BaseSign | ||
| 67 | +} | ||
| 68 | + | ||
| 69 | +// RspCardHolderGetRewardRound 返回 领取轮次奖励 | ||
| 70 | +type RspCardHolderGetRewardRound struct { | ||
| 71 | + CardHolderInfo | ||
| 72 | + Award string `form:"award" json:"award"` // 奖励字符串 | ||
| 73 | +} |
models/ht-cardholder.go
| @@ -1,73 +0,0 @@ | @@ -1,73 +0,0 @@ | ||
| 1 | -package models | ||
| 2 | - | ||
| 3 | -// 海滩卡包 | ||
| 4 | - | ||
| 5 | -// CardHolderInfo 卡包信息 | ||
| 6 | -type CardHolderInfo struct { | ||
| 7 | - Cardholder map[int]int `form:"cardholder" json:"cardholder"` // 卡包数量 k=卡包ID v=卡包数量 | ||
| 8 | - Cards map[int]int `form:"cards" json:"cards"` // 每张卡集了多少张 k=卡牌ID v=数量 | ||
| 9 | - Album map[string]int `form:"album" json:"album"` // 卡组奖励领取 k=卡组ID v=数量 | ||
| 10 | - Round int `form:"round" json:"round"` // 卡册当前轮次 | ||
| 11 | -} | ||
| 12 | - | ||
| 13 | -// ReqCardHolderInfo 请求 卡包信息 | ||
| 14 | -type ReqCardHolderInfo struct { | ||
| 15 | - BaseLoginInfo | ||
| 16 | - BaseSign | ||
| 17 | -} | ||
| 18 | - | ||
| 19 | -// RspCardHolderInfo 返回 卡包信息 | ||
| 20 | -type RspCardHolderInfo struct { | ||
| 21 | - CardHolderInfo | ||
| 22 | -} | ||
| 23 | - | ||
| 24 | -// ReqCardHolderGetNew 请求 获取卡包 | ||
| 25 | -type ReqCardHolderGetNew struct { | ||
| 26 | - BaseLoginInfo | ||
| 27 | - BaseSign | ||
| 28 | - Id int `form:"id" json:"id" valid:"Required"` // 卡包ID | ||
| 29 | - Count int `form:"count" json:"count" valid:"Required"` // 卡包数量 | ||
| 30 | -} | ||
| 31 | - | ||
| 32 | -// RspCardHolderGetNew 返回 获取卡包 | ||
| 33 | -type RspCardHolderGetNew struct { | ||
| 34 | - CardHolderInfo | ||
| 35 | -} | ||
| 36 | - | ||
| 37 | -// ReqCardHolderOpen 请求 打开卡包 | ||
| 38 | -type ReqCardHolderOpen struct { | ||
| 39 | - BaseLoginInfo | ||
| 40 | - BaseSign | ||
| 41 | - Id int `form:"id" json:"id" valid:"Required"` // 卡包ID | ||
| 42 | -} | ||
| 43 | - | ||
| 44 | -// RspCardHolderOpen 返回 打开卡包 | ||
| 45 | -type RspCardHolderOpen struct { | ||
| 46 | - CardHolderInfo | ||
| 47 | - NewCards []int `form:"new_cards" json:"new_cards"` // 新获得的卡牌列表 | ||
| 48 | -} | ||
| 49 | - | ||
| 50 | -// ReqCardHolderGetRewardAlbum 请求 领取卡组奖励 | ||
| 51 | -type ReqCardHolderGetRewardAlbum struct { | ||
| 52 | - BaseLoginInfo | ||
| 53 | - BaseSign | ||
| 54 | - Id int `form:"id" json:"id" valid:"Required"` // 卡组ID | ||
| 55 | -} | ||
| 56 | - | ||
| 57 | -// RspCardHolderGetRewardAlbum 返回 领取卡组奖励 | ||
| 58 | -type RspCardHolderGetRewardAlbum struct { | ||
| 59 | - CardHolderInfo | ||
| 60 | - Award string `form:"award" json:"award"` // 奖励字符串 | ||
| 61 | -} | ||
| 62 | - | ||
| 63 | -// ReqCardHolderGetRewardRound 请求 领取轮次奖励 | ||
| 64 | -type ReqCardHolderGetRewardRound struct { | ||
| 65 | - BaseLoginInfo | ||
| 66 | - BaseSign | ||
| 67 | -} | ||
| 68 | - | ||
| 69 | -// RspCardHolderGetRewardRound 返回 领取轮次奖励 | ||
| 70 | -type RspCardHolderGetRewardRound struct { | ||
| 71 | - CardHolderInfo | ||
| 72 | - Award string `form:"award" json:"award"` // 奖励字符串 | ||
| 73 | -} |
| @@ -0,0 +1,85 @@ | @@ -0,0 +1,85 @@ | ||
| 1 | +package cardholder | ||
| 2 | + | ||
| 3 | +import ( | ||
| 4 | + "apigame/service/constd" | ||
| 5 | + "apigame/util/util-lx/lxalilog" | ||
| 6 | + "apigame/util/utmysql" | ||
| 7 | + "fmt" | ||
| 8 | + "github.com/astaxie/beego/logs" | ||
| 9 | +) | ||
| 10 | + | ||
| 11 | +// Init 初始化 | ||
| 12 | +func Init() { | ||
| 13 | + | ||
| 14 | + NewConfigs() | ||
| 15 | + | ||
| 16 | + TryUpdateConfigs() | ||
| 17 | +} | ||
| 18 | + | ||
| 19 | +// TryUpdateConfigs 尝试更新配置表 | ||
| 20 | +func TryUpdateConfigs() { | ||
| 21 | + LoadConfigs() | ||
| 22 | +} | ||
| 23 | + | ||
| 24 | +// LoadConfigs 读取mysql配置 | ||
| 25 | +func LoadConfigs() { | ||
| 26 | + for _, gameId := range constd.GameListCardHolder { | ||
| 27 | + LoadConfig(gameId) | ||
| 28 | + } | ||
| 29 | +} | ||
| 30 | + | ||
| 31 | +// TryUpdateConfig 尝试更新配置表 | ||
| 32 | +func TryUpdateConfig(gameId string) (config *CardActivityConfig, has bool) { | ||
| 33 | + LoadConfig(gameId) | ||
| 34 | + return GetConfig(gameId) | ||
| 35 | +} | ||
| 36 | + | ||
| 37 | +// LoadConfig 读取mysql配置 | ||
| 38 | +func LoadConfig(gameId string) { | ||
| 39 | + configTableName := constd.MYSQL_TABLE_S_CARDHOLDER_CONFIG + gameId | ||
| 40 | + // 找到当前开放的活动 | ||
| 41 | + configOpen := CardActivityUpdateConfig{Id: 0} | ||
| 42 | + { | ||
| 43 | + conf := make([]CardActivityUpdateConfig, 0) | ||
| 44 | + sql := fmt.Sprintf("select id,status,update_time from %s", configTableName) | ||
| 45 | + err := utmysql.FindSql(constd.MYSQL_MERGECONFIG, sql, &conf) | ||
| 46 | + if err != nil { | ||
| 47 | + lxalilog.Errors(err, sql, gameId) | ||
| 48 | + return | ||
| 49 | + } | ||
| 50 | + for _, config := range conf { | ||
| 51 | + if config.Status != 0 { | ||
| 52 | + configOpen = config | ||
| 53 | + continue | ||
| 54 | + } | ||
| 55 | + } | ||
| 56 | + fmt.Println(configOpen) | ||
| 57 | + } | ||
| 58 | + // 没有开放的活动 | ||
| 59 | + if configOpen.Id == 0 { | ||
| 60 | + return | ||
| 61 | + } | ||
| 62 | + // 判断是否需要更新 | ||
| 63 | + needUpdate := false | ||
| 64 | + configOld, has := GetConfig(gameId) | ||
| 65 | + if has { | ||
| 66 | + if configOpen.Id != configOld.Raw.Id || configOpen.UpdateTime != configOld.Raw.UpdateTime { | ||
| 67 | + needUpdate = true | ||
| 68 | + } | ||
| 69 | + } else { | ||
| 70 | + needUpdate = true | ||
| 71 | + } | ||
| 72 | + // 更新数据 | ||
| 73 | + if needUpdate { | ||
| 74 | + logs.Debug("__________________尝试更新活动条目ID:", configOpen.Id) | ||
| 75 | + confNew := CardActivityConfigRaw{} | ||
| 76 | + sql := fmt.Sprintf("select * from %s where id=%d limit 1", configTableName, configOpen.Id) | ||
| 77 | + _, err := utmysql.FindOneSql(constd.MYSQL_MERGECONFIG, sql, &confNew) | ||
| 78 | + if err != nil { | ||
| 79 | + lxalilog.Errors(err, sql, gameId, configOpen.Id) | ||
| 80 | + return | ||
| 81 | + } | ||
| 82 | + logs.Debug("__________________更新活动条目ID:", confNew.Id) | ||
| 83 | + ConfigDecode(gameId, &confNew) | ||
| 84 | + } | ||
| 85 | +} |
service/cardholder/config-registry.go
| 1 | package cardholder | 1 | package cardholder |
| 2 | 2 | ||
| 3 | import ( | 3 | import ( |
| 4 | - "apigame/service/constd" | ||
| 5 | "apigame/util/util-lx/lxalilog" | 4 | "apigame/util/util-lx/lxalilog" |
| 6 | "encoding/json" | 5 | "encoding/json" |
| 7 | "errors" | 6 | "errors" |
| @@ -10,41 +9,45 @@ import ( | @@ -10,41 +9,45 @@ import ( | ||
| 10 | ) | 9 | ) |
| 11 | 10 | ||
| 12 | var ( | 11 | var ( |
| 13 | - ConfigRaws CardActivityConfigRaw // 活动配置 原始数据 | ||
| 14 | - Config CardActivityConfig // 活动配置 分析后数据 | 12 | + Configs map[string]*CardActivityConfig // 配置列表 k=GameId v=配置 |
| 15 | ) | 13 | ) |
| 16 | 14 | ||
| 17 | func NewConfigs() { | 15 | func NewConfigs() { |
| 18 | - ConfigRaws = CardActivityConfigRaw{} | ||
| 19 | - Config = CardActivityConfig{} | 16 | + Configs = make(map[string]*CardActivityConfig) |
| 17 | +} | ||
| 18 | + | ||
| 19 | +func GetConfig(gameId string) (config *CardActivityConfig, has bool) { | ||
| 20 | + config, has = Configs[gameId] | ||
| 21 | + return | ||
| 20 | } | 22 | } |
| 21 | 23 | ||
| 22 | // ConfigDecode 解析配置原始数据 | 24 | // ConfigDecode 解析配置原始数据 |
| 23 | -func ConfigDecode() { | ||
| 24 | - Config = CardActivityConfig{ | ||
| 25 | - Raw: ConfigRaws, | ||
| 26 | - Id: ConfigRaws.Id, | 25 | +func ConfigDecode(gameId string, configRaw *CardActivityConfigRaw) { |
| 26 | + Config := &CardActivityConfig{ | ||
| 27 | + Raw: configRaw, | ||
| 28 | + GameId: gameId, | ||
| 29 | + Id: configRaw.Id, | ||
| 27 | Awards: make(map[string]string), | 30 | Awards: make(map[string]string), |
| 28 | AlbumConfig: make(map[string]AlbumConfig), | 31 | AlbumConfig: make(map[string]AlbumConfig), |
| 29 | CardConfig: make(map[int]CardConfig), | 32 | CardConfig: make(map[int]CardConfig), |
| 30 | - CardholderConfig: make(map[string]CardholderConfig), | 33 | + CardholderConfig: make(map[string]OpenCardholderConfig), |
| 31 | NormalCardStarConfig: make(map[string]NormalCardStarConfig), | 34 | NormalCardStarConfig: make(map[string]NormalCardStarConfig), |
| 32 | CardSequenceConfig: make(map[string]CardSequenceConfig), | 35 | CardSequenceConfig: make(map[string]CardSequenceConfig), |
| 33 | } | 36 | } |
| 34 | // 解析奖励 | 37 | // 解析奖励 |
| 35 | { | 38 | { |
| 36 | - err := json.Unmarshal([]byte(ConfigRaws.Awards), &Config.Awards) | 39 | + err := json.Unmarshal([]byte(configRaw.Awards), &Config.Awards) |
| 37 | if err != nil { | 40 | if err != nil { |
| 38 | - lxalilog.Errors(err, ConfigRaws.Awards, constd.GAME_ID_HT, ConfigRaws.Id) | 41 | + lxalilog.Errors(err, configRaw.Awards, gameId, configRaw.Id) |
| 39 | return | 42 | return |
| 40 | } | 43 | } |
| 41 | } | 44 | } |
| 42 | // 卡组配置 | 45 | // 卡组配置 |
| 43 | { | 46 | { |
| 44 | configs := make([]AlbumConfig, 0) | 47 | configs := make([]AlbumConfig, 0) |
| 45 | - err := json.Unmarshal([]byte(ConfigRaws.AlbumConfig), &configs) | 48 | + err := json.Unmarshal([]byte(configRaw.AlbumConfig), &configs) |
| 46 | if err != nil { | 49 | if err != nil { |
| 47 | - lxalilog.Errors(err, ConfigRaws.AlbumConfig, constd.GAME_ID_HT, ConfigRaws.Id) | 50 | + lxalilog.Errors(err, configRaw.AlbumConfig, gameId, configRaw.Id) |
| 48 | return | 51 | return |
| 49 | } | 52 | } |
| 50 | for _, i2 := range configs { | 53 | for _, i2 := range configs { |
| @@ -54,9 +57,9 @@ func ConfigDecode() { | @@ -54,9 +57,9 @@ func ConfigDecode() { | ||
| 54 | // 卡牌配置 | 57 | // 卡牌配置 |
| 55 | { | 58 | { |
| 56 | configs := make([]CardConfig, 0) | 59 | configs := make([]CardConfig, 0) |
| 57 | - err := json.Unmarshal([]byte(ConfigRaws.CardConfig), &configs) | 60 | + err := json.Unmarshal([]byte(configRaw.CardConfig), &configs) |
| 58 | if err != nil { | 61 | if err != nil { |
| 59 | - lxalilog.Errors(err, ConfigRaws.CardConfig, constd.GAME_ID_HT, ConfigRaws.Id) | 62 | + lxalilog.Errors(err, configRaw.CardConfig, gameId, configRaw.Id) |
| 60 | return | 63 | return |
| 61 | } | 64 | } |
| 62 | for _, i2 := range configs { | 65 | for _, i2 := range configs { |
| @@ -65,10 +68,10 @@ func ConfigDecode() { | @@ -65,10 +68,10 @@ func ConfigDecode() { | ||
| 65 | } | 68 | } |
| 66 | // 卡包开卡规则 | 69 | // 卡包开卡规则 |
| 67 | { | 70 | { |
| 68 | - configs := make([]CardholderConfig, 0) | ||
| 69 | - err := json.Unmarshal([]byte(ConfigRaws.CardHolderConfig), &configs) | 71 | + configs := make([]OpenCardholderConfig, 0) |
| 72 | + err := json.Unmarshal([]byte(configRaw.CardHolderConfig), &configs) | ||
| 70 | if err != nil { | 73 | if err != nil { |
| 71 | - lxalilog.Errors(err, ConfigRaws.CardHolderConfig, constd.GAME_ID_HT, ConfigRaws.Id) | 74 | + lxalilog.Errors(err, configRaw.CardHolderConfig, gameId, configRaw.Id) |
| 72 | return | 75 | return |
| 73 | } | 76 | } |
| 74 | for _, i2 := range configs { | 77 | for _, i2 := range configs { |
| @@ -78,9 +81,9 @@ func ConfigDecode() { | @@ -78,9 +81,9 @@ func ConfigDecode() { | ||
| 78 | // 卡片星级配置 | 81 | // 卡片星级配置 |
| 79 | { | 82 | { |
| 80 | configs := make([]NormalCardStarConfig, 0) | 83 | configs := make([]NormalCardStarConfig, 0) |
| 81 | - err := json.Unmarshal([]byte(ConfigRaws.NormalCardStarSequence), &configs) | 84 | + err := json.Unmarshal([]byte(configRaw.NormalCardStarSequence), &configs) |
| 82 | if err != nil { | 85 | if err != nil { |
| 83 | - lxalilog.Errors(err, ConfigRaws.NormalCardStarSequence, constd.GAME_ID_HT, ConfigRaws.Id) | 86 | + lxalilog.Errors(err, configRaw.NormalCardStarSequence, gameId, configRaw.Id) |
| 84 | return | 87 | return |
| 85 | } | 88 | } |
| 86 | for _, i2 := range configs { | 89 | for _, i2 := range configs { |
| @@ -92,9 +95,9 @@ func ConfigDecode() { | @@ -92,9 +95,9 @@ func ConfigDecode() { | ||
| 92 | // 卡片星级对应卡牌配置 | 95 | // 卡片星级对应卡牌配置 |
| 93 | { | 96 | { |
| 94 | configs := make([]CardSequenceConfig, 0) | 97 | configs := make([]CardSequenceConfig, 0) |
| 95 | - err := json.Unmarshal([]byte(ConfigRaws.CardSequenceConfig), &configs) | 98 | + err := json.Unmarshal([]byte(configRaw.CardSequenceConfig), &configs) |
| 96 | if err != nil { | 99 | if err != nil { |
| 97 | - lxalilog.Errors(err, ConfigRaws.CardSequenceConfig, constd.GAME_ID_HT, ConfigRaws.Id) | 100 | + lxalilog.Errors(err, configRaw.CardSequenceConfig, gameId, configRaw.Id) |
| 98 | return | 101 | return |
| 99 | } | 102 | } |
| 100 | for _, i2 := range configs { | 103 | for _, i2 := range configs { |
| @@ -103,6 +106,7 @@ func ConfigDecode() { | @@ -103,6 +106,7 @@ func ConfigDecode() { | ||
| 103 | Config.CardSequenceConfig[combineId] = i2 | 106 | Config.CardSequenceConfig[combineId] = i2 |
| 104 | } | 107 | } |
| 105 | } | 108 | } |
| 109 | + Configs[gameId] = Config | ||
| 106 | } | 110 | } |
| 107 | 111 | ||
| 108 | // CombineIdSequenceIdCohort 组合ID k=ID_用户序列_用户分组 | 112 | // CombineIdSequenceIdCohort 组合ID k=ID_用户序列_用户分组 |
| @@ -111,9 +115,9 @@ func CombineIdSequenceIdCohort(id, sequenceId, cohort string) string { | @@ -111,9 +115,9 @@ func CombineIdSequenceIdCohort(id, sequenceId, cohort string) string { | ||
| 111 | } | 115 | } |
| 112 | 116 | ||
| 113 | // FindNormalCardStarConfig 查找配置 非保底卡星级ID | 117 | // FindNormalCardStarConfig 查找配置 非保底卡星级ID |
| 114 | -func FindNormalCardStarConfig(id, sequenceId, cohort string) (conf NormalCardStarConfig, has bool) { | 118 | +func (c *CardActivityConfig) FindNormalCardStarConfig(id, sequenceId, cohort string) (conf NormalCardStarConfig, has bool) { |
| 115 | combineId := CombineIdSequenceIdCohort(id, sequenceId, cohort) | 119 | combineId := CombineIdSequenceIdCohort(id, sequenceId, cohort) |
| 116 | - conf, has = Config.NormalCardStarConfig[combineId] | 120 | + conf, has = c.NormalCardStarConfig[combineId] |
| 117 | if !has { | 121 | if !has { |
| 118 | lxalilog.Errors(errors.New("ht_cardholder NormalCardStarConfig error"), id, sequenceId, cohort) | 122 | lxalilog.Errors(errors.New("ht_cardholder NormalCardStarConfig error"), id, sequenceId, cohort) |
| 119 | } | 123 | } |
| @@ -121,9 +125,9 @@ func FindNormalCardStarConfig(id, sequenceId, cohort string) (conf NormalCardSta | @@ -121,9 +125,9 @@ func FindNormalCardStarConfig(id, sequenceId, cohort string) (conf NormalCardSta | ||
| 121 | } | 125 | } |
| 122 | 126 | ||
| 123 | // FindCardSequenceConfig 查找配置 星级ID对应的卡片 | 127 | // FindCardSequenceConfig 查找配置 星级ID对应的卡片 |
| 124 | -func FindCardSequenceConfig(id, sequenceId, cohort string) (conf CardSequenceConfig, has bool) { | 128 | +func (c *CardActivityConfig) FindCardSequenceConfig(id, sequenceId, cohort string) (conf CardSequenceConfig, has bool) { |
| 125 | combineId := CombineIdSequenceIdCohort(id, sequenceId, cohort) | 129 | combineId := CombineIdSequenceIdCohort(id, sequenceId, cohort) |
| 126 | - conf, has = Config.CardSequenceConfig[combineId] | 130 | + conf, has = c.CardSequenceConfig[combineId] |
| 127 | if !has { | 131 | if !has { |
| 128 | lxalilog.Errors(errors.New("ht_cardholder CardSequenceConfig error"), id, sequenceId, cohort) | 132 | lxalilog.Errors(errors.New("ht_cardholder CardSequenceConfig error"), id, sequenceId, cohort) |
| 129 | } | 133 | } |
service/cardholder/config.go
| 1 | package cardholder | 1 | package cardholder |
| 2 | 2 | ||
| 3 | -import "apigame/service/constd" | ||
| 4 | - | ||
| 5 | // CardActivityUpdateConfig 卡牌活动更新配置 | 3 | // CardActivityUpdateConfig 卡牌活动更新配置 |
| 6 | type CardActivityUpdateConfig struct { | 4 | type CardActivityUpdateConfig struct { |
| 7 | Id int64 // ID | 5 | Id int64 // ID |
| @@ -11,20 +9,17 @@ type CardActivityUpdateConfig struct { | @@ -11,20 +9,17 @@ type CardActivityUpdateConfig struct { | ||
| 11 | 9 | ||
| 12 | // CardActivityConfig 卡牌活动配置 分析后数据 | 10 | // CardActivityConfig 卡牌活动配置 分析后数据 |
| 13 | type CardActivityConfig struct { | 11 | type CardActivityConfig struct { |
| 14 | - Raw CardActivityConfigRaw | 12 | + Raw *CardActivityConfigRaw |
| 13 | + GameId string // 所属游戏ID | ||
| 15 | Id int64 // ID | 14 | Id int64 // ID |
| 16 | Awards map[string]string // 奖励配置 | 15 | Awards map[string]string // 奖励配置 |
| 17 | AlbumConfig map[string]AlbumConfig // 卡组配置 | 16 | AlbumConfig map[string]AlbumConfig // 卡组配置 |
| 18 | CardConfig map[int]CardConfig // 卡牌配置 | 17 | CardConfig map[int]CardConfig // 卡牌配置 |
| 19 | - CardholderConfig map[string]CardholderConfig // 卡包开卡规则 | 18 | + CardholderConfig map[string]OpenCardholderConfig // 卡包开卡规则 |
| 20 | NormalCardStarConfig map[string]NormalCardStarConfig // k=ID_用户序列_用户分组 卡片星级配置 | 19 | NormalCardStarConfig map[string]NormalCardStarConfig // k=ID_用户序列_用户分组 卡片星级配置 |
| 21 | CardSequenceConfig map[string]CardSequenceConfig // k=ID_用户序列_用户分组 卡片星级对应卡牌配置 | 20 | CardSequenceConfig map[string]CardSequenceConfig // k=ID_用户序列_用户分组 卡片星级对应卡牌配置 |
| 22 | } | 21 | } |
| 23 | 22 | ||
| 24 | -func (c *CardActivityConfig) TableName() string { | ||
| 25 | - return constd.MYSQL_TABLE_S_CARD_ACTIVITY + constd.GAME_ID_HT | ||
| 26 | -} | ||
| 27 | - | ||
| 28 | // CardActivityConfigRaw 卡牌活动配置 原始数据 | 23 | // CardActivityConfigRaw 卡牌活动配置 原始数据 |
| 29 | type CardActivityConfigRaw struct { | 24 | type CardActivityConfigRaw struct { |
| 30 | Id int64 // ID | 25 | Id int64 // ID |
| @@ -60,8 +55,8 @@ type CardConfig struct { | @@ -60,8 +55,8 @@ type CardConfig struct { | ||
| 60 | Star int `json:"star"` // 星级 | 55 | Star int `json:"star"` // 星级 |
| 61 | } | 56 | } |
| 62 | 57 | ||
| 63 | -// CardholderConfig 卡包开卡规则表 | ||
| 64 | -type CardholderConfig struct { | 58 | +// OpenCardholderConfig 卡包开卡规则表 |
| 59 | +type OpenCardholderConfig struct { | ||
| 65 | Id string `json:"id"` // ID | 60 | Id string `json:"id"` // ID |
| 66 | IsGoldCardholder int `json:"is_gold_card_holder"` // 是否是金卡包 | 61 | IsGoldCardholder int `json:"is_gold_card_holder"` // 是否是金卡包 |
| 67 | IsNew int `json:"is_new"` // 是否是新卡包 | 62 | IsNew int `json:"is_new"` // 是否是新卡包 |
service/cardholder/configs.go
| @@ -1,69 +0,0 @@ | @@ -1,69 +0,0 @@ | ||
| 1 | -package cardholder | ||
| 2 | - | ||
| 3 | -import ( | ||
| 4 | - "apigame/service/constd" | ||
| 5 | - "apigame/util/util-lx/lxalilog" | ||
| 6 | - "apigame/util/utmysql" | ||
| 7 | - "fmt" | ||
| 8 | - "github.com/astaxie/beego/logs" | ||
| 9 | -) | ||
| 10 | - | ||
| 11 | -// Init 初始化 | ||
| 12 | -func Init() { | ||
| 13 | - | ||
| 14 | - NewConfigs() | ||
| 15 | - | ||
| 16 | - TryUpdateConfigs() | ||
| 17 | - | ||
| 18 | - //DumpConfigs() | ||
| 19 | -} | ||
| 20 | - | ||
| 21 | -// TryUpdateConfigs 尝试更新配置表 | ||
| 22 | -func TryUpdateConfigs() { | ||
| 23 | - LoadConfigs() | ||
| 24 | -} | ||
| 25 | - | ||
| 26 | -// LoadConfigs 读取mysql配置 | ||
| 27 | -func LoadConfigs() { | ||
| 28 | - configTableName := new(CardActivityConfig).TableName() | ||
| 29 | - // 找到当前开放的活动 | ||
| 30 | - configOpen := CardActivityUpdateConfig{Id: 0} | ||
| 31 | - { | ||
| 32 | - conf := make([]CardActivityUpdateConfig, 0) | ||
| 33 | - sql := fmt.Sprintf("select id,status,update_time from %s", configTableName) | ||
| 34 | - err := utmysql.FindSql(constd.MYSQL_MERGECONFIG, sql, &conf) | ||
| 35 | - if err != nil { | ||
| 36 | - lxalilog.Errors(err, sql, constd.GAME_ID_HT) | ||
| 37 | - return | ||
| 38 | - } | ||
| 39 | - for _, config := range conf { | ||
| 40 | - if config.Status != 0 { | ||
| 41 | - configOpen = config | ||
| 42 | - continue | ||
| 43 | - } | ||
| 44 | - } | ||
| 45 | - fmt.Println(configOpen) | ||
| 46 | - } | ||
| 47 | - // 没有开放的活动 | ||
| 48 | - if configOpen.Id == 0 { | ||
| 49 | - return | ||
| 50 | - } | ||
| 51 | - // 更新数据 | ||
| 52 | - if configOpen.Id != Config.Raw.Id || configOpen.UpdateTime != Config.Raw.UpdateTime { | ||
| 53 | - logs.Debug("__________________尝试更新活动条目ID:", configOpen.Id) | ||
| 54 | - confNew := CardActivityConfigRaw{} | ||
| 55 | - sql := fmt.Sprintf("select * from %s where id=%d limit 1", configTableName, configOpen.Id) | ||
| 56 | - err := utmysql.FindOneSql(constd.MYSQL_MERGECONFIG, sql, &confNew) | ||
| 57 | - if err != nil { | ||
| 58 | - lxalilog.Errors(err, sql, constd.GAME_ID_HT, configOpen.Id) | ||
| 59 | - return | ||
| 60 | - } | ||
| 61 | - logs.Debug("__________________更新活动条目ID:", confNew.Id) | ||
| 62 | - ConfigRaws = confNew | ||
| 63 | - ConfigDecode() | ||
| 64 | - } | ||
| 65 | -} | ||
| 66 | - | ||
| 67 | -func DumpConfigs() { | ||
| 68 | - | ||
| 69 | -} |
service/cardholder/handle.go
| @@ -4,7 +4,6 @@ import ( | @@ -4,7 +4,6 @@ import ( | ||
| 4 | "apigame/dto" | 4 | "apigame/dto" |
| 5 | "apigame/models" | 5 | "apigame/models" |
| 6 | "apigame/service/constd" | 6 | "apigame/service/constd" |
| 7 | - game_record "apigame/service/game-record" | ||
| 8 | "apigame/util/utjson" | 7 | "apigame/util/utjson" |
| 9 | "apigame/util/uttype" | 8 | "apigame/util/uttype" |
| 10 | "strconv" | 9 | "strconv" |
| @@ -16,10 +15,14 @@ func HandleInfo(req *models.ReqCardHolderInfo) (code string, rsp models.RspCardH | @@ -16,10 +15,14 @@ func HandleInfo(req *models.ReqCardHolderInfo) (code string, rsp models.RspCardH | ||
| 16 | code = constd.RECODE_OK | 15 | code = constd.RECODE_OK |
| 17 | 16 | ||
| 18 | // 尝试更新配置 | 17 | // 尝试更新配置 |
| 19 | - TryUpdateConfigs() | 18 | + Config, hasConfig := TryUpdateConfig(req.GameID) |
| 19 | + if !hasConfig { | ||
| 20 | + code = constd.RECODE_MERGE_CARDHOLDER_NOTOPEN_ERROR | ||
| 21 | + return | ||
| 22 | + } | ||
| 20 | 23 | ||
| 21 | // 读取游戏数据 | 24 | // 读取游戏数据 |
| 22 | - gameData := LoadData(req.UID) | 25 | + gameData := LoadData(req.GameID, req.UID, Config.Id) |
| 23 | 26 | ||
| 24 | rsp.CardHolderInfo = gameData.GetInfo() | 27 | rsp.CardHolderInfo = gameData.GetInfo() |
| 25 | 28 | ||
| @@ -32,10 +35,14 @@ func HandleGetNew(req *models.ReqCardHolderGetNew) (code string, rsp models.RspC | @@ -32,10 +35,14 @@ func HandleGetNew(req *models.ReqCardHolderGetNew) (code string, rsp models.RspC | ||
| 32 | code = constd.RECODE_OK | 35 | code = constd.RECODE_OK |
| 33 | 36 | ||
| 34 | // 尝试更新配置 | 37 | // 尝试更新配置 |
| 35 | - TryUpdateConfigs() | 38 | + Config, hasConfig := TryUpdateConfig(req.GameID) |
| 39 | + if !hasConfig { | ||
| 40 | + code = constd.RECODE_MERGE_CARDHOLDER_NOTOPEN_ERROR | ||
| 41 | + return | ||
| 42 | + } | ||
| 36 | 43 | ||
| 37 | // 检查活动状态 | 44 | // 检查活动状态 |
| 38 | - code = CheckStatus() | 45 | + code = CheckStatus(Config) |
| 39 | if code != constd.RECODE_OK { | 46 | if code != constd.RECODE_OK { |
| 40 | return | 47 | return |
| 41 | } | 48 | } |
| @@ -52,21 +59,21 @@ func HandleGetNew(req *models.ReqCardHolderGetNew) (code string, rsp models.RspC | @@ -52,21 +59,21 @@ func HandleGetNew(req *models.ReqCardHolderGetNew) (code string, rsp models.RspC | ||
| 52 | } | 59 | } |
| 53 | 60 | ||
| 54 | // 读取游戏数据 | 61 | // 读取游戏数据 |
| 55 | - gameData := LoadData(req.UID) | 62 | + gameData := LoadData(req.GameID, req.UID, Config.Id) |
| 56 | // 检查游戏数据 轮次等 | 63 | // 检查游戏数据 轮次等 |
| 57 | - code = CheckGameData(gameData) | 64 | + code = CheckGameData(gameData, Config) |
| 58 | if code != constd.RECODE_OK { | 65 | if code != constd.RECODE_OK { |
| 59 | return | 66 | return |
| 60 | } | 67 | } |
| 61 | 68 | ||
| 62 | gameData.Details.Cardholder[req.Id] += req.Count | 69 | gameData.Details.Cardholder[req.Id] += req.Count |
| 63 | - SaveData(gameData) | 70 | + SaveData(req.GameID, gameData) |
| 64 | 71 | ||
| 65 | // 返回信息 | 72 | // 返回信息 |
| 66 | rsp.CardHolderInfo = gameData.GetInfo() | 73 | rsp.CardHolderInfo = gameData.GetInfo() |
| 67 | 74 | ||
| 68 | // 记录日志 | 75 | // 记录日志 |
| 69 | - game_record.Save(dto.NewCardHolderRecordGetNew(gameData.Uid, Config.Id, gameData.Details.Round, | 76 | + dto.SaveRecord(req.GameID, dto.NewCardHolderRecordGetNew(gameData.Uid, Config.Id, gameData.Details.Round, |
| 70 | req.Id, req.Count)) | 77 | req.Id, req.Count)) |
| 71 | 78 | ||
| 72 | return | 79 | return |
| @@ -78,10 +85,14 @@ func HandleOpen(req *models.ReqCardHolderOpen) (code string, rsp models.RspCardH | @@ -78,10 +85,14 @@ func HandleOpen(req *models.ReqCardHolderOpen) (code string, rsp models.RspCardH | ||
| 78 | code = constd.RECODE_OK | 85 | code = constd.RECODE_OK |
| 79 | 86 | ||
| 80 | // 尝试更新配置 | 87 | // 尝试更新配置 |
| 81 | - TryUpdateConfigs() | 88 | + Config, hasConfig := TryUpdateConfig(req.GameID) |
| 89 | + if !hasConfig { | ||
| 90 | + code = constd.RECODE_MERGE_CARDHOLDER_NOTOPEN_ERROR | ||
| 91 | + return | ||
| 92 | + } | ||
| 82 | 93 | ||
| 83 | // 检查活动状态 | 94 | // 检查活动状态 |
| 84 | - code = CheckStatus() | 95 | + code = CheckStatus(Config) |
| 85 | if code != constd.RECODE_OK { | 96 | if code != constd.RECODE_OK { |
| 86 | return | 97 | return |
| 87 | } | 98 | } |
| @@ -93,9 +104,9 @@ func HandleOpen(req *models.ReqCardHolderOpen) (code string, rsp models.RspCardH | @@ -93,9 +104,9 @@ func HandleOpen(req *models.ReqCardHolderOpen) (code string, rsp models.RspCardH | ||
| 93 | } | 104 | } |
| 94 | 105 | ||
| 95 | // 读取游戏数据 | 106 | // 读取游戏数据 |
| 96 | - gameData := LoadData(req.UID) | 107 | + gameData := LoadData(req.GameID, req.UID, Config.Id) |
| 97 | // 检查游戏数据 轮次等 | 108 | // 检查游戏数据 轮次等 |
| 98 | - code = CheckGameData(gameData) | 109 | + code = CheckGameData(gameData, Config) |
| 99 | if code != constd.RECODE_OK { | 110 | if code != constd.RECODE_OK { |
| 100 | return | 111 | return |
| 101 | } | 112 | } |
| @@ -113,14 +124,14 @@ func HandleOpen(req *models.ReqCardHolderOpen) (code string, rsp models.RspCardH | @@ -113,14 +124,14 @@ func HandleOpen(req *models.ReqCardHolderOpen) (code string, rsp models.RspCardH | ||
| 113 | //logs.Debug("wjwdbg 用户分组IDcohort:", cohort) | 124 | //logs.Debug("wjwdbg 用户分组IDcohort:", cohort) |
| 114 | if confCardholder.IsNew != 0 { | 125 | if confCardholder.IsNew != 0 { |
| 115 | // 如果是新卡包 按顺序查找数目最少的一张卡抽取 | 126 | // 如果是新卡包 按顺序查找数目最少的一张卡抽取 |
| 116 | - cardId := GetNewCard(gameData) | 127 | + cardId := GetNewCard(gameData, Config) |
| 117 | //logs.Debug("wjwdbg 抽取新卡ID:", cardId) | 128 | //logs.Debug("wjwdbg 抽取新卡ID:", cardId) |
| 118 | // 增加卡牌 | 129 | // 增加卡牌 |
| 119 | gameData.Details.Cards[cardId] += 1 | 130 | gameData.Details.Cards[cardId] += 1 |
| 120 | rsp.NewCards = append(rsp.NewCards, cardId) | 131 | rsp.NewCards = append(rsp.NewCards, cardId) |
| 121 | } else { | 132 | } else { |
| 122 | getCardFunc := func(cardConfigId string) { | 133 | getCardFunc := func(cardConfigId string) { |
| 123 | - confCardSequence, hasCardSequence := FindCardSequenceConfig(cardConfigId, sequenceId, cohort) | 134 | + confCardSequence, hasCardSequence := Config.FindCardSequenceConfig(cardConfigId, sequenceId, cohort) |
| 124 | if hasCardSequence { | 135 | if hasCardSequence { |
| 125 | combineId := CombineIdSequenceIdCohort(cardConfigId, sequenceId, cohort) | 136 | combineId := CombineIdSequenceIdCohort(cardConfigId, sequenceId, cohort) |
| 126 | scale := gameData.Details.CardSequenceScales[combineId] | 137 | scale := gameData.Details.CardSequenceScales[combineId] |
| @@ -143,7 +154,7 @@ func HandleOpen(req *models.ReqCardHolderOpen) (code string, rsp models.RspCardH | @@ -143,7 +154,7 @@ func HandleOpen(req *models.ReqCardHolderOpen) (code string, rsp models.RspCardH | ||
| 143 | // 非保底卡 | 154 | // 非保底卡 |
| 144 | if confCardholder.NormalCardNumber > 0 { | 155 | if confCardholder.NormalCardNumber > 0 { |
| 145 | count := confCardholder.NormalCardNumber | 156 | count := confCardholder.NormalCardNumber |
| 146 | - confNormalCardStar, hasNormalCardStar := FindNormalCardStarConfig(confCardholder.MinimumGuaranteeCardId, sequenceId, cohort) | 157 | + confNormalCardStar, hasNormalCardStar := Config.FindNormalCardStarConfig(confCardholder.MinimumGuaranteeCardId, sequenceId, cohort) |
| 147 | if hasNormalCardStar { | 158 | if hasNormalCardStar { |
| 148 | combineIdStar := CombineIdSequenceIdCohort(confCardholder.MinimumGuaranteeCardId, sequenceId, cohort) | 159 | combineIdStar := CombineIdSequenceIdCohort(confCardholder.MinimumGuaranteeCardId, sequenceId, cohort) |
| 149 | scaleStar := gameData.Details.StarSequenceScales[combineIdStar] | 160 | scaleStar := gameData.Details.StarSequenceScales[combineIdStar] |
| @@ -164,10 +175,10 @@ func HandleOpen(req *models.ReqCardHolderOpen) (code string, rsp models.RspCardH | @@ -164,10 +175,10 @@ func HandleOpen(req *models.ReqCardHolderOpen) (code string, rsp models.RspCardH | ||
| 164 | gameData.Details.Cardholder[req.Id] = countOld - 1 | 175 | gameData.Details.Cardholder[req.Id] = countOld - 1 |
| 165 | 176 | ||
| 166 | // 存档 | 177 | // 存档 |
| 167 | - SaveData(gameData) | 178 | + SaveData(req.GameID, gameData) |
| 168 | 179 | ||
| 169 | // 记录日志 | 180 | // 记录日志 |
| 170 | - game_record.Save(dto.NewCardHolderRecordOpen(gameData.Uid, Config.Id, gameData.Details.Round, | 181 | + dto.SaveRecord(req.GameID, dto.NewCardHolderRecordOpen(gameData.Uid, Config.Id, gameData.Details.Round, |
| 171 | req.Id, utjson.JsonString(rsp.NewCards))) | 182 | req.Id, utjson.JsonString(rsp.NewCards))) |
| 172 | 183 | ||
| 173 | //logs.Debug("wjwdbg 获取卡牌列表:", rsp.NewCards) | 184 | //logs.Debug("wjwdbg 获取卡牌列表:", rsp.NewCards) |
| @@ -186,10 +197,14 @@ func HandleGetRewardAlbum(req *models.ReqCardHolderGetRewardAlbum) (code string, | @@ -186,10 +197,14 @@ func HandleGetRewardAlbum(req *models.ReqCardHolderGetRewardAlbum) (code string, | ||
| 186 | code = constd.RECODE_OK | 197 | code = constd.RECODE_OK |
| 187 | 198 | ||
| 188 | // 尝试更新配置 | 199 | // 尝试更新配置 |
| 189 | - TryUpdateConfigs() | 200 | + Config, hasConfig := TryUpdateConfig(req.GameID) |
| 201 | + if !hasConfig { | ||
| 202 | + code = constd.RECODE_MERGE_CARDHOLDER_NOTOPEN_ERROR | ||
| 203 | + return | ||
| 204 | + } | ||
| 190 | 205 | ||
| 191 | // 检查活动状态 | 206 | // 检查活动状态 |
| 192 | - code = CheckStatus() | 207 | + code = CheckStatus(Config) |
| 193 | if code != constd.RECODE_OK { | 208 | if code != constd.RECODE_OK { |
| 194 | return | 209 | return |
| 195 | } | 210 | } |
| @@ -202,9 +217,9 @@ func HandleGetRewardAlbum(req *models.ReqCardHolderGetRewardAlbum) (code string, | @@ -202,9 +217,9 @@ func HandleGetRewardAlbum(req *models.ReqCardHolderGetRewardAlbum) (code string, | ||
| 202 | } | 217 | } |
| 203 | 218 | ||
| 204 | // 读取游戏数据 | 219 | // 读取游戏数据 |
| 205 | - gameData := LoadData(req.UID) | 220 | + gameData := LoadData(req.GameID, req.UID, Config.Id) |
| 206 | // 检查游戏数据 轮次等 | 221 | // 检查游戏数据 轮次等 |
| 207 | - code = CheckGameData(gameData) | 222 | + code = CheckGameData(gameData, Config) |
| 208 | if code != constd.RECODE_OK { | 223 | if code != constd.RECODE_OK { |
| 209 | return | 224 | return |
| 210 | } | 225 | } |
| @@ -227,7 +242,7 @@ func HandleGetRewardAlbum(req *models.ReqCardHolderGetRewardAlbum) (code string, | @@ -227,7 +242,7 @@ func HandleGetRewardAlbum(req *models.ReqCardHolderGetRewardAlbum) (code string, | ||
| 227 | } | 242 | } |
| 228 | 243 | ||
| 229 | gameData.Details.Album[albumId] += 1 | 244 | gameData.Details.Album[albumId] += 1 |
| 230 | - SaveData(gameData) | 245 | + SaveData(req.GameID, gameData) |
| 231 | 246 | ||
| 232 | // 当前轮次 | 247 | // 当前轮次 |
| 233 | round := gameData.Details.Round | 248 | round := gameData.Details.Round |
| @@ -238,7 +253,7 @@ func HandleGetRewardAlbum(req *models.ReqCardHolderGetRewardAlbum) (code string, | @@ -238,7 +253,7 @@ func HandleGetRewardAlbum(req *models.ReqCardHolderGetRewardAlbum) (code string, | ||
| 238 | rsp.CardHolderInfo = gameData.GetInfo() | 253 | rsp.CardHolderInfo = gameData.GetInfo() |
| 239 | 254 | ||
| 240 | // 记录日志 | 255 | // 记录日志 |
| 241 | - game_record.Save(dto.NewCardHolderRecordRewardAlbum(gameData.Uid, Config.Id, gameData.Details.Round, | 256 | + dto.SaveRecord(req.GameID, dto.NewCardHolderRecordRewardAlbum(gameData.Uid, Config.Id, gameData.Details.Round, |
| 242 | req.Id, rsp.Award)) | 257 | req.Id, rsp.Award)) |
| 243 | 258 | ||
| 244 | return | 259 | return |
| @@ -250,18 +265,22 @@ func HandleGetRewardRound(req *models.ReqCardHolderGetRewardRound) (code string, | @@ -250,18 +265,22 @@ func HandleGetRewardRound(req *models.ReqCardHolderGetRewardRound) (code string, | ||
| 250 | code = constd.RECODE_OK | 265 | code = constd.RECODE_OK |
| 251 | 266 | ||
| 252 | // 尝试更新配置 | 267 | // 尝试更新配置 |
| 253 | - TryUpdateConfigs() | 268 | + Config, hasConfig := TryUpdateConfig(req.GameID) |
| 269 | + if !hasConfig { | ||
| 270 | + code = constd.RECODE_MERGE_CARDHOLDER_NOTOPEN_ERROR | ||
| 271 | + return | ||
| 272 | + } | ||
| 254 | 273 | ||
| 255 | // 检查活动状态 | 274 | // 检查活动状态 |
| 256 | - code = CheckStatus() | 275 | + code = CheckStatus(Config) |
| 257 | if code != constd.RECODE_OK { | 276 | if code != constd.RECODE_OK { |
| 258 | return | 277 | return |
| 259 | } | 278 | } |
| 260 | 279 | ||
| 261 | // 读取游戏数据 | 280 | // 读取游戏数据 |
| 262 | - gameData := LoadData(req.UID) | 281 | + gameData := LoadData(req.GameID, req.UID, Config.Id) |
| 263 | // 检查游戏数据 轮次等 | 282 | // 检查游戏数据 轮次等 |
| 264 | - code = CheckGameData(gameData) | 283 | + code = CheckGameData(gameData, Config) |
| 265 | if code != constd.RECODE_OK { | 284 | if code != constd.RECODE_OK { |
| 266 | return | 285 | return |
| 267 | } | 286 | } |
| @@ -282,12 +301,12 @@ func HandleGetRewardRound(req *models.ReqCardHolderGetRewardRound) (code string, | @@ -282,12 +301,12 @@ func HandleGetRewardRound(req *models.ReqCardHolderGetRewardRound) (code string, | ||
| 282 | rsp.Award = Config.Awards[uttype.IntToString(round)] | 301 | rsp.Award = Config.Awards[uttype.IntToString(round)] |
| 283 | 302 | ||
| 284 | // 记录日志 | 303 | // 记录日志 |
| 285 | - game_record.Save(dto.NewCardHolderRecordRewardRound(gameData.Uid, Config.Id, gameData.Details.Round, | 304 | + dto.SaveRecord(req.GameID, dto.NewCardHolderRecordRewardRound(gameData.Uid, Config.Id, gameData.Details.Round, |
| 286 | rsp.Award)) | 305 | rsp.Award)) |
| 287 | 306 | ||
| 288 | // 处理轮次完成 | 307 | // 处理轮次完成 |
| 289 | HandleNextRound(gameData) | 308 | HandleNextRound(gameData) |
| 290 | - SaveData(gameData) | 309 | + SaveData(req.GameID, gameData) |
| 291 | 310 | ||
| 292 | // 返回信息 | 311 | // 返回信息 |
| 293 | rsp.CardHolderInfo = gameData.GetInfo() | 312 | rsp.CardHolderInfo = gameData.GetInfo() |
service/cardholder/logic.go
| @@ -6,72 +6,62 @@ import ( | @@ -6,72 +6,62 @@ import ( | ||
| 6 | "apigame/util/util-lx/lxalilog" | 6 | "apigame/util/util-lx/lxalilog" |
| 7 | "apigame/util/util-lx/lxtime" | 7 | "apigame/util/util-lx/lxtime" |
| 8 | "apigame/util/uttype" | 8 | "apigame/util/uttype" |
| 9 | - "github.com/astaxie/beego/orm" | ||
| 10 | ) | 9 | ) |
| 11 | 10 | ||
| 12 | // SaveData 存储数据 | 11 | // SaveData 存储数据 |
| 13 | -func SaveData(d *dto.CardHolderData) { | 12 | +func SaveData(gameId string, d *dto.CardHolderData) { |
| 14 | d.UpdateTime = lxtime.NowUninx() | 13 | d.UpdateTime = lxtime.NowUninx() |
| 15 | d.Encode() | 14 | d.Encode() |
| 16 | - o := orm.NewOrm() | ||
| 17 | - o.Using(constd.MYSQL_DEFAULT) | ||
| 18 | - if _, err := o.InsertOrUpdate(d); err != nil { | ||
| 19 | - lxalilog.Errors(err, "ht_cardholder SaveData Error", d.Uid) | ||
| 20 | - } | 15 | + |
| 16 | + dto.SavePlayerData(gameId, d.Uid, d) | ||
| 21 | } | 17 | } |
| 22 | 18 | ||
| 23 | -func _LoadData(uid int64) (d *dto.CardHolderData) { | 19 | +func _LoadData(gameId string, uid int64) (d *dto.CardHolderData) { |
| 24 | d = dto.NewCardHolderData(uid) | 20 | d = dto.NewCardHolderData(uid) |
| 25 | - o := orm.NewOrm() | ||
| 26 | - o.Using(constd.MYSQL_DEFAULT) | ||
| 27 | - qs := o.QueryTable(d) | ||
| 28 | - qs = qs.Filter("uid", uid) | ||
| 29 | - count, err := qs.Count() | ||
| 30 | - if count == 0 { | ||
| 31 | - d.CreateTime = lxtime.NowUninx() | ||
| 32 | - } else { | ||
| 33 | - err = qs.One(d) | ||
| 34 | - if err != nil { | ||
| 35 | - lxalilog.Errors(err, "ht_cardholder LoadData Error", uid) | ||
| 36 | - } else { | ||
| 37 | - d.Details = dto.NewCardHolderDataDetails() | ||
| 38 | - d.Decode() | ||
| 39 | - } | 21 | + |
| 22 | + has, err := dto.LoadPlayerData(gameId, uid, d) | ||
| 23 | + if err != nil { | ||
| 24 | + lxalilog.Errors(err, "cardholder._LoadData", gameId, uid) | ||
| 25 | + return | ||
| 26 | + } | ||
| 27 | + // 解析 | ||
| 28 | + if has { | ||
| 29 | + d.Decode() | ||
| 40 | } | 30 | } |
| 41 | return | 31 | return |
| 42 | } | 32 | } |
| 43 | 33 | ||
| 44 | // LoadData 获取数据 外部接口 | 34 | // LoadData 获取数据 外部接口 |
| 45 | -func LoadData(uid int64) (d *dto.CardHolderData) { | ||
| 46 | - d = _LoadData(uid) | 35 | +func LoadData(gameId string, uid int64, configId int64) (d *dto.CardHolderData) { |
| 36 | + d = _LoadData(gameId, uid) | ||
| 47 | // 如果当前有上线活动(活动ID不为0),且活动ID和玩家数据不同,说明活动已切换 需更新 | 37 | // 如果当前有上线活动(活动ID不为0),且活动ID和玩家数据不同,说明活动已切换 需更新 |
| 48 | - if Config.Id != 0 && | ||
| 49 | - Config.Id != d.ActivityId { | ||
| 50 | - d.ActivityId = Config.Id | 38 | + if configId != 0 && |
| 39 | + configId != d.ActivityId { | ||
| 40 | + d.ActivityId = configId | ||
| 51 | d.Details = dto.NewCardHolderDataDetails() | 41 | d.Details = dto.NewCardHolderDataDetails() |
| 52 | - SaveData(d) | 42 | + SaveData(gameId, d) |
| 53 | } | 43 | } |
| 54 | return | 44 | return |
| 55 | } | 45 | } |
| 56 | 46 | ||
| 57 | // CheckStatus 判断活动是否开启 | 47 | // CheckStatus 判断活动是否开启 |
| 58 | -func CheckStatus() string { | 48 | +func CheckStatus(conf *CardActivityConfig) string { |
| 59 | sec := lxtime.NowUninx() | 49 | sec := lxtime.NowUninx() |
| 60 | - if Config.Id == 0 { | 50 | + if conf.Id == 0 { |
| 61 | return constd.RECODE_MERGE_CARDHOLDER_NOTOPEN1_ERROR | 51 | return constd.RECODE_MERGE_CARDHOLDER_NOTOPEN1_ERROR |
| 62 | } | 52 | } |
| 63 | - if sec < Config.Raw.StartTime { | 53 | + if sec < conf.Raw.StartTime { |
| 64 | return constd.RECODE_MERGE_CARDHOLDER_NOTOPEN1_ERROR | 54 | return constd.RECODE_MERGE_CARDHOLDER_NOTOPEN1_ERROR |
| 65 | } | 55 | } |
| 66 | - if sec > Config.Raw.EndTime { | 56 | + if sec > conf.Raw.EndTime { |
| 67 | return constd.RECODE_MERGE_CARDHOLDER_NOTOPEN2_ERROR | 57 | return constd.RECODE_MERGE_CARDHOLDER_NOTOPEN2_ERROR |
| 68 | } | 58 | } |
| 69 | return constd.RECODE_OK | 59 | return constd.RECODE_OK |
| 70 | } | 60 | } |
| 71 | 61 | ||
| 72 | // CheckGameData 检查游戏数据 轮次等 | 62 | // CheckGameData 检查游戏数据 轮次等 |
| 73 | -func CheckGameData(d *dto.CardHolderData) string { | ||
| 74 | - if d.Details.Round > Config.Raw.Round { | 63 | +func CheckGameData(d *dto.CardHolderData, conf *CardActivityConfig) string { |
| 64 | + if d.Details.Round > conf.Raw.Round { | ||
| 75 | return constd.RECODE_MERGE_CARDHOLDER_ROUNDFINISH_ERROR | 65 | return constd.RECODE_MERGE_CARDHOLDER_ROUNDFINISH_ERROR |
| 76 | } | 66 | } |
| 77 | return constd.RECODE_OK | 67 | return constd.RECODE_OK |
| @@ -113,13 +103,13 @@ func GetListFromArray(array []string, scale, count int) []string { | @@ -113,13 +103,13 @@ func GetListFromArray(array []string, scale, count int) []string { | ||
| 113 | } | 103 | } |
| 114 | 104 | ||
| 115 | // GetNewCard 按顺序查找数目最少的一张卡抽取 | 105 | // GetNewCard 按顺序查找数目最少的一张卡抽取 |
| 116 | -func GetNewCard(gameData *dto.CardHolderData) int { | ||
| 117 | - if len(Config.CardConfig) < 1 { | 106 | +func GetNewCard(gameData *dto.CardHolderData, conf *CardActivityConfig) int { |
| 107 | + if len(conf.CardConfig) < 1 { | ||
| 118 | return 0 | 108 | return 0 |
| 119 | } | 109 | } |
| 120 | rate := int64(100000000) | 110 | rate := int64(100000000) |
| 121 | list := make([]int64, 0) | 111 | list := make([]int64, 0) |
| 122 | - for id, _ := range Config.CardConfig { | 112 | + for id, _ := range conf.CardConfig { |
| 123 | count, _ := gameData.Details.Cards[id] | 113 | count, _ := gameData.Details.Cards[id] |
| 124 | index := int64(count)*rate + int64(id) | 114 | index := int64(count)*rate + int64(id) |
| 125 | list = append(list, index) | 115 | list = append(list, index) |
| @@ -0,0 +1,127 @@ | @@ -0,0 +1,127 @@ | ||
| 1 | +package constd | ||
| 2 | + | ||
| 3 | +import ( | ||
| 4 | + "apigame/util/util-lx/lxalilog" | ||
| 5 | + "apigame/util/util-lx/lxtime" | ||
| 6 | +) | ||
| 7 | + | ||
| 8 | +const ( | ||
| 9 | + RECODE_OK = "0" | ||
| 10 | + RECODE_FALIED = "1000" | ||
| 11 | + RECODE_UNKNOWERR = "1001" | ||
| 12 | + RECODE_PARAMERROR = "1002" | ||
| 13 | + RECODE_SIGNERROR = "1003" | ||
| 14 | + RECODE_DATA_BUCUNZIA_ERROR = "1004" | ||
| 15 | + RECODE_PARAMDECODE_ERROR = "1005" | ||
| 16 | + RECODE_DATANOEXIST_ERROR = "1006" | ||
| 17 | + RECODE_CREATEUID_ERROR = "1007" | ||
| 18 | + RECODE_LOGINCHECK_ERROR = "1008" | ||
| 19 | + RECODE_WEIXINAZIFU_ERROR = "1009" | ||
| 20 | + RECODE_SDKMEMBER_ERROR = "1010" | ||
| 21 | + RECODE_CAOZUOPINFAN_ERROR = "1011" | ||
| 22 | + RECODE_REQUESTXIANLIU_ERROR = "1110" | ||
| 23 | + RECODE_REQUESTTIME_ERROR = "1111" | ||
| 24 | + | ||
| 25 | + RECODE_MERGE_CONFIG_ERROR = "2000" | ||
| 26 | + RECODE_MERGE_CFLQ_ERROR = "2001" | ||
| 27 | + RECODE_MERGE_AZSXLQ_ERROR = "2002" | ||
| 28 | + RECODE_MERGE_QXGMSP_ERROR = "2003" | ||
| 29 | + RECODE_MERGE_MEMBERSHIP_QXCZZK_ERROR = "2010" | ||
| 30 | + RECODE_MERGE_MEMBERSHIP_QXCZYK_ERROR = "2011" | ||
| 31 | + RECODE_MERGE_MEMBERSHIP_QXCZ_ERROR = "2012" | ||
| 32 | + RECODE_MERGE_MEMBERSHIP_BNCFLQ_ERROR = "2013" | ||
| 33 | + | ||
| 34 | + RECODE_MERGE_NOVICE_QXCZ_ERROR = "2021" | ||
| 35 | + RECODE_MERGE_NOVICE_BNCFLQ_ERROR = "2032" | ||
| 36 | + RECODE_MERGE_NOVICE_MYDDLQTJ_ERROR = "2033" | ||
| 37 | + RECODE_MERGE_HUODONGWEIKAISHI_ERROR = "2040" | ||
| 38 | + RECODE_MERGE_HUODONGYIJIESHU_ERROR = "2041" | ||
| 39 | + RECODE_MERGE_CCZDXX_ERROR = "2042" | ||
| 40 | + RECODE_MERGE_TONGXINGZHENGBUCUNZAI_ERROR = "2051" | ||
| 41 | + RECODE_MERGE_QINGXIANGMTXZ_ERROR = "2052" | ||
| 42 | + | ||
| 43 | + RECODE_MERGE_CARDHOLDER_NOTOPEN_ERROR = "2100" | ||
| 44 | + RECODE_MERGE_CARDHOLDER_NOTOPEN1_ERROR = "2101" | ||
| 45 | + RECODE_MERGE_CARDHOLDER_NOTOPEN2_ERROR = "2102" | ||
| 46 | + RECODE_MERGE_CARDHOLDER_ROUNDFINISH_ERROR = "2103" | ||
| 47 | + RECODE_MERGE_CARDHOLDER_CARDHOLDERID_ERROR = "2104" | ||
| 48 | + RECODE_MERGE_CARDHOLDER_COUNTILLEGAL_ERROR = "2105" | ||
| 49 | + RECODE_MERGE_CARDHOLDER_CARDHOLDER_NOTENOUGH_ERROR = "2106" | ||
| 50 | + RECODE_MERGE_CARDHOLDER_ALBUMID_ERROR = "2107" | ||
| 51 | + RECODE_MERGE_CARDHOLDER_ALBUM_HASGOT_ERROR = "2108" | ||
| 52 | + RECODE_MERGE_CARDHOLDER_ALBUM_NOTFINISH_ERROR = "2109" | ||
| 53 | + RECODE_MERGE_CARDHOLDER_ROUND_NOTFINISH_ERROR = "2110" | ||
| 54 | +) | ||
| 55 | + | ||
| 56 | +var recodeText = map[string]string{ | ||
| 57 | + RECODE_OK: "成功", | ||
| 58 | + RECODE_FALIED: "操作失败", | ||
| 59 | + RECODE_UNKNOWERR: "未知错误", | ||
| 60 | + RECODE_PARAMERROR: "参数错误", | ||
| 61 | + RECODE_SIGNERROR: "签名错误", | ||
| 62 | + RECODE_DATA_BUCUNZIA_ERROR: "数据不存在", | ||
| 63 | + RECODE_PARAMDECODE_ERROR: "解析参数失败,请检查参数合法性", | ||
| 64 | + RECODE_DATANOEXIST_ERROR: "数据不存在", | ||
| 65 | + RECODE_CREATEUID_ERROR: "创建用户UID失败", | ||
| 66 | + RECODE_LOGINCHECK_ERROR: "登录验证失败,请重新登录", | ||
| 67 | + RECODE_WEIXINAZIFU_ERROR: "参数存在危险字符", | ||
| 68 | + RECODE_SDKMEMBER_ERROR: "获取SDK用户信息失败", | ||
| 69 | + RECODE_CAOZUOPINFAN_ERROR: "操作频繁", | ||
| 70 | + RECODE_REQUESTXIANLIU_ERROR: "操作被限流", | ||
| 71 | + RECODE_REQUESTTIME_ERROR: "time errors", | ||
| 72 | + | ||
| 73 | + RECODE_MERGE_CONFIG_ERROR: "获取配置文件错误", | ||
| 74 | + RECODE_MERGE_CFLQ_ERROR: "不能重复领取", | ||
| 75 | + RECODE_MERGE_AZSXLQ_ERROR: "请按照顺序领取", | ||
| 76 | + RECODE_MERGE_QXGMSP_ERROR: "请先购买对应商品", | ||
| 77 | + | ||
| 78 | + RECODE_MERGE_MEMBERSHIP_QXCZZK_ERROR: "请先购买周卡", | ||
| 79 | + RECODE_MERGE_MEMBERSHIP_QXCZYK_ERROR: "请先购买月卡", | ||
| 80 | + RECODE_MERGE_MEMBERSHIP_QXCZ_ERROR: "请先购买对应商品", | ||
| 81 | + RECODE_MERGE_MEMBERSHIP_BNCFLQ_ERROR: "不能重复领取", | ||
| 82 | + | ||
| 83 | + RECODE_MERGE_NOVICE_QXCZ_ERROR: "请先购买对应商品", | ||
| 84 | + RECODE_MERGE_NOVICE_BNCFLQ_ERROR: "不能重复领取", | ||
| 85 | + RECODE_MERGE_NOVICE_MYDDLQTJ_ERROR: "没有达到领取条件", | ||
| 86 | + | ||
| 87 | + RECODE_MERGE_HUODONGWEIKAISHI_ERROR: "活动未开始", | ||
| 88 | + RECODE_MERGE_HUODONGYIJIESHU_ERROR: "活动已结束", | ||
| 89 | + RECODE_MERGE_CCZDXX_ERROR: "超出最大限制", | ||
| 90 | + | ||
| 91 | + RECODE_MERGE_TONGXINGZHENGBUCUNZAI_ERROR: "通行证不存在", | ||
| 92 | + RECODE_MERGE_QINGXIANGMTXZ_ERROR: "请先购买通行证", | ||
| 93 | + | ||
| 94 | + RECODE_MERGE_CARDHOLDER_NOTOPEN_ERROR: "活动未开放", | ||
| 95 | + RECODE_MERGE_CARDHOLDER_NOTOPEN1_ERROR: "活动未开始", | ||
| 96 | + RECODE_MERGE_CARDHOLDER_NOTOPEN2_ERROR: "活动已结束", | ||
| 97 | + RECODE_MERGE_CARDHOLDER_ROUNDFINISH_ERROR: "活动轮次已全部完成", | ||
| 98 | + RECODE_MERGE_CARDHOLDER_CARDHOLDERID_ERROR: "卡包ID错误", | ||
| 99 | + RECODE_MERGE_CARDHOLDER_COUNTILLEGAL_ERROR: "数目不合法", | ||
| 100 | + RECODE_MERGE_CARDHOLDER_CARDHOLDER_NOTENOUGH_ERROR: "卡包不足", | ||
| 101 | + RECODE_MERGE_CARDHOLDER_ALBUMID_ERROR: "卡组ID错误", | ||
| 102 | + RECODE_MERGE_CARDHOLDER_ALBUM_HASGOT_ERROR: "卡组奖励已领取", | ||
| 103 | + RECODE_MERGE_CARDHOLDER_ALBUM_NOTFINISH_ERROR: "卡组卡牌未集齐", | ||
| 104 | + RECODE_MERGE_CARDHOLDER_ROUND_NOTFINISH_ERROR: "卡册未集齐", | ||
| 105 | +} | ||
| 106 | + | ||
| 107 | +func RecodeText(code string) string { | ||
| 108 | + str, ok := recodeText[code] | ||
| 109 | + if ok { | ||
| 110 | + return str | ||
| 111 | + } | ||
| 112 | + return RecodeText(RECODE_UNKNOWERR) | ||
| 113 | +} | ||
| 114 | + | ||
| 115 | +func CodeMsg(data map[string]interface{}, code interface{}) map[string]interface{} { | ||
| 116 | + data["code"] = code | ||
| 117 | + data["msg"] = RecodeText(code.(string)) | ||
| 118 | + lxtime.NowUninx() | ||
| 119 | + data["servertime"] = lxtime.NowUninx() | ||
| 120 | + return data | ||
| 121 | +} | ||
| 122 | + | ||
| 123 | +func CodeMsgLog(data map[string]interface{}, code interface{}, log ...interface{}) map[string]interface{} { | ||
| 124 | + // 写入日志 | ||
| 125 | + lxalilog.ErrorCode(code, log) | ||
| 126 | + return CodeMsg(data, code) | ||
| 127 | +} |
service/constd/index.go
| @@ -1,125 +0,0 @@ | @@ -1,125 +0,0 @@ | ||
| 1 | -package constd | ||
| 2 | - | ||
| 3 | -import ( | ||
| 4 | - "apigame/util/util-lx/lxalilog" | ||
| 5 | - "apigame/util/util-lx/lxtime" | ||
| 6 | -) | ||
| 7 | - | ||
| 8 | -const ( | ||
| 9 | - RECODE_OK = "0" | ||
| 10 | - RECODE_FALIED = "1000" | ||
| 11 | - RECODE_UNKNOWERR = "1001" | ||
| 12 | - RECODE_PARAMERROR = "1002" | ||
| 13 | - RECODE_SIGNERROR = "1003" | ||
| 14 | - RECODE_DATA_BUCUNZIA_ERROR = "1004" | ||
| 15 | - RECODE_PARAMDECODE_ERROR = "1005" | ||
| 16 | - RECODE_DATANOEXIST_ERROR = "1006" | ||
| 17 | - RECODE_CREATEUID_ERROR = "1007" | ||
| 18 | - RECODE_LOGINCHECK_ERROR = "1008" | ||
| 19 | - RECODE_WEIXINAZIFU_ERROR = "1009" | ||
| 20 | - RECODE_SDKMEMBER_ERROR = "1010" | ||
| 21 | - RECODE_CAOZUOPINFAN_ERROR = "1011" | ||
| 22 | - RECODE_REQUESTXIANLIU_ERROR = "1110" | ||
| 23 | - RECODE_REQUESTTIME_ERROR = "1111" | ||
| 24 | - | ||
| 25 | - RECODE_MERGE_CONFIG_ERROR = "2000" | ||
| 26 | - RECODE_MERGE_CFLQ_ERROR = "2001" | ||
| 27 | - RECODE_MERGE_AZSXLQ_ERROR = "2002" | ||
| 28 | - RECODE_MERGE_QXGMSP_ERROR = "2003" | ||
| 29 | - RECODE_MERGE_MEMBERSHIP_QXCZZK_ERROR = "2010" | ||
| 30 | - RECODE_MERGE_MEMBERSHIP_QXCZYK_ERROR = "2011" | ||
| 31 | - RECODE_MERGE_MEMBERSHIP_QXCZ_ERROR = "2012" | ||
| 32 | - RECODE_MERGE_MEMBERSHIP_BNCFLQ_ERROR = "2013" | ||
| 33 | - | ||
| 34 | - RECODE_MERGE_NOVICE_QXCZ_ERROR = "2021" | ||
| 35 | - RECODE_MERGE_NOVICE_BNCFLQ_ERROR = "2032" | ||
| 36 | - RECODE_MERGE_NOVICE_MYDDLQTJ_ERROR = "2033" | ||
| 37 | - RECODE_MERGE_HUODONGWEIKAISHI_ERROR = "2040" | ||
| 38 | - RECODE_MERGE_HUODONGYIJIESHU_ERROR = "2041" | ||
| 39 | - RECODE_MERGE_CCZDXX_ERROR = "2042" | ||
| 40 | - RECODE_MERGE_TONGXINGZHENGBUCUNZAI_ERROR = "2051" | ||
| 41 | - RECODE_MERGE_QINGXIANGMTXZ_ERROR = "2052" | ||
| 42 | - | ||
| 43 | - RECODE_MERGE_CARDHOLDER_NOTOPEN1_ERROR = "2101" | ||
| 44 | - RECODE_MERGE_CARDHOLDER_NOTOPEN2_ERROR = "2102" | ||
| 45 | - RECODE_MERGE_CARDHOLDER_ROUNDFINISH_ERROR = "2103" | ||
| 46 | - RECODE_MERGE_CARDHOLDER_CARDHOLDERID_ERROR = "2104" | ||
| 47 | - RECODE_MERGE_CARDHOLDER_COUNTILLEGAL_ERROR = "2105" | ||
| 48 | - RECODE_MERGE_CARDHOLDER_CARDHOLDER_NOTENOUGH_ERROR = "2106" | ||
| 49 | - RECODE_MERGE_CARDHOLDER_ALBUMID_ERROR = "2107" | ||
| 50 | - RECODE_MERGE_CARDHOLDER_ALBUM_HASGOT_ERROR = "2108" | ||
| 51 | - RECODE_MERGE_CARDHOLDER_ALBUM_NOTFINISH_ERROR = "2109" | ||
| 52 | - RECODE_MERGE_CARDHOLDER_ROUND_NOTFINISH_ERROR = "2110" | ||
| 53 | -) | ||
| 54 | - | ||
| 55 | -var recodeText = map[string]string{ | ||
| 56 | - RECODE_OK: "成功", | ||
| 57 | - RECODE_FALIED: "操作失败", | ||
| 58 | - RECODE_UNKNOWERR: "未知错误", | ||
| 59 | - RECODE_PARAMERROR: "参数错误", | ||
| 60 | - RECODE_SIGNERROR: "签名错误", | ||
| 61 | - RECODE_DATA_BUCUNZIA_ERROR: "数据不存在", | ||
| 62 | - RECODE_PARAMDECODE_ERROR: "解析参数失败,请检查参数合法性", | ||
| 63 | - RECODE_DATANOEXIST_ERROR: "数据不存在", | ||
| 64 | - RECODE_CREATEUID_ERROR: "创建用户UID失败", | ||
| 65 | - RECODE_LOGINCHECK_ERROR: "登录验证失败,请重新登录", | ||
| 66 | - RECODE_WEIXINAZIFU_ERROR: "参数存在危险字符", | ||
| 67 | - RECODE_SDKMEMBER_ERROR: "获取SDK用户信息失败", | ||
| 68 | - RECODE_CAOZUOPINFAN_ERROR: "操作频繁", | ||
| 69 | - RECODE_REQUESTXIANLIU_ERROR: "操作被限流", | ||
| 70 | - RECODE_REQUESTTIME_ERROR: "time errors", | ||
| 71 | - | ||
| 72 | - RECODE_MERGE_CONFIG_ERROR: "获取配置文件错误", | ||
| 73 | - RECODE_MERGE_CFLQ_ERROR: "不能重复领取", | ||
| 74 | - RECODE_MERGE_AZSXLQ_ERROR: "请按照顺序领取", | ||
| 75 | - RECODE_MERGE_QXGMSP_ERROR: "请先购买对应商品", | ||
| 76 | - | ||
| 77 | - RECODE_MERGE_MEMBERSHIP_QXCZZK_ERROR: "请先购买周卡", | ||
| 78 | - RECODE_MERGE_MEMBERSHIP_QXCZYK_ERROR: "请先购买月卡", | ||
| 79 | - RECODE_MERGE_MEMBERSHIP_QXCZ_ERROR: "请先购买对应商品", | ||
| 80 | - RECODE_MERGE_MEMBERSHIP_BNCFLQ_ERROR: "不能重复领取", | ||
| 81 | - | ||
| 82 | - RECODE_MERGE_NOVICE_QXCZ_ERROR: "请先购买对应商品", | ||
| 83 | - RECODE_MERGE_NOVICE_BNCFLQ_ERROR: "不能重复领取", | ||
| 84 | - RECODE_MERGE_NOVICE_MYDDLQTJ_ERROR: "没有达到领取条件", | ||
| 85 | - | ||
| 86 | - RECODE_MERGE_HUODONGWEIKAISHI_ERROR: "活动未开始", | ||
| 87 | - RECODE_MERGE_HUODONGYIJIESHU_ERROR: "活动已结束", | ||
| 88 | - RECODE_MERGE_CCZDXX_ERROR: "超出最大限制", | ||
| 89 | - | ||
| 90 | - RECODE_MERGE_TONGXINGZHENGBUCUNZAI_ERROR: "通行证不存在", | ||
| 91 | - RECODE_MERGE_QINGXIANGMTXZ_ERROR: "请先购买通行证", | ||
| 92 | - | ||
| 93 | - RECODE_MERGE_CARDHOLDER_NOTOPEN1_ERROR: "活动未开始", | ||
| 94 | - RECODE_MERGE_CARDHOLDER_NOTOPEN2_ERROR: "活动已结束", | ||
| 95 | - RECODE_MERGE_CARDHOLDER_ROUNDFINISH_ERROR: "活动轮次已全部完成", | ||
| 96 | - RECODE_MERGE_CARDHOLDER_CARDHOLDERID_ERROR: "卡包ID错误", | ||
| 97 | - RECODE_MERGE_CARDHOLDER_COUNTILLEGAL_ERROR: "数目不合法", | ||
| 98 | - RECODE_MERGE_CARDHOLDER_CARDHOLDER_NOTENOUGH_ERROR: "卡包不足", | ||
| 99 | - RECODE_MERGE_CARDHOLDER_ALBUMID_ERROR: "卡组ID错误", | ||
| 100 | - RECODE_MERGE_CARDHOLDER_ALBUM_HASGOT_ERROR: "卡组奖励已领取", | ||
| 101 | - RECODE_MERGE_CARDHOLDER_ALBUM_NOTFINISH_ERROR: "卡组卡牌未集齐", | ||
| 102 | - RECODE_MERGE_CARDHOLDER_ROUND_NOTFINISH_ERROR: "卡册未集齐", | ||
| 103 | -} | ||
| 104 | - | ||
| 105 | -func RecodeText(code string) string { | ||
| 106 | - str, ok := recodeText[code] | ||
| 107 | - if ok { | ||
| 108 | - return str | ||
| 109 | - } | ||
| 110 | - return RecodeText(RECODE_UNKNOWERR) | ||
| 111 | -} | ||
| 112 | - | ||
| 113 | -func CodeMsg(data map[string]interface{}, code interface{}) map[string]interface{} { | ||
| 114 | - data["code"] = code | ||
| 115 | - data["msg"] = RecodeText(code.(string)) | ||
| 116 | - lxtime.NowUninx() | ||
| 117 | - data["servertime"] = lxtime.NowUninx() | ||
| 118 | - return data | ||
| 119 | -} | ||
| 120 | - | ||
| 121 | -func CodeMsgLog(data map[string]interface{}, code interface{}, log ...interface{}) map[string]interface{} { | ||
| 122 | - // 写入日志 | ||
| 123 | - lxalilog.ErrorCode(code, log) | ||
| 124 | - return CodeMsg(data, code) | ||
| 125 | -} |
service/constd/mysql.go
| @@ -10,7 +10,7 @@ const ( | @@ -10,7 +10,7 @@ const ( | ||
| 10 | MYSQL_MERGECONFIG = "merge_config" | 10 | MYSQL_MERGECONFIG = "merge_config" |
| 11 | MYSQL_DEFAULT_QUERY_MAXCOUNT = 100 | 11 | MYSQL_DEFAULT_QUERY_MAXCOUNT = 100 |
| 12 | 12 | ||
| 13 | - MYSQL_TABLE_S_CARD_ACTIVITY = "s_card_activity_" // 开卡包活动配置 | 13 | + MYSQL_TABLE_S_CARDHOLDER_CONFIG = "s_card_activity_" // 开卡包活动配置 |
| 14 | MYSQL_TABLE_S_CARDHOLDER_DATA = "s_cardholder_data_" // 开卡包活动数据 | 14 | MYSQL_TABLE_S_CARDHOLDER_DATA = "s_cardholder_data_" // 开卡包活动数据 |
| 15 | MYSQL_TABLE_S_CARDHOLDER_RECORD_GETNEW = "s_cardholder_record_getnew_" // 开卡包活动日志获得卡包 | 15 | MYSQL_TABLE_S_CARDHOLDER_RECORD_GETNEW = "s_cardholder_record_getnew_" // 开卡包活动日志获得卡包 |
| 16 | MYSQL_TABLE_S_CARDHOLDER_RECORD_OPEN = "s_cardholder_record_open_" // 开卡包活动日志开卡包 | 16 | MYSQL_TABLE_S_CARDHOLDER_RECORD_OPEN = "s_cardholder_record_open_" // 开卡包活动日志开卡包 |
| @@ -18,7 +18,3 @@ const ( | @@ -18,7 +18,3 @@ const ( | ||
| 18 | MYSQL_TABLE_S_CARDHOLDER_RECORD_REWARDROUND = "s_cardholder_record_rewardround_" // 开卡包活动日志领取轮次奖励 | 18 | MYSQL_TABLE_S_CARDHOLDER_RECORD_REWARDROUND = "s_cardholder_record_rewardround_" // 开卡包活动日志领取轮次奖励 |
| 19 | 19 | ||
| 20 | ) | 20 | ) |
| 21 | - | ||
| 22 | -const ( | ||
| 23 | - GAME_ID_HT = "10128" | ||
| 24 | -) |
service/game-record/record.go
| @@ -1,16 +0,0 @@ | @@ -1,16 +0,0 @@ | ||
| 1 | -package game_record | ||
| 2 | - | ||
| 3 | -import ( | ||
| 4 | - "apigame/dto" | ||
| 5 | - "apigame/service/constd" | ||
| 6 | - "apigame/util/util-lx/lxalilog" | ||
| 7 | - "github.com/astaxie/beego/orm" | ||
| 8 | -) | ||
| 9 | - | ||
| 10 | -func Save(d dto.RecordMysql) { | ||
| 11 | - o := orm.NewOrm() | ||
| 12 | - o.Using(constd.MYSQL_DEFAULT) | ||
| 13 | - if _, err := o.Insert(d); err != nil { | ||
| 14 | - lxalilog.Errors(err, d.TableName()) | ||
| 15 | - } | ||
| 16 | -} |
util/utmysql/index.go
| @@ -1,55 +0,0 @@ | @@ -1,55 +0,0 @@ | ||
| 1 | -package utmysql | ||
| 2 | - | ||
| 3 | -import ( | ||
| 4 | - "github.com/astaxie/beego/orm" | ||
| 5 | - "strings" | ||
| 6 | -) | ||
| 7 | - | ||
| 8 | -// FindSql 查询数据 根据sql | ||
| 9 | -func FindSql(dbName string, sql string, result any) (err error) { | ||
| 10 | - orm := orm.NewOrm() | ||
| 11 | - orm.Using(dbName) | ||
| 12 | - | ||
| 13 | - if _, err = orm.Raw(sql).QueryRows(result); err != nil { | ||
| 14 | - if strings.Contains(err.Error(), "doesn't exist") { | ||
| 15 | - err = nil | ||
| 16 | - return | ||
| 17 | - } | ||
| 18 | - return | ||
| 19 | - } | ||
| 20 | - return | ||
| 21 | -} | ||
| 22 | - | ||
| 23 | -// FindOneSql 查询一条数据 根据sql | ||
| 24 | -func FindOneSql(dbName string, sql string, result any) (err error) { | ||
| 25 | - orm := orm.NewOrm() | ||
| 26 | - orm.Using(dbName) | ||
| 27 | - | ||
| 28 | - if err = orm.Raw(sql).QueryRow(result); err != nil { | ||
| 29 | - if strings.Contains(err.Error(), "doesn't exist") { | ||
| 30 | - err = nil | ||
| 31 | - return | ||
| 32 | - } | ||
| 33 | - return | ||
| 34 | - } | ||
| 35 | - return | ||
| 36 | -} | ||
| 37 | - | ||
| 38 | -// | ||
| 39 | -//// Find 查询数据 | ||
| 40 | -//func Find(dbName string, tableName string, result any) (err error) { | ||
| 41 | -// o := orm.NewOrm() | ||
| 42 | -// o.Using(dbName) | ||
| 43 | -// | ||
| 44 | -// // 也可以直接使用对象作为表名 | ||
| 45 | -// qs := o.QueryTable(tableName) | ||
| 46 | -// | ||
| 47 | -// if _, err = qs.All(result); err != nil { | ||
| 48 | -// if strings.Contains(err.Error(), "doesn't exist") { | ||
| 49 | -// err = nil | ||
| 50 | -// return | ||
| 51 | -// } | ||
| 52 | -// return | ||
| 53 | -// } | ||
| 54 | -// return | ||
| 55 | -//} |
| @@ -0,0 +1,58 @@ | @@ -0,0 +1,58 @@ | ||
| 1 | +package utmysql | ||
| 2 | + | ||
| 3 | +import ( | ||
| 4 | + "github.com/astaxie/beego/orm" | ||
| 5 | + "strings" | ||
| 6 | +) | ||
| 7 | + | ||
| 8 | +// FindSql 查询数据 根据sql | ||
| 9 | +func FindSql(dbName string, sql string, result any) (err error) { | ||
| 10 | + o := orm.NewOrm() | ||
| 11 | + o.Using(dbName) | ||
| 12 | + | ||
| 13 | + if _, err = o.Raw(sql).QueryRows(result); err != nil { | ||
| 14 | + if strings.Contains(err.Error(), "doesn't exist") { | ||
| 15 | + err = nil | ||
| 16 | + return | ||
| 17 | + } | ||
| 18 | + return | ||
| 19 | + } | ||
| 20 | + return | ||
| 21 | +} | ||
| 22 | + | ||
| 23 | +// FindOneSql 查询一条数据 根据sql | ||
| 24 | +func FindOneSql(dbName string, sql string, result any) (has bool, err error) { | ||
| 25 | + has = true | ||
| 26 | + o := orm.NewOrm() | ||
| 27 | + o.Using(dbName) | ||
| 28 | + | ||
| 29 | + if err = o.Raw(sql).QueryRow(result); err != nil { | ||
| 30 | + if strings.Contains(err.Error(), "no row found") || | ||
| 31 | + strings.Contains(err.Error(), "doesn't exist") { | ||
| 32 | + has = false | ||
| 33 | + err = nil | ||
| 34 | + return | ||
| 35 | + } | ||
| 36 | + return | ||
| 37 | + } | ||
| 38 | + return | ||
| 39 | +} | ||
| 40 | + | ||
| 41 | +// | ||
| 42 | +//// Find 查询数据 | ||
| 43 | +//func Find(dbName string, tableName string, result any) (err error) { | ||
| 44 | +// o := orm.NewOrm() | ||
| 45 | +// o.Using(dbName) | ||
| 46 | +// | ||
| 47 | +// // 也可以直接使用对象作为表名 | ||
| 48 | +// qs := o.QueryTable(tableName) | ||
| 49 | +// | ||
| 50 | +// if _, err = qs.All(result); err != nil { | ||
| 51 | +// if strings.Contains(err.Error(), "doesn't exist") { | ||
| 52 | +// err = nil | ||
| 53 | +// return | ||
| 54 | +// } | ||
| 55 | +// return | ||
| 56 | +// } | ||
| 57 | +// return | ||
| 58 | +//} |