2023-07-21 11:32:23 +08:00
< ? php
namespace app\api\controller ;
use app\common\model\auth\Admin ;
2023-07-21 14:53:56 +08:00
use app\common\model\auth\AdminRole ;
2023-07-21 16:28:51 +08:00
use app\common\model\auth\SystemRole ;
2023-07-21 11:32:23 +08:00
use app\common\model\Company ;
use app\common\model\contract\Contract ;
2023-07-21 12:00:39 +08:00
use think\facade\Db ;
2023-07-21 11:32:23 +08:00
/**
* Class CompanyController
* @ package app\api\controller
*/
class CompanyController extends BaseApiController
{
public function index ()
{
2023-07-21 16:28:51 +08:00
[ $page , $limit ] = $this -> getPage ();
2023-07-21 11:32:23 +08:00
$admin = Admin :: findOrEmpty ( $this -> userInfo [ 'admin_id' ]);
$myCompany = Company :: findOrEmpty ( $admin [ 'company_id' ]) -> toArray ();
$companyIds = Contract :: where ( 'party_a' , $myCompany [ 'id' ]) -> column ( 'party_b' );
2023-07-21 11:39:02 +08:00
$query = Company :: whereIn ( 'id' , $companyIds );
$count = $query -> count ();
$companies = $query -> page ( $page ) -> limit ( $limit ) -> select () -> each ( function ( $company ) {
2023-07-21 11:32:23 +08:00
$company [ 'other_contacts' ] = json_decode ( $company [ 'other_contacts' ], true );
2023-07-21 14:06:24 +08:00
$company [ 'qualification' ] = $company [ 'qualification' ] != null ? json_decode ( $company [ 'qualification' ], true ) : '' ;
2023-07-21 11:32:23 +08:00
}) -> toArray ();
2023-07-21 11:39:02 +08:00
return $this -> success ( '' , [ 'count' => $count , 'data' => $companies ]);
2023-07-21 11:32:23 +08:00
}
2023-07-21 14:06:24 +08:00
public function view ()
2023-07-21 11:32:23 +08:00
{
2023-07-21 14:06:24 +08:00
$id = $this -> request -> param ( 'id' , 0 );
if ( empty ( $id )) {
$admin = Admin :: findOrEmpty ( $this -> userInfo [ 'admin_id' ]);
2023-07-22 10:52:19 +08:00
$query = Company :: find ( $admin [ 'company_id' ]);
2023-07-21 14:06:24 +08:00
} else {
2023-07-22 10:52:19 +08:00
$query = Company :: find ( $id );
2023-07-21 14:06:24 +08:00
}
2023-07-22 10:52:19 +08:00
$company = $query -> append ([ 'province_name' , 'city_name' , 'area_name' , 'street_name' , 'area_manager_name' ]) -> toArray ();
2023-07-21 11:32:23 +08:00
$company [ 'other_contacts' ] = json_decode ( $company [ 'other_contacts' ], true );
2023-07-21 14:06:24 +08:00
$company [ 'qualification' ] = $company [ 'qualification' ] != null ? json_decode ( $company [ 'qualification' ], true ) : '' ;
2023-07-21 12:00:39 +08:00
$contract = Contract :: find ( $company [ 'contract_id' ]);
if ( empty ( $contract )) {
return $this -> fail ( '合同不存在' );
}
2023-07-21 14:06:24 +08:00
if ( $contract [ 'admin_id' ] != 0 ) {
2023-07-21 12:00:39 +08:00
$contract [ 'party_b_name' ] = Admin :: where ( 'id' , $contract [ 'admin_id' ]) -> value ( 'name' );
2023-07-21 14:06:24 +08:00
} else {
2023-07-21 12:00:39 +08:00
$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 ;
2023-07-21 14:06:24 +08:00
$user [ 'qualification' ] = $user [ 'qualification' ] != null ? json_decode ( $user [ 'qualification' ], true ) : [];
2023-07-21 12:00:39 +08:00
unset ( $user [ 'role_id' ], $user [ 'dept_id' ], $user [ 'jobs_id' ], $user [ 'id' ]);
}
return $this -> success ( 'success' , [ 'contract' => $contract , 'company' => $company , 'users' => $users ]);
2023-07-21 11:32:23 +08:00
}
2023-07-21 14:53:56 +08:00
public function areaManager ()
{
2023-07-22 15:00:16 +08:00
[ $page , $limit ] = $this -> getPage ();
2023-07-21 14:53:56 +08:00
$adminIds = AdminRole :: where ( 'role_id' , 8 ) -> column ( 'admin_id' );
2023-07-22 15:00:16 +08:00
$query = Admin :: wherein ( 'id' , $adminIds );
$count = $query -> count ();
$data = $query -> page ( $page ) -> limit ( $limit ) -> append ([ 'province_name' , 'city_name' , 'area_name' , 'street_name' ]) -> field ( 'id,name,account,avatar,province,city,area,street' ) -> select () -> toArray ();
return $this -> success ( 'success' , [ 'count' => $count , 'data' => $data ]);
2023-07-21 14:53:56 +08:00
}
2023-07-21 16:28:51 +08:00
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' );
2023-07-22 10:59:21 +08:00
}]) -> 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 ();
2023-07-21 16:28:51 +08:00
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 ) : [];
2023-07-22 11:26:25 +08:00
unset ( $user [ 'role_id' ], $user [ 'dept_id' ], $user [ 'jobs_id' ]);
2023-07-21 16:28:51 +08:00
}
return $this -> success ( 'success' , [ 'count' => $count , 'data' => $users ]);
}
2023-07-22 11:26:25 +08:00
public function user ( $id )
{
$query = Admin :: where ( 'id' , $id );
$user = $query -> with ([ 'company' => function ( $query ) {
$query -> field ( 'id,company_name' );
2023-07-22 14:38:57 +08:00
}]) -> 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 ();
2023-07-22 11:26:25 +08:00
$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 );
}
2023-07-21 11:32:23 +08:00
}