feat: added entity files and create Employee, Role entity (please, sorry for my English gays)

This commit is contained in:
Petr Rudichev 2025-02-18 20:02:51 +03:00
parent da4fe5439e
commit 6f49192b40
6 changed files with 175 additions and 0 deletions

View File

@ -0,0 +1,122 @@
package com.example.nto.domain.entity;
import jakarta.persistence.*;
import jakarta.validation.constraints.Email;
import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.Size;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.springframework.data.annotation.CreatedDate;
import org.springframework.security.core.GrantedAuthority;
import org.springframework.security.core.userdetails.UserDetails;
import java.time.LocalDateTime;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
@Data
@Entity
@Builder
@NoArgsConstructor
@AllArgsConstructor
@Table(name = "employees")
public class Employee implements UserDetails {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private long id;
@Column(name = "name")
@NotBlank(message = "Имя пользователя не может быть пустым!")
@Size(max = 100, message = "Максимальная длина имени 100 символов!")
private String name;
@Column(name = "surname")
@NotBlank(message = "Фамилия пользователя не может быть пустой!")
@Size(max = 100, message = "Максимальная длина фамилии 100 символов!")
private String surname;
@Column(name = "patronymic")
@Size(max = 100, message = "Максимальная длина отчества 100 символов!")
private String patronymic;
@Column(name = "about_me")
@Size(max = 300, message = "Максимальная длина поля 'О себе' 300 символов!")
private String aboutMe;
@Column(name = "telephone", unique = true)
@NotBlank(message = "Телефон не может быть пустым!")
@Size(max = 20, message = "Максимальная длина телефонного номера 20 символов!")
private String telephone;
@Column(name = "email", unique = true)
@NotBlank(message = "Email не может быть пустым!")
@Size(max = 255, message = "Максимальная длина email 255 символов")
@Email(message = "Email адрес должен быть в формате user@example.com!")
private String email;
@Column(name = "password")
@NotBlank(message = "Пароль не может быть пустым!")
@Size(max = 300, message = "Максимальная длина пароля 300 символов!")
private String password;
// @ManyToOne(fetch = FetchType.EAGER)
// @JoinColumn(name = "office_id", referencedColumnName = "id", nullable = false)
// private Office office;
@ManyToOne(fetch = FetchType.EAGER)
@JoinColumn(name = "pos_id", referencedColumnName = "id", nullable = false)
private Position position;
@ManyToOne(fetch = FetchType.EAGER)
@JoinColumn(name = "role_id", referencedColumnName = "id", nullable = false)
private Role role;
@Column(name = "profile_image_url", nullable = false)
@Size(max = 300, message = "Максимальная длина адреса изображения 300 символов!")
private String profileImageUrl;
@CreatedDate
@Column(name = "created_at", columnDefinition = "TIMESTAMP", nullable = false)
private LocalDateTime createdAt;
// @OneToMany(mappedBy = "employee")
// private List<Visit> visits = new ArrayList<>();
@Override
public Collection<? extends GrantedAuthority> getAuthorities() {
return List.of(this.role);
}
@Override
public String getPassword() {
return "";
}
@Override
public String getUsername() {
return this.email;
}
@Override
public boolean isAccountNonExpired() {
return true;
}
@Override
public boolean isAccountNonLocked() {
return true;
}
@Override
public boolean isCredentialsNonExpired() {
return true;
}
@Override
public boolean isEnabled() {
return true;
}
}

View File

@ -0,0 +1,4 @@
package com.example.nto.domain.entity;
public class Office {
}

View File

@ -0,0 +1,4 @@
package com.example.nto.domain.entity;
public class Position {
}

View File

@ -0,0 +1,37 @@
package com.example.nto.domain.entity;
import jakarta.persistence.*;
import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.Size;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.springframework.security.core.GrantedAuthority;
import java.util.List;
@Data
@Entity
@Builder
@NoArgsConstructor
@AllArgsConstructor
@Table(name = "roles")
public class Role implements GrantedAuthority {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private long id;
@Column(name = "role_name", unique = true)
@NotBlank(message = "Название роли не может быть пустой!")
@Size(max = 100, message = "Максимальная длина роли 100 символов!")
private String roleName;
@OneToMany(mappedBy = "role")
private List<Employee> employees;
@Override
public String getAuthority() {
return this.roleName;
}
}

View File

@ -0,0 +1,4 @@
package com.example.nto.domain.entity;
public class Terminal {
}

View File

@ -0,0 +1,4 @@
package com.example.nto.domain.entity;
public class Visit {
}