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.
132 lines
3.2 KiB
132 lines
3.2 KiB
package service |
|
|
|
import ( |
|
"context" |
|
"math/rand" |
|
"time" |
|
|
|
"go-common/app/job/main/ugcpay/conf" |
|
"go-common/app/job/main/ugcpay/dao" |
|
"go-common/app/job/main/ugcpay/service/pay" |
|
"go-common/library/queue/databus" |
|
|
|
"github.com/robfig/cron" |
|
) |
|
|
|
var ( |
|
ctx = context.Background() |
|
) |
|
|
|
// Service struct |
|
type Service struct { |
|
c *conf.Config |
|
dao *dao.Dao |
|
binlogMQ *databus.Databus |
|
elecBinlogMQ *databus.Databus |
|
cron *cron.Cron |
|
pay *pay.Pay |
|
taskLog *taskLog |
|
} |
|
|
|
// New init |
|
func New(c *conf.Config) (s *Service) { |
|
s = &Service{ |
|
c: c, |
|
dao: dao.New(c), |
|
binlogMQ: databus.New(c.BinlogMQ), |
|
elecBinlogMQ: databus.New(c.ElecBinlogMQ), |
|
cron: cron.New(), |
|
pay: &pay.Pay{ |
|
ID: conf.Conf.Biz.Pay.ID, |
|
Token: conf.Conf.Biz.Pay.Token, |
|
RechargeShellNotifyURL: conf.Conf.Biz.Pay.RechargeCallbackURL, |
|
}, |
|
} |
|
s.taskLog = &taskLog{ |
|
d: s.dao, |
|
} |
|
|
|
// 创建日账单任务 |
|
taskBillDaily := &taskBillDaily{ |
|
dao: s.dao, |
|
pay: s.pay, |
|
rnd: rand.New(rand.NewSource(time.Now().Unix())), |
|
dayOffset: conf.Conf.Biz.Task.DailyBillOffset, |
|
namePrefix: conf.Conf.Biz.Task.DailyBillPrefix, |
|
tl: s.taskLog, |
|
} |
|
|
|
if err := s.cron.AddFunc(conf.Conf.Biz.Cron.TaskDailyBill, s.wrapDisProc(taskBillDaily)); err != nil { |
|
panic(err) |
|
} |
|
|
|
// 创建up虚拟账户入账任务 |
|
taskAccountUser := &taskAccountUser{ |
|
dao: s.dao, |
|
taskPre: taskBillDaily, // 前置任务 |
|
dayOffset: conf.Conf.Biz.Task.DailyBillOffset, |
|
namePrefix: conf.Conf.Biz.Task.AccountUserPrefix, |
|
tl: s.taskLog, |
|
} |
|
|
|
if err := s.cron.AddFunc(conf.Conf.Biz.Cron.TaskAccountUser, s.wrapDisProc(taskAccountUser)); err != nil { |
|
panic(err) |
|
} |
|
|
|
// 创建资金池入账任务 |
|
taskAccountBiz := &taskAccountBiz{ |
|
dao: s.dao, |
|
taskPre: taskBillDaily, // 前置任务 |
|
dayOffset: conf.Conf.Biz.Task.DailyBillOffset, |
|
namePrefix: conf.Conf.Biz.Task.AccountBizPrefix, |
|
tl: s.taskLog, |
|
} |
|
|
|
if err := s.cron.AddFunc(conf.Conf.Biz.Cron.TaskAccountBiz, s.wrapDisProc(taskAccountBiz)); err != nil { |
|
panic(err) |
|
} |
|
|
|
// 创建月账单任务 |
|
taskBillMonthly := &taskBillMonthly{ |
|
dao: s.dao, |
|
rnd: rand.New(rand.NewSource(time.Now().Unix())), |
|
monthOffset: conf.Conf.Biz.Task.MonthBillOffset, |
|
namePrefix: conf.Conf.Biz.Task.MonthBillPrefix, |
|
tl: s.taskLog, |
|
} |
|
|
|
if err := s.cron.AddFunc(conf.Conf.Biz.Cron.TaskMonthlyBill, s.wrapDisProc(taskBillMonthly)); err != nil { |
|
panic(err) |
|
} |
|
|
|
// 创建转贝壳任务 |
|
taskRechargeShell := &taskRechargeShell{ |
|
dao: s.dao, |
|
pay: s.pay, |
|
rnd: rand.New(rand.NewSource(time.Now().Unix())), |
|
monthOffset: conf.Conf.Biz.Task.RechargeShellOffset, |
|
namePrefix: conf.Conf.Biz.Task.RechargeShellPrefix, |
|
tl: s.taskLog, |
|
} |
|
|
|
if err := s.cron.AddFunc(conf.Conf.Biz.Cron.TaskRechargeShell, s.wrapDisProc(taskRechargeShell)); err != nil { |
|
panic(err) |
|
} |
|
s.cron.Start() |
|
|
|
go s.binlogproc() |
|
go s.elecbinlogproc() |
|
|
|
// go s.repairOrderUser() 修复订单用 |
|
return s |
|
} |
|
|
|
// Ping Service |
|
func (s *Service) Ping(c context.Context) (err error) { |
|
return s.dao.Ping(c) |
|
} |
|
|
|
// Close Service |
|
func (s *Service) Close() { |
|
s.dao.Close() |
|
}
|
|
|