table('ey_citysite')
->where(['level'=>1,'is_open'=>1,'status'=>1])
->select();
//dump($area);
$area[] = [
'id' => 10000,
];
foreach ($area as $index => $item) {
//查找最后创建时间create_time
$add_time = Db::name('cms_product')
->where(['catid'=>2,'diqu'=>$item['id']]) //产品大类
->order('add_time desc')
->value('add_time');
//dump($create_time);
if(empty($add_time)){
$add_time = 0;
}
//不考虑分批次
$list = Db::connect('db1')
->table('ey_arctype')
->where(['topid'=>38,'area_id'=>$item['id'],'is_del'=>0])
->where('add_time','>',$add_time)
->select();
//dump($list);
foreach ($list as $key=>$row){
$one = Db::name('cms_product')->where([
'catid' => 2,
'aid' => $row['id'],
'diqu' => $item['id'],
'pid' => 0,
])->find();
if(empty($one)){
//插入数据库
$insert_data = [
'catid' => 2,
'title' => $row['typename'],
'add_time' => $row['add_time'],
'create_time' => time(),
'update_time' => time(),
'status' => 1,
'diqu' => $item['id'],
'pid' => 0,
'aid' => $row['id'],
'site_id' => 1,
'link' => ''
];
$run = Db::name('cms_product')->insert($insert_data);
echo '插入'.$run.'条,产品id: '.$row['id'].'
';
}else{
echo '插入0条,产品id: '.$row['id'].'已存在
';
}
}
}
}
/*
* 同步产品接口 - 小类
* http://console.zx2049.com/api/cms/getProductSmall
*/
public function getProductSmall()
{
//查找最后创建时间create_time
$add_time = Db::name('cms_product')
->where(['catid'=>3]) //产品小类
->order('add_time desc')
->value('add_time');
//dump($create_time);
if(empty($add_time)){
$add_time = 0;
}
//不考虑分批次
$list = Db::connect('db1')
->table('ey_arctype_cat')
->where(['is_del'=>0])
->where('add_time','>',$add_time)
->select();
//dump($list);
foreach ($list as $key=>$row){
//查找上级所属区域id
$area_id = Db::connect('db1')->table('ey_arctype')->where(['id'=>$row['parent_id']])->value('area_id');
if(empty($area_id)){
$area_id = 0;
}
$one = Db::name('cms_product')->where([
'catid' => 3,
'aid' => $row['id'],
'diqu' => $area_id,
'pid' => 0,
])->find();
if(empty($one)){
//插入数据库
$insert_data = [
'catid' => 3,
'title' => $row['typename'],
'add_time' => $row['add_time'],
'create_time' => time(),
'update_time' => time(),
'status' => 1,
'diqu' => $area_id,
'pid' => $row['parent_id'],
'aid' => $row['id'],
'site_id' => 1,
'link' => ''
];
$run = Db::name('cms_product')->insert($insert_data);
echo '插入'.$run.'条,产品id: '.$row['id'].'
';
}else{
echo '插入0条,产品id: '.$row['id'].'已存在
';
}
}
}
/*
* 同步删除操作
* 增加字段 is_del 和 delete_time
* 同步删除时间和是否删除
* 目前先在发文的时候判断是否已删除就行
*/
public function delHandle()
{
}
/*
* 存在小类就不创建发文任务,因为只有概述
* 小类肯定都发文
* 一个产品发一篇 不按级别 级别作为轮询为发文内容
* 标签为 产品名+申报 (这个固定不变) 另 产品名与标签名 发生修改 不做统一校验
* 同时判断产品是否正常(非删除状态)
* 每一轮为一个定时任务 因为产品是不断增加的 同时任务也是不断增加的
* 每一轮的任务分组不一样 会持续不断发文 对应发文模板也不一样
* 参数 任务分组id
* http://console.zx2049.com/api/cms/createTask?taskid=10
*/
public function createTask()
{
$taskid = $this->request->get('taskid',0);
if((int)$taskid === 0){
$this->error('fail');
}
//查询
$add_time = Db::table('yzn_task')
->where(['catid'=>$taskid])
->order('add_time desc')
->value('add_time');
if(empty($add_time)){
$add_time = 0;
}
//不做分批次处理
//新赠的产品 大类
$list = Db::table('yzn_cms_product')
->where(['status'=>1]) //,'catid'=>2 不管是大类还是小类
->where('add_time','>',$add_time)
->select();
foreach ($list as $key=>$row){
$one = Db::name('task')->where([
'catid' => $taskid,
'aid' => $row['aid'],
'diqu' => $row['diqu'],
'yid' => $row['catid'],
'cid' => 111,
])->find();
if(empty($one)){
//插入数据库
$insert_data = [
'catid' => $taskid, //任务分组id
'title' => $row['title'],
'add_time' => $row['add_time'],
'create_time' => time(),
'update_time' => time(),
'status' => 0, //初始状态为0 未执行
'diqu' => $row['diqu'],
'yid' => $row['catid'], //产品大类还是小类
'aid' => $row['aid'], //产品id
'site_id' => 1,
'link' => '', //文章链接
'tagid' => 0, //标签id 初始为0
'cid' => 111, //常见问题
'run_time' => time(),
'is_run' => 0
];
$run = Db::name('task')->insert($insert_data);
echo '插入'.$run.'条,产品id: '.$row['aid'].'-'.$row['title'].'
';
}else{
echo '插入0条,产品id: '.$row['aid'].'-'.$row['title'].'已存在
';
}
}
}
/*
* {"1":"广东","30":"福建","6872":"陕西","6791":"西藏","6645":"云南","6344":"四川","6303":"重庆","6003":"海南","5879":"广西","5742":"湖南","5625":"湖北","5448":"河南","5179":"江西","5056":"安徽","4833":"江苏","4813":"上海","4667":"黑龙江","4589":"吉林","4474":"辽宁","4228":"山西","4042":"河北","4023":"天津","4003":"浙江","6547":"贵州","4359":"内蒙古","4004":"北京","6990":"甘肃","7092":"青海","7144":"宁夏","7171":"新疆","10000":"主站"}
*
* http://console.zx2049.com/api/cms/tagHandle?taskid=10&diqu=1
http://console.zx2049.com/api/cms/tagHandle?taskid=10&diqu=30
http://console.zx2049.com/api/cms/tagHandle?taskid=10&diqu=6872
http://console.zx2049.com/api/cms/tagHandle?taskid=10&diqu=6791
http://console.zx2049.com/api/cms/tagHandle?taskid=10&diqu=6645
http://console.zx2049.com/api/cms/tagHandle?taskid=10&diqu=6344
http://console.zx2049.com/api/cms/tagHandle?taskid=10&diqu=6303
http://console.zx2049.com/api/cms/tagHandle?taskid=10&diqu=6003
http://console.zx2049.com/api/cms/tagHandle?taskid=10&diqu=5879
http://console.zx2049.com/api/cms/tagHandle?taskid=10&diqu=5742
http://console.zx2049.com/api/cms/tagHandle?taskid=10&diqu=5625
http://console.zx2049.com/api/cms/tagHandle?taskid=10&diqu=5448
http://console.zx2049.com/api/cms/tagHandle?taskid=10&diqu=5179
http://console.zx2049.com/api/cms/tagHandle?taskid=10&diqu=5056
http://console.zx2049.com/api/cms/tagHandle?taskid=10&diqu=4833
http://console.zx2049.com/api/cms/tagHandle?taskid=10&diqu=4813
http://console.zx2049.com/api/cms/tagHandle?taskid=10&diqu=4667
http://console.zx2049.com/api/cms/tagHandle?taskid=10&diqu=4589
http://console.zx2049.com/api/cms/tagHandle?taskid=10&diqu=4474
http://console.zx2049.com/api/cms/tagHandle?taskid=10&diqu=4228
http://console.zx2049.com/api/cms/tagHandle?taskid=10&diqu=4042
http://console.zx2049.com/api/cms/tagHandle?taskid=10&diqu=4023
http://console.zx2049.com/api/cms/tagHandle?taskid=10&diqu=4003
http://console.zx2049.com/api/cms/tagHandle?taskid=10&diqu=6547
http://console.zx2049.com/api/cms/tagHandle?taskid=10&diqu=4359
http://console.zx2049.com/api/cms/tagHandle?taskid=10&diqu=4004
http://console.zx2049.com/api/cms/tagHandle?taskid=10&diqu=6990
http://console.zx2049.com/api/cms/tagHandle?taskid=10&diqu=7092
http://console.zx2049.com/api/cms/tagHandle?taskid=10&diqu=7144
http://console.zx2049.com/api/cms/tagHandle?taskid=10&diqu=7171
http://console.zx2049.com/api/cms/tagHandle?taskid=10&diqu=10000
*/
public function tagHandle()
{
$taskid = $this->request->get('taskid',0);
if((int)$taskid === 0){
$this->error('fail');
}
//地区参数
$diqu = $this->request->get('diqu',0);
if((int)$diqu === 0){
$this->error('fail');
}
$page = 1;
$list = Db::name('task')->where([
'catid' => $taskid, //任务分组id
'tagid' => 0,
'status' => 0,
'diqu' => (int)$diqu
])
->order('add_time asc')->paginate(1);
$list = $list->toArray();
$data = $list['data'];
if(empty($data)){
$this->error('fail',['ko'=>'不存在数据']);
}
foreach ($data as $index => $row) {
//获取标签
$tagname = $this->getName($row['title']);
$tagname = $tagname.'申报';
if((int)$row['diqu'] === 10000){
$diqu = 0; //山东地区变为主页 区域为0
}else{
$diqu = $row['diqu'];
}
$one = Db::connect('db1')->table('ey_archives')
->where(['typeid' => 523,'province_id'=>$diqu,'is_del'=>0])
->where('title',$tagname)
->find();
if(empty($one)){
//不存在
//判断是否需要增加标签
//远程判断产品状态
if((int)$row['yid'] === 2) {
//大类
$one = Db::connect('db1')->table('ey_arctype')->where(['id' => $row['aid']])->find();
}else if((int)$row['yid'] === 3) {
//小类
$one = Db::connect('db1')->table('ey_arctype_cat')->where(['id' => $row['aid']])->find();
}else{
//任务异常 退出
$this->error('fail');
}
if((int)$one['is_del'] === 1 || (int)$one['status'] === 0){
//已删除
Db::name('task')->where(['id'=>$row['id']])->update([
'is_run' => 4, //执行异常
'run_time' => time(),
'status' => 1,
]);
$this->error('fail',['is_run'=>4]);
}
//是否只有一个页面 (远程)
if((int)$row['yid'] === 2) {
//大类
$count = Db::connect('db1')->table('ey_archives')->where(['typeid' => $row['aid'],'product_id'=>0,'is_del'=>0])->count();
}else if((int)$row['yid'] === 3) {
//小类
$count = Db::connect('db1')->table('ey_archives')->where(['product_id' => $row['aid'],'is_del'=>0])->count();
}else{
//任务异常 退出
$this->error('fail');
}
//dump($count);
if($count <= 1) {
//只有一个主页 概述
Db::name('task')->where(['id' => $row['id']])->update([
'is_run' => 3, //执行忽略
'run_time' => time(),
'status' => 1,
]);
$this->error('fail',['is_run'=>3]);
}
//创建标签
$insert_data = [
'typeid' => 523,
'status' => 1,
'is_del' => 0,
'channel' => 101,
'click' => rand(500,5000),
'arcrank' => 0,
'add_time' => time(),
'update_time' => time(),
'province_id' => (int)$diqu,
'product_tag_id' => 0, //由其他任务处理
'title' => $tagname,
];
//执行插入
$aid = Db::connect('db1')->table('ey_archives')->insertGetId($insert_data);
if((int)$aid > 0) {
//增加详情
$insert_data_content = [
'aid' => $aid,
'add_time' => time(),
'update_time' => time()
];
Db::connect('db1')->table('ey_suipian_content')->insert($insert_data_content);
}
//更新任务 标签id
Db::name('task')->where(['id' => $row['id']])->update([
'tagid' => $aid,
]);
$this->success('成功');
}else{
//写入标签id 到 任务记录
Db::name('task')->where(['id' => $row['id']])->update([
'tagid' => $one['aid'],
]);
$this->success('成功');
}
}
}
/*
* 执行
* 增加字段 is_run 未执行0 执行成功1 执行失败2(远程响应错误) 执行忽略3(存在小类或无级别-只有一个主页) 产品异常4(删除或未审核或屏蔽)
* run_time 执行时间
* is_run = 0 每次处理10条
*
* {"1":"广东","30":"福建","6872":"陕西","6791":"西藏","6645":"云南","6344":"四川","6303":"重庆","6003":"海南","5879":"广西","5742":"湖南","5625":"湖北","5448":"河南","5179":"江西","5056":"安徽","4833":"江苏","4813":"上海","4667":"黑龙江","4589":"吉林","4474":"辽宁","4228":"山西","4042":"河北","4023":"天津","4003":"浙江","6547":"贵州","4359":"内蒙古","4004":"北京","6990":"甘肃","7092":"青海","7144":"宁夏","7171":"新疆","10000":"主站"}
*
* http://console.zx2049.com/api/cms/taskHandle?taskid=10&diqu=1
http://console.zx2049.com/api/cms/taskHandle?taskid=10&diqu=30
http://console.zx2049.com/api/cms/taskHandle?taskid=10&diqu=6872
http://console.zx2049.com/api/cms/taskHandle?taskid=10&diqu=6791
http://console.zx2049.com/api/cms/taskHandle?taskid=10&diqu=6645
http://console.zx2049.com/api/cms/taskHandle?taskid=10&diqu=6344
http://console.zx2049.com/api/cms/taskHandle?taskid=10&diqu=6303
http://console.zx2049.com/api/cms/taskHandle?taskid=10&diqu=6003
http://console.zx2049.com/api/cms/taskHandle?taskid=10&diqu=5879
http://console.zx2049.com/api/cms/taskHandle?taskid=10&diqu=5742
http://console.zx2049.com/api/cms/taskHandle?taskid=10&diqu=5625
http://console.zx2049.com/api/cms/taskHandle?taskid=10&diqu=5448
http://console.zx2049.com/api/cms/taskHandle?taskid=10&diqu=5179
http://console.zx2049.com/api/cms/taskHandle?taskid=10&diqu=5056
http://console.zx2049.com/api/cms/taskHandle?taskid=10&diqu=4833
http://console.zx2049.com/api/cms/taskHandle?taskid=10&diqu=4813
http://console.zx2049.com/api/cms/taskHandle?taskid=10&diqu=4667
http://console.zx2049.com/api/cms/taskHandle?taskid=10&diqu=4589
http://console.zx2049.com/api/cms/taskHandle?taskid=10&diqu=4474
http://console.zx2049.com/api/cms/taskHandle?taskid=10&diqu=4228
http://console.zx2049.com/api/cms/taskHandle?taskid=10&diqu=4042
http://console.zx2049.com/api/cms/taskHandle?taskid=10&diqu=4023
http://console.zx2049.com/api/cms/taskHandle?taskid=10&diqu=4003
http://console.zx2049.com/api/cms/taskHandle?taskid=10&diqu=6547
http://console.zx2049.com/api/cms/taskHandle?taskid=10&diqu=4359
http://console.zx2049.com/api/cms/taskHandle?taskid=10&diqu=4004
http://console.zx2049.com/api/cms/taskHandle?taskid=10&diqu=6990
http://console.zx2049.com/api/cms/taskHandle?taskid=10&diqu=7092
http://console.zx2049.com/api/cms/taskHandle?taskid=10&diqu=7144
http://console.zx2049.com/api/cms/taskHandle?taskid=10&diqu=7171
http://console.zx2049.com/api/cms/taskHandle?taskid=10&diqu=10000
*
*/
public function taskHandle()
{
$taskid = $this->request->get('taskid',0);
if((int)$taskid === 0){
$this->error('fail');
}
//地区参数
$diqu = $this->request->get('diqu',0);
if((int)$diqu === 0){
$this->error('fail');
}
//查询未执行的任务
$page = 1;
$list = Db::name('task')->where([
'catid' => $taskid, //任务分组id
'is_run' => 0,
'status' => 0,
'diqu' => (int)$diqu
])
->where('tagid','>',0) //标签id需要已经获取到的
->order('add_time asc')->paginate(1);
$list = $list->toArray();
$data = $list['data'];
//dump($data);die;
if(empty($data)){
$this->error('fail',['ko'=>'不存在数据']);
}
/*
* 跨库 无法保证远程和本地的事务一致性
* 这种机制 类似 支付
* 先简单处理
*/
foreach ($data as $index => $row) {
//远程判断产品状态
/*if((int)$row['yid'] === 2) {
//大类
$one = Db::connect('db1')->table('ey_arctype')->where(['id' => $row['aid']])->find();
}else if((int)$row['yid'] === 3) {
//小类
$one = Db::connect('db1')->table('ey_arctype_cat')->where(['id' => $row['aid']])->find();
}else{
//任务异常 退出
return false;
}
if((int)$one['is_del'] === 1 || (int)$one['status'] === 0){
//已删除
Db::name('task')->where(['id'=>$row['id']])->update([
'is_run' => 4, //执行异常
'run_time' => time(),
'status' => 1,
]);
return false;
}*/
/*
*
*
//不管有没有小类 只有一个主页 就执行忽略
if((int)$row['yid'] === 2) {
//该任务记录 为 大类 产品
//是否存在小类(控制台产品不保证是最新数据 采用远程判断)
Db::connect('db1')->table('ey_arctype_cat')->where(['parent_id' => $row['aid']])->find();
}*/
//是否只有一个页面 (远程)
/*if((int)$row['yid'] === 2) {
//大类
$count = Db::connect('db1')->table('ey_archives')->where(['typeid' => $row['aid'],'product_id'=>0,'is_del'=>0])->count();
}else if((int)$row['yid'] === 3) {
//小类
$count = Db::connect('db1')->table('ey_archives')->where(['product_id' => $row['aid'],'is_del'=>0])->count();
}else{
//任务异常 退出
return false;
}
//dump($count);
if($count <= 1) {
//只有一个主页 概述
Db::name('task')->where(['id' => $row['id']])->update([
'is_run' => 3, //执行忽略
'run_time' => time(),
'status' => 1,
]);
return false;
}*/
//构建参数
if((int)$row['diqu'] === 10000){
$diqu = 0; //山东地区变为主页 区域为0
}else{
$diqu = $row['diqu'];
}
$insert_data = [
'typeid' => 111,
'status' => 1,
'is_del' => 0,
'channel' => 103,
'click' => rand(500,5000),
'arcrank' => 0,
'add_time' => time(),
'update_time' => time(),
'province_id' => (int)$diqu,
'product_tag_id' => $row['tagid'], //由其他任务处理
'title' => $this->getTitle($row,$diqu),
'seo_title' => $this->getSeoTitle($row,$diqu),
'seo_keywords' => $this->getKeywords($row,$diqu),
'seo_description' => $this->getDesc($row,$diqu),
];
//执行插入
$aid = Db::connect('db1')->table('ey_archives')->insertGetId($insert_data);
//$aid=1;
//dump($insert_data);die;
if((int)$aid > 0) {
//增加详情
$content = $this->getContent($row,$diqu);
//echo htmlspecialchars_decode($content);die;
$insert_data_content = [
'aid' => $aid,
'add_time' => time(),
'update_time' => time(),
'content_5' => $content
];
Db::connect('db1')->table('ey_zczygz_content')->insert($insert_data_content);
//增加序列号
$where6 = [
"type" => 2,
"tid" => 111,
'topid' => 0,
'parentid' => 0,
'area_id' => (int)$diqu, //如果是0的话 后续也不能改
'city_id' => 0, //如果是0的话 后续也不能改
];
$last = Db::connect('db1')->name('seo_number')
->where($where6)->order('number desc')->find();
if (empty($last['number'])) {
$num = 1;
} else {
$num = (int)$last['number'] + 1;
}
$insert_data_seo = [
"type" => 2, //产品类型
"aid" => $aid, //实际的ID
"tid" => 111, //属于哪个栏目的
'is_del' => 0,
'is_kan' => 0, // 0正常 1审核
'status' => 1,
'area_id' => (int)$diqu,
'city_id' => 0,
'topid' => 0,
'parentid' => 0,
'number' => $num
];
Db::connect('db1')->table('ey_seo_number')->insert($insert_data_seo);
//更新状态
if ((int)$diqu === 0) {
$link = 'https://www.gdzcfw.com/wthz' . $num;
} else {
$domain = Db::connect('db1')->name('citysite')->where('id', '=', $diqu)->value('domain');
$link = 'https://' . $domain . '.gdzcfw.com/wthz' . $num;
}
Db::name('task')->where(['id' => $row['id']])->update([
'is_run' => 1, //执行成功
'run_time' => time(),
'status' => 1,
'link' => $link,
]);
$this->success('成功');
}
}
}
/*
* 产品名称处理
*/
public function getName($str){
$str = str_replace('职称', "", $str);
$str = $str.'职称';
return $str;
}
/*
* 模板1
*/
public function getTitle($row,$diqu)
{
$area_name = '';
if((int)$diqu > 0){
$area_name = Db::connect('db1')->name('citysite')->where('id', '=', $diqu)->value('name');
}
$title = $this->getName($row['title']);
$str = $area_name.$title.'评定【2024年最新学历要求】';
return $str;
}
public function getSeoTitle($row,$diqu)
{
$area_name = '';
if((int)$diqu > 0){
$area_name = Db::connect('db1')->name('citysite')->where('id', '=', $diqu)->value('name');
}
$title = $this->getName($row['title']);
$str = $area_name.$title.'评定【2024年最新要求解读】';
return $str;
}
public function getKeywords($row,$diqu){
$area_name = '';
if((int)$diqu > 0){
$area_name = Db::connect('db1')->name('citysite')->where('id', '=', $diqu)->value('name');
}
$title = $this->getName($row['title']);
$str = $area_name.$title.'评定学历要求';
return $str;
}
public function getDesc($row,$diqu){
$area_name = '';
if((int)$diqu > 0){
$area_name = Db::connect('db1')->name('citysite')->where('id', '=', $diqu)->value('name');
}
$title = $this->getName($row['title']);
$str = $area_name.$title.'评定上【职称网】工程师职称破格评审绿色通道,专注工程师职称评审,专注工程师职称评审,提供职称材料撰写、职称申报、职称论文专利一站式服务。';
return $str;
}
/*
* 模板1
*/
public function getContent($row,$diqu)
{
$area_name = '';
$domain = 'www';
if((int)$diqu > 0){
$area = Db::connect('db1')->name('citysite')->where('id', '=', $diqu)->find();
$area_name = $area['name'];
$domain = $area['domain'];
}
$title = $this->getTitle($row,$diqu);
//图片地址
$op = rand(1,9);
$imgurl = 'https://oss.gdzcfw.com/static/article/'.$op.'.png';
$html = '';
$html .= '
'.$title.'
'.$h[$jk].$area_name.$pro_title.'评定'.$v['title'].'学历要求:
'; $html .= ''.$data['content_6'].'
'; $jk++; } } //拼装产品 if((int)$row['yid'] === 2) { //大类 $number = Db::connect('db1')->table('ey_seo_number')->where([ 'type' => 1, 'aid' => $row['aid'], 'parentid' => 38 ])->value('number'); $link = 'https://'.$domain.'.gdzcfw.com/id'.$number; }else if((int)$row['yid'] === 3) { //小类 $one = Db::connect('db1')->table('ey_seo_number')->where([ 'type' => 1, 'aid' => $row['aid'], ])->where('parentid','<>',38)->find(); $number = Db::connect('db1')->table('ey_seo_number')->where([ 'type' => 1, 'aid' => $one['parentid'], 'parentid' => 38 ])->value('number'); $link = 'https://'.$domain.'.gdzcfw.com/id'.$number.'/sid'.$one['number']; } $html .= '最新'.$area_name.$pro_title.'评定政策详情请点击:'.$area_name.$pro_title.'
'; //其他链接 $html .= '
职称网更多职称评审相关请点击:
'.$area_name.'职称政策文件下载: 职称材料
职称答辩相关指引请点击: 职称答辩
职称评审绿色破格通道: 职称代办