Convert Figma logo to code with AI

elunez logoeladmin

eladmin jpa 版本:项目基于 Spring Boot 2.6.4、 Jpa、 Spring Security、Redis、Vue的前后端分离的后台管理系统,项目采用分模块开发方式, 权限控制采用 RBAC,支持数据字典与数据权限管理,支持一键生成前后端代码,支持动态路由

21,181
7,337
21,181
24

Top Related Projects

:tada: A magical vue admin https://panjiachen.github.io/vue-element-admin

🎉 vue admin,vue3 admin,vue3.0 admin,vue后台管理,vue-admin,vue3.0-admin,admin,vue-admin,vue-element-admin,ant-design,vab admin pro,vab admin plus,vue admin plus,vue admin pro

A modern vue admin panel built with Vue3, Shadcn UI, Vite, TypeScript, and Monorepo. It's fast!

Vue3、Element Plus、typescript后台管理系统

Vue 2.0 admin management system template based on iView

mall-admin-web是一个电商后台管理系统的前端项目,基于Vue+Element实现。 主要包括商品管理、订单管理、会员管理、促销管理、运营管理、内容管理、统计报表、财务管理、权限管理、设置等功能。

Quick Overview

eladmin is a comprehensive backend management system based on Spring Boot 2.1 and Vue. It provides a robust set of features for rapid development of enterprise applications, including user management, role management, menu management, and various system monitoring tools.

Pros

  • Comprehensive set of features for enterprise application development
  • Built on modern technologies (Spring Boot 2.1 and Vue)
  • Includes detailed documentation and deployment guides
  • Active community and regular updates

Cons

  • Primarily documented in Chinese, which may be a barrier for non-Chinese speakers
  • Steep learning curve for developers new to Spring Boot or Vue
  • Some users report issues with complex deployments

Code Examples

// Example of using the @Query annotation for custom queries
@Query(value = "SELECT * FROM user WHERE email = ?1", nativeQuery = true)
User findByEmail(String email);
// Example of using the @Log annotation for logging
@Log("Delete user")
@DeleteMapping("/{id}")
@PreAuthorize("@el.check('user:del')")
public ResponseEntity<Object> delete(@PathVariable Long id) {
    userService.delete(id);
    return new ResponseEntity<>(HttpStatus.OK);
}
// Example of using the @DataPermission annotation for data access control
@DataPermission(fieldName = "dept_id")
public List<User> queryAll(UserQueryCriteria criteria, Pageable pageable) {
    return userRepository.findAll((root, criteriaQuery, criteriaBuilder) -> QueryHelp.getPredicate(root, criteria, criteriaBuilder), pageable).getContent();
}

Getting Started

  1. Clone the repository:

    git clone https://github.com/elunez/eladmin.git
    
  2. Configure the database in application.yml:

    spring:
      datasource:
        url: jdbc:mysql://localhost:3306/eladmin?serverTimezone=Asia/Shanghai&characterEncoding=utf8&useSSL=false
        username: root
        password: 123456
    
  3. Run the backend:

    cd eladmin-system
    mvn spring-boot:run
    
  4. Run the frontend:

    cd ../eladmin-web
    npm install
    npm run dev
    
  5. Access the application at http://localhost:8013

Competitor Comparisons

:tada: A magical vue admin https://panjiachen.github.io/vue-element-admin

Pros of vue-element-admin

  • More comprehensive and feature-rich, offering a wider range of pre-built components and layouts
  • Larger community and more frequent updates, resulting in better long-term support and maintenance
  • Extensive documentation and examples, making it easier for developers to get started and implement complex features

Cons of vue-element-admin

  • Steeper learning curve due to its complexity and extensive feature set
  • Potentially heavier and slower performance compared to eladmin's lightweight approach
  • May require more customization and code removal for simpler projects

Code Comparison

vue-element-admin (Vue.js):

import Vue from 'vue'
import Router from 'vue-router'
import Layout from '@/layout'

Vue.use(Router)

export const constantRoutes = [
  {
    path: '/login',
    component: () => import('@/views/login/index'),
    hidden: true
  }
]

eladmin (Java Spring Boot):

@RestController
@RequestMapping("/api/users")
@RequiredArgsConstructor
public class UserController {
    private final UserService userService;

    @GetMapping
    public ResponseEntity<Object> getUsers() {
        return new ResponseEntity<>(userService.queryAll(), HttpStatus.OK);
    }
}

This comparison highlights the different approaches and technologies used by these projects. vue-element-admin focuses on front-end development with Vue.js, while eladmin is a full-stack solution using Java Spring Boot for the backend and Vue.js for the frontend.

🎉 vue admin,vue3 admin,vue3.0 admin,vue后台管理,vue-admin,vue3.0-admin,admin,vue-admin,vue-element-admin,ant-design,vab admin pro,vab admin plus,vue admin plus,vue admin pro

Pros of vue-admin-better

  • More active development with frequent updates and contributions
  • Extensive documentation and examples for easier implementation
  • Larger community support and user base

Cons of vue-admin-better

  • Steeper learning curve due to more complex features
  • Potentially heavier resource usage for smaller projects
  • Less focus on backend integration compared to eladmin

Code Comparison

eladmin (Java):

@Data
@Entity
@Table(name="sys_user")
public class User implements Serializable {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Column(name = "user_id")
    private Long id;

vue-admin-better (JavaScript):

export default {
  name: 'User',
  data() {
    return {
      form: {
        username: '',
        password: '',
      },
    }
  },

The code snippets show different approaches to user management. eladmin uses Java with JPA annotations for database mapping, while vue-admin-better focuses on frontend Vue.js components for user interaction. This reflects the different emphases of the two projects, with eladmin providing a more comprehensive backend solution and vue-admin-better concentrating on the frontend user experience.

A modern vue admin panel built with Vue3, Shadcn UI, Vite, TypeScript, and Monorepo. It's fast!

Pros of vue-vben-admin

  • More comprehensive and feature-rich admin template
  • Better TypeScript support and integration
  • More active development and frequent updates

Cons of vue-vben-admin

  • Steeper learning curve due to its complexity
  • Potentially overkill for smaller projects
  • Larger bundle size and potentially slower initial load times

Code Comparison

eladmin (Java):

@Data
@Entity
@Table(name="sys_user")
public class User implements Serializable {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Column(name = "user_id")
    private Long id;
    
    private String username;
}

vue-vben-admin (TypeScript):

export interface UserInfo {
  userId: string | number;
  username: string;
  realName: string;
  avatar: string;
  desc?: string;
  homePath?: string;
  roles: RoleInfo[];
}

The code snippets show different approaches to defining user entities. eladmin uses Java with JPA annotations for database mapping, while vue-vben-admin uses TypeScript interfaces for type definitions. This reflects the different tech stacks and focuses of the two projects.

Vue3、Element Plus、typescript后台管理系统

Pros of vue-manage-system

  • Simpler and more lightweight, making it easier to learn and implement
  • Focuses solely on the frontend, allowing for more flexibility in backend choices
  • Provides a clean and modern UI design out of the box

Cons of vue-manage-system

  • Less comprehensive than eladmin, which offers both frontend and backend solutions
  • Fewer built-in features and integrations compared to eladmin
  • May require more custom development for complex enterprise applications

Code Comparison

vue-manage-system (Vue.js component):

<template>
    <div class="sidebar">
        <el-menu class="sidebar-el-menu" :default-active="onRoutes" :collapse="collapse" background-color="#324157"
            text-color="#bfcbd9" active-text-color="#20a0ff" unique-opened router>
            <template v-for="item in items">
                <template v-if="item.subs">
                    <el-submenu :index="item.index" :key="item.index">
                        <template #title>
                            <i :class="item.icon"></i><span>{{ item.title }}</span>
                        </template>
                        <template v-for="subItem in item.subs">
                            <el-submenu v-if="subItem.subs" :index="subItem.index" :key="subItem.index">
                                <template #title>{{ subItem.title }}</template>
                                <el-menu-item v-for="(threeItem, i) in subItem.subs" :key="i" :index="threeItem.index">
                                    {{ threeItem.title }}
                                </el-menu-item>
                            </el-submenu>
                            <el-menu-item v-else :index="subItem.index" :key="subItem.index">
                                {{ subItem.title }}
                            </el-menu-item>
                        </template>
                    </el-submenu>
                </template>
                <template v-else>
                    <el-menu-item :index="item.index" :key="item.index">
                        <i :class="item.icon"></i><span>{{ item.title }}</span>
                    </el-menu-item>
                </template>
            </template>
        </el-menu>
    </div>
</template>

eladmin (Java backend code):

@Log
@RestController
@RequestMapping("/api/users")
@RequiredArgsConstructor
public class UserController {

    private final UserService userService;
    private final DataScope dataScope;
    private final DeptService deptService;
    private final RoleService roleService;
    private final VerificationCodeService verificationCodeService;

    @ApiOperation("Query user")
    @GetMapping
    @PreAuthorize("@el.check('user:list')")
    public ResponseEntity<Object> query(UserQueryCriteria criteria, Pageable pageable){
        if (!ObjectUtils.isEmpty(criteria.getDeptId())) {
            criteria.getDeptIds().add(criteria.getDeptId());
            criteria.getDeptIds().addAll(deptService.getDeptChildren(criteria.getDeptId(),
                    criteria.getDeptIds()));
        }
        // Data permission
        List<Long> dataScopes = dataScope.getDeptIds(userService.findByName(SecurityUtils.getCurrentUsername()));
        // Criteria add data permissions
        if (!CollectionUtils.isEmpty(criteria.getDeptIds()) && !CollectionUtils.isEmpty(dataScopes)){
            // Take the intersection
            criteria.getDeptIds().retainAll(dataScopes);
            if(!CollectionUtil.isEmpty(criteria.getDeptIds())){
                return new ResponseEntity<>(userService.queryAll(criteria,pageable),HttpStatus.OK);
            }
        } else {
            // If the user's data permissions are empty, return an empty list
            if (CollectionUtils.isEmpty(dataScopes)) {
                return new ResponseEntity<>(PageUtil.toPage(null,0),HttpStatus.OK

Vue 2.0 admin management system template based on iView

Pros of iview-admin

  • Built on Vue.js and iView UI components, offering a modern and responsive interface
  • Extensive documentation and examples, making it easier for developers to get started
  • Includes a variety of pre-built components and layouts for rapid development

Cons of iview-admin

  • Less focus on backend integration compared to eladmin
  • May require more customization for specific business requirements
  • Limited built-in security features compared to eladmin's Spring Security integration

Code Comparison

iview-admin (Vue.js):

<template>
  <div>
    <Table :columns="columns" :data="data"></Table>
  </div>
</template>

<script>
export default {
  // Component logic
}
</script>

eladmin (Java):

@RestController
@RequestMapping("/api/users")
public class UserController {
    @GetMapping
    public ResponseEntity<List<User>> getUsers() {
        // Controller logic
    }
}

The code snippets highlight the different approaches: iview-admin focuses on frontend components, while eladmin emphasizes backend API development.

mall-admin-web是一个电商后台管理系统的前端项目,基于Vue+Element实现。 主要包括商品管理、订单管理、会员管理、促销管理、运营管理、内容管理、统计报表、财务管理、权限管理、设置等功能。

Pros of mall-admin-web

  • More comprehensive e-commerce functionality, including order management and product catalog
  • Larger community and more frequent updates
  • Detailed documentation and deployment guides

Cons of mall-admin-web

  • Steeper learning curve due to its complexity
  • Potentially overkill for smaller projects or simpler admin needs
  • Less flexible for non-e-commerce applications

Code Comparison

mall-admin-web (Vue.js component):

<template>
  <div class="app-container">
    <el-card class="filter-container" shadow="never">
      <div>
        <i class="el-icon-search"></i>
        <span>Filter Search</span>
        <el-button style="float: right" type="primary" @click="handleSearchList()">
          Search
        </el-button>
      </div>
      <!-- ... more filter options ... -->
    </el-card>
  </div>
</template>

eladmin (Vue.js component):

<template>
  <div class="app-container">
    <eForm ref="form" :is-add="isAdd" @close="close" @success="getList" />
    <crud
      ref="crud"
      :permission="permission"
      :table="table"
      :crud-method="crudMethod"
      @toQuery="toQuery"
    />
  </div>
</template>

Both projects use Vue.js for the frontend, but mall-admin-web appears to use more native Element UI components, while eladmin utilizes custom CRUD components for a more abstracted approach to data management.

Convert Figma logo designs to code with AI

Visual Copilot

Introducing Visual Copilot: A new AI model to turn Figma designs to high quality code using your components.

Try Visual Copilot

README

ELADMIN 后台管理系统

AUR star GitHub stars GitHub forks

项目简介

一个基于 Spring Boot 2.6.4 、 Spring Boot Jpa、 JWT、Spring Security、Redis、Vue的前后端分离的后台管理系统

现已发布基于 mybatis-plus 版本,项目地址:https://github.com/elunez/eladmin-mp、https://gitee.com/elunez/eladmin-mp。

开发文档: https://eladmin.vip

体验地址: https://eladmin.vip/demo

账号密码: admin / 123456

项目源码

后端源码前端源码
githubhttps://github.com/elunez/eladminhttps://github.com/elunez/eladmin-web
码云https://gitee.com/elunez/eladminhttps://gitee.com/elunez/eladmin-web

赞助商 | Sponsor

明道云零代码构建平台

主要特性

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

系统功能

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

项目结构

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

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

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

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

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

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

详细结构

- eladmin-common 公共模块
    - annotation 为系统自定义注解
    - aspect 自定义注解的切面
    - base 提供了Entity、DTO基类和mapstruct的通用mapper
    - config 自定义权限实现、redis配置、swagger配置、Rsa配置等
    - exception 项目统一异常的处理
    - utils 系统通用工具类
- eladmin-system 系统核心模块(系统启动入口)
	- config 配置跨域与静态资源,与数据权限
	    - thread 线程池相关
	- modules 系统相关模块(登录授权、系统监控、定时任务、运维管理等)
- eladmin-logging 系统日志模块
- eladmin-tools 系统第三方工具模块
- eladmin-generator 系统代码生成模块

特别鸣谢

  • 感谢 PanJiaChen 大佬提供的前端模板

  • 感谢 Moxun 大佬提供的前端 Curd 通用组件

  • 感谢 zhy6599 大佬提供的后端运维管理相关功能

  • 感谢 j.yao.SUSE 大佬提供的匿名接口与Redis限流等功能

  • 感谢 d15801543974 大佬提供的基于注解的通用查询方式

项目捐赠

项目的发展离不开你的支持,请作者喝杯咖啡吧☕ Donate

反馈交流

  • QQ交流群:891137268 、947578238、659622532