211 lines
7.1 KiB
PHP
211 lines
7.1 KiB
PHP
<?php
|
||
|
||
namespace app\controller\admin\api\v1;
|
||
|
||
use app\dao\UserDao;
|
||
use support\Request;
|
||
use App\Utils\ApiResponse;
|
||
use App\model\Admin;
|
||
use app\model\User;
|
||
use app\model\UserPhone;
|
||
use app\model\UserPhoneLog;
|
||
use hg\apidoc\annotation as Apidoc;
|
||
use app\model\Withdraw;
|
||
|
||
/**
|
||
* @Apidoc\Title("用户控制器")
|
||
* @Apidoc\Group("admin")
|
||
*/
|
||
class JobuserController
|
||
{
|
||
/**
|
||
* @Apidoc\Title("1.0 获取用户列表")
|
||
* @Apidoc\Url("admin/api/v1/Jobuser/lists")
|
||
* @Apidoc\Method("POST")
|
||
* @Apidoc\Param("username", type="string",require=true, desc="用户名")
|
||
* @Apidoc\Param("password", type="string",require=true, desc="密码")
|
||
*/
|
||
public function lists(Request $request)
|
||
{
|
||
// 获取请求的参数
|
||
$data = $request->post();
|
||
|
||
// 构建查询构造器
|
||
$query = User::query();
|
||
|
||
// 根据 key 进行模糊查询
|
||
if (!empty($data['key'])) {
|
||
$key = $data['key'];
|
||
$query->where(function ($query) use ($key) {
|
||
$query->where('username', 'like', '%' . $key . '%')
|
||
->orWhere('invite_code', 'like', '%' . $key . '%')
|
||
->orWhere('remark', 'like', '%' . $key . '%');
|
||
});
|
||
}
|
||
|
||
// 根据 status 过滤,假设 status 字段存在并且不是 -1
|
||
if (isset($data['status']) && $data['status'] != -1) {
|
||
$status = (int)$data['status']; // 强制转换为整数
|
||
// 使用 users 表的别名明确指定 status 字段
|
||
$query->where('users.status', $status);
|
||
}
|
||
|
||
// 使用 join 进行关联查询 f_id 对应的用户名称
|
||
$users = $query->leftJoin('users as u', 'users.f_id', '=', 'u.id') // 假设 users 表有 id 字段,f_id 关联到父用户
|
||
->select('users.*', 'u.username as parent_username') // 选择用户表的字段和关联表的 username 字段
|
||
->get(); // 或者使用 paginate() 来进行分页
|
||
|
||
// 格式化结果为数组
|
||
return ApiResponse::success(200, $users->toArray());
|
||
}
|
||
|
||
/**
|
||
* @Apidoc\Title("1.0 封禁用户")
|
||
* @Apidoc\Url("admin/api/v1/Jobuser/black")
|
||
* @Apidoc\Method("POST")
|
||
* @Apidoc\Param("id", type="int",require=true, desc="用户id")
|
||
*/
|
||
public function black(Request $request)
|
||
{
|
||
// 获取请求数据
|
||
$data = $request->post();
|
||
$user = User::find($data['id']);
|
||
$user->status = 0;
|
||
$user->save();
|
||
return ApiResponse::success(200, []);
|
||
}
|
||
/**
|
||
* @Apidoc\Title("1.0 解禁用户")
|
||
* @Apidoc\Url("admin/api/v1/Jobuser/outblack")
|
||
* @Apidoc\Method("POST")
|
||
* @Apidoc\Param("id", type="int",require=true, desc="用户id")
|
||
*/
|
||
public function outblack(Request $request)
|
||
{
|
||
// 获取请求数据
|
||
$data = $request->post();
|
||
$user = User::find($data['id']);
|
||
$user->status = 1;
|
||
$user->save();
|
||
return ApiResponse::success(200, []);
|
||
}
|
||
/**
|
||
* @Apidoc\Title("1.0 查询用户树")
|
||
* @Apidoc\Url("admin/api/v1/Jobuser/getSonId")
|
||
* @Apidoc\Method("POST")
|
||
* @Apidoc\Param("id", type="int",require=true, desc="用户id")
|
||
*/
|
||
public function getSonId(Request $request)
|
||
{
|
||
// 获取请求数据
|
||
$data = $request->post();
|
||
$user = User::find($data['id']);
|
||
$user->status = 1;
|
||
$user->save();
|
||
return ApiResponse::success(200, []);
|
||
}
|
||
/**
|
||
* @Apidoc\Title("1.0 查询用户树")
|
||
* @Apidoc\Url("admin/api/v1/Jobuser/getSonId")
|
||
* @Apidoc\Method("POST")
|
||
* @Apidoc\Param("id", type="int",require=true, desc="用户id")
|
||
*/
|
||
public function del(Request $request)
|
||
{
|
||
// 获取请求数据
|
||
$data = $request->post();
|
||
UserDao::del($data['id']);
|
||
return ApiResponse::success(200, []);
|
||
}
|
||
/**
|
||
* @Apidoc\Title("1.0 查询用户提现记录")
|
||
* @Apidoc\Url("admin/api/v1/Jobuser/getWithdraw")
|
||
* @Apidoc\Method("POST")
|
||
* @Apidoc\Param("id", type="int",require=true, desc="用户id")
|
||
*/
|
||
public function getWithdraw(Request $request)
|
||
{
|
||
// 获取请求数据
|
||
$data = $request->post();
|
||
$Withdraw = Withdraw::where('user_id', $data['id'])->orderByDesc('id')->get();
|
||
return ApiResponse::success(200, $Withdraw);
|
||
}
|
||
/**
|
||
* @Apidoc\Title("1.0 修改用户备注")
|
||
* @Apidoc\Url("admin/api/v1/Jobuser/set_user_remark")
|
||
* @Apidoc\Method("POST")
|
||
* @Apidoc\Param("id", type="int",require=true, desc="用户id")
|
||
* @Apidoc\Param("remark", type="string",require=true, desc="用户备注")
|
||
*/
|
||
public function set_user_remark(Request $request)
|
||
{
|
||
// 获取请求数据
|
||
$data = $request->post();
|
||
$user = User::find($data['id']);
|
||
$user->remark = $data['remark'];
|
||
$user->save();
|
||
return ApiResponse::success(200, []);
|
||
}
|
||
/**
|
||
* @Apidoc\Title("1.0 修改用户密码")
|
||
* @Apidoc\Url("admin/api/v1/Jobuser/set_user_password")
|
||
* @Apidoc\Method("POST")
|
||
* @Apidoc\Param("id", type="int",require=true, desc="用户id")
|
||
* @Apidoc\Param("password", type="string",require=true, desc="密码")
|
||
*/
|
||
public function set_user_password(Request $request)
|
||
{
|
||
// 获取请求数据
|
||
$data = $request->post();
|
||
$user = User::find($data['id']);
|
||
$user->password = password_hash($data['password'], PASSWORD_DEFAULT);
|
||
$user->save();
|
||
return ApiResponse::success(200, []);
|
||
}
|
||
/**
|
||
* @Apidoc\Title("1.0 查看用户提现记录")
|
||
* @Apidoc\Url("admin/api/v1/Jobuser/set_user_password")
|
||
* @Apidoc\Method("POST")
|
||
* @Apidoc\Param("id", type="int",require=true, desc="用户id")
|
||
*/
|
||
public function get_user_withdraw(Request $request)
|
||
{
|
||
// 获取请求数据
|
||
$data = $request->post();
|
||
$Withdraw = Withdraw::where('user_id', $data['id'])->orderByDesc('id')->get();
|
||
return ApiResponse::success(200, $Withdraw);
|
||
}
|
||
/**
|
||
* @Apidoc\Title("1.0 查询用户手机号和在线时间")
|
||
* @Apidoc\Url("admin/api/v1/Jobuser/set_user_password")
|
||
* @Apidoc\Method("POST")
|
||
* @Apidoc\Param("id", type="username",require=true, desc="用户名称")
|
||
*/
|
||
public function get_user_wphone(Request $request)
|
||
{
|
||
// 获取请求数据
|
||
$data = $request->post();
|
||
|
||
$user=User::where('username',$data['username'])->first();
|
||
// 查询用户的手机号
|
||
$UserPhone = UserPhone::where('user_id', $user->id)->get();
|
||
|
||
// 创建一个数组来存储手机号和对应的在线时间
|
||
$userPhonesWithTime = [];
|
||
|
||
// 遍历每个手机号,查询该手机号的在线时间总和
|
||
foreach ($UserPhone as $v) {
|
||
$time = UserPhoneLog::where('phone', $v->phone)->sum('time');
|
||
// 将手机号和总时间添加到结果数组中
|
||
$userPhonesWithTime[] = [
|
||
'phone' => $v->phone,
|
||
'total_time' => floor($time/60)
|
||
];
|
||
}
|
||
$res['user']=$user;
|
||
$res['userPhonesWithTime']=$userPhonesWithTime;
|
||
// 返回计算结果
|
||
return ApiResponse::success(200, $res);
|
||
}
|
||
}
|