🎉 限时特惠活动公告、获取优惠码、最高立减3200元
┌─────────────────────────────────────────────────────────────┐
│ 客户端层 │
├──────────────┬──────────────┬──────────────┬────────────────┤
│ 平台后台 │ 租户后台 │ PC端前台 │ 移动端 │
│ (Vue3) │ (Vue3) │ (Nuxt.js) │ (UniApp) │
└──────┬───────┴──────┬───────┴──────┬───────┴───────┬────────┘
│ │ │ │
└──────────────┼──────────────┼───────────────┘
│ │
┌───────▼──────────────▼───────┐
│ API 网关层 │
│ (Nginx/Apache 反向代理) │
└───────┬──────────────────────┘
│
┌───────▼──────────────────────┐
│ 应用服务层 (PHP) │
│ - 平台管理模块 │
│ - 租户管理模块 │
│ - 业务逻辑模块 │
│ - AI 服务模块 │
└───────┬──────────────────────┘
│
┌───────────────┼───────────────┬───────────────┐
│ │ │ │
┌─────▼─────┐ ┌─────▼─────┐ ┌─────▼─────┐ ┌─────▼─────┐
│ MySQL │ │ Redis │ │ OSS │ │ 队列 │
│ 数据库 │ │ 缓存 │ │ 文件存储 │ │ 任务队列 │
└───────────┘ └───────────┘ └───────────┘ └───────────┘human/
├── server/ # 后端服务(PHP)
├── platform/ # 平台管理后台(Vue3)
├── tenant/ # 租户管理后台(Vue3)
├── pc/ # PC端前台(Nuxt.js)
├── uniapp/ # 移动端(UniApp)
├── package.json # 根项目配置
└── README.md # 项目说明server/
├── app/ # 应用目录
│ ├── api/ # API 应用(租户端接口)
│ │ ├── controller/ # 控制器
│ │ │ ├── agent/ # 代理相关
│ │ │ ├── avatar/ # 数字人相关
│ │ │ ├── voice/ # 语音相关
│ │ │ ├── user/ # 用户相关
│ │ │ └── ...
│ │ ├── logic/ # 业务逻辑层
│ │ ├── service/ # 服务层
│ │ ├── validate/ # 验证器
│ │ └── lists/ # 列表查询
│ ├── common/ # 公共模块
│ │ ├── cache/ # 缓存类
│ │ ├── model/ # 模型基类
│ │ ├── enum/ # 枚举类
│ │ ├── logic/ # 公共逻辑
│ │ └── job/ # 队列任务
│ └── tenantapi/ # 租户 API 应用
├── config/ # 配置文件
├── public/ # 公共资源
│ ├── weapp/ # 小程序编译产物
│ └── _nuxt/ # PC端编译产物
├── extend/ # 扩展类库
├── route/ # 路由配置
├── composer.json # Composer 配置
└── .env.example # 环境变量示例platform/
├── src/
│ ├── api/ # API 接口
│ ├── assets/ # 静态资源
│ ├── components/ # 公共组件
│ ├── config/ # 配置文件
│ ├── enums/ # 枚举定义
│ ├── router/ # 路由配置
│ ├── stores/ # 状态管理
│ ├── styles/ # 样式文件
│ ├── utils/ # 工具函数
│ ├── views/ # 页面视图
│ ├── App.vue # 根组件
│ └── main.ts # 入口文件
├── vite.config.ts # Vite 配置
├── package.json # 项目配置
└── tsconfig.json # TypeScript 配置tenant/
├── src/
│ ├── api/ # API 接口
│ │ ├── ai_setting/ # AI 设置
│ │ ├── channel/ # 渠道配置
│ │ ├── marketing/ # 营 销管理
│ │ ├── perms/ # 权限管理
│ │ └── setting/ # 系统设置
│ ├── assets/ # 静态资源
│ ├── components/ # 公共组件
│ ├── router/ # 路由配置
│ ├── stores/ # 状态管理
│ ├── styles/ # 样式文件
│ ├── utils/ # 工具函数
│ ├── views/ # 页面视图
│ ├── App.vue # 根组件
│ └── main.ts # 入口文件
├── vite.config.ts # Vite 配置
├── package.json # 项目配置
└── tsconfig.json # TypeScript 配置pc/
├── src/
│ ├── api/ # API 接口
│ ├── assets/ # 静态资源
│ ├── components/ # 公共组件
│ ├── config/ # 配置文件
│ ├── enums/ # 枚举定义
│ ├── layouts/ # 布局组件
│ ├── pages/ # 页面
│ ├── plugins/ # 插件
│ ├── routes/ # 路由配置
│ ├── stores/ # 状态管理
│ ├── styles/ # 样式文件
│ ├── types/ # 类型定义
│ ├── utils/ # 工具函数
│ ├── app.config.ts # Nuxt 配置
│ └── app.vue # 根组件
├── nuxt.config.ts # Nuxt 配置
├── package.json # 项目配置
└── tsconfig.json # TypeScript 配置uniapp/
├── src/
│ ├── api/ # API 接口
│ ├── assets/ # 静态资源
│ ├── components/ # 公共组件
│ ├── pages/ # 页面
│ ├── utils/ # 工具函数
│ ├── uni_modules/ # UniApp 插件
│ ├── App.vue # 根组件
│ ├── main.ts # 入口文件
│ ├── manifest.json # 应用配置
│ └── pages.json # 页面配置
├── vite.config.ts # Vite 配置
├── package.json # 项目配置
└── tsconfig.json # TypeScript 配置.env 文件,配置数据库、Redis 等信息:APP_DEBUG = true
[DATABASE]
TYPE = mysql
HOSTNAME = 127.0.0.1
DATABASE = likeadmin_saas
USERNAME = root
PASSWORD = root
HOSTPORT = 3306
PREFIX = la_
CHARSET = utf8mb4
[REDIS]
HOST = 127.0.0.1
PORT = 6379
PASSWORD =
SELECT = 0
[QUEUE]
HOST = 127.0.0.1
PORT = 6379
PASSWORD =
SELECT = 1<type>(<scope>): <subject>
<body>
<footer>feat:新功能fix:修复 bugdocs:文档更新style:代码格式调整refactor:重构test:测试相关chore:构建/工具链相关feat(user): 添加用户列表分页功能
- 添加分页参数验证
- 优化查询性能
Closes #123app/api/controller/UserController.phpapp/api/logic/UserLogic.phpapp/common/model/User.phpsrc/api/user.tssrc/stores/user.tstenant_id 字段实现数据隔离,在 BaseModel 中自动添加租户过滤:Content-Type: application/json
token: xxxxxx
tenant-id: xxxxx{
"page": 1,
"limit": 10,
"keyword": "搜索关键词"
}{
"code": 1,
"msg": "success",
"data": {
"list": [],
"count": 100,
"page": 1,
"limit": 10
}
}{
"code": 0,
"msg": "错误信息",
"data": null
}app/api/route.php 中添加路由:app/api/controller/UserController.php:app/api/validate/UserValidate.php:app/api/logic/UserLogic.php:app/common/model/User.php:src/api/user.ts:<template>
<div class="user-list">
<!-- 模板内容 -->
</div>
</template>
<script setup lang="ts">
import { ref, onMounted } from 'vue'
/**
* 组件属性定义
*/
interface Props {
userId: number
title?: string
}
const props = withDefaults(defineProps<Props>(), {
title: '默认标题'
})
/**
* 组件事件定义
*/
interface Emits {
(e: 'update', value: any): void
(e: 'delete', id: number): void
}
const emit = defineEmits<Emits>()
/**
* 响应式数据
*/
const loading = ref(false)
const dataList = ref([])
/**
* 生命周期钩子
*/
onMounted(() => {
fetchData()
})
/**
* 获取数据
*/
async function fetchData() {
loading.value = true
try {
// 获取数据逻辑
} finally {
loading.value = false
}
}
/**
* 更新数据
*/
function handleUpdate(value: any) {
emit('update', value)
}
/**
* 删除数据
*/
function handleDelete(id: number) {
emit('delete', id)
}
</script>
<style scoped lang="scss">
.user-list {
// 样式代码
}
</style>src/router/routes.ts 中配置:src/stores/user.ts:src/utils/request.ts:la_idcreate_timeupdate_timedelete_time(软删除)app/middleware.php 中添加跨域中间件:token 字段tenant-id 字段globalScope 正确配置tenant_id 字段scopedhttps://pro.cnai.art/api_nuxt 目录下的资源文件都已上传index.html - 主页面入口200.html - 200状态页面404.html - 404错误页面_nuxt/ - 所有静态资源(JS、CSS、字体等)home/ - 首页相关图片资源