Compare commits

...

367 Commits

Author SHA1 Message Date
chenxudong 895f2f9caa 更新配置文件 2025-04-29 14:01:00 +08:00
chenxudong ffc78462c8 将向量库从es切换到mariadb 2025-04-29 13:59:38 +08:00
chenxudong 480f5a1456 解决查询的bug 2025-04-27 13:34:29 +08:00
chenxudong 402e60b65f 预览文件时删除临时文件 2025-04-27 10:58:54 +08:00
chenxudong a04b6047f1 mysql与mariadb共存 2025-04-27 10:19:38 +08:00
chenxudong e01b5a2cf8 开发环境数据库移植到mariadb 2025-04-27 10:05:32 +08:00
chenxudong 750d21d8f9 修改日志输出 2025-04-25 17:36:08 +08:00
chenxudong a4aba1fdfc 修改已知问题。 2025-04-25 15:15:35 +08:00
chenxudong 963428a157 优化代码 2025-04-25 11:39:59 +08:00
chenxudong e720411d24 优化代码 2025-04-25 11:24:18 +08:00
chenxudong 0fe0d53d76 优化代码 2025-04-25 11:21:53 +08:00
chenxudong dbba7ea178 修改bug 2025-04-25 11:09:37 +08:00
chenxudong 3dc82bdea3 clean code 2025-04-24 17:37:57 +08:00
s2042968 71b8297312 fix:收藏文件修改 2025-04-24 16:37:01 +08:00
s2042968 94a8c8ec43 登陆返回消息修改 2025-04-24 15:17:29 +08:00
s2042968 9b5bab91be 增加预览权限 2025-04-24 15:14:39 +08:00
s2042968 e210b2f1fe 代码优化 2025-04-24 14:33:56 +08:00
s2042968 42ff118157 Merge branch 'dev-jdk17' of http://139.196.179.195:3000/chenxudong/electromagnetic-data-new into dev-jdk17 2025-04-24 13:54:02 +08:00
s2042968 43001fca86 代码优化 2025-04-24 13:53:48 +08:00
chenxudong 80c3638631 优化代码 2025-04-24 11:45:42 +08:00
chenxudong c0c07202a2 恢复导出时根据文件有效性做过滤 2025-04-24 09:34:34 +08:00
chenxudong ec77d371c1 导出文件关系,标签和收藏时增加有效性的筛选。 2025-04-24 09:20:42 +08:00
s2042968 fe656f9beb Merge branch 'dev-jdk17' of http://139.196.179.195:3000/chenxudong/electromagnetic-data-new into dev-jdk17 2025-04-24 09:14:54 +08:00
chenxudong d8fec2ca0b Merge branch 'dev-jdk17' of http://139.196.179.195:3000/chenxudong/electromagnetic-data-new into dev-jdk17 2025-04-24 09:08:24 +08:00
chenxudong 14dec7319e 数据库备份的时间转换 2025-04-24 09:08:15 +08:00
s2042968 851c7e0d47 代码优化 2025-04-23 16:17:22 +08:00
s2042968 77cf01c372 收藏数据接口修改 2025-04-23 14:22:09 +08:00
s2042968 01ff53aa83 Merge branch 'dev-jdk17' of http://139.196.179.195:3000/chenxudong/electromagnetic-data-new into dev-jdk17 2025-04-22 17:54:54 +08:00
s2042968 be18f0eed6 取消收藏改为逻辑删除 2025-04-22 17:54:39 +08:00
chenxudong 791fe905cc 修改备份的问题。 2025-04-22 16:56:46 +08:00
s2042968 997bef0b3b Merge branch 'dev-jdk17' of http://139.196.179.195:3000/chenxudong/electromagnetic-data-new into dev-jdk17 2025-04-22 16:35:59 +08:00
s2042968 be45a0700b 代码优化 2025-04-22 16:31:05 +08:00
chenxudong 0b74ec12fd 优化代码。 2025-04-22 15:41:47 +08:00
chenxudong 3fe8c1498f 优化功能,修复已知问题。 2025-04-22 15:31:12 +08:00
chenxudong 16a256ced8 修改已知问题 2025-04-22 11:31:02 +08:00
chenxudong 1fec7792ff 配置文件优化 2025-04-22 11:06:12 +08:00
chenxudong 98baf35bb1 优化 2025-04-22 10:05:15 +08:00
chenxudong 881e5bf5c9 将AI中支持上传的文件类型转移到配置文件 2025-04-22 10:02:19 +08:00
chenxudong 832ed737bf reformat code 2025-04-22 09:26:36 +08:00
chenxudong 34c51c775e 优化代码。 2025-04-21 15:50:27 +08:00
chenxudong a6cb01bfdb 优化代码 2025-04-21 14:39:31 +08:00
chenxudong 2d43880a51 优化代码 2025-04-21 14:31:57 +08:00
chenxudong 284dea6a98 优化上传文件。 2025-04-21 14:07:42 +08:00
s2042968 344666b50b 解决合并冲突 2025-04-21 10:27:43 +08:00
s2042968 51caef89ef fix:用户代码优化 2025-04-21 10:25:41 +08:00
chenxudong 98dd3e1938 修改已知问题 2025-04-21 09:03:09 +08:00
s2042968 183ac999cb fix:用户代码优化 2025-04-18 16:54:20 +08:00
chenxudong 0749e8e543 优化配置文件 2025-04-18 15:24:32 +08:00
chenxudong f48c02967d 优化代码。 2025-04-18 10:42:21 +08:00
chenxudong 7944c5bfc9 优化代码。 2025-04-18 10:05:24 +08:00
chenxudong 330d0a4310 优化系统恢复的逻辑。 2025-04-18 09:46:38 +08:00
chenxudong b13f41f8ed 优化代码 2025-04-17 17:35:20 +08:00
chenxudong 48ca408ef3 编译通过,格式化代码。 2025-04-17 17:20:19 +08:00
chenxudong 6c31cd0c42 新增导出工程时用户创建的空文件夹校验。 2025-04-17 17:13:28 +08:00
s2042968 0dc0c1d658 Merge branch 'dev-jdk17' of http://139.196.179.195:3000/chenxudong/electromagnetic-data-new into dev-jdk17 2025-04-17 16:56:14 +08:00
s2042968 1174a74211 fix:角色权限相关表更改及代码优化 2025-04-17 16:56:03 +08:00
chenxudong efcf899114 clean code 2025-04-17 16:39:08 +08:00
chenxudong e27c3d9c65 优化代码 2025-04-17 15:56:17 +08:00
chenxudong 73b99308be 补充导入的一些功能逻辑 2025-04-17 14:46:04 +08:00
chenxudong a0bbdaddc8 Merge branch 'dev-jdk17' of http://139.196.179.195:3000/chenxudong/electromagnetic-data-new into dev-jdk17 2025-04-17 11:04:06 +08:00
chenxudong ea62e1ecb7 调通了数据库导入的部分功能 2025-04-17 11:03:02 +08:00
s2042968 89821b83f5 解决合并冲突 2025-04-17 10:21:09 +08:00
s2042968 419d3f0a9e fix:
-解决循环依赖问题
-建立关系处添加文件上传类型
2025-04-17 10:17:29 +08:00
chenxudong 4d145eaaea Merge branch 'dev-jdk17' of http://139.196.179.195:3000/chenxudong/electromagnetic-data-new into dev-jdk17
# Conflicts:
#	electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/pojo/models/EdFileRelation.java
#	electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/service/serviceimpl/EdFileRelationServiceImpl.java
解决冲突。
2025-04-17 10:16:50 +08:00
chenxudong 50040f2216 调通了导出的相关功能。 2025-04-17 10:03:34 +08:00
s2042968 a7c19b1c93 合并冲突 2025-04-17 09:47:05 +08:00
chenxudong d9525bc13b 完成导入导出文件其余属性的大体逻辑。 2025-04-16 18:00:42 +08:00
chenxudong dda88c8aad 修复已知问题。 2025-04-16 17:06:58 +08:00
s2042968 d2a1a34328 fix:修改文件导出功能
- 增添文件收藏,文件关联关系查询条件:有效性
2025-04-16 17:06:12 +08:00
s2042968 f7275abe20 fix:修改文件关联关系表及相应功能 2025-04-16 17:04:59 +08:00
chenxudong d466e8fa16 Ai中强制使用中文回答 2025-04-16 16:27:18 +08:00
chenxudong 1aae819f4e 文件备份的bug 2025-04-16 16:07:36 +08:00
chenxudong 7139f5350c 解决复制和移动文件时文件内容丢失的bug 2025-04-16 15:37:42 +08:00
s2042968 08310e1606 fix:修改文件收藏表及相应功能 2025-04-16 14:58:04 +08:00
chenxudong b634a4396f clean code 2025-04-16 14:56:35 +08:00
chenxudong 2f1d15240e 优化代码 2025-04-16 14:51:40 +08:00
chenxudong 7e4e8df1f4 优化代码。 2025-04-16 14:17:08 +08:00
chenxudong 560b7b30c7 优化代码。 2025-04-16 13:55:14 +08:00
chenxudong e1e6e9f466 去掉uuid 2025-04-16 13:43:33 +08:00
chenxudong cb4cfe1618 文件备份的适配,屏蔽文件删除相关的功能。 2025-04-16 12:06:19 +08:00
chenxudong 2c7b0eea0a 优化下载文件名称的展示 2025-04-16 11:49:31 +08:00
chenxudong df763a94c9 解决文件copy的bug 2025-04-16 11:41:23 +08:00
chenxudong c983fda287 1.文件系统完全依赖MySQL,去除操作系统层面的维护。
2.整理代码。
2025-04-16 11:26:07 +08:00
chenxudong 98d8b621b3 reformat code 2025-04-15 17:44:00 +08:00
chenxudong 56a49fb271 解决层级引用的问题。 2025-04-15 16:46:32 +08:00
chenxudong 750eba800e 解决删除层级的bug 2025-04-15 16:00:37 +08:00
chenxudong 70111a98fe 编译通过 2025-04-15 14:36:56 +08:00
chenxudong 98e7023c5c 优化部分功能。 2025-04-15 14:25:13 +08:00
chenxudong 044c9f1b42 修复导入部分功能。 2025-04-15 14:22:45 +08:00
chenxudong 67fb0f2b39 调通了导入prd上的各个功能。 2025-04-15 11:05:28 +08:00
chenxudong efb9d4f055 调通了导入导出的部分功能。 2025-04-14 16:29:01 +08:00
s2042968 a22b20aab7 fix:库文件增添取消收藏接口 2025-04-11 17:43:57 +08:00
s2042968 821f4adfc1 fix:废除标签时同时废除标签关联关系 2025-04-11 17:16:32 +08:00
s2042968 346b971481 fix:已发布标签组添加标签时也显示已发布 2025-04-11 17:01:40 +08:00
chenxudong 83abbd18f1 解决repackage报红的问题 2025-04-11 12:09:09 +08:00
chenxudong 36e57222f9 优化编译依赖 2025-04-11 11:09:14 +08:00
chenxudong 692af9163c 使用switch预计代替多个if-else的demo 2025-04-11 10:22:31 +08:00
chenxudong 0712a1d912 refactor code 2025-04-10 16:34:11 +08:00
chenxudong 49283d068f 优化文件和文件夹的删除逻辑 2025-04-10 16:32:02 +08:00
chenxudong acd011e69f 改bug 2025-04-10 11:49:33 +08:00
chenxudong 0a75c9c773 优化代码 2025-04-09 18:00:45 +08:00
chenxudong 815bf60b65 clean code 2025-04-09 17:25:08 +08:00
chenxudong c525e30372 优化代码 2025-04-09 16:57:42 +08:00
chenxudong d1dead8802 windows上调通了将pdf转成图片,再使用ocr识别。 2025-04-09 15:15:35 +08:00
chenxudong 86cda0a547 新增pdf文档的图片orc解析 2025-04-09 12:06:23 +08:00
chenxudong b5da2e3082 优化部分请求日志记录 2025-04-08 17:29:20 +08:00
chenxudong 1860c2f41b 重置依赖 2025-04-08 17:12:36 +08:00
chenxudong fd81961ddb clean code 2025-04-08 16:24:14 +08:00
chenxudong 1be0488bd6 工程最大层级数从配置文件获取 2025-04-08 15:28:39 +08:00
chenxudong d247fda266 优化代码,修改文件备份的bug 2025-04-08 15:21:38 +08:00
chenxudong 8043e8055d 修改bug 2025-04-08 15:10:36 +08:00
chenxudong cbbcdad382 优化了上传文件的临时存储路径 2025-04-08 14:29:03 +08:00
chenxudong 251908b8b0 clean code 2025-04-08 14:05:39 +08:00
chenxudong 095efe428a refacotr code 2025-04-08 11:58:52 +08:00
chenxudong e11157ec41 优化代码 2025-04-08 11:56:09 +08:00
chenxudong c695c3b404 设置Ai中的temperature 2025-04-08 11:16:19 +08:00
chenxudong 8dab45c624 解决发现的问题 2025-04-08 10:37:58 +08:00
chenxudong 98ed6eafdb 解决AI中大文件上传的问题 2025-04-08 09:14:23 +08:00
chenxudong 081bbbd629 解决bug 2025-04-07 15:20:48 +08:00
chenxudong 862eb216e5 ai中excel的解析 2025-04-07 15:18:04 +08:00
chenxudong 46d68f8d4b 问支持word,ppt,excel,text,csv等上传 2025-04-07 15:10:14 +08:00
chenxudong b0fe94d2ee 修改已知问题。 2025-04-03 17:46:59 +08:00
chenxudong 97f68690b2 新增用户问题记录功能。 2025-04-03 17:06:37 +08:00
chenxudong 218a2af06e clean code 2025-04-03 16:48:22 +08:00
chenxudong 2e1de849b2 解决AI中上传pdf文件解析的bug 2025-04-03 16:30:57 +08:00
chenxudong 9b177b5c1d clean code 2025-04-03 15:03:53 +08:00
chenxudong 059a417001 测试通了删除es文档 2025-04-03 14:39:40 +08:00
chenxudong 2a0886c7ce 新增删除文档的功能,供后面需要时使用。 2025-04-03 13:56:43 +08:00
chenxudong 4217b9dc66 备份的工程新增了parameters 2025-04-03 12:10:56 +08:00
chenxudong e951153a9f 新增记录AI上传文件的大小记录。 2025-04-03 12:07:02 +08:00
chenxudong 87cfbb4d0e 测试通了AI文件上传。 2025-04-03 12:02:04 +08:00
chenxudong b8476c2398 clean code 2025-04-03 09:37:43 +08:00
chenxudong dc7498806e refactor code 2025-04-03 09:10:27 +08:00
chenxudong d123811617 完成AI相关接口 2025-04-02 18:03:37 +08:00
chenxudong 9f48a4db76 调通了jdk17 2025-04-02 16:42:53 +08:00
chenxudong bf080e393d 在jdk17下可以编译成功 2025-04-01 10:54:56 +08:00
chenxudong 1a42ca6a55 完善接口。 2025-04-01 10:38:11 +08:00
chenxudong 48ad417e94 完善AI相关接口 2025-04-01 10:25:00 +08:00
chenxudong 0c84a91bc8 新增AI相关接口 2025-03-31 16:50:44 +08:00
chenxudong 2735a5296a 增加xml和md文件的解析 2025-03-28 16:22:23 +08:00
chenxudong 75100a33db clean code 2025-03-28 15:50:06 +08:00
chenxudong f5c9dec963 clean code 2025-03-28 14:58:40 +08:00
chenxudong 42377da9f8 clean code 2025-03-28 13:44:42 +08:00
chenxudong ae25a60b1c 文件分组优化 2025-03-28 11:31:15 +08:00
chenxudong 46107e53ef 去掉根据请求url的模糊匹配 2025-03-28 11:12:54 +08:00
chenxudong ac8277f959 文件相关操作的日志新增路径。 2025-03-28 10:42:04 +08:00
chenxudong dbeccc65df 优化部分功能 2025-03-28 10:19:16 +08:00
chenxudong 0fd2804517 优化代码 2025-03-28 09:42:11 +08:00
chenxudong 567f6e53e8 优化文件查询。 2025-03-27 17:54:05 +08:00
chenxudong c539c88c7c clean code 2025-03-27 17:34:52 +08:00
chenxudong 2e5f36a9c9 重写edFileInfo的selectById的方法。 2025-03-27 17:03:24 +08:00
chenxudong c323e12cf8 修改存在的bug 2025-03-27 16:35:19 +08:00
chenxudong 9bca629336 clean code 2025-03-27 15:55:15 +08:00
chenxudong 46771e9a90 修改已知问题 2025-03-27 15:51:14 +08:00
chenxudong 3b721dd3c9 修改已知问题。 2025-03-27 15:06:57 +08:00
chenxudong 47c4a16fb7 修改文件备份的bug 2025-03-27 14:05:33 +08:00
chenxudong 75913cdc1b 优化审计记录。 2025-03-27 12:11:57 +08:00
chenxudong f22aad8b27 优化代码,解决已知问题。 2025-03-27 11:17:01 +08:00
chenxudong 6ca5b5cec5 新建文件夹增加权限校验。 2025-03-27 09:49:03 +08:00
chenxudong 18a56f111e 优化文件存储位置 2025-03-27 09:10:02 +08:00
chenxudong 5390bd1e40 修改已知问题。 2025-03-26 18:01:44 +08:00
chenxudong 5b2817d66e 1.物理删除文件时不删除远端文件。2.个人数据层级结构新增用户id隔离。 2025-03-26 17:45:47 +08:00
chenxudong 6a48585380 优化部分操作。 2025-03-26 17:16:00 +08:00
chenxudong 849f96cf20 修改发现的问题 2025-03-26 15:53:24 +08:00
chenxudong 9da19d7e4e 优化文件恢复 2025-03-25 17:19:38 +08:00
chenxudong 9b2698d919 解决ip解析的问题 2025-03-25 16:01:54 +08:00
chenxudong 14a862e025 优化物理删除。 2025-03-25 15:21:57 +08:00
chenxudong 038747d236 优化日志查询 2025-03-25 14:25:40 +08:00
chenxudong 21ee580fc7 增加word转pdf的缓存。 2025-03-25 12:04:41 +08:00
chenxudong a5766b31d3 重写Linux下word转pdf 2025-03-25 11:47:05 +08:00
chenxudong 7e96ca171e 修改项目数据发布管理的bug 2025-03-25 10:57:43 +08:00
chenxudong 5d4e70206b 增加部分接口的操作信息 2025-03-25 10:39:48 +08:00
chenxudong 280b4e691e 去掉根据文件内容进行匹配。 2025-03-25 10:08:16 +08:00
chenxudong e004eed373 优化部分功能。 2025-03-25 10:06:08 +08:00
chenxudong 3c3bc2074a 优化时间的格式化 2025-03-25 09:51:54 +08:00
chenxudong 97227974e4 clean code 2025-03-25 09:22:25 +08:00
chenxudong ff32992c8d 解决文件预览失败的日志记录。 2025-03-25 09:16:53 +08:00
chenxudong 228a8d5142 修改已知问题。 2025-03-24 16:35:05 +08:00
chenxudong efe6c79713 修改已知问题。 2025-03-24 16:28:52 +08:00
chenxudong 7aa4613b96 Merge branch 'develop' of http://139.196.179.195:3000/chenxudong/electromagnetic-data-new into develop 2025-03-24 16:19:13 +08:00
chenxudong 6c0632242d 优化部分日志收集。 2025-03-24 16:19:04 +08:00
s2042968 ad2f822dca Merge branch 'develop' of http://139.196.179.195:3000/chenxudong/electromagnetic-data-new into develop 2025-03-24 16:02:28 +08:00
s2042968 e2d64cbce7 fix:
-文件详情增加标签信息
-增加库数据标识
2025-03-24 16:02:19 +08:00
chenxudong 54a6901dbb 批量操作时新增每个文件的操作记录。 2025-03-24 15:39:15 +08:00
chenxudong 21d282c882 修改已知问题。 2025-03-24 14:31:50 +08:00
chenxudong dd8f900bec 在恢复文件时,新增了同名同后缀的判断。 2025-03-24 14:18:32 +08:00
chenxudong 5fd43452de Merge branch 'develop' of http://139.196.179.195:3000/chenxudong/electromagnetic-data-new into develop 2025-03-24 14:08:41 +08:00
chenxudong d9ffa2438d 修改回收站查询的bug 2025-03-24 14:08:35 +08:00
s2042968 bea84f57c2 fix:文件格式排序优化 2025-03-21 15:30:08 +08:00
s2042968 8e07e4dd8a feat:增加库文件权限管理 2025-03-21 15:08:27 +08:00
chenxudong d5a6459734 测试发现的问题 2025-03-21 14:23:34 +08:00
s2042968 e26819824a fix:废除标签同时废除标签文件关系 2025-03-20 15:36:32 +08:00
s2042968 52ed7f3a53 fix:废除标签同时废除标签文件关系 2025-03-20 15:08:29 +08:00
s2042968 b961c267c8 fix:权限显示问题 2025-03-20 14:29:58 +08:00
s2042968 d299e347e4 feat:收藏页点击文件夹显示文件信息 2025-03-20 13:28:21 +08:00
s2042968 1f0bff89ca Merge branch 'develop' of http://139.196.179.195:3000/chenxudong/electromagnetic-data-new into develop 2025-03-20 09:28:02 +08:00
chenxudong 617d005e0d 增加详细日志输出。 2025-03-18 14:08:01 +08:00
chenxudong dca641d664 新增在备份SQL时,导出MySQL的数据。 2025-03-18 12:03:45 +08:00
chenxudong 19ed3f1b1b 调整定时备份相关 2025-03-18 10:58:52 +08:00
chenxudong 9ac1b9fdf5 解决已知问题。 2025-03-18 10:37:34 +08:00
chenxudong 06844c7557 重写了follow处理,修改发现的已知问题。 2025-03-18 10:30:54 +08:00
chenxudong 56b5838177 重写了工程层级沿用,待测试。 2025-03-17 18:01:09 +08:00
chenxudong b840c659a0 clean code 2025-03-17 15:00:07 +08:00
chenxudong 1b71543cb6 解决发现问题。 2025-03-17 14:38:25 +08:00
chenxudong 6697cbdfcb 改bug 2025-03-17 11:57:15 +08:00
chenxudong d2b391a2ea 解决已知问题。 2025-03-14 14:30:22 +08:00
chenxudong 2e4f7eb099 1.新增备份SQL文件功能。
2.新增数据库恢复。
2025-03-14 10:52:20 +08:00
chenxudong d58d783979 新增删除备份文件,下载备份文件的接口。 2025-03-13 17:24:02 +08:00
chenxudong 1d37a302be 解决发现的问题。 2025-03-13 09:28:54 +08:00
chenxudong 8213bbf18c 开启定时任务,修改已知问题。 2025-03-12 16:25:06 +08:00
chenxudong 10ca9cd403 解决已知问题。 2025-03-12 13:49:19 +08:00
chenxudong ab8786be7f 解决发现问题。 2025-03-12 11:47:19 +08:00
chenxudong 4be8e338dd 解决发现的问题。 2025-03-12 10:26:39 +08:00
chenxudong 830b0b484f 修改已知问题。 2025-03-12 09:44:10 +08:00
chenxudong efb061c5ad 解决已知问题 2025-03-10 15:55:41 +08:00
chenxudong 1df178b74d refactory properties 2025-03-07 17:51:14 +08:00
chenxudong aea1427eaa 新增库文件相关功能的适配。 2025-03-07 17:43:38 +08:00
chenxudong fc56722ce5 解决已知问题。 2025-03-07 15:51:28 +08:00
chenxudong e119cf7d05 修改已知问题。 2025-03-07 15:07:20 +08:00
chenxudong ff2d3c3e7b 优化代码,新增库文件相关功能。 2025-03-07 14:20:40 +08:00
s2042968 b311ba2c11 fix:修改收藏权限 2025-03-07 14:12:51 +08:00
chenxudong 83ff46efc3 优化代码。 2025-03-07 13:46:44 +08:00
chenxudong eac95e140f 解决已知问题。 2025-03-07 11:42:19 +08:00
chenxudong 5fa31e6a0f clean code 2025-03-07 10:46:24 +08:00
chenxudong 8556f5ae4a clean code 2025-03-07 10:41:15 +08:00
chenxudong 10439890d5 修改已知问题。 2025-03-07 10:31:06 +08:00
chenxudong 959433bbe7 调通了层级定义树和用户界面树的相关查询。 2025-03-07 10:13:37 +08:00
chenxudong 7f9d2cf3bf 优化查询。 2025-03-07 08:57:08 +08:00
chenxudong e41ef76803 Merge branch 'develop' of http://139.196.179.195:3000/chenxudong/electromagnetic-data-new into develop 2025-03-06 18:04:59 +08:00
chenxudong 53f61ba8f8 调通了层级树查询。 2025-03-06 18:04:56 +08:00
s2042968 f05803432f Merge branch 'develop' of http://139.196.179.195:3000/chenxudong/electromagnetic-data-new into develop 2025-03-06 13:50:17 +08:00
s2042968 8e3f27eeaf fix:修改标签批量发布的入参 2025-03-06 13:50:06 +08:00
chenxudong f51f76fa6d 解决发现的问题。 2025-03-06 13:49:14 +08:00
s2042968 2924849d2f fix:增加标签排序入参 2025-03-06 10:03:38 +08:00
chenxudong 0c5aab655a 改bug 2025-03-05 17:48:55 +08:00
chenxudong 1d3f0e267e 改bug 2025-03-05 17:21:59 +08:00
chenxudong 314c93efb9 Merge branch 'develop' of http://139.196.179.195:3000/chenxudong/electromagnetic-data-new into develop 2025-03-05 17:07:40 +08:00
chenxudong fd4ea6c77f 修改bug 2025-03-05 17:07:36 +08:00
s2042968 964011b8d9 fix:修改标签查看接口出参 2025-03-05 16:47:57 +08:00
s2042968 6110687938 fix:查看收藏数据接口,增加view权限 2025-03-05 16:39:10 +08:00
s2042968 d48a592e85 Merge branch 'develop' of http://139.196.179.195:3000/chenxudong/electromagnetic-data-new into develop 2025-03-05 16:26:16 +08:00
s2042968 2549ca5db4 fix:标签库接口连调修改 2025-03-05 16:25:33 +08:00
chenxudong 8f5486df67 解决已知问题。 2025-03-05 16:12:35 +08:00
s2042968 a148bc463a Merge branch 'develop' of http://139.196.179.195:3000/chenxudong/electromagnetic-data-new into develop 2025-03-05 15:42:22 +08:00
s2042968 d549cc6b73 feat:收藏页数据接口设置权限 2025-03-05 15:42:13 +08:00
chenxudong a55bb0eb18 解决删除文件格式的bug 2025-03-05 15:26:26 +08:00
chenxudong 82acc597e6 适配更新自动填充 2025-03-05 15:20:45 +08:00
chenxudong 6c569dbccf 优化数据备份相关代码。 2025-03-05 14:18:33 +08:00
chenxudong 3bfbebf460 Merge branch 'develop' of http://139.196.179.195:3000/chenxudong/electromagnetic-data-new into develop 2025-03-05 13:42:31 +08:00
chenxudong b2063c6219 解决已知问题。 2025-03-05 13:42:24 +08:00
s2042968 52e58019fc feat:个人数据增添标签接口 2025-03-05 12:15:13 +08:00
s2042968 7a76d94581 fix:处理空标签查询 2025-03-05 12:14:51 +08:00
s2042968 a1fa5a9225 fix:文件格式补充创建人 2025-03-05 12:14:06 +08:00
s2042968 63c2e3c250 fix:收藏查询SQL 2025-03-05 12:13:39 +08:00
s2042968 5a3874a748 Merge branch 'develop' of http://139.196.179.195:3000/chenxudong/electromagnetic-data-new into develop 2025-03-05 10:48:23 +08:00
s2042968 3e6471079d feat: 标签筛选功能 2025-03-05 10:48:16 +08:00
chenxudong 5f0c7ce861 Merge branch 'develop' of http://139.196.179.195:3000/chenxudong/electromagnetic-data-new into develop 2025-03-05 10:38:10 +08:00
chenxudong 5d8fca9ee1 新增了查询备份信息的接口 2025-03-05 10:37:45 +08:00
s2042968 080d369e42 合并,解决冲突 2025-03-05 10:27:37 +08:00
s2042968 a750c3cb62 feat: 修改文件数据接口的返回结果,增添收藏标识,个人文件标识和标签列表 2025-03-05 10:26:32 +08:00
chenxudong 77fdd99e69 新增备份日志查询 2025-03-05 10:25:24 +08:00
s2042968 3d908e23b6 fix:角色权限关系主键id改为字符串类型 2025-03-05 09:49:23 +08:00
chenxudong 4d201505dc 实现文件控制白名单 2025-03-05 09:10:23 +08:00
chenxudong dc7d061be2 Merge branch 'develop' of http://139.196.179.195:3000/chenxudong/electromagnetic-data-new into develop 2025-03-04 17:23:11 +08:00
chenxudong 543d253ac4 完善文件格式上传功能 2025-03-04 17:22:58 +08:00
lizhanhao 4bd12e3761 新增批量添加标签到文件功能 2025-03-04 17:19:08 +08:00
s2042968 12e45cf7d1 fix:文件格式主键id改为字符串类型 2025-03-04 15:36:43 +08:00
s2042968 2ea2a156ca Merge branch 'develop' of http://139.196.179.195:3000/chenxudong/electromagnetic-data-new into develop 2025-03-04 15:19:37 +08:00
s2042968 b578b91b0d feat:文件格式管理功能 2025-03-04 15:19:27 +08:00
chenxudong e91fb07dff 删除无用代码。 2025-03-04 14:55:17 +08:00
chenxudong 4052d9b0ea 优化代码 2025-03-04 14:50:03 +08:00
chenxudong 34fdf667ec 添加tag和属性预览相关。 2025-03-04 14:33:42 +08:00
s2042968 d44de8d924 Merge branch 'develop' of http://139.196.179.195:3000/chenxudong/electromagnetic-data-new into develop 2025-03-04 13:20:11 +08:00
chenxudong bd59d91776 优化代码。 2025-03-04 10:57:36 +08:00
chenxudong 69fa79bf59 解决发现的问题 2025-03-04 10:51:05 +08:00
chenxudong b911212ef2 解决导出的问题 2025-03-03 17:27:13 +08:00
chenxudong 68724883a7 解决已知问题。 2025-03-03 15:42:20 +08:00
s2042968 b8142c5ff2 Merge branch 'develop' of http://139.196.179.195:3000/chenxudong/electromagnetic-data-new into develop 2025-03-03 14:24:28 +08:00
s2042968 965831ae6b feat:添加筛选页面展示所有标签功能 2025-03-03 14:08:12 +08:00
chenxudong 5cb52e3252 调通用户工程查询。 2025-03-03 13:40:06 +08:00
chenxudong e506ef262a 暂时存放 2025-03-03 11:55:52 +08:00
chenxudong 60269d0409 Merge branch 'develop' of http://139.196.179.195:3000/chenxudong/electromagnetic-data-new into develop 2025-03-03 09:10:49 +08:00
chenxudong f468e0f680 新增用户上传的文件或创建文件夹的标识。 2025-03-03 09:09:14 +08:00
s2042968 96edc80df9 Merge branch 'develop' of http://139.196.179.195:3000/chenxudong/electromagnetic-data-new into develop 2025-02-28 17:09:51 +08:00
chenxudong 833a0877b7 修改已知问题 2025-02-28 15:29:30 +08:00
chenxudong 8ba1de209b 重构文件收藏相关功能。 2025-02-28 15:08:21 +08:00
chenxudong 4f51521354 完成文件备份相关的功能 2025-02-28 14:13:13 +08:00
s2042968 9c6ababd34 feat:添加标签树结构的展示功能 2025-02-28 13:16:35 +08:00
chenxudong dd85e18e76 优化备份相关 2025-02-28 09:56:47 +08:00
s2042968 2bd7795002 fix: 防止文件夹建立关系 2025-02-27 16:52:43 +08:00
chenxudong 347ae33c71 补充文件备份相关功能 2025-02-27 16:25:13 +08:00
chenxudong 5eb98d6f78 文件物理删除与恢复 2025-02-27 15:35:42 +08:00
s2042968 38fcdcb859 Merge branch 'develop' of http://139.196.179.195:3000/chenxudong/electromagnetic-data-new into develop 2025-02-26 16:53:27 +08:00
s2042968 cbec04ba89 增加了接口的操作记录 2025-02-26 16:53:16 +08:00
chenxudong e685dbff5b 操作记录和审计搜索功能。 2025-02-26 16:25:31 +08:00
chenxudong ef19d92abf 修改已知问题 2025-02-26 15:54:19 +08:00
chenxudong 9b6b837840 优化日志提示 2025-02-26 15:12:48 +08:00
chenxudong 545188be69 优化相关功能 2025-02-26 15:07:24 +08:00
chenxudong 58e4c4397d 添加parentId 2025-02-26 14:36:17 +08:00
chenxudong cbcc133c2f 补充操作记录相关的代码。 2025-02-26 13:52:26 +08:00
chenxudong 26954302de Merge branch 'develop' of http://139.196.179.195:3000/chenxudong/electromagnetic-data-new into develop 2025-02-26 11:39:18 +08:00
chenxudong 2eb38794c4 增加审计相关功能 2025-02-26 11:39:11 +08:00
lizhanhao c389f40848 修改“修改密码”功能 2025-02-25 15:24:11 +08:00
s2042968 456db7f1ef 修改bug 2025-02-25 13:54:28 +08:00
chenxudong 0e4e320b94 操作记录和审计相关功能 2025-02-25 12:07:33 +08:00
lizhanhao 384c54a842 Merge remote-tracking branch 'origin/develop' into develop 2025-02-24 19:34:27 +08:00
lizhanhao 25ca8ba06c 新增修改密码功能 2025-02-24 19:33:31 +08:00
s2042968 ebf09cfe1f 解决冲突 2025-02-24 17:23:18 +08:00
s2042968 a6fa3f0d59 Merge branch 'develop' of http://139.196.179.195:3000/chenxudong/electromagnetic-data-new into develop 2025-02-24 17:17:25 +08:00
s2042968 5af549321b 增加类型id 2025-02-24 17:17:14 +08:00
chenxudong bb6058be9c Merge branch 'test' into develop
# Conflicts:
#	electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/controller/ProjectController.java
#	electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/service/EdFileInfoService.java
#	electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/service/serviceimpl/EdFileInfoServiceImpl.java
#	electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/service/serviceimpl/EdFileRelationServiceImpl.java
#	electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/service/serviceimpl/EdPrjServiceImpl.java
#	electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/service/serviceimpl/RoleServiceImpl.java
#	electrmangnetic/src/main/resources/application.properties
解决部分冲突。
2025-02-24 17:07:32 +08:00
chenxudong 4819e534eb 新增用户查询自己数据接口功能 2025-02-24 16:09:52 +08:00
chenxudong 3057b9cf7c 实现了数据库和工程操作相关的操作记录功能。 2025-02-24 16:00:10 +08:00
chenxudong e47e4bd3e8 上传相关demo 2025-02-24 13:35:28 +08:00
chenxudong 55bc397f9e 优化代码 2025-02-21 17:26:22 +08:00
chenxudong a6b809e051 提交遗漏的 2025-02-21 17:11:59 +08:00
chenxudong 46d798a019 调了上传文件记录的一个demo 2025-02-21 17:08:34 +08:00
s2042968 5e9caede22 修改收藏数据查询排序字段 2025-02-20 17:01:42 +08:00
s2042968 74445e99c2 添加UserOperation标签 2025-02-20 17:01:18 +08:00
s2042968 b099734668 合并冲突 2025-02-20 15:37:09 +08:00
s2042968 5e118c9d10 收藏页面数据查询接口 2025-02-20 15:22:35 +08:00
chenxudong cd07bb989c 发现已知问题 2025-02-20 15:16:52 +08:00
chenxudong ac415f13b4 增加自定义层级相关功能 2025-02-20 15:13:22 +08:00
chenxudong 2c6189cc6e 关闭文件流 2025-02-18 16:11:22 +08:00
chenxudong 9ee75303cc 修改获取客户端地址的问题。 2025-02-18 13:51:19 +08:00
chenxudong c3d570a3f3 删除上传的临时文件 2025-02-18 11:49:15 +08:00
chenxudong 3d562bdc5a 优化代码 2025-02-18 10:51:33 +08:00
chenxudong cfa56f3913 优化代码。 2025-02-18 10:25:08 +08:00
chenxudong 6c1e024d51 调通了ppt文件解析 2025-02-18 10:08:44 +08:00
chenxudong f9a9fee343 调通了pdf文件上传 2025-02-18 09:42:13 +08:00
chenxudong 5b8dfe9577 调通解析Word文件 2025-02-17 16:16:39 +08:00
chenxudong 3c8d8b165e 临时提交 2025-02-17 15:49:45 +08:00
chenxudong c6758de47a 修改已知问题 2025-02-17 14:57:16 +08:00
chenxudong cf5a078473 优化文本文件内容解析的bug 2025-02-17 14:43:23 +08:00
chenxudong feb6fa89da Merge branch 'develop' of http://139.196.179.195:3000/chenxudong/electromagnetic-data-new into develop 2025-02-17 10:37:19 +08:00
chenxudong ca77c4a91c 查询去掉文件内容 2025-02-17 10:35:34 +08:00
s2042968 893fbb5597 Merge branch 'develop' of http://139.196.179.195:3000/chenxudong/electromagnetic-data-new into develop 2025-02-14 17:11:24 +08:00
s2042968 805b25686e 标签库功能接口 2025-02-14 17:11:16 +08:00
chenxudong 99f645566d 日志审计主体功能。 2025-02-14 14:15:36 +08:00
chenxudong 971376ca7c 新增接口描述相关信息 2025-02-14 11:02:58 +08:00
chenxudong 50e8af4a39 Merge branch 'develop' of http://139.196.179.195:3000/chenxudong/electromagnetic-data-new into develop 2025-02-14 10:39:36 +08:00
chenxudong 02fa119bcb 完成审计相关功能的开发。 2025-02-14 10:39:15 +08:00
chenxudong 4294808f98 临时提交 2025-02-14 10:15:07 +08:00
s2042968 ff9b219ef3 Merge branch 'develop' of http://139.196.179.195:3000/chenxudong/electromagnetic-data-new into develop 2025-02-14 09:20:49 +08:00
s2042968 c8babeb041 标签库功能 2025-02-14 09:20:23 +08:00
chenxudong 961bfb2baa 完成操作记录的大部分功能开发。 2025-02-13 15:57:02 +08:00
chenxudong 40ce933356 配置文件更新 2025-02-13 09:35:34 +08:00
chenxudong b048fc6f02 Merge branch 'develop' of http://139.196.179.195:3000/chenxudong/electromagnetic-data-new into develop 2025-02-13 09:00:14 +08:00
chenxudong 1ab139ce48 实现文件预览的功能 2025-02-13 09:00:10 +08:00
s2042968 5d773f7ef3 Merge branch 'develop' of http://139.196.179.195:3000/chenxudong/electromagnetic-data-new into develop 2025-02-12 15:22:01 +08:00
s2042968 b08e515b11 增加添加收藏,取消收藏,收藏页数据接口 2025-02-12 15:20:46 +08:00
chenxudong bac3da7d8f 优化配置文件 2025-02-11 15:32:55 +08:00
chenxudong 409afa710b 修改版本号引起的问题 2025-02-11 15:12:17 +08:00
chenxudong f999b63793 重置版本号 2025-02-11 15:10:41 +08:00
chenxudong 6a5ad927c2 Merge branch 'test' into develop 2025-02-11 15:04:09 +08:00
chenxudong f59031bd5c 1.添加了文件备份的工程,并实现了基础功能。2.增加了定时备份文件的核心代码。 2025-02-11 15:03:49 +08:00
chenxudong e097e6e1aa 增加提示 2025-02-05 15:15:14 +08:00
chenxudong 9fae4c420d 准备springboot打包相关 2025-02-05 10:00:55 +08:00
chenxudong 53e61b11d4 重写代码 2025-01-21 16:04:49 +08:00
chenxudong 7450f41a9d 实现Linux下word转pdf 2025-01-21 15:02:56 +08:00
chenxudong 9a2a99e073 reformat code 2025-01-21 12:11:50 +08:00
chenxudong 192672ab2c 增加ppt内容的解析 2025-01-21 10:39:40 +08:00
chenxudong 9603bff042 完成excel文件的解析 2025-01-21 10:01:44 +08:00
chenxudong 34708604de 增加解析文本相关功能。 2025-01-20 17:58:09 +08:00
chenxudong b2a63e4f18 优化代码 2025-01-20 17:48:02 +08:00
chenxudong a91397ebbf 完成了pdf,普通文本和word的解析 2025-01-20 17:32:49 +08:00
chenxudong 799fb336c1 增加word转pdf的功能 2025-01-17 09:40:49 +08:00
171 changed files with 8385 additions and 2764 deletions

View File

@ -0,0 +1,75 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://maven.apache.org/POM/4.0.0"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>com.electromagnetic.data</groupId>
<artifactId>electromagnetic-data-new</artifactId>
<version>1.0</version>
</parent>
<artifactId>electrmangnetic-backup</artifactId>
<properties>
<maven.compiler.source>17</maven.compiler.source>
<maven.compiler.target>17</maven.compiler.target>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</dependency>
<dependency>
<groupId>cn.hutool</groupId>
<artifactId>hutool-all</artifactId>
<version>5.8.22</version>
</dependency>
<dependency>
<groupId>com.electromagnetic.data</groupId>
<artifactId>electromagnetic-common</artifactId>
<version>1.0</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>javax.xml.bind</groupId>
<artifactId>jaxb-api</artifactId>
<version>2.3.1</version>
</dependency>
<!-- 可选:添加 JAXB 实现库(如 jaxb-impl -->
<dependency>
<groupId>com.sun.xml.bind</groupId>
<artifactId>jaxb-impl</artifactId>
<version>2.3.3</version>
</dependency>
</dependencies>
<build>
<finalName>electromagnetic-backup</finalName>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<version>2.6.12</version>
<executions>
<execution>
<configuration>
<mainClass>com.electromagnetic.industry.software.backup.MainApp</mainClass>
</configuration>
<goals>
<goal>repackage</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
</project>

View File

@ -0,0 +1,11 @@
package com.electromagnetic.industry.software.backup;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class MainApp {
public static void main(String[] args) {
SpringApplication.run(MainApp.class, args);
}
}

View File

@ -0,0 +1,94 @@
package com.electromagnetic.industry.software.backup.controller;
import cn.hutool.core.exceptions.ExceptionUtil;
import cn.hutool.core.io.FileUtil;
import cn.hutool.json.JSONConfig;
import cn.hutool.json.JSONUtil;
import com.electromagnetic.industry.software.backup.pojo.BackupPro;
import com.electromagnetic.industry.software.backup.service.FileService;
import com.electromagnetic.industry.software.common.pojo.BackupFileResLog;
import com.electromagnetic.industry.software.common.resp.ElectromagneticResult;
import com.electromagnetic.industry.software.common.util.ElectromagneticResultUtil;
import jakarta.annotation.Resource;
import lombok.extern.slf4j.Slf4j;
import org.springframework.core.io.InputStreamResource;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile;
import java.util.Date;
@RestController
@RequestMapping("/data/file/backup")
@Slf4j
public class FileController {
@Resource
private FileService fileService;
@Resource
private BackupPro backupPro;
@RequestMapping("/upload")
public ElectromagneticResult<?> upload(@RequestParam("file") MultipartFile file) {
BackupFileResLog backupFileResLog = BackupFileResLog.builder().backupStartTime(new Date()).fileName(file.getOriginalFilename()).backupSuccess(true).build();
try {
fileService.upload(file);
} catch (Exception e) {
String details = ExceptionUtil.stacktraceToString(e);
backupFileResLog.setBackupSuccess(false);
backupFileResLog.setFailInfoDetail(details);
log.error("备份文件失败,原因--->{}", e.getMessage(), e);
}
JSONConfig jsonConfig = JSONConfig.create();
jsonConfig.setDateFormat("yyyy-MM-dd HH:mm:ss");
backupFileResLog.setBackupEndTime(new Date());
StringBuffer info = new StringBuffer()
.append("\n")
.append("#")
.append("\n")
.append(JSONUtil.toJsonStr(backupFileResLog, jsonConfig));
FileUtil.appendUtf8String(info.toString(), backupPro.getLogPath());
return ElectromagneticResultUtil.success(JSONUtil.toJsonStr(backupFileResLog, jsonConfig));
}
// @RequestMapping("/remove")
// public ElectromagneticResult<?> remove(@RequestParam("id") String id) {
// try {
// fileService.remove(id);
// } catch (Exception e) {
// log.error("删除文件失败, id-->{},原因-->{}", id, e.getMessage(), e);
// ElectromagneticResultUtil.fail("-1", e.getMessage());
// }
// return ElectromagneticResultUtil.success(true);
// }
@RequestMapping("/download")
public ResponseEntity<InputStreamResource> download(@RequestParam("id") String id) throws Exception {
return fileService.download(id);
}
@RequestMapping("/backupSql")
public ElectromagneticResult<?> backupSql(@RequestParam("file") MultipartFile file) {
BackupFileResLog backupFileResLog = BackupFileResLog.builder().backupStartTime(new Date()).fileName(file.getOriginalFilename()).backupSuccess(true).build();
try {
fileService.backupSql(file);
} catch (Exception e) {
String details = ExceptionUtil.stacktraceToString(e);
backupFileResLog.setBackupSuccess(false);
backupFileResLog.setFailInfoDetail(details);
log.error("备份sql文件失败原因--->{}", e.getMessage(), e);
}
JSONConfig jsonConfig = JSONConfig.create();
jsonConfig.setDateFormat("yyyy-MM-dd HH:mm:ss");
backupFileResLog.setBackupEndTime(new Date());
StringBuffer info = new StringBuffer()
.append("\n")
.append("#")
.append("\n")
.append(JSONUtil.toJsonStr(backupFileResLog, jsonConfig));
FileUtil.appendUtf8String(info.toString(), backupPro.getLogPath());
return ElectromagneticResultUtil.success(JSONUtil.toJsonStr(backupFileResLog, jsonConfig));
}
}

View File

@ -0,0 +1,26 @@
package com.electromagnetic.industry.software.backup.pojo;
import com.electromagnetic.industry.software.common.util.EleCommonUtil;
import lombok.Setter;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;
@Setter
@Component
@ConfigurationProperties(prefix = "ele.backup")
public class BackupPro {
private String saveFolder;
private String logPath;
private String winPrefix;
public String getSaveFolder() {
return EleCommonUtil.isWinOs() ? winPrefix + saveFolder : saveFolder;
}
public String getLogPath() {
return EleCommonUtil.isWinOs() ? winPrefix + logPath : logPath;
}
}

View File

@ -0,0 +1,18 @@
package com.electromagnetic.industry.software.backup.service;
import org.springframework.core.io.InputStreamResource;
import org.springframework.http.ResponseEntity;
import org.springframework.web.multipart.MultipartFile;
import java.io.IOException;
public interface FileService {
void upload(MultipartFile file) throws IOException;
// void remove(String id);
ResponseEntity<InputStreamResource> download(String id) throws Exception;
void backupSql(MultipartFile file) throws Exception;
}

View File

@ -0,0 +1,72 @@
package com.electromagnetic.industry.software.backup.serviceimp;
import cn.hutool.core.io.FileUtil;
import cn.hutool.core.util.ZipUtil;
import cn.hutool.crypto.SecureUtil;
import com.electromagnetic.industry.software.backup.pojo.BackupPro;
import com.electromagnetic.industry.software.backup.service.FileService;
import com.electromagnetic.industry.software.common.util.EleCommonUtil;
import jakarta.annotation.Resource;
import org.springframework.core.io.FileSystemResource;
import org.springframework.core.io.InputStreamResource;
import org.springframework.http.MediaType;
import org.springframework.http.ResponseEntity;
import org.springframework.stereotype.Service;
import org.springframework.web.multipart.MultipartFile;
import java.io.File;
import java.io.IOException;
import static com.electromagnetic.industry.software.common.cons.ElectromagneticConstants.FILE_SEC_PASSWD;
@Service
public class FileServiceImpl implements FileService {
@Resource
private BackupPro backupPro;
@Override
public void upload(MultipartFile file) throws IOException {
String name = FileUtil.mainName(file.getOriginalFilename());
String destPath = getFileSysPathById(name);
if (!FileUtil.exist(destPath)) {
FileUtil.writeFromStream(file.getInputStream(), destPath);
}
}
// @Override
// public void remove(String id) {
// String destPath = getFileSysPathById(id);
// FileUtil.del(destPath);
// }
@Override
public ResponseEntity<InputStreamResource> download(String id) throws Exception {
String destPath = getFileSysPathById(id);
FileSystemResource fileSystemResource = new FileSystemResource(destPath);
return ResponseEntity
.ok()
.contentLength(fileSystemResource.contentLength())
.contentType(MediaType.parseMediaType("application/octet-stream"))
.body(new InputStreamResource(fileSystemResource.getInputStream()));
}
@Override
public void backupSql(MultipartFile file) throws IOException {
String destPath = backupPro.getSaveFolder() + File.separator + "sqls" + File.separator + file.getOriginalFilename();
if (!FileUtil.exist(destPath)) {
FileUtil.writeFromStream(file.getInputStream(), destPath);
}
int index = destPath.lastIndexOf(".");
String zipPath = destPath.substring(0, index) + ".zip";
ZipUtil.zip(destPath, zipPath);
EleCommonUtil.encryptFile(zipPath, SecureUtil.aes(FILE_SEC_PASSWD.getBytes()));
FileUtil.del(destPath);
}
private String getFileSysPathById(String fileName) {
String saveFolder = backupPro.getSaveFolder();
return saveFolder + File.separator + "prj_files" + File.separator + fileName;
}
}

View File

@ -0,0 +1,14 @@
ele:
backup:
saveFolder: "/szsd/data/backup/"
logPath: "/szsd/data/backup.log"
winPrefix: "D:/tmp"
spring:
servlet:
multipart:
max-file-size: 500MB
max-request-size: 500MB
server:
port: 12491

View File

@ -6,56 +6,77 @@
<parent>
<groupId>com.electromagnetic.data</groupId>
<artifactId>electromagnetic-data-new</artifactId>
<version>1.0-SNAPSHOT</version>
<version>1.0</version>
</parent>
<artifactId>electrmangnetic</artifactId>
<properties>
<maven.compiler.source>8</maven.compiler.source>
<maven.compiler.target>8</maven.compiler.target>
<maven.compiler.source>17</maven.compiler.source>
<maven.compiler.target>17</maven.compiler.target>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<mapstruct.version>1.4.1.Final</mapstruct.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>cn.hutool</groupId>
<artifactId>hutool-all</artifactId>
<version>5.8.22</version>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-webflux</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.ai</groupId>
<artifactId>spring-ai-starter-model-ollama</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.ai</groupId>
<artifactId>spring-ai-starter-vector-store-mariadb</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.ai</groupId>
<artifactId>spring-ai-pdf-document-reader</artifactId>
</dependency>
<dependency>
<groupId>co.elastic.clients</groupId>
<artifactId>elasticsearch-java</artifactId>
<version>8.13.4</version>
</dependency>
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.5.3.1</version>
<artifactId>mybatis-plus-spring-boot3-starter</artifactId>
<version>3.5.7</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.31</version>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.34</version>
</dependency>
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger2</artifactId>
<version>2.7.0</version>
</dependency>
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger-ui</artifactId>
<version>2.7.0</version>
<groupId>org.mariadb.jdbc</groupId>
<artifactId>mariadb-java-client</artifactId>
<version>3.5.1</version>
</dependency>
<dependency>
<groupId>com.electromagnetic.data</groupId>
<artifactId>electromagnetic-common</artifactId>
<version>1.0-SNAPSHOT</version>
<version>1.0</version>
<scope>compile</scope>
</dependency>
<dependency>
@ -69,15 +90,13 @@
</exclusions>
<version>5.1.2</version>
</dependency>
<!--引入druid数据源-->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.1.10</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<artifactId>druid-spring-boot-starter</artifactId>
<version>1.2.6</version>
</dependency>
<dependency>
<groupId>org.mapstruct</groupId>
<artifactId>mapstruct-processor</artifactId>
@ -102,7 +121,7 @@
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<version>2.6.12</version>
<version>3.4.4</version>
<executions>
<execution>
<configuration>
@ -117,5 +136,4 @@
</plugins>
</build>
</project>

View File

@ -1,9 +1,13 @@
package com.electromagnetic.industry.software.manage;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.scheduling.annotation.EnableScheduling;
@SpringBootApplication
@EnableScheduling
@MapperScan("com.electromagnetic.industry.software.manage.mapper")
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);

View File

@ -0,0 +1,22 @@
package com.electromagnetic.industry.software.manage.ai;
import com.electromagnetic.industry.software.manage.pojo.req.QueryDTO;
import com.electromagnetic.industry.software.manage.service.serviceimpl.ChatService;
import lombok.AllArgsConstructor;
import lombok.NoArgsConstructor;
import reactor.core.publisher.Flux;
import java.util.concurrent.Callable;
@AllArgsConstructor
@NoArgsConstructor
public class ChatTaskThread1 implements Callable<Flux<String>> {
private ChatService chatService;
private QueryDTO queryDTO;
@Override
public Flux<String> call() throws Exception {
return chatService.chatStreamStr(queryDTO);
}
}

View File

@ -0,0 +1,23 @@
package com.electromagnetic.industry.software.manage.ai;
import com.electromagnetic.industry.software.manage.pojo.req.QueryDTO;
import com.electromagnetic.industry.software.manage.service.serviceimpl.ChatService;
import lombok.AllArgsConstructor;
import lombok.NoArgsConstructor;
import org.springframework.ai.chat.model.ChatResponse;
import reactor.core.publisher.Flux;
import java.util.concurrent.Callable;
@AllArgsConstructor
@NoArgsConstructor
public class ChatTaskThread2 implements Callable<Flux<ChatResponse>> {
private ChatService chatService;
private QueryDTO queryDTO;
@Override
public Flux<ChatResponse> call() throws Exception {
return chatService.chatStreamResponse(queryDTO);
}
}

View File

@ -0,0 +1,19 @@
package com.electromagnetic.industry.software.manage.ai;
import java.util.concurrent.*;
public final class ThreadUtil {
private static final ExecutorService THREAD_POOL = new ThreadPoolExecutor(1,
1,
3,
TimeUnit.SECONDS,
new LinkedBlockingDeque<>(100),
Executors.defaultThreadFactory(),
new ThreadPoolExecutor.DiscardOldestPolicy());
public static ExecutorService getThreadPool() {
return THREAD_POOL;
}
}

View File

@ -0,0 +1,46 @@
package com.electromagnetic.industry.software.manage.aop;
import cn.hutool.json.JSONUtil;
import jakarta.servlet.ServletRequest;
import jakarta.servlet.ServletResponse;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.multipart.MultipartFile;
import java.util.HashMap;
import java.util.Map;
@Slf4j
public class AopUtil {
public static String getReqArgs(Object[] args, String[] argNames) {
String paramInfo = "";
if (args != null && args.length > 0) {
Map<String, Object> map = new HashMap<>();
try {
for (int i = 0; i < args.length; i++) {
String name = argNames[i];
Object value = args[i];
if (value instanceof ServletRequest) {
log.info("参数中有request");
map.put(name, "request");
} else if (value instanceof ServletResponse) {
log.info("参数中有response");
map.put(name, "response");
} else if (value instanceof MultipartFile file) {
Map<String, Object> pars = new HashMap<>();
pars.put("fileName", file.getOriginalFilename());
pars.put("fileSize", file.getSize());
map.put("file", pars);
} else {
map.put(name, value);
}
}
} catch (Exception e) {
log.warn("切面异常--->{}", e.getMessage(), e);
} finally {
paramInfo = JSONUtil.toJsonStr(map);
}
}
return paramInfo;
}
}

View File

@ -1,21 +1,21 @@
package com.electromagnetic.industry.software.manage.aop;
import com.electromagnetic.industry.software.common.annotations.RequiredPermission;
import com.electromagnetic.industry.software.common.cons.ElectromagneticConstants;
import com.electromagnetic.industry.software.common.enums.FilePermission;
import com.electromagnetic.industry.software.common.exception.PermissionDeniedException;
import com.electromagnetic.industry.software.common.util.UserThreadLocal;
import com.electromagnetic.industry.software.manage.config.ElePropertyConfig;
import com.electromagnetic.industry.software.manage.pojo.req.FileInfoQueryDTO;
import com.electromagnetic.industry.software.manage.pojo.req.UpdateFileInfoDTO;
import com.electromagnetic.industry.software.manage.service.EdFileInfoService;
import com.electromagnetic.industry.software.manage.service.PermissionService;
import jakarta.annotation.Resource;
import org.aspectj.lang.ProceedingJoinPoint;
import org.aspectj.lang.annotation.Around;
import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.reflect.MethodSignature;
import org.springframework.stereotype.Component;
import javax.annotation.Resource;
import java.util.Map;
@Aspect
@Component
@ -25,11 +25,15 @@ public class FilePermissionCheckAspect {
PermissionService permissionService;
@Resource
EdFileInfoService edFileInfoService;
@Resource
private ElePropertyConfig elePropertyConfig;
@Around("@annotation(requiredPermission)")
public Object requirePermission(ProceedingJoinPoint joinPoint, RequiredPermission requiredPermission) throws Throwable{
public Object requirePermission(ProceedingJoinPoint joinPoint, RequiredPermission requiredPermission) throws Throwable {
Object[] args = joinPoint.getArgs();
String[] argNames = ((MethodSignature) joinPoint.getSignature()).getParameterNames();
String paramInfo = AopUtil.getReqArgs(args, argNames);
UserThreadLocal.setReqArgs(paramInfo);
if (args.length == 0) {
return joinPoint.proceed();
}
@ -37,10 +41,9 @@ public class FilePermissionCheckAspect {
FilePermission filePermission = requiredPermission.value();
String userId = UserThreadLocal.getUserId();
String id = extractId(args[0]); // 提取ID逻辑封装成方法减少冗余代码
// 特殊处理 FileInfoQueryDTO
if (args[0] instanceof FileInfoQueryDTO) {
if (id.length() > ElectromagneticConstants.PRJ_ID_LENGTH) {
if (id.length() > elePropertyConfig.getPrjFolderMaxLength()) {
return joinPoint.proceed();
}
}

View File

@ -1,20 +1,21 @@
package com.electromagnetic.industry.software.manage.aop;
import cn.hutool.json.JSONUtil;
import com.electromagnetic.industry.software.common.pojo.UserLoginInfo;
import com.electromagnetic.industry.software.common.resp.ElectromagneticResult;
import com.electromagnetic.industry.software.common.util.ElectromagneticResultUtil;
import com.electromagnetic.industry.software.common.util.UserThreadLocal;
import lombok.extern.slf4j.Slf4j;
import org.apache.catalina.connector.ResponseFacade;
import org.aspectj.lang.ProceedingJoinPoint;
import org.aspectj.lang.annotation.Around;
import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.reflect.MethodSignature;
import org.springframework.http.ResponseEntity;
import org.springframework.stereotype.Component;
import org.springframework.util.StopWatch;
import org.springframework.web.multipart.MultipartFile;
import reactor.core.publisher.Flux;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import java.util.ArrayList;
import java.util.List;
import java.util.Objects;
@Aspect
@Component
@ -29,41 +30,25 @@ public class ServiceAspect {
String methodInfo = jp.getTarget().getClass().getSimpleName() + "."
+ jp.getSignature().getName();
Object[] args = jp.getArgs();
String paramInfo = "";
if (args != null && args.length > 0) {
if (args[0] != null && args[0].getClass() != ResponseFacade.class) {
try {
List<Object> list = new ArrayList<>();
for (Object obj : jp.getArgs()) {
if (obj instanceof ServletResponse) {
log.info("参数中有response");
} else if (obj instanceof ServletRequest) {
log.info("参数中有request");
} else if (obj instanceof MultipartFile) {
//文件不输出
MultipartFile obj1 = (MultipartFile) obj;
log.info("参数中文件;文件名:{},文件大小:{}", obj1.getName(), obj1.getSize());
break;
} else {
list.add(obj);
}
}
paramInfo = JSONUtil.toJsonStr(list);
} catch (Exception e) {
log.warn("切面异常--->{}", e.getMessage());
}
}
}
String[] argNames = ((MethodSignature) jp.getSignature()).getParameterNames();
String paramInfo = AopUtil.getReqArgs(args, argNames);
log.info("请求接口开始:{},参数:{}", methodInfo, paramInfo);
long startTime = System.currentTimeMillis();
StopWatch stopwatch = new StopWatch();
stopwatch.start("接口:" + methodInfo);
Object rvt = jp.proceed();
if (rvt instanceof ResponseEntity) {
return rvt;
if (Objects.isNull(UserThreadLocal.getUser())) {
UserLoginInfo userLoginInfo = new UserLoginInfo();
UserThreadLocal.set(userLoginInfo);
}
UserThreadLocal.setReqArgs(paramInfo);
Object rvt = jp.proceed();
String returnInfo = "";
if (rvt instanceof ResponseEntity || rvt instanceof Flux) {
UserThreadLocal.setRes(ElectromagneticResultUtil.success(""));
} else {
UserThreadLocal.setRes((ElectromagneticResult) rvt);
returnInfo = JSONUtil.toJsonStr(rvt);
}
String returnInfo = JSONUtil.toJsonStr(rvt);
log.info("请求接口结束:{},返回参数:{},接口耗时:{}", methodInfo, returnInfo, (System.currentTimeMillis() - startTime) + "毫秒");
stopwatch.stop();
log.debug(stopwatch.prettyPrint());

View File

@ -1,9 +1,11 @@
package com.electromagnetic.industry.software.manage.common;
import cn.hutool.core.exceptions.ExceptionUtil;
import com.electromagnetic.industry.software.common.exception.BizException;
import com.electromagnetic.industry.software.common.exception.PermissionDeniedException;
import com.electromagnetic.industry.software.common.resp.ElectromagneticResult;
import com.electromagnetic.industry.software.common.util.ElectromagneticResultUtil;
import com.electromagnetic.industry.software.common.util.UserThreadLocal;
import lombok.extern.slf4j.Slf4j;
import org.springframework.http.HttpStatus;
import org.springframework.web.bind.annotation.ControllerAdvice;
@ -11,8 +13,6 @@ import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.ResponseStatus;
import java.nio.file.AccessDeniedException;
@Slf4j
@ControllerAdvice
public class GlobalExceptionHandler {
@ -22,6 +22,8 @@ public class GlobalExceptionHandler {
@ResponseBody
public ElectromagneticResult<?> runTimeError(Throwable e) {
log.error(e.getMessage(), e);
UserThreadLocal.setExceptionDetail(ExceptionUtil.stacktraceToOneLineString(e));
UserThreadLocal.setRes(new ElectromagneticResult<>(false, "-1", e.getMessage(), ""));
return ElectromagneticResultUtil.fail("-1", e.getMessage());
}
@ -30,6 +32,8 @@ public class GlobalExceptionHandler {
@ResponseBody
public ElectromagneticResult<?> bizError(BizException e) {
log.error(e.getMessage(), e);
UserThreadLocal.setExceptionDetail(ExceptionUtil.stacktraceToOneLineString(e));
UserThreadLocal.setRes(new ElectromagneticResult<>(false, "-1", e.getMessage(), ""));
return ElectromagneticResultUtil.fail("-1", e.getMessage());
}
@ -38,6 +42,18 @@ public class GlobalExceptionHandler {
@ResponseBody
public ElectromagneticResult<?> accessDeniedError(PermissionDeniedException e) {
log.error(e.getMessage(), e);
UserThreadLocal.setExceptionDetail(ExceptionUtil.stacktraceToOneLineString(e));
UserThreadLocal.setRes(new ElectromagneticResult<>(false, HttpStatus.UNAUTHORIZED.value() + "", e.getMessage(), ""));
return ElectromagneticResultUtil.fail("-1", e.getMessage());
}
@ExceptionHandler(Throwable.class)
@ResponseStatus(HttpStatus.OK)
@ResponseBody
public ElectromagneticResult<?> unknown(Throwable e) {
log.error(e.getMessage(), e);
UserThreadLocal.setExceptionDetail(ExceptionUtil.stacktraceToOneLineString(e));
UserThreadLocal.setRes(new ElectromagneticResult<>(false, "-1", e.getMessage(), ""));
return ElectromagneticResultUtil.fail("-1", e.getMessage());
}
}

View File

@ -0,0 +1,16 @@
package com.electromagnetic.industry.software.manage.config;
import org.springframework.ai.chat.client.advisor.MessageChatMemoryAdvisor;
import org.springframework.ai.chat.memory.InMemoryChatMemory;
import org.springframework.context.annotation.Bean;
import org.springframework.stereotype.Component;
@Component
public class AiAdvisor {
@Bean
public MessageChatMemoryAdvisor messageChatMemoryAdvisor() {
return new MessageChatMemoryAdvisor(new InMemoryChatMemory());
}
}

View File

@ -0,0 +1,23 @@
package com.electromagnetic.industry.software.manage.config;
import com.alibaba.druid.pool.DruidDataSource;
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import javax.sql.DataSource;
@Configuration
public class DruidDataSourceConfig {
/**
* 添加 DruidDataSource 组件到容器中并绑定属性
*/
@Bean
@ConfigurationProperties(prefix = "spring.datasource")
@ConditionalOnProperty(name = "spring.datasource.type", havingValue = "com.alibaba.druid.pool.DruidDataSource")
public DataSource druid() {
return new DruidDataSource();
}
}

View File

@ -1,37 +1,44 @@
package com.electromagnetic.industry.software.manage.config;
import com.baomidou.mybatisplus.core.handlers.MetaObjectHandler;
import com.electromagnetic.industry.software.common.enums.EffectFlagEnum;
import com.electromagnetic.industry.software.common.pojo.UserLoginInfo;
import com.electromagnetic.industry.software.common.util.UserThreadLocal;
import org.apache.ibatis.reflection.MetaObject;
import org.springframework.stereotype.Component;
import java.util.Date;
import java.util.Optional;
@Component
public class EdMetaObjectHandler implements MetaObjectHandler {
@Override
public void insertFill(MetaObject metaObject) {
if (metaObject.hasSetter("gmtCreate")) {
this.strictInsertFill(metaObject, "gmtCreate", Date.class, new Date());
if (metaObject.hasGetter("createdTime")) {
this.setFieldValByName("createdTime", new Date(), metaObject);
}
if (metaObject.hasGetter("createdAt")) {
this.strictInsertFill(metaObject, "createdAt", Date.class, new Date());
if (metaObject.hasGetter("createdBy")) {
this.setFieldValByName("createdBy", Optional.ofNullable(UserThreadLocal.getUser()).map(UserLoginInfo::getUserId).orElse(""), metaObject);
}
if (metaObject.hasSetter("gmtModified")) {
this.strictUpdateFill(metaObject, "gmtModified", Date.class, new Date());
if (metaObject.hasGetter("updatedTime")) {
this.setFieldValByName("updatedTime", new Date(), metaObject);
}
if (metaObject.hasGetter("updatedAt")) {
this.strictUpdateFill(metaObject, "updatedAt", Date.class, new Date());
if (metaObject.hasGetter("updatedBy")) {
this.setFieldValByName("updatedBy", Optional.ofNullable(UserThreadLocal.getUser()).map(UserLoginInfo::getUserId).orElse(""), metaObject);
}
if (metaObject.hasGetter("effectFlag")) {
this.setFieldValByName("effectFlag", EffectFlagEnum.EFFECT.code, metaObject);
}
}
@Override
public void updateFill(MetaObject metaObject) {
if (metaObject.hasSetter("gmtModified")) {
this.strictUpdateFill(metaObject, "gmtModified", Date.class, new Date());
if (metaObject.hasGetter("updatedTime")) {
this.setFieldValByName("updatedTime", new Date(), metaObject);
}
if (metaObject.hasGetter("updatedAt")) {
this.strictUpdateFill(metaObject, "updatedAt", Date.class, new Date());
if (metaObject.hasGetter("updatedBy")) {
this.setFieldValByName("updatedBy", Optional.ofNullable(UserThreadLocal.getUser()).map(UserLoginInfo::getUserId).orElse(""), metaObject);
}
}
}

View File

@ -0,0 +1,173 @@
package com.electromagnetic.industry.software.manage.config;
import com.electromagnetic.industry.software.common.enums.DataOwnEnum;
import com.electromagnetic.industry.software.common.util.EleCommonUtil;
import lombok.Getter;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;
import java.util.List;
@Component
public class ElePropertyConfig {
@Value("${data.ele.tmp.path}")
private String eleTmpPath;
@Value("${data.sys.prj.path}")
private String sysPrjPath;
@Value("${data.sys.upload.path}")
private String sysUploadPath;
@Value("${data.sys.download.path}")
private String sysDownloadPath;
@Value("${data.user.prj.path}")
private String userPrjPath;
@Value("${data.user.upload.path}")
private String userUploadPath;
@Value("${data.user.download.path}")
private String userDownloadPath;
@Value("${data.repo.prj.path}")
private String repoPrjPath;
@Value("${data.repo.upload.path}")
private String repoUploadPath;
@Value("${data.repo.download.path}")
private String repoDownloadPath;
@Getter
@Value("${backup.mysql.script.path}")
private String backupMysqlScriptPath;
@Getter
@Value("${tmp.file.store.hour}")
private int tmpFileStoreHour;
@Getter
@Value("${backup.remote.host}")
private String remoteHost = "";
@Getter
@Value("${backup.remote.port}")
private int remotePort;
@Value("${winPrefix}")
private String winPrefix = "";
@Getter
@Value("${backup.mysql.path}")
private String sqlDirs;
@Getter
@Value("${ai.store.max.docs:200}")
private Integer aiMaxDocs;
@Getter
@Value("${prj.folder.max.length}")
private Integer prjFolderMaxLength;
@Value("${prjRootPath}")
private String prjRootPath;
@Value("${allow.upload.file.types}")
private String allowUploadFileTypes;
public List<String> getAiAllowUploadFileTypes() {
return List.of(allowUploadFileTypes.replace(" ", "").split(","));
}
public String getEleTmpPath() {
if (EleCommonUtil.isWinOs()) {
return winPrefix + prjRootPath + eleTmpPath;
}
return prjRootPath + eleTmpPath;
}
public String getSysPrjPath() {
if (EleCommonUtil.isWinOs()) {
return winPrefix + prjRootPath + sysPrjPath;
}
return prjRootPath + sysPrjPath;
}
public String getSysUploadPath() {
if (EleCommonUtil.isWinOs()) {
return winPrefix + prjRootPath + sysUploadPath;
}
return prjRootPath + sysUploadPath;
}
public String getSysDownloadPath() {
if (EleCommonUtil.isWinOs()) {
return winPrefix + prjRootPath + sysDownloadPath;
}
return prjRootPath + sysDownloadPath;
}
public String getUserPrjPath() {
if (EleCommonUtil.isWinOs()) {
return winPrefix + prjRootPath + userPrjPath;
}
return prjRootPath + userPrjPath;
}
public String getUserUploadPath() {
if (EleCommonUtil.isWinOs()) {
return winPrefix + prjRootPath + userUploadPath;
}
return prjRootPath + userUploadPath;
}
public String getUserDownloadPath() {
if (EleCommonUtil.isWinOs()) {
return winPrefix + prjRootPath + userDownloadPath;
}
return prjRootPath + userDownloadPath;
}
public String getRepoPrjPath() {
if (EleCommonUtil.isWinOs()) {
return winPrefix + prjRootPath + repoPrjPath;
}
return prjRootPath + repoPrjPath;
}
public String getRepoUploadPath() {
if (EleCommonUtil.isWinOs()) {
return winPrefix + prjRootPath + repoUploadPath;
}
return prjRootPath + repoUploadPath;
}
public String getRepoDownloadPath() {
if (EleCommonUtil.isWinOs()) {
return winPrefix + prjRootPath + repoDownloadPath;
}
return prjRootPath + repoDownloadPath;
}
public String getUploadDataDir(int dataOwnCode) {
if (DataOwnEnum.isSysCode(dataOwnCode)) {
return getSysUploadPath();
} else if (DataOwnEnum.isUserCode(dataOwnCode)) {
return getUserUploadPath();
}
return getRepoUploadPath();
}
public String getDownloadDataDir(int dataOwnCode) {
if (DataOwnEnum.isSysCode(dataOwnCode)) {
return getSysDownloadPath();
} else if (DataOwnEnum.isUserCode(dataOwnCode)) {
return getUserDownloadPath();
}
return getRepoDownloadPath();
}
}

View File

@ -1,23 +1,36 @@
package com.electromagnetic.industry.software.manage.config;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.date.SystemClock;
import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.StrUtil;
import cn.hutool.json.JSONUtil;
import com.electromagnetic.industry.software.common.annotations.UserOperation;
import com.electromagnetic.industry.software.common.cons.UserConstants;
import com.electromagnetic.industry.software.common.enums.AdminTypeEnum;
import com.electromagnetic.industry.software.common.pojo.AccessSuccessInfo;
import com.electromagnetic.industry.software.common.pojo.UserLoginInfo;
import com.electromagnetic.industry.software.common.resp.ElectromagneticResult;
import com.electromagnetic.industry.software.common.util.IdWorker;
import com.electromagnetic.industry.software.common.util.TokenUtil;
import com.electromagnetic.industry.software.common.util.UserThreadLocal;
import com.electromagnetic.industry.software.manage.mapper.TokenMapper;
import com.electromagnetic.industry.software.manage.mapper.UserAccessLogMapper;
import com.electromagnetic.industry.software.manage.pojo.models.Token;
import com.electromagnetic.industry.software.manage.pojo.models.UserAccessLog;
import io.jsonwebtoken.Claims;
import jakarta.annotation.Resource;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Component;
import org.springframework.web.method.HandlerMethod;
import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.ModelAndView;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.util.Date;
import java.util.List;
import java.util.Optional;
@Component
@Slf4j
@ -26,8 +39,44 @@ public class LoginInterceptor implements HandlerInterceptor {
@Resource
private TokenMapper tokenMapper;
@Resource
private UserAccessLogMapper userAccessLogMapper;
@Resource
private ElePropertyConfig elePropertyConfig;
private static String getRealIp(HttpServletRequest request) {
String ipAddress = request.getHeader("X-Forwarded-For");
if (StrUtil.isEmpty(ipAddress) || "unknown".equalsIgnoreCase(ipAddress)) {
// 回退到X-Real-IP或直接RemoteAddr
ipAddress = request.getHeader("X-Real-IP");
}
if (StrUtil.isEmpty(ipAddress) || "unknown".equalsIgnoreCase(ipAddress)) {
ipAddress = request.getRemoteAddr();
}
// 处理多级代理的情况取第一个IP
if (ipAddress.contains(",")) {
ipAddress = ipAddress.split(",")[0].trim();
}
return ipAddress;
}
private static String parseIpFromUrl(String url) {
int start = url.indexOf("//");
url = url.substring(start + 2);
int end = url.indexOf("/");
String tmp = url.substring(0, end);
if (!tmp.contains(":")) {
return tmp;
}
int index = tmp.indexOf(":");
return tmp.substring(0, index);
}
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
request.getSession().setAttribute("accessStartTime", System.currentTimeMillis());
// 首先校验token
boolean isTokenValid = checkToken(request, response);
if (!isTokenValid) {
@ -37,8 +86,8 @@ public class LoginInterceptor implements HandlerInterceptor {
}
private boolean checkSysAdminOperation(HttpServletRequest request, HttpServletResponse response) {
String requestURI = request.getRequestURI();
if (requestURI.startsWith("/data/ed/prj") && !UserThreadLocal.getAdminType().equals(AdminTypeEnum.SYSTEM.getValue())) {
String uri = request.getRequestURI();
if (uri.startsWith("/data/ed/prj") && !UserThreadLocal.getAdminType().equals(AdminTypeEnum.SYSTEM.getValue())) {
log.warn("{}没有层级操作权限,当前用户类型是{}", UserThreadLocal.getUsername(), UserThreadLocal.getAdminType());
response.setStatus(HttpServletResponse.SC_FORBIDDEN);
return false;
@ -48,6 +97,7 @@ public class LoginInterceptor implements HandlerInterceptor {
private boolean checkToken(HttpServletRequest request, HttpServletResponse response) {
String token = request.getHeader("Authorization");
String uri = request.getRequestURI();
if (token == null) {
log.error("Authorization header is null");
response.setStatus(HttpServletResponse.SC_UNAUTHORIZED);
@ -57,13 +107,13 @@ public class LoginInterceptor implements HandlerInterceptor {
}
boolean result = isTokenValid(token);
if (!result) {
log.error("Invalid token");
log.error("Invalid token, uri is --->{}", uri);
response.setStatus(HttpServletResponse.SC_UNAUTHORIZED);
return false;
} else {
Claims claims = TokenUtil.getLoginInfo(token);
if (claims == null) {
log.error("User info is missing");
log.error("User info is missing, uri is --->{}", uri);
response.setStatus(HttpServletResponse.SC_UNAUTHORIZED);
return false;
} else {
@ -72,20 +122,94 @@ public class LoginInterceptor implements HandlerInterceptor {
userLoginInfo.setUsername(claims.get(UserConstants.LOGIN_USER_NAME, String.class));
userLoginInfo.setWorkNumber(claims.get(UserConstants.LOGIN_WORK_NUMBER, String.class));
userLoginInfo.setAdminType(claims.get(UserConstants.LOGIN_ADMIN_TYPE, String.class));
userLoginInfo.setPrjTmpDir(elePropertyConfig.getEleTmpPath());
UserThreadLocal.set(userLoginInfo);
}
return true;
}
}
@Override
public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {
}
@Override
public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {
UserThreadLocal.remove();
try {
long accessStartTime = (long) request.getSession().getAttribute("accessStartTime");
long accessEndTime = System.currentTimeMillis();
UserOperation userOperation = ((HandlerMethod) handler).getMethod().getAnnotation(UserOperation.class);
if (ObjectUtil.isEmpty(userOperation)) {
return;
}
String reqArgs = UserThreadLocal.getReqArgs();
UserLoginInfo user = Optional.of(UserThreadLocal.getUser()).orElse(new UserLoginInfo());
List<AccessSuccessInfo> successInfoList = user.getSuccessInfoList();
if (CollUtil.isEmpty(successInfoList)) {
ElectromagneticResult res = user.getResult();
UserAccessLog userAccessLog = new UserAccessLog()
.setId(IdWorker.getSnowFlakeIdString())
.setUserId(user.getUserId())
.setAccessStartTime(DateUtil.date(accessStartTime))
.setAccessEndTime(DateUtil.date(accessEndTime))
.setAccessDuration(accessEndTime - accessStartTime)
.setAction(userOperation.value())
.setRequestUrl(request.getRequestURL().toString())
.setRequestIp(parseIpFromUrl(request.getRequestURL().toString()))
.setReqArgs(reqArgs)
.setRemoteAddr(getRealIp(request))
.setAccessSuccess(true)
.setOperationModule(userOperation.modelName().key)
.setOperationMsg(res.getErrorMessage())
.setDataId("")
.setParentId("");
userAccessLog.setResponse(JSONUtil.toJsonStr(res));
if (!res.getSuccess()) {
userAccessLog.setAccessSuccess(false);
userAccessLog.setOperationMsg(res.getErrorMessage());
userAccessLog.setExceptionDetail(UserThreadLocal.getUser().getExceptionDetail());
}
userAccessLogMapper.insert(userAccessLog);
} else {
for (AccessSuccessInfo accessSuccessInfo : successInfoList) {
UserAccessLog userAccessLog = new UserAccessLog()
.setId(IdWorker.getSnowFlakeIdString())
.setUserId(user.getUserId())
.setAccessStartTime(DateUtil.date(accessStartTime))
.setAccessEndTime(DateUtil.date(accessEndTime))
.setAccessDuration(accessEndTime - accessStartTime)
.setAction(userOperation.value())
.setRequestUrl(request.getRequestURL().toString())
.setRequestIp(parseIpFromUrl(request.getRequestURL().toString()))
.setReqArgs(reqArgs)
.setRemoteAddr(getRealIp(request))
.setAccessSuccess(true)
.setOperationModule(userOperation.modelName().key)
.setOperationMsg(accessSuccessInfo.getSuccessMsg())
.setDataId(accessSuccessInfo.getDataId())
.setParentId(accessSuccessInfo.getParentId());
ElectromagneticResult<?> result = user.getResult();
if (result != null) {
userAccessLog.setResponse(JSONUtil.toJsonStr(result));
if (!result.getSuccess()) {
userAccessLog.setAccessSuccess(false);
userAccessLog.setOperationMsg(result.getErrorMessage());
userAccessLog.setExceptionDetail(UserThreadLocal.getUser().getExceptionDetail());
}
} else { // 返回为ResponseEntity且状态为失败
userAccessLog.setAccessSuccess(false);
}
userAccessLogMapper.insert(userAccessLog);
}
}
} catch (Exception e) {
log.warn("请求后置异常,原因 {}", e.getMessage(), e);
} finally {
UserThreadLocal.remove();
}
}
public Boolean isTokenValid(String tokenStr) {
@ -93,4 +217,5 @@ public class LoginInterceptor implements HandlerInterceptor {
Date now = new Date(SystemClock.now());
return token != null && now.before(token.getExpireAt());
}
}

View File

@ -1,12 +1,11 @@
package com.electromagnetic.industry.software.manage.config;
import jakarta.annotation.Resource;
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;
/**
* @author
* @version $Id: d.java, v 0.1 2021-01-05 19:33 Exp $$
@ -27,12 +26,17 @@ public class WebMvcConfig implements WebMvcConfigurer {
registry.addResourceHandler("/webjars/**")
.addResourceLocations("classpath:/META-INF/resources/webjars/");
registry.addResourceHandler("index.html")
.addResourceLocations("classpath:/static/");
}
@Override
public void addInterceptors(InterceptorRegistry registry) {
registry.addInterceptor(loginInterceptor)
.addPathPatterns("/**")
.excludePathPatterns("/index")
.excludePathPatterns("/static/**", "/css/**", "/js/**", "/images/**", "/fonts/**", "/assets/**")
.excludePathPatterns("/data/ed/user/login");
}

View File

@ -0,0 +1,43 @@
package com.electromagnetic.industry.software.manage.controller;
import cn.hutool.core.lang.Assert;
import com.electromagnetic.industry.software.common.annotations.UserOperation;
import com.electromagnetic.industry.software.common.enums.AdminTypeEnum;
import com.electromagnetic.industry.software.common.enums.UserOperationModuleEnum;
import com.electromagnetic.industry.software.common.resp.ElectromagneticResult;
import com.electromagnetic.industry.software.common.util.UserThreadLocal;
import com.electromagnetic.industry.software.manage.pojo.req.AccessLogQueryDTO;
import com.electromagnetic.industry.software.manage.service.UserAccessLogService;
import jakarta.annotation.Resource;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
@RequestMapping("/data/ed/log/")
public class AccessLogController {
@Resource
private UserAccessLogService userAccessLogService;
@UserOperation(value = "查看操作记录", modelName = UserOperationModuleEnum.LOG)
@RequestMapping("file")
public ElectromagneticResult<?> file(@RequestBody AccessLogQueryDTO accessLogQueryDTO) {
return userAccessLogService.info(accessLogQueryDTO, false);
}
@UserOperation(value = "查看审计", modelName = UserOperationModuleEnum.LOG)
@RequestMapping("audit")
public ElectromagneticResult<?> audit(@RequestBody AccessLogQueryDTO accessLogQueryDTO) {
Assert.isTrue(UserThreadLocal.getAdminType().equals(AdminTypeEnum.AUDIT.getValue()), "当前用户没有查看审计的权限");
return userAccessLogService.info(accessLogQueryDTO, true);
}
@UserOperation(value = "查询所有操作对象", modelName = UserOperationModuleEnum.LOG)
@RequestMapping("operation/module")
public ElectromagneticResult<?> operationModule() {
return userAccessLogService.operationModule();
}
}

View File

@ -0,0 +1,67 @@
package com.electromagnetic.industry.software.manage.controller;
import cn.hutool.core.util.StrUtil;
import com.electromagnetic.industry.software.common.resp.ElectromagneticResult;
import com.electromagnetic.industry.software.common.util.UserThreadLocal;
import com.electromagnetic.industry.software.manage.ai.ChatTaskThread1;
import com.electromagnetic.industry.software.manage.ai.ChatTaskThread2;
import com.electromagnetic.industry.software.manage.ai.ThreadUtil;
import com.electromagnetic.industry.software.manage.pojo.req.QueryDTO;
import com.electromagnetic.industry.software.manage.service.serviceimpl.ChatService;
import jakarta.annotation.Resource;
import lombok.extern.slf4j.Slf4j;
import org.springframework.ai.chat.model.ChatResponse;
import org.springframework.http.MediaType;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import reactor.core.publisher.Flux;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.Future;
@Slf4j
@RestController
@RequestMapping("/data/ed/ai")
public class AiController {
@Resource
private ChatService chatService;
@RequestMapping("/upload")
public ElectromagneticResult<?> upload(@RequestParam("file") MultipartFile file) throws Exception {
return chatService.addFromUpload(file);
}
// @PostMapping("/chat")
// public ElectromagneticResult<String> chat(@RequestBody QueryDTO queryDTO) throws Exception {
// log.info("question is --->" + queryDTO.getMsg());
// ChatTaskThread<String> chatTaskThread = new ChatTaskThread<>(chatService, queryDTO);
// Future<String> future = ThreadUtil.getThreadPool().submit(chatTaskThread);
// String res = future.get();
// log.info("answer is --->" + res);
// return ElectromagneticResultUtil.success(res);
// }
@PostMapping(path = "/chatStreamStr", produces = MediaType.TEXT_EVENT_STREAM_VALUE)
public Flux<String> chatStreamStr(@RequestBody QueryDTO queryDTO) throws ExecutionException, InterruptedException {
if (StrUtil.isEmpty(queryDTO.getMsg())) {
return Flux.empty();
}
queryDTO.setUserId(UserThreadLocal.getUserId());
ChatTaskThread1 chatTaskThread = new ChatTaskThread1(chatService, queryDTO);
Future<Flux<String>> future = ThreadUtil.getThreadPool().submit(chatTaskThread);
return future.get();
}
@PostMapping(path = "/chatStreamResp", produces = MediaType.TEXT_EVENT_STREAM_VALUE)
public Flux<ChatResponse> chatStreamResp(@RequestBody QueryDTO queryDTO) throws ExecutionException, InterruptedException {
if (StrUtil.isEmpty(queryDTO.getMsg())) {
return Flux.empty();
}
queryDTO.setUserId(UserThreadLocal.getUserId());
ChatTaskThread2 chatTaskThread2 = new ChatTaskThread2(chatService, queryDTO);
Future<Flux<ChatResponse>> future = ThreadUtil.getThreadPool().submit(chatTaskThread2);
return future.get();
}
}

View File

@ -0,0 +1,100 @@
package com.electromagnetic.industry.software.manage.controller;
import com.electromagnetic.industry.software.common.annotations.UserOperation;
import com.electromagnetic.industry.software.common.enums.UserOperationModuleEnum;
import com.electromagnetic.industry.software.common.resp.ElectromagneticResult;
import com.electromagnetic.industry.software.common.util.ElectromagneticResultUtil;
import com.electromagnetic.industry.software.common.util.UserThreadLocal;
import com.electromagnetic.industry.software.manage.pojo.req.TagCreateDTO;
import com.electromagnetic.industry.software.manage.service.EdTagLibraryService;
import com.electromagnetic.industry.software.manage.service.FileTagRelationService;
import jakarta.annotation.Resource;
import org.springframework.web.bind.annotation.*;
import java.util.List;
@RestController
@RequestMapping("/data/ed/tag")
public class EdTagLibraryController {
@Resource
private EdTagLibraryService edTagLibraryService;
@Resource
private FileTagRelationService fileTagRelationService;
// 新建标签组
@GetMapping("/createGroup")
@UserOperation(value = "创建了标签组", modelName = UserOperationModuleEnum.TAG)
public ElectromagneticResult<?> createTagGroup(@RequestParam String tagName) {
String createdBy = UserThreadLocal.getUserId();
return ElectromagneticResultUtil.success(edTagLibraryService.createTagGroup(tagName, createdBy));
}
// 在标签组下新建标签
@GetMapping("/createTag")
@UserOperation(value = "创建了标签", modelName = UserOperationModuleEnum.TAG)
public ElectromagneticResult<?> createTag(@RequestParam String parentId, @RequestParam String tagName) {
String createdBy = UserThreadLocal.getUserId();
return ElectromagneticResultUtil.success(edTagLibraryService.createTag(parentId, tagName, createdBy));
}
// 拖拽修改排序/分组
@GetMapping("/updateOrder")
@UserOperation(value = "修改了标签顺序", modelName = UserOperationModuleEnum.TAG)
public ElectromagneticResult<?> updateTagOrder(@RequestParam String tagId, @RequestParam String newTagId, @RequestParam String newParentId, @RequestParam Integer newOrderBy) {
String updatedBy = UserThreadLocal.getUserId();
return ElectromagneticResultUtil.success(edTagLibraryService.updateTagOrder(tagId, newTagId, newParentId, newOrderBy, updatedBy));
}
// 发布标签
@PostMapping("/batchPublish")
@UserOperation(value = "发布了标签组", modelName = UserOperationModuleEnum.TAG)
public ElectromagneticResult<?> publishTag(@RequestBody List<String> tagIds) {
return ElectromagneticResultUtil.success(edTagLibraryService.batchPublishTagGroups(tagIds));
}
// 废除标签
@GetMapping("/delete")
@UserOperation(value = "废除了标签组/标签", modelName = UserOperationModuleEnum.TAG)
public ElectromagneticResult<?> deleteTag(@RequestParam String tagId) {
return ElectromagneticResultUtil.success(edTagLibraryService.deleteTagOrGroup(tagId));
}
//获取标签数据
@GetMapping("/list")
@UserOperation(value = "查看了标签数据", modelName = UserOperationModuleEnum.TAG)
public ElectromagneticResult<?> listTags() {
return ElectromagneticResultUtil.success(edTagLibraryService.listTagsWithGroups());
}
// 修改标签组/标签
@GetMapping("/updateTag")
@UserOperation(value = "修改了标签组/标签", modelName = UserOperationModuleEnum.TAG)
public ElectromagneticResult<?> updateTag(@RequestParam String tagId, @RequestParam String tagName) {
String updatedBy = UserThreadLocal.getUserId();
return ElectromagneticResultUtil.success(edTagLibraryService.updateTagInfo(tagId, tagName, updatedBy));
}
// 查看标签树
@GetMapping("/tree")
@UserOperation(value = "查看了标签树", modelName = UserOperationModuleEnum.TAG)
public ElectromagneticResult<?> listTagTree() {
return ElectromagneticResultUtil.success(edTagLibraryService.listTagTree());
}
// 查看所有标签
@GetMapping("/listAllTags")
@UserOperation(value = "查看了所有标签", modelName = UserOperationModuleEnum.TAG)
public ElectromagneticResult<?> listAllTags() {
return ElectromagneticResultUtil.success(edTagLibraryService.listAllTags());
}
// 批量添加标签到文件
@PostMapping("/addTagsToFile")
@UserOperation(value = "批量添加了标签到文件", modelName = UserOperationModuleEnum.TAG)
public ElectromagneticResult<?> addTagsToFile(@RequestBody TagCreateDTO dto) {
String createdBy = UserThreadLocal.getUserId();
return ElectromagneticResultUtil.success(fileTagRelationService.addTagsToFile(dto.getFileId(), dto.getTagIds(), createdBy));
}
}

View File

@ -0,0 +1,34 @@
package com.electromagnetic.industry.software.manage.controller;
import cn.hutool.core.date.DateUtil;
import com.electromagnetic.industry.software.common.annotations.UserOperation;
import com.electromagnetic.industry.software.common.enums.UserOperationModuleEnum;
import com.electromagnetic.industry.software.common.resp.ElectromagneticResult;
import com.electromagnetic.industry.software.common.util.ElectromagneticResultUtil;
import com.electromagnetic.industry.software.manage.service.FileBackLogService;
import jakarta.annotation.Resource;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
@RestController
@RequestMapping("/data/ed/backup/")
public class FileBackupLogController {
@Resource
private FileBackLogService fileBackLogService;
@RequestMapping(value = "list")
@UserOperation(value = "查询备份日志", modelName = UserOperationModuleEnum.BACKUP_FILE)
public ElectromagneticResult<?> list(@RequestParam int pageNum, @RequestParam int pageSize) {
return fileBackLogService.query(pageNum, pageSize);
}
@GetMapping(value = "restore")
@UserOperation(value = "系统恢复", modelName = UserOperationModuleEnum.BACKUP_FILE)
public ElectromagneticResult<?> restore() {
Long maxEndTime = fileBackLogService.restore();
return ElectromagneticResultUtil.success(DateUtil.date(maxEndTime).toString());
}
}

View File

@ -0,0 +1,39 @@
package com.electromagnetic.industry.software.manage.controller;
import com.electromagnetic.industry.software.common.annotations.UserOperation;
import com.electromagnetic.industry.software.common.enums.UserOperationModuleEnum;
import com.electromagnetic.industry.software.common.resp.ElectromagneticResult;
import com.electromagnetic.industry.software.common.util.ElectromagneticResultUtil;
import com.electromagnetic.industry.software.manage.service.FileFormatService;
import jakarta.annotation.Resource;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
@RestController
@RequestMapping("/data/ed/file/format")
public class FileFormatController {
@Resource
private FileFormatService fileFormatService;
@GetMapping("/add")
@UserOperation(value = "新增文件格式", modelName = UserOperationModuleEnum.FILE_FORMAT)
public ElectromagneticResult<?> addFileFormat(@RequestParam String suffixName) {
return ElectromagneticResultUtil.success(fileFormatService.addFileFormat(suffixName));
}
@GetMapping("/delete")
@UserOperation(value = "删除文件格式", modelName = UserOperationModuleEnum.FILE_FORMAT)
public ElectromagneticResult<?> deleteFileFormat(@RequestParam String id) {
return ElectromagneticResultUtil.success(fileFormatService.deleteFileFormat(id));
}
@GetMapping("/list")
@UserOperation(value = "查询文件格式列表", modelName = UserOperationModuleEnum.FILE_FORMAT)
public ElectromagneticResult<?> list() {
return ElectromagneticResultUtil.success(fileFormatService.getList());
}
}

View File

@ -0,0 +1,44 @@
package com.electromagnetic.industry.software.manage.controller;
import cn.hutool.core.lang.Assert;
import com.electromagnetic.industry.software.common.annotations.UserOperation;
import com.electromagnetic.industry.software.common.enums.AdminTypeEnum;
import com.electromagnetic.industry.software.common.enums.UserOperationModuleEnum;
import com.electromagnetic.industry.software.common.resp.ElectromagneticResult;
import com.electromagnetic.industry.software.common.util.UserThreadLocal;
import com.electromagnetic.industry.software.manage.pojo.req.RecycleFileQueryDTO;
import com.electromagnetic.industry.software.manage.service.FileRecycleService;
import jakarta.annotation.Resource;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
@RestController
@RequestMapping("/data/ed/recycle/file")
public class FileRecycleController {
@Resource
private FileRecycleService fileRecycleService;
@RequestMapping("list")
@UserOperation(value = "查看回收站", modelName = UserOperationModuleEnum.BACKUP_FILE)
public ElectromagneticResult<?> list(@RequestBody RecycleFileQueryDTO pars) {
return fileRecycleService.list(pars);
}
@RequestMapping("remove")
@UserOperation(value = "彻底清除文件", modelName = UserOperationModuleEnum.BACKUP_FILE)
public ElectromagneticResult<?> remove(@RequestParam String fileId) {
Assert.isTrue(UserThreadLocal.getAdminType().equals(AdminTypeEnum.SYSTEM.getValue()), "当前用户没有删除文件权限");
return fileRecycleService.remove(fileId);
}
@RequestMapping("recover")
@UserOperation(value = "文件恢复", modelName = UserOperationModuleEnum.BACKUP_FILE)
public ElectromagneticResult<?> recover(@RequestParam String fileId) {
Assert.isTrue(UserThreadLocal.getAdminType().equals(AdminTypeEnum.SYSTEM.getValue()), "当前用户没有文件恢复权限");
return fileRecycleService.recover(fileId);
}
}

View File

@ -0,0 +1,14 @@
package com.electromagnetic.industry.software.manage.controller;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
@Controller
public class LoginController {
@GetMapping("index")
public String index() {
return "index";
}
}

View File

@ -1,17 +1,17 @@
package com.electromagnetic.industry.software.manage.controller;
import com.electromagnetic.industry.software.common.annotations.UserOperation;
import com.electromagnetic.industry.software.common.enums.UserOperationModuleEnum;
import com.electromagnetic.industry.software.common.resp.ElectromagneticResult;
import com.electromagnetic.industry.software.common.util.ElectromagneticResultUtil;
import com.electromagnetic.industry.software.common.util.UserThreadLocal;
import com.electromagnetic.industry.software.manage.service.PermissionService;
import io.swagger.annotations.ApiOperation;
import jakarta.annotation.Resource;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource;
@RestController
@RequestMapping("/data/ed/permission")
public class PermissionController {
@ -19,8 +19,8 @@ public class PermissionController {
@Resource
private PermissionService permissionService;
@ApiOperation(value = "查询当前用户在当前目录的功能权限", notes = "")
@GetMapping(value = "/{id}")
@UserOperation(value = "查询了在当前目录的功能权限", modelName = UserOperationModuleEnum.PERMISSION)
public ElectromagneticResult<?> getUserPermission(@PathVariable("id") String id) {
String userId = UserThreadLocal.getUserId();
return ElectromagneticResultUtil.success(permissionService.getUserPermission(userId, id, false));

View File

@ -1,135 +1,192 @@
package com.electromagnetic.industry.software.manage.controller;
import com.electromagnetic.industry.software.common.annotations.RequiredPermission;
import com.electromagnetic.industry.software.common.annotations.UserOperation;
import com.electromagnetic.industry.software.common.enums.DataOwnEnum;
import com.electromagnetic.industry.software.common.enums.FilePermission;
import com.electromagnetic.industry.software.common.enums.PrjQuerySource;
import com.electromagnetic.industry.software.common.enums.UserOperationModuleEnum;
import com.electromagnetic.industry.software.common.resp.ElectromagneticResult;
import com.electromagnetic.industry.software.common.util.ElectromagneticResultUtil;
import com.electromagnetic.industry.software.common.util.UserThreadLocal;
import com.electromagnetic.industry.software.manage.pojo.req.CreateFolderDTO;
import com.electromagnetic.industry.software.manage.pojo.req.FileChunkDTO;
import com.electromagnetic.industry.software.manage.pojo.req.FileInfoQueryDTO;
import com.electromagnetic.industry.software.manage.pojo.req.UpdateFileInfoDTO;
import com.electromagnetic.industry.software.manage.service.EdFileInfoService;
import jakarta.annotation.Resource;
import jakarta.servlet.http.HttpServletResponse;
import org.springframework.core.io.InputStreamResource;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
@RestController
@RequestMapping("/data/ed/file")
public class EdFileInfoController {
@RequestMapping("/data/ed/repo/file")
public class RepoEdFileInfoController {
@Resource
private EdFileInfoService edFileInfoService;
@UserOperation(value = "查看工程树", modelName = UserOperationModuleEnum.REPO_PRJ_DATABASE)
@RequestMapping("tree")
public ElectromagneticResult<?> tree() {
return edFileInfoService.tree();
return edFileInfoService.tree(PrjQuerySource.REPO_DB.value);
}
@UserOperation(value = "创建文件夹", modelName = UserOperationModuleEnum.REPO_PRJ_DATABASE)
@RequestMapping("createFolder")
public ElectromagneticResult<?> createFolder(@RequestBody CreateFolderDTO createFolderDTO) {
return edFileInfoService.createFolder(createFolderDTO);
return edFileInfoService.createFolder(createFolderDTO, DataOwnEnum.REPO_FILE.code);
}
@UserOperation(value = "作废", modelName = UserOperationModuleEnum.REPO_PRJ_DATABASE)
@RequiredPermission(value = FilePermission.DELETE)
@RequestMapping("delete")
public ElectromagneticResult<?> delete(@RequestParam String id) {
return edFileInfoService.delete(id);
return edFileInfoService.delete(id, DataOwnEnum.REPO_FILE.code);
}
@UserOperation(value = "查询文件", modelName = UserOperationModuleEnum.REPO_PRJ_DATABASE)
@RequiredPermission(value = FilePermission.VIEW)
@RequestMapping("info")
public ElectromagneticResult<?> info(@RequestBody FileInfoQueryDTO fileInfoQueryDTO) {
return edFileInfoService.queryEdFileInfo(fileInfoQueryDTO);
return edFileInfoService.queryEdFileInfo(fileInfoQueryDTO, DataOwnEnum.REPO_FILE.code);
}
@UserOperation(value = "上传文件", modelName = UserOperationModuleEnum.REPO_PRJ_DATABASE)
@RequiredPermission(value = FilePermission.UPLOAD)
@RequestMapping("upload")
public ElectromagneticResult<?> upload(@RequestParam("parentId") String parentId,
@RequestParam("file") MultipartFile file,
@RequestParam("strategy") Integer strategy) {
return edFileInfoService.upload(parentId, file, strategy);
return edFileInfoService.upload(parentId, file, strategy, DataOwnEnum.REPO_FILE.code);
}
@UserOperation(value = "下载文件", modelName = UserOperationModuleEnum.REPO_PRJ_DATABASE)
@RequiredPermission(value = FilePermission.DOWNLOAD)
@RequestMapping("download")
public ResponseEntity<InputStreamResource> download(@RequestParam String id, HttpServletResponse response) {
return edFileInfoService.download(id, response);
return edFileInfoService.download(id, response, DataOwnEnum.REPO_FILE.code);
}
@UserOperation(value = "更新文件信息", modelName = UserOperationModuleEnum.REPO_PRJ_DATABASE)
@RequiredPermission(value = FilePermission.EDIT)
@RequestMapping("updateFileInfo")
public ElectromagneticResult<?> updateFileInfo(@RequestBody UpdateFileInfoDTO updateFileInfoDTO) {
return edFileInfoService.updateFileInfo(updateFileInfoDTO);
return edFileInfoService.updateFileInfo(updateFileInfoDTO, DataOwnEnum.REPO_FILE.code);
}
@UserOperation(value = "移动文件", modelName = UserOperationModuleEnum.REPO_PRJ_DATABASE)
@RequiredPermission(value = FilePermission.MOVE)
@RequestMapping("moveFile")
public ElectromagneticResult<?> moveFile(@RequestParam("id") String id,
@RequestParam("targetFolderId") String targetFolderId,
@RequestParam("strategy") Integer strategy) {
return edFileInfoService.moveFile(id, targetFolderId, strategy);
return edFileInfoService.moveFile(id, targetFolderId, strategy, DataOwnEnum.REPO_FILE.code);
}
@UserOperation(value = "复制文件", modelName = UserOperationModuleEnum.REPO_PRJ_DATABASE)
@RequiredPermission(value = FilePermission.MOVE)
@RequestMapping("copyFile")
public ElectromagneticResult<?> copyFile(@RequestParam("id") String id,
@RequestParam("targetFolderId") String targetFolderId,
@RequestParam("strategy") Integer strategy) {
return edFileInfoService.copyFile(id, targetFolderId, strategy);
return edFileInfoService.copyFile(id, targetFolderId, strategy, DataOwnEnum.REPO_FILE.code);
}
@UserOperation(value = "查看文件历史版本信息", modelName = UserOperationModuleEnum.REPO_PRJ_DATABASE)
@RequiredPermission(value = FilePermission.VIEW)
@RequestMapping("versionView")
public ElectromagneticResult<?> versionView(@RequestParam String fileId) {
return edFileInfoService.versionView(fileId);
}
@UserOperation(value = "回退版本", modelName = UserOperationModuleEnum.REPO_PRJ_DATABASE)
@RequiredPermission(value = FilePermission.EDIT)
@RequestMapping("versionBack")
public ElectromagneticResult<?> versionBack(@RequestParam String fileId, @RequestParam int targetVersion) {
return edFileInfoService.versionBack(fileId, targetVersion);
}
@UserOperation(value = "导出数据库", modelName = UserOperationModuleEnum.REPO_PRJ_DATABASE)
@RequestMapping("batchExport")
public ResponseEntity<InputStreamResource> batchExport(@RequestParam String fileIds, HttpServletResponse response) throws IOException {
return edFileInfoService.batchExport(fileIds, response);
return edFileInfoService.batchExport(fileIds, response, DataOwnEnum.REPO_FILE.code);
}
@UserOperation(value = "批量上传数据库", modelName = UserOperationModuleEnum.REPO_PRJ_DATABASE)
@RequestMapping(value = "/mergeChunks", method = RequestMethod.GET)
public ElectromagneticResult<?> mergeChunks(@RequestParam String identifier,
@RequestParam String fileName,
@RequestParam Integer totalChunks) {
return edFileInfoService.mergeChunks(identifier, fileName, totalChunks);
return edFileInfoService.mergeChunks(identifier, fileName, totalChunks, DataOwnEnum.SYS_FILE.code);
}
@UserOperation(value = "批量上传数据库", modelName = UserOperationModuleEnum.REPO_PRJ_DATABASE)
@RequestMapping(value = "/batchImport", method = RequestMethod.POST)
public ElectromagneticResult<?> batchImport(FileChunkDTO fileChunkDTO) {
return edFileInfoService.batchImport(fileChunkDTO);
return edFileInfoService.batchImport(fileChunkDTO, DataOwnEnum.REPO_FILE.code);
}
@UserOperation(value = "批量上传数据库")
@RequestMapping(value = "/batchImport", method = RequestMethod.GET)
public ElectromagneticResult<?> checkChunkExist(FileChunkDTO fileChunkDTO) {
return edFileInfoService.checkChunkExist(fileChunkDTO);
return edFileInfoService.checkChunkExist(fileChunkDTO, DataOwnEnum.REPO_FILE.code);
}
@UserOperation(value = "查询发布管理", modelName = UserOperationModuleEnum.REPO_PRJ_DATABASE)
@RequestMapping(value = "/uploadRecord", method = RequestMethod.GET)
public ElectromagneticResult<?> uploadRecord(@RequestParam int pageNum, @RequestParam int pageSize) {
return edFileInfoService.uploadRecord(pageNum, pageSize);
return edFileInfoService.uploadRecord(pageNum, pageSize, DataOwnEnum.REPO_FILE.code);
}
@UserOperation(value = "查询文件详细信息", modelName = UserOperationModuleEnum.REPO_PRJ_DATABASE)
@RequiredPermission(value = FilePermission.VIEW)
@RequestMapping(value = "/fileDetail", method = RequestMethod.GET)
public ElectromagneticResult<?> detail(@RequestParam String id) {
return edFileInfoService.detail(id);
}
@UserOperation(value = "查询子文件集", modelName = UserOperationModuleEnum.REPO_PRJ_DATABASE)
@RequiredPermission(value = FilePermission.VIEW)
@RequestMapping(value = "/queryChildFolder", method = RequestMethod.GET)
public ElectromagneticResult<?> queryChildFolder(@RequestParam String parentId) {
return edFileInfoService.queryChildFolder(parentId);
return edFileInfoService.queryChildFolder(parentId, DataOwnEnum.REPO_FILE.code);
}
@UserOperation(value = "预览文件", modelName = UserOperationModuleEnum.REPO_PRJ_DATABASE)
@RequiredPermission(value = FilePermission.PREVIEW)
@RequestMapping(value = "preview", method = RequestMethod.GET)
public ResponseEntity<InputStreamResource> preview(@RequestParam String id, HttpServletResponse response) {
return edFileInfoService.preview(id, response, DataOwnEnum.REPO_FILE.code);
}
/**
* 添加进收藏夹
*
* @param id 文件id
* @return
*/
@GetMapping("/collection")
@UserOperation(value = "收藏了文件", modelName = UserOperationModuleEnum.REPO_PRJ_DATABASE)
public ElectromagneticResult<?> addFavorite(@RequestParam String id) {
String userId = UserThreadLocal.getUserId();
return ElectromagneticResultUtil.success(edFileInfoService.addFavorite(userId, id));
}
/**
* 从收藏夹移除
*
* @param id 文件id
* @return
*/
@GetMapping("/removeCollection")
@UserOperation(value = "从收藏夹移除文件", modelName = UserOperationModuleEnum.USER_PRJ)
public ElectromagneticResult<?> removeFavorite(@RequestParam String id) {
String userId = UserThreadLocal.getUserId();
return ElectromagneticResultUtil.success(edFileInfoService.removeFavorite(userId, id));
}
}

View File

@ -0,0 +1,100 @@
package com.electromagnetic.industry.software.manage.controller;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.electromagnetic.industry.software.common.annotations.UserOperation;
import com.electromagnetic.industry.software.common.enums.DataOwnEnum;
import com.electromagnetic.industry.software.common.enums.UserOperationModuleEnum;
import com.electromagnetic.industry.software.common.resp.ElectromagneticResult;
import com.electromagnetic.industry.software.common.util.ElectromagneticResultUtil;
import com.electromagnetic.industry.software.common.util.UserThreadLocal;
import com.electromagnetic.industry.software.manage.pojo.models.EdFileRelation;
import com.electromagnetic.industry.software.manage.pojo.req.CheckNameUniqueRequest;
import com.electromagnetic.industry.software.manage.pojo.req.UpdateRelationDTO;
import com.electromagnetic.industry.software.manage.service.EdFileInfoService;
import com.electromagnetic.industry.software.manage.service.EdFileRelationService;
import jakarta.annotation.Resource;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
@RestController
@RequestMapping("/data/ed/repo/relation")
public class RepoEdFileRelationController {
@Resource
EdFileRelationService edFileRelationService;
@Resource
EdFileInfoService edFileInfoService;
/**
* 创建文件关系
*
* @param relation
* @return
*/
@RequestMapping(value = "/create", method = RequestMethod.POST)
@UserOperation(value = "创建文件关系", modelName = UserOperationModuleEnum.FILE_RELATION)
public ElectromagneticResult<?> createRelation(@RequestBody EdFileRelation relation) {
return ElectromagneticResultUtil.success(edFileRelationService.createRelation(relation));
}
/**
* 更新文件关系
*
* @param updateRelation
* @return
*/
@RequestMapping(value = "/update", method = RequestMethod.POST)
@UserOperation(value = "更新文件关系", modelName = UserOperationModuleEnum.FILE_RELATION)
public ElectromagneticResult<?> updateRelation(@RequestBody UpdateRelationDTO updateRelation) {
LambdaUpdateWrapper<EdFileRelation> wrapper = new LambdaUpdateWrapper<>();
wrapper.eq(EdFileRelation::getId, updateRelation.getRelationId()).set(EdFileRelation::getRelationship, updateRelation.getRelationship());
boolean isUpdated = edFileRelationService.update(wrapper);
if (isUpdated) {
UserThreadLocal.setSuccessInfo("", updateRelation.getRelationId(), "更新了文件关系");
}
return ElectromagneticResultUtil.success(isUpdated);
}
/**
* 取消文件关系
*
* @param relationId 关系主键id
* @return
*/
@RequestMapping(value = "/cancel/{relationId}", method = RequestMethod.GET)
@UserOperation(value = "取消文件关系", modelName = UserOperationModuleEnum.FILE_RELATION)
public ElectromagneticResult<?> cancelRelation(@PathVariable("relationId") String relationId) {
return ElectromagneticResultUtil.success(edFileRelationService.cancelRelation(relationId));
}
/**
* 展示文件关系
*/
@RequestMapping(value = "listRelations/{id}", method = RequestMethod.GET)
@UserOperation(value = "查看文件关系", modelName = UserOperationModuleEnum.FILE_RELATION)
public ElectromagneticResult<?> listRelations(@PathVariable("id") String id) {
return ElectromagneticResultUtil.success(edFileRelationService.listRelations(id));
}
/**
* 检验文件名是否唯一
*/
@RequestMapping(value = "/checkFileNameExist", method = RequestMethod.POST)
@UserOperation(value = "校验文件名唯一性", modelName = UserOperationModuleEnum.FILE_RELATION)
public ElectromagneticResult<?> checkFileNameExist(@RequestBody CheckNameUniqueRequest checkNameUniqueRequest) {
return ElectromagneticResultUtil.success(edFileRelationService.checkNameExist(checkNameUniqueRequest));
}
/**
* 本地上传并建立关系
*/
@RequestMapping(value = "/upload", method = RequestMethod.POST)
@UserOperation(value = "上传了文件并创建文件关系", modelName = UserOperationModuleEnum.FILE_RELATION)
public ElectromagneticResult<?> uploadRelation(@RequestParam("parentId") String parentId,
@RequestParam("file") MultipartFile file,
@RequestParam("description") String description,
@RequestParam("id") String id) {
return ElectromagneticResultUtil.success(edFileInfoService.uploadFileAndRelation(parentId, id, file, description, DataOwnEnum.REPO_FILE.code));
}
}

View File

@ -0,0 +1,91 @@
package com.electromagnetic.industry.software.manage.controller;
import com.electromagnetic.industry.software.common.annotations.UserOperation;
import com.electromagnetic.industry.software.common.enums.DataOwnEnum;
import com.electromagnetic.industry.software.common.enums.PrjQuerySource;
import com.electromagnetic.industry.software.common.enums.UserOperationModuleEnum;
import com.electromagnetic.industry.software.common.resp.ElectromagneticResult;
import com.electromagnetic.industry.software.manage.pojo.req.FolderResortDTO;
import com.electromagnetic.industry.software.manage.pojo.req.QueryPublishStatus;
import com.electromagnetic.industry.software.manage.service.EdPrjService;
import jakarta.annotation.Resource;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import java.util.List;
@RestController
@RequestMapping("/data/ed/repo/prj")
public class RepoPrjController {
@Resource
private EdPrjService edPrjService;
@UserOperation(value = "创建层级", modelName = UserOperationModuleEnum.REPO_PRJ_SETTING)
@RequestMapping("create")
public ElectromagneticResult<?> create(@RequestParam String prjName) {
return edPrjService.createNewPrj(prjName, DataOwnEnum.REPO_PRJ.code);
}
@UserOperation(value = "删除层级", modelName = UserOperationModuleEnum.REPO_PRJ_SETTING)
@RequestMapping("delete")
public ElectromagneticResult<?> delete(@RequestParam String prjId) {
return edPrjService.delete(prjId, DataOwnEnum.REPO_PRJ.code);
}
@UserOperation(value = "修改层级名", modelName = UserOperationModuleEnum.REPO_PRJ_SETTING)
@RequestMapping("modify")
public ElectromagneticResult<?> modifyPrjName(@RequestParam String newPrjName, @RequestParam String prjId) {
return edPrjService.modifyPrjName(prjId, newPrjName, DataOwnEnum.REPO_PRJ.code);
}
@UserOperation(value = "查询所有层级", modelName = UserOperationModuleEnum.REPO_PRJ_SETTING)
@RequestMapping("queryAll")
public ElectromagneticResult<?> queryAll() {
return edPrjService.queryAllPrjInfo(PrjQuerySource.REPO_PRJ.value);
}
@UserOperation(value = "添加子集", modelName = UserOperationModuleEnum.REPO_PRJ_SETTING)
@RequestMapping("addFolder")
public ElectromagneticResult<?> addFolder(@RequestParam String folderName, @RequestParam String parentId) {
return edPrjService.addFolder(parentId, folderName, DataOwnEnum.REPO_PRJ.code);
}
@UserOperation(value = "修改子集名称", modelName = UserOperationModuleEnum.REPO_PRJ_SETTING)
@RequestMapping("modifyFolder")
public ElectromagneticResult<?> modifyFolder(@RequestParam String newFolderName, @RequestParam String id) {
return edPrjService.modifyFolder(id, newFolderName, DataOwnEnum.REPO_PRJ.code);
}
@UserOperation(value = "废除子集", modelName = UserOperationModuleEnum.REPO_PRJ_SETTING)
@RequestMapping("deleteFolder")
public ElectromagneticResult<?> deleteFolder(@RequestParam String id) {
return edPrjService.deleteFolder(id, DataOwnEnum.REPO_PRJ.code);
}
@UserOperation(value = "更改层级顺序", modelName = UserOperationModuleEnum.REPO_PRJ_SETTING)
@RequestMapping("folderResort")
public ElectromagneticResult<?> folderResort(@RequestBody List<FolderResortDTO> folderResortDTOList) {
return edPrjService.folderResort(folderResortDTOList);
}
@UserOperation(value = "发布层级", modelName = UserOperationModuleEnum.REPO_PRJ_SETTING)
@RequestMapping("publish")
public ElectromagneticResult<?> publish(@RequestParam String prjId) {
return edPrjService.publish(prjId, DataOwnEnum.REPO_PRJ.code);
}
@UserOperation(value = "引用层级", modelName = UserOperationModuleEnum.REPO_PRJ_SETTING)
@RequestMapping("follow")
public ElectromagneticResult<?> follow(@RequestParam String sourceId, @RequestParam String targetId) {
return edPrjService.follow(sourceId, targetId, DataOwnEnum.REPO_PRJ.code);
}
@UserOperation(value = "查询层级发布状态", modelName = UserOperationModuleEnum.REPO_PRJ_SETTING)
@RequestMapping("publishStatus")
public ElectromagneticResult<?> publishStatus(@RequestBody QueryPublishStatus queryPublishStatus) {
return edPrjService.publishStatus(queryPublishStatus, DataOwnEnum.REPO_PRJ.code);
}
}

View File

@ -1,17 +1,17 @@
package com.electromagnetic.industry.software.manage.controller;
import com.electromagnetic.industry.software.common.annotations.RequiredRole;
import com.electromagnetic.industry.software.common.annotations.UserOperation;
import com.electromagnetic.industry.software.common.enums.AdminTypeEnum;
import com.electromagnetic.industry.software.common.exception.BizException;
import com.electromagnetic.industry.software.common.enums.UserOperationModuleEnum;
import com.electromagnetic.industry.software.common.resp.ElectromagneticResult;
import com.electromagnetic.industry.software.common.util.ElectromagneticResultUtil;
import com.electromagnetic.industry.software.manage.pojo.req.RoleDTO;
import com.electromagnetic.industry.software.manage.pojo.req.RolePageDTO;
import com.electromagnetic.industry.software.manage.service.RoleService;
import io.swagger.annotations.ApiOperation;
import jakarta.annotation.Resource;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
@RestController
@RequestMapping("/data/ed/role")
@ -20,67 +20,57 @@ public class RoleController {
@Resource
private RoleService roleService;
@ApiOperation(value = "新建角色", notes = "")
@RequiredRole(AdminTypeEnum.SECURITY)
@UserOperation(value = "新建角色", modelName = UserOperationModuleEnum.PERMISSION)
@RequestMapping(value = "/createRole", method = RequestMethod.POST)
public ElectromagneticResult<?> createRole(@RequestBody RoleDTO roleDTO) {
try {
Boolean res = roleService.createRole(roleDTO);
return ElectromagneticResultUtil.success(res);
} catch (BizException e) {
return ElectromagneticResultUtil.fail("400", e.getMessage());
}
return ElectromagneticResultUtil.success(roleService.createRole(roleDTO));
}
@ApiOperation(value = "更新角色", notes = "")
@RequiredRole(AdminTypeEnum.SECURITY)
@UserOperation(value = "更新角色", modelName = UserOperationModuleEnum.PERMISSION)
@RequestMapping(value = "/updateRole", method = RequestMethod.POST)
public ElectromagneticResult<?> updateRole(@RequestBody RoleDTO roleDTO) {
try {
Boolean res = roleService.updateRole(roleDTO);
return ElectromagneticResultUtil.success(res);
} catch (BizException e) {
return ElectromagneticResultUtil.fail("400", e.getMessage());
}
return ElectromagneticResultUtil.success(roleService.updateRole(roleDTO));
}
@ApiOperation(value = "删除角色", notes = "")
@RequiredRole(AdminTypeEnum.SECURITY)
@UserOperation(value = "删除角色", modelName = UserOperationModuleEnum.PERMISSION)
@GetMapping(value = "/deleteRole/{roleId}")
public ElectromagneticResult<?> deleteRole(@PathVariable("roleId") String roleId) {
return ElectromagneticResultUtil.success(roleService.deleteRole(roleId));
}
@ApiOperation(value = "查看角色", notes = "")
@RequiredRole(AdminTypeEnum.SECURITY)
@UserOperation(value = "查看指定角色", modelName = UserOperationModuleEnum.PERMISSION)
@GetMapping(value = "/getSingleRole/{roleId}")
public ElectromagneticResult<?> getRole(@PathVariable("roleId") String roleId) {
return ElectromagneticResultUtil.success(roleService.getRole(roleId));
}
@ApiOperation(value = "获取角色列表", notes = "")
@RequiredRole(AdminTypeEnum.SECURITY)
@UserOperation(value = "查看角色", modelName = UserOperationModuleEnum.PERMISSION)
@RequestMapping(value = "/list", method = RequestMethod.POST)
public ElectromagneticResult<?> getRoles(@RequestBody RolePageDTO rolePageDTO) {
return ElectromagneticResultUtil.success(roleService.getRoles(rolePageDTO));
}
@ApiOperation(value = "通过角色名查看角色权限", notes = "")
@RequiredRole(AdminTypeEnum.SECURITY)
@UserOperation(value = "查看某一角色的权限", modelName = UserOperationModuleEnum.PERMISSION)
@GetMapping(value = "/getRoleByName")
public ElectromagneticResult<?> getRoleByName(@RequestParam("roleName") String roleName) {
return ElectromagneticResultUtil.success(roleService.getRoleByName(roleName));
}
@ApiOperation(value = "角色名列表", notes = "")
@RequiredRole(AdminTypeEnum.SECURITY)
@UserOperation(value = "获取角色名列表", modelName = UserOperationModuleEnum.PERMISSION)
@GetMapping(value = "/getRoleNames")
public ElectromagneticResult<?> getRoleNames() {
return ElectromagneticResultUtil.success(roleService.getAllRoleNames());
}
@ApiOperation(value = "获得角色配置模版", notes = "")
@RequiredRole(AdminTypeEnum.SECURITY)
@UserOperation(value = "获取角色配置模版", modelName = UserOperationModuleEnum.PERMISSION)
@GetMapping(value = "/getRoleTemplate")
public ElectromagneticResult<?> getRoleTemplate() {
return ElectromagneticResultUtil.success(roleService.getRoleTemplate());

View File

@ -0,0 +1,204 @@
package com.electromagnetic.industry.software.manage.controller;
import com.electromagnetic.industry.software.common.annotations.RequiredPermission;
import com.electromagnetic.industry.software.common.annotations.UserOperation;
import com.electromagnetic.industry.software.common.enums.DataOwnEnum;
import com.electromagnetic.industry.software.common.enums.FilePermission;
import com.electromagnetic.industry.software.common.enums.PrjQuerySource;
import com.electromagnetic.industry.software.common.enums.UserOperationModuleEnum;
import com.electromagnetic.industry.software.common.resp.ElectromagneticResult;
import com.electromagnetic.industry.software.common.util.ElectromagneticResultUtil;
import com.electromagnetic.industry.software.common.util.UserThreadLocal;
import com.electromagnetic.industry.software.manage.pojo.req.CreateFolderDTO;
import com.electromagnetic.industry.software.manage.pojo.req.FileChunkDTO;
import com.electromagnetic.industry.software.manage.pojo.req.FileInfoQueryDTO;
import com.electromagnetic.industry.software.manage.pojo.req.UpdateFileInfoDTO;
import com.electromagnetic.industry.software.manage.service.EdFileInfoService;
import jakarta.annotation.Resource;
import jakarta.servlet.http.HttpServletResponse;
import org.springframework.core.io.InputStreamResource;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import java.io.IOException;
@RestController
@RequestMapping("/data/ed/file")
public class SysEdFileInfoController {
@Resource
private EdFileInfoService edFileInfoService;
@UserOperation(value = "查看工程树", modelName = UserOperationModuleEnum.SYS_PRJ_DATABASE)
@RequestMapping("tree")
public ElectromagneticResult<?> tree() {
return edFileInfoService.tree(PrjQuerySource.SYS_DB.value);
}
@UserOperation(value = "创建文件夹", modelName = UserOperationModuleEnum.SYS_PRJ_DATABASE)
@RequestMapping("createFolder")
public ElectromagneticResult<?> createFolder(@RequestBody CreateFolderDTO createFolderDTO) {
return edFileInfoService.createFolder(createFolderDTO, DataOwnEnum.SYS_FILE.code);
}
@UserOperation(value = "作废", modelName = UserOperationModuleEnum.SYS_PRJ_DATABASE)
@RequiredPermission(value = FilePermission.DELETE)
@RequestMapping("delete")
public ElectromagneticResult<?> delete(@RequestParam String id) {
return edFileInfoService.delete(id, DataOwnEnum.SYS_FILE.code);
}
@UserOperation(value = "查询文件", modelName = UserOperationModuleEnum.SYS_PRJ_DATABASE)
@RequiredPermission(value = FilePermission.VIEW)
@RequestMapping("info")
public ElectromagneticResult<?> info(@RequestBody FileInfoQueryDTO fileInfoQueryDTO) {
return edFileInfoService.queryEdFileInfo(fileInfoQueryDTO, DataOwnEnum.SYS_FILE.code);
}
@UserOperation(value = "上传文件", modelName = UserOperationModuleEnum.SYS_PRJ_DATABASE)
@RequiredPermission(value = FilePermission.UPLOAD)
@RequestMapping("upload")
public ElectromagneticResult<?> upload(@RequestParam("parentId") String parentId,
@RequestParam("file") MultipartFile file,
@RequestParam("strategy") Integer strategy) {
return edFileInfoService.upload(parentId, file, strategy, DataOwnEnum.SYS_FILE.code);
}
@UserOperation(value = "下载文件", modelName = UserOperationModuleEnum.SYS_PRJ_DATABASE)
@RequiredPermission(value = FilePermission.DOWNLOAD)
@RequestMapping("download")
public ResponseEntity<InputStreamResource> download(@RequestParam String id, HttpServletResponse response) {
return edFileInfoService.download(id, response, DataOwnEnum.SYS_FILE.code);
}
@UserOperation(value = "更新文件信息", modelName = UserOperationModuleEnum.SYS_PRJ_DATABASE)
@RequiredPermission(value = FilePermission.EDIT)
@RequestMapping("updateFileInfo")
public ElectromagneticResult<?> updateFileInfo(@RequestBody UpdateFileInfoDTO updateFileInfoDTO) {
return edFileInfoService.updateFileInfo(updateFileInfoDTO, DataOwnEnum.SYS_FILE.code);
}
@UserOperation(value = "移动文件", modelName = UserOperationModuleEnum.SYS_PRJ_DATABASE)
@RequiredPermission(value = FilePermission.MOVE)
@RequestMapping("moveFile")
public ElectromagneticResult<?> moveFile(@RequestParam("id") String id,
@RequestParam("targetFolderId") String targetFolderId,
@RequestParam("strategy") Integer strategy) {
return edFileInfoService.moveFile(id, targetFolderId, strategy, DataOwnEnum.SYS_FILE.code);
}
@UserOperation(value = "复制文件", modelName = UserOperationModuleEnum.SYS_PRJ_DATABASE)
@RequiredPermission(value = FilePermission.MOVE)
@RequestMapping("copyFile")
public ElectromagneticResult<?> copyFile(@RequestParam("id") String id,
@RequestParam("targetFolderId") String targetFolderId,
@RequestParam("strategy") Integer strategy) {
return edFileInfoService.copyFile(id, targetFolderId, strategy, DataOwnEnum.SYS_FILE.code);
}
@UserOperation(value = "查看文件历史版本信息", modelName = UserOperationModuleEnum.SYS_PRJ_DATABASE)
@RequiredPermission(value = FilePermission.VIEW)
@RequestMapping("versionView")
public ElectromagneticResult<?> versionView(@RequestParam String fileId) {
return edFileInfoService.versionView(fileId);
}
@UserOperation(value = "回退版本", modelName = UserOperationModuleEnum.SYS_PRJ_DATABASE)
@RequiredPermission(value = FilePermission.EDIT)
@RequestMapping("versionBack")
public ElectromagneticResult<?> versionBack(@RequestParam String fileId, @RequestParam int targetVersion) {
return edFileInfoService.versionBack(fileId, targetVersion);
}
@UserOperation(value = "导出数据库", modelName = UserOperationModuleEnum.SYS_PRJ_DATABASE)
@RequestMapping("batchExport")
public ResponseEntity<InputStreamResource> batchExport(@RequestParam String fileIds, HttpServletResponse response) throws IOException {
return edFileInfoService.batchExport(fileIds, response, DataOwnEnum.SYS_FILE.code);
}
@UserOperation(value = "批量上传数据库", modelName = UserOperationModuleEnum.SYS_PRJ_DATABASE)
@RequestMapping(value = "/mergeChunks", method = RequestMethod.GET)
public ElectromagneticResult<?> mergeChunks(@RequestParam String identifier,
@RequestParam String fileName,
@RequestParam Integer totalChunks) {
return edFileInfoService.mergeChunks(identifier, fileName, totalChunks, DataOwnEnum.SYS_FILE.code);
}
@UserOperation(value = "批量上传数据库", modelName = UserOperationModuleEnum.SYS_PRJ_DATABASE)
@RequestMapping(value = "/batchImport", method = RequestMethod.POST)
public ElectromagneticResult<?> batchImport(FileChunkDTO fileChunkDTO) {
return edFileInfoService.batchImport(fileChunkDTO, DataOwnEnum.SYS_FILE.code);
}
@UserOperation(value = "批量上传数据库")
@RequestMapping(value = "/batchImport", method = RequestMethod.GET)
public ElectromagneticResult<?> checkChunkExist(FileChunkDTO fileChunkDTO) {
return edFileInfoService.checkChunkExist(fileChunkDTO, DataOwnEnum.SYS_FILE.code);
}
@UserOperation(value = "查询发布管理", modelName = UserOperationModuleEnum.SYS_PRJ_DATABASE)
@RequestMapping(value = "/uploadRecord", method = RequestMethod.GET)
public ElectromagneticResult<?> uploadRecord(@RequestParam int pageNum, @RequestParam int pageSize) {
return edFileInfoService.uploadRecord(pageNum, pageSize, DataOwnEnum.SYS_FILE.code);
}
@UserOperation(value = "查询文件详细信息", modelName = UserOperationModuleEnum.SYS_PRJ_DATABASE)
@RequiredPermission(value = FilePermission.VIEW)
@RequestMapping(value = "/fileDetail", method = RequestMethod.GET)
public ElectromagneticResult<?> detail(@RequestParam String id) {
return edFileInfoService.detail(id);
}
@UserOperation(value = "查询子文件集", modelName = UserOperationModuleEnum.SYS_PRJ_DATABASE)
@RequiredPermission(value = FilePermission.VIEW)
@RequestMapping(value = "/queryChildFolder", method = RequestMethod.GET)
public ElectromagneticResult<?> queryChildFolder(@RequestParam String parentId) {
return edFileInfoService.queryChildFolder(parentId, DataOwnEnum.SYS_FILE.code);
}
@UserOperation(value = "预览文件", modelName = UserOperationModuleEnum.SYS_PRJ_DATABASE)
@RequiredPermission(value = FilePermission.PREVIEW)
@RequestMapping(value = "preview", method = RequestMethod.GET)
public ResponseEntity<InputStreamResource> preview(@RequestParam String id, HttpServletResponse response) {
return edFileInfoService.preview(id, response, DataOwnEnum.SYS_FILE.code);
}
/**
* 添加进收藏夹
*
* @param id 文件id
* @return
*/
@GetMapping("/collection")
@UserOperation(value = "收藏了文件", modelName = UserOperationModuleEnum.SYS_PRJ_DATABASE)
public ElectromagneticResult<?> addFavorite(@RequestParam String id) {
String userId = UserThreadLocal.getUserId();
return ElectromagneticResultUtil.success(edFileInfoService.addFavorite(userId, id));
}
/**
* 从收藏夹移除
*
* @param id 文件id
* @return
*/
@GetMapping("/removeCollection")
@UserOperation(value = "从收藏夹移除了文件", modelName = UserOperationModuleEnum.SYS_PRJ_DATABASE)
public ElectromagneticResult<?> removeFavorite(@RequestParam String id) {
String userId = UserThreadLocal.getUserId();
return ElectromagneticResultUtil.success(edFileInfoService.removeFavorite(userId, id));
}
/**
* 展示当前用户收藏夹文件
*
* @return
*/
@PostMapping("/listCollection")
@UserOperation(value = "查看了收藏夹", modelName = UserOperationModuleEnum.SYS_PRJ_DATABASE)
public ElectromagneticResult<?> listFavorite(@RequestBody FileInfoQueryDTO fileInfoQueryDTO) {
String userId = UserThreadLocal.getUserId();
return ElectromagneticResultUtil.success(edFileInfoService.findFavorite(userId, fileInfoQueryDTO));
}
}

View File

@ -1,24 +1,29 @@
package com.electromagnetic.industry.software.manage.controller;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.electromagnetic.industry.software.common.exception.BizException;
import com.electromagnetic.industry.software.common.annotations.UserOperation;
import com.electromagnetic.industry.software.common.enums.DataOwnEnum;
import com.electromagnetic.industry.software.common.enums.UserOperationModuleEnum;
import com.electromagnetic.industry.software.common.resp.ElectromagneticResult;
import com.electromagnetic.industry.software.common.util.ElectromagneticResultUtil;
import com.electromagnetic.industry.software.common.util.UserThreadLocal;
import com.electromagnetic.industry.software.manage.pojo.models.EdFileRelation;
import com.electromagnetic.industry.software.manage.pojo.req.CheckNameUniqueRequest;
import com.electromagnetic.industry.software.manage.pojo.req.UpdateRelationDTO;
import com.electromagnetic.industry.software.manage.service.serviceimpl.EdFileRelationServiceImpl;
import com.electromagnetic.industry.software.manage.service.EdFileInfoService;
import com.electromagnetic.industry.software.manage.service.EdFileRelationService;
import jakarta.annotation.Resource;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import javax.annotation.Resource;
@RestController
@RequestMapping("/data/ed/relation")
public class EdFileRelationController {
public class SysEdFileRelationController {
@Resource
EdFileRelationServiceImpl edFileRelationService;
EdFileRelationService edFileRelationService;
@Resource
EdFileInfoService edFileInfoService;
/**
* 创建文件关系
@ -27,26 +32,27 @@ public class EdFileRelationController {
* @return
*/
@RequestMapping(value = "/create", method = RequestMethod.POST)
@UserOperation(value = "创建了文件关系", modelName = UserOperationModuleEnum.SYS_PRJ_DATABASE)
public ElectromagneticResult<?> createRelation(@RequestBody EdFileRelation relation) {
try {
Boolean res = edFileRelationService.createRelation(relation);
return ElectromagneticResultUtil.success(res);
} catch (BizException e) {
return ElectromagneticResultUtil.fail("500", e.getMessage());
}
return ElectromagneticResultUtil.success(edFileRelationService.createRelation(relation));
}
/**
* 创建文件关系
* 更新文件关系
*
* @param updateRelation
* @return
*/
@RequestMapping(value = "/update", method = RequestMethod.POST)
@UserOperation(value = "更新了文件关系", modelName = UserOperationModuleEnum.SYS_PRJ_DATABASE)
public ElectromagneticResult<?> updateRelation(@RequestBody UpdateRelationDTO updateRelation) {
LambdaUpdateWrapper<EdFileRelation> wrapper = new LambdaUpdateWrapper<>();
wrapper.eq(EdFileRelation::getId, updateRelation.getRelationId()).set(EdFileRelation::getRelationship, updateRelation.getRelationship());
return ElectromagneticResultUtil.success(edFileRelationService.update(wrapper));
boolean isUpdated = edFileRelationService.update(new EdFileRelation(), wrapper);
if (isUpdated) {
UserThreadLocal.setSuccessInfo("", updateRelation.getRelationId(), "更新了文件关系");
}
return ElectromagneticResultUtil.success(isUpdated);
}
/**
@ -56,6 +62,7 @@ public class EdFileRelationController {
* @return
*/
@RequestMapping(value = "/cancel/{relationId}", method = RequestMethod.GET)
@UserOperation(value = "取消了文件关系", modelName = UserOperationModuleEnum.SYS_PRJ_DATABASE)
public ElectromagneticResult<?> cancelRelation(@PathVariable("relationId") String relationId) {
return ElectromagneticResultUtil.success(edFileRelationService.cancelRelation(relationId));
}
@ -64,6 +71,7 @@ public class EdFileRelationController {
* 展示文件关系
*/
@RequestMapping(value = "listRelations/{id}", method = RequestMethod.GET)
@UserOperation(value = "查看了文件关系", modelName = UserOperationModuleEnum.SYS_PRJ_DATABASE)
public ElectromagneticResult<?> listRelations(@PathVariable("id") String id) {
return ElectromagneticResultUtil.success(edFileRelationService.listRelations(id));
}
@ -72,6 +80,7 @@ public class EdFileRelationController {
* 检验文件名是否唯一
*/
@RequestMapping(value = "/checkFileNameExist", method = RequestMethod.POST)
@UserOperation(value = "校验文件名唯一性", modelName = UserOperationModuleEnum.SYS_PRJ_DATABASE)
public ElectromagneticResult<?> checkFileNameExist(@RequestBody CheckNameUniqueRequest checkNameUniqueRequest) {
return ElectromagneticResultUtil.success(edFileRelationService.checkNameExist(checkNameUniqueRequest));
}
@ -80,10 +89,11 @@ public class EdFileRelationController {
* 本地上传并建立关系
*/
@RequestMapping(value = "/upload", method = RequestMethod.POST)
@UserOperation(value = "上传了文件并创建了文件关系", modelName = UserOperationModuleEnum.SYS_PRJ_DATABASE)
public ElectromagneticResult<?> uploadRelation(@RequestParam("parentId") String parentId,
@RequestParam("file") MultipartFile file,
@RequestParam("description") String description,
@RequestParam("id") String id) {
return ElectromagneticResultUtil.success(edFileRelationService.uploadFileAndRelation(parentId, id, file, description));
return ElectromagneticResultUtil.success(edFileInfoService.uploadFileAndRelation(parentId, id, file, description, DataOwnEnum.SYS_FILE.code));
}
}

View File

@ -1,83 +1,99 @@
package com.electromagnetic.industry.software.manage.controller;
import com.electromagnetic.industry.software.common.annotations.UserOperation;
import com.electromagnetic.industry.software.common.enums.DataOwnEnum;
import com.electromagnetic.industry.software.common.enums.PrjQuerySource;
import com.electromagnetic.industry.software.common.enums.UserOperationModuleEnum;
import com.electromagnetic.industry.software.common.resp.ElectromagneticResult;
import com.electromagnetic.industry.software.common.util.ElectromagneticResultUtil;
import com.electromagnetic.industry.software.manage.pojo.req.FolderResortDTO;
import com.electromagnetic.industry.software.manage.pojo.req.QueryPublishStatus;
import com.electromagnetic.industry.software.manage.service.EdPrjService;
import com.electromagnetic.industry.software.manage.service.PermissionService;
import jakarta.annotation.Resource;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource;
import java.util.List;
@RestController
@RequestMapping("/data/ed/prj")
public class ProjectController {
public class SysProjectController {
@Resource
private EdPrjService edPrjService;
@Resource
private PermissionService permissionService;
@UserOperation(value = "创建层级", modelName = UserOperationModuleEnum.SYS_PRJ_SETTING)
@RequestMapping("create")
public ElectromagneticResult<?> create(@RequestParam String prjName) {
return edPrjService.createNewPrj(prjName);
return edPrjService.createNewPrj(prjName, DataOwnEnum.SYS_PRJ.code);
}
@UserOperation(value = "删除层级", modelName = UserOperationModuleEnum.SYS_PRJ_SETTING)
@RequestMapping("delete")
public ElectromagneticResult<?> delete(@RequestParam String prjId) {
return edPrjService.delete(prjId);
return edPrjService.delete(prjId, DataOwnEnum.SYS_PRJ.code);
}
@UserOperation(value = "修改层级名", modelName = UserOperationModuleEnum.SYS_PRJ_SETTING)
@RequestMapping("modify")
public ElectromagneticResult<?> modifyPrjName(@RequestParam String newPrjName, @RequestParam String prjId) {
return edPrjService.modifyPrjName(prjId, newPrjName);
return edPrjService.modifyPrjName(prjId, newPrjName, DataOwnEnum.SYS_PRJ.code);
}
@UserOperation(value = "查询所有层级", modelName = UserOperationModuleEnum.SYS_PRJ_SETTING)
@RequestMapping("queryAll")
public ElectromagneticResult<?> queryAll() {
return edPrjService.queryAllPrjInfo();
return edPrjService.queryAllPrjInfo(PrjQuerySource.SYS_PRJ.value);
}
@UserOperation(value = "添加子集", modelName = UserOperationModuleEnum.SYS_PRJ_SETTING)
@RequestMapping("addFolder")
public ElectromagneticResult<?> addFolder(@RequestParam String folderName, @RequestParam String parentId) {
return edPrjService.addFolder(parentId, folderName);
return edPrjService.addFolder(parentId, folderName, DataOwnEnum.SYS_PRJ.code);
}
@UserOperation(value = "修改子集名称", modelName = UserOperationModuleEnum.SYS_PRJ_SETTING)
@RequestMapping("modifyFolder")
public ElectromagneticResult<?> modifyFolder(@RequestParam String newFolderName, @RequestParam String id) {
return edPrjService.modifyFolder(id, newFolderName);
return edPrjService.modifyFolder(id, newFolderName, DataOwnEnum.SYS_PRJ.code);
}
@UserOperation(value = "废除子集", modelName = UserOperationModuleEnum.SYS_PRJ_SETTING)
@RequestMapping("deleteFolder")
public ElectromagneticResult<?> deleteFolder(@RequestParam String id) {
return edPrjService.deleteFolder(id);
return edPrjService.deleteFolder(id, DataOwnEnum.SYS_PRJ.code);
}
@UserOperation(value = "更改层级顺序", modelName = UserOperationModuleEnum.SYS_PRJ_SETTING)
@RequestMapping("folderResort")
public ElectromagneticResult<?> folderResort(@RequestBody List<FolderResortDTO> folderResortDTOList) {
return edPrjService.folderResort(folderResortDTOList);
}
@UserOperation(value = "发布层级", modelName = UserOperationModuleEnum.SYS_PRJ_SETTING)
@RequestMapping("publish")
public ElectromagneticResult<?> publish(@RequestParam String prjId) {
ElectromagneticResult<?> result = edPrjService.publish(prjId);
edPrjService.publish(prjId, DataOwnEnum.SYS_PRJ.code);
// 更新项目权限
permissionService.syncPermissions(prjId);
return result;
return ElectromagneticResultUtil.success(true);
}
@UserOperation(value = "引用层级", modelName = UserOperationModuleEnum.SYS_PRJ_SETTING)
@RequestMapping("follow")
public ElectromagneticResult<?> follow(@RequestParam String sourceId, @RequestParam String targetId) {
return edPrjService.follow(sourceId, targetId);
return edPrjService.follow(sourceId, targetId, DataOwnEnum.SYS_PRJ.code);
}
@UserOperation(value = "查询层级发布状态", modelName = UserOperationModuleEnum.SYS_PRJ_SETTING)
@RequestMapping("publishStatus")
public ElectromagneticResult<?> publishStatus(@RequestBody QueryPublishStatus queryPublishStatus) {
return edPrjService.publishStatus(queryPublishStatus);
return edPrjService.publishStatus(queryPublishStatus, DataOwnEnum.SYS_PRJ.code);
}
}

View File

@ -1,97 +1,98 @@
package com.electromagnetic.industry.software.manage.controller;
import com.electromagnetic.industry.software.common.annotations.RequiredRole;
import com.electromagnetic.industry.software.common.annotations.UserOperation;
import com.electromagnetic.industry.software.common.enums.AdminTypeEnum;
import com.electromagnetic.industry.software.common.enums.PublishEnum;
import com.electromagnetic.industry.software.common.enums.UserOperationModuleEnum;
import com.electromagnetic.industry.software.common.resp.ElectromagneticResult;
import com.electromagnetic.industry.software.common.util.ElectromagneticResultUtil;
import com.electromagnetic.industry.software.common.util.UserThreadLocal;
import com.electromagnetic.industry.software.manage.pojo.req.*;
import com.electromagnetic.industry.software.manage.service.UserService;
import io.swagger.annotations.ApiOperation;
import jakarta.annotation.Resource;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import java.util.List;
@RequestMapping("/data/ed/user")
@RestController
@RequestMapping("/data/ed/user")
public class UserController {
@Resource
private UserService userService;
@ApiOperation(value = "登录", notes = "")
@PostMapping("/login")
@UserOperation(value = "登陆", modelName = UserOperationModuleEnum.USER)
public ElectromagneticResult<?> login(@RequestBody UserLoginRequest loginRequest) {
return userService.login(loginRequest);
}
@ApiOperation(value = "新增用户信息", notes = "")
@RequiredRole(AdminTypeEnum.SYSTEM)
@PostMapping("/createUser")
@UserOperation(value = "新增用户信息", modelName = UserOperationModuleEnum.USER)
public ElectromagneticResult<?> createUser(@RequestBody UserRequest userRequest) {
return userService.createUser(userRequest);
}
@ApiOperation(value = "编辑用户信息", notes = "")
@RequiredRole(AdminTypeEnum.SYSTEM)
@PutMapping("/updateUser")
@UserOperation(value = "编辑用户信息", modelName = UserOperationModuleEnum.USER)
public ElectromagneticResult<?> updateUser(@RequestBody UserModiRequest userModiRequest) {
return userService.modifyUser(userModiRequest);
}
@ApiOperation(value = "发布用户信息", notes = "")
@RequiredRole(AdminTypeEnum.SYSTEM)
@RequestMapping(value = "/publish", method = RequestMethod.POST)
@UserOperation(value = "发布用户信息", modelName = UserOperationModuleEnum.USER)
public ElectromagneticResult<?> publishUser(@RequestBody UserPublishRequest userPublishRequest) {
return userService.publishUser(userPublishRequest);
}
@ApiOperation(value = "获取单条用户信息", notes = "")
@RequiredRole(AdminTypeEnum.SYSTEM)
@RequestMapping(value = "/getInfo", method = RequestMethod.GET)
@UserOperation(value = "获取某一用户信息", modelName = UserOperationModuleEnum.USER)
public ElectromagneticResult<?> getSingleUser(GetSingleUserRequest getSingleUserRequest) {
return userService.getSingleUser(getSingleUserRequest);
}
@ApiOperation(value = "查询用户信息", notes = "")
@RequiredRole(AdminTypeEnum.SYSTEM)
@UserOperation(value = "查询用户信息", modelName = UserOperationModuleEnum.USER)
@RequestMapping(value = "/list", method = RequestMethod.POST)
public ElectromagneticResult<?> searchUser(@RequestBody SearchUserRequest searchUserRequest) {
return userService.searchUser(searchUserRequest);
}
@ApiOperation(value = "校验工号唯一性", notes = "")
@RequestMapping(value = "/validateWorkNumber", method = RequestMethod.POST)
@UserOperation(value = "校验工号唯一性", modelName = UserOperationModuleEnum.USER)
public ElectromagneticResult<?> validateWorkNum(@RequestBody UserWorkNumRequest userWorkNumRequest) {
return userService.validateWorkNum(userWorkNumRequest);
}
@ApiOperation(value = "删除用户信息", notes = "")
@RequiredRole(AdminTypeEnum.SYSTEM)
@PostMapping(value = "/deleteUser")
@UserOperation(value = "删除用户信息", modelName = UserOperationModuleEnum.USER)
public ElectromagneticResult<?> deleteUser(@RequestBody UserDeleteRequest userDeleteRequest) {
return userService.deleteUser(userDeleteRequest);
}
@ApiOperation(value = "登出", notes = "")
@RequestMapping(value = "/logout", method = RequestMethod.POST)
@UserOperation(value = "登出", modelName = UserOperationModuleEnum.USER)
public ElectromagneticResult<?> logout(@RequestHeader("Authorization") String token) {
return userService.logout(token);
}
@ApiOperation(value = "人员绑定界面查询用户", notes = "")
@RequiredRole(AdminTypeEnum.SECURITY)
@RequestMapping(value = "/bindRole/list", method = RequestMethod.POST)
@UserOperation(value = "查询用户信息", modelName = UserOperationModuleEnum.USER)
public ElectromagneticResult<?> getPublishedUsers(@RequestBody SearchUserRequest searchUserRequest) {
searchUserRequest.setIsPublished(PublishEnum.PUBLISHED.getCode().toString());
return userService.searchUser(searchUserRequest);
}
@ApiOperation(value = "人员绑定", notes = "")
@RequiredRole(AdminTypeEnum.SECURITY)
@RequestMapping(value = "/bindRoles", method = RequestMethod.POST)
@UserOperation(value = "绑定人员与角色", modelName = UserOperationModuleEnum.USER)
public ElectromagneticResult<?> bindRoles(@RequestBody List<UserBindRoleDTO> list) {
if (userService.bindRoles(list)) {
return ElectromagneticResultUtil.success(true);
@ -100,21 +101,36 @@ public class UserController {
}
}
@ApiOperation(value = "密码重置", notes = "")
// @RequiredRole(AdminTypeEnum.SYSTEM)
@PutMapping("/changePassword")
@UserOperation(value = "修改用户密码", modelName = UserOperationModuleEnum.USER)
public ElectromagneticResult<?> changePassword(@RequestBody ChangePasswordRequest request) {
return userService.changePassword(request.getUserId(), request.getNewPassword());
}
@RequiredRole(AdminTypeEnum.SECURITY)
@GetMapping(value = "/resetPassword/{userId}")
@UserOperation(value = "重置密码", modelName = UserOperationModuleEnum.USER)
public ElectromagneticResult<?> resetPassword(@PathVariable("userId") String userId) {
return ElectromagneticResultUtil.success(userService.resetPassword(userId));
}
@ApiOperation(value = "获取当前用户管理员类型")
@GetMapping(value = "/getAdminType")
@UserOperation(value = "获取当前用户的管理员类型", modelName = UserOperationModuleEnum.USER)
public ElectromagneticResult<?> getAdminType() {
String adminType = UserThreadLocal.getAdminType();
if (adminType == null || adminType.isEmpty()) {
return ElectromagneticResultUtil.fail("500","当前用户未登录");
UserThreadLocal.setSuccessInfo("", "", "查询当前用户的管理员类型失败,当前用户未登录");
return ElectromagneticResultUtil.fail("500", "当前用户未登录");
} else {
UserThreadLocal.setSuccessInfo("", "", "查询当前用户的管理员类型成功");
return ElectromagneticResultUtil.success(adminType);
}
}
@PostMapping("/validateOldPassword")
@UserOperation(value = "校验原始密码", modelName = UserOperationModuleEnum.USER)
public ElectromagneticResult<?> validateOldPassword(@RequestBody ValidateOldPasswordRequest request) {
return userService.validateOldPassword(request.getUserId(), request.getOldPassword());
}
}

View File

@ -0,0 +1,179 @@
package com.electromagnetic.industry.software.manage.controller;
import com.electromagnetic.industry.software.common.annotations.UserOperation;
import com.electromagnetic.industry.software.common.enums.DataOwnEnum;
import com.electromagnetic.industry.software.common.enums.PrjQuerySource;
import com.electromagnetic.industry.software.common.enums.UserOperationModuleEnum;
import com.electromagnetic.industry.software.common.resp.ElectromagneticResult;
import com.electromagnetic.industry.software.common.util.ElectromagneticResultUtil;
import com.electromagnetic.industry.software.common.util.UserThreadLocal;
import com.electromagnetic.industry.software.manage.pojo.req.CreateFolderDTO;
import com.electromagnetic.industry.software.manage.pojo.req.FileChunkDTO;
import com.electromagnetic.industry.software.manage.pojo.req.FileInfoQueryDTO;
import com.electromagnetic.industry.software.manage.pojo.req.UpdateFileInfoDTO;
import com.electromagnetic.industry.software.manage.service.EdFileInfoService;
import jakarta.annotation.Resource;
import jakarta.servlet.http.HttpServletResponse;
import org.springframework.core.io.InputStreamResource;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import java.io.IOException;
@RestController
@RequestMapping("/data/ed/user/file")
public class UserEdFileInfoController {
@Resource
private EdFileInfoService edFileInfoService;
@UserOperation(value = "查看工程树", modelName = UserOperationModuleEnum.USER_PRJ)
@RequestMapping("tree")
public ElectromagneticResult<?> tree() {
return edFileInfoService.tree(PrjQuerySource.USER_DB.value);
}
@UserOperation(value = "创建文件夹", modelName = UserOperationModuleEnum.USER_PRJ)
@RequestMapping("createFolder")
public ElectromagneticResult<?> createFolder(@RequestBody CreateFolderDTO createFolderDTO) {
return edFileInfoService.createFolder(createFolderDTO, DataOwnEnum.USER_FILE.code);
}
@UserOperation(value = "作废", modelName = UserOperationModuleEnum.USER_PRJ)
@RequestMapping("delete")
public ElectromagneticResult<?> delete(@RequestParam String id) {
return edFileInfoService.delete(id, DataOwnEnum.USER_FILE.code);
}
@UserOperation(value = "查询文件", modelName = UserOperationModuleEnum.USER_PRJ)
@RequestMapping("info")
public ElectromagneticResult<?> info(@RequestBody FileInfoQueryDTO fileInfoQueryDTO) {
return edFileInfoService.queryEdFileInfo(fileInfoQueryDTO, DataOwnEnum.USER_FILE.code);
}
@UserOperation(value = "上传文件", modelName = UserOperationModuleEnum.USER_PRJ)
@RequestMapping("upload")
public ElectromagneticResult<?> upload(@RequestParam("parentId") String parentId,
@RequestParam("file") MultipartFile file,
@RequestParam("strategy") Integer strategy) {
return edFileInfoService.upload(parentId, file, strategy, DataOwnEnum.USER_FILE.code);
}
@UserOperation(value = "下载文件", modelName = UserOperationModuleEnum.USER_PRJ)
@RequestMapping("download")
public ResponseEntity<InputStreamResource> download(@RequestParam String id, HttpServletResponse response) {
return edFileInfoService.download(id, response, DataOwnEnum.USER_FILE.code);
}
@UserOperation(value = "导出数据库", modelName = UserOperationModuleEnum.USER_PRJ)
@RequestMapping("batchExport")
public ResponseEntity<InputStreamResource> batchExport(@RequestParam String fileIds, HttpServletResponse response) throws IOException {
return edFileInfoService.batchExport(fileIds, response, DataOwnEnum.USER_FILE.code);
}
@UserOperation(value = "批量上传数据库", modelName = UserOperationModuleEnum.USER_PRJ)
@RequestMapping(value = "/mergeChunks", method = RequestMethod.GET)
public ElectromagneticResult<?> mergeChunks(@RequestParam String identifier,
@RequestParam String fileName,
@RequestParam Integer totalChunks) {
return edFileInfoService.mergeChunks(identifier, fileName, totalChunks, DataOwnEnum.USER_FILE.code);
}
@UserOperation(value = "批量上传数据库", modelName = UserOperationModuleEnum.USER_PRJ)
@RequestMapping(value = "/batchImport", method = RequestMethod.POST)
public ElectromagneticResult<?> batchImport(FileChunkDTO fileChunkDTO) {
return edFileInfoService.batchImport(fileChunkDTO, DataOwnEnum.USER_FILE.code);
}
@UserOperation(value = "批量上传数据库")
@RequestMapping(value = "/batchImport", method = RequestMethod.GET)
public ElectromagneticResult<?> checkChunkExist(FileChunkDTO fileChunkDTO) {
return edFileInfoService.checkChunkExist(fileChunkDTO, DataOwnEnum.USER_FILE.code);
}
@UserOperation(value = "更新文件信息", modelName = UserOperationModuleEnum.USER_PRJ)
@RequestMapping("updateFileInfo")
public ElectromagneticResult<?> updateFileInfo(@RequestBody UpdateFileInfoDTO updateFileInfoDTO) {
return edFileInfoService.updateFileInfo(updateFileInfoDTO, DataOwnEnum.USER_FILE.code);
}
@UserOperation(value = "移动文件", modelName = UserOperationModuleEnum.USER_PRJ)
@RequestMapping("moveFile")
public ElectromagneticResult<?> moveFile(@RequestParam("id") String id,
@RequestParam("targetFolderId") String targetFolderId,
@RequestParam("strategy") Integer strategy) {
return edFileInfoService.moveFile(id, targetFolderId, strategy, DataOwnEnum.USER_FILE.code);
}
@UserOperation(value = "复制文件", modelName = UserOperationModuleEnum.USER_PRJ)
@RequestMapping("copyFile")
public ElectromagneticResult<?> copyFile(@RequestParam("id") String id,
@RequestParam("targetFolderId") String targetFolderId,
@RequestParam("strategy") Integer strategy) {
return edFileInfoService.copyFile(id, targetFolderId, strategy, DataOwnEnum.USER_FILE.code);
}
@UserOperation(value = "查看文件历史版本信息", modelName = UserOperationModuleEnum.USER_PRJ)
@RequestMapping("versionView")
public ElectromagneticResult<?> versionView(@RequestParam String fileId) {
return edFileInfoService.versionView(fileId);
}
@UserOperation(value = "回退版本", modelName = UserOperationModuleEnum.USER_PRJ)
@RequestMapping("versionBack")
public ElectromagneticResult<?> versionBack(@RequestParam String fileId, @RequestParam int targetVersion) {
return edFileInfoService.versionBack(fileId, targetVersion);
}
@UserOperation(value = "查询发布管理", modelName = UserOperationModuleEnum.USER_PRJ)
@RequestMapping(value = "/uploadRecord", method = RequestMethod.GET)
public ElectromagneticResult<?> uploadRecord(@RequestParam int pageNum, @RequestParam int pageSize) {
return edFileInfoService.uploadRecord(pageNum, pageSize, DataOwnEnum.USER_FILE.code);
}
@UserOperation(value = "查询文件详细信息", modelName = UserOperationModuleEnum.USER_PRJ)
@RequestMapping(value = "/fileDetail", method = RequestMethod.GET)
public ElectromagneticResult<?> detail(@RequestParam String id) {
return edFileInfoService.detail(id);
}
@UserOperation(value = "查询子文件集", modelName = UserOperationModuleEnum.USER_PRJ)
@RequestMapping(value = "/queryChildFolder", method = RequestMethod.GET)
public ElectromagneticResult<?> queryChildFolder(@RequestParam String parentId) {
return edFileInfoService.queryChildFolder(parentId, DataOwnEnum.USER_FILE.code);
}
@UserOperation(value = "预览文件", modelName = UserOperationModuleEnum.USER_PRJ)
@RequestMapping(value = "preview", method = RequestMethod.GET)
public ResponseEntity<InputStreamResource> preview(@RequestParam String id, HttpServletResponse response) {
return edFileInfoService.preview(id, response, DataOwnEnum.USER_FILE.code);
}
/**
* 添加进收藏夹
*
* @param id 文件id
* @return
*/
@GetMapping("/collection")
@UserOperation(value = "收藏文件", modelName = UserOperationModuleEnum.USER_PRJ)
public ElectromagneticResult<?> addFavorite(@RequestParam String id) {
String userId = UserThreadLocal.getUserId();
return ElectromagneticResultUtil.success(edFileInfoService.addFavorite(userId, id));
}
/**
* 从收藏夹移除
*
* @param id 文件id
* @return
*/
@GetMapping("/removeCollection")
@UserOperation(value = "从收藏夹移除文件", modelName = UserOperationModuleEnum.USER_PRJ)
public ElectromagneticResult<?> removeFavorite(@RequestParam String id) {
String userId = UserThreadLocal.getUserId();
return ElectromagneticResultUtil.success(edFileInfoService.removeFavorite(userId, id));
}
}

View File

@ -0,0 +1,99 @@
package com.electromagnetic.industry.software.manage.controller;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.electromagnetic.industry.software.common.annotations.UserOperation;
import com.electromagnetic.industry.software.common.enums.DataOwnEnum;
import com.electromagnetic.industry.software.common.enums.UserOperationModuleEnum;
import com.electromagnetic.industry.software.common.resp.ElectromagneticResult;
import com.electromagnetic.industry.software.common.util.ElectromagneticResultUtil;
import com.electromagnetic.industry.software.common.util.UserThreadLocal;
import com.electromagnetic.industry.software.manage.pojo.models.EdFileRelation;
import com.electromagnetic.industry.software.manage.pojo.req.CheckNameUniqueRequest;
import com.electromagnetic.industry.software.manage.pojo.req.UpdateRelationDTO;
import com.electromagnetic.industry.software.manage.service.EdFileInfoService;
import com.electromagnetic.industry.software.manage.service.EdFileRelationService;
import jakarta.annotation.Resource;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
@RestController
@RequestMapping("/data/ed/user/relation")
public class UserEdFileRelationController {
@Resource
EdFileRelationService edFileRelationService;
@Resource
EdFileInfoService edFileInfoService;
/**
* 创建文件关系
*
* @param relation
* @return
*/
@RequestMapping(value = "/create", method = RequestMethod.POST)
@UserOperation(value = "创建文件关系", modelName = UserOperationModuleEnum.SYS_PRJ_DATABASE)
public ElectromagneticResult<?> createRelation(@RequestBody EdFileRelation relation) {
return ElectromagneticResultUtil.success(edFileRelationService.createRelation(relation));
}
/**
* 更新文件关系
*
* @param updateRelation
* @return
*/
@RequestMapping(value = "/update", method = RequestMethod.POST)
@UserOperation(value = "更新文件关系", modelName = UserOperationModuleEnum.SYS_PRJ_DATABASE)
public ElectromagneticResult<?> updateRelation(@RequestBody UpdateRelationDTO updateRelation) {
LambdaUpdateWrapper<EdFileRelation> wrapper = new LambdaUpdateWrapper<>();
wrapper.eq(EdFileRelation::getId, updateRelation.getRelationId()).set(EdFileRelation::getRelationship, updateRelation.getRelationship());
boolean isUpdated = edFileRelationService.update(wrapper);
if (isUpdated) {
UserThreadLocal.setSuccessInfo("", updateRelation.getRelationId(), "更新了文件关系");
}
return ElectromagneticResultUtil.success(isUpdated);
}
/**
* 取消文件关系
*
* @param relationId 关系主键id
* @return
*/
@RequestMapping(value = "/cancel/{relationId}", method = RequestMethod.GET)
@UserOperation(value = "取消文件关系", modelName = UserOperationModuleEnum.SYS_PRJ_DATABASE)
public ElectromagneticResult<?> cancelRelation(@PathVariable("relationId") String relationId) {
return ElectromagneticResultUtil.success(edFileRelationService.cancelRelation(relationId));
}
/**
* 展示文件关系
*/
@RequestMapping(value = "listRelations/{id}", method = RequestMethod.GET)
@UserOperation(value = "查看文件关系", modelName = UserOperationModuleEnum.SYS_PRJ_DATABASE)
public ElectromagneticResult<?> listRelations(@PathVariable("id") String id) {
return ElectromagneticResultUtil.success(edFileRelationService.listRelations(id));
}
/**
* 检验文件名是否唯一
*/
@RequestMapping(value = "/checkFileNameExist", method = RequestMethod.POST)
@UserOperation(value = "校验文件名唯一性", modelName = UserOperationModuleEnum.SYS_PRJ_DATABASE)
public ElectromagneticResult<?> checkFileNameExist(@RequestBody CheckNameUniqueRequest checkNameUniqueRequest) {
return ElectromagneticResultUtil.success(edFileRelationService.checkNameExist(checkNameUniqueRequest));
}
/**
* 本地上传并建立关系
*/
@RequestMapping(value = "/upload", method = RequestMethod.POST)
@UserOperation(value = "上传了文件并创建文件关系", modelName = UserOperationModuleEnum.SYS_PRJ_DATABASE)
public ElectromagneticResult<?> uploadRelation(@RequestParam("parentId") String parentId,
@RequestParam("file") MultipartFile file,
@RequestParam("description") String description,
@RequestParam("id") String id) {
return ElectromagneticResultUtil.success(edFileInfoService.uploadFileAndRelation(parentId, id, file, description, DataOwnEnum.USER_FILE.code));
}
}

View File

@ -0,0 +1,30 @@
package com.electromagnetic.industry.software.manage.controller;
import com.electromagnetic.industry.software.common.annotations.UserOperation;
import com.electromagnetic.industry.software.common.enums.UserOperationModuleEnum;
import com.electromagnetic.industry.software.common.resp.ElectromagneticResult;
import com.electromagnetic.industry.software.common.util.ElectromagneticResultUtil;
import com.electromagnetic.industry.software.common.util.UserThreadLocal;
import com.electromagnetic.industry.software.manage.pojo.req.TagCreateDTO;
import com.electromagnetic.industry.software.manage.service.FileTagRelationService;
import jakarta.annotation.Resource;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
@RequestMapping("/data/ed/user/tag")
public class UserEdFileTagController {
@Resource
private FileTagRelationService fileTagRelationService;
// 批量添加标签到文件
@PostMapping("/addTagsToFile")
@UserOperation(value = "批量添加了标签到文件", modelName = UserOperationModuleEnum.TAG)
public ElectromagneticResult<?> addTagsToFile(@RequestBody TagCreateDTO dto) {
String createdBy = UserThreadLocal.getUserId();
return ElectromagneticResultUtil.success(fileTagRelationService.addTagsToFile(dto.getFileId(), dto.getTagIds(), createdBy));
}
}

View File

@ -0,0 +1,91 @@
package com.electromagnetic.industry.software.manage.controller;
import com.electromagnetic.industry.software.common.annotations.UserOperation;
import com.electromagnetic.industry.software.common.enums.DataOwnEnum;
import com.electromagnetic.industry.software.common.enums.PrjQuerySource;
import com.electromagnetic.industry.software.common.enums.UserOperationModuleEnum;
import com.electromagnetic.industry.software.common.resp.ElectromagneticResult;
import com.electromagnetic.industry.software.manage.pojo.req.FolderResortDTO;
import com.electromagnetic.industry.software.manage.pojo.req.QueryPublishStatus;
import com.electromagnetic.industry.software.manage.service.EdPrjService;
import jakarta.annotation.Resource;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import java.util.List;
@RestController
@RequestMapping("/data/ed/user/prj")
public class UserPrjController {
@Resource
private EdPrjService edPrjService;
@UserOperation(value = "创建层级", modelName = UserOperationModuleEnum.USER_PRJ)
@RequestMapping("create")
public ElectromagneticResult<?> create(@RequestParam String prjName) {
return edPrjService.createNewPrj(prjName, DataOwnEnum.USER_PRJ.code);
}
@UserOperation(value = "删除层级", modelName = UserOperationModuleEnum.USER_PRJ)
@RequestMapping("delete")
public ElectromagneticResult<?> delete(@RequestParam String prjId) {
return edPrjService.delete(prjId, DataOwnEnum.USER_PRJ.code);
}
@UserOperation(value = "修改层级名", modelName = UserOperationModuleEnum.USER_PRJ)
@RequestMapping("modify")
public ElectromagneticResult<?> modifyPrjName(@RequestParam String newPrjName, @RequestParam String prjId) {
return edPrjService.modifyPrjName(prjId, newPrjName, DataOwnEnum.USER_PRJ.code);
}
@UserOperation(value = "查询所有层级", modelName = UserOperationModuleEnum.USER_PRJ)
@RequestMapping("queryAll")
public ElectromagneticResult<?> queryAll() {
return edPrjService.queryAllPrjInfo(PrjQuerySource.USER_PRJ.value);
}
@UserOperation(value = "添加子集", modelName = UserOperationModuleEnum.USER_PRJ)
@RequestMapping("addFolder")
public ElectromagneticResult<?> addFolder(@RequestParam String folderName, @RequestParam String parentId) {
return edPrjService.addFolder(parentId, folderName, DataOwnEnum.USER_PRJ.code);
}
@UserOperation(value = "修改子集名称", modelName = UserOperationModuleEnum.USER_PRJ)
@RequestMapping("modifyFolder")
public ElectromagneticResult<?> modifyFolder(@RequestParam String newFolderName, @RequestParam String id) {
return edPrjService.modifyFolder(id, newFolderName, DataOwnEnum.USER_PRJ.code);
}
@UserOperation(value = "废除子集", modelName = UserOperationModuleEnum.USER_PRJ)
@RequestMapping("deleteFolder")
public ElectromagneticResult<?> deleteFolder(@RequestParam String id) {
return edPrjService.deleteFolder(id, DataOwnEnum.USER_PRJ.code);
}
@UserOperation(value = "更改层级顺序", modelName = UserOperationModuleEnum.USER_PRJ)
@RequestMapping("folderResort")
public ElectromagneticResult<?> folderResort(@RequestBody List<FolderResortDTO> folderResortDTOList) {
return edPrjService.folderResort(folderResortDTOList);
}
@UserOperation(value = "发布层级", modelName = UserOperationModuleEnum.USER_PRJ)
@RequestMapping("publish")
public ElectromagneticResult<?> publish(@RequestParam String prjId) {
return edPrjService.publish(prjId, DataOwnEnum.USER_PRJ.code);
}
@UserOperation(value = "引用层级", modelName = UserOperationModuleEnum.USER_PRJ)
@RequestMapping("follow")
public ElectromagneticResult<?> follow(@RequestParam String sourceId, @RequestParam String targetId) {
return edPrjService.follow(sourceId, targetId, DataOwnEnum.USER_PRJ.code);
}
@UserOperation(value = "查询层级发布状态", modelName = UserOperationModuleEnum.USER_PRJ)
@RequestMapping("publishStatus")
public ElectromagneticResult<?> publishStatus(@RequestBody QueryPublishStatus queryPublishStatus) {
return edPrjService.publishStatus(queryPublishStatus, DataOwnEnum.USER_PRJ.code);
}
}

View File

@ -0,0 +1,9 @@
package com.electromagnetic.industry.software.manage.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.electromagnetic.industry.software.manage.pojo.models.AiFileUploadRecord;
import org.apache.ibatis.annotations.Mapper;
@Mapper
public interface AiFileUploadRecordMapper extends BaseMapper<AiFileUploadRecord> {
}

View File

@ -0,0 +1,9 @@
package com.electromagnetic.industry.software.manage.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.electromagnetic.industry.software.manage.pojo.models.AiQuestionRecord;
import org.apache.ibatis.annotations.Mapper;
@Mapper
public interface AiQuestionRecordMapper extends BaseMapper<AiQuestionRecord> {
}

View File

@ -0,0 +1,10 @@
package com.electromagnetic.industry.software.manage.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.electromagnetic.industry.software.manage.pojo.models.EdFileFavorite;
import org.apache.ibatis.annotations.Mapper;
@Mapper
public interface EdFileFavoriteMapper extends BaseMapper<EdFileFavorite> {
}

View File

@ -1,12 +1,48 @@
package com.electromagnetic.industry.software.manage.mapper;
import cn.hutool.core.util.StrUtil;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.electromagnetic.industry.software.manage.pojo.models.EdFileInfo;
import com.electromagnetic.industry.software.manage.pojo.other.FileInfoVO;
import com.electromagnetic.industry.software.manage.pojo.req.FileInfoQueryDTO;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;
import java.util.List;
@Mapper
public interface EdFileInfoMapper extends BaseMapper<EdFileInfo> {
default EdFileInfo selectById(String id) {
return this.selectOne(Wrappers.lambdaQuery(EdFileInfo.class)
.select(EdFileInfo.class, file -> !StrUtil.equals(file.getColumn(), "file_content"))
.eq(EdFileInfo::getId, id));
}
default EdFileInfo selectById1(String id) {
return this.selectOne(Wrappers.lambdaQuery(EdFileInfo.class)
.eq(EdFileInfo::getId, id));
}
@Select("select max(id) from ed_file_info where length(id) = 6")
String maxPrjId();
/**
* 收藏页 数据查询
*
* @param page
* @param ids
* @param queryDTO
* @return
*/
IPage<FileInfoVO> queryFileList(Page<FileInfoVO> page,
@Param("ids") List<String> ids,
@Param("pars") FileInfoQueryDTO queryDTO,
@Param("saveStatus") int saveStatus,
@Param("effectFlag") int effectFlag);
}

View File

@ -0,0 +1,12 @@
package com.electromagnetic.industry.software.manage.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.electromagnetic.industry.software.manage.pojo.models.EdTagLibrary;
import org.apache.ibatis.annotations.Mapper;
@Mapper
public interface EdTagLibraryMapper extends BaseMapper<EdTagLibrary> {
// @Select("SELECT MAX(order_by) FROM ed_tag_library WHERE type = #{type} and parent_id = #{parentId}")
// Integer selectMaxOrder(@Param("type") int type, @Param("parentId") String parentId);
}

View File

@ -0,0 +1,9 @@
package com.electromagnetic.industry.software.manage.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.electromagnetic.industry.software.manage.pojo.models.FileBackupLog;
import org.apache.ibatis.annotations.Mapper;
@Mapper
public interface FileBackupLogMapper extends BaseMapper<FileBackupLog> {
}

View File

@ -0,0 +1,10 @@
package com.electromagnetic.industry.software.manage.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.electromagnetic.industry.software.manage.pojo.models.FileFormat;
import org.apache.ibatis.annotations.Mapper;
@Mapper
public interface FileFormatMapper extends BaseMapper<FileFormat> {
}

View File

@ -0,0 +1,9 @@
package com.electromagnetic.industry.software.manage.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.electromagnetic.industry.software.manage.pojo.models.FileTagRelation;
import org.apache.ibatis.annotations.Mapper;
@Mapper
public interface FileTagRelationMapper extends BaseMapper<FileTagRelation> {
}

View File

@ -16,7 +16,7 @@ public interface RoleMapper extends BaseMapper<Role> {
@Select("<script>" +
"SELECT " +
" r.role_id AS roleId, " +
" r.id AS roleId, " +
" r.role_name AS roleName, " +
" r.role_desc AS roleDesc, " +
" GROUP_CONCAT(DISTINCT f.file_name) AS dataScope, " +
@ -28,20 +28,20 @@ public interface RoleMapper extends BaseMapper<Role> {
"FROM " +
" ed_role r " +
"LEFT JOIN " +
" ed_role_permission rp ON r.role_id = rp.role_id " +
" ed_role_permission rp ON r.id = rp.role_id " +
"LEFT JOIN " +
" ed_file_info f ON rp.file_id = f.id " +
"LEFT JOIN" +
" ed_user_role ur ON r.role_id = ur.role_id " +
" ed_user_role ur ON r.id = ur.role_id " +
"LEFT JOIN" +
" ed_users u ON ur.user_id = u.user_id " +
" ed_users u ON ur.user_id = u.id " +
"WHERE " +
" 1=1 " +
"<if test=\"ew != null and ew.sqlSegment != null and ew.sqlSegment != ''\">" +
" AND ${ew.sqlSegment} " +
"</if>" +
"GROUP BY " +
" r.role_id" +
" r.id" +
"</script>")
Page<RoleDTO> getPageRoleDTO(Page<RoleDTO> page, @Param(Constants.WRAPPER) QueryWrapper<Role> queryWrapper);
}

View File

@ -13,6 +13,7 @@ public interface TokenMapper extends BaseMapper<Token> {
* @param token
* @return
*/
@Override
int insert(Token token);
/**

View File

@ -0,0 +1,9 @@
package com.electromagnetic.industry.software.manage.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.electromagnetic.industry.software.manage.pojo.models.UserAccessLog;
import org.apache.ibatis.annotations.Mapper;
@Mapper
public interface UserAccessLogMapper extends BaseMapper<UserAccessLog> {
}

View File

@ -1,49 +1,16 @@
package com.electromagnetic.industry.software.manage.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.electromagnetic.industry.software.manage.pojo.models.User;
import com.electromagnetic.industry.software.manage.pojo.other.PublishParam;
import com.electromagnetic.industry.software.manage.pojo.other.SearchKeyWords;
import com.electromagnetic.industry.software.manage.pojo.other.UserDeleteKeyWords;
import org.apache.ibatis.annotations.Mapper;
import java.util.List;
@Mapper
public interface UserMapper {
public interface UserMapper extends BaseMapper<User> {
/**
* 插入
*
* @param user
* @return
*/
int insert(User user);
/**
* 编辑
*
* @param user
* @return
*/
int modify(User user);
/**
* 发布
*
* @param publishParam
* @return
*/
int publish(PublishParam publishParam);
/**
* 通过工号查询用户
*
* @param workNumber
* @return
*/
User selectUserByWorkNumber(String workNumber);
/**
/*
* 通过用户编码查询用户
*
* @param userId
@ -67,14 +34,6 @@ public interface UserMapper {
*/
int getTotalCount(SearchKeyWords searchKeywords);
/**
* 通过用户ID删除用户
*
* @param userDeleteKeyWords
* @return
*/
int deleteUser(UserDeleteKeyWords userDeleteKeyWords);
/**
* 查找用户角色名称
*

View File

@ -0,0 +1,30 @@
package com.electromagnetic.industry.software.manage.pojo.models;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
@EqualsAndHashCode(callSuper = true)
@TableName(value = "ai_file_upload_record")
@Data
@Accessors(chain = true)
public class AiFileUploadRecord extends BaseModel {
@TableField(value = "id")
private String id;
@TableField(value = "file_name")
private String fileName;
@TableField(value = "file_md5")
private String fileMd5;
@TableField(value = "vector_id")
private String vectorId;
@TableField(value = "file_size")
private long fileSize;
}

View File

@ -0,0 +1,20 @@
package com.electromagnetic.industry.software.manage.pojo.models;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
@EqualsAndHashCode(callSuper = true)
@TableName(value = "ai_question_record")
@Data
@Accessors(chain = true)
public class AiQuestionRecord extends BaseModel {
private String id;
@TableField(value = "question")
private String question;
}

View File

@ -1,5 +1,6 @@
package com.electromagnetic.industry.software.manage.pojo.models;
import com.baomidou.mybatisplus.annotation.FieldFill;
import com.baomidou.mybatisplus.annotation.TableField;
import lombok.Data;
import lombok.experimental.Accessors;
@ -12,24 +13,30 @@ public class BaseModel {
/**
* 创建时间
*/
@TableField(value = "created_time")
@TableField(value = "created_time", fill = FieldFill.INSERT)
private Date createdTime;
/**
* 创建人
*/
@TableField(value = "created_by")
@TableField(value = "created_by", fill = FieldFill.INSERT)
private String createdBy;
/**
* 最后更新时间
*/
@TableField(value = "updated_time")
@TableField(value = "updated_time", fill = FieldFill.INSERT_UPDATE)
private Date updatedTime;
/**
* 最后更新人
*/
@TableField(value = "updated_by")
@TableField(value = "updated_by", fill = FieldFill.INSERT_UPDATE)
private String updatedBy;
/**
* 是否有效 0-无效 1-有效
*/
@TableField(value = "effect_flag")
private Integer effectFlag;
}

View File

@ -0,0 +1,28 @@
package com.electromagnetic.industry.software.manage.pojo.models;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.electromagnetic.industry.software.common.util.IdWorker;
import lombok.Data;
import lombok.EqualsAndHashCode;
@EqualsAndHashCode(callSuper = true)
@Data
@TableName("ed_file_favorite")
public class EdFileFavorite extends BaseModel {
@TableId(type = IdType.ASSIGN_UUID)
private String id;
@TableField("user_id")
private String userId;
@TableField("file_id")
private String fileId;
public void newInit() {
this.setId(IdWorker.getSnowFlakeIdString());
}
}

View File

@ -2,17 +2,13 @@ package com.electromagnetic.industry.software.manage.pojo.models;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import com.electromagnetic.industry.software.common.enums.EffectFlagEnum;
import com.electromagnetic.industry.software.common.util.EleCommonUtil;
import com.electromagnetic.industry.software.common.util.IdWorker;
import com.electromagnetic.industry.software.common.util.UserThreadLocal;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import lombok.experimental.FieldNameConstants;
import java.util.Date;
@EqualsAndHashCode(callSuper = true)
@TableName("ed_file_info")
@Accessors(chain = true)
@ -85,11 +81,7 @@ public class EdFileInfo extends BaseModel {
*/
@TableField(value = "pre_version")
private Integer preVersion;
/**
* 是否有效 0-无效 1-有效
*/
@TableField(value = "effect_flag")
private Integer effectFlag;
/**
* 保存状态0-上传中 1-上传成功 2-上传失败
*/
@ -111,12 +103,14 @@ public class EdFileInfo extends BaseModel {
@TableField(value = "file_code")
private String fileCode;
/**
* 是否是管理员定义的系统层级目录
* 数据的归属0-上传的文件或者新建的文件夹 1-系统管理员创建的层级 2-用户自定义的层级
*/
@TableField(value = "prj_dir")
private Boolean prjDir;
@TableField(value = "data_own")
private Integer dataOwn;
/** 当一个文件作废时其所有的历史文件也会跟着作废此时该文件及其历史文件的all_deleted=true**/
/**
* 当一个文件作废时其所有的历史文件也会跟着作废此时该文件及其历史文件的all_deleted=true
**/
@TableField(value = "all_deleted")
private Boolean allDeleted;
@ -127,17 +121,10 @@ public class EdFileInfo extends BaseModel {
private Boolean permanentDeleted;
public void newInit() {
String userId = UserThreadLocal.getUserId();
String newFileDbId = IdWorker.getSnowFlakeIdString();
String fileTime = EleCommonUtil.getNowTimeStr();
Date now = new Date();
this.setUpdatedBy(userId);
this.setId(newFileDbId);
this.setUpdatedTime(now);
this.setCreatedTime(now);
this.setFileTime(fileTime);
this.setCreatedBy(userId);
this.setFileId(newFileDbId);
this.setEffectFlag(EffectFlagEnum.EFFECT.code);
}
}

View File

@ -1,15 +1,15 @@
package com.electromagnetic.industry.software.manage.pojo.models;
import com.baomidou.mybatisplus.annotation.FieldFill;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import com.electromagnetic.industry.software.common.util.IdWorker;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.util.Date;
@EqualsAndHashCode(callSuper = true)
@Data
@TableName("ed_file_relation")
public class EdFileRelation {
public class EdFileRelation extends BaseModel {
private String id;
@ -30,21 +30,7 @@ public class EdFileRelation {
*/
private String relationship;
/**
* 创建者 用户id
*/
@TableField(value = "created_by")
private String createdBy;
@TableField(value = "created_at", fill = FieldFill.INSERT)
private Date createdAt;
/**
* 更新者 用户id
*/
@TableField(value = "updated_by")
private String updatedBy;
@TableField(value = "updated_at", fill = FieldFill.UPDATE)
private Date updatedAt;
public void newInit() {
this.setId(IdWorker.getSnowFlakeIdString());
}
}

View File

@ -0,0 +1,26 @@
package com.electromagnetic.industry.software.manage.pojo.models;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.electromagnetic.industry.software.common.enums.PublishEnum;
import com.electromagnetic.industry.software.common.util.IdWorker;
import lombok.Data;
@Data
@TableName("ed_tag_library")
public class EdTagLibrary extends BaseModel {
@TableId
private String tagId; // 主键 ID
private String parentId; // ID"" 代表是标签组
private Integer type; // 0: 标签组, 1: 标签
private String tagName; // 标签库或标签名称
private Integer orderBy; // 排序字段
private Integer isPublished; // 是否已发布0: 未发布, 1: 已发布
public void newInit() {
this.setTagId(IdWorker.getSnowFlakeIdString());
this.setIsPublished(PublishEnum.UNPUBLISHED.getCode()); //默认未发布
}
}

View File

@ -0,0 +1,39 @@
package com.electromagnetic.industry.software.manage.pojo.models;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import java.util.Date;
@EqualsAndHashCode(callSuper = true)
@TableName("file_backup_log")
@Data
@Accessors(chain = true)
public class FileBackupLog extends BaseModel {
private String id;
private String fileId;
private String fileCode;
private boolean backupSuccess;
private Long startTime;
private Long endTime;
private Long duration;
private String failInfoDetail;
private long fileTime;
private String fileName;
private Integer source;
private Date fileCreateTime;
}

View File

@ -0,0 +1,17 @@
package com.electromagnetic.industry.software.manage.pojo.models;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import lombok.EqualsAndHashCode;
@EqualsAndHashCode(callSuper = true)
@Data
@TableName("ed_file_format")
public class FileFormat extends BaseModel {
private String id;
private String suffixNo;
private String suffixName;
}

View File

@ -0,0 +1,20 @@
package com.electromagnetic.industry.software.manage.pojo.models;
import com.baomidou.mybatisplus.annotation.TableName;
import com.electromagnetic.industry.software.common.util.IdWorker;
import lombok.Data;
import lombok.EqualsAndHashCode;
@EqualsAndHashCode(callSuper = true)
@Data
@TableName("file_tag_relations")
public class FileTagRelation extends BaseModel {
private String id;
private String fileId;
private String tagId;
public void newInit() {
this.setId(IdWorker.getSnowFlakeIdString());
}
}

View File

@ -1,22 +1,17 @@
package com.electromagnetic.industry.software.manage.pojo.models;
import com.baomidou.mybatisplus.annotation.*;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import com.electromagnetic.industry.software.common.util.IdWorker;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.util.Date;
@EqualsAndHashCode(callSuper = true)
@Data
@TableName("ed_role") // 指定表名
public class Role {
public class Role extends BaseModel {
@TableId(type = IdType.AUTO)
private Long id;
/**
* 角色编码
*/
@TableField(value = "role_id")
private String roleId;
private String id;
/**
* 角色名称
@ -30,38 +25,8 @@ public class Role {
@TableField(value = "role_desc")
private String roleDesc;
/**
* 创建者用户编码
*/
private String creator;
/**
* 创建者姓名
*/
@TableField(value = "creator_name")
private String creatorName;
/**
* 创建时间
*/
@TableField(value = "gmt_create", fill = FieldFill.INSERT)
private Date gmtCreate;
/**
* 编辑者用户编码
*/
private String modifier;
/**
* 编辑者姓名
*/
@TableField(value = "modifier_name")
private String modifierName;
/**
* 编辑时间
*/
@TableField(value = "gmt_modified", fill = FieldFill.INSERT_UPDATE)
private Date gmtModified;
public void newInit() {
this.setId(IdWorker.getSnowFlakeIdString());
}
}

View File

@ -2,19 +2,19 @@ package com.electromagnetic.industry.software.manage.pojo.models;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.AllArgsConstructor;
import com.electromagnetic.industry.software.common.util.IdWorker;
import lombok.Data;
import lombok.EqualsAndHashCode;
@EqualsAndHashCode(callSuper = true)
@Data
@TableName("ed_role_permission")
@AllArgsConstructor
public class RolePermission {
public class RolePermission extends BaseModel {
/**
* 主键id
*/
@TableField(value = "id")
private Long id;
private String id;
/**
* 角色编码
@ -34,10 +34,7 @@ public class RolePermission {
@TableField(value = "permission_code")
private String permissionCode;
public RolePermission(String roleId, String fileId, String permissionCode) {
this.roleId = roleId;
this.fileId = fileId;
this.permissionCode = permissionCode;
public void newInit() {
this.setId(IdWorker.getSnowFlakeIdString());
}
}

View File

@ -1,23 +1,24 @@
package com.electromagnetic.industry.software.manage.pojo.models;
import cn.hutool.core.util.RandomUtil;
import com.baomidou.mybatisplus.annotation.TableName;
import com.electromagnetic.industry.software.common.cons.UserConstants;
import com.electromagnetic.industry.software.common.util.IdWorker;
import com.electromagnetic.industry.software.common.util.SignUtils;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.util.Date;
@EqualsAndHashCode(callSuper = true)
@TableName("ed_users")
@Data
public class User {
public class User extends BaseModel {
/**
* 主键ID
*/
private Long id;
/**
* 用户编码
*/
private String userId;
private String id;
/**
* 用户姓名
@ -89,34 +90,11 @@ public class User {
*/
private String salt;
/**
* 创建人
*/
private String creator;
/**
* 创建人姓名
*/
private String creatorName;
/**
* 创建时间
*/
private Date gmtCreate;
/**
* 更新人
*/
private String modifier;
/**
* 更新人姓名
*/
private String modifierName;
/**
* 更新时间
*/
private Date gmtModified;
/**
* 是否有效:0-无效 1-有效
*/
private Integer effectFlag;
public void newInit() {
this.setId(IdWorker.getSnowFlakeIdString());
this.setSalt(RandomUtil.randomString(16));
this.setUserPwd(SignUtils.MD5(UserConstants.DEFAULT_PASSWORD + this.getSalt()));
this.setIsPublished(UserConstants.DEFAULT_PUBLISH_STATUS);
this.setIsActivated(UserConstants.DEFAULT_ACTIVE_STATUS);
}
}

View File

@ -0,0 +1,66 @@
package com.electromagnetic.industry.software.manage.pojo.models;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import java.util.Date;
@EqualsAndHashCode(callSuper = true)
@Data
@Accessors(chain = true)
@TableName("user_access_log")
public class UserAccessLog extends BaseModel {
private String id;
// 操作人的id
private String userId;
// 请求开始时间
private Date accessStartTime;
// 请求结束时间
private Date accessEndTime;
// 请求耗时
private Long accessDuration;
// 进行的操作
private String action;
// 请求的url
private String requestUrl;
// 请求的ip
private String requestIp;
// 请求的参数
private String reqArgs;
// 请求远端地址
private String remoteAddr;
// 请求是否成功
private Boolean accessSuccess;
// 操作详情
private String operationMsg;
// 异常信息 供开发者异常查看
private String exceptionDetail;
// 操作对象
private String operationModule;
// 数据id
private String dataId;
// 父id最权限需要
private String parentId;
// 请求返回的结果
private String response;
}

View File

@ -2,11 +2,17 @@ package com.electromagnetic.industry.software.manage.pojo.models;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import com.electromagnetic.industry.software.common.util.IdWorker;
import lombok.Data;
@Data
@TableName("ed_user_role")
public class UserRole {
public class UserRole extends BaseModel {
/**
* 主键ID
*/
private String id;
/**
* 用户编码
@ -19,4 +25,8 @@ public class UserRole {
*/
@TableField(value = "role_id")
private String roleId;
public void newInit() {
this.setId(IdWorker.getSnowFlakeIdString());
}
}

View File

@ -1,9 +1,12 @@
package com.electromagnetic.industry.software.manage.pojo.other;
import com.electromagnetic.industry.software.manage.pojo.resp.FileTagInfo;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;
import java.util.Date;
import java.util.List;
import java.util.Map;
@Data
public class FileInfoVO {
@ -22,6 +25,8 @@ public class FileInfoVO {
private String parentId;
private String categoryId;
private Integer dataType;
private Integer dataStatus;
@ -41,4 +46,17 @@ public class FileInfoVO {
private String fileCode;
private String createdBy;
private List<FileTagInfo> labels;
private String dataOwn;
// 是否是收藏数据1是0否
private Integer isFavorite;
// 是否是个人数据1是0否
private Integer isPersonal;
// 文件权限
private Map<String, Boolean> permissions;
}

View File

@ -13,13 +13,4 @@ public class PublishParam {
*/
private List<String> userIds;
/**
* 编辑者
*/
private String modifier;
/**
* 编辑者姓名
*/
private String modifierName;
}

View File

@ -1,6 +1,7 @@
package com.electromagnetic.industry.software.manage.pojo.other;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.Data;
import java.util.Date;
@ -11,15 +12,11 @@ public class SingleUserResponse {
private static final long serialVersionUID = -7475233976453471059L;
/**
* 主键ID
*/
private Long id;
/**
* 用户编码
*/
private String userId;
@JsonProperty("userId")
private String id;
/**
* 用户姓名
@ -51,11 +48,6 @@ public class SingleUserResponse {
*/
private String userAccount;
/**
* 登录密码
*/
// private String userPwd;
/**
* 角色名称拼接字符串
*/
@ -98,36 +90,23 @@ public class SingleUserResponse {
*/
private Integer isDefaultPwd;
/**
*
*/
// private String salt;
private Date createdTime;
/**
* 创建人
*/
private String creator;
private String createdBy;
/**
* 创建人姓名
* 最后更新时间
*/
private String creatorName;
private Date updatedTime;
/**
* 创建时间
* 最后更新人
*/
private Date gmtCreate;
/**
* 更新人
*/
private String modifier;
/**
* 更新人姓名
*/
private String modifierName;
/**
* 更新时间
*/
private Date gmtModified;
private String updatedBy;
/**
* 是否有效:0-无效 1-有效

View File

@ -0,0 +1,17 @@
package com.electromagnetic.industry.software.manage.pojo.req;
import lombok.Data;
@Data
public class AccessLogQueryDTO {
private String dataId;
private int pageNum;
private int pageSize;
private String keyWord;
private String operationModuleKey;
}

View File

@ -0,0 +1,25 @@
package com.electromagnetic.industry.software.manage.pojo.req;
public class ChangePasswordRequest {
private String userId;
private String newPassword;
// Getters and Setters
public String getUserId() {
return userId;
}
public void setUserId(String userId) {
this.userId = userId;
}
public String getNewPassword() {
return newPassword;
}
public void setNewPassword(String newPassword) {
this.newPassword = newPassword;
}
}

View File

@ -0,0 +1,8 @@
package com.electromagnetic.industry.software.manage.pojo.req;
import lombok.Data;
@Data
public class ChatQueryDTO {
private String question;
}

View File

@ -2,6 +2,8 @@ package com.electromagnetic.industry.software.manage.pojo.req;
import lombok.Data;
import java.util.List;
@Data
public class FileInfoQueryDTO {
@ -54,7 +56,7 @@ public class FileInfoQueryDTO {
/**
* 版本号0-升序1-降序
*/
private Integer fileVersion;
private Integer versionSort;
/**
* 文件大小0-升序1-降序
@ -65,4 +67,9 @@ public class FileInfoQueryDTO {
* 状态0-未发布 1-已发布 2-占用
*/
private Integer dataStatus;
/**
* 标签查询ID列表
*/
private List<String> tagIds;
}

View File

@ -14,11 +14,7 @@ public class PublishedFileDTO {
private Integer effectFlag;
private Boolean prjDir;
public void newInit() {
this.setPrjDir(Boolean.TRUE);
this.setDataStatus(PublishEnum.PUBLISHED.getCode());
this.setEffectFlag(EffectFlagEnum.EFFECT.code);
}

View File

@ -0,0 +1,11 @@
package com.electromagnetic.industry.software.manage.pojo.req;
import lombok.Data;
@Data
public class QueryDTO {
private String msg;
private String userId;
}

View File

@ -0,0 +1,50 @@
package com.electromagnetic.industry.software.manage.pojo.req;
import lombok.Data;
@Data
public class RecycleFileQueryDTO {
private String keyword;
private int pageNum;
private int pageSize;
/**
* 文件名排序 0-升序1-降序
*/
private Integer fileNameSort;
/**
* 文件类型 0-升序1-降序
*/
private Integer fileTypeSort;
/**
* 文件类型过滤
*/
private String fileType;
/**
* 上传时间0-升序1-降序
*/
private Integer createdTime;
/**
* 修改时间0-升序1-降序
*/
private Integer updatedTime;
/**
* 版本号0-升序1-降序
*/
private Integer versionSort;
/**
* 文件大小0-升序1-降序
*/
private Integer fileSizeSort;
}

View File

@ -37,4 +37,6 @@ public class RolePermissionDTO {
* 子目录
*/
private List<RolePermissionDTO> children;
private int dataOwnCode;
}

View File

@ -0,0 +1,13 @@
package com.electromagnetic.industry.software.manage.pojo.req;
import lombok.Data;
import java.util.List;
@Data
public class TagCreateDTO {
private String fileId;
private List<String> tagIds;
}

View File

@ -0,0 +1,10 @@
package com.electromagnetic.industry.software.manage.pojo.req;
import lombok.Data;
@Data
public class UploadDTO {
private String content;
}

View File

@ -1,6 +1,7 @@
package com.electromagnetic.industry.software.manage.pojo.req;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.Data;
import java.io.Serializable;
@ -14,7 +15,8 @@ public class UserModiRequest extends BaseRequest implements Serializable {
/**
* 用户Id
*/
private String userId;
@JsonProperty("userId")
private String id;
/**
* 用户姓名

View File

@ -0,0 +1,23 @@
package com.electromagnetic.industry.software.manage.pojo.req;
public class ValidateOldPasswordRequest {
private String userId;
private String oldPassword;
// Getters and Setters
public String getUserId() {
return userId;
}
public void setUserId(String userId) {
this.userId = userId;
}
public String getOldPassword() {
return oldPassword;
}
public void setOldPassword(String oldPassword) {
this.oldPassword = oldPassword;
}
}

View File

@ -0,0 +1,42 @@
package com.electromagnetic.industry.software.manage.pojo.resp;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;
import java.util.Date;
@Data
public class AccessLogQueryVO {
private String id;
private String userId;
private String userName;
// 进行的操作
private String action;
// 操作对象
private String operationModule;
// 操作详情
private String operationMsg;
// 操作时间
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private Date createTime;
// 请求远端地址
private String remoteAddr;
// 请求是否成功
private Boolean accessSuccess;
// 请求耗时
private Long accessDuration;
// 请求的ip
private String requestIp;
}

View File

@ -0,0 +1,32 @@
package com.electromagnetic.industry.software.manage.pojo.resp;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;
import java.util.Date;
@Data
public class FileBackLogVO {
private String id;
private String fileId;
private String fileCode;
private String fileName;
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private Date backStartTime;
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private Date backEndTime;
private boolean backupSuccess;
private Integer dataOwn;
private String dataOwner;
private String filePath;
}

View File

@ -0,0 +1,12 @@
package com.electromagnetic.industry.software.manage.pojo.resp;
import lombok.Data;
@Data
public class FileFormatVO {
private String id;
private String suffixNo;
private String suffixName;
}

View File

@ -1,19 +0,0 @@
package com.electromagnetic.industry.software.manage.pojo.resp;
import com.electromagnetic.industry.software.manage.pojo.other.FileInfoVO;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.ArrayList;
import java.util.List;
@Data
@AllArgsConstructor
@NoArgsConstructor
public class FileInfoQueryPageVO {
private long total;
private List<FileInfoVO> records = new ArrayList<>();
}

View File

@ -0,0 +1,41 @@
package com.electromagnetic.industry.software.manage.pojo.resp;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;
import java.util.Date;
@Data
public class FileRecycleQueryVO {
private String id;
private String fileId;
private String fileName;
private String fileType;
private String fileVersion;
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private Date updatedTime;
private String fileNote;
private long fileSize;
private String fileSizeShow;
private String updatedBy;
private String userName;
private String dataOwner;
private int dataOwn;
private String filePath;
private String filePrjPath;
}

View File

@ -0,0 +1,12 @@
package com.electromagnetic.industry.software.manage.pojo.resp;
import lombok.Data;
@Data
public class FileTagInfo {
private String tagId;
private String tagName;
}

View File

@ -0,0 +1,11 @@
package com.electromagnetic.industry.software.manage.pojo.resp;
import lombok.Data;
import lombok.experimental.Accessors;
@Data
@Accessors(chain = true)
public class OperationModuleVO {
private String text;
private String value;
}

View File

@ -0,0 +1,19 @@
package com.electromagnetic.industry.software.manage.pojo.resp;
import com.electromagnetic.industry.software.manage.pojo.models.EdTagLibrary;
import lombok.Data;
import java.util.List;
@Data
public class TagListVO {
private String tagId; // 主键 ID
private String parentId; // ID"" 代表是标签组
private Integer type; // 0: 标签组, 1: 标签
private String tagName; // 标签库或标签名称
private Integer orderBy; // 排序字段
private Integer isPublished; // 是否已发布0: 未发布, 1: 已发布
private List<EdTagLibrary> children;
}

View File

@ -0,0 +1,17 @@
package com.electromagnetic.industry.software.manage.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.electromagnetic.industry.software.manage.pojo.models.EdFileFavorite;
public interface EdFileFavoriteService extends IService<EdFileFavorite> {
/**
* 逻辑删除
*
* @param userId
* @param fileId
* @return
*/
public boolean logicRemove(String userId, String fileId);
}

View File

@ -1,17 +1,21 @@
package com.electromagnetic.industry.software.manage.service;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.electromagnetic.industry.software.common.resp.ElectromagneticResult;
import com.electromagnetic.industry.software.manage.pojo.models.EdFileInfo;
import com.electromagnetic.industry.software.manage.pojo.other.FileInfoVO;
import com.electromagnetic.industry.software.manage.pojo.req.CreateFolderDTO;
import com.electromagnetic.industry.software.manage.pojo.req.FileChunkDTO;
import com.electromagnetic.industry.software.manage.pojo.req.FileInfoQueryDTO;
import com.electromagnetic.industry.software.manage.pojo.req.UpdateFileInfoDTO;
import jakarta.servlet.http.HttpServletResponse;
import org.springframework.core.io.InputStreamResource;
import org.springframework.http.ResponseEntity;
import org.springframework.web.multipart.MultipartFile;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.List;
public interface EdFileInfoService {
@ -21,21 +25,21 @@ public interface EdFileInfoService {
* @param fileInfoQueryDTO
* @return
*/
ElectromagneticResult<?> queryEdFileInfo(FileInfoQueryDTO fileInfoQueryDTO);
ElectromagneticResult<?> queryEdFileInfo(FileInfoQueryDTO fileInfoQueryDTO, int dataOwnCode);
/**
* 新建文件夹
*
* @return
*/
ElectromagneticResult<?> createFolder(CreateFolderDTO createFolderDTO);
ElectromagneticResult<?> createFolder(CreateFolderDTO createFolderDTO, int dataOwnCode);
/**
* 项目层级结构查询
*
* @return
*/
ElectromagneticResult<?> tree();
ElectromagneticResult<?> tree(int querySource);
/**
* 删除目录
@ -43,7 +47,7 @@ public interface EdFileInfoService {
* @param id
* @return
*/
ElectromagneticResult<?> delete(String id);
ElectromagneticResult<?> delete(String id, int dataOwnCode);
/**
* 下载文件
@ -51,14 +55,14 @@ public interface EdFileInfoService {
* @param id
* @return
*/
ResponseEntity<InputStreamResource> download(String id, HttpServletResponse response);
ResponseEntity<InputStreamResource> download(String id, HttpServletResponse response, int dataOwnCode);
/**
* 更新文件信息
*
* @param updateFileInfoDTO
*/
ElectromagneticResult<?> updateFileInfo(UpdateFileInfoDTO updateFileInfoDTO);
ElectromagneticResult<?> updateFileInfo(UpdateFileInfoDTO updateFileInfoDTO, int dataOwnCode);
/**
* 版本回退
@ -75,7 +79,7 @@ public interface EdFileInfoService {
* @param fileChunkDTO
* @return
*/
ElectromagneticResult<?> checkChunkExist(FileChunkDTO fileChunkDTO);
ElectromagneticResult<?> checkChunkExist(FileChunkDTO fileChunkDTO, int dataOwnCode);
/**
* 批量导入
@ -83,7 +87,7 @@ public interface EdFileInfoService {
* @param fileChunkDTO
* @return
*/
ElectromagneticResult<?> batchImport(FileChunkDTO fileChunkDTO);
ElectromagneticResult<?> batchImport(FileChunkDTO fileChunkDTO, int dataOwnCode);
/**
* 合并分片
@ -93,7 +97,7 @@ public interface EdFileInfoService {
* @param totalChunks
* @return
*/
ElectromagneticResult<?> mergeChunks(String identifier, String fileName, Integer totalChunks);
ElectromagneticResult<?> mergeChunks(String identifier, String fileName, Integer totalChunks, int dataOwnCode);
/**
* 导出
@ -101,7 +105,7 @@ public interface EdFileInfoService {
* @param dataIdArr
* @return
*/
ResponseEntity<InputStreamResource> batchExport(String dataIdArr, HttpServletResponse response) throws IOException;
ResponseEntity<InputStreamResource> batchExport(String dataIdArr, HttpServletResponse response, int dataOwnCode) throws IOException;
/**
* 文件上传
@ -111,7 +115,7 @@ public interface EdFileInfoService {
* @param strategy
* @return
*/
ElectromagneticResult<?> upload(String parentId, MultipartFile file, Integer strategy);
ElectromagneticResult<?> upload(String parentId, MultipartFile file, Integer strategy, int dataOwnCode);
/**
* 版本查看
@ -128,7 +132,7 @@ public interface EdFileInfoService {
* @param targetFolderId
* @return
*/
ElectromagneticResult<?> moveFile(String id, String targetFolderId, Integer strategy);
ElectromagneticResult<?> moveFile(String id, String targetFolderId, Integer strategy, int dataOwnCode);
/**
* 复制文件
@ -137,14 +141,14 @@ public interface EdFileInfoService {
* @param targetFolderId
* @return
*/
ElectromagneticResult<?> copyFile(String id, String targetFolderId, Integer strategy);
ElectromagneticResult<?> copyFile(String id, String targetFolderId, Integer strategy, int dataOwnCode);
/**
* 发布管理
*
* @return
*/
ElectromagneticResult<?> uploadRecord(int pageNum, int pageSize);
ElectromagneticResult<?> uploadRecord(int pageNum, int pageSize, int dataOwnCode);
/**
* 查询文件详情
@ -157,18 +161,86 @@ public interface EdFileInfoService {
/**
* 获取文件的层级Id
*/
String getCategoryId (String id);
String getCategoryId(String id);
/**
* 根据父id查询其下自定义的文件夹
*
* @param parentId
* @return
*/
ElectromagneticResult<?> queryChildFolder(String parentId);
ElectromagneticResult<?> queryChildFolder(String parentId, int dataOwnCode);
/**
* 文件预览
*
* @param id
* @param response
*/
ResponseEntity<InputStreamResource> preview(String id, HttpServletResponse response, int dataOwnCode);
/**
* 收藏页 数据查询
*
* @param page
* @param ids
* @param queryDTO
* @return
*/
IPage<FileInfoVO> queryFileList(Page<FileInfoVO> page, List<String> ids, FileInfoQueryDTO queryDTO, int saveStatus, int effectFlag);
/**
* 处理重名文件文件名后+_1
*
* @param fileInfo
*/
void resetFileInfoName(EdFileInfo fileInfo);
/**
* 添加收藏
*
* @param userId
* @param fileId
* @return
*/
boolean addFavorite(String userId, String fileId);
/**
* 判断是否已收藏
*
* @param userId
* @param fileId
* @return
*/
boolean isFavorite(String userId, String fileId);
/**
* 移除收藏
*
* @param userId
* @param fileId
* @return
*/
boolean removeFavorite(String userId, String fileId);
/**
* 查询当前用户收藏文件信息
*
* @param userId 用户id
* @param fileInfoQueryDTO 分页信息
* @return
*/
IPage<FileInfoVO> findFavorite(String userId, FileInfoQueryDTO fileInfoQueryDTO);
/**
* 文件上传并建立关系
*
* @param parentId
* @param id 主文件Id
* @param file
* @param desc 关系描述
* @return
*/
ElectromagneticResult<?> uploadFileAndRelation(String parentId, String id, MultipartFile file, String desc, int dataOwnCode);
}

View File

@ -1,12 +1,11 @@
package com.electromagnetic.industry.software.manage.service;
import com.electromagnetic.industry.software.common.resp.ElectromagneticResult;
import com.baomidou.mybatisplus.extension.service.IService;
import com.electromagnetic.industry.software.manage.pojo.models.EdFileRelation;
import com.electromagnetic.industry.software.manage.pojo.req.CheckNameUniqueRequest;
import com.electromagnetic.industry.software.manage.pojo.resp.FileRelationViewVO;
import org.springframework.web.multipart.MultipartFile;
public interface EdFileRelationService {
public interface EdFileRelationService extends IService<EdFileRelation> {
/**
* 创建文件关系
@ -40,13 +39,11 @@ public interface EdFileRelationService {
Boolean checkNameExist(CheckNameUniqueRequest checkNameUniqueRequest);
/**
* 文件上传并建立关系
* 逻辑删除文件关系
*
* @param parentId
* @param id 主文件Id
* @param file
* @param descrption 关系描述
* @param fileId 文件主键id
* @return
*/
ElectromagneticResult<?> uploadFileAndRelation(String parentId, String id, MultipartFile file, String descrption);
boolean logicRemove(String fileId);
}

View File

@ -13,7 +13,7 @@ public interface EdPrjService {
*
* @param prjName 新的工程名
*/
ElectromagneticResult<?> createNewPrj(String prjName);
ElectromagneticResult<?> createNewPrj(String prjName, int dataOwnCode);
/**
* 修改项目名称
@ -22,7 +22,7 @@ public interface EdPrjService {
* @param newPrjName
* @return
*/
ElectromagneticResult<?> modifyPrjName(String prjId, String newPrjName);
ElectromagneticResult<?> modifyPrjName(String prjId, String newPrjName, int dataOwnCode);
/**
* 删除一个项目做逻辑删除
@ -30,7 +30,7 @@ public interface EdPrjService {
* @param prjId
* @return
*/
ElectromagneticResult<?> delete(String prjId);
ElectromagneticResult<?> delete(String prjId, int dataOwnCode);
/**
* 添加子集
@ -39,14 +39,14 @@ public interface EdPrjService {
* @param folderName
* @return
*/
ElectromagneticResult<?> addFolder(String parentId, String folderName);
ElectromagneticResult<?> addFolder(String parentId, String folderName, int dataOwnCode);
/**
* 查询所有项目
*
* @return
*/
ElectromagneticResult<?> queryAllPrjInfo();
ElectromagneticResult<?> queryAllPrjInfo(int dataOwnCode);
/**
* 子集拖拽重排序
@ -62,7 +62,7 @@ public interface EdPrjService {
* @param prjId
* @return
*/
ElectromagneticResult<?> publish(String prjId);
ElectromagneticResult<?> publish(String prjId, int dataOwnCode);
/**
* 删除子集
@ -70,7 +70,7 @@ public interface EdPrjService {
* @param id
* @return
*/
ElectromagneticResult<?> deleteFolder(String id);
ElectromagneticResult<?> deleteFolder(String id, int dataOwnCode);
/**
* 层级沿用
@ -79,7 +79,7 @@ public interface EdPrjService {
* @param targetId
* @return
*/
ElectromagneticResult<?> follow(String sourceId, String targetId);
ElectromagneticResult<?> follow(String sourceId, String targetId, int dataOwnCode);
/**
* 修改子集名称
@ -88,7 +88,7 @@ public interface EdPrjService {
* @param newFolderName
* @return
*/
ElectromagneticResult<?> modifyFolder(String id, String newFolderName);
ElectromagneticResult<?> modifyFolder(String id, String newFolderName, int dataOwnCode);
/**
* 获取项目的发布状态
@ -96,5 +96,5 @@ public interface EdPrjService {
* @param queryPublishStatus
* @return
*/
ElectromagneticResult<?> publishStatus(QueryPublishStatus queryPublishStatus);
ElectromagneticResult<?> publishStatus(QueryPublishStatus queryPublishStatus, int dataOwnCode);
}

View File

@ -0,0 +1,82 @@
package com.electromagnetic.industry.software.manage.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.electromagnetic.industry.software.common.pojo.TreeNode;
import com.electromagnetic.industry.software.manage.pojo.models.EdTagLibrary;
import com.electromagnetic.industry.software.manage.pojo.resp.FileTagInfo;
import com.electromagnetic.industry.software.manage.pojo.resp.TagListVO;
import java.util.List;
public interface EdTagLibraryService extends IService<EdTagLibrary> {
/**
* 新建分组
*
* @param tagName
* @param createdBy
*/
Boolean createTagGroup(String tagName, String createdBy);
/**
* 新建标签
*
* @param parentId
* @param tagName
* @param createdBy
*/
Boolean createTag(String parentId, String tagName, String createdBy);
/**
* 拖拽标签顺序
*
* @param tagId
* @param newOrderBy
*/
Boolean updateTagOrder(String tagId, String newTagId, String newParentId, Integer newOrderBy, String updatedBy);
/**
* 发布标签
*
* @param tagGroupIds
*/
Boolean batchPublishTagGroups(List<String> tagGroupIds);
/**
* 废除标签
*
* @param tagId
* @return
*/
Boolean deleteTagOrGroup(String tagId);
/**
* 标签数据
*
* @return
*/
List<TagListVO> listTagsWithGroups();
/**
* 更新标签信息
*
* @param tagId
* @param tagName
* @return 更新结果
*/
Boolean updateTagInfo(String tagId, String tagName, String updatedBy);
/**
* 构建标签树
*
* @return
*/
List<TreeNode> listTagTree();
/**
* 获取所有标签
*
* @return
*/
List<FileTagInfo> listAllTags();
}

View File

@ -0,0 +1,10 @@
package com.electromagnetic.industry.software.manage.service;
import com.electromagnetic.industry.software.common.resp.ElectromagneticResult;
public interface FileBackLogService {
ElectromagneticResult<?> query(Integer pageNumber, Integer pageSize);
Long restore();
}

View File

@ -0,0 +1,42 @@
package com.electromagnetic.industry.software.manage.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.electromagnetic.industry.software.manage.pojo.models.FileFormat;
import com.electromagnetic.industry.software.manage.pojo.resp.FileFormatVO;
import java.util.List;
public interface FileFormatService extends IService<FileFormat> {
/**
* 创建文件格式
*
* @param suffixName
* @return
*/
boolean addFileFormat(String suffixName);
/**
* 删除文件格式
*
* @param id
* @return
*/
boolean deleteFileFormat(String id);
/**
* 查询文件格式列表
*
* @return
*/
List<FileFormatVO> getList();
/**
* 更新文件格式
*
* @param fileFormat
* @return
*/
boolean updateFileFormat(FileFormat fileFormat);
}

View File

@ -0,0 +1,14 @@
package com.electromagnetic.industry.software.manage.service;
import com.electromagnetic.industry.software.common.resp.ElectromagneticResult;
import com.electromagnetic.industry.software.manage.pojo.req.RecycleFileQueryDTO;
public interface FileRecycleService {
ElectromagneticResult<?> list(RecycleFileQueryDTO queryDTO);
ElectromagneticResult<?> remove(String fileId);
ElectromagneticResult<?> recover(String fileId);
}

Some files were not shown because too many files have changed in this diff Show More