自己二次开发若依框架的记录

925 阅读2分钟

基于若依的二次开发

数据库设计

首先先设计系统的数据库,这款产品的功能主要围绕文章方面,包含用户的发布文章,用户评论与点赞,用户的喜欢,以及文章的删除等操作,数据库主要包含下面的表: 数据库.png

后台系统搭建

主要就是通过若依的代码生成功能,来生成一些基本的业务接口,具体的代码生成逻辑如下:

  • 首先先导入数据库表
  • 然后修改信息
  • 导出代码
  • 引入若依中

最后效果:

ruoyi.png

前端ui搭建

花了点时间,重新学了css和html,然后用vue简单的搭建了一个前台,供给用户使用:

ui.png

其中路由主要包含主页(home组件),文章(Body-Article组件组),发现(find组件),记录(note)组件,目前功能设计主要有:

  • 主页:显示热门文章
  • 文章:显示所有文章,分类管理
  • 发现:根据用户喜好和长短来推荐相关文章
  • 记录:记录用户的个人笔记,使用习惯
  • 搜索:搜索用户想要的文章
  • 个人信息:存储用户个人信息

前端axios封装

首先,借鉴了若依框架对于request的封装,如下: request.js

//生成axios实例
import axios from "axios";
import {getToken} from "@/api/request/auth";
import errorCode from "@/api/request/errorCode";

/**
 * 对于axios拦截器的封装
 * @type {{show: boolean}}
 */
export let isRelogin = {show: false};

//配置响应头
axios.defaults.headers['Content-Type'] = 'application/json;charset=utf-8'

//配置axios的基本信息
const service = axios.create({
    baseURL: '/dev-api',
    timeout: 10000,
})

// request拦截器
service.interceptors.request.use(
    config => {
        // 是否需要设置 token
        const isToken = (config.headers || {}).isToken === false
        // 是否需要防止数据重复提交
        const isRepeatSubmit = (config.headers || {}).repeatSubmit === false
        if (getToken() && !isToken) {
            config.headers['Authorization'] = 'Bearer ' + getToken() // 让每个请求携带自定义token 请根据实际情况自行修改
        }
        return config
    }, error => {
        console.log(error)
        Promise.reject(error)
    })

/**
 * 响应拦截器,一定要把结果给返回,无论中间做什么处理
 */
service.interceptors.response.use(res => {
    // 未设置状态码则默认成功状态
    const code = res.data.code || 200;
    // 获取错误信息
    const msg = errorCode[code] || res.data.msg || errorCode['default']
    // 二进制数据则直接返回
    if (res.request.responseType === 'blob' || res.request.responseType === 'arraybuffer') {
        return res.data
    }
    /**
     * 注意这里,前面的判断完成后,一定要把res的结果返回,否则拿不到数据
     */
    return res.data
}, err => {
    console.log("err=" + err)
})


export default service;

vue.config.js

module.exports = {
    devServer: {
        port: 91,
        proxy: {
            '/dev-api': {
                target: `http://localhost:8080`,
                changeOrigin: true,
                pathRewrite: {
                    ['^' + '/dev-api']: ''
                }
            }
        }
    }
}

前端已实现功能: 登录验证码获取,登录功能

methods: {
  /**
   * 获取验证码逻辑 后端接口 /captchaImage
   */
  getCode() {
    getCodeImg().then((res) => {
      this.captchaEnabled = res.captchaEnabled === undefined ? true : res.captchaEnabled
      if (this.captchaEnabled) {
        this.codeUrl = 'data:image/gif;base64,' + res.img
        this.loginForm.uuid = res.uuid
      }
    })
  },
  /**
   * 登录逻辑处理 后端接口 /login
   */
  handleLogin() {
    userLogin(this.loginForm).then((res) => {
      console.log(res)
      if (res.code === 500) {
        this.$message.error(res.msg)
      }
      if (res.code === 200) {
        this.$message.success('登录成功!')
        this.$router.push('/home')
      }
    })
  }
},
created() {
  this.getCode()
},

后端接口记录

登录接口 LoginController

获取个人信息 SysProfileController