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.
95 lines
2.3 KiB
95 lines
2.3 KiB
package income |
|
|
|
import ( |
|
"context" |
|
"fmt" |
|
|
|
model "go-common/app/admin/main/growup/model/income" |
|
|
|
"go-common/library/database/sql" |
|
"go-common/library/log" |
|
) |
|
|
|
// GetUpAccount get up_account |
|
func (s *Service) GetUpAccount(c context.Context, query string, isDeleted int) (ups []*model.UpAccount, err error) { |
|
from, limit := 0, 2000 |
|
for { |
|
var up []*model.UpAccount |
|
up, err = s.ListUpAccount(c, query, isDeleted, from, limit) |
|
if err != nil { |
|
return |
|
} |
|
ups = append(ups, up...) |
|
if len(up) < limit { |
|
break |
|
} |
|
from += limit |
|
} |
|
return |
|
} |
|
|
|
// TxUpAccountBreach up_account breach |
|
func (s *Service) TxUpAccountBreach(c context.Context, tx *sql.Tx, mid, preMonthBreach, thisMonthBreach int64) error { |
|
if mid <= 0 { |
|
return fmt.Errorf("请输入正确的mid,请确认") |
|
} |
|
if preMonthBreach < 0 { |
|
return fmt.Errorf("未提现金额必须大于等于零,请确认") |
|
} |
|
if thisMonthBreach < 0 { |
|
return fmt.Errorf("当前月未提现金额必须大于等于零,请确认") |
|
} |
|
|
|
times := 0 |
|
for { |
|
upAccount, err := s.dao.GetUpAccount(c, mid) |
|
if err != nil { |
|
log.Error("s.dao.GetUpAccount error(%v)", err) |
|
return err |
|
} |
|
|
|
total := upAccount.TotalIncome - preMonthBreach - thisMonthBreach |
|
unwithdraw := upAccount.TotalUnwithdrawIncome - preMonthBreach |
|
if total < 0 { |
|
log.Info("up_account(%d) total(%d) < 0", mid, total) |
|
total = 0 |
|
} |
|
if unwithdraw < 0 { |
|
log.Info("up_account(%d) total_unwithdraw_income(%d) < 0", mid, unwithdraw) |
|
unwithdraw = 0 |
|
} |
|
|
|
rows, err := s.dao.TxBreachUpAccount(tx, total, unwithdraw, mid, upAccount.Version+1, upAccount.Version) |
|
if err != nil { |
|
tx.Rollback() |
|
log.Error("s.dao.TxBreachUpAccount error(%v)", err) |
|
return err |
|
} |
|
if rows == 1 { |
|
break |
|
} |
|
|
|
times++ |
|
if times >= 5 { |
|
tx.Rollback() |
|
return fmt.Errorf("更新up主金额错误") |
|
} |
|
} |
|
return nil |
|
} |
|
|
|
// UpAccountCount get up_account count |
|
func (s *Service) UpAccountCount(c context.Context, query string, isDeleted int) (total int64, err error) { |
|
if query != "" { |
|
query += " AND" |
|
} |
|
return s.dao.UpAccountCount(c, query, isDeleted) |
|
} |
|
|
|
// ListUpAccount list up account bu query |
|
func (s *Service) ListUpAccount(c context.Context, query string, isDeleted, from, limit int) (ups []*model.UpAccount, err error) { |
|
if query != "" { |
|
query += " AND" |
|
} |
|
return s.dao.ListUpAccount(c, query, isDeleted, from, limit) |
|
}
|
|
|