| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128 |
- <?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
- {
- /**
- * 当前管理员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()
- {
- // 初始化获取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;
- }
- }
|