作者 刘锟

import

... ... @@ -50,6 +50,18 @@ class ProjectImport extends Command
echo 'date:' . date('Y-m-d H:i:s') . ', task_id: ' . $task->id . ', import start' . PHP_EOL;
$is_gbk = 0;
$file_code_type = $this->get_code_type($task->file_url);
if ($file_code_type === false) {
echo 'date:' . date('Y-m-d H:i:s') . ', task_id: ' . $task->id . ', import fail, error: 文件编码格式错误' . PHP_EOL;
$task->status = ImportTask::STATUS_COM;//导入完成
$task->save();
return true;
} elseif ($file_code_type === 'GBK') {
$is_gbk = 1;
setlocale(LC_ALL, 'zh_CN');
}
//读取csv文件
$line_of_text = [];
try {
... ... @@ -67,7 +79,6 @@ class ProjectImport extends Command
$total_count = 0; //总条数
$success_count = 0; //成功导入条数
setlocale(LC_ALL,'zh_CN');
if (count($line_of_text) > 1) {
$task->status = ImportTask::STATUS_ING;//导入中
$task->save();
... ... @@ -78,9 +89,11 @@ class ProjectImport extends Command
foreach ($line_of_text as $k => $v) {
if ($k > 0 && isset($v[0]) && $v[0]) {
foreach ($v as $kk=>$vv){
if ($is_gbk) {
foreach ($v as $kk => $vv) {
$v[$kk] = mb_convert_encoding($vv, 'utf-8', 'gbk');
}
}
$total_count += 1;
try {
... ... @@ -116,4 +129,18 @@ class ProjectImport extends Command
sleep(2);
}
//判断编码格式
function get_code_type($file)
{
$list = array('GBK', 'UTF-8');
$str = file_get_contents($file);
foreach ($list as $item) {
$tmp = mb_convert_encoding($str, $item, $item);
if (md5($tmp) == md5($str)) {
return $item;
}
}
return false;
}
}
... ...
... ... @@ -419,6 +419,19 @@ class ProductLogic extends BaseLogic
}
}
//处理内容中的图片
$content = '';
if($data[6]){
$pattern = '<img src="(.*?)">';
preg_match_all($pattern, $data[6], $result);
if($result[1]){
foreach ($result[1] as $vc_img){
$data[6] = str_replace($vc_img,CosService::uploadRemote($project_id,'image_product',$vc_img),$data[6]);
}
}
$content = $data[6];
}
//处理seo
$seo_mate = [
... ... @@ -439,7 +452,7 @@ class ProductLogic extends BaseLogic
'category_id' => $category_id,
'keyword_id' => $keyword_id,
'intro' => $data[5] ?? '',
'content' => $data[6] ?? '',
'content' => $content,
'seo_mate' => Arr::a2s($seo_mate),
'created_uid' => $user_id,
'status' => Product::STATUS_ON
... ...
... ... @@ -74,7 +74,6 @@ class CosService
*/
public static function uploadRemote($project_id,$image_type,$file_url)
{
return '';
$ext = explode('.',$file_url);
$filename = uniqid().rand(10000,99999).'.'.end($ext);
... ...