增加后台功能

This commit is contained in:
lingling 2025-02-19 20:42:25 +08:00
parent bc500d8610
commit d56a1d1d4a
8 changed files with 136 additions and 120 deletions

View File

@ -13,6 +13,7 @@ use Tinywan\Jwt\JwtToken;
/** /**
* @Apidoc\Title("admin用户控制器") * @Apidoc\Title("admin用户控制器")
* @Apidoc\Group("admin")
*/ */
class AccountController class AccountController
{ {

View File

@ -2,15 +2,17 @@
namespace app\controller\admin\api\v1; namespace app\controller\admin\api\v1;
use app\dao\UserDao;
use support\Request; use support\Request;
use App\Utils\ApiResponse; use App\Utils\ApiResponse;
use App\model\Admin; use App\model\Admin;
use app\model\User; use app\model\User;
use hg\apidoc\annotation as Apidoc; use hg\apidoc\annotation as Apidoc;
use app\model\Withdraw;
/** /**
* @Apidoc\Title("用户列表控制器") * @Apidoc\Title("用户控制器")
* @Apidoc\Group("admin")
*/ */
class JobuserController class JobuserController
{ {
@ -41,7 +43,7 @@ class JobuserController
$user->save(); $user->save();
return ApiResponse::success(200, []); return ApiResponse::success(200, []);
} }
/** /**
* @Apidoc\Title("1.0 解禁用户") * @Apidoc\Title("1.0 解禁用户")
* @Apidoc\Url("admin/api/v1/Jobuser/outblack") * @Apidoc\Url("admin/api/v1/Jobuser/outblack")
* @Apidoc\Method("POST") * @Apidoc\Method("POST")
@ -56,4 +58,77 @@ class JobuserController
$user->save(); $user->save();
return ApiResponse::success(200, []); 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, []);
}
} }

View File

@ -14,6 +14,7 @@ use support\exception\BusinessException;
/** /**
* @Apidoc\Title("上传文件控制器") * @Apidoc\Title("上传文件控制器")
* @Apidoc\Group("admin")
*/ */
class UploadController class UploadController
{ {

View File

@ -15,7 +15,7 @@ use hg\apidoc\annotation as Apidoc;
use support\Db; use support\Db;
/** /**
* @Apidoc\Title("公共控制器?") * @Apidoc\Title("抽奖控制器")
*/ */
class TurntableController class TurntableController
@ -30,16 +30,15 @@ class TurntableController
*/ */
public function lists(Request $request) public function lists(Request $request)
{ {
$res=Reward::all(); $res=Reward::all();
return ApiResponseApp::success($res); return ApiResponseApp::success($res);
} }
/** /**
* @Apidoc\Title("1.0 抽奖点击后 返回抽奖结构) * Apidoc\Title("1.0 抽奖点击后 返回抽奖结构)
* @Apidoc\Url("api/Tturntable/lottery") * Apidoc\Url("api/Tturntable/lottery")
* @Apidoc\Method("POST") * Apidoc\Method("POST")
*/ */
public function lottery(Request $request) public function lottery(Request $request)
{ {

View File

@ -14,7 +14,7 @@ use App\dao\UserDao;
use app\dao\UserPhoneLogDao; use app\dao\UserPhoneLogDao;
use app\dao\UserRewardDao; use app\dao\UserRewardDao;
use app\model\UserReward; use app\model\UserReward;
use hg\apidoc\annotation as Apidoc;
/** /**
* @Apidoc\Title("用户控制器") * @Apidoc\Title("用户控制器")
*/ */

View File

@ -4,9 +4,14 @@ namespace app\dao;
use App\model\Users; use App\model\Users;
use App\model\BankLog; use App\model\BankLog;
use app\model\Signlog;
use App\Utils\FunctionResponse; use App\Utils\FunctionResponse;
use App\model\User; use App\model\User;
use app\model\UserPhone;
use app\model\UserPhoneLog;
use App\model\UserReward; use App\model\UserReward;
use app\model\Withdraw;
class UserDao class UserDao
{ {
/** /**
@ -119,4 +124,19 @@ class UserDao
$query = UserReward::where('status', 5)->where('user_id', $user_id)->sum('money'); $query = UserReward::where('status', 5)->where('user_id', $user_id)->sum('money');
return $query; return $query;
} }
/**
* 删除用户
*/
public static function del($user_id){
User::find($user_id)->delete();
$UserPhone=UserPhone::where('user_id',$user_id)->get();
foreach($UserPhone as $v){
UserPhoneLog::where('phone',$v->phone)->delete();
$v->delete();
}
UserReward::where('user_id',$user_id)->delete();
Withdraw::where('user_id')->delete();
Signlog::where('user_id',$user_id)->delete();
return 0;
}
} }

View File

@ -56,89 +56,5 @@ class User extends Model
*/ */
public $timestamps = true; // 如果不需要自动维护创建和更新时间,可以将此设置为 false public $timestamps = true; // 如果不需要自动维护创建和更新时间,可以将此设置为 false
/**
* The attributes that are mass assignable.
*
* @var array
*/
protected $fillable = [
'username',
'invite_code',
'is_active',
'login_ip',
'join_ip',
'login_time',
'prev_time',
'status',
'money',
'admin_money',
'all_team_money',
'task_income_money',
'task_status',
'today_task_income',
'today_team_income',
'growth_value',
'vip_id',
'withdraw_money',
'f_id',
'ff_id',
'fff_id',
'top_id',
'path',
'remark',
'createtime',
'updatetime',
];
/**
* The attributes that should be cast to native types.
*
* @var array
*/
protected $casts = [
'money' => 'integer',
'admin_money' => 'integer',
'all_team_money' => 'integer',
'task_income_money' => 'integer',
'today_task_income' => 'integer',
'today_team_income' => 'integer',
'growth_value' => 'integer',
'withdraw_money' => 'integer',
'createtime' => 'integer',
'updatetime' => 'integer',
'status' => 'integer',
];
/**
* 获取登录时间的格式化值
*
* @param mixed $value
* @return string
*/
public function getLoginTimeAttribute($value)
{
return date('Y-m-d H:i:s', $value);
}
/**
* 获取创建时间的格式化值
*
* @param mixed $value
* @return string
*/
public function getCreatetimeAttribute($value)
{
return date('Y-m-d H:i:s', $value);
}
/**
* 获取更新时间的格式化值
*
* @param mixed $value
* @return string
*/
public function getUpdatetimeAttribute($value)
{
return date('Y-m-d H:i:s', $value);
}
} }

View File

@ -10,11 +10,15 @@ return [
'apps' => [ 'apps' => [
[ [
// (必须)标题 // (必须)标题
'title'=>'Api接口', 'title' => 'Api接口',
// (必须)控制器目录地址 // (必须)控制器目录地址
'path'=>'app\controller', 'path' => 'app\controller',
// 必须唯一的key // 必须唯一的key
'key'=>'api', 'key' => 'api',
'groups' => [
['title' => '基础模块', 'name' => 'base'],
['title' => '管理员', 'name' => 'admin']
]
] ]
], ],
// (必须)指定通用注释定义的文件地址 // (必须)指定通用注释定义的文件地址
@ -24,10 +28,10 @@ return [
// 字母规则lcfirst=首字母小写ucfirst=首字母大写; // 字母规则lcfirst=首字母小写ucfirst=首字母大写;
'letter_rule' => "lcfirst", 'letter_rule' => "lcfirst",
// url前缀 // url前缀
'prefix'=>"", 'prefix' => "",
], ],
// (选配)是否自动注册路由 // (选配)是否自动注册路由
'auto_register_routes'=>false, 'auto_register_routes' => false,
// (必须)缓存配置 // (必须)缓存配置
'cache' => [ 'cache' => [
// 是否开启缓存 // 是否开启缓存
@ -42,56 +46,56 @@ return [
// 密码加密盐 // 密码加密盐
'secret_key' => "apidoc#hg_code", 'secret_key' => "apidoc#hg_code",
// 授权访问后的有效期 // 授权访问后的有效期
'expire' => 24*60*60 'expire' => 24 * 60 * 60
], ],
// 全局参数 // 全局参数
'params'=>[ 'params' => [
// 选配全局的请求Header // 选配全局的请求Header
'header'=>[ 'header' => [
// name=字段名type=字段类型require=是否必须default=默认值desc=字段描述 // name=字段名type=字段类型require=是否必须default=默认值desc=字段描述
['name'=>'Authorization','type'=>'string','require'=>true,'desc'=>'身份令牌Token'], ['name' => 'Authorization', 'type' => 'string', 'require' => true, 'desc' => '身份令牌Token'],
], ],
// 选配全局的请求Query // 选配全局的请求Query
'query'=>[ 'query' => [
// 同上 header // 同上 header
], ],
// 选配全局的请求Body // 选配全局的请求Body
'body'=>[ 'body' => [
// 同上 header // 同上 header
], ],
], ],
// 全局响应体 // 全局响应体
'responses'=>[ 'responses' => [
// 成功响应体 // 成功响应体
'success'=>[ 'success' => [
['name'=>'code','desc'=>'业务代码','type'=>'int','require'=>1], ['name' => 'code', 'desc' => '业务代码', 'type' => 'int', 'require' => 1],
['name'=>'message','desc'=>'业务信息','type'=>'string','require'=>1], ['name' => 'message', 'desc' => '业务信息', 'type' => 'string', 'require' => 1],
//参数同上 headersmain=true来指定接口Returned参数挂载节点 //参数同上 headersmain=true来指定接口Returned参数挂载节点
['name'=>'data','desc'=>'业务数据','main'=>true,'type'=>'object','require'=>1], ['name' => 'data', 'desc' => '业务数据', 'main' => true, 'type' => 'object', 'require' => 1],
], ],
// 异常响应体 // 异常响应体
'error'=>[ 'error' => [
['name'=>'code','desc'=>'业务代码','type'=>'int','require'=>1,'md'=>'/docs/HttpError.md'], ['name' => 'code', 'desc' => '业务代码', 'type' => 'int', 'require' => 1, 'md' => '/docs/HttpError.md'],
['name'=>'message','desc'=>'业务信息','type'=>'string','require'=>1], ['name' => 'message', 'desc' => '业务信息', 'type' => 'string', 'require' => 1],
] ]
], ],
//(选配)默认作者 //(选配)默认作者
'default_author'=>'', 'default_author' => '',
//(选配)默认请求类型 //(选配)默认请求类型
'default_method'=>'GET', 'default_method' => 'GET',
//选配Apidoc允许跨域访问 //选配Apidoc允许跨域访问
'allowCrossDomain'=>false, 'allowCrossDomain' => false,
/** /**
* (选配)解析时忽略带@注解的关键词,当注解中存在带@字符并且非Apidoc注解 @key test此时Apidoc页面报类似以下错误时: * (选配)解析时忽略带@注解的关键词,当注解中存在带@字符并且非Apidoc注解 @key test此时Apidoc页面报类似以下错误时:
* [Semantical Error] The annotation "@key" in method xxx() was never imported. Did you maybe forget to add a "use" statement for this annotation? * [Semantical Error] The annotation "@key" in method xxx() was never imported. Did you maybe forget to add a "use" statement for this annotation?
*/ */
'ignored_annitation'=>[], 'ignored_annitation' => [],
// (选配)数据库配置 // (选配)数据库配置
'database'=>[], 'database' => [],
// 选配Markdown文档 // 选配Markdown文档
'docs' => [], 'docs' => [],
// (选配)接口生成器配置 注意:是一个二维数组 // (选配)接口生成器配置 注意:是一个二维数组
'generator' =>[] 'generator' => []
] ]
]; ];