其他分享
首页 > 其他分享> > 在线课堂后端代码梳理

在线课堂后端代码梳理

作者:互联网

  可以参考完整的代码: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