feat(distribution): 分销站点消息中心与钱包提现多租户独立分支隔离

- 新增 000070 数据库迁移:支持 chat_conversations、wallet_accounts、wallet_ledger、withdrawal_requests 按 distribution_site_id 隔离
- 消息中心:会话列表、未读数统计、站点专属客服及订单群聊与主站实现双向完全隔离
- 资金账户与提现:独立按 (user_id, distribution_site_id) 建账,分销订单自动结算至对应分站钱包,提现与流水相互独立
- 前台界面:Axios 自动透传 X-Distribution-Site-Code,钱包、提现与消息页面呈现分站专属标牌与独立说明
This commit is contained in:
yml2213
2026-09-07 18:11:27 +08:00
parent 72b805c499
commit e024319860
35 changed files with 1109 additions and 298 deletions
+18 -8
View File
@@ -273,15 +273,25 @@ func (r *Repository) ConfirmPaidFromChannelTx(tx *gorm.DB, orderID uint64) (uint
return 0, err
}
// 拉租客进发布群(替代原来的建订单群)
// 分销订单创建独立分站群聊;主站订单拉租客进发布群
conversationID := uint64(0)
if err := chat.AddRenterToListingConversation(tx, listing.ID, order.RenterID, order.OrderNo); err != nil {
return 0, err
}
// 查询发布群ID用于返回
var listingConv model.ChatConversation
if err := tx.Where("listing_id = ?", listing.ID).First(&listingConv).Error; err == nil {
conversationID = listingConv.ID
if order.DistributionSiteID != nil && *order.DistributionSiteID > 0 {
orderConv, err := chat.EnsureOrderConversation(tx, *order)
if err != nil {
return 0, err
}
if orderConv != nil {
conversationID = orderConv.ID
}
} else {
if err := chat.AddRenterToListingConversation(tx, listing.ID, order.RenterID, order.OrderNo); err != nil {
return 0, err
}
// 查询发布群ID用于返回
var listingConv model.ChatConversation
if err := tx.Where("listing_id = ?", listing.ID).First(&listingConv).Error; err == nil {
conversationID = listingConv.ID
}
}
if isPlatformHandoffOrder(*order) {