fix(user): 兼容分销商合伙股东字段缺失异常并补充数据库升级脚本

这个提交包含在:
chen
2026-09-17 17:04:28 +08:00
父节点 14bc2a6463
当前提交 67295504ad
共有 3 个文件被更改,包括 22 次插入 和 3 次删除

查看文件

@@ -54,7 +54,17 @@ class UserFilter extends BaseFilter
}
if ($value === 'partner') {
return $query->whereExists(function ($sub) use ($current, $agentTable) {
$sub->table($agentTable)->where($agentTable . '.user_id=' . $current . '.id')->where('is_partner', 1);
$sub->table($agentTable)->where($agentTable . '.user_id=' . $current . '.id');
try {
$fields = (new AgentModel())->getTableFields();
if (in_array('is_partner', $fields)) {
$sub->where('is_partner', 1);
} else {
$sub->where('level', '>=', 1);
}
} catch (\Exception $e) {
$sub->where('level', '>=', 1);
}
});
}
return $query;

查看文件

@@ -16,7 +16,8 @@ SET @prefix = (
ALTER TABLE `__PREFIX__shopro_commission_agent`
ADD COLUMN `is_venue` tinyint(1) NOT NULL DEFAULT 0 COMMENT '酒道馆' AFTER `level`,
ADD COLUMN `is_county` tinyint(1) NOT NULL DEFAULT 0 COMMENT '区县代理' AFTER `is_venue`,
ADD COLUMN `county_code` varchar(20) NOT NULL DEFAULT '' COMMENT '区县编码' AFTER `is_county`,
ADD COLUMN `is_partner` tinyint(1) NOT NULL DEFAULT 0 COMMENT '合伙股东' AFTER `is_county`,
ADD COLUMN `county_code` varchar(20) NOT NULL DEFAULT '' COMMENT '区县编码' AFTER `is_partner`,
ADD COLUMN `direct_order_seq` int(11) NOT NULL DEFAULT 0 COMMENT '直推合格单累计(推三返一)' AFTER `county_code`,
ADD COLUMN `madow` decimal(20,8) NOT NULL DEFAULT 0.00000000 COMMENT '马豆' AFTER `direct_order_seq`,
ADD COLUMN `voucher_total` decimal(12,2) NOT NULL DEFAULT 0.00 COMMENT '兑换券总额' AFTER `madow`,
@@ -25,6 +26,7 @@ ALTER TABLE `__PREFIX__shopro_commission_agent`
ADD COLUMN `last_self_order_time` bigint(16) DEFAULT NULL COMMENT '本人最近合格订单时间' AFTER `voucher_used`,
ADD KEY `idx_venue` (`is_venue`),
ADD KEY `idx_county` (`is_county`),
ADD KEY `idx_partner` (`is_partner`),
ADD KEY `idx_last_self_order` (`last_self_order_time`);
-- 2. 收益流水

查看文件

@@ -72,12 +72,19 @@ class User extends Common
}
}
$hasPartnerCol = false;
try {
$hasPartnerCol = in_array('is_partner', Db::name('shopro_commission_agent')->getTableFields());
} catch (\Exception $e) {
$hasPartnerCol = false;
}
$stats = [
'total_users' => UserModel::count(),
'maker_count' => Db::name('shopro_commission_agent')->where('level', '>=', 2)->count(),
'venue_count' => Db::name('shopro_commission_agent')->where('is_venue', 1)->count(),
'county_count' => Db::name('shopro_commission_agent')->where('is_county', 1)->count(),
'partner_count' => Db::name('shopro_commission_agent')->where('is_partner', 1)->count(),
'partner_count' => $hasPartnerCol ? Db::name('shopro_commission_agent')->where('is_partner', 1)->count() : 0,
'active_count' => Db::name('shopro_commission_agent')->where('last_self_order_time', '>=', $now - $days * 86400)->count(),
];