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.7 KiB
68 lines
1.7 KiB
package income |
|
|
|
import ( |
|
"context" |
|
"strconv" |
|
"strings" |
|
|
|
model "go-common/app/job/main/growup/model/income" |
|
|
|
xtime "go-common/library/time" |
|
) |
|
|
|
func (s *UpIncomeSvr) handleUpArchStatis(c context.Context, upArchStatisCh chan map[int64]*model.UpArchStatis, archiveCh chan []*model.ArchiveIncome) (err error) { |
|
defer close(upArchStatisCh) |
|
upArchMap := make(map[int64]*model.UpArchStatis) |
|
for income := range archiveCh { |
|
s.calUpArchStatis(income, upArchMap) |
|
} |
|
upArchStatisCh <- upArchMap |
|
return |
|
} |
|
|
|
func (s *UpIncomeSvr) calUpArchStatis(incomes []*model.ArchiveIncome, upArch map[int64]*model.UpArchStatis) { |
|
for _, income := range incomes { |
|
if _, ok := upArch[income.MID]; !ok { |
|
upArch[income.MID] = addUpArchStatis(income) |
|
} |
|
updateUpArchStatis(income.AID, income.Date, upArch[income.MID]) |
|
} |
|
} |
|
|
|
func addUpArchStatis(income *model.ArchiveIncome) *model.UpArchStatis { |
|
return &model.UpArchStatis{ |
|
MID: income.MID, |
|
WeeklyDate: xtime.Time(startWeeklyDate.Unix()), |
|
WeeklyAIDs: "", |
|
MonthlyDate: xtime.Time(startMonthlyDate.Unix()), |
|
MonthlyAIDs: "", |
|
} |
|
} |
|
|
|
func updateUpArchStatis(aid int64, date xtime.Time, statis *model.UpArchStatis) { |
|
idStr := strconv.FormatInt(aid, 10) |
|
if date >= statis.WeeklyDate { |
|
if statis.WeeklyAIDs == "" { |
|
statis.WeeklyAIDs = idStr |
|
} else if !isExist(idStr, statis.WeeklyAIDs) { |
|
statis.WeeklyAIDs += "," + idStr |
|
} |
|
} |
|
if date >= statis.MonthlyDate { |
|
if statis.MonthlyAIDs == "" { |
|
statis.MonthlyAIDs = idStr |
|
} else if !isExist(idStr, statis.MonthlyAIDs) { |
|
statis.MonthlyAIDs += "," + idStr |
|
} |
|
} |
|
} |
|
|
|
func isExist(id string, old string) bool { |
|
oldSli := strings.Split(old, ",") |
|
for _, str := range oldSli { |
|
if id == str { |
|
return true |
|
} |
|
} |
|
return false |
|
}
|
|
|