diff --git a/application/models/Question_model.php b/application/models/Question_model.php index 48f8deeccd6d4c8ca2e109737d55fbe0f5ddf8ea..d200049784c4e9fde8e9e94044742a6450845505 100644 --- a/application/models/Question_model.php +++ b/application/models/Question_model.php @@ -21,6 +21,7 @@ class Question_model extends CI_Model { $this->index = $xs->index; } + } //设为已解决 function change_to_solve($qids) { @@ -80,10 +81,10 @@ class Question_model extends CI_Model { $adoptmoeny = $question ['shangjin']; //回答者获得赏金 - $this->db->query ( "UPDATE " . $this->db->dbprefix . "user SET `jine`=jine+'$cash_fee' WHERE `uid`=$touid" ); + //$this->db->query ( "UPDATE " . $this->db->dbprefix . "user SET `jine`=jine+'$cash_fee' WHERE `uid`=$touid" ); //被采纳获得赏金记录 - if ($adoptmoeny > 0) - $this->db->query ( "INSERT INTO " . $this->db->dbprefix . "paylog SET type='adoptqid',typeid=$qid,money=$adoptmoeny,openid='',fromuid=$quid,touid=$touid,`time`=$time" ); //增加被采纳记录 + //if ($adoptmoeny > 0) + // $this->db->query ( "INSERT INTO " . $this->db->dbprefix . "paylog SET type='adoptqid',typeid=$qid,money=$adoptmoeny,openid='',fromuid=$quid,touid=$touid,`time`=$time" ); //增加被采纳记录 return 1; @@ -116,7 +117,7 @@ class Question_model extends CI_Model { $question ['title'] = checkwordsglobal ( $question ['title'] ); $imgs=getfirstimg($question['description']); $question ['shortdescription'] =clearhtml(checkwordsglobal ( htmlspecialchars_decode($question ['description'] )),100); - if($imgs&&count($imgs)>=1){ + if(is_array($imgs)&&count($imgs)>=1){ $question['shortdescription']="[图]".$question ['shortdescription']; } $question ['artlen']=mb_strlen(strip_tags(checkwordsglobal ( htmlspecialchars_decode($question ['description'] ) ))); @@ -371,28 +372,46 @@ class Question_model extends CI_Model { foreach ( $query->result_array () as $question ) { $qid = $question ['id']; $authorid = $question ['authorid']; - + //是否有提问悬赏现金托管 - $model = $this->db->query ( "SELECT * FROM " . $this->db->dbprefix . "user_depositmoney WHERE type='qid' and typeid=$qid and fromuid=$authorid and state=0" )->row_array (); + $model = $this->db->query ( "SELECT * FROM " . $this->db->dbprefix . "user_depositmoney WHERE type='qid' and typeid=$qid and fromuid=$authorid " )->row_array (); + if ($model) { $fromuid = $model ['fromuid']; $money = $model ['needpay'] * 100; + $qtitle="删除问题:".$question['title']; $this->db->query ( "UPDATE " . $this->db->dbprefix . "user SET `jine`=jine+'$money' WHERE `uid`=$fromuid" ); $time = time (); $needpay = $model ['needpay']; - $this->db->query ( "INSERT INTO " . $this->db->dbprefix . "paylog SET type='thqid',typeid=$qid,money=$needpay,openid='',fromuid=0,touid=$fromuid,`time`=$time" ); + $this->db->query ( "INSERT INTO " . $this->db->dbprefix . "paylog SET type='thqid',typeid=$qid,money=$needpay,beizhu='$qtitle',openid='',fromuid=0,touid=$fromuid,`time`=$time" ); $this->db->query ( "DELETE FROM `" . $this->db->dbprefix . "user_depositmoney` WHERE fromuid=$fromuid and type='qid' and typeid=$qid" ); + + $adoptmodel = $this->db->query ( "SELECT * FROM " . $this->db->dbprefix . "paylog WHERE type='adoptqid' and typeid=$qid and fromuid=$authorid" )->row_array (); + if($adoptmodel){ + //如果有采纳,将采纳人的钱也扣了 + $adoptpay=$adoptmodel['money'] * 100; + $adoptuid=$adoptmodel['touid']; + $qadoptcontent="扣除问题:".$question['title']."回答作者费用"; + $this->db->query ( "UPDATE " . $this->db->dbprefix . "user SET `jine`=jine-'$adoptpay' WHERE `uid`=$adoptuid" ); + + $needpay = $adoptmodel['money'] ; + $this->db->query ( "INSERT INTO " . $this->db->dbprefix . "paylog SET type='thadoptqid',typeid=$qid,money=$needpay,beizhu='$qadoptcontent',openid='',fromuid=0,touid=$adoptuid,`time`=$time" ); + + + } + } //是否有对专家付费提问 - $model1 = $this->db->query ( "SELECT * FROM " . $this->db->dbprefix . "user_depositmoney WHERE type='eqid' and typeid=$qid and fromuid=$authorid and state=0" )->row_array (); + $model1 = $this->db->query ( "SELECT * FROM " . $this->db->dbprefix . "user_depositmoney WHERE type='eqid' and typeid=$qid and fromuid=$authorid " )->row_array (); if ($model1) { $fromuid = $model1 ['fromuid']; $money = $model1 ['needpay'] * 100; + $qtitle="付费咨询问题:".$question['title']; $this->db->query ( "UPDATE " . $this->db->dbprefix . "user SET `jine`=jine+'$money' WHERE `uid`=$fromuid" ); $time = time (); $needpay = $model1 ['needpay']; - $this->db->query ( "INSERT INTO " . $this->db->dbprefix . "paylog SET type='theqid',typeid=$qid,money=$needpay,openid='',fromuid=0,touid=$fromuid,`time`=$time" ); + $this->db->query ( "INSERT INTO " . $this->db->dbprefix . "paylog SET type='theqid',typeid=$qid,money=$needpay,beizhu='$qtitle',openid='',fromuid=0,touid=$fromuid,`time`=$time" ); $this->db->query ( "DELETE FROM `" . $this->db->dbprefix . "user_depositmoney` WHERE fromuid=$fromuid and type='eqid' and typeid=$qid" ); } @@ -493,8 +512,10 @@ class Question_model extends CI_Model { isset ( $this->ordertable [$status] ) && $sql .= $this->ordertable [$status]; $sql .= " LIMIT $start,$limit"; + $query = $this->db->query ( addslashes($sql) ); + $qids = $questionTags = []; foreach ( $query->result_array () as $question ) { if ($question ['cid']) { @@ -686,6 +707,7 @@ class Question_model extends CI_Model { //(! strip_tags ( $description, '' )) && $description = ''; /* 分词索引 */ $data = array ('cid' => $cid, 'cid1' => $cid1, 'cid2' => $cid2, 'cid3' => $cid3, 'askuid' => $askfromuid, 'authorid' => $uid, 'shangjin' => $shangjin, 'author' => $username, 'title' => $title, 'description' => $description, 'price' => $price, 'time' => $creattime, 'endtime' => $endtime, 'hidden' => $hidanswer, 'status' => $status, 'ip' => getip () ); + $this->db->insert ( 'question', $data ); //$this->db->query ( "INSERT INTO " . $this->db->dbprefix . "question SET cid='$cid',cid1='$cid1',cid2='$cid2',cid3='$cid3',askuid='$askfromuid',authorid='$uid',shangjin='$shangjin',author='$username',title='$title',description='$description',price='$price',time='$creattime',endtime='$endtime',hidden='$hidanswer',status='$status',ip='{$this->base->ip}'" ); $qid = $this->db->insert_id (); @@ -874,12 +896,35 @@ class Question_model extends CI_Model { $quid = $question ['authorid']; $adoptmoeny = $question ['shangjin']; $cash_fee = intval ( $question ['shangjin'] ) * 100; + $qtitle="关闭问题:".$question['title']; //如果没有回答,删除托管记录,零钱回到用户钱包,设置问题关闭 $this->db->query ( "UPDATE " . $this->db->dbprefix . "user SET `jine`=jine+'$cash_fee' WHERE `uid`=$quid" ); - //删除托管记录 - $this->db->query ( "INSERT INTO " . $this->db->dbprefix . "paylog SET type='closeqid',typeid=$qid,money=$adoptmoeny,openid='',fromuid=0,touid=$quid,`time`=$time" ); //增加关闭问题记录 - - + + $this->db->query ( "INSERT INTO " . $this->db->dbprefix . "paylog SET type='closeqid',typeid=$qid,money=$adoptmoeny,beizhu='$qtitle',openid='',fromuid=0,touid=$quid,`time`=$time" ); //增加关闭问题记录 + + $authorid = $question['authorid']; + + //是否有提问悬赏现金托管 + $model = $this->db->query ( "SELECT * FROM " . $this->db->dbprefix . "user_depositmoney WHERE type='qid' and typeid=$qid and fromuid=$authorid and state=0" )->row_array (); + if ($model) { + $fromuid = $model['fromuid']; + $this->db->query ( "DELETE FROM `" . $this->db->dbprefix . "user_depositmoney` WHERE fromuid=$fromuid and type='qid' and typeid=$qid" ); + } + + //是否有对专家付费提问 + $model1 = $this->db->query ( "SELECT * FROM " . $this->db->dbprefix . "user_depositmoney WHERE type='eqid' and typeid=$qid and fromuid=$authorid and state=0" )->row_array (); + if ($model1) { + $fromuid = $model1 ['fromuid']; + $money = $model1 ['needpay'] * 100; + $qtitle="付费咨询问题:".$question['title']; + $this->db->query ( "UPDATE " . $this->db->dbprefix . "user SET `jine`=jine+'$money' WHERE `uid`=$fromuid" ); + $time = time (); + $needpay = $model1 ['needpay']; + $this->db->query ( "INSERT INTO " . $this->db->dbprefix . "paylog SET type='theqid',typeid=$qid,money=$needpay,beizhu='$qtitle',openid='',fromuid=0,touid=$fromuid,`time`=$time" ); + $this->db->query ( "DELETE FROM `" . $this->db->dbprefix . "user_depositmoney` WHERE fromuid=$fromuid and type='eqid' and typeid=$qid" ); + + } + } } @@ -910,7 +955,7 @@ class Question_model extends CI_Model { } function remove_supply_by_qid($qids) { - $this -> db ->where_in('qid',$qids)->delete('question_supply'); + $this -> db ->where_in('qid',explode(',', $qids))->delete('question_supply'); } @@ -1106,7 +1151,7 @@ class Question_model extends CI_Model { $size = count ( $statusarr ); $to = $statusarr [$size - 1]; $from = $statusarr [0]; - $result = $this->search->setCollapse('id')->setQuery ( $title )->addRange ( 'status', $from, $to )->setLimit ( $limit, $start )->search (); + $result = $this->search->setFuzzy()->setAutoSynonyms()->setCollapse('id')->setQuery ( $title )->addRange ( 'status', $from, $to )->setLimit ( $limit, $start )->search (); foreach ( $result as $doc ) { $question = array (); $question ['id'] = $doc->id; @@ -1141,6 +1186,7 @@ class Question_model extends CI_Model { ->or_like('description', $title) ->group_end() //右括号 ->limit($limit, $start)->get('question'); + foreach ( $query->result_array () as $question ) { $question ['category_name'] = $this->base->category [$question ['cid']] ['name']; $question ['format_time'] = tdate ( $question ['time'] ); @@ -1158,16 +1204,14 @@ class Question_model extends CI_Model { } function get_question_bytitle($title, $status = '1,2,6', $addbestanswer = 0, $start = 0, $limit = 20) { $questionlist = array (); - + $query=$this->db-> + where_in('status',explode (",", $status )) + ->group_start() //左括号 + ->like('title',$title) + ->or_like('description', $title) + ->group_end() //右括号 + ->limit($limit, $start)->get('question'); - $query=$this->db-> - where_in('status',explode ( ",", $status )) - ->group_start() //左括号 - ->like('title',$title) - ->or_like('description', $title) - ->group_end() //右括号 - ->limit($limit, $start)->get('question'); - foreach ( $query->result_array () as $question ) { $question ['category_name'] = $this->base->category [$question ['cid']] ['name']; $question ['format_time'] = tdate ( $question ['time'] ); @@ -1250,12 +1294,10 @@ class Question_model extends CI_Model { function makeindex($startindex, $pagesize) { if ($this->base->setting['xunsearch_open']) { - if ($startindex == 0) { - $this->index->clean (); - } + $this->index->openBuffer (); - $query = $this->db->query ( "SELECT * FROM " . $this->db->dbprefix . "question LIMIT $startindex,$pagesize" ); + $query = $this->db->query ( "SELECT * FROM " . $this->db->dbprefix . "question where status!=0 and isupdatexunsearch=0 order by time desc LIMIT $startindex,$pagesize" ); foreach ( $query->result_array () as $question ) { $data = array (); $data ['id'] = $question ['id']; @@ -1278,6 +1320,7 @@ class Question_model extends CI_Model { $doc->setFields ( $data ); $this->index->update ( $doc )->flushIndex (); + $this->db->where(array('id'=>$question['id']))->update('question',array('isupdatexunsearch'=>1)); } $this->index->closeBuffer (); diff --git a/application/models/Topic_model.php b/application/models/Topic_model.php index f8c82995c90faed8eb52c5456c9083f7028c64cd..8f322b298ba57c3a1b40eaadfef111ef47ee1e05 100644 --- a/application/models/Topic_model.php +++ b/application/models/Topic_model.php @@ -40,7 +40,8 @@ class Topic_model extends CI_Model { $topic ['xzsrc'] = $src; } $topic ['artlen'] = strlen ( strip_tags ( html_entity_decode($topic ['describtion']) ) ); - $topic ['describtion'] = checkwordsglobal (htmlspecialchars_decode( $topic ['describtion']) ); + $topic ['describtion'] = checkwordsglobal (htmlspecialchars_decode($topic ['describtion']) ); + //echo $topic ['describtion'];exit(); } return $topic; @@ -107,7 +108,7 @@ class Topic_model extends CI_Model { $topiclist = array (); if ($this->base->setting ['xunsearch_open']) { - $result = $this->search->setQuery ( $word )->setLimit ( $limit, $start )->search (); + $result = $this->search->setFuzzy()->setAutoSynonyms()->setQuery ( $word )->setLimit ( $limit, $start )->search (); foreach ( $result as $doc ) { var_dump ( $doc ); exit (); @@ -162,9 +163,8 @@ class Topic_model extends CI_Model { function get_bylikename($word, $start = 0, $limit = 6) { $word = addslashes ( $word ); $topiclist = array (); - if ($this->base->setting ['xunsearch_open']) { - - $result = $this->search->setCollapse ( 'id' )->setQuery ( $word )->setLimit ( $limit, $start )->search (); + if ($this->base->setting ['xunsearch_open']) { + $result = $this->search->setCollapse ( 'id' )->setFuzzy()->setAutoSynonyms()->setQuery ( $word )->setLimit ( $limit, $start )->search (); foreach ( $result as $doc ) { $topic = array (); $topic ['id'] = $doc->id; @@ -716,9 +716,9 @@ class Topic_model extends CI_Model { $desrc = addslashes ( $desrc ); $filepath = addslashes ( $filepath ); if ($filepath) - $this->db->query ( "UPDATE `" . $this->db->dbprefix . "topic` SET `title`='$title' ,`describtion`='$desrc' , `image`='$filepath' WHERE `id`=$id" ); + $this->db->query ( "UPDATE `" . $this->db->dbprefix . "topic` SET `isupdatexunsearch`=0 ,`title`='$title' ,`describtion`='$desrc' , `image`='$filepath' WHERE `id`=$id" ); else - $this->db->query ( "UPDATE `" . $this->db->dbprefix . "topic` SET `title`='$title' ,`describtion`='$desrc' WHERE `id`=$id" ); + $this->db->query ( "UPDATE `" . $this->db->dbprefix . "topic` SET `isupdatexunsearch`=0 , `title`='$title' ,`describtion`='$desrc' WHERE `id`=$id" ); if ($this->base->setting ['xunsearch_open']) { $topic = array (); $topic ['id'] = $id; @@ -751,6 +751,7 @@ class Topic_model extends CI_Model { 'describtion' => $desrc, 'image' => $filepath, 'isphone' => $isphone, + 'isupdatexunsearch' => 0, 'ispc' => $ispc, 'views' => $views, 'articleclassid' => $cid @@ -765,6 +766,7 @@ class Topic_model extends CI_Model { 'price' => $price, 'describtion' => $desrc, 'isphone' => $isphone, + 'isupdatexunsearch' => 0, 'ispc' => $ispc, 'views' => $views, 'articleclassid' => $cid @@ -773,7 +775,7 @@ class Topic_model extends CI_Model { 'id' => $id ) )->update ( 'topic', $data ); } - + if ($this->base->setting ['xunsearch_open']) { $topic = array (); $topic ['id'] = $id; @@ -953,7 +955,7 @@ class Topic_model extends CI_Model { function makeindex($startindex, $pagesize) { if ($this->base->setting ['xunsearch_open']) { $this->index->openBuffer (); - $query = $this->db->query ( "SELECT * FROM " . $this->db->dbprefix . "topic limit $startindex, $pagesize" ); + $query = $this->db->query ( "SELECT * FROM " . $this->db->dbprefix . "topic where state!=0 and isupdatexunsearch=0 order by viewtime desc limit $startindex, $pagesize" ); foreach ( $query->result_array () as $topic ) { $data = array (); @@ -976,6 +978,7 @@ class Topic_model extends CI_Model { $doc = new XSDocument (); $doc->setFields ( $data ); $this->index->update ( $doc )->flushIndex (); + $this->db->where(array('id'=>$topic['id']))->update('topic',array('isupdatexunsearch'=>1)); } $this->index->closeBuffer (); } diff --git a/application/views/default/index_lunbo.php b/application/views/default/index_lunbo.php index d6b5e1444b841362fc3ca9b5af5fe8955df4f38a..a4dea428903eef7455ebabdd69b8ef89b327c666 100644 --- a/application/views/default/index_lunbo.php +++ b/application/views/default/index_lunbo.php @@ -8,19 +8,16 @@