一、项目演示

项目演示地址: 视频地址

二、项目介绍

项目描述:这是一个基于SpringBoot+uniApp框架开发的新能源充电桩预约小程序系统。首先,这是一个前后端分离的项目,前端分为用户端管理端用户端使用微信小程序(uniApp开发)管理端使用Web页面(Vue开发)。然后这项目代码简洁规范,注释说明详细,易于理解和学习。其次,这项目功能丰富,具有一个新能源充电桩预约小程序系统该有的所有功能。

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

应用技术:SpringBoot + uniApp + Vue3 + MySQL + MyBatis + Redis + ElementUI-Plus + uni-ui + Vite + TypeScript

运行环境:IntelliJ IDEA2019.3.5 + MySQL5.7(项目压缩包中自带) + Redis5.0.5(项目压缩包中自带) + JDK1.8 + Maven3.6.3(项目压缩包中自带)+ Node16.20.2(项目压缩包中自带)+ 微信开发者工具(项目压缩包中自带)+ Visual Studio Code(项目压缩包中自带)

三、运行截图

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

四、主要代码

1.预约充电桩代码

 /**
  * 保存预约信息
  * @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, "保存成功!");
 }

2.查询订单代码

 /**
  * 获取订单列表数据
  * @param orderDTO
  * @return
  */
 @Override
 public ResponseDTO<List<OrderDTO>> getAllOrder(OrderDTO orderDTO) {
     OrderExample orderExample = new OrderExample();
     OrderExample.Criteria criteria = orderExample.createCriteria();
     if(!CommonUtil.isEmpty(orderDTO.getUserId())) {
         criteria.andUserIdEqualTo(orderDTO.getUserId());
     }
     if(!CommonUtil.isEmpty(orderDTO.getChargeName())) {
         criteria.andChargeNameLike("%" + orderDTO.getChargeName() + "%");
     }
     if(orderDTO.getState() != null && orderDTO.getState() != 0) {
         criteria.andStateEqualTo(orderDTO.getState());
     }
     orderExample.setOrderByClause("create_time desc");
     List<Order> orderList = orderMapper.selectByExample(orderExample);
     List<OrderDTO> orderDTOList = CopyUtil.copyList(orderList, OrderDTO.class);
     for(OrderDTO order : orderDTOList) {
         User user = userMapper.selectByPrimaryKey(order.getUserId());
         order.setUserDTO(CopyUtil.copy(Optional.ofNullable(user).orElse(new User()), UserDTO.class));
     }
     return ResponseDTO.success(orderDTOList);
 }

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());
          user.setRate(Math.min(user.getRate() + 5, 100));
          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);
  }
Logo

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

更多推荐