142 lines
4.2 KiB
Go
142 lines
4.2 KiB
Go
package dao
|
|
|
|
import (
|
|
"context"
|
|
"fmt"
|
|
"time"
|
|
|
|
"go-common/library/log"
|
|
"go-common/library/xstr"
|
|
|
|
"go-common/app/job/main/growup/model"
|
|
)
|
|
|
|
const (
|
|
// select
|
|
_upsSQL = "SELECT mid,nickname,fans,signed_at,is_deleted FROM up_info_video WHERE account_state = 3 AND mid IN (%s)"
|
|
_avIncomeSQL = "SELECT mid,av_id,upload_time,total_income FROM av_income_statis WHERE av_id IN (%s) AND mtime > ?"
|
|
_playCountSQL = "SELECT mid,play FROM up_base_statistics WHERE mid IN (%s)"
|
|
_avBreachSQL = "SELECT id,av_id FROM av_breach_record WHERE id > ? ORDER BY id LIMIT ?"
|
|
|
|
_deleteArchiveSpySQL = "DELETE FROM archive_spy_statistics LIMIT ?"
|
|
_deleteUpSpySQL = "DELETE FROM up_spy_statistics LIMIT ?"
|
|
|
|
// insert
|
|
_inCheatUpsSQL = "INSERT INTO up_spy_statistics(mid,signed_at,nickname,fans,cheat_fans,play_count,cheat_play_count,account_state) VALUES %s ON DUPLICATE KEY UPDATE signed_at=VALUES(signed_at),nickname=VALUES(nickname),fans=VALUES(fans),cheat_fans=VALUES(cheat_fans),play_count=VALUES(play_count),cheat_play_count=VALUES(cheat_play_count),account_state=VALUES(account_state)"
|
|
_inCheatArchiveSQL = "INSERT INTO archive_spy_statistics(archive_id,mid,nickname,upload_time,total_income,cheat_play_count,cheat_favorite,cheat_coin,deducted) VALUES %s ON DUPLICATE KEY UPDATE nickname=VALUES(nickname),total_income=VALUES(total_income),cheat_play_count=VALUES(cheat_play_count),cheat_favorite=VALUES(cheat_favorite),cheat_coin=VALUES(cheat_coin),deducted=VALUES(deducted)"
|
|
)
|
|
|
|
// DelArchiveSpy del archive spy
|
|
func (d *Dao) DelArchiveSpy(c context.Context, limit int64) (rows int64, err error) {
|
|
res, err := d.db.Exec(c, _deleteArchiveSpySQL, limit)
|
|
if err != nil {
|
|
return
|
|
}
|
|
return res.RowsAffected()
|
|
}
|
|
|
|
// DelUpSpy del up spy
|
|
func (d *Dao) DelUpSpy(c context.Context, limit int64) (rows int64, err error) {
|
|
res, err := d.db.Exec(c, _deleteUpSpySQL, limit)
|
|
if err != nil {
|
|
return
|
|
}
|
|
return res.RowsAffected()
|
|
}
|
|
|
|
// AvBreachRecord get av_ids deducted
|
|
func (d *Dao) AvBreachRecord(c context.Context, id int64, limit int64) (last int64, ds map[int64]bool, err error) {
|
|
rows, err := d.db.Query(c, _avBreachSQL, id, limit)
|
|
if err != nil {
|
|
return
|
|
}
|
|
ds = make(map[int64]bool)
|
|
defer rows.Close()
|
|
for rows.Next() {
|
|
var avID int64
|
|
err = rows.Scan(&last, &avID)
|
|
if err != nil {
|
|
return
|
|
}
|
|
ds[avID] = true
|
|
}
|
|
return
|
|
}
|
|
|
|
// Ups get ups in up_info_video
|
|
func (d *Dao) Ups(c context.Context, mids []int64) (cs map[int64]*model.Cheating, err error) {
|
|
rows, err := d.db.Query(c, fmt.Sprintf(_upsSQL, xstr.JoinInts(mids)))
|
|
if err != nil {
|
|
return
|
|
}
|
|
defer rows.Close()
|
|
cs = make(map[int64]*model.Cheating)
|
|
for rows.Next() {
|
|
c := &model.Cheating{}
|
|
err = rows.Scan(&c.MID, &c.Nickname, &c.Fans, &c.SignedAt, &c.IsDeleted)
|
|
if err != nil {
|
|
return
|
|
}
|
|
cs[c.MID] = c
|
|
}
|
|
return
|
|
}
|
|
|
|
// Avs get avs in av_income_statis
|
|
func (d *Dao) Avs(c context.Context, date time.Time, aids []int64) (cs map[int64]*model.Cheating, err error) {
|
|
rows, err := d.db.Query(c, fmt.Sprintf(_avIncomeSQL, xstr.JoinInts(aids)), date)
|
|
if err != nil {
|
|
return
|
|
}
|
|
defer rows.Close()
|
|
cs = make(map[int64]*model.Cheating)
|
|
for rows.Next() {
|
|
c := &model.Cheating{}
|
|
err = rows.Scan(&c.MID, &c.AvID, &c.UploadTime, &c.TotalIncome)
|
|
if err != nil {
|
|
log.Error("rows.Scan error(%v)", err)
|
|
return
|
|
}
|
|
cs[c.AvID] = c
|
|
}
|
|
return
|
|
}
|
|
|
|
// PlayCount get play count in up_base_statistics
|
|
func (d *Dao) PlayCount(c context.Context, mids []int64) (cs map[int64]int64, err error) {
|
|
rows, err := d.db.Query(c, fmt.Sprintf(_playCountSQL, xstr.JoinInts(mids)))
|
|
if err != nil {
|
|
return
|
|
}
|
|
cs = make(map[int64]int64)
|
|
defer rows.Close()
|
|
for rows.Next() {
|
|
var mid, count int64
|
|
err = rows.Scan(&mid, &count)
|
|
if err != nil {
|
|
log.Error("rows.Scan error(%v)", err)
|
|
return
|
|
}
|
|
cs[mid] = count
|
|
}
|
|
return
|
|
}
|
|
|
|
// InsertCheatUps insert cheat ups
|
|
func (d *Dao) InsertCheatUps(c context.Context, values string) (rows int64, err error) {
|
|
res, err := d.db.Exec(c, fmt.Sprintf(_inCheatUpsSQL, values))
|
|
if err != nil {
|
|
return
|
|
}
|
|
return res.RowsAffected()
|
|
}
|
|
|
|
// InsertCheatArchives insert cheat archives
|
|
func (d *Dao) InsertCheatArchives(c context.Context, values string) (rows int64, err error) {
|
|
res, err := d.db.Exec(c, fmt.Sprintf(_inCheatArchiveSQL, values))
|
|
if err != nil {
|
|
return
|
|
}
|
|
return res.RowsAffected()
|
|
}
|