商品利润镜像:订单时间按字符串日期解析后再筛选排序 #449

Merged
renshen merged 1 commits from fix/renshen-afs-date-format into main 2026-10-21 22:22:52 +08:00

View File

@ -101,7 +101,7 @@ class GoodsProfitAfsRepository
$query = $this->filtered($filters, $columns)->select($select);
if ($orderColumn !== null) {
$query->orderByDesc($orderColumn);
$query->orderByRaw("STR_TO_DATE(REPLACE(`{$orderColumn}`, '/', '-'), '%Y-%m-%d %H:%i:%s') desc");
}
$records = $query->orderByDesc('id')->forPage($page, $limit + 1)->get();
@ -143,12 +143,17 @@ class GoodsProfitAfsRepository
$sku = trim((string) ($filters['sku_id'] ?? ''));
$shops = array_values(array_filter((array) ($filters['shop_names'] ?? []), static fn ($v) => trim((string) $v) !== ''));
if ($from !== '' && isset($columns['order_time'])) {
$query->where($columns['order_time'], '>=', $from . ' 00:00:00');
}
// 原表的订单时间是字符串(如 2026/8/23 14:58:51,不补零),不能直接和 ISO 日期做字符串比较。
if (($from !== '' || $to !== '') && isset($columns['order_time'])) {
$expression = "STR_TO_DATE(REPLACE(`{$columns['order_time']}`, '/', '-'), '%Y-%m-%d %H:%i:%s')";
if ($to !== '' && isset($columns['order_time'])) {
$query->where($columns['order_time'], '<=', $to . ' 23:59:59');
if ($from !== '') {
$query->whereRaw($expression . ' >= ?', [$from . ' 00:00:00']);
}
if ($to !== '') {
$query->whereRaw($expression . ' <= ?', [$to . ' 23:59:59']);
}
}
if ($shops !== [] && isset($columns['shop_name'])) {