controller控制器是api接口的载体。控制器接收到api接口请求,调用services层中的具体功能实现模块,返回给api接口。
app\adminapi\controller 管理端控制器
app\api\controller 前端控制器
core\base\BaseController 控制器基类
BaseAdminController、 BaseApiController
这几个类的文件都定义在 niucloud\core\base 文件夹中。
BaseController是所有控制器类的基类,对于可能在多个端口都会调用的控制器类,一般继承自他。
BaseAdminController是Admin管理端的控制器的基类
BaseApiController是前端的控制器的基类
后台管理会员的控制器继承实现如下
class User extends BaseAdminController
{
public function lists(){
$data = $this->request->params([
['username', ''],
['real_name', '']
]);
$list = (new UserService())->getUserAdminPage($data);
return success($list);
}
/**
* 用户详情
* @param $uid
* @return Response
*/
public function info($uid){
return success((new UserService())->getUserAdminInfo($uid));
}
}
通过继承BaseAdminController,自动实现了权限和路由的控制。调用Service方法直接返回给api接口。
前台会员控制器继承自BaseApiController, 实现了各种前台会员的api接口
namespace app\api\controller\member;
use app\service\api\login\AuthService;
use app\service\api\member\MemberLogService;
use app\service\api\member\MemberService;
use core\base\BaseApiController;
use think\Response;
class Member extends BaseApiController
{
/**
* 会员信息
* @return Response
*/
public function info(){
return success((new MemberService())->getInfo());
}
/**
* 会员中心
* @return Response
*/
public function center(){
return success((new MemberService())->center());
}
/**
* 修改会员
* @param $member_id
* @param $field
* @return Response
*/
public function modify($field){
$data = $this->request->params([
['value', ''],
['field', $field],
]);
$data[$field] = $data['value'];
$this->validate($data, 'app\validate\member\Member.modify');
(new MemberService())->modify($field, $data['value']);
return success('MODIFY_SUCCESS');
}
/**
* 编辑会员
* @return Response
*/
public function edit(){
$data = $this->request->params([
['data', []],
]);
(new MemberService())->edit($data['data']);
return success('MODIFY_SUCCESS');
}
/**
* 绑定手机号
* @return void
*/
public function mobile(){
$data = $this->request->params([
['mobile', ''],
['mobile_code', ''],
]);
return success((new AuthService())->bindMobile($data['mobile'], $data['mobile_code']));
}
/**
* 会员日志
* @return Response
*/
public function log(){
$data = $this->request->params([
['route', ''],
['params', ''],
['pre_route', '']
]);
(new MemberLogService())->log($data);
return success('SUCCESS');
}
}