168 lines
4.3 KiB
Go
168 lines
4.3 KiB
Go
package userdata
|
|
|
|
import (
|
|
"bygdata/global"
|
|
"bygdata/model/userdata"
|
|
"fmt"
|
|
"gorm.io/gorm"
|
|
"gorm.io/gorm/clause"
|
|
"time"
|
|
)
|
|
|
|
type StatsService struct{}
|
|
|
|
var StatsServiceApp = new(StatsService)
|
|
|
|
func (statsService *StatsService) AddGameData(data userdata.GameStats) (err error) {
|
|
history, year, month, week, day := statsService.formatTimestamp2Dates(data.Ut)
|
|
|
|
data.Ymd = history
|
|
err = statsService.addGameItem(data)
|
|
|
|
data.Ymd = year
|
|
err = statsService.addGameItem(data)
|
|
|
|
data.Ymd = month
|
|
err = statsService.addGameItem(data)
|
|
|
|
data.Ymd = week
|
|
err = statsService.addGameItem(data)
|
|
|
|
data.Ymd = day
|
|
err = statsService.addGameItem(data)
|
|
return
|
|
}
|
|
|
|
func (statsService *StatsService) addGameItem(data userdata.GameStats) (err error) {
|
|
|
|
data.Xid = fmt.Sprintf("%s-%d-%d-%s", data.UserNo, data.GameType, data.GameId, data.Ymd)
|
|
err = global.GVA_DB.Clauses(clause.OnConflict{
|
|
Columns: []clause.Column{{Name: "xid"}},
|
|
DoUpdates: clause.Assignments(map[string]interface{}{
|
|
"bet_coin": gorm.Expr("bet_coin+?", data.BetCoin),
|
|
"bet_count": gorm.Expr("bet_count+?", data.BetCount),
|
|
"ut": data.Ut,
|
|
}),
|
|
}).Create(&data).Error
|
|
|
|
return
|
|
}
|
|
|
|
func (statsService *StatsService) AddPaymentData(data userdata.PaymentStats) (err error) {
|
|
history, year, month, week, day := statsService.formatTimestamp2Dates(data.Ut)
|
|
|
|
data.Ymd = history
|
|
err = statsService.addPaymentItem(data)
|
|
|
|
data.Ymd = year
|
|
err = statsService.addPaymentItem(data)
|
|
|
|
data.Ymd = month
|
|
err = statsService.addPaymentItem(data)
|
|
|
|
data.Ymd = week
|
|
err = statsService.addPaymentItem(data)
|
|
|
|
data.Ymd = day
|
|
err = statsService.addPaymentItem(data)
|
|
return
|
|
}
|
|
|
|
func (statsService *StatsService) addPaymentItem(data userdata.PaymentStats) (err error) {
|
|
|
|
data.Xid = fmt.Sprintf("%s-%s", data.UserNo, data.Ymd)
|
|
err = global.GVA_DB.Clauses(clause.OnConflict{
|
|
Columns: []clause.Column{{Name: "xid"}},
|
|
DoUpdates: clause.Assignments(map[string]interface{}{
|
|
"money": gorm.Expr("money+?", data.Money),
|
|
"coin": gorm.Expr("coin+?", data.Coin),
|
|
"count": gorm.Expr("count+?", data.Count),
|
|
"ut": data.Ut,
|
|
}),
|
|
}).Create(&data).Error
|
|
|
|
return
|
|
}
|
|
|
|
func (statsService *StatsService) AddWithdrawalData(data userdata.WithdrawalStats) (err error) {
|
|
history, year, month, week, day := statsService.formatTimestamp2Dates(data.Ut)
|
|
|
|
data.Ymd = history
|
|
err = statsService.addWithdrawalItem(data)
|
|
|
|
data.Ymd = year
|
|
err = statsService.addWithdrawalItem(data)
|
|
|
|
data.Ymd = month
|
|
err = statsService.addWithdrawalItem(data)
|
|
|
|
data.Ymd = week
|
|
err = statsService.addWithdrawalItem(data)
|
|
|
|
data.Ymd = day
|
|
err = statsService.addWithdrawalItem(data)
|
|
return
|
|
}
|
|
|
|
func (statsService *StatsService) addWithdrawalItem(data userdata.WithdrawalStats) (err error) {
|
|
|
|
data.Xid = fmt.Sprintf("%s-%s", data.UserNo, data.Ymd)
|
|
err = global.GVA_DB.Clauses(clause.OnConflict{
|
|
Columns: []clause.Column{{Name: "xid"}},
|
|
DoUpdates: clause.Assignments(map[string]interface{}{
|
|
"money": gorm.Expr("money+?", data.Money),
|
|
"coin": gorm.Expr("coin+?", data.Coin),
|
|
"count": gorm.Expr("count+?", data.Count),
|
|
"ut": data.Ut,
|
|
}),
|
|
}).Create(&data).Error
|
|
|
|
return
|
|
}
|
|
|
|
func (statsService *StatsService) AddBonusData(data userdata.BonusStats) (err error) {
|
|
history, year, month, week, day := statsService.formatTimestamp2Dates(data.Ut)
|
|
|
|
data.Ymd = history
|
|
err = statsService.addBonusItem(data)
|
|
|
|
data.Ymd = year
|
|
err = statsService.addBonusItem(data)
|
|
|
|
data.Ymd = month
|
|
err = statsService.addBonusItem(data)
|
|
|
|
data.Ymd = week
|
|
err = statsService.addBonusItem(data)
|
|
|
|
data.Ymd = day
|
|
err = statsService.addBonusItem(data)
|
|
return
|
|
}
|
|
|
|
func (statsService *StatsService) addBonusItem(data userdata.BonusStats) (err error) {
|
|
|
|
data.Xid = fmt.Sprintf("%s-%s-%s", data.UserNo, data.BonusId, data.Ymd)
|
|
err = global.GVA_DB.Clauses(clause.OnConflict{
|
|
Columns: []clause.Column{{Name: "xid"}},
|
|
DoUpdates: clause.Assignments(map[string]interface{}{
|
|
"coin": gorm.Expr("coin+?", data.Coin),
|
|
"count": gorm.Expr("count+?", data.Count),
|
|
"ut": data.Ut,
|
|
}),
|
|
}).Create(&data).Error
|
|
|
|
return
|
|
}
|
|
|
|
func (statsService *StatsService) formatTimestamp2Dates(ts int64) (history, year, month, week, day string) {
|
|
tt := time.Unix(ts, 0)
|
|
y, w := tt.ISOWeek()
|
|
history = "0000-00-00"
|
|
year = fmt.Sprintf("%d-00-00", y)
|
|
month = tt.Format("2006-01") + "-00"
|
|
week = fmt.Sprintf("%d-00-%2d", y, w)
|
|
day = tt.Format("2006-01-02")
|
|
return
|
|
}
|