增加docke部署

This commit is contained in:
2026-04-10 16:44:13 +08:00
parent e2f8054794
commit cd4ddb606d
5076 changed files with 701092 additions and 0 deletions

View File

@@ -0,0 +1,529 @@
<?php
header("Access-Control-Allow-Origin: *");
header("Access-Control-Allow-Methods: GET, POST, OPTIONS, PUT, PATCH, DELETE");
header("Access-Control-Allow-Headers: Content-Type, Authorization, Content-Length, X-Requested-With");
header("Access-Control-Allow-Credentials: true");
header("Content-Type: text/html; charset=utf-8");
/**
* 后台应用管理员登录
*/
use phprs\util\Verify;
use phprs\util\exceptions\Forbidden;
use phprs\util\Logger;
use phprs\util\exceptions\NotFound;
use phprs\ezsql\Sql;
use phprs\util\exceptions\BadRequest;
/**
*
* 应用管理员登录接口
* @path("/manager")
*/
class Manager {
/**
* 后台管理员通过账号密码登录
* @route({"POST","/"})
* @param({"appid","$._POST.appid"}) 应用appid
* @param({"devkey","$._POST.devkey"}) 开发者key
* @param({"username","$._POST.username"}) 用户名
* @param({"password","$._POST.password"}) 用户密码
* @throws({"phprs\util\exceptions\Forbidden","res", "403 Forbidden",{"error":"Forbidden"}}) cookie不可用
*/
public function login($appid,$devkey,$username,$password) {
if(empty($appid)){
$result["status"] = '0';
$result["message"] = '请传入appid参数。';
return $result;
}
if(empty($devkey)){
$result["status"] = '0';
$result["message"] = '请传入devkey参数。';
return $result;
}
if(empty($username)){
$result["status"] = '0';
$result["message"] = '请传入username参数。';
return $result;
}
if(empty($password)){
$result["status"] = '0';
$result["message"] = '请传入password参数。';
return $result;
}
// 加密管理员密码
$password = md5($password);
$res = Sql::select('syweb_admin.*')
->from('syweb_admin,syweb_app')
->where('syweb_admin.app_id=syweb_app.id and syweb_app.appid=? and syweb_admin.username=? and syweb_admin.password=? and syweb_admin.type=3', $appid,$username,$password)
->get($this->db ,null);
if(count($res)>0){
$result[0]["error"] = "0";
$result[0]["data"] = $res[0];
}else{
$result[0]["error"] = "1";
$result[0]["error_code"] = 1; // 用户名或密码不存在
}
return $result;
}
/**
* 增加应用管理员(错误代码10200-10250)
* @route({"POST","/add"})
* @param({"appid","$._POST.appid"}) 应用appid
* @param({"devkey","$._POST.devkey"}) 开发者key
* @param({"username","$._POST.username"}) 用户名账号
* @param({"nickname","$._POST.nickname"}) 用户昵称
* @param({"password","$._POST.password"}) 用户密码
* @throws({"phprs\util\exceptions\Forbidden","res", "403 Forbidden",{"error":"Forbidden"}}) cookie不可用
*/
public function add($appid="",$devkey="",$username="",$nickname="",$password="") {
$result = array();
$insertData = array();
if( empty($appid) ){
$result["error"] = '1';
$result["error_code"] = 10001;
$result["msg"] = "未传入appid参数";
return $result;
}
if( empty($devkey) ){
$result["error"] = '1';
$result["error_code"] = 10002;
$result["msg"] = "未传入devkey参数";
return $result;
}
$devList = Sql::select('syweb_admin.*')
->from('syweb_admin')
->where('syweb_admin.type=2 and syweb_admin.devkey=? and syweb_admin.status=1',$devkey)
->get($this->db ,null);
if( empty($devList) || count($devList)<=0 ){
$result["error"] = '1';
$result["error_code"] = 10003;
$result["msg"] = "devkey无效";
return $result;
}
$devInfo = $devList[0];
$appList = Sql::select('syweb_app.*')
->from('syweb_app')
->where('syweb_app.appid=? and syweb_app.dev_id=? and status=1', $appid,$devInfo['id'])
->get($this->db ,null);
if( empty($appList) || count($appList)<=0 ){
$result["error"] = '1';
$result["error_code"] = 10004;
$result["msg"] = "指定的应用不存在或未被审核";
return $result;
}
$appInfo = $appList[0];
$insertData['app_id'] = $appInfo["id"];
if( empty($username) ){
$result["error"] = '1';
$result["error_code"] = 10200;
$result["msg"] = '请输入管理员账号。';
return $result;
}
if( !checklen($username) ){
$result["error"] = '1';
$result["error_code"] = 10201;
$result["msg"] = '管理员用户名必须是大于5位小于15位';
return $result;
}
$managerInfo = Sql::select('syweb_admin.*')
->from('syweb_admin')
->where('syweb_admin.username=?', $username)
->get($this->db ,null);
if( !empty($managerInfo) && count($managerInfo)>0 ){
$result["error"] = '1';
$result["error_code"] = 10202;
$result["msg"] = '指定的管理员账号已经存在。';
return $result;
}
$insertData['username'] = $username;
if( empty($password) ){
$result["error"] = '1';
$result["error_code"] = 10203;
$result["msg"] = '请传入管理员密码!';
return $result;
}
if( !checklen($password) ){
$result["error"] = '1';
$result["error_code"] = 10204;
$result["msg"] = '管理员密码必须是大于8位小于16位';
return $result;
}
$insertData['password'] = md5($password);
if( empty($nickname) ){
$result["error"] = '1';
$result["error_code"] = 10205;
$result["msg"] = '请输入管理员昵称!';
return $result;
}
$insertData['nickname'] = $nickname;
$insertData['type'] = 3;
$insertData['status'] = 1;
$insertData['createtime'] = time();
$pdo = $this->db;
$pdo->beginTransaction();
$managerId = Sql::insertInto('syweb_admin')->values($insertData)->exec($pdo)->lastInsertId();
$pdo->commit();
if ( !empty($managerId) && is_numeric($managerId) && $managerId>0 ) {
unset($insertData["password"]);
unset($insertData["type"]);
$insertData["id"] = $managerId;
$result["error"] = '0';
$result["data"] = $insertData;
$result["msg"] = "添加管理员成功。";
return $result;
}else{
$result["error"] = '1';
$result["error_code"] = 10206;
$result["msg"] = '添加管理员失败。';
return $result;
}
}
/**
* 修改应用管理员(错误代码10200-10250)
* @route({"POST","/edit"})
* @param({"appid","$._POST.appid"}) 应用appid
* @param({"devkey","$._POST.devkey"}) 开发者key
* @param({"username","$._POST.username"}) 用户名账号
* @param({"nickname","$._POST.nickname"}) 用户昵称
* @param({"password","$._POST.password"}) 用户密码
* @param({"oldpassword","$._POST.oldpassword"}) 用户原始密码
* @throws({"phprs\util\exceptions\Forbidden","res", "403 Forbidden",{"error":"Forbidden"}}) cookie不可用
*/
public function edit($appid="",$devkey="",$username="",$nickname="",$password="",$oldpassword="") {
$result = array();
$updateData = array();
if( empty($appid) ){
$result["error"] = '1';
$result["error_code"] = 10001;
$result["msg"] = "未传入appid参数";
return $result;
}
if( empty($devkey) ){
$result["error"] = '1';
$result["error_code"] = 10002;
$result["msg"] = "未传入devkey参数";
return $result;
}
$devList = Sql::select('syweb_admin.*')
->from('syweb_admin')
->where('syweb_admin.type=2 and syweb_admin.devkey=? and syweb_admin.status=1',$devkey)
->get($this->db ,null);
if( empty($devList) || count($devList)<=0 ){
$result["error"] = '1';
$result["error_code"] = 10003;
$result["msg"] = "devkey无效";
return $result;
}
$devInfo = $devList[0];
$appList = Sql::select('syweb_app.*')
->from('syweb_app')
->where('syweb_app.appid=? and syweb_app.dev_id=? and status=1', $appid,$devInfo['id'])
->get($this->db ,null);
if( empty($appList) || count($appList)<=0 ){
$result["error"] = '1';
$result["error_code"] = 10004;
$result["msg"] = "指定的应用不存在或未被审核";
return $result;
}
$appInfo = $appList[0];
if( empty($username) ){
$result["error"] = '1';
$result["error_code"] = 10200;
$result["msg"] = '请输入要修改的管理员账号。';
return $result;
}
$managerInfo = Sql::select('syweb_admin.*')
->from('syweb_admin')
->where('syweb_admin.username=?',$username)
->get($this->db ,null);
if( empty($managerInfo) || count($managerInfo)<0 ){
$result["error"] = '1';
$result["error_code"] = 10201;
$result["msg"] = '指定的管理员账号不存在。';
return $result;
}
if( empty($password) && empty($nickname) ){
$result["error"] = '1';
$result["error_code"] = 10202;
$result["msg"] = '请指定修改昵称或是密码';
return $result;
}
if( !empty($password) && !checklen($password) ){
$result["error"] = '1';
$result["error_code"] = 10203;
$result["msg"] = '管理员密码必须是大于8位小于16位';
return $result;
}
if( !empty($password) && empty($oldpassword) ){
$result["error"] = '1';
$result["error_code"] = 10204;
$result["msg"] = '要修改密码必须提供原密码。';
return $result;
}
if( !empty($password) ){
$managerInfo = Sql::select('syweb_admin.*')
->from('syweb_admin')
->where('syweb_admin.username=? and syweb_admin.password=?',$username,md5($oldpassword))
->get($this->db ,null);
if( empty($managerInfo) || count($managerInfo)<0 ){
$result["error"] = '1';
$result["error_code"] = 10205;
$result["msg"] = '原始密码不符。';
return $result;
}
}
$fieldsCount = 0;
$updateSql = Sql::update('syweb_admin');
if ( !empty($nickname) ) {
$updateSql->set("nickname",$nickname);
$fieldsCount = $fieldsCount +1;
}
if ( !empty($password) ) {
$updateSql->set("password",md5($password));
$fieldsCount = $fieldsCount +1;
}
// 修改限定条件 begin
$condition = array();
$conditionStr = " username='".$username."'";
if(!empty($conditionStr)){
$updateSql->where($conditionStr);
}
// 修改限定条件 end
$pdo = $this->db;
$pdo->beginTransaction();
if($fieldsCount>0){
$updateCount = $updateSql->exec($pdo);
}
$pdo->commit();
if( !$updateCount ){
$result["error"] = '0';
$result["msg"] = '数据修改成功。';
return $result;
}else{
$result["error"] = '1';
$result["error_code"] = 10206;
$result["msg"] = '数据修改失败。';
return $result;
}
}
/**
* 增加应用管理员(错误代码10300-10350)
* @route({"POST","/delete"})
* @param({"appid","$._POST.appid"}) 应用appid
* @param({"devkey","$._POST.devkey"}) 开发者key
* @param({"username","$._POST.username"}) 用户名账号
* @throws({"phprs\util\exceptions\Forbidden","res", "403 Forbidden",{"error":"Forbidden"}}) cookie不可用
*/
public function delete($appid="",$devkey="",$username="") {
$result = array();
$insertData = array();
if( empty($appid) ){
$result["error"] = '1';
$result["error_code"] = 10001;
$result["msg"] = "未传入appid参数";
return $result;
}
if( empty($devkey) ){
$result["error"] = '1';
$result["error_code"] = 10002;
$result["msg"] = "未传入devkey参数";
return $result;
}
$devList = Sql::select('syweb_admin.*')
->from('syweb_admin')
->where('syweb_admin.type=2 and syweb_admin.devkey=? and syweb_admin.status=1',$devkey)
->get($this->db ,null);
if( empty($devList) || count($devList)<=0 ){
$result["error"] = '1';
$result["error_code"] = 10003;
$result["msg"] = "devkey无效";
return $result;
}
$devInfo = $devList[0];
$appList = Sql::select('syweb_app.*')
->from('syweb_app')
->where('syweb_app.appid=? and syweb_app.dev_id=? and status=1', $appid,$devInfo['id'])
->get($this->db ,null);
if( empty($appList) || count($appList)<=0 ){
$result["error"] = '1';
$result["error_code"] = 10004;
$result["msg"] = "指定的应用不存在或未被审核";
return $result;
}
$appInfo = $appList[0];
$insertData['app_id'] = $appInfo["id"];
if( empty($username) ){
$result["error"] = '1';
$result["error_code"] = 10300;
$result["msg"] = '请输入要删除的管理员账号。';
return $result;
}
$managerInfo = Sql::select('syweb_admin.*')
->from('syweb_admin')
->where('syweb_admin.username=?', $username)
->get($this->db ,null);
if( empty($managerInfo) || count($managerInfo)<=0 ){
$result["error"] = '1';
$result["error_code"] = 10301;
$result["msg"] = '指定的管理员账号不存在。';
return $result;
}
$condition .= " `username` = '".$username."'";
$pdo = $this->db;
$pdo->beginTransaction();
$delResult = Sql::deleteFrom('syweb_admin')->where($condition)->exec($this->db);
$pdo->commit();
$managerInfo = Sql::select('syweb_admin.*')
->from('syweb_admin')
->where('syweb_admin.username=?', $username)
->get($this->db ,null);
if( empty($managerInfo) || count($managerInfo)<=0 ){
$result["error"] = '0';
$result["msg"] = "删除管理员成功。";
return $result;
}else{
$result["error"] = '1';
$result["error_code"] = 10302;
$result["msg"] = '删除管理员失败。';
}
}
/**
* 查询指定应用中的管理员列表
* @route({"POST","/list"})
* @param({"appid","$._POST.appid"}) 应用appid
* @param({"devkey","$._POST.devkey"}) 开发者key
* @throws({"phprs\util\exceptions\Forbidden","res", "403 Forbidden",{"error":"Forbidden"}}) cookie不可用
*/
public function queryList($appid="",$devkey="") {
$fields = " syweb_admin.id,syweb_admin.username,syweb_admin.nickname,syweb_admin.app_id,syweb_admin.createtime ";
if( empty($appid) ){
$result["status"] = '0';
$result["message"] = '请传入appid参数。';
return $result;
}
$appInfo = Sql::select('syweb_app.*')
->from('syweb_app')
->where('syweb_app.appid=?', $appid)
->get($this->db ,null);
if(empty($appInfo) && count($appInfo)<=0){
$result["status"] = '0';
$result["message"] = '指定的应用不存在请检查appid参数。';
return $result;
}
if(empty($devkey)){
$result["status"] = '0';
$result["message"] = '请传入devkey参数。';
return $result;
}
$managerList = Sql::select($fields)
->from('syweb_admin,syweb_app')
->where('syweb_admin.app_id=syweb_app.id and syweb_app.appid=? and syweb_admin.type=3', $appid)
->get($this->db ,null);
if(!empty($managerList) && count($managerList)>0){
$result["status"] = '0';
$result["data"] = $managerList;
return $result;
} else {
$result["status"] = '0';
$result["data"] = array();
return $result;
}
}
/**
* 根据用户名查询用户详细信息
* @route({"POST","/query"})
* @param({"appid","$._POST.appid"}) 应用appid
* @param({"devkey","$._POST.devkey"}) 开发者key
* @param({"username","$._POST.username"}) 用户名
* @throws({"phprs\util\exceptions\Forbidden","res", "403 Forbidden",{"error":"Forbidden"}}) cookie不可用
*/
public function query($appid,$devkey,$username) {
if(empty($appid)){
$result["status"] = '0';
$result["message"] = '请传入appid参数。';
return $result;
}
$appInfo = Sql::select('syweb_app.*')
->from('syweb_app')
->where('syweb_app.appid=?', $appid)
->get($this->db ,null);
if(empty($appInfo) || count($appInfo)<=0){
$result["status"] = '0';
$result["message"] = '指定的应用不存在请检查appid参数。';
return $result;
}
if(empty($devkey)){
$result["status"] = '0';
$result["message"] = '请传入devkey参数。';
return $result;
}
if(empty($username)){
$result["status"] = '0';
$result["message"] = '请传入username参数。';
return $result;
}
$res = Sql::select('syweb_admin.id,syweb_admin.username,syweb_admin.nickname,syweb_admin.app_id,syweb_admin.createtime')
->from('syweb_admin,syweb_app')
->where('syweb_admin.app_id=syweb_app.id and syweb_app.appid=? and syweb_admin.username=? and syweb_admin.type=3', $appid,$username)
->get($this->db ,null);
if(count($res)>0){
$result[0]["error"] = "0";
$result[0]["data"] = $res[0];
}else{
$result[0]["error"] = "1";
$result[0]["error_code"] = 1; // 指定的用户不存在
}
return $result;
}
/** @inject("ioc_factory") */
private $factory;
/**
* @property({"default":"@db"})
* @var PDO
*/
public $db;
}