源码获取(稀缺资源,尽快转存到自己网盘,防止失效)

网盘内附带教程,代码文件完整纯分享,可提供远程部署
夸克网盘
百度网盘

详细视频演示

视频演示

具体实现截图

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

后端框架SpringBoot

Spring Boot允许开发者快速构建出既可以独立运行又满足生产级别标准的Spring基础应用程序。此框架通过提供一系列便捷的工具和服务,极大地促进了基于Spring的应用开发工作的效率和质量。通过提供一系列大型项目中常用的默认配置,Spring Boot最大化减少配置文件的使用,开发者能够迅速启动和运行Spring应用程序。

Spring Boot通过约定优于配置的原则,避免了许多传统Spring应用开发时繁琐的配置,该框架支持对内嵌服务器的自动配置,如Tomcat、Jetty或Undertow,从而简化了Web应用的部署过程。

前端框架Vue

Vue.js是一种流行的JavaScript框架,它具有许多优势。其中,Vue.js的核心优势之一是虚拟DOM技术。虚拟DOM是一个内存中的数据结构,它在实现高效的DOM操作方面发挥了重要作用。

Vue.js采用了响应式数据绑定、虚拟DOM、组件化等现代化技术,为开发者提供了一种灵活、高效、易于维护的开发模式。当数据发生变化时,Vue.js能够自动更新UI,开发者无需手动更新UI,从而能够更加专注于数据处理。

持久层框架MyBaits

MyBatis是一个开源的持久层框架,它可以帮助开发者简化数据库操作的编写和管理。MyBatis的核心思想是将SQL语句和Java代码分离,通过XML或注解的方式来描述数据库操作,从而实现了数据访问层的解耦和灵活性。

MyBatis的优势主要包括以下几点:

简化数据库操作:MyBatis通过提供强大的SQL映射功能,可以将Java对象与数据库表进行映射,开发者无需手动编写繁琐的SQL语句,大大简化了数据库操作的编写和维护。

灵活的SQL控制:MyBatis支持动态SQL,可以根据不同的条件和逻辑来动态生成SQL语句,使得查询、更新等操作更加灵活和可控。

缓存支持:MyBatis提供了一级缓存和二级缓存的支持,可以有效减少数据库的访问次数,提高系统性能。

可扩展性强:MyBatis采用插件机制,可以方便地扩展和定制自己的功能,满足各种不同的业务需求。

所有项目均为博主亲自收集、开发并严格测试,确保源码完整、可运行,无缺失依赖或兼容性问题!同学们拿到后就能使用!博主具备多年高级开发经验,能深入讲解代码架构、核心逻辑及技术难点,助你高效掌握项目精髓。

代码参考

package com.shanzhu.parking.controller;


import com.baomidou.mybatisplus.core.metadata.IPage;
import com.shanzhu.parking.common.R;
import com.shanzhu.parking.entity.po.Stall;
import com.shanzhu.parking.entity.po.StallRes;
import com.shanzhu.parking.entity.query.StallCarQuery;
import com.shanzhu.parking.entity.query.StallQuery;
import com.shanzhu.parking.entity.query.StallResQuery;
import com.shanzhu.parking.entity.vo.MsgVo;
import com.shanzhu.parking.service.StallService;
import lombok.RequiredArgsConstructor;
import org.springframework.web.bind.annotation.*;

import java.util.List;

/**
 * 车位 控制层
 *
 * @author: CodeUp
 * @date: 2025-07-02
 */
@RestController
@RequiredArgsConstructor
@RequestMapping("/stall")
public class StallController {

    private final StallService stallService;

    /**
     * 获取用户停泊车辆信息
     *
     * @param stallCarQuery 车辆信息
     * @return 停泊的车辆信息
     */
    @PostMapping("/pageStallCar")
    public R<IPage<Stall>> pageStallCar(@RequestBody StallCarQuery stallCarQuery) {
        return R.success(stallService.carPage(stallCarQuery));
    }

    /**
     * 获取车位信息列表
     *
     * @param stallQuery 车位信息
     * @return 车位信息
     */
    @PostMapping("/pageStall")
    public R<IPage<Stall>> pageStall(@RequestBody StallQuery stallQuery) {
        return R.success(stallService.pageStall(stallQuery));
    }

    /**
     * 预定车位
     *
     * @param uid 用户id
     * @param sid 车位id
     * @return 结果
     */
    @GetMapping("/orderStall")
    public R<Boolean> orderStall(Integer uid, Integer sid) {
        return R.success(stallService.orderStall(uid, sid));
    }

    /**
     * 添加车位
     *
     * @param stall 车位信息
     * @return 结果
     */
    @PostMapping("/add")
    public R<MsgVo> addStall(@RequestBody Stall stall) {
        return R.success(stallService.addStall(stall));
    }

    /**
     * 更新车位
     *
     * @param stall 车位信息
     * @return 结果
     */
    @PostMapping("/update")
    public R<MsgVo> updateStall(@RequestBody Stall stall) {
        return R.success(stallService.updateStall(stall));
    }

    /**
     * 删除车位 (逻辑删除)
     *
     * @param sid 车位id
     * @return 删除结果
     */
    @GetMapping("/del")
    public R<Boolean> deleteStall(Integer sid) {
        Stall stall = new Stall();
        stall.setSid(sid);
        //状态设置为逻辑删除
        stall.setStallLive("0");
        return R.success(stallService.updateById(stall));
    }

    /**
     * 获取用户所有停车记录
     *
     * @param person 用户名
     * @return 停车位记录
     */
    @GetMapping("/listUserStallRes")
    public R<List<StallRes>> listUserStallRes(String person) {
        return R.success(stallService.listUserStallRes(person));
    }

    /**
     * 获取用户所有未缴费记录
     *
     * @param person 用户名
     * @return 未缴费记录
     */
    @GetMapping("/allNoPay")
    public R<Object> allNoPay(String person) {
        return R.success(
                stallService.getAllNoPay(person)
                        .stream().filter(r -> r.getOverTime() == null)
        );
    }

    /**
     * 查询所有停车缴费记录
     *
     * @param stallResQuery 停车缴费信息
     * @return 停车缴费记录
     */
    @PostMapping("/allList")
    public R<IPage<StallRes>> listStallRes(@RequestBody StallResQuery stallResQuery) {
        return R.success(stallService.getAllListStallRes(stallResQuery));
    }

    /**
     * 停车缴费(管理员)
     *
     * @param stallRes 停车信息
     * @return 结果
     */
    @PostMapping("/payMoney")
    public R<Boolean> payMoney(@RequestBody StallRes stallRes) {
        return R.success(stallService.payMoneyManager(stallRes));
    }

    /**
     * 停车缴费(车主)
     *
     * @param stallRes 停车信息
     * @return 缴费结果
     */
    @PostMapping("/payMoneyPerson")
    public R<MsgVo> payMoneyPerson(@RequestBody StallRes stallRes) {
        return R.success(stallService.payMoneyPerson(stallRes));
    }

}

数据库

-- ----------------------------
-- Table structure for car
-- ----------------------------
DROP TABLE IF EXISTS `car`;
CREATE TABLE `car` (
  `tid` int NOT NULL AUTO_INCREMENT COMMENT '车辆编号',
  `card` varchar(50) CHARACTER SET utf8mb3 COLLATE utf8_general_ci DEFAULT NULL COMMENT '车牌号',
  `car_type` varchar(20) CHARACTER SET utf8mb3 COLLATE utf8_general_ci DEFAULT NULL COMMENT '车类别',
  `person` varchar(100) CHARACTER SET utf8mb3 COLLATE utf8_general_ci DEFAULT NULL COMMENT '用户',
  `xtime` datetime DEFAULT NULL COMMENT '录入时间',
  PRIMARY KEY (`tid`) USING BTREE
) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8mb3 ROW_FORMAT=DYNAMIC;

-- ----------------------------
-- Records of car
-- ----------------------------
BEGIN;
COMMIT;

-- ----------------------------
-- Table structure for fee
-- ----------------------------
DROP TABLE IF EXISTS `fee`;
CREATE TABLE `fee` (
  `fid` int NOT NULL AUTO_INCREMENT COMMENT '收费标准ID',
  `car_type` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8_general_ci DEFAULT NULL COMMENT '车位类型',
  `money` double(255,2) DEFAULT NULL COMMENT '价格',
  `money_desc` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8_general_ci DEFAULT NULL COMMENT '价格描述',
  `fee_time` datetime DEFAULT NULL COMMENT '创建时间',
  PRIMARY KEY (`fid`) USING BTREE
) ENGINE=InnoDB AUTO_INCREMENT=14 DEFAULT CHARSET=utf8mb3 ROW_FORMAT=DYNAMIC;

-- ----------------------------
-- Records of fee
-- ----------------------------
BEGIN;
INSERT INTO `fee` VALUES (11, '临时车位', 12.00, '临时车位价格', '2022-04-09 08:50:53');
INSERT INTO `fee` VALUES (13, '固定车位', 33.00, '固定车位价格', '2022-04-09 08:51:23');
COMMIT;

-- ----------------------------
-- Table structure for login_info
-- ----------------------------
DROP TABLE IF EXISTS `login_info`;
CREATE TABLE `login_info` (
  `yid` int NOT NULL AUTO_INCREMENT COMMENT '登录日志编号                                                                                      ',
  `person` varchar(100) CHARACTER SET utf8mb3 COLLATE utf8_general_ci DEFAULT NULL COMMENT '用户',
  `ip` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8_general_ci DEFAULT NULL COMMENT 'IP地址',
  `browser` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8_general_ci DEFAULT NULL COMMENT '浏览器',
  `os` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8_general_ci DEFAULT NULL COMMENT '操作系统',
  `login_time` datetime DEFAULT NULL COMMENT '登录时间',
  PRIMARY KEY (`yid`) USING BTREE
) ENGINE=InnoDB AUTO_INCREMENT=147 DEFAULT CHARSET=utf8mb3 ROW_FORMAT=DYNAMIC;

-- ----------------------------
-- Records of login_info
-- ----------------------------
BEGIN;
INSERT INTO `login_info` VALUES (134, 'test', '127.0.0.1', 'Chrome 12', 'Mac OS X', '2024-12-08 18:56:48');
INSERT INTO `login_info` VALUES (135, 'user', '127.0.0.1', 'Chrome 12', 'Mac OS X', '2024-12-08 18:56:57');
INSERT INTO `login_info` VALUES (136, 'admin', '127.0.0.1', 'Chrome 12', 'Mac OS X', '2024-12-08 18:58:21');
INSERT INTO `login_info` VALUES (137, 'user', '127.0.0.1', 'Chrome 12', 'Mac OS X', '2024-12-08 19:00:35');
INSERT INTO `login_info` VALUES (138, 'admin', '127.0.0.1', 'Chrome 12', 'Mac OS X', '2024-12-08 19:01:22');
INSERT INTO `login_info` VALUES (139, 'user', '127.0.0.1', 'Chrome 12', 'Mac OS X', '2024-12-08 19:01:51');
INSERT INTO `login_info` VALUES (140, 'admin', '127.0.0.1', 'Chrome 12', 'Mac OS X', '2024-12-08 19:22:33');
INSERT INTO `login_info` VALUES (141, 'user', '127.0.0.1', 'Chrome 12', 'Mac OS X', '2024-12-08 20:23:37');
INSERT INTO `login_info` VALUES (142, 'admin', '127.0.0.1', 'Chrome 12', 'Mac OS X', '2024-12-08 21:14:52');
INSERT INTO `login_info` VALUES (143, 'user', '127.0.0.1', 'Chrome 12', 'Mac OS X', '2024-12-08 21:15:57');
INSERT INTO `login_info` VALUES (144, 'admin', '127.0.0.1', 'Chrome 12', 'Mac OS X', '2024-12-08 21:16:49');
INSERT INTO `login_info` VALUES (145, 'admin', '127.0.0.1', 'Chrome 12', 'Mac OS X', '2024-12-09 09:49:39');
INSERT INTO `login_info` VALUES (146, 'user', '127.0.0.1', 'Chrome 12', 'Mac OS X', '2024-12-09 09:50:39');
COMMIT;
Logo

Agent 垂直技术社区,欢迎活跃、内容共建。

更多推荐