150 lines
4.5 KiB
Go
150 lines
4.5 KiB
Go
package income
|
|
|
|
import (
|
|
"context"
|
|
"fmt"
|
|
|
|
model "go-common/app/admin/main/growup/model/income"
|
|
"go-common/library/database/sql"
|
|
"go-common/library/log"
|
|
xtime "go-common/library/time"
|
|
)
|
|
|
|
const (
|
|
// select
|
|
_avDailyChargeSQL = "SELECT av_id,mid,tag_id,upload_time,inc_charge,date FROM av_daily_charge_%02d WHERE av_id = ? LIMIT 31"
|
|
_cmDailyChargeSQL = "SELECT aid,mid,tag_id,upload_time,inc_charge,date FROM column_daily_charge WHERE aid = ?"
|
|
_bgmDailyChargeSQL = "SELECT sid,aid,mid,join_at,inc_charge,date FROM bgm_daily_charge WHERE sid = ?"
|
|
_upChargeRatioSQL = "SELECT mid, ratio FROM up_charge_ratio LIMIT ?, ?"
|
|
|
|
_archiveChargeStatisTableSQL = "SELECT avs,money_section,money_tips,charge,category_id,cdate FROM %s WHERE %s LIMIT ?,?"
|
|
_archiveTotalChargeSQL = "SELECT total_charge FROM %s WHERE %s LIMIT 1"
|
|
)
|
|
|
|
// GetAvDailyCharge get av_daily_charge by month
|
|
func (d *Dao) GetAvDailyCharge(c context.Context, month int, avID int64) (avs []*model.ArchiveCharge, err error) {
|
|
if month < 1 || month > 12 {
|
|
return nil, fmt.Errorf("error args month(%d)", month)
|
|
}
|
|
rows, err := d.db.Query(c, fmt.Sprintf(_avDailyChargeSQL, month), avID)
|
|
if err != nil {
|
|
log.Error("GetAvDailyCharge d.db.Query error(%v)", err)
|
|
return
|
|
}
|
|
defer rows.Close()
|
|
for rows.Next() {
|
|
list := &model.ArchiveCharge{}
|
|
err = rows.Scan(&list.AID, &list.MID, &list.CategoryID, &list.UploadTime, &list.Charge, &list.Date)
|
|
if err != nil {
|
|
log.Error("GetAvDailyCharge rows scan error(%v)", err)
|
|
return
|
|
}
|
|
avs = append(avs, list)
|
|
}
|
|
err = rows.Err()
|
|
return
|
|
}
|
|
|
|
// GetColumnCharges get column daily charge
|
|
func (d *Dao) GetColumnCharges(c context.Context, aid int64) (cms []*model.ArchiveCharge, err error) {
|
|
cms = make([]*model.ArchiveCharge, 0)
|
|
rows, err := d.db.Query(c, _cmDailyChargeSQL, aid)
|
|
if err != nil {
|
|
log.Error("GetColumnCharge d.db.Query error(%v)", err)
|
|
return
|
|
}
|
|
defer rows.Close()
|
|
for rows.Next() {
|
|
var uploadTime int64
|
|
cm := &model.ArchiveCharge{}
|
|
err = rows.Scan(&cm.AID, &cm.MID, &cm.CategoryID, &uploadTime, &cm.Charge, &cm.Date)
|
|
if err != nil {
|
|
log.Error("GetColumnCharge rows scan error(%v)", err)
|
|
return
|
|
}
|
|
cm.UploadTime = xtime.Time(uploadTime)
|
|
cms = append(cms, cm)
|
|
}
|
|
err = rows.Err()
|
|
return
|
|
}
|
|
|
|
// GetBgmCharges get bgm daily charge
|
|
func (d *Dao) GetBgmCharges(c context.Context, aid int64) (bgms []*model.ArchiveCharge, err error) {
|
|
bgms = make([]*model.ArchiveCharge, 0)
|
|
rows, err := d.db.Query(c, _bgmDailyChargeSQL, aid)
|
|
if err != nil {
|
|
log.Error("GetBgmCharge d.db.Query error(%v)", err)
|
|
return
|
|
}
|
|
defer rows.Close()
|
|
for rows.Next() {
|
|
bgm := &model.ArchiveCharge{}
|
|
err = rows.Scan(&bgm.AID, &bgm.AvID, &bgm.MID, &bgm.UploadTime, &bgm.Charge, &bgm.Date)
|
|
if err != nil {
|
|
log.Error("GetBgmCharge rows scan error(%v)", err)
|
|
return
|
|
}
|
|
bgms = append(bgms, bgm)
|
|
}
|
|
err = rows.Err()
|
|
return
|
|
}
|
|
|
|
// GetArchiveChargeStatis get archive charge statis from table and query
|
|
func (d *Dao) GetArchiveChargeStatis(c context.Context, table, query string, from, limit int) (archs []*model.ArchiveChargeStatis, err error) {
|
|
archs = make([]*model.ArchiveChargeStatis, 0)
|
|
if table == "" || query == "" {
|
|
return nil, fmt.Errorf("error args table(%s), query(%s)", table, query)
|
|
}
|
|
rows, err := d.db.Query(c, fmt.Sprintf(_archiveChargeStatisTableSQL, table, query), from, limit)
|
|
if err != nil {
|
|
log.Error("GetArchiveChargeStatis d.db.Query error(%v)", err)
|
|
return
|
|
}
|
|
defer rows.Close()
|
|
for rows.Next() {
|
|
list := &model.ArchiveChargeStatis{}
|
|
err = rows.Scan(&list.Avs, &list.MoneySection, &list.MoneyTips, &list.Charge, &list.CategroyID, &list.CDate)
|
|
if err != nil {
|
|
log.Error("GetArchiveChargeStatis rows scan error(%v)", err)
|
|
return
|
|
}
|
|
archs = append(archs, list)
|
|
}
|
|
|
|
err = rows.Err()
|
|
return
|
|
}
|
|
|
|
// GetTotalCharge get total charge by table and aid
|
|
func (d *Dao) GetTotalCharge(c context.Context, table, query string) (total int64, err error) {
|
|
err = d.db.QueryRow(c, fmt.Sprintf(_archiveTotalChargeSQL, table, query)).Scan(&total)
|
|
if err == sql.ErrNoRows {
|
|
err = nil
|
|
}
|
|
return
|
|
}
|
|
|
|
// UpRatio get up charge ratio
|
|
func (d *Dao) UpRatio(c context.Context, from, limit int64) (ratio map[int64]int64, err error) {
|
|
ratio = make(map[int64]int64)
|
|
rows, err := d.db.Query(c, _upChargeRatioSQL, from, limit)
|
|
if err != nil {
|
|
log.Error("d.db.Query error(%v)", err)
|
|
return
|
|
}
|
|
defer rows.Close()
|
|
for rows.Next() {
|
|
var mid, charge int64
|
|
err = rows.Scan(&mid, &charge)
|
|
if err != nil {
|
|
log.Error("rows scan error(%v)", err)
|
|
return
|
|
}
|
|
ratio[mid] = charge
|
|
}
|
|
err = rows.Err()
|
|
return
|
|
}
|