71 lines
1.5 KiB
Go
71 lines
1.5 KiB
Go
|
package income
|
||
|
|
||
|
import (
|
||
|
"context"
|
||
|
|
||
|
incomeD "go-common/app/job/main/growup/dao/income"
|
||
|
model "go-common/app/job/main/growup/model/income"
|
||
|
)
|
||
|
|
||
|
// ChargeRatioSvr charge ratio service
|
||
|
type ChargeRatioSvr struct {
|
||
|
dao *incomeD.Dao
|
||
|
}
|
||
|
|
||
|
// NewChargeRatioSvr new charge ratio service
|
||
|
func NewChargeRatioSvr(dao *incomeD.Dao) *ChargeRatioSvr {
|
||
|
return &ChargeRatioSvr{dao: dao}
|
||
|
}
|
||
|
|
||
|
// ArchiveChargeRatio get av charge ratio
|
||
|
func (p *ChargeRatioSvr) ArchiveChargeRatio(c context.Context, limit int64) (rs map[int]map[int64]*model.ArchiveChargeRatio, err error) {
|
||
|
rs = make(map[int]map[int64]*model.ArchiveChargeRatio)
|
||
|
var id int64
|
||
|
for {
|
||
|
var ros map[int]map[int64]*model.ArchiveChargeRatio
|
||
|
ros, id, err = p.dao.ArchiveChargeRatio(c, id, limit)
|
||
|
if err != nil {
|
||
|
return
|
||
|
}
|
||
|
if len(ros) == 0 {
|
||
|
break
|
||
|
}
|
||
|
for ctype, m := range ros {
|
||
|
if _, ok := rs[ctype]; ok {
|
||
|
for aid, ratio := range m {
|
||
|
rs[ctype][aid] = ratio
|
||
|
}
|
||
|
} else {
|
||
|
rs[ctype] = m
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
return
|
||
|
}
|
||
|
|
||
|
// UpChargeRatio get up charge ratio
|
||
|
func (p *ChargeRatioSvr) UpChargeRatio(c context.Context, limit int64) (rs map[int]map[int64]*model.UpChargeRatio, err error) {
|
||
|
rs = make(map[int]map[int64]*model.UpChargeRatio)
|
||
|
var id int64
|
||
|
for {
|
||
|
var ros map[int]map[int64]*model.UpChargeRatio
|
||
|
ros, id, err = p.dao.UpChargeRatio(c, id, limit)
|
||
|
if err != nil {
|
||
|
return
|
||
|
}
|
||
|
if len(ros) == 0 {
|
||
|
break
|
||
|
}
|
||
|
for ctype, m := range ros {
|
||
|
if _, ok := rs[ctype]; ok {
|
||
|
for mid, ratio := range m {
|
||
|
rs[ctype][mid] = ratio
|
||
|
}
|
||
|
} else {
|
||
|
rs[ctype] = m
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
return
|
||
|
}
|