Commit f5efc586 authored by 刘小敏's avatar 刘小敏

AI试戴生成视频队列程序优化

parent 056d3466
......@@ -172,9 +172,8 @@ class AiTryon extends Common
*/
public function genVideo()
{
if (!$this->request->isPost()) {
$this->error('');
$this->error('请用post方式请求');
}
$params = $this->request->only([
......@@ -184,7 +183,8 @@ class AiTryon extends Common
$user = auth_user();
\think\Queue::push('\addons\shopro\job\AiVideoGen@save', ['taskid' => 'cgt-20260430190444-vmb4q', 'user' => $user], 'shopro-high');
\think\Queue::push('\addons\shopro\job\AiVideoGen@save', ['taskid' => 'cgt-20260506113558-x6wtq', 'user' => $user], 'shopro-high');
$this->success('推送队列成功');
exit;
$userService = new User();
......@@ -232,32 +232,4 @@ class AiTryon extends Common
}
}
/**
* AI试戴 查询视频生成状态
*/
public function getGenVideoTask()
{
// curl -X GET https://ark.cn-beijing.volces.com/api/v3/contents/generations/tasks/{id} \
// -H "Content-Type: application/json" \
// -H "Authorization: Bearer $ARK_API_KEY"
}
/**
* AI试戴视频回调函数
* 更新 AI试戴视频结果状态
*/
public function updateAiTryonStatus()
{
// 记录日志
// Log::info('TASKS ID:'. $taskId .' AI生成视频回调函数接口返回:'.json_encode($result));
// // 更新表状态
// $aiTryonModel = new AiTryOnModel();
// $aiTryonModel::where('ai_task_id' , $taskId)->update(['ai_status' => 1]);
}
}
......@@ -924,3 +924,10 @@ if (!function_exists('operate_disabled')) {
}
}
// 调试输出
if (!function_exists('debug_echo')) {
function debug_echo($text='')
{
echo PHP_EOL . '------' . $text . '------' . PHP_EOL ;
}
}
......@@ -7,39 +7,36 @@ use addons\shopro\library\HttpClient as Http;
use app\admin\model\shopro\AiTryon as AiTryOnModel;
use think\Log;
use think\queue\Job;
//use think\Db;
//use think\exception\HttpResponseException;
//use app\admin\model\shopro\order\Order;
//use addons\shopro\service\StockSale;
//use app\admin\model\shopro\user\User;
//use app\admin\model\shopro\order\Invoice as OrderInvoice;
//use addons\shopro\service\order\OrderOper;
//use addons\shopro\facade\Activity as ActivityFacade;
/**
* 订单自动操作
* AI生成的视频保存到本地并更新数据表
*/
class AiVideoGen extends BaseJob
{
// 火山引擎方舟配置
private $ark_host = 'https://ark.cn-beijing.volces.com';
private $public_dir = ROOT_PATH . 'public';
/**
* 保存远端视频文件到本地
*/
private function saveVideoLoc ($videoUrl){
// 1生成存储目录(fastadmin标准uploads目录)
$public_dir = ROOT_PATH . 'public';
debug_echo('videoUrl: '.$videoUrl);
// 1 生成存储目录(fastadmin标准uploads目录)
$upload_dir = '/uploads/ai_video/' . date('Ymd') . '/';
$dir = $public_dir . $upload_dir;
$dir = $this->public_dir . $upload_dir;
if (!is_dir($dir)) {
mkdir($dir, 0755, true);
}
// 2 生成唯一文件名
$filename = md5(time() . uniqid()) . '.mp4';
$full_path = $public_dir . $upload_dir . $filename;
$full_path = $this->public_dir . $upload_dir . $filename;
// 视频地址
// 3 加载视频地址
$ch = curl_init($videoUrl);
$fp = fopen($full_path, 'wb');
......@@ -50,14 +47,21 @@ class AiVideoGen extends BaseJob
curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36');
curl_setopt($ch, CURLOPT_TIMEOUT, 300);
// 4 写入文件
curl_exec($ch);
$error = curl_error($ch);
$http_code = curl_getinfo($ch, CURLINFO_HTTP_CODE); // 获取HTTP状态码
curl_close($ch);
fclose($fp);
// 5. 检查是否下载成功
if ($error) {
return 0;
// 5 严格判断:网络错误 / HTTP状态码异常 / 文件为空
if ($error || $http_code >= 400 || filesize($full_path) === 0) {
// 下载失败,删除产生的空文件
if (file_exists($full_path)) {
unlink($full_path);
}
debug_echo('视频下载失败:' . $error . "HTTP状态码:{$http_code},文件为空");
return 0; // 统一失败返回值
}
if (!file_exists($full_path)) {
......@@ -67,6 +71,35 @@ class AiVideoGen extends BaseJob
return $upload_dir . $filename;
}
/**
* 删除本地保存的视频文件
* @param string $videoPath 绝对路径(就是 saveVideoLoc 方法返回的路径,如:/uploads/ai_video/20250820/xxx.mp4)
* @return bool 删除成功返回 true,失败/文件不存在返回 false
*/
private function deleteLocalVideo($videoPath)
{
// 拼接完整物理路径(和保存时一致)
$fullPath = $this->public_dir . ltrim($videoPath, '/');
// 1. 判断文件是否存在
if (!file_exists($fullPath)) {
return false;
}
// 2. 判断是否是文件(防止误删目录)
if (!is_file($fullPath)) {
return false;
}
// 3. 尝试删除文件
try {
$deleted = unlink($fullPath);
return $deleted;
} catch (\Exception $e) {
// 删除失败(权限不足、文件被占用等)
return false;
}
}
/**
* AI视频结果存
......@@ -75,17 +108,24 @@ class AiVideoGen extends BaseJob
{
try {
// 保存远程视频到本地
// $videoUrl = "https://ark-content-generation-cn-beijing.tos-cn-beijing.volces.com/doubao-seedance-1-5-pro/02177754334120900000000000000000000ffffac15a695855f2b.mp4?X-Tos-Algorithm=TOS4-HMAC-SHA256&X-Tos-Credential=AKLTYWJkZTExNjA1ZDUyNDc3YzhjNTM5OGIyNjBhNDcyOTQ%2F20260430%2Fcn-beijing%2Ftos%2Frequest&X-Tos-Date=20260430T100229Z&X-Tos-Expires=86400&X-Tos-Signature=c50b93d2f98c3865b9ac4a2bb5607f9c3dba01d516f8d20f496285a09b04e9d7&X-Tos-SignedHeaders=host";
$taskid = $data['taskid'];
// $taskid = 'cgt-20260430184545-tghsw';
// $taskid = 'cgt-20260430190444-vmb4q';
$user = $data['user'];
$user_id = isset($user['id']) ? $user['id'] : 0;
if (!isset($taskid) || empty($taskid) || !isset($user_id) || empty($user_id)) {
debug_echo('入参有空值 taskid:'.$taskid .' user_id:'.$user_id);
// echo "===== begin queue ai video save =====" . PHP_EOL;
// 删除队列job
debug_echo('删除Job');
$job->delete();
return false;
}
$url = $this->ark_host . '/api/v3/contents/generations/tasks/' . $taskid;
echo 'url: ' . $url . PHP_EOL;
debug_echo('脚本开始执行 AI接口url:'.$url);
$params = [
'headers' => [
'Authorization' => 'Bearer ' . config('shopro.ai_api_key'),
......@@ -94,66 +134,105 @@ class AiVideoGen extends BaseJob
'verify' => false, // 关闭 SSL 证书验证
'allow_redirects' => true
];
// 发送请求
// 向AI接口 发送请求
$client = new Http();
$response = $client->get($url, $params);
// echo 'response:';
// print_r($response);
$content = $response->getBody()->getContents();
$content = trim($content);
$content = preg_replace('/[^\x20-\x7E]/', '', $content);
$result = json_decode($content, true);
// 失败
// AI接口 返回失败
if (isset($result['error'])){
$code = $result['error']['code'] ?? '';
$message = $result['error']['message'] ?? '未知错误';
AiTryOnModel::where('user_id', $user['id'])->where('ai_task_id', $taskid)->update(['ai_status' => 2, 'ai_err_msg' => $message]);
AiTryOnModel::where('user_id', $user_id)->where('ai_task_id', $taskid)->update(['ai_status' => 2, 'ai_err_msg' => $message]);
// 记录错误日志
Log::error('AI生成视频队列返回:taskId: ' . $taskid . 'code '.$code . 'message: ' . $message . ' result:' . $content . PHP_EOL);
// 删除队列job
debug_echo('删除Job');
$job->delete();
return false;
}
// AI接口 返回成功
if (isset($result['status'])){
debug_echo('AI接口 返回成功 status有值:'.$result['status']);
switch ($result['status']) {
// 成功返回视频链接
case 'succeeded':
// 保存远程视频到本地
$video_url = $this->saveVideoLoc(isset($result['content']['video_url']) ? $result['content']['video_url'] : '');
echo '--video_url--';
var_dump($video_url);
debug_echo('保存本地接口返回值 video_url:'.$video_url);
if ($video_url === 0){
AiTryOnModel::where('user_id', $user['id'])->where('ai_task_id', $taskid)->update(['ai_status' => 2, 'ai_err_msg' => '视频保存到本地失败']);
AiTryOnModel::where('user_id', $user_id)->where('ai_task_id', $taskid)->update(['ai_status' => 2, 'ai_err_msg' => '视频保存到本地失败']);
debug_echo('保存本地视频失败sql:'.db()->getLastSql());
break;
}
// 更新我的试戴
AiTryOnModel::where('user_id', $user['id'])->where('ai_task_id', $taskid)->update(['ai_status' => 1,'ai_url' => $video_url]);
// echo 'sql:' . PHP_EOL;
// print_r( db()->getLastSql() );
AiTryOnModel::where('user_id', $user_id)->where('ai_task_id', $taskid)->update(['ai_status' => 1,'ai_url' => $video_url, 'ai_err_msg' => '视频生成成功']);
debug_echo('保存本地视频成功sql:'.db()->getLastSql());
// 删除队列job
debug_echo('删除Job');
$job->delete();
break;
case 'cancelled':
AiTryOnModel::where('user_id', $user_id)->where('ai_task_id', $taskid)->update(['ai_status' => 2, 'ai_err_msg' => '任务已取消']);
debug_echo('AI生成视频任务 取消: taskId: ' . $taskid . 'userId '. $user_id );
debug_echo('AI生成视频任务 取消: result:'.json_encode($result));
debug_echo('AI生成视频任务 取消: sql:' .db()->getLastSql());
// 删除队列job
debug_echo('删除Job');
$job->delete();
break;
case 'failed':
AiTryOnModel::where('user_id', $user_id)->where('ai_task_id', $taskid)->update(['ai_status' => 2, 'ai_err_msg' => '视频生成失败']);
debug_echo('AI生成视频任务 失败: taskId: ' . $taskid . 'userId '. $user_id );
debug_echo('AI生成视频任务 失败: result:'.json_encode($result));
debug_echo('AI生成视频任务 失败: sql:' .db()->getLastSql());
// 删除队列job
debug_echo('删除Job');
$job->delete();
break;
case 'expired':
AiTryOnModel::where('user_id', $user['id'])->where('ai_task_id', $taskid)->update(['ai_status' => 2, 'ai_err_msg' => '视频生成失败']);
// Log::error('AI生成视频队列返回:taskId: ' . $taskid . 'code '.$code . 'message: ' . $message . ' result:' . $content . PHP_EOL);
AiTryOnModel::where('user_id', $user_id)->where('ai_task_id', $taskid)->update(['ai_status' => 2, 'ai_err_msg' => '任务已过期']);
debug_echo('AI生成视频任务 过期: taskId: ' . $taskid . 'userId '. $user_id );
debug_echo('AI生成视频任务 过期: result:'.json_encode($result));
debug_echo('AI生成视频任务 过期: sql:' .db()->getLastSql());
// 删除队列job
debug_echo('删除Job');
$job->delete();
break;
// 排队中 / 运行中
case 'queued':
case 'running':
AiTryOnModel::where('user_id', $user['id'])->where('ai_task_id', $taskid)->update(['ai_err_msg' => '视频生成中']);
break;
}
}
// echo "===== End queue ai video save =====" . PHP_EOL ;
// Log::info('用户ID:'. $user .' AI生成视频接口返回:'.json_encode($result));
// 删除 job
$job->delete();
} catch (\Exception $e) {
// echo '---------------save video Exception---------------------'.PHP_EOL;
// print_r($e->getMessage());
// echo '---------------save video Exception---------------------'.PHP_EOL;
// 队列执行失败
format_log_error($e, 'AiVideoGen.save');
debug_echo('异常:' . $e->getMessage());
format_log_error($e, 'AiVideoGen.save.' . isset($user['id']) ?? 'user_id' . isset($video_url) ?? 'video_url');
debug_echo('异常删除视频:'. $video_url);
$this->deleteLocalVideo($video_url); // 删除保存到本地的视频,如果已经保存了的话
}
}
......
......@@ -112,7 +112,7 @@ class Ai
try {
// 合成AI图片
$resGenImg = $this->generateImage($params, $userId, $response_format = 'url');
$resGenImg = $this->generateImage($params, $userId, 'url');
if ($resGenImg['code'] == 0) {
return $resGenImg;
}
......
{
"name" : "Shopro",
"appid" : "__UNI__082C0BA",
"description" : "Shopro是由SheepJS团队开发,使用Uniapp+Vue3技术驱动的在线商城系统,内含诸多功能与丰富的活动,期待您的使用和反馈。",
"versionName" : "3.2.1",
"versionCode" : 321,
"transformPx" : false,
"app-plus" : {
"usingComponents" : true,
"nvueCompiler" : "uni-app",
"nvueStyleCompiler" : "uni-app",
"compilerVersion" : 3,
"nvueLaunchMode" : "fast",
"splashscreen" : {
"alwaysShowBeforeRender" : true,
"waiting" : true,
"autoclose" : true,
"delay" : 0
},
"safearea" : {
"bottom" : {
"offset" : "none"
}
},
"modules" : {
"Payment" : {},
"Share" : {},
"VideoPlayer" : {},
"OAuth" : {}
},
"distribute" : {
"android" : {
"permissions" : [
"<uses-feature android:name=\"android.hardware.camera\"/>",
"<uses-feature android:name=\"android.hardware.camera.autofocus\"/>",
"<uses-permission android:name=\"android.permission.ACCESS_COARSE_LOCATION\"/>",
"<uses-permission android:name=\"android.permission.ACCESS_FINE_LOCATION\"/>",
"<uses-permission android:name=\"android.permission.ACCESS_MOCK_LOCATION\"/>",
"<uses-permission android:name=\"android.permission.ACCESS_NETWORK_STATE\"/>",
"<uses-permission android:name=\"android.permission.ACCESS_WIFI_STATE\"/>",
"<uses-permission android:name=\"android.permission.CALL_PHONE\"/>",
"<uses-permission android:name=\"android.permission.CAMERA\"/>",
"<uses-permission android:name=\"android.permission.CHANGE_NETWORK_STATE\"/>",
"<uses-permission android:name=\"android.permission.CHANGE_WIFI_STATE\"/>",
"<uses-permission android:name=\"android.permission.FLASHLIGHT\"/>",
"<uses-permission android:name=\"android.permission.GET_ACCOUNTS\"/>",
"<uses-permission android:name=\"android.permission.GET_TASKS\"/>",
"<uses-permission android:name=\"android.permission.INTERNET\"/>",
"<uses-permission android:name=\"android.permission.MODIFY_AUDIO_SETTINGS\"/>",
"<uses-permission android:name=\"android.permission.MOUNT_UNMOUNT_FILESYSTEMS\"/>",
"<uses-permission android:name=\"android.permission.READ_CONTACTS\"/>",
"<uses-permission android:name=\"android.permission.READ_LOGS\"/>",
"<uses-permission android:name=\"android.permission.READ_PHONE_STATE\"/>",
"<uses-permission android:name=\"android.permission.READ_SMS\"/>",
"<uses-permission android:name=\"android.permission.RECEIVE_BOOT_COMPLETED\"/>",
"<uses-permission android:name=\"android.permission.RECORD_AUDIO\"/>",
"<uses-permission android:name=\"android.permission.SEND_SMS\"/>",
"<uses-permission android:name=\"android.permission.SYSTEM_ALERT_WINDOW\"/>",
"<uses-permission android:name=\"android.permission.VIBRATE\"/>",
"<uses-permission android:name=\"android.permission.WAKE_LOCK\"/>",
"<uses-permission android:name=\"android.permission.WRITE_CONTACTS\"/>",
"<uses-permission android:name=\"android.permission.WRITE_EXTERNAL_STORAGE\"/>",
"<uses-permission android:name=\"android.permission.WRITE_SETTINGS\"/>",
"<uses-permission android:name=\"android.permission.WRITE_SMS\"/>",
"<uses-permission android:name=\"android.permission.RECEIVE_USER_PRESENT\"/>"
],
"minSdkVersion" : 21,
"schemes" : "shopro"
},
"ios" : {
"urlschemewhitelist" : [ "baidumap", "iosamap" ],
"dSYMs" : false,
"privacyDescription" : {
"NSPhotoLibraryUsageDescription" : "需要同意访问您的相册选取图片才能完善该条目",
"NSPhotoLibraryAddUsageDescription" : "需要同意访问您的相册才能保存该图片",
"NSCameraUsageDescription" : "需要同意访问您的摄像头拍摄照片才能完善该条目",
"NSUserTrackingUsageDescription" : "开启追踪并不会获取您在其它站点的隐私信息,该行为仅用于标识设备,保障服务安全和提升浏览体验"
},
"urltypes" : "shopro",
"capabilities" : {
"entitlements" : {
"com.apple.developer.associated-domains" : [ "applinks:shopro.sheepjs.com" ]
}
},
"idfa" : true
},
"sdkConfigs" : {
"speech" : {},
"ad" : {},
"oauth" : {
"apple" : {},
"weixin" : {
"appid" : "wxae7a0c156****b",
"UniversalLinks" : "https://shopro.sheepjs.com/uni-universallinks/__UNI__082C0BA/"
}
},
"payment" : {
"weixin" : {
"__platform__" : [ "ios", "android" ],
"appid" : "wxae7a0c156****b",
"UniversalLinks" : "https://shopro.sheepjs.com/uni-universallinks/__UNI__082C0BA/"
},
"alipay" : {
"__platform__" : [ "ios", "android" ]
}
},
"share" : {
"weixin" : {
"appid" : "wxae7a0c156****b",
"UniversalLinks" : "https://shopro.sheepjs.com/uni-universallinks/__UNI__082C0BA/"
}
}
},
"orientation" : [ "portrait-primary" ],
"splashscreen" : {
"androidStyle" : "common",
"iosStyle" : "common",
"useOriginalMsgbox" : true
},
"icons" : {
"android" : {
"hdpi" : "",
"xhdpi" : "",
"xxhdpi" : "",
"xxxhdpi" : ""
},
"ios" : {
"appstore" : "",
"ipad" : {
"app" : "",
"app@2x" : "",
"notification" : "",
"notification@2x" : "",
"proapp@2x" : "",
"settings" : "",
"settings@2x" : "",
"spotlight" : "",
"spotlight@2x" : ""
},
"iphone" : {
"app@2x" : "",
"app@3x" : "",
"notification@2x" : "",
"notification@3x" : "",
"settings@2x" : "",
"settings@3x" : "",
"spotlight@2x" : "",
"spotlight@3x" : ""
}
}
}
}
"name": "Shopro",
"appid": "__UNI__082C0BA",
"description": "Shopro是由SheepJS团队开发,使用Uniapp+Vue3技术驱动的在线商城系统,内含诸多功能与丰富的活动,期待您的使用和反馈。",
"versionName": "3.2.1",
"versionCode": 321,
"transformPx": false,
"app-plus": {
"usingComponents": true,
"nvueCompiler": "uni-app",
"nvueStyleCompiler": "uni-app",
"compilerVersion": 3,
"nvueLaunchMode": "fast",
"splashscreen": {
"alwaysShowBeforeRender": true,
"waiting": true,
"autoclose": true,
"delay": 0
},
"quickapp" : {},
"quickapp-native" : {
"icon" : "/static/logo.png",
"package" : "com.example.demo",
"features" : [
{
"name" : "system.clipboard"
}
]
"safearea": {
"bottom": {
"offset": "none"
}
},
"quickapp-webview" : {
"icon" : "/static/logo.png",
"package" : "com.example.demo",
"minPlatformVersion" : 1070,
"versionName" : "1.0.0",
"versionCode" : 100
"modules": {
"Payment": {},
"Share": {},
"VideoPlayer": {},
"OAuth": {}
},
"mp-weixin" : {
"appid" : "wxee40a72b94bccee5",
"setting" : {
"urlCheck" : false,
"minified" : true,
"postcss" : true
"distribute": {
"android": {
"permissions": [
"<uses-feature android:name=\"android.hardware.camera\"/>",
"<uses-feature android:name=\"android.hardware.camera.autofocus\"/>",
"<uses-permission android:name=\"android.permission.ACCESS_COARSE_LOCATION\"/>",
"<uses-permission android:name=\"android.permission.ACCESS_FINE_LOCATION\"/>",
"<uses-permission android:name=\"android.permission.ACCESS_MOCK_LOCATION\"/>",
"<uses-permission android:name=\"android.permission.ACCESS_NETWORK_STATE\"/>",
"<uses-permission android:name=\"android.permission.ACCESS_WIFI_STATE\"/>",
"<uses-permission android:name=\"android.permission.CALL_PHONE\"/>",
"<uses-permission android:name=\"android.permission.CAMERA\"/>",
"<uses-permission android:name=\"android.permission.CHANGE_NETWORK_STATE\"/>",
"<uses-permission android:name=\"android.permission.CHANGE_WIFI_STATE\"/>",
"<uses-permission android:name=\"android.permission.FLASHLIGHT\"/>",
"<uses-permission android:name=\"android.permission.GET_ACCOUNTS\"/>",
"<uses-permission android:name=\"android.permission.GET_TASKS\"/>",
"<uses-permission android:name=\"android.permission.INTERNET\"/>",
"<uses-permission android:name=\"android.permission.MODIFY_AUDIO_SETTINGS\"/>",
"<uses-permission android:name=\"android.permission.MOUNT_UNMOUNT_FILESYSTEMS\"/>",
"<uses-permission android:name=\"android.permission.READ_CONTACTS\"/>",
"<uses-permission android:name=\"android.permission.READ_LOGS\"/>",
"<uses-permission android:name=\"android.permission.READ_PHONE_STATE\"/>",
"<uses-permission android:name=\"android.permission.READ_SMS\"/>",
"<uses-permission android:name=\"android.permission.RECEIVE_BOOT_COMPLETED\"/>",
"<uses-permission android:name=\"android.permission.RECORD_AUDIO\"/>",
"<uses-permission android:name=\"android.permission.SEND_SMS\"/>",
"<uses-permission android:name=\"android.permission.SYSTEM_ALERT_WINDOW\"/>",
"<uses-permission android:name=\"android.permission.VIBRATE\"/>",
"<uses-permission android:name=\"android.permission.WAKE_LOCK\"/>",
"<uses-permission android:name=\"android.permission.WRITE_CONTACTS\"/>",
"<uses-permission android:name=\"android.permission.WRITE_EXTERNAL_STORAGE\"/>",
"<uses-permission android:name=\"android.permission.WRITE_SETTINGS\"/>",
"<uses-permission android:name=\"android.permission.WRITE_SMS\"/>",
"<uses-permission android:name=\"android.permission.RECEIVE_USER_PRESENT\"/>"
],
"minSdkVersion": 21,
"schemes": "shopro"
},
"ios": {
"urlschemewhitelist": [
"baidumap",
"iosamap"
],
"dSYMs": false,
"privacyDescription": {
"NSPhotoLibraryUsageDescription": "需要同意访问您的相册选取图片才能完善该条目",
"NSPhotoLibraryAddUsageDescription": "需要同意访问您的相册才能保存该图片",
"NSCameraUsageDescription": "需要同意访问您的摄像头拍摄照片才能完善该条目",
"NSUserTrackingUsageDescription": "开启追踪并不会获取您在其它站点的隐私信息,该行为仅用于标识设备,保障服务安全和提升浏览体验"
},
"optimization" : {
"subPackages" : true
"urltypes": "shopro",
"capabilities": {
"entitlements": {
"com.apple.developer.associated-domains": [
"applinks:shopro.sheepjs.com"
]
}
},
"plugins" : {},
"lazyCodeLoading" : "requiredComponents",
"usingComponents" : {},
"permission" : {},
"requiredPrivateInfos" : [ "chooseAddress" ]
},
"mp-alipay" : {
"usingComponents" : true
},
"mp-baidu" : {
"usingComponents" : true
},
"mp-toutiao" : {
"usingComponents" : true
},
"mp-jd" : {
"usingComponents" : true
},
"h5" : {
"template" : "index.html",
"router" : {
"mode" : "hash",
"base" : "./"
"idfa": true
},
"sdkConfigs": {
"speech": {},
"ad": {},
"oauth": {
"apple": {},
"weixin": {
"appid": "wxae7a0c156****b",
"UniversalLinks": "https://shopro.sheepjs.com/uni-universallinks/__UNI__082C0BA/"
}
},
"sdkConfigs" : {
"maps" : {}
"payment": {
"weixin": {
"__platform__": [
"ios",
"android"
],
"appid": "wxae7a0c156****b",
"UniversalLinks": "https://shopro.sheepjs.com/uni-universallinks/__UNI__082C0BA/"
},
"alipay": {
"__platform__": [
"ios",
"android"
]
}
},
"async" : {
"timeout" : 20000
"share": {
"weixin": {
"appid": "wxae7a0c156****b",
"UniversalLinks": "https://shopro.sheepjs.com/uni-universallinks/__UNI__082C0BA/"
}
}
},
"orientation": [
"portrait-primary"
],
"splashscreen": {
"androidStyle": "common",
"iosStyle": "common",
"useOriginalMsgbox": true
},
"icons": {
"android": {
"hdpi": "",
"xhdpi": "",
"xxhdpi": "",
"xxxhdpi": ""
},
"title" : "星品购",
"optimization" : {
"treeShaking" : {
"enable" : true
}
"ios": {
"appstore": "",
"ipad": {
"app": "",
"app@2x": "",
"notification": "",
"notification@2x": "",
"proapp@2x": "",
"settings": "",
"settings@2x": "",
"spotlight": "",
"spotlight@2x": ""
},
"iphone": {
"app@2x": "",
"app@3x": "",
"notification@2x": "",
"notification@3x": "",
"settings@2x": "",
"settings@3x": "",
"spotlight@2x": "",
"spotlight@3x": ""
}
}
}
}
},
"quickapp": {},
"quickapp-native": {
"icon": "/static/logo.png",
"package": "com.example.demo",
"features": [
{
"name": "system.clipboard"
}
]
},
"quickapp-webview": {
"icon": "/static/logo.png",
"package": "com.example.demo",
"minPlatformVersion": 1070,
"versionName": "1.0.0",
"versionCode": 100
},
"mp-weixin": {
"appid": "wxee40a72b94bccee5",
"setting": {
"urlCheck": false,
"minified": true,
"postcss": true
},
"optimization": {
"subPackages": true
},
"plugins": {},
"lazyCodeLoading": "requiredComponents",
"usingComponents": {},
"permission": {},
"requiredPrivateInfos": [
"chooseAddress"
]
},
"mp-alipay": {
"usingComponents": true
},
"mp-baidu": {
"usingComponents": true
},
"mp-toutiao": {
"usingComponents": true
},
"mp-jd": {
"usingComponents": true
},
"h5": {
"template": "index.html",
"router": {
"mode": "hash",
"base": "./"
},
"sdkConfigs": {
"maps": {}
},
"async": {
"timeout": 20000
},
"vueVersion" : "3",
"_spaceID" : "192b4892-5452-4e1d-9f09-eee1ece40639",
"locale" : "zh-Hans",
"fallbackLocale" : "zh-Hans"
}
"title": "星品购",
"optimization": {
"treeShaking": {
"enable": true
}
}
},
"vueVersion": "3",
"_spaceID": "192b4892-5452-4e1d-9f09-eee1ece40639",
"locale": "zh-Hans",
"fallbackLocale": "zh-Hans"
}
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment