Example #1
0
 public function run()
 {
     /**
      * 验证用户权限
      */
     if (false == $this->verifyUserAuth()) {
         return false;
     }
     $area = ['user_cover', 'user_nickname', 'user_gender', 'user_birthday', 'user_realname', 'user_district', 'user_money', 'user_money_virtual', 'user_mobile', 'persional_sign'];
     $fields = $this->getDataItem('fields');
     //字段
     $fields = explode(',', $fields);
     foreach ($fields as $f) {
         if (!in_array($f, $area)) {
             return $this->errorLog(ResultStatus::POST_BODY_PARAM_ERROR, '字段名不存在.');
         }
     }
     $user = UserBase::find('user_id=' . $this->getUserAuth()->userId)->toArray();
     $user = $user[0];
     $fieldsArr = ['user_cover' => 'user_cover', 'user_nickname' => 'user_nickname', 'user_gender' => 'user_gender', 'user_birthday' => 'user_birthday', 'user_realname' => 'user_realname', 'user_district' => 'user_district', 'user_money' => 'user_money', 'user_money_virtual' => 'user_money_virtual', 'user_mobile' => 'user_account', 'persional_sign' => 'persional_sign'];
     $result = [];
     foreach ($fields as $field) {
         $key = $fieldsArr[$field];
         $value = $user[$key];
         if ($field == 'user_cover') {
             $value = PicUrl::UserCover($value, $this->getDi());
         }
         if ($field == 'persional_sign' && unserialize(base64_decode($value))) {
             $value = unserialize(base64_decode($value));
         }
         $result[$key] = $value;
     }
     $this->setResult($result);
 }
Example #2
0
 public function run()
 {
     $id = intval($this->getDataItem('id', 0));
     if (0 < $id) {
         $this->question = Question::query()->columns(['u.user_id', 'u.user_nickname', 'u.user_cover', 'Apps\\Common\\Models\\Question.question_id as question_id', 'Apps\\Common\\Models\\Question.question_content as question_content', 'Apps\\Common\\Models\\Question.question_pics as question_pics', 'Apps\\Common\\Models\\Question.answer_num as answer_num', 'Apps\\Common\\Models\\Question.question_follows as follow_num', '0 user_is_follow', 'Apps\\Common\\Models\\Question.question_addtime as addtime'])->leftJoin('Apps\\Common\\Models\\UserBase', 'Apps\\Common\\Models\\Question.user_id=u.user_id', 'u')->where('Apps\\Common\\Models\\Question.question_id= :id: and Apps\\Common\\Models\\Question.question_state > 0')->bind(['id' => $id])->execute()->getFirst();
     } else {
         return $this->errorLog(ResultStatus::POST_BODY_PARAM_ERROR, '参数异常');
     }
     if ($this->question) {
         if (unserialize(base64_decode($this->question->question_content))) {
             $this->question->question_content = unserialize(base64_decode($this->question->question_content));
         }
         $this->question->question_pics = PicUrl::Question(json_decode($this->question->question_pics), $this->getDi());
         $this->question->addtime = \Apps\Common\Libs\DateTime::Format($this->question->addtime);
         $this->question->user_cover = PicUrl::UserCover($this->question->user_cover, $this->getDi());
         $this->verifyUserAuth(false);
         $userId = $this->getUserAuth() ? $this->getUserAuth()->userId : 0;
         if ($userId > 0) {
             $count = QuestionFollow::count(['conditions' => 'question_id = :qid: AND user_id = :uid:', 'bind' => ['qid' => $id, 'uid' => $userId]]);
             $this->question->user_is_follow = $count > 0 ? 1 : 0;
         }
     } else {
         $this->question = null;
     }
     $this->setResult($this->question);
 }
Example #3
0
 public function run()
 {
     $questionId = intval($this->getDataItem('question_id', 0));
     $user_id = intval($this->getDataItem('user_id', 0));
     $page = intval($this->getDataItem('page', 1));
     //        $questionId = 194;
     if ($questionId < 1) {
         return $this->errorLog(ResultStatus::POST_BODY_PARAM_ERROR, '参数不完整或者参数错误!');
     }
     $limit = $this->getConfig()->limit;
     $offset = ($page - 1) * $limit;
     $QuestionAnswer = new QuestionAnswer();
     $expertReplyList = $QuestionAnswer->query()->columns(['u.user_id', 'u.user_cover', 'u.user_nickname', 'u.user_gender', 'answer_id', 'answer_content', 'original_content', 'support_count', 'answer_addtime', 'answer_pics'])->leftJoin('\\Apps\\Common\\Models\\UserBase', 'u.user_id = \\Apps\\Common\\Models\\QuestionAnswer.user_id', 'u')->where("answer_state = 1 and type = 1 and question_id = {$questionId}")->orderBy('answer_addtime DESC')->limit($limit, $offset)->execute()->toArray();
     $QuestionAnswerFollow = new QuestionAnswerFollow();
     foreach ($expertReplyList as $k => $val) {
         $expertReplyList[$k]['user_cover'] = PicUrl::UserCover($val['user_cover'], $this->getDi());
         $expertReplyList[$k]['answer_content'] = unserialize(base64_decode($val['answer_content'])) ?: $val['answer_content'];
         if ($user_id > 0) {
             $expertReplyList[$k]['is_support'] = $QuestionAnswerFollow->is_support($user_id, $val['answer_id']) ? '1' : '0';
         } else {
             $expertReplyList[$k]['is_support'] = '0';
         }
         $answer_pics = [];
         if ($answer_pics_list = json_decode($val['answer_pics'], true)) {
             foreach ($answer_pics_list as $value) {
                 $answer_pics[] = PicUrl::Question($value, $this->getDi());
             }
         }
         $expertReplyList[$k]['answer_pics'] = $answer_pics;
     }
     $this->setResult($expertReplyList);
 }
Example #4
0
 public function run()
 {
     $to_user_id = $this->getDataItem('user_id');
     if (!(is_numeric($to_user_id) && $to_user_id > 0)) {
         return $this->errorLog(ResultStatus::POST_BODY_PARAM_ERROR, '用户id不能为空.');
     }
     /**
      * 验证用户权限
      */
     /*if(!empty($this->parameters->userToken) && $this->verifyUserAuth() && $this->getUserAuth()->userId == $userid){
           return $this->errorLog(111, '请跳转我的问答.');
       }*/
     $field = ['user_cover', 'user_nickname', 'user_gender', 'user_birthday', 'user_realname', 'user_district', 'user_money', 'user_money_virtual', 'bind_phone user_mobile', 'persional_sign', 'user_expert'];
     $info = UserBase::query()->columns($field)->where('user_id=' . $to_user_id)->execute()->getFirst()->toArray();
     // 获取城市信息
     $SysAreaZipDistrictPhonecode = new SysAreaZipDistrictPhonecode();
     $city = $SysAreaZipDistrictPhonecode->getOne($info['user_district']);
     $info['user_district'] = $city['FULL_NAME'] ?: '';
     // 加入关注数和粉丝数
     $UserFollow = new UserFollow();
     $info['follow_count'] = $UserFollow->getFollowCount($to_user_id, 1);
     $info['fans_count'] = $UserFollow->getToFollowCount($to_user_id, 1);
     $info['user_cover'] = $info['user_cover'] ? PicUrl::UserCover($info['user_cover'], $this->getDi()) : '';
     $info['persional_sign'] = $info['persional_sign'] ? unserialize(base64_decode($info['persional_sign'])) : '';
     $this->verifyUserAuth(false);
     if ($user_id = $this->getUserAuth()->userId) {
         $info['is_follow'] = $UserFollow->is_follow($user_id, $to_user_id, 1) ? '1' : '0';
     } else {
         $info['is_follow'] = '0';
     }
     $this->setResult($info);
 }
 /**
  * 获取浏览记录的用户列表
  * @param int $question_id 问题id
  * @param int $offset 分页偏移量
  * @param int $limit 页大小
  * @return array
  */
 public function getViewsUserList($question_id, $offset = 0, $limit = 10)
 {
     $list = $this->query()->columns(['u.user_id', 'u.user_cover'])->where('question_id = ' . $question_id)->leftJoin('\\Apps\\Common\\Models\\UserBase', 'u.user_id = \\Apps\\Common\\Models\\QuestionViewsUser.user_id', 'u')->groupBy('\\Apps\\Common\\Models\\QuestionViewsUser.user_id')->orderBy('add_time DESC')->limit($limit, $offset)->execute()->toArray();
     foreach ($list as $k => $val) {
         $list[$k]['user_cover'] = PicUrl::UserCover($val['user_cover'], $this->getDi());
     }
     return $list;
 }
Example #6
0
 /**
  * 问答
  */
 public function questionAction()
 {
     $id = $this->request->getQuery('id');
     if (empty($id)) {
         echo '问题不存在!';
         $this->view->disable();
         return;
     }
     $limit = 20;
     $page = 1;
     $this->tag->setTitle($this->appName . ' - 问答详情');
     $question = Question::query()->columns(['u.user_id', 'u.user_nickname', 'u.user_cover', 'Apps\\Common\\Models\\Question.question_id as question_id', 'Apps\\Common\\Models\\Question.question_content as question_content', 'Apps\\Common\\Models\\Question.question_pics as question_pics', 'Apps\\Common\\Models\\Question.question_browsers as answer_num', 'Apps\\Common\\Models\\Question.question_follows as follow_num', '0 user_is_follow', 'Apps\\Common\\Models\\Question.question_addtime as addtime'])->leftJoin('Apps\\Common\\Models\\UserBase', 'Apps\\Common\\Models\\Question.user_id=u.user_id', 'u')->where('question_state>0 and question_id=:id:')->bind(['id' => $id])->execute()->getFirst();
     if ($question) {
         $question->question_pics = PicUrl::Question(json_decode($question->question_pics), $this->di);
         $question->addtime = \Apps\Common\Libs\DateTime::FriendlyDate($question->addtime, 'mohu');
         $question->user_cover = PicUrl::UserCover($question->user_cover, $this->di);
         if (unserialize(base64_decode($question->question_content))) {
             $question->question_content = unserialize(base64_decode($question->question_content));
         }
     } else {
         echo '问题不存在!';
         $this->view->disable();
         return;
     }
     $this->view->setVar('question', $question);
     $answers = QuestionAnswer::listByQuestionId($id, $limit, 0, 0)->toArray();
     $answers = $answers ? $answers : [];
     $answersData = [];
     $dataBest = null;
     foreach ($answers as $arr) {
         if (unserialize(base64_decode($arr['answer_content']))) {
             $arr['answer_content'] = unserialize(base64_decode($arr['answer_content']));
         }
         $arr['user_cover'] = PicUrl::UserCover($arr['user_cover'], $this->di);
         $arr['answer_pics'] = PicUrl::Question(json_decode($arr['answer_pics']), $this->di);
         $arr['addtime'] = \Apps\Common\Libs\DateTime::FriendlyDate($arr['addtime'], 'mohu');
         // 处理最佳答案
         $best = $arr['answer_best'];
         if ($best > 5 && $page == 1) {
             if ($dataBest == null) {
                 $dataBest = $arr;
                 continue;
             } elseif ($dataBest['answer_best'] < $best) {
                 $dataBest = $arr;
                 continue;
             }
         }
         $arr['answer_best'] = 0;
         $answersData[] = $arr;
     }
     if ($dataBest != null) {
         $dataBest['answer_best'] = 1;
         array_splice($answersData, 0, 0, [$dataBest]);
     }
     $this->view->setVar('answers', $answersData);
 }
Example #7
0
 public function run()
 {
     $his_id = $this->getDataItem('his_id');
     //要查询用户的id
     $type = $this->getDataItem('type', '');
     $page = intval($this->getDataItem('page', 1));
     /**
      * 验证用户权限
      */
     if (!empty($this->parameters->userToken) && true == $this->verifyUserAuth()) {
         if ($this->getUserAuth()->userId == $his_id) {
             return $this->errorLog(111, '请跳转我的问答.');
         }
     }
     $limit = $this->getConfig()->limit;
     $offset = ($page - 1) * $limit;
     $typeArray = ['his', 'his_answer', 'his_follow'];
     if (!in_array($type, $typeArray)) {
         return $this->errorLog(ResultStatus::POST_BODY_PARAM_ERROR, '查询的类型不存在.');
     }
     $columns = ['u.user_id', 'u.user_nickname', 'u.user_cover', 'Apps\\Common\\Models\\Question.question_id question_id', 'Apps\\Common\\Models\\Question.question_content question_content', 'Apps\\Common\\Models\\Question.question_pics question_pics', 'Apps\\Common\\Models\\Question.answer_num answer_num', 'Apps\\Common\\Models\\Question.question_browsers browser_num', 'Apps\\Common\\Models\\Question.question_follows follow_num', 'Apps\\Common\\Models\\Question.question_addtime addtime'];
     $userId = $his_id;
     $data = [];
     switch ($type) {
         case 'his':
             $data = $this->getHis($userId, $columns, $limit, $offset);
             break;
         case 'his_answer':
             $data = $this->getAnswer($userId, $limit, $offset);
             break;
         case 'his_follow':
             $data = $this->getFollow($userId, $columns, $limit, $offset);
             break;
     }
     $result = [];
     if ($data && count($data) > 0) {
         foreach ($data as $arr) {
             $tmp = PicUrl::Question(json_decode($arr['question_pics']), $this->getDi());
             if (is_string($tmp)) {
                 $arr['question_pics'] = $tmp;
             }
             if (is_array($tmp)) {
                 $arr['question_pics'] = array_slice($tmp, 0, 2);
             }
             //$arr['addtime'] = \Apps\Common\Libs\DateTime::Format($arr['addtime']);
             $arr['user_cover'] = PicUrl::UserCover($arr['user_cover'], $this->getDi());
             if (unserialize(base64_decode($arr['question_content']))) {
                 $arr['question_content'] = unserialize(base64_decode($arr['question_content']));
             }
             $result[] = $arr;
         }
     }
     $this->setResult($result);
 }
Example #8
0
 public function run()
 {
     /* $jpush=new Jpush();
       	$param['type'] =1;
       	$param['ispushservice']=1;
       	$param['phone'] ='18623640927';
       	$param['content'] ="HAHHA";
       	$jpush->setval($param);
       	$a=$jpush->push();
       	var_dump($a);
       	exit; */
     $questionId = intval($this->getDataItem('question_id', 0));
     $page = intval($this->getDataItem('page', 1));
     $limit = $this->getConfig()->limit;
     $offset = ($page - 1) * $limit;
     $this->verifyUserAuth(false);
     $userId = $this->getUserAuth() ? $this->getUserAuth()->userId : 0;
     if (0 < $questionId) {
         $this->answers = QuestionAnswer::listByQuestionId($questionId, $limit, $offset, $userId)->toArray();
     } else {
         $this->errorLog(ResultStatus::URL_PARAM_CANNOT_EMPTY, 'question id');
     }
     $this->answers = $this->answers ? $this->answers : [];
     $data = [];
     $dataBest = null;
     foreach ($this->answers as $arr) {
         $arr['user_cover'] = PicUrl::UserCover($arr['user_cover'], $this->getDi());
         $arr['answer_pics'] = PicUrl::Question(json_decode($arr['answer_pics']), $this->getDi());
         $arr['addtime'] = \Apps\Common\Libs\DateTime::Format($arr['addtime']);
         if (unserialize(base64_decode($arr['answer_content']))) {
             $arr['answer_content'] = unserialize(base64_decode($arr['answer_content']));
         }
         // 处理最佳答案
         $best = $arr['answer_best'];
         if ($best > 5 && $page == 1) {
             if ($dataBest == null) {
                 $dataBest = $arr;
                 continue;
             } elseif ($dataBest['answer_best'] < $best) {
                 $dataBest = $arr;
                 continue;
             }
         }
         $arr['answer_best'] = 0;
         $data[] = $arr;
     }
     if ($dataBest != null) {
         $dataBest['answer_best'] = 1;
         array_splice($data, 0, 0, [$dataBest]);
     }
     $this->setResult($data);
 }
Example #9
0
 public function run()
 {
     $orders = $this->getDataItem('orders', 1);
     // 排序方式(1=》最新提问,2=》最新回复,3=》人气问答)
     $page = intval($this->getDataItem('page', 1));
     $is_expert_reply = $this->getDataItem('is_expert_reply', 0);
     // 专家是否回复
     //        $city_code = (string)$this->getDataItem('city_code', '0'); // 原型去掉了
     $user_id = intval($this->getDataItem('user_id', 0));
     $keyword = $this->getDataItem('keyword', '');
     $limit = $this->getConfig()->limit;
     $offset = ($page - 1) * $limit;
     $columns = ['question_id', 'question_content', 'question_pics', 'question_tag', 'answer_num', 'question_browsers', 'question_addtime', 'is_expert_reply', 'u.user_id', 'u.user_nickname', 'u.user_expert', 'u.user_cover', 'u.user_gender'];
     switch ($orders) {
         case 2:
             $orders = 'last_reply_time DESC';
             break;
         case 3:
             $orders = 'question_browsers DESC';
             break;
         default:
             $orders = 'question_addtime DESC';
     }
     $where = 'question_state = 1';
     if ($is_expert_reply == 1) {
         $where .= ' and is_expert_reply = 1';
     }
     if ($keyword) {
         $where .= " and question_content like '%{$keyword}%'";
     }
     $list = Question::query()->columns($columns)->leftJoin('\\Apps\\Common\\Models\\UserBase', 'u.user_id = \\Apps\\Common\\Models\\Question.user_id', 'u')->where($where)->orderBy($orders)->limit($limit, $offset)->execute()->toArray();
     $QuestionFollow = new QuestionFollow();
     foreach ($list as $k => $val) {
         // 是否收藏过
         if ($user_id) {
             $list[$k]['is_collection'] = $QuestionFollow->is_follow($val['question_id'], $user_id);
         } else {
             $list[$k]['is_collection'] = '0';
         }
         $list[$k]['question_tag'] = $val['question_tag'] ? json_decode($val['question_tag'], true) : [];
         $list[$k]['user_cover'] = PicUrl::UserCover($val['user_cover'], $this->getDi());
         $list[$k]['question_content'] = unserialize(base64_decode($val['question_content'])) ?: $val['question_content'];
         if ($val['question_pics']) {
             $question_pics = [];
             foreach (json_decode($val['question_pics'], true) as $key => $value) {
                 $question_pics[] = PicUrl::Question($value, $this->getDi());
             }
             $list[$k]['question_pics'] = $question_pics;
         }
     }
     $this->setResult($list);
 }
Example #10
0
 public function run()
 {
     $tag_id = intval($this->getDataItem('tag_id', 0));
     $page = intval($this->getDataItem('page', 1));
     $limit = $this->getConfig()->limit;
     $offset = ($page - 1) * $limit;
     $columns = ['u.user_id', 'u.user_nickname', 'u.user_cover', 'question_id', 'question_content', 'question_pics', 'answer_num', 'question_browsers browser_num', 'question_follows follow_num', 'question_addtime addtime'];
     if (-2 == $tag_id) {
         //精华
         /*
         $this->questions = Question::query()
             ->columns($columns)
             ->leftJoin('Apps\Common\Models\UserBase',
                 'Apps\Common\Models\Question.user_id = u.user_id','u')
             ->where('question_state = 2')
             ->orderBy('question_id desc')
             ->limit($limit,$offset)
             ->execute()->toArray();
         */
         $this->questions = Question::query()->columns($columns)->leftJoin('Apps\\Common\\Models\\UserBase', 'Apps\\Common\\Models\\Question.user_id = u.user_id', 'u')->where('question_state > 0')->orderBy('answer_num desc')->limit($limit, $offset)->execute()->toArray();
     } else {
         if (-1 == $tag_id) {
             //最热
             $this->questions = Question::query()->columns($columns)->leftJoin('Apps\\Common\\Models\\UserBase', 'Apps\\Common\\Models\\Question.user_id = u.user_id', 'u')->where('question_state > 0')->orderBy('question_browsers desc,question_follows desc')->limit($limit, $offset)->execute()->toArray();
         } else {
             if (0 == $tag_id) {
                 //默认
                 $this->questions = Question::query()->columns($columns)->leftJoin('Apps\\Common\\Models\\UserBase', 'Apps\\Common\\Models\\Question.user_id = u.user_id', 'u')->where('question_state>0')->orderBy('question_id desc')->limit($limit, $offset)->execute()->toArray();
             } else {
                 //指定条件
                 $this->questions = Question::query()->columns($columns)->leftJoin('Apps\\Common\\Models\\UserBase', 'Apps\\Common\\Models\\Question.user_id = u.user_id', 'u')->where('question_state > 0 and question_tag = :question_tag:')->bind(['question_tag' => $tag_id])->orderBy('question_id desc')->limit($limit, $offset)->execute()->toArray();
             }
         }
     }
     $this->questions = $this->questions ? $this->questions : [];
     $data = [];
     foreach ($this->questions as $arr) {
         $arr['question_pics'] = PicUrl::Question(json_decode($arr['question_pics']), $this->getDi());
         if (is_string($arr['question_pics'])) {
             $arr['question_pics'] = $arr['question_pics'];
         }
         if (is_array($arr['question_pics']) && count($arr['question_pics']) > 2) {
             $arr['question_pics'] = array_slice($arr['question_pics'], 0, 2);
         }
         $arr['addtime'] = \Apps\Common\Libs\DateTime::Format($arr['addtime']);
         $arr['user_cover'] = PicUrl::UserCover($arr['user_cover'], $this->getDi());
         $arr['question_content'] = unserialize(base64_decode($arr['question_content']));
         $data[] = $arr;
     }
     $this->setResult($data);
 }
Example #11
0
 public function run()
 {
     $question_id = intval($this->getDataItem('question_id', 0));
     if ($question_id < 1) {
         return $this->errorLog(ResultStatus::URL_PARAM_CANNOT_EMPTY, '参数错误!');
     }
     $QuestionTag = new QuestionTag();
     if ($tagList = $QuestionTag->query()->where('question_id = ' . $question_id)->execute()->toArray()) {
         $tag_id = '';
         foreach ($tagList as $val) {
             $tag_id .= $val['tag_id'] . ',';
         }
         $tag_id = '(' . trim($tag_id, ',') . ')';
         $question_id_list = $QuestionTag->query()->groupBy('question_id')->where("tag_id in{$tag_id} and question_id != {$question_id}")->orderBy('id DESC')->limit(50)->execute()->toArray();
         if ($question_id_list) {
             /*$where_question_id = '';
               foreach ($question_id_list as $val) {
                   $where_question_id .= $val['question_id'] . ',';
               }
               $where_question_id = '(' . trim($where_question_id, ',') . ')';*/
             // 随机取相关问答的id
             $count = count($question_id_list);
             if ($count >= 3) {
                 $start = mt_rand(0, $count - 3);
                 $where_question_id = '(' . $question_id_list[$start]['question_id'] . ',' . $question_id_list[$start + 1]['question_id'] . ',' . $question_id_list[$start + 2]['question_id'] . ')';
             } else {
                 $where_question_id = '';
                 foreach ($question_id_list as $val) {
                     $where_question_id .= $val['question_id'] . ',';
                 }
                 $where_question_id = '(' . trim($where_question_id, ',') . ')';
             }
             $list = Question::query()->columns(['question_id', 'question_content', 'question_pics', 'question_tag', 'answer_num', 'question_browsers', 'question_addtime', 'u.user_id', 'u.user_nickname', 'u.user_expert', 'u.user_cover', 'u.user_gender'])->leftJoin('\\Apps\\Common\\Models\\UserBase', 'u.user_id = \\Apps\\Common\\Models\\Question.user_id', 'u')->where("question_id in{$where_question_id} and question_state = 1")->execute()->toArray();
             foreach ($list as $k => $val) {
                 $list[$k]['question_tag'] = $val['question_tag'] ? json_decode($val['question_tag'], true) : [];
                 $list[$k]['user_cover'] = PicUrl::UserCover($val['user_cover'], $this->getDi());
                 $list[$k]['question_content'] = unserialize(base64_decode($val['question_content'])) ?: $val['question_content'];
                 if ($val['question_pics']) {
                     $question_pics = [];
                     foreach (json_decode($val['question_pics'], true) as $key => $value) {
                         $question_pics[] = PicUrl::Question($value, $this->getDi());
                     }
                     $list[$k]['question_pics'] = $question_pics;
                 }
             }
             $this->setResult($list);
         }
     }
 }
Example #12
0
 public function run()
 {
     /*if(false == $this->verifyUserAuth()){
           return false;
       }*/
     $type = $this->getDataItem('type', '');
     $page = intval($this->getDataItem('page', 1));
     $userId = intval($this->getDataItem('user_id', 0));
     $limit = $this->getConfig()->limit;
     $offset = ($page - 1) * $limit;
     $typeArray = ['my', 'answer', 'follow'];
     if (!in_array($type, $typeArray) || $userId < 1) {
         return $this->errorLog(ResultStatus::POST_BODY_PARAM_ERROR, '查询的类型不存在.');
     }
     $columns = ['u.user_id', 'u.user_nickname', 'u.user_gender', 'u.user_cover', 'Apps\\Common\\Models\\Question.question_id question_id', 'Apps\\Common\\Models\\Question.question_content question_content', 'Apps\\Common\\Models\\Question.question_pics question_pics', 'Apps\\Common\\Models\\Question.answer_num answer_num', 'Apps\\Common\\Models\\Question.question_browsers', 'Apps\\Common\\Models\\Question.question_addtime', 'question_tag'];
     $data = [];
     switch ($type) {
         case 'my':
             $data = $this->getMy($userId, $columns, $limit, $offset);
             break;
         case 'answer':
             $data = $this->getAnswer($userId, $limit, $offset);
             break;
         case 'follow':
             $data = $this->getFollow($userId, $columns, $limit, $offset);
             break;
     }
     $result = [];
     if ($data) {
         foreach ($data as $arr) {
             $tmp = PicUrl::Question(json_decode($arr['question_pics']), $this->getDi());
             if (is_string($tmp)) {
                 $arr['question_pics'] = $tmp;
             }
             if (is_array($tmp)) {
                 //                    $arr['question_pics'] = array_slice($tmp, 0,2);
                 $arr['question_pics'] = $tmp;
             }
             //$arr['addtime'] = \Apps\Common\Libs\DateTime::Format($arr['addtime']);
             $arr['user_cover'] = PicUrl::UserCover($arr['user_cover'], $this->getDi());
             if (unserialize(base64_decode($arr['question_content']))) {
                 $arr['question_content'] = unserialize(base64_decode($arr['question_content']));
             }
             $arr['question_tag'] = json_decode($arr['question_tag'], true) ?: [];
             $result[] = $arr;
         }
     }
     $this->setResult($result);
 }
 /**
  * 问答详情
  * @date: 2016-1-16 
  * @author: futao
  */
 public function infoAction()
 {
     $this->setLeftNav("info");
     $req = $this->request;
     $questionId = intval($req->getQuery('id', null, 0));
     if ($questionId < 0) {
         echo "参数错误!";
         return;
     }
     $questionColumns = ['ub.user_id', 'ub.user_nickname', 'ub.user_cover', 'Apps\\Common\\Models\\Question.user_id', 'Apps\\Common\\Models\\Question.question_content', 'Apps\\Common\\Models\\Question.question_pics', 'Apps\\Common\\Models\\Question.question_addtime', 'Apps\\Common\\Models\\Question.question_browsers', 'Apps\\Common\\Models\\Question.question_id'];
     $info = Question::query()->columns($questionColumns)->leftJoin('Apps\\Common\\Models\\UserBase', 'ub.user_id = Apps\\Common\\Models\\Question.user_id', 'ub')->where("Apps\\Common\\Models\\Question.question_id = {$questionId} and Apps\\Common\\Models\\Question.question_state = 1")->execute()->getFirst();
     if (!$info) {
         echo "问题不存在!";
         exit;
     }
     $info->user_cover = PicUrl::UserCover($info->user_cover, $this->di);
     if (unserialize(base64_decode($info->question_content))) {
         $info->question_content = unserialize(base64_decode($info->question_content));
     }
     if (json_decode($info->question_pics)) {
         $info->question_pics = json_decode($info->question_pics);
     }
     $answerColumns = ['ub.user_nickname', 'ub.user_cover', 'Apps\\Common\\Models\\QuestionAnswer.answer_content', 'Apps\\Common\\Models\\QuestionAnswer.answer_addtime', 'Apps\\Common\\Models\\QuestionAnswer.answer_id', 'Apps\\Common\\Models\\QuestionAnswer.original_content', 'Apps\\Common\\Models\\QuestionAnswer.answer_pics', 'Apps\\Common\\Models\\QuestionAnswer.type', 'Apps\\Common\\Models\\QuestionAnswer.user_id'];
     $answerList = QuestionAnswer::query()->columns($answerColumns)->leftJoin('Apps\\Common\\Models\\UserBase', 'ub.user_id = Apps\\Common\\Models\\QuestionAnswer.user_id', 'ub')->where("Apps\\Common\\Models\\QuestionAnswer.question_id = {$questionId} and Apps\\Common\\Models\\QuestionAnswer.answer_state = 1")->orderBy("Apps\\Common\\Models\\QuestionAnswer.answer_floor asc")->execute()->toArray();
     foreach ($answerList as $k => $val) {
         if (unserialize(base64_decode($answerList[$k]['answer_content']))) {
             $answerList[$k]['answer_content'] = unserialize(base64_decode($answerList[$k]['answer_content']));
         }
         if (unserialize(base64_decode($answerList[$k]['original_content']))) {
             $answerList[$k]['original_content'] = unserialize(base64_decode($answerList[$k]['original_content']));
         }
         if (json_decode($answerList[$k]['answer_pics'])) {
             $answerList[$k]['answer_pics'] = json_decode($answerList[$k]['answer_pics']);
         }
         if ($answerList[$k]['type'] == 1) {
             $answerList[$k]['reply'] = QuestionAnswerComments::query()->columns(['ub.user_nickname', 'ub.user_cover', 'ub.user_id', 'content', 'add_time', 'id'])->leftJoin('Apps\\Common\\Models\\UserBase', 'ub.user_id = Apps\\Common\\Models\\QuestionAnswerComments.user_id', 'ub')->where("question_id = {$questionId} and answer_id = " . $answerList[$k]['answer_id'] . " and to_user_id = " . $answerList[$k]['user_id'])->orderBy("id desc")->execute()->toArray();
         }
         $answerList[$k]['user_cover'] = PicUrl::UserCover($answerList[$k]['user_cover'], $this->di);
     }
     $userList = UserBase::find("is_manage = 1");
     $seeList = QuestionViewsUser::query()->columns(['distinct ub.user_id', 'ub.user_cover'])->leftJoin('Apps\\Common\\Models\\UserBase', 'ub.user_id = Apps\\Common\\Models\\QuestionViewsUser.user_id', 'ub')->where("question_id = {$questionId}")->orderBy("id desc")->limit(7)->execute();
     $this->view->setVar('seelist', $seeList);
     $this->view->setVar('comment_count', QuestionAnswer::count('answer_state = 1 and question_id = ' . $questionId));
     $this->view->setVar('question_id', $questionId);
     $this->view->setVar('userlist', $userList);
     $this->view->setVar('questioninfo', $info);
     $this->view->setVar('answerlist', $answerList);
     $this->view->pick('question/info');
 }
Example #14
0
 public function run()
 {
     $account = $this->getDataItem('account');
     // 验证电话号码格式
     $password = $this->getDataItem('password');
     $pushId = $this->getDataItem('push_id', '');
     // push id
     $osType = $this->getDataItem('os_type');
     //        $account = '18723568682';
     //        $password = '******';
     // 验证数据完整
     if (empty($account) || empty($password)) {
         $this->message = '账户名和密码都不能为空!';
     } else {
         if ($this->verifyAccount($account, $password)) {
             // 获取 user token
             if ($this->saveuserauth($this->apiAccessToken->id, $this->userInfo['user_id'])) {
                 $this->success = 1;
                 $this->message = '登录成功!';
                 $this->userToken = $this->getUserAuth()->userToken;
                 $this->saveUserPushId($this->userInfo['user_id'], $pushId, $osType);
                 $this->userInfo['user_mobile'] = $this->userInfo['bind_phone'] ?: $this->userInfo['user_account'];
                 $this->userInfo['user_cover'] = $this->userInfo['user_cover'] ? PicUrl::UserCover($this->userInfo['user_cover'], $this->getDi()) : '';
                 $this->userInfo['persional_sign'] = $this->userInfo['persional_sign'] ? unserialize(base64_decode($this->userInfo['persional_sign'])) : '';
                 // 获取城市信息
                 $SysAreaZipDistrictPhonecode = new SysAreaZipDistrictPhonecode();
                 $city = $SysAreaZipDistrictPhonecode->getOne($this->userInfo['user_district']);
                 $this->userInfo['user_district'] = $city['FULL_NAME'] ?: '';
                 // 加入关注数和粉丝数
                 $UserFollow = new UserFollow();
                 $this->userInfo['follow_count'] = $UserFollow->getFollowCount($this->userInfo['user_id'], 1);
                 $this->userInfo['fans_count'] = $UserFollow->getToFollowCount($this->userInfo['user_id'], 1);
                 // 删除不要的字段
                 unset($this->userInfo['user_account'], $this->userInfo['user_password'], $this->userInfo['user_state'], $this->userInfo['user_addtime'], $this->userInfo['is_manage'], $this->userInfo['bind_phone']);
             } else {
                 $this->message = '获取User Token异常!';
             }
         }
     }
     if (!$this->userInfo) {
         // 登录失败依然保留字段
         $this->userInfo = ["user_id" => "", "user_nickname" => "", "user_mobile" => "", "user_cover" => "", "user_gender" => "0", "user_birthday" => "", "user_realname" => "", "user_expert" => "", "user_district" => "", "user_money" => "", "user_money_virtual" => "", "persional_sign" => "", "follow_count" => 0, "fans_count" => 0];
     }
     $info = ['success' => $this->success, 'user_token' => $this->userToken, 'message' => $this->message];
     $info = array_merge($info, $this->userInfo);
     $this->setResult($info);
 }
Example #15
0
 public function run()
 {
     // 验证用户权限
     if (!$this->verifyUserAuth()) {
         return false;
     }
     $field = ['user_cover', 'user_nickname', 'user_gender', 'user_birthday', 'user_realname', 'user_district', 'user_money', 'user_money_virtual', 'bind_phone user_mobile', 'persional_sign', 'user_id', 'user_expert'];
     $info = UserBase::query()->columns($field)->where('user_id=' . $this->getUserAuth()->userId)->execute()->getFirst()->toArray();
     // 获取城市信息
     $SysAreaZipDistrictPhonecode = new SysAreaZipDistrictPhonecode();
     $city = $SysAreaZipDistrictPhonecode->getOne($info['user_district']);
     $info['user_district'] = $city['FULL_NAME'] ?: '';
     $info['user_cover'] = $info['user_cover'] ? PicUrl::UserCover($info['user_cover'], $this->getDi()) : '';
     $info['persional_sign'] = $info['persional_sign'] ? unserialize(base64_decode($info['persional_sign'])) : '';
     // 加入关注数和粉丝数
     $UserFollow = new UserFollow();
     $info['follow_count'] = $UserFollow->getFollowCount($info['user_id'], 1);
     $info['fans_count'] = $UserFollow->getToFollowCount($info['user_id'], 1);
     $this->setResult($info);
 }
Example #16
0
 public function run()
 {
     $bp_id = intval($this->getDataItem('id', 0));
     $page = intval($this->getDataItem('page', 1));
     $limit = $this->getConfig()->limit;
     $offset = ($page - 1) * $limit;
     if (0 < $bp_id) {
         $this->comments = BeautyParlorComment::query()->columns(['u.user_id', 'u.user_nickname', 'u.user_cover', 'u.user_expert', 'Apps\\Common\\Models\\BeautyParlorComment.comment_id as comment_id', 'Apps\\Common\\Models\\BeautyParlorComment.comment_info as comment_info', 'Apps\\Common\\Models\\BeautyParlorComment.comment_photos as comment_photos', 'Apps\\Common\\Models\\BeautyParlorComment.comment_floor as comment_floor', 'Apps\\Common\\Models\\BeautyParlorComment.comment_addtime as addtime'])->leftJoin('Apps\\Common\\Models\\UserBase', 'Apps\\Common\\Models\\BeautyParlorComment.user_id=u.user_id', 'u')->where('Apps\\Common\\Models\\BeautyParlorComment.beauty_parlor_id=' . $bp_id . ' and Apps\\Common\\Models\\BeautyParlorComment.comment_state = 1')->orderBy('Apps\\Common\\Models\\BeautyParlorComment.comment_id desc')->limit($limit, $offset)->execute()->toArray();
     }
     $this->comments = $this->comments ? $this->comments : [];
     $data = [];
     foreach ($this->comments as $arr) {
         $arr['user_cover'] = PicUrl::UserCover($arr['user_cover'], $this->getDi());
         $arr['comment_photos'] = PicUrl::BeautyParlorComment(json_decode($arr['comment_photos']), $this->getDi());
         if (unserialize(base64_decode($arr['comment_info']))) {
             $arr['comment_info'] = unserialize(base64_decode($arr['comment_info']));
         }
         $data[] = $arr;
     }
     $this->setResult($data);
 }
 public function run()
 {
     $user_id = intval($this->getDataItem('user_id', 0));
     $expert_id = intval($this->getDataItem('expert_id', 0));
     $page = intval($this->getDataItem('page', 1));
     if ($expert_id < 1) {
         return $this->errorLog(ResultStatus::URL_PARAM_CANNOT_EMPTY, '缺少必传参数!');
     }
     $limit = $this->getConfig()->limit;
     $offset = ($page - 1) * $limit;
     $list = QuestionAnswer::query()->columns(['question_id'])->where('answer_state = 1 and user_id = ' . $expert_id)->groupBy('question_id')->orderBy('answer_id DESC')->limit($limit, $offset)->execute()->toArray();
     if ($list) {
         $where = '';
         foreach ($list as $val) {
             $where .= $val['question_id'] . ',';
         }
         $where = trim($where, ',');
         $result = Question::query()->columns(['question_id', 'question_tag', 'question_pics', 'question_content', 'question_addtime', 'u.user_id', 'u.user_nickname', 'u.user_cover', 'u.user_gender'])->leftJoin('\\Apps\\Common\\Models\\UserBase', 'u.user_id = \\Apps\\Common\\Models\\Question.user_id', 'u')->where("question_state = 1 and question_id in({$where})")->execute()->toArray();
         $QuestionFollow = new QuestionFollow();
         foreach ($result as $k => $val) {
             $result[$k]['question_content'] = unserialize(base64_decode($val['question_content'])) ?: $val['question_content'];
             $result[$k]['user_cover'] = PicUrl::UserCover($val['user_cover'], $this->getDi());
             if ($val['question_pics']) {
                 $result[$k]['question_pics'] = PicUrl::Question(json_decode($val['question_pics']), $this->getDi());
             }
             if (!is_numeric($val['question_tag'])) {
                 $result[$k]['question_tag'] = $val['question_tag'] ? json_decode($val['question_tag'], true) : [];
             } else {
                 $result[$k]['question_tag'] = [];
             }
             if ($user_id > 0) {
                 $result[$k]['is_collection'] = $QuestionFollow->is_follow($val['question_id'], $user_id);
             } else {
                 $result[$k]['is_collection'] = '0';
             }
         }
         $this->setResult($result);
     }
 }
Example #18
0
 public function run()
 {
     $id = intval($this->getDataItem('id', 0));
     $user_id = intval($this->getDataItem('user_id', 0));
     if ($id == 0) {
         return $this->errorLog(ResultStatus::URL_PARAM_CANNOT_EMPTY, 'URL参数不全');
     }
     $Question = new Question();
     $model = $Question->query()->columns(['question_id', 'question_content', 'question_pics', 'question_tag', 'answer_num', 'question_browsers', 'question_addtime', 'u.user_id', 'u.user_nickname', 'u.user_expert', 'u.user_cover', 'u.user_gender'])->leftJoin('\\Apps\\Common\\Models\\UserBase', 'u.user_id = \\Apps\\Common\\Models\\Question.user_id', 'u')->where('question_state = 1 and question_id = ' . $id)->execute()->getFirst();
     if ($model) {
         $info = $model->toArray();
         $info['question_content'] = unserialize(base64_decode($info['question_content'])) ?: $info['question_content'];
         if ($info['question_pics']) {
             $question_pics = [];
             foreach (json_decode($info['question_pics'], true) as $val) {
                 $question_pics[] = PicUrl::Question($val, $this->getDi());
             }
             $info['question_pics'] = $question_pics;
         }
         $info['user_cover'] = PicUrl::UserCover($info['user_cover'], $this->getDi());
         $info['question_tag'] = $info['question_tag'] ? json_decode($info['question_tag'], true) : [];
         $QuestionFollow = new QuestionFollow();
         // 是否收藏过
         if ($user_id) {
             $info['is_collection'] = $QuestionFollow->is_follow($info['question_id'], $user_id);
         } else {
             $info['is_collection'] = '0';
         }
         $QuestionViewsUser = new QuestionViewsUser();
         $info['user_views_list'] = $QuestionViewsUser->getViewsUserList($id, 0, 7);
         $this->setResult($info);
         $count = 1;
         $Question->getReadConnection()->query("UPDATE question SET question_browsers = question_browsers + {$count} WHERE question_id = {$id}");
         if ($user_id) {
             $QuestionViewsUser->addData($id, $user_id);
         }
     }
 }
Example #19
0
 public function run()
 {
     /**
      * 验证用户权限
      */
     if (false == $this->verifyUserAuth()) {
         return false;
     }
     $area = ['user_cover', 'user_nickname', 'user_gender', 'user_birthday', 'user_realname', 'user_district', 'persional_sign'];
     $field = $this->getDataItem('field');
     //字段
     $value = trim($this->getDataItem('value', ''));
     //值
     if (!in_array($field, $area)) {
         return $this->errorLog(ResultStatus::POST_BODY_PARAM_ERROR, '字段名不存在.');
     }
     if ($user = UserBase::findFirst('user_id=' . $this->getUserAuth()->userId)) {
         if ($field == 'user_cover') {
             $up = new UploadPic();
             $user->user_cover = $up->userCover();
             if (!$user->user_cover) {
                 return $this->errorLog(ResultStatus::POST_BODY_PARAM_ERROR, '文件流不能为空.');
             }
             $value = PicUrl::UserCover($user->user_cover, $this->getDi());
         } elseif ($field == 'user_district') {
             if (!is_numeric($value)) {
                 return $this->errorLog(ResultStatus::POST_BODY_PARAM_ERROR, '城市格式错误.');
             }
             if (!\Apps\Common\Models\SysAreaZipDistrictPhonecode::count('K_ID = ' . $value)) {
                 return $this->errorLog(ResultStatus::POST_BODY_PARAM_ERROR, '城市不存在.');
             }
             $user->user_district = $value;
             // 获取城市信息
             $city = (new SysAreaZipDistrictPhonecode())->getOne($value);
             $value = $city['FULL_NAME'] ?: '';
         } elseif ($field == 'persional_sign') {
             if ($value && $this->utf8_strlen($value) > 30) {
                 return $this->errorLog(ResultStatus::POST_BODY_PARAM_ERROR, '个性签名字数超过了30个字符');
             } else {
                 $user->persional_sign = $value ? base64_encode(serialize($value)) : '';
             }
         } elseif ($field == 'user_nickname') {
             $nicknameLength = $this->utf8_strlen($value);
             if ($nicknameLength < 1 || $nicknameLength > 10) {
                 return $this->errorLog(ResultStatus::POST_BODY_PARAM_ERROR, '昵称长度需在1~10字节之间');
             }
             $user->user_nickname = $value;
         } elseif ($field == 'user_realname') {
             if (empty($value)) {
                 return $this->errorLog(ResultStatus::POST_BODY_PARAM_ERROR, '姓名不能为空');
             }
             if ($this->utf8_strlen($value) > 10) {
                 return $this->errorLog(ResultStatus::POST_BODY_PARAM_ERROR, '姓名不能超过10个字符');
             }
             $user->user_realname = $value;
         } elseif ($field == 'user_gender') {
             if (!in_array($value, ['0', '1', '2'])) {
                 return $this->errorLog(ResultStatus::POST_BODY_PARAM_ERROR, '请输入正确的性别');
             }
             $user->user_gender = $value;
         } elseif ($field == 'user_birthday') {
             if (!$this->validateDate($value)) {
                 return $this->errorLog(ResultStatus::POST_BODY_PARAM_ERROR, '日期格式错误');
             }
             $user->user_birthday = $value;
         }
         if ($user->save()) {
             $this->setResult(['success' => 1, 'message' => $field . ' 更新成功', 'value' => $value]);
             return true;
         }
     }
     $this->setResult(['success' => 0, 'message' => '更新失败', 'value' => '']);
 }
Example #20
0
 public function searchQuestion($keyword, $limit = 5, $offset = 0)
 {
     $searchObj = $this->getSearchObj();
     $searchResult = $searchObj->search($keyword, 'type=' . SearchDataType::Question, $limit, $offset);
     $questions = $this->getSearchResult($searchResult);
     $questions = $questions ? $questions : [];
     $data = [];
     foreach ($questions as $arr) {
         $arr['question_pics'] = PicUrl::Question(json_decode($arr['question_pics']), $this->getDi());
         $arr['user_cover'] = PicUrl::UserCover($arr['user_cover'], $this->getDi());
         if (unserialize(base64_decode($arr['question_content']))) {
             $arr['question_content'] = unserialize(base64_decode($arr['question_content']));
         }
         $data[] = $arr;
     }
     return $data;
 }
Example #21
0
 /**
  * 根据开通城市id获取问答列表
  * @date: 2016年1月22日 
  * @author: 545
  */
 private function getQuestion($city_id, $limit, $userid = null, $order = null)
 {
     $questionlists = array();
     $columns = ['q.question_id', 'q.question_content', 'q.question_pics', 'q.question_tag', 'q.answer_num', 'q.question_browsers', 'q.is_expert_reply', 'q.question_addtime', 'u.user_id', 'u.user_nickname', 'u.user_cover', 'u.user_gender'];
     //获取问答列表
     $questionlist = CosPointquestion::query()->columns($columns)->join('\\Apps\\Common\\Models\\Question', 'q.question_id = \\Apps\\Common\\Models\\CosPointquestion.q_id', 'q')->join('\\Apps\\Common\\Models\\UserBase', 'u.user_id = q.user_id', 'u')->where('addr = :city_id:')->bind(['city_id' => $city_id])->limit($limit, 0)->orderBy($order)->execute()->toArray();
     $QuestionFollow = new QuestionFollow();
     foreach ($questionlist as $k => $val) {
         // 是否收藏过
         if ($userid) {
             $questionlists[$k]['is_collection'] = $QuestionFollow->is_follow($val['question_id'], $userid);
         } else {
             $questionlists[$k]['is_collection'] = '0';
         }
         $questionlists[$k]['question_id'] = $val['question_id'];
         $questionlists[$k]['question_content'] = unserialize(base64_decode($val['question_content'])) ?: $val['question_content'];
         $questionlists[$k]['question_pics'] = [];
         if ($val['question_pics']) {
             $question_pics = [];
             foreach (json_decode($val['question_pics'], true) as $key => $value) {
                 $question_pics[] = PicUrl::Question($value, $this->getDi());
             }
             $questionlists[$k]['question_pics'] = $question_pics;
         }
         $questionlists[$k]['question_tag'] = $val['question_tag'] ? json_decode($val['question_tag'], true) : [];
         $questionlists[$k]['answer_num'] = $val['answer_num'];
         $questionlists[$k]['question_browsers'] = $val['question_browsers'];
         $questionlists[$k]['is_expert_reply'] = $val['is_expert_reply'];
         $questionlists[$k]['question_addtime'] = $val['question_addtime'];
         $questionlists[$k]['user_id'] = $val['user_id'];
         $questionlists[$k]['user_nickname'] = $val['user_nickname'];
         $questionlists[$k]['user_cover'] = PicUrl::UserCover($val['user_cover'], $this->getDi());
         $questionlists[$k]['user_gender'] = $val['user_gender'];
     }
     return $questionlists;
 }
Example #22
0
 public function run()
 {
     $type = $this->getDataItem('type');
     $openId = $this->getDataItem('openid');
     $nickname = $this->getDataItem('nickname');
     $cover = $this->getDataItem('cover');
     $otherData = $this->getDataItem('other_data');
     $pushId = $this->getDataItem('push_id');
     // push id
     $osType = $this->getDataItem('os_type');
     // 验证数据完整性
     if (empty($type) || empty($openId) || empty($nickname)) {
         return $this->errorLog(ResultStatus::POST_BODY_PARAM_ERROR, "业务参数不全.");
     }
     if (!in_array($type, ['weixin', 'weibo'])) {
         return $this->errorLog(ResultStatus::POST_BODY_PARAM_ERROR, "类型不支持.");
     }
     $attrType = 101;
     if ($type == 'weibo') {
         $attrType = 102;
     }
     // 判断用户是否已经注册了
     $userId = $this->isRegister($attrType, $openId);
     if ($userId === false) {
         // 注册新账号
         $userId = $this->register($type, $attrType, $openId, $nickname, $cover, $otherData);
         if ($userId === false) {
             return;
         }
     }
     $info = [];
     // 获取 user token
     if ($this->saveUserAuth($this->apiAccessToken->id, $userId)) {
         $this->success = 1;
         $this->userid = $userId;
         $this->message = '登录成功!';
         $this->userToken = $this->getUserAuth()->userToken;
         $this->saveUserPushId($userId, $pushId, $osType);
         if ($model = UserBase::query()->where("user_id = {$userId}")->execute()->getFirst()) {
             $info = $model->toArray();
             $info['user_mobile'] = $info['bind_phone'] ?: $info['user_account'];
             if ($info['user_cover'] == 'default.png' && $attrType == 101) {
                 $info['user_cover'] = json_decode($otherData)->headimgurl;
             } else {
                 $info['user_cover'] = $info['user_cover'] ? PicUrl::UserCover($info['user_cover'], $this->getDi()) : '';
             }
             $info['persional_sign'] = $info['persional_sign'] ? unserialize(base64_decode($info['persional_sign'])) : '';
             // 获取城市信息
             $SysAreaZipDistrictPhonecode = new SysAreaZipDistrictPhonecode();
             $city = $SysAreaZipDistrictPhonecode->getOne($info['user_district']);
             $info['user_district'] = $city['FULL_NAME'] ?: '';
             // 加入关注数和粉丝数
             $UserFollow = new UserFollow();
             $info['follow_count'] = $UserFollow->getFollowCount($info['user_id'], 1);
             $info['fans_count'] = $UserFollow->getToFollowCount($info['user_id'], 1);
             // 删除不要的字段
             unset($info['user_account'], $info['user_password'], $info['user_state'], $info['user_addtime'], $info['is_manage']);
         }
     } else {
         $this->message = '获取User Token异常!';
     }
     if (!$info) {
         $info = ["user_id" => "", "user_nickname" => "", "user_cover" => "", "user_gender" => "0", "user_birthday" => "", "user_realname" => "", "user_expert" => "", "user_district" => "", "user_money" => "", "user_money_virtual" => "", "persional_sign" => "", "follow_count" => 0, "fans_count" => 0];
     }
     $info = array_merge($info, ['success' => $this->success, 'user_token' => $this->userToken, 'message' => $this->message, 'user_id' => $this->userid]);
     $this->setResult($info);
 }
Example #23
0
 /**
  * 获取浏览记录的用户列表
  * @param int $activity_id 活动id
  * @param int $offset 分页偏移量
  * @param int $limit 页大小
  * @return array
  */
 public function getViewsUserList($activity_id, $offset = 0, $limit = 10)
 {
     $list = $this->query()->columns(['u.user_id', 'u.user_cover'])->where('activity_id = ' . $activity_id)->leftJoin('\\Apps\\Common\\Models\\UserBase', 'u.user_id = \\Apps\\Common\\Models\\ActivityViewsUser.user_id', 'u')->groupBy('\\Apps\\Common\\Models\\ActivityViewsUser.user_id')->orderBy('add_time DESC')->limit($limit, $offset)->execute()->toArray();
     $result = [];
     foreach ($list as $k => $val) {
         if ($val['user_id']) {
             $val['user_cover'] = PicUrl::UserCover($val['user_cover'], $this->getDi());
             $result[] = $val;
         }
     }
     return $result;
 }
Example #24
0
 public function run()
 {
     $account = $this->getDataItem('account', 1);
     //帐号
     $password = $this->getDataItem('password', 1);
     //密码
     $nickname = Keyword::Filter($this->getDataItem('nickname', 1));
     //昵称
     $smsCode = $this->getDataItem('sms_code', '');
     //短信验证
     if ($this->userInfoByAccount($account)) {
         $this->setResult(['success' => 101, 'user_token' => $this->userToken, 'message' => '账户名已存在']);
         return;
     }
     if (empty($password) || empty($nickname)) {
         $this->setResult(['success' => 103, 'user_token' => $this->userToken, 'message' => '密码和昵称不能为空']);
         return;
     }
     if (empty($smsCode)) {
         $this->setResult(['success' => 102, 'user_token' => $this->userToken, 'message' => '短信验证码必填']);
         return;
     }
     if (!MobileSMS::Check('register', $smsCode, $account, $this->apiAccessToken->id)) {
         $this->setResult(['success' => 102, 'user_token' => $this->userToken, 'message' => '短信验证码错误']);
         return;
     }
     $this->userInfo = new UserBase();
     $this->userInfo->user_account = $account;
     $this->userInfo->user_password = $this->hashPassword($password);
     $this->userInfo->user_nickname = $nickname;
     $this->userInfo->user_cover = $this->getConfig()->defaultCover;
     //'default.jpg';
     $this->userInfo->bind_phone = $account;
     if ($this->userInfo->save()) {
         $this->success = 1;
         $this->message = '注册成功';
         $this->saveUserAuth($this->apiAccessToken->id, $this->userInfo->user_id);
         $this->userToken = $this->getUserAuth()->userToken;
     } else {
         $this->message = '注册失败';
         $this->databaseErrorLog($this->userInfo);
     }
     if ($this->success == 1) {
         if ($model = UserBase::findFirst('user_id = ' . $this->userInfo->user_id)) {
             $info = $model->toArray();
         } else {
             $info = [];
         }
         $info['user_mobile'] = $info['bind_phone'];
         $info['user_cover'] = $info['user_cover'] ? PicUrl::UserCover($info['user_cover'], $this->getDi()) : '';
         // 获取城市信息
         $SysAreaZipDistrictPhonecode = new SysAreaZipDistrictPhonecode();
         $city = $SysAreaZipDistrictPhonecode->getOne($info['user_district']);
         $info['user_district'] = $city['FULL_NAME'] ?: '';
         // 删除不要的字段
         unset($info['user_account'], $info['user_password'], $info['user_state'], $info['user_addtime'], $info['is_manage']);
         $this->setResult(array_merge($info, ['success' => $this->success, 'user_token' => $this->userToken, 'message' => $this->message]));
     } else {
         $this->setResult(['success' => $this->success, 'user_token' => $this->userToken, 'message' => $this->message, 'user_id' => $this->userInfo->user_id]);
     }
 }
Example #25
0
 /**
  * 编辑用户信息
  * @date: 2016-1-5 
  * @author: futao
  */
 public function editAction()
 {
     $this->setLeftNav("update");
     $req = $this->request;
     $id = $req->getQuery("id", null, 0);
     $action = $req->getQuery("action", null, '');
     $info = UserBase::query()->columns(['user_account', 'user_password', 'user_district', 'user_nickname', 'user_realname', 'bind_phone', 'persional_sign', 'user_birthday', 'user_cover', 'user_gender', 'user_expert'])->where("user_id = :id:")->bind(['id' => $id])->execute()->getFirst();
     if (!$info) {
         $this->view->disable();
         echo '用户不存在!';
         return;
     }
     if ($info->user_expert == 1) {
         $userAttr = UserAttribute::findFirst('user_id =' . $id . ' and attr_type = 103 and attr_state = 1');
         $this->view->setVar('user_attr', json_decode($userAttr->attr_value_json));
     }
     //个性签名解码
     if (unserialize(base64_decode($info->persional_sign))) {
         $info->persional_sign = unserialize(base64_decode($info->persional_sign));
     }
     $info->user_cover = PicUrl::UserCover($info->user_cover, $this->di);
     $userArea = SysAreaZipDistrictPhonecode::findFirst("K_ID = " . $info->user_district);
     $this->view->setVar('userArea', $userArea);
     $this->view->setVar('userInfo', $info);
     $this->view->setVar('userId', $id);
     $this->view->setVar('action', $action);
 }
Example #26
0
 public function run()
 {
     $id = intval($this->getDataItem('id', 0));
     $user_id = intval($this->getDataItem('user_id', 0));
     if (0 < $id) {
         /**
          * 查询基础信息
          */
         $info = BeautyParlorModel::query()->columns(['bp_id as id', 'bp_name as name', 'bp_cover as cover', 'bp_address as address', 'bp_tel as tel', 'bp_medal as medal', 'bp_intro as intro', 'X(bp_coordinate) latitude', 'Y(bp_coordinate) longitude', 'bpa.open_time', 'bpa.close_time', 'bpa.low_price', 'bpa.open_year', 'bpa.shop_area', 'bpa.service_num', 'bpa.facilities'])->leftJoin('Apps\\Common\\Models\\BeautyParlorAttr', 'Apps\\Common\\Models\\BeautyParlor.bp_id = bpa.beauty_parlor_id', 'bpa')->where('Apps\\Common\\Models\\BeautyParlor.bp_state>0 and Apps\\Common\\Models\\BeautyParlor.bp_id=:id:')->bind(['id' => $id])->execute()->getFirst();
     } else {
         return $this->errorLog(ResultStatus::URL_PARAM_CANNOT_EMPTY, '参数异常');
     }
     if ($info) {
         $this->parlor['id'] = $info->id;
         $this->parlor['name'] = $info->name;
         $this->parlor['cover'] = PicUrl::BeautyParlorCover($info->cover, $this->getDi());
         $this->parlor['address'] = $info->address;
         $this->parlor['tel'] = $info->tel;
         $this->parlor['intro'] = $info->intro;
         $this->parlor['latitude'] = $info->latitude;
         $this->parlor['longitude'] = $info->longitude;
         $this->parlor['medal_refund'] = \Apps\Common\Libs\BeautyParlor::getMedalRefund($info->medal);
         $this->parlor['medal_verify'] = \Apps\Common\Libs\BeautyParlor::getMedalVerify($info->medal);
         $this->parlor['open_time'] = $info->open_time == null ? '' : $info->open_time;
         $this->parlor['close_time'] = $info->close_time == null ? '' : $info->close_time;
         $this->parlor['low_price'] = $info->low_price == null ? '' : $info->low_price;
         $this->parlor['open_year'] = $info->open_year == null ? '' : $info->open_year;
         $this->parlor['shop_area'] = $info->shop_area == null ? '' : $info->shop_area;
         $this->parlor['facilities'] = $info->facilities == null ? [] : (json_decode($info->facilities) ?: []);
         $this->parlor['pics'] = [];
         $this->parlor['services'] = [];
         /**
          * 增加图片列表 如果深度验店 
          */
         if ($this->parlor['medal_verify']) {
             $pics = BeautyParlorPhotos::query()->columns(['photo_url url'])->where('photo_state>0 and beauty_parlor_id=:bid:')->bind(['bid' => $id])->execute()->toArray();
             foreach ($pics as $pic) {
                 $this->parlor['pics'][] = PicUrl::BeautyParlorPic($pic['url'], $this->getDi());
             }
             /**
              * 增加服务范围列表
              */
             $service = BeautyParlorService::query()->columns(['service_id id', 'service_cover cover', 'service_name name', 'service_price price', 'service_unit unit', 'service_description description'])->where('service_state>0 and service_is_sell = 1 and beauty_parlor_id=:bid:')->bind(['bid' => $id])->limit(3, 0)->execute()->toArray();
             foreach ($service as $d) {
                 $d['cover'] = PicUrl::BeautyParlorCover($d['cover'], $this->getDi());
                 $unit = $d['unit'];
                 unset($d['unit']);
                 $d['price_show'] = '';
                 if ($d['price'] > 0) {
                     $d['price_show'] = $d['price'] . '元' . ($unit ? '/' . $unit : '');
                 }
                 $this->parlor['services'][] = $d;
             }
         }
         /**
          * 增加tag列表
          */
         $tag = BeautyParlorTag::query()->columns(['i.tag_title'])->leftJoin('Apps\\Common\\Models\\BeautyParlorTagInfo', 'Apps\\Common\\Models\\BeautyParlorTag.tag_id = i.tag_id', 'i')->where('i.tag_state=1 and bp_id=:bid:')->bind(['bid' => $id])->orderBy('sort desc,bp_tag_addtime asc')->execute()->toArray();
         $this->parlor['tags'] = $tag;
         // 评论总数
         $this->parlor['comment_num'] = BeautyParlorComment::count(['conditions' => 'beauty_parlor_id = :bid: and comment_state = 1', 'bind' => ['bid' => $id]]);
         //获取3条评论
         $comments = BeautyParlorComment::query()->columns(['u.user_id', 'u.user_nickname', 'u.user_cover', 'u.user_gender', 'u.user_expert', 'Apps\\Common\\Models\\BeautyParlorComment.comment_id as comment_id', 'Apps\\Common\\Models\\BeautyParlorComment.comment_info as comment_info', 'Apps\\Common\\Models\\BeautyParlorComment.comment_photos as comment_photos', 'Apps\\Common\\Models\\BeautyParlorComment.comment_floor as comment_floor', 'Apps\\Common\\Models\\BeautyParlorComment.comment_addtime as addtime'])->leftJoin('Apps\\Common\\Models\\UserBase', 'Apps\\Common\\Models\\BeautyParlorComment.user_id=u.user_id', 'u')->where('Apps\\Common\\Models\\BeautyParlorComment.beauty_parlor_id=' . $id . ' and Apps\\Common\\Models\\BeautyParlorComment.comment_state = 1')->orderBy('Apps\\Common\\Models\\BeautyParlorComment.comment_addtime desc')->limit(3, 0)->execute()->toArray();
         foreach ($comments as $arr) {
             $arr['user_cover'] = PicUrl::UserCover($arr['user_cover'], $this->getDi());
             $arr['comment_photos'] = PicUrl::BeautyParlorComment(json_decode($arr['comment_photos']), $this->getDi());
             if (unserialize(base64_decode($arr['comment_info']))) {
                 $arr['comment_info'] = unserialize(base64_decode($arr['comment_info']));
             }
             $data[] = $arr;
         }
         $this->parlor['comments'] = $data;
     } else {
         return $this->errorLog(ResultStatus::QUERY_DATA_NOT_EXIST, 'ID不存在');
     }
     $this->parlor['favorite_num'] = BpFavorites::count(['conditions' => "bp_id = " . $this->parlor['id']]);
     if ($user_id != '') {
         $is_favorite = BpFavorites::findFirst("user_id = {$user_id} and bp_id =" . $this->parlor['id']);
         /* var_dump($is_favorite);
            exit; */
         if ($is_favorite) {
             $this->parlor['is_favorite'] = 1;
             //已关注
         } else {
             $this->parlor['is_favorite'] = 0;
             //未关注
         }
     } else {
         $this->parlor['is_favorite'] = 0;
     }
     $this->setResult($this->parlor);
 }
Example #27
0
 public function run()
 {
     $questionId = intval($this->getDataItem('question_id', 0));
     $user_id = intval($this->getDataItem('user_id', 0));
     $page = intval($this->getDataItem('page', 1));
     //        $questionId = 194;
     if ($questionId < 1) {
         return $this->errorLog(ResultStatus::POST_BODY_PARAM_ERROR, '参数不完整或者参数错误!');
     }
     $limit = $this->getConfig()->limit;
     $offset = ($page - 1) * $limit;
     $QuestionAnswer = new QuestionAnswer();
     $expertReplyList = $QuestionAnswer->query()->columns(['u.user_id', 'u.user_cover', 'u.user_nickname', 'answer_id', 'answer_content', 'support_count', 'answer_addtime', 'answer_pics', 'a.attr_value_json'])->leftJoin('\\Apps\\Common\\Models\\UserBase', 'u.user_id = \\Apps\\Common\\Models\\QuestionAnswer.user_id', 'u')->leftJoin('\\Apps\\Common\\Models\\UserAttribute', 'a.user_id = \\Apps\\Common\\Models\\QuestionAnswer.user_id', 'a')->where("a.attr_type = 103 and a.attr_state = 1 and answer_state = 1 and type = 2 and question_id = {$questionId}")->orderBy('answer_addtime DESC')->limit($limit, $offset)->execute()->toArray();
     $QuestionAnswerComments = new QuestionAnswerComments();
     $UserBase = new UserBase();
     $QuestionAnswerFollow = new QuestionAnswerFollow();
     foreach ($expertReplyList as $k => $val) {
         if ($val['attr_value_json']) {
             $objAttrValueJoin = json_decode($val['attr_value_json']);
             $expertReplyList[$k]['experttitle'] = $objAttrValueJoin->experttitle;
             $expertReplyList[$k]['field'] = $objAttrValueJoin->field ?: [];
         } else {
             $expertReplyList[$k]['experttitle'] = [];
             $expertReplyList[$k]['field'] = [];
         }
         $expertReplyList[$k]['user_cover'] = PicUrl::UserCover($val['user_cover'], $this->getDi());
         $expertReplyList[$k]['answer_content'] = unserialize(base64_decode($val['answer_content'])) ?: $val['answer_content'];
         if ($user_id > 0) {
             $expertReplyList[$k]['is_support'] = $QuestionAnswerFollow->is_support($user_id, $val['answer_id']) ? '1' : '0';
         } else {
             $expertReplyList[$k]['is_support'] = '0';
         }
         $answer_pics = [];
         if ($answer_pics_list = json_decode($val['answer_pics'], true)) {
             foreach ($answer_pics_list as $value) {
                 $answer_pics[] = PicUrl::Question($value, $this->getDi());
             }
         }
         $expertReplyList[$k]['answer_pics'] = $answer_pics;
         unset($expertReplyList[$k]['attr_value_json']);
         if ($item = $QuestionAnswerComments->query()->where('answer_id = ' . $val['answer_id'])->limit(10, 0)->execute()->toArray()) {
             foreach ($item as $key => $v) {
                 $user_info = $UserBase->getOne($v['user_id']);
                 $to_user_info = $UserBase->getOne($v['to_user_id']);
                 $item[$key]['user_info'] = ['user_id' => $v['user_id'], 'user_nickname' => $user_info['user_nickname']];
                 $item[$key]['to_user_info'] = ['user_id' => $v['to_user_id'], 'user_nickname' => $to_user_info['user_nickname']];
                 $pics = [];
                 if ($pics_list = json_decode($v['pics'], true)) {
                     foreach ($pics_list as $values) {
                         $pics[] = PicUrl::Question($values, $this->getDi());
                     }
                 }
                 $item[$key]['pics'] = $pics;
                 unset($item[$key]['user_id'], $item[$key]['to_user_id']);
             }
             $expertReplyList[$k]['item'] = $item;
         } else {
             $expertReplyList[$k]['item'] = [];
         }
     }
     $this->setResult($expertReplyList);
 }
Example #28
0
 /**
  * 预览美容院
  * @date: 2016年1月28日 
  * @author: chenxiaolin
  */
 public function beautyParlorPreviewAction()
 {
     $id = $this->request->getQuery('id');
     if (empty($id)) {
         echo '美容院不存在!';
         $this->view->disable();
         return;
     }
     //美容院
     $parlor = BeautyParlor::query()->columns(['Apps\\Common\\Models\\BeautyParlor.bp_id', 'Apps\\Common\\Models\\BeautyParlor.bp_name as name', 'Apps\\Common\\Models\\BeautyParlor.bp_address', 'Apps\\Common\\Models\\BeautyParlor.bp_medal', 'Apps\\Common\\Models\\BeautyParlor.bp_intro', 'bpAttr.low_price', 'bpAttr.open_time', 'bpAttr.close_time', 'bpAttr.open_year', 'bpAttr.shop_area', 'bpAttr.service_num', 'bpAttr.facilities'])->leftJoin('Apps\\Common\\Models\\BeautyParlorAttr', 'Apps\\Common\\Models\\BeautyParlor.bp_id = bpAttr.beauty_parlor_id', 'bpAttr')->where("Apps\\Common\\Models\\BeautyParlor.bp_id = {$id}")->execute()->getFirst();
     if ($parlor) {
         $parlor->bp_medal = \Apps\Common\Libs\BeautyParlor::getMedalVerify($parlor->bp_medal);
         $parlor->facilities = json_decode($parlor->facilities, true);
     } else {
         echo '美容院不存在!';
         $this->view->disable();
         return;
     }
     //标签
     $tag = BeautyParlorTagInfo::query()->columns(['tag_title'])->leftJoin('Apps\\Common\\Models\\BeautyParlorTag', 'bpTag.tag_id = Apps\\Common\\Models\\BeautyParlorTagInfo.tag_id', 'bpTag')->where("bpTag.bp_id = {$id} and Apps\\Common\\Models\\BeautyParlorTagInfo.tag_state = 1")->execute()->toArray();
     //轮播图片
     $photos = BeautyParlorPhotos::query()->columns(['photo_url'])->where("beauty_parlor_id = {$id} and photo_state = 1")->execute()->toArray();
     foreach ($photos as $k => $v) {
         $photos[$k]['photo_url'] = PicUrl::BeautyParlorPic($photos[$k]['photo_url'], $this->getDI());
     }
     //服务项目
     $service = BeautyParlorService::query()->columns(['service_name', 'service_price', 'service_cover'])->where("beauty_parlor_id = {$id}")->execute()->toArray();
     foreach ($service as $k => $v) {
         $service[$k]['service_cover'] = PicUrl::BeautyParlorCover($service[$k]['service_cover'], $this->getDI());
     }
     //用户评论
     $comment = BeautyParlorComment::query()->columns(['u.user_id', 'u.user_nickname', 'u.user_cover', 'comment_addtime', 'comment_info', 'comment_photos'])->leftJoin('Apps\\Common\\Models\\UserBase', 'Apps\\Common\\Models\\BeautyParlorComment.user_id=u.user_id', 'u')->where("Apps\\Common\\Models\\BeautyParlorComment.beauty_parlor_id = {$id} and Apps\\Common\\Models\\BeautyParlorComment.comment_state = 1")->execute()->toArray();
     foreach ($comment as $k => $v) {
         $comment[$k]['user_cover'] = PicUrl::UserCover($comment[$k]['user_cover'], $this->getDI());
         $comment[$k]['comment_photos'] = PicUrl::BeautyParlorComment(json_decode($comment[$k]['comment_photos'], true), $this->getDI());
         if (unserialize(base64_decode($comment[$k]['comment_info']))) {
             $comment[$k]['comment_info'] = unserialize(base64_decode($comment[$k]['comment_info']));
         }
     }
     $this->view->setVar('parlor', $parlor);
     $this->view->setVar('photos', $photos);
     $this->view->setVar('service', $service);
     $this->view->setVar('tag', $tag);
     $this->view->setVar('comment', $comment);
     $this->tag->setTitle($parlor['name']);
     $this->assets->collection('footer')->addJs('/libs/zepto/zepto-1.1.6.min.js', false)->addJs('/libs/iscroll/iscroll.js', false)->addJs('/assets/frontend/js/share/bp-view.js', false);
 }