with(['image', 'category', 'branch']) ->where('is_delete', '=', 0); // 按审核状态筛选 if (isset($params['audit_status']) && $params['audit_status'] !== '') { $model = $model->where('audit_status', '=', $params['audit_status']); } return $model->order(['sort' => 'desc', 'create_time' => 'desc']) ->paginate($params); } /** * 审核活动 */ public function audit($activity_id, $data) { $model = $this->detail($activity_id); if (!$model) { $this->error = '活动不存在'; return false; } $updateData = [ 'audit_status' => $data['audit_status'], 'audit_time' => time(), 'audit_remark' => $data['audit_remark'] ?? '' ]; return $model->save($updateData); } /** * 新增记录 */ public function add($data) { // 检查走访企业30天限制(编辑时排除当前活动) if ($data['is_visit'] == 1) { $visitCheck = $this->checkVisitLimit($data['visit_supplier_id'], $data['visit_supplier_name']); if ($visitCheck) { $this->error = '该企业30天内已被走访,还需等待' . $visitCheck['remaining_days'] . '天才可以重新走访'; return false; } } $data['app_id'] = self::$app_id; //报名时间 $data['register_start_time'] = strtotime($data['reg_date'][0]); $data['register_end_time'] = strtotime($data['reg_date'][1]); //活动时间 $data['activity_start_time'] = strtotime($data['act_date'][0]); $data['activity_end_time'] = strtotime($data['act_date'][1]); // 格式化坐标信息 $coordinate = explode(',', $data['coordinate']); $data['latitude'] = $coordinate[0]; $data['longitude'] = $coordinate[1]; return $this->save($data); } /** * 更新记录 */ public function edit($data) { // 检查走访企业30天限制(编辑时排除当前活动) if ($data['is_visit'] == 1) { $visitCheck = $this->checkVisitLimit($data['visit_supplier_id'], $data['visit_supplier_name'], $data['activity_id']); if ($visitCheck) { $this->error = '该企业30天内已被走访,还需等待' . $visitCheck['remaining_days'] . '天才可以重新走访'; return false; } } $data['app_id'] = self::$app_id; //报名时间 $data['register_start_time'] = strtotime($data['reg_date'][0]); $data['register_end_time'] = strtotime($data['reg_date'][1]); //活动时间 $data['activity_start_time'] = strtotime($data['act_date'][0]); $data['activity_end_time'] = strtotime($data['act_date'][1]); // 格式化坐标信息 $coordinate = explode(',', $data['coordinate']); $data['latitude'] = $coordinate[0]; $data['longitude'] = $coordinate[1]; return $this->save($data); } /** * 软删除 */ public function setDelete() { return $this->save(['is_delete' => 1]); } /** * 获取活动总数量 */ public static function getActivityTotal($where) { $model = new static; return $model->where($where)->where('is_delete', '=', 0)->count(); } /** * 开启禁止 */ public function setStatus($status) { // 开启事务 $this->startTrans(); try { //更改分会状态 $this->save(['status' => $status]); $this->commit(); return true; } catch (\Exception $e) { $this->error = $e->getMessage(); $this->rollback(); return false; } } }