返回》

新手用AI从0-1开发网站 - 后台AI提示词

# 新手用AI从0-1开发网站 - 后台AI提示词


## 后台开发前准备:

环境准备:

1. 本地电脑安装mysql数据库,用户名:root,密码:rootroot

2. 新建一个数据库,名称:learning_happy_paradise


## 开发后台服务端

1. 新建后台服务端框架

目录ai-web-01下新建一个后台服务API项目backend-server06,基于nodejs20+nodemon+Express+Mysql+JWT

- 在该项目下的package.json中添加必要依赖,注意不要添加其他非必要依赖,一次性安装

- 创建.gitignore文件,并添加nodejs项目常见的忽略内容

- 项目运行默认端口4000

- 项目搭建好后需要运行npm install命令安装依赖

- mysql数据库连接信息,用户名:root,密码:rootroot,数据库名:learning_happy_paradise

- 不要集成Sequelize组件


2. 框架集成以下功能

错误处理

日志记录(Winston)

文件上传(Multer)

API速率限制

安全头部设置(Helmet)

跨域资源共享(CORS)



## 数据库建表(可以用deepseek,节省cursor余额)

1. AI新建表

create建表语句

我现在要建一个表,mysql数据库,叫圈子主题表,主要字段包括类型、标题、简介、内容、图片、创建时间、更新时间、状态、作者、作者ID、作者名称


我现在要建一个表,叫圈子表,主要字段包括圈子分类、圈子类型(公开、私密)、圈子名称、封面、圈子简介、内容介绍、价格、年费类型、创建时间、更新时间、状态、作者、作者ID、作者名称


我现在要建一个表,叫圈子排行榜单表,主要字段包括圈子分类、圈子id以及圈子相关一些可以冗余的字段,还有排行相关的字段


我们现在做圈子类、知识分享的app,需要设计登录注册功能,给我写一个mysql的建表语句,建一个用户表


我们现在做圈子类、知识分享的app,需要设计一个圈子分类表,给我写一个mysql的建表语句,建一个circle_category表



## AI初始化测试数据

生成10条测试数据的初始化表语句


## 写后台接口


根据页面分析接口列表:

16. 注册接口

17. 登录接口

1. 获取圈子列表接口   

2. 根据圈子类型获取学习榜单接口

3. 创建圈子的接口

4. 获取圈子详情接口

5. 获取圈子评论列表接口

6. 获取圈子主题列表接口

7. 立即加入圈子接口

8. 获取圈子成员列表接口

9. 圈子成员关注(取关)接口列表

10. 新增圈子主题点赞接口

11. 新增圈子主题评论接口

12. 新增圈子主题接口

13. 获取圈子主题评论列表接口

14. 上传图片接口

15. 上传附件接口


1. 新建注册接口

新增一个注册接口,注册的字段包括:CREATE TABLE `users` (

  `user_id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '用户ID,主键',

  `username` varchar(50) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '用户名,用于登录和显示',

  `email` varchar(100) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '电子邮箱,用于登录和通知',

  `mobile` varchar(20) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '手机号码,用于登录和验证',

  `password_hash` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '加密后的密码',

  `salt` varchar(100) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '密码加密盐值',

  `avatar_url` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '头像URL',

  `nickname` varchar(50) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '用户昵称',

  `bio` varchar(200) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '个人简介',

  `gender` tinyint(4) DEFAULT '0' COMMENT '性别:0-未知 1-男 2-女',

  `birthday` date DEFAULT NULL COMMENT '生日',

  `status` tinyint(4) NOT NULL DEFAULT '1' COMMENT '账号状态:0-禁用 1-正常 2-未激活',

  `last_login_time` datetime DEFAULT NULL COMMENT '最后登录时间',

  `last_login_ip` varchar(50) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '最后登录IP',

  `register_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '注册时间',

  `register_ip` varchar(50) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '注册IP',

  `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',

  `is_verified` tinyint(4) DEFAULT '0' COMMENT '是否认证:0-未认证 1-已认证',

  `verification_code` varchar(100) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '邮箱/手机验证码',

  `verification_expire` datetime DEFAULT NULL COMMENT '验证码过期时间',

  `role` tinyint(4) DEFAULT '1' COMMENT '用户角色:1-普通用户 2-内容创作者 3-管理员',

  PRIMARY KEY (`user_id`),

  UNIQUE KEY `idx_username` (`username`),

  UNIQUE KEY `idx_email` (`email`),

  KEY `idx_mobile` (`mobile`),

  KEY `idx_status` (`status`),

  KEY `idx_register_time` (`register_time`)

) ENGINE=InnoDB AUTO_INCREMENT=11 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='用户表'


新建获取圈子列表接口,响应结果返回的字段,可以参考这个表结构

CREATE TABLE `circle` (

  `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '圈子ID,主键',

  `category_id` bigint(20) NOT NULL COMMENT '圈子分类ID',

  `category_name` varchar(50) NOT NULL COMMENT '圈子分类名称',

  `type` tinyint(4) NOT NULL DEFAULT '1' COMMENT '圈子类型:1-公开,2-私密',

  `name` varchar(100) NOT NULL COMMENT '圈子名称',

  `cover` varchar(255) DEFAULT NULL COMMENT '封面图片URL',

  `introduction` varchar(500) DEFAULT NULL COMMENT '圈子简介',

  `content_description` text COMMENT '内容详细介绍',

  `price` decimal(10,2) DEFAULT '0.00' COMMENT '价格',

  `annual_fee_type` tinyint(4) DEFAULT NULL COMMENT '年费类型:1-免费,2-年费,3-月费,4-一次性付费',

  `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',

  `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',

  `status` tinyint(4) NOT NULL DEFAULT '1' COMMENT '状态:0-禁用,1-正常,2-审核中,3-已删除',

  `author_id` bigint(20) NOT NULL COMMENT '作者ID',

  `author_name` varchar(50) NOT NULL COMMENT '作者名称',

  `member_count` int(11) DEFAULT '0' COMMENT '成员数量(可选)',

  `post_count` int(11) DEFAULT '0' COMMENT '帖子数量(可选)',

  PRIMARY KEY (`id`),

  KEY `idx_category` (`category_id`),

  KEY `idx_author` (`author_id`),

  KEY `idx_status` (`status`),

  KEY `idx_create_time` (`create_time`)

) ENGINE=InnoDB AUTO_INCREMENT=13 DEFAULT CHARSET=utf8mb4 COMMENT='圈子表'




新建获取圈子分类列表接口,响应结果字段包括:

CREATE TABLE `circle_category` (

  `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '分类ID',

  `name` varchar(50) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '分类名称',

  `description` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '分类描述',

  `icon` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '分类图标URL',

  `cover_image` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '分类封面图URL',

  `parent_id` bigint(20) DEFAULT '0' COMMENT '父分类ID,0表示一级分类',

  `level` tinyint(4) DEFAULT '1' COMMENT '分类层级:1-一级分类,2-二级分类',

  `sort_order` int(11) DEFAULT '0' COMMENT '排序权重,数字越大越靠前',

  `status` tinyint(4) DEFAULT '1' COMMENT '状态:0-禁用,1-启用',

  `circle_count` int(11) DEFAULT '0' COMMENT '该分类下的圈子数量',

  `created_at` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',

  `updated_at` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',

  `created_by` bigint(20) DEFAULT NULL COMMENT '创建人ID',

  `updated_by` bigint(20) DEFAULT NULL COMMENT '更新人ID',

  `is_deleted` tinyint(1) DEFAULT '0' COMMENT '是否删除:0-未删除,1-已删除',

  PRIMARY KEY (`id`),

  KEY `idx_parent_id` (`parent_id`),

  KEY `idx_sort_order` (`sort_order`),

  KEY `idx_status` (`status`)

) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='圈子分类表'



新建一个创建圈子的接口,请求字段包括如下字段

CREATE TABLE `circle` (

  `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '圈子ID,主键',

  `category_id` bigint(20) NOT NULL COMMENT '圈子分类ID',

  `category_name` varchar(50) NOT NULL COMMENT '圈子分类名称',

  `type` tinyint(4) NOT NULL DEFAULT '1' COMMENT '圈子类型:1-公开,2-私密',

  `name` varchar(100) NOT NULL COMMENT '圈子名称',

  `cover` varchar(255) DEFAULT NULL COMMENT '封面图片URL',

  `introduction` varchar(500) DEFAULT NULL COMMENT '圈子简介',

  `content_description` text COMMENT '内容详细介绍',

  `price` decimal(10,2) DEFAULT '0.00' COMMENT '价格',

  `annual_fee_type` tinyint(4) DEFAULT NULL COMMENT '年费类型:1-免费,2-年费,3-月费,4-一次性付费',

  `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',

  `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',

  `status` tinyint(4) NOT NULL DEFAULT '1' COMMENT '状态:0-禁用,1-正常,2-审核中,3-已删除',

  `author_id` bigint(20) NOT NULL COMMENT '作者ID',

  `author_name` varchar(50) NOT NULL COMMENT '作者名称',

  `member_count` int(11) DEFAULT '0' COMMENT '成员数量(可选)',

  `post_count` int(11) DEFAULT '0' COMMENT '帖子数量(可选)',

  PRIMARY KEY (`id`),

  KEY `idx_category` (`category_id`),

  KEY `idx_author` (`author_id`),

  KEY `idx_status` (`status`),

  KEY `idx_create_time` (`create_time`)

) ENGINE=InnoDB AUTO_INCREMENT=11 DEFAULT CHARSET=utf8mb4 COMMENT='圈子表'


,响应结果字段包括:



新建根据圈子类型获取学习榜单接口,请求字段包括圈子类型字段,响应结果字段包括:

CREATE TABLE `circle_rank` (

  `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键ID',

  `category_id` bigint(20) NOT NULL COMMENT '圈子分类ID',

  `category_name` varchar(50) NOT NULL COMMENT '圈子分类名称',

  `circle_id` bigint(20) NOT NULL COMMENT '圈子ID',

  `circle_name` varchar(100) NOT NULL COMMENT '圈子名称(冗余)',

  `circle_cover` varchar(255) DEFAULT NULL COMMENT '圈子封面(冗余)',

  `circle_intro` varchar(500) DEFAULT NULL COMMENT '圈子简介(冗余)',

  `author_name` varchar(50) DEFAULT NULL COMMENT '作者名称(冗余)',

  `heat_score` decimal(10,2) DEFAULT '0.00' COMMENT '热度评分',

  `member_count` int(11) DEFAULT '0' COMMENT '成员数量',

  `post_count` int(11) DEFAULT '0' COMMENT '帖子数量',

  `like_count` int(11) DEFAULT '0' COMMENT '点赞数量',

  `comment_count` int(11) DEFAULT '0' COMMENT '评论数量',

  `view_count` int(11) DEFAULT '0' COMMENT '浏览数量',

  `activity_score` decimal(10,2) DEFAULT '0.00' COMMENT '活跃度评分',

  `rank_position` int(11) DEFAULT '0' COMMENT '当前排名位置',

  `rank_change` int(11) DEFAULT '0' COMMENT '排名变化(相比上次)',

  `rank_type` tinyint(4) NOT NULL COMMENT '排行榜类型:1-总榜,2-分类榜,3-新人榜,4-飙升榜等',

  `rank_date` date NOT NULL COMMENT '排行榜日期',

  `rank_time` datetime NOT NULL COMMENT '排行榜生成时间',

  PRIMARY KEY (`id`),

  UNIQUE KEY `uk_rank_record` (`circle_id`,`rank_type`,`rank_date`),

  KEY `idx_category` (`category_id`),

  KEY `idx_rank_type` (`rank_type`),

  KEY `idx_rank_date` (`rank_date`),

  KEY `idx_heat_score` (`heat_score`),

  KEY `idx_rank_position` (`rank_position`)

) ENGINE=InnoDB AUTO_INCREMENT=11 DEFAULT CHARSET=utf8mb4 COMMENT='圈子排行榜单表'


新增一个用post方法获取圈子详情接口,请求字段包括圈子ID字段,响应结果字段需要包含圈子详情,还要返回圈子的精华帖子列表、会员权益列表,参考表结构如下:

CREATE TABLE `circle` (

  `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '圈子ID,主键',

  `category_id` bigint(20) NOT NULL COMMENT '圈子分类ID',

  `category_name` varchar(50) NOT NULL COMMENT '圈子分类名称',

  `type` tinyint(4) NOT NULL DEFAULT '1' COMMENT '圈子类型:1-公开,2-私密',

  `name` varchar(100) NOT NULL COMMENT '圈子名称',

  `cover` varchar(255) DEFAULT NULL COMMENT '封面图片URL',

  `introduction` varchar(500) DEFAULT NULL COMMENT '圈子简介',

  `content_description` text COMMENT '内容详细介绍',

  `price` decimal(10,2) DEFAULT '0.00' COMMENT '价格',

  `annual_fee_type` tinyint(4) DEFAULT NULL COMMENT '年费类型:1-免费,2-年费,3-月费,4-一次性付费',

  `create_time` datetime NOT NULL,

  `update_time` datetime NOT NULL,

  `status` tinyint(4) NOT NULL DEFAULT '1' COMMENT '状态:0-禁用,1-正常,2-审核中,3-已删除',

  `author_id` bigint(20) NOT NULL COMMENT '作者ID',

  `author_name` varchar(50) NOT NULL COMMENT '作者名称',

  `member_count` int(11) DEFAULT '0' COMMENT '成员数量(可选)',

  `post_count` int(11) DEFAULT '0' COMMENT '帖子数量(可选)',

  PRIMARY KEY (`id`),

  KEY `idx_category` (`category_id`),

  KEY `idx_author` (`author_id`),

  KEY `idx_status` (`status`),

  KEY `idx_create_time` (`create_time`)

) ENGINE=InnoDB AUTO_INCREMENT=15 DEFAULT CHARSET=utf8mb4 COMMENT='圈子表'


CREATE TABLE `circle_topics` (

  `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主题ID',

  `circle_id` bigint(20) NOT NULL COMMENT '所属圈子ID',

  `category_id` bigint(20) DEFAULT NULL COMMENT '关联的圈子分类ID',

  `topic_name` varchar(100) NOT NULL COMMENT '主题名称',

  `topic_description` varchar(500) DEFAULT NULL COMMENT '主题描述',

  `topic_icon` varchar(255) DEFAULT NULL COMMENT '主题图标URL',

  `parent_topic_id` bigint(20) DEFAULT NULL COMMENT '父主题ID(支持主题嵌套)',

  `topic_level` tinyint(4) NOT NULL DEFAULT '1' COMMENT '主题级别:1-普通,2-精华,3-置顶精华',

  `topic_content` text COMMENT '主题内容',

  `is_sticky` tinyint(1) NOT NULL DEFAULT '0' COMMENT '是否置顶:0-否,1-是',

  `sticky_expire_time` datetime DEFAULT NULL COMMENT '置顶过期时间',

  `sort_order` int(11) DEFAULT '0' COMMENT '排序权重',

  `recommend_weight` int(11) DEFAULT '0' COMMENT '推荐权重(人工干预值)',

  `post_count` int(11) DEFAULT '0' COMMENT '主题下帖子数量',

  `view_count` bigint(20) DEFAULT '0' COMMENT '主题总浏览量',

  `follower_count` int(11) DEFAULT '0' COMMENT '关注人数',

  `last_post_time` datetime DEFAULT NULL COMMENT '最后发帖时间',

  `status` tinyint(4) NOT NULL DEFAULT '1' COMMENT '状态:0-禁用,1-启用,2-热门,3-推荐',

  `create_time` datetime NOT NULL COMMENT '创建时间',

  `update_time` datetime NOT NULL COMMENT '更新时间',

  `creator_id` bigint(20) DEFAULT NULL COMMENT '创建人ID',

  `last_editor_id` bigint(20) DEFAULT NULL COMMENT '最后编辑人ID',

  PRIMARY KEY (`id`),

  UNIQUE KEY `uk_circle_topic` (`circle_id`,`topic_name`),

  KEY `idx_circle_id` (`circle_id`),

  KEY `idx_category_id` (`category_id`),

  KEY `idx_parent_topic_id` (`parent_topic_id`),

  KEY `idx_topic_level` (`topic_level`),

  KEY `idx_is_sticky` (`is_sticky`),

  KEY `idx_status` (`status`),

  KEY `idx_sort_order` (`sort_order`),

  KEY `idx_recommend_weight` (`recommend_weight`),

  KEY `idx_last_post_time` (`last_post_time`),

  CONSTRAINT `fk_topics_category` FOREIGN KEY (`category_id`) REFERENCES `circle_category` (`id`) ON DELETE SET NULL,

  CONSTRAINT `fk_topics_circle` FOREIGN KEY (`circle_id`) REFERENCES `circle` (`id`) ON DELETE CASCADE

) ENGINE=InnoDB AUTO_INCREMENT=46 DEFAULT CHARSET=utf8mb4 COMMENT='圈子主题表'

CREATE TABLE `circle_member_benefits` (

  `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '权益ID',

  `circle_id` bigint(20) NOT NULL COMMENT '圈子ID',

  `benefit_name` varchar(100) NOT NULL COMMENT '权益名称',

  `description` varchar(500) DEFAULT NULL COMMENT '权益描述',

  `sort_order` int(11) DEFAULT '0' COMMENT '排序序号',

  `create_time` datetime NOT NULL,

  `update_time` datetime NOT NULL,

  PRIMARY KEY (`id`),

  KEY `idx_circle_id` (`circle_id`),

  CONSTRAINT `fk_benefits_circle` FOREIGN KEY (`circle_id`) REFERENCES `circle` (`id`) ON DELETE CASCADE

) ENGINE=InnoDB AUTO_INCREMENT=21 DEFAULT CHARSET=utf8mb4 COMMENT='圈子会员权益表'




## 测试后台接口

我们用apifox或者postman测试接口工具

测试接口以后是不是返回了接口数据


THE END