merge transactions and update

This commit is contained in:
lzx
2025-10-31 13:46:58 +08:00
parent 056bc05b75
commit 8d7da5d345
12 changed files with 1154 additions and 975 deletions

View File

@@ -22,9 +22,10 @@ type RabbitMQServer struct {
cancel context.CancelFunc
// 消息处理回调函数
OnTopupMsg func(message.TopupMsg_req) // 充值请求回调
OnWithdrawMsg func(message.WithdrawMsg_req) // 提现请求回调
OnPayMsg func(message.PayMsg_req) // 支付请求回调
OnTopupMsg func(message.TopupMsg_req) // 充值请求回调
OnWithdrawMsg func(message.WithdrawMsg_req) // 提现请求回调
OnPayMsg func(message.PayMsg_req) // 支付请求回调
OnRemoveMsg func(message.RemoveListenMsg_req) // 删除充值监听回调
}
// NewRabbitMQServer 创建 RabbitMQ 服务
@@ -68,9 +69,11 @@ func (r *RabbitMQServer) setupQueuesAndExchanges() error {
r.config.PayConfig,
r.config.TopUpConfig,
r.config.WithdrawConfig,
r.config.RemoveConfig,
r.config.PayRespConfig,
r.config.TopUpRespConfig,
r.config.WithdrawRespConfig,
r.config.RemoveRespConfig,
}
for _, cfg := range configs {
@@ -131,6 +134,8 @@ func (r *RabbitMQServer) Start() error {
go r.consumeWithdraw()
// 启动支付消息监听
go r.consumePay()
// 启动删除充值监听
go r.consumeRemove()
// log.Println("🚀 RabbitMQ 服务启动成功,开始监听消息...")
return nil
@@ -188,8 +193,8 @@ func (r *RabbitMQServer) consumePay() {
if err := json.Unmarshal(body, &msg); err != nil {
return fmt.Errorf("failed to parse pay message: %w", err)
}
log.Printf("📥 [RMQ] 收到支付请求: QueueId=%s, OrderId=%s, From=%s, To=%s, Amount=%.2f %s",
msg.QueueId, msg.OrderId, msg.FromAddress, msg.ToAddress, msg.Amount, msg.Symbol)
log.Printf("📥 [RMQ] 收到支付请求: QueueId=%s, From=%s, Chain=%s, Symbol=%s, TxCount=%d",
msg.QueueId, msg.FromAddress, msg.Chain, msg.Symbol, len(msg.Trasnactions))
if r.OnPayMsg != nil {
r.OnPayMsg(msg)
@@ -199,6 +204,26 @@ func (r *RabbitMQServer) consumePay() {
)
}
// consumeRemove 消费删除充值监听消息
func (r *RabbitMQServer) consumeRemove() {
r.consumeQueue(
r.config.RemoveConfig.QueueName,
"remove",
func(body []byte) error {
var msg message.RemoveListenMsg_req
if err := json.Unmarshal(body, &msg); err != nil {
return fmt.Errorf("failed to parse remove message: %w", err)
}
log.Printf("📥 [RMQ] 收到删除充值监听: Chain=%s, Symbol=%s, Address=%s", msg.Chain, msg.Symbol, msg.Address)
if r.OnRemoveMsg != nil {
r.OnRemoveMsg(msg)
}
return nil
},
)
}
// consumeQueue 通用队列消费方法
func (r *RabbitMQServer) consumeQueue(queueName, msgType string, handler func([]byte) error) {
for {
@@ -268,8 +293,16 @@ func (r *RabbitMQServer) PublishPayResp(resp message.PayMsg_resp) error {
return r.publishMessage(
r.config.PayRespConfig,
resp,
fmt.Sprintf("支付响应: QueueId=%s, OrderId=%s, Status=%d, TxHash=%s",
resp.QueueId, resp.OrderId, resp.Status, resp.TxHash),
"支付响应",
)
}
// PublishRemoveResp 发布删除充值监听响应
func (r *RabbitMQServer) PublishRemoveResp(resp message.RemoveListenMsg_resp) error {
return r.publishMessage(
r.config.RemoveRespConfig,
resp,
fmt.Sprintf("删除充值监听响应: Address=%s, Status=%d", resp.Address, resp.Status),
)
}