mirror of
https://gitee.com/lab1024/smart-admin.git
synced 2025-09-25 06:46:39 +08:00
v3.0.0
This commit is contained in:
parent
8dc663d885
commit
192e959d14
154
README.md
154
README.md
@ -1,101 +1,101 @@
|
|||||||
### SmartAdmin
|
### **SmartAdmin**
|
||||||
**SmartAdmin** 由 **河南·洛阳** [1024 创新实验室](https://www.1024lab.net/) 使用SpringBoot2 和 Vue3 Setup语法糖、 Composition Api (同时支持JavaScript和TypeScript双版本) ,开发出的一套简洁、易用的低代码中后台解决方案!
|
|
||||||
|
|
||||||
**我们开源一套漂亮的代码和一套整洁的代码规范**,让大家在这浮躁的代码世界里感受到一股把代码写好的清流!同时又让开发者节省大量的时间,减少加班,快乐工作,保持谦逊,保持学习,**热爱代码,更热爱生活!**
|
SmartAdmin3.X 由河南·洛阳 [1024 创新实验室](https://www.1024lab.net/)基于SpringBoot + Sa-Token + Mybatis-Plus 和 Vue3 + Vite5 + Ant Design Vue 4 (同时支持JavaScript和TypeScript双版本) ,并以 <font color="#DC143C">**「高质量代码」为核心,「简洁、高效、安全」**</font>的快速开发平台。
|
||||||
|
|
||||||
|
<font color="#DC143C">**国内首个满足《网络安全》、《数据安全》、三级等保**</font>, 支持登录限制、支持接口国产加解密、支持数据加解密等一系列安全措施的开源项目。
|
||||||
|
|
||||||
在线预览:[https://preview.smartadmin.vip](https://preview.smartadmin.vip)
|
<font color="#DC143C">**我们开源一套漂亮的代码和一套整洁的代码规范**</font>,让大家在这浮躁的代码世界里感受到一股把代码写好的清流!同时又让开发者节省大量的时间,减少加班,快乐工作,保持谦逊,保持学习,热爱代码,更热爱生活!
|
||||||
官方文档:[https://smartadmin.vip](https://smartadmin.vip)
|
|
||||||
|
|
||||||
### 理念与思想
|
<a target="_blank" href='https://gitee.com/lab1024/smart-admin'><img src='https://gitee.com/lab1024/smart-admin/badge/star.svg?theme=dark' alt='star'></img></a>
|
||||||
|
<a target="_blank" href='https://gitee.com/lab1024/smart-admin'><img src='https://gitee.com/lab1024/smart-admin/badge/fork.svg?theme=dark' alt='fork'></img></a>
|
||||||
|
<a target="_blank" href="https://github.com/1024-lab/smart-admin"><img alt="GitHub stars" src="https://img.shields.io/github/stars/1024-lab/smart-admin?style=flat&logo=github"></a>
|
||||||
|
<a target="_blank" href="https://github.com/1024-lab/smart-admin"><img alt="GitHub forks" src="https://img.shields.io/github/forks/1024-lab/smart-admin?style=flat&logo=github"></a>
|
||||||
|
<a target="_blank" href='https://gitee.com/lab1024/smart-admin'><img src='https://img.shields.io/github/license/1024-lab/smart-admin' alt='MIT'></img></a>
|
||||||
|
### **理念与思想**
|
||||||
|
|
||||||
- 我们分享的不是徒劳无功的各种功能,而是必须有的功能,如:数据变动记录、系统说明文档、版本更新记录、意见反馈、日志、心跳、单号生成器等等。
|
- 我们分享的不是徒劳无功的各种功能,而是必须有的功能,如:数据变动记录、系统说明文档、版本更新记录、意见反馈、日志、心跳、单号生成器等等。
|
||||||
- 我们分享的还有经过上百家公司验证过的前端、后端、vue3等代码规范,好的规范能让我们敲下的每行代码更铿锵有力!
|
- 我们分享的还有经过上百家公司验证过的前端、后端、vue3等代码规范,好的规范能让我们敲下的每行代码更铿锵有力!
|
||||||
- **我们推崇高质量的代码,身为开发,代码即利剑,键盘上一套行云流水,宛如侠客,事了拂衣去,深藏身与名。**
|
- **我们推崇高质量的代码,身为开发,代码即利剑,键盘上一套行云流水,宛如侠客,事了拂衣去,深藏身与名。**
|
||||||
- **我们推崇团队的高度配合默契、互相帮助,从不加班,而不是一看到别人的代码就头皮发麻,留其 [996.ICU](https://baike.baidu.com/item/996.ICU),我们热爱代码,更热爱生活**
|
- **我们推崇团队的高度配合默契、互相帮助,从不加班,而不是一看到别人的代码就头皮发麻,留其 [996.ICU](https://baike.baidu.com/item/996.ICU) 加班。**
|
||||||
|
- **我们主动思考,保持谦逊,保持学习,热爱代码,更热爱生活。**
|
||||||
### 演示图
|
- <font color="#DC143C">**我们希望你,希望你能花费3分钟认真阅读下面的每一个点,让你感受从未有过的技术体验!**</font>
|
||||||
<table>
|
|
||||||
<tr>
|
|
||||||
<td><img src="https://gitee.com/lab1024/smart-admin/raw/master/%E6%88%AA%E5%9B%BE/1-1.png"/></td>
|
|
||||||
<td><img src="https://gitee.com/lab1024/smart-admin/raw/master/%E6%88%AA%E5%9B%BE/2-1.png"/></td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td><img src="https://gitee.com/lab1024/smart-admin/raw/master/%E6%88%AA%E5%9B%BE/4-2.png"/></td>
|
|
||||||
<td><img src="https://gitee.com/lab1024/smart-admin/raw/master/%E6%88%AA%E5%9B%BE/3-1.png"/></td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td><img src="https://gitee.com/lab1024/smart-admin/raw/master/%E6%88%AA%E5%9B%BE/5-1.png"/></td>
|
|
||||||
<td><img src="https://gitee.com/lab1024/smart-admin/raw/master/%E6%88%AA%E5%9B%BE/6-1.png"/></td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td><img src="https://gitee.com/lab1024/smart-admin/raw/master/%E6%88%AA%E5%9B%BE/code1.png"/></td>
|
|
||||||
<td><img src="https://gitee.com/lab1024/smart-admin/raw/master/%E6%88%AA%E5%9B%BE/code2.png"/></td>
|
|
||||||
</tr>
|
|
||||||
|
|
||||||
</table>
|
|
||||||
|
|
||||||
### 技术体系
|
|
||||||
|
|
||||||
- 前端:Vue3.2 + Vue-Router + Pinia + Ant Design Vue 3.X + Vite
|
|
||||||
- 后端:Java8 + SpringBoot2.X + Mybatis-plus + jwt + druid + mysql
|
|
||||||
|
|
||||||
### 功能特点
|
|
||||||
|
|
||||||
- 表格:持久化表格自定义列、国际化、水印 等
|
|
||||||
- OA办公:公司信息(发票、银行、员工等)、通知公告(阅读记录、次数等)
|
|
||||||
- 文档:系统手册、意见反馈、更新记录 等
|
|
||||||
- 监控:心跳监控、数据库监控
|
|
||||||
- 日志:登录日志、操作日志(IP、浏览器、操作系统等设备信息)
|
|
||||||
- 系统:员工、部门、角色、权限、菜单 等
|
|
||||||
- 工具:文件管理、系统参数、数据字典、单号生成 等
|
|
||||||
- 代码生成: 基于每个表的配置、在线预览代码、下载 等
|
|
||||||
- 更多请查看:[SmartAdmin 业内独有功能亮点](https://smartadmin.vip/views/v2/base/FunctionFeature.html)
|
|
||||||
|
|
||||||
### 前端特点
|
|
||||||
|
|
||||||
- 提供 js 和 ts 双版本,目录结构及其清晰
|
|
||||||
- setup语法糖下Composition Api 代码规范可能只有我们写对了
|
|
||||||
- 前端常量维护: vue-enum,拒绝出现魔法数字,常量枚举不可维护的现象
|
|
||||||
- 非常漂亮的首页、业内独有的帮助文档、数据变动记录、水印等
|
|
||||||
- 业内独有的用户表格自定义列,且保存到数据库
|
|
||||||
- 业内最好的api、常量、等写法
|
|
||||||
- 独有的本地、开发、测试、预发布、生产 5个env环境配置文件
|
|
||||||
- 业内代码最清晰的layout布局写法
|
|
||||||
- 业内可能只有我们把main.js中的router加载方式写对了
|
|
||||||
- 以上只是一些举例,更多灿若繁星的惊喜和细节,等待着你的发现
|
|
||||||
|
|
||||||
|
|
||||||
### 后端特点
|
### **技术体系**
|
||||||
|
|
||||||
- 高质量的 Java 代码、分包结构、和代码注释
|
- 前端:Vue3 + Vite5 + Vue-Router + Pinia + Ant Design Vue 4.X
|
||||||
- 业内独创的请求返回码维护,非常值得一看
|
- 移动端:uniapp + uview2.x
|
||||||
- 四层架构(controller, service, manager, dao),为什么要有四层
|
- 后端:SpringBoot + Sa Token + Mybatis-plus + 多种数据库
|
||||||
- vo, bo, form, entity ,各种 javabean 怎么区分和使用
|
|
||||||
- 基于git diff的数据变更留痕功能,忘掉鸡肋的操作记录吧
|
|
||||||
- 心跳服务,让你发现有哪些机器再跑,哪些人在偷偷的跑你的 Job
|
|
||||||
- 支持接口加密解密注解、接口重复提交
|
|
||||||
- maven多环境:开发、测试、预发布、生产 环境配置
|
|
||||||
- smart-reload,为系统预留钩子,动态加载,在不重启程序前提下执行一些代码
|
|
||||||
- 以上只是沧海一粟,更多的细节等待你的发现
|
|
||||||
|
|
||||||
### 联系我们
|
### **功能亮点**
|
||||||
|
|
||||||
|
- **<font color="#DC143C">安全体系</font>**:满足国家三级等保要求,如密码加密、密码复杂度要求、登录错误次数锁定、登录超时退出等关键功能
|
||||||
|
- **<font color="#DC143C">接口加解密</font>**:支持请求参数和返回内容进行加解密操作,支持国产加密算法和其他国外加密算法
|
||||||
|
- **表格自定义列**:支持用户自定义列,并能将用户自定义列持久化到数据库
|
||||||
|
- **数据变更记录**:支持基于git diff插件的数据变更记录,查看数据变化更直观方便
|
||||||
|
- **在线文档**:支持右侧帮助文档(类似阿里云控制台右侧帮助文档效果)、支持意见反馈、版本记录 等功能
|
||||||
|
- **OA办公**:公司信息(发票、银行、员工等)、通知公告(阅读记录、次数等)
|
||||||
|
- **日志、监控**:服务器心跳日志、登录日志、操作日志(IP、浏览器、操作系统等设备信息)
|
||||||
|
- **系统功能**:员工、部门、角色、权限、菜单、水印、文件管理、系统参数、数据字典、单号生成 等
|
||||||
|
- **代码生成**: 基于每个表的配置、在线预览代码、下载 等
|
||||||
|
- **以上只是一些举例,更多灿若繁星的惊喜和细节,等待着你的发现!**:[SmartAdmin 业内独有功能亮点](./FunctionFeature.md)
|
||||||
|
|
||||||
|
|
||||||
|
### **代码亮点**
|
||||||
|
|
||||||
|
- **【前端-双版本】:** 提供 js 和 ts 双版本,目录结构及其清晰
|
||||||
|
- **【前端-常量维护】:** vue-enum,拒绝出现魔法数字,常量枚举不可维护的现象
|
||||||
|
- **【前端-命名】:** 业内最好的api、常量等命名和写法
|
||||||
|
- **【前端-多环境支持】:** 独有的本地、开发、测试、预发布、生产 5个env环境配置文件
|
||||||
|
- **【前端-layout代码】:** 业内代码最清晰的layout布局写法,小白都能看懂
|
||||||
|
- **【前端-main.js】:** 业内可能只有我们把main.js中的router加载方式写对了
|
||||||
|
- ----华丽前后端分割线----
|
||||||
|
- **【后端-独有目录结构】:** 业内独有的高质量的 Java代码分包结构,适合大、中、小型项目,结构非常清晰
|
||||||
|
- **【后端-公共配置文件】:** 业内独有的共用配置文件维护,简化共同配置
|
||||||
|
- **【后端-返回码维护】:** 业内独创的请求返回码维护,非常值得一看
|
||||||
|
- **【后端-四层架构】:** 四层架构(controller, service, manager, dao),为什么要有四层
|
||||||
|
- **【后端-多环境】:** maven多环境:开发、测试、预发布、生产 环境配置
|
||||||
|
- **【后端-系统钩子】:** smart-reload,为系统预留钩子,动态加载,在不重启程序前提下执行一些代码
|
||||||
|
- 以上只是沧海一粟,更多的细节等待你的发现
|
||||||
|
|
||||||
|
### **演示图**
|
||||||
|
|
||||||
<table>
|
<table>
|
||||||
<tr>
|
<tr>
|
||||||
<td><img src="https://gitee.com/lab1024/smart-admin/raw/master/%E6%88%AA%E5%9B%BE/zhuoda-wechat.jpg"/></td>
|
<td><img src="https://img.smartadmin.1024lab.net/smart-admin-v3/login/login-bg.png"/></td>
|
||||||
<td><img src="https://gitee.com/lab1024/smart-admin/raw/master/%E6%88%AA%E5%9B%BE/xiaozhen-gzh.jpg"/></td>
|
<td><img src="https://img.smartadmin.1024lab.net/smart-admin-v3/cut/home.png"/></td>
|
||||||
<td><img src="https://gitee.com/lab1024/smart-admin/raw/master/%E6%88%AA%E5%9B%BE/zhuoda-wechat-money-v1.jpg"/></td>
|
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td style="text-align:center">骚扰“卓大”,拉你入群</td>
|
<td><img src="https://img.smartadmin.1024lab.net/smart-admin-v3/login/login-fail-log.png"/></td>
|
||||||
<td style="text-align:center">关注“小镇程序员”,代码与生活、技术与钱途</td>
|
<td><img src="https://img.smartadmin.1024lab.net/smart-admin-v3/cut/doc.png"/></td>
|
||||||
<td style="text-align:center">请我们喝杯咖啡</td>
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td><img src="https://img.smartadmin.1024lab.net/smart-admin-v3/cut/code.png"/></td>
|
||||||
|
<td><img src="https://img.smartadmin.1024lab.net/smart-admin-v3/cut/git-diff.png"/></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td><img src="https://img.smartadmin.1024lab.net/smart-admin-v3/cut/front.png"/></td>
|
||||||
|
<td><img src="https://img.smartadmin.1024lab.net/smart-admin-v3/cut/back.png"/></td>
|
||||||
</tr>
|
</tr>
|
||||||
</table>
|
</table>
|
||||||
|
|
||||||
### 作者
|
|
||||||
|
### **联系我们**
|
||||||
|
|
||||||
[1024 创新实验室-主任:卓大](https://zhuoda.vip),混迹于各个技术圈,研究过计算机,熟悉点 java,略懂点前端。
|
[1024 创新实验室-主任:卓大](https://zhuoda.vip),混迹于各个技术圈,研究过计算机,熟悉点 java,略懂点前端。
|
||||||
[1024 创新实验室(河南·洛阳)](https://1024lab.net) 致力于成为中原领先、国内一流的技术团队,以技术创新为驱动,合作各类项目(软件外包、技术顾问、培训等等)。
|
[1024 创新实验室(河南·洛阳)](https://1024lab.net) 致力于成为中原领先、国内一流的技术团队,以技术创新为驱动,合作各类项目(软件外包、技术顾问、培训等等)。
|
||||||
|
|
||||||
|
<table>
|
||||||
|
<tr>
|
||||||
|
<td><img src="https://img.smartadmin.1024lab.net/wechat/zhuoda-wechat.jpg" width="250" /></td>
|
||||||
|
<td><img src="https://img.smartadmin.1024lab.net/wechat/liubianxing-gzh.jpg" width="250" /></td>
|
||||||
|
<td><img src="https://img.smartadmin.1024lab.net/wechat/zhuoda-wechat-money-v1.jpg" width="250" /></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td style="text-align:center">加 主任 “卓大” 微信 <br> 拉你入群,一起学习</td>
|
||||||
|
<td style="text-align:center">关注 “六边形工程师” <br> 分享:赚钱、代码、生活</td>
|
||||||
|
<td style="text-align:center">请 “1024创新实验室” 喝咖啡 <br> 支持我们的开源与分享 </td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
|
||||||
|
|
||||||
|
@ -11,7 +11,7 @@
|
|||||||
<description>SmartAdmin project</description>
|
<description>SmartAdmin project</description>
|
||||||
|
|
||||||
<modules>
|
<modules>
|
||||||
<module>sa-common</module>
|
<module>sa-base</module>
|
||||||
<module>sa-admin</module>
|
<module>sa-admin</module>
|
||||||
</modules>
|
</modules>
|
||||||
|
|
||||||
@ -23,7 +23,8 @@
|
|||||||
<spring-mock.version>2.0.8</spring-mock.version>
|
<spring-mock.version>2.0.8</spring-mock.version>
|
||||||
<mybatis-plus.version>3.5.2</mybatis-plus.version>
|
<mybatis-plus.version>3.5.2</mybatis-plus.version>
|
||||||
<p6spy.version>3.8.6</p6spy.version>
|
<p6spy.version>3.8.6</p6spy.version>
|
||||||
<swagger.version>2.7.0</swagger.version>
|
<springdoc-openapi-ui.version>1.7.0</springdoc-openapi-ui.version>
|
||||||
|
<knife4j.version>4.3.0</knife4j.version>
|
||||||
<fastjson.version>2.0.16</fastjson.version>
|
<fastjson.version>2.0.16</fastjson.version>
|
||||||
<druid.version>1.2.14</druid.version>
|
<druid.version>1.2.14</druid.version>
|
||||||
<google-linkedhashmap.version>1.4.2</google-linkedhashmap.version>
|
<google-linkedhashmap.version>1.4.2</google-linkedhashmap.version>
|
||||||
@ -31,14 +32,13 @@
|
|||||||
<user-agent-utils.version>1.21</user-agent-utils.version>
|
<user-agent-utils.version>1.21</user-agent-utils.version>
|
||||||
<kaptcha.version>2.3.2</kaptcha.version>
|
<kaptcha.version>2.3.2</kaptcha.version>
|
||||||
<reflections.version>0.9.11</reflections.version>
|
<reflections.version>0.9.11</reflections.version>
|
||||||
<commons-io.version>2.6</commons-io.version>
|
<commons-io.version>2.15.0</commons-io.version>
|
||||||
<commons-lang3.version>3.12.0</commons-lang3.version>
|
<commons-lang3.version>3.12.0</commons-lang3.version>
|
||||||
<commons-collections4.version>4.4</commons-collections4.version>
|
<commons-collections4.version>4.4</commons-collections4.version>
|
||||||
<commons-codec.version>1.13</commons-codec.version>
|
<commons-codec.version>1.13</commons-codec.version>
|
||||||
<easypoi.version>4.2.0</easypoi.version>
|
|
||||||
<xerces.version>2.12.0</xerces.version>
|
<xerces.version>2.12.0</xerces.version>
|
||||||
<poi-scratchpad.version>4.1.1</poi-scratchpad.version>
|
<easy-excel.version>3.3.2</easy-excel.version>
|
||||||
<poi-ooxml-schemas.version>1.3</poi-ooxml-schemas.version>
|
<poi.version>5.2.4</poi.version>
|
||||||
<aws-java-sdk.version>1.11.842</aws-java-sdk.version>
|
<aws-java-sdk.version>1.11.842</aws-java-sdk.version>
|
||||||
<log4j-spring-boot.version>2.17.2</log4j-spring-boot.version>
|
<log4j-spring-boot.version>2.17.2</log4j-spring-boot.version>
|
||||||
<hutool.version>5.7.22</hutool.version>
|
<hutool.version>5.7.22</hutool.version>
|
||||||
@ -46,6 +46,10 @@
|
|||||||
<jjwt.version>0.9.1</jjwt.version>
|
<jjwt.version>0.9.1</jjwt.version>
|
||||||
<jwks-rsa.version>0.9.0</jwks-rsa.version>
|
<jwks-rsa.version>0.9.0</jwks-rsa.version>
|
||||||
<velocity-tools.version>3.1</velocity-tools.version>
|
<velocity-tools.version>3.1</velocity-tools.version>
|
||||||
|
<sa-token.version>1.35.0.RC</sa-token.version>
|
||||||
|
<ip2region.version>2.7.0</ip2region.version>
|
||||||
|
<bcprov.version>1.59</bcprov.version>
|
||||||
|
<jackson-datatype-jsr310.version>2.13.4</jackson-datatype-jsr310.version>
|
||||||
</properties>
|
</properties>
|
||||||
|
|
||||||
<dependencyManagement>
|
<dependencyManagement>
|
||||||
@ -92,21 +96,15 @@
|
|||||||
</dependency>
|
</dependency>
|
||||||
|
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>io.springfox</groupId>
|
<groupId>org.springdoc</groupId>
|
||||||
<artifactId>springfox-swagger2</artifactId>
|
<artifactId>springdoc-openapi-ui</artifactId>
|
||||||
<version>${swagger.version}</version>
|
<version>${springdoc-openapi-ui.version}</version>
|
||||||
<exclusions>
|
|
||||||
<exclusion>
|
|
||||||
<artifactId>guava</artifactId>
|
|
||||||
<groupId>com.google.guava</groupId>
|
|
||||||
</exclusion>
|
|
||||||
</exclusions>
|
|
||||||
</dependency>
|
</dependency>
|
||||||
|
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>io.springfox</groupId>
|
<groupId>com.github.xiaoymin</groupId>
|
||||||
<artifactId>springfox-swagger-ui</artifactId>
|
<artifactId>knife4j-openapi3-spring-boot-starter</artifactId>
|
||||||
<version>${swagger.version}</version>
|
<version>${knife4j.version}</version>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
|
||||||
<dependency>
|
<dependency>
|
||||||
@ -181,48 +179,6 @@
|
|||||||
<version>${commons-codec.version}</version>
|
<version>${commons-codec.version}</version>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
|
||||||
<!-- poi start -->
|
|
||||||
<dependency>
|
|
||||||
<groupId>cn.afterturn</groupId>
|
|
||||||
<artifactId>easypoi-spring-boot-starter</artifactId>
|
|
||||||
<version>${easypoi.version}</version>
|
|
||||||
</dependency>
|
|
||||||
|
|
||||||
<dependency>
|
|
||||||
<groupId>cn.afterturn</groupId>
|
|
||||||
<artifactId>easypoi-web</artifactId>
|
|
||||||
<version>${easypoi.version}</version>
|
|
||||||
<exclusions>
|
|
||||||
<exclusion>
|
|
||||||
<artifactId>javassist</artifactId>
|
|
||||||
<groupId>org.javassist</groupId>
|
|
||||||
</exclusion>
|
|
||||||
<exclusion>
|
|
||||||
<artifactId>guava</artifactId>
|
|
||||||
<groupId>com.google.guava</groupId>
|
|
||||||
</exclusion>
|
|
||||||
</exclusions>
|
|
||||||
</dependency>
|
|
||||||
|
|
||||||
<!-- sax 读取时候用到的 -->
|
|
||||||
<!-- <dependency>-->
|
|
||||||
<!-- <groupId>xerces</groupId>-->
|
|
||||||
<!-- <artifactId>xercesImpl</artifactId>-->
|
|
||||||
<!-- <version>${xerces.version}</version>-->
|
|
||||||
<!-- </dependency>-->
|
|
||||||
<dependency>
|
|
||||||
<groupId>org.apache.poi</groupId>
|
|
||||||
<artifactId>poi-scratchpad</artifactId>
|
|
||||||
<version>${poi-scratchpad.version}</version>
|
|
||||||
</dependency>
|
|
||||||
|
|
||||||
<!-- Word 需要使用 -->
|
|
||||||
<dependency>
|
|
||||||
<groupId>org.apache.poi</groupId>
|
|
||||||
<artifactId>ooxml-schemas</artifactId>
|
|
||||||
<version>${poi-ooxml-schemas.version}</version>
|
|
||||||
</dependency>
|
|
||||||
|
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>com.amazonaws</groupId>
|
<groupId>com.amazonaws</groupId>
|
||||||
<artifactId>aws-java-sdk-s3</artifactId>
|
<artifactId>aws-java-sdk-s3</artifactId>
|
||||||
@ -271,6 +227,72 @@
|
|||||||
<version>${velocity-tools.version}</version>
|
<version>${velocity-tools.version}</version>
|
||||||
</dependency>
|
</dependency>
|
||||||
<!--velocity end-->
|
<!--velocity end-->
|
||||||
|
|
||||||
|
<!-- Sa-Token 权限认证,在线文档:https://sa-token.cc -->
|
||||||
|
<dependency>
|
||||||
|
<groupId>cn.dev33</groupId>
|
||||||
|
<artifactId>sa-token-spring-boot-starter</artifactId>
|
||||||
|
<version>${sa-token.version}</version>
|
||||||
|
</dependency>
|
||||||
|
|
||||||
|
<!-- Sa-Token 整合 Redis (使用 jackson 序列化方式) -->
|
||||||
|
<dependency>
|
||||||
|
<groupId>cn.dev33</groupId>
|
||||||
|
<artifactId>sa-token-redis-jackson</artifactId>
|
||||||
|
<version>${sa-token.version}</version>
|
||||||
|
</dependency>
|
||||||
|
|
||||||
|
<!-- sa-token end -->
|
||||||
|
|
||||||
|
<!--ip 地址-->
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.lionsoul</groupId>
|
||||||
|
<artifactId>ip2region</artifactId>
|
||||||
|
<version>${ip2region.version}</version>
|
||||||
|
</dependency>
|
||||||
|
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.bouncycastle</groupId>
|
||||||
|
<artifactId>bcprov-jdk15on</artifactId>
|
||||||
|
<version>${bcprov.version}</version>
|
||||||
|
</dependency>
|
||||||
|
|
||||||
|
<dependency>
|
||||||
|
<groupId>com.alibaba</groupId>
|
||||||
|
<artifactId>easyexcel</artifactId>
|
||||||
|
<version>${easy-excel.version}</version>
|
||||||
|
<exclusions>
|
||||||
|
<exclusion>
|
||||||
|
<artifactId>poi-ooxml-schemas</artifactId>
|
||||||
|
<groupId>org.apache.poi</groupId>
|
||||||
|
</exclusion>
|
||||||
|
</exclusions>
|
||||||
|
</dependency>
|
||||||
|
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.apache.poi</groupId>
|
||||||
|
<artifactId>poi</artifactId>
|
||||||
|
<version>${poi.version}</version>
|
||||||
|
</dependency>
|
||||||
|
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.apache.poi</groupId>
|
||||||
|
<artifactId>poi-ooxml</artifactId>
|
||||||
|
<version>${poi.version}</version>
|
||||||
|
</dependency>
|
||||||
|
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.apache.poi</groupId>
|
||||||
|
<artifactId>poi-scratchpad</artifactId>
|
||||||
|
<version>${poi.version}</version>
|
||||||
|
</dependency>
|
||||||
|
|
||||||
|
<dependency>
|
||||||
|
<groupId>com.fasterxml.jackson.datatype</groupId>
|
||||||
|
<artifactId>jackson-datatype-jsr310</artifactId>
|
||||||
|
<version>${jackson-datatype-jsr310.version}</version>
|
||||||
|
</dependency>
|
||||||
|
|
||||||
</dependencies>
|
</dependencies>
|
||||||
|
|
||||||
</dependencyManagement>
|
</dependencyManagement>
|
||||||
|
@ -19,8 +19,8 @@
|
|||||||
|
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>net.1024lab</groupId>
|
<groupId>net.1024lab</groupId>
|
||||||
<artifactId>sa-common</artifactId>
|
<artifactId>sa-base</artifactId>
|
||||||
<version>${project.version}</version>
|
<version>1.0.0</version>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
|
||||||
</dependencies>
|
</dependencies>
|
||||||
@ -31,7 +31,7 @@
|
|||||||
<groupId>org.springframework.boot</groupId>
|
<groupId>org.springframework.boot</groupId>
|
||||||
<artifactId>spring-boot-maven-plugin</artifactId>
|
<artifactId>spring-boot-maven-plugin</artifactId>
|
||||||
<configuration>
|
<configuration>
|
||||||
<mainClass>net.lab1024.sa.admin.SmartAdminApplication</mainClass>
|
<mainClass>net.lab1024.sa.admin.AdminApplication</mainClass>
|
||||||
</configuration>
|
</configuration>
|
||||||
<executions>
|
<executions>
|
||||||
<execution>
|
<execution>
|
||||||
|
@ -1,5 +1,7 @@
|
|||||||
package net.lab1024.sa.admin;
|
package net.lab1024.sa.admin;
|
||||||
|
|
||||||
|
import net.lab1024.sa.base.listener.Ip2RegionListener;
|
||||||
|
import net.lab1024.sa.base.listener.LogVariableListener;
|
||||||
import org.apache.ibatis.annotations.Mapper;
|
import org.apache.ibatis.annotations.Mapper;
|
||||||
import org.mybatis.spring.annotation.MapperScan;
|
import org.mybatis.spring.annotation.MapperScan;
|
||||||
import org.springframework.boot.SpringApplication;
|
import org.springframework.boot.SpringApplication;
|
||||||
@ -17,17 +19,23 @@ import org.springframework.scheduling.annotation.EnableScheduling;
|
|||||||
* @Date 2022-08-29 21:00:58
|
* @Date 2022-08-29 21:00:58
|
||||||
* @Wechat zhuoda1024
|
* @Wechat zhuoda1024
|
||||||
* @Email lab1024@163.com
|
* @Email lab1024@163.com
|
||||||
* @Copyright 1024创新实验室 ( https://1024lab.net ),2012-2022
|
* @Copyright <a href="https://1024lab.net">1024创新实验室</a>
|
||||||
*/
|
*/
|
||||||
@EnableCaching
|
@EnableCaching
|
||||||
@EnableScheduling
|
@EnableScheduling
|
||||||
@EnableAspectJAutoProxy(proxyTargetClass = true, exposeProxy = true)
|
@EnableAspectJAutoProxy(proxyTargetClass = true, exposeProxy = true)
|
||||||
@ComponentScan(basePackages = {"net.lab1024.sa"})
|
@ComponentScan(AdminApplication.COMPONENT_SCAN)
|
||||||
@MapperScan(value = "net.lab1024.sa", annotationClass = Mapper.class)
|
@MapperScan(value = AdminApplication.COMPONENT_SCAN, annotationClass = Mapper.class)
|
||||||
@SpringBootApplication(exclude = {UserDetailsServiceAutoConfiguration.class})
|
@SpringBootApplication(exclude = {UserDetailsServiceAutoConfiguration.class})
|
||||||
public class SmartAdminApplication {
|
public class AdminApplication {
|
||||||
|
|
||||||
|
public static final String COMPONENT_SCAN = "net.lab1024.sa";
|
||||||
|
|
||||||
public static void main(String[] args) {
|
public static void main(String[] args) {
|
||||||
SpringApplication.run(SmartAdminApplication.class, args);
|
SpringApplication application = new SpringApplication(AdminApplication.class);
|
||||||
|
// 添加 日志监听器,使 log4j2-spring.xml 可以间接读取到配置文件的属性
|
||||||
|
application.addListeners(new LogVariableListener(), new Ip2RegionListener());
|
||||||
|
application.run(args);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
@ -1,13 +0,0 @@
|
|||||||
package net.lab1024.sa.admin.common;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* admin 相关的父类
|
|
||||||
*
|
|
||||||
* @Author 1024创新实验室-主任:卓大
|
|
||||||
* @Date 2022-06-10 21:00:58
|
|
||||||
* @Wechat zhuoda1024
|
|
||||||
* @Email lab1024@163.com
|
|
||||||
* @Copyright 1024创新实验室 ( https://1024lab.net ),2012-2022
|
|
||||||
*/
|
|
||||||
public class AdminBaseController {
|
|
||||||
}
|
|
@ -1,38 +0,0 @@
|
|||||||
package net.lab1024.sa.admin.config;
|
|
||||||
|
|
||||||
import net.lab1024.sa.common.common.domain.RequestUser;
|
|
||||||
import net.lab1024.sa.common.common.util.SmartRequestUtil;
|
|
||||||
import net.lab1024.sa.common.module.support.jwe.JweAspect;
|
|
||||||
import net.lab1024.sa.common.module.support.jwe.JweUserKey;
|
|
||||||
import net.lab1024.sa.common.module.support.operatelog.core.OperateLogAspect;
|
|
||||||
import net.lab1024.sa.common.module.support.operatelog.core.OperateLogConfig;
|
|
||||||
import org.springframework.context.annotation.Bean;
|
|
||||||
import org.springframework.context.annotation.Configuration;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 操作日志切面 配置
|
|
||||||
*
|
|
||||||
* @Author 1024创新实验室: 罗伊
|
|
||||||
* @Date 2022-05-30 21:22:12
|
|
||||||
* @Wechat zhuoda1024
|
|
||||||
* @Email lab1024@163.com
|
|
||||||
* @Copyright 1024创新实验室 ( https://1024lab.net )
|
|
||||||
*/
|
|
||||||
@Configuration
|
|
||||||
public class JweAspectConfig {
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 配置信息
|
|
||||||
*/
|
|
||||||
@Bean
|
|
||||||
public JweAspect jweConfig() {
|
|
||||||
return new JweAspect((request -> {
|
|
||||||
RequestUser requestUser = SmartRequestUtil.getRequestUser();
|
|
||||||
JweUserKey userKey = new JweUserKey();
|
|
||||||
userKey.setUserId(requestUser.getUserId());
|
|
||||||
userKey.setUserName(requestUser.getUserName());
|
|
||||||
userKey.setExtData(requestUser.getUserType().getValue().toString());
|
|
||||||
return userKey;
|
|
||||||
}));
|
|
||||||
}
|
|
||||||
}
|
|
@ -0,0 +1,42 @@
|
|||||||
|
package net.lab1024.sa.admin.config;
|
||||||
|
|
||||||
|
import net.lab1024.sa.admin.interceptor.AdminInterceptor;
|
||||||
|
import net.lab1024.sa.base.config.SwaggerConfig;
|
||||||
|
import org.springframework.context.annotation.Configuration;
|
||||||
|
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
|
||||||
|
import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
|
||||||
|
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
|
||||||
|
|
||||||
|
import javax.annotation.Resource;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* web相关配置
|
||||||
|
*
|
||||||
|
* @Author 1024创新实验室-主任: 卓大
|
||||||
|
* @Date 2021-09-02 20:21:10
|
||||||
|
* @Wechat zhuoda1024
|
||||||
|
* @Email lab1024@163.com
|
||||||
|
* @Copyright <a href="https://1024lab.net">1024创新实验室</a>
|
||||||
|
*/
|
||||||
|
@Configuration
|
||||||
|
public class MvcConfig implements WebMvcConfigurer {
|
||||||
|
|
||||||
|
@Resource
|
||||||
|
private AdminInterceptor adminInterceptor;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void addInterceptors(InterceptorRegistry registry) {
|
||||||
|
registry.addInterceptor(adminInterceptor)
|
||||||
|
.excludePathPatterns(SwaggerConfig.SWAGGER_WHITELIST)
|
||||||
|
.addPathPatterns("/**");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void addResourceHandlers(ResourceHandlerRegistry registry) {
|
||||||
|
registry.addResourceHandler("doc.html").addResourceLocations("classpath:/META-INF/resources/");
|
||||||
|
registry.addResourceHandler("/webjars/**").addResourceLocations("classpath:/META-INF/resources/webjars/");
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -1,13 +1,9 @@
|
|||||||
package net.lab1024.sa.admin.config;
|
package net.lab1024.sa.admin.config;
|
||||||
|
|
||||||
import net.lab1024.sa.common.common.domain.RequestUser;
|
import net.lab1024.sa.base.module.support.operatelog.core.OperateLogAspect;
|
||||||
import net.lab1024.sa.common.common.util.SmartRequestUtil;
|
import net.lab1024.sa.base.module.support.operatelog.core.OperateLogConfig;
|
||||||
import net.lab1024.sa.common.module.support.operatelog.core.OperateLogAspect;
|
|
||||||
import net.lab1024.sa.common.module.support.operatelog.core.OperateLogConfig;
|
|
||||||
import org.springframework.context.annotation.Configuration;
|
import org.springframework.context.annotation.Configuration;
|
||||||
|
|
||||||
import javax.servlet.http.HttpServletRequest;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 操作日志切面 配置
|
* 操作日志切面 配置
|
||||||
*
|
*
|
||||||
@ -15,19 +11,17 @@ import javax.servlet.http.HttpServletRequest;
|
|||||||
* @Date 2022-05-30 21:22:12
|
* @Date 2022-05-30 21:22:12
|
||||||
* @Wechat zhuoda1024
|
* @Wechat zhuoda1024
|
||||||
* @Email lab1024@163.com
|
* @Email lab1024@163.com
|
||||||
* @Copyright 1024创新实验室 ( https://1024lab.net )
|
* @Copyright <a href="https://1024lab.net">1024创新实验室</a>
|
||||||
*/
|
*/
|
||||||
@Configuration
|
@Configuration
|
||||||
public class OperateLogAspectConfig extends OperateLogAspect{
|
public class OperateLogAspectConfig extends OperateLogAspect{
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 配置信息
|
* 配置信息
|
||||||
* @return
|
|
||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
public OperateLogConfig getOperateLogConfig() {
|
public OperateLogConfig getOperateLogConfig() {
|
||||||
OperateLogConfig config = OperateLogConfig.builder().corePoolSize(4).queueCapacity(1000).build();
|
return OperateLogConfig.builder().corePoolSize(1).queueCapacity(10000).build();
|
||||||
return config;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -1,40 +0,0 @@
|
|||||||
package net.lab1024.sa.admin.config;
|
|
||||||
|
|
||||||
import net.lab1024.sa.admin.module.system.login.service.LoginService;
|
|
||||||
import net.lab1024.sa.common.common.security.AbstractSecurityConfig;
|
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
|
||||||
import org.springframework.context.annotation.Configuration;
|
|
||||||
import org.springframework.security.core.userdetails.UserDetails;
|
|
||||||
|
|
||||||
import javax.servlet.http.HttpServletRequest;
|
|
||||||
import java.util.function.BiFunction;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 权限配置
|
|
||||||
*
|
|
||||||
* @Author 1024创新实验室: 罗伊
|
|
||||||
* @Date 2022-05-30 21:22:12
|
|
||||||
* @Wechat zhuoda1024
|
|
||||||
* @Email lab1024@163.com
|
|
||||||
* @Copyright 1024创新实验室 ( https://1024lab.net )
|
|
||||||
*/
|
|
||||||
@Configuration
|
|
||||||
public class SecurityConfig extends AbstractSecurityConfig {
|
|
||||||
/**
|
|
||||||
* 获取TOKEN 解析类
|
|
||||||
*/
|
|
||||||
@Autowired
|
|
||||||
private LoginService loginService;
|
|
||||||
|
|
||||||
@Override
|
|
||||||
protected BiFunction<String, HttpServletRequest, UserDetails> userFunction() {
|
|
||||||
return (token, request) -> loginService.getLoginUserDetail(token, request);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
protected String[] getAuthenticatedUrlPatterns() {
|
|
||||||
return new String[]{"/**"};
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
}
|
|
@ -1,50 +0,0 @@
|
|||||||
package net.lab1024.sa.admin.config;
|
|
||||||
|
|
||||||
import net.lab1024.sa.admin.module.system.login.domain.LoginEmployeeDetail;
|
|
||||||
import net.lab1024.sa.common.common.annoation.SaAuth;
|
|
||||||
import net.lab1024.sa.common.common.security.SecurityMethodSource;
|
|
||||||
import net.lab1024.sa.common.common.security.SecurityPermissionCheckService;
|
|
||||||
import org.springframework.context.annotation.Bean;
|
|
||||||
import org.springframework.security.access.expression.method.ExpressionBasedAnnotationAttributeFactory;
|
|
||||||
import org.springframework.security.access.method.MethodSecurityMetadataSource;
|
|
||||||
import org.springframework.security.config.annotation.method.configuration.EnableGlobalMethodSecurity;
|
|
||||||
import org.springframework.security.config.annotation.method.configuration.GlobalMethodSecurityConfiguration;
|
|
||||||
import org.springframework.security.core.Authentication;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 1、以类名加方法名为权限字符串的校验模式 <br>
|
|
||||||
* 2、重写MethodSecurityMetadataSource将优化security配置,只需在方法上加上@saAuth注解,方法上就会存在权限(权限字符串为类名加方法名),而无需另外手动设置,减轻后端开发成本<br>
|
|
||||||
* 3、security将不再依据权限字符串进行权限控制,<br>
|
|
||||||
* 4、security将依据对应权限字符串下的接口权限进行控制 <br>
|
|
||||||
* 5、采用此配置原@PreAuthorize依然有效 <br>
|
|
||||||
* 6、如若无需此配置,需将@EnableGlobalMethodSecurity注解添加至SecurityConfig类上
|
|
||||||
*
|
|
||||||
* @Author 1024创新实验室: 罗伊
|
|
||||||
* @Date 2021-08-31 0:01
|
|
||||||
* @Wechat zhuoda1024
|
|
||||||
* @Email lab1024@163.com
|
|
||||||
* @Copyright 1024创新实验室 ( https://1024lab.net )
|
|
||||||
*/
|
|
||||||
@EnableGlobalMethodSecurity(prePostEnabled = true)
|
|
||||||
public class SecurityMethodConfig extends GlobalMethodSecurityConfiguration {
|
|
||||||
|
|
||||||
@Bean(SaAuth.saAuth)
|
|
||||||
public SecurityPermissionCheckService securityPermissionCheckService() {
|
|
||||||
return new SecurityPermissionCheckService() {
|
|
||||||
@Override
|
|
||||||
public boolean checkPermission(Authentication authentication, String permission) {
|
|
||||||
LoginEmployeeDetail loginEmployeeDetail = (LoginEmployeeDetail) authentication.getPrincipal();
|
|
||||||
if (loginEmployeeDetail.getAdministratorFlag()) {
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
return super.permissionJudge(loginEmployeeDetail, permission);
|
|
||||||
}
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public MethodSecurityMetadataSource customMethodSecurityMetadataSource() {
|
|
||||||
ExpressionBasedAnnotationAttributeFactory attributeFactory = new ExpressionBasedAnnotationAttributeFactory(this.getExpressionHandler());
|
|
||||||
return new SecurityMethodSource(attributeFactory, SaAuth.saAuth);
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,6 +1,6 @@
|
|||||||
package net.lab1024.sa.admin.constant;
|
package net.lab1024.sa.admin.constant;
|
||||||
|
|
||||||
import net.lab1024.sa.common.constant.CacheKeyConst;
|
import net.lab1024.sa.base.constant.CacheKeyConst;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 缓存 key
|
* 缓存 key
|
||||||
@ -9,7 +9,7 @@ import net.lab1024.sa.common.constant.CacheKeyConst;
|
|||||||
* @Date 2022-01-07 18:59:22
|
* @Date 2022-01-07 18:59:22
|
||||||
* @Wechat zhuoda1024
|
* @Wechat zhuoda1024
|
||||||
* @Email lab1024@163.com
|
* @Email lab1024@163.com
|
||||||
* @Copyright 1024创新实验室 ( https://1024lab.net ),2012-2022
|
* @Copyright <a href="https://1024lab.net">1024创新实验室</a>
|
||||||
*/
|
*/
|
||||||
public class AdminCacheConst extends CacheKeyConst {
|
public class AdminCacheConst extends CacheKeyConst {
|
||||||
|
|
||||||
@ -45,7 +45,7 @@ public class AdminCacheConst extends CacheKeyConst {
|
|||||||
/**
|
/**
|
||||||
* 分类相关缓存
|
* 分类相关缓存
|
||||||
*/
|
*/
|
||||||
public static class CATEGORY {
|
public static class Category {
|
||||||
|
|
||||||
public static final String CATEGORY_ENTITY = "category_cache";
|
public static final String CATEGORY_ENTITY = "category_cache";
|
||||||
|
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
package net.lab1024.sa.admin.constant;
|
package net.lab1024.sa.admin.constant;
|
||||||
|
|
||||||
import net.lab1024.sa.common.constant.RedisKeyConst;
|
import net.lab1024.sa.base.constant.RedisKeyConst;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* redis key 常量类
|
* redis key 常量类
|
||||||
@ -9,7 +9,7 @@ import net.lab1024.sa.common.constant.RedisKeyConst;
|
|||||||
* @Date 2022-01-07 18:59:22
|
* @Date 2022-01-07 18:59:22
|
||||||
* @Wechat zhuoda1024
|
* @Wechat zhuoda1024
|
||||||
* @Email lab1024@163.com
|
* @Email lab1024@163.com
|
||||||
* @Copyright 1024创新实验室 ( https://1024lab.net ),2012-2022
|
* @Copyright <a href="https://1024lab.net">1024创新实验室</a>
|
||||||
*/
|
*/
|
||||||
public class AdminRedisKeyConst extends RedisKeyConst {
|
public class AdminRedisKeyConst extends RedisKeyConst {
|
||||||
|
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
package net.lab1024.sa.admin.constant;
|
package net.lab1024.sa.admin.constant;
|
||||||
|
|
||||||
import net.lab1024.sa.common.constant.SwaggerTagConst;
|
import net.lab1024.sa.base.constant.SwaggerTagConst;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* swagger
|
* swagger
|
||||||
@ -9,7 +9,7 @@ import net.lab1024.sa.common.constant.SwaggerTagConst;
|
|||||||
* @Date 2022-01-07 18:59:22
|
* @Date 2022-01-07 18:59:22
|
||||||
* @Wechat zhuoda1024
|
* @Wechat zhuoda1024
|
||||||
* @Email lab1024@163.com
|
* @Email lab1024@163.com
|
||||||
* @Copyright 1024创新实验室 ( https://1024lab.net ),2012-2022
|
* @Copyright <a href="https://1024lab.net">1024创新实验室</a>
|
||||||
*/
|
*/
|
||||||
public class AdminSwaggerTagConst extends SwaggerTagConst {
|
public class AdminSwaggerTagConst extends SwaggerTagConst {
|
||||||
|
|
||||||
@ -48,7 +48,6 @@ public class AdminSwaggerTagConst extends SwaggerTagConst {
|
|||||||
|
|
||||||
public static final String SYSTEM_ROLE_MENU = "系统-角色-菜单";
|
public static final String SYSTEM_ROLE_MENU = "系统-角色-菜单";
|
||||||
|
|
||||||
public static final String SYSTEM_DATA_TRACER = "系统-";
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -0,0 +1,190 @@
|
|||||||
|
package net.lab1024.sa.admin.interceptor;
|
||||||
|
|
||||||
|
import cn.dev33.satoken.annotation.SaIgnore;
|
||||||
|
import cn.dev33.satoken.exception.SaTokenException;
|
||||||
|
import cn.dev33.satoken.stp.StpUtil;
|
||||||
|
import cn.dev33.satoken.strategy.SaStrategy;
|
||||||
|
import cn.hutool.core.util.StrUtil;
|
||||||
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
import net.lab1024.sa.admin.module.system.login.domain.RequestEmployee;
|
||||||
|
import net.lab1024.sa.admin.module.system.login.service.LoginService;
|
||||||
|
import net.lab1024.sa.base.common.annoation.NoNeedLogin;
|
||||||
|
import net.lab1024.sa.base.common.code.SystemErrorCode;
|
||||||
|
import net.lab1024.sa.base.common.code.UserErrorCode;
|
||||||
|
import net.lab1024.sa.base.common.constant.StringConst;
|
||||||
|
import net.lab1024.sa.base.common.domain.ResponseDTO;
|
||||||
|
import net.lab1024.sa.base.common.domain.SystemEnvironment;
|
||||||
|
import net.lab1024.sa.base.common.enumeration.SystemEnvironmentEnum;
|
||||||
|
import net.lab1024.sa.base.common.enumeration.UserTypeEnum;
|
||||||
|
import net.lab1024.sa.base.common.util.SmartRequestUtil;
|
||||||
|
import net.lab1024.sa.base.common.util.SmartResponseUtil;
|
||||||
|
import org.springframework.beans.factory.annotation.Value;
|
||||||
|
import org.springframework.http.HttpMethod;
|
||||||
|
import org.springframework.http.HttpStatus;
|
||||||
|
import org.springframework.stereotype.Component;
|
||||||
|
import org.springframework.web.method.HandlerMethod;
|
||||||
|
import org.springframework.web.servlet.HandlerInterceptor;
|
||||||
|
|
||||||
|
import javax.annotation.Resource;
|
||||||
|
import javax.servlet.http.HttpServletRequest;
|
||||||
|
import javax.servlet.http.HttpServletResponse;
|
||||||
|
import java.lang.reflect.Method;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* admin 拦截器
|
||||||
|
*
|
||||||
|
* @Author 1024创新实验室-主任:卓大
|
||||||
|
* @Date 2023/7/26 20:20:33
|
||||||
|
* @Wechat zhuoda1024
|
||||||
|
* @Email lab1024@163.com
|
||||||
|
* @Copyright <a href="https://1024lab.net">1024创新实验室</a>,Since 2012
|
||||||
|
*/
|
||||||
|
|
||||||
|
@Component
|
||||||
|
@Slf4j
|
||||||
|
public class AdminInterceptor implements HandlerInterceptor {
|
||||||
|
|
||||||
|
@Resource
|
||||||
|
private LoginService loginService;
|
||||||
|
|
||||||
|
@Resource
|
||||||
|
private SystemEnvironment systemEnvironment;
|
||||||
|
|
||||||
|
@Value("${sa-token.active-timeout}")
|
||||||
|
private long tokenActiveTimeout;
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
|
||||||
|
|
||||||
|
// OPTIONS请求直接return
|
||||||
|
if (HttpMethod.OPTIONS.toString().equals(request.getMethod())) {
|
||||||
|
response.setStatus(HttpStatus.NO_CONTENT.value());
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
boolean isHandler = handler instanceof HandlerMethod;
|
||||||
|
if (!isHandler) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
try {
|
||||||
|
// --------------- 第一步: 根据token 获取用户 ---------------
|
||||||
|
|
||||||
|
String tokenValue = StpUtil.getTokenValue();
|
||||||
|
boolean debugNumberTokenFlag = isDevDebugNumberToken(tokenValue);
|
||||||
|
|
||||||
|
String loginId = null;
|
||||||
|
if (debugNumberTokenFlag) {
|
||||||
|
//开发、测试环境,且为数字的话,则表明为 调试临时用户,即需要调用 sa-token switch
|
||||||
|
loginId = UserTypeEnum.ADMIN_EMPLOYEE.getValue() + StringConst.COLON + tokenValue;
|
||||||
|
StpUtil.switchTo(loginId);
|
||||||
|
} else {
|
||||||
|
loginId = (String) StpUtil.getLoginIdByToken(tokenValue);
|
||||||
|
}
|
||||||
|
|
||||||
|
RequestEmployee requestEmployee = loginService.getLoginEmployee(loginId, request);
|
||||||
|
|
||||||
|
// --------------- 第二步: 校验 登录 ---------------
|
||||||
|
|
||||||
|
Method method = ((HandlerMethod) handler).getMethod();
|
||||||
|
NoNeedLogin noNeedLogin = ((HandlerMethod) handler).getMethodAnnotation(NoNeedLogin.class);
|
||||||
|
if (noNeedLogin != null) {
|
||||||
|
checkActiveTimeout(requestEmployee,debugNumberTokenFlag);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (requestEmployee == null) {
|
||||||
|
SmartResponseUtil.write(response, ResponseDTO.error(UserErrorCode.LOGIN_STATE_INVALID));
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
// 检测token 活跃频率
|
||||||
|
checkActiveTimeout(requestEmployee,debugNumberTokenFlag);
|
||||||
|
|
||||||
|
|
||||||
|
// --------------- 第三步: 校验 权限 ---------------
|
||||||
|
|
||||||
|
SmartRequestUtil.setRequestUser(requestEmployee);
|
||||||
|
if (SaStrategy.instance.isAnnotationPresent.apply(method, SaIgnore.class)) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
SaStrategy.instance.checkMethodAnnotation.accept(method);
|
||||||
|
|
||||||
|
} catch (SaTokenException e) {
|
||||||
|
/*
|
||||||
|
* sa-token 异常状态码
|
||||||
|
* 具体请看: https://sa-token.cc/doc.html#/fun/exception-code
|
||||||
|
*/
|
||||||
|
int code = e.getCode();
|
||||||
|
if (code == 11041 || code == 11051) {
|
||||||
|
SmartResponseUtil.write(response, ResponseDTO.error(UserErrorCode.NO_PERMISSION));
|
||||||
|
} else if (code == 11016) {
|
||||||
|
SmartResponseUtil.write(response, ResponseDTO.error(UserErrorCode.LOGIN_ACTIVE_TIMEOUT));
|
||||||
|
} else if (code >= 11011 && code <= 11015) {
|
||||||
|
SmartResponseUtil.write(response, ResponseDTO.error(UserErrorCode.LOGIN_STATE_INVALID));
|
||||||
|
} else {
|
||||||
|
SmartResponseUtil.write(response, ResponseDTO.error(UserErrorCode.PARAM_ERROR));
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
} catch (Throwable e) {
|
||||||
|
SmartResponseUtil.write(response, ResponseDTO.error(SystemErrorCode.SYSTEM_ERROR));
|
||||||
|
log.error(e.getMessage(), e);
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
// 通过验证
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 检测:token 最低活跃频率(单位:秒),如果 token 超过此时间没有访问系统就会被冻结
|
||||||
|
*/
|
||||||
|
private void checkActiveTimeout(RequestEmployee requestEmployee, boolean debugNumberTokenFlag) {
|
||||||
|
|
||||||
|
// 对于开发环境的 数字 debug token ,不需要检测活跃有效期
|
||||||
|
if (debugNumberTokenFlag) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
// 用户不在线,也不用检测
|
||||||
|
if (requestEmployee == null) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
// 小于1 ,也不需要检测
|
||||||
|
if (tokenActiveTimeout < 1) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
StpUtil.checkActiveTimeout();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 是否为开发使用的 debug token
|
||||||
|
*
|
||||||
|
* @param token
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
private boolean isDevDebugNumberToken(String token) {
|
||||||
|
if (!StrUtil.isNumeric(token)) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
return systemEnvironment.getCurrentEnvironment() == SystemEnvironmentEnum.DEV
|
||||||
|
|| systemEnvironment.getCurrentEnvironment() == SystemEnvironmentEnum.TEST;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {
|
||||||
|
// 清除上下文
|
||||||
|
SmartRequestUtil.remove();
|
||||||
|
// 开发环境,关闭 sa token 的临时切换用户
|
||||||
|
if (systemEnvironment.getCurrentEnvironment() == SystemEnvironmentEnum.DEV) {
|
||||||
|
StpUtil.endSwitch();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
@ -1,9 +1,6 @@
|
|||||||
package net.lab1024.sa.admin.listener;
|
package net.lab1024.sa.admin.listener;
|
||||||
|
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import net.lab1024.sa.common.common.code.ErrorCodeRegister;
|
|
||||||
import net.lab1024.sa.common.config.ScheduleConfig;
|
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
|
||||||
import org.springframework.boot.CommandLineRunner;
|
import org.springframework.boot.CommandLineRunner;
|
||||||
import org.springframework.stereotype.Component;
|
import org.springframework.stereotype.Component;
|
||||||
|
|
||||||
@ -14,27 +11,14 @@ import org.springframework.stereotype.Component;
|
|||||||
* @Date 2021-08-26 18:46:32
|
* @Date 2021-08-26 18:46:32
|
||||||
* @Wechat zhuoda1024
|
* @Wechat zhuoda1024
|
||||||
* @Email lab1024@163.com
|
* @Email lab1024@163.com
|
||||||
* @Copyright 1024创新实验室 ( https://1024lab.net ),2012-2022
|
* @Copyright <a href="https://1024lab.net">1024创新实验室</a>
|
||||||
*/
|
*/
|
||||||
@Slf4j
|
@Slf4j
|
||||||
@Component
|
@Component
|
||||||
public class AdminStartupRunner implements CommandLineRunner {
|
public class AdminStartupRunner implements CommandLineRunner {
|
||||||
|
|
||||||
@Autowired
|
|
||||||
private ScheduleConfig scheduleConfig;
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void run(String... args) {
|
public void run(String... args) {
|
||||||
|
|
||||||
// 初始化状态码
|
|
||||||
int codeCount = ErrorCodeRegister.initialize();
|
|
||||||
|
|
||||||
//TODO <卓大> :根据实际情况来决定是否开启定时任务
|
|
||||||
String destroySchedules = "Spring 定时任务 @Schedule 已启动";
|
|
||||||
// destroySchedules = scheduleConfig.destroy();
|
|
||||||
|
|
||||||
log.info("\n ---------------【1024创新实验室 温馨提示:】 ErrorCode 共计完成初始化: {}个!---------------" +
|
|
||||||
"\n ---------------【1024创新实验室 温馨提示:】 {}---------------\n", codeCount, destroySchedules);
|
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -3,7 +3,7 @@ package net.lab1024.sa.admin.module.business.category.constant;
|
|||||||
|
|
||||||
import lombok.AllArgsConstructor;
|
import lombok.AllArgsConstructor;
|
||||||
import lombok.Getter;
|
import lombok.Getter;
|
||||||
import net.lab1024.sa.common.common.enumeration.BaseEnum;
|
import net.lab1024.sa.base.common.enumeration.BaseEnum;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 分类类型 枚举
|
* 分类类型 枚举
|
||||||
@ -12,7 +12,7 @@ import net.lab1024.sa.common.common.enumeration.BaseEnum;
|
|||||||
* @Date 2021/08/05 21:26:58
|
* @Date 2021/08/05 21:26:58
|
||||||
* @Wechat zhuoda1024
|
* @Wechat zhuoda1024
|
||||||
* @Email lab1024@163.com
|
* @Email lab1024@163.com
|
||||||
* @Copyright 1024创新实验室 ( https://1024lab.net ),2012-2022
|
* @Copyright <a href="https://1024lab.net">1024创新实验室</a>
|
||||||
*/
|
*/
|
||||||
@AllArgsConstructor
|
@AllArgsConstructor
|
||||||
@Getter
|
@Getter
|
||||||
|
@ -1,8 +1,8 @@
|
|||||||
package net.lab1024.sa.admin.module.business.category.controller;
|
package net.lab1024.sa.admin.module.business.category.controller;
|
||||||
|
|
||||||
import io.swagger.annotations.Api;
|
import cn.dev33.satoken.annotation.SaCheckPermission;
|
||||||
import io.swagger.annotations.ApiOperation;
|
import io.swagger.v3.oas.annotations.tags.Tag;
|
||||||
import net.lab1024.sa.admin.common.AdminBaseController;
|
import io.swagger.v3.oas.annotations.Operation;
|
||||||
import net.lab1024.sa.admin.constant.AdminSwaggerTagConst;
|
import net.lab1024.sa.admin.constant.AdminSwaggerTagConst;
|
||||||
import net.lab1024.sa.admin.module.business.category.domain.form.CategoryAddForm;
|
import net.lab1024.sa.admin.module.business.category.domain.form.CategoryAddForm;
|
||||||
import net.lab1024.sa.admin.module.business.category.domain.form.CategoryTreeQueryForm;
|
import net.lab1024.sa.admin.module.business.category.domain.form.CategoryTreeQueryForm;
|
||||||
@ -10,11 +10,10 @@ import net.lab1024.sa.admin.module.business.category.domain.form.CategoryUpdateF
|
|||||||
import net.lab1024.sa.admin.module.business.category.domain.vo.CategoryTreeVO;
|
import net.lab1024.sa.admin.module.business.category.domain.vo.CategoryTreeVO;
|
||||||
import net.lab1024.sa.admin.module.business.category.domain.vo.CategoryVO;
|
import net.lab1024.sa.admin.module.business.category.domain.vo.CategoryVO;
|
||||||
import net.lab1024.sa.admin.module.business.category.service.CategoryService;
|
import net.lab1024.sa.admin.module.business.category.service.CategoryService;
|
||||||
import net.lab1024.sa.common.common.domain.ResponseDTO;
|
import net.lab1024.sa.base.common.domain.ResponseDTO;
|
||||||
import net.lab1024.sa.common.module.support.operatelog.annoation.OperateLog;
|
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
|
||||||
import org.springframework.web.bind.annotation.*;
|
import org.springframework.web.bind.annotation.*;
|
||||||
|
|
||||||
|
import javax.annotation.Resource;
|
||||||
import javax.validation.Valid;
|
import javax.validation.Valid;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
@ -25,42 +24,45 @@ import java.util.List;
|
|||||||
* @Date 2021/08/05 21:26:58
|
* @Date 2021/08/05 21:26:58
|
||||||
* @Wechat zhuoda1024
|
* @Wechat zhuoda1024
|
||||||
* @Email lab1024@163.com
|
* @Email lab1024@163.com
|
||||||
* @Copyright 1024创新实验室 ( https://1024lab.net ),2012-2022
|
* @Copyright <a href="https://1024lab.net">1024创新实验室</a>
|
||||||
*/
|
*/
|
||||||
@OperateLog
|
|
||||||
@RestController
|
@RestController
|
||||||
@Api(tags = AdminSwaggerTagConst.Business.MANAGER_CATEGORY)
|
@Tag(name = AdminSwaggerTagConst.Business.MANAGER_CATEGORY)
|
||||||
public class CategoryController extends AdminBaseController {
|
public class CategoryController {
|
||||||
|
|
||||||
@Autowired
|
@Resource
|
||||||
private CategoryService categoryService;
|
private CategoryService categoryService;
|
||||||
|
|
||||||
@ApiOperation("添加类目 @author 胡克")
|
@Operation(summary = "添加类目 @author 胡克")
|
||||||
@PostMapping("/category/add")
|
@PostMapping("/category/add")
|
||||||
|
@SaCheckPermission("category:add")
|
||||||
public ResponseDTO<String> add(@RequestBody @Valid CategoryAddForm addForm) {
|
public ResponseDTO<String> add(@RequestBody @Valid CategoryAddForm addForm) {
|
||||||
return categoryService.add(addForm);
|
return categoryService.add(addForm);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ApiOperation("更新类目 @author 胡克")
|
@Operation(summary = "更新类目 @author 胡克")
|
||||||
@PostMapping("/category/update")
|
@PostMapping("/category/update")
|
||||||
|
@SaCheckPermission("category:update")
|
||||||
public ResponseDTO<String> update(@RequestBody @Valid CategoryUpdateForm updateForm) {
|
public ResponseDTO<String> update(@RequestBody @Valid CategoryUpdateForm updateForm) {
|
||||||
return categoryService.update(updateForm);
|
return categoryService.update(updateForm);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ApiOperation("查询类目详情 @author 胡克")
|
@Operation(summary = "查询类目详情 @author 胡克")
|
||||||
@GetMapping("/category/{categoryId}")
|
@GetMapping("/category/{categoryId}")
|
||||||
public ResponseDTO<CategoryVO> queryDetail(@PathVariable Long categoryId) {
|
public ResponseDTO<CategoryVO> queryDetail(@PathVariable Long categoryId) {
|
||||||
return categoryService.queryDetail(categoryId);
|
return categoryService.queryDetail(categoryId);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ApiOperation("查询类目层级树 @author 胡克")
|
@Operation(summary = "查询类目层级树 @author 胡克")
|
||||||
@PostMapping("/category/tree")
|
@PostMapping("/category/tree")
|
||||||
|
@SaCheckPermission("category:tree")
|
||||||
public ResponseDTO<List<CategoryTreeVO>> queryTree(@RequestBody @Valid CategoryTreeQueryForm queryForm) {
|
public ResponseDTO<List<CategoryTreeVO>> queryTree(@RequestBody @Valid CategoryTreeQueryForm queryForm) {
|
||||||
return categoryService.queryTree(queryForm);
|
return categoryService.queryTree(queryForm);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ApiOperation("删除类目 @author 胡克")
|
@Operation(summary = "删除类目 @author 胡克")
|
||||||
@GetMapping("/category/delete/{categoryId}")
|
@GetMapping("/category/delete/{categoryId}")
|
||||||
|
@SaCheckPermission("category:delete")
|
||||||
public ResponseDTO<String> delete(@PathVariable Long categoryId) {
|
public ResponseDTO<String> delete(@PathVariable Long categoryId) {
|
||||||
return categoryService.delete(categoryId);
|
return categoryService.delete(categoryId);
|
||||||
}
|
}
|
||||||
|
@ -16,7 +16,7 @@ import java.util.List;
|
|||||||
* @Date 2021/08/05 21:26:58
|
* @Date 2021/08/05 21:26:58
|
||||||
* @Wechat zhuoda1024
|
* @Wechat zhuoda1024
|
||||||
* @Email lab1024@163.com
|
* @Email lab1024@163.com
|
||||||
* @Copyright 1024创新实验室 ( https://1024lab.net ),2012-2022
|
* @Copyright <a href="https://1024lab.net">1024创新实验室</a>
|
||||||
*/
|
*/
|
||||||
@Component
|
@Component
|
||||||
@Mapper
|
@Mapper
|
||||||
@ -25,9 +25,9 @@ public interface CategoryDao extends BaseMapper<CategoryEntity> {
|
|||||||
/**
|
/**
|
||||||
* 根据父级id 类型 查询子类
|
* 根据父级id 类型 查询子类
|
||||||
*
|
*
|
||||||
* @param parentIdList
|
* @param parentIdList 父级id集合
|
||||||
* @param deletedFlag
|
* @param deletedFlag 删除标识
|
||||||
* @return
|
* @return 列表
|
||||||
*/
|
*/
|
||||||
List<CategoryEntity> queryByParentId(@Param("parentIdList") List<Long> parentIdList,
|
List<CategoryEntity> queryByParentId(@Param("parentIdList") List<Long> parentIdList,
|
||||||
@Param("deletedFlag") Boolean deletedFlag);
|
@Param("deletedFlag") Boolean deletedFlag);
|
||||||
@ -35,10 +35,10 @@ public interface CategoryDao extends BaseMapper<CategoryEntity> {
|
|||||||
/**
|
/**
|
||||||
* 根据父级id 类型 查询子类
|
* 根据父级id 类型 查询子类
|
||||||
*
|
*
|
||||||
* @param parentIdList
|
* @param parentIdList 父级id集合
|
||||||
* @param categoryType {@link CategoryTypeEnum}
|
* @param categoryType {@link CategoryTypeEnum}
|
||||||
* @param deletedFlag
|
* @param deletedFlag 删除标识
|
||||||
* @return
|
* @return 列表
|
||||||
*/
|
*/
|
||||||
List<CategoryEntity> queryByParentIdAndType(@Param("parentIdList") List<Long> parentIdList,
|
List<CategoryEntity> queryByParentIdAndType(@Param("parentIdList") List<Long> parentIdList,
|
||||||
@Param("categoryType") Integer categoryType,
|
@Param("categoryType") Integer categoryType,
|
||||||
@ -46,26 +46,17 @@ public interface CategoryDao extends BaseMapper<CategoryEntity> {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* 某个类型的所有
|
* 某个类型的所有
|
||||||
* @param categoryType
|
|
||||||
* @param deletedFlag
|
|
||||||
* @return
|
|
||||||
*/
|
*/
|
||||||
List<CategoryEntity> queryByType(@Param("categoryType") Integer categoryType,
|
List<CategoryEntity> queryByType(@Param("categoryType") Integer categoryType,
|
||||||
@Param("deletedFlag") Boolean deletedFlag);
|
@Param("deletedFlag") Boolean deletedFlag);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 根据类型和id查询
|
* 根据类型和id查询
|
||||||
* @param categoryType
|
|
||||||
* @param categoryId
|
|
||||||
* @return
|
|
||||||
*/
|
*/
|
||||||
CategoryEntity selectByTypeAndId(@Param("categoryType") Integer categoryType, @Param("categoryId") Long categoryId);
|
CategoryEntity selectByTypeAndId(@Param("categoryType") Integer categoryType, @Param("categoryId") Long categoryId);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 查看类目 具体条件 看sql
|
* 查看类目 具体条件 看sql
|
||||||
*
|
|
||||||
* @param entity
|
|
||||||
* @return
|
|
||||||
*/
|
*/
|
||||||
CategoryEntity selectOne(CategoryEntity entity);
|
CategoryEntity selectOne(CategoryEntity entity);
|
||||||
|
|
||||||
|
@ -1,10 +1,10 @@
|
|||||||
package net.lab1024.sa.admin.module.business.category.domain.dto;
|
package net.lab1024.sa.admin.module.business.category.domain.dto;
|
||||||
|
|
||||||
import io.swagger.annotations.ApiModelProperty;
|
import io.swagger.v3.oas.annotations.media.Schema;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
import net.lab1024.sa.admin.module.business.category.constant.CategoryTypeEnum;
|
import net.lab1024.sa.admin.module.business.category.constant.CategoryTypeEnum;
|
||||||
import net.lab1024.sa.common.common.swagger.ApiModelPropertyEnum;
|
import net.lab1024.sa.base.common.swagger.SchemaEnum;
|
||||||
import net.lab1024.sa.common.common.validator.enumeration.CheckEnum;
|
import net.lab1024.sa.base.common.validator.enumeration.CheckEnum;
|
||||||
import org.hibernate.validator.constraints.Length;
|
import org.hibernate.validator.constraints.Length;
|
||||||
|
|
||||||
import javax.validation.constraints.NotBlank;
|
import javax.validation.constraints.NotBlank;
|
||||||
@ -19,26 +19,26 @@ import javax.validation.constraints.NotNull;
|
|||||||
@Data
|
@Data
|
||||||
public class CategoryBaseDTO {
|
public class CategoryBaseDTO {
|
||||||
|
|
||||||
@ApiModelProperty(value = "类目名称", required = true)
|
@Schema(description = "类目名称", required = true)
|
||||||
@NotBlank(message = "类目名称不能为空")
|
@NotBlank(message = "类目名称不能为空")
|
||||||
@Length(max = 20, message = "类目名称最多20字符")
|
@Length(max = 20, message = "类目名称最多20字符")
|
||||||
private String categoryName;
|
private String categoryName;
|
||||||
|
|
||||||
@ApiModelPropertyEnum(desc = "分类类型", value = CategoryTypeEnum.class)
|
@SchemaEnum(desc = "分类类型", value = CategoryTypeEnum.class)
|
||||||
@CheckEnum(value = CategoryTypeEnum.class, required = true, message = "分类错误")
|
@CheckEnum(value = CategoryTypeEnum.class, required = true, message = "分类错误")
|
||||||
private Integer categoryType;
|
private Integer categoryType;
|
||||||
|
|
||||||
@ApiModelProperty("父级类目id|可选")
|
@Schema(description = "父级类目id|可选")
|
||||||
private Long parentId;
|
private Long parentId;
|
||||||
|
|
||||||
@ApiModelProperty("排序|可选")
|
@Schema(description = "排序|可选")
|
||||||
private Integer sort;
|
private Integer sort;
|
||||||
|
|
||||||
@ApiModelProperty("备注|可选")
|
@Schema(description = "备注|可选")
|
||||||
@Length(max = 200, message = "备注最多200字符")
|
@Length(max = 200, message = "备注最多200字符")
|
||||||
private String remark;
|
private String remark;
|
||||||
|
|
||||||
@ApiModelProperty("禁用状态")
|
@Schema(description = "禁用状态")
|
||||||
@NotNull(message = "禁用状态不能为空")
|
@NotNull(message = "禁用状态不能为空")
|
||||||
private Boolean disabledFlag;
|
private Boolean disabledFlag;
|
||||||
}
|
}
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
package net.lab1024.sa.admin.module.business.category.domain.dto;
|
package net.lab1024.sa.admin.module.business.category.domain.dto;
|
||||||
|
|
||||||
import io.swagger.annotations.ApiModelProperty;
|
import io.swagger.v3.oas.annotations.media.Schema;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -12,15 +12,15 @@ import lombok.Data;
|
|||||||
@Data
|
@Data
|
||||||
public class CategorySimpleDTO {
|
public class CategorySimpleDTO {
|
||||||
|
|
||||||
@ApiModelProperty("类目id")
|
@Schema(description = "类目id")
|
||||||
private Long categoryId;
|
private Long categoryId;
|
||||||
|
|
||||||
@ApiModelProperty("类目名称")
|
@Schema(description = "类目名称")
|
||||||
private String categoryName;
|
private String categoryName;
|
||||||
|
|
||||||
@ApiModelProperty("类目层级全称")
|
@Schema(description = "类目层级全称")
|
||||||
private String categoryFullName;
|
private String categoryFullName;
|
||||||
|
|
||||||
@ApiModelProperty("父级id")
|
@Schema(description = "父级id")
|
||||||
private Long parentId;
|
private Long parentId;
|
||||||
}
|
}
|
||||||
|
@ -15,7 +15,7 @@ import java.time.LocalDateTime;
|
|||||||
* @Date 2021/08/05 21:26:58
|
* @Date 2021/08/05 21:26:58
|
||||||
* @Wechat zhuoda1024
|
* @Wechat zhuoda1024
|
||||||
* @Email lab1024@163.com
|
* @Email lab1024@163.com
|
||||||
* @Copyright 1024创新实验室 ( https://1024lab.net ),2012-2022
|
* @Copyright <a href="https://1024lab.net">1024创新实验室</a>
|
||||||
*/
|
*/
|
||||||
@Data
|
@Data
|
||||||
@TableName("t_category")
|
@TableName("t_category")
|
||||||
|
@ -1,11 +1,10 @@
|
|||||||
package net.lab1024.sa.admin.module.business.category.domain.form;
|
package net.lab1024.sa.admin.module.business.category.domain.form;
|
||||||
|
|
||||||
import io.swagger.annotations.ApiModelProperty;
|
import io.swagger.v3.oas.annotations.media.Schema;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
import net.lab1024.sa.admin.module.business.category.constant.CategoryTypeEnum;
|
import net.lab1024.sa.admin.module.business.category.constant.CategoryTypeEnum;
|
||||||
import net.lab1024.sa.admin.module.business.category.domain.dto.CategoryBaseDTO;
|
import net.lab1024.sa.base.common.swagger.SchemaEnum;
|
||||||
import net.lab1024.sa.common.common.swagger.ApiModelPropertyEnum;
|
import net.lab1024.sa.base.common.validator.enumeration.CheckEnum;
|
||||||
import net.lab1024.sa.common.common.validator.enumeration.CheckEnum;
|
|
||||||
import org.hibernate.validator.constraints.Length;
|
import org.hibernate.validator.constraints.Length;
|
||||||
|
|
||||||
import javax.validation.constraints.NotBlank;
|
import javax.validation.constraints.NotBlank;
|
||||||
@ -18,31 +17,31 @@ import javax.validation.constraints.NotNull;
|
|||||||
* @Date 2021/08/05 21:26:58
|
* @Date 2021/08/05 21:26:58
|
||||||
* @Wechat zhuoda1024
|
* @Wechat zhuoda1024
|
||||||
* @Email lab1024@163.com
|
* @Email lab1024@163.com
|
||||||
* @Copyright 1024创新实验室 ( https://1024lab.net ),2012-2022
|
* @Copyright <a href="https://1024lab.net">1024创新实验室</a>
|
||||||
*/
|
*/
|
||||||
@Data
|
@Data
|
||||||
public class CategoryAddForm {
|
public class CategoryAddForm {
|
||||||
|
|
||||||
@ApiModelProperty(value = "类目名称", required = true)
|
@Schema(description = "类目名称", required = true)
|
||||||
@NotBlank(message = "类目名称不能为空")
|
@NotBlank(message = "类目名称不能为空")
|
||||||
@Length(max = 20, message = "类目名称最多20字符")
|
@Length(max = 20, message = "类目名称最多20字符")
|
||||||
private String categoryName;
|
private String categoryName;
|
||||||
|
|
||||||
@ApiModelPropertyEnum(desc = "分类类型", value = CategoryTypeEnum.class)
|
@SchemaEnum(desc = "分类类型", value = CategoryTypeEnum.class)
|
||||||
@CheckEnum(value = CategoryTypeEnum.class, required = true, message = "分类错误")
|
@CheckEnum(value = CategoryTypeEnum.class, required = true, message = "分类错误")
|
||||||
private Integer categoryType;
|
private Integer categoryType;
|
||||||
|
|
||||||
@ApiModelProperty("父级类目id|可选")
|
@Schema(description = "父级类目id|可选")
|
||||||
private Long parentId;
|
private Long parentId;
|
||||||
|
|
||||||
@ApiModelProperty("排序|可选")
|
@Schema(description = "排序|可选")
|
||||||
private Integer sort;
|
private Integer sort;
|
||||||
|
|
||||||
@ApiModelProperty("备注|可选")
|
@Schema(description = "备注|可选")
|
||||||
@Length(max = 200, message = "备注最多200字符")
|
@Length(max = 200, message = "备注最多200字符")
|
||||||
private String remark;
|
private String remark;
|
||||||
|
|
||||||
@ApiModelProperty("禁用状态")
|
@Schema(description = "禁用状态")
|
||||||
@NotNull(message = "禁用状态不能为空")
|
@NotNull(message = "禁用状态不能为空")
|
||||||
private Boolean disabledFlag;
|
private Boolean disabledFlag;
|
||||||
|
|
||||||
|
@ -1,9 +1,9 @@
|
|||||||
package net.lab1024.sa.admin.module.business.category.domain.form;
|
package net.lab1024.sa.admin.module.business.category.domain.form;
|
||||||
|
|
||||||
import io.swagger.annotations.ApiModelProperty;
|
import io.swagger.v3.oas.annotations.media.Schema;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
import net.lab1024.sa.admin.module.business.category.constant.CategoryTypeEnum;
|
import net.lab1024.sa.admin.module.business.category.constant.CategoryTypeEnum;
|
||||||
import net.lab1024.sa.common.common.swagger.ApiModelPropertyEnum;
|
import net.lab1024.sa.base.common.swagger.SchemaEnum;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 类目 层级树查询
|
* 类目 层级树查询
|
||||||
@ -12,14 +12,14 @@ import net.lab1024.sa.common.common.swagger.ApiModelPropertyEnum;
|
|||||||
* @Date 2021/08/05 21:26:58
|
* @Date 2021/08/05 21:26:58
|
||||||
* @Wechat zhuoda1024
|
* @Wechat zhuoda1024
|
||||||
* @Email lab1024@163.com
|
* @Email lab1024@163.com
|
||||||
* @Copyright 1024创新实验室 ( https://1024lab.net ),2012-2022
|
* @Copyright <a href="https://1024lab.net">1024创新实验室</a>
|
||||||
*/
|
*/
|
||||||
@Data
|
@Data
|
||||||
public class CategoryTreeQueryForm {
|
public class CategoryTreeQueryForm {
|
||||||
|
|
||||||
@ApiModelPropertyEnum(desc = "分类类型|可选", value = CategoryTypeEnum.class)
|
@SchemaEnum(desc = "分类类型|可选", value = CategoryTypeEnum.class)
|
||||||
private Integer categoryType;
|
private Integer categoryType;
|
||||||
|
|
||||||
@ApiModelProperty("父级类目id|可选")
|
@Schema(description = "父级类目id|可选")
|
||||||
private Long parentId;
|
private Long parentId;
|
||||||
}
|
}
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
package net.lab1024.sa.admin.module.business.category.domain.form;
|
package net.lab1024.sa.admin.module.business.category.domain.form;
|
||||||
|
|
||||||
import io.swagger.annotations.ApiModelProperty;
|
import io.swagger.v3.oas.annotations.media.Schema;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
import net.lab1024.sa.admin.module.business.category.domain.dto.CategoryBaseDTO;
|
import net.lab1024.sa.admin.module.business.category.domain.dto.CategoryBaseDTO;
|
||||||
|
|
||||||
@ -13,12 +13,12 @@ import javax.validation.constraints.NotNull;
|
|||||||
* @Date 2021/08/05 21:26:58
|
* @Date 2021/08/05 21:26:58
|
||||||
* @Wechat zhuoda1024
|
* @Wechat zhuoda1024
|
||||||
* @Email lab1024@163.com
|
* @Email lab1024@163.com
|
||||||
* @Copyright 1024创新实验室 ( https://1024lab.net ),2012-2022
|
* @Copyright <a href="https://1024lab.net">1024创新实验室</a>
|
||||||
*/
|
*/
|
||||||
@Data
|
@Data
|
||||||
public class CategoryUpdateForm extends CategoryAddForm {
|
public class CategoryUpdateForm extends CategoryAddForm {
|
||||||
|
|
||||||
@ApiModelProperty("类目id")
|
@Schema(description = "类目id")
|
||||||
@NotNull(message = "类目id不能为空")
|
@NotNull(message = "类目id不能为空")
|
||||||
private Long categoryId;
|
private Long categoryId;
|
||||||
}
|
}
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
package net.lab1024.sa.admin.module.business.category.domain.vo;
|
package net.lab1024.sa.admin.module.business.category.domain.vo;
|
||||||
|
|
||||||
import io.swagger.annotations.ApiModelProperty;
|
import io.swagger.v3.oas.annotations.media.Schema;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
@ -12,29 +12,29 @@ import java.util.List;
|
|||||||
* @Date 2021/08/05 21:26:58
|
* @Date 2021/08/05 21:26:58
|
||||||
* @Wechat zhuoda1024
|
* @Wechat zhuoda1024
|
||||||
* @Email lab1024@163.com
|
* @Email lab1024@163.com
|
||||||
* @Copyright 1024创新实验室 ( https://1024lab.net ),2012-2022
|
* @Copyright <a href="https://1024lab.net">1024创新实验室</a>
|
||||||
*/
|
*/
|
||||||
@Data
|
@Data
|
||||||
public class CategoryTreeVO {
|
public class CategoryTreeVO {
|
||||||
|
|
||||||
@ApiModelProperty("类目id")
|
@Schema(description = "类目id")
|
||||||
private Long categoryId;
|
private Long categoryId;
|
||||||
|
|
||||||
@ApiModelProperty("类目名称")
|
@Schema(description = "类目名称")
|
||||||
private String categoryName;
|
private String categoryName;
|
||||||
|
|
||||||
@ApiModelProperty("类目层级全称")
|
@Schema(description = "类目层级全称")
|
||||||
private String categoryFullName;
|
private String categoryFullName;
|
||||||
|
|
||||||
@ApiModelProperty("父级id")
|
@Schema(description = "父级id")
|
||||||
private Long parentId;
|
private Long parentId;
|
||||||
|
|
||||||
@ApiModelProperty("类目id")
|
@Schema(description = "类目id")
|
||||||
private Long value;
|
private Long value;
|
||||||
|
|
||||||
@ApiModelProperty("类目名称")
|
@Schema(description = "类目名称")
|
||||||
private String label;
|
private String label;
|
||||||
|
|
||||||
@ApiModelProperty("子类")
|
@Schema(description = "子类")
|
||||||
private List<CategoryTreeVO> children;
|
private List<CategoryTreeVO> children;
|
||||||
}
|
}
|
||||||
|
@ -1,15 +1,10 @@
|
|||||||
package net.lab1024.sa.admin.module.business.category.domain.vo;
|
package net.lab1024.sa.admin.module.business.category.domain.vo;
|
||||||
|
|
||||||
import io.swagger.annotations.ApiModelProperty;
|
import io.swagger.v3.oas.annotations.media.Schema;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
import net.lab1024.sa.admin.module.business.category.constant.CategoryTypeEnum;
|
import net.lab1024.sa.admin.module.business.category.constant.CategoryTypeEnum;
|
||||||
import net.lab1024.sa.admin.module.business.category.domain.dto.CategoryBaseDTO;
|
import net.lab1024.sa.base.common.swagger.SchemaEnum;
|
||||||
import net.lab1024.sa.common.common.swagger.ApiModelPropertyEnum;
|
|
||||||
import net.lab1024.sa.common.common.validator.enumeration.CheckEnum;
|
|
||||||
import org.hibernate.validator.constraints.Length;
|
|
||||||
|
|
||||||
import javax.validation.constraints.NotBlank;
|
|
||||||
import javax.validation.constraints.NotNull;
|
|
||||||
import java.time.LocalDateTime;
|
import java.time.LocalDateTime;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -19,30 +14,30 @@ import java.time.LocalDateTime;
|
|||||||
* @Date 2021/08/05 21:26:58
|
* @Date 2021/08/05 21:26:58
|
||||||
* @Wechat zhuoda1024
|
* @Wechat zhuoda1024
|
||||||
* @Email lab1024@163.com
|
* @Email lab1024@163.com
|
||||||
* @Copyright 1024创新实验室 ( https://1024lab.net ),2012-2022
|
* @Copyright <a href="https://1024lab.net">1024创新实验室</a>
|
||||||
*/
|
*/
|
||||||
@Data
|
@Data
|
||||||
public class CategoryVO {
|
public class CategoryVO {
|
||||||
|
|
||||||
@ApiModelProperty(value = "类目名称", required = true)
|
@Schema(description = "类目名称", required = true)
|
||||||
private String categoryName;
|
private String categoryName;
|
||||||
|
|
||||||
@ApiModelPropertyEnum(desc = "分类类型", value = CategoryTypeEnum.class)
|
@SchemaEnum(desc = "分类类型", value = CategoryTypeEnum.class)
|
||||||
private Integer categoryType;
|
private Integer categoryType;
|
||||||
|
|
||||||
@ApiModelProperty("父级类目id|可选")
|
@Schema(description = "父级类目id|可选")
|
||||||
private Long parentId;
|
private Long parentId;
|
||||||
|
|
||||||
@ApiModelProperty("排序|可选")
|
@Schema(description = "排序|可选")
|
||||||
private Integer sort;
|
private Integer sort;
|
||||||
|
|
||||||
@ApiModelProperty("备注|可选")
|
@Schema(description = "备注|可选")
|
||||||
private String remark;
|
private String remark;
|
||||||
|
|
||||||
@ApiModelProperty("禁用状态")
|
@Schema(description = "禁用状态")
|
||||||
private Boolean disabledFlag;
|
private Boolean disabledFlag;
|
||||||
|
|
||||||
@ApiModelProperty("类目id")
|
@Schema(description = "类目id")
|
||||||
private Long categoryId;
|
private Long categoryId;
|
||||||
|
|
||||||
private LocalDateTime updateTime;
|
private LocalDateTime updateTime;
|
||||||
|
@ -6,14 +6,14 @@ import net.lab1024.sa.admin.constant.AdminCacheConst;
|
|||||||
import net.lab1024.sa.admin.module.business.category.dao.CategoryDao;
|
import net.lab1024.sa.admin.module.business.category.dao.CategoryDao;
|
||||||
import net.lab1024.sa.admin.module.business.category.domain.entity.CategoryEntity;
|
import net.lab1024.sa.admin.module.business.category.domain.entity.CategoryEntity;
|
||||||
import net.lab1024.sa.admin.module.business.category.domain.vo.CategoryTreeVO;
|
import net.lab1024.sa.admin.module.business.category.domain.vo.CategoryTreeVO;
|
||||||
import net.lab1024.sa.common.common.constant.StringConst;
|
import net.lab1024.sa.base.common.constant.StringConst;
|
||||||
import net.lab1024.sa.common.common.util.SmartBeanUtil;
|
import net.lab1024.sa.base.common.util.SmartBeanUtil;
|
||||||
import org.apache.commons.collections4.CollectionUtils;
|
import org.apache.commons.collections4.CollectionUtils;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
|
||||||
import org.springframework.cache.annotation.CacheEvict;
|
import org.springframework.cache.annotation.CacheEvict;
|
||||||
import org.springframework.cache.annotation.Cacheable;
|
import org.springframework.cache.annotation.Cacheable;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
|
import javax.annotation.Resource;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
@ -25,21 +25,21 @@ import java.util.stream.Collectors;
|
|||||||
* @Date 2021/08/05 21:26:58
|
* @Date 2021/08/05 21:26:58
|
||||||
* @Wechat zhuoda1024
|
* @Wechat zhuoda1024
|
||||||
* @Email lab1024@163.com
|
* @Email lab1024@163.com
|
||||||
* @Copyright 1024创新实验室 ( https://1024lab.net ),2012-2022
|
* @Copyright <a href="https://1024lab.net">1024创新实验室</a>
|
||||||
*/
|
*/
|
||||||
@Service
|
@Service
|
||||||
@Slf4j
|
@Slf4j
|
||||||
public class CategoryCacheManager {
|
public class CategoryCacheManager {
|
||||||
|
|
||||||
|
|
||||||
@Autowired
|
@Resource
|
||||||
private CategoryDao categoryDao;
|
private CategoryDao categoryDao;
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 根据类目id 移除缓存
|
* 根据类目id 移除缓存
|
||||||
*/
|
*/
|
||||||
@CacheEvict(value = {AdminCacheConst.CATEGORY.CATEGORY_ENTITY, AdminCacheConst.CATEGORY.CATEGORY_SUB, AdminCacheConst.CATEGORY.CATEGORY_TREE}, allEntries = true)
|
@CacheEvict(value = {AdminCacheConst.Category.CATEGORY_ENTITY, AdminCacheConst.Category.CATEGORY_SUB, AdminCacheConst.Category.CATEGORY_TREE}, allEntries = true)
|
||||||
public void removeCache() {
|
public void removeCache() {
|
||||||
log.info("clear CATEGORY ,CATEGORY_SUB ,CATEGORY_TREE");
|
log.info("clear CATEGORY ,CATEGORY_SUB ,CATEGORY_TREE");
|
||||||
}
|
}
|
||||||
@ -47,10 +47,8 @@ public class CategoryCacheManager {
|
|||||||
/**
|
/**
|
||||||
* 查詢类目
|
* 查詢类目
|
||||||
*
|
*
|
||||||
* @param categoryId
|
|
||||||
* @return
|
|
||||||
*/
|
*/
|
||||||
@Cacheable(AdminCacheConst.CATEGORY.CATEGORY_ENTITY)
|
@Cacheable(AdminCacheConst.Category.CATEGORY_ENTITY)
|
||||||
public CategoryEntity queryCategory(Long categoryId) {
|
public CategoryEntity queryCategory(Long categoryId) {
|
||||||
return categoryDao.selectById(categoryId);
|
return categoryDao.selectById(categoryId);
|
||||||
}
|
}
|
||||||
@ -58,10 +56,8 @@ public class CategoryCacheManager {
|
|||||||
/**
|
/**
|
||||||
* 查询类目 子级
|
* 查询类目 子级
|
||||||
*
|
*
|
||||||
* @param categoryId
|
|
||||||
* @return
|
|
||||||
*/
|
*/
|
||||||
@Cacheable(AdminCacheConst.CATEGORY.CATEGORY_SUB)
|
@Cacheable(AdminCacheConst.Category.CATEGORY_SUB)
|
||||||
public List<CategoryEntity> querySubCategory(Long categoryId) {
|
public List<CategoryEntity> querySubCategory(Long categoryId) {
|
||||||
return categoryDao.queryByParentId(Lists.newArrayList(categoryId), false);
|
return categoryDao.queryByParentId(Lists.newArrayList(categoryId), false);
|
||||||
}
|
}
|
||||||
@ -70,10 +66,8 @@ public class CategoryCacheManager {
|
|||||||
/**
|
/**
|
||||||
* 查询类目 层级树
|
* 查询类目 层级树
|
||||||
* 优先查询缓存
|
* 优先查询缓存
|
||||||
*
|
|
||||||
* @return
|
|
||||||
*/
|
*/
|
||||||
@Cacheable(AdminCacheConst.CATEGORY.CATEGORY_TREE)
|
@Cacheable(AdminCacheConst.Category.CATEGORY_TREE)
|
||||||
public List<CategoryTreeVO> queryCategoryTree(Long parentId, Integer categoryType) {
|
public List<CategoryTreeVO> queryCategoryTree(Long parentId, Integer categoryType) {
|
||||||
List<CategoryEntity> allCategoryEntityList = categoryDao.queryByType(categoryType, false);
|
List<CategoryEntity> allCategoryEntityList = categoryDao.queryByType(categoryType, false);
|
||||||
|
|
||||||
@ -93,7 +87,6 @@ public class CategoryCacheManager {
|
|||||||
* 递归查询设置类目子类
|
* 递归查询设置类目子类
|
||||||
* 从缓存查询子类
|
* 从缓存查询子类
|
||||||
*
|
*
|
||||||
* @param treeList
|
|
||||||
*/
|
*/
|
||||||
private void queryAndSetSubCategory(List<CategoryTreeVO> treeList, List<CategoryEntity> allCategoryEntityList) {
|
private void queryAndSetSubCategory(List<CategoryTreeVO> treeList, List<CategoryEntity> allCategoryEntityList) {
|
||||||
if (CollectionUtils.isEmpty(treeList)) {
|
if (CollectionUtils.isEmpty(treeList)) {
|
||||||
|
@ -4,15 +4,14 @@ import cn.hutool.core.util.StrUtil;
|
|||||||
import com.google.common.collect.Lists;
|
import com.google.common.collect.Lists;
|
||||||
import com.google.common.collect.Maps;
|
import com.google.common.collect.Maps;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import net.lab1024.sa.admin.module.business.category.dao.CategoryDao;
|
|
||||||
import net.lab1024.sa.admin.module.business.category.domain.entity.CategoryEntity;
|
|
||||||
import net.lab1024.sa.admin.module.business.category.domain.dto.CategorySimpleDTO;
|
import net.lab1024.sa.admin.module.business.category.domain.dto.CategorySimpleDTO;
|
||||||
|
import net.lab1024.sa.admin.module.business.category.domain.entity.CategoryEntity;
|
||||||
import net.lab1024.sa.admin.module.business.category.manager.CategoryCacheManager;
|
import net.lab1024.sa.admin.module.business.category.manager.CategoryCacheManager;
|
||||||
import net.lab1024.sa.common.common.constant.StringConst;
|
import net.lab1024.sa.base.common.constant.StringConst;
|
||||||
import org.apache.commons.collections4.CollectionUtils;
|
import org.apache.commons.collections4.CollectionUtils;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
|
import javax.annotation.Resource;
|
||||||
import java.util.*;
|
import java.util.*;
|
||||||
import java.util.function.Function;
|
import java.util.function.Function;
|
||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
@ -24,7 +23,7 @@ import java.util.stream.Collectors;
|
|||||||
* @Date 2021/08/05 21:26:58
|
* @Date 2021/08/05 21:26:58
|
||||||
* @Wechat zhuoda1024
|
* @Wechat zhuoda1024
|
||||||
* @Email lab1024@163.com
|
* @Email lab1024@163.com
|
||||||
* @Copyright 1024创新实验室 ( https://1024lab.net ),2012-2022
|
* @Copyright <a href="https://1024lab.net">1024创新实验室</a>
|
||||||
*/
|
*/
|
||||||
@Service
|
@Service
|
||||||
@Slf4j
|
@Slf4j
|
||||||
@ -32,10 +31,7 @@ public class CategoryQueryService {
|
|||||||
|
|
||||||
private static final Long DEFAULT_CATEGORY_PARENT_ID = 0L;
|
private static final Long DEFAULT_CATEGORY_PARENT_ID = 0L;
|
||||||
|
|
||||||
@Autowired
|
@Resource
|
||||||
private CategoryDao categoryDao;
|
|
||||||
|
|
||||||
@Autowired
|
|
||||||
private CategoryCacheManager categoryCacheManager;
|
private CategoryCacheManager categoryCacheManager;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -58,9 +54,6 @@ public class CategoryQueryService {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* 根据 类目id集合 查询未删除的类目集合
|
* 根据 类目id集合 查询未删除的类目集合
|
||||||
*
|
|
||||||
* @param categoryIdList
|
|
||||||
* @return
|
|
||||||
*/
|
*/
|
||||||
public Map<Long, CategoryEntity> queryCategoryList(List<Long> categoryIdList) {
|
public Map<Long, CategoryEntity> queryCategoryList(List<Long> categoryIdList) {
|
||||||
if (CollectionUtils.isEmpty(categoryIdList)) {
|
if (CollectionUtils.isEmpty(categoryIdList)) {
|
||||||
@ -82,8 +75,6 @@ public class CategoryQueryService {
|
|||||||
* 根据类目id 递归查询该id的所有子类id 递归查询
|
* 根据类目id 递归查询该id的所有子类id 递归查询
|
||||||
* 同时存入缓存
|
* 同时存入缓存
|
||||||
* 注意:查询出来的集合 不包含传递的父类参数
|
* 注意:查询出来的集合 不包含传递的父类参数
|
||||||
*
|
|
||||||
* @param categoryIdList
|
|
||||||
*/
|
*/
|
||||||
public List<Long> queryCategorySubId(List<Long> categoryIdList) {
|
public List<Long> queryCategorySubId(List<Long> categoryIdList) {
|
||||||
if (CollectionUtils.isEmpty(categoryIdList)) {
|
if (CollectionUtils.isEmpty(categoryIdList)) {
|
||||||
@ -107,8 +98,6 @@ public class CategoryQueryService {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* 处理类目名称
|
* 处理类目名称
|
||||||
*
|
|
||||||
* @param categoryIdList
|
|
||||||
*/
|
*/
|
||||||
public List<String> queryCategoryName(List<Long> categoryIdList) {
|
public List<String> queryCategoryName(List<Long> categoryIdList) {
|
||||||
if (CollectionUtils.isEmpty(categoryIdList)) {
|
if (CollectionUtils.isEmpty(categoryIdList)) {
|
||||||
@ -127,9 +116,6 @@ public class CategoryQueryService {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* 根据类目id 查询类目名称
|
* 根据类目id 查询类目名称
|
||||||
*
|
|
||||||
* @param categoryId
|
|
||||||
* @return
|
|
||||||
*/
|
*/
|
||||||
public String queryCategoryName(Long categoryId) {
|
public String queryCategoryName(Long categoryId) {
|
||||||
CategoryEntity categoryEntity = categoryCacheManager.queryCategory(categoryId);
|
CategoryEntity categoryEntity = categoryCacheManager.queryCategory(categoryId);
|
||||||
@ -141,9 +127,6 @@ public class CategoryQueryService {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* 根据类目id 查询类目详情 包含类目全称 如:医考/医师资格/临床执业
|
* 根据类目id 查询类目详情 包含类目全称 如:医考/医师资格/临床执业
|
||||||
*
|
|
||||||
* @param categoryId
|
|
||||||
* @return
|
|
||||||
*/
|
*/
|
||||||
public CategorySimpleDTO queryCategoryInfo(Long categoryId) {
|
public CategorySimpleDTO queryCategoryInfo(Long categoryId) {
|
||||||
CategoryEntity categoryEntity = categoryCacheManager.queryCategory(categoryId);
|
CategoryEntity categoryEntity = categoryCacheManager.queryCategory(categoryId);
|
||||||
@ -163,9 +146,6 @@ public class CategoryQueryService {
|
|||||||
/**
|
/**
|
||||||
* 递归查询分类和所有父级类目
|
* 递归查询分类和所有父级类目
|
||||||
* ps:特别注意返回的集合中 包含自己
|
* ps:特别注意返回的集合中 包含自己
|
||||||
*
|
|
||||||
* @param categoryId
|
|
||||||
* @return
|
|
||||||
*/
|
*/
|
||||||
public List<CategoryEntity> queryCategoryAndParent(Long categoryId) {
|
public List<CategoryEntity> queryCategoryAndParent(Long categoryId) {
|
||||||
List<CategoryEntity> parentCategoryList = Lists.newArrayList();
|
List<CategoryEntity> parentCategoryList = Lists.newArrayList();
|
||||||
@ -186,9 +166,6 @@ public class CategoryQueryService {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* 查询 分类全称 如:医考/医师资格/临床执业
|
* 查询 分类全称 如:医考/医师资格/临床执业
|
||||||
*
|
|
||||||
* @param categoryId
|
|
||||||
* @return
|
|
||||||
*/
|
*/
|
||||||
public String queryFullName(Long categoryId) {
|
public String queryFullName(Long categoryId) {
|
||||||
List<CategoryEntity> parentCategoryList = this.queryCategoryAndParent(categoryId);
|
List<CategoryEntity> parentCategoryList = this.queryCategoryAndParent(categoryId);
|
||||||
@ -199,13 +176,10 @@ public class CategoryQueryService {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* 查询 分类全称 如:医考/医师资格/临床执业
|
* 查询 分类全称 如:医考/医师资格/临床执业
|
||||||
*
|
|
||||||
* @param categoryIdList
|
|
||||||
* @return
|
|
||||||
*/
|
*/
|
||||||
public Map<Long, String> queryFullName(List<Long> categoryIdList) {
|
public Map<Long, String> queryFullName(List<Long> categoryIdList) {
|
||||||
if (CollectionUtils.isEmpty(categoryIdList)) {
|
if (CollectionUtils.isEmpty(categoryIdList)) {
|
||||||
return Collections.EMPTY_MAP;
|
return Maps.newHashMap();
|
||||||
}
|
}
|
||||||
// 循环内查询的缓存 还ok
|
// 循环内查询的缓存 还ok
|
||||||
return categoryIdList.stream().collect(Collectors.toMap(Function.identity(), this::queryFullName));
|
return categoryIdList.stream().collect(Collectors.toMap(Function.identity(), this::queryFullName));
|
||||||
|
@ -9,14 +9,14 @@ import net.lab1024.sa.admin.module.business.category.domain.form.CategoryUpdateF
|
|||||||
import net.lab1024.sa.admin.module.business.category.domain.vo.CategoryTreeVO;
|
import net.lab1024.sa.admin.module.business.category.domain.vo.CategoryTreeVO;
|
||||||
import net.lab1024.sa.admin.module.business.category.domain.vo.CategoryVO;
|
import net.lab1024.sa.admin.module.business.category.domain.vo.CategoryVO;
|
||||||
import net.lab1024.sa.admin.module.business.category.manager.CategoryCacheManager;
|
import net.lab1024.sa.admin.module.business.category.manager.CategoryCacheManager;
|
||||||
import net.lab1024.sa.common.common.code.UserErrorCode;
|
import net.lab1024.sa.base.common.code.UserErrorCode;
|
||||||
import net.lab1024.sa.common.common.domain.ResponseDTO;
|
import net.lab1024.sa.base.common.domain.ResponseDTO;
|
||||||
import net.lab1024.sa.common.common.util.SmartBeanUtil;
|
import net.lab1024.sa.base.common.util.SmartBeanUtil;
|
||||||
import org.apache.commons.collections4.CollectionUtils;
|
import org.apache.commons.collections4.CollectionUtils;
|
||||||
import org.apache.commons.lang3.math.NumberUtils;
|
import org.apache.commons.lang3.math.NumberUtils;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
|
import javax.annotation.Resource;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Objects;
|
import java.util.Objects;
|
||||||
import java.util.Optional;
|
import java.util.Optional;
|
||||||
@ -28,25 +28,22 @@ import java.util.Optional;
|
|||||||
* @Date 2021/08/05 21:26:58
|
* @Date 2021/08/05 21:26:58
|
||||||
* @Wechat zhuoda1024
|
* @Wechat zhuoda1024
|
||||||
* @Email lab1024@163.com
|
* @Email lab1024@163.com
|
||||||
* @Copyright 1024创新实验室 ( https://1024lab.net ),2012-2022
|
* @Copyright <a href="https://1024lab.net">1024创新实验室</a>
|
||||||
*/
|
*/
|
||||||
@Service
|
@Service
|
||||||
public class CategoryService {
|
public class CategoryService {
|
||||||
|
|
||||||
@Autowired
|
@Resource
|
||||||
private CategoryDao categoryDao;
|
private CategoryDao categoryDao;
|
||||||
|
|
||||||
@Autowired
|
@Resource
|
||||||
private CategoryQueryService categoryQueryService;
|
private CategoryQueryService categoryQueryService;
|
||||||
|
|
||||||
@Autowired
|
@Resource
|
||||||
private CategoryCacheManager categoryCacheManager;
|
private CategoryCacheManager categoryCacheManager;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 添加类目
|
* 添加类目
|
||||||
*
|
|
||||||
* @author 胡克
|
|
||||||
* @date 2021/1/20 17:17
|
|
||||||
*/
|
*/
|
||||||
public ResponseDTO<String> add(CategoryAddForm addForm) {
|
public ResponseDTO<String> add(CategoryAddForm addForm) {
|
||||||
// 校验类目
|
// 校验类目
|
||||||
@ -73,8 +70,6 @@ public class CategoryService {
|
|||||||
* 更新类目
|
* 更新类目
|
||||||
* 不能更新父级类目
|
* 不能更新父级类目
|
||||||
*
|
*
|
||||||
* @author 胡克
|
|
||||||
* @date 2021/1/20 17:17
|
|
||||||
*/
|
*/
|
||||||
public ResponseDTO<String> update(CategoryUpdateForm updateForm) {
|
public ResponseDTO<String> update(CategoryUpdateForm updateForm) {
|
||||||
// 校验类目
|
// 校验类目
|
||||||
@ -85,9 +80,9 @@ public class CategoryService {
|
|||||||
}
|
}
|
||||||
CategoryEntity categoryEntity = SmartBeanUtil.copy(updateForm, CategoryEntity.class);
|
CategoryEntity categoryEntity = SmartBeanUtil.copy(updateForm, CategoryEntity.class);
|
||||||
|
|
||||||
/**
|
/*
|
||||||
* 不更新类目类型
|
不更新类目类型
|
||||||
* 不更新父类id
|
不更新父类id
|
||||||
*/
|
*/
|
||||||
Integer categoryType = optional.get().getCategoryType();
|
Integer categoryType = optional.get().getCategoryType();
|
||||||
categoryEntity.setCategoryType(categoryType);
|
categoryEntity.setCategoryType(categoryType);
|
||||||
@ -107,9 +102,6 @@ public class CategoryService {
|
|||||||
/**
|
/**
|
||||||
* 新增/更新 类目时的 校验
|
* 新增/更新 类目时的 校验
|
||||||
*
|
*
|
||||||
* @param categoryEntity
|
|
||||||
* @param isUpdate
|
|
||||||
* @return
|
|
||||||
*/
|
*/
|
||||||
private ResponseDTO<String> checkCategory(CategoryEntity categoryEntity, boolean isUpdate) {
|
private ResponseDTO<String> checkCategory(CategoryEntity categoryEntity, boolean isUpdate) {
|
||||||
// 校验父级是否存在
|
// 校验父级是否存在
|
||||||
@ -158,8 +150,6 @@ public class CategoryService {
|
|||||||
/**
|
/**
|
||||||
* 查询 类目详情
|
* 查询 类目详情
|
||||||
*
|
*
|
||||||
* @param categoryId
|
|
||||||
* @return
|
|
||||||
*/
|
*/
|
||||||
public ResponseDTO<CategoryVO> queryDetail(Long categoryId) {
|
public ResponseDTO<CategoryVO> queryDetail(Long categoryId) {
|
||||||
Optional<CategoryEntity> optional = categoryQueryService.queryCategory(categoryId);
|
Optional<CategoryEntity> optional = categoryQueryService.queryCategory(categoryId);
|
||||||
@ -174,8 +164,6 @@ public class CategoryService {
|
|||||||
* 根据父级id 查询所有子类 返回层级树
|
* 根据父级id 查询所有子类 返回层级树
|
||||||
* 如果父类id 为空 返回所有类目层级
|
* 如果父类id 为空 返回所有类目层级
|
||||||
*
|
*
|
||||||
* @param queryForm
|
|
||||||
* @return
|
|
||||||
*/
|
*/
|
||||||
public ResponseDTO<List<CategoryTreeVO>> queryTree(CategoryTreeQueryForm queryForm) {
|
public ResponseDTO<List<CategoryTreeVO>> queryTree(CategoryTreeQueryForm queryForm) {
|
||||||
if (null == queryForm.getParentId()) {
|
if (null == queryForm.getParentId()) {
|
||||||
@ -192,8 +180,6 @@ public class CategoryService {
|
|||||||
* 删除类目
|
* 删除类目
|
||||||
* 如果有未删除的子类 则无法删除
|
* 如果有未删除的子类 则无法删除
|
||||||
*
|
*
|
||||||
* @param categoryId
|
|
||||||
* @return
|
|
||||||
*/
|
*/
|
||||||
public ResponseDTO<String> delete(Long categoryId) {
|
public ResponseDTO<String> delete(Long categoryId) {
|
||||||
Optional<CategoryEntity> optional = categoryQueryService.queryCategory(categoryId);
|
Optional<CategoryEntity> optional = categoryQueryService.queryCategory(categoryId);
|
||||||
|
@ -3,7 +3,7 @@ package net.lab1024.sa.admin.module.business.goods.constant;
|
|||||||
|
|
||||||
import lombok.AllArgsConstructor;
|
import lombok.AllArgsConstructor;
|
||||||
import lombok.Getter;
|
import lombok.Getter;
|
||||||
import net.lab1024.sa.common.common.enumeration.BaseEnum;
|
import net.lab1024.sa.base.common.enumeration.BaseEnum;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 商品状态
|
* 商品状态
|
||||||
@ -12,7 +12,7 @@ import net.lab1024.sa.common.common.enumeration.BaseEnum;
|
|||||||
* @Date 2021-10-25 20:26:54
|
* @Date 2021-10-25 20:26:54
|
||||||
* @Wechat zhuoda1024
|
* @Wechat zhuoda1024
|
||||||
* @Email lab1024@163.com
|
* @Email lab1024@163.com
|
||||||
* @Copyright 1024创新实验室 ( https://1024lab.net ),2012-2022
|
* @Copyright <a href="https://1024lab.net">1024创新实验室</a>
|
||||||
*/
|
*/
|
||||||
@AllArgsConstructor
|
@AllArgsConstructor
|
||||||
@Getter
|
@Getter
|
||||||
|
@ -1,23 +1,28 @@
|
|||||||
package net.lab1024.sa.admin.module.business.goods.controller;
|
package net.lab1024.sa.admin.module.business.goods.controller;
|
||||||
|
|
||||||
import io.swagger.annotations.Api;
|
import cn.dev33.satoken.annotation.SaCheckPermission;
|
||||||
import io.swagger.annotations.ApiOperation;
|
import com.alibaba.excel.EasyExcel;
|
||||||
import net.lab1024.sa.admin.common.AdminBaseController;
|
import io.swagger.v3.oas.annotations.tags.Tag;
|
||||||
|
import io.swagger.v3.oas.annotations.Operation;
|
||||||
import net.lab1024.sa.admin.constant.AdminSwaggerTagConst;
|
import net.lab1024.sa.admin.constant.AdminSwaggerTagConst;
|
||||||
import net.lab1024.sa.admin.module.business.goods.domain.form.GoodsAddForm;
|
import net.lab1024.sa.admin.module.business.goods.domain.form.GoodsAddForm;
|
||||||
import net.lab1024.sa.admin.module.business.goods.domain.form.GoodsQueryForm;
|
import net.lab1024.sa.admin.module.business.goods.domain.form.GoodsQueryForm;
|
||||||
import net.lab1024.sa.admin.module.business.goods.domain.form.GoodsUpdateForm;
|
import net.lab1024.sa.admin.module.business.goods.domain.form.GoodsUpdateForm;
|
||||||
|
import net.lab1024.sa.admin.module.business.goods.domain.vo.GoodsExcelVO;
|
||||||
import net.lab1024.sa.admin.module.business.goods.domain.vo.GoodsVO;
|
import net.lab1024.sa.admin.module.business.goods.domain.vo.GoodsVO;
|
||||||
import net.lab1024.sa.admin.module.business.goods.service.GoodsService;
|
import net.lab1024.sa.admin.module.business.goods.service.GoodsService;
|
||||||
import net.lab1024.sa.common.common.domain.PageResult;
|
import net.lab1024.sa.base.common.domain.PageResult;
|
||||||
import net.lab1024.sa.common.common.domain.ResponseDTO;
|
import net.lab1024.sa.base.common.domain.ResponseDTO;
|
||||||
import net.lab1024.sa.common.common.domain.ValidateList;
|
import net.lab1024.sa.base.common.domain.ValidateList;
|
||||||
import net.lab1024.sa.common.module.support.operatelog.annoation.OperateLog;
|
import net.lab1024.sa.base.common.util.SmartResponseUtil;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
|
||||||
import org.springframework.security.access.prepost.PreAuthorize;
|
|
||||||
import org.springframework.web.bind.annotation.*;
|
import org.springframework.web.bind.annotation.*;
|
||||||
|
import org.springframework.web.multipart.MultipartFile;
|
||||||
|
|
||||||
|
import javax.annotation.Resource;
|
||||||
|
import javax.servlet.http.HttpServletResponse;
|
||||||
import javax.validation.Valid;
|
import javax.validation.Valid;
|
||||||
|
import java.io.IOException;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 商品业务
|
* 商品业务
|
||||||
@ -26,50 +31,74 @@ import javax.validation.Valid;
|
|||||||
* @Date 2021-10-25 20:26:54
|
* @Date 2021-10-25 20:26:54
|
||||||
* @Wechat zhuoda1024
|
* @Wechat zhuoda1024
|
||||||
* @Email lab1024@163.com
|
* @Email lab1024@163.com
|
||||||
* @Copyright 1024创新实验室 ( https://1024lab.net ),2012-2022
|
* @Copyright <a href="https://1024lab.net">1024创新实验室</a>
|
||||||
*/
|
*/
|
||||||
@OperateLog
|
|
||||||
@RestController
|
@RestController
|
||||||
@Api(tags = AdminSwaggerTagConst.Business.MANAGER_GOODS)
|
@Tag(name = AdminSwaggerTagConst.Business.MANAGER_GOODS)
|
||||||
public class GoodsController extends AdminBaseController {
|
public class GoodsController {
|
||||||
|
|
||||||
@Autowired
|
@Resource
|
||||||
private GoodsService goodsService;
|
private GoodsService goodsService;
|
||||||
|
|
||||||
@ApiOperation("分页查询 @author 胡克")
|
@Operation(summary = "分页查询 @author 胡克")
|
||||||
@PostMapping("/goods/query")
|
@PostMapping("/goods/query")
|
||||||
@PreAuthorize("@saAuth.checkPermission('goods:query')")
|
@SaCheckPermission("goods:query")
|
||||||
public ResponseDTO<PageResult<GoodsVO>> query(@RequestBody @Valid GoodsQueryForm queryForm) {
|
public ResponseDTO<PageResult<GoodsVO>> query(@RequestBody @Valid GoodsQueryForm queryForm) {
|
||||||
return goodsService.query(queryForm);
|
return goodsService.query(queryForm);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ApiOperation("添加商品 @author 胡克")
|
@Operation(summary = "添加商品 @author 胡克")
|
||||||
@PostMapping("/goods/add")
|
@PostMapping("/goods/add")
|
||||||
@PreAuthorize("@saAuth.checkPermission('goods:add')")
|
@SaCheckPermission("goods:add")
|
||||||
public ResponseDTO<String> add(@RequestBody @Valid GoodsAddForm addForm) {
|
public ResponseDTO<String> add(@RequestBody @Valid GoodsAddForm addForm) {
|
||||||
return goodsService.add(addForm);
|
return goodsService.add(addForm);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ApiOperation("更新商品 @author 胡克")
|
@Operation(summary = "更新商品 @author 胡克")
|
||||||
@PostMapping("/goods/update")
|
@PostMapping("/goods/update")
|
||||||
@PreAuthorize("@saAuth.checkPermission('goods:update')")
|
@SaCheckPermission("goods:update")
|
||||||
public ResponseDTO<String> update(@RequestBody @Valid GoodsUpdateForm updateForm) {
|
public ResponseDTO<String> update(@RequestBody @Valid GoodsUpdateForm updateForm) {
|
||||||
return goodsService.update(updateForm);
|
return goodsService.update(updateForm);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ApiOperation("删除 @author 卓大")
|
@Operation(summary = "删除 @author 卓大")
|
||||||
@GetMapping("/goods/delete/{goodsId}")
|
@GetMapping("/goods/delete/{goodsId}")
|
||||||
@PreAuthorize("@saAuth.checkPermission('goods:delete')")
|
@SaCheckPermission("goods:delete")
|
||||||
public ResponseDTO<String> delete(@PathVariable Long goodsId) {
|
public ResponseDTO<String> delete(@PathVariable Long goodsId) {
|
||||||
return goodsService.delete(goodsId);
|
return goodsService.delete(goodsId);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ApiOperation("批量 @author 卓大")
|
@Operation(summary = "批量 @author 卓大")
|
||||||
@PostMapping("/goods/batchDelete")
|
@PostMapping("/goods/batchDelete")
|
||||||
@PreAuthorize("@saAuth.checkPermission('goods:batchDelete')")
|
@SaCheckPermission("goods:batchDelete")
|
||||||
public ResponseDTO<String> batchDelete(@RequestBody @Valid ValidateList<Long> idList) {
|
public ResponseDTO<String> batchDelete(@RequestBody @Valid ValidateList<Long> idList) {
|
||||||
return goodsService.batchDelete(idList);
|
return goodsService.batchDelete(idList);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// --------------- 导出和导入 -------------------
|
||||||
|
|
||||||
|
@Operation(summary = "导入 @author 卓大")
|
||||||
|
@PostMapping("/goods/importGoods")
|
||||||
|
@SaCheckPermission("goods:importGoods")
|
||||||
|
public ResponseDTO<String> importGoods(@RequestParam MultipartFile file) {
|
||||||
|
return goodsService.importGoods(file);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Operation(summary = "导出 @author 卓大")
|
||||||
|
@GetMapping("/goods/exportGoods")
|
||||||
|
@SaCheckPermission("goods:exportGoods")
|
||||||
|
public void exportGoods(HttpServletResponse response) throws IOException {
|
||||||
|
|
||||||
|
List<GoodsExcelVO> goodsList = goodsService.getAllGoods();
|
||||||
|
|
||||||
|
// 设置下载消息头
|
||||||
|
SmartResponseUtil.setDownloadFileHeader(response, "商品列表.xls", null);
|
||||||
|
|
||||||
|
// 下载
|
||||||
|
EasyExcel.write(response.getOutputStream(), GoodsExcelVO.class)
|
||||||
|
.autoCloseStream(Boolean.FALSE)
|
||||||
|
.sheet("商品")
|
||||||
|
.doWrite(goodsList);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -18,7 +18,7 @@ import java.util.List;
|
|||||||
* @Date 2021-10-25 20:26:54
|
* @Date 2021-10-25 20:26:54
|
||||||
* @Wechat zhuoda1024
|
* @Wechat zhuoda1024
|
||||||
* @Email lab1024@163.com
|
* @Email lab1024@163.com
|
||||||
* @Copyright 1024创新实验室 ( https://1024lab.net ),2012-2022
|
* @Copyright <a href="https://1024lab.net">1024创新实验室</a>
|
||||||
*/
|
*/
|
||||||
@Mapper
|
@Mapper
|
||||||
@Component
|
@Component
|
||||||
@ -27,9 +27,6 @@ public interface GoodsDao extends BaseMapper<GoodsEntity> {
|
|||||||
/**
|
/**
|
||||||
* 分页 查询商品
|
* 分页 查询商品
|
||||||
*
|
*
|
||||||
* @param page
|
|
||||||
* @param query
|
|
||||||
* @return
|
|
||||||
*/
|
*/
|
||||||
List<GoodsVO> query(Page page, @Param("query") GoodsQueryForm query);
|
List<GoodsVO> query(Page page, @Param("query") GoodsQueryForm query);
|
||||||
|
|
||||||
|
@ -4,10 +4,6 @@ import com.baomidou.mybatisplus.annotation.IdType;
|
|||||||
import com.baomidou.mybatisplus.annotation.TableId;
|
import com.baomidou.mybatisplus.annotation.TableId;
|
||||||
import com.baomidou.mybatisplus.annotation.TableName;
|
import com.baomidou.mybatisplus.annotation.TableName;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
import net.lab1024.sa.admin.module.business.category.dao.CategoryDao;
|
|
||||||
import net.lab1024.sa.common.module.support.datatracer.annoation.DataTracerFieldBigDecimal;
|
|
||||||
import net.lab1024.sa.common.module.support.datatracer.annoation.DataTracerFieldLabel;
|
|
||||||
import net.lab1024.sa.common.module.support.datatracer.annoation.DataTracerFieldSql;
|
|
||||||
|
|
||||||
import java.math.BigDecimal;
|
import java.math.BigDecimal;
|
||||||
import java.time.LocalDateTime;
|
import java.time.LocalDateTime;
|
||||||
@ -19,7 +15,7 @@ import java.time.LocalDateTime;
|
|||||||
* @Date 2021-10-25 20:26:54
|
* @Date 2021-10-25 20:26:54
|
||||||
* @Wechat zhuoda1024
|
* @Wechat zhuoda1024
|
||||||
* @Email lab1024@163.com
|
* @Email lab1024@163.com
|
||||||
* @Copyright 1024创新实验室 ( https://1024lab.net ),2012-2022
|
* @Copyright <a href="https://1024lab.net">1024创新实验室</a>
|
||||||
*/
|
*/
|
||||||
@Data
|
@Data
|
||||||
@TableName("t_goods")
|
@TableName("t_goods")
|
||||||
|
@ -1,13 +1,12 @@
|
|||||||
package net.lab1024.sa.admin.module.business.goods.domain.form;
|
package net.lab1024.sa.admin.module.business.goods.domain.form;
|
||||||
|
|
||||||
import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
|
import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
|
||||||
import io.swagger.annotations.ApiModelProperty;
|
import io.swagger.v3.oas.annotations.media.Schema;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
import net.lab1024.sa.admin.module.business.goods.constant.GoodsStatusEnum;
|
import net.lab1024.sa.admin.module.business.goods.constant.GoodsStatusEnum;
|
||||||
import net.lab1024.sa.common.common.json.deserializer.DictValueVoDeserializer;
|
import net.lab1024.sa.base.common.json.deserializer.DictValueVoDeserializer;
|
||||||
import net.lab1024.sa.common.common.swagger.ApiModelPropertyEnum;
|
import net.lab1024.sa.base.common.swagger.SchemaEnum;
|
||||||
import net.lab1024.sa.common.common.validator.enumeration.CheckEnum;
|
import net.lab1024.sa.base.common.validator.enumeration.CheckEnum;
|
||||||
import org.hibernate.validator.constraints.Length;
|
|
||||||
|
|
||||||
import javax.validation.constraints.DecimalMin;
|
import javax.validation.constraints.DecimalMin;
|
||||||
import javax.validation.constraints.NotBlank;
|
import javax.validation.constraints.NotBlank;
|
||||||
@ -21,37 +20,37 @@ import java.math.BigDecimal;
|
|||||||
* @Date 2021-10-25 20:26:54
|
* @Date 2021-10-25 20:26:54
|
||||||
* @Wechat zhuoda1024
|
* @Wechat zhuoda1024
|
||||||
* @Email lab1024@163.com
|
* @Email lab1024@163.com
|
||||||
* @Copyright 1024创新实验室 ( https://1024lab.net ),2012-2022
|
* @Copyright <a href="https://1024lab.net">1024创新实验室</a>
|
||||||
*/
|
*/
|
||||||
@Data
|
@Data
|
||||||
public class GoodsAddForm {
|
public class GoodsAddForm {
|
||||||
|
|
||||||
@ApiModelProperty("商品分类")
|
@Schema(description = "商品分类")
|
||||||
@NotNull(message = "商品分类不能为空")
|
@NotNull(message = "商品分类不能为空")
|
||||||
private Long categoryId;
|
private Long categoryId;
|
||||||
|
|
||||||
@ApiModelProperty("商品名称")
|
@Schema(description = "商品名称")
|
||||||
@NotBlank(message = "商品名称不能为空")
|
@NotBlank(message = "商品名称不能为空")
|
||||||
private String goodsName;
|
private String goodsName;
|
||||||
|
|
||||||
@ApiModelPropertyEnum(GoodsStatusEnum.class)
|
@SchemaEnum(GoodsStatusEnum.class)
|
||||||
@CheckEnum(message = "商品状态错误", value = GoodsStatusEnum.class, required = true)
|
@CheckEnum(message = "商品状态错误", value = GoodsStatusEnum.class, required = true)
|
||||||
private Integer goodsStatus;
|
private Integer goodsStatus;
|
||||||
|
|
||||||
@ApiModelProperty("产地")
|
@Schema(description = "产地")
|
||||||
@NotBlank(message = "产地 不能为空 ")
|
@NotBlank(message = "产地 不能为空 ")
|
||||||
@JsonDeserialize(using = DictValueVoDeserializer.class)
|
@JsonDeserialize(using = DictValueVoDeserializer.class)
|
||||||
private String place;
|
private String place;
|
||||||
|
|
||||||
@ApiModelProperty("商品价格")
|
@Schema(description = "商品价格")
|
||||||
@NotNull(message = "商品价格不能为空")
|
@NotNull(message = "商品价格不能为空")
|
||||||
@DecimalMin(value = "0", message = "商品价格最低0")
|
@DecimalMin(value = "0", message = "商品价格最低0")
|
||||||
private BigDecimal price;
|
private BigDecimal price;
|
||||||
|
|
||||||
@ApiModelProperty("上架状态")
|
@Schema(description = "上架状态")
|
||||||
@NotNull(message = "上架状态不能为空")
|
@NotNull(message = "上架状态不能为空")
|
||||||
private Boolean shelvesFlag;
|
private Boolean shelvesFlag;
|
||||||
|
|
||||||
@ApiModelProperty("备注|可选")
|
@Schema(description = "备注|可选")
|
||||||
private String remark;
|
private String remark;
|
||||||
}
|
}
|
||||||
|
@ -0,0 +1,37 @@
|
|||||||
|
package net.lab1024.sa.admin.module.business.goods.domain.form;
|
||||||
|
|
||||||
|
import com.alibaba.excel.annotation.ExcelProperty;
|
||||||
|
import lombok.Data;
|
||||||
|
|
||||||
|
import java.math.BigDecimal;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 商品 导入表单
|
||||||
|
*
|
||||||
|
* @Author 1024创新实验室: 胡克
|
||||||
|
* @Date 2021-10-25 20:26:54
|
||||||
|
* @Wechat zhuoda1024
|
||||||
|
* @Email lab1024@163.com
|
||||||
|
* @Copyright <a href="https://1024lab.net">1024创新实验室</a>
|
||||||
|
*/
|
||||||
|
@Data
|
||||||
|
public class GoodsImportForm {
|
||||||
|
|
||||||
|
@ExcelProperty("商品分类")
|
||||||
|
private String categoryName;
|
||||||
|
|
||||||
|
@ExcelProperty("商品名称")
|
||||||
|
private String goodsName;
|
||||||
|
|
||||||
|
@ExcelProperty("商品状态错误")
|
||||||
|
private String goodsStatus;
|
||||||
|
|
||||||
|
@ExcelProperty("产地")
|
||||||
|
private String place;
|
||||||
|
|
||||||
|
@ExcelProperty("商品价格")
|
||||||
|
private BigDecimal price;
|
||||||
|
|
||||||
|
@ExcelProperty("备注")
|
||||||
|
private String remark;
|
||||||
|
}
|
@ -1,17 +1,13 @@
|
|||||||
package net.lab1024.sa.admin.module.business.goods.domain.form;
|
package net.lab1024.sa.admin.module.business.goods.domain.form;
|
||||||
|
|
||||||
import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
|
import io.swagger.v3.oas.annotations.media.Schema;
|
||||||
import io.swagger.annotations.ApiModelProperty;
|
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
import net.lab1024.sa.admin.module.business.goods.constant.GoodsStatusEnum;
|
import net.lab1024.sa.admin.module.business.goods.constant.GoodsStatusEnum;
|
||||||
import net.lab1024.sa.common.common.domain.PageParam;
|
import net.lab1024.sa.base.common.domain.PageParam;
|
||||||
import net.lab1024.sa.common.common.json.deserializer.DictValueVoDeserializer;
|
import net.lab1024.sa.base.common.swagger.SchemaEnum;
|
||||||
import net.lab1024.sa.common.common.swagger.ApiModelPropertyEnum;
|
import net.lab1024.sa.base.common.validator.enumeration.CheckEnum;
|
||||||
import net.lab1024.sa.common.common.validator.enumeration.CheckEnum;
|
|
||||||
import org.hibernate.validator.constraints.Length;
|
import org.hibernate.validator.constraints.Length;
|
||||||
|
|
||||||
import javax.validation.constraints.NotBlank;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 商品 分页查询
|
* 商品 分页查询
|
||||||
*
|
*
|
||||||
@ -19,28 +15,28 @@ import javax.validation.constraints.NotBlank;
|
|||||||
* @Date 2021-10-25 20:26:54
|
* @Date 2021-10-25 20:26:54
|
||||||
* @Wechat zhuoda1024
|
* @Wechat zhuoda1024
|
||||||
* @Email lab1024@163.com
|
* @Email lab1024@163.com
|
||||||
* @Copyright 1024创新实验室 ( https://1024lab.net ),2012-2022
|
* @Copyright <a href="https://1024lab.net">1024创新实验室</a>
|
||||||
*/
|
*/
|
||||||
@Data
|
@Data
|
||||||
public class GoodsQueryForm extends PageParam {
|
public class GoodsQueryForm extends PageParam {
|
||||||
|
|
||||||
@ApiModelProperty("商品分类")
|
@Schema(description = "商品分类")
|
||||||
private Integer categoryId;
|
private Integer categoryId;
|
||||||
|
|
||||||
@ApiModelProperty("搜索词")
|
@Schema(description = "搜索词")
|
||||||
@Length(max = 30, message = "搜索词最多30字符")
|
@Length(max = 30, message = "搜索词最多30字符")
|
||||||
private String searchWord;
|
private String searchWord;
|
||||||
|
|
||||||
@ApiModelPropertyEnum(GoodsStatusEnum.class)
|
@SchemaEnum(GoodsStatusEnum.class)
|
||||||
@CheckEnum(message = "商品状态错误", value = GoodsStatusEnum.class, required = false)
|
@CheckEnum(message = "商品状态错误", value = GoodsStatusEnum.class, required = false)
|
||||||
private Integer goodsStatus;
|
private Integer goodsStatus;
|
||||||
|
|
||||||
@ApiModelProperty("产地")
|
@Schema(description = "产地")
|
||||||
private String place;
|
private String place;
|
||||||
|
|
||||||
@ApiModelProperty("上架状态")
|
@Schema(description = "上架状态")
|
||||||
private Boolean shelvesFlag;
|
private Boolean shelvesFlag;
|
||||||
|
|
||||||
@ApiModelProperty(hidden = true)
|
@Schema(hidden = true)
|
||||||
private Boolean deletedFlag;
|
private Boolean deletedFlag;
|
||||||
}
|
}
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
package net.lab1024.sa.admin.module.business.goods.domain.form;
|
package net.lab1024.sa.admin.module.business.goods.domain.form;
|
||||||
|
|
||||||
import io.swagger.annotations.ApiModelProperty;
|
import io.swagger.v3.oas.annotations.media.Schema;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
|
|
||||||
import javax.validation.constraints.NotNull;
|
import javax.validation.constraints.NotNull;
|
||||||
@ -12,12 +12,12 @@ import javax.validation.constraints.NotNull;
|
|||||||
* @Date 2021-10-25 20:26:54
|
* @Date 2021-10-25 20:26:54
|
||||||
* @Wechat zhuoda1024
|
* @Wechat zhuoda1024
|
||||||
* @Email lab1024@163.com
|
* @Email lab1024@163.com
|
||||||
* @Copyright 1024创新实验室 ( https://1024lab.net ),2012-2022
|
* @Copyright <a href="https://1024lab.net">1024创新实验室</a>
|
||||||
*/
|
*/
|
||||||
@Data
|
@Data
|
||||||
public class GoodsUpdateForm extends GoodsAddForm {
|
public class GoodsUpdateForm extends GoodsAddForm {
|
||||||
|
|
||||||
@ApiModelProperty("商品id")
|
@Schema(description = "商品id")
|
||||||
@NotNull(message = "商品id不能为空")
|
@NotNull(message = "商品id不能为空")
|
||||||
private Long goodsId;
|
private Long goodsId;
|
||||||
}
|
}
|
||||||
|
@ -0,0 +1,43 @@
|
|||||||
|
package net.lab1024.sa.admin.module.business.goods.domain.vo;
|
||||||
|
|
||||||
|
import com.alibaba.excel.annotation.ExcelProperty;
|
||||||
|
import lombok.AllArgsConstructor;
|
||||||
|
import lombok.Builder;
|
||||||
|
import lombok.Data;
|
||||||
|
import lombok.NoArgsConstructor;
|
||||||
|
|
||||||
|
import java.math.BigDecimal;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* excel商品
|
||||||
|
*
|
||||||
|
* @Author 1024创新实验室: 胡克
|
||||||
|
* @Date 2021-10-25 20:26:54
|
||||||
|
* @Wechat zhuoda1024
|
||||||
|
* @Email lab1024@163.com
|
||||||
|
* @Copyright <a href="https://1024lab.net">1024创新实验室</a>
|
||||||
|
*/
|
||||||
|
@Data
|
||||||
|
@Builder
|
||||||
|
@AllArgsConstructor
|
||||||
|
@NoArgsConstructor
|
||||||
|
public class GoodsExcelVO {
|
||||||
|
|
||||||
|
@ExcelProperty("商品分类")
|
||||||
|
private String categoryName;
|
||||||
|
|
||||||
|
@ExcelProperty("商品名称")
|
||||||
|
private String goodsName;
|
||||||
|
|
||||||
|
@ExcelProperty("商品状态错误")
|
||||||
|
private String goodsStatus;
|
||||||
|
|
||||||
|
@ExcelProperty("产地")
|
||||||
|
private String place;
|
||||||
|
|
||||||
|
@ExcelProperty("商品价格")
|
||||||
|
private BigDecimal price;
|
||||||
|
|
||||||
|
@ExcelProperty("备注")
|
||||||
|
private String remark;
|
||||||
|
}
|
@ -1,11 +1,11 @@
|
|||||||
package net.lab1024.sa.admin.module.business.goods.domain.vo;
|
package net.lab1024.sa.admin.module.business.goods.domain.vo;
|
||||||
|
|
||||||
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
|
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
|
||||||
import io.swagger.annotations.ApiModelProperty;
|
import io.swagger.v3.oas.annotations.media.Schema;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
import net.lab1024.sa.admin.module.business.goods.constant.GoodsStatusEnum;
|
import net.lab1024.sa.admin.module.business.goods.constant.GoodsStatusEnum;
|
||||||
import net.lab1024.sa.common.common.json.serializer.DictValueVoSerializer;
|
import net.lab1024.sa.base.common.json.serializer.DictValueVoSerializer;
|
||||||
import net.lab1024.sa.common.common.swagger.ApiModelPropertyEnum;
|
import net.lab1024.sa.base.common.swagger.SchemaEnum;
|
||||||
|
|
||||||
import java.math.BigDecimal;
|
import java.math.BigDecimal;
|
||||||
import java.time.LocalDateTime;
|
import java.time.LocalDateTime;
|
||||||
@ -17,37 +17,37 @@ import java.time.LocalDateTime;
|
|||||||
* @Date 2021-10-25 20:26:54
|
* @Date 2021-10-25 20:26:54
|
||||||
* @Wechat zhuoda1024
|
* @Wechat zhuoda1024
|
||||||
* @Email lab1024@163.com
|
* @Email lab1024@163.com
|
||||||
* @Copyright 1024创新实验室 ( https://1024lab.net ),2012-2022
|
* @Copyright <a href="https://1024lab.net">1024创新实验室</a>
|
||||||
*/
|
*/
|
||||||
@Data
|
@Data
|
||||||
public class GoodsVO {
|
public class GoodsVO {
|
||||||
|
|
||||||
@ApiModelProperty("商品分类")
|
@Schema(description = "商品分类")
|
||||||
private Long categoryId;
|
private Long categoryId;
|
||||||
|
|
||||||
@ApiModelProperty("商品名称")
|
@Schema(description = "商品名称")
|
||||||
private String goodsName;
|
private String goodsName;
|
||||||
|
|
||||||
@ApiModelPropertyEnum(GoodsStatusEnum.class)
|
@SchemaEnum(GoodsStatusEnum.class)
|
||||||
private Integer goodsStatus;
|
private Integer goodsStatus;
|
||||||
|
|
||||||
@ApiModelProperty("产地")
|
@Schema(description = "产地")
|
||||||
@JsonSerialize(using = DictValueVoSerializer.class)
|
@JsonSerialize(using = DictValueVoSerializer.class)
|
||||||
private String place;
|
private String place;
|
||||||
|
|
||||||
@ApiModelProperty("商品价格")
|
@Schema(description = "商品价格")
|
||||||
private BigDecimal price;
|
private BigDecimal price;
|
||||||
|
|
||||||
@ApiModelProperty("上架状态")
|
@Schema(description = "上架状态")
|
||||||
private Boolean shelvesFlag;
|
private Boolean shelvesFlag;
|
||||||
|
|
||||||
@ApiModelProperty("备注|可选")
|
@Schema(description = "备注|可选")
|
||||||
private String remark;
|
private String remark;
|
||||||
|
|
||||||
@ApiModelProperty("商品id")
|
@Schema(description = "商品id")
|
||||||
private Long goodsId;
|
private Long goodsId;
|
||||||
|
|
||||||
@ApiModelProperty("商品分类")
|
@Schema(description = "商品分类")
|
||||||
private String categoryName;
|
private String categoryName;
|
||||||
|
|
||||||
private LocalDateTime updateTime;
|
private LocalDateTime updateTime;
|
||||||
|
@ -1,20 +0,0 @@
|
|||||||
package net.lab1024.sa.admin.module.business.goods.manager;
|
|
||||||
|
|
||||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
|
||||||
import net.lab1024.sa.admin.module.business.goods.dao.GoodsDao;
|
|
||||||
import net.lab1024.sa.admin.module.business.goods.domain.entity.GoodsEntity;
|
|
||||||
import org.springframework.stereotype.Service;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 商品 manager
|
|
||||||
*
|
|
||||||
* @Author 1024创新实验室: 胡克
|
|
||||||
* @Date 2021-10-25 20:26:54
|
|
||||||
* @Wechat zhuoda1024
|
|
||||||
* @Email lab1024@163.com
|
|
||||||
* @Copyright 1024创新实验室 ( https://1024lab.net ),2012-2022
|
|
||||||
*/
|
|
||||||
@Service
|
|
||||||
public class GoodsManager extends ServiceImpl<GoodsDao, GoodsEntity> {
|
|
||||||
|
|
||||||
}
|
|
@ -1,6 +1,9 @@
|
|||||||
package net.lab1024.sa.admin.module.business.goods.service;
|
package net.lab1024.sa.admin.module.business.goods.service;
|
||||||
|
|
||||||
|
import com.alibaba.excel.EasyExcel;
|
||||||
|
import com.alibaba.fastjson.JSON;
|
||||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||||
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import net.lab1024.sa.admin.module.business.category.constant.CategoryTypeEnum;
|
import net.lab1024.sa.admin.module.business.category.constant.CategoryTypeEnum;
|
||||||
import net.lab1024.sa.admin.module.business.category.domain.entity.CategoryEntity;
|
import net.lab1024.sa.admin.module.business.category.domain.entity.CategoryEntity;
|
||||||
import net.lab1024.sa.admin.module.business.category.service.CategoryQueryService;
|
import net.lab1024.sa.admin.module.business.category.service.CategoryQueryService;
|
||||||
@ -8,26 +11,30 @@ import net.lab1024.sa.admin.module.business.goods.constant.GoodsStatusEnum;
|
|||||||
import net.lab1024.sa.admin.module.business.goods.dao.GoodsDao;
|
import net.lab1024.sa.admin.module.business.goods.dao.GoodsDao;
|
||||||
import net.lab1024.sa.admin.module.business.goods.domain.entity.GoodsEntity;
|
import net.lab1024.sa.admin.module.business.goods.domain.entity.GoodsEntity;
|
||||||
import net.lab1024.sa.admin.module.business.goods.domain.form.GoodsAddForm;
|
import net.lab1024.sa.admin.module.business.goods.domain.form.GoodsAddForm;
|
||||||
|
import net.lab1024.sa.admin.module.business.goods.domain.form.GoodsImportForm;
|
||||||
import net.lab1024.sa.admin.module.business.goods.domain.form.GoodsQueryForm;
|
import net.lab1024.sa.admin.module.business.goods.domain.form.GoodsQueryForm;
|
||||||
import net.lab1024.sa.admin.module.business.goods.domain.form.GoodsUpdateForm;
|
import net.lab1024.sa.admin.module.business.goods.domain.form.GoodsUpdateForm;
|
||||||
|
import net.lab1024.sa.admin.module.business.goods.domain.vo.GoodsExcelVO;
|
||||||
import net.lab1024.sa.admin.module.business.goods.domain.vo.GoodsVO;
|
import net.lab1024.sa.admin.module.business.goods.domain.vo.GoodsVO;
|
||||||
import net.lab1024.sa.admin.module.business.goods.manager.GoodsManager;
|
import net.lab1024.sa.base.common.code.UserErrorCode;
|
||||||
import net.lab1024.sa.common.common.code.UserErrorCode;
|
import net.lab1024.sa.base.common.domain.PageResult;
|
||||||
import net.lab1024.sa.common.common.domain.PageResult;
|
import net.lab1024.sa.base.common.domain.ResponseDTO;
|
||||||
import net.lab1024.sa.common.common.domain.ResponseDTO;
|
import net.lab1024.sa.base.common.exception.BusinessException;
|
||||||
import net.lab1024.sa.common.common.util.SmartBeanUtil;
|
import net.lab1024.sa.base.common.util.SmartBeanUtil;
|
||||||
import net.lab1024.sa.common.common.util.SmartPageUtil;
|
import net.lab1024.sa.base.common.util.SmartEnumUtil;
|
||||||
import net.lab1024.sa.common.module.support.datatracer.constant.DataTracerTypeEnum;
|
import net.lab1024.sa.base.common.util.SmartPageUtil;
|
||||||
import net.lab1024.sa.common.module.support.datatracer.service.DataTracerService;
|
import net.lab1024.sa.base.module.support.datatracer.constant.DataTracerTypeEnum;
|
||||||
|
import net.lab1024.sa.base.module.support.datatracer.service.DataTracerService;
|
||||||
|
import net.lab1024.sa.base.module.support.dict.service.DictCacheService;
|
||||||
|
import net.lab1024.sa.base.module.support.dict.service.DictService;
|
||||||
import org.apache.commons.collections4.CollectionUtils;
|
import org.apache.commons.collections4.CollectionUtils;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
import org.springframework.transaction.annotation.Transactional;
|
import org.springframework.transaction.annotation.Transactional;
|
||||||
|
import org.springframework.web.multipart.MultipartFile;
|
||||||
|
|
||||||
import java.util.Arrays;
|
import javax.annotation.Resource;
|
||||||
import java.util.List;
|
import java.io.IOException;
|
||||||
import java.util.Map;
|
import java.util.*;
|
||||||
import java.util.Optional;
|
|
||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -37,29 +44,31 @@ import java.util.stream.Collectors;
|
|||||||
* @Date 2021-10-25 20:26:54
|
* @Date 2021-10-25 20:26:54
|
||||||
* @Wechat zhuoda1024
|
* @Wechat zhuoda1024
|
||||||
* @Email lab1024@163.com
|
* @Email lab1024@163.com
|
||||||
* @Copyright 1024创新实验室 ( https://1024lab.net ),2012-2022
|
* @Copyright <a href="https://1024lab.net">1024创新实验室</a>
|
||||||
*/
|
*/
|
||||||
@Service
|
@Service
|
||||||
|
@Slf4j
|
||||||
public class GoodsService {
|
public class GoodsService {
|
||||||
@Autowired
|
|
||||||
|
@Resource
|
||||||
private GoodsDao goodsDao;
|
private GoodsDao goodsDao;
|
||||||
|
|
||||||
@Autowired
|
@Resource
|
||||||
private CategoryQueryService categoryQueryService;
|
private CategoryQueryService categoryQueryService;
|
||||||
|
|
||||||
@Autowired
|
@Resource
|
||||||
private DataTracerService dataTracerService;
|
private DataTracerService dataTracerService;
|
||||||
|
|
||||||
|
@Resource
|
||||||
|
private DictCacheService dictCacheService;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 添加商品
|
* 添加商品
|
||||||
*
|
|
||||||
* @param addForm
|
|
||||||
* @return
|
|
||||||
*/
|
*/
|
||||||
@Transactional(rollbackFor = Exception.class)
|
@Transactional(rollbackFor = Exception.class)
|
||||||
public ResponseDTO<String> add(GoodsAddForm addForm) {
|
public ResponseDTO<String> add(GoodsAddForm addForm) {
|
||||||
// 商品校验
|
// 商品校验
|
||||||
ResponseDTO<String> res = this.checkGoods(addForm, null);
|
ResponseDTO<String> res = this.checkGoods(addForm);
|
||||||
if (!res.getOk()) {
|
if (!res.getOk()) {
|
||||||
return res;
|
return res;
|
||||||
}
|
}
|
||||||
@ -72,14 +81,11 @@ public class GoodsService {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* 更新商品
|
* 更新商品
|
||||||
*
|
|
||||||
* @param updateForm
|
|
||||||
* @return
|
|
||||||
*/
|
*/
|
||||||
@Transactional(rollbackFor = Exception.class)
|
@Transactional(rollbackFor = Exception.class)
|
||||||
public ResponseDTO<String> update(GoodsUpdateForm updateForm) {
|
public ResponseDTO<String> update(GoodsUpdateForm updateForm) {
|
||||||
// 商品校验
|
// 商品校验
|
||||||
ResponseDTO<String> res = this.checkGoods(updateForm, updateForm.getGoodsId());
|
ResponseDTO<String> res = this.checkGoods(updateForm);
|
||||||
if (!res.getOk()) {
|
if (!res.getOk()) {
|
||||||
return res;
|
return res;
|
||||||
}
|
}
|
||||||
@ -92,12 +98,8 @@ public class GoodsService {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* 添加/更新 商品校验
|
* 添加/更新 商品校验
|
||||||
*
|
|
||||||
* @param addForm
|
|
||||||
* @param goodsId 不为空 代表更新商品
|
|
||||||
* @return
|
|
||||||
*/
|
*/
|
||||||
private ResponseDTO<String> checkGoods(GoodsAddForm addForm, Long goodsId) {
|
private ResponseDTO<String> checkGoods(GoodsAddForm addForm) {
|
||||||
// 校验类目id
|
// 校验类目id
|
||||||
Long categoryId = addForm.getCategoryId();
|
Long categoryId = addForm.getCategoryId();
|
||||||
Optional<CategoryEntity> optional = categoryQueryService.queryCategory(categoryId);
|
Optional<CategoryEntity> optional = categoryQueryService.queryCategory(categoryId);
|
||||||
@ -122,8 +124,8 @@ public class GoodsService {
|
|||||||
return ResponseDTO.userErrorParam("只有售罄的商品才可以删除");
|
return ResponseDTO.userErrorParam("只有售罄的商品才可以删除");
|
||||||
}
|
}
|
||||||
|
|
||||||
batchDelete(Arrays.asList(goodsId));
|
batchDelete(Collections.singletonList(goodsId));
|
||||||
dataTracerService.batchDelete(Arrays.asList(goodsId), DataTracerTypeEnum.GOODS);
|
dataTracerService.batchDelete(Collections.singletonList(goodsId), DataTracerTypeEnum.GOODS);
|
||||||
return ResponseDTO.ok();
|
return ResponseDTO.ok();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -142,9 +144,6 @@ public class GoodsService {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* 分页查询
|
* 分页查询
|
||||||
*
|
|
||||||
* @param queryForm
|
|
||||||
* @return
|
|
||||||
*/
|
*/
|
||||||
public ResponseDTO<PageResult<GoodsVO>> query(GoodsQueryForm queryForm) {
|
public ResponseDTO<PageResult<GoodsVO>> query(GoodsQueryForm queryForm) {
|
||||||
queryForm.setDeletedFlag(false);
|
queryForm.setDeletedFlag(false);
|
||||||
@ -165,4 +164,48 @@ public class GoodsService {
|
|||||||
});
|
});
|
||||||
return ResponseDTO.ok(pageResult);
|
return ResponseDTO.ok(pageResult);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 商品导入
|
||||||
|
*
|
||||||
|
* @param file 上传文件
|
||||||
|
* @return 结果
|
||||||
|
*/
|
||||||
|
public ResponseDTO<String> importGoods(MultipartFile file) {
|
||||||
|
List<GoodsImportForm> dataList;
|
||||||
|
try {
|
||||||
|
dataList = EasyExcel.read(file.getInputStream()).head(GoodsImportForm.class)
|
||||||
|
.sheet()
|
||||||
|
.doReadSync();
|
||||||
|
} catch (IOException e) {
|
||||||
|
log.error(e.getMessage(), e);
|
||||||
|
throw new BusinessException("数据格式存在问题,无法读取");
|
||||||
|
}
|
||||||
|
|
||||||
|
if (CollectionUtils.isEmpty(dataList)) {
|
||||||
|
return ResponseDTO.userErrorParam("数据为空");
|
||||||
|
}
|
||||||
|
|
||||||
|
return ResponseDTO.okMsg("成功导入" + dataList.size() + "条,具体数据为:" + JSON.toJSONString(dataList));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 商品导出
|
||||||
|
*/
|
||||||
|
public List<GoodsExcelVO> getAllGoods() {
|
||||||
|
List<GoodsEntity> goodsEntityList = goodsDao.selectList(null);
|
||||||
|
return goodsEntityList.stream()
|
||||||
|
.map(e ->
|
||||||
|
GoodsExcelVO.builder()
|
||||||
|
.goodsStatus(SmartEnumUtil.getEnumDescByValue(e.getGoodsStatus(), GoodsStatusEnum.class))
|
||||||
|
.categoryName(categoryQueryService.queryCategoryName(e.getCategoryId()))
|
||||||
|
.place(dictCacheService.selectValueNameByValueCode(e.getPlace()))
|
||||||
|
.price(e.getPrice())
|
||||||
|
.goodsName(e.getGoodsName())
|
||||||
|
.remark(e.getRemark())
|
||||||
|
.build()
|
||||||
|
)
|
||||||
|
.collect(Collectors.toList());
|
||||||
|
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,19 +1,19 @@
|
|||||||
package net.lab1024.sa.admin.module.business.oa.bank;
|
package net.lab1024.sa.admin.module.business.oa.bank;
|
||||||
|
|
||||||
import io.swagger.annotations.Api;
|
import io.swagger.v3.oas.annotations.tags.Tag;
|
||||||
import io.swagger.annotations.ApiOperation;
|
import io.swagger.v3.oas.annotations.Operation;
|
||||||
import net.lab1024.sa.admin.constant.AdminSwaggerTagConst;
|
import net.lab1024.sa.admin.constant.AdminSwaggerTagConst;
|
||||||
import net.lab1024.sa.admin.module.business.oa.bank.domain.BankCreateForm;
|
import net.lab1024.sa.admin.module.business.oa.bank.domain.BankCreateForm;
|
||||||
import net.lab1024.sa.admin.module.business.oa.bank.domain.BankQueryForm;
|
import net.lab1024.sa.admin.module.business.oa.bank.domain.BankQueryForm;
|
||||||
import net.lab1024.sa.admin.module.business.oa.bank.domain.BankUpdateForm;
|
import net.lab1024.sa.admin.module.business.oa.bank.domain.BankUpdateForm;
|
||||||
import net.lab1024.sa.admin.module.business.oa.bank.domain.BankVO;
|
import net.lab1024.sa.admin.module.business.oa.bank.domain.BankVO;
|
||||||
import net.lab1024.sa.common.common.domain.PageResult;
|
import net.lab1024.sa.base.common.domain.PageResult;
|
||||||
import net.lab1024.sa.common.common.domain.RequestUser;
|
import net.lab1024.sa.base.common.domain.RequestUser;
|
||||||
import net.lab1024.sa.common.common.domain.ResponseDTO;
|
import net.lab1024.sa.base.common.domain.ResponseDTO;
|
||||||
import net.lab1024.sa.common.common.util.SmartRequestUtil;
|
import net.lab1024.sa.base.common.util.SmartRequestUtil;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
|
||||||
import org.springframework.web.bind.annotation.*;
|
import org.springframework.web.bind.annotation.*;
|
||||||
|
|
||||||
|
import javax.annotation.Resource;
|
||||||
import javax.validation.Valid;
|
import javax.validation.Valid;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
@ -24,34 +24,34 @@ import java.util.List;
|
|||||||
* @Date 2022/6/23 21:59:22
|
* @Date 2022/6/23 21:59:22
|
||||||
* @Wechat zhuoda1024
|
* @Wechat zhuoda1024
|
||||||
* @Email lab1024@163.com
|
* @Email lab1024@163.com
|
||||||
* @Copyright 1024创新实验室 ( https://1024lab.net ),2012-2022
|
* @Copyright <a href="https://1024lab.net">1024创新实验室</a>
|
||||||
*/
|
*/
|
||||||
@RestController
|
@RestController
|
||||||
@Api(tags = {AdminSwaggerTagConst.Business.OA_BANK})
|
@Tag(name = AdminSwaggerTagConst.Business.OA_BANK)
|
||||||
public class BankController {
|
public class BankController {
|
||||||
|
|
||||||
@Autowired
|
@Resource
|
||||||
private BankService bankService;
|
private BankService bankService;
|
||||||
|
|
||||||
@ApiOperation(value = "分页查询银行信息 @author 善逸")
|
@Operation(summary = "分页查询银行信息 @author 善逸")
|
||||||
@PostMapping("/oa/bank/page/query")
|
@PostMapping("/oa/bank/page/query")
|
||||||
public ResponseDTO<PageResult<BankVO>> queryByPage(@RequestBody @Valid BankQueryForm queryDTO) {
|
public ResponseDTO<PageResult<BankVO>> queryByPage(@RequestBody @Valid BankQueryForm queryForm) {
|
||||||
return bankService.queryByPage(queryDTO);
|
return bankService.queryByPage(queryForm);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ApiOperation(value = "根据企业ID查询银行信息列表 @author 善逸")
|
@Operation(summary = "根据企业ID查询银行信息列表 @author 善逸")
|
||||||
@GetMapping("/oa/bank/query/list/{enterpriseId}")
|
@GetMapping("/oa/bank/query/list/{enterpriseId}")
|
||||||
public ResponseDTO<List<BankVO>> queryList(@PathVariable Long enterpriseId) {
|
public ResponseDTO<List<BankVO>> queryList(@PathVariable Long enterpriseId) {
|
||||||
return bankService.queryList(enterpriseId);
|
return bankService.queryList(enterpriseId);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ApiOperation(value = "查询银行信息详情 @author 善逸")
|
@Operation(summary = "查询银行信息详情 @author 善逸")
|
||||||
@GetMapping("/oa/bank/get/{bankId}")
|
@GetMapping("/oa/bank/get/{bankId}")
|
||||||
public ResponseDTO<BankVO> getDetail(@PathVariable Long bankId) {
|
public ResponseDTO<BankVO> getDetail(@PathVariable Long bankId) {
|
||||||
return bankService.getDetail(bankId);
|
return bankService.getDetail(bankId);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ApiOperation(value = "新建银行信息 @author 善逸")
|
@Operation(summary = "新建银行信息 @author 善逸")
|
||||||
@PostMapping("/oa/bank/create")
|
@PostMapping("/oa/bank/create")
|
||||||
public ResponseDTO<String> createBank(@RequestBody @Valid BankCreateForm createVO) {
|
public ResponseDTO<String> createBank(@RequestBody @Valid BankCreateForm createVO) {
|
||||||
RequestUser requestUser = SmartRequestUtil.getRequestUser();
|
RequestUser requestUser = SmartRequestUtil.getRequestUser();
|
||||||
@ -60,13 +60,13 @@ public class BankController {
|
|||||||
return bankService.createBank(createVO);
|
return bankService.createBank(createVO);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ApiOperation(value = "编辑银行信息 @author 善逸")
|
@Operation(summary = "编辑银行信息 @author 善逸")
|
||||||
@PostMapping("/oa/bank/update")
|
@PostMapping("/oa/bank/update")
|
||||||
public ResponseDTO<String> updateBank(@RequestBody @Valid BankUpdateForm updateVO) {
|
public ResponseDTO<String> updateBank(@RequestBody @Valid BankUpdateForm updateVO) {
|
||||||
return bankService.updateBank(updateVO);
|
return bankService.updateBank(updateVO);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ApiOperation(value = "删除银行信息 @author 善逸")
|
@Operation(summary = "删除银行信息 @author 善逸")
|
||||||
@GetMapping("/oa/bank/delete/{bankId}")
|
@GetMapping("/oa/bank/delete/{bankId}")
|
||||||
public ResponseDTO<String> deleteBank(@PathVariable Long bankId) {
|
public ResponseDTO<String> deleteBank(@PathVariable Long bankId) {
|
||||||
return bankService.deleteBank(bankId);
|
return bankService.deleteBank(bankId);
|
||||||
|
@ -18,7 +18,7 @@ import java.util.List;
|
|||||||
* @Date 2022/6/23 21:59:22
|
* @Date 2022/6/23 21:59:22
|
||||||
* @Wechat zhuoda1024
|
* @Wechat zhuoda1024
|
||||||
* @Email lab1024@163.com
|
* @Email lab1024@163.com
|
||||||
* @Copyright 1024创新实验室 ( https://1024lab.net ),2012-2022
|
* @Copyright <a href="https://1024lab.net">1024创新实验室</a>
|
||||||
*/
|
*/
|
||||||
@Mapper
|
@Mapper
|
||||||
@Component
|
@Component
|
||||||
@ -26,36 +26,23 @@ public interface BankDao extends BaseMapper<BankEntity> {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* 根据账号查询
|
* 根据账号查询
|
||||||
* @param enterpriseId
|
|
||||||
* @param accountNumber
|
|
||||||
* @param excludeBankId
|
|
||||||
* @param deletedFlag
|
|
||||||
* @return
|
|
||||||
*/
|
*/
|
||||||
BankEntity queryByAccountNumber(@Param("enterpriseId") Long enterpriseId, @Param("accountNumber") String accountNumber, @Param("excludeBankId") Long excludeBankId, @Param("deletedFlag") Boolean deletedFlag);
|
BankEntity queryByAccountNumber(@Param("enterpriseId") Long enterpriseId, @Param("accountNumber") String accountNumber, @Param("excludeBankId") Long excludeBankId, @Param("deletedFlag") Boolean deletedFlag);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 删除银行信息
|
* 删除银行信息
|
||||||
*
|
*
|
||||||
* @param bankId
|
|
||||||
* @param deletedFlag
|
|
||||||
*/
|
*/
|
||||||
void deleteBank(@Param("bankId") Long bankId, @Param("deletedFlag") Boolean deletedFlag);
|
void deleteBank(@Param("bankId") Long bankId, @Param("deletedFlag") Boolean deletedFlag);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 银行信息分页查询
|
* 银行信息分页查询
|
||||||
*
|
*
|
||||||
* @param page
|
|
||||||
* @param queryForm
|
|
||||||
* @return
|
|
||||||
*/
|
*/
|
||||||
List<BankVO> queryPage(Page page, @Param("queryForm") BankQueryForm queryForm);
|
List<BankVO> queryPage(Page page, @Param("queryForm") BankQueryForm queryForm);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 查询银行信息详情
|
* 查询银行信息详情
|
||||||
* @param bankId
|
|
||||||
* @param deletedFlag
|
|
||||||
* @return
|
|
||||||
*/
|
*/
|
||||||
BankVO getDetail(@Param("bankId") Long bankId, @Param("deletedFlag") Boolean deletedFlag);
|
BankVO getDetail(@Param("bankId") Long bankId, @Param("deletedFlag") Boolean deletedFlag);
|
||||||
}
|
}
|
||||||
|
@ -5,17 +5,17 @@ import lombok.extern.slf4j.Slf4j;
|
|||||||
import net.lab1024.sa.admin.module.business.oa.bank.domain.*;
|
import net.lab1024.sa.admin.module.business.oa.bank.domain.*;
|
||||||
import net.lab1024.sa.admin.module.business.oa.enterprise.dao.EnterpriseDao;
|
import net.lab1024.sa.admin.module.business.oa.enterprise.dao.EnterpriseDao;
|
||||||
import net.lab1024.sa.admin.module.business.oa.enterprise.domain.entity.EnterpriseEntity;
|
import net.lab1024.sa.admin.module.business.oa.enterprise.domain.entity.EnterpriseEntity;
|
||||||
import net.lab1024.sa.common.common.domain.PageResult;
|
import net.lab1024.sa.base.common.domain.PageResult;
|
||||||
import net.lab1024.sa.common.common.domain.ResponseDTO;
|
import net.lab1024.sa.base.common.domain.ResponseDTO;
|
||||||
import net.lab1024.sa.common.common.util.SmartBeanUtil;
|
import net.lab1024.sa.base.common.util.SmartBeanUtil;
|
||||||
import net.lab1024.sa.common.common.util.SmartPageUtil;
|
import net.lab1024.sa.base.common.util.SmartPageUtil;
|
||||||
import net.lab1024.sa.common.module.support.datatracer.constant.DataTracerConst;
|
import net.lab1024.sa.base.module.support.datatracer.constant.DataTracerConst;
|
||||||
import net.lab1024.sa.common.module.support.datatracer.constant.DataTracerTypeEnum;
|
import net.lab1024.sa.base.module.support.datatracer.constant.DataTracerTypeEnum;
|
||||||
import net.lab1024.sa.common.module.support.datatracer.service.DataTracerService;
|
import net.lab1024.sa.base.module.support.datatracer.service.DataTracerService;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
import org.springframework.transaction.annotation.Transactional;
|
import org.springframework.transaction.annotation.Transactional;
|
||||||
|
|
||||||
|
import javax.annotation.Resource;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Objects;
|
import java.util.Objects;
|
||||||
|
|
||||||
@ -26,53 +26,45 @@ import java.util.Objects;
|
|||||||
* @Date 2022/6/23 21:59:22
|
* @Date 2022/6/23 21:59:22
|
||||||
* @Wechat zhuoda1024
|
* @Wechat zhuoda1024
|
||||||
* @Email lab1024@163.com
|
* @Email lab1024@163.com
|
||||||
* @Copyright 1024创新实验室 ( https://1024lab.net ),2012-2022
|
* @Copyright <a href="https://1024lab.net">1024创新实验室</a>
|
||||||
*/
|
*/
|
||||||
@Service
|
@Service
|
||||||
@Slf4j
|
@Slf4j
|
||||||
public class BankService {
|
public class BankService {
|
||||||
|
|
||||||
@Autowired
|
@Resource
|
||||||
private BankDao bankDao;
|
private BankDao bankDao;
|
||||||
@Autowired
|
|
||||||
|
@Resource
|
||||||
private EnterpriseDao enterpriseDao;
|
private EnterpriseDao enterpriseDao;
|
||||||
|
|
||||||
@Autowired
|
@Resource
|
||||||
private DataTracerService dataTracerService;
|
private DataTracerService dataTracerService;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 分页查询银行信息
|
* 分页查询银行信息
|
||||||
*
|
|
||||||
* @param queryDTO
|
|
||||||
* @return
|
|
||||||
*/
|
*/
|
||||||
public ResponseDTO<PageResult<BankVO>> queryByPage(BankQueryForm queryDTO) {
|
public ResponseDTO<PageResult<BankVO>> queryByPage(BankQueryForm queryForm) {
|
||||||
queryDTO.setDeletedFlag(Boolean.FALSE);
|
queryForm.setDeletedFlag(Boolean.FALSE);
|
||||||
Page<?> page = SmartPageUtil.convert2PageQuery(queryDTO);
|
Page<?> page = SmartPageUtil.convert2PageQuery(queryForm);
|
||||||
List<BankVO> bankVOS = bankDao.queryPage(page, queryDTO);
|
List<BankVO> bankList = bankDao.queryPage(page, queryForm);
|
||||||
PageResult<BankVO> pageResult = SmartPageUtil.convert2PageResult(page, bankVOS);
|
PageResult<BankVO> pageResult = SmartPageUtil.convert2PageResult(page, bankList);
|
||||||
return ResponseDTO.ok(pageResult);
|
return ResponseDTO.ok(pageResult);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 根据企业ID查询不分页的银行列表
|
* 根据企业ID查询不分页的银行列表
|
||||||
*
|
|
||||||
* @param enterpriseId
|
|
||||||
* @return
|
|
||||||
*/
|
*/
|
||||||
public ResponseDTO<List<BankVO>> queryList(Long enterpriseId) {
|
public ResponseDTO<List<BankVO>> queryList(Long enterpriseId) {
|
||||||
BankQueryForm queryDTO = new BankQueryForm();
|
BankQueryForm queryForm = new BankQueryForm();
|
||||||
queryDTO.setEnterpriseId(enterpriseId);
|
queryForm.setEnterpriseId(enterpriseId);
|
||||||
queryDTO.setDeletedFlag(Boolean.FALSE);
|
queryForm.setDeletedFlag(Boolean.FALSE);
|
||||||
List<BankVO> bankVOS = bankDao.queryPage(null, queryDTO);
|
List<BankVO> bankList = bankDao.queryPage(null, queryForm);
|
||||||
return ResponseDTO.ok(bankVOS);
|
return ResponseDTO.ok(bankList);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 查询银行信息详情
|
* 查询银行信息详情
|
||||||
*
|
|
||||||
* @param bankId
|
|
||||||
* @return
|
|
||||||
*/
|
*/
|
||||||
public ResponseDTO<BankVO> getDetail(Long bankId) {
|
public ResponseDTO<BankVO> getDetail(Long bankId) {
|
||||||
// 校验银行信息是否存在
|
// 校验银行信息是否存在
|
||||||
@ -85,9 +77,6 @@ public class BankService {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* 新建银行信息
|
* 新建银行信息
|
||||||
*
|
|
||||||
* @param createVO
|
|
||||||
* @return
|
|
||||||
*/
|
*/
|
||||||
@Transactional(rollbackFor = Exception.class)
|
@Transactional(rollbackFor = Exception.class)
|
||||||
public ResponseDTO<String> createBank(BankCreateForm createVO) {
|
public ResponseDTO<String> createBank(BankCreateForm createVO) {
|
||||||
@ -111,9 +100,6 @@ public class BankService {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* 编辑银行信息
|
* 编辑银行信息
|
||||||
*
|
|
||||||
* @param updateVO
|
|
||||||
* @return
|
|
||||||
*/
|
*/
|
||||||
@Transactional(rollbackFor = Exception.class)
|
@Transactional(rollbackFor = Exception.class)
|
||||||
public ResponseDTO<String> updateBank(BankUpdateForm updateVO) {
|
public ResponseDTO<String> updateBank(BankUpdateForm updateVO) {
|
||||||
@ -144,9 +130,6 @@ public class BankService {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* 删除银行信息
|
* 删除银行信息
|
||||||
*
|
|
||||||
* @param bankId
|
|
||||||
* @return
|
|
||||||
*/
|
*/
|
||||||
@Transactional(rollbackFor = Exception.class)
|
@Transactional(rollbackFor = Exception.class)
|
||||||
public ResponseDTO<String> deleteBank(Long bankId) {
|
public ResponseDTO<String> deleteBank(Long bankId) {
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
package net.lab1024.sa.admin.module.business.oa.bank.domain;
|
package net.lab1024.sa.admin.module.business.oa.bank.domain;
|
||||||
|
|
||||||
import io.swagger.annotations.ApiModelProperty;
|
import io.swagger.v3.oas.annotations.media.Schema;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
import org.hibernate.validator.constraints.Length;
|
import org.hibernate.validator.constraints.Length;
|
||||||
|
|
||||||
@ -14,45 +14,45 @@ import javax.validation.constraints.NotNull;
|
|||||||
* @Date 2022/6/23 21:59:22
|
* @Date 2022/6/23 21:59:22
|
||||||
* @Wechat zhuoda1024
|
* @Wechat zhuoda1024
|
||||||
* @Email lab1024@163.com
|
* @Email lab1024@163.com
|
||||||
* @Copyright 1024创新实验室 ( https://1024lab.net ),2012-2022
|
* @Copyright <a href="https://1024lab.net">1024创新实验室</a>
|
||||||
*/
|
*/
|
||||||
@Data
|
@Data
|
||||||
public class BankCreateForm {
|
public class BankCreateForm {
|
||||||
|
|
||||||
@ApiModelProperty("开户银行")
|
@Schema(description = "开户银行")
|
||||||
@NotBlank(message = "开户银行不能为空")
|
@NotBlank(message = "开户银行不能为空")
|
||||||
@Length(max = 200, message = "开户银行最多200字符")
|
@Length(max = 200, message = "开户银行最多200字符")
|
||||||
private String bankName;
|
private String bankName;
|
||||||
|
|
||||||
@ApiModelProperty("账户名称")
|
@Schema(description = "账户名称")
|
||||||
@NotBlank(message = "账户名称不能为空")
|
@NotBlank(message = "账户名称不能为空")
|
||||||
@Length(max = 200, message = "账户名称最多200字符")
|
@Length(max = 200, message = "账户名称最多200字符")
|
||||||
private String accountName;
|
private String accountName;
|
||||||
|
|
||||||
@ApiModelProperty("账号")
|
@Schema(description = "账号")
|
||||||
@NotBlank(message = "账号不能为空")
|
@NotBlank(message = "账号不能为空")
|
||||||
@Length(max = 200, message = "账号最多200字符")
|
@Length(max = 200, message = "账号最多200字符")
|
||||||
private String accountNumber;
|
private String accountNumber;
|
||||||
|
|
||||||
@ApiModelProperty("备注")
|
@Schema(description = "备注")
|
||||||
@Length(max = 500, message = "备注最多500字符")
|
@Length(max = 500, message = "备注最多500字符")
|
||||||
private String remark;
|
private String remark;
|
||||||
|
|
||||||
@ApiModelProperty("是否对公")
|
@Schema(description = "是否对公")
|
||||||
@NotNull(message = "是否对公不能为空")
|
@NotNull(message = "是否对公不能为空")
|
||||||
private Boolean businessFlag;
|
private Boolean businessFlag;
|
||||||
|
|
||||||
@ApiModelProperty("企业")
|
@Schema(description = "企业")
|
||||||
@NotNull(message = "企业不能为空")
|
@NotNull(message = "企业不能为空")
|
||||||
private Long enterpriseId;
|
private Long enterpriseId;
|
||||||
|
|
||||||
@ApiModelProperty("禁用状态")
|
@Schema(description = "禁用状态")
|
||||||
@NotNull(message = "禁用状态不能为空")
|
@NotNull(message = "禁用状态不能为空")
|
||||||
private Boolean disabledFlag;
|
private Boolean disabledFlag;
|
||||||
|
|
||||||
@ApiModelProperty(value = "创建人", hidden = true)
|
@Schema(hidden = true)
|
||||||
private Long createUserId;
|
private Long createUserId;
|
||||||
|
|
||||||
@ApiModelProperty(value = "创建人", hidden = true)
|
@Schema(hidden = true)
|
||||||
private String createUserName;
|
private String createUserName;
|
||||||
}
|
}
|
||||||
|
@ -4,7 +4,7 @@ import com.baomidou.mybatisplus.annotation.IdType;
|
|||||||
import com.baomidou.mybatisplus.annotation.TableId;
|
import com.baomidou.mybatisplus.annotation.TableId;
|
||||||
import com.baomidou.mybatisplus.annotation.TableName;
|
import com.baomidou.mybatisplus.annotation.TableName;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
import net.lab1024.sa.common.module.support.datatracer.annoation.DataTracerFieldLabel;
|
import net.lab1024.sa.base.module.support.datatracer.annoation.DataTracerFieldLabel;
|
||||||
|
|
||||||
import java.time.LocalDateTime;
|
import java.time.LocalDateTime;
|
||||||
|
|
||||||
@ -15,7 +15,7 @@ import java.time.LocalDateTime;
|
|||||||
* @Date 2022/6/23 21:59:22
|
* @Date 2022/6/23 21:59:22
|
||||||
* @Wechat zhuoda1024
|
* @Wechat zhuoda1024
|
||||||
* @Email lab1024@163.com
|
* @Email lab1024@163.com
|
||||||
* @Copyright 1024创新实验室 ( https://1024lab.net ),2012-2022
|
* @Copyright <a href="https://1024lab.net">1024创新实验室</a>
|
||||||
*/
|
*/
|
||||||
@Data
|
@Data
|
||||||
@TableName("t_oa_bank")
|
@TableName("t_oa_bank")
|
||||||
|
@ -1,8 +1,8 @@
|
|||||||
package net.lab1024.sa.admin.module.business.oa.bank.domain;
|
package net.lab1024.sa.admin.module.business.oa.bank.domain;
|
||||||
|
|
||||||
import io.swagger.annotations.ApiModelProperty;
|
import io.swagger.v3.oas.annotations.media.Schema;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
import net.lab1024.sa.common.common.domain.PageParam;
|
import net.lab1024.sa.base.common.domain.PageParam;
|
||||||
import org.hibernate.validator.constraints.Length;
|
import org.hibernate.validator.constraints.Length;
|
||||||
|
|
||||||
import java.time.LocalDate;
|
import java.time.LocalDate;
|
||||||
@ -14,27 +14,27 @@ import java.time.LocalDate;
|
|||||||
* @Date 2022/6/23 21:59:22
|
* @Date 2022/6/23 21:59:22
|
||||||
* @Wechat zhuoda1024
|
* @Wechat zhuoda1024
|
||||||
* @Email lab1024@163.com
|
* @Email lab1024@163.com
|
||||||
* @Copyright 1024创新实验室 ( https://1024lab.net ),2012-2022
|
* @Copyright <a href="https://1024lab.net">1024创新实验室</a>
|
||||||
*/
|
*/
|
||||||
@Data
|
@Data
|
||||||
public class BankQueryForm extends PageParam {
|
public class BankQueryForm extends PageParam {
|
||||||
|
|
||||||
@ApiModelProperty("企业ID")
|
@Schema(description = "企业ID")
|
||||||
private Long enterpriseId;
|
private Long enterpriseId;
|
||||||
|
|
||||||
@ApiModelProperty("关键字")
|
@Schema(description = "关键字")
|
||||||
@Length(max = 200, message = "关键字最多200字符")
|
@Length(max = 200, message = "关键字最多200字符")
|
||||||
private String keywords;
|
private String keywords;
|
||||||
|
|
||||||
@ApiModelProperty("开始时间")
|
@Schema(description = "开始时间")
|
||||||
private LocalDate startTime;
|
private LocalDate startTime;
|
||||||
|
|
||||||
@ApiModelProperty("结束时间")
|
@Schema(description = "结束时间")
|
||||||
private LocalDate endTime;
|
private LocalDate endTime;
|
||||||
|
|
||||||
@ApiModelProperty("禁用状态")
|
@Schema(description = "禁用状态")
|
||||||
private Boolean disabledFlag;
|
private Boolean disabledFlag;
|
||||||
|
|
||||||
@ApiModelProperty(value = "删除状态", hidden = true)
|
@Schema(description = "删除状态", hidden = true)
|
||||||
private Boolean deletedFlag;
|
private Boolean deletedFlag;
|
||||||
}
|
}
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
package net.lab1024.sa.admin.module.business.oa.bank.domain;
|
package net.lab1024.sa.admin.module.business.oa.bank.domain;
|
||||||
|
|
||||||
import io.swagger.annotations.ApiModelProperty;
|
import io.swagger.v3.oas.annotations.media.Schema;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
|
|
||||||
import javax.validation.constraints.NotNull;
|
import javax.validation.constraints.NotNull;
|
||||||
@ -12,12 +12,12 @@ import javax.validation.constraints.NotNull;
|
|||||||
* @Date 2022/6/23 21:59:22
|
* @Date 2022/6/23 21:59:22
|
||||||
* @Wechat zhuoda1024
|
* @Wechat zhuoda1024
|
||||||
* @Email lab1024@163.com
|
* @Email lab1024@163.com
|
||||||
* @Copyright 1024创新实验室 ( https://1024lab.net ),2012-2022
|
* @Copyright <a href="https://1024lab.net">1024创新实验室</a>
|
||||||
*/
|
*/
|
||||||
@Data
|
@Data
|
||||||
public class BankUpdateForm extends BankCreateForm {
|
public class BankUpdateForm extends BankCreateForm {
|
||||||
|
|
||||||
@ApiModelProperty("银行信息ID")
|
@Schema(description = "银行信息ID")
|
||||||
@NotNull(message = "银行信息ID不能为空")
|
@NotNull(message = "银行信息ID不能为空")
|
||||||
private Long bankId;
|
private Long bankId;
|
||||||
}
|
}
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
package net.lab1024.sa.admin.module.business.oa.bank.domain;
|
package net.lab1024.sa.admin.module.business.oa.bank.domain;
|
||||||
|
|
||||||
import io.swagger.annotations.ApiModelProperty;
|
import io.swagger.v3.oas.annotations.media.Schema;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
|
|
||||||
import java.time.LocalDateTime;
|
import java.time.LocalDateTime;
|
||||||
@ -12,47 +12,47 @@ import java.time.LocalDateTime;
|
|||||||
* @Date 2022/6/23 21:59:22
|
* @Date 2022/6/23 21:59:22
|
||||||
* @Wechat zhuoda1024
|
* @Wechat zhuoda1024
|
||||||
* @Email lab1024@163.com
|
* @Email lab1024@163.com
|
||||||
* @Copyright 1024创新实验室 ( https://1024lab.net ),2012-2022
|
* @Copyright <a href="https://1024lab.net">1024创新实验室</a>
|
||||||
*/
|
*/
|
||||||
@Data
|
@Data
|
||||||
public class BankVO {
|
public class BankVO {
|
||||||
|
|
||||||
@ApiModelProperty("银行信息ID")
|
@Schema(description = "银行信息ID")
|
||||||
private Long bankId;
|
private Long bankId;
|
||||||
|
|
||||||
@ApiModelProperty("开户银行")
|
@Schema(description = "开户银行")
|
||||||
private String bankName;
|
private String bankName;
|
||||||
|
|
||||||
@ApiModelProperty("账户名称")
|
@Schema(description = "账户名称")
|
||||||
private String accountName;
|
private String accountName;
|
||||||
|
|
||||||
@ApiModelProperty("账号")
|
@Schema(description = "账号")
|
||||||
private String accountNumber;
|
private String accountNumber;
|
||||||
|
|
||||||
@ApiModelProperty("备注")
|
@Schema(description = "备注")
|
||||||
private String remark;
|
private String remark;
|
||||||
|
|
||||||
@ApiModelProperty("是否对公")
|
@Schema(description = "是否对公")
|
||||||
private Boolean businessFlag;
|
private Boolean businessFlag;
|
||||||
|
|
||||||
@ApiModelProperty("企业ID")
|
@Schema(description = "企业ID")
|
||||||
private Long enterpriseId;
|
private Long enterpriseId;
|
||||||
|
|
||||||
@ApiModelProperty("企业名称")
|
@Schema(description = "企业名称")
|
||||||
private String enterpriseName;
|
private String enterpriseName;
|
||||||
|
|
||||||
@ApiModelProperty("禁用状态")
|
@Schema(description = "禁用状态")
|
||||||
private Boolean disabledFlag;
|
private Boolean disabledFlag;
|
||||||
|
|
||||||
@ApiModelProperty("创建人ID")
|
@Schema(description = "创建人ID")
|
||||||
private Long createUserId;
|
private Long createUserId;
|
||||||
|
|
||||||
@ApiModelProperty("创建人名称")
|
@Schema(description = "创建人名称")
|
||||||
private String createUserName;
|
private String createUserName;
|
||||||
|
|
||||||
@ApiModelProperty("创建时间")
|
@Schema(description = "创建时间")
|
||||||
private LocalDateTime createTime;
|
private LocalDateTime createTime;
|
||||||
|
|
||||||
@ApiModelProperty("更新时间")
|
@Schema(description = "更新时间")
|
||||||
private LocalDateTime updateTime;
|
private LocalDateTime updateTime;
|
||||||
}
|
}
|
||||||
|
@ -1,23 +1,29 @@
|
|||||||
package net.lab1024.sa.admin.module.business.oa.enterprise;
|
package net.lab1024.sa.admin.module.business.oa.enterprise;
|
||||||
|
|
||||||
import io.swagger.annotations.Api;
|
import cn.dev33.satoken.annotation.SaCheckPermission;
|
||||||
import io.swagger.annotations.ApiOperation;
|
import com.alibaba.excel.EasyExcel;
|
||||||
|
import io.swagger.v3.oas.annotations.Operation;
|
||||||
|
import io.swagger.v3.oas.annotations.tags.Tag;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import net.lab1024.sa.admin.constant.AdminSwaggerTagConst;
|
import net.lab1024.sa.admin.constant.AdminSwaggerTagConst;
|
||||||
import net.lab1024.sa.admin.module.business.oa.enterprise.domain.form.*;
|
import net.lab1024.sa.admin.module.business.oa.enterprise.domain.form.*;
|
||||||
import net.lab1024.sa.admin.module.business.oa.enterprise.domain.vo.EnterpriseEmployeeVO;
|
import net.lab1024.sa.admin.module.business.oa.enterprise.domain.vo.EnterpriseEmployeeVO;
|
||||||
|
import net.lab1024.sa.admin.module.business.oa.enterprise.domain.vo.EnterpriseExcelVO;
|
||||||
import net.lab1024.sa.admin.module.business.oa.enterprise.domain.vo.EnterpriseListVO;
|
import net.lab1024.sa.admin.module.business.oa.enterprise.domain.vo.EnterpriseListVO;
|
||||||
import net.lab1024.sa.admin.module.business.oa.enterprise.domain.vo.EnterpriseVO;
|
import net.lab1024.sa.admin.module.business.oa.enterprise.domain.vo.EnterpriseVO;
|
||||||
import net.lab1024.sa.common.common.annoation.SaAuth;
|
import net.lab1024.sa.base.common.domain.PageResult;
|
||||||
import net.lab1024.sa.common.common.domain.PageResult;
|
import net.lab1024.sa.base.common.domain.RequestUser;
|
||||||
import net.lab1024.sa.common.common.domain.RequestUser;
|
import net.lab1024.sa.base.common.domain.ResponseDTO;
|
||||||
import net.lab1024.sa.common.common.domain.ResponseDTO;
|
import net.lab1024.sa.base.common.util.SmartRequestUtil;
|
||||||
import net.lab1024.sa.common.common.util.SmartRequestUtil;
|
import net.lab1024.sa.base.common.util.SmartResponseUtil;
|
||||||
import net.lab1024.sa.common.module.support.operatelog.annoation.OperateLog;
|
import net.lab1024.sa.base.module.support.operatelog.annotation.OperateLog;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.apache.commons.collections.CollectionUtils;
|
||||||
import org.springframework.web.bind.annotation.*;
|
import org.springframework.web.bind.annotation.*;
|
||||||
|
|
||||||
|
import javax.annotation.Resource;
|
||||||
|
import javax.servlet.http.HttpServletResponse;
|
||||||
import javax.validation.Valid;
|
import javax.validation.Valid;
|
||||||
|
import java.io.IOException;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -27,34 +33,53 @@ import java.util.List;
|
|||||||
* @Date 2022/7/28 20:37:15
|
* @Date 2022/7/28 20:37:15
|
||||||
* @Wechat zhuoda1024
|
* @Wechat zhuoda1024
|
||||||
* @Email lab1024@163.com
|
* @Email lab1024@163.com
|
||||||
* @Copyright 1024创新实验室 ( https://1024lab.net ),2012-2022
|
* @Copyright <a href="https://1024lab.net">1024创新实验室</a>
|
||||||
*/
|
*/
|
||||||
@Slf4j
|
@Slf4j
|
||||||
@RestController
|
@RestController
|
||||||
|
@Tag(name = AdminSwaggerTagConst.Business.OA_ENTERPRISE)
|
||||||
@OperateLog
|
@OperateLog
|
||||||
@Api(tags = {AdminSwaggerTagConst.Business.OA_ENTERPRISE})
|
|
||||||
public class EnterpriseController {
|
public class EnterpriseController {
|
||||||
|
|
||||||
@Autowired
|
@Resource
|
||||||
private EnterpriseService enterpriseService;
|
private EnterpriseService enterpriseService;
|
||||||
|
|
||||||
@ApiOperation(value = "分页查询企业模块 @author 开云")
|
@Operation(summary = "分页查询企业模块 @author 开云")
|
||||||
@PostMapping("/oa/enterprise/page/query")
|
@PostMapping("/oa/enterprise/page/query")
|
||||||
@SaAuth
|
@SaCheckPermission("oa:enterprise:query")
|
||||||
public ResponseDTO<PageResult<EnterpriseVO>> queryByPage(@RequestBody @Valid EnterpriseQueryForm queryDTO) {
|
public ResponseDTO<PageResult<EnterpriseVO>> queryByPage(@RequestBody @Valid EnterpriseQueryForm queryForm) {
|
||||||
return enterpriseService.queryByPage(queryDTO);
|
return enterpriseService.queryByPage(queryForm);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ApiOperation(value = "查询企业详情 @author 开云")
|
@Operation(summary = "导出企业信息 @author 卓大")
|
||||||
|
@PostMapping("/oa/enterprise/exportExcel")
|
||||||
|
public void exportExcel(@RequestBody @Valid EnterpriseQueryForm queryForm, HttpServletResponse response) throws IOException {
|
||||||
|
List<EnterpriseExcelVO> data = enterpriseService.getExcelExportData(queryForm);
|
||||||
|
if (CollectionUtils.isEmpty(data)) {
|
||||||
|
SmartResponseUtil.write(response, ResponseDTO.userErrorParam("暂无数据"));
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
// 设置下载消息头
|
||||||
|
SmartResponseUtil.setDownloadFileHeader(response, "企业基本信息.xls", null);
|
||||||
|
|
||||||
|
// 下载
|
||||||
|
EasyExcel.write(response.getOutputStream(), EnterpriseExcelVO.class)
|
||||||
|
.autoCloseStream(Boolean.FALSE)
|
||||||
|
.sheet("企业信息")
|
||||||
|
.doWrite(data);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Operation(summary = "查询企业详情 @author 开云")
|
||||||
@GetMapping("/oa/enterprise/get/{enterpriseId}")
|
@GetMapping("/oa/enterprise/get/{enterpriseId}")
|
||||||
@SaAuth
|
@SaCheckPermission("oa:enterprise:detail")
|
||||||
public ResponseDTO<EnterpriseVO> getDetail(@PathVariable Long enterpriseId) {
|
public ResponseDTO<EnterpriseVO> getDetail(@PathVariable Long enterpriseId) {
|
||||||
return ResponseDTO.ok(enterpriseService.getDetail(enterpriseId));
|
return ResponseDTO.ok(enterpriseService.getDetail(enterpriseId));
|
||||||
}
|
}
|
||||||
|
|
||||||
@ApiOperation(value = "新建企业 @author 开云")
|
@Operation(summary = "新建企业 @author 开云")
|
||||||
@PostMapping("/oa/enterprise/create")
|
@PostMapping("/oa/enterprise/create")
|
||||||
@SaAuth
|
@SaCheckPermission("oa:enterprise:add")
|
||||||
public ResponseDTO<String> createEnterprise(@RequestBody @Valid EnterpriseCreateForm createVO) {
|
public ResponseDTO<String> createEnterprise(@RequestBody @Valid EnterpriseCreateForm createVO) {
|
||||||
RequestUser requestUser = SmartRequestUtil.getRequestUser();
|
RequestUser requestUser = SmartRequestUtil.getRequestUser();
|
||||||
createVO.setCreateUserId(requestUser.getUserId());
|
createVO.setCreateUserId(requestUser.getUserId());
|
||||||
@ -62,53 +87,50 @@ public class EnterpriseController {
|
|||||||
return enterpriseService.createEnterprise(createVO);
|
return enterpriseService.createEnterprise(createVO);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ApiOperation(value = "编辑企业 @author 开云")
|
@Operation(summary = "编辑企业 @author 开云")
|
||||||
@PostMapping("/oa/enterprise/update")
|
@PostMapping("/oa/enterprise/update")
|
||||||
@SaAuth
|
@SaCheckPermission("oa:enterprise:update")
|
||||||
public ResponseDTO<String> updateEnterprise(@RequestBody @Valid EnterpriseUpdateForm updateVO) {
|
public ResponseDTO<String> updateEnterprise(@RequestBody @Valid EnterpriseUpdateForm updateVO) {
|
||||||
return enterpriseService.updateEnterprise(updateVO);
|
return enterpriseService.updateEnterprise(updateVO);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ApiOperation(value = "删除企业 @author 开云")
|
@Operation(summary = "删除企业 @author 开云")
|
||||||
@GetMapping("/oa/enterprise/delete/{enterpriseId}")
|
@GetMapping("/oa/enterprise/delete/{enterpriseId}")
|
||||||
@SaAuth
|
@SaCheckPermission("oa:enterprise:delete")
|
||||||
public ResponseDTO<String> deleteEnterprise(@PathVariable Long enterpriseId) {
|
public ResponseDTO<String> deleteEnterprise(@PathVariable Long enterpriseId) {
|
||||||
return enterpriseService.deleteEnterprise(enterpriseId);
|
return enterpriseService.deleteEnterprise(enterpriseId);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ApiOperation(value = "企业列表查询 @author 开云")
|
@Operation(summary = "按照类型查询企业 @author 开云")
|
||||||
@GetMapping("/oa/enterprise/query/list")
|
@GetMapping("/oa/enterprise/query/list")
|
||||||
@SaAuth
|
|
||||||
public ResponseDTO<List<EnterpriseListVO>> queryList(@RequestParam(value = "type", required = false) Integer type) {
|
public ResponseDTO<List<EnterpriseListVO>> queryList(@RequestParam(value = "type", required = false) Integer type) {
|
||||||
return enterpriseService.queryList(type);
|
return enterpriseService.queryList(type);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ApiOperation(value = "企业添加员工 @author 罗伊")
|
@Operation(summary = "企业添加员工 @author 罗伊")
|
||||||
@PostMapping("/oa/enterprise/employee/add")
|
@PostMapping("/oa/enterprise/employee/add")
|
||||||
@SaAuth
|
@SaCheckPermission("oa:enterprise:addEmployee")
|
||||||
public ResponseDTO<String> addEmployee(@RequestBody @Valid EnterpriseEmployeeForm enterpriseEmployeeForm) {
|
public ResponseDTO<String> addEmployee(@RequestBody @Valid EnterpriseEmployeeForm enterpriseEmployeeForm) {
|
||||||
return enterpriseService.addEmployee(enterpriseEmployeeForm);
|
return enterpriseService.addEmployee(enterpriseEmployeeForm);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ApiOperation(value = "查询企业全部员工 @author 罗伊")
|
@Operation(summary = "查询企业全部员工 @author 罗伊")
|
||||||
@PostMapping("/oa/enterprise/employee/list")
|
@PostMapping("/oa/enterprise/employee/list")
|
||||||
@SaAuth
|
|
||||||
public ResponseDTO<List<EnterpriseEmployeeVO>> employeeList(@RequestBody @Valid List<Long> enterpriseIdList) {
|
public ResponseDTO<List<EnterpriseEmployeeVO>> employeeList(@RequestBody @Valid List<Long> enterpriseIdList) {
|
||||||
return ResponseDTO.ok(enterpriseService.employeeList(enterpriseIdList));
|
return ResponseDTO.ok(enterpriseService.employeeList(enterpriseIdList));
|
||||||
}
|
}
|
||||||
|
|
||||||
@ApiOperation(value = "分页查询企业员工 @author 卓大")
|
@Operation(summary = "分页查询企业员工 @author 卓大")
|
||||||
@PostMapping("/oa/enterprise/employee/queryPage")
|
@PostMapping("/oa/enterprise/employee/queryPage")
|
||||||
@SaAuth
|
|
||||||
public ResponseDTO<PageResult<EnterpriseEmployeeVO>> queryPageEmployeeList(@RequestBody @Valid EnterpriseEmployeeQueryForm queryForm) {
|
public ResponseDTO<PageResult<EnterpriseEmployeeVO>> queryPageEmployeeList(@RequestBody @Valid EnterpriseEmployeeQueryForm queryForm) {
|
||||||
return ResponseDTO.ok(enterpriseService.queryPageEmployeeList(queryForm));
|
return ResponseDTO.ok(enterpriseService.queryPageEmployeeList(queryForm));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ApiOperation(value = "企业删除员工 @author 罗伊")
|
@Operation(summary = "企业删除员工 @author 罗伊")
|
||||||
@PostMapping("/oa/enterprise/employee/delete")
|
@PostMapping("/oa/enterprise/employee/delete")
|
||||||
@SaAuth
|
@SaCheckPermission("oa:enterprise:deleteEmployee")
|
||||||
public ResponseDTO<String> deleteEmployee(@RequestBody @Valid EnterpriseEmployeeForm enterpriseEmployeeForm) {
|
public ResponseDTO<String> deleteEmployee(@RequestBody @Valid EnterpriseEmployeeForm enterpriseEmployeeForm) {
|
||||||
return enterpriseService.deleteEmployee(enterpriseEmployeeForm);
|
return enterpriseService.deleteEmployee(enterpriseEmployeeForm);
|
||||||
}
|
}
|
||||||
|
@ -12,7 +12,7 @@ import org.springframework.stereotype.Service;
|
|||||||
* @Date 2022/7/28 20:37:15
|
* @Date 2022/7/28 20:37:15
|
||||||
* @Wechat zhuoda1024
|
* @Wechat zhuoda1024
|
||||||
* @Email lab1024@163.com
|
* @Email lab1024@163.com
|
||||||
* @Copyright 1024创新实验室 ( https://1024lab.net ),2012-2022
|
* @Copyright <a href="https://1024lab.net">1024创新实验室</a>
|
||||||
*/
|
*/
|
||||||
@Service
|
@Service
|
||||||
public class EnterpriseEmployeeManager extends ServiceImpl<EnterpriseEmployeeDao, EnterpriseEmployeeEntity> {
|
public class EnterpriseEmployeeManager extends ServiceImpl<EnterpriseEmployeeDao, EnterpriseEmployeeEntity> {
|
||||||
|
@ -1,6 +1,5 @@
|
|||||||
package net.lab1024.sa.admin.module.business.oa.enterprise;
|
package net.lab1024.sa.admin.module.business.oa.enterprise;
|
||||||
|
|
||||||
import com.alibaba.fastjson.JSON;
|
|
||||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||||
import com.google.common.collect.Lists;
|
import com.google.common.collect.Lists;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
@ -10,22 +9,23 @@ import net.lab1024.sa.admin.module.business.oa.enterprise.domain.entity.Enterpri
|
|||||||
import net.lab1024.sa.admin.module.business.oa.enterprise.domain.entity.EnterpriseEntity;
|
import net.lab1024.sa.admin.module.business.oa.enterprise.domain.entity.EnterpriseEntity;
|
||||||
import net.lab1024.sa.admin.module.business.oa.enterprise.domain.form.*;
|
import net.lab1024.sa.admin.module.business.oa.enterprise.domain.form.*;
|
||||||
import net.lab1024.sa.admin.module.business.oa.enterprise.domain.vo.EnterpriseEmployeeVO;
|
import net.lab1024.sa.admin.module.business.oa.enterprise.domain.vo.EnterpriseEmployeeVO;
|
||||||
|
import net.lab1024.sa.admin.module.business.oa.enterprise.domain.vo.EnterpriseExcelVO;
|
||||||
import net.lab1024.sa.admin.module.business.oa.enterprise.domain.vo.EnterpriseListVO;
|
import net.lab1024.sa.admin.module.business.oa.enterprise.domain.vo.EnterpriseListVO;
|
||||||
import net.lab1024.sa.admin.module.business.oa.enterprise.domain.vo.EnterpriseVO;
|
import net.lab1024.sa.admin.module.business.oa.enterprise.domain.vo.EnterpriseVO;
|
||||||
import net.lab1024.sa.admin.module.system.department.service.DepartmentService;
|
import net.lab1024.sa.admin.module.system.department.service.DepartmentService;
|
||||||
import net.lab1024.sa.common.common.code.UserErrorCode;
|
import net.lab1024.sa.base.common.code.UserErrorCode;
|
||||||
import net.lab1024.sa.common.common.domain.PageResult;
|
import net.lab1024.sa.base.common.domain.PageResult;
|
||||||
import net.lab1024.sa.common.common.domain.ResponseDTO;
|
import net.lab1024.sa.base.common.domain.ResponseDTO;
|
||||||
import net.lab1024.sa.common.common.util.SmartBeanUtil;
|
import net.lab1024.sa.base.common.util.SmartBeanUtil;
|
||||||
import net.lab1024.sa.common.common.util.SmartPageUtil;
|
import net.lab1024.sa.base.common.util.SmartPageUtil;
|
||||||
import net.lab1024.sa.common.module.support.datatracer.constant.DataTracerTypeEnum;
|
import net.lab1024.sa.base.module.support.datatracer.constant.DataTracerTypeEnum;
|
||||||
import net.lab1024.sa.common.module.support.datatracer.domain.form.DataTracerForm;
|
import net.lab1024.sa.base.module.support.datatracer.domain.form.DataTracerForm;
|
||||||
import net.lab1024.sa.common.module.support.datatracer.service.DataTracerService;
|
import net.lab1024.sa.base.module.support.datatracer.service.DataTracerService;
|
||||||
import org.apache.commons.collections4.CollectionUtils;
|
import org.apache.commons.collections4.CollectionUtils;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
import org.springframework.transaction.annotation.Transactional;
|
import org.springframework.transaction.annotation.Transactional;
|
||||||
|
|
||||||
|
import javax.annotation.Resource;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Objects;
|
import java.util.Objects;
|
||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
@ -37,57 +37,58 @@ import java.util.stream.Collectors;
|
|||||||
* @Date 2022/7/28 20:37:15
|
* @Date 2022/7/28 20:37:15
|
||||||
* @Wechat zhuoda1024
|
* @Wechat zhuoda1024
|
||||||
* @Email lab1024@163.com
|
* @Email lab1024@163.com
|
||||||
* @Copyright 1024创新实验室 ( https://1024lab.net ),2012-2022
|
* @Copyright <a href="https://1024lab.net">1024创新实验室</a>
|
||||||
*/
|
*/
|
||||||
@Service
|
@Service
|
||||||
@Slf4j
|
@Slf4j
|
||||||
public class EnterpriseService {
|
public class EnterpriseService {
|
||||||
|
|
||||||
@Autowired
|
@Resource
|
||||||
private EnterpriseDao enterpriseDao;
|
private EnterpriseDao enterpriseDao;
|
||||||
|
|
||||||
@Autowired
|
@Resource
|
||||||
private EnterpriseEmployeeDao enterpriseEmployeeDao;
|
private EnterpriseEmployeeDao enterpriseEmployeeDao;
|
||||||
|
|
||||||
@Autowired
|
@Resource
|
||||||
private EnterpriseEmployeeManager enterpriseEmployeeManager;
|
private EnterpriseEmployeeManager enterpriseEmployeeManager;
|
||||||
|
|
||||||
@Autowired
|
@Resource
|
||||||
private DataTracerService dataTracerService;
|
private DataTracerService dataTracerService;
|
||||||
|
|
||||||
@Autowired
|
@Resource
|
||||||
private DepartmentService departmentService;
|
private DepartmentService departmentService;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 分页查询企业模块
|
* 分页查询企业模块
|
||||||
*
|
*
|
||||||
* @param queryDTO
|
|
||||||
* @return
|
|
||||||
*/
|
*/
|
||||||
public ResponseDTO<PageResult<EnterpriseVO>> queryByPage(EnterpriseQueryForm queryDTO) {
|
public ResponseDTO<PageResult<EnterpriseVO>> queryByPage(EnterpriseQueryForm queryForm) {
|
||||||
queryDTO.setDeletedFlag(Boolean.FALSE);
|
queryForm.setDeletedFlag(Boolean.FALSE);
|
||||||
Page<?> page = SmartPageUtil.convert2PageQuery(queryDTO);
|
Page<?> page = SmartPageUtil.convert2PageQuery(queryForm);
|
||||||
List<EnterpriseVO> enterpriseVOS = enterpriseDao.queryPage(page, queryDTO);
|
List<EnterpriseVO> enterpriseList = enterpriseDao.queryPage(page, queryForm);
|
||||||
PageResult<EnterpriseVO> pageResult = SmartPageUtil.convert2PageResult(page, enterpriseVOS);
|
PageResult<EnterpriseVO> pageResult = SmartPageUtil.convert2PageResult(page, enterpriseList);
|
||||||
return ResponseDTO.ok(pageResult);
|
return ResponseDTO.ok(pageResult);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取导出数据
|
||||||
|
*/
|
||||||
|
public List<EnterpriseExcelVO> getExcelExportData(EnterpriseQueryForm queryForm) {
|
||||||
|
queryForm.setDeletedFlag(false);
|
||||||
|
return enterpriseDao.selectExcelExportData(queryForm);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 查询企业详情
|
* 查询企业详情
|
||||||
*
|
*
|
||||||
* @param enterpriseId
|
|
||||||
* @return
|
|
||||||
*/
|
*/
|
||||||
public EnterpriseVO getDetail(Long enterpriseId) {
|
public EnterpriseVO getDetail(Long enterpriseId) {
|
||||||
EnterpriseVO enterpriseDetail = enterpriseDao.getDetail(enterpriseId, Boolean.FALSE);
|
return enterpriseDao.getDetail(enterpriseId, Boolean.FALSE);
|
||||||
return enterpriseDetail;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 新建企业
|
* 新建企业
|
||||||
*
|
*
|
||||||
* @param createVO
|
|
||||||
* @return
|
|
||||||
*/
|
*/
|
||||||
@Transactional(rollbackFor = Exception.class)
|
@Transactional(rollbackFor = Exception.class)
|
||||||
public ResponseDTO<String> createEnterprise(EnterpriseCreateForm createVO) {
|
public ResponseDTO<String> createEnterprise(EnterpriseCreateForm createVO) {
|
||||||
@ -106,8 +107,6 @@ public class EnterpriseService {
|
|||||||
/**
|
/**
|
||||||
* 编辑企业
|
* 编辑企业
|
||||||
*
|
*
|
||||||
* @param updateVO
|
|
||||||
* @return
|
|
||||||
*/
|
*/
|
||||||
@Transactional(rollbackFor = Exception.class)
|
@Transactional(rollbackFor = Exception.class)
|
||||||
public ResponseDTO<String> updateEnterprise(EnterpriseUpdateForm updateVO) {
|
public ResponseDTO<String> updateEnterprise(EnterpriseUpdateForm updateVO) {
|
||||||
@ -144,8 +143,6 @@ public class EnterpriseService {
|
|||||||
/**
|
/**
|
||||||
* 删除企业
|
* 删除企业
|
||||||
*
|
*
|
||||||
* @param enterpriseId
|
|
||||||
* @return
|
|
||||||
*/
|
*/
|
||||||
@Transactional(rollbackFor = Exception.class)
|
@Transactional(rollbackFor = Exception.class)
|
||||||
public ResponseDTO<String> deleteEnterprise(Long enterpriseId) {
|
public ResponseDTO<String> deleteEnterprise(Long enterpriseId) {
|
||||||
@ -161,12 +158,10 @@ public class EnterpriseService {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* 企业列表查询
|
* 企业列表查询
|
||||||
*
|
|
||||||
* @return
|
|
||||||
*/
|
*/
|
||||||
public ResponseDTO<List<EnterpriseListVO>> queryList(Integer type) {
|
public ResponseDTO<List<EnterpriseListVO>> queryList(Integer type) {
|
||||||
List<EnterpriseListVO> enterpriseListVOS = enterpriseDao.queryList(type, Boolean.FALSE, Boolean.FALSE);
|
List<EnterpriseListVO> enterpriseList = enterpriseDao.queryList(type, Boolean.FALSE, Boolean.FALSE);
|
||||||
return ResponseDTO.ok(enterpriseListVOS);
|
return ResponseDTO.ok(enterpriseList);
|
||||||
}
|
}
|
||||||
|
|
||||||
//----------------------------------------- 以下为员工相关--------------------------------------------
|
//----------------------------------------- 以下为员工相关--------------------------------------------
|
||||||
@ -174,8 +169,6 @@ public class EnterpriseService {
|
|||||||
/**
|
/**
|
||||||
* 企业添加员工
|
* 企业添加员工
|
||||||
*
|
*
|
||||||
* @param enterpriseEmployeeForm
|
|
||||||
* @return
|
|
||||||
*/
|
*/
|
||||||
public synchronized ResponseDTO<String> addEmployee(EnterpriseEmployeeForm enterpriseEmployeeForm) {
|
public synchronized ResponseDTO<String> addEmployee(EnterpriseEmployeeForm enterpriseEmployeeForm) {
|
||||||
Long enterpriseId = enterpriseEmployeeForm.getEnterpriseId();
|
Long enterpriseId = enterpriseEmployeeForm.getEnterpriseId();
|
||||||
@ -207,8 +200,6 @@ public class EnterpriseService {
|
|||||||
/**
|
/**
|
||||||
* 企业删除员工
|
* 企业删除员工
|
||||||
*
|
*
|
||||||
* @param enterpriseEmployeeForm
|
|
||||||
* @return
|
|
||||||
*/
|
*/
|
||||||
public synchronized ResponseDTO<String> deleteEmployee(EnterpriseEmployeeForm enterpriseEmployeeForm) {
|
public synchronized ResponseDTO<String> deleteEmployee(EnterpriseEmployeeForm enterpriseEmployeeForm) {
|
||||||
Long enterpriseId = enterpriseEmployeeForm.getEnterpriseId();
|
Long enterpriseId = enterpriseEmployeeForm.getEnterpriseId();
|
||||||
@ -224,22 +215,17 @@ public class EnterpriseService {
|
|||||||
/**
|
/**
|
||||||
* 企业下员工列表
|
* 企业下员工列表
|
||||||
*
|
*
|
||||||
* @param enterpriseIdList
|
|
||||||
* @return
|
|
||||||
*/
|
*/
|
||||||
public List<EnterpriseEmployeeVO> employeeList(List<Long> enterpriseIdList) {
|
public List<EnterpriseEmployeeVO> employeeList(List<Long> enterpriseIdList) {
|
||||||
if (CollectionUtils.isEmpty(enterpriseIdList)) {
|
if (CollectionUtils.isEmpty(enterpriseIdList)) {
|
||||||
return Lists.newArrayList();
|
return Lists.newArrayList();
|
||||||
}
|
}
|
||||||
List<EnterpriseEmployeeVO> enterpriseEmployeeVOList = enterpriseEmployeeDao.selectByEnterpriseIdList(enterpriseIdList);
|
return enterpriseEmployeeDao.selectByEnterpriseIdList(enterpriseIdList);
|
||||||
return enterpriseEmployeeVOList;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 分页查询企业员工
|
* 分页查询企业员工
|
||||||
*
|
*
|
||||||
* @param queryForm
|
|
||||||
* @return
|
|
||||||
*/
|
*/
|
||||||
public PageResult<EnterpriseEmployeeVO> queryPageEmployeeList(EnterpriseEmployeeQueryForm queryForm) {
|
public PageResult<EnterpriseEmployeeVO> queryPageEmployeeList(EnterpriseEmployeeQueryForm queryForm) {
|
||||||
Page<?> page = SmartPageUtil.convert2PageQuery(queryForm);
|
Page<?> page = SmartPageUtil.convert2PageQuery(queryForm);
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
package net.lab1024.sa.admin.module.business.oa.enterprise.constant;
|
package net.lab1024.sa.admin.module.business.oa.enterprise.constant;
|
||||||
|
|
||||||
|
|
||||||
import net.lab1024.sa.common.common.enumeration.BaseEnum;
|
import net.lab1024.sa.base.common.enumeration.BaseEnum;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 企业类型
|
* 企业类型
|
||||||
@ -10,12 +10,18 @@ import net.lab1024.sa.common.common.enumeration.BaseEnum;
|
|||||||
* @Date 2022/7/28 20:37:15
|
* @Date 2022/7/28 20:37:15
|
||||||
* @Wechat zhuoda1024
|
* @Wechat zhuoda1024
|
||||||
* @Email lab1024@163.com
|
* @Email lab1024@163.com
|
||||||
* @Copyright 1024创新实验室 ( https://1024lab.net ),2012-2022
|
* @Copyright <a href="https://1024lab.net">1024创新实验室</a>
|
||||||
*/
|
*/
|
||||||
public enum EnterpriseTypeEnum implements BaseEnum {
|
public enum EnterpriseTypeEnum implements BaseEnum {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 有限企业
|
||||||
|
*/
|
||||||
NORMAL(1, "有限企业"),
|
NORMAL(1, "有限企业"),
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 外资企业
|
||||||
|
*/
|
||||||
FOREIGN(2, "外资企业"),
|
FOREIGN(2, "外资企业"),
|
||||||
;
|
;
|
||||||
|
|
||||||
|
@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
|||||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||||
import net.lab1024.sa.admin.module.business.oa.enterprise.domain.entity.EnterpriseEntity;
|
import net.lab1024.sa.admin.module.business.oa.enterprise.domain.entity.EnterpriseEntity;
|
||||||
import net.lab1024.sa.admin.module.business.oa.enterprise.domain.form.EnterpriseQueryForm;
|
import net.lab1024.sa.admin.module.business.oa.enterprise.domain.form.EnterpriseQueryForm;
|
||||||
|
import net.lab1024.sa.admin.module.business.oa.enterprise.domain.vo.EnterpriseExcelVO;
|
||||||
import net.lab1024.sa.admin.module.business.oa.enterprise.domain.vo.EnterpriseListVO;
|
import net.lab1024.sa.admin.module.business.oa.enterprise.domain.vo.EnterpriseListVO;
|
||||||
import net.lab1024.sa.admin.module.business.oa.enterprise.domain.vo.EnterpriseVO;
|
import net.lab1024.sa.admin.module.business.oa.enterprise.domain.vo.EnterpriseVO;
|
||||||
import org.apache.ibatis.annotations.Mapper;
|
import org.apache.ibatis.annotations.Mapper;
|
||||||
@ -19,7 +20,7 @@ import java.util.List;
|
|||||||
* @Date 2022/7/28 20:37:15
|
* @Date 2022/7/28 20:37:15
|
||||||
* @Wechat zhuoda1024
|
* @Wechat zhuoda1024
|
||||||
* @Email lab1024@163.com
|
* @Email lab1024@163.com
|
||||||
* @Copyright 1024创新实验室 ( https://1024lab.net ),2012-2022
|
* @Copyright <a href="https://1024lab.net">1024创新实验室</a>
|
||||||
*/
|
*/
|
||||||
@Mapper
|
@Mapper
|
||||||
@Component
|
@Component
|
||||||
@ -28,45 +29,37 @@ public interface EnterpriseDao extends BaseMapper<EnterpriseEntity> {
|
|||||||
/**
|
/**
|
||||||
* 根据企业名称查询
|
* 根据企业名称查询
|
||||||
*
|
*
|
||||||
* @param enterpriseName
|
|
||||||
* @param excludeEnterpriseId
|
|
||||||
* @param deletedFlag
|
|
||||||
* @return
|
|
||||||
*/
|
*/
|
||||||
EnterpriseEntity queryByEnterpriseName(@Param("enterpriseName") String enterpriseName, @Param("excludeEnterpriseId") Long excludeEnterpriseId, @Param("deletedFlag") Boolean deletedFlag);
|
EnterpriseEntity queryByEnterpriseName(@Param("enterpriseName") String enterpriseName, @Param("excludeEnterpriseId") Long excludeEnterpriseId, @Param("deletedFlag") Boolean deletedFlag);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 删除企业
|
* 删除企业
|
||||||
*
|
|
||||||
* @param enterpriseId
|
|
||||||
* @param deletedFlag
|
|
||||||
*/
|
*/
|
||||||
void deleteEnterprise(@Param("enterpriseId") Long enterpriseId, @Param("deletedFlag") Boolean deletedFlag);
|
void deleteEnterprise(@Param("enterpriseId") Long enterpriseId, @Param("deletedFlag") Boolean deletedFlag);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 企业分页查询
|
* 企业分页查询
|
||||||
*
|
*
|
||||||
* @param page
|
|
||||||
* @param queryForm
|
|
||||||
* @return
|
|
||||||
*/
|
*/
|
||||||
List<EnterpriseVO> queryPage(Page page, @Param("queryForm") EnterpriseQueryForm queryForm);
|
List<EnterpriseVO> queryPage(Page page, @Param("queryForm") EnterpriseQueryForm queryForm);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 查询导出的数据
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
List<EnterpriseExcelVO> selectExcelExportData(@Param("queryForm") EnterpriseQueryForm queryForm);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 查询企业详情
|
* 查询企业详情
|
||||||
*
|
*
|
||||||
* @param enterpriseId
|
|
||||||
* @return
|
|
||||||
*/
|
*/
|
||||||
EnterpriseVO getDetail(@Param("enterpriseId") Long enterpriseId, @Param("deletedFlag") Boolean deletedFlag);
|
EnterpriseVO getDetail(@Param("enterpriseId") Long enterpriseId, @Param("deletedFlag") Boolean deletedFlag);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 查询列表
|
* 查询列表
|
||||||
*
|
*
|
||||||
* @param type
|
|
||||||
* @param disabledFlag
|
|
||||||
* @param deletedFlag
|
|
||||||
* @return
|
|
||||||
*/
|
*/
|
||||||
List<EnterpriseListVO> queryList(@Param("type") Integer type, @Param("disabledFlag") Boolean disabledFlag, @Param("deletedFlag") Boolean deletedFlag);
|
List<EnterpriseListVO> queryList(@Param("type") Integer type, @Param("disabledFlag") Boolean disabledFlag, @Param("deletedFlag") Boolean deletedFlag);
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -19,7 +19,7 @@ import java.util.List;
|
|||||||
* @Date 2022/7/28 20:37:15
|
* @Date 2022/7/28 20:37:15
|
||||||
* @Wechat zhuoda1024
|
* @Wechat zhuoda1024
|
||||||
* @Email lab1024@163.com
|
* @Email lab1024@163.com
|
||||||
* @Copyright 1024创新实验室 ( https://1024lab.net ),2012-2022
|
* @Copyright <a href="https://1024lab.net">1024创新实验室</a>
|
||||||
*/
|
*/
|
||||||
@Mapper
|
@Mapper
|
||||||
@Component
|
@Component
|
||||||
@ -28,61 +28,43 @@ public interface EnterpriseEmployeeDao extends BaseMapper<EnterpriseEmployeeEnti
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* 根据员工查询
|
* 根据员工查询
|
||||||
* @param employeeIdList
|
|
||||||
* @return
|
|
||||||
*/
|
*/
|
||||||
List<EnterpriseEmployeeVO> selectByEmployeeIdList(@Param("employeeIdList")Collection<Long> employeeIdList);
|
List<EnterpriseEmployeeVO> selectByEmployeeIdList(@Param("employeeIdList")Collection<Long> employeeIdList);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 查询员工关联的企业
|
* 查询员工关联的企业
|
||||||
* @param employeeId
|
|
||||||
* @return
|
|
||||||
*/
|
*/
|
||||||
List<Long> selectEnterpriseIdByEmployeeId(@Param("employeeId")Long employeeId);
|
List<Long> selectEnterpriseIdByEmployeeId(@Param("employeeId")Long employeeId);
|
||||||
/**
|
/**
|
||||||
* 根据企业查询
|
* 根据企业查询
|
||||||
* @param enterpriseIdList
|
|
||||||
* @return
|
|
||||||
*/
|
*/
|
||||||
List<EnterpriseEmployeeVO> selectByEnterpriseIdList(@Param("enterpriseIdList")Collection<Long> enterpriseIdList);
|
List<EnterpriseEmployeeVO> selectByEnterpriseIdList(@Param("enterpriseIdList")Collection<Long> enterpriseIdList);
|
||||||
/**
|
/**
|
||||||
* 根据企业查询
|
* 根据企业查询
|
||||||
* @param enterpriseId
|
|
||||||
* @return
|
|
||||||
*/
|
*/
|
||||||
List<EnterpriseEmployeeEntity> selectByEnterpriseId(@Param("enterpriseId")Long enterpriseId);
|
List<EnterpriseEmployeeEntity> selectByEnterpriseId(@Param("enterpriseId")Long enterpriseId);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 查询企业下的所有员工id
|
* 查询企业下的所有员工id
|
||||||
* @param enterpriseIdList
|
|
||||||
* @return
|
|
||||||
*/
|
*/
|
||||||
List<Long> selectEmployeeIdByEnterpriseIdList(@Param("enterpriseIdList")Collection<Long> enterpriseIdList);
|
List<Long> selectEmployeeIdByEnterpriseIdList(@Param("enterpriseIdList")Collection<Long> enterpriseIdList);
|
||||||
/**
|
/**
|
||||||
* 根据员工删除
|
* 根据员工删除
|
||||||
* @param enterpriseId
|
|
||||||
* @param employeeIdList
|
|
||||||
*/
|
*/
|
||||||
void deleteByEnterpriseAndEmployeeIdList(@Param("enterpriseId")Long enterpriseId, @Param("employeeIdList")Collection<Long> employeeIdList);
|
void deleteByEnterpriseAndEmployeeIdList(@Param("enterpriseId")Long enterpriseId, @Param("employeeIdList")Collection<Long> employeeIdList);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 根据员工查询
|
* 根据员工查询
|
||||||
* @param enterpriseId
|
|
||||||
* @param employeeIdList
|
|
||||||
*/
|
*/
|
||||||
List<EnterpriseEmployeeEntity> selectByEnterpriseAndEmployeeIdList(@Param("enterpriseId")Long enterpriseId, @Param("employeeIdList")Collection<Long> employeeIdList);
|
List<EnterpriseEmployeeEntity> selectByEnterpriseAndEmployeeIdList(@Param("enterpriseId")Long enterpriseId, @Param("employeeIdList")Collection<Long> employeeIdList);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 删除某员工关联的所有企业
|
* 删除某员工关联的所有企业
|
||||||
* @param employeeId
|
|
||||||
*/
|
*/
|
||||||
void deleteByEmployeeId(@Param("employeeId")Long employeeId);
|
void deleteByEmployeeId(@Param("employeeId")Long employeeId);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 分页查询企业员工
|
* 分页查询企业员工
|
||||||
* @param page
|
|
||||||
* @param queryForm
|
|
||||||
* @return
|
|
||||||
*/
|
*/
|
||||||
List<EnterpriseEmployeeVO> queryPageEmployeeList(Page<?> page,@Param("queryForm") EnterpriseEmployeeQueryForm queryForm);
|
List<EnterpriseEmployeeVO> queryPageEmployeeList(Page<?> page,@Param("queryForm") EnterpriseEmployeeQueryForm queryForm);
|
||||||
}
|
}
|
||||||
|
@ -15,7 +15,7 @@ import java.time.LocalDateTime;
|
|||||||
* @Date 2022/7/28 20:37:15
|
* @Date 2022/7/28 20:37:15
|
||||||
* @Wechat zhuoda1024
|
* @Wechat zhuoda1024
|
||||||
* @Email lab1024@163.com
|
* @Email lab1024@163.com
|
||||||
* @Copyright 1024创新实验室 ( https://1024lab.net ),2012-2022
|
* @Copyright <a href="https://1024lab.net">1024创新实验室</a>
|
||||||
*/
|
*/
|
||||||
@Data
|
@Data
|
||||||
@TableName("t_oa_enterprise_employee")
|
@TableName("t_oa_enterprise_employee")
|
||||||
|
@ -5,8 +5,8 @@ import com.baomidou.mybatisplus.annotation.TableId;
|
|||||||
import com.baomidou.mybatisplus.annotation.TableName;
|
import com.baomidou.mybatisplus.annotation.TableName;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
import net.lab1024.sa.admin.module.business.oa.enterprise.constant.EnterpriseTypeEnum;
|
import net.lab1024.sa.admin.module.business.oa.enterprise.constant.EnterpriseTypeEnum;
|
||||||
import net.lab1024.sa.common.module.support.datatracer.annoation.DataTracerFieldEnum;
|
import net.lab1024.sa.base.module.support.datatracer.annoation.DataTracerFieldEnum;
|
||||||
import net.lab1024.sa.common.module.support.datatracer.annoation.DataTracerFieldLabel;
|
import net.lab1024.sa.base.module.support.datatracer.annoation.DataTracerFieldLabel;
|
||||||
|
|
||||||
import java.time.LocalDateTime;
|
import java.time.LocalDateTime;
|
||||||
|
|
||||||
@ -17,7 +17,7 @@ import java.time.LocalDateTime;
|
|||||||
* @Date 2022/7/28 20:37:15
|
* @Date 2022/7/28 20:37:15
|
||||||
* @Wechat zhuoda1024
|
* @Wechat zhuoda1024
|
||||||
* @Email lab1024@163.com
|
* @Email lab1024@163.com
|
||||||
* @Copyright 1024创新实验室 ( https://1024lab.net ),2012-2022
|
* @Copyright <a href="https://1024lab.net">1024创新实验室</a>
|
||||||
*/
|
*/
|
||||||
@Data
|
@Data
|
||||||
@TableName("t_oa_enterprise")
|
@TableName("t_oa_enterprise")
|
||||||
|
@ -2,14 +2,14 @@ package net.lab1024.sa.admin.module.business.oa.enterprise.domain.form;
|
|||||||
|
|
||||||
import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
|
import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
|
||||||
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
|
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
|
||||||
import io.swagger.annotations.ApiModelProperty;
|
import io.swagger.v3.oas.annotations.media.Schema;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
import net.lab1024.sa.admin.module.business.oa.enterprise.constant.EnterpriseTypeEnum;
|
import net.lab1024.sa.admin.module.business.oa.enterprise.constant.EnterpriseTypeEnum;
|
||||||
import net.lab1024.sa.common.common.json.deserializer.FileKeyVoDeserializer;
|
import net.lab1024.sa.base.common.json.deserializer.FileKeyVoDeserializer;
|
||||||
import net.lab1024.sa.common.common.json.serializer.FileKeyVoSerializer;
|
import net.lab1024.sa.base.common.json.serializer.FileKeyVoSerializer;
|
||||||
import net.lab1024.sa.common.common.swagger.ApiModelPropertyEnum;
|
import net.lab1024.sa.base.common.swagger.SchemaEnum;
|
||||||
import net.lab1024.sa.common.common.util.SmartVerificationUtil;
|
import net.lab1024.sa.base.common.util.SmartVerificationUtil;
|
||||||
import net.lab1024.sa.common.common.validator.enumeration.CheckEnum;
|
import net.lab1024.sa.base.common.validator.enumeration.CheckEnum;
|
||||||
import org.hibernate.validator.constraints.Length;
|
import org.hibernate.validator.constraints.Length;
|
||||||
|
|
||||||
import javax.validation.constraints.NotBlank;
|
import javax.validation.constraints.NotBlank;
|
||||||
@ -23,79 +23,79 @@ import javax.validation.constraints.Pattern;
|
|||||||
* @Date 2022/7/28 20:37:15
|
* @Date 2022/7/28 20:37:15
|
||||||
* @Wechat zhuoda1024
|
* @Wechat zhuoda1024
|
||||||
* @Email lab1024@163.com
|
* @Email lab1024@163.com
|
||||||
* @Copyright 1024创新实验室 ( https://1024lab.net ),2012-2022
|
* @Copyright <a href="https://1024lab.net">1024创新实验室</a>
|
||||||
*/
|
*/
|
||||||
@Data
|
@Data
|
||||||
public class EnterpriseCreateForm {
|
public class EnterpriseCreateForm {
|
||||||
|
|
||||||
@ApiModelProperty("企业名称")
|
@Schema(description = "企业名称")
|
||||||
@NotBlank(message = "企业名称不能为空")
|
@NotBlank(message = "企业名称不能为空")
|
||||||
@Length(max = 200, message = "企业名称最多200字符")
|
@Length(max = 200, message = "企业名称最多200字符")
|
||||||
private String enterpriseName;
|
private String enterpriseName;
|
||||||
|
|
||||||
@ApiModelProperty("企业logo")
|
@Schema(description = "企业logo")
|
||||||
@JsonSerialize(using = FileKeyVoSerializer.class)
|
@JsonSerialize(using = FileKeyVoSerializer.class)
|
||||||
@JsonDeserialize(using = FileKeyVoDeserializer.class)
|
@JsonDeserialize(using = FileKeyVoDeserializer.class)
|
||||||
private String enterpriseLogo;
|
private String enterpriseLogo;
|
||||||
|
|
||||||
@ApiModelProperty("统一社会信用代码")
|
@Schema(description = "统一社会信用代码")
|
||||||
@NotBlank(message = "统一社会信用代码不能为空")
|
@NotBlank(message = "统一社会信用代码不能为空")
|
||||||
@Length(max = 200, message = "统一社会信用代码最多200字符")
|
@Length(max = 200, message = "统一社会信用代码最多200字符")
|
||||||
private String unifiedSocialCreditCode;
|
private String unifiedSocialCreditCode;
|
||||||
|
|
||||||
@ApiModelProperty("联系人")
|
@Schema(description = "联系人")
|
||||||
@NotBlank(message = "联系人不能为空")
|
@NotBlank(message = "联系人不能为空")
|
||||||
@Length(max = 100, message = "联系人最多100字符")
|
@Length(max = 100, message = "联系人最多100字符")
|
||||||
private String contact;
|
private String contact;
|
||||||
|
|
||||||
@ApiModelProperty("联系人电话")
|
@Schema(description = "联系人电话")
|
||||||
@NotBlank(message = "联系人电话不能为空")
|
@NotBlank(message = "联系人电话不能为空")
|
||||||
@Pattern(regexp = SmartVerificationUtil.PHONE_REGEXP, message = "手机号格式不正确")
|
@Pattern(regexp = SmartVerificationUtil.PHONE_REGEXP, message = "手机号格式不正确")
|
||||||
private String contactPhone;
|
private String contactPhone;
|
||||||
|
|
||||||
@ApiModelPropertyEnum(desc = "类型", value = EnterpriseTypeEnum.class)
|
@SchemaEnum(desc = "类型", value = EnterpriseTypeEnum.class)
|
||||||
@CheckEnum(message = "类型不正确", value = EnterpriseTypeEnum.class)
|
@CheckEnum(message = "类型不正确", value = EnterpriseTypeEnum.class)
|
||||||
private Integer type;
|
private Integer type;
|
||||||
|
|
||||||
@ApiModelProperty("邮箱")
|
@Schema(description = "邮箱")
|
||||||
@Pattern(regexp = SmartVerificationUtil.EMAIL, message = "邮箱格式不正确")
|
@Pattern(regexp = SmartVerificationUtil.EMAIL, message = "邮箱格式不正确")
|
||||||
private String email;
|
private String email;
|
||||||
|
|
||||||
@ApiModelProperty("省份")
|
@Schema(description = "省份")
|
||||||
private Integer province;
|
private Integer province;
|
||||||
|
|
||||||
@ApiModelProperty("省份名称")
|
@Schema(description = "省份名称")
|
||||||
private String provinceName;
|
private String provinceName;
|
||||||
|
|
||||||
@ApiModelProperty("城市")
|
@Schema(description = "城市")
|
||||||
private Integer city;
|
private Integer city;
|
||||||
|
|
||||||
@ApiModelProperty("城市名称")
|
@Schema(description = "城市名称")
|
||||||
private String cityName;
|
private String cityName;
|
||||||
|
|
||||||
@ApiModelProperty("区县")
|
@Schema(description = "区县")
|
||||||
private Integer district;
|
private Integer district;
|
||||||
|
|
||||||
@ApiModelProperty("区县名称")
|
@Schema(description = "区县名称")
|
||||||
private String districtName;
|
private String districtName;
|
||||||
|
|
||||||
@ApiModelProperty("详细地址")
|
@Schema(description = "详细地址")
|
||||||
@Length(max = 500, message = "详细地址最多500字符")
|
@Length(max = 500, message = "详细地址最多500字符")
|
||||||
private String address;
|
private String address;
|
||||||
|
|
||||||
@ApiModelProperty("营业执照")
|
@Schema(description = "营业执照")
|
||||||
@JsonSerialize(using = FileKeyVoSerializer.class)
|
@JsonSerialize(using = FileKeyVoSerializer.class)
|
||||||
@JsonDeserialize(using = FileKeyVoDeserializer.class)
|
@JsonDeserialize(using = FileKeyVoDeserializer.class)
|
||||||
private String businessLicense;
|
private String businessLicense;
|
||||||
|
|
||||||
@ApiModelProperty("禁用状态")
|
@Schema(description = "禁用状态")
|
||||||
@NotNull(message = "禁用状态不能为空")
|
@NotNull(message = "禁用状态不能为空")
|
||||||
private Boolean disabledFlag;
|
private Boolean disabledFlag;
|
||||||
|
|
||||||
@ApiModelProperty(value = "创建人", hidden = true)
|
@Schema(description = "创建人", hidden = true)
|
||||||
private Long createUserId;
|
private Long createUserId;
|
||||||
|
|
||||||
@ApiModelProperty(value = "创建人", hidden = true)
|
@Schema(description = "创建人", hidden = true)
|
||||||
private String createUserName;
|
private String createUserName;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
package net.lab1024.sa.admin.module.business.oa.enterprise.domain.form;
|
package net.lab1024.sa.admin.module.business.oa.enterprise.domain.form;
|
||||||
|
|
||||||
import io.swagger.annotations.ApiModelProperty;
|
import io.swagger.v3.oas.annotations.media.Schema;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
|
|
||||||
import javax.validation.constraints.NotEmpty;
|
import javax.validation.constraints.NotEmpty;
|
||||||
@ -14,16 +14,16 @@ import java.util.List;
|
|||||||
* @Date 2022/7/28 20:37:15
|
* @Date 2022/7/28 20:37:15
|
||||||
* @Wechat zhuoda1024
|
* @Wechat zhuoda1024
|
||||||
* @Email lab1024@163.com
|
* @Email lab1024@163.com
|
||||||
* @Copyright 1024创新实验室 ( https://1024lab.net ),2012-2022
|
* @Copyright <a href="https://1024lab.net">1024创新实验室</a>
|
||||||
*/
|
*/
|
||||||
@Data
|
@Data
|
||||||
public class EnterpriseEmployeeForm {
|
public class EnterpriseEmployeeForm {
|
||||||
|
|
||||||
@ApiModelProperty("企业id")
|
@Schema(description = "企业id")
|
||||||
@NotNull(message = "企业id不能为空")
|
@NotNull(message = "企业id不能为空")
|
||||||
private Long enterpriseId;
|
private Long enterpriseId;
|
||||||
|
|
||||||
@ApiModelProperty("员工信息id")
|
@Schema(description = "员工信息id")
|
||||||
@NotEmpty(message = "员工信息id不能为空")
|
@NotEmpty(message = "员工信息id不能为空")
|
||||||
private List<Long> employeeIdList;
|
private List<Long> employeeIdList;
|
||||||
}
|
}
|
@ -1,13 +1,11 @@
|
|||||||
package net.lab1024.sa.admin.module.business.oa.enterprise.domain.form;
|
package net.lab1024.sa.admin.module.business.oa.enterprise.domain.form;
|
||||||
|
|
||||||
import io.swagger.annotations.ApiModelProperty;
|
import io.swagger.v3.oas.annotations.media.Schema;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
import net.lab1024.sa.common.common.domain.PageParam;
|
import net.lab1024.sa.base.common.domain.PageParam;
|
||||||
import org.hibernate.validator.constraints.Length;
|
import org.hibernate.validator.constraints.Length;
|
||||||
|
|
||||||
import javax.validation.constraints.NotNull;
|
import javax.validation.constraints.NotNull;
|
||||||
import javax.validation.constraints.Size;
|
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 查询企业员工
|
* 查询企业员工
|
||||||
@ -16,20 +14,20 @@ import java.util.List;
|
|||||||
* @Date 2021-12-20 21:06:49
|
* @Date 2021-12-20 21:06:49
|
||||||
* @Wechat zhuoda1024
|
* @Wechat zhuoda1024
|
||||||
* @Email lab1024@163.com
|
* @Email lab1024@163.com
|
||||||
* @Copyright 1024创新实验室 ( https://1024lab.net )
|
* @Copyright <a href="https://1024lab.net">1024创新实验室</a>
|
||||||
*/
|
*/
|
||||||
@Data
|
@Data
|
||||||
public class EnterpriseEmployeeQueryForm extends PageParam {
|
public class EnterpriseEmployeeQueryForm extends PageParam {
|
||||||
|
|
||||||
@ApiModelProperty("搜索词")
|
@Schema(description = "搜索词")
|
||||||
@Length(max = 20, message = "搜索词最多20字符")
|
@Length(max = 20, message = "搜索词最多20字符")
|
||||||
private String keyword;
|
private String keyword;
|
||||||
|
|
||||||
@ApiModelProperty("公司Id")
|
@Schema(description = "公司Id")
|
||||||
@NotNull(message = "公司id 不能为空")
|
@NotNull(message = "公司id 不能为空")
|
||||||
private Long enterpriseId;
|
private Long enterpriseId;
|
||||||
|
|
||||||
@ApiModelProperty(value = "删除标识", hidden = true)
|
@Schema(description = "删除标识", hidden = true)
|
||||||
private Boolean deletedFlag;
|
private Boolean deletedFlag;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -1,8 +1,8 @@
|
|||||||
package net.lab1024.sa.admin.module.business.oa.enterprise.domain.form;
|
package net.lab1024.sa.admin.module.business.oa.enterprise.domain.form;
|
||||||
|
|
||||||
import io.swagger.annotations.ApiModelProperty;
|
import io.swagger.v3.oas.annotations.media.Schema;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
import net.lab1024.sa.common.common.domain.PageParam;
|
import net.lab1024.sa.base.common.domain.PageParam;
|
||||||
import org.hibernate.validator.constraints.Length;
|
import org.hibernate.validator.constraints.Length;
|
||||||
|
|
||||||
import java.time.LocalDate;
|
import java.time.LocalDate;
|
||||||
@ -14,25 +14,25 @@ import java.time.LocalDate;
|
|||||||
* @Date 2022/7/28 20:37:15
|
* @Date 2022/7/28 20:37:15
|
||||||
* @Wechat zhuoda1024
|
* @Wechat zhuoda1024
|
||||||
* @Email lab1024@163.com
|
* @Email lab1024@163.com
|
||||||
* @Copyright 1024创新实验室 ( https://1024lab.net ),2012-2022
|
* @Copyright <a href="https://1024lab.net">1024创新实验室</a>
|
||||||
*/
|
*/
|
||||||
@Data
|
@Data
|
||||||
public class EnterpriseQueryForm extends PageParam {
|
public class EnterpriseQueryForm extends PageParam {
|
||||||
|
|
||||||
@ApiModelProperty("关键字")
|
@Schema(description = "关键字")
|
||||||
@Length(max = 200, message = "关键字最多200字符")
|
@Length(max = 200, message = "关键字最多200字符")
|
||||||
private String keywords;
|
private String keywords;
|
||||||
|
|
||||||
@ApiModelProperty("开始时间")
|
@Schema(description = "开始时间")
|
||||||
private LocalDate startTime;
|
private LocalDate startTime;
|
||||||
|
|
||||||
@ApiModelProperty("结束时间")
|
@Schema(description = "结束时间")
|
||||||
private LocalDate endTime;
|
private LocalDate endTime;
|
||||||
|
|
||||||
@ApiModelProperty("禁用状态")
|
@Schema(description = "禁用状态")
|
||||||
private Boolean disabledFlag;
|
private Boolean disabledFlag;
|
||||||
|
|
||||||
@ApiModelProperty(value = "删除状态", hidden = true)
|
@Schema(description = "删除状态", hidden = true)
|
||||||
private Boolean deletedFlag;
|
private Boolean deletedFlag;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
package net.lab1024.sa.admin.module.business.oa.enterprise.domain.form;
|
package net.lab1024.sa.admin.module.business.oa.enterprise.domain.form;
|
||||||
|
|
||||||
import io.swagger.annotations.ApiModelProperty;
|
import io.swagger.v3.oas.annotations.media.Schema;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
|
|
||||||
import javax.validation.constraints.NotNull;
|
import javax.validation.constraints.NotNull;
|
||||||
@ -12,12 +12,12 @@ import javax.validation.constraints.NotNull;
|
|||||||
* @Date 2022/7/28 20:37:15
|
* @Date 2022/7/28 20:37:15
|
||||||
* @Wechat zhuoda1024
|
* @Wechat zhuoda1024
|
||||||
* @Email lab1024@163.com
|
* @Email lab1024@163.com
|
||||||
* @Copyright 1024创新实验室 ( https://1024lab.net ),2012-2022
|
* @Copyright <a href="https://1024lab.net">1024创新实验室</a>
|
||||||
*/
|
*/
|
||||||
@Data
|
@Data
|
||||||
public class EnterpriseUpdateForm extends EnterpriseCreateForm {
|
public class EnterpriseUpdateForm extends EnterpriseCreateForm {
|
||||||
|
|
||||||
@ApiModelProperty("企业ID")
|
@Schema(description = "企业ID")
|
||||||
@NotNull(message = "企业ID不能为空")
|
@NotNull(message = "企业ID不能为空")
|
||||||
private Long enterpriseId;
|
private Long enterpriseId;
|
||||||
}
|
}
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
package net.lab1024.sa.admin.module.business.oa.enterprise.domain.vo;
|
package net.lab1024.sa.admin.module.business.oa.enterprise.domain.vo;
|
||||||
|
|
||||||
import io.swagger.annotations.ApiModelProperty;
|
import io.swagger.v3.oas.annotations.media.Schema;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -10,38 +10,38 @@ import lombok.Data;
|
|||||||
* @Date 2022/7/28 20:37:15
|
* @Date 2022/7/28 20:37:15
|
||||||
* @Wechat zhuoda1024
|
* @Wechat zhuoda1024
|
||||||
* @Email lab1024@163.com
|
* @Email lab1024@163.com
|
||||||
* @Copyright 1024创新实验室 ( https://1024lab.net ),2012-2022
|
* @Copyright <a href="https://1024lab.net">1024创新实验室</a>
|
||||||
*/
|
*/
|
||||||
@Data
|
@Data
|
||||||
public class EnterpriseEmployeeVO {
|
public class EnterpriseEmployeeVO {
|
||||||
|
|
||||||
private Long enterpriseEmployeeId;
|
private Long enterpriseEmployeeId;
|
||||||
|
|
||||||
@ApiModelProperty("企业ID")
|
@Schema(description = "企业ID")
|
||||||
private Long enterpriseId;
|
private Long enterpriseId;
|
||||||
|
|
||||||
@ApiModelProperty("企业名称")
|
@Schema(description = "企业名称")
|
||||||
private String enterpriseName;
|
private String enterpriseName;
|
||||||
|
|
||||||
@ApiModelProperty("员工")
|
@Schema(description = "员工")
|
||||||
private Long employeeId;
|
private Long employeeId;
|
||||||
|
|
||||||
@ApiModelProperty("登录账号")
|
@Schema(description = "登录账号")
|
||||||
private String loginName;
|
private String loginName;
|
||||||
|
|
||||||
@ApiModelProperty("员工名称")
|
@Schema(description = "员工名称")
|
||||||
private String actualName;
|
private String actualName;
|
||||||
|
|
||||||
@ApiModelProperty("手机号码")
|
@Schema(description = "手机号码")
|
||||||
private String phone;
|
private String phone;
|
||||||
|
|
||||||
@ApiModelProperty("部门id")
|
@Schema(description = "部门id")
|
||||||
private Long departmentId;
|
private Long departmentId;
|
||||||
|
|
||||||
@ApiModelProperty("是否被禁用")
|
@Schema(description = "是否被禁用")
|
||||||
private Boolean disabledFlag;
|
private Boolean disabledFlag;
|
||||||
|
|
||||||
@ApiModelProperty("部门名称")
|
@Schema(description = "部门名称")
|
||||||
private String departmentName;
|
private String departmentName;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -0,0 +1,48 @@
|
|||||||
|
package net.lab1024.sa.admin.module.business.oa.enterprise.domain.vo;
|
||||||
|
|
||||||
|
import com.alibaba.excel.annotation.ExcelProperty;
|
||||||
|
import lombok.Data;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 企业信息
|
||||||
|
*
|
||||||
|
* @Author 1024创新实验室: 开云
|
||||||
|
* @Date 2022/7/28 20:37:15
|
||||||
|
* @Wechat zhuoda1024
|
||||||
|
* @Email lab1024@163.com
|
||||||
|
* @Copyright <a href="https://1024lab.net">1024创新实验室</a>
|
||||||
|
*/
|
||||||
|
@Data
|
||||||
|
public class EnterpriseExcelVO {
|
||||||
|
|
||||||
|
@ExcelProperty("企业名称")
|
||||||
|
private String enterpriseName;
|
||||||
|
|
||||||
|
@ExcelProperty("统一社会信用代码")
|
||||||
|
private String unifiedSocialCreditCode;
|
||||||
|
|
||||||
|
@ExcelProperty("企业类型")
|
||||||
|
private String typeName;
|
||||||
|
|
||||||
|
@ExcelProperty("联系人")
|
||||||
|
private String contact;
|
||||||
|
|
||||||
|
@ExcelProperty("联系人电话")
|
||||||
|
private String contactPhone;
|
||||||
|
|
||||||
|
@ExcelProperty("邮箱")
|
||||||
|
private String email;
|
||||||
|
|
||||||
|
@ExcelProperty("省份名称")
|
||||||
|
private String provinceName;
|
||||||
|
|
||||||
|
@ExcelProperty("城市名称")
|
||||||
|
private String cityName;
|
||||||
|
|
||||||
|
@ExcelProperty("区县名称")
|
||||||
|
private String districtName;
|
||||||
|
|
||||||
|
@ExcelProperty("详细地址")
|
||||||
|
private String address;
|
||||||
|
|
||||||
|
}
|
@ -1,6 +1,6 @@
|
|||||||
package net.lab1024.sa.admin.module.business.oa.enterprise.domain.vo;
|
package net.lab1024.sa.admin.module.business.oa.enterprise.domain.vo;
|
||||||
|
|
||||||
import io.swagger.annotations.ApiModelProperty;
|
import io.swagger.v3.oas.annotations.media.Schema;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -12,9 +12,9 @@ import lombok.Data;
|
|||||||
@Data
|
@Data
|
||||||
public class EnterpriseListVO {
|
public class EnterpriseListVO {
|
||||||
|
|
||||||
@ApiModelProperty("企业ID")
|
@Schema(description = "企业ID")
|
||||||
private Long enterpriseId;
|
private Long enterpriseId;
|
||||||
|
|
||||||
@ApiModelProperty("企业名称")
|
@Schema(description = "企业名称")
|
||||||
private String enterpriseName;
|
private String enterpriseName;
|
||||||
}
|
}
|
||||||
|
@ -1,11 +1,11 @@
|
|||||||
package net.lab1024.sa.admin.module.business.oa.enterprise.domain.vo;
|
package net.lab1024.sa.admin.module.business.oa.enterprise.domain.vo;
|
||||||
|
|
||||||
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
|
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
|
||||||
import io.swagger.annotations.ApiModelProperty;
|
import io.swagger.v3.oas.annotations.media.Schema;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
import net.lab1024.sa.admin.module.business.oa.enterprise.constant.EnterpriseTypeEnum;
|
import net.lab1024.sa.admin.module.business.oa.enterprise.constant.EnterpriseTypeEnum;
|
||||||
import net.lab1024.sa.common.common.json.serializer.FileKeyVoSerializer;
|
import net.lab1024.sa.base.common.json.serializer.FileKeyVoSerializer;
|
||||||
import net.lab1024.sa.common.common.swagger.ApiModelPropertyEnum;
|
import net.lab1024.sa.base.common.swagger.SchemaEnum;
|
||||||
|
|
||||||
import java.time.LocalDateTime;
|
import java.time.LocalDateTime;
|
||||||
|
|
||||||
@ -16,74 +16,74 @@ import java.time.LocalDateTime;
|
|||||||
* @Date 2022/7/28 20:37:15
|
* @Date 2022/7/28 20:37:15
|
||||||
* @Wechat zhuoda1024
|
* @Wechat zhuoda1024
|
||||||
* @Email lab1024@163.com
|
* @Email lab1024@163.com
|
||||||
* @Copyright 1024创新实验室 ( https://1024lab.net ),2012-2022
|
* @Copyright <a href="https://1024lab.net">1024创新实验室</a>
|
||||||
*/
|
*/
|
||||||
@Data
|
@Data
|
||||||
public class EnterpriseVO {
|
public class EnterpriseVO {
|
||||||
|
|
||||||
@ApiModelProperty("企业ID")
|
@Schema(description = "企业ID")
|
||||||
private Long enterpriseId;
|
private Long enterpriseId;
|
||||||
|
|
||||||
@ApiModelProperty("企业名称")
|
@Schema(description = "企业名称")
|
||||||
private String enterpriseName;
|
private String enterpriseName;
|
||||||
|
|
||||||
@ApiModelProperty("企业logo")
|
@Schema(description = "企业logo")
|
||||||
@JsonSerialize(using = FileKeyVoSerializer.class)
|
@JsonSerialize(using = FileKeyVoSerializer.class)
|
||||||
private String enterpriseLogo;
|
private String enterpriseLogo;
|
||||||
|
|
||||||
@ApiModelProperty("统一社会信用代码")
|
@Schema(description = "统一社会信用代码")
|
||||||
private String unifiedSocialCreditCode;
|
private String unifiedSocialCreditCode;
|
||||||
|
|
||||||
@ApiModelPropertyEnum(desc = "类型", value = EnterpriseTypeEnum.class)
|
@SchemaEnum(desc = "类型", value = EnterpriseTypeEnum.class)
|
||||||
private Integer type;
|
private Integer type;
|
||||||
|
|
||||||
@ApiModelProperty("联系人")
|
@Schema(description = "联系人")
|
||||||
private String contact;
|
private String contact;
|
||||||
|
|
||||||
@ApiModelProperty("联系人电话")
|
@Schema(description = "联系人电话")
|
||||||
private String contactPhone;
|
private String contactPhone;
|
||||||
|
|
||||||
@ApiModelProperty("邮箱")
|
@Schema(description = "邮箱")
|
||||||
private String email;
|
private String email;
|
||||||
|
|
||||||
@ApiModelProperty("省份")
|
@Schema(description = "省份")
|
||||||
private Integer province;
|
private Integer province;
|
||||||
|
|
||||||
@ApiModelProperty("省份名称")
|
@Schema(description = "省份名称")
|
||||||
private String provinceName;
|
private String provinceName;
|
||||||
|
|
||||||
@ApiModelProperty("城市")
|
@Schema(description = "城市")
|
||||||
private Integer city;
|
private Integer city;
|
||||||
|
|
||||||
@ApiModelProperty("城市名称")
|
@Schema(description = "城市名称")
|
||||||
private String cityName;
|
private String cityName;
|
||||||
|
|
||||||
@ApiModelProperty("区县")
|
@Schema(description = "区县")
|
||||||
private Integer district;
|
private Integer district;
|
||||||
|
|
||||||
@ApiModelProperty("区县名称")
|
@Schema(description = "区县名称")
|
||||||
private String districtName;
|
private String districtName;
|
||||||
|
|
||||||
@ApiModelProperty("详细地址")
|
@Schema(description = "详细地址")
|
||||||
private String address;
|
private String address;
|
||||||
|
|
||||||
@ApiModelProperty("营业执照")
|
@Schema(description = "营业执照")
|
||||||
@JsonSerialize(using = FileKeyVoSerializer.class)
|
@JsonSerialize(using = FileKeyVoSerializer.class)
|
||||||
private String businessLicense;
|
private String businessLicense;
|
||||||
|
|
||||||
@ApiModelProperty("禁用状态")
|
@Schema(description = "禁用状态")
|
||||||
private Boolean disabledFlag;
|
private Boolean disabledFlag;
|
||||||
|
|
||||||
@ApiModelProperty("创建人ID")
|
@Schema(description = "创建人ID")
|
||||||
private Long createUserId;
|
private Long createUserId;
|
||||||
|
|
||||||
@ApiModelProperty("创建人名称")
|
@Schema(description = "创建人名称")
|
||||||
private String createUserName;
|
private String createUserName;
|
||||||
|
|
||||||
@ApiModelProperty("创建时间")
|
@Schema(description = "创建时间")
|
||||||
private LocalDateTime createTime;
|
private LocalDateTime createTime;
|
||||||
|
|
||||||
@ApiModelProperty("更新时间")
|
@Schema(description = "更新时间")
|
||||||
private LocalDateTime updateTime;
|
private LocalDateTime updateTime;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -1,21 +1,21 @@
|
|||||||
package net.lab1024.sa.admin.module.business.oa.invoice;
|
package net.lab1024.sa.admin.module.business.oa.invoice;
|
||||||
|
|
||||||
import io.swagger.annotations.Api;
|
import io.swagger.v3.oas.annotations.tags.Tag;
|
||||||
import io.swagger.annotations.ApiOperation;
|
import io.swagger.v3.oas.annotations.Operation;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import net.lab1024.sa.admin.constant.AdminSwaggerTagConst;
|
import net.lab1024.sa.admin.constant.AdminSwaggerTagConst;
|
||||||
import net.lab1024.sa.admin.module.business.oa.invoice.domain.InvoiceAddForm;
|
import net.lab1024.sa.admin.module.business.oa.invoice.domain.InvoiceAddForm;
|
||||||
import net.lab1024.sa.admin.module.business.oa.invoice.domain.InvoiceQueryForm;
|
import net.lab1024.sa.admin.module.business.oa.invoice.domain.InvoiceQueryForm;
|
||||||
import net.lab1024.sa.admin.module.business.oa.invoice.domain.InvoiceUpdateForm;
|
import net.lab1024.sa.admin.module.business.oa.invoice.domain.InvoiceUpdateForm;
|
||||||
import net.lab1024.sa.admin.module.business.oa.invoice.domain.InvoiceVO;
|
import net.lab1024.sa.admin.module.business.oa.invoice.domain.InvoiceVO;
|
||||||
import net.lab1024.sa.common.common.domain.PageResult;
|
import net.lab1024.sa.base.common.domain.PageResult;
|
||||||
import net.lab1024.sa.common.common.domain.RequestUser;
|
import net.lab1024.sa.base.common.domain.RequestUser;
|
||||||
import net.lab1024.sa.common.common.domain.ResponseDTO;
|
import net.lab1024.sa.base.common.domain.ResponseDTO;
|
||||||
import net.lab1024.sa.common.common.util.SmartRequestUtil;
|
import net.lab1024.sa.base.common.util.SmartRequestUtil;
|
||||||
import net.lab1024.sa.common.module.support.operatelog.annoation.OperateLog;
|
import net.lab1024.sa.base.module.support.operatelog.annotation.OperateLog;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
|
||||||
import org.springframework.web.bind.annotation.*;
|
import org.springframework.web.bind.annotation.*;
|
||||||
|
|
||||||
|
import javax.annotation.Resource;
|
||||||
import javax.validation.Valid;
|
import javax.validation.Valid;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
@ -26,30 +26,29 @@ import java.util.List;
|
|||||||
* @Date 2022-06-23 19:32:59
|
* @Date 2022-06-23 19:32:59
|
||||||
* @Wechat zhuoda1024
|
* @Wechat zhuoda1024
|
||||||
* @Email lab1024@163.com
|
* @Email lab1024@163.com
|
||||||
* @Copyright 1024创新实验室 ( https://1024lab.net ),2012-2022
|
* @Copyright <a href="https://1024lab.net">1024创新实验室</a>
|
||||||
*/
|
*/
|
||||||
@Slf4j
|
@Slf4j
|
||||||
@RestController
|
@RestController
|
||||||
@OperateLog
|
@Tag(name = AdminSwaggerTagConst.Business.OA_INVOICE)
|
||||||
@Api(tags = {AdminSwaggerTagConst.Business.OA_INVOICE})
|
|
||||||
public class InvoiceController {
|
public class InvoiceController {
|
||||||
|
|
||||||
@Autowired
|
@Resource
|
||||||
private InvoiceService invoiceService;
|
private InvoiceService invoiceService;
|
||||||
|
|
||||||
@ApiOperation(value = "分页查询发票信息 @author 善逸")
|
@Operation(summary = "分页查询发票信息 @author 善逸")
|
||||||
@PostMapping("/oa/invoice/page/query")
|
@PostMapping("/oa/invoice/page/query")
|
||||||
public ResponseDTO<PageResult<InvoiceVO>> queryByPage(@RequestBody @Valid InvoiceQueryForm queryDTO) {
|
public ResponseDTO<PageResult<InvoiceVO>> queryByPage(@RequestBody @Valid InvoiceQueryForm queryForm) {
|
||||||
return invoiceService.queryByPage(queryDTO);
|
return invoiceService.queryByPage(queryForm);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ApiOperation(value = "查询发票信息详情 @author 善逸")
|
@Operation(summary = "查询发票信息详情 @author 善逸")
|
||||||
@GetMapping("/oa/invoice/get/{invoiceId}")
|
@GetMapping("/oa/invoice/get/{invoiceId}")
|
||||||
public ResponseDTO<InvoiceVO> getDetail(@PathVariable Long invoiceId) {
|
public ResponseDTO<InvoiceVO> getDetail(@PathVariable Long invoiceId) {
|
||||||
return invoiceService.getDetail(invoiceId);
|
return invoiceService.getDetail(invoiceId);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ApiOperation(value = "新建发票信息 @author 善逸")
|
@Operation(summary = "新建发票信息 @author 善逸")
|
||||||
@PostMapping("/oa/invoice/create")
|
@PostMapping("/oa/invoice/create")
|
||||||
public ResponseDTO<String> createInvoice(@RequestBody @Valid InvoiceAddForm createVO) {
|
public ResponseDTO<String> createInvoice(@RequestBody @Valid InvoiceAddForm createVO) {
|
||||||
RequestUser requestUser = SmartRequestUtil.getRequestUser();
|
RequestUser requestUser = SmartRequestUtil.getRequestUser();
|
||||||
@ -58,19 +57,20 @@ public class InvoiceController {
|
|||||||
return invoiceService.createInvoice(createVO);
|
return invoiceService.createInvoice(createVO);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ApiOperation(value = "编辑发票信息 @author 善逸")
|
@Operation(summary = "编辑发票信息 @author 善逸")
|
||||||
@PostMapping("/oa/invoice/update")
|
@PostMapping("/oa/invoice/update")
|
||||||
|
@OperateLog
|
||||||
public ResponseDTO<String> updateInvoice(@RequestBody @Valid InvoiceUpdateForm updateVO) {
|
public ResponseDTO<String> updateInvoice(@RequestBody @Valid InvoiceUpdateForm updateVO) {
|
||||||
return invoiceService.updateInvoice(updateVO);
|
return invoiceService.updateInvoice(updateVO);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ApiOperation(value = "删除发票信息 @author 善逸")
|
@Operation(summary = "删除发票信息 @author 善逸")
|
||||||
@GetMapping("/invoice/delete/{invoiceId}")
|
@GetMapping("/invoice/delete/{invoiceId}")
|
||||||
public ResponseDTO<String> deleteInvoice(@PathVariable Long invoiceId) {
|
public ResponseDTO<String> deleteInvoice(@PathVariable Long invoiceId) {
|
||||||
return invoiceService.deleteInvoice(invoiceId);
|
return invoiceService.deleteInvoice(invoiceId);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ApiOperation(value = "查询列表 @author lidoudou")
|
@Operation(summary = "查询列表 @author lidoudou")
|
||||||
@GetMapping("/oa/invoice/query/list/{enterpriseId}")
|
@GetMapping("/oa/invoice/query/list/{enterpriseId}")
|
||||||
public ResponseDTO<List<InvoiceVO>> queryList(@PathVariable Long enterpriseId) {
|
public ResponseDTO<List<InvoiceVO>> queryList(@PathVariable Long enterpriseId) {
|
||||||
return invoiceService.queryList(enterpriseId);
|
return invoiceService.queryList(enterpriseId);
|
||||||
|
@ -18,7 +18,7 @@ import java.util.List;
|
|||||||
* @Date 2022-06-23 19:32:59
|
* @Date 2022-06-23 19:32:59
|
||||||
* @Wechat zhuoda1024
|
* @Wechat zhuoda1024
|
||||||
* @Email lab1024@163.com
|
* @Email lab1024@163.com
|
||||||
* @Copyright 1024创新实验室 ( https://1024lab.net ),2012-2022
|
* @Copyright <a href="https://1024lab.net">1024创新实验室</a>
|
||||||
*/
|
*/
|
||||||
@Mapper
|
@Mapper
|
||||||
@Component
|
@Component
|
||||||
|
@ -5,17 +5,17 @@ import lombok.extern.slf4j.Slf4j;
|
|||||||
import net.lab1024.sa.admin.module.business.oa.enterprise.EnterpriseService;
|
import net.lab1024.sa.admin.module.business.oa.enterprise.EnterpriseService;
|
||||||
import net.lab1024.sa.admin.module.business.oa.enterprise.domain.vo.EnterpriseVO;
|
import net.lab1024.sa.admin.module.business.oa.enterprise.domain.vo.EnterpriseVO;
|
||||||
import net.lab1024.sa.admin.module.business.oa.invoice.domain.*;
|
import net.lab1024.sa.admin.module.business.oa.invoice.domain.*;
|
||||||
import net.lab1024.sa.common.common.domain.PageResult;
|
import net.lab1024.sa.base.common.domain.PageResult;
|
||||||
import net.lab1024.sa.common.common.domain.ResponseDTO;
|
import net.lab1024.sa.base.common.domain.ResponseDTO;
|
||||||
import net.lab1024.sa.common.common.util.SmartBeanUtil;
|
import net.lab1024.sa.base.common.util.SmartBeanUtil;
|
||||||
import net.lab1024.sa.common.common.util.SmartPageUtil;
|
import net.lab1024.sa.base.common.util.SmartPageUtil;
|
||||||
import net.lab1024.sa.common.module.support.datatracer.constant.DataTracerConst;
|
import net.lab1024.sa.base.module.support.datatracer.constant.DataTracerConst;
|
||||||
import net.lab1024.sa.common.module.support.datatracer.constant.DataTracerTypeEnum;
|
import net.lab1024.sa.base.module.support.datatracer.constant.DataTracerTypeEnum;
|
||||||
import net.lab1024.sa.common.module.support.datatracer.service.DataTracerService;
|
import net.lab1024.sa.base.module.support.datatracer.service.DataTracerService;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
import org.springframework.transaction.annotation.Transactional;
|
import org.springframework.transaction.annotation.Transactional;
|
||||||
|
|
||||||
|
import javax.annotation.Resource;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Objects;
|
import java.util.Objects;
|
||||||
|
|
||||||
@ -26,32 +26,29 @@ import java.util.Objects;
|
|||||||
* @Date 2022-06-23 19:32:59
|
* @Date 2022-06-23 19:32:59
|
||||||
* @Wechat zhuoda1024
|
* @Wechat zhuoda1024
|
||||||
* @Email lab1024@163.com
|
* @Email lab1024@163.com
|
||||||
* @Copyright 1024创新实验室 ( https://1024lab.net ),2012-2022
|
* @Copyright <a href="https://1024lab.net">1024创新实验室</a>
|
||||||
*/
|
*/
|
||||||
@Service
|
@Service
|
||||||
@Slf4j
|
@Slf4j
|
||||||
public class InvoiceService {
|
public class InvoiceService {
|
||||||
|
|
||||||
@Autowired
|
@Resource
|
||||||
private InvoiceDao invoiceDao;
|
private InvoiceDao invoiceDao;
|
||||||
|
|
||||||
@Autowired
|
@Resource
|
||||||
private EnterpriseService enterpriseService;
|
private EnterpriseService enterpriseService;
|
||||||
|
|
||||||
@Autowired
|
@Resource
|
||||||
private DataTracerService dataTracerService;
|
private DataTracerService dataTracerService;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 分页查询发票信息
|
* 分页查询发票信息
|
||||||
*
|
|
||||||
* @param queryDTO
|
|
||||||
* @return
|
|
||||||
*/
|
*/
|
||||||
public ResponseDTO<PageResult<InvoiceVO>> queryByPage(InvoiceQueryForm queryDTO) {
|
public ResponseDTO<PageResult<InvoiceVO>> queryByPage(InvoiceQueryForm queryForm) {
|
||||||
queryDTO.setDeletedFlag(Boolean.FALSE);
|
queryForm.setDeletedFlag(Boolean.FALSE);
|
||||||
Page<?> page = SmartPageUtil.convert2PageQuery(queryDTO);
|
Page<?> page = SmartPageUtil.convert2PageQuery(queryForm);
|
||||||
List<InvoiceVO> invoiceVOS = invoiceDao.queryPage(page, queryDTO);
|
List<InvoiceVO> invoiceList = invoiceDao.queryPage(page, queryForm);
|
||||||
PageResult<InvoiceVO> pageResult = SmartPageUtil.convert2PageResult(page, invoiceVOS);
|
PageResult<InvoiceVO> pageResult = SmartPageUtil.convert2PageResult(page, invoiceList);
|
||||||
return ResponseDTO.ok(pageResult);
|
return ResponseDTO.ok(pageResult);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -66,9 +63,6 @@ public class InvoiceService {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* 查询发票信息详情
|
* 查询发票信息详情
|
||||||
*
|
|
||||||
* @param invoiceId
|
|
||||||
* @return
|
|
||||||
*/
|
*/
|
||||||
public ResponseDTO<InvoiceVO> getDetail(Long invoiceId) {
|
public ResponseDTO<InvoiceVO> getDetail(Long invoiceId) {
|
||||||
// 校验发票信息是否存在
|
// 校验发票信息是否存在
|
||||||
@ -81,9 +75,6 @@ public class InvoiceService {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* 新建发票信息
|
* 新建发票信息
|
||||||
*
|
|
||||||
* @param createVO
|
|
||||||
* @return
|
|
||||||
*/
|
*/
|
||||||
@Transactional(rollbackFor = Exception.class)
|
@Transactional(rollbackFor = Exception.class)
|
||||||
public ResponseDTO<String> createInvoice(InvoiceAddForm createVO) {
|
public ResponseDTO<String> createInvoice(InvoiceAddForm createVO) {
|
||||||
@ -107,9 +98,6 @@ public class InvoiceService {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* 编辑发票信息
|
* 编辑发票信息
|
||||||
*
|
|
||||||
* @param updateVO
|
|
||||||
* @return
|
|
||||||
*/
|
*/
|
||||||
@Transactional(rollbackFor = Exception.class)
|
@Transactional(rollbackFor = Exception.class)
|
||||||
public ResponseDTO<String> updateInvoice(InvoiceUpdateForm updateVO) {
|
public ResponseDTO<String> updateInvoice(InvoiceUpdateForm updateVO) {
|
||||||
@ -140,9 +128,6 @@ public class InvoiceService {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* 删除发票信息
|
* 删除发票信息
|
||||||
|
|
||||||
* @param invoiceId
|
|
||||||
* @return
|
|
||||||
*/
|
*/
|
||||||
@Transactional(rollbackFor = Exception.class)
|
@Transactional(rollbackFor = Exception.class)
|
||||||
public ResponseDTO<String> deleteInvoice(Long invoiceId) {
|
public ResponseDTO<String> deleteInvoice(Long invoiceId) {
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
package net.lab1024.sa.admin.module.business.oa.invoice.domain;
|
package net.lab1024.sa.admin.module.business.oa.invoice.domain;
|
||||||
|
|
||||||
import io.swagger.annotations.ApiModelProperty;
|
import io.swagger.v3.oas.annotations.media.Schema;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
import org.hibernate.validator.constraints.Length;
|
import org.hibernate.validator.constraints.Length;
|
||||||
|
|
||||||
@ -14,46 +14,46 @@ import javax.validation.constraints.NotNull;
|
|||||||
* @Date 2022-06-23 19:32:59
|
* @Date 2022-06-23 19:32:59
|
||||||
* @Wechat zhuoda1024
|
* @Wechat zhuoda1024
|
||||||
* @Email lab1024@163.com
|
* @Email lab1024@163.com
|
||||||
* @Copyright 1024创新实验室 ( https://1024lab.net ),2012-2022
|
* @Copyright <a href="https://1024lab.net">1024创新实验室</a>
|
||||||
*/
|
*/
|
||||||
@Data
|
@Data
|
||||||
public class InvoiceAddForm {
|
public class InvoiceAddForm {
|
||||||
|
|
||||||
@ApiModelProperty("开票抬头")
|
@Schema(description = "开票抬头")
|
||||||
@NotBlank(message = "开票抬头不能为空")
|
@NotBlank(message = "开票抬头不能为空")
|
||||||
@Length(max = 200, message = "开票抬头最多200字符")
|
@Length(max = 200, message = "开票抬头最多200字符")
|
||||||
private String invoiceHeads;
|
private String invoiceHeads;
|
||||||
|
|
||||||
@ApiModelProperty("纳税人识别号")
|
@Schema(description = "纳税人识别号")
|
||||||
@NotBlank(message = "纳税人识别号不能为空")
|
@NotBlank(message = "纳税人识别号不能为空")
|
||||||
@Length(max = 200, message = "纳税人识别号最多200字符")
|
@Length(max = 200, message = "纳税人识别号最多200字符")
|
||||||
private String taxpayerIdentificationNumber;
|
private String taxpayerIdentificationNumber;
|
||||||
|
|
||||||
@ApiModelProperty("银行账户")
|
@Schema(description = "银行账户")
|
||||||
@NotBlank(message = "银行账户不能为空")
|
@NotBlank(message = "银行账户不能为空")
|
||||||
@Length(max = 200, message = "银行账户最多200字符")
|
@Length(max = 200, message = "银行账户最多200字符")
|
||||||
private String accountNumber;
|
private String accountNumber;
|
||||||
|
|
||||||
@ApiModelProperty("开户行")
|
@Schema(description = "开户行")
|
||||||
@NotBlank(message = "开户行不能为空")
|
@NotBlank(message = "开户行不能为空")
|
||||||
@Length(max = 200, message = "开户行最多200字符")
|
@Length(max = 200, message = "开户行最多200字符")
|
||||||
private String bankName;
|
private String bankName;
|
||||||
|
|
||||||
@ApiModelProperty("启用状态")
|
@Schema(description = "启用状态")
|
||||||
@NotNull(message = "启用状态不能为空")
|
@NotNull(message = "启用状态不能为空")
|
||||||
private Boolean disabledFlag;
|
private Boolean disabledFlag;
|
||||||
|
|
||||||
@ApiModelProperty("备注")
|
@Schema(description = "备注")
|
||||||
@Length(max = 500, message = "备注最多500字符")
|
@Length(max = 500, message = "备注最多500字符")
|
||||||
private String remark;
|
private String remark;
|
||||||
|
|
||||||
@ApiModelProperty("企业")
|
@Schema(description = "企业")
|
||||||
@NotNull(message = "企业不能为空")
|
@NotNull(message = "企业不能为空")
|
||||||
private Long enterpriseId;
|
private Long enterpriseId;
|
||||||
|
|
||||||
@ApiModelProperty(value = "创建人", hidden = true)
|
@Schema(description = "创建人", hidden = true)
|
||||||
private Long createUserId;
|
private Long createUserId;
|
||||||
|
|
||||||
@ApiModelProperty(value = "创建人名称", hidden = true)
|
@Schema(description = "创建人名称", hidden = true)
|
||||||
private String createUserName;
|
private String createUserName;
|
||||||
}
|
}
|
||||||
|
@ -4,7 +4,7 @@ import com.baomidou.mybatisplus.annotation.IdType;
|
|||||||
import com.baomidou.mybatisplus.annotation.TableId;
|
import com.baomidou.mybatisplus.annotation.TableId;
|
||||||
import com.baomidou.mybatisplus.annotation.TableName;
|
import com.baomidou.mybatisplus.annotation.TableName;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
import net.lab1024.sa.common.module.support.datatracer.annoation.DataTracerFieldLabel;
|
import net.lab1024.sa.base.module.support.datatracer.annoation.DataTracerFieldLabel;
|
||||||
|
|
||||||
import java.time.LocalDateTime;
|
import java.time.LocalDateTime;
|
||||||
|
|
||||||
@ -15,7 +15,7 @@ import java.time.LocalDateTime;
|
|||||||
* @Date 2022-06-23 19:32:59
|
* @Date 2022-06-23 19:32:59
|
||||||
* @Wechat zhuoda1024
|
* @Wechat zhuoda1024
|
||||||
* @Email lab1024@163.com
|
* @Email lab1024@163.com
|
||||||
* @Copyright 1024创新实验室 ( https://1024lab.net ),2012-2022
|
* @Copyright <a href="https://1024lab.net">1024创新实验室</a>
|
||||||
*/
|
*/
|
||||||
@Data
|
@Data
|
||||||
@TableName("t_oa_invoice")
|
@TableName("t_oa_invoice")
|
||||||
|
@ -1,8 +1,8 @@
|
|||||||
package net.lab1024.sa.admin.module.business.oa.invoice.domain;
|
package net.lab1024.sa.admin.module.business.oa.invoice.domain;
|
||||||
|
|
||||||
import io.swagger.annotations.ApiModelProperty;
|
import io.swagger.v3.oas.annotations.media.Schema;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
import net.lab1024.sa.common.common.domain.PageParam;
|
import net.lab1024.sa.base.common.domain.PageParam;
|
||||||
import org.hibernate.validator.constraints.Length;
|
import org.hibernate.validator.constraints.Length;
|
||||||
|
|
||||||
import java.time.LocalDate;
|
import java.time.LocalDate;
|
||||||
@ -14,27 +14,27 @@ import java.time.LocalDate;
|
|||||||
* @Date 2022-06-23 19:32:59
|
* @Date 2022-06-23 19:32:59
|
||||||
* @Wechat zhuoda1024
|
* @Wechat zhuoda1024
|
||||||
* @Email lab1024@163.com
|
* @Email lab1024@163.com
|
||||||
* @Copyright 1024创新实验室 ( https://1024lab.net ),2012-2022
|
* @Copyright <a href="https://1024lab.net">1024创新实验室</a>
|
||||||
*/
|
*/
|
||||||
@Data
|
@Data
|
||||||
public class InvoiceQueryForm extends PageParam {
|
public class InvoiceQueryForm extends PageParam {
|
||||||
|
|
||||||
@ApiModelProperty("企业ID")
|
@Schema(description = "企业ID")
|
||||||
private Long enterpriseId;
|
private Long enterpriseId;
|
||||||
|
|
||||||
@ApiModelProperty("关键字")
|
@Schema(description = "关键字")
|
||||||
@Length(max = 200, message = "关键字最多200字符")
|
@Length(max = 200, message = "关键字最多200字符")
|
||||||
private String keywords;
|
private String keywords;
|
||||||
|
|
||||||
@ApiModelProperty("开始时间")
|
@Schema(description = "开始时间")
|
||||||
private LocalDate startTime;
|
private LocalDate startTime;
|
||||||
|
|
||||||
@ApiModelProperty("结束时间")
|
@Schema(description = "结束时间")
|
||||||
private LocalDate endTime;
|
private LocalDate endTime;
|
||||||
|
|
||||||
@ApiModelProperty("禁用状态")
|
@Schema(description = "禁用状态")
|
||||||
private Boolean disabledFlag;
|
private Boolean disabledFlag;
|
||||||
|
|
||||||
@ApiModelProperty(value = "删除状态", hidden = true)
|
@Schema(description = "删除状态", hidden = true)
|
||||||
private Boolean deletedFlag;
|
private Boolean deletedFlag;
|
||||||
}
|
}
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
package net.lab1024.sa.admin.module.business.oa.invoice.domain;
|
package net.lab1024.sa.admin.module.business.oa.invoice.domain;
|
||||||
|
|
||||||
import io.swagger.annotations.ApiModelProperty;
|
import io.swagger.v3.oas.annotations.media.Schema;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
|
|
||||||
import javax.validation.constraints.NotNull;
|
import javax.validation.constraints.NotNull;
|
||||||
@ -12,12 +12,12 @@ import javax.validation.constraints.NotNull;
|
|||||||
* @Date 2022-06-23 19:32:59
|
* @Date 2022-06-23 19:32:59
|
||||||
* @Wechat zhuoda1024
|
* @Wechat zhuoda1024
|
||||||
* @Email lab1024@163.com
|
* @Email lab1024@163.com
|
||||||
* @Copyright 1024创新实验室 ( https://1024lab.net ),2012-2022
|
* @Copyright <a href="https://1024lab.net">1024创新实验室</a>
|
||||||
*/
|
*/
|
||||||
@Data
|
@Data
|
||||||
public class InvoiceUpdateForm extends InvoiceAddForm {
|
public class InvoiceUpdateForm extends InvoiceAddForm {
|
||||||
|
|
||||||
@ApiModelProperty("发票信息ID")
|
@Schema(description = "发票信息ID")
|
||||||
@NotNull(message = "发票信息ID不能为空")
|
@NotNull(message = "发票信息ID不能为空")
|
||||||
private Long invoiceId;
|
private Long invoiceId;
|
||||||
}
|
}
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
package net.lab1024.sa.admin.module.business.oa.invoice.domain;
|
package net.lab1024.sa.admin.module.business.oa.invoice.domain;
|
||||||
|
|
||||||
import io.swagger.annotations.ApiModelProperty;
|
import io.swagger.v3.oas.annotations.media.Schema;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
|
|
||||||
import java.time.LocalDateTime;
|
import java.time.LocalDateTime;
|
||||||
@ -12,47 +12,47 @@ import java.time.LocalDateTime;
|
|||||||
* @Date 2022-06-23 19:32:59
|
* @Date 2022-06-23 19:32:59
|
||||||
* @Wechat zhuoda1024
|
* @Wechat zhuoda1024
|
||||||
* @Email lab1024@163.com
|
* @Email lab1024@163.com
|
||||||
* @Copyright 1024创新实验室 ( https://1024lab.net ),2012-2022
|
* @Copyright <a href="https://1024lab.net">1024创新实验室</a>
|
||||||
*/
|
*/
|
||||||
@Data
|
@Data
|
||||||
public class InvoiceVO {
|
public class InvoiceVO {
|
||||||
|
|
||||||
@ApiModelProperty("发票信息ID")
|
@Schema(description = "发票信息ID")
|
||||||
private Long invoiceId;
|
private Long invoiceId;
|
||||||
|
|
||||||
@ApiModelProperty("开票抬头")
|
@Schema(description = "开票抬头")
|
||||||
private String invoiceHeads;
|
private String invoiceHeads;
|
||||||
|
|
||||||
@ApiModelProperty("纳税人识别号")
|
@Schema(description = "纳税人识别号")
|
||||||
private String taxpayerIdentificationNumber;
|
private String taxpayerIdentificationNumber;
|
||||||
|
|
||||||
@ApiModelProperty("银行账户")
|
@Schema(description = "银行账户")
|
||||||
private String accountNumber;
|
private String accountNumber;
|
||||||
|
|
||||||
@ApiModelProperty("开户行")
|
@Schema(description = "开户行")
|
||||||
private String bankName;
|
private String bankName;
|
||||||
|
|
||||||
@ApiModelProperty("备注")
|
@Schema(description = "备注")
|
||||||
private String remark;
|
private String remark;
|
||||||
|
|
||||||
@ApiModelProperty("企业")
|
@Schema(description = "企业")
|
||||||
private Long enterpriseId;
|
private Long enterpriseId;
|
||||||
|
|
||||||
@ApiModelProperty("企业名称")
|
@Schema(description = "企业名称")
|
||||||
private String enterpriseName;
|
private String enterpriseName;
|
||||||
|
|
||||||
@ApiModelProperty("禁用状态")
|
@Schema(description = "禁用状态")
|
||||||
private Boolean disabledFlag;
|
private Boolean disabledFlag;
|
||||||
|
|
||||||
@ApiModelProperty("创建人ID")
|
@Schema(description = "创建人ID")
|
||||||
private Long createUserId;
|
private Long createUserId;
|
||||||
|
|
||||||
@ApiModelProperty("创建人名称")
|
@Schema(description = "创建人名称")
|
||||||
private String createUserName;
|
private String createUserName;
|
||||||
|
|
||||||
@ApiModelProperty("创建时间")
|
@Schema(description = "创建时间")
|
||||||
private LocalDateTime createTime;
|
private LocalDateTime createTime;
|
||||||
|
|
||||||
@ApiModelProperty("更新时间")
|
@Schema(description = "更新时间")
|
||||||
private LocalDateTime updateTime;
|
private LocalDateTime updateTime;
|
||||||
}
|
}
|
||||||
|
@ -3,7 +3,7 @@ package net.lab1024.sa.admin.module.business.oa.notice.constant;
|
|||||||
|
|
||||||
import lombok.AllArgsConstructor;
|
import lombok.AllArgsConstructor;
|
||||||
import lombok.Getter;
|
import lombok.Getter;
|
||||||
import net.lab1024.sa.common.common.enumeration.BaseEnum;
|
import net.lab1024.sa.base.common.enumeration.BaseEnum;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 公告、通知 可见范围类型
|
* 公告、通知 可见范围类型
|
||||||
@ -12,14 +12,20 @@ import net.lab1024.sa.common.common.enumeration.BaseEnum;
|
|||||||
* @Date 2022-08-12 21:40:39
|
* @Date 2022-08-12 21:40:39
|
||||||
* @Wechat zhuoda1024
|
* @Wechat zhuoda1024
|
||||||
* @Email lab1024@163.com
|
* @Email lab1024@163.com
|
||||||
* @Copyright 1024创新实验室 ( https://1024lab.net ),2012-2022
|
* @Copyright <a href="https://1024lab.net">1024创新实验室</a>
|
||||||
*/
|
*/
|
||||||
@Getter
|
@Getter
|
||||||
@AllArgsConstructor
|
@AllArgsConstructor
|
||||||
public enum NoticeVisibleRangeDataTypeEnum implements BaseEnum {
|
public enum NoticeVisibleRangeDataTypeEnum implements BaseEnum {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 员工
|
||||||
|
*/
|
||||||
EMPLOYEE(1, "员工"),
|
EMPLOYEE(1, "员工"),
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 部门
|
||||||
|
*/
|
||||||
DEPARTMENT(2, "部门"),
|
DEPARTMENT(2, "部门"),
|
||||||
|
|
||||||
;
|
;
|
||||||
|
@ -1,22 +1,23 @@
|
|||||||
package net.lab1024.sa.admin.module.business.oa.notice.controller;
|
package net.lab1024.sa.admin.module.business.oa.notice.controller;
|
||||||
|
|
||||||
|
import cn.dev33.satoken.annotation.SaCheckPermission;
|
||||||
import cn.hutool.extra.servlet.ServletUtil;
|
import cn.hutool.extra.servlet.ServletUtil;
|
||||||
import io.swagger.annotations.Api;
|
import io.swagger.v3.oas.annotations.tags.Tag;
|
||||||
import io.swagger.annotations.ApiOperation;
|
import io.swagger.v3.oas.annotations.Operation;
|
||||||
import net.lab1024.sa.admin.constant.AdminSwaggerTagConst;
|
import net.lab1024.sa.admin.constant.AdminSwaggerTagConst;
|
||||||
import net.lab1024.sa.admin.module.business.oa.notice.domain.form.*;
|
import net.lab1024.sa.admin.module.business.oa.notice.domain.form.*;
|
||||||
import net.lab1024.sa.admin.module.business.oa.notice.domain.vo.*;
|
import net.lab1024.sa.admin.module.business.oa.notice.domain.vo.*;
|
||||||
import net.lab1024.sa.admin.module.business.oa.notice.service.NoticeEmployeeService;
|
import net.lab1024.sa.admin.module.business.oa.notice.service.NoticeEmployeeService;
|
||||||
import net.lab1024.sa.admin.module.business.oa.notice.service.NoticeService;
|
import net.lab1024.sa.admin.module.business.oa.notice.service.NoticeService;
|
||||||
import net.lab1024.sa.admin.module.business.oa.notice.service.NoticeTypeService;
|
import net.lab1024.sa.admin.module.business.oa.notice.service.NoticeTypeService;
|
||||||
import net.lab1024.sa.common.common.annoation.SaAuth;
|
import net.lab1024.sa.base.common.domain.PageResult;
|
||||||
import net.lab1024.sa.common.common.domain.PageResult;
|
import net.lab1024.sa.base.common.domain.ResponseDTO;
|
||||||
import net.lab1024.sa.common.common.domain.ResponseDTO;
|
import net.lab1024.sa.base.common.util.SmartRequestUtil;
|
||||||
import net.lab1024.sa.common.common.util.SmartRequestUtil;
|
import net.lab1024.sa.base.module.support.operatelog.annotation.OperateLog;
|
||||||
import net.lab1024.sa.common.module.support.repeatsubmit.annoation.RepeatSubmit;
|
import net.lab1024.sa.base.module.support.repeatsubmit.annoation.RepeatSubmit;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
|
||||||
import org.springframework.web.bind.annotation.*;
|
import org.springframework.web.bind.annotation.*;
|
||||||
|
|
||||||
|
import javax.annotation.Resource;
|
||||||
import javax.servlet.http.HttpServletRequest;
|
import javax.servlet.http.HttpServletRequest;
|
||||||
import javax.validation.Valid;
|
import javax.validation.Valid;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
@ -28,42 +29,43 @@ import java.util.List;
|
|||||||
* @Date 2022-08-12 21:40:39
|
* @Date 2022-08-12 21:40:39
|
||||||
* @Wechat 卓大1024
|
* @Wechat 卓大1024
|
||||||
* @Email lab1024@163.com
|
* @Email lab1024@163.com
|
||||||
* @Copyright 1024创新实验室 ( https://1024lab.net ),2012-2022
|
* @Copyright <a href="https://1024lab.net">1024创新实验室</a>
|
||||||
*/
|
*/
|
||||||
@Api(tags = AdminSwaggerTagConst.Business.OA_NOTICE)
|
@Tag(name = AdminSwaggerTagConst.Business.OA_NOTICE)
|
||||||
@RestController
|
@RestController
|
||||||
|
@OperateLog
|
||||||
public class NoticeController {
|
public class NoticeController {
|
||||||
|
|
||||||
@Autowired
|
@Resource
|
||||||
private NoticeService noticeService;
|
private NoticeService noticeService;
|
||||||
|
|
||||||
@Autowired
|
@Resource
|
||||||
private NoticeTypeService noticeTypeService;
|
private NoticeTypeService noticeTypeService;
|
||||||
|
|
||||||
@Autowired
|
@Resource
|
||||||
private NoticeEmployeeService noticeEmployeeService;
|
private NoticeEmployeeService noticeEmployeeService;
|
||||||
|
|
||||||
// --------------------- 通知公告类型 -------------------------
|
// --------------------- 通知公告类型 -------------------------
|
||||||
|
|
||||||
@ApiOperation("通知公告类型-获取全部 @author 卓大")
|
@Operation(summary = "通知公告类型-获取全部 @author 卓大")
|
||||||
@GetMapping("/oa/noticeType/getAll")
|
@GetMapping("/oa/noticeType/getAll")
|
||||||
public ResponseDTO<List<NoticeTypeVO>> getAll() {
|
public ResponseDTO<List<NoticeTypeVO>> getAll() {
|
||||||
return ResponseDTO.ok(noticeTypeService.getAll());
|
return ResponseDTO.ok(noticeTypeService.getAll());
|
||||||
}
|
}
|
||||||
|
|
||||||
@ApiOperation("通知公告类型-添加 @author 卓大")
|
@Operation(summary = "通知公告类型-添加 @author 卓大")
|
||||||
@GetMapping("/oa/noticeType/add/{name}")
|
@GetMapping("/oa/noticeType/add/{name}")
|
||||||
public ResponseDTO<String> add(@PathVariable String name) {
|
public ResponseDTO<String> add(@PathVariable String name) {
|
||||||
return noticeTypeService.add(name);
|
return noticeTypeService.add(name);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ApiOperation("通知公告类型-修改 @author 卓大")
|
@Operation(summary = "通知公告类型-修改 @author 卓大")
|
||||||
@GetMapping("/oa/noticeType/update/{noticeTypeId}/{name}")
|
@GetMapping("/oa/noticeType/update/{noticeTypeId}/{name}")
|
||||||
public ResponseDTO<String> update(@PathVariable Long noticeTypeId, @PathVariable String name) {
|
public ResponseDTO<String> update(@PathVariable Long noticeTypeId, @PathVariable String name) {
|
||||||
return noticeTypeService.update(noticeTypeId, name);
|
return noticeTypeService.update(noticeTypeId, name);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ApiOperation("通知公告类型-删除 @author 卓大")
|
@Operation(summary = "通知公告类型-删除 @author 卓大")
|
||||||
@GetMapping("/oa/noticeType/delete/{noticeTypeId}")
|
@GetMapping("/oa/noticeType/delete/{noticeTypeId}")
|
||||||
public ResponseDTO<String> deleteNoticeType(@PathVariable Long noticeTypeId) {
|
public ResponseDTO<String> deleteNoticeType(@PathVariable Long noticeTypeId) {
|
||||||
return noticeTypeService.delete(noticeTypeId);
|
return noticeTypeService.delete(noticeTypeId);
|
||||||
@ -71,46 +73,49 @@ public class NoticeController {
|
|||||||
|
|
||||||
// --------------------- 【管理】通知公告-------------------------
|
// --------------------- 【管理】通知公告-------------------------
|
||||||
|
|
||||||
@ApiOperation("【管理】通知公告-分页查询 @author 卓大")
|
|
||||||
|
@Operation(summary = "【管理】通知公告-分页查询 @author 卓大")
|
||||||
@PostMapping("/oa/notice/query")
|
@PostMapping("/oa/notice/query")
|
||||||
@SaAuth
|
@SaCheckPermission("oa:notice:query")
|
||||||
public ResponseDTO<PageResult<NoticeVO>> query(@RequestBody @Valid NoticeQueryForm queryForm) {
|
public ResponseDTO<PageResult<NoticeVO>> query(@RequestBody @Valid NoticeQueryForm queryForm) {
|
||||||
return ResponseDTO.ok(noticeService.query(queryForm));
|
return ResponseDTO.ok(noticeService.query(queryForm));
|
||||||
}
|
}
|
||||||
|
|
||||||
@ApiOperation("【管理】通知公告-添加 @author 卓大")
|
@Operation(summary = "【管理】通知公告-添加 @author 卓大")
|
||||||
@PostMapping("/oa/notice/add")
|
@PostMapping("/oa/notice/add")
|
||||||
@RepeatSubmit
|
@RepeatSubmit
|
||||||
@SaAuth
|
@SaCheckPermission("oa:notice:add")
|
||||||
public ResponseDTO<String> add(@RequestBody @Valid NoticeAddForm addForm) {
|
public ResponseDTO<String> add(@RequestBody @Valid NoticeAddForm addForm) {
|
||||||
addForm.setCreateUserId(SmartRequestUtil.getRequestUserId());
|
addForm.setCreateUserId(SmartRequestUtil.getRequestUserId());
|
||||||
return noticeService.add(addForm);
|
return noticeService.add(addForm);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ApiOperation("【管理】通知公告-更新 @author 卓大")
|
@Operation(summary = "【管理】通知公告-更新 @author 卓大")
|
||||||
@PostMapping("/oa/notice/update")
|
@PostMapping("/oa/notice/update")
|
||||||
@RepeatSubmit
|
@RepeatSubmit
|
||||||
@SaAuth
|
@SaCheckPermission("oa:notice:update")
|
||||||
public ResponseDTO<String> update(@RequestBody @Valid NoticeUpdateForm updateForm) {
|
public ResponseDTO<String> update(@RequestBody @Valid NoticeUpdateForm updateForm) {
|
||||||
return noticeService.update(updateForm);
|
return noticeService.update(updateForm);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ApiOperation("【管理】通知公告-更新详情 @author 卓大")
|
@Operation(summary = "【管理】通知公告-更新详情 @author 卓大")
|
||||||
@GetMapping("/oa/notice/getUpdateVO/{noticeId}")
|
@GetMapping("/oa/notice/getUpdateVO/{noticeId}")
|
||||||
@SaAuth
|
@SaCheckPermission("oa:notice:update")
|
||||||
public ResponseDTO<NoticeUpdateFormVO> getUpdateFormVO(@PathVariable Long noticeId) {
|
public ResponseDTO<NoticeUpdateFormVO> getUpdateFormVO(@PathVariable Long noticeId) {
|
||||||
return ResponseDTO.ok(noticeService.getUpdateFormVO(noticeId));
|
return ResponseDTO.ok(noticeService.getUpdateFormVO(noticeId));
|
||||||
}
|
}
|
||||||
|
|
||||||
@ApiOperation("【管理】通知公告-删除 @author 卓大")
|
@Operation(summary = "【管理】通知公告-删除 @author 卓大")
|
||||||
@GetMapping("/oa/notice/delete/{noticeId}")
|
@GetMapping("/oa/notice/delete/{noticeId}")
|
||||||
@SaAuth
|
@SaCheckPermission("oa:notice:delete")
|
||||||
public ResponseDTO<String> delete(@PathVariable Long noticeId) {
|
public ResponseDTO<String> delete(@PathVariable Long noticeId) {
|
||||||
return noticeService.delete(noticeId);
|
return noticeService.delete(noticeId);
|
||||||
}
|
}
|
||||||
|
|
||||||
// --------------------- 【员工】查看 通知公告 -------------------------
|
// --------------------- 【员工】查看 通知公告 -------------------------
|
||||||
@ApiOperation("【员工】通知公告-查看详情 @author 卓大")
|
|
||||||
|
|
||||||
|
@Operation(summary = "【员工】通知公告-查看详情 @author 卓大")
|
||||||
@GetMapping("/oa/notice/employee/view/{noticeId}")
|
@GetMapping("/oa/notice/employee/view/{noticeId}")
|
||||||
public ResponseDTO<NoticeDetailVO> view(@PathVariable Long noticeId, HttpServletRequest request) {
|
public ResponseDTO<NoticeDetailVO> view(@PathVariable Long noticeId, HttpServletRequest request) {
|
||||||
return noticeEmployeeService.view(
|
return noticeEmployeeService.view(
|
||||||
@ -121,13 +126,13 @@ public class NoticeController {
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ApiOperation("【员工】通知公告-查询全部 @author 卓大")
|
@Operation(summary = "【员工】通知公告-查询全部 @author 卓大")
|
||||||
@PostMapping("/oa/notice/employee/query")
|
@PostMapping("/oa/notice/employee/query")
|
||||||
public ResponseDTO<PageResult<NoticeEmployeeVO>> queryEmployeeNotice(@RequestBody @Valid NoticeEmployeeQueryForm noticeEmployeeQueryForm) {
|
public ResponseDTO<PageResult<NoticeEmployeeVO>> queryEmployeeNotice(@RequestBody @Valid NoticeEmployeeQueryForm noticeEmployeeQueryForm) {
|
||||||
return noticeEmployeeService.queryList(SmartRequestUtil.getRequestUserId(), noticeEmployeeQueryForm);
|
return noticeEmployeeService.queryList(SmartRequestUtil.getRequestUserId(), noticeEmployeeQueryForm);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ApiOperation("【员工】通知公告-查询 查看记录 @author 卓大")
|
@Operation(summary = "【员工】通知公告-查询 查看记录 @author 卓大")
|
||||||
@PostMapping("/oa/notice/employee/queryViewRecord")
|
@PostMapping("/oa/notice/employee/queryViewRecord")
|
||||||
public ResponseDTO<PageResult<NoticeViewRecordVO>> queryViewRecord(@RequestBody @Valid NoticeViewRecordQueryForm noticeViewRecordQueryForm) {
|
public ResponseDTO<PageResult<NoticeViewRecordVO>> queryViewRecord(@RequestBody @Valid NoticeViewRecordQueryForm noticeViewRecordQueryForm) {
|
||||||
return ResponseDTO.ok(noticeEmployeeService.queryViewRecord(noticeViewRecordQueryForm));
|
return ResponseDTO.ok(noticeEmployeeService.queryViewRecord(noticeViewRecordQueryForm));
|
||||||
|
@ -24,7 +24,7 @@ import java.util.List;
|
|||||||
* @Date 2022-08-12 21:40:39
|
* @Date 2022-08-12 21:40:39
|
||||||
* @Wechat zhuoda1024
|
* @Wechat zhuoda1024
|
||||||
* @Email lab1024@163.com
|
* @Email lab1024@163.com
|
||||||
* @Copyright 1024创新实验室 ( https://1024lab.net ),2012-2022
|
* @Copyright <a href="https://1024lab.net">1024创新实验室</a>
|
||||||
*/
|
*/
|
||||||
@Mapper
|
@Mapper
|
||||||
@Component
|
@Component
|
||||||
@ -35,22 +35,18 @@ public interface NoticeDao extends BaseMapper<NoticeEntity> {
|
|||||||
/**
|
/**
|
||||||
* 保存可见范围
|
* 保存可见范围
|
||||||
*
|
*
|
||||||
* @param noticeId
|
|
||||||
* @param visibleRangeFormList
|
|
||||||
*/
|
*/
|
||||||
void insertVisibleRange(@Param("noticeId") Long noticeId, @Param("visibleRangeFormList") List<NoticeVisibleRangeForm> visibleRangeFormList);
|
void insertVisibleRange(@Param("noticeId") Long noticeId, @Param("visibleRangeFormList") List<NoticeVisibleRangeForm> visibleRangeFormList);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 删除可见范围
|
* 删除可见范围
|
||||||
*
|
*
|
||||||
* @param noticeId
|
|
||||||
*/
|
*/
|
||||||
void deleteVisibleRange(@Param("noticeId") Long noticeId);
|
void deleteVisibleRange(@Param("noticeId") Long noticeId);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 相关可见范围
|
* 相关可见范围
|
||||||
*
|
*
|
||||||
* @param noticeId
|
|
||||||
*/
|
*/
|
||||||
List<NoticeVisibleRangeVO> queryVisibleRange(@Param("noticeId") Long noticeId);
|
List<NoticeVisibleRangeVO> queryVisibleRange(@Param("noticeId") Long noticeId);
|
||||||
|
|
||||||
@ -59,9 +55,6 @@ public interface NoticeDao extends BaseMapper<NoticeEntity> {
|
|||||||
/**
|
/**
|
||||||
* 后管分页查询资讯
|
* 后管分页查询资讯
|
||||||
*
|
*
|
||||||
* @param page
|
|
||||||
* @param queryForm
|
|
||||||
* @return
|
|
||||||
*/
|
*/
|
||||||
List<NoticeVO> query(Page<?> page, @Param("query") NoticeQueryForm queryForm);
|
List<NoticeVO> query(Page<?> page, @Param("query") NoticeQueryForm queryForm);
|
||||||
|
|
||||||
@ -69,7 +62,6 @@ public interface NoticeDao extends BaseMapper<NoticeEntity> {
|
|||||||
/**
|
/**
|
||||||
* 更新删除状态
|
* 更新删除状态
|
||||||
*
|
*
|
||||||
* @param noticeId
|
|
||||||
*/
|
*/
|
||||||
void updateDeletedFlag(@Param("noticeId") Long noticeId);
|
void updateDeletedFlag(@Param("noticeId") Long noticeId);
|
||||||
|
|
||||||
@ -78,10 +70,6 @@ public interface NoticeDao extends BaseMapper<NoticeEntity> {
|
|||||||
/**
|
/**
|
||||||
* 查询 员工 查看到的通知公告
|
* 查询 员工 查看到的通知公告
|
||||||
*
|
*
|
||||||
* @param page
|
|
||||||
* @param requestEmployeeId
|
|
||||||
* @param noticeEmployeeQueryForm
|
|
||||||
* @return
|
|
||||||
*/
|
*/
|
||||||
List<NoticeEmployeeVO> queryEmployeeNotice(Page<?> page,
|
List<NoticeEmployeeVO> queryEmployeeNotice(Page<?> page,
|
||||||
@Param("requestEmployeeId") Long requestEmployeeId,
|
@Param("requestEmployeeId") Long requestEmployeeId,
|
||||||
@ -97,10 +85,6 @@ public interface NoticeDao extends BaseMapper<NoticeEntity> {
|
|||||||
/**
|
/**
|
||||||
* 查询 员工 未读的通知公告
|
* 查询 员工 未读的通知公告
|
||||||
*
|
*
|
||||||
* @param page
|
|
||||||
* @param requestEmployeeId
|
|
||||||
* @param noticeEmployeeQueryForm
|
|
||||||
* @return
|
|
||||||
*/
|
*/
|
||||||
List<NoticeEmployeeVO> queryEmployeeNotViewNotice(Page<?> page,
|
List<NoticeEmployeeVO> queryEmployeeNotViewNotice(Page<?> page,
|
||||||
@Param("requestEmployeeId") Long requestEmployeeId,
|
@Param("requestEmployeeId") Long requestEmployeeId,
|
||||||
@ -117,27 +101,16 @@ public interface NoticeDao extends BaseMapper<NoticeEntity> {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* 查询通知、公告的 查看记录
|
* 查询通知、公告的 查看记录
|
||||||
* @param page
|
|
||||||
* @param noticeViewRecordQueryForm
|
|
||||||
* @return
|
|
||||||
*/
|
*/
|
||||||
List<NoticeViewRecordVO> queryNoticeViewRecordList(Page page,@Param("queryForm") NoticeViewRecordQueryForm noticeViewRecordQueryForm);
|
List<NoticeViewRecordVO> queryNoticeViewRecordList(Page page,@Param("queryForm") NoticeViewRecordQueryForm noticeViewRecordQueryForm);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 保存查看记录
|
* 保存查看记录
|
||||||
* @param noticeId
|
|
||||||
* @param employeeId
|
|
||||||
* @param ip
|
|
||||||
* @param userAgent
|
|
||||||
*/
|
*/
|
||||||
void insertViewRecord(@Param("noticeId") Long noticeId, @Param("employeeId") Long employeeId, @Param("ip") String ip, @Param("userAgent") String userAgent,@Param("pageViewCount") Integer pageViewCount);
|
void insertViewRecord(@Param("noticeId") Long noticeId, @Param("employeeId") Long employeeId, @Param("ip") String ip, @Param("userAgent") String userAgent,@Param("pageViewCount") Integer pageViewCount);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 更新查看记录
|
* 更新查看记录
|
||||||
* @param noticeId
|
|
||||||
* @param requestEmployeeId
|
|
||||||
* @param ip
|
|
||||||
* @param userAgent
|
|
||||||
*/
|
*/
|
||||||
void updateViewRecord(@Param("noticeId")Long noticeId, @Param("employeeId")Long requestEmployeeId,@Param("ip") String ip, @Param("userAgent")String userAgent);
|
void updateViewRecord(@Param("noticeId")Long noticeId, @Param("employeeId")Long requestEmployeeId,@Param("ip") String ip, @Param("userAgent")String userAgent);
|
||||||
|
|
||||||
|
@ -12,7 +12,7 @@ import org.springframework.stereotype.Component;
|
|||||||
* @Date 2022-08-12 21:40:39
|
* @Date 2022-08-12 21:40:39
|
||||||
* @Wechat zhuoda1024
|
* @Wechat zhuoda1024
|
||||||
* @Email lab1024@163.com
|
* @Email lab1024@163.com
|
||||||
* @Copyright 1024创新实验室 ( https://1024lab.net ),2012-2022
|
* @Copyright <a href="https://1024lab.net">1024创新实验室</a>
|
||||||
*/
|
*/
|
||||||
@Mapper
|
@Mapper
|
||||||
@Component
|
@Component
|
||||||
|
@ -14,7 +14,7 @@ import java.time.LocalDateTime;
|
|||||||
* @Date 2022-08-12 21:40:39
|
* @Date 2022-08-12 21:40:39
|
||||||
* @Wechat zhuoda1024
|
* @Wechat zhuoda1024
|
||||||
* @Email lab1024@163.com
|
* @Email lab1024@163.com
|
||||||
* @Copyright 1024创新实验室 ( https://1024lab.net ),2012-2022
|
* @Copyright <a href="https://1024lab.net">1024创新实验室</a>
|
||||||
*/
|
*/
|
||||||
@Data
|
@Data
|
||||||
@TableName("t_notice")
|
@TableName("t_notice")
|
||||||
|
@ -17,7 +17,7 @@ import java.time.LocalDateTime;
|
|||||||
* @Date 2022-08-12 21:40:39
|
* @Date 2022-08-12 21:40:39
|
||||||
* @Wechat zhuoda1024
|
* @Wechat zhuoda1024
|
||||||
* @Email lab1024@163.com
|
* @Email lab1024@163.com
|
||||||
* @Copyright 1024创新实验室 ( https://1024lab.net ),2012-2022
|
* @Copyright <a href="https://1024lab.net">1024创新实验室</a>
|
||||||
*/
|
*/
|
||||||
@Data
|
@Data
|
||||||
@TableName("t_notice_type")
|
@TableName("t_notice_type")
|
||||||
|
@ -1,9 +1,9 @@
|
|||||||
package net.lab1024.sa.admin.module.business.oa.notice.domain.form;
|
package net.lab1024.sa.admin.module.business.oa.notice.domain.form;
|
||||||
|
|
||||||
import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
|
import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
|
||||||
import io.swagger.annotations.ApiModelProperty;
|
import io.swagger.v3.oas.annotations.media.Schema;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
import net.lab1024.sa.common.common.json.deserializer.FileKeyVoDeserializer;
|
import net.lab1024.sa.base.common.json.deserializer.FileKeyVoDeserializer;
|
||||||
import org.hibernate.validator.constraints.Length;
|
import org.hibernate.validator.constraints.Length;
|
||||||
|
|
||||||
import javax.validation.Valid;
|
import javax.validation.Valid;
|
||||||
@ -19,60 +19,60 @@ import java.util.List;
|
|||||||
* @Date 2022-08-12 21:40:39
|
* @Date 2022-08-12 21:40:39
|
||||||
* @Wechat zhuoda1024
|
* @Wechat zhuoda1024
|
||||||
* @Email lab1024@163.com
|
* @Email lab1024@163.com
|
||||||
* @Copyright 1024创新实验室 ( https://1024lab.net ),2012-2022
|
* @Copyright <a href="https://1024lab.net">1024创新实验室</a>
|
||||||
*/
|
*/
|
||||||
@Data
|
@Data
|
||||||
public class NoticeAddForm {
|
public class NoticeAddForm {
|
||||||
|
|
||||||
@ApiModelProperty("标题")
|
@Schema(description = "标题")
|
||||||
@NotBlank(message = "标题不能为空")
|
@NotBlank(message = "标题不能为空")
|
||||||
@Length(max = 200, message = "标题最多200字符")
|
@Length(max = 200, message = "标题最多200字符")
|
||||||
private String title;
|
private String title;
|
||||||
|
|
||||||
@ApiModelProperty("分类")
|
@Schema(description = "分类")
|
||||||
@NotNull(message = "分类不能为空")
|
@NotNull(message = "分类不能为空")
|
||||||
private Long noticeTypeId;
|
private Long noticeTypeId;
|
||||||
|
|
||||||
@ApiModelProperty("是否全部可见")
|
@Schema(description = "是否全部可见")
|
||||||
@NotNull(message = "是否全部可见不能为空")
|
@NotNull(message = "是否全部可见不能为空")
|
||||||
private Boolean allVisibleFlag;
|
private Boolean allVisibleFlag;
|
||||||
|
|
||||||
@ApiModelProperty("是否定时发布")
|
@Schema(description = "是否定时发布")
|
||||||
@NotNull(message = "是否定时发布不能为空")
|
@NotNull(message = "是否定时发布不能为空")
|
||||||
private Boolean scheduledPublishFlag;
|
private Boolean scheduledPublishFlag;
|
||||||
|
|
||||||
@ApiModelProperty("发布时间")
|
@Schema(description = "发布时间")
|
||||||
@NotNull(message = "发布时间不能为空")
|
@NotNull(message = "发布时间不能为空")
|
||||||
private LocalDateTime publishTime;
|
private LocalDateTime publishTime;
|
||||||
|
|
||||||
@ApiModelProperty("纯文本内容")
|
@Schema(description = "纯文本内容")
|
||||||
@NotNull(message = "文本内容不能为空")
|
@NotNull(message = "文本内容不能为空")
|
||||||
private String contentText;
|
private String contentText;
|
||||||
|
|
||||||
@ApiModelProperty("html内容")
|
@Schema(description = "html内容")
|
||||||
@NotNull(message = "html内容不能为空")
|
@NotNull(message = "html内容不能为空")
|
||||||
private String contentHtml;
|
private String contentHtml;
|
||||||
|
|
||||||
@ApiModelProperty("附件,多个英文逗号分隔|可选")
|
@Schema(description = "附件,多个英文逗号分隔|可选")
|
||||||
@Length(max = 1000, message = "最多1000字符")
|
@Length(max = 1000, message = "最多1000字符")
|
||||||
@JsonDeserialize(using = FileKeyVoDeserializer.class)
|
@JsonDeserialize(using = FileKeyVoDeserializer.class)
|
||||||
private String attachment;
|
private String attachment;
|
||||||
|
|
||||||
@ApiModelProperty("作者")
|
@Schema(description = "作者")
|
||||||
@NotBlank(message = "作者不能为空")
|
@NotBlank(message = "作者不能为空")
|
||||||
private String author;
|
private String author;
|
||||||
|
|
||||||
@ApiModelProperty("来源")
|
@Schema(description = "来源")
|
||||||
@NotBlank(message = "标题不能为空")
|
@NotBlank(message = "标题不能为空")
|
||||||
private String source;
|
private String source;
|
||||||
|
|
||||||
@ApiModelProperty("文号")
|
@Schema(description = "文号")
|
||||||
private String documentNumber;
|
private String documentNumber;
|
||||||
|
|
||||||
@ApiModelProperty(hidden = true)
|
@Schema(hidden = true)
|
||||||
private Long createUserId;
|
private Long createUserId;
|
||||||
|
|
||||||
@ApiModelProperty("可见范围设置|可选")
|
@Schema(description = "可见范围设置|可选")
|
||||||
@Valid
|
@Valid
|
||||||
private List<NoticeVisibleRangeForm> visibleRangeList;
|
private List<NoticeVisibleRangeForm> visibleRangeList;
|
||||||
}
|
}
|
||||||
|
@ -1,8 +1,8 @@
|
|||||||
package net.lab1024.sa.admin.module.business.oa.notice.domain.form;
|
package net.lab1024.sa.admin.module.business.oa.notice.domain.form;
|
||||||
|
|
||||||
import io.swagger.annotations.ApiModelProperty;
|
import io.swagger.v3.oas.annotations.media.Schema;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
import net.lab1024.sa.common.common.domain.PageParam;
|
import net.lab1024.sa.base.common.domain.PageParam;
|
||||||
|
|
||||||
import java.time.LocalDate;
|
import java.time.LocalDate;
|
||||||
|
|
||||||
@ -13,23 +13,23 @@ import java.time.LocalDate;
|
|||||||
* @Date 2022-08-12 21:40:39
|
* @Date 2022-08-12 21:40:39
|
||||||
* @Wechat zhuoda1024
|
* @Wechat zhuoda1024
|
||||||
* @Email lab1024@163.com
|
* @Email lab1024@163.com
|
||||||
* @Copyright 1024创新实验室 ( https://1024lab.net ),2012-2022
|
* @Copyright <a href="https://1024lab.net">1024创新实验室</a>
|
||||||
*/
|
*/
|
||||||
@Data
|
@Data
|
||||||
public class NoticeEmployeeQueryForm extends PageParam {
|
public class NoticeEmployeeQueryForm extends PageParam {
|
||||||
|
|
||||||
@ApiModelProperty("标题、作者、来源、文号")
|
@Schema(description = "标题、作者、来源、文号")
|
||||||
private String keywords;
|
private String keywords;
|
||||||
|
|
||||||
@ApiModelProperty("分类")
|
@Schema(description = "分类")
|
||||||
private Long noticeTypeId;
|
private Long noticeTypeId;
|
||||||
|
|
||||||
@ApiModelProperty("发布-开始时间")
|
@Schema(description = "发布-开始时间")
|
||||||
private LocalDate publishTimeBegin;
|
private LocalDate publishTimeBegin;
|
||||||
|
|
||||||
@ApiModelProperty("未读标识")
|
@Schema(description = "未读标识")
|
||||||
private Boolean notViewFlag;
|
private Boolean notViewFlag;
|
||||||
|
|
||||||
@ApiModelProperty("发布-截止时间")
|
@Schema(description = "发布-截止时间")
|
||||||
private LocalDate publishTimeEnd;
|
private LocalDate publishTimeEnd;
|
||||||
}
|
}
|
||||||
|
@ -1,8 +1,8 @@
|
|||||||
package net.lab1024.sa.admin.module.business.oa.notice.domain.form;
|
package net.lab1024.sa.admin.module.business.oa.notice.domain.form;
|
||||||
|
|
||||||
import io.swagger.annotations.ApiModelProperty;
|
import io.swagger.v3.oas.annotations.media.Schema;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
import net.lab1024.sa.common.common.domain.PageParam;
|
import net.lab1024.sa.base.common.domain.PageParam;
|
||||||
|
|
||||||
import java.time.LocalDate;
|
import java.time.LocalDate;
|
||||||
|
|
||||||
@ -13,36 +13,36 @@ import java.time.LocalDate;
|
|||||||
* @Date 2022-08-12 21:40:39
|
* @Date 2022-08-12 21:40:39
|
||||||
* @Wechat zhuoda1024
|
* @Wechat zhuoda1024
|
||||||
* @Email lab1024@163.com
|
* @Email lab1024@163.com
|
||||||
* @Copyright 1024创新实验室 ( https://1024lab.net ),2012-2022
|
* @Copyright <a href="https://1024lab.net">1024创新实验室</a>
|
||||||
*/
|
*/
|
||||||
@Data
|
@Data
|
||||||
public class NoticeQueryForm extends PageParam {
|
public class NoticeQueryForm extends PageParam {
|
||||||
|
|
||||||
@ApiModelProperty("分类")
|
@Schema(description = "分类")
|
||||||
private Long noticeTypeId;
|
private Long noticeTypeId;
|
||||||
|
|
||||||
@ApiModelProperty("标题、作者、来源")
|
@Schema(description = "标题、作者、来源")
|
||||||
private String keywords;
|
private String keywords;
|
||||||
|
|
||||||
@ApiModelProperty("文号")
|
@Schema(description = "文号")
|
||||||
private String documentNumber;
|
private String documentNumber;
|
||||||
|
|
||||||
@ApiModelProperty("创建人")
|
@Schema(description = "创建人")
|
||||||
private Long createUserId;
|
private Long createUserId;
|
||||||
|
|
||||||
@ApiModelProperty("删除标识")
|
@Schema(description = "删除标识")
|
||||||
private Boolean deletedFlag;
|
private Boolean deletedFlag;
|
||||||
|
|
||||||
@ApiModelProperty("创建-开始时间")
|
@Schema(description = "创建-开始时间")
|
||||||
private LocalDate createTimeBegin;
|
private LocalDate createTimeBegin;
|
||||||
|
|
||||||
@ApiModelProperty("创建-截止时间")
|
@Schema(description = "创建-截止时间")
|
||||||
private LocalDate createTimeEnd;
|
private LocalDate createTimeEnd;
|
||||||
|
|
||||||
@ApiModelProperty("发布-开始时间")
|
@Schema(description = "发布-开始时间")
|
||||||
private LocalDate publishTimeBegin;
|
private LocalDate publishTimeBegin;
|
||||||
|
|
||||||
@ApiModelProperty("发布-截止时间")
|
@Schema(description = "发布-截止时间")
|
||||||
private LocalDate publishTimeEnd;
|
private LocalDate publishTimeEnd;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
package net.lab1024.sa.admin.module.business.oa.notice.domain.form;
|
package net.lab1024.sa.admin.module.business.oa.notice.domain.form;
|
||||||
|
|
||||||
import io.swagger.annotations.ApiModelProperty;
|
import io.swagger.v3.oas.annotations.media.Schema;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
|
|
||||||
import javax.validation.constraints.NotNull;
|
import javax.validation.constraints.NotNull;
|
||||||
@ -12,12 +12,12 @@ import javax.validation.constraints.NotNull;
|
|||||||
* @Date 2022-08-12 21:40:39
|
* @Date 2022-08-12 21:40:39
|
||||||
* @Wechat zhuoda1024
|
* @Wechat zhuoda1024
|
||||||
* @Email lab1024@163.com
|
* @Email lab1024@163.com
|
||||||
* @Copyright 1024创新实验室 ( https://1024lab.net ),2012-2022
|
* @Copyright <a href="https://1024lab.net">1024创新实验室</a>
|
||||||
*/
|
*/
|
||||||
@Data
|
@Data
|
||||||
public class NoticeUpdateForm extends NoticeAddForm {
|
public class NoticeUpdateForm extends NoticeAddForm {
|
||||||
|
|
||||||
@ApiModelProperty("id")
|
@Schema(description = "id")
|
||||||
@NotNull(message = "通知id不能为空")
|
@NotNull(message = "通知id不能为空")
|
||||||
private Long noticeId;
|
private Long noticeId;
|
||||||
|
|
||||||
|
@ -1,8 +1,8 @@
|
|||||||
package net.lab1024.sa.admin.module.business.oa.notice.domain.form;
|
package net.lab1024.sa.admin.module.business.oa.notice.domain.form;
|
||||||
|
|
||||||
import io.swagger.annotations.ApiModelProperty;
|
import io.swagger.v3.oas.annotations.media.Schema;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
import net.lab1024.sa.common.common.domain.PageParam;
|
import net.lab1024.sa.base.common.domain.PageParam;
|
||||||
|
|
||||||
import javax.validation.constraints.NotNull;
|
import javax.validation.constraints.NotNull;
|
||||||
|
|
||||||
@ -13,19 +13,19 @@ import javax.validation.constraints.NotNull;
|
|||||||
* @Date 2022-08-12 21:40:39
|
* @Date 2022-08-12 21:40:39
|
||||||
* @Wechat zhuoda1024
|
* @Wechat zhuoda1024
|
||||||
* @Email lab1024@163.com
|
* @Email lab1024@163.com
|
||||||
* @Copyright 1024创新实验室 ( https://1024lab.net ),2012-2022
|
* @Copyright <a href="https://1024lab.net">1024创新实验室</a>
|
||||||
*/
|
*/
|
||||||
@Data
|
@Data
|
||||||
public class NoticeViewRecordQueryForm extends PageParam {
|
public class NoticeViewRecordQueryForm extends PageParam {
|
||||||
|
|
||||||
@ApiModelProperty("通知公告id")
|
@Schema(description = "通知公告id")
|
||||||
@NotNull(message = "通知公告id不能为空")
|
@NotNull(message = "通知公告id不能为空")
|
||||||
private Long noticeId;
|
private Long noticeId;
|
||||||
|
|
||||||
@ApiModelProperty("部门id")
|
@Schema(description = "部门id")
|
||||||
private Long departmentId;
|
private Long departmentId;
|
||||||
|
|
||||||
@ApiModelProperty("关键字")
|
@Schema(description = "关键字")
|
||||||
private String keywords;
|
private String keywords;
|
||||||
|
|
||||||
|
|
||||||
|
@ -1,12 +1,12 @@
|
|||||||
package net.lab1024.sa.admin.module.business.oa.notice.domain.form;
|
package net.lab1024.sa.admin.module.business.oa.notice.domain.form;
|
||||||
|
|
||||||
import io.swagger.annotations.ApiModelProperty;
|
import io.swagger.v3.oas.annotations.media.Schema;
|
||||||
import lombok.AllArgsConstructor;
|
import lombok.AllArgsConstructor;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
import lombok.NoArgsConstructor;
|
import lombok.NoArgsConstructor;
|
||||||
import net.lab1024.sa.admin.module.business.oa.notice.constant.NoticeVisibleRangeDataTypeEnum;
|
import net.lab1024.sa.admin.module.business.oa.notice.constant.NoticeVisibleRangeDataTypeEnum;
|
||||||
import net.lab1024.sa.common.common.swagger.ApiModelPropertyEnum;
|
import net.lab1024.sa.base.common.swagger.SchemaEnum;
|
||||||
import net.lab1024.sa.common.common.validator.enumeration.CheckEnum;
|
import net.lab1024.sa.base.common.validator.enumeration.CheckEnum;
|
||||||
|
|
||||||
import javax.validation.constraints.NotNull;
|
import javax.validation.constraints.NotNull;
|
||||||
|
|
||||||
@ -17,18 +17,18 @@ import javax.validation.constraints.NotNull;
|
|||||||
* @Date 2022-08-12 21:40:39
|
* @Date 2022-08-12 21:40:39
|
||||||
* @Wechat zhuoda1024
|
* @Wechat zhuoda1024
|
||||||
* @Email lab1024@163.com
|
* @Email lab1024@163.com
|
||||||
* @Copyright 1024创新实验室 ( https://1024lab.net ),2012-2022
|
* @Copyright <a href="https://1024lab.net">1024创新实验室</a>
|
||||||
*/
|
*/
|
||||||
@Data
|
@Data
|
||||||
@NoArgsConstructor
|
@NoArgsConstructor
|
||||||
@AllArgsConstructor
|
@AllArgsConstructor
|
||||||
public class NoticeVisibleRangeForm {
|
public class NoticeVisibleRangeForm {
|
||||||
|
|
||||||
@ApiModelPropertyEnum(NoticeVisibleRangeDataTypeEnum.class)
|
@SchemaEnum(NoticeVisibleRangeDataTypeEnum.class)
|
||||||
@CheckEnum(value = NoticeVisibleRangeDataTypeEnum.class, required = true, message = "数据类型错误")
|
@CheckEnum(value = NoticeVisibleRangeDataTypeEnum.class, required = true, message = "数据类型错误")
|
||||||
private Integer dataType;
|
private Integer dataType;
|
||||||
|
|
||||||
@ApiModelProperty("员工/部门id")
|
@Schema(description = "员工/部门id")
|
||||||
@NotNull(message = "员工/部门id不能为空")
|
@NotNull(message = "员工/部门id不能为空")
|
||||||
private Long dataId;
|
private Long dataId;
|
||||||
}
|
}
|
||||||
|
@ -1,9 +1,9 @@
|
|||||||
package net.lab1024.sa.admin.module.business.oa.notice.domain.vo;
|
package net.lab1024.sa.admin.module.business.oa.notice.domain.vo;
|
||||||
|
|
||||||
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
|
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
|
||||||
import io.swagger.annotations.ApiModelProperty;
|
import io.swagger.v3.oas.annotations.media.Schema;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
import net.lab1024.sa.common.common.json.serializer.FileKeyVoSerializer;
|
import net.lab1024.sa.base.common.json.serializer.FileKeyVoSerializer;
|
||||||
|
|
||||||
import javax.validation.constraints.NotBlank;
|
import javax.validation.constraints.NotBlank;
|
||||||
import javax.validation.constraints.NotNull;
|
import javax.validation.constraints.NotNull;
|
||||||
@ -16,69 +16,69 @@ import java.time.LocalDateTime;
|
|||||||
* @Date 2022-08-12 21:40:39
|
* @Date 2022-08-12 21:40:39
|
||||||
* @Wechat zhuoda1024
|
* @Wechat zhuoda1024
|
||||||
* @Email lab1024@163.com
|
* @Email lab1024@163.com
|
||||||
* @Copyright 1024创新实验室 ( https://1024lab.net ),2012-2022
|
* @Copyright <a href="https://1024lab.net">1024创新实验室</a>
|
||||||
*/
|
*/
|
||||||
@Data
|
@Data
|
||||||
public class NoticeDetailVO {
|
public class NoticeDetailVO {
|
||||||
|
|
||||||
@ApiModelProperty("id")
|
@Schema(description = "id")
|
||||||
private Long noticeId;
|
private Long noticeId;
|
||||||
|
|
||||||
@ApiModelProperty("标题")
|
@Schema(description = "标题")
|
||||||
private String title;
|
private String title;
|
||||||
|
|
||||||
@ApiModelProperty("分类")
|
@Schema(description = "分类")
|
||||||
private Long noticeTypeId;
|
private Long noticeTypeId;
|
||||||
|
|
||||||
@ApiModelProperty("分类名称")
|
@Schema(description = "分类名称")
|
||||||
private Long noticeTypeName;
|
private Long noticeTypeName;
|
||||||
|
|
||||||
@ApiModelProperty("是否全部可见")
|
@Schema(description = "是否全部可见")
|
||||||
@NotNull(message = "是否全部可见不能为空")
|
@NotNull(message = "是否全部可见不能为空")
|
||||||
private Boolean allVisibleFlag;
|
private Boolean allVisibleFlag;
|
||||||
|
|
||||||
@ApiModelProperty("是否定时发布")
|
@Schema(description = "是否定时发布")
|
||||||
@NotNull(message = "是否定时发布不能为空")
|
@NotNull(message = "是否定时发布不能为空")
|
||||||
private Boolean scheduledPublishFlag;
|
private Boolean scheduledPublishFlag;
|
||||||
|
|
||||||
@ApiModelProperty("纯文本内容")
|
@Schema(description = "纯文本内容")
|
||||||
private String contentText;
|
private String contentText;
|
||||||
|
|
||||||
@ApiModelProperty("html内容")
|
@Schema(description = "html内容")
|
||||||
private String contentHtml;
|
private String contentHtml;
|
||||||
|
|
||||||
@ApiModelProperty("附件")
|
@Schema(description = "附件")
|
||||||
@JsonSerialize(using = FileKeyVoSerializer.class)
|
@JsonSerialize(using = FileKeyVoSerializer.class)
|
||||||
private String attachment;
|
private String attachment;
|
||||||
|
|
||||||
@ApiModelProperty("发布时间")
|
@Schema(description = "发布时间")
|
||||||
@NotNull(message = "发布时间不能为空")
|
@NotNull(message = "发布时间不能为空")
|
||||||
private LocalDateTime publishTime;
|
private LocalDateTime publishTime;
|
||||||
|
|
||||||
@ApiModelProperty("作者")
|
@Schema(description = "作者")
|
||||||
@NotBlank(message = "作者不能为空")
|
@NotBlank(message = "作者不能为空")
|
||||||
private String author;
|
private String author;
|
||||||
|
|
||||||
@ApiModelProperty("来源")
|
@Schema(description = "来源")
|
||||||
@NotBlank(message = "标题不能为空")
|
@NotBlank(message = "标题不能为空")
|
||||||
private String source;
|
private String source;
|
||||||
|
|
||||||
@ApiModelProperty("文号")
|
@Schema(description = "文号")
|
||||||
private String documentNumber;
|
private String documentNumber;
|
||||||
|
|
||||||
@ApiModelProperty("页面浏览量")
|
@Schema(description = "页面浏览量")
|
||||||
private Integer pageViewCount;
|
private Integer pageViewCount;
|
||||||
|
|
||||||
@ApiModelProperty("用户浏览量")
|
@Schema(description = "用户浏览量")
|
||||||
private Integer userViewCount;
|
private Integer userViewCount;
|
||||||
|
|
||||||
@ApiModelProperty("创建人名称")
|
@Schema(description = "创建人名称")
|
||||||
private Long createUserName;
|
private Long createUserName;
|
||||||
|
|
||||||
@ApiModelProperty("创建时间")
|
@Schema(description = "创建时间")
|
||||||
private LocalDateTime createTime;
|
private LocalDateTime createTime;
|
||||||
|
|
||||||
@ApiModelProperty("更新时间")
|
@Schema(description = "更新时间")
|
||||||
private LocalDateTime updateTime;
|
private LocalDateTime updateTime;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
package net.lab1024.sa.admin.module.business.oa.notice.domain.vo;
|
package net.lab1024.sa.admin.module.business.oa.notice.domain.vo;
|
||||||
|
|
||||||
import io.swagger.annotations.ApiModelProperty;
|
import io.swagger.v3.oas.annotations.media.Schema;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
|
|
||||||
import java.time.LocalDate;
|
import java.time.LocalDate;
|
||||||
@ -12,15 +12,15 @@ import java.time.LocalDate;
|
|||||||
* @Date 2022-08-12 21:40:39
|
* @Date 2022-08-12 21:40:39
|
||||||
* @Wechat zhuoda1024
|
* @Wechat zhuoda1024
|
||||||
* @Email lab1024@163.com
|
* @Email lab1024@163.com
|
||||||
* @Copyright 1024创新实验室 ( https://1024lab.net ),2012-2022
|
* @Copyright <a href="https://1024lab.net">1024创新实验室</a>
|
||||||
*/
|
*/
|
||||||
@Data
|
@Data
|
||||||
public class NoticeEmployeeVO extends NoticeVO {
|
public class NoticeEmployeeVO extends NoticeVO {
|
||||||
|
|
||||||
@ApiModelProperty("是否查看")
|
@Schema(description = "是否查看")
|
||||||
private Boolean viewFlag;
|
private Boolean viewFlag;
|
||||||
|
|
||||||
@ApiModelProperty("发布日期")
|
@Schema(description = "发布日期")
|
||||||
private LocalDate publishDate;
|
private LocalDate publishDate;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
package net.lab1024.sa.admin.module.business.oa.notice.domain.vo;
|
package net.lab1024.sa.admin.module.business.oa.notice.domain.vo;
|
||||||
|
|
||||||
import io.swagger.annotations.ApiModelProperty;
|
import io.swagger.v3.oas.annotations.media.Schema;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -10,15 +10,15 @@ import lombok.Data;
|
|||||||
* @Date 2022-08-12 21:40:39
|
* @Date 2022-08-12 21:40:39
|
||||||
* @Wechat zhuoda1024
|
* @Wechat zhuoda1024
|
||||||
* @Email lab1024@163.com
|
* @Email lab1024@163.com
|
||||||
* @Copyright 1024创新实验室 ( https://1024lab.net ),2012-2022
|
* @Copyright <a href="https://1024lab.net">1024创新实验室</a>
|
||||||
*/
|
*/
|
||||||
@Data
|
@Data
|
||||||
public class NoticeTypeVO {
|
public class NoticeTypeVO {
|
||||||
|
|
||||||
@ApiModelProperty("通知类型id")
|
@Schema(description = "通知类型id")
|
||||||
private Long noticeTypeId;
|
private Long noticeTypeId;
|
||||||
|
|
||||||
@ApiModelProperty("通知类型-名称")
|
@Schema(description = "通知类型-名称")
|
||||||
private String noticeTypeName;
|
private String noticeTypeName;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -1,9 +1,9 @@
|
|||||||
package net.lab1024.sa.admin.module.business.oa.notice.domain.vo;
|
package net.lab1024.sa.admin.module.business.oa.notice.domain.vo;
|
||||||
|
|
||||||
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
|
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
|
||||||
import io.swagger.annotations.ApiModelProperty;
|
import io.swagger.v3.oas.annotations.media.Schema;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
import net.lab1024.sa.common.common.json.serializer.FileKeyVoSerializer;
|
import net.lab1024.sa.base.common.json.serializer.FileKeyVoSerializer;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
@ -14,22 +14,22 @@ import java.util.List;
|
|||||||
* @Date 2022-08-12 21:40:39
|
* @Date 2022-08-12 21:40:39
|
||||||
* @Wechat zhuoda1024
|
* @Wechat zhuoda1024
|
||||||
* @Email lab1024@163.com
|
* @Email lab1024@163.com
|
||||||
* @Copyright 1024创新实验室 ( https://1024lab.net ),2012-2022
|
* @Copyright <a href="https://1024lab.net">1024创新实验室</a>
|
||||||
*/
|
*/
|
||||||
@Data
|
@Data
|
||||||
public class NoticeUpdateFormVO extends NoticeVO {
|
public class NoticeUpdateFormVO extends NoticeVO {
|
||||||
|
|
||||||
@ApiModelProperty("纯文本内容")
|
@Schema(description = "纯文本内容")
|
||||||
private String contentText;
|
private String contentText;
|
||||||
|
|
||||||
@ApiModelProperty("html内容")
|
@Schema(description = "html内容")
|
||||||
private String contentHtml;
|
private String contentHtml;
|
||||||
|
|
||||||
@ApiModelProperty("附件")
|
@Schema(description = "附件")
|
||||||
@JsonSerialize(using = FileKeyVoSerializer.class)
|
@JsonSerialize(using = FileKeyVoSerializer.class)
|
||||||
private String attachment;
|
private String attachment;
|
||||||
|
|
||||||
@ApiModelProperty("可见范围")
|
@Schema(description = "可见范围")
|
||||||
private List<NoticeVisibleRangeVO> visibleRangeList;
|
private List<NoticeVisibleRangeVO> visibleRangeList;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
package net.lab1024.sa.admin.module.business.oa.notice.domain.vo;
|
package net.lab1024.sa.admin.module.business.oa.notice.domain.vo;
|
||||||
|
|
||||||
import io.swagger.annotations.ApiModelProperty;
|
import io.swagger.v3.oas.annotations.media.Schema;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
|
|
||||||
import javax.validation.constraints.NotBlank;
|
import javax.validation.constraints.NotBlank;
|
||||||
@ -14,62 +14,62 @@ import java.time.LocalDateTime;
|
|||||||
* @Date 2022-08-12 21:40:39
|
* @Date 2022-08-12 21:40:39
|
||||||
* @Wechat zhuoda1024
|
* @Wechat zhuoda1024
|
||||||
* @Email lab1024@163.com
|
* @Email lab1024@163.com
|
||||||
* @Copyright 1024创新实验室 ( https://1024lab.net ),2012-2022
|
* @Copyright <a href="https://1024lab.net">1024创新实验室</a>
|
||||||
*/
|
*/
|
||||||
@Data
|
@Data
|
||||||
public class NoticeVO {
|
public class NoticeVO {
|
||||||
|
|
||||||
@ApiModelProperty("id")
|
@Schema(description = "id")
|
||||||
private Long noticeId;
|
private Long noticeId;
|
||||||
|
|
||||||
@ApiModelProperty("标题")
|
@Schema(description = "标题")
|
||||||
private String title;
|
private String title;
|
||||||
|
|
||||||
@ApiModelProperty("分类")
|
@Schema(description = "分类")
|
||||||
private Long noticeTypeId;
|
private Long noticeTypeId;
|
||||||
|
|
||||||
@ApiModelProperty("分类名称")
|
@Schema(description = "分类名称")
|
||||||
private String noticeTypeName;
|
private String noticeTypeName;
|
||||||
|
|
||||||
@ApiModelProperty("是否全部可见")
|
@Schema(description = "是否全部可见")
|
||||||
private Boolean allVisibleFlag;
|
private Boolean allVisibleFlag;
|
||||||
|
|
||||||
@ApiModelProperty("是否定时发布")
|
@Schema(description = "是否定时发布")
|
||||||
private Boolean scheduledPublishFlag;
|
private Boolean scheduledPublishFlag;
|
||||||
|
|
||||||
@ApiModelProperty("发布状态")
|
@Schema(description = "发布状态")
|
||||||
private Boolean publishFlag;
|
private Boolean publishFlag;
|
||||||
|
|
||||||
@ApiModelProperty("发布时间")
|
@Schema(description = "发布时间")
|
||||||
private LocalDateTime publishTime;
|
private LocalDateTime publishTime;
|
||||||
|
|
||||||
@ApiModelProperty("作者")
|
@Schema(description = "作者")
|
||||||
@NotBlank(message = "作者不能为空")
|
@NotBlank(message = "作者不能为空")
|
||||||
private String author;
|
private String author;
|
||||||
|
|
||||||
@ApiModelProperty("来源")
|
@Schema(description = "来源")
|
||||||
@NotBlank(message = "标题不能为空")
|
@NotBlank(message = "标题不能为空")
|
||||||
private String source;
|
private String source;
|
||||||
|
|
||||||
@ApiModelProperty("文号")
|
@Schema(description = "文号")
|
||||||
private String documentNumber;
|
private String documentNumber;
|
||||||
|
|
||||||
@ApiModelProperty("页面浏览量")
|
@Schema(description = "页面浏览量")
|
||||||
private Integer pageViewCount;
|
private Integer pageViewCount;
|
||||||
|
|
||||||
@ApiModelProperty("用户浏览量")
|
@Schema(description = "用户浏览量")
|
||||||
private Integer userViewCount;
|
private Integer userViewCount;
|
||||||
|
|
||||||
@ApiModelProperty("删除标识")
|
@Schema(description = "删除标识")
|
||||||
private Boolean deletedFlag;
|
private Boolean deletedFlag;
|
||||||
|
|
||||||
@ApiModelProperty("创建人名称")
|
@Schema(description = "创建人名称")
|
||||||
private String createUserName;
|
private String createUserName;
|
||||||
|
|
||||||
@ApiModelProperty("创建时间")
|
@Schema(description = "创建时间")
|
||||||
private LocalDateTime createTime;
|
private LocalDateTime createTime;
|
||||||
|
|
||||||
@ApiModelProperty("更新时间")
|
@Schema(description = "更新时间")
|
||||||
private LocalDateTime updateTime;
|
private LocalDateTime updateTime;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
package net.lab1024.sa.admin.module.business.oa.notice.domain.vo;
|
package net.lab1024.sa.admin.module.business.oa.notice.domain.vo;
|
||||||
|
|
||||||
import io.swagger.annotations.ApiModelProperty;
|
import io.swagger.v3.oas.annotations.media.Schema;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
|
|
||||||
import java.time.LocalDateTime;
|
import java.time.LocalDateTime;
|
||||||
@ -12,38 +12,38 @@ import java.time.LocalDateTime;
|
|||||||
* @Date 2022-08-12 21:40:39
|
* @Date 2022-08-12 21:40:39
|
||||||
* @Wechat zhuoda1024
|
* @Wechat zhuoda1024
|
||||||
* @Email lab1024@163.com
|
* @Email lab1024@163.com
|
||||||
* @Copyright 1024创新实验室 ( https://1024lab.net ),2012-2022
|
* @Copyright <a href="https://1024lab.net">1024创新实验室</a>
|
||||||
*/
|
*/
|
||||||
@Data
|
@Data
|
||||||
public class NoticeViewRecordVO {
|
public class NoticeViewRecordVO {
|
||||||
|
|
||||||
@ApiModelProperty("员工ID")
|
@Schema(description = "员工ID")
|
||||||
private Long employeeId;
|
private Long employeeId;
|
||||||
|
|
||||||
@ApiModelProperty("员工姓名")
|
@Schema(description = "员工姓名")
|
||||||
private String employeeName;
|
private String employeeName;
|
||||||
|
|
||||||
@ApiModelProperty("员工部门名称")
|
@Schema(description = "员工部门名称")
|
||||||
private String departmentName;
|
private String departmentName;
|
||||||
|
|
||||||
@ApiModelProperty("查看次数")
|
@Schema(description = "查看次数")
|
||||||
private Integer pageViewCount;
|
private Integer pageViewCount;
|
||||||
|
|
||||||
@ApiModelProperty("首次ip")
|
@Schema(description = "首次ip")
|
||||||
private String firstIp;
|
private String firstIp;
|
||||||
|
|
||||||
@ApiModelProperty("首次用户设备等标识")
|
@Schema(description = "首次用户设备等标识")
|
||||||
private String firstUserAgent;
|
private String firstUserAgent;
|
||||||
|
|
||||||
@ApiModelProperty("首次查看时间")
|
@Schema(description = "首次查看时间")
|
||||||
private LocalDateTime createTime;
|
private LocalDateTime createTime;
|
||||||
|
|
||||||
@ApiModelProperty("最后一次 ip")
|
@Schema(description = "最后一次 ip")
|
||||||
private String lastIp;
|
private String lastIp;
|
||||||
|
|
||||||
@ApiModelProperty("最后一次 用户设备等标识")
|
@Schema(description = "最后一次 用户设备等标识")
|
||||||
private String lastUserAgent;
|
private String lastUserAgent;
|
||||||
|
|
||||||
@ApiModelProperty("最后一次查看时间")
|
@Schema(description = "最后一次查看时间")
|
||||||
private LocalDateTime updateTime;
|
private LocalDateTime updateTime;
|
||||||
}
|
}
|
||||||
|
@ -1,9 +1,9 @@
|
|||||||
package net.lab1024.sa.admin.module.business.oa.notice.domain.vo;
|
package net.lab1024.sa.admin.module.business.oa.notice.domain.vo;
|
||||||
|
|
||||||
import io.swagger.annotations.ApiModelProperty;
|
import io.swagger.v3.oas.annotations.media.Schema;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
import net.lab1024.sa.admin.module.business.oa.notice.constant.NoticeVisibleRangeDataTypeEnum;
|
import net.lab1024.sa.admin.module.business.oa.notice.constant.NoticeVisibleRangeDataTypeEnum;
|
||||||
import net.lab1024.sa.common.common.swagger.ApiModelPropertyEnum;
|
import net.lab1024.sa.base.common.swagger.SchemaEnum;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 新闻、公告 可见范围数据 VO
|
* 新闻、公告 可见范围数据 VO
|
||||||
@ -12,18 +12,18 @@ import net.lab1024.sa.common.common.swagger.ApiModelPropertyEnum;
|
|||||||
* @Date 2022-08-12 21:40:39
|
* @Date 2022-08-12 21:40:39
|
||||||
* @Wechat zhuoda1024
|
* @Wechat zhuoda1024
|
||||||
* @Email lab1024@163.com
|
* @Email lab1024@163.com
|
||||||
* @Copyright 1024创新实验室 ( https://1024lab.net ),2012-2022
|
* @Copyright <a href="https://1024lab.net">1024创新实验室</a>
|
||||||
*/
|
*/
|
||||||
@Data
|
@Data
|
||||||
public class NoticeVisibleRangeVO {
|
public class NoticeVisibleRangeVO {
|
||||||
|
|
||||||
@ApiModelPropertyEnum(NoticeVisibleRangeDataTypeEnum.class)
|
@SchemaEnum(NoticeVisibleRangeDataTypeEnum.class)
|
||||||
private Integer dataType;
|
private Integer dataType;
|
||||||
|
|
||||||
@ApiModelProperty("员工/部门id")
|
@Schema(description = "员工/部门id")
|
||||||
private Long dataId;
|
private Long dataId;
|
||||||
|
|
||||||
@ApiModelProperty("员工/部门 名称")
|
@Schema(description = "员工/部门 名称")
|
||||||
private String dataName;
|
private String dataName;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -3,13 +3,13 @@ package net.lab1024.sa.admin.module.business.oa.notice.manager;
|
|||||||
import net.lab1024.sa.admin.module.business.oa.notice.dao.NoticeDao;
|
import net.lab1024.sa.admin.module.business.oa.notice.dao.NoticeDao;
|
||||||
import net.lab1024.sa.admin.module.business.oa.notice.domain.entity.NoticeEntity;
|
import net.lab1024.sa.admin.module.business.oa.notice.domain.entity.NoticeEntity;
|
||||||
import net.lab1024.sa.admin.module.business.oa.notice.domain.form.NoticeVisibleRangeForm;
|
import net.lab1024.sa.admin.module.business.oa.notice.domain.form.NoticeVisibleRangeForm;
|
||||||
import net.lab1024.sa.common.module.support.datatracer.constant.DataTracerTypeEnum;
|
import net.lab1024.sa.base.module.support.datatracer.constant.DataTracerTypeEnum;
|
||||||
import net.lab1024.sa.common.module.support.datatracer.service.DataTracerService;
|
import net.lab1024.sa.base.module.support.datatracer.service.DataTracerService;
|
||||||
import org.apache.commons.collections4.CollectionUtils;
|
import org.apache.commons.collections4.CollectionUtils;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
import org.springframework.transaction.annotation.Transactional;
|
import org.springframework.transaction.annotation.Transactional;
|
||||||
|
|
||||||
|
import javax.annotation.Resource;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -19,22 +19,19 @@ import java.util.List;
|
|||||||
* @Date 2022-08-12 21:40:39
|
* @Date 2022-08-12 21:40:39
|
||||||
* @Wechat zhuoda1024
|
* @Wechat zhuoda1024
|
||||||
* @Email lab1024@163.com
|
* @Email lab1024@163.com
|
||||||
* @Copyright 1024创新实验室 ( https://1024lab.net ),2012-2022
|
* @Copyright <a href="https://1024lab.net">1024创新实验室</a>
|
||||||
*/
|
*/
|
||||||
@Service
|
@Service
|
||||||
public class NoticeManager {
|
public class NoticeManager {
|
||||||
|
|
||||||
@Autowired
|
@Resource
|
||||||
private NoticeDao noticeDao;
|
private NoticeDao noticeDao;
|
||||||
|
|
||||||
@Autowired
|
@Resource
|
||||||
private DataTracerService dataTracerService;
|
private DataTracerService dataTracerService;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 保存
|
* 保存
|
||||||
*
|
|
||||||
* @param noticeEntity
|
|
||||||
* @param visibleRangeFormList
|
|
||||||
*/
|
*/
|
||||||
@Transactional(rollbackFor = Throwable.class)
|
@Transactional(rollbackFor = Throwable.class)
|
||||||
public void save(NoticeEntity noticeEntity, List<NoticeVisibleRangeForm> visibleRangeFormList) {
|
public void save(NoticeEntity noticeEntity, List<NoticeVisibleRangeForm> visibleRangeFormList) {
|
||||||
@ -50,8 +47,6 @@ public class NoticeManager {
|
|||||||
/**
|
/**
|
||||||
* 更新
|
* 更新
|
||||||
*
|
*
|
||||||
* @param noticeEntity
|
|
||||||
* @param visibleRangeList
|
|
||||||
*/
|
*/
|
||||||
@Transactional(rollbackFor = Throwable.class)
|
@Transactional(rollbackFor = Throwable.class)
|
||||||
public void update(NoticeEntity old, NoticeEntity noticeEntity, List<NoticeVisibleRangeForm> visibleRangeList) {
|
public void update(NoticeEntity old, NoticeEntity noticeEntity, List<NoticeVisibleRangeForm> visibleRangeList) {
|
||||||
|
@ -10,13 +10,13 @@ import net.lab1024.sa.admin.module.business.oa.notice.domain.vo.*;
|
|||||||
import net.lab1024.sa.admin.module.system.department.service.DepartmentService;
|
import net.lab1024.sa.admin.module.system.department.service.DepartmentService;
|
||||||
import net.lab1024.sa.admin.module.system.employee.domain.entity.EmployeeEntity;
|
import net.lab1024.sa.admin.module.system.employee.domain.entity.EmployeeEntity;
|
||||||
import net.lab1024.sa.admin.module.system.employee.service.EmployeeService;
|
import net.lab1024.sa.admin.module.system.employee.service.EmployeeService;
|
||||||
import net.lab1024.sa.common.common.domain.PageResult;
|
import net.lab1024.sa.base.common.domain.PageResult;
|
||||||
import net.lab1024.sa.common.common.domain.ResponseDTO;
|
import net.lab1024.sa.base.common.domain.ResponseDTO;
|
||||||
import net.lab1024.sa.common.common.util.SmartBeanUtil;
|
import net.lab1024.sa.base.common.util.SmartBeanUtil;
|
||||||
import net.lab1024.sa.common.common.util.SmartPageUtil;
|
import net.lab1024.sa.base.common.util.SmartPageUtil;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
|
import javax.annotation.Resource;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Objects;
|
import java.util.Objects;
|
||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
@ -29,27 +29,25 @@ import java.util.stream.Collectors;
|
|||||||
* @Date 2022-08-12 21:40:39
|
* @Date 2022-08-12 21:40:39
|
||||||
* @Wechat zhuoda1024
|
* @Wechat zhuoda1024
|
||||||
* @Email lab1024@163.com
|
* @Email lab1024@163.com
|
||||||
* @Copyright 1024创新实验室 ( https://1024lab.net ),2012-2022
|
* @Copyright <a href="https://1024lab.net">1024创新实验室</a>
|
||||||
*/
|
*/
|
||||||
@Service
|
@Service
|
||||||
public class NoticeEmployeeService {
|
public class NoticeEmployeeService {
|
||||||
|
|
||||||
@Autowired
|
@Resource
|
||||||
private NoticeDao noticeDao;
|
private NoticeDao noticeDao;
|
||||||
|
|
||||||
@Autowired
|
@Resource
|
||||||
private NoticeService noticeService;
|
private NoticeService noticeService;
|
||||||
|
|
||||||
@Autowired
|
@Resource
|
||||||
private DepartmentService departmentService;
|
private DepartmentService departmentService;
|
||||||
|
|
||||||
@Autowired
|
@Resource
|
||||||
private EmployeeService employeeService;
|
private EmployeeService employeeService;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 查询我的 通知、公告清单
|
* 查询我的 通知、公告清单
|
||||||
*
|
|
||||||
* @return
|
|
||||||
*/
|
*/
|
||||||
public ResponseDTO<PageResult<NoticeEmployeeVO>> queryList(Long requestEmployeeId, NoticeEmployeeQueryForm noticeEmployeeQueryForm) {
|
public ResponseDTO<PageResult<NoticeEmployeeVO>> queryList(Long requestEmployeeId, NoticeEmployeeQueryForm noticeEmployeeQueryForm) {
|
||||||
Page<?> page = SmartPageUtil.convert2PageQuery(noticeEmployeeQueryForm);
|
Page<?> page = SmartPageUtil.convert2PageQuery(noticeEmployeeQueryForm);
|
||||||
@ -92,8 +90,6 @@ public class NoticeEmployeeService {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* 查询我的 待查看的 通知、公告清单
|
* 查询我的 待查看的 通知、公告清单
|
||||||
*
|
|
||||||
* @return
|
|
||||||
*/
|
*/
|
||||||
public ResponseDTO<NoticeDetailVO> view(Long requestEmployeeId, Long noticeId, String ip, String userAgent) {
|
public ResponseDTO<NoticeDetailVO> view(Long requestEmployeeId, Long noticeId, String ip, String userAgent) {
|
||||||
NoticeUpdateFormVO updateFormVO = noticeService.getUpdateFormVO(noticeId);
|
NoticeUpdateFormVO updateFormVO = noticeService.getUpdateFormVO(noticeId);
|
||||||
@ -120,10 +116,6 @@ public class NoticeEmployeeService {
|
|||||||
/**
|
/**
|
||||||
* 校验是否有查看权限的范围
|
* 校验是否有查看权限的范围
|
||||||
*
|
*
|
||||||
* @param visibleRangeList
|
|
||||||
* @param employeeId
|
|
||||||
* @param departmentId
|
|
||||||
* @return
|
|
||||||
*/
|
*/
|
||||||
public boolean checkVisibleRange(List<NoticeVisibleRangeVO> visibleRangeList, Long employeeId, Long departmentId) {
|
public boolean checkVisibleRange(List<NoticeVisibleRangeVO> visibleRangeList, Long employeeId, Long departmentId) {
|
||||||
// 员工范围
|
// 员工范围
|
||||||
@ -147,13 +139,10 @@ public class NoticeEmployeeService {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* 分页查询 查看记录
|
* 分页查询 查看记录
|
||||||
*
|
|
||||||
* @param noticeViewRecordQueryForm
|
|
||||||
* @return
|
|
||||||
*/
|
*/
|
||||||
public PageResult<NoticeViewRecordVO> queryViewRecord(NoticeViewRecordQueryForm noticeViewRecordQueryForm) {
|
public PageResult<NoticeViewRecordVO> queryViewRecord(NoticeViewRecordQueryForm noticeViewRecordQueryForm) {
|
||||||
Page<?> page = SmartPageUtil.convert2PageQuery(noticeViewRecordQueryForm);
|
Page<?> page = SmartPageUtil.convert2PageQuery(noticeViewRecordQueryForm);
|
||||||
List<NoticeViewRecordVO> noticeViewRecordVOS = noticeDao.queryNoticeViewRecordList(page, noticeViewRecordQueryForm);
|
List<NoticeViewRecordVO> noticeViewRecordList = noticeDao.queryNoticeViewRecordList(page, noticeViewRecordQueryForm);
|
||||||
return SmartPageUtil.convert2PageResult(page, noticeViewRecordVOS);
|
return SmartPageUtil.convert2PageResult(page, noticeViewRecordList);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,6 +1,7 @@
|
|||||||
package net.lab1024.sa.admin.module.business.oa.notice.service;
|
package net.lab1024.sa.admin.module.business.oa.notice.service;
|
||||||
|
|
||||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||||
|
import com.google.common.collect.Maps;
|
||||||
import net.lab1024.sa.admin.module.business.oa.notice.constant.NoticeVisibleRangeDataTypeEnum;
|
import net.lab1024.sa.admin.module.business.oa.notice.constant.NoticeVisibleRangeDataTypeEnum;
|
||||||
import net.lab1024.sa.admin.module.business.oa.notice.dao.NoticeDao;
|
import net.lab1024.sa.admin.module.business.oa.notice.dao.NoticeDao;
|
||||||
import net.lab1024.sa.admin.module.business.oa.notice.domain.entity.NoticeEntity;
|
import net.lab1024.sa.admin.module.business.oa.notice.domain.entity.NoticeEntity;
|
||||||
@ -19,20 +20,19 @@ import net.lab1024.sa.admin.module.system.department.domain.vo.DepartmentVO;
|
|||||||
import net.lab1024.sa.admin.module.system.department.service.DepartmentService;
|
import net.lab1024.sa.admin.module.system.department.service.DepartmentService;
|
||||||
import net.lab1024.sa.admin.module.system.employee.dao.EmployeeDao;
|
import net.lab1024.sa.admin.module.system.employee.dao.EmployeeDao;
|
||||||
import net.lab1024.sa.admin.module.system.employee.domain.entity.EmployeeEntity;
|
import net.lab1024.sa.admin.module.system.employee.domain.entity.EmployeeEntity;
|
||||||
import net.lab1024.sa.common.common.constant.StringConst;
|
import net.lab1024.sa.base.common.constant.StringConst;
|
||||||
import net.lab1024.sa.common.common.domain.PageResult;
|
import net.lab1024.sa.base.common.domain.PageResult;
|
||||||
import net.lab1024.sa.common.common.domain.ResponseDTO;
|
import net.lab1024.sa.base.common.domain.ResponseDTO;
|
||||||
import net.lab1024.sa.common.common.util.SmartBeanUtil;
|
import net.lab1024.sa.base.common.util.SmartBeanUtil;
|
||||||
import net.lab1024.sa.common.common.util.SmartPageUtil;
|
import net.lab1024.sa.base.common.util.SmartPageUtil;
|
||||||
import net.lab1024.sa.common.module.support.datatracer.constant.DataTracerTypeEnum;
|
import net.lab1024.sa.base.module.support.datatracer.constant.DataTracerTypeEnum;
|
||||||
import net.lab1024.sa.common.module.support.datatracer.service.DataTracerService;
|
import net.lab1024.sa.base.module.support.datatracer.service.DataTracerService;
|
||||||
import org.apache.commons.collections4.CollectionUtils;
|
import org.apache.commons.collections4.CollectionUtils;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
|
import javax.annotation.Resource;
|
||||||
import java.time.LocalDateTime;
|
import java.time.LocalDateTime;
|
||||||
import java.util.Collection;
|
import java.util.Collection;
|
||||||
import java.util.HashMap;
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.function.Function;
|
import java.util.function.Function;
|
||||||
@ -45,37 +45,35 @@ import java.util.stream.Collectors;
|
|||||||
* @Date 2022-08-12 21:40:39
|
* @Date 2022-08-12 21:40:39
|
||||||
* @Wechat zhuoda1024
|
* @Wechat zhuoda1024
|
||||||
* @Email lab1024@163.com
|
* @Email lab1024@163.com
|
||||||
* @Copyright 1024创新实验室 ( https://1024lab.net ),2012-2022
|
* @Copyright <a href="https://1024lab.net">1024创新实验室</a>
|
||||||
*/
|
*/
|
||||||
@Service
|
@Service
|
||||||
public class NoticeService {
|
public class NoticeService {
|
||||||
|
|
||||||
@Autowired
|
@Resource
|
||||||
private NoticeDao noticeDao;
|
private NoticeDao noticeDao;
|
||||||
|
|
||||||
@Autowired
|
@Resource
|
||||||
private NoticeManager noticeManager;
|
private NoticeManager noticeManager;
|
||||||
|
|
||||||
@Autowired
|
@Resource
|
||||||
private EmployeeDao employeeDao;
|
private EmployeeDao employeeDao;
|
||||||
|
|
||||||
@Autowired
|
@Resource
|
||||||
private DepartmentDao departmentDao;
|
private DepartmentDao departmentDao;
|
||||||
|
|
||||||
@Autowired
|
@Resource
|
||||||
private DepartmentService departmentService;
|
private DepartmentService departmentService;
|
||||||
|
|
||||||
@Autowired
|
@Resource
|
||||||
private NoticeTypeService noticeTypeService;
|
private NoticeTypeService noticeTypeService;
|
||||||
|
|
||||||
@Autowired
|
@Resource
|
||||||
private DataTracerService dataTracerService;
|
private DataTracerService dataTracerService;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 查询 通知、公告
|
* 查询 通知、公告
|
||||||
*
|
*
|
||||||
* @param queryForm
|
|
||||||
* @return
|
|
||||||
*/
|
*/
|
||||||
public PageResult<NoticeVO> query(NoticeQueryForm queryForm) {
|
public PageResult<NoticeVO> query(NoticeQueryForm queryForm) {
|
||||||
Page<?> page = SmartPageUtil.convert2PageQuery(queryForm);
|
Page<?> page = SmartPageUtil.convert2PageQuery(queryForm);
|
||||||
@ -87,9 +85,6 @@ public class NoticeService {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* 添加
|
* 添加
|
||||||
*
|
|
||||||
* @param addForm
|
|
||||||
* @return
|
|
||||||
*/
|
*/
|
||||||
public ResponseDTO<String> add(NoticeAddForm addForm) {
|
public ResponseDTO<String> add(NoticeAddForm addForm) {
|
||||||
// 校验并获取可见范围
|
// 校验并获取可见范围
|
||||||
@ -112,8 +107,6 @@ public class NoticeService {
|
|||||||
/**
|
/**
|
||||||
* 校验并返回可见范围
|
* 校验并返回可见范围
|
||||||
*
|
*
|
||||||
* @param form
|
|
||||||
* @return
|
|
||||||
*/
|
*/
|
||||||
private ResponseDTO<String> checkAndBuildVisibleRange(NoticeAddForm form) {
|
private ResponseDTO<String> checkAndBuildVisibleRange(NoticeAddForm form) {
|
||||||
// 校验资讯分类
|
// 校验资讯分类
|
||||||
@ -126,7 +119,7 @@ public class NoticeService {
|
|||||||
return ResponseDTO.ok();
|
return ResponseDTO.ok();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/*
|
||||||
* 校验可见范围
|
* 校验可见范围
|
||||||
* 非全部可见时 校验选择的员工|部门
|
* 非全部可见时 校验选择的员工|部门
|
||||||
*/
|
*/
|
||||||
@ -144,7 +137,7 @@ public class NoticeService {
|
|||||||
employeeIdList = employeeIdList.stream().distinct().collect(Collectors.toList());
|
employeeIdList = employeeIdList.stream().distinct().collect(Collectors.toList());
|
||||||
List<Long> dbEmployeeIdList = employeeDao.selectBatchIds(employeeIdList).stream().map(EmployeeEntity::getEmployeeId).collect(Collectors.toList());
|
List<Long> dbEmployeeIdList = employeeDao.selectBatchIds(employeeIdList).stream().map(EmployeeEntity::getEmployeeId).collect(Collectors.toList());
|
||||||
Collection<Long> subtract = CollectionUtils.subtract(employeeIdList, dbEmployeeIdList);
|
Collection<Long> subtract = CollectionUtils.subtract(employeeIdList, dbEmployeeIdList);
|
||||||
if (subtract.size() > 0) {
|
if (!subtract.isEmpty()) {
|
||||||
return ResponseDTO.userErrorParam("员工id不存在:" + subtract);
|
return ResponseDTO.userErrorParam("员工id不存在:" + subtract);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -158,7 +151,7 @@ public class NoticeService {
|
|||||||
deptIdList = deptIdList.stream().distinct().collect(Collectors.toList());
|
deptIdList = deptIdList.stream().distinct().collect(Collectors.toList());
|
||||||
List<Long> dbDeptIdList = departmentDao.selectBatchIds(deptIdList).stream().map(DepartmentEntity::getDepartmentId).collect(Collectors.toList());
|
List<Long> dbDeptIdList = departmentDao.selectBatchIds(deptIdList).stream().map(DepartmentEntity::getDepartmentId).collect(Collectors.toList());
|
||||||
Collection<Long> subtract = CollectionUtils.subtract(deptIdList, dbDeptIdList);
|
Collection<Long> subtract = CollectionUtils.subtract(deptIdList, dbDeptIdList);
|
||||||
if (subtract.size() > 0) {
|
if (!subtract.isEmpty()) {
|
||||||
return ResponseDTO.userErrorParam("部门id不存在:" + subtract);
|
return ResponseDTO.userErrorParam("部门id不存在:" + subtract);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -169,8 +162,6 @@ public class NoticeService {
|
|||||||
/**
|
/**
|
||||||
* 更新
|
* 更新
|
||||||
*
|
*
|
||||||
* @param updateForm
|
|
||||||
* @return
|
|
||||||
*/
|
*/
|
||||||
public ResponseDTO<String> update(NoticeUpdateForm updateForm) {
|
public ResponseDTO<String> update(NoticeUpdateForm updateForm) {
|
||||||
|
|
||||||
@ -195,8 +186,6 @@ public class NoticeService {
|
|||||||
/**
|
/**
|
||||||
* 删除
|
* 删除
|
||||||
*
|
*
|
||||||
* @param noticeId
|
|
||||||
* @return
|
|
||||||
*/
|
*/
|
||||||
public ResponseDTO<String> delete(Long noticeId) {
|
public ResponseDTO<String> delete(Long noticeId) {
|
||||||
NoticeEntity noticeEntity = noticeDao.selectById(noticeId);
|
NoticeEntity noticeEntity = noticeDao.selectById(noticeId);
|
||||||
@ -211,9 +200,6 @@ public class NoticeService {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* 获取更新表单用的详情
|
* 获取更新表单用的详情
|
||||||
*
|
|
||||||
* @param noticeId
|
|
||||||
* @return
|
|
||||||
*/
|
*/
|
||||||
public NoticeUpdateFormVO getUpdateFormVO(Long noticeId) {
|
public NoticeUpdateFormVO getUpdateFormVO(Long noticeId) {
|
||||||
NoticeEntity noticeEntity = noticeDao.selectById(noticeId);
|
NoticeEntity noticeEntity = noticeDao.selectById(noticeId);
|
||||||
@ -232,7 +218,7 @@ public class NoticeService {
|
|||||||
if (CollectionUtils.isNotEmpty(employeeIdList)) {
|
if (CollectionUtils.isNotEmpty(employeeIdList)) {
|
||||||
employeeMap = employeeDao.selectBatchIds(employeeIdList).stream().collect(Collectors.toMap(EmployeeEntity::getEmployeeId, Function.identity()));
|
employeeMap = employeeDao.selectBatchIds(employeeIdList).stream().collect(Collectors.toMap(EmployeeEntity::getEmployeeId, Function.identity()));
|
||||||
} else {
|
} else {
|
||||||
employeeMap = new HashMap<>();
|
employeeMap = Maps.newHashMap();
|
||||||
}
|
}
|
||||||
for (NoticeVisibleRangeVO noticeVisibleRange : noticeVisibleRangeList) {
|
for (NoticeVisibleRangeVO noticeVisibleRange : noticeVisibleRangeList) {
|
||||||
if (noticeVisibleRange.getDataType().equals(NoticeVisibleRangeDataTypeEnum.EMPLOYEE.getValue())) {
|
if (noticeVisibleRange.getDataType().equals(NoticeVisibleRangeDataTypeEnum.EMPLOYEE.getValue())) {
|
||||||
|
@ -4,12 +4,12 @@ import cn.hutool.core.util.StrUtil;
|
|||||||
import net.lab1024.sa.admin.module.business.oa.notice.dao.NoticeTypeDao;
|
import net.lab1024.sa.admin.module.business.oa.notice.dao.NoticeTypeDao;
|
||||||
import net.lab1024.sa.admin.module.business.oa.notice.domain.entity.NoticeTypeEntity;
|
import net.lab1024.sa.admin.module.business.oa.notice.domain.entity.NoticeTypeEntity;
|
||||||
import net.lab1024.sa.admin.module.business.oa.notice.domain.vo.NoticeTypeVO;
|
import net.lab1024.sa.admin.module.business.oa.notice.domain.vo.NoticeTypeVO;
|
||||||
import net.lab1024.sa.common.common.domain.ResponseDTO;
|
import net.lab1024.sa.base.common.domain.ResponseDTO;
|
||||||
import net.lab1024.sa.common.common.util.SmartBeanUtil;
|
import net.lab1024.sa.base.common.util.SmartBeanUtil;
|
||||||
import org.apache.commons.collections4.CollectionUtils;
|
import org.apache.commons.collections4.CollectionUtils;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
|
import javax.annotation.Resource;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Optional;
|
import java.util.Optional;
|
||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
@ -21,12 +21,12 @@ import java.util.stream.Collectors;
|
|||||||
* @Date 2022-08-12 21:40:39
|
* @Date 2022-08-12 21:40:39
|
||||||
* @Wechat zhuoda1024
|
* @Wechat zhuoda1024
|
||||||
* @Email lab1024@163.com
|
* @Email lab1024@163.com
|
||||||
* @Copyright 1024创新实验室 ( https://1024lab.net ),2012-2022
|
* @Copyright <a href="https://1024lab.net">1024创新实验室</a>
|
||||||
*/
|
*/
|
||||||
@Service
|
@Service
|
||||||
public class NoticeTypeService {
|
public class NoticeTypeService {
|
||||||
|
|
||||||
@Autowired
|
@Resource
|
||||||
private NoticeTypeDao noticeTypeDao;
|
private NoticeTypeDao noticeTypeDao;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -3,7 +3,7 @@ package net.lab1024.sa.admin.module.system.datascope;
|
|||||||
|
|
||||||
import net.lab1024.sa.admin.module.system.datascope.constant.DataScopeTypeEnum;
|
import net.lab1024.sa.admin.module.system.datascope.constant.DataScopeTypeEnum;
|
||||||
import net.lab1024.sa.admin.module.system.datascope.constant.DataScopeWhereInTypeEnum;
|
import net.lab1024.sa.admin.module.system.datascope.constant.DataScopeWhereInTypeEnum;
|
||||||
import net.lab1024.sa.admin.module.system.datascope.strategy.DataScopePowerStrategy;
|
import net.lab1024.sa.admin.module.system.datascope.strategy.AbstractDataScopeStrategy;
|
||||||
|
|
||||||
import java.lang.annotation.ElementType;
|
import java.lang.annotation.ElementType;
|
||||||
import java.lang.annotation.Retention;
|
import java.lang.annotation.Retention;
|
||||||
@ -17,7 +17,7 @@ import java.lang.annotation.Target;
|
|||||||
* @Date 2022-03-18 20:59:17
|
* @Date 2022-03-18 20:59:17
|
||||||
* @Wechat zhuoda1024
|
* @Wechat zhuoda1024
|
||||||
* @Email lab1024@163.com
|
* @Email lab1024@163.com
|
||||||
* @Copyright 1024创新实验室 ( https://1024lab.net )
|
* @Copyright <a href="https://1024lab.net">1024创新实验室</a>
|
||||||
*/
|
*/
|
||||||
@Retention(RetentionPolicy.RUNTIME)
|
@Retention(RetentionPolicy.RUNTIME)
|
||||||
@Target(ElementType.METHOD)
|
@Target(ElementType.METHOD)
|
||||||
@ -29,25 +29,21 @@ public @interface DataScope {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* DataScopeWhereInTypeEnum.CUSTOM_STRATEGY类型 才可使用joinSqlImplClazz属性
|
* DataScopeWhereInTypeEnum.CUSTOM_STRATEGY类型 才可使用joinSqlImplClazz属性
|
||||||
* @return
|
|
||||||
*/
|
*/
|
||||||
Class<? extends DataScopePowerStrategy> joinSqlImplClazz() default DataScopePowerStrategy.class;
|
Class<? extends AbstractDataScopeStrategy> joinSqlImplClazz() default AbstractDataScopeStrategy.class;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 多个参数已逗号分隔,本属性主要用于joinSqlImplClazz 实现类跟进参数进行不同的范围控制,如不使用CUSTOM_STRATEGY,可不做配置
|
* 多个参数已逗号分隔,本属性主要用于joinSqlImplClazz 实现类跟进参数进行不同的范围控制,如不使用CUSTOM_STRATEGY,可不做配置
|
||||||
* @return
|
|
||||||
*/
|
*/
|
||||||
String paramName() default "";
|
String paramName() default "";
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
* 第几个where 条件 从0开始
|
* 第几个where 条件 从0开始
|
||||||
* @return
|
|
||||||
*/
|
*/
|
||||||
int whereIndex() default 0;
|
int whereIndex() default 0;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* DataScopeWhereInTypeEnum为CUSTOM_STRATEGY类型时,此属性无效
|
* DataScopeWhereInTypeEnum为CUSTOM_STRATEGY类型时,此属性无效
|
||||||
* @return
|
|
||||||
*/
|
*/
|
||||||
String joinSql() default "";
|
String joinSql() default "";
|
||||||
|
|
||||||
|
@ -1,17 +1,15 @@
|
|||||||
package net.lab1024.sa.admin.module.system.datascope;
|
package net.lab1024.sa.admin.module.system.datascope;
|
||||||
|
|
||||||
import io.swagger.annotations.Api;
|
import io.swagger.v3.oas.annotations.tags.Tag;
|
||||||
import io.swagger.annotations.ApiOperation;
|
import io.swagger.v3.oas.annotations.Operation;
|
||||||
import net.lab1024.sa.admin.common.AdminBaseController;
|
|
||||||
import net.lab1024.sa.admin.constant.AdminSwaggerTagConst;
|
import net.lab1024.sa.admin.constant.AdminSwaggerTagConst;
|
||||||
import net.lab1024.sa.admin.module.system.datascope.domain.DataScopeAndViewTypeVO;
|
import net.lab1024.sa.admin.module.system.datascope.domain.DataScopeAndViewTypeVO;
|
||||||
import net.lab1024.sa.admin.module.system.datascope.service.DataScopeService;
|
import net.lab1024.sa.admin.module.system.datascope.service.DataScopeService;
|
||||||
import net.lab1024.sa.common.common.domain.ResponseDTO;
|
import net.lab1024.sa.base.common.domain.ResponseDTO;
|
||||||
import net.lab1024.sa.common.module.support.operatelog.annoation.OperateLog;
|
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
|
||||||
import org.springframework.web.bind.annotation.GetMapping;
|
import org.springframework.web.bind.annotation.GetMapping;
|
||||||
import org.springframework.web.bind.annotation.RestController;
|
import org.springframework.web.bind.annotation.RestController;
|
||||||
|
|
||||||
|
import javax.annotation.Resource;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -21,17 +19,16 @@ import java.util.List;
|
|||||||
* @Date 2022-03-18 20:59:17
|
* @Date 2022-03-18 20:59:17
|
||||||
* @Wechat zhuoda1024
|
* @Wechat zhuoda1024
|
||||||
* @Email lab1024@163.com
|
* @Email lab1024@163.com
|
||||||
* @Copyright 1024创新实验室 ( https://1024lab.net )
|
* @Copyright <a href="https://1024lab.net">1024创新实验室</a>
|
||||||
*/
|
*/
|
||||||
@OperateLog
|
|
||||||
@RestController
|
@RestController
|
||||||
@Api(tags = {AdminSwaggerTagConst.System.SYSTEM_DATA_SCOPE})
|
@Tag(name = AdminSwaggerTagConst.System.SYSTEM_DATA_SCOPE)
|
||||||
public class DataScopeController extends AdminBaseController {
|
public class DataScopeController {
|
||||||
|
|
||||||
@Autowired
|
@Resource
|
||||||
private DataScopeService dataScopeService;
|
private DataScopeService dataScopeService;
|
||||||
|
|
||||||
@ApiOperation(value = "获取当前系统所配置的所有数据范围 @author 罗伊")
|
@Operation(summary = "获取当前系统所配置的所有数据范围 @author 罗伊")
|
||||||
@GetMapping("/dataScope/list")
|
@GetMapping("/dataScope/list")
|
||||||
public ResponseDTO<List<DataScopeAndViewTypeVO>> dataScopeList() {
|
public ResponseDTO<List<DataScopeAndViewTypeVO>> dataScopeList() {
|
||||||
return dataScopeService.dataScopeList();
|
return dataScopeService.dataScopeList();
|
||||||
|
@ -4,7 +4,7 @@ import cn.hutool.core.util.StrUtil;
|
|||||||
import com.google.common.collect.Maps;
|
import com.google.common.collect.Maps;
|
||||||
import net.lab1024.sa.admin.module.system.datascope.domain.DataScopeSqlConfig;
|
import net.lab1024.sa.admin.module.system.datascope.domain.DataScopeSqlConfig;
|
||||||
import net.lab1024.sa.admin.module.system.datascope.service.DataScopeSqlConfigService;
|
import net.lab1024.sa.admin.module.system.datascope.service.DataScopeSqlConfigService;
|
||||||
import net.lab1024.sa.common.common.domain.DataScopePlugin;
|
import net.lab1024.sa.base.common.domain.DataScopePlugin;
|
||||||
import org.apache.commons.lang3.StringUtils;
|
import org.apache.commons.lang3.StringUtils;
|
||||||
import org.apache.ibatis.mapping.*;
|
import org.apache.ibatis.mapping.*;
|
||||||
import org.apache.ibatis.plugin.Intercepts;
|
import org.apache.ibatis.plugin.Intercepts;
|
||||||
@ -13,10 +13,10 @@ import org.apache.ibatis.plugin.Plugin;
|
|||||||
import org.apache.ibatis.plugin.Signature;
|
import org.apache.ibatis.plugin.Signature;
|
||||||
import org.apache.ibatis.session.ResultHandler;
|
import org.apache.ibatis.session.ResultHandler;
|
||||||
import org.apache.ibatis.session.RowBounds;
|
import org.apache.ibatis.session.RowBounds;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
|
||||||
import org.springframework.context.ApplicationContext;
|
import org.springframework.context.ApplicationContext;
|
||||||
import org.springframework.stereotype.Component;
|
import org.springframework.stereotype.Component;
|
||||||
|
|
||||||
|
import javax.annotation.Resource;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.Properties;
|
import java.util.Properties;
|
||||||
@ -28,13 +28,13 @@ import java.util.Properties;
|
|||||||
* @Date 2022-03-18 20:59:17
|
* @Date 2022-03-18 20:59:17
|
||||||
* @Wechat zhuoda1024
|
* @Wechat zhuoda1024
|
||||||
* @Email lab1024@163.com
|
* @Email lab1024@163.com
|
||||||
* @Copyright 1024创新实验室 ( https://1024lab.net )
|
* @Copyright <a href="https://1024lab.net">1024创新实验室</a>
|
||||||
*/
|
*/
|
||||||
@Intercepts({@Signature(type = org.apache.ibatis.executor.Executor.class, method = "query", args = {MappedStatement.class, Object.class, RowBounds.class, ResultHandler.class})})
|
@Intercepts({@Signature(type = org.apache.ibatis.executor.Executor.class, method = "query", args = {MappedStatement.class, Object.class, RowBounds.class, ResultHandler.class})})
|
||||||
@Component
|
@Component
|
||||||
public class MyBatisPlugin extends DataScopePlugin {
|
public class MyBatisPlugin extends DataScopePlugin {
|
||||||
|
|
||||||
@Autowired
|
@Resource
|
||||||
private ApplicationContext applicationContext;
|
private ApplicationContext applicationContext;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user