529 lines
18 KiB
PHP
529 lines
18 KiB
PHP
<?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;
|
||
} |