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.
68 lines
1.9 KiB
68 lines
1.9 KiB
package income |
|
|
|
import ( |
|
"context" |
|
|
|
model "go-common/app/job/main/growup/model/income" |
|
|
|
"go-common/library/log" |
|
) |
|
|
|
const ( |
|
_avChargeRatioSQL = "SELECT id,av_id,ratio,adjust_type,ctype FROM av_charge_ratio WHERE id > ? ORDER BY id LIMIT ?" |
|
_upChargeRatioSQL = "SELECT id,mid,ratio,adjust_type,ctype FROM up_charge_ratio WHERE id > ? ORDER BY id LIMIT ?" |
|
) |
|
|
|
// ArchiveChargeRatio map[ctype]map[archive_id]*archiveChargeRatio |
|
func (d *Dao) ArchiveChargeRatio(c context.Context, id int64, limit int64) (m map[int]map[int64]*model.ArchiveChargeRatio, last int64, err error) { |
|
rows, err := d.db.Query(c, _avChargeRatioSQL, id, limit) |
|
if err != nil { |
|
log.Error("d.db.Query AvChargeRatio error(%v)", err) |
|
return |
|
} |
|
m = make(map[int]map[int64]*model.ArchiveChargeRatio) |
|
defer rows.Close() |
|
for rows.Next() { |
|
ratio := &model.ArchiveChargeRatio{} |
|
err = rows.Scan(&last, &ratio.ArchiveID, &ratio.Ratio, &ratio.AdjustType, &ratio.CType) |
|
if err != nil { |
|
log.Error("AvChargeRatio scan error(%v)", err) |
|
return |
|
} |
|
if ac, ok := m[ratio.CType]; ok { |
|
ac[ratio.ArchiveID] = ratio |
|
} else { |
|
m[ratio.CType] = map[int64]*model.ArchiveChargeRatio{ |
|
ratio.ArchiveID: ratio, |
|
} |
|
} |
|
} |
|
return |
|
} |
|
|
|
// UpChargeRatio get every day up charge ratio |
|
func (d *Dao) UpChargeRatio(c context.Context, id int64, limit int64) (m map[int]map[int64]*model.UpChargeRatio, last int64, err error) { |
|
rows, err := d.db.Query(c, _upChargeRatioSQL, id, limit) |
|
if err != nil { |
|
log.Error("d.db.Query UpChargeRatio error(%v)", err) |
|
return |
|
} |
|
m = make(map[int]map[int64]*model.UpChargeRatio) |
|
defer rows.Close() |
|
for rows.Next() { |
|
ratio := &model.UpChargeRatio{} |
|
err = rows.Scan(&last, &ratio.MID, &ratio.Ratio, &ratio.AdjustType, &ratio.CType) |
|
if err != nil { |
|
log.Error("UpChargeRatio scan error(%v)", err) |
|
return |
|
} |
|
if ur, ok := m[ratio.CType]; ok { |
|
ur[ratio.MID] = ratio |
|
} else { |
|
m[ratio.CType] = map[int64]*model.UpChargeRatio{ |
|
ratio.MID: ratio, |
|
} |
|
} |
|
} |
|
return |
|
}
|
|
|