欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 房产 > 家装 > SpringBoot+UniApp物流快递寄件小程序系统 附带详细运行指导视频

SpringBoot+UniApp物流快递寄件小程序系统 附带详细运行指导视频

2024/10/25 11:31:00 来源:https://blog.csdn.net/dgfdhgghd/article/details/141940909  浏览:    关键词:SpringBoot+UniApp物流快递寄件小程序系统 附带详细运行指导视频

文章目录

  • 一、项目演示
  • 二、项目介绍
  • 三、运行截图
  • 四、主要代码
    • 1.查询运费金额代码
    • 2.寄快递提交订单代码
    • 3.签到获取积分代码

一、项目演示

项目演示地址:视频地址

二、项目介绍

项目描述:这是一个基于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 feeCalcDTO* @return*/@Overridepublic ResponseDTO<BigDecimal> calcSendFee(FeeCalcDTO feeCalcDTO) {// 收费规则类型int ruleType = 0;// 取出寄件地址AddressDTO sendAddressDTO = feeCalcDTO.getSendAddressDTO();// 取出收件地址AddressDTO receiveAddressDTO = feeCalcDTO.getReceiveAddressDTO();// 判断是否是同城、省内、省外if(sendAddressDTO.getCity().equals(receiveAddressDTO.getCity())) {ruleType = RuleTypeEnum.CITY.getCode();} else if (sendAddressDTO.getProvince().equals(receiveAddressDTO.getProvince())) {ruleType = RuleTypeEnum.INSIDE.getCode();} else if (!sendAddressDTO.getProvince().equals(receiveAddressDTO.getProvince())) {ruleType = RuleTypeEnum.OUTSIDE.getCode();}// 查出符合的收费规则数据RuleExample ruleExample = new RuleExample();int finalRuleType = ruleType;List<Rule> ruleList = ruleMapper.selectByExample(ruleExample).stream().filter(e -> e.getType() == finalRuleType).collect(Collectors.toList());if(ruleList.size() == 0) {return ResponseDTO.errorByMsg(CodeMsg.DATA_ERROR);}Rule rule = ruleList.get(0);BigDecimal totalPrice = rule.getBasePrice().add(new BigDecimal(feeCalcDTO.getWeight() - 1).multiply(rule.getNextPrice()));return ResponseDTO.success(totalPrice);}

2.寄快递提交订单代码

   /*** 提交订单操作* @param orderDTO* @return*/@Overridepublic ResponseDTO<Boolean> submitOrder(OrderDTO orderDTO) {// 进行统一表单验证CodeMsg validate = ValidateEntityUtil.validate(orderDTO);if (!validate.getCode().equals(CodeMsg.SUCCESS.getCode())) {return ResponseDTO.errorByMsg(validate);}if(CommonUtil.isEmpty(orderDTO.getUserId())) {return ResponseDTO.errorByMsg(CodeMsg.DATA_ERROR);}User user = userMapper.selectByPrimaryKey(orderDTO.getUserId());if(user == null) {return ResponseDTO.errorByMsg(CodeMsg.USER_NOT_EXIST);}Order order = CopyUtil.copy(orderDTO, Order.class);// 封装地址信息 计算价格// 寄件地址AddressDTO sendAddressDTO = new AddressDTO();sendAddressDTO.setCity(order.getSendCity());sendAddressDTO.setProvince(order.getSendProvince());// 收件地址AddressDTO receiveAddressDTO = new AddressDTO();receiveAddressDTO.setCity(order.getReceiveCity());receiveAddressDTO.setProvince(order.getReceiveProvince());FeeCalcDTO feeCalcDTO = new FeeCalcDTO();feeCalcDTO.setSendAddressDTO(sendAddressDTO);feeCalcDTO.setReceiveAddressDTO(receiveAddressDTO);feeCalcDTO.setWeight(order.getWeight());// 计算费用ResponseDTO<BigDecimal> calcSendFeeResp = ruleService.calcSendFee(feeCalcDTO);if (!calcSendFeeResp.getCode().equals(CodeMsg.SUCCESS.getCode())) {return ResponseDTO.errorByMsg(CodeMsg.RULE_CALC_ERROR);}order.setPrice(calcSendFeeResp.getData());// 判断是否使用优惠券if(!CommonUtil.isEmpty(orderDTO.getCouponItemId())) {CouponItem couponItem = couponItemMapper.selectByPrimaryKey(orderDTO.getCouponItemId());if(!CouponStateEnum.WAIT.getCode().equals(couponItem.getState()) || couponItem.getCouponTime().getTime() < new Date().getTime()) {return ResponseDTO.errorByMsg(CodeMsg.COUPON_STATE_ERROR);}if(order.getPrice().compareTo(couponItem.getCouponPrice()) > -1) {order.setPrice(order.getPrice().subtract(couponItem.getCouponPrice()));} else {order.setPrice(new BigDecimal(0));}couponItem.setState(CouponStateEnum.USE.getCode());if(couponItemMapper.updateByPrimaryKeySelective(couponItem) == 0) {return ResponseDTO.errorByMsg(CodeMsg.COUPON_USE_ERROR);}}order.setId(UuidUtil.getShortUuid());order.setCreateTime(new Date());if(orderMapper.insertSelective(order) == 0) {throw new RuntimeException(CodeMsg.ORDER_ADD_ERROR.getMsg());}// 记录订单详情OrderItem orderItem = new OrderItem();orderItem.setId(UuidUtil.getShortUuid());orderItem.setOrderId(order.getId());orderItem.setCreateTime(new Date());orderItem.setState(OrderStateEnum.WAIT_PICK.getCode());orderItem.setContent("您已成功下订单,请耐心等待取件师傅与您联系取货哈,如有问题可联系客服咨询!");if(orderItemMapper.insertSelective(orderItem) == 0) {throw new RuntimeException(CodeMsg.ORDER_ITEM_ADD_ERROR.getMsg());}return ResponseDTO.successByMsg(true, "下单成功!");}

3.签到获取积分代码

   /*** 签到获取积分操作* @param rateDTO* @return*/@Overridepublic ResponseDTO<Boolean> signScore(RateDTO rateDTO) {if(CommonUtil.isEmpty(rateDTO.getUserId())) {return ResponseDTO.errorByMsg(CodeMsg.DATA_ERROR);}// 获取登录用户信息User user = userMapper.selectByPrimaryKey(rateDTO.getUserId());if(user == null) {return ResponseDTO.errorByMsg(CodeMsg.USER_NOT_EXIST);}Rate rate = new Rate();rate.setId(UuidUtil.getShortUuid());rate.setCreateTime(new Date());rate.setUserId(user.getId());rate.setType(RateTypeEnum.SIGN.getCode());if(user.getSignDay() == 6) {user.setSignDay(7);user.setScore(user.getScore() + RuntimeConstant.SURPRISE_SIGN_SCORE);rate.setScore(RuntimeConstant.SURPRISE_SIGN_SCORE);rate.setDescription("签到获得惊喜积分");} else {user.setSignDay(user.getSignDay() + 1);user.setScore(user.getScore() + RuntimeConstant.NORMAL_SIGN_SCORE);rate.setScore(RuntimeConstant.NORMAL_SIGN_SCORE);rate.setDescription("签到获得积分");}rate.setNowScore(user.getScore());// 存储积分变化明细数据if(rateMapper.insertSelective(rate) == 0) {return ResponseDTO.errorByMsg(CodeMsg.RATE_SAVE_ERROR);}// 更新用户信息if(userMapper.updateByPrimaryKeySelective(user) == 0) {throw new RuntimeException(CodeMsg.USER_EDIT_ERROR.getMsg());}return ResponseDTO.successByMsg(true, "签到成功!");}

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com