|
|
|
@ -3,14 +3,18 @@ declare (strict_types = 1); |
|
|
|
|
|
|
|
namespace app\controller\backend; |
|
|
|
|
|
|
|
use app\exception\ModelEmptyException; |
|
|
|
use app\exception\ModelException; |
|
|
|
use app\model\Admin; |
|
|
|
use app\model\Route; |
|
|
|
use app\model\Website; |
|
|
|
use app\model\WebsiteLang; |
|
|
|
use app\model\WebsiteSetting; |
|
|
|
use app\service\CacheService; |
|
|
|
use app\service\ContentService; |
|
|
|
use app\service\SitemapService; |
|
|
|
use app\service\WebsiteLangService; |
|
|
|
use app\validate\ContentValidate; |
|
|
|
use app\validate\WebsiteValidate; |
|
|
|
use app\service\WebsiteService; |
|
|
|
use think\facade\Db; |
|
|
|
@ -279,9 +283,212 @@ class WebsiteController extends BaseController |
|
|
|
*/ |
|
|
|
public function sitemap(SitemapService $sitemapService): \think\response\Json |
|
|
|
{ |
|
|
|
$siteId = (int)$this->request->param('website_id'); |
|
|
|
$sellerId = $this->admin['seller_id']; |
|
|
|
$res = $sitemapService -> makeSitemap($siteId,$sellerId); |
|
|
|
return json($res); |
|
|
|
// $siteId = (int)$this->request->param('website_id');
|
|
|
|
// $sellerId = $this->admin['seller_id'];
|
|
|
|
// $res = $sitemapService -> makeSitemap($siteId,$sellerId);
|
|
|
|
// return json($res);
|
|
|
|
|
|
|
|
$this->dealDataToNew(); |
|
|
|
return json(['msg'=>'ok']); |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
// 数据处理, 新站导入老站的新闻信息
|
|
|
|
public function dealDataToNew() |
|
|
|
{ |
|
|
|
$reqParam = request()->param(); |
|
|
|
$from_cate_id = $reqParam['from_cate_id']; |
|
|
|
$to_cate_id = $reqParam['to_cate_id']; |
|
|
|
// if($from_cate_id == -1 && $to_cate_id == -1){
|
|
|
|
// // 迁移数据 交易及市场日历(calendar)
|
|
|
|
// $res = $this->dealDataToNewCalendar($reqParam);
|
|
|
|
// return $res;
|
|
|
|
// }
|
|
|
|
// var_dump($reqParam);
|
|
|
|
// exit();
|
|
|
|
|
|
|
|
// 直接定义目标数据库连接参数
|
|
|
|
$otherDbConfig = [ |
|
|
|
'type' => 'mysql', |
|
|
|
'hostname' => '127.0.0.1', // 目标IP
|
|
|
|
'database' => 'ruineng-tmp-tmp', // 数据库名
|
|
|
|
'username' => 'root', |
|
|
|
'password' => 'root', |
|
|
|
'hostport' => '3306', |
|
|
|
'charset' => 'utf8mb4', |
|
|
|
'prefix' => '', |
|
|
|
'debug' => true, |
|
|
|
]; |
|
|
|
|
|
|
|
// 动态注册到 connections 中
|
|
|
|
$dbConfig = config('database'); |
|
|
|
$dbConfig['connections']['temp_remote_conn'] = $otherDbConfig; |
|
|
|
config($dbConfig, 'database'); |
|
|
|
// 验证分类
|
|
|
|
$fromCateInfo = Db::connect('temp_remote_conn') |
|
|
|
->table('zlkj_arctype') |
|
|
|
// ->where('state', 1)
|
|
|
|
->where('id', $from_cate_id) |
|
|
|
->findOrEmpty(); |
|
|
|
|
|
|
|
if(empty($fromCateInfo)){ |
|
|
|
var_dump('$fromCateInfo 不存在'); |
|
|
|
exit(); |
|
|
|
} |
|
|
|
$toCateInfo = Db::table('hc_category') |
|
|
|
->where('id', $to_cate_id)->findOrEmpty(); |
|
|
|
if(empty($toCateInfo)){ |
|
|
|
var_dump('$toCateInfo 不存在'); |
|
|
|
exit(); |
|
|
|
} |
|
|
|
if($fromCateInfo['typename'] != $toCateInfo['title']){ |
|
|
|
var_dump('分类名称不对应'); |
|
|
|
exit(); |
|
|
|
} |
|
|
|
|
|
|
|
// 通过连接名使用
|
|
|
|
$listTmp = Db::connect('temp_remote_conn') |
|
|
|
->table('zlkj_archives') |
|
|
|
// ->where('state', 1)
|
|
|
|
->where('typeid', $from_cate_id) |
|
|
|
// ->limit(3)
|
|
|
|
->select(); |
|
|
|
if(empty($listTmp)){ |
|
|
|
var_dump('数据为空!'); |
|
|
|
exit; |
|
|
|
} |
|
|
|
$listArr = $listTmp->toArray(); |
|
|
|
// var_dump($listTmp->toArray());
|
|
|
|
// exit();
|
|
|
|
if(empty($listArr)){ |
|
|
|
var_dump('数据为空!'); |
|
|
|
exit; |
|
|
|
} |
|
|
|
|
|
|
|
$opNum = 0; |
|
|
|
$remoteConnTmp = Db::connect('temp_remote_conn'); |
|
|
|
foreach ($listArr as $k=>$oneOrigin){ |
|
|
|
$aid = $oneOrigin['aid'] ?? 0; |
|
|
|
if(empty($aid)){ |
|
|
|
var_dump('数据异常!---$aid='.$oneOrigin['aid']); |
|
|
|
exit; |
|
|
|
} |
|
|
|
// 查询关联表TODO...
|
|
|
|
$remoteContentOne = $remoteConnTmp->table('zlkj_article_content') |
|
|
|
// ->where('state', 1)
|
|
|
|
->where('aid', $aid) |
|
|
|
// ->limit(3)
|
|
|
|
->findOrEmpty(); |
|
|
|
if(empty($remoteContentOne)){ |
|
|
|
var_dump('数据异常--$remoteContent!---$aid='.$oneOrigin['aid']); |
|
|
|
exit; |
|
|
|
} |
|
|
|
// dd($remoteContentOne);
|
|
|
|
|
|
|
|
|
|
|
|
$param = []; |
|
|
|
// 手动拼接参数 $param
|
|
|
|
// module_id=1: 系统文章模型
|
|
|
|
// module_id=2: 客户模型
|
|
|
|
// module_id=3: 普通文章模型
|
|
|
|
// module_id=4: demo1案例模型
|
|
|
|
$param['module_id'] = 3; // 普通文章模型
|
|
|
|
$param['category_id'][0] = $to_cate_id; // 分类ID
|
|
|
|
$param['lang'] = 'zh'; |
|
|
|
$param['main_content']['sub_title'] = ''; |
|
|
|
$param['main_content']['more_file'] = ''; |
|
|
|
|
|
|
|
$param['sub_content']['title'] = $oneOrigin['title']; |
|
|
|
$param['sub_content']['sub_title'] = ''; |
|
|
|
$param['sub_content']['detail_tpl'] = ''; |
|
|
|
$param['sub_content']['description'] = $remoteContentOne['desc'] ?? ''; |
|
|
|
$param['sub_content']['thumbnail'] = 0; // 缩略图
|
|
|
|
$param['sub_content']['cover'] = ''; |
|
|
|
$param['sub_content']['hits'] = $oneOrigin['click']; // 浏览量
|
|
|
|
$param['sub_content']['author'] = ''; |
|
|
|
$param['sub_content']['status'] = '1'; |
|
|
|
$param['sub_content']['url'] = ''; |
|
|
|
$param['sub_content']['is_top'] = ''; |
|
|
|
$param['sub_content']['is_recommend'] = ''; |
|
|
|
$param['sub_content']['sort'] = ''; |
|
|
|
$param['sub_content']['seo_title'] = ''; |
|
|
|
$param['sub_content']['seo_keyword'] = ''; |
|
|
|
$param['sub_content']['seo_description'] = $oneOrigin['seo_description'] ?? ''; |
|
|
|
$param['sub_content']['tag'] = ''; // 标签
|
|
|
|
$param['sub_content']['publish_time'] = ''; |
|
|
|
$param['sub_content']['content'] = $remoteContentOne['content'] ?? ''; // 富文本内容
|
|
|
|
$param['sub_content']['category_id'] = $to_cate_id; // 分类ID
|
|
|
|
$param['sub_content']['sub_category_ids'] = ''; //
|
|
|
|
|
|
|
|
if(!empty($remoteContentOne['img'])){ |
|
|
|
$fullName = basename($remoteContentOne['img']); // 16a67b...png
|
|
|
|
$ext = explode('.', $fullName); |
|
|
|
$extension = end($ext); // 结果:png
|
|
|
|
$filename = substr($fullName, 0, strrpos($fullName, '.')); |
|
|
|
// 将图片资源插入数据库
|
|
|
|
$fileData = [ |
|
|
|
'seller_id'=>1, |
|
|
|
'name'=>$filename, |
|
|
|
'attachment_cate_id'=>0, |
|
|
|
'url'=>$remoteContentOne['img'], |
|
|
|
'mime_type'=>$extension, |
|
|
|
]; |
|
|
|
$fileID = Db::table('hc_attachment') |
|
|
|
->insertGetId($fileData); |
|
|
|
$param['sub_content']['thumbnail'] = $fileID; // 缩略图
|
|
|
|
} |
|
|
|
if(!empty($oneOrigin['add_time'])){ |
|
|
|
$param['sub_content']['publish_time'] = date('Y-m-d H:i:s',$oneOrigin['add_time']); |
|
|
|
} |
|
|
|
try{ |
|
|
|
validate(ContentValidate::class)->scene('save')->check($param); |
|
|
|
}catch (ValidateException $e){ |
|
|
|
return jsonReturn(422, $e->getError()); |
|
|
|
} |
|
|
|
$param['admin'] = $this->admin; |
|
|
|
unset($param['main_content']['id']);//添加接口以防冲突不需要id
|
|
|
|
unset($param['sub_content']['id']);//添加接口以防冲突不需要id
|
|
|
|
if(empty($param['sub_content']['publish_time'])){ |
|
|
|
$param['sub_content']['publish_time'] = date('Y-m-d H:i:s',time()); |
|
|
|
} |
|
|
|
if(!isset($param['main_content'])){ |
|
|
|
$param['main_content'] = []; |
|
|
|
} |
|
|
|
|
|
|
|
// var_dump($param);
|
|
|
|
// exit();
|
|
|
|
|
|
|
|
$contentService = new ContentService(); |
|
|
|
try { |
|
|
|
$res = $contentService->saveContent($param); |
|
|
|
// var_dump($res);
|
|
|
|
// exit();
|
|
|
|
// 更改创建时间 ================= START
|
|
|
|
$newSubContentID = $res['id'] ?? '0'; |
|
|
|
if($newSubContentID <= 0){ |
|
|
|
var_dump('ID为空, 新增失败'); |
|
|
|
exit(); |
|
|
|
} |
|
|
|
if(!empty($oneOrigin['add_time'])){ |
|
|
|
Db::table('hc_sub_content') |
|
|
|
->where('id', $newSubContentID) |
|
|
|
->update(['status'=>1,'create_time' => $oneOrigin['add_time']]); |
|
|
|
|
|
|
|
Db::table('hc_article') |
|
|
|
->where('sub_id', $newSubContentID) |
|
|
|
->update(['create_time' => $oneOrigin['add_time']]); |
|
|
|
} |
|
|
|
|
|
|
|
// 更改创建时间 ================= END
|
|
|
|
} catch (ModelEmptyException | ModelException $e) { |
|
|
|
return jsonReturn(-3,$e->getMessage()); |
|
|
|
} |
|
|
|
$opNum ++; |
|
|
|
} |
|
|
|
|
|
|
|
var_dump('操作的条数为: ', $opNum); |
|
|
|
exit; |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
} |