GithubHelp home page GithubHelp logo

1024-lab / smart-admin Goto Github PK

View Code? Open in Web Editor NEW
2.2K 49.0 676.0 21.31 MB

SmartAdmin国内首个以「高质量代码」为核心,「简洁、高效、安全」快速开发平台;基于SpringBoot + Sa-Token + Mybatis-Plus 和 Vue3 + Vite5 + Ant Design Vue 4.x (同时支持JavaScript和TypeScript双版本);满足国家三级等保要求、支持登录限制、接口数据国产加解密、高防SQL注入等一系列安全体系。

Home Page: https://smartadmin.vip

License: MIT License

JavaScript 23.36% HTML 0.05% Vue 37.46% Java 36.33% Less 0.69% SCSS 1.15% CSS 0.58% TypeScript 0.38%
vue typescript vue3 springboot ant-design-vue composition-api element-plus java spring-boot codegenerator

smart-admin's Introduction

SmartAdmin

SmartAdmin河南·洛阳 1024创新实验室 坚持以 「高质量代码」为核心,「简洁、高效、安全」的中后台解决方案!

国内首个满足《网络安全》、《数据安全》、三级等保, 支持登录限制、支持接口国产加解密、支持数据加解密等一系列安全措施的开源项目。

我们开源一套漂亮的代码和一套整洁的代码规范,让大家在这浮躁的代码世界里感受到一股把代码写好的清流!同时又让开发者节省大量的时间,减少加班,快乐工作,保持谦逊,保持学习,热爱代码,更热爱生活

技术体系

理念与**

  • 我们分享的不是徒劳无功的各种功能,而是必须有的功能,如:网络安全、数据变动记录、系统说明文档、版本更新记录、意见反馈、日志、心跳、单号生成器等等。
  • 我们分享的还有经过上百家公司验证过的前端、后端、vue3等代码规范,好的规范能让我们敲下的每行代码更铿锵有力!
  • 我们推崇高质量的代码,身为开发,代码即利剑,键盘上一套行云流水,宛如侠客,事了拂衣去,深藏身与名。
  • 我们推崇团队的高度配合默契、互相帮助,从不加班,而不是一看到别人的代码就头皮发麻,留其 996.ICU 加班。

功能亮点图

功能亮点

  • 安全体系:满足国家三级等保要求,如密码加密、密码复杂度要求、登录错误次数锁定、登录超时退出等关键功能
  • 接口加解密:支持请求参数和返回内容进行加解密操作,支持国产加密算法和其他国外加密算法
  • 表格自定义列:支持用户自定义列,并能将用户自定义列持久化到数据库
  • 数据变更记录:支持基于git diff插件的数据变更记录,查看数据变化更直观方便
  • 在线文档:支持右侧帮助文档(类似阿里云控制台右侧帮助文档效果)、支持意见反馈、版本记录 等功能
  • OA办公:公司信息(发票、银行、员工等)、通知公告(阅读记录、次数等)
  • 日志、监控:服务器心跳日志、登录日志、操作日志(IP、浏览器、操作系统等设备信息)
  • 系统功能:员工、部门、角色、权限、菜单、水印、文件管理、系统参数、数据字典、单号生成 等
  • 代码生成: 基于每个表的配置、在线预览代码、下载 等
  • 以上只是一些举例,更多灿若繁星的惊喜和细节,等待着你的发现!SmartAdmin 业内独有功能亮点

代码亮点

  • 【前端-双版本】: 提供 js 和 ts 双版本,目录结构及其清晰
  • 【前端-常量维护】: vue-enum,拒绝出现魔法数字,常量枚举不可维护的现象
  • 【前端-命名】: 业内最好的api、常量等命名和写法
  • 【前端-多环境支持】: 独有的本地、开发、测试、预发布、生产 5个env环境配置文件
  • 【前端-layout代码】: 业内代码最清晰的layout布局写法,小白都能看懂
  • 【前端-main.js】: 业内可能只有我们把main.js中的router加载方式写对了
  • ----华丽前后端分割线----
  • 【后端-独有目录结构】: 业内独有的高质量的 Java代码分包结构,适合大、中、小型项目,结构非常清晰
  • 【后端-公共配置文件】: 业内独有的共用配置文件维护,简化共同配置
  • 【后端-返回码维护】: 业内独创的请求返回码维护,非常值得一看
  • 【后端-四层架构】: 四层架构(controller, service, manager, dao),为什么要有四层
  • 【后端-多环境】: maven多环境:开发、测试、预发布、生产 环境配置
  • 【后端-系统钩子】: smart-reload,为系统预留钩子,动态加载,在不重启程序前提下执行一些代码
  • 以上只是沧海一粟,更多的细节等待你的发现!去查看

联系我们

1024 创新实验室-主任:卓大,混迹于各个技术圈,研究过计算机,熟悉点 java,略懂点前端。
1024 创新实验室(河南·洛阳) 致力于成为中原领先、国内一流的技术团队,以技术创新为驱动,合作各类项目(软件外包、技术顾问、培训等等)。

加 主任 “卓大” 微信
拉你入群,一起学习
关注 “六边形工程师”
分享:赚钱、代码、生活
请 “1024创新实验室” 喝咖啡
支持我们的开源与分享

smart-admin's People

Contributors

1024-lab avatar nexusli0208 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

smart-admin's Issues

这里写的太啰嗦了

PrivilegeEmployeeService.updateCachePrivilege
不够优雅,改了一下

if (CollectionUtils.isNotEmpty(privilegeEntities)) {
//            List<List<String>> setList = privilegeEntities.stream()
//                    .filter(e -> e.getType().equals(PrivilegeTypeEnum.POINTS.getValue()))
//                    .map(PrivilegeEntity::getUrl).collect(Collectors.toList())
//                    .stream()
//                    .map(e -> SmartStringUtil.splitConvertToList(e, ","))
//                    .collect(Collectors.toList());
//
//            setList.forEach(privilegeList::addAll);
    privilegeList = privilegeEntities.stream()
            .filter(e -> e.getType().equals(PrivilegeTypeEnum.POINTS.getValue()))
            .flatMap(e -> SmartStringUtil.splitConvertToList(e.getUrl(), ",").stream())
            .collect(Collectors.toList());
}

关于目录结构

controller跟service为什么放一个目录,好奇怪,不应该是controller单独一个目录,然后service一个目录,dao作为一个目录,这样才是清晰的做法啊

idea 运行不起来

slow sql 349 millis. INSERT INTO t_reload_result ( tag,
identification,
args,
result ) VALUES ( ?,
?,
?,
? )["system_config","xxxx","234",true] (StatFilter.java:478)

sql导入的问题

sql导入时总是报长度问题,我的mysql版本是5.7.27 只有我一个人出现这个问题了嘛? 1071 - Specified key was too long; max key length is 767 bytes
image

提一下小建议

确实很规范,一直想找这样的项目。
但是有一点小瑕疵,提一下建议哈:
1.如果用习惯了restful,感觉还是restful风格接口可读性比较好。
2.controller service dao 感觉还是分开放比较清晰。
3.idea打开还有很多标黄的地方,比如说泛型,无效的判空等代码,感觉可以再优化一下。

smart-admin-service的pom里有些信息是否可以删掉

有些配置感觉冗余了,smart-admin-service/smart-admin-api里的pom也包含这部分。
而且smart-admin-service的pom里的这部分是不是根本没生效啊

<resources>
            <resource>
                <directory>src/main/java</directory>
                <includes>
                    <include>**/*.*</include>
                </includes>
            </resource>
            <resource>
                <filtering>false</filtering>
                <directory>src/main/resources</directory>
                <excludes>
                    <exclude>dev/*</exclude>
                    <exclude>sit/*</exclude>
                    <exclude>pre/*</exclude>
                    <exclude>prod/*</exclude>
                </excludes>
            </resource>
            <resource>
                <directory>src/main/resources/${profiles.active}</directory>
                <filtering>true</filtering>
                <includes>
                    <include>*.properties</include>
                </includes>
            </resource>
            <resource>
                <directory>src/main/resources/${profiles.active}</directory>
                <filtering>false</filtering>
                <includes>
                    <include>*.*</include>
                </includes>
            </resource>
        </resources>

代码生成命名问题

例:
当表名的结尾为t字母时(如t_exam_result)(下划线之前字母为t时没测试:t_tablet_names),生成为文件名和生成的代码中,通过表名进行命名的字符串,最后一个字母t都会消失。
image
image
image

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.