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, "保存成功!");
    }
相关推荐
学长毕设11 分钟前
基于springboot的农资管理系统-附源码
java·spring boot·后端
小阿鑫1 小时前
尤雨溪 : Vue 4 已经在规划中了!
vue·vite·vite+·程序员海军·vue4
Magicdata大数据2 小时前
AI辅助教学:调用大模型从教材中生成习题,方便学员练习
java·spring boot·大模型·知识图谱·neo4j·ai辅助教学
不识君2 小时前
esl-client 2.0.0 发布:Java 项目接入 FreeSWITCH,从引入到使用
spring boot·后端·开源
二宝哥3 小时前
03.Spring AI Embedding 实战:从向量化原理到项目落地
人工智能·spring boot·向量·spring ai
captain3764 小时前
Spring Web MVC(2)
java·前端·spring boot·后端·spring·mvc
技术老孙4 小时前
给 Agent 装上对话框 —— AgentScope-Java 接入 Spring Boot 与 SSE 流式实战
java·开发语言·spring boot
paopaokaka_luck15 小时前
宠物门店经营管理系统(销售与库存联动、进货自动记账、 退换与退款关联、员工个人业绩、ECharts 经营分析、滞销识别与客户分层、宠物档案年龄计算)
前端·javascript·spring boot·mysql·echarts·mybatis·1024程序员节
paopaokaka_luck18 小时前
心理咨询管理系统(WebSocket实时沟通、基于用户的协同过滤、 ECharts多维分析、 预约业务流程、预约校验与定时处理)
java·vue.js·spring boot·mysql·spring·echarts·1024程序员节
2301_322414280418 小时前
springboot农产品交易平台的设计与实现08055-计算机毕设 原创(免费领源码+部署教程+开发环境)
java·spring boot·redis·mysql·tomcat·maven·mybatis