3 Commits

Author SHA1 Message Date
61728434d3 refactor: 修改tco产品数据同步
All checks were successful
Gitea Actions Official-website / deploy-dev (push) Successful in 5s
2026-01-13 17:30:56 +08:00
5736d09dbe refactor: image_migrate.py添加迁移后的目录及文件所有者修改
All checks were successful
Gitea Actions Official-website / deploy-dev (push) Successful in 4s
2026-01-04 11:00:52 +08:00
5b3e505e9b 删除视频提示语
All checks were successful
Gitea Actions Official-website / deploy-dev (push) Successful in 3s
2025-12-31 17:06:51 +08:00
4 changed files with 46 additions and 18 deletions

View File

@@ -201,15 +201,16 @@ class ReceiveProductSync
throw new \Exception('产品创建失败'); throw new \Exception('产品创建失败');
} }
} }
else if (strtotime($product['updated_at']) < strtotime($data['created_at'])) { // 注释更新同步防止tco同步修改官网手动调整数据
$product->spu = $data['spu']; // else if (strtotime($product['updated_at']) < strtotime($data['created_at'])) {
$product->name = $data['name']; // $product->spu = $data['spu'];
$product->category_id = $product_category['id']; // $product->name = $data['name'];
$product->status = Operate_Of_ReceiveSync::Disable == $data['operate'] ? -1 : 1; // $product->category_id = $product_category['id'];
if (!$product->save()) { // $product->status = Operate_Of_ReceiveSync::Disable == $data['operate'] ? -1 : 1;
throw new \Exception('产品更新失败'); // if (!$product->save()) {
} // throw new \Exception('产品更新失败');
} // }
// }
} catch (\Throwable $th) { } catch (\Throwable $th) {
return error(sprintf('%s %s:%d', $th->getMessage(), $th->getFile(), $th->getLine())); return error(sprintf('%s %s:%d', $th->getMessage(), $th->getFile(), $th->getLine()));
} }

View File

@@ -1082,7 +1082,7 @@
const allVideos = document.querySelectorAll('.fs-video'); const allVideos = document.querySelectorAll('.fs-video');
const fsBox = document.querySelector('.fs-box'); const fsBox = document.querySelector('.fs-box');
let isVideoPlaying = false; let isVideoPlaying = false;
let videoTip = null; // let videoTip = null;
// 初始化视频提示 // 初始化视频提示
// const initVideoTip = () => // const initVideoTip = () =>
@@ -1103,7 +1103,7 @@
video.pause(); // 仅暂停删除display修改 video.pause(); // 仅暂停删除display修改
}); });
isVideoPlaying = false; isVideoPlaying = false;
if (videoTip) videoTip.style.display = 'none'; // if (videoTip) videoTip.style.display = 'none';
} }
// 播放指定视频(仅播放,无显隐) // 播放指定视频(仅播放,无显隐)
@@ -1117,17 +1117,17 @@
video.play().then(() => video.play().then(() =>
{ {
isVideoPlaying = true; isVideoPlaying = true;
if (videoTip) videoTip.style.display = 'none'; // if (videoTip) videoTip.style.display = 'none';
}).catch((err) => }).catch((err) =>
{ {
console.log('视频自动播放失败:', err); console.log('视频自动播放失败:', err);
if (videoTip) videoTip.style.display = 'block'; // if (videoTip) videoTip.style.display = 'block';
// 点击视频手动播放(仅执行一次) // 点击视频手动播放(仅执行一次)
video.addEventListener('click', () => video.addEventListener('click', () =>
{ {
video.play(); video.play();
isVideoPlaying = true; isVideoPlaying = true;
if (videoTip) videoTip.style.display = 'none'; // if (videoTip) videoTip.style.display = 'none';
}, { once: true }); }, { once: true });
}); });
}; };

View File

@@ -1037,7 +1037,7 @@
const allVideos = document.querySelectorAll('.fs-video'); const allVideos = document.querySelectorAll('.fs-video');
const fsBox = document.querySelector('.fs-box'); const fsBox = document.querySelector('.fs-box');
let isVideoPlaying = false; let isVideoPlaying = false;
let videoTip = null; // let videoTip = null;
// 初始化视频提示 // 初始化视频提示
// const initVideoTip = () => { // const initVideoTip = () => {
@@ -1060,7 +1060,7 @@
if (img) img.style.display = 'block'; if (img) img.style.display = 'block';
}); });
isVideoPlaying = false; isVideoPlaying = false;
if (videoTip) videoTip.style.display = 'none'; // if (videoTip) videoTip.style.display = 'none';
} }
// 播放指定视频 // 播放指定视频
@@ -1075,7 +1075,7 @@
video.muted = true; video.muted = true;
video.play().then(() => { video.play().then(() => {
isVideoPlaying = true; isVideoPlaying = true;
if (videoTip) videoTip.style.display = 'none'; // if (videoTip) videoTip.style.display = 'none';
}).catch((err) => { }).catch((err) => {
console.log('视频自动播放失败:', err); console.log('视频自动播放失败:', err);
video.style.display = 'block'; video.style.display = 'block';
@@ -1085,7 +1085,7 @@
video.addEventListener('click', () => { video.addEventListener('click', () => {
video.play(); video.play();
isVideoPlaying = true; isVideoPlaying = true;
if (videoTip) videoTip.style.display = 'none'; // if (videoTip) videoTip.style.display = 'none';
}, { once: true }); }, { once: true });
}); });
}; };

View File

@@ -244,6 +244,25 @@ class ImageMigrator:
if self.verbose: if self.verbose:
print("连接已关闭") print("连接已关闭")
def chown_target(self, owner: str, target_path: str) -> bool:
command = f"sudo chown {owner} {target_path}"
stdin, stdout, stderr = self.target_client.exec_command(command)
# 如果需要输入sudo密码
if "sudo" in command and self.target_config.password:
stdin.write(self.target_config.password + "\n")
stdin.flush()
if self.verbose:
# 获取输出和错误
# output = stdout.read().decode()
error = stderr.read().decode()
exit_code = stdout.channel.recv_exit_status()
if exit_code == 0:
return True
else:
print(f"DEBUG chown_target: 修改 {target_path} 的所有者失败: {error}")
return False
def ensure_target_directory(self, remote_dir: str) -> bool: def ensure_target_directory(self, remote_dir: str) -> bool:
"""确保目标目录存在(递归创建)""" """确保目标目录存在(递归创建)"""
try: try:
@@ -298,11 +317,17 @@ class ImageMigrator:
f"DEBUG ensure_target_directory: 创建目录: {current_path}" f"DEBUG ensure_target_directory: 创建目录: {current_path}"
) )
try: try:
# 创建目录
self.target_sftp.mkdir(current_path) self.target_sftp.mkdir(current_path)
if self.verbose: if self.verbose:
print( print(
f"DEBUG ensure_target_directory: 目录创建成功: {current_path}" f"DEBUG ensure_target_directory: 目录创建成功: {current_path}"
) )
# 修改目录所有者
if self.chown_target("www", current_path) and self.verbose:
print(
f"DEBUG ensure_target_directory: {current_path} 所有者修改为 www 成功"
)
except Exception as mkdir_e: except Exception as mkdir_e:
# 如果创建失败,可能是权限问题或目录已存在 # 如果创建失败,可能是权限问题或目录已存在
if self.verbose: if self.verbose:
@@ -519,6 +544,8 @@ class ImageMigrator:
print(f"DEBUG: 目录stat也失败: {stat_e}") print(f"DEBUG: 目录stat也失败: {stat_e}")
self.target_sftp.put(temp_path, target_path) self.target_sftp.put(temp_path, target_path)
if self.chown_target("www", target_path) and self.verbose:
print(f"DEBUG transfer_file: {target_path} 所有者修改为 www 成功")
if self.verbose: if self.verbose:
print("DEBUG: 上传完成") print("DEBUG: 上传完成")