diff --git a/niucloud/app/service/api/apiService/ResourceSharingService.php b/niucloud/app/service/api/apiService/ResourceSharingService.php index f2842d81..9d8091a2 100644 --- a/niucloud/app/service/api/apiService/ResourceSharingService.php +++ b/niucloud/app/service/api/apiService/ResourceSharingService.php @@ -348,9 +348,18 @@ class ResourceSharingService extends BaseApiService $resource_conditions[] = ['source_channel', 'like', '%' . $where['source_channel'] . '%']; } - // 年龄查询 - varchar类型使用like查询,支持模糊匹配(如4可匹配4.1、4.12、14、24等) + // 年龄查询 - 改进的模糊匹配,减少错误匹配(如4匹配4, 4.1, 4.12等,尽量减少5.4这种情况) if (isset($where['age']) && $where['age'] !== '' && $where['age'] !== null) { - $resource_conditions[] = ['age', 'like', '%' . trim($where['age']) . '%']; + $searchAge = trim($where['age']); + // 使用更精确的匹配条件:精确匹配、小数点开头、或者作为独立数字被分隔符包围 + $resource_conditions[] = function($query) use ($searchAge) { + $query->where('age', '=', $searchAge) + ->whereOr('age', 'like', $searchAge . '.%') + ->whereOr('age', 'like', '% ' . $searchAge . ' %') + ->whereOr('age', 'like', '%,' . $searchAge . ',%') + ->whereOr('age', 'like', $searchAge . ',%') + ->whereOr('age', 'like', '%,' . $searchAge); + }; } // 黑名单状态查询 @@ -992,9 +1001,18 @@ class ResourceSharingService extends BaseApiService $resource_conditions[] = ['source_channel', 'like', '%' . $where['source_channel'] . '%']; } - // 年龄查询 - varchar类型使用like查询,支持模糊匹配(如4可匹配4.1、4.12、14、24等) + // 年龄查询 - 改进的模糊匹配,减少错误匹配(如4匹配4, 4.1, 4.12等,尽量减少5.4这种情况) if (isset($where['age']) && $where['age'] !== '' && $where['age'] !== null) { - $resource_conditions[] = ['age', 'like', '%' . trim($where['age']) . '%']; + $searchAge = trim($where['age']); + // 使用更精确的匹配条件:精确匹配、小数点开头、或者作为独立数字被分隔符包围 + $resource_conditions[] = function($query) use ($searchAge) { + $query->where('age', '=', $searchAge) + ->whereOr('age', 'like', $searchAge . '.%') + ->whereOr('age', 'like', '% ' . $searchAge . ' %') + ->whereOr('age', 'like', '%,' . $searchAge . ',%') + ->whereOr('age', 'like', $searchAge . ',%') + ->whereOr('age', 'like', '%,' . $searchAge); + }; } // 黑名单状态查询