From 04e4a15136ef0f7739fdb8736395ed706b523ab0 Mon Sep 17 00:00:00 2001 From: bunny <1319900154@qq.com> Date: Sun, 13 Jul 2025 22:07:41 +0800 Subject: [PATCH] =?UTF-8?q?:sparkles:=20=E8=A7=92=E8=89=B2=E5=A2=9E?= =?UTF-8?q?=E5=88=A0=E6=94=B9=E6=9F=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../step2/controller/WebController.java | 5 + .../com/spring/step2/domain/dto/RoleDto.java | 4 + .../step2/domain/entity/PermissionEntity.java | 2 + .../step2/domain/entity/RoleEntity.java | 2 + .../domain/entity/RolePermissionEntity.java | 2 + .../com/spring/step2/domain/vo/RoleVo.java | 5 + .../step-2/src/main/resources/application.yml | 4 +- .../resources/static/src/lib/css/style.css | 63 +++++ .../lib/css/{user/style.css => tablePage.css} | 0 .../static/src/views/role/DialogRole.js | 97 ++++++++ .../main/resources/templates/rolePage.html | 225 ++++++++++++++++++ .../main/resources/templates/userPage.html | 6 +- 12 files changed, 412 insertions(+), 3 deletions(-) create mode 100644 spring-security/step-2/src/main/resources/static/src/lib/css/style.css rename spring-security/step-2/src/main/resources/static/src/lib/css/{user/style.css => tablePage.css} (100%) create mode 100644 spring-security/step-2/src/main/resources/static/src/views/role/DialogRole.js create mode 100644 spring-security/step-2/src/main/resources/templates/rolePage.html diff --git a/spring-security/step-2/src/main/java/com/spring/step2/controller/WebController.java b/spring-security/step-2/src/main/java/com/spring/step2/controller/WebController.java index 2d4d70a..14e323b 100644 --- a/spring-security/step-2/src/main/java/com/spring/step2/controller/WebController.java +++ b/spring-security/step-2/src/main/java/com/spring/step2/controller/WebController.java @@ -20,4 +20,9 @@ public class WebController { public String showUserPage() { return "userPage"; } + + @GetMapping("/role") + public String showRolePage() { + return "rolePage"; + } } diff --git a/spring-security/step-2/src/main/java/com/spring/step2/domain/dto/RoleDto.java b/spring-security/step-2/src/main/java/com/spring/step2/domain/dto/RoleDto.java index c286322..62b2bc5 100644 --- a/spring-security/step-2/src/main/java/com/spring/step2/domain/dto/RoleDto.java +++ b/spring-security/step-2/src/main/java/com/spring/step2/domain/dto/RoleDto.java @@ -1,6 +1,7 @@ package com.spring.step2.domain.dto; import io.swagger.v3.oas.annotations.media.Schema; +import jakarta.validation.constraints.NotBlank; import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Data; @@ -19,12 +20,15 @@ public class RoleDto { private Long id; @Schema(name = "roleName", title = "角色名称") + @NotBlank(message = "角色名称不能为空") private String roleName; @Schema(name = "description", title = "角色描述") + @NotBlank(message = "角色描述不能为空") private String description; @Schema(name = "remark", title = "备注信息") + @NotBlank(message = "备注信息不能为空") private String remark; @Schema(name = "createTime", title = "创建时间") diff --git a/spring-security/step-2/src/main/java/com/spring/step2/domain/entity/PermissionEntity.java b/spring-security/step-2/src/main/java/com/spring/step2/domain/entity/PermissionEntity.java index a008245..0f923c3 100644 --- a/spring-security/step-2/src/main/java/com/spring/step2/domain/entity/PermissionEntity.java +++ b/spring-security/step-2/src/main/java/com/spring/step2/domain/entity/PermissionEntity.java @@ -1,5 +1,6 @@ package com.spring.step2.domain.entity; +import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableName; import io.swagger.v3.oas.annotations.media.Schema; import lombok.Getter; @@ -23,6 +24,7 @@ public class PermissionEntity extends BaseEntity { private String remark; @Schema(name = "isDeleted", title = "是否删除:0-未删除,1-已删除") + @TableField(exist = false) private Boolean isDeleted; } \ No newline at end of file diff --git a/spring-security/step-2/src/main/java/com/spring/step2/domain/entity/RoleEntity.java b/spring-security/step-2/src/main/java/com/spring/step2/domain/entity/RoleEntity.java index c877dca..7b29a0e 100644 --- a/spring-security/step-2/src/main/java/com/spring/step2/domain/entity/RoleEntity.java +++ b/spring-security/step-2/src/main/java/com/spring/step2/domain/entity/RoleEntity.java @@ -1,5 +1,6 @@ package com.spring.step2.domain.entity; +import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableName; import io.swagger.v3.oas.annotations.media.Schema; import lombok.Getter; @@ -23,6 +24,7 @@ public class RoleEntity extends BaseEntity { private String remark; @Schema(name = "isDeleted", title = "是否删除:0-未删除,1-已删除") + @TableField(exist = false) private Boolean isDeleted; } \ No newline at end of file diff --git a/spring-security/step-2/src/main/java/com/spring/step2/domain/entity/RolePermissionEntity.java b/spring-security/step-2/src/main/java/com/spring/step2/domain/entity/RolePermissionEntity.java index 583dcef..43aec32 100644 --- a/spring-security/step-2/src/main/java/com/spring/step2/domain/entity/RolePermissionEntity.java +++ b/spring-security/step-2/src/main/java/com/spring/step2/domain/entity/RolePermissionEntity.java @@ -1,5 +1,6 @@ package com.spring.step2.domain.entity; +import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableName; import io.swagger.v3.oas.annotations.media.Schema; import lombok.Getter; @@ -20,6 +21,7 @@ public class RolePermissionEntity extends BaseEntity { private Long permissionId; @Schema(name = "isDeleted", title = "是否删除:0-未删除,1-已删除") + @TableField(exist = false) private Boolean isDeleted; } \ No newline at end of file diff --git a/spring-security/step-2/src/main/java/com/spring/step2/domain/vo/RoleVo.java b/spring-security/step-2/src/main/java/com/spring/step2/domain/vo/RoleVo.java index dc982de..90effe5 100644 --- a/spring-security/step-2/src/main/java/com/spring/step2/domain/vo/RoleVo.java +++ b/spring-security/step-2/src/main/java/com/spring/step2/domain/vo/RoleVo.java @@ -1,5 +1,8 @@ package com.spring.step2.domain.vo; +import com.fasterxml.jackson.annotation.JsonFormat; +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; import io.swagger.v3.oas.annotations.media.Schema; import lombok.AllArgsConstructor; import lombok.Data; @@ -14,6 +17,8 @@ import java.time.LocalDateTime; public class RoleVo { @Schema(name = "id", title = "主键ID") + @JsonFormat(shape = JsonFormat.Shape.STRING) + @JsonSerialize(using = ToStringSerializer.class) private Long id; @Schema(name = "roleName", title = "角色名称") diff --git a/spring-security/step-2/src/main/resources/application.yml b/spring-security/step-2/src/main/resources/application.yml index 84b18c7..ac05e9f 100644 --- a/spring-security/step-2/src/main/resources/application.yml +++ b/spring-security/step-2/src/main/resources/application.yml @@ -44,5 +44,7 @@ mybatis-plus: logging: level: - com.spring: debug root: info + com.spring: debug + org.springframework.security: debug + diff --git a/spring-security/step-2/src/main/resources/static/src/lib/css/style.css b/spring-security/step-2/src/main/resources/static/src/lib/css/style.css new file mode 100644 index 0000000..aa718ae --- /dev/null +++ b/spring-security/step-2/src/main/resources/static/src/lib/css/style.css @@ -0,0 +1,63 @@ +/* 提高 Antd Message 的 z-index */ +.ant-message { + z-index: 1100 !important; +} + +/* 响应式 OffCanvas 宽度 */ +.offcanvas.offcanvas-start { + width: 50%; +} + +@media (max-width: 991.98px) { + .offcanvas.offcanvas-start { + width: 75%; + } +} + +@media (max-width: 767.98px) { + .offcanvas.offcanvas-start { + width: 100%; + } +} + +/* 添加自定义样式 */ +.database-info-card { + border-left: 4px solid #0d6efd; + margin-top: 20px; +} + +.table-info-section { + background-color: #f8f9fa; + border-radius: 5px; + padding: 15px; + margin-bottom: 20px; +} + +.column-list { + max-height: 500px; + overflow-y: auto; +} + +.column-item { + border-left: 3px solid #6c757d; + margin-bottom: 10px; + transition: all 0.3s; +} + +.column-item:hover { + border-left-color: #0d6efd; + background-color: #f8f9fa; +} + +.badge-java { + background-color: #5382a1; +} + +.badge-jdbc { + background-color: #4479a1; +} + +.badge-js { + background-color: #f7df1e; + color: #000; +} \ No newline at end of file diff --git a/spring-security/step-2/src/main/resources/static/src/lib/css/user/style.css b/spring-security/step-2/src/main/resources/static/src/lib/css/tablePage.css similarity index 100% rename from spring-security/step-2/src/main/resources/static/src/lib/css/user/style.css rename to spring-security/step-2/src/main/resources/static/src/lib/css/tablePage.css diff --git a/spring-security/step-2/src/main/resources/static/src/views/role/DialogRole.js b/spring-security/step-2/src/main/resources/static/src/views/role/DialogRole.js new file mode 100644 index 0000000..2edde7a --- /dev/null +++ b/spring-security/step-2/src/main/resources/static/src/views/role/DialogRole.js @@ -0,0 +1,97 @@ +const DialogRole = { + name: "DialogRole", + template: ` +
+ `, + props: { + // 是否添加 + isAdd: {type: Boolean, default: false}, + // 角色信息 + roleInfo: {type: Object, required: true}, + // 加载函数 + onSearch: {type: Function, required: true}, + }, + data() { + return { + modalInstance: ref(null), + form: ref({}), + } + }, + methods: { + async onSubmit() { + // 是否添加表单 + const {code, message} = this.isAdd ? + await axiosInstance.post("/role", this.form) : + await axiosInstance.put("/role", this.form); + + if (code === 200) { + antd.message.success(message); + // 关闭模态框 + this.modalInstance.hide(); + this.onSearch(); + } + } + }, + watch: { + roleInfo(val) { + // 创建深拷贝,而不是直接赋值 + this.form = JSON.parse(JSON.stringify(val)); + } + }, + mounted() { + // 初始化模态框实例 + const modalEl = this.$refs.modalRef; + this.modalInstance = new bootstrap.Modal(modalEl, { + backdrop: 'static', + keyboard: false + }); + }, + beforeUnmount() { + // 组件销毁时清理模态框实例 + if (this.modalInstance) { + this.modalInstance.dispose(); + } + } +}; \ No newline at end of file diff --git a/spring-security/step-2/src/main/resources/templates/rolePage.html b/spring-security/step-2/src/main/resources/templates/rolePage.html new file mode 100644 index 0000000..df11dd9 --- /dev/null +++ b/spring-security/step-2/src/main/resources/templates/rolePage.html @@ -0,0 +1,225 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +# | +角色名 | +描述 | +简述 | +创建时间 | +更新时间 | +操作 | +
---|---|---|---|---|---|---|
{{index + 1}} | +{{role.roleName}} | +{{role.description}} | +{{role.remark}} | +{{formatDate(role.createTime)}} | +{{formatDate(role.updateTime)}} | +
+
+
+
+
+ |
+