|
|
@@ -1208,6 +1208,7 @@ class AnimeService
|
|
|
$pic_prompt = getProp($target_roles, 'pic_prompt', '');
|
|
|
$url = getProp($target_roles, 'url', '');
|
|
|
$three_view_image_url = trim(getProp($target_roles, 'three_view_image_url', ''));
|
|
|
+ $timbre_url = trim(getProp($target_roles, 'timbre_url', ''));
|
|
|
// 兼容 versions 传入数组或 JSON 字符串
|
|
|
$versions = getProp($target_roles, 'versions', null);
|
|
|
if (is_string($versions) && $versions !== '') {
|
|
|
@@ -1268,6 +1269,10 @@ class AnimeService
|
|
|
if (is_array($target_roles) && array_key_exists('three_view_image_url', $target_roles)) {
|
|
|
$updateData['three_view_image_url'] = trim(getProp($target_roles, 'three_view_image_url', ''));
|
|
|
}
|
|
|
+ // 显式传入音色(含空值)时同步写入,空值表示清除该资产的音色
|
|
|
+ if (is_array($target_roles) && array_key_exists('timbre_url', $target_roles)) {
|
|
|
+ $updateData['timbre_url'] = trim(getProp($target_roles, 'timbre_url', ''));
|
|
|
+ }
|
|
|
|
|
|
// 处理versions字段,显式传入数组(含空数组)时覆盖
|
|
|
if (is_array($versions)) {
|
|
|
@@ -1293,6 +1298,7 @@ class AnimeService
|
|
|
'product_name' => $product_name,
|
|
|
'url' => $url,
|
|
|
'three_view_image_url' => $three_view_image_url,
|
|
|
+ 'timbre_url' => $timbre_url,
|
|
|
'pic_prompt' => $pic_prompt,
|
|
|
'versions' => is_array($versions) ? json_encode($versions, 256) : '[]',
|
|
|
'sort_order' => time(),
|
|
|
@@ -1442,6 +1448,7 @@ class AnimeService
|
|
|
$pic_prompt = getProp($target_scenes, 'pic_prompt', '');
|
|
|
$url = getProp($target_scenes, 'url', '');
|
|
|
$three_view_image_url = trim(getProp($target_scenes, 'three_view_image_url', ''));
|
|
|
+ $timbre_url = trim(getProp($target_scenes, 'timbre_url', ''));
|
|
|
// 兼容 versions 传入数组或 JSON 字符串
|
|
|
$versions = getProp($target_scenes, 'versions', null);
|
|
|
if (is_string($versions) && $versions !== '') {
|
|
|
@@ -1502,6 +1509,10 @@ class AnimeService
|
|
|
if (is_array($target_scenes) && array_key_exists('three_view_image_url', $target_scenes)) {
|
|
|
$updateData['three_view_image_url'] = trim(getProp($target_scenes, 'three_view_image_url', ''));
|
|
|
}
|
|
|
+ // 显式传入音色(含空值)时同步写入,空值表示清除该资产的音色
|
|
|
+ if (is_array($target_scenes) && array_key_exists('timbre_url', $target_scenes)) {
|
|
|
+ $updateData['timbre_url'] = trim(getProp($target_scenes, 'timbre_url', ''));
|
|
|
+ }
|
|
|
|
|
|
// 处理versions字段,显式传入数组(含空数组)时覆盖
|
|
|
if (is_array($versions)) {
|
|
|
@@ -1527,6 +1538,7 @@ class AnimeService
|
|
|
'product_name' => $product_name,
|
|
|
'url' => $url,
|
|
|
'three_view_image_url' => $three_view_image_url,
|
|
|
+ 'timbre_url' => $timbre_url,
|
|
|
'pic_prompt' => $pic_prompt,
|
|
|
'versions' => is_array($versions) ? json_encode($versions, 256) : '[]',
|
|
|
'sort_order' => time(),
|
|
|
@@ -1676,6 +1688,7 @@ class AnimeService
|
|
|
$pic_prompt = getProp($target_props, 'pic_prompt', '');
|
|
|
$url = getProp($target_props, 'url', '');
|
|
|
$three_view_image_url = trim(getProp($target_props, 'three_view_image_url', ''));
|
|
|
+ $timbre_url = trim(getProp($target_props, 'timbre_url', ''));
|
|
|
// 兼容 versions 传入数组或 JSON 字符串
|
|
|
$versions = getProp($target_props, 'versions', null);
|
|
|
if (is_string($versions) && $versions !== '') {
|
|
|
@@ -1736,6 +1749,10 @@ class AnimeService
|
|
|
if (is_array($target_props) && array_key_exists('three_view_image_url', $target_props)) {
|
|
|
$updateData['three_view_image_url'] = trim(getProp($target_props, 'three_view_image_url', ''));
|
|
|
}
|
|
|
+ // 显式传入音色(含空值)时同步写入,空值表示清除该资产的音色
|
|
|
+ if (is_array($target_props) && array_key_exists('timbre_url', $target_props)) {
|
|
|
+ $updateData['timbre_url'] = trim(getProp($target_props, 'timbre_url', ''));
|
|
|
+ }
|
|
|
|
|
|
// 处理versions字段,显式传入数组(含空数组)时覆盖
|
|
|
if (is_array($versions)) {
|
|
|
@@ -1761,6 +1778,7 @@ class AnimeService
|
|
|
'product_name' => $product_name,
|
|
|
'url' => $url,
|
|
|
'three_view_image_url' => $three_view_image_url,
|
|
|
+ 'timbre_url' => $timbre_url,
|
|
|
'pic_prompt' => $pic_prompt,
|
|
|
'versions' => is_array($versions) ? json_encode($versions, 256) : '[]',
|
|
|
'sort_order' => time(),
|