[ 'is_pay'], '%like%'=>['tenant_name','tenant_mobile'], ]; } /** * @notes 资产信息列表 * @return array * @throws \think\db\exception\DataNotFoundException * @throws \think\db\exception\DbException * @throws \think\db\exception\ModelNotFoundException * @author ljj * @date 2022/2/16 3:18 下午 */ public function lists(): array { $admin_info = $this->adminInfo; $parms = $this->request->get(); $where = [] ; $flag = false; if(!empty($parms)) { if(isset($parms['name'])) { if (!empty($parms['name'])) { $awhere = []; $awhere[] = ['name', 'like', '%' . $parms['name'] . '%']; $assetList = AssetInfo::where($awhere)->select()->toArray(); $a_id_Arr = array_column($assetList, 'id'); $where[] = ['a_id', 'in', $a_id_Arr]; } } // if(isset($parms['date_type'])) { if (!empty($parms['create_time_start']) && !empty($parms['create_time_end'])) { // if($parms['date_type'] == 1){ $where[] = ['create_time', 'between', [strtotime($parms['create_time_start']),strtotime($parms['create_time_end']. ' 23:59:59')]]; // }else if($parms['date_type'] == 2){ // $where[] = ['lease_start_time', '>=', $parms['start_time']]; // $where[] = ['lease_end_time', '<=', $parms['end_time']]; // } } // } if(isset($parms['approval_status'])) { if ($parms['approval_status']) { $where[] = ['approval_status', '=', $parms['approval_status']]; } } if(isset($parms['expiration_flag'])) { $today = date('Y-m-d'); $expiration_date = date('Y-m-d', strtotime($today . ' +30 day')); if ($parms['expiration_flag']) { $flag = true; $where[] = ['lease_end_time', '<=', $expiration_date]; $where[] = ['approval_status','=','5']; $where[] = ['is_remind','=','1']; } } } if(!$admin_info['root']) { // $where[] = ['lease_start_time', '>=', $parms['start_time']]; $jwhere = []; $jwhere[] = ['admin_id', '=', $admin_info['admin_id']]; $jobs_list = AdminJobs::where($jwhere)->select()->toArray(); $all = false; $first = false; $second = false; foreach ($jobs_list as $v) { switch ($v['jobs_id']) { case 1: $all = true; break; case 2: $first = true; break; case 3: $second = true; break; } } if (!$all) { if(!($first && $second)){ if($first){ $where[] = ['approval_status','in',[1,2]]; } if($second){ $where[] = ['approval_status','in',[3,4,5]]; } } } } $lists = (new AssetLeaseInfo())->field('*') ->append(['first_status_desc','second_status_desc','approval_status_desc','is_pay_desc']) // ->with('referee') ->with(['asset','referee']) ->where($where) ->where($this->searchWhere) ->limit($this->limitOffset, $this->limitLength) ->Order('id desc') ->select() ->toArray(); foreach($lists as &$v){ $v['first_name'] = adminModel::where(['id'=>$v['first_uid']])->value('name') ?? ''; $v['second_name'] = adminModel::where(['id'=>$v['second_uid']])->value('name') ?? '' ; if($flag){ $endTime = strtotime(date('Y-m-d')); $startTime = strtotime($v['lease_end_time']); $diff = $startTime-$endTime; $day = $diff/86400; $v['diff_day'] = $day; } } return $lists; } /** * @notes 资产信息数量 * @return int * @author ljj * @date 2022/2/16 3:18 下午 */ public function count(): int { $admin_info = $this->adminInfo; $parms = $this->request->get(); $where = [] ; if(!empty($parms)) { if(isset($parms['asset_name'])) { if (!empty($parms['asset_name'])) { $awhere = []; $awhere[] = ['name', 'like', '%' . $parms['asset_name'] . '%']; $assetList = AssetInfo::where($awhere)->select()->toArray(); $a_id_Arr = array_column($assetList, 'id'); $where[] = ['a_id', 'in', $a_id_Arr]; } } if(isset($parms['date_type'])) { if (!empty($parms['start_time']) && !empty($parms['end_time'])) { if($parms['date_type'] == 1){ $where[] = ['create_time', 'between', [strtotime($parms['start_time']),strtotime($parms['end_time']. ' 23:59:59')]]; }else if($parms['date_type'] == 2){ $where[] = ['lease_start_time', '>=', $parms['start_time']]; $where[] = ['lease_end_time', '<=', $parms['end_time']]; } } } if(isset($parms['approval_status'])) { if ($parms['approval_status']) { $where[] = ['approval_status', '=', $parms['approval_status']]; } } if(isset($parms['expiration_flag'])) { $today = date('Y-m-d'); $expiration_date = date('Y-m-d', strtotime($today . ' +30 day')); if ($parms['expiration_flag']) { $where[] = ['lease_end_time', '<=', $expiration_date]; $where[] = ['approval_status','=','5']; $where[] = ['is_remind','=','1']; } } } if(!$admin_info['root']) { // $where[] = ['lease_start_time', '>=', $parms['start_time']]; $jwhere = []; $jwhere[] = ['admin_id', '=', $admin_info['admin_id']]; $jobs_list = AdminJobs::where($jwhere)->select()->toArray(); $all = false; $first = false; $second = false; foreach ($jobs_list as $v) { switch ($v['jobs_id']) { case 1: $all = true; break; case 2: $first = true; break; case 3: $second = true; break; } } if (!$all) { if(!($first && $second)){ if($first){ $where[] = ['approval_status','in',[1,2]]; } if($second){ $where[] = ['approval_status','in',[3,4,5]]; } } } } return (new AssetLeaseInfo())->where($this->searchWhere)->where($where)->count(); } /** * @notes 添加租赁资产订单 * @param array $params * @author heshihu * @date 2022/2/22 9:57 */ public static function add(array $params) { if ($params['lease_end_time']<$params['lease_start_time']) { return ['code' => 0, 'msg' => '租赁时间范围有误请检查!']; } $where = []; // $where[] = ['lease_end_time', '>=', $params['lease_start_time']]; $where[] = ['a_id', '=', $params['a_id']]; $tswhere = "(lease_start_time <". $params['lease_end_time'].") or ( lease_start_time < ".$params['lease_start_time']." and lease_end_time >".$params['lease_start_time'].")"; $assetLeaseInfo = AssetLeaseInfo::where($where)->where($tswhere)->findOrEmpty(); if (!$assetLeaseInfo->isEmpty()) { return ['code' => 0, 'msg' => '租赁期内有未到期的租赁信息!','data'=>$assetLeaseInfo]; } AssetLeaseInfo::create([ 'a_id' => $params['a_id'], 'tenant_name' => $params['tenant_name'] ?? '', 'tenant_mobile' => $params['tenant_mobile'] ?? '', 'license_number' => $params['license_number'] ?? '', 'license_image' => $params['license_image'] ?? '', 'lease_contract_image' => $params['lease_contract_image'] ?? '', 'lease_money' => $params['lease_money'] ?? 0, 'lease_start_time' => $params['lease_start_time'] ?? '', 'lease_end_time' => $params['lease_end_time'] ?? '', 'purpose' => $params['purpose'] ?? '', 'referee_name' =>$params['referee_name'], 'referee_uid' =>$params['referee_uid'], 'approval_status'=>$params['approval_status']??1, 'remark' => $params['remark'] ?? '', ]); if(isset($params['remind_id'])){ $remind_id = $params['remind_id']; $remind_asset_lease_info = AssetLeaseInfo::find($remind_id); if($remind_asset_lease_info){ $updateData['id'] = $remind_id; $updateData['is_remind'] = 0; AssetLeaseInfo::update($updateData); } } return ['code' => 200, 'msg' => '新增租赁信息成功!']; } /** * @notes 编辑租赁信息资产 * @param array $params * @return bool * @author heshihu * @date 2022/2/22 10:12 */ public static function edit(array $params) : bool { try { if ($params['lease_end_time']<$params['lease_start_time']) { throw new \Exception('租赁时间范围有误请检查'); } $where = []; // $where[] = ['lease_end_time', '>=', $params['lease_start_time']]; $where[] = ['id', '<>', $params['id']]; $where[] = ['a_id', '=', $params['a_id']]; // $tswhere = "(lease_start_time <". $params['lease_end_time'].") or (lease_end_time >".$params['lease_start_time'].")"; $tswhere = "(lease_start_time <". $params['lease_end_time'].") or ( lease_start_time < ".$params['lease_start_time']." and lease_end_time >".$params['lease_start_time'].")"; $assetLeaseInfo = AssetLeaseInfo::where($where)->where($tswhere)->findOrEmpty(); if (!$assetLeaseInfo->isEmpty()) { throw new \Exception('租赁期内有未到期的租赁信息'); } $asset_lease_info = AssetLeaseInfo::find($params['id']); $approval_status = $asset_lease_info['approval_status']; //审核状态 1:等待初审 2 初审驳回 3:初审通过 4:等待终审 5:终审通过 6:终审驳回 $new_approval_status = 1; switch ($approval_status){ case 1: $new_approval_status =1; break; case 2: $new_approval_status =1; break; case 3: $new_approval_status =4; break; case 4: $new_approval_status =4; break; case 5: $new_approval_status =5; break; case 6: $new_approval_status =1; break; default: $new_approval_status =1; break; } AssetLeaseInfo::update([ 'id'=>$params['id'], 'a_id' => $params['a_id'], 'tenant_name' => $params['tenant_name'] ?? '', 'tenant_mobile' => $params['tenant_mobile'] ?? '', 'license_number' => $params['license_number'] ?? '', 'license_image' => $params['license_image'] ?? '', 'lease_contract_image' => $params['lease_contract_image'] ?? '', 'lease_money' => $params['lease_money'] ?? 0, 'lease_start_time' => $params['lease_start_time'] ?? '', 'lease_end_time' => $params['lease_end_time'] ?? '', // 联系人 'purpose' => $params['purpose'] ?? '', 'referee_name' =>$params['referee_name'], 'referee_uid' =>$params['referee_uid'], 'remark' => $params['remark'] ?? '', 'first_status'=>$params['first_status'] ?? 1, 'first_uid'=>$params['first_uid'] ?? 0, 'second_status'=>$params['second_status'] ?? 0, 'second_uid'=>$params['second_uid'] ?? 0, 'approval_status'=>$new_approval_status, ]); return true ; } catch (\Exception $e) { self::setError($e->getMessage()); return false; } } /** * @notes 删除资产 * @param array $params * @author heshihu * @date 2022/2/22 10:17 */ public static function delete(array $params) { AssetLeaseInfo::destroy($params['id']); } /** * @notes 查看资产详情 * @param $params * @return array * @author heshihu * @date 2022/2/22 10:15 */ public static function detail($params) : array { return AssetLeaseInfo::with(['asset','firstapproval','endapproval'])->findOrEmpty($params['id'])->append(['first_status_desc','second_status_desc'])->toArray(); } /** * @notes 租赁资产信息审核 * @param array $params * @return bool * @author heshihu * @date 2022/2/22 10:12 */ public static function approve(array $params) : bool { try { $id = $params['id']; $leaseAssetInfo = AssetLeaseInfo::find($id); $updateData['id'] = $id; if(in_array($leaseAssetInfo['approval_status'],[1,2,3])){ if(in_array($params['approval_status'],[4,5,6])){ throw new \Exception('请先进行初审操作!'); } $approval_status = empty($params['approval_status'])?$leaseAssetInfo['approval_status']:$params['approval_status']; $ramark = ''; if( $approval_status == 3){ $approval_status = 4; $ramark = ''; $updateData['remark'] = $ramark; }elseif($approval_status == 2){ if(isset($params['remark'])){ if(empty($params['remark'])){ throw new \Exception('请输入驳回原因!'); }else{ $remark = $params['remark']; } }else{ throw new \Exception('请输入驳回原因!'); } }else{ $updateData['remark'] = $ramark; } if(!empty($remark)){ $updateData['remark'] = $remark; } $updateData['approval_status'] = $approval_status; $updateData['first_uid'] = $params['approve_uid']; $updateData['first_approval_time'] = time(); }else{ //终审 if(in_array($params['approval_status'],[1,2,3])){ throw new \Exception('初审已完成无需再次操作'); } $approval_status = $params['approval_status']; $ramark = ''; if($approval_status == 6){ if(isset($params['remark'])){ if(empty($params['remark'])){ throw new \Exception('请输入驳回原因!'); }else{ $remark = $params['remark']; } }else{ throw new \Exception('请输入驳回原因!'); } }else{ $updateData['remark'] = $ramark; } if(!empty($remark)){ $updateData['remark'] = $remark; } $updateData['approval_status'] = $approval_status; $updateData['second_uid'] = $params['approve_uid']; $updateData['end_approval_time'] = time(); } AssetLeaseInfo::update($updateData); if($approval_status == 5){ $leaseAssetInfo = AssetLeaseInfo::find($id); $assetInfo = AssetInfo::find($leaseAssetInfo['a_id']); $updateAssetData['id'] = $assetInfo['id']; $updateFlag = false ; if($assetInfo['lease_status']==2){ if(strtotime($leaseAssetInfo['lease_end_time']) > strtotime($assetInfo['lease_expiration_time'])){ $updateAssetData['lease_expiration_time'] = $leaseAssetInfo['lease_end_time']; $updateFlag = true ; } }else{ $updateAssetData['lease_expiration_time'] = $leaseAssetInfo['lease_end_time']; $updateAssetData['lease_status'] = 2; $updateFlag = true ; } if($updateFlag){ AssetInfo::update($updateAssetData); } } return true ; } catch (\Exception $e) { self::setError($e->getMessage()); return false; } } /** * @notes 租赁资产信息缴费 * @param array $params * @return bool * @author heshihu * @date 2022/2/22 10:12 */ public static function updatePayStatus(array $params) : bool { try { $id = $params['id']; $leaseAssetInfo = AssetLeaseInfo::find($id); $updateData['id'] = $id; if(empty($leaseAssetInfo)){ throw new \Exception('传入的资产租赁信息id错误!'); } $updateData['is_pay'] = $params['is_pay']; AssetLeaseInfo::update($updateData); return true ; } catch (\Exception $e) { self::setError($e->getMessage()); return false; } } public static function autoUpdateStatus():bool{ $where = [] ; $where[] = ['auto_status','=',0] ; $where[]= ['approval_status','=',5]; $assetLeaseList = AssetLeaseInfo::where($where)->select()->toArray(); $nowTime = time(); foreach($assetLeaseList as &$v){ $assetInfo = AssetInfo::find($v['a_id']); $a_lease_expiration_time = $assetInfo['lease_expiration_time']; if($nowTime >= strtotime($v['lease_end_time'])){ $updateLeaseData['id']=$v['id']; $updateLeaseData['auto_status']=1; AssetLeaseInfo::update($updateLeaseData); if(strtotime($v['lease_end_time']) >= strtotime($a_lease_expiration_time)) { $updateAssetData['id'] = $assetInfo['id']; $updateAssetData['lease_status'] = 3; AssetInfo::update($updateAssetData); }else{ continue; } }else{ continue; } } return true; } public static function setEnd(array $params):bool { try { $assListObj = new AssetLeaseInfo(); $id = $params['id']; $leaseAssetInfo = $assListObj->find($id); $saveData['id'] = $id; $saveData['is_remind'] = 0; $assListObj->update($saveData); $updateAssetData['id'] = $leaseAssetInfo['a_id']; $updateAssetData['lease_expiration_time'] = ''; $updateAssetData['lease_status'] = 1; AssetInfo::update($updateAssetData); return true; } catch (\Exception $e) { self::setError($e->getMessage()); return false; } } }