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.
87 lines
2.5 KiB
87 lines
2.5 KiB
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 |
|
}
|
|
|