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车辆充电桩管理系统源码和论文

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

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

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

    Java毕业设计 SpringBoot 新能源充电桩管理系统

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

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

    基于SpringBoot+vue疫情网课管理系统详细设计和实现

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

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

    一个基于SpringBoot+Vue前后端分离学生宿舍管理系统详细设计实现

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

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

    【051】基于Vue、Springboot电商管理系统(含源码、详细论文、数据库)

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

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

    基于Java+SpringBoot+Vue前后端分离仓库管理系统详细设计和实现

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

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

    java web人事管理系统 完整源码 附带详细的设计报告

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

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

    基于Java+SpringBoot+vue等疫情期间在线网课管理系统详细设计实现

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

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

    基于SpringBoot+Vue+uniapp微信小程序的设备故障报修管理系统的详细设计和实现

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

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

    基于SpringBoot+Vue+uniapp微信小程序的教师工作量管理系统的详细设计和实现

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

    2024年03月13日
    浏览(14)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包