Files

266 lines
8.9 KiB
Go

package queue
import (
"encoding/json"
"github.com/dujiao-next/internal/constants"
"github.com/hibiken/asynq"
)
const (
// TaskOrderStatusEmail 订单状态邮件通知任务
TaskOrderStatusEmail = constants.TaskOrderStatusEmail
// TaskOrderAutoFulfill 自动交付任务
TaskOrderAutoFulfill = constants.TaskOrderAutoFulfill
// TaskOrderTimeoutCancel 超时取消任务
TaskOrderTimeoutCancel = constants.TaskOrderTimeoutCancel
// TaskWalletRechargeExpire 钱包充值超时过期任务
TaskWalletRechargeExpire = constants.TaskWalletRechargeExpire
// TaskNotificationDispatch 通知中心分发任务
TaskNotificationDispatch = constants.TaskNotificationDispatch
// TaskAffiliateConfirmCommissions 佣金到期确认任务
TaskAffiliateConfirmCommissions = constants.TaskAffiliateConfirmCommissions
// TaskAffiliateOrderPaid 支付后佣金创建失败时的重试任务
TaskAffiliateOrderPaid = constants.TaskAffiliateOrderPaid
// TaskResellerConfirmLedger 分销商账务到期确认任务
TaskResellerConfirmLedger = constants.TaskResellerConfirmLedger
// TaskUpstreamSyncStock 上游库存同步任务
TaskUpstreamSyncStock = constants.TaskUpstreamSyncStock
// TaskProcurementSubmit 采购提交任务
TaskProcurementSubmit = constants.TaskProcurementSubmit
// TaskProcurementPollStatus 采购状态轮询任务
TaskProcurementPollStatus = constants.TaskProcurementPollStatus
// TaskProcurementSyncAccepted 采购单定时巡检任务
TaskProcurementSyncAccepted = constants.TaskProcurementSyncAccepted
// TaskDownstreamCallback 下游回调通知任务
TaskDownstreamCallback = constants.TaskDownstreamCallback
// TaskReconciliationRun 对账执行任务
TaskReconciliationRun = constants.TaskReconciliationRun
// TaskBotNotify Bot 交付通知任务
TaskBotNotify = constants.TaskBotNotify
// TaskTelegramBroadcast Telegram 群发任务
TaskTelegramBroadcast = constants.TaskTelegramBroadcast
)
// OrderStatusEmailPayload 订单状态邮件任务载荷
type OrderStatusEmailPayload struct {
OrderID uint `json:"order_id"`
RefundRecordID uint `json:"refund_record_id,omitempty"`
Status string `json:"status"`
}
// OrderAutoFulfillPayload 自动交付任务载荷
type OrderAutoFulfillPayload struct {
OrderID uint `json:"order_id"`
}
// AffiliateOrderPaidPayload 佣金创建重试任务载荷
type AffiliateOrderPaidPayload struct {
OrderID uint `json:"order_id"`
}
// OrderTimeoutCancelPayload 超时取消任务载荷
type OrderTimeoutCancelPayload struct {
OrderID uint `json:"order_id"`
}
// WalletRechargeExpirePayload 钱包充值超时过期任务载荷
type WalletRechargeExpirePayload struct {
PaymentID uint `json:"payment_id"`
}
// NotificationDispatchPayload 通知中心分发任务载荷
type NotificationDispatchPayload struct {
EventType string `json:"event_type"`
BizType string `json:"biz_type"`
BizID uint `json:"biz_id"`
Locale string `json:"locale"`
Force bool `json:"force"`
Data map[string]interface{} `json:"data"`
}
// NewOrderStatusEmailTask 创建订单状态邮件任务
func NewOrderStatusEmailTask(payload OrderStatusEmailPayload) (*asynq.Task, error) {
body, err := json.Marshal(payload)
if err != nil {
return nil, err
}
return asynq.NewTask(TaskOrderStatusEmail, body), nil
}
// NewOrderAutoFulfillTask 创建自动交付任务
func NewOrderAutoFulfillTask(payload OrderAutoFulfillPayload) (*asynq.Task, error) {
body, err := json.Marshal(payload)
if err != nil {
return nil, err
}
return asynq.NewTask(TaskOrderAutoFulfill, body), nil
}
// NewAffiliateOrderPaidTask 创建佣金创建重试任务
func NewAffiliateOrderPaidTask(payload AffiliateOrderPaidPayload) (*asynq.Task, error) {
body, err := json.Marshal(payload)
if err != nil {
return nil, err
}
return asynq.NewTask(TaskAffiliateOrderPaid, body), nil
}
// NewOrderTimeoutCancelTask 创建超时取消任务
func NewOrderTimeoutCancelTask(payload OrderTimeoutCancelPayload) (*asynq.Task, error) {
body, err := json.Marshal(payload)
if err != nil {
return nil, err
}
return asynq.NewTask(TaskOrderTimeoutCancel, body), nil
}
// NewWalletRechargeExpireTask 创建钱包充值超时过期任务
func NewWalletRechargeExpireTask(payload WalletRechargeExpirePayload) (*asynq.Task, error) {
body, err := json.Marshal(payload)
if err != nil {
return nil, err
}
return asynq.NewTask(TaskWalletRechargeExpire, body), nil
}
// NewNotificationDispatchTask 创建通知中心分发任务
func NewNotificationDispatchTask(payload NotificationDispatchPayload) (*asynq.Task, error) {
body, err := json.Marshal(payload)
if err != nil {
return nil, err
}
return asynq.NewTask(TaskNotificationDispatch, body), nil
}
// NewNotificationInventoryAlertCheckTask 创建库存告警巡检任务
func NewNotificationInventoryAlertCheckTask() (*asynq.Task, error) {
return NewNotificationDispatchTask(NotificationDispatchPayload{
EventType: constants.NotificationEventExceptionAlertCheck,
BizType: constants.NotificationBizTypeDashboardAlert,
BizID: 0,
Data: map[string]interface{}{
"message": "scheduled_inventory_alert_check",
},
})
}
// NewAffiliateConfirmCommissionsTask 创建佣金到期确认任务
func NewAffiliateConfirmCommissionsTask() *asynq.Task {
return asynq.NewTask(TaskAffiliateConfirmCommissions, nil)
}
// NewResellerConfirmLedgerTask 创建分销商账务到期确认任务。
func NewResellerConfirmLedgerTask() *asynq.Task {
return asynq.NewTask(TaskResellerConfirmLedger, nil)
}
// NewUpstreamSyncStockTask 创建上游库存同步任务
func NewUpstreamSyncStockTask() *asynq.Task {
return asynq.NewTask(TaskUpstreamSyncStock, nil)
}
// NewProcurementSyncAcceptedTask 创建采购单定时巡检任务
func NewProcurementSyncAcceptedTask() *asynq.Task {
return asynq.NewTask(TaskProcurementSyncAccepted, nil)
}
// ProcurementSubmitPayload 采购提交任务载荷
type ProcurementSubmitPayload struct {
ProcurementOrderID uint `json:"procurement_order_id"`
}
// NewProcurementSubmitTask 创建采购提交任务
func NewProcurementSubmitTask(payload ProcurementSubmitPayload) (*asynq.Task, error) {
body, err := json.Marshal(payload)
if err != nil {
return nil, err
}
return asynq.NewTask(TaskProcurementSubmit, body), nil
}
// ProcurementPollStatusPayload 采购状态轮询任务载荷
type ProcurementPollStatusPayload struct {
ProcurementOrderID uint `json:"procurement_order_id"`
}
// NewProcurementPollStatusTask 创建采购状态轮询任务
func NewProcurementPollStatusTask(payload ProcurementPollStatusPayload) (*asynq.Task, error) {
body, err := json.Marshal(payload)
if err != nil {
return nil, err
}
return asynq.NewTask(TaskProcurementPollStatus, body), nil
}
// ReconciliationRunPayload 对账执行任务载荷
type ReconciliationRunPayload struct {
JobID uint `json:"job_id"`
}
// NewReconciliationRunTask 创建对账执行任务
func NewReconciliationRunTask(payload ReconciliationRunPayload) (*asynq.Task, error) {
body, err := json.Marshal(payload)
if err != nil {
return nil, err
}
return asynq.NewTask(TaskReconciliationRun, body), nil
}
// DownstreamCallbackPayload 下游回调通知任务载荷
type DownstreamCallbackPayload struct {
DownstreamOrderRefID uint `json:"downstream_order_ref_id"`
}
// NewDownstreamCallbackTask 创建下游回调通知任务
func NewDownstreamCallbackTask(payload DownstreamCallbackPayload) (*asynq.Task, error) {
body, err := json.Marshal(payload)
if err != nil {
return nil, err
}
return asynq.NewTask(TaskDownstreamCallback, body), nil
}
// BotNotifyPayload Bot 交付通知任务载荷
type BotNotifyPayload struct {
EventType string `json:"event_type,omitempty"`
OrderID uint `json:"order_id"`
TelegramUserID string `json:"telegram_user_id"`
RechargeNo string `json:"recharge_no,omitempty"`
Amount string `json:"amount,omitempty"`
Currency string `json:"currency,omitempty"`
}
const (
// BotNotifyEventOrderPaid 订单支付成功通知事件。
BotNotifyEventOrderPaid = "order_paid"
// BotNotifyEventOrderFulfilled 订单交付通知事件。
BotNotifyEventOrderFulfilled = "order_fulfilled"
// BotNotifyEventWalletRechargeSucceeded 钱包充值成功通知事件。
BotNotifyEventWalletRechargeSucceeded = "wallet_recharge_succeeded"
)
// NewBotNotifyTask 创建 Bot 交付通知任务
func NewBotNotifyTask(payload BotNotifyPayload) (*asynq.Task, error) {
body, err := json.Marshal(payload)
if err != nil {
return nil, err
}
return asynq.NewTask(TaskBotNotify, body), nil
}
// TelegramBroadcastPayload Telegram 群发任务载荷。
type TelegramBroadcastPayload struct {
BroadcastID uint `json:"broadcast_id"`
}
// NewTelegramBroadcastTask 创建 Telegram 群发任务。
func NewTelegramBroadcastTask(payload TelegramBroadcastPayload) (*asynq.Task, error) {
body, err := json.Marshal(payload)
if err != nil {
return nil, err
}
return asynq.NewTask(TaskTelegramBroadcast, body), nil
}