ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

在线课堂后端代码梳理

2022-06-22 12:31:13  阅读:135  来源: 互联网

标签:code 在线 JsonData 梳理 org msg import 课堂 public


  可以参考完整的代码:https://gitee.com/juncaoit/onlineclass

  这里通过小滴课堂的学习,然后进行了代码参考借鉴。

 

一:大致说明

1.数据库

  mysql

 

2.包括模块

  用户

  视频

  订单

  

3.技术

  springboot
  mybatis
  Jwt
  mysql
  Gauva

 

二:细节

1.数据库与mybatis的配置

server.port=8089

spring.datasource.driver-class-name =com.mysql.cj.jdbc.Driver
spring.datasource.url=jdbc:mysql://127.0.0.1:3306/online_xdclass?useUnicode=true&characterEncoding=utf-8&useSSL=false
spring.datasource.username=root
spring.datasource.password=123456

mybatis.configuration.log-impl=org.apache.ibatis.logging.stdout.StdOutImpl

mybatis.configuration.map-underscore-to-camel-case=true
mybatis.mapper-locations=classpath:mapper/*.xml

mybatis.type-aliases-package=com.jun.onlineclass.model.entity

 

2.全局设置

返回格式的定义

package com.jun.onlineclass.utils;

import lombok.Data;

@Data
public class JsonData {

    /**
     * 状态码 0表示成功过,1表示处理中,-1 表示失败
     */
    private Integer code;

    /**
     * 业务数据
     */
    private Object data;

    /**
     * 信息表示
     */
    private String msg;

    public JsonData() {
    }

    public JsonData(Integer code, Object data, String msg) {
        this.code = code;
        this.data = data;
        this.msg = msg;
    }


    /**
     * 成功,不用返回数据
     */
    public static JsonData buildSuccess() {
        return new JsonData(0, null, null);
    }

    /**
     * 成功,返回数据
     */
    public static JsonData buildSuccess(Object data) {
        return new JsonData(0, data, null);
    }


    /**
     * 失败,固定状态码
     */
    public static JsonData buildError(String msg) {
        return new JsonData(-1, null, msg);
    }


    /**
     * 失败,自定义错误码和信息
     */
    public static JsonData buildError(Integer code, String msg) {
        return new JsonData(code, null, msg);
    }


}

 

异常捕获异常处理:

异常dto:

package com.jun.onlineclass.exception;

import lombok.Data;

/**
 * 自定义异常类
 */
@Data
public class XDException extends RuntimeException {

    private Integer code;

    private String msg;

    public XDException(Integer code, String msg) {
        this.code = code;
        this.msg = msg;
    }
}

处理:

package com.jun.onlineclass.exception;


import com.jun.onlineclass.utils.JsonData;
import lombok.extern.slf4j.Slf4j;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.web.bind.annotation.ControllerAdvice;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.ResponseBody;

/**
 * 异常处理类
 */
@ControllerAdvice
@Slf4j
public class CustomExceptionHandler {

    @ExceptionHandler(value = Exception.class)
    @ResponseBody
    public JsonData handle(Exception e) {
        log.error("系统异常", e);
        if (e instanceof XDException) {
            XDException xdException = (XDException) e;
            return JsonData.buildError(xdException.getCode(), xdException.getMsg());
        } else {
            return JsonData.buildError("全局异常,未知错误");
        }
    }
}

 

3.web目录设置

* 不用权限可以访问url    /api/v1/pub/
* 要登录可以访问url /api/v1/pri/

 

4.拦截器设置

  主要有跨域拦截处理,以及登录拦截处理

package com.jun.onlineclass.config;

import com.jun.onlineclass.interceptor.CorsInterceptor;
import com.jun.onlineclass.interceptor.LoginInterceptor;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;

/**
 * 拦截器配置
 * <p>
 * 不用权限可以访问url    /api/v1/pub/
 * 要登录可以访问url    /api/v1/pri/
 */

@Configuration
public class InterceptorConfig implements WebMvcConfigurer {
    @Bean
    LoginInterceptor loginInterceptor() {
        return new LoginInterceptor();
    }

    @Bean
    CorsInterceptor corsInterceptor() {
        return new CorsInterceptor();
    }


    @Override
    public void addInterceptors(InterceptorRegistry registry) {
        // 拦截全部路径,这个跨域需要放在最上面
        registry.addInterceptor(corsInterceptor()).addPathPatterns("/**");

        //拦截全部
        registry.addInterceptor(loginInterceptor())
                // 拦截哪些路径
                .addPathPatterns("/api/v1/pri/*/*/**")
                //不拦截哪些路径   斜杠一定要加
                .excludePathPatterns("/api/v1/pri/user/login", "/api/v1/pri/user/register");

        WebMvcConfigurer.super.addInterceptors(registry);
    }
}

 

5.

 

标签:code,在线,JsonData,梳理,org,msg,import,课堂,public
来源: https://www.cnblogs.com/juncaoit/p/16400079.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有