diff --git a/.gitignore b/.gitignore index 45a53ea..b11fd19 100644 --- a/.gitignore +++ b/.gitignore @@ -82,3 +82,4 @@ Icon Network Trash Folder Temporary Items .apdisk +*.db diff --git a/client/src/main.js b/client/src/main.js index 1da5c96..c640c20 100644 --- a/client/src/main.js +++ b/client/src/main.js @@ -27,6 +27,11 @@ createApp(App) path: 'overview', component: () => import('@/views/management/Overview.vue'), }, + { + name: 'organization', + path: 'organization', + component: () => import('@/views/management/Organization.vue'), + }, { name: 'setting', path: 'setting', diff --git a/client/src/utils.js b/client/src/utils.js index 8aa63bb..4a93dc7 100644 --- a/client/src/utils.js +++ b/client/src/utils.js @@ -1,19 +1,21 @@ const information = { - debug: true, - baseUrl: 'http://localhost' + debug: true, + baseUrl: 'http://localhost:8080', } export function amisRender(target, amisJson) { - let amisJsonObject = amisJson(information) - if (information.debug) { - console.log(amisJsonObject) - } - amisRequire('amis/embed').embed( - target, - amisJsonObject, - information, - { - theme: 'antd' - } - ) + let amisJsonObject = amisJson(information) + if (information.debug) { + console.log(amisJsonObject) + } + amisRequire('amis/embed').embed( + target, + amisJsonObject, + information, + { + theme: 'antd', + enableAMISDebug: + information.debug, + }, + ) } \ No newline at end of file diff --git a/client/src/views/management/Index.vue b/client/src/views/management/Index.vue index 32986a5..0e1a1c3 100644 --- a/client/src/views/management/Index.vue +++ b/client/src/views/management/Index.vue @@ -1,5 +1,8 @@ + + + + \ No newline at end of file diff --git a/src/main/java/com/lanyuanxiaoyao/server/configuration/Constants.java b/src/main/java/com/lanyuanxiaoyao/server/configuration/Constants.java index 2c24ccc..35a35b4 100644 --- a/src/main/java/com/lanyuanxiaoyao/server/configuration/Constants.java +++ b/src/main/java/com/lanyuanxiaoyao/server/configuration/Constants.java @@ -5,5 +5,5 @@ package com.lanyuanxiaoyao.server.configuration; * @version 20250327 */ public interface Constants { - String DATABASE_TABLE_PREFIX = "system_"; + String DATABASE_TABLE_PREFIX = "platform_"; } diff --git a/src/main/java/com/lanyuanxiaoyao/server/configuration/database/SnowflakeId.java b/src/main/java/com/lanyuanxiaoyao/server/configuration/database/SnowflakeId.java index 54f93db..929146b 100644 --- a/src/main/java/com/lanyuanxiaoyao/server/configuration/database/SnowflakeId.java +++ b/src/main/java/com/lanyuanxiaoyao/server/configuration/database/SnowflakeId.java @@ -22,7 +22,6 @@ import static java.lang.annotation.RetentionPolicy.RUNTIME; @Slf4j public class SnowflakeId { @IdGeneratorType(IdGenerator.class) - @ValueGenerationType(generatedBy = IdGenerator.class) @Retention(RUNTIME) @Target({FIELD, METHOD}) public @interface Generator { diff --git a/src/main/java/com/lanyuanxiaoyao/server/entity/Department.java b/src/main/java/com/lanyuanxiaoyao/server/entity/Department.java index d8ccd9d..eaf1e13 100644 --- a/src/main/java/com/lanyuanxiaoyao/server/entity/Department.java +++ b/src/main/java/com/lanyuanxiaoyao/server/entity/Department.java @@ -2,6 +2,7 @@ package com.lanyuanxiaoyao.server.entity; import com.lanyuanxiaoyao.server.configuration.Constants; import com.lanyuanxiaoyao.server.configuration.database.SnowflakeId; +import com.yahoo.elide.annotation.Include; import jakarta.persistence.ConstraintMode; import jakarta.persistence.Entity; import jakarta.persistence.FetchType; @@ -27,19 +28,24 @@ import lombok.ToString; @ToString @Entity @Table(name = Constants.DATABASE_TABLE_PREFIX + "department") +@Include public class Department { @Id @SnowflakeId.Generator private Long departmentId; private String departmentName; - @ManyToOne - @JoinColumn(nullable = false, foreignKey = @ForeignKey(ConstraintMode.NO_CONSTRAINT)) + @ManyToOne(optional = false) + @JoinColumn(foreignKey = @ForeignKey(ConstraintMode.NO_CONSTRAINT)) private Organization organization; + @OneToMany(fetch = FetchType.LAZY, mappedBy = "department") + @ToString.Exclude + private Set users; + @ManyToOne private Department parent; - @OneToMany(fetch = FetchType.LAZY, mappedBy = "departmentParent") + @OneToMany(fetch = FetchType.LAZY, mappedBy = "parent") @ToString.Exclude private Set children; } diff --git a/src/main/java/com/lanyuanxiaoyao/server/entity/Organization.java b/src/main/java/com/lanyuanxiaoyao/server/entity/Organization.java index 000d3e6..c919362 100644 --- a/src/main/java/com/lanyuanxiaoyao/server/entity/Organization.java +++ b/src/main/java/com/lanyuanxiaoyao/server/entity/Organization.java @@ -2,6 +2,7 @@ package com.lanyuanxiaoyao.server.entity; import com.lanyuanxiaoyao.server.configuration.Constants; import com.lanyuanxiaoyao.server.configuration.database.SnowflakeId; +import com.yahoo.elide.annotation.Include; import jakarta.persistence.Entity; import jakarta.persistence.FetchType; import jakarta.persistence.Id; @@ -23,12 +24,17 @@ import lombok.ToString; @ToString @Entity @Table(name = Constants.DATABASE_TABLE_PREFIX + "organization") +@Include public class Organization { @Id @SnowflakeId.Generator private Long organizationId; private String organizationName; + @OneToMany(fetch = FetchType.LAZY, mappedBy = "organization") + @ToString.Exclude + private Set users; + @OneToMany(fetch = FetchType.LAZY, mappedBy = "organization") @ToString.Exclude private Set departments; diff --git a/src/main/java/com/lanyuanxiaoyao/server/entity/User.java b/src/main/java/com/lanyuanxiaoyao/server/entity/User.java index c77fa14..af24799 100644 --- a/src/main/java/com/lanyuanxiaoyao/server/entity/User.java +++ b/src/main/java/com/lanyuanxiaoyao/server/entity/User.java @@ -2,9 +2,15 @@ package com.lanyuanxiaoyao.server.entity; import com.lanyuanxiaoyao.server.configuration.Constants; import com.lanyuanxiaoyao.server.configuration.database.SnowflakeId; +import com.yahoo.elide.annotation.Include; +import jakarta.persistence.ConstraintMode; import jakarta.persistence.Entity; +import jakarta.persistence.ForeignKey; import jakarta.persistence.Id; +import jakarta.persistence.JoinColumn; +import jakarta.persistence.ManyToOne; import jakarta.persistence.Table; +import jakarta.persistence.UniqueConstraint; import lombok.Getter; import lombok.Setter; import lombok.ToString; @@ -20,11 +26,20 @@ import lombok.ToString; @ToString @Entity @Table(name = Constants.DATABASE_TABLE_PREFIX + "user") +@Include public class User { @Id @SnowflakeId.Generator private Long userId; private String userCode; - private String userNickName; + private String userNickname; private String userSecret; + + @ManyToOne + @JoinColumn(foreignKey = @ForeignKey(ConstraintMode.NO_CONSTRAINT)) + private Organization organization; + + @ManyToOne + @JoinColumn(foreignKey = @ForeignKey(ConstraintMode.NO_CONSTRAINT)) + private Department department; } diff --git a/src/test/resources/organization.http b/src/test/resources/organization.http new file mode 100644 index 0000000..563b0ca --- /dev/null +++ b/src/test/resources/organization.http @@ -0,0 +1,10 @@ +### Create +POST http://localhost:8080/jsonapi/organization +Content-Type: application/json + +{ + "type": "organization", + "attributes": { + "organizationName": "苹果公司" + } +} \ No newline at end of file