getPage(); $admin = Admin::findOrEmpty($this->userInfo['admin_id']); $myCompany = Company::findOrEmpty($admin['company_id'])->toArray(); $companyIds = Contract::where('party_a', $myCompany['id'])->column('party_b'); $query = Company::whereIn('id', $companyIds); $count = $query->count(); $companies = $query->page($page)->limit($limit)->select()->each(function ($company) { $company['other_contacts'] = json_decode($company['other_contacts'], true); $company['qualification'] = $company['qualification'] != null ? json_decode($company['qualification'], true) : ''; })->toArray(); return $this->success('', ['count' => $count, 'data' => $companies]); } public function view() { $id = $this->request->param('id', 0); if (empty($id)) { $admin = Admin::findOrEmpty($this->userInfo['admin_id']); $query = Company::find($admin['company_id']); } else { $query = Company::find($id); } $company = $query->append(['province_name', 'city_name', 'area_name', 'street_name', 'area_manager_name'])->toArray(); $company['other_contacts'] = json_decode($company['other_contacts'], true); $company['qualification'] = $company['qualification'] != null ? json_decode($company['qualification'], true) : ''; $contract = Contract::find($company['contract_id']); if (empty($contract)) { return $this->fail('合同不存在'); } if ($contract['admin_id'] != 0) { $contract['party_b_name'] = Admin::where('id', $contract['admin_id'])->value('name'); } else { $contract['party_b_name'] = Db::name('company')->where('id', $contract['party_b'])->value('company_name'); } $contract['party_a_name'] = Db::name('company')->where('id', $contract['party_a'])->value('company_name'); $contract['contract_type_name'] = Db::name('dict_data')->where('id', $contract['contract_type'])->value('name'); $company['company_type_name'] = Db::name('dict_data')->where('id', $company['company_type'])->value('name'); $users = Admin::where('company_id', $company['id'])->field('id,name,account,phone,qualification')->select()->toArray(); foreach ($users as &$user) { $user['is_main'] = $user['id'] == $company['admin_id'] ? 1 : 0; $user['qualification'] = $user['qualification'] != null ? json_decode($user['qualification'], true) : []; unset($user['role_id'], $user['dept_id'], $user['jobs_id'], $user['id']); } return $this->success('success', ['contract' => $contract, 'company' => $company, 'users' => $users]); } public function areaManager() { $adminIds = AdminRole::where('role_id', 8)->column('admin_id'); $data = Admin::wherein('id', $adminIds)->append(['province_name', 'city_name', 'area_name', 'street_name'])->field('id,name,account,avatar,province,city,area,street')->select()->toArray(); return $this->success('success', $data); } public function users() { [$page, $limit] = $this->getPage(); $companyId = $this->request->param('company_id', 0); $query = Admin::where('company_id', $companyId); $count = $query->count(); $users = $query->page($page)->limit($limit)->with(['company' => function ($query) { $query->field('id,company_name'); }])->append(['province_name', 'city_name', 'area_name', 'street_name'])->field('id,avatar,name,account,phone,qualification,province,city,area,street,is_contract,company_id')->select()->toArray(); foreach ($users as &$user) { $roleIds = AdminRole::where('admin_id', $user['id'])->column('role_id'); $user['roles'] = SystemRole::whereIn('id', $roleIds)->column('name'); $user['qualification'] = $user['qualification'] != null ? json_decode($user['qualification'], true) : []; unset($user['role_id'], $user['dept_id'], $user['jobs_id']); } return $this->success('success', ['count' => $count, 'data' => $users]); } public function user($id) { $query = Admin::where('id', $id); $user = $query->with(['company' => function ($query) { $query->field('id,company_name'); }])->append(['province_name', 'city_name', 'area_name', 'street_name'])->field('id,sex,avatar,name,account,phone,id_card,qualification,province,city,area,street,is_contract,company_id')->find()->toArray(); $contract = Contract::whereRaw("(type=1 and party_b={$user['company_id']}) or (type=2 and party_b={$user['id']})")->append(['contract_type_name'])->find(); $user['contract'] = $contract; $roleIds = AdminRole::where('admin_id', $user['id'])->column('role_id'); $user['roles'] = SystemRole::whereIn('id', $roleIds)->column('name'); $user['qualification'] = $user['qualification'] != null ? json_decode($user['qualification'], true) : []; unset($user['role_id'], $user['dept_id'], $user['jobs_id']); return $this->success('success', $user); } }