You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
94 lines
3.0 KiB
94 lines
3.0 KiB
package charge |
|
|
|
import ( |
|
"context" |
|
"fmt" |
|
"time" |
|
|
|
model "go-common/app/job/main/growup/model/charge" |
|
|
|
"go-common/library/log" |
|
) |
|
|
|
const ( |
|
_columnChargeSQL = "SELECT id,aid,title,mid,tag_id,words,upload_time,inc_charge,view_c,date FROM %s WHERE id > ? AND date = ? AND inc_charge > 0 ORDER BY id LIMIT ?" |
|
_columnStatisSQL = "SELECT id,aid,total_charge FROM column_charge_statis WHERE id > ? ORDER BY id LIMIT ?" |
|
_countCmDailySQL = "SELECT COUNT(*) FROM column_daily_charge WHERE date = '%s'" |
|
|
|
_inCmChargeTableSQL = "INSERT INTO %s(aid,mid,tag_id,inc_charge,date,upload_time) VALUES %s ON DUPLICATE KEY UPDATE inc_charge=VALUES(inc_charge)" |
|
_inCmStatisSQL = "INSERT INTO column_charge_statis(aid,mid,tag_id,total_charge,upload_time) VALUES %s ON DUPLICATE KEY UPDATE total_charge=VALUES(total_charge)" |
|
) |
|
|
|
// ColumnCharge get column charge by date |
|
func (d *Dao) ColumnCharge(c context.Context, date time.Time, id int64, limit int, table string) (columns []*model.Column, err error) { |
|
columns = make([]*model.Column, 0) |
|
rows, err := d.db.Query(c, fmt.Sprintf(_columnChargeSQL, table), id, date, limit) |
|
if err != nil { |
|
log.Error("ColumnCharge d.db.Query error(%v)", err) |
|
return |
|
} |
|
defer rows.Close() |
|
for rows.Next() { |
|
column := &model.Column{} |
|
err = rows.Scan(&column.ID, &column.AID, &column.Title, &column.MID, &column.TagID, &column.Words, &column.UploadTime, &column.IncCharge, &column.IncViewCount, &column.Date) |
|
if err != nil { |
|
log.Error("ColumnCharge rows.Scan error(%v)", err) |
|
return |
|
} |
|
columns = append(columns, column) |
|
} |
|
return |
|
} |
|
|
|
// CmStatis column statis |
|
func (d *Dao) CmStatis(c context.Context, id int64, limit int) (columns []*model.ColumnStatis, err error) { |
|
columns = make([]*model.ColumnStatis, 0) |
|
rows, err := d.db.Query(c, _columnStatisSQL, id, limit) |
|
if err != nil { |
|
log.Error("CmStatis d.db.Query error(%v)", err) |
|
return |
|
} |
|
defer rows.Close() |
|
for rows.Next() { |
|
column := &model.ColumnStatis{} |
|
err = rows.Scan(&column.ID, &column.AID, &column.TotalCharge) |
|
if err != nil { |
|
log.Error("CmStatis rows.Scan error(%v)", err) |
|
return |
|
} |
|
columns = append(columns, column) |
|
} |
|
return |
|
} |
|
|
|
// InsertCmChargeTable insert column charge |
|
func (d *Dao) InsertCmChargeTable(c context.Context, vals, table string) (rows int64, err error) { |
|
if vals == "" { |
|
return |
|
} |
|
res, err := d.db.Exec(c, fmt.Sprintf(_inCmChargeTableSQL, table, vals)) |
|
if err != nil { |
|
log.Error("InsertCmChargeTable(%s) tx.Exec error(%v)", table, err) |
|
return |
|
} |
|
return res.RowsAffected() |
|
} |
|
|
|
// InsertCmStatisBatch insert column statis |
|
func (d *Dao) InsertCmStatisBatch(c context.Context, vals string) (rows int64, err error) { |
|
if vals == "" { |
|
return |
|
} |
|
res, err := d.db.Exec(c, fmt.Sprintf(_inCmStatisSQL, vals)) |
|
if err != nil { |
|
log.Error("InsertCmStatisBatch tx.Exec error(%v)", err) |
|
return |
|
} |
|
return res.RowsAffected() |
|
} |
|
|
|
// CountCmDailyCharge get column_daily_charge count |
|
func (d *Dao) CountCmDailyCharge(c context.Context, date string) (count int64, err error) { |
|
err = d.db.QueryRow(c, fmt.Sprintf(_countCmDailySQL, date)).Scan(&count) |
|
return |
|
}
|
|
|