基于springboot2+vue2的乐享田园系统
温馨提示:
本文最后更新于 2026年05月28日,已超过 13 天没有更新。若文章内的图片失效(无法正常加载),请留言反馈或直接联系我。
1. 资源
浏览全文可获取
2. 项目简介
本系统名为“乐享田园系统”,是一个基于Spring Boot和Vue.js架构的Web应用程序。该项目旨在连接农民(土地提供方)与用户(土地租赁方),提供一个在线土地租赁与管理平台。
核心业务是:农民可以在平台上发布和管理自己的土地信息,用户则可以浏览、收藏和租赁土地。系统处理整个租赁订单流程,并支持用户对已租赁的土地进行评价。此外,系统还提供了管理员后台,用于管理整个平台的用户、数据字典、轮播图等基础信息。
3. 技术栈
后端
- 核心框架: Spring Boot 2.2.2.RELEASE
- 持久层框架: MyBatis Plus 2.3 & MyBatis
- 安全框架: Apache Shiro 1.3.2 (用于权限控制)
- 数据库: MySQL (驱动: mysql-connector-java)
- 其他工具: Fastjson, Hu工具包, Apache Commons Lang3, Poi (用于Excel处理), 百度AI SDK
前端
- 后台管理系统: Vue.js 全家桶 (Vue, Vue Router, Element UI, Axios)
- 前台展示系统: 原生JavaScript + Layui + jQuery,采用传统的HTML页面模式。
4. 详细介绍
系统围绕三种角色设计:管理员、农民、用户。
核心业务模块 - 土地管理:
- 土地发布与展示:农民登录后,可以发布土地信息,包括土地名称、照片、类型(如平地、梯田)、有无树木、土地状态(好坏)、价格等。土地发布后默认“上架”,供用户查看。
- 土地浏览与搜索:用户(租客)可以浏览所有上架的土地,并支持根据土地类型、有无树木、土地状态、是否租赁等条件进行筛选。
- 土地租赁:用户选择心仪的土地后,可以进行租赁操作。系统会生成租赁订单,并扣除用户账户余额,同时将租金增加给对应的农民。租赁成功后,土地的“是否租赁”状态会更新为“在租赁”。
- 续租与评价:在土地租赁到期前,用户可以执行“续租”操作,延长租赁周期。租赁到期后,用户可以对此次租赁体验进行评价,评价信息会关联到对应的土地上。
- 种植详情:农民可以在用户租赁土地后,发布“种植详情”,例如上传作物的生长照片或视频,记录种植过程。
其他辅助模块:
- 用户/农民管理:支持注册、登录、个人信息维护、余额充值(模拟)。
- 建议管理:用户和农民都可以向管理员提交建议反馈。
- 收藏功能:用户可以收藏感兴趣的土地,方便日后查找。
- 后台管理:管理员可以对所有数据(用户、农民、土地、订单、评价、建议等)进行增删改查操作,并管理轮播图和系统字典数据。
5. 部分代码
5.1 后端核心 - 土地租赁订单生成 (TudiOrderController.java)
以下代码展示了处理用户租赁土地的核心逻辑。它从数据库获取土地和用户信息,进行余额校验,扣减用户余额并增加农民收入,最后生成订单记录。
// 文件路径: ./lexiangtianyuan/src/main/java/com/controller/TudiOrderController.java
@RequestMapping("/add")
public R add(@RequestBody TudiOrderEntity tudiOrder, HttpServletRequest request){
// 1. 获取土地信息
TudiEntity tudiEntity = tudiService.selectById(tudiOrder.getTudiId());
if(tudiEntity == null) return R.error(511,"查不到该土地");
// 2. 获取当前用户信息
Integer userId = (Integer) request.getSession().getAttribute("userId");
YonghuEntity yonghuEntity = yonghuService.selectById(userId);
if(yonghuEntity == null) return R.error(511,"用户不能为空");
// 3. 余额校验与扣减
double balance = yonghuEntity.getNewMoney() - tudiEntity.getTudiNewMoney();
if(balance < 0) return R.error(511,"余额不够支付");
yonghuEntity.setNewMoney(balance);
yonghuService.updateById(yonghuEntity);
// 4. 增加农民收入
ShangjiaEntity shangjiaEntity = shangjiaService.selectById(tudiEntity.getShangjiaId());
shangjiaEntity.setNewMoney(shangjiaEntity.getNewMoney() + tudiEntity.getTudiNewMoney());
shangjiaService.updateById(shangjiaEntity);
// 5. 创建订单
tudiOrder.setYonghuId(userId);
tudiOrder.setTudiOrderUuidNumber(String.valueOf(new Date().getTime())); // 生成唯一订单号
tudiOrder.setPingjiaTypes(1); // 默认未评价
tudiOrder.setInsertTime(new Date());
tudiOrder.setCreateTime(new Date());
tudiOrderService.insert(tudiOrder);
return R.ok();
}
5.2 数据访问层 - 土地评价查询 (TudiCommentbackDao.xml)
以下SQL映射文件片段展示了如何通过多表关联查询土地评价及其关联的土地和用户信息。
<!-- 文件路径: ./lexiangtianyuan/src/main/resources/mapper/TudiCommentbackDao.xml -->
<mapper namespace="com.dao.TudiCommentbackDao">
<select id="selectListView" resultType="com.entity.view.TudiCommentbackView">
SELECT
a.id, a.tudi_commentback_text, a.insert_time, a.reply_text,
-- 关联土地表
tudi.tudi_name, tudi.tudi_photo,
-- 关联用户表
yonghu.yonghu_name, yonghu.yonghu_phone
FROM tudi_commentback a
LEFT JOIN tudi tudi ON a.tudi_id = tudi.id
LEFT JOIN yonghu yonghu ON a.yonghu_id = yonghu.id
<where>
<if test="params.tudiCommentbackText != null and params.tudiCommentbackText != ''">
and a.tudi_commentback_text like CONCAT('%',#{params.tudiCommentbackText},'%')
</if>
<!-- 其他查询条件 -->
</where>
order by a.${params.orderBy} desc
</select>
</mapper>
6. 部分截图
































7. 项目总结
“乐享田园系统”是一个功能相对完整的土地租赁平台Demo。它成功地实现了多角色权限管理、核心的交易流程(租赁、支付模拟、续租)以及信息的发布与展示。技术选型上,后端采用成熟的Spring Boot + MyBatis Plus组合,开发效率高;前端则根据使用场景(后台管理 vs 前台展示)分别选用了Vue.js和传统jQuery方案,具有一定的灵活性。
项目亮点:
- 业务流程完整:覆盖了从土地发布、浏览、租赁、支付(模拟)、续租到评价的完整闭环。
- 数据关联清晰:在数据库设计和查询(如
TudiCommentbackDao.xml)中,清晰地处理了土地、用户、农民、订单等多表之间的关联关系。 - 功能丰富:除了核心业务,还包含了收藏、建议反馈、轮播图管理等辅助功能,使系统更趋于实用。
正文到此结束
- 本文标签: Java Spring Spring Boot
- 本文链接: https://blog.xiaobias.com/article/9
- 版权声明: 本文由十五喵原创发布,转载请遵循《署名-非商业性使用-相同方式共享 4.0 国际 (CC BY-NC-SA 4.0)》许可协议授权
