21K star!一款开源的后台管理系统


前言

大家好!我是智航云科技,今天为大家分享一个github上21K star的后台管理系统,实现所有基础功能,并提供代码生成功能,减少80%的开发,是接私活的利器。


一、项目介绍

ELADMIN 后台管理系统是一个基于 Spring Boot 2.6.4 、 Spring Boot Jpa、 JWT、Spring Security、Redis、Vue的前后端分离的后台管理系统。
主要特点如下:

  • 使用最新技术栈,社区资源丰富。
  • 高效率开发,代码生成器可一键生成前后端代码
  • 支持数据字典,可方便地对一些状态进行管理
  • 支持接口限流,避免恶意请求导致服务层压力过大
  • 支持接口级别的功能权限与数据权限,可自定义操作
  • 自定义权限注解与匿名接口注解,可快速对接口拦截与放行
  • 对一些常用地前端组件封装:表格数据请求、数据字典等
  • 前后端统一异常拦截处理,统一输出异常,避免繁琐的判断
  • 支持在线用户管理与服务器性能监控,支持限制单用户登录
  • 支持运维管理,可方便地对远程服务器的应用进行部署与管理

二、项目地址

gitHub:https://github.com/elunez/eladmin
码云:https://gitee.com/elunez/eladmin

三、功能介绍

  • 用户管理:提供用户的相关配置,新增用户后,默认密码为123456
  • 角色管理:对权限与菜单进行分配,可根据部门设置角色的数据权限
  • 菜单管理:已实现菜单动态路由,后端可配置化,支持多级菜单
  • 部门管理:可配置系统组织架构,树形表格展示
  • 岗位管理:配置各个部门的职位
  • 字典管理:可维护常用一些固定的数据,如:状态,性别等
  • 系统日志:记录用户操作日志与异常日志,方便开发人员定位排错
  • SQL监控:采用druid 监控数据库访问性能,默认用户名admin,密码123456
  • 定时任务:整合Quartz做定时任务,加入任务日志,任务运行情况一目了然
  • 代码生成:高灵活度生成前后端代码,减少大量重复的工作任务
  • 邮件工具:配合富文本,发送html格式的邮件
  • 七牛云存储:可同步七牛云存储的数据到系统,无需登录七牛云直接操作云数据
  • 支付宝支付:整合了支付宝支付并且提供了测试账号,可自行测试
  • 服务监控:监控服务器的负载情况
  • 运维管理:一键部署你的应用

详细功能请查看官方文档:https://eladmin.vip

四、项目结构

项目采用按功能分模块的开发方式,结构如下:

  • eladmin-common 为系统的公共模块,各种工具类,公共配置存在该模块

  • eladmin-system 为系统核心模块也是项目入口模块,也是最终需要打包部署的模块

  • eladmin-logging 为系统的日志模块,其他模块如果需要记录日志需要引入该模块

  • eladmin-tools 为第三方工具模块,包含:邮件、七牛云存储、本地存储、支付宝

  • eladmin-generator 为系统的代码生成模块,支持生成前后端CRUD代码

五、显示效果

首页

在这里插入图片描述

用户管理

在这里插入图片描述

菜单管理

在这里插入图片描述

定时任务

在这里插入图片描述

系统监控

在这里插入图片描述

运维工具

在这里插入图片描述

代码生成

在这里插入图片描述

前端组件管理

在这里插入图片描述


总结

以上就是今天的内容了,小伙伴们一起学起来!

  • 21
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,影视后台管理系统一般需要以下功能模块: 1. 用户管理模块:用于管理系统用户的登录、注册、权限分配等功能。 2. 影视资源管理模块:用于管理影视资源的增删改查等功能。 3. 视频播放模块:用于播放影视资源。 4. 数据统计模块:用于统计影视资源的观看量、下载量等数据。 5. 系统设置模块:用于配置系统参数、修改密码等功能。 以下是一个简单的影视后台管理系统的Python实现,使用了Flask作为Web框架和SQLite作为数据库: ```python from flask import Flask, render_template, request, redirect, url_for import sqlite3 app = Flask(__name__) # 数据库初始化,创建用户表和影视资源表 def init_db(): conn = sqlite3.connect('movie.db') c = conn.cursor() c.execute('CREATE TABLE IF NOT EXISTS users (id INTEGER PRIMARY KEY AUTOINCREMENT, username TEXT, password TEXT)') c.execute('CREATE TABLE IF NOT EXISTS movies (id INTEGER PRIMARY KEY AUTOINCREMENT, name TEXT, director TEXT, star TEXT, category TEXT, intro TEXT, img_url TEXT, video_url TEXT)') conn.commit() conn.close() # 用户登录 @app.route('/login', methods=['GET', 'POST']) def login(): if request.method == 'POST': username = request.form['username'] password = request.form['password'] conn = sqlite3.connect('movie.db') c = conn.cursor() c.execute('SELECT * FROM users WHERE username=? AND password=?', (username, password)) user = c.fetchone() if user: return redirect(url_for('index')) else: return render_template('login.html', error='用户名或密码错误') else: return render_template('login.html') # 用户注册 @app.route('/register', methods=['GET', 'POST']) def register(): if request.method == 'POST': username = request.form['username'] password = request.form['password'] conn = sqlite3.connect('movie.db') c = conn.cursor() c.execute('SELECT * FROM users WHERE username=?', (username,)) user = c.fetchone() if user: return render_template('register.html', error='用户名已存在') else: c.execute('INSERT INTO users (username, password) VALUES (?, ?)', (username, password)) conn.commit() conn.close() return redirect(url_for('login')) else: return render_template('register.html') # 影视资源列表 @app.route('/') def index(): conn = sqlite3.connect('movie.db') c = conn.cursor() c.execute('SELECT * FROM movies') movies = c.fetchall() conn.close() return render_template('index.html', movies=movies) # 影视资源详情 @app.route('/detail/<int:id>') def detail(id): conn = sqlite3.connect('movie.db') c = conn.cursor() c.execute('SELECT * FROM movies WHERE id=?', (id,)) movie = c.fetchone() conn.close() return render_template('detail.html', movie=movie) # 新增影视资源 @app.route('/add', methods=['GET', 'POST']) def add(): if request.method == 'POST': name = request.form['name'] director = request.form['director'] star = request.form['star'] category = request.form['category'] intro = request.form['intro'] img_url = request.form['img_url'] video_url = request.form['video_url'] conn = sqlite3.connect('movie.db') c = conn.cursor() c.execute('INSERT INTO movies (name, director, star, category, intro, img_url, video_url) VALUES (?, ?, ?, ?, ?, ?, ?)', (name, director, star, category, intro, img_url, video_url)) conn.commit() conn.close() return redirect(url_for('index')) else: return render_template('add.html') # 修改影视资源 @app.route('/edit/<int:id>', methods=['GET', 'POST']) def edit(id): if request.method == 'POST': name = request.form['name'] director = request.form['director'] star = request.form['star'] category = request.form['category'] intro = request.form['intro'] img_url = request.form['img_url'] video_url = request.form['video_url'] conn = sqlite3.connect('movie.db') c = conn.cursor() c.execute('UPDATE movies SET name=?, director=?, star=?, category=?, intro=?, img_url=?, video_url=? WHERE id=?', (name, director, star, category, intro, img_url, video_url, id)) conn.commit() conn.close() return redirect(url_for('index')) else: conn = sqlite3.connect('movie.db') c = conn.cursor() c.execute('SELECT * FROM movies WHERE id=?', (id,)) movie = c.fetchone() conn.close() return render_template('edit.html', movie=movie) # 删除影视资源 @app.route('/delete/<int:id>') def delete(id): conn = sqlite3.connect('movie.db') c = conn.cursor() c.execute('DELETE FROM movies WHERE id=?', (id,)) conn.commit() conn.close() return redirect(url_for('index')) if __name__ == '__main__': init_db() app.run(debug=True) ``` 以上代码实现了用户管理、影视资源管理、视频播放等功能模块。您可以根据自己的需求进行修改和扩展。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值