From 45e50c155edb8f7f642237d1266effb2f163de05 Mon Sep 17 00:00:00 2001 From: dingyongliang Date: Tue, 23 Jan 2024 16:19:33 +0800 Subject: [PATCH] * rm ai funcs from open edition. --- db/zentao.sql | 24 +- module/ai/control.php | 187 --------------- module/ai/model.php | 110 --------- module/ai/view/configuredminiprogram.html.php | 211 ----------------- module/ai/view/createminiprogram.html.php | 121 ---------- module/ai/view/miniprograms.html.php | 14 +- module/ai/view/miniprogramview.html.php | 216 ------------------ module/ai/view/testminiprogram.html.php | 106 --------- module/group/packagemanager.php | 12 +- 9 files changed, 26 insertions(+), 975 deletions(-) delete mode 100644 module/ai/view/configuredminiprogram.html.php delete mode 100644 module/ai/view/createminiprogram.html.php delete mode 100644 module/ai/view/miniprogramview.html.php delete mode 100644 module/ai/view/testminiprogram.html.php diff --git a/db/zentao.sql b/db/zentao.sql index 02e47b5b6d..43bffddd57 100644 --- a/db/zentao.sql +++ b/db/zentao.sql @@ -15950,18 +15950,18 @@ CREATE TABLE IF NOT EXISTS `zt_miniprogram` ( ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; INSERT INTO `zt_miniprogram` (`id`, `name`, `category`, `desc`, `model`, `icon`, `createdBy`, `createdDate`, `editedBy`, `editedDate`, `published`, `publishedDate`, `deleted`, `prompt`, `builtIn`) VALUES -(1, '职业发展导航', 'personal', '职业发展导航是一个旨在帮助用户规划和实现职业目标的AI小程序,为用户提供个性化的建议。', 'openai-gpt35', 'technologist-6', 'system', '37-01-01 00:00:00', 'system', '37-01-01 00:00:00', '1', '37-01-01 00:00:00', '0', '请帮我生成一份职业发展导航,我的教育背景为 <教育背景> ,职位信息为 <职位信息> ,工作经验描述如下: <工作经验> ,掌握的技能为 <掌握的技能> ,为了实现 <职业目标> ,我想做一个 <规划时长> 的计划,我有更多感兴趣的领域为 <更多感兴趣的领域> ,有更多补充内容 <补充信息> ,来追求相关机会和进一步发展,控制在30字以内。', '1'), -(2, '工作汇报', 'work', '旨在帮助您轻松撰写和管理您的工作汇报。无论是每周、每月还是季度性的报告,我们提供了一个简单而高效的平台,让您能够清晰、有条理地记录和展示您的工作成果。', 'openai-gpt35', 'technologist-2', 'system', '37-01-01 00:00:00', 'system', '37-01-01 00:00:00', '1', '37-01-01 00:00:00', '0', '我的基本信息如下: <身份描述> ,请根据我的工作情况生成一份工作汇报,需要包含 <汇报内容维度> ,汇报对象描述为 <汇报对象> ,另外还需要补充 <补充信息> 。下面是我的工作内容基本描述: <工作内容描述> ,控制在30字以内。', '1'), -(3, '市场分析报告', 'work', '市场分析报告小程序是一个旨在帮助用户根据互联网信息快速生成市场分析报告的AI小程序。', 'openai-gpt35', 'chart-6', 'system', '37-01-01 00:00:00', 'system', '37-01-01 00:00:00', '1', '37-01-01 00:00:00', '0', '请帮我生成一份市场分析报告,我目标市场是 <目标市场> ,市场概况为 <市场概况> ,该领域的细分市场有 <细分市场> ,同时我希望能针对 <竞品名称> 展开竞品分析,竞品分析的维度是 <竞品分析维度> ,来帮助我快速的了解市场。', '1'), -(4, '健身计划', 'life', '健身计划小程序旨在帮助您制定和管理个性化的健身计划,让您更轻松、高效地实现健康和体能目标。', 'openai-gpt35', 'cactus-5', 'system', '37-01-01 00:00:00', 'system', '37-01-01 00:00:00', '1', '37-01-01 00:00:00', '0', '我的基本信息如下: <性别> 、 <基本信息> ,我想做一份健身计划,达成 <目标设定> 的效果,对于目标我有如下更多补充:: <目标补充> 。我的初步想法是进行 <计划类型> 方面的类型,训练频次为 <训练频率> ,同时给身体足够的休息和恢复时间,要求如下 <休息与恢复> ,请根据我的上述情况生成一份健身计划,控制在30字以内。', '1'), -(5, '广告创意大师', 'creative', '广告创意大师是一个根据产品卖点,快速为用户提供广告文案的AI小程序。', 'openai-gpt35', 'palette-3', 'system', '37-01-01 00:00:00', 'system', '37-01-01 00:00:00', '1', '37-01-01 00:00:00', '0', '假设我是一名 <角色> ,请结合产品卖点和目标用户,帮我为 <产品名称> 生成 <文案数量> 条计划投放在 <投放渠道> 的广告文案,且保证每条文案的字数不超过30字;产品的核心卖点是 <核心卖点> ,目标用户是 <目标用户> 。', '1'), -(6, '文章撰写助手', 'creative', '旨在为自媒体创作者提供一个强大而便捷的平台,助力您撰写优质的文章并实现更广泛的影响力。', 'openai-gpt35', 'writinghand-3', 'system', '37-01-01 00:00:00', 'system', '37-01-01 00:00:00', '1', '37-01-01 00:00:00', '0', '生成一篇标题为 <文章主题> 的文章,文章内容概要为 <内容概要> ,计划发布到 <发布平台> ,需要注意控制 <规范要求> 。', '1'), -(7, '视频脚本创意工坊', 'creative', '视频脚本创意工房是一个帮助新手视频博主快速梳理视频创作思路,生成拍摄脚本的AI小程序。', 'openai-gpt35', 'notebook-3', 'system', '37-01-01 00:00:00', 'system', '37-01-01 00:00:00', '1', '37-01-01 00:00:00', '0', '假设我是一个新手视频博主,现请以 <主题> 为题,创作一个时长不超过 <视频时长> 分钟, <视频风格> 风格的视频脚本。', '1'), -(8, '旅行规划师', 'life', '旅行规划师可以为您量身定制独一无二的旅程体验,让旅行变得简单而完美。', 'openai-gpt35', 'airplane-6', 'system', '37-01-01 00:00:00', 'system', '37-01-01 00:00:00', '1', '37-01-01 00:00:00', '0', '请帮我生成一份 <旅行天数> 天 <旅行人数> 人的 <目标城市> 旅行规划,期望的交通方式是 <交通方式> ,住宿类型可接受 <住宿类型> ,期望推荐包含 <景点活动> 的行程活动,预算控制在 <预算成本> 之内,更多信息依据 <补充信息> 进行完善。', '1'), -(9, '新人介绍', 'personal', '新人介绍小程序是一个旨在帮助用户在入职当天,快速编写自我介绍的AI小程序。', 'openai-gpt35', 'pencil-7', 'system', '37-01-01 00:00:00', 'system', '37-01-01 00:00:00', '1', '37-01-01 00:00:00', '0', '请帮我生成一份新人介绍,我的年龄是 <年龄>  ,籍贯是 <籍贯信息> ,毕业于 <毕业院校> ,工作经验为 <工作经验> ,日常爱好是 <爱好> ,请将字数控制在300字以内,来帮助我完成新人入职的自我介绍,', '1'), -(10, '营销策划创意', 'creative', '营销策划创意旨在帮助用户生成针对目标受众的策划创意,从而吸引更多用户关注。', 'openai-gpt35', 'pushpin-4', 'system', '37-01-01 00:00:00', 'system', '37-01-01 00:00:00', '1', '37-01-01 00:00:00', '0', '请为 <产品名称> 产品 ,基于 <产品定位> <目标受众> 和期望的 <营销渠道> 等要素形成创意策划策略,更多信息依据 <补充信息> 进行完善,以吸引更多目标客户的关注、提高产品品牌知名度,降低每次点击成本并转化为实际购买行为。', '1'), -(11, '简历优化助手', 'personal', '简历撰写是一个求职简历撰写的小助手,旨在帮助用户优化个人简历、展现职业亮点。', 'openai-gpt35', 'writinghand-5', 'system', '37-01-01 00:00:00', 'system', '37-01-01 00:00:00', '1', '37-01-01 00:00:00', '0', '请帮我优化一份简历使其更具吸引力和专业性,简历需要包括个人信息、教育背景、工作经历、技能专长、项目经验和其他相关信息。我的简历具体内容为: <简历内容> ,期望应聘的目标职位及要求为 <目标职位> ,希望简历能够突出以下工作经历和成就: <工作经验> ,以凸显适用于目标职位的相关经验和能力。请确保满足 <简历格式> 的设计风格 ,更多信息依据 <补充信息> 进行完善。', '1'), -(12, '家装设计', 'life', '家装设计是一个旨在帮助用户轻松设计梦想家居,提供更多设计思路和灵感。', 'openai-gpt35', 'palette-7', 'system', '37-01-01 00:00:00', 'system', '37-01-01 00:00:00', '1', '37-01-01 00:00:00', '0', '我的家在 <居住城市> ,是 <房屋面积> 的 <房屋户型> 户型,想要装修成 <风格偏好> 的风格,预算成本需要控制在 <预算成本> 之内,更多信息依据 <补充信息> 进行完善,请帮我生成具体的设计建议。', '1'); +(1, '职业发展导航', 'personal', '职业发展导航是一个旨在帮助用户规划和实现职业目标的AI小程序,为用户提供个性化的建议。', 'openai-gpt35', 'technologist-6', 'system', NOW(), 'system', NOW(), '1', NOW(), '0', '请帮我生成一份职业发展导航,我的教育背景为 <教育背景> ,职位信息为 <职位信息> ,工作经验描述如下: <工作经验> ,掌握的技能为 <掌握的技能> ,为了实现 <职业目标> ,我想做一个 <规划时长> 的计划,我有更多感兴趣的领域为 <更多感兴趣的领域> ,有更多补充内容 <补充信息> ,来追求相关机会和进一步发展,控制在30字以内。', '1'), +(2, '工作汇报', 'work', '旨在帮助您轻松撰写和管理您的工作汇报。无论是每周、每月还是季度性的报告,我们提供了一个简单而高效的平台,让您能够清晰、有条理地记录和展示您的工作成果。', 'openai-gpt35', 'technologist-2', 'system', NOW(), 'system', NOW(), '1', NOW(), '0', '我的基本信息如下: <身份描述> ,请根据我的工作情况生成一份工作汇报,需要包含 <汇报内容维度> ,汇报对象描述为 <汇报对象> ,另外还需要补充 <补充信息> 。下面是我的工作内容基本描述: <工作内容描述> ,控制在30字以内。', '1'), +(3, '市场分析报告', 'work', '市场分析报告小程序是一个旨在帮助用户根据互联网信息快速生成市场分析报告的AI小程序。', 'openai-gpt35', 'chart-6', 'system', NOW(), 'system', NOW(), '1', NOW(), '0', '请帮我生成一份市场分析报告,我目标市场是 <目标市场> ,市场概况为 <市场概况> ,该领域的细分市场有 <细分市场> ,同时我希望能针对 <竞品名称> 展开竞品分析,竞品分析的维度是 <竞品分析维度> ,来帮助我快速的了解市场。', '1'), +(4, '健身计划', 'life', '健身计划小程序旨在帮助您制定和管理个性化的健身计划,让您更轻松、高效地实现健康和体能目标。', 'openai-gpt35', 'cactus-5', 'system', NOW(), 'system', NOW(), '1', NOW(), '0', '我的基本信息如下: <性别> 、 <基本信息> ,我想做一份健身计划,达成 <目标设定> 的效果,对于目标我有如下更多补充:: <目标补充> 。我的初步想法是进行 <计划类型> 方面的类型,训练频次为 <训练频率> ,同时给身体足够的休息和恢复时间,要求如下 <休息与恢复> ,请根据我的上述情况生成一份健身计划,控制在30字以内。', '1'), +(5, '广告创意大师', 'creative', '广告创意大师是一个根据产品卖点,快速为用户提供广告文案的AI小程序。', 'openai-gpt35', 'palette-3', 'system', NOW(), 'system', NOW(), '1', NOW(), '0', '假设我是一名 <角色> ,请结合产品卖点和目标用户,帮我为 <产品名称> 生成 <文案数量> 条计划投放在 <投放渠道> 的广告文案,且保证每条文案的字数不超过30字;产品的核心卖点是 <核心卖点> ,目标用户是 <目标用户> 。', '1'), +(6, '文章撰写助手', 'creative', '旨在为自媒体创作者提供一个强大而便捷的平台,助力您撰写优质的文章并实现更广泛的影响力。', 'openai-gpt35', 'writinghand-3', 'system', NOW(), 'system', NOW(), '1', NOW(), '0', '生成一篇标题为 <文章主题> 的文章,文章内容概要为 <内容概要> ,计划发布到 <发布平台> ,需要注意控制 <规范要求> 。', '1'), +(7, '视频脚本创意工坊', 'creative', '视频脚本创意工房是一个帮助新手视频博主快速梳理视频创作思路,生成拍摄脚本的AI小程序。', 'openai-gpt35', 'notebook-3', 'system', NOW(), 'system', NOW(), '1', NOW(), '0', '假设我是一个新手视频博主,现请以 <主题> 为题,创作一个时长不超过 <视频时长> 分钟, <视频风格> 风格的视频脚本。', '1'), +(8, '旅行规划师', 'life', '旅行规划师可以为您量身定制独一无二的旅程体验,让旅行变得简单而完美。', 'openai-gpt35', 'airplane-6', 'system', NOW(), 'system', NOW(), '1', NOW(), '0', '请帮我生成一份 <旅行天数> 天 <旅行人数> 人的 <目标城市> 旅行规划,期望的交通方式是 <交通方式> ,住宿类型可接受 <住宿类型> ,期望推荐包含 <景点活动> 的行程活动,预算控制在 <预算成本> 之内,更多信息依据 <补充信息> 进行完善。', '1'), +(9, '新人介绍', 'personal', '新人介绍小程序是一个旨在帮助用户在入职当天,快速编写自我介绍的AI小程序。', 'openai-gpt35', 'pencil-7', 'system', NOW(), 'system', NOW(), '1', NOW(), '0', '请帮我生成一份新人介绍,我的年龄是 <年龄> ,籍贯是 <籍贯信息> ,毕业于 <毕业院校> ,工作经验为 <工作经验> ,日常爱好是 <爱好> ,请将字数控制在300字以内,来帮助我完成新人入职的自我介绍,', '1'), +(10, '营销策划创意', 'creative', '营销策划创意旨在帮助用户生成针对目标受众的策划创意,从而吸引更多用户关注。', 'openai-gpt35', 'pushpin-4', 'system', NOW(), 'system', NOW(), '1', NOW(), '0', '请为 <产品名称> 产品 ,基于 <产品定位> <目标受众> 和期望的 <营销渠道> 等要素形成创意策划策略,更多信息依据 <补充信息> 进行完善,以吸引更多目标客户的关注、提高产品品牌知名度,降低每次点击成本并转化为实际购买行为。', '1'), +(11, '简历优化助手', 'personal', '简历撰写是一个求职简历撰写的小助手,旨在帮助用户优化个人简历、展现职业亮点。', 'openai-gpt35', 'writinghand-5', 'system', NOW(), 'system', NOW(), '1', NOW(), '0', '请帮我优化一份简历使其更具吸引力和专业性,简历需要包括个人信息、教育背景、工作经历、技能专长、项目经验和其他相关信息。我的简历具体内容为: <简历内容> ,期望应聘的目标职位及要求为 <目标职位> ,希望简历能够突出以下工作经历和成就: <工作经验> ,以凸显适用于目标职位的相关经验和能力。请确保满足 <简历格式> 的设计风格 ,更多信息依据 <补充信息> 进行完善。', '1'), +(12, '家装设计', 'life', '家装设计是一个旨在帮助用户轻松设计梦想家居,提供更多设计思路和灵感。', 'openai-gpt35', 'palette-7', 'system', NOW(), 'system', NOW(), '1', NOW(), '0', '我的家在 <居住城市> ,是 <房屋面积> 的 <房屋户型> 户型,想要装修成 <风格偏好> 的风格,预算成本需要控制在 <预算成本> 之内,更多信息依据 <补充信息> 进行完善,请帮我生成具体的设计建议。', '1'); -- DROP TABLE IF EXISTS `zt_aimessage`; CREATE TABLE IF NOT EXISTS `zt_aimessage` ( diff --git a/module/ai/control.php b/module/ai/control.php index ad21e429c3..573f7ab8c7 100644 --- a/module/ai/control.php +++ b/module/ai/control.php @@ -192,22 +192,6 @@ class ai extends control $this->display(); } - /** - * Change mini program `deleted` value. - * - * @param string $appID - * @param string $deleted - * @access public - * @return void - */ - public function deleteMiniProgram($appID, $deleted) - { - $result = $this->ai->deleteMiniProgram($appID, $deleted); - if($result === true) return $this->send(array('result' => 'success', 'locate' => $this->createLink('ai', 'miniPrograms'))); - if(is_string($result)) return $this->sendError($result); - $this->sendError(dao::getError()); - } - /** * Publish a mini program. * @@ -236,177 +220,6 @@ class ai extends control $this->sendError(dao::getError()); } - /** - * Test mini program. - * - * @param string $appID - * @access public - * @return void - */ - public function testMiniProgram($appID) - { - if(!empty($_POST)) - { - $toPublish = $_POST['toPublish']; - unset($_POST['toPublish']); - $this->ai->editMiniProgram($appID); - if($toPublish === '1') $this->ai->publishMiniProgram($appID, '1'); - return print(js::closeModal('parent', 'this')); - } - - $miniProgram = $this->ai->getMiniProgramByID($appID); - if(empty($miniProgram)) return $this->sendError($this->lang->ai->noMiniProgram); - if($miniProgram->builtIn) return $this->sendError('Testing built-in program is not supported.'); - $this->view->currentFields = $this->ai->getMiniProgramFields($appID); - $this->view->currentPrompt = $miniProgram->prompt; - $this->view->appID = $appID; - $this->display(); - } - - /** - * Create a mini program. - * - * @access public - * @return void - */ - public function createMiniProgram() - { - if(!empty($_POST)) - { - $toNext = $_POST['toNext']; - unset($_POST['toNext']); - $requiredFields = array('category' => $this->lang->ai->miniPrograms->category, 'model' => $this->lang->prompt->model, 'name' => $this->lang->prompt->name, 'desc' => $this->lang->ai->miniPrograms->desc); - $errors = $this->ai->verifyRequiredFields($requiredFields); - if($errors !== false) return $this->sendError($errors); - - $isDuplicated = $this->ai->checkDuplicatedAppName($_POST['name']); - if($isDuplicated) return $this->sendError(array('name' => $this->lang->ai->miniPrograms->field->duplicatedNameTip)); - - $appID = $this->ai->createMiniProgram(); - if($appID === false) return $this->sendError(array('message' => $this->lang->fail)); - if($toNext === '1') return $this->sendSuccess(array('message' => $this->lang->saveSuccess, 'locate' => $this->createLink('ai', 'configuredMiniProgram', "appID=$appID"))); - return $this->sendSuccess(array('message' => $this->lang->saveSuccess, 'locate' => $this->createLink('ai', 'editMiniProgram', "appID=$appID"))); - } - - $this->view->iconName = 'writinghand'; - $this->view->iconTheme = 7; - $this->view->categoryList = $this->ai->getCustomCategories(); - $this->view->title = $this->lang->ai->miniPrograms->common; - $this->display(); - } - - /** - * Create a mini program. - * - * @param string $appID - * @access public - * @return void - */ - public function editMiniProgram($appID) - { - if(!empty($_POST)) - { - $toNext = $_POST['toNext']; - unset($_POST['toNext']); - $requiredFields = array('category' => $this->lang->ai->miniPrograms->category, 'model' => $this->lang->prompt->model, 'name' => $this->lang->prompt->name, 'desc' => $this->lang->ai->miniPrograms->desc); - $errors = $this->ai->verifyRequiredFields($requiredFields); - if($errors !== false) return $this->sendError($errors); - - $isDuplicated = $this->ai->checkDuplicatedAppName($_POST['name'], $appID); - if($isDuplicated) return $this->sendError(array('name' => $this->lang->ai->miniPrograms->field->duplicatedNameTip)); - - $result = $this->ai->editMiniProgram($appID); - if($result === false) return $this->sendError(array('message' => $this->lang->fail)); - if($toNext === '1') return $this->sendSuccess(array('message' => $this->lang->saveSuccess, 'locate' => $this->createLink('ai', 'configuredMiniProgram', "appID=$appID"))); - return $this->sendSuccess(array('message' => $this->lang->saveSuccess, 'locate' => $this->createLink('ai', 'editMiniProgram', "appID=$appID"))); - } - - $miniProgram = $this->ai->getMiniProgramByID($appID); - if(empty($miniProgram)) return $this->sendError($this->lang->ai->noMiniProgram); - $this->view->name = $miniProgram->name; - $this->view->desc = $miniProgram->desc; - $this->view->model = $miniProgram->model; - $this->view->category = $miniProgram->category; - list($this->view->iconName, $this->view->iconTheme) = explode('-', $miniProgram->icon); - $this->view->categoryList = $this->ai->getCustomCategories(); - $this->view->title = $this->lang->ai->miniPrograms->common; - $this->display('ai', 'createMiniProgram'); - } - - /** - * Mini program view. - * - * @param string $id - * @access public - * @return void - */ - public function miniProgramView($id) - { - $miniProgram = $this->ai->getMiniProgramByID($id); - if(empty($miniProgram)) return $this->sendError($this->lang->ai->noMiniProgram); - - $this->view->miniProgram = $miniProgram; - $this->view->categoryList = array_merge($this->lang->ai->miniPrograms->categoryList, $this->ai->getCustomCategories()); - $this->view->preAndNext = $this->loadModel('common')->getPreAndNextObject('miniprogram', $id); - $this->view->actions = $this->loadModel('action')->getList('miniProgram', $id); - $this->view->fields = $this->ai->getMiniProgramFields($id); - $this->view->users = $this->loadModel('user')->getPairs('noletter'); - $this->view->title = "{$this->lang->ai->miniPrograms->common}#{$miniProgram->id} $miniProgram->name"; - $this->display(); - } - - /** - * Configured a mini program. - * - * @param string $appID - * @access public - * @return void - */ - public function configuredMiniProgram($appID) - { - if(!common::hasPriv('ai', 'editMiniProgram') && !common::hasPriv('ai', 'createMiniProgram')) return $this->locate($this->createLink('my', 'index')); - if(!empty($_POST)) - { - $toPublish = $_POST['toPublish']; - unset($_POST['toPublish']); - $this->ai->saveMiniProgramFields($appID); - if($toPublish === '1') $this->ai->publishMiniProgram($appID, '1'); - return $this->sendSuccess(array()); - } - - $program = $this->ai->getMiniProgramByID($appID); - if(empty($program)) return $this->sendError($this->lang->ai->noMiniProgram); - - $this->view->currentFields = $this->ai->getMiniProgramFields($appID); - $this->view->currentPrompt = $program->prompt; - $this->view->title = $this->lang->ai->miniPrograms->common; - $this->view->appID = $appID; - $this->display(); - } - - /** - * Export a mini program as zip file. - * - * @param string $appID - * @access public - * @return void - */ - public function exportMiniProgram($appID) - { - $program = $this->ai->getMiniProgramByID($appID); - if($program->builtIn === '1') exit; - $php = $this->ai->createZtAppPhp($appID); - $zip = $this->ai->createZtAppZip($php); - - header('Content-Type: application/zip'); - header('Content-Transfer-Encoding: binary'); - header('Content-Disposition: attachment; filename="' . basename($zip) . '"'); - header('Content-Length: ' . filesize($zip)); - readfile($zip); - unlink($zip); - exit; - } - /** * Import mini program from zip file. * diff --git a/module/ai/model.php b/module/ai/model.php index f857ac8689..3ceeba12ba 100644 --- a/module/ai/model.php +++ b/module/ai/model.php @@ -520,27 +520,6 @@ class aiModel extends model ->fetchAll(); } - /** - * Change mini program `deleted` value. - * - * @param string $appID - * @param string $deleted - * @access public - * @return bool - */ - public function deleteMiniProgram($appID, $deleted = '1') - { - $program = $this->getMiniProgramByID($appID); - if($program->builtIn === '1') return 'Deletion of built-in program is not supported.'; - $this->dao->update(TABLE_MINIPROGRAM) - ->set('deleted')->eq($deleted) - ->where('id')->eq($appID) - ->exec(); - - $this->loadModel('action')->create('miniProgram', $appID, 'deleted'); - return !dao::isError(); - } - /** * @param string $appID * @access public @@ -734,95 +713,6 @@ class aiModel extends model return $appID; } - /** - * Edit a mini program. - * - * @param string $appID - * @access public - * @return bool - */ - public function editMiniProgram($appID) - { - $data = fixer::input('post')->get(); - $data->editedBy = $this->app->user->account; - $data->editedDate = helper::now(); - $data->published = '0'; - if(!empty($data->iconName) && !empty($data->iconTheme)) - { - $data->icon = $data->iconName . '-' . $data->iconTheme; - unset($data->iconName); - unset($data->iconTheme); - } - - $old = $this->getMiniProgramByID($appID); - if($old->builtIn === '1') return false; - - $this->dao->update(TABLE_MINIPROGRAM) - ->data($data) - ->where('id')->eq($appID) - ->exec(); - if(dao::isError()) return false; - - $data->id = $appID; - $changes = common::createChanges($old, $data); - $actionID = $this->loadModel('action')->create('miniProgram', $appID, 'edited'); - if(!empty($changes)) $this->action->logHistory($actionID, $changes); - return true; - } - - /** - * Create a mini program php data file. - * - * @param string $appID - * @return string - */ - public function createZtAppPhp($appID) - { - $miniProgram = $this->getMiniProgramByID($appID); - $fields = $this->getMiniProgramFields($appID); - unset($miniProgram->id); - unset($miniProgram->category); - unset($miniProgram->createdBy); - unset($miniProgram->createdDate); - unset($miniProgram->editedBy); - unset($miniProgram->editedDate); - unset($miniProgram->publishedDate); - $miniProgram->published = '0'; - $miniProgram->fields = array(); - - foreach($fields as $field) - { - unset($field->id); - unset($field->appID); - $miniProgram->fields[] = $field; - } - - $appJson = json_encode($miniProgram); - $content = <<app->getAppRoot() . "tmp/{$miniProgram->name}.ztapp.php"; - file_put_contents($file, $content); - return $file; - } - - /** - * Create mini program zip. - * - * @param string $file - * @return string - */ - public function createZtAppZip($file) - { - $this->app->loadClass('pclzip', true); - $zipPath = substr($file, 0, -3) . 'zip'; - $zip = new pclzip($zipPath); - $zip->create($file, PCLZIP_OPT_REMOVE_ALL_PATH); - return $zipPath; - } - public function extractZtAppZip($file) { $this->app->loadClass('pclzip', true); diff --git a/module/ai/view/configuredminiprogram.html.php b/module/ai/view/configuredminiprogram.html.php deleted file mode 100644 index 513b5f5697..0000000000 --- a/module/ai/view/configuredminiprogram.html.php +++ /dev/null @@ -1,211 +0,0 @@ - - -ai->miniPrograms->placeholder->input); -js::set('deleteTip', $lang->ai->miniPrograms->deleteFieldTip); -js::set('emptyWarning', $lang->ai->miniPrograms->field->emptyNameWarning); -js::set('duplicatedWarning', $lang->ai->miniPrograms->field->duplicatedNameWarning); -js::set('emptyOptionWarning', $lang->ai->miniPrograms->field->emptyOptionWarning); -js::set('appID', $appID); -js::set('publishConfirm', $lang->ai->miniPrograms->publishConfirm); -js::set('emptyPrompterTip', $lang->ai->miniPrograms->emptyPrompterTip); -js::set('currentFields', $currentFields); -js::set('currentPrompt', $currentPrompt); -js::set('promptPlaceholder', $lang->ai->miniPrograms->placeholder->prompt); -js::set('fieldName', $lang->ai->miniPrograms->field->name); -?> - - - - - - - - - - -
-
-
- ai->miniPrograms->field->configuration; ?> -
-
- - - -
-
-
-
-
- ai->miniPrograms->field->debug; ?> -
-
-
-
- ai->miniPrograms->field->contentDebugging; ?> - - ai->miniPrograms->field->contentDebuggingTip; ?> -
- - -
-
-
-
- ai->miniPrograms->field->prompterDesign; ?> - - ai->miniPrograms->field->prompterDesignTip; ?> -
-
-
-
-
-
-
- ai->miniPrograms->field->preview; ?> -
-
-
-
- ai->miniPrograms->field->prompterPreview; ?> - -
-
-
-
-
- ai->miniPrograms->field->resultPreview; ?> -
-
-
-
-
-
- - diff --git a/module/ai/view/createminiprogram.html.php b/module/ai/view/createminiprogram.html.php deleted file mode 100644 index f87977544d..0000000000 --- a/module/ai/view/createminiprogram.html.php +++ /dev/null @@ -1,121 +0,0 @@ - -ai->miniPrograms->iconCheck); ?> -
-
-
- ai->miniPrograms->configuration; ?> - - ai->miniPrograms->downloadTip; ?> - >>ai->miniPrograms->download; ?> -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- createLink('ai', 'miniPrograms'), $lang->goback, '', "class='btn btn-back btn-wide'"); ?> - - -
-
ai->miniPrograms->category; ?> - ai->miniPrograms->categoryList, $categoryList), $category, "class='form-control chosen' required"); ?> -
prompt->model; ?> - ai->miniPrograms->modelList, $model, "class='form-control chosen' required"); ?> -
prompt->name; ?> - ai->miniPrograms->placeholder->name . "'"); ?> -
ai->miniPrograms->desc; ?> - ai->miniPrograms->placeholder->desc . "'"); ?> -
ai->miniPrograms->icon; ?> - -
-
-
-
- - diff --git a/module/ai/view/miniprograms.html.php b/module/ai/view/miniprograms.html.php index 6fe994e21e..1759949931 100644 --- a/module/ai/view/miniprograms.html.php +++ b/module/ai/view/miniprograms.html.php @@ -1,6 +1,7 @@ - ai->miniPrograms->allCategories); +$isNotOpen = $config->edition != 'open'; ?> - diff --git a/module/ai/view/testminiprogram.html.php b/module/ai/view/testminiprogram.html.php deleted file mode 100644 index b763b9c780..0000000000 --- a/module/ai/view/testminiprogram.html.php +++ /dev/null @@ -1,106 +0,0 @@ - - - - - -
" method="post" style="width: 100%; height: 100%; display: flex; flex-direction: column; padding: 24px 32px 32px 32px; background: #fff; overflow: hidden;"> - ai->prompts->action->test; ?> -
-
-
-
- ai->miniPrograms->field->contentDebugging; ?> -
-
- - - $field): ?> - "> - - options)) - { - $fieldOptions = explode(',', $field->options); - $fieldOptions = array_combine($fieldOptions, $fieldOptions); - }; ?> - - - - -
- name; ?> - required) ? '' : 'class="required"'; ?>> - type === 'text') : ?> - - type === 'textarea') : ?> - - type === 'radio') : ?> - - - - -
-
-
-
-
- ai->miniPrograms->field->prompterDesign; ?> -
-
-
-
-
-
-
- ai->miniPrograms->field->prompterPreview; ?> - -
-
-
-
-
- ai->miniPrograms->field->resultPreview; ?> -
-
-
-
-
- - -
- - - - -
- - -
- diff --git a/module/group/packagemanager.php b/module/group/packagemanager.php index d8871375ba..fe384a70e0 100644 --- a/module/group/packagemanager.php +++ b/module/group/packagemanager.php @@ -3851,9 +3851,9 @@ $config->group->package->manageMiniProgram = new stdclass(); $config->group->package->manageMiniProgram->order = 2150; $config->group->package->manageMiniProgram->subset = 'ai'; $config->group->package->manageMiniProgram->privs = array(); -$config->group->package->manageMiniProgram->privs['ai-createMiniProgram'] = array('edition' => 'open,biz,max,ipd', 'vision' => 'rnd', 'order' => 20, 'depend' => array('admin-index', 'ai-miniPrograms', 'ai-miniProgramView'), 'recommend' => array('ai-editMiniProgram', 'ai-testMiniProgram')); -$config->group->package->manageMiniProgram->privs['ai-editMiniProgram'] = array('edition' => 'open,biz,max,ipd', 'vision' => 'rnd', 'order' => 30, 'depend' => array('admin-index', 'ai-miniPrograms', 'ai-miniProgramView'), 'recommend' => array('ai-createMiniProgram', 'ai-publishMiniProgram')); -$config->group->package->manageMiniProgram->privs['ai-testMiniProgram'] = array('edition' => 'open,biz,max,ipd', 'vision' => 'rnd', 'order' => 40, 'depend' => array('admin-index', 'ai-miniPrograms', 'ai-miniProgramView', 'aiapp-miniProgramChat'), 'recommend' => array('ai-createMiniProgram', 'ai-editMiniProgram', 'ai-publishMiniProgram')); +$config->group->package->manageMiniProgram->privs['ai-createMiniProgram'] = array('edition' => 'biz,max,ipd', 'vision' => 'rnd', 'order' => 20, 'depend' => array('admin-index', 'ai-miniPrograms', 'ai-miniProgramView'), 'recommend' => array('ai-editMiniProgram', 'ai-testMiniProgram')); +$config->group->package->manageMiniProgram->privs['ai-editMiniProgram'] = array('edition' => 'biz,max,ipd', 'vision' => 'rnd', 'order' => 30, 'depend' => array('admin-index', 'ai-miniPrograms', 'ai-miniProgramView'), 'recommend' => array('ai-createMiniProgram', 'ai-publishMiniProgram')); +$config->group->package->manageMiniProgram->privs['ai-testMiniProgram'] = array('edition' => 'biz,max,ipd', 'vision' => 'rnd', 'order' => 40, 'depend' => array('admin-index', 'ai-miniPrograms', 'ai-miniProgramView', 'aiapp-miniProgramChat'), 'recommend' => array('ai-createMiniProgram', 'ai-editMiniProgram', 'ai-publishMiniProgram')); $config->group->package->manageMiniProgram->privs['ai-editMiniProgramCategory'] = array('edition' => 'open,biz,max,ipd', 'vision' => 'rnd', 'order' => 50, 'depend' => array('admin-index', 'ai-miniPrograms'), 'recommend' => array()); $config->group->package->browseMiniProgram = new stdclass(); @@ -3861,7 +3861,7 @@ $config->group->package->browseMiniProgram->order = 2160; $config->group->package->browseMiniProgram->subset = 'ai'; $config->group->package->browseMiniProgram->privs = array(); $config->group->package->browseMiniProgram->privs['ai-miniPrograms'] = array('edition' => 'open,biz,max,ipd', 'vision' => 'rnd', 'order' => 10, 'depend' => array('admin-index'), 'recommend' => array()); -$config->group->package->browseMiniProgram->privs['ai-miniProgramView'] = array('edition' => 'open,biz,max,ipd', 'vision' => 'rnd', 'order' => 20, 'depend' => array('admin-index', 'ai-miniPrograms'), 'recommend' => array()); +$config->group->package->browseMiniProgram->privs['ai-miniProgramView'] = array('edition' => 'biz,max,ipd', 'vision' => 'rnd', 'order' => 20, 'depend' => array('admin-index', 'ai-miniPrograms'), 'recommend' => array()); $config->group->package->miniProgramSquare = new stdclass(); $config->group->package->miniProgramSquare->order = 2170; @@ -3883,13 +3883,13 @@ $config->group->package->deleteMiniProgram = new stdclass(); $config->group->package->deleteMiniProgram->order = 2190; $config->group->package->deleteMiniProgram->subset = 'ai'; $config->group->package->deleteMiniProgram->privs = array(); -$config->group->package->deleteMiniProgram->privs['ai-deleteMiniProgram'] = array('edition' => 'open,biz,max,ipd', 'vision' => 'rnd', 'order' => 20, 'depend' => array('admin-index', 'ai-miniPrograms', 'ai-miniProgramView'), 'recommend' => array('ai-createMiniProgram', 'ai-publishMiniProgram', 'ai-testMiniProgram', 'ai-editMiniProgram')); +$config->group->package->deleteMiniProgram->privs['ai-deleteMiniProgram'] = array('edition' => 'biz,max,ipd', 'vision' => 'rnd', 'order' => 20, 'depend' => array('admin-index', 'ai-miniPrograms', 'ai-miniProgramView'), 'recommend' => array('ai-createMiniProgram', 'ai-publishMiniProgram', 'ai-testMiniProgram', 'ai-editMiniProgram')); $config->group->package->impAndExpMiniProgram = new stdclass(); $config->group->package->impAndExpMiniProgram->order = 2191; $config->group->package->impAndExpMiniProgram->subset = 'ai'; $config->group->package->impAndExpMiniProgram->privs = array(); -$config->group->package->impAndExpMiniProgram->privs['ai-exportMiniProgram'] = array('edition' => 'open,biz,max,ipd', 'vision' => 'rnd', 'order' => 10, 'depend' => array('admin-index', 'ai-miniPrograms', 'ai-miniProgramView'), 'recommend' => array('ai-importMiniProgram')); +$config->group->package->impAndExpMiniProgram->privs['ai-exportMiniProgram'] = array('edition' => 'biz,max,ipd', 'vision' => 'rnd', 'order' => 10, 'depend' => array('admin-index', 'ai-miniPrograms', 'ai-miniProgramView'), 'recommend' => array('ai-importMiniProgram')); $config->group->package->impAndExpMiniProgram->privs['ai-importMiniProgram'] = array('edition' => 'open,biz,max,ipd', 'vision' => 'rnd', 'order' => 20, 'depend' => array('admin-index', 'ai-miniPrograms'), 'recommend' => array('ai-exportMiniProgram')); $config->group->package->resource = new stdclass();