feat: 重构员工控制器并优化JSON序列化配置

refactor(EmployeeController): 重命名EmployyeController为EmployeeController并优化代码结构
feat(EmployeeController): 添加@JsonIgnoreProperties注解解决循环引用问题
feat(JacksonConfig): 新增Jackson配置类处理Hibernate代理和循环引用
fix(EmployeeService): 修复缓存注解格式问题
feat(Employee): 添加@JsonIgnoreProperties注解忽略可能导致循环引用的字段
feat(EmployeeRole): 添加@JsonIgnore注解忽略关联字段
fix(application.properties): 调整Redis缓存配置和错误处理设置
refactor(IndexController): 移除错误处理方法
feat(GlobalExceptionHandler): 新增全局异常处理类
refactor(SecurityConfig): 优化安全配置并启用方法级安全注解
refactor(AbstractCtx): 优化日期时间处理方法
build: 更新项目版本至0.0.53-SNAPSHOT
This commit is contained in:
2025-09-04 16:06:47 +08:00
parent acb63116d5
commit 0e444508ff
21 changed files with 772 additions and 279 deletions

View File

@@ -1,15 +1,29 @@
package com.ecep.contract.model;
import jakarta.persistence.*;
import lombok.Getter;
import lombok.Setter;
import lombok.ToString;
import org.hibernate.proxy.HibernateProxy;
import java.io.Serializable;
import java.time.LocalDate;
import java.util.Objects;
import org.hibernate.proxy.HibernateProxy;
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import jakarta.persistence.CascadeType;
import jakarta.persistence.Column;
import jakarta.persistence.FetchType;
import jakarta.persistence.GeneratedValue;
import jakarta.persistence.GenerationType;
import jakarta.persistence.Id;
import jakarta.persistence.JoinColumn;
import jakarta.persistence.JoinTable;
import jakarta.persistence.ManyToMany;
import jakarta.persistence.ManyToOne;
import jakarta.persistence.Table;
import lombok.Getter;
import lombok.Setter;
import lombok.ToString;
@Getter
@Setter
@jakarta.persistence.Entity
@@ -33,6 +47,7 @@ public class Employee implements BasedEntity, IdentityEntity, NamedEntity, Seria
@JoinColumn(name = "DEPARTMENT_ID")
@ManyToOne(fetch = FetchType.LAZY)
@ToString.Exclude
@JsonIgnoreProperties({ "leader" })
private Department department;
/**
@@ -87,6 +102,8 @@ public class Employee implements BasedEntity, IdentityEntity, NamedEntity, Seria
@ManyToMany(fetch = FetchType.LAZY, cascade = { CascadeType.PERSIST, CascadeType.MERGE })
@JoinTable(name = "EMPLOYEE_ROLES", joinColumns = @JoinColumn(name = "EMPLOYEE_ID"), inverseJoinColumns = @JoinColumn(name = "ROLE_ID"))
@ToString.Exclude
@JsonIgnore
private java.util.List<EmployeeRole> roles = new java.util.ArrayList<>();
@Override

View File

@@ -6,55 +6,51 @@ import lombok.Setter;
import java.io.Serializable;
import com.fasterxml.jackson.annotation.JsonIgnore;
@Getter
@Setter
@jakarta.persistence.Entity
@Table(name = "EMPLOYEE_ROLE", schema = "supplier_ms")
public class EmployeeRole implements IdentityEntity, NamedEntity, Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "ID", nullable = false)
private Integer id;
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "ID", nullable = false)
private Integer id;
@Column(name = "CODE")
private String code;
@Column(name = "CODE")
private String code;
@Column(name = "NAME")
private String name;
@Column(name = "NAME")
private String name;
/**
* 是否系统管理员
*/
@Column(name = "SYS_ADMIN")
private boolean systemAdministrator;
/**
* 是否系统管理员
*/
@Column(name = "SYS_ADMIN")
private boolean systemAdministrator;
/**
* 是否管理层
*/
@Column(name = "MANAGER")
private boolean manager;
/**
* 是否管理层
*/
@Column(name = "MANAGER")
private boolean manager;
/**
* 是否启用
*/
@Column(name = "IS_ACTIVE")
private boolean active = true;
/**
* 是否启用
*/
@Column(name = "IS_ACTIVE")
private boolean active = true;
@ManyToMany(fetch = FetchType.LAZY, cascade = { CascadeType.PERSIST, CascadeType.MERGE })
@JoinTable(
name = "EMPLOYEE_ROLE_FUNCTIONS",
joinColumns = @JoinColumn(name = "ROLE_ID"),
inverseJoinColumns = @JoinColumn(name = "FUNC_ID")
)
private java.util.List<Function> functions = new java.util.ArrayList<>();
@ManyToMany(fetch = FetchType.LAZY, cascade = { CascadeType.PERSIST, CascadeType.MERGE })
@JoinTable(name = "EMPLOYEE_ROLE_FUNCTIONS", joinColumns = @JoinColumn(name = "ROLE_ID"), inverseJoinColumns = @JoinColumn(name = "FUNC_ID"))
@JsonIgnore
private java.util.List<Function> functions = new java.util.ArrayList<>();
@ManyToMany(fetch = FetchType.LAZY, cascade = {CascadeType.PERSIST, CascadeType.MERGE})
@JoinTable(
name = "EMPLOYEE_ROLES",
joinColumns = @JoinColumn(name = "ROLE_ID"),
inverseJoinColumns = @JoinColumn(name = "EMPLOYEE_ID")
)
private java.util.List<Employee> employees = new java.util.ArrayList<>();
@ManyToMany(fetch = FetchType.LAZY, cascade = { CascadeType.PERSIST, CascadeType.MERGE })
@JoinTable(name = "EMPLOYEE_ROLES", joinColumns = @JoinColumn(name = "ROLE_ID"), inverseJoinColumns = @JoinColumn(name = "EMPLOYEE_ID"))
@JsonIgnore
private java.util.List<Employee> employees = new java.util.ArrayList<>();
}