*/ class SignController extends OnAuthController { /** * @var Sign */ public $modelClass = Sign::class; /** * 不用进行登录验证的方法 * 例如: ['index', 'update', 'create', 'view', 'delete'] * 默认全部需要验证 * * @var array */ protected $authOptional = ['index', 'view', 'list','update','create','get-my-sign']; /** * 首页 * * @return ActiveDataProvider */ public function actionIndex() { return new ActiveDataProvider([ 'query' => $this->modelClass::find() ->where(['status' => StatusEnum::ENABLED]) ->select(['*']) ->orderBy('id desc') ->asArray(), 'pagination' => [ 'pageSize' => $this->pageSize, 'validatePage' => false,// 超出分页不返回data ], ]); } /** * 自定义装修可用 * * 修改数据格式返回 * * @return array|mixed */ public function actionList() { $keyword = Yii::$app->request->get('keyword'); $data = $this->modelClass::find() ->select(['*']) ->where(['status' => StatusEnum::ENABLED]); // ->andFilterWhere(['like', 'title', $keyword]); $pages = new Pagination(['totalCount' => $data->count(), 'pageSize' => $this->pageSize]); $models = $data->offset($pages->offset) ->orderBy('id desc') ->limit($pages->limit) ->asArray() ->all(); return [ 'list' => $models, 'pages' => [ 'totalCount' => $pages->totalCount, 'pageSize' => $pages->pageSize, ] ]; } /** * 查看 * * @return ActiveDataProvider */ // public function actionView($id) // { // $uid = Yii::$app->request->get('uid'); // $aid = Yii::$app->request->get('aid'); // $data = $this->modelClass::find() // ->select(['*']) // ->where(['uid' => $uid, 'aid' => $aid])->one(); // return $data; // } /** * @param $id * @return \yii\db\ActiveRecord * @throws NotFoundHttpException */ protected function findModel($id) { /* @var $model \yii\db\ActiveRecord */ if (empty($id) || !($model = $this->modelClass::find()->where([ 'id' => $id, 'status' => StatusEnum::ENABLED, ])->one())) { throw new NotFoundHttpException('请求的数据不存在'); } return $model; } /** * 编辑/创建 * * @return mixed */ public function actionEdit() { $id = Yii::$app->request->get('id', null); $model = $this->findModel($id); $model->status= StatusEnum::ENABLED; // $model->updated_at = time(); if ($model->load(Yii::$app->request->post())) { return $model->save() ? $this->message('保存成功', $this->redirect(['index'])) : $this->message('保存失败', $this->redirect(['index']), 'error'); } return $this->render($this->action->id, [ 'model' => $model, ]); } /** * 更新 * * @param $id * @return bool|mixed * @throws NotFoundHttpException */ public function actionUpdate($id) { // $model = new LoginForm(); $id = Yii::$app->request->get('id', null); $uid = Yii::$app->request->get('uid'); $aid = Yii::$app->request->get('aid'); $model = $this->findModel($id); // $model->attributes = Yii::$app->request->post(); $model->status= StatusEnum::ENABLED; // $data = Yii::$app->request->post(); // $data = ArrayHelper::filter($data, [ // 'uid', // 'aid', // ]); // $model = $this->findModel($id); $model->uid = $uid; $model->aid = $aid; // $model->attributes = $data; if (!$model->save()) { return ResultHelper::json(422, $this->getError($model)); } return 'ok'; } /** * 创建 * * @return mixed|\yii\db\ActiveRecord */ public function actionCreate() { $params = Yii::$app->request->post('params'); $aid = $params["aid"]; $uid = $params["uid"]; // $model = $this->modelClass::find()->where([ // 'aid' => $aid, // 'uid' => $uid, // 'status' => StatusEnum::ENABLED, // ])->one(); if ($model = $this->modelClass::find()->where([ 'aid' => $aid, 'uid' => $uid, // 'status' => StatusEnum::ENABLED, ])->one()) { if($model->status !== StatusEnum::ENABLED){ $model->status = '1'; if (!$model->save()) { return ResultHelper::json(422, $this->getError($model)); } }else { return ResultHelper::json(422, '已经报名!'); } } $model = new $this->modelClass(); // $params["status"] = StatusEnum::ENABLED; $model->attributes = $params; if (!$model->save()) { return ResultHelper::json(422, $this->getError($model)); } return "OK"; } /** * 获取报名情况 * * @return mixed|\yii\db\ActiveRecord */ public function actionGetSignStatus() { $uid = Yii::$app->request->get('uid'); $aid = Yii::$app->request->get('aid'); if (!($model = $this->modelClass::find() ->select(['*']) ->where(['uid' => $uid, 'aid' => $aid])->one())) { //throw new NotFoundHttpException('请求的数据不存在'); return "OK"; } return $model; } /** * 我的报名 * * @return mixed|\yii\db\ActiveRecord */ public function actionGetMySign() { $uid = Yii::$app->request->get('uid'); // $model = $this->modelClass::find()->where(['uid' => $uid])->joinWith("activity")->all(); $model = Activity::find()->where(['status' => StatusEnum::ENABLED])->joinWith("sign")->where(['uid' => $uid])->all(); return $model; // return $this->modelClass()::getSign($uid); // return new ActiveDataProvider([ // 'query' => Activity::find() // ->where(['status' => StatusEnum::ENABLED]) // ->select(['*']) // ->orderBy('id desc') // ->asArray(), // 'pagination' => [ // 'pageSize' => $this->pageSize, // 'validatePage' => false,// 超出分页不返回data // ], // ]); } /** * {@inheritdoc} */ protected function verbs() { return [ 'index' => ['GET', 'POST', 'HEAD', 'OPTIONS'], 'view' => ['GET', 'HEAD', 'OPTIONS'], 'create' => ['POST', 'OPTIONS'], 'update' => ['PUT', 'PATCH', 'OPTIONS' , 'POST'], 'delete' => ['DELETE', 'OPTIONS'], ]; } }