SpringBoot+uniApp宠物领养小程序系统 附带详细运行指导视频

本文介绍了一个采用SpringBoot、uniApp和Vue3等技术构建的宠物领养小程序项目,包括用户端和管理端的功能,如宠物信息管理、订单提交和评论查询等,并提供了关键代码片段以供学习和参考。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、项目演示

项目演示地址: 视频地址

二、项目介绍

项目描述:这是一个基于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
     */
    @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, "保存成功!");
    }

2.提交订单信息代码

	/**
     * 提交订单信息
     * @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, "下单成功!");
    }

3.查询评论信息代码

	/**
     * 查询评论信息
     * @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));
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

这里是杨杨吖

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值