🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
# 控制器 controller控制器是api接口的载体。控制器接收到api接口请求,调用services层中的具体功能实现模块,返回给api接口。 #### 控制器的位置 app\adminapi\controller 管理端控制器 app\api\controller 前端控制器<br> core\base\BaseController 控制器基类 ### BaseController类按照端口,有以下子类 **BaseAdminController、 BaseApiController** 这几个类的文件都定义在 niucloud\core\base 文件夹中。 BaseController是所有控制器类的基类,对于可能在多个端口都会调用的控制器类,一般继承自他。 BaseAdminController是Admin管理端的控制器的基类 BaseApiController是前端的控制器的基类 <br> 后台管理会员的控制器继承实现如下 ~~~ 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接口。<br> 前台会员控制器继承自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'); } } ~~~