2025-02-16 00:28:13 +08:00
|
|
|
<?php
|
|
|
|
|
|
|
|
namespace app\controller\api;
|
|
|
|
|
|
|
|
use support\Request;
|
|
|
|
|
|
|
|
use App\Utils\ApiResponse;
|
|
|
|
use App\Utils\Random;
|
|
|
|
|
|
|
|
use Tinywan\Jwt\JwtToken;
|
|
|
|
use App\model\User;
|
2025-02-22 21:04:05 +08:00
|
|
|
use App\model\ActiveUsers;
|
2025-02-16 00:28:13 +08:00
|
|
|
use App\Utils\ApiResponseApp;
|
2025-02-17 10:33:26 +08:00
|
|
|
use App\dao\UserDao;
|
2025-02-18 21:24:11 +08:00
|
|
|
use app\dao\UserPhoneLogDao;
|
2025-02-17 11:49:38 +08:00
|
|
|
use app\dao\UserRewardDao;
|
|
|
|
use app\model\UserReward;
|
2025-02-19 20:42:25 +08:00
|
|
|
use hg\apidoc\annotation as Apidoc;
|
2025-02-16 00:28:13 +08:00
|
|
|
/**
|
|
|
|
* @Apidoc\Title("用户控制器")
|
|
|
|
*/
|
|
|
|
|
|
|
|
class UserController
|
|
|
|
{
|
|
|
|
|
|
|
|
/**
|
|
|
|
* 不需要登录的方法
|
|
|
|
*/
|
|
|
|
protected $noNeedLogin = ['login', 'register'];
|
|
|
|
|
|
|
|
/**
|
2025-02-16 10:57:04 +08:00
|
|
|
* @Apidoc\Title("1.0 登录")
|
|
|
|
* @Apidoc\Url("api/user/login")
|
|
|
|
* @Apidoc\Method("POST")
|
2025-02-16 00:28:13 +08:00
|
|
|
*/
|
|
|
|
public function login(Request $request)
|
|
|
|
{
|
|
|
|
// 获取请求数据
|
|
|
|
$username = $request->post('username');
|
|
|
|
$password = $request->post('password');
|
|
|
|
// 根据手机号查询用户
|
|
|
|
$user = User::where('username', '=', $username)->first();
|
|
|
|
|
2025-02-22 11:40:09 +08:00
|
|
|
|
2025-02-20 13:38:18 +08:00
|
|
|
|
2025-02-16 00:28:13 +08:00
|
|
|
// // 如果未找到用户,返回错误
|
|
|
|
if (!$user) {
|
2025-02-20 14:09:14 +08:00
|
|
|
return ApiResponseApp::error([],'账号或密码错误');
|
2025-02-16 00:28:13 +08:00
|
|
|
}
|
2025-02-22 11:40:09 +08:00
|
|
|
if($user->status==0){
|
|
|
|
return ApiResponseApp::error([],'账号被禁用');
|
|
|
|
}
|
2025-02-16 00:28:13 +08:00
|
|
|
// 验证密码是否正确
|
|
|
|
if (!password_verify($password, $user->password)) {
|
2025-02-20 14:09:14 +08:00
|
|
|
return ApiResponseApp::error([],'账号或密码错误');
|
2025-02-16 00:28:13 +08:00
|
|
|
}
|
|
|
|
$user->login_ip = $request->getRealIp($safe_mode = true);
|
|
|
|
$user->login_time = time();
|
|
|
|
$user->save();
|
|
|
|
$tmp = [
|
|
|
|
'id' => $user->id,
|
|
|
|
'username' => $user->username,
|
2025-02-16 10:57:04 +08:00
|
|
|
'access_exp' => 2592000,
|
2025-02-20 17:56:05 +08:00
|
|
|
'user_type' => 'user'
|
2025-02-16 00:28:13 +08:00
|
|
|
];
|
|
|
|
// 如果密码正确,生成 JWT 令牌
|
|
|
|
$token = JwtToken::generateToken($tmp);
|
2025-02-16 10:57:04 +08:00
|
|
|
$createtime = time();
|
2025-02-16 00:28:13 +08:00
|
|
|
// 返回成功响应和用户信息(可以将 token 添加到响应中)
|
2025-02-16 10:57:04 +08:00
|
|
|
$res = array('userinfo' => array('createtime' => $createtime, 'expires_in' => $tmp['access_exp'], 'expiretime' => $createtime + $tmp['access_exp'], 'id' => $user->id, 'money' => $user->money, 'token' => $token['access_token'], 'user_id' => $user->id, 'username' => $user->username));
|
|
|
|
return ApiResponseApp::success($res, '登录成功');
|
2025-02-16 00:28:13 +08:00
|
|
|
}
|
|
|
|
/**
|
2025-02-16 10:57:04 +08:00
|
|
|
* @Apidoc\Title("1.0 注册")
|
|
|
|
* @Apidoc\Url("api/user/register")
|
|
|
|
* @Apidoc\Method("POST")
|
2025-02-16 00:28:13 +08:00
|
|
|
*/
|
|
|
|
public function register(Request $request)
|
|
|
|
{
|
|
|
|
$username = $request->post('username');
|
|
|
|
$password = $request->post('password');
|
|
|
|
$invitation = $request->post('invitation');
|
|
|
|
|
|
|
|
if (User::where('username', $username)->count() > 0) {
|
|
|
|
return ApiResponseApp::error([], "账号已存在");
|
|
|
|
}
|
|
|
|
$f_id = 0;
|
2025-02-16 19:34:37 +08:00
|
|
|
$ff_id =0;
|
2025-02-16 00:28:13 +08:00
|
|
|
if (!empty($invitation)) {
|
|
|
|
if (User::where('invite_code', $invitation)->count() == 0) {
|
|
|
|
return ApiResponseApp::error([], "代理不存在");
|
|
|
|
} else {
|
2025-02-17 11:49:38 +08:00
|
|
|
$f = User::where('invite_code', $invitation)->first();
|
|
|
|
$f_id=$f->id;
|
|
|
|
$ff_id = $f->f_id;
|
2025-02-17 22:24:02 +08:00
|
|
|
$f->vip_id+=1;
|
2025-02-16 00:28:13 +08:00
|
|
|
}
|
|
|
|
}
|
|
|
|
$user = new User();
|
|
|
|
$col = ['username'];
|
|
|
|
foreach ($col as $v) {
|
|
|
|
$user->$v = $request->post($v);
|
|
|
|
}
|
|
|
|
$user->join_ip = $request->getRealIp($safe_mode = true);
|
|
|
|
$user->f_id = $f_id;
|
2025-02-16 19:34:37 +08:00
|
|
|
$user->ff_id = $ff_id;
|
2025-02-16 00:28:13 +08:00
|
|
|
$user->invite_code = Random::str_random(5);
|
|
|
|
$user->password = password_hash($password, PASSWORD_DEFAULT);
|
|
|
|
$user->save();
|
2025-02-17 11:49:38 +08:00
|
|
|
$user_new=User::where('username', $username)->first();
|
|
|
|
var_dump($user_new);
|
|
|
|
UserRewardDao::Register_for_free($user_new->id);
|
2025-02-16 00:28:13 +08:00
|
|
|
return ApiResponseApp::success([], '注册成功');
|
|
|
|
}
|
2025-02-16 10:57:04 +08:00
|
|
|
/**
|
|
|
|
* @Apidoc\Title("1.0 获取用户相关信息")
|
|
|
|
* @Apidoc\Url("api/user/userInfo")
|
|
|
|
* @Apidoc\Method("POST")
|
|
|
|
*/
|
|
|
|
public function userInfo(Request $request)
|
|
|
|
{
|
|
|
|
$user_id = $request->data['id'];
|
2025-02-17 10:33:26 +08:00
|
|
|
|
|
|
|
return ApiResponseApp::success(UserDao::get_index_userInfo($user_id));
|
2025-02-16 00:28:13 +08:00
|
|
|
}
|
2025-02-16 10:57:04 +08:00
|
|
|
/**
|
|
|
|
* @Apidoc\Title("1.0 获取用户佣金信息")
|
|
|
|
* @Apidoc\Url("api/user/team_info")
|
|
|
|
* @Apidoc\Method("POST")
|
|
|
|
*/
|
|
|
|
public function team_info(Request $request)
|
|
|
|
{
|
2025-02-18 21:24:11 +08:00
|
|
|
UserPhoneLogDao::getOnlineTimeByPhone6HoserUserId();
|
2025-02-16 10:57:04 +08:00
|
|
|
$user_id = $request->data['id'];
|
|
|
|
$user = User::find($user_id);
|
|
|
|
$res = [
|
|
|
|
//活跃用户数
|
2025-02-22 15:11:59 +08:00
|
|
|
// 'active_users' => UserDao::active_users($user_id),
|
2025-02-23 16:48:35 +08:00
|
|
|
'active_users' => $user->today_num + $user->active_figures,
|
2025-02-16 10:57:04 +08:00
|
|
|
//所有收入总和
|
2025-02-17 10:33:26 +08:00
|
|
|
'all_income' => UserDao::all_income($user_id),
|
2025-02-16 10:57:04 +08:00
|
|
|
//邀请码
|
|
|
|
'invite_code' => $user->invite_code,
|
|
|
|
//直属活跃
|
2025-02-22 14:55:50 +08:00
|
|
|
// 'level_1' => UserDao::level_1($user_id),
|
|
|
|
'level_1' => $user->today_num,
|
2025-02-16 10:57:04 +08:00
|
|
|
//今天收入
|
2025-02-17 10:33:26 +08:00
|
|
|
'today_income' => UserDao::today_team_income($user_id),
|
|
|
|
//昨天收入
|
|
|
|
'yesterday_income' => UserDao::today_team_income_old($user_id),
|
2025-02-16 10:57:04 +08:00
|
|
|
];
|
|
|
|
return ApiResponseApp::success($res);
|
|
|
|
}
|
2025-02-16 11:41:21 +08:00
|
|
|
|
|
|
|
/**
|
|
|
|
* @Apidoc\Title("1.0 修改密码")
|
|
|
|
* @Apidoc\Url("api/user/uppassword")
|
|
|
|
* @Apidoc\Method("POST")
|
|
|
|
*/
|
|
|
|
public function uppassword(Request $request)
|
|
|
|
{
|
|
|
|
$old_password = $request->post('old_password');
|
|
|
|
$new_password = $request->post('new_password');
|
|
|
|
$user_id=$request->data['id'];
|
|
|
|
$user=User::find($user_id);
|
|
|
|
if (!password_verify($old_password, $user->password)) {
|
|
|
|
return ApiResponseApp::error([], "原密码错误");
|
|
|
|
}
|
|
|
|
//修改密码
|
|
|
|
$user->password = password_hash($new_password, PASSWORD_DEFAULT);
|
|
|
|
//保存到数据库
|
|
|
|
$user->save();
|
2025-02-19 17:29:20 +08:00
|
|
|
return ApiResponseApp::success([],'修改成功');
|
|
|
|
}
|
|
|
|
/**
|
|
|
|
* @Apidoc\Title("1.0 获取活跃用户列表")
|
|
|
|
* @Apidoc\Url("api/user/active_user")
|
|
|
|
* @Apidoc\Method("POST")
|
|
|
|
*/
|
2025-02-22 21:04:05 +08:00
|
|
|
public function active_user(Request $request){
|
|
|
|
$user_id=$request->data['id'];
|
|
|
|
$activeUsers = ActiveUsers::where('user_id',$user_id)->get();
|
|
|
|
return ApiResponseApp::success($activeUsers);
|
2025-02-16 11:41:21 +08:00
|
|
|
}
|
2025-02-16 00:28:13 +08:00
|
|
|
}
|