返回列表
阅读进度
0%
tutorial

二次开发基础教程

艺创全能AI平台二次开发基础教程,从零开始介绍项目架构、环境搭建、目录结构、开发规范、API接口、数据库设计等核心内容,帮助开发者快速上手平台的二次开发工作。

技术团队

技术团队

架构师

一、项目概述

1.1 项目简介

艺创全能AI 是基于 likeadmin 框架开发的 AI 智能创作平台,集成了多种 AI 能力,包括智能对话、AI 绘画、AI 音乐、AI 视频、知识库问答等功能。采用前后端分离架构,支持多端部署。

1.2 技术栈总览

技术栈
后端服务PHP 8.0 + ThinkPHP 6.0
管理后台Vue 3 + TypeScript + Vite + Element Plus
PC 前台Nuxt.js 3 + Vue 3 + Element Plus
移动端uni-app + Vue 3 + TypeScript
数据库MySQL 5.7 + PostgreSQL (pgVector) + Redis
容器化Docker + Docker Compose

二、项目目录结构

跟目录/
├── admin/                 # 管理后台前端 (Vue 3)
├── pc/                    # PC端前台 (Nuxt.js)
├── server/                # 后端服务 (ThinkPHP 6)
├── uniapp/                # 移动端 (uni-app)
├── docker/                # Docker 配置文件
└── README.md

三、后端服务 (server/)

3.1 目录结构

server/
├── app/
│   ├── adminapi/          # 管理后台API模块
│   │   ├── controller/    # 控制器 (34个)
│   │   ├── lists/         # 列表查询 (28个)
│   │   ├── logic/         # 业务逻辑 (31个)
│   │   ├── validate/      # 验证器 (27个)
│   │   └── service/       # 服务层
│   ├── api/               # 前台API模块
│   │   ├── controller/    # 控制器 (34个)
│   │   ├── lists/         # 列表查询 (14个)
│   │   ├── logic/         # 业务逻辑 (28个)
│   │   ├── validate/      # 验证器 (24个)
│   │   └── service/       # 服务层 (6个)
│   ├── common/            # 公共模块
│   │   ├── cache/         # 缓存处理
│   │   ├── command/       # 命令行工具 (12个)
│   │   ├── enum/          # 枚举定义 (33个)
│   │   ├── model/         # 数据模型 (35个目录)
│   │   ├── service/       # 公共服务 (21个目录)
│   │   └── logic/         # 公共逻辑
│   ├── queue/             # 队列任务
│   ├── common.php         # 公共函数
│   └── BaseController.php # 基础控制器
├── config/                # 配置文件
│   ├── ai.php             # AI模型配置 (核心)
│   ├── database.php       # 数据库配置
│   └── ...
├── extend/                # 扩展类库
├── public/                # 公共资源/入口文件
├── route/                 # 路由配置
└── runtime/               # 运行时目录

3.2 核心业务模块

3.2.1 AI 对话服务 (app/common/service/ai/chat/)

支持多种大语言模型:

文件模型服务
OpenaiService.phpOpenAI (GPT系列)
BaiduService.php百度文心一言
QwenService.php阿里通义千问
ZhipuService.php智谱清言 (GLM)
XunfeiService.php讯飞星火
DoubaoService.php字节豆包
OllamaService.phpOllama (本地模型)
AzureService.phpAzure OpenAI
MiniMaxService.phpMiniMax

新增 AI 模型步骤:

  1. app/common/service/ai/chat/ 目录创建服务类
  2. 继承 ChatService 基类
  3. config/ai.phpChatModels 中添加配置
  4. 实现 chat()streamChat() 方法

3.2.2 AI 绘画服务 (app/common/service/draw/engine/)

文件绘画引擎
DrawMj.phpMidjourney
DrawSd.phpStable Diffusion
DrawDalle3.phpDALL-E 3
DrawDoubao.php豆包绘画
DrawAceData.phpAceData

3.2.3 其他 AI 服务

目录功能
service/music/AI 音乐生成
service/video/AI 视频生成
service/voice/语音合成/识别
service/recall/知识检索

3.3 数据模型目录 (app/common/model/)

model/
├── auth/          # 权限相关 (8个)
├── chat/          # 对话记录 (9个)
├── draw/          # 绘画记录 (12个)
├── kb/            # 知识库 (14个)
├── member/        # 会员系统 (8个)
├── music/         # 音乐 (5个)
├── video/         # 视频 (4个)
├── user/          # 用户 (5个)
├── distribution/  # 分销 (3个)
├── recharge/      # 充值 (3个)
├── order/         # 订单
└── ...

3.4 命令行工具 (app/common/command/)

命令功能
Crontab.php定时任务
QueryMusic.php音乐任务查询
QueryVideo.php视频任务查询
QueryPPT.phpPPT任务查询
QueryRefund.php退款查询
ContentCensor.php内容审核
DrawFail.php绘画失败处理

3.5 环境配置

复制 .example.env.env 并配置:

APP_DEBUG = false

[DATABASE]
TYPE = mysql
HOSTNAME = 127.0.0.1
DATABASE = chatmoney
USERNAME = root
PASSWORD = your_password
HOSTPORT = 3306
CHARSET = utf8mb4
PREFIX = cw_

[PGSQL]
HOSTNAME = localhost
DATABASE = postgres
USERNAME = postgres
PASSWORD = your_password
HOSTPORT = 5432

[CACHE]
DRIVER = redis
HOST = 127.0.0.1
PORT = 6379
PASSWORD = ""

[PROJECT]
DEMO_ENV = false
UNIQUE_IDENTIFICATION = your_key

四、管理后台 (admin/)

4.1 目录结构

admin/
├── src/
│   ├── api/               # API 接口定义
│   │   ├── ai_setting/    # AI设置 (7个)
│   │   ├── ai_application/# AI应用 (6个)
│   │   ├── ai_draw/       # AI绘画 (8个)
│   │   ├── knowledge_base/# 知识库 (5个)
│   │   ├── marketing/     # 营销 (11个)
│   │   ├── digital_human/ # 数字人 (5个)
│   │   └── ...
│   ├── views/             # 页面视图
│   │   ├── ai_application/# AI应用管理 (10个)
│   │   ├── ai_setting/    # AI设置 (8个)
│   │   ├── knowledge_base/# 知识库管理 (8个)
│   │   ├── marketing/     # 营销管理 (9个)
│   │   ├── consumer/      # 用户管理
│   │   ├── finance/       # 财务管理
│   │   └── ...
│   ├── components/        # 公共组件 (25个)
│   │   ├── editor/        # 富文本编辑器
│   │   ├── material/      # 素材选择器
│   │   ├── upload/        # 上传组件
│   │   ├── markdown/      # Markdown渲染
│   │   └── ...
│   ├── hooks/             # 组合式函数 (8个)
│   ├── stores/            # Pinia 状态管理
│   ├── router/            # 路由配置
│   ├── utils/             # 工具函数 (11个)
│   └── styles/            # 样式文件
├── vite.config.ts         # Vite 配置
├── tailwind.config.js     # Tailwind 配置
└── package.json

4.2 技术依赖

{
  "dependencies": {
    "vue": "^3.2.37",
    "vue-router": "^4.0.16",
    "pinia": "^2.0.14",
    "element-plus": "2.2.9",
    "axios": "^0.27.2",
    "echarts": "^5.3.3",
    "@wangeditor/editor": "^5.1.12",
    "markdown-it": "^13.0.1"
  }
}

4.3 环境配置

复制 .env.development.example.env.development

NODE_ENV = 'development'
VITE_APP_BASE_URL='http://your-api-domain.com'

4.4 开发命令

# 安装依赖
npm install

# 开发模式
npm run dev

# 构建生产版本
npm run build

# 类型检查
npm run type-check

4.5 新增页面步骤

  1. src/views/ 创建页面目录和 Vue 文件
  2. src/api/ 创建对应的 API 文件
  3. 在管理后台「菜单管理」中添加菜单配置
  4. 配置权限标识 (perms)

五、PC 前台 (pc/)

5.1 目录结构

pc/
├── src/
│   ├── pages/             # 页面目录
│   │   ├── chat/          # 智能对话
│   │   ├── draw/          # AI 绘画 (8个)
│   │   ├── creation/      # AI 创作
│   │   ├── application/   # 应用中心 (6个)
│   │   ├── dialogue/      # 对话记录 (4个)
│   │   ├── digital_human/ # 数字人 (5个)
│   │   ├── music/         # AI 音乐
│   │   ├── video/         # AI 视频
│   │   ├── mind_map/      # 思维导图
│   │   ├── ai_ppt/        # AI PPT (5个)
│   │   ├── robot_square/  # 机器人广场
│   │   ├── search/        # AI 搜索
│   │   └── user/          # 用户中心
│   ├── components/        # 公共组件 (43个)
│   │   ├── the-chat/      # 聊天组件
│   │   ├── the-chat-msg/  # 消息组件 (7个)
│   │   ├── markdown/      # Markdown (8个)
│   │   ├── music/         # 音乐播放器 (5个)
│   │   ├── waterfall/     # 瀑布流 (4个)
│   │   └── ...
│   ├── api/               # API 接口 (23个)
│   ├── stores/            # 状态管理 (8个)
│   ├── composables/       # 组合式函数 (10个)
│   ├── middleware/        # 中间件 (2个)
│   ├── layouts/           # 布局组件
│   └── utils/             # 工具函数 (17个)
├── nuxt.config.ts         # Nuxt 配置
├── tailwind.config.js     # Tailwind 配置
└── package.json

5.2 技术依赖

{
  "dependencies": {
    "vue": "^3.3.4",
    "nuxt": "3.12.4",
    "pinia": "2.0.3",
    "element-plus": "2.7.3",
    "markdown-it": "13.0.1",
    "fabric": "5.3.0",
    "markmap-lib": "^0.17.0",
    "tinymce": "^7.2.0"
  }
}

5.3 环境配置

复制 .env.development.example.env.development

VITE_API_URL=http://your-api-domain.com
VITE_BASE_URL=/
VITE_SSR=false

5.4 开发命令

# 安装依赖 (使用 pnpm)
pnpm install

# 开发模式
pnpm dev

# 构建 (SSG 静态生成)
pnpm build

# 构建 (SSR 服务端渲染)
pnpm build:ssr

5.5 SSR/SSG 配置

nuxt.config.ts 中控制渲染模式:

export default defineNuxtConfig({
  ssr: !!envData.VITE_SSR,  // true: SSR, false: SPA
  // ...
})

六、移动端 (uniapp/)

6.1 目录结构

uniapp/
├── src/
│   ├── pages/             # 页面目录
│   │   ├── index/         # 首页
│   │   ├── ai_creation/   # AI 创作
│   │   ├── kb/            # 知识库
│   │   ├── login/         # 登录
│   │   ├── user/          # 用户中心
│   │   └── webview/       # 内嵌网页
│   ├── components/        # 公共组件 (30个)
│   │   ├── chat-input/    # 聊天输入框
│   │   ├── chat-record-item/ # 聊天记录项
│   │   ├── ua-markdown/   # Markdown渲染
│   │   ├── recorder/      # 录音组件
│   │   └── ...
│   ├── api/               # API 接口 (21个)
│   ├── stores/            # 状态管理 (5个)
│   ├── hooks/             # 组合式函数 (8个)
│   ├── utils/             # 工具函数 (19个)
│   ├── uni_modules/       # uni-app 插件 (32个)
│   ├── pages.json         # 页面配置
│   └── manifest.json      # 应用配置
├── vite.config.ts         # Vite 配置
├── tailwind.config.js     # Tailwind 配置
└── package.json

6.2 支持平台

  • H5 网页
  • 微信小程序
  • 支付宝小程序
  • 抖音小程序
  • App (Android/iOS)

6.3 环境配置

复制 .env.development.example.env.development

VITE_APP_BASE_URL='http://your-api-domain.com'

6.4 开发命令

# 安装依赖
npm install

# H5 开发
npm run dev:h5

# 微信小程序开发
npm run dev:mp-weixin

# App 开发
npm run dev:app

# H5 构建
npm run build:h5

# 微信小程序构建
npm run build:mp-weixin

七、Docker 部署

7.1 配置文件

复制 docker/docker-compose.examle.ymldocker-compose.yml

7.2 服务组成

服务镜像端口
nginxlikeadmin/nginx:1.23.1180:80
phplikeadmin/php:8.0.30.3-fpm7314:7314
mysqllikeadmin/mysql:5.7.2913306:3306
postgreslikeadmin/postgres:17.515432:5432
redislikeadmin/redis:7.4.0-

7.3 启动命令

cd docker
docker-compose up -d

八、AI 模型配置详解

8.1 配置文件位置

server/config/ai.php

8.2 对话模型配置结构

'ChatModels' => [
    'openai' => [
        'logo' => 'resource/image/models/gpt3.5.png',
        'name' => 'OpenAI',
        'website' => 'https://platform.openai.com',
        'configs' => [
            [
                'type' => 'group',
                'name' => '参数设置',
                'config' => [
                    [
                        'key' => 'context_num',      // 上下文数
                        'name' => '上下文数',
                        'type' => 'slider',
                        'default' => 3,
                        'range' => [0, 60],
                    ],
                    [
                        'key' => 'temperature',      // 温度
                        'name' => '词汇属性',
                        'type' => 'slider',
                        'default' => 1.0,
                        'range' => [0, 2.0],
                    ],
                    // ...
                ]
            ],
            [
                'key' => 'agency_api',              // 代理域名
                'name' => '代理域名',
                'type' => 'input',
            ],
            [
                'key' => 'global_directives',       // 全局指令
                'name' => '对话指令',
                'type' => 'textarea',
            ]
        ]
    ],
    // 其他模型...
]

8.3 支持的模型列表

对话模型:

  • OpenAI (GPT-3.5/4/4o/o1)
  • 百度文心一言 (ERNIE)
  • 阿里通义千问 (Qwen)
  • 智谱清言 (GLM)
  • 讯飞星火
  • 字节豆包
  • Azure OpenAI
  • MiniMax
  • 百川智能
  • Ollama (本地)

向量模型:

  • OpenAI text-embedding
  • 讯飞
  • 智谱
  • 通义千问
  • 豆包

九、API 接口规范

9.1 接口路由

路由前缀模块说明
/adminapi/*adminapi管理后台接口
/api/*api前台接口

9.2 响应格式

{
    "code": 1,
    "msg": "success",
    "data": {},
    "show": 0
}

9.3 错误码

code说明
1成功
0失败
-1未登录
10001参数错误

9.4 新增 API 步骤

  1. app/adminapi/controller/app/api/controller/ 创建控制器
  2. app/*/logic/ 创建业务逻辑类
  3. app/*/validate/ 创建验证器
  4. app/*/lists/ 创建列表查询类 (如需分页)

十、常见二开场景

10.1 新增 AI 对话模型

步骤:

  1. 创建服务类 app/common/service/ai/chat/NewModelService.php
<?php
namespace app\common\service\ai\chat;

class NewModelService extends SystemService
{
    public function channel(): string
    {
        return 'newmodel';
    }

    public function chat(array $chatRecord): void
    {
        // 实现对话逻辑
    }

    public function streamChat(array $chatRecord): \Generator
    {
        // 实现流式对话逻辑
        yield $content;
    }
}
  1. config/ai.php 添加配置
'newmodel' => [
    'logo' => 'resource/image/models/newmodel.png',
    'name' => '新模型名称',
    'website' => 'https://xxx.com',
    'configs' => [
        // 参数配置...
    ]
]

10.2 新增管理后台功能

步骤:

  1. 创建控制器 app/adminapi/controller/NewFeatureController.php
  2. 创建逻辑类 app/adminapi/logic/NewFeatureLogic.php
  3. 创建验证器 app/adminapi/validate/NewFeatureValidate.php
  4. 前端在 admin/src/views/ 创建页面
  5. 前端在 admin/src/api/ 创建接口
  6. 在管理后台「菜单管理」添加菜单

10.3 新增前台功能

步骤:

  1. 后端在 app/api/controller/ 创建控制器
  2. PC端在 pc/src/pages/ 创建页面
  3. 移动端在 uniapp/src/pages/ 创建页面
  4. 更新 pages.json (uni-app)

十一、数据库设计

11.1 核心表

表名说明
cw_user用户表
cw_admin管理员表
cw_chat_records对话记录
cw_draw_records绘画记录
cw_kb_know知识库
cw_kb_know_files知识库文件
cw_order订单表
cw_member_package会员套餐
cw_recharge_package充值套餐

11.2 PostgreSQL (pgVector)

用于向量存储,支持知识库的向量检索功能。


十二、队列任务

12.1 配置

[QUEUE]
NAME = kb
HOST = redis-host
PORT = 6379
PASSWORD = ""

12.2 启动队列

php think queue:work --queue kb

12.3 队列任务位置

app/queue/ 目录


十三、定时任务

13.1 访问方式

GET /crontab

13.2 任务管理

通过管理后台「系统设置」-「定时任务」进行配置


十四、注意事项

14.1 开发规范

  1. 遵循 ThinkPHP 6.0 开发规范
  2. 前端遵循 Vue 3 Composition API 规范
  3. 使用 TypeScript 进行类型约束
  4. API 返回统一格式
  5. 业务逻辑放在 Logic 层

14.2 安全建议

  1. 生产环境关闭 APP_DEBUG
  2. 修改默认数据库密码
  3. 配置正确的 CORS 策略
  4. 定期更新依赖包

14.3 性能优化

  1. 开启 OPcache
  2. 使用 Redis 缓存
  3. 合理配置队列
  4. 前端开启 CDN

十五、常用命令汇总

15.1 后端命令

# 清除缓存
php think clear

# 生成代码
php think curd

# 队列处理
php think queue:work --queue kb

# 定时任务
php think crontab

15.2 前端命令

# Admin 管理后台
cd admin
npm run dev       # 开发
npm run build     # 构建

# PC 前台
cd pc
pnpm dev          # 开发
pnpm build        # 构建

# 移动端
cd uniapp
npm run dev:h5          # H5开发
npm run dev:mp-weixin   # 小程序开发
npm run build:h5        # H5构建
npm run build:mp-weixin # 小程序构建

十六、版本信息

  • 项目版本:4.4.8
  • PHP 版本:>= 8.0
  • Node 版本:>= 16
  • Vue 版本:3.x
  • ThinkPHP 版本:6.0

扫码联系客服
客服二维码
售后服务
专业售后团队为您服务