123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277 |
- package income
- import (
- "bytes"
- "context"
- "strconv"
- incomeD "go-common/app/job/main/growup/dao/income"
- model "go-common/app/job/main/growup/model/income"
- )
- // UpIncomeSvr up income service
- type UpIncomeSvr struct {
- batchSize int
- dao *incomeD.Dao
- }
- // NewUpIncomeSvr new income service
- func NewUpIncomeSvr(dao *incomeD.Dao, batchSize int) (svr *UpIncomeSvr) {
- return &UpIncomeSvr{
- batchSize: batchSize,
- dao: dao,
- }
- }
- func (p *UpIncomeSvr) getUpIncomeByDate(c context.Context, upCh chan []*model.UpIncome, date string, limit int) (err error) {
- defer close(upCh)
- var id int64
- for {
- var up []*model.UpIncome
- up, err = p.dao.GetUpIncomeTable(c, "up_income", date, id, limit)
- if err != nil {
- return
- }
- upCh <- up
- if len(up) < limit {
- break
- }
- id = up[len(up)-1].ID
- }
- return
- }
- // BatchInsertUpIncome insert up_income batch
- func (p *UpIncomeSvr) BatchInsertUpIncome(c context.Context, us map[int64]*model.UpIncome) (err error) {
- var (
- buff = make([]*model.UpIncome, p.batchSize)
- buffEnd = 0
- )
- for _, u := range us {
- buff[buffEnd] = u
- buffEnd++
- if buffEnd >= p.batchSize {
- values := upIncomeValues(buff[:buffEnd])
- buffEnd = 0
- _, err = p.dao.InsertUpIncome(c, values)
- if err != nil {
- return
- }
- }
- }
- if buffEnd > 0 {
- values := upIncomeValues(buff[:buffEnd])
- buffEnd = 0
- _, err = p.dao.InsertUpIncome(c, values)
- }
- return
- }
- func upIncomeValues(us []*model.UpIncome) (values string) {
- var buf bytes.Buffer
- for _, u := range us {
- buf.WriteString("(")
- buf.WriteString(strconv.FormatInt(u.MID, 10))
- buf.WriteByte(',')
- buf.WriteString(strconv.FormatInt(u.AvCount, 10))
- buf.WriteByte(',')
- buf.WriteString(strconv.FormatInt(u.PlayCount, 10))
- buf.WriteByte(',')
- buf.WriteString(strconv.FormatInt(u.AvIncome, 10))
- buf.WriteByte(',')
- buf.WriteString(strconv.FormatInt(u.AudioIncome, 10))
- buf.WriteByte(',')
- buf.WriteString(strconv.FormatInt(u.ColumnCount, 10))
- buf.WriteByte(',')
- buf.WriteString(strconv.FormatInt(u.ColumnIncome, 10))
- buf.WriteByte(',')
- buf.WriteString(strconv.FormatInt(u.TaxMoney, 10))
- buf.WriteByte(',')
- buf.WriteString(strconv.FormatInt(u.Income, 10))
- buf.WriteByte(',')
- buf.WriteString(strconv.FormatInt(u.TotalIncome, 10))
- buf.WriteByte(',')
- buf.WriteString(strconv.FormatInt(u.AvBaseIncome, 10))
- buf.WriteByte(',')
- buf.WriteString(strconv.FormatInt(u.AvTax, 10))
- buf.WriteByte(',')
- buf.WriteString(strconv.FormatInt(u.ColumnBaseIncome, 10))
- buf.WriteByte(',')
- buf.WriteString(strconv.FormatInt(u.ColumnTax, 10))
- buf.WriteByte(',')
- buf.WriteString(strconv.FormatInt(u.BgmBaseIncome, 10))
- buf.WriteByte(',')
- buf.WriteString(strconv.FormatInt(u.BgmTax, 10))
- buf.WriteByte(',')
- buf.WriteString("'" + u.Date.Time().Format(_layout) + "'")
- buf.WriteByte(',')
- buf.WriteString(strconv.FormatInt(u.BaseIncome, 10))
- buf.WriteByte(',')
- buf.WriteString(strconv.FormatInt(u.BgmIncome, 10))
- buf.WriteByte(',')
- buf.WriteString(strconv.FormatInt(u.BgmCount, 10))
- buf.WriteByte(',')
- buf.WriteString(strconv.FormatInt(u.AvTotalIncome, 10))
- buf.WriteByte(',')
- buf.WriteString(strconv.FormatInt(u.ColumnTotalIncome, 10))
- buf.WriteByte(',')
- buf.WriteString(strconv.FormatInt(u.BgmTotalIncome, 10))
- buf.WriteString(")")
- buf.WriteByte(',')
- }
- if buf.Len() > 0 {
- buf.Truncate(buf.Len() - 1)
- }
- values = buf.String()
- buf.Reset()
- return
- }
- ///************************************************************ FOR HISTORY ****************************************************************/
- //
- //// UpdateBusinessIncomeByDate update business income by date
- //func (p *UpIncomeSvr) UpdateBusinessIncomeByDate(c context.Context, date string, ustat map[int64]*model.UpIncomeStat) (err error) {
- // us, err := p.businessTotalIncome(c, ustat, date)
- // if err != nil {
- // return
- // }
- // err = p.batchUpdateUpIncome(c, us)
- // if err != nil {
- // return
- // }
- // return p.batchUpdateUpIncomeStat(c, ustat)
- //}
- //
- //// for history data m: map[mid]map[date]*model.UpIncome
- //func (p *UpIncomeSvr) businessTotalIncome(c context.Context, ustat map[int64]*model.UpIncomeStat, date string) (m []*model.UpIncome, err error) {
- // var id int64
- // for {
- // var ups []*model.UpIncome
- // ups, err = p.dao.GetUpIncomeTable(c, "up_income", date, id, 2000)
- // if err != nil {
- // return
- // }
- // for _, up := range ups {
- // ut := ustat[up.MID]
- //
- // ut.AvTotalIncome += up.AvIncome
- // up.AvTotalIncome = ut.AvTotalIncome
- //
- // ut.ColumnTotalIncome += up.ColumnIncome
- // up.ColumnTotalIncome = ut.ColumnTotalIncome
- //
- // ut.BgmTotalIncome += up.BgmIncome
- // up.BgmTotalIncome = ut.BgmTotalIncome
- // m = append(m, up)
- // }
- // if len(ups) < 2000 {
- // break
- // }
- // id = ups[len(ups)-1].ID
- // }
- // return
- //}
- //
- //// BatchUpdateUpIncome insert up_income batch
- //func (p *UpIncomeSvr) batchUpdateUpIncome(c context.Context, us []*model.UpIncome) (err error) {
- // var (
- // buff = make([]*model.UpIncome, p.batchSize)
- // buffEnd = 0
- // )
- //
- // for _, u := range us {
- // buff[buffEnd] = u
- // buffEnd++
- //
- // if buffEnd >= p.batchSize {
- // values := businessValues(buff[:buffEnd])
- // buffEnd = 0
- // _, err = p.dao.FixInsertUpIncome(c, values)
- // if err != nil {
- // return
- // }
- // }
- // }
- // if buffEnd > 0 {
- // values := businessValues(buff[:buffEnd])
- // buffEnd = 0
- // _, err = p.dao.FixInsertUpIncome(c, values)
- // }
- // return
- //}
- //
- //func businessValues(us []*model.UpIncome) (values string) {
- // var buf bytes.Buffer
- // for _, u := range us {
- // buf.WriteString("(")
- // buf.WriteString(strconv.FormatInt(u.MID, 10))
- // buf.WriteByte(',')
- // buf.WriteString(strconv.FormatInt(u.AvTotalIncome, 10))
- // buf.WriteByte(',')
- // buf.WriteString(strconv.FormatInt(u.ColumnTotalIncome, 10))
- // buf.WriteByte(',')
- // buf.WriteString(strconv.FormatInt(u.BgmTotalIncome, 10))
- // buf.WriteByte(',')
- // buf.WriteString("'" + u.Date.Time().Format(_layout) + "'")
- // buf.WriteString(")")
- // buf.WriteByte(',')
- // }
- // if buf.Len() > 0 {
- // buf.Truncate(buf.Len() - 1)
- // }
- // values = buf.String()
- // buf.Reset()
- // return
- //}
- //
- //// BatchUpdateUpIncome insert up_income batch
- //func (p *UpIncomeSvr) batchUpdateUpIncomeStat(c context.Context, us map[int64]*model.UpIncomeStat) (err error) {
- // var (
- // buff = make([]*model.UpIncomeStat, p.batchSize)
- // buffEnd = 0
- // )
- //
- // for _, u := range us {
- // buff[buffEnd] = u
- // buffEnd++
- //
- // if buffEnd >= p.batchSize {
- // values := businessStatValues(buff[:buffEnd])
- // buffEnd = 0
- // _, err = p.dao.FixInsertUpIncomeStat(c, values)
- // if err != nil {
- // return
- // }
- // }
- // }
- // if buffEnd > 0 {
- // values := businessStatValues(buff[:buffEnd])
- // buffEnd = 0
- // _, err = p.dao.FixInsertUpIncomeStat(c, values)
- // }
- // return
- //}
- //
- //func businessStatValues(ustat []*model.UpIncomeStat) (values string) {
- // var buf bytes.Buffer
- // for _, u := range ustat {
- // buf.WriteString("(")
- // buf.WriteString(strconv.FormatInt(u.MID, 10))
- // buf.WriteByte(',')
- // buf.WriteString(strconv.FormatInt(u.AvTotalIncome, 10))
- // buf.WriteByte(',')
- // buf.WriteString(strconv.FormatInt(u.ColumnTotalIncome, 10))
- // buf.WriteByte(',')
- // buf.WriteString(strconv.FormatInt(u.BgmTotalIncome, 10))
- // buf.WriteString(")")
- // buf.WriteByte(',')
- // }
- // if buf.Len() > 0 {
- // buf.Truncate(buf.Len() - 1)
- // }
- // values = buf.String()
- // buf.Reset()
- // return
- //}
|