SpringBoot+Vue充电桩管理系统 附带详细运行指导视频

这篇具有很好参考价值的文章主要介绍了SpringBoot+Vue充电桩管理系统 附带详细运行指导视频。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、项目演示

项目演示地址: 视频地址

二、项目介绍

项目描述:这是一个基于SpringBoot+Vue框架开发的充电桩管理系统。首先,这是一个前后端分离的项目,代码简洁规范,注释说明详细,易于理解和学习。其次,这项目功能丰富,具有一个充电桩管理系统该有的所有功能。

项目功能:此项目分为两个角色:普通用户管理员普通用户有登录注册、浏览个人数据统计信息、管理个人信息、浏览运营商信息、浏览电站信息、浏览充电桩信息、预约充电桩、报修充电桩、管理个人预约信息、开始充电、结束充电、查看个人订单信息、支付订单、查看个人报修信息、查看个人告警信息、查看留言信息等等功能。管理员有查看全部数据统计信息、管理所有用户信息、管理所有运营商信息、管理所有电站信息、管理所有充电桩信息、管理所有预约信息、管理所有订单信息、管理所有报修信息、管理所有告警信息、管理所有留言信息等等功能。

应用技术:SpringBoot + Vue3.0 + MySQL + MyBatis + Redis + ElementUI-Plus + Vite

运行环境:IntelliJ IDEA2019.3.5 + MySQL5.7(项目压缩包中自带) + Redis5.0.5(项目压缩包中自带) + JDK1.8 + Maven3.6.3(项目压缩包中自带)+ Node14.16.1(项目压缩包中自带)

三、运行截图

SpringBoot+Vue充电桩管理系统 附带详细运行指导视频,项目介绍,spring boot,vue.js,后端
SpringBoot+Vue充电桩管理系统 附带详细运行指导视频,项目介绍,spring boot,vue.js,后端
SpringBoot+Vue充电桩管理系统 附带详细运行指导视频,项目介绍,spring boot,vue.js,后端
SpringBoot+Vue充电桩管理系统 附带详细运行指导视频,项目介绍,spring boot,vue.js,后端
SpringBoot+Vue充电桩管理系统 附带详细运行指导视频,项目介绍,spring boot,vue.js,后端
SpringBoot+Vue充电桩管理系统 附带详细运行指导视频,项目介绍,spring boot,vue.js,后端
SpringBoot+Vue充电桩管理系统 附带详细运行指导视频,项目介绍,spring boot,vue.js,后端
SpringBoot+Vue充电桩管理系统 附带详细运行指导视频,项目介绍,spring boot,vue.js,后端
SpringBoot+Vue充电桩管理系统 附带详细运行指导视频,项目介绍,spring boot,vue.js,后端
SpringBoot+Vue充电桩管理系统 附带详细运行指导视频,项目介绍,spring boot,vue.js,后端
SpringBoot+Vue充电桩管理系统 附带详细运行指导视频,项目介绍,spring boot,vue.js,后端
SpringBoot+Vue充电桩管理系统 附带详细运行指导视频,项目介绍,spring boot,vue.js,后端
SpringBoot+Vue充电桩管理系统 附带详细运行指导视频,项目介绍,spring boot,vue.js,后端
SpringBoot+Vue充电桩管理系统 附带详细运行指导视频,项目介绍,spring boot,vue.js,后端
SpringBoot+Vue充电桩管理系统 附带详细运行指导视频,项目介绍,spring boot,vue.js,后端
SpringBoot+Vue充电桩管理系统 附带详细运行指导视频,项目介绍,spring boot,vue.js,后端
SpringBoot+Vue充电桩管理系统 附带详细运行指导视频,项目介绍,spring boot,vue.js,后端
SpringBoot+Vue充电桩管理系统 附带详细运行指导视频,项目介绍,spring boot,vue.js,后端文章来源地址https://www.toymoban.com/news/detail-811218.html

四、主要代码

1. 分页获取预约数据代码

	/**
     * 分页获取预约数据
     * @param pageDTO
     * @return
     */
    @Override
    public ResponseDTO<PageDTO<AppointDTO>> getAppointList(PageDTO<AppointDTO> pageDTO) {
        AppointExample appointExample = new AppointExample();
        // 不知道当前页多少,默认为第一页
        if(pageDTO.getPage() == null){
            pageDTO.setPage(1);
        }
        // 不知道每页多少条记录,默认为每页5条记录
        if(pageDTO.getSize() == null){
            pageDTO.setSize(5);
        }
        AppointExample.Criteria c1 = appointExample.createCriteria();
        if(pageDTO.getParam() != null) {
            AppointDTO appointDTO = pageDTO.getParam();
            if(!CommonUtil.isEmpty(appointDTO.getUserId())) {
                c1.andUserIdEqualTo(appointDTO.getUserId());
            } else {
                UserExample userExample = new UserExample();
                userExample.createCriteria().andUsernameLike("%" + appointDTO.getUsername() + "%");
                List<String> userIdList = userMapper.selectByExample(userExample).stream().map(User::getId).collect(Collectors.toList());
                if(userIdList.size() == 0) {
                    pageDTO.setTotal(0L);
                    pageDTO.setList(new ArrayList<>());
                    return ResponseDTO.success(pageDTO);
                }
                c1.andUserIdIn(userIdList);
            }
            if(!(CommonUtil.isEmpty(appointDTO.getChargeId())) && !"0".equals(appointDTO.getChargeId())) {
                c1.andChargeIdEqualTo(appointDTO.getChargeId());
            }
        }
        appointExample.setOrderByClause("create_time desc");
        PageHelper.startPage(pageDTO.getPage(), pageDTO.getSize());
        // 分页查出预约数据
        List<Appoint> appointList = appointMapper.selectByExample(appointExample);
        PageInfo<Appoint> pageInfo = new PageInfo<>(appointList);
        // 获取数据的总数
        pageDTO.setTotal(pageInfo.getTotal());
        // 将domain类型数据  转成 DTO类型数据
        List<AppointDTO> appointDTOList = CopyUtil.copyList(appointList, AppointDTO.class);
        for(AppointDTO appointDTO : appointDTOList) {
            User user = userMapper.selectByPrimaryKey(appointDTO.getUserId());
            appointDTO.setUserDTO(CopyUtil.copy(user, UserDTO.class));
            // 当前时间超过结束时间,且状态为待使用的预约,状态自动改为已取消
            // 当前时间超过结束时间,且状态为充电中的预约,状态自动改为已完成
            String[] splitTime = appointDTO.getTime().split("-");
            Date endDate = CommonUtil.getFormatterDate(CommonUtil.getFormatterDate(appointDTO.getDay(), "yyyy-MM-dd") + " " + splitTime[1], "yyyy-MM-dd HH:mm");
            Appoint appoint = CopyUtil.copy(appointDTO, Appoint.class);
            if(new Date().getTime() > endDate.getTime()) {
                if(AppointStateEnum.WAIT.getCode().equals(appointDTO.getState())) {
                    appoint.setState(AppointStateEnum.CANCEL.getCode());
                    appointDTO.setState(AppointStateEnum.CANCEL.getCode());
                } else if(AppointStateEnum.USE.getCode().equals(appointDTO.getState())) {
                    appoint.setState(AppointStateEnum.OVER.getCode());
                    appoint.setEndTime(endDate);
                    appointDTO.setEndTime(endDate);
                    appointDTO.setState(AppointStateEnum.OVER.getCode());
                    Charge charge = chargeMapper.selectByPrimaryKey(appointDTO.getChargeId());
                    BigDecimal totalPrice = charge.getPrice().multiply(new BigDecimal(DateUtil.between(appointDTO.getStartTime(), endDate, DateUnit.MINUTE)));
                    Order order = new Order();
                    order.setId(UuidUtil.getShortUuid());
                    order.setCreateTime(new Date());
                    order.setUserId(appointDTO.getUserId());
                    order.setChargeId(appointDTO.getChargeId());
                    order.setChargeName(appointDTO.getChargeName());
                    order.setTotalPrice(totalPrice);
                    if(orderMapper.insertSelective(order) == 0) {
                        return ResponseDTO.errorByMsg(CodeMsg.ORDER_ADD_ERROR);
                    }
                }
                appointMapper.updateByPrimaryKeySelective(appoint);
            }
        }
        pageDTO.setList(appointDTOList);
        return ResponseDTO.success(pageDTO);
    }

2.保存预约信息代码

	/**
     * 保存预约信息
     * @param appointDTO
     * @return
     */
    @Override
    public ResponseDTO<Boolean> saveAppoint(AppointDTO appointDTO) {
        // 进行统一表单验证
        CodeMsg validate = ValidateEntityUtil.validate(appointDTO);
        if (!validate.getCode().equals(CodeMsg.SUCCESS.getCode())) {
            return ResponseDTO.errorByMsg(validate);
        }
        Appoint appoint = CopyUtil.copy(appointDTO, Appoint.class);
        Charge charge = chargeMapper.selectByPrimaryKey(appoint.getChargeId());
        if(ChargeStateEnum.REPAIR.getCode().equals(charge.getState())) {
            return ResponseDTO.errorByMsg(CodeMsg.CHARGE_REPAIR_ERROR);
        }
        User user = userMapper.selectByPrimaryKey(appoint.getUserId());
        if(user == null) {
            return ResponseDTO.errorByMsg(CodeMsg.USER_NOT_EXIST);
        }
        if(CommonUtil.isEmpty(appoint.getId())) {
            // 添加操作
            if(user.getRate() < 80) {
                return ResponseDTO.errorByMsg(CodeMsg.RATE_NOT_ENOUGH);
            }
            appoint.setId(UuidUtil.getShortUuid());
            appoint.setCreateTime(new Date());
            // 判断预约日期时间段是否重复
            if(isDayExist(appoint, "")){
                return ResponseDTO.errorByMsg(CodeMsg.APPOINT_DAY_EXIST);
            }
            if(appointMapper.insertSelective(appoint) == 0) {
                return ResponseDTO.errorByMsg(CodeMsg.APPOINT_ADD_ERROR);
            }
        } else {
            // 修改操作
            // 判断预约日期时间段是否重复
            if(isDayExist(appoint, appoint.getId())){
                return ResponseDTO.errorByMsg(CodeMsg.APPOINT_DAY_EXIST);
            }
            if(appointMapper.updateByPrimaryKeySelective(appoint) == 0) {
                return ResponseDTO.errorByMsg(CodeMsg.APPOINT_EDIT_ERROR);
            }
        }
        return ResponseDTO.successByMsg(true, "保存成功!");
    }

3.修改订单状态代码

	/**
     * 修改订单状态
     * @param orderDTO
     * @return
     */
    @Override
    public ResponseDTO<Boolean> editOrderState(OrderDTO orderDTO) {
        if(CommonUtil.isEmpty(orderDTO.getId())) {
            return ResponseDTO.errorByMsg(CodeMsg.DATA_ERROR);
        }
        Order orderDB = orderMapper.selectByPrimaryKey(orderDTO.getId());
        Order order = CopyUtil.copy(orderDTO, Order.class);
        User user = userMapper.selectByPrimaryKey(orderDB.getUserId());
        if(user == null) {
            return ResponseDTO.errorByMsg(CodeMsg.USER_NOT_EXIST);
        }
        if(!OrderStateEnum.PAYED.getCode().equals(orderDB.getState()) && OrderStateEnum.PAYED.getCode().equals(order.getState())) {
            Rate rate = new Rate();
            rate.setId(UuidUtil.getShortUuid());
            if(user.getRate() + 5 >= 100) {
                user.setRate(100);
            } else {
                user.setRate(user.getRate() + 5);
            }
            rate.setNowScore(user.getRate());
            rate.setScore(5);
            rate.setType(RateTypeEnum.ADD.getCode());
            rate.setUserId(orderDB.getUserId());
            rate.setCreateTime(new Date());
            rate.setContent("成功支付,奖励信誉分5分!");
            if(rateMapper.insertSelective(rate) == 0) {
                return ResponseDTO.errorByMsg(CodeMsg.RATE_ADD_ERROR);
            }
            if(userMapper.updateByPrimaryKeySelective(user) == 0) {
                return ResponseDTO.errorByMsg(CodeMsg.USER_EDIT_ERROR);
            }
        }
        if(orderMapper.updateByPrimaryKeySelective(order) == 0) {
            return ResponseDTO.errorByMsg(CodeMsg.ORDER_EDIT_ERROR);
        }
        return ResponseDTO.success(true);
    }

到了这里,关于SpringBoot+Vue充电桩管理系统 附带详细运行指导视频的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 基于springboot车辆充电桩管理系统源码和论文

    随着信息化时代的到来,管理系统都趋向于智能化、系统化,车辆充电桩管理系统也不例外,但目前国内仍都使用人工管理,市场规模越来越大,同时信息量也越来越庞大,人工管理显然已无法应对时代的变化,而车辆充电桩管理系统能很好地解决这一问题,轻松应对车辆充

    2024年02月19日
    浏览(39)
  • Java毕业设计 SpringBoot 新能源充电桩管理系统

    Java毕业设计 SpringBoot 新能源充电桩管理系统 SpringBoot 新能源充电桩管理系统 功能介绍 管理员 登录 验证码 注册 系统用户管理 普通用户管理 通知公告管理 留言管理 充电站管理 充电桩管理 充电桩预约 充电管理 订单管理 修改密码 普通用户 登录 修改个人资料 通知公告查询

    2024年02月08日
    浏览(51)
  • 基于SpringBoot+vue疫情网课管理系统详细设计和实现

    博主介绍 : ✌ 全网粉丝30W+,csdn特邀作者、博客专家、CSDN新星计划导师、Java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和学生毕业项目实战,高校老师/讲师/同行交流合作 ✌ 主要内容: SpringBoot、Vue、SSM、HLMT、Jsp、PHP、Nodejs、P

    2024年02月02日
    浏览(43)
  • 【051】基于Vue、Springboot电商管理系统(含源码、详细论文、数据库)

    基于Vue、Springboot、Mysql的前后端分离的电商管理系统,不仅功能完善,还有详细课设报告供查看,这不收藏起来, 源码和论文 获取见 文末结尾 部分报告内容如下(省略图片)

    2024年02月10日
    浏览(47)
  • 一个基于SpringBoot+Vue前后端分离学生宿舍管理系统详细设计实现

    博主介绍 : ✌ 全网粉丝30W+,csdn特邀作者、博客专家、CSDN新星计划导师、Java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战 ✌ 🍅 文末获取源码联系 🍅 👇🏻 精彩专栏 推荐订阅 👇🏻 不然下次找不到哟 2022-2024年

    2024年02月07日
    浏览(144)
  • 基于Java+SpringBoot+Vue前后端分离仓库管理系统详细设计和实现

    博主介绍 : ✌ 全网粉丝30W+,csdn特邀作者、博客专家、CSDN新星计划导师、Java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战 ✌ 🍅 文末获取源码联系 🍅 👇🏻 精彩专栏 推荐订阅 👇🏻 不然下次找不到哟 2022-2024年

    2024年02月16日
    浏览(77)
  • java web人事管理系统 完整源码 附带详细的设计报告

    今天为大家分享一个java web编写的人事管理系统,目前系统功能已经完善,后续会进一步完善。整个系统界面漂亮,有完整得源码,希望大家可以喜欢。喜欢的帮忙点赞和关注。一起编程、一起进步。 开发语言为Java,开发环境Eclipse或者IDEA都可以。数据库采用:MySQL。 本项目

    2024年02月09日
    浏览(33)
  • 基于Java+SpringBoot+vue等疫情期间在线网课管理系统详细设计实现

    博主介绍 : ✌ 全网粉丝20W+,csdn特邀作者、博客专家、CSDN新星计划导师、java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战 ✌ 🍅 文末获取联系 🍅 精彩专栏 推荐订阅 收藏👇🏻👇🏻  java项目精品实战案例《100套

    2024年02月20日
    浏览(41)
  • 基于SpringBoot+Vue+uniapp微信小程序的设备故障报修管理系统的详细设计和实现

    💗 博主介绍 :✌全网粉丝10W+,CSDN特邀作者、博客专家、CSDN新星计划导师、全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战✌💗 👇🏻 精彩专栏 推荐订阅 👇🏻 2023-2024年最值得选的微信小程序毕业设

    2024年02月22日
    浏览(53)
  • 基于SpringBoot+Vue+uniapp微信小程序的教师工作量管理系统的详细设计和实现

    🌞 博主介绍 :✌全网粉丝15W+,CSDN特邀作者、211毕业、高级全栈开发程序员、大厂多年工作经验、码云/掘金/华为云/阿里云/InfoQ/StackOverflow/github等平台优质作者、专注于Java、小程序技术领域和毕业项目实战,以及程序定制化开发、全栈讲解、就业辅导✌🌞 👇🏻 精彩专栏

    2024年03月13日
    浏览(55)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包