Exemplo n.º 1
0
 public function actionLogin()
 {
     $model = new EntryForm();
     $session = Yii::$app->session;
     if (isset($session['user'])) {
         $user = $session['user'];
         if ($user['permission'] == 0) {
             return $this->redirect('?r=admin/index');
         } else {
             if ($user['permission'] == 1) {
                 $count = Email::find()->count();
                 $pagination = new Pagination(['defaultPageSize' => 8, 'totalCount' => Email::find()->count()]);
                 $email = Email::find()->orderBy(['sendtime' => SORT_DESC])->offset($pagination->offset)->limit($pagination->limit)->asArray()->all();
                 return $this->render('/Users\\distributer\\index', ['user' => $user, 'email' => $email, 'pagination' => $pagination, 'count' => $count]);
             } else {
                 if ($user['permission'] == 2) {
                     $count = Check::find()->where(['check_user_id' => $session['user_id'], 'check_status' => 0])->count();
                     $countall = Check::find()->where(['check_user_id' => $session['user_id']])->count();
                     $pagination = new Pagination(['defaultPageSize' => 8, 'totalCount' => $countall]);
                     $session['count'] = $count;
                     $check = Check::find()->where(['check_user_id' => $session['user_id']])->offset($pagination->offset)->limit($pagination->limit)->asArray()->all();
                     $checkemails = array();
                     foreach ($check as $key) {
                         $checkemail = SentEmail::find()->where(['id' => $key['email_id']])->asArray()->one();
                         $emailuser = Users::find()->where(['id' => $checkemail['user_id']])->asArray()->one();
                         $checkemail['dealername'] = $emailuser['username'];
                         $checkemail['check_status'] = $key['check_status'];
                         $checkemail['foreignid'] = $key['id'];
                         $checkemails[] = $checkemail;
                     }
                     $check['count'] = $count;
                     return $this->render('/verifier\\index', ['user' => $user, 'check' => $check, 'checkemails' => $checkemails, 'pagination' => $pagination]);
                 } else {
                     if ($user['permission'] == 3) {
                         $count = Email_user_rs::find()->where(['user_id' => $user['id']])->count();
                         $pagination = new Pagination(['defaultPageSize' => 8, 'totalCount' => $count]);
                         $session['count'] = $count;
                         $dealEmail = Email_user_rs::find()->where(['user_id' => $user['id']])->offset($pagination->offset)->limit($pagination->limit)->asArray()->all();
                         /*$sql='SELECT e.id,e.subject,e.sender,e.receiver,e.text,e.label,e.check_status,e.sendtime,e.attachment,es.* FROM email as e,email_user_rs as es WHERE e.id=es.email_id and es.user_id='.$user['id'];
                           $connection=Yii::$app->db;
                           $command=$connection->createCommand($sql);
                           $result=$command->queryAll();
                           return $this->render('/Users\dealer\index', ['user' => $user,'pagination'=>$pagination]);*/
                         $emails = array();
                         foreach ($dealEmail as $key) {
                             $useremail = Email::find()->orderBy(['sendtime' => SORT_DESC])->where(['id' => $key['email_id']])->asArray()->one();
                             $emails[] = $useremail;
                         }
                         return $this->render('/Users\\dealer\\index', ['user' => $user, 'emails' => $emails, 'dealEmail' => $dealEmail, 'pagination' => $pagination]);
                     }
                 }
             }
         }
     } else {
         if ($model->load(Yii::$app->request->post()) && $model->validate()) {
             $user = Users::getUserByUserName($model->name);
             $session['user'] = $user;
             $session['user_id'] = $user['id'];
             $session['model'] = $model;
             if (empty($user)) {
                 $message = "用户名不存在!";
                 return $this->render('login', ['message' => $message, 'model' => $model]);
             } else {
                 if ($user['password'] != $model->password) {
                     $message = "密码输入错误!";
                     return $this->render('login', ['message' => $message, 'model' => $model]);
                 } else {
                     if ($user['permission'] == 0) {
                         return $this->redirect('?r=admin/index');
                     } else {
                         if ($user['permission'] == 1) {
                             $count = Email::find()->where(['handle_status' => 0])->count();
                             $session['undistributer_count'] = $count;
                             $pagination = new Pagination(['defaultPageSize' => 8, 'totalCount' => Email::find()->count()]);
                             $email = Email::find()->orderBy(['sendtime' => SORT_DESC])->offset($pagination->offset)->limit($pagination->limit)->asArray()->all();
                             return $this->render('/Users\\distributer\\index', ['user' => $user, 'email' => $email, 'pagination' => $pagination, 'count' => $count]);
                         } else {
                             if ($user['permission'] == 2) {
                                 $count = Check::find()->where(['check_user_id' => $session['user_id'], 'check_status' => 0])->count();
                                 $countall = Check::find()->where(['check_user_id' => $session['user_id']])->count();
                                 $pagination = new Pagination(['defaultPageSize' => 8, 'totalCount' => $countall]);
                                 $session['count'] = $count;
                                 $check = Check::find()->where(['check_user_id' => $session['user_id']])->offset($pagination->offset)->limit($pagination->limit)->asArray()->all();
                                 $checkemails = array();
                                 foreach ($check as $key) {
                                     $checkemail = SentEmail::find()->where(['id' => $key['email_id']])->asArray()->one();
                                     $emailuser = Users::find()->where(['id' => $checkemail['user_id']])->asArray()->one();
                                     $checkemail['dealername'] = $emailuser['username'];
                                     $checkemail['check_status'] = $key['check_status'];
                                     $checkemail['foreignid'] = $key['id'];
                                     $checkemails[] = $checkemail;
                                 }
                                 $check['count'] = $count;
                                 return $this->render('/verifier\\index', ['user' => $user, 'check' => $check, 'checkemails' => $checkemails, 'pagination' => $pagination]);
                             } else {
                                 if ($user['permission'] == 3) {
                                     $count = Email_user_rs::find()->where(['user_id' => $user['id']])->count();
                                     $pagination = new Pagination(['defaultPageSize' => 8, 'totalCount' => $count]);
                                     $session['count'] = $count;
                                     $dealEmail = Email_user_rs::find()->where(['user_id' => $user['id']])->offset($pagination->offset)->limit($pagination->limit)->asArray()->all();
                                     /*$sql='SELECT e.id,e.subject,e.sender,e.receiver,e.text,e.label,e.check_status,e.sendtime,e.attachment,es.* FROM email as e,email_user_rs as es WHERE e.id=es.email_id and es.user_id='.$user['id'];
                                       $connection=Yii::$app->db;
                                       $command=$connection->createCommand($sql);
                                       $result=$command->queryAll();
                                       return $this->render('/Users\dealer\index', ['user' => $user,'pagination'=>$pagination]);*/
                                     $emails = array();
                                     foreach ($dealEmail as $key) {
                                         $useremail = Email::find()->orderBy(['sendtime' => SORT_DESC])->where(['id' => $key['email_id']])->asArray()->one();
                                         $emails[] = $useremail;
                                     }
                                     return $this->render('/Users\\dealer\\index', ['user' => $user, 'emails' => $emails, 'dealEmail' => $dealEmail, 'pagination' => $pagination]);
                                 }
                             }
                         }
                     }
                 }
             }
         } else {
             // 无论是初始化显示还是数据验证错误
             return $this->render('login', ['model' => $model]);
         }
     }
 }