63 lines
1.3 KiB
Go
63 lines
1.3 KiB
Go
package service
|
|
|
|
import (
|
|
"context"
|
|
"time"
|
|
|
|
"go-common/app/job/main/ugcpay/conf"
|
|
"go-common/library/log"
|
|
)
|
|
|
|
func dayRange(offset int) (from, to time.Time) {
|
|
tmp := time.Now().AddDate(0, 0, offset)
|
|
from = time.Date(tmp.Year(), tmp.Month(), tmp.Day(), 0, 0, 0, 0, time.Local)
|
|
to = from.Add(24*time.Hour - 1)
|
|
return
|
|
}
|
|
|
|
func monthRange(offset int) (from, to time.Time) {
|
|
tmp := time.Now().AddDate(0, offset, 0)
|
|
from = time.Date(tmp.Year(), tmp.Month(), 1, 0, 0, 0, 0, time.Local)
|
|
to = from.AddDate(0, 1, 0).Add(-1)
|
|
return
|
|
}
|
|
|
|
func dailyBillVer(t time.Time) int64 {
|
|
// 2006-01-02 15:04:05
|
|
return int64(t.Year()*10000 + int(t.Month())*100 + t.Day())
|
|
}
|
|
|
|
func monthlyBillVer(t time.Time) int64 {
|
|
return int64(t.Year()*100 + int(t.Month()))
|
|
}
|
|
|
|
func runCAS(ctx context.Context, fn func(ctx context.Context) (effected bool, err error)) (err error) {
|
|
times := conf.Conf.Biz.RunCASTimes
|
|
if times <= 0 {
|
|
times = 2
|
|
}
|
|
effected := false
|
|
for times > 0 {
|
|
times--
|
|
if effected, err = fn(ctx); err != nil {
|
|
return
|
|
}
|
|
if effected {
|
|
return
|
|
}
|
|
}
|
|
if times <= 0 {
|
|
log.Error("runCAS failed!!!")
|
|
}
|
|
return
|
|
}
|
|
|
|
func calcAssetIncome(fee int64) (userIncome int64, bizIncome int64) {
|
|
if fee <= 0 {
|
|
return 0, 0
|
|
}
|
|
userIncome = int64((1.0 - conf.Conf.Biz.Tax.AssetRate) * float64(fee))
|
|
bizIncome = fee - userIncome
|
|
return
|
|
}
|