|
|
|
|
<?xml version="1.0" encoding="UTF-8"?>
|
|
|
|
|
<project xmlns="http://maven.apache.org/POM/4.0.0"
|
|
|
|
|
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
|
|
|
|
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
|
|
|
|
|
<modelVersion>4.0.0</modelVersion>
|
|
|
|
|
|
|
|
|
|
<parent>
|
|
|
|
|
<groupId>org.springframework.boot</groupId>
|
|
|
|
|
<artifactId>spring-boot-starter-parent</artifactId>
|
|
|
|
|
<version>3.3.5</version>
|
|
|
|
|
<relativePath/>
|
|
|
|
|
</parent>
|
|
|
|
|
|
|
|
|
|
<groupId>com.crm</groupId>
|
|
|
|
|
<artifactId>crm</artifactId>
|
|
|
|
|
<version>1.0.0-SNAPSHOT</version>
|
|
|
|
|
<packaging>pom</packaging>
|
|
|
|
|
<name>crm</name>
|
|
|
|
|
<description>CRM 系统父工程,统一管理依赖版本与公共配置</description>
|
|
|
|
|
|
|
|
|
|
<modules>
|
|
|
|
|
<module>crm-base</module>
|
|
|
|
|
<module>crm-auth</module>
|
|
|
|
|
<module>crm-file</module>
|
feat(dict): data dictionary module — two-level flat model, CRUD/default/cache/permission/seed (ADR-0015)
- 4 tables (dict_group/dict_item/dict_group_default/dict_ref_count), delete_key soft-delete reuse
- DictGroup/DictItem full CRUD + force-delete + status toggle + enabled-list
- DictReferenceService: increment/decrement/batchApply/isReferenced, same-tx ref_count, no cache
- DictQueryService: Caffeine 10s cache + 2s negative cache for empty results, group.status join
- Default item: INSERT ON DUPLICATE KEY UPDATE, hibernate on group disable, auto-restore
- Permission seeds: 10 perm codes → sys_menu tree, bound to ROLE_ADMIN, no crm-auth import
- Built-in dict initializer: idempotent upsert, builtin=false never touched (US-41), value not overwritten
- 48 tests pass; full project compiles
1 month ago
|
|
|
<module>crm-dict</module>
|
|
|
|
|
<module>crm-rule</module>
|
|
|
|
|
<module>crm-preference</module>
|
|
|
|
|
<module>crm-lead</module>
|
|
|
|
|
<module>crm-opportunity</module>
|
|
|
|
|
<module>crm-customer</module>
|
|
|
|
|
<module>crm-app</module>
|
|
|
|
|
</modules>
|
|
|
|
|
|
|
|
|
|
<properties>
|
|
|
|
|
<java.version>17</java.version>
|
|
|
|
|
<maven.compiler.source>17</maven.compiler.source>
|
|
|
|
|
<maven.compiler.target>17</maven.compiler.target>
|
|
|
|
|
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
|
|
|
|
|
|
|
|
|
|
<!-- 依赖版本统一在父 pom 管理,子模块引用时不允许自行指定版本 -->
|
|
|
|
|
<mybatis-plus.version>3.5.7</mybatis-plus.version>
|
|
|
|
|
<minio.version>8.5.17</minio.version>
|
|
|
|
|
<hutool.version>5.8.32</hutool.version>
|
|
|
|
|
<easyexcel.version>4.0.3</easyexcel.version>
|
|
|
|
|
<commons-io.version>2.16.1</commons-io.version>
|
|
|
|
|
<guava.version>33.2.1-jre</guava.version>
|
|
|
|
|
<knife4j.version>4.5.0</knife4j.version>
|
|
|
|
|
<pdfbox.version>3.0.3</pdfbox.version>
|
|
|
|
|
<mybatis-spring.version>3.0.3</mybatis-spring.version>
|
|
|
|
|
</properties>
|
|
|
|
|
|
|
|
|
|
<dependencyManagement>
|
|
|
|
|
<dependencies>
|
|
|
|
|
<!-- 内部模块 -->
|
|
|
|
|
<dependency>
|
|
|
|
|
<groupId>com.crm</groupId>
|
|
|
|
|
<artifactId>crm-base</artifactId>
|
|
|
|
|
<version>${project.version}</version>
|
|
|
|
|
</dependency>
|
|
|
|
|
<dependency>
|
|
|
|
|
<groupId>com.crm</groupId>
|
|
|
|
|
<artifactId>crm-auth</artifactId>
|
|
|
|
|
<version>${project.version}</version>
|
|
|
|
|
</dependency>
|
|
|
|
|
<dependency>
|
|
|
|
|
<groupId>com.crm</groupId>
|
|
|
|
|
<artifactId>crm-file</artifactId>
|
|
|
|
|
<version>${project.version}</version>
|
|
|
|
|
</dependency>
|
feat(dict): data dictionary module — two-level flat model, CRUD/default/cache/permission/seed (ADR-0015)
- 4 tables (dict_group/dict_item/dict_group_default/dict_ref_count), delete_key soft-delete reuse
- DictGroup/DictItem full CRUD + force-delete + status toggle + enabled-list
- DictReferenceService: increment/decrement/batchApply/isReferenced, same-tx ref_count, no cache
- DictQueryService: Caffeine 10s cache + 2s negative cache for empty results, group.status join
- Default item: INSERT ON DUPLICATE KEY UPDATE, hibernate on group disable, auto-restore
- Permission seeds: 10 perm codes → sys_menu tree, bound to ROLE_ADMIN, no crm-auth import
- Built-in dict initializer: idempotent upsert, builtin=false never touched (US-41), value not overwritten
- 48 tests pass; full project compiles
1 month ago
|
|
|
<dependency>
|
|
|
|
|
<groupId>com.crm</groupId>
|
|
|
|
|
<artifactId>crm-dict</artifactId>
|
|
|
|
|
<version>${project.version}</version>
|
|
|
|
|
</dependency>
|
|
|
|
|
<dependency>
|
|
|
|
|
<groupId>com.crm</groupId>
|
|
|
|
|
<artifactId>crm-rule</artifactId>
|
|
|
|
|
<version>${project.version}</version>
|
|
|
|
|
</dependency>
|
|
|
|
|
<dependency>
|
|
|
|
|
<groupId>com.crm</groupId>
|
|
|
|
|
<artifactId>crm-preference</artifactId>
|
|
|
|
|
<version>${project.version}</version>
|
|
|
|
|
</dependency>
|
|
|
|
|
<dependency>
|
|
|
|
|
<groupId>com.crm</groupId>
|
|
|
|
|
<artifactId>crm-lead</artifactId>
|
|
|
|
|
<version>${project.version}</version>
|
|
|
|
|
</dependency>
|
|
|
|
|
<dependency>
|
|
|
|
|
<groupId>com.crm</groupId>
|
|
|
|
|
<artifactId>crm-opportunity</artifactId>
|
|
|
|
|
<version>${project.version}</version>
|
|
|
|
|
</dependency>
|
|
|
|
|
<dependency>
|
|
|
|
|
<groupId>com.crm</groupId>
|
|
|
|
|
<artifactId>crm-customer</artifactId>
|
|
|
|
|
<version>${project.version}</version>
|
|
|
|
|
</dependency>
|
|
|
|
|
|
|
|
|
|
<dependency>
|
|
|
|
|
<groupId>com.crm</groupId>
|
|
|
|
|
<artifactId>crm-app</artifactId>
|
|
|
|
|
<version>${project.version}</version>
|
|
|
|
|
</dependency>
|
|
|
|
|
<dependency>
|
|
|
|
|
<groupId>com.baomidou</groupId>
|
|
|
|
|
<artifactId>mybatis-plus-spring-boot3-starter</artifactId>
|
|
|
|
|
<version>${mybatis-plus.version}</version>
|
|
|
|
|
</dependency>
|
|
|
|
|
|
|
|
|
|
<!-- 对象存储 -->
|
|
|
|
|
<dependency>
|
|
|
|
|
<groupId>io.minio</groupId>
|
|
|
|
|
<artifactId>minio</artifactId>
|
|
|
|
|
<version>${minio.version}</version>
|
|
|
|
|
</dependency>
|
|
|
|
|
|
|
|
|
|
<!-- 工具 -->
|
|
|
|
|
<dependency>
|
|
|
|
|
<groupId>cn.hutool</groupId>
|
|
|
|
|
<artifactId>hutool-all</artifactId>
|
|
|
|
|
<version>${hutool.version}</version>
|
|
|
|
|
</dependency>
|
|
|
|
|
<dependency>
|
|
|
|
|
<groupId>com.google.guava</groupId>
|
|
|
|
|
<artifactId>guava</artifactId>
|
|
|
|
|
<version>${guava.version}</version>
|
|
|
|
|
</dependency>
|
|
|
|
|
<dependency>
|
|
|
|
|
<groupId>com.alibaba</groupId>
|
|
|
|
|
<artifactId>easyexcel</artifactId>
|
|
|
|
|
<version>${easyexcel.version}</version>
|
|
|
|
|
</dependency>
|
|
|
|
|
<!-- commons-io 钉版本:easyexcel-support 3.3.4 传递的 2.11.0 会胜出(近路径优先),
|
|
|
|
|
缺 UnsynchronizedByteArrayOutputStream(2.12+,Excel 写入炸)与
|
|
|
|
|
FileTimes.isUnixTime(FileTime)(2.16+,commons-compress 1.27.1 读取炸);
|
|
|
|
|
上游口径 = commons-compress 1.27.1 声明的 2.16.1 -->
|
|
|
|
|
<dependency>
|
|
|
|
|
<groupId>commons-io</groupId>
|
|
|
|
|
<artifactId>commons-io</artifactId>
|
|
|
|
|
<version>${commons-io.version}</version>
|
|
|
|
|
</dependency>
|
|
|
|
|
|
|
|
|
|
<!-- 接口文档 -->
|
|
|
|
|
<dependency>
|
|
|
|
|
<groupId>com.github.xiaoymin</groupId>
|
|
|
|
|
<artifactId>knife4j-openapi3-jakarta-spring-boot-starter</artifactId>
|
|
|
|
|
<version>${knife4j.version}</version>
|
|
|
|
|
</dependency>
|
|
|
|
|
|
|
|
|
|
<!-- MyBatis-Spring(crm-dict 测试手工装配用) -->
|
|
|
|
|
<dependency>
|
|
|
|
|
<groupId>org.mybatis</groupId>
|
|
|
|
|
<artifactId>mybatis-spring</artifactId>
|
|
|
|
|
<version>${mybatis-spring.version}</version>
|
|
|
|
|
</dependency>
|
|
|
|
|
|
|
|
|
|
<!-- PDF 渲染(缩略图第一页) -->
|
|
|
|
|
<dependency>
|
|
|
|
|
<groupId>org.apache.pdfbox</groupId>
|
|
|
|
|
<artifactId>pdfbox</artifactId>
|
|
|
|
|
<version>${pdfbox.version}</version>
|
|
|
|
|
</dependency>
|
|
|
|
|
</dependencies>
|
|
|
|
|
</dependencyManagement>
|
|
|
|
|
|
|
|
|
|
<build>
|
|
|
|
|
<pluginManagement>
|
|
|
|
|
<plugins>
|
|
|
|
|
<plugin>
|
|
|
|
|
<groupId>org.springframework.boot</groupId>
|
|
|
|
|
<artifactId>spring-boot-maven-plugin</artifactId>
|
|
|
|
|
<configuration>
|
|
|
|
|
<excludes>
|
|
|
|
|
<exclude>
|
|
|
|
|
<groupId>org.projectlombok</groupId>
|
|
|
|
|
<artifactId>lombok</artifactId>
|
|
|
|
|
</exclude>
|
|
|
|
|
</excludes>
|
|
|
|
|
</configuration>
|
|
|
|
|
</plugin>
|
|
|
|
|
</plugins>
|
|
|
|
|
</pluginManagement>
|
|
|
|
|
</build>
|
|
|
|
|
</project>
|
feat(dict): data dictionary module — two-level flat model, CRUD/default/cache/permission/seed (ADR-0015)
- 4 tables (dict_group/dict_item/dict_group_default/dict_ref_count), delete_key soft-delete reuse
- DictGroup/DictItem full CRUD + force-delete + status toggle + enabled-list
- DictReferenceService: increment/decrement/batchApply/isReferenced, same-tx ref_count, no cache
- DictQueryService: Caffeine 10s cache + 2s negative cache for empty results, group.status join
- Default item: INSERT ON DUPLICATE KEY UPDATE, hibernate on group disable, auto-restore
- Permission seeds: 10 perm codes → sys_menu tree, bound to ROLE_ADMIN, no crm-auth import
- Built-in dict initializer: idempotent upsert, builtin=false never touched (US-41), value not overwritten
- 48 tests pass; full project compiles
1 month ago
|
|
|
|