applyConstructionCrossDayAsLongTerm(); }); } /** * 施工访客且施工起止不为同一天:自动长期访客,并同步 start_date / end_date。 */ public function applyConstructionCrossDayAsLongTerm(): void { if ((int) $this->type !== 2) { return; } $ws = $this->work_start_time; $we = $this->work_end_time; if (empty($ws) || empty($we)) { return; } try { $d1 = Carbon::parse($ws)->format('Y-m-d'); $d2 = Carbon::parse($we)->format('Y-m-d'); } catch (\Throwable $e) { return; } if ($d1 === $d2) { return; } $this->long_time = 1; $this->start_date = $d1; $this->end_date = $d2; } protected $casts = [ 'follw_people' => 'json', 'cars' => 'json', 'file' => 'json', 'person_no' => 'json', 'car_no' => 'json' ]; public function getFileDetailAttribute() { if (empty($this->file)) { return []; } return Upload::whereIn('id', $this->file)->get(); } public function getTypeTextAttribute() { $array = [1 => '普通访客', 2 => '施工访客', 3 => '物流访客', 4 => 'VIP访客']; return $array[$this->type] ?? ''; } public function getAuditStatusTextAttribute() { $array = ['-1' => '待学习', '0' => '待审核', '1' => '通过', '2' => '驳回', '3' => '已进厂', '4' => '已离厂', '5' => '已取消']; return $array[$this->audit_status] ?? ''; } public function visitTime() { return $this->hasOne(VisitTime::class, 'id', 'visit_time_id'); } public function admin() { return $this->hasOne(Admin::class, 'id', 'admin_id'); } public function accompany() { return $this->hasOne(Admin::class, 'id', 'accompany_id'); } public function acceptAdmin() { return $this->hasOne(Admin::class, 'id', 'accept_admin_id'); } public function acceptGoodsAdmin() { return $this->hasOne(Admin::class, 'id', 'accept_goods_admin_id'); } public function acceptAdminSignFile() { return $this->hasOne(Upload::class, 'id', 'accept_admin_sign'); } public function visitArea() { return $this->hasOne(VisitArea::class, 'id', 'visit_area_id'); } public function audit() { return $this->hasMany(VisitAudit::class, 'visit_id', 'id')->orderBy('level'); } public function logs() { return $this->hasMany(VisitLog::class, 'visit_id', 'id'); } public function gateLogs() { return $this->hasMany(GateLog::class, 'code', 'code'); } // 小程序订阅消息 public static function subMsg($template_id, $openid, $data,$id) { $config = [ 'app_id' => \config('app.wechat_appid'), 'secret' => \config('app.wechat_appsecret') ]; $app = Factory::miniProgram($config); $data = [ 'template_id' => $template_id, 'touser' => $openid, 'page' => 'pages/visit/detail?id=' . $id, 'data' => $data ]; return $app->subscribe_message->send($data); } }