* Date: 2019-7-30 */ namespace app\home\controller; use think\Db; use think\Config; use app\home\logic\AskLogic; class Ask extends Base { public $users = [ 'users_id' => 0, 'admin_id' => 0, 'nickname' => '游客', ]; public $users_id = 0; public $nickname = '游客'; public $parent_id = -1; public $users_money = 0; public $AskModel; public function _initialize() { parent::_initialize(); // 问答数据层 $this->AskModel = model('Ask'); // 问答业务层 $this->AskLogic = new AskLogic; // 用户头像处理 $this->users['head_pic'] = get_head_pic(); // 问题表 $this->ask_db = Db::name('ask'); // 答案表 $this->ask_answer_db = Db::name('ask_answer'); // 问题、回答、评论、回复点赞表 $this->ask_answer_like_db = Db::name('ask_answer_like'); /*获取最新的会员信息*/ $LatestData = $this->GetUsersLatestData(); if (!empty($LatestData)) { // 会员全部信息 $this->users = $LatestData; // 会员ID $this->users_id = $LatestData['users_id']; // 会员昵称 $this->nickname = $LatestData['nickname']; // 会员余额 $this->users_money = $LatestData['users_money']; // 后台管理员信息 $this->parent_id = session('admin_info.parent_id'); } else { //过滤不需要登陆的行为 $ctl_act = CONTROLLER_NAME . '@' . ACTION_NAME; $ctl_all = CONTROLLER_NAME . '@*'; $filter_login_action = [ 'Lists@index', // 问答内容列表 'Ask@index', // 问答内容列表 'Ask@details', // 问答详情 ]; if (!in_array($ctl_act, $filter_login_action) && !in_array($ctl_all, $filter_login_action)) { if (IS_AJAX) { if (empty($this->users)) $this->error('请先登录!'); } else { if (isWeixin()) { //微信端 $this->redirect('user/Users/users_select_login'); } else { // 其他端 $this->redirect('user/Users/login'); } } } } /* END */ /*加载到模板*/ $this->assign('users', $this->users); $this->assign('users_id', $this->users_id); $this->assign('nickname', $this->nickname); $this->assign('AdminParentId', $this->parent_id); /* END */ /*会员功能是否开启*/ $msg = $logut_redirect_url = ''; $this->usersConfig = getUsersConfigData('all'); $web_users_switch = tpCache('web.web_users_switch'); if (empty($web_users_switch) || isset($this->usersConfig['users_open_register']) && $this->usersConfig['users_open_register'] == 1) { // 前台会员中心已关闭 $msg = '会员中心尚未开启!'; $logut_redirect_url = ROOT_DIR . '/'; } else if (session('?users_id') && empty($this->users)) { // 登录的会员被后台删除,立马退出会员中心 $msg = '当前用户名不存在!'; $logut_redirect_url = url('user/Users/centre'); } if (!empty($logut_redirect_url)) { // 清理session并回到首页 session('users_id', null); session('users', null); cookie('users_id', null); $this->error($msg, $logut_redirect_url); } /* END */ } // 问答首页 public function index() { $functionLogic = new \app\common\logic\FunctionLogic; $functionLogic->validate_authorfile(2); $param = input('param.'); // 查询条件处理 $Where = $this->AskLogic->GetAskWhere($param, $this->parent_id); // 最新问题,默认读取20条,可传入条数及字段名称进行获取 $ResultAsk = $this->AskModel->GetNewAskData($Where); // Url处理 $UrlData = $this->AskLogic->GetUrlData($param); // 栏目处理 $TypeData = $this->AskModel->GetAskTypeData($param); // 主页SEO信息 $type_id = !empty($param['type_id']) ? intval($param['type_id']) : 0; $SeoData = $this->AskLogic->GetSeoData($type_id); // 加急(悬赏)问题,默认读取10条,可传入数字进行获取 $UrgentAsk = $this->AskModel->GetUrgentAskData(10); // 统计会员提问、回答、被评论、被点赞次数 $CountUsersAsk = $this->AskModel->GetCountAskData($this->users_id); // 问答设置内容 $AskSetting = $this->AskModel->getAskSetting($this->request->action()); // 贡献榜(积分)score $ScoreList = $this->AskModel->GetOrderList(); // 财富榜(金币)money // $MoneyList = $this->AskModel->GetOrderList('money'); // 数组合并加载到模板 $result = array_merge($ResultAsk, $UrlData, $TypeData, $SeoData, $UrgentAsk, $CountUsersAsk, $AskSetting); $result['ScoreList'] = $ScoreList; // $result['MoneyList'] = $MoneyList; // dump($result);exit; $eyou = array( 'field' => $result, ); $this->assign('eyou', $eyou); return $this->fetch('ask/index'); } // 问题详情页 public function details() { $param = input('param.'); if (empty($param['ask_id'])) $this->error('请选择浏览的问题'); // 增加问题浏览点击量 $this->AskModel->UpdateAskClick($param['ask_id']); // 问题详情数据 $AskDetails = $this->AskModel->GetAskDetailsData($param, $this->parent_id, $this->users_id); if (0 == $AskDetails['code']) $this->error($AskDetails['msg']); // 问题回答数据,包含最佳答案 $AskReplyData = $this->AskModel->GetAskReplyData($param, $this->parent_id); // 栏目处理 $TypeData = $this->AskModel->GetAskTypeData($param); // 热门帖子,周榜 $WeekList = $this->AskModel->GetAskWeekListData(); // 热门帖子,总榜 $TotalList = $this->AskModel->GetAskTotalListData(); // Url处理 $UrlData = $this->AskLogic->GetUrlData($param); // 加急(悬赏)问题,默认读取10条,可传入数字进行获取 $UrgentAsk = $this->AskModel->GetUrgentAskData(10); // 统计会员提问、回答、被评论、被点赞次数 $CountUsersAsk = $this->AskModel->GetCountAskData($this->users_id); //QQ群信息 $AskSetting = $this->AskModel->getAskSetting($this->request->action()); // 贡献榜(积分)score $ScoreList = $this->AskModel->GetOrderList(); // 数组合并加载到模板 $result = array_merge($AskDetails, $AskReplyData, $TypeData, $WeekList, $TotalList, $UrlData, $UrgentAsk, $CountUsersAsk, $AskSetting); $result['ScoreList'] = $ScoreList; $eyou = array( 'field' => $result, ); $this->assign('eyou', $eyou); return $this->fetch('ask/details'); } // 提交问题 public function add_ask() { if (IS_AJAX_POST || IS_POST) { $param = input('param.'); // 是否登录、是否允许发布问题、数据判断及处理,返回内容数据 $content = $this->ParamDealWith($param); if ($param['money'] > 0 && $param['money'] > $this->users['users_money']) { $this->error('余额不足以抵扣悬赏金额,请充值!'); } /*添加数据*/ $AddAsk = [ 'type_id' => $param['ask_type_id'], 'users_id' => $this->users_id, 'ask_title' => $param['title'], 'money' => $param['money'], 'content' => $content, 'users_ip' => clientIP(), 'add_time' => getTime(), 'update_time' => getTime(), ]; // 如果这个会员组属于需要审核的,则追加 if (1 == $this->users['ask_is_review']) $AddAsk['is_review'] = 0; /* END */ $ResultId = $this->ask_db->add($AddAsk); if (!empty($ResultId)) { // 悬赏 积分奖励记录 $this->AskModel->setScore($this->users_id, $ResultId,0,1,$param['money']); $url = $this->AskLogic->GetUrlData($param, 'NewDateUrl'); if (1 == $this->users['ask_is_review']) { $this->success('发布成功,但你的问题需要管理员审核!', $url, ['review' => true]); } else { $this->success('发布成功!', $url); } } else { $this->error('发布的信息有误,请检查!'); } } // 是否允许发布问题 $this->IsRelease(); // 栏目处理 $result = $this->AskModel->GetAskTypeData(null, 'add_ask'); $result['SubmitAddAsk'] = $this->AskLogic->GetUrlData(null, 'SubmitAddAsk'); $result['users_money'] = $this->users_money; $result['AddAskUrl'] = $this->AskLogic->GetUrlData([], 'AddAskUrl'); $result['NewDateUrl'] = $this->AskLogic->GetUrlData([], 'NewDateUrl'); $result['SearchName'] = null; // 统计会员提问、回答、被评论、被点赞次数 $CountUsersAsk = $this->AskModel->GetCountAskData($this->users_id); // 主页SEO信息 $SeoData = $this->AskLogic->GetSeoData(0); // 问答设置内容 $AskSetting = $this->AskModel->getAskSetting($this->request->action()); // 数组合并加载到模板 $result = array_merge($result, $CountUsersAsk, $SeoData, $AskSetting); $eyou = array( 'field' => $result, ); $this->assign('eyou', $eyou); return $this->fetch('ask/add_ask'); } // 编辑问题 public function edit_ask() { if (IS_AJAX_POST || IS_POST) { $param = input('param.'); $param['ask_id'] = intval($param['ask_id']); // 是否登录、是否允许发布问题、数据判断及处理,返回内容数据 $content = $this->ParamDealWith($param, false); $ori_money = Db::name('ask')->where('ask_id', $param['ask_id'])->getField('money'); if ($ori_money > $param['money']) { $this->error('悬赏金额不能小于' . $ori_money . '元!'); } if ($param['money'] > 0 && $param['money'] > $this->users['users_money']) { $this->error('余额不足以抵扣悬赏金额,请充值!'); } /*添加数据*/ $UpAsk = [ 'type_id' => $param['ask_type_id'], 'ask_title' => $param['title'], 'money' => $param['money'], 'content' => $content, 'users_ip' => clientIP(), 'update_time' => getTime(), ]; // 如果这个会员组属于需要审核的,则追加 if (1 == $this->users['ask_is_review']) $UpAsk['is_review'] = 0; /* END */ /*条件处理*/ $where['ask_id'] = $param['ask_id']; // 不是后台管理则只能修改自己的问题 if (empty($this->users['admin_id'])) $where['users_id'] = $this->users_id; /* END */ $ResultID = $this->ask_db->where($where)->update($UpAsk); if (!empty($ResultID)) { if ($ori_money < $param['money']) { $this->AskModel->updateMoney($this->users_id, $param['money'], $ori_money, $param['ask_id']); } $url = $this->AskLogic->GetUrlData($param, 'AskDetailsUrl'); $this->success('编辑成功!', $url); } else { $this->error('编辑的信息有误,请检查!'); } } // 是否允许发布问题 $this->IsRelease(false); $ask_id = input('ask_id/d'); $where['ask_id'] = $ask_id; // 不是后台管理则只能修改自己的问题 if (empty($this->users['admin_id'])) $where['users_id'] = $this->users_id; $Info = $this->ask_db->where($where)->find(); if (empty($Info)) $this->error('请选择编辑的问题!'); // 栏目处理 $result = $this->AskModel->GetAskTypeData($Info, 'edit_ask'); $result['Info'] = $Info; $result['SubmitEditAsk'] = $this->AskLogic->GetUrlData(['ask_id' => $ask_id], 'SubmitEditAsk'); $result['users_money'] = $this->users_money; $result['AddAskUrl'] = $this->AskLogic->GetUrlData([], 'AddAskUrl'); $result['NewDateUrl'] = $this->AskLogic->GetUrlData([], 'NewDateUrl'); $result['SearchName'] = null; // 统计会员提问、回答、被评论、被点赞次数 $CountUsersAsk = $this->AskModel->GetCountAskData($this->users_id); // 主页SEO信息 $SeoData = $this->AskLogic->GetSeoData(0); // 问答设置内容 $AskSetting = $this->AskModel->getAskSetting($this->request->action()); // 数组合并加载到模板 $result = array_merge($result, $CountUsersAsk, $SeoData, $AskSetting); $eyou = array( 'field' => $result, ); $this->assign('eyou', $eyou); return $this->fetch('ask/edit_ask'); } // 采纳最佳答案 public function ajax_best_answer() { if (IS_AJAX_POST) { $param = input('param.'); // 数据判断处理 if (empty($param['answer_id']) || empty($param['ask_id'])) $this->error('请选择采纳的回答'); $param['ask_id'] = intval($param['ask_id']); $param['answer_id'] = intval($param['answer_id']); // 查询提问信息 $AskInfo = $this->ask_db->field('users_id, status')->where('ask_id', $param['ask_id'])->find(); if (!empty($this->users['admin_id']) || $AskInfo['users_id'] = input('post.users_id/d')) { // 查询问答状态 $AskStatus = $this->ask_db->where('ask_id', $param['ask_id'])->getField('status'); // 更新问题数据表 $Updata = [ 'ask_id' => $param['ask_id'], 'status' => 1, 'solve_time' => getTime(), 'bestanswer_id' => $param['answer_id'], 'update_time' => getTime() ]; $ResultID = $this->ask_db->update($Updata); if (!empty($ResultID)) { // 将这个问题下的所有答案设置为非最佳答案 $this->ask_answer_db->where('ask_id', $param['ask_id'])->update(['is_bestanswer' => 0]); // 设置当前问题为最佳答案 $this->ask_answer_db->where('answer_id', $param['answer_id'])->update(['is_bestanswer' => 1]); // 问题未解决并存在悬赏金则执行 $money = $this->ask_db->where('ask_id', $param['ask_id'])->value('money'); if (isset($AskInfo['status']) && 0 == $AskInfo['status'] && 0 < $money) { $answer_user_id = $this->ask_answer_db->where('answer_id', $param['answer_id'])->value('users_id'); // 悬赏金额插入记录 $this->AskModel->setMoney($answer_user_id, $money, $param['ask_id'], $param['answer_id']); } $this->success('已采纳'); } else { $this->error('请选择采纳的回答'); } } else { $this->error('无操作权限'); } } } // 添加回答 public function ajax_add_answer() { if (IS_AJAX_POST || IS_POST) { $param = input('param.'); // 是否登录、是否允许发布问题、数据判断及处理,返回内容数据 $content = $this->AnswerDealWith($param, false); /*添加数据*/ $AddAnswer = [ 'ask_id' => $param['ask_id'], // 如果这个会员组属于需要审核的,则追加。 默认1为已审核 'is_review' => 1 == $this->users['ask_is_review'] ? 0 : 1, 'type_id' => $param['type_id'], 'users_id' => $this->users_id, 'username' => $this->users['username'], 'users_ip' => clientIP(), 'content' => $content, // 若是回答答案则追加数据 'answer_pid' => !empty($param['answer_id']) ? $param['answer_id'] : 0, // 用户则追加数据 'at_users_id' => !empty($param['at_users_id']) ? $param['at_users_id'] : 0, 'at_answer_id' => !empty($param['at_answer_id']) ? $param['at_answer_id'] : 0, 'add_time' => getTime(), 'update_time' => getTime(), ]; $ResultID = $this->ask_answer_db->add($AddAnswer); /* END */ if (!empty($ResultID)) { $ask_users_id = Db::name('ask')->where('ask_id',$param['ask_id'])->getField('users_id'); if ($ask_users_id != $this->users_id){ // 回答加积分 自问自答不加积分 $this->AskModel->setScore($this->users_id, $param['ask_id'], $ResultID, 2); } // 增加问题回复数 $this->AskModel->UpdateAskReplies($param['ask_id'], true); if (1 == $this->users['ask_is_review']) { $this->success('回答成功,但你的回答需要管理员审核!', null, ['review' => true]); } else { $AddAnswer['answer_id'] = $ResultID; $AddAnswer['head_pic'] = $this->users['head_pic']; $AddAnswer['at_usersname'] = ''; if (!empty($AddAnswer['at_users_id'])) { $FindData = Db::name('users')->field('nickname, username')->where('users_id', $AddAnswer['at_users_id'])->find(); $AddAnswer['at_usersname'] = empty($FindData['nickname']) ? $FindData['username'] : $FindData['nickname']; } $ResultData = $this->AskLogic->GetReplyHtml($AddAnswer); // 查询这个回答的评论回复数 $ResultData['comment_reply_num'] = $this->ask_answer_db->where('answer_pid', $AddAnswer['answer_pid'])->count(); $this->success('回答成功!', null, $ResultData); } } else { $this->error('提交信息有误,请刷新重试!'); } } } // 编辑回答 public function ajax_edit_answer() { if (IS_AJAX_POST || IS_POST) { $param = input('param.'); $param['ask_id'] = intval($param['ask_id']); $param['answer_id'] = intval($param['answer_id']); // 是否登录、是否允许发布问题、数据判断及处理,返回内容数据 $content = $this->AnswerDealWith($param, false); /*编辑数据*/ $UpAnswerData = [ 'content' => $content, 'users_ip' => clientIP(), 'update_time' => getTime(), ]; // 如果这个会员组属于需要审核的,则追加 if (1 == $this->users['ask_is_review']) $UpAnswerData['is_review'] = 0; /* END */ // 更新条件 $where = [ 'answer_id' => $param['answer_id'], 'ask_id' => $param['ask_id'], ]; if (empty($this->users['admin_id'])) $where['users_id'] = $this->users_id; // 更新数据 $ResultId = $this->ask_answer_db->where($where)->update($UpAnswerData); if (!empty($ResultId)) { $url = $this->AskLogic->GetUrlData($param, 'AskDetailsUrl'); if (1 == $this->users['ask_is_review']) { $this->success('编辑成功,但你的回答需要管理员审核!', $url, ['review' => true]); } else { $this->success('编辑成功!', $url); } } else { $this->error('编辑的信息有误,请检查!'); } } // 是否允许发布问题 $this->IsAnswer(false); $answer_id = input('param.answer_id/d'); $where = [ 'a.answer_id' => $answer_id, ]; if (empty($this->users['admin_id'])) { $where['a.users_id'] = $this->users_id; } $AnswerData = $this->ask_answer_db->field('a.answer_id, a.ask_id, a.content, b.ask_title') ->alias('a') ->join('ask b', 'a.ask_id = b.ask_id', 'LEFT') ->where($where) ->find(); if (empty($AnswerData)) $this->error('要修改的回答不存在!'); // 更新人 $AnswerData['nickname'] = $this->nickname; $result['Info'] = $AnswerData; $result['EditAnswerUrl'] = $this->AskLogic->GetUrlData(['answer_id' => $answer_id], 'EditAnswer'); $result['AddAskUrl'] = $this->AskLogic->GetUrlData([], 'AddAskUrl'); $result['NewDateUrl'] = $this->AskLogic->GetUrlData([], 'NewDateUrl'); $result['SearchName'] = null; // 统计会员提问、回答、被评论、被点赞次数 $CountUsersAsk = $this->AskModel->GetCountAskData($this->users_id); // 问答设置内容 $AskSetting = $this->AskModel->getAskSetting($this->request->action()); // 数组合并加载到模板 $result = array_merge($result, $CountUsersAsk, $AskSetting); $eyou = array( 'field' => $result, ); $this->assign('eyou', $eyou); return $this->fetch('ask/edit_answer'); } // 删除指定的问题、回答、评论、回复、点赞 public function ajax_del_ask() { if (IS_AJAX_POST) { // 是否登录 $this->UsersIsLogin(); // 数据判断 $type = input('param.type/d'); $ask_id = input('param.ask_id/d'); if (empty($this->users['admin_id'])) $this->error('无操作权限'); if (empty($ask_id) || 1 != $type) $this->error('请选择要删除的提问问题'); // 执行删除 $Where['ask_id'] = $ask_id; $askData = $this->ask_db->where($Where)->find(); $ResultID = $this->ask_db->where($Where)->delete(); if (!empty($ResultID)) { // 同步删除对应问题下所有回答 $this->ask_answer_db->where($Where)->delete(); // 同步删除对应问题下所有点赞 $this->ask_answer_like_db->where($Where)->delete(); // 更新会员提问及回答所得积分和余额 $this->AskModel->RebackDel($ask_id,$askData); // 返回跳转链接 $url = $this->AskLogic->GetUrlData([], 'NewDateUrl'); $this->success('删除成功!', $url); } else { $this->error('删除信息错误,请刷新重试'); } } } // 删除指定的回答、评论、回复、点赞 public function ajax_del_answer() { if (IS_AJAX_POST) { // 是否登录 $this->UsersIsLogin(); // 数据判断 $type = input('param.type/d'); $ask_id = input('param.ask_id/d'); $answer_id = input('param.answer_id/d'); if (empty($ask_id) || empty($answer_id) || 2 != $type) $this->error('请选择删除内容'); // 执行删除 $Where = [ 'ask_id' => $ask_id, 'answer_id' => $answer_id, ]; // 若操作人为后台管理员则允许删除其他会员的回答、评论 if (empty($this->users['admin_id'])) $Where['users_id'] = $this->users_id; // 查询整个回答评论回复共有条数的ID $CountWhere['answer_pid'] = $answer_id; $AskAnswerID = $this->ask_answer_db->where($Where)->whereOr($CountWhere)->column('answer_id'); // 执行删除 $ResultID = $this->ask_answer_db->where($Where)->whereOr($CountWhere)->delete(); if (!empty($ResultID)) { // 同步删除对应问题下所有点赞 $this->ask_answer_like_db->where('answer_id', 'IN', $AskAnswerID)->delete(); // 减少问题回复数 $this->AskModel->UpdateAskReplies($ask_id, false, count($AskAnswerID)); $this->success('删除成功!'); } else { $this->error('删除信息错误,请刷新重试'); } } } // 删除问题、回答 public function ajax_del_comment() { if (IS_AJAX_POST) { // 是否登录 $this->UsersIsLogin(); // 数据判断 $type = input('param.type/d'); $ask_id = input('param.ask_id/d'); $answer_id = input('param.answer_id/d'); if (empty($ask_id) || empty($answer_id) || 3 != $type) $this->error('请选择删除内容'); // 执行删除 $Where = [ 'ask_id' => $ask_id, 'answer_id' => $answer_id, ]; // 若操作人为后台管理员则允许删除其他会员的回答、评论 if (empty($this->users['admin_id'])) $Where['users_id'] = $this->users_id; // 执行删除 $ResultID = $this->ask_answer_db->where($Where)->delete(); if (!empty($ResultID)) { // 同步删除对应问题下所有点赞 $this->ask_answer_like_db->where('answer_id', $answer_id)->delete(); // 减少问题回复数 $this->AskModel->UpdateAskReplies($ask_id, false, 1); $this->success('删除成功!'); } else { $this->error('删除信息错误,请刷新重试'); } } } // 点赞 public function ajax_click_like() { if (IS_AJAX_POST) { // 是否登录 $this->UsersIsLogin(); $post = input('post.'); $ask_id = !empty($post['ask_id']) ? intval($post['ask_id']) : 0; $answer_id = !empty($post['answer_id']) ? intval($post['answer_id']) : 0; $like_source = !empty($post['like_source']) ? intval($post['like_source']) : 0; if (empty($like_source) || (1 == $like_source && empty($ask_id))) { $this->error('请选择点赞信息'); } else if (in_array($like_source, [2, 3]) && (empty($ask_id) || empty($answer_id))) { $this->error('请选择点赞信息'); } $Where = [ 'ask_id' => $ask_id, 'answer_id' => $answer_id, 'users_id' => $this->users_id, 'like_source' => $like_source ]; $IsCount = $this->ask_answer_like_db->where($Where)->count(); if (!empty($IsCount)) { $this->error('您已赞过!'); } else { // 添加新的点赞记录 $AddData = [ 'click_like' => 1, 'like_source' => $like_source, 'users_ip' => clientIP(), 'add_time' => getTime(), 'update_time' => getTime(), ]; $AddData = array_merge($Where, $AddData); $ResultID = $this->ask_answer_like_db->add($AddData); if (!empty($ResultID)) { if (1 == $like_source) { unset($Where['users_id']); } else if (in_array($like_source, [2, 3])) { $Where = [ 'answer_id' => $answer_id, 'like_source' => $like_source ]; } $LikeCount = $this->ask_answer_like_db->where($Where)->count(); if (1 == $LikeCount) { $LikeName = '' . $this->nickname . ''; } else { $LikeName = '' . $this->nickname . '、 '; } $data = [ // 点赞数 'LikeCount' => $LikeCount, // 点赞人 'LikeName' => $LikeName, ]; // 同步点赞次数到答案表 $Where = [ 'ask_id' => $ask_id, 'answer_id' => $answer_id ]; $UpdataNew = [ 'click_like' => $LikeCount, 'update_time' => getTime(), ]; $this->ask_answer_db->where($Where)->update($UpdataNew); $this->success('点赞成功!', null, $data); } } } } // 审核问题,仅创始人有权限 public function ajax_review_ask() { if (IS_AJAX_POST) { // 创始人才有权限在前台审核评论 if (0 == $this->parent_id) { $this->UsersIsLogin(); $param = input('param.'); if (empty($param['ask_id'])) $this->error('请选择需要审核的问题!'); // 更新审核问题 $UpAakData = [ 'is_review' => 1, 'update_time' => getTime(), ]; $ResultId = $this->ask_db->where('ask_id', intval($param['ask_id']))->update($UpAakData); if (!empty($ResultId)) $this->success('审核成功!'); $this->error('审核失败!'); } else { $this->error('没有操作权限!'); } } } // 审核评论,仅管理员有权限 public function ajax_review_comment() { if (IS_AJAX_POST) { // 创始人才有权限在前台审核评论 if (0 == $this->parent_id) { $this->UsersIsLogin(); $param = input('param.'); if (empty($param['ask_id']) || empty($param['answer_id'])) $this->error('提交信息有误,请刷新重试!'); // 更新审核评论 $where = [ 'ask_id' => intval($param['ask_id']), 'answer_id' => intval($param['answer_id']), ]; $UpAnswerData = [ 'is_review' => 1, 'update_time' => getTime(), ]; $ResultId = $this->ask_answer_db->where($where)->update($UpAnswerData); if (!empty($ResultId)) $this->success('审核成功!'); $this->error('审核失败!'); } else { $this->error('没有操作权限!'); } } } // 获取指定数量的评论数据(分页) public function ajax_show_comment() { if (IS_AJAX_POST) { $param = input('param.'); $Comment = $this->AskModel->GetAskReplyData($param, $this->parent_id); $Data = !empty($param['is_comment']) ? $Comment['AnswerData'][0]['AnswerSubData'] : $Comment['BestAnswer'][0]['AnswerSubData']; if (!empty($Data)) { $ResultData = $this->AskLogic->ForeachReplyHtml($Data, $this->parent_id, $param['is_comment'], $this->users_id); if (empty($ResultData['htmlcode'])) $this->error('没有更多数据'); $this->success('加载完成', null, $ResultData); } else { $this->error('没有更多数据'); } } } // 加载会员中心所需数据 private function AssignData($param = array()) { // 是否登录 $this->UsersIsLogin(); // 主题颜色 $this->assign('usersConfig', $this->usersConfig); $this->usersConfig['theme_color'] = $theme_color = !empty($this->usersConfig['theme_color']) ? $this->usersConfig['theme_color'] : '#ff6565'; // 默认主题颜色 $this->assign('theme_color', $theme_color); // 是否为手机端 $is_mobile = isMobile() ? 1 : 2; $this->assign('is_mobile', $is_mobile); // 是否为端微信 $is_wechat = isWeixin() ? 1 : 2; $this->assign('is_wechat', $is_wechat); // 是否为微信端小程序 $is_wechat_applets = isWeixinApplets() ? 1 : 0; $this->assign('is_wechat_applets', $is_wechat_applets); // 焦点 $Focus = empty($param['method']) ? 1 : 2; $this->assign('Focus', $Focus); // 菜单名称 $this->MenuTitle = Db::name('users_menu')->where([ 'mca' => 'home/Ask/ask_index', 'lang' => $this->home_lang, ])->getField('title'); $this->assign('MenuTitle', $this->MenuTitle); } // 是否登录 private function UsersIsLogin() { if (empty($this->users) || empty($this->users_id)) $this->error('请先登录!'); } // 是否允许发布、编辑问题 private function IsRelease($is_add = true) { if (empty($this->users['ask_is_release'])) { if (!empty($is_add)) { $this->error($this->users['level_name'] . '不允许发布问题!'); } else { $this->error($this->users['level_name'] . '不允许编辑问题!'); } } } // 问题数据判断及处理,返回问题内容数据 private function ParamDealWith($param = [], $is_add = true) { // 是否登录 $this->UsersIsLogin(); // 是否允许发布、编辑 $this->IsRelease($is_add); /*数据判断*/ $content = ''; if (empty($param)) $this->error('请提交完整信息!'); if (empty($param['title'])) $this->error('请填写问题标题!'); if (empty($param['ask_type_id'])) $this->error('请选择问题分类!'); $content = $this->AskLogic->ContentDealWith($param); if (empty($content)) $this->error('请填写问题描述!'); // 编辑时执行判断 if (empty($is_add) && empty($param['ask_id'])) $this->error('请确认编辑问题!'); /* END */ return $content; } // 是否允许发布、编辑评论回复 private function IsAnswer($is_add = true) { if (empty($this->users['ask_is_release'])) { if (!empty($is_add)) { $this->error($this->users['level_name'] . '不允许回复答案!'); } else { $this->error($this->users['level_name'] . '不允许编辑答案!'); } } } // 评论回复数据处理,返回评论回复内容数据 private function AnswerDealWith($param = [], $is_add = true) { // 是否登录 $this->UsersIsLogin(); // 是否允许发布、编辑 $this->IsAnswer($is_add); /*数据判断*/ if (!empty($is_add)) { // 添加时执行判断 if (empty($param) || empty($param['ask_id'])) $this->error('提交信息有误,请刷新重试!'); } else { // 编辑时执行判断 if (empty($is_add) && empty($param['ask_id'])) $this->error('请确认编辑问题!'); } $content = ''; $content = $this->AskLogic->ContentDealWith($param); if (empty($content)) $this->error('请写下你的回答!'); /* END */ return $content; } /** * 获取登录的会员最新数据 */ private function GetUsersLatestData($users_id = null) { $users_id = empty($users_id) ? session('users_id') : $users_id; if (!empty($users_id)) { /*读取的字段*/ $field = 'a.*, b.*, b.discount as level_discount'; /* END */ /*查询数据*/ $users = \think\Db::name('users')->field($field) ->alias('a') ->join('__USERS_LEVEL__ b', 'a.level = b.level_id', 'LEFT') ->where([ 'a.users_id' => $users_id, 'a.lang' => get_home_lang(), 'a.is_activation' => 1, 'a.is_del' => 0, ])->find(); // 会员不存在则返回空 if (empty($users)) return false; /* END */ /*会员数据处理*/ // 头像处理 $users['head_pic'] = get_head_pic($users['head_pic']); // 昵称处理 $users['nickname'] = empty($users['nickname']) ? $users['username'] : $users['nickname']; // 密码为空并且存在openid则表示微信注册登录,密码字段更新为0,可重置密码一次。 $users['password'] = empty($users['password']) && !empty($users['open_id']) ? 0 : 1; // 删除登录密码及支付密码 unset($users['paypwd']); // 级别处理 $LevelData = []; if (intval($users['level_maturity_days']) >= 36600) { $users['maturity_code'] = 1; $users['maturity_date'] = '终身'; } else if (0 == $users['open_level_time'] && 0 == $users['level_maturity_days']) { $users['maturity_code'] = 0; $users['maturity_date'] = '';// 没有升级会员,置空 } else { /*计算剩余天数*/ $days = $users['open_level_time'] + ($users['level_maturity_days'] * 86400); // 取整 $days = ceil(($days - getTime()) / 86400); if (0 >= $days) { /*更新会员的级别*/ $LevelData = model('EyouUsers')->UpUsersLevelData($users_id); /* END */ $users['maturity_code'] = 2; $users['maturity_date'] = '';// 会员过期,置空 } else { $users['maturity_code'] = 3; $users['maturity_date'] = $days . ' 天'; } /* END */ } /* END */ // 合并数据 $LatestData = array_merge($users, $LevelData); /*更新session*/ session('users', $LatestData); // session('open_id', $LatestData['open_id']); session('users_id', $LatestData['users_id']); cookie('users_id', $LatestData['users_id']); /* END */ // 返回数据 return $LatestData; } else { // session中不存在会员ID则返回空 session('users_id', null); session('users', null); cookie('users_id', null); return false; } } }