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));
    }
相关推荐
阿伟*rui3 小时前
配置管理,雪崩问题分析,sentinel的使用
java·spring boot·sentinel
paopaokaka_luck5 小时前
【360】基于springboot的志愿服务管理系统
java·spring boot·后端·spring·毕业设计
Yaml46 小时前
Spring Boot 与 Vue 共筑二手书籍交易卓越平台
java·spring boot·后端·mysql·spring·vue·二手书籍
小小小妮子~7 小时前
Spring Boot详解:从入门到精通
java·spring boot·后端
hong1616887 小时前
Spring Boot中实现多数据源连接和切换的方案
java·spring boot·后端
尚梦7 小时前
uni-app 封装刘海状态栏(适用小程序, h5, 头条小程序)
前端·小程序·uni-app
程序媛小果8 小时前
基于java+SpringBoot+Vue的旅游管理系统设计与实现
java·vue.js·spring boot
AskHarries10 小时前
Spring Boot集成Access DB实现数据导入和解析
java·spring boot·后端
2401_8576226610 小时前
SpringBoot健身房管理:敏捷与自动化
spring boot·后端·自动化
程序员阿龙10 小时前
基于SpringBoot的医疗陪护系统设计与实现(源码+定制+开发)
java·spring boot·后端·医疗陪护管理平台·患者护理服务平台·医疗信息管理系统·患者陪护服务平台