SpringBoot+uniApp新能源充电桩预约小程序系统 附带详细运行指导视频
一、项目演示
项目演示地址: 视频地址
二、项目介绍
项目描述:这是一个基于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);
}
更多推荐


所有评论(0)