文章目录
- 一、项目演示
- 二、项目介绍
- 三、运行截图
- 四、主要代码
- 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 petDTO* @return*/@Overridepublic ResponseDTO<Boolean> savePet(PetDTO petDTO) {// 进行统一表单验证CodeMsg validate = ValidateEntityUtil.validate(petDTO);if (!validate.getCode().equals(CodeMsg.SUCCESS.getCode())) {return ResponseDTO.errorByMsg(validate);}Pet pet = CopyUtil.copy(petDTO, Pet.class);if(CommonUtil.isEmpty(pet.getId())) {// 添加操作pet.setId(UuidUtil.getShortUuid());pet.setCreateTime(new Date());pet.setState(PetStateEnum.WAIT.getCode());batchInsertPicture(petDTO.getPhotoList(), pet.getId());if(petMapper.insertSelective(pet) == 0) {return ResponseDTO.errorByMsg(CodeMsg.PET_ADD_ERROR);}} else {// 修改操作pet.setState(Optional.ofNullable(pet.getState()).orElse(PetStateEnum.WAIT.getCode()));PictureExample pictureExample = new PictureExample();pictureExample.createCriteria().andRefIdEqualTo(pet.getId());pictureMapper.deleteByExample(pictureExample);batchInsertPicture(petDTO.getPhotoList(), pet.getId());if(petMapper.updateByPrimaryKeySelective(pet) == 0) {return ResponseDTO.errorByMsg(CodeMsg.PET_EDIT_ERROR);}}return ResponseDTO.successByMsg(true, "保存成功!");}
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);}Order order = CopyUtil.copy(orderDTO, Order.class);Pet pet = petMapper.selectByPrimaryKey(order.getPetId());if(pet.getUserId().equals(order.getUserId())) {return ResponseDTO.errorByMsg(CodeMsg.ORDER_REPEAT_ERROR);}if(!PetStateEnum.SUCCESS.getCode().equals(pet.getState())) {return ResponseDTO.errorByMsg(CodeMsg.ORDER_PET_STATE_ERROR);}Category category = categoryMapper.selectByPrimaryKey(pet.getCategoryId());order.setCategoryName(Optional.ofNullable(category.getName()).orElse(""));Plate plate = plateMapper.selectByPrimaryKey(pet.getPlateId());order.setPlateName(Optional.ofNullable(plate.getName()).orElse(""));order.setId(UuidUtil.getShortUuid());order.setTotalPrice(pet.getPrice());order.setPetName(pet.getName());order.setPetInfo(pet.getInfo());PictureExample pictureExample = new PictureExample();pictureExample.createCriteria().andTypeEqualTo(PictureTypeEnum.PET.getCode()).andRefIdEqualTo(pet.getId());pictureExample.setOrderByClause("sort asc");List<Picture> pictureList = pictureMapper.selectByExample(pictureExample);if(pictureList.size() > 0) {order.setPetPhoto(pictureList.get(0).getPhoto());}order.setSellerId(pet.getUserId());order.setCreateTime(new Date());if(orderMapper.insertSelective(order) == 0) {return ResponseDTO.errorByMsg(CodeMsg.ORDER_ADD_ERROR);}pet.setState(PetStateEnum.SELL.getCode());petMapper.updateByPrimaryKeySelective(pet);return ResponseDTO.successByMsg(true, "下单成功!");}
3.查询评论信息代码
/*** 查询评论信息* @param commentDTO* @return*/@Overridepublic ResponseDTO<List<CommentDTO>> getCommentList(CommentDTO commentDTO) {CommentExample commentExample = new CommentExample();CommentExample.Criteria criteria = commentExample.createCriteria();int total = 0;if(!CommonUtil.isEmpty(commentDTO.getPostId())) {criteria.andPostIdEqualTo(commentDTO.getPostId());total = commentMapper.countByExample(commentExample);}// 先查所有父级评论criteria.andParentIdEqualTo("");commentExample.setOrderByClause("create_time desc");List<Comment> commentList = commentMapper.selectByExample(commentExample);List<CommentDTO> commentDTOList = CopyUtil.copyList(commentList, CommentDTO.class);for(CommentDTO comment : commentDTOList) {User user = userMapper.selectByPrimaryKey(comment.getUserId());comment.setUserDTO(CopyUtil.copy(user, UserDTO.class));// 查询子评论CommentExample childCommentExample = new CommentExample();childCommentExample.createCriteria().andParentIdEqualTo(comment.getId());childCommentExample.setOrderByClause("create_time desc");List<Comment> childCommentList = commentMapper.selectByExample(childCommentExample);// 查询子评论List<CommentDTO> childCommentDTOList = CopyUtil.copyList(childCommentList, CommentDTO.class);for(CommentDTO childComment : childCommentDTOList) {childComment.setUserDTO(CopyUtil.copy(userMapper.selectByPrimaryKey(childComment.getUserId()), UserDTO.class));childComment.setReplyUserDTO(CopyUtil.copy(userMapper.selectByPrimaryKey(childComment.getReplyId()), UserDTO.class));}comment.setChildCommentDTOList(childCommentDTOList);}return ResponseDTO.successByMsg(commentDTOList, String.valueOf(total));}