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.保存宠物信息代码

java 复制代码
	/**
     * 保存宠物信息
     * @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.提交订单信息代码

java 复制代码
	/**
     * 提交订单信息
     * @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.查询评论信息代码

java 复制代码
	/**
     * 查询评论信息
     * @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));
    }
相关推荐
路在脚下@21 分钟前
spring boot的配置文件属性注入到类的静态属性
java·spring boot·sql
啦啦右一22 分钟前
Spring Boot | (一)Spring开发环境构建
spring boot·后端·spring
森屿Serien24 分钟前
Spring Boot常用注解
java·spring boot·后端
苹果醋31 小时前
React源码02 - 基础知识 React API 一览
java·运维·spring boot·mysql·nginx
荆州克莱3 小时前
mysql中局部变量_MySQL中变量的总结
spring boot·spring·spring cloud·css3·技术
武昌库里写JAVA4 小时前
Java成长之路(一)--SpringBoot基础学习--SpringBoot代码测试
java·开发语言·spring boot·学习·课程设计
Q_19284999064 小时前
基于Spring Boot的九州美食城商户一体化系统
java·spring boot·后端
Q_19284999065 小时前
基于Spring Boot的营销项目系统
spring boot
路在脚下@7 小时前
Spring Boot @Conditional注解
java·spring boot·spring
用户48062260414157 小时前
使用uniapp开发微信小程序-框架搭建
微信小程序·uni-app