SpringBoot+Vue心理健康咨询系统 附带详细运行指导视频

文章目录

一、项目演示

项目演示地址: 视频地址

二、项目介绍

项目描述:这是一个基于SpringBoot+Vue框架 开发的心理健康咨询系统。首先,这是一个前后端分离的项目,代码简洁规范,注释说明详细,易于理解和学习。其次,这项目功能丰富,具有一个心理健康咨询系统该有的所有功能。

项目功能:此项目分为三个 角色:普通用户 、咨询师 和管理员 。

普通用户 有登录、注册、筛选咨询师信息、下单咨询、和咨询师在线沟通、评价咨询师、在线心理测评、查看心理文章、收藏心理文章等等功能。

咨询师 有登录、管理个人资质证书、申请成为咨询师、在线和下单用户聊天、管理个人发布的心理文章、管理个人订单管理、查看个人评价信息、查看个人数据统计等等功能。

管理员有登录、查看数据统计信息、管理所有用户信息、审核咨询师信息、管理所有咨询师资质证书信息、管理所有心理测评信息、管理所有心理测评题库信息、管理所有心理文章信息、管理所有订单信息、管理所有评价信息等等功能。

应用技术:SpringBoot3 + Vue3 + MySQL + MyBatis + Redis + ElementUI-Plus + Vite

运行环境:IntelliJ IDEA + MySQL + Redis5.0.5 + JDK17 + Maven3.6.3 + Node + Visual Studio Code(以上工具在项目压缩包中都自带)

三、运行截图

四、主要代码

1.发送消息代码

java 复制代码
    /**
     * 发送消息
     * @param chatMessageDTO
     * @return
     */
    @Override
    public ResponseDTO<Boolean> sendMessage(ChatMessageDTO chatMessageDTO) {
        String senderId = chatMessageDTO.getSenderId();
        String receiverId = chatMessageDTO.getReceiverId();
        String content = chatMessageDTO.getContent();

        if (CommonUtil.isEmpty(senderId) || CommonUtil.isEmpty(receiverId) || CommonUtil.isEmpty(content)) {
            return ResponseDTO.errorByMsg(CodeMsg.DATA_ERROR);
        }

        ResponseDTO<Orders> orderCheck = checkConsultOrder(senderId, receiverId);
        if (orderCheck.getCode() != 0) {
            return ResponseDTO.errorByMsg(orderCheck.getCode(), orderCheck.getMsg());
        }

        Orders orders = orderCheck.getData();
        if (orders != null) {
            if (orders.getState() == 1 && orders.getStartDate() == null) {
                orders.setState(2);
                orders.setStartDate(new Date());
                ordersMapper.updateById(orders);
            } else if (orders.getState() == 2 && orders.getStartDate() != null) {
                long diffMinutes = (new Date().getTime() - orders.getStartDate().getTime()) / (1000 * 60);
                if (diffMinutes >= 50) {
                    orders.setState(3);
                    ordersMapper.updateById(orders);
                    return ResponseDTO.errorByMsg(CodeMsg.CONSULT_TIME_EXPIRED);
                }
            }
        }

        ChatMessage chatMessage = new ChatMessage();
        chatMessage.setId(UuidUtil.getShortUuid());
        chatMessage.setSenderId(senderId);
        chatMessage.setReceiverId(receiverId);
        chatMessage.setContent(content);
        chatMessage.setType(chatMessageDTO.getType() != null ? chatMessageDTO.getType() : 1);
        chatMessage.setReadStatus(0);
        chatMessage.setCreateTime(new Date());

        if (chatMessageMapper.insert(chatMessage) == 0) {
            return ResponseDTO.errorByMsg(CodeMsg.MESSAGE_SEND_ERROR);
        }

        ChatMessageDTO pushDto = new ChatMessageDTO();
        pushDto.setId(chatMessage.getId());
        pushDto.setSenderId(senderId);
        pushDto.setReceiverId(receiverId);
        pushDto.setContent(content);
        pushDto.setType(chatMessage.getType());
        pushDto.setTime(formatTime(chatMessage.getCreateTime()));
        pushDto.setIsSelf(false);

        String messageJson = JSON.toJSONString(pushDto);
        webSocketHandler.sendMessage(receiverId, messageJson);

        return ResponseDTO.successByMsg(true, "发送成功!");
    }

2.创建咨询订单代码

java 复制代码
 	/**
     * 创建订单
     * @param ordersDTO
     * @return
     */
    @Override
    public ResponseDTO<Boolean> createOrder(OrdersDTO ordersDTO) {
        ResponseDTO<UserDTO> loginUser = getLoginUser(ordersDTO.getToken());
        if (loginUser.getCode() != 0) {
            return ResponseDTO.errorByMsg(CodeMsg.USER_SESSION_EXPIRED);
        }
        ordersDTO.setUserId(loginUser.getData().getId());

        CodeMsg validate = ValidateEntityUtil.validate(ordersDTO);
        if (!validate.getCode().equals(CodeMsg.SUCCESS.getCode())) {
            return ResponseDTO.errorByMsg(validate);
        }
        Orders orders = CopyUtil.copy(ordersDTO, Orders.class);
        orders.setId(UuidUtil.getShortUuid());
        orders.setState(1);
        orders.setCreateTime(new Date());
        if (ordersMapper.insert(orders) == 0) {
            return ResponseDTO.errorByMsg(CodeMsg.ORDER_ADD_ERROR);
        }
        return ResponseDTO.successByMsg(true, "下单成功!");
    }

3.保存咨询师信息

java 复制代码
    /**
     * 保存咨询师信息
     * 
     * @param consultantDTO
     * @return
     */
    @Override
    public ResponseDTO<Boolean> saveConsultant(ConsultantDTO consultantDTO) {
        CodeMsg validate = ValidateEntityUtil.validate(consultantDTO);
        if (!validate.getCode().equals(CodeMsg.SUCCESS.getCode())) {
            return ResponseDTO.errorByMsg(validate);
        }
        Consultant consultant = CopyUtil.copy(consultantDTO, Consultant.class);
        if (CommonUtil.isEmpty(consultant.getId())) {
            consultant.setId(UuidUtil.getShortUuid());
            consultant.setRating(new BigDecimal("0.00"));
            consultant.setRatingCount(0);
            consultant.setConsultCount(0);
            consultant.setStatus(2);
            if (consultantMapper.insert(consultant) == 0) {
                return ResponseDTO.errorByMsg(CodeMsg.CONSULTANT_ADD_ERROR);
            }
        } else {
            if (consultantMapper.updateById(consultant) == 0) {
                return ResponseDTO.errorByMsg(CodeMsg.CONSULTANT_EDIT_ERROR);
            }
        }
        return ResponseDTO.successByMsg(true, "保存成功!");
    }
相关推荐
乌暮5 小时前
Spring AOP 与 Spring 事务:用大白话彻底理解原理与实践
java·数据库·spring boot·后端·sql·学习·spring
小荷才露尖尖角,早有蜻蜓立上头8 小时前
SpringBoot+QQ邮箱发送邮件
spring boot
头发还在的女程序员10 小时前
Java在线租房系统源码解析:Spring Boot+Vue 3+UniApp房源管理与预约看房方案
java·vue.js·spring boot·租房小程序·租房系统·租房软件
FYKJ_201010 小时前
springboot同人周边订单管理系统48955-计算机毕业设计、课程设计
java·javascript·vue.js·spring boot·django·php·课程设计
yuyuxun11 天前
协同过滤的校园二手物品智能推荐系统的设计与实现 毕业设计-附源码40082
javascript·vue.js·spring boot·python·数据分析·django·课程设计
LGL6030A1 天前
Java学习历程31——初识Spring Boot
java·spring boot·学习
AI源码1 天前
高校查分系统
vue
阿达和自己1 天前
springboot学习-springboot引入MyBatis-Plus
spring boot·学习·mybatis
Jackzhang2 天前
[运维排障实录] 第一次遇到 502 别急着重启:按「一条线」把问题查清楚
spring boot
学长毕设2 天前
基于SpringBoot的景点管理系统-附源码
java·spring boot·后端