88 lines
2.5 KiB
Go
88 lines
2.5 KiB
Go
package dao
|
|
|
|
import (
|
|
"context"
|
|
"fmt"
|
|
|
|
"go-common/app/interface/main/growup/model"
|
|
"go-common/library/log"
|
|
xtime "go-common/library/time"
|
|
"go-common/library/xstr"
|
|
)
|
|
|
|
const (
|
|
// select
|
|
_avBreachSQL = "SELECT av_id, mid, cdate, money, ctype, reason FROM av_breach_record WHERE mid = ? AND cdate >= ? AND cdate <= ?"
|
|
_avBreachByAvIDSQL = "SELECT av_id, mid, cdate, money, reason FROM av_breach_record WHERE av_id in (%s) AND ctype = ?"
|
|
_avBreachByTypeSQL = "SELECT cdate, money FROM av_breach_record WHERE mid=? AND cdate >= ? AND cdate <= ? AND ctype in (%s)"
|
|
)
|
|
|
|
// ListAvBreach list av_breach_record by mid
|
|
func (d *Dao) ListAvBreach(c context.Context, mid int64, startTime, endTime string) (records []*model.AvBreach, err error) {
|
|
records = make([]*model.AvBreach, 0)
|
|
rows, err := d.db.Query(c, _avBreachSQL, mid, startTime, endTime)
|
|
if err != nil {
|
|
log.Error("ListAvBreach d.db.Query error(%v)", err)
|
|
return
|
|
}
|
|
defer rows.Close()
|
|
for rows.Next() {
|
|
r := &model.AvBreach{}
|
|
err = rows.Scan(&r.AvID, &r.MID, &r.CDate, &r.Money, &r.CType, &r.Reason)
|
|
if err != nil {
|
|
log.Error("ListAvBreach rows.Scan error(%v)", err)
|
|
return
|
|
}
|
|
records = append(records, r)
|
|
}
|
|
|
|
err = rows.Err()
|
|
return
|
|
}
|
|
|
|
// GetAvBreachByType get av breach record
|
|
func (d *Dao) GetAvBreachByType(c context.Context, mid int64, begin string, end string, typ []int64) (rs map[xtime.Time]int64, err error) {
|
|
if len(typ) == 0 {
|
|
typ = []int64{0, 1, 2, 3}
|
|
}
|
|
rows, err := d.db.Query(c, fmt.Sprintf(_avBreachByTypeSQL, xstr.JoinInts(typ)), mid, begin, end)
|
|
if err != nil {
|
|
log.Error("GetAvBreachByType d.db.Query error(%v)", err)
|
|
return
|
|
}
|
|
rs = make(map[xtime.Time]int64)
|
|
defer rows.Close()
|
|
for rows.Next() {
|
|
var cdate xtime.Time
|
|
var money int64
|
|
err = rows.Scan(&cdate, &money)
|
|
if err != nil {
|
|
log.Error("GetAvBreachByType rows.Scan error(%v)", err)
|
|
return
|
|
}
|
|
rs[cdate] += money
|
|
}
|
|
return
|
|
}
|
|
|
|
// GetAvBreachs get av_breach map by avids
|
|
func (d *Dao) GetAvBreachs(c context.Context, avs []int64, ctype int) (breachs map[int64]*model.AvBreach, err error) {
|
|
breachs = make(map[int64]*model.AvBreach)
|
|
rows, err := d.db.Query(c, fmt.Sprintf(_avBreachByAvIDSQL, xstr.JoinInts(avs)), ctype)
|
|
if err != nil {
|
|
log.Error("ListAvBreach d.db.Query error(%v)", err)
|
|
return
|
|
}
|
|
defer rows.Close()
|
|
for rows.Next() {
|
|
r := &model.AvBreach{}
|
|
if err = rows.Scan(&r.AvID, &r.MID, &r.CDate, &r.Money, &r.Reason); err != nil {
|
|
log.Error("ListAvBreach rows.Scan error(%v)", err)
|
|
return
|
|
}
|
|
breachs[r.AvID] = r
|
|
}
|
|
err = rows.Err()
|
|
return
|
|
}
|