Files
youlegames/codes/agent/game/api/source/apis/manager.php
2026-03-15 01:27:05 +08:00

529 lines
18 KiB
PHP
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<?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;
}