package quota import ( "app/commons/core" "app/commons/model/entity" "github.com/shopspring/decimal" ) // 个人业绩矫正 // 活期以产品 UsdAmount 为基准 // todo:定期待开发 func (s *Service) personAchievementHandler() error { // 活期产品 -- 已聚合 userAllCurrentOrders, err := s.BatchStakeUserCurrentOrder(s.DB().Where("1=1")) if err != nil { return err } userAcMap := make(map[int64]decimal.Decimal) for _, item := range userAllCurrentOrders { userAcMap[item.UserId] = item.UsdAmount } // 对个人业绩进行重置 userQuotaMap := make(map[int64]*entity.UserQuota) quotas, err := s.BatchUserQuota(s.DB().Where("1=1")) if err != nil { return err } for _, item := range quotas { userQuotaMap[item.UserId] = item } for _, item := range quotas { ac, ok := userAcMap[item.UserId] if !ok { if item.PersonAchievement.GreaterThan(decimal.Zero) { err = s.DB().Model(&entity.UserQuota{}). Where("user_id", item.UserId). Updates(map[string]interface{}{ "person_achievement": decimal.Zero, }).Error if err != nil { core.JobLog.Errorf(err.Error()) } } continue } if !ac.Equal(item.PersonAchievement) { core.JobLog.Infof("用户:%s 个人业绩矫正:%s to %s", item.Uid, item.PersonAchievement, ac) err = s.DB(). Model(&entity.UserQuota{}). Where("user_id", item.UserId). Updates(map[string]interface{}{ "person_achievement": ac, }).Error if err != nil { return err } } } core.JobLog.Infof("更新个人业绩完成 用户总数:%d 信息完成", len(userAllCurrentOrders)) return nil }