diff --git a/app/common/service/FinPaymentApplyService.php b/app/common/service/FinPaymentApplyService.php index f451ce4..19a2f3f 100644 --- a/app/common/service/FinPaymentApplyService.php +++ b/app/common/service/FinPaymentApplyService.php @@ -174,11 +174,11 @@ class FinPaymentApplyService // 构建查询 $query = $this->modelClass::where($where); - // 应用是否有关联收款记录的筛选 + // 是否已关联收款记录的筛选 $correlation = $param['correlation']??''; - if ($correlation === 'receipt') { + if ($correlation === 'receipt') { //已关联 $query->whereHas('receipt'); - } elseif ($correlation === 'unbind') { + } elseif ($correlation === 'unbind') { //未关联 $query->whereDoesntHave('receipt'); } @@ -186,7 +186,7 @@ class FinPaymentApplyService return $query->paginate($limit, ['*'], 'page', $page); } - // 计算七天前的时间戳 + // 计算十天前的时间戳 $sevenDaysAgo = time() - (10 * 24 * 60 * 60); // 构建相似度排序逻辑 @@ -197,8 +197,18 @@ class FinPaymentApplyService $similarityOrder[] = "CASE WHEN account_id = {$param['account_id']} THEN 0 ELSE 1 END"; } - if (isset($param['country_id']) && !empty($param['country_id'])) { - $similarityOrder[] = "CASE WHEN country_id = {$param['country_id']} THEN 0 ELSE 1 END"; + if (isset($param['currency_id']) && !empty($param['currency_id'])) { + $similarityOrder[] = "CASE WHEN currency_id = {$param['currency_id']} THEN 0 ELSE 1 END"; + } + + if (isset($param['remitter']) && !empty($param['remitter'])) { + $similarityOrder[] = "CASE WHEN remitter = {$param['remitter']} THEN 0 ELSE 1 END"; + } + + if (isset($param['amount']) && !empty($param['amount'])) { + $amount = (float)$param['amount']; + $similarityOrder[] = "ABS(amount - {$amount}) ASC"; + $similarityOrder[] = "CASE WHEN (ABS(amount - {$amount}) / {$amount} * 100) <= 5 THEN 0 ELSE 1 END"; } if (isset($param['keyword']) && $param['keyword']) { @@ -206,11 +216,6 @@ class FinPaymentApplyService $similarityOrder[] = "CASE WHEN remitter LIKE '%{$keyword}%' THEN 0 ELSE 1 END"; } - if (isset($param['amount']) && !empty($param['amount'])) { - $amount = (float)$param['amount']; - $similarityOrder[] = "ABS(amount - {$amount})"; - } - // 构建排序SQL $orderByClause = ""; if (!empty($similarityOrder)) {