Files
huangjingfen/pro_v3.5.1_副本/app/services/system/AiServices.php
apple 434aa8c69d feat(fsgx): 完成全部24项开发任务 Phase1-7
Phase1 后端核心:
- 新增 fsgx_v1.sql 迁移脚本(is_queue_goods/frozen_points/available_points/no_assess)
- SystemConfigServices 返佣设置扩展(周期人数/分档比例/范围/时机)
- StoreOrderCreateServices 周期循环佣金计算
- StoreOrderTakeServices 佣金发放后同步冻结积分
- StoreProductServices/StoreProduct 保存 is_queue_goods

Phase2 后端接口:
- GET /api/hjf/brokerage/progress 佣金周期进度
- GET /api/hjf/assets/overview 资产总览
- HjfPointsServices 每日 frozen_points 0.4‰ 释放定时任务
- PUT /adminapi/hjf/member/{uid}/no_assess 不考核接口
- GET /adminapi/hjf/points/release_log 积分日志接口

Phase3 前端清理:
- hjfCustom.js 路由精简(仅保留 points/log)
- hjfQueue.js/hjfMember.js API 清理/重定向至 CRMEB 原生接口
- pages.json 公排→推荐佣金/佣金记录/佣金规则

Phase4-5 前端改造:
- queue/status.vue 推荐佣金进度页整体重写
- 商品详情/订单确认/支付结果页文案与逻辑改造
- 个人中心/资产页/引导页/规则页文案改造
- HjfQueueProgress/HjfRefundNotice/HjfAssetCard 组件改造
- 推广中心嵌入佣金进度摘要
- hjfMockData.js 全量更新(公排字段→佣金字段)

Phase6 Admin 增强:
- 用户列表新增 frozen_points/available_points 列及不考核操作按钮
- hjfPoints.js USE_MOCK=false 对接真实积分日志接口

Phase7 配置文档:
- docs/fsgx-phase7-config-checklist.md 后台配置与全链路验收清单

Made-with: Cursor
2026-03-23 22:32:19 +08:00

509 lines
18 KiB
PHP
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<?php
namespace app\services\system;
use app\services\BaseServices;
use app\services\product\product\StoreProductServices;
use app\services\product\sku\StoreProductAttrValueServices;
use app\services\serve\ServeServices;
class AiServices extends BaseServices
{
/**
* @var ServeServices
*/
protected ServeServices $services;
/**
* 构造方法
* @param ServeServices $serveServices 服务实例
*/
public function __construct(ServeServices $serveServices)
{
$this->services = $serveServices;
}
/**
* AI类型分发处理
* @param array $data 请求数据
* @return array|string
*/
public function AiType($data)
{
switch ($data['type']) {
case 'product_name':
$result = $this->productName($data);
break;
case 'product_info':
$result = $this->productInfo($data);
break;
case 'share_content':
$result = $this->shareContent($data);
break;
case 'product_attr':
$result = $this->productAttr($data);
break;
case 'product_specs':
$result = $this->productSpecs($data);
break;
case 'product_reply':
$result = $this->productReply($data);
break;
case 'community':
$result = $this->community($data);
break;
case 'community_title':
$result = $this->communityTitle($data);
break;
case 'community_content':
$result = $this->communityContent($data);
break;
case 'article_title':
$result = $this->articleTitle($data);
break;
case 'article_content':
$result = $this->articleContent($data);
break;
default:
return '暂不支持该类型';
}
return $result;
}
/**
* AI生成商品名称
* @param array $data 请求数据
* @return array
*/
public function productName($data)
{
$systemContent = '
请严格按此规范执行:
1. 核心指令:
• 生成3条差异化标题每条30-50字符合电商平台SEO规则
• 必须包含核心关键词前10字+核心卖点(材质/功能)+附加价值(促销/场景/人群)
• 禁止:重复词、违禁词、模糊描述(如“优质”“多功能”)
2. 优化维度:
▶ 标题1流量型关键词堆砌+高频搜索词,例:
“2024新款男士运动鞋透气防滑跑步鞋轻便百搭男鞋网面休闲鞋耐磨减震”
▶ 标题2转化型强促销+紧迫感,例:
“【限时5折】男士运动鞋春秋季飞织透气跑步鞋学生潮流男鞋次日达退货运费险”
▶ 标题3场景型痛点解决方案
“健身房必备!男士爆款运动鞋防滑减震跑步鞋宽脚掌透气训练鞋久穿不累”
3. 输出格式仅返回JSON键名固定为t1/t2/t3节省字符
{
"t1": "标题1关键词+功能)",
"t2": "标题2促销+服务)",
"t3": "标题3场景+痛点)"
}
4. 特殊要求:
• 若标题含促销需标注具体力度如“7折”而非“促销中”
• 人群定向需明确(如“中老年”“宝妈”而非“通用”)
• 材质/规格必须具体如“新疆棉”“20000mAh”
';
$userContent = $data['message'];
$result = $this->services->ai()->chat($systemContent, $userContent);
return array_values(json_decode($result, true));
}
/**
* AI生成商品简介
* @param array $data 请求数据
* @return array
*/
public function productInfo($data)
{
$systemContent = '
请严格按此规范执行:
1. 核心指令:
• 生成3条差异化商品简介每条不少于80字符合电商平台SEO规则
• 必须包含核心关键词前10字+核心卖点(材质/功能)+附加价值(促销/场景/人群)
• 禁止:重复词、违禁词、模糊描述(如“优质”“多功能”)
2. 优化维度:
▶ 标题1流量型关键词堆砌+高频搜索词,例:
“2024新款男士运动鞋透气防滑跑步鞋轻便百搭男鞋网面休闲鞋耐磨减震”
▶ 标题2转化型强促销+紧迫感,例:
“【限时5折】男士运动鞋春秋季飞织透气跑步鞋学生潮流男鞋次日达退货运费险”
▶ 标题3场景型痛点解决方案
“健身房必备!男士爆款运动鞋防滑减震跑步鞋宽脚掌透气训练鞋久穿不累”
3. 输出格式仅返回JSON键名固定为t1/t2/t3节省字符
{
"t1": "标题1关键词+功能)",
"t2": "标题2促销+服务)",
"t3": "标题3场景+痛点)"
}
4. 特殊要求:
• 若标题含促销需标注具体力度如“7折”而非“促销中”
• 人群定向需明确(如“中老年”“宝妈”而非“通用”)
• 材质/规格必须具体如“新疆棉”“20000mAh”
';
$userContent = $data['store_name'] . $data['message'];
$result = $this->services->ai()->chat($systemContent, $userContent);
return array_values(json_decode($result, true));
}
/**
* AI生成推广文案
* @param array $data 请求数据
* @return array
*/
public function shareContent($data)
{
$systemContent = '
请严格按此规范执行:
1. 核心指令:
• 生成3条差异化推广文案每条不少于100字符合各平台投放规范
• 必须包含核心卖点前15字+用户痛点+行动号召
• 禁止:虚假宣传、绝对化用语(如"最佳""第一")、模糊表述
2. 优化维度:
▶ 文案1痛点刺激型直击用户痛点+解决方案,例:
"跑步膝盖疼新一代缓震科技运动鞋采用XX减震材料降低关节冲击力30%,立即体验→"
▶ 文案2场景共鸣型构建使用场景+情感共鸣,例:
"加班到深夜的你值得更好人体工学办公椅8小时久坐不腰酸今日下单享免费安装→"
▶ 文案3数据实证型量化效果+权威背书,例:
"92%用户回购的爆款面膜中科院认证XX成分实测28天淡化细纹45%,限时买二送一→"
3. 输出格式仅返回JSON键名固定为c1/c2/c3
{
"c1": "文案1痛点型",
"c2": "文案2场景型",
"c3": "文案3数据型"
}
4. 特殊要求:
• 痛点描述需具体(如"久坐腰酸"而非"不舒服"
• 数据必须真实可查(如"实验室实测""用户调研数据"
• 行动号召明确(如"立即咨询""限时特惠"需标注截止时间)
';
$userContent = $data['store_name'] . $data['message'];
$result = $this->services->ai()->chat($systemContent, $userContent);
return array_values(json_decode($result, true));
}
/**
* AI生成商品规格属性
* @param array $data 请求数据
* @return array
*/
public function productAttr($data)
{
$systemContent = '
请严格按此规范执行:
1. 核心指令:
• 自动识别商品类目并生成完整规格参数
• 参数值必须为具体可选项(非范围值)
• 包含:基础参数+技术参数+功能参数+扩展参数
• 最多三个规格类型每个规格最多10个值
2. 输出格式仅返回JSON键名固定为value/detail
{
"rule_name": "商品类目"
"spec": [
{
"value": "规格名称1",
"detail": [
"规格值1-1",
"规格值1-2"
]
},
{
"value": "规格名称2",
"detail": [
"规格值2-1",
"规格值2-2"
]
},
...
]
}
';
$userContent = $data['message'];
$result = $this->services->ai()->chat($systemContent, $userContent);
return json_decode($result, true);
}
/**
* AI生成商品参数模板
* @param array $data 请求数据
* @return array
*/
public function productSpecs($data)
{
$systemContent = '
请严格按此规范执行:
1. 核心指令:
• 自动识别商品类目并生成完整规格参数
• 参数值必须为具体可选项(非范围值)
• 包含:基础参数+技术参数+功能参数+扩展参数
• 生成最少5个specs参数name和value都是字符串,sort为0
2. 输出格式仅返回JSON
{
"name": "参数模板名称",
"specs": [
{
"name": "参数名称1",
"value": "参数值1",
"sort": 0,
},
{
"name": "参数名称2",
"value": "参数值2",
"sort": 0,
}
...
]
}
';
$userContent = $data['message'];
$result = $this->services->ai()->chat($systemContent, $userContent);
return json_decode($result, true);
}
/**
* AI生成商品评价
* @param array $data 请求数据
* @return array
*/
public function productReply($data)
{
$productInfo = app()->make(StoreProductServices::class)->get($data['product_id']);
$sku = app()->make(StoreProductAttrValueServices::class)->value(['product_id' => $data['product_id'], 'unique' => $data['unique']], 'suk');
$date = date('Y-m-d H:i:s');
$systemContent = '
请严格按此规范执行:
1. 输出格式仅返回JSON一条数据也按照多条数据的格式返回
{
[
"product_id": ' . $data['product_id'] . ',
"unique": ' . $data['unique'] . ',
"store_name": ' . $productInfo['store_name'] . ',
"product_image": ' . $productInfo['image'] . ',
"delivery_score": 5,
"service_score": 5,
"product_score": 5,
"reply_score": "3",
"add_time": ' . $date . ',
"nickname": "随机生成的用户名",
"avatar": "在https://pro.crmeb.net/uploads/thumb_water/0e41012b7d7df9404ca456df1c7625c6.png,https://pro.crmeb.net/uploads/thumb_water/b0c0dc1d88c00870e16a2e21ca53b71a.png,https://pro.crmeb.net/uploads/thumb_water/037bb2585a07753bf9115d7f16bf5fe3.png,https://pro.crmeb.net/uploads/thumb_water/34dad9517ed6fcc7fdd4c035abad098c.png中随机选择一个",
"comment": "评价内容"
]
...
}
2. 核心指令:
• 根据提示词生成10条差异化好评每条不少于80字
• 必须包含:使用体验+具体优点+场景描述
• 禁止:重复内容、虚假评价、模糊表述
• 评价内容生成到comment字段用户随机昵称生成到nickname字段其余固定
• 生成3条评价
3. 评价维度(根据提示词自动分配):
• 质量评价占比40%):材质/做工/耐用性
• 功能评价占比30%):实际使用效果
• 服务评价占比20%):物流/包装/售后
• 场景评价占比10%):特定使用场景体验
4. 特殊要求:
• 优先体现提示词相关内容
• 使用真实体验式口吻(如"收到后使用了半个月..."
• 包含具体细节(如"缝线很密实""按键反应灵敏"
• 每条评价需有明确侧重点
';
$userContent = '商品名称:' . $data['store_name'] . ',商品规格:' . $sku . ',提示词:' . $data['message'] . ', 评价维度:质量、功能、服务、场景';
$result = $this->services->ai()->chat($systemContent, $userContent);
var_dump($result);
return json_decode($result, true);
}
/**
* AI生成社区内容
* @param array $data 请求数据
* @return array
*/
public function community($data)
{
$systemContent = '
请严格按此规范执行:
1. 核心指令:
• 生成3条内容
• title标题要准确概括核心内容不超过20个汉字避免夸张表述
• content内容要包含核心内容内容的类型自适应描述/心得/观点等并且符合各平台规范不少于200字避免重复内容
• topic_name话题名称要和内容相关话题名称不超过10个汉字
• 禁止使用网络流行语和过度口语化表达
• 保持语言自然流畅,符合中文表达习惯
2. 内容要求:
▶ 标题规范:
• 准确概括核心内容
• 不超过20个汉字
• 避免夸张表述
▶ 正文规范:
• 首段自然引入主题50-80字
• 主体:根据内容类型自由展开
• 结尾恰当收束30-50字
3. 输出格式仅返回JSON
{
[
"title": "生成标题",
"content": "生成正文内容",
"topic_name": "话题名称",
]
...
}
4. 特殊要求:
• 描述类:需包含五感细节(视觉/听觉/触觉等)
• 心得类:需包含真实使用体验
• 观点类:需包含合理逻辑推导
• 禁止使用网络流行语和过度口语化表达
';
$userContent = $data['message'];
$result = $this->services->ai()->chat($systemContent, $userContent);
return json_decode($result, true);
}
/**
* AI生成社区标题
* @param array $data 请求数据
* @return array
*/
public function communityTitle($data)
{
$systemContent = '
请严格按此规范执行:
1. 核心指令:
• 生成3条差异化标题每条不超过20字需准确概括文章内容
• 必须包含核心主题前10字+内容亮点+情感基调
• 禁止:标题党、无关词、模糊表述(如"精彩""感人"
2. 优化维度:
▶ 标题1流量型关键词聚焦+热点结合,例:"三月樱花拍摄指南手机出片的5个构图技巧"
▶ 标题2共鸣型情感触动+场景代入,例:"老城咖啡馆记事:藏在拿铁里的人生百态"
▶ 标题3悬念型问题引发+价值提示,例:"为何这间民宿让90%客人续住?丽江庭院设计秘密"
3. 输出格式仅返回JSON
{
"t1": "标题1关键词型",
"t2": "标题2情感型",
"t3": "标题3悬念型"
}
4. 特殊要求:
• 情感基调需明确(如"怀旧""治愈"而非"好看"
• 内容亮点需具体(如"手机摄影技巧""庭院设计细节"
• 文化类内容需标注地域/时期(如"唐代服饰""江南民居"
';
$userContent = $data['message'];
$result = $this->services->ai()->chat($systemContent, $userContent);
return array_values(json_decode($result, true));
}
/**
* AI优化社区内容
* @param array $data 请求数据
* @return array
*/
public function communityContent($data)
{
$systemContent = '
请严格按此规范执行:
1. 核心指令:
• 生成3条差异化优化版本每条保持原篇幅±10%
• 每条需体现不同优化方向(结构/语言/情感)
• 禁止:改变核心事实、虚构内容
2. 优化维度:
▶ 版本1结构优化型
重组段落逻辑
增强过渡衔接
突出核心论点
▶ 版本2语言润色型
提升表达精准度
丰富修辞手法
统一语言风格
▶ 版本3情感强化型
深化细节描写
增强场景代入感
把控情感节奏
3. 输出格式仅返回JSON
{
"v1": "结构优化版本",
"v2": "语言润色版本",
"v3": "情感强化版本"
}
4. 特殊要求:
• 技术类:专业术语需验证
• 文学类:保留原修辞特色
• 商业类:符合广告法规定
';
$userContent = $data['message'];
$result = $this->services->ai()->chat($systemContent, $userContent);
return array_values(json_decode($result, true));
}
/**
* AI生成文章标题
* @param array $data 请求数据
* @return array
*/
public function articleTitle($data)
{
$systemContent = '
请严格按此规范执行:
1. 核心指令:
• 生成3条差异化标题每条不超过20字需准确概括文章内容
• 必须包含核心主题前10字+内容亮点+情感基调
• 禁止:标题党、无关词、模糊表述(如"精彩""感人"
2. 优化维度:
▶ 标题1流量型关键词聚焦+热点结合,例:"三月樱花拍摄指南手机出片的5个构图技巧"
▶ 标题2共鸣型情感触动+场景代入,例:"老城咖啡馆记事:藏在拿铁里的人生百态"
▶ 标题3悬念型问题引发+价值提示,例:"为何这间民宿让90%客人续住?丽江庭院设计秘密"
3. 输出格式仅返回JSON
{
"t1": "标题1关键词型",
"t2": "标题2情感型",
"t3": "标题3悬念型"
}
4. 特殊要求:
• 情感基调需明确(如"怀旧""治愈"而非"好看"
• 内容亮点需具体(如"手机摄影技巧""庭院设计细节"
• 文化类内容需标注地域/时期(如"唐代服饰""江南民居"
';
$userContent = $data['message'];
$result = $this->services->ai()->chat($systemContent, $userContent);
return array_values(json_decode($result, true));
}
/**
* AI优化文章内容
* @param array $data 请求数据
* @return array
*/
public function articleContent($data)
{
$systemContent = '
请严格按此规范执行:
1. 核心指令:
• 生成3条差异化优化版本每条保持原篇幅±10%
• 每条需体现不同优化方向(结构/语言/情感)
• 禁止:改变核心事实、虚构内容
2. 优化维度:
▶ 版本1结构优化型
重组段落逻辑
增强过渡衔接
突出核心论点
▶ 版本2语言润色型
提升表达精准度
丰富修辞手法
统一语言风格
▶ 版本3情感强化型
深化细节描写
增强场景代入感
把控情感节奏
3. 输出格式仅返回JSON
{
"v1": "结构优化版本",
"v2": "语言润色版本",
"v3": "情感强化版本"
}
4. 特殊要求:
• 技术类:专业术语需验证
• 文学类:保留原修辞特色
• 商业类:符合广告法规定
';
$userContent = $data['message'];
$result = $this->services->ai()->chat($systemContent, $userContent);
return array_values(json_decode($result, true));
}
}