|
|
<?php |
|
|
namespace app\admin\controller; |
|
|
use think\Db; |
|
|
use app\common\util\Collection as cjOper; |
|
|
|
|
|
class Cj extends Base |
|
|
{ |
|
|
var $_isall=0; |
|
|
|
|
|
public function __construct() |
|
|
{ |
|
|
parent::__construct(); |
|
|
} |
|
|
|
|
|
|
|
|
public function index() |
|
|
{ |
|
|
$param = input(); |
|
|
$param['page'] = intval($param['page']) <1 ? 1 : $param['page']; |
|
|
$param['limit'] = intval($param['limit']) <1 ? $this->_pagesize : $param['limit']; |
|
|
$where=[]; |
|
|
|
|
|
$order='nodeid desc'; |
|
|
$res = model('Cj')->listData('cj_node',$where,$order,$param['page'],$param['limit']); |
|
|
|
|
|
$this->assign('list',$res['list']); |
|
|
$this->assign('total',$res['total']); |
|
|
$this->assign('page',$res['page']); |
|
|
$this->assign('limit',$res['limit']); |
|
|
|
|
|
$param['page'] = '{page}'; |
|
|
$param['limit'] = '{limit}'; |
|
|
$this->assign('param',$param); |
|
|
$this->assign('title',lang('admin/cj/title')); |
|
|
|
|
|
return $this->fetch('admin@cj/index'); |
|
|
} |
|
|
|
|
|
|
|
|
public function info() |
|
|
{ |
|
|
if (Request()->isPost()) { |
|
|
$param = input(); |
|
|
$data = $param['data']; |
|
|
$data['urlpage'] = (string)$param['urlpage'.$data['sourcetype']]; |
|
|
if(!empty($data['customize_config'])){ |
|
|
$customize_config = $data['customize_config']; |
|
|
unset($data['customize_config']); |
|
|
foreach ($customize_config['name'] as $k => $v) { |
|
|
if (empty($v) || empty($customize_config['name'][$k])) continue; |
|
|
$data['customize_config'][] = array('name'=>$customize_config['name'][$k], 'en_name'=>$customize_config['en_name'][$k], 'rule'=>$customize_config['rule'][$k], 'html_rule'=>$customize_config['html_rule'][$k]); |
|
|
} |
|
|
$data['customize_config'] = json_encode($data['customize_config'],JSON_FORCE_OBJECT); |
|
|
} |
|
|
$res = model('Cj')->saveData($data); |
|
|
if($res['code']>1){ |
|
|
return $this->error($res['msg']); |
|
|
} |
|
|
return $this->success($res['msg']); |
|
|
} |
|
|
|
|
|
$id = input('id'); |
|
|
$where=[]; |
|
|
$where['nodeid'] = ['eq',$id]; |
|
|
$res = model('Cj')->infoData('cj_node',$where); |
|
|
if(!empty($res['info']['customize_config'])){ |
|
|
$res['info']['customize_config'] = json_decode($res['info']['customize_config'],true); |
|
|
} |
|
|
$this->assign('data',$res['info']); |
|
|
$this->assign('title',lang('admin/cj/title')); |
|
|
return $this->fetch('admin@cj/info'); |
|
|
} |
|
|
|
|
|
public function program() |
|
|
{ |
|
|
$param = input(); |
|
|
$where=[]; |
|
|
$where['nodeid'] = $param['id']; |
|
|
$res = model('Cj')->infoData('cj_node',$where); |
|
|
if($res['code']>1){ |
|
|
return $this->error($res['msg']); |
|
|
} |
|
|
|
|
|
if (Request()->isPost()) { |
|
|
$program_config = []; |
|
|
foreach($param['model_field'] as $k=>$v){ |
|
|
if(!empty($param['node_field'][$k])){ |
|
|
$program_config['map'][$v] = $param['node_field'][$k]; |
|
|
$program_config['funcs'][$v] = $param['funcs'][$k]; |
|
|
} |
|
|
} |
|
|
$update=[]; |
|
|
$update['nodeid'] = $param['id']; |
|
|
$update['program_config'] = json_encode($program_config); |
|
|
$res = model('Cj')->saveData($update); |
|
|
if($res['code']>1){ |
|
|
return $this->error(lang('save_err')); |
|
|
} |
|
|
return $this->success(lang('save_ok')); |
|
|
} |
|
|
|
|
|
$program_config = []; |
|
|
if(!empty($res['info']['program_config'])){ |
|
|
$program_config = json_decode($res['info']['program_config'],true); |
|
|
} |
|
|
$this->assign('program_config',$program_config); |
|
|
|
|
|
|
|
|
$node_field = array('title'=>lang('title'),'type'=>lang('type'), 'content'=>lang('content')); |
|
|
$customize_config = []; |
|
|
if(!empty($res['info']['customize_config'])){ |
|
|
$customize_config = json_decode($res['info']['customize_config'],true); |
|
|
} |
|
|
|
|
|
if (is_array($customize_config)) foreach ($customize_config as $k=>$v) { |
|
|
if (empty($v['en_name']) || empty($v['name'])) continue; |
|
|
$node_field[$v['en_name']] = $v['name']; |
|
|
} |
|
|
$this->assign('node_field',$node_field); |
|
|
|
|
|
$table = 'vod'; |
|
|
if($res['info']['mid'] =='2'){ |
|
|
$table='art'; |
|
|
} |
|
|
$column_list = Db::query('SHOW COLUMNS FROM '.config('database.prefix').$table); |
|
|
$this->assign('column_list',$column_list); |
|
|
$this->assign('param',$param); |
|
|
return $this->fetch('admin@cj/program'); |
|
|
} |
|
|
|
|
|
public function col_all($param) |
|
|
{ |
|
|
$this->_isall=1; |
|
|
$this->col_url($param); |
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
public function col_url($param=[]) { |
|
|
if(empty($param)){ |
|
|
$param = input(); |
|
|
} |
|
|
|
|
|
$where=[]; |
|
|
$where['nodeid'] = $param['id']; |
|
|
$res = model('Cj')->infoData('cj_node',$where); |
|
|
if($res['code']>1){ |
|
|
return $this->error($res['msg']); |
|
|
} |
|
|
$data = $res['info']; |
|
|
$collection = new cjOper(); |
|
|
$urls = $collection->url_list($data); |
|
|
|
|
|
$total_page = count($urls); |
|
|
if (empty($total_page)){ |
|
|
return $this->error(lang('admin/cj/url_list_err')); |
|
|
} |
|
|
|
|
|
$param['page'] = isset($param['page']) ? intval($param['page']) : 1; |
|
|
|
|
|
$url_list = $urls[$param['page']-1]; |
|
|
$url = $collection->get_url_lists($url_list, $data); |
|
|
|
|
|
$total = count($url); |
|
|
$re = 0; |
|
|
if (is_array($url) && !empty($url)) { |
|
|
foreach ($url as $v) { |
|
|
if (empty($v['url']) || empty($v['title'])) { |
|
|
$re++; |
|
|
continue; |
|
|
} |
|
|
$v['title'] = strip_tags($v['title']); |
|
|
$md5 = md5($v['url']); |
|
|
$where=[]; |
|
|
$where['md5'] = $md5; |
|
|
$history = model('Cj')->infoData('cj_history',$where); |
|
|
if($history['code']>1){ |
|
|
Db::name('cj_history')->insert(array('md5' => $md5)); |
|
|
Db::name('cj_content')->insert(array('nodeid'=>$param['id'], 'status'=>1, 'url'=>$v['url'], 'title'=>$v['title'])); |
|
|
} |
|
|
else { |
|
|
$re++; |
|
|
} |
|
|
} |
|
|
} |
|
|
if ($total_page <= $param['page']) { |
|
|
$time = time(); |
|
|
Db::name('cj_node')->where('nodeid',$param['id'])->update(array('lastdate' => $time)); |
|
|
} |
|
|
if($this->_isall==1){ |
|
|
mac_echo(lang('admin/cj/url_cj_complete')); |
|
|
$this->col_content($param); |
|
|
exit; |
|
|
} |
|
|
$this->assign('param',$param); |
|
|
$this->assign('url_list', $url_list); |
|
|
$this->assign('total_page', $total_page); |
|
|
$this->assign('re', $re); |
|
|
$this->assign('url', $url); |
|
|
$this->assign('page',$param['page']); |
|
|
$this->assign('total',$total); |
|
|
$this->assign('title',lang('admin/cj/url/title')); |
|
|
if($total_page > $param['page']){ |
|
|
mac_echo(lang('server_rest')); |
|
|
$param['page'] ++; |
|
|
$link = url('cj/col_url') . '?'. http_build_query($param); |
|
|
mac_jump( $link ,3); |
|
|
} |
|
|
else{ |
|
|
mac_echo(lang('admin/cj/url_cj_complete')); |
|
|
} |
|
|
return $this->fetch('admin@cj/col_url'); |
|
|
} |
|
|
|
|
|
|
|
|
public function col_content($param=[]) { |
|
|
if(empty($param)){ |
|
|
$param = input(); |
|
|
} |
|
|
|
|
|
$collection = new cjOper(); |
|
|
$page = isset($_GET['page']) ? intval($_GET['page']) : 1; |
|
|
$total = isset($_GET['total']) ? intval($_GET['total']) : 0; |
|
|
|
|
|
$where=[]; |
|
|
$where['nodeid'] = $param['id']; |
|
|
$res = model('Cj')->infoData('cj_node',$where); |
|
|
if($res['code']>1){ |
|
|
return $this->error($res['msg']); |
|
|
} |
|
|
$data = $res['info']; |
|
|
|
|
|
mac_echo('<style type="text/css">body{font-size:12px;color: #333333;line-height:21px;}span{font-weight:bold;color:#FF0000}</style>'); |
|
|
|
|
|
if(empty($total)){ |
|
|
$total = Db::name('cj_content')->where('nodeid',$param['id'])->where('status',1)->count(); |
|
|
} |
|
|
$limit = 20; |
|
|
$total_page = ceil($total/$limit); |
|
|
mac_echo(lang('admin/cj/content/tip',[$total,$total_page,$limit,$page])); |
|
|
|
|
|
$list = Db::name('cj_content')->where('nodeid',$param['id'])->where('status',1)->page($total_page-1,$limit)->select(); |
|
|
|
|
|
$i = 0; |
|
|
$ids=[]; |
|
|
if(!empty($list) && is_array($list)){ |
|
|
foreach($list as $v){ |
|
|
$html = $collection->get_content($v['url'],$data); |
|
|
Db::name('cj_content')->where('id',$v['id'])->update(['status'=>2, 'data'=>json_encode($html)]); |
|
|
$ids[] = $v['id']; |
|
|
$i++; |
|
|
|
|
|
mac_echo($v['url'].' '.'ok'); |
|
|
} |
|
|
} |
|
|
else{ |
|
|
mac_echo(lang('admin/cj/content_cj_complete')); |
|
|
exit; |
|
|
} |
|
|
|
|
|
if($this->_isall==1){ |
|
|
mac_echo(lang('admin/cj/content_cj_complete')); |
|
|
$param['ids'] = implode(',',$ids); |
|
|
$param['limit'] = 999; |
|
|
$this->content_into($param); |
|
|
exit; |
|
|
} |
|
|
|
|
|
if ($total_page > $page){ |
|
|
mac_echo(lang('server_rest')); |
|
|
$param['page'] ++; |
|
|
$link = url('cj/col_content') . '?'. http_build_query($param); |
|
|
mac_jump( $link ,3); |
|
|
} |
|
|
else{ |
|
|
$time = time(); |
|
|
Db::name('cj_node')->where('nodeid',$param['id'])->update(array('lastdate' => $time)); |
|
|
mac_echo(lang('admin/cj/cj_complete')); |
|
|
exit; |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
public function publish() |
|
|
{ |
|
|
$param = input(); |
|
|
|
|
|
$param['page'] = intval($param['page']) <1 ? 1 : $param['page']; |
|
|
$param['limit'] = intval($param['limit']) <20 ? $this->_pagesize : $param['limit']; |
|
|
$where=[]; |
|
|
$where['nodeid'] = $param['id']; |
|
|
if(!empty($param['status'])){ |
|
|
$where['status'] = ['eq',$param['status']]; |
|
|
} |
|
|
|
|
|
$order='id desc'; |
|
|
$res = model('Cj')->listData('cj_content',$where,$order,$param['page'],$param['limit']); |
|
|
|
|
|
$this->assign('list',$res['list']); |
|
|
$this->assign('total',$res['total']); |
|
|
$this->assign('page',$res['page']); |
|
|
$this->assign('limit',$res['limit']); |
|
|
|
|
|
$param['page'] = '{page}'; |
|
|
$param['limit'] = '{limit}'; |
|
|
$this->assign('param',$param); |
|
|
$this->assign('title',lang('admin/cj/publish/title')); |
|
|
|
|
|
return $this->fetch('admin@cj/publish'); |
|
|
} |
|
|
|
|
|
public function show() |
|
|
{ |
|
|
$id = input('id'); |
|
|
$where=[]; |
|
|
$where['id'] = ['eq',$id]; |
|
|
$info = Db::name('cj_content')->where($where)->find(); |
|
|
if(!empty($info['data'])){ |
|
|
$info['data'] = @json_decode($info['data'],true); |
|
|
} |
|
|
$this->assign('info',$info); |
|
|
$this->assign('title',lang('admin/cj/title')); |
|
|
return $this->fetch('admin@cj/show'); |
|
|
|
|
|
} |
|
|
|
|
|
public function content_del() |
|
|
{ |
|
|
$param = input(); |
|
|
$ids = $param['ids']; |
|
|
$all = $param['all']; |
|
|
|
|
|
if(!empty($ids)){ |
|
|
$where=[]; |
|
|
$where['id'] = ['in',$ids]; |
|
|
if($all=='1'){ |
|
|
$where['id'] = ['gt',0]; |
|
|
} |
|
|
$urls = []; |
|
|
$list = Db::name('cj_content')->field('url')->where($where)->select(); |
|
|
foreach ($list as $k => $v) { |
|
|
$md5 = md5($v['url']); |
|
|
$urls[] = $md5; |
|
|
} |
|
|
|
|
|
$where2=[]; |
|
|
$where2['md5'] = ['in',$md5]; |
|
|
Db::name('cj_history')->where($where2)->delete(); |
|
|
|
|
|
$res = Db::name('cj_content')->where($where)->delete(); |
|
|
if($res===false){ |
|
|
return $this->error(lang('del_err').''.$this->getError()); |
|
|
} |
|
|
} |
|
|
return $this->success(lang('del_ok')); |
|
|
} |
|
|
|
|
|
public function content_into($param=[]) |
|
|
{ |
|
|
if(empty($param)){ |
|
|
$param = input(); |
|
|
} |
|
|
|
|
|
$nodeid = $param['id']; |
|
|
$ids = $param['ids']; |
|
|
$all = $param['all']; |
|
|
$param['page'] = intval($param['page']) <1 ? 1 : $param['page']; |
|
|
$param['limit'] = intval($param['limit']) <20 ? $this->_pagesize : $param['limit']; |
|
|
|
|
|
$where=[]; |
|
|
$where['nodeid'] = $param['id']; |
|
|
$res = model('Cj')->infoData('cj_node',$where); |
|
|
if($res['code']>1){ |
|
|
return $this->error($res['msg']); |
|
|
} |
|
|
$node = $res['info']; |
|
|
$where=[]; |
|
|
$where['nodeid'] = $nodeid; |
|
|
$where['status'] =['eq',2]; |
|
|
$where['id'] = ['in',$ids]; |
|
|
if($all=='1'){ |
|
|
$where['id'] = ['gt',0]; |
|
|
} |
|
|
|
|
|
mac_echo('<style type="text/css">body{font-size:12px;color: #333333;line-height:21px;}span{font-weight:bold;color:#FF0000}</style>'); |
|
|
if(empty($param['total'])) { |
|
|
$param['total'] = Db::name('cj_content')->where($where)->count(); |
|
|
} |
|
|
|
|
|
$list = Db::name('cj_content')->where($where)->page($param['page'],$param['limit'])->select(); |
|
|
|
|
|
$total_page = ceil($param['total']/$param['limit']); |
|
|
mac_echo(lang('admin/cj/content_into/tip',[$param['total'],$total_page,$param['limit'],$param['page']])); |
|
|
|
|
|
$program_config =[]; |
|
|
if(!empty($node['program_config'])){ |
|
|
$program_config = json_decode($node['program_config'],true); |
|
|
} |
|
|
|
|
|
$inter = mac_interface_type(); |
|
|
$update_ids = []; |
|
|
foreach($list as $k=>$v){ |
|
|
$data=[]; |
|
|
$content_data = json_decode($v['data'],true); |
|
|
foreach ($program_config['map'] as $a=>$b) { |
|
|
if (isset($program_config['funcs'][$a]) && function_exists($program_config['funcs'][$a])) { |
|
|
$data['data'][$k][$a] = $program_config['funcs'][$a]($v['data'][$b]); |
|
|
} |
|
|
else { |
|
|
$data['data'][$k][$a] = $content_data[$b]; |
|
|
} |
|
|
if($b=='type' && !is_numeric($content_data[$b])) { |
|
|
|
|
|
if($node['mid'] ==2 ) { |
|
|
$data['data'][$k][$a] = $inter['arttype'][$content_data[$b]]; |
|
|
} |
|
|
else{ |
|
|
$data['data'][$k][$a] = $inter['vodtype'][$content_data[$b]]; |
|
|
} |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
if($node['mid'] == '2'){ |
|
|
$res = model('Collect')->art_data([],$data,0); |
|
|
} |
|
|
else{ |
|
|
$res = model('Collect')->vod_data([],$data,0); |
|
|
} |
|
|
if($res['code'] ==1){ |
|
|
$update_ids[] = $v['id']; |
|
|
} |
|
|
mac_echo($res['msg']); |
|
|
} |
|
|
|
|
|
if(!empty($update_ids)){ |
|
|
$where=[]; |
|
|
$where['id'] = ['in',$update_ids]; |
|
|
$res = Db::name('cj_content')->where($where)->update(['status' => 3]); |
|
|
} |
|
|
|
|
|
if($this->_isall==1){ |
|
|
mac_echo(lang('admin/cj/content_into/complete')); |
|
|
exit; |
|
|
} |
|
|
|
|
|
|
|
|
if ($total_page > $param['page']){ |
|
|
mac_echo(lang('server_rest')); |
|
|
$param['page'] ++; |
|
|
$link = url('cj/content_into') . '?'. http_build_query($param); |
|
|
mac_jump( $link ,3); |
|
|
} |
|
|
else{ |
|
|
mac_echo(lang('import_ok')); |
|
|
exit; |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
public function show_url() |
|
|
{ |
|
|
$param = input(); |
|
|
$data = $param['data']; |
|
|
$data['urlpage'] = (string)$param['urlpage'.$data['sourcetype']]; |
|
|
$collection = new cjOper(); |
|
|
$urls = $collection->url_list($data); |
|
|
|
|
|
$this->assign('urls',$urls); |
|
|
|
|
|
return $this->fetch('admin@cj/show_url'); |
|
|
} |
|
|
|
|
|
public function del() |
|
|
{ |
|
|
$param = input(); |
|
|
$ids = $param['ids']; |
|
|
|
|
|
if(!empty($ids)){ |
|
|
$where=[]; |
|
|
$where['nodeid'] = ['in',$ids]; |
|
|
$res = model('Cj')->delData($where); |
|
|
if($res['code']>1){ |
|
|
return $this->error($res['msg']); |
|
|
} |
|
|
return $this->success($res['msg']); |
|
|
} |
|
|
return $this->error(lang('param_err')); |
|
|
} |
|
|
|
|
|
public function export() |
|
|
{ |
|
|
$param = input(); |
|
|
|
|
|
$where=[]; |
|
|
$where['nodeid'] = $param['id']; |
|
|
$res = model('Cj')->infoData('cj_node',$where); |
|
|
if($res['code']>1){ |
|
|
return $this->error($res['msg']); |
|
|
} |
|
|
$node = $res['info']; |
|
|
|
|
|
header("Content-type: application/octet-stream"); |
|
|
if(strpos($_SERVER['HTTP_USER_AGENT'], "MSIE")) { |
|
|
header("Content-Disposition: attachment; filename=mac_cj_" . urlencode($node['name']) . '.txt'); |
|
|
} |
|
|
else{ |
|
|
header("Content-Disposition: attachment; filename=mac_cj_" . $node['name'] . '.txt'); |
|
|
} |
|
|
echo base64_encode(json_encode($node)); |
|
|
} |
|
|
|
|
|
public function import() |
|
|
{ |
|
|
$file = $this->request->file('file'); |
|
|
$info = $file->rule('uniqid')->validate(['size' => 10240000, 'ext' => 'txt']); |
|
|
if ($info) { |
|
|
$data = json_decode(base64_decode(file_get_contents($info->getpathName())), true); |
|
|
@unlink($info->getpathName()); |
|
|
if($data){ |
|
|
unset($data['nodeid']); |
|
|
$res = model('Cj')->saveData($data); |
|
|
if($res['code']>1){ |
|
|
return $this->success($res['msg']); |
|
|
} |
|
|
return $this->success($res['msg']); |
|
|
} |
|
|
return $this->success(lang('import_err')); |
|
|
} |
|
|
else{ |
|
|
return $this->error($file->getError()); |
|
|
} |
|
|
} |
|
|
} |
|
|
|