赞
踩
项目演示地址: 视频地址
项目描述:这是一个基于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(项目压缩包中自带)
/** * 保存宠物信息 * @param petDTO * @return */ @Override public 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, "保存成功!"); }
/** * 提交订单信息 * @param orderDTO * @return */ @Override public 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, "下单成功!"); }
/** * 查询评论信息 * @param commentDTO * @return */ @Override public 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)); }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。