133 lines
3.2 KiB
Go
133 lines
3.2 KiB
Go
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()
|
|
}
|