| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107 |
- <?php
- declare (strict_types=1);
- namespace Modules\Manage\Controllers;
- use App\Controller\CoreController;
- use App\Model\ManagerModel;
- use App\Repositories\ManagerLogRepository;
- use Hyperf\Utils\Context;
- use Modules\Manage\Services\AuthService;
- class BaseController extends CoreController
- {
- use \Hyperf\Di\Aop\ProxyTrait;
- use \Hyperf\Di\Aop\PropertyHandlerTrait;
- /**
- * 当前管理员ID.
- *
- * @var string
- */
- protected $ctManagerId = 'ct:Manage.BaseController.manager_id';
- /**
- * 当前管理员信息.
- *
- * @var string
- */
- protected $ctMnanagerInfo = 'ct:Manage.BaseController.manager_info';
- /**
- * 当前管理员角色.
- *
- * @var string
- */
- protected $ctRoleId = 'ct:Manage.BaseController.role_id';
- /**
- * 属性描述.
- *
- * @var ManagerLogRepository
- */
- protected $logRepo = null;
- public function __construct()
- {
- $this->__handlePropertyHandler(__CLASS__);
- // 初始化获取jwt管理员信息.
- $this->initJwtManager();
- }
- /**
- * 初始化获取jwt管理员信息.
- * @return void
- */
- protected function initJwtManager()
- {
- $managerInfo = $this->getCurrentManagerInfo();
- if (!empty($managerInfo)) {
- Context::set($this->ctMnanagerInfo, $managerInfo);
- Context::set($this->ctManagerId, $managerInfo['manager_id']);
- Context::set($this->ctRoleId, $managerInfo['role_id']);
- }
- }
- /**
- * 记录操作日志.
- * @param string $subject 主题.
- * @param string $svalue 关联数据.
- * @param array $dbData 此数组数据结构一定要是["after_items" => [0, 1, 2], "before_items" => [0, 1, 2]], after_items,before_items 是一个二维码数组.
- * @return bool
- */
- protected function log(string $subject, $svalue = '', $dbData = [])
- {
- $manager = $this->getCurrentManger();
- list($module, $action) = $this->getModuleAndAction();
- $inputs = ['manager_id' => !empty($manager->manager_id) ? (string) $manager->manager_id : '', 'username' => '', 'nick' => '', 'subject' => mb_strcut((string) $subject, 0, 700), 'module' => $module, 'action' => $action, 'svalue' => !empty($svalue) ? mb_strcut((string) $svalue, 0, 700) : '', 'db_data' => $dbData];
- if (!empty($manager)) {
- $inputs['username'] = $manager->username;
- $inputs['nick'] = $manager->nick;
- }
- $this->getLogRepo()->createOne($inputs);
- return true;
- }
- /**
- * 获取日志仓库.
- * @return ManagerLogRepository|null
- */
- protected function getLogRepo()
- {
- return make(ManagerLogRepository::class);
- }
- /**
- * 获取当前管理员对象信息.
- * @return \Hyperf\Database\Model\Builder|\Hyperf\Database\Model\Model|object|null
- */
- protected function getCurrentManger()
- {
- $managerInfo = $this->getCurrentManagerInfo();
- return ManagerModel::with(['role'])->where('manager_id', $managerInfo['manager_id'])->first();
- }
- /**
- * 获取当前管理员信息.
- * @return array
- */
- protected function getCurrentManagerInfo()
- {
- $managerInfo = Context::get($this->ctMnanagerInfo, []);
- if (empty($managerInfo)) {
- $authService = new AuthService();
- $managerInfo = $authService->getManagerInfo();
- }
- return $managerInfo;
- }
- }
|