* * This source file is subject to the MIT license that is bundled * with this source code in the file LICENSE. */ declare(strict_types=1); namespace App\Repository\Company; use App\Dao\Company\CompanyModulesDao; use App\Repository\AbstractRepository; class CompanyModulesRepository extends AbstractRepository { public function __construct(CompanyModulesDao $dao) { $this->dao = $dao; } /** * 公司功能模块列表. */ public function codeList(int $company_id): array { $query = $this->dao->builder()->where('company_id', '=', $company_id); $role_permission_code = []; $data_permission_code = []; if (!$query->exists()) { return compact('role_permission_code', 'data_permission_code'); } $info = $query->first(['module_code', 'module_data_permissions'])->toArray(); $role_permission_code = $info['module_code']; $data_permission_code = $info['module_data_permissions']; return compact('role_permission_code', 'data_permission_code'); } /** * 公司功能模块分配. * @param array $data * @return array */ public function addModule(array $data): array { $query = $this->dao->builder(); $params = []; $params['company_id'] = $data['company_id']; $params['module_code'] = $data['menu_permission']; $params['module_data_permissions'] = mergePermissions($data['data_permission'] ?? []); $query->updateOrCreate([ 'company_id' => $params['company_id'], ], $params); return $params; } }