<?php

namespace app\controller\admin\api\v1;


use support\Request;
use App\Utils\ApiResponse;
use hg\apidoc\annotation as Apidoc;
use app\model\UserReward;

/**
 * @Apidoc\Title("积分明细控制器")
 * @Apidoc\Group("admin")
 */
class UserRewardController
{
    /**
     * @Apidoc\Title("1.0 获取系统所有积分明细")
     * @Apidoc\Url("admin/api/v1/userReward/lists")
     * @Apidoc\Method("POST")
     */
    public function lists(Request $request)
    {
        // 获取请求的参数
        $data = $request->post();

        // 构建查询构造器
        $query = UserReward::query();

        if (isset($data['updatedat']) && is_array($data['updatedat']) && count($data['updatedat']) == 2) {
            // 直接从数组中获取开始和结束日期
            $startDate = $data['updatedat'][0];
            $endDate = $data['updatedat'][1];

            if ($startDate === $endDate) {
                // 如果开始日期和结束日期相同,则查询这一天的所有记录
                $query->whereDate('updated_at', '=', $startDate);
            } else {
                // 否则查询日期范围内的记录
                $query->whereBetween('updated_at', [$startDate . ' 00:00:00', $endDate . ' 23:59:59']);
            }
        }

        // 根据 username 进行模糊查询
        if (!empty($data['username'])) {
            $query->where('username', 'like', '%' . $data['username'] . '%');
        }
        $query->orderBy('id', 'desc');
        // 执行查询并返回数据
        $users = $query->paginate($data['pageSize'], ['*'], 'page', $data['current']);

        // 格式化结果为数组
        return ApiResponse::success(200, $users);
    }
}