You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
information-system/application/models/infokeywords_model.php

168 lines
6.3 KiB
PHTML

<?php
class infoKeywords_model extends CI_Model
{
function __construct()
{
parent::__construct();
$this->HT = $this->load->database('HT', TRUE);
}
//获取结构列表
public function get_structure_list(){
$sql = "SELECT is1.is_id AS id,
is1.is_parent_id AS pId,
kw_keyworlds+'('+isnull((select top 1 kwr_rank from infoKeywordsrank where kwr_kw_id=kw_id order by kwr_id desc),'#')+')' as name,
kw_status AS status,
kw_id
FROM infoKeywords
INNER JOIN infoStructures is1 ON kw_is_id = is1.is_id
WHERE kw_sitecode = ?
ORDER BY is1.is_level ASC,
is1.is_sort ASC,
is1.is_path ASC";
$query = $this->HT->query($sql, array($this->config->item('site_code')));
return $query->result();
}
//添加关键词
public function add_keyworlds($kw_keyworlds,$kw_sitecode,$kw_datetime,$kw_is_id,$kw_status=0){
$sql = "INSERT INTO infoKeywords (
kw_keyworlds,
kw_sitecode,
kw_datetime,
kw_is_id,
kw_status
) VALUES (?,?,?,?,?)";
$query = $this->HT->query($sql, array($kw_keyworlds,$kw_sitecode,$kw_datetime,$kw_is_id,$kw_status));
return $this->HT->last_id('infoKeywords');
}
//编辑关键词
public function edit_keyworlds($kw_keyworld,$kw_id,$status){
$set_sql = "UPDATE infoKeywords
SET kw_keyworlds = ?,
kw_status = ?
WHERE kw_id = ?";
$result=$this->HT->query($set_sql, array($kw_keyworld,$status,$kw_id));
return $result;
}
public function update_time($kw_id){
$set_sql = "UPDATE infoKeywords
SET kw_datetime = ?
WHERE kw_id = ?";
$result=$this->HT->query($set_sql, array(time(),$kw_id));
return $result;
}
//删除关键词
public function delete($kw_id){
//删除关键词
$set_sql = "DELETE FROM infoKeywords WHERE kw_id = ?";
$result=$this->HT->query($set_sql, array($kw_id));
return $result;
}
//获取关键词列表用于抓取排名
public function get_keyworld_list($top=1,$engines='',$site_code=false)
{
$today = strtotime(date('Y-m-d'));
$mapsql="";
$map=" AND kw_datetime<'$today'";
if ($engines=='yandex') {
$mapsql="LEFT JOIN infoKeywordsrank ON kwr_kw_id=kw_id and kwr_datetime<'$today'";
$map=" AND kw_sitecode='ru' ";
}elseif ($engines=='baidu') {
$map.=" AND kw_sitecode='wt' ";
}elseif ($engines=='en') {
$map.=" AND kw_sitecode in ('cht','ct','sht','tbt','yz','gl','mbj','dct','mct','bht','ah') ";
}elseif ($engines=='eu') {
$map.=" AND kw_sitecode in ('gm','vc','vac','ru','it','jp') ";
}
//只查某个站点,原因是个事业部服务器分开,只需要查询本事业部站点即可
if(!empty($site_code)){
$map.=" AND kw_sitecode in ('$site_code') ";
}
$sql = "SELECT TOP $top kw_id,
kw_keyworlds,
kw_is_id,
kw_sitecode,
kw_datetime,
kw_status
FROM infoKeywords $mapsql
WHERE kw_status=1 $map
ORDER BY newid()";
$query = $this->HT->query($sql);
//print_r($this->HT->queries);
$result = $query->result();
return $result;
}
//根据关键词ID获取指定关键词
public function get_keyworld($keyworld_id)
{
$sql = "SELECT TOP 1 kw_id,
kw_keyworlds,
kw_is_id,
kw_sitecode,
kw_datetime,
kw_status
FROM infoKeywords
WHERE kw_id=?";
$query = $this->HT->query($sql,array($keyworld_id));
$result = $query->result();
if (!empty($result)) {
$result=$result[0];
}
return $result;
}
//根据结构ID获取关键词内容
public function get_keyworld_bytreeid($treeid){
$sql = "SELECT TOP 1
kw_keyworlds,
kw_is_id,
kw_id,
kw_sitecode,
kw_datetime,
kw_status
FROM infoKeywords
WHERE kw_sitecode = ? AND kw_is_id=?";
$query = $this->HT->query($sql, array($this->config->item('site_code'),$treeid));
$result = $query->result();
if (!empty($result)) {
$result=$result[0];
}
return $result;
}
//根据关键词获取指定关键词列表
public function get_keyworld_by_word($keyworld)
{
$sql = "SELECT TOP 30 kw_id,
kw_keyworlds,
isnull((select top 1 kwr_rank from infoKeywordsrank where kwr_kw_id=kw_id order by kwr_id desc),'#') as kw_rank,
kw_is_id,
kw_sitecode,
kw_datetime,
kw_status
FROM infoKeywords
WHERE kw_keyworlds like '%$keyworld%' AND kw_sitecode = ?";
$query = $this->HT->query($sql, array($this->config->item('site_code')));
return $query->result();
}
public function get_compare_rank($order='asc')
{
$m_datetime=date('Y-m-d 00:00:00');
$sql="SELECT top 50 *
FROM infoKeywords
INNER JOIN infosms on m_object_type='keywords_rank' and kw_id=m_object_id
WHERE kw_sitecode = ? and m_readed = 0 order by cast(cast(m_content AS CHAR(50)) as int) $order";
$query = $this->HT->query($sql, array($this->config->item('site_code'),$m_datetime));
return $query->result();
}
}