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-29 22:10:33 +08:00
use app\common\model\user\User ;
2023-08-02 23:13:05 +08:00
use app\common\model\user\UserAccountLog ;
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
{
2023-08-02 23:13:05 +08:00
//**签约公司*/
2023-07-21 11:32:23 +08:00
public function index ()
{
2023-07-21 16:28:51 +08:00
[ $page , $limit ] = $this -> getPage ();
2023-08-01 22:24:25 +08:00
$myCompany = Company :: findOrEmpty ( $this -> userInfo [ 'company_id' ]) -> toArray ();
2023-07-21 11:32:23 +08:00
$companyIds = Contract :: where ( 'party_a' , $myCompany [ 'id' ]) -> column ( 'party_b' );
2023-07-25 16:15:08 +08:00
$query = Company :: whereIn ( 'id' , $companyIds ) -> append ([ 'province_name' , 'city_name' , 'area_name' , 'street_name' , 'area_manager_name' ]);
2023-07-21 11:39:02 +08:00
$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-24 21:03:18 +08:00
$company [ 'company_type_name' ] = Db :: name ( 'dict_data' ) -> where ( 'id' , $company [ 'company_type' ]) -> value ( 'name' );
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-08-02 23:13:05 +08:00
/**
* 未签约
*/
public function unsigned ()
{
$myCompany = Company :: findOrEmpty ( $this -> userInfo [ 'company_id' ]) -> toArray ();
2023-08-03 10:15:51 +08:00
$query = Company :: where ([ 'street' => $myCompany [ 'street' ], 'company_type' => [ 17 , 18 ], 'is_contract' => 0 ]);
2023-08-02 23:13:05 +08:00
$count = $query -> count ();
$companies = $query -> select () -> toArray ();
return $this -> success ( '' , [ 'count' => $count , 'data' => $companies ]);
}
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 )) {
2023-08-01 22:24:25 +08:00
$query = Company :: find ( $this -> userInfo [ '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-08-02 23:13:05 +08:00
if ( ! $query ) {
2023-08-01 22:24:25 +08:00
return $this -> fail ( '公司不存在' );
}
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' ]);
2023-07-24 17:51:00 +08:00
if ( ! empty ( $contract )) {
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' );
2023-07-21 12:00:39 +08:00
2023-07-24 17:51:00 +08:00
$contract [ 'contract_type_name' ] = Db :: name ( 'dict_data' ) -> where ( 'id' , $contract [ 'contract_type' ]) -> value ( 'name' );
}
2023-07-21 12:00:39 +08:00
$company [ 'company_type_name' ] = Db :: name ( 'dict_data' ) -> where ( 'id' , $company [ 'company_type' ]) -> value ( 'name' );
2023-08-02 23:13:05 +08:00
$company [ 'day_money_count' ] = UserAccountLog :: where ([ 'company_id' => $company [ 'id' ], 'action' => 1 ]) -> whereDay ( 'create_time' ) -> sum ( 'change_amount' );
2023-07-21 12:00:39 +08:00
$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' ]);
}
2023-07-24 17:51:00 +08:00
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-08-01 22:24:25 +08:00
$company = Company :: find ( $this -> userInfo [ 'company_id' ]);
2023-07-22 17:34:59 +08:00
$query = Admin :: where ( 'id' , $company [ 'area_manager' ]);
2023-07-22 15:00:16 +08:00
$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 ();
2023-08-01 22:24:25 +08:00
// $companyId = $this->request->param('company_id', 0);
// if($companyId==0){
// $companyId=$this->userInfo['company_id'];
// }
$query = User :: where ( 'company_id' , $this -> userInfo [ 'company_id' ]);
2023-07-21 16:28:51 +08:00
$count = $query -> count ();
$users = $query -> page ( $page ) -> limit ( $limit ) -> with ([ 'company' => function ( $query ) {
$query -> field ( 'id,company_name' );
2023-08-02 23:13:05 +08:00
}]) -> append ([ 'province_name' , 'city_name' , 'area_name' , 'street_name' ]) -> field ( 'id,avatar,real_name,account,mobile as phone,province,city,area,street,company_id,qualification,nickname,is_contract,is_captain' ) -> select () -> each ( function ( $item , $key ) {
if ( $item [ 'qualification' ] != '' ) {
$item [ 'qualification' ] = json_decode ( $item [ 'qualification' ], true );
2023-07-29 22:10:33 +08:00
}
});
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 )
{
2023-08-01 22:24:25 +08:00
$query = User :: where ( 'id' , $id );
2023-07-22 11:26:25 +08:00
$user = $query -> with ([ 'company' => function ( $query ) {
$query -> field ( 'id,company_name' );
2023-08-02 11:39:12 +08:00
}]) -> append ([ 'province_name' , 'city_name' , 'area_name' , 'street_name' ]) -> field ( 'id,sex,avatar,nickname name,account,mobile phone,id_card,qualification,province,city,area,street,is_contract,company_id,is_captain' ) -> 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 ;
2023-08-01 22:24:25 +08:00
// $roleIds = AdminRole::where('admin_id', $user['id'])->column('role_id');
// $user['roles'] = SystemRole::whereIn('id', $roleIds)->column('name');
2023-07-22 11:26:25 +08:00
$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-08-02 23:13:05 +08:00
}