作者:程序员小白条
智能 AI 校园二手交易平台(Intelligent AI Campus Second-hand Trading Platform)是一个利用 AI 模型和数据分析为用户提供个性化二手商品推荐、商品评分、交易攻略分享等功能的综合性系统。该系统融合了 AI 购物顾问、图表数据分析、买家留言、购物日历、商品浏览、攻略收藏、聊天室互动等多种功能,项目功能总计 20+,并支持拓展会员功能以实现商业化处理。
Ps:如果你想要一个既简单又新颖的校园二手交易工具,那么这个项目将会是不错的选择~
1)欢迎页:介绍项目的功能、亮点以及如何使用。
2)主页:使用 Swiper 轮播图展示亮点商品图片,吸引用户眼球。
3)公告浏览:查看近期管理员发布的公告,获取最新平台动态。
4)买家留言:支持弹幕留言功能,用户可以进行添加,并使用弹幕玩法(继续、暂停、显示、隐藏、加速、减速)。
5)二手商品交易攻略分享:用户可以分享二手商品交易攻略,使用 Markdown 编辑器。可以浏览他人分享的交易攻略(分页,支持模糊搜索帖子标题)。
6)AI 对话:用户可以与 AI 购物顾问进行聊天,AI 会根据用户的偏好推荐二手商品,并采用协同过滤推荐算法提升推荐精准度。AI 会在数据库层面查询商品和价格以及新旧程度,然后根据用户现有的余额进行适配性推荐。
7)商品列表:展示所有二手商品,支持评分、浏览量、收藏量等功能,帮助用户快速了解热门商品。
8)商品推荐:根据协同过滤算法推荐商品,本质是基于商品评分。
9)个人主页:展示个人购物记录日历(直接用 0 和 1 展示是否绿色购物),个人订单详情查看,个人评论查看,收藏的二手商品攻略查看,个人详情信息查看,聊天室功能(用户和管理员进行对话,支持 Emoji 表情包)。
10)注册功能:用户输入账号、密码,重复确认密码后完成注册。
1)用户管理:编辑用户、查看用户、删除用户,支持分页和模糊查询(用户名和用户简介)。
2)公告管理:发布新公告、修改公告、删除公告,支持分页。
3)二手商品攻略管理:添加新攻略、修改攻略、删除攻略,支持分页和模糊查询(帖子标题、内容、标签、用户 ID)。
4)AI 对话管理:删除用户与 AI 的对话记录,支持分页和模糊查询(用户 ID、用户输入、AI 生成内容)。
5)商品管理:添加新商品、修改商品、删除商品,支持分页和模糊查询(商品名、商品描述)。
6)商品类别管理:添加新类别、修改类别、删除类别,支持分页和模糊查询(类别 ID、类别名称)。
7)商品订单管理:查看、修改、删除用户订单,支持分页和模糊查询(订单 ID、用户 ID、订单状态)。
8)商品评分管理:查看、修改商品评分,支持分页和模糊查询(商品 ID、用户 ID、评分)。
欢迎页 和 个人主页 同用户一致。
1)前后端分离架构:本项目采用前后端分离的模式,前端构建页面,后端提供数据接口,前端调用后端接口获取数据并重新渲染页面。
2)Token 认证机制:前端在 Authorization 字段提供 Token 令牌,API 认证使用 Token 认证,使用 HTTP Status Code 表示状态,数据返回格式使用 JSON。
3)跨域支持与权限校验:后端已开启 CORS 跨域支持,采用权限拦截器进行权限校验,并检查登录情况。
4)全局异常处理:添加全局异常处理机制,捕获异常,增强系统健壮性。
5)数据可视化:前端使用 Echarts 可视化库实现商品热度分析图表(折线图、饼图),并通过 Loading 配置提升加载体验。
6)接口文档自动化:引入 knife4j 依赖,使用 Swagger + Knife4j 自动生成 OpenAPI 规范的接口文档,前端可以直接通过 Package.json 文件中的 openapi 命令生成前端接口请求代码和类型代码(高效)。
7)组件库与权限管理:使用 ElementUI PLUS 组件库进行前端界面搭建,快速实现页面生成,并实现前后端统一权限管理、多环境切换等功能。
8)灵活查询与代码生成:基于 MyBatis Plus 框架的 QueryWrapper 实现对 MySQL 数据库的灵活查询,并配合 MyBatisX 插件自动生成后端 CRUD 基础代码,减少重复工作。
9)代码生成器:后端 FreeMarker 模版自带代码生成器,一键生成 Controller、Service、DTO、VO 等功能,稍加修改即可实现传统增删改查。
10)性能优化:前端路由懒加载、CDN 静态资源缓存优化、图片懒加载效果,提升用户体验。
11)AI 购物顾问:AI 充当购物顾问,AI 模型可以随时切换版本,支持接入其他 AI 模型接口,直接下载官方 Java 工具类即可集成到本项目。
12)购物日历与互动功能:引入购物日历记录功能,支持绿色购物标记(0 和 1 表示),并集成攻略评论、收藏、浏览量等功能,与传统增删改查项目有显著区别。
13)样式美观与适配:本项目注重样式美观,部分功能在手机端也有良好的适配效果,并支持全局样式一键切换。
1)找到 SpringBoot 启动类,点击运行
2)打开 Knife4J 在线接口调用地址,先需要登录获取 Token,然后在全局参数上加上即可。
3)前端输入表单内容后点击登录即可成功,开始愉快使用功能~
前端
软件:Vscode 或者 Webstorm(推荐)
环境:Node 版本 16 或者 18(推荐) 注:千万别选 18 以上的版本!(版本不同,大概率导致项目报错)
后端
软件:Eclipse 或者 IDEA(推荐)
环境:MySQL 5.7 或者 8.0(推荐)Redis 3.2或以上(必须,选择 Windows 版本,看个人电脑)
1)点击克隆/下载项目,会使用 Git 进行版本控制的,推荐 Git Clone,不会的小伙伴可以选择下载一个 Zip 压缩包,然后解压到自己电脑的 D 盘,推荐直接 Star,后续直接向我拿数据库模拟文件和 API 接口文档。
2)利用 Vscode 或者 Webstorm 打开前端页面,配置 Configuration。配置 Node 环境和包管理工具即可,我这边选择的包管理工具是 Npm,其他包管理工具如:Yarn、Cnpm、Pnpm 皆可。 注:注意更改 Npm 的镜像地址为淘宝的新镜像地址,否则会出现 Npm Install 一直卡进度条的情况。
3)直接点击 dev 的运行,或者打开控制台,输入 npm run serve 即可成功启动前端项目。
npm config set registry https://registry.npmmirror.com/
4)将图片链接进行自定义切换,可以切换为你自己的图床的图片链接,比如七牛云、GitHub 等,也可以寻找在线图片,复制百度文库图片链接(多试几次,有些图片有防盗链)。
1)点击克隆/下载项目,会使用 Git 进行版本控制的,推荐 Git Clone,不会的小伙伴可以选择下载一个 Zip 压缩包,然后解压到自己电脑的 D 盘,建议收藏项目,后续方便获取相关版本更新信息,也可以 Fork 到自己的本地仓库,拷贝副本。
2)领取数据库模拟文件后,利用 Navicat 或者 SQLYog 等软件导入数据库文件,记得先建立一个名为 tourism 的数据库,然后右键点击运行 SQL 文件即可,运行成功,无报错后,重新打开数据库,检查是否有数据,如果有数据,表明导入成功。
3)用 IDEA 打开后端项目,找到 application-dev.yml 文件,修改其中的 MySQL 配置,保证用户名和密码正确,注:密码不能以数字 0 开头,本机密码简单为主,不是远程服务器密码!
4)导入 Maven 依赖,注意看自己的 Maven 版本是否正确,建议选择跟我一样的,3.8以上的版本,发现依赖导入很慢,是因为没有配置国内镜像,默认连接的是国外服务器,因此阿里云镜像配置可以看这篇博客。CSDN Maven 配置教程
5)找到 SpringBoot 启动类,我建议用 Debug 模式启动项目,更好排查错误。
6)如果遇到错误,大概率可能是 JDK 版本问题,我项目用的是 JDK 8,建议选择与我相同版本。
7)成功启动项目效果展示如下,注意端口号占用等情况,可以直接用 TaskKill /PID ,杀死原有进程即可,具体命令可以百度哦。
1)如果需要修改端口和前缀(比如/api),需要同时修改前端和后端。
技术 | 作用 | 版本 |
---|---|---|
Vue | 提供前端交互 | 3.2.13 |
Vue Router | 提供前端路由功能 | 4.0.3 |
Pinia | 状态管理 | 2.1.4 |
Axios | HTTP 请求库 | 1.4.0 |
ECharts | 数据可视化图表库 | 5.4.2 |
MD Editor V3 | Markdown 编辑器 | 4.8.1 |
NProgress | 页面加载进度条 | 0.2.0 |
QRCode Vue3 | 生成二维码 | 1.7.1 |
Vue Clipboard3 | 剪贴板功能 | 2.0.0 |
Vue3 Danmaku | 弹幕功能 | 1.6.1 |
Element Plus | UI 组件库 | 2.9.0 |
TypeScript | JavaScript 的超集 | 4.5.5 |
ESLint | 代码检查工具 | 7.32.0 |
Prettier | 代码格式化工具 | 2.4.1 |
Sass | CSS 预处理器 | 1.63.6 |
mitt | 全局事件总线 | 3.0.1 |
Vue3 Emoji Picker | Emoji 表情包支持 | 1.1.8 |
技术 | 作用 | 版本 |
---|---|---|
SpringBoot | 后端框架 | 2.7.2 |
MyBatis Plus | ORM 框架 | 3.5.2 |
Redis | 缓存数据库 | - |
Elasticsearch | 搜索引擎 | - |
Knife4j | Swagger 增强工具 | 4.4.0 |
QCloud COS | 腾讯云对象存储 | 5.6.89 |
EasyExcel | Excel 操作库 | 3.1.1 |
Hutool | Java 工具库 | 5.8.8 |
Lombok | 简化 Java 代码 | - |
JWT | JSON Web Token | 0.9.0 |
OkHttp | HTTP 客户端 | 4.10.0 |
Guava | Google 工具库 | 30.1-jre |
Jsoup | HTML 解析库 | 1.15.3 |
Gson | JSON 解析库 | 2.9.0 |
Fastjson | JSON 解析库 | 2.0.53 |
Java WebSocket | WebSocket 支持 | 1.3.8 |
Spring Session | 分布式 Session 管理 | - |
Spring Mail | 邮件发送功能 | - |
Qiniu SDK | 七牛云对象存储 | 7.13.0 |
Apache Commons Lang3 | 常用工具库 | - |
Spring AOP | 面向切面编程 | - |
Spring DevTools | 开发工具 | - |
MySQL Connector | MySQL 数据库连接 | - |
Spring Configuration Processor | 配置处理器 | - |
/**
* 创建用户对话表
*
* @param userAiMessageAddRequest
* @param request
* @return UserAiMessage
*/
@PostMapping("/add")
public BaseResponse<UserAiMessage> addUserAiMessage(@RequestBody UserAiMessageAddRequest userAiMessageAddRequest, HttpServletRequest request) {
ThrowUtils.throwIf(userAiMessageAddRequest == null, ErrorCode.PARAMS_ERROR);
String userInputText = userAiMessageAddRequest.getUserInputText();
if (WordUtils.containsForbiddenWords(userInputText)) {
ThrowUtils.throwIf(WordUtils.containsForbiddenWords(userInputText), ErrorCode.WORD_FORBIDDEN_ERROR, "包含违禁词");
}
UserAiMessage userAiMessage = new UserAiMessage();
// 填充默认值
User loginUser = userService.getLoginUser(request);
Integer aiRemainNumber = loginUser.getAiRemainNumber();
// 检查用户剩余 AI 调用次数是否足够,如果不足,直接返回错误信息
ThrowUtils.throwIf(aiRemainNumber <= 0, ErrorCode.USER_BALANCE_NOT_ENOUGH);
userAiMessage.setUserId(loginUser.getId());
userAiMessage.setUserInputText(userInputText);
String presetInformation = "你是一个二手商品交易推荐官,你需要根据数据库的商品名称、价格、新旧程度、库存、用户的现有余额、用户的偏好等多方面进行适配性推荐,并给出相关的理由。\n";
String userText = "用户偏好信息:" + userInputText+"\n";
// 使用 Stream 处理数据
String commodityList = commodityService.list().stream()
.filter(commodity -> commodity.getIsListed() == 1) // 过滤出已上架的商品
.map(commodity -> String.format(
"商品名称: %s, 新旧程度: %s, 库存: %d, 价格: %.2f",
commodity.getCommodityName(),
commodity.getDegree(),
commodity.getCommodityInventory(),
commodity.getPrice()
))
.collect(Collectors.joining("\n")); // 用换行符拼接每条商品信息
String commodityInfo = "数据库商品信息如下:"+commodityList+"\n";
BigDecimal balance = loginUser.getBalance();
String userInfo = "用户相关信息如下,"+"用户余额:"+balance+"\n";
List<SparkMessage> messages = new ArrayList<>();
messages.add(SparkMessage.userContent(presetInformation + userText+commodityInfo+userInfo));
String response = "";
int timeout = 35; // 超时时间,单位为秒
// 构造请求
SparkRequest sparkRequest = SparkRequest.builder()
// 模型回答的tokens的最大长度,非必传,默认为2048。
// V1.5取值为[1,4096]
// V2.0取值为[1,8192]
// V3.0取值为[1,8192]
.maxTokens(2048)
.messages(messages)
// 核采样阈值。用于决定结果随机性,取值越高随机性越强即相同的问题得到的不同答案的可能性越高 非必传,取值为[0,1],默认为0.5
.temperature(0.2)
.build();
Future<String> future = threadPoolExecutor.submit(() -> {
try {
// 同步调用
StopWatch stopWatch = new StopWatch();
stopWatch.start();
SparkSyncChatResponse chatResponse = sparkClient.chatSync(sparkRequest);
SparkTextUsage textUsage = chatResponse.getTextUsage();
stopWatch.stop();
long total = stopWatch.getTotal(TimeUnit.SECONDS);
System.out.println("本次接口调用耗时:" + total + "秒");
System.out.println("\n回答:" + chatResponse.getContent());
System.out.println("\n提问tokens:" + textUsage.getPromptTokens()
+ ",回答tokens:" + textUsage.getCompletionTokens()
+ ",总消耗tokens:" + textUsage.getTotalTokens());
return chatResponse.getContent();
// return AlibabaAIModel.doChatWithHistory(stringBuilder.toString(),recentHistory);
} catch (Exception exception) {
throw new RuntimeException("遇到异常");
}
});
try {
response = future.get(timeout, TimeUnit.SECONDS);
} catch (Exception e) {
log.info("服务器接口调用超时");
}
System.out.println(response);
userAiMessageAddRequest.setAiGenerateText(response);
// 复制属性
BeanUtils.copyProperties(userAiMessageAddRequest, userAiMessage);
// 校验数据
userAiMessageService.validUserAiMessage(userAiMessage, true);
// 插入数据库
boolean result = userAiMessageService.save(userAiMessage);
ThrowUtils.throwIf(!result, ErrorCode.OPERATION_ERROR);
// 更新用户余额
loginUser.setAiRemainNumber(aiRemainNumber - 1);
boolean update = userService.updateById(loginUser);
ThrowUtils.throwIf(!update, ErrorCode.OPERATION_ERROR);
long newUserAiMessageId = userAiMessage.getId();
UserAiMessage generateAnswer = userAiMessageService.getById(newUserAiMessageId);
return ResultUtils.success(generateAnswer);
}
addUserAiMessage
@PostMapping("/add")
:表示这是一个 POST 请求接口,路径为 /add
。UserAiMessageAddRequest userAiMessageAddRequest
:用户提交的请求体,包含用户输入的偏好信息。HttpServletRequest request
:HTTP 请求对象,用于获取当前登录用户信息。BaseResponse<UserAiMessage>
,封装了 AI 生成的推荐结果。ThrowUtils.throwIf
方法检查 userAiMessageAddRequest
是否为空。PARAMS_ERROR
异常。WordUtils.containsForbiddenWords
方法检查用户输入的文本是否包含违禁词。WORD_FORBIDDEN_ERROR
异常。userService.getLoginUser(request)
获取当前登录用户信息。aiRemainNumber
。aiRemainNumber <= 0
,抛出 USER_BALANCE_NOT_ENOUGH
异常,提示用户余额不足。commodityService.list()
获取所有商品列表。Stream
过滤出已上架的商品(isListed == 1
)。SparkRequest.builder()
构造 AI 请求,设置以下参数:
maxTokens
:模型回答的最大 tokens 长度,默认为 2048。messages
:包含预设提示信息、用户偏好信息、商品信息和用户余额信息的消息列表。temperature
:核采样阈值,控制结果的随机性,设置为 0.2。threadPoolExecutor
异步调用 AI 模型。response
。userAiMessageAddRequest
中。BeanUtils.copyProperties
将 userAiMessageAddRequest
的属性复制到 userAiMessage
对象中。userAiMessageService.validUserAiMessage
对 userAiMessage
进行校验,确保数据合法性。userAiMessageService.save
将 userAiMessage
插入数据库。OPERATION_ERROR
异常。userService.updateById
更新用户信息。OPERATION_ERROR
异常。BaseResponse
中。userAiMessageAddRequest
和 userInputText
不为空,避免空指针异常。Future
)和超时机制,避免因 AI 模型响应过慢导致接口阻塞。threadPoolExecutor
已正确配置,避免资源耗尽或线程泄漏。validUserAiMessage
方法进行校验,确保数据合法性。commodityService.list()
)进行优化,避免全表扫描。1)简单地调用 AI 模型(讯飞星火)获取自定义文本内容,支持 Websocket 形式,也可以获取全部数据后返回。
2)简单的 JWT 权限校验 ,利用后端拦截器进行登录校验。
3)简单的增删改查系统,前后端是如何联调协作的。
4)前端路由懒加载、CDN 静态资源缓存优化、图片懒加载是如何实现的
5)利用自定义线程池和 FutureTask 进行超时请求处理。
6)利用 Google 的 GuavaRateLimiter 进行单体限流控制。
7)定时任务结合 Redis 做一个缓存预热,加快查询效率,提高用户体验。
8)在 Vue3 中使用 Markdown 编辑器和仅浏览模式、实现剪切板功能,类似与复制个人电话号码、使用弹幕插件,实现类似 B 站弹幕的功能。
9)实现牛客等论坛的评论区功能,并有良好的样式体验。
10)实现力扣等平台的旅游记录日历展示,给用户持续的旅游动力。
Authorization
字段中携带 Token 令牌,确保接口调用的安全性。1)欢迎页:介绍项目亮点,展示用户功能和管理者功能,帮助用户快速了解平台的核心价值和使用方法。
2)主页:使用 Swiper 轮播图展示亮点商品图片,吸引用户眼球,提升视觉体验。
3)公告浏览:用户可以查看管理员发布的公告,获取平台最新动态和重要通知。
4)买家留言:支持弹幕形式的留言功能,用户可以进行实时互动,增加平台的趣味性和活跃度。
5)二手商品交易攻略分享:用户可以分享自己的二手商品交易攻略,使用 Markdown 编辑器撰写内容,并浏览他人分享的攻略,支持模糊搜索和分页展示。
6)AI 对话:用户可以与 AI 购物顾问进行对话,AI 根据用户偏好和余额推荐个性化商品,采用协同过滤算法提升推荐精准度。
7)商品列表:展示所有二手商品信息,支持评分、浏览量和收藏量等功能,帮助用户快速了解热门商品。
8)个人主页:展示个人购物记录日历(用 0 和 1 标记是否绿色购物),查看个人订单详情、评论记录、收藏的攻略以及个人详情信息,支持聊天室功能(用户和管理员进行对话,支持 Emoji 表情包)。
9)商品推荐:根据协同过滤算法推荐商品,本质是基于商品评分和用户行为数据。
1)欢迎页:同用户一致,介绍项目亮点,展示管理员功能,帮助管理员快速了解平台的核心价值和使用方法。
2)主页:同用户一致,使用 Swiper 轮播图展示亮点商品图片,吸引管理员关注平台动态。
3)用户管理:支持编辑、查看、删除用户信息,支持分页和模糊查询(按用户名或简介)。
4)公告管理:支持发布、修改、删除公告,支持分页展示,方便管理员管理平台公告。
5)二手商品攻略管理:支持添加、修改、删除攻略,支持分页和模糊查询(按标题、内容、标签或用户 ID)。
6)AI 对话管理:支持删除用户与 AI 的对话记录,支持分页和模糊查询(按用户 ID、用户输入或 AI 生成内容)。
7)商品管理:支持添加、修改、删除商品信息,支持分页和模糊查询(按商品名或描述)。
8)商品订单管理:支持查看、修改、删除用户订单,支持分页和模糊查询(按订单 ID、用户 ID 或订单状态)。
10)商品类别管理:支持添加、修改、删除商品类别,支持分页和模糊查询(按类别 ID 或名称)。
11)个人主页:同用户一致,展示管理员个人信息、操作记录等。
列名 | 数据类型以及长度 | 备注 |
---|---|---|
id | bigint(20) | 主键 非空 自增 弹幕表的唯一标识 |
message | varchar(255) | 弹幕文本 非空 |
userAvatar | varchar(1024) | 用户头像 非空 |
userId | bigint(20) | 用户 ID 非空 |
isSelected | tinyint(4) | 是否精选(默认0,精选为1) |
createTime | datetime | 创建时间 非空 |
updateTime | datetime | 更新时间 非空 |
isDelete | tinyint(4) | 是否删除(1 删除,0 未删除) |
列名 | 数据类型以及长度 | 备注 |
---|---|---|
id | bigint(20) | 主键 非空 自增 评论表的唯一标识 |
postId | bigint(20) | 帖子 ID 非空 |
userId | bigint(20) | 用户 ID 非空 |
content | text | 评论内容 非空 |
parentId | bigint(20) | 父评论 ID |
createTime | datetime | 创建时间 非空 |
updateTime | datetime | 更新时间 非空 |
isDelete | tinyint(4) | 是否删除(1 删除,0 未删除) |
ancestorId | bigint(20) | 祖先评论 ID |
列名 | 数据类型以及长度 | 备注 |
---|---|---|
id | bigint(20) | 主键 非空 自增 商品表的唯一标识 |
commodityName | varchar(255) | 商品名称 非空 |
commodityDescription | varchar(2048) | 商品简介 |
commodityAvatar | varchar(1024) | 商品封面图 |
degree | varchar(255) | 商品新旧程度 |
commodityTypeId | bigint(20) | 商品分类 ID |
adminId | bigint(20) | 管理员 ID 非空 |
isListed | tinyint(4) | 是否上架(默认0未上架,1已上架) |
commodityInventory | int(10) | 商品数量(默认0) |
price | decimal(10, 2) | 商品价格 非空 |
viewNum | int(11) | 商品浏览量(默认0) |
favourNum | int(11) | 商品收藏量(默认0) |
createTime | datetime | 创建时间 |
updateTime | datetime | 更新时间 |
isDelete | tinyint(4) | 是否删除(1 删除,0 未删除) |
列名 | 数据类型以及长度 | 备注 |
---|---|---|
id | bigint(20) | 主键 非空 自增 订单表的唯一标识 |
userId | bigint(20) | 用户 ID 非空 |
commodityId | bigint(20) | 商品 ID 非空 |
remark | varchar(1024) | 订单备注 |
buyNumber | int(10) | 购买数量 |
paymentAmount | decimal(10, 2) | 订单总支付金额 |
payStatus | tinyint(4) | 支付状态(0-未支付,1-已支付) |
createTime | datetime | 创建时间 |
updateTime | datetime | 更新时间 |
isDelete | tinyint(4) | 是否删除(1 删除,0 未删除) |
列名 | 数据类型以及长度 | 备注 |
---|---|---|
id | bigint(20) | 主键 非空 自增 评分表的唯一标识 |
commodityId | bigint(20) | 商品 ID 非空 |
userId | bigint(20) | 用户 ID 非空 |
score | int(10) | 评分(0-5,星级评分) 非空 |
createTime | datetime | 创建时间 |
updateTime | datetime | 更新时间 |
isDelete | tinyint(4) | 是否删除(1 删除,0 未删除) |
列名 | 数据类型以及长度 | 备注 |
---|---|---|
id | bigint(20) | 主键 非空 自增 分类表的唯一标识 |
typeName | varchar(255) | 商品类别名称 非空 |
createTime | datetime | 创建时间 |
updateTime | datetime | 更新时间 |
isDelete | tinyint(4) | 是否删除(1 删除,0 未删除) |
列名 | 数据类型以及长度 | 备注 |
---|---|---|
id | bigint(20) | 主键 非空 自增 公告表的唯一标识 |
noticeTitle | varchar(255) | 公告标题 非空 |
noticeContent | varchar(255) | 公告内容 非空 |
noticeAdminId | bigint(20) | 创建人 ID(管理员) 非空 |
createTime | datetime | 创建时间 非空 |
updateTime | datetime | 更新时间 非空 |
isDelete | tinyint(4) | 是否删除(1 删除,0 未删除) |
列名 | 数据类型以及长度 | 备注 |
---|---|---|
id | bigint(20) | 主键 非空 自增 帖子表的唯一标识 |
title | varchar(512) | 帖子标题 |
content | text | 帖子内容 |
tags | varchar(1024) | 标签列表(json 数组) |
thumbNum | int(11) | 点赞数(默认0) |
favourNum | int(11) | 收藏数(默认0) |
userId | bigint(20) | 用户 ID 非空 |
createTime | datetime | 创建时间 非空 |
updateTime | datetime | 更新时间 非空 |
isDelete | tinyint(4) | 是否删除(1 删除,0 未删除) |
列名 | 数据类型以及长度 | 备注 |
---|---|---|
id | bigint(20) | 主键 非空 自增 收藏表的唯一标识 |
postId | bigint(20) | 帖子 ID 非空 |
userId | bigint(20) | 用户 ID 非空 |
createTime | datetime | 创建时间 非空 |
updateTime | datetime | 更新时间 非空 |
列名 | 数据类型以及长度 | 备注 |
---|---|---|
id | bigint(20) | 主键 非空 自增 点赞表的唯一标识 |
postId | bigint(20) | 帖子 ID 非空 |
userId | bigint(20) | 用户 ID 非空 |
createTime | datetime | 创建时间 非空 |
updateTime | datetime | 更新时间 非空 |
列名 | 数据类型以及长度 | 备注 |
---|---|---|
id | bigint(20) | 主键 非空 自增 消息表的唯一标识 |
senderId | bigint(20) | 发送者 ID 非空 |
recipientId | bigint(20) | 接收者 ID 非空 |
content | varchar(4096) | 消息内容 |
alreadyRead | tinyint(4) | 是否已读(0-未读,1-已读) |
type | varchar(255) | 消息类型(用户或管理员) 非空 |
isRecalled | tinyint(4) | 是否撤回(0-未撤回,1-已撤回) |
createTime | datetime | 创建时间 |
updateTime | datetime | 更新时间 |
isDelete | tinyint(4) | 是否删除(1 删除,0 未删除) |
列名 | 数据类型以及长度 | 备注 |
---|---|---|
id | bigint(20) | 主键 非空 自增 用户表的唯一标识 |
userAccount | varchar(256) | 账号 非空 |
userPassword | varchar(512) | 密码(加密) 非空 |
unionId | varchar(256) | 微信开放平台 ID |
mpOpenId | varchar(256) | 公众号 openId |
userName | varchar(256) | 用户昵称 |
userAvatar | varchar(1024) | 用户头像 |
userProfile | varchar(512) | 用户简介 |
userRole | varchar(256) | 用户角色:user/admin/ban |
userPhone | varchar(255) | 联系电话 |
aiRemainNumber | int(11) | 用户 AI 剩余可使用次数 |
balance | decimal(10, 2) | 用户余额(仅 AI 接口调用) |
editTime | datetime | 编辑时间 |
createTime | datetime | 创建时间 |
updateTime | datetime | 更新时间 |
isDelete | tinyint(4) | 是否删除(1 删除,0 未删除) |
列名 | 数据类型以及长度 | 备注 |
---|---|---|
id | bigint(20) | 主键 非空 自增 消息表的唯一标识 |
userInputText | varchar(4096) | 用户输入 非空 |
aiGenerateText | varchar(4096) | AI 生成结果 非空 |
userId | bigint(20) | 用户 ID 非空 |
createTime | datetime | 创建时间 非空 |
updateTime | datetime | 更新时间 非空 |
isDelete | tinyint(4) | 是否删除(1 删除,0 未删除) |
列名 | 数据类型以及长度 | 备注 |
---|---|---|
id | bigint(20) | 主键 非空 自增 收藏表的唯一标识 |
userId | bigint(20) | 用户 ID 非空 |
commodityId | bigint(20) | 商品 ID 非空 |
status | tinyint(4) | 收藏状态(1-正常,0-取消) |
remark | varchar(255) | 用户备注 |
createTime | datetime | 创建时间 |
updateTime | datetime | 更新时间 |
isDelete | tinyint(4) | 是否删除(1 删除,0 未删除) |
欢迎页
主页(轮播图)
商品
商品推荐
公告
买家留言
交易攻略
二手商品推荐官
个人主页(包含个人信息,收藏攻略,个人订单,购物日历,聊天室)
欢迎页和个人主页同用户端,不再展示图片!
用户管理
公告管理
攻略管理
AI 对话管理
商品管理
商品类别管理
商品订单管理
还没有下载 Git或者不会 Git 的建议先看基础教程( 30 分钟左右)
输入 git init 初始化 git 项目 然后出现一个 .git 文件夹
输入 git remote add origin xxxxxx (xxx 为刚刚复制的 http 或者 ssh 链接)
输入 git pull origin master 从远程代码托管仓库拉取代码
成功拉取项目(前端后端都是如此)
前端项目注意依赖下载使用 npm install 或者 yarn install ( Vscode 或者 Webstorm )
后端项目注意 maven 依赖下载( IDEA (推荐)或者 Ecplise )
前端 npm 镜像源建议淘宝镜像源,后端 maven 镜像源推荐阿里云镜像源(非必选,但更换后下载快速)
⭐
⭐
⭐
⭐
毕设文档(精简版和毕设版),有(付费)需求的可以加 QQ:909088445,适合走毕设和课设的小伙伴,图省事的可以找我。
远程部署服务需自己先下载向日葵远程控制软件,然后加 WX 或者 QQ 即可(付费服务),远程部署用于给完全不懂的小白,项目讲解服务用于课设、实训、毕设答辩(可语音共享屏幕)服务,想减省时间,提高通过率,直接加我即可,可以定制背景图片和整体的样式功能,降重服务也可私我!
如果本项目对您有所帮助,不妨请作者我喝杯咖啡 :)
智能 AI 校园二手交易平台第一版发布!(感谢各位用户对之前 GPT 智能图书馆项目的支持与帮助)
项目多有不足,如果想帮助 智能 AI 校园二手交易平台变得更好,请遵循以下步骤:
1)Fork 本仓库。
2)创建你的特性分支 (git checkout -b feature/AmazingFeature
)。
3)提交你的更改 (git commit -m 'Add some AmazingFeature'
)。
4)将你的更改推送到分支 (git push origin feature/AmazingFeature
)。
5)打开一个Pull Request。
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。