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, "保存成功!");
    }
相关推荐
遨游DATA1 小时前
Spring Boot 启动失败排查:如何区分多 Bean 冲突与清理阶段异常
java·spring boot·后端
雪碧聊技术2 小时前
Spring Boot项目如何彻底禁用Nacos(服务发现+配置中心),本地启动不再依赖Nacos
spring boot·nacos·服务发现
Flittly6 小时前
【日常小问】Docker 部署 Nacos 2.4.3,Dubbo 3.3 连接 Config Service 失败排查
java·spring boot·dubbo
卓怡学长10 小时前
w261springboot基于web学校课程管理系统
java·数据库·spring boot·spring·intellij-idea
砍材农夫11 小时前
redis|spring-boot redis geo|附近定位功能
java·spring boot·redis
智码看视界12 小时前
Day18 SpringBoot自动配置原理:从@SpringBootApplication开始
java·spring boot·后端·自动装配
沫离痕1 天前
Cassandra 4.0.11 Docker 安装与配置手册
java·spring boot
山东点狮信息科技有限公司1 天前
SpringBoot+VUE3,一套系统完成OA+HRM+CRM+MES+合同+项目管理 —— 深度解析点狮全业务管理平台
java·spring boot·后端