Переглянути джерело

feat(points): 优化用户积分流水查询功能

- 添加 Query 类引入以支持时间范围查询
- 实现 create_time 搜索字段的时间范围筛选功能
- 在统计查询中增加 type 字段搜索支持
- 修复时间范围查询的表别名引用问题
runphp 2 місяців тому
батько
коміт
d813f39d5f
1 змінених файлів з 5 додано та 2 видалено
  1. 5 2
      src/Entity/UserPointLogEntity.php

+ 5 - 2
src/Entity/UserPointLogEntity.php

@@ -5,6 +5,7 @@ namespace SixShop\Points\Entity;
 
 use SixShop\Core\Entity\BaseEntity;
 use SixShop\Points\Model\UserPointLogModel;
+use think\db\Query;
 use think\Paginator;
 
 /**
@@ -14,7 +15,9 @@ class UserPointLogEntity extends BaseEntity
 {
     public function getList(array $params, array $pageAndLimit): Paginator
     {
-        return $this->withSearch(['user_id', 'type', 'create_time'], $params)
+        return $this->withSearch(['user_id', 'type', 'create_time' => function (Query $query, $value) {
+            $value && $query->whereBetweenTime('user_point_log_model.create_time', $value[0], $value[1]);
+        }], $params)
             ->withJoin(['user' => ['nickname']])
             ->order('id', 'desc')
             ->paginate($pageAndLimit);
@@ -22,7 +25,7 @@ class UserPointLogEntity extends BaseEntity
 
     public function getStats(array $params)
     {
-        return $this->withSearch(['user_id', 'create_time'], $params)->field(
+        return $this->withSearch(['user_id', 'type', 'create_time'], $params)->field(
             [
                 'SUM(CASE WHEN point > 0 THEN point ELSE 0 END) AS positive_total',
                 'SUM(CASE WHEN point < 0 THEN point ELSE 0 END) AS negative_total',