fix(distribution): 修复收号站订单详情权限、专属支付通道路由、大盘统计与仲裁积分隔离
- 修复 FindOrder 在收号站模式(two_party_distributor_receive / three_party)下的 403 权限判定,放行参与方站点成员并精准计算收益 - 串联 distribution_site_payment_channels 至 payment.Start 核心支付发起流程,分销订单优先使用绑定的专属商户通道 - 修复数据大盘 GetDashboardAnalytics 趋势中 ReceivedCount 恒为 0 的问题,并对齐今日订单与 GMV 统计 - 修复 dispute/arbitration.go 仲裁完成时向分销租客发放成长积分的泄漏风险 - 提现管理新增 distribution_site_name/distribution_site_code 字段并在后台列表与详情弹窗中区分展示分销站 - GetPublicSiteInfo 增加 X-Distribution-Site-Code 请求头兜底支持
This commit is contained in:
@@ -161,6 +161,30 @@ func (c runtimePaymentConfig) isMockMode() bool {
|
||||
return c.Provider == "mock"
|
||||
}
|
||||
|
||||
// resolveOrderRuntimeConfig 根据订单所属分销站点配置或全局默认配置解析运行时支付配置。
|
||||
func (r *Repository) resolveOrderRuntimeConfig(ctx context.Context, tx *gorm.DB, siteID *uint64, payWay string) (*runtimePaymentConfig, error) {
|
||||
if siteID != nil && *siteID > 0 {
|
||||
var configID uint64
|
||||
queryDB := tx
|
||||
if queryDB == nil {
|
||||
queryDB = r.db
|
||||
}
|
||||
err := queryDB.WithContext(ctx).Table("distribution_site_payment_channels dspc").
|
||||
Joins("JOIN payment_merchant_configs pmc ON pmc.id = dspc.config_id").
|
||||
Where("dspc.site_id = ? AND dspc.status = 'active' AND pmc.status = 'active' AND (pmc.pay_way = ? OR pmc.pay_way = '')", *siteID, payWay).
|
||||
Order("dspc.priority ASC, dspc.id ASC").
|
||||
Limit(1).
|
||||
Pluck("pmc.id", &configID).Error
|
||||
if err == nil && configID > 0 && r.configRepo != nil {
|
||||
dto, err := r.configRepo.FindRuntimeByID(ctx, configID, true)
|
||||
if err == nil {
|
||||
return runtimeConfigFromDTO(dto), nil
|
||||
}
|
||||
}
|
||||
}
|
||||
return r.defaultRuntimeConfig(ctx, payWay)
|
||||
}
|
||||
|
||||
// defaultRuntimeConfig 按支付方式获取默认启用配置,用于新支付单创建。
|
||||
func (r *Repository) defaultRuntimeConfig(ctx context.Context, payWay string) (*runtimePaymentConfig, error) {
|
||||
if r.configRepo == nil {
|
||||
|
||||
Reference in New Issue
Block a user