diff --git a/README.md b/README.md
index 1e24dc6d81caf646ac94d4bf5ef0946d048af08d..a1d408033f4e0e643e0ee5a50afe9e107d86e302 100644
--- a/README.md
+++ b/README.md
@@ -1,134 +1,118 @@
-
+
SimpleAdmin
-
🐔没有花里胡哨,只有简单、稳定、灵活、高效🐔
+
🐔简单之名,非凡之质——稳定、灵活、高效,实力不需夸耀。🐔
-[](https://gitee.com/zxzyjs/SimpleAdmin/blob/master/LICENSE) [](https://gitee.com/huguodong520) [](https://gitee.com/huguodong520) [](https://www.cnblogs.com/huguodong/) [](https://gitee.com/zxzyjs/SimpleAdmin/stargazers) [](https://gitee.com/zxzyjs/SimpleAdmin/members)
+[](https://gitee.com/dotnetmoyu/SimpleAdmin/blob/master/LICENSE) [](https://gitee.com/huguodong520) [](https://gitee.com/huguodong520) [](https://www.cnblogs.com/huguodong/) [](https://gitee.com/dotnetmoyu/SimpleAdmin/stargazers) [](https://gitee.com/dotnetmoyu/SimpleAdmin/members)
+
### 如果您觉得有帮助,请点右上角 "Star" 支持一下谢谢
-## 🎨框架介绍🎨
-🪶SimpleAdmin是一个小而美的通用业务型后台管理系统,专为解决开发过程中的痛点难点而生。Vue3+Vite+Vuex+JS,并在此基础上增加更人性化功能,后端基于.NET6/7+Furion,ORM采用Sqlsugar+单例模式,插件式开发。采用RBAC+多机构的权限管理模式,实现全网最灵活的接口级别数据权限控制,集成国密加解密,导入导出、导入导出、批量修改等常用插件。后端代码注释覆盖率>90%,并配备超牛皮的代码生成器和超详细的手摸手教学文档,非常适合二次开发。将日常开发中的业务场景和框架紧密结合,并坚持以人为本,以业务为中心,做到开箱即用,代码简洁、易扩展,注释详细,文档齐全,让你的开发少走弯路。
-
-## 🐥选择SimpleAdmin的N个理由🐥
-
-#### 📕前端采用Vue3+JavaScript
-本系统是基于前端Vue3+Vite+Vuex+JS,。市面上主流的Vue3框架大部分都是采用`TypeScript`开发,虽然是官方推荐,但是也增加了一些学习成本,如果您之前使用的事vue2+js的开发方式,那么再使用本系统就非常的好上手,也不用担心vue2打包之后第一次加载巨慢的问题。
-
-
-#### 📗后台基于Furion脚手架
-后端基于Furion脚手架搭建。Furion是目前.NET最好用的后端框架之一,有着全网最详细的使用文档和说明,作为新手或二次开发也能很快的上手,你想要的功能基本都能在Furion中找到。而且只要提issues作者基本上都能快速解答,没有后顾之忧。
-##### 🍎 Furion框架特点
-- 全新面貌:基于 `.NET5/6/7+` 平台,没有历史包袱
-- 极少依赖:框架只依赖两个第三方包
-- 极易入门:只需要一个 `Inject()` 即可完成配置
-- 极速开发:内置丰富的企业应用开发功能
-- 极其灵活:轻松面对多变复杂的需求
-- 极易维护:采用独特的架构思想,只为长久维护设计
-- 完整文档:提供完善的开发文档
-- **跨全平台:支持所有主流操作系统及 .NET 全部项目类型**
+## 🎨 框架介绍
-文档地址:[https://dotnetchina.gitee.io/furion](https://dotnetchina.gitee.io/furion)
+🪶SimpleAdmin 是一个小而美的通用业务型后台管理系统,专为解决开发过程中的痛点难点而生。前端基于 ElementUI+Vue3+TypeScript,后端基于.NET6/7/8+SqlSugar 单例模式。采用 RBAC+多机构的权限管理模式,实现全网最灵活的接口级别数据权限控制。代码注释覆盖率大于`90%`,非常适合二次开发。将日常开发中的业务场景和框架紧密结合,并坚持以人为本,以业务为中心,做到开箱即用,代码简洁、易扩展,注释详细,文档齐全,让你的开发少走弯路。
-源码地址:[https://gitee.com/dotnetchina/Furion](https://gitee.com/dotnetchina/Furion)
+## 🎓 设计初衷和理念
-#### 🍭ORM基于Sqlsugar
-SqlSugar是一款老牌.NET开源ORM框架,由果糖大数据科技团队维护和更新 ,开箱即用
-最易上手的ORM框架,本系统也是基于Sqlsugar单例模式+CodeFirst+仓储的结构,无需担心作用域问题,直接爽撸!
+一个卓越的后台管理框架是开发者提升效率、降本增质的关键工具。我曾经尝试在 Git 上搜索开源的后台管理系统,希望能用它们作为公司项目的起点。可惜的是,我发现很多开源系统难以满足我的期待:要么缺失清晰的文档指导,要么代码质量让人担忧,要么系统的扩展性极为有限,要么系统功能过于庞大而失去焦点,积重难返。
+正因为这样的挑战,我下定决心,要从无到有打造一个全新的后台管理框架,这就是`SimpleAdmin`的诞生背景。SimpleAdmin 是一个聚焦业务需求的管理系统,它的核心理念是`精简至上`。我们深知,在功能和实用性之间找到完美的平衡点至关重要,因此在 SimpleAdmin 中,我们只保留了那些最关键的、行之有效的功能,并且全力以赴将它们做得更完美。
+SimpleAdmin 不只是工具,它更是一种承诺:确保每位开发者都能毫无障碍地掌握、进而深入定制,从而使得框架适应项目,而非让项目被迫适应框架。一个优秀的框架,应该是那样自解释的优雅,同时又能轻松应对二次开发的需求。
+SimpleAdmin 更像是一种信念,它以代码的形式表达了我们对简约而不简单的追求。唯有包含这种哲学的框架,才算得上是有灵魂,有价值的。它不只是一个平台或者框架,而是一个为业务精准打造的解决方案,一个始终在为你省时、省心和省力的可靠盟友。
-文档地址:[https://www.donet5.com/Home/Doc](https://www.donet5.com/Home/Doc)
+## ✨ 系统特色
-源码地址:[https://gitee.com/dotnetchina/SqlSugar](https://gitee.com/dotnetchina/SqlSugar)
+### ⛏️ 对于后端
-#### 🎮真·插件式开发,代码更灵活,架构更清晰
-引入插件式开发的概念,除项目主体外,每个业务层都可以是独立的,一些拓展性功能采用插件的方式创建在独立的类库中,每一层都可以单独设置初始化表数据结构和种子数据,这样的话我们想要用哪个功能就引用该功能的项目,如果功能有问题我们也能快速定位到代码的位置,非常方便,也使得项目架构变得非常清晰,代码更灵活了,避免后期功能越来越多导致项目成为屎山。
+- 启动及运行,不会出现拉下来代码跑不起来的情况,自动生成数据库表和种子文件。
+- 基于 SqlSugar 单例模式+CodeFirst+仓储的结构,无需担心作用域问题,直接爽撸。
+- 集成国密加密,是国`首个`.NET 内置国密算法且前后端分离快速开发平台。其他说首个的都是吹牛皮的!
+- 插件式开发,代码更灵活,架构更清晰,每个业务层都可以是独立的,避免后期功能越来越多导致项目成为屎山。
+- 极致缓存,系统快人一步,一些基础配置和用户权限信息都放在了缓存中,用户首次登录后,下次再登录接口耗时实测`10-30ms`。
+- RBAC+多机构的权限+动态刷新,修改用户权限后无需重新登录即可刷新用户权限。
+- 全网最灵活的接口级别数据范围权限控制,可以指定某个角色/人员的某个接口的数据权限范围。
+- 后端源码注释覆盖率超过90% ,每一个方法,每一步都有详细的解释和说明,根据注释和文档也能轻易看懂和二次开发,不用每天在群里问一些非常基础的问题,节约了大量的开发时间。
-
+### 📱 对于前端
-#### 📘极致缓存,系统快人一步
-本系统使用了大量的缓存操作,一些基础配置和用户权限信息都放在了缓存中,用户首次登录后,下次再登录接口耗时实测`10-30ms`。
-
-
+- 基于 Vue3.3、Vite4、TS、Pinia、Element-Plus 等最新技术栈开发
+- 基于[GeeKer Admin](https://docs.spicyboy.cn/),界面比同类型 UI 更清爽又美观。
+- 配置 Eslint、Prettier、Husky、Commitlint、Lint-staged 规范前端工程代码规范
+- 提供丰富的组件、常用 Hooks 封装,在一定程度上节省你造轮子的时间。
+- 提供多种布局方式切换,主题颜色配置,暗黑、灰色、色弱等模式。
+- 丰富的代码注释,每一个页面都有解释说明,新手也能快速上手。
-系统同时支持MemeryCache和Redis分布式缓存,Redis客户端使用的是我基于[NewLife.Redis](https://github.com/NewLifeX/NewLife.Redis)二次封装的[SimpleRedis](https://gitee.com/zxzyjs/SimpleRedis.git)。简化了注入操作,更方便使用。
+## 💵 适用场景
-##### 🍎NewLife.Redis特性
-* 在ZTO大数据实时计算广泛应用,200多个Redis实例稳定工作一年多,每天处理近1亿包裹数据,日均调用量80亿次
-* 低延迟,Get/Set操作平均耗时200~600us(含往返网络通信)
-* 大吞吐,自带连接池,最大支持1000并发
-* 高性能,支持二进制序列化
+- 搭建企业内部后台管理框架
+- 接外包项目/私活
+- 个人学习.Net 搭建 Web 框架
+- 搭建商用项目
-#### 👮RBAC+多机构的权限管理模式+权限及时刷新
-作为一个后台管理系统 ,一个权限管理框架 ,权限设计作为一个管理系统的灵魂,是一个系统好不好用的关键。本系统是采用RBAC+多机构的权限管理模式,一个机构下有多个角色,每个角色有不同的菜单和权限,可以将不同角色分配给不同的用户,这样每个用户都会拥有他所属角色的权限。当然,一个用户也可以拥有多个角色的权限,除此之外还支持给用户单独授权,让用户脱离所有角色之外,实现灵活再灵活的权限控制。并且当角色或用户的权限被修改之后,后端会立即刷新,前端只需刷新页面就能更新被重新赋予的权限,无需重新登录。
+## 👨 适用人群
+- 对系统 UI 美观有要求
+- 对学习新技术有兴趣,愿意接受新的技术
+- .NET 新手,想找一个框架学习,增加知识
+- 对技术有要求,喜欢高质量代码
+- 想要花更多时间陪陪家人,出去走走
+- 不想在各种低级 bug 上浪费时间
-#### 🧱接口级别的数据范围权限
-目前在我接触的大部分管理系统中,数据权限这块都不太尽如人意,要么只有接口权限没有数据权限,要么有数据权限但是用起来不是特别顺手而且还有BUG,针对以上痛点和难点结合业务场景,本系统实现全网最灵活的接口级别数据范围权限控制,可以指定某个角色的某个接口的数据权限范围,非常的灵活。
-
-
-在系统中,获取数据权限非常简单,只需一个方法搞定。
-```cs
-//获取数据范围
-var dataScope = await _sysUserService.GetLoginUserApiDataScope();
-```
-#### 📈启动及运行
-您是否有过在使用其他框架时,光是从`启动`到`运行`都会遇到各种奇奇怪怪的问题?并且使用过程中也是各种奇奇怪怪的bug,发到群里也没人解决,非常影响开发效率。本系统做到了`启动即运行`,就算是小白只要照着文档操作,也能非常容易的上手项目。就目前使用的反馈来看,业务占据大多数,系统问题只占很少的一部分,如果您在使用过程中遇到问题,或者发现bug,可以直接发issues描述您的问题,只要是系统bug第一时间修复。或者您对当前系统有什么建议或意见,也欢迎您提出,只要是符合大部分业务场景的都会考虑支持。我们也有和谐内部的qq/微信交流群,没有像其他系统qq群一样每天都是一堆启动报错问题,页面错误问题,有的只是系统功能的讨论和优化方案。
-
-#### 🍢支持多种主键类型
-系统默认采用`long`类型的`雪花ID`作为系统主键,但是在交流过程中发现,部分小伙伴使用`string`类型或者`guid`作为系统主键,还有的是部分老系统用的是string类型,但是simpleadmin确是`long`类型,所以根据这个业务场景,本框架也支持`String`类型的系统主键,只需要拉取对应的`stringid`分支即可,完全不需要另外去修改代码,并且也能和master分支进行最新的同步。
+## 🍔 分支说明
-#### 📞支持Mqtt/Signalr的即时通讯
-作为前后端分离项目,前后端交互是一个非常重要的功能。目前主流框架都是通过Socket实现,本系统自然也是实现了基于Signalr 的前后端交互,并在此基础上实现了基于MQTT 的前后端交互功能,MQTT相比socket业务场景更多更灵活,在物联网方向有着非常多的应用。.NET应用在工业物联网方向也是有很多的岗位,学习MQTT还是非常有必要的。
+- master
+ 正式稳定版本,具体版本升级内容看更新标签
-MQTT客户端使用的是我基于[NewLife.MQTT](https://github.com/NewLifeX/NewLife.MQTT)二次封装的[SimpleMQTT](https://gitee.com/zxzyjs/SimpleMQTT.git)。采用单例模式,可以动态的添加和删除mqtt客户端,非常好用。
+- dev
+ 开发的分支(代码可能随时会推,不保证运行和使用)
-文档地址:[https://www.cnblogs.com/huguodong/p/16991947.html](https://www.cnblogs.com/huguodong/p/16991947.html)
+- js
+ js 版本的分支,适配于 js 版本前端的代码
-#### 🔧代码生成器
-大部分项目里,其实有很多代码是重复的,几乎每个模块都有 CRUD 增删改查的功能,而这些功能的实现代码往往是大同小异的。如果这些功能都要自己去手写,非常无聊枯燥,浪费时间且效率很低,还可能会写错。代码生成功能通过选择数据库表,完成单表的增删改查管理功能,还支持树形结构的表的生成可以生成包括前端、后端、和SQL语句,支持预览的同时还支持ZIP压缩包和直接生成到项目两种模式,解放你的双手,大大减少了重复代码的编写,无需复制提升开发效率。
+## 🚩 效果展示
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-#### 🎺常用功能组件化
-在系统一些常用的功能直接封装成vue组件,如批量导入,批量导出,批量删除,批量编辑等,只需按照规范传入相应参数就可以很好的实现功能,减少了很多不必要的前端代码。最典型的就是批量导入组件,只需传入api接口,通过后端接口自动生成表头,并实现字段级别的错误信息提示和预览,大数据支持分段导入,非常好用。
+## 🎈 相关连接
+预览地址: [点击查看](http://153.101.199.83:12802)
-#### 📖最详细的注释和手摸手教学文档,开发效率直线提升
-作为一个开源项目,如何让使用者看懂代码是非常重要的,很多作者会忽视这一点,导致我们阅读其代码的时候很难理解其为什么要这么写,如果没有详细的文档,想要二次开发需要花精力去研究源码。而本系统完全不用担心这个问题,后端源码注释覆盖率超过90% ,每一个方法,每一步都有详细的解释和说明,并且推出了手摸手教学文档(博客园),目的就是让使用者能够轻易上手,就算不是自己的代码,根据注释和文档也能轻易看懂和二次开发,不用每天在群里问一些非常基础的问题,节约了大量的开发时间。
-
+更新日志:[点击查看](https://gitee.com/dotnetmoyu/SimpleAdmin/commits/master)
+文档地址(旧):[https://www.cnblogs.com/huguodong/p/17021233.html](https://www.cnblogs.com/huguodong/p/17021233.html)
+文档地址(新):[http://118.190.201.181/](http://118.190.201.181/)
-## 分支说明
+## 🔖 友情链接
-- master
-正式稳定版本,具体版本升级内容看更新标签
+- 👉 Geeker Admin:[https://docs.spicyboy.cn/](https://docs.spicyboy.cn/)
+- 👉 MoYu:[https://gitee.com/dotnetmoyu/MoYu](https://gitee.com/dotnetmoyu/MoYu)
+- 👉 SqlSugar:[https://www.donet5.com/Doc/1/1180](https://www.donet5.com/Doc/1/1180)
+- 👉 NewLife:[https://www.newlifex.com/](https://www.newlifex.com/)
+- 👉 IdGenerator:[https://github.com/yitter/idgenerator](https://github.com/yitter/idgenerator)
+- 👉 Masuit.Tools:[https://gitee.com/masuit/Masuit.Tools](https://gitee.com/masuit/Masuit.Tools)
+- 👉 Emqx:[https://www.emqx.com/zh](https://www.emqx.com/zh)
+- 👉 MagicodesIE: [https://github.com/dotnetcore/Magicodes.IE](https://github.com/dotnetcore/Magicodes.IE)
-- dev
-开发的分支(代码可能随时会推,不保证运行和使用)
-
-- stringid
-字符串类型主键分支,系统主键用string类型的使用此分支
-
-## 🎈相关连接🎈
-
-更新日志:[点击查看](https://gitee.com/zxzyjs/SimpleAdmin/commits/master)
-
-文档地址:[https://www.cnblogs.com/huguodong/p/17021233.html](https://www.cnblogs.com/huguodong/p/17021233.html)
-
-常见问题合集:[https://www.cnblogs.com/huguodong/p/17021241.html](https://www.cnblogs.com/huguodong/p/17021241.html)
-
-## 🔖友情链接🔖
-- 👉 Furion:[https://dotnetchina.gitee.io/furion](https://dotnetchina.gitee.io/furion)
-- 👉 SqlSugar:[https://www.donet5.com/Doc/1/1180](https://www.donet5.com/Doc/1/1180)
-- 👉 NewLife:[https://www.newlifex.com/](https://www.newlifex.com/)
-- 👉 IdGenerator:[https://github.com/yitter/idgenerator](https://github.com/yitter/idgenerator)
-- 👉 Masuit.Tools:[https://gitee.com/masuit/Masuit.Tools](https://gitee.com/masuit/Masuit.Tools)
-- 👉 Emqx:[https://www.emqx.com/zh](https://www.emqx.com/zh)
-- 👉 MagicodesIE: [https://github.com/dotnetcore/Magicodes.IE](https://github.com/dotnetcore/Magicodes.IE)
-
-## 👏鸣谢👏
+## 👏 鸣谢 👏
- 感谢 JetBrains 提供的免费开源 License:
@@ -136,15 +120,19 @@ MQTT客户端使用的是我基于[NewLife.MQTT](https://github.com/NewLifeX/New
-## 🤌赞助🤌
+## 🤌 赞助
+
```
-如果对您有帮助,请点击右上角⭐Star关注或扫码捐赠,感谢支持开源!
+如果对您有帮助,请点击右上角⭐Star关注或扫码捐赠,感谢支持开源!捐赠金额≥99元即可加入内部交流群一起讨论学习,捐赠之后加q531035580即可。
```
-
-## 💾版权声明💾
+
+
+## 💾 版权声明 💾
-- 后端源码完全免费开源商用。
-- 前端源码因版权问题不能开源,后续准备替换掉之后再开源。
-- 不能以任何形式用于非法为目的的行为。
+- 请不要删除和修改根目录下的 LICENSE 文件。
+- 请不要删除和修改 SimpleAdmin 源码头部的版权声明。
+- 分发源码时候,请注明软件出处。
+- 基于本软件的作品,只能使用 SimpleAdmin 作为后台服务,除外情况不可商用且不允许二次分发或开源。
+- 请不得将本软件应用于危害国家安全、荣誉和利益的行为,不能以任何形式用于非法为目的的行为。
- 任何基于本软件而产生的一切法律纠纷和责任,均于作者无关。
diff --git a/api/.config/dotnet-tools.json b/api/.config/dotnet-tools.json
new file mode 100644
index 0000000000000000000000000000000000000000..29ba7ff81ff7418ec520f53481a48ed8a7bcccb2
--- /dev/null
+++ b/api/.config/dotnet-tools.json
@@ -0,0 +1,12 @@
+{
+ "version": 1,
+ "isRoot": true,
+ "tools": {
+ "husky": {
+ "version": "0.6.1",
+ "commands": [
+ "husky"
+ ]
+ }
+ }
+}
\ No newline at end of file
diff --git a/api/.gitignore b/api/.gitignore
new file mode 100644
index 0000000000000000000000000000000000000000..6804c872717a0dd42a385e04b7c2f34d32e4c962
--- /dev/null
+++ b/api/.gitignore
@@ -0,0 +1,365 @@
+## Ignore Visual Studio temporary files, build results, and
+## files generated by popular Visual Studio add-ons.
+##
+## Get latest from https://github.com/github/gitignore/blob/master/VisualStudio.gitignore
+
+# User-specific files
+*.rsuser
+*.suo
+*.user
+*.userosscache
+*.sln.docstates
+
+# User-specific files (MonoDevelop/Xamarin Studio)
+*.userprefs
+
+# Mono auto generated files
+mono_crash.*
+
+# Build results
+[Dd]ebug/
+[Dd]ebugPublic/
+[Rr]elease/
+[Rr]eleases/
+x64/
+x86/
+[Ww][Ii][Nn]32/
+[Aa][Rr][Mm]/
+[Aa][Rr][Mm]64/
+bld/
+[Bb]in/
+[Oo]bj/
+[Ll]og/
+[Ll]ogs/
+
+# Visual Studio 2015/2017 cache/options directory
+.vs/
+# Uncomment if you have tasks that create the project's static files in wwwroot
+#wwwroot/
+#idea
+.idea/
+# Visual Studio 2017 auto generated files
+Generated\ Files/
+
+# MSTest test Results
+[Tt]est[Rr]esult*/
+[Bb]uild[Ll]og.*
+
+# NUnit
+*.VisualState.xml
+TestResult.xml
+nunit-*.xml
+
+# Build Results of an ATL Project
+[Dd]ebugPS/
+[Rr]eleasePS/
+dlldata.c
+
+# Benchmark Results
+BenchmarkDotNet.Artifacts/
+
+# .NET Core
+project.lock.json
+project.fragment.lock.json
+artifacts/
+
+# ASP.NET Scaffolding
+ScaffoldingReadMe.txt
+
+# StyleCop
+StyleCopReport.xml
+
+# Files built by Visual Studio
+*_i.c
+*_p.c
+*_h.h
+*.ilk
+*.meta
+*.obj
+*.iobj
+*.pch
+*.pdb
+*.ipdb
+*.pgc
+*.pgd
+*.rsp
+*.sbr
+*.tlb
+*.tli
+*.tlh
+*.tmp
+*.tmp_proj
+*_wpftmp.csproj
+*.log
+*.vspscc
+*.vssscc
+.builds
+*.pidb
+*.svclog
+*.scc
+
+# Chutzpah Test files
+_Chutzpah*
+
+# Visual C++ cache files
+ipch/
+*.aps
+*.ncb
+*.opendb
+*.opensdf
+*.sdf
+*.cachefile
+*.VC.db
+*.VC.VC.opendb
+
+# Visual Studio profiler
+*.psess
+*.vsp
+*.vspx
+*.sap
+
+# Visual Studio Trace Files
+*.e2e
+
+# TFS 2012 Local Workspace
+$tf/
+
+# Guidance Automation Toolkit
+*.gpState
+
+# ReSharper is a .NET coding add-in
+_ReSharper*/
+*.[Rr]e[Ss]harper
+*.DotSettings.user
+
+# TeamCity is a build add-in
+_TeamCity*
+
+# DotCover is a Code Coverage Tool
+*.dotCover
+
+# AxoCover is a Code Coverage Tool
+.axoCover/*
+!.axoCover/settings.json
+
+# Coverlet is a free, cross platform Code Coverage Tool
+coverage*.json
+coverage*.xml
+coverage*.info
+
+# Visual Studio code coverage results
+*.coverage
+*.coveragexml
+
+# NCrunch
+_NCrunch_*
+.*crunch*.local.xml
+nCrunchTemp_*
+
+# MightyMoose
+*.mm.*
+AutoTest.Net/
+
+# Web workbench (sass)
+.sass-cache/
+
+# Installshield output folder
+[Ee]xpress/
+
+# DocProject is a documentation generator add-in
+DocProject/buildhelp/
+DocProject/Help/*.HxT
+DocProject/Help/*.HxC
+DocProject/Help/*.hhc
+DocProject/Help/*.hhk
+DocProject/Help/*.hhp
+DocProject/Help/Html2
+DocProject/Help/html
+
+# Click-Once directory
+publish/
+
+# Publish Web Output
+*.[Pp]ublish.xml
+*.azurePubxml
+# Note: Comment the next line if you want to checkin your web deploy settings,
+# but database connection strings (with potential passwords) will be unencrypted
+*.pubxml
+*.publishproj
+
+# Microsoft Azure Web App publish settings. Comment the next line if you want to
+# checkin your Azure Web App publish settings, but sensitive information contained
+# in these scripts will be unencrypted
+PublishScripts/
+
+# NuGet Packages
+*.nupkg
+# NuGet Symbol Packages
+*.snupkg
+# The packages folder can be ignored because of Package Restore
+**/[Pp]ackages/*
+# except build/, which is used as an MSBuild target.
+!**/[Pp]ackages/build/
+# Uncomment if necessary however generally it will be regenerated when needed
+#!**/[Pp]ackages/repositories.config
+# NuGet v3's project.json files produces more ignorable files
+*.nuget.props
+*.nuget.targets
+
+# Microsoft Azure Build Output
+csx/
+*.build.csdef
+
+# Microsoft Azure Emulator
+ecf/
+rcf/
+
+# Windows Store app package directories and files
+AppPackages/
+BundleArtifacts/
+Package.StoreAssociation.xml
+_pkginfo.txt
+*.appx
+*.appxbundle
+*.appxupload
+
+# Visual Studio cache files
+# files ending in .cache can be ignored
+*.[Cc]ache
+# but keep track of directories ending in .cache
+!?*.[Cc]ache/
+
+# Others
+ClientBin/
+~$*
+*~
+*.dbmdl
+*.dbproj.schemaview
+*.jfm
+*.pfx
+*.publishsettings
+orleans.codegen.cs
+
+# Including strong name files can present a security risk
+# (https://github.com/github/gitignore/pull/2483#issue-259490424)
+#*.snk
+
+# Since there are multiple workflows, uncomment next line to ignore bower_components
+# (https://github.com/github/gitignore/pull/1529#issuecomment-104372622)
+#bower_components/
+
+# RIA/Silverlight projects
+Generated_Code/
+
+# Backup & report files from converting an old project file
+# to a newer Visual Studio version. Backup files are not needed,
+# because we have git ;-)
+_UpgradeReport_Files/
+Backup*/
+UpgradeLog*.XML
+UpgradeLog*.htm
+ServiceFabricBackup/
+*.rptproj.bak
+
+# SQL Server files
+*.mdf
+*.ldf
+*.ndf
+
+# Business Intelligence projects
+*.rdl.data
+*.bim.layout
+*.bim_*.settings
+*.rptproj.rsuser
+*- [Bb]ackup.rdl
+*- [Bb]ackup ([0-9]).rdl
+*- [Bb]ackup ([0-9][0-9]).rdl
+
+# Microsoft Fakes
+FakesAssemblies/
+
+# GhostDoc plugin setting file
+*.GhostDoc.xml
+
+# Node.js Tools for Visual Studio
+.ntvs_analysis.dat
+node_modules/
+
+# Visual Studio 6 build log
+*.plg
+
+# Visual Studio 6 workspace options file
+*.opt
+
+# Visual Studio 6 auto-generated workspace file (contains which files were open etc.)
+*.vbw
+
+# Visual Studio LightSwitch build output
+**/*.HTMLClient/GeneratedArtifacts
+**/*.DesktopClient/GeneratedArtifacts
+**/*.DesktopClient/ModelManifest.xml
+**/*.Server/GeneratedArtifacts
+**/*.Server/ModelManifest.xml
+_Pvt_Extensions
+
+# Paket dependency manager
+.paket/paket.exe
+paket-files/
+
+# FAKE - F# Make
+.fake/
+
+# CodeRush personal settings
+.cr/personal
+
+# Python Tools for Visual Studio (PTVS)
+__pycache__/
+*.pyc
+
+# Cake - Uncomment if you are using it
+# tools/**
+# !tools/packages.config
+
+# Tabs Studio
+*.tss
+
+# Telerik's JustMock configuration file
+*.jmconfig
+
+# BizTalk build output
+*.btp.cs
+*.btm.cs
+*.odx.cs
+*.xsd.cs
+
+# OpenCover UI analysis results
+OpenCover/
+
+# Azure Stream Analytics local run output
+ASALocalRun/
+
+# MSBuild Binary and Structured Log
+*.binlog
+
+# NVidia Nsight GPU debugger configuration file
+*.nvuser
+
+# MFractors (Xamarin productivity tool) working folder
+.mfractor/
+
+# Local History for Visual Studio
+.localhistory/
+
+# BeatPulse healthcheck temp database
+healthchecksdb
+
+# Backup folder for Package Reference Convert tool in Visual Studio 2017
+MigrationBackup/
+
+# Ionide (cross platform F# VS Code tools) working folder
+.ionide/
+
+# Fody - auto-generated XML schema
+FodyWeavers.xsd
+#sqlite数据库不上传
+SimpleAdmin/SimpleAdmin.Web.Entry/SimpleAdmin.db
diff --git a/api/.husky/task-runner.json b/api/.husky/task-runner.json
new file mode 100644
index 0000000000000000000000000000000000000000..2a016c4cfca005e6d7e8dbf5154a45d8894b7c72
--- /dev/null
+++ b/api/.husky/task-runner.json
@@ -0,0 +1,13 @@
+{
+ "tasks": [
+ {
+ "name": "welcome-message-example",
+ "command": "bash",
+ "args": [ "-c", "echo Husky.Net is awesome!" ],
+ "windows": {
+ "command": "cmd",
+ "args": ["/c", "echo Husky.Net is awesome!" ]
+ }
+ }
+ ]
+}
diff --git a/api/LICENSE b/api/LICENSE
new file mode 100644
index 0000000000000000000000000000000000000000..5fb082bc7f4e497fdb1da16f6029f296711eb831
--- /dev/null
+++ b/api/LICENSE
@@ -0,0 +1,201 @@
+ Apache License
+ Version 2.0, January 2004
+ http://www.apache.org/licenses/
+
+ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+ 1. Definitions.
+
+ "License" shall mean the terms and conditions for use, reproduction,
+ and distribution as defined by Sections 1 through 9 of this document.
+
+ "Licensor" shall mean the copyright owner or entity authorized by
+ the copyright owner that is granting the License.
+
+ "Legal Entity" shall mean the union of the acting entity and all
+ other entities that control, are controlled by, or are under common
+ control with that entity. For the purposes of this definition,
+ "control" means (i) the power, direct or indirect, to cause the
+ direction or management of such entity, whether by contract or
+ otherwise, or (ii) ownership of fifty percent (50%) or more of the
+ outstanding shares, or (iii) beneficial ownership of such entity.
+
+ "You" (or "Your") shall mean an individual or Legal Entity
+ exercising permissions granted by this License.
+
+ "Source" form shall mean the preferred form for making modifications,
+ including but not limited to software source code, documentation
+ source, and configuration files.
+
+ "Object" form shall mean any form resulting from mechanical
+ transformation or translation of a Source form, including but
+ not limited to compiled object code, generated documentation,
+ and conversions to other media types.
+
+ "Work" shall mean the work of authorship, whether in Source or
+ Object form, made available under the License, as indicated by a
+ copyright notice that is included in or attached to the work
+ (an example is provided in the Appendix below).
+
+ "Derivative Works" shall mean any work, whether in Source or Object
+ form, that is based on (or derived from) the Work and for which the
+ editorial revisions, annotations, elaborations, or other modifications
+ represent, as a whole, an original work of authorship. For the purposes
+ of this License, Derivative Works shall not include works that remain
+ separable from, or merely link (or bind by name) to the interfaces of,
+ the Work and Derivative Works thereof.
+
+ "Contribution" shall mean any work of authorship, including
+ the original version of the Work and any modifications or additions
+ to that Work or Derivative Works thereof, that is intentionally
+ submitted to Licensor for inclusion in the Work by the copyright owner
+ or by an individual or Legal Entity authorized to submit on behalf of
+ the copyright owner. For the purposes of this definition, "submitted"
+ means any form of electronic, verbal, or written communication sent
+ to the Licensor or its representatives, including but not limited to
+ communication on electronic mailing lists, source code control systems,
+ and issue tracking systems that are managed by, or on behalf of, the
+ Licensor for the purpose of discussing and improving the Work, but
+ excluding communication that is conspicuously marked or otherwise
+ designated in writing by the copyright owner as "Not a Contribution."
+
+ "Contributor" shall mean Licensor and any individual or Legal Entity
+ on behalf of whom a Contribution has been received by Licensor and
+ subsequently incorporated within the Work.
+
+ 2. Grant of Copyright License. Subject to the terms and conditions of
+ this License, each Contributor hereby grants to You a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ copyright license to reproduce, prepare Derivative Works of,
+ publicly display, publicly perform, sublicense, and distribute the
+ Work and such Derivative Works in Source or Object form.
+
+ 3. Grant of Patent License. Subject to the terms and conditions of
+ this License, each Contributor hereby grants to You a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ (except as stated in this section) patent license to make, have made,
+ use, offer to sell, sell, import, and otherwise transfer the Work,
+ where such license applies only to those patent claims licensable
+ by such Contributor that are necessarily infringed by their
+ Contribution(s) alone or by combination of their Contribution(s)
+ with the Work to which such Contribution(s) was submitted. If You
+ institute patent litigation against any entity (including a
+ cross-claim or counterclaim in a lawsuit) alleging that the Work
+ or a Contribution incorporated within the Work constitutes direct
+ or contributory patent infringement, then any patent licenses
+ granted to You under this License for that Work shall terminate
+ as of the date such litigation is filed.
+
+ 4. Redistribution. You may reproduce and distribute copies of the
+ Work or Derivative Works thereof in any medium, with or without
+ modifications, and in Source or Object form, provided that You
+ meet the following conditions:
+
+ (a) You must give any other recipients of the Work or
+ Derivative Works a copy of this License; and
+
+ (b) You must cause any modified files to carry prominent notices
+ stating that You changed the files; and
+
+ (c) You must retain, in the Source form of any Derivative Works
+ that You distribute, all copyright, patent, trademark, and
+ attribution notices from the Source form of the Work,
+ excluding those notices that do not pertain to any part of
+ the Derivative Works; and
+
+ (d) If the Work includes a "NOTICE" text file as part of its
+ distribution, then any Derivative Works that You distribute must
+ include a readable copy of the attribution notices contained
+ within such NOTICE file, excluding those notices that do not
+ pertain to any part of the Derivative Works, in at least one
+ of the following places: within a NOTICE text file distributed
+ as part of the Derivative Works; within the Source form or
+ documentation, if provided along with the Derivative Works; or,
+ within a display generated by the Derivative Works, if and
+ wherever such third-party notices normally appear. The contents
+ of the NOTICE file are for informational purposes only and
+ do not modify the License. You may add Your own attribution
+ notices within Derivative Works that You distribute, alongside
+ or as an addendum to the NOTICE text from the Work, provided
+ that such additional attribution notices cannot be construed
+ as modifying the License.
+
+ You may add Your own copyright statement to Your modifications and
+ may provide additional or different license terms and conditions
+ for use, reproduction, or distribution of Your modifications, or
+ for any such Derivative Works as a whole, provided Your use,
+ reproduction, and distribution of the Work otherwise complies with
+ the conditions stated in this License.
+
+ 5. Submission of Contributions. Unless You explicitly state otherwise,
+ any Contribution intentionally submitted for inclusion in the Work
+ by You to the Licensor shall be under the terms and conditions of
+ this License, without any additional terms or conditions.
+ Notwithstanding the above, nothing herein shall supersede or modify
+ the terms of any separate license agreement you may have executed
+ with Licensor regarding such Contributions.
+
+ 6. Trademarks. This License does not grant permission to use the trade
+ names, trademarks, service marks, or product names of the Licensor,
+ except as required for reasonable and customary use in describing the
+ origin of the Work and reproducing the content of the NOTICE file.
+
+ 7. Disclaimer of Warranty. Unless required by applicable law or
+ agreed to in writing, Licensor provides the Work (and each
+ Contributor provides its Contributions) on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+ implied, including, without limitation, any warranties or conditions
+ of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+ PARTICULAR PURPOSE. You are solely responsible for determining the
+ appropriateness of using or redistributing the Work and assume any
+ risks associated with Your exercise of permissions under this License.
+
+ 8. Limitation of Liability. In no event and under no legal theory,
+ whether in tort (including negligence), contract, or otherwise,
+ unless required by applicable law (such as deliberate and grossly
+ negligent acts) or agreed to in writing, shall any Contributor be
+ liable to You for damages, including any direct, indirect, special,
+ incidental, or consequential damages of any character arising as a
+ result of this License or out of the use or inability to use the
+ Work (including but not limited to damages for loss of goodwill,
+ work stoppage, computer failure or malfunction, or any and all
+ other commercial damages or losses), even if such Contributor
+ has been advised of the possibility of such damages.
+
+ 9. Accepting Warranty or Additional Liability. While redistributing
+ the Work or Derivative Works thereof, You may choose to offer,
+ and charge a fee for, acceptance of support, warranty, indemnity,
+ or other liability obligations and/or rights consistent with this
+ License. However, in accepting such obligations, You may act only
+ on Your own behalf and on Your sole responsibility, not on behalf
+ of any other Contributor, and only if You agree to indemnify,
+ defend, and hold each Contributor harmless for any liability
+ incurred by, or claims asserted against, such Contributor by reason
+ of your accepting any such warranty or additional liability.
+
+ END OF TERMS AND CONDITIONS
+
+ APPENDIX: How to apply the Apache License to your work.
+
+ To apply the Apache License to your work, attach the following
+ boilerplate notice, with the fields enclosed by brackets "[]"
+ replaced with your own identifying information. (Don't include
+ the brackets!) The text should be enclosed in the appropriate
+ comment syntax for the file format. We also recommend that a
+ file or class name and description of purpose be included on the
+ same "printed page" as the copyright notice for easier
+ identification within third-party archives.
+
+ Copyright 2023 HuGuoDong
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
diff --git a/api/README.md b/api/README.md
new file mode 100644
index 0000000000000000000000000000000000000000..6955524615a51b2a2b9e4c4838ba0c5bf18d8079
--- /dev/null
+++ b/api/README.md
@@ -0,0 +1,92 @@
+# SimpleAdmin.Net
+
+
+
+## Getting started
+
+To make it easy for you to get started with GitLab, here's a list of recommended next steps.
+
+Already a pro? Just edit this README.md and make it your own. Want to make it easy? [Use the template at the bottom](#editing-this-readme)!
+
+## Add your files
+
+- [ ] [Create](https://docs.gitlab.com/ee/user/project/repository/web_editor.html#create-a-file) or [upload](https://docs.gitlab.com/ee/user/project/repository/web_editor.html#upload-a-file) files
+- [ ] [Add files using the command line](https://docs.gitlab.com/ee/gitlab-basics/add-file.html#add-a-file-using-the-command-line) or push an existing Git repository with the following command:
+
+```
+cd existing_repo
+git remote add origin https://jihulab.com/zxzyjs/simpleadmin.net.git
+git branch -M master
+git push -uf origin master
+```
+
+## Integrate with your tools
+
+- [ ] [Set up project integrations](https://jihulab.com/zxzyjs/simpleadmin.net/-/settings/integrations)
+
+## Collaborate with your team
+
+- [ ] [Invite team members and collaborators](https://docs.gitlab.com/ee/user/project/members/)
+- [ ] [Create a new merge request](https://docs.gitlab.com/ee/user/project/merge_requests/creating_merge_requests.html)
+- [ ] [Automatically close issues from merge requests](https://docs.gitlab.com/ee/user/project/issues/managing_issues.html#closing-issues-automatically)
+- [ ] [Enable merge request approvals](https://docs.gitlab.com/ee/user/project/merge_requests/approvals/)
+- [ ] [Set auto-merge](https://docs.gitlab.com/ee/user/project/merge_requests/merge_when_pipeline_succeeds.html)
+
+## Test and Deploy
+
+Use the built-in continuous integration in GitLab.
+
+- [ ] [Get started with GitLab CI/CD](https://docs.gitlab.com/ee/ci/quick_start/index.html)
+- [ ] [Analyze your code for known vulnerabilities with Static Application Security Testing(SAST)](https://docs.gitlab.com/ee/user/application_security/sast/)
+- [ ] [Deploy to Kubernetes, Amazon EC2, or Amazon ECS using Auto Deploy](https://docs.gitlab.com/ee/topics/autodevops/requirements.html)
+- [ ] [Use pull-based deployments for improved Kubernetes management](https://docs.gitlab.com/ee/user/clusters/agent/)
+- [ ] [Set up protected environments](https://docs.gitlab.com/ee/ci/environments/protected_environments.html)
+
+***
+
+# Editing this README
+
+When you're ready to make this README your own, just edit this file and use the handy template below (or feel free to structure it however you want - this is just a starting point!). Thank you to [makeareadme.com](https://www.makeareadme.com/) for this template.
+
+## Suggestions for a good README
+Every project is different, so consider which of these sections apply to yours. The sections used in the template are suggestions for most open source projects. Also keep in mind that while a README can be too long and detailed, too long is better than too short. If you think your README is too long, consider utilizing another form of documentation rather than cutting out information.
+
+## Name
+Choose a self-explaining name for your project.
+
+## Description
+Let people know what your project can do specifically. Provide context and add a link to any reference visitors might be unfamiliar with. A list of Features or a Background subsection can also be added here. If there are alternatives to your project, this is a good place to list differentiating factors.
+
+## Badges
+On some READMEs, you may see small images that convey metadata, such as whether or not all the tests are passing for the project. You can use Shields to add some to your README. Many services also have instructions for adding a badge.
+
+## Visuals
+Depending on what you are making, it can be a good idea to include screenshots or even a video (you'll frequently see GIFs rather than actual videos). Tools like ttygif can help, but check out Asciinema for a more sophisticated method.
+
+## Installation
+Within a particular ecosystem, there may be a common way of installing things, such as using Yarn, NuGet, or Homebrew. However, consider the possibility that whoever is reading your README is a novice and would like more guidance. Listing specific steps helps remove ambiguity and gets people to using your project as quickly as possible. If it only runs in a specific context like a particular programming language version or operating system or has dependencies that have to be installed manually, also add a Requirements subsection.
+
+## Usage
+Use examples liberally, and show the expected output if you can. It's helpful to have inline the smallest example of usage that you can demonstrate, while providing links to more sophisticated examples if they are too long to reasonably include in the README.
+
+## Support
+Tell people where they can go to for help. It can be any combination of an issue tracker, a chat room, an email address, etc.
+
+## Roadmap
+If you have ideas for releases in the future, it is a good idea to list them in the README.
+
+## Contributing
+State if you are open to contributions and what your requirements are for accepting them.
+
+For people who want to make changes to your project, it's helpful to have some documentation on how to get started. Perhaps there is a script that they should run or some environment variables that they need to set. Make these steps explicit. These instructions could also be useful to your future self.
+
+You can also document commands to lint the code or run tests. These steps help to ensure high code quality and reduce the likelihood that the changes inadvertently break something. Having instructions for running tests is especially helpful if it requires external setup, such as starting a Selenium server for testing in a browser.
+
+## Authors and acknowledgment
+Show your appreciation to those who have contributed to the project.
+
+## License
+For open source projects, say how it is licensed.
+
+## Project status
+If you have run out of energy or time for your project, put a note at the top of the README saying that development has slowed down or stopped completely. Someone may choose to fork your project or volunteer to step in as a maintainer or owner, allowing your project to keep going. You can also make an explicit request for maintainers.
diff --git a/api/SimpleAdmin/.editorconfig b/api/SimpleAdmin/.editorconfig
new file mode 100644
index 0000000000000000000000000000000000000000..07608a48b662c1616ce66a757b6bc3664b796d9d
--- /dev/null
+++ b/api/SimpleAdmin/.editorconfig
@@ -0,0 +1,41 @@
+[*.cs]
+#### Naming styles ####
+# Naming rules
+dotnet_naming_rule.const_should_be_all_upper.severity = suggestion
+dotnet_naming_rule.const_should_be_all_upper.symbols = const
+dotnet_naming_rule.const_should_be_all_upper.style = all_upper
+
+dotnet_naming_rule.static_readonly_field_should_be_all_upper.severity = suggestion
+dotnet_naming_rule.static_readonly_field_should_be_all_upper.symbols = static_readonly_field
+dotnet_naming_rule.static_readonly_field_should_be_all_upper.style = all_upper
+
+dotnet_naming_rule.private_or_internal_field_should_be_private_field.severity = suggestion
+dotnet_naming_rule.private_or_internal_field_should_be_private_field.symbols = private_or_internal_field
+dotnet_naming_rule.private_or_internal_field_should_be_private_field.style = private_field
+
+# Symbol specifications
+dotnet_naming_symbols.const.applicable_kinds = field
+dotnet_naming_symbols.const.applicable_accessibilities = *
+dotnet_naming_symbols.const.required_modifiers = const
+
+dotnet_naming_symbols.static_readonly_field.applicable_kinds = field
+dotnet_naming_symbols.static_readonly_field.applicable_accessibilities = public, internal, private, protected, protected_internal, private_protected
+dotnet_naming_symbols.static_readonly_field.required_modifiers = readonly, static
+
+dotnet_naming_symbols.private_or_internal_field.applicable_kinds = field
+dotnet_naming_symbols.private_or_internal_field.applicable_accessibilities = internal, private, private_protected
+dotnet_naming_symbols.private_or_internal_field.required_modifiers =
+
+# Naming styles
+dotnet_naming_style.private_field.required_prefix = _
+dotnet_naming_style.private_field.required_suffix =
+dotnet_naming_style.private_field.word_separator =
+dotnet_naming_style.private_field.capitalization = camel_case
+
+dotnet_naming_style.all_upper.required_prefix =
+dotnet_naming_style.all_upper.required_suffix =
+dotnet_naming_style.all_upper.word_separator = _
+dotnet_naming_style.all_upper.capitalization = all_upper
+
+# Add copyright file header
+file_header_template = Copyright (c) 2022-Now 少林寺驻北固山办事处大神父王喇嘛\n\nSimpleAdmin 基于 Apache License Version 2.0 协议发布,可用于商业项目,但必须遵守以下补充条款:\n1.请不要删除和修改根目录下的LICENSE文件。\n2.请不要删除和修改SimpleAdmin源码头部的版权声明。\n3.分发源码时候,请注明软件出处 https://gitee.com/dotnetmoyu/SimpleAdmin\n4.基于本软件的作品,只能使用 SimpleAdmin 作为后台服务,除外情况不可商用且不允许二次分发或开源。\n5.请不得将本软件应用于危害国家安全、荣誉和利益的行为,不能以任何形式用于非法为目的的行为。\n6.任何基于本软件而产生的一切法律纠纷和责任,均于我司无关。
diff --git a/api/SimpleAdmin/SimpleAdmin.Plugin/SimpleAdmin.Plugin.Core/SimpleAdmin.Plugin.Core.csproj b/api/SimpleAdmin/Directory.Build.props
similarity index 33%
rename from api/SimpleAdmin/SimpleAdmin.Plugin/SimpleAdmin.Plugin.Core/SimpleAdmin.Plugin.Core.csproj
rename to api/SimpleAdmin/Directory.Build.props
index 589e82d0ea897fe6377998b01cef810e54aa8ebf..527e357e58145d4071d354004eb24aec2532da5c 100644
--- a/api/SimpleAdmin/SimpleAdmin.Plugin/SimpleAdmin.Plugin.Core/SimpleAdmin.Plugin.Core.csproj
+++ b/api/SimpleAdmin/Directory.Build.props
@@ -1,15 +1,13 @@
-
-
+
- net7.0;net6.0
+ net6.0;net7.0;net8.0;
1701;1702;8616;1591;8618;8619;8629;8602;8603;8604;8625;8765
- SimpleAdmin.Plugin.Core.xml
+ 3.0.0
enable
- enable
+ en-US
-
-
-
-
-
+
+ $(MSBuildProjectName).xml
+
+
\ No newline at end of file
diff --git a/api/SimpleAdmin/SimpleAdmin.Application/Application.Development.json b/api/SimpleAdmin/SimpleAdmin.Application/Application.Development.json
index 9c6b05466982756c26170cfec2818936808f1524..2e9e777d12946024e3054bbebf2218fefa8a1140 100644
--- a/api/SimpleAdmin/SimpleAdmin.Application/Application.Development.json
+++ b/api/SimpleAdmin/SimpleAdmin.Application/Application.Development.json
@@ -1,5 +1,5 @@
{
- "$schema": "https://gitee.com/dotnetchina/Furion/raw/v4/schemas/v4/furion-schema.json",
+ "$schema": "https://gitee.com/dotnetmoyu/MoYu/raw/v4/schemas/v4/MoYu-schema.json",
//swagger分组设置
"[openapi:Application]": {
"Order": 90, //分组排序,int 类型,数字越大排前面,默认 0
@@ -7,7 +7,7 @@
},
//系统层设置
"ApplicationSettings": {
- "InitTable": true, //是否初始化表结构
- "InitSeedData": true, //是否初始化种子数据
+ "InitTable": false, //是否初始化表结构
+ "InitSeedData": false, //是否初始化种子数据
}
}
\ No newline at end of file
diff --git a/api/SimpleAdmin/SimpleAdmin.Application/Application.Production.json b/api/SimpleAdmin/SimpleAdmin.Application/Application.Production.json
index 271aea52a42c482c590d1eed6e6138577eea1e05..3f68a37ca4421f73b70c53b1c8036c701f5d571f 100644
--- a/api/SimpleAdmin/SimpleAdmin.Application/Application.Production.json
+++ b/api/SimpleAdmin/SimpleAdmin.Application/Application.Production.json
@@ -1,5 +1,5 @@
{
- "$schema": "https://gitee.com/dotnetchina/Furion/raw/v4/schemas/v4/furion-schema.json",
+ "$schema": "https://gitee.com/dotnetmoyu/MoYu/raw/v4/schemas/v4/MoYu-schema.json",
//swagger分组设置
"[openapi:Application]": {
"Order": 90, //分组排序,int 类型,数字越大排前面,默认 0
diff --git a/api/SimpleAdmin/SimpleAdmin.Application/Const/ApplicationConst.cs b/api/SimpleAdmin/SimpleAdmin.Application/Const/ApplicationConst.cs
new file mode 100644
index 0000000000000000000000000000000000000000..6e31e38f5ad9036c7613f30f698bc0a0574eb392
--- /dev/null
+++ b/api/SimpleAdmin/SimpleAdmin.Application/Const/ApplicationConst.cs
@@ -0,0 +1,29 @@
+// Copyright (c) 2022-Now 少林寺驻北固山办事处大神父王喇嘛
+//
+// SimpleAdmin 基于 Apache License Version 2.0 协议发布,可用于商业项目,但必须遵守以下补充条款:
+// 1.请不要删除和修改根目录下的LICENSE文件。
+// 2.请不要删除和修改SimpleAdmin源码头部的版权声明。
+// 3.分发源码时候,请注明软件出处 https://gitee.com/dotnetmoyu/SimpleAdmin
+// 4.基于本软件的作品,只能使用 SimpleAdmin 作为后台服务,除外情况不可商用且不允许二次分发或开源。
+// 5.请不得将本软件应用于危害国家安全、荣誉和利益的行为,不能以任何形式用于非法为目的的行为。
+// 6.任何基于本软件而产生的一切法律纠纷和责任,均于我司无关。
+
+namespace SimpleAdmin.Application;
+
+public class ApplicationConst
+{
+ #region 别称
+
+ ///
+ /// 机构
+ ///
+ public const string BIZ_ORG = "机构";
+
+
+ ///
+ /// 岗位
+ ///
+ public const string BIZ_POS = "岗位";
+
+ #endregion 别称
+}
diff --git a/api/SimpleAdmin/SimpleAdmin.Application/Entity/GenTest.cs b/api/SimpleAdmin/SimpleAdmin.Application/Entity/GenTest.cs
deleted file mode 100644
index bed18d87b4e2e4eb529ed2191982b0473b47dbb1..0000000000000000000000000000000000000000
--- a/api/SimpleAdmin/SimpleAdmin.Application/Entity/GenTest.cs
+++ /dev/null
@@ -1,47 +0,0 @@
-namespace SimpleAdmin.System;
-
-///
-/// 代码生成基础
-///
-[SugarTable("gen_test", TableDescription = "代码生成测试")]
-[Tenant(SqlsugarConst.DB_Default)]
-[CodeGen]
-[BatchEdit]
-public class GenTest : DataEntityBase
-{
- ///
- /// 姓名
- ///
- public string Name { get; set; }
-
- ///
- /// 性别
- ///
- public string Sex { get; set; }
-
- ///
- /// 民族
- ///
- public string Nation { get; set; }
-
- ///
- /// 年龄
- ///
-
- public int Age { get; set; }
-
- ///
- /// 生日
- ///
- public DateTime Bir { get; set; }
-
- ///
- /// 存款
- ///
- public decimal Money { get; set; }
-
- ///
- /// 排序码
- ///
- public int SortCode { get; set; }
-}
\ No newline at end of file
diff --git a/api/SimpleAdmin/SimpleAdmin.Application/GlobalUsings.cs b/api/SimpleAdmin/SimpleAdmin.Application/GlobalUsings.cs
index 190b275e3f5ac94a44f5146bec32296259a8e9e9..95a49bf75e642c3ae0c5068d828e11cdb53bab9b 100644
--- a/api/SimpleAdmin/SimpleAdmin.Application/GlobalUsings.cs
+++ b/api/SimpleAdmin/SimpleAdmin.Application/GlobalUsings.cs
@@ -1,21 +1,25 @@
-global using Furion;
-global using Furion.DependencyInjection;
-global using Furion.FriendlyException;
-global using Magicodes.ExporterAndImporter.Core;
-global using Magicodes.ExporterAndImporter.Excel;
+// Copyright (c) 2022-Now 少林寺驻北固山办事处大神父王喇嘛
+//
+// SimpleAdmin 基于 Apache License Version 2.0 协议发布,可用于商业项目,但必须遵守以下补充条款:
+// 1.请不要删除和修改根目录下的LICENSE文件。
+// 2.请不要删除和修改SimpleAdmin源码头部的版权声明。
+// 3.分发源码时候,请注明软件出处 https://gitee.com/dotnetmoyu/SimpleAdmin
+// 4.基于本软件的作品,只能使用 SimpleAdmin 作为后台服务,除外情况不可商用且不允许二次分发或开源。
+// 5.请不得将本软件应用于危害国家安全、荣誉和利益的行为,不能以任何形式用于非法为目的的行为。
+// 6.任何基于本软件而产生的一切法律纠纷和责任,均于我司无关。
+
+global using MoYu;
+global using MoYu.DependencyInjection;
+global using MoYu.FriendlyException;
global using Mapster;
global using Microsoft.AspNetCore.Builder;
global using Microsoft.AspNetCore.Hosting;
global using Microsoft.AspNetCore.Mvc;
-global using Microsoft.CodeAnalysis;
global using Microsoft.Extensions.DependencyInjection;
-global using OfficeOpenXml.Table;
+global using SimpleAdmin.Cache;
global using SimpleAdmin.Core;
global using SimpleAdmin.Core.Extension;
-global using SimpleAdmin.System;
-global using SimpleAdmin.Cache;
global using SimpleAdmin.SqlSugar;
-global using SimpleTool;
+global using SimpleAdmin.System;
global using SqlSugar;
-global using System.ComponentModel.DataAnnotations;
-global using SimpleAdmin.Core.Utils;
\ No newline at end of file
+global using System.Reflection;
diff --git a/api/SimpleAdmin/SimpleAdmin.Application/Options/ApplicationSettingsOptions.cs b/api/SimpleAdmin/SimpleAdmin.Application/Options/ApplicationSettingsOptions.cs
index 57b15e5efd990a33b05688996d887eff3280ea66..2b64f6bf04b7f482020752bce3540ab4fc6daf49 100644
--- a/api/SimpleAdmin/SimpleAdmin.Application/Options/ApplicationSettingsOptions.cs
+++ b/api/SimpleAdmin/SimpleAdmin.Application/Options/ApplicationSettingsOptions.cs
@@ -1,4 +1,14 @@
-using Furion.ConfigurableOptions;
+// Copyright (c) 2022-Now 少林寺驻北固山办事处大神父王喇嘛
+//
+// SimpleAdmin 基于 Apache License Version 2.0 协议发布,可用于商业项目,但必须遵守以下补充条款:
+// 1.请不要删除和修改根目录下的LICENSE文件。
+// 2.请不要删除和修改SimpleAdmin源码头部的版权声明。
+// 3.分发源码时候,请注明软件出处 https://gitee.com/dotnetmoyu/SimpleAdmin
+// 4.基于本软件的作品,只能使用 SimpleAdmin 作为后台服务,除外情况不可商用且不允许二次分发或开源。
+// 5.请不得将本软件应用于危害国家安全、荣誉和利益的行为,不能以任何形式用于非法为目的的行为。
+// 6.任何基于本软件而产生的一切法律纠纷和责任,均于我司无关。
+
+using MoYu.ConfigurableOptions;
namespace SimpleAdmin.Application;
@@ -7,4 +17,4 @@ namespace SimpleAdmin.Application;
///
public class ApplicationSettingsOptions : BaseOptions, IConfigurableOptions
{
-}
\ No newline at end of file
+}
diff --git a/api/SimpleAdmin/SimpleAdmin.Application/Services/GenTest/Dto/GenTestInput.cs b/api/SimpleAdmin/SimpleAdmin.Application/Services/GenTest/Dto/GenTestInput.cs
deleted file mode 100644
index c5c23b5ea47dfc8f6708335bc1a02e6167c48618..0000000000000000000000000000000000000000
--- a/api/SimpleAdmin/SimpleAdmin.Application/Services/GenTest/Dto/GenTestInput.cs
+++ /dev/null
@@ -1,135 +0,0 @@
-using System;
-using System.ComponentModel.DataAnnotations;
-using Masuit.Tools.Core.Validator;
-namespace SimpleAdmin.Application;
-
-///
-/// 测试分页查询参数
-///
-public class GenTestPageInput : BasePageInput
-{
- ///
- /// 姓名
- ///
- public string Name { get; set; }
-
- ///
- /// 组织机构Id
- ///
- public long OrgId { get; set; }
-}
-
-
-///
-/// 添加测试参数
-///
-public class GenTestAddInput
-{
- ///
- /// 姓名
- ///
- public string Name { get; set; }
-
- ///
- /// 性别
- ///
- public string Sex { get; set; }
-
- ///
- /// 民族
- ///
- public string Nation { get; set; }
-
- ///
- /// 年龄
- ///
- public int? Age { get; set; }
-
- ///
- /// 生日
- ///
- public DateTime? Bir { get; set; }
-
- ///
- /// 排序码
- ///
- public int? SortCode { get; set; }
-
- ///
- /// 存款
- ///
- public decimal? Money { get; set; }
-
-}
-
-///
-/// 修改测试参数
-///
-public class GenTestEditInput : GenTestAddInput
-{
- ///
- /// Id
- ///
- [IdNotNull(ErrorMessage = "Id不能为空")]
- public long Id { get; set; }
-}
-
-
-///
-/// 测试导入
-///
-public class GenTestImportInput : ImportTemplateInput
-{
- ///
- /// 姓名
- ///
- [ImporterHeader(Name = "姓名")]
- [Required(ErrorMessage = "姓名不能为空")]
- public string Name { get; set; }
-
- ///
- /// 性别
- ///
- [ImporterHeader(Name = "性别")]
- [Required(ErrorMessage = "性别不能为空")]
- public string Sex { get; set; }
-
- ///
- /// 民族
- ///
- [ImporterHeader(Name = "民族")]
- [Required(ErrorMessage = "民族不能为空")]
- public string Nation { get; set; }
-
- ///
- /// 年龄
- ///
- [ImporterHeader(Name = "年龄")]
- [Required(ErrorMessage = "年龄不能为空")]
- public int? Age { get; set; }
-
- ///
- /// 生日
- ///
- [ImporterHeader(Name = "生日")]
- [Required(ErrorMessage = "生日不能为空")]
- public DateTime? Bir { get; set; }
-
- ///
- /// 排序码
- ///
- [ImporterHeader(Name = "排序码")]
- [Required(ErrorMessage = "排序码不能为空")]
- public int? SortCode { get; set; }
-
- ///
- /// 存款
- ///
- [ImporterHeader(Name = "存款")]
- [Required(ErrorMessage = "存款不能为空")]
- public decimal? Money { get; set; }
-
-}
-
-
-
diff --git a/api/SimpleAdmin/SimpleAdmin.Application/Services/GenTest/Dto/GenTestOutput.cs b/api/SimpleAdmin/SimpleAdmin.Application/Services/GenTest/Dto/GenTestOutput.cs
deleted file mode 100644
index 140189cb389fa91f59295f94beeb20fbcc4f9b70..0000000000000000000000000000000000000000
--- a/api/SimpleAdmin/SimpleAdmin.Application/Services/GenTest/Dto/GenTestOutput.cs
+++ /dev/null
@@ -1,54 +0,0 @@
-namespace SimpleAdmin.Application;
-
-///
-/// 测试导出
-///
-[ExcelExporter(Name = "测试信息", TableStyle = TableStyles.Light10, AutoFitAllColumn = true)]
-public class GenTestExportOutput
-{
- ///
- /// 姓名
- ///
- [ExporterHeader(DisplayName = "姓名")]
- public string Name { get; set; }
-
- ///
- /// 性别
- ///
- [ExporterHeader(DisplayName = "性别")]
- public string Sex { get; set; }
-
- ///
- /// 民族
- ///
- [ExporterHeader(DisplayName = "民族")]
- public string Nation { get; set; }
-
- ///
- /// 年龄
- ///
- [ExporterHeader(DisplayName = "年龄")]
- public string Age { get; set; }
-
- ///
- /// 生日
- ///
- [ExporterHeader(DisplayName = "生日")]
- public string Bir { get; set; }
-
- ///
- /// 排序码
- ///
- [ExporterHeader(DisplayName = "排序码")]
- public string SortCode { get; set; }
-
- ///
- /// 存款
- ///
- [ExporterHeader(DisplayName = "存款")]
- public string Money { get; set; }
-
-}
-
-
-
diff --git a/api/SimpleAdmin/SimpleAdmin.Application/Services/GenTest/GenTestService.cs b/api/SimpleAdmin/SimpleAdmin.Application/Services/GenTest/GenTestService.cs
deleted file mode 100644
index 0dbc70d1607a2d1d3e63cd23b8ff5520b126745a..0000000000000000000000000000000000000000
--- a/api/SimpleAdmin/SimpleAdmin.Application/Services/GenTest/GenTestService.cs
+++ /dev/null
@@ -1,199 +0,0 @@
-
-using Furion.FriendlyException;
-using Mapster;
-using SimpleAdmin.Core;
-using Microsoft.Extensions.Logging;
-using Microsoft.AspNetCore.Mvc;
-using SqlSugar;
-
-namespace SimpleAdmin.Application;
-
-///
-///
-///
-public class GenTestService : DbRepository, IGenTestService
-{
- private readonly ILogger _logger;
- private readonly ISysUserService _sysUserService;
- private readonly IImportExportService _importExportService;
- private readonly ISysOrgService _sysOrgService;
-
- public GenTestService(ILogger logger,ISysUserService sysUserService
- ,IImportExportService importExportService
- ,ISysOrgService sysOrgService
- )
- {
- _sysUserService = sysUserService;
- _logger = logger;
- _importExportService = importExportService;
- _sysOrgService = sysOrgService;
-
- }
-
- #region 查询
-
- ///
- public async Task> Page(GenTestPageInput input)
- {
- var query = await GetQuery(input);//获取查询条件
- var pageInfo = await query.ToPagedListAsync(input.Current, input.Size);//分页
- return pageInfo;
- }
-
- ///
- public async Task> List(GenTestPageInput input)
- {
- var query = await GetQuery(input);//获取查询条件
- var list = await query.ToListAsync();
- return list;
- }
-
- ///
- public async Task Detail(BaseIdInput input)
- {
- var genTest = await GetFirstAsync(it => it.Id == input.Id);
- return genTest ;
-
- }
-
-//外键查询
- #endregion
-
- #region 新增
-
- ///
- public async Task Add(GenTestAddInput input)
- {
- var genTest = input.Adapt();//实体转换
- await CheckInput(genTest);//检查参数
- await InsertAsync(genTest);//插入数据
- }
-
- #endregion
-
- #region 编辑
-
- ///
- public async Task Edit(GenTestEditInput input)
- {
- var genTest = input.Adapt();//实体转换
- await CheckInput(genTest);//检查参数
- await UpdateAsync(genTest);//更新数据
- }
-
-
- #endregion
-
- #region 删除
-
- ///
- public async Task Delete(List input)
- {
- //获取所有ID
- var ids = input.Select(it => it.Id).ToList();
- if (ids.Count > 0)
- {
- await DeleteByIdsAsync(ids.Cast().ToArray());//删除数据
- ////事务
- //var result = await itenant.UseTranAsync(async () =>
- //{
- //await DeleteByIdsAsync(ids.Cast().ToArray());//删除数据
- //});
- //if (!result.IsSuccess)//如果成功了
- //{
- ////写日志
- //_logger.LogError(result.ErrorMessage, result.ErrorException);
- //throw Oops.Oh(ErrorCodeEnum.A0002);
- //}
- }
- }
-
- #endregion
-
- #region 导入导出
-
- ///
- public async Task Template()
- {
- var templateName = "测试信息";
- //var result = _importExportService.GenerateLocalTemplate(templateName);
- var result = await _importExportService.GenerateTemplate(templateName);
- return result;
- }
-
- ///
- public async Task> Preview(ImportPreviewInput input)
- {
- var importPreview = await _importExportService.GetImportPreview(input.File);
- importPreview.Data = await CheckImport(importPreview.Data);//检查导入数据
- return importPreview;
- }
-
- ///
- public async Task> Import(ImportResultInput input)
- {
- var data = await CheckImport(input.Data, true);//检查数据格式
- var result = _importExportService.GetImportResultPreview(data, out var importData);
- var genTest = importData.Adapt>();//转实体
- await InsertOrBulkCopy(genTest);// 数据导入
- return result;
- }
-
- ///
- public async Task Export(GenTestPageInput input)
- {
- var genTests = await List(input);
- var data = genTests.Adapt>();//转为Dto
- var result = await _importExportService.Export(data, "测试信息");
- return result;
- }
-
- #endregion
-
- #region 方法
-
- ///
- /// 检查输入参数
- ///
- ///
- private async Task CheckInput(GenTest genTest)
- {
- var errorMessage = $"您没有权限操作该数据";
- if(genTest.Id==SimpleAdminConst.Zero){
- //表示新增
- }
- else{
- //表示编辑
- }
- }
-
- ///
- /// 获取Sqlsugar的ISugarQueryable
- ///
- ///
- ///
- private async Task> GetQuery(GenTestPageInput input)
- {
-
- var orgIds = await _sysOrgService.GetOrgChildIds(input.OrgId);//获取下级机构
- var query = Context.Queryable()
- .WhereIF(!string.IsNullOrWhiteSpace(input.Name), it => it.Name.Contains(input.Name.Trim()))
- .WhereIF(input.OrgId > 0, it => orgIds.Contains(it.CreateOrgId))//根据机构ID查询
- //.WhereIF(!string.IsNullOrEmpty(input.SearchKey), it => it.Name.Contains(input.SearchKey))//根据关键字查询
- .OrderByIF(!string.IsNullOrEmpty(input.SortField), $"{input.SortField} {input.SortOrder}")
- .OrderBy(it => it.SortCode);//排序
- return query;
- }
-
- ///
- public async Task> CheckImport(List data, bool clearError = false)
- {
- return data;
- }
- #endregion
-
-}
-
-
-
-
diff --git a/api/SimpleAdmin/SimpleAdmin.Application/Services/GenTest/IGenTestService.cs b/api/SimpleAdmin/SimpleAdmin.Application/Services/GenTest/IGenTestService.cs
deleted file mode 100644
index 7542024eef05b8a22fbd7b16171155c16820fd62..0000000000000000000000000000000000000000
--- a/api/SimpleAdmin/SimpleAdmin.Application/Services/GenTest/IGenTestService.cs
+++ /dev/null
@@ -1,100 +0,0 @@
-using Furion.DependencyInjection;
-using SimpleAdmin.Core;
-
-namespace SimpleAdmin.Application;
-
-///
-/// 测试服务
-///
-public interface IGenTestService : ITransient
-{
- #region 查询
-
- ///
- /// 测试分页查询
- ///
- /// 查询参数
- /// 测试分页
- Task> Page(GenTestPageInput input);
-
- ///
- /// 测试列表查询
- ///
- /// 查询参数
- /// 测试列表
- Task> List(GenTestPageInput input);
-
- ///
- /// 测试详情
- ///
- /// Id参数
- /// 详细信息
- Task Detail(BaseIdInput input);
-
-
- #endregion
-
- #region 新增
-
- ///
- /// 添加测试
- ///
- /// 添加参数
- ///
- Task Add(GenTestAddInput input);
-
- #endregion
-
- #region 编辑
- ///
- /// 修改测试
- ///
- /// 编辑参数
- ///
- Task Edit(GenTestEditInput input);
-
- #endregion
-
- #region 删除
-
- ///
- /// 删除测试
- ///
- /// 删除参数
- ///
- Task Delete(List input);
-
- #endregion
-
- #region 导入导出
-
- ///
- /// 测试导入模板下载
- ///
- /// 模板
- Task Template();
-
- ///
- /// 测试导入预览
- ///
- /// 预览参数
- /// 预览结果
- Task> Preview(ImportPreviewInput input);
-
- ///
- /// 测试导入
- ///
- ///
- ///
- Task> Import(ImportResultInput input);
-
- ///
- /// 测试导出
- ///
- ///
- ///
- Task Export(GenTestPageInput input);
-
- #endregion
-}
-
diff --git a/api/SimpleAdmin/SimpleAdmin.Application/Services/Org/IOrgService.cs b/api/SimpleAdmin/SimpleAdmin.Application/Services/Organization/Org/IOrgService.cs
similarity index 60%
rename from api/SimpleAdmin/SimpleAdmin.Application/Services/Org/IOrgService.cs
rename to api/SimpleAdmin/SimpleAdmin.Application/Services/Organization/Org/IOrgService.cs
index 0c2c4093d748c09ba9d165d82b09b3798cc4741f..0415f9aff52ee08ab74ad5ffa37952d109edc439 100644
--- a/api/SimpleAdmin/SimpleAdmin.Application/Services/Org/IOrgService.cs
+++ b/api/SimpleAdmin/SimpleAdmin.Application/Services/Organization/Org/IOrgService.cs
@@ -1,4 +1,14 @@
-namespace SimpleAdmin.Application;
+// Copyright (c) 2022-Now 少林寺驻北固山办事处大神父王喇嘛
+//
+// SimpleAdmin 基于 Apache License Version 2.0 协议发布,可用于商业项目,但必须遵守以下补充条款:
+// 1.请不要删除和修改根目录下的LICENSE文件。
+// 2.请不要删除和修改SimpleAdmin源码头部的版权声明。
+// 3.分发源码时候,请注明软件出处 https://gitee.com/dotnetmoyu/SimpleAdmin
+// 4.基于本软件的作品,只能使用 SimpleAdmin 作为后台服务,除外情况不可商用且不允许二次分发或开源。
+// 5.请不得将本软件应用于危害国家安全、荣誉和利益的行为,不能以任何形式用于非法为目的的行为。
+// 6.任何基于本软件而产生的一切法律纠纷和责任,均于我司无关。
+
+namespace SimpleAdmin.Application;
///
/// 机构服务
@@ -24,7 +34,7 @@ public interface IOrgService : ITransient
///
/// 删除参数
///
- Task Delete(List input);
+ Task Delete(BaseIdListInput input);
///
/// 编辑机构
@@ -53,4 +63,4 @@ public interface IOrgService : ITransient
///
///
Task Detail(BaseIdInput input);
-}
\ No newline at end of file
+}
diff --git a/api/SimpleAdmin/SimpleAdmin.Application/Services/Org/OrgService.cs b/api/SimpleAdmin/SimpleAdmin.Application/Services/Organization/Org/OrgService.cs
similarity index 44%
rename from api/SimpleAdmin/SimpleAdmin.Application/Services/Org/OrgService.cs
rename to api/SimpleAdmin/SimpleAdmin.Application/Services/Organization/Org/OrgService.cs
index efea75f2153a4f5c7ccc757195d4c8024052fd4e..34255424a54b3b840d4efaf6c1ce317745ca9c58 100644
--- a/api/SimpleAdmin/SimpleAdmin.Application/Services/Org/OrgService.cs
+++ b/api/SimpleAdmin/SimpleAdmin.Application/Services/Organization/Org/OrgService.cs
@@ -1,15 +1,23 @@
-namespace SimpleAdmin.Application;
+// Copyright (c) 2022-Now 少林寺驻北固山办事处大神父王喇嘛
+//
+// SimpleAdmin 基于 Apache License Version 2.0 协议发布,可用于商业项目,但必须遵守以下补充条款:
+// 1.请不要删除和修改根目录下的LICENSE文件。
+// 2.请不要删除和修改SimpleAdmin源码头部的版权声明。
+// 3.分发源码时候,请注明软件出处 https://gitee.com/dotnetmoyu/SimpleAdmin
+// 4.基于本软件的作品,只能使用 SimpleAdmin 作为后台服务,除外情况不可商用且不允许二次分发或开源。
+// 5.请不得将本软件应用于危害国家安全、荣誉和利益的行为,不能以任何形式用于非法为目的的行为。
+// 6.任何基于本软件而产生的一切法律纠纷和责任,均于我司无关。
+
+namespace SimpleAdmin.Application;
///
public class OrgService : DbRepository, IOrgService
{
- private readonly ISimpleCacheService _simpleCacheService;
private readonly ISysOrgService _sysOrgService;
private readonly ISysUserService _sysUserService;
- public OrgService(ISimpleCacheService simpleCacheService, ISysOrgService sysOrgService, ISysUserService sysUserService)
+ public OrgService(ISysOrgService sysOrgService, ISysUserService sysUserService)
{
- _simpleCacheService = simpleCacheService;
_sysOrgService = sysOrgService;
_sysUserService = sysUserService;
}
@@ -19,9 +27,18 @@ public class OrgService : DbRepository, IOrgService
{
//获取数据范围
var dataScope = await _sysUserService.GetLoginUserApiDataScope();
- input.OrgIds = dataScope;
- //分页查询
- var pageInfo = await _sysOrgService.Page(input);
+ dataScope?.Remove(UserManager.OrgId);
+ //构建查询
+ var query = Context.Queryable()
+ .WhereIF(dataScope != null, it => dataScope.Contains(it.Id))//机构ID查询
+ .WhereIF(input.ParentId > 0,
+ it => it.ParentId == input.ParentId || SqlFunc.JsonLike(it.ParentIdList, input.ParentId.ToString()))//父级
+ .WhereIF(!string.IsNullOrEmpty(input.Name), it => it.Name.Contains(input.Name))//根据名称查询
+ .WhereIF(!string.IsNullOrEmpty(input.Code), it => it.Code.Contains(input.Code))//根据编码查询
+ .WhereIF(!string.IsNullOrEmpty(input.Status), it => it.Status == input.Status)//根据状态查询
+ .OrderByIF(!string.IsNullOrEmpty(input.SortField), $"{input.SortField} {input.SortOrder}").OrderBy(it => it.SortCode)
+ .OrderBy(it => it.CreateTime);//排序
+ var pageInfo = await query.ToPagedListAsync(input.PageNum, input.PageSize);//分页
return pageInfo;
}
@@ -38,15 +55,15 @@ public class OrgService : DbRepository, IOrgService
///
public async Task Add(SysOrgAddInput input)
{
- await CheckInput(input, SimpleAdminConst.Add);//检查参数
- await _sysOrgService.Add(input, SimpleAdminConst.BizOrg);
+ await CheckInput(input, SystemConst.ADD);//检查参数
+ await _sysOrgService.Add(input, ApplicationConst.BIZ_ORG);
}
///
public async Task Edit(SysOrgEditInput input)
{
- await CheckInput(input, SimpleAdminConst.Edit);//检查参数
- await _sysOrgService.Edit(input, SimpleAdminConst.BizOrg);
+ await CheckInput(input, SystemConst.EDIT);//检查参数
+ await _sysOrgService.Edit(input, ApplicationConst.BIZ_ORG);
}
///
@@ -57,39 +74,35 @@ public class OrgService : DbRepository, IOrgService
if (dataScope == null || dataScope.Count > 0)//如果有机构
{
if (dataScope is { Count: > 0 } && (!dataScope.ContainsAll(input.Ids) || !dataScope.Contains(input.TargetId)))//判断目标机构和需要复制的机构是否都在数据范围里面
- throw Oops.Bah($"您没有权限复制这些机构");
+ throw Oops.Bah("您没有权限复制这些机构");
await _sysOrgService.Copy(input);//复制操作
}
}
///
- public async Task Delete(List input)
+ public async Task Delete(BaseIdListInput input)
{
//获取所有ID
- var ids = input.Select(it => it.Id).ToList();
- //获取数据范围
- var dataScope = await _sysUserService.GetLoginUserApiDataScope();
- if (dataScope is { Count: > 0 })//如果有机构
- {
- if (!dataScope.ContainsAll(ids))//判断要删除的id列表是否都包含在数据范围内
- throw Oops.Bah($"您没有权限删除这些机构");
- }
- else if (dataScope is { Count: 0 })//表示仅自己
- {
- //获取要删除的机构列表
- var orgs = (await _sysOrgService.GetListAsync()).Where(it => ids.Contains(it.Id)).ToList();
- //如果机构列表里有任何不是自己创建的机构
- if (orgs.Any(it => it.CreateUserId != UserManager.UserId))
- throw Oops.Bah($"只能删除自己创建的机构");
- }
- await _sysOrgService.Delete(input, SimpleAdminConst.BizOrg);//删除操作
+ var ids = input.Ids;
+ //获取要删除的机构列表
+ var orgList = (await _sysOrgService.GetListAsync()).Where(it => ids.Contains(it.Id)).ToList();
+ if (orgList.Any(it => it.Category == CateGoryConst.ORG_COMPANY))//如果有公司{
+ throw Oops.Bah("不能删除根机构");
+ //检查数据范围
+ var orgIds = orgList.Select(it => it.Id).ToList();
+ var createUserIds = orgList.Select(it => it.CreateUserId.GetValueOrDefault()).ToList();
+ await _sysUserService.CheckApiDataScope(orgIds, createUserIds, "您没有权限删除这些机构");
+ await _sysOrgService.Delete(input, ApplicationConst.BIZ_ORG);//删除操作
}
///
public async Task Detail(BaseIdInput input)
{
- var sysOrg = await _sysOrgService.GetSysOrgById(input.Id);
- return sysOrg;
+ var org = await _sysOrgService.GetSysOrgById(input.Id);//获取机构
+ var errorMessage = "您没有权限查看该机构";
+ //判断数据范围
+ await _sysUserService.CheckApiDataScope(org.Id, org.CreateUserId.GetValueOrDefault(), errorMessage);
+ return org;
}
#region 方法
@@ -101,6 +114,11 @@ public class OrgService : DbRepository, IOrgService
/// 操作名称
private async Task CheckInput(SysOrg sysOrg, string operate)
{
+ sysOrg.Category = CateGoryConst.ORG_DEPT;//设置分类为部门,业务只能操作部门
+ if (sysOrg.ParentId == SimpleAdminConst.ZERO)
+ {
+ throw Oops.Bah($"不能{operate}根机构");
+ }
var errorMessage = $"您没有权限{operate}该机构";
//获取数据范围
var dataScope = await _sysUserService.GetLoginUserApiDataScope();
@@ -117,7 +135,8 @@ public class OrgService : DbRepository, IOrgService
if (sysOrg.Id > 0)
{
var org = await _sysOrgService.GetSysOrgById(sysOrg.Id);//获取机构
- if (org.CreateUserId != UserManager.UserId) throw Oops.Bah(errorMessage);//机构的创建人不是自己则报错
+ if (org.CreateUserId != UserManager.UserId)
+ throw Oops.Bah(errorMessage);//机构的创建人不是自己则报错
}
else
{
@@ -127,4 +146,4 @@ public class OrgService : DbRepository, IOrgService
}
#endregion 方法
-}
\ No newline at end of file
+}
diff --git a/api/SimpleAdmin/SimpleAdmin.Application/Services/Position/IPositionService.cs b/api/SimpleAdmin/SimpleAdmin.Application/Services/Organization/Position/IPositionService.cs
similarity index 49%
rename from api/SimpleAdmin/SimpleAdmin.Application/Services/Position/IPositionService.cs
rename to api/SimpleAdmin/SimpleAdmin.Application/Services/Organization/Position/IPositionService.cs
index 33953f31c6d1dc95f0f960d1d354d230cfd8acec..4ffa68de8cdde5cffd340d8c05298d94d966924a 100644
--- a/api/SimpleAdmin/SimpleAdmin.Application/Services/Position/IPositionService.cs
+++ b/api/SimpleAdmin/SimpleAdmin.Application/Services/Organization/Position/IPositionService.cs
@@ -1,4 +1,14 @@
-namespace SimpleAdmin.Application;
+// Copyright (c) 2022-Now 少林寺驻北固山办事处大神父王喇嘛
+//
+// SimpleAdmin 基于 Apache License Version 2.0 协议发布,可用于商业项目,但必须遵守以下补充条款:
+// 1.请不要删除和修改根目录下的LICENSE文件。
+// 2.请不要删除和修改SimpleAdmin源码头部的版权声明。
+// 3.分发源码时候,请注明软件出处 https://gitee.com/dotnetmoyu/SimpleAdmin
+// 4.基于本软件的作品,只能使用 SimpleAdmin 作为后台服务,除外情况不可商用且不允许二次分发或开源。
+// 5.请不得将本软件应用于危害国家安全、荣誉和利益的行为,不能以任何形式用于非法为目的的行为。
+// 6.任何基于本软件而产生的一切法律纠纷和责任,均于我司无关。
+
+namespace SimpleAdmin.Application;
///
/// 岗位管理
@@ -17,7 +27,7 @@ public interface IPositionService : ITransient
///
/// id列表
///
- Task Delete(List input);
+ Task Delete(BaseIdListInput input);
///
/// 编辑岗位
@@ -38,7 +48,7 @@ public interface IPositionService : ITransient
///
///
///
- Task> PositionSelector(PositionSelectorInput input);
+ Task> Selector(PositionSelectorInput input);
///
/// 岗位详情
@@ -46,4 +56,11 @@ public interface IPositionService : ITransient
///
///
Task Detail(BaseIdInput input);
-}
\ No newline at end of file
+
+ ///
+ /// 岗位树形结构
+ ///
+ ///
+ ///
+ Task> Tree(PositionTreeInput input);
+}
diff --git a/api/SimpleAdmin/SimpleAdmin.Application/Services/Position/PositionService.cs b/api/SimpleAdmin/SimpleAdmin.Application/Services/Organization/Position/PositionService.cs
similarity index 40%
rename from api/SimpleAdmin/SimpleAdmin.Application/Services/Position/PositionService.cs
rename to api/SimpleAdmin/SimpleAdmin.Application/Services/Organization/Position/PositionService.cs
index 5eb96b37a049520d85526e3532628e613ac705f3..a619a986b588d733f39f4981380602564517fec8 100644
--- a/api/SimpleAdmin/SimpleAdmin.Application/Services/Position/PositionService.cs
+++ b/api/SimpleAdmin/SimpleAdmin.Application/Services/Organization/Position/PositionService.cs
@@ -1,4 +1,14 @@
-namespace SimpleAdmin.Application;
+// Copyright (c) 2022-Now 少林寺驻北固山办事处大神父王喇嘛
+//
+// SimpleAdmin 基于 Apache License Version 2.0 协议发布,可用于商业项目,但必须遵守以下补充条款:
+// 1.请不要删除和修改根目录下的LICENSE文件。
+// 2.请不要删除和修改SimpleAdmin源码头部的版权声明。
+// 3.分发源码时候,请注明软件出处 https://gitee.com/dotnetmoyu/SimpleAdmin
+// 4.基于本软件的作品,只能使用 SimpleAdmin 作为后台服务,除外情况不可商用且不允许二次分发或开源。
+// 5.请不得将本软件应用于危害国家安全、荣誉和利益的行为,不能以任何形式用于非法为目的的行为。
+// 6.任何基于本软件而产生的一切法律纠纷和责任,均于我司无关。
+
+namespace SimpleAdmin.Application;
///
///
@@ -14,6 +24,8 @@ public class PositionService : DbRepository, IPositionService
_sysPositionService = sysPositionService;
}
+ #region 查询
+
///
public async Task> Page(PositionPageInput input)
{
@@ -25,52 +37,33 @@ public class PositionService : DbRepository, IPositionService
return pageInfo;
}
- ///
- public async Task Add(PositionAddInput input)
- {
- await CheckInput(input, SimpleAdminConst.Add);//检查参数
- await _sysPositionService.Add(input, SimpleAdminConst.BizPos);//添加岗位
- }
-
- ///
- public async Task Delete(List input)
+ ///
+ public async Task> Tree(PositionTreeInput input)
{
- //获取所有ID
- var ids = input.Select(it => it.Id).ToList();
- //获取数据范围
var dataScope = await _sysUserService.GetLoginUserApiDataScope();
- if (dataScope is { Count: > 0 })//如果有机构
- {
- //获取职位下所有机构ID
- var orgIds = (await _sysPositionService.GetListAsync()).Where(it => ids.Contains(it.Id)).Select(it => it.OrgId).ToList();
- if (!dataScope.ContainsAll(orgIds))
- throw Oops.Bah($"您没有权限删除这些岗位");
- }
- else if (dataScope is { Count: 0 })//表示仅自己
- {
- //获取要删除的岗位列表
- var positions = (await _sysPositionService.GetListAsync()).Where(it => ids.Contains(it.Id)).ToList();
- //如果岗位列表里有任何不是自己创建的岗位
- if (positions.Any(it => it.CreateUserId != UserManager.UserId))
- throw Oops.Bah($"只能删除自己创建的岗位");
- }
- await _sysPositionService.Delete(input, SimpleAdminConst.BizOrg);//删除岗位
+ input.OrgIds = dataScope;
+ var result = await _sysPositionService.Tree(input);
+ return result;
}
+ #endregion
+
+ #region 新增
+
///
- public async Task Edit(PositionEditInput input)
+ public async Task Add(PositionAddInput input)
{
- await CheckInput(input, SimpleAdminConst.Edit);//检查参数
- await _sysPositionService.Edit(input, SimpleAdminConst.BizPos);//编辑
+ await CheckInput(input, SystemConst.ADD);//检查参数
+ await _sysPositionService.Add(input, ApplicationConst.BIZ_POS);//添加岗位
}
///
- public async Task> PositionSelector(PositionSelectorInput input)
+ public async Task> Selector(PositionSelectorInput input)
{
//获取数据范围
var dataScope = await _sysUserService.GetLoginUserApiDataScope();
input.OrgIds = dataScope;//赋值机构列表
- var result = await _sysPositionService.PositionSelector(input);//查询
+ var result = await _sysPositionService.Selector(input);//查询
return result;
}
@@ -78,9 +71,43 @@ public class PositionService : DbRepository, IPositionService
public async Task Detail(BaseIdInput input)
{
var position = await _sysPositionService.GetSysPositionById(input.Id);
+ //判断数据范围
+ await _sysUserService.CheckApiDataScope(position.OrgId, position.CreateUserId.GetValueOrDefault(), "您没有权限查看该机构");
return position;
}
+ #endregion
+
+ #region 编辑
+
+ ///
+ public async Task Edit(PositionEditInput input)
+ {
+ await CheckInput(input, SystemConst.EDIT);//检查参数
+ await _sysPositionService.Edit(input, ApplicationConst.BIZ_POS);//编辑
+ }
+
+ #endregion
+
+
+ #region 删除
+
+ ///
+ public async Task Delete(BaseIdListInput input)
+ {
+ //获取所有ID
+ var ids = input.Ids;
+ //获取要删除的岗位列表
+ var positions = (await _sysPositionService.GetListAsync()).Where(it => ids.Contains(it.Id)).ToList();
+ //检查数据范围
+ var orgIds = positions.Select(it => it.OrgId).ToList();
+ var createUserIds = positions.Select(it => it.CreateUserId.GetValueOrDefault()).ToList();
+ await _sysUserService.CheckApiDataScope(orgIds, createUserIds, "您没有权限删除该机构");
+ await _sysPositionService.Delete(input, ApplicationConst.BIZ_ORG);//删除岗位
+ }
+
+ #endregion
+
#region 方法
///
@@ -91,27 +118,14 @@ public class PositionService : DbRepository, IPositionService
private async Task CheckInput(SysPosition sysPosition, string operate)
{
var errorMessage = $"您没有权限在该机构下{operate}岗位";
- //获取数据范围
- var dataScope = await _sysUserService.GetLoginUserApiDataScope();
- if (dataScope is { Count: > 0 })//如果有机构
- {
- if (!dataScope.Contains(sysPosition.OrgId))//判断机构ID是否在数据范围
- throw Oops.Bah(errorMessage);
- }
- else if (dataScope is { Count: 0 })// 仅自己
+ //如果id大于0表示编辑
+ if (sysPosition.Id > 0)
{
- //如果id大于0表示编辑
- if (sysPosition.Id > 0)
- {
- var position = await _sysPositionService.GetSysPositionById(sysPosition.Id);//获取机构
- if (position.CreateUserId != UserManager.UserId) throw Oops.Bah(errorMessage);//岗位的创建人不是自己则报错
- }
- else
- {
- throw Oops.Bah(errorMessage);
- }
+ var position = await _sysPositionService.GetSysPositionById(sysPosition.Id);//获取机构
+ sysPosition.CreateUserId = position.CreateUserId;
}
+ await _sysUserService.CheckApiDataScope(sysPosition.OrgId, sysPosition.CreateUserId.GetValueOrDefault(), errorMessage);
}
#endregion 方法
-}
\ No newline at end of file
+}
diff --git a/api/SimpleAdmin/SimpleAdmin.Application/Services/Organization/Role/IRoleService.cs b/api/SimpleAdmin/SimpleAdmin.Application/Services/Organization/Role/IRoleService.cs
new file mode 100644
index 0000000000000000000000000000000000000000..39bd73746ac8f8cce1f876da79473739c15321a8
--- /dev/null
+++ b/api/SimpleAdmin/SimpleAdmin.Application/Services/Organization/Role/IRoleService.cs
@@ -0,0 +1,115 @@
+// Copyright (c) 2022-Now 少林寺驻北固山办事处大神父王喇嘛
+//
+// SimpleAdmin 基于 Apache License Version 2.0 协议发布,可用于商业项目,但必须遵守以下补充条款:
+// 1.请不要删除和修改根目录下的LICENSE文件。
+// 2.请不要删除和修改SimpleAdmin源码头部的版权声明。
+// 3.分发源码时候,请注明软件出处 https://gitee.com/dotnetmoyu/SimpleAdmin
+// 4.基于本软件的作品,只能使用 SimpleAdmin 作为后台服务,除外情况不可商用且不允许二次分发或开源。
+// 5.请不得将本软件应用于危害国家安全、荣誉和利益的行为,不能以任何形式用于非法为目的的行为。
+// 6.任何基于本软件而产生的一切法律纠纷和责任,均于我司无关。
+
+namespace SimpleAdmin.Application;
+
+public interface IRoleService : ITransient
+{
+ #region 查询
+
+ ///
+ /// 角色拥有资源
+ ///
+ /// 角色id
+ /// 资源类型
+ /// 角色拥有资源信息
+ Task OwnResource(BaseIdInput input, string category);
+
+ ///
+ /// 获取角色下的用户
+ ///
+ /// 角色ID
+ ///
+ Task> OwnUser(BaseIdInput input);
+
+ ///
+ /// 分页查询角色
+ ///
+ /// 查询参数
+ ///
+ Task> Page(RolePageInput input);
+
+ ///
+ /// 角色选择器
+ ///
+ ///
+ ///
+ Task> RoleSelector(RoleSelectorInput input);
+
+ ///
+ /// 获取角色树
+ ///
+ /// 角色树
+ ///
+ Task> Tree(RoleTreeInput input);
+
+ ///
+ /// 角色详情
+ ///
+ /// 角色Id
+ ///
+ Task Detail(BaseIdInput input);
+
+ ///
+ /// 资源树选择器
+ ///
+ ///
+ Task> ResourceTreeSelector();
+
+ #endregion
+
+ #region 新增
+
+ ///
+ /// 添加角色
+ ///
+ /// 添加参数
+ ///
+ Task Add(RoleAddInput input);
+
+ #endregion
+
+ #region 编辑
+
+ ///
+ /// 编辑角色
+ ///
+ /// 编辑参数
+ ///
+ Task Edit(RoleEditInput input);
+
+
+ ///
+ /// 给角色授权
+ ///
+ /// 授权参数
+ ///
+ Task GrantResource(GrantResourceInput input);
+
+ ///
+ /// 给角色授权用户
+ ///
+ /// 授权信息
+ ///
+ Task GrantUser(GrantUserInput input);
+
+ #endregion
+
+ #region 删除
+
+ ///
+ /// 删除角色
+ ///
+ /// 删除参数
+ ///
+ Task Delete(BaseIdListInput input);
+
+ #endregion
+}
diff --git a/api/SimpleAdmin/SimpleAdmin.Application/Services/Organization/Role/RoleService.cs b/api/SimpleAdmin/SimpleAdmin.Application/Services/Organization/Role/RoleService.cs
new file mode 100644
index 0000000000000000000000000000000000000000..9ddeb97f4c75862538ff7980a72c6742b8dbc633
--- /dev/null
+++ b/api/SimpleAdmin/SimpleAdmin.Application/Services/Organization/Role/RoleService.cs
@@ -0,0 +1,286 @@
+// Copyright (c) 2022-Now 少林寺驻北固山办事处大神父王喇嘛
+//
+// SimpleAdmin 基于 Apache License Version 2.0 协议发布,可用于商业项目,但必须遵守以下补充条款:
+// 1.请不要删除和修改根目录下的LICENSE文件。
+// 2.请不要删除和修改SimpleAdmin源码头部的版权声明。
+// 3.分发源码时候,请注明软件出处 https://gitee.com/dotnetmoyu/SimpleAdmin
+// 4.基于本软件的作品,只能使用 SimpleAdmin 作为后台服务,除外情况不可商用且不允许二次分发或开源。
+// 5.请不得将本软件应用于危害国家安全、荣誉和利益的行为,不能以任何形式用于非法为目的的行为。
+// 6.任何基于本软件而产生的一切法律纠纷和责任,均于我司无关。
+
+using Microsoft.Extensions.Logging;
+using NewLife.Serialization;
+
+namespace SimpleAdmin.Application;
+
+///
+public class RoleService : IRoleService
+{
+ private readonly ILogger _logger;
+ private readonly ISysUserService _sysUserService;
+ private readonly ISysRoleService _sysRoleService;
+ private readonly IResourceService _resourceService;
+ private readonly IRelationService _relationService;
+
+ public RoleService(ILogger logger, ISysUserService sysUserService, ISysRoleService sysRoleService,
+ IResourceService resourceService, IRelationService relationService)
+ {
+ _logger = logger;
+ _sysUserService = sysUserService;
+ _sysRoleService = sysRoleService;
+ _resourceService = resourceService;
+ _relationService = relationService;
+ }
+
+ #region 查询
+
+ ///
+ public async Task OwnResource(BaseIdInput input, string category)
+ {
+ return await _sysRoleService.OwnResource(input, category);
+ }
+
+ ///
+ public async Task> OwnUser(BaseIdInput input)
+ {
+ return await _sysRoleService.OwnUser(input);
+ }
+
+ ///
+ public async Task> Page(RolePageInput input)
+ {
+ //获取数据范围
+ var dataScope = await _sysUserService.GetLoginUserApiDataScope();
+ input.OrgIds = dataScope;
+ input.Category = CateGoryConst.ROLE_ORG;//只查询机构角色
+ //分页查询
+ var pageInfo = await _sysRoleService.Page(input);
+ return pageInfo;
+ }
+
+
+ ///
+ public async Task> RoleSelector(RoleSelectorInput input)
+ {
+ //获取数据范围
+ var dataScope = await _sysUserService.GetLoginUserApiDataScope();
+ input.OrgIds = dataScope;
+ return await _sysRoleService.RoleSelector(input);
+ }
+
+ ///
+ public async Task> Tree(RoleTreeInput input)
+ {
+ var dataScope = await _sysUserService.GetLoginUserApiDataScope();
+ input.OrgIds = dataScope;
+ return await _sysRoleService.Tree(input);
+ }
+
+ ///
+ public async Task Detail(BaseIdInput input)
+ {
+ var role = await _sysRoleService.Detail(input);
+ var errorMessage = "您没有权限查看该角色";
+ await _sysUserService.CheckApiDataScope(role.OrgId, role.CreateUserId, errorMessage);
+ return role;
+ }
+
+ ///
+ public async Task> ResourceTreeSelector()
+ {
+ var resourceTreeSelectors = new List();//定义结果
+ var user = await _sysUserService.GetUserById(UserManager.UserId);//获取用户
+ //获取角色资源关系
+ var relations =
+ await _relationService.GetRelationListByObjectIdListAndCategory(user.RoleIdList, CateGoryConst.RELATION_SYS_ROLE_HAS_RESOURCE);
+ var menuIds = new HashSet();//菜单ID集合
+ var buttonIds = new HashSet();//按钮ID集合
+ relations.ForEach(it =>
+ {
+ var resources = it.ExtJson.ToJsonEntity();//转换为对象获取资源
+ menuIds.Add(resources.MenuId);//添加菜单ID
+ resources.ButtonInfo.ForEach(b => buttonIds.Add(b));//添加按钮ID
+ });
+ var menuList = await _resourceService.GetListByCategory(CateGoryConst.RESOURCE_MENU);//获取所有菜单
+ var buttonList = await _resourceService.GetListByCategory(CateGoryConst.RESOURCE_BUTTON);//获取所有按钮
+ var moduleList = await _resourceService.GetListByCategory(CateGoryConst.RESOURCE_MODULE);//获取所有模块
+ var ownMenuList = menuList.Where(it => menuIds.Contains(it.Id)).ToList();//已拥有的菜单
+ var parentMenuList = menuList.Where(it => ownMenuList.Select(m => m.ParentId).Contains(it.Id)).ToList();//获取所有父级菜单
+ ownMenuList.AddRange(parentMenuList);//将父级菜单加入到拥有菜单列表
+ var ownButtonList = buttonList.Where(it => buttonIds.Contains(it.Id)).ToList();//已拥有的按钮
+ var moduleIds = ownMenuList.Select(it => it.Module.GetValueOrDefault()).Distinct().ToList();//模块ID集合
+ var ownModuleList = moduleList.Where(it => moduleIds.Contains(it.Id)).ToList();//已拥有的模块
+ //遍历模块
+ foreach (var module in ownModuleList)
+ {
+ //将实体转换为ResourceTreeSelectorOutPut获取基本信息
+ var resourceTreeSelector = module.Adapt();
+ resourceTreeSelector.Menu = await GetRoleGrantResourceMenus(module.Id, ownMenuList, ownButtonList);//获取授权菜单
+ resourceTreeSelectors.Add(resourceTreeSelector);
+ }
+ return resourceTreeSelectors;
+ }
+
+ #endregion
+
+ #region 增加
+
+ ///
+ public async Task Add(RoleAddInput input)
+ {
+ await CheckInput(input);//检查参数
+ await _sysRoleService.Add(input);
+ }
+
+ #endregion
+
+ #region 编辑
+
+ ///
+ public async Task Edit(RoleEditInput input)
+ {
+ await CheckInput(input);//检查参数
+ await _sysRoleService.Edit(input);
+ }
+
+ ///
+ public async Task GrantResource(GrantResourceInput input)
+ {
+ await _sysRoleService.GrantResource(input);
+ }
+
+ ///
+ public async Task GrantUser(GrantUserInput input)
+ {
+ await _sysRoleService.GrantUser(input);
+ }
+
+ #endregion
+
+ #region 删除
+
+ ///
+ public async Task Delete(BaseIdListInput input)
+ {
+ //获取所有ID
+ var ids = input.Ids;
+ //获取要删除的机构列表
+ var roleList = (await _sysRoleService.GetListAsync()).Where(it => ids.Contains(it.Id)).ToList();
+ if (roleList.Any(it => it.Category == CateGoryConst.ROLE_GLOBAL))//如果有全局角色
+ throw Oops.Bah("不能删除全局角色");
+ //检查数据范围
+ var orgIds = roleList.Select(it => it.OrgId.GetValueOrDefault()).ToList();
+ var createUserIds = roleList.Select(it => it.CreateUserId.GetValueOrDefault()).ToList();
+ await _sysUserService.CheckApiDataScope(orgIds, createUserIds, "您没有权限删除这些角色");
+ await _sysRoleService.Delete(input);
+ }
+
+ #endregion
+
+ #region 方法
+
+ ///
+ /// 检查输入参数
+ ///
+ ///
+ private async Task CheckInput(SysRole sysRole)
+ {
+ sysRole.Category = CateGoryConst.ROLE_ORG;
+ if (sysRole.DefaultDataScope.ScopeCategory == CateGoryConst.SCOPE_ALL)
+ throw Oops.Bah("不能添加全局数据范围的角色");
+ await _sysUserService.CheckApiDataScope(sysRole.OrgId, sysRole.CreateUserId.GetValueOrDefault(), "您没有权限添加该角色");
+ }
+
+ ///
+ /// 获取授权菜单
+ ///
+ /// 模块Id
+ /// 拥有菜单列表
+ /// 拥有权限按钮列表
+ ///
+ public async Task> GetRoleGrantResourceMenus(long moduleId, List ownMenuList,
+ List ownButtonList)
+ {
+ var roleGrantResourceMenus = new List();//定义结果
+ var parentMenuList = ownMenuList.Where(it => it.ParentId == SimpleAdminConst.ZERO).ToList();//获取一级目录
+ //遍历一级目录
+ foreach (var parent in parentMenuList)
+ {
+ //如果是目录则去遍历下级
+ if (parent.MenuType == SysResourceConst.CATALOG)
+ {
+ //获取所有下级菜单
+ var menuList = _resourceService.GetChildListById(ownMenuList, parent.Id, false);
+ if (menuList.Count > 0)//如果有菜单
+ {
+ //遍历下级菜单
+ foreach (var menu in menuList)
+ {
+ //如果菜单类型是菜单
+ if (menu.MenuType is SysResourceConst.MENU or SysResourceConst.SUBSET)
+ {
+ //获取菜单下按钮集合并转换成对应实体
+ var buttonList = ownButtonList.Where(it => it.ParentId == menu.Id).ToList();
+ var buttons = buttonList.Adapt>();
+ roleGrantResourceMenus.Add(new ResTreeSelector.RoleGrantResourceMenu
+ {
+ Id = menu.Id,
+ ParentId = parent.Id,
+ ParentName = parent.Title,
+ Module = moduleId,
+ Title = _resourceService.GetRoleGrantResourceMenuTitle(menuList, menu),//菜单名称需要特殊处理因为有二级菜单
+ Button = buttons
+ });
+ }
+ else if (menu.MenuType == SysResourceConst.LINK || menu.MenuType == SysResourceConst.IFRAME)//如果是内链或者外链
+ {
+ //直接加到资源列表
+ roleGrantResourceMenus.Add(new ResTreeSelector.RoleGrantResourceMenu
+ {
+ Id = menu.Id,
+ ParentId = parent.Id,
+ ParentName = parent.Title,
+ Module = moduleId,
+ Title = menu.Title
+ });
+ }
+ }
+ }
+ else
+ {
+ //否则就将自己加到一级目录里面
+ roleGrantResourceMenus.Add(new ResTreeSelector.RoleGrantResourceMenu
+ {
+ Id = parent.Id,
+ ParentId = parent.Id,
+ ParentName = parent.Title,
+ Module = moduleId
+ });
+ }
+ }
+ else
+ {
+ //就将自己加到一级目录里面
+ var roleGrantResourcesButtons = new ResTreeSelector.RoleGrantResourceMenu
+ {
+ Id = parent.Id,
+ ParentId = parent.Id,
+ ParentName = parent.Title,
+ Module = moduleId,
+ Title = parent.Title
+ };
+ //如果菜单类型是菜单
+ if (parent.MenuType == SysResourceConst.MENU)
+ {
+ //获取菜单下按钮集合并转换成对应实体
+ var buttonList = ownButtonList.Where(it => it.ParentId == parent.Id).ToList();
+ roleGrantResourcesButtons.Button = buttonList.Adapt>();
+ }
+ roleGrantResourceMenus.Add(roleGrantResourcesButtons);
+ }
+ }
+ return roleGrantResourceMenus;
+ }
+
+ #endregion
+}
diff --git a/api/SimpleAdmin/SimpleAdmin.Application/Services/Organization/User/Dto/UserInput.cs b/api/SimpleAdmin/SimpleAdmin.Application/Services/Organization/User/Dto/UserInput.cs
new file mode 100644
index 0000000000000000000000000000000000000000..d3dd86e43540008b92fa47109aaf2a794f2c7fcc
--- /dev/null
+++ b/api/SimpleAdmin/SimpleAdmin.Application/Services/Organization/User/Dto/UserInput.cs
@@ -0,0 +1,18 @@
+// Copyright (c) 2022-Now 少林寺驻北固山办事处大神父王喇嘛
+//
+// SimpleAdmin 基于 Apache License Version 2.0 协议发布,可用于商业项目,但必须遵守以下补充条款:
+// 1.请不要删除和修改根目录下的LICENSE文件。
+// 2.请不要删除和修改SimpleAdmin源码头部的版权声明。
+// 3.分发源码时候,请注明软件出处 https://gitee.com/dotnetmoyu/SimpleAdmin
+// 4.基于本软件的作品,只能使用 SimpleAdmin 作为后台服务,除外情况不可商用且不允许二次分发或开源。
+// 5.请不得将本软件应用于危害国家安全、荣誉和利益的行为,不能以任何形式用于非法为目的的行为。
+// 6.任何基于本软件而产生的一切法律纠纷和责任,均于我司无关。
+
+namespace SimpleAdmin.Application;
+
+///
+/// 业务用户导入
+///
+public class BizUserImportInput : SysUserImportInput
+{
+}
diff --git a/api/SimpleAdmin/SimpleAdmin.Application/Services/Organization/User/Dto/UserOutput.cs b/api/SimpleAdmin/SimpleAdmin.Application/Services/Organization/User/Dto/UserOutput.cs
new file mode 100644
index 0000000000000000000000000000000000000000..81562dd2489e52e9136d43ede483a6bc4acc856b
--- /dev/null
+++ b/api/SimpleAdmin/SimpleAdmin.Application/Services/Organization/User/Dto/UserOutput.cs
@@ -0,0 +1,18 @@
+// Copyright (c) 2022-Now 少林寺驻北固山办事处大神父王喇嘛
+//
+// SimpleAdmin 基于 Apache License Version 2.0 协议发布,可用于商业项目,但必须遵守以下补充条款:
+// 1.请不要删除和修改根目录下的LICENSE文件。
+// 2.请不要删除和修改SimpleAdmin源码头部的版权声明。
+// 3.分发源码时候,请注明软件出处 https://gitee.com/dotnetmoyu/SimpleAdmin
+// 4.基于本软件的作品,只能使用 SimpleAdmin 作为后台服务,除外情况不可商用且不允许二次分发或开源。
+// 5.请不得将本软件应用于危害国家安全、荣誉和利益的行为,不能以任何形式用于非法为目的的行为。
+// 6.任何基于本软件而产生的一切法律纠纷和责任,均于我司无关。
+
+namespace SimpleAdmin.Application;
+
+///
+/// 业务用户导出
+///
+public class BizUserExportOutput : SysUserExportOutput
+{
+}
diff --git a/api/SimpleAdmin/SimpleAdmin.Application/Services/User/IUserService.cs b/api/SimpleAdmin/SimpleAdmin.Application/Services/Organization/User/IUserService.cs
similarity index 74%
rename from api/SimpleAdmin/SimpleAdmin.Application/Services/User/IUserService.cs
rename to api/SimpleAdmin/SimpleAdmin.Application/Services/Organization/User/IUserService.cs
index 8655071d04c80f4e0511fb21262612937e1d7dac..57b11e6f7658d65b6f8058195a440ffbc6bdeb83 100644
--- a/api/SimpleAdmin/SimpleAdmin.Application/Services/User/IUserService.cs
+++ b/api/SimpleAdmin/SimpleAdmin.Application/Services/Organization/User/IUserService.cs
@@ -1,4 +1,14 @@
-namespace SimpleAdmin.Application;
+// Copyright (c) 2022-Now 少林寺驻北固山办事处大神父王喇嘛
+//
+// SimpleAdmin 基于 Apache License Version 2.0 协议发布,可用于商业项目,但必须遵守以下补充条款:
+// 1.请不要删除和修改根目录下的LICENSE文件。
+// 2.请不要删除和修改SimpleAdmin源码头部的版权声明。
+// 3.分发源码时候,请注明软件出处 https://gitee.com/dotnetmoyu/SimpleAdmin
+// 4.基于本软件的作品,只能使用 SimpleAdmin 作为后台服务,除外情况不可商用且不允许二次分发或开源。
+// 5.请不得将本软件应用于危害国家安全、荣誉和利益的行为,不能以任何形式用于非法为目的的行为。
+// 6.任何基于本软件而产生的一切法律纠纷和责任,均于我司无关。
+
+namespace SimpleAdmin.Application;
///
/// 人员管理服务
@@ -12,7 +22,7 @@ public interface IUserService : ITransient
///
/// 查询参数
/// 人员列表
- Task> UserSelector(UserSelectorInput input);
+ Task> Selector(UserSelectorInput input);
///
/// 用户分页查询
@@ -26,14 +36,14 @@ public interface IUserService : ITransient
///
/// 用户ID
///
- Task> OwnRole(BaseIdInput input);
+ Task> OwnRole(BaseIdInput input);
///
/// 角色选择器
///
///
///
- Task> RoleSelector(RoleSelectorInput input);
+ Task> RoleSelector(RoleSelectorInput input);
///
/// 人员详情
@@ -101,7 +111,7 @@ public interface IUserService : ITransient
///
/// Id列表
///
- Task Delete(List input);
+ Task Delete(BaseIdListInput input);
#endregion 删除
@@ -142,4 +152,4 @@ public interface IUserService : ITransient
Task Edits(BatchEditInput input);
#endregion 导入导出
-}
\ No newline at end of file
+}
diff --git a/api/SimpleAdmin/SimpleAdmin.Application/Services/User/UserService.cs b/api/SimpleAdmin/SimpleAdmin.Application/Services/Organization/User/UserService.cs
similarity index 65%
rename from api/SimpleAdmin/SimpleAdmin.Application/Services/User/UserService.cs
rename to api/SimpleAdmin/SimpleAdmin.Application/Services/Organization/User/UserService.cs
index 39dd4513973fb24ec9e8c4fbf2ddab4eedd1a59c..7ca05da76fab59f3b33eda85424ff18039d154ad 100644
--- a/api/SimpleAdmin/SimpleAdmin.Application/Services/User/UserService.cs
+++ b/api/SimpleAdmin/SimpleAdmin.Application/Services/Organization/User/UserService.cs
@@ -1,4 +1,14 @@
-namespace SimpleAdmin.Application;
+// Copyright (c) 2022-Now 少林寺驻北固山办事处大神父王喇嘛
+//
+// SimpleAdmin 基于 Apache License Version 2.0 协议发布,可用于商业项目,但必须遵守以下补充条款:
+// 1.请不要删除和修改根目录下的LICENSE文件。
+// 2.请不要删除和修改SimpleAdmin源码头部的版权声明。
+// 3.分发源码时候,请注明软件出处 https://gitee.com/dotnetmoyu/SimpleAdmin
+// 4.基于本软件的作品,只能使用 SimpleAdmin 作为后台服务,除外情况不可商用且不允许二次分发或开源。
+// 5.请不得将本软件应用于危害国家安全、荣誉和利益的行为,不能以任何形式用于非法为目的的行为。
+// 6.任何基于本软件而产生的一切法律纠纷和责任,均于我司无关。
+
+namespace SimpleAdmin.Application;
///
///
@@ -6,20 +16,13 @@
public class UserService : DbRepository, IUserService
{
private readonly ISysUserService _sysUserService;
- private readonly IRoleService _roleService;
- private readonly ISysOrgService _sysOrgService;
+ private readonly ISysRoleService _sysRoleService;
private readonly IImportExportService _importExportService;
- public UserService(
- ISysUserService sysUserService,
- IRoleService roleService,
- ISysOrgService sysOrgService,
- IImportExportService importExportService
- )
+ public UserService(ISysUserService sysUserService, ISysRoleService sysRoleService, IImportExportService importExportService)
{
_sysUserService = sysUserService;
- _roleService = roleService;
- _sysOrgService = sysOrgService;
+ _sysRoleService = sysRoleService;
_importExportService = importExportService;
}
@@ -35,22 +38,22 @@ public class UserService : DbRepository, IUserService
}
///
- public async Task> OwnRole(BaseIdInput input)
+ public async Task> OwnRole(BaseIdInput input)
{
return await _sysUserService.OwnRole(input);//获取角色
}
///
- public async Task> UserSelector(UserSelectorInput input)
+ public async Task> Selector(UserSelectorInput input)
{
//获取数据范围
var dataScope = await _sysUserService.GetLoginUserApiDataScope();
if (dataScope == null)
- return await _sysUserService.UserSelector(input);//查询
+ return await _sysUserService.Selector(input);//查询
if (dataScope.Count > 0)
{
input.OrgIds = dataScope;//赋值机构列表
- return await _sysUserService.UserSelector(input);//查询
+ return await _sysUserService.Selector(input);//查询
}
//返回自己
return new SqlSugarPagedList
@@ -59,29 +62,36 @@ public class UserService : DbRepository, IUserService
Pages = 1,
HasPrevPages = false,
HasNextPages = false,
- Records = new[] { new UserSelectorOutPut { Account = UserManager.UserAccount, Id = UserManager.UserId, Name = UserManager.Name, OrgId = UserManager.OrgId } }
+ List = new[]
+ {
+ new UserSelectorOutPut
+ {
+ Account = UserManager.UserAccount, Id = UserManager.UserId,
+ Name = UserManager.Name, OrgId = UserManager.OrgId
+ }
+ }
};
}
///
- public async Task> RoleSelector(RoleSelectorInput input)
+ public async Task> RoleSelector(RoleSelectorInput input)
{
- var sysRoles = new SqlSugarPagedList()
+ var sysRoles = new SqlSugarPagedList
{
Total = 1,
Pages = 1,
HasPrevPages = false,
HasNextPages = false,
- Records = new List()
+ List = new List()
};
//获取数据范围
var dataScope = await _sysUserService.GetLoginUserApiDataScope();
if (dataScope == null)
- sysRoles = await _roleService.RoleSelector(input);//获取角色选择器列表
+ sysRoles = await _sysRoleService.RoleSelector(input);//获取角色选择器列表
else if (dataScope.Count > 0)//如果有机构
{
input.OrgIds = dataScope;//将数据范传进去
- sysRoles = await _roleService.RoleSelector(input);//获取角色选择器列表
+ sysRoles = await _sysRoleService.RoleSelector(input);//获取角色选择器列表
}
return sysRoles;
}
@@ -90,6 +100,9 @@ public class UserService : DbRepository, IUserService
public async Task Detail(BaseIdInput input)
{
var user = await _sysUserService.Detail(input);
+ var errorMessage = "您没有权限查看该人员";
+ //判断数据范围
+ await _sysUserService.CheckApiDataScope(user.OrgId, user.CreateUserId, errorMessage);
return user;
}
@@ -100,7 +113,7 @@ public class UserService : DbRepository, IUserService
///
public async Task Add(UserAddInput input)
{
- await CheckInput(input, SimpleAdminConst.Add);//检查参数
+ await CheckInput(input, SystemConst.ADD);//检查参数
await _sysUserService.Add(input);//添加
}
@@ -111,7 +124,7 @@ public class UserService : DbRepository, IUserService
///
public async Task Edit(UserEditInput input)
{
- await CheckInput(input, SimpleAdminConst.Edit);//检查参数
+ await CheckInput(input, SystemConst.EDIT);//检查参数
await _sysUserService.Edit(input);//编辑
}
@@ -120,8 +133,9 @@ public class UserService : DbRepository, IUserService
{
//获取数据范围
var dataScope = await _sysUserService.GetLoginUserApiDataScope();
- var ids = input.Ids;//获取用户id
- var sysUsers = await GetListAsync(it => ids.Contains(it.Id), it => new SysUser { OrgId = it.OrgId, CreateUserId = it.CreateUserId });//根据用户ID获取机构id、
+ var ids = input.Ids;
+ var sysUsers = await GetListAsync(it => ids.Contains(it.Id),
+ it => new SysUser { OrgId = it.OrgId, CreateUserId = it.CreateUserId });//根据用户ID获取机构id、
sysUsers.ForEach(it =>
{
if (dataScope != null && !dataScope.Contains(it.OrgId) && it.CreateUserId != UserManager.UserId)
@@ -133,28 +147,28 @@ public class UserService : DbRepository, IUserService
///
public async Task DisableUser(BaseIdInput input)
{
- await CheckPermission(input.Id, SimpleAdminConst.Disable);//检查权限
+ await CheckInput(input.Id, SystemConst.DISABLE);//检查权限
await _sysUserService.DisableUser(input);//禁用
}
///
public async Task EnableUser(BaseIdInput input)
{
- await CheckPermission(input.Id, SimpleAdminConst.Enable);//检查权限
+ await CheckInput(input.Id, SystemConst.ENABLE);//检查权限
await _sysUserService.EnableUser(input);//启用
}
///
public async Task GrantRole(UserGrantRoleInput input)
{
- await CheckPermission(input.Id, SimpleAdminConst.Disable);//检查权限
+ await CheckInput(input.Id, SystemConst.DISABLE);//检查权限
await _sysUserService.GrantRole(input);//授权
}
///
public async Task ResetPassword(BaseIdInput input)
{
- await CheckPermission(input.Id, SimpleAdminConst.ResestPwd);//检查权限
+ await CheckInput(input.Id, SystemConst.RESET_PWD);//检查权限
await _sysUserService.ResetPassword(input);//重置密码
}
@@ -163,30 +177,18 @@ public class UserService : DbRepository, IUserService
#region 删除
///
- public async Task Delete(List input)
+ public async Task Delete(BaseIdListInput input)
{
//获取所有ID
- var ids = input.Select(it => it.Id).ToList();
- //获取数据范围
- var dataScope = await _sysUserService.GetLoginUserApiDataScope();
+ var ids = input.Ids;
+
//获取用户下信息
var users = await GetListAsync(it => ids.Contains(it.Id), it => new SysUser { OrgId = it.OrgId, Id = it.Id });
- if (dataScope == null)//全部数据权限
- {
- await _sysUserService.Delete(input);//删除
- return;
- }
- if (dataScope.Count > 0)//如果有机构
- {
- var orgIds = users.Select(it => it.OrgId).ToList();//获取所有用户机构列表
- if (!dataScope.ContainsAll(orgIds))
- throw Oops.Bah($"您没有权限删除这些人员");
- await _sysUserService.Delete(input);//删除
- }
- else
- {
- throw Oops.Bah($"您没有权限删除这些人员");
- }
+ //检查数据范围
+ var orgIds = users.Select(it => it.OrgId).ToList();
+ var createUserIds = users.Select(it => it.CreateUserId.GetValueOrDefault()).ToList();
+ await _sysUserService.CheckApiDataScope(orgIds, createUserIds, "您没有权限删除这些人员");
+ await _sysUserService.Delete(input);//删除
}
#endregion 删除
@@ -213,8 +215,7 @@ public class UserService : DbRepository, IUserService
importPreview.Data = await CheckImport(importPreview.Data, dataScope);//检查导入数据
return importPreview;
}
- else
- throw Oops.Bah("您无权导入用户");
+ throw Oops.Bah("您无权导入用户");
}
///
@@ -241,7 +242,7 @@ public class UserService : DbRepository, IUserService
await InsertOrBulkCopy(sysUsers);// 数据导入
return result;
}
- else throw Oops.Bah("您无权导入用户");
+ throw Oops.Bah("您无权导入用户");
}
#endregion 导入导出
@@ -256,53 +257,26 @@ public class UserService : DbRepository, IUserService
private async Task CheckInput(SysUser sysUser, string operate)
{
var errorMessage = $"您没有权限{operate}该机构下的人员";
- //获取数据范围
- var dataScope = await _sysUserService.GetLoginUserApiDataScope();
- if (dataScope.Count > 0)//如果有机构
+ if (sysUser.Id != SimpleAdminConst.ZERO)
{
- if (!dataScope.Contains(sysUser.OrgId))//判断父ID是否在数据范围
- throw Oops.Bah(errorMessage);
- }
- else
- {
- //如果ID大于0表示编辑
- if (sysUser.Id > 0)
- {
- //检查权限
- await CheckPermission(sysUser.Id, operate, dataScope);
- }
- else
- {
- throw Oops.Bah(errorMessage);
- }
+ var user = await _sysUserService.GetUserById(sysUser.Id);
+ sysUser.CreateUserId = user.CreateUserId;
}
+ //检查数据范围
+ await _sysUserService.CheckApiDataScope(sysUser.OrgId, sysUser.CreateUserId.GetValueOrDefault(), errorMessage);
}
///
- /// 检查权限
+ /// 检查输入参数
///
/// 用户ID
- /// 操作名称
- /// 数据范围
- ///
- private async Task CheckPermission(long userId, string operate, List dataScope = null)
+ /// 操作
+ private async Task CheckInput(long userId, string operate)
{
var errorMessage = $"您没有权限{operate}该机构下的人员";
- //获取数据范围
- if (dataScope == null)
- dataScope = await _sysUserService.GetLoginUserApiDataScope();
- if (dataScope is { Count: > 0 })//如果有机构
- {
- //获取用户信息
- var user = await _sysUserService.GetUserById(userId);
- if (!dataScope.Contains(user.OrgId))//判断用户机构ID是否在数据范围
- throw Oops.Bah(errorMessage);
- }
- else if (dataScope is { Count: 0 })//如果没有机构
- {
- if (userId != UserManager.UserId)//如果不是自己
- throw Oops.Bah(errorMessage);
- }
+ var sysUser = await _sysUserService.GetUserById(userId);
+ //检查数据范围
+ await _sysUserService.CheckApiDataScope(sysUser.OrgId, sysUser.CreateUserId.GetValueOrDefault(), errorMessage);
}
///
@@ -314,7 +288,7 @@ public class UserService : DbRepository, IUserService
///
public async Task> CheckImport(List data, List dataScope, bool clearError = false)
{
- var errorMessage = $"没有权限";
+ var errorMessage = "没有权限";
//先经过系统用户检查
var bizUsers = await _sysUserService.CheckImport(data, clearError);
bizUsers.ForEach(it =>
@@ -347,7 +321,7 @@ public class UserService : DbRepository, IUserService
var dataScope = await _sysUserService.GetLoginUserApiDataScope();
//动态查询条件
var exp = Expressionable.Create();
- exp.And(u => u.Account != RoleConst.SuperAdmin);
+ exp.And(u => u.Account != SysRoleConst.SUPER_ADMIN);
exp.AndIF(dataScope is { Count: > 0 }, u => dataScope.Contains(u.OrgId));//用户机构在数据范围内
exp.AndIF(dataScope is { Count: 0 }, u => u.Id == UserManager.UserId);//用户ID等于自己
input.Expression = exp;
@@ -355,4 +329,4 @@ public class UserService : DbRepository, IUserService
}
#endregion 方法
-}
\ No newline at end of file
+}
diff --git a/api/SimpleAdmin/SimpleAdmin.Application/Services/User/Dto/UserInput.cs b/api/SimpleAdmin/SimpleAdmin.Application/Services/User/Dto/UserInput.cs
deleted file mode 100644
index 30d389168ced1dbf1a048f916f4f1119d9178624..0000000000000000000000000000000000000000
--- a/api/SimpleAdmin/SimpleAdmin.Application/Services/User/Dto/UserInput.cs
+++ /dev/null
@@ -1,8 +0,0 @@
-namespace SimpleAdmin.Application;
-
-///
-/// 业务用户导入
-///
-public class BizUserImportInput : SysUserImportInput
-{
-}
\ No newline at end of file
diff --git a/api/SimpleAdmin/SimpleAdmin.Application/Services/User/Dto/UserOutput.cs b/api/SimpleAdmin/SimpleAdmin.Application/Services/User/Dto/UserOutput.cs
deleted file mode 100644
index 613c09fe591aa998942d213f45ace0622341ff19..0000000000000000000000000000000000000000
--- a/api/SimpleAdmin/SimpleAdmin.Application/Services/User/Dto/UserOutput.cs
+++ /dev/null
@@ -1,8 +0,0 @@
-namespace SimpleAdmin.Application;
-
-///
-/// 业务用户导出
-///
-public class BizUserExportOutput : SysUserExportOutput
-{
-}
\ No newline at end of file
diff --git a/api/SimpleAdmin/SimpleAdmin.Application/SimpleAdmin.Application.csproj b/api/SimpleAdmin/SimpleAdmin.Application/SimpleAdmin.Application.csproj
index 375b450dd1a7ca6ee5587a2b8f70ac87d0debe46..22c3f5a90f4b484fbb6ebffe7e2e90638e4615a3 100644
--- a/api/SimpleAdmin/SimpleAdmin.Application/SimpleAdmin.Application.csproj
+++ b/api/SimpleAdmin/SimpleAdmin.Application/SimpleAdmin.Application.csproj
@@ -1,29 +1,27 @@
+
+
+
+
+
+
-
- net7.0;net6.0
- 1701;1702;8616;1591;8618;8619;8629;8602;8603;8604;8625;8765
- SimpleAdmin.Application.xml
- enable
-
+
+
+
-
-
-
-
-
+
+
+ PreserveNewest
+
+
+ PreserveNewest
+
+
-
-
-
-
-
- PreserveNewest
-
-
- PreserveNewest
-
-
+
+
+
diff --git a/api/SimpleAdmin/SimpleAdmin.Application/SimpleAdmin.Application.xml b/api/SimpleAdmin/SimpleAdmin.Application/SimpleAdmin.Application.xml
index d59513f34a0200ffbab1c73808c56b1df6b7c8d5..30b7b07eee1e43376d8834d503e3e1778716f25d 100644
--- a/api/SimpleAdmin/SimpleAdmin.Application/SimpleAdmin.Application.xml
+++ b/api/SimpleAdmin/SimpleAdmin.Application/SimpleAdmin.Application.xml
@@ -4,44 +4,14 @@
SimpleAdmin.Application
-
-
- 代码生成基础
-
-
-
-
- 姓名
-
-
-
-
- 性别
-
-
-
-
- 民族
-
-
-
-
- 年龄
-
-
-
+
- 生日
+ 机构
-
+
- 存款
-
-
-
-
- 排序码
+ 岗位
@@ -49,276 +19,6 @@
系统配置
-
-
- 测试分页查询参数
-
-
-
-
- 姓名
-
-
-
-
- 组织机构Id
-
-
-
-
- 添加测试参数
-
-
-
-
- 姓名
-
-
-
-
- 性别
-
-
-
-
- 民族
-
-
-
-
- 年龄
-
-
-
-
- 生日
-
-
-
-
- 排序码
-
-
-
-
- 存款
-
-
-
-
- 修改测试参数
-
-
-
-
- Id
-
-
-
-
- 测试导入
-
-
-
-
- 姓名
-
-
-
-
- 性别
-
-
-
-
- 民族
-
-
-
-
- 年龄
-
-
-
-
- 生日
-
-
-
-
- 排序码
-
-
-
-
- 存款
-
-
-
-
- 测试导出
-
-
-
-
- 姓名
-
-
-
-
- 性别
-
-
-
-
- 民族
-
-
-
-
- 年龄
-
-
-
-
- 生日
-
-
-
-
- 排序码
-
-
-
-
- 存款
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 检查输入参数
-
-
-
-
-
- 获取Sqlsugar的ISugarQueryable
-
-
-
-
-
-
-
-
-
- 测试服务
-
-
-
-
- 测试分页查询
-
- 查询参数
- 测试分页
-
-
-
- 测试列表查询
-
- 查询参数
- 测试列表
-
-
-
- 测试详情
-
- Id参数
- 详细信息
-
-
-
- 添加测试
-
- 添加参数
-
-
-
-
- 修改测试
-
- 编辑参数
-
-
-
-
- 删除测试
-
- 删除参数
-
-
-
-
- 测试导入模板下载
-
- 模板
-
-
-
- 测试导入预览
-
- 预览参数
- 预览结果
-
-
-
- 测试导入
-
-
-
-
-
-
- 测试导出
-
-
-
-
机构服务
@@ -338,7 +38,7 @@
机构复制参数
-
+
删除机构
@@ -391,7 +91,7 @@
-
+
@@ -416,7 +116,7 @@
添加参数
-
+
删除岗位
@@ -437,7 +137,7 @@
查询参数
分页列表
-
+
岗位选择器
@@ -451,6 +151,13 @@
+
+
+ 岗位树形结构
+
+
+
+
@@ -459,19 +166,22 @@
+
+
+
-
+
+
+
+
-
-
-
-
+
@@ -481,6 +191,144 @@
参数
操作名称
+
+
+ 角色拥有资源
+
+ 角色id
+ 资源类型
+ 角色拥有资源信息
+
+
+
+ 获取角色下的用户
+
+ 角色ID
+
+
+
+
+ 分页查询角色
+
+ 查询参数
+
+
+
+
+ 角色选择器
+
+
+
+
+
+
+ 获取角色树
+
+ 角色树
+
+
+
+
+ 角色详情
+
+ 角色Id
+
+
+
+
+ 资源树选择器
+
+
+
+
+
+ 添加角色
+
+ 添加参数
+
+
+
+
+ 编辑角色
+
+ 编辑参数
+
+
+
+
+ 给角色授权
+
+ 授权参数
+
+
+
+
+ 给角色授权用户
+
+ 授权信息
+
+
+
+
+ 删除角色
+
+ 删除参数
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 检查输入参数
+
+
+
+
+
+ 获取授权菜单
+
+ 模块Id
+ 拥有菜单列表
+ 拥有权限按钮列表
+
+
业务用户导入
@@ -496,7 +344,7 @@
人员管理服务
-
+
人员选择器
@@ -573,7 +421,7 @@
授权参数
-
+
删除用户
@@ -625,7 +473,7 @@
-
+
@@ -655,7 +503,7 @@
-
+
@@ -677,14 +525,12 @@
操作类型
-
+
- 检查权限
+ 检查输入参数
用户ID
- 操作名称
- 数据范围
-
+ 操作
diff --git a/api/SimpleAdmin/SimpleAdmin.Application/Startup.cs b/api/SimpleAdmin/SimpleAdmin.Application/Startup.cs
index 03a27da9f55e895c0b81fc7ec5128c329c58f418..f20b884da8ce083986833449eab035e5e321cf90 100644
--- a/api/SimpleAdmin/SimpleAdmin.Application/Startup.cs
+++ b/api/SimpleAdmin/SimpleAdmin.Application/Startup.cs
@@ -1,4 +1,12 @@
-using System.Reflection;
+// Copyright (c) 2022-Now 少林寺驻北固山办事处大神父王喇嘛
+//
+// SimpleAdmin 基于 Apache License Version 2.0 协议发布,可用于商业项目,但必须遵守以下补充条款:
+// 1.请不要删除和修改根目录下的LICENSE文件。
+// 2.请不要删除和修改SimpleAdmin源码头部的版权声明。
+// 3.分发源码时候,请注明软件出处 https://gitee.com/dotnetmoyu/SimpleAdmin
+// 4.基于本软件的作品,只能使用 SimpleAdmin 作为后台服务,除外情况不可商用且不允许二次分发或开源。
+// 5.请不得将本软件应用于危害国家安全、荣誉和利益的行为,不能以任何形式用于非法为目的的行为。
+// 6.任何基于本软件而产生的一切法律纠纷和责任,均于我司无关。
namespace SimpleAdmin.Application;
@@ -26,4 +34,4 @@ public class Startup : AppStartup
var settings = App.GetOptions();
CodeFirstUtils.CodeFirst(settings, fullName);//CodeFirst
}
-}
\ No newline at end of file
+}
diff --git "a/api/SimpleAdmin/SimpleAdmin.Background/A\345\201\234\346\255\242\346\234\215\345\212\241.bat" "b/api/SimpleAdmin/SimpleAdmin.Background/A\345\201\234\346\255\242\346\234\215\345\212\241.bat"
deleted file mode 100644
index 75a8ec0c27d83e24c5ce1ed188c5803e3d511677..0000000000000000000000000000000000000000
--- "a/api/SimpleAdmin/SimpleAdmin.Background/A\345\201\234\346\255\242\346\234\215\345\212\241.bat"
+++ /dev/null
@@ -1,9 +0,0 @@
-@echo off
-color 0e
-@echo ==================================
-@echo ѣҼļùԱʽ
-@echo ==================================
-@echo Start Stop SimpleAdmin.Background
-
-Net stop SimpleAdmin.Background
-pause
\ No newline at end of file
diff --git "a/api/SimpleAdmin/SimpleAdmin.Background/A\345\215\270\350\275\275\346\234\215\345\212\241.bat" "b/api/SimpleAdmin/SimpleAdmin.Background/A\345\215\270\350\275\275\346\234\215\345\212\241.bat"
deleted file mode 100644
index 8a2989cef400110a8c4e2c87e90897b55598ed2b..0000000000000000000000000000000000000000
--- "a/api/SimpleAdmin/SimpleAdmin.Background/A\345\215\270\350\275\275\346\234\215\345\212\241.bat"
+++ /dev/null
@@ -1,10 +0,0 @@
-@echo off
-color 0e
-@echo ==================================
-@echo ѣҼļùԱʽ
-@echo ==================================
-@echo Start Remove SimpleAdmin.Background
-
-Net stop SimpleAdmin.Background
-sc delete SimpleAdmin.Background
-pause
\ No newline at end of file
diff --git "a/api/SimpleAdmin/SimpleAdmin.Background/A\345\220\257\345\212\250\346\234\215\345\212\241.bat" "b/api/SimpleAdmin/SimpleAdmin.Background/A\345\220\257\345\212\250\346\234\215\345\212\241.bat"
deleted file mode 100644
index 55970d7484cb8b8d703b7b867cba201feb06abd6..0000000000000000000000000000000000000000
--- "a/api/SimpleAdmin/SimpleAdmin.Background/A\345\220\257\345\212\250\346\234\215\345\212\241.bat"
+++ /dev/null
@@ -1,9 +0,0 @@
-@echo off
-color 0e
-@echo ==================================
-@echo ѣҼļùԱʽ
-@echo ==================================
-@echo Start Start SimpleAdmin.Background
-
-Net Start SimpleAdmin.Background
-pause
\ No newline at end of file
diff --git "a/api/SimpleAdmin/SimpleAdmin.Background/A\345\256\211\350\243\205\346\234\215\345\212\241.bat" "b/api/SimpleAdmin/SimpleAdmin.Background/A\345\256\211\350\243\205\346\234\215\345\212\241.bat"
deleted file mode 100644
index 065b14c15f284c0e990eada7c5d2b51ca8b368cd..0000000000000000000000000000000000000000
--- "a/api/SimpleAdmin/SimpleAdmin.Background/A\345\256\211\350\243\205\346\234\215\345\212\241.bat"
+++ /dev/null
@@ -1,12 +0,0 @@
-@echo off
-color 0e
-@echo ==================================
-@echo ѣҼļùԱʽ
-@echo ==================================
-@echo Start Install SimpleAdmin.Background
-
-cd ..
-sc create SimpleAdmin.Background binPath=%~dp0SimpleAdmin.Background.exe start= auto
-sc description SimpleAdmin.Background "SimpleAdmin̨"
-Net Start SimpleAdmin.Background
-pause
\ No newline at end of file
diff --git a/api/SimpleAdmin/SimpleAdmin.Background/Background.Development.json b/api/SimpleAdmin/SimpleAdmin.Background/Background.Development.json
deleted file mode 100644
index fead2dc28335afed20ac781fd6b0adb39b5a978e..0000000000000000000000000000000000000000
--- a/api/SimpleAdmin/SimpleAdmin.Background/Background.Development.json
+++ /dev/null
@@ -1,10 +0,0 @@
-{
- //mqtt设置
- "MqttSettings": {
- "Host": "127.0.0.1",
- "Port": 1883,
- "UserName": "admin",
- "SecretKey": "admin",
- "ClientId": "SimpleAdminBackground"
- },
-}
\ No newline at end of file
diff --git a/api/SimpleAdmin/SimpleAdmin.Background/Background.Production.json b/api/SimpleAdmin/SimpleAdmin.Background/Background.Production.json
deleted file mode 100644
index fead2dc28335afed20ac781fd6b0adb39b5a978e..0000000000000000000000000000000000000000
--- a/api/SimpleAdmin/SimpleAdmin.Background/Background.Production.json
+++ /dev/null
@@ -1,10 +0,0 @@
-{
- //mqtt设置
- "MqttSettings": {
- "Host": "127.0.0.1",
- "Port": 1883,
- "UserName": "admin",
- "SecretKey": "admin",
- "ClientId": "SimpleAdminBackground"
- },
-}
\ No newline at end of file
diff --git a/api/SimpleAdmin/SimpleAdmin.Background/Dto/MqttConnected.cs b/api/SimpleAdmin/SimpleAdmin.Background/Dto/MqttConnected.cs
deleted file mode 100644
index 05e3475cdfe55e3fa512947da9161c036ea9d70d..0000000000000000000000000000000000000000
--- a/api/SimpleAdmin/SimpleAdmin.Background/Dto/MqttConnected.cs
+++ /dev/null
@@ -1,17 +0,0 @@
-namespace SimpleAdmin.Background;
-
-///
-/// Mqtt连接
-///
-public class MqttConnected
-{
- ///
- /// 用户名
- ///
- public string UserName { get; set; }
-
- ///
- /// 客户端ID
- ///
- public string Clientid { get; set; }
-}
\ No newline at end of file
diff --git a/api/SimpleAdmin/SimpleAdmin.Background/GlobalUsings.cs b/api/SimpleAdmin/SimpleAdmin.Background/GlobalUsings.cs
deleted file mode 100644
index 575db6c2b2c53222ad22640edf45a63dfc089db5..0000000000000000000000000000000000000000
--- a/api/SimpleAdmin/SimpleAdmin.Background/GlobalUsings.cs
+++ /dev/null
@@ -1 +0,0 @@
-global using SimpleMQTT;
\ No newline at end of file
diff --git a/api/SimpleAdmin/SimpleAdmin.Background/MqttWorker.cs b/api/SimpleAdmin/SimpleAdmin.Background/MqttWorker.cs
deleted file mode 100644
index 1a50dc533e082c35e00778966141aa7c328cb8f2..0000000000000000000000000000000000000000
--- a/api/SimpleAdmin/SimpleAdmin.Background/MqttWorker.cs
+++ /dev/null
@@ -1,67 +0,0 @@
-using Masuit.Tools;
-using NewLife.MQTT;
-using SimpleAdmin.Core;
-using SimpleAdmin.Cache;
-
-namespace SimpleAdmin.Background;
-
-///
-/// mqtt̨
-///
-public class MqttWorker : BackgroundService
-{
- private readonly ILogger _logger;
- private readonly ISimpleCacheService _simpleCacheService;
- private readonly MqttClient _mqtt;
-
- public MqttWorker(ILogger logger, ISimpleCacheService simpleCacheService, IMqttClientManager mqttClientManager)
- {
- _logger = logger;
- this._simpleCacheService = simpleCacheService;
- this._mqtt = mqttClientManager.GetClient();
- }
-
- protected override async Task ExecuteAsync(CancellationToken stoppingToken)
- {
- //豸
- await _mqtt.SubscribeAsync("$SYS/brokers/+/clients/+/+", (e) =>
- {
- var topicList = e.Topic.Split("/");///ָ
- var clientId = topicList[topicList.Length - 2];//ȡͻID
- if (clientId.Contains("_"))//жϿͻIDǷ»»߱ʾwebû¼
- {
- var userId = clientId.Split("_")[0];
- //ȡredisǰûtokenϢб
- var tokenInfos = _simpleCacheService.HashGetOne>(CacheConst.Cache_UserToken, userId);
- if (tokenInfos != null)
- {
- var connectEvent = topicList.Last();//ȡ¼ж
- if (connectEvent == "connected")//
- {
- _logger.LogInformation($"豸{clientId}");
- var token = _simpleCacheService.Get(CacheConst.Cache_MqttClientUser + clientId);//ȡmqttͻIDӦûtoken
- if (token == null) return;//ûtokenֱ˳
- //ȡredisеǰtoken
- var tokenInfo = tokenInfos.Where(it => it.Token == token).FirstOrDefault();
- if (tokenInfo != null)
- {
- tokenInfo.ClientIds.Add(clientId);//ӵͻб
- _simpleCacheService.HashAdd(CacheConst.Cache_UserToken, userId, tokenInfos);//Redis
- }
- }
- else //
- {
- _logger.LogInformation($"豸{clientId}");
- //ȡǰͻIDڵtokenϢ
- var tokenInfo = tokenInfos.Where(it => it.ClientIds.Contains(clientId)).FirstOrDefault();
- if (tokenInfo != null)
- {
- tokenInfo.ClientIds.RemoveWhere(it => it == clientId);//ӿͻбɾ
- _simpleCacheService.HashAdd(CacheConst.Cache_UserToken, userId, tokenInfos);//Redis
- }
- }
- }
- }
- });
- }
-}
\ No newline at end of file
diff --git a/api/SimpleAdmin/SimpleAdmin.Background/SimpleAdmin.Background.csproj b/api/SimpleAdmin/SimpleAdmin.Background/SimpleAdmin.Background.csproj
deleted file mode 100644
index deb8159d1acb224a30b9768635b015a59d6b18f2..0000000000000000000000000000000000000000
--- a/api/SimpleAdmin/SimpleAdmin.Background/SimpleAdmin.Background.csproj
+++ /dev/null
@@ -1,47 +0,0 @@
-
-
-
- net7.0;net6.0
- enable
- enable
- dotnet-SimpleAdmin.Background-97b50b23-4c51-4690-9027-da078c63136a
- en-US
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- PreserveNewest
-
-
- PreserveNewest
-
-
- PreserveNewest
-
-
- PreserveNewest
-
-
-
-
-
-
-
diff --git a/api/SimpleAdmin/SimpleAdmin.Background/TestWorker.cs b/api/SimpleAdmin/SimpleAdmin.Background/TestWorker.cs
deleted file mode 100644
index 6620abaa3a775edb199d92a6712c9e3b44e49a5f..0000000000000000000000000000000000000000
--- a/api/SimpleAdmin/SimpleAdmin.Background/TestWorker.cs
+++ /dev/null
@@ -1,20 +0,0 @@
-using SimpleAdmin.Cache;
-
-namespace SimpleAdmin.Background;
-
-public class TestWorker : BackgroundService
-{
- private readonly ILogger _logger;
- private readonly ISimpleCacheService _simpleCacheService;
-
- public TestWorker(ILogger logger, ISimpleCacheService simpleCacheService)
- {
- _logger = logger;
- this._simpleCacheService = simpleCacheService;
- }
-
- protected override async Task ExecuteAsync(CancellationToken stoppingToken)
- {
-
- }
-}
\ No newline at end of file
diff --git a/api/SimpleAdmin/SimpleAdmin.Cache/Cache.Development.json b/api/SimpleAdmin/SimpleAdmin.Cache/Cache.Development.json
index a136f906aa0f2210192f117534107520ad3f3dc7..6f867d57a7ad9f17109d3dc28d49db827cb8a0b0 100644
--- a/api/SimpleAdmin/SimpleAdmin.Cache/Cache.Development.json
+++ b/api/SimpleAdmin/SimpleAdmin.Cache/Cache.Development.json
@@ -1,7 +1,7 @@
{
//缓存设置
"CacheSettings": {
- "UseRedis": false, //启用redis
+ "UseRedis": true, //启用redis
"RedisSettings": {
"Address": "127.0.0.1:6379", //地址
"Password": "123456", //Redis服务密码
diff --git a/api/SimpleAdmin/SimpleAdmin.Cache/Const/CacheConst.cs b/api/SimpleAdmin/SimpleAdmin.Cache/Const/CacheConst.cs
deleted file mode 100644
index 2a47eef55f1f51c5d73100dd58da3372aa41b0c4..0000000000000000000000000000000000000000
--- a/api/SimpleAdmin/SimpleAdmin.Cache/Const/CacheConst.cs
+++ /dev/null
@@ -1,28 +0,0 @@
-namespace SimpleAdmin.Cache;
-
-///
-/// Redis常量
-///
-public class CacheConst
-{
- ///
- /// Redis Key前缀(可删除)
- ///
- public const string Cache_Prefix_Web = "SimpleAdminWeb:";
-
- ///
- /// Redis Key前缀(需要持久化,不随系统重启删除)
- ///
- public const string Cache_Prefix = "SimpleAdmin:";
-
- ///
- /// Redis Hash类型
- ///
- public const string Cache_Hash = "Hash";
-
-
- ///
- /// 用户Token缓存Key
- ///
- public const string Cache_UserToken = Cache_Prefix + "UserToken";
-}
\ No newline at end of file
diff --git a/api/SimpleAdmin/SimpleAdmin.Cache/GlobalUsing.cs b/api/SimpleAdmin/SimpleAdmin.Cache/GlobalUsing.cs
index eefbe6ddcdcc76f16e370f20c9325692c06ba210..0b4bbe17a8970914af91df1ab1823b536b8effde 100644
--- a/api/SimpleAdmin/SimpleAdmin.Cache/GlobalUsing.cs
+++ b/api/SimpleAdmin/SimpleAdmin.Cache/GlobalUsing.cs
@@ -1,4 +1,14 @@
-global using Furion;
+// Copyright (c) 2022-Now 少林寺驻北固山办事处大神父王喇嘛
+//
+// SimpleAdmin 基于 Apache License Version 2.0 协议发布,可用于商业项目,但必须遵守以下补充条款:
+// 1.请不要删除和修改根目录下的LICENSE文件。
+// 2.请不要删除和修改SimpleAdmin源码头部的版权声明。
+// 3.分发源码时候,请注明软件出处 https://gitee.com/dotnetmoyu/SimpleAdmin
+// 4.基于本软件的作品,只能使用 SimpleAdmin 作为后台服务,除外情况不可商用且不允许二次分发或开源。
+// 5.请不得将本软件应用于危害国家安全、荣誉和利益的行为,不能以任何形式用于非法为目的的行为。
+// 6.任何基于本软件而产生的一切法律纠纷和责任,均于我司无关。
+
+global using MoYu;
global using Masuit.Tools;
global using Microsoft.AspNetCore.Builder;
global using Microsoft.AspNetCore.Hosting;
@@ -6,4 +16,4 @@ global using Microsoft.Extensions.DependencyInjection;
global using NewLife.Caching;
global using NewLife.Serialization;
global using SimpleAdmin.Core;
-global using SimpleRedis;
\ No newline at end of file
+global using SimpleRedis;
diff --git a/api/SimpleAdmin/SimpleAdmin.Cache/Interface/ISimpleCacheHashService.cs b/api/SimpleAdmin/SimpleAdmin.Cache/Interface/ISimpleCacheHashService.cs
index 66496b76c22794766ed199306f686ab7aacee1da..5b3452c64530440c3e5c49e06f5386775802c759 100644
--- a/api/SimpleAdmin/SimpleAdmin.Cache/Interface/ISimpleCacheHashService.cs
+++ b/api/SimpleAdmin/SimpleAdmin.Cache/Interface/ISimpleCacheHashService.cs
@@ -1,4 +1,14 @@
-namespace SimpleAdmin.Cache;
+// Copyright (c) 2022-Now 少林寺驻北固山办事处大神父王喇嘛
+//
+// SimpleAdmin 基于 Apache License Version 2.0 协议发布,可用于商业项目,但必须遵守以下补充条款:
+// 1.请不要删除和修改根目录下的LICENSE文件。
+// 2.请不要删除和修改SimpleAdmin源码头部的版权声明。
+// 3.分发源码时候,请注明软件出处 https://gitee.com/dotnetmoyu/SimpleAdmin
+// 4.基于本软件的作品,只能使用 SimpleAdmin 作为后台服务,除外情况不可商用且不允许二次分发或开源。
+// 5.请不得将本软件应用于危害国家安全、荣誉和利益的行为,不能以任何形式用于非法为目的的行为。
+// 6.任何基于本软件而产生的一切法律纠纷和责任,均于我司无关。
+
+namespace SimpleAdmin.Cache;
///
/// 缓存服务
@@ -57,4 +67,4 @@ public partial interface ISimpleCacheService
/// 键
/// 数据字典
IDictionary HashGetAll(string key);
-}
\ No newline at end of file
+}
diff --git a/api/SimpleAdmin/SimpleAdmin.Cache/Interface/ISimpleCacheQueueService.cs b/api/SimpleAdmin/SimpleAdmin.Cache/Interface/ISimpleCacheQueueService.cs
new file mode 100644
index 0000000000000000000000000000000000000000..de157c7cef6e369105c3340edd9e0f3035459b3d
--- /dev/null
+++ b/api/SimpleAdmin/SimpleAdmin.Cache/Interface/ISimpleCacheQueueService.cs
@@ -0,0 +1,108 @@
+// Copyright (c) 2022-Now 少林寺驻北固山办事处大神父王喇嘛
+//
+// SimpleAdmin 基于 Apache License Version 2.0 协议发布,可用于商业项目,但必须遵守以下补充条款:
+// 1.请不要删除和修改根目录下的LICENSE文件。
+// 2.请不要删除和修改SimpleAdmin源码头部的版权声明。
+// 3.分发源码时候,请注明软件出处 https://gitee.com/dotnetmoyu/SimpleAdmin
+// 4.基于本软件的作品,只能使用 SimpleAdmin 作为后台服务,除外情况不可商用且不允许二次分发或开源。
+// 5.请不得将本软件应用于危害国家安全、荣誉和利益的行为,不能以任何形式用于非法为目的的行为。
+// 6.任何基于本软件而产生的一切法律纠纷和责任,均于我司无关。
+
+using NewLife.Caching.Queues;
+
+namespace SimpleAdmin.Cache;
+
+///
+/// 缓存服务
+///
+public partial interface ISimpleCacheService
+{
+ #region 普通队列
+
+ ///
+ /// 添加到队列
+ ///
+ ///
+ /// 键
+ /// 值数组
+ /// 添加数量
+ int AddQueue(string key, T[] value);
+
+ ///
+ /// 添加到队列
+ ///
+ ///
+ /// 键
+ /// 值
+ /// 添加数量
+ int AddQueue(string key, T value);
+
+ ///
+ /// 获取队列实例
+ ///
+ ///
+ /// 键
+ /// 队列实例
+ RedisQueue GetRedisQueue(string key);
+
+ ///
+ /// 从队列中获取数据
+ ///
+ ///
+ /// 键
+ /// 数量
+ /// 数据列表
+ List GetQueue(string key, int Count = 1);
+
+ ///
+ /// 取一条数据
+ ///
+ ///
+ /// 键
+ /// 阻塞时间
+ /// 数据
+ T GetQueueOne(string key, int timeout = 1);
+
+ ///
+ /// 异步取一条数据
+ ///
+ ///
+ /// 键
+ /// 阻塞时间
+ /// 数据
+ Task GetQueueOneAsync(string key, int timeout = 1);
+
+ #endregion
+
+ #region 延迟队列
+
+ ///
+ /// 添加一条数据到延迟队列
+ ///
+ ///
+ /// 键
+ /// 值
+ /// 延迟时间
+ /// 添加成功数量
+ int AddDelayQueue(string key, T value, int delay);
+
+ ///
+ /// 批量添加数据到延迟队列
+ ///
+ ///
+ /// 键
+ /// 值
+ /// 延迟时间
+ /// 添加成功数量
+ int AddDelayQueue(string key, List value, int delay);
+
+ ///
+ /// 获取延迟队列实例
+ ///
+ ///
+ /// 键
+ ///
+ RedisDelayQueue GetDelayQueue(string key);
+
+ #endregion
+}
diff --git a/api/SimpleAdmin/SimpleAdmin.Cache/Interface/ISimpleCacheService.cs b/api/SimpleAdmin/SimpleAdmin.Cache/Interface/ISimpleCacheService.cs
index 5f82485f756c3d80c8b8fa4e13817b09c89be6a4..7299aedba7b5a8c57c41eb456063659d47755d25 100644
--- a/api/SimpleAdmin/SimpleAdmin.Cache/Interface/ISimpleCacheService.cs
+++ b/api/SimpleAdmin/SimpleAdmin.Cache/Interface/ISimpleCacheService.cs
@@ -1,4 +1,14 @@
-namespace SimpleAdmin.Cache;
+// Copyright (c) 2022-Now 少林寺驻北固山办事处大神父王喇嘛
+//
+// SimpleAdmin 基于 Apache License Version 2.0 协议发布,可用于商业项目,但必须遵守以下补充条款:
+// 1.请不要删除和修改根目录下的LICENSE文件。
+// 2.请不要删除和修改SimpleAdmin源码头部的版权声明。
+// 3.分发源码时候,请注明软件出处 https://gitee.com/dotnetmoyu/SimpleAdmin
+// 4.基于本软件的作品,只能使用 SimpleAdmin 作为后台服务,除外情况不可商用且不允许二次分发或开源。
+// 5.请不得将本软件应用于危害国家安全、荣誉和利益的行为,不能以任何形式用于非法为目的的行为。
+// 6.任何基于本软件而产生的一切法律纠纷和责任,均于我司无关。
+
+namespace SimpleAdmin.Cache;
///
/// 缓存服务
@@ -174,7 +184,8 @@ public partial interface ISimpleCacheService
/// 锁过期时间,超过该时间如果没有主动释放则自动释放锁,必须整数秒,单位毫秒
/// 失败时是否抛出异常,如果不抛出异常,可通过返回null得知申请锁失败
///
- IDisposable AcquireLock(string key, int msTimeout, int msExpire, bool throwOnFailure);
+ IDisposable AcquireLock(string key, int msTimeout, int msExpire,
+ bool throwOnFailure);
#endregion 事务
-}
\ No newline at end of file
+}
diff --git a/api/SimpleAdmin/SimpleAdmin.Cache/Options/CacheSettingsOptions.cs b/api/SimpleAdmin/SimpleAdmin.Cache/Options/CacheSettingsOptions.cs
index 7756de996626ac789263e9f9041dfa4df92b16bf..380d26c25da4a98a0e5d2a4806497d37b7943987 100644
--- a/api/SimpleAdmin/SimpleAdmin.Cache/Options/CacheSettingsOptions.cs
+++ b/api/SimpleAdmin/SimpleAdmin.Cache/Options/CacheSettingsOptions.cs
@@ -1,4 +1,14 @@
-using Furion.ConfigurableOptions;
+// Copyright (c) 2022-Now 少林寺驻北固山办事处大神父王喇嘛
+//
+// SimpleAdmin 基于 Apache License Version 2.0 协议发布,可用于商业项目,但必须遵守以下补充条款:
+// 1.请不要删除和修改根目录下的LICENSE文件。
+// 2.请不要删除和修改SimpleAdmin源码头部的版权声明。
+// 3.分发源码时候,请注明软件出处 https://gitee.com/dotnetmoyu/SimpleAdmin
+// 4.基于本软件的作品,只能使用 SimpleAdmin 作为后台服务,除外情况不可商用且不允许二次分发或开源。
+// 5.请不得将本软件应用于危害国家安全、荣誉和利益的行为,不能以任何形式用于非法为目的的行为。
+// 6.任何基于本软件而产生的一切法律纠纷和责任,均于我司无关。
+
+using MoYu.ConfigurableOptions;
namespace SimpleAdmin.Cache;
@@ -42,4 +52,4 @@ public class RedisSettings
/// 是否每次启动都清空
///
public bool ClearRedis { get; set; } = false;
-}
\ No newline at end of file
+}
diff --git a/api/SimpleAdmin/SimpleAdmin.Cache/Service/MemoryCacheHashService.cs b/api/SimpleAdmin/SimpleAdmin.Cache/Service/MemoryCacheHashService.cs
index 9721502e8abcea4004a053a80b76bc8ef7d80878..0b2f8fe5ce2c52c82ddd2c31e370f868797b5040 100644
--- a/api/SimpleAdmin/SimpleAdmin.Cache/Service/MemoryCacheHashService.cs
+++ b/api/SimpleAdmin/SimpleAdmin.Cache/Service/MemoryCacheHashService.cs
@@ -1,10 +1,20 @@
-namespace SimpleAdmin.Cache;
+// Copyright (c) 2022-Now 少林寺驻北固山办事处大神父王喇嘛
+//
+// SimpleAdmin 基于 Apache License Version 2.0 协议发布,可用于商业项目,但必须遵守以下补充条款:
+// 1.请不要删除和修改根目录下的LICENSE文件。
+// 2.请不要删除和修改SimpleAdmin源码头部的版权声明。
+// 3.分发源码时候,请注明软件出处 https://gitee.com/dotnetmoyu/SimpleAdmin
+// 4.基于本软件的作品,只能使用 SimpleAdmin 作为后台服务,除外情况不可商用且不允许二次分发或开源。
+// 5.请不得将本软件应用于危害国家安全、荣誉和利益的行为,不能以任何形式用于非法为目的的行为。
+// 6.任何基于本软件而产生的一切法律纠纷和责任,均于我司无关。
+
+namespace SimpleAdmin.Cache;
///
///
/// 内存缓存
///
-public partial class MemoryCacheService : ISimpleCacheService
+public partial class MemoryCacheService
{
///
public void HashAdd(string key, string hashKey, T value)
@@ -54,14 +64,14 @@ public partial class MemoryCacheService : ISimpleCacheService
///
public List HashGet(string key, params string[] fields)
{
- List list = new List();
+ var list = new List();
//获取字典
var exist = _memoryCache.GetDictionary(key);
foreach (var field in fields)
{
- if (exist.ContainsKey(field))//如果包含Key
+ if (exist.TryGetValue(field, out var value))//如果包含Key
{
- list.Add(exist[field]);
+ list.Add(value);
}
else { list.Add(default); }
}
@@ -85,4 +95,4 @@ public partial class MemoryCacheService : ISimpleCacheService
var data = _memoryCache.GetDictionary(key);
return data;
}
-}
\ No newline at end of file
+}
diff --git a/api/SimpleAdmin/SimpleAdmin.Cache/Service/MemoryCacheQueueService.cs b/api/SimpleAdmin/SimpleAdmin.Cache/Service/MemoryCacheQueueService.cs
new file mode 100644
index 0000000000000000000000000000000000000000..a1eff51ad51255cdff8f869eb53bee775903f22e
--- /dev/null
+++ b/api/SimpleAdmin/SimpleAdmin.Cache/Service/MemoryCacheQueueService.cs
@@ -0,0 +1,74 @@
+// Copyright (c) 2022-Now 少林寺驻北固山办事处大神父王喇嘛
+//
+// SimpleAdmin 基于 Apache License Version 2.0 协议发布,可用于商业项目,但必须遵守以下补充条款:
+// 1.请不要删除和修改根目录下的LICENSE文件。
+// 2.请不要删除和修改SimpleAdmin源码头部的版权声明。
+// 3.分发源码时候,请注明软件出处 https://gitee.com/dotnetmoyu/SimpleAdmin
+// 4.基于本软件的作品,只能使用 SimpleAdmin 作为后台服务,除外情况不可商用且不允许二次分发或开源。
+// 5.请不得将本软件应用于危害国家安全、荣誉和利益的行为,不能以任何形式用于非法为目的的行为。
+// 6.任何基于本软件而产生的一切法律纠纷和责任,均于我司无关。
+
+using NewLife.Caching.Queues;
+
+namespace SimpleAdmin.Cache;
+
+///
+///
+/// 内存缓存
+///
+public partial class MemoryCacheService
+{
+ ///
+ public int AddQueue(string key, T[] value)
+ {
+ throw new NotImplementedException();
+ }
+
+ ///
+ public int AddQueue(string key, T value)
+ {
+ throw new NotImplementedException();
+ }
+
+ ///
+ public RedisQueue GetRedisQueue(string key)
+ {
+ throw new NotImplementedException();
+ }
+
+ ///
+ public List GetQueue(string key, int Count = 1)
+ {
+ throw new NotImplementedException();
+ }
+
+ ///
+ public T GetQueueOne(string key, int timeout = 1)
+ {
+ throw new NotImplementedException();
+ }
+
+ ///
+ public async Task GetQueueOneAsync(string key, int timeout = 1)
+ {
+ throw new NotImplementedException();
+ }
+
+ ///
+ public int AddDelayQueue(string key, T value, int delay)
+ {
+ throw new NotImplementedException();
+ }
+
+ ///
+ public int AddDelayQueue(string key, List value, int delay)
+ {
+ throw new NotImplementedException();
+ }
+
+ ///
+ public RedisDelayQueue GetDelayQueue(string key)
+ {
+ throw new NotImplementedException();
+ }
+}
diff --git a/api/SimpleAdmin/SimpleAdmin.Cache/Service/MemoryCacheService.cs b/api/SimpleAdmin/SimpleAdmin.Cache/Service/MemoryCacheService.cs
index 908f820b8d3727111bfcaabe98260da2510ca2e6..40d9074e84f677f377254d3b2ecc24dced23718f 100644
--- a/api/SimpleAdmin/SimpleAdmin.Cache/Service/MemoryCacheService.cs
+++ b/api/SimpleAdmin/SimpleAdmin.Cache/Service/MemoryCacheService.cs
@@ -1,4 +1,14 @@
-namespace SimpleAdmin.Cache;
+// Copyright (c) 2022-Now 少林寺驻北固山办事处大神父王喇嘛
+//
+// SimpleAdmin 基于 Apache License Version 2.0 协议发布,可用于商业项目,但必须遵守以下补充条款:
+// 1.请不要删除和修改根目录下的LICENSE文件。
+// 2.请不要删除和修改SimpleAdmin源码头部的版权声明。
+// 3.分发源码时候,请注明软件出处 https://gitee.com/dotnetmoyu/SimpleAdmin
+// 4.基于本软件的作品,只能使用 SimpleAdmin 作为后台服务,除外情况不可商用且不允许二次分发或开源。
+// 5.请不得将本软件应用于危害国家安全、荣誉和利益的行为,不能以任何形式用于非法为目的的行为。
+// 6.任何基于本软件而产生的一切法律纠纷和责任,均于我司无关。
+
+namespace SimpleAdmin.Cache;
///
///
@@ -6,7 +16,7 @@
///
public partial class MemoryCacheService : ISimpleCacheService
{
- public readonly MemoryCache _memoryCache;
+ private readonly MemoryCache _memoryCache;
public MemoryCacheService()
{
@@ -83,7 +93,7 @@ public partial class MemoryCacheService : ISimpleCacheService
public IDictionary GetAll(IEnumerable keys)
{
IDictionary? result = default;//定义集合
- IDictionary? data = _memoryCache.GetAll(keys);//获取数据
+ var data = _memoryCache.GetAll(keys);//获取数据
data.ForEach(it =>
{
result.Add(it.Key, it.Value.ToObject());//遍历数据,格式化并加到新的数据集合
@@ -163,8 +173,7 @@ public partial class MemoryCacheService : ISimpleCacheService
///
public bool TryGetValue(string key, out T value)
{
- var result = string.Empty;
- _ = _memoryCache.TryGetValue(key, out result);
+ _ = _memoryCache.TryGetValue(key, out var result);
value = result.ToObject();
return value == null;
}
@@ -210,10 +219,11 @@ public partial class MemoryCacheService : ISimpleCacheService
}
///
- public IDisposable AcquireLock(string key, int msTimeout, int msExpire, bool throwOnFailure)
+ public IDisposable AcquireLock(string key, int msTimeout, int msExpire,
+ bool throwOnFailure)
{
return _memoryCache.AcquireLock(key, msTimeout, msExpire, throwOnFailure);
}
#endregion 事务
-}
\ No newline at end of file
+}
diff --git a/api/SimpleAdmin/SimpleAdmin.Cache/Service/RedisCacheHashService.cs b/api/SimpleAdmin/SimpleAdmin.Cache/Service/RedisCacheHashService.cs
index e9be27a35980ba30c402de979d4b63ad3e8a96bc..9b2d7c2f9e567c3347a4b42120e5fb4f413ba751 100644
--- a/api/SimpleAdmin/SimpleAdmin.Cache/Service/RedisCacheHashService.cs
+++ b/api/SimpleAdmin/SimpleAdmin.Cache/Service/RedisCacheHashService.cs
@@ -1,11 +1,20 @@
-namespace SimpleAdmin.Cache;
+// Copyright (c) 2022-Now 少林寺驻北固山办事处大神父王喇嘛
+//
+// SimpleAdmin 基于 Apache License Version 2.0 协议发布,可用于商业项目,但必须遵守以下补充条款:
+// 1.请不要删除和修改根目录下的LICENSE文件。
+// 2.请不要删除和修改SimpleAdmin源码头部的版权声明。
+// 3.分发源码时候,请注明软件出处 https://gitee.com/dotnetmoyu/SimpleAdmin
+// 4.基于本软件的作品,只能使用 SimpleAdmin 作为后台服务,除外情况不可商用且不允许二次分发或开源。
+// 5.请不得将本软件应用于危害国家安全、荣誉和利益的行为,不能以任何形式用于非法为目的的行为。
+// 6.任何基于本软件而产生的一切法律纠纷和责任,均于我司无关。
+
+namespace SimpleAdmin.Cache;
///
///
/// Redis缓存
///
-
-public partial class RedisCacheService : ISimpleCacheService
+public partial class RedisCacheService
{
///
public void HashAdd(string key, string hashKey, T value)
@@ -42,4 +51,4 @@ public partial class RedisCacheService : ISimpleCacheService
{
return _simpleRedis.HashGetAll(key);
}
-}
\ No newline at end of file
+}
diff --git a/api/SimpleAdmin/SimpleAdmin.Cache/Service/RedisCacheQueueService.cs b/api/SimpleAdmin/SimpleAdmin.Cache/Service/RedisCacheQueueService.cs
new file mode 100644
index 0000000000000000000000000000000000000000..116569c22f70ecb2ecfbc4e73f8d54e91002908d
--- /dev/null
+++ b/api/SimpleAdmin/SimpleAdmin.Cache/Service/RedisCacheQueueService.cs
@@ -0,0 +1,74 @@
+// Copyright (c) 2022-Now 少林寺驻北固山办事处大神父王喇嘛
+//
+// SimpleAdmin 基于 Apache License Version 2.0 协议发布,可用于商业项目,但必须遵守以下补充条款:
+// 1.请不要删除和修改根目录下的LICENSE文件。
+// 2.请不要删除和修改SimpleAdmin源码头部的版权声明。
+// 3.分发源码时候,请注明软件出处 https://gitee.com/dotnetmoyu/SimpleAdmin
+// 4.基于本软件的作品,只能使用 SimpleAdmin 作为后台服务,除外情况不可商用且不允许二次分发或开源。
+// 5.请不得将本软件应用于危害国家安全、荣誉和利益的行为,不能以任何形式用于非法为目的的行为。
+// 6.任何基于本软件而产生的一切法律纠纷和责任,均于我司无关。
+
+using NewLife.Caching.Queues;
+
+namespace SimpleAdmin.Cache;
+
+///
+///
+/// Redis缓存
+///
+public partial class RedisCacheService
+{
+ ///
+ public int AddQueue(string key, T[] value)
+ {
+ return _simpleRedis.AddQueue(key, value);
+ }
+
+ ///
+ public int AddQueue(string key, T value)
+ {
+ return _simpleRedis.AddQueue(key, value);
+ }
+
+ ///
+ public RedisQueue GetRedisQueue(string key)
+ {
+ return _simpleRedis.GetRedisQueue(key);
+ }
+
+ ///
+ public List GetQueue(string key, int Count = 1)
+ {
+ return _simpleRedis.GetQueue(key, Count);
+ }
+
+ ///
+ public T GetQueueOne(string key, int timeout = 1)
+ {
+ return _simpleRedis.GetQueueOne(key, timeout);
+ }
+
+ ///
+ public async Task GetQueueOneAsync(string key, int timeout = 1)
+ {
+ return await _simpleRedis.GetQueueOneAsync(key, timeout);
+ }
+
+ ///
+ public int AddDelayQueue(string key, T value, int delay)
+ {
+ return _simpleRedis.AddDelayQueue(key, value, delay);
+ }
+
+ ///
+ public int AddDelayQueue(string key, List value, int delay)
+ {
+ return _simpleRedis.AddDelayQueue(key, value, delay);
+ }
+
+ ///
+ public RedisDelayQueue GetDelayQueue(string key)
+ {
+ return _simpleRedis.GetDelayQueue(key);
+ }
+}
diff --git a/api/SimpleAdmin/SimpleAdmin.Cache/Service/RedisCacheService.cs b/api/SimpleAdmin/SimpleAdmin.Cache/Service/RedisCacheService.cs
index fda5ae26cec0d0a010003046c0301d25f93504cd..efd873bc57e0577b13d2aa9620a44af93d0482d4 100644
--- a/api/SimpleAdmin/SimpleAdmin.Cache/Service/RedisCacheService.cs
+++ b/api/SimpleAdmin/SimpleAdmin.Cache/Service/RedisCacheService.cs
@@ -1,4 +1,16 @@
-namespace SimpleAdmin.Cache;
+// Copyright (c) 2022-Now 少林寺驻北固山办事处大神父王喇嘛
+//
+// SimpleAdmin 基于 Apache License Version 2.0 协议发布,可用于商业项目,但必须遵守以下补充条款:
+// 1.请不要删除和修改根目录下的LICENSE文件。
+// 2.请不要删除和修改SimpleAdmin源码头部的版权声明。
+// 3.分发源码时候,请注明软件出处 https://gitee.com/dotnetmoyu/SimpleAdmin
+// 4.基于本软件的作品,只能使用 SimpleAdmin 作为后台服务,除外情况不可商用且不允许二次分发或开源。
+// 5.请不得将本软件应用于危害国家安全、荣誉和利益的行为,不能以任何形式用于非法为目的的行为。
+// 6.任何基于本软件而产生的一切法律纠纷和责任,均于我司无关。
+
+using NewLife.Caching.Queues;
+
+namespace SimpleAdmin.Cache;
///
///
@@ -10,7 +22,7 @@ public partial class RedisCacheService : ISimpleCacheService
public RedisCacheService(ISimpleRedis simpleRedis)
{
- this._simpleRedis = simpleRedis;
+ _simpleRedis = simpleRedis;
}
#region 普通操作
@@ -51,6 +63,7 @@ public partial class RedisCacheService : ISimpleCacheService
return _simpleRedis.GetFullRedis().GetExpire(key);
}
+
///
public bool ContainsKey(string key)
{
@@ -178,10 +191,11 @@ public partial class RedisCacheService : ISimpleCacheService
}
///
- public IDisposable AcquireLock(string key, int msTimeout, int msExpire, bool throwOnFailure)
+ public IDisposable AcquireLock(string key, int msTimeout, int msExpire,
+ bool throwOnFailure)
{
return _simpleRedis.GetFullRedis().AcquireLock(key, msTimeout, msExpire, throwOnFailure);
}
#endregion 事务
-}
\ No newline at end of file
+}
diff --git a/api/SimpleAdmin/SimpleAdmin.Cache/SimpleAdmin.Cache.csproj b/api/SimpleAdmin/SimpleAdmin.Cache/SimpleAdmin.Cache.csproj
index 3a0657498888dcaccf798a2fa204d96d53da231f..afe1acd7874e581a7b5d6a39842a8921734a4e8e 100644
--- a/api/SimpleAdmin/SimpleAdmin.Cache/SimpleAdmin.Cache.csproj
+++ b/api/SimpleAdmin/SimpleAdmin.Cache/SimpleAdmin.Cache.csproj
@@ -1,28 +1,24 @@
-
- net7.0;net6.0
- 1701;1702;8616;1591;8618;8619;8629;8602;8603;8604;8625;8765
- SimpleAdmin.Cache.xml
- enable
- enable
-
+
+
+
-
-
-
+
+
+
-
-
-
+
+
+ PreserveNewest
+
+
+ PreserveNewest
+
+
-
-
- PreserveNewest
-
-
- PreserveNewest
-
-
+
+
+
diff --git a/api/SimpleAdmin/SimpleAdmin.Cache/SimpleAdmin.Cache.xml b/api/SimpleAdmin/SimpleAdmin.Cache/SimpleAdmin.Cache.xml
index 9c773d9103d75497a83a456d9d03f68215c83312..8a0fa49616adad8732d8590b8aec4fd4f9076412 100644
--- a/api/SimpleAdmin/SimpleAdmin.Cache/SimpleAdmin.Cache.xml
+++ b/api/SimpleAdmin/SimpleAdmin.Cache/SimpleAdmin.Cache.xml
@@ -4,32 +4,10 @@
SimpleAdmin.Cache
-
-
- Redis常量
-
-
-
-
- Redis Key前缀(可删除)
-
-
-
-
- Redis Key前缀(需要持久化,不随系统重启删除)
-
-
-
-
- Redis Hash类型
-
-
-
+
- 用户Token缓存Key
+ 缓存服务
-
-
缓存服务
@@ -90,6 +68,87 @@
键
数据字典
+
+
+ 添加到队列
+
+
+ 键
+ 值数组
+ 添加数量
+
+
+
+ 添加到队列
+
+
+ 键
+ 值
+ 添加数量
+
+
+
+ 获取队列实例
+
+
+ 键
+ 队列实例
+
+
+
+ 从队列中获取数据
+
+
+ 键
+ 数量
+ 数据列表
+
+
+
+ 取一条数据
+
+
+ 键
+ 阻塞时间
+ 数据
+
+
+
+ 异步取一条数据
+
+
+ 键
+ 阻塞时间
+ 数据
+
+
+
+ 添加一条数据到延迟队列
+
+
+ 键
+ 值
+ 延迟时间
+ 添加成功数量
+
+
+
+ 批量添加数据到延迟队列
+
+
+ 键
+ 值
+ 延迟时间
+ 添加成功数量
+
+
+
+ 获取延迟队列实例
+
+
+ 键
+
+
是否包含缓存项
@@ -296,6 +355,10 @@
内存缓存
+
+
+ 内存缓存
+
@@ -315,6 +378,33 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -402,6 +492,10 @@
Redis缓存
+
+
+ Redis缓存
+
@@ -421,6 +515,33 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/api/SimpleAdmin/SimpleAdmin.Cache/Startup.cs b/api/SimpleAdmin/SimpleAdmin.Cache/Startup.cs
index 5346ffb1d98bc2a42b71cdef193f160d4f106d96..0b20d43387216068b38faf2a3f35b7329993c052 100644
--- a/api/SimpleAdmin/SimpleAdmin.Cache/Startup.cs
+++ b/api/SimpleAdmin/SimpleAdmin.Cache/Startup.cs
@@ -1,4 +1,14 @@
-namespace SimpleAdmin.Cache;
+// Copyright (c) 2022-Now 少林寺驻北固山办事处大神父王喇嘛
+//
+// SimpleAdmin 基于 Apache License Version 2.0 协议发布,可用于商业项目,但必须遵守以下补充条款:
+// 1.请不要删除和修改根目录下的LICENSE文件。
+// 2.请不要删除和修改SimpleAdmin源码头部的版权声明。
+// 3.分发源码时候,请注明软件出处 https://gitee.com/dotnetmoyu/SimpleAdmin
+// 4.基于本软件的作品,只能使用 SimpleAdmin 作为后台服务,除外情况不可商用且不允许二次分发或开源。
+// 5.请不得将本软件应用于危害国家安全、荣誉和利益的行为,不能以任何形式用于非法为目的的行为。
+// 6.任何基于本软件而产生的一切法律纠纷和责任,均于我司无关。
+
+namespace SimpleAdmin.Cache;
///
/// AppStartup启动类
@@ -42,7 +52,7 @@ public class Startup : AppStartup
{
var redis = App.GetService();//获取redis服务
//删除redis的key
- redis.DelByPattern(CacheConst.Cache_Prefix_Web);
+ redis.DelByPattern(CacheConst.CACHE_PREFIX_WEB);
}
}
-}
\ No newline at end of file
+}
diff --git a/api/SimpleAdmin/SimpleAdmin.Core/Attributes/BatchEditAttribute.cs b/api/SimpleAdmin/SimpleAdmin.Core/Attributes/BatchEditAttribute.cs
deleted file mode 100644
index 0c9ad30b6a0101bc916fc7a1265af4c1ea7dea8f..0000000000000000000000000000000000000000
--- a/api/SimpleAdmin/SimpleAdmin.Core/Attributes/BatchEditAttribute.cs
+++ /dev/null
@@ -1,8 +0,0 @@
-namespace SimpleAdmin.Core;
-
-///
-/// 批量更新
-///
-public class BatchEditAttribute : Attribute
-{
-}
\ No newline at end of file
diff --git a/api/SimpleAdmin/SimpleAdmin.Core/Attributes/CodeGenAttribute.cs b/api/SimpleAdmin/SimpleAdmin.Core/Attributes/CodeGenAttribute.cs
index 616a15d46e088a4a11ee5a33b417655fe4dc07e8..687d18b6480b56f4da881f99dd4b79bbdc6a8e3d 100644
--- a/api/SimpleAdmin/SimpleAdmin.Core/Attributes/CodeGenAttribute.cs
+++ b/api/SimpleAdmin/SimpleAdmin.Core/Attributes/CodeGenAttribute.cs
@@ -1,8 +1,18 @@
-namespace SimpleAdmin.Core;
+// Copyright (c) 2022-Now 少林寺驻北固山办事处大神父王喇嘛
+//
+// SimpleAdmin 基于 Apache License Version 2.0 协议发布,可用于商业项目,但必须遵守以下补充条款:
+// 1.请不要删除和修改根目录下的LICENSE文件。
+// 2.请不要删除和修改SimpleAdmin源码头部的版权声明。
+// 3.分发源码时候,请注明软件出处 https://gitee.com/dotnetmoyu/SimpleAdmin
+// 4.基于本软件的作品,只能使用 SimpleAdmin 作为后台服务,除外情况不可商用且不允许二次分发或开源。
+// 5.请不得将本软件应用于危害国家安全、荣誉和利益的行为,不能以任何形式用于非法为目的的行为。
+// 6.任何基于本软件而产生的一切法律纠纷和责任,均于我司无关。
+
+namespace SimpleAdmin.Core;
///
/// 代码生成
///
public class CodeGenAttribute : Attribute
{
-}
\ No newline at end of file
+}
diff --git a/api/SimpleAdmin/SimpleAdmin.Core/Attributes/IgnoreInitTableAttribute.cs b/api/SimpleAdmin/SimpleAdmin.Core/Attributes/IgnoreInitTableAttribute.cs
index b1a257fe83eb03c0b129d78d7a3b2b6fbc0ad79d..be494f498499e276b8d9dba11f03361cd02b97da 100644
--- a/api/SimpleAdmin/SimpleAdmin.Core/Attributes/IgnoreInitTableAttribute.cs
+++ b/api/SimpleAdmin/SimpleAdmin.Core/Attributes/IgnoreInitTableAttribute.cs
@@ -1,9 +1,18 @@
-namespace SimpleAdmin.Core
+// Copyright (c) 2022-Now 少林寺驻北固山办事处大神父王喇嘛
+//
+// SimpleAdmin 基于 Apache License Version 2.0 协议发布,可用于商业项目,但必须遵守以下补充条款:
+// 1.请不要删除和修改根目录下的LICENSE文件。
+// 2.请不要删除和修改SimpleAdmin源码头部的版权声明。
+// 3.分发源码时候,请注明软件出处 https://gitee.com/dotnetmoyu/SimpleAdmin
+// 4.基于本软件的作品,只能使用 SimpleAdmin 作为后台服务,除外情况不可商用且不允许二次分发或开源。
+// 5.请不得将本软件应用于危害国家安全、荣誉和利益的行为,不能以任何形式用于非法为目的的行为。
+// 6.任何基于本软件而产生的一切法律纠纷和责任,均于我司无关。
+
+namespace SimpleAdmin.Core;
+
+///
+/// 忽略初始化表
+///
+public class IgnoreInitTableAttribute : Attribute
{
- ///
- /// 忽略初始化表
- ///
- public class IgnoreInitTableAttribute : Attribute
- {
- }
-}
\ No newline at end of file
+}
diff --git a/api/SimpleAdmin/SimpleAdmin.Core/Attributes/IgnoreSeedDataAttribute.cs b/api/SimpleAdmin/SimpleAdmin.Core/Attributes/IgnoreSeedDataAttribute.cs
index 015c670696b9d41b9c6b82ad0a3888d691151fd0..5935b0f71cf882dd2cc8ca62b3546c420ed8372a 100644
--- a/api/SimpleAdmin/SimpleAdmin.Core/Attributes/IgnoreSeedDataAttribute.cs
+++ b/api/SimpleAdmin/SimpleAdmin.Core/Attributes/IgnoreSeedDataAttribute.cs
@@ -1,4 +1,14 @@
-namespace SimpleAdmin.Core;
+// Copyright (c) 2022-Now 少林寺驻北固山办事处大神父王喇嘛
+//
+// SimpleAdmin 基于 Apache License Version 2.0 协议发布,可用于商业项目,但必须遵守以下补充条款:
+// 1.请不要删除和修改根目录下的LICENSE文件。
+// 2.请不要删除和修改SimpleAdmin源码头部的版权声明。
+// 3.分发源码时候,请注明软件出处 https://gitee.com/dotnetmoyu/SimpleAdmin
+// 4.基于本软件的作品,只能使用 SimpleAdmin 作为后台服务,除外情况不可商用且不允许二次分发或开源。
+// 5.请不得将本软件应用于危害国家安全、荣誉和利益的行为,不能以任何形式用于非法为目的的行为。
+// 6.任何基于本软件而产生的一切法律纠纷和责任,均于我司无关。
+
+namespace SimpleAdmin.Core;
///
/// 种子数据忽略新增
@@ -12,4 +22,4 @@ public class IgnoreSeedDataAddAttribute : Attribute
///
public class IgnoreSeedDataUpdateAttribute : Attribute
{
-}
\ No newline at end of file
+}
diff --git a/api/SimpleAdmin/SimpleAdmin.Core/Attributes/RolePermissionAttribute.cs b/api/SimpleAdmin/SimpleAdmin.Core/Attributes/RolePermissionAttribute.cs
index 47b1a596cd159f5ebd591bb4e48b23cb72e6354b..c9d3cad781e6ceb4b28002a1064a9de1c3d7982e 100644
--- a/api/SimpleAdmin/SimpleAdmin.Core/Attributes/RolePermissionAttribute.cs
+++ b/api/SimpleAdmin/SimpleAdmin.Core/Attributes/RolePermissionAttribute.cs
@@ -1,4 +1,14 @@
-namespace SimpleAdmin.Core;
+// Copyright (c) 2022-Now 少林寺驻北固山办事处大神父王喇嘛
+//
+// SimpleAdmin 基于 Apache License Version 2.0 协议发布,可用于商业项目,但必须遵守以下补充条款:
+// 1.请不要删除和修改根目录下的LICENSE文件。
+// 2.请不要删除和修改SimpleAdmin源码头部的版权声明。
+// 3.分发源码时候,请注明软件出处 https://gitee.com/dotnetmoyu/SimpleAdmin
+// 4.基于本软件的作品,只能使用 SimpleAdmin 作为后台服务,除外情况不可商用且不允许二次分发或开源。
+// 5.请不得将本软件应用于危害国家安全、荣誉和利益的行为,不能以任何形式用于非法为目的的行为。
+// 6.任何基于本软件而产生的一切法律纠纷和责任,均于我司无关。
+
+namespace SimpleAdmin.Core;
///
/// 需要角色授权权限
@@ -12,4 +22,4 @@ public class RolePermissionAttribute : Attribute
///
public class IgnoreRolePermissionAttribute : Attribute
{
-}
\ No newline at end of file
+}
diff --git a/api/SimpleAdmin/SimpleAdmin.Core/Attributes/SuperAdminAttribute.cs b/api/SimpleAdmin/SimpleAdmin.Core/Attributes/SuperAdminAttribute.cs
index 86f989376f850a33f7d5b4e97c836d2a64abc518..9e4f6cceced46d65d77e6e0e4d51ecef3c9b7d10 100644
--- a/api/SimpleAdmin/SimpleAdmin.Core/Attributes/SuperAdminAttribute.cs
+++ b/api/SimpleAdmin/SimpleAdmin.Core/Attributes/SuperAdminAttribute.cs
@@ -1,4 +1,14 @@
-namespace SimpleAdmin.Core;
+// Copyright (c) 2022-Now 少林寺驻北固山办事处大神父王喇嘛
+//
+// SimpleAdmin 基于 Apache License Version 2.0 协议发布,可用于商业项目,但必须遵守以下补充条款:
+// 1.请不要删除和修改根目录下的LICENSE文件。
+// 2.请不要删除和修改SimpleAdmin源码头部的版权声明。
+// 3.分发源码时候,请注明软件出处 https://gitee.com/dotnetmoyu/SimpleAdmin
+// 4.基于本软件的作品,只能使用 SimpleAdmin 作为后台服务,除外情况不可商用且不允许二次分发或开源。
+// 5.请不得将本软件应用于危害国家安全、荣誉和利益的行为,不能以任何形式用于非法为目的的行为。
+// 6.任何基于本软件而产生的一切法律纠纷和责任,均于我司无关。
+
+namespace SimpleAdmin.Core;
///
/// 管理员才能访问特性
@@ -12,4 +22,4 @@ public class SuperAdminAttribute : Attribute
///
public class IgnoreSuperAdminAttribute : Attribute
{
-}
\ No newline at end of file
+}
diff --git a/api/SimpleAdmin/SimpleAdmin.Core/Attributes/ValidationAttribute/IdNotNull.cs b/api/SimpleAdmin/SimpleAdmin.Core/Attributes/ValidationAttribute/IdNotNull.cs
index e80692e5c5e466508dbfe107aa88354366fa4ad8..35e5c506705c71709ff84e4fe8cc7fa50bed0cdf 100644
--- a/api/SimpleAdmin/SimpleAdmin.Core/Attributes/ValidationAttribute/IdNotNull.cs
+++ b/api/SimpleAdmin/SimpleAdmin.Core/Attributes/ValidationAttribute/IdNotNull.cs
@@ -1,4 +1,14 @@
-namespace SimpleAdmin.Core;
+// Copyright (c) 2022-Now 少林寺驻北固山办事处大神父王喇嘛
+//
+// SimpleAdmin 基于 Apache License Version 2.0 协议发布,可用于商业项目,但必须遵守以下补充条款:
+// 1.请不要删除和修改根目录下的LICENSE文件。
+// 2.请不要删除和修改SimpleAdmin源码头部的版权声明。
+// 3.分发源码时候,请注明软件出处 https://gitee.com/dotnetmoyu/SimpleAdmin
+// 4.基于本软件的作品,只能使用 SimpleAdmin 作为后台服务,除外情况不可商用且不允许二次分发或开源。
+// 5.请不得将本软件应用于危害国家安全、荣誉和利益的行为,不能以任何形式用于非法为目的的行为。
+// 6.任何基于本软件而产生的一切法律纠纷和责任,均于我司无关。
+
+namespace SimpleAdmin.Core;
///
/// 验证Id不能为 空
@@ -9,6 +19,19 @@ public class IdNotNull : ValidationAttribute
{
if (value.ToLong() > 0 || !string.IsNullOrEmpty(value.ToString()))
return true;
- else return false;
+ return false;
+ }
+}
+
+///
+/// 验证Id列表不能为空
+///
+public class IdsNotNull : ValidationAttribute
+{
+ public override bool IsValid(object value)
+ {
+ if (value is List { Count: 0 })
+ return false;
+ return true;
}
-}
\ No newline at end of file
+}
diff --git a/api/SimpleAdmin/SimpleAdmin.Core/BaseInput/BaseFileInput.cs b/api/SimpleAdmin/SimpleAdmin.Core/BaseInput/BaseFileInput.cs
index d30e9cc2fb05b815c152cc71d48d70dcc421ef8e..e5976672577d6246713f38992aaaec764bb51fc7 100644
--- a/api/SimpleAdmin/SimpleAdmin.Core/BaseInput/BaseFileInput.cs
+++ b/api/SimpleAdmin/SimpleAdmin.Core/BaseInput/BaseFileInput.cs
@@ -1,4 +1,14 @@
-namespace SimpleAdmin.Core;
+// Copyright (c) 2022-Now 少林寺驻北固山办事处大神父王喇嘛
+//
+// SimpleAdmin 基于 Apache License Version 2.0 协议发布,可用于商业项目,但必须遵守以下补充条款:
+// 1.请不要删除和修改根目录下的LICENSE文件。
+// 2.请不要删除和修改SimpleAdmin源码头部的版权声明。
+// 3.分发源码时候,请注明软件出处 https://gitee.com/dotnetmoyu/SimpleAdmin
+// 4.基于本软件的作品,只能使用 SimpleAdmin 作为后台服务,除外情况不可商用且不允许二次分发或开源。
+// 5.请不得将本软件应用于危害国家安全、荣誉和利益的行为,不能以任何形式用于非法为目的的行为。
+// 6.任何基于本软件而产生的一切法律纠纷和责任,均于我司无关。
+
+namespace SimpleAdmin.Core;
///
/// 文件上传输入参数
@@ -10,4 +20,4 @@ public class BaseFileInput
///
[Required(ErrorMessage = "文件不能为空")]
public IFormFile? File { get; set; }
-}
\ No newline at end of file
+}
diff --git a/api/SimpleAdmin/SimpleAdmin.Core/BaseInput/BaseIdInput.cs b/api/SimpleAdmin/SimpleAdmin.Core/BaseInput/BaseIdInput.cs
index eeb998bd2758b23e2cef2c6c8fd3fc26a8f6ea15..a47dab85a2738ea393c54fb9777ece67d040df3a 100644
--- a/api/SimpleAdmin/SimpleAdmin.Core/BaseInput/BaseIdInput.cs
+++ b/api/SimpleAdmin/SimpleAdmin.Core/BaseInput/BaseIdInput.cs
@@ -1,4 +1,14 @@
-namespace SimpleAdmin.Core;
+// Copyright (c) 2022-Now 少林寺驻北固山办事处大神父王喇嘛
+//
+// SimpleAdmin 基于 Apache License Version 2.0 协议发布,可用于商业项目,但必须遵守以下补充条款:
+// 1.请不要删除和修改根目录下的LICENSE文件。
+// 2.请不要删除和修改SimpleAdmin源码头部的版权声明。
+// 3.分发源码时候,请注明软件出处 https://gitee.com/dotnetmoyu/SimpleAdmin
+// 4.基于本软件的作品,只能使用 SimpleAdmin 作为后台服务,除外情况不可商用且不允许二次分发或开源。
+// 5.请不得将本软件应用于危害国家安全、荣誉和利益的行为,不能以任何形式用于非法为目的的行为。
+// 6.任何基于本软件而产生的一切法律纠纷和责任,均于我司无关。
+
+namespace SimpleAdmin.Core;
///
/// 主键Id输入参数
@@ -13,6 +23,15 @@ public class BaseIdInput
public virtual long Id { get; set; }
}
+public class BaseIdListInput
+{
+ ///
+ /// 主键Id列表
+ ///
+ [IdsNotNull(ErrorMessage = "IdList不能为空")]
+ public List Ids { get; set; } = new List();
+}
+
///
/// Id列表输入
///
@@ -20,4 +39,4 @@ public class IdListInput
{
[Required(ErrorMessage = "IdList不能为空")]
public List? IdList { get; set; }
-}
\ No newline at end of file
+}
diff --git a/api/SimpleAdmin/SimpleAdmin.Core/BaseInput/BasePageInput.cs b/api/SimpleAdmin/SimpleAdmin.Core/BaseInput/BasePageInput.cs
index beb16e6544af5c1c3828d94bebcc8580bc8c1c1f..8eb2057b25ebb116862ee80ae809c2994fa1b437 100644
--- a/api/SimpleAdmin/SimpleAdmin.Core/BaseInput/BasePageInput.cs
+++ b/api/SimpleAdmin/SimpleAdmin.Core/BaseInput/BasePageInput.cs
@@ -1,4 +1,14 @@
-namespace SimpleAdmin.Core;
+// Copyright (c) 2022-Now 少林寺驻北固山办事处大神父王喇嘛
+//
+// SimpleAdmin 基于 Apache License Version 2.0 协议发布,可用于商业项目,但必须遵守以下补充条款:
+// 1.请不要删除和修改根目录下的LICENSE文件。
+// 2.请不要删除和修改SimpleAdmin源码头部的版权声明。
+// 3.分发源码时候,请注明软件出处 https://gitee.com/dotnetmoyu/SimpleAdmin
+// 4.基于本软件的作品,只能使用 SimpleAdmin 作为后台服务,除外情况不可商用且不允许二次分发或开源。
+// 5.请不得将本软件应用于危害国家安全、荣誉和利益的行为,不能以任何形式用于非法为目的的行为。
+// 6.任何基于本软件而产生的一切法律纠纷和责任,均于我司无关。
+
+namespace SimpleAdmin.Core;
///
/// 全局分页查询输入参数
@@ -9,14 +19,14 @@ public class BasePageInput : IValidatableObject
/// 当前页码
///
[DataValidation(ValidationTypes.Numeric)]
- public virtual int Current { get; set; } = 1;
+ public virtual int PageNum { get; set; } = 1;
///
/// 每页条数
///
[Range(1, 100, ErrorMessage = "页码容量超过最大限制")]
[DataValidation(ValidationTypes.Numeric)]
- public virtual int Size { get; set; } = 10;
+ public virtual int PageSize { get; set; } = 10;
///
/// 排序字段
@@ -50,12 +60,11 @@ public class BasePageInput : IValidatableObject
var fields = SortField.Split(" ");
if (fields.Length > 1)
{
- yield return new ValidationResult($"排序字段错误", new[]
+ yield return new ValidationResult("排序字段错误", new[]
{
nameof(SortField)
});
}
}
- yield break;
}
-}
\ No newline at end of file
+}
diff --git a/api/SimpleAdmin/SimpleAdmin.Core/BaseOutput/BaseSelectorOutput.cs b/api/SimpleAdmin/SimpleAdmin.Core/BaseOutput/BaseSelectorOutput.cs
index faffb792fc1b2d464912747b637832da6613ade3..ad0bf49fcfd7fc42ffc1bd1f4881e4937f886cf9 100644
--- a/api/SimpleAdmin/SimpleAdmin.Core/BaseOutput/BaseSelectorOutput.cs
+++ b/api/SimpleAdmin/SimpleAdmin.Core/BaseOutput/BaseSelectorOutput.cs
@@ -1,4 +1,14 @@
-namespace SimpleAdmin.Core;
+// Copyright (c) 2022-Now 少林寺驻北固山办事处大神父王喇嘛
+//
+// SimpleAdmin 基于 Apache License Version 2.0 协议发布,可用于商业项目,但必须遵守以下补充条款:
+// 1.请不要删除和修改根目录下的LICENSE文件。
+// 2.请不要删除和修改SimpleAdmin源码头部的版权声明。
+// 3.分发源码时候,请注明软件出处 https://gitee.com/dotnetmoyu/SimpleAdmin
+// 4.基于本软件的作品,只能使用 SimpleAdmin 作为后台服务,除外情况不可商用且不允许二次分发或开源。
+// 5.请不得将本软件应用于危害国家安全、荣誉和利益的行为,不能以任何形式用于非法为目的的行为。
+// 6.任何基于本软件而产生的一切法律纠纷和责任,均于我司无关。
+
+namespace SimpleAdmin.Core;
///
/// 基础选择器输出
@@ -14,4 +24,4 @@ public class BaseSelectorOutput
/// 显示文本
///
public string Label { get; set; }
-}
\ No newline at end of file
+}
diff --git a/api/SimpleAdmin/SimpleAdmin.Core/Components/GzipCompressionComponent.cs b/api/SimpleAdmin/SimpleAdmin.Core/Components/GzipCompressionComponent.cs
index 9376d4286d4fbc33c522c8d97a46d134e5faec27..0366d6fe2a9e4e1854265b18a07ba49567618a94 100644
--- a/api/SimpleAdmin/SimpleAdmin.Core/Components/GzipCompressionComponent.cs
+++ b/api/SimpleAdmin/SimpleAdmin.Core/Components/GzipCompressionComponent.cs
@@ -1,5 +1,12 @@
-using Microsoft.AspNetCore.ResponseCompression;
-using System.IO.Compression;
+// Copyright (c) 2022-Now 少林寺驻北固山办事处大神父王喇嘛
+//
+// SimpleAdmin 基于 Apache License Version 2.0 协议发布,可用于商业项目,但必须遵守以下补充条款:
+// 1.请不要删除和修改根目录下的LICENSE文件。
+// 2.请不要删除和修改SimpleAdmin源码头部的版权声明。
+// 3.分发源码时候,请注明软件出处 https://gitee.com/dotnetmoyu/SimpleAdmin
+// 4.基于本软件的作品,只能使用 SimpleAdmin 作为后台服务,除外情况不可商用且不允许二次分发或开源。
+// 5.请不得将本软件应用于危害国家安全、荣誉和利益的行为,不能以任何形式用于非法为目的的行为。
+// 6.任何基于本软件而产生的一切法律纠纷和责任,均于我司无关。
namespace SimpleAdmin.Core;
@@ -19,8 +26,8 @@ public sealed class GzipCompressionComponent : IServiceComponent
options.Providers.Add();
options.MimeTypes = ResponseCompressionDefaults.MimeTypes.Concat(new[]
{
- "text/html; charset=utf-8", "application/xhtml+xml", "application/atom+xml", "image/svg+xml"
+ "text/html; charset=utf-8", "application/xhtml+xml", "application/atom+xml", "image/svg+xml"
});
});
}
-}
\ No newline at end of file
+}
diff --git a/api/SimpleAdmin/SimpleAdmin.Core/Components/LoggingConsoleComponent.cs b/api/SimpleAdmin/SimpleAdmin.Core/Components/LoggingConsoleComponent.cs
index 745846a20dddc012135ad6e440f01c1e4f9220a7..bdc2bdf81b5a764a3e49838a131fc53811bce070 100644
--- a/api/SimpleAdmin/SimpleAdmin.Core/Components/LoggingConsoleComponent.cs
+++ b/api/SimpleAdmin/SimpleAdmin.Core/Components/LoggingConsoleComponent.cs
@@ -1,4 +1,14 @@
-namespace SimpleAdmin.Core;
+// Copyright (c) 2022-Now 少林寺驻北固山办事处大神父王喇嘛
+//
+// SimpleAdmin 基于 Apache License Version 2.0 协议发布,可用于商业项目,但必须遵守以下补充条款:
+// 1.请不要删除和修改根目录下的LICENSE文件。
+// 2.请不要删除和修改SimpleAdmin源码头部的版权声明。
+// 3.分发源码时候,请注明软件出处 https://gitee.com/dotnetmoyu/SimpleAdmin
+// 4.基于本软件的作品,只能使用 SimpleAdmin 作为后台服务,除外情况不可商用且不允许二次分发或开源。
+// 5.请不得将本软件应用于危害国家安全、荣誉和利益的行为,不能以任何形式用于非法为目的的行为。
+// 6.任何基于本软件而产生的一切法律纠纷和责任,均于我司无关。
+
+namespace SimpleAdmin.Core;
///
/// 日志写入文件的组件
@@ -12,7 +22,7 @@ public sealed class LoggingConsoleComponent : IServiceComponent
{
services.AddConsoleFormatter(options =>
{
- options.MessageFormat = (logMsg) =>
+ options.MessageFormat = logMsg =>
{
//如果不是LoggingMonitor日志或者开启了格式化才格式化
if (logMsg.LogName != _monitorName && _loggingSetting.MessageFormat)
@@ -28,12 +38,10 @@ public sealed class LoggingConsoleComponent : IServiceComponent
}
return stringBuilder.ToString();
}
- else
- {
- return logMsg.Message;
- }
+ return logMsg.Message;
};
- options.WriteHandler = (logMsg, scopeProvider, writer, fmtMsg, opt) =>
+ options.WriteHandler = (logMsg, scopeProvider, writer,
+ fmtMsg, opt) =>
{
if (logMsg.LogName == _monitorName && !_loggingSetting.Monitor.Console) return;
var consoleColor = ConsoleColor.White;
@@ -59,13 +67,10 @@ public sealed class LoggingConsoleComponent : IServiceComponent
public static class TextWriterExtensions
{
- private const string DefaultForegroundColor = "\x1B[39m\x1B[22m";
- private const string DefaultBackgroundColor = "\x1B[49m";
+ private const string DEFAULT_FOREGROUND_COLOR = "\x1B[39m\x1B[22m";
+ private const string DEFAULT_BACKGROUND_COLOR = "\x1B[49m";
- public static void WriteWithColor(
- this TextWriter textWriter,
- string message,
- ConsoleColor? background,
+ public static void WriteWithColor(this TextWriter textWriter, string message, ConsoleColor? background,
ConsoleColor? foreground)
{
// Order:
@@ -91,11 +96,11 @@ public static class TextWriterExtensions
if (foregroundColor != null)
{
- textWriter.Write(DefaultForegroundColor);
+ textWriter.Write(DEFAULT_FOREGROUND_COLOR);
}
if (backgroundColor != null)
{
- textWriter.Write(DefaultBackgroundColor);
+ textWriter.Write(DEFAULT_BACKGROUND_COLOR);
}
}
@@ -119,7 +124,7 @@ public static class TextWriterExtensions
ConsoleColor.Cyan => "\x1B[1m\x1B[36m",
ConsoleColor.White => "\x1B[1m\x1B[37m",
- _ => DefaultForegroundColor
+ _ => DEFAULT_FOREGROUND_COLOR
};
}
@@ -136,7 +141,7 @@ public static class TextWriterExtensions
ConsoleColor.DarkCyan => "\x1B[46m",
ConsoleColor.Gray => "\x1B[47m",
- _ => DefaultBackgroundColor
+ _ => DEFAULT_BACKGROUND_COLOR
};
}
-}
\ No newline at end of file
+}
diff --git a/api/SimpleAdmin/SimpleAdmin.Core/Components/LoggingFileComponent.cs b/api/SimpleAdmin/SimpleAdmin.Core/Components/LoggingFileComponent.cs
index 54c25107a7bbbc80c9c8e70fc122a119a8fa58a1..990d0b30004fba9bfa6bc2985c15bc2d13bf984e 100644
--- a/api/SimpleAdmin/SimpleAdmin.Core/Components/LoggingFileComponent.cs
+++ b/api/SimpleAdmin/SimpleAdmin.Core/Components/LoggingFileComponent.cs
@@ -1,4 +1,16 @@
-using Microsoft.Extensions.Logging;
+// Copyright (c) 2022-Now 少林寺驻北固山办事处大神父王喇嘛
+//
+// Copyright (c) 2022-Now 少林寺驻北固山办事处大神父王喇嘛
+//
+// SimpleAdmin 基于 Apache License Version 2.0 协议发布,可用于商业项目,但必须遵守以下补充条款:
+// 1.请不要删除和修改根目录下的LICENSE文件。
+// 2.请不要删除和修改SimpleAdmin源码头部的版权声明。
+// 3.分发源码时候,请注明软件出处 https://gitee.com/dotnetmoyu/SimpleAdmin
+// 4.基于本软件的作品,只能使用 SimpleAdmin 作为后台服务,除外情况不可商用且不允许二次分发或开源。
+// 5.请不得将本软件应用于危害国家安全、荣誉和利益的行为,不能以任何形式用于非法为目的的行为。
+// 6.任何基于本软件而产生的一切法律纠纷和责任,均于我司无关。
+
+using System.Runtime.InteropServices;
namespace SimpleAdmin.Core;
@@ -10,7 +22,6 @@ public sealed class LoggingFileComponent : IServiceComponent
private readonly LoggingSetting _loggingSetting = App.GetConfig("Logging", true);
private readonly string _monitorName = "System.Logging.LoggingMonitor";
-
public void Load(IServiceCollection services, ComponentContext componentContext)
{
//获取默认日志等级
@@ -18,7 +29,7 @@ public sealed class LoggingFileComponent : IServiceComponent
//获取最大日志等级,默认Error
var maxLevel = (LogLevel)Enum.Parse(typeof(LogLevel), _loggingSetting.LogLevel.MaxLevel);
//获取程序根目录
- var rootPath = App.HostEnvironment.ContentRootPath;
+ // var rootPath = App.HostEnvironment.ContentRootPath;
//遍历日志等级
foreach (LogLevel level in Enum.GetValues(typeof(LogLevel)))
{
@@ -28,7 +39,7 @@ public sealed class LoggingFileComponent : IServiceComponent
//每天创建一个日志文件
services.AddLogging(builder =>
{
- var fileName = "logs/" + level.ToString() + "/{0:yyyy}-{0:MM}-{0:dd}.log";
+ var fileName = "logs/" + level + "/{0:yyyy}-{0:MM}-{0:dd}.log";
builder.AddFile(fileName, options =>
{
SetLogOptions(options, level);//日志格式化
@@ -50,9 +61,9 @@ public sealed class LoggingFileComponent : IServiceComponent
if (logLevel != null)//如果日志等级不为空
{
//过滤日志等级
- options.WriteFilter = (logMsg) =>
+ options.WriteFilter = logMsg =>
{
- //如果配置不写入mongitor日志和日志名称为System.Logging.LoggingMonitor
+ //如果配置不写入monitor日志和日志名称为System.Logging.LoggingMonitor
if (!_loggingSetting.Monitor.Write && logMsg.LogName == _monitorName)
return false;
return logMsg.LogLevel == logLevel;
@@ -61,13 +72,16 @@ public sealed class LoggingFileComponent : IServiceComponent
//定义日志文件名
options.FileNameRule = fileName =>
{
- return rootPath + "\\" + string.Format(fileName, DateTime.UtcNow);
+ var pathSeparator = @"\";
+ if (!RuntimeInformation.IsOSPlatform(OSPlatform.Windows))
+ pathSeparator = "/";//为linux或bsd时修改路径
+ return rootPath + pathSeparator + string.Format(fileName, DateTime.UtcNow);
};
options.FileSizeLimitBytes = 500000 * 1024;//日志最大500M
if (_loggingSetting.MessageFormat)
{
//日志内容格式化
- options.MessageFormat = (logMsg) =>
+ options.MessageFormat = logMsg =>
{
var stringBuilder = new StringBuilder();
stringBuilder.AppendLine("【日志级别】:" + logMsg.LogLevel);
@@ -82,4 +96,4 @@ public sealed class LoggingFileComponent : IServiceComponent
};
}
}
-}
\ No newline at end of file
+}
diff --git a/api/SimpleAdmin/SimpleAdmin.Core/Const/CacheConst.cs b/api/SimpleAdmin/SimpleAdmin.Core/Const/CacheConst.cs
new file mode 100644
index 0000000000000000000000000000000000000000..cf526aff73e10f156a2dad8bd90cc3f2bb4412b3
--- /dev/null
+++ b/api/SimpleAdmin/SimpleAdmin.Core/Const/CacheConst.cs
@@ -0,0 +1,47 @@
+// Copyright (c) 2022-Now 少林寺驻北固山办事处大神父王喇嘛
+//
+// SimpleAdmin 基于 Apache License Version 2.0 协议发布,可用于商业项目,但必须遵守以下补充条款:
+// 1.请不要删除和修改根目录下的LICENSE文件。
+// 2.请不要删除和修改SimpleAdmin源码头部的版权声明。
+// 3.分发源码时候,请注明软件出处 https://gitee.com/dotnetmoyu/SimpleAdmin
+// 4.基于本软件的作品,只能使用 SimpleAdmin 作为后台服务,除外情况不可商用且不允许二次分发或开源。
+// 5.请不得将本软件应用于危害国家安全、荣誉和利益的行为,不能以任何形式用于非法为目的的行为。
+// 6.任何基于本软件而产生的一切法律纠纷和责任,均于我司无关。
+
+namespace SimpleAdmin.Core;
+
+///
+/// Redis常量
+///
+public class CacheConst
+{
+ ///
+ /// Redis Key前缀(可删除)
+ ///
+ public const string CACHE_PREFIX_WEB = "SimpleAdminWeb:";
+
+ ///
+ /// Redis Key前缀(需要持久化,不随系统重启删除)
+ ///
+ public const string CACHE_PREFIX = "SimpleAdmin:";
+
+ ///
+ /// Redis Hash类型
+ ///
+ public const string CACHE_HASH = "Hash";
+
+ ///
+ /// 用户Token缓存Key
+ ///
+ public const string CACHE_USER_TOKEN = CACHE_PREFIX + "UserToken";
+
+
+ #region 消息中心队列key
+
+ ///
+ /// 通知消息队列
+ ///
+ public const string CACHE_NOTIFICATION = CACHE_PREFIX + "MsgNotification";
+
+ #endregion
+}
diff --git a/api/SimpleAdmin/SimpleAdmin.Core/Const/ClaimConst.cs b/api/SimpleAdmin/SimpleAdmin.Core/Const/ClaimConst.cs
index 81e6a6bd6297d4af70b8a6e399448aa21d0d8ed9..2a05cd09243051382f7af205fdeef52941103e69 100644
--- a/api/SimpleAdmin/SimpleAdmin.Core/Const/ClaimConst.cs
+++ b/api/SimpleAdmin/SimpleAdmin.Core/Const/ClaimConst.cs
@@ -1,4 +1,14 @@
-namespace SimpleAdmin.Core;
+// Copyright (c) 2022-Now 少林寺驻北固山办事处大神父王喇嘛
+//
+// SimpleAdmin 基于 Apache License Version 2.0 协议发布,可用于商业项目,但必须遵守以下补充条款:
+// 1.请不要删除和修改根目录下的LICENSE文件。
+// 2.请不要删除和修改SimpleAdmin源码头部的版权声明。
+// 3.分发源码时候,请注明软件出处 https://gitee.com/dotnetmoyu/SimpleAdmin
+// 4.基于本软件的作品,只能使用 SimpleAdmin 作为后台服务,除外情况不可商用且不允许二次分发或开源。
+// 5.请不得将本软件应用于危害国家安全、荣誉和利益的行为,不能以任何形式用于非法为目的的行为。
+// 6.任何基于本软件而产生的一切法律纠纷和责任,均于我司无关。
+
+namespace SimpleAdmin.Core;
///
/// 授权用户常量
@@ -8,25 +18,27 @@ public class ClaimConst
///
/// 用户Id
///
- public const string UserId = "UserId";
+ public const string USER_ID = "USER_ID";
///
/// 账号
///
- public const string Account = "Account";
+ public const string ACCOUNT = "ACCOUNT";
///
/// 名称
///
- public const string Name = "Name";
+ public const string NAME = "NAME";
///
/// 账号类型
///
- public const string IsSuperAdmin = "IsSuperAdmin";
+ public const string IS_SUPER_ADMIN = "IS_SUPER_ADMIN";
///
/// 组织机构Id
///
- public const string OrgId = "OrgId";
-}
\ No newline at end of file
+ public const string ORG_ID = "ORG_ID";
+
+ public const string TENANT_ID = "TENANT_ID";
+}
diff --git a/api/SimpleAdmin/SimpleAdmin.Core/Const/MqttConst.cs b/api/SimpleAdmin/SimpleAdmin.Core/Const/MqttConst.cs
new file mode 100644
index 0000000000000000000000000000000000000000..e30a351045788d13bbd4f1d6294480dc623dcffe
--- /dev/null
+++ b/api/SimpleAdmin/SimpleAdmin.Core/Const/MqttConst.cs
@@ -0,0 +1,40 @@
+// Copyright (c) 2022-Now 少林寺驻北固山办事处大神父王喇嘛
+//
+// SimpleAdmin 基于 Apache License Version 2.0 协议发布,可用于商业项目,但必须遵守以下补充条款:
+// 1.请不要删除和修改根目录下的LICENSE文件。
+// 2.请不要删除和修改SimpleAdmin源码头部的版权声明。
+// 3.分发源码时候,请注明软件出处 https://gitee.com/dotnetmoyu/SimpleAdmin
+// 4.基于本软件的作品,只能使用 SimpleAdmin 作为后台服务,除外情况不可商用且不允许二次分发或开源。
+// 5.请不得将本软件应用于危害国家安全、荣誉和利益的行为,不能以任何形式用于非法为目的的行为。
+// 6.任何基于本软件而产生的一切法律纠纷和责任,均于我司无关。
+
+namespace SimpleAdmin.Core;
+
+public class MqttConst
+{
+ ///
+ /// mqtt认证登录信息key
+ ///
+ public const string CACHE_MQTT_CLIENT_USER = CacheConst.CACHE_PREFIX_WEB + "MqttClientUser:";
+
+ ///
+ /// mqtt主题前缀
+ ///
+ public const string MQTT_TOPIC_PREFIX = "SimpleAdmin/";
+
+
+ ///
+ /// 登出
+ ///
+ public const string MQTT_MESSAGE_LOGIN_OUT = "LoginOut";
+
+ ///
+ /// 新消息
+ ///
+ public const string MQTT_MESSAGE_NEW = "NewMessage";
+
+ ///
+ /// 修改密码
+ ///
+ public const string MQTT_MESSAGE_UPDATE_PASSWORD = "UpdatePassword";
+}
diff --git a/api/SimpleAdmin/SimpleAdmin.Core/Const/SimpleAdminConst.cs b/api/SimpleAdmin/SimpleAdmin.Core/Const/SimpleAdminConst.cs
index 60e78c14c4fc33bb291659a7a95a96db72ed134a..74e3e7d7c968b0d9329a5ab1b4c9916535727bed 100644
--- a/api/SimpleAdmin/SimpleAdmin.Core/Const/SimpleAdminConst.cs
+++ b/api/SimpleAdmin/SimpleAdmin.Core/Const/SimpleAdminConst.cs
@@ -1,67 +1,19 @@
-namespace SimpleAdmin.Core;
+// Copyright (c) 2022-Now 少林寺驻北固山办事处大神父王喇嘛
+//
+// SimpleAdmin 基于 Apache License Version 2.0 协议发布,可用于商业项目,但必须遵守以下补充条款:
+// 1.请不要删除和修改根目录下的LICENSE文件。
+// 2.请不要删除和修改SimpleAdmin源码头部的版权声明。
+// 3.分发源码时候,请注明软件出处 https://gitee.com/dotnetmoyu/SimpleAdmin
+// 4.基于本软件的作品,只能使用 SimpleAdmin 作为后台服务,除外情况不可商用且不允许二次分发或开源。
+// 5.请不得将本软件应用于危害国家安全、荣誉和利益的行为,不能以任何形式用于非法为目的的行为。
+// 6.任何基于本软件而产生的一切法律纠纷和责任,均于我司无关。
+
+namespace SimpleAdmin.Core;
public class SimpleAdminConst
{
- #region 操作
-
- ///
- /// 添加操作
- ///
- public const string Add = "添加";
-
- ///
- /// 编辑操作
- ///
- public const string Edit = "编辑";
-
- ///
- /// 启用操作
- ///
- public const string Enable = "启用";
-
- ///
- /// 禁用操作
- ///
- public const string Disable = "禁用";
-
- ///
- /// 重置密码操作
- ///
- public const string ResestPwd = "重置密码";
-
- ///
- /// 用户授权操作
- ///
- public const string GrantRole = "授权";
-
- #endregion 操作
-
- #region 别称
-
- ///
- /// 组织
- ///
- public const string SysOrg = "组织";
-
- ///
- /// 机构
- ///
- public const string BizOrg = "机构";
-
- ///
- /// 职位
- ///
- public const string SysPos = "职位";
-
- ///
- /// 岗位
- ///
- public const string BizPos = "岗位";
-
- #endregion 别称
-
///
/// 0
///
- public const int Zero = 0;
-}
\ No newline at end of file
+ public const int ZERO = 0;
+}
diff --git a/api/SimpleAdmin/SimpleAdmin.Core/Core.Development.json b/api/SimpleAdmin/SimpleAdmin.Core/Core.Development.json
index 96cbe770b85363e693be71d16966443f9c39867c..da69914c705fa08a260a506d20373cd641539d92 100644
--- a/api/SimpleAdmin/SimpleAdmin.Core/Core.Development.json
+++ b/api/SimpleAdmin/SimpleAdmin.Core/Core.Development.json
@@ -22,4 +22,4 @@
"Microsoft.AspNetCore.HttpLogging.HttpLoggingMiddleware": "Information"
}
}
-}
+}
\ No newline at end of file
diff --git a/api/SimpleAdmin/SimpleAdmin.Core/Core.Production.json b/api/SimpleAdmin/SimpleAdmin.Core/Core.Production.json
index a3c26d33aeb78e0c03e5b21d18fed3935c008321..33595b5ef2d270382c95a26e483f3781105b1371 100644
--- a/api/SimpleAdmin/SimpleAdmin.Core/Core.Production.json
+++ b/api/SimpleAdmin/SimpleAdmin.Core/Core.Production.json
@@ -22,4 +22,4 @@
"Microsoft.AspNetCore.HttpLogging.HttpLoggingMiddleware": "Information"
}
}
-}
+}
\ No newline at end of file
diff --git a/api/SimpleAdmin/SimpleAdmin.Core/Dto/MqttMessage.cs b/api/SimpleAdmin/SimpleAdmin.Core/Dto/MqttMessage.cs
index a12464b64740885d4dcdb3c8e42d1c1ce2113923..7ef5b18ca76c8c674e307391b5ed811c71402f31 100644
--- a/api/SimpleAdmin/SimpleAdmin.Core/Dto/MqttMessage.cs
+++ b/api/SimpleAdmin/SimpleAdmin.Core/Dto/MqttMessage.cs
@@ -1,4 +1,14 @@
-namespace SimpleAdmin.Core;
+// Copyright (c) 2022-Now 少林寺驻北固山办事处大神父王喇嘛
+//
+// SimpleAdmin 基于 Apache License Version 2.0 协议发布,可用于商业项目,但必须遵守以下补充条款:
+// 1.请不要删除和修改根目录下的LICENSE文件。
+// 2.请不要删除和修改SimpleAdmin源码头部的版权声明。
+// 3.分发源码时候,请注明软件出处 https://gitee.com/dotnetmoyu/SimpleAdmin
+// 4.基于本软件的作品,只能使用 SimpleAdmin 作为后台服务,除外情况不可商用且不允许二次分发或开源。
+// 5.请不得将本软件应用于危害国家安全、荣誉和利益的行为,不能以任何形式用于非法为目的的行为。
+// 6.任何基于本软件而产生的一切法律纠纷和责任,均于我司无关。
+
+namespace SimpleAdmin.Core;
///
/// mqtt消息
@@ -13,10 +23,26 @@ public class MqttMessage
///
/// 消息内容
///
- public object Data { get; set; }
+ public MessageData Data { get; set; }
///
/// 时间
///
public DateTime DetTime { get; set; } = DateTime.Now;
-}
\ No newline at end of file
+}
+
+///
+/// 消息格式
+///
+public class MessageData
+{
+ ///
+ /// 主题
+ ///
+ public string Subject { get; set; }
+
+ ///
+ /// 内容
+ ///
+ public string Content { get; set; }
+}
diff --git a/api/SimpleAdmin/SimpleAdmin.Core/Dto/TokenInfo.cs b/api/SimpleAdmin/SimpleAdmin.Core/Dto/TokenInfo.cs
index a333bb6f7ecd18b5ebe7d6482a919f94320be152..caabfae7fdaf33fae0e0af56438fe76de7a7376e 100644
--- a/api/SimpleAdmin/SimpleAdmin.Core/Dto/TokenInfo.cs
+++ b/api/SimpleAdmin/SimpleAdmin.Core/Dto/TokenInfo.cs
@@ -1,4 +1,14 @@
-namespace SimpleAdmin.Core;
+// Copyright (c) 2022-Now 少林寺驻北固山办事处大神父王喇嘛
+//
+// SimpleAdmin 基于 Apache License Version 2.0 协议发布,可用于商业项目,但必须遵守以下补充条款:
+// 1.请不要删除和修改根目录下的LICENSE文件。
+// 2.请不要删除和修改SimpleAdmin源码头部的版权声明。
+// 3.分发源码时候,请注明软件出处 https://gitee.com/dotnetmoyu/SimpleAdmin
+// 4.基于本软件的作品,只能使用 SimpleAdmin 作为后台服务,除外情况不可商用且不允许二次分发或开源。
+// 5.请不得将本软件应用于危害国家安全、荣誉和利益的行为,不能以任何形式用于非法为目的的行为。
+// 6.任何基于本软件而产生的一切法律纠纷和责任,均于我司无关。
+
+namespace SimpleAdmin.Core;
///
/// Token信息
@@ -44,4 +54,4 @@ public class TokenInfo
/// token剩余有效期百分比
///
public double TokenRemainPercent { get; set; }
-}
\ No newline at end of file
+}
diff --git a/api/SimpleAdmin/SimpleAdmin.Core/Enum/Auth/AuthDeviceTypeEnum.cs b/api/SimpleAdmin/SimpleAdmin.Core/Enum/Auth/AuthDeviceTypeEnum.cs
new file mode 100644
index 0000000000000000000000000000000000000000..a3de0ec5571e412beaaaa3f87038d3eaf492547c
--- /dev/null
+++ b/api/SimpleAdmin/SimpleAdmin.Core/Enum/Auth/AuthDeviceTypeEnum.cs
@@ -0,0 +1,35 @@
+// Copyright (c) 2022-Now 少林寺驻北固山办事处大神父王喇嘛
+//
+// SimpleAdmin 基于 Apache License Version 2.0 协议发布,可用于商业项目,但必须遵守以下补充条款:
+// 1.请不要删除和修改根目录下的LICENSE文件。
+// 2.请不要删除和修改SimpleAdmin源码头部的版权声明。
+// 3.分发源码时候,请注明软件出处 https://gitee.com/dotnetmoyu/SimpleAdmin
+// 4.基于本软件的作品,只能使用 SimpleAdmin 作为后台服务,除外情况不可商用且不允许二次分发或开源。
+// 5.请不得将本软件应用于危害国家安全、荣誉和利益的行为,不能以任何形式用于非法为目的的行为。
+// 6.任何基于本软件而产生的一切法律纠纷和责任,均于我司无关。
+
+namespace SimpleAdmin.Core;
+
+///
+/// 登录设备类型枚举
+///
+public enum AuthDeviceTypeEnum
+{
+ ///
+ /// PC端
+ ///
+ [Description("PC端")]
+ PC,
+
+ ///
+ /// 移动端
+ ///
+ [Description("移动端")]
+ APP,
+
+ ///
+ /// 小程序
+ ///
+ [Description("小程序")]
+ MINI
+}
diff --git a/api/SimpleAdmin/SimpleAdmin.Core/Enum/Auth/AuthDeviceTypeEumu.cs b/api/SimpleAdmin/SimpleAdmin.Core/Enum/Auth/AuthDeviceTypeEumu.cs
deleted file mode 100644
index 3f30a3cfdb7447804d72bebdf5d77f2c102cd280..0000000000000000000000000000000000000000
--- a/api/SimpleAdmin/SimpleAdmin.Core/Enum/Auth/AuthDeviceTypeEumu.cs
+++ /dev/null
@@ -1,25 +0,0 @@
-namespace SimpleAdmin.Core;
-
-///
-/// 登录设备类型枚举
-///
-public enum AuthDeviceTypeEumu
-{
- ///
- /// PC端
- ///
- [Description("PC端")]
- PC,
-
- ///
- /// 移动端
- ///
- [Description("移动端")]
- APP,
-
- ///
- /// 小程序
- ///
- [Description("小程序")]
- MINI
-}
\ No newline at end of file
diff --git a/api/SimpleAdmin/SimpleAdmin.Core/Enum/Auth/LoginClientTypeEnum.cs b/api/SimpleAdmin/SimpleAdmin.Core/Enum/Auth/LoginClientTypeEnum.cs
index fa210a1d364ddc3732cea1ca8ac9fb38d520ec29..b24ac3ecd2706d979f8b1667020b67e987c059d2 100644
--- a/api/SimpleAdmin/SimpleAdmin.Core/Enum/Auth/LoginClientTypeEnum.cs
+++ b/api/SimpleAdmin/SimpleAdmin.Core/Enum/Auth/LoginClientTypeEnum.cs
@@ -1,4 +1,14 @@
-namespace SimpleAdmin.Core;
+// Copyright (c) 2022-Now 少林寺驻北固山办事处大神父王喇嘛
+//
+// SimpleAdmin 基于 Apache License Version 2.0 协议发布,可用于商业项目,但必须遵守以下补充条款:
+// 1.请不要删除和修改根目录下的LICENSE文件。
+// 2.请不要删除和修改SimpleAdmin源码头部的版权声明。
+// 3.分发源码时候,请注明软件出处 https://gitee.com/dotnetmoyu/SimpleAdmin
+// 4.基于本软件的作品,只能使用 SimpleAdmin 作为后台服务,除外情况不可商用且不允许二次分发或开源。
+// 5.请不得将本软件应用于危害国家安全、荣誉和利益的行为,不能以任何形式用于非法为目的的行为。
+// 6.任何基于本软件而产生的一切法律纠纷和责任,均于我司无关。
+
+namespace SimpleAdmin.Core;
///
/// 登录端类型枚举
@@ -16,4 +26,4 @@ public enum LoginClientTypeEnum
///
[Description("C端")]
C
-}
\ No newline at end of file
+}
diff --git a/api/SimpleAdmin/SimpleAdmin.Core/Enum/ErrorCodeEnum.cs b/api/SimpleAdmin/SimpleAdmin.Core/Enum/ErrorCodeEnum.cs
index ff9d92fcfd087388040f13e36d84d86d2d4f21a7..7000797fad944abab4e4750f615f76cc0c88e13d 100644
--- a/api/SimpleAdmin/SimpleAdmin.Core/Enum/ErrorCodeEnum.cs
+++ b/api/SimpleAdmin/SimpleAdmin.Core/Enum/ErrorCodeEnum.cs
@@ -1,4 +1,14 @@
-namespace SimpleAdmin.Core;
+// Copyright (c) 2022-Now 少林寺驻北固山办事处大神父王喇嘛
+//
+// SimpleAdmin 基于 Apache License Version 2.0 协议发布,可用于商业项目,但必须遵守以下补充条款:
+// 1.请不要删除和修改根目录下的LICENSE文件。
+// 2.请不要删除和修改SimpleAdmin源码头部的版权声明。
+// 3.分发源码时候,请注明软件出处 https://gitee.com/dotnetmoyu/SimpleAdmin
+// 4.基于本软件的作品,只能使用 SimpleAdmin 作为后台服务,除外情况不可商用且不允许二次分发或开源。
+// 5.请不得将本软件应用于危害国家安全、荣誉和利益的行为,不能以任何形式用于非法为目的的行为。
+// 6.任何基于本软件而产生的一切法律纠纷和责任,均于我司无关。
+
+namespace SimpleAdmin.Core;
///
/// 通用错误码
@@ -34,5 +44,5 @@ public enum ErrorCodeEnum
/// 没有权限
///
[ErrorCodeItemMetadata("没有权限")]
- A0004,
-}
\ No newline at end of file
+ A0004
+}
diff --git a/api/SimpleAdmin/SimpleAdmin.Core/Extension/LinqExtension.cs b/api/SimpleAdmin/SimpleAdmin.Core/Extension/LinqExtension.cs
index 4ef2fbe7fb848d76e2cacaf0bfb44e71bd6ce640..59aa4c87775d69a2f660018d5f9dabb3767e5a9d 100644
--- a/api/SimpleAdmin/SimpleAdmin.Core/Extension/LinqExtension.cs
+++ b/api/SimpleAdmin/SimpleAdmin.Core/Extension/LinqExtension.cs
@@ -1,4 +1,14 @@
-namespace SimpleAdmin.Core.Extension;
+// Copyright (c) 2022-Now 少林寺驻北固山办事处大神父王喇嘛
+//
+// SimpleAdmin 基于 Apache License Version 2.0 协议发布,可用于商业项目,但必须遵守以下补充条款:
+// 1.请不要删除和修改根目录下的LICENSE文件。
+// 2.请不要删除和修改SimpleAdmin源码头部的版权声明。
+// 3.分发源码时候,请注明软件出处 https://gitee.com/dotnetmoyu/SimpleAdmin
+// 4.基于本软件的作品,只能使用 SimpleAdmin 作为后台服务,除外情况不可商用且不允许二次分发或开源。
+// 5.请不得将本软件应用于危害国家安全、荣誉和利益的行为,不能以任何形式用于非法为目的的行为。
+// 6.任何基于本软件而产生的一切法律纠纷和责任,均于我司无关。
+
+namespace SimpleAdmin.Core.Extension;
///
/// Linq扩展
@@ -11,10 +21,10 @@ public static class LinqExtension
///
///
/// 第一个列表
- /// 第二个列表
+ /// 第二个列表
///
- public static bool ContainsAll(this List first, List secend)
+ public static bool ContainsAll(this List first, List? second)
{
- return secend.All(s => first.Any(f => f.Equals(s)));
+ return second.All(s => first.Any(f => f.Equals(s)));
}
-}
\ No newline at end of file
+}
diff --git a/api/SimpleAdmin/SimpleAdmin.Core/Extension/ObjectExtension.cs b/api/SimpleAdmin/SimpleAdmin.Core/Extension/ObjectExtension.cs
index 95158baeee77cd4ddff79eb28a766296cc4d2d56..01123e8a751df64c56048548af3f9ce6c99f3ca9 100644
--- a/api/SimpleAdmin/SimpleAdmin.Core/Extension/ObjectExtension.cs
+++ b/api/SimpleAdmin/SimpleAdmin.Core/Extension/ObjectExtension.cs
@@ -1,47 +1,53 @@
-using Newtonsoft.Json;
-using Newtonsoft.Json.Linq;
+// Copyright (c) 2022-Now 少林寺驻北固山办事处大神父王喇嘛
+//
+// SimpleAdmin 基于 Apache License Version 2.0 协议发布,可用于商业项目,但必须遵守以下补充条款:
+// 1.请不要删除和修改根目录下的LICENSE文件。
+// 2.请不要删除和修改SimpleAdmin源码头部的版权声明。
+// 3.分发源码时候,请注明软件出处 https://gitee.com/dotnetmoyu/SimpleAdmin
+// 4.基于本软件的作品,只能使用 SimpleAdmin 作为后台服务,除外情况不可商用且不允许二次分发或开源。
+// 5.请不得将本软件应用于危害国家安全、荣誉和利益的行为,不能以任何形式用于非法为目的的行为。
+// 6.任何基于本软件而产生的一切法律纠纷和责任,均于我司无关。
-namespace SimpleAdmin.Core
+namespace SimpleAdmin.Core;
+
+///
+/// object拓展
+///
+public static class ObjectExtension
{
///
- /// object拓展
+ /// json字符串序列化
///
- public static class ObjectExtension
+ ///
+ ///
+ public static object ToObject(this string json)
{
- ///
- /// json字符串序列化
- ///
- ///
- ///
- public static object ToObject(this string json)
- {
- return string.IsNullOrEmpty(json) ? null : JsonConvert.DeserializeObject(json);
- }
+ return string.IsNullOrEmpty(json) ? null : JsonConvert.DeserializeObject(json);
+ }
- ///
- /// json字符串序列化
- ///
- ///
- ///
- ///
- public static T ToObject(this string json)
+ ///
+ /// json字符串序列化
+ ///
+ ///
+ ///
+ ///
+ public static T ToObject(this string json)
+ {
+ if (json != null)
{
- if (json != null)
- {
- json = json.Replace(" ", "");
- return JsonConvert.DeserializeObject(json);
- }
- else return default;
+ json = json.Replace(" ", "");
+ return JsonConvert.DeserializeObject(json);
}
+ return default;
+ }
- ///
- /// json字符串序列化
- ///
- ///
- ///
- public static JObject ToJObject(this string json)
- {
- return json == null ? JObject.Parse("{}") : JObject.Parse(json.Replace(" ", ""));
- }
+ ///
+ /// json字符串序列化
+ ///
+ ///
+ ///
+ public static JObject ToJObject(this string json)
+ {
+ return json == null ? JObject.Parse("{}") : JObject.Parse(json.Replace(" ", ""));
}
-}
\ No newline at end of file
+}
diff --git a/api/SimpleAdmin/SimpleAdmin.Core/GlobalUsings.cs b/api/SimpleAdmin/SimpleAdmin.Core/GlobalUsings.cs
index 321abfb1ff4095a9ca877bda52ab8ea79df77f02..47848d48fe5b61f9cc0f328ad0d6d838b9b4f91c 100644
--- a/api/SimpleAdmin/SimpleAdmin.Core/GlobalUsings.cs
+++ b/api/SimpleAdmin/SimpleAdmin.Core/GlobalUsings.cs
@@ -1,13 +1,24 @@
-global using Furion;
-global using Furion.DataValidation;
-global using Furion.DependencyInjection;
-global using Furion.FriendlyException;
-global using Furion.Logging;
+// Copyright (c) 2022-Now 少林寺驻北固山办事处大神父王喇嘛
+//
+// SimpleAdmin 基于 Apache License Version 2.0 协议发布,可用于商业项目,但必须遵守以下补充条款:
+// 1.请不要删除和修改根目录下的LICENSE文件。
+// 2.请不要删除和修改SimpleAdmin源码头部的版权声明。
+// 3.分发源码时候,请注明软件出处 https://gitee.com/dotnetmoyu/SimpleAdmin
+// 4.基于本软件的作品,只能使用 SimpleAdmin 作为后台服务,除外情况不可商用且不允许二次分发或开源。
+// 5.请不得将本软件应用于危害国家安全、荣誉和利益的行为,不能以任何形式用于非法为目的的行为。
+// 6.任何基于本软件而产生的一切法律纠纷和责任,均于我司无关。
+
+global using MoYu;
+global using MoYu.DataValidation;
+global using MoYu.DependencyInjection;
+global using MoYu.FriendlyException;
+global using MoYu.Logging;
global using Microsoft.AspNetCore.Builder;
global using Microsoft.AspNetCore.Hosting;
global using Microsoft.AspNetCore.Http;
global using Microsoft.AspNetCore.Mvc;
global using Microsoft.Extensions.DependencyInjection;
+global using Microsoft.Extensions.Logging;
global using System;
global using System.Collections.Generic;
global using System.ComponentModel;
@@ -17,4 +28,25 @@ global using System.Linq;
global using System.Text;
global using System.Threading.Tasks;
global using Yitter.IdGenerator;
-global using Microsoft.Extensions.Logging;
\ No newline at end of file
+global using Microsoft.AspNetCore.ResponseCompression;
+global using System.IO.Compression;
+global using Newtonsoft.Json;
+global using Newtonsoft.Json.Linq;
+global using MoYu.UnifyResult;
+global using Microsoft.AspNetCore.Mvc.Filters;
+global using Lazy.Captcha.Core;
+global using Lazy.Captcha.Core.Generator.Image;
+global using Lazy.Captcha.Core.Generator.Image.Option;
+global using Org.BouncyCastle.Utilities.Encoders;
+global using Org.BouncyCastle.Crypto.Digests;
+global using Org.BouncyCastle.Crypto.Generators;
+global using Org.BouncyCastle.Crypto.Parameters;
+global using Org.BouncyCastle.Math;
+global using Org.BouncyCastle.Math.EC;
+global using Org.BouncyCastle.Security;
+global using SkiaSharp;
+global using System.Drawing;
+global using System.Drawing.Drawing2D;
+global using ICSharpCode.SharpZipLib.Checksum;
+global using ICSharpCode.SharpZipLib.Zip;
+global using System.Net;
diff --git a/api/SimpleAdmin/SimpleAdmin.Core/Options/BaseOptions.cs b/api/SimpleAdmin/SimpleAdmin.Core/Options/BaseOptions.cs
index 54643b95f53ab6565227034aaff5c971dccdc4fc..2ab498878c0c13bb3e8a993509245f1ab8fe2e0b 100644
--- a/api/SimpleAdmin/SimpleAdmin.Core/Options/BaseOptions.cs
+++ b/api/SimpleAdmin/SimpleAdmin.Core/Options/BaseOptions.cs
@@ -1,4 +1,14 @@
-namespace SimpleAdmin.Core;
+// Copyright (c) 2022-Now 少林寺驻北固山办事处大神父王喇嘛
+//
+// SimpleAdmin 基于 Apache License Version 2.0 协议发布,可用于商业项目,但必须遵守以下补充条款:
+// 1.请不要删除和修改根目录下的LICENSE文件。
+// 2.请不要删除和修改SimpleAdmin源码头部的版权声明。
+// 3.分发源码时候,请注明软件出处 https://gitee.com/dotnetmoyu/SimpleAdmin
+// 4.基于本软件的作品,只能使用 SimpleAdmin 作为后台服务,除外情况不可商用且不允许二次分发或开源。
+// 5.请不得将本软件应用于危害国家安全、荣誉和利益的行为,不能以任何形式用于非法为目的的行为。
+// 6.任何基于本软件而产生的一切法律纠纷和责任,均于我司无关。
+
+namespace SimpleAdmin.Core;
///
/// 默认业务配置
@@ -14,4 +24,4 @@ public class BaseOptions
/// 初始化数据
///
public bool InitSeedData { get; set; } = false;
-}
\ No newline at end of file
+}
diff --git a/api/SimpleAdmin/SimpleAdmin.Core/Options/LoggingSetting.cs b/api/SimpleAdmin/SimpleAdmin.Core/Options/LoggingSetting.cs
index b8f0ebb8f92f6ec81abe80879868b6bfcc0fe604..5165f2f5d6577b2216593fc791ffbcd4ab2d61ac 100644
--- a/api/SimpleAdmin/SimpleAdmin.Core/Options/LoggingSetting.cs
+++ b/api/SimpleAdmin/SimpleAdmin.Core/Options/LoggingSetting.cs
@@ -1,4 +1,14 @@
-namespace SimpleAdmin.Core;
+// Copyright (c) 2022-Now 少林寺驻北固山办事处大神父王喇嘛
+//
+// SimpleAdmin 基于 Apache License Version 2.0 协议发布,可用于商业项目,但必须遵守以下补充条款:
+// 1.请不要删除和修改根目录下的LICENSE文件。
+// 2.请不要删除和修改SimpleAdmin源码头部的版权声明。
+// 3.分发源码时候,请注明软件出处 https://gitee.com/dotnetmoyu/SimpleAdmin
+// 4.基于本软件的作品,只能使用 SimpleAdmin 作为后台服务,除外情况不可商用且不允许二次分发或开源。
+// 5.请不得将本软件应用于危害国家安全、荣誉和利益的行为,不能以任何形式用于非法为目的的行为。
+// 6.任何基于本软件而产生的一切法律纠纷和责任,均于我司无关。
+
+namespace SimpleAdmin.Core;
///
/// 日志配置
@@ -15,7 +25,6 @@ public class LoggingSetting
///
public bool MessageFormat { get; set; }
-
///
/// 日志等级
///
@@ -37,7 +46,6 @@ public class LoggingSetting
public bool Console { get; set; }
}
-
///
/// 日志等级
///
@@ -53,4 +61,4 @@ public class LoggingSetting
///
public string MaxLevel { get; set; } = "Error";
}
-}
\ No newline at end of file
+}
diff --git a/api/SimpleAdmin/SimpleAdmin.Core/SimpleAdmin.Core.csproj b/api/SimpleAdmin/SimpleAdmin.Core/SimpleAdmin.Core.csproj
index 4fb1c11823539daa54985e480096c6fbb0297b94..95acda5db2d0790ae630fc4bf36f7d298ea4117b 100644
--- a/api/SimpleAdmin/SimpleAdmin.Core/SimpleAdmin.Core.csproj
+++ b/api/SimpleAdmin/SimpleAdmin.Core/SimpleAdmin.Core.csproj
@@ -1,37 +1,29 @@
-
- net7.0;net6.0
- 1701;1702;8616;1591;8618;8619;8629;8602;8603;8604;8625;8765
- SimpleAdmin.Core.xml
- enable
- enable
-
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
+
-
-
-
-
-
-
-
-
- PreserveNewest
-
-
- PreserveNewest
-
-
+
+
+ PreserveNewest
+
+
+ PreserveNewest
+
+
\ No newline at end of file
diff --git a/api/SimpleAdmin/SimpleAdmin.Core/SimpleAdmin.Core.xml b/api/SimpleAdmin/SimpleAdmin.Core/SimpleAdmin.Core.xml
index 10d5f4f55b6fdf36819e11a148f871f3101c36dc..fa27763ca23a3b1d7cba3202cb333418bb17c670 100644
--- a/api/SimpleAdmin/SimpleAdmin.Core/SimpleAdmin.Core.xml
+++ b/api/SimpleAdmin/SimpleAdmin.Core/SimpleAdmin.Core.xml
@@ -4,11 +4,6 @@
SimpleAdmin.Core
-
-
- 批量更新
-
-
代码生成
@@ -54,6 +49,11 @@
验证Id不能为 空
+
+
+ 验证Id列表不能为空
+
+
文件上传输入参数
@@ -74,6 +74,11 @@
主键Id
+
+
+ 主键Id列表
+
+
Id列表输入
@@ -84,12 +89,12 @@
全局分页查询输入参数
-
+
当前页码
-
+
每页条数
@@ -139,94 +144,99 @@
日志写入文件的组件
-
+
日志格式化
-
+
- 授权用户常量
+ Redis常量
-
+
- 用户Id
+ Redis Key前缀(可删除)
-
+
- 账号
+ Redis Key前缀(需要持久化,不随系统重启删除)
-
+
- 名称
+ Redis Hash类型
-
+
- 账号类型
+ 用户Token缓存Key
-
+
- 组织机构Id
+ 通知消息队列
-
+
- 添加操作
+ 授权用户常量
-
+
- 编辑操作
+ 用户Id
-
+
- 启用操作
+ 账号
-
+
- 禁用操作
+ 名称
-
+
- 重置密码操作
+ 账号类型
-
+
- 用户授权操作
+ 组织机构Id
-
+
- 组织
+ mqtt认证登录信息key
-
+
- 机构
+ mqtt主题前缀
-
+
- 职位
+ 登出
-
+
- 岗位
+ 新消息
-
+
+
+ 修改密码
+
+
+
0
@@ -251,6 +261,21 @@
时间
+
+
+ 消息格式
+
+
+
+
+ 主题
+
+
+
+
+ 内容
+
+
Token信息
@@ -296,22 +321,22 @@
token剩余有效期百分比
-
+
登录设备类型枚举
-
+
PC端
-
+
移动端
-
+
小程序
@@ -372,7 +397,7 @@
第一个列表
- 第二个列表
+ 第二个列表
@@ -508,7 +533,7 @@
规范化RESTful风格返回值
-
+
异常返回
@@ -524,7 +549,7 @@
-
+
验证失败返回
@@ -532,7 +557,7 @@
-
+
状态码响应拦截
@@ -541,7 +566,7 @@
-
+
返回 RESTful 风格结果集
@@ -602,7 +627,7 @@
验证码数
长度
- 高度
+ 高度
字体大小
类型 0:数字 1:字符 2:计算
@@ -1047,21 +1072,21 @@
base64转bitmap
-
+
-
+
base64转bitmap
-
+
base64转image格式
-
+
diff --git a/api/SimpleAdmin/SimpleAdmin.Core/Startup.cs b/api/SimpleAdmin/SimpleAdmin.Core/Startup.cs
index 6e1baea6ee90a8675a72a5d868bb13adb217627b..32b127f39af90dd57207226d182a5f817c72a19f 100644
--- a/api/SimpleAdmin/SimpleAdmin.Core/Startup.cs
+++ b/api/SimpleAdmin/SimpleAdmin.Core/Startup.cs
@@ -1,4 +1,16 @@
-namespace SimpleAdmin.Core;
+// Copyright (c) 2022-Now 少林寺驻北固山办事处大神父王喇嘛
+//
+// SimpleAdmin 基于 Apache License Version 2.0 协议发布,可用于商业项目,但必须遵守以下补充条款:
+// 1.请不要删除和修改根目录下的LICENSE文件。
+// 2.请不要删除和修改SimpleAdmin源码头部的版权声明。
+// 3.分发源码时候,请注明软件出处 https://gitee.com/dotnetmoyu/SimpleAdmin
+// 4.基于本软件的作品,只能使用 SimpleAdmin 作为后台服务,除外情况不可商用且不允许二次分发或开源。
+// 5.请不得将本软件应用于危害国家安全、荣誉和利益的行为,不能以任何形式用于非法为目的的行为。
+// 6.任何基于本软件而产生的一切法律纠纷和责任,均于我司无关。
+
+using SimpleAdmin.Core.Utils;
+
+namespace SimpleAdmin.Core;
///
/// AppStartup启动类
@@ -21,4 +33,4 @@ public class Startup : AppStartup
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
}
-}
\ No newline at end of file
+}
diff --git a/api/SimpleAdmin/SimpleAdmin.Core/UnifyResult/SimpleAdminResult.cs b/api/SimpleAdmin/SimpleAdmin.Core/UnifyResult/SimpleAdminResult.cs
index 90a68f6b04b359662578adf64f99520967c3f5e0..9ac82d55b2ae3c414998b8d1cc8d98b4ac83291f 100644
--- a/api/SimpleAdmin/SimpleAdmin.Core/UnifyResult/SimpleAdminResult.cs
+++ b/api/SimpleAdmin/SimpleAdmin.Core/UnifyResult/SimpleAdminResult.cs
@@ -1,4 +1,14 @@
-namespace SimpleAdmin.Core;
+// Copyright (c) 2022-Now 少林寺驻北固山办事处大神父王喇嘛
+//
+// SimpleAdmin 基于 Apache License Version 2.0 协议发布,可用于商业项目,但必须遵守以下补充条款:
+// 1.请不要删除和修改根目录下的LICENSE文件。
+// 2.请不要删除和修改SimpleAdmin源码头部的版权声明。
+// 3.分发源码时候,请注明软件出处 https://gitee.com/dotnetmoyu/SimpleAdmin
+// 4.基于本软件的作品,只能使用 SimpleAdmin 作为后台服务,除外情况不可商用且不允许二次分发或开源。
+// 5.请不得将本软件应用于危害国家安全、荣誉和利益的行为,不能以任何形式用于非法为目的的行为。
+// 6.任何基于本软件而产生的一切法律纠纷和责任,均于我司无关。
+
+namespace SimpleAdmin.Core;
///
/// 全局返回结果
@@ -30,4 +40,4 @@ public class SimpleAdminResult
/// 时间
///
public DateTime Time { get; set; }
-}
\ No newline at end of file
+}
diff --git a/api/SimpleAdmin/SimpleAdmin.Core/UnifyResult/SimpleAdminResultProvider.cs b/api/SimpleAdmin/SimpleAdmin.Core/UnifyResult/SimpleAdminResultProvider.cs
index a81cca819ccdea1e023c5f97bfb630dbedadca9b..ca38d35f121ace057f4c84e594e0a8d5fcc77a9a 100644
--- a/api/SimpleAdmin/SimpleAdmin.Core/UnifyResult/SimpleAdminResultProvider.cs
+++ b/api/SimpleAdmin/SimpleAdmin.Core/UnifyResult/SimpleAdminResultProvider.cs
@@ -1,14 +1,28 @@
-using Furion.UnifyResult;
-using Microsoft.AspNetCore.Mvc.Filters;
+// Copyright (c) 2022-Now 少林寺驻北固山办事处大神父王喇嘛
+//
+// SimpleAdmin 基于 Apache License Version 2.0 协议发布,可用于商业项目,但必须遵守以下补充条款:
+// 1.请不要删除和修改根目录下的LICENSE文件。
+// 2.请不要删除和修改SimpleAdmin源码头部的版权声明。
+// 3.分发源码时候,请注明软件出处 https://gitee.com/dotnetmoyu/SimpleAdmin
+// 4.基于本软件的作品,只能使用 SimpleAdmin 作为后台服务,除外情况不可商用且不允许二次分发或开源。
+// 5.请不得将本软件应用于危害国家安全、荣誉和利益的行为,不能以任何形式用于非法为目的的行为。
+// 6.任何基于本软件而产生的一切法律纠纷和责任,均于我司无关。
namespace SimpleAdmin.Core;
///
/// 规范化RESTful风格返回值
///
-[SuppressSniffer, UnifyModel(typeof(SimpleAdminResult<>))]
+[SuppressSniffer]
+[UnifyModel(typeof(SimpleAdminResult<>))]
public class SimpleAdminResultProvider : IUnifyResultProvider
{
+ public IActionResult OnAuthorizeException(DefaultHttpContext context, ExceptionMetadata metadata)
+ {
+ return new JsonResult(ResTfulResult(metadata.StatusCode, data: metadata.Data, errors: metadata.Errors),
+ UnifyContext.GetSerializerSettings(context));
+ }
+
///
/// 异常返回
///
@@ -17,7 +31,7 @@ public class SimpleAdminResultProvider : IUnifyResultProvider
///
public IActionResult OnException(ExceptionContext context, ExceptionMetadata metadata)
{
- return new JsonResult(RESTfulResult(metadata.StatusCode, data: metadata.Data, errors: metadata.Errors));
+ return new JsonResult(ResTfulResult(metadata.StatusCode, data: metadata.Data, errors: metadata.Errors));
}
///
@@ -28,7 +42,7 @@ public class SimpleAdminResultProvider : IUnifyResultProvider
///
public IActionResult OnSucceeded(ActionExecutedContext context, object data)
{
- return new JsonResult(RESTfulResult(StatusCodes.Status200OK, true, data));
+ return new JsonResult(ResTfulResult(StatusCodes.Status200OK, true, data));
}
///
@@ -39,7 +53,7 @@ public class SimpleAdminResultProvider : IUnifyResultProvider
///
public IActionResult OnValidateFailed(ActionExecutingContext context, ValidationMetadata metadata)
{
- return new JsonResult(RESTfulResult(metadata.StatusCode ?? StatusCodes.Status400BadRequest, data: metadata.Data,
+ return new JsonResult(ResTfulResult(metadata.StatusCode ?? StatusCodes.Status400BadRequest, data: metadata.Data,
errors: metadata.FirstErrorMessage ?? metadata.Message));
}
@@ -50,8 +64,7 @@ public class SimpleAdminResultProvider : IUnifyResultProvider
///
///
///
- public async Task OnResponseStatusCodes(HttpContext context, int statusCode,
- UnifyResultSettingsOptions unifyResultSettings = null)
+ public async Task OnResponseStatusCodes(HttpContext context, int statusCode, UnifyResultSettingsOptions unifyResultSettings = null)
{
// 设置响应状态码
UnifyContext.SetResponseStatusCodes(context, statusCode, unifyResultSettings);
@@ -60,17 +73,14 @@ public class SimpleAdminResultProvider : IUnifyResultProvider
{
// 处理 401 状态码
case StatusCodes.Status401Unauthorized:
- await context.Response.WriteAsJsonAsync(RESTfulResult(statusCode, errors: "登录已过期,请重新登录"),
+ await context.Response.WriteAsJsonAsync(ResTfulResult(statusCode, errors: "登录已过期,请重新登录"),
App.GetOptions()?.JsonSerializerOptions);
break;
// 处理 403 状态码
case StatusCodes.Status403Forbidden:
- await context.Response.WriteAsJsonAsync(
- RESTfulResult(statusCode, errors: "禁止访问,没有权限", data: context.Request.Path),
+ await context.Response.WriteAsJsonAsync(ResTfulResult(statusCode, errors: "禁止访问,没有权限", data: context.Request.Path),
App.GetOptions()?.JsonSerializerOptions);
break;
-
- default: break;
}
}
@@ -82,8 +92,8 @@ public class SimpleAdminResultProvider : IUnifyResultProvider
/// 数据
/// 错误信息
///
- private static SimpleAdminResult RESTfulResult(int statusCode, bool succeeded = default,
- object data = default, object errors = default)
+ private static SimpleAdminResult ResTfulResult(int statusCode, bool succeeded = default, object data = default,
+ object errors = default)
{
return new SimpleAdminResult
{
@@ -94,4 +104,4 @@ public class SimpleAdminResultProvider : IUnifyResultProvider
Time = DateTime.Now
};
}
-}
\ No newline at end of file
+}
diff --git a/api/SimpleAdmin/SimpleAdmin.Core/Utils/Captcha/CaptchaInfo.cs b/api/SimpleAdmin/SimpleAdmin.Core/Utils/Captcha/CaptchaInfo.cs
index 3dc42d4786aa2357ebf8fcc6da587ca531e4c1f5..575fdb282d62125e12647a20f1f6104257cd69f9 100644
--- a/api/SimpleAdmin/SimpleAdmin.Core/Utils/Captcha/CaptchaInfo.cs
+++ b/api/SimpleAdmin/SimpleAdmin.Core/Utils/Captcha/CaptchaInfo.cs
@@ -1,4 +1,14 @@
-namespace SimpleAdmin.Core.Utils;
+// Copyright (c) 2022-Now 少林寺驻北固山办事处大神父王喇嘛
+//
+// SimpleAdmin 基于 Apache License Version 2.0 协议发布,可用于商业项目,但必须遵守以下补充条款:
+// 1.请不要删除和修改根目录下的LICENSE文件。
+// 2.请不要删除和修改SimpleAdmin源码头部的版权声明。
+// 3.分发源码时候,请注明软件出处 https://gitee.com/dotnetmoyu/SimpleAdmin
+// 4.基于本软件的作品,只能使用 SimpleAdmin 作为后台服务,除外情况不可商用且不允许二次分发或开源。
+// 5.请不得将本软件应用于危害国家安全、荣誉和利益的行为,不能以任何形式用于非法为目的的行为。
+// 6.任何基于本软件而产生的一切法律纠纷和责任,均于我司无关。
+
+namespace SimpleAdmin.Core.Utils;
///
/// 验证码信息
@@ -13,11 +23,13 @@ public class CaptchaInfo
///
/// 验证码数据流
///
- public byte[] Image { get; set; }
+ public byte[] Image { get; set; }
///
/// base64
///
public string Base64Str
- { get { return "data:image/png;base64," + Convert.ToBase64String(Image); } }
-}
\ No newline at end of file
+ {
+ get { return "data:image/png;base64," + Convert.ToBase64String(Image); }
+ }
+}
diff --git a/api/SimpleAdmin/SimpleAdmin.Core/Utils/Captcha/CaptchaType.cs b/api/SimpleAdmin/SimpleAdmin.Core/Utils/Captcha/CaptchaType.cs
index 5efa057db355cbef8a1b67b28693a1d0e492a9e6..e08d7aa50feae1235a71f62af557953b67a9ea94 100644
--- a/api/SimpleAdmin/SimpleAdmin.Core/Utils/Captcha/CaptchaType.cs
+++ b/api/SimpleAdmin/SimpleAdmin.Core/Utils/Captcha/CaptchaType.cs
@@ -1,4 +1,14 @@
-namespace SimpleAdmin.Core.Utils;
+// Copyright (c) 2022-Now 少林寺驻北固山办事处大神父王喇嘛
+//
+// SimpleAdmin 基于 Apache License Version 2.0 协议发布,可用于商业项目,但必须遵守以下补充条款:
+// 1.请不要删除和修改根目录下的LICENSE文件。
+// 2.请不要删除和修改SimpleAdmin源码头部的版权声明。
+// 3.分发源码时候,请注明软件出处 https://gitee.com/dotnetmoyu/SimpleAdmin
+// 4.基于本软件的作品,只能使用 SimpleAdmin 作为后台服务,除外情况不可商用且不允许二次分发或开源。
+// 5.请不得将本软件应用于危害国家安全、荣誉和利益的行为,不能以任何形式用于非法为目的的行为。
+// 6.任何基于本软件而产生的一切法律纠纷和责任,均于我司无关。
+
+namespace SimpleAdmin.Core.Utils;
///
/// 验证码类型
@@ -21,5 +31,5 @@ public enum CaptchaType
/// 数字运算验证码
///
[Description("数字运算验证码")]
- ARITH = 2,
-}
\ No newline at end of file
+ ARITH = 2
+}
diff --git a/api/SimpleAdmin/SimpleAdmin.Core/Utils/Captcha/CaptchaUtil.cs b/api/SimpleAdmin/SimpleAdmin.Core/Utils/Captcha/CaptchaUtil.cs
index f83417aa40e21a443138f69930a6496bbc5e0701..48c00212aa74ba87917b20810ca754802e00465b 100644
--- a/api/SimpleAdmin/SimpleAdmin.Core/Utils/Captcha/CaptchaUtil.cs
+++ b/api/SimpleAdmin/SimpleAdmin.Core/Utils/Captcha/CaptchaUtil.cs
@@ -1,7 +1,12 @@
-using Lazy.Captcha.Core.Generator.Image.Option;
-using Lazy.Captcha.Core.Generator.Image;
-using Lazy.Captcha.Core;
-using SkiaSharp;
+// Copyright (c) 2022-Now 少林寺驻北固山办事处大神父王喇嘛
+//
+// SimpleAdmin 基于 Apache License Version 2.0 协议发布,可用于商业项目,但必须遵守以下补充条款:
+// 1.请不要删除和修改根目录下的LICENSE文件。
+// 2.请不要删除和修改SimpleAdmin源码头部的版权声明。
+// 3.分发源码时候,请注明软件出处 https://gitee.com/dotnetmoyu/SimpleAdmin
+// 4.基于本软件的作品,只能使用 SimpleAdmin 作为后台服务,除外情况不可商用且不允许二次分发或开源。
+// 5.请不得将本软件应用于危害国家安全、荣誉和利益的行为,不能以任何形式用于非法为目的的行为。
+// 6.任何基于本软件而产生的一切法律纠纷和责任,均于我司无关。
namespace SimpleAdmin.Core.Utils;
@@ -15,11 +20,12 @@ public static class CaptchaUtil
///
/// 验证码数
/// 长度
- /// 高度
+ /// 高度
/// 字体大小
/// 类型 0:数字 1:字符 2:计算
///
- public static CaptchaInfo CreateCaptcha(CaptchaType type = CaptchaType.CHAR, int length = 4, int width = 170, int heigh = 50, int fontSize = 20)
+ public static CaptchaInfo CreateCaptcha(CaptchaType type = CaptchaType.CHAR, int length = 4, int width = 170,
+ int height = 50, int fontSize = 20)
{
//初始化验证码
string charCode;
@@ -39,12 +45,12 @@ public static class CaptchaUtil
break;
}
var imageGenerator = new DefaultCaptchaImageGenerator();
- var imageGeneratorOption = new CaptchaImageGeneratorOption()
+ var imageGeneratorOption = new CaptchaImageGeneratorOption
{
// 必须设置
ForegroundColors = DefaultColors.Instance.Colors,
Width = width,
- Height = heigh,
+ Height = height,
FontSize = fontSize,
TextBold = true,
BubbleCount = 1,
@@ -53,7 +59,7 @@ public static class CaptchaUtil
var bytes = imageGenerator.Generate(charCode, imageGeneratorOption);
- var captchaInfo = new CaptchaInfo()
+ var captchaInfo = new CaptchaInfo
{
Code = type.ToString() == "ARITH" ? resultCode : charCode,
Image = bytes
@@ -108,11 +114,11 @@ public static class CaptchaUtil
///
public static string CreateArithCode(out string resultCode)
{
- var checkCode = "";
+ string checkCode;
var random = new Random();
var intFirst = random.Next(1, 10);//生成第一个数字
var intSec = random.Next(1, 10);//生成第二个数字
- var intTemp = 0;
+ int intTemp;
switch (random.Next(1, 3).ToString())
{
case "2":
@@ -133,4 +139,4 @@ public static class CaptchaUtil
}
return checkCode;
}
-}
\ No newline at end of file
+}
diff --git a/api/SimpleAdmin/SimpleAdmin.Core/Utils/CommonUtils.cs b/api/SimpleAdmin/SimpleAdmin.Core/Utils/CommonUtils.cs
index 0a91de040d76c390981a17c5298e913a2e6eec1a..f57597b60a39b998bc528a77bd45bee4d603cc55 100644
--- a/api/SimpleAdmin/SimpleAdmin.Core/Utils/CommonUtils.cs
+++ b/api/SimpleAdmin/SimpleAdmin.Core/Utils/CommonUtils.cs
@@ -1,4 +1,14 @@
-namespace SimpleAdmin.Core.Utils;
+// Copyright (c) 2022-Now 少林寺驻北固山办事处大神父王喇嘛
+//
+// SimpleAdmin 基于 Apache License Version 2.0 协议发布,可用于商业项目,但必须遵守以下补充条款:
+// 1.请不要删除和修改根目录下的LICENSE文件。
+// 2.请不要删除和修改SimpleAdmin源码头部的版权声明。
+// 3.分发源码时候,请注明软件出处 https://gitee.com/dotnetmoyu/SimpleAdmin
+// 4.基于本软件的作品,只能使用 SimpleAdmin 作为后台服务,除外情况不可商用且不允许二次分发或开源。
+// 5.请不得将本软件应用于危害国家安全、荣誉和利益的行为,不能以任何形式用于非法为目的的行为。
+// 6.任何基于本软件而产生的一切法律纠纷和责任,均于我司无关。
+
+namespace SimpleAdmin.Core.Utils;
///
/// 公共功能
@@ -13,4 +23,4 @@ public static class CommonUtils
{
return YitIdHelper.NextId();
}
-}
\ No newline at end of file
+}
diff --git a/api/SimpleAdmin/SimpleAdmin.Core/Utils/Cryptogram/CryptogramUtil.cs b/api/SimpleAdmin/SimpleAdmin.Core/Utils/Cryptogram/CryptogramUtil.cs
index 77fbb68bc6a97d058e2d2bcc039da3dfe2c248c8..2c1420b620daed79689fd7fbda45f253a7305906 100644
--- a/api/SimpleAdmin/SimpleAdmin.Core/Utils/Cryptogram/CryptogramUtil.cs
+++ b/api/SimpleAdmin/SimpleAdmin.Core/Utils/Cryptogram/CryptogramUtil.cs
@@ -1,4 +1,14 @@
-namespace SimpleAdmin.Core.Utils;
+// Copyright (c) 2022-Now 少林寺驻北固山办事处大神父王喇嘛
+//
+// SimpleAdmin 基于 Apache License Version 2.0 协议发布,可用于商业项目,但必须遵守以下补充条款:
+// 1.请不要删除和修改根目录下的LICENSE文件。
+// 2.请不要删除和修改SimpleAdmin源码头部的版权声明。
+// 3.分发源码时候,请注明软件出处 https://gitee.com/dotnetmoyu/SimpleAdmin
+// 4.基于本软件的作品,只能使用 SimpleAdmin 作为后台服务,除外情况不可商用且不允许二次分发或开源。
+// 5.请不得将本软件应用于危害国家安全、荣誉和利益的行为,不能以任何形式用于非法为目的的行为。
+// 6.任何基于本软件而产生的一切法律纠纷和责任,均于我司无关。
+
+namespace SimpleAdmin.Core.Utils;
///
/// 加解密功能
@@ -17,7 +27,17 @@ public class CryptogramUtil
// 解密
if (!string.IsNullOrWhiteSpace(str))
return SM2Util.Decrypt(str);
- else return "";
+ try
+ {
+ // // 解密
+ // if (!string.IsNullOrWhiteSpace(str))
+ // return SM2Util.Decrypt(str);
+ }
+ catch
+ {
+ return "";
+ }
+ return "";
}
///
@@ -27,10 +47,17 @@ public class CryptogramUtil
/// 密文
public static string Sm2Encrypt(string str)
{
- // 加密
- if (!string.IsNullOrWhiteSpace(str))
- return SM2Util.Encrypt(str);
- else return "";
+ try
+ {
+ // 加密
+ if (!string.IsNullOrWhiteSpace(str))
+ return SM2Util.Encrypt(str);
+ }
+ catch
+ {
+ return "";
+ }
+ return "";
}
#endregion SM2
@@ -46,8 +73,7 @@ public class CryptogramUtil
{
if (!string.IsNullOrWhiteSpace(str))// 解密
return SM4Util.Decrypt(new SM4Util { Data = str });
- else
- return "";
+ return "";
}
///
@@ -59,9 +85,8 @@ public class CryptogramUtil
{
if (!string.IsNullOrWhiteSpace(str))// 加密
return SM4Util.Encrypt(new SM4Util { Data = str });
- else
- return "";
+ return "";
}
#endregion Sm4
-}
\ No newline at end of file
+}
diff --git a/api/SimpleAdmin/SimpleAdmin.Core/Utils/Cryptogram/SM2Util.cs b/api/SimpleAdmin/SimpleAdmin.Core/Utils/Cryptogram/SM2Util.cs
index 0aa9eabe436e68fbfc1e50153c3d06f2c5f61508..cad81cf863f7876ffbc17315b11029aca1c1953e 100644
--- a/api/SimpleAdmin/SimpleAdmin.Core/Utils/Cryptogram/SM2Util.cs
+++ b/api/SimpleAdmin/SimpleAdmin.Core/Utils/Cryptogram/SM2Util.cs
@@ -1,4 +1,14 @@
-namespace SimpleAdmin.Core.Utils;
+// Copyright (c) 2022-Now 少林寺驻北固山办事处大神父王喇嘛
+//
+// SimpleAdmin 基于 Apache License Version 2.0 协议发布,可用于商业项目,但必须遵守以下补充条款:
+// 1.请不要删除和修改根目录下的LICENSE文件。
+// 2.请不要删除和修改SimpleAdmin源码头部的版权声明。
+// 3.分发源码时候,请注明软件出处 https://gitee.com/dotnetmoyu/SimpleAdmin
+// 4.基于本软件的作品,只能使用 SimpleAdmin 作为后台服务,除外情况不可商用且不允许二次分发或开源。
+// 5.请不得将本软件应用于危害国家安全、荣誉和利益的行为,不能以任何形式用于非法为目的的行为。
+// 6.任何基于本软件而产生的一切法律纠纷和责任,均于我司无关。
+
+namespace SimpleAdmin.Core.Utils;
///
/// SM2加密解密
@@ -35,4 +45,4 @@ public class SM2Util
if (!cipherText.StartsWith("04")) cipherText = "04" + cipherText;//如果不是04开头加上04
return SM2CryptoUtil.Decrypt(PrivateKey, cipherText);
}
-}
\ No newline at end of file
+}
diff --git a/api/SimpleAdmin/SimpleAdmin.Core/Utils/Cryptogram/SM4Util.cs b/api/SimpleAdmin/SimpleAdmin.Core/Utils/Cryptogram/SM4Util.cs
index e9d310eec6908d4277230caacefce3125bf581c2..8103f816b4832434825509f60c65790f4d0fdec7 100644
--- a/api/SimpleAdmin/SimpleAdmin.Core/Utils/Cryptogram/SM4Util.cs
+++ b/api/SimpleAdmin/SimpleAdmin.Core/Utils/Cryptogram/SM4Util.cs
@@ -1,4 +1,12 @@
-using Org.BouncyCastle.Utilities.Encoders;
+// Copyright (c) 2022-Now 少林寺驻北固山办事处大神父王喇嘛
+//
+// SimpleAdmin 基于 Apache License Version 2.0 协议发布,可用于商业项目,但必须遵守以下补充条款:
+// 1.请不要删除和修改根目录下的LICENSE文件。
+// 2.请不要删除和修改SimpleAdmin源码头部的版权声明。
+// 3.分发源码时候,请注明软件出处 https://gitee.com/dotnetmoyu/SimpleAdmin
+// 4.基于本软件的作品,只能使用 SimpleAdmin 作为后台服务,除外情况不可商用且不允许二次分发或开源。
+// 5.请不得将本软件应用于危害国家安全、荣誉和利益的行为,不能以任何形式用于非法为目的的行为。
+// 6.任何基于本软件而产生的一切法律纠纷和责任,均于我司无关。
namespace SimpleAdmin.Core.Utils;
@@ -57,14 +65,14 @@ public class SM4Util
///
public static string EncryptECB(SM4Util entity)
{
- Sm4Context ctx = new Sm4Context
+ var ctx = new Sm4Context
{
IsPadding = true
};
- byte[] keyBytes = entity.HexString ? Hex.Decode(entity.Key) : Encoding.Default.GetBytes(entity.Key);
- SM4CryptoUtil sm4 = new SM4CryptoUtil();
+ var keyBytes = entity.HexString ? Hex.Decode(entity.Key) : Encoding.Default.GetBytes(entity.Key);
+ var sm4 = new SM4CryptoUtil();
sm4.SetKeyEnc(ctx, keyBytes);
- byte[] encrypted = sm4.Sm4CryptEcb(ctx, Encoding.Default.GetBytes(entity.Data));
+ var encrypted = sm4.Sm4CryptEcb(ctx, Encoding.Default.GetBytes(entity.Data));
return Encoding.Default.GetString(Hex.Encode(encrypted));
}
@@ -75,15 +83,15 @@ public class SM4Util
///
public static string EncryptCBC(SM4Util entity)
{
- Sm4Context ctx = new Sm4Context
+ var ctx = new Sm4Context
{
IsPadding = true
};
- byte[] keyBytes = entity.HexString ? Hex.Decode(entity.Key) : Encoding.Default.GetBytes(entity.Key);
- byte[] ivBytes = entity.HexString ? Hex.Decode(entity.Iv) : Encoding.Default.GetBytes(entity.Iv);
- SM4CryptoUtil sm4 = new SM4CryptoUtil();
+ var keyBytes = entity.HexString ? Hex.Decode(entity.Key) : Encoding.Default.GetBytes(entity.Key);
+ var ivBytes = entity.HexString ? Hex.Decode(entity.Iv) : Encoding.Default.GetBytes(entity.Iv);
+ var sm4 = new SM4CryptoUtil();
sm4.SetKeyEnc(ctx, keyBytes);
- byte[] encrypted = sm4.Sm4CryptCbc(ctx, ivBytes, Encoding.Default.GetBytes(entity.Data));
+ var encrypted = sm4.Sm4CryptCbc(ctx, ivBytes, Encoding.Default.GetBytes(entity.Data));
return Convert.ToBase64String(encrypted);
}
@@ -108,15 +116,15 @@ public class SM4Util
///
public static string DecryptECB(SM4Util entity)
{
- Sm4Context ctx = new Sm4Context
+ var ctx = new Sm4Context
{
IsPadding = true,
Mode = 0
};
- byte[] keyBytes = entity.HexString ? Hex.Decode(entity.Key) : Encoding.Default.GetBytes(entity.Key);
- SM4CryptoUtil sm4 = new SM4CryptoUtil();
+ var keyBytes = entity.HexString ? Hex.Decode(entity.Key) : Encoding.Default.GetBytes(entity.Key);
+ var sm4 = new SM4CryptoUtil();
sm4.Sm4SetKeyDec(ctx, keyBytes);
- byte[] decrypted = sm4.Sm4CryptEcb(ctx, Hex.Decode(entity.Data));
+ var decrypted = sm4.Sm4CryptEcb(ctx, Hex.Decode(entity.Data));
return Encoding.Default.GetString(decrypted);
}
@@ -127,16 +135,16 @@ public class SM4Util
///
public static string DecryptCBC(SM4Util entity)
{
- Sm4Context ctx = new Sm4Context
+ var ctx = new Sm4Context
{
IsPadding = true,
Mode = 0
};
- byte[] keyBytes = entity.HexString ? Hex.Decode(entity.Key) : Encoding.Default.GetBytes(entity.Key);
- byte[] ivBytes = entity.HexString ? Hex.Decode(entity.Iv) : Encoding.Default.GetBytes(entity.Iv);
- SM4CryptoUtil sm4 = new SM4CryptoUtil();
+ var keyBytes = entity.HexString ? Hex.Decode(entity.Key) : Encoding.Default.GetBytes(entity.Key);
+ var ivBytes = entity.HexString ? Hex.Decode(entity.Iv) : Encoding.Default.GetBytes(entity.Iv);
+ var sm4 = new SM4CryptoUtil();
sm4.Sm4SetKeyDec(ctx, keyBytes);
- byte[] decrypted = sm4.Sm4CryptCbc(ctx, ivBytes, Convert.FromBase64String(entity.Data));
+ var decrypted = sm4.Sm4CryptCbc(ctx, ivBytes, Convert.FromBase64String(entity.Data));
return Encoding.Default.GetString(decrypted);
}
@@ -159,4 +167,4 @@ public class SM4Util
[Description("CBC模式")]
CBC = 1
}
-}
\ No newline at end of file
+}
diff --git a/api/SimpleAdmin/SimpleAdmin.Core/Utils/Cryptogram/Sm/SM2CryptoUtil.cs b/api/SimpleAdmin/SimpleAdmin.Core/Utils/Cryptogram/Sm/SM2CryptoUtil.cs
index 16772271df368b75ae84fe8f8ad2fdd12d431593..d8f6d2a909227f6d858e6f99ccbb7b9319a27b23 100644
--- a/api/SimpleAdmin/SimpleAdmin.Core/Utils/Cryptogram/Sm/SM2CryptoUtil.cs
+++ b/api/SimpleAdmin/SimpleAdmin.Core/Utils/Cryptogram/Sm/SM2CryptoUtil.cs
@@ -1,11 +1,12 @@
-using Org.BouncyCastle.Crypto;
-using Org.BouncyCastle.Crypto.Digests;
-using Org.BouncyCastle.Crypto.Generators;
-using Org.BouncyCastle.Crypto.Parameters;
-using Org.BouncyCastle.Math;
-using Org.BouncyCastle.Math.EC;
-using Org.BouncyCastle.Security;
-using Org.BouncyCastle.Utilities.Encoders;
+// Copyright (c) 2022-Now 少林寺驻北固山办事处大神父王喇嘛
+//
+// SimpleAdmin 基于 Apache License Version 2.0 协议发布,可用于商业项目,但必须遵守以下补充条款:
+// 1.请不要删除和修改根目录下的LICENSE文件。
+// 2.请不要删除和修改SimpleAdmin源码头部的版权声明。
+// 3.分发源码时候,请注明软件出处 https://gitee.com/dotnetmoyu/SimpleAdmin
+// 4.基于本软件的作品,只能使用 SimpleAdmin 作为后台服务,除外情况不可商用且不允许二次分发或开源。
+// 5.请不得将本软件应用于危害国家安全、荣誉和利益的行为,不能以任何形式用于非法为目的的行为。
+// 6.任何基于本软件而产生的一切法律纠纷和责任,均于我司无关。
namespace SimpleAdmin.Core.Utils;
@@ -22,13 +23,13 @@ public class SM2CryptoUtil
///
public static SM2Model GetKey()
{
- SM2 sm2 = SM2.Instance;
- AsymmetricCipherKeyPair key = sm2.ecc_key_pair_generator.GenerateKeyPair();
- ECPrivateKeyParameters ecpriv = (ECPrivateKeyParameters)key.Private;
- ECPublicKeyParameters ecpub = (ECPublicKeyParameters)key.Public;
- BigInteger privateKey = ecpriv.D;
- ECPoint publicKey = ecpub.Q;
- SM2Model sM2Model = new SM2Model();
+ var sm2 = SM2.Instance;
+ var key = sm2.ecc_key_pair_generator.GenerateKeyPair();
+ var ecpriv = (ECPrivateKeyParameters)key.Private;
+ var ecpub = (ECPublicKeyParameters)key.Public;
+ var privateKey = ecpriv.D;
+ var publicKey = ecpub.Q;
+ var sM2Model = new SM2Model();
sM2Model.PrivateKey = Encoding.UTF8.GetString(Hex.Encode(privateKey.ToByteArray())).ToUpper();
sM2Model.PublicKey = Encoding.UTF8.GetString(Hex.Encode(publicKey.GetEncoded())).ToUpper();
return sM2Model;
@@ -56,7 +57,7 @@ public class SM2CryptoUtil
/// 公钥
/// 需要加密的值
///
- public static String Encrypt(byte[] publicKey, byte[] data)
+ public static string Encrypt(byte[] publicKey, byte[] data)
{
if (null == publicKey || publicKey.Length == 0)
{
@@ -67,23 +68,24 @@ public class SM2CryptoUtil
return null;
}
- byte[] source = new byte[data.Length];
- Array.Copy(data, 0, source, 0, data.Length);
+ var source = new byte[data.Length];
+ Array.Copy(data, 0, source, 0,
+ data.Length);
- Cipher cipher = new Cipher();
- SM2 sm2 = SM2.Instance;
+ var cipher = new Cipher();
+ var sm2 = SM2.Instance;
- ECPoint userKey = sm2.ecc_curve.DecodePoint(publicKey);
+ var userKey = sm2.ecc_curve.DecodePoint(publicKey);
- ECPoint c1 = cipher.Init_enc(sm2, userKey);
+ var c1 = cipher.Init_enc(sm2, userKey);
cipher.Encrypt(source);
- byte[] c3 = new byte[32];
+ var c3 = new byte[32];
cipher.Dofinal(c3);
- String sc1 = Encoding.UTF8.GetString(Hex.Encode(c1.GetEncoded()));
- String sc2 = Encoding.UTF8.GetString(Hex.Encode(source));
- String sc3 = Encoding.UTF8.GetString(Hex.Encode(c3));
+ var sc1 = Encoding.UTF8.GetString(Hex.Encode(c1.GetEncoded()));
+ var sc2 = Encoding.UTF8.GetString(Hex.Encode(source));
+ var sc3 = Encoding.UTF8.GetString(Hex.Encode(c3));
return (sc1 + sc2 + sc3).ToUpper();
}
@@ -121,20 +123,20 @@ public class SM2CryptoUtil
return null;
}
- String data = Encoding.UTF8.GetString(Hex.Encode(encryptedData));
+ var data = Encoding.UTF8.GetString(Hex.Encode(encryptedData));
- byte[] c1Bytes = Hex.Decode(Encoding.UTF8.GetBytes(data.Substring(0, 130)));
- int c2Len = encryptedData.Length - 97;
- byte[] c2 = Hex.Decode(Encoding.UTF8.GetBytes(data.Substring(130, 2 * c2Len)));
- byte[] c3 = Hex.Decode(Encoding.UTF8.GetBytes(data.Substring(130 + 2 * c2Len, 64)));
+ var c1Bytes = Hex.Decode(Encoding.UTF8.GetBytes(data.Substring(0, 130)));
+ var c2Len = encryptedData.Length - 97;
+ var c2 = Hex.Decode(Encoding.UTF8.GetBytes(data.Substring(130, 2 * c2Len)));
+ var c3 = Hex.Decode(Encoding.UTF8.GetBytes(data.Substring(130 + 2 * c2Len, 64)));
- SM2 sm2 = SM2.Instance;
- BigInteger userD = new BigInteger(1, privateKey);
+ var sm2 = SM2.Instance;
+ var userD = new BigInteger(1, privateKey);
//ECPoint c1 = sm2.ecc_curve.DecodePoint(c1Bytes);
- ECPoint c1 = sm2.ecc_curve.DecodePoint(c1Bytes);
- Cipher cipher = new Cipher();
+ var c1 = sm2.ecc_curve.DecodePoint(c1Bytes);
+ var cipher = new Cipher();
cipher.Init_dec(userD, c1);
cipher.Decrypt(c2);
cipher.Dofinal(c3);
@@ -155,14 +157,14 @@ public class SM2CryptoUtil
public Cipher()
{
- this.ct = 1;
- this.key = new byte[32];
- this.keyOff = 0;
+ ct = 1;
+ key = new byte[32];
+ keyOff = 0;
}
public static byte[] byteConvert32Bytes(BigInteger n)
{
- byte[] tmpd = null;
+ byte[] tmpd;
if (n == null)
{
return null;
@@ -171,7 +173,8 @@ public class SM2CryptoUtil
if (n.ToByteArray().Length == 33)
{
tmpd = new byte[32];
- Array.Copy(n.ToByteArray(), 1, tmpd, 0, 32);
+ Array.Copy(n.ToByteArray(), 1, tmpd, 0,
+ 32);
}
else if (n.ToByteArray().Length == 32)
{
@@ -180,58 +183,59 @@ public class SM2CryptoUtil
else
{
tmpd = new byte[32];
- for (int i = 0; i < 32 - n.ToByteArray().Length; i++)
+ for (var i = 0; i < 32 - n.ToByteArray().Length; i++)
{
tmpd[i] = 0;
}
- Array.Copy(n.ToByteArray(), 0, tmpd, 32 - n.ToByteArray().Length, n.ToByteArray().Length);
+ Array.Copy(n.ToByteArray(), 0, tmpd, 32 - n.ToByteArray().Length,
+ n.ToByteArray().Length);
}
return tmpd;
}
private void Reset()
{
- this.sm3keybase = new SM3Digest();
- this.sm3c3 = new SM3Digest();
+ sm3keybase = new SM3Digest();
+ sm3c3 = new SM3Digest();
- byte[] p = byteConvert32Bytes(p2.Normalize().XCoord.ToBigInteger());
- this.sm3keybase.BlockUpdate(p, 0, p.Length);
- this.sm3c3.BlockUpdate(p, 0, p.Length);
+ var p = byteConvert32Bytes(p2.Normalize().XCoord.ToBigInteger());
+ sm3keybase.BlockUpdate(p, 0, p.Length);
+ sm3c3.BlockUpdate(p, 0, p.Length);
p = byteConvert32Bytes(p2.Normalize().YCoord.ToBigInteger());
- this.sm3keybase.BlockUpdate(p, 0, p.Length);
- this.ct = 1;
+ sm3keybase.BlockUpdate(p, 0, p.Length);
+ ct = 1;
NextKey();
}
private void NextKey()
{
- SM3Digest sm3keycur = new SM3Digest(this.sm3keybase);
+ var sm3keycur = new SM3Digest(sm3keybase);
sm3keycur.Update((byte)(ct >> 24 & 0xff));
sm3keycur.Update((byte)(ct >> 16 & 0xff));
sm3keycur.Update((byte)(ct >> 8 & 0xff));
sm3keycur.Update((byte)(ct & 0xff));
sm3keycur.DoFinal(key, 0);
- this.keyOff = 0;
- this.ct++;
+ keyOff = 0;
+ ct++;
}
public ECPoint Init_enc(SM2 sm2, ECPoint userKey)
{
- AsymmetricCipherKeyPair key = sm2.ecc_key_pair_generator.GenerateKeyPair();
- ECPrivateKeyParameters ecpriv = (ECPrivateKeyParameters)key.Private;
- ECPublicKeyParameters ecpub = (ECPublicKeyParameters)key.Public;
- BigInteger k = ecpriv.D;
- ECPoint c1 = ecpub.Q;
- this.p2 = userKey.Multiply(k);
+ var key = sm2.ecc_key_pair_generator.GenerateKeyPair();
+ var ecpriv = (ECPrivateKeyParameters)key.Private;
+ var ecpub = (ECPublicKeyParameters)key.Public;
+ var k = ecpriv.D;
+ var c1 = ecpub.Q;
+ p2 = userKey.Multiply(k);
Reset();
return c1;
}
public void Encrypt(byte[] data)
{
- this.sm3c3.BlockUpdate(data, 0, data.Length);
- for (int i = 0; i < data.Length; i++)
+ sm3c3.BlockUpdate(data, 0, data.Length);
+ for (var i = 0; i < data.Length; i++)
{
if (keyOff == key.Length)
{
@@ -243,13 +247,13 @@ public class SM2CryptoUtil
public void Init_dec(BigInteger userD, ECPoint c1)
{
- this.p2 = c1.Multiply(userD);
+ p2 = c1.Multiply(userD);
Reset();
}
public void Decrypt(byte[] data)
{
- for (int i = 0; i < data.Length; i++)
+ for (var i = 0; i < data.Length; i++)
{
if (keyOff == key.Length)
{
@@ -258,14 +262,14 @@ public class SM2CryptoUtil
data[i] ^= key[keyOff++];
}
- this.sm3c3.BlockUpdate(data, 0, data.Length);
+ sm3c3.BlockUpdate(data, 0, data.Length);
}
public void Dofinal(byte[] c3)
{
- byte[] p = byteConvert32Bytes(p2.Normalize().YCoord.ToBigInteger());
- this.sm3c3.BlockUpdate(p, 0, p.Length);
- this.sm3c3.DoFinal(c3, 0);
+ var p = byteConvert32Bytes(p2.Normalize().YCoord.ToBigInteger());
+ sm3c3.BlockUpdate(p, 0, p.Length);
+ sm3c3.DoFinal(c3, 0);
Reset();
}
}
@@ -288,14 +292,15 @@ public class SM2CryptoUtil
}
}
- public static readonly string[] sm2_param = {
- "FFFFFFFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000FFFFFFFFFFFFFFFF",// p,0
- "FFFFFFFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000FFFFFFFFFFFFFFFC",// a,1
- "28E9FA9E9D9F5E344D5A9E4BCF6509A7F39789F515AB8F92DDBCBD414D940E93",// b,2
- "FFFFFFFEFFFFFFFFFFFFFFFFFFFFFFFF7203DF6B21C6052B53BBF40939D54123",// n,3
- "32C4AE2C1F1981195F9904466A39C9948FE30BBFF2660BE1715A4589334C74C7",// gx,4
- "BC3736A2F4F6779C59BDCEE36B692153D0A9877CC62A474002DF32E52139F0A0" // gy,5
- };
+ public static readonly string[] sm2_param =
+ {
+ "FFFFFFFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000FFFFFFFFFFFFFFFF",// p,0
+ "FFFFFFFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000FFFFFFFFFFFFFFFC",// a,1
+ "28E9FA9E9D9F5E344D5A9E4BCF6509A7F39789F515AB8F92DDBCBD414D940E93",// b,2
+ "FFFFFFFEFFFFFFFFFFFFFFFFFFFFFFFF7203DF6B21C6052B53BBF40939D54123",// n,3
+ "32C4AE2C1F1981195F9904466A39C9948FE30BBFF2660BE1715A4589334C74C7",// gx,4
+ "BC3736A2F4F6779C59BDCEE36B692153D0A9877CC62A474002DF32E52139F0A0"// gy,5
+ };
public string[] ecc_param = sm2_param;
@@ -344,10 +349,10 @@ public class SM2CryptoUtil
public virtual byte[] Sm2GetZ(byte[] userId, ECPoint userKey)
{
- SM3Digest sm3 = new SM3Digest();
+ var sm3 = new SM3Digest();
byte[] p;
// userId length
- int len = userId.Length * 8;
+ var len = userId.Length * 8;
sm3.Update((byte)(len >> 8 & 0x00ff));
sm3.Update((byte)(len & 0x00ff));
@@ -372,7 +377,7 @@ public class SM2CryptoUtil
sm3.BlockUpdate(p, 0, p.Length);
// Z
- byte[] md = new byte[sm3.GetDigestSize()];
+ var md = new byte[sm3.GetDigestSize()];
sm3.DoFinal(md, 0);
return md;
@@ -391,4 +396,4 @@ public class SM2CryptoUtil
///
public string PrivateKey { get; set; }
}
-}
\ No newline at end of file
+}
diff --git a/api/SimpleAdmin/SimpleAdmin.Core/Utils/Cryptogram/Sm/SM4CryptoUtil.cs b/api/SimpleAdmin/SimpleAdmin.Core/Utils/Cryptogram/Sm/SM4CryptoUtil.cs
index 9812d3e2113c9ee1aabc3cd8aa638f0f79266103..0da6070e25d56eb07a3ece77bc837d17b928b53a 100644
--- a/api/SimpleAdmin/SimpleAdmin.Core/Utils/Cryptogram/Sm/SM4CryptoUtil.cs
+++ b/api/SimpleAdmin/SimpleAdmin.Core/Utils/Cryptogram/Sm/SM4CryptoUtil.cs
@@ -1,4 +1,14 @@
-namespace SimpleAdmin.Core.Utils;
+// Copyright (c) 2022-Now 少林寺驻北固山办事处大神父王喇嘛
+//
+// SimpleAdmin 基于 Apache License Version 2.0 协议发布,可用于商业项目,但必须遵守以下补充条款:
+// 1.请不要删除和修改根目录下的LICENSE文件。
+// 2.请不要删除和修改SimpleAdmin源码头部的版权声明。
+// 3.分发源码时候,请注明软件出处 https://gitee.com/dotnetmoyu/SimpleAdmin
+// 4.基于本软件的作品,只能使用 SimpleAdmin 作为后台服务,除外情况不可商用且不允许二次分发或开源。
+// 5.请不得将本软件应用于危害国家安全、荣誉和利益的行为,不能以任何形式用于非法为目的的行为。
+// 6.任何基于本软件而产生的一切法律纠纷和责任,均于我司无关。
+
+namespace SimpleAdmin.Core.Utils;
///
/// SM4工具类
@@ -13,10 +23,7 @@ public class SM4CryptoUtil
///
private static long GetULongByBe(byte[] b, int i)
{
- long n = (long)(b[i] & 0xff) << 24 |
- (long)((b[i + 1] & 0xff) << 16) |
- (long)((b[i + 2] & 0xff) << 8) |
- b[i + 3] & 0xff & 0xffffffffL;
+ var n = (long)(b[i] & 0xff) << 24 | (uint)((b[i + 1] & 0xff) << 16) | (uint)((b[i + 2] & 0xff) << 8) | b[i + 3] & 0xff & 0xffffffffL;
return n;
}
@@ -42,7 +49,7 @@ public class SM4CryptoUtil
///
private static long Rotl(long x, int n)
{
- return ((x & 0xFFFFFFFF) << n) | x >> (32 - n);
+ return (x & 0xFFFFFFFF) << n | x >> 32 - n;
}
///
@@ -52,16 +59,17 @@ public class SM4CryptoUtil
///
private static void Swap(long[] sk, int i)
{
- long t = sk[i];
- sk[i] = sk[(31 - i)];
- sk[(31 - i)] = t;
+ var t = sk[i];
+ sk[i] = sk[31 - i];
+ sk[31 - i] = t;
}
///
/// S盒
///
- public byte[] SboxTable = new byte[] {
- // 0 1 2 3 4 5 6 7 8 9 a b c d e f
+ public byte[] SboxTable = new byte[]
+ {
+ // 0 1 2 3 4 5 6 7 8 9 a b c d e f
0xd6, 0x90, 0xe9, 0xfe, 0xcc, 0xe1, 0x3d, 0xb7, 0x16, 0xb6, 0x14, 0xc2, 0x28, 0xfb, 0x2c, 0x05,
0x2b, 0x67, 0x9a, 0x76, 0x2a, 0xbe, 0x04, 0xc3, 0xaa, 0x44, 0x13, 0x26, 0x49, 0x86, 0x06, 0x99,
0x9c, 0x42, 0x50, 0xf4, 0x91, 0xef, 0x98, 0x7a, 0x33, 0x54, 0x0b, 0x43, 0xed, 0xcf, 0xac, 0x62,
@@ -88,15 +96,16 @@ public class SM4CryptoUtil
///
/// 固定参数CK
///
- public uint[] CK = {
- 0x00070e15,0x1c232a31,0x383f464d,0x545b6269,
- 0x70777e85,0x8c939aa1,0xa8afb6bd,0xc4cbd2d9,
- 0xe0e7eef5,0xfc030a11,0x181f262d,0x343b4249,
- 0x50575e65,0x6c737a81,0x888f969d,0xa4abb2b9,
- 0xc0c7ced5,0xdce3eaf1,0xf8ff060d,0x141b2229,
- 0x30373e45,0x4c535a61,0x686f767d,0x848b9299,
- 0xa0a7aeb5,0xbcc3cad1,0xd8dfe6ed,0xf4fb0209,
- 0x10171e25,0x2c333a41,0x484f565d,0x646b7279
+ public uint[] CK =
+ {
+ 0x00070e15, 0x1c232a31, 0x383f464d, 0x545b6269,
+ 0x70777e85, 0x8c939aa1, 0xa8afb6bd, 0xc4cbd2d9,
+ 0xe0e7eef5, 0xfc030a11, 0x181f262d, 0x343b4249,
+ 0x50575e65, 0x6c737a81, 0x888f969d, 0xa4abb2b9,
+ 0xc0c7ced5, 0xdce3eaf1, 0xf8ff060d, 0x141b2229,
+ 0x30373e45, 0x4c535a61, 0x686f767d, 0x848b9299,
+ 0xa0a7aeb5, 0xbcc3cad1, 0xd8dfe6ed, 0xf4fb0209,
+ 0x10171e25, 0x2c333a41, 0x484f565d, 0x646b7279
};
///
@@ -106,8 +115,8 @@ public class SM4CryptoUtil
///
private byte Sm4Sbox(byte inch)
{
- int i = inch & 0xFF;
- byte retVal = SboxTable[i];
+ var i = inch & 0xFF;
+ var retVal = SboxTable[i];
return retVal;
}
@@ -118,15 +127,15 @@ public class SM4CryptoUtil
///
private long Sm4Lt(long ka)
{
- byte[] a = new byte[4];
- byte[] b = new byte[4];
+ var a = new byte[4];
+ var b = new byte[4];
PutULongToBe(ka, a, 0);
b[0] = Sm4Sbox(a[0]);
b[1] = Sm4Sbox(a[1]);
b[2] = Sm4Sbox(a[2]);
b[3] = Sm4Sbox(a[3]);
- long bb = GetULongByBe(b, 0);
- long c = bb ^ Rotl(bb, 2) ^ Rotl(bb, 10) ^ Rotl(bb, 18) ^ Rotl(bb, 24);
+ var bb = GetULongByBe(b, 0);
+ var c = bb ^ Rotl(bb, 2) ^ Rotl(bb, 10) ^ Rotl(bb, 18) ^ Rotl(bb, 24);
return c;
}
@@ -139,7 +148,8 @@ public class SM4CryptoUtil
///
///
///
- private long Sm4F(long x0, long x1, long x2, long x3, long rk)
+ private long Sm4F(long x0, long x1, long x2,
+ long x3, long rk)
{
return x0 ^ Sm4Lt(x1 ^ x2 ^ x3 ^ rk);
}
@@ -151,15 +161,15 @@ public class SM4CryptoUtil
///
private long Sm4CalciRk(long ka)
{
- byte[] a = new byte[4];
- byte[] b = new byte[4];
+ var a = new byte[4];
+ var b = new byte[4];
PutULongToBe(ka, a, 0);
b[0] = Sm4Sbox(a[0]);
b[1] = Sm4Sbox(a[1]);
b[2] = Sm4Sbox(a[2]);
b[3] = Sm4Sbox(a[3]);
- long bb = GetULongByBe(b, 0);
- long rk = bb ^ Rotl(bb, 13) ^ Rotl(bb, 23);
+ var bb = GetULongByBe(b, 0);
+ var rk = bb ^ Rotl(bb, 13) ^ Rotl(bb, 23);
return rk;
}
@@ -171,13 +181,13 @@ public class SM4CryptoUtil
private void SetKey(long[] SK, byte[] key)
{
//加密密钥长度为 128 比特
- long[] MK = new long[4];
- int i = 0;
+ var MK = new long[4];
+ var i = 0;
MK[0] = GetULongByBe(key, 0);
MK[1] = GetULongByBe(key, 4);
MK[2] = GetULongByBe(key, 8);
MK[3] = GetULongByBe(key, 12);
- long[] k = new long[36];
+ var k = new long[36];
//轮密钥生成方法
k[0] = MK[0] ^ FK[0];
k[1] = MK[1] ^ FK[1];
@@ -185,8 +195,8 @@ public class SM4CryptoUtil
k[3] = MK[3] ^ FK[3];
for (; i < 32; i++)
{
- k[(i + 4)] = (k[i] ^ Sm4CalciRk(k[(i + 1)] ^ k[(i + 2)] ^ k[(i + 3)] ^ CK[i]));
- SK[i] = k[(i + 4)];
+ k[i + 4] = k[i] ^ Sm4CalciRk(k[i + 1] ^ k[i + 2] ^ k[i + 3] ^ CK[i]);
+ SK[i] = k[i + 4];
}
}
@@ -198,15 +208,16 @@ public class SM4CryptoUtil
/// 输出的对应的分组明文
private void Sm4OneRound(long[] sk, byte[] input, byte[] output)
{
- int i = 0;
- long[] ulbuf = new long[36];
+ var i = 0;
+ var ulbuf = new long[36];
ulbuf[0] = GetULongByBe(input, 0);
ulbuf[1] = GetULongByBe(input, 4);
ulbuf[2] = GetULongByBe(input, 8);
ulbuf[3] = GetULongByBe(input, 12);
- while (i < 32) //开始32轮解密 ,一次进行4轮,共计八次
+ while (i < 32)//开始32轮解密 ,一次进行4轮,共计八次
{
- ulbuf[(i + 4)] = Sm4F(ulbuf[i], ulbuf[(i + 1)], ulbuf[(i + 2)], ulbuf[(i + 3)], sk[i]);
+ ulbuf[i + 4] = Sm4F(ulbuf[i], ulbuf[i + 1], ulbuf[i + 2], ulbuf[i + 3],
+ sk[i]);
i++;
}
PutULongToBe(ulbuf[35], output, 0);
@@ -227,13 +238,14 @@ public class SM4CryptoUtil
{
return null;
}
- byte[] ret = null;
+ byte[] ret;
if (mode == 1)
{
- int p = 16 - input.Length % 16;
+ var p = 16 - input.Length % 16;
ret = new byte[input.Length + p];
- Array.Copy(input, 0, ret, 0, input.Length);
- for (int i = 0; i < p; i++)
+ Array.Copy(input, 0, ret, 0,
+ input.Length);
+ for (var i = 0; i < p; i++)
{
ret[input.Length + i] = (byte)p;
}
@@ -242,7 +254,8 @@ public class SM4CryptoUtil
{
int p = input[input.Length - 1];
ret = new byte[input.Length - p];
- Array.Copy(input, 0, ret, 0, input.Length - p);
+ Array.Copy(input, 0, ret, 0,
+ input.Length - p);
}
return ret;
}
@@ -282,21 +295,24 @@ public class SM4CryptoUtil
///
public byte[] Sm4CryptEcb(Sm4Context ctx, byte[] input)
{
- if (ctx.IsPadding && (ctx.Mode == 1))
+ if (ctx.IsPadding && ctx.Mode == 1)
{
input = Padding(input, 1);
}
- int length = input.Length;
- byte[] bins = new byte[length];
- Array.Copy(input, 0, bins, 0, length);
- byte[] bous = new byte[length];
- for (int i = 0; length > 0; length -= 16, i++)
+ var length = input.Length;
+ var bins = new byte[length];
+ Array.Copy(input, 0, bins, 0,
+ length);
+ var bous = new byte[length];
+ for (var i = 0; length > 0; length -= 16, i++)
{
- byte[] inBytes = new byte[16];
- byte[] outBytes = new byte[16];
- Array.Copy(bins, i * 16, inBytes, 0, length > 16 ? 16 : length);
+ var inBytes = new byte[16];
+ var outBytes = new byte[16];
+ Array.Copy(bins, i * 16, inBytes, 0,
+ length > 16 ? 16 : length);
Sm4OneRound(ctx.Key, inBytes, outBytes);
- Array.Copy(outBytes, 0, bous, i * 16, length > 16 ? 16 : length);
+ Array.Copy(outBytes, 0, bous, i * 16,
+ length > 16 ? 16 : length);
}
if (ctx.IsPadding && ctx.Mode == 0)
{
@@ -318,26 +334,29 @@ public class SM4CryptoUtil
{
input = Padding(input, 1);
}
- int length = input.Length;
- byte[] bins = new byte[length];
- Array.Copy(input, 0, bins, 0, length);
- List bousList = new List();
+ var length = input.Length;
+ var bins = new byte[length];
+ Array.Copy(input, 0, bins, 0,
+ length);
+ var bousList = new List();
int i;
if (ctx.Mode == 1)
{
- for (int j = 0; length > 0; length -= 16, j++)
+ for (var j = 0; length > 0; length -= 16, j++)
{
- byte[] inBytes = new byte[16];
- byte[] outBytes = new byte[16];
- byte[] out1 = new byte[16];
- Array.Copy(bins, j * 16, inBytes, 0, length > 16 ? 16 : length);
+ var inBytes = new byte[16];
+ var outBytes = new byte[16];
+ var out1 = new byte[16];
+ Array.Copy(bins, j * 16, inBytes, 0,
+ length > 16 ? 16 : length);
for (i = 0; i < 16; i++)
{
- outBytes[i] = ((byte)(inBytes[i] ^ iv[i]));
+ outBytes[i] = (byte)(inBytes[i] ^ iv[i]);
}
Sm4OneRound(ctx.Key, outBytes, out1);
- Array.Copy(out1, 0, iv, 0, 16);
- for (int k = 0; k < 16; k++)
+ Array.Copy(out1, 0, iv, 0,
+ 16);
+ for (var k = 0; k < 16; k++)
{
bousList.Add(out1[k]);
}
@@ -345,21 +364,24 @@ public class SM4CryptoUtil
}
else
{
- byte[] temp = new byte[16];
- for (int j = 0; length > 0; length -= 16, j++)
+ var temp = new byte[16];
+ for (var j = 0; length > 0; length -= 16, j++)
{
- byte[] inBytes = new byte[16];
- byte[] outBytes = new byte[16];
- byte[] out1 = new byte[16];
- Array.Copy(bins, j * 16, inBytes, 0, length > 16 ? 16 : length);
- Array.Copy(inBytes, 0, temp, 0, 16);
+ var inBytes = new byte[16];
+ var outBytes = new byte[16];
+ var out1 = new byte[16];
+ Array.Copy(bins, j * 16, inBytes, 0,
+ length > 16 ? 16 : length);
+ Array.Copy(inBytes, 0, temp, 0,
+ 16);
Sm4OneRound(ctx.Key, inBytes, outBytes);
for (i = 0; i < 16; i++)
{
- out1[i] = ((byte)(outBytes[i] ^ iv[i]));
+ out1[i] = (byte)(outBytes[i] ^ iv[i]);
}
- Array.Copy(temp, 0, iv, 0, 16);
- for (int k = 0; k < 16; k++)
+ Array.Copy(temp, 0, iv, 0,
+ 16);
+ for (var k = 0; k < 16; k++)
{
bousList.Add(out1[k]);
}
@@ -367,13 +389,10 @@ public class SM4CryptoUtil
}
if (ctx.IsPadding && ctx.Mode == 0)
{
- byte[] bous = Padding(bousList.ToArray(), 0);
+ var bous = Padding(bousList.ToArray(), 0);
return bous;
}
- else
- {
- return bousList.ToArray();
- }
+ return bousList.ToArray();
}
}
@@ -403,4 +422,4 @@ public class Sm4Context
/// 是否补足16进制字符串
///
public bool IsPadding;
-}
\ No newline at end of file
+}
diff --git a/api/SimpleAdmin/SimpleAdmin.Core/Utils/Image/AvatarUtil.cs b/api/SimpleAdmin/SimpleAdmin.Core/Utils/Image/AvatarUtil.cs
index 8d9281d6376d0b98411d025a46977154a7ed304f..f69fa7eafa483a7dd828b89dff86bb86cdca4aa6 100644
--- a/api/SimpleAdmin/SimpleAdmin.Core/Utils/Image/AvatarUtil.cs
+++ b/api/SimpleAdmin/SimpleAdmin.Core/Utils/Image/AvatarUtil.cs
@@ -1,4 +1,12 @@
-using SkiaSharp;
+// Copyright (c) 2022-Now 少林寺驻北固山办事处大神父王喇嘛
+//
+// SimpleAdmin 基于 Apache License Version 2.0 协议发布,可用于商业项目,但必须遵守以下补充条款:
+// 1.请不要删除和修改根目录下的LICENSE文件。
+// 2.请不要删除和修改SimpleAdmin源码头部的版权声明。
+// 3.分发源码时候,请注明软件出处 https://gitee.com/dotnetmoyu/SimpleAdmin
+// 4.基于本软件的作品,只能使用 SimpleAdmin 作为后台服务,除外情况不可商用且不允许二次分发或开源。
+// 5.请不得将本软件应用于危害国家安全、荣誉和利益的行为,不能以任何形式用于非法为目的的行为。
+// 6.任何基于本软件而产生的一切法律纠纷和责任,均于我司无关。
namespace SimpleAdmin.Core.Utils;
@@ -91,7 +99,7 @@ public static class AvatarUtil
{
var img = GetNameImage(name, width, height);
var imgByte = img.ImgToBase64String();
- return $"data:image/png;base64," + imgByte;
+ return "data:image/png;base64," + imgByte;
}
///
@@ -105,4 +113,4 @@ public static class AvatarUtil
}
#endregion 姓名生成图片处理
-}
\ No newline at end of file
+}
diff --git a/api/SimpleAdmin/SimpleAdmin.Core/Utils/Image/ImageUtil.cs b/api/SimpleAdmin/SimpleAdmin.Core/Utils/Image/ImageUtil.cs
index 8b3ed92a97a6abeae77c4fc1ef4178a4f3c0af04..2a04a50e3db508e84329f63c39c802c5870c760f 100644
--- a/api/SimpleAdmin/SimpleAdmin.Core/Utils/Image/ImageUtil.cs
+++ b/api/SimpleAdmin/SimpleAdmin.Core/Utils/Image/ImageUtil.cs
@@ -1,6 +1,12 @@
-using SkiaSharp;
-using System.Drawing;
-using System.Drawing.Drawing2D;
+// Copyright (c) 2022-Now 少林寺驻北固山办事处大神父王喇嘛
+//
+// SimpleAdmin 基于 Apache License Version 2.0 协议发布,可用于商业项目,但必须遵守以下补充条款:
+// 1.请不要删除和修改根目录下的LICENSE文件。
+// 2.请不要删除和修改SimpleAdmin源码头部的版权声明。
+// 3.分发源码时候,请注明软件出处 https://gitee.com/dotnetmoyu/SimpleAdmin
+// 4.基于本软件的作品,只能使用 SimpleAdmin 作为后台服务,除外情况不可商用且不允许二次分发或开源。
+// 5.请不得将本软件应用于危害国家安全、荣誉和利益的行为,不能以任何形式用于非法为目的的行为。
+// 6.任何基于本软件而产生的一切法律纠纷和责任,均于我司无关。
namespace SimpleAdmin.Core.Utils;
@@ -45,30 +51,28 @@ public static class ImageUtil
}
}
-
///
/// base64转bitmap
///
- ///
+ ///
///
- public static Bitmap GetBitmapFromBase64(this string base64string)
+ public static Bitmap GetBitmapFromBase64(this string base64String)
{
- var b = Convert.FromBase64String(base64string);
+ var b = Convert.FromBase64String(base64String);
var ms = new MemoryStream(b);
var bitmap = new Bitmap(ms);
ms.Close();
return bitmap;
}
-
///
/// base64转bitmap
///
- ///
+ ///
///
- public static SKBitmap GetSKBitmapFromBase64(this string base64string)
+ public static SKBitmap GetSkBitmapFromBase64(this string base64String)
{
- var b = Convert.FromBase64String(base64string);
+ var b = Convert.FromBase64String(base64String);
var bitmap = SKBitmap.Decode(b);
return bitmap;
}
@@ -76,14 +80,13 @@ public static class ImageUtil
///
/// base64转image格式
///
- ///
+ ///
///
- public static string ToImageBase64(this string base64string)
+ public static string ToImageBase64(this string base64String)
{
- return "data:image/png;base64," + base64string;
+ return "data:image/png;base64," + base64String;
}
-
///
/// 重新修改尺寸
///
@@ -97,13 +100,11 @@ public static class ImageUtil
//获取图片高度
var sourceHeight = imgToResize.Height;
- float nPercent = 0;
- float nPercentW = 0;
- float nPercentH = 0;
+ float nPercent;
//计算宽度的缩放比例
- nPercentW = size.Width / (float)sourceWidth;
+ var nPercentW = size.Width / (float)sourceWidth;
//计算高度的缩放比例
- nPercentH = size.Height / (float)sourceHeight;
+ var nPercentH = size.Height / (float)sourceHeight;
if (nPercentH < nPercentW)
nPercent = nPercentH;
@@ -118,7 +119,8 @@ public static class ImageUtil
var g = Graphics.FromImage(b);
g.InterpolationMode = InterpolationMode.HighQualityBicubic;
//绘制图像
- g.DrawImage(imgToResize, 0, 0, destWidth, destHeight);
+ g.DrawImage(imgToResize, 0, 0, destWidth,
+ destHeight);
g.Dispose();
return b;
}
@@ -218,4 +220,4 @@ public static class ImageUtil
return null;
}
}
-}
\ No newline at end of file
+}
diff --git a/api/SimpleAdmin/SimpleAdmin.Core/Utils/Pwd/PwdUtil.cs b/api/SimpleAdmin/SimpleAdmin.Core/Utils/Pwd/PwdUtil.cs
index 27d7de7e3e8a9629daf475749625788c3cf05e3c..fada5825ad5bbf1f9e26086676af02decc8a8f4f 100644
--- a/api/SimpleAdmin/SimpleAdmin.Core/Utils/Pwd/PwdUtil.cs
+++ b/api/SimpleAdmin/SimpleAdmin.Core/Utils/Pwd/PwdUtil.cs
@@ -1,8 +1,12 @@
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
+// Copyright (c) 2022-Now 少林寺驻北固山办事处大神父王喇嘛
+//
+// SimpleAdmin 基于 Apache License Version 2.0 协议发布,可用于商业项目,但必须遵守以下补充条款:
+// 1.请不要删除和修改根目录下的LICENSE文件。
+// 2.请不要删除和修改SimpleAdmin源码头部的版权声明。
+// 3.分发源码时候,请注明软件出处 https://gitee.com/dotnetmoyu/SimpleAdmin
+// 4.基于本软件的作品,只能使用 SimpleAdmin 作为后台服务,除外情况不可商用且不允许二次分发或开源。
+// 5.请不得将本软件应用于危害国家安全、荣誉和利益的行为,不能以任何形式用于非法为目的的行为。
+// 6.任何基于本软件而产生的一切法律纠纷和责任,均于我司无关。
namespace SimpleAdmin.Core.Utils;
@@ -20,7 +24,7 @@ public class PwdUtil
public static double Similarity(string oldPassword, string newPassword)
{
var editDistance = LevenshteinDistance(oldPassword, newPassword);
- var similarity = 1.0 - (double)editDistance / (double)Math.Max(oldPassword.Length, newPassword.Length);
+ var similarity = 1.0 - editDistance / (double)Math.Max(oldPassword.Length, newPassword.Length);
return similarity * 100;
}
@@ -50,11 +54,9 @@ public class PwdUtil
{
var cost = s1[i - 1] == s2[j - 1] ? 0 : 1;
- distance[i, j] = Math.Min(
- Math.Min(distance[i - 1, j] + 1, distance[i, j - 1] + 1),
- distance[i - 1, j - 1] + cost);
+ distance[i, j] = Math.Min(Math.Min(distance[i - 1, j] + 1, distance[i, j - 1] + 1), distance[i - 1, j - 1] + cost);
}
}
return distance[s1.Length, s2.Length];
}
-}
\ No newline at end of file
+}
diff --git a/api/SimpleAdmin/SimpleAdmin.Core/Utils/Zip/ZipUtils.cs b/api/SimpleAdmin/SimpleAdmin.Core/Utils/Zip/ZipUtils.cs
index 957da5619173d9ace031c5095bf0b4d5c10506af..0222ebc70d2dec04e64e51a62f239052aae8fbdd 100644
--- a/api/SimpleAdmin/SimpleAdmin.Core/Utils/Zip/ZipUtils.cs
+++ b/api/SimpleAdmin/SimpleAdmin.Core/Utils/Zip/ZipUtils.cs
@@ -1,6 +1,12 @@
-using ICSharpCode.SharpZipLib.Checksum;
-using ICSharpCode.SharpZipLib.Zip;
-using System.Net;
+// Copyright (c) 2022-Now 少林寺驻北固山办事处大神父王喇嘛
+//
+// SimpleAdmin 基于 Apache License Version 2.0 协议发布,可用于商业项目,但必须遵守以下补充条款:
+// 1.请不要删除和修改根目录下的LICENSE文件。
+// 2.请不要删除和修改SimpleAdmin源码头部的版权声明。
+// 3.分发源码时候,请注明软件出处 https://gitee.com/dotnetmoyu/SimpleAdmin
+// 4.基于本软件的作品,只能使用 SimpleAdmin 作为后台服务,除外情况不可商用且不允许二次分发或开源。
+// 5.请不得将本软件应用于危害国家安全、荣誉和利益的行为,不能以任何形式用于非法为目的的行为。
+// 6.任何基于本软件而产生的一切法律纠纷和责任,均于我司无关。
namespace SimpleAdmin.Core.Utils;
@@ -13,54 +19,53 @@ public class ZipUtils
/// 压缩后的文件
/// 压缩等级
/// 每次写入大小
- public static void ZipFile(string fileToZip, string zipedFile, int compressionLevel, int blockSize)
+ public static void ZipFile(string fileToZip, string zipedFile, int compressionLevel,
+ int blockSize)
{
//如果文件没有找到,则报错
- if (!System.IO.File.Exists(fileToZip))
+ if (!File.Exists(fileToZip))
{
- throw new System.IO.FileNotFoundException("指定要压缩的文件: " + fileToZip + " 不存在!");
+ throw new FileNotFoundException("指定要压缩的文件: " + fileToZip + " 不存在!");
}
- using (System.IO.FileStream ZipFile = System.IO.File.Create(zipedFile))
+ using (var zipFile = File.Create(zipedFile))
{
- using (ZipOutputStream ZipStream = new ZipOutputStream(ZipFile))
+ using (var zipStream = new ZipOutputStream(zipFile))
{
- using (System.IO.FileStream StreamToZip = new System.IO.FileStream(fileToZip, System.IO.FileMode.Open, System.IO.FileAccess.Read))
+ using (var streamToZip = new FileStream(fileToZip, FileMode.Open, FileAccess.Read))
{
- string fileName = fileToZip.Substring(fileToZip.LastIndexOf("\\") + 1);
-
- ZipEntry ZipEntry = new ZipEntry(fileName);
+ var fileName = fileToZip.Substring(fileToZip.LastIndexOf("\\", StringComparison.Ordinal) + 1);
- ZipStream.PutNextEntry(ZipEntry);
+ var zipEntry = new ZipEntry(fileName);
- ZipStream.SetLevel(compressionLevel);
+ zipStream.PutNextEntry(zipEntry);
- byte[] buffer = new byte[blockSize];
+ zipStream.SetLevel(compressionLevel);
- int sizeRead = 0;
+ var buffer = new byte[blockSize];
try
{
+ var sizeRead = 0;
do
{
- sizeRead = StreamToZip.Read(buffer, 0, buffer.Length);
- ZipStream.Write(buffer, 0, sizeRead);
- }
- while (sizeRead > 0);
+ sizeRead = streamToZip.Read(buffer, 0, buffer.Length);
+ zipStream.Write(buffer, 0, sizeRead);
+ } while (sizeRead > 0);
}
- catch (System.Exception ex)
+ catch (Exception ex)
{
throw ex;
}
- StreamToZip.Close();
+ streamToZip.Close();
}
- ZipStream.Finish();
- ZipStream.Close();
+ zipStream.Finish();
+ zipStream.Close();
}
- ZipFile.Close();
+ zipFile.Close();
}
}
@@ -74,27 +79,27 @@ public class ZipUtils
//如果文件没有找到,则报错
if (!File.Exists(fileToZip))
{
- throw new System.IO.FileNotFoundException("指定要压缩的文件: " + fileToZip + " 不存在!");
+ throw new FileNotFoundException("指定要压缩的文件: " + fileToZip + " 不存在!");
}
- using (FileStream fs = File.OpenRead(fileToZip))
+ using (var fs = File.OpenRead(fileToZip))
{
- byte[] buffer = new byte[fs.Length];
+ var buffer = new byte[fs.Length];
fs.Read(buffer, 0, buffer.Length);
fs.Close();
- using (FileStream ZipFile = File.Create(zipedFile))
+ using (var zipFile = File.Create(zipedFile))
{
- using (ZipOutputStream ZipStream = new ZipOutputStream(ZipFile))
+ using (var zipStream = new ZipOutputStream(zipFile))
{
- string fileName = fileToZip.Substring(fileToZip.LastIndexOf("\\") + 1);
- ZipEntry ZipEntry = new ZipEntry(fileName);
- ZipStream.PutNextEntry(ZipEntry);
- ZipStream.SetLevel(5);
-
- ZipStream.Write(buffer, 0, buffer.Length);
- ZipStream.Finish();
- ZipStream.Close();
+ var fileName = fileToZip.Substring(fileToZip.LastIndexOf("\\") + 1);
+ var zipEntry = new ZipEntry(fileName);
+ zipStream.PutNextEntry(zipEntry);
+ zipStream.SetLevel(5);
+
+ zipStream.Write(buffer, 0, buffer.Length);
+ zipStream.Finish();
+ zipStream.Close();
}
}
}
@@ -108,25 +113,25 @@ public class ZipUtils
public static void ZipFile(List sourceFileNames, string zipFileName)
{
//压缩文件打包
- using (ZipOutputStream s = new ZipOutputStream(File.Create(zipFileName)))
+ using (var s = new ZipOutputStream(File.Create(zipFileName)))
{
s.SetLevel(9);
- byte[] buffer = new byte[4096];
- foreach (string file in sourceFileNames)
+ var buffer = new byte[4096];
+ foreach (var file in sourceFileNames)
{
if (Directory.Exists(file))// 先当作目录处理如果存在这个目录就递归Copy该目录下面的文件
{
- string pPath = "";
+ var pPath = "";
pPath += Path.GetFileName(file);
pPath += "\\";
ZipSetp(file, s, pPath, sourceFileNames);
}
- else // 否则直接压缩文件
+ else// 否则直接压缩文件
{
- ZipEntry entry = new ZipEntry(Path.GetFileName(file));
+ var entry = new ZipEntry(Path.GetFileName(file));
entry.DateTime = DateTime.Now;
s.PutNextEntry(entry);
- using (FileStream fs = File.OpenRead(file))
+ using (var fs = File.OpenRead(file))
{
int sourceBytes;
do
@@ -149,9 +154,9 @@ public class ZipUtils
/// 压缩后生成的压缩文件名,绝对路径
public static void ZipFileDirectory(string strDirectory, string zipedFile)
{
- using (System.IO.FileStream ZipFile = System.IO.File.Create(zipedFile))
+ using (var zipFile = File.Create(zipedFile))
{
- using (ZipOutputStream s = new ZipOutputStream(ZipFile))
+ using (var s = new ZipOutputStream(zipFile))
{
s.SetLevel(9);
ZipSetp(strDirectory, s, "");
@@ -167,9 +172,9 @@ public class ZipUtils
/// 指定要压缩的文件列表(完全路径)
public static void ZipFileDirectory(string strDirectory, string zipedFile, List files)
{
- using (System.IO.FileStream ZipFile = System.IO.File.Create(zipedFile))
+ using (var zipFile = File.Create(zipedFile))
{
- using (ZipOutputStream s = new ZipOutputStream(ZipFile))
+ using (var s = new ZipOutputStream(zipFile))
{
s.SetLevel(9);
ZipSetp(strDirectory, s, "", files);
@@ -184,17 +189,18 @@ public class ZipUtils
/// 压缩输出流对象
/// The parent path.
/// 需要压缩的文件
- private static void ZipSetp(string strDirectory, ZipOutputStream s, string parentPath, List files = null)
+ private static void ZipSetp(string strDirectory, ZipOutputStream s, string parentPath,
+ List files = null)
{
if (strDirectory[strDirectory.Length - 1] != Path.DirectorySeparatorChar)
{
strDirectory += Path.DirectorySeparatorChar;
}
- string[] filenames = Directory.GetFileSystemEntries(strDirectory);
+ var filenames = Directory.GetFileSystemEntries(strDirectory);
- byte[] buffer = new byte[4096];
- foreach (string file in filenames)// 遍历所有的文件和目录
+ var buffer = new byte[4096];
+ foreach (var file in filenames)// 遍历所有的文件和目录
{
if (files != null && !files.Contains(file))
{
@@ -202,21 +208,21 @@ public class ZipUtils
}
if (Directory.Exists(file))// 先当作目录处理如果存在这个目录就递归Copy该目录下面的文件
{
- string pPath = parentPath;
+ var pPath = parentPath;
pPath += Path.GetFileName(file);
pPath += "\\";
ZipSetp(file, s, pPath, files);
}
- else // 否则直接压缩文件
+ else// 否则直接压缩文件
{
//打开压缩文件
- string fileName = parentPath + Path.GetFileName(file);
- ZipEntry entry = new ZipEntry(fileName);
+ var fileName = parentPath + Path.GetFileName(file);
+ var entry = new ZipEntry(fileName);
entry.DateTime = DateTime.Now;
s.PutNextEntry(entry);
- using (FileStream fs = File.OpenRead(file))
+ using (var fs = File.OpenRead(file))
{
int sourceBytes;
do
@@ -236,14 +242,15 @@ public class ZipUtils
/// 解压目录
/// zip 文件的密码。
/// 是否覆盖已存在的文件。
- public static void UnZip(string zipedFile, string strDirectory, bool overWrite, string password)
+ public static void UnZip(string zipedFile, string strDirectory, bool overWrite,
+ string password)
{
if (strDirectory == "")
strDirectory = Directory.GetCurrentDirectory();
if (!strDirectory.EndsWith("\\"))
strDirectory = strDirectory + "\\";
- using (ZipInputStream s = new ZipInputStream(File.OpenRead(zipedFile)))
+ using (var s = new ZipInputStream(File.OpenRead(zipedFile)))
{
if (password != null)
{
@@ -253,25 +260,25 @@ public class ZipUtils
while ((theEntry = s.GetNextEntry()) != null)
{
- string directoryName = "";
- string pathToZip = "";
+ var directoryName = "";
+ var pathToZip = "";
pathToZip = theEntry.Name;
if (pathToZip != "")
directoryName = Path.GetDirectoryName(pathToZip) + "\\";
- string fileName = Path.GetFileName(pathToZip);
+ var fileName = Path.GetFileName(pathToZip);
Directory.CreateDirectory(strDirectory + directoryName);
if (fileName != "")
{
- if ((File.Exists(strDirectory + directoryName + fileName) && overWrite) || (!File.Exists(strDirectory + directoryName + fileName)))
+ if (File.Exists(strDirectory + directoryName + fileName) && overWrite || !File.Exists(strDirectory + directoryName + fileName))
{
- using (FileStream streamWriter = File.Create(strDirectory + directoryName + fileName))
+ using (var streamWriter = File.Create(strDirectory + directoryName + fileName))
{
- int size = 2048;
- byte[] data = new byte[2048];
+ var size = 2048;
+ var data = new byte[2048];
while (true)
{
size = s.Read(data, 0, data.Length);
@@ -321,14 +328,14 @@ public class ZipUtils
/// 文件名称列表(包含子目录)
public static List GetFiles(string zipedFile, List fileExtension)
{
- List files = new List();
+ var files = new List();
if (!File.Exists(zipedFile))
{
//return files;
throw new FileNotFoundException(zipedFile);
}
- using (ZipInputStream s = new ZipInputStream(File.OpenRead(zipedFile)))
+ using (var s = new ZipInputStream(File.OpenRead(zipedFile)))
{
ZipEntry theEntry;
while ((theEntry = s.GetNextEntry()) != null)
@@ -372,16 +379,17 @@ public class ZipUtils
/// 文件列表
/// 保存路径
/// 是否本地
- public static string ZipFiles(string zipName, List fileList, out string error, bool isLocal = true)
+ public static string ZipFiles(string zipName, List fileList, out string error,
+ bool isLocal = true)
{
error = string.Empty;
- string path = string.Format("/ZipFiles/{0}/{1}/{2}/", DateTime.Now.Year, DateTime.Now.Month, DateTime.Now.Day);
+ var path = string.Format("/ZipFiles/{0}/{1}/{2}/", DateTime.Now.Year, DateTime.Now.Month, DateTime.Now.Day);
//文件保存目录
- string directory = App.WebHostEnvironment.WebRootPath + path;
+ var directory = App.WebHostEnvironment.WebRootPath + path;
- string url = App.Configuration["FileHostUrl"].TrimEnd('/') + path + zipName;
- string savePath = directory + zipName;
+ var url = App.Configuration["FileHostUrl"].TrimEnd('/') + path + zipName;
+ var savePath = directory + zipName;
try
{
if (!Directory.Exists(directory))
@@ -389,16 +397,16 @@ public class ZipUtils
Directory.CreateDirectory(directory);
}
- using (ZipOutputStream zipStream = new ZipOutputStream(File.Create(savePath)))
+ using (var zipStream = new ZipOutputStream(File.Create(savePath)))
{
- zipStream.SetLevel(9); //压缩级别0-9
+ zipStream.SetLevel(9);//压缩级别0-9
foreach (var item in fileList)
{
byte[] buffer = null;
if (isLocal)
{
- FileStream stream = new FileInfo(item.FilePath).OpenRead();
+ var stream = new FileInfo(item.FilePath).OpenRead();
buffer = new byte[stream.Length];
stream.Read(buffer, 0, Convert.ToInt32(stream.Length));
}
@@ -406,7 +414,7 @@ public class ZipUtils
{
buffer = new WebClient().DownloadData(item.FilePath);//取消
}
- ZipEntry entry = new ZipEntry(item.FileName);
+ var entry = new ZipEntry(item.FileName);
entry.DateTime = DateTime.Now;
entry.Size = buffer.Length;
zipStream.PutNextEntry(entry);
@@ -427,22 +435,22 @@ public class ZipUtils
public static string CompressDirectory(string dirPath, bool deleteDir)
{
//压缩文件路径
- string pCompressPath = dirPath + ".zip";
+ var pCompressPath = dirPath + ".zip";
if (File.Exists(pCompressPath))
File.Delete(pCompressPath);
//创建压缩文件
- FileStream pCompressFile = new FileStream(pCompressPath, FileMode.Create);
- using (ZipOutputStream zipoutputstream = new ZipOutputStream(pCompressFile))
+ var pCompressFile = new FileStream(pCompressPath, FileMode.Create);
+ using (var zipoutputstream = new ZipOutputStream(pCompressFile))
{
- Crc32 crc = new Crc32();
- Dictionary fileList = GetAllFies(dirPath);
- foreach (KeyValuePair item in fileList)
+ var crc = new Crc32();
+ var fileList = GetAllFies(dirPath);
+ foreach (var item in fileList)
{
- FileStream fs = new FileStream(item.Key.ToString(), FileMode.Open, FileAccess.Read, FileShare.ReadWrite);
+ var fs = new FileStream(item.Key, FileMode.Open, FileAccess.Read, FileShare.ReadWrite);
// FileStream fs = File.OpenRead(item.Key.ToString());
- byte[] buffer = new byte[fs.Length];
+ var buffer = new byte[fs.Length];
fs.Read(buffer, 0, buffer.Length);
- ZipEntry entry = new ZipEntry(item.Key.Substring(dirPath.Length));
+ var entry = new ZipEntry(item.Key.Substring(dirPath.Length));
entry.DateTime = item.Value;
entry.Size = fs.Length;
fs.Close();
@@ -466,15 +474,15 @@ public class ZipUtils
///
private static Dictionary GetAllFies(string dir)
{
- Dictionary FilesList = new Dictionary();
- DirectoryInfo fileDire = new DirectoryInfo(dir);
+ var filesList = new Dictionary();
+ var fileDire = new DirectoryInfo(dir);
if (!fileDire.Exists)
{
- throw new System.IO.FileNotFoundException("目录:" + fileDire.FullName + "没有找到!");
+ throw new FileNotFoundException("目录:" + fileDire.FullName + "没有找到!");
}
- GetAllDirFiles(fileDire, FilesList);
- GetAllDirsFiles(fileDire.GetDirectories(), FilesList);
- return FilesList;
+ GetAllDirFiles(fileDire, filesList);
+ GetAllDirsFiles(fileDire.GetDirectories(), filesList);
+ return filesList;
}
///
@@ -484,9 +492,9 @@ public class ZipUtils
///
private static void GetAllDirsFiles(DirectoryInfo[] dirs, Dictionary filesList)
{
- foreach (DirectoryInfo dir in dirs)
+ foreach (var dir in dirs)
{
- foreach (FileInfo file in dir.GetFiles("."))
+ foreach (var file in dir.GetFiles("."))
{
filesList.Add(file.FullName, file.LastWriteTime);
}
@@ -501,7 +509,7 @@ public class ZipUtils
/// 文件列表HastTable
private static void GetAllDirFiles(DirectoryInfo dir, Dictionary filesList)
{
- foreach (FileInfo file in dir.GetFiles())
+ foreach (var file in dir.GetFiles())
{
filesList.Add(file.FullName, file.LastWriteTime);
}
@@ -522,4 +530,4 @@ public class FileItem
/// 文件路径
///
public string FilePath { get; set; }
-}
\ No newline at end of file
+}
diff --git a/api/SimpleAdmin/SimpleAdmin.MessageCenter/GlobalUsing.cs b/api/SimpleAdmin/SimpleAdmin.MessageCenter/GlobalUsing.cs
new file mode 100644
index 0000000000000000000000000000000000000000..7d5051f662d57b0941a083cf253e6da5f945c481
--- /dev/null
+++ b/api/SimpleAdmin/SimpleAdmin.MessageCenter/GlobalUsing.cs
@@ -0,0 +1 @@
+global using SimpleMQTT;
diff --git a/api/SimpleAdmin/SimpleAdmin.MessageCenter/MessageWorker.cs b/api/SimpleAdmin/SimpleAdmin.MessageCenter/MessageWorker.cs
new file mode 100644
index 0000000000000000000000000000000000000000..55fbacbe427a090d821c5584b3951b40954873f8
--- /dev/null
+++ b/api/SimpleAdmin/SimpleAdmin.MessageCenter/MessageWorker.cs
@@ -0,0 +1,91 @@
+using NewLife.MQTT;
+using SimpleAdmin.Cache;
+using SimpleAdmin.Core;
+using SimpleAdmin.SqlSugar;
+using SimpleAdmin.System;
+
+namespace SimpleAdmin.MessageCenter;
+
+public class MessageWorker : BackgroundService
+{
+ private readonly ILogger _logger;
+ private readonly ISimpleCacheService _simpleCacheService;
+ private readonly IMqttClientManager _mqttClientManager;
+ private readonly MqttClient _mqttClient;
+
+ public MessageWorker(ILogger logger, ISimpleCacheService simpleCacheService, IMqttClientManager mqttClientManager)
+ {
+ _logger = logger;
+ _simpleCacheService = simpleCacheService;
+ _mqttClientManager = mqttClientManager;
+ _mqttClient = mqttClientManager.GetClient();
+ }
+
+ protected override async Task ExecuteAsync(CancellationToken stoppingToken)
+ {
+ //ȡӳٶ
+ var queue = _simpleCacheService.GetDelayQueue(CacheConst.CACHE_NOTIFICATION);
+ while (!stoppingToken.IsCancellationRequested)
+ {
+ //һʮһqueue.TakeOneAsync(-1);-1dzʱʱ䣬Ĭ0Զʾֱӷأ
+ var data = await queue.TakeOneAsync(-1);
+ if (data != 0)
+ {
+ _logger.LogDebug($"յϢ,ϢID:{data},ʱ䣺{DateTime.Now}");
+ var db = DbContext.DB.CopyNew();
+ //ȡϢ
+ var message = await db.Queryable().InSingleAsync(data);
+ if (message != null)
+ {
+ message.Status = SysDictConst.MESSAGE_STATUS_ALREADY;
+ //ȡ͵Ϣ
+ var messageUsers = await db.Queryable()
+ .Where(it => it.MessageId == message.Id && it.Status == SysDictConst.MESSAGE_STATUS_READY).ToListAsync();
+ var hasError = false;
+ //
+ var result = await db.UseTranAsync(async () =>
+ {
+ messageUsers.ForEach(it =>
+ {
+ try
+ {
+ //Ϣ
+ _mqttClient.PublishAsync(MqttConst.MQTT_TOPIC_PREFIX + it.UserId, new MqttMessage()
+ {
+ MsgType = MqttConst.MQTT_MESSAGE_NEW,
+ Data = new MessageData()
+ {
+ Subject = message.Subject,
+ Content = message.Content
+ }
+ });
+ it.Status = SysDictConst.MESSAGE_STATUS_ALREADY;
+ it.UpdateTime = DateTime.Now;
+ }
+ catch (Exception e)
+ {
+ hasError = true;
+ _logger.LogError($"Ϣʧ:{e.Message}");
+ }
+ });
+ await db.Updateable(messageUsers).ExecuteCommandAsync();
+ await db.Updateable(message).ExecuteCommandAsync();
+ });
+ //ʧܵģдӳٶ
+ if (hasError)
+ {
+ _logger.LogDebug($"ʧܵϢ·ӳٶ");
+ queue.Add(message.Id, 5);
+ }
+ }
+ queue.Acknowledge(data);//߶Ѿ˵
+ _logger.LogDebug("ѳɹ");
+ }
+ else
+ {
+ _logger.LogDebug("ߴӶûõ:" + DateTime.Now);
+ await Task.Delay(1000, stoppingToken);
+ }
+ }
+ }
+}
diff --git a/api/SimpleAdmin/SimpleAdmin.Background/Program.cs b/api/SimpleAdmin/SimpleAdmin.MessageCenter/Program.cs
similarity index 67%
rename from api/SimpleAdmin/SimpleAdmin.Background/Program.cs
rename to api/SimpleAdmin/SimpleAdmin.MessageCenter/Program.cs
index 54d13f70dd3467b96c4601bb9055a5faa9bddab5..f5909fa0b3505a678f2cfb3c2489166a9de0a4cb 100644
--- a/api/SimpleAdmin/SimpleAdmin.Background/Program.cs
+++ b/api/SimpleAdmin/SimpleAdmin.MessageCenter/Program.cs
@@ -1,10 +1,13 @@
try
{
- Console.Title = "SimpleAdmin̨";
+ Console.Title = "SimpleAdminϢķ";
}
-catch { }//עᱨҪcatch
+catch
+{
+ // ignored
+}//עᱨҪcatch
Serve.Run(GenericRunOptions.Default
- .ConfigureBuilder(hostBuilder =>
+ .ConfigureBuilder(hostBuilder =>
{
hostBuilder.UseWindowsService();//֧עɷ
hostBuilder.ConfigureServices((hostContext, services) =>
@@ -13,5 +16,4 @@ Serve.Run(GenericRunOptions.Default
});
return hostBuilder;
})
-
-);
\ No newline at end of file
+ );
diff --git a/api/SimpleAdmin/SimpleAdmin.Background/Properties/launchSettings.json b/api/SimpleAdmin/SimpleAdmin.MessageCenter/Properties/launchSettings.json
similarity index 64%
rename from api/SimpleAdmin/SimpleAdmin.Background/Properties/launchSettings.json
rename to api/SimpleAdmin/SimpleAdmin.MessageCenter/Properties/launchSettings.json
index 7a614646bbf237994a31e9f6c1da652a4bdef3dd..5a4aa9d8216ea57634604b2ae40a025e5fb87c5f 100644
--- a/api/SimpleAdmin/SimpleAdmin.Background/Properties/launchSettings.json
+++ b/api/SimpleAdmin/SimpleAdmin.MessageCenter/Properties/launchSettings.json
@@ -1,6 +1,7 @@
{
+ "$schema": "http://json.schemastore.org/launchsettings.json",
"profiles": {
- "SimpleAdmin.Background": {
+ "SimpleAdmin.MessageCenter": {
"commandName": "Project",
"dotnetRunMessages": true,
"environmentVariables": {
@@ -8,4 +9,4 @@
}
}
}
-}
\ No newline at end of file
+}
diff --git a/api/SimpleAdmin/SimpleAdmin.MessageCenter/SimpleAdmin.MessageCenter.csproj b/api/SimpleAdmin/SimpleAdmin.MessageCenter/SimpleAdmin.MessageCenter.csproj
new file mode 100644
index 0000000000000000000000000000000000000000..112a5b325224c7471d865aa1c36e89ec0a584780
--- /dev/null
+++ b/api/SimpleAdmin/SimpleAdmin.MessageCenter/SimpleAdmin.MessageCenter.csproj
@@ -0,0 +1,31 @@
+
+
+
+ net8.0;net7.0;net6.0
+ enable
+ enable
+ dotnet-SimpleAdmin.MessageCenter-031b40d7-f6af-456f-a00c-48f5a3e234de
+ en-US
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/api/SimpleAdmin/SimpleAdmin.MessageCenter/SimpleAdmin.MessageCenter.xml b/api/SimpleAdmin/SimpleAdmin.MessageCenter/SimpleAdmin.MessageCenter.xml
new file mode 100644
index 0000000000000000000000000000000000000000..3426b3866aa1874db6fe256943b1bed18ab3357c
--- /dev/null
+++ b/api/SimpleAdmin/SimpleAdmin.MessageCenter/SimpleAdmin.MessageCenter.xml
@@ -0,0 +1,8 @@
+
+
+
+ SimpleAdmin.MessageCenter
+
+
+
+
diff --git a/api/SimpleAdmin/SimpleAdmin.Plugin/SimpleAdmin.Plugin.Mqtt/Mqtt.Development.json b/api/SimpleAdmin/SimpleAdmin.MessageCenter/appsettings.Development.json
similarity index 66%
rename from api/SimpleAdmin/SimpleAdmin.Plugin/SimpleAdmin.Plugin.Mqtt/Mqtt.Development.json
rename to api/SimpleAdmin/SimpleAdmin.MessageCenter/appsettings.Development.json
index 34281ee93c3f46c3a0ed95dd6867d2523fe9524b..686b93274d8d011a3a511fc776de311e0bb7aa56 100644
--- a/api/SimpleAdmin/SimpleAdmin.Plugin/SimpleAdmin.Plugin.Mqtt/Mqtt.Development.json
+++ b/api/SimpleAdmin/SimpleAdmin.MessageCenter/appsettings.Development.json
@@ -1,10 +1,10 @@
{
- //mqtt设置
+ //mqtt
"MqttSettings": {
"Host": "127.0.0.1",
"Port": 1883,
"UserName": "admin",
"SecretKey": "admin",
- "ClientId": "SimpleAdminWeb"
+ "ClientId": "SimpleAdminMessageCenter_Dev"
}
}
\ No newline at end of file
diff --git a/api/SimpleAdmin/SimpleAdmin.Plugin/SimpleAdmin.Plugin.Mqtt/Mqtt.Production.json b/api/SimpleAdmin/SimpleAdmin.MessageCenter/appsettings.Production.json
similarity index 66%
rename from api/SimpleAdmin/SimpleAdmin.Plugin/SimpleAdmin.Plugin.Mqtt/Mqtt.Production.json
rename to api/SimpleAdmin/SimpleAdmin.MessageCenter/appsettings.Production.json
index 34281ee93c3f46c3a0ed95dd6867d2523fe9524b..391f3bf5b353eed02d4f29282e5029104c338ff9 100644
--- a/api/SimpleAdmin/SimpleAdmin.Plugin/SimpleAdmin.Plugin.Mqtt/Mqtt.Production.json
+++ b/api/SimpleAdmin/SimpleAdmin.MessageCenter/appsettings.Production.json
@@ -1,10 +1,10 @@
{
- //mqtt设置
+ //mqtt
"MqttSettings": {
"Host": "127.0.0.1",
"Port": 1883,
"UserName": "admin",
"SecretKey": "admin",
- "ClientId": "SimpleAdminWeb"
+ "ClientId": "SimpleAdminMessageCenter_Pro"
}
}
\ No newline at end of file
diff --git a/api/SimpleAdmin/SimpleAdmin.Plugin/SimpleAdmin.Plugin.Aop/Aop/GlobalDispatchProxy.cs b/api/SimpleAdmin/SimpleAdmin.Plugin/SimpleAdmin.Plugin.Aop/Aop/GlobalDispatchProxy.cs
index 6cbb857cb63af3cfe46df9b4b0f06e4556da9200..9258675b350b5f2a8eb60c8662aec792a5df5e6c 100644
--- a/api/SimpleAdmin/SimpleAdmin.Plugin/SimpleAdmin.Plugin.Aop/Aop/GlobalDispatchProxy.cs
+++ b/api/SimpleAdmin/SimpleAdmin.Plugin/SimpleAdmin.Plugin.Aop/Aop/GlobalDispatchProxy.cs
@@ -1,4 +1,16 @@
-namespace SimpleAdmin.Plugin.Aop;
+// Copyright (c) 2022-Now 少林寺驻北固山办事处大神父王喇嘛
+//
+// SimpleAdmin 基于 Apache License Version 2.0 协议发布,可用于商业项目,但必须遵守以下补充条款:
+// 1.请不要删除和修改根目录下的LICENSE文件。
+// 2.请不要删除和修改SimpleAdmin源码头部的版权声明。
+// 3.分发源码时候,请注明软件出处 https://gitee.com/dotnetmoyu/SimpleAdmin
+// 4.基于本软件的作品,只能使用 SimpleAdmin 作为后台服务,除外情况不可商用且不允许二次分发或开源。
+// 5.请不得将本软件应用于危害国家安全、荣誉和利益的行为,不能以任何形式用于非法为目的的行为。
+// 6.任何基于本软件而产生的一切法律纠纷和责任,均于我司无关。
+
+using SimpleAdmin.Core;
+
+namespace SimpleAdmin.Plugin.Aop;
///
/// Aop
@@ -31,13 +43,10 @@ public class GlobalDispatchProxy : AspectDispatchProxy, IDispatchProxy
After(method, null, args);
return method.Invoke(Target, args);//直接返回
}
- else
- {
- var result = Before(method, args);//方法执行之前判断是否有缓存的数据
- if (result == null) result = method.Invoke(Target, args);//如果没有缓存就执行方法返回数据
- After(method, result, args);//方法执行之后干的事
- return result;//返回结果
- }
+ var result = Before(method, args);//方法执行之前判断是否有缓存的数据
+ if (result == null) result = method.Invoke(Target, args);//如果没有缓存就执行方法返回数据
+ After(method, result, args);//方法执行之后干的事
+ return result;//返回结果
}
///
@@ -109,16 +118,17 @@ public class GlobalDispatchProxy : AspectDispatchProxy, IDispatchProxy
//判断需不需要读取缓存
if (cacheAttribute != null)
{
- var _redisManager = Services.GetService();// 获取redis服务
- var cacheKey = cacheAttribute.CustomKeyValue ?? CustomCacheKey(cacheAttribute.KeyPrefix, method, args);//如果redisKey值,如果有自定义值就用自定义Key,否则以前缀+系统自动生成的Key
- var cacheValue = string.Empty;
- if (cacheAttribute.StoreType == CacheConst.Cache_Hash)//如果存的是Hash值
+ var redisManager = Services.GetService();// 获取redis服务
+ var cacheKey = cacheAttribute.CustomKeyValue
+ ?? CustomCacheKey(cacheAttribute.KeyPrefix, method, args);//如果redisKey值,如果有自定义值就用自定义Key,否则以前缀+系统自动生成的Key
+ string cacheValue;
+ if (cacheAttribute.StoreType == CacheConst.CACHE_HASH)//如果存的是Hash值
{
- cacheValue = _redisManager.HashGet(cacheKey, new string[] { args[0].ToString() })[0];//从redis获取Hash数据取第一个,注意是 string 类型
+ cacheValue = redisManager.HashGet(cacheKey, args[0].ToString())[0];//从redis获取Hash数据取第一个,注意是 string 类型
}
else
{
- cacheValue = _redisManager.Get(cacheKey);//注意是 string 类型,方法GetValue
+ cacheValue = redisManager.Get(cacheKey);//注意是 string 类型,方法GetValue
}
if (!string.IsNullOrEmpty(cacheValue))//如果返回值不是空
{
@@ -150,10 +160,7 @@ public class GlobalDispatchProxy : AspectDispatchProxy, IDispatchProxy
dynamic result = JsonConvert.DeserializeObject(cacheValue, returnType);//序列化数据
return result;
}
- else
- {
- return cacheValue;
- }
+ return cacheValue;
}
}
return null;
@@ -174,29 +181,29 @@ public class GlobalDispatchProxy : AspectDispatchProxy, IDispatchProxy
var cacheKey = cacheAttribute.CustomKeyValue ?? CustomCacheKey(cacheAttribute.KeyPrefix, method, args);
if (!string.IsNullOrWhiteSpace(cacheKey))//如果有key
{
- var _redisManager = Services.GetService();// 获取redis服务
+ var redisManager = Services.GetService();// 获取redis服务
if (cacheAttribute.IsDelete)//判断是否是删除操作
{
//删除Redis整个KEY
- _redisManager.Remove(cacheKey);
+ redisManager.Remove(cacheKey);
}
else
{
if (returnValue == null) { return; }
- if (cacheAttribute.StoreType == CacheConst.Cache_Hash)//如果是hash类型的
+ if (cacheAttribute.StoreType == CacheConst.CACHE_HASH)//如果是hash类型的
{
//插入到hash,这里规定是方法的第一个参数
- _redisManager.HashAdd(cacheKey, args[0].ToString(), returnValue);
+ redisManager.HashAdd(cacheKey, args[0].ToString(), returnValue);
}
else
{
if (cacheAttribute.AbsoluteExpiration != null)//如果有超时时间
{
- _redisManager.Set(cacheKey, returnValue, cacheAttribute.AbsoluteExpiration.Value);//插入redis
+ redisManager.Set(cacheKey, returnValue, cacheAttribute.AbsoluteExpiration.Value);//插入redis
}
else
{
- _redisManager.Set(cacheKey, returnValue);//插入redis
+ redisManager.Set(cacheKey, returnValue);//插入redis
}
}
}
@@ -226,7 +233,7 @@ public class GlobalDispatchProxy : AspectDispatchProxy, IDispatchProxy
{
var typeName = Target.GetType().Name;//获取实例名
var methodName = method.Name;//获取方法名
- key = $"{CacheConst.Cache_Prefix_Web}{typeName}:{methodName}:";//生成Key
+ key = $"{CacheConst.CACHE_PREFIX_WEB}{typeName}:{methodName}:";//生成Key
foreach (var param in methodArguments)//遍历参数列表
{
key = $"{key}{param}:";//生成加上参数的KEY
@@ -248,7 +255,7 @@ internal static class GetCacheKey
///
public static string GetArgumentValue(object arg)
{
- if (arg is DateTime || arg is DateTime?)
+ if (arg is DateTime || arg is DateTime)
return ((DateTime)arg).ToString("yyyyMMddHHmmss");
if (arg is string || arg is ValueType || arg is Nullable)
@@ -262,7 +269,7 @@ internal static class GetCacheKey
var result = Resolve(obj);
return MD5Encryption.Encrypt(result);
}
- else if (arg.GetType().IsClass)
+ if (arg.GetType().IsClass)
{
return MD5Encryption.Encrypt(JsonConvert.SerializeObject(arg));
}
@@ -322,40 +329,38 @@ internal static class GetCacheKey
//已经修改过代码body应该不会是null值了
if (!(expression is BinaryExpression body))
return string.Empty;
- var Operator = GetOperator(body.NodeType);
- var Left = Resolve(body.Left);
- var Right = Resolve(body.Right);
- var Result = string.Format("({0} {1} {2})", Left, Operator, Right);
- return Result;
+ var @operator = GetOperator(body.NodeType);
+ var left = Resolve(body.Left);
+ var right = Resolve(body.Right);
+ var result = string.Format("({0} {1} {2})", left, @operator, right);
+ return result;
}
private static string ResolveFunc(Expression left, Expression right, ExpressionType expressiontype)
{
- var Name = (left as MemberExpression).Member.Name;
- var Value = (right as ConstantExpression).Value;
- var Operator = GetOperator(expressiontype);
- return Name + Operator + Value ?? "null";
+ var name = (left as MemberExpression).Member.Name;
+ var value = (right as ConstantExpression).Value;
+ var @operator = GetOperator(expressiontype);
+ return name + @operator + value;
}
private static string ResolveLinqToObject(Expression expression, object value, ExpressionType? expressiontype = null)
{
- var MethodCall = expression as MethodCallExpression;
- var MethodName = MethodCall.Method.Name;
- switch (MethodName)
+ var methodCall = expression as MethodCallExpression;
+ var methodName = methodCall.Method.Name;
+ switch (methodName)
{
case "Contains":
- if (MethodCall.Object != null)
- return Like(MethodCall);
- return In(MethodCall, value);
+ return methodCall.Object != null ? Like(methodCall) : In(methodCall, value);
case "Count":
- return Len(MethodCall, value, expressiontype.Value);
+ return Len(methodCall, value, expressiontype.Value);
case "LongCount":
- return Len(MethodCall, value, expressiontype.Value);
+ return Len(methodCall, value, expressiontype.Value);
default:
- throw new Exception(string.Format("不支持{0}方法的查找!", MethodName));
+ throw new Exception(string.Format("不支持{0}方法的查找!", methodName));
}
}
@@ -379,40 +384,40 @@ internal static class GetCacheKey
private static string In(MethodCallExpression expression, object isTrue)
{
- var Argument1 = (expression.Arguments[0] as MemberExpression).Expression as ConstantExpression;
- var Argument2 = expression.Arguments[1] as MemberExpression;
- var Field_Array = Argument1.Value.GetType().GetFields().First();
- object[] Array = Field_Array.GetValue(Argument1.Value) as object[];
- List SetInPara = new List();
- for (var i = 0; i < Array.Length; i++)
+ var argument1 = (expression.Arguments[0] as MemberExpression).Expression as ConstantExpression;
+ var argument2 = expression.Arguments[1] as MemberExpression;
+ var fieldArray = argument1.Value.GetType().GetFields().First();
+ var array = fieldArray.GetValue(argument1.Value) as object[];
+ var setInPara = new List();
+ for (var i = 0; i < array.Length; i++)
{
- var Value = Array[i].ToString();
- SetInPara.Add(Value);
+ var value = array[i].ToString();
+ setInPara.Add(value);
}
- var Name = Argument2.Member.Name;
- var Operator = Convert.ToBoolean(isTrue) ? "in" : " not in";
- var CompName = string.Join(",", SetInPara);
- var Result = string.Format("{0} {1} ({2})", Name, Operator, CompName);
- return Result;
+ var name = argument2.Member.Name;
+ var @operator = Convert.ToBoolean(isTrue) ? "in" : " not in";
+ var compName = string.Join(",", setInPara);
+ var result = string.Format("{0} {1} ({2})", name, @operator, compName);
+ return result;
}
private static string Like(MethodCallExpression expression)
{
- var Temp = expression.Arguments[0];
- var lambda = Expression.Lambda(Temp);
+ var temp = expression.Arguments[0];
+ var lambda = Expression.Lambda(temp);
var fn = lambda.Compile();
- var tempValue = Expression.Constant(fn.DynamicInvoke(null), Temp.Type);
- var Value = string.Format("%{0}%", tempValue);
- var Name = (expression.Object as MemberExpression).Member.Name;
- var Result = string.Format("{0} like {1}", Name, Value);
- return Result;
+ var tempValue = Expression.Constant(fn.DynamicInvoke(null), temp.Type);
+ var value = string.Format("%{0}%", tempValue);
+ var name = (expression.Object as MemberExpression).Member.Name;
+ var result = string.Format("{0} like {1}", name, value);
+ return result;
}
private static string Len(MethodCallExpression expression, object value, ExpressionType expressiontype)
{
- object Name = (expression.Arguments[0] as MemberExpression).Member.Name;
- var Operator = GetOperator(expressiontype);
- var Result = string.Format("len({0}){1}{2}", Name, Operator, value.ToString());
- return Result;
+ object name = (expression.Arguments[0] as MemberExpression).Member.Name;
+ var @operator = GetOperator(expressiontype);
+ var result = string.Format("len({0}){1}{2}", name, @operator, value);
+ return result;
}
-}
\ No newline at end of file
+}
diff --git a/api/SimpleAdmin/SimpleAdmin.Plugin/SimpleAdmin.Plugin.Aop/Attributes/CacheAttribute.cs b/api/SimpleAdmin/SimpleAdmin.Plugin/SimpleAdmin.Plugin.Aop/Attributes/CacheAttribute.cs
index f63667278fdc575f3a253db13a6340af3b8eaf76..ad9014a9e4a7c5951d7c6dd163c7471fdcc98ed7 100644
--- a/api/SimpleAdmin/SimpleAdmin.Plugin/SimpleAdmin.Plugin.Aop/Attributes/CacheAttribute.cs
+++ b/api/SimpleAdmin/SimpleAdmin.Plugin/SimpleAdmin.Plugin.Aop/Attributes/CacheAttribute.cs
@@ -1,4 +1,14 @@
-namespace SimpleAdmin.Plugin.Aop;
+// Copyright (c) 2022-Now 少林寺驻北固山办事处大神父王喇嘛
+//
+// SimpleAdmin 基于 Apache License Version 2.0 协议发布,可用于商业项目,但必须遵守以下补充条款:
+// 1.请不要删除和修改根目录下的LICENSE文件。
+// 2.请不要删除和修改SimpleAdmin源码头部的版权声明。
+// 3.分发源码时候,请注明软件出处 https://gitee.com/dotnetmoyu/SimpleAdmin
+// 4.基于本软件的作品,只能使用 SimpleAdmin 作为后台服务,除外情况不可商用且不允许二次分发或开源。
+// 5.请不得将本软件应用于危害国家安全、荣誉和利益的行为,不能以任何形式用于非法为目的的行为。
+// 6.任何基于本软件而产生的一切法律纠纷和责任,均于我司无关。
+
+namespace SimpleAdmin.Plugin.Aop;
///
/// 缓存结果特性
@@ -29,4 +39,4 @@ public class CacheAttribute : Attribute
/// 存储类型
///
public string StoreType { get; set; }
-}
\ No newline at end of file
+}
diff --git a/api/SimpleAdmin/SimpleAdmin.Plugin/SimpleAdmin.Plugin.Aop/GlobalUsing.cs b/api/SimpleAdmin/SimpleAdmin.Plugin/SimpleAdmin.Plugin.Aop/GlobalUsing.cs
index 5e623d1b9e99d564c919f256bae1f83fac7c0bf6..58094d401274fd3ed36561a5b3e69d25ea2ea97b 100644
--- a/api/SimpleAdmin/SimpleAdmin.Plugin/SimpleAdmin.Plugin.Aop/GlobalUsing.cs
+++ b/api/SimpleAdmin/SimpleAdmin.Plugin/SimpleAdmin.Plugin.Aop/GlobalUsing.cs
@@ -1,8 +1,18 @@
-global using Furion.DataEncryption;
-global using Furion.Reflection;
-global using Furion.Reflection.Extensions;
+// Copyright (c) 2022-Now 少林寺驻北固山办事处大神父王喇嘛
+//
+// SimpleAdmin 基于 Apache License Version 2.0 协议发布,可用于商业项目,但必须遵守以下补充条款:
+// 1.请不要删除和修改根目录下的LICENSE文件。
+// 2.请不要删除和修改SimpleAdmin源码头部的版权声明。
+// 3.分发源码时候,请注明软件出处 https://gitee.com/dotnetmoyu/SimpleAdmin
+// 4.基于本软件的作品,只能使用 SimpleAdmin 作为后台服务,除外情况不可商用且不允许二次分发或开源。
+// 5.请不得将本软件应用于危害国家安全、荣誉和利益的行为,不能以任何形式用于非法为目的的行为。
+// 6.任何基于本软件而产生的一切法律纠纷和责任,均于我司无关。
+
+global using MoYu.DataEncryption;
+global using MoYu.Reflection;
+global using MoYu.Reflection.Extensions;
global using Microsoft.Extensions.DependencyInjection;
global using Newtonsoft.Json;
global using SimpleAdmin.Cache;
global using System.Linq.Expressions;
-global using System.Reflection;
\ No newline at end of file
+global using System.Reflection;
diff --git a/api/SimpleAdmin/SimpleAdmin.Plugin/SimpleAdmin.Plugin.Aop/SimpleAdmin.Plugin.Aop.csproj b/api/SimpleAdmin/SimpleAdmin.Plugin/SimpleAdmin.Plugin.Aop/SimpleAdmin.Plugin.Aop.csproj
index 19af1946c51400f0ea8aed9bcddb2688bb505bc9..99705fb28d8d70874b9ed94c4410c7bc3a5bd46d 100644
--- a/api/SimpleAdmin/SimpleAdmin.Plugin/SimpleAdmin.Plugin.Aop/SimpleAdmin.Plugin.Aop.csproj
+++ b/api/SimpleAdmin/SimpleAdmin.Plugin/SimpleAdmin.Plugin.Aop/SimpleAdmin.Plugin.Aop.csproj
@@ -1,15 +1,7 @@
-
- net7.0;net6.0
- 1701;1702;8616;1591;8618;8619;8629;8602;8603;8604;8625;8765
- SimpleAdmin.Plugin.Aop.xml
- enable
- enable
-
-
-
-
-
+
+
+
diff --git a/api/SimpleAdmin/SimpleAdmin.Plugin/SimpleAdmin.Plugin.Core/Enum/NoticeComponent.cs b/api/SimpleAdmin/SimpleAdmin.Plugin/SimpleAdmin.Plugin.Core/Enum/NoticeComponent.cs
deleted file mode 100644
index a045e69a7f977a9198f9c5afe703955fcedfcf0b..0000000000000000000000000000000000000000
--- a/api/SimpleAdmin/SimpleAdmin.Plugin/SimpleAdmin.Plugin.Core/Enum/NoticeComponent.cs
+++ /dev/null
@@ -1,9 +0,0 @@
-namespace SimpleAdmin.Plugin.Core;
-
-///
-/// 通知组件类型
-///
-public enum NoticeComponent
-{
- Signalr, Mqtt
-}
\ No newline at end of file
diff --git a/api/SimpleAdmin/SimpleAdmin.Plugin/SimpleAdmin.Plugin.Core/GlobalUsing.cs b/api/SimpleAdmin/SimpleAdmin.Plugin/SimpleAdmin.Plugin.Core/GlobalUsing.cs
deleted file mode 100644
index 306646a3a87a4bfc586d18a8a7b0c6c068ceda84..0000000000000000000000000000000000000000
--- a/api/SimpleAdmin/SimpleAdmin.Plugin/SimpleAdmin.Plugin.Core/GlobalUsing.cs
+++ /dev/null
@@ -1 +0,0 @@
-global using Furion.DependencyInjection;
\ No newline at end of file
diff --git a/api/SimpleAdmin/SimpleAdmin.Plugin/SimpleAdmin.Plugin.Core/Options/PluginSettingsOptions.cs b/api/SimpleAdmin/SimpleAdmin.Plugin/SimpleAdmin.Plugin.Core/Options/PluginSettingsOptions.cs
deleted file mode 100644
index c605386d8b3a940f40081dc9bf3de01c3f2774bf..0000000000000000000000000000000000000000
--- a/api/SimpleAdmin/SimpleAdmin.Plugin/SimpleAdmin.Plugin.Core/Options/PluginSettingsOptions.cs
+++ /dev/null
@@ -1,25 +0,0 @@
-using Furion.ConfigurableOptions;
-
-namespace SimpleAdmin.Plugin.Core;
-
-///
-/// 插件配置选项
-///
-public class PluginSettingsOptions : IConfigurableOptions
-{
- ///
- /// 是否开启SignalR
- ///
- public bool UseSignalR { get; set; } = true;
-
- ///
- /// 是否开启Mqtt
- ///
- public bool UseMqtt { get; set; } = false;
-
- ///
- /// 默认通知类型
- /// SignalR/Mqtt
- ///
- public NoticeComponent NoticeComponent { get; set; } = NoticeComponent.Signalr;
-}
\ No newline at end of file
diff --git a/api/SimpleAdmin/SimpleAdmin.Plugin/SimpleAdmin.Plugin.Core/SimpleAdmin.Plugin.Core.xml b/api/SimpleAdmin/SimpleAdmin.Plugin/SimpleAdmin.Plugin.Core/SimpleAdmin.Plugin.Core.xml
deleted file mode 100644
index 5fc9cbe506ab2491896f9d5f1347e6303e0a4938..0000000000000000000000000000000000000000
--- a/api/SimpleAdmin/SimpleAdmin.Plugin/SimpleAdmin.Plugin.Core/SimpleAdmin.Plugin.Core.xml
+++ /dev/null
@@ -1,66 +0,0 @@
-
-
-
- SimpleAdmin.Plugin.Core
-
-
-
-
- 通知组件类型
-
-
-
-
- 通知服务
-
-
-
-
- 通知用户下线
-
- 用户ID
- clientId列表
- 通知内容
-
-
-
-
- 通知用户修改密码
-
- 用户ID
- clientId列表
- 通知内容
-
-
-
-
- 收到新的消息
-
- 用户Id列表
- clientId列表
-
-
-
-
-
- 插件配置选项
-
-
-
-
- 是否开启SignalR
-
-
-
-
- 是否开启Mqtt
-
-
-
-
- 默认通知类型
- SignalR/Mqtt
-
-
-
-
diff --git a/api/SimpleAdmin/SimpleAdmin.Plugin/SimpleAdmin.Plugin.Gen/CodeGen/Backend/Controllers/Controller.cs.vm b/api/SimpleAdmin/SimpleAdmin.Plugin/SimpleAdmin.Plugin.Gen/CodeGen/Backend/Controllers/Controller.cs.vm
deleted file mode 100644
index 34f21484d06dc0b78e9b6a636707789b6a9fcf2e..0000000000000000000000000000000000000000
--- a/api/SimpleAdmin/SimpleAdmin.Plugin/SimpleAdmin.Plugin.Gen/CodeGen/Backend/Controllers/Controller.cs.vm
+++ /dev/null
@@ -1,299 +0,0 @@
-@{
-var dataPermission=@Model.DataPermission=="Y";//是否启用数据权限
-var isOrgTree=@Model.LeftTree=="org";//是否启用组织树
-var funcList=@Model.FuncList;//获取功能列表
-var isTreeList = @Model.ModuleType=="treeList";//是否是树表-列表
-var isTreeTree = @Model.ModuleType=="treeTree"; //是否是树-树
-var tableFieIds=@Model.TableFields;//获取字段
-}
-using Microsoft.AspNetCore.Mvc;
-using System.ComponentModel;
-using Furion.DynamicApiController;
-using @(@Model.ServicePosition);
-
-namespace @(@Model.ControllerPosition);
-
-///
-/// @(@Model.FunctionName)控制器
-///
-[ApiDescriptionSettings("@(@Model.ApiGroup)", Tag = "@(@Model.FunctionName)")]
-[Route("/@(@Model.RouteName)/@(@Model.BusName)")]
-@if(dataPermission) @:[RolePermission]
-public class @(@Model.ClassName)Controller: IDynamicApiController
-{
- private readonly I@(@Model.ServiceName) _@(@Model.ServiceFirstLower);
- @if(isOrgTree){
- @if(dataPermission){
- @:private readonly IOrgService _orgService;
- }
- else{
- @:private readonly ISysOrgService _sysOrgService;
- }
- }
- public @(@Model.ClassName)Controller(I@(@Model.ServiceName) @(@Model.ServiceFirstLower)
- @if(isOrgTree){
- @if(dataPermission){
- @:,IOrgService orgService
- }
- else{
- @:,ISysOrgService sysOrgService
- }
- }
- )
- {
- this._@(@Model.ServiceFirstLower) = @(@Model.ServiceFirstLower);
- @if(isOrgTree){
- @if(dataPermission){
- @:_orgService = orgService;
- }
- else{
- @:_sysOrgService = sysOrgService;
- }
- }
- }
- #region Get请求
-
- ///
- /// @(@Model.DescriptionPage)
- ///
- ///
- ///
- [HttpGet("page")]
- [DisplayName("@(@Model.DescriptionPage)")]
- public async Task Page([FromQuery] @Model.PageInput input)
- {
- return await _@(@Model.ServiceFirstLower).Page(input);
- }
-
- ///
- /// @(@Model.DescriptionList)
- ///
- ///
- ///
- [HttpGet("list")]
- [DisplayName("@(@Model.DescriptionList)")]
- public async Task List([FromQuery] @Model.PageInput input)
- {
- return await _@(@Model.ServiceFirstLower).List(input);
- }
-
- ///
- /// @(@Model.DescriptionDetail)
- ///
- ///
- ///
- [HttpGet("detail")]
- [DisplayName("@(@Model.DescriptionDetail)")]
- public async Task Detail([FromQuery] BaseIdInput input)
- {
- return await _@(@Model.ServiceFirstLower).Detail(input);
- }
-
- @{Fk();}
-
- @{Tree();}
-
- @{OtherGet();}
-
- #endregion
-
-
- #region Post请求
-
- ///
- /// @(@Model.DescriptionAdd)
- ///
- ///
- ///
- [HttpPost("add")]
- [DisplayName("@(@Model.DescriptionAdd)")]
- public async Task Add([FromBody] @(@Model.ClassName)AddInput input)
- {
- await _@(@Model.ServiceFirstLower).Add(input);
- }
-
- ///
- /// @(@Model.DescriptionEdit)
- ///
- ///
- ///
- [HttpPost("edit")]
- [DisplayName("@(@Model.DescriptionEdit)")]
- public async Task Edit([FromBody] @(@Model.ClassName)EditInput input)
- {
- await _@(@Model.ServiceFirstLower).Edit(input);
- }
-
- ///
- /// @(@Model.DescriptionDelete)
- ///
- ///
- ///
- [HttpPost("delete")]
- [DisplayName("@(@Model.DescriptionDelete)")]
- public async Task Delete([FromBody] List input)
- {
- await _@(@Model.ServiceFirstLower).Delete(input);
- }
-
- @{OtherPost();}
- #endregion
-}
-
-@{
-
-void Fk(){
-foreach (var column in tableFieIds){//遍历字段
-if(column.EffectType=="fk"){//如果是外键
- @:///
- @:/// @(column.FieldRemark)选择器
- @:///
- @:///
- @:[HttpGet("fk@(column.FkEntityName)Selector")]
- @:[DisplayName("@(column.FieldRemark)选择器")]
- @:public async Task Fk@(column.FkEntityName)Selector()
- @:{
- @:return await _@(@Model.ServiceFirstLower).Fk@(column.FkEntityName)Selector();
- @:}
- @:
-}
-}
-}
-
-void OtherGet(){
-foreach(var func in funcList){
-switch (func)//根据类型生成不同请求
-{
-//导入
-case "import":
- @:///
- @:/// @(@Model.DescriptionPreview)
- @:///
- @:///
- @:///
- @:[HttpPost("preview")]
- @:[DisableRequestSizeLimit]
- @:[SuppressMonitor]
- @:[DisplayName("@(@Model.DescriptionPreview)")]
- @:public async Task Preview([FromForm] ImportPreviewInput input)
- @:{
- @:return await _@(@Model.ServiceFirstLower).Preview(input);
- @:}
- @:
- @:///
- @:/// @(@Model.DescriptionTemplate)
- @:///
- @:///
- @:[HttpGet("template")]
- @:[SuppressMonitor]
- @:public async Task Template()
- @:{
- @:return await _@(@Model.ServiceFirstLower).Template();
- @:}
- @:
-break;
-}
-}
-}
-
-//左侧树接口
-void Tree(){
-if(isOrgTree){
- @:///
- @:/// 获取组织树选择器
- @:///
- @:///
- @:[HttpGet("orgTreeSelector")]
- @:[DisplayName("组织树查询")]
- @:public async Task OrgTreeSelector()
- @:{
- @if(dataPermission){
- @:return await _orgService.Tree();
- }
- else{
- @:return await _sysOrgService.Tree();
- }
- @:}
-}
-else if(isTreeList){
- @:///
- @:/// @(@Model.DescriptionTree)
- @:///
- @:///
- @:[HttpGet("tree")]
- @:[DisplayName("@(@Model.DescriptionTree)")]
- @:public async Task Tree()
- @:{
- @:return await _@(@Model.ServiceFirstLower).Tree();
- @:}
-}
-else if(isTreeTree){
- @:///
- @:/// @(@Model.DescriptionTree)
- @:///
- @:///
- @:[HttpGet("tree")]
- @:[DisplayName("@(@Model.DescriptionTree)")]
- @:public async Task Tree([FromQuery] @Model.TreeInput input)
- @:{
- @:return await _@(@Model.ServiceFirstLower).Tree(input);
- @:}
-}
-
-}
-
-void OtherPost(){
-foreach(var func in funcList){
-switch (func)//根据类型生成不同请求
-{
-//导入
-case "import":
- @:///
- @:/// @(@Model.DescriptionImport)
- @:///
- @:///
- @:///
- @:[HttpPost("import")]
- @:[DisplayName("@(@Model.DescriptionImport)")]
- @:public async Task Import([SuppressMonitor][FromBody] ImportResultInput<@(@Model.ClassName)ImportInput> input)
- @:{
- @:return await _@(@Model.ServiceFirstLower).Import(input);
- @:}
- @:
-break;
-//导出
-case "export":
- @:///
- @:/// @(@Model.DescriptionExport)
- @:///
- @:///
- @:///
- @:[HttpPost("export")]
- @:[DisplayName("@(@Model.DescriptionExport)")]
- @:public async Task Export([FromBody] @Model.PageInput input)
- @:{
- @:return await _@(@Model.ServiceFirstLower).Export(input);
- @:}
- @:
-break;
-//批量编辑
-case "batchEdit":
- @:///
- @:/// @(@Model.DescriptionEdits)
- @:///
- @:///
- @:///
- @:[HttpPost("edits")]
- @:[DisplayName("@(@Model.DescriptionEdits)")]
- @:public async Task Edits([FromBody] BatchEditInput input)
- @:{
- @:await _@(@Model.ServiceFirstLower).Edits(input);
- @:}
- @:
-break;
-}
-}
-}
-
-
-}
\ No newline at end of file
diff --git a/api/SimpleAdmin/SimpleAdmin.Plugin/SimpleAdmin.Plugin.Gen/CodeGen/Backend/Services/Dto/Input.cs.vm b/api/SimpleAdmin/SimpleAdmin.Plugin/SimpleAdmin.Plugin.Gen/CodeGen/Backend/Services/Dto/Input.cs.vm
deleted file mode 100644
index fc9c3ea56481244931887b6395a10983299b1306..0000000000000000000000000000000000000000
--- a/api/SimpleAdmin/SimpleAdmin.Plugin/SimpleAdmin.Plugin.Gen/CodeGen/Backend/Services/Dto/Input.cs.vm
+++ /dev/null
@@ -1,170 +0,0 @@
-@{
- var tableFieIds=@Model.TableFields;//获取字段
- var isTreeList = @Model.ModuleType=="treeList";//是否是树表-列表
- var isTreeTree = @Model.ModuleType=="treeTree"; //是否是树-树
-}
-using System;
-using System.ComponentModel.DataAnnotations;
-using Masuit.Tools.Core.Validator;
-namespace @(@Model.ServicePosition);
-
-///
-/// @(@Model.DescriptionPage)参数
-///
-public class @Model.PageInput : BasePageInput
-{
- @{PageInput();}
- @if(@Model.LeftTree=="org"){
- @:///
- @:/// 组织机构Id
- @:///
- @:public long OrgId { get; set; }
- }
- @if(isTreeList){
- @:///
- @:/// 父Id
- @:///
- @:public long @Model.TreePid { get; set; }
- }
-}
-
-
-///
-/// @(@Model.DescriptionAdd)参数
-///
-public class @Model.AddInput
-{
- @{AddInput();}
-}
-
-///
-/// @(@Model.DescriptionEdit)参数
-///
-public class @Model.EditInput : @Model.AddInput
-{
- ///
- /// Id
- ///
- [IdNotNull(ErrorMessage = "Id不能为空")]
- public long Id { get; set; }
-}
-
-@if(isTreeTree){
-@{TreeTree();}
-}
-
-@{OtherInput();}
-
-@{
-
-void TreeTree(){
-@:///
-@:/// @(@Model.DescriptionTree)参数
-@:///
-@:public class @Model.TreeInput
-@:{
- @{PageInput();}
-@:}
-}
-
-void OtherInput(){
-var funcList=@Model.FuncList;//获取功能列表
-foreach(var func in funcList){
-switch (func)//根据类型生成不同请求
-{
-//导入
-case "import":
-@:///
-@:/// @(@Model.DescriptionImport)
-@:///
-@:public class @(@Model.ClassName)ImportInput : ImportTemplateInput
-@:{
- ImportInput();
-@:}
-break;
-}}
-
-}
-
-//生成导入字段
-void ImportInput(){
- foreach (var column in tableFieIds){
- if(column.WhetherImportExport=="Y")//判断是否新增
- {
- @:///
- @:/// @column.FieldRemark
- @:///
- @:[ImporterHeader(Name = "@column.FieldRemark")]
- if(column.WhetherImportExport=="Y")//判断是否必填
- {
- @:[Required(ErrorMessage = "@(@column.FieldRemark)不能为空")]
- }
- if(column.FieldNetType!="string")//如果不是string类型后面要加?号
- {
- @:public @(@column.FieldNetType)? @column.FieldName { get; set; }
- }else{
- @:public @column.FieldNetType @column.FieldName { get; set; }
- }
- @:
- }
- }
-}
-
-//生成分页字段
-void PageInput()
-{
- foreach (var column in tableFieIds){
- if(column.QueryWhether=="Y")//判断是否查询
- {
- if(column.EffectType=="datepicker"){//如果是时间类型
- @:///
- @:/// @column.FieldRemark
- @:///
- @:public @column.FieldNetType? Start@(@column.FieldName) { get; set; }
- @:
- @:///
- @:/// @column.FieldRemark
- @:///
- @:public @column.FieldNetType? End@(@column.FieldName) { get; set; }
- @:
- }
- else{
- @:///
- @:/// @column.FieldRemark
- @:///
- if(column.FieldNetType!="string")//如果不是string类型后面要加?号
- {
- @:public @(@column.FieldNetType)? @column.FieldName { get; set; }
- }else{
- @:public @column.FieldNetType @column.FieldName { get; set; }
- }
- @:
- }}}}
-}
-
-@{
-//生成新增字段
-void AddInput()
-{
- foreach (var column in tableFieIds){//遍历字段
- if(column.WhetherAddUpdate=="Y")//判断是否新增
- {
- @:///
- @:/// @column.FieldRemark
- @:///
- if(column.WhetherRequired=="Y")//判断是否必填
- {
- @:[Required(ErrorMessage = "@(@column.FieldName)不能为空")]
- }
- if(column.FieldNetType!="string")//如果不是string类型后面要加?号
- {
- @:public @(@column.FieldNetType)? @column.FieldName { get; set; }
- }else{
- @:public @column.FieldNetType @column.FieldName { get; set; }
- }
- @:
- }
- }
-}
-}
-
diff --git a/api/SimpleAdmin/SimpleAdmin.Plugin/SimpleAdmin.Plugin.Gen/CodeGen/Backend/Services/Dto/Output.cs.vm b/api/SimpleAdmin/SimpleAdmin.Plugin/SimpleAdmin.Plugin.Gen/CodeGen/Backend/Services/Dto/Output.cs.vm
deleted file mode 100644
index c4659ed310486b39df515c000f8741f9b264636f..0000000000000000000000000000000000000000
--- a/api/SimpleAdmin/SimpleAdmin.Plugin/SimpleAdmin.Plugin.Gen/CodeGen/Backend/Services/Dto/Output.cs.vm
+++ /dev/null
@@ -1,44 +0,0 @@
-namespace @(@Model.ServicePosition);
-
-@{OtherOutput();}
-
-
-
-@{
-
-void OtherOutput(){
-var funcList=@Model.FuncList;//获取功能列表
-foreach(var func in funcList){
-switch (func)//根据类型生成不同请求
-{
-//导入
-case "export":
-@:///
-@:/// @(@Model.DescriptionExport)
-@:///
-@:[ExcelExporter(Name = "@(@Model.FunctionName)信息", TableStyle = TableStyles.Light10, AutoFitAllColumn = true)]
-@:public class @(@Model.ClassName)ExportOutput
-@:{
- ExportOutput();
-@:}
-break;
-}}
-
-}
-
-void ExportOutput(){
- var tableFieIds=@Model.TableFields;//获取字段
- foreach (var column in tableFieIds){
- if(column.WhetherImportExport=="Y")//判断是否新增
- {
- @:///
- @:/// @column.FieldRemark
- @:///
- @:[ExporterHeader(DisplayName = "@column.FieldRemark")]
- @:public string @column.FieldName { get; set; }
- @:
- }
- }
-}
-
-}
\ No newline at end of file
diff --git a/api/SimpleAdmin/SimpleAdmin.Plugin/SimpleAdmin.Plugin.Gen/CodeGen/Backend/Services/IService.cs.vm b/api/SimpleAdmin/SimpleAdmin.Plugin/SimpleAdmin.Plugin.Gen/CodeGen/Backend/Services/IService.cs.vm
deleted file mode 100644
index 671ff8188d15ea305ea67c50afa7fecd4f9de524..0000000000000000000000000000000000000000
--- a/api/SimpleAdmin/SimpleAdmin.Plugin/SimpleAdmin.Plugin.Gen/CodeGen/Backend/Services/IService.cs.vm
+++ /dev/null
@@ -1,164 +0,0 @@
-@{
-var isTreeList = @Model.ModuleType=="treeList";//是否是树表-列表
-var isTreeTree = @Model.ModuleType=="treeTree"; //是否是树-树
-var tableFieIds=@Model.TableFields;//获取字段
-}
-using Furion.DependencyInjection;
-using SimpleAdmin.Core;
-
-namespace @(@Model.ServicePosition);
-
-///
-/// @(@Model.FunctionName)服务
-///
-public interface I@(@Model.ServiceName) : ITransient
-{
- #region 查询
-
- ///
- /// @Model.DescriptionPage
- ///
- /// 查询参数
- /// @(@Model.FunctionName)分页
- Task> Page(@Model.PageInput input);
-
- ///
- /// @Model.DescriptionList
- ///
- /// 查询参数
- /// @(@Model.FunctionName)列表
- Task> List(@Model.PageInput input);
-
- ///
- /// @Model.DescriptionDetail
- ///
- /// Id参数
- /// 详细信息
- Task<@(@Model.EntityName)> Detail(BaseIdInput input);
-
- @if(isTreeList){
- @:///
- @:/// @Model.DescriptionTree
- @:///
- @:/// @(@Model.FunctionName)树
- @:Task> Tree();
- }
- @if(isTreeTree){
- @:///
- @:/// @Model.DescriptionTree
- @:///
- @:/// @(@Model.FunctionName)树
- @:Task> Tree(@Model.TreeInput input);
- }
-
- @{Fk();}
- #endregion
-
- #region 新增
-
- ///
- /// @Model.DescriptionAdd
- ///
- /// 添加参数
- ///
- Task Add(@Model.AddInput input);
-
- #endregion
-
- #region 编辑
- ///
- /// @Model.DescriptionEdit
- ///
- /// 编辑参数
- ///
- Task Edit(@Model.EditInput input);
-
- @if(@Model.FuncList.Contains("batchEdit")){
- @:///
- @:/// @(@Model.DescriptionEdits)
- @:///
- @:/// 批量编辑信息
- @:///
- @:Task Edits(BatchEditInput input);
- }
- #endregion
-
- #region 删除
-
- ///
- /// @Model.DescriptionDelete
- ///
- /// 删除参数
- ///
- Task Delete(List input);
-
- #endregion
-
- #region 导入导出
-
- @{ImportExport();}
-
- #endregion
-}
-
-@{
-
-void Fk(){
-foreach (var column in tableFieIds){//遍历字段
-if(column.EffectType=="fk"){//如果是外键
- @:///
- @:/// @(column.FieldRemark)选择器
- @:///
- @:///
- @:Task> Fk@(column.FkEntityName)Selector();
-
-}
-}
-}
-
-void ImportExport(){
-
-var funcList=@Model.FuncList;//获取功能列表
-foreach(var func in funcList){
-switch (func)//根据类型生成不同请求
-{
-//导入
-case "import":
- @:///
- @:/// @(@Model.DescriptionTemplate)
- @:///
- @:/// 模板
- @:Task Template();
- @:
- @:///
- @:/// @(@Model.DescriptionPreview)
- @:///
- @:/// 预览参数
- @:/// 预览结果
- @:Task> Preview(ImportPreviewInput input);
- @:
- @:///
- @:/// @(@Model.DescriptionImport)
- @:///
- @:///
- @:///
- @:Task> Import(ImportResultInput<@(@Model.ClassName)ImportInput> input);
- @:
-break;
-//导出
-case "export":
- @:///
- @:/// @(@Model.DescriptionExport)
- @:///
- @:///
- @:///
- @:Task Export(@Model.PageInput input);
-break;
-}
-}
-
-}
-
-
-
-}
\ No newline at end of file
diff --git a/api/SimpleAdmin/SimpleAdmin.Plugin/SimpleAdmin.Plugin.Gen/CodeGen/Backend/Services/Service.cs.vm b/api/SimpleAdmin/SimpleAdmin.Plugin/SimpleAdmin.Plugin.Gen/CodeGen/Backend/Services/Service.cs.vm
deleted file mode 100644
index 645c7b528205c84bfa4e96de76be05832d0dd65c..0000000000000000000000000000000000000000
--- a/api/SimpleAdmin/SimpleAdmin.Plugin/SimpleAdmin.Plugin.Gen/CodeGen/Backend/Services/Service.cs.vm
+++ /dev/null
@@ -1,451 +0,0 @@
-@{
-var orgField=@Model.TableFields.Any(it=>it.FieldName=="OrgId")?"OrgId":"CreateOrgId";//机构字段
-var dataPermission=@Model.DataPermission=="Y";//是否有数据权限
-var tableFieIds=@Model.TableFields;//获取字段
-var isTreeList = @Model.ModuleType=="treeList";//是否是树表-列表
-var isTreeTree = @Model.ModuleType=="treeTree"; //是否是树-树
-var isMasterChild = @Model.ModuleType=="masterChild"; //是否是主子表
-}
-
-using Furion.FriendlyException;
-using Mapster;
-using SimpleAdmin.Core;
-using Microsoft.Extensions.Logging;
-using Microsoft.AspNetCore.Mvc;
-using SqlSugar;
-
-namespace @(@Model.ServicePosition);
-
-///
-///
-///
-public class @(@Model.ServiceName) : DbRepository<@(@Model.EntityName)>, I@(@Model.ServiceName)
-{
- private readonly ILogger<@(@Model.ServiceName)> _logger;
- private readonly ISysUserService _sysUserService;
- @if(@Model.FuncList.Contains("import")||@Model.FuncList.Contains("export")){
- @:private readonly IImportExportService _importExportService;
- }
- @if(@Model.FuncList.Contains("batchEdit")){
- @:private readonly IBatchEditService _batchEditService;
- }
- @if(@Model.LeftTree=="org"){
- @:private readonly ISysOrgService _sysOrgService;
- }
-
- public @(@Model.ServiceName)(ILogger<@(@Model.ServiceName)> logger,ISysUserService sysUserService
- @if(@Model.FuncList.Contains("import")||@Model.FuncList.Contains("export")){
- @:,IImportExportService importExportService
- }
- @if(@Model.FuncList.Contains("batchEdit")){
- @:,IBatchEditService updateBatchService
- }
- @if(@Model.LeftTree=="org"){
- @:,ISysOrgService sysOrgService
- }
- )
- {
- _sysUserService = sysUserService;
- _logger = logger;
- @if(@Model.FuncList.Contains("import")||@Model.FuncList.Contains("export")){
- @:_importExportService = importExportService;
- }
- @if(@Model.FuncList.Contains("batchEdit")){
- @: _batchEditService = updateBatchService;
- }
- @if(@Model.LeftTree=="org"){
- @: _sysOrgService = sysOrgService;
- }
-
- }
-
- #region 查询
-
- ///
- public async Task> Page(@Model.PageInput input)
- {
- var query = await GetQuery(input);//获取查询条件
- var pageInfo = await query.ToPagedListAsync(input.Current, input.Size);//分页
- return pageInfo;
- }
-
- ///
- public async Task> List(@Model.PageInput input)
- {
- var query = await GetQuery(input);//获取查询条件
- var list = await query.ToListAsync();
- return list;
- }
-
- ///
- public async Task<@(@Model.EntityName)> Detail(BaseIdInput input)
- {
- var @Model.ClassNameFirstLower = await GetFirstAsync(it => it.Id == input.Id);
- @if(dataPermission){
- @:var errorMessage = $"您没有权限查看该数据";
- @://获取数据范围
- @:var dataScope = await _sysUserService.GetLoginUserApiDataScope();
- @:if (dataScope!=null&&(!dataScope.Contains(@(@Model.ClassNameFirstLower).@(orgField)) || @(@Model.ClassNameFirstLower).CreateUserId != UserManager.UserId))//判断机构ID是否在数据范围或者创建人是否为当前登录人
- @:throw Oops.Bah(errorMessage);
- }
- @if(isMasterChild){
- @:var child=await Context.Queryable<@Model.ChildTable>().Where(it => it.@(Model.ChildFk) == @(@Model.ClassNameFirstLower).Id).ToListAsync();
- }
- return @Model.ClassNameFirstLower ;
-
- }
- @if(isTreeList){
- @:///
- @:public async Task> Tree()
- @:{
- @://第三个参数为0 表示 : parentid为 0 设置成根目录, 正常情况下最顶层的parentid不是0就是null
- @:var tree = Context.Queryable<@(@Model.EntityName)>().ToTree(it => it.Children, it => it.ParentId, 0);
- @:return tree;
- @:}
- }
- @if(isTreeTree){
- @:///
- @:public async Task> Tree(@Model.TreeInput input)
- @:{
- @://第三个参数为0 表示 : parentid为 0 设置成根目录, 正常情况下最顶层的parentid不是0就是null
- @:var tree = Context.Queryable<@(@Model.EntityName)>()
- @if(isTreeTree){
- @{PageWhereIf();}//查询条件
- }
- @:.ToTree(it => it.Children, it => it.ParentId, 0);
- @:return tree;
- @:}
- }
-
- @{Fk();}//外键查询
- #endregion
-
- #region 新增
-
- ///
- public async Task Add(@Model.AddInput input)
- {
- var @Model.ClassNameFirstLower = input.Adapt<@(@Model.EntityName)>();//实体转换
- await CheckInput(@Model.ClassNameFirstLower);//检查参数
- @if(dataPermission){
- @://获取数据范围
- @:var dataScope = await _sysUserService.GetLoginUserApiDataScope();
- @://判断机构ID是否在数据范围,这里只是简单示例,根据实际情况判断
- @://if (dataScope!=null&&(!dataScope.Contains(@(@Model.ClassNameFirstLower).OrgId)))
- @://throw Oops.Bah("您没有权限添加该数据");
- }
- await InsertAsync(@Model.ClassNameFirstLower);//插入数据
- }
-
- #endregion
-
- #region 编辑
-
- ///
- public async Task Edit(@Model.EditInput input)
- {
- var @Model.ClassNameFirstLower = input.Adapt<@(@Model.EntityName)>();//实体转换
- await CheckInput(@Model.ClassNameFirstLower);//检查参数
- @if(dataPermission){
- @://判断机构ID是否在数据范围并且创建者是自己,这里只是简单示例,根据实际情况判断
- @://if (dataScope!=null&&(!dataScope.Contains(@(@Model.ClassNameFirstLower).@(orgField)) || @(@Model.ClassNameFirstLower).CreateUserId != UserManager.UserId))
- @://throw Oops.Bah("您没有权限编辑该数据");
- }
- await UpdateAsync(@Model.ClassNameFirstLower);//更新数据
- }
-
- @if(@Model.FuncList.Contains("batchEdit")){
- @:///
- @:public async Task Edits(BatchEditInput input)
- @:{
- Edits();
- @:}
- }
-
- #endregion
-
- #region 删除
-
- ///
- public async Task Delete(List input)
- {
- //获取所有ID
- var ids = input.Select(it => it.Id).ToList();
- if (ids.Count > 0)
- {
- @if(dataPermission){
- @://获取数据范围
- @:var dataScope = await _sysUserService.GetLoginUserApiDataScope();
- @:var @(@Model.ClassNameFirstLower)s = await GetListAsync(it => ids.Contains(it.Id), it =>new @(@Model.EntityName){ @(orgField)=it.@(orgField),CreateUserId=it.CreateUserId });//根据ID获取机构ID和创建者ID
- @:@(@Model.ClassNameFirstLower)s.ForEach(it =>
- @:{
- @: if (dataScope!=null&&!dataScope.Contains(it.@(orgField))&&it.CreateUserId != UserManager.UserId) throw Oops.Bah(ErrorCodeEnum.A0004);//如果不包含机构id并且不是自己创建的
- @:});
- }
- @if(isMasterChild){
- @://如果@(Model.FunctionName)下有下级数据则不允许删除
- @:if (await Context.Queryable<@(@Model.ChildTable)>().AnyAsync(it => ids.Contains(it.@(Model.ChildFk))))
- @:{
- @:throw Oops.Bah($"有数据依赖@(Model.FunctionName),无法删除");
- @:}
- }
- await DeleteByIdsAsync(ids.Cast().ToArray());//删除数据
- ////事务
- //var result = await itenant.UseTranAsync(async () =>
- //{
- //await DeleteByIdsAsync(ids.Cast().ToArray());//删除数据
- @if(isMasterChild){
- @://Context.Deleteable<@(@Model.ChildTable)>().Where(it => ids.Contains(it.@(Model.ChildFk))).ExecuteCommandAsync();//删除子表数据
- }
- //});
- //if (!result.IsSuccess)//如果成功了
- //{
- ////写日志
- //_logger.LogError(result.ErrorMessage, result.ErrorException);
- //throw Oops.Oh(ErrorCodeEnum.A0002);
- //}
- }
- }
-
- #endregion
-
- #region 导入导出
-
- @{ImportExport();}
-
- #endregion
-
- #region 方法
-
- ///
- /// 检查输入参数
- ///
- ///
- private async Task CheckInput(@Model.EntityName @Model.ClassNameFirstLower)
- {
- @{CheckInput();}
- }
-
- ///
- /// 获取Sqlsugar的ISugarQueryable
- ///
- ///
- ///
- private async Task> GetQuery(@Model.PageInput input)
- {
-
- @if(dataPermission){
- @://获取数据范围
- @:var dataScope = await _sysUserService.GetLoginUserApiDataScope();
- @://动态查询条件,如果是连表查询,里面的it要改成连表里对应的别名
- @:var exp = Expressionable.Create<@(@Model.EntityName)>();
- @:exp.AndIF(dataScope is { Count: > 0 }, it => dataScope.Contains(it.@(orgField)));//用户机构在数据范围内
- @:exp.AndIF(dataScope is { Count: 0 }, it => it.CreateUserId == UserManager.UserId);//默认创建者ID等于自己,根据实际情况修改条件
- }
- @if(@Model.LeftTree=="org"){
- @:var orgIds = await _sysOrgService.GetOrgChildIds(input.OrgId);//获取下级机构
- }
- var query = Context.Queryable<@(@Model.EntityName)>()
- @{PageWhereIf();}
- @if(dataPermission){
- @:.Where(exp.ToExpression())
- }
- @if(@Model.LeftTree=="org"){
- @:.WhereIF(input.OrgId > 0, it => orgIds.Contains(it.@(orgField)))//根据机构ID查询
- }
- @if(isTreeList){
- @:.WhereIF(input.@(@Model.TreePid) > 0, it => it.@(@Model.TreePid) ==input.@(@Model.TreePid))//父级
- }
- //.WhereIF(!string.IsNullOrEmpty(input.SearchKey), it => it.Name.Contains(input.SearchKey))//根据关键字查询
- .OrderByIF(!string.IsNullOrEmpty(input.SortField), $"{input.SortField} {input.SortOrder}")
- @{PageSortCode();}
- return query;
- }
-
- ///
- public async Task> CheckImport<@(@Model.ClassName)ImportInput>(List<@(@Model.ClassName)ImportInput> data, bool clearError = false)
- {
- return data;
- }
- #endregion
-
-}
-
-@{
-
-void Fk(){
-foreach (var column in tableFieIds){//遍历字段
-if(column.EffectType=="fk"){//如果是外键
- @:///
- @:/// @(column.FieldRemark)选择器
- @:///
- @:///
- @:public async Task> Fk@(column.FkEntityName)Selector()
- @:{
- @if(dataPermission){
- @://获取数据范围
- @:var dataScope = await _sysUserService.GetLoginUserApiDataScope();
- }
- @:return await Context.Queryable<@(column.FkEntityName)>()
- @if(dataPermission){
- @://.WhereIf(dataScope!=null,it => it.CreateOrgId == UserManager.OrgId || (dataScope.Contains(it.Id)))
- }
- @:.Select(it => new BaseSelectorOutput { Value = it.@(column.FkColumnId), Label = it.@(column.FkColumnName) }).ToListAsync();
- @:}
-
-}
-}
-}
-
-//删除
-void Delete(){
-
-}
-
-//批量编辑
-void Edits(){
- @if(dataPermission){
- @://获取数据范围
- @:var dataScope = await _sysUserService.GetLoginUserApiDataScope();
- @:var ids = input.Ids;//获取id列表
- @:var @(@Model.ClassNameFirstLower)s = await GetListAsync(it => ids.Contains(it.Id), it =>new @(@Model.EntityName){ @(orgField)=it.@(orgField),CreateUserId=it.CreateUserId });//根据ID获取机构ID和创建者ID
- @:@(@Model.ClassNameFirstLower)s.ForEach(it =>
- @:{
- @: if (dataScope!=null&&!dataScope.Contains(it.@(orgField))&&it.CreateUserId != UserManager.UserId) throw Oops.Bah(ErrorCodeEnum.A0004);//如果不包含机构id并且不是自己创建的
- @:});
- }
- @://获取参数字典
- @:var data = await _batchEditService.GetUpdateBatchConfigDict(input.Code, input.Columns);
- @:if (data.Count > 0)
- @:{
- @:await Context.Updateable<@(@Model.EntityName)>(data).Where(it => input.Ids.Contains(it.Id)).ExecuteCommandAsync();
- @:}
-}
-
-//检查输入
-void CheckInput(){
- @:var errorMessage = $"您没有权限操作该数据";
- @:if(@(@Model.ClassNameFirstLower).Id==SimpleAdminConst.Zero){
- @://表示新增
- @:}
- @:else{
- @://表示编辑
- @:}
-}
-
-//导入导出
-void ImportExport()
-{
-if(@Model.FuncList.Contains("import"))
-{
- @:///
- @:public async Task Template()
- @:{
- @:var templateName = "@(@Model.FunctionName)信息";
- @://var result = _importExportService.GenerateLocalTemplate(templateName);
- @:var result = await _importExportService.GenerateTemplate<@(@Model.ClassName)ImportInput>(templateName);
- @:return result;
- @:}
- @:
- @:///
- @:public async Task> Preview(ImportPreviewInput input)
- @:{
- @:var importPreview = await _importExportService.GetImportPreview<@(@Model.ClassName)ImportInput>(input.File);
- @:importPreview.Data = await CheckImport(importPreview.Data);//检查导入数据
- @:return importPreview;
- @:}
- @:
- @:///
- @:public async Task> Import(ImportResultInput<@(@Model.ClassName)ImportInput> input)
- @:{
- @:var data = await CheckImport(input.Data, true);//检查数据格式
- @:var result = _importExportService.GetImportResultPreview(data, out var importData);
- @:var @Model.ClassNameFirstLower = importData.Adapt>();//转实体
- @:await InsertOrBulkCopy(@Model.ClassNameFirstLower);// 数据导入
- @:return result;
- @:}
- @:
-}
-if(@Model.FuncList.Contains("export"))
-{
- @:///
- @:public async Task Export(@Model.PageInput input)
- @:{
- @:var genTests = await List(input);
- @:var data = genTests.Adapt>();//转为Dto
- @:var result = await _importExportService.Export(data, "@(@Model.FunctionName)信息");
- @:return result;
- @:}
-}
-}
-}
-
-
-@{
-//生成查询条件
-void PageWhereIf()
-{
- foreach (var column in tableFieIds){//遍历字段
- if(column.QueryWhether=="Y")//判断是否查询
- {
- if(@column.FieldNetType.ToLower() == "string")//判断是否是字符串类型
- {
- switch (@column.QueryType)//遍历查询方式
- {
- case "eq"://等于
- @:.WhereIF(!string.IsNullOrWhiteSpace(input.@column.FieldName), it => it.@(@column.FieldName) == input.@(@column.FieldName))
- break;
- case "like"://包含
- @:.WhereIF(!string.IsNullOrWhiteSpace(input.@column.FieldName), it => it.@(@column.FieldName).Contains(input.@(@column.FieldName).Trim()))
- break;
- case "notlike"://不包含
- @:.WhereIF(!string.IsNullOrWhiteSpace(input.@column.FieldName), it => !it.@(@column.FieldName).Contains(input.@(@column.FieldName).Trim()))
- break;
- case "ne"://不等于
- @:.WhereIF(!string.IsNullOrWhiteSpace(input.@column.FieldName), it => it.@(@column.FieldName) != input.@(@column.FieldName))
- break;
- }
- }
- else if(@column.EffectType=="datepicker"){//如果是时间类型则生成时间戳
- @:.WhereIF(input.Start@(@column.FieldName)!=null||input.End@(@column.FieldName)!=null, it=> SqlFunc.Between(it.@column.FieldName, input.Start@(@column.FieldName), input.End@(@column.FieldName)))
- }
- else{//其他
- switch (@column.QueryType)//遍历查询方式
- {
- case "eq"://等于
- @:.WhereIF(input.@column.FieldName!=null, it => it.@(@column.FieldName) == input.@(@column.FieldName))
- break;
- case "ne"://不等于
- @:.WhereIF(input.@column.FieldName!=null, it => it.@(@column.FieldName) != input.@(@column.FieldName))
- break;
- case "gt"://大于
- @:.WhereIF(input.@column.FieldName!=null, it => it.@(@column.FieldName) > input.@(@column.FieldName))
- break;
- case "ge"://大于等于
- @:.WhereIF(input.@column.FieldName!=null, it => it.@(@column.FieldName) >= input.@(@column.FieldName))
- break;
- case "lt"://小于
- @:.WhereIF(input.@column.FieldName!=null, it => it.@(@column.FieldName) < input.@(@column.FieldName))
- break;
- case "le"://小于等于
- @:.WhereIF(input.@column.FieldName!=null, it => it.@(@column.FieldName) <= input.@(@column.FieldName))
- break;
- }
- }
- }
- }
-}
-}
-
-@{
-//生成根据SortCode排序
-void PageSortCode()
-{
- var hasSortCode= tableFieIds.Any(it => it.FieldName == "SortCode");
- if(hasSortCode){//如果有sortcode字段
- @:.OrderBy(it => it.SortCode);//排序
- }else{
- @:;
- }
-}
-}
\ No newline at end of file
diff --git a/api/SimpleAdmin/SimpleAdmin.Plugin/SimpleAdmin.Plugin.Gen/CodeGen/Frontend/api/Api.js.vm b/api/SimpleAdmin/SimpleAdmin.Plugin/SimpleAdmin.Plugin.Gen/CodeGen/Frontend/api/Api.js.vm
deleted file mode 100644
index 39f82378de87c208cceed0b811eb6d0de5cb596d..0000000000000000000000000000000000000000
--- a/api/SimpleAdmin/SimpleAdmin.Plugin/SimpleAdmin.Plugin.Gen/CodeGen/Frontend/api/Api.js.vm
+++ /dev/null
@@ -1,121 +0,0 @@
-@{
-var isTreeList = @Model.ModuleType=="treeList";//是否是树表-列表
-var isTreeTree = @Model.ModuleType=="treeTree"; //是否是树-树
-var isMasterChild = @Model.ModuleType=="masterChild";//是否是主子表
-var busName= @Model.BusName;//业务名称
-var tableFieIds=@Model.TableFields;//获取字段
-}
-import { baseRequest } from '@@/utils/request'
-
-const request = (url, ...arg) => baseRequest(`/@(@Model.RouteName)/@(@Model.BusName)/` + url, ...arg)
-
-/**
- * @(@Model.FunctionName)Api接口管理器
- *
- * @@author @Model.AuthorName
- * @@date @Model.GenTime
- **/
-
- export default {
- // 获取@(@Model.FunctionName)分页
- @(busName)Page(data) {
- return request('page', data, 'get')
- },
- // 获取@(@Model.FunctionName)列表
- @(busName)List(data) {
- return request('list', data, 'get')
- },
- // 提交@(@Model.FunctionName)表单 edit为true时为编辑,默认为新增
- submitForm(data, edit = false) {
- return request(edit ? 'edit' : 'add', data)
- },
- // 获取@(@Model.FunctionName)详情
- @(busName)Detail(data) {
- return request('detail', data, 'get')
- },
- // 删除@(@Model.FunctionName)
- @(busName)Delete(data) {
- return request('delete', data)
- },
- @if(isTreeList||isTreeTree){
- @:// 获取@(@Model.FunctionName)树
- @:@(busName)Tree(data) {
- @:return request('tree', data, 'get')
- @:},
- }
- @{Func();}
- @{LeftTree();}
- @{Fk();}
-}
-
-@{
-void Func(){
-var funcList=@Model.FuncList;//获取功能列表
-foreach(var func in funcList){
-switch (func)//根据类型生成不同请求
-{
-//导入
-case "import":
- @:// @(@Model.FunctionName)导入模板下载
- @:template(data={}) {
- @: return request('template', data, 'get', {
- @: responseType: 'blob'
- @: })
- @:},
- @:// @(@Model.FunctionName)导入预览
- @:preview(data={}) {
- @: return request('preview', data)
- @:},
- @:// @(@Model.FunctionName)导入数据
- @:import(data={}) {
- @: return request('import', data, 'post', {
- @: ignoreError: true
- @: })
- @:},
-break;
-//导出
-case "export":
- @:// 导出@(@Model.FunctionName)数据
- @:@(busName)Export(data) {
- @: return request('export', data, 'post', {
- @: responseType: 'blob'
- @: })
- @:},
-break;
-//批量编辑
-case "batchEdit":
- @:// @(@Model.FunctionName)批量编辑
- @:edits(data) {
- @: return request('edits', data)
- @:},
-break;
-}}
-}
-//左侧树
-void LeftTree(){
-var leftTree=@Model.LeftTree;//获取左侧树
-switch (leftTree)//根据类型生成不同控件
-{
-//获取组织选择器
-case "org":
- @:// 获取组织选择器
- @:@(leftTree)Tree(data) {
- @: return request('@(leftTree)TreeSelector', data, 'get')
- @:},
-break;
-}
-}
-
-void Fk(){
-foreach (var column in tableFieIds){//遍历字段
-if(column.EffectType=="fk"){//如果是外键
- @:// @(@Model.FunctionName)@(column.FieldRemark)选择器
- @:@(busName)Fk@(column.FkEntityName)Selector(data) {
- @: return request('fk@(column.FkEntityName)Selector', data,'get')
- @:},
-
-}
-}
-}
-
-}
diff --git a/api/SimpleAdmin/SimpleAdmin.Plugin/SimpleAdmin.Plugin.Gen/CodeGen/Frontend/views/form.vue.vm b/api/SimpleAdmin/SimpleAdmin.Plugin/SimpleAdmin.Plugin.Gen/CodeGen/Frontend/views/form.vue.vm
deleted file mode 100644
index 2fb3797d0f7dda01f8d63dbe236085ae10629534..0000000000000000000000000000000000000000
--- a/api/SimpleAdmin/SimpleAdmin.Plugin/SimpleAdmin.Plugin.Gen/CodeGen/Frontend/views/form.vue.vm
+++ /dev/null
@@ -1,288 +0,0 @@
-@{
-var tableFieIds=@Model.TableFields;//获取字段
-var isTreeList = @Model.ModuleType=="treeList";//是否是树表-列表
-var isTreeTree = @Model.ModuleType=="treeTree"; //是否是树-树
-var treeId=@SimpleTool.StringHelper.FirstCharToLower(@Model.TreeId);//获取树的id
-var treeName=@SimpleTool.StringHelper.FirstCharToLower(@Model.TreeName);//获取树的名称
-var treePid=@SimpleTool.StringHelper.FirstCharToLower(@Model.TreePid);//获取树的父级id
-var funcName=@Model.FunctionName;
-}
-
- @{Main();}
-
-@
-@{Script();}
-
-@{
-//主体
-void Main()
-{
-
-
- @if(@Model.GridWhether=="Y"){//使用栅格
- @:
- @if(isTreeList||isTreeTree){
- @{parent();}
- }
- @foreach (var column in tableFieIds){//遍历字段
- @if(column.WhetherAddUpdate=="Y"){//如果增改
- @:
- @:
- @:@{FormItem(@column);}
- @:
- }
- }
- @:
- }
- else{
- @if(isTreeList||isTreeTree){
- @{parent();}
- }
- @foreach (var column in tableFieIds){//遍历字段
- @if(column.WhetherAddUpdate=="Y"){//如果增改
- @:
- @:@{FormItem(@column);}
- }
- }
- }
-
-
- 关闭
- 保存
-
-
-}
-//父节点选择
-void parent(){
-
-
-
-}
-//表单控件
-void FormItem(dynamic column){
-switch (@column.EffectType)//根据类型生成不同控件
-{
-//输入框
-case "input":
-
-break;
-case "textarea":
-
-break;
-//选择
-case "select":
-
-break;
-case "radio":
-
-break;
-case "checkbox":
-
-break;
-//数字
-case "inputNumber":
-
-break;
-case "slider":
-
-break;
-//时间
-case "datepicker":
-@if(@column.FieldNetType=="Date")
-{
- @:
-}else{
-
-}
-break;
-case "timepicker":
-
-break;
-case "fk":
-
-break;
-default:
-break;}}
-
-void Script(){
-
-var primaryKey=tableFieIds.Where(it => it.IsPrimarykey=="Y").First();//主键字段
-var selectColumns=tableFieIds.Where(it => it.EffectType=="select"||it.EffectType=="radio"||it.EffectType=="checkbox").ToList();//选择框字段列表
-var addOrUpdateColumns=tableFieIds.Where(it => it.WhetherAddUpdate=="Y").ToList();//增改字段列表
-var selectCount=selectColumns.Count;//选择框数量
-
-}
-
-//外键选项
-void FkOptions(){
-foreach (var column in tableFieIds){//遍历字段
-if(column.EffectType=="fk"){//如果是外键
- @:const fk@(column.FkEntityName)Options = ref() //@(column.FieldRemark)数据
- @:const getFk@(column.FkEntityName)Options= () => {
- @:@(@Model.ClassNameFirstLower)Api.@(@Model.BusName)Fk@(column.FkEntityName)Selector().then((data) => {
- @: fk@(column.FkEntityName)Options.value = data
- @:})
- @:}
- @:
-}
-}
-}
-
-//获取外键
-void FkGet(){
-foreach (var column in tableFieIds){//遍历字段
-if(column.EffectType=="fk"){//如果是外键
- @:getFk@(column.FkEntityName)Options()
- @:
-}
-}
-}
-
-//定义树列表常量
-void TreeListConst(){
-if(isTreeList||isTreeTree){
- @:// 定义机构元素
-@:const treeData = ref([])
-}
-}
-
-//定义树列表方法
-void TreeListMethod()
-{
-if(isTreeList||isTreeTree){
- @:// 获取@(funcName)树并加入顶级
- @:@(@Model.ClassNameFirstLower)Api.@(@Model.BusName)Tree().then((res) => {
- @:treeData.value = [
- @:{
- @:id: 0,
- @:parentId: '-1',
- @:name: '顶级',
- @:children: res
- @:}
- @:]
- @:})
-}
-}
-
-}
\ No newline at end of file
diff --git a/api/SimpleAdmin/SimpleAdmin.Plugin/SimpleAdmin.Plugin.Gen/CodeGen/Frontend/views/index.vue.vm b/api/SimpleAdmin/SimpleAdmin.Plugin/SimpleAdmin.Plugin.Gen/CodeGen/Frontend/views/index.vue.vm
deleted file mode 100644
index 7295bad7a00ae412cb17c3e50f19909f386659e7..0000000000000000000000000000000000000000
--- a/api/SimpleAdmin/SimpleAdmin.Plugin/SimpleAdmin.Plugin.Gen/CodeGen/Frontend/views/index.vue.vm
+++ /dev/null
@@ -1,600 +0,0 @@
-@{
-var dataPermission=@Model.DataPermission=="Y";//是否需要数据权限
-var isLeftTree=@Model.LeftTree!="null";//是否有左侧树
-var tableFieIds=@Model.TableFields;//获取字段
-var funcList=@Model.FuncList;//获取功能列表
-var isTreeList = @Model.ModuleType=="treeList";//是否是树表-列表
-var isTreeTree = @Model.ModuleType=="treeTree"; //是否是树-树
-var isMasterChild = @Model.ModuleType=="masterChild";//是否是主子表
-var treeId=@SimpleTool.StringHelper.FirstCharToLower(@Model.TreeId);//获取树的id
-var treeName=@SimpleTool.StringHelper.FirstCharToLower(@Model.TreeName);//获取树的名称
-var treePid=@SimpleTool.StringHelper.FirstCharToLower(@Model.TreePid);//获取树的父级id
-var busName= @Model.BusName;//获取业务名称
-var funcName= @Model.FunctionName;//获取功能名称
-var showColumns= tableFieIds.Where(it => it.WhetherTable == "Y").ToList();//获取需要显示的字段
-var resizeColumn=showColumns.Any(it => it.WhetherResizable == "Y");//获取需要显示的字段
-}
-
-@{Template();}
-
-@
-@{Script();}
-@
-@{Style();}
-
-@{
-void Template()
-{
-//如果左侧树不为空则生成左侧树
-if(isLeftTree||isTreeList){
-LeftTree();
-}
-else{
-Main();//否则直接生成主体
-}
-}
-
-
-//左侧树
-void LeftTree(){
-
-
-
-
-
-
-
-
-@{Main();}
-
-
-}
-
-
-//主体
-void Main()
-{
-var columnCount = 0;//字段数量
-var searchColumns= tableFieIds.Where(it => it.QueryWhether == "Y").ToList();//获取需要查询的字段
-
-
-
- @foreach (var column in searchColumns)//遍历字段
- {
-
-
- @switch (@column.EffectType)//根据类型生成不同控件
- {
- //输入框
- case "input":
- case "textarea":
-
- break;
- //选择
- case "select":
- case "radio":
- case "checkbox":
-
- break;
- //数字
- case "inputNumber":
- case "slider":
-
- break;
- //时间
- case "datepicker":
- case "timepicker":
- @if(@column.FieldNetType.ToLower()=="date")
- {
- @:
- }else{
- @:
- }
- break;
- default:
-
- break;
- }
-
-
- columnCount++;
- if(columnCount==3) break;//默认只显示3个字段,其他的折叠
- }
- @if(searchColumns.Count>3)//如果字段大于3个则生成折叠面板
- {
-
- @for (int i = 3; i < searchColumns.Count; i++)//遍历字段,从第四个开始
- {
-
-
- @switch (@searchColumns[i].EffectType)
- {
- //输入框
- case "input":
- case "textarea":
-
- break;
- //选择
- case "select":
- case "radio":
- case "checkbox":
-
- break;
- //数字
- case "inputNumber":
- case "slider":
-
- break;
- //时间
- case "datepicker":
- case "timepicker":
- @if(@searchColumns[i].FieldNetType.ToLower()=="date")
- {
- @:
- }else{
- @:
- }
- break;
- default:
-
- break;
- }
-
-
- }
-
- }
-
-
- 查询
- searchFormRef.resetFields()">
- 重置
- @if(searchColumns.Count>3){//折叠
-
- {{ advanced ? '收起' : '展开' }}
-
-
- }
-
-
-
-
-@{Table();}
-}
-
-//表格部分
-void Table()
-{
-
- record.@column.FieldNameFirstLower"
- }
- }
- @if(resizeColumn){
-@:@@resizeColumn="handleResizeColumn"
- }
- :row-selection="options.rowSelection"
- :tool-config="toolConfig"
- >
-
-
-
- 新增@(funcName)
- @if(funcList.Contains("batchEdit")){//如果有批量删除
- @:
- @: 编辑@(funcName)
- }
- @if(funcList.Contains("batchDelete")){//如果有批量删除
- @:
- }
- @if(funcList.Contains("import")){//如果有导入
- @:
- @: 导入@(funcName)
- }
- @if(funcList.Contains("export")){//如果有导出
- @:
- }
-
-
-
- @foreach (var column in showColumns){//遍历显示字段
- @switch (@column.EffectType)
- {
- //选择
- case "select":
- case "radio":
-
- {{ $TOOL.dictTypeData('@column.DictTypeCode', record.@column.FieldNameFirstLower) }}
-
- break;
- //checkbox
- case "checkbox":
-
- {{ $TOOL.dictTypeData('@column.DictTypeCode', textValue) }}
-
- break;
- //日期
- case "datepicker":
- @if(@column.FieldNetType.ToLower()=="date")
- {
- @:
- @: {{ record.@(@column.FieldNameFirstLower) && record.@(@column.FieldNameFirstLower) .substr(0, 10) }}
- @:
- }
- break;
- //图片
- case "image":
-
-
-
- break;
- //外键
- case "fk":
-
- {{ fk@(@column.FkEntityName)Options.find((item) => item.value === record.@column.FieldNameFirstLower)?.label }}
-
- break;
- }
- }
-
-
- 编辑
-
-
- 删除
-
-
-
-
-
-
-
-@if(funcList.Contains("import")){//如果有导入
-
-}
-@if(funcList.Contains("batchEdit")){//如果有批量编辑
-
-}
-}
-
-//Js部分
-void Script()
-{
-var searchColumns= tableFieIds.Where(it => it.QueryWhether == "Y").ToList();//获取需要查询的字段
-var searchCount=searchColumns.Count;//查询字段数量
-var isSelect=searchColumns.Any(it => it.EffectType=="select"||it.EffectType=="radio"||it.EffectType=="checkbox");//是否有选择框
-
-}
-
-void FkOptions(){
-foreach (var column in tableFieIds){//遍历字段
-if(column.EffectType=="fk"){//如果是外键
- @:const fk@(column.FkEntityName)Options = ref([]) //@(column.FieldRemark)数据
- @:@(@Model.ClassNameFirstLower)Api.@(busName)Fk@(column.FkEntityName)Selector().then((data) => {
- @: fk@(column.FkEntityName)Options.value = data
- @:})
- @:
-}
-}
-}
-
-//表格属性配置
-void TableConst()
-{
-
- @://表格配置
- @:const table = ref() //表格
- @:let selectedRowKeys = ref([]) //选中项
- @:const toolConfig = { refresh: true, height: true, columnSetting: true, striped: false } //表格工具配置
- @:const columns = [
- @foreach (var column in tableFieIds){//遍历字段
- @if(column.WhetherTable=="Y"){//如果列表显示
- @:{
- @:title: '@column.FieldRemark',
- @if(@column.Width!=0){
- @:width: @column.Width,
- }
- @if(@column.WhetherResizable=="Y"){//如果列可伸缩
- @:resizable: true,
- }
- @if(column.WhetherRetract=="Y")//如果列省略
- {
- @:dataIndex: '@column.FieldNameFirstLower',
- @:ellipsis: true
- }
- else{
- @:dataIndex: '@column.FieldNameFirstLower'
- }
- @:},
- }
- }
- @:]
-
- @:if (hasPerm(['@(@Model.ClassNameFirstLower)Edit', '@(@Model.ClassNameFirstLower)Delete'])) {
- @:columns.push({
- @:title: '操作',
- @:dataIndex: 'action',
- @:align: 'center',
- @:fixed: 'right',
- @:width: '130px'
- @:})
- @:}
- @:
- @:// 列表选择配置
- @:const options = reactive({
- @:alert: {
- @:show: true, //显示选择多少个
- @:clear: () => {
- @:selectedRowKeys = ref([])
- @:}
- @:},
- @:rowSelection: {
- @:onChange: (selectedRowKey, selectedRows) => {
- @:selectedRowKeys.value = selectedRowKey
- @:}
- @:}
- @:})
- @:
- @if(resizeColumn){//如果可伸缩列
- @:const handleResizeColumn = (w, col) => {
- @:col.width = w
- @:}
- }
-
-}
-
-//表单属性配置
-void FormConst(int searchCount){
- if(searchCount>0){
- @:let searchFormState = reactive({}) //查询表单状态
- @:const searchFormRef = ref() //查询表单
- @:// 查询区域显示更多控制
- @:const advanced = ref(false)
- @:const toggleAdvanced = () => {
- @: advanced.value = !advanced.value
- @:}
- }
- @:const formRef = ref()//新增/编辑表单页
-}
-
-//删除方法
-void DeleteScript(){
- @:// 删除
- @:const delete@(@Model.ClassName) = (record) => {
- @:let params = [
- @:{
- @foreach (var column in tableFieIds){//遍历字段
- @if(column.IsPrimarykey=="Y"){//如果是主键
- @:@column.FieldNameFirstLower: record.@column.FieldNameFirstLower ,
- }}
- @:}
- @:]
- @:@(@Model.ClassNameFirstLower)Api.@(busName)Delete(params).then(() => {
- @:table.value.refresh(true)
- @:})
- @:}
- @:
- @if(funcList.Contains("batchDelete")){//如果有批量删除功能
- @:// 批量删除
- @:const batchDelete@(@Model.ClassName) = (params,callback) => {
- @:@(@Model.ClassNameFirstLower)Api.@(busName)Delete(params).then(() => {})
- @:.finally(() => {
- @:table.value.clearRefreshSelected()
- @:callback() //调用组件中的回调方法
- @:})
- @:}
- }
-}
-
-//其他常定义
-void OtherConst(){
- @if(funcList.Contains("import")) @: const importRef = ref() //导入组件
- @if(funcList.Contains("batchEdit")) @: const batchEditRef = ref() //批量更新组件
-}
-
-//其他方法
-void OtherMethod()
-{
-@if(funcList.Contains("import")) {
- @:// 打开导入界面
- @:const openImport = (record) => {
- @:nextTick(() => {
- @:importRef.value.importSteps(record)
- @:})
- @:}
-}
-
-@if(funcList.Contains("export")) {
- @:// 导出数据
- @:const dataExport@(@Model.ClassNameFirstLower) = (callback) => {
- @:@(@Model.ClassNameFirstLower)Api.@(busName)Export(searchFormState)
- @:.then((data) => {
- @:callback(data)
- @:})
- @:.catch(() => {
- @:callback(null)
- @:})
- @:}
-}
-
-}
-
-//左侧树属性配置
-void LeftTreeConst()
-{
- @://左侧树配置
- @:let defaultExpandedKeys = ref([]) // 默认展开的节点
- @:const treeData = ref([]) // 左侧树数据
- @:// 替换treeNode 中 title,key,children
- @if(isTreeList){//如果是树列表就用配置的字段
- @:const treeFieldNames = { children: 'children', title: '@(treeName)', key: '@(@SimpleTool.StringHelper.FirstCharToLower(treeId))' }
- }
- else{ //如果不是树列表就用默认的字段
- @:const treeFieldNames = { children: 'children', title: 'name', key: 'id' }
- }
- @:const cardLoading = ref(true) // 左侧树加载状态
-}
-
-//左侧树方法定义
-void LeftTreeMethod(string leftTree)
-{
- @:// 点击树查询
- @:const treeSelect = (selectedKeys) => {
- @: if (selectedKeys.length > 0) {
- @if(isTreeList){
- @: searchFormState.@(treePid) = selectedKeys.toString()
- }
- else{
- @: searchFormState.@(leftTree)Id = selectedKeys.toString()
- }
- @: } else {
- @if(isTreeList){
- @: delete searchFormState.@(treePid)
- }
- else{
- @: delete searchFormState.@(leftTree)Id
- }
- @: }
- @: table.value.refresh(true)
- @: }
-
- @:// 左侧树查询
- @:@(@Model.ClassNameFirstLower)Api.@(leftTree)Tree()
- @:.then((res) => {
- @:cardLoading.value = false
- @:if (res !== null) {
- @:treeData.value = res
- @:// 默认展开2级
- @:treeData.value.forEach((item) => {
- @:// 因为0的顶级
- @:if (item.parentId === 0) {
- @:defaultExpandedKeys.value.push(item.id)
- @:// 取到下级ID
- @:if (item.children) {
- @:item.children.forEach((items) => {
- @:defaultExpandedKeys.value.push(items.id)
- @:})
- @:}
- @:}
- @:})
- @:}
- @:})
- @:.finally(() => {
- @:cardLoading.value = false
- @:})
-}
-
-
-//Css部分
-void Style()
-{
-@:
-
-}
-}
\ No newline at end of file
diff --git a/api/SimpleAdmin/SimpleAdmin.Plugin/SimpleAdmin.Plugin.Gen/CodeGen/Sql/MySql.sql.vm b/api/SimpleAdmin/SimpleAdmin.Plugin/SimpleAdmin.Plugin.Gen/CodeGen/Sql/MySql.sql.vm
deleted file mode 100644
index ca36b6c4a979bc88694d74f5c969f3fa3f3fe509..0000000000000000000000000000000000000000
--- a/api/SimpleAdmin/SimpleAdmin.Plugin/SimpleAdmin.Plugin.Gen/CodeGen/Sql/MySql.sql.vm
+++ /dev/null
@@ -1,19 +0,0 @@
-/*
- Source Server Type: Mysql
- Date: @Model.GenTime
-*/
-
-/*添加菜单*/
-INSERT INTO `sys_resource` VALUES (@Model.MenuId, 0, '@(@Model.FunctionName)管理', '@Model.BusName', '@Model.MenuCode', 'MENU', @Model.Module, 'MENU', '@Model.MenuPath', '@Model.MenuComponent', '@Model.Icon', NULL, 99, NULL, NULL, NULL, NULL, NULL, NULL, 0, NULL);
-
-/*添加按钮*/
-INSERT INTO `sys_resource` VALUES (@Model.AddButtonId, @Model.MenuId, '新增@(@Model.FunctionName)', NULL, '@(@Model.ClassNameFirstLower)Add', 'BUTTON', NULL, NULL, NULL, NULL, NULL, NULL, 1, NULL, NULL, NULL, NULL, NULL, NULL, 0, NULL);
-
-/*批量删除*/
-INSERT INTO `sys_resource` VALUES (@Model.BatchDeleteButtonId, @Model.MenuId, '批量删除@(@Model.FunctionName)', NULL, '@(@Model.ClassNameFirstLower)BatchDelete', 'BUTTON', NULL, NULL, NULL, NULL, NULL, NULL, 2, NULL, NULL, NULL, NULL, NULL, NULL, 0, NULL);
-
-/*编辑按钮*/
-INSERT INTO `sys_resource` VALUES (@Model.EditButtonId, @Model.MenuId, '编辑@(@Model.FunctionName)', NULL, '@(@Model.ClassNameFirstLower)Edit', 'BUTTON', NULL, NULL, NULL, NULL, NULL, NULL, 3, NULL, NULL, NULL, NULL, NULL, NULL, 0, NULL);
-
-/*删除删除*/
-INSERT INTO `sys_resource` VALUES (@Model.DeleteButtonId, @Model.MenuId, '删除@(@Model.FunctionName)', NULL, '@(@Model.ClassNameFirstLower)Delete', 'BUTTON', NULL, NULL, NULL, NULL, NULL, NULL,4, NULL, NULL, NULL, NULL, NULL, NULL, 0, NULL);
diff --git a/api/SimpleAdmin/SimpleAdmin.Plugin/SimpleAdmin.Plugin.Gen/CodeGen/Sql/Oracle.sql.vm b/api/SimpleAdmin/SimpleAdmin.Plugin/SimpleAdmin.Plugin.Gen/CodeGen/Sql/Oracle.sql.vm
deleted file mode 100644
index 6c008c664bf7672d042cfb197b70c9171d1c7cce..0000000000000000000000000000000000000000
--- a/api/SimpleAdmin/SimpleAdmin.Plugin/SimpleAdmin.Plugin.Gen/CodeGen/Sql/Oracle.sql.vm
+++ /dev/null
@@ -1,19 +0,0 @@
-/*
- Source Server Type: Oracle
- Date: @Model.GenTime
-*/
-
-/*添加菜单*/
-INSERT INTO "sys_resource" VALUES (@Model.MenuId, 0, '@(@Model.FunctionName)管理', '@Model.BusName', '@Model.MenuCode', 'MENU', @Model.Module, 'MENU', '@Model.MenuPath', '@Model.MenuComponent', '@Model.Icon', NULL, 99, NULL, NULL, NULL, NULL, NULL, NULL, 0, NULL);
-
-/*添加按钮*/
-INSERT INTO "sys_resource" VALUES (@Model.AddButtonId, @Model.MenuId, '新增@(@Model.FunctionName)', NULL, '@(@Model.ClassNameFirstLower)Add', 'BUTTON', NULL, NULL, NULL, NULL, NULL, NULL, 1, NULL, NULL, NULL, NULL, NULL, NULL, 0, NULL);
-
-/*批量删除*/
-INSERT INTO "sys_resource" VALUES (@Model.BatchDeleteButtonId, @Model.MenuId, '批量删除@(@Model.FunctionName)', NULL, '@(@Model.ClassNameFirstLower)BatchDelete', 'BUTTON', NULL, NULL, NULL, NULL, NULL, NULL, 2, NULL, NULL, NULL, NULL, NULL, NULL, 0, NULL);
-
-/*编辑按钮*/
-INSERT INTO "sys_resource" VALUES (@Model.EditButtonId, @Model.MenuId, '编辑@(@Model.FunctionName)', NULL, '@(@Model.ClassNameFirstLower)Edit', 'BUTTON', NULL, NULL, NULL, NULL, NULL, NULL, 3, NULL, NULL, NULL, NULL, NULL, NULL, 0, NULL);
-
-/*删除删除*/
-INSERT INTO "sys_resource" VALUES (@Model.DeleteButtonId, @Model.MenuId, '删除@(@Model.FunctionName)', NULL, '@(@Model.ClassNameFirstLower)Delete', 'BUTTON', NULL, NULL, NULL, NULL, NULL, NULL,4, NULL, NULL, NULL, NULL, NULL, NULL, 0, NULL);
diff --git a/api/SimpleAdmin/SimpleAdmin.Plugin/SimpleAdmin.Plugin.Gen/CodeGen/Sql/SqlServer.sql.vm b/api/SimpleAdmin/SimpleAdmin.Plugin/SimpleAdmin.Plugin.Gen/CodeGen/Sql/SqlServer.sql.vm
deleted file mode 100644
index 7c6a89d0617918ff7fa80bf954e0bc1c2076796a..0000000000000000000000000000000000000000
--- a/api/SimpleAdmin/SimpleAdmin.Plugin/SimpleAdmin.Plugin.Gen/CodeGen/Sql/SqlServer.sql.vm
+++ /dev/null
@@ -1,19 +0,0 @@
-/*
- Source Server Type: SqlServer
- Date: @Model.GenTime
-*/
-
-/*添加菜单*/
-INSERT INTO [dbo].[sys_resource] VALUES (@Model.MenuId, 0, '@(@Model.FunctionName)管理', '@Model.BusName', '@Model.MenuCode', 'MENU', @Model.Module, 'MENU', '@Model.MenuPath', '@Model.MenuComponent', '@Model.Icon', NULL, 99, NULL, NULL, NULL, NULL, NULL, NULL, 0, NULL);
-
-/*添加按钮*/
-INSERT INTO [dbo].[sys_resource] VALUES (@Model.AddButtonId, @Model.MenuId, '新增@(@Model.FunctionName)', NULL, '@(@Model.ClassNameFirstLower)Add', 'BUTTON', NULL, NULL, NULL, NULL, NULL, NULL, 1, NULL, NULL, NULL, NULL, NULL, NULL, 0, NULL);
-
-/*批量删除*/
-INSERT INTO [dbo].[sys_resource] VALUES (@Model.BatchDeleteButtonId, @Model.MenuId, '批量删除@(@Model.FunctionName)', NULL, '@(@Model.ClassNameFirstLower)BatchDelete', 'BUTTON', NULL, NULL, NULL, NULL, NULL, NULL, 2, NULL, NULL, NULL, NULL, NULL, NULL, 0, NULL);
-
-/*编辑按钮*/
-INSERT INTO [dbo].[sys_resource] VALUES (@Model.EditButtonId, @Model.MenuId, '编辑@(@Model.FunctionName)', NULL, '@(@Model.ClassNameFirstLower)Edit', 'BUTTON', NULL, NULL, NULL, NULL, NULL, NULL, 3, NULL, NULL, NULL, NULL, NULL, NULL, 0, NULL);
-
-/*删除删除*/
-INSERT INTO [dbo].[sys_resource] VALUES (@Model.DeleteButtonId, @Model.MenuId, '删除@(@Model.FunctionName)', NULL, '@(@Model.ClassNameFirstLower)Delete', 'BUTTON', NULL, NULL, NULL, NULL, NULL, NULL,4, NULL, NULL, NULL, NULL, NULL, NULL, 0, NULL);
diff --git a/api/SimpleAdmin/SimpleAdmin.Plugin/SimpleAdmin.Plugin.Gen/CodeGen/Sql/Sqlite.sql.vm b/api/SimpleAdmin/SimpleAdmin.Plugin/SimpleAdmin.Plugin.Gen/CodeGen/Sql/Sqlite.sql.vm
deleted file mode 100644
index ba611a1f40ff5c4ac9fcefc31227372afa183110..0000000000000000000000000000000000000000
--- a/api/SimpleAdmin/SimpleAdmin.Plugin/SimpleAdmin.Plugin.Gen/CodeGen/Sql/Sqlite.sql.vm
+++ /dev/null
@@ -1,19 +0,0 @@
-/*
- Source Server Type: Sqlite
- Date: @Model.GenTime
-*/
-
-/*添加菜单*/
-INSERT INTO "sys_resource" VALUES (@Model.MenuId, 0, '@(@Model.FunctionName)管理', '@Model.BusName', '@Model.MenuCode', 'MENU', @Model.Module, 'MENU', '@Model.MenuPath', '@Model.MenuComponent', '@Model.Icon', NULL, 99, NULL, NULL, NULL, NULL, NULL, NULL, 0, NULL);
-
-/*添加按钮*/
-INSERT INTO "sys_resource" VALUES (@Model.AddButtonId, @Model.MenuId, '新增@(@Model.FunctionName)', NULL, '@(@Model.ClassNameFirstLower)Add', 'BUTTON', NULL, NULL, NULL, NULL, NULL, NULL, 1, NULL, NULL, NULL, NULL, NULL, NULL, 0, NULL);
-
-/*批量删除*/
-INSERT INTO "sys_resource" VALUES (@Model.BatchDeleteButtonId, @Model.MenuId, '批量删除@(@Model.FunctionName)', NULL, '@(@Model.ClassNameFirstLower)BatchDelete', 'BUTTON', NULL, NULL, NULL, NULL, NULL, NULL, 2, NULL, NULL, NULL, NULL, NULL, NULL, 0, NULL);
-
-/*编辑按钮*/
-INSERT INTO "sys_resource" VALUES (@Model.EditButtonId, @Model.MenuId, '编辑@(@Model.FunctionName)', NULL, '@(@Model.ClassNameFirstLower)Edit', 'BUTTON', NULL, NULL, NULL, NULL, NULL, NULL, 3, NULL, NULL, NULL, NULL, NULL, NULL, 0, NULL);
-
-/*删除删除*/
-INSERT INTO "sys_resource" VALUES (@Model.DeleteButtonId, @Model.MenuId, '删除@(@Model.FunctionName)', NULL, '@(@Model.ClassNameFirstLower)Delete', 'BUTTON', NULL, NULL, NULL, NULL, NULL, NULL,4, NULL, NULL, NULL, NULL, NULL, NULL, 0, NULL);
diff --git a/api/SimpleAdmin/SimpleAdmin.Plugin/SimpleAdmin.Plugin.Gen/Const/GenConst.cs b/api/SimpleAdmin/SimpleAdmin.Plugin/SimpleAdmin.Plugin.Gen/Const/GenConst.cs
deleted file mode 100644
index df883e10fbee80687ef40a40e1df37d4cf30939b..0000000000000000000000000000000000000000
--- a/api/SimpleAdmin/SimpleAdmin.Plugin/SimpleAdmin.Plugin.Gen/Const/GenConst.cs
+++ /dev/null
@@ -1,46 +0,0 @@
-namespace SimpleAdmin.Plugin.Gen;
-
-///
-/// 代码生成器常量
-///
-public class GenConst
-{
- #region 是否
-
- ///
- /// 是
- ///
- public const string Yes = "Y";
-
- ///
- /// 否
- ///
- public const string No = "N";
-
- #endregion 是否
-
- ///
- /// 压缩包
- ///
- public const string Zip = "ZIP";
-
- ///
- /// 项目中
- ///
- public const string Pro = "PRO";
-
- ///
- /// 全部
- ///
- public const string ExecAll = "ALL";
-
- ///
- /// 前端
- ///
- public const string ExecFrontend = "FRONTEND";
-
- ///
- /// 后端
- ///
- public const string ExecBackend = "BACKEND";
-}
\ No newline at end of file
diff --git a/api/SimpleAdmin/SimpleAdmin.Plugin/SimpleAdmin.Plugin.Gen/Controllers/GenBasicController.cs b/api/SimpleAdmin/SimpleAdmin.Plugin/SimpleAdmin.Plugin.Gen/Controllers/GenBasicController.cs
deleted file mode 100644
index f00e4a45baeaf3db6c6056a97da9990c34cf0474..0000000000000000000000000000000000000000
--- a/api/SimpleAdmin/SimpleAdmin.Plugin/SimpleAdmin.Plugin.Gen/Controllers/GenBasicController.cs
+++ /dev/null
@@ -1,120 +0,0 @@
-
-namespace SimpleAdmin.Plugin.Gen;
-
-///
-/// 代码生成基础控制器
-///
-[ApiDescriptionSettings(Tag = "代码生成基础")]
-[Route("gen/basic")]
-[SuperAdmin]
-public class GenBasicController : IDynamicApiController
-{
- private readonly IGenbasicService _genbasicService;
-
- public GenBasicController(IGenbasicService genbasicService)
- {
- _genbasicService = genbasicService;
- }
-
- ///
- /// 代码生成基础分页
- ///
- ///
- ///
- [HttpGet("page")]
- public async Task Page([FromQuery] BasePageInput input)
- {
- return await _genbasicService.Page(input);
- }
-
- ///
- /// 获取所有表信息
- ///
- ///
- [HttpGet("tables")]
- public dynamic Tables(bool isAll = false)
- {
- return _genbasicService.GetTables(isAll);
- }
-
- ///
- /// 获取项目所有程序集
- ///
- ///
- [HttpGet("assemblies")]
- public dynamic GetAssemblies()
- {
- return _genbasicService.GetAssemblies();
- }
-
- ///
- /// 添加代码生成器
- ///
- ///
- ///
- [DisplayName("添加代码生成")]
- [HttpPost("add")]
- public async Task Add([FromBody] GenBasicAddInput input)
- {
- return await _genbasicService.Add(input);
- }
-
- ///
- /// 编辑代码生成器
- ///
- ///
- ///
- [DisplayName("编辑代码生成基础")]
- [HttpPost("edit")]
- public async Task Edit([FromBody] GenBasicEditInput input)
- {
- return await _genbasicService.Edit(input);
- }
-
- ///
- /// 删除代码生成配置
- ///
- ///
- ///
- [DisplayName("删除代码生成基础")]
- [HttpPost("delete")]
- public async Task Delete([FromBody] List input)
- {
- await _genbasicService.Delete(input);
- }
-
- ///
- /// 代码生成预览
- ///
- ///
- ///
- [HttpGet("previewGen")]
- public async Task PreviewGen([FromQuery] BaseIdInput input)
- {
- return await _genbasicService.PreviewGen(input);
- }
-
- ///
- /// 执行代码生成(本地)"
- ///
- ///
- ///
- [DisplayName("执行代码生成(本地)")]
- [HttpPost("execGenPro")]
- public async Task ExecGenPro([FromBody] ExecGenInput input)
- {
- await _genbasicService.ExecGenPro(input);
- }
-
- ///
- /// 执行代码生成(压缩包)
- ///
- ///
- ///
- [DisplayName("执行代码生成(压缩包)")]
- [HttpGet("execGenZip")]
- public async Task ExecGenZip([FromQuery] ExecGenInput input)
- {
- return await _genbasicService.ExecGenZip(input);
- }
-}
\ No newline at end of file
diff --git a/api/SimpleAdmin/SimpleAdmin.Plugin/SimpleAdmin.Plugin.Gen/Controllers/GenConfigController.cs b/api/SimpleAdmin/SimpleAdmin.Plugin/SimpleAdmin.Plugin.Gen/Controllers/GenConfigController.cs
deleted file mode 100644
index e20b6b45bf3ccab88ad896cdbc5d1b8a18edf390..0000000000000000000000000000000000000000
--- a/api/SimpleAdmin/SimpleAdmin.Plugin/SimpleAdmin.Plugin.Gen/Controllers/GenConfigController.cs
+++ /dev/null
@@ -1,41 +0,0 @@
-namespace SimpleAdmin.Plugin.Gen;
-
-///
-/// 代码生成配置控制器
-///
-[ApiDescriptionSettings(Tag = "代码生成配置")]
-[Route("gen/config")]
-[SuperAdmin]
-public class GenConfigController : IDynamicApiController
-{
- private readonly IGenConfigService _genConfigService;
-
- public GenConfigController(IGenConfigService genConfigService)
- {
- _genConfigService = genConfigService;
- }
-
- ///
- /// 查询代码生成详细配置列表
- ///
- ///
- ///
- [HttpGet("list")]
- [QueryParameters]
- public async Task List(string basicId)
- {
- return await _genConfigService.List(basicId.ToLong());
- }
-
- ///
- /// 编辑代码生成详细
- ///
- ///
- ///
- [DisplayName("编辑代码生成详细")]
- [HttpPost("editBatch")]
- public async Task EditBatch([FromBody] List input)
- {
- await _genConfigService.EditBatch(input);
- }
-}
\ No newline at end of file
diff --git a/api/SimpleAdmin/SimpleAdmin.Plugin/SimpleAdmin.Plugin.Gen/Entity/GenBasic.cs b/api/SimpleAdmin/SimpleAdmin.Plugin/SimpleAdmin.Plugin.Gen/Entity/GenBasic.cs
deleted file mode 100644
index 96cd9d4f8f2e846aad2f959f0605c01a8b7fe90e..0000000000000000000000000000000000000000
--- a/api/SimpleAdmin/SimpleAdmin.Plugin/SimpleAdmin.Plugin.Gen/Entity/GenBasic.cs
+++ /dev/null
@@ -1,190 +0,0 @@
-namespace SimpleAdmin.Plugin.Gen;
-
-///
-/// 代码生成基础
-///
-[SugarTable("gen_basic", TableDescription = "代码生成基础")]
-[Tenant(SqlsugarConst.DB_Default)]
-public class GenBasic : BaseEntity
-{
- ///
- /// 所属库
- ///
- [SugarColumn(ColumnName = "ConfigId", ColumnDescription = "库名", Length = 200)]
- public virtual string ConfigId { get; set; }
-
- ///
- /// 主表
- ///
- [SugarColumn(ColumnName = "DbTable", ColumnDescription = "主表", Length = 200)]
- public virtual string DbTable { get; set; }
-
-
- ///
- /// 表实体名称
- ///
- [SugarColumn(ColumnName = "EntityName", ColumnDescription = "表实体名称", Length = 200)]
- public virtual string EntityName { get; set; }
-
- ///
- /// 功能列表
- ///
- [SugarColumn(ColumnName = "Functions", ColumnDescription = "功能列表", Length = 200, IsNullable = false)]
- public virtual string Functions { get; set; }
-
- ///
- /// 数据权限
- ///
- [SugarColumn(ColumnName = "DataPermission", ColumnDescription = "数据权限", Length = 200, IsNullable = false)]
- public virtual string DataPermission { get; set; }
-
- ///
- /// 生成模版
- ///
- [SugarColumn(ColumnName = "ModuleType", ColumnDescription = "生成模版", Length = 200, IsNullable = false)]
- public virtual string ModuleType { get; set; }
-
- ///
- /// 树Id字段
- ///
- [SugarColumn(ColumnName = "TreeId", ColumnDescription = "树Id字段", Length = 200, IsNullable = true)]
- public virtual string TreeId { get; set; }
-
- ///
- /// 树父Id字段
- ///
- [SugarColumn(ColumnName = "TreePid", ColumnDescription = "树父Id字段", Length = 200, IsNullable = true)]
- public virtual string TreePid { get; set; }
-
- ///
- /// 树名称字段
- ///
- [SugarColumn(ColumnName = "TreeName", ColumnDescription = "树名称字段", Length = 200, IsNullable = true)]
- public virtual string TreeName { get; set; }
-
- ///
- /// 关联子表名
- ///
- [SugarColumn(ColumnName = "ChildTable", ColumnDescription = "关联子表名", Length = 200, IsNullable = true)]
- public virtual string ChildTable { get; set; }
-
- ///
- /// 关联子表外键
- ///
- [SugarColumn(ColumnName = "ChildFk", ColumnDescription = "关联子表外键", Length = 200, IsNullable = true)]
- public virtual string ChildFk { get; set; }
-
- ///
- /// 移除表前缀
- ///
- [SugarColumn(ColumnName = "TablePrefix", ColumnDescription = "移除表前缀", Length = 200)]
- public virtual string TablePrefix { get; set; }
-
- ///
- /// 生成方式
- ///
- [SugarColumn(ColumnName = "GenerateType", ColumnDescription = "生成方式", Length = 200)]
- public virtual string GenerateType { get; set; }
-
- ///
- /// 所属模块
- ///
- [SugarColumn(ColumnName = "Module", ColumnDescription = "所属模块")]
- public virtual long Module { get; set; }
-
- ///
- /// 上级目录
- ///
- [SugarColumn(ColumnName = "MenuPid", ColumnDescription = "上级目录")]
- public virtual long MenuPid { get; set; }
-
- ///
- /// 业务名
- ///
- [SugarColumn(ColumnName = "RouteName", ColumnDescription = "路由名", Length = 200)]
- public virtual string RouteName { get; set; }
-
- ///
- /// 图标
- ///
- [SugarColumn(ColumnName = "Icon", ColumnDescription = "图标", Length = 200)]
- public virtual string Icon { get; set; }
-
- ///
- /// 功能名
- ///
- [SugarColumn(ColumnName = "FunctionName", ColumnDescription = "功能名", Length = 200)]
- public virtual string FunctionName { get; set; }
-
- ///
- /// 功能名后缀
- ///
- [SugarColumn(ColumnName = "FunctionNameSuffix", ColumnDescription = "功能名后缀", Length = 200, IsNullable = true)]
- public virtual string FunctionNameSuffix { get; set; }
-
- ///
- /// 业务名
- ///
- [SugarColumn(ColumnName = "BusName", ColumnDescription = "业务名", Length = 200)]
- public virtual string BusName { get; set; }
-
- ///
- /// 类名
- ///
- [SugarColumn(ColumnName = "ClassName", ColumnDescription = "类名", Length = 200)]
- public virtual string ClassName { get; set; }
-
- ///
- /// 表单布局
- ///
- [SugarColumn(ColumnName = "FormLayout", ColumnDescription = "表单布局", Length = 200)]
- public virtual string FormLayout { get; set; }
-
- ///
- /// 使用栅格
- ///
- [SugarColumn(ColumnName = "GridWhether", ColumnDescription = "使用栅格", Length = 200)]
- public virtual string GridWhether { get; set; }
-
- ///
- /// 左侧树
- ///
- [SugarColumn(ColumnName = "LeftTree", ColumnDescription = "使用左侧树", Length = 200)]
- public virtual string LeftTree { get; set; }
-
- ///
- /// 前端项目路径
- ///
- [SugarColumn(ColumnName = "FrontedPath", ColumnDescription = "前端项目路径", IsNullable = true, Length = 200)]
- public virtual string FrontedPath { get; set; }
-
- ///
- /// 服务代码存放位置
- ///
- [SugarColumn(ColumnName = "ServicePosition", ColumnDescription = "服务代码存放位置", IsNullable = true, Length = 200)]
- public virtual string ServicePosition { get; set; }
-
- ///
- /// 控制器代码存放位置
- ///
- [SugarColumn(ColumnName = "ControllerPosition", ColumnDescription = "控制器代码存放位置", IsNullable = true, Length = 200)]
- public virtual string ControllerPosition { get; set; }
-
- ///
- /// 作者
- ///
- [SugarColumn(ColumnName = "AuthorName", ColumnDescription = "作者", Length = 200)]
- public virtual string AuthorName { get; set; }
-
- ///
- /// 排序
- ///
- [SugarColumn(ColumnName = "SortCode", ColumnDescription = "排序")]
- public virtual int SortCode { get; set; }
-
- ///
- /// 功能列表
- ///
- [SugarColumn(IsIgnore = true)]
- public virtual List FuncList { get; set; }
-}
\ No newline at end of file
diff --git a/api/SimpleAdmin/SimpleAdmin.Plugin/SimpleAdmin.Plugin.Gen/Entity/GenConfig.cs b/api/SimpleAdmin/SimpleAdmin.Plugin/SimpleAdmin.Plugin.Gen/Entity/GenConfig.cs
deleted file mode 100644
index bda808590973456e17f113720a54a2c1e28724d6..0000000000000000000000000000000000000000
--- a/api/SimpleAdmin/SimpleAdmin.Plugin/SimpleAdmin.Plugin.Gen/Entity/GenConfig.cs
+++ /dev/null
@@ -1,154 +0,0 @@
-namespace SimpleAdmin.Plugin.Gen;
-
-///
-/// 代码生成配置
-///
-[SugarTable("gen_config", TableDescription = "代码生成配置")]
-[Tenant(SqlsugarConst.DB_Default)]
-public class GenConfig : BaseEntity
-{
- ///
- /// 基础ID
- ///
- [SugarColumn(ColumnName = "BasicId", ColumnDescription = "基础配置ID")]
- public long BasicId { get; set; }
-
- ///
- /// 字段排序
- ///
- [SugarColumn(ColumnName = "FieldIndex", ColumnDescription = "字段排序", IsNullable = true)]
- public int FieldIndex { get; set; }
-
- ///
- /// 是否主键
- ///
- [SugarColumn(ColumnName = "IsPrimarykey", ColumnDescription = "是否主键", Length = 200)]
- public string IsPrimarykey { get; set; }
-
- ///
- /// 字段
- ///
- [SugarColumn(ColumnName = "FieldName", ColumnDescription = "字段", Length = 200)]
- public string FieldName { get; set; }
-
- ///
- /// 名称
- ///
- [SugarColumn(ColumnName = "FieldRemark", ColumnDescription = "名称", Length = 200)]
- public string FieldRemark { get; set; }
-
- ///
- /// 类型
- ///
- [SugarColumn(ColumnName = "FieldType", ColumnDescription = "类型", Length = 200)]
- public string FieldType { get; set; }
-
- ///
- /// 实体类型
- ///
- [SugarColumn(ColumnName = "FieldNetType", ColumnDescription = "实体类型", Length = 200)]
- public string FieldNetType { get; set; }
-
- ///
- /// 作用类型
- ///
- [SugarColumn(ColumnName = "EffectType", ColumnDescription = "作用类型", Length = 200)]
- public string EffectType { get; set; }
-
- ///
- /// 外键显示字段
- ///
- [SugarColumn(ColumnName = "FkEntityName", ColumnDescription = "外键实体名称", Length = 200, IsNullable = true)]
- public string FkEntityName { get; set; }
-
- ///
- /// 外键ID
- ///
- [SugarColumn(ColumnName = "FkColumnId", ColumnDescription = "外键ID", Length = 200, IsNullable = true)]
- public string FkColumnId { get; set; }
-
- ///
- /// 外键显示字段
- ///
- [SugarColumn(ColumnName = "FkColumnName", ColumnDescription = "外键显示字段", Length = 200, IsNullable = true)]
- public string FkColumnName { get; set; }
-
- ///
- /// 字典
- ///
- [SugarColumn(ColumnName = "DictTypeCode", ColumnDescription = "字典", Length = 200, IsNullable = true)]
- public string DictTypeCode { get; set; }
-
- ///
- /// 列宽度
- ///
- [SugarColumn(ColumnName = "Width", ColumnDescription = "列宽度")]
- public int Width { get; set; }
-
-
- ///
- /// 列表显示
- ///
- [SugarColumn(ColumnName = "WhetherTable", ColumnDescription = "列表显示", Length = 200)]
- public string WhetherTable { get; set; }
-
- ///
- /// 列省略
- ///
- [SugarColumn(ColumnName = "WhetherRetract", ColumnDescription = "列省略", Length = 200)]
- public string WhetherRetract { get; set; }
-
- ///
- /// 可伸缩列
- ///
- [SugarColumn(ColumnName = "WhetherResizable", ColumnDescription = "可伸缩列", Length = 200)]
- public string WhetherResizable { get; set; }
-
- ///
- /// 是否增改
- ///
- [SugarColumn(ColumnName = "WhetherAddUpdate", ColumnDescription = "是否增改", Length = 200)]
- public string WhetherAddUpdate { get; set; }
-
- ///
- /// 是否导入导出
- ///
- [SugarColumn(ColumnName = "WhetherImportExport", ColumnDescription = "是否导入导出", Length = 200)]
- public string WhetherImportExport { get; set; }
-
- ///
- /// 必填
- ///
- [SugarColumn(ColumnName = "WhetherRequired", ColumnDescription = "必填", Length = 200)]
- public string WhetherRequired { get; set; }
-
- ///
- /// 查询
- ///
- [SugarColumn(ColumnName = "QueryWhether", ColumnDescription = "查询", Length = 200)]
- public string QueryWhether { get; set; }
-
- ///
- /// 查询方式
- ///
- [SugarColumn(ColumnName = "QueryType", ColumnDescription = "查询方式", Length = 200, IsNullable = true)]
- public string QueryType { get; set; }
-
- ///
- /// 排序
- ///
- [SugarColumn(ColumnName = "SortCode", ColumnDescription = "排序")]
- public int SortCode { get; set; }
-
- ///
- /// 字段名首字母小写
- ///
- [SugarColumn(IsIgnore = true)]
- public string FieldNameFirstLower { get; set; }
-
- ///
- /// 字段名首字母大写
- ///
- [SugarColumn(IsIgnore = true)]
- public string FieldNameFirstUpper { get; set; }
-}
\ No newline at end of file
diff --git a/api/SimpleAdmin/SimpleAdmin.Plugin/SimpleAdmin.Plugin.Gen/Gen.Development.json b/api/SimpleAdmin/SimpleAdmin.Plugin/SimpleAdmin.Plugin.Gen/Gen.Development.json
deleted file mode 100644
index 55e513f6c6aa16a9da1bf815a1cc98786dc7c9a9..0000000000000000000000000000000000000000
--- a/api/SimpleAdmin/SimpleAdmin.Plugin/SimpleAdmin.Plugin.Gen/Gen.Development.json
+++ /dev/null
@@ -1,7 +0,0 @@
-{
- //代码生成器设置
- "GenSettings": {
- "InitTable": true, //是否初始化表结构
- "InitSeedData": true, //是否初始化种子数据
- }
-}
\ No newline at end of file
diff --git a/api/SimpleAdmin/SimpleAdmin.Plugin/SimpleAdmin.Plugin.Gen/Gen.Production.json b/api/SimpleAdmin/SimpleAdmin.Plugin/SimpleAdmin.Plugin.Gen/Gen.Production.json
deleted file mode 100644
index d9c5a433ba4f8cf0e83a0490853ae5034e087737..0000000000000000000000000000000000000000
--- a/api/SimpleAdmin/SimpleAdmin.Plugin/SimpleAdmin.Plugin.Gen/Gen.Production.json
+++ /dev/null
@@ -1,7 +0,0 @@
-{
- //代码生成器设置
- "GenSettings": {
- "InitTable": false, //是否初始化表结构
- "InitSeedData": false, //是否初始化种子数据
- }
-}
\ No newline at end of file
diff --git a/api/SimpleAdmin/SimpleAdmin.Plugin/SimpleAdmin.Plugin.Gen/GlobalUsing.cs b/api/SimpleAdmin/SimpleAdmin.Plugin/SimpleAdmin.Plugin.Gen/GlobalUsing.cs
deleted file mode 100644
index 5c8bffdf59cf4ea1e7c51bd237d9885c91903252..0000000000000000000000000000000000000000
--- a/api/SimpleAdmin/SimpleAdmin.Plugin/SimpleAdmin.Plugin.Gen/GlobalUsing.cs
+++ /dev/null
@@ -1,20 +0,0 @@
-global using Furion;
-global using Furion.DependencyInjection;
-global using Furion.FriendlyException;
-global using Furion.ViewEngine;
-global using Mapster;
-global using Microsoft.AspNetCore.Builder;
-global using Microsoft.AspNetCore.Hosting;
-global using Microsoft.AspNetCore.Mvc;
-global using Microsoft.Extensions.DependencyInjection;
-global using Microsoft.Extensions.Logging;
-global using SimpleAdmin.Core;
-global using SimpleAdmin.Core.Utils;
-global using SimpleAdmin.System;
-global using SimpleTool;
-global using System.ComponentModel.DataAnnotations;
-global using System.Text;
-global using Furion.DynamicApiController;
-global using System.ComponentModel;
-global using SimpleAdmin.SqlSugar;
-global using SqlSugar;
\ No newline at end of file
diff --git a/api/SimpleAdmin/SimpleAdmin.Plugin/SimpleAdmin.Plugin.Gen/Options/GenSettingsOptions.cs b/api/SimpleAdmin/SimpleAdmin.Plugin/SimpleAdmin.Plugin.Gen/Options/GenSettingsOptions.cs
deleted file mode 100644
index 03cd249cfa2778e77c996dff18edcc1f23e19ccf..0000000000000000000000000000000000000000
--- a/api/SimpleAdmin/SimpleAdmin.Plugin/SimpleAdmin.Plugin.Gen/Options/GenSettingsOptions.cs
+++ /dev/null
@@ -1,10 +0,0 @@
-using Furion.ConfigurableOptions;
-
-namespace SimpleAdmin.Plugin.Gen;
-
-///
-/// 代码生成器配置
-///
-public class GenSettingsOptions : BaseOptions, IConfigurableOptions
-{
-}
\ No newline at end of file
diff --git a/api/SimpleAdmin/SimpleAdmin.Plugin/SimpleAdmin.Plugin.Gen/SeedData/GenBaseSeedData.cs b/api/SimpleAdmin/SimpleAdmin.Plugin/SimpleAdmin.Plugin.Gen/SeedData/GenBaseSeedData.cs
deleted file mode 100644
index 71ecd43f27214ce31afb30fcd90634dc15c83da7..0000000000000000000000000000000000000000
--- a/api/SimpleAdmin/SimpleAdmin.Plugin/SimpleAdmin.Plugin.Gen/SeedData/GenBaseSeedData.cs
+++ /dev/null
@@ -1,12 +0,0 @@
-namespace SimpleAdmin.Plugin.Gen;
-
-///
-/// 系统配置种子数据
-///
-public class GenBaseSeedData : ISqlSugarEntitySeedData
-{
- public IEnumerable SeedData()
- {
- return SeedDataUtil.GetSeedData("seed_gen_basic.json");
- }
-}
\ No newline at end of file
diff --git a/api/SimpleAdmin/SimpleAdmin.Plugin/SimpleAdmin.Plugin.Gen/SeedData/GenConfigSeedData.cs b/api/SimpleAdmin/SimpleAdmin.Plugin/SimpleAdmin.Plugin.Gen/SeedData/GenConfigSeedData.cs
deleted file mode 100644
index 1ddf542bba560d8e3d9ffe6c9ff19b86dad8f851..0000000000000000000000000000000000000000
--- a/api/SimpleAdmin/SimpleAdmin.Plugin/SimpleAdmin.Plugin.Gen/SeedData/GenConfigSeedData.cs
+++ /dev/null
@@ -1,12 +0,0 @@
-namespace SimpleAdmin.Plugin.Gen;
-
-///
-/// 系统配置种子数据
-///
-public class GenConfigSeedData : ISqlSugarEntitySeedData
-{
- public IEnumerable SeedData()
- {
- return SeedDataUtil.GetSeedData("seed_gen_config.json");
- }
-}
\ No newline at end of file
diff --git a/api/SimpleAdmin/SimpleAdmin.Plugin/SimpleAdmin.Plugin.Gen/SeedData/Json/seed_gen_basic.json b/api/SimpleAdmin/SimpleAdmin.Plugin/SimpleAdmin.Plugin.Gen/SeedData/Json/seed_gen_basic.json
deleted file mode 100644
index 18bad0c38c41c663eb25ea89ee39e45447f084c2..0000000000000000000000000000000000000000
--- a/api/SimpleAdmin/SimpleAdmin.Plugin/SimpleAdmin.Plugin.Gen/SeedData/Json/seed_gen_basic.json
+++ /dev/null
@@ -1,204 +0,0 @@
-{
- "RECORDS": [
- {
- "Id": "415472469950533",
- "ConfigId": "SimpleAdmin",
- "DbTable": "sys_org",
- "EntityName": "SysOrg",
- "TablePrefix": "Y",
- "GenerateType": "PRO",
- "Module": "212755263003743",
- "MenuPid": "212755263003744",
- "RouteName": "biz",
- "Icon": "vertical-right-outlined",
- "FunctionName": "测试",
- "FunctionNameSuffix": "管理",
- "BusName": "test",
- "ClassName": "GenTest",
- "FormLayout": "vertical",
- "GridWhether": "N",
- "FrontedPath": "D:\\SimpleAdminWeb\\SimpleAdminWeb",
- "ServicePosition": "SimpleAdmin.Application",
- "ControllerPosition": "SimpleAdmin.Web.Core",
- "AuthorName": "superAdmin",
- "SortCode": "99",
- "CreateTime": "2023-5-9 10:21:50.503",
- "UpdateTime": "2023-5-15 19:47:52.84",
- "CreateUserId": "212725263002001",
- "UpdateUserId": "212725263002001",
- "CreateUser": "superAdmin",
- "UpdateUser": "superAdmin",
- "IsDelete": "0",
- "ExtJson": "",
- "DataPermission": "N",
- "ModuleType": "treeList",
- "TreeId": "Id",
- "TreePid": "ParentId",
- "TreeName": "Name",
- "ChildTable": "",
- "ChildFk": "",
- "Functions": "curd,batchDelete,import,export,batchEdit",
- "LeftTree": "null"
- },
- {
- "Id": "415806515720261",
- "ConfigId": "SimpleAdmin",
- "DbTable": "sys_org",
- "EntityName": "SysOrg",
- "TablePrefix": "Y",
- "GenerateType": "PRO",
- "Module": "212755263003743",
- "MenuPid": "212755263003744",
- "RouteName": "biz",
- "Icon": "vertical-right-outlined",
- "FunctionName": "测试",
- "FunctionNameSuffix": "管理",
- "BusName": "test",
- "ClassName": "GenTest",
- "FormLayout": "vertical",
- "GridWhether": "N",
- "FrontedPath": "D:\\SimpleAdminWeb\\SimpleAdminWeb",
- "ServicePosition": "SimpleAdmin.Application",
- "ControllerPosition": "SimpleAdmin.Web.Core",
- "AuthorName": "superAdmin",
- "SortCode": "99",
- "CreateTime": "2023-5-10 09:01:04.647",
- "UpdateTime": "2023-5-15 19:41:19.443",
- "CreateUserId": "212725263002001",
- "UpdateUserId": "212725263002001",
- "CreateUser": "superAdmin",
- "UpdateUser": "superAdmin",
- "IsDelete": "0",
- "ExtJson": "",
- "DataPermission": "N",
- "ModuleType": "treeTree",
- "TreeId": "Id",
- "TreePid": "ParentId",
- "TreeName": "Name",
- "ChildTable": "",
- "ChildFk": "",
- "Functions": "curd",
- "LeftTree": "null"
- },
- {
- "Id": "415904006602821",
- "ConfigId": "SimpleAdmin",
- "DbTable": "sys_org",
- "EntityName": "SysOrg",
- "TablePrefix": "Y",
- "GenerateType": "PRO",
- "Module": "212755263003743",
- "MenuPid": "212755263003744",
- "RouteName": "biz",
- "Icon": "left-square-outlined",
- "FunctionName": "测试",
- "FunctionNameSuffix": "管理",
- "BusName": "test",
- "ClassName": "GenTest",
- "FormLayout": "vertical",
- "GridWhether": "N",
- "FrontedPath": "D:\\SimpleAdminWeb\\SimpleAdminWeb",
- "ServicePosition": "SimpleAdmin.Application",
- "ControllerPosition": "SimpleAdmin.Web.Core",
- "AuthorName": "superAdmin",
- "SortCode": "99",
- "CreateTime": "2023-5-10 15:37:46.133",
- "UpdateTime": "2023-5-17 08:34:09.823",
- "CreateUserId": "212725263002001",
- "UpdateUserId": "212725263002001",
- "CreateUser": "superAdmin",
- "UpdateUser": "superAdmin",
- "IsDelete": "0",
- "ExtJson": "",
- "DataPermission": "N",
- "ModuleType": "masterChild",
- "TreeId": "",
- "TreePid": "",
- "TreeName": "",
- "ChildTable": "SysPosition",
- "ChildFk": "OrgId",
- "Functions": "curd",
- "LeftTree": "null"
- },
- {
- "Id": "417692167622725",
- "ConfigId": "SimpleAdmin",
- "DbTable": "gen_test",
- "EntityName": "GenTest",
- "TablePrefix": "Y",
- "GenerateType": "ZIP",
- "Module": "212755263003743",
- "MenuPid": "212755263003744",
- "RouteName": "biz",
- "Icon": "caret-right-outlined",
- "FunctionName": "测试",
- "FunctionNameSuffix": "管理",
- "BusName": "test",
- "ClassName": "GenTest",
- "FormLayout": "vertical",
- "GridWhether": "N",
- "FrontedPath": "D:\\SimpleAdminWeb\\SimpleAdminWeb",
- "ServicePosition": "SimpleAdmin.Application",
- "ControllerPosition": "SimpleAdmin.Application",
- "AuthorName": "superAdmin",
- "SortCode": "99",
- "CreateTime": "2023-5-15 16:53:48.883",
- "UpdateTime": "2023-5-17 08:36:40.743",
- "CreateUserId": "212725263002001",
- "UpdateUserId": "212725263002001",
- "CreateUser": "superAdmin",
- "UpdateUser": "superAdmin",
- "IsDelete": "0",
- "ExtJson": "",
- "DataPermission": "N",
- "ModuleType": "single",
- "TreeId": "",
- "TreePid": "",
- "TreeName": "",
- "ChildTable": "",
- "ChildFk": "",
- "Functions": "curd",
- "LeftTree": "null"
- },
- {
- "Id": "418032046346309",
- "ConfigId": "SimpleAdmin",
- "DbTable": "sys_user",
- "EntityName": "SysUser",
- "TablePrefix": "Y",
- "GenerateType": "PRO",
- "Module": "212755263003743",
- "MenuPid": "212755263003744",
- "RouteName": "biz",
- "Icon": "vertical-right-outlined",
- "FunctionName": "测试",
- "FunctionNameSuffix": "管理",
- "BusName": "test",
- "ClassName": "GenTest",
- "FormLayout": "vertical",
- "GridWhether": "N",
- "FrontedPath": "D:\\SimpleAdminWeb\\SimpleAdminWeb",
- "ServicePosition": "SimpleAdmin.Application",
- "ControllerPosition": "SimpleAdmin.Web.Core",
- "AuthorName": "superAdmin",
- "SortCode": "99",
- "CreateTime": "2023-5-16 15:56:47.083",
- "UpdateTime": "2023-5-29 11:10:10.74",
- "CreateUserId": "212725263002001",
- "UpdateUserId": "212725263002001",
- "CreateUser": "superAdmin",
- "UpdateUser": "superAdmin",
- "IsDelete": "0",
- "ExtJson": "",
- "DataPermission": "Y",
- "ModuleType": "single",
- "TreeId": "",
- "TreePid": "",
- "TreeName": "",
- "ChildTable": "",
- "ChildFk": "",
- "Functions": "curd",
- "LeftTree": "null"
- }
- ]
-}
\ No newline at end of file
diff --git a/api/SimpleAdmin/SimpleAdmin.Plugin/SimpleAdmin.Plugin.Gen/SeedData/Json/seed_gen_config.json b/api/SimpleAdmin/SimpleAdmin.Plugin/SimpleAdmin.Plugin.Gen/SeedData/Json/seed_gen_config.json
deleted file mode 100644
index 31b9efccbebba4a8c6380154a07e628f4cbc4822..0000000000000000000000000000000000000000
--- a/api/SimpleAdmin/SimpleAdmin.Plugin/SimpleAdmin.Plugin.Gen/SeedData/Json/seed_gen_config.json
+++ /dev/null
@@ -1,3898 +0,0 @@
-{
- "RECORDS": [
- {
- "Id": "415472470216773",
- "BasicId": "415472469950533",
- "FieldIndex": "0",
- "FieldName": "Id",
- "FieldRemark": "Id",
- "FieldType": "bigint",
- "EffectType": "input",
- "FkEntityName": "",
- "FkColumnId": "",
- "FkColumnName": "",
- "DictTypeCode": "",
- "Width": "100",
- "WhetherTable": "N",
- "WhetherRetract": "N",
- "WhetherAddUpdate": "N",
- "WhetherRequired": "N",
- "QueryWhether": "N",
- "QueryType": "",
- "SortCode": "99",
- "CreateTime": "2023-5-9 10:21:50.57",
- "UpdateTime": "2023-5-15 19:45:29.987",
- "CreateUserId": "212725263002001",
- "UpdateUserId": "212725263002001",
- "IsDelete": "0",
- "ExtJson": "",
- "IsPrimarykey": "Y",
- "FieldNetType": "long",
- "CreateUser": "superAdmin",
- "UpdateUser": "superAdmin",
- "WhetherImportExport": "N",
- "WhetherResizable": "N"
- },
- {
- "Id": "415472470229061",
- "BasicId": "415472469950533",
- "FieldIndex": "1",
- "FieldName": "ParentId",
- "FieldRemark": "父id",
- "FieldType": "bigint",
- "EffectType": "input",
- "FkEntityName": "",
- "FkColumnId": "",
- "FkColumnName": "",
- "DictTypeCode": "",
- "Width": "100",
- "WhetherTable": "N",
- "WhetherRetract": "N",
- "WhetherAddUpdate": "N",
- "WhetherRequired": "N",
- "QueryWhether": "N",
- "QueryType": "",
- "SortCode": "1",
- "CreateTime": "2023-5-9 10:21:50.57",
- "UpdateTime": "2023-5-15 19:47:48.923",
- "CreateUserId": "212725263002001",
- "UpdateUserId": "212725263002001",
- "IsDelete": "0",
- "ExtJson": "",
- "IsPrimarykey": "N",
- "FieldNetType": "long",
- "CreateUser": "superAdmin",
- "UpdateUser": "superAdmin",
- "WhetherImportExport": "N",
- "WhetherResizable": "N"
- },
- {
- "Id": "415472470229062",
- "BasicId": "415472469950533",
- "FieldIndex": "2",
- "FieldName": "DirectorId",
- "FieldRemark": "主管ID",
- "FieldType": "bigint",
- "EffectType": "input",
- "FkEntityName": "",
- "FkColumnId": "",
- "FkColumnName": "",
- "DictTypeCode": "",
- "Width": "100",
- "WhetherTable": "N",
- "WhetherRetract": "N",
- "WhetherAddUpdate": "N",
- "WhetherRequired": "N",
- "QueryWhether": "N",
- "QueryType": "",
- "SortCode": "2",
- "CreateTime": "2023-5-9 10:21:50.573",
- "UpdateTime": "2023-5-15 19:47:48.923",
- "CreateUserId": "212725263002001",
- "UpdateUserId": "212725263002001",
- "IsDelete": "0",
- "ExtJson": "",
- "IsPrimarykey": "N",
- "FieldNetType": "long",
- "CreateUser": "superAdmin",
- "UpdateUser": "superAdmin",
- "WhetherImportExport": "N",
- "WhetherResizable": "N"
- },
- {
- "Id": "415472470229063",
- "BasicId": "415472469950533",
- "FieldIndex": "3",
- "FieldName": "Name",
- "FieldRemark": "名称",
- "FieldType": "nvarchar",
- "EffectType": "input",
- "FkEntityName": "",
- "FkColumnId": "",
- "FkColumnName": "",
- "DictTypeCode": "",
- "Width": "100",
- "WhetherTable": "Y",
- "WhetherRetract": "N",
- "WhetherAddUpdate": "Y",
- "WhetherRequired": "N",
- "QueryWhether": "Y",
- "QueryType": "like",
- "SortCode": "3",
- "CreateTime": "2023-5-9 10:21:50.573",
- "UpdateTime": "2023-5-15 19:47:48.923",
- "CreateUserId": "212725263002001",
- "UpdateUserId": "212725263002001",
- "IsDelete": "0",
- "ExtJson": "",
- "IsPrimarykey": "N",
- "FieldNetType": "string",
- "CreateUser": "superAdmin",
- "UpdateUser": "superAdmin",
- "WhetherImportExport": "Y",
- "WhetherResizable": "N"
- },
- {
- "Id": "415472470229064",
- "BasicId": "415472469950533",
- "FieldIndex": "4",
- "FieldName": "Names",
- "FieldRemark": "全称",
- "FieldType": "nvarchar",
- "EffectType": "input",
- "FkEntityName": "",
- "FkColumnId": "",
- "FkColumnName": "",
- "DictTypeCode": "",
- "Width": "100",
- "WhetherTable": "N",
- "WhetherRetract": "N",
- "WhetherAddUpdate": "N",
- "WhetherRequired": "N",
- "QueryWhether": "N",
- "QueryType": "",
- "SortCode": "4",
- "CreateTime": "2023-5-9 10:21:50.573",
- "UpdateTime": "2023-5-15 19:47:48.923",
- "CreateUserId": "212725263002001",
- "UpdateUserId": "212725263002001",
- "IsDelete": "0",
- "ExtJson": "",
- "IsPrimarykey": "N",
- "FieldNetType": "string",
- "CreateUser": "superAdmin",
- "UpdateUser": "superAdmin",
- "WhetherImportExport": "N",
- "WhetherResizable": "N"
- },
- {
- "Id": "415472470229065",
- "BasicId": "415472469950533",
- "FieldIndex": "5",
- "FieldName": "Code",
- "FieldRemark": "编码",
- "FieldType": "nvarchar",
- "EffectType": "input",
- "FkEntityName": "",
- "FkColumnId": "",
- "FkColumnName": "",
- "DictTypeCode": "",
- "Width": "100",
- "WhetherTable": "Y",
- "WhetherRetract": "N",
- "WhetherAddUpdate": "N",
- "WhetherRequired": "N",
- "QueryWhether": "N",
- "QueryType": "",
- "SortCode": "5",
- "CreateTime": "2023-5-9 10:21:50.573",
- "UpdateTime": "2023-5-15 19:47:48.923",
- "CreateUserId": "212725263002001",
- "UpdateUserId": "212725263002001",
- "IsDelete": "0",
- "ExtJson": "",
- "IsPrimarykey": "N",
- "FieldNetType": "string",
- "CreateUser": "superAdmin",
- "UpdateUser": "superAdmin",
- "WhetherImportExport": "Y",
- "WhetherResizable": "N"
- },
- {
- "Id": "415472470229066",
- "BasicId": "415472469950533",
- "FieldIndex": "6",
- "FieldName": "Category",
- "FieldRemark": "分类",
- "FieldType": "nvarchar",
- "EffectType": "select",
- "FkEntityName": "",
- "FkColumnId": "",
- "FkColumnName": "",
- "DictTypeCode": "ORG_CATEGORY",
- "Width": "100",
- "WhetherTable": "Y",
- "WhetherRetract": "N",
- "WhetherAddUpdate": "Y",
- "WhetherRequired": "N",
- "QueryWhether": "Y",
- "QueryType": "eq",
- "SortCode": "6",
- "CreateTime": "2023-5-9 10:21:50.573",
- "UpdateTime": "2023-5-15 19:47:48.923",
- "CreateUserId": "212725263002001",
- "UpdateUserId": "212725263002001",
- "IsDelete": "0",
- "ExtJson": "",
- "IsPrimarykey": "N",
- "FieldNetType": "string",
- "CreateUser": "superAdmin",
- "UpdateUser": "superAdmin",
- "WhetherImportExport": "Y",
- "WhetherResizable": "N"
- },
- {
- "Id": "415472470229067",
- "BasicId": "415472469950533",
- "FieldIndex": "7",
- "FieldName": "SortCode",
- "FieldRemark": "排序码",
- "FieldType": "int",
- "EffectType": "slider",
- "FkEntityName": "",
- "FkColumnId": "",
- "FkColumnName": "",
- "DictTypeCode": "",
- "Width": "100",
- "WhetherTable": "Y",
- "WhetherRetract": "N",
- "WhetherAddUpdate": "Y",
- "WhetherRequired": "N",
- "QueryWhether": "N",
- "QueryType": "",
- "SortCode": "7",
- "CreateTime": "2023-5-9 10:21:50.573",
- "UpdateTime": "2023-5-15 19:47:48.923",
- "CreateUserId": "212725263002001",
- "UpdateUserId": "212725263002001",
- "IsDelete": "0",
- "ExtJson": "",
- "IsPrimarykey": "N",
- "FieldNetType": "int",
- "CreateUser": "superAdmin",
- "UpdateUser": "superAdmin",
- "WhetherImportExport": "Y",
- "WhetherResizable": "N"
- },
- {
- "Id": "415472470229068",
- "BasicId": "415472469950533",
- "FieldIndex": "8",
- "FieldName": "CreateTime",
- "FieldRemark": "创建时间",
- "FieldType": "datetime",
- "EffectType": "datepicker",
- "FkEntityName": "",
- "FkColumnId": "",
- "FkColumnName": "",
- "DictTypeCode": "",
- "Width": "100",
- "WhetherTable": "N",
- "WhetherRetract": "N",
- "WhetherAddUpdate": "N",
- "WhetherRequired": "N",
- "QueryWhether": "N",
- "QueryType": "",
- "SortCode": "99",
- "CreateTime": "2023-5-9 10:21:50.573",
- "UpdateTime": "2023-5-15 19:47:48.923",
- "CreateUserId": "212725263002001",
- "UpdateUserId": "212725263002001",
- "IsDelete": "0",
- "ExtJson": "",
- "IsPrimarykey": "N",
- "FieldNetType": "DateTime",
- "CreateUser": "superAdmin",
- "UpdateUser": "superAdmin",
- "WhetherImportExport": "N",
- "WhetherResizable": "N"
- },
- {
- "Id": "415472470229069",
- "BasicId": "415472469950533",
- "FieldIndex": "9",
- "FieldName": "UpdateTime",
- "FieldRemark": "更新时间",
- "FieldType": "datetime",
- "EffectType": "datepicker",
- "FkEntityName": "",
- "FkColumnId": "",
- "FkColumnName": "",
- "DictTypeCode": "",
- "Width": "100",
- "WhetherTable": "N",
- "WhetherRetract": "N",
- "WhetherAddUpdate": "N",
- "WhetherRequired": "N",
- "QueryWhether": "N",
- "QueryType": "",
- "SortCode": "99",
- "CreateTime": "2023-5-9 10:21:50.573",
- "UpdateTime": "2023-5-15 19:47:48.923",
- "CreateUserId": "212725263002001",
- "UpdateUserId": "212725263002001",
- "IsDelete": "0",
- "ExtJson": "",
- "IsPrimarykey": "N",
- "FieldNetType": "DateTime",
- "CreateUser": "superAdmin",
- "UpdateUser": "superAdmin",
- "WhetherImportExport": "N",
- "WhetherResizable": "N"
- },
- {
- "Id": "415472470229070",
- "BasicId": "415472469950533",
- "FieldIndex": "10",
- "FieldName": "CreateUserId",
- "FieldRemark": "创建者Id",
- "FieldType": "bigint",
- "EffectType": "input",
- "FkEntityName": "",
- "FkColumnId": "",
- "FkColumnName": "",
- "DictTypeCode": "",
- "Width": "100",
- "WhetherTable": "N",
- "WhetherRetract": "N",
- "WhetherAddUpdate": "N",
- "WhetherRequired": "N",
- "QueryWhether": "N",
- "QueryType": "",
- "SortCode": "99",
- "CreateTime": "2023-5-9 10:21:50.573",
- "UpdateTime": "",
- "CreateUserId": "212725263002001",
- "UpdateUserId": "",
- "IsDelete": "0",
- "ExtJson": "",
- "IsPrimarykey": "N",
- "FieldNetType": "long",
- "CreateUser": "superAdmin",
- "UpdateUser": "",
- "WhetherImportExport": "N",
- "WhetherResizable": "N"
- },
- {
- "Id": "415472470229071",
- "BasicId": "415472469950533",
- "FieldIndex": "11",
- "FieldName": "UpdateUserId",
- "FieldRemark": "修改者Id",
- "FieldType": "bigint",
- "EffectType": "input",
- "FkEntityName": "",
- "FkColumnId": "",
- "FkColumnName": "",
- "DictTypeCode": "",
- "Width": "100",
- "WhetherTable": "N",
- "WhetherRetract": "N",
- "WhetherAddUpdate": "N",
- "WhetherRequired": "N",
- "QueryWhether": "N",
- "QueryType": "",
- "SortCode": "99",
- "CreateTime": "2023-5-9 10:21:50.573",
- "UpdateTime": "2023-5-9 15:29:22.517",
- "CreateUserId": "212725263002001",
- "UpdateUserId": "212725263002001",
- "IsDelete": "0",
- "ExtJson": "",
- "IsPrimarykey": "N",
- "FieldNetType": "long",
- "CreateUser": "superAdmin",
- "UpdateUser": "superAdmin",
- "WhetherImportExport": "N",
- "WhetherResizable": "N"
- },
- {
- "Id": "415472470229072",
- "BasicId": "415472469950533",
- "FieldIndex": "12",
- "FieldName": "IsDelete",
- "FieldRemark": "软删除",
- "FieldType": "bit",
- "EffectType": "input",
- "FkEntityName": "",
- "FkColumnId": "",
- "FkColumnName": "",
- "DictTypeCode": "",
- "Width": "100",
- "WhetherTable": "N",
- "WhetherRetract": "N",
- "WhetherAddUpdate": "N",
- "WhetherRequired": "N",
- "QueryWhether": "N",
- "QueryType": "",
- "SortCode": "99",
- "CreateTime": "2023-5-9 10:21:50.573",
- "UpdateTime": "",
- "CreateUserId": "212725263002001",
- "UpdateUserId": "",
- "IsDelete": "0",
- "ExtJson": "",
- "IsPrimarykey": "N",
- "FieldNetType": "bool",
- "CreateUser": "superAdmin",
- "UpdateUser": "",
- "WhetherImportExport": "N",
- "WhetherResizable": "N"
- },
- {
- "Id": "415472470229073",
- "BasicId": "415472469950533",
- "FieldIndex": "13",
- "FieldName": "ExtJson",
- "FieldRemark": "扩展信息",
- "FieldType": "nvarchar",
- "EffectType": "input",
- "FkEntityName": "",
- "FkColumnId": "",
- "FkColumnName": "",
- "DictTypeCode": "",
- "Width": "100",
- "WhetherTable": "N",
- "WhetherRetract": "N",
- "WhetherAddUpdate": "N",
- "WhetherRequired": "N",
- "QueryWhether": "N",
- "QueryType": "",
- "SortCode": "99",
- "CreateTime": "2023-5-9 10:21:50.573",
- "UpdateTime": "2023-5-15 19:47:48.923",
- "CreateUserId": "212725263002001",
- "UpdateUserId": "212725263002001",
- "IsDelete": "0",
- "ExtJson": "",
- "IsPrimarykey": "N",
- "FieldNetType": "string",
- "CreateUser": "superAdmin",
- "UpdateUser": "superAdmin",
- "WhetherImportExport": "N",
- "WhetherResizable": "N"
- },
- {
- "Id": "415472470229074",
- "BasicId": "415472469950533",
- "FieldIndex": "14",
- "FieldName": "CreateUser",
- "FieldRemark": "创建人",
- "FieldType": "varchar",
- "EffectType": "input",
- "FkEntityName": "",
- "FkColumnId": "",
- "FkColumnName": "",
- "DictTypeCode": "",
- "Width": "100",
- "WhetherTable": "N",
- "WhetherRetract": "N",
- "WhetherAddUpdate": "N",
- "WhetherRequired": "N",
- "QueryWhether": "N",
- "QueryType": "",
- "SortCode": "99",
- "CreateTime": "2023-5-9 10:21:50.573",
- "UpdateTime": "2023-5-15 19:47:48.923",
- "CreateUserId": "212725263002001",
- "UpdateUserId": "212725263002001",
- "IsDelete": "0",
- "ExtJson": "",
- "IsPrimarykey": "N",
- "FieldNetType": "string",
- "CreateUser": "superAdmin",
- "UpdateUser": "superAdmin",
- "WhetherImportExport": "N",
- "WhetherResizable": "N"
- },
- {
- "Id": "415472470229075",
- "BasicId": "415472469950533",
- "FieldIndex": "15",
- "FieldName": "UpdateUser",
- "FieldRemark": "更新人",
- "FieldType": "varchar",
- "EffectType": "input",
- "FkEntityName": "",
- "FkColumnId": "",
- "FkColumnName": "",
- "DictTypeCode": "",
- "Width": "100",
- "WhetherTable": "N",
- "WhetherRetract": "N",
- "WhetherAddUpdate": "N",
- "WhetherRequired": "N",
- "QueryWhether": "N",
- "QueryType": "",
- "SortCode": "99",
- "CreateTime": "2023-5-9 10:21:50.573",
- "UpdateTime": "2023-5-15 19:47:48.923",
- "CreateUserId": "212725263002001",
- "UpdateUserId": "212725263002001",
- "IsDelete": "0",
- "ExtJson": "",
- "IsPrimarykey": "N",
- "FieldNetType": "string",
- "CreateUser": "superAdmin",
- "UpdateUser": "superAdmin",
- "WhetherImportExport": "N",
- "WhetherResizable": "N"
- },
- {
- "Id": "415806515941445",
- "BasicId": "415806515720261",
- "FieldIndex": "7",
- "FieldName": "Id",
- "FieldRemark": "Id",
- "FieldType": "bigint",
- "EffectType": "input",
- "FkEntityName": "",
- "FkColumnId": "",
- "FkColumnName": "",
- "DictTypeCode": "",
- "Width": "100",
- "WhetherTable": "N",
- "WhetherRetract": "N",
- "WhetherAddUpdate": "N",
- "WhetherRequired": "N",
- "QueryWhether": "N",
- "QueryType": "",
- "SortCode": "99",
- "CreateTime": "2023-5-10 09:01:04.7",
- "UpdateTime": "2023-5-15 19:41:21.283",
- "CreateUserId": "212725263002001",
- "UpdateUserId": "212725263002001",
- "IsDelete": "0",
- "ExtJson": "",
- "IsPrimarykey": "Y",
- "FieldNetType": "long",
- "CreateUser": "superAdmin",
- "UpdateUser": "superAdmin",
- "WhetherImportExport": "N",
- "WhetherResizable": "N"
- },
- {
- "Id": "415806515957829",
- "BasicId": "415806515720261",
- "FieldIndex": "0",
- "FieldName": "ParentId",
- "FieldRemark": "父id",
- "FieldType": "bigint",
- "EffectType": "input",
- "FkEntityName": "",
- "FkColumnId": "",
- "FkColumnName": "",
- "DictTypeCode": "",
- "Width": "100",
- "WhetherTable": "N",
- "WhetherRetract": "N",
- "WhetherAddUpdate": "N",
- "WhetherRequired": "N",
- "QueryWhether": "N",
- "QueryType": "",
- "SortCode": "1",
- "CreateTime": "2023-5-10 09:01:04.703",
- "UpdateTime": "2023-5-15 19:41:21.28",
- "CreateUserId": "212725263002001",
- "UpdateUserId": "212725263002001",
- "IsDelete": "0",
- "ExtJson": "",
- "IsPrimarykey": "N",
- "FieldNetType": "long",
- "CreateUser": "superAdmin",
- "UpdateUser": "superAdmin",
- "WhetherImportExport": "N",
- "WhetherResizable": "N"
- },
- {
- "Id": "415806515957830",
- "BasicId": "415806515720261",
- "FieldIndex": "1",
- "FieldName": "DirectorId",
- "FieldRemark": "主管ID",
- "FieldType": "bigint",
- "EffectType": "input",
- "FkEntityName": "",
- "FkColumnId": "",
- "FkColumnName": "",
- "DictTypeCode": "",
- "Width": "100",
- "WhetherTable": "N",
- "WhetherRetract": "N",
- "WhetherAddUpdate": "N",
- "WhetherRequired": "N",
- "QueryWhether": "N",
- "QueryType": "",
- "SortCode": "2",
- "CreateTime": "2023-5-10 09:01:04.707",
- "UpdateTime": "2023-5-15 19:41:21.283",
- "CreateUserId": "212725263002001",
- "UpdateUserId": "212725263002001",
- "IsDelete": "0",
- "ExtJson": "",
- "IsPrimarykey": "N",
- "FieldNetType": "long",
- "CreateUser": "superAdmin",
- "UpdateUser": "superAdmin",
- "WhetherImportExport": "N",
- "WhetherResizable": "N"
- },
- {
- "Id": "415806515957831",
- "BasicId": "415806515720261",
- "FieldIndex": "2",
- "FieldName": "Name",
- "FieldRemark": "名称",
- "FieldType": "nvarchar",
- "EffectType": "input",
- "FkEntityName": "",
- "FkColumnId": "",
- "FkColumnName": "",
- "DictTypeCode": "",
- "Width": "100",
- "WhetherTable": "Y",
- "WhetherRetract": "N",
- "WhetherAddUpdate": "Y",
- "WhetherRequired": "N",
- "QueryWhether": "Y",
- "QueryType": "like",
- "SortCode": "3",
- "CreateTime": "2023-5-10 09:01:04.707",
- "UpdateTime": "2023-5-15 19:41:21.283",
- "CreateUserId": "212725263002001",
- "UpdateUserId": "212725263002001",
- "IsDelete": "0",
- "ExtJson": "",
- "IsPrimarykey": "N",
- "FieldNetType": "string",
- "CreateUser": "superAdmin",
- "UpdateUser": "superAdmin",
- "WhetherImportExport": "Y",
- "WhetherResizable": "N"
- },
- {
- "Id": "415806515957832",
- "BasicId": "415806515720261",
- "FieldIndex": "3",
- "FieldName": "Names",
- "FieldRemark": "全称",
- "FieldType": "nvarchar",
- "EffectType": "input",
- "FkEntityName": "",
- "FkColumnId": "",
- "FkColumnName": "",
- "DictTypeCode": "",
- "Width": "100",
- "WhetherTable": "N",
- "WhetherRetract": "N",
- "WhetherAddUpdate": "N",
- "WhetherRequired": "N",
- "QueryWhether": "N",
- "QueryType": "",
- "SortCode": "4",
- "CreateTime": "2023-5-10 09:01:04.707",
- "UpdateTime": "2023-5-15 19:41:21.283",
- "CreateUserId": "212725263002001",
- "UpdateUserId": "212725263002001",
- "IsDelete": "0",
- "ExtJson": "",
- "IsPrimarykey": "N",
- "FieldNetType": "string",
- "CreateUser": "superAdmin",
- "UpdateUser": "superAdmin",
- "WhetherImportExport": "N",
- "WhetherResizable": "N"
- },
- {
- "Id": "415806515957833",
- "BasicId": "415806515720261",
- "FieldIndex": "4",
- "FieldName": "Code",
- "FieldRemark": "编码",
- "FieldType": "nvarchar",
- "EffectType": "input",
- "FkEntityName": "",
- "FkColumnId": "",
- "FkColumnName": "",
- "DictTypeCode": "",
- "Width": "100",
- "WhetherTable": "Y",
- "WhetherRetract": "N",
- "WhetherAddUpdate": "Y",
- "WhetherRequired": "N",
- "QueryWhether": "N",
- "QueryType": "",
- "SortCode": "5",
- "CreateTime": "2023-5-10 09:01:04.707",
- "UpdateTime": "2023-5-15 19:41:21.283",
- "CreateUserId": "212725263002001",
- "UpdateUserId": "212725263002001",
- "IsDelete": "0",
- "ExtJson": "",
- "IsPrimarykey": "N",
- "FieldNetType": "string",
- "CreateUser": "superAdmin",
- "UpdateUser": "superAdmin",
- "WhetherImportExport": "Y",
- "WhetherResizable": "N"
- },
- {
- "Id": "415806515957834",
- "BasicId": "415806515720261",
- "FieldIndex": "5",
- "FieldName": "Category",
- "FieldRemark": "分类",
- "FieldType": "nvarchar",
- "EffectType": "select",
- "FkEntityName": "",
- "FkColumnId": "",
- "FkColumnName": "",
- "DictTypeCode": "ROLE_CATEGORY",
- "Width": "100",
- "WhetherTable": "Y",
- "WhetherRetract": "N",
- "WhetherAddUpdate": "Y",
- "WhetherRequired": "N",
- "QueryWhether": "Y",
- "QueryType": "eq",
- "SortCode": "6",
- "CreateTime": "2023-5-10 09:01:04.707",
- "UpdateTime": "2023-5-15 19:41:21.283",
- "CreateUserId": "212725263002001",
- "UpdateUserId": "212725263002001",
- "IsDelete": "0",
- "ExtJson": "",
- "IsPrimarykey": "N",
- "FieldNetType": "string",
- "CreateUser": "superAdmin",
- "UpdateUser": "superAdmin",
- "WhetherImportExport": "Y",
- "WhetherResizable": "N"
- },
- {
- "Id": "415806515957835",
- "BasicId": "415806515720261",
- "FieldIndex": "6",
- "FieldName": "SortCode",
- "FieldRemark": "排序码",
- "FieldType": "int",
- "EffectType": "slider",
- "FkEntityName": "",
- "FkColumnId": "",
- "FkColumnName": "",
- "DictTypeCode": "",
- "Width": "100",
- "WhetherTable": "Y",
- "WhetherRetract": "N",
- "WhetherAddUpdate": "Y",
- "WhetherRequired": "N",
- "QueryWhether": "N",
- "QueryType": "",
- "SortCode": "7",
- "CreateTime": "2023-5-10 09:01:04.707",
- "UpdateTime": "2023-5-15 19:41:21.283",
- "CreateUserId": "212725263002001",
- "UpdateUserId": "212725263002001",
- "IsDelete": "0",
- "ExtJson": "",
- "IsPrimarykey": "N",
- "FieldNetType": "int",
- "CreateUser": "superAdmin",
- "UpdateUser": "superAdmin",
- "WhetherImportExport": "N",
- "WhetherResizable": "N"
- },
- {
- "Id": "415806515957836",
- "BasicId": "415806515720261",
- "FieldIndex": "8",
- "FieldName": "CreateTime",
- "FieldRemark": "创建时间",
- "FieldType": "datetime",
- "EffectType": "datepicker",
- "FkEntityName": "",
- "FkColumnId": "",
- "FkColumnName": "",
- "DictTypeCode": "",
- "Width": "100",
- "WhetherTable": "N",
- "WhetherRetract": "N",
- "WhetherAddUpdate": "N",
- "WhetherRequired": "N",
- "QueryWhether": "N",
- "QueryType": "",
- "SortCode": "99",
- "CreateTime": "2023-5-10 09:01:04.707",
- "UpdateTime": "2023-5-15 19:41:21.283",
- "CreateUserId": "212725263002001",
- "UpdateUserId": "212725263002001",
- "IsDelete": "0",
- "ExtJson": "",
- "IsPrimarykey": "N",
- "FieldNetType": "DateTime",
- "CreateUser": "superAdmin",
- "UpdateUser": "superAdmin",
- "WhetherImportExport": "N",
- "WhetherResizable": "N"
- },
- {
- "Id": "415806515957837",
- "BasicId": "415806515720261",
- "FieldIndex": "9",
- "FieldName": "UpdateTime",
- "FieldRemark": "更新时间",
- "FieldType": "datetime",
- "EffectType": "datepicker",
- "FkEntityName": "",
- "FkColumnId": "",
- "FkColumnName": "",
- "DictTypeCode": "",
- "Width": "100",
- "WhetherTable": "N",
- "WhetherRetract": "N",
- "WhetherAddUpdate": "N",
- "WhetherRequired": "N",
- "QueryWhether": "N",
- "QueryType": "",
- "SortCode": "99",
- "CreateTime": "2023-5-10 09:01:04.707",
- "UpdateTime": "2023-5-15 19:41:21.283",
- "CreateUserId": "212725263002001",
- "UpdateUserId": "212725263002001",
- "IsDelete": "0",
- "ExtJson": "",
- "IsPrimarykey": "N",
- "FieldNetType": "DateTime",
- "CreateUser": "superAdmin",
- "UpdateUser": "superAdmin",
- "WhetherImportExport": "N",
- "WhetherResizable": "N"
- },
- {
- "Id": "415806515957838",
- "BasicId": "415806515720261",
- "FieldIndex": "0",
- "FieldName": "CreateUserId",
- "FieldRemark": "创建者Id",
- "FieldType": "bigint",
- "EffectType": "input",
- "FkEntityName": "",
- "FkColumnId": "",
- "FkColumnName": "",
- "DictTypeCode": "",
- "Width": "100",
- "WhetherTable": "N",
- "WhetherRetract": "N",
- "WhetherAddUpdate": "N",
- "WhetherRequired": "N",
- "QueryWhether": "N",
- "QueryType": "",
- "SortCode": "99",
- "CreateTime": "2023-5-10 09:01:04.707",
- "UpdateTime": "",
- "CreateUserId": "212725263002001",
- "UpdateUserId": "",
- "IsDelete": "0",
- "ExtJson": "",
- "IsPrimarykey": "N",
- "FieldNetType": "long",
- "CreateUser": "superAdmin",
- "UpdateUser": "",
- "WhetherImportExport": "N",
- "WhetherResizable": "N"
- },
- {
- "Id": "415806515957839",
- "BasicId": "415806515720261",
- "FieldIndex": "0",
- "FieldName": "UpdateUserId",
- "FieldRemark": "修改者Id",
- "FieldType": "bigint",
- "EffectType": "input",
- "FkEntityName": "",
- "FkColumnId": "",
- "FkColumnName": "",
- "DictTypeCode": "",
- "Width": "100",
- "WhetherTable": "N",
- "WhetherRetract": "N",
- "WhetherAddUpdate": "N",
- "WhetherRequired": "N",
- "QueryWhether": "N",
- "QueryType": "",
- "SortCode": "99",
- "CreateTime": "2023-5-10 09:01:04.707",
- "UpdateTime": "2023-5-10 09:12:20.477",
- "CreateUserId": "212725263002001",
- "UpdateUserId": "212725263002001",
- "IsDelete": "0",
- "ExtJson": "",
- "IsPrimarykey": "N",
- "FieldNetType": "long",
- "CreateUser": "superAdmin",
- "UpdateUser": "superAdmin",
- "WhetherImportExport": "N",
- "WhetherResizable": "N"
- },
- {
- "Id": "415806515961925",
- "BasicId": "415806515720261",
- "FieldIndex": "0",
- "FieldName": "IsDelete",
- "FieldRemark": "软删除",
- "FieldType": "bit",
- "EffectType": "input",
- "FkEntityName": "",
- "FkColumnId": "",
- "FkColumnName": "",
- "DictTypeCode": "",
- "Width": "100",
- "WhetherTable": "N",
- "WhetherRetract": "N",
- "WhetherAddUpdate": "N",
- "WhetherRequired": "N",
- "QueryWhether": "N",
- "QueryType": "",
- "SortCode": "99",
- "CreateTime": "2023-5-10 09:01:04.707",
- "UpdateTime": "",
- "CreateUserId": "212725263002001",
- "UpdateUserId": "",
- "IsDelete": "0",
- "ExtJson": "",
- "IsPrimarykey": "N",
- "FieldNetType": "bool",
- "CreateUser": "superAdmin",
- "UpdateUser": "",
- "WhetherImportExport": "N",
- "WhetherResizable": "N"
- },
- {
- "Id": "415806515961926",
- "BasicId": "415806515720261",
- "FieldIndex": "13",
- "FieldName": "ExtJson",
- "FieldRemark": "扩展信息",
- "FieldType": "nvarchar",
- "EffectType": "input",
- "FkEntityName": "",
- "FkColumnId": "",
- "FkColumnName": "",
- "DictTypeCode": "",
- "Width": "100",
- "WhetherTable": "N",
- "WhetherRetract": "N",
- "WhetherAddUpdate": "N",
- "WhetherRequired": "N",
- "QueryWhether": "N",
- "QueryType": "",
- "SortCode": "99",
- "CreateTime": "2023-5-10 09:01:04.707",
- "UpdateTime": "2023-5-15 19:41:21.283",
- "CreateUserId": "212725263002001",
- "UpdateUserId": "212725263002001",
- "IsDelete": "0",
- "ExtJson": "",
- "IsPrimarykey": "N",
- "FieldNetType": "string",
- "CreateUser": "superAdmin",
- "UpdateUser": "superAdmin",
- "WhetherImportExport": "N",
- "WhetherResizable": "N"
- },
- {
- "Id": "415806515961927",
- "BasicId": "415806515720261",
- "FieldIndex": "14",
- "FieldName": "CreateUser",
- "FieldRemark": "创建人",
- "FieldType": "varchar",
- "EffectType": "input",
- "FkEntityName": "",
- "FkColumnId": "",
- "FkColumnName": "",
- "DictTypeCode": "",
- "Width": "100",
- "WhetherTable": "N",
- "WhetherRetract": "N",
- "WhetherAddUpdate": "N",
- "WhetherRequired": "N",
- "QueryWhether": "N",
- "QueryType": "",
- "SortCode": "99",
- "CreateTime": "2023-5-10 09:01:04.707",
- "UpdateTime": "2023-5-15 19:41:21.283",
- "CreateUserId": "212725263002001",
- "UpdateUserId": "212725263002001",
- "IsDelete": "0",
- "ExtJson": "",
- "IsPrimarykey": "N",
- "FieldNetType": "string",
- "CreateUser": "superAdmin",
- "UpdateUser": "superAdmin",
- "WhetherImportExport": "N",
- "WhetherResizable": "N"
- },
- {
- "Id": "415806515961928",
- "BasicId": "415806515720261",
- "FieldIndex": "15",
- "FieldName": "UpdateUser",
- "FieldRemark": "更新人",
- "FieldType": "varchar",
- "EffectType": "input",
- "FkEntityName": "",
- "FkColumnId": "",
- "FkColumnName": "",
- "DictTypeCode": "",
- "Width": "100",
- "WhetherTable": "N",
- "WhetherRetract": "N",
- "WhetherAddUpdate": "N",
- "WhetherRequired": "N",
- "QueryWhether": "N",
- "QueryType": "",
- "SortCode": "99",
- "CreateTime": "2023-5-10 09:01:04.707",
- "UpdateTime": "2023-5-15 19:41:21.283",
- "CreateUserId": "212725263002001",
- "UpdateUserId": "212725263002001",
- "IsDelete": "0",
- "ExtJson": "",
- "IsPrimarykey": "N",
- "FieldNetType": "string",
- "CreateUser": "superAdmin",
- "UpdateUser": "superAdmin",
- "WhetherImportExport": "N",
- "WhetherResizable": "N"
- },
- {
- "Id": "415904006709317",
- "BasicId": "415904006602821",
- "FieldIndex": "7",
- "FieldName": "Id",
- "FieldRemark": "Id",
- "FieldType": "bigint",
- "EffectType": "input",
- "FkEntityName": "",
- "FkColumnId": "",
- "FkColumnName": "",
- "DictTypeCode": "",
- "Width": "100",
- "WhetherTable": "N",
- "WhetherRetract": "N",
- "WhetherAddUpdate": "N",
- "WhetherRequired": "N",
- "QueryWhether": "N",
- "QueryType": "",
- "SortCode": "99",
- "CreateTime": "2023-5-10 15:37:46.157",
- "UpdateTime": "2023-5-15 19:41:24.913",
- "CreateUserId": "212725263002001",
- "UpdateUserId": "212725263002001",
- "IsDelete": "0",
- "ExtJson": "",
- "IsPrimarykey": "Y",
- "FieldNetType": "long",
- "CreateUser": "superAdmin",
- "UpdateUser": "superAdmin",
- "WhetherImportExport": "N",
- "WhetherResizable": "N"
- },
- {
- "Id": "415904006717509",
- "BasicId": "415904006602821",
- "FieldIndex": "0",
- "FieldName": "ParentId",
- "FieldRemark": "父id",
- "FieldType": "bigint",
- "EffectType": "input",
- "FkEntityName": "",
- "FkColumnId": "",
- "FkColumnName": "",
- "DictTypeCode": "",
- "Width": "100",
- "WhetherTable": "N",
- "WhetherRetract": "N",
- "WhetherAddUpdate": "N",
- "WhetherRequired": "N",
- "QueryWhether": "N",
- "QueryType": "",
- "SortCode": "1",
- "CreateTime": "2023-5-10 15:37:46.16",
- "UpdateTime": "2023-5-17 08:34:11.07",
- "CreateUserId": "212725263002001",
- "UpdateUserId": "212725263002001",
- "IsDelete": "0",
- "ExtJson": "",
- "IsPrimarykey": "N",
- "FieldNetType": "long",
- "CreateUser": "superAdmin",
- "UpdateUser": "superAdmin",
- "WhetherImportExport": "N",
- "WhetherResizable": "N"
- },
- {
- "Id": "415904006717510",
- "BasicId": "415904006602821",
- "FieldIndex": "1",
- "FieldName": "DirectorId",
- "FieldRemark": "主管ID",
- "FieldType": "bigint",
- "EffectType": "input",
- "FkEntityName": "",
- "FkColumnId": "",
- "FkColumnName": "",
- "DictTypeCode": "",
- "Width": "100",
- "WhetherTable": "N",
- "WhetherRetract": "N",
- "WhetherAddUpdate": "N",
- "WhetherRequired": "N",
- "QueryWhether": "N",
- "QueryType": "",
- "SortCode": "2",
- "CreateTime": "2023-5-10 15:37:46.16",
- "UpdateTime": "2023-5-17 08:34:11.07",
- "CreateUserId": "212725263002001",
- "UpdateUserId": "212725263002001",
- "IsDelete": "0",
- "ExtJson": "",
- "IsPrimarykey": "N",
- "FieldNetType": "long",
- "CreateUser": "superAdmin",
- "UpdateUser": "superAdmin",
- "WhetherImportExport": "N",
- "WhetherResizable": "N"
- },
- {
- "Id": "415904006717511",
- "BasicId": "415904006602821",
- "FieldIndex": "2",
- "FieldName": "Name",
- "FieldRemark": "名称",
- "FieldType": "nvarchar",
- "EffectType": "input",
- "FkEntityName": "",
- "FkColumnId": "",
- "FkColumnName": "",
- "DictTypeCode": "",
- "Width": "100",
- "WhetherTable": "Y",
- "WhetherRetract": "N",
- "WhetherAddUpdate": "Y",
- "WhetherRequired": "N",
- "QueryWhether": "Y",
- "QueryType": "like",
- "SortCode": "3",
- "CreateTime": "2023-5-10 15:37:46.16",
- "UpdateTime": "2023-5-17 08:34:11.07",
- "CreateUserId": "212725263002001",
- "UpdateUserId": "212725263002001",
- "IsDelete": "0",
- "ExtJson": "",
- "IsPrimarykey": "N",
- "FieldNetType": "string",
- "CreateUser": "superAdmin",
- "UpdateUser": "superAdmin",
- "WhetherImportExport": "Y",
- "WhetherResizable": "N"
- },
- {
- "Id": "415904006717512",
- "BasicId": "415904006602821",
- "FieldIndex": "3",
- "FieldName": "Names",
- "FieldRemark": "全称",
- "FieldType": "nvarchar",
- "EffectType": "input",
- "FkEntityName": "",
- "FkColumnId": "",
- "FkColumnName": "",
- "DictTypeCode": "",
- "Width": "100",
- "WhetherTable": "Y",
- "WhetherRetract": "N",
- "WhetherAddUpdate": "Y",
- "WhetherRequired": "N",
- "QueryWhether": "N",
- "QueryType": "",
- "SortCode": "4",
- "CreateTime": "2023-5-10 15:37:46.16",
- "UpdateTime": "2023-5-17 08:34:11.07",
- "CreateUserId": "212725263002001",
- "UpdateUserId": "212725263002001",
- "IsDelete": "0",
- "ExtJson": "",
- "IsPrimarykey": "N",
- "FieldNetType": "string",
- "CreateUser": "superAdmin",
- "UpdateUser": "superAdmin",
- "WhetherImportExport": "Y",
- "WhetherResizable": "N"
- },
- {
- "Id": "415904006717513",
- "BasicId": "415904006602821",
- "FieldIndex": "4",
- "FieldName": "Code",
- "FieldRemark": "编码",
- "FieldType": "nvarchar",
- "EffectType": "input",
- "FkEntityName": "",
- "FkColumnId": "",
- "FkColumnName": "",
- "DictTypeCode": "",
- "Width": "100",
- "WhetherTable": "Y",
- "WhetherRetract": "N",
- "WhetherAddUpdate": "Y",
- "WhetherRequired": "N",
- "QueryWhether": "N",
- "QueryType": "",
- "SortCode": "5",
- "CreateTime": "2023-5-10 15:37:46.16",
- "UpdateTime": "2023-5-17 08:34:11.07",
- "CreateUserId": "212725263002001",
- "UpdateUserId": "212725263002001",
- "IsDelete": "0",
- "ExtJson": "",
- "IsPrimarykey": "N",
- "FieldNetType": "string",
- "CreateUser": "superAdmin",
- "UpdateUser": "superAdmin",
- "WhetherImportExport": "Y",
- "WhetherResizable": "N"
- },
- {
- "Id": "415904006717514",
- "BasicId": "415904006602821",
- "FieldIndex": "5",
- "FieldName": "Category",
- "FieldRemark": "分类",
- "FieldType": "nvarchar",
- "EffectType": "radio",
- "FkEntityName": "",
- "FkColumnId": "",
- "FkColumnName": "",
- "DictTypeCode": "POSITION_CATEGORY",
- "Width": "100",
- "WhetherTable": "Y",
- "WhetherRetract": "N",
- "WhetherAddUpdate": "Y",
- "WhetherRequired": "N",
- "QueryWhether": "Y",
- "QueryType": "eq",
- "SortCode": "6",
- "CreateTime": "2023-5-10 15:37:46.16",
- "UpdateTime": "2023-5-17 08:34:11.07",
- "CreateUserId": "212725263002001",
- "UpdateUserId": "212725263002001",
- "IsDelete": "0",
- "ExtJson": "",
- "IsPrimarykey": "N",
- "FieldNetType": "string",
- "CreateUser": "superAdmin",
- "UpdateUser": "superAdmin",
- "WhetherImportExport": "Y",
- "WhetherResizable": "N"
- },
- {
- "Id": "415904006717515",
- "BasicId": "415904006602821",
- "FieldIndex": "6",
- "FieldName": "SortCode",
- "FieldRemark": "排序码",
- "FieldType": "int",
- "EffectType": "slider",
- "FkEntityName": "",
- "FkColumnId": "",
- "FkColumnName": "",
- "DictTypeCode": "",
- "Width": "100",
- "WhetherTable": "Y",
- "WhetherRetract": "N",
- "WhetherAddUpdate": "Y",
- "WhetherRequired": "N",
- "QueryWhether": "N",
- "QueryType": "",
- "SortCode": "7",
- "CreateTime": "2023-5-10 15:37:46.16",
- "UpdateTime": "2023-5-17 08:34:11.07",
- "CreateUserId": "212725263002001",
- "UpdateUserId": "212725263002001",
- "IsDelete": "0",
- "ExtJson": "",
- "IsPrimarykey": "N",
- "FieldNetType": "int",
- "CreateUser": "superAdmin",
- "UpdateUser": "superAdmin",
- "WhetherImportExport": "Y",
- "WhetherResizable": "N"
- },
- {
- "Id": "415904006721605",
- "BasicId": "415904006602821",
- "FieldIndex": "8",
- "FieldName": "CreateTime",
- "FieldRemark": "创建时间",
- "FieldType": "datetime",
- "EffectType": "datepicker",
- "FkEntityName": "",
- "FkColumnId": "",
- "FkColumnName": "",
- "DictTypeCode": "",
- "Width": "100",
- "WhetherTable": "N",
- "WhetherRetract": "N",
- "WhetherAddUpdate": "N",
- "WhetherRequired": "N",
- "QueryWhether": "N",
- "QueryType": "",
- "SortCode": "99",
- "CreateTime": "2023-5-10 15:37:46.16",
- "UpdateTime": "2023-5-17 08:34:11.073",
- "CreateUserId": "212725263002001",
- "UpdateUserId": "212725263002001",
- "IsDelete": "0",
- "ExtJson": "",
- "IsPrimarykey": "N",
- "FieldNetType": "DateTime",
- "CreateUser": "superAdmin",
- "UpdateUser": "superAdmin",
- "WhetherImportExport": "N",
- "WhetherResizable": "N"
- },
- {
- "Id": "415904006721606",
- "BasicId": "415904006602821",
- "FieldIndex": "9",
- "FieldName": "UpdateTime",
- "FieldRemark": "更新时间",
- "FieldType": "datetime",
- "EffectType": "datepicker",
- "FkEntityName": "",
- "FkColumnId": "",
- "FkColumnName": "",
- "DictTypeCode": "",
- "Width": "100",
- "WhetherTable": "N",
- "WhetherRetract": "N",
- "WhetherAddUpdate": "N",
- "WhetherRequired": "N",
- "QueryWhether": "N",
- "QueryType": "",
- "SortCode": "99",
- "CreateTime": "2023-5-10 15:37:46.16",
- "UpdateTime": "2023-5-17 08:34:11.073",
- "CreateUserId": "212725263002001",
- "UpdateUserId": "212725263002001",
- "IsDelete": "0",
- "ExtJson": "",
- "IsPrimarykey": "N",
- "FieldNetType": "DateTime",
- "CreateUser": "superAdmin",
- "UpdateUser": "superAdmin",
- "WhetherImportExport": "N",
- "WhetherResizable": "N"
- },
- {
- "Id": "415904006721607",
- "BasicId": "415904006602821",
- "FieldIndex": "10",
- "FieldName": "CreateUserId",
- "FieldRemark": "创建者Id",
- "FieldType": "bigint",
- "EffectType": "input",
- "FkEntityName": "",
- "FkColumnId": "",
- "FkColumnName": "",
- "DictTypeCode": "",
- "Width": "100",
- "WhetherTable": "N",
- "WhetherRetract": "N",
- "WhetherAddUpdate": "N",
- "WhetherRequired": "N",
- "QueryWhether": "N",
- "QueryType": "",
- "SortCode": "99",
- "CreateTime": "2023-5-10 15:37:46.16",
- "UpdateTime": "",
- "CreateUserId": "212725263002001",
- "UpdateUserId": "",
- "IsDelete": "0",
- "ExtJson": "",
- "IsPrimarykey": "N",
- "FieldNetType": "long",
- "CreateUser": "superAdmin",
- "UpdateUser": "",
- "WhetherImportExport": "N",
- "WhetherResizable": "N"
- },
- {
- "Id": "415904006721608",
- "BasicId": "415904006602821",
- "FieldIndex": "11",
- "FieldName": "UpdateUserId",
- "FieldRemark": "修改者Id",
- "FieldType": "bigint",
- "EffectType": "input",
- "FkEntityName": "",
- "FkColumnId": "",
- "FkColumnName": "",
- "DictTypeCode": "",
- "Width": "100",
- "WhetherTable": "N",
- "WhetherRetract": "N",
- "WhetherAddUpdate": "N",
- "WhetherRequired": "N",
- "QueryWhether": "N",
- "QueryType": "",
- "SortCode": "99",
- "CreateTime": "2023-5-10 15:37:46.16",
- "UpdateTime": "2023-5-10 15:38:18.29",
- "CreateUserId": "212725263002001",
- "UpdateUserId": "212725263002001",
- "IsDelete": "0",
- "ExtJson": "",
- "IsPrimarykey": "N",
- "FieldNetType": "long",
- "CreateUser": "superAdmin",
- "UpdateUser": "superAdmin",
- "WhetherImportExport": "N",
- "WhetherResizable": "N"
- },
- {
- "Id": "415904006721609",
- "BasicId": "415904006602821",
- "FieldIndex": "12",
- "FieldName": "IsDelete",
- "FieldRemark": "软删除",
- "FieldType": "bit",
- "EffectType": "input",
- "FkEntityName": "",
- "FkColumnId": "",
- "FkColumnName": "",
- "DictTypeCode": "",
- "Width": "100",
- "WhetherTable": "N",
- "WhetherRetract": "N",
- "WhetherAddUpdate": "N",
- "WhetherRequired": "N",
- "QueryWhether": "N",
- "QueryType": "",
- "SortCode": "99",
- "CreateTime": "2023-5-10 15:37:46.16",
- "UpdateTime": "",
- "CreateUserId": "212725263002001",
- "UpdateUserId": "",
- "IsDelete": "0",
- "ExtJson": "",
- "IsPrimarykey": "N",
- "FieldNetType": "bool",
- "CreateUser": "superAdmin",
- "UpdateUser": "",
- "WhetherImportExport": "N",
- "WhetherResizable": "N"
- },
- {
- "Id": "415904006721610",
- "BasicId": "415904006602821",
- "FieldIndex": "13",
- "FieldName": "ExtJson",
- "FieldRemark": "扩展信息",
- "FieldType": "nvarchar",
- "EffectType": "input",
- "FkEntityName": "",
- "FkColumnId": "",
- "FkColumnName": "",
- "DictTypeCode": "",
- "Width": "100",
- "WhetherTable": "N",
- "WhetherRetract": "N",
- "WhetherAddUpdate": "N",
- "WhetherRequired": "N",
- "QueryWhether": "N",
- "QueryType": "",
- "SortCode": "99",
- "CreateTime": "2023-5-10 15:37:46.16",
- "UpdateTime": "2023-5-17 08:34:11.073",
- "CreateUserId": "212725263002001",
- "UpdateUserId": "212725263002001",
- "IsDelete": "0",
- "ExtJson": "",
- "IsPrimarykey": "N",
- "FieldNetType": "string",
- "CreateUser": "superAdmin",
- "UpdateUser": "superAdmin",
- "WhetherImportExport": "N",
- "WhetherResizable": "N"
- },
- {
- "Id": "415904006721611",
- "BasicId": "415904006602821",
- "FieldIndex": "14",
- "FieldName": "CreateUser",
- "FieldRemark": "创建人",
- "FieldType": "varchar",
- "EffectType": "input",
- "FkEntityName": "",
- "FkColumnId": "",
- "FkColumnName": "",
- "DictTypeCode": "",
- "Width": "100",
- "WhetherTable": "N",
- "WhetherRetract": "N",
- "WhetherAddUpdate": "N",
- "WhetherRequired": "N",
- "QueryWhether": "N",
- "QueryType": "",
- "SortCode": "99",
- "CreateTime": "2023-5-10 15:37:46.16",
- "UpdateTime": "2023-5-17 08:34:11.073",
- "CreateUserId": "212725263002001",
- "UpdateUserId": "212725263002001",
- "IsDelete": "0",
- "ExtJson": "",
- "IsPrimarykey": "N",
- "FieldNetType": "string",
- "CreateUser": "superAdmin",
- "UpdateUser": "superAdmin",
- "WhetherImportExport": "N",
- "WhetherResizable": "N"
- },
- {
- "Id": "415904006721612",
- "BasicId": "415904006602821",
- "FieldIndex": "15",
- "FieldName": "UpdateUser",
- "FieldRemark": "更新人",
- "FieldType": "varchar",
- "EffectType": "input",
- "FkEntityName": "",
- "FkColumnId": "",
- "FkColumnName": "",
- "DictTypeCode": "",
- "Width": "100",
- "WhetherTable": "N",
- "WhetherRetract": "N",
- "WhetherAddUpdate": "N",
- "WhetherRequired": "N",
- "QueryWhether": "N",
- "QueryType": "",
- "SortCode": "99",
- "CreateTime": "2023-5-10 15:37:46.16",
- "UpdateTime": "2023-5-17 08:34:11.073",
- "CreateUserId": "212725263002001",
- "UpdateUserId": "212725263002001",
- "IsDelete": "0",
- "ExtJson": "",
- "IsPrimarykey": "N",
- "FieldNetType": "string",
- "CreateUser": "superAdmin",
- "UpdateUser": "superAdmin",
- "WhetherImportExport": "N",
- "WhetherResizable": "N"
- },
- {
- "Id": "417692167675973",
- "BasicId": "417692167622725",
- "FieldIndex": "7",
- "FieldName": "Id",
- "FieldRemark": "Id",
- "FieldType": "bigint",
- "EffectType": "input",
- "FkEntityName": "",
- "FkColumnId": "",
- "FkColumnName": "",
- "DictTypeCode": "",
- "Width": "100",
- "WhetherTable": "N",
- "WhetherRetract": "N",
- "WhetherAddUpdate": "N",
- "WhetherRequired": "N",
- "QueryWhether": "N",
- "QueryType": "",
- "SortCode": "99",
- "CreateTime": "2023-5-15 16:53:48.893",
- "UpdateTime": "2023-5-15 19:41:27.993",
- "CreateUserId": "212725263002001",
- "UpdateUserId": "212725263002001",
- "IsDelete": "0",
- "ExtJson": "",
- "IsPrimarykey": "Y",
- "FieldNetType": "long",
- "CreateUser": "superAdmin",
- "UpdateUser": "superAdmin",
- "WhetherImportExport": "N",
- "WhetherResizable": "N"
- },
- {
- "Id": "417692167688261",
- "BasicId": "417692167622725",
- "FieldIndex": "0",
- "FieldName": "Name",
- "FieldRemark": "姓名",
- "FieldType": "nvarchar",
- "EffectType": "input",
- "FkEntityName": "",
- "FkColumnId": "",
- "FkColumnName": "",
- "DictTypeCode": "",
- "Width": "100",
- "WhetherTable": "Y",
- "WhetherRetract": "N",
- "WhetherAddUpdate": "Y",
- "WhetherRequired": "N",
- "QueryWhether": "N",
- "QueryType": "",
- "SortCode": "1",
- "CreateTime": "2023-5-15 16:53:48.897",
- "UpdateTime": "2023-5-17 08:36:41.87",
- "CreateUserId": "212725263002001",
- "UpdateUserId": "212725263002001",
- "IsDelete": "0",
- "ExtJson": "",
- "IsPrimarykey": "N",
- "FieldNetType": "string",
- "CreateUser": "superAdmin",
- "UpdateUser": "superAdmin",
- "WhetherImportExport": "Y",
- "WhetherResizable": "N"
- },
- {
- "Id": "417692167688262",
- "BasicId": "417692167622725",
- "FieldIndex": "1",
- "FieldName": "Sex",
- "FieldRemark": "性别",
- "FieldType": "nvarchar",
- "EffectType": "input",
- "FkEntityName": "",
- "FkColumnId": "",
- "FkColumnName": "",
- "DictTypeCode": "",
- "Width": "100",
- "WhetherTable": "Y",
- "WhetherRetract": "N",
- "WhetherAddUpdate": "Y",
- "WhetherRequired": "N",
- "QueryWhether": "N",
- "QueryType": "",
- "SortCode": "2",
- "CreateTime": "2023-5-15 16:53:48.897",
- "UpdateTime": "2023-5-17 08:36:41.87",
- "CreateUserId": "212725263002001",
- "UpdateUserId": "212725263002001",
- "IsDelete": "0",
- "ExtJson": "",
- "IsPrimarykey": "N",
- "FieldNetType": "string",
- "CreateUser": "superAdmin",
- "UpdateUser": "superAdmin",
- "WhetherImportExport": "Y",
- "WhetherResizable": "N"
- },
- {
- "Id": "417692167688263",
- "BasicId": "417692167622725",
- "FieldIndex": "2",
- "FieldName": "Nation",
- "FieldRemark": "民族",
- "FieldType": "nvarchar",
- "EffectType": "input",
- "FkEntityName": "",
- "FkColumnId": "",
- "FkColumnName": "",
- "DictTypeCode": "",
- "Width": "100",
- "WhetherTable": "Y",
- "WhetherRetract": "N",
- "WhetherAddUpdate": "Y",
- "WhetherRequired": "N",
- "QueryWhether": "N",
- "QueryType": "",
- "SortCode": "3",
- "CreateTime": "2023-5-15 16:53:48.897",
- "UpdateTime": "2023-5-17 08:36:41.87",
- "CreateUserId": "212725263002001",
- "UpdateUserId": "212725263002001",
- "IsDelete": "0",
- "ExtJson": "",
- "IsPrimarykey": "N",
- "FieldNetType": "string",
- "CreateUser": "superAdmin",
- "UpdateUser": "superAdmin",
- "WhetherImportExport": "Y",
- "WhetherResizable": "N"
- },
- {
- "Id": "417692167688264",
- "BasicId": "417692167622725",
- "FieldIndex": "3",
- "FieldName": "Age",
- "FieldRemark": "年龄",
- "FieldType": "int",
- "EffectType": "input",
- "FkEntityName": "",
- "FkColumnId": "",
- "FkColumnName": "",
- "DictTypeCode": "",
- "Width": "100",
- "WhetherTable": "Y",
- "WhetherRetract": "N",
- "WhetherAddUpdate": "Y",
- "WhetherRequired": "N",
- "QueryWhether": "N",
- "QueryType": "",
- "SortCode": "4",
- "CreateTime": "2023-5-15 16:53:48.897",
- "UpdateTime": "2023-5-17 08:36:41.87",
- "CreateUserId": "212725263002001",
- "UpdateUserId": "212725263002001",
- "IsDelete": "0",
- "ExtJson": "",
- "IsPrimarykey": "N",
- "FieldNetType": "int",
- "CreateUser": "superAdmin",
- "UpdateUser": "superAdmin",
- "WhetherImportExport": "Y",
- "WhetherResizable": "N"
- },
- {
- "Id": "417692167688265",
- "BasicId": "417692167622725",
- "FieldIndex": "4",
- "FieldName": "Bir",
- "FieldRemark": "生日",
- "FieldType": "datetime",
- "EffectType": "datepicker",
- "FkEntityName": "",
- "FkColumnId": "",
- "FkColumnName": "",
- "DictTypeCode": "",
- "Width": "100",
- "WhetherTable": "Y",
- "WhetherRetract": "N",
- "WhetherAddUpdate": "Y",
- "WhetherRequired": "N",
- "QueryWhether": "N",
- "QueryType": "",
- "SortCode": "5",
- "CreateTime": "2023-5-15 16:53:48.897",
- "UpdateTime": "2023-5-17 08:36:41.87",
- "CreateUserId": "212725263002001",
- "UpdateUserId": "212725263002001",
- "IsDelete": "0",
- "ExtJson": "",
- "IsPrimarykey": "N",
- "FieldNetType": "DateTime",
- "CreateUser": "superAdmin",
- "UpdateUser": "superAdmin",
- "WhetherImportExport": "Y",
- "WhetherResizable": "N"
- },
- {
- "Id": "417692167688266",
- "BasicId": "417692167622725",
- "FieldIndex": "5",
- "FieldName": "SortCode",
- "FieldRemark": "排序码",
- "FieldType": "int",
- "EffectType": "input",
- "FkEntityName": "",
- "FkColumnId": "",
- "FkColumnName": "",
- "DictTypeCode": "",
- "Width": "100",
- "WhetherTable": "Y",
- "WhetherRetract": "N",
- "WhetherAddUpdate": "Y",
- "WhetherRequired": "N",
- "QueryWhether": "N",
- "QueryType": "",
- "SortCode": "6",
- "CreateTime": "2023-5-15 16:53:48.897",
- "UpdateTime": "2023-5-17 08:36:41.87",
- "CreateUserId": "212725263002001",
- "UpdateUserId": "212725263002001",
- "IsDelete": "0",
- "ExtJson": "",
- "IsPrimarykey": "N",
- "FieldNetType": "int",
- "CreateUser": "superAdmin",
- "UpdateUser": "superAdmin",
- "WhetherImportExport": "Y",
- "WhetherResizable": "N"
- },
- {
- "Id": "417692167688267",
- "BasicId": "417692167622725",
- "FieldIndex": "8",
- "FieldName": "CreateOrgId",
- "FieldRemark": "创建者部门Id",
- "FieldType": "bigint",
- "EffectType": "input",
- "FkEntityName": "",
- "FkColumnId": "",
- "FkColumnName": "",
- "DictTypeCode": "",
- "Width": "100",
- "WhetherTable": "N",
- "WhetherRetract": "N",
- "WhetherAddUpdate": "N",
- "WhetherRequired": "N",
- "QueryWhether": "N",
- "QueryType": "",
- "SortCode": "99",
- "CreateTime": "2023-5-15 16:53:48.897",
- "UpdateTime": "2023-5-17 08:36:41.87",
- "CreateUserId": "212725263002001",
- "UpdateUserId": "212725263002001",
- "IsDelete": "0",
- "ExtJson": "",
- "IsPrimarykey": "N",
- "FieldNetType": "long",
- "CreateUser": "superAdmin",
- "UpdateUser": "superAdmin",
- "WhetherImportExport": "N",
- "WhetherResizable": "N"
- },
- {
- "Id": "417692167688268",
- "BasicId": "417692167622725",
- "FieldIndex": "9",
- "FieldName": "CreateTime",
- "FieldRemark": "创建时间",
- "FieldType": "datetime",
- "EffectType": "datepicker",
- "FkEntityName": "",
- "FkColumnId": "",
- "FkColumnName": "",
- "DictTypeCode": "",
- "Width": "100",
- "WhetherTable": "N",
- "WhetherRetract": "N",
- "WhetherAddUpdate": "N",
- "WhetherRequired": "N",
- "QueryWhether": "N",
- "QueryType": "",
- "SortCode": "99",
- "CreateTime": "2023-5-15 16:53:48.897",
- "UpdateTime": "2023-5-17 08:36:41.87",
- "CreateUserId": "212725263002001",
- "UpdateUserId": "212725263002001",
- "IsDelete": "0",
- "ExtJson": "",
- "IsPrimarykey": "N",
- "FieldNetType": "DateTime",
- "CreateUser": "superAdmin",
- "UpdateUser": "superAdmin",
- "WhetherImportExport": "N",
- "WhetherResizable": "N"
- },
- {
- "Id": "417692167688269",
- "BasicId": "417692167622725",
- "FieldIndex": "10",
- "FieldName": "UpdateTime",
- "FieldRemark": "更新时间",
- "FieldType": "datetime",
- "EffectType": "datepicker",
- "FkEntityName": "",
- "FkColumnId": "",
- "FkColumnName": "",
- "DictTypeCode": "",
- "Width": "100",
- "WhetherTable": "N",
- "WhetherRetract": "N",
- "WhetherAddUpdate": "N",
- "WhetherRequired": "N",
- "QueryWhether": "N",
- "QueryType": "",
- "SortCode": "99",
- "CreateTime": "2023-5-15 16:53:48.897",
- "UpdateTime": "2023-5-17 08:36:41.87",
- "CreateUserId": "212725263002001",
- "UpdateUserId": "212725263002001",
- "IsDelete": "0",
- "ExtJson": "",
- "IsPrimarykey": "N",
- "FieldNetType": "DateTime",
- "CreateUser": "superAdmin",
- "UpdateUser": "superAdmin",
- "WhetherImportExport": "N",
- "WhetherResizable": "N"
- },
- {
- "Id": "417692167688270",
- "BasicId": "417692167622725",
- "FieldIndex": "11",
- "FieldName": "CreateUserId",
- "FieldRemark": "创建者Id",
- "FieldType": "bigint",
- "EffectType": "input",
- "FkEntityName": "",
- "FkColumnId": "",
- "FkColumnName": "",
- "DictTypeCode": "",
- "Width": "100",
- "WhetherTable": "N",
- "WhetherRetract": "N",
- "WhetherAddUpdate": "N",
- "WhetherRequired": "N",
- "QueryWhether": "N",
- "QueryType": "",
- "SortCode": "99",
- "CreateTime": "2023-5-15 16:53:48.897",
- "UpdateTime": "",
- "CreateUserId": "212725263002001",
- "UpdateUserId": "",
- "IsDelete": "0",
- "ExtJson": "",
- "IsPrimarykey": "N",
- "FieldNetType": "long",
- "CreateUser": "superAdmin",
- "UpdateUser": "",
- "WhetherImportExport": "N",
- "WhetherResizable": "N"
- },
- {
- "Id": "417692167688271",
- "BasicId": "417692167622725",
- "FieldIndex": "12",
- "FieldName": "UpdateUserId",
- "FieldRemark": "修改者Id",
- "FieldType": "bigint",
- "EffectType": "input",
- "FkEntityName": "",
- "FkColumnId": "",
- "FkColumnName": "",
- "DictTypeCode": "",
- "Width": "100",
- "WhetherTable": "N",
- "WhetherRetract": "N",
- "WhetherAddUpdate": "N",
- "WhetherRequired": "N",
- "QueryWhether": "N",
- "QueryType": "",
- "SortCode": "99",
- "CreateTime": "2023-5-15 16:53:48.897",
- "UpdateTime": "",
- "CreateUserId": "212725263002001",
- "UpdateUserId": "",
- "IsDelete": "0",
- "ExtJson": "",
- "IsPrimarykey": "N",
- "FieldNetType": "long",
- "CreateUser": "superAdmin",
- "UpdateUser": "",
- "WhetherImportExport": "N",
- "WhetherResizable": "N"
- },
- {
- "Id": "417692167688272",
- "BasicId": "417692167622725",
- "FieldIndex": "13",
- "FieldName": "CreateUser",
- "FieldRemark": "创建人",
- "FieldType": "nvarchar",
- "EffectType": "input",
- "FkEntityName": "",
- "FkColumnId": "",
- "FkColumnName": "",
- "DictTypeCode": "",
- "Width": "100",
- "WhetherTable": "N",
- "WhetherRetract": "N",
- "WhetherAddUpdate": "N",
- "WhetherRequired": "N",
- "QueryWhether": "N",
- "QueryType": "",
- "SortCode": "99",
- "CreateTime": "2023-5-15 16:53:48.897",
- "UpdateTime": "2023-5-17 08:36:41.87",
- "CreateUserId": "212725263002001",
- "UpdateUserId": "212725263002001",
- "IsDelete": "0",
- "ExtJson": "",
- "IsPrimarykey": "N",
- "FieldNetType": "string",
- "CreateUser": "superAdmin",
- "UpdateUser": "superAdmin",
- "WhetherImportExport": "N",
- "WhetherResizable": "N"
- },
- {
- "Id": "417692167688273",
- "BasicId": "417692167622725",
- "FieldIndex": "14",
- "FieldName": "UpdateUser",
- "FieldRemark": "更新人",
- "FieldType": "nvarchar",
- "EffectType": "input",
- "FkEntityName": "",
- "FkColumnId": "",
- "FkColumnName": "",
- "DictTypeCode": "",
- "Width": "100",
- "WhetherTable": "N",
- "WhetherRetract": "N",
- "WhetherAddUpdate": "N",
- "WhetherRequired": "N",
- "QueryWhether": "N",
- "QueryType": "",
- "SortCode": "99",
- "CreateTime": "2023-5-15 16:53:48.897",
- "UpdateTime": "2023-5-17 08:36:41.87",
- "CreateUserId": "212725263002001",
- "UpdateUserId": "212725263002001",
- "IsDelete": "0",
- "ExtJson": "",
- "IsPrimarykey": "N",
- "FieldNetType": "string",
- "CreateUser": "superAdmin",
- "UpdateUser": "superAdmin",
- "WhetherImportExport": "N",
- "WhetherResizable": "N"
- },
- {
- "Id": "417692167688274",
- "BasicId": "417692167622725",
- "FieldIndex": "15",
- "FieldName": "IsDelete",
- "FieldRemark": "软删除",
- "FieldType": "bit",
- "EffectType": "input",
- "FkEntityName": "",
- "FkColumnId": "",
- "FkColumnName": "",
- "DictTypeCode": "",
- "Width": "100",
- "WhetherTable": "N",
- "WhetherRetract": "N",
- "WhetherAddUpdate": "N",
- "WhetherRequired": "N",
- "QueryWhether": "N",
- "QueryType": "",
- "SortCode": "99",
- "CreateTime": "2023-5-15 16:53:48.897",
- "UpdateTime": "",
- "CreateUserId": "212725263002001",
- "UpdateUserId": "",
- "IsDelete": "0",
- "ExtJson": "",
- "IsPrimarykey": "N",
- "FieldNetType": "bool",
- "CreateUser": "superAdmin",
- "UpdateUser": "",
- "WhetherImportExport": "N",
- "WhetherResizable": "N"
- },
- {
- "Id": "417692167688275",
- "BasicId": "417692167622725",
- "FieldIndex": "16",
- "FieldName": "ExtJson",
- "FieldRemark": "扩展信息",
- "FieldType": "nvarchar",
- "EffectType": "input",
- "FkEntityName": "",
- "FkColumnId": "",
- "FkColumnName": "",
- "DictTypeCode": "",
- "Width": "100",
- "WhetherTable": "N",
- "WhetherRetract": "N",
- "WhetherAddUpdate": "N",
- "WhetherRequired": "N",
- "QueryWhether": "N",
- "QueryType": "",
- "SortCode": "99",
- "CreateTime": "2023-5-15 16:53:48.897",
- "UpdateTime": "2023-5-17 08:36:41.87",
- "CreateUserId": "212725263002001",
- "UpdateUserId": "212725263002001",
- "IsDelete": "0",
- "ExtJson": "",
- "IsPrimarykey": "N",
- "FieldNetType": "string",
- "CreateUser": "superAdmin",
- "UpdateUser": "superAdmin",
- "WhetherImportExport": "N",
- "WhetherResizable": "N"
- },
- {
- "Id": "417692167688276",
- "BasicId": "417692167622725",
- "FieldIndex": "6",
- "FieldName": "Money",
- "FieldRemark": "存款",
- "FieldType": "decimal",
- "EffectType": "input",
- "FkEntityName": "",
- "FkColumnId": "",
- "FkColumnName": "",
- "DictTypeCode": "",
- "Width": "100",
- "WhetherTable": "Y",
- "WhetherRetract": "N",
- "WhetherAddUpdate": "Y",
- "WhetherRequired": "N",
- "QueryWhether": "N",
- "QueryType": "",
- "SortCode": "16",
- "CreateTime": "2023-5-15 16:53:48.897",
- "UpdateTime": "2023-5-17 08:36:41.87",
- "CreateUserId": "212725263002001",
- "UpdateUserId": "212725263002001",
- "IsDelete": "0",
- "ExtJson": "",
- "IsPrimarykey": "N",
- "FieldNetType": "decimal",
- "CreateUser": "superAdmin",
- "UpdateUser": "superAdmin",
- "WhetherImportExport": "Y",
- "WhetherResizable": "N"
- },
- {
- "Id": "418032046575685",
- "BasicId": "418032046346309",
- "FieldIndex": "0",
- "FieldName": "Avatar",
- "FieldRemark": "头像",
- "FieldType": "nvarchar",
- "EffectType": "image",
- "FkEntityName": "",
- "FkColumnId": "",
- "FkColumnName": "",
- "DictTypeCode": "GENDER",
- "Width": "100",
- "WhetherTable": "Y",
- "WhetherRetract": "N",
- "WhetherAddUpdate": "N",
- "WhetherRequired": "N",
- "QueryWhether": "Y",
- "QueryType": "like",
- "SortCode": "1",
- "CreateTime": "2023-5-16 15:56:47.14",
- "UpdateTime": "2023-5-17 16:06:21.793",
- "CreateUserId": "212725263002001",
- "UpdateUserId": "212725263002001",
- "IsDelete": "0",
- "ExtJson": "",
- "IsPrimarykey": "N",
- "FieldNetType": "string",
- "CreateUser": "superAdmin",
- "UpdateUser": "superAdmin",
- "WhetherImportExport": "N",
- "WhetherResizable": "N"
- },
- {
- "Id": "418032046587973",
- "BasicId": "418032046346309",
- "FieldIndex": "1",
- "FieldName": "Signature",
- "FieldRemark": "签名",
- "FieldType": "nvarchar",
- "EffectType": "input",
- "FkEntityName": "",
- "FkColumnId": "",
- "FkColumnName": "",
- "DictTypeCode": "",
- "Width": "100",
- "WhetherTable": "N",
- "WhetherRetract": "N",
- "WhetherAddUpdate": "N",
- "WhetherRequired": "N",
- "QueryWhether": "N",
- "QueryType": "",
- "SortCode": "2",
- "CreateTime": "2023-5-16 15:56:47.143",
- "UpdateTime": "2023-5-17 16:06:21.793",
- "CreateUserId": "212725263002001",
- "UpdateUserId": "212725263002001",
- "IsDelete": "0",
- "ExtJson": "",
- "IsPrimarykey": "N",
- "FieldNetType": "string",
- "CreateUser": "superAdmin",
- "UpdateUser": "superAdmin",
- "WhetherImportExport": "N",
- "WhetherResizable": "N"
- },
- {
- "Id": "418032046587974",
- "BasicId": "418032046346309",
- "FieldIndex": "2",
- "FieldName": "Account",
- "FieldRemark": "账号",
- "FieldType": "nvarchar",
- "EffectType": "input",
- "FkEntityName": "",
- "FkColumnId": "",
- "FkColumnName": "",
- "DictTypeCode": "",
- "Width": "100",
- "WhetherTable": "Y",
- "WhetherRetract": "N",
- "WhetherAddUpdate": "Y",
- "WhetherRequired": "N",
- "QueryWhether": "N",
- "QueryType": "",
- "SortCode": "3",
- "CreateTime": "2023-5-16 15:56:47.143",
- "UpdateTime": "2023-5-17 16:06:21.793",
- "CreateUserId": "212725263002001",
- "UpdateUserId": "212725263002001",
- "IsDelete": "0",
- "ExtJson": "",
- "IsPrimarykey": "N",
- "FieldNetType": "string",
- "CreateUser": "superAdmin",
- "UpdateUser": "superAdmin",
- "WhetherImportExport": "Y",
- "WhetherResizable": "Y"
- },
- {
- "Id": "418032046587975",
- "BasicId": "418032046346309",
- "FieldIndex": "3",
- "FieldName": "Password",
- "FieldRemark": "密码",
- "FieldType": "nvarchar",
- "EffectType": "input",
- "FkEntityName": "",
- "FkColumnId": "",
- "FkColumnName": "",
- "DictTypeCode": "",
- "Width": "100",
- "WhetherTable": "Y",
- "WhetherRetract": "Y",
- "WhetherAddUpdate": "Y",
- "WhetherRequired": "N",
- "QueryWhether": "N",
- "QueryType": "",
- "SortCode": "4",
- "CreateTime": "2023-5-16 15:56:47.143",
- "UpdateTime": "2023-5-17 16:06:21.793",
- "CreateUserId": "212725263002001",
- "UpdateUserId": "212725263002001",
- "IsDelete": "0",
- "ExtJson": "",
- "IsPrimarykey": "N",
- "FieldNetType": "string",
- "CreateUser": "superAdmin",
- "UpdateUser": "superAdmin",
- "WhetherImportExport": "Y",
- "WhetherResizable": "N"
- },
- {
- "Id": "418032046587976",
- "BasicId": "418032046346309",
- "FieldIndex": "4",
- "FieldName": "Name",
- "FieldRemark": "姓名",
- "FieldType": "nvarchar",
- "EffectType": "input",
- "FkEntityName": "",
- "FkColumnId": "",
- "FkColumnName": "",
- "DictTypeCode": "",
- "Width": "100",
- "WhetherTable": "Y",
- "WhetherRetract": "N",
- "WhetherAddUpdate": "Y",
- "WhetherRequired": "N",
- "QueryWhether": "N",
- "QueryType": "",
- "SortCode": "5",
- "CreateTime": "2023-5-16 15:56:47.143",
- "UpdateTime": "2023-5-17 16:06:21.793",
- "CreateUserId": "212725263002001",
- "UpdateUserId": "212725263002001",
- "IsDelete": "0",
- "ExtJson": "",
- "IsPrimarykey": "N",
- "FieldNetType": "string",
- "CreateUser": "superAdmin",
- "UpdateUser": "superAdmin",
- "WhetherImportExport": "Y",
- "WhetherResizable": "N"
- },
- {
- "Id": "418032046587977",
- "BasicId": "418032046346309",
- "FieldIndex": "5",
- "FieldName": "Nickname",
- "FieldRemark": "昵称",
- "FieldType": "nvarchar",
- "EffectType": "input",
- "FkEntityName": "",
- "FkColumnId": "",
- "FkColumnName": "",
- "DictTypeCode": "",
- "Width": "100",
- "WhetherTable": "Y",
- "WhetherRetract": "N",
- "WhetherAddUpdate": "Y",
- "WhetherRequired": "N",
- "QueryWhether": "N",
- "QueryType": "",
- "SortCode": "6",
- "CreateTime": "2023-5-16 15:56:47.143",
- "UpdateTime": "2023-5-17 16:06:21.793",
- "CreateUserId": "212725263002001",
- "UpdateUserId": "212725263002001",
- "IsDelete": "0",
- "ExtJson": "",
- "IsPrimarykey": "N",
- "FieldNetType": "string",
- "CreateUser": "superAdmin",
- "UpdateUser": "superAdmin",
- "WhetherImportExport": "Y",
- "WhetherResizable": "N"
- },
- {
- "Id": "418032046587978",
- "BasicId": "418032046346309",
- "FieldIndex": "6",
- "FieldName": "Gender",
- "FieldRemark": "性别",
- "FieldType": "nvarchar",
- "EffectType": "input",
- "FkEntityName": "",
- "FkColumnId": "",
- "FkColumnName": "",
- "DictTypeCode": "",
- "Width": "100",
- "WhetherTable": "Y",
- "WhetherRetract": "N",
- "WhetherAddUpdate": "Y",
- "WhetherRequired": "N",
- "QueryWhether": "N",
- "QueryType": "",
- "SortCode": "7",
- "CreateTime": "2023-5-16 15:56:47.143",
- "UpdateTime": "2023-5-17 16:06:21.793",
- "CreateUserId": "212725263002001",
- "UpdateUserId": "212725263002001",
- "IsDelete": "0",
- "ExtJson": "",
- "IsPrimarykey": "N",
- "FieldNetType": "string",
- "CreateUser": "superAdmin",
- "UpdateUser": "superAdmin",
- "WhetherImportExport": "Y",
- "WhetherResizable": "N"
- },
- {
- "Id": "418032046587979",
- "BasicId": "418032046346309",
- "FieldIndex": "7",
- "FieldName": "Birthday",
- "FieldRemark": "出生日期",
- "FieldType": "nvarchar",
- "EffectType": "input",
- "FkEntityName": "",
- "FkColumnId": "",
- "FkColumnName": "",
- "DictTypeCode": "",
- "Width": "100",
- "WhetherTable": "Y",
- "WhetherRetract": "N",
- "WhetherAddUpdate": "Y",
- "WhetherRequired": "N",
- "QueryWhether": "N",
- "QueryType": "",
- "SortCode": "8",
- "CreateTime": "2023-5-16 15:56:47.143",
- "UpdateTime": "2023-5-17 16:06:21.793",
- "CreateUserId": "212725263002001",
- "UpdateUserId": "212725263002001",
- "IsDelete": "0",
- "ExtJson": "",
- "IsPrimarykey": "N",
- "FieldNetType": "string",
- "CreateUser": "superAdmin",
- "UpdateUser": "superAdmin",
- "WhetherImportExport": "Y",
- "WhetherResizable": "N"
- },
- {
- "Id": "418032046587980",
- "BasicId": "418032046346309",
- "FieldIndex": "8",
- "FieldName": "Nation",
- "FieldRemark": "民族",
- "FieldType": "nvarchar",
- "EffectType": "input",
- "FkEntityName": "",
- "FkColumnId": "",
- "FkColumnName": "",
- "DictTypeCode": "",
- "Width": "100",
- "WhetherTable": "Y",
- "WhetherRetract": "N",
- "WhetherAddUpdate": "Y",
- "WhetherRequired": "N",
- "QueryWhether": "N",
- "QueryType": "",
- "SortCode": "9",
- "CreateTime": "2023-5-16 15:56:47.143",
- "UpdateTime": "2023-5-17 16:06:21.793",
- "CreateUserId": "212725263002001",
- "UpdateUserId": "212725263002001",
- "IsDelete": "0",
- "ExtJson": "",
- "IsPrimarykey": "N",
- "FieldNetType": "string",
- "CreateUser": "superAdmin",
- "UpdateUser": "superAdmin",
- "WhetherImportExport": "Y",
- "WhetherResizable": "N"
- },
- {
- "Id": "418032046587981",
- "BasicId": "418032046346309",
- "FieldIndex": "9",
- "FieldName": "HomeAddress",
- "FieldRemark": "家庭住址",
- "FieldType": "nvarchar",
- "EffectType": "input",
- "FkEntityName": "",
- "FkColumnId": "",
- "FkColumnName": "",
- "DictTypeCode": "",
- "Width": "100",
- "WhetherTable": "Y",
- "WhetherRetract": "N",
- "WhetherAddUpdate": "Y",
- "WhetherRequired": "N",
- "QueryWhether": "N",
- "QueryType": "",
- "SortCode": "10",
- "CreateTime": "2023-5-16 15:56:47.143",
- "UpdateTime": "2023-5-17 16:06:21.793",
- "CreateUserId": "212725263002001",
- "UpdateUserId": "212725263002001",
- "IsDelete": "0",
- "ExtJson": "",
- "IsPrimarykey": "N",
- "FieldNetType": "string",
- "CreateUser": "superAdmin",
- "UpdateUser": "superAdmin",
- "WhetherImportExport": "Y",
- "WhetherResizable": "N"
- },
- {
- "Id": "418032046587982",
- "BasicId": "418032046346309",
- "FieldIndex": "10",
- "FieldName": "MailingAddress",
- "FieldRemark": "通信地址",
- "FieldType": "nvarchar",
- "EffectType": "input",
- "FkEntityName": "",
- "FkColumnId": "",
- "FkColumnName": "",
- "DictTypeCode": "",
- "Width": "100",
- "WhetherTable": "Y",
- "WhetherRetract": "N",
- "WhetherAddUpdate": "Y",
- "WhetherRequired": "N",
- "QueryWhether": "N",
- "QueryType": "",
- "SortCode": "11",
- "CreateTime": "2023-5-16 15:56:47.143",
- "UpdateTime": "2023-5-17 16:06:21.793",
- "CreateUserId": "212725263002001",
- "UpdateUserId": "212725263002001",
- "IsDelete": "0",
- "ExtJson": "",
- "IsPrimarykey": "N",
- "FieldNetType": "string",
- "CreateUser": "superAdmin",
- "UpdateUser": "superAdmin",
- "WhetherImportExport": "Y",
- "WhetherResizable": "N"
- },
- {
- "Id": "418032046587983",
- "BasicId": "418032046346309",
- "FieldIndex": "11",
- "FieldName": "IdCardType",
- "FieldRemark": "证件类型",
- "FieldType": "nvarchar",
- "EffectType": "input",
- "FkEntityName": "",
- "FkColumnId": "",
- "FkColumnName": "",
- "DictTypeCode": "",
- "Width": "100",
- "WhetherTable": "Y",
- "WhetherRetract": "N",
- "WhetherAddUpdate": "Y",
- "WhetherRequired": "N",
- "QueryWhether": "N",
- "QueryType": "",
- "SortCode": "12",
- "CreateTime": "2023-5-16 15:56:47.143",
- "UpdateTime": "2023-5-17 16:06:21.793",
- "CreateUserId": "212725263002001",
- "UpdateUserId": "212725263002001",
- "IsDelete": "0",
- "ExtJson": "",
- "IsPrimarykey": "N",
- "FieldNetType": "string",
- "CreateUser": "superAdmin",
- "UpdateUser": "superAdmin",
- "WhetherImportExport": "Y",
- "WhetherResizable": "N"
- },
- {
- "Id": "418032046587984",
- "BasicId": "418032046346309",
- "FieldIndex": "12",
- "FieldName": "IdCardNumber",
- "FieldRemark": "证件号码",
- "FieldType": "nvarchar",
- "EffectType": "input",
- "FkEntityName": "",
- "FkColumnId": "",
- "FkColumnName": "",
- "DictTypeCode": "",
- "Width": "100",
- "WhetherTable": "Y",
- "WhetherRetract": "N",
- "WhetherAddUpdate": "Y",
- "WhetherRequired": "N",
- "QueryWhether": "N",
- "QueryType": "",
- "SortCode": "13",
- "CreateTime": "2023-5-16 15:56:47.143",
- "UpdateTime": "2023-5-17 16:06:21.793",
- "CreateUserId": "212725263002001",
- "UpdateUserId": "212725263002001",
- "IsDelete": "0",
- "ExtJson": "",
- "IsPrimarykey": "N",
- "FieldNetType": "string",
- "CreateUser": "superAdmin",
- "UpdateUser": "superAdmin",
- "WhetherImportExport": "Y",
- "WhetherResizable": "N"
- },
- {
- "Id": "418032046587985",
- "BasicId": "418032046346309",
- "FieldIndex": "13",
- "FieldName": "CultureLevel",
- "FieldRemark": "文化程度",
- "FieldType": "nvarchar",
- "EffectType": "input",
- "FkEntityName": "",
- "FkColumnId": "",
- "FkColumnName": "",
- "DictTypeCode": "",
- "Width": "100",
- "WhetherTable": "Y",
- "WhetherRetract": "N",
- "WhetherAddUpdate": "Y",
- "WhetherRequired": "N",
- "QueryWhether": "N",
- "QueryType": "",
- "SortCode": "14",
- "CreateTime": "2023-5-16 15:56:47.143",
- "UpdateTime": "2023-5-17 16:06:21.793",
- "CreateUserId": "212725263002001",
- "UpdateUserId": "212725263002001",
- "IsDelete": "0",
- "ExtJson": "",
- "IsPrimarykey": "N",
- "FieldNetType": "string",
- "CreateUser": "superAdmin",
- "UpdateUser": "superAdmin",
- "WhetherImportExport": "Y",
- "WhetherResizable": "N"
- },
- {
- "Id": "418032046587986",
- "BasicId": "418032046346309",
- "FieldIndex": "14",
- "FieldName": "PoliticalOutlook",
- "FieldRemark": "政治面貌",
- "FieldType": "nvarchar",
- "EffectType": "input",
- "FkEntityName": "",
- "FkColumnId": "",
- "FkColumnName": "",
- "DictTypeCode": "",
- "Width": "100",
- "WhetherTable": "Y",
- "WhetherRetract": "N",
- "WhetherAddUpdate": "Y",
- "WhetherRequired": "N",
- "QueryWhether": "N",
- "QueryType": "",
- "SortCode": "15",
- "CreateTime": "2023-5-16 15:56:47.143",
- "UpdateTime": "2023-5-17 16:06:21.793",
- "CreateUserId": "212725263002001",
- "UpdateUserId": "212725263002001",
- "IsDelete": "0",
- "ExtJson": "",
- "IsPrimarykey": "N",
- "FieldNetType": "string",
- "CreateUser": "superAdmin",
- "UpdateUser": "superAdmin",
- "WhetherImportExport": "Y",
- "WhetherResizable": "N"
- },
- {
- "Id": "418032046587987",
- "BasicId": "418032046346309",
- "FieldIndex": "15",
- "FieldName": "College",
- "FieldRemark": "毕业院校",
- "FieldType": "nvarchar",
- "EffectType": "input",
- "FkEntityName": "",
- "FkColumnId": "",
- "FkColumnName": "",
- "DictTypeCode": "",
- "Width": "100",
- "WhetherTable": "Y",
- "WhetherRetract": "N",
- "WhetherAddUpdate": "Y",
- "WhetherRequired": "N",
- "QueryWhether": "N",
- "QueryType": "",
- "SortCode": "16",
- "CreateTime": "2023-5-16 15:56:47.143",
- "UpdateTime": "2023-5-17 16:06:21.793",
- "CreateUserId": "212725263002001",
- "UpdateUserId": "212725263002001",
- "IsDelete": "0",
- "ExtJson": "",
- "IsPrimarykey": "N",
- "FieldNetType": "string",
- "CreateUser": "superAdmin",
- "UpdateUser": "superAdmin",
- "WhetherImportExport": "Y",
- "WhetherResizable": "N"
- },
- {
- "Id": "418032046587988",
- "BasicId": "418032046346309",
- "FieldIndex": "16",
- "FieldName": "Education",
- "FieldRemark": "学历",
- "FieldType": "nvarchar",
- "EffectType": "input",
- "FkEntityName": "",
- "FkColumnId": "",
- "FkColumnName": "",
- "DictTypeCode": "",
- "Width": "100",
- "WhetherTable": "Y",
- "WhetherRetract": "N",
- "WhetherAddUpdate": "Y",
- "WhetherRequired": "N",
- "QueryWhether": "N",
- "QueryType": "",
- "SortCode": "17",
- "CreateTime": "2023-5-16 15:56:47.143",
- "UpdateTime": "2023-5-17 16:06:21.793",
- "CreateUserId": "212725263002001",
- "UpdateUserId": "212725263002001",
- "IsDelete": "0",
- "ExtJson": "",
- "IsPrimarykey": "N",
- "FieldNetType": "string",
- "CreateUser": "superAdmin",
- "UpdateUser": "superAdmin",
- "WhetherImportExport": "Y",
- "WhetherResizable": "N"
- },
- {
- "Id": "418032046587989",
- "BasicId": "418032046346309",
- "FieldIndex": "17",
- "FieldName": "EduLength",
- "FieldRemark": "学制",
- "FieldType": "nvarchar",
- "EffectType": "input",
- "FkEntityName": "",
- "FkColumnId": "",
- "FkColumnName": "",
- "DictTypeCode": "",
- "Width": "100",
- "WhetherTable": "Y",
- "WhetherRetract": "N",
- "WhetherAddUpdate": "Y",
- "WhetherRequired": "N",
- "QueryWhether": "N",
- "QueryType": "",
- "SortCode": "18",
- "CreateTime": "2023-5-16 15:56:47.143",
- "UpdateTime": "2023-5-17 16:06:21.793",
- "CreateUserId": "212725263002001",
- "UpdateUserId": "212725263002001",
- "IsDelete": "0",
- "ExtJson": "",
- "IsPrimarykey": "N",
- "FieldNetType": "string",
- "CreateUser": "superAdmin",
- "UpdateUser": "superAdmin",
- "WhetherImportExport": "Y",
- "WhetherResizable": "N"
- },
- {
- "Id": "418032046587990",
- "BasicId": "418032046346309",
- "FieldIndex": "18",
- "FieldName": "Degree",
- "FieldRemark": "学位",
- "FieldType": "nvarchar",
- "EffectType": "input",
- "FkEntityName": "",
- "FkColumnId": "",
- "FkColumnName": "",
- "DictTypeCode": "",
- "Width": "100",
- "WhetherTable": "Y",
- "WhetherRetract": "N",
- "WhetherAddUpdate": "Y",
- "WhetherRequired": "N",
- "QueryWhether": "N",
- "QueryType": "",
- "SortCode": "19",
- "CreateTime": "2023-5-16 15:56:47.143",
- "UpdateTime": "2023-5-17 16:06:21.793",
- "CreateUserId": "212725263002001",
- "UpdateUserId": "212725263002001",
- "IsDelete": "0",
- "ExtJson": "",
- "IsPrimarykey": "N",
- "FieldNetType": "string",
- "CreateUser": "superAdmin",
- "UpdateUser": "superAdmin",
- "WhetherImportExport": "Y",
- "WhetherResizable": "N"
- },
- {
- "Id": "418032046587991",
- "BasicId": "418032046346309",
- "FieldIndex": "19",
- "FieldName": "Phone",
- "FieldRemark": "手机",
- "FieldType": "nvarchar",
- "EffectType": "input",
- "FkEntityName": "",
- "FkColumnId": "",
- "FkColumnName": "",
- "DictTypeCode": "",
- "Width": "100",
- "WhetherTable": "Y",
- "WhetherRetract": "N",
- "WhetherAddUpdate": "Y",
- "WhetherRequired": "N",
- "QueryWhether": "N",
- "QueryType": "",
- "SortCode": "20",
- "CreateTime": "2023-5-16 15:56:47.143",
- "UpdateTime": "2023-5-17 16:06:21.793",
- "CreateUserId": "212725263002001",
- "UpdateUserId": "212725263002001",
- "IsDelete": "0",
- "ExtJson": "",
- "IsPrimarykey": "N",
- "FieldNetType": "string",
- "CreateUser": "superAdmin",
- "UpdateUser": "superAdmin",
- "WhetherImportExport": "Y",
- "WhetherResizable": "N"
- },
- {
- "Id": "418032046587992",
- "BasicId": "418032046346309",
- "FieldIndex": "20",
- "FieldName": "Email",
- "FieldRemark": "邮箱",
- "FieldType": "nvarchar",
- "EffectType": "input",
- "FkEntityName": "",
- "FkColumnId": "",
- "FkColumnName": "",
- "DictTypeCode": "",
- "Width": "100",
- "WhetherTable": "Y",
- "WhetherRetract": "N",
- "WhetherAddUpdate": "Y",
- "WhetherRequired": "N",
- "QueryWhether": "N",
- "QueryType": "",
- "SortCode": "21",
- "CreateTime": "2023-5-16 15:56:47.143",
- "UpdateTime": "2023-5-17 16:06:21.793",
- "CreateUserId": "212725263002001",
- "UpdateUserId": "212725263002001",
- "IsDelete": "0",
- "ExtJson": "",
- "IsPrimarykey": "N",
- "FieldNetType": "string",
- "CreateUser": "superAdmin",
- "UpdateUser": "superAdmin",
- "WhetherImportExport": "Y",
- "WhetherResizable": "N"
- },
- {
- "Id": "418032046592069",
- "BasicId": "418032046346309",
- "FieldIndex": "21",
- "FieldName": "HomeTel",
- "FieldRemark": "家庭电话",
- "FieldType": "nvarchar",
- "EffectType": "input",
- "FkEntityName": "",
- "FkColumnId": "",
- "FkColumnName": "",
- "DictTypeCode": "",
- "Width": "100",
- "WhetherTable": "Y",
- "WhetherRetract": "N",
- "WhetherAddUpdate": "Y",
- "WhetherRequired": "N",
- "QueryWhether": "N",
- "QueryType": "",
- "SortCode": "22",
- "CreateTime": "2023-5-16 15:56:47.143",
- "UpdateTime": "2023-5-17 16:06:21.793",
- "CreateUserId": "212725263002001",
- "UpdateUserId": "212725263002001",
- "IsDelete": "0",
- "ExtJson": "",
- "IsPrimarykey": "N",
- "FieldNetType": "string",
- "CreateUser": "superAdmin",
- "UpdateUser": "superAdmin",
- "WhetherImportExport": "Y",
- "WhetherResizable": "N"
- },
- {
- "Id": "418032046592070",
- "BasicId": "418032046346309",
- "FieldIndex": "22",
- "FieldName": "OfficeTel",
- "FieldRemark": "办公电话",
- "FieldType": "nvarchar",
- "EffectType": "input",
- "FkEntityName": "",
- "FkColumnId": "",
- "FkColumnName": "",
- "DictTypeCode": "",
- "Width": "100",
- "WhetherTable": "Y",
- "WhetherRetract": "N",
- "WhetherAddUpdate": "Y",
- "WhetherRequired": "N",
- "QueryWhether": "N",
- "QueryType": "",
- "SortCode": "23",
- "CreateTime": "2023-5-16 15:56:47.147",
- "UpdateTime": "2023-5-17 16:06:21.793",
- "CreateUserId": "212725263002001",
- "UpdateUserId": "212725263002001",
- "IsDelete": "0",
- "ExtJson": "",
- "IsPrimarykey": "N",
- "FieldNetType": "string",
- "CreateUser": "superAdmin",
- "UpdateUser": "superAdmin",
- "WhetherImportExport": "Y",
- "WhetherResizable": "N"
- },
- {
- "Id": "418032046592071",
- "BasicId": "418032046346309",
- "FieldIndex": "23",
- "FieldName": "EmergencyPhone",
- "FieldRemark": "紧急联系人电话",
- "FieldType": "nvarchar",
- "EffectType": "input",
- "FkEntityName": "",
- "FkColumnId": "",
- "FkColumnName": "",
- "DictTypeCode": "",
- "Width": "100",
- "WhetherTable": "Y",
- "WhetherRetract": "N",
- "WhetherAddUpdate": "Y",
- "WhetherRequired": "N",
- "QueryWhether": "N",
- "QueryType": "",
- "SortCode": "24",
- "CreateTime": "2023-5-16 15:56:47.147",
- "UpdateTime": "2023-5-17 16:06:21.793",
- "CreateUserId": "212725263002001",
- "UpdateUserId": "212725263002001",
- "IsDelete": "0",
- "ExtJson": "",
- "IsPrimarykey": "N",
- "FieldNetType": "string",
- "CreateUser": "superAdmin",
- "UpdateUser": "superAdmin",
- "WhetherImportExport": "Y",
- "WhetherResizable": "N"
- },
- {
- "Id": "418032046592072",
- "BasicId": "418032046346309",
- "FieldIndex": "24",
- "FieldName": "EmergencyAddress",
- "FieldRemark": "紧急联系人地址",
- "FieldType": "nvarchar",
- "EffectType": "input",
- "FkEntityName": "",
- "FkColumnId": "",
- "FkColumnName": "",
- "DictTypeCode": "",
- "Width": "100",
- "WhetherTable": "Y",
- "WhetherRetract": "N",
- "WhetherAddUpdate": "Y",
- "WhetherRequired": "N",
- "QueryWhether": "N",
- "QueryType": "",
- "SortCode": "25",
- "CreateTime": "2023-5-16 15:56:47.147",
- "UpdateTime": "2023-5-17 16:06:21.793",
- "CreateUserId": "212725263002001",
- "UpdateUserId": "212725263002001",
- "IsDelete": "0",
- "ExtJson": "",
- "IsPrimarykey": "N",
- "FieldNetType": "string",
- "CreateUser": "superAdmin",
- "UpdateUser": "superAdmin",
- "WhetherImportExport": "Y",
- "WhetherResizable": "N"
- },
- {
- "Id": "418032046592073",
- "BasicId": "418032046346309",
- "FieldIndex": "25",
- "FieldName": "EmpNo",
- "FieldRemark": "员工编号",
- "FieldType": "nvarchar",
- "EffectType": "input",
- "FkEntityName": "",
- "FkColumnId": "",
- "FkColumnName": "",
- "DictTypeCode": "",
- "Width": "100",
- "WhetherTable": "Y",
- "WhetherRetract": "N",
- "WhetherAddUpdate": "Y",
- "WhetherRequired": "N",
- "QueryWhether": "N",
- "QueryType": "",
- "SortCode": "26",
- "CreateTime": "2023-5-16 15:56:47.147",
- "UpdateTime": "2023-5-17 16:06:21.793",
- "CreateUserId": "212725263002001",
- "UpdateUserId": "212725263002001",
- "IsDelete": "0",
- "ExtJson": "",
- "IsPrimarykey": "N",
- "FieldNetType": "string",
- "CreateUser": "superAdmin",
- "UpdateUser": "superAdmin",
- "WhetherImportExport": "Y",
- "WhetherResizable": "N"
- },
- {
- "Id": "418032046592074",
- "BasicId": "418032046346309",
- "FieldIndex": "26",
- "FieldName": "EntryDate",
- "FieldRemark": "入职日期",
- "FieldType": "nvarchar",
- "EffectType": "input",
- "FkEntityName": "",
- "FkColumnId": "",
- "FkColumnName": "",
- "DictTypeCode": "",
- "Width": "100",
- "WhetherTable": "Y",
- "WhetherRetract": "N",
- "WhetherAddUpdate": "Y",
- "WhetherRequired": "N",
- "QueryWhether": "N",
- "QueryType": "",
- "SortCode": "27",
- "CreateTime": "2023-5-16 15:56:47.147",
- "UpdateTime": "2023-5-17 16:06:21.793",
- "CreateUserId": "212725263002001",
- "UpdateUserId": "212725263002001",
- "IsDelete": "0",
- "ExtJson": "",
- "IsPrimarykey": "N",
- "FieldNetType": "string",
- "CreateUser": "superAdmin",
- "UpdateUser": "superAdmin",
- "WhetherImportExport": "Y",
- "WhetherResizable": "N"
- },
- {
- "Id": "418032046592075",
- "BasicId": "418032046346309",
- "FieldIndex": "27",
- "FieldName": "OrgId",
- "FieldRemark": "机构id",
- "FieldType": "bigint",
- "EffectType": "fk",
- "FkEntityName": "SysOrg",
- "FkColumnId": "Id",
- "FkColumnName": "Name",
- "DictTypeCode": "",
- "Width": "100",
- "WhetherTable": "Y",
- "WhetherRetract": "N",
- "WhetherAddUpdate": "Y",
- "WhetherRequired": "N",
- "QueryWhether": "N",
- "QueryType": "",
- "SortCode": "28",
- "CreateTime": "2023-5-16 15:56:47.147",
- "UpdateTime": "2023-5-17 16:06:21.793",
- "CreateUserId": "212725263002001",
- "UpdateUserId": "212725263002001",
- "IsDelete": "0",
- "ExtJson": "",
- "IsPrimarykey": "N",
- "FieldNetType": "long",
- "CreateUser": "superAdmin",
- "UpdateUser": "superAdmin",
- "WhetherImportExport": "Y",
- "WhetherResizable": "N"
- },
- {
- "Id": "418032046592076",
- "BasicId": "418032046346309",
- "FieldIndex": "28",
- "FieldName": "PositionId",
- "FieldRemark": "职位id",
- "FieldType": "bigint",
- "EffectType": "input",
- "FkEntityName": "",
- "FkColumnId": "",
- "FkColumnName": "",
- "DictTypeCode": "",
- "Width": "100",
- "WhetherTable": "Y",
- "WhetherRetract": "N",
- "WhetherAddUpdate": "Y",
- "WhetherRequired": "N",
- "QueryWhether": "N",
- "QueryType": "",
- "SortCode": "29",
- "CreateTime": "2023-5-16 15:56:47.147",
- "UpdateTime": "2023-5-17 16:06:21.793",
- "CreateUserId": "212725263002001",
- "UpdateUserId": "212725263002001",
- "IsDelete": "0",
- "ExtJson": "",
- "IsPrimarykey": "N",
- "FieldNetType": "long",
- "CreateUser": "superAdmin",
- "UpdateUser": "superAdmin",
- "WhetherImportExport": "Y",
- "WhetherResizable": "N"
- },
- {
- "Id": "418032046592077",
- "BasicId": "418032046346309",
- "FieldIndex": "29",
- "FieldName": "PositionLevel",
- "FieldRemark": "职级",
- "FieldType": "nvarchar",
- "EffectType": "input",
- "FkEntityName": "",
- "FkColumnId": "",
- "FkColumnName": "",
- "DictTypeCode": "",
- "Width": "100",
- "WhetherTable": "Y",
- "WhetherRetract": "N",
- "WhetherAddUpdate": "Y",
- "WhetherRequired": "N",
- "QueryWhether": "N",
- "QueryType": "",
- "SortCode": "30",
- "CreateTime": "2023-5-16 15:56:47.147",
- "UpdateTime": "2023-5-17 16:06:21.793",
- "CreateUserId": "212725263002001",
- "UpdateUserId": "212725263002001",
- "IsDelete": "0",
- "ExtJson": "",
- "IsPrimarykey": "N",
- "FieldNetType": "string",
- "CreateUser": "superAdmin",
- "UpdateUser": "superAdmin",
- "WhetherImportExport": "Y",
- "WhetherResizable": "N"
- },
- {
- "Id": "418032046592078",
- "BasicId": "418032046346309",
- "FieldIndex": "30",
- "FieldName": "DirectorId",
- "FieldRemark": "主管id",
- "FieldType": "bigint",
- "EffectType": "input",
- "FkEntityName": "",
- "FkColumnId": "",
- "FkColumnName": "",
- "DictTypeCode": "",
- "Width": "100",
- "WhetherTable": "Y",
- "WhetherRetract": "N",
- "WhetherAddUpdate": "Y",
- "WhetherRequired": "N",
- "QueryWhether": "N",
- "QueryType": "",
- "SortCode": "31",
- "CreateTime": "2023-5-16 15:56:47.147",
- "UpdateTime": "2023-5-17 16:06:21.793",
- "CreateUserId": "212725263002001",
- "UpdateUserId": "212725263002001",
- "IsDelete": "0",
- "ExtJson": "",
- "IsPrimarykey": "N",
- "FieldNetType": "long",
- "CreateUser": "superAdmin",
- "UpdateUser": "superAdmin",
- "WhetherImportExport": "Y",
- "WhetherResizable": "N"
- },
- {
- "Id": "418032046592079",
- "BasicId": "418032046346309",
- "FieldIndex": "31",
- "FieldName": "PositionJson",
- "FieldRemark": "兼任信息",
- "FieldType": "nvarchar",
- "EffectType": "input",
- "FkEntityName": "",
- "FkColumnId": "",
- "FkColumnName": "",
- "DictTypeCode": "",
- "Width": "100",
- "WhetherTable": "Y",
- "WhetherRetract": "N",
- "WhetherAddUpdate": "Y",
- "WhetherRequired": "N",
- "QueryWhether": "N",
- "QueryType": "",
- "SortCode": "32",
- "CreateTime": "2023-5-16 15:56:47.147",
- "UpdateTime": "2023-5-17 16:06:21.793",
- "CreateUserId": "212725263002001",
- "UpdateUserId": "212725263002001",
- "IsDelete": "0",
- "ExtJson": "",
- "IsPrimarykey": "N",
- "FieldNetType": "string",
- "CreateUser": "superAdmin",
- "UpdateUser": "superAdmin",
- "WhetherImportExport": "Y",
- "WhetherResizable": "N"
- },
- {
- "Id": "418032046592080",
- "BasicId": "418032046346309",
- "FieldIndex": "32",
- "FieldName": "LastLoginIp",
- "FieldRemark": "上次登录ip",
- "FieldType": "nvarchar",
- "EffectType": "input",
- "FkEntityName": "",
- "FkColumnId": "",
- "FkColumnName": "",
- "DictTypeCode": "",
- "Width": "100",
- "WhetherTable": "Y",
- "WhetherRetract": "N",
- "WhetherAddUpdate": "Y",
- "WhetherRequired": "N",
- "QueryWhether": "N",
- "QueryType": "",
- "SortCode": "33",
- "CreateTime": "2023-5-16 15:56:47.147",
- "UpdateTime": "2023-5-17 16:06:21.797",
- "CreateUserId": "212725263002001",
- "UpdateUserId": "212725263002001",
- "IsDelete": "0",
- "ExtJson": "",
- "IsPrimarykey": "N",
- "FieldNetType": "string",
- "CreateUser": "superAdmin",
- "UpdateUser": "superAdmin",
- "WhetherImportExport": "Y",
- "WhetherResizable": "N"
- },
- {
- "Id": "418032046592081",
- "BasicId": "418032046346309",
- "FieldIndex": "33",
- "FieldName": "LastLoginAddress",
- "FieldRemark": "上次登录地点",
- "FieldType": "nvarchar",
- "EffectType": "input",
- "FkEntityName": "",
- "FkColumnId": "",
- "FkColumnName": "",
- "DictTypeCode": "",
- "Width": "100",
- "WhetherTable": "Y",
- "WhetherRetract": "N",
- "WhetherAddUpdate": "Y",
- "WhetherRequired": "N",
- "QueryWhether": "N",
- "QueryType": "",
- "SortCode": "34",
- "CreateTime": "2023-5-16 15:56:47.147",
- "UpdateTime": "2023-5-17 16:06:21.797",
- "CreateUserId": "212725263002001",
- "UpdateUserId": "212725263002001",
- "IsDelete": "0",
- "ExtJson": "",
- "IsPrimarykey": "N",
- "FieldNetType": "string",
- "CreateUser": "superAdmin",
- "UpdateUser": "superAdmin",
- "WhetherImportExport": "Y",
- "WhetherResizable": "N"
- },
- {
- "Id": "418032046592082",
- "BasicId": "418032046346309",
- "FieldIndex": "34",
- "FieldName": "LastLoginTime",
- "FieldRemark": "上次登录时间",
- "FieldType": "datetime",
- "EffectType": "datepicker",
- "FkEntityName": "",
- "FkColumnId": "",
- "FkColumnName": "",
- "DictTypeCode": "",
- "Width": "100",
- "WhetherTable": "Y",
- "WhetherRetract": "N",
- "WhetherAddUpdate": "Y",
- "WhetherRequired": "N",
- "QueryWhether": "N",
- "QueryType": "",
- "SortCode": "35",
- "CreateTime": "2023-5-16 15:56:47.147",
- "UpdateTime": "2023-5-17 16:06:21.797",
- "CreateUserId": "212725263002001",
- "UpdateUserId": "212725263002001",
- "IsDelete": "0",
- "ExtJson": "",
- "IsPrimarykey": "N",
- "FieldNetType": "DateTime",
- "CreateUser": "superAdmin",
- "UpdateUser": "superAdmin",
- "WhetherImportExport": "Y",
- "WhetherResizable": "N"
- },
- {
- "Id": "418032046592083",
- "BasicId": "418032046346309",
- "FieldIndex": "35",
- "FieldName": "LastLoginDevice",
- "FieldRemark": "上次登录设备",
- "FieldType": "nvarchar",
- "EffectType": "input",
- "FkEntityName": "",
- "FkColumnId": "",
- "FkColumnName": "",
- "DictTypeCode": "",
- "Width": "100",
- "WhetherTable": "Y",
- "WhetherRetract": "N",
- "WhetherAddUpdate": "Y",
- "WhetherRequired": "N",
- "QueryWhether": "N",
- "QueryType": "",
- "SortCode": "36",
- "CreateTime": "2023-5-16 15:56:47.147",
- "UpdateTime": "2023-5-17 16:06:21.797",
- "CreateUserId": "212725263002001",
- "UpdateUserId": "212725263002001",
- "IsDelete": "0",
- "ExtJson": "",
- "IsPrimarykey": "N",
- "FieldNetType": "string",
- "CreateUser": "superAdmin",
- "UpdateUser": "superAdmin",
- "WhetherImportExport": "Y",
- "WhetherResizable": "N"
- },
- {
- "Id": "418032046592084",
- "BasicId": "418032046346309",
- "FieldIndex": "36",
- "FieldName": "LatestLoginIp",
- "FieldRemark": "最新登录ip",
- "FieldType": "nvarchar",
- "EffectType": "input",
- "FkEntityName": "",
- "FkColumnId": "",
- "FkColumnName": "",
- "DictTypeCode": "",
- "Width": "100",
- "WhetherTable": "Y",
- "WhetherRetract": "N",
- "WhetherAddUpdate": "Y",
- "WhetherRequired": "N",
- "QueryWhether": "N",
- "QueryType": "",
- "SortCode": "37",
- "CreateTime": "2023-5-16 15:56:47.147",
- "UpdateTime": "2023-5-17 16:06:21.797",
- "CreateUserId": "212725263002001",
- "UpdateUserId": "212725263002001",
- "IsDelete": "0",
- "ExtJson": "",
- "IsPrimarykey": "N",
- "FieldNetType": "string",
- "CreateUser": "superAdmin",
- "UpdateUser": "superAdmin",
- "WhetherImportExport": "Y",
- "WhetherResizable": "N"
- },
- {
- "Id": "418032046592085",
- "BasicId": "418032046346309",
- "FieldIndex": "37",
- "FieldName": "LatestLoginAddress",
- "FieldRemark": "最新登录地点",
- "FieldType": "nvarchar",
- "EffectType": "input",
- "FkEntityName": "",
- "FkColumnId": "",
- "FkColumnName": "",
- "DictTypeCode": "",
- "Width": "100",
- "WhetherTable": "Y",
- "WhetherRetract": "N",
- "WhetherAddUpdate": "Y",
- "WhetherRequired": "N",
- "QueryWhether": "N",
- "QueryType": "",
- "SortCode": "38",
- "CreateTime": "2023-5-16 15:56:47.147",
- "UpdateTime": "2023-5-17 16:06:21.797",
- "CreateUserId": "212725263002001",
- "UpdateUserId": "212725263002001",
- "IsDelete": "0",
- "ExtJson": "",
- "IsPrimarykey": "N",
- "FieldNetType": "string",
- "CreateUser": "superAdmin",
- "UpdateUser": "superAdmin",
- "WhetherImportExport": "Y",
- "WhetherResizable": "N"
- },
- {
- "Id": "418032046592086",
- "BasicId": "418032046346309",
- "FieldIndex": "38",
- "FieldName": "LatestLoginTime",
- "FieldRemark": "最新登录时间",
- "FieldType": "datetime",
- "EffectType": "datepicker",
- "FkEntityName": "",
- "FkColumnId": "",
- "FkColumnName": "",
- "DictTypeCode": "",
- "Width": "100",
- "WhetherTable": "Y",
- "WhetherRetract": "N",
- "WhetherAddUpdate": "Y",
- "WhetherRequired": "N",
- "QueryWhether": "N",
- "QueryType": "",
- "SortCode": "39",
- "CreateTime": "2023-5-16 15:56:47.147",
- "UpdateTime": "2023-5-17 16:06:21.797",
- "CreateUserId": "212725263002001",
- "UpdateUserId": "212725263002001",
- "IsDelete": "0",
- "ExtJson": "",
- "IsPrimarykey": "N",
- "FieldNetType": "DateTime",
- "CreateUser": "superAdmin",
- "UpdateUser": "superAdmin",
- "WhetherImportExport": "Y",
- "WhetherResizable": "N"
- },
- {
- "Id": "418032046592087",
- "BasicId": "418032046346309",
- "FieldIndex": "39",
- "FieldName": "LatestLoginDevice",
- "FieldRemark": "最新登录设备",
- "FieldType": "nvarchar",
- "EffectType": "input",
- "FkEntityName": "",
- "FkColumnId": "",
- "FkColumnName": "",
- "DictTypeCode": "",
- "Width": "100",
- "WhetherTable": "Y",
- "WhetherRetract": "N",
- "WhetherAddUpdate": "Y",
- "WhetherRequired": "N",
- "QueryWhether": "N",
- "QueryType": "",
- "SortCode": "40",
- "CreateTime": "2023-5-16 15:56:47.147",
- "UpdateTime": "2023-5-17 16:06:21.797",
- "CreateUserId": "212725263002001",
- "UpdateUserId": "212725263002001",
- "IsDelete": "0",
- "ExtJson": "",
- "IsPrimarykey": "N",
- "FieldNetType": "string",
- "CreateUser": "superAdmin",
- "UpdateUser": "superAdmin",
- "WhetherImportExport": "Y",
- "WhetherResizable": "N"
- },
- {
- "Id": "418032046592088",
- "BasicId": "418032046346309",
- "FieldIndex": "40",
- "FieldName": "UserStatus",
- "FieldRemark": "用户状态",
- "FieldType": "nvarchar",
- "EffectType": "input",
- "FkEntityName": "",
- "FkColumnId": "",
- "FkColumnName": "",
- "DictTypeCode": "",
- "Width": "100",
- "WhetherTable": "Y",
- "WhetherRetract": "N",
- "WhetherAddUpdate": "Y",
- "WhetherRequired": "N",
- "QueryWhether": "N",
- "QueryType": "",
- "SortCode": "41",
- "CreateTime": "2023-5-16 15:56:47.147",
- "UpdateTime": "2023-5-17 16:06:21.797",
- "CreateUserId": "212725263002001",
- "UpdateUserId": "212725263002001",
- "IsDelete": "0",
- "ExtJson": "",
- "IsPrimarykey": "N",
- "FieldNetType": "string",
- "CreateUser": "superAdmin",
- "UpdateUser": "superAdmin",
- "WhetherImportExport": "Y",
- "WhetherResizable": "N"
- },
- {
- "Id": "418032046592089",
- "BasicId": "418032046346309",
- "FieldIndex": "41",
- "FieldName": "SortCode",
- "FieldRemark": "排序码",
- "FieldType": "int",
- "EffectType": "input",
- "FkEntityName": "",
- "FkColumnId": "",
- "FkColumnName": "",
- "DictTypeCode": "",
- "Width": "100",
- "WhetherTable": "Y",
- "WhetherRetract": "N",
- "WhetherAddUpdate": "Y",
- "WhetherRequired": "N",
- "QueryWhether": "N",
- "QueryType": "",
- "SortCode": "42",
- "CreateTime": "2023-5-16 15:56:47.147",
- "UpdateTime": "2023-5-17 16:06:21.797",
- "CreateUserId": "212725263002001",
- "UpdateUserId": "212725263002001",
- "IsDelete": "0",
- "ExtJson": "",
- "IsPrimarykey": "N",
- "FieldNetType": "int",
- "CreateUser": "superAdmin",
- "UpdateUser": "superAdmin",
- "WhetherImportExport": "Y",
- "WhetherResizable": "N"
- },
- {
- "Id": "418032046592090",
- "BasicId": "418032046346309",
- "FieldIndex": "42",
- "FieldName": "NativePlace",
- "FieldRemark": "籍贯",
- "FieldType": "varchar",
- "EffectType": "input",
- "FkEntityName": "",
- "FkColumnId": "",
- "FkColumnName": "",
- "DictTypeCode": "",
- "Width": "100",
- "WhetherTable": "Y",
- "WhetherRetract": "N",
- "WhetherAddUpdate": "Y",
- "WhetherRequired": "N",
- "QueryWhether": "N",
- "QueryType": "",
- "SortCode": "49",
- "CreateTime": "2023-5-16 15:56:47.147",
- "UpdateTime": "2023-5-17 16:06:21.797",
- "CreateUserId": "212725263002001",
- "UpdateUserId": "212725263002001",
- "IsDelete": "0",
- "ExtJson": "",
- "IsPrimarykey": "N",
- "FieldNetType": "string",
- "CreateUser": "superAdmin",
- "UpdateUser": "superAdmin",
- "WhetherImportExport": "Y",
- "WhetherResizable": "N"
- },
- {
- "Id": "418032046592091",
- "BasicId": "418032046346309",
- "FieldIndex": "43",
- "FieldName": "EmergencyContact",
- "FieldRemark": "紧急联系人",
- "FieldType": "varchar",
- "EffectType": "input",
- "FkEntityName": "",
- "FkColumnId": "",
- "FkColumnName": "",
- "DictTypeCode": "",
- "Width": "100",
- "WhetherTable": "Y",
- "WhetherRetract": "N",
- "WhetherAddUpdate": "Y",
- "WhetherRequired": "N",
- "QueryWhether": "N",
- "QueryType": "",
- "SortCode": "50",
- "CreateTime": "2023-5-16 15:56:47.147",
- "UpdateTime": "2023-5-17 16:06:21.797",
- "CreateUserId": "212725263002001",
- "UpdateUserId": "212725263002001",
- "IsDelete": "0",
- "ExtJson": "",
- "IsPrimarykey": "N",
- "FieldNetType": "string",
- "CreateUser": "superAdmin",
- "UpdateUser": "superAdmin",
- "WhetherImportExport": "Y",
- "WhetherResizable": "N"
- },
- {
- "Id": "418032046592092",
- "BasicId": "418032046346309",
- "FieldIndex": "44",
- "FieldName": "Id",
- "FieldRemark": "Id",
- "FieldType": "bigint",
- "EffectType": "input",
- "FkEntityName": "",
- "FkColumnId": "",
- "FkColumnName": "",
- "DictTypeCode": "",
- "Width": "100",
- "WhetherTable": "N",
- "WhetherRetract": "N",
- "WhetherAddUpdate": "N",
- "WhetherRequired": "N",
- "QueryWhether": "N",
- "QueryType": "",
- "SortCode": "99",
- "CreateTime": "2023-5-16 15:56:47.147",
- "UpdateTime": "",
- "CreateUserId": "212725263002001",
- "UpdateUserId": "",
- "IsDelete": "0",
- "ExtJson": "",
- "IsPrimarykey": "Y",
- "FieldNetType": "long",
- "CreateUser": "superAdmin",
- "UpdateUser": "",
- "WhetherImportExport": "N",
- "WhetherResizable": "N"
- },
- {
- "Id": "418032046592093",
- "BasicId": "418032046346309",
- "FieldIndex": "45",
- "FieldName": "CreateTime",
- "FieldRemark": "创建时间",
- "FieldType": "datetime",
- "EffectType": "datepicker",
- "FkEntityName": "",
- "FkColumnId": "",
- "FkColumnName": "",
- "DictTypeCode": "",
- "Width": "100",
- "WhetherTable": "N",
- "WhetherRetract": "N",
- "WhetherAddUpdate": "N",
- "WhetherRequired": "N",
- "QueryWhether": "N",
- "QueryType": "",
- "SortCode": "99",
- "CreateTime": "2023-5-16 15:56:47.147",
- "UpdateTime": "2023-5-17 16:06:21.797",
- "CreateUserId": "212725263002001",
- "UpdateUserId": "212725263002001",
- "IsDelete": "0",
- "ExtJson": "",
- "IsPrimarykey": "N",
- "FieldNetType": "DateTime",
- "CreateUser": "superAdmin",
- "UpdateUser": "superAdmin",
- "WhetherImportExport": "N",
- "WhetherResizable": "N"
- },
- {
- "Id": "418032046592094",
- "BasicId": "418032046346309",
- "FieldIndex": "46",
- "FieldName": "UpdateTime",
- "FieldRemark": "更新时间",
- "FieldType": "datetime",
- "EffectType": "datepicker",
- "FkEntityName": "",
- "FkColumnId": "",
- "FkColumnName": "",
- "DictTypeCode": "",
- "Width": "100",
- "WhetherTable": "N",
- "WhetherRetract": "N",
- "WhetherAddUpdate": "N",
- "WhetherRequired": "N",
- "QueryWhether": "N",
- "QueryType": "",
- "SortCode": "99",
- "CreateTime": "2023-5-16 15:56:47.147",
- "UpdateTime": "2023-5-17 16:06:21.797",
- "CreateUserId": "212725263002001",
- "UpdateUserId": "212725263002001",
- "IsDelete": "0",
- "ExtJson": "",
- "IsPrimarykey": "N",
- "FieldNetType": "DateTime",
- "CreateUser": "superAdmin",
- "UpdateUser": "superAdmin",
- "WhetherImportExport": "N",
- "WhetherResizable": "N"
- },
- {
- "Id": "418032046592095",
- "BasicId": "418032046346309",
- "FieldIndex": "47",
- "FieldName": "CreateUserId",
- "FieldRemark": "创建者Id",
- "FieldType": "bigint",
- "EffectType": "input",
- "FkEntityName": "",
- "FkColumnId": "",
- "FkColumnName": "",
- "DictTypeCode": "",
- "Width": "100",
- "WhetherTable": "N",
- "WhetherRetract": "N",
- "WhetherAddUpdate": "N",
- "WhetherRequired": "N",
- "QueryWhether": "N",
- "QueryType": "",
- "SortCode": "99",
- "CreateTime": "2023-5-16 15:56:47.147",
- "UpdateTime": "",
- "CreateUserId": "212725263002001",
- "UpdateUserId": "",
- "IsDelete": "0",
- "ExtJson": "",
- "IsPrimarykey": "N",
- "FieldNetType": "long",
- "CreateUser": "superAdmin",
- "UpdateUser": "",
- "WhetherImportExport": "N",
- "WhetherResizable": "N"
- },
- {
- "Id": "418032046592096",
- "BasicId": "418032046346309",
- "FieldIndex": "48",
- "FieldName": "UpdateUserId",
- "FieldRemark": "修改者Id",
- "FieldType": "bigint",
- "EffectType": "input",
- "FkEntityName": "",
- "FkColumnId": "",
- "FkColumnName": "",
- "DictTypeCode": "",
- "Width": "100",
- "WhetherTable": "N",
- "WhetherRetract": "N",
- "WhetherAddUpdate": "N",
- "WhetherRequired": "N",
- "QueryWhether": "N",
- "QueryType": "",
- "SortCode": "99",
- "CreateTime": "2023-5-16 15:56:47.147",
- "UpdateTime": "",
- "CreateUserId": "212725263002001",
- "UpdateUserId": "",
- "IsDelete": "0",
- "ExtJson": "",
- "IsPrimarykey": "N",
- "FieldNetType": "long",
- "CreateUser": "superAdmin",
- "UpdateUser": "",
- "WhetherImportExport": "N",
- "WhetherResizable": "N"
- },
- {
- "Id": "418032046592097",
- "BasicId": "418032046346309",
- "FieldIndex": "49",
- "FieldName": "IsDelete",
- "FieldRemark": "软删除",
- "FieldType": "bit",
- "EffectType": "input",
- "FkEntityName": "",
- "FkColumnId": "",
- "FkColumnName": "",
- "DictTypeCode": "",
- "Width": "100",
- "WhetherTable": "N",
- "WhetherRetract": "N",
- "WhetherAddUpdate": "N",
- "WhetherRequired": "N",
- "QueryWhether": "N",
- "QueryType": "",
- "SortCode": "99",
- "CreateTime": "2023-5-16 15:56:47.147",
- "UpdateTime": "",
- "CreateUserId": "212725263002001",
- "UpdateUserId": "",
- "IsDelete": "0",
- "ExtJson": "",
- "IsPrimarykey": "N",
- "FieldNetType": "bool",
- "CreateUser": "superAdmin",
- "UpdateUser": "",
- "WhetherImportExport": "N",
- "WhetherResizable": "N"
- },
- {
- "Id": "418032046592098",
- "BasicId": "418032046346309",
- "FieldIndex": "50",
- "FieldName": "ExtJson",
- "FieldRemark": "扩展信息",
- "FieldType": "nvarchar",
- "EffectType": "input",
- "FkEntityName": "",
- "FkColumnId": "",
- "FkColumnName": "",
- "DictTypeCode": "",
- "Width": "100",
- "WhetherTable": "N",
- "WhetherRetract": "N",
- "WhetherAddUpdate": "N",
- "WhetherRequired": "N",
- "QueryWhether": "N",
- "QueryType": "",
- "SortCode": "99",
- "CreateTime": "2023-5-16 15:56:47.147",
- "UpdateTime": "2023-5-17 16:06:21.797",
- "CreateUserId": "212725263002001",
- "UpdateUserId": "212725263002001",
- "IsDelete": "0",
- "ExtJson": "",
- "IsPrimarykey": "N",
- "FieldNetType": "string",
- "CreateUser": "superAdmin",
- "UpdateUser": "superAdmin",
- "WhetherImportExport": "N",
- "WhetherResizable": "N"
- },
- {
- "Id": "418032046592099",
- "BasicId": "418032046346309",
- "FieldIndex": "51",
- "FieldName": "CreateUser",
- "FieldRemark": "创建人",
- "FieldType": "varchar",
- "EffectType": "input",
- "FkEntityName": "",
- "FkColumnId": "",
- "FkColumnName": "",
- "DictTypeCode": "",
- "Width": "100",
- "WhetherTable": "N",
- "WhetherRetract": "N",
- "WhetherAddUpdate": "N",
- "WhetherRequired": "N",
- "QueryWhether": "N",
- "QueryType": "",
- "SortCode": "99",
- "CreateTime": "2023-5-16 15:56:47.147",
- "UpdateTime": "2023-5-17 16:06:21.797",
- "CreateUserId": "212725263002001",
- "UpdateUserId": "212725263002001",
- "IsDelete": "0",
- "ExtJson": "",
- "IsPrimarykey": "N",
- "FieldNetType": "string",
- "CreateUser": "superAdmin",
- "UpdateUser": "superAdmin",
- "WhetherImportExport": "N",
- "WhetherResizable": "N"
- },
- {
- "Id": "418032046592100",
- "BasicId": "418032046346309",
- "FieldIndex": "52",
- "FieldName": "UpdateUser",
- "FieldRemark": "更新人",
- "FieldType": "varchar",
- "EffectType": "input",
- "FkEntityName": "",
- "FkColumnId": "",
- "FkColumnName": "",
- "DictTypeCode": "",
- "Width": "100",
- "WhetherTable": "N",
- "WhetherRetract": "N",
- "WhetherAddUpdate": "N",
- "WhetherRequired": "N",
- "QueryWhether": "N",
- "QueryType": "",
- "SortCode": "99",
- "CreateTime": "2023-5-16 15:56:47.147",
- "UpdateTime": "2023-5-17 16:06:21.797",
- "CreateUserId": "212725263002001",
- "UpdateUserId": "212725263002001",
- "IsDelete": "0",
- "ExtJson": "",
- "IsPrimarykey": "N",
- "FieldNetType": "string",
- "CreateUser": "superAdmin",
- "UpdateUser": "superAdmin",
- "WhetherImportExport": "N",
- "WhetherResizable": "N"
- }
- ]
-}
\ No newline at end of file
diff --git a/api/SimpleAdmin/SimpleAdmin.Plugin/SimpleAdmin.Plugin.Gen/Services/Basic/Dto/GenBasicInput.cs b/api/SimpleAdmin/SimpleAdmin.Plugin/SimpleAdmin.Plugin.Gen/Services/Basic/Dto/GenBasicInput.cs
deleted file mode 100644
index 0e8fd60cdee6228b2966d2e79ea825145272931a..0000000000000000000000000000000000000000
--- a/api/SimpleAdmin/SimpleAdmin.Plugin/SimpleAdmin.Plugin.Gen/Services/Basic/Dto/GenBasicInput.cs
+++ /dev/null
@@ -1,180 +0,0 @@
-namespace SimpleAdmin.Plugin.Gen;
-
-///
-/// 代码生成基础添加参数
-///
-public class GenBasicAddInput : GenBasic, IValidatableObject
-{
- ///
- /// 所属库名称
- ///
- [Required(ErrorMessage = "ConfigId不能为空")]
- public override string ConfigId { get; set; }
-
- ///
- /// 主表名称
- ///
- [Required(ErrorMessage = "BbTable不能为空")]
- public override string DbTable { get; set; }
-
- ///
- /// 功能列表
- ///
- [Required(ErrorMessage = "FuncList不能为空")]
- public override List? FuncList { get; set; }
-
- ///
- /// 生成模版
- ///
- [Required(ErrorMessage = "ModuleType不能为空")]
- public override string ModuleType { get; set; }
-
- ///
- /// 数据权限
- ///
- [Required(ErrorMessage = "DataPermission不能为空")]
- public override string DataPermission { get; set; }
-
- ///
- /// 实体名称
- ///
- [Required(ErrorMessage = "EntityName不能为空")]
- public override string EntityName { get; set; }
-
- ///
- /// 表前缀移除
- ///
- [Required(ErrorMessage = "TablePrefix不能为空")]
- public override string TablePrefix { get; set; }
-
- ///
- /// 生成方式
- ///
- [Required(ErrorMessage = "GenerateType不能为空")]
- public override string GenerateType { get; set; }
-
- ///
- /// 所属模块
- ///
- [IdNotNull(ErrorMessage = "Module不能为空")]
- public override long Module { get; set; }
-
- ///
- /// 路由名
- ///
- [Required(ErrorMessage = "RouteName不能为空")]
- public override string RouteName { get; set; }
-
-
- ///
- /// 图标
- ///
- [Required(ErrorMessage = "Icon不能为空")]
- public override string Icon { get; set; }
-
- ///
- /// 功能名
- ///
- [Required(ErrorMessage = "FunctionName不能为空")]
- public override string FunctionName { get; set; }
-
- ///
- /// 业务名
- ///
- [Required(ErrorMessage = "BusName不能为空")]
- public override string BusName { get; set; }
-
- ///
- /// 类名
- ///
- [Required(ErrorMessage = "ClassName不能为空")]
- public override string ClassName { get; set; }
-
- ///
- /// 表单布局
- ///
- [Required(ErrorMessage = "FormLayout不能为空")]
- public override string FormLayout { get; set; }
-
- ///
- /// 使用栅格
- ///
- [Required(ErrorMessage = "GridWhether不能为空")]
- public override string GridWhether { get; set; }
-
- ///
- /// 左侧树
- ///
- [Required(ErrorMessage = "LeftTree不能为空")]
- public override string LeftTree { get; set; }
-
- ///
- /// 前端路径
- ///
- [Required(ErrorMessage = "FrontedPath不能为空")]
- public override string FrontedPath { get; set; }
-
- ///
- /// 服务层
- ///
- [Required(ErrorMessage = "ServicePosition不能为空")]
- public override string ServicePosition { get; set; }
-
- ///
- /// 控制器层
- ///
- [Required(ErrorMessage = "ControllerPosition不能为空")]
- public override string ControllerPosition { get; set; }
-
- ///
- /// 排序
- ///
- [Required(ErrorMessage = "SortCode不能为空")]
- public override int SortCode { get; set; }
-
- ///
- /// 作者名
- ///
- [Required(ErrorMessage = "AuthorName不能为空")]
- public override string AuthorName { get; set; }
-
- public IEnumerable Validate(ValidationContext validationContext)
- {
- //如果是树形结构
- if (ModuleType.Contains("tree"))
- {
- if (string.IsNullOrEmpty(TreeId) || string.IsNullOrEmpty(TreeName) || string.IsNullOrEmpty(TreePid))
- yield return new ValidationResult($"必须配置树表相关信息", new[] { nameof(TreeId), nameof(TreeName), nameof(TreePid) });
- }
- //如果是树形结构
- if (ModuleType.Contains("master"))
- {
- if (string.IsNullOrEmpty(ChildFk) || string.IsNullOrEmpty(ChildTable))
- yield return new ValidationResult($"必须配置主子表相关信息", new[] { nameof(ChildTable), nameof(ChildFk) });
- }
- if (!FuncList.Contains("curd"))
- {
- yield return new ValidationResult($"必须包含基础的增删改查功能", new[] { nameof(FuncList) });
- }
- }
-}
-
-///
-/// 代码生成基础编辑参数
-///
-public class GenBasicEditInput : GenBasicAddInput
-{
- [IdNotNull(ErrorMessage = "Id不能为空")]
- public override long Id { get; set; }
-}
-
-///
-/// 执行代码生成参数
-///
-public class ExecGenInput : BaseIdInput
-{
- ///
- /// 生成类型
- ///
- public string ExecType { get; set; }
-}
\ No newline at end of file
diff --git a/api/SimpleAdmin/SimpleAdmin.Plugin/SimpleAdmin.Plugin.Gen/Services/Basic/Dto/GenBasicOutput.cs b/api/SimpleAdmin/SimpleAdmin.Plugin/SimpleAdmin.Plugin.Gen/Services/Basic/Dto/GenBasicOutput.cs
deleted file mode 100644
index 418cd590ef3600047a8cd003cb34a2f610644224..0000000000000000000000000000000000000000
--- a/api/SimpleAdmin/SimpleAdmin.Plugin/SimpleAdmin.Plugin.Gen/Services/Basic/Dto/GenBasicOutput.cs
+++ /dev/null
@@ -1,67 +0,0 @@
-namespace SimpleAdmin.Plugin.Gen;
-
-///
-/// 表字段信息输出
-///
-public class GenBasicColumnOutput
-{
- ///
- /// 字段名称
- ///
- public string ColumnName { get; set; }
-
- ///
- /// 是否主键
- ///
- public bool IsPrimarykey { get; set; }
-
- ///
- /// 字段类型
- ///
- public string TypeName { get; set; }
-
- ///
- /// 字段注释
- ///
- public string ColumnRemark { get; set; }
-}
-
-///
-/// 预览代码生成结果
-///
-public class GenBasePreviewOutput
-{
- ///
- /// SQL代码结果集
- ///
- public List SqlResults { get; set; } = new List();
-
- ///
- /// 前端代码结果集
- ///
- public List CodeFrontendResults { get; set; } = new List();
-
- ///
- /// 后端代码结果集
- ///
-
- public List CodeBackendResults { get; set; } = new List();
-
- public class GenBaseCodeResult
- {
- ///
- /// 代码文件名称
- ///
- public string CodeFileName { get; set; }
-
- ///
- /// 文件路径
- ///
- public string FilePath { get; set; }
-
- ///
- /// 代码文件内容
- ///
- public string CodeFileContent { get; set; }
- }
-}
\ No newline at end of file
diff --git a/api/SimpleAdmin/SimpleAdmin.Plugin/SimpleAdmin.Plugin.Gen/Services/Basic/Dto/GenViewModel.cs b/api/SimpleAdmin/SimpleAdmin.Plugin/SimpleAdmin.Plugin.Gen/Services/Basic/Dto/GenViewModel.cs
deleted file mode 100644
index c6cbe6869f91ec2e2ea755464adb97c867a9e604..0000000000000000000000000000000000000000
--- a/api/SimpleAdmin/SimpleAdmin.Plugin/SimpleAdmin.Plugin.Gen/Services/Basic/Dto/GenViewModel.cs
+++ /dev/null
@@ -1,251 +0,0 @@
-namespace SimpleAdmin.Plugin.Gen;
-
-///
-/// 代码生成绑定视图
-///
-public class GenViewModel : GenBasic
-{
- #region 基础
-
- ///
- /// 生成时间
- ///
- public string GenTime { get; set; } = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
-
- ///
- /// 表字段
- ///
- public List TableFields { get; set; }
-
- #endregion 基础
-
- #region 菜单
-
- ///
- /// 菜单ID
- ///
- public long MenuId { get; set; } = CommonUtils.GetSingleId();
-
- ///
- /// 菜单编码
- ///
- public string MenuCode { get; set; } = RandomHelper.CreateRandomString(10);
-
- ///
- /// /菜单路径
- ///
- public string MenuPath
- {
- get { return $"/{RouteName}/{BusName}"; }
- }
-
- ///
- /// /菜单路径
- ///
- public string MenuComponent
- {
- get { return $"{RouteName}/{BusName}/index"; }
- }
-
- #endregion 菜单
-
- #region 按钮
-
- ///
- /// 添加按钮ID
- ///
- public long AddButtonId { get; set; } = CommonUtils.GetSingleId();
-
- ///
- /// 批量删除按钮ID
- ///
- public long BatchDeleteButtonId { get; set; } = CommonUtils.GetSingleId();
-
- ///
- /// 编辑按钮ID
- ///
- public long EditButtonId { get; set; } = CommonUtils.GetSingleId();
-
- ///
- /// 删除按钮ID
- ///
- public long DeleteButtonId { get; set; } = CommonUtils.GetSingleId();
-
- #endregion 按钮
-
- #region 后端
-
- ///
- /// 类名首字母小写
- ///
- public string ClassNameFirstLower
- {
- get { return StringHelper.FirstCharToLower(ClassName); }
- }
-
- ///
- /// swagger分组名称
- ///
- public string ApiGroup
- {
- get
- {
- return ServicePosition.Split(".").Last();
- }
- }
-
- ///
- /// 服务名
- ///
- public string ServiceName
- {
- get { return ClassName + "Service"; }
- }
-
- ///
- /// 服务名开头首字母小写
- ///
- public string ServiceFirstLower
- {
- get { return ClassNameFirstLower + "Service"; }
- }
-
- #endregion 后端
-
- #region 注释描述
-
- ///
- /// 分页查询
- ///
- public string DescriptionPage
- {
- get { return FunctionName + "分页查询"; }
- }
-
- ///
- /// 列表查询
- ///
- public string DescriptionList
- {
- get { return FunctionName + "列表查询"; }
- }
-
- ///
- /// 添加
- ///
- public string DescriptionAdd
- {
- get { return "添加" + FunctionName; }
- }
-
- ///
- /// 修改
- ///
- public string DescriptionEdit
- {
- get { return "修改" + FunctionName; }
- }
-
- ///
- /// 修改
- ///
- public string DescriptionDelete
- {
- get { return "删除" + FunctionName; }
- }
-
- ///
- /// 详情
- ///
- public string DescriptionDetail
- {
- get { return FunctionName + "详情"; }
- }
-
-
- ///
- /// 导入
- ///
- public string DescriptionImport
- {
- get { return FunctionName + "导入"; }
- }
-
- ///
- /// 导入模板下载
- ///
- public string DescriptionTemplate
- {
- get { return FunctionName + "导入模板下载"; }
- }
-
- ///
- /// 导入预览
- ///
- public string DescriptionPreview
- {
- get { return FunctionName + "导入预览"; }
- }
-
- ///
- /// 导入
- ///
- public string DescriptionExport
- {
- get { return FunctionName + "导出"; }
- }
-
- ///
- /// 批量编辑
- ///
- public string DescriptionEdits
- {
- get { return FunctionName + "批量编辑"; }
- }
-
- ///
- /// 树查询
- ///
- public string DescriptionTree
- {
- get { return FunctionName + "树"; }
- }
-
- #endregion 注释描述
-
- #region 参数
-
- ///
- /// 分页参数
- ///
- public string PageInput
- {
- get { return ClassName + "PageInput"; }
- }
-
- ///
- /// 添加参数
- ///
- public string AddInput
- {
- get { return ClassName + "AddInput"; }
- }
-
- ///
- /// 编辑参数
- ///
- public string EditInput
- {
- get { return ClassName + "EditInput"; }
- }
-
- ///
- /// 树查询参数
- ///
- public string TreeInput
- {
- get { return ClassName + "TreeInput"; }
- }
-
- #endregion 参数
-}
\ No newline at end of file
diff --git a/api/SimpleAdmin/SimpleAdmin.Plugin/SimpleAdmin.Plugin.Gen/Services/Basic/GenBasicService.cs b/api/SimpleAdmin/SimpleAdmin.Plugin/SimpleAdmin.Plugin.Gen/Services/Basic/GenBasicService.cs
deleted file mode 100644
index 15c86d8982605d5a247c0c0eafd260aeb85297e8..0000000000000000000000000000000000000000
--- a/api/SimpleAdmin/SimpleAdmin.Plugin/SimpleAdmin.Plugin.Gen/Services/Basic/GenBasicService.cs
+++ /dev/null
@@ -1,636 +0,0 @@
-namespace SimpleAdmin.Plugin.Gen;
-
-///
-///
-///
-public class GenBasicService : DbRepository, IGenbasicService
-{
- private readonly ILogger _logger;
- private readonly IViewEngine _viewEngine;
- private readonly IGenConfigService _genConfigService;
- private readonly IMenuService _menuService;
- private readonly IButtonService _buttonService;
- private readonly IRoleService _roleService;
- private readonly string _sqlDir = "Sql";
- private readonly string _backendDir = "Backend";
- private readonly string _frontDir = "Frontend";
-
- public GenBasicService(ILogger logger,
- IViewEngine viewEngine,
- IGenConfigService genConfigService,
- IMenuService menuService,
- IButtonService buttonService, IRoleService roleService)
- {
- _logger = logger;
- _viewEngine = viewEngine;
- _genConfigService = genConfigService;
- _menuService = menuService;
- _buttonService = buttonService;
- _roleService = roleService;
- }
-
- ///
- public async Task> Page(BasePageInput input)
- {
- var query = Context.Queryable()
- .OrderByIF(!string.IsNullOrEmpty(input.SortField), $"{input.SortField} {input.SortOrder}")//排序
- .OrderBy(it => it.SortCode, OrderByType.Desc)//默认排序
- .OrderBy(it => it.CreateTime, OrderByType.Desc)//默认排序
- .Mapper(it =>
- {
- it.FuncList = it.Functions.Split(",", StringSplitOptions.RemoveEmptyEntries).ToList();//功能集合转为列表
- });
- var pageInfo = await query.ToPagedListAsync(input.Current, input.Size);//分页
- return pageInfo;
- }
-
- ///
- public List GetTables(bool isAll = false)
- {
- if (isAll)
- return SqlSugarUtils.GetTablesByAttribute();
- return SqlSugarUtils.GetTablesByAttribute();
- }
-
-
-
- ///
- public List GetAssemblies()
- {
- var names = new List();//结果集
- var excludeList = new List
- {
- "Web.Entry", "Core", "Cache", "SqlSugar", "Plugin.Core", "Plugin.Gen", "Plugin.Mqtt", "Plugin.SignalR", "Plugin.Aop"
- };//排除的程序集
- //获取所有程序集名称
- var assemblies = App.Assemblies
- .Where(it => !it.FullName.StartsWith("Furion"))
- .Select(it => it.FullName).ToList();
- assemblies.ForEach(it =>
- {
- var name = it.Split(",")[0];//根据逗号分割取第一个
- //根据.分割获取最后两个
-
-
- var projectName = string.Join(".", name.Split(".").Skip(1).ToList());
- if (!excludeList.Contains(projectName))//去掉排除的程序集
- {
- names.Add(name);
- }
- });
- return names;
- }
-
-
- ///
- public async Task Add(GenBasicAddInput input)
- {
- var entity = input.Adapt();//输入参数转实体
- entity.Functions = string.Join(",", input.FuncList);//功能集合
- var tableColumns = SqlSugarUtils.GetTableColumns(input.ConfigId, input.DbTable);//获取表的字段信息
- var genConfigs = new List();//代码生成配置字段集合
- //遍历字段
- var sortCode = 0;
- //遍历字段
- tableColumns.ForEach(it =>
- {
- #region 判断是否想显示
-
- var yesOrNo = GenConst.Yes;
- if (it.IsPrimarykey || SqlSugarUtils.IsCommonColumn(it.ColumnName))//如果是主键或者是公共字段则不显示
- yesOrNo = GenConst.No;
- else
- yesOrNo = GenConst.Yes;
-
- #endregion 判断是否想显示
-
- //添加到字段集合
- genConfigs.Add(new GenConfig
- {
- IsPrimarykey = it.IsPrimarykey ? GenConst.Yes : GenConst.No,
- FieldName = it.ColumnName,
- FieldType = it.DataType,
- FieldNetType = SqlSugarUtils.ConvertDataType(it.DataType),
- FieldRemark = it.ColumnDescription ?? it.ColumnName,
- EffectType = EffTypeConst.INPUT,
- Width = 100,
- WhetherTable = yesOrNo,
- WhetherAddUpdate = yesOrNo,
- WhetherImportExport = yesOrNo,
- WhetherResizable = GenConst.No,
- WhetherRequired = GenConst.No,
- WhetherRetract = GenConst.No,
- QueryWhether = GenConst.No,
- SortCode = yesOrNo == GenConst.No ? 99 : sortCode//如果是公共字段就排最后
- });
- sortCode++;
- });
- var index = 0;
- genConfigs = genConfigs.OrderBy(it => it.SortCode).ToList();//排序
- genConfigs.ForEach(it =>
- {
- it.FieldIndex = index;
- index++;
- });
- if (!genConfigs.Any(it => it.IsPrimarykey == GenConst.Yes))//判断是否有主键
- {
- throw Oops.Bah("要生成的表必须有主键");
- }
-
- //事务
- var result = await itenant.UseTranAsync(async () =>
- {
- entity = await InsertReturnEntityAsync(entity);//输入参数转实体并插入
- genConfigs.ForEach(it => { it.BasicId = entity.Id; });//遍历字段赋值基础Id
- await Context.Insertable(genConfigs).ExecuteCommandAsync();
- });
- if (!result.IsSuccess)//如果失败了
- {
- //写日志
- _logger.LogError(result.ErrorMessage, result.ErrorException);
- throw Oops.Oh(ErrorCodeEnum.A0003);
- }
-
- return entity;
- }
-
- ///
- public async Task Delete(List input)
- {
- //获取所有ID
- var ids = input.Select(it => it.Id).ToList();
- if (ids.Count > 0)
- {
- //事务
- var result = await itenant.UseTranAsync(async () =>
- {
- await DeleteByIdsAsync(ids.Cast().ToArray());//删除基础表
- await Context.Deleteable().Where(it => ids.Contains(it.BasicId))
- .ExecuteCommandAsync();//删除配置表
- });
- if (!result.IsSuccess)//如果失败了
- {
- //写日志
- _logger.LogError(result.ErrorMessage, result.ErrorException);
- throw Oops.Oh(ErrorCodeEnum.A0002);
- }
- }
- }
-
- ///
- public async Task Edit(GenBasicEditInput input)
- {
- var entity = input.Adapt();//输入参数转实体
- entity.Functions = string.Join(",", input.FuncList);//功能集合
- await UpdateAsync(entity);
- return entity;
- }
-
- ///
- public async Task PreviewGen(BaseIdInput input)
- {
- var genBasic = await GetGenBasic(input.Id);//获取代码生成基础
- return await PreviewGen(genBasic);
- }
-
- ///
- public async Task ExecGenPro(ExecGenInput input)
- {
- var genBasic = await GetGenBasic(input.Id);//获取代码生成基础
- if (genBasic.GenerateType != GenConst.Pro) throw Oops.Bah("当前配置生成方式为:项目中");
- var backendPath =
- Path.Combine(new DirectoryInfo(App.WebHostEnvironment.ContentRootPath).Parent.FullName);//获取主工程目录
- var srcDir = "src";//默认都是代码放在src文件夹
- var frontedPath = genBasic.FrontedPath;//获取前端代码路径,
- if (!frontedPath.Contains(srcDir))//如果不包含src
- frontedPath = genBasic.FrontedPath.CombinePath(srcDir);
- if (await CreateMenuButtonAndRelation(genBasic))
- {
- var previewCode = await PreviewGen(genBasic);//获取代码生成预览
- if (input.ExecType != GenConst.ExecAll)//如果不是全部执行
- {
- if (input.ExecType == GenConst.ExecBackend)
- ExecBackend(previewCode.CodeBackendResults, genBasic, backendPath);//执行后端代码生成
- else if (input.ExecType == GenConst.ExecFrontend)
- ExecFronted(previewCode.CodeFrontendResults, genBasic, frontedPath);//执行前端代码生成
- }
- else
- {
- ExecBackend(previewCode.CodeBackendResults, genBasic, backendPath);//执行后端代码生成
-
- ExecFronted(previewCode.CodeFrontendResults, genBasic, frontedPath);//执行前端代码生成
- }
- }
- else
- {
- throw Oops.Bah("代码生成失败");
- }
- }
-
- ///
- public async Task ExecGenZip(ExecGenInput input)
- {
- var genBasic = await GetGenBasic(input.Id);//获取代码生成基础
- if (genBasic.GenerateType != GenConst.Zip) throw Oops.Bah("当前配置生成方式为:压缩包");
- var temDir = Path.GetTempPath().CombinePath(genBasic.ClassName);//获取临时目录并用类名做存放代码文件文件夹
- File.Delete(temDir + ".zip");// 先删除压缩包
- var previewCode = await PreviewGen(genBasic);//获取代码生成预览
- if (input.ExecType != GenConst.ExecAll)//如果不是全部执行
- {
- if (input.ExecType == GenConst.ExecBackend)
- {
- ExecBackend(previewCode.CodeBackendResults, genBasic, temDir.CombinePath(_backendDir), true);//执行后端代码生成
- ExecSql(previewCode.SqlResults, temDir);//执行sql生成
- }
- else if (input.ExecType == GenConst.ExecFrontend)
- ExecFronted(previewCode.CodeFrontendResults, genBasic, temDir.CombinePath(_frontDir));//执行前端生成
- }
- else
- {
- ExecBackend(previewCode.CodeBackendResults, genBasic, temDir.CombinePath(_backendDir), true);//执行后端代码生成
- ExecFronted(previewCode.CodeFrontendResults, genBasic, temDir.CombinePath(_frontDir));//执行前端生成
- }
- var zipPath = ZipUtils.CompressDirectory(temDir, true);//压缩文件夹
- var result = new FileStreamResult(new FileStream(zipPath, FileMode.Open), "application/octet-stream")
- { FileDownloadName = $"{genBasic.ClassName}.zip" };
- return result;
- }
-
- #region 方法
-
- ///
- /// 生成后端代码文件
- ///
- /// 后端代码模板
- /// 代码基础
- /// 后端生成路径
- /// 是否是zip方式
- public void ExecBackend(List baseCodeResults, GenBasic genBasic,
- string backendPath, bool isZip = false)
- {
- var serviceDir = "Services";//服务代码文件夹
- var controllerDir = "Controllers";//服务代码文件夹
- var tempDicName = "";//临时文件夹名称
- var dirList = new HashSet { };//文件夹列表
- var postion = "";//文件夹位置
- var parentDir = _backendDir;//父文件文件夹名称
- var serviceName = genBasic.ServicePosition.Split(".").Last();//取服务层最后一个单词命名为接口层控制器下的文件夹
- baseCodeResults.ForEach(it =>
- {
- var fileInfo = new FileInfo(it.FilePath);//获取文件信息
- var dirName = fileInfo.Directory.Name;//获取文件文件夹名称
- var parentName = fileInfo.Directory.Parent.Name;//获取父文件文件夹名称
- if (dirName == controllerDir)//如果是控制器
- {
- dirList.Add(dirName);//添加到当前文件夹到文件夹列表
- dirList.Add(serviceName);//添加服务层目录名到文件夹列表
- postion = genBasic.ControllerPosition;//设置文件夹创建位置为Api层
- }
- else if (dirName == serviceDir)//如果是服务
- {
- dirList.Remove(controllerDir);//删除接口文件夹
- dirList.Remove(serviceName);//删除服务层目录
- dirList.Add(genBasic.ClassName);//添加ClassName到文件夹列表
- dirList.Add(dirName);//添加到当前文件夹到文件夹列表
- postion = genBasic.ServicePosition;//设置文件夹创建位置为服务层
- }
-
- if (parentDir != parentName)//如果当前文件的父文件夹不等于partDir表示层级有变动
- {
- dirList.Add(dirName);//添加到文件夹列表
- parentDir = parentName;//重新赋值父文件夹
- }
- else
- {
- if (tempDicName != dirName)//如果临时文件夹不是当前文件夹表示同级目录下的另一个文件夹
- {
- dirList.Remove(tempDicName);//删除上一个文件夹
- dirList.Add(dirName);//添加当前文件夹到文件夹列表
- }
- }
-
- tempDicName = dirName;//给临时文件夹赋值
- var path = backendPath;//后端文件目录
- if (!isZip) path = backendPath.CombinePath(postion);//如果不是zip方式就加上命名空间
- path = path.CombinePath(dirList.ToArray());
- if (!Directory.Exists(path))//如果文件夹不存在就创建文件夹
- Directory.CreateDirectory(path);
- //var fileName = genBasic.ClassName + it.CodeFileName;//文件名等于类名加代码文件名
- //if (it.CodeFileName.StartsWith("IService"))
- // fileName = $"I{genBasic.ClassName}Service.cs";//对IService接口要特殊处理
- //path = path.CombinePath(fileName);//最终生成文件地址
- File.WriteAllText(path.CombinePath(it.CodeFileName), it.CodeFileContent, Encoding.UTF8);//写入文件
- });
- }
-
- ///
- /// 生成前端代码文件
- ///
- /// 前端代码模板
- /// 代码基础
- /// 前端生成路径
- public void ExecFronted(List baseCodeResults, GenBasic genBasic,
- string frontedPath)
- {
- var apiDir = "api";
- var viewDir = "views";
- var parentDir = _frontDir;//父文件文件夹名称
- var dirList = new HashSet { };//文件夹列表
- baseCodeResults.ForEach(it =>
- {
- var fileInfo = new FileInfo(it.FilePath);//获取文件信息
- var dirName = fileInfo.Directory.Name;//获取文件文件夹名称
- var parentName = fileInfo.Directory.Parent.Name;//获取父文件文件夹名称
- var path = frontedPath.CombinePath(fileInfo.Directory.Name)
- .CombinePath(genBasic.RouteName);//生成路径为前端路径+代码文件所在文件夹+路由地址
- if (dirName == apiDir)//如果是api文件夹
- it.CodeFileName =
- StringHelper.FirstCharToLower(genBasic.ClassName) + it.CodeFileName;//文件名等于路由名加类名加代码文件名
- else if (dirName == viewDir)
- path = path.CombinePath(genBasic.BusName);
- if (!Directory.Exists(path))//如果文件夹不存在就创建文件夹
- Directory.CreateDirectory(path);
- File.WriteAllText(path.CombinePath(it.CodeFileName), it.CodeFileContent, Encoding.UTF8);//写入文件
- });
- }
-
- ///
- /// 生成sql代码文件
- ///
- /// 后端代码模板
- /// 生成路径
- public void ExecSql(List baseCodeResults, string execPath)
- {
- execPath = execPath.CombinePath(_sqlDir);//写在sql目录里面
- if (!Directory.Exists(execPath))//如果文件夹不存在就创建文件夹
- Directory.CreateDirectory(execPath);
- baseCodeResults.ForEach(it =>
- {
- File.WriteAllText(execPath.CombinePath(it.CodeFileName), it.CodeFileContent, Encoding.UTF8);//写入文件
- });
- }
-
- ///
- /// 获取sql代码预览结果
- ///
- /// 视图
- /// 模板路径
- ///
- public async Task> GetSqlCodeResult(GenViewModel genViewModel,
- string templatePath)
- {
- var sqlCodeResults = new List();//结果集
- var sqlTemplatePath = Path.Combine(templatePath, _sqlDir);//获取sql模板文件路径
-
- var files = GetAllFileInfo(sqlTemplatePath);
- foreach (var fileInfo in files)
- {
- var fileName = fileInfo.Name;//文件名
- var fileNoPrefix = fileName.Split(fileInfo.Extension)[0];//不带模板后缀的文件名
- var tContent = File.ReadAllText(fileInfo.FullName);//读取文件
- var tResult = await GetViewEngine(tContent, genViewModel);//渲染
- //将渲染结果添加到结果集
- sqlCodeResults.Add(new GenBasePreviewOutput.GenBaseCodeResult
- {
- CodeFileContent = tResult,
- CodeFileName = fileNoPrefix,
- FilePath = fileInfo.FullName
- });
- }
-
- return sqlCodeResults;
- }
-
- ///
- /// 获取后端代码预览结果
- ///
- /// 视图
- /// 模板路径
- ///
- public async Task> GetBackendCodeResult(GenViewModel genViewModel,
- string templatePath)
- {
- // templatePath = "D:\\SimpleAdmin\\api\\SimpleAdmin\\SimpleAdmin.Plugin\\SimpleAdmin.Plugin.Gen\\CodeGen";//测试用
- var backendCodeResults = new List();//结果集
- var backendTemplatePath = Path.Combine(templatePath, _backendDir);//获取后端模板文件路径
- var files = GetAllFileInfo(backendTemplatePath);
- // files = files.Where(it => it.Name == "Service.cs.vm").ToArray();//测试用
- foreach (var fileInfo in files)
- {
- var nameWithPrefix = fileInfo.Name;//文件名
- var fileNoPrefix = nameWithPrefix.Split(fileInfo.Extension)[0];//不带模板后缀的文件名
- var tContent = File.ReadAllText(fileInfo.FullName);//读取文件
- var fileName = genViewModel.ClassName + fileNoPrefix;//文件名等于类名加代码文件名
- if (fileNoPrefix.StartsWith("IService"))
- fileName = $"I{genViewModel.ClassName}Service.cs";//对IService接口要特殊处理
- var tResult = await GetViewEngine(tContent, genViewModel);//渲染
- //将渲染结果添加到结果集
- backendCodeResults.Add(new GenBasePreviewOutput.GenBaseCodeResult
- {
- CodeFileContent = tResult,
- CodeFileName = fileName,
- FilePath = fileInfo.FullName
- });
- }
-
- return backendCodeResults;
- }
-
- ///
- /// 获取前端代码预览结果
- ///
- /// 视图
- /// 模板路径
- ///
- public async Task> GetForntCodeResult(GenViewModel genViewModel,
- string templatePath)
- {
- // templatePath = "D:\\SimpleAdmin\\api\\SimpleAdmin\\SimpleAdmin.Plugin\\SimpleAdmin.Plugin.Gen\\CodeGen";//测试用
- var frontCodeResults = new List();//结果集
- var frontTemplatePath = Path.Combine(templatePath, _frontDir);//获取前端模板文件路径
- var files = GetAllFileInfo(frontTemplatePath);
- // files = files.Where(it => it.Name == "index.vue.vm").ToArray();//测试用
- foreach (var fileInfo in files)
- {
- var fileName = fileInfo.Name;//文件名
- var fileNoPrefix = fileName.Split(fileInfo.Extension)[0];//不带模板后缀的文件名
- var tContent = File.ReadAllText(fileInfo.FullName);//读取文件
- var tResult = await GetViewEngine(tContent, genViewModel);//渲染
- //将渲染结果添加到结果集
- frontCodeResults.Add(new GenBasePreviewOutput.GenBaseCodeResult
- {
- CodeFileContent = tResult,
- CodeFileName = fileNoPrefix,
- FilePath = fileInfo.FullName
- });
- }
-
- return frontCodeResults;
- }
-
- ///
- /// 获取代码生成视图
- ///
- ///
- ///
- public async Task GetGenViewModel(GenBasic genBasic)
- {
- //实体转视图
- var genViewEngine = genBasic.Adapt();
- //获取字段信息
- var tableFieldList = await _genConfigService.List(genBasic.Id);
- tableFieldList.ForEach(it =>
- {
- it.FieldNameFirstLower = StringHelper.FirstCharToLower(it.FieldName);//首字母小写
- it.FieldNameFirstUpper = StringHelper.FirstCharToUpper(it.FieldName);//首字母大写
- });
- genViewEngine.TableFields = tableFieldList;//赋值表字段信息
-
- return genViewEngine;
- }
-
- ///
- /// 视图渲染
- ///
- /// 模板内容
- /// 参数
- ///
- public async Task GetViewEngine(string tContent, GenViewModel genViewModel)
- {
- //视图引擎渲染
- var tResult = await _viewEngine.RunCompileFromCachedAsync(tContent, genViewModel, builderAction: builder =>
- {
- builder.AddAssemblyReference(typeof(GenBasic));//添加程序集
- builder.AddAssemblyReferenceByName("System.Collections");//添加程序集
- builder.AddAssemblyReferenceByName("SimpleTool");//添加程序集
- });
- return tResult;
- }
-
- ///
- /// 获得文件夹下所有的文件
- ///
- /// 文件夹路径
- ///
- private FileInfo[] GetAllFileInfo(string path)
- {
- var dir = new DirectoryInfo(path);
- return dir.GetFiles(".", SearchOption.AllDirectories);
- }
-
- ///
- /// 代码生成预览
- ///
- /// 基础配置
- ///
- public async Task PreviewGen(GenBasic genBasic)
- {
- var basePath = AppContext.BaseDirectory;//获取项目目录
- var templatePath = basePath.CombinePath("CodeGen");//获取文件路径
- //var templatePath = App.WebHostEnvironment.WebRootPath + @"\CodeGen";//模板文件文件夹
- var genViewModel = await GetGenViewModel(genBasic);
- var frontendResult = await GetForntCodeResult(genViewModel, templatePath);
- var backendResult = await GetBackendCodeResult(genViewModel, templatePath);
- var sqlResult = await GetSqlCodeResult(genViewModel, templatePath);
- return new GenBasePreviewOutput
- {
- CodeBackendResults = backendResult,
- SqlResults = sqlResult,
- CodeFrontendResults = frontendResult
- };
- }
-
- ///
- /// 获取代码生成基础
- ///
- ///
- ///
- private async Task GetGenBasic(long id)
- {
- var genBasic = await GetByIdAsync(id);
- if (genBasic == null)
- throw Oops.Bah("代码生成配置不存在");
- genBasic.FuncList = genBasic.Functions.Split(',').ToList();
- return genBasic;
- }
-
- ///
- /// 创建代码生成相关的菜单按钮和授权关系
- ///
- ///
- ///
- private async Task CreateMenuButtonAndRelation(GenBasic genBasic)
- {
- try
- {
- #region 菜单
-
- var title = genBasic.FunctionName + genBasic.FunctionNameSuffix;
- var menuRep = ChangeRepository>();//切换仓储
- //获取已经存在的旧菜单
- var oldMenu = await menuRep.GetFirstAsync(it => it.Title == title
- && it.Category == CateGoryConst.Resource_MENU
- && it.MenuType == ResourceConst.MENU &&
- it.Code != ResourceConst.System);
- if (oldMenu != null)//如果存在就直接和删除(同时删除其下面的菜单、按钮,清除对应的角色与资源信息)
- await _menuService.Delete(new List { new BaseIdInput { Id = oldMenu.Id } });
- //添加菜单参数
- var menu = new MenuAddInput
- {
- Id = CommonUtils.GetSingleId(),
- ParentId = genBasic.MenuPid,
- Title = title,
- Category = CateGoryConst.Resource_MENU,
- Module = genBasic.Module,
- Icon = genBasic.Icon,
- Name = genBasic.BusName,
- Code = RandomHelper.CreateRandomString(10),
- Path = $"/{genBasic.RouteName}/{genBasic.BusName}",
- Component = $"{genBasic.RouteName}/{genBasic.BusName}/index",
- SortCode = 99
- };
- await _menuService.Add(menu);//添加菜单
-
- #endregion 菜单
-
- #region 按钮
-
- //添加按钮参数
- var button = new ButtonAddInput
- {
- Title = genBasic.FunctionName,
- ParentId = menu.Id,
- Code = StringHelper.FirstCharToLower(genBasic.ClassName)
- };
- var buttonIds = await _buttonService.AddBatch(button);//添加按钮
-
- #endregion 按钮
-
- #region 角色授权
-
- var roleRep = ChangeRepository>();//切换仓储
- var superAdmin = await roleRep.GetFirstAsync(it =>
- it.Code == RoleConst.SuperAdmin && it.Category == CateGoryConst.Role_GLOBAL);//获取超级管理员
- //授权菜单参数
- var grantResource = new GrantResourceInput
- {
- Id = superAdmin.Id,
- GrantInfoList = new List
- { new RelationRoleResuorce { MenuId = menu.Id, ButtonInfo = buttonIds } },
- IsCodeGen = true
- };
- await _roleService.GrantResource(grantResource);//授权菜单
-
- #endregion 角色授权
-
- return true;
- }
- catch (Exception ex)
- {
- _logger.LogError($"代码生成创建菜单和授权报错{ex.Message}", ex.InnerException);
- return false;
- }
- }
-
- #endregion 方法
-}
\ No newline at end of file
diff --git a/api/SimpleAdmin/SimpleAdmin.Plugin/SimpleAdmin.Plugin.Gen/Services/Basic/IGenbasicService.cs b/api/SimpleAdmin/SimpleAdmin.Plugin/SimpleAdmin.Plugin.Gen/Services/Basic/IGenbasicService.cs
deleted file mode 100644
index 5262f9d809c818cd801a0ad7dfc34ecec3255147..0000000000000000000000000000000000000000
--- a/api/SimpleAdmin/SimpleAdmin.Plugin/SimpleAdmin.Plugin.Gen/Services/Basic/IGenbasicService.cs
+++ /dev/null
@@ -1,69 +0,0 @@
-namespace SimpleAdmin.Plugin.Gen;
-
-///
-/// 代码生成基础服务
-///
-public interface IGenbasicService : ITransient
-{
- ///
- /// 添加代码生成器基础
- ///
- ///
- ///
- Task Add(GenBasicAddInput input);
-
- ///
- /// 删除代码生成配置
- ///
- /// ID列表
- ///
- Task Delete(List input);
-
- ///
- /// 编辑代码生成基础配置
- ///
- ///
- /// 代码生产基础
- Task Edit(GenBasicEditInput input);
-
- ///
- /// 执行代码生成:本地
- ///
- ///
- ///
- Task ExecGenPro(ExecGenInput input);
-
- ///
- /// 执行代码生成:压缩包
- ///
- ///
- ///
- Task ExecGenZip(ExecGenInput input);
-
- ///
- /// 获取项目所有程序集
- ///
- /// 程序集列表
- List GetAssemblies();
-
- ///
- /// 获取表信息
- ///
- /// 是否所有表
- /// 实体表列表
- List GetTables(bool isAll = false);
-
- ///
- /// 获取代码生成基础分页
- ///
- /// 查询参数
- /// 代码生成基础分页列表
- Task> Page(BasePageInput input);
-
- ///
- /// 代码生成预览
- ///
- /// 代码生成基础Id
- /// 预览结果
- Task PreviewGen(BaseIdInput input);
-}
\ No newline at end of file
diff --git a/api/SimpleAdmin/SimpleAdmin.Plugin/SimpleAdmin.Plugin.Gen/Services/Config/Dto/GenConfigInput.cs b/api/SimpleAdmin/SimpleAdmin.Plugin/SimpleAdmin.Plugin.Gen/Services/Config/Dto/GenConfigInput.cs
deleted file mode 100644
index 4d1cf072250f19df8d1a4831a21b97b64d452f21..0000000000000000000000000000000000000000
--- a/api/SimpleAdmin/SimpleAdmin.Plugin/SimpleAdmin.Plugin.Gen/Services/Config/Dto/GenConfigInput.cs
+++ /dev/null
@@ -1,5 +0,0 @@
-namespace SimpleAdmin.Plugin.Gen;
-
-public class GenConfigInput
-{
-}
\ No newline at end of file
diff --git a/api/SimpleAdmin/SimpleAdmin.Plugin/SimpleAdmin.Plugin.Gen/Services/Config/GenConfigService.cs b/api/SimpleAdmin/SimpleAdmin.Plugin/SimpleAdmin.Plugin.Gen/Services/Config/GenConfigService.cs
deleted file mode 100644
index 76eff9fa0530702c42875d8a5893844a1e2a2c7c..0000000000000000000000000000000000000000
--- a/api/SimpleAdmin/SimpleAdmin.Plugin/SimpleAdmin.Plugin.Gen/Services/Config/GenConfigService.cs
+++ /dev/null
@@ -1,28 +0,0 @@
-namespace SimpleAdmin.Plugin.Gen;
-
-///
-///
-///
-public class GenConfigService : DbRepository, IGenConfigService
-{
- private readonly ILogger logger;
-
- public GenConfigService(ILogger logger)
- {
- this.logger = logger;
- }
-
- ///
- public async Task> List(long basicId)
- {
- var configs = await GetListAsync(it => it.BasicId == basicId);//获取配置表相关配置
- configs = configs.OrderBy(it => it.FieldIndex).ToList();//排序一下
- return configs;
- }
-
- ///
- public async Task EditBatch(List configs)
- {
- await UpdateRangeAsync(configs);//批量更新
- }
-}
\ No newline at end of file
diff --git a/api/SimpleAdmin/SimpleAdmin.Plugin/SimpleAdmin.Plugin.Gen/Services/Config/IGenConfigService.cs b/api/SimpleAdmin/SimpleAdmin.Plugin/SimpleAdmin.Plugin.Gen/Services/Config/IGenConfigService.cs
deleted file mode 100644
index b05931639bbf87044201d606f3a32462f2232819..0000000000000000000000000000000000000000
--- a/api/SimpleAdmin/SimpleAdmin.Plugin/SimpleAdmin.Plugin.Gen/Services/Config/IGenConfigService.cs
+++ /dev/null
@@ -1,21 +0,0 @@
-namespace SimpleAdmin.Plugin.Gen;
-
-///
-/// 代码生成详细配置服务
-///
-public interface IGenConfigService : ITransient
-{
- ///
- /// 批量更新
- ///
- ///
- ///
- Task EditBatch(List configs);
-
- ///
- /// 查询代码生成详细配置列表
- ///
- ///
- /// 配置列表
- Task> List(long basicId);
-}
\ No newline at end of file
diff --git a/api/SimpleAdmin/SimpleAdmin.Plugin/SimpleAdmin.Plugin.Gen/SimpleAdmin.Plugin.Gen.csproj b/api/SimpleAdmin/SimpleAdmin.Plugin/SimpleAdmin.Plugin.Gen/SimpleAdmin.Plugin.Gen.csproj
deleted file mode 100644
index eb3a57559bf4ebd7c74c43626ee1884bffeed7ec..0000000000000000000000000000000000000000
--- a/api/SimpleAdmin/SimpleAdmin.Plugin/SimpleAdmin.Plugin.Gen/SimpleAdmin.Plugin.Gen.csproj
+++ /dev/null
@@ -1,111 +0,0 @@
-
-
-
- net7.0;net6.0
- 1701;1702;8616;1591;8618;8619;8629;8602;8603;8604;8625;8765
- SimpleAdmin.Plugin.Gen.xml
- enable
- enable
-
-
-
-
-
-
-
- PreserveNewest
-
-
- PreserveNewest
-
-
- PreserveNewest
-
-
- PreserveNewest
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- true
- PreserveNewest
- PreserveNewest
-
-
- true
- PreserveNewest
- PreserveNewest
-
-
- true
- PreserveNewest
- PreserveNewest
-
-
- true
- PreserveNewest
- PreserveNewest
-
-
- true
- PreserveNewest
- PreserveNewest
-
-
- true
- PreserveNewest
- PreserveNewest
-
-
- true
- PreserveNewest
- PreserveNewest
-
-
- true
- PreserveNewest
- PreserveNewest
-
-
- true
- PreserveNewest
- PreserveNewest
-
-
- true
- PreserveNewest
- PreserveNewest
-
-
- true
- PreserveNewest
- PreserveNewest
-
-
- true
- PreserveNewest
- PreserveNewest
-
-
-
-
-
-
-
-
diff --git a/api/SimpleAdmin/SimpleAdmin.Plugin/SimpleAdmin.Plugin.Gen/SimpleAdmin.Plugin.Gen.xml b/api/SimpleAdmin/SimpleAdmin.Plugin/SimpleAdmin.Plugin.Gen/SimpleAdmin.Plugin.Gen.xml
deleted file mode 100644
index d856b6c98ce96d77c62b7d7689b9b9dc519a4b03..0000000000000000000000000000000000000000
--- a/api/SimpleAdmin/SimpleAdmin.Plugin/SimpleAdmin.Plugin.Gen/SimpleAdmin.Plugin.Gen.xml
+++ /dev/null
@@ -1,1006 +0,0 @@
-
-
-
- SimpleAdmin.Plugin.Gen
-
-
-
-
- 代码生成器常量
-
-
-
-
- 是
-
-
-
-
- 否
-
-
-
-
- 压缩包
-
-
-
-
- 项目中
-
-
-
-
- 全部
-
-
-
-
- 前端
-
-
-
-
- 后端
-
-
-
-
- 代码生成基础控制器
-
-
-
-
- 代码生成基础分页
-
-
-
-
-
-
- 获取所有表信息
-
-
-
-
-
- 获取项目所有程序集
-
-
-
-
-
- 添加代码生成器
-
-
-
-
-
-
- 编辑代码生成器
-
-
-
-
-
-
- 删除代码生成配置
-
-
-
-
-
-
- 代码生成预览
-
-
-
-
-
-
- 执行代码生成(本地)"
-
-
-
-
-
-
- 执行代码生成(压缩包)
-
-
-
-
-
-
- 代码生成配置控制器
-
-
-
-
- 查询代码生成详细配置列表
-
-
-
-
-
-
- 编辑代码生成详细
-
-
-
-
-
-
- 代码生成基础
-
-
-
-
- 所属库
-
-
-
-
- 主表
-
-
-
-
- 表实体名称
-
-
-
-
- 功能列表
-
-
-
-
- 数据权限
-
-
-
-
- 生成模版
-
-
-
-
- 树Id字段
-
-
-
-
- 树父Id字段
-
-
-
-
- 树名称字段
-
-
-
-
- 关联子表名
-
-
-
-
- 关联子表外键
-
-
-
-
- 移除表前缀
-
-
-
-
- 生成方式
-
-
-
-
- 所属模块
-
-
-
-
- 上级目录
-
-
-
-
- 业务名
-
-
-
-
- 图标
-
-
-
-
- 功能名
-
-
-
-
- 功能名后缀
-
-
-
-
- 业务名
-
-
-
-
- 类名
-
-
-
-
- 表单布局
-
-
-
-
- 使用栅格
-
-
-
-
- 左侧树
-
-
-
-
- 前端项目路径
-
-
-
-
- 服务代码存放位置
-
-
-
-
- 控制器代码存放位置
-
-
-
-
- 作者
-
-
-
-
- 排序
-
-
-
-
- 功能列表
-
-
-
-
- 代码生成配置
-
-
-
-
- 基础ID
-
-
-
-
- 字段排序
-
-
-
-
- 是否主键
-
-
-
-
- 字段
-
-
-
-
- 名称
-
-
-
-
- 类型
-
-
-
-
- 实体类型
-
-
-
-
- 作用类型
-
-
-
-
- 外键显示字段
-
-
-
-
- 外键ID
-
-
-
-
- 外键显示字段
-
-
-
-
- 字典
-
-
-
-
- 列宽度
-
-
-
-
- 列表显示
-
-
-
-
- 列省略
-
-
-
-
- 可伸缩列
-
-
-
-
- 是否增改
-
-
-
-
- 是否导入导出
-
-
-
-
- 必填
-
-
-
-
- 查询
-
-
-
-
- 查询方式
-
-
-
-
- 排序
-
-
-
-
- 字段名首字母小写
-
-
-
-
- 字段名首字母大写
-
-
-
-
- 代码生成器配置
-
-
-
-
- 系统配置种子数据
-
-
-
-
- 系统配置种子数据
-
-
-
-
- 代码生成基础添加参数
-
-
-
-
- 所属库名称
-
-
-
-
- 主表名称
-
-
-
-
- 功能列表
-
-
-
-
- 生成模版
-
-
-
-
- 数据权限
-
-
-
-
- 实体名称
-
-
-
-
- 表前缀移除
-
-
-
-
- 生成方式
-
-
-
-
- 所属模块
-
-
-
-
- 路由名
-
-
-
-
- 图标
-
-
-
-
- 功能名
-
-
-
-
- 业务名
-
-
-
-
- 类名
-
-
-
-
- 表单布局
-
-
-
-
- 使用栅格
-
-
-
-
- 左侧树
-
-
-
-
- 前端路径
-
-
-
-
- 服务层
-
-
-
-
- 控制器层
-
-
-
-
- 排序
-
-
-
-
- 作者名
-
-
-
-
- 代码生成基础编辑参数
-
-
-
-
- 执行代码生成参数
-
-
-
-
- 生成类型
-
-
-
-
- 表字段信息输出
-
-
-
-
- 字段名称
-
-
-
-
- 是否主键
-
-
-
-
- 字段类型
-
-
-
-
- 字段注释
-
-
-
-
- 预览代码生成结果
-
-
-
-
- SQL代码结果集
-
-
-
-
- 前端代码结果集
-
-
-
-
- 后端代码结果集
-
-
-
-
- 代码文件名称
-
-
-
-
- 文件路径
-
-
-
-
- 代码文件内容
-
-
-
-
- 代码生成绑定视图
-
-
-
-
- 生成时间
-
-
-
-
- 表字段
-
-
-
-
- 菜单ID
-
-
-
-
- 菜单编码
-
-
-
-
- /菜单路径
-
-
-
-
- /菜单路径
-
-
-
-
- 添加按钮ID
-
-
-
-
- 批量删除按钮ID
-
-
-
-
- 编辑按钮ID
-
-
-
-
- 删除按钮ID
-
-
-
-
- 类名首字母小写
-
-
-
-
- swagger分组名称
-
-
-
-
- 服务名
-
-
-
-
- 服务名开头首字母小写
-
-
-
-
- 分页查询
-
-
-
-
- 列表查询
-
-
-
-
- 添加
-
-
-
-
- 修改
-
-
-
-
- 修改
-
-
-
-
- 详情
-
-
-
-
- 导入
-
-
-
-
- 导入模板下载
-
-
-
-
- 导入预览
-
-
-
-
- 导入
-
-
-
-
- 批量编辑
-
-
-
-
- 树查询
-
-
-
-
- 分页参数
-
-
-
-
- 添加参数
-
-
-
-
- 编辑参数
-
-
-
-
- 树查询参数
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 生成后端代码文件
-
- 后端代码模板
- 代码基础
- 后端生成路径
- 是否是zip方式
-
-
-
- 生成前端代码文件
-
- 前端代码模板
- 代码基础
- 前端生成路径
-
-
-
- 生成sql代码文件
-
- 后端代码模板
- 生成路径
-
-
-
- 获取sql代码预览结果
-
- 视图
- 模板路径
-
-
-
-
- 获取后端代码预览结果
-
- 视图
- 模板路径
-
-
-
-
- 获取前端代码预览结果
-
- 视图
- 模板路径
-
-
-
-
- 获取代码生成视图
-
-
-
-
-
-
- 视图渲染
-
- 模板内容
- 参数
-
-
-
-
- 获得文件夹下所有的文件
-
- 文件夹路径
-
-
-
-
- 代码生成预览
-
- 基础配置
-
-
-
-
- 获取代码生成基础
-
-
-
-
-
-
- 创建代码生成相关的菜单按钮和授权关系
-
-
-
-
-
-
- 代码生成基础服务
-
-
-
-
- 添加代码生成器基础
-
-
-
-
-
-
- 删除代码生成配置
-
- ID列表
-
-
-
-
- 编辑代码生成基础配置
-
-
- 代码生产基础
-
-
-
- 执行代码生成:本地
-
-
-
-
-
-
- 执行代码生成:压缩包
-
-
-
-
-
-
- 获取项目所有程序集
-
- 程序集列表
-
-
-
- 获取表信息
-
- 是否所有表
- 实体表列表
-
-
-
- 获取代码生成基础分页
-
- 查询参数
- 代码生成基础分页列表
-
-
-
- 代码生成预览
-
- 代码生成基础Id
- 预览结果
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 代码生成详细配置服务
-
-
-
-
- 批量更新
-
-
-
-
-
-
- 查询代码生成详细配置列表
-
-
- 配置列表
-
-
-
- AppStartup启动类
-
-
-
-
- ConfigureServices中不能解析服务,比如App.GetService(),尤其是不能在ConfigureServices中获取诸如缓存等数据进行初始化,应该在Configure中进行
- 服务都还没初始化完成,会导致内存中存在多份 IOC 容器!!
- 正确应该在 Configure 中,这个时候服务(IServiceCollection 已经完成 BuildServiceProvider() 操作了
-
-
-
-
-
diff --git a/api/SimpleAdmin/SimpleAdmin.Plugin/SimpleAdmin.Plugin.Gen/Startup.cs b/api/SimpleAdmin/SimpleAdmin.Plugin/SimpleAdmin.Plugin.Gen/Startup.cs
deleted file mode 100644
index 98dc77f805ab73516a4e18b57af52d64f7734ccc..0000000000000000000000000000000000000000
--- a/api/SimpleAdmin/SimpleAdmin.Plugin/SimpleAdmin.Plugin.Gen/Startup.cs
+++ /dev/null
@@ -1,31 +0,0 @@
-using System.Reflection;
-
-namespace SimpleAdmin.Plugin.Gen;
-
-///
-/// AppStartup启动类
-///
-public class Startup : AppStartup
-{
- ///
- /// ConfigureServices中不能解析服务,比如App.GetService(),尤其是不能在ConfigureServices中获取诸如缓存等数据进行初始化,应该在Configure中进行
- /// 服务都还没初始化完成,会导致内存中存在多份 IOC 容器!!
- /// 正确应该在 Configure 中,这个时候服务(IServiceCollection 已经完成 BuildServiceProvider() 操作了
- ///
- ///
- public void ConfigureServices(IServiceCollection services)
- {
- //代码生成器配置转实体
- services.AddConfigurableOptions();
- //试图引擎
- services.AddViewEngine();
- }
-
- public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
- {
- var fullName = Assembly.GetExecutingAssembly().FullName;//获取程序集全名
- //通过 App.GetOptions 获取选项
- var settings = App.GetOptions();
- CodeFirstUtils.CodeFirst(settings, fullName);//CodeFirst
- }
-}
\ No newline at end of file
diff --git a/api/SimpleAdmin/SimpleAdmin.Plugin/SimpleAdmin.Plugin.Mqtt/Const/MqttConst.cs b/api/SimpleAdmin/SimpleAdmin.Plugin/SimpleAdmin.Plugin.Mqtt/Const/MqttConst.cs
deleted file mode 100644
index 60941cdbf4e728f0c96247a2dfc87e732dd06801..0000000000000000000000000000000000000000
--- a/api/SimpleAdmin/SimpleAdmin.Plugin/SimpleAdmin.Plugin.Mqtt/Const/MqttConst.cs
+++ /dev/null
@@ -1,32 +0,0 @@
-namespace SimpleAdmin.Plugin.Mqtt;
-
-///
-/// mqtt常量
-///
-public class MqttConst
-{
- ///
- /// mqtt认证登录信息key
- ///
- public const string Cache_MqttClientUser = CacheConst.Cache_Prefix_Web + "MqttClientUser:";
-
- ///
- /// mqtt主题前缀
- ///
- public const string Mqtt_TopicPrefix = "SimpleAdmin/";
-
- ///
- /// 登出
- ///
- public const string Mqtt_Message_LoginOut = "LoginOut";
-
- ///
- /// 新消息
- ///
- public const string Mqtt_Message_New = "NewMessage";
-
- ///
- /// 修改密码
- ///
- public const string Mqtt_Message_UpdatePassword = "UpdatePassword";
-}
\ No newline at end of file
diff --git a/api/SimpleAdmin/SimpleAdmin.Plugin/SimpleAdmin.Plugin.Mqtt/GlobalUsing.cs b/api/SimpleAdmin/SimpleAdmin.Plugin/SimpleAdmin.Plugin.Mqtt/GlobalUsing.cs
deleted file mode 100644
index 1992ecd78b9aee5a7fee9a372d8c3383006467e6..0000000000000000000000000000000000000000
--- a/api/SimpleAdmin/SimpleAdmin.Plugin/SimpleAdmin.Plugin.Mqtt/GlobalUsing.cs
+++ /dev/null
@@ -1,13 +0,0 @@
-global using Furion;
-global using Furion.DependencyInjection;
-global using Microsoft.AspNetCore.Builder;
-global using Microsoft.AspNetCore.Hosting;
-global using Microsoft.Extensions.DependencyInjection;
-global using SimpleAdmin.Core;
-global using SimpleAdmin.Cache;
-global using SimpleAdmin.Plugin.Core;
-global using SimpleAdmin.SqlSugar;
-global using SimpleMQTT;
-global using Microsoft.AspNetCore.Authorization;
-global using Microsoft.AspNetCore.Mvc;
-global using SimpleAdmin.System;
diff --git a/api/SimpleAdmin/SimpleAdmin.Plugin/SimpleAdmin.Plugin.Mqtt/MqttComponent.cs b/api/SimpleAdmin/SimpleAdmin.Plugin/SimpleAdmin.Plugin.Mqtt/MqttComponent.cs
deleted file mode 100644
index 8554148209e1330082df43500fa955405f2e001d..0000000000000000000000000000000000000000
--- a/api/SimpleAdmin/SimpleAdmin.Plugin/SimpleAdmin.Plugin.Mqtt/MqttComponent.cs
+++ /dev/null
@@ -1,32 +0,0 @@
-namespace SimpleAdmin.Plugin.Mqtt;
-
-///
-/// mqtt组件
-///
-public sealed class MqttComponent : IServiceComponent
-{
- ///
- /// ConfigureServices中不能解析服务,比如App.GetService(),尤其是不能在ConfigureServices中获取诸如缓存等数据进行初始化,应该在Configure中进行
- /// 服务都还没初始化完成,会导致内存中存在多份 IOC 容器!!
- /// 正确应该在 Configure 中,这个时候服务(IServiceCollection 已经完成 BuildServiceProvider() 操作了
- ///
- ///
- ///
- public void Load(IServiceCollection services, ComponentContext componentContext)
- {
- Console.WriteLine("注册Mqtt插件");
- services.AddMqttClientManager();
- }
-}
-
-///
-/// mqtt组件
-/// 模拟 Configure
-///
-public sealed class MqttApplicationComponent : IApplicationComponent
-{
- public void Load(IApplicationBuilder app, IWebHostEnvironment env, ComponentContext componentContext)
- {
- App.GetService();//获取mqtt服务判断配置是否有问题
- }
-}
\ No newline at end of file
diff --git a/api/SimpleAdmin/SimpleAdmin.Plugin/SimpleAdmin.Plugin.Mqtt/Service/Notice/MqttNoticeService.cs b/api/SimpleAdmin/SimpleAdmin.Plugin/SimpleAdmin.Plugin.Mqtt/Service/Notice/MqttNoticeService.cs
deleted file mode 100644
index 400533af20ceb24158c74a1eb449fca54b02e56b..0000000000000000000000000000000000000000
--- a/api/SimpleAdmin/SimpleAdmin.Plugin/SimpleAdmin.Plugin.Mqtt/Service/Notice/MqttNoticeService.cs
+++ /dev/null
@@ -1,63 +0,0 @@
-namespace SimpleAdmin.Plugin.Mqtt;
-
-///
-///
-///
-[Injection(Named = "mqtt")]
-public class MqttNoticeService : INoticeService
-{
- public MqttNoticeService()
- {
- }
-
- ///
- public async Task UpdatePassWord(string userId, List clientIds, string message)
- {
- var _mqttClientManager = GetMqttClientManager();
- //发送修改密码消息
- await _mqttClientManager.GetClient().PublishAsync(MqttConst.Mqtt_TopicPrefix + userId, new MqttMessage
- {
- Data = new { Message = message, ClientIds = clientIds },
- MsgType = MqttConst.Mqtt_Message_UpdatePassword
- });
- }
-
- ///
- public async Task NewMesage(List userIds, List clientIds, string message)
- {
- var _mqttClientManager = GetMqttClientManager();
- //遍历用户Id
- foreach (var userId in userIds)
- {
- //发送消息
- await _mqttClientManager.GetClient().PublishAsync(MqttConst.Mqtt_TopicPrefix + userId, new MqttMessage
- {
- Data = new { Message = message },
- MsgType = MqttConst.Mqtt_Message_New
- });
- }
- }
-
- ///
- public async Task UserLoginOut(string userId, List clientIds, string message)
- {
- var _mqttClientManager = GetMqttClientManager();
- //发送通知下线消息
- await _mqttClientManager.GetClient().PublishAsync(MqttConst.Mqtt_TopicPrefix + userId, new MqttMessage
- {
- Data = new { Message = message, ClientIds = clientIds },
- MsgType = MqttConst.Mqtt_Message_LoginOut
- });
- }
-
- ///
- /// 获取hubContext
- ///
- ///
- private IMqttClientManager GetMqttClientManager()
- {
- //解析服务
- var service = App.GetService();
- return service;
- }
-}
\ No newline at end of file
diff --git a/api/SimpleAdmin/SimpleAdmin.Plugin/SimpleAdmin.Plugin.Mqtt/SimpleAdmin.Plugin.Mqtt.csproj b/api/SimpleAdmin/SimpleAdmin.Plugin/SimpleAdmin.Plugin.Mqtt/SimpleAdmin.Plugin.Mqtt.csproj
deleted file mode 100644
index 73136c4ef8168130042fd3f05179cef2fceff3e3..0000000000000000000000000000000000000000
--- a/api/SimpleAdmin/SimpleAdmin.Plugin/SimpleAdmin.Plugin.Mqtt/SimpleAdmin.Plugin.Mqtt.csproj
+++ /dev/null
@@ -1,28 +0,0 @@
-
-
-
- net7.0;net6.0
- 1701;1702;8616;1591;8618;8619;8629;8602;8603;8604;8625;8765
- SimpleAdmin.Plugin.Mqtt.xml
- enable
- enable
-
-
-
-
-
-
-
-
-
-
-
-
- PreserveNewest
-
-
- PreserveNewest
-
-
-
-
diff --git a/api/SimpleAdmin/SimpleAdmin.Plugin/SimpleAdmin.Plugin.Mqtt/SimpleAdmin.Plugin.Mqtt.xml b/api/SimpleAdmin/SimpleAdmin.Plugin/SimpleAdmin.Plugin.Mqtt/SimpleAdmin.Plugin.Mqtt.xml
deleted file mode 100644
index 1516ce2870f88411324ffefa63582b61e52a1457..0000000000000000000000000000000000000000
--- a/api/SimpleAdmin/SimpleAdmin.Plugin/SimpleAdmin.Plugin.Mqtt/SimpleAdmin.Plugin.Mqtt.xml
+++ /dev/null
@@ -1,196 +0,0 @@
-
-
-
- SimpleAdmin.Plugin.Mqtt
-
-
-
-
- mqtt常量
-
-
-
-
- mqtt认证登录信息key
-
-
-
-
- mqtt主题前缀
-
-
-
-
- 登出
-
-
-
-
- 新消息
-
-
-
-
- 修改密码
-
-
-
-
- mqtt服务控制器
-
-
-
-
- 获取mqtt登录参数
-
-
-
-
-
- mqtt认证
-
-
-
-
-
-
- mqtt组件
-
-
-
-
- ConfigureServices中不能解析服务,比如App.GetService(),尤其是不能在ConfigureServices中获取诸如缓存等数据进行初始化,应该在Configure中进行
- 服务都还没初始化完成,会导致内存中存在多份 IOC 容器!!
- 正确应该在 Configure 中,这个时候服务(IServiceCollection 已经完成 BuildServiceProvider() 操作了
-
-
-
-
-
-
- mqtt组件
- 模拟 Configure
-
-
-
-
- mqtt认证参数
-
-
-
-
- 用户ID
-
-
-
-
- 账号
-
-
-
-
- 密码
-
-
-
-
- 客户端ID
-
-
-
-
- mqtt登录参数输出
-
-
-
-
- 地址
-
-
-
-
- 用户名
-
-
-
-
- 密码
-
-
-
-
- 客户端ID
-
-
-
-
- 主题列表
-
-
-
-
- mqtt认证输出
-
-
-
-
- 结果 "allow" | "deny" | "ignore", // Default `"ignore"`
-
-
-
-
- 是否超级管理员
-
-
-
-
- Mqtt服务
-
-
-
-
- mqtt登录http认证
-
- 认证参数
- 用户Id
- 认证结果
-
-
-
- 获取mqtt登录web端参数
-
- 登录参数
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 获取hubContext
-
-
-
-
-
diff --git a/api/SimpleAdmin/SimpleAdmin.Plugin/SimpleAdmin.Plugin.Notice/GlobalUsing.cs b/api/SimpleAdmin/SimpleAdmin.Plugin/SimpleAdmin.Plugin.Notice/GlobalUsing.cs
new file mode 100644
index 0000000000000000000000000000000000000000..e02abfc9b0e17c18f0c365f044cc760d3b961f4a
--- /dev/null
+++ b/api/SimpleAdmin/SimpleAdmin.Plugin/SimpleAdmin.Plugin.Notice/GlobalUsing.cs
@@ -0,0 +1 @@
+
diff --git a/api/SimpleAdmin/SimpleAdmin.Plugin/SimpleAdmin.Plugin.Core/Interface/INoticeService.cs b/api/SimpleAdmin/SimpleAdmin.Plugin/SimpleAdmin.Plugin.Notice/Interface/INoticeService.cs
similarity index 37%
rename from api/SimpleAdmin/SimpleAdmin.Plugin/SimpleAdmin.Plugin.Core/Interface/INoticeService.cs
rename to api/SimpleAdmin/SimpleAdmin.Plugin/SimpleAdmin.Plugin.Notice/Interface/INoticeService.cs
index 710944b9ee21ae30b1f82a7ab005e2b21a873e5a..575a8c82f6f06d659978db5d83c6b3723c691253 100644
--- a/api/SimpleAdmin/SimpleAdmin.Plugin/SimpleAdmin.Plugin.Core/Interface/INoticeService.cs
+++ b/api/SimpleAdmin/SimpleAdmin.Plugin/SimpleAdmin.Plugin.Notice/Interface/INoticeService.cs
@@ -1,7 +1,19 @@
-namespace SimpleAdmin.Plugin.Core;
+// Copyright (c) 2022-Now 少林寺驻北固山办事处大神父王喇嘛
+//
+// SimpleAdmin 基于 Apache License Version 2.0 协议发布,可用于商业项目,但必须遵守以下补充条款:
+// 1.请不要删除和修改根目录下的LICENSE文件。
+// 2.请不要删除和修改SimpleAdmin源码头部的版权声明。
+// 3.分发源码时候,请注明软件出处 https://gitee.com/dotnetmoyu/SimpleAdmin
+// 4.基于本软件的作品,只能使用 SimpleAdmin 作为后台服务,除外情况不可商用且不允许二次分发或开源。
+// 5.请不得将本软件应用于危害国家安全、荣誉和利益的行为,不能以任何形式用于非法为目的的行为。
+// 6.任何基于本软件而产生的一切法律纠纷和责任,均于我司无关。
+
+using MoYu.DependencyInjection;
+
+namespace SimpleAdmin.Plugin.Notice;
///
-/// 通知服务
+/// 通知接口
///
public interface INoticeService : ISingleton
{
@@ -9,26 +21,23 @@ public interface INoticeService : ISingleton
/// 通知用户下线
///
/// 用户ID
- /// clientId列表
/// 通知内容
///
- Task UserLoginOut(string userId, List clientIds, string message);
+ internal Task UserLoginOut(string userId, string message);
///
/// 通知用户修改密码
///
/// 用户ID
- /// clientId列表
/// 通知内容
///
- Task UpdatePassWord(string userId, List clientIds, string message);
+ internal Task UpdatePassWord(string userId, string message);
///
/// 收到新的消息
///
/// 用户Id列表
- /// clientId列表
///
///
- Task NewMesage(List userIds, List clientIds, string message);
-}
\ No newline at end of file
+ internal Task NewMesage(List userIds, string message);
+}
diff --git a/api/SimpleAdmin/SimpleAdmin.Plugin/SimpleAdmin.Plugin.Notice/SimpleAdmin.Plugin.Notice.csproj b/api/SimpleAdmin/SimpleAdmin.Plugin/SimpleAdmin.Plugin.Notice/SimpleAdmin.Plugin.Notice.csproj
new file mode 100644
index 0000000000000000000000000000000000000000..33acd59288914ff6a7edb68dcc46758311571bc7
--- /dev/null
+++ b/api/SimpleAdmin/SimpleAdmin.Plugin/SimpleAdmin.Plugin.Notice/SimpleAdmin.Plugin.Notice.csproj
@@ -0,0 +1,5 @@
+
+
+
+
+
diff --git a/api/SimpleAdmin/SimpleAdmin.Plugin/SimpleAdmin.Plugin.SignalR/GlobalUsing.cs b/api/SimpleAdmin/SimpleAdmin.Plugin/SimpleAdmin.Plugin.SignalR/GlobalUsing.cs
deleted file mode 100644
index d97fa4af6cded6c452304fb9134db188338d7755..0000000000000000000000000000000000000000
--- a/api/SimpleAdmin/SimpleAdmin.Plugin/SimpleAdmin.Plugin.SignalR/GlobalUsing.cs
+++ /dev/null
@@ -1,7 +0,0 @@
-global using Furion;
-global using Furion.DependencyInjection;
-global using Microsoft.AspNetCore.SignalR;
-global using Microsoft.Extensions.DependencyInjection;
-global using SimpleAdmin.Core;
-global using SimpleAdmin.Cache;
-global using SimpleAdmin.Plugin.Core;
\ No newline at end of file
diff --git a/api/SimpleAdmin/SimpleAdmin.Plugin/SimpleAdmin.Plugin.SignalR/Hub/ISimpleHub.cs b/api/SimpleAdmin/SimpleAdmin.Plugin/SimpleAdmin.Plugin.SignalR/Hub/ISimpleHub.cs
deleted file mode 100644
index 37d306ac377c12f122ab07b5ccd08a556f6593ed..0000000000000000000000000000000000000000
--- a/api/SimpleAdmin/SimpleAdmin.Plugin/SimpleAdmin.Plugin.SignalR/Hub/ISimpleHub.cs
+++ /dev/null
@@ -1,21 +0,0 @@
-namespace SimpleAdmin.Plugin.SignalR;
-
-///
-/// 即时通讯集线器
-///
-public interface ISimpleHub
-{
- ///
- /// 退出登录
- ///
- ///
- ///
- Task LoginOut(object context);
-
- ///
- /// 新消息
- ///
- ///
- ///
- Task NewMessage(object context);
-}
\ No newline at end of file
diff --git a/api/SimpleAdmin/SimpleAdmin.Plugin/SimpleAdmin.Plugin.SignalR/Hub/SimpleHub.cs b/api/SimpleAdmin/SimpleAdmin.Plugin/SimpleAdmin.Plugin.SignalR/Hub/SimpleHub.cs
deleted file mode 100644
index c76457a6f6a9141691be74f1828b4ef76d4c8c36..0000000000000000000000000000000000000000
--- a/api/SimpleAdmin/SimpleAdmin.Plugin/SimpleAdmin.Plugin.SignalR/Hub/SimpleHub.cs
+++ /dev/null
@@ -1,101 +0,0 @@
-using Furion.InstantMessaging;
-using Masuit.Tools;
-using Microsoft.AspNetCore.Authorization;
-using Microsoft.AspNetCore.Http.Connections;
-
-namespace SimpleAdmin.Plugin.SignalR;
-
-///
-///
-///
-//[Authorize]
-[MapHub("/hubs/simple")]
-[Authorize]
-public class SimpleHub : Hub
-{
- private readonly ISimpleCacheService _simpleCacheService;
-
- public SimpleHub(ISimpleCacheService simpleCacheService)
- {
- _simpleCacheService = simpleCacheService;
- }
-
- ///
- /// 连接
- ///
- ///
- public override async Task OnConnectedAsync()
- {
- var token = Context.GetHttpContext().Request.Query["access_token"];//获取token
- if (!string.IsNullOrEmpty(token))
- {
- var userIdentifier = Context.UserIdentifier;//自定义的Id
- UpdateRedis(userIdentifier, token);//更新redis
- }
- }
-
- ///
- /// 断开连接
- ///
- ///
- ///
- public override async Task OnDisconnectedAsync(Exception? exception)
- {
- var userIdentifier = Context.UserIdentifier;//自定义的Id
- UpdateRedis(userIdentifier, null, false);//更新redis
- await base.OnDisconnectedAsync(exception);
- }
-
- ///
- /// 退出登录
- ///
- ///
- ///
- public async Task LoginOut(string userId)
- {
- await Clients.User(userId).LoginOut("退出登录");
- }
-
- #region 方法
-
- ///
- /// 更新redis
- ///
- /// 用户id
- /// token
- /// 是否是上线
- private void UpdateRedis(string userIdentifier, string token, bool ifConnect = true)
- {
- var userId = userIdentifier.Split("_")[0];//分割取第一个
- if (!string.IsNullOrEmpty(userId))
- {
- //获取redis当前用户的token信息列表
- var tokenInfos = _simpleCacheService.HashGetOne>(CacheConst.Cache_UserToken, userId);
- if (tokenInfos != null)
- {
- if (ifConnect)
- {
- //获取redis中当前token
- var tokenInfo = tokenInfos.Where(it => it.Token == token).FirstOrDefault();
- if (tokenInfo != null)
- {
- tokenInfo.ClientIds.Add(userIdentifier);//添加到客户端列表
- _simpleCacheService.HashAdd(CacheConst.Cache_UserToken, userId, tokenInfos);//更新Redis
- }
- }
- else
- {
- //获取当前客户端ID所在的token信息
- var tokenInfo = tokenInfos.Where(it => it.ClientIds.Contains(userIdentifier)).FirstOrDefault();
- if (tokenInfo != null)
- {
- tokenInfo.ClientIds.RemoveWhere(it => it == userIdentifier);//从客户端列表删除
- _simpleCacheService.HashAdd(CacheConst.Cache_UserToken, userId, tokenInfos);//更新Redis
- }
- }
- }
- }
- }
-
- #endregion 方法
-}
\ No newline at end of file
diff --git a/api/SimpleAdmin/SimpleAdmin.Plugin/SimpleAdmin.Plugin.SignalR/Provider/UserIdProvider.cs b/api/SimpleAdmin/SimpleAdmin.Plugin/SimpleAdmin.Plugin.SignalR/Provider/UserIdProvider.cs
deleted file mode 100644
index 889c563fec7ebe62b205e45e0ef039099099684b..0000000000000000000000000000000000000000
--- a/api/SimpleAdmin/SimpleAdmin.Plugin/SimpleAdmin.Plugin.SignalR/Provider/UserIdProvider.cs
+++ /dev/null
@@ -1,21 +0,0 @@
-using Furion.DataEncryption;
-using SimpleTool;
-
-namespace SimpleAdmin.Plugin.SignalR;
-
-///
-/// 用户ID提供器
-///
-public class UserIdProvider : IUserIdProvider
-{
- public string GetUserId(HubConnectionContext connection)
- {
- var token = connection.GetHttpContext().Request.Query["access_token"];//获取token
- var claims = JWTEncryption.ReadJwtToken(token)?.Claims;//解析token
- var userId = claims.FirstOrDefault(u => u.Type == ClaimConst.UserId)?.Value;//获取用户ID
- if (!string.IsNullOrEmpty(userId))//如果不为空
- return $"{userId}_{RandomHelper.CreateLetterAndNumber(5)}";//返回用户ID
- else
- return connection.ConnectionId;
- }
-}
\ No newline at end of file
diff --git a/api/SimpleAdmin/SimpleAdmin.Plugin/SimpleAdmin.Plugin.SignalR/Service/SignalrNoticeService.cs b/api/SimpleAdmin/SimpleAdmin.Plugin/SimpleAdmin.Plugin.SignalR/Service/SignalrNoticeService.cs
deleted file mode 100644
index ff6f1b8fead6e43696bda768fb32eb4499f8f57e..0000000000000000000000000000000000000000
--- a/api/SimpleAdmin/SimpleAdmin.Plugin/SimpleAdmin.Plugin.SignalR/Service/SignalrNoticeService.cs
+++ /dev/null
@@ -1,48 +0,0 @@
-namespace SimpleAdmin.Plugin.SignalR;
-
-///
-///
-///
-[Injection(Named = "signalr")]
-public class SignalrNoticeService : INoticeService
-{
- public SignalrNoticeService()
- {
- }
-
- ///
- public async Task UpdatePassWord(string userId, List clientIds, string message)
- {
- //发送消息给用户
- await GetHubContext().Clients.Users(clientIds).NewMessage(message);
- }
-
- ///
- public async Task NewMesage(List userIds, List clientIds, string message)
- {
- //发送消息给用户
- await GetHubContext().Clients.Users(clientIds).NewMessage(message);
- }
-
- ///
- public async Task UserLoginOut(string userId, List clientIds, string message)
- {
- //发送消息给用户
- await GetHubContext().Clients.Users(clientIds).LoginOut(message);
- }
-
- #region MyRegion
-
- ///
- /// 获取hubContext
- ///
- ///
- private IHubContext GetHubContext()
- {
- //解析服务
- var service = App.GetService>();
- return service;
- }
-
- #endregion MyRegion
-}
\ No newline at end of file
diff --git a/api/SimpleAdmin/SimpleAdmin.Plugin/SimpleAdmin.Plugin.SignalR/SignalRComponent.cs b/api/SimpleAdmin/SimpleAdmin.Plugin/SimpleAdmin.Plugin.SignalR/SignalRComponent.cs
deleted file mode 100644
index 9231afdeb2b5faaf54e5de44ae5da2b2efc0918f..0000000000000000000000000000000000000000
--- a/api/SimpleAdmin/SimpleAdmin.Plugin/SimpleAdmin.Plugin.SignalR/SignalRComponent.cs
+++ /dev/null
@@ -1,21 +0,0 @@
-namespace SimpleAdmin.Plugin.SignalR;
-
-///
-/// SignalR组件
-///
-public sealed class SignalRComponent : IServiceComponent
-{
- ///
- /// ConfigureServices中不能解析服务,比如App.GetService(),尤其是不能在ConfigureServices中获取诸如缓存等数据进行初始化,应该在Configure中进行
- /// 服务都还没初始化完成,会导致内存中存在多份 IOC 容器!!
- /// 正确应该在 Configure 中,这个时候服务(IServiceCollection 已经完成 BuildServiceProvider() 操作了
- ///
- ///
- ///
- public void Load(IServiceCollection services, ComponentContext componentContext)
- {
- Console.WriteLine("注册SignalR插件");
- services.AddSignalR();//注册SignalR
- services.AddSingleton();//用户ID提供器
- }
-}
\ No newline at end of file
diff --git a/api/SimpleAdmin/SimpleAdmin.Plugin/SimpleAdmin.Plugin.SignalR/SimpleAdmin.Plugin.SignalR.csproj b/api/SimpleAdmin/SimpleAdmin.Plugin/SimpleAdmin.Plugin.SignalR/SimpleAdmin.Plugin.SignalR.csproj
deleted file mode 100644
index 305f8c2fab0ee73c7410df885147c9a1eff9902d..0000000000000000000000000000000000000000
--- a/api/SimpleAdmin/SimpleAdmin.Plugin/SimpleAdmin.Plugin.SignalR/SimpleAdmin.Plugin.SignalR.csproj
+++ /dev/null
@@ -1,16 +0,0 @@
-
-
-
- net7.0;net6.0
- 1701;1702;8616;1591;8618;8619;8629;8602;8603;8604;8625;8765
- SimpleAdmin.Plugin.SignalR.xml
- enable
- enable
-
-
-
-
-
-
-
-
diff --git a/api/SimpleAdmin/SimpleAdmin.Plugin/SimpleAdmin.Plugin.SignalR/SimpleAdmin.Plugin.SignalR.xml b/api/SimpleAdmin/SimpleAdmin.Plugin/SimpleAdmin.Plugin.SignalR/SimpleAdmin.Plugin.SignalR.xml
deleted file mode 100644
index 6357d3a5be40ac0a32e45b6b4e08415b99f47c58..0000000000000000000000000000000000000000
--- a/api/SimpleAdmin/SimpleAdmin.Plugin/SimpleAdmin.Plugin.SignalR/SimpleAdmin.Plugin.SignalR.xml
+++ /dev/null
@@ -1,99 +0,0 @@
-
-
-
- SimpleAdmin.Plugin.SignalR
-
-
-
-
- 即时通讯集线器
-
-
-
-
- 退出登录
-
-
-
-
-
-
- 新消息
-
-
-
-
-
-
-
-
-
-
-
- 连接
-
-
-
-
-
- 断开连接
-
-
-
-
-
-
- 退出登录
-
-
-
-
-
-
- 更新redis
-
- 用户id
- token
- 是否是上线
-
-
-
- 用户ID提供器
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 获取hubContext
-
-
-
-
-
- SignalR组件
-
-
-
-
- ConfigureServices中不能解析服务,比如App.GetService(),尤其是不能在ConfigureServices中获取诸如缓存等数据进行初始化,应该在Configure中进行
- 服务都还没初始化完成,会导致内存中存在多份 IOC 容器!!
- 正确应该在 Configure 中,这个时候服务(IServiceCollection 已经完成 BuildServiceProvider() 操作了
-
-
-
-
-
-
diff --git a/api/SimpleAdmin/SimpleAdmin.SqlSugar/Const/CommonStatusConst.cs b/api/SimpleAdmin/SimpleAdmin.SqlSugar/Const/CommonStatusConst.cs
new file mode 100644
index 0000000000000000000000000000000000000000..b8aa3764e8c943d4623ca309a7c02d2d73d5423a
--- /dev/null
+++ b/api/SimpleAdmin/SimpleAdmin.SqlSugar/Const/CommonStatusConst.cs
@@ -0,0 +1,27 @@
+// Copyright (c) 2022-Now 少林寺驻北固山办事处大神父王喇嘛
+//
+// SimpleAdmin 基于 Apache License Version 2.0 协议发布,可用于商业项目,但必须遵守以下补充条款:
+// 1.请不要删除和修改根目录下的LICENSE文件。
+// 2.请不要删除和修改SimpleAdmin源码头部的版权声明。
+// 3.分发源码时候,请注明软件出处 https://gitee.com/dotnetmoyu/SimpleAdmin
+// 4.基于本软件的作品,只能使用 SimpleAdmin 作为后台服务,除外情况不可商用且不允许二次分发或开源。
+// 5.请不得将本软件应用于危害国家安全、荣誉和利益的行为,不能以任何形式用于非法为目的的行为。
+// 6.任何基于本软件而产生的一切法律纠纷和责任,均于我司无关。
+
+namespace SimpleAdmin.SqlSugar;
+
+///
+/// 通用状态常量
+///
+public class CommonStatusConst
+{
+ ///
+ /// 启用
+ ///
+ public const string ENABLE = "ENABLE";
+
+ ///
+ /// 停用
+ ///
+ public const string DISABLED = "DISABLED";
+}
diff --git a/api/SimpleAdmin/SimpleAdmin.SqlSugar/Const/DevDictConst.cs b/api/SimpleAdmin/SimpleAdmin.SqlSugar/Const/DevDictConst.cs
deleted file mode 100644
index f024785c3b5ea3eb25d1a362f1daa3d5b44ebb36..0000000000000000000000000000000000000000
--- a/api/SimpleAdmin/SimpleAdmin.SqlSugar/Const/DevDictConst.cs
+++ /dev/null
@@ -1,75 +0,0 @@
-namespace SimpleAdmin.SqlSugar;
-
-///
-/// 字典常量
-///
-public class DevDictConst
-{
- #region 系统字典
-
- ///
- /// 性别
- ///
- public const string GENDER = "GENDER";
-
- ///
- /// 名族
- ///
- public const string NATION = "NATION";
-
- ///
- /// 用户证件类型
- ///
- public const string IDCARD_TYPE = "IDCARD_TYPE";
-
- ///
- /// 通用文化程度
- ///
- public const string CULTURE_LEVEL = "CULTURE_LEVEL";
-
-
-
- #region 系统通用状态
-
- ///
- /// 启用
- ///
- public const string COMMON_STATUS_ENABLE = "ENABLE";
-
- ///
- /// 停用
- ///
- public const string COMMON_STATUS_DISABLED = "DISABLED";
-
- #endregion 系统通用状态
-
- #region 在线用户状态
-
- ///
- /// 在线
- ///
- public const string ONLINE_STATUS_ONLINE = "ONLINE";
-
- ///
- /// 离线
- ///
- public const string ONLINE_STATUS_OFFLINE = "OFFLINE";
-
- #endregion 在线用户状态
-
- #region 上传文件引擎
-
- ///
- /// 本地
- ///
- public const string FILE_ENGINE_LOCAL = "LOCAL";
-
- ///
- /// MINIO
- ///
- public const string FILE_ENGINE_MINIO = "MINIO";
-
- #endregion 上传文件引擎
-
- #endregion 系统字典
-}
\ No newline at end of file
diff --git a/api/SimpleAdmin/SimpleAdmin.SqlSugar/Const/DevLogConst.cs b/api/SimpleAdmin/SimpleAdmin.SqlSugar/Const/DevLogConst.cs
deleted file mode 100644
index 7fde88f0a776c99860e55c4583a912d73f658fe4..0000000000000000000000000000000000000000
--- a/api/SimpleAdmin/SimpleAdmin.SqlSugar/Const/DevLogConst.cs
+++ /dev/null
@@ -1,17 +0,0 @@
-namespace SimpleAdmin.SqlSugar;
-
-///
-/// 日志常量
-///
-public class DevLogConst
-{
- ///
- /// 成功
- ///
- public const string SUCCESS = "SUCCESS";
-
- ///
- /// 成功
- ///
- public const string FAIL = "FAIL";
-}
\ No newline at end of file
diff --git a/api/SimpleAdmin/SimpleAdmin.SqlSugar/Const/EffTypeConst.cs b/api/SimpleAdmin/SimpleAdmin.SqlSugar/Const/EffTypeConst.cs
index 39a4d855cce3314273721a36fe8eec0e6f064f5a..a886470749b205f0470c0c20efe8266d9b4ac3cb 100644
--- a/api/SimpleAdmin/SimpleAdmin.SqlSugar/Const/EffTypeConst.cs
+++ b/api/SimpleAdmin/SimpleAdmin.SqlSugar/Const/EffTypeConst.cs
@@ -1,4 +1,14 @@
-namespace SimpleAdmin.SqlSugar;
+// Copyright (c) 2022-Now 少林寺驻北固山办事处大神父王喇嘛
+//
+// SimpleAdmin 基于 Apache License Version 2.0 协议发布,可用于商业项目,但必须遵守以下补充条款:
+// 1.请不要删除和修改根目录下的LICENSE文件。
+// 2.请不要删除和修改SimpleAdmin源码头部的版权声明。
+// 3.分发源码时候,请注明软件出处 https://gitee.com/dotnetmoyu/SimpleAdmin
+// 4.基于本软件的作品,只能使用 SimpleAdmin 作为后台服务,除外情况不可商用且不允许二次分发或开源。
+// 5.请不得将本软件应用于危害国家安全、荣誉和利益的行为,不能以任何形式用于非法为目的的行为。
+// 6.任何基于本软件而产生的一切法律纠纷和责任,均于我司无关。
+
+namespace SimpleAdmin.SqlSugar;
///
/// 前端控件作用类型常量
@@ -43,7 +53,7 @@ public class EffTypeConst
///
/// 数字输入框
///
- public const string INPUTNUMBER = "inputNumber";
+ public const string INPUT_NUMBER = "inputNumber";
///
/// 滑动数字条
@@ -54,4 +64,4 @@ public class EffTypeConst
/// 下拉框
///
public const string SWITCH = "switch";
-}
\ No newline at end of file
+}
diff --git a/api/SimpleAdmin/SimpleAdmin.SqlSugar/Const/RoleConst.cs b/api/SimpleAdmin/SimpleAdmin.SqlSugar/Const/RoleConst.cs
deleted file mode 100644
index 6f0337b528a277197e38ba6f699cf7f890353e2d..0000000000000000000000000000000000000000
--- a/api/SimpleAdmin/SimpleAdmin.SqlSugar/Const/RoleConst.cs
+++ /dev/null
@@ -1,17 +0,0 @@
-namespace SimpleAdmin.SqlSugar;
-
-///
-/// 角色常量
-///
-public class RoleConst
-{
- ///
- /// 超级管理员
- ///
- public const string SuperAdmin = "superAdmin";
-
- ///
- /// 业务管理员
- ///
- public const string BizAdmin = "bizAdmin";
-}
\ No newline at end of file
diff --git a/api/SimpleAdmin/SimpleAdmin.SqlSugar/Const/SqlsugarConst.cs b/api/SimpleAdmin/SimpleAdmin.SqlSugar/Const/SqlsugarConst.cs
index 894dd0af7dd347e3404fdfb0a21fb75cad2e1238..373ffc2c6189966e0d2eb24094c81c5c1f010cdc 100644
--- a/api/SimpleAdmin/SimpleAdmin.SqlSugar/Const/SqlsugarConst.cs
+++ b/api/SimpleAdmin/SimpleAdmin.SqlSugar/Const/SqlsugarConst.cs
@@ -1,36 +1,56 @@
-namespace SimpleAdmin.SqlSugar;
+// Copyright (c) 2022-Now 少林寺驻北固山办事处大神父王喇嘛
+//
+// SimpleAdmin 基于 Apache License Version 2.0 协议发布,可用于商业项目,但必须遵守以下补充条款:
+// 1.请不要删除和修改根目录下的LICENSE文件。
+// 2.请不要删除和修改SimpleAdmin源码头部的版权声明。
+// 3.分发源码时候,请注明软件出处 https://gitee.com/dotnetmoyu/SimpleAdmin
+// 4.基于本软件的作品,只能使用 SimpleAdmin 作为后台服务,除外情况不可商用且不允许二次分发或开源。
+// 5.请不得将本软件应用于危害国家安全、荣誉和利益的行为,不能以任何形式用于非法为目的的行为。
+// 6.任何基于本软件而产生的一切法律纠纷和责任,均于我司无关。
+
+namespace SimpleAdmin.SqlSugar;
///
-/// Sqlsugar系统常量类
+/// SqlSugar系统常量类
///
-public class SqlsugarConst
+public class SqlSugarConst
{
///
/// 默认库ConfigId
///
- public const string DB_Default = "SimpleAdmin";
+ public const string DB_DEFAULT = "SimpleAdmin";
///
/// 默认表主键
///
- public const string DB_PrimaryKey = "Id";
+ public const string DB_PRIMARY_KEY = "Id";
#region 数据库字段类型
///
/// varchar(max)
///
- public const string NVarCharMax = "nvarchar(max)";
+ public const string N_VAR_CHAR_MAX = "nvarchar(max)";
+
+ ///
+ /// varchar(4000)
+ ///
+ public const string N_VAR_CHAR_4000 = "nvarchar(4000)";
+
+ ///
+ /// varchar(20)
+ ///
+ public const string N_VAR_CHAR_20 = "nvarchar(20)";
///
/// mysql的longtext
///
- public const string LongText = "longtext";
+ public const string LONG_TEXT = "longtext";
///
/// sqlite的text
///
- public const string Text = "text";
+ public const string TEXT = "text";
#endregion 数据库字段类型
-}
\ No newline at end of file
+}
diff --git a/api/SimpleAdmin/SimpleAdmin.SqlSugar/Db/DbContext.cs b/api/SimpleAdmin/SimpleAdmin.SqlSugar/Db/DbContext.cs
index be5da9d75bcf01bf4455032277770850ff0f3d9e..b785973875b94f42c4c5ec3c065e1be0f003add5 100644
--- a/api/SimpleAdmin/SimpleAdmin.SqlSugar/Db/DbContext.cs
+++ b/api/SimpleAdmin/SimpleAdmin.SqlSugar/Db/DbContext.cs
@@ -1,4 +1,16 @@
-namespace SimpleAdmin.SqlSugar;
+// Copyright (c) 2022-Now 少林寺驻北固山办事处大神父王喇嘛
+//
+// SimpleAdmin 基于 Apache License Version 2.0 协议发布,可用于商业项目,但必须遵守以下补充条款:
+// 1.请不要删除和修改根目录下的LICENSE文件。
+// 2.请不要删除和修改SimpleAdmin源码头部的版权声明。
+// 3.分发源码时候,请注明软件出处 https://gitee.com/dotnetmoyu/SimpleAdmin
+// 4.基于本软件的作品,只能使用 SimpleAdmin 作为后台服务,除外情况不可商用且不允许二次分发或开源。
+// 5.请不得将本软件应用于危害国家安全、荣誉和利益的行为,不能以任何形式用于非法为目的的行为。
+// 6.任何基于本软件而产生的一切法律纠纷和责任,均于我司无关。
+
+using DbType = SqlSugar.DbType;
+
+namespace SimpleAdmin.SqlSugar;
///
/// 数据库上下文对象
@@ -6,23 +18,23 @@
public static class DbContext
{
///
- /// 读取配置文件中的 ConnectionStrings:Sqlsugar 配置节点
+ /// 读取配置文件中的 ConnectionStrings:SqlSugar 配置节点
///
- public static readonly List DbConfigs = App.GetConfig>("SqlSugarSettings:ConnectionStrings");
+ public static readonly List DB_CONFIGS = App.GetConfig>("SqlSugarSettings:ConnectionStrings");
///
/// SqlSugar 数据库实例
///
- public static readonly SqlSugarScope Db = new SqlSugarScope(DbConfigs.Adapt>(), db =>
+ public static readonly SqlSugarScope DB = new SqlSugarScope(DB_CONFIGS.Adapt>(), db =>
{
//遍历配置的数据库
- DbConfigs.ForEach(it =>
+ DB_CONFIGS.ForEach(it =>
{
- var sqlsugarScope = db.GetConnectionScope(it.ConfigId);//获取当前库
- MoreSetting(sqlsugarScope);//更多设置
- ExternalServicesSetting(sqlsugarScope, it);//实体拓展配置
- AopSetting(sqlsugarScope);//aop配置
- FilterSetting(sqlsugarScope);//过滤器配置
+ var sqlSugarScope = db.GetConnectionScope(it.ConfigId);//获取当前库
+ MoreSetting(sqlSugarScope, it.DbType);//更多设置
+ ExternalServicesSetting(sqlSugarScope, it);//实体拓展配置
+ AopSetting(sqlSugarScope);//aop配置
+ FilterSetting(sqlSugarScope);//过滤器配置
});
});
@@ -45,18 +57,18 @@ public static class DbContext
EntityService = (c, p) =>
{
//如果是mysql并且是varchar(max) 已弃用
- //if (config.DbType == SqlSugar.DbType.MySql && (p.DataType == SqlsugarConst.NVarCharMax))
+ //if (config.DbType == SqlSugar.DbType.MySql && (p.DataType == SqlSugarConst.NVarCharMax))
//{
- // p.DataType = SqlsugarConst.LongText;//转成mysql的longtext
+ // p.DataType = SqlSugarConst.LongText;//转成mysql的longtext
//}
- //else if (config.DbType == SqlSugar.DbType.Sqlite && (p.DataType == SqlsugarConst.NVarCharMax))
+ //else if (config.DbType == SqlSugar.DbType.Sqlite && (p.DataType == SqlSugarConst.NVarCharMax))
//{
- // p.DataType = SqlsugarConst.Text;//转成sqlite的text
+ // p.DataType = SqlSugarConst.Text;//转成sqlite的text
//}
//默认不写IsNullable为非必填
//if (new NullabilityInfoContext().Create(c).WriteState is NullabilityState.Nullable)
// p.IsNullable = true;
- if (config.IsUnderLine && !p.IsIgnore && !p.DbColumnName.Contains('_'))
+ if (config.IsUnderLine && !p.IsIgnore && !p.DbColumnName.Contains('_') && p.DbColumnName != "ColumnName")
p.DbColumnName = UtilMethods.ToUnderLine(p.DbColumnName);// 驼峰转下划线
}
};
@@ -101,7 +113,7 @@ public static class DbContext
}
};
//异常
- db.Aop.OnError = (ex) =>
+ db.Aop.OnError = ex =>
{
//如果不是开发环境就打印日志
if (App.WebHostEnvironment.IsDevelopment())
@@ -134,11 +146,11 @@ public static class DbContext
{
//创建人和创建机构ID
if (entityInfo.PropertyName == nameof(BaseEntity.CreateUserId))
- entityInfo.SetValue(App.User.FindFirst(ClaimConst.UserId)?.Value);
+ entityInfo.SetValue(App.User.FindFirst(ClaimConst.USER_ID)?.Value);
if (entityInfo.PropertyName == nameof(BaseEntity.CreateUser))
- entityInfo.SetValue(App.User?.FindFirst(ClaimConst.Account)?.Value);
+ entityInfo.SetValue(App.User.FindFirst(ClaimConst.ACCOUNT)?.Value);
if (entityInfo.PropertyName == nameof(DataEntityBase.CreateOrgId))
- entityInfo.SetValue(App.User.FindFirst(ClaimConst.OrgId)?.Value);
+ entityInfo.SetValue(App.User.FindFirst(ClaimConst.ORG_ID)?.Value);
}
}
// 更新操作
@@ -151,9 +163,9 @@ public static class DbContext
if (App.User != null)
{
if (entityInfo.PropertyName == nameof(BaseEntity.UpdateUserId))
- entityInfo.SetValue(App.User?.FindFirst(ClaimConst.UserId)?.Value);
+ entityInfo.SetValue(App.User?.FindFirst(ClaimConst.USER_ID)?.Value);
if (entityInfo.PropertyName == nameof(BaseEntity.UpdateUser))
- entityInfo.SetValue(App.User?.FindFirst(ClaimConst.Account)?.Value);
+ entityInfo.SetValue(App.User?.FindFirst(ClaimConst.ACCOUNT)?.Value);
}
}
};
@@ -167,12 +179,13 @@ public static class DbContext
///
/// 实体更多配置
///
- ///
- private static void MoreSetting(SqlSugarScopeProvider db)
+ /// db
+ /// 数据库类型
+ private static void MoreSetting(SqlSugarScopeProvider db, DbType dbType)
{
db.CurrentConnectionConfig.MoreSettings = new ConnMoreSettings
{
- SqlServerCodeFirstNvarchar = true//设置默认nvarchar
+ SqlServerCodeFirstNvarchar = dbType == DbType.SqlServer//设置默认nvarchar
};
}
@@ -198,4 +211,4 @@ public static class DbContext
{
Console.WriteLine($"=============={msg}==============");
}
-}
\ No newline at end of file
+}
diff --git a/api/SimpleAdmin/SimpleAdmin.SqlSugar/Db/DbRepository.cs b/api/SimpleAdmin/SimpleAdmin.SqlSugar/Db/DbRepository.cs
index d5aa0d540b4fa3b9407d4e13e8a961732262fcbb..6f18a07dbce679ac7b5cb8be6280ea9117d50fd3 100644
--- a/api/SimpleAdmin/SimpleAdmin.SqlSugar/Db/DbRepository.cs
+++ b/api/SimpleAdmin/SimpleAdmin.SqlSugar/Db/DbRepository.cs
@@ -1,17 +1,27 @@
-namespace SimpleAdmin.SqlSugar;
+// Copyright (c) 2022-Now 少林寺驻北固山办事处大神父王喇嘛
+//
+// SimpleAdmin 基于 Apache License Version 2.0 协议发布,可用于商业项目,但必须遵守以下补充条款:
+// 1.请不要删除和修改根目录下的LICENSE文件。
+// 2.请不要删除和修改SimpleAdmin源码头部的版权声明。
+// 3.分发源码时候,请注明软件出处 https://gitee.com/dotnetmoyu/SimpleAdmin
+// 4.基于本软件的作品,只能使用 SimpleAdmin 作为后台服务,除外情况不可商用且不允许二次分发或开源。
+// 5.请不得将本软件应用于危害国家安全、荣誉和利益的行为,不能以任何形式用于非法为目的的行为。
+// 6.任何基于本软件而产生的一切法律纠纷和责任,均于我司无关。
+
+namespace SimpleAdmin.SqlSugar;
///
/// 仓储模式对象
///
[SuppressSniffer]
-public partial class DbRepository : SimpleClient where T : class, new()
+public class DbRepository : SimpleClient where T : class, new()
{
- protected ITenant itenant = null;//多租户事务、GetConnection、IsAnyConnection等功能
+ protected ITenant Tenant;//多租户事务、GetConnection、IsAnyConnection等功能
public DbRepository(ISqlSugarClient context = null) : base(context)//注意这里要有默认值等于null
{
- Context = DbContext.Db.GetConnectionScopeWithAttr();//ioc注入的对象
- itenant = DbContext.Db;
+ Context = DbContext.DB.GetConnectionScopeWithAttr();//ioc注入的对象
+ Tenant = DbContext.DB;
}
#region 仓储方法拓展
@@ -28,8 +38,7 @@ public partial class DbRepository : SimpleClient where T : class, new()
{
if (data.Count > threshold)
return await Context.Fastest().BulkCopyAsync(data);//大数据导入
- else
- return await Context.Insertable(data).ExecuteCommandAsync();//普通导入
+ return await Context.Insertable(data).ExecuteCommandAsync();//普通导入
}
#endregion 插入
@@ -90,12 +99,36 @@ public partial class DbRepository : SimpleClient where T : class, new()
/// 查询条件
/// 查询字段
///
- public virtual Task GetFirstAsync(Expression> whereExpression, Expression> selectExpression)
+ protected virtual Task GetFirstAsync(Expression> whereExpression, Expression> selectExpression)
{
return Context.Queryable().Where(whereExpression).Select(selectExpression).FirstAsync();
}
+ ///
+ /// 根据条件查询获取自动分表的单个数据
+ ///
+ /// 条件表达式
+ /// 开始时间
+ /// 结束时间
+ /// 实体
+ public virtual Task GetFirstSplitTableAsync(Expression> whereExpression, DateTime startTime, DateTime endTime)
+ {
+ return Context.Queryable().Where(whereExpression).SplitTable(startTime, endTime).FirstAsync();
+ }
+
+ ///
+ /// 根据条件查询获取自动分表的单个数据
+ ///
+ /// 条件表达式
+ /// 分表查询表达式
+ /// 实体
+ public virtual Task GetFirstSplitTableAsync(Expression> whereExpression,
+ Func, IEnumerable> getTableNamesFunc)
+ {
+ return Context.Queryable().Where(whereExpression).SplitTable(getTableNamesFunc).FirstAsync();
+ }
+
#endregion 单查
#endregion 仓储方法拓展
-}
\ No newline at end of file
+}
diff --git a/api/SimpleAdmin/SimpleAdmin.SqlSugar/Db/SqlsugarConfig.cs b/api/SimpleAdmin/SimpleAdmin.SqlSugar/Db/SqlsugarConfig.cs
index 11ad5bd11eb44a741d887554077550f6fd08c7b0..f1cc31cf81e5723a587425276053ed5316c94dfd 100644
--- a/api/SimpleAdmin/SimpleAdmin.SqlSugar/Db/SqlsugarConfig.cs
+++ b/api/SimpleAdmin/SimpleAdmin.SqlSugar/Db/SqlsugarConfig.cs
@@ -1,7 +1,17 @@
-namespace SimpleAdmin.SqlSugar;
+// Copyright (c) 2022-Now 少林寺驻北固山办事处大神父王喇嘛
+//
+// SimpleAdmin 基于 Apache License Version 2.0 协议发布,可用于商业项目,但必须遵守以下补充条款:
+// 1.请不要删除和修改根目录下的LICENSE文件。
+// 2.请不要删除和修改SimpleAdmin源码头部的版权声明。
+// 3.分发源码时候,请注明软件出处 https://gitee.com/dotnetmoyu/SimpleAdmin
+// 4.基于本软件的作品,只能使用 SimpleAdmin 作为后台服务,除外情况不可商用且不允许二次分发或开源。
+// 5.请不得将本软件应用于危害国家安全、荣誉和利益的行为,不能以任何形式用于非法为目的的行为。
+// 6.任何基于本软件而产生的一切法律纠纷和责任,均于我司无关。
+
+namespace SimpleAdmin.SqlSugar;
///
-/// sqlsugar数据库配置
+/// SqlSugar数据库配置
///
public sealed class SqlSugarConfig : ConnectionConfig
{
@@ -9,4 +19,4 @@ public sealed class SqlSugarConfig : ConnectionConfig
/// 是否驼峰转下划线
///
public bool IsUnderLine { get; set; }
-}
\ No newline at end of file
+}
diff --git a/api/SimpleAdmin/SimpleAdmin.SqlSugar/Dto/LinqPagedList.cs b/api/SimpleAdmin/SimpleAdmin.SqlSugar/Dto/LinqPagedList.cs
index 2f570566e92cb89017cb07915a1ea312d54d8dcb..2425b3bc6c9afe3b831c0723874f258a4cf5f71c 100644
--- a/api/SimpleAdmin/SimpleAdmin.SqlSugar/Dto/LinqPagedList.cs
+++ b/api/SimpleAdmin/SimpleAdmin.SqlSugar/Dto/LinqPagedList.cs
@@ -1,4 +1,14 @@
-namespace SimpleAdmin.SqlSugar;
+// Copyright (c) 2022-Now 少林寺驻北固山办事处大神父王喇嘛
+//
+// SimpleAdmin 基于 Apache License Version 2.0 协议发布,可用于商业项目,但必须遵守以下补充条款:
+// 1.请不要删除和修改根目录下的LICENSE文件。
+// 2.请不要删除和修改SimpleAdmin源码头部的版权声明。
+// 3.分发源码时候,请注明软件出处 https://gitee.com/dotnetmoyu/SimpleAdmin
+// 4.基于本软件的作品,只能使用 SimpleAdmin 作为后台服务,除外情况不可商用且不允许二次分发或开源。
+// 5.请不得将本软件应用于危害国家安全、荣誉和利益的行为,不能以任何形式用于非法为目的的行为。
+// 6.任何基于本软件而产生的一切法律纠纷和责任,均于我司无关。
+
+namespace SimpleAdmin.SqlSugar;
///
/// Linq分页泛型集合
@@ -6,4 +16,4 @@
///
public class LinqPagedList : SqlSugarPagedList
{
-}
\ No newline at end of file
+}
diff --git a/api/SimpleAdmin/SimpleAdmin.SqlSugar/Entity/BaseEntity.cs b/api/SimpleAdmin/SimpleAdmin.SqlSugar/Entity/BaseEntity.cs
index 90bad6859c0e99f1a4b0398158b948404fd1a9c1..c4b0240df4b5b2b3272a2c212349a3dbb07b04ee 100644
--- a/api/SimpleAdmin/SimpleAdmin.SqlSugar/Entity/BaseEntity.cs
+++ b/api/SimpleAdmin/SimpleAdmin.SqlSugar/Entity/BaseEntity.cs
@@ -1,4 +1,14 @@
-namespace SimpleAdmin.SqlSugar;
+// Copyright (c) 2022-Now 少林寺驻北固山办事处大神父王喇嘛
+//
+// SimpleAdmin 基于 Apache License Version 2.0 协议发布,可用于商业项目,但必须遵守以下补充条款:
+// 1.请不要删除和修改根目录下的LICENSE文件。
+// 2.请不要删除和修改SimpleAdmin源码头部的版权声明。
+// 3.分发源码时候,请注明软件出处 https://gitee.com/dotnetmoyu/SimpleAdmin
+// 4.基于本软件的作品,只能使用 SimpleAdmin 作为后台服务,除外情况不可商用且不允许二次分发或开源。
+// 5.请不得将本软件应用于危害国家安全、荣誉和利益的行为,不能以任何形式用于非法为目的的行为。
+// 6.任何基于本软件而产生的一切法律纠纷和责任,均于我司无关。
+
+namespace SimpleAdmin.SqlSugar;
///
/// 主键实体基类
@@ -23,6 +33,10 @@ public abstract class PrimaryKeyEntity
///
public class BaseEntity : PrimaryKeyEntity
{
+ [SugarColumn(ColumnName = "Status", ColumnDescription = "状态", Length = 20, DefaultValue = CommonStatusConst.ENABLE,
+ IsNullable = true)]
+ public virtual string Status { get; set; }
+
///
/// 创建时间
///
@@ -63,7 +77,7 @@ public class BaseEntity : PrimaryKeyEntity
/// 软删除
///
[SugarColumn(ColumnDescription = "软删除", IsNullable = true)]
- public virtual bool IsDelete { get; set; } = false;
+ public virtual bool IsDelete { get; set; }
}
///
@@ -74,6 +88,6 @@ public abstract class DataEntityBase : BaseEntity
///
/// 创建者部门Id
///
- [SugarColumn(ColumnDescription = "创建者部门Id")]
+ [SugarColumn(ColumnDescription = "创建者部门Id", IsOnlyIgnoreUpdate = true, IsNullable = true)]
public virtual long CreateOrgId { get; set; }
-}
\ No newline at end of file
+}
diff --git a/api/SimpleAdmin/SimpleAdmin.SqlSugar/Extension/ISqlSugarEntitySeedData.cs b/api/SimpleAdmin/SimpleAdmin.SqlSugar/Extension/ISqlSugarEntitySeedData.cs
index 95fc54a444fd590a14bc5fc7a2b3466113fa7b22..12e090b0e30eb6935ae48e6f29ca50faed0dccc4 100644
--- a/api/SimpleAdmin/SimpleAdmin.SqlSugar/Extension/ISqlSugarEntitySeedData.cs
+++ b/api/SimpleAdmin/SimpleAdmin.SqlSugar/Extension/ISqlSugarEntitySeedData.cs
@@ -1,15 +1,24 @@
-namespace SimpleAdmin.SqlSugar;
+// Copyright (c) 2022-Now 少林寺驻北固山办事处大神父王喇嘛
+//
+// SimpleAdmin 基于 Apache License Version 2.0 协议发布,可用于商业项目,但必须遵守以下补充条款:
+// 1.请不要删除和修改根目录下的LICENSE文件。
+// 2.请不要删除和修改SimpleAdmin源码头部的版权声明。
+// 3.分发源码时候,请注明软件出处 https://gitee.com/dotnetmoyu/SimpleAdmin
+// 4.基于本软件的作品,只能使用 SimpleAdmin 作为后台服务,除外情况不可商用且不允许二次分发或开源。
+// 5.请不得将本软件应用于危害国家安全、荣誉和利益的行为,不能以任何形式用于非法为目的的行为。
+// 6.任何基于本软件而产生的一切法律纠纷和责任,均于我司无关。
+
+namespace SimpleAdmin.SqlSugar;
///
/// 实体种子数据接口
///
///
-public interface ISqlSugarEntitySeedData
- where TEntity : class, new()
+public interface ISqlSugarEntitySeedData where TEntity : class, new()
{
///
/// 种子数据
///
///
IEnumerable SeedData();
-}
\ No newline at end of file
+}
diff --git a/api/SimpleAdmin/SimpleAdmin.SqlSugar/Extension/SqlSugarPageExtension.cs b/api/SimpleAdmin/SimpleAdmin.SqlSugar/Extension/SqlSugarPageExtension.cs
index 134b64c63ac36d1636dbab5af1c444909b07328f..0e00dcc08741da692072d5603f7de3fa1b9d2292 100644
--- a/api/SimpleAdmin/SimpleAdmin.SqlSugar/Extension/SqlSugarPageExtension.cs
+++ b/api/SimpleAdmin/SimpleAdmin.SqlSugar/Extension/SqlSugarPageExtension.cs
@@ -1,9 +1,17 @@
-using Masuit.Tools.Models;
+// Copyright (c) 2022-Now 少林寺驻北固山办事处大神父王喇嘛
+//
+// SimpleAdmin 基于 Apache License Version 2.0 协议发布,可用于商业项目,但必须遵守以下补充条款:
+// 1.请不要删除和修改根目录下的LICENSE文件。
+// 2.请不要删除和修改SimpleAdmin源码头部的版权声明。
+// 3.分发源码时候,请注明软件出处 https://gitee.com/dotnetmoyu/SimpleAdmin
+// 4.基于本软件的作品,只能使用 SimpleAdmin 作为后台服务,除外情况不可商用且不允许二次分发或开源。
+// 5.请不得将本软件应用于危害国家安全、荣誉和利益的行为,不能以任何形式用于非法为目的的行为。
+// 6.任何基于本软件而产生的一切法律纠纷和责任,均于我司无关。
namespace SimpleAdmin.SqlSugar;
///
-/// Sqlsugar分页拓展类
+/// SqlSugar分页拓展类
///
public static class SqlSugarPageExtension
{
@@ -12,24 +20,23 @@ public static class SqlSugarPageExtension
///
///
///
- ///
- ///
+ ///
+ ///
///
- public static SqlSugarPagedList ToPagedList(this ISugarQueryable queryable, int current,
- int size)
+ public static SqlSugarPagedList ToPagedList(this ISugarQueryable queryable, int pageNum, int pageSize)
{
var total = 0;
- var records = queryable.ToPageList(current, size, ref total);
- var pages = (int)Math.Ceiling(total / (double)size);
+ var list = queryable.ToPageList(pageSize, pageNum, ref total);
+ var pages = (int)Math.Ceiling(total / (double)pageSize);
return new SqlSugarPagedList
{
- Current = current,
- Size = size,
- Records = records,
+ PageNum = pageSize,
+ PageSize = pageNum,
+ List = list,
Total = total,
Pages = pages,
- HasNextPages = current < pages,
- HasPrevPages = current - 1 > 0
+ HasNextPages = pageSize < pages,
+ HasPrevPages = pageSize - 1 > 0
};
}
@@ -38,24 +45,23 @@ public static class SqlSugarPageExtension
///
///
///
- ///
- ///
+ ///
+ ///
///
- public static async Task> ToPagedListAsync(this ISugarQueryable queryable,
- int current, int size)
+ public static async Task> ToPagedListAsync(this ISugarQueryable queryable, int pageNum, int pageSize)
{
RefAsync totalCount = 0;
- var records = await queryable.ToPageListAsync(current, size, totalCount);
- var totalPages = (int)Math.Ceiling(totalCount / (double)size);
+ var list = await queryable.ToPageListAsync(pageNum, pageSize, totalCount);
+ var totalPages = (int)Math.Ceiling(totalCount / (double)pageSize);
return new SqlSugarPagedList
{
- Current = current,
- Size = size,
- Records = records,
+ PageNum = pageNum,
+ PageSize = pageSize,
+ List = list,
Total = (int)totalCount,
Pages = totalPages,
- HasNextPages = current < totalPages,
- HasPrevPages = current - 1 > 0
+ HasNextPages = pageNum < totalPages,
+ HasPrevPages = pageNum - 1 > 0
};
}
@@ -65,25 +71,25 @@ public static class SqlSugarPageExtension
///
///
///
- ///
+ ///
///
///
///
- public static SqlSugarPagedList ToPagedList(this ISugarQueryable queryable, int pageIndex,
- int pageSize, Expression> expression)
+ public static SqlSugarPagedList ToPagedList(this ISugarQueryable queryable, int pageNum, int pageSize,
+ Expression> expression)
{
var totalCount = 0;
- var items = queryable.ToPageList(pageIndex, pageSize, ref totalCount, expression);
+ var items = queryable.ToPageList(pageNum, pageSize, ref totalCount, expression);
var totalPages = (int)Math.Ceiling(totalCount / (double)pageSize);
return new SqlSugarPagedList
{
- Current = pageIndex,
- Size = pageSize,
- Records = items,
+ PageNum = pageNum,
+ PageSize = pageSize,
+ List = items,
Total = totalCount,
Pages = totalPages,
- HasNextPages = pageIndex < totalPages,
- HasPrevPages = pageIndex - 1 > 0
+ HasNextPages = pageNum < totalPages,
+ HasPrevPages = pageNum - 1 > 0
};
}
@@ -93,25 +99,26 @@ public static class SqlSugarPageExtension
///
///
///
- ///
+ ///
///
///
///
- public static async Task> ToPagedListAsync(
- this ISugarQueryable queryable, int pageIndex, int pageSize, Expression> expression)
+ public static async Task> ToPagedListAsync(this ISugarQueryable queryable, int pageNum,
+ int pageSize,
+ Expression> expression)
{
RefAsync totalCount = 0;
- var items = await queryable.ToPageListAsync(pageIndex, pageSize, totalCount, expression);
+ var items = await queryable.ToPageListAsync(pageNum, pageSize, totalCount, expression);
var totalPages = (int)Math.Ceiling(totalCount / (double)pageSize);
return new SqlSugarPagedList
{
- Current = pageIndex,
- Size = pageSize,
- Records = items,
+ PageNum = pageNum,
+ PageSize = pageSize,
+ List = items,
Total = (int)totalCount,
Pages = totalPages,
- HasNextPages = pageIndex < totalPages,
- HasPrevPages = pageIndex - 1 > 0
+ HasNextPages = pageNum < totalPages,
+ HasPrevPages = pageNum - 1 > 0
};
}
@@ -120,18 +127,18 @@ public static class SqlSugarPageExtension
///
///
/// 数据列表
- /// 当前页
+ /// 当前页
/// 每页数量
/// 分页集合
- public static LinqPagedList LinqPagedList(this List list, int pageIndex, int pageSize)
+ public static LinqPagedList LinqPagedList(this List list, int pageNum, int pageSize)
{
- var result = list.ToPagedList(pageIndex, pageSize);//获取分页
+ var result = list.ToPagedList(pageNum, pageSize);//获取分页
//格式化
return new LinqPagedList
{
- Current = pageIndex,
- Size = result.PageSize,
- Records = result.Data,
+ PageNum = pageNum,
+ PageSize = result.PageSize,
+ List = result.Data,
Total = result.TotalCount,
Pages = result.TotalPages,
HasNextPages = result.HasNext,
@@ -149,12 +156,12 @@ public class SqlSugarPagedList
///
/// 页码
///
- public int Current { get; set; }
+ public int PageNum { get; set; }
///
/// 数量
///
- public int Size { get; set; }
+ public int PageSize { get; set; }
///
/// 总条数
@@ -169,7 +176,7 @@ public class SqlSugarPagedList
///
/// 当前页集合
///
- public IEnumerable Records { get; set; }
+ public IEnumerable List { get; set; }
///
/// 是否有上一页
@@ -180,4 +187,4 @@ public class SqlSugarPagedList
/// 是否有下一页
///
public bool HasNextPages { get; set; }
-}
\ No newline at end of file
+}
diff --git a/api/SimpleAdmin/SimpleAdmin.SqlSugar/Extension/SqlSugarUnitOfWork.cs b/api/SimpleAdmin/SimpleAdmin.SqlSugar/Extension/SqlSugarUnitOfWork.cs
index db208af68bbfa66040796244f70a6624488c27ba..d085315edd48b03130b47bc1134a05fe36e1e852 100644
--- a/api/SimpleAdmin/SimpleAdmin.SqlSugar/Extension/SqlSugarUnitOfWork.cs
+++ b/api/SimpleAdmin/SimpleAdmin.SqlSugar/Extension/SqlSugarUnitOfWork.cs
@@ -1,5 +1,12 @@
-using Furion.DatabaseAccessor;
-using Microsoft.AspNetCore.Mvc.Filters;
+// Copyright (c) 2022-Now 少林寺驻北固山办事处大神父王喇嘛
+//
+// SimpleAdmin 基于 Apache License Version 2.0 协议发布,可用于商业项目,但必须遵守以下补充条款:
+// 1.请不要删除和修改根目录下的LICENSE文件。
+// 2.请不要删除和修改SimpleAdmin源码头部的版权声明。
+// 3.分发源码时候,请注明软件出处 https://gitee.com/dotnetmoyu/SimpleAdmin
+// 4.基于本软件的作品,只能使用 SimpleAdmin 作为后台服务,除外情况不可商用且不允许二次分发或开源。
+// 5.请不得将本软件应用于危害国家安全、荣誉和利益的行为,不能以任何形式用于非法为目的的行为。
+// 6.任何基于本软件而产生的一切法律纠纷和责任,均于我司无关。
namespace SimpleAdmin.SqlSugar;
@@ -69,4 +76,4 @@ public sealed class SqlSugarUnitOfWork : IUnitOfWork
{
_sqlSugarClient.Dispose();
}
-}
\ No newline at end of file
+}
diff --git a/api/SimpleAdmin/SimpleAdmin.SqlSugar/GlobalUsing.cs b/api/SimpleAdmin/SimpleAdmin.SqlSugar/GlobalUsing.cs
index 243ed79061e8d213477c30b7e60874f47df72126..97f859ce937bd74c479a0f09ac97472db21e77a9 100644
--- a/api/SimpleAdmin/SimpleAdmin.SqlSugar/GlobalUsing.cs
+++ b/api/SimpleAdmin/SimpleAdmin.SqlSugar/GlobalUsing.cs
@@ -1,6 +1,16 @@
-global using Furion;
-global using Furion.DependencyInjection;
-global using Furion.FriendlyException;
+// Copyright (c) 2022-Now 少林寺驻北固山办事处大神父王喇嘛
+//
+// SimpleAdmin 基于 Apache License Version 2.0 协议发布,可用于商业项目,但必须遵守以下补充条款:
+// 1.请不要删除和修改根目录下的LICENSE文件。
+// 2.请不要删除和修改SimpleAdmin源码头部的版权声明。
+// 3.分发源码时候,请注明软件出处 https://gitee.com/dotnetmoyu/SimpleAdmin
+// 4.基于本软件的作品,只能使用 SimpleAdmin 作为后台服务,除外情况不可商用且不允许二次分发或开源。
+// 5.请不得将本软件应用于危害国家安全、荣誉和利益的行为,不能以任何形式用于非法为目的的行为。
+// 6.任何基于本软件而产生的一切法律纠纷和责任,均于我司无关。
+
+global using MoYu;
+global using MoYu.DependencyInjection;
+global using MoYu.FriendlyException;
global using Mapster;
global using Masuit.Tools;
global using Microsoft.AspNetCore.Builder;
@@ -8,12 +18,14 @@ global using Microsoft.AspNetCore.Hosting;
global using Microsoft.Extensions.DependencyInjection;
global using Microsoft.Extensions.Hosting;
global using Microsoft.Extensions.Logging;
+global using NewLife.Serialization;
global using SimpleAdmin.Core;
global using SimpleAdmin.Core.Utils;
-global using SimpleAdmin.SqlSugar;
global using SimpleTool;
global using SqlSugar;
global using System.Data;
global using System.Linq.Expressions;
global using System.Reflection;
-global using NewLife.Serialization;
\ No newline at end of file
+global using Masuit.Tools.Models;
+global using MoYu.DatabaseAccessor;
+global using Microsoft.AspNetCore.Mvc.Filters;
diff --git a/api/SimpleAdmin/SimpleAdmin.SqlSugar/SimpleAdmin.SqlSugar.csproj b/api/SimpleAdmin/SimpleAdmin.SqlSugar/SimpleAdmin.SqlSugar.csproj
index 708bbb96ee4f71c5c7b08428037704aad2643b19..87c1c0b688d84fadcf3a38664cf8582c0fccd702 100644
--- a/api/SimpleAdmin/SimpleAdmin.SqlSugar/SimpleAdmin.SqlSugar.csproj
+++ b/api/SimpleAdmin/SimpleAdmin.SqlSugar/SimpleAdmin.SqlSugar.csproj
@@ -1,32 +1,25 @@
-
- net7.0;net6.0
- 1701;1702;8616;1591;8618;8619;8629;8602;8603;8604;8625;8765
- SimpleAdmin.SqlSugar.xml
- enable
- enable
-
-
-
-
-
-
-
-
-
- PreserveNewest
-
-
- PreserveNewest
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+ PreserveNewest
+
+
+ PreserveNewest
+
+
+
+
+
+
+
+
+
diff --git a/api/SimpleAdmin/SimpleAdmin.SqlSugar/SimpleAdmin.SqlSugar.xml b/api/SimpleAdmin/SimpleAdmin.SqlSugar/SimpleAdmin.SqlSugar.xml
index 6f08d6f82e74a5759fce652195363aa92a0f91ac..c0909fa320c557e54cdc5c339febfad05596c33a 100644
--- a/api/SimpleAdmin/SimpleAdmin.SqlSugar/SimpleAdmin.SqlSugar.xml
+++ b/api/SimpleAdmin/SimpleAdmin.SqlSugar/SimpleAdmin.SqlSugar.xml
@@ -4,406 +4,21 @@
SimpleAdmin.SqlSugar
-
+
- 分类常量
+ 通用状态常量
-
-
- 系统基础
-
-
-
-
- 登录策略
-
-
-
-
- 密码策略
-
-
-
-
- 业务定义
-
-
-
-
- 文件-本地
-
-
-
-
- 文件-MINIO
-
-
-
-
- MQTT配置
-
-
-
-
- 用户有哪些角色
-
-
-
-
- 角色有哪些资源
-
-
-
-
- 用户有哪些资源
-
-
-
-
- 角色有哪些权限
-
-
-
-
- 角色有哪些权限
-
-
-
-
- 用户工作台数据
-
-
-
-
- 用户日程数据
-
-
-
-
- 站内信与接收用户
-
-
-
-
- 本人
-
-
-
-
- 所有
-
-
-
-
- 仅所属组织
-
-
-
-
- 所属组织及以下
-
-
-
-
- 自定义
-
-
-
-
- 模块
-
-
-
-
- 菜单
-
-
-
-
- 单页
-
-
-
-
- 按钮
-
-
-
-
- 登录
-
-
-
-
- 登出
-
-
-
-
- 操作
-
-
-
-
- 异常
-
-
-
-
- 框架
-
-
-
-
- 业务
-
-
-
-
- 部门
-
-
-
-
- 公司
-
-
-
-
- 高层
-
-
-
-
- 中层
-
-
-
-
- 基层
-
-
-
-
- 全局
-
-
-
-
- 机构
-
-
-
-
- 通知
-
-
-
-
- 公告
-
-
-
-
- 系统配置常量
-
-
-
-
- 系统默认工作台
-
-
-
-
- 登录验证码开关
-
-
-
-
- 登录验证码开关
-
-
-
-
- 单用户登录开关
-
-
-
-
- 登录错误锁定时长
-
-
-
-
- 登录错误锁定时长
-
-
-
-
- 登录错误次数
-
-
-
-
- 默认用户密码
-
-
-
-
- 密码定期提醒更新
-
-
-
-
- 密码定期提醒更新时间
-
-
-
-
- 修改初始密码提醒
-
-
-
-
- 密码最小长度
-
-
-
-
- 包含数字
-
-
-
-
- 包含小写字母
-
-
-
-
- 包含大写字母
-
-
-
-
- 包含特殊字符
-
-
-
-
- mqtt连接地址
-
-
-
-
- mqtt连接用户名
-
-
-
-
- mqtt连接密码
-
-
-
-
- windows系统本地目录
-
-
-
-
- Unix系统本地目录
-
-
-
-
- MINIO文件AccessKey
-
-
-
-
- MINIO文件SecetKey
-
-
-
-
- MINIO文件EndPoint
-
-
-
-
- MINIO文件默认存储桶
-
-
-
-
- 字典常量
-
-
-
-
- 性别
-
-
-
-
- 名族
-
-
-
-
- 用户证件类型
-
-
-
-
- 通用文化程度
-
-
-
+
启用
-
+
停用
-
-
- 在线
-
-
-
-
- 离线
-
-
-
-
- 本地
-
-
-
-
- MINIO
-
-
-
-
- 日志常量
-
-
-
-
- 成功
-
-
-
-
- 成功
-
-
前端控件作用类型常量
@@ -444,7 +59,7 @@
时间选择器
-
+
数字输入框
@@ -459,77 +74,42 @@
下拉框
-
-
- 资源表常量
-
-
-
+
- 目录
+ SqlSugar系统常量类
-
+
- 组件
-
-
-
-
- 内链
-
-
-
-
- 外链
-
-
-
-
- 系统内置单页面编码
-
-
-
-
- 角色常量
-
-
-
-
- 超级管理员
-
-
-
-
- 业务管理员
+ 默认库ConfigId
-
+
- Sqlsugar系统常量类
+ 默认表主键
-
+
- 默认库ConfigId
+ varchar(max)
-
+
- 默认表主键
+ varchar(4000)
-
+
- varchar(max)
+ varchar(20)
-
+
mysql的longtext
-
+
sqlite的text
@@ -539,12 +119,12 @@
数据库上下文对象
-
+
- 读取配置文件中的 ConnectionStrings:Sqlsugar 配置节点
+ 读取配置文件中的 ConnectionStrings:SqlSugar 配置节点
-
+
SqlSugar 数据库实例
@@ -562,11 +142,12 @@
-
+
实体更多配置
-
+ db
+ 数据库类型
@@ -633,9 +214,26 @@
查询字段
+
+
+ 根据条件查询获取自动分表的单个数据
+
+ 条件表达式
+ 开始时间
+ 结束时间
+ 实体
+
+
+
+ 根据条件查询获取自动分表的单个数据
+
+ 条件表达式
+ 分表查询表达式
+ 实体
+
- sqlsugar数据库配置
+ SqlSugar数据库配置
@@ -728,7 +326,7 @@
- Sqlsugar分页拓展类
+ SqlSugar分页拓展类
@@ -737,8 +335,8 @@
-
-
+
+
@@ -747,8 +345,8 @@
-
-
+
+
@@ -758,7 +356,7 @@
-
+
@@ -770,7 +368,7 @@
-
+
@@ -781,7 +379,7 @@
数据列表
- 当前页
+ 当前页
每页数量
分页集合
@@ -791,12 +389,12 @@
-
+
页码
-
+
数量
@@ -811,7 +409,7 @@
总页数
-
+
当前页集合
@@ -843,7 +441,7 @@
-
+
开启工作单元处理
@@ -851,7 +449,7 @@
-
+
提交工作单元处理
@@ -859,7 +457,7 @@
-
+
回滚工作单元处理
@@ -941,34 +539,34 @@
-
+
- Sqlsugar字段信息
+ SqlSugar字段信息
-
+
字段名称
-
+
是否主键
-
+
字段类型
-
+
字段注释
- Sqlsugar表信息
+ SqlSugar表信息
@@ -1014,7 +612,7 @@
- Sqlusgar通用功能
+ SqlSugar通用功能
diff --git a/api/SimpleAdmin/SimpleAdmin.SqlSugar/SqlSugar.Development.json b/api/SimpleAdmin/SimpleAdmin.SqlSugar/SqlSugar.Development.json
index dc22f7f0bae609ae1b1b3a881a961c72befa2dc8..7a54e5ddee6cdfedeb1b34b7e7a8b7743a7882ca 100644
--- a/api/SimpleAdmin/SimpleAdmin.SqlSugar/SqlSugar.Development.json
+++ b/api/SimpleAdmin/SimpleAdmin.SqlSugar/SqlSugar.Development.json
@@ -1,7 +1,7 @@
{
- //sqlsugar设置
+ //sqlSugar设置
"SqlSugarSettings": {
- //Sqlsugar连接字符串配置
+ //SqlSugar连接字符串配置
"ConnectionStrings": [
{
"ConfigId": "SimpleAdmin", //租户ID
@@ -20,7 +20,7 @@
// {
// "ConfigId": "SimpleAdmin", //租户ID
// "ConnectionString": "Server=192.168.1.16;Database=SimpleAdmin;User=sa;Password=123456;MultipleActiveResultSets=True;", //连接字符串
- // "DbType": "SqlServer", //数据库类型
+ // "DbType": "SqlServer", //数据库类型
// "IsAutoCloseConnection": true, //是否自动释放
// "IsUnderLine": false //是否驼峰转下划线
// }
diff --git a/api/SimpleAdmin/SimpleAdmin.SqlSugar/SqlSugar.Production.json b/api/SimpleAdmin/SimpleAdmin.SqlSugar/SqlSugar.Production.json
index 41f46d9f88b73b0f68aeb8251133ef9a57b8b0b5..6943b6afe106fd1b11b509b4fb31061fd46d80af 100644
--- a/api/SimpleAdmin/SimpleAdmin.SqlSugar/SqlSugar.Production.json
+++ b/api/SimpleAdmin/SimpleAdmin.SqlSugar/SqlSugar.Production.json
@@ -1,7 +1,7 @@
{
//sqlsugar设置
"SqlSugarSettings": {
- //Sqlsugar连接字符串配置
+ //SqlSugar连接字符串配置
"ConnectionStrings": [
{
"ConfigId": "SimpleAdmin", //租户ID
diff --git a/api/SimpleAdmin/SimpleAdmin.SqlSugar/Startup.cs b/api/SimpleAdmin/SimpleAdmin.SqlSugar/Startup.cs
index 4f5156ac708a723797268cbdbf4b70e263407cdf..8104ceee25353013c5f8f76840655065f721e2ef 100644
--- a/api/SimpleAdmin/SimpleAdmin.SqlSugar/Startup.cs
+++ b/api/SimpleAdmin/SimpleAdmin.SqlSugar/Startup.cs
@@ -1,4 +1,12 @@
-using System.Collections;
+// Copyright (c) 2022-Now 少林寺驻北固山办事处大神父王喇嘛
+//
+// SimpleAdmin 基于 Apache License Version 2.0 协议发布,可用于商业项目,但必须遵守以下补充条款:
+// 1.请不要删除和修改根目录下的LICENSE文件。
+// 2.请不要删除和修改SimpleAdmin源码头部的版权声明。
+// 3.分发源码时候,请注明软件出处 https://gitee.com/dotnetmoyu/SimpleAdmin
+// 4.基于本软件的作品,只能使用 SimpleAdmin 作为后台服务,除外情况不可商用且不允许二次分发或开源。
+// 5.请不得将本软件应用于危害国家安全、荣誉和利益的行为,不能以任何形式用于非法为目的的行为。
+// 6.任何基于本软件而产生的一切法律纠纷和责任,均于我司无关。
namespace SimpleAdmin.SqlSugar;
@@ -23,9 +31,9 @@ public class Startup : AppStartup
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
//遍历配置
- DbContext.DbConfigs.ForEach(it =>
+ DbContext.DB_CONFIGS.ForEach(it =>
{
- var connection = DbContext.Db.GetConnection(it.ConfigId);//获取数据库连接对象
+ var connection = DbContext.DB.GetConnection(it.ConfigId);//获取数据库连接对象
connection.DbMaintenance.CreateDatabase();//创建数据库,如果存在则不创建
});
}
@@ -36,10 +44,10 @@ public class Startup : AppStartup
///
private static void CheckSameConfigId()
{
- var configIdGroup = DbContext.DbConfigs.GroupBy(it => it.ConfigId).ToList();
+ var configIdGroup = DbContext.DB_CONFIGS.GroupBy(it => it.ConfigId).ToList();
foreach (var configId in configIdGroup)
{
- if (configId.ToList().Count > 1) throw Oops.Oh($"Sqlsugar连接配置ConfigId:{configId.Key}重复了");
+ if (configId.ToList().Count > 1) throw Oops.Oh($"SqlSugar连接配置ConfigId:{configId.Key}重复了");
}
}
-}
\ No newline at end of file
+}
diff --git a/api/SimpleAdmin/SimpleAdmin.SqlSugar/Utils/CodeFirstUtils.cs b/api/SimpleAdmin/SimpleAdmin.SqlSugar/Utils/CodeFirstUtils.cs
index 20e6c83a586fd6cd718113207d09ec4e5fc8ef69..148895b538402a6be52f77730505f7d1fe7e37fd 100644
--- a/api/SimpleAdmin/SimpleAdmin.SqlSugar/Utils/CodeFirstUtils.cs
+++ b/api/SimpleAdmin/SimpleAdmin.SqlSugar/Utils/CodeFirstUtils.cs
@@ -1,4 +1,13 @@
-using NewLife.Serialization;
+// Copyright (c) 2022-Now 少林寺驻北固山办事处大神父王喇嘛
+//
+// SimpleAdmin 基于 Apache License Version 2.0 协议发布,可用于商业项目,但必须遵守以下补充条款:
+// 1.请不要删除和修改根目录下的LICENSE文件。
+// 2.请不要删除和修改SimpleAdmin源码头部的版权声明。
+// 3.分发源码时候,请注明软件出处 https://gitee.com/dotnetmoyu/SimpleAdmin
+// 4.基于本软件的作品,只能使用 SimpleAdmin 作为后台服务,除外情况不可商用且不允许二次分发或开源。
+// 5.请不得将本软件应用于危害国家安全、荣誉和利益的行为,不能以任何形式用于非法为目的的行为。
+// 6.任何基于本软件而产生的一切法律纠纷和责任,均于我司无关。
+
using System.Collections;
namespace SimpleAdmin.SqlSugar;
@@ -16,17 +25,19 @@ public static class CodeFirstUtils
/// 程序集名称
public static void CodeFirst(BaseOptions options, string assemblyName)
{
+ var appName = assemblyName.Split(",")[0];
if (options.InitTable)//如果需要初始化表结构
{
+ Console.WriteLine($"开始初始化{appName}数据库表结构");
InitTable(assemblyName);
}
if (options.InitSeedData)
{
+ Console.WriteLine($"开始初始化{appName}数据库种子数据");
InitSeedData(assemblyName);
}
}
-
///
/// 初始化数据库表结构
///
@@ -34,15 +45,16 @@ public static class CodeFirstUtils
private static void InitTable(string assemblyName)
{
// 获取所有实体表-初始化表结构
- var entityTypes = App.EffectiveTypes.Where(u => !u.IsInterface && !u.IsAbstract && u.IsClass && u.IsDefined(typeof(SugarTable), false) && u.Assembly.FullName == assemblyName);
+ var entityTypes = App.EffectiveTypes.Where(u =>
+ !u.IsInterface && !u.IsAbstract && u.IsClass && u.IsDefined(typeof(SugarTable), false) && u.Assembly.FullName == assemblyName);
if (!entityTypes.Any()) return;//没有就退出
foreach (var entityType in entityTypes)
{
- var tenantAtt = entityType.GetCustomAttribute();//获取Sqlsugar多租户特性
+ var tenantAtt = entityType.GetCustomAttribute();//获取SqlSugar多租户特性
var ignoreInit = entityType.GetCustomAttribute();//获取忽略初始化特性
if (ignoreInit != null) continue;//如果有忽略初始化特性
if (tenantAtt == null) continue;//如果没有租户特性就下一个
- var db = DbContext.Db.GetConnectionScope(tenantAtt.configId.ToString());//获取数据库对象
+ var db = DbContext.DB.GetConnectionScope(tenantAtt.configId.ToString());//获取数据库对象
var splitTable = entityType.GetCustomAttribute();//获取自动分表特性
if (splitTable == null)//如果特性是空
db.CodeFirst.InitTables(entityType);//普通创建
@@ -51,8 +63,6 @@ public static class CodeFirstUtils
}
}
-
-
///
/// 初始化种子数据
///
@@ -73,10 +83,10 @@ public static class CodeFirstUtils
var seedData = ((IEnumerable)hasDataMethod?.Invoke(instance, null))?.Cast();
if (seedData == null) continue;//没有种子数据就下一个
var entityType = seedType.GetInterfaces().First().GetGenericArguments().First();//获取实体类型
- var tenantAtt = entityType.GetCustomAttribute();//获取sqlsugar租户特性
+ var tenantAtt = entityType.GetCustomAttribute();//获取SqlSugar租户特性
if (tenantAtt == null) continue;//如果没有租户特性就下一个
- var db = DbContext.Db.GetConnectionScope(tenantAtt.configId.ToString());//获取数据库对象
- var config = DbContext.DbConfigs.FirstOrDefault(u => u.ConfigId == tenantAtt.configId.ToString());//获取数据库配置
+ var db = DbContext.DB.GetConnectionScope(tenantAtt.configId.ToString());//获取数据库对象
+ var config = DbContext.DB_CONFIGS.FirstOrDefault(u => u.ConfigId == tenantAtt.configId.ToString());//获取数据库配置
// var seedDataTable = seedData.ToList().ToDataTable();//获取种子数据:已弃用
var entityInfo = db.EntityMaintenance.GetEntityInfo(entityType);
// seedDataTable.TableName = db.EntityMaintenance.GetEntityInfo(entityType).DbTableName;//获取表名
@@ -99,9 +109,6 @@ public static class CodeFirstUtils
}
}
-
-
-
///
/// 判断类型是否实现某个泛型
///
@@ -166,7 +173,7 @@ public static class CodeFirstUtils
obj = obj?.ToJson();//如果json字符串是空就传null
tempList.Add(obj);
}
- object[] array = tempList.ToArray();
+ var array = tempList.ToArray();
result.LoadDataRow(array, true);
}
}
@@ -180,14 +187,13 @@ public static class CodeFirstUtils
///
private static bool IsIgnoreColumn(PropertyInfo pi)
{
- var sc = pi.GetCustomAttributes(false).FirstOrDefault(u => u.IsIgnore == true);
+ var sc = pi.GetCustomAttributes(false).FirstOrDefault(u => u.IsIgnore);
return sc != null;
}
-
private static bool IsJsonColumn(PropertyInfo pi)
{
- var sc = pi.GetCustomAttributes(false).FirstOrDefault(u => u.IsJson == true);
+ var sc = pi.GetCustomAttributes(false).FirstOrDefault(u => u.IsJson);
return sc != null;
}
-}
\ No newline at end of file
+}
diff --git a/api/SimpleAdmin/SimpleAdmin.SqlSugar/Utils/Dto/SqlSugarTableInfo.cs b/api/SimpleAdmin/SimpleAdmin.SqlSugar/Utils/Dto/SqlSugarTableInfo.cs
index 5f5f7cda0f169723bc1e8392acc8e482787d27b5..12ec97af39f8b939751ec3ca900277e2f4da8ccf 100644
--- a/api/SimpleAdmin/SimpleAdmin.SqlSugar/Utils/Dto/SqlSugarTableInfo.cs
+++ b/api/SimpleAdmin/SimpleAdmin.SqlSugar/Utils/Dto/SqlSugarTableInfo.cs
@@ -1,7 +1,17 @@
-namespace SimpleAdmin.SqlSugar;
+// Copyright (c) 2022-Now 少林寺驻北固山办事处大神父王喇嘛
+//
+// SimpleAdmin 基于 Apache License Version 2.0 协议发布,可用于商业项目,但必须遵守以下补充条款:
+// 1.请不要删除和修改根目录下的LICENSE文件。
+// 2.请不要删除和修改SimpleAdmin源码头部的版权声明。
+// 3.分发源码时候,请注明软件出处 https://gitee.com/dotnetmoyu/SimpleAdmin
+// 4.基于本软件的作品,只能使用 SimpleAdmin 作为后台服务,除外情况不可商用且不允许二次分发或开源。
+// 5.请不得将本软件应用于危害国家安全、荣誉和利益的行为,不能以任何形式用于非法为目的的行为。
+// 6.任何基于本软件而产生的一切法律纠纷和责任,均于我司无关。
+
+namespace SimpleAdmin.SqlSugar;
///
-/// Sqlsugar表信息
+/// SqlSugar表信息
///
public class SqlSugarTableInfo
{
@@ -28,5 +38,5 @@ public class SqlSugarTableInfo
///
/// 表字段
///
- public List Columns { get; set; }
-}
\ No newline at end of file
+ public List Columns { get; set; }
+}
diff --git a/api/SimpleAdmin/SimpleAdmin.SqlSugar/Utils/Dto/SqlsugarColumnInfo.cs b/api/SimpleAdmin/SimpleAdmin.SqlSugar/Utils/Dto/SqlsugarColumnInfo.cs
index b9b4f0a96619430c8a3355499f0063e8c888772b..ed4ab963709bd60a060224b6e982be574b3e0fd5 100644
--- a/api/SimpleAdmin/SimpleAdmin.SqlSugar/Utils/Dto/SqlsugarColumnInfo.cs
+++ b/api/SimpleAdmin/SimpleAdmin.SqlSugar/Utils/Dto/SqlsugarColumnInfo.cs
@@ -1,9 +1,19 @@
-namespace SimpleAdmin.SqlSugar;
+// Copyright (c) 2022-Now 少林寺驻北固山办事处大神父王喇嘛
+//
+// SimpleAdmin 基于 Apache License Version 2.0 协议发布,可用于商业项目,但必须遵守以下补充条款:
+// 1.请不要删除和修改根目录下的LICENSE文件。
+// 2.请不要删除和修改SimpleAdmin源码头部的版权声明。
+// 3.分发源码时候,请注明软件出处 https://gitee.com/dotnetmoyu/SimpleAdmin
+// 4.基于本软件的作品,只能使用 SimpleAdmin 作为后台服务,除外情况不可商用且不允许二次分发或开源。
+// 5.请不得将本软件应用于危害国家安全、荣誉和利益的行为,不能以任何形式用于非法为目的的行为。
+// 6.任何基于本软件而产生的一切法律纠纷和责任,均于我司无关。
+
+namespace SimpleAdmin.SqlSugar;
///
-/// Sqlsugar字段信息
+/// SqlSugar字段信息
///
-public class SqlsugarColumnInfo
+public class SqlSugarColumnInfo
{
///
/// 字段名称
@@ -13,7 +23,7 @@ public class SqlsugarColumnInfo
///
/// 是否主键
///
- public bool IsPrimarykey { get; set; }
+ public bool IsPrimaryKey { get; set; }
///
/// 字段类型
@@ -24,4 +34,4 @@ public class SqlsugarColumnInfo
/// 字段注释
///
public string ColumnDescription { get; set; }
-}
\ No newline at end of file
+}
diff --git a/api/SimpleAdmin/SimpleAdmin.SqlSugar/Utils/SeedDataUtil.cs b/api/SimpleAdmin/SimpleAdmin.SqlSugar/Utils/SeedDataUtil.cs
index ad12ac528c030e1c5535c2acf0c7cc035ba3386a..7244ed88f3876333ed37ccd13563389fdd4b0173 100644
--- a/api/SimpleAdmin/SimpleAdmin.SqlSugar/Utils/SeedDataUtil.cs
+++ b/api/SimpleAdmin/SimpleAdmin.SqlSugar/Utils/SeedDataUtil.cs
@@ -1,4 +1,16 @@
-namespace SimpleAdmin.SqlSugar;
+// Copyright (c) 2022-Now 少林寺驻北固山办事处大神父王喇嘛
+//
+// SimpleAdmin 基于 Apache License Version 2.0 协议发布,可用于商业项目,但必须遵守以下补充条款:
+// 1.请不要删除和修改根目录下的LICENSE文件。
+// 2.请不要删除和修改SimpleAdmin源码头部的版权声明。
+// 3.分发源码时候,请注明软件出处 https://gitee.com/dotnetmoyu/SimpleAdmin
+// 4.基于本软件的作品,只能使用 SimpleAdmin 作为后台服务,除外情况不可商用且不允许二次分发或开源。
+// 5.请不得将本软件应用于危害国家安全、荣誉和利益的行为,不能以任何形式用于非法为目的的行为。
+// 6.任何基于本软件而产生的一切法律纠纷和责任,均于我司无关。
+
+using System.Text.RegularExpressions;
+
+namespace SimpleAdmin.SqlSugar;
///
/// 种子数据工具类
@@ -15,9 +27,55 @@ public class SeedDataUtil
{
//字段没有数据的替换成null
dataString = dataString.Replace("\"\"", "null");
- //将json字符串转为实体,这里extjson可以正常转换为字符串
+
+ #region 针对导出的json字符串嵌套json字符串如 "DefaultDataScope": "{\"Level\":5,\"ScopeCategory\":\"SCOPE_ALL\",\"ScopeDefineOrgIdList\":[]}"
+
+ //正则匹配"ConfigValue": "[{开头的字符串以]"结尾
+ var matcheDefaultDataScope = Regex.Matches(dataString, "\"DefaultDataScope\": \"\\{.*?\\}\"");
+ foreach (Match match in matcheDefaultDataScope)
+ {
+ //获取匹配的值
+ var value = match.Value;
+ //将匹配的值替换成"ConfigValue": "{XXX}"
+ //字符串是\"的替换成"
+ var newValue = value.Replace("\\\"", "\"");
+ //字符串是\{替换成{
+ newValue = newValue.Replace("\"{", "{");
+ //字符串是}"的替换成}
+ newValue = newValue.Replace("}\"", "}");
+ dataString = dataString.Replace(value, newValue);
+ }
+
+ #endregion 针对导出的json字符串嵌套json字符串如 "DefaultDataScope": "{\"Level\":5,\"ScopeCategory\":\"SCOPE_ALL\",\"ScopeDefineOrgIdList\":[]}"
+
+ #region Sys_Org
+
+ //如果T是Sys_Org
+ var nameofT = typeof(T).Name;//获取类型名称
+ if (nameofT == "SysOrg")
+ {
+ //字段是"[的替换成[
+ dataString = dataString.Replace("\"[", "[");
+ //字段是]"的替换成]
+ dataString = dataString.Replace("]\"", "]");
+ }
+
+ #endregion
+
+ //将json字符串转为实体,这里ExtJson可以正常转换为字符串
var seedDataRecord1 = dataString.ToJsonEntity>();
+
+ //正则匹配"ConfigValue": "[{开头的字符串以]"结尾
+ var matches = Regex.Matches(dataString, "\"ConfigValue\": \"\\[\\{.*?\\}\\]\"");
+ foreach (Match match in matches)
+ {
+ //获取匹配的值
+ var value = match.Value;
+ //将匹配的值替换成"ConfigValue": "null"
+ dataString = dataString.Replace(value, "\"ConfigValue\": \"null\"");
+ }
+
#region 针对导出的json字符串嵌套json字符串如 "DefaultDataScope": "{\"Level\":5,\"ScopeCategory\":\"SCOPE_ALL\",\"ScopeDefineOrgIdList\":[]}"
//字符串是\"的替换成"
@@ -26,29 +84,30 @@ public class SeedDataUtil
dataString = dataString.Replace("\"{", "{");
//字符串是}"的替换成}
dataString = dataString.Replace("}\"", "}");
- //将json字符串转为实体,这里extjson会转为null,替换字符串把extjson值变为实体类型而实体类是string类型
+ //将json字符串转为实体,这里ExtJson会转为null,替换字符串把ExtJson值变为实体类型而实体类是string类型
var seedDataRecord2 = dataString.ToJsonEntity>();
#endregion 针对导出的json字符串嵌套json字符串如 "DefaultDataScope": "{\"Level\":5,\"ScopeCategory\":\"SCOPE_ALL\",\"ScopeDefineOrgIdList\":[]}"
+
//遍历seedDataRecord2
for (var i = 0; i < seedDataRecord2.Records.Count; i++)
{
#region 处理ExtJosn
- //获取extjson属性
- var propertyExtJosn = typeof(T).GetProperty(nameof(PrimaryKeyEntity.ExtJson));
- if (propertyExtJosn != null)
+ //获取ExtJson属性
+ var propertyExtJson = typeof(T).GetProperty(nameof(PrimaryKeyEntity.ExtJson));
+ if (propertyExtJson != null)
{
- //获取extjson的值
- var extJson = propertyExtJosn.GetValue(seedDataRecord2.Records[i])?.ToString();
- // 如果extjson不为空并且包含NullableDictionary表示序列化失败了
+ //获取ExtJson的值
+ var extJson = propertyExtJson.GetValue(seedDataRecord2.Records[i])?.ToString();
+ // 如果ExtJson不为空并且包含NullableDictionary表示序列化失败了
if (!string.IsNullOrEmpty(extJson) && extJson.Contains("NullableDictionary"))
{
- //设置extjson为seedDataRecord1对应的值
- extJson = propertyExtJosn.GetValue(seedDataRecord1.Records[i])?.ToString();
- //seedDataRecord2赋值seedDataRecord1的extjson
- propertyExtJosn.SetValue(seedDataRecord2.Records[i], extJson);
+ //设置ExtJson为seedDataRecord1对应的值
+ extJson = propertyExtJson.GetValue(seedDataRecord1.Records[i])?.ToString();
+ //seedDataRecord2赋值seedDataRecord1的ExtJson
+ propertyExtJson.SetValue(seedDataRecord2.Records[i], extJson);
}
}
@@ -56,18 +115,18 @@ public class SeedDataUtil
#region 处理ConfigValue
- //获取extjson属性
+ //获取ExtJson属性
var propertyConfigValue = typeof(T).GetProperty("ConfigValue");
if (propertyConfigValue != null)
{
- //获取extjson的值
+ //获取configValue的值
var configValue = propertyConfigValue.GetValue(seedDataRecord2.Records[i])?.ToString();
- // 如果extjson不为空并且包含NullableDictionary表示序列化失败了
- if (!string.IsNullOrEmpty(configValue) && configValue.Contains("NullableDictionary"))
+ // 如果configValue不为空并且包含NullableDictionary表示序列化失败了
+ if (!string.IsNullOrEmpty(configValue) && (configValue.Contains("NullableDictionary") || configValue == "null"))
{
- //设置extjson为seedDataRecord1对应的值
+ //设置ExtJson为seedDataRecord1对应的值
configValue = propertyConfigValue.GetValue(seedDataRecord1.Records[i])?.ToString();
- //seedDataRecord2赋值seedDataRecord1的extjson
+ //seedDataRecord2赋值seedDataRecord1的ExtJson
propertyConfigValue.SetValue(seedDataRecord2.Records[i], configValue);
}
}
@@ -92,4 +151,4 @@ public class SeedDataRecords
/// 数据
///
public List Records { get; set; }
-}
\ No newline at end of file
+}
diff --git a/api/SimpleAdmin/SimpleAdmin.SqlSugar/Utils/SqlSugarUtils.cs b/api/SimpleAdmin/SimpleAdmin.SqlSugar/Utils/SqlSugarUtils.cs
index b9dcdb2df854c599df9df096ca62ad185e1faee3..f67c691ec345d06d48df30e51e5c9de692141dbb 100644
--- a/api/SimpleAdmin/SimpleAdmin.SqlSugar/Utils/SqlSugarUtils.cs
+++ b/api/SimpleAdmin/SimpleAdmin.SqlSugar/Utils/SqlSugarUtils.cs
@@ -1,7 +1,17 @@
-namespace SimpleAdmin.SqlSugar;
+// Copyright (c) 2022-Now 少林寺驻北固山办事处大神父王喇嘛
+//
+// SimpleAdmin 基于 Apache License Version 2.0 协议发布,可用于商业项目,但必须遵守以下补充条款:
+// 1.请不要删除和修改根目录下的LICENSE文件。
+// 2.请不要删除和修改SimpleAdmin源码头部的版权声明。
+// 3.分发源码时候,请注明软件出处 https://gitee.com/dotnetmoyu/SimpleAdmin
+// 4.基于本软件的作品,只能使用 SimpleAdmin 作为后台服务,除外情况不可商用且不允许二次分发或开源。
+// 5.请不得将本软件应用于危害国家安全、荣誉和利益的行为,不能以任何形式用于非法为目的的行为。
+// 6.任何基于本软件而产生的一切法律纠纷和责任,均于我司无关。
+
+namespace SimpleAdmin.SqlSugar;
///
-/// Sqlusgar通用功能
+/// SqlSugar通用功能
///
public static class SqlSugarUtils
{
@@ -12,7 +22,7 @@ public static class SqlSugarUtils
///
public static List GetTablesByAttribute()
{
- List tables = new List();//结果集
+ var tables = new List();//结果集
// 获取实体表
var entityTypes = App.EffectiveTypes
@@ -21,24 +31,21 @@ public static class SqlSugarUtils
foreach (var entityType in entityTypes)
{
- var teanant = entityType.GetCustomAttribute();//获取多租户特性
- var configId = teanant.configId.ToString();//获取租户Id
- if (teanant != null)
+ var tenantAttr = entityType.GetCustomAttribute();//获取多租户特性
+ var configId = tenantAttr.configId.ToString();//获取租户Id
+ var connection = DbContext.DB.GetConnection(tenantAttr.configId.ToString());//根据租户ID获取连接信息
+ var entityInfo = connection.EntityMaintenance.GetEntityInfo(entityType);//获取实体信息
+ if (entityInfo != null)
{
- var connection = DbContext.Db.GetConnection(teanant.configId.ToString());//根据租户ID获取连接信息
- var entityInfo = connection.EntityMaintenance.GetEntityInfo(entityType);//获取实体信息
- if (entityInfo != null)
+ var columns = GetTableColumns(configId, entityInfo.DbTableName);//获取字段信息
+ tables.Add(new SqlSugarTableInfo
{
- var columns = GetTableColumns(configId, entityInfo.DbTableName);//获取字段信息
- tables.Add(new SqlSugarTableInfo
- {
- TableName = entityInfo.DbTableName,
- EntityName = entityInfo.EntityName,
- TableDescription = entityInfo.TableDescription,
- ConfigId = configId,
- Columns = columns
- });
- }
+ TableName = entityInfo.DbTableName,
+ EntityName = entityInfo.EntityName,
+ TableDescription = entityInfo.TableDescription,
+ ConfigId = configId,
+ Columns = columns
+ });
}
}
return tables;
@@ -50,10 +57,10 @@ public static class SqlSugarUtils
///
///
///
- public static List GetTableColumns(string configId, string tableName)
+ public static List GetTableColumns(string configId, string tableName)
{
- var columns = new List();//结果集
- var connection = DbContext.Db.GetConnection(configId);
+ var columns = new List();//结果集
+ var connection = DbContext.DB.GetConnection(configId);
var dbColumnInfos = connection.DbMaintenance.GetColumnInfosByTableName(tableName);//根据表名获取表信息
if (dbColumnInfos != null)
{
@@ -74,10 +81,10 @@ public static class SqlSugarUtils
{
it.DbColumnName = StringHelper.FirstCharToUpper(it.DbColumnName);//首字母大写
}
- columns.Add(new SqlsugarColumnInfo
+ columns.Add(new SqlSugarColumnInfo
{
ColumnName = it.DbColumnName,
- IsPrimarykey = it.IsPrimarykey,
+ IsPrimaryKey = it.IsPrimarykey,
ColumnDescription = it.ColumnDescription,
DataType = it.DataType
});
@@ -167,7 +174,7 @@ public static class SqlSugarUtils
return dataType switch
{
"string" => EffTypeConst.INPUT,
- "int" => EffTypeConst.INPUTNUMBER,
+ "int" => EffTypeConst.INPUT_NUMBER,
"long" => EffTypeConst.INPUT,
"float" => EffTypeConst.INPUT,
"double" => EffTypeConst.INPUT,
@@ -186,7 +193,7 @@ public static class SqlSugarUtils
///
public static bool IsCommonColumn(string columnName)
{
- var columnList = new List()
+ var columnList = new List
{
nameof(BaseEntity.CreateTime), nameof(BaseEntity.UpdateTime),
nameof(BaseEntity.CreateUserId), nameof(BaseEntity.CreateUser),
@@ -196,4 +203,4 @@ public static class SqlSugarUtils
};
return columnList.Contains(columnName);
}
-}
\ No newline at end of file
+}
diff --git a/api/SimpleAdmin/SimpleAdmin.System/Attributes/AntTableAttribute.cs b/api/SimpleAdmin/SimpleAdmin.System/Attributes/AntTableAttribute.cs
index 60ec6e0b069259ffc48fb972e018e937b17f5e09..4bfc2a86e1320af2a459343216e2b96bae0b5c38 100644
--- a/api/SimpleAdmin/SimpleAdmin.System/Attributes/AntTableAttribute.cs
+++ b/api/SimpleAdmin/SimpleAdmin.System/Attributes/AntTableAttribute.cs
@@ -1,4 +1,14 @@
-namespace SimpleAdmin.System;
+// Copyright (c) 2022-Now 少林寺驻北固山办事处大神父王喇嘛
+//
+// SimpleAdmin 基于 Apache License Version 2.0 协议发布,可用于商业项目,但必须遵守以下补充条款:
+// 1.请不要删除和修改根目录下的LICENSE文件。
+// 2.请不要删除和修改SimpleAdmin源码头部的版权声明。
+// 3.分发源码时候,请注明软件出处 https://gitee.com/dotnetmoyu/SimpleAdmin
+// 4.基于本软件的作品,只能使用 SimpleAdmin 作为后台服务,除外情况不可商用且不允许二次分发或开源。
+// 5.请不得将本软件应用于危害国家安全、荣誉和利益的行为,不能以任何形式用于非法为目的的行为。
+// 6.任何基于本软件而产生的一切法律纠纷和责任,均于我司无关。
+
+namespace SimpleAdmin.System;
///
/// 前端表格特性
@@ -8,7 +18,7 @@ public class AntTableAttribute : Attribute
///
/// 是否是日期格式
///
- public bool IsDate { get; set; } = false;
+ public bool IsDate { get; set; }
///
/// 是否自动省略
@@ -19,4 +29,4 @@ public class AntTableAttribute : Attribute
/// 宽度
///
public int Width { get; set; } = 100;
-}
\ No newline at end of file
+}
diff --git a/api/SimpleAdmin/SimpleAdmin.System/Attributes/BatchEditAttribute.cs b/api/SimpleAdmin/SimpleAdmin.System/Attributes/BatchEditAttribute.cs
new file mode 100644
index 0000000000000000000000000000000000000000..be55b152966f5b57c43cd435feac64e3b6f4c7bb
--- /dev/null
+++ b/api/SimpleAdmin/SimpleAdmin.System/Attributes/BatchEditAttribute.cs
@@ -0,0 +1,18 @@
+// Copyright (c) 2022-Now 少林寺驻北固山办事处大神父王喇嘛
+//
+// SimpleAdmin 基于 Apache License Version 2.0 协议发布,可用于商业项目,但必须遵守以下补充条款:
+// 1.请不要删除和修改根目录下的LICENSE文件。
+// 2.请不要删除和修改SimpleAdmin源码头部的版权声明。
+// 3.分发源码时候,请注明软件出处 https://gitee.com/dotnetmoyu/SimpleAdmin
+// 4.基于本软件的作品,只能使用 SimpleAdmin 作为后台服务,除外情况不可商用且不允许二次分发或开源。
+// 5.请不得将本软件应用于危害国家安全、荣誉和利益的行为,不能以任何形式用于非法为目的的行为。
+// 6.任何基于本软件而产生的一切法律纠纷和责任,均于我司无关。
+
+namespace SimpleAdmin.System;
+
+///
+/// 批量更新
+///
+public class BatchEditAttribute : Attribute
+{
+}
diff --git a/api/SimpleAdmin/SimpleAdmin.System/Attributes/InDictAttribute.cs b/api/SimpleAdmin/SimpleAdmin.System/Attributes/InDictAttribute.cs
index 75e9a1abf367e5bda0d6298feb8ea17590ef49a9..beb5ae9ace6e886789ed849548e4ef1d2ad5c836 100644
--- a/api/SimpleAdmin/SimpleAdmin.System/Attributes/InDictAttribute.cs
+++ b/api/SimpleAdmin/SimpleAdmin.System/Attributes/InDictAttribute.cs
@@ -1,4 +1,14 @@
-namespace SimpleAdmin.System;
+// Copyright (c) 2022-Now 少林寺驻北固山办事处大神父王喇嘛
+//
+// SimpleAdmin 基于 Apache License Version 2.0 协议发布,可用于商业项目,但必须遵守以下补充条款:
+// 1.请不要删除和修改根目录下的LICENSE文件。
+// 2.请不要删除和修改SimpleAdmin源码头部的版权声明。
+// 3.分发源码时候,请注明软件出处 https://gitee.com/dotnetmoyu/SimpleAdmin
+// 4.基于本软件的作品,只能使用 SimpleAdmin 作为后台服务,除外情况不可商用且不允许二次分发或开源。
+// 5.请不得将本软件应用于危害国家安全、荣誉和利益的行为,不能以任何形式用于非法为目的的行为。
+// 6.任何基于本软件而产生的一切法律纠纷和责任,均于我司无关。
+
+namespace SimpleAdmin.System;
///
/// 验证值是否在字典中,大数据慎用
@@ -26,30 +36,30 @@ public class InDictAttribute : ValidationAttribute
{
switch (DictValue)
{
- case DevDictConst.GENDER:
+ case SysDictConst.GENDER:
return "性别只能是男和女";
- case DevDictConst.NATION:
+ case SysDictConst.NATION:
return "不存在的民族";
default:
return $"字典中不存在{value}";
}
}
- else return ErrorMessage;
+ return ErrorMessage;
}
protected override ValidationResult IsValid(object value, ValidationContext validationContext)
{
if (value != null)
{
- var dictSerivce = App.GetService();
- var values = dictSerivce.GetValuesByDictValue(DictValue).Result;
+ var dictService = App.GetService();
+ var values = dictService.GetValuesByDictValue(DictValue).Result;
if (!values.Contains(value))
{
- return new ValidationResult(GetErrorMessage(value.ToString()), new string[] { validationContext.MemberName });
+ return new ValidationResult(GetErrorMessage(value.ToString()), new[] { validationContext.MemberName });
}
}
return ValidationResult.Success;
}
-}
\ No newline at end of file
+}
diff --git a/api/SimpleAdmin/SimpleAdmin.SqlSugar/Const/CateGoryConst.cs b/api/SimpleAdmin/SimpleAdmin.System/Const/CateGoryConst.cs
similarity index 52%
rename from api/SimpleAdmin/SimpleAdmin.SqlSugar/Const/CateGoryConst.cs
rename to api/SimpleAdmin/SimpleAdmin.System/Const/CateGoryConst.cs
index 43cc43a0d0909f57ceb78e2cfb95ac47ef2ecaf8..4d24d65c8484552a3748a272446c53cae8f3cc61 100644
--- a/api/SimpleAdmin/SimpleAdmin.SqlSugar/Const/CateGoryConst.cs
+++ b/api/SimpleAdmin/SimpleAdmin.System/Const/CateGoryConst.cs
@@ -1,4 +1,14 @@
-namespace SimpleAdmin.SqlSugar;
+// Copyright (c) 2022-Now 少林寺驻北固山办事处大神父王喇嘛
+//
+// SimpleAdmin 基于 Apache License Version 2.0 协议发布,可用于商业项目,但必须遵守以下补充条款:
+// 1.请不要删除和修改根目录下的LICENSE文件。
+// 2.请不要删除和修改SimpleAdmin源码头部的版权声明。
+// 3.分发源码时候,请注明软件出处 https://gitee.com/dotnetmoyu/SimpleAdmin
+// 4.基于本软件的作品,只能使用 SimpleAdmin 作为后台服务,除外情况不可商用且不允许二次分发或开源。
+// 5.请不得将本软件应用于危害国家安全、荣誉和利益的行为,不能以任何形式用于非法为目的的行为。
+// 6.任何基于本软件而产生的一切法律纠纷和责任,均于我司无关。
+
+namespace SimpleAdmin.System;
///
/// 分类常量
@@ -10,32 +20,32 @@ public class CateGoryConst
///
/// 系统基础
///
- public const string Config_SYS_BASE = "SYS_BASE";
+ public const string CONFIG_SYS_BASE = "SYS_BASE";
///
/// 登录策略
///
- public const string Config_LOGIN_POLICY = "LOGIN_POLICY";
+ public const string CONFIG_LOGIN_POLICY = "LOGIN_POLICY";
///
/// 密码策略
///
- public const string Config_PWD_POLICY = "PWD_POLICY";
+ public const string CONFIG_PWD_POLICY = "PWD_POLICY";
///
/// 业务定义
///
- public const string Config_BIZ_DEFINE = "BIZ_DEFINE";
+ public const string CONFIG_BIZ_DEFINE = "BIZ_DEFINE";
///
/// 文件-本地
///
- public const string Config_FILE_LOCAL = "FILE_LOCAL";
+ public const string CONFIG_FILE_LOCAL = "FILE_LOCAL";
///
/// 文件-MINIO
///
- public const string Config_FILE_MINIO = "FILE_MINIO";
+ public const string CONFIG_FILE_MINIO = "FILE_MINIO";
#endregion 系统配置
@@ -44,7 +54,7 @@ public class CateGoryConst
///
/// MQTT配置
///
- public const string Config_MQTT_BASE = "MQTT_BASE";
+ public const string CONFIG_MQTT_BASE = "MQTT_BASE";
#endregion Mqtt配置
@@ -53,42 +63,52 @@ public class CateGoryConst
///
/// 用户有哪些角色
///
- public const string Relation_SYS_USER_HAS_ROLE = "SYS_USER_HAS_ROLE";
+ public const string RELATION_SYS_USER_HAS_ROLE = "SYS_USER_HAS_ROLE";
///
/// 角色有哪些资源
///
- public const string Relation_SYS_ROLE_HAS_RESOURCE = "SYS_ROLE_HAS_RESOURCE";
+ public const string RELATION_SYS_ROLE_HAS_RESOURCE = "SYS_ROLE_HAS_RESOURCE";
+
+ ///
+ /// 角色有哪些模块
+ ///
+ public const string RELATION_SYS_ROLE_HAS_MODULE = "SYS_ROLE_HAS_MODULE";
+
+ ///
+ /// 用户有哪些模块
+ ///
+ public const string RELATION_SYS_USER_HAS_MODULE = "SYS_USER_HAS_MODULE";
///
///用户有哪些资源
///
- public const string Relation_SYS_USER_HAS_RESOURCE = "SYS_USER_HAS_RESOURCE";
+ public const string RELATION_SYS_USER_HAS_RESOURCE = "SYS_USER_HAS_RESOURCE";
///
/// 角色有哪些权限
///
- public const string Relation_SYS_ROLE_HAS_PERMISSION = "SYS_ROLE_HAS_PERMISSION";
+ public const string RELATION_SYS_ROLE_HAS_PERMISSION = "SYS_ROLE_HAS_PERMISSION";
///
- /// 角色有哪些权限
+ /// 用户有哪些权限
///
- public const string Relation_SYS_USER_HAS_PERMISSION = "SYS_USER_HAS_PERMISSION";
+ public const string RELATION_SYS_USER_HAS_PERMISSION = "SYS_USER_HAS_PERMISSION";
///
/// 用户工作台数据
///
- public const string Relation_SYS_USER_WORKBENCH_DATA = "SYS_USER_WORKBENCH_DATA";
+ public const string RELATION_SYS_USER_WORKBENCH_DATA = "SYS_USER_WORKBENCH_DATA";
///
/// 用户日程数据
///
- public const string Relation_SYS_USER_SCHEDULE_DATA = "SYS_USER_SCHEDULE_DATA";
+ public const string RELATION_SYS_USER_SCHEDULE_DATA = "SYS_USER_SCHEDULE_DATA";
///
/// 站内信与接收用户
///
- public const string Relation_MSG_TO_USER = "MSG_TO_USER";
+ public const string RELATION_MSG_TO_USER = "MSG_TO_USER";
#endregion 关系表
@@ -126,22 +146,22 @@ public class CateGoryConst
///
/// 模块
///
- public const string Resource_MODULE = "MODULE";
+ public const string RESOURCE_MODULE = "MODULE";
///
/// 菜单
///
- public const string Resource_MENU = "MENU";
+ public const string RESOURCE_MENU = "MENU";
///
/// 单页
///
- public const string Resource_SPA = "SPA";
+ public const string RESOURCE_SPA = "SPA";
///
/// 按钮
///
- public const string Resource_BUTTON = "BUTTON";
+ public const string RESOURCE_BUTTON = "BUTTON";
#endregion 资源表
@@ -150,22 +170,22 @@ public class CateGoryConst
///
/// 登录
///
- public const string Log_LOGIN = "LOGIN";
+ public const string LOG_LOGIN = "LOGIN";
///
/// 登出
///
- public const string Log_LOGOUT = "LOGOUT";
+ public const string LOG_LOGOUT = "LOGOUT";
///
/// 操作
///
- public const string Log_OPERATE = "OPERATE";
+ public const string LOG_OPERATE = "OPERATE";
///
/// 异常
///
- public const string Log_EXCEPTION = "EXCEPTION";
+ public const string LOG_EXCEPTION = "EXCEPTION";
#endregion 日志表
@@ -174,12 +194,12 @@ public class CateGoryConst
///
/// 框架
///
- public const string Dict_FRM = "FRM";
+ public const string DICT_FRM = "FRM";
///
/// 业务
///
- public const string Dict_BIZ = "BIZ";
+ public const string DICT_BIZ = "BIZ";
#endregion 字典表
@@ -188,12 +208,12 @@ public class CateGoryConst
///
/// 部门
///
- public const string Org_DEPT = "DEPT";
+ public const string ORG_DEPT = "DEPT";
///
/// 公司
///
- public const string Org_COMPANY = "COMPANY";
+ public const string ORG_COMPANY = "COMPANY";
#endregion 组织表
@@ -202,17 +222,17 @@ public class CateGoryConst
///
/// 高层
///
- public const string Position_HIGH = "HIGH";
+ public const string POSITION_HIGH = "HIGH";
///
/// 中层
///
- public const string Position_MIDDLE = "MIDDLE";
+ public const string POSITION_MIDDLE = "MIDDLE";
///
/// 基层
///
- public const string Position_LOW = "LOW";
+ public const string POSITION_LOW = "LOW";
#endregion 职位表
@@ -221,12 +241,12 @@ public class CateGoryConst
///
/// 全局
///
- public const string Role_GLOBAL = "GLOBAL";
+ public const string ROLE_GLOBAL = "GLOBAL";
///
/// 机构
///
- public const string Role_ORG = "ORG";
+ public const string ROLE_ORG = "ORG";
#endregion 角色表
@@ -235,12 +255,12 @@ public class CateGoryConst
///
/// 通知
///
- public const string Message_INFORM = "INFORM";
+ public const string MESSAGE_INFORM = "INFORM";
///
/// 公告
///
- public const string Message_NOTICE = "NOTICE";
+ public const string MESSAGE_NOTICE = "NOTICE";
#endregion 站内信表
-}
\ No newline at end of file
+}
diff --git a/api/SimpleAdmin/SimpleAdmin.SqlSugar/Const/DevConfigConst.cs b/api/SimpleAdmin/SimpleAdmin.System/Const/SysConfigConst.cs
similarity index 66%
rename from api/SimpleAdmin/SimpleAdmin.SqlSugar/Const/DevConfigConst.cs
rename to api/SimpleAdmin/SimpleAdmin.System/Const/SysConfigConst.cs
index 0b2ae5ec68c421eb5ba168c8e2076ca8ce6de21e..d364b82c0b3197e0d1228602f8e54c8940f045ff 100644
--- a/api/SimpleAdmin/SimpleAdmin.SqlSugar/Const/DevConfigConst.cs
+++ b/api/SimpleAdmin/SimpleAdmin.System/Const/SysConfigConst.cs
@@ -1,15 +1,67 @@
-namespace SimpleAdmin.SqlSugar;
+// Copyright (c) 2022-Now 少林寺驻北固山办事处大神父王喇嘛
+//
+// SimpleAdmin 基于 Apache License Version 2.0 协议发布,可用于商业项目,但必须遵守以下补充条款:
+// 1.请不要删除和修改根目录下的LICENSE文件。
+// 2.请不要删除和修改SimpleAdmin源码头部的版权声明。
+// 3.分发源码时候,请注明软件出处 https://gitee.com/dotnetmoyu/SimpleAdmin
+// 4.基于本软件的作品,只能使用 SimpleAdmin 作为后台服务,除外情况不可商用且不允许二次分发或开源。
+// 5.请不得将本软件应用于危害国家安全、荣誉和利益的行为,不能以任何形式用于非法为目的的行为。
+// 6.任何基于本软件而产生的一切法律纠纷和责任,均于我司无关。
+
+namespace SimpleAdmin.System;
///
/// 系统配置常量
///
-public class DevConfigConst
+public class SysConfigConst
{
+ #region MyRegion
+
+ ///
+ /// 系统名称
+ ///
+ public const string SYS_NAME = "SYS_NAME";
+
+
+ ///
+ /// ico图标
+ ///
+ public const string SYS_ICO = "SYS_ICO";
+
+ ///
+ /// 网站开启访问
+ ///
+ public const string SYS_WEB_STATUS = "SYS_WEB_STATUS";
+
+
+ ///
+ /// 网站关闭提示
+ ///
+ public const string SYS_WEB_CLOSE_PROMPT = "SYS_WEB_CLOSE_PROMPT";
+
+ ///
+ /// 系统logo
+ ///
+ public const string SYS_LOGO = "SYS_LOGO";
+
+ ///
+ /// 系统版本
+ ///
+ public const string SYS_VERSION = "SYS_VERSION";
+
+ ///
+ /// 多租户开关
+ ///
+ public const string SYS_TENANT_OPTIONS = "SYS_TENANT_OPTIONS";
+
+
///
/// 系统默认工作台
///
public const string SYS_DEFAULT_WORKBENCH_DATA = "SYS_DEFAULT_WORKBENCH_DATA";
+ #endregion
+
#region 登录策略
///
@@ -32,7 +84,6 @@ public class DevConfigConst
///
public const string LOGIN_ERROR_LOCK = "LOGIN_ERROR_LOCK";
-
///
/// 登录错误锁定时长
///
@@ -43,7 +94,7 @@ public class DevConfigConst
///
public const string LOGIN_ERROR_COUNT = "LOGIN_ERROR_COUNT";
- #endregion
+ #endregion 登录策略
#region 密码策略
@@ -92,26 +143,7 @@ public class DevConfigConst
///
public const string PWD_CONTAIN_CHARACTER = "PWD_CONTAIN_UPPER";
- #endregion
-
- #region MQTT
-
- ///
- /// mqtt连接地址
- ///
- public const string MQTT_PARAM_URL = "MQTT_PARAM_URL";
-
- ///
- /// mqtt连接用户名
- ///
- public const string MQTT_PARAM_USERNAME = "MQTT_PARAM_USERNAME";
-
- ///
- /// mqtt连接密码
- ///
- public const string MQTT_PARAM_PASSWORD = "MQTT_PARAM_PASSWORD";
-
- #endregion MQTT
+ #endregion 密码策略
#region 存储引擎
@@ -131,7 +163,7 @@ public class DevConfigConst
public const string FILE_MINIO_ACCESS_KEY = "FILE_MINIO_ACCESS_KEY";
///
- /// MINIO文件SecetKey
+ /// MINIO文件SecretKey
///
public const string FILE_MINIO_SECRET_KEY = "FILE_MINIO_SECRET_KEY";
@@ -146,4 +178,23 @@ public class DevConfigConst
public const string FILE_MINIO_DEFAULT_BUCKET_NAME = "FILE_MINIO_DEFAULT_BUCKET_NAME";
#endregion 存储引擎
-}
\ No newline at end of file
+
+ #region MQTT
+
+ ///
+ /// mqtt连接地址
+ ///
+ public const string MQTT_PARAM_URL = "MQTT_PARAM_URL";
+
+ ///
+ /// mqtt连接用户名
+ ///
+ public const string MQTT_PARAM_USERNAME = "MQTT_PARAM_USERNAME";
+
+ ///
+ /// mqtt连接密码
+ ///
+ public const string MQTT_PARAM_PASSWORD = "MQTT_PARAM_PASSWORD";
+
+ #endregion
+}
diff --git a/api/SimpleAdmin/SimpleAdmin.System/Const/SysDictConst.cs b/api/SimpleAdmin/SimpleAdmin.System/Const/SysDictConst.cs
new file mode 100644
index 0000000000000000000000000000000000000000..16ace39be5a4a18814cc660aace3c4afbdf90975
--- /dev/null
+++ b/api/SimpleAdmin/SimpleAdmin.System/Const/SysDictConst.cs
@@ -0,0 +1,166 @@
+// Copyright (c) 2022-Now 少林寺驻北固山办事处大神父王喇嘛
+//
+// SimpleAdmin 基于 Apache License Version 2.0 协议发布,可用于商业项目,但必须遵守以下补充条款:
+// 1.请不要删除和修改根目录下的LICENSE文件。
+// 2.请不要删除和修改SimpleAdmin源码头部的版权声明。
+// 3.分发源码时候,请注明软件出处 https://gitee.com/dotnetmoyu/SimpleAdmin
+// 4.基于本软件的作品,只能使用 SimpleAdmin 作为后台服务,除外情况不可商用且不允许二次分发或开源。
+// 5.请不得将本软件应用于危害国家安全、荣誉和利益的行为,不能以任何形式用于非法为目的的行为。
+// 6.任何基于本软件而产生的一切法律纠纷和责任,均于我司无关。
+
+namespace SimpleAdmin.System;
+
+///
+/// 字典常量
+///
+public class SysDictConst
+{
+ #region 系统字典
+
+ ///
+ /// 性别
+ ///
+ public const string GENDER = "GENDER";
+
+ ///
+ /// 名族
+ ///
+ public const string NATION = "NATION";
+
+ ///
+ /// 用户证件类型
+ ///
+ public const string ID_CARD_TYPE = "ID_CARD_TYPE";
+
+ ///
+ /// 通用文化程度
+ ///
+ public const string CULTURE_LEVEL = "CULTURE_LEVEL";
+
+ ///
+ /// 系统职位分类
+ ///
+ public const string POSITION_CATEGORY = "POSITION_CATEGORY";
+
+ #region 在线用户状态
+
+ ///
+ /// 在线
+ ///
+ public const string ONLINE_STATUS_ONLINE = "ONLINE";
+
+ ///
+ /// 离线
+ ///
+ public const string ONLINE_STATUS_OFFLINE = "OFFLINE";
+
+ #endregion 在线用户状态
+
+ #region 上传文件引擎
+
+ ///
+ /// 本地
+ ///
+ public const string FILE_ENGINE_LOCAL = "LOCAL";
+
+ ///
+ /// MINIO
+ ///
+ public const string FILE_ENGINE_MINIO = "MINIO";
+
+ #endregion 上传文件引擎
+
+ #region 系统字典分类
+
+ ///
+ /// 系统
+ ///
+ public const string DICT_CATEGORY_FRM = "FRM";
+
+ ///
+ /// 业务
+ ///
+ public const string DICT_CATEGORY_BIZ = "BIZ";
+
+ #endregion 系统字典分类
+
+ #region 多租户选项
+
+ ///
+ /// 关闭
+ ///
+ public const string TENANT_OPTIONS_CLOSE = "TENANT_OPTIONS_CLOSE";
+
+ ///
+ /// 手动选择
+ ///
+ public const string TENANT_OPTIONS_CHOSE = "TENANT_OPTIONS_CHOSE";
+
+ ///
+ /// 根据域名
+ ///
+ public const string TENANT_OPTIONS_DOMAIN = "TENANT_OPTIONS_DOMAIN";
+
+ #endregion
+
+ #region 站内信
+
+ ///
+ /// 消息分类
+ ///
+ public const string MESSAGE_CATEGORY = "MESSAGE_CATEGORY";
+
+ ///
+ /// 接受者类型
+ ///
+ public const string RECEIVER_TYPE = "RECEIVER_TYPE";
+
+ ///
+ /// 发送方式
+ ///
+ public const string MESSAGE_WAY = "MESSAGE_WAY";
+
+ ///
+ /// 立即发送
+ ///
+ public const string SEND_WAY_NOW = "NOW";
+
+ ///
+ /// 延迟发送
+ ///
+ public const string SEND_WAY_DELAY = "DELAY";
+
+ ///
+ /// 指定时间
+ ///
+ public const string SEND_WAY_SCHEDULE = "SCHEDULE";
+
+ ///
+ /// 待发送
+ ///
+ public const string MESSAGE_STATUS_READY = "READY";
+
+ ///
+ /// 已发送
+ ///
+ public const string MESSAGE_STATUS_ALREADY = "ALREADY";
+
+ ///
+ /// 所有
+ ///
+ public const string RECEIVER_TYPE_ALL = "ALL";
+
+ ///
+ /// 角色
+ ///
+ public const string RECEIVER_TYPE_ROLE = "ROLE";
+
+ ///
+ /// 指定
+ ///
+ public const string RECEIVER_TYPE_APPOINT = "APPOINT";
+
+ #endregion
+
+ #endregion 系统字典
+}
diff --git a/api/SimpleAdmin/SimpleAdmin.System/Const/SysLogConst.cs b/api/SimpleAdmin/SimpleAdmin.System/Const/SysLogConst.cs
new file mode 100644
index 0000000000000000000000000000000000000000..093cd9b9476cd7795af7d97c30b83c66b17029ed
--- /dev/null
+++ b/api/SimpleAdmin/SimpleAdmin.System/Const/SysLogConst.cs
@@ -0,0 +1,27 @@
+// Copyright (c) 2022-Now 少林寺驻北固山办事处大神父王喇嘛
+//
+// SimpleAdmin 基于 Apache License Version 2.0 协议发布,可用于商业项目,但必须遵守以下补充条款:
+// 1.请不要删除和修改根目录下的LICENSE文件。
+// 2.请不要删除和修改SimpleAdmin源码头部的版权声明。
+// 3.分发源码时候,请注明软件出处 https://gitee.com/dotnetmoyu/SimpleAdmin
+// 4.基于本软件的作品,只能使用 SimpleAdmin 作为后台服务,除外情况不可商用且不允许二次分发或开源。
+// 5.请不得将本软件应用于危害国家安全、荣誉和利益的行为,不能以任何形式用于非法为目的的行为。
+// 6.任何基于本软件而产生的一切法律纠纷和责任,均于我司无关。
+
+namespace SimpleAdmin.System;
+
+///
+/// 日志常量
+///
+public class SysLogConst
+{
+ ///
+ /// 成功
+ ///
+ public const string SUCCESS = "SUCCESS";
+
+ ///
+ /// 成功
+ ///
+ public const string FAIL = "FAIL";
+}
diff --git a/api/SimpleAdmin/SimpleAdmin.SqlSugar/Const/ResourceConst.cs b/api/SimpleAdmin/SimpleAdmin.System/Const/SysResourceConst.cs
similarity index 30%
rename from api/SimpleAdmin/SimpleAdmin.SqlSugar/Const/ResourceConst.cs
rename to api/SimpleAdmin/SimpleAdmin.System/Const/SysResourceConst.cs
index 1fe11dac51b3d27ff0bbd58f24c029cd2d57b2cb..ed032dfed7888d083bb6c659448434f7e887b3ce 100644
--- a/api/SimpleAdmin/SimpleAdmin.SqlSugar/Const/ResourceConst.cs
+++ b/api/SimpleAdmin/SimpleAdmin.System/Const/SysResourceConst.cs
@@ -1,9 +1,19 @@
-namespace SimpleAdmin.SqlSugar;
+// Copyright (c) 2022-Now 少林寺驻北固山办事处大神父王喇嘛
+//
+// SimpleAdmin 基于 Apache License Version 2.0 协议发布,可用于商业项目,但必须遵守以下补充条款:
+// 1.请不要删除和修改根目录下的LICENSE文件。
+// 2.请不要删除和修改SimpleAdmin源码头部的版权声明。
+// 3.分发源码时候,请注明软件出处 https://gitee.com/dotnetmoyu/SimpleAdmin
+// 4.基于本软件的作品,只能使用 SimpleAdmin 作为后台服务,除外情况不可商用且不允许二次分发或开源。
+// 5.请不得将本软件应用于危害国家安全、荣誉和利益的行为,不能以任何形式用于非法为目的的行为。
+// 6.任何基于本软件而产生的一切法律纠纷和责任,均于我司无关。
+
+namespace SimpleAdmin.System;
///
/// 资源表常量
///
-public class ResourceConst
+public class SysResourceConst
{
///
/// 目录
@@ -11,7 +21,7 @@ public class ResourceConst
public const string CATALOG = "CATALOG";
///
- /// 组件
+ /// 菜单
///
public const string MENU = "MENU";
@@ -20,13 +30,23 @@ public class ResourceConst
///
public const string IFRAME = "IFRAME";
+ ///
+ /// 子页
+ ///
+ public const string SUBSET = "SUBSET";
+
///
/// 外链
///
public const string LINK = "LINK";
+ ///
+ /// 单页
+ ///
+ public const string SPA = "SPA";
+
///
/// 系统内置单页面编码
///
- public const string System = "system";
-}
\ No newline at end of file
+ public const string SYSTEM = "system";
+}
diff --git a/api/SimpleAdmin/SimpleAdmin.System/Const/SysRoleConst.cs b/api/SimpleAdmin/SimpleAdmin.System/Const/SysRoleConst.cs
new file mode 100644
index 0000000000000000000000000000000000000000..d03ad5a951af77501062d9f043250958631237d9
--- /dev/null
+++ b/api/SimpleAdmin/SimpleAdmin.System/Const/SysRoleConst.cs
@@ -0,0 +1,27 @@
+// Copyright (c) 2022-Now 少林寺驻北固山办事处大神父王喇嘛
+//
+// SimpleAdmin 基于 Apache License Version 2.0 协议发布,可用于商业项目,但必须遵守以下补充条款:
+// 1.请不要删除和修改根目录下的LICENSE文件。
+// 2.请不要删除和修改SimpleAdmin源码头部的版权声明。
+// 3.分发源码时候,请注明软件出处 https://gitee.com/dotnetmoyu/SimpleAdmin
+// 4.基于本软件的作品,只能使用 SimpleAdmin 作为后台服务,除外情况不可商用且不允许二次分发或开源。
+// 5.请不得将本软件应用于危害国家安全、荣誉和利益的行为,不能以任何形式用于非法为目的的行为。
+// 6.任何基于本软件而产生的一切法律纠纷和责任,均于我司无关。
+
+namespace SimpleAdmin.System;
+
+///
+/// 角色常量
+///
+public class SysRoleConst
+{
+ ///
+ /// 超级管理员
+ ///
+ public const string SUPER_ADMIN = "superAdmin";
+
+ ///
+ /// 业务管理员
+ ///
+ public const string BIZ_ADMIN = "bizAdmin";
+}
diff --git a/api/SimpleAdmin/SimpleAdmin.System/Const/SystemConst.cs b/api/SimpleAdmin/SimpleAdmin.System/Const/SystemConst.cs
index 28430aa1c06a87e18e51d346908f0d6cd629c920..e3595dc1f2ff6db8943087330c79f1b92d3f233c 100644
--- a/api/SimpleAdmin/SimpleAdmin.System/Const/SystemConst.cs
+++ b/api/SimpleAdmin/SimpleAdmin.System/Const/SystemConst.cs
@@ -1,4 +1,14 @@
-namespace SimpleAdmin.System;
+// Copyright (c) 2022-Now 少林寺驻北固山办事处大神父王喇嘛
+//
+// SimpleAdmin 基于 Apache License Version 2.0 协议发布,可用于商业项目,但必须遵守以下补充条款:
+// 1.请不要删除和修改根目录下的LICENSE文件。
+// 2.请不要删除和修改SimpleAdmin源码头部的版权声明。
+// 3.分发源码时候,请注明软件出处 https://gitee.com/dotnetmoyu/SimpleAdmin
+// 4.基于本软件的作品,只能使用 SimpleAdmin 作为后台服务,除外情况不可商用且不允许二次分发或开源。
+// 5.请不得将本软件应用于危害国家安全、荣誉和利益的行为,不能以任何形式用于非法为目的的行为。
+// 6.任何基于本软件而产生的一切法律纠纷和责任,均于我司无关。
+
+namespace SimpleAdmin.System;
///
/// 系统层常量
@@ -8,65 +18,128 @@ public class SystemConst
///
/// 系统配置表缓存Key
///
- public const string Cache_DevConfig = CacheConst.Cache_Prefix_Web + "DevConfig:";
+ public const string CACHE_DEV_CONFIG = CacheConst.CACHE_PREFIX_WEB + "SysConfig:";
///
/// 登录验证码缓存Key
///
- public const string Cache_Captcha = CacheConst.Cache_Prefix_Web + "Captcha:";
+ public const string CACHE_CAPTCHA = CacheConst.CACHE_PREFIX_WEB + "Captcha:";
///
/// 用户表缓存Key
///
- public const string Cache_SysUser = CacheConst.Cache_Prefix_Web + "SysUser";
+ public const string CACHE_SYS_USER = CacheConst.CACHE_PREFIX_WEB + "SysUser";
+
+ ///
+ /// 用户头像缓存关系Key
+ ///
+ public const string CACHE_SYS_USER_AVATAR = CacheConst.CACHE_PREFIX_WEB + "SysUserAvatar";
///
/// 用户手机号关系缓存Key
///
- public const string Cache_SysUserPhone = CacheConst.Cache_Prefix_Web + "SysUserPhone";
+ public const string CACHE_SYS_USER_PHONE = CacheConst.CACHE_PREFIX_WEB + "SysUserPhone";
///
/// 用户手机号关系缓存Key
///
- public const string Cache_SysUserAccount = CacheConst.Cache_Prefix_Web + "SysUserAccount";
+ public const string CACHE_SYS_USER_ACCOUNT = CacheConst.CACHE_PREFIX_WEB + "SysUserAccount";
///
/// 资源表缓存Key
///
- public const string Cache_SysResource = CacheConst.Cache_Prefix_Web + "SysResource:";
+ public const string CACHE_SYS_RESOURCE = CacheConst.CACHE_PREFIX_WEB + "SysResource:";
///
/// 字典表缓存Key
///
- public const string Cache_DevDict = CacheConst.Cache_Prefix_Web + "DevDict";
+ public const string CACHE_DEV_DICT = CacheConst.CACHE_PREFIX_WEB + "SysDict";
///
/// 关系表缓存Key
///
- public const string Cache_SysRelation = CacheConst.Cache_Prefix_Web + "SysRelation:";
+ public const string CACHE_SYS_RELATION = CacheConst.CACHE_PREFIX_WEB + "SysRelation:";
///
/// 机构表缓存Key
///
- public const string Cache_SysOrg = CacheConst.Cache_Prefix_Web + "SysOrg";
+ public const string CACHE_SYS_ORG = CacheConst.CACHE_PREFIX_WEB + "SysOrg";
+
+ ///
+ /// 机构对应租户关系缓存Key
+ ///
+ public const string CACHE_SYS_ORG_TENANT = CacheConst.CACHE_PREFIX_WEB + "SysOrgTenant";
+
+ ///
+ /// 租户列表缓存
+ ///
+ public const string CACHE_SYS_TENANT = CacheConst.CACHE_PREFIX_WEB + "Tenant";
///
/// 角色表缓存Key
///
- public const string Cache_SysRole = CacheConst.Cache_Prefix_Web + "SysRole";
+ public const string CACHE_SYS_ROLE = CacheConst.CACHE_PREFIX_WEB + "SysRole";
///
/// 职位表缓存Key
///
- public const string Cache_SysPosition = CacheConst.Cache_Prefix_Web + "SysPosition";
-
+ public const string CACHE_SYS_POSITION = CacheConst.CACHE_PREFIX_WEB + "SysPosition";
#region 登录错误次数
///
/// 登录错误次数缓存Key
///
- public const string Cache_LoginErrorCount = CacheConst.Cache_Prefix_Web + "LoginErrorCount:";
+ public const string CACHE_LOGIN_ERROR_COUNT = CacheConst.CACHE_PREFIX_WEB + "LoginErrorCount:";
+
+ #endregion 登录错误次数
+
+ #region 操作
+
+ ///
+ /// 添加操作
+ ///
+ public const string ADD = "添加";
+
+ ///
+ /// 编辑操作
+ ///
+ public const string EDIT = "编辑";
+
+ ///
+ /// 启用操作
+ ///
+ public const string ENABLE = "启用";
+
+ ///
+ /// 禁用操作
+ ///
+ public const string DISABLE = "禁用";
+
+ ///
+ /// 重置密码操作
+ ///
+ public const string RESET_PWD = "重置密码";
+
+ ///
+ /// 用户授权操作
+ ///
+ public const string GRANT_ROLE = "授权";
+
+ #endregion 操作
+
+ #region 别称
+
+ ///
+ /// 组织
+ ///
+ public const string SYS_ORG = "组织";
+
+
+ ///
+ /// 职位
+ ///
+ public const string SYS_POS = "职位";
- #endregion
-}
\ No newline at end of file
+ #endregion 别称
+}
diff --git a/api/SimpleAdmin/SimpleAdmin.System/Entity/BatchEdit.cs b/api/SimpleAdmin/SimpleAdmin.System/Entity/BatchEdit.cs
index 1851c3624dd2a3c013bc23d1ba3b5d2be1a3ef13..0648d6798e1c83f794eec54f7e0824c8a424537c 100644
--- a/api/SimpleAdmin/SimpleAdmin.System/Entity/BatchEdit.cs
+++ b/api/SimpleAdmin/SimpleAdmin.System/Entity/BatchEdit.cs
@@ -1,10 +1,20 @@
-namespace SimpleAdmin.System;
+// Copyright (c) 2022-Now 少林寺驻北固山办事处大神父王喇嘛
+//
+// SimpleAdmin 基于 Apache License Version 2.0 协议发布,可用于商业项目,但必须遵守以下补充条款:
+// 1.请不要删除和修改根目录下的LICENSE文件。
+// 2.请不要删除和修改SimpleAdmin源码头部的版权声明。
+// 3.分发源码时候,请注明软件出处 https://gitee.com/dotnetmoyu/SimpleAdmin
+// 4.基于本软件的作品,只能使用 SimpleAdmin 作为后台服务,除外情况不可商用且不允许二次分发或开源。
+// 5.请不得将本软件应用于危害国家安全、荣誉和利益的行为,不能以任何形式用于非法为目的的行为。
+// 6.任何基于本软件而产生的一切法律纠纷和责任,均于我司无关。
+
+namespace SimpleAdmin.System;
///
/// 批量修改
///
[SugarTable("batch_edit", TableDescription = "批量修改")]
-[Tenant(SqlsugarConst.DB_Default)]
+[Tenant(SqlSugarConst.DB_DEFAULT)]
[CodeGen]
public class BatchEdit : PrimaryKeyEntity
{
@@ -37,4 +47,4 @@ public class BatchEdit : PrimaryKeyEntity
///
[SugarColumn(ColumnName = "TableDescription", ColumnDescription = "表描述", Length = 100, IsNullable = false)]
public string TableDescription { get; set; }
-}
\ No newline at end of file
+}
diff --git a/api/SimpleAdmin/SimpleAdmin.System/Entity/BatchEditConfig.cs b/api/SimpleAdmin/SimpleAdmin.System/Entity/BatchEditConfig.cs
index d753da305f0da690abd79a815107dc0fe17ccc43..cb7ec2ed8bcb44b80c950d84f786372ee9d72cb0 100644
--- a/api/SimpleAdmin/SimpleAdmin.System/Entity/BatchEditConfig.cs
+++ b/api/SimpleAdmin/SimpleAdmin.System/Entity/BatchEditConfig.cs
@@ -1,10 +1,20 @@
-namespace SimpleAdmin.System;
+// Copyright (c) 2022-Now 少林寺驻北固山办事处大神父王喇嘛
+//
+// SimpleAdmin 基于 Apache License Version 2.0 协议发布,可用于商业项目,但必须遵守以下补充条款:
+// 1.请不要删除和修改根目录下的LICENSE文件。
+// 2.请不要删除和修改SimpleAdmin源码头部的版权声明。
+// 3.分发源码时候,请注明软件出处 https://gitee.com/dotnetmoyu/SimpleAdmin
+// 4.基于本软件的作品,只能使用 SimpleAdmin 作为后台服务,除外情况不可商用且不允许二次分发或开源。
+// 5.请不得将本软件应用于危害国家安全、荣誉和利益的行为,不能以任何形式用于非法为目的的行为。
+// 6.任何基于本软件而产生的一切法律纠纷和责任,均于我司无关。
+
+namespace SimpleAdmin.System;
///
/// 批量修改配置表
///
[SugarTable("batch_edit_config", TableDescription = "批量修改配置表")]
-[Tenant(SqlsugarConst.DB_Default)]
+[Tenant(SqlSugarConst.DB_DEFAULT)]
public class BatchEditConfig : PrimaryKeyEntity
{
///
@@ -72,4 +82,4 @@ public class BatchEditConfig : PrimaryKeyEntity
///
[SugarColumn(ColumnName = "Status", ColumnDescription = "状态", Length = 100, IsNullable = false)]
public string Status { get; set; }
-}
\ No newline at end of file
+}
diff --git a/api/SimpleAdmin/SimpleAdmin.System/Entity/ClientRelation.cs b/api/SimpleAdmin/SimpleAdmin.System/Entity/ClientRelation.cs
index ddca066ec7c0d5c114835ff49f04190b60bf65fa..b0c492114eaf79918ded0780da1d921a8d5993a3 100644
--- a/api/SimpleAdmin/SimpleAdmin.System/Entity/ClientRelation.cs
+++ b/api/SimpleAdmin/SimpleAdmin.System/Entity/ClientRelation.cs
@@ -1,10 +1,20 @@
-namespace SimpleAdmin.Core.Entity.System;
+// Copyright (c) 2022-Now 少林寺驻北固山办事处大神父王喇嘛
+//
+// SimpleAdmin 基于 Apache License Version 2.0 协议发布,可用于商业项目,但必须遵守以下补充条款:
+// 1.请不要删除和修改根目录下的LICENSE文件。
+// 2.请不要删除和修改SimpleAdmin源码头部的版权声明。
+// 3.分发源码时候,请注明软件出处 https://gitee.com/dotnetmoyu/SimpleAdmin
+// 4.基于本软件的作品,只能使用 SimpleAdmin 作为后台服务,除外情况不可商用且不允许二次分发或开源。
+// 5.请不得将本软件应用于危害国家安全、荣誉和利益的行为,不能以任何形式用于非法为目的的行为。
+// 6.任何基于本软件而产生的一切法律纠纷和责任,均于我司无关。
+
+namespace SimpleAdmin.Core.Entity.System;
///
/// C端用户关系
///
[SugarTable("client_relation", TableDescription = "关系")]
-[Tenant(SqlsugarConst.DB_Default)]
+[Tenant(SqlSugarConst.DB_DEFAULT)]
public class ClientRelation : PrimaryKeyEntity
{
///
@@ -24,4 +34,4 @@ public class ClientRelation : PrimaryKeyEntity
///
[SugarColumn(ColumnName = "Category", ColumnDescription = "分类", Length = 200, IsNullable = true)]
public string Category { get; set; }
-}
\ No newline at end of file
+}
diff --git a/api/SimpleAdmin/SimpleAdmin.System/Entity/ClientUser.cs b/api/SimpleAdmin/SimpleAdmin.System/Entity/ClientUser.cs
index 7e7dbfa5bd27c2a5e7651dd4c11ac0fd5cf7816b..eaf348fa03fced319721951c2550fdc27eb1f378 100644
--- a/api/SimpleAdmin/SimpleAdmin.System/Entity/ClientUser.cs
+++ b/api/SimpleAdmin/SimpleAdmin.System/Entity/ClientUser.cs
@@ -1,10 +1,20 @@
-namespace SimpleAdmin.System;
+// Copyright (c) 2022-Now 少林寺驻北固山办事处大神父王喇嘛
+//
+// SimpleAdmin 基于 Apache License Version 2.0 协议发布,可用于商业项目,但必须遵守以下补充条款:
+// 1.请不要删除和修改根目录下的LICENSE文件。
+// 2.请不要删除和修改SimpleAdmin源码头部的版权声明。
+// 3.分发源码时候,请注明软件出处 https://gitee.com/dotnetmoyu/SimpleAdmin
+// 4.基于本软件的作品,只能使用 SimpleAdmin 作为后台服务,除外情况不可商用且不允许二次分发或开源。
+// 5.请不得将本软件应用于危害国家安全、荣誉和利益的行为,不能以任何形式用于非法为目的的行为。
+// 6.任何基于本软件而产生的一切法律纠纷和责任,均于我司无关。
+
+namespace SimpleAdmin.System;
///
/// C端用户
///
[SugarTable("client_user", TableDescription = "C端用户")]
-[Tenant(SqlsugarConst.DB_Default)]
+[Tenant(SqlSugarConst.DB_DEFAULT)]
public class ClientUser : DataEntityBase
{
///
@@ -268,12 +278,12 @@ public class ClientUser : DataEntityBase
///
/// 用户状态
///
- [SugarColumn(ColumnName = "UserStatus", ColumnDescription = "用户状态", Length = 200, IsNullable = true)]
- public string UserStatus { get; set; }
+ [SugarColumn(ColumnName = "Status", ColumnDescription = "用户状态", Length = 200, IsNullable = true)]
+ public string Status { get; set; }
///
/// 排序码
///
[SugarColumn(ColumnName = "SortCode", ColumnDescription = "排序码", IsNullable = true)]
public int? SortCode { get; set; }
-}
\ No newline at end of file
+}
diff --git a/api/SimpleAdmin/SimpleAdmin.System/Entity/DevMessage.cs b/api/SimpleAdmin/SimpleAdmin.System/Entity/DevMessage.cs
deleted file mode 100644
index 46dbe45a6bbec2b1add954bfd5f51fc2fffa4039..0000000000000000000000000000000000000000
--- a/api/SimpleAdmin/SimpleAdmin.System/Entity/DevMessage.cs
+++ /dev/null
@@ -1,33 +0,0 @@
-namespace SimpleAdmin.System;
-
-///
-/// 站内信
-///
-[SugarTable("dev_message", TableDescription = "站内信")]
-[Tenant(SqlsugarConst.DB_Default)]
-public class DevMessage : BaseEntity
-{
- ///
- /// 分类
- ///
- [SugarColumn(ColumnName = "Category", ColumnDescription = "分类", Length = 200)]
- public virtual string Category { get; set; }
-
- ///
- /// 主题
- ///
- [SugarColumn(ColumnName = "Subject", ColumnDescription = "主题")]
- public virtual string Subject { get; set; }
-
- ///
- /// 正文
- ///
- [SugarColumn(ColumnName = "Content", ColumnDescription = "正文", ColumnDataType = StaticConfig.CodeFirst_BigString, IsNullable = true)]
- public virtual string Content { get; set; }
-
- ///
- /// 是否已读
- ///
- [SugarColumn(IsIgnore = true)]
- public bool Read { get; set; } = true;
-}
\ No newline at end of file
diff --git a/api/SimpleAdmin/SimpleAdmin.System/Entity/DevRelation.cs b/api/SimpleAdmin/SimpleAdmin.System/Entity/DevRelation.cs
deleted file mode 100644
index 47baea961cf2f1604174fc81ca5bf426a229fe1f..0000000000000000000000000000000000000000
--- a/api/SimpleAdmin/SimpleAdmin.System/Entity/DevRelation.cs
+++ /dev/null
@@ -1,10 +0,0 @@
-namespace SimpleAdmin.System;
-
-///
-/// 开发关系表
-///
-[SugarTable("dev_relation", TableDescription = "开发关系表")]
-[Tenant(SqlsugarConst.DB_Default)]
-public class DevRelation : SysRelation
-{
-}
\ No newline at end of file
diff --git a/api/SimpleAdmin/SimpleAdmin.System/Entity/DevConfig.cs b/api/SimpleAdmin/SimpleAdmin.System/Entity/SysConfig.cs
similarity index 52%
rename from api/SimpleAdmin/SimpleAdmin.System/Entity/DevConfig.cs
rename to api/SimpleAdmin/SimpleAdmin.System/Entity/SysConfig.cs
index a0a629a06c96201795d0c33015b933f2b90545c2..28f5f4057a8841d9bbfa3b9ef54b5ca9cc29c0b2 100644
--- a/api/SimpleAdmin/SimpleAdmin.System/Entity/DevConfig.cs
+++ b/api/SimpleAdmin/SimpleAdmin.System/Entity/SysConfig.cs
@@ -1,11 +1,21 @@
-namespace SimpleAdmin.System;
+// Copyright (c) 2022-Now 少林寺驻北固山办事处大神父王喇嘛
+//
+// SimpleAdmin 基于 Apache License Version 2.0 协议发布,可用于商业项目,但必须遵守以下补充条款:
+// 1.请不要删除和修改根目录下的LICENSE文件。
+// 2.请不要删除和修改SimpleAdmin源码头部的版权声明。
+// 3.分发源码时候,请注明软件出处 https://gitee.com/dotnetmoyu/SimpleAdmin
+// 4.基于本软件的作品,只能使用 SimpleAdmin 作为后台服务,除外情况不可商用且不允许二次分发或开源。
+// 5.请不得将本软件应用于危害国家安全、荣誉和利益的行为,不能以任何形式用于非法为目的的行为。
+// 6.任何基于本软件而产生的一切法律纠纷和责任,均于我司无关。
+
+namespace SimpleAdmin.System;
///
/// 配置
///
-[SugarTable("dev_config", TableDescription = "配置")]
-[Tenant(SqlsugarConst.DB_Default)]
-public class DevConfig : BaseEntity
+[SugarTable("sys_config", TableDescription = "配置")]
+[Tenant(SqlSugarConst.DB_DEFAULT)]
+public class SysConfig : BaseEntity
{
///
/// 配置键
@@ -36,4 +46,4 @@ public class DevConfig : BaseEntity
///
[SugarColumn(ColumnName = "SortCode", ColumnDescription = "排序码", IsNullable = true)]
public int SortCode { get; set; }
-}
\ No newline at end of file
+}
diff --git a/api/SimpleAdmin/SimpleAdmin.System/Entity/DevDict.cs b/api/SimpleAdmin/SimpleAdmin.System/Entity/SysDict.cs
similarity index 48%
rename from api/SimpleAdmin/SimpleAdmin.System/Entity/DevDict.cs
rename to api/SimpleAdmin/SimpleAdmin.System/Entity/SysDict.cs
index dee0e877615548727fa32002e086c3bb4cc7c7d9..3f4fb505b3c9d111ab926a544bb33cf46624ce97 100644
--- a/api/SimpleAdmin/SimpleAdmin.System/Entity/DevDict.cs
+++ b/api/SimpleAdmin/SimpleAdmin.System/Entity/SysDict.cs
@@ -1,11 +1,21 @@
-namespace SimpleAdmin.System;
+// Copyright (c) 2022-Now 少林寺驻北固山办事处大神父王喇嘛
+//
+// SimpleAdmin 基于 Apache License Version 2.0 协议发布,可用于商业项目,但必须遵守以下补充条款:
+// 1.请不要删除和修改根目录下的LICENSE文件。
+// 2.请不要删除和修改SimpleAdmin源码头部的版权声明。
+// 3.分发源码时候,请注明软件出处 https://gitee.com/dotnetmoyu/SimpleAdmin
+// 4.基于本软件的作品,只能使用 SimpleAdmin 作为后台服务,除外情况不可商用且不允许二次分发或开源。
+// 5.请不得将本软件应用于危害国家安全、荣誉和利益的行为,不能以任何形式用于非法为目的的行为。
+// 6.任何基于本软件而产生的一切法律纠纷和责任,均于我司无关。
+
+namespace SimpleAdmin.System;
///
/// 字典
///
-[SugarTable("dev_dict", TableDescription = "字典表")]
-[Tenant(SqlsugarConst.DB_Default)]
-public class DevDict : BaseEntity
+[SugarTable("sys_dict", TableDescription = "字典表")]
+[Tenant(SqlSugarConst.DB_DEFAULT)]
+public class SysDict : BaseEntity
{
///
/// 父id
@@ -29,7 +39,7 @@ public class DevDict : BaseEntity
/// 分类
///
[SugarColumn(ColumnName = "Category", ColumnDescription = "分类", Length = 200)]
- public string Category { get; set; }
+ public virtual string Category { get; set; }
///
/// 排序码
@@ -37,9 +47,10 @@ public class DevDict : BaseEntity
[SugarColumn(ColumnName = "SortCode", ColumnDescription = "排序码")]
public int SortCode { get; set; }
+
///
/// 子节点
///
[SugarColumn(IsIgnore = true)]
- public List Children { get; set; }
-}
\ No newline at end of file
+ public List Children { get; set; }
+}
diff --git a/api/SimpleAdmin/SimpleAdmin.System/Entity/DevFile.cs b/api/SimpleAdmin/SimpleAdmin.System/Entity/SysFile.cs
similarity index 68%
rename from api/SimpleAdmin/SimpleAdmin.System/Entity/DevFile.cs
rename to api/SimpleAdmin/SimpleAdmin.System/Entity/SysFile.cs
index acd488184ad1d27124d69bd849b3ed91ad91d3f7..0d6c2508fd8c42e99531e1b3fd3c9356dda9d368 100644
--- a/api/SimpleAdmin/SimpleAdmin.System/Entity/DevFile.cs
+++ b/api/SimpleAdmin/SimpleAdmin.System/Entity/SysFile.cs
@@ -1,11 +1,21 @@
-namespace SimpleAdmin.System;
+// Copyright (c) 2022-Now 少林寺驻北固山办事处大神父王喇嘛
+//
+// SimpleAdmin 基于 Apache License Version 2.0 协议发布,可用于商业项目,但必须遵守以下补充条款:
+// 1.请不要删除和修改根目录下的LICENSE文件。
+// 2.请不要删除和修改SimpleAdmin源码头部的版权声明。
+// 3.分发源码时候,请注明软件出处 https://gitee.com/dotnetmoyu/SimpleAdmin
+// 4.基于本软件的作品,只能使用 SimpleAdmin 作为后台服务,除外情况不可商用且不允许二次分发或开源。
+// 5.请不得将本软件应用于危害国家安全、荣誉和利益的行为,不能以任何形式用于非法为目的的行为。
+// 6.任何基于本软件而产生的一切法律纠纷和责任,均于我司无关。
+
+namespace SimpleAdmin.System;
///
/// 文件表
///
-[SugarTable("dev_file", TableDescription = "文件表")]
-[Tenant(SqlsugarConst.DB_Default)]
-public class DevFile : DataEntityBase
+[SugarTable("sys_file", TableDescription = "文件表")]
+[Tenant(SqlSugarConst.DB_DEFAULT)]
+public class SysFile : DataEntityBase
{
///
/// 存储引擎
@@ -66,4 +76,4 @@ public class DevFile : DataEntityBase
///
[SugarColumn(ColumnName = "Thumbnail", ColumnDescription = "图片缩略图", IsNullable = true, ColumnDataType = StaticConfig.CodeFirst_BigString)]
public string Thumbnail { get; set; }
-}
\ No newline at end of file
+}
diff --git a/api/SimpleAdmin/SimpleAdmin.System/Entity/DevLogOperate.cs b/api/SimpleAdmin/SimpleAdmin.System/Entity/SysLogOperate.cs
similarity index 62%
rename from api/SimpleAdmin/SimpleAdmin.System/Entity/DevLogOperate.cs
rename to api/SimpleAdmin/SimpleAdmin.System/Entity/SysLogOperate.cs
index 035b45fafca38b227121168f627578b36880931c..bae5e10685af1a0c450fac0da93764316654b658 100644
--- a/api/SimpleAdmin/SimpleAdmin.System/Entity/DevLogOperate.cs
+++ b/api/SimpleAdmin/SimpleAdmin.System/Entity/SysLogOperate.cs
@@ -1,11 +1,21 @@
-namespace SimpleAdmin.System;
+// Copyright (c) 2022-Now 少林寺驻北固山办事处大神父王喇嘛
+//
+// SimpleAdmin 基于 Apache License Version 2.0 协议发布,可用于商业项目,但必须遵守以下补充条款:
+// 1.请不要删除和修改根目录下的LICENSE文件。
+// 2.请不要删除和修改SimpleAdmin源码头部的版权声明。
+// 3.分发源码时候,请注明软件出处 https://gitee.com/dotnetmoyu/SimpleAdmin
+// 4.基于本软件的作品,只能使用 SimpleAdmin 作为后台服务,除外情况不可商用且不允许二次分发或开源。
+// 5.请不得将本软件应用于危害国家安全、荣誉和利益的行为,不能以任何形式用于非法为目的的行为。
+// 6.任何基于本软件而产生的一切法律纠纷和责任,均于我司无关。
+
+namespace SimpleAdmin.System;
///
/// 操作日志表
///
-[SugarTable("dev_log_operate", TableDescription = "操作日志表")]
-[Tenant(SqlsugarConst.DB_Default)]
-public class DevLogOperate : DevLogVisit
+[SugarTable("sys_log_operate_{year}{month}{day}", TableDescription = "操作日志表")]
+[Tenant(SqlSugarConst.DB_DEFAULT)]
+public class SysLogOperate : SysLogVisit
{
///
/// 具体消息
@@ -48,4 +58,4 @@ public class DevLogOperate : DevLogVisit
///
[SugarColumn(ColumnName = "ResultJson", ColumnDescription = "返回结果", ColumnDataType = StaticConfig.CodeFirst_BigString, IsNullable = true)]
public string ResultJson { get; set; }
-}
\ No newline at end of file
+}
diff --git a/api/SimpleAdmin/SimpleAdmin.System/Entity/DevLogVisit.cs b/api/SimpleAdmin/SimpleAdmin.System/Entity/SysLogVisit.cs
similarity index 61%
rename from api/SimpleAdmin/SimpleAdmin.System/Entity/DevLogVisit.cs
rename to api/SimpleAdmin/SimpleAdmin.System/Entity/SysLogVisit.cs
index 2cf18213b2c6fb7079eff5a86c33a304e33e7f95..e085d4fa0d40a5ce1ca622508d88c23eb297f34a 100644
--- a/api/SimpleAdmin/SimpleAdmin.System/Entity/DevLogVisit.cs
+++ b/api/SimpleAdmin/SimpleAdmin.System/Entity/SysLogVisit.cs
@@ -1,11 +1,22 @@
-namespace SimpleAdmin.System;
+// Copyright (c) 2022-Now 少林寺驻北固山办事处大神父王喇嘛
+//
+// SimpleAdmin 基于 Apache License Version 2.0 协议发布,可用于商业项目,但必须遵守以下补充条款:
+// 1.请不要删除和修改根目录下的LICENSE文件。
+// 2.请不要删除和修改SimpleAdmin源码头部的版权声明。
+// 3.分发源码时候,请注明软件出处 https://gitee.com/dotnetmoyu/SimpleAdmin
+// 4.基于本软件的作品,只能使用 SimpleAdmin 作为后台服务,除外情况不可商用且不允许二次分发或开源。
+// 5.请不得将本软件应用于危害国家安全、荣誉和利益的行为,不能以任何形式用于非法为目的的行为。
+// 6.任何基于本软件而产生的一切法律纠纷和责任,均于我司无关。
+
+namespace SimpleAdmin.System;
///
/// 访问日志表
///
-[SugarTable("dev_log_visit", TableDescription = "访问日志表")]
-[Tenant(SqlsugarConst.DB_Default)]
-public class DevLogVisit : BaseEntity
+[SugarTable("sys_log_visit_{year}{month}{day}", TableDescription = "访问日志表")]
+[SplitTable(SplitType.Year)]//按年分表 (自带分表支持 年、季、月、周、日)
+[Tenant(SqlSugarConst.DB_DEFAULT)]
+public class SysLogVisit : BaseEntity
{
///
/// 日志分类
@@ -53,6 +64,7 @@ public class DevLogVisit : BaseEntity
/// 操作时间
///
[SugarColumn(ColumnName = "OpTime", ColumnDescription = "操作时间")]
+ [SplitField]//分表字段 在插入的时候会根据这个字段插入哪个表,在更新删除的时候用这个字段找出相关表
public DateTime OpTime { get; set; }
///
@@ -66,4 +78,4 @@ public class DevLogVisit : BaseEntity
///
[SugarColumn(ColumnName = "OpAccount", ColumnDescription = "操作人账号", Length = 200, IsNullable = true)]
public string OpAccount { get; set; }
-}
\ No newline at end of file
+}
diff --git a/api/SimpleAdmin/SimpleAdmin.System/Entity/SysMessage.cs b/api/SimpleAdmin/SimpleAdmin.System/Entity/SysMessage.cs
new file mode 100644
index 0000000000000000000000000000000000000000..4d01fd08efc8976d19bf41e77c84abca72587d66
--- /dev/null
+++ b/api/SimpleAdmin/SimpleAdmin.System/Entity/SysMessage.cs
@@ -0,0 +1,123 @@
+// Copyright (c) 2022-Now 少林寺驻北固山办事处大神父王喇嘛
+//
+// SimpleAdmin 基于 Apache License Version 2.0 协议发布,可用于商业项目,但必须遵守以下补充条款:
+// 1.请不要删除和修改根目录下的LICENSE文件。
+// 2.请不要删除和修改SimpleAdmin源码头部的版权声明。
+// 3.分发源码时候,请注明软件出处 https://gitee.com/dotnetmoyu/SimpleAdmin
+// 4.基于本软件的作品,只能使用 SimpleAdmin 作为后台服务,除外情况不可商用且不允许二次分发或开源。
+// 5.请不得将本软件应用于危害国家安全、荣誉和利益的行为,不能以任何形式用于非法为目的的行为。
+// 6.任何基于本软件而产生的一切法律纠纷和责任,均于我司无关。
+
+namespace SimpleAdmin.System;
+
+///
+/// 站内信
+///
+[SugarTable("sys_message", TableDescription = "站内信")]
+[Tenant(SqlSugarConst.DB_DEFAULT)]
+public class SysMessage : BaseEntity
+{
+ ///
+ /// 分类
+ ///
+ [SugarColumn(ColumnName = "Category", ColumnDescription = "分类", Length = 200)]
+ public virtual string Category { get; set; }
+
+ ///
+ /// 主题
+ ///
+ [SugarColumn(ColumnName = "Subject", ColumnDescription = "主题")]
+ public virtual string Subject { get; set; }
+
+ ///
+ /// 接收人类型
+ ///
+ [SugarColumn(ColumnName = "ReceiverType", ColumnDescription = "接收人类型")]
+ public virtual string ReceiverType { get; set; }
+
+ ///
+ /// 接收人列表
+ ///
+ [SugarColumn(ColumnName = "ReceiverInfo", ColumnDescription = "接收人列表", IsJson = true)]
+ public virtual List ReceiverInfo { get; set; }
+
+ ///
+ /// 发送方式
+ ///
+ [SugarColumn(ColumnName = "SendWay", ColumnDescription = "发送方式")]
+ public virtual string SendWay { get; set; }
+
+ ///
+ /// 发送时间
+ ///
+ [SugarColumn(ColumnDescription = "发送时间")]
+ public virtual DateTime SendTime { get; set; }
+
+ ///
+ /// 正文
+ ///
+ [SugarColumn(ColumnName = "Content", ColumnDescription = "正文", ColumnDataType = StaticConfig.CodeFirst_BigString, IsNullable = true)]
+ public virtual string Content { get; set; }
+
+
+ ///
+ /// 延迟时间(秒)
+ ///
+ [SugarColumn(IsIgnore = true)]
+ public int DelayTime { get; set; }
+
+ ///
+ /// 已读情况
+ ///
+ [SugarColumn(IsIgnore = true)]
+ public List ReceiverDetail { get; set; } = new List();
+
+ ///
+ /// 发送时间格式化
+ ///
+ [SugarColumn(IsIgnore = true)]
+ public string SendTimeFormat { get; set; }
+
+ ///
+ /// 分组查询用
+ ///
+ [SugarColumn(IsIgnore = true)]
+ public int Index2 { get; set; }
+
+ ///
+ /// 是否已读
+ ///
+ [SugarColumn(IsIgnore = true)]
+ public bool Read { get; set; }
+}
+
+public class ReceiverInfo
+{
+ ///
+ /// ID
+ ///
+ public long Id { get; set; }
+
+ ///
+ /// 名称
+ ///
+ public string Name { get; set; }
+}
+
+public class ReceiverDetail
+{
+ ///
+ /// ID
+ ///
+ public long Id { get; set; }
+
+ ///
+ /// 名称
+ ///
+ public string Name { get; set; }
+
+ ///
+ /// 是否已读
+ ///
+ public bool Read { get; set; }
+}
diff --git a/api/SimpleAdmin/SimpleAdmin.System/Entity/DevMessageUser.cs b/api/SimpleAdmin/SimpleAdmin.System/Entity/SysMessageUser.cs
similarity index 39%
rename from api/SimpleAdmin/SimpleAdmin.System/Entity/DevMessageUser.cs
rename to api/SimpleAdmin/SimpleAdmin.System/Entity/SysMessageUser.cs
index 02a2230919ecd832f6ef4358a16f0b67b0dea867..73a7b794331fa8954e48fa60b968f24398ca2778 100644
--- a/api/SimpleAdmin/SimpleAdmin.System/Entity/DevMessageUser.cs
+++ b/api/SimpleAdmin/SimpleAdmin.System/Entity/SysMessageUser.cs
@@ -1,11 +1,21 @@
-namespace SimpleAdmin.System;
+// Copyright (c) 2022-Now 少林寺驻北固山办事处大神父王喇嘛
+//
+// SimpleAdmin 基于 Apache License Version 2.0 协议发布,可用于商业项目,但必须遵守以下补充条款:
+// 1.请不要删除和修改根目录下的LICENSE文件。
+// 2.请不要删除和修改SimpleAdmin源码头部的版权声明。
+// 3.分发源码时候,请注明软件出处 https://gitee.com/dotnetmoyu/SimpleAdmin
+// 4.基于本软件的作品,只能使用 SimpleAdmin 作为后台服务,除外情况不可商用且不允许二次分发或开源。
+// 5.请不得将本软件应用于危害国家安全、荣誉和利益的行为,不能以任何形式用于非法为目的的行为。
+// 6.任何基于本软件而产生的一切法律纠纷和责任,均于我司无关。
+
+namespace SimpleAdmin.System;
///
/// 用户消息表
///
-[SugarTable("dev_message_user", TableDescription = "用户消息表")]
-[Tenant(SqlsugarConst.DB_Default)]
-public class DevMessageUser : BaseEntity
+[SugarTable("sys_message_user", TableDescription = "用户消息表")]
+[Tenant(SqlSugarConst.DB_DEFAULT)]
+public class SysMessageUser : BaseEntity
{
///
/// 消息Id
@@ -24,4 +34,4 @@ public class DevMessageUser : BaseEntity
///
[SugarColumn(ColumnName = "Read", ColumnDescription = "已读未读", IsNullable = false)]
public bool Read { get; set; }
-}
\ No newline at end of file
+}
diff --git a/api/SimpleAdmin/SimpleAdmin.System/Entity/SysOrg.cs b/api/SimpleAdmin/SimpleAdmin.System/Entity/SysOrg.cs
index e6be1f648fa34fee1d5b5de2310b3a16addbc10e..cb0e3a8d48c99c0100ff8080c268b5602b606093 100644
--- a/api/SimpleAdmin/SimpleAdmin.System/Entity/SysOrg.cs
+++ b/api/SimpleAdmin/SimpleAdmin.System/Entity/SysOrg.cs
@@ -1,10 +1,20 @@
-namespace SimpleAdmin.System;
+// Copyright (c) 2022-Now 少林寺驻北固山办事处大神父王喇嘛
+//
+// SimpleAdmin 基于 Apache License Version 2.0 协议发布,可用于商业项目,但必须遵守以下补充条款:
+// 1.请不要删除和修改根目录下的LICENSE文件。
+// 2.请不要删除和修改SimpleAdmin源码头部的版权声明。
+// 3.分发源码时候,请注明软件出处 https://gitee.com/dotnetmoyu/SimpleAdmin
+// 4.基于本软件的作品,只能使用 SimpleAdmin 作为后台服务,除外情况不可商用且不允许二次分发或开源。
+// 5.请不得将本软件应用于危害国家安全、荣誉和利益的行为,不能以任何形式用于非法为目的的行为。
+// 6.任何基于本软件而产生的一切法律纠纷和责任,均于我司无关。
+
+namespace SimpleAdmin.System;
///
/// 组织
///
[SugarTable("sys_org", TableDescription = "组织")]
-[Tenant(SqlsugarConst.DB_Default)]
+[Tenant(SqlSugarConst.DB_DEFAULT)]
[CodeGen]
public class SysOrg : BaseEntity
{
@@ -14,6 +24,9 @@ public class SysOrg : BaseEntity
[SugarColumn(ColumnName = "ParentId", ColumnDescription = "父id")]
public long ParentId { get; set; }
+ [SugarColumn(ColumnName = "ParentIdList", ColumnDescription = "父id列表", IsNullable = true, IsJson = true)]
+ public List ParentIdList { get; set; } = new List();
+
///
/// 主管ID
///
@@ -50,6 +63,12 @@ public class SysOrg : BaseEntity
[SugarColumn(ColumnName = "SortCode", ColumnDescription = "排序码", IsNullable = true)]
public int? SortCode { get; set; }
+ ///
+ /// 主管信息
+ ///
+ [SugarColumn(IsIgnore = true)]
+ public UserSelectorOutPut DirectorInfo { get; set; }
+
///
/// 子节点
///
@@ -60,5 +79,5 @@ public class SysOrg : BaseEntity
/// 设置为叶子节点(设置了loadData时有效)
///
[SugarColumn(IsIgnore = true)]
- public bool? IsLeaf { get; set; }
-}
\ No newline at end of file
+ public bool? Leaf { get; set; }
+}
diff --git a/api/SimpleAdmin/SimpleAdmin.System/Entity/SysPosition.cs b/api/SimpleAdmin/SimpleAdmin.System/Entity/SysPosition.cs
index 3afe43f5851472f33e666ca1df251469f815907f..16af01f9cc98c53d50105b94f830e51c87239fd9 100644
--- a/api/SimpleAdmin/SimpleAdmin.System/Entity/SysPosition.cs
+++ b/api/SimpleAdmin/SimpleAdmin.System/Entity/SysPosition.cs
@@ -1,10 +1,20 @@
-namespace SimpleAdmin.System;
+// Copyright (c) 2022-Now 少林寺驻北固山办事处大神父王喇嘛
+//
+// SimpleAdmin 基于 Apache License Version 2.0 协议发布,可用于商业项目,但必须遵守以下补充条款:
+// 1.请不要删除和修改根目录下的LICENSE文件。
+// 2.请不要删除和修改SimpleAdmin源码头部的版权声明。
+// 3.分发源码时候,请注明软件出处 https://gitee.com/dotnetmoyu/SimpleAdmin
+// 4.基于本软件的作品,只能使用 SimpleAdmin 作为后台服务,除外情况不可商用且不允许二次分发或开源。
+// 5.请不得将本软件应用于危害国家安全、荣誉和利益的行为,不能以任何形式用于非法为目的的行为。
+// 6.任何基于本软件而产生的一切法律纠纷和责任,均于我司无关。
+
+namespace SimpleAdmin.System;
///
/// 职位表
///
[SugarTable("sys_position", TableDescription = "职位表")]
-[Tenant(SqlsugarConst.DB_Default)]
+[Tenant(SqlSugarConst.DB_DEFAULT)]
[CodeGen]
public class SysPosition : DataEntityBase
{
@@ -37,4 +47,4 @@ public class SysPosition : DataEntityBase
///
[SugarColumn(ColumnName = "SortCode", ColumnDescription = "排序码", IsNullable = true)]
public int? SortCode { get; set; }
-}
\ No newline at end of file
+}
diff --git a/api/SimpleAdmin/SimpleAdmin.System/Entity/SysRelation.cs b/api/SimpleAdmin/SimpleAdmin.System/Entity/SysRelation.cs
index 573650d1bb8fba80d0ee0291929e4a16f776984e..b7e514ec26cc7d8cb2660d4cdd8e905a2ae65905 100644
--- a/api/SimpleAdmin/SimpleAdmin.System/Entity/SysRelation.cs
+++ b/api/SimpleAdmin/SimpleAdmin.System/Entity/SysRelation.cs
@@ -1,10 +1,20 @@
-namespace SimpleAdmin.System;
+// Copyright (c) 2022-Now 少林寺驻北固山办事处大神父王喇嘛
+//
+// SimpleAdmin 基于 Apache License Version 2.0 协议发布,可用于商业项目,但必须遵守以下补充条款:
+// 1.请不要删除和修改根目录下的LICENSE文件。
+// 2.请不要删除和修改SimpleAdmin源码头部的版权声明。
+// 3.分发源码时候,请注明软件出处 https://gitee.com/dotnetmoyu/SimpleAdmin
+// 4.基于本软件的作品,只能使用 SimpleAdmin 作为后台服务,除外情况不可商用且不允许二次分发或开源。
+// 5.请不得将本软件应用于危害国家安全、荣誉和利益的行为,不能以任何形式用于非法为目的的行为。
+// 6.任何基于本软件而产生的一切法律纠纷和责任,均于我司无关。
+
+namespace SimpleAdmin.System;
///
/// 系统关系表
///
[SugarTable("sys_relation", TableDescription = "系统关系表")]
-[Tenant(SqlsugarConst.DB_Default)]
+[Tenant(SqlSugarConst.DB_DEFAULT)]
public class SysRelation : PrimaryKeyEntity
{
///
@@ -24,4 +34,4 @@ public class SysRelation : PrimaryKeyEntity
///
[SugarColumn(ColumnName = "Category", ColumnDescription = "分类", Length = 200, IsNullable = false)]
public string Category { get; set; }
-}
\ No newline at end of file
+}
diff --git a/api/SimpleAdmin/SimpleAdmin.System/Entity/SysResource.cs b/api/SimpleAdmin/SimpleAdmin.System/Entity/SysResource.cs
index 8ecaa27e52cd83d0778c9cc92c5ccb31a1747786..93238890a3c2bacd60363aba2c0765f49055025a 100644
--- a/api/SimpleAdmin/SimpleAdmin.System/Entity/SysResource.cs
+++ b/api/SimpleAdmin/SimpleAdmin.System/Entity/SysResource.cs
@@ -1,10 +1,20 @@
-namespace SimpleAdmin.System;
+// Copyright (c) 2022-Now 少林寺驻北固山办事处大神父王喇嘛
+//
+// SimpleAdmin 基于 Apache License Version 2.0 协议发布,可用于商业项目,但必须遵守以下补充条款:
+// 1.请不要删除和修改根目录下的LICENSE文件。
+// 2.请不要删除和修改SimpleAdmin源码头部的版权声明。
+// 3.分发源码时候,请注明软件出处 https://gitee.com/dotnetmoyu/SimpleAdmin
+// 4.基于本软件的作品,只能使用 SimpleAdmin 作为后台服务,除外情况不可商用且不允许二次分发或开源。
+// 5.请不得将本软件应用于危害国家安全、荣誉和利益的行为,不能以任何形式用于非法为目的的行为。
+// 6.任何基于本软件而产生的一切法律纠纷和责任,均于我司无关。
+
+namespace SimpleAdmin.System;
///
/// 资源
///
[SugarTable("sys_resource", TableDescription = "资源")]
-[Tenant(SqlsugarConst.DB_Default)]
+[Tenant(SqlSugarConst.DB_DEFAULT)]
public class SysResource : BaseEntity
{
///
@@ -25,6 +35,12 @@ public class SysResource : BaseEntity
[SugarColumn(ColumnName = "Name", ColumnDescription = "别名", Length = 200, IsNullable = true)]
public string Name { get; set; }
+ ///
+ /// 描述
+ ///
+ [SugarColumn(ColumnName = "Description", ColumnDescription = "描述", Length = 200, IsNullable = true)]
+ public string Description { get; set; }
+
///
/// 编码
///
@@ -68,10 +84,40 @@ public class SysResource : BaseEntity
public virtual string Icon { get; set; }
///
- /// 颜色
+ /// 是否在菜单中隐藏, 需要高亮的 path (通常用作详情页高亮父级菜单)
+ ///
+ [SugarColumn(ColumnName = "ActiveMenu", ColumnDescription = "需要高亮的 path (通常用作详情页高亮父级菜单)", Length = 200, IsNullable = true)]
+ public string ActiveMenu { get; set; }
+
+ ///
+ /// 是否在菜单中隐藏 (通常列表详情页需要隐藏)
+ ///
+ [SugarColumn(ColumnName = "IsHide", ColumnDescription = "是否在菜单中隐藏 (通常列表详情页需要隐藏) ", IsNullable = true)]
+ public bool IsHide { get; set; }
+
+ ///
+ /// 是否在菜单中隐藏 (通常列表详情页需要隐藏)
+ ///
+ [SugarColumn(ColumnName = "IsFull", ColumnDescription = "菜单是否全屏 (示例:数据大屏页面)", IsNullable = true)]
+ public bool IsFull { get; set; }
+
+ ///
+ /// 菜单是否固定在标签页中 (首页通常是固定项)
+ ///
+ [SugarColumn(ColumnName = "IsAffix", ColumnDescription = "菜单是否固定在标签页中 (首页通常是固定项)", IsNullable = true)]
+ public bool IsAffix { get; set; }
+
+ ///
+ /// 菜单是否固定在标签页中 (首页通常是固定项)
+ ///
+ [SugarColumn(ColumnName = "IsKeepAlive", ColumnDescription = " 当前路由是否缓存", IsNullable = true)]
+ public bool IsKeepAlive { get; set; }
+
+ ///
+ /// 是否为首页
///
- [SugarColumn(ColumnName = "Color", ColumnDescription = "颜色", Length = 200, IsNullable = true)]
- public string Color { get; set; }
+ [SugarColumn(ColumnName = "IsHome", ColumnDescription = " 是否为首页", IsNullable = true)]
+ public bool IsHome { get; set; }
///
/// 排序码
@@ -79,6 +125,12 @@ public class SysResource : BaseEntity
[SugarColumn(ColumnName = "SortCode", ColumnDescription = "排序码", IsNullable = true)]
public int? SortCode { get; set; }
+ ///
+ /// 外链地址
+ ///
+ [SugarColumn(ColumnName = "IsLink", ColumnDescription = "外链地址", IsNullable = true)]
+ public string IsLink { get; set; }
+
///
/// 菜单元标签
///
@@ -86,7 +138,7 @@ public class SysResource : BaseEntity
public Meta Meta { get; set; }
///
- /// 字节点
+ /// 子节点
///
[SugarColumn(IsIgnore = true)]
public List Children { get; set; }
@@ -108,17 +160,32 @@ public class Meta
public string Title { get; set; }
///
- /// 类型
- ///
- public string Type { get; set; }
+ /// 是否在菜单中隐藏, 需要高亮的 path (通常用作详情页高亮父级菜单)
+ ///
+ public string ActiveMenu { get; set; }
///
- /// 是否首页
- ///
- public bool Affix { get; set; } = false;
+ /// 是否在菜单中隐藏 (通常列表详情页需要隐藏)
+ ///
+ public bool IsHide { get; set; }
///
- /// 是否隐藏
+ /// 路由外链时填写的访问地址
///
- public bool hidden { get; set; } = false;
-}
\ No newline at end of file
+ public string IsLink { get; set; } = "";
+
+ ///
+ /// 是否在菜单中隐藏 (通常列表详情页需要隐藏)
+ ///
+ public bool IsFull { get; set; }
+
+ ///
+ /// 菜单是否固定在标签页中 (首页通常是固定项)
+ ///
+ public bool IsAffix { get; set; }
+
+ ///
+ /// 菜单是否固定在标签页中 (首页通常是固定项)
+ ///
+ public bool IsKeepAlive { get; set; }
+}
diff --git a/api/SimpleAdmin/SimpleAdmin.System/Entity/SysRole.cs b/api/SimpleAdmin/SimpleAdmin.System/Entity/SysRole.cs
index 864b20241a46b03531c5fa49ef421e3e12a9d6d4..1fde4929d8e14d45f0cf3662b07fd49778ab3c3a 100644
--- a/api/SimpleAdmin/SimpleAdmin.System/Entity/SysRole.cs
+++ b/api/SimpleAdmin/SimpleAdmin.System/Entity/SysRole.cs
@@ -1,10 +1,20 @@
-namespace SimpleAdmin.System;
+// Copyright (c) 2022-Now 少林寺驻北固山办事处大神父王喇嘛
+//
+// SimpleAdmin 基于 Apache License Version 2.0 协议发布,可用于商业项目,但必须遵守以下补充条款:
+// 1.请不要删除和修改根目录下的LICENSE文件。
+// 2.请不要删除和修改SimpleAdmin源码头部的版权声明。
+// 3.分发源码时候,请注明软件出处 https://gitee.com/dotnetmoyu/SimpleAdmin
+// 4.基于本软件的作品,只能使用 SimpleAdmin 作为后台服务,除外情况不可商用且不允许二次分发或开源。
+// 5.请不得将本软件应用于危害国家安全、荣誉和利益的行为,不能以任何形式用于非法为目的的行为。
+// 6.任何基于本软件而产生的一切法律纠纷和责任,均于我司无关。
+
+namespace SimpleAdmin.System;
///
/// 角色
///
[SugarTable("sys_role", TableDescription = "角色")]
-[Tenant(SqlsugarConst.DB_Default)]
+[Tenant(SqlSugarConst.DB_DEFAULT)]
public class SysRole : DataEntityBase
{
///
@@ -34,7 +44,8 @@ public class SysRole : DataEntityBase
///
/// 默认数据范围
///
- [SugarColumn(ColumnName = "DefaultDataScope", ColumnDescription = "默认数据范围", IsJson = true, ColumnDataType = StaticConfig.CodeFirst_BigString, IsNullable = false)]
+ [SugarColumn(ColumnName = "DefaultDataScope", ColumnDescription = "默认数据范围", IsJson = true, ColumnDataType = StaticConfig.CodeFirst_BigString,
+ IsNullable = false)]
public virtual DefaultDataScope DefaultDataScope { get; set; }
///
@@ -42,6 +53,12 @@ public class SysRole : DataEntityBase
///
[SugarColumn(ColumnName = "SortCode", ColumnDescription = "排序码", IsNullable = true)]
public int? SortCode { get; set; }
+
+ ///
+ /// 用户列表
+ ///
+ [SugarColumn(IsIgnore = true)]
+ public List UserList { get; set; } = new List();
}
///
@@ -63,4 +80,4 @@ public class DefaultDataScope
/// 自定义机构范围列表
///
public List ScopeDefineOrgIdList { get; set; } = new List();
-}
\ No newline at end of file
+}
diff --git a/api/SimpleAdmin/SimpleAdmin.System/Entity/SysUser.cs b/api/SimpleAdmin/SimpleAdmin.System/Entity/SysUser.cs
index bbcc98ec6404dbf97edc8e19830cba2cf5fe92fe..b1a7628a82ab5f719050df0b9e4ba29433ce7a6f 100644
--- a/api/SimpleAdmin/SimpleAdmin.System/Entity/SysUser.cs
+++ b/api/SimpleAdmin/SimpleAdmin.System/Entity/SysUser.cs
@@ -1,10 +1,20 @@
-namespace SimpleAdmin.System;
+// Copyright (c) 2022-Now 少林寺驻北固山办事处大神父王喇嘛
+//
+// SimpleAdmin 基于 Apache License Version 2.0 协议发布,可用于商业项目,但必须遵守以下补充条款:
+// 1.请不要删除和修改根目录下的LICENSE文件。
+// 2.请不要删除和修改SimpleAdmin源码头部的版权声明。
+// 3.分发源码时候,请注明软件出处 https://gitee.com/dotnetmoyu/SimpleAdmin
+// 4.基于本软件的作品,只能使用 SimpleAdmin 作为后台服务,除外情况不可商用且不允许二次分发或开源。
+// 5.请不得将本软件应用于危害国家安全、荣誉和利益的行为,不能以任何形式用于非法为目的的行为。
+// 6.任何基于本软件而产生的一切法律纠纷和责任,均于我司无关。
+
+namespace SimpleAdmin.System;
///
/// 用户信息表
///
[SugarTable("sys_user", TableDescription = "用户信息表")]
-[Tenant(SqlsugarConst.DB_Default)]
+[Tenant(SqlSugarConst.DB_DEFAULT)]
[BatchEdit]
[CodeGen]
public class SysUser : BaseEntity
@@ -208,11 +218,6 @@ public class SysUser : BaseEntity
[SugarColumn(ColumnName = "DirectorId", ColumnDescription = "主管id", IsNullable = true)]
public long? DirectorId { get; set; }
- ///
- /// 兼任信息
- ///
- [SugarColumn(ColumnName = "PositionJson", ColumnDescription = "兼任信息", IsJson = true, ColumnDataType = StaticConfig.CodeFirst_BigString, IsNullable = true)]
- public List PositionJson { get; set; }
///
/// 上次修改密码时间
@@ -268,11 +273,6 @@ public class SysUser : BaseEntity
[SugarColumn(ColumnName = "LatestLoginDevice", ColumnDescription = "最新登录设备", IsNullable = true)]
public string LatestLoginDevice { get; set; }
- ///
- /// 用户状态
- ///
- [SugarColumn(ColumnName = "UserStatus", ColumnDescription = "用户状态", Length = 200, IsNullable = true)]
- public string UserStatus { get; set; }
///
/// 排序码
@@ -280,6 +280,12 @@ public class SysUser : BaseEntity
[SugarColumn(ColumnName = "SortCode", ColumnDescription = "排序码", IsNullable = true)]
public int? SortCode { get; set; }
+ ///
+ /// 默认模块
+ ///
+ [SugarColumn(ColumnName = "DefaultModule", ColumnDescription = "默认模块", IsNullable = true)]
+ public long? DefaultModule { get; set; }
+
///
/// 机构信息
///
@@ -298,6 +304,18 @@ public class SysUser : BaseEntity
[SugarColumn(IsIgnore = true)]
public string PositionName { get; set; }
+ ///
+ /// 组织和机构ID列表,组织ID从上到下最后是职位
+ ///
+ [SugarColumn(IsIgnore = true, IsJson = true)]
+ public List OrgAndPosIdList { get; set; } = new List();
+
+ ///
+ /// 主管信息
+ ///
+ [SugarColumn(IsIgnore = true)]
+ public UserSelectorOutPut DirectorInfo { get; set; }
+
///
/// 按钮码集合
///
@@ -339,6 +357,18 @@ public class SysUser : BaseEntity
///
[SugarColumn(IsIgnore = true)]
public List ScopeOrgChildList { get; set; }
+
+ ///
+ /// 机构及以下机构ID集合
+ ///
+ [SugarColumn(IsIgnore = true)]
+ public List ModuleList { get; set; } = new List();
+
+ ///
+ /// 租户Id
+ ///
+ [SugarColumn(IsIgnore = true)]
+ public long? TenantId { get; set; }
}
///
@@ -361,24 +391,3 @@ public class DataScope
///
public List? DataScopes { get; set; }
}
-
-///
-/// 兼任信息
-///
-public class PositionJson
-{
- ///
- /// 组织ID
- ///
- public long OrgId { get; set; }
-
- ///
- /// 机构ID
- ///
- public long PositionId { get; set; }
-
- ///
- /// 主管ID
- ///
- public long? DirectorId { get; set; }
-}
\ No newline at end of file
diff --git a/api/SimpleAdmin/SimpleAdmin.System/EventSubscriber/AuthEventSubscriber.cs b/api/SimpleAdmin/SimpleAdmin.System/EventSubscriber/AuthEventSubscriber.cs
index 6eb0f6a1eeabb77034a170f21414c6aab846e29a..747687e1841fa1acf34f1608fabc57bf2951f912 100644
--- a/api/SimpleAdmin/SimpleAdmin.System/EventSubscriber/AuthEventSubscriber.cs
+++ b/api/SimpleAdmin/SimpleAdmin.System/EventSubscriber/AuthEventSubscriber.cs
@@ -1,5 +1,15 @@
-using IPTools.Core;
-using SimpleAdmin.Plugin.Core;
+// Copyright (c) 2022-Now 少林寺驻北固山办事处大神父王喇嘛
+//
+// SimpleAdmin 基于 Apache License Version 2.0 协议发布,可用于商业项目,但必须遵守以下补充条款:
+// 1.请不要删除和修改根目录下的LICENSE文件。
+// 2.请不要删除和修改SimpleAdmin源码头部的版权声明。
+// 3.分发源码时候,请注明软件出处 https://gitee.com/dotnetmoyu/SimpleAdmin
+// 4.基于本软件的作品,只能使用 SimpleAdmin 作为后台服务,除外情况不可商用且不允许二次分发或开源。
+// 5.请不得将本软件应用于危害国家安全、荣誉和利益的行为,不能以任何形式用于非法为目的的行为。
+// 6.任何基于本软件而产生的一切法律纠纷和责任,均于我司无关。
+
+
+using IP2Region.Net.Abstractions;
namespace SimpleAdmin.System;
@@ -9,16 +19,17 @@ namespace SimpleAdmin.System;
public class AuthEventSubscriber : IEventSubscriber, ISingleton
{
private readonly ISimpleCacheService _simpleCacheService;
- private readonly INamedServiceProvider _namedServiceProvider;
- public IServiceProvider _services { get; }
+ private readonly ISearcher _searcher;
+
+ public IServiceProvider Services { get; }
private readonly SqlSugarScope _db;
- public AuthEventSubscriber(ISimpleCacheService simpleCacheService, IServiceProvider services, INamedServiceProvider namedServiceProvider)
+ public AuthEventSubscriber(ISimpleCacheService simpleCacheService, IServiceProvider services, ISearcher searcher)
{
- _db = DbContext.Db;
+ _db = DbContext.DB;
_simpleCacheService = simpleCacheService;
- _namedServiceProvider = namedServiceProvider;
- _services = services;
+ _searcher = searcher;
+ Services = services;
}
///
@@ -26,27 +37,27 @@ public class AuthEventSubscriber : IEventSubscriber, ISingleton
///
///
///
- [EventSubscribe(EventSubscriberConst.LoginB)]
+ [EventSubscribe(EventSubscriberConst.LOGIN_B)]
public async Task Login(EventHandlerExecutingContext context)
{
var loginEvent = (LoginEvent)context.Source.Payload;//获取参数
- var LoginAddress = GetLoginAddress(loginEvent.Ip);
+ var loginAddress = GetLoginAddress(loginEvent.Ip);
var sysUser = loginEvent.SysUser;
#region 登录/密码策略
- var key = SystemConst.Cache_LoginErrorCount + sysUser.Account;//获取登录错误次数Key值
+ var key = SystemConst.CACHE_LOGIN_ERROR_COUNT + sysUser.Account;//获取登录错误次数Key值
_simpleCacheService.Remove(key);//移除登录错误次数
// 创建新的作用域
- using var scope = _services.CreateScope();
+ using var scope = Services.CreateScope();
// 解析服务
var configService = scope.ServiceProvider.GetRequiredService();
var messageService = scope.ServiceProvider.GetRequiredService();
var pwdRemindUpdateTime = sysUser.PwdRemindUpdateTime;//获取上次提醒修改密码时间
- var loginPolicy = await configService.GetListByCategory(CateGoryConst.Config_PWD_POLICY);//获取密码策略
+ var loginPolicy = await configService.GetConfigsByCategory(CateGoryConst.CONFIG_PWD_POLICY);//获取密码策略
//获取用户token列表
- var tokenInfos = _simpleCacheService.HashGetOne>(CacheConst.Cache_UserToken, sysUser.Id.ToString());
+ var tokenInfos = _simpleCacheService.HashGetOne>(CacheConst.CACHE_USER_TOKEN, sysUser.Id.ToString());
var userToken = tokenInfos.Where(it => it.Token == loginEvent.Token).FirstOrDefault();
if (userToken != null)
{
@@ -54,34 +65,35 @@ public class AuthEventSubscriber : IEventSubscriber, ISingleton
//如果上次修改密码时间为空
if (pwdRemindUpdateTime == null)
{
- var pwdUpdateDefault = loginPolicy.First(x => x.ConfigKey == DevConfigConst.PWD_UPDATE_DEFAULT).ConfigValue.ToBoolean();//获取初始化提醒
+ var pwdUpdateDefault = loginPolicy.First(x => x.ConfigKey == SysConfigConst.PWD_UPDATE_DEFAULT).ConfigValue.ToBoolean();//获取初始化提醒
//如果密码初始化提醒为true
if (pwdUpdateDefault)
{
- await messageService.Send(new MessageSendInput()
+ await messageService.Add(new MessageSendInput
{
Subject = subject,
- Content = $"请及时修改初始密码",
- Category = CateGoryConst.Message_INFORM,
- ReceiverIdList = new List() { sysUser.Id }
+ Content = "请及时修改初始密码",
+ Category = CateGoryConst.MESSAGE_INFORM,
+ ReceiverIdList = new List { sysUser.Id }
});
}
sysUser.PwdRemindUpdateTime = DateTime.Now;//设置提醒时密码时间为当前时间
}
else
{
- var pwdRemind = loginPolicy.First(x => x.ConfigKey == DevConfigConst.PWD_REMIND).ConfigValue.ToBoolean();//获取密码提醒天数
+ var pwdRemind = loginPolicy.First(x => x.ConfigKey == SysConfigConst.PWD_REMIND).ConfigValue.ToBoolean();//获取密码提醒天数
if (pwdRemind)
{
- var pwdRemindDay = loginPolicy.First(x => x.ConfigKey == DevConfigConst.PWD_REMIND_DAY).ConfigValue.ToInt();//获取密码提醒时间
+ var pwdRemindDay = loginPolicy.First(x => x.ConfigKey == SysConfigConst.PWD_REMIND_DAY).ConfigValue.ToInt();//获取密码提醒时间
if (DateTime.Now - pwdRemindUpdateTime > TimeSpan.FromDays(pwdRemindDay))
{
- await messageService.Send(new MessageSendInput()
+ await messageService.Add(new MessageSendInput
{
Subject = subject,
Content = $"已超过{pwdRemindDay}天未修改密码,请及时修改密码",
- Category = CateGoryConst.Message_INFORM,
- ReceiverIdList = new List() { sysUser.Id }
+ Category = CateGoryConst.MESSAGE_INFORM,
+ SendWay = SysDictConst.SEND_WAY_NOW,
+ ReceiverInfo = new List { new ReceiverInfo { Id = sysUser.Id, Name = sysUser.Name } }
});
}
sysUser.PwdRemindUpdateTime = DateTime.Now;//设置提醒时密码时间为当前时间,避免重复提醒
@@ -89,7 +101,7 @@ public class AuthEventSubscriber : IEventSubscriber, ISingleton
}
}
- #endregion
+ #endregion 登录/密码策略
#region 重新赋值属性,设置本次登录信息为最新的信息
@@ -97,7 +109,7 @@ public class AuthEventSubscriber : IEventSubscriber, ISingleton
sysUser.LastLoginDevice = sysUser.LatestLoginDevice;
sysUser.LastLoginIp = sysUser.LatestLoginIp;
sysUser.LastLoginTime = sysUser.LatestLoginTime;
- sysUser.LatestLoginAddress = LoginAddress;
+ sysUser.LatestLoginAddress = loginAddress;
sysUser.LatestLoginDevice = loginEvent.Device.ToString();
sysUser.LatestLoginIp = loginEvent.Ip;
sysUser.LatestLoginTime = loginEvent.DateTime;
@@ -117,8 +129,7 @@ public class AuthEventSubscriber : IEventSubscriber, ISingleton
it.LatestLoginTime,
LastUpdatePwdTime = it.PwdRemindUpdateTime
}).ExecuteCommandAsync() > 0)
- _simpleCacheService.HashAdd(SystemConst.Cache_SysUser, sysUser.Id.ToString(), sysUser);//更新Redis信息
-
+ _simpleCacheService.HashAdd(SystemConst.CACHE_SYS_USER, sysUser.Id.ToString(), sysUser);//更新Redis信息
await Task.CompletedTask;
}
@@ -128,7 +139,7 @@ public class AuthEventSubscriber : IEventSubscriber, ISingleton
///
///
///
- [EventSubscribe(EventSubscriberConst.LoginOutB)]
+ [EventSubscribe(EventSubscriberConst.LOGIN_OUT_B)]
public async Task LoginOut(EventHandlerExecutingContext context)
{
_ = (LoginEvent)context.Source.Payload;//获取参数
@@ -143,28 +154,12 @@ public class AuthEventSubscriber : IEventSubscriber, ISingleton
{
try
{
- var ipInfo = IpTool.Search(ip);
- var LoginAddressList = new List() { ipInfo.Country, ipInfo.Province, ipInfo.City, ipInfo.NetworkOperator };//定义登录地址列表
- var LoginAddress = string.Join("|", LoginAddressList.Where(it => it != "0").ToList());//过滤掉0的信息并用|连接成字符串
- return LoginAddress;
+ var ipInfo = _searcher.Search(ip).Replace("0|", "");//解析ip并格式化
+ return ipInfo;
}
catch
{
return "未知";
}
}
-
- ///
- /// 获取通知服务
- ///
- ///
- private INoticeService GetNoticeService()
- {
- // 获取插件选项
- var pluginsOptions = App.GetOptions();
- //根据通知类型获取对应的服务
- var noticeComponent = pluginsOptions.NoticeComponent.ToString().ToLower();
- var noticeService = _namedServiceProvider.GetService(noticeComponent);//获取服务
- return noticeService;
- }
-}
\ No newline at end of file
+}
diff --git a/api/SimpleAdmin/SimpleAdmin.System/EventSubscriber/Const/EventSubscriberConst.cs b/api/SimpleAdmin/SimpleAdmin.System/EventSubscriber/Const/EventSubscriberConst.cs
index e8a5bfee332dd7ef01edb048134e55bc8efffbe2..514b70e33cfe54bf533c04fa114a65a09bd9b7f8 100644
--- a/api/SimpleAdmin/SimpleAdmin.System/EventSubscriber/Const/EventSubscriberConst.cs
+++ b/api/SimpleAdmin/SimpleAdmin.System/EventSubscriber/Const/EventSubscriberConst.cs
@@ -1,4 +1,14 @@
-namespace SimpleAdmin.System;
+// Copyright (c) 2022-Now 少林寺驻北固山办事处大神父王喇嘛
+//
+// SimpleAdmin 基于 Apache License Version 2.0 协议发布,可用于商业项目,但必须遵守以下补充条款:
+// 1.请不要删除和修改根目录下的LICENSE文件。
+// 2.请不要删除和修改SimpleAdmin源码头部的版权声明。
+// 3.分发源码时候,请注明软件出处 https://gitee.com/dotnetmoyu/SimpleAdmin
+// 4.基于本软件的作品,只能使用 SimpleAdmin 作为后台服务,除外情况不可商用且不允许二次分发或开源。
+// 5.请不得将本软件应用于危害国家安全、荣誉和利益的行为,不能以任何形式用于非法为目的的行为。
+// 6.任何基于本软件而产生的一切法律纠纷和责任,均于我司无关。
+
+namespace SimpleAdmin.System;
///
/// 事件总线常量
@@ -10,12 +20,12 @@ public class EventSubscriberConst
///
/// B端登录
///
- public const string LoginB = "B端登录";
+ public const string LOGIN_B = "B端登录";
///
/// B端登录
///
- public const string LoginOutB = "B端登出";
+ public const string LOGIN_OUT_B = "B端登出";
#endregion AuthEventSubscriber
@@ -24,7 +34,17 @@ public class EventSubscriberConst
///
/// 清除用户缓存
///
- public const string ClearUserCache = "清除用户缓存";
+ public const string CLEAR_USER_CACHE = "清除用户缓存";
+
+ ///
+ /// 清除组织下用户Token
+ ///
+ public const string CLEAR_ORG_TOKEN = "清除组织下用户Token";
+
+ ///
+ /// 清除模块下用户Token
+ ///
+ public const string CLEAR_MODULE_TOKEN = "清除模块下用户Token";
#endregion UserEventSubscriber
@@ -33,12 +53,12 @@ public class EventSubscriberConst
///
/// 通知用户下线
///
- public const string UserLoginOut = "通知用户下线";
+ public const string USER_LOGIN_OUT = "通知用户下线";
///
/// 新消息
///
- public const string NewMessage = "新消息";
+ public const string NEW_MESSAGE = "新消息";
#endregion NoticeEventSubscriber
-}
\ No newline at end of file
+}
diff --git a/api/SimpleAdmin/SimpleAdmin.System/EventSubscriber/Dto/LoginEvent.cs b/api/SimpleAdmin/SimpleAdmin.System/EventSubscriber/Dto/LoginEvent.cs
index b8eacfc054a5816febd5d01380e642e6d28d778a..7781fa2f77982cf425876d3bd9e66de5b8c833ea 100644
--- a/api/SimpleAdmin/SimpleAdmin.System/EventSubscriber/Dto/LoginEvent.cs
+++ b/api/SimpleAdmin/SimpleAdmin.System/EventSubscriber/Dto/LoginEvent.cs
@@ -1,4 +1,14 @@
-using UAParser;
+// Copyright (c) 2022-Now 少林寺驻北固山办事处大神父王喇嘛
+//
+// SimpleAdmin 基于 Apache License Version 2.0 协议发布,可用于商业项目,但必须遵守以下补充条款:
+// 1.请不要删除和修改根目录下的LICENSE文件。
+// 2.请不要删除和修改SimpleAdmin源码头部的版权声明。
+// 3.分发源码时候,请注明软件出处 https://gitee.com/dotnetmoyu/SimpleAdmin
+// 4.基于本软件的作品,只能使用 SimpleAdmin 作为后台服务,除外情况不可商用且不允许二次分发或开源。
+// 5.请不得将本软件应用于危害国家安全、荣誉和利益的行为,不能以任何形式用于非法为目的的行为。
+// 6.任何基于本软件而产生的一切法律纠纷和责任,均于我司无关。
+
+using UAParser;
namespace SimpleAdmin.System;
@@ -17,7 +27,6 @@ public class LoginEvent
///
public SysUser SysUser { get; set; }
-
///
/// Ip地址
///
@@ -26,7 +35,7 @@ public class LoginEvent
///
/// 登录设备
///
- public AuthDeviceTypeEumu Device { get; set; }
+ public AuthDeviceTypeEnum Device { get; set; }
///
/// Tokens
@@ -42,4 +51,4 @@ public class LoginEvent
/// 时间
///
public DateTime DateTime = DateTime.Now;
-}
\ No newline at end of file
+}
diff --git a/api/SimpleAdmin/SimpleAdmin.System/EventSubscriber/Dto/NoticeEvent.cs b/api/SimpleAdmin/SimpleAdmin.System/EventSubscriber/Dto/NoticeEvent.cs
index 442bcc682da996d78fc5c7ea2f14c1e67732fed5..dbf2f56fcf137bbda34fabfc7e9107bfa129a4d6 100644
--- a/api/SimpleAdmin/SimpleAdmin.System/EventSubscriber/Dto/NoticeEvent.cs
+++ b/api/SimpleAdmin/SimpleAdmin.System/EventSubscriber/Dto/NoticeEvent.cs
@@ -1,4 +1,14 @@
-namespace SimpleAdmin.System;
+// Copyright (c) 2022-Now 少林寺驻北固山办事处大神父王喇嘛
+//
+// SimpleAdmin 基于 Apache License Version 2.0 协议发布,可用于商业项目,但必须遵守以下补充条款:
+// 1.请不要删除和修改根目录下的LICENSE文件。
+// 2.请不要删除和修改SimpleAdmin源码头部的版权声明。
+// 3.分发源码时候,请注明软件出处 https://gitee.com/dotnetmoyu/SimpleAdmin
+// 4.基于本软件的作品,只能使用 SimpleAdmin 作为后台服务,除外情况不可商用且不允许二次分发或开源。
+// 5.请不得将本软件应用于危害国家安全、荣誉和利益的行为,不能以任何形式用于非法为目的的行为。
+// 6.任何基于本软件而产生的一切法律纠纷和责任,均于我司无关。
+
+namespace SimpleAdmin.System;
///
/// 用户登出事件
@@ -28,12 +38,17 @@ public class UserLoginOutEvent
public class NewMessageEvent
{
///
- /// 用户Id
+ /// 消息Id
///
- public List UserIds { get; set; }
+ public long Id { get; set; }
///
- /// 内容
+ /// 发送方式
///
- public string Message { get; set; } = "收到一条新的消息!";
-}
\ No newline at end of file
+ public string SendWay { get; set; }
+
+ ///
+ /// 发送时间
+ ///
+ public DateTime SendTime { get; set; }
+}
diff --git a/api/SimpleAdmin/SimpleAdmin.System/EventSubscriber/NoticeEventSubsciber.cs b/api/SimpleAdmin/SimpleAdmin.System/EventSubscriber/NoticeEventSubscriber.cs
similarity index 39%
rename from api/SimpleAdmin/SimpleAdmin.System/EventSubscriber/NoticeEventSubsciber.cs
rename to api/SimpleAdmin/SimpleAdmin.System/EventSubscriber/NoticeEventSubscriber.cs
index c92caffd82f97869f62d026461d474acbba9fc82..9f3b839325db604078deb8bb5fa70d7e79b26a53 100644
--- a/api/SimpleAdmin/SimpleAdmin.System/EventSubscriber/NoticeEventSubsciber.cs
+++ b/api/SimpleAdmin/SimpleAdmin.System/EventSubscriber/NoticeEventSubscriber.cs
@@ -1,24 +1,35 @@
-using SimpleAdmin.Plugin.Core;
+// Copyright (c) 2022-Now 少林寺驻北固山办事处大神父王喇嘛
+//
+// SimpleAdmin 基于 Apache License Version 2.0 协议发布,可用于商业项目,但必须遵守以下补充条款:
+// 1.请不要删除和修改根目录下的LICENSE文件。
+// 2.请不要删除和修改SimpleAdmin源码头部的版权声明。
+// 3.分发源码时候,请注明软件出处 https://gitee.com/dotnetmoyu/SimpleAdmin
+// 4.基于本软件的作品,只能使用 SimpleAdmin 作为后台服务,除外情况不可商用且不允许二次分发或开源。
+// 5.请不得将本软件应用于危害国家安全、荣誉和利益的行为,不能以任何形式用于非法为目的的行为。
+// 6.任何基于本软件而产生的一切法律纠纷和责任,均于我司无关。
+
+using Microsoft.Extensions.Options;
namespace SimpleAdmin.System;
///
/// 通知事件总线
///
-public class NoticeEventSubsciber : IEventSubscriber, ISingleton
+public class NoticeEventSubscriber : IEventSubscriber, ISingleton
{
private readonly ISimpleCacheService _simpleCacheService;
- private readonly INamedServiceProvider _namedServiceProvider;
- public IServiceScopeFactory _scopeFactory { get; }
+ private readonly IServiceScopeFactory _scopeFactory;
+ private readonly bool _useMessageCenter;
private readonly SqlSugarScope _db;
- public NoticeEventSubsciber(ISimpleCacheService simpleCacheService, IServiceScopeFactory scopeFactory, INamedServiceProvider namedServiceProvider)
+ public NoticeEventSubscriber(ISimpleCacheService simpleCacheService, IServiceScopeFactory scopeFactory,
+ IOptionsMonitor options)
{
- _db = DbContext.Db;
+ _db = DbContext.DB;
_simpleCacheService = simpleCacheService;
_scopeFactory = scopeFactory;
- _namedServiceProvider = namedServiceProvider;
+ _useMessageCenter = options.CurrentValue.UseMessageCenter;
}
///
@@ -26,7 +37,7 @@ public class NoticeEventSubsciber : IEventSubscriber, ISingleton
///
///
///
- [EventSubscribe(EventSubscriberConst.UserLoginOut)]
+ [EventSubscribe(EventSubscriberConst.USER_LOGIN_OUT)]
public async Task UserLoginOut(EventHandlerExecutingContext context)
{
var loginEvent = (UserLoginOutEvent)context.Source.Payload;//获取参数
@@ -37,7 +48,6 @@ public class NoticeEventSubsciber : IEventSubscriber, ISingleton
{
clientIds.AddRange(it.ClientIds);
});
- await GetNoticeService().UserLoginOut(loginEvent.UserId, clientIds, loginEvent.Message);//发送消息
}
///
@@ -45,28 +55,45 @@ public class NoticeEventSubsciber : IEventSubscriber, ISingleton
///
///
///
- [EventSubscribe(EventSubscriberConst.NewMessage)]
+ [EventSubscribe(EventSubscriberConst.NEW_MESSAGE)]
public async Task NewMessage(EventHandlerExecutingContext context)
{
var newMessageEvent = (NewMessageEvent)context.Source.Payload;//获取参数
-
- var clientIds = new List();
- //获取用户token列表
- var tokenInfos = _simpleCacheService.HashGet>(CacheConst.Cache_UserToken, newMessageEvent.UserIds.ToArray());
- tokenInfos.ForEach(it =>
+ var messageId = newMessageEvent.Id;
+ //如果启用了通知中心
+ if (_useMessageCenter)
{
- if (it != null)
+ if (newMessageEvent.SendWay == SysDictConst.SEND_WAY_NOW)
+ {
+ //立即发送
+ await SendMessage(messageId);
+ }
+ else
{
- it = it.Where(it => it.TokenTimeout > DateTime.Now).ToList();//去掉登录超时的
- //遍历token
- it.ForEach(it =>
+ //延迟发送
+ var sendTime = newMessageEvent.SendTime;
+ //计算延迟时间
+ var delay = (int)(sendTime - DateTime.Now).TotalSeconds;
+ if (delay > 0)
{
- clientIds.AddRange(it.ClientIds);//添加到客户端ID列表
- });
+ await SendMessage(messageId, delay);
+ }
+ else
+ {
+ await SendMessage(messageId);
+ }
}
- });
+ }
+ }
- await GetNoticeService().NewMesage(newMessageEvent.UserIds, clientIds, newMessageEvent.Message);//发送消息
+ ///
+ /// 发送消息
+ ///
+ /// 消息id
+ /// 延迟
+ private async Task SendMessage(long messageId, int delay = 0)
+ {
+ _simpleCacheService.AddDelayQueue(CacheConst.CACHE_NOTIFICATION, messageId, delay);
}
///
@@ -80,18 +107,4 @@ public class NoticeEventSubsciber : IEventSubscriber, ISingleton
using var scope = _scopeFactory.CreateScope();
return scope.ServiceProvider.GetRequiredService();
}
-
- ///
- /// 获取通知服务
- ///
- ///
- private INoticeService GetNoticeService()
- {
- // 获取插件选项
- var pluginsOptions = App.GetOptions();
- //根据通知类型获取对应的服务
- var noticeComponent = pluginsOptions.NoticeComponent.ToString().ToLower();
- var noticeService = _namedServiceProvider.GetService(noticeComponent);//获取服务
- return noticeService;
- }
-}
\ No newline at end of file
+}
diff --git a/api/SimpleAdmin/SimpleAdmin.System/EventSubscriber/UserEventSubscriber.cs b/api/SimpleAdmin/SimpleAdmin.System/EventSubscriber/UserEventSubscriber.cs
index 9acbea16c0e63175c72a2774af5becbd90f3eecc..4a0d69338326fc03fa1bdfac3c8089fc3c6798a8 100644
--- a/api/SimpleAdmin/SimpleAdmin.System/EventSubscriber/UserEventSubscriber.cs
+++ b/api/SimpleAdmin/SimpleAdmin.System/EventSubscriber/UserEventSubscriber.cs
@@ -1,4 +1,17 @@
-namespace SimpleAdmin.System;
+// Copyright (c) 2022-Now 少林寺驻北固山办事处大神父王喇嘛
+//
+// SimpleAdmin 基于 Apache License Version 2.0 协议发布,可用于商业项目,但必须遵守以下补充条款:
+// 1.请不要删除和修改根目录下的LICENSE文件。
+// 2.请不要删除和修改SimpleAdmin源码头部的版权声明。
+// 3.分发源码时候,请注明软件出处 https://gitee.com/dotnetmoyu/SimpleAdmin
+// 4.基于本软件的作品,只能使用 SimpleAdmin 作为后台服务,除外情况不可商用且不允许二次分发或开源。
+// 5.请不得将本软件应用于危害国家安全、荣誉和利益的行为,不能以任何形式用于非法为目的的行为。
+// 6.任何基于本软件而产生的一切法律纠纷和责任,均于我司无关。
+
+using NetTaste;
+using SimpleRedis;
+
+namespace SimpleAdmin.System;
///
/// 用户模块事件总线
@@ -6,10 +19,13 @@
public class UserEventSubscriber : IEventSubscriber, ISingleton
{
private readonly IServiceProvider _services;
+ private readonly ISimpleCacheService _simpleCacheService;
+
- public UserEventSubscriber(IServiceProvider services)
+ public UserEventSubscriber(IServiceProvider services, ISimpleCacheService simpleCacheService)
{
- this._services = services;
+ _services = services;
+ _simpleCacheService = simpleCacheService;
}
///
@@ -17,7 +33,7 @@ public class UserEventSubscriber : IEventSubscriber, ISingleton
///
///
///
- [EventSubscribe(EventSubscriberConst.ClearUserCache)]
+ [EventSubscribe(EventSubscriberConst.CLEAR_USER_CACHE)]
public async Task DeleteUserCacheByRoleIds(EventHandlerExecutingContext context)
{
var roleIds = (List)context.Source.Payload;//获取角色ID
@@ -27,14 +43,66 @@ public class UserEventSubscriber : IEventSubscriber, ISingleton
// 解析角色服务
var relationService = scope.ServiceProvider.GetRequiredService();
//获取用户和角色关系
- var relations = await relationService.GetRelationListByTargetIdListAndCategory(roleIds.Select(it => it.ToString()).ToList(), CateGoryConst.Relation_SYS_USER_HAS_ROLE);
+ var relations = await relationService.GetRelationListByTargetIdListAndCategory(roleIds.Select(it => it.ToString()).ToList(),
+ CateGoryConst.RELATION_SYS_USER_HAS_ROLE);
if (relations.Count > 0)
{
var userIds = relations.Select(it => it.ObjectId).ToList();//用户ID列表
- // 解析用户服务
- var userService = scope.ServiceProvider.GetRequiredService();
- //从redis中删除
+ if (userIds.Count > 0)
+ {
+ // 解析用户服务
+ var userService = scope.ServiceProvider.GetRequiredService();
+ //从redis中删除
+ userService.DeleteUserFromRedis(userIds);
+ }
+ }
+ }
+
+ ///
+ /// 根据机构ID列表清除用户token
+ ///
+ ///
+ [EventSubscribe(EventSubscriberConst.CLEAR_ORG_TOKEN)]
+ public async Task DeleteUserTokenByOrgIds(EventHandlerExecutingContext context)
+ {
+ var orgIds = (List)context.Source.Payload;//获取机构ID
+ // 创建新的作用域
+ using var scope = _services.CreateScope();
+ // 获取用户ID列表
+ var userIds = await DbContext.DB.QueryableWithAttr().Where(it => orgIds.Contains(it.OrgId)).Select(it => it.Id).ToListAsync();
+ //从redis中删除所属机构的用户token
+ _simpleCacheService.HashDel>(CacheConst.CACHE_USER_TOKEN, userIds.Select(it => it.ToString()).ToArray());
+ }
+
+ ///
+ /// 根据模块ID列表清除用户token
+ ///
+ ///
+ [EventSubscribe(EventSubscriberConst.CLEAR_MODULE_TOKEN)]
+ public async Task DeleteUserTokenByModuleId(EventHandlerExecutingContext context)
+ {
+ var moduleId = (long)context.Source.Payload;//获取机构ID
+ // 创建新的作用域
+ using var scope = _services.CreateScope();
+ // 解析关系服务
+ var relationService = scope.ServiceProvider.GetRequiredService();
+ var roleModuleRelations =
+ await relationService.GetRelationListByTargetIdAndCategory(moduleId.ToString(), CateGoryConst.RELATION_SYS_ROLE_HAS_MODULE);//角色模块关系
+ var userModuleRelations =
+ await relationService.GetRelationListByTargetIdAndCategory(moduleId.ToString(), CateGoryConst.RELATION_SYS_USER_HAS_MODULE);//用户模块关系
+ var userIds = userModuleRelations.Select(it => it.ObjectId).ToList();//用户ID列表
+ var roleIds = roleModuleRelations.Select(it => it.ObjectId).ToList();//角色ID列表
+ var userRoleRelations = await relationService.GetRelationListByTargetIdListAndCategory(roleIds.Select(it => it.ToString()).ToList(),
+ CateGoryConst.RELATION_SYS_USER_HAS_ROLE);//用户角色关系
+ userIds.AddRange(userRoleRelations.Select(it => it.ObjectId).ToList());//添加用户ID列表
+ // 解析用户服务
+ var userService = scope.ServiceProvider.GetRequiredService();
+ if (userIds.Count > 0)
+ {
+ //从redis中删除用户信息
userService.DeleteUserFromRedis(userIds);
+ //从redis中删除用户token
+ _simpleCacheService.HashDel>(CacheConst.CACHE_USER_TOKEN, userIds.Select(it => it.ToString()).ToArray());
}
}
-}
\ No newline at end of file
+}
diff --git a/api/SimpleAdmin/SimpleAdmin.System/ExtJson/RelationMsgUser.cs b/api/SimpleAdmin/SimpleAdmin.System/ExtJson/RelationMsgUser.cs
index f1f2928475ac6acb0726fa6245dad499975e5ccc..c09f45ffac45bfcb7dd336542c8d5d6659d47317 100644
--- a/api/SimpleAdmin/SimpleAdmin.System/ExtJson/RelationMsgUser.cs
+++ b/api/SimpleAdmin/SimpleAdmin.System/ExtJson/RelationMsgUser.cs
@@ -1,4 +1,14 @@
-namespace SimpleAdmin.System;
+// Copyright (c) 2022-Now 少林寺驻北固山办事处大神父王喇嘛
+//
+// SimpleAdmin 基于 Apache License Version 2.0 协议发布,可用于商业项目,但必须遵守以下补充条款:
+// 1.请不要删除和修改根目录下的LICENSE文件。
+// 2.请不要删除和修改SimpleAdmin源码头部的版权声明。
+// 3.分发源码时候,请注明软件出处 https://gitee.com/dotnetmoyu/SimpleAdmin
+// 4.基于本软件的作品,只能使用 SimpleAdmin 作为后台服务,除外情况不可商用且不允许二次分发或开源。
+// 5.请不得将本软件应用于危害国家安全、荣誉和利益的行为,不能以任何形式用于非法为目的的行为。
+// 6.任何基于本软件而产生的一切法律纠纷和责任,均于我司无关。
+
+namespace SimpleAdmin.System;
///
/// 站内信与接收用户拓展
@@ -10,4 +20,4 @@ public class RelationMsgUser
/// 是否已读
///
public bool Read { get; set; } = false;
-}
\ No newline at end of file
+}
diff --git a/api/SimpleAdmin/SimpleAdmin.System/ExtJson/RelationRolePermission.cs b/api/SimpleAdmin/SimpleAdmin.System/ExtJson/RelationRolePermission.cs
index 3048d9ff1357a559fc837164f4ea0906752fc36e..993d93ae8a01da140cc65dc297c4d72eac5c3957 100644
--- a/api/SimpleAdmin/SimpleAdmin.System/ExtJson/RelationRolePermission.cs
+++ b/api/SimpleAdmin/SimpleAdmin.System/ExtJson/RelationRolePermission.cs
@@ -1,4 +1,14 @@
-namespace SimpleAdmin.System;
+// Copyright (c) 2022-Now 少林寺驻北固山办事处大神父王喇嘛
+//
+// SimpleAdmin 基于 Apache License Version 2.0 协议发布,可用于商业项目,但必须遵守以下补充条款:
+// 1.请不要删除和修改根目录下的LICENSE文件。
+// 2.请不要删除和修改SimpleAdmin源码头部的版权声明。
+// 3.分发源码时候,请注明软件出处 https://gitee.com/dotnetmoyu/SimpleAdmin
+// 4.基于本软件的作品,只能使用 SimpleAdmin 作为后台服务,除外情况不可商用且不允许二次分发或开源。
+// 5.请不得将本软件应用于危害国家安全、荣誉和利益的行为,不能以任何形式用于非法为目的的行为。
+// 6.任何基于本软件而产生的一切法律纠纷和责任,均于我司无关。
+
+namespace SimpleAdmin.System;
///
/// SYS_ROLE_HAS_PERMISSION
@@ -20,4 +30,4 @@ public class RelationRolePermission
/// 接口Url
///
public string ApiUrl { get; set; }
-}
\ No newline at end of file
+}
diff --git a/api/SimpleAdmin/SimpleAdmin.System/ExtJson/RelationRoleResource.cs b/api/SimpleAdmin/SimpleAdmin.System/ExtJson/RelationRoleResource.cs
new file mode 100644
index 0000000000000000000000000000000000000000..bd1899c405ef6c82be0509fdf7a7574af60456a1
--- /dev/null
+++ b/api/SimpleAdmin/SimpleAdmin.System/ExtJson/RelationRoleResource.cs
@@ -0,0 +1,28 @@
+// Copyright (c) 2022-Now 少林寺驻北固山办事处大神父王喇嘛
+//
+// SimpleAdmin 基于 Apache License Version 2.0 协议发布,可用于商业项目,但必须遵守以下补充条款:
+// 1.请不要删除和修改根目录下的LICENSE文件。
+// 2.请不要删除和修改SimpleAdmin源码头部的版权声明。
+// 3.分发源码时候,请注明软件出处 https://gitee.com/dotnetmoyu/SimpleAdmin
+// 4.基于本软件的作品,只能使用 SimpleAdmin 作为后台服务,除外情况不可商用且不允许二次分发或开源。
+// 5.请不得将本软件应用于危害国家安全、荣誉和利益的行为,不能以任何形式用于非法为目的的行为。
+// 6.任何基于本软件而产生的一切法律纠纷和责任,均于我司无关。
+
+namespace SimpleAdmin.System;
+
+///
+/// SYS_ROLE_HAS_RESOURCE
+/// 角色有哪些资源扩展
+///
+public class RelationRoleResource
+{
+ ///
+ /// 菜单ID
+ ///
+ public long MenuId { get; set; }
+
+ ///
+ /// 按钮信息
+ ///
+ public List ButtonInfo { get; set; } = new List();
+}
diff --git a/api/SimpleAdmin/SimpleAdmin.System/ExtJson/RelationRoleResuorce.cs b/api/SimpleAdmin/SimpleAdmin.System/ExtJson/RelationRoleResuorce.cs
deleted file mode 100644
index 3056e46ea555e554541d1d1d9b9161f003ff72ff..0000000000000000000000000000000000000000
--- a/api/SimpleAdmin/SimpleAdmin.System/ExtJson/RelationRoleResuorce.cs
+++ /dev/null
@@ -1,18 +0,0 @@
-namespace SimpleAdmin.System;
-
-///
-/// SYS_ROLE_HAS_RESOURCE
-/// 角色有哪些资源扩展
-///
-public class RelationRoleResuorce
-{
- ///
- /// 菜单ID
- ///
- public long MenuId { get; set; }
-
- ///
- /// 按钮信息
- ///
- public List ButtonInfo { get; set; } = new List();
-}
\ No newline at end of file
diff --git a/api/SimpleAdmin/SimpleAdmin.System/ExtJson/RelationUserSchedule.cs b/api/SimpleAdmin/SimpleAdmin.System/ExtJson/RelationUserSchedule.cs
index ba0e6c68175a14e6e44e79d685046106e2031c79..d95de94b25f3508d5034aeb1550ff1ca4c9ce090 100644
--- a/api/SimpleAdmin/SimpleAdmin.System/ExtJson/RelationUserSchedule.cs
+++ b/api/SimpleAdmin/SimpleAdmin.System/ExtJson/RelationUserSchedule.cs
@@ -1,4 +1,14 @@
-namespace SimpleAdmin.System;
+// Copyright (c) 2022-Now 少林寺驻北固山办事处大神父王喇嘛
+//
+// SimpleAdmin 基于 Apache License Version 2.0 协议发布,可用于商业项目,但必须遵守以下补充条款:
+// 1.请不要删除和修改根目录下的LICENSE文件。
+// 2.请不要删除和修改SimpleAdmin源码头部的版权声明。
+// 3.分发源码时候,请注明软件出处 https://gitee.com/dotnetmoyu/SimpleAdmin
+// 4.基于本软件的作品,只能使用 SimpleAdmin 作为后台服务,除外情况不可商用且不允许二次分发或开源。
+// 5.请不得将本软件应用于危害国家安全、荣誉和利益的行为,不能以任何形式用于非法为目的的行为。
+// 6.任何基于本软件而产生的一切法律纠纷和责任,均于我司无关。
+
+namespace SimpleAdmin.System;
///
/// SYS_USER_SCHEDULE_DATA
@@ -30,4 +40,4 @@ public class RelationUserSchedule
/// 用户姓名
///
public string ScheduleUserName { get; set; }
-}
\ No newline at end of file
+}
diff --git a/api/SimpleAdmin/SimpleAdmin.System/ExtJson/RelationUserWorkBench.cs b/api/SimpleAdmin/SimpleAdmin.System/ExtJson/RelationUserWorkBench.cs
index 6fce18a3ec892b431eb0d2a0c344777658b6ea0d..ef615c17e2e5ad4e5fc35202023a3fece15ea0dd 100644
--- a/api/SimpleAdmin/SimpleAdmin.System/ExtJson/RelationUserWorkBench.cs
+++ b/api/SimpleAdmin/SimpleAdmin.System/ExtJson/RelationUserWorkBench.cs
@@ -1,4 +1,14 @@
-namespace SimpleAdmin.System;
+// Copyright (c) 2022-Now 少林寺驻北固山办事处大神父王喇嘛
+//
+// SimpleAdmin 基于 Apache License Version 2.0 协议发布,可用于商业项目,但必须遵守以下补充条款:
+// 1.请不要删除和修改根目录下的LICENSE文件。
+// 2.请不要删除和修改SimpleAdmin源码头部的版权声明。
+// 3.分发源码时候,请注明软件出处 https://gitee.com/dotnetmoyu/SimpleAdmin
+// 4.基于本软件的作品,只能使用 SimpleAdmin 作为后台服务,除外情况不可商用且不允许二次分发或开源。
+// 5.请不得将本软件应用于危害国家安全、荣誉和利益的行为,不能以任何形式用于非法为目的的行为。
+// 6.任何基于本软件而产生的一切法律纠纷和责任,均于我司无关。
+
+namespace SimpleAdmin.System;
///
/// SYS_USER_WORKBENCH_DATA
@@ -36,4 +46,4 @@ public class WorkBenchShortcut
/// 路由地址
///
public string Path { get; set; }
-}
\ No newline at end of file
+}
diff --git a/api/SimpleAdmin/SimpleAdmin.System/GlobalUsings.cs b/api/SimpleAdmin/SimpleAdmin.System/GlobalUsings.cs
index 92bec64afa6beacfd56544bb197a9d0f274422aa..7d323f1943525d81241c14037a6d6f6faa05126c 100644
--- a/api/SimpleAdmin/SimpleAdmin.System/GlobalUsings.cs
+++ b/api/SimpleAdmin/SimpleAdmin.System/GlobalUsings.cs
@@ -1,27 +1,41 @@
-global using Furion;
-global using Furion.DataEncryption;
-global using Furion.DependencyInjection;
-global using Furion.EventBus;
-global using Furion.FriendlyException;
+// Copyright (c) 2022-Now 少林寺驻北固山办事处大神父王喇嘛
+//
+// SimpleAdmin 基于 Apache License Version 2.0 协议发布,可用于商业项目,但必须遵守以下补充条款:
+// 1.请不要删除和修改根目录下的LICENSE文件。
+// 2.请不要删除和修改SimpleAdmin源码头部的版权声明。
+// 3.分发源码时候,请注明软件出处 https://gitee.com/dotnetmoyu/SimpleAdmin
+// 4.基于本软件的作品,只能使用 SimpleAdmin 作为后台服务,除外情况不可商用且不允许二次分发或开源。
+// 5.请不得将本软件应用于危害国家安全、荣誉和利益的行为,不能以任何形式用于非法为目的的行为。
+// 6.任何基于本软件而产生的一切法律纠纷和责任,均于我司无关。
+
+global using MoYu;
+global using MoYu.DataEncryption;
+global using MoYu.DependencyInjection;
+global using MoYu.EventBus;
+global using MoYu.FriendlyException;
global using Magicodes.ExporterAndImporter.Core;
+global using Magicodes.ExporterAndImporter.Core.Models;
global using Magicodes.ExporterAndImporter.Excel;
global using Mapster;
global using Masuit.Tools;
global using Microsoft.AspNetCore.Http;
global using Microsoft.AspNetCore.Mvc;
-global using Microsoft.CodeAnalysis;
global using Microsoft.Extensions.DependencyInjection;
global using Microsoft.Extensions.Logging;
global using NewLife.Serialization;
global using OfficeOpenXml.Table;
+global using SimpleAdmin.Cache;
global using SimpleAdmin.Core;
global using SimpleAdmin.Core.Utils;
-global using SimpleAdmin.Cache;
global using SimpleAdmin.SqlSugar;
global using SimpleTool;
global using SqlSugar;
global using System.ComponentModel.DataAnnotations;
global using System.Reflection;
global using System.Text;
-global using Magicodes.ExporterAndImporter.Core.Models;
-global using System.Web;
\ No newline at end of file
+global using System.Web;
+global using SkiaSharp;
+global using System.Runtime.InteropServices;
+global using Microsoft.AspNetCore.Builder;
+global using Microsoft.AspNetCore.Hosting;
+global using Newtonsoft.Json.Linq;
diff --git a/api/SimpleAdmin/SimpleAdmin.System/Mapper.cs b/api/SimpleAdmin/SimpleAdmin.System/Mapper.cs
index 4da317cce5d4a855b0d92b614ac7665cfde698c8..7f4c027a99c3434f587377064234a16d7bd9b8fd 100644
--- a/api/SimpleAdmin/SimpleAdmin.System/Mapper.cs
+++ b/api/SimpleAdmin/SimpleAdmin.System/Mapper.cs
@@ -1,4 +1,14 @@
-namespace SimpleAdmin.System;
+// Copyright (c) 2022-Now 少林寺驻北固山办事处大神父王喇嘛
+//
+// SimpleAdmin 基于 Apache License Version 2.0 协议发布,可用于商业项目,但必须遵守以下补充条款:
+// 1.请不要删除和修改根目录下的LICENSE文件。
+// 2.请不要删除和修改SimpleAdmin源码头部的版权声明。
+// 3.分发源码时候,请注明软件出处 https://gitee.com/dotnetmoyu/SimpleAdmin
+// 4.基于本软件的作品,只能使用 SimpleAdmin 作为后台服务,除外情况不可商用且不允许二次分发或开源。
+// 5.请不得将本软件应用于危害国家安全、荣誉和利益的行为,不能以任何形式用于非法为目的的行为。
+// 6.任何基于本软件而产生的一切法律纠纷和责任,均于我司无关。
+
+namespace SimpleAdmin.System;
///
/// 对象映射
@@ -8,4 +18,4 @@ public class Mapper : IRegister
public void Register(TypeAdapterConfig config)
{
}
-}
\ No newline at end of file
+}
diff --git a/api/SimpleAdmin/SimpleAdmin.System/Options/SystemSettingsOptions.cs b/api/SimpleAdmin/SimpleAdmin.System/Options/SystemSettingsOptions.cs
index 8f9796079e7247ea416c4e15ed1e2a688d9c22d0..2586f37d199ba50d173fd6128cf991d7a8d2eaab 100644
--- a/api/SimpleAdmin/SimpleAdmin.System/Options/SystemSettingsOptions.cs
+++ b/api/SimpleAdmin/SimpleAdmin.System/Options/SystemSettingsOptions.cs
@@ -1,4 +1,14 @@
-using Furion.ConfigurableOptions;
+// Copyright (c) 2022-Now 少林寺驻北固山办事处大神父王喇嘛
+//
+// SimpleAdmin 基于 Apache License Version 2.0 协议发布,可用于商业项目,但必须遵守以下补充条款:
+// 1.请不要删除和修改根目录下的LICENSE文件。
+// 2.请不要删除和修改SimpleAdmin源码头部的版权声明。
+// 3.分发源码时候,请注明软件出处 https://gitee.com/dotnetmoyu/SimpleAdmin
+// 4.基于本软件的作品,只能使用 SimpleAdmin 作为后台服务,除外情况不可商用且不允许二次分发或开源。
+// 5.请不得将本软件应用于危害国家安全、荣誉和利益的行为,不能以任何形式用于非法为目的的行为。
+// 6.任何基于本软件而产生的一切法律纠纷和责任,均于我司无关。
+
+using MoYu.ConfigurableOptions;
namespace SimpleAdmin.System;
@@ -7,4 +17,13 @@ namespace SimpleAdmin.System;
///
public class SystemSettingsOptions : BaseOptions, IConfigurableOptions
{
-}
\ No newline at end of file
+ ///
+ /// 超级管理员可以看到全部数据
+ ///
+ public bool SuperAdminViewAllData { get; set; }
+
+ ///
+ /// 启用通知中心
+ ///
+ public bool UseMessageCenter { get; set; }
+}
diff --git a/api/SimpleAdmin/SimpleAdmin.System/Oss/MinioUtils.cs b/api/SimpleAdmin/SimpleAdmin.System/Oss/MinioUtils.cs
index eb455b0dcd92e9e21ab933ef775bf6dc69e04964..75608154eb416e9e855e19e810b8e3defb1f4bcb 100644
--- a/api/SimpleAdmin/SimpleAdmin.System/Oss/MinioUtils.cs
+++ b/api/SimpleAdmin/SimpleAdmin.System/Oss/MinioUtils.cs
@@ -1,4 +1,14 @@
-using Minio;
+// Copyright (c) 2022-Now 少林寺驻北固山办事处大神父王喇嘛
+//
+// SimpleAdmin 基于 Apache License Version 2.0 协议发布,可用于商业项目,但必须遵守以下补充条款:
+// 1.请不要删除和修改根目录下的LICENSE文件。
+// 2.请不要删除和修改SimpleAdmin源码头部的版权声明。
+// 3.分发源码时候,请注明软件出处 https://gitee.com/dotnetmoyu/SimpleAdmin
+// 4.基于本软件的作品,只能使用 SimpleAdmin 作为后台服务,除外情况不可商用且不允许二次分发或开源。
+// 5.请不得将本软件应用于危害国家安全、荣誉和利益的行为,不能以任何形式用于非法为目的的行为。
+// 6.任何基于本软件而产生的一切法律纠纷和责任,均于我司无关。
+
+using Minio;
using Minio.Exceptions;
namespace SimpleAdmin.System;
@@ -8,15 +18,15 @@ namespace SimpleAdmin.System;
///
public class MinioUtils : ITransient
{
- public MinioClient minioClient;
- private string defaultBucketName;
- private string defaultEndPoint;
- private string defaultPrefix = "http://";
+ public MinioClient MinioClient;
+ private string _defaultBucketName;
+ private string _defaultEndPoint;
+ private string _defaultPrefix = "http://";
private readonly IConfigService _configService;
public MinioUtils(IConfigService configService)
{
- this._configService = configService;
+ _configService = configService;
InitClient();
}
@@ -26,28 +36,29 @@ public class MinioUtils : ITransient
///
private async void InitClient()
{
- var configs = await _configService.GetListByCategory(CateGoryConst.Config_FILE_MINIO);//获取minio配置
- var accessKey = configs.Where(it => it.ConfigKey == DevConfigConst.FILE_MINIO_ACCESS_KEY).FirstOrDefault();//MINIO文件AccessKey
- var secretKey = configs.Where(it => it.ConfigKey == DevConfigConst.FILE_MINIO_SECRET_KEY).FirstOrDefault();//MINIO文件SecetKey
- var endPoint = configs.Where(it => it.ConfigKey == DevConfigConst.FILE_MINIO_END_POINT).FirstOrDefault();//MINIO文件EndPoint
- var bucketName = configs.Where(it => it.ConfigKey == DevConfigConst.FILE_MINIO_DEFAULT_BUCKET_NAME).FirstOrDefault();//MINIO文件默认存储桶
+ var configs = await _configService.GetConfigsByCategory(CateGoryConst.CONFIG_FILE_MINIO);//获取minio配置
+ var accessKey = configs.Where(it => it.ConfigKey == SysConfigConst.FILE_MINIO_ACCESS_KEY).FirstOrDefault();//MINIO文件AccessKey
+ var secretKey = configs.Where(it => it.ConfigKey == SysConfigConst.FILE_MINIO_SECRET_KEY).FirstOrDefault();//MINIO文件SecretKey
+ var endPoint = configs.Where(it => it.ConfigKey == SysConfigConst.FILE_MINIO_END_POINT).FirstOrDefault();//MINIO文件EndPoint
+ var bucketName = configs.Where(it => it.ConfigKey == SysConfigConst.FILE_MINIO_DEFAULT_BUCKET_NAME).FirstOrDefault();//MINIO文件默认存储桶
if (accessKey == null || secretKey == null || endPoint == null || bucketName == null)
{
- throw Oops.Oh($"MINIO客户端未正确配置");
+ throw Oops.Oh("MINIO客户端未正确配置");
}
try
{
//默认值赋值
- defaultBucketName = bucketName.ConfigValue;
- defaultEndPoint = endPoint.ConfigValue;
- if (defaultEndPoint.ToLower().StartsWith("http"))
+ _defaultBucketName = bucketName.ConfigValue;
+ _defaultEndPoint = endPoint.ConfigValue;
+ if (_defaultEndPoint.ToLower().StartsWith("http"))
{
- var point = defaultEndPoint.Split("//").ToList();//分割、
- defaultPrefix = $"{point[0]}//";
- defaultEndPoint = point[1];
+ var point = _defaultEndPoint.Split("//").ToList();//分割、
+ _defaultPrefix = $"{point[0]}//";
+ _defaultEndPoint = point[1];
}
- this.minioClient = new MinioClient().WithEndpoint(defaultEndPoint).WithCredentials(accessKey.ConfigValue, secretKey.ConfigValue).Build();//初始化monio对象
- this.minioClient.WithTimeout(5000);//超时时间
+ MinioClient = new MinioClient().WithEndpoint(_defaultEndPoint).WithCredentials(accessKey.ConfigValue, secretKey.ConfigValue)
+ .Build();//初始化minio对象
+ MinioClient.WithTimeout(5000);//超时时间
}
catch (Exception ex)
{
@@ -67,17 +78,18 @@ public class MinioUtils : ITransient
try
{
using var fileStream = file.OpenReadStream();//获取文件流
- PutObjectArgs putObjectArgs = new PutObjectArgs().WithBucket(defaultBucketName).WithObject(objectName).WithStreamData(fileStream).WithObjectSize(file.Length).WithContentType(contentType);
- await minioClient.PutObjectAsync(putObjectArgs);
- return $"{defaultPrefix}{defaultEndPoint}/{defaultBucketName}/{objectName}";//默认http
+ var putObjectArgs = new PutObjectArgs().WithBucket(_defaultBucketName).WithObject(objectName).WithStreamData(fileStream)
+ .WithObjectSize(file.Length).WithContentType(contentType);
+ await MinioClient.PutObjectAsync(putObjectArgs);
+ return $"{_defaultPrefix}{_defaultEndPoint}/{_defaultBucketName}/{objectName}";//默认http
}
catch (MinioException e)
{
- throw Oops.Oh($"上传文件失败!", e);
+ throw Oops.Oh("上传文件失败!", e);
}
catch (Exception e)
{
- throw Oops.Oh($"上传文件失败!", e);
+ throw Oops.Oh("上传文件失败!", e);
}
}
@@ -91,15 +103,13 @@ public class MinioUtils : ITransient
var stream = new MemoryStream();
try
{
- var getObjectArgs = new GetObjectArgs().WithBucket(defaultBucketName)
- .WithObject(objectName)
- .WithCallbackStream(cb =>
- {
- cb.CopyTo(stream);
- });
- await minioClient.GetObjectAsync(getObjectArgs);
+ var getObjectArgs = new GetObjectArgs().WithBucket(_defaultBucketName).WithObject(objectName).WithCallbackStream(cb =>
+ {
+ cb.CopyTo(stream);
+ });
+ await MinioClient.GetObjectAsync(getObjectArgs);
- //System.InvalidOperationException: Response Content-Length mismatch: too few bytes written (0 of 30788)
+ //UserCenter.InvalidOperationException: Response Content-Length mismatch: too few bytes written (0 of 30788)
if (stream.CanSeek)
{
stream.Seek(0, SeekOrigin.Begin);
@@ -108,11 +118,11 @@ public class MinioUtils : ITransient
}
catch (MinioException e)
{
- throw Oops.Oh($"下载文件失败!", e);
+ throw Oops.Oh("下载文件失败!", e);
}
catch (Exception e)
{
- throw Oops.Oh($"下载文件失败!", e);
+ throw Oops.Oh("下载文件失败!", e);
}
}
-}
\ No newline at end of file
+}
diff --git a/api/SimpleAdmin/SimpleAdmin.System/SeedData/BatchEditConfigSeedData.cs b/api/SimpleAdmin/SimpleAdmin.System/SeedData/BatchEditConfigSeedData.cs
deleted file mode 100644
index 126d72789a84f497f139cea448eebc9bab43d56e..0000000000000000000000000000000000000000
--- a/api/SimpleAdmin/SimpleAdmin.System/SeedData/BatchEditConfigSeedData.cs
+++ /dev/null
@@ -1,12 +0,0 @@
-namespace SimpleAdmin.System;
-
-///
-/// 批量修改字段种子数据
-///
-public class BatchEditConfigSeedData : ISqlSugarEntitySeedData
-{
- public IEnumerable SeedData()
- {
- return SeedDataUtil.GetSeedData("seed_batch_edit_config.json");
- }
-}
\ No newline at end of file
diff --git a/api/SimpleAdmin/SimpleAdmin.System/SeedData/BatchEditSeedData.cs b/api/SimpleAdmin/SimpleAdmin.System/SeedData/BatchEditSeedData.cs
deleted file mode 100644
index 31615dc4a65cfd1e93f2b29d80258b8d41f6a66a..0000000000000000000000000000000000000000
--- a/api/SimpleAdmin/SimpleAdmin.System/SeedData/BatchEditSeedData.cs
+++ /dev/null
@@ -1,12 +0,0 @@
-namespace SimpleAdmin.System;
-
-///
-/// 批量修改配置种子数据
-///
-public class BatchEditSeedData : ISqlSugarEntitySeedData
-{
- public IEnumerable SeedData()
- {
- return SeedDataUtil.GetSeedData("seed_batch_edit.json");
- }
-}
\ No newline at end of file
diff --git a/api/SimpleAdmin/SimpleAdmin.System/SeedData/DevConfigSeedData.cs b/api/SimpleAdmin/SimpleAdmin.System/SeedData/DevConfigSeedData.cs
deleted file mode 100644
index e090ff7cae1ca4f5decb7d643c9a6a13826df15a..0000000000000000000000000000000000000000
--- a/api/SimpleAdmin/SimpleAdmin.System/SeedData/DevConfigSeedData.cs
+++ /dev/null
@@ -1,12 +0,0 @@
-namespace SimpleAdmin.System;
-
-///
-/// 系统配置种子数据
-///
-public class DevConfigSeedData : ISqlSugarEntitySeedData
-{
- public IEnumerable SeedData()
- {
- return SeedDataUtil.GetSeedData("seed_dev_config.json");
- }
-}
\ No newline at end of file
diff --git a/api/SimpleAdmin/SimpleAdmin.System/SeedData/DevDictSeedData.cs b/api/SimpleAdmin/SimpleAdmin.System/SeedData/DevDictSeedData.cs
deleted file mode 100644
index 007cbe89bdde719ea17fb76ae0fdb91091dc48ad..0000000000000000000000000000000000000000
--- a/api/SimpleAdmin/SimpleAdmin.System/SeedData/DevDictSeedData.cs
+++ /dev/null
@@ -1,12 +0,0 @@
-namespace SimpleAdmin.System;
-
-///
-/// 字典表种子数据
-///
-public class DevDictSeedData : ISqlSugarEntitySeedData
-{
- public IEnumerable SeedData()
- {
- return SeedDataUtil.GetSeedData("seed_dev_dict.json");
- }
-}
\ No newline at end of file
diff --git a/api/SimpleAdmin/SimpleAdmin.System/SeedData/Json/seed_batch_edit.json b/api/SimpleAdmin/SimpleAdmin.System/SeedData/Json/seed_batch_edit.json
deleted file mode 100644
index f62b0535c3b4377ec340a62f4d88aecd53d18c3a..0000000000000000000000000000000000000000
--- a/api/SimpleAdmin/SimpleAdmin.System/SeedData/Json/seed_batch_edit.json
+++ /dev/null
@@ -1,22 +0,0 @@
-{
- "RECORDS": [
- {
- "Id": "395358682767429",
- "Code": "sysUser",
- "ConfigId": "SimpleAdmin",
- "EntityName": "SysUser",
- "TableName": "sys_user",
- "TableDescription": "用户信息表",
- "ExtJson": ""
- },
- {
- "Id": "395711906775109",
- "Code": "bizUser",
- "ConfigId": "SimpleAdmin",
- "EntityName": "SysUser",
- "TableName": "sys_user",
- "TableDescription": "用户信息表",
- "ExtJson": ""
- }
- ]
-}
\ No newline at end of file
diff --git a/api/SimpleAdmin/SimpleAdmin.System/SeedData/Json/seed_batch_edit_config.json b/api/SimpleAdmin/SimpleAdmin.System/SeedData/Json/seed_batch_edit_config.json
deleted file mode 100644
index 7def40b3e136318ff4e9af8fa37abd6348eab6b6..0000000000000000000000000000000000000000
--- a/api/SimpleAdmin/SimpleAdmin.System/SeedData/Json/seed_batch_edit_config.json
+++ /dev/null
@@ -1,1324 +0,0 @@
-{
- "RECORDS": [
- {
- "Id": "395707076743237",
- "UId": "395358682767429",
- "ColumnName": "Avatar",
- "ColumnComment": "头像",
- "DataType": "input",
- "DictTypeCode": "",
- "NetType": "string",
- "RequestUrl": "",
- "RequestType": "",
- "RequestLabel": "",
- "RequestValue": "",
- "ExtJson": "",
- "Status": "DISABLED"
- },
- {
- "Id": "395707076759621",
- "UId": "395358682767429",
- "ColumnName": "Signature",
- "ColumnComment": "签名",
- "DataType": "input",
- "DictTypeCode": "",
- "NetType": "string",
- "RequestUrl": "",
- "RequestType": "",
- "RequestLabel": "",
- "RequestValue": "",
- "ExtJson": "",
- "Status": "DISABLED"
- },
- {
- "Id": "395707076763717",
- "UId": "395358682767429",
- "ColumnName": "Account",
- "ColumnComment": "账号",
- "DataType": "input",
- "DictTypeCode": "",
- "NetType": "string",
- "RequestUrl": "",
- "RequestType": "",
- "RequestLabel": "",
- "RequestValue": "",
- "ExtJson": "",
- "Status": "DISABLED"
- },
- {
- "Id": "395707076763718",
- "UId": "395358682767429",
- "ColumnName": "Password",
- "ColumnComment": "密码",
- "DataType": "input",
- "DictTypeCode": "",
- "NetType": "string",
- "RequestUrl": "",
- "RequestType": "",
- "RequestLabel": "",
- "RequestValue": "",
- "ExtJson": "",
- "Status": "DISABLED"
- },
- {
- "Id": "395707076763719",
- "UId": "395358682767429",
- "ColumnName": "Name",
- "ColumnComment": "姓名",
- "DataType": "input",
- "DictTypeCode": "",
- "NetType": "string",
- "RequestUrl": "",
- "RequestType": "",
- "RequestLabel": "",
- "RequestValue": "",
- "ExtJson": "",
- "Status": "DISABLED"
- },
- {
- "Id": "395707076763720",
- "UId": "395358682767429",
- "ColumnName": "Nickname",
- "ColumnComment": "昵称",
- "DataType": "input",
- "DictTypeCode": "",
- "NetType": "string",
- "RequestUrl": "",
- "RequestType": "",
- "RequestLabel": "",
- "RequestValue": "",
- "ExtJson": "",
- "Status": "DISABLED"
- },
- {
- "Id": "395707076763721",
- "UId": "395358682767429",
- "ColumnName": "Gender",
- "ColumnComment": "性别",
- "DataType": "radio_dict",
- "DictTypeCode": "GENDER",
- "NetType": "string",
- "RequestUrl": "",
- "RequestType": "",
- "RequestLabel": "",
- "RequestValue": "",
- "ExtJson": "",
- "Status": "ENABLE"
- },
- {
- "Id": "395707076763722",
- "UId": "395358682767429",
- "ColumnName": "Birthday",
- "ColumnComment": "出生日期",
- "DataType": "input",
- "DictTypeCode": "",
- "NetType": "string",
- "RequestUrl": "",
- "RequestType": "",
- "RequestLabel": "",
- "RequestValue": "",
- "ExtJson": "",
- "Status": "DISABLED"
- },
- {
- "Id": "395707076763723",
- "UId": "395358682767429",
- "ColumnName": "Nation",
- "ColumnComment": "民族",
- "DataType": "select_dict",
- "DictTypeCode": "NATION",
- "NetType": "string",
- "RequestUrl": "",
- "RequestType": "",
- "RequestLabel": "",
- "RequestValue": "",
- "ExtJson": "",
- "Status": "ENABLE"
- },
- {
- "Id": "395707076763724",
- "UId": "395358682767429",
- "ColumnName": "HomeAddress",
- "ColumnComment": "家庭住址",
- "DataType": "input",
- "DictTypeCode": "",
- "NetType": "string",
- "RequestUrl": "",
- "RequestType": "",
- "RequestLabel": "",
- "RequestValue": "",
- "ExtJson": "",
- "Status": "DISABLED"
- },
- {
- "Id": "395707076763725",
- "UId": "395358682767429",
- "ColumnName": "MailingAddress",
- "ColumnComment": "通信地址",
- "DataType": "input",
- "DictTypeCode": "",
- "NetType": "string",
- "RequestUrl": "",
- "RequestType": "",
- "RequestLabel": "",
- "RequestValue": "",
- "ExtJson": "",
- "Status": "DISABLED"
- },
- {
- "Id": "395707076763726",
- "UId": "395358682767429",
- "ColumnName": "IdCardType",
- "ColumnComment": "证件类型",
- "DataType": "input",
- "DictTypeCode": "",
- "NetType": "string",
- "RequestUrl": "",
- "RequestType": "",
- "RequestLabel": "",
- "RequestValue": "",
- "ExtJson": "",
- "Status": "DISABLED"
- },
- {
- "Id": "395707076763727",
- "UId": "395358682767429",
- "ColumnName": "IdCardNumber",
- "ColumnComment": "证件号码",
- "DataType": "input",
- "DictTypeCode": "",
- "NetType": "string",
- "RequestUrl": "",
- "RequestType": "",
- "RequestLabel": "",
- "RequestValue": "",
- "ExtJson": "",
- "Status": "DISABLED"
- },
- {
- "Id": "395707076763728",
- "UId": "395358682767429",
- "ColumnName": "CultureLevel",
- "ColumnComment": "文化程度",
- "DataType": "input",
- "DictTypeCode": "",
- "NetType": "string",
- "RequestUrl": "",
- "RequestType": "",
- "RequestLabel": "",
- "RequestValue": "",
- "ExtJson": "",
- "Status": "DISABLED"
- },
- {
- "Id": "395707076763729",
- "UId": "395358682767429",
- "ColumnName": "PoliticalOutlook",
- "ColumnComment": "政治面貌",
- "DataType": "input",
- "DictTypeCode": "",
- "NetType": "string",
- "RequestUrl": "",
- "RequestType": "",
- "RequestLabel": "",
- "RequestValue": "",
- "ExtJson": "",
- "Status": "DISABLED"
- },
- {
- "Id": "395707076763730",
- "UId": "395358682767429",
- "ColumnName": "College",
- "ColumnComment": "毕业院校",
- "DataType": "input",
- "DictTypeCode": "",
- "NetType": "string",
- "RequestUrl": "",
- "RequestType": "",
- "RequestLabel": "",
- "RequestValue": "",
- "ExtJson": "",
- "Status": "DISABLED"
- },
- {
- "Id": "395707076763731",
- "UId": "395358682767429",
- "ColumnName": "Education",
- "ColumnComment": "学历",
- "DataType": "input",
- "DictTypeCode": "",
- "NetType": "string",
- "RequestUrl": "",
- "RequestType": "",
- "RequestLabel": "",
- "RequestValue": "",
- "ExtJson": "",
- "Status": "DISABLED"
- },
- {
- "Id": "395707076763732",
- "UId": "395358682767429",
- "ColumnName": "EduLength",
- "ColumnComment": "学制",
- "DataType": "input",
- "DictTypeCode": "",
- "NetType": "string",
- "RequestUrl": "",
- "RequestType": "",
- "RequestLabel": "",
- "RequestValue": "",
- "ExtJson": "",
- "Status": "DISABLED"
- },
- {
- "Id": "395707076763733",
- "UId": "395358682767429",
- "ColumnName": "Degree",
- "ColumnComment": "学位",
- "DataType": "input",
- "DictTypeCode": "",
- "NetType": "string",
- "RequestUrl": "",
- "RequestType": "",
- "RequestLabel": "",
- "RequestValue": "",
- "ExtJson": "",
- "Status": "DISABLED"
- },
- {
- "Id": "395707076763734",
- "UId": "395358682767429",
- "ColumnName": "Phone",
- "ColumnComment": "手机",
- "DataType": "input",
- "DictTypeCode": "",
- "NetType": "string",
- "RequestUrl": "",
- "RequestType": "",
- "RequestLabel": "",
- "RequestValue": "",
- "ExtJson": "",
- "Status": "DISABLED"
- },
- {
- "Id": "395707076763735",
- "UId": "395358682767429",
- "ColumnName": "Email",
- "ColumnComment": "邮箱",
- "DataType": "input",
- "DictTypeCode": "",
- "NetType": "string",
- "RequestUrl": "",
- "RequestType": "",
- "RequestLabel": "",
- "RequestValue": "",
- "ExtJson": "",
- "Status": "DISABLED"
- },
- {
- "Id": "395707076763736",
- "UId": "395358682767429",
- "ColumnName": "HomeTel",
- "ColumnComment": "家庭电话",
- "DataType": "input",
- "DictTypeCode": "",
- "NetType": "string",
- "RequestUrl": "",
- "RequestType": "",
- "RequestLabel": "",
- "RequestValue": "",
- "ExtJson": "",
- "Status": "DISABLED"
- },
- {
- "Id": "395707076763737",
- "UId": "395358682767429",
- "ColumnName": "OfficeTel",
- "ColumnComment": "办公电话",
- "DataType": "input",
- "DictTypeCode": "",
- "NetType": "string",
- "RequestUrl": "",
- "RequestType": "",
- "RequestLabel": "",
- "RequestValue": "",
- "ExtJson": "",
- "Status": "DISABLED"
- },
- {
- "Id": "395707076763738",
- "UId": "395358682767429",
- "ColumnName": "EmergencyPhone",
- "ColumnComment": "紧急联系人电话",
- "DataType": "input",
- "DictTypeCode": "",
- "NetType": "string",
- "RequestUrl": "",
- "RequestType": "",
- "RequestLabel": "",
- "RequestValue": "",
- "ExtJson": "",
- "Status": "DISABLED"
- },
- {
- "Id": "395707076763739",
- "UId": "395358682767429",
- "ColumnName": "EmergencyAddress",
- "ColumnComment": "紧急联系人地址",
- "DataType": "input",
- "DictTypeCode": "",
- "NetType": "string",
- "RequestUrl": "",
- "RequestType": "",
- "RequestLabel": "",
- "RequestValue": "",
- "ExtJson": "",
- "Status": "DISABLED"
- },
- {
- "Id": "395707076763740",
- "UId": "395358682767429",
- "ColumnName": "EmpNo",
- "ColumnComment": "员工编号",
- "DataType": "input",
- "DictTypeCode": "",
- "NetType": "string",
- "RequestUrl": "",
- "RequestType": "",
- "RequestLabel": "",
- "RequestValue": "",
- "ExtJson": "",
- "Status": "DISENABLE"
- },
- {
- "Id": "395707076763741",
- "UId": "395358682767429",
- "ColumnName": "EntryDate",
- "ColumnComment": "入职日期",
- "DataType": "datepicker",
- "DictTypeCode": "",
- "NetType": "string",
- "RequestUrl": "",
- "RequestType": "",
- "RequestLabel": "",
- "RequestValue": "",
- "ExtJson": "",
- "Status": "ENABLE"
- },
- {
- "Id": "395707076763742",
- "UId": "395358682767429",
- "ColumnName": "OrgId",
- "ColumnComment": "机构id",
- "DataType": "input",
- "DictTypeCode": "",
- "NetType": "long",
- "RequestUrl": "",
- "RequestType": "",
- "RequestLabel": "",
- "RequestValue": "",
- "ExtJson": "",
- "Status": "DISABLED"
- },
- {
- "Id": "395707076763743",
- "UId": "395358682767429",
- "ColumnName": "PositionId",
- "ColumnComment": "职位id",
- "DataType": "input",
- "DictTypeCode": "",
- "NetType": "long",
- "RequestUrl": "",
- "RequestType": "",
- "RequestLabel": "",
- "RequestValue": "",
- "ExtJson": "",
- "Status": "DISABLED"
- },
- {
- "Id": "395707076763744",
- "UId": "395358682767429",
- "ColumnName": "PositionLevel",
- "ColumnComment": "职级",
- "DataType": "input",
- "DictTypeCode": "",
- "NetType": "string",
- "RequestUrl": "",
- "RequestType": "",
- "RequestLabel": "",
- "RequestValue": "",
- "ExtJson": "",
- "Status": "ENABLE"
- },
- {
- "Id": "395707076763745",
- "UId": "395358682767429",
- "ColumnName": "DirectorId",
- "ColumnComment": "主管id",
- "DataType": "input",
- "DictTypeCode": "",
- "NetType": "long",
- "RequestUrl": "",
- "RequestType": "",
- "RequestLabel": "",
- "RequestValue": "",
- "ExtJson": "",
- "Status": "DISENABLE"
- },
- {
- "Id": "395707076763746",
- "UId": "395358682767429",
- "ColumnName": "PositionJson",
- "ColumnComment": "兼任信息",
- "DataType": "input",
- "DictTypeCode": "",
- "NetType": "string",
- "RequestUrl": "",
- "RequestType": "",
- "RequestLabel": "",
- "RequestValue": "",
- "ExtJson": "",
- "Status": "DISABLED"
- },
- {
- "Id": "395707076763747",
- "UId": "395358682767429",
- "ColumnName": "LastLoginIp",
- "ColumnComment": "上次登录ip",
- "DataType": "input",
- "DictTypeCode": "",
- "NetType": "string",
- "RequestUrl": "",
- "RequestType": "",
- "RequestLabel": "",
- "RequestValue": "",
- "ExtJson": "",
- "Status": "DISABLED"
- },
- {
- "Id": "395707076763748",
- "UId": "395358682767429",
- "ColumnName": "LastLoginAddress",
- "ColumnComment": "上次登录地点",
- "DataType": "input",
- "DictTypeCode": "",
- "NetType": "string",
- "RequestUrl": "",
- "RequestType": "",
- "RequestLabel": "",
- "RequestValue": "",
- "ExtJson": "",
- "Status": "DISABLED"
- },
- {
- "Id": "395707076763749",
- "UId": "395358682767429",
- "ColumnName": "LastLoginTime",
- "ColumnComment": "上次登录时间",
- "DataType": "datepicker",
- "DictTypeCode": "",
- "NetType": "DateTime",
- "RequestUrl": "",
- "RequestType": "",
- "RequestLabel": "",
- "RequestValue": "",
- "ExtJson": "",
- "Status": "DISABLED"
- },
- {
- "Id": "395707076763750",
- "UId": "395358682767429",
- "ColumnName": "LastLoginDevice",
- "ColumnComment": "上次登录设备",
- "DataType": "input",
- "DictTypeCode": "",
- "NetType": "string",
- "RequestUrl": "",
- "RequestType": "",
- "RequestLabel": "",
- "RequestValue": "",
- "ExtJson": "",
- "Status": "DISABLED"
- },
- {
- "Id": "395707076763751",
- "UId": "395358682767429",
- "ColumnName": "LatestLoginIp",
- "ColumnComment": "最新登录ip",
- "DataType": "input",
- "DictTypeCode": "",
- "NetType": "string",
- "RequestUrl": "",
- "RequestType": "",
- "RequestLabel": "",
- "RequestValue": "",
- "ExtJson": "",
- "Status": "DISABLED"
- },
- {
- "Id": "395707076763752",
- "UId": "395358682767429",
- "ColumnName": "LatestLoginAddress",
- "ColumnComment": "最新登录地点",
- "DataType": "input",
- "DictTypeCode": "",
- "NetType": "string",
- "RequestUrl": "",
- "RequestType": "",
- "RequestLabel": "",
- "RequestValue": "",
- "ExtJson": "",
- "Status": "DISABLED"
- },
- {
- "Id": "395707076763753",
- "UId": "395358682767429",
- "ColumnName": "LatestLoginTime",
- "ColumnComment": "最新登录时间",
- "DataType": "datepicker",
- "DictTypeCode": "",
- "NetType": "DateTime",
- "RequestUrl": "",
- "RequestType": "",
- "RequestLabel": "",
- "RequestValue": "",
- "ExtJson": "",
- "Status": "DISABLED"
- },
- {
- "Id": "395707076763754",
- "UId": "395358682767429",
- "ColumnName": "LatestLoginDevice",
- "ColumnComment": "最新登录设备",
- "DataType": "input",
- "DictTypeCode": "",
- "NetType": "string",
- "RequestUrl": "",
- "RequestType": "",
- "RequestLabel": "",
- "RequestValue": "",
- "ExtJson": "",
- "Status": "DISABLED"
- },
- {
- "Id": "395707076763755",
- "UId": "395358682767429",
- "ColumnName": "UserStatus",
- "ColumnComment": "用户状态",
- "DataType": "input",
- "DictTypeCode": "",
- "NetType": "string",
- "RequestUrl": "",
- "RequestType": "",
- "RequestLabel": "",
- "RequestValue": "",
- "ExtJson": "",
- "Status": "DISABLED"
- },
- {
- "Id": "395707076763756",
- "UId": "395358682767429",
- "ColumnName": "SortCode",
- "ColumnComment": "排序码",
- "DataType": "inputNumber",
- "DictTypeCode": "",
- "NetType": "int",
- "RequestUrl": "",
- "RequestType": "",
- "RequestLabel": "",
- "RequestValue": "",
- "ExtJson": "",
- "Status": "DISABLED"
- },
- {
- "Id": "395707076763757",
- "UId": "395358682767429",
- "ColumnName": "NativePlace",
- "ColumnComment": "籍贯",
- "DataType": "input",
- "DictTypeCode": "",
- "NetType": "string",
- "RequestUrl": "",
- "RequestType": "",
- "RequestLabel": "",
- "RequestValue": "",
- "ExtJson": "",
- "Status": "DISABLED"
- },
- {
- "Id": "395707076763758",
- "UId": "395358682767429",
- "ColumnName": "EmergencyContact",
- "ColumnComment": "紧急联系人",
- "DataType": "input",
- "DictTypeCode": "",
- "NetType": "string",
- "RequestUrl": "",
- "RequestType": "",
- "RequestLabel": "",
- "RequestValue": "",
- "ExtJson": "",
- "Status": "DISABLED"
- },
- {
- "Id": "395711906816069",
- "UId": "395711906775109",
- "ColumnName": "Avatar",
- "ColumnComment": "头像",
- "DataType": "input",
- "DictTypeCode": "",
- "NetType": "string",
- "RequestUrl": "",
- "RequestType": "",
- "RequestLabel": "",
- "RequestValue": "",
- "ExtJson": "",
- "Status": "DISABLED"
- },
- {
- "Id": "395711906816070",
- "UId": "395711906775109",
- "ColumnName": "Signature",
- "ColumnComment": "签名",
- "DataType": "input",
- "DictTypeCode": "",
- "NetType": "string",
- "RequestUrl": "",
- "RequestType": "",
- "RequestLabel": "",
- "RequestValue": "",
- "ExtJson": "",
- "Status": "DISABLED"
- },
- {
- "Id": "395711906816071",
- "UId": "395711906775109",
- "ColumnName": "Account",
- "ColumnComment": "账号",
- "DataType": "input",
- "DictTypeCode": "",
- "NetType": "string",
- "RequestUrl": "",
- "RequestType": "",
- "RequestLabel": "",
- "RequestValue": "",
- "ExtJson": "",
- "Status": "DISABLED"
- },
- {
- "Id": "395711906816072",
- "UId": "395711906775109",
- "ColumnName": "Password",
- "ColumnComment": "密码",
- "DataType": "input",
- "DictTypeCode": "",
- "NetType": "string",
- "RequestUrl": "",
- "RequestType": "",
- "RequestLabel": "",
- "RequestValue": "",
- "ExtJson": "",
- "Status": "DISABLED"
- },
- {
- "Id": "395711906816073",
- "UId": "395711906775109",
- "ColumnName": "Name",
- "ColumnComment": "姓名",
- "DataType": "input",
- "DictTypeCode": "",
- "NetType": "string",
- "RequestUrl": "",
- "RequestType": "",
- "RequestLabel": "",
- "RequestValue": "",
- "ExtJson": "",
- "Status": "DISABLED"
- },
- {
- "Id": "395711906816074",
- "UId": "395711906775109",
- "ColumnName": "Nickname",
- "ColumnComment": "昵称",
- "DataType": "input",
- "DictTypeCode": "",
- "NetType": "string",
- "RequestUrl": "",
- "RequestType": "",
- "RequestLabel": "",
- "RequestValue": "",
- "ExtJson": "",
- "Status": "DISABLED"
- },
- {
- "Id": "395711906816075",
- "UId": "395711906775109",
- "ColumnName": "Gender",
- "ColumnComment": "性别",
- "DataType": "select_dict",
- "DictTypeCode": "GENDER",
- "NetType": "string",
- "RequestUrl": "",
- "RequestType": "",
- "RequestLabel": "",
- "RequestValue": "",
- "ExtJson": "",
- "Status": "ENABLE"
- },
- {
- "Id": "395711906816076",
- "UId": "395711906775109",
- "ColumnName": "Birthday",
- "ColumnComment": "出生日期",
- "DataType": "input",
- "DictTypeCode": "",
- "NetType": "string",
- "RequestUrl": "",
- "RequestType": "",
- "RequestLabel": "",
- "RequestValue": "",
- "ExtJson": "",
- "Status": "DISABLED"
- },
- {
- "Id": "395711906816077",
- "UId": "395711906775109",
- "ColumnName": "Nation",
- "ColumnComment": "民族",
- "DataType": "select_dict",
- "DictTypeCode": "NATION",
- "NetType": "string",
- "RequestUrl": "",
- "RequestType": "",
- "RequestLabel": "",
- "RequestValue": "",
- "ExtJson": "",
- "Status": "ENABLE"
- },
- {
- "Id": "395711906816078",
- "UId": "395711906775109",
- "ColumnName": "HomeAddress",
- "ColumnComment": "家庭住址",
- "DataType": "input",
- "DictTypeCode": "",
- "NetType": "string",
- "RequestUrl": "",
- "RequestType": "",
- "RequestLabel": "",
- "RequestValue": "",
- "ExtJson": "",
- "Status": "DISABLED"
- },
- {
- "Id": "395711906816079",
- "UId": "395711906775109",
- "ColumnName": "MailingAddress",
- "ColumnComment": "通信地址",
- "DataType": "input",
- "DictTypeCode": "",
- "NetType": "string",
- "RequestUrl": "",
- "RequestType": "",
- "RequestLabel": "",
- "RequestValue": "",
- "ExtJson": "",
- "Status": "DISABLED"
- },
- {
- "Id": "395711906816080",
- "UId": "395711906775109",
- "ColumnName": "IdCardType",
- "ColumnComment": "证件类型",
- "DataType": "input",
- "DictTypeCode": "",
- "NetType": "string",
- "RequestUrl": "",
- "RequestType": "",
- "RequestLabel": "",
- "RequestValue": "",
- "ExtJson": "",
- "Status": "DISABLED"
- },
- {
- "Id": "395711906816081",
- "UId": "395711906775109",
- "ColumnName": "IdCardNumber",
- "ColumnComment": "证件号码",
- "DataType": "input",
- "DictTypeCode": "",
- "NetType": "string",
- "RequestUrl": "",
- "RequestType": "",
- "RequestLabel": "",
- "RequestValue": "",
- "ExtJson": "",
- "Status": "DISABLED"
- },
- {
- "Id": "395711906816082",
- "UId": "395711906775109",
- "ColumnName": "CultureLevel",
- "ColumnComment": "文化程度",
- "DataType": "input",
- "DictTypeCode": "",
- "NetType": "string",
- "RequestUrl": "",
- "RequestType": "",
- "RequestLabel": "",
- "RequestValue": "",
- "ExtJson": "",
- "Status": "DISABLED"
- },
- {
- "Id": "395711906816083",
- "UId": "395711906775109",
- "ColumnName": "PoliticalOutlook",
- "ColumnComment": "政治面貌",
- "DataType": "input",
- "DictTypeCode": "",
- "NetType": "string",
- "RequestUrl": "",
- "RequestType": "",
- "RequestLabel": "",
- "RequestValue": "",
- "ExtJson": "",
- "Status": "DISABLED"
- },
- {
- "Id": "395711906816084",
- "UId": "395711906775109",
- "ColumnName": "College",
- "ColumnComment": "毕业院校",
- "DataType": "input",
- "DictTypeCode": "",
- "NetType": "string",
- "RequestUrl": "",
- "RequestType": "",
- "RequestLabel": "",
- "RequestValue": "",
- "ExtJson": "",
- "Status": "DISABLED"
- },
- {
- "Id": "395711906816085",
- "UId": "395711906775109",
- "ColumnName": "Education",
- "ColumnComment": "学历",
- "DataType": "input",
- "DictTypeCode": "",
- "NetType": "string",
- "RequestUrl": "",
- "RequestType": "",
- "RequestLabel": "",
- "RequestValue": "",
- "ExtJson": "",
- "Status": "DISABLED"
- },
- {
- "Id": "395711906816086",
- "UId": "395711906775109",
- "ColumnName": "EduLength",
- "ColumnComment": "学制",
- "DataType": "input",
- "DictTypeCode": "",
- "NetType": "string",
- "RequestUrl": "",
- "RequestType": "",
- "RequestLabel": "",
- "RequestValue": "",
- "ExtJson": "",
- "Status": "DISABLED"
- },
- {
- "Id": "395711906816087",
- "UId": "395711906775109",
- "ColumnName": "Degree",
- "ColumnComment": "学位",
- "DataType": "input",
- "DictTypeCode": "",
- "NetType": "string",
- "RequestUrl": "",
- "RequestType": "",
- "RequestLabel": "",
- "RequestValue": "",
- "ExtJson": "",
- "Status": "DISABLED"
- },
- {
- "Id": "395711906816088",
- "UId": "395711906775109",
- "ColumnName": "Phone",
- "ColumnComment": "手机",
- "DataType": "input",
- "DictTypeCode": "",
- "NetType": "string",
- "RequestUrl": "",
- "RequestType": "",
- "RequestLabel": "",
- "RequestValue": "",
- "ExtJson": "",
- "Status": "DISABLED"
- },
- {
- "Id": "395711906816089",
- "UId": "395711906775109",
- "ColumnName": "Email",
- "ColumnComment": "邮箱",
- "DataType": "input",
- "DictTypeCode": "",
- "NetType": "string",
- "RequestUrl": "",
- "RequestType": "",
- "RequestLabel": "",
- "RequestValue": "",
- "ExtJson": "",
- "Status": "DISABLED"
- },
- {
- "Id": "395711906816090",
- "UId": "395711906775109",
- "ColumnName": "HomeTel",
- "ColumnComment": "家庭电话",
- "DataType": "input",
- "DictTypeCode": "",
- "NetType": "string",
- "RequestUrl": "",
- "RequestType": "",
- "RequestLabel": "",
- "RequestValue": "",
- "ExtJson": "",
- "Status": "DISABLED"
- },
- {
- "Id": "395711906816091",
- "UId": "395711906775109",
- "ColumnName": "OfficeTel",
- "ColumnComment": "办公电话",
- "DataType": "input",
- "DictTypeCode": "",
- "NetType": "string",
- "RequestUrl": "",
- "RequestType": "",
- "RequestLabel": "",
- "RequestValue": "",
- "ExtJson": "",
- "Status": "DISABLED"
- },
- {
- "Id": "395711906816092",
- "UId": "395711906775109",
- "ColumnName": "EmergencyPhone",
- "ColumnComment": "紧急联系人电话",
- "DataType": "input",
- "DictTypeCode": "",
- "NetType": "string",
- "RequestUrl": "",
- "RequestType": "",
- "RequestLabel": "",
- "RequestValue": "",
- "ExtJson": "",
- "Status": "DISABLED"
- },
- {
- "Id": "395711906816093",
- "UId": "395711906775109",
- "ColumnName": "EmergencyAddress",
- "ColumnComment": "紧急联系人地址",
- "DataType": "input",
- "DictTypeCode": "",
- "NetType": "string",
- "RequestUrl": "",
- "RequestType": "",
- "RequestLabel": "",
- "RequestValue": "",
- "ExtJson": "",
- "Status": "DISABLED"
- },
- {
- "Id": "395711906816094",
- "UId": "395711906775109",
- "ColumnName": "EmpNo",
- "ColumnComment": "员工编号",
- "DataType": "input",
- "DictTypeCode": "",
- "NetType": "string",
- "RequestUrl": "",
- "RequestType": "",
- "RequestLabel": "",
- "RequestValue": "",
- "ExtJson": "",
- "Status": "DISABLED"
- },
- {
- "Id": "395711906816095",
- "UId": "395711906775109",
- "ColumnName": "EntryDate",
- "ColumnComment": "入职日期",
- "DataType": "input",
- "DictTypeCode": "",
- "NetType": "string",
- "RequestUrl": "",
- "RequestType": "",
- "RequestLabel": "",
- "RequestValue": "",
- "ExtJson": "",
- "Status": "DISABLED"
- },
- {
- "Id": "395711906816096",
- "UId": "395711906775109",
- "ColumnName": "OrgId",
- "ColumnComment": "机构id",
- "DataType": "input",
- "DictTypeCode": "",
- "NetType": "long",
- "RequestUrl": "",
- "RequestType": "",
- "RequestLabel": "",
- "RequestValue": "",
- "ExtJson": "",
- "Status": "DISABLED"
- },
- {
- "Id": "395711906816097",
- "UId": "395711906775109",
- "ColumnName": "PositionId",
- "ColumnComment": "职位id",
- "DataType": "input",
- "DictTypeCode": "",
- "NetType": "long",
- "RequestUrl": "",
- "RequestType": "",
- "RequestLabel": "",
- "RequestValue": "",
- "ExtJson": "",
- "Status": "DISABLED"
- },
- {
- "Id": "395711906816098",
- "UId": "395711906775109",
- "ColumnName": "PositionLevel",
- "ColumnComment": "职级",
- "DataType": "input",
- "DictTypeCode": "",
- "NetType": "string",
- "RequestUrl": "",
- "RequestType": "",
- "RequestLabel": "",
- "RequestValue": "",
- "ExtJson": "",
- "Status": "DISABLED"
- },
- {
- "Id": "395711906816099",
- "UId": "395711906775109",
- "ColumnName": "DirectorId",
- "ColumnComment": "主管id",
- "DataType": "input",
- "DictTypeCode": "",
- "NetType": "long",
- "RequestUrl": "",
- "RequestType": "",
- "RequestLabel": "",
- "RequestValue": "",
- "ExtJson": "",
- "Status": "DISABLED"
- },
- {
- "Id": "395711906816100",
- "UId": "395711906775109",
- "ColumnName": "PositionJson",
- "ColumnComment": "兼任信息",
- "DataType": "input",
- "DictTypeCode": "",
- "NetType": "string",
- "RequestUrl": "",
- "RequestType": "",
- "RequestLabel": "",
- "RequestValue": "",
- "ExtJson": "",
- "Status": "DISABLED"
- },
- {
- "Id": "395711906816101",
- "UId": "395711906775109",
- "ColumnName": "LastLoginIp",
- "ColumnComment": "上次登录ip",
- "DataType": "input",
- "DictTypeCode": "",
- "NetType": "string",
- "RequestUrl": "",
- "RequestType": "",
- "RequestLabel": "",
- "RequestValue": "",
- "ExtJson": "",
- "Status": "DISABLED"
- },
- {
- "Id": "395711906816102",
- "UId": "395711906775109",
- "ColumnName": "LastLoginAddress",
- "ColumnComment": "上次登录地点",
- "DataType": "input",
- "DictTypeCode": "",
- "NetType": "string",
- "RequestUrl": "",
- "RequestType": "",
- "RequestLabel": "",
- "RequestValue": "",
- "ExtJson": "",
- "Status": "DISABLED"
- },
- {
- "Id": "395711906816103",
- "UId": "395711906775109",
- "ColumnName": "LastLoginTime",
- "ColumnComment": "上次登录时间",
- "DataType": "datepicker",
- "DictTypeCode": "",
- "NetType": "DateTime",
- "RequestUrl": "",
- "RequestType": "",
- "RequestLabel": "",
- "RequestValue": "",
- "ExtJson": "",
- "Status": "DISABLED"
- },
- {
- "Id": "395711906816104",
- "UId": "395711906775109",
- "ColumnName": "LastLoginDevice",
- "ColumnComment": "上次登录设备",
- "DataType": "input",
- "DictTypeCode": "",
- "NetType": "string",
- "RequestUrl": "",
- "RequestType": "",
- "RequestLabel": "",
- "RequestValue": "",
- "ExtJson": "",
- "Status": "DISABLED"
- },
- {
- "Id": "395711906816105",
- "UId": "395711906775109",
- "ColumnName": "LatestLoginIp",
- "ColumnComment": "最新登录ip",
- "DataType": "input",
- "DictTypeCode": "",
- "NetType": "string",
- "RequestUrl": "",
- "RequestType": "",
- "RequestLabel": "",
- "RequestValue": "",
- "ExtJson": "",
- "Status": "DISABLED"
- },
- {
- "Id": "395711906816106",
- "UId": "395711906775109",
- "ColumnName": "LatestLoginAddress",
- "ColumnComment": "最新登录地点",
- "DataType": "input",
- "DictTypeCode": "",
- "NetType": "string",
- "RequestUrl": "",
- "RequestType": "",
- "RequestLabel": "",
- "RequestValue": "",
- "ExtJson": "",
- "Status": "DISABLED"
- },
- {
- "Id": "395711906816107",
- "UId": "395711906775109",
- "ColumnName": "LatestLoginTime",
- "ColumnComment": "最新登录时间",
- "DataType": "datepicker",
- "DictTypeCode": "",
- "NetType": "DateTime",
- "RequestUrl": "",
- "RequestType": "",
- "RequestLabel": "",
- "RequestValue": "",
- "ExtJson": "",
- "Status": "DISABLED"
- },
- {
- "Id": "395711906816108",
- "UId": "395711906775109",
- "ColumnName": "LatestLoginDevice",
- "ColumnComment": "最新登录设备",
- "DataType": "input",
- "DictTypeCode": "",
- "NetType": "string",
- "RequestUrl": "",
- "RequestType": "",
- "RequestLabel": "",
- "RequestValue": "",
- "ExtJson": "",
- "Status": "DISABLED"
- },
- {
- "Id": "395711906816109",
- "UId": "395711906775109",
- "ColumnName": "UserStatus",
- "ColumnComment": "用户状态",
- "DataType": "switch",
- "DictTypeCode": "",
- "NetType": "string",
- "RequestUrl": "",
- "RequestType": "",
- "RequestLabel": "",
- "RequestValue": "",
- "ExtJson": "",
- "Status": "DISABLED"
- },
- {
- "Id": "395711906816110",
- "UId": "395711906775109",
- "ColumnName": "SortCode",
- "ColumnComment": "排序码",
- "DataType": "input",
- "DictTypeCode": "",
- "NetType": "int",
- "RequestUrl": "",
- "RequestType": "",
- "RequestLabel": "",
- "RequestValue": "",
- "ExtJson": "",
- "Status": "ENABLE"
- },
- {
- "Id": "395711906816111",
- "UId": "395711906775109",
- "ColumnName": "NativePlace",
- "ColumnComment": "籍贯",
- "DataType": "input",
- "DictTypeCode": "",
- "NetType": "string",
- "RequestUrl": "",
- "RequestType": "",
- "RequestLabel": "",
- "RequestValue": "",
- "ExtJson": "",
- "Status": "DISABLED"
- },
- {
- "Id": "395711906816112",
- "UId": "395711906775109",
- "ColumnName": "EmergencyContact",
- "ColumnComment": "紧急联系人",
- "DataType": "input",
- "DictTypeCode": "",
- "NetType": "string",
- "RequestUrl": "",
- "RequestType": "",
- "RequestLabel": "",
- "RequestValue": "",
- "ExtJson": "",
- "Status": "DISABLED"
- }
- ]
-}
\ No newline at end of file
diff --git a/api/SimpleAdmin/SimpleAdmin.System/SeedData/Json/seed_dev_config.json b/api/SimpleAdmin/SimpleAdmin.System/SeedData/Json/seed_sys_config.json
similarity index 90%
rename from api/SimpleAdmin/SimpleAdmin.System/SeedData/Json/seed_dev_config.json
rename to api/SimpleAdmin/SimpleAdmin.System/SeedData/Json/seed_sys_config.json
index 2cd6580e90ce77691f42cf09d686e5b8db18e5a4..85ed46a5fa5e1b53798b0d140989c6958a1a95ac 100644
--- a/api/SimpleAdmin/SimpleAdmin.System/SeedData/Json/seed_dev_config.json
+++ b/api/SimpleAdmin/SimpleAdmin.System/SeedData/Json/seed_sys_config.json
@@ -1,36 +1,106 @@
{
"RECORDS": [
{
- "Id": "252875263003710",
- "ConfigKey": "SYS_DEFAULT_DESCRRIPTION",
- "ConfigValue": "🪶SimpleAdmin是一个小而美的通用业务型后台管理系统,专为解决开发过程中的痛点难点而生。前端基于小诺2.0版本二次开发,采用Vue3+Vite+Vuex+JS,并在此基础上增加更人性化功能,后端基于.NET6/7+Furion,ORM采用Sqlsugar+单例模式,插件式开发。采用RBAC+多机构的权限管理模式,实现全网最灵活的接口级别数据权限控制,集成国密加解密,导入导出、导入导出、批量修改等常用插件。后端代码注释覆盖率>90%,并配备超牛皮的代码生成器和超详细的手摸手教学文档,非常适合二次开发。将日常开发中的业务场景和框架紧密结合,并坚持以人为本,以业务为中心,做到开箱即用,代码简洁、易扩展,注释详细,文档齐全,让你的开发少走弯路。",
+ "Id": "252875233003720",
+ "ConfigKey": "SYS_FOOTER_LINKS",
+ "ConfigValue": "[{\"name\":\"苏ICP备2023040827号\",\"url\":\"https://beian.miit.gov.cn/\",\"sortCode\":1}]",
+ "Category": "SYS_BASE",
+ "Remark": "底部超链接",
+ "SortCode": "1",
+ "CreateTime": "2024-1-24 10:32:12.58",
+ "UpdateTime": "2024-7-23 09:09:40.207",
+ "CreateUserId": "",
+ "UpdateUserId": "212725263002001",
+ "CreateUser": "",
+ "UpdateUser": "superAdmin",
+ "IsDelete": "0",
+ "ExtJson": "",
+ "Status": ""
+ },
+ {
+ "Id": "252875262003737",
+ "ConfigKey": "SYS_TENANT_OPTIONS",
+ "ConfigValue": "CHOSE",
"Category": "SYS_BASE",
- "Remark": "系统描述",
+ "Remark": "多租户配置",
+ "SortCode": "1",
+ "CreateTime": "2024-1-24 10:32:12.587",
+ "UpdateTime": "2024-7-23 09:09:40.207",
+ "CreateUserId": "",
+ "UpdateUserId": "212725263002001",
+ "CreateUser": "",
+ "UpdateUser": "superAdmin",
+ "IsDelete": "0",
+ "ExtJson": "",
+ "Status": ""
+ },
+ {
+ "Id": "252875263002722",
+ "ConfigKey": "SYS_ICO",
+ "ConfigValue": "data:image/x-icon;base64,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",
+ "Category": "SYS_BASE",
+ "Remark": "系统ICO文件",
"SortCode": "1",
"CreateTime": "",
- "UpdateTime": "2023-6-6 09:22:59.433",
+ "UpdateTime": "2024-7-23 09:09:40.207",
"CreateUserId": "",
"UpdateUserId": "212725263002001",
+ "CreateUser": "",
+ "UpdateUser": "superAdmin",
"IsDelete": "0",
"ExtJson": "",
+ "Status": ""
+ },
+ {
+ "Id": "252875263002737",
+ "ConfigKey": "SYS_WEB_STATUS",
+ "ConfigValue": "ENABLE",
+ "Category": "SYS_BASE",
+ "Remark": "网站开启访问",
+ "SortCode": "1",
+ "CreateTime": "2024-1-24 10:32:12.587",
+ "UpdateTime": "2024-7-23 09:09:40.207",
+ "CreateUserId": "",
+ "UpdateUserId": "212725263002001",
"CreateUser": "",
- "UpdateUser": "superAdmin"
+ "UpdateUser": "superAdmin",
+ "IsDelete": "0",
+ "ExtJson": "",
+ "Status": ""
+ },
+ {
+ "Id": "252875263003710",
+ "ConfigKey": "SYS_WEB_CLOSE_PROMPT",
+ "ConfigValue": "网站维护中,暂时无法访问!本网站正在进行系统维护和技术升级,网站暂时无法访问,敬请谅解!",
+ "Category": "SYS_BASE",
+ "Remark": "网站关闭提示",
+ "SortCode": "1",
+ "CreateTime": "",
+ "UpdateTime": "2024-7-23 09:09:40.207",
+ "CreateUserId": "",
+ "UpdateUserId": "212725263002001",
+ "CreateUser": "",
+ "UpdateUser": "superAdmin",
+ "IsDelete": "0",
+ "ExtJson": "",
+ "Status": ""
},
{
"Id": "252875263003720",
"ConfigKey": "SYS_DEFAULT_WORKBENCH_DATA",
- "ConfigValue": "{\"shortcut\":[{\"id\":212725263003722,\"title\":\"系统首页\",\"icon\":\"home-outlined\",\"path\":\"/index\"},{\"id\":212725263003723,\"title\":\"个人中心\",\"icon\":\"appstore-outlined\",\"path\":\"/usercenter\"}]}",
+ "ConfigValue": "{\"shortcut\":[212725263003723,212725263003722]}",
"Category": "SYS_BASE",
"Remark": "系统默认工作台数据",
"SortCode": "1",
"CreateTime": "",
- "UpdateTime": "2023-6-6 09:22:59.433",
+ "UpdateTime": "2024-7-23 09:09:40.207",
"CreateUserId": "",
"UpdateUserId": "212725263002001",
+ "CreateUser": "",
+ "UpdateUser": "superAdmin",
"IsDelete": "0",
"ExtJson": "",
- "CreateUser": "",
- "UpdateUser": "superAdmin"
+ "Status": ""
},
{
"Id": "252875263003721",
@@ -40,13 +110,14 @@
"Remark": "系统LOGO",
"SortCode": "1",
"CreateTime": "",
- "UpdateTime": "2023-6-6 09:22:59.433",
+ "UpdateTime": "2024-7-23 09:09:40.207",
"CreateUserId": "",
"UpdateUserId": "212725263002001",
+ "CreateUser": "",
+ "UpdateUser": "superAdmin",
"IsDelete": "0",
"ExtJson": "",
- "CreateUser": "",
- "UpdateUser": "superAdmin"
+ "Status": ""
},
{
"Id": "252875263003722",
@@ -56,29 +127,31 @@
"Remark": "系统名称",
"SortCode": "1",
"CreateTime": "",
- "UpdateTime": "2023-6-6 09:22:59.433",
+ "UpdateTime": "2024-7-23 09:09:40.207",
"CreateUserId": "",
"UpdateUserId": "212725263002001",
+ "CreateUser": "",
+ "UpdateUser": "superAdmin",
"IsDelete": "0",
"ExtJson": "",
- "CreateUser": "",
- "UpdateUser": "superAdmin"
+ "Status": ""
},
{
"Id": "252875263003723",
"ConfigKey": "SYS_VERSION",
- "ConfigValue": "V2.1.0",
+ "ConfigValue": "V3.0.0",
"Category": "SYS_BASE",
"Remark": "系统版本",
"SortCode": "1",
"CreateTime": "",
- "UpdateTime": "2023-6-6 09:22:59.433",
+ "UpdateTime": "2024-7-23 09:09:40.207",
"CreateUserId": "",
"UpdateUserId": "212725263002001",
+ "CreateUser": "",
+ "UpdateUser": "superAdmin",
"IsDelete": "0",
"ExtJson": "",
- "CreateUser": "",
- "UpdateUser": "superAdmin"
+ "Status": ""
},
{
"Id": "252875263003724",
@@ -88,29 +161,31 @@
"Remark": "系统版权",
"SortCode": "1",
"CreateTime": "",
- "UpdateTime": "2023-6-6 09:22:59.433",
+ "UpdateTime": "2024-7-23 09:09:40.207",
"CreateUserId": "",
"UpdateUserId": "212725263002001",
+ "CreateUser": "",
+ "UpdateUser": "superAdmin",
"IsDelete": "0",
"ExtJson": "",
- "CreateUser": "",
- "UpdateUser": "superAdmin"
+ "Status": ""
},
{
"Id": "252875263003725",
"ConfigKey": "SYS_COPYRIGHT_URL",
- "ConfigValue": "https://gitee.com/zxzyjs/SimpleAdmin",
+ "ConfigValue": "https://gitee.com/dotnetmoyu/SimpleAdmin",
"Category": "SYS_BASE",
"Remark": "系统版权链接地址",
"SortCode": "1",
"CreateTime": "",
- "UpdateTime": "2023-6-6 09:22:59.433",
+ "UpdateTime": "2024-7-23 09:09:40.207",
"CreateUserId": "",
"UpdateUserId": "212725263002001",
+ "CreateUser": "",
+ "UpdateUser": "superAdmin",
"IsDelete": "0",
"ExtJson": "",
- "CreateUser": "",
- "UpdateUser": "superAdmin"
+ "Status": ""
},
{
"Id": "252875263003726",
@@ -120,13 +195,14 @@
"Remark": "登录验证码开关",
"SortCode": "1",
"CreateTime": "",
- "UpdateTime": "2023-6-25 09:46:09.427",
+ "UpdateTime": "2024-7-23 09:09:40.207",
"CreateUserId": "",
"UpdateUserId": "212725263002001",
+ "CreateUser": "",
+ "UpdateUser": "superAdmin",
"IsDelete": "0",
"ExtJson": "",
- "CreateUser": "",
- "UpdateUser": "superAdmin"
+ "Status": ""
},
{
"Id": "252875263003727",
@@ -136,13 +212,14 @@
"Remark": "默认文件存储引擎",
"SortCode": "1",
"CreateTime": "",
- "UpdateTime": "2023-6-6 09:22:59.433",
+ "UpdateTime": "2024-7-23 09:09:40.207",
"CreateUserId": "",
"UpdateUserId": "212725263002001",
+ "CreateUser": "",
+ "UpdateUser": "superAdmin",
"IsDelete": "0",
"ExtJson": "",
- "CreateUser": "",
- "UpdateUser": "superAdmin"
+ "Status": ""
},
{
"Id": "252875263003728",
@@ -152,13 +229,14 @@
"Remark": "默认用户密码",
"SortCode": "1",
"CreateTime": "",
- "UpdateTime": "2023-6-25 14:30:34.477",
+ "UpdateTime": "2024-7-23 09:09:40.207",
"CreateUserId": "",
"UpdateUserId": "212725263002001",
+ "CreateUser": "",
+ "UpdateUser": "superAdmin",
"IsDelete": "0",
"ExtJson": "",
- "CreateUser": "",
- "UpdateUser": "superAdmin"
+ "Status": ""
},
{
"Id": "364564896825413",
@@ -168,13 +246,14 @@
"Remark": "单用户登录开关",
"SortCode": "1",
"CreateTime": "2022-12-16 13:58:23.783",
- "UpdateTime": "2023-6-25 09:46:09.427",
+ "UpdateTime": "2024-7-23 09:09:40.207",
"CreateUserId": "212725263002001",
"UpdateUserId": "212725263002001",
+ "CreateUser": "",
+ "UpdateUser": "superAdmin",
"IsDelete": "0",
"ExtJson": "",
- "CreateUser": "",
- "UpdateUser": "superAdmin"
+ "Status": ""
},
{
"Id": "364564896825414",
@@ -184,13 +263,14 @@
"Remark": "MQTT服务端地址",
"SortCode": "1",
"CreateTime": "",
- "UpdateTime": "2022-12-26 11:03:32.013",
+ "UpdateTime": "2024-11-7 14:39:38.423",
"CreateUserId": "",
"UpdateUserId": "212725263002001",
+ "CreateUser": "",
+ "UpdateUser": "superAdmin",
"IsDelete": "0",
"ExtJson": "",
- "CreateUser": "",
- "UpdateUser": ""
+ "Status": ""
},
{
"Id": "364564896825415",
@@ -200,13 +280,14 @@
"Remark": "MQTT用户名",
"SortCode": "1",
"CreateTime": "",
- "UpdateTime": "2022-12-26 11:03:32.013",
+ "UpdateTime": "2024-11-7 14:39:38.42",
"CreateUserId": "",
"UpdateUserId": "212725263002001",
+ "CreateUser": "",
+ "UpdateUser": "superAdmin",
"IsDelete": "0",
"ExtJson": "",
- "CreateUser": "",
- "UpdateUser": ""
+ "Status": ""
},
{
"Id": "364564896825416",
@@ -216,13 +297,14 @@
"Remark": "MQTT密码",
"SortCode": "1",
"CreateTime": "",
- "UpdateTime": "2022-12-26 11:03:32.013",
+ "UpdateTime": "2024-11-7 14:39:38.42",
"CreateUserId": "",
"UpdateUserId": "212725263002001",
+ "CreateUser": "",
+ "UpdateUser": "superAdmin",
"IsDelete": "0",
"ExtJson": "",
- "CreateUser": "",
- "UpdateUser": ""
+ "Status": ""
},
{
"Id": "364564896825417",
@@ -232,13 +314,14 @@
"Remark": "本地文件Windows存储位置",
"SortCode": "1",
"CreateTime": "",
- "UpdateTime": "",
+ "UpdateTime": "2024-7-23 09:09:40.207",
"CreateUserId": "",
"UpdateUserId": "",
+ "CreateUser": "",
+ "UpdateUser": "",
"IsDelete": "0",
"ExtJson": "",
- "CreateUser": "",
- "UpdateUser": ""
+ "Status": ""
},
{
"Id": "364564896825418",
@@ -248,13 +331,14 @@
"Remark": "本地文件Linux存储位置",
"SortCode": "1",
"CreateTime": "",
- "UpdateTime": "",
+ "UpdateTime": "2024-7-23 09:09:40.207",
"CreateUserId": "",
"UpdateUserId": "",
+ "CreateUser": "",
+ "UpdateUser": "",
"IsDelete": "0",
"ExtJson": "",
- "CreateUser": "",
- "UpdateUser": ""
+ "Status": ""
},
{
"Id": "364564896825419",
@@ -264,13 +348,14 @@
"Remark": "MINIO文件AccessKey",
"SortCode": "1",
"CreateTime": "",
- "UpdateTime": "",
+ "UpdateTime": "2024-7-23 09:09:40.207",
"CreateUserId": "",
"UpdateUserId": "",
+ "CreateUser": "",
+ "UpdateUser": "",
"IsDelete": "0",
"ExtJson": "",
- "CreateUser": "",
- "UpdateUser": ""
+ "Status": ""
},
{
"Id": "364564896825420",
@@ -280,13 +365,14 @@
"Remark": "MINIO文件SecetKey",
"SortCode": "1",
"CreateTime": "",
- "UpdateTime": "",
+ "UpdateTime": "2024-7-23 09:09:40.207",
"CreateUserId": "",
"UpdateUserId": "",
+ "CreateUser": "",
+ "UpdateUser": "",
"IsDelete": "0",
"ExtJson": "",
- "CreateUser": "",
- "UpdateUser": ""
+ "Status": ""
},
{
"Id": "364564896825421",
@@ -296,13 +382,14 @@
"Remark": "MINIO文件EndPoint",
"SortCode": "1",
"CreateTime": "",
- "UpdateTime": "",
+ "UpdateTime": "2024-7-23 09:09:40.207",
"CreateUserId": "",
"UpdateUserId": "",
+ "CreateUser": "",
+ "UpdateUser": "",
"IsDelete": "0",
"ExtJson": "",
- "CreateUser": "",
- "UpdateUser": ""
+ "Status": ""
},
{
"Id": "364564896825422",
@@ -312,13 +399,14 @@
"Remark": "MINIO文件默认存储桶",
"SortCode": "1",
"CreateTime": "",
- "UpdateTime": "",
+ "UpdateTime": "2024-7-23 09:09:40.207",
"CreateUserId": "",
"UpdateUserId": "",
+ "CreateUser": "",
+ "UpdateUser": "",
"IsDelete": "0",
"ExtJson": "",
- "CreateUser": "",
- "UpdateUser": ""
+ "Status": ""
},
{
"Id": "432079395405893",
@@ -328,29 +416,31 @@
"Remark": "验证码类型",
"SortCode": "99",
"CreateTime": "2023-6-25 08:35:35.663",
- "UpdateTime": "2023-6-25 09:46:09.427",
+ "UpdateTime": "2024-7-23 09:09:40.207",
"CreateUserId": "212725263002001",
"UpdateUserId": "212725263002001",
+ "CreateUser": "superAdmin",
+ "UpdateUser": "superAdmin",
"IsDelete": "0",
"ExtJson": "",
- "CreateUser": "superAdmin",
- "UpdateUser": "superAdmin"
+ "Status": ""
},
{
"Id": "432079540875333",
"ConfigKey": "LOGIN_ERROR_COUNT",
- "ConfigValue": "5",
+ "ConfigValue": "6",
"Category": "LOGIN_POLICY",
"Remark": "登录错误次数",
"SortCode": "99",
"CreateTime": "2023-6-25 08:36:11.18",
- "UpdateTime": "2023-6-25 09:46:09.427",
+ "UpdateTime": "2024-7-23 09:09:40.207",
"CreateUserId": "212725263002001",
"UpdateUserId": "212725263002001",
+ "CreateUser": "superAdmin",
+ "UpdateUser": "superAdmin",
"IsDelete": "0",
"ExtJson": "",
- "CreateUser": "superAdmin",
- "UpdateUser": "superAdmin"
+ "Status": ""
},
{
"Id": "432079718375493",
@@ -360,13 +450,14 @@
"Remark": "错误重置时间",
"SortCode": "99",
"CreateTime": "2023-6-25 08:36:54.513",
- "UpdateTime": "2023-6-25 09:46:09.427",
+ "UpdateTime": "2024-7-23 09:09:40.207",
"CreateUserId": "212725263002001",
"UpdateUserId": "212725263002001",
+ "CreateUser": "superAdmin",
+ "UpdateUser": "superAdmin",
"IsDelete": "0",
"ExtJson": "",
- "CreateUser": "superAdmin",
- "UpdateUser": "superAdmin"
+ "Status": ""
},
{
"Id": "432079850803269",
@@ -376,45 +467,48 @@
"Remark": "登录错误锁定时长",
"SortCode": "99",
"CreateTime": "2023-6-25 08:37:26.847",
- "UpdateTime": "2023-6-25 09:46:09.427",
+ "UpdateTime": "2024-7-23 09:09:40.207",
"CreateUserId": "212725263002001",
"UpdateUserId": "212725263002001",
+ "CreateUser": "superAdmin",
+ "UpdateUser": "superAdmin",
"IsDelete": "0",
"ExtJson": "",
- "CreateUser": "superAdmin",
- "UpdateUser": "superAdmin"
+ "Status": ""
},
{
"Id": "432110816800837",
"ConfigKey": "PWD_REMIND",
- "ConfigValue": "true",
+ "ConfigValue": "false",
"Category": "PWD_POLICY",
"Remark": "密码定期提醒更新",
"SortCode": "99",
"CreateTime": "2023-6-25 10:43:26.903",
- "UpdateTime": "2023-6-25 14:30:34.477",
+ "UpdateTime": "2024-7-23 09:09:40.207",
"CreateUserId": "212725263002001",
"UpdateUserId": "212725263002001",
+ "CreateUser": "superAdmin",
+ "UpdateUser": "superAdmin",
"IsDelete": "0",
"ExtJson": "",
- "CreateUser": "superAdmin",
- "UpdateUser": "superAdmin"
+ "Status": ""
},
{
"Id": "432110956560453",
"ConfigKey": "PWD_REMIND_DAY",
- "ConfigValue": "30",
+ "ConfigValue": "1",
"Category": "PWD_POLICY",
"Remark": "密码定期提醒更新时间",
"SortCode": "99",
"CreateTime": "2023-6-25 10:44:01.023",
- "UpdateTime": "2023-6-25 14:30:34.477",
+ "UpdateTime": "2024-7-23 09:09:40.207",
"CreateUserId": "212725263002001",
"UpdateUserId": "212725263002001",
+ "CreateUser": "superAdmin",
+ "UpdateUser": "superAdmin",
"IsDelete": "0",
"ExtJson": "",
- "CreateUser": "superAdmin",
- "UpdateUser": "superAdmin"
+ "Status": ""
},
{
"Id": "432111166894149",
@@ -424,13 +518,14 @@
"Remark": "修改初始密码提醒",
"SortCode": "99",
"CreateTime": "2023-6-25 10:44:52.377",
- "UpdateTime": "2023-6-25 14:30:34.477",
+ "UpdateTime": "2024-7-23 09:09:40.207",
"CreateUserId": "212725263002001",
"UpdateUserId": "212725263002001",
+ "CreateUser": "superAdmin",
+ "UpdateUser": "superAdmin",
"IsDelete": "0",
"ExtJson": "",
- "CreateUser": "superAdmin",
- "UpdateUser": "superAdmin"
+ "Status": ""
},
{
"Id": "432111701160005",
@@ -440,13 +535,14 @@
"Remark": "密码最小长度",
"SortCode": "99",
"CreateTime": "2023-6-25 10:47:02.81",
- "UpdateTime": "2023-6-25 14:30:34.477",
+ "UpdateTime": "2024-7-23 09:09:40.207",
"CreateUserId": "212725263002001",
"UpdateUserId": "212725263002001",
+ "CreateUser": "superAdmin",
+ "UpdateUser": "superAdmin",
"IsDelete": "0",
"ExtJson": "",
- "CreateUser": "superAdmin",
- "UpdateUser": "superAdmin"
+ "Status": ""
},
{
"Id": "432112135159877",
@@ -456,13 +552,14 @@
"Remark": "包含数字",
"SortCode": "99",
"CreateTime": "2023-6-25 10:48:48.77",
- "UpdateTime": "2023-6-25 14:30:34.477",
+ "UpdateTime": "2024-7-23 09:09:40.207",
"CreateUserId": "212725263002001",
"UpdateUserId": "212725263002001",
+ "CreateUser": "superAdmin",
+ "UpdateUser": "superAdmin",
"IsDelete": "0",
"ExtJson": "",
- "CreateUser": "superAdmin",
- "UpdateUser": "superAdmin"
+ "Status": ""
},
{
"Id": "432112321953861",
@@ -472,13 +569,14 @@
"Remark": "包含小写字母",
"SortCode": "99",
"CreateTime": "2023-6-25 10:49:34.373",
- "UpdateTime": "2023-6-25 14:30:34.477",
+ "UpdateTime": "2024-7-23 09:09:40.207",
"CreateUserId": "212725263002001",
"UpdateUserId": "212725263002001",
+ "CreateUser": "superAdmin",
+ "UpdateUser": "superAdmin",
"IsDelete": "0",
"ExtJson": "",
- "CreateUser": "superAdmin",
- "UpdateUser": "superAdmin"
+ "Status": ""
},
{
"Id": "432112380907589",
@@ -488,13 +586,14 @@
"Remark": "包含大写字母",
"SortCode": "99",
"CreateTime": "2023-6-25 10:49:48.767",
- "UpdateTime": "2023-6-25 14:30:34.477",
+ "UpdateTime": "2024-7-23 09:09:40.207",
"CreateUserId": "212725263002001",
"UpdateUserId": "212725263002001",
+ "CreateUser": "superAdmin",
+ "UpdateUser": "superAdmin",
"IsDelete": "0",
"ExtJson": "",
- "CreateUser": "superAdmin",
- "UpdateUser": "superAdmin"
+ "Status": ""
},
{
"Id": "432112495247429",
@@ -504,13 +603,14 @@
"Remark": "包含特殊字符",
"SortCode": "99",
"CreateTime": "2023-6-25 10:50:16.68",
- "UpdateTime": "2023-6-25 14:30:34.477",
+ "UpdateTime": "2024-7-23 09:09:40.207",
"CreateUserId": "212725263002001",
"UpdateUserId": "212725263002001",
+ "CreateUser": "superAdmin",
+ "UpdateUser": "superAdmin",
"IsDelete": "0",
"ExtJson": "",
- "CreateUser": "superAdmin",
- "UpdateUser": "superAdmin"
+ "Status": ""
}
]
}
\ No newline at end of file
diff --git a/api/SimpleAdmin/SimpleAdmin.System/SeedData/Json/seed_dev_dict.json b/api/SimpleAdmin/SimpleAdmin.System/SeedData/Json/seed_sys_dict.json
similarity index 51%
rename from api/SimpleAdmin/SimpleAdmin.System/SeedData/Json/seed_dev_dict.json
rename to api/SimpleAdmin/SimpleAdmin.System/SeedData/Json/seed_sys_dict.json
index b0c5b56e2650d7469fa450711773b2bb12c876ea..a65b6365e022663f610581d7a4c5dc7eccac6667 100644
--- a/api/SimpleAdmin/SimpleAdmin.System/SeedData/Json/seed_dev_dict.json
+++ b/api/SimpleAdmin/SimpleAdmin.System/SeedData/Json/seed_sys_dict.json
@@ -8,11 +8,14 @@
"Category": "FRM",
"SortCode": "1",
"CreateTime": "",
- "UpdateTime": "",
+ "UpdateTime": "2024-7-23 09:09:40.697",
"CreateUserId": "",
"UpdateUserId": "",
+ "CreateUser": "",
+ "UpdateUser": "",
"IsDelete": "0",
- "ExtJson": ""
+ "ExtJson": "",
+ "Status": "ENABLE"
},
{
"Id": "252875263003702",
@@ -22,11 +25,14 @@
"Category": "FRM",
"SortCode": "10",
"CreateTime": "",
- "UpdateTime": "",
+ "UpdateTime": "2024-7-23 09:09:40.697",
"CreateUserId": "",
"UpdateUserId": "",
+ "CreateUser": "",
+ "UpdateUser": "",
"IsDelete": "0",
- "ExtJson": ""
+ "ExtJson": "",
+ "Status": "ENABLE"
},
{
"Id": "252875263003703",
@@ -36,11 +42,14 @@
"Category": "FRM",
"SortCode": "20",
"CreateTime": "",
- "UpdateTime": "",
+ "UpdateTime": "2024-7-23 09:09:40.697",
"CreateUserId": "",
"UpdateUserId": "",
+ "CreateUser": "",
+ "UpdateUser": "",
"IsDelete": "0",
- "ExtJson": ""
+ "ExtJson": "",
+ "Status": "ENABLE"
},
{
"Id": "252875263003704",
@@ -50,11 +59,14 @@
"Category": "FRM",
"SortCode": "2",
"CreateTime": "",
- "UpdateTime": "",
+ "UpdateTime": "2024-7-23 09:09:40.697",
"CreateUserId": "",
"UpdateUserId": "",
+ "CreateUser": "",
+ "UpdateUser": "",
"IsDelete": "0",
- "ExtJson": ""
+ "ExtJson": "",
+ "Status": "ENABLE"
},
{
"Id": "252875263003705",
@@ -64,11 +76,14 @@
"Category": "FRM",
"SortCode": "10",
"CreateTime": "",
- "UpdateTime": "",
+ "UpdateTime": "2024-7-23 09:09:40.697",
"CreateUserId": "",
"UpdateUserId": "",
+ "CreateUser": "",
+ "UpdateUser": "",
"IsDelete": "0",
- "ExtJson": ""
+ "ExtJson": "",
+ "Status": "ENABLE"
},
{
"Id": "252875263003706",
@@ -78,25 +93,31 @@
"Category": "FRM",
"SortCode": "20",
"CreateTime": "",
- "UpdateTime": "",
+ "UpdateTime": "2024-7-23 09:09:40.697",
"CreateUserId": "",
"UpdateUserId": "",
+ "CreateUser": "",
+ "UpdateUser": "",
"IsDelete": "0",
- "ExtJson": ""
+ "ExtJson": "",
+ "Status": "ENABLE"
},
{
"Id": "252875263003707",
"ParentId": "252875263003704",
- "DictLabel": "内链",
- "DictValue": "IFRAME",
+ "DictLabel": "子页",
+ "DictValue": "SUBSET",
"Category": "FRM",
"SortCode": "30",
"CreateTime": "",
- "UpdateTime": "",
+ "UpdateTime": "2024-7-23 09:09:40.697",
"CreateUserId": "",
"UpdateUserId": "",
+ "CreateUser": "",
+ "UpdateUser": "",
"IsDelete": "0",
- "ExtJson": ""
+ "ExtJson": "",
+ "Status": "ENABLE"
},
{
"Id": "252875263003708",
@@ -106,11 +127,14 @@
"Category": "FRM",
"SortCode": "40",
"CreateTime": "",
- "UpdateTime": "",
+ "UpdateTime": "2024-7-23 09:09:40.697",
"CreateUserId": "",
"UpdateUserId": "",
+ "CreateUser": "",
+ "UpdateUser": "",
"IsDelete": "0",
- "ExtJson": ""
+ "ExtJson": "",
+ "Status": "ENABLE"
},
{
"Id": "252875263003711",
@@ -120,11 +144,14 @@
"Category": "FRM",
"SortCode": "3",
"CreateTime": "",
- "UpdateTime": "",
+ "UpdateTime": "2024-7-23 09:09:40.697",
"CreateUserId": "",
"UpdateUserId": "",
+ "CreateUser": "",
+ "UpdateUser": "",
"IsDelete": "0",
- "ExtJson": ""
+ "ExtJson": "",
+ "Status": "ENABLE"
},
{
"Id": "252875263003712",
@@ -134,11 +161,14 @@
"Category": "FRM",
"SortCode": "10",
"CreateTime": "",
- "UpdateTime": "",
+ "UpdateTime": "2024-7-23 09:09:40.697",
"CreateUserId": "",
"UpdateUserId": "",
+ "CreateUser": "",
+ "UpdateUser": "",
"IsDelete": "0",
- "ExtJson": ""
+ "ExtJson": "",
+ "Status": "ENABLE"
},
{
"Id": "252875263003713",
@@ -148,11 +178,14 @@
"Category": "FRM",
"SortCode": "20",
"CreateTime": "",
- "UpdateTime": "",
+ "UpdateTime": "2024-7-23 09:09:40.697",
"CreateUserId": "",
"UpdateUserId": "",
+ "CreateUser": "",
+ "UpdateUser": "",
"IsDelete": "0",
- "ExtJson": ""
+ "ExtJson": "",
+ "Status": "ENABLE"
},
{
"Id": "252875263003714",
@@ -162,11 +195,14 @@
"Category": "FRM",
"SortCode": "4",
"CreateTime": "",
- "UpdateTime": "",
+ "UpdateTime": "2024-7-23 09:09:40.697",
"CreateUserId": "",
"UpdateUserId": "",
+ "CreateUser": "",
+ "UpdateUser": "",
"IsDelete": "0",
- "ExtJson": ""
+ "ExtJson": "",
+ "Status": "ENABLE"
},
{
"Id": "252875263003715",
@@ -176,11 +212,14 @@
"Category": "FRM",
"SortCode": "10",
"CreateTime": "",
- "UpdateTime": "",
+ "UpdateTime": "2024-7-23 09:09:40.697",
"CreateUserId": "",
"UpdateUserId": "",
+ "CreateUser": "",
+ "UpdateUser": "",
"IsDelete": "0",
- "ExtJson": ""
+ "ExtJson": "",
+ "Status": "ENABLE"
},
{
"Id": "252875263003716",
@@ -190,11 +229,14 @@
"Category": "FRM",
"SortCode": "20",
"CreateTime": "",
- "UpdateTime": "",
+ "UpdateTime": "2024-7-23 09:09:40.697",
"CreateUserId": "",
"UpdateUserId": "",
+ "CreateUser": "",
+ "UpdateUser": "",
"IsDelete": "0",
- "ExtJson": ""
+ "ExtJson": "",
+ "Status": "ENABLE"
},
{
"Id": "252875263003717",
@@ -204,11 +246,14 @@
"Category": "FRM",
"SortCode": "5",
"CreateTime": "",
- "UpdateTime": "",
+ "UpdateTime": "2024-7-23 09:09:40.697",
"CreateUserId": "",
"UpdateUserId": "",
+ "CreateUser": "",
+ "UpdateUser": "",
"IsDelete": "0",
- "ExtJson": ""
+ "ExtJson": "",
+ "Status": "ENABLE"
},
{
"Id": "252875263003718",
@@ -218,11 +263,14 @@
"Category": "FRM",
"SortCode": "10",
"CreateTime": "",
- "UpdateTime": "",
+ "UpdateTime": "2024-7-23 09:09:40.697",
"CreateUserId": "",
"UpdateUserId": "",
+ "CreateUser": "",
+ "UpdateUser": "",
"IsDelete": "0",
- "ExtJson": ""
+ "ExtJson": "",
+ "Status": "ENABLE"
},
{
"Id": "252875263003719",
@@ -232,11 +280,14 @@
"Category": "FRM",
"SortCode": "20",
"CreateTime": "",
- "UpdateTime": "",
+ "UpdateTime": "2024-7-23 09:09:40.697",
"CreateUserId": "",
"UpdateUserId": "",
+ "CreateUser": "",
+ "UpdateUser": "",
"IsDelete": "0",
- "ExtJson": ""
+ "ExtJson": "",
+ "Status": "ENABLE"
},
{
"Id": "252875263003720",
@@ -246,11 +297,14 @@
"Category": "FRM",
"SortCode": "6",
"CreateTime": "",
- "UpdateTime": "",
+ "UpdateTime": "2024-7-23 09:09:40.697",
"CreateUserId": "",
"UpdateUserId": "",
+ "CreateUser": "",
+ "UpdateUser": "",
"IsDelete": "0",
- "ExtJson": ""
+ "ExtJson": "",
+ "Status": "ENABLE"
},
{
"Id": "252875263003721",
@@ -260,11 +314,14 @@
"Category": "FRM",
"SortCode": "10",
"CreateTime": "",
- "UpdateTime": "",
+ "UpdateTime": "2024-7-23 09:09:40.697",
"CreateUserId": "",
"UpdateUserId": "",
+ "CreateUser": "",
+ "UpdateUser": "",
"IsDelete": "0",
- "ExtJson": ""
+ "ExtJson": "",
+ "Status": "ENABLE"
},
{
"Id": "252875263003722",
@@ -274,11 +331,14 @@
"Category": "FRM",
"SortCode": "20",
"CreateTime": "",
- "UpdateTime": "",
+ "UpdateTime": "2024-7-23 09:09:40.697",
"CreateUserId": "",
"UpdateUserId": "",
+ "CreateUser": "",
+ "UpdateUser": "",
"IsDelete": "0",
- "ExtJson": ""
+ "ExtJson": "",
+ "Status": "ENABLE"
},
{
"Id": "252875263003723",
@@ -288,11 +348,14 @@
"Category": "FRM",
"SortCode": "30",
"CreateTime": "",
- "UpdateTime": "",
+ "UpdateTime": "2024-7-23 09:09:40.697",
"CreateUserId": "",
"UpdateUserId": "",
+ "CreateUser": "",
+ "UpdateUser": "",
"IsDelete": "0",
- "ExtJson": ""
+ "ExtJson": "",
+ "Status": "ENABLE"
},
{
"Id": "252875263003724",
@@ -302,11 +365,14 @@
"Category": "FRM",
"SortCode": "7",
"CreateTime": "",
- "UpdateTime": "",
+ "UpdateTime": "2024-7-23 09:09:40.697",
"CreateUserId": "",
"UpdateUserId": "",
+ "CreateUser": "",
+ "UpdateUser": "",
"IsDelete": "0",
- "ExtJson": ""
+ "ExtJson": "",
+ "Status": "ENABLE"
},
{
"Id": "252875263003725",
@@ -316,11 +382,14 @@
"Category": "FRM",
"SortCode": "10",
"CreateTime": "",
- "UpdateTime": "",
+ "UpdateTime": "2024-7-23 09:09:40.697",
"CreateUserId": "",
"UpdateUserId": "",
+ "CreateUser": "",
+ "UpdateUser": "",
"IsDelete": "0",
- "ExtJson": ""
+ "ExtJson": "",
+ "Status": "ENABLE"
},
{
"Id": "252875263003726",
@@ -330,11 +399,14 @@
"Category": "FRM",
"SortCode": "20",
"CreateTime": "",
- "UpdateTime": "",
+ "UpdateTime": "2024-7-23 09:09:40.697",
"CreateUserId": "",
"UpdateUserId": "",
+ "CreateUser": "",
+ "UpdateUser": "",
"IsDelete": "0",
- "ExtJson": ""
+ "ExtJson": "",
+ "Status": "ENABLE"
},
{
"Id": "252875263003727",
@@ -344,11 +416,14 @@
"Category": "FRM",
"SortCode": "30",
"CreateTime": "",
- "UpdateTime": "",
+ "UpdateTime": "2024-7-23 09:09:40.697",
"CreateUserId": "",
"UpdateUserId": "",
+ "CreateUser": "",
+ "UpdateUser": "",
"IsDelete": "0",
- "ExtJson": ""
+ "ExtJson": "",
+ "Status": "ENABLE"
},
{
"Id": "252875263003728",
@@ -358,11 +433,14 @@
"Category": "FRM",
"SortCode": "40",
"CreateTime": "",
- "UpdateTime": "",
+ "UpdateTime": "2024-7-23 09:09:40.697",
"CreateUserId": "",
"UpdateUserId": "",
+ "CreateUser": "",
+ "UpdateUser": "",
"IsDelete": "0",
- "ExtJson": ""
+ "ExtJson": "",
+ "Status": "ENABLE"
},
{
"Id": "252875263003730",
@@ -372,11 +450,14 @@
"Category": "FRM",
"SortCode": "8",
"CreateTime": "",
- "UpdateTime": "",
+ "UpdateTime": "2024-7-23 09:09:40.697",
"CreateUserId": "",
"UpdateUserId": "",
+ "CreateUser": "",
+ "UpdateUser": "",
"IsDelete": "0",
- "ExtJson": ""
+ "ExtJson": "",
+ "Status": "ENABLE"
},
{
"Id": "252875263003731",
@@ -386,11 +467,14 @@
"Category": "FRM",
"SortCode": "10",
"CreateTime": "",
- "UpdateTime": "",
+ "UpdateTime": "2024-7-23 09:09:40.697",
"CreateUserId": "",
"UpdateUserId": "",
+ "CreateUser": "",
+ "UpdateUser": "",
"IsDelete": "0",
- "ExtJson": ""
+ "ExtJson": "",
+ "Status": "ENABLE"
},
{
"Id": "252875263003732",
@@ -400,11 +484,14 @@
"Category": "FRM",
"SortCode": "20",
"CreateTime": "",
- "UpdateTime": "",
+ "UpdateTime": "2024-7-23 09:09:40.697",
"CreateUserId": "",
"UpdateUserId": "",
+ "CreateUser": "",
+ "UpdateUser": "",
"IsDelete": "0",
- "ExtJson": ""
+ "ExtJson": "",
+ "Status": "ENABLE"
},
{
"Id": "252875263003733",
@@ -414,11 +501,14 @@
"Category": "FRM",
"SortCode": "30",
"CreateTime": "",
- "UpdateTime": "",
+ "UpdateTime": "2024-7-23 09:09:40.697",
"CreateUserId": "",
"UpdateUserId": "",
+ "CreateUser": "",
+ "UpdateUser": "",
"IsDelete": "0",
- "ExtJson": ""
+ "ExtJson": "",
+ "Status": "ENABLE"
},
{
"Id": "252875263003734",
@@ -428,39 +518,48 @@
"Category": "FRM",
"SortCode": "9",
"CreateTime": "",
- "UpdateTime": "",
+ "UpdateTime": "2024-7-23 09:09:40.697",
"CreateUserId": "",
"UpdateUserId": "",
+ "CreateUser": "",
+ "UpdateUser": "",
"IsDelete": "0",
- "ExtJson": ""
+ "ExtJson": "",
+ "Status": "ENABLE"
},
{
"Id": "252875263003735",
"ParentId": "252875263003734",
- "DictLabel": "部门",
+ "DictLabel": "系统",
"DictValue": "FRM",
"Category": "FRM",
"SortCode": "10",
"CreateTime": "",
- "UpdateTime": "",
+ "UpdateTime": "2024-7-23 09:09:40.697",
"CreateUserId": "",
- "UpdateUserId": "",
+ "UpdateUserId": "212725263002001",
+ "CreateUser": "",
+ "UpdateUser": "superAdmin",
"IsDelete": "0",
- "ExtJson": ""
+ "ExtJson": "",
+ "Status": "ENABLE"
},
{
"Id": "252875263003736",
"ParentId": "252875263003734",
- "DictLabel": "公司",
+ "DictLabel": "业务",
"DictValue": "BIZ",
"Category": "FRM",
"SortCode": "20",
"CreateTime": "",
- "UpdateTime": "",
+ "UpdateTime": "2024-7-23 09:09:40.697",
"CreateUserId": "",
- "UpdateUserId": "",
+ "UpdateUserId": "212725263002001",
+ "CreateUser": "",
+ "UpdateUser": "superAdmin",
"IsDelete": "0",
- "ExtJson": ""
+ "ExtJson": "",
+ "Status": "ENABLE"
},
{
"Id": "252875263003737",
@@ -470,11 +569,14 @@
"Category": "FRM",
"SortCode": "10",
"CreateTime": "",
- "UpdateTime": "",
+ "UpdateTime": "2024-7-23 09:09:40.697",
"CreateUserId": "",
"UpdateUserId": "",
+ "CreateUser": "",
+ "UpdateUser": "",
"IsDelete": "0",
- "ExtJson": ""
+ "ExtJson": "",
+ "Status": "ENABLE"
},
{
"Id": "252875263003738",
@@ -484,11 +586,14 @@
"Category": "FRM",
"SortCode": "10",
"CreateTime": "",
- "UpdateTime": "",
+ "UpdateTime": "2024-7-23 09:09:40.697",
"CreateUserId": "",
"UpdateUserId": "",
+ "CreateUser": "",
+ "UpdateUser": "",
"IsDelete": "0",
- "ExtJson": ""
+ "ExtJson": "",
+ "Status": "ENABLE"
},
{
"Id": "252875263003739",
@@ -498,11 +603,14 @@
"Category": "FRM",
"SortCode": "10",
"CreateTime": "",
- "UpdateTime": "",
+ "UpdateTime": "2024-7-23 09:09:40.697",
"CreateUserId": "",
"UpdateUserId": "",
+ "CreateUser": "",
+ "UpdateUser": "",
"IsDelete": "0",
- "ExtJson": ""
+ "ExtJson": "",
+ "Status": "ENABLE"
},
{
"Id": "252875263003741",
@@ -512,11 +620,14 @@
"Category": "FRM",
"SortCode": "11",
"CreateTime": "",
- "UpdateTime": "",
+ "UpdateTime": "2024-7-23 09:09:40.697",
"CreateUserId": "",
"UpdateUserId": "",
+ "CreateUser": "",
+ "UpdateUser": "",
"IsDelete": "0",
- "ExtJson": ""
+ "ExtJson": "",
+ "Status": "ENABLE"
},
{
"Id": "252875263003742",
@@ -526,11 +637,14 @@
"Category": "FRM",
"SortCode": "10",
"CreateTime": "",
- "UpdateTime": "",
+ "UpdateTime": "2024-7-23 09:09:40.697",
"CreateUserId": "",
"UpdateUserId": "",
+ "CreateUser": "",
+ "UpdateUser": "",
"IsDelete": "0",
- "ExtJson": ""
+ "ExtJson": "",
+ "Status": "ENABLE"
},
{
"Id": "252875263003743",
@@ -540,11 +654,14 @@
"Category": "FRM",
"SortCode": "20",
"CreateTime": "",
- "UpdateTime": "",
+ "UpdateTime": "2024-7-23 09:09:40.697",
"CreateUserId": "",
"UpdateUserId": "",
+ "CreateUser": "",
+ "UpdateUser": "",
"IsDelete": "0",
- "ExtJson": ""
+ "ExtJson": "",
+ "Status": "ENABLE"
},
{
"Id": "252875263003744",
@@ -554,11 +671,14 @@
"Category": "FRM",
"SortCode": "12",
"CreateTime": "",
- "UpdateTime": "",
+ "UpdateTime": "2024-7-23 09:09:40.697",
"CreateUserId": "",
"UpdateUserId": "",
+ "CreateUser": "",
+ "UpdateUser": "",
"IsDelete": "0",
- "ExtJson": ""
+ "ExtJson": "",
+ "Status": "ENABLE"
},
{
"Id": "252875263003745",
@@ -568,11 +688,14 @@
"Category": "FRM",
"SortCode": "10",
"CreateTime": "",
- "UpdateTime": "",
+ "UpdateTime": "2024-7-23 09:09:40.697",
"CreateUserId": "",
"UpdateUserId": "",
+ "CreateUser": "",
+ "UpdateUser": "",
"IsDelete": "0",
- "ExtJson": ""
+ "ExtJson": "",
+ "Status": "ENABLE"
},
{
"Id": "252875263003746",
@@ -582,11 +705,14 @@
"Category": "FRM",
"SortCode": "20",
"CreateTime": "",
- "UpdateTime": "",
+ "UpdateTime": "2024-7-23 09:09:40.697",
"CreateUserId": "",
"UpdateUserId": "",
+ "CreateUser": "",
+ "UpdateUser": "",
"IsDelete": "0",
- "ExtJson": ""
+ "ExtJson": "",
+ "Status": "ENABLE"
},
{
"Id": "252875263003747",
@@ -596,11 +722,14 @@
"Category": "FRM",
"SortCode": "30",
"CreateTime": "",
- "UpdateTime": "",
+ "UpdateTime": "2024-7-23 09:09:40.697",
"CreateUserId": "",
"UpdateUserId": "",
+ "CreateUser": "",
+ "UpdateUser": "",
"IsDelete": "0",
- "ExtJson": ""
+ "ExtJson": "",
+ "Status": "ENABLE"
},
{
"Id": "252875263003748",
@@ -610,11 +739,14 @@
"Category": "FRM",
"SortCode": "40",
"CreateTime": "",
- "UpdateTime": "",
+ "UpdateTime": "2024-7-23 09:09:40.697",
"CreateUserId": "",
"UpdateUserId": "",
+ "CreateUser": "",
+ "UpdateUser": "",
"IsDelete": "0",
- "ExtJson": ""
+ "ExtJson": "",
+ "Status": "ENABLE"
},
{
"Id": "252875263003749",
@@ -624,11 +756,14 @@
"Category": "FRM",
"SortCode": "13",
"CreateTime": "",
- "UpdateTime": "",
+ "UpdateTime": "2024-7-23 09:09:40.697",
"CreateUserId": "",
"UpdateUserId": "",
+ "CreateUser": "",
+ "UpdateUser": "",
"IsDelete": "0",
- "ExtJson": ""
+ "ExtJson": "",
+ "Status": "ENABLE"
},
{
"Id": "252875263003750",
@@ -638,11 +773,14 @@
"Category": "FRM",
"SortCode": "10",
"CreateTime": "",
- "UpdateTime": "",
+ "UpdateTime": "2024-7-23 09:09:40.697",
"CreateUserId": "",
"UpdateUserId": "",
+ "CreateUser": "",
+ "UpdateUser": "",
"IsDelete": "0",
- "ExtJson": ""
+ "ExtJson": "",
+ "Status": "ENABLE"
},
{
"Id": "252875263003751",
@@ -652,11 +790,14 @@
"Category": "FRM",
"SortCode": "20",
"CreateTime": "",
- "UpdateTime": "",
+ "UpdateTime": "2024-7-23 09:09:40.697",
"CreateUserId": "",
"UpdateUserId": "",
+ "CreateUser": "",
+ "UpdateUser": "",
"IsDelete": "0",
- "ExtJson": ""
+ "ExtJson": "",
+ "Status": "ENABLE"
},
{
"Id": "252875263003752",
@@ -666,11 +807,14 @@
"Category": "FRM",
"SortCode": "30",
"CreateTime": "",
- "UpdateTime": "",
+ "UpdateTime": "2024-7-23 09:09:40.697",
"CreateUserId": "",
"UpdateUserId": "",
+ "CreateUser": "",
+ "UpdateUser": "",
"IsDelete": "0",
- "ExtJson": ""
+ "ExtJson": "",
+ "Status": "ENABLE"
},
{
"Id": "252875263003753",
@@ -680,11 +824,14 @@
"Category": "FRM",
"SortCode": "40",
"CreateTime": "",
- "UpdateTime": "",
+ "UpdateTime": "2024-7-23 09:09:40.697",
"CreateUserId": "",
"UpdateUserId": "",
+ "CreateUser": "",
+ "UpdateUser": "",
"IsDelete": "0",
- "ExtJson": ""
+ "ExtJson": "",
+ "Status": "ENABLE"
},
{
"Id": "252875263003754",
@@ -694,11 +841,14 @@
"Category": "FRM",
"SortCode": "50",
"CreateTime": "",
- "UpdateTime": "",
+ "UpdateTime": "2024-7-23 09:09:40.697",
"CreateUserId": "",
"UpdateUserId": "",
+ "CreateUser": "",
+ "UpdateUser": "",
"IsDelete": "0",
- "ExtJson": ""
+ "ExtJson": "",
+ "Status": "ENABLE"
},
{
"Id": "252875263003755",
@@ -708,11 +858,14 @@
"Category": "FRM",
"SortCode": "60",
"CreateTime": "",
- "UpdateTime": "",
+ "UpdateTime": "2024-7-23 09:09:40.697",
"CreateUserId": "",
"UpdateUserId": "",
+ "CreateUser": "",
+ "UpdateUser": "",
"IsDelete": "0",
- "ExtJson": ""
+ "ExtJson": "",
+ "Status": "ENABLE"
},
{
"Id": "252875263003756",
@@ -722,11 +875,14 @@
"Category": "FRM",
"SortCode": "70",
"CreateTime": "",
- "UpdateTime": "",
+ "UpdateTime": "2024-7-23 09:09:40.697",
"CreateUserId": "",
"UpdateUserId": "",
+ "CreateUser": "",
+ "UpdateUser": "",
"IsDelete": "0",
- "ExtJson": ""
+ "ExtJson": "",
+ "Status": "ENABLE"
},
{
"Id": "252875263003757",
@@ -736,11 +892,14 @@
"Category": "FRM",
"SortCode": "80",
"CreateTime": "",
- "UpdateTime": "",
+ "UpdateTime": "2024-7-23 09:09:40.697",
"CreateUserId": "",
"UpdateUserId": "",
+ "CreateUser": "",
+ "UpdateUser": "",
"IsDelete": "0",
- "ExtJson": ""
+ "ExtJson": "",
+ "Status": "ENABLE"
},
{
"Id": "252875263003758",
@@ -750,11 +909,14 @@
"Category": "FRM",
"SortCode": "14",
"CreateTime": "",
- "UpdateTime": "",
+ "UpdateTime": "2024-7-23 09:09:40.697",
"CreateUserId": "",
"UpdateUserId": "",
+ "CreateUser": "",
+ "UpdateUser": "",
"IsDelete": "0",
- "ExtJson": ""
+ "ExtJson": "",
+ "Status": "ENABLE"
},
{
"Id": "252875263003759",
@@ -764,11 +926,14 @@
"Category": "FRM",
"SortCode": "10",
"CreateTime": "",
- "UpdateTime": "",
+ "UpdateTime": "2024-7-23 09:09:40.697",
"CreateUserId": "",
"UpdateUserId": "",
+ "CreateUser": "",
+ "UpdateUser": "",
"IsDelete": "0",
- "ExtJson": ""
+ "ExtJson": "",
+ "Status": "ENABLE"
},
{
"Id": "252875263003760",
@@ -778,53 +943,14 @@
"Category": "FRM",
"SortCode": "20",
"CreateTime": "",
- "UpdateTime": "",
- "CreateUserId": "",
- "UpdateUserId": "",
- "IsDelete": "0",
- "ExtJson": ""
- },
- {
- "Id": "252875263003761",
- "ParentId": "0",
- "DictLabel": "定时任务状态",
- "DictValue": "JOB_STATUS",
- "Category": "FRM",
- "SortCode": "15",
- "CreateTime": "",
- "UpdateTime": "",
+ "UpdateTime": "2024-7-23 09:09:40.697",
"CreateUserId": "",
"UpdateUserId": "",
+ "CreateUser": "",
+ "UpdateUser": "",
"IsDelete": "0",
- "ExtJson": ""
- },
- {
- "Id": "252875263003762",
- "ParentId": "252875263003761",
- "DictLabel": "运行",
- "DictValue": "RUNNING",
- "Category": "FRM",
- "SortCode": "10",
- "CreateTime": "",
- "UpdateTime": "",
- "CreateUserId": "",
- "UpdateUserId": "",
- "IsDelete": "0",
- "ExtJson": ""
- },
- {
- "Id": "252875263003763",
- "ParentId": "252875263003761",
- "DictLabel": "停止",
- "DictValue": "STOPPED",
- "Category": "FRM",
- "SortCode": "20",
- "CreateTime": "",
- "UpdateTime": "",
- "CreateUserId": "",
- "UpdateUserId": "",
- "IsDelete": "0",
- "ExtJson": ""
+ "ExtJson": "",
+ "Status": "ENABLE"
},
{
"Id": "252875263003764",
@@ -834,11 +960,14 @@
"Category": "FRM",
"SortCode": "14",
"CreateTime": "",
- "UpdateTime": "",
+ "UpdateTime": "2024-7-23 09:09:40.697",
"CreateUserId": "",
"UpdateUserId": "",
+ "CreateUser": "",
+ "UpdateUser": "",
"IsDelete": "0",
- "ExtJson": ""
+ "ExtJson": "",
+ "Status": "ENABLE"
},
{
"Id": "252875263003765",
@@ -848,11 +977,14 @@
"Category": "FRM",
"SortCode": "10",
"CreateTime": "",
- "UpdateTime": "",
+ "UpdateTime": "2024-7-23 09:09:40.697",
"CreateUserId": "",
"UpdateUserId": "",
+ "CreateUser": "",
+ "UpdateUser": "",
"IsDelete": "0",
- "ExtJson": ""
+ "ExtJson": "",
+ "Status": "ENABLE"
},
{
"Id": "252875263003766",
@@ -862,11 +994,14 @@
"Category": "FRM",
"SortCode": "20",
"CreateTime": "",
- "UpdateTime": "",
+ "UpdateTime": "2024-7-23 09:09:40.697",
"CreateUserId": "",
"UpdateUserId": "",
+ "CreateUser": "",
+ "UpdateUser": "",
"IsDelete": "0",
- "ExtJson": ""
+ "ExtJson": "",
+ "Status": "ENABLE"
},
{
"Id": "367777942233157",
@@ -876,11 +1011,14 @@
"Category": "FRM",
"SortCode": "99",
"CreateTime": "2022-12-25 15:52:18.697",
- "UpdateTime": "",
+ "UpdateTime": "2024-7-23 09:09:40.697",
"CreateUserId": "212725263002001",
"UpdateUserId": "",
+ "CreateUser": "",
+ "UpdateUser": "",
"IsDelete": "0",
- "ExtJson": ""
+ "ExtJson": "",
+ "Status": "ENABLE"
},
{
"Id": "367778072543301",
@@ -890,11 +1028,14 @@
"Category": "FRM",
"SortCode": "99",
"CreateTime": "2022-12-25 15:52:50.513",
- "UpdateTime": "",
+ "UpdateTime": "2024-7-23 09:09:40.697",
"CreateUserId": "212725263002001",
"UpdateUserId": "",
+ "CreateUser": "",
+ "UpdateUser": "",
"IsDelete": "0",
- "ExtJson": ""
+ "ExtJson": "",
+ "Status": "ENABLE"
},
{
"Id": "367778141515845",
@@ -904,11 +1045,14 @@
"Category": "FRM",
"SortCode": "99",
"CreateTime": "2022-12-25 15:53:07.35",
- "UpdateTime": "",
+ "UpdateTime": "2024-7-23 09:09:40.697",
"CreateUserId": "212725263002001",
"UpdateUserId": "",
+ "CreateUser": "",
+ "UpdateUser": "",
"IsDelete": "0",
- "ExtJson": ""
+ "ExtJson": "",
+ "Status": "ENABLE"
},
{
"Id": "382969159073861",
@@ -918,13 +1062,14 @@
"Category": "FRM",
"SortCode": "99",
"CreateTime": "2023-2-6 14:05:31.87",
- "UpdateTime": "",
+ "UpdateTime": "2024-7-23 09:09:40.697",
"CreateUserId": "212725263002001",
"UpdateUserId": "",
+ "CreateUser": "superAdmin",
+ "UpdateUser": "",
"IsDelete": "0",
"ExtJson": "",
- "CreateUser": "superAdmin",
- "UpdateUser": ""
+ "Status": "ENABLE"
},
{
"Id": "382969320693829",
@@ -934,13 +1079,14 @@
"Category": "FRM",
"SortCode": "99",
"CreateTime": "2023-2-6 14:06:11.33",
- "UpdateTime": "2023-2-6 14:06:40.78",
+ "UpdateTime": "2024-7-23 09:09:40.697",
"CreateUserId": "212725263002001",
"UpdateUserId": "212725263002001",
+ "CreateUser": "superAdmin",
+ "UpdateUser": "",
"IsDelete": "0",
"ExtJson": "",
- "CreateUser": "superAdmin",
- "UpdateUser": ""
+ "Status": "ENABLE"
},
{
"Id": "382969486618693",
@@ -950,13 +1096,354 @@
"Category": "FRM",
"SortCode": "99",
"CreateTime": "2023-2-6 14:06:51.84",
+ "UpdateTime": "2024-7-23 09:09:40.697",
+ "CreateUserId": "212725263002001",
+ "UpdateUserId": "",
+ "CreateUser": "superAdmin",
+ "UpdateUser": "",
+ "IsDelete": "0",
+ "ExtJson": "",
+ "Status": "ENABLE"
+ },
+ {
+ "Id": "507475491864645",
+ "ParentId": "0",
+ "DictLabel": "多租户选项",
+ "DictValue": "TENANT_OPTIONS",
+ "Category": "FRM",
+ "SortCode": "99",
+ "CreateTime": "2024-1-24 09:43:05.773",
+ "UpdateTime": "2024-7-23 09:09:40.697",
+ "CreateUserId": "212725263002001",
+ "UpdateUserId": "212725263002001",
+ "CreateUser": "superAdmin",
+ "UpdateUser": "superAdmin",
+ "IsDelete": "0",
+ "ExtJson": "",
+ "Status": "ENABLE"
+ },
+ {
+ "Id": "507482950717509",
+ "ParentId": "507475491864645",
+ "DictLabel": "关闭",
+ "DictValue": "CLOSE",
+ "Category": "FRM",
+ "SortCode": "99",
+ "CreateTime": "2024-1-24 10:13:26.787",
+ "UpdateTime": "2024-7-23 09:09:40.697",
+ "CreateUserId": "212725263002001",
+ "UpdateUserId": "",
+ "CreateUser": "superAdmin",
+ "UpdateUser": "",
+ "IsDelete": "0",
+ "ExtJson": "",
+ "Status": "ENABLE"
+ },
+ {
+ "Id": "507483171848261",
+ "ParentId": "507475491864645",
+ "DictLabel": "手动选择",
+ "DictValue": "CHOSE",
+ "Category": "FRM",
+ "SortCode": "99",
+ "CreateTime": "2024-1-24 10:14:20.77",
+ "UpdateTime": "2024-7-23 09:09:40.697",
+ "CreateUserId": "212725263002001",
+ "UpdateUserId": "",
+ "CreateUser": "superAdmin",
+ "UpdateUser": "",
+ "IsDelete": "0",
+ "ExtJson": "",
+ "Status": "ENABLE"
+ },
+ {
+ "Id": "507483274203205",
+ "ParentId": "507475491864645",
+ "DictLabel": "根据域名",
+ "DictValue": "DOMAIN",
+ "Category": "FRM",
+ "SortCode": "99",
+ "CreateTime": "2024-1-24 10:14:45.763",
+ "UpdateTime": "2024-7-23 09:09:40.697",
+ "CreateUserId": "212725263002001",
+ "UpdateUserId": "",
+ "CreateUser": "superAdmin",
+ "UpdateUser": "",
+ "IsDelete": "0",
+ "ExtJson": "",
+ "Status": "ENABLE"
+ },
+ {
+ "Id": "510326350884933",
+ "ParentId": "0",
+ "DictLabel": "登录验证码类型",
+ "DictValue": "CAPTCHA_TYPE",
+ "Category": "FRM",
+ "SortCode": "99",
+ "CreateTime": "2024-2-1 11:03:16.28",
+ "UpdateTime": "2024-7-23 09:09:40.697",
+ "CreateUserId": "212725263002001",
+ "UpdateUserId": "",
+ "CreateUser": "superAdmin",
+ "UpdateUser": "",
+ "IsDelete": "0",
+ "ExtJson": "",
+ "Status": "ENABLE"
+ },
+ {
+ "Id": "510326446264389",
+ "ParentId": "510326350884933",
+ "DictLabel": "纯数字验证码",
+ "DictValue": "NUM",
+ "Category": "FRM",
+ "SortCode": "99",
+ "CreateTime": "2024-2-1 11:03:39.567",
+ "UpdateTime": "2024-7-23 09:09:40.697",
+ "CreateUserId": "212725263002001",
+ "UpdateUserId": "",
+ "CreateUser": "superAdmin",
+ "UpdateUser": "",
+ "IsDelete": "0",
+ "ExtJson": "",
+ "Status": "ENABLE"
+ },
+ {
+ "Id": "510326482235461",
+ "ParentId": "510326350884933",
+ "DictLabel": "数字加字母验证码",
+ "DictValue": "CHAR",
+ "Category": "FRM",
+ "SortCode": "99",
+ "CreateTime": "2024-2-1 11:03:48.347",
+ "UpdateTime": "2024-7-23 09:09:40.697",
+ "CreateUserId": "212725263002001",
+ "UpdateUserId": "",
+ "CreateUser": "superAdmin",
+ "UpdateUser": "",
+ "IsDelete": "0",
+ "ExtJson": "",
+ "Status": "ENABLE"
+ },
+ {
+ "Id": "510326508625989",
+ "ParentId": "510326350884933",
+ "DictLabel": "数字运算验证码",
+ "DictValue": "ARITH",
+ "Category": "FRM",
+ "SortCode": "99",
+ "CreateTime": "2024-2-1 11:03:54.79",
+ "UpdateTime": "2024-7-23 09:09:40.697",
+ "CreateUserId": "212725263002001",
+ "UpdateUserId": "",
+ "CreateUser": "superAdmin",
+ "UpdateUser": "",
+ "IsDelete": "0",
+ "ExtJson": "",
+ "Status": "ENABLE"
+ },
+ {
+ "Id": "610820365340741",
+ "ParentId": "252875263003764",
+ "DictLabel": "消息",
+ "DictValue": "MESSAGE",
+ "Category": "FRM",
+ "SortCode": "99",
+ "CreateTime": "2024-11-11 10:14:27.777",
+ "UpdateTime": "",
+ "CreateUserId": "212725263002001",
+ "UpdateUserId": "",
+ "CreateUser": "superAdmin",
+ "UpdateUser": "",
+ "IsDelete": "0",
+ "ExtJson": "",
+ "Status": "ENABLE"
+ },
+ {
+ "Id": "610871373713477",
+ "ParentId": "0",
+ "DictLabel": "系统消息接受者类型",
+ "DictValue": "RECEIVER_TYPE",
+ "Category": "FRM",
+ "SortCode": "99",
+ "CreateTime": "2024-11-11 13:42:00.993",
+ "UpdateTime": "",
+ "CreateUserId": "212725263002001",
+ "UpdateUserId": "",
+ "CreateUser": "superAdmin",
+ "UpdateUser": "",
+ "IsDelete": "0",
+ "ExtJson": "",
+ "Status": "ENABLE"
+ },
+ {
+ "Id": "610871459205189",
+ "ParentId": "610871373713477",
+ "DictLabel": "所有人",
+ "DictValue": "ALL",
+ "Category": "FRM",
+ "SortCode": "99",
+ "CreateTime": "2024-11-11 13:42:21.863",
"UpdateTime": "",
"CreateUserId": "212725263002001",
"UpdateUserId": "",
+ "CreateUser": "superAdmin",
+ "UpdateUser": "",
"IsDelete": "0",
"ExtJson": "",
+ "Status": "ENABLE"
+ },
+ {
+ "Id": "610871525576773",
+ "ParentId": "610871373713477",
+ "DictLabel": "指定角色",
+ "DictValue": "ROLE",
+ "Category": "FRM",
+ "SortCode": "99",
+ "CreateTime": "2024-11-11 13:42:38.07",
+ "UpdateTime": "2024-11-11 15:58:34.453",
+ "CreateUserId": "212725263002001",
+ "UpdateUserId": "212725263002001",
"CreateUser": "superAdmin",
- "UpdateUser": ""
+ "UpdateUser": "superAdmin",
+ "IsDelete": "0",
+ "ExtJson": "",
+ "Status": "ENABLE"
+ },
+ {
+ "Id": "610871552700485",
+ "ParentId": "610871373713477",
+ "DictLabel": "指定用户",
+ "DictValue": "APPOINT",
+ "Category": "FRM",
+ "SortCode": "99",
+ "CreateTime": "2024-11-11 13:42:44.69",
+ "UpdateTime": "2024-11-11 15:58:39.39",
+ "CreateUserId": "212725263002001",
+ "UpdateUserId": "212725263002001",
+ "CreateUser": "superAdmin",
+ "UpdateUser": "superAdmin",
+ "IsDelete": "0",
+ "ExtJson": "",
+ "Status": "ENABLE"
+ },
+ {
+ "Id": "611939803328581",
+ "ParentId": "0",
+ "DictLabel": "系统消息发送方式",
+ "DictValue": "MESSAGE_WAY",
+ "Category": "FRM",
+ "SortCode": "99",
+ "CreateTime": "2024-11-14 14:09:28.067",
+ "UpdateTime": "",
+ "CreateUserId": "212725263002001",
+ "UpdateUserId": "",
+ "CreateUser": "superAdmin",
+ "UpdateUser": "",
+ "IsDelete": "0",
+ "ExtJson": "",
+ "Status": "ENABLE"
+ },
+ {
+ "Id": "611940036890693",
+ "ParentId": "611939803328581",
+ "DictLabel": "立即发送",
+ "DictValue": "NOW",
+ "Category": "FRM",
+ "SortCode": "99",
+ "CreateTime": "2024-11-14 14:10:25.087",
+ "UpdateTime": "",
+ "CreateUserId": "212725263002001",
+ "UpdateUserId": "",
+ "CreateUser": "superAdmin",
+ "UpdateUser": "",
+ "IsDelete": "0",
+ "ExtJson": "",
+ "Status": "ENABLE"
+ },
+ {
+ "Id": "611940097024069",
+ "ParentId": "611939803328581",
+ "DictLabel": "延迟发送",
+ "DictValue": "DELAY",
+ "Category": "FRM",
+ "SortCode": "99",
+ "CreateTime": "2024-11-14 14:10:39.77",
+ "UpdateTime": "",
+ "CreateUserId": "212725263002001",
+ "UpdateUserId": "",
+ "CreateUser": "superAdmin",
+ "UpdateUser": "",
+ "IsDelete": "0",
+ "ExtJson": "",
+ "Status": "ENABLE"
+ },
+ {
+ "Id": "611940248596549",
+ "ParentId": "611939803328581",
+ "DictLabel": "指定时间",
+ "DictValue": "SCHEDULE",
+ "Category": "FRM",
+ "SortCode": "99",
+ "CreateTime": "2024-11-14 14:11:16.777",
+ "UpdateTime": "",
+ "CreateUserId": "212725263002001",
+ "UpdateUserId": "",
+ "CreateUser": "superAdmin",
+ "UpdateUser": "",
+ "IsDelete": "0",
+ "ExtJson": "",
+ "Status": "ENABLE"
+ },
+ {
+ "Id": "611940407885893",
+ "ParentId": "0",
+ "DictLabel": "消息发送状态",
+ "DictValue": "MESSAGE_STATUS",
+ "Category": "FRM",
+ "SortCode": "99",
+ "CreateTime": "2024-11-14 14:11:55.663",
+ "UpdateTime": "",
+ "CreateUserId": "212725263002001",
+ "UpdateUserId": "",
+ "CreateUser": "superAdmin",
+ "UpdateUser": "",
+ "IsDelete": "0",
+ "ExtJson": "",
+ "Status": "ENABLE"
+ },
+ {
+ "Id": "611940509208645",
+ "ParentId": "611940407885893",
+ "DictLabel": "待发送",
+ "DictValue": "READY",
+ "Category": "FRM",
+ "SortCode": "99",
+ "CreateTime": "2024-11-14 14:12:20.4",
+ "UpdateTime": "2024-11-15 10:06:49.79",
+ "CreateUserId": "212725263002001",
+ "UpdateUserId": "212725263002001",
+ "CreateUser": "superAdmin",
+ "UpdateUser": "superAdmin",
+ "IsDelete": "0",
+ "ExtJson": "",
+ "Status": "ENABLE"
+ },
+ {
+ "Id": "611940679856197",
+ "ParentId": "611940407885893",
+ "DictLabel": "已发送",
+ "DictValue": "ALREADY",
+ "Category": "FRM",
+ "SortCode": "99",
+ "CreateTime": "2024-11-14 14:13:02.063",
+ "UpdateTime": "",
+ "CreateUserId": "212725263002001",
+ "UpdateUserId": "",
+ "CreateUser": "superAdmin",
+ "UpdateUser": "",
+ "IsDelete": "0",
+ "ExtJson": "",
+ "Status": "ENABLE"
}
]
}
\ No newline at end of file
diff --git a/api/SimpleAdmin/SimpleAdmin.System/SeedData/Json/seed_sys_org.json b/api/SimpleAdmin/SimpleAdmin.System/SeedData/Json/seed_sys_org.json
index 55456eee46f4329a68377c08dc9d4365aeb1c922..eb1850f333e5fcfc077391d98647fa63ca18196e 100644
--- a/api/SimpleAdmin/SimpleAdmin.System/SeedData/Json/seed_sys_org.json
+++ b/api/SimpleAdmin/SimpleAdmin.System/SeedData/Json/seed_sys_org.json
@@ -3,20 +3,22 @@
{
"Id": "252885263003720",
"ParentId": "0",
- "DirectorId": "",
+ "DirectorId": "212725263002001",
"Name": "果冻科技有限公司",
"Names": "果冻科技有限公司",
- "Code": "yfqtrbd5qz",
+ "Code": "4fuFapeKGy",
"Category": "COMPANY",
"SortCode": "1",
- "CreateTime": "",
- "UpdateTime": "2023-1-3 10:23:06.743",
+ "CreateTime": "2023-8-14 16:19:29.15",
+ "UpdateTime": "2024-7-23 09:09:40.967",
"CreateUserId": "",
"UpdateUserId": "212725263002001",
- "IsDelete": "0",
- "ExtJson": "{\"__v_isShallow\":false,\"__v_isRef\":true,\"_rawValue\":[],\"_value\":[]}",
"CreateUser": "",
- "UpdateUser": "superAdmin"
+ "UpdateUser": "superAdmin",
+ "IsDelete": "0",
+ "ExtJson": "",
+ "Status": "ENABLE",
+ "ParentIdList": "[]"
},
{
"Id": "252885263003721",
@@ -24,35 +26,39 @@
"DirectorId": "",
"Name": "科技部",
"Names": "果冻科技有限公司/科技部",
- "Code": "yfqtrbc5qz",
+ "Code": "5JOEG44G62",
"Category": "DEPT",
"SortCode": "2",
- "CreateTime": "",
- "UpdateTime": "2023-1-3 10:23:14.183",
+ "CreateTime": "2023-8-14 16:19:29.15",
+ "UpdateTime": "2024-7-23 09:09:40.967",
"CreateUserId": "",
"UpdateUserId": "212725263002001",
- "IsDelete": "0",
- "ExtJson": "{\"__v_isShallow\":false,\"__v_isRef\":true,\"_rawValue\":[],\"_value\":[]}",
"CreateUser": "",
- "UpdateUser": "superAdmin"
+ "UpdateUser": "superAdmin",
+ "IsDelete": "0",
+ "ExtJson": "",
+ "Status": "ENABLE",
+ "ParentIdList": "[252885263003720]"
},
{
"Id": "252885263003722",
"ParentId": "252885263003720",
- "DirectorId": "",
+ "DirectorId": "359177888051269",
"Name": "生产部",
"Names": "果冻科技有限公司/生产部",
- "Code": "yfqtrbc3qz",
+ "Code": "aln9y4tno6",
"Category": "DEPT",
"SortCode": "3",
- "CreateTime": "",
- "UpdateTime": "2023-1-3 10:24:35.903",
+ "CreateTime": "2023-8-14 16:19:29.15",
+ "UpdateTime": "2024-7-23 09:09:40.967",
"CreateUserId": "",
"UpdateUserId": "212725263002001",
- "IsDelete": "0",
- "ExtJson": "{\"__v_isShallow\":false,\"__v_isRef\":true,\"_rawValue\":[],\"_value\":[]}",
"CreateUser": "",
- "UpdateUser": "superAdmin"
+ "UpdateUser": "superAdmin",
+ "IsDelete": "0",
+ "ExtJson": "",
+ "Status": "ENABLE",
+ "ParentIdList": "[252885263003720]"
},
{
"Id": "359569393872965",
@@ -62,15 +68,17 @@
"Names": "萝卜科技有限公司",
"Code": "l77v30V3yG",
"Category": "COMPANY",
- "SortCode": "99",
- "CreateTime": "2022-2-12 11:11:38.57",
- "UpdateTime": "2023-1-3 10:23:23.05",
+ "SortCode": "1",
+ "CreateTime": "2023-8-14 16:19:29.153",
+ "UpdateTime": "2024-7-23 09:09:40.967",
"CreateUserId": "212725263002001",
"UpdateUserId": "212725263002001",
- "IsDelete": "0",
- "ExtJson": "{\"__v_isShallow\":false,\"__v_isRef\":true,\"_rawValue\":[],\"_value\":[]}",
"CreateUser": "",
- "UpdateUser": "superAdmin"
+ "UpdateUser": "superAdmin",
+ "IsDelete": "0",
+ "ExtJson": "",
+ "Status": "ENABLE",
+ "ParentIdList": "[]"
},
{
"Id": "360642028625989",
@@ -81,14 +89,16 @@
"Code": "dihhtLuWG1",
"Category": "DEPT",
"SortCode": "4",
- "CreateTime": "2022-5-12 11:56:12.29",
- "UpdateTime": "2023-1-3 10:23:19.417",
+ "CreateTime": "2023-8-14 16:19:29.153",
+ "UpdateTime": "2024-7-23 09:09:40.967",
"CreateUserId": "212725263002001",
"UpdateUserId": "212725263002001",
- "IsDelete": "0",
- "ExtJson": "{\"__v_isShallow\":false,\"__v_isRef\":true,\"_rawValue\":[],\"_value\":[]}",
"CreateUser": "",
- "UpdateUser": "superAdmin"
+ "UpdateUser": "superAdmin",
+ "IsDelete": "0",
+ "ExtJson": "",
+ "Status": "ENABLE",
+ "ParentIdList": "[252885263003720]"
},
{
"Id": "361404296994885",
@@ -99,14 +109,16 @@
"Code": "fLOhh7s091",
"Category": "DEPT",
"SortCode": "99",
- "CreateTime": "2022-7-12 15:37:52.967",
- "UpdateTime": "2023-1-3 10:23:33.87",
+ "CreateTime": "2023-8-14 16:19:29.153",
+ "UpdateTime": "2024-7-23 09:09:40.967",
"CreateUserId": "212725263002001",
"UpdateUserId": "212725263002001",
- "IsDelete": "0",
- "ExtJson": "{\"__v_isShallow\":false,\"__v_isRef\":true,\"_rawValue\":[],\"_value\":[]}",
"CreateUser": "",
- "UpdateUser": "superAdmin"
+ "UpdateUser": "superAdmin",
+ "IsDelete": "0",
+ "ExtJson": "",
+ "Status": "ENABLE",
+ "ParentIdList": "[359569393872965]"
},
{
"Id": "361404346445893",
@@ -117,14 +129,636 @@
"Code": "tmDWFRfXuQ",
"Category": "DEPT",
"SortCode": "99",
- "CreateTime": "2022-7-12 15:38:05.04",
- "UpdateTime": "2023-1-3 10:23:21.323",
+ "CreateTime": "2023-8-14 16:19:29.153",
+ "UpdateTime": "2024-7-23 09:09:40.967",
"CreateUserId": "212725263002001",
"UpdateUserId": "212725263002001",
- "IsDelete": "0",
- "ExtJson": "{\"__v_isShallow\":false,\"__v_isRef\":true,\"_rawValue\":[],\"_value\":[]}",
"CreateUser": "",
- "UpdateUser": "superAdmin"
+ "UpdateUser": "superAdmin",
+ "IsDelete": "0",
+ "ExtJson": "",
+ "Status": "ENABLE",
+ "ParentIdList": "[359569393872965]"
+ },
+ {
+ "Id": "464837351616581",
+ "ParentId": "252885263003721",
+ "DirectorId": "",
+ "Name": "科技一部",
+ "Names": "果冻科技有限公司/科技部/科技一部",
+ "Code": "Mzv2sj1MEo",
+ "Category": "DEPT",
+ "SortCode": "99",
+ "CreateTime": "2023-9-25 22:08:03.567",
+ "UpdateTime": "2024-7-23 09:09:40.967",
+ "CreateUserId": "212725263002001",
+ "UpdateUserId": "212725263002001",
+ "CreateUser": "superAdmin",
+ "UpdateUser": "superAdmin",
+ "IsDelete": "0",
+ "ExtJson": "",
+ "Status": "ENABLE",
+ "ParentIdList": "[252885263003720,252885263003721]"
+ },
+ {
+ "Id": "464837557956677",
+ "ParentId": "464837351616581",
+ "DirectorId": "",
+ "Name": "科技一部1组",
+ "Names": "果冻科技有限公司/科技部/科技一部/科技一部1组",
+ "Code": "g6R7zuMMk4",
+ "Category": "DEPT",
+ "SortCode": "99",
+ "CreateTime": "2023-9-25 22:08:53.943",
+ "UpdateTime": "2024-7-23 09:09:40.967",
+ "CreateUserId": "212725263002001",
+ "UpdateUserId": "212725263002001",
+ "CreateUser": "superAdmin",
+ "UpdateUser": "superAdmin",
+ "IsDelete": "0",
+ "ExtJson": "",
+ "Status": "ENABLE",
+ "ParentIdList": "[252885263003720,252885263003721,464837351616581]"
+ },
+ {
+ "Id": "479974472933445",
+ "ParentId": "359569393872965",
+ "DirectorId": "",
+ "Name": "销售部",
+ "Names": "萝卜科技有限公司/销售部",
+ "Code": "jjQ1i8btel",
+ "Category": "DEPT",
+ "SortCode": "4",
+ "CreateTime": "2023-11-7 16:41:09.83",
+ "UpdateTime": "2024-7-23 09:09:40.967",
+ "CreateUserId": "212725263002001",
+ "UpdateUserId": "212725263002001",
+ "CreateUser": "superAdmin",
+ "UpdateUser": "superAdmin",
+ "IsDelete": "0",
+ "ExtJson": "",
+ "Status": "ENABLE",
+ "ParentIdList": "[359569393872965]"
+ },
+ {
+ "Id": "485978445475909",
+ "ParentId": "252885263003722",
+ "DirectorId": "",
+ "Name": "生产一部",
+ "Names": "果冻科技有限公司/生产部/生产一部",
+ "Code": "fHsgj48J0D",
+ "Category": "DEPT",
+ "SortCode": "99",
+ "CreateTime": "2023-11-24 15:51:23.437",
+ "UpdateTime": "2024-7-23 09:09:40.967",
+ "CreateUserId": "212725263002001",
+ "UpdateUserId": "212725263002001",
+ "CreateUser": "superAdmin",
+ "UpdateUser": "superAdmin",
+ "IsDelete": "0",
+ "ExtJson": "",
+ "Status": "ENABLE",
+ "ParentIdList": "[252885263003720,252885263003722]"
+ },
+ {
+ "Id": "487320043610181",
+ "ParentId": "359569393872965",
+ "DirectorId": "",
+ "Name": "科技部",
+ "Names": "萝卜科技有限公司/科技部",
+ "Code": "1QWox5893Q",
+ "Category": "DEPT",
+ "SortCode": "2",
+ "CreateTime": "2023-11-28 10:50:49.177",
+ "UpdateTime": "2024-7-23 09:09:40.967",
+ "CreateUserId": "212725263002001",
+ "UpdateUserId": "212725263002001",
+ "CreateUser": "superAdmin",
+ "UpdateUser": "superAdmin",
+ "IsDelete": "0",
+ "ExtJson": "",
+ "Status": "ENABLE",
+ "ParentIdList": "[359569393872965]"
+ },
+ {
+ "Id": "487320070803525",
+ "ParentId": "487320043610181",
+ "DirectorId": "",
+ "Name": "科技一部",
+ "Names": "萝卜科技有限公司/科技部/科技一部",
+ "Code": "fIaBZ15osx",
+ "Category": "DEPT",
+ "SortCode": "99",
+ "CreateTime": "2023-11-28 10:50:49.18",
+ "UpdateTime": "2024-7-23 09:09:40.967",
+ "CreateUserId": "212725263002001",
+ "UpdateUserId": "212725263002001",
+ "CreateUser": "superAdmin",
+ "UpdateUser": "superAdmin",
+ "IsDelete": "0",
+ "ExtJson": "",
+ "Status": "ENABLE",
+ "ParentIdList": "[359569393872965,487320043610181]"
+ },
+ {
+ "Id": "510752889880645",
+ "ParentId": "0",
+ "DirectorId": "",
+ "Name": "旺仔科技有限公司",
+ "Names": "旺仔科技有限公司",
+ "Code": "wz",
+ "Category": "COMPANY",
+ "SortCode": "99",
+ "CreateTime": "2024-2-2 15:58:51.777",
+ "UpdateTime": "2024-7-23 09:09:40.967",
+ "CreateUserId": "212725263002001",
+ "UpdateUserId": "212725263002001",
+ "CreateUser": "superAdmin",
+ "UpdateUser": "superAdmin",
+ "IsDelete": "0",
+ "ExtJson": "",
+ "Status": "ENABLE",
+ "ParentIdList": "[]"
+ },
+ {
+ "Id": "510753093025861",
+ "ParentId": "0",
+ "DirectorId": "",
+ "Name": "达达科技有限公司",
+ "Names": "达达科技有限公司",
+ "Code": "dd",
+ "Category": "COMPANY",
+ "SortCode": "99",
+ "CreateTime": "2024-2-2 15:59:41.373",
+ "UpdateTime": "2024-7-23 09:09:40.967",
+ "CreateUserId": "212725263002001",
+ "UpdateUserId": "212725263002001",
+ "CreateUser": "superAdmin",
+ "UpdateUser": "superAdmin",
+ "IsDelete": "0",
+ "ExtJson": "",
+ "Status": "ENABLE",
+ "ParentIdList": "[]"
+ },
+ {
+ "Id": "510753219502149",
+ "ParentId": "0",
+ "DirectorId": "",
+ "Name": "杰尼科技有限公司",
+ "Names": "杰尼科技有限公司",
+ "Code": "jn",
+ "Category": "DEPT",
+ "SortCode": "99",
+ "CreateTime": "2024-2-2 16:00:12.25",
+ "UpdateTime": "2024-7-23 09:09:40.967",
+ "CreateUserId": "212725263002001",
+ "UpdateUserId": "212725263002001",
+ "CreateUser": "superAdmin",
+ "UpdateUser": "superAdmin",
+ "IsDelete": "0",
+ "ExtJson": "",
+ "Status": "ENABLE",
+ "ParentIdList": "[]"
+ },
+ {
+ "Id": "510753479417925",
+ "ParentId": "510752889880645",
+ "DirectorId": "",
+ "Name": "科技部",
+ "Names": "旺仔科技有限公司/科技部",
+ "Code": "oNSxenwpqn",
+ "Category": "DEPT",
+ "SortCode": "2",
+ "CreateTime": "2024-2-2 16:01:15.713",
+ "UpdateTime": "2024-7-23 09:09:40.967",
+ "CreateUserId": "212725263002001",
+ "UpdateUserId": "212725263002001",
+ "CreateUser": "superAdmin",
+ "UpdateUser": "superAdmin",
+ "IsDelete": "0",
+ "ExtJson": "",
+ "Status": "ENABLE",
+ "ParentIdList": "[510752889880645]"
+ },
+ {
+ "Id": "510753479422021",
+ "ParentId": "510753479417925",
+ "DirectorId": "",
+ "Name": "科技一部",
+ "Names": "旺仔科技有限公司/科技部/科技一部",
+ "Code": "j83kVrfVD0",
+ "Category": "DEPT",
+ "SortCode": "99",
+ "CreateTime": "2024-2-2 16:01:15.713",
+ "UpdateTime": "2024-7-23 09:09:40.967",
+ "CreateUserId": "212725263002001",
+ "UpdateUserId": "212725263002001",
+ "CreateUser": "superAdmin",
+ "UpdateUser": "superAdmin",
+ "IsDelete": "0",
+ "ExtJson": "",
+ "Status": "ENABLE",
+ "ParentIdList": "[510752889880645,510753479417925]"
+ },
+ {
+ "Id": "510753479422022",
+ "ParentId": "510753479422021",
+ "DirectorId": "",
+ "Name": "科技一部1组",
+ "Names": "旺仔科技有限公司/科技部/科技一部/科技一部1组",
+ "Code": "93BGNo5HXE",
+ "Category": "DEPT",
+ "SortCode": "99",
+ "CreateTime": "2024-2-2 16:01:15.713",
+ "UpdateTime": "2024-7-23 09:09:40.967",
+ "CreateUserId": "212725263002001",
+ "UpdateUserId": "212725263002001",
+ "CreateUser": "superAdmin",
+ "UpdateUser": "superAdmin",
+ "IsDelete": "0",
+ "ExtJson": "",
+ "Status": "ENABLE",
+ "ParentIdList": "[510752889880645,510753479417925,510753479422021]"
+ },
+ {
+ "Id": "510753479422023",
+ "ParentId": "510752889880645",
+ "DirectorId": "359177888051269",
+ "Name": "生产部",
+ "Names": "旺仔科技有限公司/生产部",
+ "Code": "2l3276Q5Tg",
+ "Category": "DEPT",
+ "SortCode": "3",
+ "CreateTime": "2024-2-2 16:01:15.713",
+ "UpdateTime": "2024-7-23 09:09:40.967",
+ "CreateUserId": "212725263002001",
+ "UpdateUserId": "212725263002001",
+ "CreateUser": "superAdmin",
+ "UpdateUser": "superAdmin",
+ "IsDelete": "0",
+ "ExtJson": "",
+ "Status": "ENABLE",
+ "ParentIdList": "[510752889880645]"
+ },
+ {
+ "Id": "510753479426117",
+ "ParentId": "510753479422023",
+ "DirectorId": "",
+ "Name": "生产一部",
+ "Names": "旺仔科技有限公司/生产部/生产一部",
+ "Code": "298gdc2Oy6",
+ "Category": "DEPT",
+ "SortCode": "99",
+ "CreateTime": "2024-2-2 16:01:15.713",
+ "UpdateTime": "2024-7-23 09:09:40.967",
+ "CreateUserId": "212725263002001",
+ "UpdateUserId": "212725263002001",
+ "CreateUser": "superAdmin",
+ "UpdateUser": "superAdmin",
+ "IsDelete": "0",
+ "ExtJson": "",
+ "Status": "ENABLE",
+ "ParentIdList": "[510752889880645,510753479422023]"
+ },
+ {
+ "Id": "510753479430213",
+ "ParentId": "510752889880645",
+ "DirectorId": "",
+ "Name": "销售部",
+ "Names": "旺仔科技有限公司/销售部",
+ "Code": "qEB7a8wtP3",
+ "Category": "DEPT",
+ "SortCode": "4",
+ "CreateTime": "2024-2-2 16:01:15.713",
+ "UpdateTime": "2024-7-23 09:09:40.967",
+ "CreateUserId": "212725263002001",
+ "UpdateUserId": "212725263002001",
+ "CreateUser": "superAdmin",
+ "UpdateUser": "superAdmin",
+ "IsDelete": "0",
+ "ExtJson": "",
+ "Status": "ENABLE",
+ "ParentIdList": "[510752889880645]"
+ },
+ {
+ "Id": "510753515745349",
+ "ParentId": "510753093025861",
+ "DirectorId": "",
+ "Name": "科技部",
+ "Names": "达达科技有限公司/科技部",
+ "Code": "LMB0GjrOM8",
+ "Category": "DEPT",
+ "SortCode": "2",
+ "CreateTime": "2024-2-2 16:01:24.577",
+ "UpdateTime": "2024-7-23 09:09:40.967",
+ "CreateUserId": "212725263002001",
+ "UpdateUserId": "212725263002001",
+ "CreateUser": "superAdmin",
+ "UpdateUser": "superAdmin",
+ "IsDelete": "0",
+ "ExtJson": "",
+ "Status": "ENABLE",
+ "ParentIdList": "[510753093025861]"
+ },
+ {
+ "Id": "510753515745350",
+ "ParentId": "510753515745349",
+ "DirectorId": "",
+ "Name": "科技一部",
+ "Names": "达达科技有限公司/科技部/科技一部",
+ "Code": "mgd2SJ35jH",
+ "Category": "DEPT",
+ "SortCode": "99",
+ "CreateTime": "2024-2-2 16:01:24.577",
+ "UpdateTime": "2024-7-23 09:09:40.967",
+ "CreateUserId": "212725263002001",
+ "UpdateUserId": "212725263002001",
+ "CreateUser": "superAdmin",
+ "UpdateUser": "superAdmin",
+ "IsDelete": "0",
+ "ExtJson": "",
+ "Status": "ENABLE",
+ "ParentIdList": "[510753093025861,510753515745349]"
+ },
+ {
+ "Id": "510753515745351",
+ "ParentId": "510753515745350",
+ "DirectorId": "",
+ "Name": "科技一部1组",
+ "Names": "达达科技有限公司/科技部/科技一部/科技一部1组",
+ "Code": "jQ5ymWaxz1",
+ "Category": "DEPT",
+ "SortCode": "99",
+ "CreateTime": "2024-2-2 16:01:24.577",
+ "UpdateTime": "2024-7-23 09:09:40.967",
+ "CreateUserId": "212725263002001",
+ "UpdateUserId": "212725263002001",
+ "CreateUser": "superAdmin",
+ "UpdateUser": "superAdmin",
+ "IsDelete": "0",
+ "ExtJson": "",
+ "Status": "ENABLE",
+ "ParentIdList": "[510753093025861,510753515745349,510753515745350]"
+ },
+ {
+ "Id": "510753515749445",
+ "ParentId": "510753093025861",
+ "DirectorId": "359177888051269",
+ "Name": "生产部",
+ "Names": "达达科技有限公司/生产部",
+ "Code": "nNmBAfO2dG",
+ "Category": "DEPT",
+ "SortCode": "3",
+ "CreateTime": "2024-2-2 16:01:24.577",
+ "UpdateTime": "2024-7-23 09:09:40.967",
+ "CreateUserId": "212725263002001",
+ "UpdateUserId": "212725263002001",
+ "CreateUser": "superAdmin",
+ "UpdateUser": "superAdmin",
+ "IsDelete": "0",
+ "ExtJson": "",
+ "Status": "ENABLE",
+ "ParentIdList": "[510753093025861]"
+ },
+ {
+ "Id": "510753515749446",
+ "ParentId": "510753515749445",
+ "DirectorId": "",
+ "Name": "生产一部",
+ "Names": "达达科技有限公司/生产部/生产一部",
+ "Code": "D37d9K1QMn",
+ "Category": "DEPT",
+ "SortCode": "99",
+ "CreateTime": "2024-2-2 16:01:24.577",
+ "UpdateTime": "2024-7-23 09:09:40.967",
+ "CreateUserId": "212725263002001",
+ "UpdateUserId": "212725263002001",
+ "CreateUser": "superAdmin",
+ "UpdateUser": "superAdmin",
+ "IsDelete": "0",
+ "ExtJson": "",
+ "Status": "ENABLE",
+ "ParentIdList": "[510753093025861,510753515749445]"
+ },
+ {
+ "Id": "510753515749447",
+ "ParentId": "510753093025861",
+ "DirectorId": "",
+ "Name": "销售部",
+ "Names": "达达科技有限公司/销售部",
+ "Code": "Jt6ZJfT4g2",
+ "Category": "DEPT",
+ "SortCode": "4",
+ "CreateTime": "2024-2-2 16:01:24.577",
+ "UpdateTime": "2024-7-23 09:09:40.967",
+ "CreateUserId": "212725263002001",
+ "UpdateUserId": "212725263002001",
+ "CreateUser": "superAdmin",
+ "UpdateUser": "superAdmin",
+ "IsDelete": "0",
+ "ExtJson": "",
+ "Status": "ENABLE",
+ "ParentIdList": "[510753093025861]"
+ },
+ {
+ "Id": "510753541705799",
+ "ParentId": "510753219502149",
+ "DirectorId": "359177888051269",
+ "Name": "生产部",
+ "Names": "杰尼科技有限公司/生产部",
+ "Code": "LuOvsCpXL9",
+ "Category": "DEPT",
+ "SortCode": "3",
+ "CreateTime": "2024-2-2 16:01:30.917",
+ "UpdateTime": "2024-7-23 09:09:40.967",
+ "CreateUserId": "212725263002001",
+ "UpdateUserId": "212725263002001",
+ "CreateUser": "superAdmin",
+ "UpdateUser": "superAdmin",
+ "IsDelete": "0",
+ "ExtJson": "",
+ "Status": "ENABLE",
+ "ParentIdList": "[510753219502149]"
+ },
+ {
+ "Id": "510753541709893",
+ "ParentId": "510753541705799",
+ "DirectorId": "",
+ "Name": "生产一部",
+ "Names": "杰尼科技有限公司/生产部/生产一部",
+ "Code": "3jz7oH2YdB",
+ "Category": "DEPT",
+ "SortCode": "99",
+ "CreateTime": "2024-2-2 16:01:30.92",
+ "UpdateTime": "2024-7-23 09:09:40.967",
+ "CreateUserId": "212725263002001",
+ "UpdateUserId": "212725263002001",
+ "CreateUser": "superAdmin",
+ "UpdateUser": "superAdmin",
+ "IsDelete": "0",
+ "ExtJson": "",
+ "Status": "ENABLE",
+ "ParentIdList": "[510753219502149,510753541705799]"
+ },
+ {
+ "Id": "510753541709894",
+ "ParentId": "510753219502149",
+ "DirectorId": "",
+ "Name": "销售部",
+ "Names": "杰尼科技有限公司/销售部",
+ "Code": "1175P8fpKj",
+ "Category": "DEPT",
+ "SortCode": "4",
+ "CreateTime": "2024-2-2 16:01:30.92",
+ "UpdateTime": "2024-7-23 09:09:40.967",
+ "CreateUserId": "212725263002001",
+ "UpdateUserId": "212725263002001",
+ "CreateUser": "superAdmin",
+ "UpdateUser": "superAdmin",
+ "IsDelete": "0",
+ "ExtJson": "",
+ "Status": "ENABLE",
+ "ParentIdList": "[510753219502149]"
+ },
+ {
+ "Id": "516762847445061",
+ "ParentId": "510753219502149",
+ "DirectorId": "",
+ "Name": "科技部",
+ "Names": "杰尼科技有限公司/科技部",
+ "Code": "aixpW3fg7h",
+ "Category": "DEPT",
+ "SortCode": "2",
+ "CreateTime": "2024-2-19 15:33:26.577",
+ "UpdateTime": "2024-7-23 09:09:40.967",
+ "CreateUserId": "212725263002001",
+ "UpdateUserId": "212725263002001",
+ "CreateUser": "superAdmin",
+ "UpdateUser": "superAdmin",
+ "IsDelete": "0",
+ "ExtJson": "",
+ "Status": "ENABLE",
+ "ParentIdList": "[510753219502149]"
+ },
+ {
+ "Id": "516762847465541",
+ "ParentId": "516762847445061",
+ "DirectorId": "",
+ "Name": "科技一部",
+ "Names": "杰尼科技有限公司/科技部/科技一部",
+ "Code": "8IGvu1YbVv",
+ "Category": "DEPT",
+ "SortCode": "99",
+ "CreateTime": "2024-2-19 15:33:26.58",
+ "UpdateTime": "2024-7-23 09:09:40.967",
+ "CreateUserId": "212725263002001",
+ "UpdateUserId": "212725263002001",
+ "CreateUser": "superAdmin",
+ "UpdateUser": "superAdmin",
+ "IsDelete": "0",
+ "ExtJson": "",
+ "Status": "ENABLE",
+ "ParentIdList": "[510753219502149,516762847445061]"
+ },
+ {
+ "Id": "516762847465542",
+ "ParentId": "516762847465541",
+ "DirectorId": "",
+ "Name": "科技一部1组",
+ "Names": "杰尼科技有限公司/科技部/科技一部/科技一部1组",
+ "Code": "7i2xo2x63S",
+ "Category": "DEPT",
+ "SortCode": "99",
+ "CreateTime": "2024-2-19 15:33:26.58",
+ "UpdateTime": "2024-7-23 09:09:40.967",
+ "CreateUserId": "212725263002001",
+ "UpdateUserId": "212725263002001",
+ "CreateUser": "superAdmin",
+ "UpdateUser": "superAdmin",
+ "IsDelete": "0",
+ "ExtJson": "",
+ "Status": "ENABLE",
+ "ParentIdList": "[510753219502149,516762847445061,516762847465541]"
+ },
+ {
+ "Id": "517088662995013",
+ "ParentId": "510752889880645",
+ "DirectorId": "",
+ "Name": "研发部",
+ "Names": "旺仔科技有限公司/研发部",
+ "Code": "28s3SaDA24",
+ "Category": "DEPT",
+ "SortCode": "99",
+ "CreateTime": "2024-2-20 13:39:11.383",
+ "UpdateTime": "2024-7-23 09:09:40.967",
+ "CreateUserId": "511724553736261",
+ "UpdateUserId": "",
+ "CreateUser": "旺仔科技管理员",
+ "UpdateUser": "",
+ "IsDelete": "0",
+ "ExtJson": "",
+ "Status": "ENABLE",
+ "ParentIdList": "[510752889880645]"
+ },
+ {
+ "Id": "517125532377157",
+ "ParentId": "510753219502149",
+ "DirectorId": "212725263002001",
+ "Name": "果冻科技有限公司",
+ "Names": "杰尼科技有限公司/果冻科技有限公司",
+ "Code": "1wfUJ6288S",
+ "Category": "COMPANY",
+ "SortCode": "1",
+ "CreateTime": "2024-2-20 16:09:12.727",
+ "UpdateTime": "2024-7-23 09:09:40.967",
+ "CreateUserId": "212725263002001",
+ "UpdateUserId": "",
+ "CreateUser": "superAdmin",
+ "UpdateUser": "",
+ "IsDelete": "0",
+ "ExtJson": "",
+ "Status": "ENABLE",
+ "ParentIdList": "[510753219502149]"
+ },
+ {
+ "Id": "517129906487365",
+ "ParentId": "510753219502149",
+ "DirectorId": "",
+ "Name": "研发部",
+ "Names": "杰尼科技有限公司/研发部",
+ "Code": "OMkYEanrD3",
+ "Category": "DEPT",
+ "SortCode": "99",
+ "CreateTime": "2024-2-20 16:27:02.277",
+ "UpdateTime": "2024-7-23 09:09:40.967",
+ "CreateUserId": "212725263002001",
+ "UpdateUserId": "",
+ "CreateUser": "superAdmin",
+ "UpdateUser": "",
+ "IsDelete": "0",
+ "ExtJson": "",
+ "Status": "ENABLE",
+ "ParentIdList": "[510753219502149]"
+ },
+ {
+ "Id": "517130541625413",
+ "ParentId": "252885263003720",
+ "DirectorId": "",
+ "Name": "研发部",
+ "Names": "果冻科技有限公司/研发部",
+ "Code": "Ql894KJrdb",
+ "Category": "DEPT",
+ "SortCode": "99",
+ "CreateTime": "2024-2-20 16:29:35.677",
+ "UpdateTime": "2024-7-23 09:09:40.967",
+ "CreateUserId": "212725263002001",
+ "UpdateUserId": "",
+ "CreateUser": "superAdmin",
+ "UpdateUser": "",
+ "IsDelete": "0",
+ "ExtJson": "",
+ "Status": "ENABLE",
+ "ParentIdList": "[252885263003720]"
}
]
}
\ No newline at end of file
diff --git a/api/SimpleAdmin/SimpleAdmin.System/SeedData/Json/seed_sys_position.json b/api/SimpleAdmin/SimpleAdmin.System/SeedData/Json/seed_sys_position.json
index 10e217572f902094539f90f96b2118746cd3afc3..4b5ff16d15978743853374f696eec25bd5fc6310 100644
--- a/api/SimpleAdmin/SimpleAdmin.System/SeedData/Json/seed_sys_position.json
+++ b/api/SimpleAdmin/SimpleAdmin.System/SeedData/Json/seed_sys_position.json
@@ -8,12 +8,15 @@
"Category": "HIGH",
"SortCode": "1",
"CreateOrgId": "252885263003720",
- "CreateTime": "",
- "UpdateTime": "",
+ "CreateTime": "2023-8-14 16:19:29.213",
+ "UpdateTime": "2024-7-23 09:09:41.073",
"CreateUserId": "",
"UpdateUserId": "",
+ "CreateUser": "",
+ "UpdateUser": "",
"IsDelete": "0",
- "ExtJson": ""
+ "ExtJson": "",
+ "Status": "ENABLE"
},
{
"Id": "212725263003002",
@@ -23,12 +26,15 @@
"Category": "HIGH",
"SortCode": "2",
"CreateOrgId": "252885263003720",
- "CreateTime": "",
- "UpdateTime": "",
+ "CreateTime": "2023-8-14 16:19:29.217",
+ "UpdateTime": "2024-7-23 09:09:41.073",
"CreateUserId": "",
"UpdateUserId": "",
+ "CreateUser": "",
+ "UpdateUser": "",
"IsDelete": "0",
- "ExtJson": ""
+ "ExtJson": "",
+ "Status": "ENABLE"
},
{
"Id": "212725263003003",
@@ -38,12 +44,15 @@
"Category": "HIGH",
"SortCode": "3",
"CreateOrgId": "252885263003720",
- "CreateTime": "",
- "UpdateTime": "",
+ "CreateTime": "2023-8-14 16:19:29.217",
+ "UpdateTime": "2024-7-23 09:09:41.073",
"CreateUserId": "",
"UpdateUserId": "",
+ "CreateUser": "",
+ "UpdateUser": "",
"IsDelete": "0",
- "ExtJson": ""
+ "ExtJson": "",
+ "Status": "ENABLE"
},
{
"Id": "212725263003004",
@@ -53,12 +62,15 @@
"Category": "HIGH",
"SortCode": "4",
"CreateOrgId": "252885263003720",
- "CreateTime": "",
- "UpdateTime": "",
+ "CreateTime": "2023-8-14 16:19:29.217",
+ "UpdateTime": "2024-7-23 09:09:41.073",
"CreateUserId": "",
"UpdateUserId": "",
+ "CreateUser": "",
+ "UpdateUser": "",
"IsDelete": "0",
- "ExtJson": ""
+ "ExtJson": "",
+ "Status": "ENABLE"
},
{
"Id": "212725263003005",
@@ -68,12 +80,15 @@
"Category": "MIDDLE",
"SortCode": "5",
"CreateOrgId": "252885263003720",
- "CreateTime": "",
- "UpdateTime": "",
+ "CreateTime": "2023-8-14 16:19:29.217",
+ "UpdateTime": "2024-7-23 09:09:41.073",
"CreateUserId": "",
"UpdateUserId": "",
+ "CreateUser": "",
+ "UpdateUser": "",
"IsDelete": "0",
- "ExtJson": ""
+ "ExtJson": "",
+ "Status": "ENABLE"
},
{
"Id": "359569658515525",
@@ -83,12 +98,15 @@
"Category": "MIDDLE",
"SortCode": "99",
"CreateOrgId": "0",
- "CreateTime": "2022-12-2 11:12:43.18",
- "UpdateTime": "2022-12-2 11:13:19.637",
+ "CreateTime": "2023-8-14 16:19:29.217",
+ "UpdateTime": "2024-7-23 09:09:41.073",
"CreateUserId": "212725263002001",
"UpdateUserId": "212725263002001",
+ "CreateUser": "",
+ "UpdateUser": "",
"IsDelete": "0",
- "ExtJson": ""
+ "ExtJson": "",
+ "Status": "ENABLE"
},
{
"Id": "360728646910021",
@@ -98,12 +116,15 @@
"Category": "MIDDLE",
"SortCode": "99",
"CreateOrgId": "0",
- "CreateTime": "2022-12-5 17:48:39.33",
- "UpdateTime": "",
+ "CreateTime": "2023-8-14 16:19:29.217",
+ "UpdateTime": "2024-7-23 09:09:41.073",
"CreateUserId": "212725263002001",
"UpdateUserId": "",
+ "CreateUser": "",
+ "UpdateUser": "",
"IsDelete": "0",
- "ExtJson": ""
+ "ExtJson": "",
+ "Status": "ENABLE"
},
{
"Id": "361407055544389",
@@ -113,12 +134,15 @@
"Category": "LOW",
"SortCode": "99",
"CreateOrgId": "252885263003720",
- "CreateTime": "2022-12-7 15:49:06.44",
- "UpdateTime": "",
+ "CreateTime": "2023-8-14 16:19:29.217",
+ "UpdateTime": "2024-7-23 09:09:41.073",
"CreateUserId": "212725263002001",
"UpdateUserId": "",
+ "CreateUser": "",
+ "UpdateUser": "",
"IsDelete": "0",
- "ExtJson": ""
+ "ExtJson": "",
+ "Status": "ENABLE"
},
{
"Id": "361414036955205",
@@ -128,12 +152,15 @@
"Category": "LOW",
"SortCode": "99",
"CreateOrgId": "252885263003720",
- "CreateTime": "2022-12-7 16:17:30.887",
- "UpdateTime": "",
+ "CreateTime": "2023-8-14 16:19:29.217",
+ "UpdateTime": "2024-7-23 09:09:41.073",
"CreateUserId": "212725263002001",
"UpdateUserId": "",
+ "CreateUser": "",
+ "UpdateUser": "",
"IsDelete": "0",
- "ExtJson": ""
+ "ExtJson": "",
+ "Status": "ENABLE"
},
{
"Id": "361414093332549",
@@ -143,12 +170,15 @@
"Category": "HIGH",
"SortCode": "99",
"CreateOrgId": "252885263003720",
- "CreateTime": "2022-12-7 16:17:44.65",
- "UpdateTime": "",
+ "CreateTime": "2023-8-14 16:19:29.217",
+ "UpdateTime": "2024-7-23 09:09:41.073",
"CreateUserId": "212725263002001",
"UpdateUserId": "",
+ "CreateUser": "",
+ "UpdateUser": "",
"IsDelete": "0",
- "ExtJson": ""
+ "ExtJson": "",
+ "Status": "ENABLE"
},
{
"Id": "361415094177861",
@@ -158,12 +188,141 @@
"Category": "MIDDLE",
"SortCode": "99",
"CreateOrgId": "252885263003720",
- "CreateTime": "2022-12-7 16:21:48.997",
- "UpdateTime": "",
+ "CreateTime": "2023-8-14 16:19:29.217",
+ "UpdateTime": "2024-7-23 09:09:41.073",
"CreateUserId": "212725263002001",
"UpdateUserId": "",
+ "CreateUser": "",
+ "UpdateUser": "",
"IsDelete": "0",
- "ExtJson": ""
+ "ExtJson": "",
+ "Status": "ENABLE"
+ },
+ {
+ "Id": "485593012985925",
+ "OrgId": "464837557956677",
+ "Name": "组长",
+ "Code": "YWUz4Fc794",
+ "Category": "HIGH",
+ "SortCode": "99",
+ "CreateOrgId": "252885263003720",
+ "CreateTime": "2023-11-23 13:43:03.707",
+ "UpdateTime": "2024-7-23 09:09:41.073",
+ "CreateUserId": "212725263002001",
+ "UpdateUserId": "212725263002001",
+ "CreateUser": "superAdmin",
+ "UpdateUser": "superAdmin",
+ "IsDelete": "0",
+ "ExtJson": "",
+ "Status": "ENABLE"
+ },
+ {
+ "Id": "511723823370309",
+ "OrgId": "510752889880645",
+ "Name": "职工",
+ "Code": "2KVZ6Uz3ne",
+ "Category": "LOW",
+ "SortCode": "99",
+ "CreateOrgId": "252885263003720",
+ "CreateTime": "2024-2-5 09:49:36.083",
+ "UpdateTime": "2024-7-23 09:09:41.073",
+ "CreateUserId": "212725263002001",
+ "UpdateUserId": "",
+ "CreateUser": "superAdmin",
+ "UpdateUser": "",
+ "IsDelete": "0",
+ "ExtJson": "",
+ "Status": "ENABLE"
+ },
+ {
+ "Id": "511723919061061",
+ "OrgId": "510753093025861",
+ "Name": "董事长",
+ "Code": "4RbqYeVTG7",
+ "Category": "HIGH",
+ "SortCode": "99",
+ "CreateOrgId": "252885263003720",
+ "CreateTime": "2024-2-5 09:49:59.447",
+ "UpdateTime": "2024-7-23 09:09:41.073",
+ "CreateUserId": "212725263002001",
+ "UpdateUserId": "",
+ "CreateUser": "superAdmin",
+ "UpdateUser": "",
+ "IsDelete": "0",
+ "ExtJson": "",
+ "Status": "ENABLE"
+ },
+ {
+ "Id": "511723963043909",
+ "OrgId": "510753219502149",
+ "Name": "董事长",
+ "Code": "50wshEGBxd",
+ "Category": "HIGH",
+ "SortCode": "99",
+ "CreateOrgId": "252885263003720",
+ "CreateTime": "2024-2-5 09:50:10.187",
+ "UpdateTime": "2024-7-23 09:09:41.073",
+ "CreateUserId": "212725263002001",
+ "UpdateUserId": "",
+ "CreateUser": "superAdmin",
+ "UpdateUser": "",
+ "IsDelete": "0",
+ "ExtJson": "",
+ "Status": "ENABLE"
+ },
+ {
+ "Id": "517095081300037",
+ "OrgId": "517088662995013",
+ "Name": "研发部经理",
+ "Code": "KXs5l2W2v9",
+ "Category": "HIGH",
+ "SortCode": "99",
+ "CreateOrgId": "510752889880645",
+ "CreateTime": "2024-2-20 14:05:18.353",
+ "UpdateTime": "2024-7-23 09:09:41.073",
+ "CreateUserId": "511724553736261",
+ "UpdateUserId": "",
+ "CreateUser": "旺仔科技管理员",
+ "UpdateUser": "",
+ "IsDelete": "0",
+ "ExtJson": "",
+ "Status": "ENABLE"
+ },
+ {
+ "Id": "517129906495557",
+ "OrgId": "517129906487365",
+ "Name": "研发部经理",
+ "Code": "KXs5A2W3v9",
+ "Category": "HIGH",
+ "SortCode": "99",
+ "CreateOrgId": "252885263003720",
+ "CreateTime": "2024-2-20 16:27:02.323",
+ "UpdateTime": "2024-7-23 09:09:41.073",
+ "CreateUserId": "212725263002001",
+ "UpdateUserId": "212725263002001",
+ "CreateUser": "superAdmin",
+ "UpdateUser": "superAdmin",
+ "IsDelete": "0",
+ "ExtJson": "",
+ "Status": "ENABLE"
+ },
+ {
+ "Id": "517130541629509",
+ "OrgId": "517130541625413",
+ "Name": "研发部经理",
+ "Code": "0EyfLIDRJC",
+ "Category": "HIGH",
+ "SortCode": "99",
+ "CreateOrgId": "252885263003720",
+ "CreateTime": "2024-2-20 16:29:35.687",
+ "UpdateTime": "2024-7-23 09:09:41.073",
+ "CreateUserId": "212725263002001",
+ "UpdateUserId": "",
+ "CreateUser": "superAdmin",
+ "UpdateUser": "",
+ "IsDelete": "0",
+ "ExtJson": "",
+ "Status": "ENABLE"
}
]
}
\ No newline at end of file
diff --git a/api/SimpleAdmin/SimpleAdmin.System/SeedData/Json/seed_sys_relation.json b/api/SimpleAdmin/SimpleAdmin.System/SeedData/Json/seed_sys_relation.json
index c8c0b359079914ca74603289197dbb781095b2c0..a3b6dafe26be880de77a3814372d28ca1765687f 100644
--- a/api/SimpleAdmin/SimpleAdmin.System/SeedData/Json/seed_sys_relation.json
+++ b/api/SimpleAdmin/SimpleAdmin.System/SeedData/Json/seed_sys_relation.json
@@ -8,1467 +8,3098 @@
"ExtJson": ""
},
{
- "Id": "212725263003113",
+ "Id": "361376304689221",
+ "ObjectId": "359177888051269",
+ "TargetId": "360646662586437",
+ "Category": "SYS_USER_HAS_ROLE",
+ "ExtJson": ""
+ },
+ {
+ "Id": "361406212943941",
+ "ObjectId": "361405857865797",
+ "TargetId": "359567292014661",
+ "Category": "SYS_USER_HAS_ROLE",
+ "ExtJson": ""
+ },
+ {
+ "Id": "361406234341445",
+ "ObjectId": "361405930270789",
+ "TargetId": "360645671104581",
+ "Category": "SYS_USER_HAS_ROLE",
+ "ExtJson": ""
+ },
+ {
+ "Id": "361424325550149",
+ "ObjectId": "361406147739717",
+ "TargetId": "360646281904197",
+ "Category": "SYS_USER_HAS_ROLE",
+ "ExtJson": ""
+ },
+ {
+ "Id": "391885190627397",
+ "ObjectId": "361405857865797",
+ "TargetId": "",
+ "Category": "SYS_USER_WORKBENCH_DATA",
+ "ExtJson": "{\"shortcut\":[{\"id\":212725263003722,\"title\":\"系统首页\",\"icon\":\"home-outlined\",\"path\":\"/index\"},{\"id\":212725263003723,\"title\":\"个人中心\",\"icon\":\"appstore-outlined\",\"path\":\"/usercenter\"}]}"
+ },
+ {
+ "Id": "396380690288709",
+ "ObjectId": "381871212765253",
+ "TargetId": "212755263003745",
+ "Category": "SYS_USER_HAS_RESOURCE",
+ "ExtJson": "{\"MenuId\":212755263003745,\"ButtonInfo\":[212825263004728,212825263004729,212825263004730,212825263004731,383020955254853,383022400483397]}"
+ },
+ {
+ "Id": "396380690300997",
+ "ObjectId": "381871212765253",
+ "TargetId": "/biz/organization/org/tree",
+ "Category": "SYS_USER_HAS_PERMISSION",
+ "ExtJson": "{\"ScopeCategory\":\"SCOPE_ALL\",\"ScopeDefineOrgIdList\":[],\"ApiUrl\":\"/biz/org/tree\"}"
+ },
+ {
+ "Id": "396380690300998",
+ "ObjectId": "381871212765253",
+ "TargetId": "/biz/organization/org/page",
+ "Category": "SYS_USER_HAS_PERMISSION",
+ "ExtJson": "{\"ScopeCategory\":\"SCOPE_ALL\",\"ScopeDefineOrgIdList\":[],\"ApiUrl\":\"/biz/org/page\"}"
+ },
+ {
+ "Id": "396380690300999",
+ "ObjectId": "381871212765253",
+ "TargetId": "/biz/organization/org/add",
+ "Category": "SYS_USER_HAS_PERMISSION",
+ "ExtJson": "{\"ScopeCategory\":\"SCOPE_ALL\",\"ScopeDefineOrgIdList\":[],\"ApiUrl\":\"/biz/org/add\"}"
+ },
+ {
+ "Id": "396380690301000",
+ "ObjectId": "381871212765253",
+ "TargetId": "/biz/organization/org/edit",
+ "Category": "SYS_USER_HAS_PERMISSION",
+ "ExtJson": "{\"ScopeCategory\":\"SCOPE_ALL\",\"ScopeDefineOrgIdList\":[],\"ApiUrl\":\"/biz/org/edit\"}"
+ },
+ {
+ "Id": "396380690301001",
+ "ObjectId": "381871212765253",
+ "TargetId": "/biz/organization/org/copy",
+ "Category": "SYS_USER_HAS_PERMISSION",
+ "ExtJson": "{\"ScopeCategory\":\"SCOPE_ALL\",\"ScopeDefineOrgIdList\":[],\"ApiUrl\":\"/biz/org/copy\"}"
+ },
+ {
+ "Id": "396380690301002",
+ "ObjectId": "381871212765253",
+ "TargetId": "/biz/organization/org/delete",
+ "Category": "SYS_USER_HAS_PERMISSION",
+ "ExtJson": "{\"ScopeCategory\":\"SCOPE_ALL\",\"ScopeDefineOrgIdList\":[],\"ApiUrl\":\"/biz/org/delete\"}"
+ },
+ {
+ "Id": "396380690301003",
+ "ObjectId": "381871212765253",
+ "TargetId": "/biz/organization/org/orgTreeSelector",
+ "Category": "SYS_USER_HAS_PERMISSION",
+ "ExtJson": "{\"ScopeCategory\":\"SCOPE_ALL\",\"ScopeDefineOrgIdList\":[],\"ApiUrl\":\"/biz/org/orgTreeSelector\"}"
+ },
+ {
+ "Id": "396380690301004",
+ "ObjectId": "381871212765253",
+ "TargetId": "/biz/organization/org/userSelector",
+ "Category": "SYS_USER_HAS_PERMISSION",
+ "ExtJson": "{\"ScopeCategory\":\"SCOPE_ALL\",\"ScopeDefineOrgIdList\":[],\"ApiUrl\":\"/biz/org/userSelector\"}"
+ },
+ {
+ "Id": "425798456791109",
+ "ObjectId": "212725263001001",
+ "TargetId": "425472310554693",
+ "Category": "SYS_ROLE_HAS_MOBILE_RESOURCE",
+ "ExtJson": "{\"MenuId\":425472310554693,\"ButtonInfo\":[425710965174341,425711012839493,425711060901957]}"
+ },
+ {
+ "Id": "425798456791110",
+ "ObjectId": "212725263001001",
+ "TargetId": "425472601616453",
+ "Category": "SYS_ROLE_HAS_MOBILE_RESOURCE",
+ "ExtJson": "{\"MenuId\":425472601616453,\"ButtonInfo\":[425711343288389,425711397343301,425711457501253]}"
+ },
+ {
+ "Id": "425798456791111",
+ "ObjectId": "212725263001001",
+ "TargetId": "425472851824709",
+ "Category": "SYS_ROLE_HAS_MOBILE_RESOURCE",
+ "ExtJson": "{\"MenuId\":425472851824709,\"ButtonInfo\":[425711559307333,425711600533573,425711647805509]}"
+ },
+ {
+ "Id": "425798456791112",
+ "ObjectId": "212725263001001",
+ "TargetId": "425474847338565",
+ "Category": "SYS_ROLE_HAS_MOBILE_RESOURCE",
+ "ExtJson": "{\"MenuId\":425474847338565,\"ButtonInfo\":[]}"
+ },
+ {
+ "Id": "425798456791113",
+ "ObjectId": "212725263001001",
+ "TargetId": "425476704763973",
+ "Category": "SYS_ROLE_HAS_MOBILE_RESOURCE",
+ "ExtJson": "{\"MenuId\":425476704763973,\"ButtonInfo\":[]}"
+ },
+ {
+ "Id": "428982141747269",
+ "ObjectId": "361405857865797",
+ "TargetId": "359567292014661",
+ "Category": "SYS_USER_HAS_ROLE",
+ "ExtJson": ""
+ },
+ {
+ "Id": "428982141751365",
+ "ObjectId": "212725263002001",
+ "TargetId": "359567292014661",
+ "Category": "SYS_USER_HAS_ROLE",
+ "ExtJson": ""
+ },
+ {
+ "Id": "493059010035781",
+ "ObjectId": "212725263002001",
+ "TargetId": "212725263001001",
+ "Category": "SYS_USER_HAS_ROLE",
+ "ExtJson": ""
+ },
+ {
+ "Id": "493420102176837",
+ "ObjectId": "363085233066053",
+ "TargetId": "212755263003745",
+ "Category": "SYS_USER_HAS_RESOURCE",
+ "ExtJson": "{\"MenuId\":212755263003745,\"ButtonInfo\":[212825263004728,212825263004729,212825263004730,212825263004731,383020955254853,383022400483397]}"
+ },
+ {
+ "Id": "493420102176838",
+ "ObjectId": "363085233066053",
+ "TargetId": "212755263003743",
+ "Category": "SYS_USER_HAS_MODULE",
+ "ExtJson": ""
+ },
+ {
+ "Id": "493420102176839",
+ "ObjectId": "363085233066053",
+ "TargetId": "/biz/organization/org/tree",
+ "Category": "SYS_USER_HAS_PERMISSION",
+ "ExtJson": "{\"ScopeCategory\":\"SCOPE_SELF\",\"ScopeDefineOrgIdList\":[],\"ApiUrl\":\"/biz/org/tree\"}"
+ },
+ {
+ "Id": "493420102176840",
+ "ObjectId": "363085233066053",
+ "TargetId": "/biz/organization/org/page",
+ "Category": "SYS_USER_HAS_PERMISSION",
+ "ExtJson": "{\"ScopeCategory\":\"SCOPE_SELF\",\"ScopeDefineOrgIdList\":[],\"ApiUrl\":\"/biz/org/page\"}"
+ },
+ {
+ "Id": "493420102176841",
+ "ObjectId": "363085233066053",
+ "TargetId": "/biz/organization/org/add",
+ "Category": "SYS_USER_HAS_PERMISSION",
+ "ExtJson": "{\"ScopeCategory\":\"SCOPE_SELF\",\"ScopeDefineOrgIdList\":[],\"ApiUrl\":\"/biz/org/add\"}"
+ },
+ {
+ "Id": "493420102176842",
+ "ObjectId": "363085233066053",
+ "TargetId": "/biz/organization/org/edit",
+ "Category": "SYS_USER_HAS_PERMISSION",
+ "ExtJson": "{\"ScopeCategory\":\"SCOPE_SELF\",\"ScopeDefineOrgIdList\":[],\"ApiUrl\":\"/biz/org/edit\"}"
+ },
+ {
+ "Id": "493420102176843",
+ "ObjectId": "363085233066053",
+ "TargetId": "/biz/organization/org/copy",
+ "Category": "SYS_USER_HAS_PERMISSION",
+ "ExtJson": "{\"ScopeCategory\":\"SCOPE_SELF\",\"ScopeDefineOrgIdList\":[],\"ApiUrl\":\"/biz/org/copy\"}"
+ },
+ {
+ "Id": "493420102176844",
+ "ObjectId": "363085233066053",
+ "TargetId": "/biz/organization/org/delete",
+ "Category": "SYS_USER_HAS_PERMISSION",
+ "ExtJson": "{\"ScopeCategory\":\"SCOPE_SELF\",\"ScopeDefineOrgIdList\":[],\"ApiUrl\":\"/biz/org/delete\"}"
+ },
+ {
+ "Id": "493420102176845",
+ "ObjectId": "363085233066053",
+ "TargetId": "/biz/organization/org/orgTreeSelector",
+ "Category": "SYS_USER_HAS_PERMISSION",
+ "ExtJson": "{\"ScopeCategory\":\"SCOPE_SELF\",\"ScopeDefineOrgIdList\":[],\"ApiUrl\":\"/biz/org/orgTreeSelector\"}"
+ },
+ {
+ "Id": "493420102176846",
+ "ObjectId": "363085233066053",
+ "TargetId": "/biz/organization/org/userSelector",
+ "Category": "SYS_USER_HAS_PERMISSION",
+ "ExtJson": "{\"ScopeCategory\":\"SCOPE_SELF\",\"ScopeDefineOrgIdList\":[],\"ApiUrl\":\"/biz/org/userSelector\"}"
+ },
+ {
+ "Id": "493420102176847",
+ "ObjectId": "363085233066053",
+ "TargetId": "/biz/organization/org/detail",
+ "Category": "SYS_USER_HAS_PERMISSION",
+ "ExtJson": "{\"ScopeCategory\":\"SCOPE_SELF\",\"ScopeDefineOrgIdList\":[],\"ApiUrl\":\"/biz/org/detail\"}"
+ },
+ {
+ "Id": "511793721868357",
+ "ObjectId": "511724755705925",
+ "TargetId": "511793641513029",
+ "Category": "SYS_USER_HAS_ROLE",
+ "ExtJson": ""
+ },
+ {
+ "Id": "511793721868358",
+ "ObjectId": "511724553736261",
+ "TargetId": "511793641513029",
+ "Category": "SYS_USER_HAS_ROLE",
+ "ExtJson": ""
+ },
+ {
+ "Id": "511793721868359",
+ "ObjectId": "511724397056069",
+ "TargetId": "511793641513029",
+ "Category": "SYS_USER_HAS_ROLE",
+ "ExtJson": ""
+ },
+ {
+ "Id": "511793721868360",
+ "ObjectId": "511724668047429",
+ "TargetId": "511793641513029",
+ "Category": "SYS_USER_HAS_ROLE",
+ "ExtJson": ""
+ },
+ {
+ "Id": "511793776644165",
"ObjectId": "212725263002002",
"TargetId": "212725263001002",
"Category": "SYS_USER_HAS_ROLE",
"ExtJson": ""
},
{
- "Id": "212725263003300",
- "ObjectId": "212725263002001",
- "TargetId": "",
- "Category": "SYS_USER_WORKBENCH_DATA",
- "ExtJson": "{\"Shortcut\":[{\"Id\":212725263003723,\"Title\":\"个人中心\",\"Icon\":\"appstore-outlined\",\"Path\":\"/usercenter\"},{\"Id\":212745263003737,\"Title\":\"系统配置\",\"Icon\":\"appstore-outlined\",\"Path\":\"/sys/config\"}]}"
+ "Id": "516759017201733",
+ "ObjectId": "359567292014661",
+ "TargetId": "212755263003743",
+ "Category": "SYS_ROLE_HAS_MODULE",
+ "ExtJson": ""
+ },
+ {
+ "Id": "516759017201734",
+ "ObjectId": "359567292014661",
+ "TargetId": "212755263003745",
+ "Category": "SYS_ROLE_HAS_RESOURCE",
+ "ExtJson": "{\"MenuId\":212755263003745,\"ButtonInfo\":[212825263004728,212825263004729,212825263004730,212825263004731,383020955254853,383022400483397]}"
+ },
+ {
+ "Id": "516759017201735",
+ "ObjectId": "359567292014661",
+ "TargetId": "212755263003746",
+ "Category": "SYS_ROLE_HAS_RESOURCE",
+ "ExtJson": "{\"MenuId\":212755263003746,\"ButtonInfo\":[212825263005734,212825263005735,212825263005736,212825263005737,212825263005738,212825263005739,212825263005740,391869166551109,391869250662469,395712751292485]}"
+ },
+ {
+ "Id": "516759017201736",
+ "ObjectId": "359567292014661",
+ "TargetId": "212755263003747",
+ "Category": "SYS_ROLE_HAS_RESOURCE",
+ "ExtJson": "{\"MenuId\":212755263003747,\"ButtonInfo\":[212825263006739,212825263006749,212825263006750,212825263006751]}"
+ },
+ {
+ "Id": "516759017201737",
+ "ObjectId": "359567292014661",
+ "TargetId": "/biz/organization/org/tree",
+ "Category": "SYS_ROLE_HAS_PERMISSION",
+ "ExtJson": "{\"ScopeCategory\":\"SCOPE_ORG_CHILD\",\"ScopeDefineOrgIdList\":[],\"ApiUrl\":\"/biz/organization/org/tree\"}"
+ },
+ {
+ "Id": "516759017201738",
+ "ObjectId": "359567292014661",
+ "TargetId": "/biz/organization/org/page",
+ "Category": "SYS_ROLE_HAS_PERMISSION",
+ "ExtJson": "{\"ScopeCategory\":\"SCOPE_ORG_CHILD\",\"ScopeDefineOrgIdList\":[],\"ApiUrl\":\"/biz/organization/org/page\"}"
+ },
+ {
+ "Id": "516759017201739",
+ "ObjectId": "359567292014661",
+ "TargetId": "/biz/organization/org/add",
+ "Category": "SYS_ROLE_HAS_PERMISSION",
+ "ExtJson": "{\"ScopeCategory\":\"SCOPE_ORG_CHILD\",\"ScopeDefineOrgIdList\":[],\"ApiUrl\":\"/biz/organization/org/add\"}"
+ },
+ {
+ "Id": "516759017201740",
+ "ObjectId": "359567292014661",
+ "TargetId": "/biz/organization/org/edit",
+ "Category": "SYS_ROLE_HAS_PERMISSION",
+ "ExtJson": "{\"ScopeCategory\":\"SCOPE_ORG_CHILD\",\"ScopeDefineOrgIdList\":[],\"ApiUrl\":\"/biz/organization/org/edit\"}"
+ },
+ {
+ "Id": "516759017201741",
+ "ObjectId": "359567292014661",
+ "TargetId": "/biz/organization/org/copy",
+ "Category": "SYS_ROLE_HAS_PERMISSION",
+ "ExtJson": "{\"ScopeCategory\":\"SCOPE_ORG_CHILD\",\"ScopeDefineOrgIdList\":[],\"ApiUrl\":\"/biz/organization/org/copy\"}"
+ },
+ {
+ "Id": "516759017201742",
+ "ObjectId": "359567292014661",
+ "TargetId": "/biz/organization/org/delete",
+ "Category": "SYS_ROLE_HAS_PERMISSION",
+ "ExtJson": "{\"ScopeCategory\":\"SCOPE_ORG_CHILD\",\"ScopeDefineOrgIdList\":[],\"ApiUrl\":\"/biz/organization/org/delete\"}"
+ },
+ {
+ "Id": "516759017201743",
+ "ObjectId": "359567292014661",
+ "TargetId": "/biz/organization/org/orgTreeSelector",
+ "Category": "SYS_ROLE_HAS_PERMISSION",
+ "ExtJson": "{\"ScopeCategory\":\"SCOPE_ORG_CHILD\",\"ScopeDefineOrgIdList\":[],\"ApiUrl\":\"/biz/organization/org/orgTreeSelector\"}"
+ },
+ {
+ "Id": "516759017201744",
+ "ObjectId": "359567292014661",
+ "TargetId": "/biz/organization/org/userSelector",
+ "Category": "SYS_ROLE_HAS_PERMISSION",
+ "ExtJson": "{\"ScopeCategory\":\"SCOPE_ORG_CHILD\",\"ScopeDefineOrgIdList\":[],\"ApiUrl\":\"/biz/organization/org/userSelector\"}"
+ },
+ {
+ "Id": "516759017201745",
+ "ObjectId": "359567292014661",
+ "TargetId": "/biz/organization/org/detail",
+ "Category": "SYS_ROLE_HAS_PERMISSION",
+ "ExtJson": "{\"ScopeCategory\":\"SCOPE_ORG_CHILD\",\"ScopeDefineOrgIdList\":[],\"ApiUrl\":\"/biz/organization/org/detail\"}"
+ },
+ {
+ "Id": "516759017201746",
+ "ObjectId": "359567292014661",
+ "TargetId": "/biz/organization/position/page",
+ "Category": "SYS_ROLE_HAS_PERMISSION",
+ "ExtJson": "{\"ScopeCategory\":\"SCOPE_ORG_CHILD\",\"ScopeDefineOrgIdList\":[],\"ApiUrl\":\"/biz/organization/position/page\"}"
+ },
+ {
+ "Id": "516759017201747",
+ "ObjectId": "359567292014661",
+ "TargetId": "/biz/organization/position/add",
+ "Category": "SYS_ROLE_HAS_PERMISSION",
+ "ExtJson": "{\"ScopeCategory\":\"SCOPE_ORG_CHILD\",\"ScopeDefineOrgIdList\":[],\"ApiUrl\":\"/biz/organization/position/add\"}"
+ },
+ {
+ "Id": "516759017205829",
+ "ObjectId": "359567292014661",
+ "TargetId": "/biz/organization/position/edit",
+ "Category": "SYS_ROLE_HAS_PERMISSION",
+ "ExtJson": "{\"ScopeCategory\":\"SCOPE_ORG_CHILD\",\"ScopeDefineOrgIdList\":[],\"ApiUrl\":\"/biz/organization/position/edit\"}"
+ },
+ {
+ "Id": "516759017205830",
+ "ObjectId": "359567292014661",
+ "TargetId": "/biz/organization/position/delete",
+ "Category": "SYS_ROLE_HAS_PERMISSION",
+ "ExtJson": "{\"ScopeCategory\":\"SCOPE_ORG_CHILD\",\"ScopeDefineOrgIdList\":[],\"ApiUrl\":\"/biz/organization/position/delete\"}"
+ },
+ {
+ "Id": "516759017205831",
+ "ObjectId": "359567292014661",
+ "TargetId": "/biz/organization/position/detail",
+ "Category": "SYS_ROLE_HAS_PERMISSION",
+ "ExtJson": "{\"ScopeCategory\":\"SCOPE_ORG_CHILD\",\"ScopeDefineOrgIdList\":[],\"ApiUrl\":\"/biz/organization/position/detail\"}"
+ },
+ {
+ "Id": "516759017205832",
+ "ObjectId": "359567292014661",
+ "TargetId": "/biz/organization/position/selector",
+ "Category": "SYS_ROLE_HAS_PERMISSION",
+ "ExtJson": "{\"ScopeCategory\":\"SCOPE_ORG_CHILD\",\"ScopeDefineOrgIdList\":[],\"ApiUrl\":\"/biz/organization/position/selector\"}"
+ },
+ {
+ "Id": "516759017205833",
+ "ObjectId": "359567292014661",
+ "TargetId": "/biz/organization/user/preview",
+ "Category": "SYS_ROLE_HAS_PERMISSION",
+ "ExtJson": "{\"ScopeCategory\":\"SCOPE_ORG_CHILD\",\"ScopeDefineOrgIdList\":[],\"ApiUrl\":\"/biz/organization/user/preview\"}"
+ },
+ {
+ "Id": "516759017205834",
+ "ObjectId": "359567292014661",
+ "TargetId": "/biz/organization/user/page",
+ "Category": "SYS_ROLE_HAS_PERMISSION",
+ "ExtJson": "{\"ScopeCategory\":\"SCOPE_ORG_CHILD\",\"ScopeDefineOrgIdList\":[],\"ApiUrl\":\"/biz/organization/user/page\"}"
+ },
+ {
+ "Id": "516759017205835",
+ "ObjectId": "359567292014661",
+ "TargetId": "/biz/organization/user/userSelector",
+ "Category": "SYS_ROLE_HAS_PERMISSION",
+ "ExtJson": "{\"ScopeCategory\":\"SCOPE_ORG_CHILD\",\"ScopeDefineOrgIdList\":[],\"ApiUrl\":\"/biz/organization/user/userSelector\"}"
+ },
+ {
+ "Id": "516759017205836",
+ "ObjectId": "359567292014661",
+ "TargetId": "/biz/organization/user/ownRole",
+ "Category": "SYS_ROLE_HAS_PERMISSION",
+ "ExtJson": "{\"ScopeCategory\":\"SCOPE_ORG_CHILD\",\"ScopeDefineOrgIdList\":[],\"ApiUrl\":\"/biz/organization/user/ownRole\"}"
+ },
+ {
+ "Id": "516759017205837",
+ "ObjectId": "359567292014661",
+ "TargetId": "/biz/organization/user/detail",
+ "Category": "SYS_ROLE_HAS_PERMISSION",
+ "ExtJson": "{\"ScopeCategory\":\"SCOPE_ORG_CHILD\",\"ScopeDefineOrgIdList\":[],\"ApiUrl\":\"/biz/organization/user/detail\"}"
+ },
+ {
+ "Id": "516759017205838",
+ "ObjectId": "359567292014661",
+ "TargetId": "/biz/organization/user/add",
+ "Category": "SYS_ROLE_HAS_PERMISSION",
+ "ExtJson": "{\"ScopeCategory\":\"SCOPE_ORG_CHILD\",\"ScopeDefineOrgIdList\":[],\"ApiUrl\":\"/biz/organization/user/add\"}"
+ },
+ {
+ "Id": "516759017205839",
+ "ObjectId": "359567292014661",
+ "TargetId": "/biz/organization/user/edit",
+ "Category": "SYS_ROLE_HAS_PERMISSION",
+ "ExtJson": "{\"ScopeCategory\":\"SCOPE_ORG_CHILD\",\"ScopeDefineOrgIdList\":[],\"ApiUrl\":\"/biz/organization/user/edit\"}"
+ },
+ {
+ "Id": "516759017205840",
+ "ObjectId": "359567292014661",
+ "TargetId": "/biz/organization/user/edits",
+ "Category": "SYS_ROLE_HAS_PERMISSION",
+ "ExtJson": "{\"ScopeCategory\":\"SCOPE_ORG_CHILD\",\"ScopeDefineOrgIdList\":[],\"ApiUrl\":\"/biz/organization/user/edits\"}"
+ },
+ {
+ "Id": "516759017205841",
+ "ObjectId": "359567292014661",
+ "TargetId": "/biz/organization/user/delete",
+ "Category": "SYS_ROLE_HAS_PERMISSION",
+ "ExtJson": "{\"ScopeCategory\":\"SCOPE_ORG_CHILD\",\"ScopeDefineOrgIdList\":[],\"ApiUrl\":\"/biz/organization/user/delete\"}"
+ },
+ {
+ "Id": "516759017205842",
+ "ObjectId": "359567292014661",
+ "TargetId": "/biz/organization/user/disableUser",
+ "Category": "SYS_ROLE_HAS_PERMISSION",
+ "ExtJson": "{\"ScopeCategory\":\"SCOPE_ORG_CHILD\",\"ScopeDefineOrgIdList\":[],\"ApiUrl\":\"/biz/organization/user/disableUser\"}"
+ },
+ {
+ "Id": "516759017205843",
+ "ObjectId": "359567292014661",
+ "TargetId": "/biz/organization/user/enableUser",
+ "Category": "SYS_ROLE_HAS_PERMISSION",
+ "ExtJson": "{\"ScopeCategory\":\"SCOPE_ORG_CHILD\",\"ScopeDefineOrgIdList\":[],\"ApiUrl\":\"/biz/organization/user/enableUser\"}"
+ },
+ {
+ "Id": "516759017205844",
+ "ObjectId": "359567292014661",
+ "TargetId": "/biz/organization/user/resetPassword",
+ "Category": "SYS_ROLE_HAS_PERMISSION",
+ "ExtJson": "{\"ScopeCategory\":\"SCOPE_ORG_CHILD\",\"ScopeDefineOrgIdList\":[],\"ApiUrl\":\"/biz/organization/user/resetPassword\"}"
+ },
+ {
+ "Id": "516759017205845",
+ "ObjectId": "359567292014661",
+ "TargetId": "/biz/organization/user/grantRole",
+ "Category": "SYS_ROLE_HAS_PERMISSION",
+ "ExtJson": "{\"ScopeCategory\":\"SCOPE_ORG_CHILD\",\"ScopeDefineOrgIdList\":[],\"ApiUrl\":\"/biz/organization/user/grantRole\"}"
+ },
+ {
+ "Id": "516759017205846",
+ "ObjectId": "359567292014661",
+ "TargetId": "/biz/organization/user/import",
+ "Category": "SYS_ROLE_HAS_PERMISSION",
+ "ExtJson": "{\"ScopeCategory\":\"SCOPE_ORG_CHILD\",\"ScopeDefineOrgIdList\":[],\"ApiUrl\":\"/biz/organization/user/import\"}"
+ },
+ {
+ "Id": "516759017205847",
+ "ObjectId": "359567292014661",
+ "TargetId": "/biz/organization/user/export",
+ "Category": "SYS_ROLE_HAS_PERMISSION",
+ "ExtJson": "{\"ScopeCategory\":\"SCOPE_ORG_CHILD\",\"ScopeDefineOrgIdList\":[],\"ApiUrl\":\"/biz/organization/user/export\"}"
+ },
+ {
+ "Id": "516759017205848",
+ "ObjectId": "359567292014661",
+ "TargetId": "/home/index/visLog/list",
+ "Category": "SYS_ROLE_HAS_PERMISSION",
+ "ExtJson": "{\"ScopeCategory\":\"SCOPE_ORG_CHILD\",\"ScopeDefineOrgIdList\":[],\"ApiUrl\":\"/home/index/visLog/list\"}"
+ },
+ {
+ "Id": "516759017205849",
+ "ObjectId": "359567292014661",
+ "TargetId": "/home/index/opLog/list",
+ "Category": "SYS_ROLE_HAS_PERMISSION",
+ "ExtJson": "{\"ScopeCategory\":\"SCOPE_ORG_CHILD\",\"ScopeDefineOrgIdList\":[],\"ApiUrl\":\"/home/index/opLog/list\"}"
+ },
+ {
+ "Id": "516759017205850",
+ "ObjectId": "359567292014661",
+ "TargetId": "/home/index/message/list",
+ "Category": "SYS_ROLE_HAS_PERMISSION",
+ "ExtJson": "{\"ScopeCategory\":\"SCOPE_ORG_CHILD\",\"ScopeDefineOrgIdList\":[],\"ApiUrl\":\"/home/index/message/list\"}"
+ },
+ {
+ "Id": "516759017205851",
+ "ObjectId": "359567292014661",
+ "TargetId": "/home/index/schedule/list",
+ "Category": "SYS_ROLE_HAS_PERMISSION",
+ "ExtJson": "{\"ScopeCategory\":\"SCOPE_ORG_CHILD\",\"ScopeDefineOrgIdList\":[],\"ApiUrl\":\"/home/index/schedule/list\"}"
+ },
+ {
+ "Id": "516759017205852",
+ "ObjectId": "359567292014661",
+ "TargetId": "/home/index/schedule/add",
+ "Category": "SYS_ROLE_HAS_PERMISSION",
+ "ExtJson": "{\"ScopeCategory\":\"SCOPE_ORG_CHILD\",\"ScopeDefineOrgIdList\":[],\"ApiUrl\":\"/home/index/schedule/add\"}"
+ },
+ {
+ "Id": "516759017205853",
+ "ObjectId": "359567292014661",
+ "TargetId": "/home/index/schedule/deleteSchedule",
+ "Category": "SYS_ROLE_HAS_PERMISSION",
+ "ExtJson": "{\"ScopeCategory\":\"SCOPE_ORG_CHILD\",\"ScopeDefineOrgIdList\":[],\"ApiUrl\":\"/home/index/schedule/deleteSchedule\"}"
+ },
+ {
+ "Id": "516759049244741",
+ "ObjectId": "360645671104581",
+ "TargetId": "212755263003743",
+ "Category": "SYS_ROLE_HAS_MODULE",
+ "ExtJson": ""
+ },
+ {
+ "Id": "516759049244742",
+ "ObjectId": "360645671104581",
+ "TargetId": "212755263003745",
+ "Category": "SYS_ROLE_HAS_RESOURCE",
+ "ExtJson": "{\"MenuId\":212755263003745,\"ButtonInfo\":[212825263004728,212825263004729,212825263004730,212825263004731,383020955254853,383022400483397]}"
+ },
+ {
+ "Id": "516759049244743",
+ "ObjectId": "360645671104581",
+ "TargetId": "212755263003746",
+ "Category": "SYS_ROLE_HAS_RESOURCE",
+ "ExtJson": "{\"MenuId\":212755263003746,\"ButtonInfo\":[212825263005734,212825263005735,212825263005736,212825263005737,212825263005738,212825263005739,212825263005740,391869166551109,391869250662469,395712751292485]}"
+ },
+ {
+ "Id": "516759049244744",
+ "ObjectId": "360645671104581",
+ "TargetId": "212755263003747",
+ "Category": "SYS_ROLE_HAS_RESOURCE",
+ "ExtJson": "{\"MenuId\":212755263003747,\"ButtonInfo\":[212825263006739,212825263006749,212825263006750,212825263006751]}"
+ },
+ {
+ "Id": "516759049244745",
+ "ObjectId": "360645671104581",
+ "TargetId": "/biz/organization/org/tree",
+ "Category": "SYS_ROLE_HAS_PERMISSION",
+ "ExtJson": "{\"ScopeCategory\":\"SCOPE_ORG\",\"ScopeDefineOrgIdList\":[360642028625989,361404296994885],\"ApiUrl\":\"/biz/organization/org/tree\"}"
+ },
+ {
+ "Id": "516759049244746",
+ "ObjectId": "360645671104581",
+ "TargetId": "/biz/organization/org/page",
+ "Category": "SYS_ROLE_HAS_PERMISSION",
+ "ExtJson": "{\"ScopeCategory\":\"SCOPE_ORG\",\"ScopeDefineOrgIdList\":[360642028625989,361404296994885],\"ApiUrl\":\"/biz/organization/org/page\"}"
+ },
+ {
+ "Id": "516759049244747",
+ "ObjectId": "360645671104581",
+ "TargetId": "/biz/organization/org/add",
+ "Category": "SYS_ROLE_HAS_PERMISSION",
+ "ExtJson": "{\"ScopeCategory\":\"SCOPE_ORG\",\"ScopeDefineOrgIdList\":[360642028625989,361404296994885],\"ApiUrl\":\"/biz/organization/org/add\"}"
+ },
+ {
+ "Id": "516759049244748",
+ "ObjectId": "360645671104581",
+ "TargetId": "/biz/organization/org/edit",
+ "Category": "SYS_ROLE_HAS_PERMISSION",
+ "ExtJson": "{\"ScopeCategory\":\"SCOPE_ORG\",\"ScopeDefineOrgIdList\":[360642028625989,361404296994885],\"ApiUrl\":\"/biz/organization/org/edit\"}"
+ },
+ {
+ "Id": "516759049244749",
+ "ObjectId": "360645671104581",
+ "TargetId": "/biz/organization/org/copy",
+ "Category": "SYS_ROLE_HAS_PERMISSION",
+ "ExtJson": "{\"ScopeCategory\":\"SCOPE_ORG\",\"ScopeDefineOrgIdList\":[360642028625989,361404296994885],\"ApiUrl\":\"/biz/organization/org/copy\"}"
+ },
+ {
+ "Id": "516759049244750",
+ "ObjectId": "360645671104581",
+ "TargetId": "/biz/organization/org/delete",
+ "Category": "SYS_ROLE_HAS_PERMISSION",
+ "ExtJson": "{\"ScopeCategory\":\"SCOPE_ORG\",\"ScopeDefineOrgIdList\":[360642028625989,361404296994885],\"ApiUrl\":\"/biz/organization/org/delete\"}"
+ },
+ {
+ "Id": "516759049244751",
+ "ObjectId": "360645671104581",
+ "TargetId": "/biz/organization/org/orgTreeSelector",
+ "Category": "SYS_ROLE_HAS_PERMISSION",
+ "ExtJson": "{\"ScopeCategory\":\"SCOPE_ORG\",\"ScopeDefineOrgIdList\":[360642028625989,361404296994885],\"ApiUrl\":\"/biz/organization/org/orgTreeSelector\"}"
+ },
+ {
+ "Id": "516759049244752",
+ "ObjectId": "360645671104581",
+ "TargetId": "/biz/organization/org/userSelector",
+ "Category": "SYS_ROLE_HAS_PERMISSION",
+ "ExtJson": "{\"ScopeCategory\":\"SCOPE_ORG\",\"ScopeDefineOrgIdList\":[360642028625989,361404296994885],\"ApiUrl\":\"/biz/organization/org/userSelector\"}"
+ },
+ {
+ "Id": "516759049244753",
+ "ObjectId": "360645671104581",
+ "TargetId": "/biz/organization/org/detail",
+ "Category": "SYS_ROLE_HAS_PERMISSION",
+ "ExtJson": "{\"ScopeCategory\":\"SCOPE_ORG\",\"ScopeDefineOrgIdList\":[360642028625989,361404296994885],\"ApiUrl\":\"/biz/organization/org/detail\"}"
+ },
+ {
+ "Id": "516759049244754",
+ "ObjectId": "360645671104581",
+ "TargetId": "/biz/organization/position/page",
+ "Category": "SYS_ROLE_HAS_PERMISSION",
+ "ExtJson": "{\"ScopeCategory\":\"SCOPE_ORG\",\"ScopeDefineOrgIdList\":[360642028625989,361404296994885],\"ApiUrl\":\"/biz/organization/position/page\"}"
+ },
+ {
+ "Id": "516759049244755",
+ "ObjectId": "360645671104581",
+ "TargetId": "/biz/organization/position/add",
+ "Category": "SYS_ROLE_HAS_PERMISSION",
+ "ExtJson": "{\"ScopeCategory\":\"SCOPE_ORG\",\"ScopeDefineOrgIdList\":[360642028625989,361404296994885],\"ApiUrl\":\"/biz/organization/position/add\"}"
+ },
+ {
+ "Id": "516759049244756",
+ "ObjectId": "360645671104581",
+ "TargetId": "/biz/organization/position/edit",
+ "Category": "SYS_ROLE_HAS_PERMISSION",
+ "ExtJson": "{\"ScopeCategory\":\"SCOPE_ORG\",\"ScopeDefineOrgIdList\":[360642028625989,361404296994885],\"ApiUrl\":\"/biz/organization/position/edit\"}"
+ },
+ {
+ "Id": "516759049244757",
+ "ObjectId": "360645671104581",
+ "TargetId": "/biz/organization/position/delete",
+ "Category": "SYS_ROLE_HAS_PERMISSION",
+ "ExtJson": "{\"ScopeCategory\":\"SCOPE_ORG\",\"ScopeDefineOrgIdList\":[360642028625989,361404296994885],\"ApiUrl\":\"/biz/organization/position/delete\"}"
+ },
+ {
+ "Id": "516759049244758",
+ "ObjectId": "360645671104581",
+ "TargetId": "/biz/organization/position/detail",
+ "Category": "SYS_ROLE_HAS_PERMISSION",
+ "ExtJson": "{\"ScopeCategory\":\"SCOPE_ORG\",\"ScopeDefineOrgIdList\":[360642028625989,361404296994885],\"ApiUrl\":\"/biz/organization/position/detail\"}"
+ },
+ {
+ "Id": "516759049244759",
+ "ObjectId": "360645671104581",
+ "TargetId": "/biz/organization/position/selector",
+ "Category": "SYS_ROLE_HAS_PERMISSION",
+ "ExtJson": "{\"ScopeCategory\":\"SCOPE_ORG\",\"ScopeDefineOrgIdList\":[360642028625989,361404296994885],\"ApiUrl\":\"/biz/organization/position/selector\"}"
+ },
+ {
+ "Id": "516759049244760",
+ "ObjectId": "360645671104581",
+ "TargetId": "/biz/organization/user/preview",
+ "Category": "SYS_ROLE_HAS_PERMISSION",
+ "ExtJson": "{\"ScopeCategory\":\"SCOPE_ORG\",\"ScopeDefineOrgIdList\":[360642028625989,361404296994885],\"ApiUrl\":\"/biz/organization/user/preview\"}"
+ },
+ {
+ "Id": "516759049244761",
+ "ObjectId": "360645671104581",
+ "TargetId": "/biz/organization/user/page",
+ "Category": "SYS_ROLE_HAS_PERMISSION",
+ "ExtJson": "{\"ScopeCategory\":\"SCOPE_ORG\",\"ScopeDefineOrgIdList\":[360642028625989,361404296994885],\"ApiUrl\":\"/biz/organization/user/page\"}"
+ },
+ {
+ "Id": "516759049244762",
+ "ObjectId": "360645671104581",
+ "TargetId": "/biz/organization/user/userSelector",
+ "Category": "SYS_ROLE_HAS_PERMISSION",
+ "ExtJson": "{\"ScopeCategory\":\"SCOPE_ORG\",\"ScopeDefineOrgIdList\":[360642028625989,361404296994885],\"ApiUrl\":\"/biz/organization/user/userSelector\"}"
+ },
+ {
+ "Id": "516759049244763",
+ "ObjectId": "360645671104581",
+ "TargetId": "/biz/organization/user/ownRole",
+ "Category": "SYS_ROLE_HAS_PERMISSION",
+ "ExtJson": "{\"ScopeCategory\":\"SCOPE_ORG\",\"ScopeDefineOrgIdList\":[360642028625989,361404296994885],\"ApiUrl\":\"/biz/organization/user/ownRole\"}"
+ },
+ {
+ "Id": "516759049244764",
+ "ObjectId": "360645671104581",
+ "TargetId": "/biz/organization/user/detail",
+ "Category": "SYS_ROLE_HAS_PERMISSION",
+ "ExtJson": "{\"ScopeCategory\":\"SCOPE_ORG\",\"ScopeDefineOrgIdList\":[360642028625989,361404296994885],\"ApiUrl\":\"/biz/organization/user/detail\"}"
+ },
+ {
+ "Id": "516759049244765",
+ "ObjectId": "360645671104581",
+ "TargetId": "/biz/organization/user/add",
+ "Category": "SYS_ROLE_HAS_PERMISSION",
+ "ExtJson": "{\"ScopeCategory\":\"SCOPE_ORG\",\"ScopeDefineOrgIdList\":[360642028625989,361404296994885],\"ApiUrl\":\"/biz/organization/user/add\"}"
+ },
+ {
+ "Id": "516759049244766",
+ "ObjectId": "360645671104581",
+ "TargetId": "/biz/organization/user/edit",
+ "Category": "SYS_ROLE_HAS_PERMISSION",
+ "ExtJson": "{\"ScopeCategory\":\"SCOPE_ORG\",\"ScopeDefineOrgIdList\":[360642028625989,361404296994885],\"ApiUrl\":\"/biz/organization/user/edit\"}"
+ },
+ {
+ "Id": "516759049248837",
+ "ObjectId": "360645671104581",
+ "TargetId": "/biz/organization/user/edits",
+ "Category": "SYS_ROLE_HAS_PERMISSION",
+ "ExtJson": "{\"ScopeCategory\":\"SCOPE_ORG\",\"ScopeDefineOrgIdList\":[360642028625989,361404296994885],\"ApiUrl\":\"/biz/organization/user/edits\"}"
+ },
+ {
+ "Id": "516759049248838",
+ "ObjectId": "360645671104581",
+ "TargetId": "/biz/organization/user/delete",
+ "Category": "SYS_ROLE_HAS_PERMISSION",
+ "ExtJson": "{\"ScopeCategory\":\"SCOPE_ORG\",\"ScopeDefineOrgIdList\":[360642028625989,361404296994885],\"ApiUrl\":\"/biz/organization/user/delete\"}"
+ },
+ {
+ "Id": "516759049248839",
+ "ObjectId": "360645671104581",
+ "TargetId": "/biz/organization/user/disableUser",
+ "Category": "SYS_ROLE_HAS_PERMISSION",
+ "ExtJson": "{\"ScopeCategory\":\"SCOPE_ORG\",\"ScopeDefineOrgIdList\":[360642028625989,361404296994885],\"ApiUrl\":\"/biz/organization/user/disableUser\"}"
+ },
+ {
+ "Id": "516759049248840",
+ "ObjectId": "360645671104581",
+ "TargetId": "/biz/organization/user/enableUser",
+ "Category": "SYS_ROLE_HAS_PERMISSION",
+ "ExtJson": "{\"ScopeCategory\":\"SCOPE_ORG\",\"ScopeDefineOrgIdList\":[360642028625989,361404296994885],\"ApiUrl\":\"/biz/organization/user/enableUser\"}"
+ },
+ {
+ "Id": "516759049248841",
+ "ObjectId": "360645671104581",
+ "TargetId": "/biz/organization/user/resetPassword",
+ "Category": "SYS_ROLE_HAS_PERMISSION",
+ "ExtJson": "{\"ScopeCategory\":\"SCOPE_ORG\",\"ScopeDefineOrgIdList\":[360642028625989,361404296994885],\"ApiUrl\":\"/biz/organization/user/resetPassword\"}"
+ },
+ {
+ "Id": "516759049248842",
+ "ObjectId": "360645671104581",
+ "TargetId": "/biz/organization/user/grantRole",
+ "Category": "SYS_ROLE_HAS_PERMISSION",
+ "ExtJson": "{\"ScopeCategory\":\"SCOPE_ORG\",\"ScopeDefineOrgIdList\":[360642028625989,361404296994885],\"ApiUrl\":\"/biz/organization/user/grantRole\"}"
+ },
+ {
+ "Id": "516759049248843",
+ "ObjectId": "360645671104581",
+ "TargetId": "/biz/organization/user/import",
+ "Category": "SYS_ROLE_HAS_PERMISSION",
+ "ExtJson": "{\"ScopeCategory\":\"SCOPE_ORG\",\"ScopeDefineOrgIdList\":[360642028625989,361404296994885],\"ApiUrl\":\"/biz/organization/user/import\"}"
+ },
+ {
+ "Id": "516759049248844",
+ "ObjectId": "360645671104581",
+ "TargetId": "/biz/organization/user/export",
+ "Category": "SYS_ROLE_HAS_PERMISSION",
+ "ExtJson": "{\"ScopeCategory\":\"SCOPE_ORG\",\"ScopeDefineOrgIdList\":[360642028625989,361404296994885],\"ApiUrl\":\"/biz/organization/user/export\"}"
+ },
+ {
+ "Id": "516759049248845",
+ "ObjectId": "360645671104581",
+ "TargetId": "/home/index/visLog/list",
+ "Category": "SYS_ROLE_HAS_PERMISSION",
+ "ExtJson": "{\"ScopeCategory\":\"SCOPE_ORG\",\"ScopeDefineOrgIdList\":[360642028625989,361404296994885],\"ApiUrl\":\"/home/index/visLog/list\"}"
+ },
+ {
+ "Id": "516759049248846",
+ "ObjectId": "360645671104581",
+ "TargetId": "/home/index/opLog/list",
+ "Category": "SYS_ROLE_HAS_PERMISSION",
+ "ExtJson": "{\"ScopeCategory\":\"SCOPE_ORG\",\"ScopeDefineOrgIdList\":[360642028625989,361404296994885],\"ApiUrl\":\"/home/index/opLog/list\"}"
+ },
+ {
+ "Id": "516759049248847",
+ "ObjectId": "360645671104581",
+ "TargetId": "/home/index/message/list",
+ "Category": "SYS_ROLE_HAS_PERMISSION",
+ "ExtJson": "{\"ScopeCategory\":\"SCOPE_ORG\",\"ScopeDefineOrgIdList\":[360642028625989,361404296994885],\"ApiUrl\":\"/home/index/message/list\"}"
+ },
+ {
+ "Id": "516759049248848",
+ "ObjectId": "360645671104581",
+ "TargetId": "/home/index/schedule/list",
+ "Category": "SYS_ROLE_HAS_PERMISSION",
+ "ExtJson": "{\"ScopeCategory\":\"SCOPE_ORG\",\"ScopeDefineOrgIdList\":[360642028625989,361404296994885],\"ApiUrl\":\"/home/index/schedule/list\"}"
+ },
+ {
+ "Id": "516759049248849",
+ "ObjectId": "360645671104581",
+ "TargetId": "/home/index/schedule/add",
+ "Category": "SYS_ROLE_HAS_PERMISSION",
+ "ExtJson": "{\"ScopeCategory\":\"SCOPE_ORG\",\"ScopeDefineOrgIdList\":[360642028625989,361404296994885],\"ApiUrl\":\"/home/index/schedule/add\"}"
+ },
+ {
+ "Id": "516759049248850",
+ "ObjectId": "360645671104581",
+ "TargetId": "/home/index/schedule/deleteSchedule",
+ "Category": "SYS_ROLE_HAS_PERMISSION",
+ "ExtJson": "{\"ScopeCategory\":\"SCOPE_ORG\",\"ScopeDefineOrgIdList\":[360642028625989,361404296994885],\"ApiUrl\":\"/home/index/schedule/deleteSchedule\"}"
+ },
+ {
+ "Id": "516759084105797",
+ "ObjectId": "360646281904197",
+ "TargetId": "212755263003743",
+ "Category": "SYS_ROLE_HAS_MODULE",
+ "ExtJson": ""
+ },
+ {
+ "Id": "516759084105798",
+ "ObjectId": "360646281904197",
+ "TargetId": "212755263003745",
+ "Category": "SYS_ROLE_HAS_RESOURCE",
+ "ExtJson": "{\"MenuId\":212755263003745,\"ButtonInfo\":[212825263004728,212825263004729,212825263004730,212825263004731,383020955254853,383022400483397]}"
+ },
+ {
+ "Id": "516759084105799",
+ "ObjectId": "360646281904197",
+ "TargetId": "212755263003746",
+ "Category": "SYS_ROLE_HAS_RESOURCE",
+ "ExtJson": "{\"MenuId\":212755263003746,\"ButtonInfo\":[212825263005734,212825263005735,212825263005736,212825263005737,212825263005738,212825263005739,212825263005740,391869166551109,391869250662469,395712751292485]}"
+ },
+ {
+ "Id": "516759084105800",
+ "ObjectId": "360646281904197",
+ "TargetId": "212755263003747",
+ "Category": "SYS_ROLE_HAS_RESOURCE",
+ "ExtJson": "{\"MenuId\":212755263003747,\"ButtonInfo\":[212825263006739,212825263006749,212825263006750,212825263006751]}"
+ },
+ {
+ "Id": "516759084105801",
+ "ObjectId": "360646281904197",
+ "TargetId": "/biz/organization/org/tree",
+ "Category": "SYS_ROLE_HAS_PERMISSION",
+ "ExtJson": "{\"ScopeCategory\":\"SCOPE_ORG_DEFINE\",\"ScopeDefineOrgIdList\":[360642028625989,361404296994885,360642028625989,361404296994885],\"ApiUrl\":\"/biz/organization/org/tree\"}"
+ },
+ {
+ "Id": "516759084105802",
+ "ObjectId": "360646281904197",
+ "TargetId": "/biz/organization/org/page",
+ "Category": "SYS_ROLE_HAS_PERMISSION",
+ "ExtJson": "{\"ScopeCategory\":\"SCOPE_ORG_DEFINE\",\"ScopeDefineOrgIdList\":[360642028625989,361404296994885,360642028625989,361404296994885],\"ApiUrl\":\"/biz/organization/org/page\"}"
+ },
+ {
+ "Id": "516759084105803",
+ "ObjectId": "360646281904197",
+ "TargetId": "/biz/organization/org/add",
+ "Category": "SYS_ROLE_HAS_PERMISSION",
+ "ExtJson": "{\"ScopeCategory\":\"SCOPE_ORG_DEFINE\",\"ScopeDefineOrgIdList\":[360642028625989,361404296994885,360642028625989,361404296994885],\"ApiUrl\":\"/biz/organization/org/add\"}"
+ },
+ {
+ "Id": "516759084105804",
+ "ObjectId": "360646281904197",
+ "TargetId": "/biz/organization/org/edit",
+ "Category": "SYS_ROLE_HAS_PERMISSION",
+ "ExtJson": "{\"ScopeCategory\":\"SCOPE_ORG_DEFINE\",\"ScopeDefineOrgIdList\":[360642028625989,361404296994885,360642028625989,361404296994885],\"ApiUrl\":\"/biz/organization/org/edit\"}"
+ },
+ {
+ "Id": "516759084109893",
+ "ObjectId": "360646281904197",
+ "TargetId": "/biz/organization/org/copy",
+ "Category": "SYS_ROLE_HAS_PERMISSION",
+ "ExtJson": "{\"ScopeCategory\":\"SCOPE_ORG_DEFINE\",\"ScopeDefineOrgIdList\":[360642028625989,361404296994885,360642028625989,361404296994885],\"ApiUrl\":\"/biz/organization/org/copy\"}"
+ },
+ {
+ "Id": "516759084109894",
+ "ObjectId": "360646281904197",
+ "TargetId": "/biz/organization/org/delete",
+ "Category": "SYS_ROLE_HAS_PERMISSION",
+ "ExtJson": "{\"ScopeCategory\":\"SCOPE_ORG_DEFINE\",\"ScopeDefineOrgIdList\":[360642028625989,361404296994885,360642028625989,361404296994885],\"ApiUrl\":\"/biz/organization/org/delete\"}"
+ },
+ {
+ "Id": "516759084109895",
+ "ObjectId": "360646281904197",
+ "TargetId": "/biz/organization/org/orgTreeSelector",
+ "Category": "SYS_ROLE_HAS_PERMISSION",
+ "ExtJson": "{\"ScopeCategory\":\"SCOPE_ORG_DEFINE\",\"ScopeDefineOrgIdList\":[360642028625989,361404296994885,360642028625989,361404296994885],\"ApiUrl\":\"/biz/organization/org/orgTreeSelector\"}"
+ },
+ {
+ "Id": "516759084109896",
+ "ObjectId": "360646281904197",
+ "TargetId": "/biz/organization/org/userSelector",
+ "Category": "SYS_ROLE_HAS_PERMISSION",
+ "ExtJson": "{\"ScopeCategory\":\"SCOPE_ORG_DEFINE\",\"ScopeDefineOrgIdList\":[360642028625989,361404296994885,360642028625989,361404296994885],\"ApiUrl\":\"/biz/organization/org/userSelector\"}"
+ },
+ {
+ "Id": "516759084109897",
+ "ObjectId": "360646281904197",
+ "TargetId": "/biz/organization/org/detail",
+ "Category": "SYS_ROLE_HAS_PERMISSION",
+ "ExtJson": "{\"ScopeCategory\":\"SCOPE_ORG_DEFINE\",\"ScopeDefineOrgIdList\":[360642028625989,361404296994885,360642028625989,361404296994885],\"ApiUrl\":\"/biz/organization/org/detail\"}"
+ },
+ {
+ "Id": "516759084109898",
+ "ObjectId": "360646281904197",
+ "TargetId": "/biz/organization/position/page",
+ "Category": "SYS_ROLE_HAS_PERMISSION",
+ "ExtJson": "{\"ScopeCategory\":\"SCOPE_ORG_DEFINE\",\"ScopeDefineOrgIdList\":[360642028625989,361404296994885,360642028625989,361404296994885],\"ApiUrl\":\"/biz/organization/position/page\"}"
+ },
+ {
+ "Id": "516759084109899",
+ "ObjectId": "360646281904197",
+ "TargetId": "/biz/organization/position/add",
+ "Category": "SYS_ROLE_HAS_PERMISSION",
+ "ExtJson": "{\"ScopeCategory\":\"SCOPE_ORG_DEFINE\",\"ScopeDefineOrgIdList\":[360642028625989,361404296994885,360642028625989,361404296994885],\"ApiUrl\":\"/biz/organization/position/add\"}"
+ },
+ {
+ "Id": "516759084109900",
+ "ObjectId": "360646281904197",
+ "TargetId": "/biz/organization/position/edit",
+ "Category": "SYS_ROLE_HAS_PERMISSION",
+ "ExtJson": "{\"ScopeCategory\":\"SCOPE_ORG_DEFINE\",\"ScopeDefineOrgIdList\":[360642028625989,361404296994885,360642028625989,361404296994885],\"ApiUrl\":\"/biz/organization/position/edit\"}"
+ },
+ {
+ "Id": "516759084109901",
+ "ObjectId": "360646281904197",
+ "TargetId": "/biz/organization/position/delete",
+ "Category": "SYS_ROLE_HAS_PERMISSION",
+ "ExtJson": "{\"ScopeCategory\":\"SCOPE_ORG_DEFINE\",\"ScopeDefineOrgIdList\":[360642028625989,361404296994885,360642028625989,361404296994885],\"ApiUrl\":\"/biz/organization/position/delete\"}"
+ },
+ {
+ "Id": "516759084109902",
+ "ObjectId": "360646281904197",
+ "TargetId": "/biz/organization/position/detail",
+ "Category": "SYS_ROLE_HAS_PERMISSION",
+ "ExtJson": "{\"ScopeCategory\":\"SCOPE_ORG_DEFINE\",\"ScopeDefineOrgIdList\":[360642028625989,361404296994885,360642028625989,361404296994885],\"ApiUrl\":\"/biz/organization/position/detail\"}"
+ },
+ {
+ "Id": "516759084109903",
+ "ObjectId": "360646281904197",
+ "TargetId": "/biz/organization/position/selector",
+ "Category": "SYS_ROLE_HAS_PERMISSION",
+ "ExtJson": "{\"ScopeCategory\":\"SCOPE_ORG_DEFINE\",\"ScopeDefineOrgIdList\":[360642028625989,361404296994885,360642028625989,361404296994885],\"ApiUrl\":\"/biz/organization/position/selector\"}"
+ },
+ {
+ "Id": "516759084109904",
+ "ObjectId": "360646281904197",
+ "TargetId": "/biz/organization/user/preview",
+ "Category": "SYS_ROLE_HAS_PERMISSION",
+ "ExtJson": "{\"ScopeCategory\":\"SCOPE_ORG_DEFINE\",\"ScopeDefineOrgIdList\":[360642028625989,361404296994885,360642028625989,361404296994885],\"ApiUrl\":\"/biz/organization/user/preview\"}"
+ },
+ {
+ "Id": "516759084109905",
+ "ObjectId": "360646281904197",
+ "TargetId": "/biz/organization/user/page",
+ "Category": "SYS_ROLE_HAS_PERMISSION",
+ "ExtJson": "{\"ScopeCategory\":\"SCOPE_ORG_DEFINE\",\"ScopeDefineOrgIdList\":[360642028625989,361404296994885,360642028625989,361404296994885],\"ApiUrl\":\"/biz/organization/user/page\"}"
+ },
+ {
+ "Id": "516759084109906",
+ "ObjectId": "360646281904197",
+ "TargetId": "/biz/organization/user/userSelector",
+ "Category": "SYS_ROLE_HAS_PERMISSION",
+ "ExtJson": "{\"ScopeCategory\":\"SCOPE_ORG_DEFINE\",\"ScopeDefineOrgIdList\":[360642028625989,361404296994885,360642028625989,361404296994885],\"ApiUrl\":\"/biz/organization/user/userSelector\"}"
+ },
+ {
+ "Id": "516759084109907",
+ "ObjectId": "360646281904197",
+ "TargetId": "/biz/organization/user/ownRole",
+ "Category": "SYS_ROLE_HAS_PERMISSION",
+ "ExtJson": "{\"ScopeCategory\":\"SCOPE_ORG_DEFINE\",\"ScopeDefineOrgIdList\":[360642028625989,361404296994885,360642028625989,361404296994885],\"ApiUrl\":\"/biz/organization/user/ownRole\"}"
+ },
+ {
+ "Id": "516759084109908",
+ "ObjectId": "360646281904197",
+ "TargetId": "/biz/organization/user/detail",
+ "Category": "SYS_ROLE_HAS_PERMISSION",
+ "ExtJson": "{\"ScopeCategory\":\"SCOPE_ORG_DEFINE\",\"ScopeDefineOrgIdList\":[360642028625989,361404296994885,360642028625989,361404296994885],\"ApiUrl\":\"/biz/organization/user/detail\"}"
+ },
+ {
+ "Id": "516759084109909",
+ "ObjectId": "360646281904197",
+ "TargetId": "/biz/organization/user/add",
+ "Category": "SYS_ROLE_HAS_PERMISSION",
+ "ExtJson": "{\"ScopeCategory\":\"SCOPE_ORG_DEFINE\",\"ScopeDefineOrgIdList\":[360642028625989,361404296994885,360642028625989,361404296994885],\"ApiUrl\":\"/biz/organization/user/add\"}"
+ },
+ {
+ "Id": "516759084109910",
+ "ObjectId": "360646281904197",
+ "TargetId": "/biz/organization/user/edit",
+ "Category": "SYS_ROLE_HAS_PERMISSION",
+ "ExtJson": "{\"ScopeCategory\":\"SCOPE_ORG_DEFINE\",\"ScopeDefineOrgIdList\":[360642028625989,361404296994885,360642028625989,361404296994885],\"ApiUrl\":\"/biz/organization/user/edit\"}"
+ },
+ {
+ "Id": "516759084109911",
+ "ObjectId": "360646281904197",
+ "TargetId": "/biz/organization/user/edits",
+ "Category": "SYS_ROLE_HAS_PERMISSION",
+ "ExtJson": "{\"ScopeCategory\":\"SCOPE_ORG_DEFINE\",\"ScopeDefineOrgIdList\":[360642028625989,361404296994885,360642028625989,361404296994885],\"ApiUrl\":\"/biz/organization/user/edits\"}"
+ },
+ {
+ "Id": "516759084109912",
+ "ObjectId": "360646281904197",
+ "TargetId": "/biz/organization/user/delete",
+ "Category": "SYS_ROLE_HAS_PERMISSION",
+ "ExtJson": "{\"ScopeCategory\":\"SCOPE_ORG_DEFINE\",\"ScopeDefineOrgIdList\":[360642028625989,361404296994885,360642028625989,361404296994885],\"ApiUrl\":\"/biz/organization/user/delete\"}"
+ },
+ {
+ "Id": "516759084109913",
+ "ObjectId": "360646281904197",
+ "TargetId": "/biz/organization/user/disableUser",
+ "Category": "SYS_ROLE_HAS_PERMISSION",
+ "ExtJson": "{\"ScopeCategory\":\"SCOPE_ORG_DEFINE\",\"ScopeDefineOrgIdList\":[360642028625989,361404296994885,360642028625989,361404296994885],\"ApiUrl\":\"/biz/organization/user/disableUser\"}"
+ },
+ {
+ "Id": "516759084109914",
+ "ObjectId": "360646281904197",
+ "TargetId": "/biz/organization/user/enableUser",
+ "Category": "SYS_ROLE_HAS_PERMISSION",
+ "ExtJson": "{\"ScopeCategory\":\"SCOPE_ORG_DEFINE\",\"ScopeDefineOrgIdList\":[360642028625989,361404296994885,360642028625989,361404296994885],\"ApiUrl\":\"/biz/organization/user/enableUser\"}"
+ },
+ {
+ "Id": "516759084109915",
+ "ObjectId": "360646281904197",
+ "TargetId": "/biz/organization/user/resetPassword",
+ "Category": "SYS_ROLE_HAS_PERMISSION",
+ "ExtJson": "{\"ScopeCategory\":\"SCOPE_ORG_DEFINE\",\"ScopeDefineOrgIdList\":[360642028625989,361404296994885,360642028625989,361404296994885],\"ApiUrl\":\"/biz/organization/user/resetPassword\"}"
+ },
+ {
+ "Id": "516759084109916",
+ "ObjectId": "360646281904197",
+ "TargetId": "/biz/organization/user/grantRole",
+ "Category": "SYS_ROLE_HAS_PERMISSION",
+ "ExtJson": "{\"ScopeCategory\":\"SCOPE_ORG_DEFINE\",\"ScopeDefineOrgIdList\":[360642028625989,361404296994885,360642028625989,361404296994885],\"ApiUrl\":\"/biz/organization/user/grantRole\"}"
+ },
+ {
+ "Id": "516759084109917",
+ "ObjectId": "360646281904197",
+ "TargetId": "/biz/organization/user/import",
+ "Category": "SYS_ROLE_HAS_PERMISSION",
+ "ExtJson": "{\"ScopeCategory\":\"SCOPE_ORG_DEFINE\",\"ScopeDefineOrgIdList\":[360642028625989,361404296994885,360642028625989,361404296994885],\"ApiUrl\":\"/biz/organization/user/import\"}"
+ },
+ {
+ "Id": "516759084109918",
+ "ObjectId": "360646281904197",
+ "TargetId": "/biz/organization/user/export",
+ "Category": "SYS_ROLE_HAS_PERMISSION",
+ "ExtJson": "{\"ScopeCategory\":\"SCOPE_ORG_DEFINE\",\"ScopeDefineOrgIdList\":[360642028625989,361404296994885,360642028625989,361404296994885],\"ApiUrl\":\"/biz/organization/user/export\"}"
+ },
+ {
+ "Id": "516759084109919",
+ "ObjectId": "360646281904197",
+ "TargetId": "/home/index/visLog/list",
+ "Category": "SYS_ROLE_HAS_PERMISSION",
+ "ExtJson": "{\"ScopeCategory\":\"SCOPE_ORG_DEFINE\",\"ScopeDefineOrgIdList\":[360642028625989,361404296994885,360642028625989,361404296994885],\"ApiUrl\":\"/home/index/visLog/list\"}"
+ },
+ {
+ "Id": "516759084109920",
+ "ObjectId": "360646281904197",
+ "TargetId": "/home/index/opLog/list",
+ "Category": "SYS_ROLE_HAS_PERMISSION",
+ "ExtJson": "{\"ScopeCategory\":\"SCOPE_ORG_DEFINE\",\"ScopeDefineOrgIdList\":[360642028625989,361404296994885,360642028625989,361404296994885],\"ApiUrl\":\"/home/index/opLog/list\"}"
+ },
+ {
+ "Id": "516759084109921",
+ "ObjectId": "360646281904197",
+ "TargetId": "/home/index/message/list",
+ "Category": "SYS_ROLE_HAS_PERMISSION",
+ "ExtJson": "{\"ScopeCategory\":\"SCOPE_ORG_DEFINE\",\"ScopeDefineOrgIdList\":[360642028625989,361404296994885,360642028625989,361404296994885],\"ApiUrl\":\"/home/index/message/list\"}"
+ },
+ {
+ "Id": "516759084109922",
+ "ObjectId": "360646281904197",
+ "TargetId": "/home/index/schedule/list",
+ "Category": "SYS_ROLE_HAS_PERMISSION",
+ "ExtJson": "{\"ScopeCategory\":\"SCOPE_ORG_DEFINE\",\"ScopeDefineOrgIdList\":[360642028625989,361404296994885,360642028625989,361404296994885],\"ApiUrl\":\"/home/index/schedule/list\"}"
+ },
+ {
+ "Id": "516759084109923",
+ "ObjectId": "360646281904197",
+ "TargetId": "/home/index/schedule/add",
+ "Category": "SYS_ROLE_HAS_PERMISSION",
+ "ExtJson": "{\"ScopeCategory\":\"SCOPE_ORG_DEFINE\",\"ScopeDefineOrgIdList\":[360642028625989,361404296994885,360642028625989,361404296994885],\"ApiUrl\":\"/home/index/schedule/add\"}"
+ },
+ {
+ "Id": "516759084109924",
+ "ObjectId": "360646281904197",
+ "TargetId": "/home/index/schedule/deleteSchedule",
+ "Category": "SYS_ROLE_HAS_PERMISSION",
+ "ExtJson": "{\"ScopeCategory\":\"SCOPE_ORG_DEFINE\",\"ScopeDefineOrgIdList\":[360642028625989,361404296994885,360642028625989,361404296994885],\"ApiUrl\":\"/home/index/schedule/deleteSchedule\"}"
+ },
+ {
+ "Id": "516759117541445",
+ "ObjectId": "360646662586437",
+ "TargetId": "212755263003743",
+ "Category": "SYS_ROLE_HAS_MODULE",
+ "ExtJson": ""
+ },
+ {
+ "Id": "516759117541446",
+ "ObjectId": "360646662586437",
+ "TargetId": "212755263003746",
+ "Category": "SYS_ROLE_HAS_RESOURCE",
+ "ExtJson": "{\"MenuId\":212755263003746,\"ButtonInfo\":[212825263005734,212825263005735,212825263005736,212825263005737,212825263005738,212825263005739,212825263005740,391869166551109,391869250662469,395712751292485]}"
+ },
+ {
+ "Id": "516759117541447",
+ "ObjectId": "360646662586437",
+ "TargetId": "/biz/organization/user/preview",
+ "Category": "SYS_ROLE_HAS_PERMISSION",
+ "ExtJson": "{\"ScopeCategory\":\"SCOPE_SELF\",\"ScopeDefineOrgIdList\":[],\"ApiUrl\":\"/biz/organization/user/preview\"}"
+ },
+ {
+ "Id": "516759117541448",
+ "ObjectId": "360646662586437",
+ "TargetId": "/biz/organization/user/page",
+ "Category": "SYS_ROLE_HAS_PERMISSION",
+ "ExtJson": "{\"ScopeCategory\":\"SCOPE_SELF\",\"ScopeDefineOrgIdList\":[],\"ApiUrl\":\"/biz/organization/user/page\"}"
+ },
+ {
+ "Id": "516759117541449",
+ "ObjectId": "360646662586437",
+ "TargetId": "/biz/organization/user/userSelector",
+ "Category": "SYS_ROLE_HAS_PERMISSION",
+ "ExtJson": "{\"ScopeCategory\":\"SCOPE_SELF\",\"ScopeDefineOrgIdList\":[],\"ApiUrl\":\"/biz/organization/user/userSelector\"}"
+ },
+ {
+ "Id": "516759117541450",
+ "ObjectId": "360646662586437",
+ "TargetId": "/biz/organization/user/ownRole",
+ "Category": "SYS_ROLE_HAS_PERMISSION",
+ "ExtJson": "{\"ScopeCategory\":\"SCOPE_SELF\",\"ScopeDefineOrgIdList\":[],\"ApiUrl\":\"/biz/organization/user/ownRole\"}"
+ },
+ {
+ "Id": "516759117541451",
+ "ObjectId": "360646662586437",
+ "TargetId": "/biz/organization/user/detail",
+ "Category": "SYS_ROLE_HAS_PERMISSION",
+ "ExtJson": "{\"ScopeCategory\":\"SCOPE_SELF\",\"ScopeDefineOrgIdList\":[],\"ApiUrl\":\"/biz/organization/user/detail\"}"
+ },
+ {
+ "Id": "516759117541452",
+ "ObjectId": "360646662586437",
+ "TargetId": "/biz/organization/user/add",
+ "Category": "SYS_ROLE_HAS_PERMISSION",
+ "ExtJson": "{\"ScopeCategory\":\"SCOPE_SELF\",\"ScopeDefineOrgIdList\":[],\"ApiUrl\":\"/biz/organization/user/add\"}"
+ },
+ {
+ "Id": "516759117541453",
+ "ObjectId": "360646662586437",
+ "TargetId": "/biz/organization/user/edit",
+ "Category": "SYS_ROLE_HAS_PERMISSION",
+ "ExtJson": "{\"ScopeCategory\":\"SCOPE_SELF\",\"ScopeDefineOrgIdList\":[],\"ApiUrl\":\"/biz/organization/user/edit\"}"
+ },
+ {
+ "Id": "516759117541454",
+ "ObjectId": "360646662586437",
+ "TargetId": "/biz/organization/user/edits",
+ "Category": "SYS_ROLE_HAS_PERMISSION",
+ "ExtJson": "{\"ScopeCategory\":\"SCOPE_SELF\",\"ScopeDefineOrgIdList\":[],\"ApiUrl\":\"/biz/organization/user/edits\"}"
+ },
+ {
+ "Id": "516759117541455",
+ "ObjectId": "360646662586437",
+ "TargetId": "/biz/organization/user/delete",
+ "Category": "SYS_ROLE_HAS_PERMISSION",
+ "ExtJson": "{\"ScopeCategory\":\"SCOPE_SELF\",\"ScopeDefineOrgIdList\":[],\"ApiUrl\":\"/biz/organization/user/delete\"}"
+ },
+ {
+ "Id": "516759117541456",
+ "ObjectId": "360646662586437",
+ "TargetId": "/biz/organization/user/disableUser",
+ "Category": "SYS_ROLE_HAS_PERMISSION",
+ "ExtJson": "{\"ScopeCategory\":\"SCOPE_SELF\",\"ScopeDefineOrgIdList\":[],\"ApiUrl\":\"/biz/organization/user/disableUser\"}"
+ },
+ {
+ "Id": "516759117541457",
+ "ObjectId": "360646662586437",
+ "TargetId": "/biz/organization/user/enableUser",
+ "Category": "SYS_ROLE_HAS_PERMISSION",
+ "ExtJson": "{\"ScopeCategory\":\"SCOPE_SELF\",\"ScopeDefineOrgIdList\":[],\"ApiUrl\":\"/biz/organization/user/enableUser\"}"
+ },
+ {
+ "Id": "516759117541458",
+ "ObjectId": "360646662586437",
+ "TargetId": "/biz/organization/user/resetPassword",
+ "Category": "SYS_ROLE_HAS_PERMISSION",
+ "ExtJson": "{\"ScopeCategory\":\"SCOPE_SELF\",\"ScopeDefineOrgIdList\":[],\"ApiUrl\":\"/biz/organization/user/resetPassword\"}"
+ },
+ {
+ "Id": "516759117541459",
+ "ObjectId": "360646662586437",
+ "TargetId": "/biz/organization/user/grantRole",
+ "Category": "SYS_ROLE_HAS_PERMISSION",
+ "ExtJson": "{\"ScopeCategory\":\"SCOPE_SELF\",\"ScopeDefineOrgIdList\":[],\"ApiUrl\":\"/biz/organization/user/grantRole\"}"
+ },
+ {
+ "Id": "516759117541460",
+ "ObjectId": "360646662586437",
+ "TargetId": "/biz/organization/user/import",
+ "Category": "SYS_ROLE_HAS_PERMISSION",
+ "ExtJson": "{\"ScopeCategory\":\"SCOPE_SELF\",\"ScopeDefineOrgIdList\":[],\"ApiUrl\":\"/biz/organization/user/import\"}"
+ },
+ {
+ "Id": "516759117541461",
+ "ObjectId": "360646662586437",
+ "TargetId": "/biz/organization/user/export",
+ "Category": "SYS_ROLE_HAS_PERMISSION",
+ "ExtJson": "{\"ScopeCategory\":\"SCOPE_SELF\",\"ScopeDefineOrgIdList\":[],\"ApiUrl\":\"/biz/organization/user/export\"}"
+ },
+ {
+ "Id": "516759117541462",
+ "ObjectId": "360646662586437",
+ "TargetId": "/home/index/visLog/list",
+ "Category": "SYS_ROLE_HAS_PERMISSION",
+ "ExtJson": "{\"ScopeCategory\":\"SCOPE_SELF\",\"ScopeDefineOrgIdList\":[],\"ApiUrl\":\"/home/index/visLog/list\"}"
+ },
+ {
+ "Id": "516759117541463",
+ "ObjectId": "360646662586437",
+ "TargetId": "/home/index/opLog/list",
+ "Category": "SYS_ROLE_HAS_PERMISSION",
+ "ExtJson": "{\"ScopeCategory\":\"SCOPE_SELF\",\"ScopeDefineOrgIdList\":[],\"ApiUrl\":\"/home/index/opLog/list\"}"
+ },
+ {
+ "Id": "516759117541464",
+ "ObjectId": "360646662586437",
+ "TargetId": "/home/index/message/list",
+ "Category": "SYS_ROLE_HAS_PERMISSION",
+ "ExtJson": "{\"ScopeCategory\":\"SCOPE_SELF\",\"ScopeDefineOrgIdList\":[],\"ApiUrl\":\"/home/index/message/list\"}"
+ },
+ {
+ "Id": "516759117541465",
+ "ObjectId": "360646662586437",
+ "TargetId": "/home/index/schedule/list",
+ "Category": "SYS_ROLE_HAS_PERMISSION",
+ "ExtJson": "{\"ScopeCategory\":\"SCOPE_SELF\",\"ScopeDefineOrgIdList\":[],\"ApiUrl\":\"/home/index/schedule/list\"}"
+ },
+ {
+ "Id": "516759117541466",
+ "ObjectId": "360646662586437",
+ "TargetId": "/home/index/schedule/add",
+ "Category": "SYS_ROLE_HAS_PERMISSION",
+ "ExtJson": "{\"ScopeCategory\":\"SCOPE_SELF\",\"ScopeDefineOrgIdList\":[],\"ApiUrl\":\"/home/index/schedule/add\"}"
+ },
+ {
+ "Id": "516759117541467",
+ "ObjectId": "360646662586437",
+ "TargetId": "/home/index/schedule/deleteSchedule",
+ "Category": "SYS_ROLE_HAS_PERMISSION",
+ "ExtJson": "{\"ScopeCategory\":\"SCOPE_SELF\",\"ScopeDefineOrgIdList\":[],\"ApiUrl\":\"/home/index/schedule/deleteSchedule\"}"
+ },
+ {
+ "Id": "516759156367429",
+ "ObjectId": "363084914917445",
+ "TargetId": "212755263003743",
+ "Category": "SYS_ROLE_HAS_MODULE",
+ "ExtJson": ""
+ },
+ {
+ "Id": "516759156367430",
+ "ObjectId": "363084914917445",
+ "TargetId": "212755263003745",
+ "Category": "SYS_ROLE_HAS_RESOURCE",
+ "ExtJson": "{\"MenuId\":212755263003745,\"ButtonInfo\":[212825263004728,212825263004729,212825263004730,212825263004731,383020955254853,383022400483397]}"
+ },
+ {
+ "Id": "516759156367431",
+ "ObjectId": "363084914917445",
+ "TargetId": "/biz/organization/org/tree",
+ "Category": "SYS_ROLE_HAS_PERMISSION",
+ "ExtJson": "{\"ScopeCategory\":\"SCOPE_ORG_CHILD\",\"ScopeDefineOrgIdList\":[],\"ApiUrl\":\"/biz/organization/org/tree\"}"
+ },
+ {
+ "Id": "516759156367432",
+ "ObjectId": "363084914917445",
+ "TargetId": "/biz/organization/org/page",
+ "Category": "SYS_ROLE_HAS_PERMISSION",
+ "ExtJson": "{\"ScopeCategory\":\"SCOPE_ORG_CHILD\",\"ScopeDefineOrgIdList\":[],\"ApiUrl\":\"/biz/organization/org/page\"}"
+ },
+ {
+ "Id": "516759156367433",
+ "ObjectId": "363084914917445",
+ "TargetId": "/biz/organization/org/add",
+ "Category": "SYS_ROLE_HAS_PERMISSION",
+ "ExtJson": "{\"ScopeCategory\":\"SCOPE_ORG_CHILD\",\"ScopeDefineOrgIdList\":[],\"ApiUrl\":\"/biz/organization/org/add\"}"
+ },
+ {
+ "Id": "516759156367434",
+ "ObjectId": "363084914917445",
+ "TargetId": "/biz/organization/org/edit",
+ "Category": "SYS_ROLE_HAS_PERMISSION",
+ "ExtJson": "{\"ScopeCategory\":\"SCOPE_ORG_CHILD\",\"ScopeDefineOrgIdList\":[],\"ApiUrl\":\"/biz/organization/org/edit\"}"
+ },
+ {
+ "Id": "516759156367435",
+ "ObjectId": "363084914917445",
+ "TargetId": "/biz/organization/org/copy",
+ "Category": "SYS_ROLE_HAS_PERMISSION",
+ "ExtJson": "{\"ScopeCategory\":\"SCOPE_ORG_CHILD\",\"ScopeDefineOrgIdList\":[],\"ApiUrl\":\"/biz/organization/org/copy\"}"
+ },
+ {
+ "Id": "516759156367436",
+ "ObjectId": "363084914917445",
+ "TargetId": "/biz/organization/org/delete",
+ "Category": "SYS_ROLE_HAS_PERMISSION",
+ "ExtJson": "{\"ScopeCategory\":\"SCOPE_ORG_CHILD\",\"ScopeDefineOrgIdList\":[],\"ApiUrl\":\"/biz/organization/org/delete\"}"
+ },
+ {
+ "Id": "516759156367437",
+ "ObjectId": "363084914917445",
+ "TargetId": "/biz/organization/org/orgTreeSelector",
+ "Category": "SYS_ROLE_HAS_PERMISSION",
+ "ExtJson": "{\"ScopeCategory\":\"SCOPE_ORG_CHILD\",\"ScopeDefineOrgIdList\":[],\"ApiUrl\":\"/biz/organization/org/orgTreeSelector\"}"
+ },
+ {
+ "Id": "516759156367438",
+ "ObjectId": "363084914917445",
+ "TargetId": "/biz/organization/org/userSelector",
+ "Category": "SYS_ROLE_HAS_PERMISSION",
+ "ExtJson": "{\"ScopeCategory\":\"SCOPE_ORG_CHILD\",\"ScopeDefineOrgIdList\":[],\"ApiUrl\":\"/biz/organization/org/userSelector\"}"
+ },
+ {
+ "Id": "516759156367439",
+ "ObjectId": "363084914917445",
+ "TargetId": "/biz/organization/org/detail",
+ "Category": "SYS_ROLE_HAS_PERMISSION",
+ "ExtJson": "{\"ScopeCategory\":\"SCOPE_ORG_CHILD\",\"ScopeDefineOrgIdList\":[],\"ApiUrl\":\"/biz/organization/org/detail\"}"
+ },
+ {
+ "Id": "516759156367440",
+ "ObjectId": "363084914917445",
+ "TargetId": "/home/index/visLog/list",
+ "Category": "SYS_ROLE_HAS_PERMISSION",
+ "ExtJson": "{\"ScopeCategory\":\"SCOPE_ORG_CHILD\",\"ScopeDefineOrgIdList\":[],\"ApiUrl\":\"/home/index/visLog/list\"}"
+ },
+ {
+ "Id": "516759156367441",
+ "ObjectId": "363084914917445",
+ "TargetId": "/home/index/opLog/list",
+ "Category": "SYS_ROLE_HAS_PERMISSION",
+ "ExtJson": "{\"ScopeCategory\":\"SCOPE_ORG_CHILD\",\"ScopeDefineOrgIdList\":[],\"ApiUrl\":\"/home/index/opLog/list\"}"
+ },
+ {
+ "Id": "516759156367442",
+ "ObjectId": "363084914917445",
+ "TargetId": "/home/index/message/list",
+ "Category": "SYS_ROLE_HAS_PERMISSION",
+ "ExtJson": "{\"ScopeCategory\":\"SCOPE_ORG_CHILD\",\"ScopeDefineOrgIdList\":[],\"ApiUrl\":\"/home/index/message/list\"}"
+ },
+ {
+ "Id": "516759156367443",
+ "ObjectId": "363084914917445",
+ "TargetId": "/home/index/schedule/list",
+ "Category": "SYS_ROLE_HAS_PERMISSION",
+ "ExtJson": "{\"ScopeCategory\":\"SCOPE_ORG_CHILD\",\"ScopeDefineOrgIdList\":[],\"ApiUrl\":\"/home/index/schedule/list\"}"
+ },
+ {
+ "Id": "516759156367444",
+ "ObjectId": "363084914917445",
+ "TargetId": "/home/index/schedule/add",
+ "Category": "SYS_ROLE_HAS_PERMISSION",
+ "ExtJson": "{\"ScopeCategory\":\"SCOPE_ORG_CHILD\",\"ScopeDefineOrgIdList\":[],\"ApiUrl\":\"/home/index/schedule/add\"}"
+ },
+ {
+ "Id": "516759156367445",
+ "ObjectId": "363084914917445",
+ "TargetId": "/home/index/schedule/deleteSchedule",
+ "Category": "SYS_ROLE_HAS_PERMISSION",
+ "ExtJson": "{\"ScopeCategory\":\"SCOPE_ORG_CHILD\",\"ScopeDefineOrgIdList\":[],\"ApiUrl\":\"/home/index/schedule/deleteSchedule\"}"
+ },
+ {
+ "Id": "517480282214469",
+ "ObjectId": "511793641513029",
+ "TargetId": "212755263003743",
+ "Category": "SYS_ROLE_HAS_MODULE",
+ "ExtJson": ""
+ },
+ {
+ "Id": "517480282214470",
+ "ObjectId": "511793641513029",
+ "TargetId": "212755263003745",
+ "Category": "SYS_ROLE_HAS_RESOURCE",
+ "ExtJson": "{\"MenuId\":212755263003745,\"ButtonInfo\":[212825263004728,212825263004729,212825263004730,212825263004731,383020955254853,383022400483397]}"
+ },
+ {
+ "Id": "517480282214471",
+ "ObjectId": "511793641513029",
+ "TargetId": "212755263003746",
+ "Category": "SYS_ROLE_HAS_RESOURCE",
+ "ExtJson": "{\"MenuId\":212755263003746,\"ButtonInfo\":[212825263005734,212825263005735,212825263005736,212825263005737,212825263005738,212825263005739,212825263005740,391869166551109,391869250662469,395712751292485]}"
+ },
+ {
+ "Id": "517480282214472",
+ "ObjectId": "511793641513029",
+ "TargetId": "212755263003747",
+ "Category": "SYS_ROLE_HAS_RESOURCE",
+ "ExtJson": "{\"MenuId\":212755263003747,\"ButtonInfo\":[212825263006739,212825263006749,212825263006750,212825263006751]}"
+ },
+ {
+ "Id": "517480282214473",
+ "ObjectId": "511793641513029",
+ "TargetId": "517412647174213",
+ "Category": "SYS_ROLE_HAS_RESOURCE",
+ "ExtJson": "{\"MenuId\":517412647174213,\"ButtonInfo\":[517470837813317,517470837813318,517470837813319,517470837813320,517480163758149,517480218902597]}"
+ },
+ {
+ "Id": "517480282214474",
+ "ObjectId": "511793641513029",
+ "TargetId": "/biz/organization/org/tree",
+ "Category": "SYS_ROLE_HAS_PERMISSION",
+ "ExtJson": "{\"ScopeCategory\":\"SCOPE_ORG_CHILD\",\"ScopeDefineOrgIdList\":[],\"ApiUrl\":\"/biz/organization/org/tree\"}"
+ },
+ {
+ "Id": "517480282214475",
+ "ObjectId": "511793641513029",
+ "TargetId": "/biz/organization/org/page",
+ "Category": "SYS_ROLE_HAS_PERMISSION",
+ "ExtJson": "{\"ScopeCategory\":\"SCOPE_ORG_CHILD\",\"ScopeDefineOrgIdList\":[],\"ApiUrl\":\"/biz/organization/org/page\"}"
},
{
- "Id": "361376058916933",
- "ObjectId": "360646662586437",
- "TargetId": "212755263003746",
- "Category": "SYS_ROLE_HAS_RESOURCE",
- "ExtJson": "{\"MenuId\":212755263003746,\"ButtonInfo\":[212825263005734,212825263005736,212825263005737,212825263005738,212825263005740]}"
+ "Id": "517480282214476",
+ "ObjectId": "511793641513029",
+ "TargetId": "/biz/organization/org/orgTreeSelector",
+ "Category": "SYS_ROLE_HAS_PERMISSION",
+ "ExtJson": "{\"ScopeCategory\":\"SCOPE_ORG_CHILD\",\"ScopeDefineOrgIdList\":[],\"ApiUrl\":\"/biz/organization/org/orgTreeSelector\"}"
},
{
- "Id": "361376304689221",
- "ObjectId": "359177888051269",
- "TargetId": "360646662586437",
- "Category": "SYS_USER_HAS_ROLE",
- "ExtJson": ""
+ "Id": "517480282214477",
+ "ObjectId": "511793641513029",
+ "TargetId": "/biz/organization/org/userSelector",
+ "Category": "SYS_ROLE_HAS_PERMISSION",
+ "ExtJson": "{\"ScopeCategory\":\"SCOPE_ORG_CHILD\",\"ScopeDefineOrgIdList\":[],\"ApiUrl\":\"/biz/organization/org/userSelector\"}"
},
{
- "Id": "361378601926725",
- "ObjectId": "360646662586437",
- "TargetId": "/biz/user/orgTreeSelector",
+ "Id": "517480282214478",
+ "ObjectId": "511793641513029",
+ "TargetId": "/biz/organization/org/detail",
"Category": "SYS_ROLE_HAS_PERMISSION",
- "ExtJson": "{\"ScopeCategory\":\"SCOPE_ORG\",\"ScopeDefineOrgIdList\":[],\"ApiUrl\":\"/biz/user/orgTreeSelector\"}"
+ "ExtJson": "{\"ScopeCategory\":\"SCOPE_ORG_CHILD\",\"ScopeDefineOrgIdList\":[],\"ApiUrl\":\"/biz/organization/org/detail\"}"
},
{
- "Id": "361378601926726",
- "ObjectId": "360646662586437",
- "TargetId": "/biz/user/page",
+ "Id": "517480282214479",
+ "ObjectId": "511793641513029",
+ "TargetId": "/biz/organization/org/add",
"Category": "SYS_ROLE_HAS_PERMISSION",
- "ExtJson": "{\"ScopeCategory\":\"SCOPE_ORG_CHILD\",\"ScopeDefineOrgIdList\":[],\"ApiUrl\":\"/biz/user/page\"}"
+ "ExtJson": "{\"ScopeCategory\":\"SCOPE_ORG_CHILD\",\"ScopeDefineOrgIdList\":[],\"ApiUrl\":\"/biz/organization/org/add\"}"
},
{
- "Id": "361378601926727",
- "ObjectId": "360646662586437",
- "TargetId": "/biz/user/userSelector",
+ "Id": "517480282214480",
+ "ObjectId": "511793641513029",
+ "TargetId": "/biz/organization/org/edit",
"Category": "SYS_ROLE_HAS_PERMISSION",
- "ExtJson": "{\"ScopeCategory\":\"SCOPE_SELF\",\"ScopeDefineOrgIdList\":[],\"ApiUrl\":\"/biz/user/userSelector\"}"
+ "ExtJson": "{\"ScopeCategory\":\"SCOPE_ORG_CHILD\",\"ScopeDefineOrgIdList\":[],\"ApiUrl\":\"/biz/organization/org/edit\"}"
},
{
- "Id": "361378601926728",
- "ObjectId": "360646662586437",
- "TargetId": "/biz/user/positionSelector",
+ "Id": "517480282214481",
+ "ObjectId": "511793641513029",
+ "TargetId": "/biz/organization/org/copy",
"Category": "SYS_ROLE_HAS_PERMISSION",
- "ExtJson": "{\"ScopeCategory\":\"SCOPE_ORG_CHILD\",\"ScopeDefineOrgIdList\":[],\"ApiUrl\":\"/biz/user/positionSelector\"}"
+ "ExtJson": "{\"ScopeCategory\":\"SCOPE_ORG_CHILD\",\"ScopeDefineOrgIdList\":[],\"ApiUrl\":\"/biz/organization/org/copy\"}"
},
{
- "Id": "361378601926729",
- "ObjectId": "360646662586437",
- "TargetId": "/biz/user/add",
+ "Id": "517480282214482",
+ "ObjectId": "511793641513029",
+ "TargetId": "/biz/organization/org/delete",
"Category": "SYS_ROLE_HAS_PERMISSION",
- "ExtJson": "{\"ScopeCategory\":\"SCOPE_SELF\",\"ScopeDefineOrgIdList\":[],\"ApiUrl\":\"/biz/user/add\"}"
+ "ExtJson": "{\"ScopeCategory\":\"SCOPE_ORG_CHILD\",\"ScopeDefineOrgIdList\":[],\"ApiUrl\":\"/biz/organization/org/delete\"}"
},
{
- "Id": "361378601926730",
- "ObjectId": "360646662586437",
- "TargetId": "/biz/user/edit",
+ "Id": "517480282214483",
+ "ObjectId": "511793641513029",
+ "TargetId": "/biz/organization/position/tree",
"Category": "SYS_ROLE_HAS_PERMISSION",
- "ExtJson": "{\"ScopeCategory\":\"SCOPE_SELF\",\"ScopeDefineOrgIdList\":[],\"ApiUrl\":\"/biz/user/edit\"}"
+ "ExtJson": "{\"ScopeCategory\":\"SCOPE_ORG_CHILD\",\"ScopeDefineOrgIdList\":[],\"ApiUrl\":\"/biz/organization/position/tree\"}"
},
{
- "Id": "361378601926731",
- "ObjectId": "360646662586437",
- "TargetId": "/biz/user/delete",
+ "Id": "517480282214484",
+ "ObjectId": "511793641513029",
+ "TargetId": "/biz/organization/position/page",
"Category": "SYS_ROLE_HAS_PERMISSION",
- "ExtJson": "{\"ScopeCategory\":\"SCOPE_SELF\",\"ScopeDefineOrgIdList\":[],\"ApiUrl\":\"/biz/user/delete\"}"
+ "ExtJson": "{\"ScopeCategory\":\"SCOPE_ORG_CHILD\",\"ScopeDefineOrgIdList\":[],\"ApiUrl\":\"/biz/organization/position/page\"}"
},
{
- "Id": "361378601926732",
- "ObjectId": "360646662586437",
- "TargetId": "/biz/user/disableUser",
+ "Id": "517480282214485",
+ "ObjectId": "511793641513029",
+ "TargetId": "/biz/organization/position/detail",
"Category": "SYS_ROLE_HAS_PERMISSION",
- "ExtJson": "{\"ScopeCategory\":\"SCOPE_SELF\",\"ScopeDefineOrgIdList\":[],\"ApiUrl\":\"/biz/user/disableUser\"}"
+ "ExtJson": "{\"ScopeCategory\":\"SCOPE_ORG_CHILD\",\"ScopeDefineOrgIdList\":[],\"ApiUrl\":\"/biz/organization/position/detail\"}"
},
{
- "Id": "361378601926733",
- "ObjectId": "360646662586437",
- "TargetId": "/biz/user/enableUser",
+ "Id": "517480282214486",
+ "ObjectId": "511793641513029",
+ "TargetId": "/biz/organization/position/selector",
"Category": "SYS_ROLE_HAS_PERMISSION",
- "ExtJson": "{\"ScopeCategory\":\"SCOPE_SELF\",\"ScopeDefineOrgIdList\":[],\"ApiUrl\":\"/biz/user/enableUser\"}"
+ "ExtJson": "{\"ScopeCategory\":\"SCOPE_ORG_CHILD\",\"ScopeDefineOrgIdList\":[],\"ApiUrl\":\"/biz/organization/position/selector\"}"
},
{
- "Id": "361378601926734",
- "ObjectId": "360646662586437",
- "TargetId": "/biz/user/resetPassword",
+ "Id": "517480282214487",
+ "ObjectId": "511793641513029",
+ "TargetId": "/biz/organization/position/add",
"Category": "SYS_ROLE_HAS_PERMISSION",
- "ExtJson": "{\"ScopeCategory\":\"SCOPE_SELF\",\"ScopeDefineOrgIdList\":[],\"ApiUrl\":\"/biz/user/resetPassword\"}"
+ "ExtJson": "{\"ScopeCategory\":\"SCOPE_ORG_CHILD\",\"ScopeDefineOrgIdList\":[],\"ApiUrl\":\"/biz/organization/position/add\"}"
},
{
- "Id": "361378601926735",
- "ObjectId": "360646662586437",
- "TargetId": "/biz/user/ownRole",
+ "Id": "517480282214488",
+ "ObjectId": "511793641513029",
+ "TargetId": "/biz/organization/position/edit",
"Category": "SYS_ROLE_HAS_PERMISSION",
- "ExtJson": "{\"ScopeCategory\":\"SCOPE_SELF\",\"ScopeDefineOrgIdList\":[],\"ApiUrl\":\"/biz/user/ownRole\"}"
+ "ExtJson": "{\"ScopeCategory\":\"SCOPE_ORG_CHILD\",\"ScopeDefineOrgIdList\":[],\"ApiUrl\":\"/biz/organization/position/edit\"}"
},
{
- "Id": "361378601926736",
- "ObjectId": "360646662586437",
- "TargetId": "/biz/user/grantRole",
+ "Id": "517480282214489",
+ "ObjectId": "511793641513029",
+ "TargetId": "/biz/organization/position/delete",
"Category": "SYS_ROLE_HAS_PERMISSION",
- "ExtJson": "{\"ScopeCategory\":\"SCOPE_SELF\",\"ScopeDefineOrgIdList\":[],\"ApiUrl\":\"/biz/user/grantRole\"}"
+ "ExtJson": "{\"ScopeCategory\":\"SCOPE_ORG_CHILD\",\"ScopeDefineOrgIdList\":[],\"ApiUrl\":\"/biz/organization/position/delete\"}"
},
{
- "Id": "361378601926737",
- "ObjectId": "360646662586437",
- "TargetId": "/biz/user/roleSelector",
+ "Id": "517480282214490",
+ "ObjectId": "511793641513029",
+ "TargetId": "/biz/organization/role/page",
"Category": "SYS_ROLE_HAS_PERMISSION",
- "ExtJson": "{\"ScopeCategory\":\"SCOPE_SELF\",\"ScopeDefineOrgIdList\":[],\"ApiUrl\":\"/biz/user/roleSelector\"}"
+ "ExtJson": "{\"ScopeCategory\":\"SCOPE_ORG_CHILD\",\"ScopeDefineOrgIdList\":[],\"ApiUrl\":\"/biz/organization/role/page\"}"
},
{
- "Id": "361406212943941",
- "ObjectId": "361405857865797",
- "TargetId": "359567292014661",
- "Category": "SYS_USER_HAS_ROLE",
- "ExtJson": ""
+ "Id": "517480282214491",
+ "ObjectId": "511793641513029",
+ "TargetId": "/biz/organization/role/add",
+ "Category": "SYS_ROLE_HAS_PERMISSION",
+ "ExtJson": "{\"ScopeCategory\":\"SCOPE_ORG_CHILD\",\"ScopeDefineOrgIdList\":[],\"ApiUrl\":\"/biz/organization/role/add\"}"
},
{
- "Id": "361406234341445",
- "ObjectId": "361405930270789",
- "TargetId": "360645671104581",
- "Category": "SYS_USER_HAS_ROLE",
- "ExtJson": ""
+ "Id": "517480282214492",
+ "ObjectId": "511793641513029",
+ "TargetId": "/biz/organization/role/edit",
+ "Category": "SYS_ROLE_HAS_PERMISSION",
+ "ExtJson": "{\"ScopeCategory\":\"SCOPE_ORG_CHILD\",\"ScopeDefineOrgIdList\":[],\"ApiUrl\":\"/biz/organization/role/edit\"}"
},
{
- "Id": "361424325550149",
- "ObjectId": "361406147739717",
- "TargetId": "360646281904197",
- "Category": "SYS_USER_HAS_ROLE",
+ "Id": "517480282214493",
+ "ObjectId": "511793641513029",
+ "TargetId": "/biz/organization/role/delete",
+ "Category": "SYS_ROLE_HAS_PERMISSION",
+ "ExtJson": "{\"ScopeCategory\":\"SCOPE_ORG_CHILD\",\"ScopeDefineOrgIdList\":[],\"ApiUrl\":\"/biz/organization/role/delete\"}"
+ },
+ {
+ "Id": "517480282214494",
+ "ObjectId": "511793641513029",
+ "TargetId": "/biz/organization/role/resourceTreeSelector",
+ "Category": "SYS_ROLE_HAS_PERMISSION",
+ "ExtJson": "{\"ScopeCategory\":\"SCOPE_ORG_CHILD\",\"ScopeDefineOrgIdList\":[],\"ApiUrl\":\"/biz/organization/role/resourceTreeSelector\"}"
+ },
+ {
+ "Id": "517480282214495",
+ "ObjectId": "511793641513029",
+ "TargetId": "/biz/organization/role/ownResource",
+ "Category": "SYS_ROLE_HAS_PERMISSION",
+ "ExtJson": "{\"ScopeCategory\":\"SCOPE_ORG_CHILD\",\"ScopeDefineOrgIdList\":[],\"ApiUrl\":\"/biz/organization/role/ownResource\"}"
+ },
+ {
+ "Id": "517480282214496",
+ "ObjectId": "511793641513029",
+ "TargetId": "/biz/organization/role/grantResource",
+ "Category": "SYS_ROLE_HAS_PERMISSION",
+ "ExtJson": "{\"ScopeCategory\":\"SCOPE_ORG_CHILD\",\"ScopeDefineOrgIdList\":[],\"ApiUrl\":\"/biz/organization/role/grantResource\"}"
+ },
+ {
+ "Id": "517480282214497",
+ "ObjectId": "511793641513029",
+ "TargetId": "/biz/organization/role/permissionTreeSelector",
+ "Category": "SYS_ROLE_HAS_PERMISSION",
+ "ExtJson": "{\"ScopeCategory\":\"SCOPE_ORG_CHILD\",\"ScopeDefineOrgIdList\":[],\"ApiUrl\":\"/biz/organization/role/permissionTreeSelector\"}"
+ },
+ {
+ "Id": "517480282214498",
+ "ObjectId": "511793641513029",
+ "TargetId": "/biz/organization/role/ownPermission",
+ "Category": "SYS_ROLE_HAS_PERMISSION",
+ "ExtJson": "{\"ScopeCategory\":\"SCOPE_ORG_CHILD\",\"ScopeDefineOrgIdList\":[],\"ApiUrl\":\"/biz/organization/role/ownPermission\"}"
+ },
+ {
+ "Id": "517480282214499",
+ "ObjectId": "511793641513029",
+ "TargetId": "/biz/organization/role/grantPermission",
+ "Category": "SYS_ROLE_HAS_PERMISSION",
+ "ExtJson": "{\"ScopeCategory\":\"SCOPE_ORG_CHILD\",\"ScopeDefineOrgIdList\":[],\"ApiUrl\":\"/biz/organization/role/grantPermission\"}"
+ },
+ {
+ "Id": "517480282214500",
+ "ObjectId": "511793641513029",
+ "TargetId": "/biz/organization/role/ownUser",
+ "Category": "SYS_ROLE_HAS_PERMISSION",
+ "ExtJson": "{\"ScopeCategory\":\"SCOPE_ORG_CHILD\",\"ScopeDefineOrgIdList\":[],\"ApiUrl\":\"/biz/organization/role/ownUser\"}"
+ },
+ {
+ "Id": "517480282218565",
+ "ObjectId": "511793641513029",
+ "TargetId": "/biz/organization/role/grantUser",
+ "Category": "SYS_ROLE_HAS_PERMISSION",
+ "ExtJson": "{\"ScopeCategory\":\"SCOPE_ORG_CHILD\",\"ScopeDefineOrgIdList\":[],\"ApiUrl\":\"/biz/organization/role/grantUser\"}"
+ },
+ {
+ "Id": "517480282218566",
+ "ObjectId": "511793641513029",
+ "TargetId": "/biz/organization/role/tree",
+ "Category": "SYS_ROLE_HAS_PERMISSION",
+ "ExtJson": "{\"ScopeCategory\":\"SCOPE_ORG_CHILD\",\"ScopeDefineOrgIdList\":[],\"ApiUrl\":\"/biz/organization/role/tree\"}"
+ },
+ {
+ "Id": "517480282218567",
+ "ObjectId": "511793641513029",
+ "TargetId": "/biz/organization/role/detail",
+ "Category": "SYS_ROLE_HAS_PERMISSION",
+ "ExtJson": "{\"ScopeCategory\":\"SCOPE_ORG_CHILD\",\"ScopeDefineOrgIdList\":[],\"ApiUrl\":\"/biz/organization/role/detail\"}"
+ },
+ {
+ "Id": "517480282218568",
+ "ObjectId": "511793641513029",
+ "TargetId": "/biz/organization/role/roleSelector",
+ "Category": "SYS_ROLE_HAS_PERMISSION",
+ "ExtJson": "{\"ScopeCategory\":\"SCOPE_ORG_CHILD\",\"ScopeDefineOrgIdList\":[],\"ApiUrl\":\"/biz/organization/role/roleSelector\"}"
+ },
+ {
+ "Id": "517480282218569",
+ "ObjectId": "511793641513029",
+ "TargetId": "/biz/organization/user/preview",
+ "Category": "SYS_ROLE_HAS_PERMISSION",
+ "ExtJson": "{\"ScopeCategory\":\"SCOPE_ORG_CHILD\",\"ScopeDefineOrgIdList\":[],\"ApiUrl\":\"/biz/organization/user/preview\"}"
+ },
+ {
+ "Id": "517480282218570",
+ "ObjectId": "511793641513029",
+ "TargetId": "/biz/organization/user/page",
+ "Category": "SYS_ROLE_HAS_PERMISSION",
+ "ExtJson": "{\"ScopeCategory\":\"SCOPE_ORG_CHILD\",\"ScopeDefineOrgIdList\":[],\"ApiUrl\":\"/biz/organization/user/page\"}"
+ },
+ {
+ "Id": "517480282218571",
+ "ObjectId": "511793641513029",
+ "TargetId": "/biz/organization/user/selector",
+ "Category": "SYS_ROLE_HAS_PERMISSION",
+ "ExtJson": "{\"ScopeCategory\":\"SCOPE_ORG_CHILD\",\"ScopeDefineOrgIdList\":[],\"ApiUrl\":\"/biz/organization/user/selector\"}"
+ },
+ {
+ "Id": "517480282218572",
+ "ObjectId": "511793641513029",
+ "TargetId": "/biz/organization/user/ownRole",
+ "Category": "SYS_ROLE_HAS_PERMISSION",
+ "ExtJson": "{\"ScopeCategory\":\"SCOPE_ORG_CHILD\",\"ScopeDefineOrgIdList\":[],\"ApiUrl\":\"/biz/organization/user/ownRole\"}"
+ },
+ {
+ "Id": "517480282218573",
+ "ObjectId": "511793641513029",
+ "TargetId": "/biz/organization/user/detail",
+ "Category": "SYS_ROLE_HAS_PERMISSION",
+ "ExtJson": "{\"ScopeCategory\":\"SCOPE_ORG_CHILD\",\"ScopeDefineOrgIdList\":[],\"ApiUrl\":\"/biz/organization/user/detail\"}"
+ },
+ {
+ "Id": "517480282218574",
+ "ObjectId": "511793641513029",
+ "TargetId": "/biz/organization/user/add",
+ "Category": "SYS_ROLE_HAS_PERMISSION",
+ "ExtJson": "{\"ScopeCategory\":\"SCOPE_ORG_CHILD\",\"ScopeDefineOrgIdList\":[],\"ApiUrl\":\"/biz/organization/user/add\"}"
+ },
+ {
+ "Id": "517480282218575",
+ "ObjectId": "511793641513029",
+ "TargetId": "/biz/organization/user/edit",
+ "Category": "SYS_ROLE_HAS_PERMISSION",
+ "ExtJson": "{\"ScopeCategory\":\"SCOPE_ORG_CHILD\",\"ScopeDefineOrgIdList\":[],\"ApiUrl\":\"/biz/organization/user/edit\"}"
+ },
+ {
+ "Id": "517480282218576",
+ "ObjectId": "511793641513029",
+ "TargetId": "/biz/organization/user/edits",
+ "Category": "SYS_ROLE_HAS_PERMISSION",
+ "ExtJson": "{\"ScopeCategory\":\"SCOPE_ORG_CHILD\",\"ScopeDefineOrgIdList\":[],\"ApiUrl\":\"/biz/organization/user/edits\"}"
+ },
+ {
+ "Id": "517480282218577",
+ "ObjectId": "511793641513029",
+ "TargetId": "/biz/organization/user/delete",
+ "Category": "SYS_ROLE_HAS_PERMISSION",
+ "ExtJson": "{\"ScopeCategory\":\"SCOPE_ORG_CHILD\",\"ScopeDefineOrgIdList\":[],\"ApiUrl\":\"/biz/organization/user/delete\"}"
+ },
+ {
+ "Id": "517480282218578",
+ "ObjectId": "511793641513029",
+ "TargetId": "/biz/organization/user/disableUser",
+ "Category": "SYS_ROLE_HAS_PERMISSION",
+ "ExtJson": "{\"ScopeCategory\":\"SCOPE_ORG_CHILD\",\"ScopeDefineOrgIdList\":[],\"ApiUrl\":\"/biz/organization/user/disableUser\"}"
+ },
+ {
+ "Id": "517480282218579",
+ "ObjectId": "511793641513029",
+ "TargetId": "/biz/organization/user/enableUser",
+ "Category": "SYS_ROLE_HAS_PERMISSION",
+ "ExtJson": "{\"ScopeCategory\":\"SCOPE_ORG_CHILD\",\"ScopeDefineOrgIdList\":[],\"ApiUrl\":\"/biz/organization/user/enableUser\"}"
+ },
+ {
+ "Id": "517480282218580",
+ "ObjectId": "511793641513029",
+ "TargetId": "/biz/organization/user/resetPassword",
+ "Category": "SYS_ROLE_HAS_PERMISSION",
+ "ExtJson": "{\"ScopeCategory\":\"SCOPE_ORG_CHILD\",\"ScopeDefineOrgIdList\":[],\"ApiUrl\":\"/biz/organization/user/resetPassword\"}"
+ },
+ {
+ "Id": "517480282218581",
+ "ObjectId": "511793641513029",
+ "TargetId": "/biz/organization/user/grantRole",
+ "Category": "SYS_ROLE_HAS_PERMISSION",
+ "ExtJson": "{\"ScopeCategory\":\"SCOPE_ORG_CHILD\",\"ScopeDefineOrgIdList\":[],\"ApiUrl\":\"/biz/organization/user/grantRole\"}"
+ },
+ {
+ "Id": "517480282218582",
+ "ObjectId": "511793641513029",
+ "TargetId": "/biz/organization/user/import",
+ "Category": "SYS_ROLE_HAS_PERMISSION",
+ "ExtJson": "{\"ScopeCategory\":\"SCOPE_ORG_CHILD\",\"ScopeDefineOrgIdList\":[],\"ApiUrl\":\"/biz/organization/user/import\"}"
+ },
+ {
+ "Id": "517480282218583",
+ "ObjectId": "511793641513029",
+ "TargetId": "/biz/organization/user/export",
+ "Category": "SYS_ROLE_HAS_PERMISSION",
+ "ExtJson": "{\"ScopeCategory\":\"SCOPE_ORG_CHILD\",\"ScopeDefineOrgIdList\":[],\"ApiUrl\":\"/biz/organization/user/export\"}"
+ },
+ {
+ "Id": "517480282218584",
+ "ObjectId": "511793641513029",
+ "TargetId": "/home/index/visLog/list",
+ "Category": "SYS_ROLE_HAS_PERMISSION",
+ "ExtJson": "{\"ScopeCategory\":\"SCOPE_ORG_CHILD\",\"ScopeDefineOrgIdList\":[],\"ApiUrl\":\"/home/index/visLog/list\"}"
+ },
+ {
+ "Id": "517480282218585",
+ "ObjectId": "511793641513029",
+ "TargetId": "/home/index/opLog/list",
+ "Category": "SYS_ROLE_HAS_PERMISSION",
+ "ExtJson": "{\"ScopeCategory\":\"SCOPE_ORG_CHILD\",\"ScopeDefineOrgIdList\":[],\"ApiUrl\":\"/home/index/opLog/list\"}"
+ },
+ {
+ "Id": "517480282218586",
+ "ObjectId": "511793641513029",
+ "TargetId": "/home/index/message/list",
+ "Category": "SYS_ROLE_HAS_PERMISSION",
+ "ExtJson": "{\"ScopeCategory\":\"SCOPE_ORG_CHILD\",\"ScopeDefineOrgIdList\":[],\"ApiUrl\":\"/home/index/message/list\"}"
+ },
+ {
+ "Id": "517480282218587",
+ "ObjectId": "511793641513029",
+ "TargetId": "/home/index/schedule/list",
+ "Category": "SYS_ROLE_HAS_PERMISSION",
+ "ExtJson": "{\"ScopeCategory\":\"SCOPE_ORG_CHILD\",\"ScopeDefineOrgIdList\":[],\"ApiUrl\":\"/home/index/schedule/list\"}"
+ },
+ {
+ "Id": "517480282218588",
+ "ObjectId": "511793641513029",
+ "TargetId": "/home/index/schedule/add",
+ "Category": "SYS_ROLE_HAS_PERMISSION",
+ "ExtJson": "{\"ScopeCategory\":\"SCOPE_ORG_CHILD\",\"ScopeDefineOrgIdList\":[],\"ApiUrl\":\"/home/index/schedule/add\"}"
+ },
+ {
+ "Id": "517480282218589",
+ "ObjectId": "511793641513029",
+ "TargetId": "/home/index/schedule/deleteSchedule",
+ "Category": "SYS_ROLE_HAS_PERMISSION",
+ "ExtJson": "{\"ScopeCategory\":\"SCOPE_ORG_CHILD\",\"ScopeDefineOrgIdList\":[],\"ApiUrl\":\"/home/index/schedule/deleteSchedule\"}"
+ },
+ {
+ "Id": "518179745652805",
+ "ObjectId": "517794467639365",
+ "TargetId": "212755263003743",
+ "Category": "SYS_ROLE_HAS_MODULE",
"ExtJson": ""
},
{
- "Id": "361435467165765",
- "ObjectId": "360645671104581",
+ "Id": "518179745652806",
+ "ObjectId": "517794467639365",
"TargetId": "212755263003745",
"Category": "SYS_ROLE_HAS_RESOURCE",
- "ExtJson": "{\"MenuId\":212755263003745,\"ButtonInfo\":[212825263004729,212825263004730,212825263004731]}"
+ "ExtJson": "{\"MenuId\":212755263003745,\"ButtonInfo\":[212825263004728,212825263004729,212825263004730,212825263004731,383020955254853,383022400483397]}"
},
{
- "Id": "361435467165766",
- "ObjectId": "360645671104581",
+ "Id": "518179745652807",
+ "ObjectId": "517794467639365",
"TargetId": "212755263003746",
"Category": "SYS_ROLE_HAS_RESOURCE",
- "ExtJson": "{\"MenuId\":212755263003746,\"ButtonInfo\":[212825263005735,212825263005736,212825263005737,212825263005738,212825263005739,212825263005740]}"
+ "ExtJson": "{\"MenuId\":212755263003746,\"ButtonInfo\":[212825263005734,212825263005736,212825263005737,212825263005738,212825263005739,212825263005740,391869166551109,391869250662469]}"
},
{
- "Id": "361435467165767",
- "ObjectId": "360645671104581",
- "TargetId": "212755263003747",
- "Category": "SYS_ROLE_HAS_RESOURCE",
- "ExtJson": "{\"MenuId\":212755263003747,\"ButtonInfo\":[212825263006749,212825263006750,212825263006751]}"
+ "Id": "518179745652808",
+ "ObjectId": "517794467639365",
+ "TargetId": "/biz/organization/org/tree",
+ "Category": "SYS_ROLE_HAS_PERMISSION",
+ "ExtJson": "{\"ScopeCategory\":\"SCOPE_ORG_CHILD\",\"ScopeDefineOrgIdList\":[],\"ApiUrl\":\"/biz/organization/org/tree\"}"
},
{
- "Id": "361435467165768",
- "ObjectId": "360645671104581",
- "TargetId": "/biz/org/tree",
+ "Id": "518179745652809",
+ "ObjectId": "517794467639365",
+ "TargetId": "/biz/organization/org/page",
"Category": "SYS_ROLE_HAS_PERMISSION",
- "ExtJson": "{\"ScopeCategory\":\"SCOPE_ORG\",\"ScopeDefineOrgIdList\":[360642028625989,361404296994885],\"ApiUrl\":\"/biz/org/tree\"}"
+ "ExtJson": "{\"ScopeCategory\":\"SCOPE_ORG_CHILD\",\"ScopeDefineOrgIdList\":[],\"ApiUrl\":\"/biz/organization/org/page\"}"
},
{
- "Id": "361435467165769",
- "ObjectId": "360645671104581",
- "TargetId": "/biz/org/page",
+ "Id": "518179745652810",
+ "ObjectId": "517794467639365",
+ "TargetId": "/biz/organization/org/orgTreeSelector",
"Category": "SYS_ROLE_HAS_PERMISSION",
- "ExtJson": "{\"ScopeCategory\":\"SCOPE_ORG\",\"ScopeDefineOrgIdList\":[360642028625989,361404296994885],\"ApiUrl\":\"/biz/org/page\"}"
+ "ExtJson": "{\"ScopeCategory\":\"SCOPE_ORG_CHILD\",\"ScopeDefineOrgIdList\":[],\"ApiUrl\":\"/biz/organization/org/orgTreeSelector\"}"
},
{
- "Id": "361435467165770",
- "ObjectId": "360645671104581",
- "TargetId": "/biz/org/add",
+ "Id": "518179745652811",
+ "ObjectId": "517794467639365",
+ "TargetId": "/biz/organization/org/userSelector",
"Category": "SYS_ROLE_HAS_PERMISSION",
- "ExtJson": "{\"ScopeCategory\":\"SCOPE_ORG\",\"ScopeDefineOrgIdList\":[360642028625989,361404296994885],\"ApiUrl\":\"/biz/org/add\"}"
+ "ExtJson": "{\"ScopeCategory\":\"SCOPE_ORG_CHILD\",\"ScopeDefineOrgIdList\":[],\"ApiUrl\":\"/biz/organization/org/userSelector\"}"
},
{
- "Id": "361435467165771",
- "ObjectId": "360645671104581",
- "TargetId": "/biz/org/edit",
+ "Id": "518179745652812",
+ "ObjectId": "517794467639365",
+ "TargetId": "/biz/organization/org/detail",
"Category": "SYS_ROLE_HAS_PERMISSION",
- "ExtJson": "{\"ScopeCategory\":\"SCOPE_ORG\",\"ScopeDefineOrgIdList\":[360642028625989,361404296994885],\"ApiUrl\":\"/biz/org/edit\"}"
+ "ExtJson": "{\"ScopeCategory\":\"SCOPE_ORG_CHILD\",\"ScopeDefineOrgIdList\":[],\"ApiUrl\":\"/biz/organization/org/detail\"}"
},
{
- "Id": "361435467165772",
- "ObjectId": "360645671104581",
- "TargetId": "/biz/org/delete",
+ "Id": "518179745652813",
+ "ObjectId": "517794467639365",
+ "TargetId": "/biz/organization/org/add",
"Category": "SYS_ROLE_HAS_PERMISSION",
- "ExtJson": "{\"ScopeCategory\":\"SCOPE_ORG\",\"ScopeDefineOrgIdList\":[360642028625989,361404296994885],\"ApiUrl\":\"/biz/org/delete\"}"
+ "ExtJson": "{\"ScopeCategory\":\"SCOPE_ORG_CHILD\",\"ScopeDefineOrgIdList\":[],\"ApiUrl\":\"/biz/organization/org/add\"}"
},
{
- "Id": "361435467165773",
- "ObjectId": "360645671104581",
- "TargetId": "/biz/org/orgTreeSelector",
+ "Id": "518179745652814",
+ "ObjectId": "517794467639365",
+ "TargetId": "/biz/organization/org/edit",
"Category": "SYS_ROLE_HAS_PERMISSION",
- "ExtJson": "{\"ScopeCategory\":\"SCOPE_ORG\",\"ScopeDefineOrgIdList\":[360642028625989,361404296994885],\"ApiUrl\":\"/biz/org/orgTreeSelector\"}"
+ "ExtJson": "{\"ScopeCategory\":\"SCOPE_ORG_CHILD\",\"ScopeDefineOrgIdList\":[],\"ApiUrl\":\"/biz/organization/org/edit\"}"
},
{
- "Id": "361435467165774",
- "ObjectId": "360645671104581",
- "TargetId": "/biz/org/userSelector",
+ "Id": "518179745652815",
+ "ObjectId": "517794467639365",
+ "TargetId": "/biz/organization/org/copy",
"Category": "SYS_ROLE_HAS_PERMISSION",
- "ExtJson": "{\"ScopeCategory\":\"SCOPE_ORG\",\"ScopeDefineOrgIdList\":[360642028625989,361404296994885],\"ApiUrl\":\"/biz/org/userSelector\"}"
+ "ExtJson": "{\"ScopeCategory\":\"SCOPE_ORG_CHILD\",\"ScopeDefineOrgIdList\":[],\"ApiUrl\":\"/biz/organization/org/copy\"}"
},
{
- "Id": "361435467165775",
- "ObjectId": "360645671104581",
- "TargetId": "/biz/position/page",
+ "Id": "518179745652816",
+ "ObjectId": "517794467639365",
+ "TargetId": "/biz/organization/org/delete",
"Category": "SYS_ROLE_HAS_PERMISSION",
- "ExtJson": "{\"ScopeCategory\":\"SCOPE_ORG\",\"ScopeDefineOrgIdList\":[360642028625989,361404296994885],\"ApiUrl\":\"/biz/position/page\"}"
+ "ExtJson": "{\"ScopeCategory\":\"SCOPE_ORG_CHILD\",\"ScopeDefineOrgIdList\":[],\"ApiUrl\":\"/biz/organization/org/delete\"}"
},
{
- "Id": "361435467165776",
- "ObjectId": "360645671104581",
- "TargetId": "/biz/position/add",
+ "Id": "518179745652817",
+ "ObjectId": "517794467639365",
+ "TargetId": "/biz/organization/user/preview",
"Category": "SYS_ROLE_HAS_PERMISSION",
- "ExtJson": "{\"ScopeCategory\":\"SCOPE_ORG\",\"ScopeDefineOrgIdList\":[360642028625989,361404296994885],\"ApiUrl\":\"/biz/position/add\"}"
+ "ExtJson": "{\"ScopeCategory\":\"SCOPE_ORG_CHILD\",\"ScopeDefineOrgIdList\":[],\"ApiUrl\":\"/biz/organization/user/preview\"}"
},
{
- "Id": "361435467165777",
- "ObjectId": "360645671104581",
- "TargetId": "/biz/position/edit",
+ "Id": "518179745652818",
+ "ObjectId": "517794467639365",
+ "TargetId": "/biz/organization/user/page",
"Category": "SYS_ROLE_HAS_PERMISSION",
- "ExtJson": "{\"ScopeCategory\":\"SCOPE_ORG\",\"ScopeDefineOrgIdList\":[360642028625989,361404296994885],\"ApiUrl\":\"/biz/position/edit\"}"
+ "ExtJson": "{\"ScopeCategory\":\"SCOPE_ORG_CHILD\",\"ScopeDefineOrgIdList\":[],\"ApiUrl\":\"/biz/organization/user/page\"}"
},
{
- "Id": "361435467165778",
- "ObjectId": "360645671104581",
- "TargetId": "/biz/position/delete",
+ "Id": "518179745652819",
+ "ObjectId": "517794467639365",
+ "TargetId": "/biz/organization/user/selector",
"Category": "SYS_ROLE_HAS_PERMISSION",
- "ExtJson": "{\"ScopeCategory\":\"SCOPE_ORG\",\"ScopeDefineOrgIdList\":[360642028625989,361404296994885],\"ApiUrl\":\"/biz/position/delete\"}"
+ "ExtJson": "{\"ScopeCategory\":\"SCOPE_ORG_CHILD\",\"ScopeDefineOrgIdList\":[],\"ApiUrl\":\"/biz/organization/user/selector\"}"
},
{
- "Id": "361435467165779",
- "ObjectId": "360645671104581",
- "TargetId": "/biz/user/orgTreeSelector",
+ "Id": "518179745652820",
+ "ObjectId": "517794467639365",
+ "TargetId": "/biz/organization/user/ownRole",
"Category": "SYS_ROLE_HAS_PERMISSION",
- "ExtJson": "{\"ScopeCategory\":\"SCOPE_ORG\",\"ScopeDefineOrgIdList\":[360642028625989,361404296994885],\"ApiUrl\":\"/biz/user/orgTreeSelector\"}"
+ "ExtJson": "{\"ScopeCategory\":\"SCOPE_ORG_CHILD\",\"ScopeDefineOrgIdList\":[],\"ApiUrl\":\"/biz/organization/user/ownRole\"}"
},
{
- "Id": "361435467165780",
- "ObjectId": "360645671104581",
- "TargetId": "/biz/user/page",
+ "Id": "518179745652821",
+ "ObjectId": "517794467639365",
+ "TargetId": "/biz/organization/user/detail",
"Category": "SYS_ROLE_HAS_PERMISSION",
- "ExtJson": "{\"ScopeCategory\":\"SCOPE_ORG\",\"ScopeDefineOrgIdList\":[360642028625989,361404296994885],\"ApiUrl\":\"/biz/user/page\"}"
+ "ExtJson": "{\"ScopeCategory\":\"SCOPE_ORG_CHILD\",\"ScopeDefineOrgIdList\":[],\"ApiUrl\":\"/biz/organization/user/detail\"}"
},
{
- "Id": "361435467165781",
- "ObjectId": "360645671104581",
- "TargetId": "/biz/user/userSelector",
+ "Id": "518179745652822",
+ "ObjectId": "517794467639365",
+ "TargetId": "/biz/organization/user/add",
"Category": "SYS_ROLE_HAS_PERMISSION",
- "ExtJson": "{\"ScopeCategory\":\"SCOPE_ORG\",\"ScopeDefineOrgIdList\":[360642028625989,361404296994885],\"ApiUrl\":\"/biz/user/userSelector\"}"
+ "ExtJson": "{\"ScopeCategory\":\"SCOPE_ORG_CHILD\",\"ScopeDefineOrgIdList\":[],\"ApiUrl\":\"/biz/organization/user/add\"}"
},
{
- "Id": "361435467165782",
- "ObjectId": "360645671104581",
- "TargetId": "/biz/user/positionSelector",
+ "Id": "518179745652823",
+ "ObjectId": "517794467639365",
+ "TargetId": "/biz/organization/user/edit",
"Category": "SYS_ROLE_HAS_PERMISSION",
- "ExtJson": "{\"ScopeCategory\":\"SCOPE_ORG\",\"ScopeDefineOrgIdList\":[360642028625989,361404296994885],\"ApiUrl\":\"/biz/user/positionSelector\"}"
+ "ExtJson": "{\"ScopeCategory\":\"SCOPE_ORG_CHILD\",\"ScopeDefineOrgIdList\":[],\"ApiUrl\":\"/biz/organization/user/edit\"}"
},
{
- "Id": "361435467165783",
- "ObjectId": "360645671104581",
- "TargetId": "/biz/user/add",
+ "Id": "518179745652824",
+ "ObjectId": "517794467639365",
+ "TargetId": "/biz/organization/user/edits",
"Category": "SYS_ROLE_HAS_PERMISSION",
- "ExtJson": "{\"ScopeCategory\":\"SCOPE_ORG\",\"ScopeDefineOrgIdList\":[360642028625989,361404296994885],\"ApiUrl\":\"/biz/user/add\"}"
+ "ExtJson": "{\"ScopeCategory\":\"SCOPE_ORG_CHILD\",\"ScopeDefineOrgIdList\":[],\"ApiUrl\":\"/biz/organization/user/edits\"}"
},
{
- "Id": "361435467165784",
- "ObjectId": "360645671104581",
- "TargetId": "/biz/user/edit",
+ "Id": "518179745652825",
+ "ObjectId": "517794467639365",
+ "TargetId": "/biz/organization/user/delete",
"Category": "SYS_ROLE_HAS_PERMISSION",
- "ExtJson": "{\"ScopeCategory\":\"SCOPE_ORG\",\"ScopeDefineOrgIdList\":[360642028625989,361404296994885],\"ApiUrl\":\"/biz/user/edit\"}"
+ "ExtJson": "{\"ScopeCategory\":\"SCOPE_ORG_CHILD\",\"ScopeDefineOrgIdList\":[],\"ApiUrl\":\"/biz/organization/user/delete\"}"
},
{
- "Id": "361435467165785",
- "ObjectId": "360645671104581",
- "TargetId": "/biz/user/delete",
+ "Id": "518179745652826",
+ "ObjectId": "517794467639365",
+ "TargetId": "/biz/organization/user/disableUser",
"Category": "SYS_ROLE_HAS_PERMISSION",
- "ExtJson": "{\"ScopeCategory\":\"SCOPE_ORG\",\"ScopeDefineOrgIdList\":[360642028625989,361404296994885],\"ApiUrl\":\"/biz/user/delete\"}"
+ "ExtJson": "{\"ScopeCategory\":\"SCOPE_ORG_CHILD\",\"ScopeDefineOrgIdList\":[],\"ApiUrl\":\"/biz/organization/user/disableUser\"}"
},
{
- "Id": "361435467165786",
- "ObjectId": "360645671104581",
- "TargetId": "/biz/user/disableUser",
+ "Id": "518179745652827",
+ "ObjectId": "517794467639365",
+ "TargetId": "/biz/organization/user/enableUser",
"Category": "SYS_ROLE_HAS_PERMISSION",
- "ExtJson": "{\"ScopeCategory\":\"SCOPE_ORG\",\"ScopeDefineOrgIdList\":[360642028625989,361404296994885],\"ApiUrl\":\"/biz/user/disableUser\"}"
+ "ExtJson": "{\"ScopeCategory\":\"SCOPE_ORG_CHILD\",\"ScopeDefineOrgIdList\":[],\"ApiUrl\":\"/biz/organization/user/enableUser\"}"
},
{
- "Id": "361435467165787",
- "ObjectId": "360645671104581",
- "TargetId": "/biz/user/enableUser",
+ "Id": "518179745652828",
+ "ObjectId": "517794467639365",
+ "TargetId": "/biz/organization/user/resetPassword",
"Category": "SYS_ROLE_HAS_PERMISSION",
- "ExtJson": "{\"ScopeCategory\":\"SCOPE_ORG\",\"ScopeDefineOrgIdList\":[360642028625989,361404296994885],\"ApiUrl\":\"/biz/user/enableUser\"}"
+ "ExtJson": "{\"ScopeCategory\":\"SCOPE_ORG_CHILD\",\"ScopeDefineOrgIdList\":[],\"ApiUrl\":\"/biz/organization/user/resetPassword\"}"
},
{
- "Id": "361435467165788",
- "ObjectId": "360645671104581",
- "TargetId": "/biz/user/resetPassword",
+ "Id": "518179745652829",
+ "ObjectId": "517794467639365",
+ "TargetId": "/biz/organization/user/grantRole",
"Category": "SYS_ROLE_HAS_PERMISSION",
- "ExtJson": "{\"ScopeCategory\":\"SCOPE_ORG\",\"ScopeDefineOrgIdList\":[360642028625989,361404296994885],\"ApiUrl\":\"/biz/user/resetPassword\"}"
+ "ExtJson": "{\"ScopeCategory\":\"SCOPE_ORG_CHILD\",\"ScopeDefineOrgIdList\":[],\"ApiUrl\":\"/biz/organization/user/grantRole\"}"
},
{
- "Id": "361435467165789",
- "ObjectId": "360645671104581",
- "TargetId": "/biz/user/ownRole",
+ "Id": "518179745652830",
+ "ObjectId": "517794467639365",
+ "TargetId": "/biz/organization/user/import",
"Category": "SYS_ROLE_HAS_PERMISSION",
- "ExtJson": "{\"ScopeCategory\":\"SCOPE_ORG\",\"ScopeDefineOrgIdList\":[360642028625989,361404296994885],\"ApiUrl\":\"/biz/user/ownRole\"}"
+ "ExtJson": "{\"ScopeCategory\":\"SCOPE_ORG_CHILD\",\"ScopeDefineOrgIdList\":[],\"ApiUrl\":\"/biz/organization/user/import\"}"
},
{
- "Id": "361435467165790",
- "ObjectId": "360645671104581",
- "TargetId": "/biz/user/grantRole",
+ "Id": "518179745652831",
+ "ObjectId": "517794467639365",
+ "TargetId": "/biz/organization/user/export",
"Category": "SYS_ROLE_HAS_PERMISSION",
- "ExtJson": "{\"ScopeCategory\":\"SCOPE_ORG\",\"ScopeDefineOrgIdList\":[360642028625989,361404296994885],\"ApiUrl\":\"/biz/user/grantRole\"}"
+ "ExtJson": "{\"ScopeCategory\":\"SCOPE_ORG_CHILD\",\"ScopeDefineOrgIdList\":[],\"ApiUrl\":\"/biz/organization/user/export\"}"
},
{
- "Id": "361435467165791",
- "ObjectId": "360645671104581",
- "TargetId": "/biz/user/roleSelector",
+ "Id": "518179745652832",
+ "ObjectId": "517794467639365",
+ "TargetId": "/home/index/visLog/list",
"Category": "SYS_ROLE_HAS_PERMISSION",
- "ExtJson": "{\"ScopeCategory\":\"SCOPE_ORG\",\"ScopeDefineOrgIdList\":[360642028625989,361404296994885],\"ApiUrl\":\"/biz/user/roleSelector\"}"
+ "ExtJson": "{\"ScopeCategory\":\"SCOPE_ORG_CHILD\",\"ScopeDefineOrgIdList\":[],\"ApiUrl\":\"/home/index/visLog/list\"}"
},
{
- "Id": "361435731247173",
- "ObjectId": "360646281904197",
+ "Id": "518179745652833",
+ "ObjectId": "517794467639365",
+ "TargetId": "/home/index/opLog/list",
+ "Category": "SYS_ROLE_HAS_PERMISSION",
+ "ExtJson": "{\"ScopeCategory\":\"SCOPE_ORG_CHILD\",\"ScopeDefineOrgIdList\":[],\"ApiUrl\":\"/home/index/opLog/list\"}"
+ },
+ {
+ "Id": "518179745652834",
+ "ObjectId": "517794467639365",
+ "TargetId": "/home/index/message/list",
+ "Category": "SYS_ROLE_HAS_PERMISSION",
+ "ExtJson": "{\"ScopeCategory\":\"SCOPE_ORG_CHILD\",\"ScopeDefineOrgIdList\":[],\"ApiUrl\":\"/home/index/message/list\"}"
+ },
+ {
+ "Id": "518179745652835",
+ "ObjectId": "517794467639365",
+ "TargetId": "/home/index/schedule/list",
+ "Category": "SYS_ROLE_HAS_PERMISSION",
+ "ExtJson": "{\"ScopeCategory\":\"SCOPE_ORG_CHILD\",\"ScopeDefineOrgIdList\":[],\"ApiUrl\":\"/home/index/schedule/list\"}"
+ },
+ {
+ "Id": "518179745652836",
+ "ObjectId": "517794467639365",
+ "TargetId": "/home/index/schedule/add",
+ "Category": "SYS_ROLE_HAS_PERMISSION",
+ "ExtJson": "{\"ScopeCategory\":\"SCOPE_ORG_CHILD\",\"ScopeDefineOrgIdList\":[],\"ApiUrl\":\"/home/index/schedule/add\"}"
+ },
+ {
+ "Id": "518179745652837",
+ "ObjectId": "517794467639365",
+ "TargetId": "/home/index/schedule/deleteSchedule",
+ "Category": "SYS_ROLE_HAS_PERMISSION",
+ "ExtJson": "{\"ScopeCategory\":\"SCOPE_ORG_CHILD\",\"ScopeDefineOrgIdList\":[],\"ApiUrl\":\"/home/index/schedule/deleteSchedule\"}"
+ },
+ {
+ "Id": "518189837262917",
+ "ObjectId": "518189781848133",
+ "TargetId": "517794467639365",
+ "Category": "SYS_USER_HAS_ROLE",
+ "ExtJson": ""
+ },
+ {
+ "Id": "518190547849285",
+ "ObjectId": "517794467639365",
+ "TargetId": "212755263003743",
+ "Category": "SYS_ROLE_HAS_MODULE",
+ "ExtJson": ""
+ },
+ {
+ "Id": "518190547849286",
+ "ObjectId": "517794467639365",
"TargetId": "212755263003745",
"Category": "SYS_ROLE_HAS_RESOURCE",
- "ExtJson": "{\"MenuId\":212755263003745,\"ButtonInfo\":[212825263004729,212825263004730,212825263004731]}"
+ "ExtJson": "{\"MenuId\":212755263003745,\"ButtonInfo\":[212825263004728,212825263004729,212825263004730,212825263004731,383020955254853,383022400483397]}"
},
{
- "Id": "361435731247174",
- "ObjectId": "360646281904197",
+ "Id": "518190547849287",
+ "ObjectId": "517794467639365",
"TargetId": "212755263003746",
"Category": "SYS_ROLE_HAS_RESOURCE",
- "ExtJson": "{\"MenuId\":212755263003746,\"ButtonInfo\":[212825263005734,212825263005735,212825263005736,212825263005737,212825263005738,212825263005739,212825263005740]}"
+ "ExtJson": "{\"MenuId\":212755263003746,\"ButtonInfo\":[212825263005734,212825263005736,212825263005737,212825263005738,212825263005739,212825263005740,391869166551109,391869250662469]}"
},
{
- "Id": "361435731247175",
- "ObjectId": "360646281904197",
+ "Id": "518190547849288",
+ "ObjectId": "517794467639365",
"TargetId": "212755263003747",
"Category": "SYS_ROLE_HAS_RESOURCE",
"ExtJson": "{\"MenuId\":212755263003747,\"ButtonInfo\":[212825263006739,212825263006749,212825263006750,212825263006751]}"
},
{
- "Id": "361435731247176",
- "ObjectId": "360646281904197",
- "TargetId": "/biz/org/tree",
+ "Id": "518190547849289",
+ "ObjectId": "517794467639365",
+ "TargetId": "/biz/organization/org/tree",
"Category": "SYS_ROLE_HAS_PERMISSION",
- "ExtJson": "{\"ScopeCategory\":\"SCOPE_ORG_DEFINE\",\"ScopeDefineOrgIdList\":[360642028625989,361404296994885,360642028625989,361404296994885],\"ApiUrl\":\"/biz/org/tree\"}"
+ "ExtJson": "{\"ScopeCategory\":\"SCOPE_ORG_CHILD\",\"ScopeDefineOrgIdList\":[],\"ApiUrl\":\"/biz/organization/org/tree\"}"
},
{
- "Id": "361435731247177",
- "ObjectId": "360646281904197",
- "TargetId": "/biz/org/page",
+ "Id": "518190547849290",
+ "ObjectId": "517794467639365",
+ "TargetId": "/biz/organization/org/page",
"Category": "SYS_ROLE_HAS_PERMISSION",
- "ExtJson": "{\"ScopeCategory\":\"SCOPE_ORG_DEFINE\",\"ScopeDefineOrgIdList\":[360642028625989,361404296994885,360642028625989,361404296994885],\"ApiUrl\":\"/biz/org/page\"}"
+ "ExtJson": "{\"ScopeCategory\":\"SCOPE_ORG_CHILD\",\"ScopeDefineOrgIdList\":[],\"ApiUrl\":\"/biz/organization/org/page\"}"
},
{
- "Id": "361435731247178",
- "ObjectId": "360646281904197",
- "TargetId": "/biz/org/add",
+ "Id": "518190547849291",
+ "ObjectId": "517794467639365",
+ "TargetId": "/biz/organization/org/orgTreeSelector",
"Category": "SYS_ROLE_HAS_PERMISSION",
- "ExtJson": "{\"ScopeCategory\":\"SCOPE_ORG_DEFINE\",\"ScopeDefineOrgIdList\":[360642028625989,361404296994885,360642028625989,361404296994885],\"ApiUrl\":\"/biz/org/add\"}"
+ "ExtJson": "{\"ScopeCategory\":\"SCOPE_ORG_CHILD\",\"ScopeDefineOrgIdList\":[],\"ApiUrl\":\"/biz/organization/org/orgTreeSelector\"}"
},
{
- "Id": "361435731247179",
- "ObjectId": "360646281904197",
- "TargetId": "/biz/org/edit",
+ "Id": "518190547849292",
+ "ObjectId": "517794467639365",
+ "TargetId": "/biz/organization/org/userSelector",
"Category": "SYS_ROLE_HAS_PERMISSION",
- "ExtJson": "{\"ScopeCategory\":\"SCOPE_ORG_DEFINE\",\"ScopeDefineOrgIdList\":[360642028625989,361404296994885,360642028625989,361404296994885],\"ApiUrl\":\"/biz/org/edit\"}"
+ "ExtJson": "{\"ScopeCategory\":\"SCOPE_ORG_CHILD\",\"ScopeDefineOrgIdList\":[],\"ApiUrl\":\"/biz/organization/org/userSelector\"}"
},
{
- "Id": "361435731247180",
- "ObjectId": "360646281904197",
- "TargetId": "/biz/org/delete",
+ "Id": "518190547849293",
+ "ObjectId": "517794467639365",
+ "TargetId": "/biz/organization/org/detail",
"Category": "SYS_ROLE_HAS_PERMISSION",
- "ExtJson": "{\"ScopeCategory\":\"SCOPE_ORG_DEFINE\",\"ScopeDefineOrgIdList\":[360642028625989,361404296994885,360642028625989,361404296994885],\"ApiUrl\":\"/biz/org/delete\"}"
+ "ExtJson": "{\"ScopeCategory\":\"SCOPE_ORG_CHILD\",\"ScopeDefineOrgIdList\":[],\"ApiUrl\":\"/biz/organization/org/detail\"}"
},
{
- "Id": "361435731247181",
- "ObjectId": "360646281904197",
- "TargetId": "/biz/org/orgTreeSelector",
+ "Id": "518190547849294",
+ "ObjectId": "517794467639365",
+ "TargetId": "/biz/organization/org/add",
"Category": "SYS_ROLE_HAS_PERMISSION",
- "ExtJson": "{\"ScopeCategory\":\"SCOPE_ORG_DEFINE\",\"ScopeDefineOrgIdList\":[360642028625989,361404296994885,360642028625989,361404296994885],\"ApiUrl\":\"/biz/org/orgTreeSelector\"}"
+ "ExtJson": "{\"ScopeCategory\":\"SCOPE_ORG_CHILD\",\"ScopeDefineOrgIdList\":[],\"ApiUrl\":\"/biz/organization/org/add\"}"
},
{
- "Id": "361435731247182",
- "ObjectId": "360646281904197",
- "TargetId": "/biz/org/userSelector",
+ "Id": "518190547849295",
+ "ObjectId": "517794467639365",
+ "TargetId": "/biz/organization/org/edit",
"Category": "SYS_ROLE_HAS_PERMISSION",
- "ExtJson": "{\"ScopeCategory\":\"SCOPE_ORG_DEFINE\",\"ScopeDefineOrgIdList\":[360642028625989,361404296994885,360642028625989,361404296994885],\"ApiUrl\":\"/biz/org/userSelector\"}"
+ "ExtJson": "{\"ScopeCategory\":\"SCOPE_ORG_CHILD\",\"ScopeDefineOrgIdList\":[],\"ApiUrl\":\"/biz/organization/org/edit\"}"
},
{
- "Id": "361435731247183",
- "ObjectId": "360646281904197",
- "TargetId": "/biz/position/page",
+ "Id": "518190547849296",
+ "ObjectId": "517794467639365",
+ "TargetId": "/biz/organization/org/copy",
"Category": "SYS_ROLE_HAS_PERMISSION",
- "ExtJson": "{\"ScopeCategory\":\"SCOPE_ORG_DEFINE\",\"ScopeDefineOrgIdList\":[360642028625989,361404296994885,360642028625989,361404296994885],\"ApiUrl\":\"/biz/position/page\"}"
+ "ExtJson": "{\"ScopeCategory\":\"SCOPE_ORG_CHILD\",\"ScopeDefineOrgIdList\":[],\"ApiUrl\":\"/biz/organization/org/copy\"}"
},
{
- "Id": "361435731247184",
- "ObjectId": "360646281904197",
- "TargetId": "/biz/position/add",
+ "Id": "518190547849297",
+ "ObjectId": "517794467639365",
+ "TargetId": "/biz/organization/org/delete",
"Category": "SYS_ROLE_HAS_PERMISSION",
- "ExtJson": "{\"ScopeCategory\":\"SCOPE_ORG_DEFINE\",\"ScopeDefineOrgIdList\":[360642028625989,361404296994885,360642028625989,361404296994885],\"ApiUrl\":\"/biz/position/add\"}"
+ "ExtJson": "{\"ScopeCategory\":\"SCOPE_ORG_CHILD\",\"ScopeDefineOrgIdList\":[],\"ApiUrl\":\"/biz/organization/org/delete\"}"
},
{
- "Id": "361435731247185",
- "ObjectId": "360646281904197",
- "TargetId": "/biz/position/edit",
+ "Id": "518190547849298",
+ "ObjectId": "517794467639365",
+ "TargetId": "/biz/organization/position/tree",
"Category": "SYS_ROLE_HAS_PERMISSION",
- "ExtJson": "{\"ScopeCategory\":\"SCOPE_ORG_DEFINE\",\"ScopeDefineOrgIdList\":[360642028625989,361404296994885,360642028625989,361404296994885],\"ApiUrl\":\"/biz/position/edit\"}"
+ "ExtJson": "{\"ScopeCategory\":\"SCOPE_ORG_CHILD\",\"ScopeDefineOrgIdList\":[],\"ApiUrl\":\"/biz/organization/position/tree\"}"
},
{
- "Id": "361435731247186",
- "ObjectId": "360646281904197",
- "TargetId": "/biz/position/delete",
+ "Id": "518190547849299",
+ "ObjectId": "517794467639365",
+ "TargetId": "/biz/organization/position/page",
"Category": "SYS_ROLE_HAS_PERMISSION",
- "ExtJson": "{\"ScopeCategory\":\"SCOPE_ORG_DEFINE\",\"ScopeDefineOrgIdList\":[360642028625989,361404296994885,360642028625989,361404296994885],\"ApiUrl\":\"/biz/position/delete\"}"
+ "ExtJson": "{\"ScopeCategory\":\"SCOPE_ORG_CHILD\",\"ScopeDefineOrgIdList\":[],\"ApiUrl\":\"/biz/organization/position/page\"}"
},
{
- "Id": "361435731247187",
- "ObjectId": "360646281904197",
- "TargetId": "/biz/user/orgTreeSelector",
+ "Id": "518190547849300",
+ "ObjectId": "517794467639365",
+ "TargetId": "/biz/organization/position/detail",
"Category": "SYS_ROLE_HAS_PERMISSION",
- "ExtJson": "{\"ScopeCategory\":\"SCOPE_ORG_DEFINE\",\"ScopeDefineOrgIdList\":[360642028625989,361404296994885,360642028625989,361404296994885],\"ApiUrl\":\"/biz/user/orgTreeSelector\"}"
+ "ExtJson": "{\"ScopeCategory\":\"SCOPE_ORG_CHILD\",\"ScopeDefineOrgIdList\":[],\"ApiUrl\":\"/biz/organization/position/detail\"}"
},
{
- "Id": "361435731247188",
- "ObjectId": "360646281904197",
- "TargetId": "/biz/user/page",
+ "Id": "518190547849301",
+ "ObjectId": "517794467639365",
+ "TargetId": "/biz/organization/position/selector",
"Category": "SYS_ROLE_HAS_PERMISSION",
- "ExtJson": "{\"ScopeCategory\":\"SCOPE_ORG_DEFINE\",\"ScopeDefineOrgIdList\":[360642028625989,361404296994885,360642028625989,361404296994885],\"ApiUrl\":\"/biz/user/page\"}"
+ "ExtJson": "{\"ScopeCategory\":\"SCOPE_ORG_CHILD\",\"ScopeDefineOrgIdList\":[],\"ApiUrl\":\"/biz/organization/position/selector\"}"
},
{
- "Id": "361435731247189",
- "ObjectId": "360646281904197",
- "TargetId": "/biz/user/userSelector",
+ "Id": "518190547849302",
+ "ObjectId": "517794467639365",
+ "TargetId": "/biz/organization/position/add",
"Category": "SYS_ROLE_HAS_PERMISSION",
- "ExtJson": "{\"ScopeCategory\":\"SCOPE_ORG_DEFINE\",\"ScopeDefineOrgIdList\":[360642028625989,361404296994885,360642028625989,361404296994885],\"ApiUrl\":\"/biz/user/userSelector\"}"
+ "ExtJson": "{\"ScopeCategory\":\"SCOPE_ORG_CHILD\",\"ScopeDefineOrgIdList\":[],\"ApiUrl\":\"/biz/organization/position/add\"}"
},
{
- "Id": "361435731247190",
- "ObjectId": "360646281904197",
- "TargetId": "/biz/user/positionSelector",
+ "Id": "518190547849303",
+ "ObjectId": "517794467639365",
+ "TargetId": "/biz/organization/position/edit",
"Category": "SYS_ROLE_HAS_PERMISSION",
- "ExtJson": "{\"ScopeCategory\":\"SCOPE_ORG_DEFINE\",\"ScopeDefineOrgIdList\":[360642028625989,361404296994885,360642028625989,361404296994885],\"ApiUrl\":\"/biz/user/positionSelector\"}"
+ "ExtJson": "{\"ScopeCategory\":\"SCOPE_ORG_CHILD\",\"ScopeDefineOrgIdList\":[],\"ApiUrl\":\"/biz/organization/position/edit\"}"
},
{
- "Id": "361435731247191",
- "ObjectId": "360646281904197",
- "TargetId": "/biz/user/add",
+ "Id": "518190547849304",
+ "ObjectId": "517794467639365",
+ "TargetId": "/biz/organization/position/delete",
"Category": "SYS_ROLE_HAS_PERMISSION",
- "ExtJson": "{\"ScopeCategory\":\"SCOPE_ORG_DEFINE\",\"ScopeDefineOrgIdList\":[360642028625989,361404296994885,360642028625989,361404296994885],\"ApiUrl\":\"/biz/user/add\"}"
+ "ExtJson": "{\"ScopeCategory\":\"SCOPE_ORG_CHILD\",\"ScopeDefineOrgIdList\":[],\"ApiUrl\":\"/biz/organization/position/delete\"}"
},
{
- "Id": "361435731247192",
- "ObjectId": "360646281904197",
- "TargetId": "/biz/user/edit",
+ "Id": "518190547849305",
+ "ObjectId": "517794467639365",
+ "TargetId": "/biz/organization/user/preview",
"Category": "SYS_ROLE_HAS_PERMISSION",
- "ExtJson": "{\"ScopeCategory\":\"SCOPE_ORG_DEFINE\",\"ScopeDefineOrgIdList\":[360642028625989,361404296994885,360642028625989,361404296994885],\"ApiUrl\":\"/biz/user/edit\"}"
+ "ExtJson": "{\"ScopeCategory\":\"SCOPE_ORG_CHILD\",\"ScopeDefineOrgIdList\":[],\"ApiUrl\":\"/biz/organization/user/preview\"}"
},
{
- "Id": "361435731247193",
- "ObjectId": "360646281904197",
- "TargetId": "/biz/user/delete",
+ "Id": "518190547849306",
+ "ObjectId": "517794467639365",
+ "TargetId": "/biz/organization/user/page",
"Category": "SYS_ROLE_HAS_PERMISSION",
- "ExtJson": "{\"ScopeCategory\":\"SCOPE_ORG_DEFINE\",\"ScopeDefineOrgIdList\":[360642028625989,361404296994885,360642028625989,361404296994885],\"ApiUrl\":\"/biz/user/delete\"}"
+ "ExtJson": "{\"ScopeCategory\":\"SCOPE_ORG_CHILD\",\"ScopeDefineOrgIdList\":[],\"ApiUrl\":\"/biz/organization/user/page\"}"
},
{
- "Id": "361435731247194",
- "ObjectId": "360646281904197",
- "TargetId": "/biz/user/disableUser",
+ "Id": "518190547849307",
+ "ObjectId": "517794467639365",
+ "TargetId": "/biz/organization/user/selector",
"Category": "SYS_ROLE_HAS_PERMISSION",
- "ExtJson": "{\"ScopeCategory\":\"SCOPE_ORG_DEFINE\",\"ScopeDefineOrgIdList\":[360642028625989,361404296994885,360642028625989,361404296994885],\"ApiUrl\":\"/biz/user/disableUser\"}"
+ "ExtJson": "{\"ScopeCategory\":\"SCOPE_ORG_CHILD\",\"ScopeDefineOrgIdList\":[],\"ApiUrl\":\"/biz/organization/user/selector\"}"
},
{
- "Id": "361435731247195",
- "ObjectId": "360646281904197",
- "TargetId": "/biz/user/enableUser",
+ "Id": "518190547849308",
+ "ObjectId": "517794467639365",
+ "TargetId": "/biz/organization/user/ownRole",
+ "Category": "SYS_ROLE_HAS_PERMISSION",
+ "ExtJson": "{\"ScopeCategory\":\"SCOPE_ORG_CHILD\",\"ScopeDefineOrgIdList\":[],\"ApiUrl\":\"/biz/organization/user/ownRole\"}"
+ },
+ {
+ "Id": "518190547849309",
+ "ObjectId": "517794467639365",
+ "TargetId": "/biz/organization/user/detail",
+ "Category": "SYS_ROLE_HAS_PERMISSION",
+ "ExtJson": "{\"ScopeCategory\":\"SCOPE_ORG_CHILD\",\"ScopeDefineOrgIdList\":[],\"ApiUrl\":\"/biz/organization/user/detail\"}"
+ },
+ {
+ "Id": "518190547849310",
+ "ObjectId": "517794467639365",
+ "TargetId": "/biz/organization/user/add",
+ "Category": "SYS_ROLE_HAS_PERMISSION",
+ "ExtJson": "{\"ScopeCategory\":\"SCOPE_ORG_CHILD\",\"ScopeDefineOrgIdList\":[],\"ApiUrl\":\"/biz/organization/user/add\"}"
+ },
+ {
+ "Id": "518190547849311",
+ "ObjectId": "517794467639365",
+ "TargetId": "/biz/organization/user/edit",
+ "Category": "SYS_ROLE_HAS_PERMISSION",
+ "ExtJson": "{\"ScopeCategory\":\"SCOPE_ORG_CHILD\",\"ScopeDefineOrgIdList\":[],\"ApiUrl\":\"/biz/organization/user/edit\"}"
+ },
+ {
+ "Id": "518190547849312",
+ "ObjectId": "517794467639365",
+ "TargetId": "/biz/organization/user/edits",
+ "Category": "SYS_ROLE_HAS_PERMISSION",
+ "ExtJson": "{\"ScopeCategory\":\"SCOPE_ORG_CHILD\",\"ScopeDefineOrgIdList\":[],\"ApiUrl\":\"/biz/organization/user/edits\"}"
+ },
+ {
+ "Id": "518190547849313",
+ "ObjectId": "517794467639365",
+ "TargetId": "/biz/organization/user/delete",
+ "Category": "SYS_ROLE_HAS_PERMISSION",
+ "ExtJson": "{\"ScopeCategory\":\"SCOPE_ORG_CHILD\",\"ScopeDefineOrgIdList\":[],\"ApiUrl\":\"/biz/organization/user/delete\"}"
+ },
+ {
+ "Id": "518190547849314",
+ "ObjectId": "517794467639365",
+ "TargetId": "/biz/organization/user/disableUser",
+ "Category": "SYS_ROLE_HAS_PERMISSION",
+ "ExtJson": "{\"ScopeCategory\":\"SCOPE_ORG_CHILD\",\"ScopeDefineOrgIdList\":[],\"ApiUrl\":\"/biz/organization/user/disableUser\"}"
+ },
+ {
+ "Id": "518190547849315",
+ "ObjectId": "517794467639365",
+ "TargetId": "/biz/organization/user/enableUser",
+ "Category": "SYS_ROLE_HAS_PERMISSION",
+ "ExtJson": "{\"ScopeCategory\":\"SCOPE_ORG_CHILD\",\"ScopeDefineOrgIdList\":[],\"ApiUrl\":\"/biz/organization/user/enableUser\"}"
+ },
+ {
+ "Id": "518190547849316",
+ "ObjectId": "517794467639365",
+ "TargetId": "/biz/organization/user/resetPassword",
+ "Category": "SYS_ROLE_HAS_PERMISSION",
+ "ExtJson": "{\"ScopeCategory\":\"SCOPE_ORG_CHILD\",\"ScopeDefineOrgIdList\":[],\"ApiUrl\":\"/biz/organization/user/resetPassword\"}"
+ },
+ {
+ "Id": "518190547849317",
+ "ObjectId": "517794467639365",
+ "TargetId": "/biz/organization/user/grantRole",
+ "Category": "SYS_ROLE_HAS_PERMISSION",
+ "ExtJson": "{\"ScopeCategory\":\"SCOPE_ORG_CHILD\",\"ScopeDefineOrgIdList\":[],\"ApiUrl\":\"/biz/organization/user/grantRole\"}"
+ },
+ {
+ "Id": "518190547849318",
+ "ObjectId": "517794467639365",
+ "TargetId": "/biz/organization/user/import",
+ "Category": "SYS_ROLE_HAS_PERMISSION",
+ "ExtJson": "{\"ScopeCategory\":\"SCOPE_ORG_CHILD\",\"ScopeDefineOrgIdList\":[],\"ApiUrl\":\"/biz/organization/user/import\"}"
+ },
+ {
+ "Id": "518190547849319",
+ "ObjectId": "517794467639365",
+ "TargetId": "/biz/organization/user/export",
+ "Category": "SYS_ROLE_HAS_PERMISSION",
+ "ExtJson": "{\"ScopeCategory\":\"SCOPE_ORG_CHILD\",\"ScopeDefineOrgIdList\":[],\"ApiUrl\":\"/biz/organization/user/export\"}"
+ },
+ {
+ "Id": "518190547849320",
+ "ObjectId": "517794467639365",
+ "TargetId": "/home/index/visLog/list",
"Category": "SYS_ROLE_HAS_PERMISSION",
- "ExtJson": "{\"ScopeCategory\":\"SCOPE_ORG_DEFINE\",\"ScopeDefineOrgIdList\":[360642028625989,361404296994885,360642028625989,361404296994885],\"ApiUrl\":\"/biz/user/enableUser\"}"
+ "ExtJson": "{\"ScopeCategory\":\"SCOPE_ORG_CHILD\",\"ScopeDefineOrgIdList\":[],\"ApiUrl\":\"/home/index/visLog/list\"}"
},
{
- "Id": "361435731247196",
- "ObjectId": "360646281904197",
- "TargetId": "/biz/user/resetPassword",
+ "Id": "518190547849321",
+ "ObjectId": "517794467639365",
+ "TargetId": "/home/index/opLog/list",
"Category": "SYS_ROLE_HAS_PERMISSION",
- "ExtJson": "{\"ScopeCategory\":\"SCOPE_ORG_DEFINE\",\"ScopeDefineOrgIdList\":[360642028625989,361404296994885,360642028625989,361404296994885],\"ApiUrl\":\"/biz/user/resetPassword\"}"
+ "ExtJson": "{\"ScopeCategory\":\"SCOPE_ORG_CHILD\",\"ScopeDefineOrgIdList\":[],\"ApiUrl\":\"/home/index/opLog/list\"}"
},
{
- "Id": "361435731247197",
- "ObjectId": "360646281904197",
- "TargetId": "/biz/user/ownRole",
+ "Id": "518190547849322",
+ "ObjectId": "517794467639365",
+ "TargetId": "/home/index/message/list",
"Category": "SYS_ROLE_HAS_PERMISSION",
- "ExtJson": "{\"ScopeCategory\":\"SCOPE_ORG_DEFINE\",\"ScopeDefineOrgIdList\":[360642028625989,361404296994885,360642028625989,361404296994885],\"ApiUrl\":\"/biz/user/ownRole\"}"
+ "ExtJson": "{\"ScopeCategory\":\"SCOPE_ORG_CHILD\",\"ScopeDefineOrgIdList\":[],\"ApiUrl\":\"/home/index/message/list\"}"
},
{
- "Id": "361435731247198",
- "ObjectId": "360646281904197",
- "TargetId": "/biz/user/grantRole",
+ "Id": "518190547849323",
+ "ObjectId": "517794467639365",
+ "TargetId": "/home/index/schedule/list",
"Category": "SYS_ROLE_HAS_PERMISSION",
- "ExtJson": "{\"ScopeCategory\":\"SCOPE_ORG_DEFINE\",\"ScopeDefineOrgIdList\":[360642028625989,361404296994885,360642028625989,361404296994885],\"ApiUrl\":\"/biz/user/grantRole\"}"
+ "ExtJson": "{\"ScopeCategory\":\"SCOPE_ORG_CHILD\",\"ScopeDefineOrgIdList\":[],\"ApiUrl\":\"/home/index/schedule/list\"}"
},
{
- "Id": "361435731247199",
- "ObjectId": "360646281904197",
- "TargetId": "/biz/user/roleSelector",
+ "Id": "518190547849324",
+ "ObjectId": "517794467639365",
+ "TargetId": "/home/index/schedule/add",
"Category": "SYS_ROLE_HAS_PERMISSION",
- "ExtJson": "{\"ScopeCategory\":\"SCOPE_ORG_DEFINE\",\"ScopeDefineOrgIdList\":[360642028625989,361404296994885,360642028625989,361404296994885],\"ApiUrl\":\"/biz/user/roleSelector\"}"
+ "ExtJson": "{\"ScopeCategory\":\"SCOPE_ORG_CHILD\",\"ScopeDefineOrgIdList\":[],\"ApiUrl\":\"/home/index/schedule/add\"}"
},
{
- "Id": "363164398264389",
- "ObjectId": "212725263002001",
- "TargetId": "",
- "Category": "SYS_USER_WORKBENCH_DATA",
- "ExtJson": "{\"shortcut\":[{\"id\":212725263003723,\"title\":\"个人中心\",\"icon\":\"appstore-outlined\",\"path\":\"/usercenter\"},{\"id\":212725263003729,\"title\":\"角色管理\",\"icon\":\"deployment-unit-outlined\",\"path\":\"/sys/role\"},{\"id\":212745263003737,\"title\":\"系统配置\",\"icon\":\"setting-outlined\",\"path\":\"/sys/config\"}]}"
+ "Id": "518190547849325",
+ "ObjectId": "517794467639365",
+ "TargetId": "/home/index/schedule/deleteSchedule",
+ "Category": "SYS_ROLE_HAS_PERMISSION",
+ "ExtJson": "{\"ScopeCategory\":\"SCOPE_ORG_CHILD\",\"ScopeDefineOrgIdList\":[],\"ApiUrl\":\"/home/index/schedule/deleteSchedule\"}"
},
{
- "Id": "363519722537029",
- "ObjectId": "212725263002002",
- "TargetId": "",
- "Category": "SYS_USER_WORKBENCH_DATA",
- "ExtJson": "{\"shortcut\":[{\"id\":212725263003722,\"title\":\"系统首页\",\"icon\":\"home-outlined\",\"path\":\"/index\"},{\"id\":212725263003723,\"title\":\"个人中心\",\"icon\":\"appstore-outlined\",\"path\":\"/usercenter\"},{\"id\":212755263003745,\"title\":\"机构管理\",\"icon\":\"cluster-outlined\",\"path\":\"/biz/org\"},{\"id\":212755263003746,\"title\":\"人员管理\",\"icon\":\"user-outlined\",\"path\":\"/biz/user\"},{\"id\":212755263003747,\"title\":\"岗位管理\",\"icon\":\"apartment-outlined\",\"path\":\"/biz/position\"}]}"
+ "Id": "571526548275269",
+ "ObjectId": "212725263001001",
+ "TargetId": "212725263003721",
+ "Category": "SYS_ROLE_HAS_MODULE",
+ "ExtJson": ""
},
{
- "Id": "391885190627397",
- "ObjectId": "361405857865797",
- "TargetId": "",
- "Category": "SYS_USER_WORKBENCH_DATA",
- "ExtJson": "{\"shortcut\":[{\"id\":212725263003722,\"title\":\"系统首页\",\"icon\":\"home-outlined\",\"path\":\"/index\"},{\"id\":212725263003723,\"title\":\"个人中心\",\"icon\":\"appstore-outlined\",\"path\":\"/usercenter\"}]}"
+ "Id": "571526548279365",
+ "ObjectId": "212725263001001",
+ "TargetId": "212755263003743",
+ "Category": "SYS_ROLE_HAS_MODULE",
+ "ExtJson": ""
},
{
- "Id": "395717370404933",
+ "Id": "571526548279366",
"ObjectId": "212725263001001",
"TargetId": "212725263003725",
"Category": "SYS_ROLE_HAS_RESOURCE",
"ExtJson": "{\"MenuId\":212725263003725,\"ButtonInfo\":[]}"
},
{
- "Id": "395717370417221",
+ "Id": "571526548279367",
"ObjectId": "212725263001001",
"TargetId": "212725263003726",
"Category": "SYS_ROLE_HAS_RESOURCE",
"ExtJson": "{\"MenuId\":212725263003726,\"ButtonInfo\":[]}"
},
{
- "Id": "395717370417222",
+ "Id": "571526548279368",
"ObjectId": "212725263001001",
"TargetId": "212725263003727",
"Category": "SYS_ROLE_HAS_RESOURCE",
"ExtJson": "{\"MenuId\":212725263003727,\"ButtonInfo\":[]}"
},
{
- "Id": "395717370417223",
+ "Id": "571526548279369",
"ObjectId": "212725263001001",
"TargetId": "212725263003729",
"Category": "SYS_ROLE_HAS_RESOURCE",
"ExtJson": "{\"MenuId\":212725263003729,\"ButtonInfo\":[]}"
},
{
- "Id": "395717370417224",
+ "Id": "571526548279370",
"ObjectId": "212725263001001",
"TargetId": "212725263003730",
"Category": "SYS_ROLE_HAS_RESOURCE",
"ExtJson": "{\"MenuId\":212725263003730,\"ButtonInfo\":[]}"
},
{
- "Id": "395717370417225",
+ "Id": "571526548279371",
"ObjectId": "212725263001001",
"TargetId": "212725263003731",
"Category": "SYS_ROLE_HAS_RESOURCE",
"ExtJson": "{\"MenuId\":212725263003731,\"ButtonInfo\":[]}"
},
{
- "Id": "395717370417226",
+ "Id": "571526548279372",
"ObjectId": "212725263001001",
"TargetId": "212725263003732",
"Category": "SYS_ROLE_HAS_RESOURCE",
"ExtJson": "{\"MenuId\":212725263003732,\"ButtonInfo\":[]}"
},
{
- "Id": "395717370417227",
+ "Id": "571526548279373",
"ObjectId": "212725263001001",
"TargetId": "212735263003734",
"Category": "SYS_ROLE_HAS_RESOURCE",
"ExtJson": "{\"MenuId\":212735263003734,\"ButtonInfo\":[]}"
},
{
- "Id": "395717370417228",
+ "Id": "571526548279374",
"ObjectId": "212725263001001",
"TargetId": "369089951367237",
"Category": "SYS_ROLE_HAS_RESOURCE",
"ExtJson": "{\"MenuId\":369089951367237,\"ButtonInfo\":[]}"
},
{
- "Id": "395717370417229",
+ "Id": "571526548279375",
"ObjectId": "212725263001001",
"TargetId": "212745263003736",
"Category": "SYS_ROLE_HAS_RESOURCE",
"ExtJson": "{\"MenuId\":212745263003736,\"ButtonInfo\":[]}"
},
{
- "Id": "395717370417230",
+ "Id": "571526548279376",
"ObjectId": "212725263001001",
"TargetId": "212745263003737",
"Category": "SYS_ROLE_HAS_RESOURCE",
"ExtJson": "{\"MenuId\":212745263003737,\"ButtonInfo\":[]}"
},
{
- "Id": "395717370417231",
- "ObjectId": "212725263001001",
- "TargetId": "212755263003739",
- "Category": "SYS_ROLE_HAS_RESOURCE",
- "ExtJson": "{\"MenuId\":212755263003739,\"ButtonInfo\":[]}"
- },
- {
- "Id": "395717370417232",
- "ObjectId": "212725263001001",
- "TargetId": "212755263003740",
- "Category": "SYS_ROLE_HAS_RESOURCE",
- "ExtJson": "{\"MenuId\":212755263003740,\"ButtonInfo\":[]}"
- },
- {
- "Id": "395717370417233",
- "ObjectId": "212725263001001",
- "TargetId": "363532005732421",
- "Category": "SYS_ROLE_HAS_RESOURCE",
- "ExtJson": "{\"MenuId\":363532005732421,\"ButtonInfo\":[]}"
- },
- {
- "Id": "395717370417234",
+ "Id": "571526548279377",
"ObjectId": "212725263001001",
"TargetId": "363798244282437",
"Category": "SYS_ROLE_HAS_RESOURCE",
"ExtJson": "{\"MenuId\":363798244282437,\"ButtonInfo\":[]}"
},
{
- "Id": "395717370417235",
- "ObjectId": "212725263001001",
- "TargetId": "371662120710213",
- "Category": "SYS_ROLE_HAS_RESOURCE",
- "ExtJson": "{\"MenuId\":371662120710213,\"ButtonInfo\":[]}"
- },
- {
- "Id": "395717370417236",
- "ObjectId": "212725263001001",
- "TargetId": "394242824978501",
- "Category": "SYS_ROLE_HAS_RESOURCE",
- "ExtJson": "{\"MenuId\":394242824978501,\"ButtonInfo\":[]}"
- },
- {
- "Id": "395717370417237",
- "ObjectId": "212725263001001",
- "TargetId": "212755263003742",
- "Category": "SYS_ROLE_HAS_RESOURCE",
- "ExtJson": "{\"MenuId\":212755263003742,\"ButtonInfo\":[]}"
- },
- {
- "Id": "395717370417238",
- "ObjectId": "212725263001001",
- "TargetId": "212755263003749",
- "Category": "SYS_ROLE_HAS_RESOURCE",
- "ExtJson": "{\"MenuId\":212755263003749,\"ButtonInfo\":[]}"
- },
- {
- "Id": "395717370417239",
- "ObjectId": "212725263001001",
- "TargetId": "212755263003750",
- "Category": "SYS_ROLE_HAS_RESOURCE",
- "ExtJson": "{\"MenuId\":212755263003750,\"ButtonInfo\":[]}"
- },
- {
- "Id": "395717370417240",
- "ObjectId": "212725263001001",
- "TargetId": "212755263003751",
- "Category": "SYS_ROLE_HAS_RESOURCE",
- "ExtJson": "{\"MenuId\":212755263003751,\"ButtonInfo\":[]}"
- },
- {
- "Id": "395717370417241",
- "ObjectId": "212725263001001",
- "TargetId": "212755263003752",
- "Category": "SYS_ROLE_HAS_RESOURCE",
- "ExtJson": "{\"MenuId\":212755263003752,\"ButtonInfo\":[]}"
- },
- {
- "Id": "395717370417242",
+ "Id": "571526548279378",
"ObjectId": "212725263001001",
- "TargetId": "212755263003753",
- "Category": "SYS_ROLE_HAS_RESOURCE",
- "ExtJson": "{\"MenuId\":212755263003753,\"ButtonInfo\":[]}"
- },
- {
- "Id": "395717370417243",
- "ObjectId": "212725263001001",
- "TargetId": "212755263003754",
- "Category": "SYS_ROLE_HAS_RESOURCE",
- "ExtJson": "{\"MenuId\":212755263003754,\"ButtonInfo\":[]}"
- },
- {
- "Id": "395717370417244",
- "ObjectId": "212725263001001",
- "TargetId": "212755263003755",
- "Category": "SYS_ROLE_HAS_RESOURCE",
- "ExtJson": "{\"MenuId\":212755263003755,\"ButtonInfo\":[]}"
- },
- {
- "Id": "395717370417245",
- "ObjectId": "212725263001001",
- "TargetId": "212755263003756",
- "Category": "SYS_ROLE_HAS_RESOURCE",
- "ExtJson": "{\"MenuId\":212755263003756,\"ButtonInfo\":[]}"
- },
- {
- "Id": "395717370417246",
- "ObjectId": "212725263001001",
- "TargetId": "212755263003757",
- "Category": "SYS_ROLE_HAS_RESOURCE",
- "ExtJson": "{\"MenuId\":212755263003757,\"ButtonInfo\":[]}"
- },
- {
- "Id": "395717370417247",
- "ObjectId": "212725263001001",
- "TargetId": "212755263003758",
+ "TargetId": "212755263003739",
"Category": "SYS_ROLE_HAS_RESOURCE",
- "ExtJson": "{\"MenuId\":212755263003758,\"ButtonInfo\":[]}"
+ "ExtJson": "{\"MenuId\":212755263003739,\"ButtonInfo\":[]}"
},
{
- "Id": "395717370417248",
+ "Id": "571526548279379",
"ObjectId": "212725263001001",
- "TargetId": "212755263003759",
+ "TargetId": "212755263003740",
"Category": "SYS_ROLE_HAS_RESOURCE",
- "ExtJson": "{\"MenuId\":212755263003759,\"ButtonInfo\":[]}"
+ "ExtJson": "{\"MenuId\":212755263003740,\"ButtonInfo\":[]}"
},
{
- "Id": "395717370417249",
+ "Id": "571526548279380",
"ObjectId": "212725263001001",
- "TargetId": "212755263003760",
+ "TargetId": "212755263003745",
"Category": "SYS_ROLE_HAS_RESOURCE",
- "ExtJson": "{\"MenuId\":212755263003760,\"ButtonInfo\":[]}"
+ "ExtJson": "{\"MenuId\":212755263003745,\"ButtonInfo\":[212825263004728,212825263004729,212825263004730,212825263004731,383020955254853,383022400483397]}"
},
{
- "Id": "395717370417250",
+ "Id": "571526548279381",
"ObjectId": "212725263001001",
- "TargetId": "212755263003761",
+ "TargetId": "212755263003746",
"Category": "SYS_ROLE_HAS_RESOURCE",
- "ExtJson": "{\"MenuId\":212755263003761,\"ButtonInfo\":[]}"
+ "ExtJson": "{\"MenuId\":212755263003746,\"ButtonInfo\":[212825263005734,212825263005735,212825263005736,212825263005737,212825263005738,212825263005739,212825263005740,391869166551109,391869250662469,395712751292485]}"
},
{
- "Id": "395717370417251",
+ "Id": "571526548279382",
"ObjectId": "212725263001001",
- "TargetId": "212755263003762",
+ "TargetId": "212755263003747",
"Category": "SYS_ROLE_HAS_RESOURCE",
- "ExtJson": "{\"MenuId\":212755263003762,\"ButtonInfo\":[]}"
+ "ExtJson": "{\"MenuId\":212755263003747,\"ButtonInfo\":[212825263006739,212825263006749,212825263006750,212825263006751]}"
},
{
- "Id": "395717370417252",
+ "Id": "571526548279383",
"ObjectId": "212725263001001",
- "TargetId": "212755263003763",
- "Category": "SYS_ROLE_HAS_RESOURCE",
- "ExtJson": "{\"MenuId\":212755263003763,\"ButtonInfo\":[]}"
+ "TargetId": "/biz/organization/org/tree",
+ "Category": "SYS_ROLE_HAS_PERMISSION",
+ "ExtJson": "{\"ScopeCategory\":\"SCOPE_ALL\",\"ScopeDefineOrgIdList\":[],\"ApiUrl\":\"/biz/organization/org/tree\"}"
},
{
- "Id": "395717370417253",
+ "Id": "571526548279384",
"ObjectId": "212725263001001",
- "TargetId": "212755263003764",
- "Category": "SYS_ROLE_HAS_RESOURCE",
- "ExtJson": "{\"MenuId\":212755263003764,\"ButtonInfo\":[]}"
+ "TargetId": "/biz/organization/org/page",
+ "Category": "SYS_ROLE_HAS_PERMISSION",
+ "ExtJson": "{\"ScopeCategory\":\"SCOPE_ALL\",\"ScopeDefineOrgIdList\":[],\"ApiUrl\":\"/biz/organization/org/page\"}"
},
{
- "Id": "395717370417254",
+ "Id": "571526548279385",
"ObjectId": "212725263001001",
- "TargetId": "212755263003765",
- "Category": "SYS_ROLE_HAS_RESOURCE",
- "ExtJson": "{\"MenuId\":212755263003765,\"ButtonInfo\":[]}"
+ "TargetId": "/biz/organization/org/orgTreeSelector",
+ "Category": "SYS_ROLE_HAS_PERMISSION",
+ "ExtJson": "{\"ScopeCategory\":\"SCOPE_ALL\",\"ScopeDefineOrgIdList\":[],\"ApiUrl\":\"/biz/organization/org/orgTreeSelector\"}"
},
{
- "Id": "395717370417255",
+ "Id": "571526548279386",
"ObjectId": "212725263001001",
- "TargetId": "212755263003766",
- "Category": "SYS_ROLE_HAS_RESOURCE",
- "ExtJson": "{\"MenuId\":212755263003766,\"ButtonInfo\":[]}"
+ "TargetId": "/biz/organization/org/userSelector",
+ "Category": "SYS_ROLE_HAS_PERMISSION",
+ "ExtJson": "{\"ScopeCategory\":\"SCOPE_ALL\",\"ScopeDefineOrgIdList\":[],\"ApiUrl\":\"/biz/organization/org/userSelector\"}"
},
{
- "Id": "395717370417256",
+ "Id": "571526548279387",
"ObjectId": "212725263001001",
- "TargetId": "212755263003767",
- "Category": "SYS_ROLE_HAS_RESOURCE",
- "ExtJson": "{\"MenuId\":212755263003767,\"ButtonInfo\":[]}"
+ "TargetId": "/biz/organization/org/detail",
+ "Category": "SYS_ROLE_HAS_PERMISSION",
+ "ExtJson": "{\"ScopeCategory\":\"SCOPE_ALL\",\"ScopeDefineOrgIdList\":[],\"ApiUrl\":\"/biz/organization/org/detail\"}"
},
{
- "Id": "395717370417257",
+ "Id": "571526548279388",
"ObjectId": "212725263001001",
- "TargetId": "212755263003745",
- "Category": "SYS_ROLE_HAS_RESOURCE",
- "ExtJson": "{\"MenuId\":212755263003745,\"ButtonInfo\":[212825263004728,212825263004729,212825263004730,212825263004731,383020955254853,383022400483397]}"
+ "TargetId": "/biz/organization/org/add",
+ "Category": "SYS_ROLE_HAS_PERMISSION",
+ "ExtJson": "{\"ScopeCategory\":\"SCOPE_ALL\",\"ScopeDefineOrgIdList\":[],\"ApiUrl\":\"/biz/organization/org/add\"}"
},
{
- "Id": "395717370417258",
+ "Id": "571526548279389",
"ObjectId": "212725263001001",
- "TargetId": "212755263003746",
- "Category": "SYS_ROLE_HAS_RESOURCE",
- "ExtJson": "{\"MenuId\":212755263003746,\"ButtonInfo\":[212825263005734,212825263005735,212825263005736,212825263005737,212825263005738,212825263005739,212825263005740,391869166551109,391869250662469,395712751292485]}"
+ "TargetId": "/biz/organization/org/edit",
+ "Category": "SYS_ROLE_HAS_PERMISSION",
+ "ExtJson": "{\"ScopeCategory\":\"SCOPE_ALL\",\"ScopeDefineOrgIdList\":[],\"ApiUrl\":\"/biz/organization/org/edit\"}"
},
{
- "Id": "395717370417259",
+ "Id": "571526548279390",
"ObjectId": "212725263001001",
- "TargetId": "212755263003747",
- "Category": "SYS_ROLE_HAS_RESOURCE",
- "ExtJson": "{\"MenuId\":212755263003747,\"ButtonInfo\":[212825263006739,212825263006749,212825263006750,212825263006751]}"
+ "TargetId": "/biz/organization/org/copy",
+ "Category": "SYS_ROLE_HAS_PERMISSION",
+ "ExtJson": "{\"ScopeCategory\":\"SCOPE_ALL\",\"ScopeDefineOrgIdList\":[],\"ApiUrl\":\"/biz/organization/org/copy\"}"
},
{
- "Id": "395717370417260",
+ "Id": "571526548279391",
"ObjectId": "212725263001001",
- "TargetId": "385833289756741",
- "Category": "SYS_ROLE_HAS_RESOURCE",
- "ExtJson": "{\"MenuId\":385833289756741,\"ButtonInfo\":[385833289920581,385833289920582,385833289920583,385833289920584]}"
- },
- {
- "Id": "395717391978565",
- "ObjectId": "212725263001002",
- "TargetId": "212755263003745",
- "Category": "SYS_ROLE_HAS_RESOURCE",
- "ExtJson": "{\"MenuId\":212755263003745,\"ButtonInfo\":[212825263004728,212825263004729,212825263004730,212825263004731,383020955254853,383022400483397]}"
- },
- {
- "Id": "395717391978566",
- "ObjectId": "212725263001002",
- "TargetId": "212755263003746",
- "Category": "SYS_ROLE_HAS_RESOURCE",
- "ExtJson": "{\"MenuId\":212755263003746,\"ButtonInfo\":[212825263005734,212825263005735,212825263005736,212825263005737,212825263005738,212825263005739,212825263005740,391869166551109,391869250662469,395712751292485]}"
- },
- {
- "Id": "395717391978567",
- "ObjectId": "212725263001002",
- "TargetId": "212755263003747",
- "Category": "SYS_ROLE_HAS_RESOURCE",
- "ExtJson": "{\"MenuId\":212755263003747,\"ButtonInfo\":[212825263006739,212825263006749,212825263006750,212825263006751]}"
- },
- {
- "Id": "395717391978568",
- "ObjectId": "212725263001002",
- "TargetId": "385833289756741",
- "Category": "SYS_ROLE_HAS_RESOURCE",
- "ExtJson": "{\"MenuId\":385833289756741,\"ButtonInfo\":[385833289920581,385833289920582,385833289920583,385833289920584]}"
- },
- {
- "Id": "395717488414789",
- "ObjectId": "359567292014661",
- "TargetId": "212755263003745",
- "Category": "SYS_ROLE_HAS_RESOURCE",
- "ExtJson": "{\"MenuId\":212755263003745,\"ButtonInfo\":[212825263004728,212825263004729,212825263004730,212825263004731,383020955254853,383022400483397]}"
- },
- {
- "Id": "395717488414790",
- "ObjectId": "359567292014661",
- "TargetId": "212755263003746",
- "Category": "SYS_ROLE_HAS_RESOURCE",
- "ExtJson": "{\"MenuId\":212755263003746,\"ButtonInfo\":[212825263005734,212825263005735,212825263005736,212825263005737,212825263005738,212825263005739,212825263005740,391869166551109,391869250662469,395712751292485]}"
- },
- {
- "Id": "395717488414791",
- "ObjectId": "359567292014661",
- "TargetId": "212755263003747",
- "Category": "SYS_ROLE_HAS_RESOURCE",
- "ExtJson": "{\"MenuId\":212755263003747,\"ButtonInfo\":[212825263006739,212825263006749,212825263006750,212825263006751]}"
+ "TargetId": "/biz/organization/org/delete",
+ "Category": "SYS_ROLE_HAS_PERMISSION",
+ "ExtJson": "{\"ScopeCategory\":\"SCOPE_ALL\",\"ScopeDefineOrgIdList\":[],\"ApiUrl\":\"/biz/organization/org/delete\"}"
},
{
- "Id": "395725241905221",
+ "Id": "571526548279392",
"ObjectId": "212725263001001",
- "TargetId": "/biz/org/tree",
+ "TargetId": "/biz/organization/position/tree",
"Category": "SYS_ROLE_HAS_PERMISSION",
- "ExtJson": "{\"ScopeCategory\":\"SCOPE_ALL\",\"ScopeDefineOrgIdList\":[],\"ApiUrl\":\"/biz/org/tree\"}"
+ "ExtJson": "{\"ScopeCategory\":\"SCOPE_ALL\",\"ScopeDefineOrgIdList\":[],\"ApiUrl\":\"/biz/organization/position/tree\"}"
},
{
- "Id": "395725241921605",
+ "Id": "571526548279393",
"ObjectId": "212725263001001",
- "TargetId": "/biz/org/page",
+ "TargetId": "/biz/organization/position/page",
"Category": "SYS_ROLE_HAS_PERMISSION",
- "ExtJson": "{\"ScopeCategory\":\"SCOPE_ALL\",\"ScopeDefineOrgIdList\":[],\"ApiUrl\":\"/biz/org/page\"}"
+ "ExtJson": "{\"ScopeCategory\":\"SCOPE_ALL\",\"ScopeDefineOrgIdList\":[],\"ApiUrl\":\"/biz/organization/position/page\"}"
},
{
- "Id": "395725241921606",
+ "Id": "571526548279394",
"ObjectId": "212725263001001",
- "TargetId": "/biz/org/add",
+ "TargetId": "/biz/organization/position/detail",
"Category": "SYS_ROLE_HAS_PERMISSION",
- "ExtJson": "{\"ScopeCategory\":\"SCOPE_ALL\",\"ScopeDefineOrgIdList\":[],\"ApiUrl\":\"/biz/org/add\"}"
+ "ExtJson": "{\"ScopeCategory\":\"SCOPE_ALL\",\"ScopeDefineOrgIdList\":[],\"ApiUrl\":\"/biz/organization/position/detail\"}"
},
{
- "Id": "395725241921607",
+ "Id": "571526548279395",
"ObjectId": "212725263001001",
- "TargetId": "/biz/org/edit",
+ "TargetId": "/biz/organization/position/selector",
"Category": "SYS_ROLE_HAS_PERMISSION",
- "ExtJson": "{\"ScopeCategory\":\"SCOPE_ALL\",\"ScopeDefineOrgIdList\":[],\"ApiUrl\":\"/biz/org/edit\"}"
+ "ExtJson": "{\"ScopeCategory\":\"SCOPE_ALL\",\"ScopeDefineOrgIdList\":[],\"ApiUrl\":\"/biz/organization/position/selector\"}"
},
{
- "Id": "395725241921608",
+ "Id": "571526548279396",
"ObjectId": "212725263001001",
- "TargetId": "/biz/org/copy",
+ "TargetId": "/biz/organization/position/add",
"Category": "SYS_ROLE_HAS_PERMISSION",
- "ExtJson": "{\"ScopeCategory\":\"SCOPE_ALL\",\"ScopeDefineOrgIdList\":[],\"ApiUrl\":\"/biz/org/copy\"}"
+ "ExtJson": "{\"ScopeCategory\":\"SCOPE_ALL\",\"ScopeDefineOrgIdList\":[],\"ApiUrl\":\"/biz/organization/position/add\"}"
},
{
- "Id": "395725241921609",
+ "Id": "571526548279397",
"ObjectId": "212725263001001",
- "TargetId": "/biz/org/delete",
+ "TargetId": "/biz/organization/position/edit",
"Category": "SYS_ROLE_HAS_PERMISSION",
- "ExtJson": "{\"ScopeCategory\":\"SCOPE_ALL\",\"ScopeDefineOrgIdList\":[],\"ApiUrl\":\"/biz/org/delete\"}"
+ "ExtJson": "{\"ScopeCategory\":\"SCOPE_ALL\",\"ScopeDefineOrgIdList\":[],\"ApiUrl\":\"/biz/organization/position/edit\"}"
},
{
- "Id": "395725241921610",
+ "Id": "571526548279398",
"ObjectId": "212725263001001",
- "TargetId": "/biz/org/orgTreeSelector",
+ "TargetId": "/biz/organization/position/delete",
"Category": "SYS_ROLE_HAS_PERMISSION",
- "ExtJson": "{\"ScopeCategory\":\"SCOPE_ALL\",\"ScopeDefineOrgIdList\":[],\"ApiUrl\":\"/biz/org/orgTreeSelector\"}"
+ "ExtJson": "{\"ScopeCategory\":\"SCOPE_ALL\",\"ScopeDefineOrgIdList\":[],\"ApiUrl\":\"/biz/organization/position/delete\"}"
},
{
- "Id": "395725241921611",
+ "Id": "571526548279399",
"ObjectId": "212725263001001",
- "TargetId": "/biz/org/userSelector",
+ "TargetId": "/biz/organization/user/preview",
"Category": "SYS_ROLE_HAS_PERMISSION",
- "ExtJson": "{\"ScopeCategory\":\"SCOPE_ALL\",\"ScopeDefineOrgIdList\":[],\"ApiUrl\":\"/biz/org/userSelector\"}"
+ "ExtJson": "{\"ScopeCategory\":\"SCOPE_ALL\",\"ScopeDefineOrgIdList\":[],\"ApiUrl\":\"/biz/organization/user/preview\"}"
},
{
- "Id": "395725241921612",
+ "Id": "571526548279400",
"ObjectId": "212725263001001",
- "TargetId": "/biz/position/page",
+ "TargetId": "/biz/organization/user/page",
"Category": "SYS_ROLE_HAS_PERMISSION",
- "ExtJson": "{\"ScopeCategory\":\"SCOPE_ALL\",\"ScopeDefineOrgIdList\":[],\"ApiUrl\":\"/biz/position/page\"}"
+ "ExtJson": "{\"ScopeCategory\":\"SCOPE_ALL\",\"ScopeDefineOrgIdList\":[],\"ApiUrl\":\"/biz/organization/user/page\"}"
},
{
- "Id": "395725241921613",
+ "Id": "571526548279401",
"ObjectId": "212725263001001",
- "TargetId": "/biz/position/add",
+ "TargetId": "/biz/organization/user/selector",
"Category": "SYS_ROLE_HAS_PERMISSION",
- "ExtJson": "{\"ScopeCategory\":\"SCOPE_ALL\",\"ScopeDefineOrgIdList\":[],\"ApiUrl\":\"/biz/position/add\"}"
+ "ExtJson": "{\"ScopeCategory\":\"SCOPE_ALL\",\"ScopeDefineOrgIdList\":[],\"ApiUrl\":\"/biz/organization/user/selector\"}"
},
{
- "Id": "395725241921614",
+ "Id": "571526548279402",
"ObjectId": "212725263001001",
- "TargetId": "/biz/position/edit",
+ "TargetId": "/biz/organization/user/ownRole",
"Category": "SYS_ROLE_HAS_PERMISSION",
- "ExtJson": "{\"ScopeCategory\":\"SCOPE_ALL\",\"ScopeDefineOrgIdList\":[],\"ApiUrl\":\"/biz/position/edit\"}"
+ "ExtJson": "{\"ScopeCategory\":\"SCOPE_ALL\",\"ScopeDefineOrgIdList\":[],\"ApiUrl\":\"/biz/organization/user/ownRole\"}"
},
{
- "Id": "395725241921615",
+ "Id": "571526548279403",
"ObjectId": "212725263001001",
- "TargetId": "/biz/position/delete",
+ "TargetId": "/biz/organization/user/detail",
"Category": "SYS_ROLE_HAS_PERMISSION",
- "ExtJson": "{\"ScopeCategory\":\"SCOPE_ALL\",\"ScopeDefineOrgIdList\":[],\"ApiUrl\":\"/biz/position/delete\"}"
+ "ExtJson": "{\"ScopeCategory\":\"SCOPE_ALL\",\"ScopeDefineOrgIdList\":[],\"ApiUrl\":\"/biz/organization/user/detail\"}"
},
{
- "Id": "395725241921616",
+ "Id": "571526548279404",
"ObjectId": "212725263001001",
- "TargetId": "/biz/user/orgTreeSelector",
+ "TargetId": "/biz/organization/user/add",
"Category": "SYS_ROLE_HAS_PERMISSION",
- "ExtJson": "{\"ScopeCategory\":\"SCOPE_ALL\",\"ScopeDefineOrgIdList\":[],\"ApiUrl\":\"/biz/user/orgTreeSelector\"}"
+ "ExtJson": "{\"ScopeCategory\":\"SCOPE_ALL\",\"ScopeDefineOrgIdList\":[],\"ApiUrl\":\"/biz/organization/user/add\"}"
},
{
- "Id": "395725241921617",
+ "Id": "571526548279405",
"ObjectId": "212725263001001",
- "TargetId": "/biz/user/page",
+ "TargetId": "/biz/organization/user/edit",
"Category": "SYS_ROLE_HAS_PERMISSION",
- "ExtJson": "{\"ScopeCategory\":\"SCOPE_ALL\",\"ScopeDefineOrgIdList\":[],\"ApiUrl\":\"/biz/user/page\"}"
+ "ExtJson": "{\"ScopeCategory\":\"SCOPE_ALL\",\"ScopeDefineOrgIdList\":[],\"ApiUrl\":\"/biz/organization/user/edit\"}"
},
{
- "Id": "395725241921618",
+ "Id": "571526548279406",
"ObjectId": "212725263001001",
- "TargetId": "/biz/user/userSelector",
+ "TargetId": "/biz/organization/user/edits",
"Category": "SYS_ROLE_HAS_PERMISSION",
- "ExtJson": "{\"ScopeCategory\":\"SCOPE_ALL\",\"ScopeDefineOrgIdList\":[],\"ApiUrl\":\"/biz/user/userSelector\"}"
+ "ExtJson": "{\"ScopeCategory\":\"SCOPE_ALL\",\"ScopeDefineOrgIdList\":[],\"ApiUrl\":\"/biz/organization/user/edits\"}"
},
{
- "Id": "395725241921619",
+ "Id": "571526548279407",
"ObjectId": "212725263001001",
- "TargetId": "/biz/user/positionSelector",
+ "TargetId": "/biz/organization/user/delete",
"Category": "SYS_ROLE_HAS_PERMISSION",
- "ExtJson": "{\"ScopeCategory\":\"SCOPE_ALL\",\"ScopeDefineOrgIdList\":[],\"ApiUrl\":\"/biz/user/positionSelector\"}"
+ "ExtJson": "{\"ScopeCategory\":\"SCOPE_ALL\",\"ScopeDefineOrgIdList\":[],\"ApiUrl\":\"/biz/organization/user/delete\"}"
},
{
- "Id": "395725241921620",
+ "Id": "571526548279408",
"ObjectId": "212725263001001",
- "TargetId": "/biz/user/ownRole",
+ "TargetId": "/biz/organization/user/disableUser",
"Category": "SYS_ROLE_HAS_PERMISSION",
- "ExtJson": "{\"ScopeCategory\":\"SCOPE_ALL\",\"ScopeDefineOrgIdList\":[],\"ApiUrl\":\"/biz/user/ownRole\"}"
+ "ExtJson": "{\"ScopeCategory\":\"SCOPE_ALL\",\"ScopeDefineOrgIdList\":[],\"ApiUrl\":\"/biz/organization/user/disableUser\"}"
},
{
- "Id": "395725241921621",
+ "Id": "571526548279409",
"ObjectId": "212725263001001",
- "TargetId": "/biz/user/roleSelector",
+ "TargetId": "/biz/organization/user/enableUser",
"Category": "SYS_ROLE_HAS_PERMISSION",
- "ExtJson": "{\"ScopeCategory\":\"SCOPE_ALL\",\"ScopeDefineOrgIdList\":[],\"ApiUrl\":\"/biz/user/roleSelector\"}"
+ "ExtJson": "{\"ScopeCategory\":\"SCOPE_ALL\",\"ScopeDefineOrgIdList\":[],\"ApiUrl\":\"/biz/organization/user/enableUser\"}"
},
{
- "Id": "395725241921622",
+ "Id": "571526548279410",
"ObjectId": "212725263001001",
- "TargetId": "/biz/user/add",
+ "TargetId": "/biz/organization/user/resetPassword",
"Category": "SYS_ROLE_HAS_PERMISSION",
- "ExtJson": "{\"ScopeCategory\":\"SCOPE_ALL\",\"ScopeDefineOrgIdList\":[],\"ApiUrl\":\"/biz/user/add\"}"
+ "ExtJson": "{\"ScopeCategory\":\"SCOPE_ALL\",\"ScopeDefineOrgIdList\":[],\"ApiUrl\":\"/biz/organization/user/resetPassword\"}"
},
{
- "Id": "395725241921623",
+ "Id": "571526548279411",
"ObjectId": "212725263001001",
- "TargetId": "/biz/user/edit",
+ "TargetId": "/biz/organization/user/grantRole",
"Category": "SYS_ROLE_HAS_PERMISSION",
- "ExtJson": "{\"ScopeCategory\":\"SCOPE_ALL\",\"ScopeDefineOrgIdList\":[],\"ApiUrl\":\"/biz/user/edit\"}"
+ "ExtJson": "{\"ScopeCategory\":\"SCOPE_ALL\",\"ScopeDefineOrgIdList\":[],\"ApiUrl\":\"/biz/organization/user/grantRole\"}"
},
{
- "Id": "395725241921624",
+ "Id": "571526548279412",
"ObjectId": "212725263001001",
- "TargetId": "/biz/user/edits",
+ "TargetId": "/biz/organization/user/import",
"Category": "SYS_ROLE_HAS_PERMISSION",
- "ExtJson": "{\"ScopeCategory\":\"SCOPE_ALL\",\"ScopeDefineOrgIdList\":[],\"ApiUrl\":\"/biz/user/edits\"}"
+ "ExtJson": "{\"ScopeCategory\":\"SCOPE_ALL\",\"ScopeDefineOrgIdList\":[],\"ApiUrl\":\"/biz/organization/user/import\"}"
},
{
- "Id": "395725241921625",
+ "Id": "571526548279413",
"ObjectId": "212725263001001",
- "TargetId": "/biz/user/delete",
+ "TargetId": "/biz/organization/user/export",
"Category": "SYS_ROLE_HAS_PERMISSION",
- "ExtJson": "{\"ScopeCategory\":\"SCOPE_ALL\",\"ScopeDefineOrgIdList\":[],\"ApiUrl\":\"/biz/user/delete\"}"
+ "ExtJson": "{\"ScopeCategory\":\"SCOPE_ALL\",\"ScopeDefineOrgIdList\":[],\"ApiUrl\":\"/biz/organization/user/export\"}"
},
{
- "Id": "395725241921626",
+ "Id": "571526548279414",
"ObjectId": "212725263001001",
- "TargetId": "/biz/user/disableUser",
+ "TargetId": "/home/index/visLog/list",
"Category": "SYS_ROLE_HAS_PERMISSION",
- "ExtJson": "{\"ScopeCategory\":\"SCOPE_ALL\",\"ScopeDefineOrgIdList\":[],\"ApiUrl\":\"/biz/user/disableUser\"}"
+ "ExtJson": "{\"ScopeCategory\":\"SCOPE_ALL\",\"ScopeDefineOrgIdList\":[],\"ApiUrl\":\"/home/index/visLog/list\"}"
},
{
- "Id": "395725241921627",
+ "Id": "571526548279415",
"ObjectId": "212725263001001",
- "TargetId": "/biz/user/enableUser",
+ "TargetId": "/home/index/opLog/list",
"Category": "SYS_ROLE_HAS_PERMISSION",
- "ExtJson": "{\"ScopeCategory\":\"SCOPE_ALL\",\"ScopeDefineOrgIdList\":[],\"ApiUrl\":\"/biz/user/enableUser\"}"
+ "ExtJson": "{\"ScopeCategory\":\"SCOPE_ALL\",\"ScopeDefineOrgIdList\":[],\"ApiUrl\":\"/home/index/opLog/list\"}"
},
{
- "Id": "395725241921628",
+ "Id": "571526548279416",
"ObjectId": "212725263001001",
- "TargetId": "/biz/user/resetPassword",
+ "TargetId": "/home/index/message/list",
"Category": "SYS_ROLE_HAS_PERMISSION",
- "ExtJson": "{\"ScopeCategory\":\"SCOPE_ALL\",\"ScopeDefineOrgIdList\":[],\"ApiUrl\":\"/biz/user/resetPassword\"}"
+ "ExtJson": "{\"ScopeCategory\":\"SCOPE_ALL\",\"ScopeDefineOrgIdList\":[],\"ApiUrl\":\"/home/index/message/list\"}"
},
{
- "Id": "395725241921629",
+ "Id": "571526548279417",
"ObjectId": "212725263001001",
- "TargetId": "/biz/user/grantRole",
+ "TargetId": "/home/index/schedule/list",
"Category": "SYS_ROLE_HAS_PERMISSION",
- "ExtJson": "{\"ScopeCategory\":\"SCOPE_ALL\",\"ScopeDefineOrgIdList\":[],\"ApiUrl\":\"/biz/user/grantRole\"}"
+ "ExtJson": "{\"ScopeCategory\":\"SCOPE_ALL\",\"ScopeDefineOrgIdList\":[],\"ApiUrl\":\"/home/index/schedule/list\"}"
},
{
- "Id": "395725241921630",
+ "Id": "571526548279418",
"ObjectId": "212725263001001",
- "TargetId": "/biz/user/import",
+ "TargetId": "/home/index/schedule/add",
"Category": "SYS_ROLE_HAS_PERMISSION",
- "ExtJson": "{\"ScopeCategory\":\"SCOPE_ALL\",\"ScopeDefineOrgIdList\":[],\"ApiUrl\":\"/biz/user/import\"}"
+ "ExtJson": "{\"ScopeCategory\":\"SCOPE_ALL\",\"ScopeDefineOrgIdList\":[],\"ApiUrl\":\"/home/index/schedule/add\"}"
},
{
- "Id": "395725241921631",
+ "Id": "571526548279419",
"ObjectId": "212725263001001",
- "TargetId": "/biz/user/export",
+ "TargetId": "/home/index/schedule/deleteSchedule",
"Category": "SYS_ROLE_HAS_PERMISSION",
- "ExtJson": "{\"ScopeCategory\":\"SCOPE_ALL\",\"ScopeDefineOrgIdList\":[],\"ApiUrl\":\"/biz/user/export\"}"
+ "ExtJson": "{\"ScopeCategory\":\"SCOPE_ALL\",\"ScopeDefineOrgIdList\":[],\"ApiUrl\":\"/home/index/schedule/deleteSchedule\"}"
},
{
- "Id": "395725328527429",
- "ObjectId": "212725263001002",
- "TargetId": "/biz/org/tree",
- "Category": "SYS_ROLE_HAS_PERMISSION",
- "ExtJson": "{\"ScopeCategory\":\"SCOPE_ALL\",\"ScopeDefineOrgIdList\":[],\"ApiUrl\":\"/biz/org/tree\"}"
+ "Id": "592396865929285",
+ "ObjectId": "212725263002001",
+ "TargetId": "",
+ "Category": "SYS_USER_WORKBENCH_DATA",
+ "ExtJson": "{\"shortcut\":[212725263003723,212745263003737]}"
},
{
- "Id": "395725328527430",
- "ObjectId": "212725263001002",
- "TargetId": "/biz/org/page",
- "Category": "SYS_ROLE_HAS_PERMISSION",
- "ExtJson": "{\"ScopeCategory\":\"SCOPE_ALL\",\"ScopeDefineOrgIdList\":[],\"ApiUrl\":\"/biz/org/page\"}"
+ "Id": "614733361340485",
+ "ObjectId": "212725263002002",
+ "TargetId": "",
+ "Category": "SYS_USER_WORKBENCH_DATA",
+ "ExtJson": "{\"shortcut\":[212725263003723,212725263003722]}"
},
{
- "Id": "395725328527431",
+ "Id": "622206493061189",
"ObjectId": "212725263001002",
- "TargetId": "/biz/org/add",
- "Category": "SYS_ROLE_HAS_PERMISSION",
- "ExtJson": "{\"ScopeCategory\":\"SCOPE_ALL\",\"ScopeDefineOrgIdList\":[],\"ApiUrl\":\"/biz/org/add\"}"
+ "TargetId": "212755263003743",
+ "Category": "SYS_ROLE_HAS_MODULE",
+ "ExtJson": ""
},
{
- "Id": "395725328527432",
+ "Id": "622206493061190",
"ObjectId": "212725263001002",
- "TargetId": "/biz/org/edit",
- "Category": "SYS_ROLE_HAS_PERMISSION",
- "ExtJson": "{\"ScopeCategory\":\"SCOPE_ALL\",\"ScopeDefineOrgIdList\":[],\"ApiUrl\":\"/biz/org/edit\"}"
+ "TargetId": "212755263003745",
+ "Category": "SYS_ROLE_HAS_RESOURCE",
+ "ExtJson": "{\"MenuId\":212755263003745,\"ButtonInfo\":[212825263004728,212825263004729,212825263004730,212825263004731,383020955254853,383022400483397]}"
},
{
- "Id": "395725328527433",
+ "Id": "622206493065285",
"ObjectId": "212725263001002",
- "TargetId": "/biz/org/copy",
- "Category": "SYS_ROLE_HAS_PERMISSION",
- "ExtJson": "{\"ScopeCategory\":\"SCOPE_ALL\",\"ScopeDefineOrgIdList\":[],\"ApiUrl\":\"/biz/org/copy\"}"
+ "TargetId": "212755263003746",
+ "Category": "SYS_ROLE_HAS_RESOURCE",
+ "ExtJson": "{\"MenuId\":212755263003746,\"ButtonInfo\":[212825263005734,212825263005735,212825263005736,212825263005737,212825263005738,212825263005739,212825263005740,391869166551109,391869250662469,395712751292485]}"
},
{
- "Id": "395725328527434",
+ "Id": "622206493065286",
"ObjectId": "212725263001002",
- "TargetId": "/biz/org/delete",
- "Category": "SYS_ROLE_HAS_PERMISSION",
- "ExtJson": "{\"ScopeCategory\":\"SCOPE_ALL\",\"ScopeDefineOrgIdList\":[],\"ApiUrl\":\"/biz/org/delete\"}"
+ "TargetId": "212755263003747",
+ "Category": "SYS_ROLE_HAS_RESOURCE",
+ "ExtJson": "{\"MenuId\":212755263003747,\"ButtonInfo\":[212825263006739,212825263006749,212825263006750,212825263006751]}"
},
{
- "Id": "395725328527435",
+ "Id": "622206493065287",
"ObjectId": "212725263001002",
- "TargetId": "/biz/org/orgTreeSelector",
- "Category": "SYS_ROLE_HAS_PERMISSION",
- "ExtJson": "{\"ScopeCategory\":\"SCOPE_ALL\",\"ScopeDefineOrgIdList\":[],\"ApiUrl\":\"/biz/org/orgTreeSelector\"}"
+ "TargetId": "517412647174213",
+ "Category": "SYS_ROLE_HAS_RESOURCE",
+ "ExtJson": "{\"MenuId\":517412647174213,\"ButtonInfo\":[517470837813317,517470837813318,517470837813319,517470837813320,517480163758149,517480218902597]}"
},
{
- "Id": "395725328527436",
+ "Id": "622206493065288",
"ObjectId": "212725263001002",
- "TargetId": "/biz/org/userSelector",
+ "TargetId": "/biz/organization/org/tree",
"Category": "SYS_ROLE_HAS_PERMISSION",
- "ExtJson": "{\"ScopeCategory\":\"SCOPE_ALL\",\"ScopeDefineOrgIdList\":[],\"ApiUrl\":\"/biz/org/userSelector\"}"
+ "ExtJson": "{\"ScopeCategory\":\"SCOPE_ALL\",\"ScopeDefineOrgIdList\":[],\"ApiUrl\":\"/biz/organization/org/tree\"}"
},
{
- "Id": "395725328527437",
+ "Id": "622206493065289",
"ObjectId": "212725263001002",
- "TargetId": "/biz/position/page",
+ "TargetId": "/biz/organization/org/page",
"Category": "SYS_ROLE_HAS_PERMISSION",
- "ExtJson": "{\"ScopeCategory\":\"SCOPE_ALL\",\"ScopeDefineOrgIdList\":[],\"ApiUrl\":\"/biz/position/page\"}"
+ "ExtJson": "{\"ScopeCategory\":\"SCOPE_ALL\",\"ScopeDefineOrgIdList\":[],\"ApiUrl\":\"/biz/organization/org/page\"}"
},
{
- "Id": "395725328527438",
+ "Id": "622206493065290",
"ObjectId": "212725263001002",
- "TargetId": "/biz/position/add",
+ "TargetId": "/biz/organization/org/orgTreeSelector",
"Category": "SYS_ROLE_HAS_PERMISSION",
- "ExtJson": "{\"ScopeCategory\":\"SCOPE_ALL\",\"ScopeDefineOrgIdList\":[],\"ApiUrl\":\"/biz/position/add\"}"
+ "ExtJson": "{\"ScopeCategory\":\"SCOPE_ALL\",\"ScopeDefineOrgIdList\":[],\"ApiUrl\":\"/biz/organization/org/orgTreeSelector\"}"
},
{
- "Id": "395725328527439",
+ "Id": "622206493065291",
"ObjectId": "212725263001002",
- "TargetId": "/biz/position/edit",
+ "TargetId": "/biz/organization/org/userSelector",
"Category": "SYS_ROLE_HAS_PERMISSION",
- "ExtJson": "{\"ScopeCategory\":\"SCOPE_ALL\",\"ScopeDefineOrgIdList\":[],\"ApiUrl\":\"/biz/position/edit\"}"
+ "ExtJson": "{\"ScopeCategory\":\"SCOPE_ALL\",\"ScopeDefineOrgIdList\":[],\"ApiUrl\":\"/biz/organization/org/userSelector\"}"
},
{
- "Id": "395725328527440",
+ "Id": "622206493065292",
"ObjectId": "212725263001002",
- "TargetId": "/biz/position/delete",
+ "TargetId": "/biz/organization/org/detail",
"Category": "SYS_ROLE_HAS_PERMISSION",
- "ExtJson": "{\"ScopeCategory\":\"SCOPE_ALL\",\"ScopeDefineOrgIdList\":[],\"ApiUrl\":\"/biz/position/delete\"}"
+ "ExtJson": "{\"ScopeCategory\":\"SCOPE_ALL\",\"ScopeDefineOrgIdList\":[],\"ApiUrl\":\"/biz/organization/org/detail\"}"
},
{
- "Id": "395725328527441",
+ "Id": "622206493065293",
"ObjectId": "212725263001002",
- "TargetId": "/biz/user/orgTreeSelector",
+ "TargetId": "/biz/organization/org/add",
"Category": "SYS_ROLE_HAS_PERMISSION",
- "ExtJson": "{\"ScopeCategory\":\"SCOPE_ALL\",\"ScopeDefineOrgIdList\":[],\"ApiUrl\":\"/biz/user/orgTreeSelector\"}"
+ "ExtJson": "{\"ScopeCategory\":\"SCOPE_ALL\",\"ScopeDefineOrgIdList\":[],\"ApiUrl\":\"/biz/organization/org/add\"}"
},
{
- "Id": "395725328527442",
+ "Id": "622206493065294",
"ObjectId": "212725263001002",
- "TargetId": "/biz/user/page",
+ "TargetId": "/biz/organization/org/edit",
"Category": "SYS_ROLE_HAS_PERMISSION",
- "ExtJson": "{\"ScopeCategory\":\"SCOPE_ALL\",\"ScopeDefineOrgIdList\":[],\"ApiUrl\":\"/biz/user/page\"}"
+ "ExtJson": "{\"ScopeCategory\":\"SCOPE_ALL\",\"ScopeDefineOrgIdList\":[],\"ApiUrl\":\"/biz/organization/org/edit\"}"
},
{
- "Id": "395725328527443",
+ "Id": "622206493065295",
"ObjectId": "212725263001002",
- "TargetId": "/biz/user/userSelector",
+ "TargetId": "/biz/organization/org/copy",
"Category": "SYS_ROLE_HAS_PERMISSION",
- "ExtJson": "{\"ScopeCategory\":\"SCOPE_ALL\",\"ScopeDefineOrgIdList\":[],\"ApiUrl\":\"/biz/user/userSelector\"}"
+ "ExtJson": "{\"ScopeCategory\":\"SCOPE_ALL\",\"ScopeDefineOrgIdList\":[],\"ApiUrl\":\"/biz/organization/org/copy\"}"
},
{
- "Id": "395725328527444",
+ "Id": "622206493065296",
"ObjectId": "212725263001002",
- "TargetId": "/biz/user/positionSelector",
+ "TargetId": "/biz/organization/org/delete",
"Category": "SYS_ROLE_HAS_PERMISSION",
- "ExtJson": "{\"ScopeCategory\":\"SCOPE_ALL\",\"ScopeDefineOrgIdList\":[],\"ApiUrl\":\"/biz/user/positionSelector\"}"
+ "ExtJson": "{\"ScopeCategory\":\"SCOPE_ALL\",\"ScopeDefineOrgIdList\":[],\"ApiUrl\":\"/biz/organization/org/delete\"}"
},
{
- "Id": "395725328527445",
+ "Id": "622206493065297",
"ObjectId": "212725263001002",
- "TargetId": "/biz/user/ownRole",
+ "TargetId": "/biz/organization/position/tree",
"Category": "SYS_ROLE_HAS_PERMISSION",
- "ExtJson": "{\"ScopeCategory\":\"SCOPE_ALL\",\"ScopeDefineOrgIdList\":[],\"ApiUrl\":\"/biz/user/ownRole\"}"
+ "ExtJson": "{\"ScopeCategory\":\"SCOPE_ALL\",\"ScopeDefineOrgIdList\":[],\"ApiUrl\":\"/biz/organization/position/tree\"}"
},
{
- "Id": "395725328527446",
+ "Id": "622206493065298",
"ObjectId": "212725263001002",
- "TargetId": "/biz/user/roleSelector",
+ "TargetId": "/biz/organization/position/page",
"Category": "SYS_ROLE_HAS_PERMISSION",
- "ExtJson": "{\"ScopeCategory\":\"SCOPE_ALL\",\"ScopeDefineOrgIdList\":[],\"ApiUrl\":\"/biz/user/roleSelector\"}"
+ "ExtJson": "{\"ScopeCategory\":\"SCOPE_ALL\",\"ScopeDefineOrgIdList\":[],\"ApiUrl\":\"/biz/organization/position/page\"}"
},
{
- "Id": "395725328527447",
+ "Id": "622206493065299",
"ObjectId": "212725263001002",
- "TargetId": "/biz/user/add",
+ "TargetId": "/biz/organization/position/detail",
"Category": "SYS_ROLE_HAS_PERMISSION",
- "ExtJson": "{\"ScopeCategory\":\"SCOPE_ALL\",\"ScopeDefineOrgIdList\":[],\"ApiUrl\":\"/biz/user/add\"}"
+ "ExtJson": "{\"ScopeCategory\":\"SCOPE_ALL\",\"ScopeDefineOrgIdList\":[],\"ApiUrl\":\"/biz/organization/position/detail\"}"
},
{
- "Id": "395725328527448",
+ "Id": "622206493065300",
"ObjectId": "212725263001002",
- "TargetId": "/biz/user/edit",
+ "TargetId": "/biz/organization/position/selector",
"Category": "SYS_ROLE_HAS_PERMISSION",
- "ExtJson": "{\"ScopeCategory\":\"SCOPE_ALL\",\"ScopeDefineOrgIdList\":[],\"ApiUrl\":\"/biz/user/edit\"}"
+ "ExtJson": "{\"ScopeCategory\":\"SCOPE_ALL\",\"ScopeDefineOrgIdList\":[],\"ApiUrl\":\"/biz/organization/position/selector\"}"
},
{
- "Id": "395725328527449",
+ "Id": "622206493065301",
"ObjectId": "212725263001002",
- "TargetId": "/biz/user/edits",
+ "TargetId": "/biz/organization/position/add",
"Category": "SYS_ROLE_HAS_PERMISSION",
- "ExtJson": "{\"ScopeCategory\":\"SCOPE_ALL\",\"ScopeDefineOrgIdList\":[],\"ApiUrl\":\"/biz/user/edits\"}"
+ "ExtJson": "{\"ScopeCategory\":\"SCOPE_ALL\",\"ScopeDefineOrgIdList\":[],\"ApiUrl\":\"/biz/organization/position/add\"}"
},
{
- "Id": "395725328527450",
+ "Id": "622206493065302",
"ObjectId": "212725263001002",
- "TargetId": "/biz/user/delete",
+ "TargetId": "/biz/organization/position/edit",
"Category": "SYS_ROLE_HAS_PERMISSION",
- "ExtJson": "{\"ScopeCategory\":\"SCOPE_ALL\",\"ScopeDefineOrgIdList\":[],\"ApiUrl\":\"/biz/user/delete\"}"
+ "ExtJson": "{\"ScopeCategory\":\"SCOPE_ALL\",\"ScopeDefineOrgIdList\":[],\"ApiUrl\":\"/biz/organization/position/edit\"}"
},
{
- "Id": "395725328527451",
+ "Id": "622206493065303",
"ObjectId": "212725263001002",
- "TargetId": "/biz/user/disableUser",
+ "TargetId": "/biz/organization/position/delete",
"Category": "SYS_ROLE_HAS_PERMISSION",
- "ExtJson": "{\"ScopeCategory\":\"SCOPE_ALL\",\"ScopeDefineOrgIdList\":[],\"ApiUrl\":\"/biz/user/disableUser\"}"
+ "ExtJson": "{\"ScopeCategory\":\"SCOPE_ALL\",\"ScopeDefineOrgIdList\":[],\"ApiUrl\":\"/biz/organization/position/delete\"}"
},
{
- "Id": "395725328527452",
+ "Id": "622206493065304",
"ObjectId": "212725263001002",
- "TargetId": "/biz/user/enableUser",
+ "TargetId": "/biz/organization/role/page",
"Category": "SYS_ROLE_HAS_PERMISSION",
- "ExtJson": "{\"ScopeCategory\":\"SCOPE_ALL\",\"ScopeDefineOrgIdList\":[],\"ApiUrl\":\"/biz/user/enableUser\"}"
+ "ExtJson": "{\"ScopeCategory\":\"SCOPE_ALL\",\"ScopeDefineOrgIdList\":[],\"ApiUrl\":\"/biz/organization/role/page\"}"
},
{
- "Id": "395725328527453",
+ "Id": "622206493065305",
"ObjectId": "212725263001002",
- "TargetId": "/biz/user/resetPassword",
+ "TargetId": "/biz/organization/role/add",
"Category": "SYS_ROLE_HAS_PERMISSION",
- "ExtJson": "{\"ScopeCategory\":\"SCOPE_ALL\",\"ScopeDefineOrgIdList\":[],\"ApiUrl\":\"/biz/user/resetPassword\"}"
+ "ExtJson": "{\"ScopeCategory\":\"SCOPE_ALL\",\"ScopeDefineOrgIdList\":[],\"ApiUrl\":\"/biz/organization/role/add\"}"
},
{
- "Id": "395725328527454",
+ "Id": "622206493065306",
"ObjectId": "212725263001002",
- "TargetId": "/biz/user/grantRole",
+ "TargetId": "/biz/organization/role/edit",
"Category": "SYS_ROLE_HAS_PERMISSION",
- "ExtJson": "{\"ScopeCategory\":\"SCOPE_ALL\",\"ScopeDefineOrgIdList\":[],\"ApiUrl\":\"/biz/user/grantRole\"}"
+ "ExtJson": "{\"ScopeCategory\":\"SCOPE_ALL\",\"ScopeDefineOrgIdList\":[],\"ApiUrl\":\"/biz/organization/role/edit\"}"
},
{
- "Id": "395725328527455",
+ "Id": "622206493065307",
"ObjectId": "212725263001002",
- "TargetId": "/biz/user/import",
+ "TargetId": "/biz/organization/role/delete",
"Category": "SYS_ROLE_HAS_PERMISSION",
- "ExtJson": "{\"ScopeCategory\":\"SCOPE_ALL\",\"ScopeDefineOrgIdList\":[],\"ApiUrl\":\"/biz/user/import\"}"
+ "ExtJson": "{\"ScopeCategory\":\"SCOPE_ALL\",\"ScopeDefineOrgIdList\":[],\"ApiUrl\":\"/biz/organization/role/delete\"}"
},
{
- "Id": "395725328527456",
+ "Id": "622206493065308",
"ObjectId": "212725263001002",
- "TargetId": "/biz/user/export",
+ "TargetId": "/biz/organization/role/resourceTreeSelector",
"Category": "SYS_ROLE_HAS_PERMISSION",
- "ExtJson": "{\"ScopeCategory\":\"SCOPE_ALL\",\"ScopeDefineOrgIdList\":[],\"ApiUrl\":\"/biz/user/export\"}"
+ "ExtJson": "{\"ScopeCategory\":\"SCOPE_ALL\",\"ScopeDefineOrgIdList\":[],\"ApiUrl\":\"/biz/organization/role/resourceTreeSelector\"}"
},
{
- "Id": "395725362061381",
- "ObjectId": "359567292014661",
- "TargetId": "/biz/org/tree",
+ "Id": "622206493065309",
+ "ObjectId": "212725263001002",
+ "TargetId": "/biz/organization/role/ownResource",
"Category": "SYS_ROLE_HAS_PERMISSION",
- "ExtJson": "{\"ScopeCategory\":\"SCOPE_ORG_CHILD\",\"ScopeDefineOrgIdList\":[],\"ApiUrl\":\"/biz/org/tree\"}"
+ "ExtJson": "{\"ScopeCategory\":\"SCOPE_ALL\",\"ScopeDefineOrgIdList\":[],\"ApiUrl\":\"/biz/organization/role/ownResource\"}"
},
{
- "Id": "395725362061382",
- "ObjectId": "359567292014661",
- "TargetId": "/biz/org/page",
+ "Id": "622206493065310",
+ "ObjectId": "212725263001002",
+ "TargetId": "/biz/organization/role/grantResource",
"Category": "SYS_ROLE_HAS_PERMISSION",
- "ExtJson": "{\"ScopeCategory\":\"SCOPE_ORG_CHILD\",\"ScopeDefineOrgIdList\":[],\"ApiUrl\":\"/biz/org/page\"}"
+ "ExtJson": "{\"ScopeCategory\":\"SCOPE_ALL\",\"ScopeDefineOrgIdList\":[],\"ApiUrl\":\"/biz/organization/role/grantResource\"}"
},
{
- "Id": "395725362061383",
- "ObjectId": "359567292014661",
- "TargetId": "/biz/org/add",
+ "Id": "622206493065311",
+ "ObjectId": "212725263001002",
+ "TargetId": "/biz/organization/role/ownUser",
"Category": "SYS_ROLE_HAS_PERMISSION",
- "ExtJson": "{\"ScopeCategory\":\"SCOPE_ORG_CHILD\",\"ScopeDefineOrgIdList\":[],\"ApiUrl\":\"/biz/org/add\"}"
+ "ExtJson": "{\"ScopeCategory\":\"SCOPE_ALL\",\"ScopeDefineOrgIdList\":[],\"ApiUrl\":\"/biz/organization/role/ownUser\"}"
},
{
- "Id": "395725362061384",
- "ObjectId": "359567292014661",
- "TargetId": "/biz/org/edit",
+ "Id": "622206493065312",
+ "ObjectId": "212725263001002",
+ "TargetId": "/biz/organization/role/grantUser",
"Category": "SYS_ROLE_HAS_PERMISSION",
- "ExtJson": "{\"ScopeCategory\":\"SCOPE_ORG_CHILD\",\"ScopeDefineOrgIdList\":[],\"ApiUrl\":\"/biz/org/edit\"}"
+ "ExtJson": "{\"ScopeCategory\":\"SCOPE_ALL\",\"ScopeDefineOrgIdList\":[],\"ApiUrl\":\"/biz/organization/role/grantUser\"}"
},
{
- "Id": "395725362061385",
- "ObjectId": "359567292014661",
- "TargetId": "/biz/org/copy",
+ "Id": "622206493065313",
+ "ObjectId": "212725263001002",
+ "TargetId": "/biz/organization/role/tree",
"Category": "SYS_ROLE_HAS_PERMISSION",
- "ExtJson": "{\"ScopeCategory\":\"SCOPE_ORG_CHILD\",\"ScopeDefineOrgIdList\":[],\"ApiUrl\":\"/biz/org/copy\"}"
+ "ExtJson": "{\"ScopeCategory\":\"SCOPE_ALL\",\"ScopeDefineOrgIdList\":[],\"ApiUrl\":\"/biz/organization/role/tree\"}"
},
{
- "Id": "395725362061386",
- "ObjectId": "359567292014661",
- "TargetId": "/biz/org/delete",
+ "Id": "622206493065314",
+ "ObjectId": "212725263001002",
+ "TargetId": "/biz/organization/role/detail",
"Category": "SYS_ROLE_HAS_PERMISSION",
- "ExtJson": "{\"ScopeCategory\":\"SCOPE_ORG_CHILD\",\"ScopeDefineOrgIdList\":[],\"ApiUrl\":\"/biz/org/delete\"}"
+ "ExtJson": "{\"ScopeCategory\":\"SCOPE_ALL\",\"ScopeDefineOrgIdList\":[],\"ApiUrl\":\"/biz/organization/role/detail\"}"
},
{
- "Id": "395725362061387",
- "ObjectId": "359567292014661",
- "TargetId": "/biz/org/orgTreeSelector",
+ "Id": "622206493065315",
+ "ObjectId": "212725263001002",
+ "TargetId": "/biz/organization/role/roleSelector",
"Category": "SYS_ROLE_HAS_PERMISSION",
- "ExtJson": "{\"ScopeCategory\":\"SCOPE_ORG_CHILD\",\"ScopeDefineOrgIdList\":[],\"ApiUrl\":\"/biz/org/orgTreeSelector\"}"
+ "ExtJson": "{\"ScopeCategory\":\"SCOPE_ALL\",\"ScopeDefineOrgIdList\":[],\"ApiUrl\":\"/biz/organization/role/roleSelector\"}"
},
{
- "Id": "395725362061388",
- "ObjectId": "359567292014661",
- "TargetId": "/biz/org/userSelector",
+ "Id": "622206493065316",
+ "ObjectId": "212725263001002",
+ "TargetId": "/biz/organization/user/preview",
"Category": "SYS_ROLE_HAS_PERMISSION",
- "ExtJson": "{\"ScopeCategory\":\"SCOPE_ORG_CHILD\",\"ScopeDefineOrgIdList\":[],\"ApiUrl\":\"/biz/org/userSelector\"}"
+ "ExtJson": "{\"ScopeCategory\":\"SCOPE_ALL\",\"ScopeDefineOrgIdList\":[],\"ApiUrl\":\"/biz/organization/user/preview\"}"
},
{
- "Id": "395725362061389",
- "ObjectId": "359567292014661",
- "TargetId": "/biz/position/page",
+ "Id": "622206493065317",
+ "ObjectId": "212725263001002",
+ "TargetId": "/biz/organization/user/page",
"Category": "SYS_ROLE_HAS_PERMISSION",
- "ExtJson": "{\"ScopeCategory\":\"SCOPE_ORG_CHILD\",\"ScopeDefineOrgIdList\":[],\"ApiUrl\":\"/biz/position/page\"}"
+ "ExtJson": "{\"ScopeCategory\":\"SCOPE_ALL\",\"ScopeDefineOrgIdList\":[],\"ApiUrl\":\"/biz/organization/user/page\"}"
},
{
- "Id": "395725362061390",
- "ObjectId": "359567292014661",
- "TargetId": "/biz/position/add",
+ "Id": "622206493065318",
+ "ObjectId": "212725263001002",
+ "TargetId": "/biz/organization/user/selector",
"Category": "SYS_ROLE_HAS_PERMISSION",
- "ExtJson": "{\"ScopeCategory\":\"SCOPE_ORG_CHILD\",\"ScopeDefineOrgIdList\":[],\"ApiUrl\":\"/biz/position/add\"}"
+ "ExtJson": "{\"ScopeCategory\":\"SCOPE_ALL\",\"ScopeDefineOrgIdList\":[],\"ApiUrl\":\"/biz/organization/user/selector\"}"
},
{
- "Id": "395725362061391",
- "ObjectId": "359567292014661",
- "TargetId": "/biz/position/edit",
+ "Id": "622206493065319",
+ "ObjectId": "212725263001002",
+ "TargetId": "/biz/organization/user/ownRole",
"Category": "SYS_ROLE_HAS_PERMISSION",
- "ExtJson": "{\"ScopeCategory\":\"SCOPE_ORG_CHILD\",\"ScopeDefineOrgIdList\":[],\"ApiUrl\":\"/biz/position/edit\"}"
+ "ExtJson": "{\"ScopeCategory\":\"SCOPE_ALL\",\"ScopeDefineOrgIdList\":[],\"ApiUrl\":\"/biz/organization/user/ownRole\"}"
},
{
- "Id": "395725362061392",
- "ObjectId": "359567292014661",
- "TargetId": "/biz/position/delete",
+ "Id": "622206493065320",
+ "ObjectId": "212725263001002",
+ "TargetId": "/biz/organization/user/detail",
"Category": "SYS_ROLE_HAS_PERMISSION",
- "ExtJson": "{\"ScopeCategory\":\"SCOPE_ORG_CHILD\",\"ScopeDefineOrgIdList\":[],\"ApiUrl\":\"/biz/position/delete\"}"
+ "ExtJson": "{\"ScopeCategory\":\"SCOPE_ALL\",\"ScopeDefineOrgIdList\":[],\"ApiUrl\":\"/biz/organization/user/detail\"}"
},
{
- "Id": "395725362061393",
- "ObjectId": "359567292014661",
- "TargetId": "/biz/user/orgTreeSelector",
+ "Id": "622206493065321",
+ "ObjectId": "212725263001002",
+ "TargetId": "/biz/organization/user/add",
"Category": "SYS_ROLE_HAS_PERMISSION",
- "ExtJson": "{\"ScopeCategory\":\"SCOPE_ORG_CHILD\",\"ScopeDefineOrgIdList\":[],\"ApiUrl\":\"/biz/user/orgTreeSelector\"}"
+ "ExtJson": "{\"ScopeCategory\":\"SCOPE_ALL\",\"ScopeDefineOrgIdList\":[],\"ApiUrl\":\"/biz/organization/user/add\"}"
},
{
- "Id": "395725362061394",
- "ObjectId": "359567292014661",
- "TargetId": "/biz/user/page",
+ "Id": "622206493065322",
+ "ObjectId": "212725263001002",
+ "TargetId": "/biz/organization/user/edit",
"Category": "SYS_ROLE_HAS_PERMISSION",
- "ExtJson": "{\"ScopeCategory\":\"SCOPE_ORG_CHILD\",\"ScopeDefineOrgIdList\":[],\"ApiUrl\":\"/biz/user/page\"}"
+ "ExtJson": "{\"ScopeCategory\":\"SCOPE_ALL\",\"ScopeDefineOrgIdList\":[],\"ApiUrl\":\"/biz/organization/user/edit\"}"
},
{
- "Id": "395725362061395",
- "ObjectId": "359567292014661",
- "TargetId": "/biz/user/userSelector",
+ "Id": "622206493065323",
+ "ObjectId": "212725263001002",
+ "TargetId": "/biz/organization/user/edits",
"Category": "SYS_ROLE_HAS_PERMISSION",
- "ExtJson": "{\"ScopeCategory\":\"SCOPE_ORG_CHILD\",\"ScopeDefineOrgIdList\":[],\"ApiUrl\":\"/biz/user/userSelector\"}"
+ "ExtJson": "{\"ScopeCategory\":\"SCOPE_ALL\",\"ScopeDefineOrgIdList\":[],\"ApiUrl\":\"/biz/organization/user/edits\"}"
},
{
- "Id": "395725362061396",
- "ObjectId": "359567292014661",
- "TargetId": "/biz/user/positionSelector",
+ "Id": "622206493065324",
+ "ObjectId": "212725263001002",
+ "TargetId": "/biz/organization/user/delete",
"Category": "SYS_ROLE_HAS_PERMISSION",
- "ExtJson": "{\"ScopeCategory\":\"SCOPE_ORG_CHILD\",\"ScopeDefineOrgIdList\":[],\"ApiUrl\":\"/biz/user/positionSelector\"}"
+ "ExtJson": "{\"ScopeCategory\":\"SCOPE_ALL\",\"ScopeDefineOrgIdList\":[],\"ApiUrl\":\"/biz/organization/user/delete\"}"
},
{
- "Id": "395725362061397",
- "ObjectId": "359567292014661",
- "TargetId": "/biz/user/ownRole",
+ "Id": "622206493065325",
+ "ObjectId": "212725263001002",
+ "TargetId": "/biz/organization/user/disableUser",
"Category": "SYS_ROLE_HAS_PERMISSION",
- "ExtJson": "{\"ScopeCategory\":\"SCOPE_ORG_CHILD\",\"ScopeDefineOrgIdList\":[],\"ApiUrl\":\"/biz/user/ownRole\"}"
+ "ExtJson": "{\"ScopeCategory\":\"SCOPE_ALL\",\"ScopeDefineOrgIdList\":[],\"ApiUrl\":\"/biz/organization/user/disableUser\"}"
},
{
- "Id": "395725362061398",
- "ObjectId": "359567292014661",
- "TargetId": "/biz/user/roleSelector",
+ "Id": "622206493065326",
+ "ObjectId": "212725263001002",
+ "TargetId": "/biz/organization/user/enableUser",
"Category": "SYS_ROLE_HAS_PERMISSION",
- "ExtJson": "{\"ScopeCategory\":\"SCOPE_ORG_CHILD\",\"ScopeDefineOrgIdList\":[],\"ApiUrl\":\"/biz/user/roleSelector\"}"
+ "ExtJson": "{\"ScopeCategory\":\"SCOPE_ALL\",\"ScopeDefineOrgIdList\":[],\"ApiUrl\":\"/biz/organization/user/enableUser\"}"
},
{
- "Id": "395725362061399",
- "ObjectId": "359567292014661",
- "TargetId": "/biz/user/add",
+ "Id": "622206493065327",
+ "ObjectId": "212725263001002",
+ "TargetId": "/biz/organization/user/resetPassword",
"Category": "SYS_ROLE_HAS_PERMISSION",
- "ExtJson": "{\"ScopeCategory\":\"SCOPE_ORG_CHILD\",\"ScopeDefineOrgIdList\":[],\"ApiUrl\":\"/biz/user/add\"}"
+ "ExtJson": "{\"ScopeCategory\":\"SCOPE_ALL\",\"ScopeDefineOrgIdList\":[],\"ApiUrl\":\"/biz/organization/user/resetPassword\"}"
},
{
- "Id": "395725362061400",
- "ObjectId": "359567292014661",
- "TargetId": "/biz/user/edit",
+ "Id": "622206493065328",
+ "ObjectId": "212725263001002",
+ "TargetId": "/biz/organization/user/grantRole",
"Category": "SYS_ROLE_HAS_PERMISSION",
- "ExtJson": "{\"ScopeCategory\":\"SCOPE_ORG_CHILD\",\"ScopeDefineOrgIdList\":[],\"ApiUrl\":\"/biz/user/edit\"}"
+ "ExtJson": "{\"ScopeCategory\":\"SCOPE_ALL\",\"ScopeDefineOrgIdList\":[],\"ApiUrl\":\"/biz/organization/user/grantRole\"}"
},
{
- "Id": "395725362061401",
- "ObjectId": "359567292014661",
- "TargetId": "/biz/user/edits",
+ "Id": "622206493065329",
+ "ObjectId": "212725263001002",
+ "TargetId": "/biz/organization/user/import",
"Category": "SYS_ROLE_HAS_PERMISSION",
- "ExtJson": "{\"ScopeCategory\":\"SCOPE_ORG_CHILD\",\"ScopeDefineOrgIdList\":[],\"ApiUrl\":\"/biz/user/edits\"}"
+ "ExtJson": "{\"ScopeCategory\":\"SCOPE_ALL\",\"ScopeDefineOrgIdList\":[],\"ApiUrl\":\"/biz/organization/user/import\"}"
},
{
- "Id": "395725362061402",
- "ObjectId": "359567292014661",
- "TargetId": "/biz/user/delete",
+ "Id": "622206493065330",
+ "ObjectId": "212725263001002",
+ "TargetId": "/biz/organization/user/export",
"Category": "SYS_ROLE_HAS_PERMISSION",
- "ExtJson": "{\"ScopeCategory\":\"SCOPE_ORG_CHILD\",\"ScopeDefineOrgIdList\":[],\"ApiUrl\":\"/biz/user/delete\"}"
+ "ExtJson": "{\"ScopeCategory\":\"SCOPE_ALL\",\"ScopeDefineOrgIdList\":[],\"ApiUrl\":\"/biz/organization/user/export\"}"
},
{
- "Id": "395725362061403",
- "ObjectId": "359567292014661",
- "TargetId": "/biz/user/disableUser",
+ "Id": "622206493065331",
+ "ObjectId": "212725263001002",
+ "TargetId": "/home/index/visLog/list",
"Category": "SYS_ROLE_HAS_PERMISSION",
- "ExtJson": "{\"ScopeCategory\":\"SCOPE_ORG_CHILD\",\"ScopeDefineOrgIdList\":[],\"ApiUrl\":\"/biz/user/disableUser\"}"
+ "ExtJson": "{\"ScopeCategory\":\"SCOPE_ALL\",\"ScopeDefineOrgIdList\":[],\"ApiUrl\":\"/home/index/visLog/list\"}"
},
{
- "Id": "395725362061404",
- "ObjectId": "359567292014661",
- "TargetId": "/biz/user/enableUser",
+ "Id": "622206493065332",
+ "ObjectId": "212725263001002",
+ "TargetId": "/home/index/opLog/list",
"Category": "SYS_ROLE_HAS_PERMISSION",
- "ExtJson": "{\"ScopeCategory\":\"SCOPE_ORG_CHILD\",\"ScopeDefineOrgIdList\":[],\"ApiUrl\":\"/biz/user/enableUser\"}"
+ "ExtJson": "{\"ScopeCategory\":\"SCOPE_ALL\",\"ScopeDefineOrgIdList\":[],\"ApiUrl\":\"/home/index/opLog/list\"}"
},
{
- "Id": "395725362061405",
- "ObjectId": "359567292014661",
- "TargetId": "/biz/user/resetPassword",
+ "Id": "622206493065333",
+ "ObjectId": "212725263001002",
+ "TargetId": "/home/index/message/list",
"Category": "SYS_ROLE_HAS_PERMISSION",
- "ExtJson": "{\"ScopeCategory\":\"SCOPE_ORG_CHILD\",\"ScopeDefineOrgIdList\":[],\"ApiUrl\":\"/biz/user/resetPassword\"}"
+ "ExtJson": "{\"ScopeCategory\":\"SCOPE_ALL\",\"ScopeDefineOrgIdList\":[],\"ApiUrl\":\"/home/index/message/list\"}"
},
{
- "Id": "395725362061406",
- "ObjectId": "359567292014661",
- "TargetId": "/biz/user/grantRole",
+ "Id": "622206493065334",
+ "ObjectId": "212725263001002",
+ "TargetId": "/home/index/schedule/list",
"Category": "SYS_ROLE_HAS_PERMISSION",
- "ExtJson": "{\"ScopeCategory\":\"SCOPE_ORG_CHILD\",\"ScopeDefineOrgIdList\":[],\"ApiUrl\":\"/biz/user/grantRole\"}"
+ "ExtJson": "{\"ScopeCategory\":\"SCOPE_ALL\",\"ScopeDefineOrgIdList\":[],\"ApiUrl\":\"/home/index/schedule/list\"}"
},
{
- "Id": "395725362061407",
- "ObjectId": "359567292014661",
- "TargetId": "/biz/user/import",
+ "Id": "622206493065335",
+ "ObjectId": "212725263001002",
+ "TargetId": "/home/index/schedule/add",
"Category": "SYS_ROLE_HAS_PERMISSION",
- "ExtJson": "{\"ScopeCategory\":\"SCOPE_ORG_CHILD\",\"ScopeDefineOrgIdList\":[],\"ApiUrl\":\"/biz/user/import\"}"
+ "ExtJson": "{\"ScopeCategory\":\"SCOPE_ALL\",\"ScopeDefineOrgIdList\":[],\"ApiUrl\":\"/home/index/schedule/add\"}"
},
{
- "Id": "395725362061408",
- "ObjectId": "359567292014661",
- "TargetId": "/biz/user/export",
+ "Id": "622206493065336",
+ "ObjectId": "212725263001002",
+ "TargetId": "/home/index/schedule/deleteSchedule",
"Category": "SYS_ROLE_HAS_PERMISSION",
- "ExtJson": "{\"ScopeCategory\":\"SCOPE_ORG_CHILD\",\"ScopeDefineOrgIdList\":[],\"ApiUrl\":\"/biz/user/export\"}"
+ "ExtJson": "{\"ScopeCategory\":\"SCOPE_ALL\",\"ScopeDefineOrgIdList\":[],\"ApiUrl\":\"/home/index/schedule/deleteSchedule\"}"
}
]
}
\ No newline at end of file
diff --git a/api/SimpleAdmin/SimpleAdmin.System/SeedData/Json/seed_sys_resource.json b/api/SimpleAdmin/SimpleAdmin.System/SeedData/Json/seed_sys_resource.json
index 8316c9bde1f9c86da2ab601bc2e604aff227b870..550fd6527406b8401d05b2149a220d730bbb384a 100644
--- a/api/SimpleAdmin/SimpleAdmin.System/SeedData/Json/seed_sys_resource.json
+++ b/api/SimpleAdmin/SimpleAdmin.System/SeedData/Json/seed_sys_resource.json
@@ -3,1089 +3,784 @@
{
"Id": "212725263003721",
"ParentId": "",
- "Title": "系统",
+ "Title": "系统管理",
"Name": "",
+ "Description": "管理平台的用户、权限、菜单等",
"Code": "system",
"Category": "MODULE",
"Module": "",
"MenuType": "",
"Path": "",
"Component": "",
- "Icon": "appstore-add-outlined",
- "Color": "#05a045",
+ "Icon": "ep:setting",
"SortCode": "1",
- "CreateTime": "2022-12-7 12:20:46.193",
- "UpdateTime": "",
+ "CreateTime": "2023-8-14 16:19:29.633",
+ "UpdateTime": "2024-7-23 09:09:41.823",
"CreateUserId": "",
- "UpdateUserId": "",
+ "UpdateUserId": "212725263002001",
"CreateUser": "",
- "UpdateUser": "",
+ "UpdateUser": "superAdmin",
"IsDelete": "0",
- "ExtJson": ""
+ "ExtJson": "",
+ "ActiveMenu": "",
+ "IsHide": "0",
+ "IsFull": "0",
+ "IsAffix": "0",
+ "IsKeepAlive": "0",
+ "IsHome": "0",
+ "Status": "ENABLE",
+ "IsLink": ""
},
{
"Id": "212725263003722",
"ParentId": "",
"Title": "系统首页",
"Name": "index",
+ "Description": "系统首页",
"Code": "system",
"Category": "SPA",
"Module": "",
"MenuType": "MENU",
- "Path": "/index",
- "Component": "index/index",
- "Icon": "home-outlined",
- "Color": "",
- "SortCode": "2",
- "CreateTime": "2022-12-7 12:20:46.197",
- "UpdateTime": "",
+ "Path": "/home/index",
+ "Component": "home/index",
+ "Icon": "ant-design:home-outlined",
+ "SortCode": "1",
+ "CreateTime": "2023-8-14 16:19:29.633",
+ "UpdateTime": "2024-7-23 09:09:41.823",
"CreateUserId": "",
- "UpdateUserId": "",
+ "UpdateUserId": "212725263002001",
"CreateUser": "",
- "UpdateUser": "",
+ "UpdateUser": "superAdmin",
"IsDelete": "0",
- "ExtJson": ""
+ "ExtJson": "",
+ "ActiveMenu": "",
+ "IsHide": "0",
+ "IsFull": "0",
+ "IsAffix": "1",
+ "IsKeepAlive": "0",
+ "IsHome": "1",
+ "Status": "ENABLE",
+ "IsLink": ""
},
{
"Id": "212725263003723",
"ParentId": "",
"Title": "个人中心",
"Name": "userCenter",
+ "Description": "个人中心",
"Code": "system",
"Category": "SPA",
"Module": "",
"MenuType": "MENU",
"Path": "/usercenter",
- "Component": "sys/user/userCenter",
- "Icon": "appstore-outlined",
- "Color": "",
- "SortCode": "3",
- "CreateTime": "2022-12-7 12:20:46.197",
- "UpdateTime": "",
+ "Component": "userCenter/index",
+ "Icon": "ep:user",
+ "SortCode": "99",
+ "CreateTime": "2023-8-14 16:19:29.637",
+ "UpdateTime": "2024-9-20 08:35:15.35",
"CreateUserId": "",
- "UpdateUserId": "",
+ "UpdateUserId": "212725263002001",
"CreateUser": "",
- "UpdateUser": "",
+ "UpdateUser": "superAdmin",
"IsDelete": "0",
- "ExtJson": ""
+ "ExtJson": "",
+ "ActiveMenu": "",
+ "IsHide": "1",
+ "IsFull": "0",
+ "IsAffix": "0",
+ "IsKeepAlive": "0",
+ "IsHome": "0",
+ "Status": "ENABLE",
+ "IsLink": ""
},
{
"Id": "212725263003724",
"ParentId": "0",
"Title": "组织架构",
"Name": "",
+ "Description": "",
"Code": "system",
"Category": "MENU",
"Module": "212725263003721",
"MenuType": "CATALOG",
- "Path": "/e4y8y7ib2p",
+ "Path": "/sys/organization",
"Component": "",
- "Icon": "apartment-outlined",
- "Color": "",
+ "Icon": "ep:office-building",
"SortCode": "4",
- "CreateTime": "2022-12-7 12:20:46.197",
- "UpdateTime": "",
+ "CreateTime": "2023-8-14 16:19:29.637",
+ "UpdateTime": "2024-7-23 09:09:41.823",
"CreateUserId": "",
- "UpdateUserId": "",
+ "UpdateUserId": "212725263002001",
"CreateUser": "",
- "UpdateUser": "",
+ "UpdateUser": "superAdmin",
"IsDelete": "0",
- "ExtJson": ""
+ "ExtJson": "",
+ "ActiveMenu": "",
+ "IsHide": "0",
+ "IsFull": "0",
+ "IsAffix": "0",
+ "IsKeepAlive": "0",
+ "IsHome": "0",
+ "Status": "ENABLE",
+ "IsLink": ""
},
{
"Id": "212725263003725",
"ParentId": "212725263003724",
"Title": "组织管理",
"Name": "sysOrg",
+ "Description": "",
"Code": "system",
"Category": "MENU",
"Module": "212725263003721",
"MenuType": "MENU",
- "Path": "/sys/org",
- "Component": "sys/org/index",
- "Icon": "cluster-outlined",
- "Color": "",
+ "Path": "/sys/organization/org",
+ "Component": "sys/organization/org/index",
+ "Icon": "ant-design:apartment-outlined",
"SortCode": "5",
- "CreateTime": "2022-12-7 12:20:46.197",
- "UpdateTime": "",
+ "CreateTime": "2023-8-14 16:19:29.637",
+ "UpdateTime": "2024-7-23 09:09:41.823",
"CreateUserId": "",
- "UpdateUserId": "",
+ "UpdateUserId": "212725263002001",
"CreateUser": "",
- "UpdateUser": "",
+ "UpdateUser": "superAdmin",
"IsDelete": "0",
- "ExtJson": ""
+ "ExtJson": "",
+ "ActiveMenu": "",
+ "IsHide": "0",
+ "IsFull": "0",
+ "IsAffix": "0",
+ "IsKeepAlive": "0",
+ "IsHome": "0",
+ "Status": "ENABLE",
+ "IsLink": ""
},
{
"Id": "212725263003726",
"ParentId": "212725263003724",
"Title": "用户管理",
"Name": "sysUser",
+ "Description": "",
"Code": "system",
"Category": "MENU",
"Module": "212725263003721",
"MenuType": "MENU",
- "Path": "/sys/user",
- "Component": "sys/user/index",
- "Icon": "user-outlined",
- "Color": "",
+ "Path": "/sys/organization/user",
+ "Component": "sys/organization/user/index",
+ "Icon": "eva:people-outline",
"SortCode": "6",
- "CreateTime": "2022-12-7 12:20:46.197",
- "UpdateTime": "",
+ "CreateTime": "2023-8-14 16:19:29.637",
+ "UpdateTime": "2024-7-23 09:09:41.823",
"CreateUserId": "",
- "UpdateUserId": "",
+ "UpdateUserId": "212725263002001",
"CreateUser": "",
- "UpdateUser": "",
+ "UpdateUser": "superAdmin",
"IsDelete": "0",
- "ExtJson": ""
+ "ExtJson": "",
+ "ActiveMenu": "",
+ "IsHide": "0",
+ "IsFull": "0",
+ "IsAffix": "0",
+ "IsKeepAlive": "0",
+ "IsHome": "0",
+ "Status": "ENABLE",
+ "IsLink": ""
},
{
"Id": "212725263003727",
"ParentId": "212725263003724",
"Title": "职位管理",
"Name": "sysPosition",
+ "Description": "",
"Code": "system",
"Category": "MENU",
"Module": "212725263003721",
"MenuType": "MENU",
- "Path": "/sys/position",
- "Component": "sys/position/index",
- "Icon": "apartment-outlined",
- "Color": "",
+ "Path": "/sys/organization/position",
+ "Component": "sys/organization/position/index",
+ "Icon": "ep:postcard",
"SortCode": "7",
- "CreateTime": "",
- "UpdateTime": "",
+ "CreateTime": "2023-8-14 16:19:29.637",
+ "UpdateTime": "2024-7-23 09:09:41.823",
"CreateUserId": "",
- "UpdateUserId": "",
+ "UpdateUserId": "212725263002001",
"CreateUser": "",
- "UpdateUser": "",
+ "UpdateUser": "superAdmin",
"IsDelete": "0",
- "ExtJson": ""
+ "ExtJson": "",
+ "ActiveMenu": "",
+ "IsHide": "0",
+ "IsFull": "0",
+ "IsAffix": "0",
+ "IsKeepAlive": "0",
+ "IsHome": "0",
+ "Status": "ENABLE",
+ "IsLink": ""
},
{
"Id": "212725263003728",
"ParentId": "0",
"Title": "权限管理",
"Name": "",
+ "Description": "",
"Code": "system",
"Category": "MENU",
"Module": "212725263003721",
"MenuType": "CATALOG",
- "Path": "/5k9uuuzafi",
+ "Path": "/sys/limit",
"Component": "",
- "Icon": "user-switch-outlined",
- "Color": "",
+ "Icon": "eva:shield-outline",
"SortCode": "8",
- "CreateTime": "2022-12-7 12:20:46.197",
- "UpdateTime": "",
+ "CreateTime": "2023-8-14 16:19:29.637",
+ "UpdateTime": "2024-7-23 09:09:41.823",
"CreateUserId": "",
- "UpdateUserId": "",
+ "UpdateUserId": "212725263002001",
"CreateUser": "",
- "UpdateUser": "",
+ "UpdateUser": "superAdmin",
"IsDelete": "0",
- "ExtJson": ""
+ "ExtJson": "",
+ "ActiveMenu": "",
+ "IsHide": "0",
+ "IsFull": "0",
+ "IsAffix": "0",
+ "IsKeepAlive": "0",
+ "IsHome": "0",
+ "Status": "ENABLE",
+ "IsLink": ""
},
{
"Id": "212725263003729",
"ParentId": "212725263003728",
"Title": "角色管理",
"Name": "sysRole",
+ "Description": "",
"Code": "system",
"Category": "MENU",
"Module": "212725263003721",
"MenuType": "MENU",
- "Path": "/sys/role",
- "Component": "sys/role/index",
- "Icon": "deployment-unit-outlined",
- "Color": "",
+ "Path": "/sys/limit/role",
+ "Component": "sys/limit/role/index",
+ "Icon": "ep:user",
"SortCode": "9",
- "CreateTime": "2022-12-7 12:20:46.197",
- "UpdateTime": "",
+ "CreateTime": "2023-8-14 16:19:29.637",
+ "UpdateTime": "2024-7-23 09:09:41.823",
"CreateUserId": "",
- "UpdateUserId": "",
+ "UpdateUserId": "212725263002001",
"CreateUser": "",
- "UpdateUser": "",
+ "UpdateUser": "superAdmin",
"IsDelete": "0",
- "ExtJson": ""
+ "ExtJson": "",
+ "ActiveMenu": "",
+ "IsHide": "0",
+ "IsFull": "0",
+ "IsAffix": "0",
+ "IsKeepAlive": "1",
+ "IsHome": "0",
+ "Status": "ENABLE",
+ "IsLink": ""
},
{
"Id": "212725263003730",
"ParentId": "212725263003728",
"Title": "模块管理",
"Name": "sysModule",
+ "Description": "",
"Code": "system",
"Category": "MENU",
"Module": "212725263003721",
"MenuType": "MENU",
- "Path": "/sys/module",
- "Component": "sys/resource/module/index",
- "Icon": "appstore-add-outlined",
- "Color": "",
+ "Path": "/sys/limit/module",
+ "Component": "sys/limit/module/index",
+ "Icon": "eva:grid-outline",
"SortCode": "10",
- "CreateTime": "2022-12-7 12:20:46.197",
- "UpdateTime": "",
+ "CreateTime": "2023-8-14 16:19:29.637",
+ "UpdateTime": "2024-7-23 09:09:41.823",
"CreateUserId": "",
- "UpdateUserId": "",
+ "UpdateUserId": "212725263002001",
"CreateUser": "",
- "UpdateUser": "",
+ "UpdateUser": "superAdmin",
"IsDelete": "0",
- "ExtJson": ""
+ "ExtJson": "",
+ "ActiveMenu": "",
+ "IsHide": "0",
+ "IsFull": "0",
+ "IsAffix": "0",
+ "IsKeepAlive": "1",
+ "IsHome": "0",
+ "Status": "ENABLE",
+ "IsLink": ""
},
{
"Id": "212725263003731",
"ParentId": "212725263003728",
"Title": "菜单管理",
"Name": "sysMenu",
+ "Description": "",
"Code": "system",
"Category": "MENU",
"Module": "212725263003721",
"MenuType": "MENU",
- "Path": "/sys/menu",
- "Component": "sys/resource/menu/index",
- "Icon": "pic-left-outlined",
- "Color": "",
+ "Path": "/sys/limit/menu",
+ "Component": "sys/limit/menu/index",
+ "Icon": "ep:menu",
"SortCode": "11",
- "CreateTime": "",
- "UpdateTime": "",
+ "CreateTime": "2023-8-14 16:19:29.637",
+ "UpdateTime": "2024-7-23 09:09:41.823",
"CreateUserId": "",
- "UpdateUserId": "",
+ "UpdateUserId": "212725263002001",
"CreateUser": "",
- "UpdateUser": "",
+ "UpdateUser": "superAdmin",
"IsDelete": "0",
- "ExtJson": ""
+ "ExtJson": "",
+ "ActiveMenu": "",
+ "IsHide": "0",
+ "IsFull": "0",
+ "IsAffix": "0",
+ "IsKeepAlive": "1",
+ "IsHome": "0",
+ "Status": "ENABLE",
+ "IsLink": ""
},
{
"Id": "212725263003732",
"ParentId": "212725263003728",
"Title": "单页管理",
"Name": "sysSpa",
+ "Description": "",
"Code": "system",
"Category": "MENU",
"Module": "212725263003721",
"MenuType": "MENU",
- "Path": "/sys/spa",
- "Component": "sys/resource/spa/index",
- "Icon": "pic-center-outlined",
- "Color": "",
+ "Path": "/sys/limit/spa",
+ "Component": "sys/limit/spa/index",
+ "Icon": "eva:book-open-outline",
"SortCode": "12",
- "CreateTime": "",
- "UpdateTime": "",
+ "CreateTime": "2023-8-14 16:19:29.637",
+ "UpdateTime": "2024-7-23 09:09:41.823",
"CreateUserId": "",
- "UpdateUserId": "",
+ "UpdateUserId": "212725263002001",
"CreateUser": "",
- "UpdateUser": "",
+ "UpdateUser": "superAdmin",
"IsDelete": "0",
- "ExtJson": ""
+ "ExtJson": "",
+ "ActiveMenu": "",
+ "IsHide": "0",
+ "IsFull": "0",
+ "IsAffix": "0",
+ "IsKeepAlive": "1",
+ "IsHome": "0",
+ "Status": "ENABLE",
+ "IsLink": ""
},
{
"Id": "212735263003733",
"ParentId": "0",
"Title": "基础工具",
"Name": "",
+ "Description": "",
"Code": "system",
"Category": "MENU",
"Module": "212725263003721",
"MenuType": "CATALOG",
- "Path": "/ozmlc6eyw5",
+ "Path": "/sys/dev",
"Component": "",
- "Icon": "tool-outlined",
- "Color": "",
+ "Icon": "ant-design:tool-outlined",
"SortCode": "13",
- "CreateTime": "2022-12-7 12:20:46.197",
- "UpdateTime": "",
+ "CreateTime": "2023-8-14 16:19:29.637",
+ "UpdateTime": "2024-11-11 08:42:34.04",
"CreateUserId": "",
- "UpdateUserId": "",
+ "UpdateUserId": "212725263002001",
"CreateUser": "",
- "UpdateUser": "",
+ "UpdateUser": "superAdmin",
"IsDelete": "0",
- "ExtJson": ""
+ "ExtJson": "",
+ "ActiveMenu": "",
+ "IsHide": "0",
+ "IsFull": "0",
+ "IsAffix": "0",
+ "IsKeepAlive": "0",
+ "IsHome": "0",
+ "Status": "ENABLE",
+ "IsLink": ""
},
{
"Id": "212735263003734",
"ParentId": "212735263003733",
"Title": "站内信息",
"Name": "devMessage",
+ "Description": "",
"Code": "system",
"Category": "MENU",
"Module": "212725263003721",
"MenuType": "MENU",
- "Path": "/dev/message/index",
- "Component": "dev/message/index",
- "Icon": "message-outlined",
- "Color": "",
+ "Path": "/sys/dev/message",
+ "Component": "sys/dev/message/index",
+ "Icon": "ep:message",
"SortCode": "14",
- "CreateTime": "",
- "UpdateTime": "",
+ "CreateTime": "2023-8-14 16:19:29.637",
+ "UpdateTime": "2024-11-11 08:43:10.76",
"CreateUserId": "",
- "UpdateUserId": "",
+ "UpdateUserId": "212725263002001",
"CreateUser": "",
- "UpdateUser": "",
+ "UpdateUser": "superAdmin",
"IsDelete": "0",
- "ExtJson": ""
+ "ExtJson": "",
+ "ActiveMenu": "",
+ "IsHide": "0",
+ "IsFull": "0",
+ "IsAffix": "0",
+ "IsKeepAlive": "0",
+ "IsHome": "0",
+ "Status": "ENABLE",
+ "IsLink": ""
},
{
"Id": "212745263003735",
"ParentId": "0",
"Title": "系统运维",
"Name": "",
+ "Description": "",
"Code": "system",
"Category": "MENU",
"Module": "212725263003721",
"MenuType": "CATALOG",
- "Path": "/a0l7fxfq3m",
+ "Path": "/sys/ops",
"Component": "",
- "Icon": "hdd-outlined",
- "Color": "",
+ "Icon": "zondicons:servers",
"SortCode": "15",
- "CreateTime": "2022-12-7 12:20:46.197",
- "UpdateTime": "",
+ "CreateTime": "2023-8-14 16:19:29.637",
+ "UpdateTime": "2024-7-23 09:09:41.823",
"CreateUserId": "",
- "UpdateUserId": "",
+ "UpdateUserId": "212725263002001",
"CreateUser": "",
- "UpdateUser": "",
+ "UpdateUser": "superAdmin",
"IsDelete": "0",
- "ExtJson": ""
+ "ExtJson": "",
+ "ActiveMenu": "",
+ "IsHide": "0",
+ "IsFull": "0",
+ "IsAffix": "0",
+ "IsKeepAlive": "0",
+ "IsHome": "0",
+ "Status": "ENABLE",
+ "IsLink": ""
},
{
"Id": "212745263003736",
"ParentId": "212745263003735",
"Title": "数据字典",
- "Name": "devDict",
+ "Name": "sysDict",
+ "Description": "",
"Code": "system",
"Category": "MENU",
"Module": "212725263003721",
"MenuType": "MENU",
- "Path": "/sys/dict",
- "Component": "dev/dict/index",
- "Icon": "file-search-outlined",
- "Color": "",
+ "Path": "/sys/ops/dict",
+ "Component": "sys/ops/dict/index",
+ "Icon": "ep:notebook",
"SortCode": "16",
- "CreateTime": "",
- "UpdateTime": "",
+ "CreateTime": "2023-8-14 16:19:29.637",
+ "UpdateTime": "2024-7-23 09:09:41.823",
"CreateUserId": "",
- "UpdateUserId": "",
+ "UpdateUserId": "212725263002001",
"CreateUser": "",
- "UpdateUser": "",
+ "UpdateUser": "superAdmin",
"IsDelete": "0",
- "ExtJson": ""
+ "ExtJson": "",
+ "ActiveMenu": "",
+ "IsHide": "0",
+ "IsFull": "0",
+ "IsAffix": "0",
+ "IsKeepAlive": "1",
+ "IsHome": "0",
+ "Status": "ENABLE",
+ "IsLink": ""
},
{
"Id": "212745263003737",
"ParentId": "212745263003735",
"Title": "系统配置",
- "Name": "devConfig",
+ "Name": "sysConfig",
+ "Description": "",
"Code": "system",
"Category": "MENU",
"Module": "212725263003721",
"MenuType": "MENU",
- "Path": "/sys/config",
- "Component": "dev/config/index",
- "Icon": "setting-outlined",
- "Color": "",
+ "Path": "/sys/ops/config",
+ "Component": "sys/ops/config/index",
+ "Icon": "eva:settings-2-outline",
"SortCode": "17",
- "CreateTime": "",
- "UpdateTime": "",
+ "CreateTime": "2023-8-14 16:19:29.637",
+ "UpdateTime": "2024-7-23 09:09:41.823",
"CreateUserId": "",
- "UpdateUserId": "",
+ "UpdateUserId": "212725263002001",
"CreateUser": "",
- "UpdateUser": "",
+ "UpdateUser": "superAdmin",
"IsDelete": "0",
- "ExtJson": ""
+ "ExtJson": "",
+ "ActiveMenu": "",
+ "IsHide": "0",
+ "IsFull": "0",
+ "IsAffix": "0",
+ "IsKeepAlive": "1",
+ "IsHome": "0",
+ "Status": "ENABLE",
+ "IsLink": ""
},
{
"Id": "212745263003738",
- "ParentId": "212745263003735",
+ "ParentId": "0",
"Title": "日志审计",
"Name": "",
+ "Description": "",
"Code": "system",
"Category": "MENU",
"Module": "212725263003721",
"MenuType": "CATALOG",
- "Path": "/x1vjuegii4",
+ "Path": "/sys/audit",
"Component": "",
- "Icon": "robot-outlined",
- "Color": "",
- "SortCode": "1",
- "CreateTime": "",
- "UpdateTime": "",
+ "Icon": "line-md:clipboard-list",
+ "SortCode": "14",
+ "CreateTime": "2023-8-14 16:19:29.637",
+ "UpdateTime": "2024-7-23 09:09:41.823",
"CreateUserId": "",
- "UpdateUserId": "",
+ "UpdateUserId": "212725263002001",
"CreateUser": "",
- "UpdateUser": "",
+ "UpdateUser": "superAdmin",
"IsDelete": "0",
- "ExtJson": ""
+ "ExtJson": "",
+ "ActiveMenu": "undefined/:id",
+ "IsHide": "0",
+ "IsFull": "0",
+ "IsAffix": "0",
+ "IsKeepAlive": "0",
+ "IsHome": "0",
+ "Status": "ENABLE",
+ "IsLink": ""
},
{
"Id": "212755263003739",
"ParentId": "212745263003738",
"Title": "访问日志",
- "Name": "devVislog",
+ "Name": "sysVisLog",
+ "Description": "",
"Code": "system",
"Category": "MENU",
"Module": "212725263003721",
"MenuType": "MENU",
- "Path": "/dev/vislog",
- "Component": "dev/log/vislog/index",
- "Icon": "bars-outlined",
- "Color": "",
+ "Path": "/sys/audit/vislog",
+ "Component": "sys/audit/vislog/index",
+ "Icon": "ant-design:read-outlined",
"SortCode": "18",
- "CreateTime": "",
- "UpdateTime": "",
+ "CreateTime": "2023-8-14 16:19:29.637",
+ "UpdateTime": "2024-7-23 09:09:41.823",
"CreateUserId": "",
- "UpdateUserId": "",
+ "UpdateUserId": "212725263002001",
"CreateUser": "",
- "UpdateUser": "",
+ "UpdateUser": "superAdmin",
"IsDelete": "0",
- "ExtJson": ""
+ "ExtJson": "",
+ "ActiveMenu": "",
+ "IsHide": "0",
+ "IsFull": "0",
+ "IsAffix": "0",
+ "IsKeepAlive": "1",
+ "IsHome": "0",
+ "Status": "ENABLE",
+ "IsLink": ""
},
{
"Id": "212755263003740",
"ParentId": "212745263003738",
"Title": "操作日志",
- "Name": "devOplog",
+ "Name": "sysOpLog",
+ "Description": "",
"Code": "system",
"Category": "MENU",
"Module": "212725263003721",
"MenuType": "MENU",
- "Path": "/dev/oplog",
- "Component": "dev/log/oplog/index",
- "Icon": "bars-outlined",
- "Color": "",
+ "Path": "/sys/audit/oplog",
+ "Component": "sys/audit/oplog/index",
+ "Icon": "ant-design:solution-outlined",
"SortCode": "19",
- "CreateTime": "",
- "UpdateTime": "",
+ "CreateTime": "2023-8-14 16:19:29.637",
+ "UpdateTime": "2024-7-23 09:09:41.827",
"CreateUserId": "",
- "UpdateUserId": "",
- "CreateUser": "",
- "UpdateUser": "",
- "IsDelete": "0",
- "ExtJson": ""
- },
- {
- "Id": "212755263003741",
- "ParentId": "0",
- "Title": "在线开发",
- "Name": "",
- "Code": "system",
- "Category": "MENU",
- "Module": "212725263003721",
- "MenuType": "CATALOG",
- "Path": "/94mcv3octp",
- "Component": "",
- "Icon": "project-outlined",
- "Color": "",
- "SortCode": "20",
- "CreateTime": "2022-12-7 12:20:46.197",
- "UpdateTime": "",
- "CreateUserId": "",
- "UpdateUserId": "",
- "CreateUser": "",
- "UpdateUser": "",
- "IsDelete": "0",
- "ExtJson": ""
- },
- {
- "Id": "212755263003742",
- "ParentId": "212755263003741",
- "Title": "代码生成",
- "Name": "genIndex",
- "Code": "system",
- "Category": "MENU",
- "Module": "212725263003721",
- "MenuType": "MENU",
- "Path": "/gen",
- "Component": "gen/index",
- "Icon": "rocket-outlined",
- "Color": "",
- "SortCode": "21",
- "CreateTime": "",
- "UpdateTime": "",
- "CreateUserId": "",
- "UpdateUserId": "",
+ "UpdateUserId": "212725263002001",
"CreateUser": "",
- "UpdateUser": "",
+ "UpdateUser": "superAdmin",
"IsDelete": "0",
- "ExtJson": ""
+ "ExtJson": "",
+ "ActiveMenu": "",
+ "IsHide": "0",
+ "IsFull": "0",
+ "IsAffix": "0",
+ "IsKeepAlive": "1",
+ "IsHome": "0",
+ "Status": "ENABLE",
+ "IsLink": ""
},
{
"Id": "212755263003743",
"ParentId": "",
- "Title": "业务",
+ "Title": "业务管理",
"Name": "",
- "Code": "system",
+ "Description": "用户自己的业务模块",
+ "Code": "biz",
"Category": "MODULE",
"Module": "",
"MenuType": "",
"Path": "",
"Component": "",
- "Icon": "profile-outlined",
- "Color": "#d81b43",
- "SortCode": "1",
- "CreateTime": "2022-12-7 12:20:46.197",
- "UpdateTime": "",
+ "Icon": "local:ikun",
+ "SortCode": "2",
+ "CreateTime": "2023-8-14 16:19:29.637",
+ "UpdateTime": "2024-7-23 09:09:41.827",
"CreateUserId": "",
- "UpdateUserId": "",
+ "UpdateUserId": "212725263002001",
"CreateUser": "",
- "UpdateUser": "",
+ "UpdateUser": "superAdmin",
"IsDelete": "0",
- "ExtJson": ""
+ "ExtJson": "",
+ "ActiveMenu": "",
+ "IsHide": "0",
+ "IsFull": "0",
+ "IsAffix": "0",
+ "IsKeepAlive": "0",
+ "IsHome": "0",
+ "Status": "ENABLE",
+ "IsLink": ""
},
{
"Id": "212755263003744",
"ParentId": "0",
"Title": "公司架构",
"Name": "",
+ "Description": "",
"Code": "system",
"Category": "MENU",
"Module": "212755263003743",
"MenuType": "CATALOG",
- "Path": "/1nlpdpnief",
+ "Path": "/biz/organization",
"Component": "",
- "Icon": "cluster-outlined",
- "Color": "",
+ "Icon": "ep:school",
"SortCode": "22",
- "CreateTime": "2022-12-7 12:20:46.197",
- "UpdateTime": "",
+ "CreateTime": "2023-8-14 16:19:29.637",
+ "UpdateTime": "2024-7-23 09:09:41.827",
"CreateUserId": "",
- "UpdateUserId": "",
+ "UpdateUserId": "212725263002001",
"CreateUser": "",
- "UpdateUser": "",
+ "UpdateUser": "superAdmin",
"IsDelete": "0",
- "ExtJson": ""
+ "ExtJson": "",
+ "ActiveMenu": "",
+ "IsHide": "0",
+ "IsFull": "0",
+ "IsAffix": "0",
+ "IsKeepAlive": "0",
+ "IsHome": "0",
+ "Status": "ENABLE",
+ "IsLink": ""
},
{
"Id": "212755263003745",
"ParentId": "212755263003744",
"Title": "机构管理",
"Name": "bizOrg",
+ "Description": "",
"Code": "system",
"Category": "MENU",
"Module": "212755263003743",
"MenuType": "MENU",
- "Path": "/biz/org",
- "Component": "biz/org/index",
- "Icon": "cluster-outlined",
- "Color": "",
+ "Path": "/biz/organization/org",
+ "Component": "biz/organization/org/index",
+ "Icon": "ant-design:group-outlined",
"SortCode": "23",
- "CreateTime": "2022-12-7 12:20:46.197",
- "UpdateTime": "",
+ "CreateTime": "2023-8-14 16:19:29.637",
+ "UpdateTime": "2024-7-23 09:09:41.827",
"CreateUserId": "",
- "UpdateUserId": "",
+ "UpdateUserId": "212725263002001",
"CreateUser": "",
- "UpdateUser": "",
+ "UpdateUser": "superAdmin",
"IsDelete": "0",
- "ExtJson": ""
+ "ExtJson": "",
+ "ActiveMenu": "",
+ "IsHide": "0",
+ "IsFull": "0",
+ "IsAffix": "0",
+ "IsKeepAlive": "0",
+ "IsHome": "0",
+ "Status": "ENABLE",
+ "IsLink": ""
},
{
"Id": "212755263003746",
"ParentId": "212755263003744",
"Title": "人员管理",
"Name": "bizUser",
+ "Description": "",
"Code": "system",
"Category": "MENU",
"Module": "212755263003743",
"MenuType": "MENU",
- "Path": "/biz/user",
- "Component": "biz/user/index",
- "Icon": "user-outlined",
- "Color": "",
+ "Path": "/biz/organization/user",
+ "Component": "biz/organization/user/index",
+ "Icon": "ep:user",
"SortCode": "24",
- "CreateTime": "2022-12-7 12:20:46.197",
- "UpdateTime": "",
+ "CreateTime": "2023-8-14 16:19:29.637",
+ "UpdateTime": "2024-7-23 09:09:41.827",
"CreateUserId": "",
- "UpdateUserId": "",
+ "UpdateUserId": "212725263002001",
"CreateUser": "",
- "UpdateUser": "",
+ "UpdateUser": "superAdmin",
"IsDelete": "0",
- "ExtJson": ""
+ "ExtJson": "",
+ "ActiveMenu": "",
+ "IsHide": "0",
+ "IsFull": "0",
+ "IsAffix": "0",
+ "IsKeepAlive": "0",
+ "IsHome": "0",
+ "Status": "ENABLE",
+ "IsLink": ""
},
{
"Id": "212755263003747",
"ParentId": "212755263003744",
"Title": "岗位管理",
"Name": "bizPosition",
+ "Description": "",
"Code": "system",
"Category": "MENU",
"Module": "212755263003743",
"MenuType": "MENU",
- "Path": "/biz/position",
- "Component": "biz/position/index",
- "Icon": "apartment-outlined",
- "Color": "",
+ "Path": "/biz/organization/position",
+ "Component": "biz/organization/position/index",
+ "Icon": "ant-design:idcard-outlined",
"SortCode": "25",
- "CreateTime": "",
- "UpdateTime": "",
- "CreateUserId": "",
- "UpdateUserId": "",
- "CreateUser": "",
- "UpdateUser": "",
- "IsDelete": "0",
- "ExtJson": ""
- },
- {
- "Id": "212755263003748",
- "ParentId": "0",
- "Title": "开发示例",
- "Name": "",
- "Code": "system",
- "Category": "MENU",
- "Module": "212725263003721",
- "MenuType": "CATALOG",
- "Path": "/e2re4evf5y",
- "Component": "",
- "Icon": "project-outlined",
- "Color": "",
- "SortCode": "20",
- "CreateTime": "2022-12-7 12:20:46.197",
- "UpdateTime": "",
- "CreateUserId": "",
- "UpdateUserId": "",
- "CreateUser": "",
- "UpdateUser": "",
- "IsDelete": "0",
- "ExtJson": ""
- },
- {
- "Id": "212755263003749",
- "ParentId": "212755263003748",
- "Title": "图标选择",
- "Name": "tuBiaoXuanZe",
- "Code": "system",
- "Category": "MENU",
- "Module": "212725263003721",
- "MenuType": "MENU",
- "Path": "/exm/iconSelect",
- "Component": "exm/iconSelect/index",
- "Icon": "right-circle-outlined",
- "Color": "",
- "SortCode": "43",
- "CreateTime": "",
- "UpdateTime": "2022-12-26 15:53:56.927",
+ "CreateTime": "2023-8-14 16:19:29.637",
+ "UpdateTime": "2024-7-23 09:09:41.827",
"CreateUserId": "",
"UpdateUserId": "212725263002001",
"CreateUser": "",
- "UpdateUser": "",
- "IsDelete": "0",
- "ExtJson": ""
- },
- {
- "Id": "212755263003750",
- "ParentId": "212755263003748",
- "Title": "ECK线图",
- "Name": "eCKXianTu",
- "Code": "7voetv0mru",
- "Category": "MENU",
- "Module": "212725263003721",
- "MenuType": "MENU",
- "Path": "/exm/chart/eCKXianTu",
- "Component": "exm/chart/eCYiBiaoTu",
- "Icon": "appstore-outlined",
- "Color": "",
- "SortCode": "44",
- "CreateTime": "",
- "UpdateTime": "",
- "CreateUserId": "",
- "UpdateUserId": "",
- "CreateUser": "",
- "UpdateUser": "",
- "IsDelete": "0",
- "ExtJson": ""
- },
- {
- "Id": "212755263003751",
- "ParentId": "212755263003748",
- "Title": "EC仪表图",
- "Name": "eCYiBiaoTu",
- "Code": "c4uor9wg1b",
- "Category": "MENU",
- "Module": "212725263003721",
- "MenuType": "MENU",
- "Path": "/exm/chart/eCYiBiaoTu",
- "Component": "exm/chart/eCSanDianTu",
- "Icon": "appstore-outlined",
- "Color": "",
- "SortCode": "45",
- "CreateTime": "",
- "UpdateTime": "",
- "CreateUserId": "",
- "UpdateUserId": "",
- "CreateUser": "",
- "UpdateUser": "",
- "IsDelete": "0",
- "ExtJson": ""
- },
- {
- "Id": "212755263003752",
- "ParentId": "212755263003748",
- "Title": "EC散点图",
- "Name": "eCSanDianTu",
- "Code": "6r6ti8izxi",
- "Category": "MENU",
- "Module": "212725263003721",
- "MenuType": "MENU",
- "Path": "/exm/chart/eCSanDianTu",
- "Component": "exm/chart/eCZhuZhuangTu",
- "Icon": "appstore-outlined",
- "Color": "",
- "SortCode": "46",
- "CreateTime": "",
- "UpdateTime": "",
- "CreateUserId": "",
- "UpdateUserId": "",
- "CreateUser": "",
- "UpdateUser": "",
- "IsDelete": "0",
- "ExtJson": ""
- },
- {
- "Id": "212755263003753",
- "ParentId": "212755263003748",
- "Title": "EC柱状图",
- "Name": "eCZhuZhuangTu",
- "Code": "s3ft1ri9qz",
- "Category": "MENU",
- "Module": "212725263003721",
- "MenuType": "MENU",
- "Path": "/exm/chart/eCZhuZhuangTu",
- "Component": "exm/chart/eCShuXingTu",
- "Icon": "appstore-outlined",
- "Color": "",
- "SortCode": "47",
- "CreateTime": "",
- "UpdateTime": "",
- "CreateUserId": "",
- "UpdateUserId": "",
- "CreateUser": "",
- "UpdateUser": "",
- "IsDelete": "0",
- "ExtJson": ""
- },
- {
- "Id": "212755263003754",
- "ParentId": "212755263003748",
- "Title": "EC树形图",
- "Name": "eCShuXingTu",
- "Code": "63lz6owubp",
- "Category": "MENU",
- "Module": "212725263003721",
- "MenuType": "MENU",
- "Path": "/exm/chart/eCShuXingTu",
- "Component": "exm/chart/eCLouDouTu",
- "Icon": "appstore-outlined",
- "Color": "",
- "SortCode": "48",
- "CreateTime": "",
- "UpdateTime": "",
- "CreateUserId": "",
- "UpdateUserId": "",
- "CreateUser": "",
- "UpdateUser": "",
- "IsDelete": "0",
- "ExtJson": ""
- },
- {
- "Id": "212755263003755",
- "ParentId": "212755263003748",
- "Title": "EC漏斗图",
- "Name": "eCLouDouTu",
- "Code": "d46vov3j2d",
- "Category": "MENU",
- "Module": "212725263003721",
- "MenuType": "MENU",
- "Path": "/exm/chart/eCLouDouTu",
- "Component": "exm/chart/eCXianXingTu",
- "Icon": "appstore-outlined",
- "Color": "",
- "SortCode": "49",
- "CreateTime": "",
- "UpdateTime": "",
- "CreateUserId": "",
- "UpdateUserId": "",
- "CreateUser": "",
- "UpdateUser": "",
- "IsDelete": "0",
- "ExtJson": ""
- },
- {
- "Id": "212755263003756",
- "ParentId": "212755263003748",
- "Title": "EC线形图",
- "Name": "eCXianXingTu",
- "Code": "dgp8hclhlr",
- "Category": "MENU",
- "Module": "212725263003721",
- "MenuType": "MENU",
- "Path": "/exm/chart/eCXianXingTu",
- "Component": "exm/chart/eCBingZhuangTu",
- "Icon": "appstore-outlined",
- "Color": "",
- "SortCode": "50",
- "CreateTime": "",
- "UpdateTime": "",
- "CreateUserId": "",
- "UpdateUserId": "",
- "CreateUser": "",
- "UpdateUser": "",
- "IsDelete": "0",
- "ExtJson": ""
- },
- {
- "Id": "212755263003757",
- "ParentId": "212755263003748",
- "Title": "EC饼状图",
- "Name": "eCBingZhuangTu",
- "Code": "2y1g7u2p1k",
- "Category": "MENU",
- "Module": "212725263003721",
- "MenuType": "MENU",
- "Path": "/exm/chart/eCBingZhuangTu",
- "Component": "exm/chart/g2JinDuTu",
- "Icon": "appstore-outlined",
- "Color": "",
- "SortCode": "51",
- "CreateTime": "",
- "UpdateTime": "",
- "CreateUserId": "",
- "UpdateUserId": "",
- "CreateUser": "",
- "UpdateUser": "",
+ "UpdateUser": "superAdmin",
"IsDelete": "0",
- "ExtJson": ""
- },
- {
- "Id": "212755263003758",
- "ParentId": "212755263003748",
- "Title": "G2进度图",
- "Name": "g2JinDuTu",
- "Code": "8vvhyctv2w",
- "Category": "MENU",
- "Module": "212725263003721",
- "MenuType": "MENU",
- "Path": "/exm/chart/g2JinDuTu",
- "Component": "exm/chart/g2ZiDanTu",
- "Icon": "appstore-outlined",
- "Color": "",
- "SortCode": "52",
- "CreateTime": "",
- "UpdateTime": "",
- "CreateUserId": "",
- "UpdateUserId": "",
- "CreateUser": "",
- "UpdateUser": "",
- "IsDelete": "0",
- "ExtJson": ""
- },
- {
- "Id": "212755263003759",
- "ParentId": "212755263003748",
- "Title": "G2子弹图",
- "Name": "g2ZiDanTu",
- "Code": "3lgc3ci5f3",
- "Category": "MENU",
- "Module": "212725263003721",
- "MenuType": "MENU",
- "Path": "/exm/chart/g2ZiDanTu",
- "Component": "exm/chart/g2SanDianTu",
- "Icon": "appstore-outlined",
- "Color": "",
- "SortCode": "53",
- "CreateTime": "",
- "UpdateTime": "",
- "CreateUserId": "",
- "UpdateUserId": "",
- "CreateUser": "",
- "UpdateUser": "",
- "IsDelete": "0",
- "ExtJson": ""
- },
- {
- "Id": "212755263003760",
- "ParentId": "212755263003748",
- "Title": "G2散点图",
- "Name": "g2SanDianTu",
- "Code": "e22qm4b30d",
- "Category": "MENU",
- "Module": "212725263003721",
- "MenuType": "MENU",
- "Path": "/exm/chart/g2SanDianTu",
- "Component": "exm/chart/g2ZhuZhuangTu",
- "Icon": "appstore-outlined",
- "Color": "",
- "SortCode": "54",
- "CreateTime": "",
- "UpdateTime": "",
- "CreateUserId": "",
- "UpdateUserId": "",
- "CreateUser": "",
- "UpdateUser": "",
- "IsDelete": "0",
- "ExtJson": ""
- },
- {
- "Id": "212755263003761",
- "ParentId": "212755263003748",
- "Title": "G2柱状图",
- "Name": "g2ZhuZhuangTu",
- "Code": "92huf33fcf",
- "Category": "MENU",
- "Module": "212725263003721",
- "MenuType": "MENU",
- "Path": "/exm/chart/g2ZhuZhuangTu",
- "Component": "exm/chart/g2LouDouTu",
- "Icon": "appstore-outlined",
- "Color": "",
- "SortCode": "55",
- "CreateTime": "",
- "UpdateTime": "",
- "CreateUserId": "",
- "UpdateUserId": "",
- "CreateUser": "",
- "UpdateUser": "",
- "IsDelete": "0",
- "ExtJson": ""
- },
- {
- "Id": "212755263003762",
- "ParentId": "212755263003748",
- "Title": "G2漏斗图",
- "Name": "g2LouDouTu",
- "Code": "7w3gnlts80",
- "Category": "MENU",
- "Module": "212725263003721",
- "MenuType": "MENU",
- "Path": "/exm/chart/g2LouDouTu",
- "Component": "exm/chart/g2ZheXianTu",
- "Icon": "appstore-outlined",
- "Color": "",
- "SortCode": "56",
- "CreateTime": "",
- "UpdateTime": "",
- "CreateUserId": "",
- "UpdateUserId": "",
- "CreateUser": "",
- "UpdateUser": "",
- "IsDelete": "0",
- "ExtJson": ""
- },
- {
- "Id": "212755263003763",
- "ParentId": "212755263003748",
- "Title": "G2折线图",
- "Name": "g2ZheXianTu",
- "Code": "4g3gr90z1i",
- "Category": "MENU",
- "Module": "212725263003721",
- "MenuType": "MENU",
- "Path": "/exm/chart/g2ZheXianTu",
- "Component": "exm/chart/g2CiYunTu",
- "Icon": "appstore-outlined",
- "Color": "",
- "SortCode": "57",
- "CreateTime": "",
- "UpdateTime": "",
- "CreateUserId": "",
- "UpdateUserId": "",
- "CreateUser": "",
- "UpdateUser": "",
- "IsDelete": "0",
- "ExtJson": ""
- },
- {
- "Id": "212755263003764",
- "ParentId": "212755263003748",
- "Title": "G2词云图",
- "Name": "g2CiYunTu",
- "Code": "atpbicf8em",
- "Category": "MENU",
- "Module": "212725263003721",
- "MenuType": "MENU",
- "Path": "/exm/chart/g2CiYunTu",
- "Component": "exm/chart/g2MianJiTu",
- "Icon": "appstore-outlined",
- "Color": "",
- "SortCode": "58",
- "CreateTime": "",
- "UpdateTime": "",
- "CreateUserId": "",
- "UpdateUserId": "",
- "CreateUser": "",
- "UpdateUser": "",
- "IsDelete": "0",
- "ExtJson": ""
- },
- {
- "Id": "212755263003765",
- "ParentId": "212755263003748",
- "Title": "G2面积图",
- "Name": "g2MianJiTu",
- "Code": "m5lnxo3d56",
- "Category": "MENU",
- "Module": "212725263003721",
- "MenuType": "MENU",
- "Path": "/exm/chart/g2MianJiTu",
- "Component": "exm/chart/g2BingZhuangTu",
- "Icon": "appstore-outlined",
- "Color": "",
- "SortCode": "59",
- "CreateTime": "",
- "UpdateTime": "",
- "CreateUserId": "",
- "UpdateUserId": "",
- "CreateUser": "",
- "UpdateUser": "",
- "IsDelete": "0",
- "ExtJson": ""
- },
- {
- "Id": "212755263003766",
- "ParentId": "212755263003748",
- "Title": "G2饼状图",
- "Name": "g2BingZhuangTu",
- "Code": "tmn482a18x",
- "Category": "MENU",
- "Module": "212725263003721",
- "MenuType": "MENU",
- "Path": "/exm/chart/g2BingZhuangTu",
- "Component": "exm/chart/g2TiaoXingTu",
- "Icon": "appstore-outlined",
- "Color": "",
- "SortCode": "60",
- "CreateTime": "",
- "UpdateTime": "",
- "CreateUserId": "",
- "UpdateUserId": "",
- "CreateUser": "",
- "UpdateUser": "",
- "IsDelete": "0",
- "ExtJson": ""
- },
- {
- "Id": "212755263003767",
- "ParentId": "212755263003748",
- "Title": "G2条形图",
- "Name": "g2TiaoXingTu",
- "Code": "aej0gwpe43",
- "Category": "MENU",
- "Module": "212725263003721",
- "MenuType": "MENU",
- "Path": "/exm/chart/g2TiaoXingTu",
- "Component": "",
- "Icon": "appstore-outlined",
- "Color": "",
- "SortCode": "61",
- "CreateTime": "",
- "UpdateTime": "",
- "CreateUserId": "",
- "UpdateUserId": "",
- "CreateUser": "",
- "UpdateUser": "",
- "IsDelete": "0",
- "ExtJson": ""
+ "ExtJson": "",
+ "ActiveMenu": "",
+ "IsHide": "0",
+ "IsFull": "0",
+ "IsAffix": "0",
+ "IsKeepAlive": "0",
+ "IsHome": "0",
+ "Status": "ENABLE",
+ "IsLink": ""
},
{
"Id": "212825263004728",
"ParentId": "212755263003745",
"Title": "新增机构",
"Name": "",
+ "Description": "",
"Code": "bizOrgAdd",
"Category": "BUTTON",
"Module": "",
@@ -1093,22 +788,30 @@
"Path": "",
"Component": "",
"Icon": "",
- "Color": "",
"SortCode": "1",
- "CreateTime": "2022-12-7 12:20:46.197",
- "UpdateTime": "",
+ "CreateTime": "2023-8-14 16:19:29.637",
+ "UpdateTime": "2024-7-23 09:09:41.827",
"CreateUserId": "",
"UpdateUserId": "",
"CreateUser": "",
"UpdateUser": "",
"IsDelete": "0",
- "ExtJson": ""
+ "ExtJson": "",
+ "ActiveMenu": "",
+ "IsHide": "0",
+ "IsFull": "0",
+ "IsAffix": "0",
+ "IsKeepAlive": "0",
+ "IsHome": "0",
+ "Status": "ENABLE",
+ "IsLink": ""
},
{
"Id": "212825263004729",
"ParentId": "212755263003745",
"Title": "查询机构",
"Name": "",
+ "Description": "",
"Code": "bizOrgPage",
"Category": "BUTTON",
"Module": "",
@@ -1116,22 +819,30 @@
"Path": "",
"Component": "",
"Icon": "",
- "Color": "",
"SortCode": "1",
- "CreateTime": "2022-12-7 12:20:46.197",
- "UpdateTime": "",
+ "CreateTime": "2023-8-14 16:19:29.637",
+ "UpdateTime": "2024-7-23 09:09:41.827",
"CreateUserId": "",
"UpdateUserId": "",
"CreateUser": "",
"UpdateUser": "",
"IsDelete": "0",
- "ExtJson": ""
+ "ExtJson": "",
+ "ActiveMenu": "",
+ "IsHide": "0",
+ "IsFull": "0",
+ "IsAffix": "0",
+ "IsKeepAlive": "0",
+ "IsHome": "0",
+ "Status": "ENABLE",
+ "IsLink": ""
},
{
"Id": "212825263004730",
"ParentId": "212755263003745",
"Title": "编辑机构",
"Name": "",
+ "Description": "",
"Code": "bizOrgEdit",
"Category": "BUTTON",
"Module": "",
@@ -1139,22 +850,30 @@
"Path": "",
"Component": "",
"Icon": "",
- "Color": "",
"SortCode": "1",
- "CreateTime": "2022-12-7 12:20:46.197",
- "UpdateTime": "",
+ "CreateTime": "2023-8-14 16:19:29.637",
+ "UpdateTime": "2024-7-23 09:09:41.827",
"CreateUserId": "",
"UpdateUserId": "",
"CreateUser": "",
"UpdateUser": "",
"IsDelete": "0",
- "ExtJson": ""
+ "ExtJson": "",
+ "ActiveMenu": "",
+ "IsHide": "0",
+ "IsFull": "0",
+ "IsAffix": "0",
+ "IsKeepAlive": "0",
+ "IsHome": "0",
+ "Status": "ENABLE",
+ "IsLink": ""
},
{
"Id": "212825263004731",
"ParentId": "212755263003745",
"Title": "删除机构",
"Name": "",
+ "Description": "",
"Code": "bizOrgDelete",
"Category": "BUTTON",
"Module": "",
@@ -1162,22 +881,30 @@
"Path": "",
"Component": "",
"Icon": "",
- "Color": "",
"SortCode": "1",
- "CreateTime": "2022-12-7 12:20:46.197",
- "UpdateTime": "",
+ "CreateTime": "2023-8-14 16:19:29.637",
+ "UpdateTime": "2024-7-23 09:09:41.827",
"CreateUserId": "",
"UpdateUserId": "",
"CreateUser": "",
"UpdateUser": "",
"IsDelete": "0",
- "ExtJson": ""
+ "ExtJson": "",
+ "ActiveMenu": "",
+ "IsHide": "0",
+ "IsFull": "0",
+ "IsAffix": "0",
+ "IsKeepAlive": "0",
+ "IsHome": "0",
+ "Status": "ENABLE",
+ "IsLink": ""
},
{
"Id": "212825263005734",
"ParentId": "212755263003746",
"Title": "新增人员",
"Name": "",
+ "Description": "",
"Code": "bizUserAdd",
"Category": "BUTTON",
"Module": "",
@@ -1185,22 +912,30 @@
"Path": "",
"Component": "",
"Icon": "",
- "Color": "",
"SortCode": "1",
- "CreateTime": "2022-12-7 12:20:46.197",
- "UpdateTime": "",
+ "CreateTime": "2023-8-14 16:19:29.637",
+ "UpdateTime": "2024-7-23 09:09:41.827",
"CreateUserId": "",
"UpdateUserId": "",
"CreateUser": "",
"UpdateUser": "",
"IsDelete": "0",
- "ExtJson": ""
+ "ExtJson": "",
+ "ActiveMenu": "",
+ "IsHide": "0",
+ "IsFull": "0",
+ "IsAffix": "0",
+ "IsKeepAlive": "0",
+ "IsHome": "0",
+ "Status": "ENABLE",
+ "IsLink": ""
},
{
"Id": "212825263005735",
"ParentId": "212755263003746",
"Title": "批量删除",
"Name": "",
+ "Description": "",
"Code": "bizUserBatchDelete",
"Category": "BUTTON",
"Module": "",
@@ -1208,22 +943,30 @@
"Path": "",
"Component": "",
"Icon": "",
- "Color": "",
"SortCode": "1",
- "CreateTime": "2022-12-7 12:20:46.197",
- "UpdateTime": "",
+ "CreateTime": "2023-8-14 16:19:29.637",
+ "UpdateTime": "2024-7-23 09:09:41.827",
"CreateUserId": "",
"UpdateUserId": "",
"CreateUser": "",
"UpdateUser": "",
"IsDelete": "0",
- "ExtJson": ""
+ "ExtJson": "",
+ "ActiveMenu": "",
+ "IsHide": "0",
+ "IsFull": "0",
+ "IsAffix": "0",
+ "IsKeepAlive": "0",
+ "IsHome": "0",
+ "Status": "ENABLE",
+ "IsLink": ""
},
{
"Id": "212825263005736",
"ParentId": "212755263003746",
"Title": "编辑人员",
"Name": "",
+ "Description": "",
"Code": "bizUserEdit",
"Category": "BUTTON",
"Module": "",
@@ -1231,22 +974,30 @@
"Path": "",
"Component": "",
"Icon": "",
- "Color": "",
"SortCode": "1",
- "CreateTime": "2022-12-7 12:20:46.197",
- "UpdateTime": "",
+ "CreateTime": "2023-8-14 16:19:29.637",
+ "UpdateTime": "2024-7-23 09:09:41.827",
"CreateUserId": "",
"UpdateUserId": "",
"CreateUser": "",
"UpdateUser": "",
"IsDelete": "0",
- "ExtJson": ""
+ "ExtJson": "",
+ "ActiveMenu": "",
+ "IsHide": "0",
+ "IsFull": "0",
+ "IsAffix": "0",
+ "IsKeepAlive": "0",
+ "IsHome": "0",
+ "Status": "ENABLE",
+ "IsLink": ""
},
{
"Id": "212825263005737",
"ParentId": "212755263003746",
"Title": "授权角色",
"Name": "",
+ "Description": "",
"Code": "bizUserGrantRole",
"Category": "BUTTON",
"Module": "",
@@ -1254,22 +1005,30 @@
"Path": "",
"Component": "",
"Icon": "",
- "Color": "",
"SortCode": "1",
- "CreateTime": "2022-12-7 12:20:46.197",
- "UpdateTime": "",
+ "CreateTime": "2023-8-14 16:19:29.637",
+ "UpdateTime": "2024-7-23 09:09:41.827",
"CreateUserId": "",
"UpdateUserId": "",
"CreateUser": "",
"UpdateUser": "",
"IsDelete": "0",
- "ExtJson": ""
+ "ExtJson": "",
+ "ActiveMenu": "",
+ "IsHide": "0",
+ "IsFull": "0",
+ "IsAffix": "0",
+ "IsKeepAlive": "0",
+ "IsHome": "0",
+ "Status": "ENABLE",
+ "IsLink": ""
},
{
"Id": "212825263005738",
"ParentId": "212755263003746",
"Title": "重置密码",
"Name": "",
+ "Description": "",
"Code": "bizUserPwdReset",
"Category": "BUTTON",
"Module": "",
@@ -1277,22 +1036,30 @@
"Path": "",
"Component": "",
"Icon": "",
- "Color": "",
"SortCode": "1",
- "CreateTime": "2022-12-7 12:20:46.197",
- "UpdateTime": "",
+ "CreateTime": "2023-8-14 16:19:29.637",
+ "UpdateTime": "2024-7-23 09:09:41.827",
"CreateUserId": "",
"UpdateUserId": "",
"CreateUser": "",
"UpdateUser": "",
"IsDelete": "0",
- "ExtJson": ""
+ "ExtJson": "",
+ "ActiveMenu": "",
+ "IsHide": "0",
+ "IsFull": "0",
+ "IsAffix": "0",
+ "IsKeepAlive": "0",
+ "IsHome": "0",
+ "Status": "ENABLE",
+ "IsLink": ""
},
{
"Id": "212825263005739",
"ParentId": "212755263003746",
"Title": "删除人员",
"Name": "",
+ "Description": "",
"Code": "bizUserDelete",
"Category": "BUTTON",
"Module": "",
@@ -1300,45 +1067,61 @@
"Path": "",
"Component": "",
"Icon": "",
- "Color": "",
"SortCode": "1",
- "CreateTime": "2022-12-7 12:20:46.197",
- "UpdateTime": "",
+ "CreateTime": "2023-8-14 16:19:29.637",
+ "UpdateTime": "2024-7-23 09:09:41.827",
"CreateUserId": "",
"UpdateUserId": "",
"CreateUser": "",
"UpdateUser": "",
"IsDelete": "0",
- "ExtJson": ""
+ "ExtJson": "",
+ "ActiveMenu": "",
+ "IsHide": "0",
+ "IsFull": "0",
+ "IsAffix": "0",
+ "IsKeepAlive": "0",
+ "IsHome": "0",
+ "Status": "ENABLE",
+ "IsLink": ""
},
{
"Id": "212825263005740",
"ParentId": "212755263003746",
"Title": "启用禁用",
"Name": "",
- "Code": "bizUserUpdataStatus",
+ "Description": "",
+ "Code": "bizUserUpdateStatus",
"Category": "BUTTON",
"Module": "",
"MenuType": "",
"Path": "",
"Component": "",
"Icon": "",
- "Color": "",
"SortCode": "1",
- "CreateTime": "2022-12-7 12:20:46.197",
- "UpdateTime": "",
+ "CreateTime": "2023-8-14 16:19:29.637",
+ "UpdateTime": "2024-7-23 09:09:41.827",
"CreateUserId": "",
"UpdateUserId": "",
"CreateUser": "",
"UpdateUser": "",
"IsDelete": "0",
- "ExtJson": ""
+ "ExtJson": "",
+ "ActiveMenu": "",
+ "IsHide": "0",
+ "IsFull": "0",
+ "IsAffix": "0",
+ "IsKeepAlive": "0",
+ "IsHome": "0",
+ "Status": "ENABLE",
+ "IsLink": ""
},
{
"Id": "212825263006739",
"ParentId": "212755263003747",
"Title": "新增岗位",
"Name": "",
+ "Description": "",
"Code": "bizPositionAdd",
"Category": "BUTTON",
"Module": "",
@@ -1346,22 +1129,30 @@
"Path": "",
"Component": "",
"Icon": "",
- "Color": "",
"SortCode": "1",
- "CreateTime": "2022-12-7 12:20:46.197",
- "UpdateTime": "",
+ "CreateTime": "2023-8-14 16:19:29.637",
+ "UpdateTime": "2024-7-23 09:09:41.827",
"CreateUserId": "",
"UpdateUserId": "",
"CreateUser": "",
"UpdateUser": "",
"IsDelete": "0",
- "ExtJson": ""
+ "ExtJson": "",
+ "ActiveMenu": "",
+ "IsHide": "0",
+ "IsFull": "0",
+ "IsAffix": "0",
+ "IsKeepAlive": "0",
+ "IsHome": "0",
+ "Status": "ENABLE",
+ "IsLink": ""
},
{
"Id": "212825263006749",
"ParentId": "212755263003747",
"Title": "批量删除",
"Name": "",
+ "Description": "",
"Code": "bizPositionBatchDelete",
"Category": "BUTTON",
"Module": "",
@@ -1369,22 +1160,30 @@
"Path": "",
"Component": "",
"Icon": "",
- "Color": "",
"SortCode": "1",
- "CreateTime": "2022-12-7 12:20:46.197",
- "UpdateTime": "",
+ "CreateTime": "2023-8-14 16:19:29.637",
+ "UpdateTime": "2024-7-23 09:09:41.827",
"CreateUserId": "",
"UpdateUserId": "",
"CreateUser": "",
"UpdateUser": "",
"IsDelete": "0",
- "ExtJson": ""
+ "ExtJson": "",
+ "ActiveMenu": "",
+ "IsHide": "0",
+ "IsFull": "0",
+ "IsAffix": "0",
+ "IsKeepAlive": "0",
+ "IsHome": "0",
+ "Status": "ENABLE",
+ "IsLink": ""
},
{
"Id": "212825263006750",
"ParentId": "212755263003747",
"Title": "编辑岗位",
"Name": "",
+ "Description": "",
"Code": "bizPositionEdit",
"Category": "BUTTON",
"Module": "",
@@ -1392,22 +1191,30 @@
"Path": "",
"Component": "",
"Icon": "",
- "Color": "",
"SortCode": "1",
- "CreateTime": "2022-12-7 12:20:46.197",
- "UpdateTime": "",
+ "CreateTime": "2023-8-14 16:19:29.637",
+ "UpdateTime": "2024-7-23 09:09:41.827",
"CreateUserId": "",
"UpdateUserId": "",
"CreateUser": "",
"UpdateUser": "",
"IsDelete": "0",
- "ExtJson": ""
+ "ExtJson": "",
+ "ActiveMenu": "",
+ "IsHide": "0",
+ "IsFull": "0",
+ "IsAffix": "0",
+ "IsKeepAlive": "0",
+ "IsHome": "0",
+ "Status": "ENABLE",
+ "IsLink": ""
},
{
"Id": "212825263006751",
"ParentId": "212755263003747",
"Title": "删除岗位",
"Name": "",
+ "Description": "",
"Code": "bizPositionDelete",
"Category": "BUTTON",
"Module": "",
@@ -1415,114 +1222,92 @@
"Path": "",
"Component": "",
"Icon": "",
- "Color": "",
"SortCode": "1",
- "CreateTime": "2022-12-7 12:20:46.197",
- "UpdateTime": "",
+ "CreateTime": "2023-8-14 16:19:29.637",
+ "UpdateTime": "2024-7-23 09:09:41.827",
"CreateUserId": "",
"UpdateUserId": "",
"CreateUser": "",
"UpdateUser": "",
"IsDelete": "0",
- "ExtJson": ""
- },
- {
- "Id": "363532005732421",
- "ParentId": "212745263003735",
- "Title": "接口文档",
- "Name": "7008338600685211648",
- "Code": "",
- "Category": "MENU",
- "Module": "212725263003721",
- "MenuType": "IFRAME",
- "Path": "https://console-docs.apipost.cn/preview/1e7bca3db35bd13a/6d6e3ad27d4721de",
- "Component": "",
- "Icon": "file-word-outlined",
- "Color": "",
- "SortCode": "99",
- "CreateTime": "2022-12-13 15:55:33.107",
- "UpdateTime": "",
- "CreateUserId": "212725263002001",
- "UpdateUserId": "",
- "CreateUser": "",
- "UpdateUser": "",
- "IsDelete": "0",
- "ExtJson": ""
+ "ExtJson": "",
+ "ActiveMenu": "",
+ "IsHide": "0",
+ "IsFull": "0",
+ "IsAffix": "0",
+ "IsKeepAlive": "0",
+ "IsHome": "0",
+ "Status": "ENABLE",
+ "IsLink": ""
},
{
"Id": "363798244282437",
"ParentId": "212745263003735",
"Title": "会话管理",
"Name": "authMonitor",
+ "Description": "",
"Code": "",
"Category": "MENU",
"Module": "212725263003721",
"MenuType": "MENU",
- "Path": "/auth/monitor",
- "Component": "auth/monitor/index",
- "Icon": "usergroup-delete-outlined",
- "Color": "",
+ "Path": "/sys/ops/monitor",
+ "Component": "sys/ops/monitor/index",
+ "Icon": "ep:refrigerator",
"SortCode": "23",
- "CreateTime": "2022-12-14 09:58:52.753",
- "UpdateTime": "",
+ "CreateTime": "2023-8-14 16:19:29.637",
+ "UpdateTime": "2024-9-24 10:56:44.767",
"CreateUserId": "212725263002001",
- "UpdateUserId": "",
+ "UpdateUserId": "212725263002001",
"CreateUser": "",
- "UpdateUser": "",
+ "UpdateUser": "superAdmin",
"IsDelete": "0",
- "ExtJson": ""
+ "ExtJson": "",
+ "ActiveMenu": "",
+ "IsHide": "0",
+ "IsFull": "0",
+ "IsAffix": "0",
+ "IsKeepAlive": "1",
+ "IsHome": "0",
+ "Status": "ENABLE",
+ "IsLink": ""
},
{
"Id": "369089951367237",
"ParentId": "212735263003733",
"Title": "文件管理",
"Name": "devFile",
+ "Description": "",
"Code": "",
"Category": "MENU",
"Module": "212725263003721",
"MenuType": "MENU",
"Path": "/dev/file/index",
"Component": "dev/file/index",
- "Icon": "copy-outlined",
- "Color": "",
+ "Icon": "ep:home-filled",
"SortCode": "99",
- "CreateTime": "2022-12-29 08:50:53.427",
- "UpdateTime": "",
+ "CreateTime": "2023-8-14 16:19:29.637",
+ "UpdateTime": "2024-7-23 09:09:41.827",
"CreateUserId": "212725263002001",
"UpdateUserId": "",
"CreateUser": "",
"UpdateUser": "",
"IsDelete": "0",
- "ExtJson": ""
- },
- {
- "Id": "371662120710213",
- "ParentId": "212745263003735",
- "Title": "任务调度",
- "Name": "7016663846832050176",
- "Code": "",
- "Category": "MENU",
- "Module": "212725263003721",
- "MenuType": "IFRAME",
- "Path": "http://localhost:5566/schedule/",
- "Component": "",
- "Icon": "field-time-outlined",
- "Color": "",
- "SortCode": "99",
- "CreateTime": "2023-1-5 15:17:04.46",
- "UpdateTime": "",
- "CreateUserId": "212725263002001",
- "UpdateUserId": "",
- "CreateUser": "",
- "UpdateUser": "",
- "IsDelete": "0",
- "ExtJson": ""
+ "ExtJson": "",
+ "ActiveMenu": "",
+ "IsHide": "0",
+ "IsFull": "0",
+ "IsAffix": "0",
+ "IsKeepAlive": "0",
+ "IsHome": "0",
+ "Status": "ENABLE",
+ "IsLink": ""
},
{
"Id": "383020955254853",
"ParentId": "212755263003745",
"Title": "复制机构",
"Name": "",
+ "Description": "",
"Code": "bizOrgCopy",
"Category": "BUTTON",
"Module": "",
@@ -1530,22 +1315,30 @@
"Path": "",
"Component": "",
"Icon": "",
- "Color": "",
"SortCode": "99",
- "CreateTime": "2023-2-6 17:36:17.423",
- "UpdateTime": "",
+ "CreateTime": "2023-8-14 16:19:29.637",
+ "UpdateTime": "2024-7-23 09:09:41.827",
"CreateUserId": "212725263002001",
"UpdateUserId": "",
"CreateUser": "superAdmin",
"UpdateUser": "",
"IsDelete": "0",
- "ExtJson": ""
+ "ExtJson": "",
+ "ActiveMenu": "",
+ "IsHide": "0",
+ "IsFull": "0",
+ "IsAffix": "0",
+ "IsKeepAlive": "0",
+ "IsHome": "0",
+ "Status": "ENABLE",
+ "IsLink": ""
},
{
"Id": "383022400483397",
"ParentId": "212755263003745",
"Title": "批量删除机构",
"Name": "",
+ "Description": "",
"Code": "bizOrgBatchDelete",
"Category": "BUTTON",
"Module": "",
@@ -1553,223 +1346,364 @@
"Path": "",
"Component": "",
"Icon": "",
- "Color": "",
"SortCode": "99",
- "CreateTime": "2023-2-6 17:42:10.263",
- "UpdateTime": "",
+ "CreateTime": "2023-8-14 16:19:29.637",
+ "UpdateTime": "2024-7-23 09:09:41.827",
"CreateUserId": "212725263002001",
"UpdateUserId": "",
"CreateUser": "superAdmin",
"UpdateUser": "",
"IsDelete": "0",
- "ExtJson": ""
+ "ExtJson": "",
+ "ActiveMenu": "",
+ "IsHide": "0",
+ "IsFull": "0",
+ "IsAffix": "0",
+ "IsKeepAlive": "0",
+ "IsHome": "0",
+ "Status": "ENABLE",
+ "IsLink": ""
},
{
- "Id": "385833289756741",
- "ParentId": "212755263003744",
- "Title": "测试管理",
- "Name": "test",
- "Code": "82kwR49WBU",
- "Category": "MENU",
- "Module": "212755263003743",
- "MenuType": "MENU",
- "Path": "/biz/test",
- "Component": "biz/test/index",
- "Icon": "down-square-outlined",
- "Color": "",
+ "Id": "391869166551109",
+ "ParentId": "212755263003746",
+ "Title": "导入人员",
+ "Name": "",
+ "Description": "",
+ "Code": "bizUserImport",
+ "Category": "BUTTON",
+ "Module": "",
+ "MenuType": "",
+ "Path": "",
+ "Component": "",
+ "Icon": "",
"SortCode": "99",
- "CreateTime": "2023-2-14 16:19:42.553",
- "UpdateTime": "",
+ "CreateTime": "2023-8-14 16:19:29.637",
+ "UpdateTime": "2024-7-23 09:09:41.827",
"CreateUserId": "212725263002001",
"UpdateUserId": "",
"CreateUser": "superAdmin",
"UpdateUser": "",
"IsDelete": "0",
- "ExtJson": ""
+ "ExtJson": "",
+ "ActiveMenu": "",
+ "IsHide": "0",
+ "IsFull": "0",
+ "IsAffix": "0",
+ "IsKeepAlive": "0",
+ "IsHome": "0",
+ "Status": "ENABLE",
+ "IsLink": ""
},
{
- "Id": "385833289920581",
- "ParentId": "385833289756741",
- "Title": "新增测试",
+ "Id": "391869250662469",
+ "ParentId": "212755263003746",
+ "Title": "导出人员",
"Name": "",
- "Code": "genTestAdd",
+ "Description": "",
+ "Code": "bizUserExport",
"Category": "BUTTON",
"Module": "",
"MenuType": "",
"Path": "",
"Component": "",
"Icon": "",
- "Color": "",
- "SortCode": "1",
- "CreateTime": "2023-2-14 16:19:42.577",
- "UpdateTime": "",
+ "SortCode": "99",
+ "CreateTime": "2023-8-14 16:19:29.637",
+ "UpdateTime": "2024-7-23 09:09:41.827",
"CreateUserId": "212725263002001",
"UpdateUserId": "",
"CreateUser": "superAdmin",
"UpdateUser": "",
"IsDelete": "0",
- "ExtJson": ""
+ "ExtJson": "",
+ "ActiveMenu": "",
+ "IsHide": "0",
+ "IsFull": "0",
+ "IsAffix": "0",
+ "IsKeepAlive": "0",
+ "IsHome": "0",
+ "Status": "ENABLE",
+ "IsLink": ""
},
{
- "Id": "385833289920582",
- "ParentId": "385833289756741",
- "Title": "编辑测试",
+ "Id": "395712751292485",
+ "ParentId": "212755263003746",
+ "Title": "批量编辑",
"Name": "",
- "Code": "genTestEdit",
+ "Description": "",
+ "Code": "bizUserBatchEdit",
"Category": "BUTTON",
"Module": "",
"MenuType": "",
"Path": "",
"Component": "",
"Icon": "",
- "Color": "",
- "SortCode": "2",
- "CreateTime": "2023-2-14 16:19:42.577",
- "UpdateTime": "",
+ "SortCode": "99",
+ "CreateTime": "2023-8-14 16:19:29.637",
+ "UpdateTime": "2024-7-23 09:09:41.827",
+ "CreateUserId": "212725263002001",
+ "UpdateUserId": "",
+ "CreateUser": "superAdmin",
+ "UpdateUser": "",
+ "IsDelete": "0",
+ "ExtJson": "",
+ "ActiveMenu": "",
+ "IsHide": "0",
+ "IsFull": "0",
+ "IsAffix": "0",
+ "IsKeepAlive": "0",
+ "IsHome": "0",
+ "Status": "ENABLE",
+ "IsLink": ""
+ },
+ {
+ "Id": "516428665102405",
+ "ParentId": "0",
+ "Title": "系统设置",
+ "Name": "",
+ "Description": "",
+ "Code": "",
+ "Category": "MENU",
+ "Module": "212755263003743",
+ "MenuType": "CATALOG",
+ "Path": "/biz/ops",
+ "Component": "",
+ "Icon": "ep:set-up",
+ "SortCode": "99",
+ "CreateTime": "2024-2-18 16:53:39.087",
+ "UpdateTime": "2024-7-23 09:09:41.827",
"CreateUserId": "212725263002001",
"UpdateUserId": "",
"CreateUser": "superAdmin",
"UpdateUser": "",
"IsDelete": "0",
- "ExtJson": ""
+ "ExtJson": "",
+ "ActiveMenu": "",
+ "IsHide": "0",
+ "IsFull": "0",
+ "IsAffix": "0",
+ "IsKeepAlive": "1",
+ "IsHome": "0",
+ "Status": "ENABLE",
+ "IsLink": ""
},
{
- "Id": "385833289920583",
- "ParentId": "385833289756741",
- "Title": "删除测试",
+ "Id": "517412647174213",
+ "ParentId": "212755263003744",
+ "Title": "角色管理",
+ "Name": "bizRole",
+ "Description": "",
+ "Code": "",
+ "Category": "MENU",
+ "Module": "212755263003743",
+ "MenuType": "MENU",
+ "Path": "/biz/organization/role",
+ "Component": "biz/organization/role/index",
+ "Icon": "ant-design:team-outlined",
+ "SortCode": "99",
+ "CreateTime": "2024-2-21 11:37:29.083",
+ "UpdateTime": "2024-7-23 09:09:41.827",
+ "CreateUserId": "212725263002001",
+ "UpdateUserId": "212725263002001",
+ "CreateUser": "superAdmin",
+ "UpdateUser": "superAdmin",
+ "IsDelete": "0",
+ "ExtJson": "",
+ "ActiveMenu": "",
+ "IsHide": "0",
+ "IsFull": "0",
+ "IsAffix": "0",
+ "IsKeepAlive": "1",
+ "IsHome": "0",
+ "Status": "ENABLE",
+ "IsLink": ""
+ },
+ {
+ "Id": "517470837813317",
+ "ParentId": "517412647174213",
+ "Title": "新增角色",
"Name": "",
- "Code": "genTestDelete",
+ "Description": "",
+ "Code": "bizRoleAdd",
"Category": "BUTTON",
"Module": "",
"MenuType": "",
"Path": "",
"Component": "",
"Icon": "",
- "Color": "",
- "SortCode": "3",
- "CreateTime": "2023-2-14 16:19:42.577",
- "UpdateTime": "",
+ "SortCode": "1",
+ "CreateTime": "2024-2-21 15:34:15.803",
+ "UpdateTime": "2024-7-23 09:09:41.827",
"CreateUserId": "212725263002001",
"UpdateUserId": "",
"CreateUser": "superAdmin",
"UpdateUser": "",
"IsDelete": "0",
- "ExtJson": ""
+ "ExtJson": "",
+ "ActiveMenu": "",
+ "IsHide": "0",
+ "IsFull": "0",
+ "IsAffix": "0",
+ "IsKeepAlive": "0",
+ "IsHome": "0",
+ "Status": "",
+ "IsLink": ""
},
{
- "Id": "385833289920584",
- "ParentId": "385833289756741",
- "Title": "批量删除测试",
+ "Id": "517470837813318",
+ "ParentId": "517412647174213",
+ "Title": "编辑角色",
"Name": "",
- "Code": "genTestBatchDelete",
+ "Description": "",
+ "Code": "bizRoleEdit",
"Category": "BUTTON",
"Module": "",
"MenuType": "",
"Path": "",
"Component": "",
"Icon": "",
- "Color": "",
- "SortCode": "4",
- "CreateTime": "2023-2-14 16:19:42.577",
- "UpdateTime": "",
+ "SortCode": "2",
+ "CreateTime": "2024-2-21 15:34:15.807",
+ "UpdateTime": "2024-7-23 09:09:41.827",
"CreateUserId": "212725263002001",
"UpdateUserId": "",
"CreateUser": "superAdmin",
"UpdateUser": "",
"IsDelete": "0",
- "ExtJson": ""
+ "ExtJson": "",
+ "ActiveMenu": "",
+ "IsHide": "0",
+ "IsFull": "0",
+ "IsAffix": "0",
+ "IsKeepAlive": "0",
+ "IsHome": "0",
+ "Status": "",
+ "IsLink": ""
},
{
- "Id": "391869166551109",
- "ParentId": "212755263003746",
- "Title": "导入人员",
+ "Id": "517470837813319",
+ "ParentId": "517412647174213",
+ "Title": "删除角色",
"Name": "",
- "Code": "bizUserImport",
+ "Description": "",
+ "Code": "bizRoleDelete",
"Category": "BUTTON",
"Module": "",
"MenuType": "",
"Path": "",
"Component": "",
"Icon": "",
- "Color": "",
- "SortCode": "99",
- "CreateTime": "2023-3-3 17:39:45.26",
- "UpdateTime": "",
+ "SortCode": "3",
+ "CreateTime": "2024-2-21 15:34:15.81",
+ "UpdateTime": "2024-7-23 09:09:41.827",
"CreateUserId": "212725263002001",
"UpdateUserId": "",
"CreateUser": "superAdmin",
"UpdateUser": "",
"IsDelete": "0",
- "ExtJson": ""
+ "ExtJson": "",
+ "ActiveMenu": "",
+ "IsHide": "0",
+ "IsFull": "0",
+ "IsAffix": "0",
+ "IsKeepAlive": "0",
+ "IsHome": "0",
+ "Status": "",
+ "IsLink": ""
},
{
- "Id": "391869250662469",
- "ParentId": "212755263003746",
- "Title": "导出人员",
+ "Id": "517470837813320",
+ "ParentId": "517412647174213",
+ "Title": "批量删除角色",
"Name": "",
- "Code": "bizUserExport",
+ "Description": "",
+ "Code": "bizRoleBatchDelete",
"Category": "BUTTON",
"Module": "",
"MenuType": "",
"Path": "",
"Component": "",
"Icon": "",
- "Color": "",
- "SortCode": "99",
- "CreateTime": "2023-3-3 17:40:05.793",
- "UpdateTime": "",
+ "SortCode": "4",
+ "CreateTime": "2024-2-21 15:34:15.81",
+ "UpdateTime": "2024-7-23 09:09:41.827",
"CreateUserId": "212725263002001",
"UpdateUserId": "",
"CreateUser": "superAdmin",
"UpdateUser": "",
"IsDelete": "0",
- "ExtJson": ""
+ "ExtJson": "",
+ "ActiveMenu": "",
+ "IsHide": "0",
+ "IsFull": "0",
+ "IsAffix": "0",
+ "IsKeepAlive": "0",
+ "IsHome": "0",
+ "Status": "",
+ "IsLink": ""
},
{
- "Id": "394242824978501",
- "ParentId": "212745263003735",
- "Title": "批量修改",
- "Name": "batch",
- "Code": "1eODEEBHRv",
- "Category": "MENU",
- "Module": "212725263003721",
- "MenuType": "MENU",
- "Path": "/sys/batch",
- "Component": "sys/batch/index",
- "Icon": "form-outlined",
- "Color": "",
+ "Id": "517480163758149",
+ "ParentId": "517412647174213",
+ "Title": "授权资源",
+ "Name": "",
+ "Description": "",
+ "Code": "bizRoleGrantResource",
+ "Category": "BUTTON",
+ "Module": "",
+ "MenuType": "",
+ "Path": "",
+ "Component": "",
+ "Icon": "",
"SortCode": "99",
- "CreateTime": "2023-3-10 10:38:11.737",
- "UpdateTime": "",
+ "CreateTime": "2024-2-21 16:12:12.627",
+ "UpdateTime": "2024-7-23 09:09:41.827",
"CreateUserId": "212725263002001",
"UpdateUserId": "",
"CreateUser": "superAdmin",
"UpdateUser": "",
"IsDelete": "0",
- "ExtJson": ""
+ "ExtJson": "",
+ "ActiveMenu": "",
+ "IsHide": "0",
+ "IsFull": "0",
+ "IsAffix": "0",
+ "IsKeepAlive": "0",
+ "IsHome": "0",
+ "Status": "",
+ "IsLink": ""
},
{
- "Id": "395712751292485",
- "ParentId": "212755263003746",
- "Title": "批量编辑",
+ "Id": "517480218902597",
+ "ParentId": "517412647174213",
+ "Title": "授权用户",
"Name": "",
- "Code": "bizUserBatchEdit",
+ "Description": "",
+ "Code": "bizRoleGrantUser",
"Category": "BUTTON",
"Module": "",
"MenuType": "",
"Path": "",
"Component": "",
"Icon": "",
- "Color": "",
"SortCode": "99",
- "CreateTime": "2023-3-14 14:19:20.44",
- "UpdateTime": "",
+ "CreateTime": "2024-2-21 16:12:26.087",
+ "UpdateTime": "2024-7-23 09:09:41.827",
"CreateUserId": "212725263002001",
"UpdateUserId": "",
"CreateUser": "superAdmin",
"UpdateUser": "",
"IsDelete": "0",
- "ExtJson": ""
+ "ExtJson": "",
+ "ActiveMenu": "",
+ "IsHide": "0",
+ "IsFull": "0",
+ "IsAffix": "0",
+ "IsKeepAlive": "0",
+ "IsHome": "0",
+ "Status": "",
+ "IsLink": ""
}
]
}
\ No newline at end of file
diff --git a/api/SimpleAdmin/SimpleAdmin.System/SeedData/Json/seed_sys_role.json b/api/SimpleAdmin/SimpleAdmin.System/SeedData/Json/seed_sys_role.json
index 9ebc34774f61b7ccf9bebf56842ac9c1667af7c8..7637fa0e962d74c8bc252010e2c9ab0afb859a2b 100644
--- a/api/SimpleAdmin/SimpleAdmin.System/SeedData/Json/seed_sys_role.json
+++ b/api/SimpleAdmin/SimpleAdmin.System/SeedData/Json/seed_sys_role.json
@@ -9,12 +9,15 @@
"DefaultDataScope": "{\"Level\":5,\"ScopeCategory\":\"SCOPE_ALL\",\"ScopeDefineOrgIdList\":[]}",
"SortCode": "1",
"CreateOrgId": "0",
- "CreateTime": "",
- "UpdateTime": "",
+ "CreateTime": "2023-8-14 16:19:29.82",
+ "UpdateTime": "2024-7-23 09:09:42.077",
"CreateUserId": "",
"UpdateUserId": "",
+ "CreateUser": "",
+ "UpdateUser": "",
"IsDelete": "0",
- "ExtJson": ""
+ "ExtJson": "",
+ "Status": "ENABLE"
},
{
"Id": "212725263001002",
@@ -25,12 +28,15 @@
"DefaultDataScope": "{\"Level\":5,\"ScopeCategory\":\"SCOPE_ALL\",\"ScopeDefineOrgIdList\":[]}",
"SortCode": "1",
"CreateOrgId": "0",
- "CreateTime": "",
- "UpdateTime": "",
+ "CreateTime": "2023-8-14 16:19:29.9",
+ "UpdateTime": "2024-7-23 09:09:42.077",
"CreateUserId": "",
"UpdateUserId": "",
+ "CreateUser": "",
+ "UpdateUser": "",
"IsDelete": "0",
- "ExtJson": ""
+ "ExtJson": "",
+ "Status": "ENABLE"
},
{
"Id": "359567292014661",
@@ -41,12 +47,15 @@
"DefaultDataScope": "{\"Level\":4,\"ScopeCategory\":\"SCOPE_ORG_CHILD\",\"ScopeDefineOrgIdList\":[]}",
"SortCode": "99",
"CreateOrgId": "0",
- "CreateTime": "",
- "UpdateTime": "2022-12-7 16:52:36.607",
+ "CreateTime": "2023-8-14 16:19:29.9",
+ "UpdateTime": "2024-7-23 09:09:42.077",
"CreateUserId": "",
"UpdateUserId": "212725263002001",
+ "CreateUser": "",
+ "UpdateUser": "",
"IsDelete": "0",
- "ExtJson": ""
+ "ExtJson": "",
+ "Status": "ENABLE"
},
{
"Id": "360645671104581",
@@ -57,12 +66,15 @@
"DefaultDataScope": "{\"Level\":2,\"ScopeCategory\":\"SCOPE_ORG\",\"ScopeDefineOrgIdList\":[360642028625989,361404296994885]}",
"SortCode": "99",
"CreateOrgId": "0",
- "CreateTime": "",
- "UpdateTime": "2022-12-7 16:52:32.42",
+ "CreateTime": "2023-8-14 16:19:29.9",
+ "UpdateTime": "2024-7-23 09:09:42.077",
"CreateUserId": "",
"UpdateUserId": "212725263002001",
+ "CreateUser": "",
+ "UpdateUser": "",
"IsDelete": "0",
- "ExtJson": ""
+ "ExtJson": "",
+ "Status": "ENABLE"
},
{
"Id": "360646281904197",
@@ -73,12 +85,15 @@
"DefaultDataScope": "{\"Level\":3,\"ScopeCategory\":\"SCOPE_ORG_DEFINE\",\"ScopeDefineOrgIdList\":[360642028625989,361404296994885,360642028625989,361404296994885]}",
"SortCode": "99",
"CreateOrgId": "0",
- "CreateTime": "",
- "UpdateTime": "2022-12-7 16:52:26.153",
+ "CreateTime": "2023-8-14 16:19:29.903",
+ "UpdateTime": "2024-7-23 09:09:42.077",
"CreateUserId": "",
"UpdateUserId": "212725263002001",
+ "CreateUser": "",
+ "UpdateUser": "",
"IsDelete": "0",
- "ExtJson": ""
+ "ExtJson": "",
+ "Status": "ENABLE"
},
{
"Id": "360646662586437",
@@ -89,12 +104,15 @@
"DefaultDataScope": "{\"Level\":1,\"ScopeCategory\":\"SCOPE_SELF\",\"ScopeDefineOrgIdList\":[]}",
"SortCode": "99",
"CreateOrgId": "0",
- "CreateTime": "",
- "UpdateTime": "",
+ "CreateTime": "2023-8-14 16:19:29.903",
+ "UpdateTime": "2024-7-23 09:09:42.077",
"CreateUserId": "",
"UpdateUserId": "",
+ "CreateUser": "",
+ "UpdateUser": "",
"IsDelete": "0",
- "ExtJson": ""
+ "ExtJson": "",
+ "Status": "ENABLE"
},
{
"Id": "363084914917445",
@@ -105,12 +123,53 @@
"DefaultDataScope": "{\"Level\":4,\"ScopeCategory\":\"SCOPE_ORG_CHILD\",\"ScopeDefineOrgIdList\":[]}",
"SortCode": "99",
"CreateOrgId": "252885263003720",
- "CreateTime": "2022-12-12 09:36:20.077",
- "UpdateTime": "",
+ "CreateTime": "2023-8-14 16:19:29.903",
+ "UpdateTime": "2024-7-23 09:09:42.077",
"CreateUserId": "212725263002001",
"UpdateUserId": "",
+ "CreateUser": "",
+ "UpdateUser": "",
"IsDelete": "0",
- "ExtJson": ""
+ "ExtJson": "",
+ "Status": "ENABLE"
+ },
+ {
+ "Id": "511793641513029",
+ "OrgId": "",
+ "Name": "租户管理员",
+ "Code": "1q8bMS9rgF",
+ "Category": "GLOBAL",
+ "DefaultDataScope": "{\"Level\":4,\"ScopeCategory\":\"SCOPE_ORG_CHILD\",\"ScopeDefineOrgIdList\":[]}",
+ "SortCode": "99",
+ "CreateOrgId": "252885263003720",
+ "CreateTime": "2024-2-5 14:33:41.53",
+ "UpdateTime": "2024-7-23 09:09:42.077",
+ "CreateUserId": "212725263002001",
+ "UpdateUserId": "",
+ "CreateUser": "superAdmin",
+ "UpdateUser": "",
+ "IsDelete": "0",
+ "ExtJson": "",
+ "Status": "ENABLE"
+ },
+ {
+ "Id": "517794467639365",
+ "OrgId": "510752889880645",
+ "Name": "测试",
+ "Code": "pwrxO3v8X5",
+ "Category": "ORG",
+ "DefaultDataScope": "{\"Level\":4,\"ScopeCategory\":\"SCOPE_ORG_CHILD\",\"ScopeDefineOrgIdList\":[]}",
+ "SortCode": "99",
+ "CreateOrgId": "510752889880645",
+ "CreateTime": "2024-2-22 13:31:06.97",
+ "UpdateTime": "2024-7-23 09:09:42.077",
+ "CreateUserId": "511724553736261",
+ "UpdateUserId": "511724553736261",
+ "CreateUser": "旺仔科技管理员",
+ "UpdateUser": "旺仔科技管理员",
+ "IsDelete": "0",
+ "ExtJson": "",
+ "Status": "ENABLE"
}
]
}
\ No newline at end of file
diff --git a/api/SimpleAdmin/SimpleAdmin.System/SeedData/Json/seed_sys_user.json b/api/SimpleAdmin/SimpleAdmin.System/SeedData/Json/seed_sys_user.json
index a7d46074f2f04ec7aa2e11d682c23c1ce51df09f..737cc4ff0bcdae9cb8f2e534446cf7d6dd8c04f4 100644
--- a/api/SimpleAdmin/SimpleAdmin.System/SeedData/Json/seed_sys_user.json
+++ b/api/SimpleAdmin/SimpleAdmin.System/SeedData/Json/seed_sys_user.json
@@ -3,16 +3,15 @@
{
"Id": "212725263002001",
"Avatar": "data:image/png;base64,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",
- "Signature": "",
+ "Signature": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAyAAAAEsCAYAAAA7Ldc6AAAAAXNSR0IArs4c6QAAIABJREFUeF7t3Qe0fVldH/CvM5Sh9w4qOAMRqQMICIIEgUWRGiBUKQOCgKFZQFSEABIgGJOhdw1tAkNHIiGCEUTaAGYy9C6hCAy9Dt7f8kwyPu9975377j1v330/e61ZrGHOPvu3P7+z/v/3e+fsvX8iGgECBAgQIECAAAECBCYS+ImJxjEMAQIECBAgQIAAAQIEogDxEBAgQIAAAQIECBAgMJmAAmQyagMRIECAAAECBAgQIKAA8QwQIECAAAECBAgQIDCZgAJkMmoDESBAgAABAgQIECCgAPEMECBAgAABAgQIECAwmYACZDJqAxEgQIAAAQIECBAgoADxDBAgQIAAAQIECBAgMJmAAmQyagMRIECAAAECBAgQIKAA8QwQIECAAAECBAgQIDCZgAJkMmoDESBAgAABAgQIECCgAPEMECBAgAABAgQIECAwmYACZDJqAxEgQIAAAQIECBAgoADxDBAgQIAAAQIECBAgMJmAAmQyagMRIECAAAECBAgQIKAA8QwQIECAAAECBAgQIDCZgAJkMmoDESBAgAABAgQIECCgAPEMECBAgAABAgQIECAwmYACZDJqAxEgQIAAAQIECBAgoADxDBAgQIAAAQIECBAgMJmAAmQyagMRIECAAAECBAgQIKAA8QwQIECAAAECBAgQIDCZgAJkMmoDESBAgAABAgQIECCgAPEMECBAgAABAgQIECAwmYACZDJqAxEgQIAAAQIECBAgoADxDBAgQIAAAQIECBAgMJmAAmQyagMRIECAAAECBAgQIKAA8QwQIECAAAECBAgQIDCZgAJkMmoDESBAgAABAgQIECCgAPEMECBAgAABAgQIECAwmYACZDJqAxEgQIAAAQIECBAgoADxDBAgQIAAAQIECBAgMJmAAmQyagMRIECAAAECBAgQIKAA8QwQIECAAAECBAgQIDCZgAJkMmoDESBAgAABAgQIECCgAPEMECBAgAABAgQIECAwmYACZDJqAxEgQIAAAQIECBAgoADxDBAgQIAAAQIECBAgMJmAAmQyagMRIECAAAECBAgQIKAA8QwQIECAAAECBAgQIDCZgAJkMmoDESBAgAABAgQIECCgAPEMECBAgAABAgQIECAwmYACZDJqAxEg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",
"Account": "superAdmin",
"Password": "c1c4766b4aa8340df0efa38ff9b50011",
"Name": "超管",
"Nickname": "",
"Gender": "男",
- "Age": "",
"Birthday": "1990-01-01",
"Nation": "汉",
- "Native_Place": "",
+ "NativePlace": "",
"HomeAddress": "少林寺驻北固山办事处",
"MailingAddress": "",
"IdCardType": "身份证",
@@ -27,7 +26,7 @@
"Email": "superAdmin@foxmail.com",
"HomeTel": "",
"OfficeTel": "",
- "Emergency_Contact": "",
+ "EmergencyContact": "",
"EmergencyPhone": "",
"EmergencyAddress": "",
"EmpNo": "0001",
@@ -36,23 +35,26 @@
"PositionId": "212725263003001",
"PositionLevel": "C1",
"DirectorId": "",
- "PositionJson": "",
- "LastLoginIp": "127.0.0.1",
+ "PwdRemindUpdateTime": "2023-9-1 09:47:18",
+ "LastLoginIp": "192.168.0.25",
"LastLoginAddress": "内网IP|内网IP",
- "LastLoginTime": "2022-12-12 10:17:06",
+ "LastLoginTime": "2024-12-23 14:37:51",
"LastLoginDevice": "PC",
- "LatestLoginIp": "127.0.0.1",
+ "LatestLoginIp": "192.168.0.25",
"LatestLoginAddress": "内网IP|内网IP",
- "LatestLoginTime": "2022-12-12 10:17:51.92",
+ "LatestLoginTime": "2024-12-23 14:48:57.13",
"LatestLoginDevice": "PC",
- "UserStatus": "ENABLE",
"SortCode": "1",
- "CreateTime": "",
- "UpdateTime": "2022-12-12 10:17:51.923",
+ "DefaultModule": "",
+ "CreateTime": "2023-8-14 16:19:30.043",
+ "UpdateTime": "2024-9-20 08:46:32.93",
"CreateUserId": "0",
- "UpdateUserId": "",
+ "UpdateUserId": "212725263002001",
+ "CreateUser": "",
+ "UpdateUser": "superAdmin",
"IsDelete": "0",
- "ExtJson": ""
+ "ExtJson": "",
+ "Status": "ENABLE"
},
{
"Id": "212725263002002",
@@ -63,10 +65,9 @@
"Name": "业管",
"Nickname": "",
"Gender": "男",
- "Age": "",
"Birthday": "1990-01-01",
"Nation": "汉",
- "Native_Place": "",
+ "NativePlace": "",
"HomeAddress": "少林寺驻武当山办事处",
"MailingAddress": "",
"IdCardType": "身份证",
@@ -81,7 +82,7 @@
"Email": "bizAdmin@foxmail.com",
"HomeTel": "",
"OfficeTel": "",
- "Emergency_Contact": "",
+ "EmergencyContact": "",
"EmergencyPhone": "",
"EmergencyAddress": "",
"EmpNo": "0002",
@@ -90,23 +91,26 @@
"PositionId": "212725263003001",
"PositionLevel": "C1",
"DirectorId": "212725263002001",
- "PositionJson": "",
- "LastLoginIp": "",
- "LastLoginAddress": "",
- "LastLoginTime": "",
- "LastLoginDevice": "",
+ "PwdRemindUpdateTime": "2023-8-17 09:45:29",
+ "LastLoginIp": "127.0.0.1",
+ "LastLoginAddress": "内网IP|内网IP",
+ "LastLoginTime": "2024-12-23 11:30:42",
+ "LastLoginDevice": "PC",
"LatestLoginIp": "127.0.0.1",
"LatestLoginAddress": "内网IP|内网IP",
- "LatestLoginTime": "2022-12-7 13:41:37",
+ "LatestLoginTime": "2024-12-23 13:59:37.683",
"LatestLoginDevice": "PC",
- "UserStatus": "ENABLE",
"SortCode": "1",
- "CreateTime": "",
- "UpdateTime": "2022-12-7 14:50:55.86",
+ "DefaultModule": "",
+ "CreateTime": "2023-8-14 16:19:30.047",
+ "UpdateTime": "2024-7-23 09:09:42.963",
"CreateUserId": "0",
"UpdateUserId": "212725263002001",
+ "CreateUser": "",
+ "UpdateUser": "",
"IsDelete": "0",
- "ExtJson": ""
+ "ExtJson": "",
+ "Status": "ENABLE"
},
{
"Id": "359177888051269",
@@ -117,10 +121,9 @@
"Name": "仅自己",
"Nickname": "",
"Gender": "男",
- "Age": "",
"Birthday": "",
"Nation": "",
- "Native_Place": "",
+ "NativePlace": "",
"HomeAddress": "",
"MailingAddress": "",
"IdCardType": "",
@@ -135,7 +138,7 @@
"Email": "",
"HomeTel": "",
"OfficeTel": "",
- "Emergency_Contact": "",
+ "EmergencyContact": "",
"EmergencyPhone": "",
"EmergencyAddress": "",
"EmpNo": "",
@@ -144,7 +147,7 @@
"PositionId": "360728646910021",
"PositionLevel": "",
"DirectorId": "359177888051269",
- "PositionJson": "",
+ "PwdRemindUpdateTime": "",
"LastLoginIp": "127.0.0.1",
"LastLoginAddress": "内网IP|内网IP",
"LastLoginTime": "2022-12-7 13:08:56",
@@ -153,14 +156,17 @@
"LatestLoginAddress": "内网IP|内网IP",
"LatestLoginTime": "2022-12-7 13:10:34",
"LatestLoginDevice": "PC",
- "UserStatus": "ENABLE",
"SortCode": "0",
- "CreateTime": "2022-1-12 08:38:36.093",
- "UpdateTime": "2022-12-7 14:51:13.677",
+ "DefaultModule": "",
+ "CreateTime": "2023-8-14 16:19:30.05",
+ "UpdateTime": "2024-7-23 09:09:42.963",
"CreateUserId": "212725263002001",
"UpdateUserId": "212725263002001",
+ "CreateUser": "",
+ "UpdateUser": "",
"IsDelete": "0",
- "ExtJson": ""
+ "ExtJson": "",
+ "Status": "ENABLE"
},
{
"Id": "361405857865797",
@@ -171,10 +177,9 @@
"Name": "所属组织及以下",
"Nickname": "",
"Gender": "男",
- "Age": "",
"Birthday": "",
"Nation": "",
- "Native_Place": "",
+ "NativePlace": "",
"HomeAddress": "",
"MailingAddress": "",
"IdCardType": "",
@@ -189,7 +194,7 @@
"Email": "",
"HomeTel": "",
"OfficeTel": "",
- "Emergency_Contact": "",
+ "EmergencyContact": "",
"EmergencyPhone": "",
"EmergencyAddress": "",
"EmpNo": "",
@@ -198,23 +203,26 @@
"PositionId": "212725263003002",
"PositionLevel": "",
"DirectorId": "",
- "PositionJson": "",
- "LastLoginIp": "",
- "LastLoginAddress": "",
- "LastLoginTime": "",
- "LastLoginDevice": "",
- "LatestLoginIp": "127.0.0.1",
+ "PwdRemindUpdateTime": "2024-9-13 15:59:32",
+ "LastLoginIp": "192.168.0.25",
+ "LastLoginAddress": "内网IP|内网IP",
+ "LastLoginTime": "2024-9-13 15:59:32",
+ "LastLoginDevice": "PC",
+ "LatestLoginIp": "192.168.0.25",
"LatestLoginAddress": "内网IP|内网IP",
- "LatestLoginTime": "2022-12-7 16:57:56.567",
+ "LatestLoginTime": "2024-9-13 15:59:39.623",
"LatestLoginDevice": "PC",
- "UserStatus": "ENABLE",
"SortCode": "",
- "CreateTime": "2022-12-7 15:44:14.037",
- "UpdateTime": "2022-12-7 16:57:56.637",
+ "DefaultModule": "",
+ "CreateTime": "2023-8-14 16:19:30.05",
+ "UpdateTime": "2024-7-23 09:09:42.967",
"CreateUserId": "212725263002001",
"UpdateUserId": "",
+ "CreateUser": "",
+ "UpdateUser": "",
"IsDelete": "0",
- "ExtJson": ""
+ "ExtJson": "",
+ "Status": "ENABLE"
},
{
"Id": "361405930270789",
@@ -225,10 +233,9 @@
"Name": "所属组织",
"Nickname": "",
"Gender": "男",
- "Age": "",
"Birthday": "",
"Nation": "",
- "Native_Place": "",
+ "NativePlace": "",
"HomeAddress": "",
"MailingAddress": "",
"IdCardType": "",
@@ -243,7 +250,7 @@
"Email": "",
"HomeTel": "",
"OfficeTel": "",
- "Emergency_Contact": "",
+ "EmergencyContact": "",
"EmergencyPhone": "",
"EmergencyAddress": "",
"EmpNo": "",
@@ -252,7 +259,7 @@
"PositionId": "361415094177861",
"PositionLevel": "",
"DirectorId": "",
- "PositionJson": "",
+ "PwdRemindUpdateTime": "",
"LastLoginIp": "127.0.0.1",
"LastLoginAddress": "内网IP|内网IP",
"LastLoginTime": "2022-12-7 17:45:07.437",
@@ -261,14 +268,17 @@
"LatestLoginAddress": "内网IP|内网IP",
"LatestLoginTime": "2022-12-12 10:17:14.463",
"LatestLoginDevice": "PC",
- "UserStatus": "ENABLE",
"SortCode": "",
- "CreateTime": "2022-12-7 15:44:31.713",
- "UpdateTime": "2022-12-12 10:17:14.467",
+ "DefaultModule": "",
+ "CreateTime": "2023-8-14 16:19:30.05",
+ "UpdateTime": "2024-7-23 09:09:42.967",
"CreateUserId": "212725263002001",
"UpdateUserId": "",
+ "CreateUser": "",
+ "UpdateUser": "",
"IsDelete": "0",
- "ExtJson": ""
+ "ExtJson": "",
+ "Status": "ENABLE"
},
{
"Id": "361406147739717",
@@ -279,10 +289,9 @@
"Name": "自定义",
"Nickname": "",
"Gender": "男",
- "Age": "",
"Birthday": "",
"Nation": "",
- "Native_Place": "",
+ "NativePlace": "",
"HomeAddress": "",
"MailingAddress": "",
"IdCardType": "",
@@ -297,7 +306,7 @@
"Email": "",
"HomeTel": "",
"OfficeTel": "",
- "Emergency_Contact": "",
+ "EmergencyContact": "",
"EmergencyPhone": "",
"EmergencyAddress": "",
"EmpNo": "",
@@ -306,7 +315,7 @@
"PositionId": "212725263003005",
"PositionLevel": "",
"DirectorId": "",
- "PositionJson": "",
+ "PwdRemindUpdateTime": "",
"LastLoginIp": "127.0.0.1",
"LastLoginAddress": "内网IP|内网IP",
"LastLoginTime": "2022-12-7 17:26:06.2",
@@ -315,14 +324,17 @@
"LatestLoginAddress": "内网IP|内网IP",
"LatestLoginTime": "2022-12-7 17:45:53.667",
"LatestLoginDevice": "PC",
- "UserStatus": "ENABLE",
"SortCode": "",
- "CreateTime": "2022-12-7 15:45:24.81",
- "UpdateTime": "2022-12-7 17:45:53.667",
+ "DefaultModule": "",
+ "CreateTime": "2023-8-14 16:19:30.05",
+ "UpdateTime": "2024-7-23 09:09:42.967",
"CreateUserId": "212725263002001",
"UpdateUserId": "",
+ "CreateUser": "",
+ "UpdateUser": "",
"IsDelete": "0",
- "ExtJson": ""
+ "ExtJson": "",
+ "Status": "ENABLE"
},
{
"Id": "361414413160517",
@@ -333,10 +345,9 @@
"Name": "研发1",
"Nickname": "",
"Gender": "男",
- "Age": "",
"Birthday": "",
"Nation": "",
- "Native_Place": "",
+ "NativePlace": "",
"HomeAddress": "",
"MailingAddress": "",
"IdCardType": "",
@@ -351,7 +362,7 @@
"Email": "",
"HomeTel": "",
"OfficeTel": "",
- "Emergency_Contact": "",
+ "EmergencyContact": "",
"EmergencyPhone": "",
"EmergencyAddress": "",
"EmpNo": "",
@@ -360,7 +371,7 @@
"PositionId": "361414036955205",
"PositionLevel": "",
"DirectorId": "",
- "PositionJson": "",
+ "PwdRemindUpdateTime": "",
"LastLoginIp": "",
"LastLoginAddress": "",
"LastLoginTime": "",
@@ -369,14 +380,17 @@
"LatestLoginAddress": "",
"LatestLoginTime": "",
"LatestLoginDevice": "",
- "UserStatus": "ENABLE",
"SortCode": "",
- "CreateTime": "2022-12-7 16:19:02.733",
- "UpdateTime": "2022-12-7 16:22:14.62",
+ "DefaultModule": "",
+ "CreateTime": "2023-8-14 16:19:30.05",
+ "UpdateTime": "2024-7-23 09:09:42.967",
"CreateUserId": "212725263002001",
"UpdateUserId": "212725263002001",
+ "CreateUser": "",
+ "UpdateUser": "",
"IsDelete": "0",
- "ExtJson": ""
+ "ExtJson": "",
+ "Status": "ENABLE"
},
{
"Id": "361414486462533",
@@ -387,10 +401,9 @@
"Name": "研发2",
"Nickname": "",
"Gender": "男",
- "Age": "",
"Birthday": "",
"Nation": "",
- "Native_Place": "",
+ "NativePlace": "",
"HomeAddress": "",
"MailingAddress": "",
"IdCardType": "",
@@ -405,7 +418,7 @@
"Email": "",
"HomeTel": "",
"OfficeTel": "",
- "Emergency_Contact": "",
+ "EmergencyContact": "",
"EmergencyPhone": "",
"EmergencyAddress": "",
"EmpNo": "",
@@ -414,7 +427,7 @@
"PositionId": "361414036955205",
"PositionLevel": "",
"DirectorId": "",
- "PositionJson": "",
+ "PwdRemindUpdateTime": "",
"LastLoginIp": "",
"LastLoginAddress": "",
"LastLoginTime": "",
@@ -423,14 +436,17 @@
"LatestLoginAddress": "",
"LatestLoginTime": "",
"LatestLoginDevice": "",
- "UserStatus": "ENABLE",
"SortCode": "",
- "CreateTime": "2022-12-7 16:19:20.63",
- "UpdateTime": "2022-12-7 17:28:05.203",
+ "DefaultModule": "",
+ "CreateTime": "2023-8-14 16:19:30.05",
+ "UpdateTime": "2024-7-23 09:09:42.967",
"CreateUserId": "212725263002001",
"UpdateUserId": "361406147739717",
+ "CreateUser": "",
+ "UpdateUser": "",
"IsDelete": "0",
- "ExtJson": ""
+ "ExtJson": "",
+ "Status": "ENABLE"
},
{
"Id": "363085233066053",
@@ -441,10 +457,9 @@
"Name": "研管",
"Nickname": "",
"Gender": "男",
- "Age": "",
"Birthday": "",
"Nation": "",
- "Native_Place": "",
+ "NativePlace": "",
"HomeAddress": "",
"MailingAddress": "",
"IdCardType": "",
@@ -455,11 +470,11 @@
"Education": "",
"EduLength": "",
"Degree": "",
- "Phone": "",
+ "Phone": "e126a5a340f0b9f7bf372f5f212ca0e4",
"Email": "",
"HomeTel": "",
"OfficeTel": "",
- "Emergency_Contact": "",
+ "EmergencyContact": "",
"EmergencyPhone": "",
"EmergencyAddress": "",
"EmpNo": "",
@@ -468,23 +483,362 @@
"PositionId": "361415094177861",
"PositionLevel": "",
"DirectorId": "",
- "PositionJson": "",
+ "PwdRemindUpdateTime": "2024-2-4 16:27:36",
+ "LastLoginIp": "127.0.0.1",
+ "LastLoginAddress": "内网IP|内网IP",
+ "LastLoginTime": "2024-2-5 14:37:14",
+ "LastLoginDevice": "PC",
+ "LatestLoginIp": "192.168.0.25",
+ "LatestLoginAddress": "内网IP|内网IP",
+ "LatestLoginTime": "2024-11-11 15:19:05.53",
+ "LatestLoginDevice": "PC",
+ "SortCode": "",
+ "DefaultModule": "",
+ "CreateTime": "2023-8-14 16:19:30.05",
+ "UpdateTime": "2024-7-23 09:09:42.967",
+ "CreateUserId": "212725263002001",
+ "UpdateUserId": "212725263002001",
+ "CreateUser": "",
+ "UpdateUser": "superAdmin",
+ "IsDelete": "0",
+ "ExtJson": "",
+ "Status": "ENABLE"
+ },
+ {
+ "Id": "511717041197125",
+ "Avatar": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAGQAAABkCAYAAABw4pVUAAAABHNCSVQICAgIfAhkiAAABFlJREFUeJzt3E1MFGcAxvGHRoIoLaxa1lDqtOGjVi8QtyHBA4lghGjS9kRNTS9sUps22hPbHtpLDwVOjYeWAyY90AZujTZRW23gYLXJEq1JMUHauAYIS5EFWYObJbEHswPLMrs77Ozsk/r8TjrAzGz+M/O+75BQhEDbUwiNFwp9ApJMQcgoCBkFIaMgZBSEjIKQURAyCkJGQcgoCBkFIaMgZBSEjIKQURAyCkJGQcgoCBkFIaMgZBSEjIKQURAyCkJGQcgoCBkFIaMgZBSEjIKQURAyCkJGQcgoCBkFIaMgZBSEzLZCn0C+3A8MwvB4t/zz1yZvoW2g28Ezyo4rQa76+9Ba25j2e/pGh9Hd0ml7332jwwhcGrD8+lx0ESvxWNb7Ky0uQWVZhe3zcIorQcLRCEKRMIC1DxxbjWN2eSHlezdurygtQ/n2nVh68hiLK1Fz+94Xd6FkW3HGY38/diVtsI16O/xbujCc4kqQ94e+Nv+d+MCzywt4rfdU0nYAKdsTd1dwaiLpEZLrI4mVBnUy/9tBPaG7pbOgjyC76IIYHi+e9vyasr21tnHT7ZloUM/R0pPHCE5NmP+v3V0Fw+NFKBLG5MMZc7uvuh7l23dm3J8G9RwtrkSTBu+r/j4YHi8mH86kDOrpgqyfGNgRuDRgK6DTXAmy2VW3/tEUioQxfGfEseNt5dFmpeizo47tKxuuBImsRNOuQ6YfzTt+TKt1TrYKNaV2JUjPyBB6RoYAZF6HODWob9z/eom1TbrXI07eZXbQjSFOr9Q3s3vHSwCevUFgQxPEajC1WqnnwlNaBgCYWvrXkf056blcqZcWlxT6FCzR3CGZ3k1ZjSGhSNjWFPdYna+gC79MChqky9eOkw1HUF2+x3KmZTWGJNidoX3Zthavu6UTHzadwOg/f+LbGxdx5V7Q3gfIgyK3/26v1UrYar6fzYwoW9c/+gbNxkEAwIXx37GvwouGqhrz67dn/sbwnRFzRlgIrtwhx+p8+ODQURx6pQ5vvPyquX0uuoibD8ZxYfxGXo//w3uf4/j+JnNl/+Pt38xfCSTuUl91PRqqatBQVYPTTSdwPfRX0q8N3OLOOqTDb16JsdU4xqYncPHuzbxdiV2+dhypbcSBSgNvVu4zp8ehSBj9f/ycdNzzwcs4H7wM4Fm4w8ZBGB4vDI8Xx/c3uf44c+WR1f/uWbTXv2V51eW6CAtFwvjq2iC+aD2Vsj6JrcZxd+4BfrkXzPodVW+HH28faDbv5thqHB//dM4Ml0+ujyGbuR8YzOnnpx/N4/B3n+LWmX68vmsvZpcXMLU0j7HpiZxeFHb52vFJ8zsAgMZzp3M6x2xRBJE1z+XCkJmCkFEQMgpCRkHIKAgZBSGjIGQUhIyCkFEQMgpCRkHIKAgZBSGjIGQUhIyCkFEQMgpCRkHIKAgZBSGjIGQUhIyCkFEQMgpCRkHIKAgZBSGjIGQUhIyCkFEQMgpCRkHIKAiZ/wCVVIG9+MF24QAAAABJRU5ErkJggg==",
+ "Signature": "",
+ "Account": "研发部管理员",
+ "Password": "c1c4766b4aa8340df0efa38ff9b50011",
+ "Name": "研发部管理员",
+ "Nickname": "",
+ "Gender": "男",
+ "Birthday": "",
+ "Nation": "",
+ "NativePlace": "",
+ "HomeAddress": "",
+ "MailingAddress": "",
+ "IdCardType": "身份证",
+ "IdCardNumber": "",
+ "CultureLevel": "",
+ "PoliticalOutlook": "",
+ "College": "",
+ "Education": "",
+ "EduLength": "",
+ "Degree": "",
+ "Phone": "e126a5a340f0b9f7bf372f5f212ca0e4",
+ "Email": "",
+ "HomeTel": "",
+ "OfficeTel": "",
+ "EmergencyContact": "",
+ "EmergencyPhone": "",
+ "EmergencyAddress": "",
+ "EmpNo": "",
+ "EntryDate": "",
+ "OrgId": "464837557956677",
+ "PositionId": "485593012985925",
+ "PositionLevel": "",
+ "DirectorId": "",
+ "PwdRemindUpdateTime": "",
+ "LastLoginIp": "",
+ "LastLoginAddress": "",
+ "LastLoginTime": "",
+ "LastLoginDevice": "",
+ "LatestLoginIp": "",
+ "LatestLoginAddress": "",
+ "LatestLoginTime": "",
+ "LatestLoginDevice": "",
+ "SortCode": "99",
+ "DefaultModule": "",
+ "CreateTime": "2024-2-5 09:22:00.28",
+ "UpdateTime": "2024-7-23 09:09:42.967",
+ "CreateUserId": "212725263002001",
+ "UpdateUserId": "212725263002001",
+ "CreateUser": "superAdmin",
+ "UpdateUser": "superAdmin",
+ "IsDelete": "0",
+ "ExtJson": "",
+ "Status": "ENABLE"
+ },
+ {
+ "Id": "511724397056069",
+ "Avatar": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAGQAAABkCAYAAABw4pVUAAAABHNCSVQICAgIfAhkiAAABFxJREFUeJzt3FFoG3UAx/HftCxV13SuWhLjqG0nlbB1SnUd3ea2B9mLteDoGHOzDJUyoQ++TATxRR/cXnwozA0UNzZFrD7MKMgcMlsmrTjKFmgRK6XOkKxdOrhbxxIs+jBya5pekmsulx/u93nqru3dhe/d/f//K2xF24dN/0Jo3FfpE5BsCkJGQcgoCBkFIaMgZBSEjIKQURAyCkJGQcgoCBkFIaMgZBSEjIKQURAyCkJGQcgoCBkFIaMgZBSEjIKQURAyCkJGQcgoCBkFIaMgZBSEjIKQURAyCkJGQcgoCBkFIaMgZKoqfQLlEjk0iKA/tOzf/3XqF7z55QEXz6g4ngQ5tvc0NjV05P2ZUyMn0NPe63jfp0ZOoP/CUdvvz95KIvXP7aL356uqxpoH6xyfh1s8CTI7dx1xIwbg7gdOz6eRnJvJ+dnF22t8fqzy1eBmyoSZMqztdQ89ipX3ryx47Ej067zBFuvbcXhZF4ZbPAnybuQt6+vMB07OzaDz4+eztgPI2Z65u8YS0axHSKmPJFYa1Mn8bwf1jJ723oo+gpyiCxL0h/Db23/mbN/U0LHk9kI0qJfoZsrEWCJq/Xvtww0I+kOIGzFcvTFlbQ8HNmCVr6bg/jSol8hMGVmD97G9pxH0h3D1xlTOoJ4vyMKJgRP9F446Cug2T4IsddUtfDTFjRjOjX/n2vGW82iz8+yRZtf2VQxPgpi3jbzrkGkz4fox7dY5xarUlNqTICeHj+Pk8HEAhdchbg3qi/e/UGZtk+/1iJt3mRN0Y4jbK/Wl1D6wGsCdNwhsaILYDaZ2K/VS+KtrAQDXzLgr+3PTPblS91VVV/oUbNHcIYXeTdmNIXEj5miKu7lxW0UXfoVUNEhXazd2hV9CfU3AdqZlN4ZkOJ2hvbGlz/q6p70Xu5/eh0t/jWBg9AyGJ4ecfYAyWOH1/9trtxK2m+8XMyMq1qf7v8LGUBsA4Oc/ziNQ+xha6sPW93+fHsOP499bM8JK8OQO2dy4DS+ufxlPBdbjiTVN1vbZW0lEY6MYnDhf1uN/0PkRtjbvtFb2P4x9a/1JIHOXhgMb0FIfRkt9GLuf2YfLf1/K+rOBVzxbqWeuxPR8GuOJKIYmfirbldjV2o3nGjrQ+Mg6NNats6bHcSOGb0a/yDru2SsDOHtlAMCdcBsfb0PQH0IwHMLW5p2eP848eWS9s+t9dDRtt73qSl2ExY0YPrnYj9e39OWsT9LzaUwmJzA8OVT0O6q+HYex/ckXrLs5PZ/GkXPvWeHKyfMxZCmRQ4Ml/f60mcBrZ/bg84MRhGrX4vrcDKbNBMYT0ZJeFHa1dmNP26sAgFc+6yzpHItFEUTuuicXhswUhIyCkFEQMgpCRkHIKAgZBSGjIGQUhIyCkFEQMgpCRkHIKAgZBSGjIGQUhIyCkFEQMgpCRkHIKAgZBSGjIGQUhIyCkFEQMgpCRkHIKAgZBSGjIGQUhIyCkFEQMgpCRkHI/AdcyoGMDQFIagAAAABJRU5ErkJggg==",
+ "Signature": "",
+ "Account": "萝卜科技管理员",
+ "Password": "c1c4766b4aa8340df0efa38ff9b50011",
+ "Name": "萝卜科技管理员",
+ "Nickname": "",
+ "Gender": "男",
+ "Birthday": "",
+ "Nation": "",
+ "NativePlace": "",
+ "HomeAddress": "",
+ "MailingAddress": "",
+ "IdCardType": "身份证",
+ "IdCardNumber": "",
+ "CultureLevel": "",
+ "PoliticalOutlook": "",
+ "College": "",
+ "Education": "",
+ "EduLength": "",
+ "Degree": "",
+ "Phone": "",
+ "Email": "",
+ "HomeTel": "",
+ "OfficeTel": "",
+ "EmergencyContact": "",
+ "EmergencyPhone": "",
+ "EmergencyAddress": "",
+ "EmpNo": "",
+ "EntryDate": "",
+ "OrgId": "359569393872965",
+ "PositionId": "359569658515525",
+ "PositionLevel": "",
+ "DirectorId": "",
+ "PwdRemindUpdateTime": "",
"LastLoginIp": "",
"LastLoginAddress": "",
"LastLoginTime": "",
"LastLoginDevice": "",
+ "LatestLoginIp": "",
+ "LatestLoginAddress": "",
+ "LatestLoginTime": "",
+ "LatestLoginDevice": "",
+ "SortCode": "99",
+ "DefaultModule": "",
+ "CreateTime": "2024-2-5 09:51:56.147",
+ "UpdateTime": "2024-7-23 09:09:42.967",
+ "CreateUserId": "212725263002001",
+ "UpdateUserId": "212725263002001",
+ "CreateUser": "superAdmin",
+ "UpdateUser": "superAdmin",
+ "IsDelete": "0",
+ "ExtJson": "",
+ "Status": "ENABLE"
+ },
+ {
+ "Id": "511724553736261",
+ "Avatar": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAGQAAABkCAYAAABw4pVUAAAABHNCSVQICAgIfAhkiAAABF1JREFUeJzt3FFoG3UAx/FfZWzrxLVr3Nhk2alTVyuhLQ6HBlrsxqJWEOeLsiKM4iYolD20A1HHUEZXEbcXmULRh1kYSAsT6SpzWCHiRkZbhSljlh1Za9cQl3TQGinow8itaXpJrrlcfrjf56m9pncXvnf3v/8FUrF/Hf6F0Lin3DsgmRSEjIKQURAyCkJGQcgoCBkFIaMgZBSEjIKQURAyCkJGQcgoCBkFIaMgZBSEjIKQURAyCkJGQcgoCBkFIaMgZBSEjIKQURAyCkJGQcgoCBkFIaMgZBSEjIKQURAyCkJGQcisKPcOlMrRsWvw+Y1l///vw9/jk5d3ubhHhfEkyMGBc6ht3pnzNUMnehDq6HK87qETPeg/csj277di0/jn77mC17dydSXuW7/B8X64xZMgM7EbiEdNAHfe8HwqheT0VNZrFy9fU1WNyrVVmJtJYjaZsJZXbdiIFatW5d32T31f5gy22J7Dx5Z1YLjFkyC9+/daP6ffcHJ6Cu/UP5ixHEDW8vTZZY5EMi4hxV6SWGlQJ/O/HdTTQh1dZb0EOUUXxOc38Nlf2d+HU9u8c8nl+WhQL9LcTBLmSMT6ff3Dj8DnNxCPmoiNX7WWG43bUbm2Ku/6NKgXaTaZyBi8Dw6cg89vIDZ+NWtQzxVk4Y2BE/1HDjkK6DZPgix11C28NMWjJiL9p13b3nIubXYO1FS4tq5CeBJkNnkz5zwkMTnh+jbt5jmFKtcttSdBzh7vxtnj3QDyz0PcGtQXr3+h9Nwm1+MRN88yJ+jGELdn6ku5t8YH4PYTBDY0QewGU7uZejHWVK8DANycuO7K+tx0V87UV66uLPcu2KI5Q/I9m7IbQ+JR09Etbl1LqKwTv3zKGiTY1o6nXnkN1Q9str3TshtD0pzeob3Y+b71c6ijC037DuBKeBg/9H6Ky+eHnL2BEqjw+nt77WbCdvf7hdwRFaprMIytO54BAIwNnkHN5i3wBxqsv0d/HUVk4LR1R1gOnpwhdS0hPP3q69hS/yQ2PrrNWn4rNo3xyM8YGzxT0u23f/4VArtbrZn9xa/7rI8E0mep0bgd/kAD/IEGNO17E39cCGd8bOAVj2bq3daROJ9KwRy9hF+GvinZkRhsa0dtUws2bavDpscet26P41ETP35xMmO74VO9CJ/qBXA73NYdQfj8Bnx+A4HdrZ5fzjy5ZO39+CSe2PWc7VFX7CQsHjXx7UcfoLXzvaz5yXwqhT+v/IbL578r+BnVnsPHUP/CS9bZPJ9Koa/zLStcKXk+hizl6Ni1ov4/MTmBnueDeHd4BPcbDyF5YwqJyeswRy8V9aAw2NaOZ994GwDwYXNjUftYKIogcsddOTFkpiBkFISMgpBREDIKQkZByCgIGQUhoyBkFISMgpBREDIKQkZByCgIGQUhoyBkFISMgpBREDIKQkZByCgIGQUhoyBkFISMgpBREDIKQkZByCgIGQUhoyBkFISMgpBREDIKQuY/u06CTgWqX4UAAAAASUVORK5CYII=",
+ "Signature": "",
+ "Account": "旺仔科技管理员",
+ "Password": "c1c4766b4aa8340df0efa38ff9b50011",
+ "Name": "旺仔科技管理员",
+ "Nickname": "",
+ "Gender": "男",
+ "Birthday": "",
+ "Nation": "",
+ "NativePlace": "",
+ "HomeAddress": "",
+ "MailingAddress": "",
+ "IdCardType": "身份证",
+ "IdCardNumber": "",
+ "CultureLevel": "",
+ "PoliticalOutlook": "",
+ "College": "",
+ "Education": "",
+ "EduLength": "",
+ "Degree": "",
+ "Phone": "",
+ "Email": "",
+ "HomeTel": "",
+ "OfficeTel": "",
+ "EmergencyContact": "",
+ "EmergencyPhone": "",
+ "EmergencyAddress": "",
+ "EmpNo": "",
+ "EntryDate": "",
+ "OrgId": "510752889880645",
+ "PositionId": "511723823370309",
+ "PositionLevel": "",
+ "DirectorId": "",
+ "PwdRemindUpdateTime": "2024-2-19 15:53:43",
+ "LastLoginIp": "127.0.0.1",
+ "LastLoginAddress": "内网IP|内网IP",
+ "LastLoginTime": "2024-2-23 10:50:42",
+ "LastLoginDevice": "PC",
"LatestLoginIp": "127.0.0.1",
"LatestLoginAddress": "内网IP|内网IP",
- "LatestLoginTime": "2022-12-12 09:49:51.583",
+ "LatestLoginTime": "2024-2-23 15:47:54.05",
"LatestLoginDevice": "PC",
- "UserStatus": "ENABLE",
- "SortCode": "",
- "CreateTime": "2022-12-12 09:37:37.75",
- "UpdateTime": "2022-12-12 09:49:51.64",
+ "SortCode": "99",
+ "DefaultModule": "",
+ "CreateTime": "2024-2-5 09:52:34.397",
+ "UpdateTime": "2024-7-23 09:09:42.967",
+ "CreateUserId": "212725263002001",
+ "UpdateUserId": "",
+ "CreateUser": "superAdmin",
+ "UpdateUser": "",
+ "IsDelete": "0",
+ "ExtJson": "",
+ "Status": "ENABLE"
+ },
+ {
+ "Id": "511724668047429",
+ "Avatar": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAGQAAABkCAYAAABw4pVUAAAABHNCSVQICAgIfAhkiAAABE1JREFUeJzt3O9vE3UAx/EPMuo6SrZyDmG/+oDC6oTMZIuLLLKgJguZiYFHRh9KMDzkiRj/AKOPfIzRhxIfoU8I8EAz1GlmSrItsTpgxOomhq3punY7qG3wAem5rru2116vn8jn9Wi7bndt3nf3/X5vyXacvXDxEYTGU81+A1JMQcgoCBkFIaMgZBSEjIKQURAyCkJGQcgoCBkFIaMgZBSEjIKQURAyCkJGQcgoCBkFIaMgZBSEjIKQURAyCkJGQcgoCBkFIaMgZBSEjIKQURAyCkJGQcgoCBkFIaMgZBSETEuz30CjfHjhLRjBQM2//9udJXzy2RUX31F1PAly/swEIuHusj9z/cYsxscGHe/7+o1ZXL46bft6OmMi+0++6v35du3EnoDf8ftwiydB1jImEskMgP8+cC6XRyptlvzs1u1tfh/8rT6YD7LYMLPW9vY9frS07Kx47B9v3iobbKvTJ0dqOjHc4kmQz7/81vq68IFTaRMffHypaDuAku2Fqyu+uFx0C6n3lsRKgzqZ/+2gXjA+NtjUW5BTdEGMYAAXPzpbsj0S7t52eyUa1OtkPsgivrhsfd9ptMMIBpBIZrCcSFnbQz2d8Lf6Ku5Pg3qdNsxs0eB9/swEjGAAy4lUyaBeLsjmiYETl69OOwroNk+CbHfWbb41JZIZROcWXDteLbc2O+++/6lr+6qGJ0E2zIdl1yGra+uuH9NunVOtZk2pPQlybXIG1yZnAFReh7g1qG/d/2aFtU25xyNuXmVO0I0hbq/Ut7O7rRXA4ycIbGiC2A2mdiv1erT5nwYAJFPu3yrr9USu1H27aruyvEBzhVR6NmU3hiSSGUdT3IFDPU1d+FXS1CCjw/148YUwOtp328607MaQAqcztNdfG7K+Hh8bxPGR53Dr7j1M/vQLYrcXnX2ABtjh9f/ttVsJ2833q5kRVeu9c2/gYOhZAMBsLI69HQH0dhnW63/+lUB0bsGaETaDJ1fIwKEevDR0GH3dz2B/Z4e1PZ0xcfeP+5iN/d7Q47/z5is4GumzVvY/z9yx/iRQuEpDPZ3o7TLQ22Xg+MgAFuJ/F/3ZwCuerdQLZ2Iul0d8aQVzv8YbdiaODvcjEu7GgX1BHNjXYU2PE8kMvpuOFR13KjqPqeg8gMfhDob2wwgGYATDOBrp8/x25skt6+1TL+P5w722Z129i7BEMoMr39zExKtDJeuTXC6Pe/dXEbu9WPUzqtMnRzA4ELKu5lwuj0tf/2CFayRPrpAvvvq+7OuFxyq1Wl1bx1R0HieOHUGb34eVZBqrqXXEl1ZqelBYWBONDvfjxLEjAOBJDKAJg7qU90QuDJkpCBkFIaMgZBSEjIKQURAyCkJGQcgoCBkFIaMgZBSEjIKQURAyCkJGQcgoCBkFIaMgZBSEjIKQURAyCkJGQcgoCBkFIaMgZBSEjIKQURAyCkJGQcgoCBkFIaMgZBSEjIKQ+RdFsYZDcg+0XAAAAABJRU5ErkJggg==",
+ "Signature": "",
+ "Account": "达达科技管理员",
+ "Password": "c1c4766b4aa8340df0efa38ff9b50011",
+ "Name": "达达科技管理员",
+ "Nickname": "",
+ "Gender": "男",
+ "Birthday": "",
+ "Nation": "",
+ "NativePlace": "",
+ "HomeAddress": "",
+ "MailingAddress": "",
+ "IdCardType": "身份证",
+ "IdCardNumber": "",
+ "CultureLevel": "",
+ "PoliticalOutlook": "",
+ "College": "",
+ "Education": "",
+ "EduLength": "",
+ "Degree": "",
+ "Phone": "",
+ "Email": "",
+ "HomeTel": "",
+ "OfficeTel": "",
+ "EmergencyContact": "",
+ "EmergencyPhone": "",
+ "EmergencyAddress": "",
+ "EmpNo": "",
+ "EntryDate": "",
+ "OrgId": "510753093025861",
+ "PositionId": "511723919061061",
+ "PositionLevel": "",
+ "DirectorId": "",
+ "PwdRemindUpdateTime": "2024-9-11 23:55:59.987",
+ "LastLoginIp": "",
+ "LastLoginAddress": "",
+ "LastLoginTime": "",
+ "LastLoginDevice": "",
+ "LatestLoginIp": "192.168.0.25",
+ "LatestLoginAddress": "内网IP|内网IP",
+ "LatestLoginTime": "2024-9-11 23:55:59.913",
+ "LatestLoginDevice": "PC",
+ "SortCode": "99",
+ "DefaultModule": "",
+ "CreateTime": "2024-2-5 09:53:02.307",
+ "UpdateTime": "2024-7-23 09:09:42.967",
+ "CreateUserId": "212725263002001",
+ "UpdateUserId": "",
+ "CreateUser": "superAdmin",
+ "UpdateUser": "",
+ "IsDelete": "0",
+ "ExtJson": "",
+ "Status": "ENABLE"
+ },
+ {
+ "Id": "511724755705925",
+ "Avatar": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAGQAAABkCAYAAABw4pVUAAAABHNCSVQICAgIfAhkiAAABFZJREFUeJzt3O9rG3UAx/HPtC72x7LZzKZTuzDDRmldtWwaNDA2cbRghbEnHdhnDsVHsicT/QP8sSf+eCLCfDale7InU0gVJAidnRRKK3aSbY5MnYlt1jRpMmNT9MG4s2l6+Xm5fHCf16P00t5deN/d974X6JZXX3jvHwiN+5q9A1JIQcgoCBkFIaMgZBSEjIKQURAyCkJGQcgoCBkFIaMgZBSEjIKQURAyCkJGQcgoCBkFIaMgZBSEjIKQURAyCkJGQcgoCBkFIaMgZBSEjIKQURAyCkJGQcgoCBkFIaMgZBSETEuzd6BR3jn3Ojxed81///NMFB+cHrdxjyrjSJBTZ06gd9BX8ncmzl/G0Gig6nVPnL+MC2fDlu+nk1n8nctXvL6trhZs29FW9X7YxZEgqaUMEvEUgP8+cH51Dcu3M0W/u3F5W4cLre0u3MnkkF3Jmcu3d7aj5YH7y2770sSPJYNtdPzk4ZoODLs4EuSzdy+ar40PvHw7g7fHPilYDqBouXF2RSOxgktIvZckVhrUyfxvB3XD0GigqZegatEF8Xjd+PSbN4uW9w76Nl1ejgb1Ot3J5BCNxMyfH37kIXi8biTiKSzcWjKX+/Z1o7XdVXZ9GtTrlF3JFQzep86cgMfrxsKtpaJBvVSQ9TcG1bhwNlxVQLs5EmSzo279pSkRT2E6fMW27dVyabPy2tH3bVtXJRwJkl35q+Q8JLmYtn2bVvOcSjXrltqRIKHxKYTGpwCUn4fYNahvXP96xtym1OMRO8+yatCNIXbP1DfT7m4FcPcJAhuaIFaDqdVMvR5tHQ8CAJYW7L9U1uuenKlvddEch0Vo9qzcsymrMSQRT1V1i9t3cE9TJ37lNDVIcHgAzzzfhx07t1neaVmNIYZq79BGxoLm66HRAA6NPIXI7E2EL85gfvpGdR+gAbY4/X97rWbCVvf7ldwRVer0h2Pw9z8KAJi9dBWd3u3o8XeZ7/96/U9Mh6+Yd4TN4MgZ0ndwD549+gR27+1Gd0+nuTydzOKX+d8x+/21hm7/lbdewv6A35zZ//DtvPmVgHGW+vZ1o8ffhR5/Fw6NDOL6T78VfG3gFMdm6saRmF9dQzQSw9zUtYYdicHhAfQO+rDLtxO7dnvM2+NEPIXvvpwp2O5kaA6ToTkAd8P5+x+Dx+uGx9uH/QG/45czRy5ZL78xhP6nH7c86uqdhCXiKXx1bhIvjgWL5if51TX8cTOB+ekbFT+jOn7yMJ58bq95NudX1/DFx1+b4RrJkTPk848mSr5vPFapVXIxjcnQHI4cO4C2DhcWY8tILqYRjcRqelBozImCwwM4cuwAADgSA2jCoC6l3ZMTQ2YKQkZByCgIGQUhoyBkFISMgpBREDIKQkZByCgIGQUhoyBkFISMgpBREDIKQkZByCgIGQUhoyBkFISMgpBREDIKQkZByCgIGQUhoyBkFISMgpBREDIKQkZByCgIGQUhoyBk/gX5tIZuRn97CgAAAABJRU5ErkJggg==",
+ "Signature": "",
+ "Account": "杰尼科技管理员",
+ "Password": "c1c4766b4aa8340df0efa38ff9b50011",
+ "Name": "杰尼科技管理员",
+ "Nickname": "",
+ "Gender": "男",
+ "Birthday": "",
+ "Nation": "",
+ "NativePlace": "",
+ "HomeAddress": "",
+ "MailingAddress": "",
+ "IdCardType": "身份证",
+ "IdCardNumber": "",
+ "CultureLevel": "",
+ "PoliticalOutlook": "",
+ "College": "",
+ "Education": "",
+ "EduLength": "",
+ "Degree": "",
+ "Phone": "",
+ "Email": "",
+ "HomeTel": "",
+ "OfficeTel": "",
+ "EmergencyContact": "",
+ "EmergencyPhone": "",
+ "EmergencyAddress": "",
+ "EmpNo": "",
+ "EntryDate": "",
+ "OrgId": "510753219502149",
+ "PositionId": "511723963043909",
+ "PositionLevel": "",
+ "DirectorId": "",
+ "PwdRemindUpdateTime": "",
+ "LastLoginIp": "",
+ "LastLoginAddress": "",
+ "LastLoginTime": "",
+ "LastLoginDevice": "",
+ "LatestLoginIp": "",
+ "LatestLoginAddress": "",
+ "LatestLoginTime": "",
+ "LatestLoginDevice": "",
+ "SortCode": "99",
+ "DefaultModule": "",
+ "CreateTime": "2024-2-5 09:53:23.707",
+ "UpdateTime": "2024-7-23 09:09:42.967",
"CreateUserId": "212725263002001",
"UpdateUserId": "",
+ "CreateUser": "superAdmin",
+ "UpdateUser": "",
+ "IsDelete": "0",
+ "ExtJson": "",
+ "Status": "ENABLE"
+ },
+ {
+ "Id": "518189781848133",
+ "Avatar": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAGQAAABkCAYAAABw4pVUAAAABHNCSVQICAgIfAhkiAAABJJJREFUeJzt3G9oG3Ucx/FPJXorsr9hY2wL0QdztaO04lAwsGBblo7hyoIgNHngFlyHKFuQdUWUtiDDOEcV17o6gjLaqeAaXBk1I+2MkEnHcCvBtg4Ki3G26+ifi5DuIDAflMbGJTXdkt4n8n09S+9y9+u9e73fXSBFB9fiPgSNx/QegEglQchIEDIShIwEISNByEgQMhKEjAQhI0HISBAyEoSMBCEjQchIEDIShIwEISNByEgQMhKEjAQhI0HISBAyEoSMBCEjQchIEDIShIwEISNByEgQMhKEjAQhI0HISBAyEoSMBCEjQcjQBbE3edAxdR/HB28taX23L5DfgS0TuiB6sDd50DZ2jyKqQe8B6MnidGHX20exces2vYeSVDBBjg/egtFkzri8xFqFjqn0X0rh//QjdLccS752nDyNp3e8CFNZRc7H+agogrh9AZRYq1J+ZjSZkwd4JNiHmT9vp33vEyuKsXL9BszGVMTVmbTrxNXpjPsaCfY9sG89UQSJ3b2DyWgEwD8HOKFpUCfGk8u9Bx1p32tv8sB2uAGR69fQuq86631Gwzdw+cwphDq9Gc8sPVAEWXiw5w+wOjGOd8ufyvm+rp7/Gv7PTmCo35/zbecCRZDlFOr06j2ERRXEtLe00qb3EJYN9Rni+qILZbv24KcvO+Bs7VjyLGsyGsnLv718oguydvMWAHOzLKPJjISmIa5OY3QghPjMNExlFfjr7gRuD4UzbmPNpi1U9xZLQRHE4nShfPdePGOxonjVagBAQtPwa78fP3rbUy7AbWP3YFCURWdU7wWvAwBGB0L5HXgeUFxDXn7jLZTv3ovHlRXJ6a86MY52R+0Ds6Gxm8MoXrUa9iZP2m3VHGmEqawCszE141SZGUWQqT9+x0iwD22OWlzr/nbRdS+fOQUA2GF/Le3ynfsPAQDCly7mdpDLhCJIu6MWrfuqs7o3CHV6EQ3fgNFkxptd36csc/sCMJrMmIxGCvLsAEiCLFV3SyMSmobtlTbUHGkEMDcjK7FWIaFp6HTX6zzCh1eQQYb6/fil5zwMioJXjjXD7QvghVfrkNA09Hiaae/Cs1GQQYC5xy2jA1dgUJTkmdHjacYPn3yo99AeScEGsThdeHKdMfnaoCh41pr9w0VWBRektNIGty+AuhNt2Lh1GyajEQz2XkBC01BircLHv93JOCUuBBQ3hgvN3xj+m8XpgsVxAOaK52FQFMzGVFw59xW63jmUXL7n6PswmsywHW7AS3WvYzgYwM/fnP3Pa0r9uqKc/x4Pq4jhu9/nH7kvNNh7Ae2OWpRW2nDg87NYuX4DAGA2piJ86eKin4/s3F+fEvbqd+cKZhpMEQRA8sFgQtMwdnMY3S2Nyb/sht4Q1mzajNGBUNYH1nHyNLZX1yA+M40PrM/lbdy5RhNEzCm4i/r/nQQhI0HISBAyEoSMBCEjQchIEDIShIwEISNByEgQMhKEjAQhI0HISBAyEoSMBCEjQchIEDIShIwEISNByEgQMhKEjAQhI0HISBAyEoSMBCEjQchIEDIShIwEISNByEgQMhKEzN96BFLRl5sEoAAAAABJRU5ErkJggg==",
+ "Signature": "",
+ "Account": "旺仔科技1",
+ "Password": "c1c4766b4aa8340df0efa38ff9b50011",
+ "Name": "旺仔科技1",
+ "Nickname": "",
+ "Gender": "男",
+ "Birthday": "",
+ "Nation": "",
+ "NativePlace": "",
+ "HomeAddress": "",
+ "MailingAddress": "",
+ "IdCardType": "身份证",
+ "IdCardNumber": "",
+ "CultureLevel": "",
+ "PoliticalOutlook": "",
+ "College": "",
+ "Education": "",
+ "EduLength": "",
+ "Degree": "",
+ "Phone": "",
+ "Email": "",
+ "HomeTel": "",
+ "OfficeTel": "",
+ "EmergencyContact": "",
+ "EmergencyPhone": "",
+ "EmergencyAddress": "",
+ "EmpNo": "",
+ "EntryDate": "",
+ "OrgId": "517088662995013",
+ "PositionId": "517095081300037",
+ "PositionLevel": "",
+ "DirectorId": "",
+ "PwdRemindUpdateTime": "2024-2-23 16:19:56",
+ "LastLoginIp": "127.0.0.1",
+ "LastLoginAddress": "内网IP|内网IP",
+ "LastLoginTime": "2024-2-23 16:19:56.733",
+ "LastLoginDevice": "PC",
+ "LatestLoginIp": "127.0.0.1",
+ "LatestLoginAddress": "内网IP|内网IP",
+ "LatestLoginTime": "2024-2-23 16:20:34.887",
+ "LatestLoginDevice": "PC",
+ "SortCode": "99",
+ "DefaultModule": "",
+ "CreateTime": "2024-2-23 16:19:39.23",
+ "UpdateTime": "2024-2-23 16:20:26.987",
+ "CreateUserId": "212725263002001",
+ "UpdateUserId": "212725263002001",
+ "CreateUser": "superAdmin",
+ "UpdateUser": "superAdmin",
"IsDelete": "0",
- "ExtJson": ""
+ "ExtJson": "",
+ "Status": "ENABLE"
}
]
}
\ No newline at end of file
diff --git a/api/SimpleAdmin/SimpleAdmin.System/SeedData/SysConfigSeedData.cs b/api/SimpleAdmin/SimpleAdmin.System/SeedData/SysConfigSeedData.cs
new file mode 100644
index 0000000000000000000000000000000000000000..ae061cd7092e1e64186c43e59a1a486471bebd85
--- /dev/null
+++ b/api/SimpleAdmin/SimpleAdmin.System/SeedData/SysConfigSeedData.cs
@@ -0,0 +1,22 @@
+// Copyright (c) 2022-Now 少林寺驻北固山办事处大神父王喇嘛
+//
+// SimpleAdmin 基于 Apache License Version 2.0 协议发布,可用于商业项目,但必须遵守以下补充条款:
+// 1.请不要删除和修改根目录下的LICENSE文件。
+// 2.请不要删除和修改SimpleAdmin源码头部的版权声明。
+// 3.分发源码时候,请注明软件出处 https://gitee.com/dotnetmoyu/SimpleAdmin
+// 4.基于本软件的作品,只能使用 SimpleAdmin 作为后台服务,除外情况不可商用且不允许二次分发或开源。
+// 5.请不得将本软件应用于危害国家安全、荣誉和利益的行为,不能以任何形式用于非法为目的的行为。
+// 6.任何基于本软件而产生的一切法律纠纷和责任,均于我司无关。
+
+namespace SimpleAdmin.System;
+
+///
+/// 系统配置种子数据
+///
+public class SysConfigSeedData : ISqlSugarEntitySeedData
+{
+ public IEnumerable SeedData()
+ {
+ return SeedDataUtil.GetSeedData("seed_sys_config.json");
+ }
+}
diff --git a/api/SimpleAdmin/SimpleAdmin.System/SeedData/SysDictSeedData.cs b/api/SimpleAdmin/SimpleAdmin.System/SeedData/SysDictSeedData.cs
new file mode 100644
index 0000000000000000000000000000000000000000..165310f8c151c8b3f5dfd338e095676e102e7673
--- /dev/null
+++ b/api/SimpleAdmin/SimpleAdmin.System/SeedData/SysDictSeedData.cs
@@ -0,0 +1,22 @@
+// Copyright (c) 2022-Now 少林寺驻北固山办事处大神父王喇嘛
+//
+// SimpleAdmin 基于 Apache License Version 2.0 协议发布,可用于商业项目,但必须遵守以下补充条款:
+// 1.请不要删除和修改根目录下的LICENSE文件。
+// 2.请不要删除和修改SimpleAdmin源码头部的版权声明。
+// 3.分发源码时候,请注明软件出处 https://gitee.com/dotnetmoyu/SimpleAdmin
+// 4.基于本软件的作品,只能使用 SimpleAdmin 作为后台服务,除外情况不可商用且不允许二次分发或开源。
+// 5.请不得将本软件应用于危害国家安全、荣誉和利益的行为,不能以任何形式用于非法为目的的行为。
+// 6.任何基于本软件而产生的一切法律纠纷和责任,均于我司无关。
+
+namespace SimpleAdmin.System;
+
+///
+/// 字典表种子数据
+///
+public class SysDictSeedData : ISqlSugarEntitySeedData
+{
+ public IEnumerable SeedData()
+ {
+ return SeedDataUtil.GetSeedData("seed_sys_dict.json");
+ }
+}
diff --git a/api/SimpleAdmin/SimpleAdmin.System/SeedData/SysOrgSeedData.cs b/api/SimpleAdmin/SimpleAdmin.System/SeedData/SysOrgSeedData.cs
index bd7a955ce2a701ddc5ce1ba41e353673858e4daf..ce90ef77fe59114f11c83f9bf812f7862e9a6ac3 100644
--- a/api/SimpleAdmin/SimpleAdmin.System/SeedData/SysOrgSeedData.cs
+++ b/api/SimpleAdmin/SimpleAdmin.System/SeedData/SysOrgSeedData.cs
@@ -1,4 +1,14 @@
-namespace SimpleAdmin.System;
+// Copyright (c) 2022-Now 少林寺驻北固山办事处大神父王喇嘛
+//
+// SimpleAdmin 基于 Apache License Version 2.0 协议发布,可用于商业项目,但必须遵守以下补充条款:
+// 1.请不要删除和修改根目录下的LICENSE文件。
+// 2.请不要删除和修改SimpleAdmin源码头部的版权声明。
+// 3.分发源码时候,请注明软件出处 https://gitee.com/dotnetmoyu/SimpleAdmin
+// 4.基于本软件的作品,只能使用 SimpleAdmin 作为后台服务,除外情况不可商用且不允许二次分发或开源。
+// 5.请不得将本软件应用于危害国家安全、荣誉和利益的行为,不能以任何形式用于非法为目的的行为。
+// 6.任何基于本软件而产生的一切法律纠纷和责任,均于我司无关。
+
+namespace SimpleAdmin.System;
///
/// 机构种子数据
@@ -9,4 +19,4 @@ public class SysOrgSeedData : ISqlSugarEntitySeedData
{
return SeedDataUtil.GetSeedData("seed_sys_org.json");
}
-}
\ No newline at end of file
+}
diff --git a/api/SimpleAdmin/SimpleAdmin.System/SeedData/SysPositionSeedData.cs b/api/SimpleAdmin/SimpleAdmin.System/SeedData/SysPositionSeedData.cs
index a9aeb8f6630603c5612aa868b82b6648ba658eb9..7aecffee9cde2113d310694644043fd171d1cf1b 100644
--- a/api/SimpleAdmin/SimpleAdmin.System/SeedData/SysPositionSeedData.cs
+++ b/api/SimpleAdmin/SimpleAdmin.System/SeedData/SysPositionSeedData.cs
@@ -1,4 +1,14 @@
-namespace SimpleAdmin.System;
+// Copyright (c) 2022-Now 少林寺驻北固山办事处大神父王喇嘛
+//
+// SimpleAdmin 基于 Apache License Version 2.0 协议发布,可用于商业项目,但必须遵守以下补充条款:
+// 1.请不要删除和修改根目录下的LICENSE文件。
+// 2.请不要删除和修改SimpleAdmin源码头部的版权声明。
+// 3.分发源码时候,请注明软件出处 https://gitee.com/dotnetmoyu/SimpleAdmin
+// 4.基于本软件的作品,只能使用 SimpleAdmin 作为后台服务,除外情况不可商用且不允许二次分发或开源。
+// 5.请不得将本软件应用于危害国家安全、荣誉和利益的行为,不能以任何形式用于非法为目的的行为。
+// 6.任何基于本软件而产生的一切法律纠纷和责任,均于我司无关。
+
+namespace SimpleAdmin.System;
///
/// 职位表种子数据
@@ -9,4 +19,4 @@ public class SysPositionSeedData : ISqlSugarEntitySeedData
{
return SeedDataUtil.GetSeedData("seed_sys_position.json");
}
-}
\ No newline at end of file
+}
diff --git a/api/SimpleAdmin/SimpleAdmin.System/SeedData/SysRelationSeedData.cs b/api/SimpleAdmin/SimpleAdmin.System/SeedData/SysRelationSeedData.cs
index e1a0ca973129a92bb470d6b953244c07b681b718..35187eaeff906ebe19bcc75bd948b585d7bc1ed0 100644
--- a/api/SimpleAdmin/SimpleAdmin.System/SeedData/SysRelationSeedData.cs
+++ b/api/SimpleAdmin/SimpleAdmin.System/SeedData/SysRelationSeedData.cs
@@ -1,4 +1,14 @@
-namespace SimpleAdmin.System;
+// Copyright (c) 2022-Now 少林寺驻北固山办事处大神父王喇嘛
+//
+// SimpleAdmin 基于 Apache License Version 2.0 协议发布,可用于商业项目,但必须遵守以下补充条款:
+// 1.请不要删除和修改根目录下的LICENSE文件。
+// 2.请不要删除和修改SimpleAdmin源码头部的版权声明。
+// 3.分发源码时候,请注明软件出处 https://gitee.com/dotnetmoyu/SimpleAdmin
+// 4.基于本软件的作品,只能使用 SimpleAdmin 作为后台服务,除外情况不可商用且不允许二次分发或开源。
+// 5.请不得将本软件应用于危害国家安全、荣誉和利益的行为,不能以任何形式用于非法为目的的行为。
+// 6.任何基于本软件而产生的一切法律纠纷和责任,均于我司无关。
+
+namespace SimpleAdmin.System;
///
/// 关系表种子数据
@@ -9,4 +19,4 @@ public class SysRelationSeedData : ISqlSugarEntitySeedData
{
return SeedDataUtil.GetSeedData("seed_sys_relation.json");
}
-}
\ No newline at end of file
+}
diff --git a/api/SimpleAdmin/SimpleAdmin.System/SeedData/SysResourceSeedData.cs b/api/SimpleAdmin/SimpleAdmin.System/SeedData/SysResourceSeedData.cs
index 6ba130a242c68e11f3070661c687f904d2e7b5a1..d2178e48d2814a1920f5d1aa33aad2a374173b94 100644
--- a/api/SimpleAdmin/SimpleAdmin.System/SeedData/SysResourceSeedData.cs
+++ b/api/SimpleAdmin/SimpleAdmin.System/SeedData/SysResourceSeedData.cs
@@ -1,4 +1,14 @@
-namespace SimpleAdmin.System;
+// Copyright (c) 2022-Now 少林寺驻北固山办事处大神父王喇嘛
+//
+// SimpleAdmin 基于 Apache License Version 2.0 协议发布,可用于商业项目,但必须遵守以下补充条款:
+// 1.请不要删除和修改根目录下的LICENSE文件。
+// 2.请不要删除和修改SimpleAdmin源码头部的版权声明。
+// 3.分发源码时候,请注明软件出处 https://gitee.com/dotnetmoyu/SimpleAdmin
+// 4.基于本软件的作品,只能使用 SimpleAdmin 作为后台服务,除外情况不可商用且不允许二次分发或开源。
+// 5.请不得将本软件应用于危害国家安全、荣誉和利益的行为,不能以任何形式用于非法为目的的行为。
+// 6.任何基于本软件而产生的一切法律纠纷和责任,均于我司无关。
+
+namespace SimpleAdmin.System;
///
/// 资源表种子数据
@@ -9,4 +19,4 @@ public class SysResourceSeedData : ISqlSugarEntitySeedData
{
return SeedDataUtil.GetSeedData("seed_sys_resource.json");
}
-}
\ No newline at end of file
+}
diff --git a/api/SimpleAdmin/SimpleAdmin.System/SeedData/SysRoleSeedData.cs b/api/SimpleAdmin/SimpleAdmin.System/SeedData/SysRoleSeedData.cs
index 0849e0c044bd700d0ff1ee21072b32637867777f..67b932f8dc9a08a4c484fb8cf84ca22050243a6a 100644
--- a/api/SimpleAdmin/SimpleAdmin.System/SeedData/SysRoleSeedData.cs
+++ b/api/SimpleAdmin/SimpleAdmin.System/SeedData/SysRoleSeedData.cs
@@ -1,4 +1,14 @@
-namespace SimpleAdmin.System;
+// Copyright (c) 2022-Now 少林寺驻北固山办事处大神父王喇嘛
+//
+// SimpleAdmin 基于 Apache License Version 2.0 协议发布,可用于商业项目,但必须遵守以下补充条款:
+// 1.请不要删除和修改根目录下的LICENSE文件。
+// 2.请不要删除和修改SimpleAdmin源码头部的版权声明。
+// 3.分发源码时候,请注明软件出处 https://gitee.com/dotnetmoyu/SimpleAdmin
+// 4.基于本软件的作品,只能使用 SimpleAdmin 作为后台服务,除外情况不可商用且不允许二次分发或开源。
+// 5.请不得将本软件应用于危害国家安全、荣誉和利益的行为,不能以任何形式用于非法为目的的行为。
+// 6.任何基于本软件而产生的一切法律纠纷和责任,均于我司无关。
+
+namespace SimpleAdmin.System;
///
/// 角色种子数据
@@ -9,4 +19,4 @@ public class SysRoleSeedData : ISqlSugarEntitySeedData
{
return SeedDataUtil.GetSeedData("seed_sys_role.json");
}
-}
\ No newline at end of file
+}
diff --git a/api/SimpleAdmin/SimpleAdmin.System/SeedData/SysUserSeedData.cs b/api/SimpleAdmin/SimpleAdmin.System/SeedData/SysUserSeedData.cs
index 69d61a89b81748bc5004fba00d157e26a7c978e3..8890f1e78a582ed1dd087d0a96f46bebb213a290 100644
--- a/api/SimpleAdmin/SimpleAdmin.System/SeedData/SysUserSeedData.cs
+++ b/api/SimpleAdmin/SimpleAdmin.System/SeedData/SysUserSeedData.cs
@@ -1,4 +1,14 @@
-namespace SimpleAdmin.System;
+// Copyright (c) 2022-Now 少林寺驻北固山办事处大神父王喇嘛
+//
+// SimpleAdmin 基于 Apache License Version 2.0 协议发布,可用于商业项目,但必须遵守以下补充条款:
+// 1.请不要删除和修改根目录下的LICENSE文件。
+// 2.请不要删除和修改SimpleAdmin源码头部的版权声明。
+// 3.分发源码时候,请注明软件出处 https://gitee.com/dotnetmoyu/SimpleAdmin
+// 4.基于本软件的作品,只能使用 SimpleAdmin 作为后台服务,除外情况不可商用且不允许二次分发或开源。
+// 5.请不得将本软件应用于危害国家安全、荣誉和利益的行为,不能以任何形式用于非法为目的的行为。
+// 6.任何基于本软件而产生的一切法律纠纷和责任,均于我司无关。
+
+namespace SimpleAdmin.System;
///
/// 用户表种子数据
@@ -9,4 +19,4 @@ public class SysUserSeedData : ISqlSugarEntitySeedData
{
return SeedDataUtil.GetSeedData("seed_sys_user.json");
}
-}
\ No newline at end of file
+}
diff --git a/api/SimpleAdmin/SimpleAdmin.System/Services/Auth/Auth/AuthService.cs b/api/SimpleAdmin/SimpleAdmin.System/Services/Auth/Auth/AuthService.cs
index 4661a3ed69192d8e67731b07b631de8570f2ce0a..8757982774de48f699df083d4269639d8d302cd6 100644
--- a/api/SimpleAdmin/SimpleAdmin.System/Services/Auth/Auth/AuthService.cs
+++ b/api/SimpleAdmin/SimpleAdmin.System/Services/Auth/Auth/AuthService.cs
@@ -1,4 +1,14 @@
-namespace SimpleAdmin.System.Services.Auth;
+// Copyright (c) 2022-Now 少林寺驻北固山办事处大神父王喇嘛
+//
+// SimpleAdmin 基于 Apache License Version 2.0 协议发布,可用于商业项目,但必须遵守以下补充条款:
+// 1.请不要删除和修改根目录下的LICENSE文件。
+// 2.请不要删除和修改SimpleAdmin源码头部的版权声明。
+// 3.分发源码时候,请注明软件出处 https://gitee.com/dotnetmoyu/SimpleAdmin
+// 4.基于本软件的作品,只能使用 SimpleAdmin 作为后台服务,除外情况不可商用且不允许二次分发或开源。
+// 5.请不得将本软件应用于危害国家安全、荣誉和利益的行为,不能以任何形式用于非法为目的的行为。
+// 6.任何基于本软件而产生的一切法律纠纷和责任,均于我司无关。
+
+namespace SimpleAdmin.System.Services.Auth;
///
public class AuthService : IAuthService
@@ -7,34 +17,31 @@ public class AuthService : IAuthService
private readonly IEventPublisher _eventPublisher;
private readonly IConfigService _configService;
private readonly ISysUserService _userService;
- private readonly IRoleService _roleService;
+ private readonly ISysOrgService _sysOrgService;
- public AuthService(ISimpleCacheService simpleCacheService,
- IEventPublisher eventPublisher,
- IConfigService configService,
- ISysUserService userService,
- IRoleService roleService)
+ public AuthService(ISimpleCacheService simpleCacheService, IEventPublisher eventPublisher, IConfigService configService,
+ ISysUserService userService, ISysOrgService sysOrgService)
{
_simpleCacheService = simpleCacheService;
_eventPublisher = eventPublisher;
_configService = configService;
_userService = userService;
- _roleService = roleService;
+ _sysOrgService = sysOrgService;
}
///
public async Task GetCaptchaInfo()
{
- var config = await _configService.GetByConfigKey(CateGoryConst.Config_LOGIN_POLICY, DevConfigConst.LOGIN_CAPTCHA_TYPE);
+ var config = await _configService.GetByConfigKey(CateGoryConst.CONFIG_LOGIN_POLICY, SysConfigConst.LOGIN_CAPTCHA_TYPE);
var captchaType = (CaptchaType)Enum.Parse(typeof(CaptchaType), config.ConfigValue);
//生成验证码
- var captchInfo = CaptchaUtil.CreateCaptcha(captchaType, 4, 100, 38);
- //生成请求号,并将验证码放入redis
- var reqNo = AddValidCodeToRedis(captchInfo.Code);
+ var captchaInfo = CaptchaUtil.CreateCaptcha(captchaType, 4, 100, 38);
+ //生成请求号,并将验证码放入缓存
+ var reqNo = AddValidCodeToRedis(captchaInfo.Code);
//返回验证码和请求号
return new PicValidCodeOutPut
{
- ValidCodeBase64 = captchInfo.Base64Str,
+ ValidCodeBase64 = captchaInfo.Base64Str,
ValidCodeReqNo = reqNo
};
}
@@ -43,8 +50,8 @@ public class AuthService : IAuthService
public async Task GetPhoneValidCode(GetPhoneValidCodeInput input, LoginClientTypeEnum loginClientType)
{
await ValidPhoneValidCode(input, loginClientType);//校验手机号验证码
- string? phoneValidCode;
- _ = RandomHelper.CreateNum(6);//生产随机数字
+ var phoneValidCode = RandomHelper.CreateNum(6);//生产随机数字;
+
#region 发送短信和记录数据库等操作
@@ -55,48 +62,37 @@ public class AuthService : IAuthService
#endregion 发送短信和记录数据库等操作
- //生成请求号,并将验证码放入redis
+ //生成请求号,并将验证码放入缓存
var reqNo = AddValidCodeToRedis(phoneValidCode);
return reqNo;
}
-
-
///
public async Task Login(LoginInput input, LoginClientTypeEnum loginClientType)
{
- //判断是否有验证码
- var sysBase = await _configService.GetByConfigKey(CateGoryConst.Config_SYS_BASE, DevConfigConst.LOGIN_CAPTCHA_OPEN);
- if (sysBase != null)//如果有这个配置项
- {
- if (sysBase.ConfigValue.ToBoolean())//如果需要验证码
- {
- //如果没填验证码,提示验证码不能为空
- if (string.IsNullOrEmpty(input.ValidCode) || string.IsNullOrEmpty(input.ValidCodeReqNo)) throw Oops.Bah("验证码不能为空").StatusCode(410);
- ValidValidCode(input.ValidCode, input.ValidCodeReqNo);//校验验证码
- }
- }
+ await CheckCaptcha(input);//检查验证码
+ await CheckWebOpen(input);//检查网站是否开启
var password = CryptogramUtil.Sm2Decrypt(input.Password);//SM2解密
- var loginPolicy = await _configService.GetListByCategory(CateGoryConst.Config_LOGIN_POLICY);
- BeforeLogin(loginPolicy, input.Account);//登录前校验
+ //获取多租户配置
+ var isTenant = await _configService.IsTenant();
+ //获取登录策略
+ var loginPolicy = await _configService.GetConfigsByCategory(CateGoryConst.CONFIG_LOGIN_POLICY);
+ await BeforeLogin(loginPolicy, input, isTenant);//登录前校验
// 根据账号获取用户信息,根据B端或C端判断
if (loginClientType == LoginClientTypeEnum.B)//如果是B端
{
- var userInfo = await _userService.GetUserByAccount(input.Account);//获取用户信息
+ var userInfo = await _userService.GetUserByAccount(input.Account, input.TenantId);//获取用户信息
if (userInfo == null) throw Oops.Bah("用户不存在");//用户不存在
if (userInfo.Password != password)
{
- LoginError(loginPolicy, input.Account);//登录错误操作
+ LoginError(loginPolicy, input, isTenant);//登录错误操作
throw Oops.Bah("账号密码错误");//账号密码错误
}
- var result = await ExecLoginB(userInfo, input.Device, loginClientType);// 执行B端登录
+ var result = await ExecLoginB(userInfo, input.Device, loginClientType, input.TenantId);// 执行B端登录
return result;
}
- else
- {
- //执行c端登录
- return null;
- }
+ //执行c端登录
+ return null;
}
///
@@ -108,22 +104,19 @@ public class AuthService : IAuthService
{
var userInfo = await _userService.GetUserByPhone(input.Phone);//获取信息
if (userInfo == null) throw Oops.Bah("用户不存在");//用户不存在
- var result = await ExecLoginB(userInfo, input.Device, loginClientType);// 执行B端登录
+ var result = await ExecLoginB(userInfo, input.Device, loginClientType, input.TenantId);// 执行B端登录
RemoveValidCodeFromRedis(input.ValidCodeReqNo);//删除验证码
return result;
}
- else
- {
- //执行c端登录
- return null;
- }
+ //执行c端登录
+ return null;
}
///
public async Task LoginOut(string token, LoginClientTypeEnum loginClientType)
{
//获取用户信息
- var userinfo = await _userService.GetUserByAccount(UserManager.UserAccount);
+ var userinfo = await _userService.GetUserByAccount(UserManager.UserAccount, UserManager.TenantId);
if (userinfo != null)
{
var loginEvent = new LoginEvent
@@ -134,16 +127,17 @@ public class AuthService : IAuthService
};
RemoveTokenFromRedis(loginEvent, loginClientType);//移除token
//发布登出事件总线
- await _eventPublisher.PublishAsync(EventSubscriberConst.LoginOutB, loginEvent);
+ await _eventPublisher.PublishAsync(EventSubscriberConst.LOGIN_OUT_B, loginEvent);
}
}
///
public async Task GetLoginUser()
{
- var userInfo = await _userService.GetUserByAccount(UserManager.UserAccount);//根据账号获取用户信息
+ var userInfo = await _userService.GetUserByAccount(UserManager.UserAccount, UserManager.TenantId);//根据账号获取用户信息
if (userInfo != null)
{
+ userInfo.Avatar = await _userService.GetUserAvatar(userInfo.Id);//获取头像
return userInfo.Adapt();
}
return null;
@@ -151,19 +145,85 @@ public class AuthService : IAuthService
#region 方法
+ ///
+ /// 检查验证码
+ ///
+ ///
+ ///
+ public async Task CheckCaptcha(LoginInput input)
+ {
+ //判断是否有验证码
+ var sysBase = await _configService.GetByConfigKey(CateGoryConst.CONFIG_LOGIN_POLICY, SysConfigConst.LOGIN_CAPTCHA_OPEN);
+ if (sysBase != null)//如果有这个配置项
+ {
+ if (sysBase.ConfigValue.ToBoolean())//如果需要验证码
+ {
+ //如果没填验证码,提示验证码不能为空
+ if (string.IsNullOrEmpty(input.ValidCode) || string.IsNullOrEmpty(input.ValidCodeReqNo))
+ throw Oops.Bah("验证码不能为空").StatusCode(410);
+ ValidValidCode(input.ValidCode, input.ValidCodeReqNo);//校验验证码
+ }
+ }
+ }
+
+ ///
+ /// 检查网站是否开启
+ ///
+ ///
+ ///
+ public async Task CheckWebOpen(LoginInput input)
+ {
+ //判断是否开启web访问
+ var webStatus = await _configService.GetByConfigKey(CateGoryConst.CONFIG_SYS_BASE, SysConfigConst.SYS_WEB_STATUS);
+ if (webStatus != null && webStatus.ConfigValue == CommonStatusConst.DISABLED
+ && input.Account.ToLower() != SysRoleConst.SUPER_ADMIN.ToLower())//如果禁用了网站并且不是超级管理员
+ {
+ var closePrompt = await _configService.GetByConfigKey(CateGoryConst.CONFIG_SYS_BASE, SysConfigConst.SYS_WEB_CLOSE_PROMPT);
+ throw Oops.Bah(closePrompt.ConfigValue);
+ }
+ }
+
///
/// 登录之前执行的方法
///
///
- ///
- public void BeforeLogin(List loginPolicy, string userName)
+ ///
+ ///
+ public async Task BeforeLogin(List loginPolicy, LoginInput input, bool isTenant)
{
- var lockTime = loginPolicy.First(x => x.ConfigKey == DevConfigConst.LOGIN_ERROR_LOCK).ConfigValue.ToInt();//获取锁定时间
- var errorCount = loginPolicy.First(x => x.ConfigKey == DevConfigConst.LOGIN_ERROR_COUNT).ConfigValue.ToInt();//获取错误次数
- var key = SystemConst.Cache_LoginErrorCount + userName;//获取登录错误次数Key值
+ var lockTime = loginPolicy.First(x => x.ConfigKey == SysConfigConst.LOGIN_ERROR_LOCK).ConfigValue.ToInt();//获取锁定时间
+ var errorCount = loginPolicy.First(x => x.ConfigKey == SysConfigConst.LOGIN_ERROR_COUNT).ConfigValue.ToInt();//获取错误次数
+ var key = SystemConst.CACHE_LOGIN_ERROR_COUNT;//获取登录错误次数Key值
+ //如果是关闭多租户则直接用账号
+ if (!isTenant)
+ key += input.Account;
+ else
+ {
+ //如果租户ID为空表示用域名登录
+ if (input.TenantId == null)
+ {
+ //获取域名
+ var origin = App.HttpContext.Request.Headers["Origin"].ToString();
+ // 如果Origin头不存在,可以尝试使用Referer头作为备选
+ if (string.IsNullOrEmpty(origin))
+ origin = App.HttpContext.Request.Headers["Referer"].ToString();
+ //根据域名获取二级域名
+ var domain = origin.Split("//")[1].Split(".")[0];
+ //根据二级域名获取租户
+ var tenantList = await _sysOrgService.GetTenantList();
+ var tenant = tenantList.FirstOrDefault(x => x.Code.ToLower() == domain);//获取租户默认是机构编码
+ if (tenant != null)
+ input.TenantId = tenant.Id;
+ else
+ throw Oops.Bah("租户不存在");
+ }
+ //如果是手动选择多租户则用账号+租户
+ key += $"{input.TenantId}:{input.Account}";
+ }
var errorCountCache = _simpleCacheService.Get(key);//获取登录错误次数
if (errorCountCache >= errorCount)
{
+ _simpleCacheService.SetExpire(key, TimeSpan.FromMinutes(lockTime));//设置缓存
throw Oops.Bah($"密码错误次数过多,请{lockTime}分钟后再试");
}
}
@@ -172,11 +232,20 @@ public class AuthService : IAuthService
/// 登录错误操作
///
///
- ///
- public void LoginError(List loginPolicy, string userName)
+ ///
+ ///
+ public void LoginError(List loginPolicy, LoginInput input, bool isTenant)
{
- var resetTime = loginPolicy.First(x => x.ConfigKey == DevConfigConst.LOGIN_ERROR_RESET_TIME).ConfigValue.ToInt();//获取重置时间
- var key = SystemConst.Cache_LoginErrorCount + userName;//获取登录错误次数Key值
+ var resetTime = loginPolicy.First(x => x.ConfigKey == SysConfigConst.LOGIN_ERROR_RESET_TIME).ConfigValue.ToInt();//获取重置时间
+ var key = SystemConst.CACHE_LOGIN_ERROR_COUNT;//获取登录错误次数Key值
+ //如果是关闭多租户则直接用账号
+ if (!isTenant)
+ key += input.Account;
+ else
+ {
+ //如果是手动选择多租户则用账号+租户
+ key += $"{input.TenantId}:{input.Account}";
+ }
_simpleCacheService.Increment(key, 1);// 登录错误次数+1
_simpleCacheService.SetExpire(key, TimeSpan.FromMinutes(resetTime));//设置过期时间
}
@@ -189,8 +258,8 @@ public class AuthService : IAuthService
/// 是否从Redis删除
public void ValidValidCode(string validCode, string validCodeReqNo, bool isDelete = true)
{
- var key = SystemConst.Cache_Captcha + validCodeReqNo;//获取验证码Key值
- var code = _simpleCacheService.Get(key);//从redis拿数据
+ var key = SystemConst.CACHE_CAPTCHA + validCodeReqNo;//获取验证码Key值
+ var code = _simpleCacheService.Get(key);//从缓存拿数据
if (isDelete) RemoveValidCodeFromRedis(validCodeReqNo);//如果需要删除验证码
if (code != null && validCode != null)//如果有
{
@@ -209,7 +278,7 @@ public class AuthService : IAuthService
///
public void RemoveValidCodeFromRedis(string validCodeReqNo)
{
- var key = SystemConst.Cache_Captcha + validCodeReqNo;//获取验证码Key值
+ var key = SystemConst.CACHE_CAPTCHA + validCodeReqNo;//获取验证码Key值
_simpleCacheService.Remove(key);//删除验证码
}
@@ -234,12 +303,12 @@ public class AuthService : IAuthService
else
{
//校验C段用户手机号
- throw Oops.Bah("手机号不存在");//抛出验证码不能为空
+ throw Oops.Bah("手机号不存在");//手机号不存在
}
}
///
- /// 添加验证码到redis
+ /// 添加验证码到缓存
///
/// 验证码
/// 过期时间
@@ -248,8 +317,8 @@ public class AuthService : IAuthService
{
//生成请求号
var reqNo = CommonUtils.GetSingleId().ToString();
- //插入redis
- _simpleCacheService.Set(SystemConst.Cache_Captcha + reqNo, code, TimeSpan.FromMinutes(expire));
+ //插入缓存
+ _simpleCacheService.Set(SystemConst.CACHE_CAPTCHA + reqNo, code, TimeSpan.FromMinutes(expire));
return reqNo;
}
@@ -259,28 +328,36 @@ public class AuthService : IAuthService
/// 用户信息
/// 登录设备
/// 登录类型
+ /// 租户id
///
- public async Task ExecLoginB(SysUser sysUser, AuthDeviceTypeEumu device, LoginClientTypeEnum loginClientType)
+ public async Task ExecLoginB(SysUser sysUser, AuthDeviceTypeEnum device, LoginClientTypeEnum loginClientType,
+ long? tenantId)
{
- if (sysUser.UserStatus == DevDictConst.COMMON_STATUS_DISABLED) throw Oops.Bah("账号已停用");//账号冻结
-
+ if (sysUser.Status == CommonStatusConst.DISABLED)
+ throw Oops.Bah("账号已停用");//账号冻结
+ if (sysUser.ModuleList.Count == 0) throw Oops.Bah("该账号未分配模块,请联系管理员");//没有分配菜单权限
+ var org = await _sysOrgService.GetSysOrgById(sysUser.OrgId);//获取机构
+ if (org.Status == CommonStatusConst.DISABLED) throw Oops.Bah("所属公司/部门已停用,请联系管理员");//机构冻结
//生成Token
var accessToken = JWTEncryption.Encrypt(new Dictionary
{
{
- ClaimConst.UserId, sysUser.Id
+ ClaimConst.USER_ID, sysUser.Id
+ },
+ {
+ ClaimConst.ACCOUNT, sysUser.Account
},
{
- ClaimConst.Account, sysUser.Account
+ ClaimConst.NAME, sysUser.Name
},
{
- ClaimConst.Name, sysUser.Name
+ ClaimConst.IS_SUPER_ADMIN, sysUser.RoleCodeList.Contains(SysRoleConst.SUPER_ADMIN)
},
{
- ClaimConst.IsSuperAdmin, sysUser.RoleCodeList.Contains(RoleConst.SuperAdmin)
+ ClaimConst.ORG_ID, sysUser.OrgId
},
{
- ClaimConst.OrgId, sysUser.OrgId
+ ClaimConst.TENANT_ID, tenantId
}
});
var expire = App.GetConfig("JWTSettings:ExpiredTime");//获取过期时间(分钟)
@@ -291,7 +368,7 @@ public class AuthService : IAuthService
// 设置响应报文头
App.HttpContext.SetTokensOfResponseHeaders(accessToken, refreshToken);
//登录事件参数
- var logingEvent = new LoginEvent
+ var loginEvent = new LoginEvent
{
Ip = App.HttpContext.GetRemoteIpAddressToIPv4(),
Device = device,
@@ -299,19 +376,21 @@ public class AuthService : IAuthService
SysUser = sysUser,
Token = accessToken
};
- await WriteTokenToRedis(logingEvent, loginClientType);//写入token到redis
- await _eventPublisher.PublishAsync(EventSubscriberConst.LoginB, logingEvent);//发布登录事件总线
+ await WriteTokenToRedis(loginEvent, loginClientType);//写入token到缓存
+ await _eventPublisher.PublishAsync(EventSubscriberConst.LOGIN_B, loginEvent);//发布登录事件总线
//返回结果
return new LoginOutPut
{
Token = accessToken,
Account = sysUser.Account,
- Name = sysUser.Name
+ Name = sysUser.Name,
+ DefaultModule = sysUser.DefaultModule,
+ ModuleList = sysUser.ModuleList
};
}
///
- /// 写入用户token到redis
+ /// 写入用户token到缓存
///
/// 登录事件参数
/// 登录类型
@@ -329,12 +408,13 @@ public class AuthService : IAuthService
LoginClientType = loginClientType,
Token = loginEvent.Token
};
- //如果redis有数据
+ //如果缓存有数据
if (tokenInfos != null)
{
var isSingle = false;//默认不开启单用户登录
- var singleConfig = await _configService.GetByConfigKey(CateGoryConst.Config_LOGIN_POLICY, DevConfigConst.LOGIN_SINGLE_OPEN);//获取系统单用户登录选项
- if (singleConfig != null) isSingle = singleConfig.ConfigValue.ToBoolean();//如果配置不为空则设置单用户登录选项为系统配置的值
+ var singleConfig = await _configService.GetByConfigKey(CateGoryConst.CONFIG_LOGIN_POLICY, SysConfigConst.LOGIN_SINGLE_OPEN);//获取系统单用户登录选项
+ if (singleConfig != null)
+ isSingle = singleConfig.ConfigValue.ToBoolean();//如果配置不为空则设置单用户登录选项为系统配置的值
//判断是否单用户登录
if (isSingle)
{
@@ -356,11 +436,11 @@ public class AuthService : IAuthService
}
//添加到token列表
- _simpleCacheService.HashAdd(CacheConst.Cache_UserToken, loginEvent.SysUser.Id.ToString(), tokenInfos);
+ _simpleCacheService.HashAdd(CacheConst.CACHE_USER_TOKEN, loginEvent.SysUser.Id.ToString(), tokenInfos);
}
///
- /// redis删除用户token
+ /// 缓存删除用户token
///
/// 登录事件参数
/// 登录类型
@@ -377,15 +457,12 @@ public class AuthService : IAuthService
if (tokenInfos.Count > 0)
{
//更新token列表
- _simpleCacheService.HashAdd(CacheConst.Cache_UserToken, loginEvent.SysUser.Id.ToString(), tokenInfos);
+ _simpleCacheService.HashAdd(CacheConst.CACHE_USER_TOKEN, loginEvent.SysUser.Id.ToString(), tokenInfos);
}
else
{
//从列表中删除
- _simpleCacheService.HashDel>(CacheConst.Cache_UserToken, new string[]
- {
- loginEvent.SysUser.Id.ToString()
- });
+ _simpleCacheService.HashDel>(CacheConst.CACHE_USER_TOKEN, loginEvent.SysUser.Id.ToString());
}
}
}
@@ -397,8 +474,8 @@ public class AuthService : IAuthService
/// token列表
private List GetTokenInfos(long userId)
{
- //redis获取用户token列表
- var tokenInfos = _simpleCacheService.HashGetOne>(CacheConst.Cache_UserToken, userId.ToString());
+ //缓存获取用户token列表
+ var tokenInfos = _simpleCacheService.HashGetOne>(CacheConst.CACHE_USER_TOKEN, userId.ToString());
if (tokenInfos != null)
{
tokenInfos = tokenInfos.Where(it => it.TokenTimeout > DateTime.Now).ToList();//去掉登录超时的
@@ -413,7 +490,7 @@ public class AuthService : IAuthService
/// Token列表
private async Task SingleLogin(string userId, List tokenInfos)
{
- await _eventPublisher.PublishAsync(EventSubscriberConst.UserLoginOut, new UserLoginOutEvent
+ await _eventPublisher.PublishAsync(EventSubscriberConst.USER_LOGIN_OUT, new UserLoginOutEvent
{
Message = "您的账号已在别处登录!",
TokenInfos = tokenInfos,
@@ -422,4 +499,4 @@ public class AuthService : IAuthService
}
#endregion 方法
-}
\ No newline at end of file
+}
diff --git a/api/SimpleAdmin/SimpleAdmin.System/Services/Auth/Auth/Dto/AuthInput.cs b/api/SimpleAdmin/SimpleAdmin.System/Services/Auth/Auth/Dto/AuthInput.cs
index f8a80103f897c39e722ae3af56e5d0148ecc1e0b..2f44162dba1734680aae42cc5cb15e97c7050e89 100644
--- a/api/SimpleAdmin/SimpleAdmin.System/Services/Auth/Auth/Dto/AuthInput.cs
+++ b/api/SimpleAdmin/SimpleAdmin.System/Services/Auth/Auth/Dto/AuthInput.cs
@@ -1,4 +1,14 @@
-namespace SimpleAdmin.System;
+// Copyright (c) 2022-Now 少林寺驻北固山办事处大神父王喇嘛
+//
+// SimpleAdmin 基于 Apache License Version 2.0 协议发布,可用于商业项目,但必须遵守以下补充条款:
+// 1.请不要删除和修改根目录下的LICENSE文件。
+// 2.请不要删除和修改SimpleAdmin源码头部的版权声明。
+// 3.分发源码时候,请注明软件出处 https://gitee.com/dotnetmoyu/SimpleAdmin
+// 4.基于本软件的作品,只能使用 SimpleAdmin 作为后台服务,除外情况不可商用且不允许二次分发或开源。
+// 5.请不得将本软件应用于危害国家安全、荣誉和利益的行为,不能以任何形式用于非法为目的的行为。
+// 6.任何基于本软件而产生的一切法律纠纷和责任,均于我司无关。
+
+namespace SimpleAdmin.System;
///
/// 权限认证输入
@@ -43,13 +53,18 @@ public class LoginInput : ValidCodeInput
/// 设备类型,默认PC
///
/// 0
- public AuthDeviceTypeEumu Device { get; set; } = AuthDeviceTypeEumu.PC;
+ public AuthDeviceTypeEnum Device { get; set; } = AuthDeviceTypeEnum.PC;
+
+ ///
+ /// 租户ID
+ ///
+ public long? TenantId { get; set; }
}
///
/// 登出输入参数
///
-public class LoginOutIput
+public class LoginOutInput
{
///
/// token
@@ -79,5 +94,10 @@ public class LoginByPhoneInput : GetPhoneValidCodeInput
/// 设备类型,默认PC
///
/// 0
- public AuthDeviceTypeEumu Device { get; set; } = AuthDeviceTypeEumu.PC;
-}
\ No newline at end of file
+ public AuthDeviceTypeEnum Device { get; set; } = AuthDeviceTypeEnum.PC;
+
+ ///
+ /// 租户ID
+ ///
+ public long? TenantId { get; set; }
+}
diff --git a/api/SimpleAdmin/SimpleAdmin.System/Services/Auth/Auth/Dto/AuthOutPut.cs b/api/SimpleAdmin/SimpleAdmin.System/Services/Auth/Auth/Dto/AuthOutPut.cs
index 927a0c1bb5f32267944d34d7a18595934204ff8a..65eafbec2cc5512c52dc0567e5796ce6c64083ba 100644
--- a/api/SimpleAdmin/SimpleAdmin.System/Services/Auth/Auth/Dto/AuthOutPut.cs
+++ b/api/SimpleAdmin/SimpleAdmin.System/Services/Auth/Auth/Dto/AuthOutPut.cs
@@ -1,4 +1,14 @@
-namespace SimpleAdmin.System;
+// Copyright (c) 2022-Now 少林寺驻北固山办事处大神父王喇嘛
+//
+// SimpleAdmin 基于 Apache License Version 2.0 协议发布,可用于商业项目,但必须遵守以下补充条款:
+// 1.请不要删除和修改根目录下的LICENSE文件。
+// 2.请不要删除和修改SimpleAdmin源码头部的版权声明。
+// 3.分发源码时候,请注明软件出处 https://gitee.com/dotnetmoyu/SimpleAdmin
+// 4.基于本软件的作品,只能使用 SimpleAdmin 作为后台服务,除外情况不可商用且不允许二次分发或开源。
+// 5.请不得将本软件应用于危害国家安全、荣誉和利益的行为,不能以任何形式用于非法为目的的行为。
+// 6.任何基于本软件而产生的一切法律纠纷和责任,均于我司无关。
+
+namespace SimpleAdmin.System;
public class AuthOutPut
{
@@ -39,6 +49,16 @@ public class LoginOutPut
/// 姓名
///
public string Name { get; set; }
+
+ ///
+ /// 默认模块
+ ///
+ public long? DefaultModule { get; set; }
+
+ ///
+ /// 模块列表
+ ///
+ public List ModuleList { get; set; }
}
///
@@ -121,4 +141,14 @@ public class LoginUserOutput
/// 按钮码集合
///
public List ButtonCodeList { get; set; }
-}
\ No newline at end of file
+
+ ///
+ /// 机构及以下机构ID集合
+ ///
+ public List ModuleList { get; set; } = new List();
+
+ ///
+ /// 默认模块
+ ///
+ public long? DefaultModule { get; set; }
+}
diff --git a/api/SimpleAdmin/SimpleAdmin.System/Services/Auth/Auth/IAuthService.cs b/api/SimpleAdmin/SimpleAdmin.System/Services/Auth/Auth/IAuthService.cs
index 979006b0f89f4fb1d78d1f18e44d949a083870b8..8bcb72c9931e7f18c415d8f53f7ec3c3e9832ede 100644
--- a/api/SimpleAdmin/SimpleAdmin.System/Services/Auth/Auth/IAuthService.cs
+++ b/api/SimpleAdmin/SimpleAdmin.System/Services/Auth/Auth/IAuthService.cs
@@ -1,4 +1,14 @@
-namespace SimpleAdmin.System;
+// Copyright (c) 2022-Now 少林寺驻北固山办事处大神父王喇嘛
+//
+// SimpleAdmin 基于 Apache License Version 2.0 协议发布,可用于商业项目,但必须遵守以下补充条款:
+// 1.请不要删除和修改根目录下的LICENSE文件。
+// 2.请不要删除和修改SimpleAdmin源码头部的版权声明。
+// 3.分发源码时候,请注明软件出处 https://gitee.com/dotnetmoyu/SimpleAdmin
+// 4.基于本软件的作品,只能使用 SimpleAdmin 作为后台服务,除外情况不可商用且不允许二次分发或开源。
+// 5.请不得将本软件应用于危害国家安全、荣誉和利益的行为,不能以任何形式用于非法为目的的行为。
+// 6.任何基于本软件而产生的一切法律纠纷和责任,均于我司无关。
+
+namespace SimpleAdmin.System;
///
/// 权限校验服务
@@ -48,4 +58,4 @@ public interface IAuthService : ITransient
/// 登出类型
///
Task LoginOut(string token, LoginClientTypeEnum loginClientType);
-}
\ No newline at end of file
+}
diff --git a/api/SimpleAdmin/SimpleAdmin.System/Services/Auth/Session/Dto/SessionInput.cs b/api/SimpleAdmin/SimpleAdmin.System/Services/Auth/Session/Dto/SessionInput.cs
index 1f801c319e2bbb82e439b4556ac35732ae3604a5..aa67a122eb7bd289cefa55298079515f49f64cfe 100644
--- a/api/SimpleAdmin/SimpleAdmin.System/Services/Auth/Session/Dto/SessionInput.cs
+++ b/api/SimpleAdmin/SimpleAdmin.System/Services/Auth/Session/Dto/SessionInput.cs
@@ -1,4 +1,14 @@
-namespace SimpleAdmin.System;
+// Copyright (c) 2022-Now 少林寺驻北固山办事处大神父王喇嘛
+//
+// SimpleAdmin 基于 Apache License Version 2.0 协议发布,可用于商业项目,但必须遵守以下补充条款:
+// 1.请不要删除和修改根目录下的LICENSE文件。
+// 2.请不要删除和修改SimpleAdmin源码头部的版权声明。
+// 3.分发源码时候,请注明软件出处 https://gitee.com/dotnetmoyu/SimpleAdmin
+// 4.基于本软件的作品,只能使用 SimpleAdmin 作为后台服务,除外情况不可商用且不允许二次分发或开源。
+// 5.请不得将本软件应用于危害国家安全、荣誉和利益的行为,不能以任何形式用于非法为目的的行为。
+// 6.任何基于本软件而产生的一切法律纠纷和责任,均于我司无关。
+
+namespace SimpleAdmin.System;
///
/// 会话分页查询
@@ -32,4 +42,4 @@ public class ExitTokenInput : BaseIdInput
///
[Required(ErrorMessage = "Tokens不能为空")]
public List Tokens { get; set; }
-}
\ No newline at end of file
+}
diff --git a/api/SimpleAdmin/SimpleAdmin.System/Services/Auth/Session/Dto/SessionOutput.cs b/api/SimpleAdmin/SimpleAdmin.System/Services/Auth/Session/Dto/SessionOutput.cs
index 4bd989700e24d52c0b2e6c388bce722c028dbb3f..0d2f619cfba4febd1f6308d06c842e9e17296e42 100644
--- a/api/SimpleAdmin/SimpleAdmin.System/Services/Auth/Session/Dto/SessionOutput.cs
+++ b/api/SimpleAdmin/SimpleAdmin.System/Services/Auth/Session/Dto/SessionOutput.cs
@@ -1,4 +1,14 @@
-namespace SimpleAdmin.System;
+// Copyright (c) 2022-Now 少林寺驻北固山办事处大神父王喇嘛
+//
+// SimpleAdmin 基于 Apache License Version 2.0 协议发布,可用于商业项目,但必须遵守以下补充条款:
+// 1.请不要删除和修改根目录下的LICENSE文件。
+// 2.请不要删除和修改SimpleAdmin源码头部的版权声明。
+// 3.分发源码时候,请注明软件出处 https://gitee.com/dotnetmoyu/SimpleAdmin
+// 4.基于本软件的作品,只能使用 SimpleAdmin 作为后台服务,除外情况不可商用且不允许二次分发或开源。
+// 5.请不得将本软件应用于危害国家安全、荣誉和利益的行为,不能以任何形式用于非法为目的的行为。
+// 6.任何基于本软件而产生的一切法律纠纷和责任,均于我司无关。
+
+namespace SimpleAdmin.System;
///
/// 会话输出
@@ -81,4 +91,4 @@ public class SessionAnalysisOutPut
/// BC端会话比例
///
public string ProportionOfBAndC { get; set; }
-}
\ No newline at end of file
+}
diff --git a/api/SimpleAdmin/SimpleAdmin.System/Services/Auth/Session/ISessionService.cs b/api/SimpleAdmin/SimpleAdmin.System/Services/Auth/Session/ISessionService.cs
index 185ece5b909f2db442a6729008fae53ec7811758..47af0e3e2f9182ea134900bc5511ec5dd60ae430 100644
--- a/api/SimpleAdmin/SimpleAdmin.System/Services/Auth/Session/ISessionService.cs
+++ b/api/SimpleAdmin/SimpleAdmin.System/Services/Auth/Session/ISessionService.cs
@@ -1,4 +1,14 @@
-namespace SimpleAdmin.System;
+// Copyright (c) 2022-Now 少林寺驻北固山办事处大神父王喇嘛
+//
+// SimpleAdmin 基于 Apache License Version 2.0 协议发布,可用于商业项目,但必须遵守以下补充条款:
+// 1.请不要删除和修改根目录下的LICENSE文件。
+// 2.请不要删除和修改SimpleAdmin源码头部的版权声明。
+// 3.分发源码时候,请注明软件出处 https://gitee.com/dotnetmoyu/SimpleAdmin
+// 4.基于本软件的作品,只能使用 SimpleAdmin 作为后台服务,除外情况不可商用且不允许二次分发或开源。
+// 5.请不得将本软件应用于危害国家安全、荣誉和利益的行为,不能以任何形式用于非法为目的的行为。
+// 6.任何基于本软件而产生的一切法律纠纷和责任,均于我司无关。
+
+namespace SimpleAdmin.System;
///
/// 会话管理服务
@@ -36,4 +46,4 @@ public interface ISessionService : ITransient
/// 查询参数
/// C端会话列表
Task> PageC(SessionPageInput input);
-}
\ No newline at end of file
+}
diff --git a/api/SimpleAdmin/SimpleAdmin.System/Services/Auth/Session/SessionService.cs b/api/SimpleAdmin/SimpleAdmin.System/Services/Auth/Session/SessionService.cs
index 1b0eb75206822422b7d59081acbe791ca0a33353..e7a76070e4dbb7821aafce80ff3a2d72b2fe1005 100644
--- a/api/SimpleAdmin/SimpleAdmin.System/Services/Auth/Session/SessionService.cs
+++ b/api/SimpleAdmin/SimpleAdmin.System/Services/Auth/Session/SessionService.cs
@@ -1,5 +1,14 @@
-using Masuit.Tools.DateTimeExt;
-using Masuit.Tools.Models;
+// Copyright (c) 2022-Now 少林寺驻北固山办事处大神父王喇嘛
+//
+// SimpleAdmin 基于 Apache License Version 2.0 协议发布,可用于商业项目,但必须遵守以下补充条款:
+// 1.请不要删除和修改根目录下的LICENSE文件。
+// 2.请不要删除和修改SimpleAdmin源码头部的版权声明。
+// 3.分发源码时候,请注明软件出处 https://gitee.com/dotnetmoyu/SimpleAdmin
+// 4.基于本软件的作品,只能使用 SimpleAdmin 作为后台服务,除外情况不可商用且不允许二次分发或开源。
+// 5.请不得将本软件应用于危害国家安全、荣誉和利益的行为,不能以任何形式用于非法为目的的行为。
+// 6.任何基于本软件而产生的一切法律纠纷和责任,均于我司无关。
+
+using Masuit.Tools.DateTimeExt;
namespace SimpleAdmin.System;
@@ -29,33 +38,33 @@ public class SessionService : DbRepository, ISessionService
.WhereIF(!string.IsNullOrEmpty(input.Name), it => it.Name.Contains(input.Name))//根据姓名查询
.WhereIF(!string.IsNullOrEmpty(input.Account), it => it.Account.Contains(input.Account))//根据账号查询
.WhereIF(!string.IsNullOrEmpty(input.LatestLoginIp), it => it.LatestLoginIp.Contains(input.LatestLoginIp))//根据IP查询
- .OrderBy(it => it.LatestLoginTime, OrderByType.Desc)
- .Select()
- .Mapper(it =>
+ .OrderBy(it => it.LatestLoginTime, OrderByType.Desc).Select().Mapper(it =>
{
var tokenInfos = bTokenInfoDic[it.Id.ToString()];//获取用户token信息
GetTokenInfos(ref tokenInfos, LoginClientTypeEnum.B);//获取剩余时间
it.TokenCount = tokenInfos.Count;//令牌数量
it.TokenSignList = tokenInfos;//令牌列表
//如果有mqtt客户端ID就是在线
- it.OnlineStatus = tokenInfos.Any(it => it.ClientIds.Count > 0) ? DevDictConst.ONLINE_STATUS_ONLINE : DevDictConst.ONLINE_STATUS_OFFLINE;
+ it.OnlineStatus = tokenInfos.Any(it => it.ClientIds.Count > 0)
+ ? SysDictConst.ONLINE_STATUS_ONLINE
+ : SysDictConst.ONLINE_STATUS_OFFLINE;
});
- var pageInfo = await query.ToPagedListAsync(input.Current, input.Size);//分页
- pageInfo.Records.OrderByDescending(it => it.TokenCount);
+ var pageInfo = await query.ToPagedListAsync(input.PageNum, input.PageSize);//分页
+ pageInfo.List.OrderByDescending(it => it.TokenCount);
return pageInfo;
}
///
public async Task> PageC(SessionPageInput input)
{
- return new SqlSugarPagedList() { Current = 1, Size = 20, Total = 0, Pages = 1, HasNextPages = false };
+ return new SqlSugarPagedList { PageNum = 1, PageSize = 20, Total = 0, Pages = 1, HasNextPages = false };
}
///
public SessionAnalysisOutPut Analysis()
{
- var tokenDic = GetTokenDicFromRedis();//redistoken会话字典信息
+ var tokenDic = GetTokenDicFromRedis();//redisToken会话字典信息
var tokenInfosList = tokenDic.Values.ToList();//端token列表
var dicB = new Dictionary>();
var dicC = new Dictionary>();
@@ -75,11 +84,11 @@ public class SessionService : DbRepository, ISessionService
var tokenC = dicC.Values.ToList();//c端token列表
int maxCountB = 0, maxCountC = 0;
if (tokenB.Count > 0)
- maxCountB = tokenB.OrderByDescending(it => it.Count).Take(1).First().Count();//b端最大会话数
+ maxCountB = tokenB.OrderByDescending(it => it.Count).Take(1).First().Count;//b端最大会话数
if (tokenC.Count > 0)
- maxCountC = tokenC.OrderByDescending(it => it.Count).Take(1).First().Count();//C端最大会话数
- return new SessionAnalysisOutPut()
+ maxCountC = tokenC.OrderByDescending(it => it.Count).Take(1).First().Count;//C端最大会话数
+ return new SessionAnalysisOutPut
{
OnLineCount = onLineCount,
CurrentSessionTotalCount = tokenB.Count + tokenC.Count,
@@ -93,9 +102,9 @@ public class SessionService : DbRepository, ISessionService
{
var userId = input.Id.ToString();
//token列表
- var tokenInfos = _simpleCacheService.HashGetOne>(CacheConst.Cache_UserToken, userId);
+ var tokenInfos = _simpleCacheService.HashGetOne>(CacheConst.CACHE_USER_TOKEN, userId);
//从列表中删除
- _simpleCacheService.HashDel>(CacheConst.Cache_UserToken, new string[] { userId });
+ _simpleCacheService.HashDel>(CacheConst.CACHE_USER_TOKEN, userId);
await NoticeUserLoginOut(userId, tokenInfos);
}
@@ -104,15 +113,15 @@ public class SessionService : DbRepository, ISessionService
{
var userId = input.Id.ToString();
//获取该用户的token信息
- var tokenInfos = _simpleCacheService.HashGetOne>(CacheConst.Cache_UserToken, userId);
+ var tokenInfos = _simpleCacheService.HashGetOne>(CacheConst.CACHE_USER_TOKEN, userId);
//当前需要踢掉用户的token
var deleteTokens = tokenInfos.Where(it => input.Tokens.Contains(it.Token)).ToList();
//踢掉包含token列表的token信息
tokenInfos = tokenInfos.Where(it => !input.Tokens.Contains(it.Token)).ToList();
if (tokenInfos.Count > 0)
- _simpleCacheService.HashAdd(CacheConst.Cache_UserToken, userId, tokenInfos);//如果还有token则更新token
+ _simpleCacheService.HashAdd(CacheConst.CACHE_USER_TOKEN, userId, tokenInfos);//如果还有token则更新token
else
- _simpleCacheService.HashDel>(CacheConst.Cache_UserToken, new string[] { userId });//否则直接删除key
+ _simpleCacheService.HashDel>(CacheConst.CACHE_USER_TOKEN, userId);//否则直接删除key
await NoticeUserLoginOut(userId, deleteTokens);
}
@@ -126,7 +135,7 @@ public class SessionService : DbRepository, ISessionService
{
var clockSkew = App.GetConfig("JWTSettings:ClockSkew");//获取过期时间容错值(秒)
//redis获取token信息hash集合,并转成字典
- var bTokenDic = _simpleCacheService.HashGetAll>(CacheConst.Cache_UserToken).ToDictionary(u => u.Key, u => u.Value);
+ var bTokenDic = _simpleCacheService.HashGetAll>(CacheConst.CACHE_USER_TOKEN).ToDictionary(u => u.Key, u => u.Value);
if (bTokenDic != null)
{
bTokenDic.ForEach(it =>
@@ -144,18 +153,15 @@ public class SessionService : DbRepository, ISessionService
});
if (bTokenDic.Count > 0)
{
- _simpleCacheService.HashSet(CacheConst.Cache_UserToken, bTokenDic);//如果还有token则更新token
+ _simpleCacheService.HashSet(CacheConst.CACHE_USER_TOKEN, bTokenDic);//如果还有token则更新token
}
else
{
- _simpleCacheService.Remove(CacheConst.Cache_UserToken);//否则直接删除key
+ _simpleCacheService.Remove(CacheConst.CACHE_USER_TOKEN);//否则直接删除key
}
return bTokenDic;
}
- else
- {
- return new Dictionary>();
- }
+ return new Dictionary>();
}
///
@@ -172,7 +178,8 @@ public class SessionService : DbRepository, ISessionService
it.TokenRemain = now.GetDiffTime(it.TokenTimeout);//获取时间差
var tokenSecond = it.TokenTimeout.AddMinutes(-it.Expire).ConvertDateTimeToLong();//颁发时间转为时间戳
var timeoutSecond = it.TokenTimeout.ConvertDateTimeToLong();//过期时间转为时间戳
- var tokenRemainPercent = 1 - (now.ConvertDateTimeToLong() - tokenSecond) * 1.0 / (timeoutSecond - tokenSecond);//求百分比,用现在时间-token颁布时间除以超时时间-token颁布时间
+ var tokenRemainPercent =
+ 1 - (now.ConvertDateTimeToLong() - tokenSecond) * 1.0 / (timeoutSecond - tokenSecond);//求百分比,用现在时间-token颁布时间除以超时时间-token颁布时间
it.TokenRemainPercent = tokenRemainPercent;
});
}
@@ -183,7 +190,7 @@ public class SessionService : DbRepository, ISessionService
///
private async Task NoticeUserLoginOut(string userId, List tokenInfos)
{
- await _eventPublisher.PublishAsync(EventSubscriberConst.UserLoginOut, new UserLoginOutEvent
+ await _eventPublisher.PublishAsync(EventSubscriberConst.USER_LOGIN_OUT, new UserLoginOutEvent
{
Message = "您已被强制下线!",
TokenInfos = tokenInfos,
@@ -192,4 +199,4 @@ public class SessionService : DbRepository, ISessionService
}
#endregion 方法
-}
\ No newline at end of file
+}
diff --git a/api/SimpleAdmin/SimpleAdmin.System/Services/BatchEdit/BatchEditService.cs b/api/SimpleAdmin/SimpleAdmin.System/Services/BatchEdit/BatchEditService.cs
index f0172d1fd0a2c762b5b3992f50f34345b9b20d70..858075b02ac0c6cbcb1403eb9a514ae60d1d7c34 100644
--- a/api/SimpleAdmin/SimpleAdmin.System/Services/BatchEdit/BatchEditService.cs
+++ b/api/SimpleAdmin/SimpleAdmin.System/Services/BatchEdit/BatchEditService.cs
@@ -1,4 +1,14 @@
-namespace SimpleAdmin.System;
+// Copyright (c) 2022-Now 少林寺驻北固山办事处大神父王喇嘛
+//
+// SimpleAdmin 基于 Apache License Version 2.0 协议发布,可用于商业项目,但必须遵守以下补充条款:
+// 1.请不要删除和修改根目录下的LICENSE文件。
+// 2.请不要删除和修改SimpleAdmin源码头部的版权声明。
+// 3.分发源码时候,请注明软件出处 https://gitee.com/dotnetmoyu/SimpleAdmin
+// 4.基于本软件的作品,只能使用 SimpleAdmin 作为后台服务,除外情况不可商用且不允许二次分发或开源。
+// 5.请不得将本软件应用于危害国家安全、荣誉和利益的行为,不能以任何形式用于非法为目的的行为。
+// 6.任何基于本软件而产生的一切法律纠纷和责任,均于我司无关。
+
+namespace SimpleAdmin.System;
///
///
@@ -16,13 +26,12 @@ public class BatchEditService : DbRepository, IBatchEditService
public async Task> Page(BatchEditPageInput input)
{
var query = Context.Queryable()
- .WhereIF(!string.IsNullOrWhiteSpace(input.ConfigId), it => it.ConfigId.Contains(input.ConfigId.Trim()))
- .WhereIF(!string.IsNullOrWhiteSpace(input.Entityname), it => it.EntityName.Contains(input.Entityname.Trim()))
- .WhereIF(!string.IsNullOrWhiteSpace(input.Tablename), it => it.TableName.Contains(input.Tablename.Trim()))
- //.WhereIF(!string.IsNullOrEmpty(input.SearchKey), it => it.Name.Contains(input.SearchKey))//根据关键字查询
- .OrderByIF(!string.IsNullOrEmpty(input.SortField), $"{input.SortField} {input.SortOrder}")
- ;
- var pageInfo = await query.ToPagedListAsync(input.Current, input.Size);//分页
+ .WhereIF(!string.IsNullOrWhiteSpace(input.ConfigId), it => it.ConfigId.Contains(input.ConfigId.Trim()))
+ .WhereIF(!string.IsNullOrWhiteSpace(input.EntityName), it => it.EntityName.Contains(input.EntityName.Trim()))
+ .WhereIF(!string.IsNullOrWhiteSpace(input.TableName), it => it.TableName.Contains(input.TableName.Trim()))
+ //.WhereIF(!string.IsNullOrEmpty(input.SearchKey), it => it.Name.Contains(input.SearchKey))//根据关键字查询
+ .OrderByIF(!string.IsNullOrEmpty(input.SortField), $"{input.SortField} {input.SortOrder}");
+ var pageInfo = await query.ToPagedListAsync(input.PageNum, input.PageSize);//分页
return pageInfo;
}
@@ -38,7 +47,7 @@ public class BatchEditService : DbRepository, IBatchEditService
tableColumns.ForEach(it =>
{
//判断是否是主键或者通用字段
- var isPkOrCommon = it.IsPrimarykey || SqlSugarUtils.IsCommonColumn(it.ColumnName);
+ var isPkOrCommon = it.IsPrimaryKey || SqlSugarUtils.IsCommonColumn(it.ColumnName);
if (!isPkOrCommon)
{
//添加到字段集合
@@ -46,7 +55,7 @@ public class BatchEditService : DbRepository, IBatchEditService
}
});
//事务
- var result = await itenant.UseTranAsync(async () =>
+ var result = await Tenant.UseTranAsync(async () =>
{
entity = await InsertReturnEntityAsync(entity);//输入参数转实体并插入
batchEdiConfig.ForEach(it => { it.UId = entity.Id; });//遍历字段赋值基础Id
@@ -74,14 +83,14 @@ public class BatchEditService : DbRepository, IBatchEditService
}
///
- public async Task Delete(List input)
+ public async Task Delete(BaseIdListInput input)
{
//获取所有ID
- var ids = input.Select(it => it.Id).ToList();
+ var ids = input.Ids;
if (ids.Count > 0)
{
//事务
- var result = await itenant.UseTranAsync(async () =>
+ var result = await Tenant.UseTranAsync(async () =>
{
await DeleteByIdsAsync(ids.Cast().ToArray());//删除数据
await Context.Deleteable().Where(it => ids.Contains(it.UId)).ExecuteCommandAsync();
@@ -109,7 +118,7 @@ public class BatchEditService : DbRepository, IBatchEditService
foreach (var tableColumn in tableColumns)
{
//判断是否是主键或者通用字段
- var isPkOrCommon = tableColumn.IsPrimarykey || SqlSugarUtils.IsCommonColumn(tableColumn.ColumnName);
+ var isPkOrCommon = tableColumn.IsPrimaryKey || SqlSugarUtils.IsCommonColumn(tableColumn.ColumnName);
if (!isPkOrCommon)
{
//如果当前配置没有
@@ -137,7 +146,8 @@ public class BatchEditService : DbRepository, IBatchEditService
if (updateBatch != null)
{
//找到对应字段
- batchEdiConfig = await Context.Queryable().Where(it => it.UId == updateBatch.Id && it.Status == DevDictConst.COMMON_STATUS_ENABLE).ToListAsync();
+ batchEdiConfig = await Context.Queryable().Where(it => it.UId == updateBatch.Id && it.Status == CommonStatusConst.ENABLE)
+ .ToListAsync();
}
return batchEdiConfig;
}
@@ -174,7 +184,7 @@ public class BatchEditService : DbRepository, IBatchEditService
/// 获取配置
///
///
- private BatchEditConfig GetUpdateBatchConfig(SqlsugarColumnInfo columnInfo)
+ private BatchEditConfig GetUpdateBatchConfig(SqlSugarColumnInfo columnInfo)
{
var netType = SqlSugarUtils.ConvertDataType(columnInfo.DataType);
return new BatchEditConfig
@@ -183,7 +193,7 @@ public class BatchEditService : DbRepository, IBatchEditService
ColumnComment = string.IsNullOrWhiteSpace(columnInfo.ColumnDescription) ? columnInfo.ColumnName : columnInfo.ColumnDescription,
NetType = netType,
DataType = SqlSugarUtils.DataTypeToEff(netType),
- Status = DevDictConst.COMMON_STATUS_DISABLED
+ Status = CommonStatusConst.DISABLED
};
}
@@ -201,4 +211,4 @@ public class BatchEditService : DbRepository, IBatchEditService
}
#endregion 方法
-}
\ No newline at end of file
+}
diff --git a/api/SimpleAdmin/SimpleAdmin.System/Services/BatchEdit/Dto/BatchEditInput.cs b/api/SimpleAdmin/SimpleAdmin.System/Services/BatchEdit/Dto/BatchEditInput.cs
index 2b3288ac06a24d9281081f9d7da109ac42afc6c5..98ed51f1b53865df5eebe61af009b231f98c262e 100644
--- a/api/SimpleAdmin/SimpleAdmin.System/Services/BatchEdit/Dto/BatchEditInput.cs
+++ b/api/SimpleAdmin/SimpleAdmin.System/Services/BatchEdit/Dto/BatchEditInput.cs
@@ -1,4 +1,14 @@
-namespace SimpleAdmin.System;
+// Copyright (c) 2022-Now 少林寺驻北固山办事处大神父王喇嘛
+//
+// SimpleAdmin 基于 Apache License Version 2.0 协议发布,可用于商业项目,但必须遵守以下补充条款:
+// 1.请不要删除和修改根目录下的LICENSE文件。
+// 2.请不要删除和修改SimpleAdmin源码头部的版权声明。
+// 3.分发源码时候,请注明软件出处 https://gitee.com/dotnetmoyu/SimpleAdmin
+// 4.基于本软件的作品,只能使用 SimpleAdmin 作为后台服务,除外情况不可商用且不允许二次分发或开源。
+// 5.请不得将本软件应用于危害国家安全、荣誉和利益的行为,不能以任何形式用于非法为目的的行为。
+// 6.任何基于本软件而产生的一切法律纠纷和责任,均于我司无关。
+
+namespace SimpleAdmin.System;
///
/// 批量分页查询参数
@@ -18,12 +28,12 @@ public class BatchEditPageInput : BasePageInput
///
/// 实体名
///
- public string Entityname { get; set; }
+ public string EntityName { get; set; }
///
/// 表名
///
- public string Tablename { get; set; }
+ public string TableName { get; set; }
}
///
@@ -58,7 +68,7 @@ public class BatchEditAddInput
///
/// 表描述
///
- public string Tabledescription { get; set; }
+ public string TableDescription { get; set; }
}
///
@@ -74,10 +84,11 @@ public class BatchEditConfigInput : BatchEditConfig, IValidatableObject
public IEnumerable Validate(ValidationContext validationContext)
{
- if (Status == DevDictConst.COMMON_STATUS_ENABLE)
+ if (Status == CommonStatusConst.ENABLE)
{
//如果是api请求并且必填参数有空的
- if (DataType.Contains("api") && (string.IsNullOrEmpty(RequestUrl) || string.IsNullOrEmpty(RequestType) || string.IsNullOrEmpty(RequestLabel) || string.IsNullOrEmpty(RequestValue)))
+ if (DataType.Contains("api") && (string.IsNullOrEmpty(RequestUrl) || string.IsNullOrEmpty(RequestType)
+ || string.IsNullOrEmpty(RequestLabel) || string.IsNullOrEmpty(RequestValue)))
{
yield return new ValidationResult($"字段{ColumnName}接口信息必填", new[] { nameof(DataType) });
}
@@ -124,4 +135,4 @@ public class BatchEditColumn
[Required(ErrorMessage = "字段值必填")]
public object ColumnValue { get; set; }
-}
\ No newline at end of file
+}
diff --git a/api/SimpleAdmin/SimpleAdmin.System/Services/BatchEdit/Dto/BatchEditOutput.cs b/api/SimpleAdmin/SimpleAdmin.System/Services/BatchEdit/Dto/BatchEditOutput.cs
index 10b1c277eff201aeb5c7d4f13a97f4545de34af6..cfde937b2177320a060cf6539690df5ed58f58e5 100644
--- a/api/SimpleAdmin/SimpleAdmin.System/Services/BatchEdit/Dto/BatchEditOutput.cs
+++ b/api/SimpleAdmin/SimpleAdmin.System/Services/BatchEdit/Dto/BatchEditOutput.cs
@@ -1 +1,14 @@
-namespace SimpleAdmin.System;
\ No newline at end of file
+// Copyright (c) 2022-Now 少林寺驻北固山办事处大神父王喇嘛
+//
+// SimpleAdmin 基于 Apache License Version 2.0 协议发布,可用于商业项目,但必须遵守以下补充条款:
+// 1.请不要删除和修改根目录下的LICENSE文件。
+// 2.请不要删除和修改SimpleAdmin源码头部的版权声明。
+// 3.分发源码时候,请注明软件出处 https://gitee.com/dotnetmoyu/SimpleAdmin
+// 4.基于本软件的作品,只能使用 SimpleAdmin 作为后台服务,除外情况不可商用且不允许二次分发或开源。
+// 5.请不得将本软件应用于危害国家安全、荣誉和利益的行为,不能以任何形式用于非法为目的的行为。
+// 6.任何基于本软件而产生的一切法律纠纷和责任,均于我司无关。
+
+
+
+
+
diff --git a/api/SimpleAdmin/SimpleAdmin.System/Services/BatchEdit/IBatchEditService.cs b/api/SimpleAdmin/SimpleAdmin.System/Services/BatchEdit/IBatchEditService.cs
index 89086a0122a8bdd240d8cb6a503557ed78b21b51..1ad691007829d7ffcbfe9bf5c890a8cfa0dfe401 100644
--- a/api/SimpleAdmin/SimpleAdmin.System/Services/BatchEdit/IBatchEditService.cs
+++ b/api/SimpleAdmin/SimpleAdmin.System/Services/BatchEdit/IBatchEditService.cs
@@ -1,4 +1,14 @@
-namespace SimpleAdmin.System;
+// Copyright (c) 2022-Now 少林寺驻北固山办事处大神父王喇嘛
+//
+// SimpleAdmin 基于 Apache License Version 2.0 协议发布,可用于商业项目,但必须遵守以下补充条款:
+// 1.请不要删除和修改根目录下的LICENSE文件。
+// 2.请不要删除和修改SimpleAdmin源码头部的版权声明。
+// 3.分发源码时候,请注明软件出处 https://gitee.com/dotnetmoyu/SimpleAdmin
+// 4.基于本软件的作品,只能使用 SimpleAdmin 作为后台服务,除外情况不可商用且不允许二次分发或开源。
+// 5.请不得将本软件应用于危害国家安全、荣誉和利益的行为,不能以任何形式用于非法为目的的行为。
+// 6.任何基于本软件而产生的一切法律纠纷和责任,均于我司无关。
+
+namespace SimpleAdmin.System;
///
/// 批量服务
@@ -24,7 +34,7 @@ public interface IBatchEditService : ITransient
///
/// 删除参数
///
- Task Delete(List input);
+ Task Delete(BaseIdListInput input);
///
/// 获取需要批量修改的表
@@ -58,7 +68,7 @@ public interface IBatchEditService : ITransient
///
/// 唯一编码
/// 字段信息
- /// sqlsugar对应字典
+ /// SqlSugar对应字典
Task> GetUpdateBatchConfigDict(string code, List columns);
///
@@ -67,4 +77,4 @@ public interface IBatchEditService : ITransient
/// id
///
Task SyncColumns(BaseIdInput input);
-}
\ No newline at end of file
+}
diff --git a/api/SimpleAdmin/SimpleAdmin.System/Services/Dev/File/Dto/FileInput.cs b/api/SimpleAdmin/SimpleAdmin.System/Services/Dev/File/Dto/FileInput.cs
index 2c80468782ee15b8fddb5b099a9f289e16b6f97d..df413f60ac7e52802ca0a4fa37b1b4e9adc17baf 100644
--- a/api/SimpleAdmin/SimpleAdmin.System/Services/Dev/File/Dto/FileInput.cs
+++ b/api/SimpleAdmin/SimpleAdmin.System/Services/Dev/File/Dto/FileInput.cs
@@ -1,4 +1,14 @@
-namespace SimpleAdmin.System;
+// Copyright (c) 2022-Now 少林寺驻北固山办事处大神父王喇嘛
+//
+// SimpleAdmin 基于 Apache License Version 2.0 协议发布,可用于商业项目,但必须遵守以下补充条款:
+// 1.请不要删除和修改根目录下的LICENSE文件。
+// 2.请不要删除和修改SimpleAdmin源码头部的版权声明。
+// 3.分发源码时候,请注明软件出处 https://gitee.com/dotnetmoyu/SimpleAdmin
+// 4.基于本软件的作品,只能使用 SimpleAdmin 作为后台服务,除外情况不可商用且不允许二次分发或开源。
+// 5.请不得将本软件应用于危害国家安全、荣誉和利益的行为,不能以任何形式用于非法为目的的行为。
+// 6.任何基于本软件而产生的一切法律纠纷和责任,均于我司无关。
+
+namespace SimpleAdmin.System;
///
/// 文件分页输出
@@ -9,4 +19,4 @@ public class FilePageInput : BasePageInput
/// 文件引擎
///
public string Engine { get; set; }
-}
\ No newline at end of file
+}
diff --git a/api/SimpleAdmin/SimpleAdmin.System/Services/Dev/File/FileService.cs b/api/SimpleAdmin/SimpleAdmin.System/Services/Dev/File/FileService.cs
index 0d20169bb492919628353462b78dde02bfc431de..621457defc48dc8b472f5ae76235b45c4fa26b29 100644
--- a/api/SimpleAdmin/SimpleAdmin.System/Services/Dev/File/FileService.cs
+++ b/api/SimpleAdmin/SimpleAdmin.System/Services/Dev/File/FileService.cs
@@ -1,13 +1,19 @@
-using SkiaSharp;
-using System.Runtime.InteropServices;
-using System.Web;
+// Copyright (c) 2022-Now 少林寺驻北固山办事处大神父王喇嘛
+//
+// SimpleAdmin 基于 Apache License Version 2.0 协议发布,可用于商业项目,但必须遵守以下补充条款:
+// 1.请不要删除和修改根目录下的LICENSE文件。
+// 2.请不要删除和修改SimpleAdmin源码头部的版权声明。
+// 3.分发源码时候,请注明软件出处 https://gitee.com/dotnetmoyu/SimpleAdmin
+// 4.基于本软件的作品,只能使用 SimpleAdmin 作为后台服务,除外情况不可商用且不允许二次分发或开源。
+// 5.请不得将本软件应用于危害国家安全、荣誉和利益的行为,不能以任何形式用于非法为目的的行为。
+// 6.任何基于本软件而产生的一切法律纠纷和责任,均于我司无关。
namespace SimpleAdmin.System;
///
///
///
-public class FileService : DbRepository, IFileService
+public class FileService : DbRepository, IFileService
{
private readonly IConfigService _configService;
@@ -17,14 +23,13 @@ public class FileService : DbRepository, IFileService
}
///
- public async Task> Page(FilePageInput input)
+ public async Task> Page(FilePageInput input)
{
- var query = Context.Queryable()
- .WhereIF(!string.IsNullOrEmpty(input.Engine), it => it.Engine == input.Engine)//根据关键字查询
+ var query = Context.Queryable().WhereIF(!string.IsNullOrEmpty(input.Engine), it => it.Engine == input.Engine)//根据关键字查询
.WhereIF(!string.IsNullOrEmpty(input.SearchKey), it => it.Name.Contains(input.SearchKey))//根据关键字查询
.OrderByIF(!string.IsNullOrEmpty(input.SortField), $"{input.SortField} {input.SortOrder}")//排序
.OrderBy(it => it.Id);
- var pageInfo = await query.ToPagedListAsync(input.Current, input.Size);//分页
+ var pageInfo = await query.ToPagedListAsync(input.PageNum, input.PageSize);//分页
return pageInfo;
}
@@ -35,9 +40,9 @@ public class FileService : DbRepository, IFileService
}
///
- public async Task Delete(List input)
+ public async Task Delete(BaseIdListInput input)
{
- var ids = input.Select(it => it.Id).ToList();//获取ID
+ var ids = input.Ids;//获取ID
await DeleteByIdsAsync(ids.Cast().ToArray());//根据ID删除数据库
}
@@ -86,17 +91,13 @@ public class FileService : DbRepository, IFileService
var devFile = await GetByIdAsync(input.Id);
if (devFile != null)
{
- if (devFile.Engine == DevDictConst.FILE_ENGINE_LOCAL)
+ if (devFile.Engine == SysDictConst.FILE_ENGINE_LOCAL)
return GetFileStreamResult(devFile.StoragePath, devFile.Name);
- else if (devFile.Engine == DevDictConst.FILE_ENGINE_MINIO)
+ if (devFile.Engine == SysDictConst.FILE_ENGINE_MINIO)
return await GetFileStreamResultFromMinio(devFile.ObjName, devFile.Name);
- else
- return null;
- }
- else
- {
return null;
}
+ return null;
}
#region 方法
@@ -117,13 +118,13 @@ public class FileService : DbRepository, IFileService
switch (engine)
{
//存储本地
- case DevDictConst.FILE_ENGINE_LOCAL:
+ case SysDictConst.FILE_ENGINE_LOCAL:
bucketName = "defaultBucketName";// 存储桶名称
storageUrl = await StorageLocal(objectId, file);
break;
//存储本地
- case DevDictConst.FILE_ENGINE_MINIO:
- var config = await _configService.GetByConfigKey(CateGoryConst.Config_FILE_MINIO, DevConfigConst.FILE_MINIO_DEFAULT_BUCKET_NAME);
+ case SysDictConst.FILE_ENGINE_MINIO:
+ var config = await _configService.GetByConfigKey(CateGoryConst.CONFIG_FILE_MINIO, SysConfigConst.FILE_MINIO_DEFAULT_BUCKET_NAME);
if (config != null)
{
bucketName = config.ConfigValue;// 存储桶名称
@@ -133,11 +134,11 @@ public class FileService : DbRepository, IFileService
default:
- throw Oops.Bah($"不支持的文件引擎");
+ throw Oops.Bah("不支持的文件引擎");
}
var fileSizeKb = (long)(file.Length / 1024.0);// 文件大小KB
var fileSuffix = Path.GetExtension(file.FileName).ToLower();// 文件后缀
- var devFile = new DevFile
+ var devFile = new SysFile
{
Id = objectId,
Engine = engine,
@@ -149,7 +150,7 @@ public class FileService : DbRepository, IFileService
SizeInfo = GetSizeInfo(fileSizeKb),
StoragePath = storageUrl
};
- if (engine != CateGoryConst.Config_FILE_LOCAL)//如果不是本地,设置下载地址
+ if (engine != CateGoryConst.CONFIG_FILE_LOCAL)//如果不是本地,设置下载地址
{
devFile.DownloadPath = storageUrl;
}
@@ -162,7 +163,7 @@ public class FileService : DbRepository, IFileService
var bmp = SKBitmap.FromImage(image);
var thubnail = bmp.GetPicThumbnail(100, 100);//压缩图片
var thubnailBase64 = ImageUtil.ImgToBase64String(thubnail);//转base64
- devFile.Thumbnail = $"data:image/png;base64," + thubnailBase64;
+ devFile.Thumbnail = "data:image/png;base64," + thubnailBase64;
}
await InsertAsync(devFile);
return objectId;
@@ -177,17 +178,17 @@ public class FileService : DbRepository, IFileService
{
string uploadFileFolder;
var configKey = string.Empty;
- //判断是windos还是linux
+ //判断是windows还是linux
if (RuntimeInformation.IsOSPlatform(OSPlatform.Linux))
{
- configKey = DevConfigConst.FILE_LOCAL_FOLDER_FOR_UNIX;//Linux
+ configKey = SysConfigConst.FILE_LOCAL_FOLDER_FOR_UNIX;//Linux
}
else if (RuntimeInformation.IsOSPlatform(OSPlatform.Windows))
{
- configKey = DevConfigConst.FILE_LOCAL_FOLDER_FOR_WINDOWS;//Windows
+ configKey = SysConfigConst.FILE_LOCAL_FOLDER_FOR_WINDOWS;//Windows
}
//获取路径配置
- var config = await _configService.GetByConfigKey(CateGoryConst.Config_FILE_LOCAL, configKey);
+ var config = await _configService.GetByConfigKey(CateGoryConst.CONFIG_FILE_LOCAL, configKey);
if (config != null)
{
uploadFileFolder = config.ConfigValue;//赋值路径
@@ -206,10 +207,7 @@ public class FileService : DbRepository, IFileService
}
return fileName;
}
- else
- {
- throw Oops.Oh($"文件存储路径未配置");
- }
+ throw Oops.Oh("文件存储路径未配置");
}
///
@@ -236,16 +234,16 @@ public class FileService : DbRepository, IFileService
private string GetSizeInfo(long fileSizeKb)
{
var b = fileSizeKb * 1024;
- const int MB = 1024 * 1024;
- const int KB = 1024;
- if (b / MB >= 1)
+ const int mb = 1024 * 1024;
+ const int kb = 1024;
+ if (b / mb >= 1)
{
- return Math.Round(b / (float)MB, 2) + "MB";
+ return Math.Round(b / (float)mb, 2) + "MB";
}
- if (b / KB >= 1)
+ if (b / kb >= 1)
{
- return Math.Round(b / (float)KB, 2) + "KB";
+ return Math.Round(b / (float)kb, 2) + "KB";
}
if (b == 0)
{
@@ -262,15 +260,14 @@ public class FileService : DbRepository, IFileService
private bool IsPic(string suffix)
{
//图片后缀名列表
- var pics = new string[]
+ var pics = new[]
{
".png", ".bmp", ".gif", ".jpg", ".jpeg", ".psd"
};
if (pics.Contains(suffix))
return true;
- else
- return false;
+ return false;
}
#endregion 方法
-}
\ No newline at end of file
+}
diff --git a/api/SimpleAdmin/SimpleAdmin.System/Services/Dev/File/IFileService.cs b/api/SimpleAdmin/SimpleAdmin.System/Services/Dev/File/IFileService.cs
index c4adce24ee536586535f5a2ba85ff90bdff7627c..1a576325d7421e4a23e23f87d70360136b4fb376 100644
--- a/api/SimpleAdmin/SimpleAdmin.System/Services/Dev/File/IFileService.cs
+++ b/api/SimpleAdmin/SimpleAdmin.System/Services/Dev/File/IFileService.cs
@@ -1,4 +1,14 @@
-namespace SimpleAdmin.System;
+// Copyright (c) 2022-Now 少林寺驻北固山办事处大神父王喇嘛
+//
+// SimpleAdmin 基于 Apache License Version 2.0 协议发布,可用于商业项目,但必须遵守以下补充条款:
+// 1.请不要删除和修改根目录下的LICENSE文件。
+// 2.请不要删除和修改SimpleAdmin源码头部的版权声明。
+// 3.分发源码时候,请注明软件出处 https://gitee.com/dotnetmoyu/SimpleAdmin
+// 4.基于本软件的作品,只能使用 SimpleAdmin 作为后台服务,除外情况不可商用且不允许二次分发或开源。
+// 5.请不得将本软件应用于危害国家安全、荣誉和利益的行为,不能以任何形式用于非法为目的的行为。
+// 6.任何基于本软件而产生的一切法律纠纷和责任,均于我司无关。
+
+namespace SimpleAdmin.System;
///
/// 文件管理服务
@@ -10,7 +20,7 @@ public interface IFileService : ITransient
///
/// ID列表
///
- Task Delete(List input);
+ Task Delete(BaseIdListInput input);
///
/// 文件下载
@@ -41,7 +51,7 @@ public interface IFileService : ITransient
///
/// 查询参数
/// 文件列表
- Task> Page(FilePageInput input);
+ Task> Page(FilePageInput input);
///
/// 上传文件到本地返回下载url
@@ -50,4 +60,4 @@ public interface IFileService : ITransient
/// 文件
///
Task UploadFile(string engine, IFormFile file);
-}
\ No newline at end of file
+}
diff --git a/api/SimpleAdmin/SimpleAdmin.System/Services/Dev/Message/Dto/MessageInput.cs b/api/SimpleAdmin/SimpleAdmin.System/Services/Dev/Message/Dto/MessageInput.cs
index bc7d596821ae5e55e4aa040ff37245337297979b..9aeab1531e6489dc27bf8c6a3811b2c73b2cf202 100644
--- a/api/SimpleAdmin/SimpleAdmin.System/Services/Dev/Message/Dto/MessageInput.cs
+++ b/api/SimpleAdmin/SimpleAdmin.System/Services/Dev/Message/Dto/MessageInput.cs
@@ -1,4 +1,14 @@
-namespace SimpleAdmin.System;
+// Copyright (c) 2022-Now 少林寺驻北固山办事处大神父王喇嘛
+//
+// SimpleAdmin 基于 Apache License Version 2.0 协议发布,可用于商业项目,但必须遵守以下补充条款:
+// 1.请不要删除和修改根目录下的LICENSE文件。
+// 2.请不要删除和修改SimpleAdmin源码头部的版权声明。
+// 3.分发源码时候,请注明软件出处 https://gitee.com/dotnetmoyu/SimpleAdmin
+// 4.基于本软件的作品,只能使用 SimpleAdmin 作为后台服务,除外情况不可商用且不允许二次分发或开源。
+// 5.请不得将本软件应用于危害国家安全、荣誉和利益的行为,不能以任何形式用于非法为目的的行为。
+// 6.任何基于本软件而产生的一切法律纠纷和责任,均于我司无关。
+
+namespace SimpleAdmin.System;
public class MessagePageInput : BasePageInput
{
@@ -11,7 +21,7 @@ public class MessagePageInput : BasePageInput
///
/// 发送参数
///
-public class MessageSendInput : DevMessage, IValidatableObject
+public class MessageSendInput : SysMessage
{
///
/// 主题
@@ -28,14 +38,53 @@ public class MessageSendInput : DevMessage, IValidatableObject
///
/// 接收人Id
///
- [Required(ErrorMessage = "ReceiverIdList不能为空")]
public List ReceiverIdList { get; set; }
- public IEnumerable Validate(ValidationContext validationContext)
- {
- if (Category != CateGoryConst.Message_INFORM && Category != CateGoryConst.Message_NOTICE)
- {
- yield return new ValidationResult("分类错误", new[] { nameof(Category) });
- }
- }
-}
\ No newline at end of file
+ public override string Status { get; set; } = SysDictConst.MESSAGE_STATUS_READY;
+}
+
+public class MessageSendUpdateInput : MessageSendInput
+{
+ ///
+ /// 消息Id
+ ///
+ [Required(ErrorMessage = "Id不能为空")]
+ public override long Id { get; set; }
+}
+
+///
+/// 消息详情输入参数
+///
+public class MessageDetailInput : BaseIdInput
+{
+ ///
+ /// 是否显示接收信息
+ ///
+ public bool ShowReceiveInfo { get; set; } = false;
+
+ ///
+ /// 是否已读
+ ///
+ public bool Read { get; set; } = false;
+}
+
+///
+/// 已读输入参数
+///
+public class MessageReadInput
+{
+ ///
+ /// 分类
+ ///
+ public string Category { get; set; }
+
+ ///
+ /// 用户Id
+ ///
+ public long Id { get; set; }
+
+ ///
+ /// 消息Id
+ ///
+ public List Ids { get; set; } = new List();
+}
diff --git a/api/SimpleAdmin/SimpleAdmin.System/Services/Dev/Message/Dto/MessageOutPut.cs b/api/SimpleAdmin/SimpleAdmin.System/Services/Dev/Message/Dto/MessageOutPut.cs
index c84fbff426d18d750e1570f596afb7861d2729ba..66d02c37c4a11b34470262cc6c22752fe14b2f7e 100644
--- a/api/SimpleAdmin/SimpleAdmin.System/Services/Dev/Message/Dto/MessageOutPut.cs
+++ b/api/SimpleAdmin/SimpleAdmin.System/Services/Dev/Message/Dto/MessageOutPut.cs
@@ -1,31 +1,34 @@
-namespace SimpleAdmin.System;
+// Copyright (c) 2022-Now 少林寺驻北固山办事处大神父王喇嘛
+//
+// SimpleAdmin 基于 Apache License Version 2.0 协议发布,可用于商业项目,但必须遵守以下补充条款:
+// 1.请不要删除和修改根目录下的LICENSE文件。
+// 2.请不要删除和修改SimpleAdmin源码头部的版权声明。
+// 3.分发源码时候,请注明软件出处 https://gitee.com/dotnetmoyu/SimpleAdmin
+// 4.基于本软件的作品,只能使用 SimpleAdmin 作为后台服务,除外情况不可商用且不允许二次分发或开源。
+// 5.请不得将本软件应用于危害国家安全、荣誉和利益的行为,不能以任何形式用于非法为目的的行为。
+// 6.任何基于本软件而产生的一切法律纠纷和责任,均于我司无关。
+
+namespace SimpleAdmin.System;
///
/// 消息详情
///
-public class MessageDetailOutPut : DevMessage
+public class MessageDetailOutPut : SysMessage
{
- public List ReceiveInfoList { get; set; } = new List();
+}
+///
+/// 未读消息数量输出
+///
+public class MessageUnReadOutPut
+{
///
- /// 接收信息类
+ /// 未读消息数量
///
+ public int UnReadCount { get; set; }
- public class ReceiveInfo
- {
- ///
- /// 接收人ID
- ///
- public long ReceiveUserId { get; set; }
-
- ///
- /// 接收人姓名
- ///
- public string ReceiveUserName { get; set; }
-
- ///
- /// 是否已读
- ///
- public bool Read { get; set; }
- }
-}
\ No newline at end of file
+ ///
+ /// 分类
+ ///
+ public string Category { get; set; }
+}
diff --git a/api/SimpleAdmin/SimpleAdmin.System/Services/Dev/Message/IMessageService.cs b/api/SimpleAdmin/SimpleAdmin.System/Services/Dev/Message/IMessageService.cs
index eb8bfa12fed1c61aacbce2f3f58ff5efd9b755b4..0ecb7c4c297e6420781560898070f8c264824e64 100644
--- a/api/SimpleAdmin/SimpleAdmin.System/Services/Dev/Message/IMessageService.cs
+++ b/api/SimpleAdmin/SimpleAdmin.System/Services/Dev/Message/IMessageService.cs
@@ -1,4 +1,14 @@
-namespace SimpleAdmin.System;
+// Copyright (c) 2022-Now 少林寺驻北固山办事处大神父王喇嘛
+//
+// SimpleAdmin 基于 Apache License Version 2.0 协议发布,可用于商业项目,但必须遵守以下补充条款:
+// 1.请不要删除和修改根目录下的LICENSE文件。
+// 2.请不要删除和修改SimpleAdmin源码头部的版权声明。
+// 3.分发源码时候,请注明软件出处 https://gitee.com/dotnetmoyu/SimpleAdmin
+// 4.基于本软件的作品,只能使用 SimpleAdmin 作为后台服务,除外情况不可商用且不允许二次分发或开源。
+// 5.请不得将本软件应用于危害国家安全、荣誉和利益的行为,不能以任何形式用于非法为目的的行为。
+// 6.任何基于本软件而产生的一切法律纠纷和责任,均于我司无关。
+
+namespace SimpleAdmin.System;
///
/// 站内信服务
@@ -10,7 +20,7 @@ public interface IMessageService : ITransient
///
/// id列表
///
- Task Delete(List input);
+ Task Delete(BaseIdListInput input);
///
/// 删除我的消息
@@ -23,10 +33,9 @@ public interface IMessageService : ITransient
///
/// 获取消息详情
///
- /// 消息ID
- /// 是否是自己
+ /// 输入参数
/// 消息详情
- Task Detail(BaseIdInput input, bool isSelf = false);
+ Task Detail(MessageDetailInput input);
///
/// 我的消息列表
@@ -34,26 +43,55 @@ public interface IMessageService : ITransient
///
///
///
- Task> MyMessagePage(MessagePageInput input, long userId);
+ Task> MyMessagePage(MessagePageInput input, long userId);
///
/// 分页查询
///
/// 查询参数
///
- Task> Page(MessagePageInput input);
+ Task> Page(MessagePageInput input);
+
///
- /// 发送站内信
+ /// 获取未读消息数
///
- /// 站内信信息
+ /// 用户Id
///
- Task Send(MessageSendInput input);
+ Task> UnReadCount(long userId);
///
- /// 获取未读消息数
+ /// 最新未读
///
///
///
- Task UnReadCount(long userId);
-}
\ No newline at end of file
+ Task> NewUnRead(long userId);
+
+ ///
+ /// 标记已读
+ ///
+ ///
+ ///
+ Task SetRead(MessageReadInput input);
+
+ ///
+ /// 删除消息
+ ///
+ ///
+ ///
+ Task SetDelete(MessageReadInput input);
+
+ ///
+ /// 新增
+ ///
+ ///
+ ///
+ Task Add(MessageSendInput input);
+
+ ///
+ /// 编辑
+ ///
+ ///
+ ///
+ Task Edit(MessageSendUpdateInput input);
+}
diff --git a/api/SimpleAdmin/SimpleAdmin.System/Services/Dev/Message/MessageService.cs b/api/SimpleAdmin/SimpleAdmin.System/Services/Dev/Message/MessageService.cs
index 855edbaeba573e762e6561404d7e5b972009f87d..d0d311723faacc8e5aaaa9a27e06f971c7510833 100644
--- a/api/SimpleAdmin/SimpleAdmin.System/Services/Dev/Message/MessageService.cs
+++ b/api/SimpleAdmin/SimpleAdmin.System/Services/Dev/Message/MessageService.cs
@@ -1,80 +1,122 @@
-namespace SimpleAdmin.System;
+// Copyright (c) 2022-Now 少林寺驻北固山办事处大神父王喇嘛
+//
+// SimpleAdmin 基于 Apache License Version 2.0 协议发布,可用于商业项目,但必须遵守以下补充条款:
+// 1.请不要删除和修改根目录下的LICENSE文件。
+// 2.请不要删除和修改SimpleAdmin源码头部的版权声明。
+// 3.分发源码时候,请注明软件出处 https://gitee.com/dotnetmoyu/SimpleAdmin
+// 4.基于本软件的作品,只能使用 SimpleAdmin 作为后台服务,除外情况不可商用且不允许二次分发或开源。
+// 5.请不得将本软件应用于危害国家安全、荣誉和利益的行为,不能以任何形式用于非法为目的的行为。
+// 6.任何基于本软件而产生的一切法律纠纷和责任,均于我司无关。
+
+using Masuit.Tools.DateTimeExt;
+
+namespace SimpleAdmin.System;
///
///
///
-public class MessageService : DbRepository, IMessageService
+public class MessageService : DbRepository, IMessageService
{
private readonly ILogger _logger;
private readonly ISimpleCacheService _simpleCacheService;
private readonly IRelationService _relationService;
private readonly IEventPublisher _eventPublisher;
- public MessageService(ILogger logger, ISimpleCacheService simpleCacheService, IRelationService relationService, IEventPublisher eventPublisher)
+ public MessageService(ILogger logger, ISimpleCacheService simpleCacheService, IRelationService relationService,
+ IEventPublisher eventPublisher)
{
- this._logger = logger;
- this._simpleCacheService = simpleCacheService;
- this._relationService = relationService;
- this._eventPublisher = eventPublisher;
+ _logger = logger;
+ _simpleCacheService = simpleCacheService;
+ _relationService = relationService;
+ _eventPublisher = eventPublisher;
}
///
- public async Task> Page(MessagePageInput input)
+ public async Task> Page(MessagePageInput input)
{
- var query = Context.Queryable()
- .WhereIF(!string.IsNullOrEmpty(input.Category), it => it.Category == input.Category)//根据分类查询
- .WhereIF(!string.IsNullOrEmpty(input.SearchKey), it => it.Subject.Contains(input.SearchKey) || it.Content.Contains(input.SearchKey))//根据关键字查询
- .OrderByIF(!string.IsNullOrEmpty(input.SortField), $"{input.SortField} {input.SortOrder}")//排序
- .OrderBy(it => it.CreateTime, OrderByType.Desc)
- ;
-
- var pageInfo = await query.ToPagedListAsync(input.Current, input.Size);//分页
+ var query = Context.Queryable().WhereIF(!string.IsNullOrEmpty(input.Category), it => it.Category == input.Category)//根据分类查询
+ .WhereIF(!string.IsNullOrEmpty(input.SearchKey),
+ it => it.Subject.Contains(input.SearchKey) || it.Content.Contains(input.SearchKey))//根据关键字查询
+ .OrderByIF(!string.IsNullOrEmpty(input.SortField), $"{input.SortField} {input.SortOrder}")//排序
+ .OrderBy(it => it.CreateTime, OrderByType.Desc);
+
+ var pageInfo = await query.ToPagedListAsync(input.PageNum, input.PageSize);//分页
return pageInfo;
}
///
- public async Task> MyMessagePage(MessagePageInput input, long userId)
+ public async Task> MyMessagePage(MessagePageInput input, long userId)
{
- var query = Context.Queryable().LeftJoin((u, m) => u.MessageId == m.Id)
- .Where((u, m) => u.IsDelete == false && u.UserId == userId)
- .WhereIF(!string.IsNullOrEmpty(input.Category), (u, m) => m.Category == input.Category)//根据分类查询
- .OrderBy((u, m) => u.Read, OrderByType.Asc)
- .OrderBy((u, m) => m.CreateTime, OrderByType.Desc)
- .Select((u, m) => new DevMessage
- {
- Id = m.Id.SelectAll(),
- Read = u.Read,
- })
- ;
- var pageInfo = await query.ToPagedListAsync(input.Current, input.Size);//分页
+ var query = Context.Queryable().LeftJoin((u, m) => u.MessageId == m.Id)
+ .Where((u, m) => u.IsDelete == false && u.UserId == userId && u.Status == SysDictConst.MESSAGE_STATUS_ALREADY)
+ .WhereIF(!string.IsNullOrEmpty(input.Category), (u, m) => m.Category == input.Category)//根据分类查询
+ .WhereIF(!string.IsNullOrEmpty(input.SearchKey),
+ (u, m) => m.Subject.Contains(input.SearchKey) || m.Content.Contains(input.SearchKey))//根据关键字查询
+ .OrderBy((u, m) => u.Read).OrderBy((u, m) => u.CreateTime, OrderByType.Desc).Select((u, m) => new SysMessage
+ {
+ Id = m.Id.SelectAll(),
+ Read = u.Read
+ });
+ var pageInfo = await query.ToPagedListAsync(input.PageNum, input.PageSize);//分页
return pageInfo;
}
///
- public async Task Send(MessageSendInput input)
+ public async Task Add(MessageSendInput input)
{
- var message = input.Adapt();//实体转换
- var messageUsers = new List();
- input.ReceiverIdList.ForEach(it =>
+ CheckInput(input);
+ var sysMessage = input.Adapt();//实体转换
+ sysMessage.Id = CommonUtils.GetSingleId();
+ //如果是立即发送的直接修改状态
+ if (sysMessage.SendWay == SysDictConst.SEND_WAY_NOW)
+ sysMessage.Status = SysDictConst.MESSAGE_STATUS_ALREADY;//已发送
+ var messageUsers = new List();
+ var userIds = new List();
+ //根据接收人获取需要发送的用户id
+ switch (sysMessage.ReceiverType)
{
- //遍历用户ID列表,生成拓展列表
- messageUsers.Add(new DevMessageUser { UserId = it, Read = false, IsDelete = false });
- });
+ case SysDictConst.RECEIVER_TYPE_ALL:
+ userIds = await Context.Queryable().Select(it => it.Id).ToListAsync();
+ break;
+ case SysDictConst.RECEIVER_TYPE_ROLE:
+ var roleIds = sysMessage.ReceiverInfo.Select(it => it.Id.ToString()).ToList();//获取角色ID列表
+ var roleUsers =
+ await _relationService.GetRelationListByTargetIdListAndCategory(roleIds, CateGoryConst.RELATION_SYS_USER_HAS_ROLE);//获取角色用户列表
+ userIds = roleUsers.Select(it => it.ObjectId).ToList();//获取用户ID列表
+ break;
+ case SysDictConst.RECEIVER_TYPE_APPOINT:
+ userIds = sysMessage.ReceiverInfo.Select(it => it.Id).ToList();
+ break;
+ }
+ //去掉自己
+ userIds = userIds.Where(it => it != UserManager.UserId).ToList();
+ //遍历用户ID
+ userIds.ForEach(userId =>
+ {
+ messageUsers.Add(new SysMessageUser
+ {
+ MessageId = sysMessage.Id,
+ UserId = userId,
+ Read = false,
+ IsDelete = false,
+ Status = sysMessage.SendWay == SysDictConst.SEND_WAY_NOW ? SysDictConst.MESSAGE_STATUS_ALREADY : SysDictConst.MESSAGE_STATUS_READY
+ });
+ });
//事务
- var result = await itenant.UseTranAsync(async () =>
+ var result = await Tenant.UseTranAsync(async () =>
{
- message = await InsertReturnEntityAsync(message);//添加消息
- messageUsers.ForEach(it => it.MessageId = message.Id);//添加关系
+ await InsertAsync(sysMessage);//添加消息
await Context.Insertable(messageUsers).ExecuteCommandAsync();
});
if (result.IsSuccess)//如果成功了
{
- await _eventPublisher.PublishAsync(EventSubscriberConst.NewMessage, new NewMessageEvent
+ await _eventPublisher.PublishAsync(EventSubscriberConst.NEW_MESSAGE, new NewMessageEvent
{
- UserIds = input.ReceiverIdList.Select(it => it.ToString()).ToList(),
- Message = input.Subject
- }); //通知用户有新的消息
+ Id = sysMessage.Id,
+ SendWay = sysMessage.SendWay,
+ SendTime = sysMessage.SendTime
+ });//通知用户有新的消息
}
else
{
@@ -85,73 +127,76 @@ public class MessageService : DbRepository, IMessageService
}
///
- public async Task Detail(BaseIdInput input, bool isSelf = false)
+ public async Task Edit(MessageSendUpdateInput input)
+ {
+ CheckInput(input);
+ var sysMessage = input.Adapt();//实体转换
+ await UpdateAsync(sysMessage);//更新数据
+ }
+
+
+
+
+ ///
+ public async Task Detail(MessageDetailInput input)
{
//获取消息
var message = await GetFirstAsync(it => it.Id == input.Id);
- if (message != null)
+ if (message != null && message.SendWay == SysDictConst.SEND_WAY_DELAY)
+ {
+ //delayTime等于发送时间减掉创建时间
+ message.DelayTime = (int)(message.SendTime.GetTotalSeconds() - message.CreateTime.Value.GetTotalSeconds());
+ }
+ if (message != null && input.ShowReceiveInfo)
{
- var messageDetail = message.Adapt();//实体转换
- var messageUserRep = ChangeRepository>();//切换仓储
+ var messageUserRep = ChangeRepository>();//切换仓储
var messageUsers = await messageUserRep.GetListAsync(it => it.MessageId == message.Id);
- var myMessage = messageUsers.Where(it => it.UserId == UserManager.UserId && it.MessageId == input.Id).FirstOrDefault();//查询是否发给自己
- if (myMessage != null)
- {
- myMessage.Read = true;//设置已读
- await messageUserRep.UpdateAsync(myMessage);//修改状态
- }
- if (!isSelf)//如果不是自己则把所有的用户都列出来
- {
- var userIds = messageUsers.Select(it => it.UserId).ToList();//获取用户ID列表
- var userInfos = await Context.Queryable()
- .Where(it => userIds.Contains(it.Id)).Select(it => new { it.Id, it.Name }).ToListAsync();//获取用户姓名信息列表
- //遍历关系
- messageUsers.ForEach(messageUser =>
+ var userIds = messageUsers.Select(it => it.UserId).ToList();//获取用户ID列表
+ var userInfos = await Context.Queryable().Where(it => userIds.Contains(it.Id)).Select(it => new { it.Id, it.Name })
+ .ToListAsync();//获取用户姓名信息列表
+ //遍历关系
+ messageUsers.ForEach(messageUser =>
+ {
+ var user = userInfos.Where(u => u.Id == messageUser.UserId).FirstOrDefault();//获取用户信息
+ if (user != null)
{
- var user = userInfos.Where(u => u.Id == messageUser.UserId).FirstOrDefault();//获取用户信息
- if (user != null)
+ //添加到已读列表
+ message.ReceiverDetail.Add(new ReceiverDetail
{
- //添加到已读列表
- messageDetail.ReceiveInfoList.Add(new MessageDetailOutPut.ReceiveInfo
- {
- ReceiveUserId = user.Id,
- ReceiveUserName = user.Name,
- Read = messageUser.Read
- });
- }
- else//用户ID没找到
- {
- //添加到已读列表
- messageDetail.ReceiveInfoList.Add(new MessageDetailOutPut.ReceiveInfo
- {
- ReceiveUserId = messageUser.UserId,
- ReceiveUserName = "未知用户",
- Read = messageUser.Read
- });
- }
- });
- }
- return messageDetail;
+ Id = user.Id,
+ Name = user.Name,
+ Read = messageUser.Read
+ });
+ }
+ });
}
- else
+ //设置已读
+ if (input.Read)
{
- return null;
+ await Context.Updateable