| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162 |
- 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
- }
|