diff --git a/pom.xml b/pom.xml index 7c29fabd..211c9d4b 100644 --- a/pom.xml +++ b/pom.xml @@ -58,6 +58,15 @@ + + org.springframework.boot + spring-boot-starter-security + + + org.mapstruct + mapstruct + 1.5.5.Final + org.springframework.boot spring-boot-starter-cache @@ -197,10 +206,38 @@ ortools-java 9.6.2534 + + + + + org.apache.maven.plugins + maven-compiler-plugin + + + + + org.projectlombok + lombok + 1.18.28 + + + org.mapstruct + mapstruct-processor + 1.5.5.Final + + + org.projectlombok + lombok-mapstruct-binding + 0.2.0 + + + + + org.springframework.boot spring-boot-maven-plugin diff --git a/src/main/java/cn/lihongjie/coal/controller/PermissionController.java b/src/main/java/cn/lihongjie/coal/controller/PermissionController.java new file mode 100644 index 00000000..94f55060 --- /dev/null +++ b/src/main/java/cn/lihongjie/coal/controller/PermissionController.java @@ -0,0 +1,47 @@ +package cn.lihongjie.coal.controller; + +import cn.lihongjie.coal.dto.*; +import cn.lihongjie.coal.service.PermissionService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.data.domain.Page; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +@RequestMapping("/permission") +@RestController +public class PermissionController { + + @Autowired + PermissionService service; + + @PostMapping("/create") + public PermissionDto create(@RequestBody CreatePermissionDto dto) { + return this.service.create(dto); + } + + @PostMapping("/update") + public PermissionDto update(@RequestBody UpdatePermissionDto dto) { + return this.service.update(dto); + } + + + @PostMapping("/delete") + public Object delete(@RequestBody IdRequest dto) { + this.service.delete(dto); + return null; + } + + + @PostMapping("/list") + public Page list(@RequestBody CommonQuery dto) { + return this.service.list(dto); + } + + + @PostMapping("/getById") + public PermissionDto getById(@RequestBody IdRequest dto) { + return this.service.getById(dto.getId()); + } +} diff --git a/src/main/java/cn/lihongjie/coal/controller/ResourceController.java b/src/main/java/cn/lihongjie/coal/controller/ResourceController.java new file mode 100644 index 00000000..f53c26b2 --- /dev/null +++ b/src/main/java/cn/lihongjie/coal/controller/ResourceController.java @@ -0,0 +1,47 @@ +package cn.lihongjie.coal.controller; + +import cn.lihongjie.coal.dto.*; +import cn.lihongjie.coal.service.ResourceService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.data.domain.Page; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +@RequestMapping("/resource") +@RestController +public class ResourceController { + + @Autowired + ResourceService service; + + @PostMapping("/create") + public ResourceDto create(@RequestBody CreateResourceDto dto) { + return this.service.create(dto); + } + + @PostMapping("/update") + public ResourceDto update(@RequestBody UpdateResourceDto dto) { + return this.service.update(dto); + } + + + @PostMapping("/delete") + public Object delete(@RequestBody IdRequest dto) { + this.service.delete(dto); + return null; + } + + + @PostMapping("/list") + public Page list(@RequestBody CommonQuery dto) { + return this.service.list(dto); + } + + + @PostMapping("/getById") + public ResourceDto getById(@RequestBody IdRequest dto) { + return this.service.getById(dto.getId()); + } +} diff --git a/src/main/java/cn/lihongjie/coal/controller/RoleController.java b/src/main/java/cn/lihongjie/coal/controller/RoleController.java new file mode 100644 index 00000000..8db3055d --- /dev/null +++ b/src/main/java/cn/lihongjie/coal/controller/RoleController.java @@ -0,0 +1,47 @@ +package cn.lihongjie.coal.controller; + +import cn.lihongjie.coal.dto.*; +import cn.lihongjie.coal.service.RoleService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.data.domain.Page; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +@RequestMapping("/Role") +@RestController +public class RoleController { + + @Autowired + RoleService service; + + @PostMapping("/create") + public RoleDto create(@RequestBody CreateRoleDto dto) { + return this.service.create(dto); + } + + @PostMapping("/update") + public RoleDto update(@RequestBody UpdateRoleDto dto) { + return this.service.update(dto); + } + + + @PostMapping("/delete") + public Object delete(@RequestBody IdRequest dto) { + this.service.delete(dto); + return null; + } + + + @PostMapping("/list") + public Page list(@RequestBody CommonQuery dto) { + return this.service.list(dto); + } + + + @PostMapping("/getById") + public RoleDto getById(@RequestBody IdRequest dto) { + return this.service.getById(dto.getId()); + } +} diff --git a/src/main/java/cn/lihongjie/coal/controller/UserController.java b/src/main/java/cn/lihongjie/coal/controller/UserController.java new file mode 100644 index 00000000..eaecd3d6 --- /dev/null +++ b/src/main/java/cn/lihongjie/coal/controller/UserController.java @@ -0,0 +1,62 @@ +package cn.lihongjie.coal.controller; + +import cn.lihongjie.coal.dto.CommonQuery; +import cn.lihongjie.coal.dto.IdRequest; +import cn.lihongjie.coal.dto.ChangeUserPwdDto; +import cn.lihongjie.coal.dto.CreateUserDto; +import cn.lihongjie.coal.dto.UpdateUserDto; +import cn.lihongjie.coal.dto.UserDto; +import cn.lihongjie.coal.service.UserService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.data.domain.Page; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +@RequestMapping("/user") +@RestController +public class UserController { + + @Autowired + UserService service; + + @PostMapping("/create") + public UserDto create(@RequestBody CreateUserDto dto) { + return this.service.create(dto); + } + + @PostMapping("/update") + public UserDto update(@RequestBody UpdateUserDto dto) { + return this.service.update(dto); + } + + + @PostMapping("/delete") + public Object delete(@RequestBody IdRequest dto) { + this.service.delete(dto); + return null; + } + + + @PostMapping("/changePwd") + public UserDto create(@RequestBody ChangeUserPwdDto dto) { + return this.service.changePwd(dto); + } + + + + @PostMapping("/list") + public Page list(@RequestBody CommonQuery dto) { + return this.service.list(dto); + } + + + + + @PostMapping("/getById") + public UserDto getById(@RequestBody IdRequest dto) { + return this.service.getById(dto.getId()); + } + +} diff --git a/src/main/java/cn/lihongjie/coal/dao/BaseRepository.java b/src/main/java/cn/lihongjie/coal/dao/BaseRepository.java index afd7fb3f..c176fe72 100644 --- a/src/main/java/cn/lihongjie/coal/dao/BaseRepository.java +++ b/src/main/java/cn/lihongjie/coal/dao/BaseRepository.java @@ -6,4 +6,10 @@ import org.springframework.data.repository.NoRepositoryBean; @NoRepositoryBean public interface BaseRepository extends JpaRepository, JpaSpecificationExecutor { + + public default T get(String id){ + + return findById(id).orElseThrow(() -> new RuntimeException("数据不存在: " + id)); + + } } diff --git a/src/main/java/cn/lihongjie/coal/dao/PermissionRepository.java b/src/main/java/cn/lihongjie/coal/dao/PermissionRepository.java new file mode 100644 index 00000000..c1a26937 --- /dev/null +++ b/src/main/java/cn/lihongjie/coal/dao/PermissionRepository.java @@ -0,0 +1,8 @@ +package cn.lihongjie.coal.dao; + +import cn.lihongjie.coal.entity.PermissionEntity; +import org.springframework.stereotype.Repository; + +@Repository +public interface PermissionRepository extends BaseRepository { +} \ No newline at end of file diff --git a/src/main/java/cn/lihongjie/coal/dao/ResourceRepository.java b/src/main/java/cn/lihongjie/coal/dao/ResourceRepository.java new file mode 100644 index 00000000..2eb976d4 --- /dev/null +++ b/src/main/java/cn/lihongjie/coal/dao/ResourceRepository.java @@ -0,0 +1,8 @@ +package cn.lihongjie.coal.dao; + +import cn.lihongjie.coal.entity.ResourceEntity; +import org.springframework.stereotype.Repository; + +@Repository +public interface ResourceRepository extends BaseRepository { +} \ No newline at end of file diff --git a/src/main/java/cn/lihongjie/coal/dao/RoleRepository.java b/src/main/java/cn/lihongjie/coal/dao/RoleRepository.java new file mode 100644 index 00000000..e165321d --- /dev/null +++ b/src/main/java/cn/lihongjie/coal/dao/RoleRepository.java @@ -0,0 +1,8 @@ +package cn.lihongjie.coal.dao; + +import cn.lihongjie.coal.entity.RoleEntity; +import org.springframework.stereotype.Repository; + +@Repository +public interface RoleRepository extends BaseRepository { +} \ No newline at end of file diff --git a/src/main/java/cn/lihongjie/coal/dao/UserRepository.java b/src/main/java/cn/lihongjie/coal/dao/UserRepository.java new file mode 100644 index 00000000..1c3b9a64 --- /dev/null +++ b/src/main/java/cn/lihongjie/coal/dao/UserRepository.java @@ -0,0 +1,9 @@ +package cn.lihongjie.coal.dao; + +import cn.lihongjie.coal.entity.DictionaryEntity; +import cn.lihongjie.coal.entity.UserEntity; +import org.springframework.stereotype.Repository; + +@Repository +public interface UserRepository extends BaseRepository { +} \ No newline at end of file diff --git a/src/main/java/cn/lihongjie/coal/dto/ChangeUserPwdDto.java b/src/main/java/cn/lihongjie/coal/dto/ChangeUserPwdDto.java new file mode 100644 index 00000000..34fbb925 --- /dev/null +++ b/src/main/java/cn/lihongjie/coal/dto/ChangeUserPwdDto.java @@ -0,0 +1,14 @@ +package cn.lihongjie.coal.dto; + +import cn.lihongjie.coal.dto.base.CommonDto; +import lombok.Data; + +@Data +public class ChangeUserPwdDto extends CommonDto { + + + + private String newPassword; + private String newPassword2; + +} diff --git a/src/main/java/cn/lihongjie/coal/dto/CreatePermissionDto.java b/src/main/java/cn/lihongjie/coal/dto/CreatePermissionDto.java new file mode 100644 index 00000000..bf928dd8 --- /dev/null +++ b/src/main/java/cn/lihongjie/coal/dto/CreatePermissionDto.java @@ -0,0 +1,16 @@ +package cn.lihongjie.coal.dto; + +import cn.lihongjie.coal.dto.base.CommonDto; +import lombok.Data; + +import java.util.List; + +@Data +public class CreatePermissionDto extends CommonDto { + + + + private List resources; + + +} diff --git a/src/main/java/cn/lihongjie/coal/dto/CreateResourceDto.java b/src/main/java/cn/lihongjie/coal/dto/CreateResourceDto.java new file mode 100644 index 00000000..b0754cf7 --- /dev/null +++ b/src/main/java/cn/lihongjie/coal/dto/CreateResourceDto.java @@ -0,0 +1,19 @@ +package cn.lihongjie.coal.dto; + +import cn.lihongjie.coal.dto.base.CommonDto; +import lombok.Data; +import org.hibernate.annotations.Comment; + +@Data +public class CreateResourceDto extends CommonDto { + + + @Comment("资源类型") + private String type; + + + + @Comment("资源地址") + private String url; + private String parent; +} diff --git a/src/main/java/cn/lihongjie/coal/dto/CreateRoleDto.java b/src/main/java/cn/lihongjie/coal/dto/CreateRoleDto.java new file mode 100644 index 00000000..813651b0 --- /dev/null +++ b/src/main/java/cn/lihongjie/coal/dto/CreateRoleDto.java @@ -0,0 +1,13 @@ +package cn.lihongjie.coal.dto; + +import cn.lihongjie.coal.dto.base.OrgCommonDto; +import lombok.Data; + +import java.util.List; + +@Data +public class CreateRoleDto extends OrgCommonDto +{ + + private List permissions; +} diff --git a/src/main/java/cn/lihongjie/coal/dto/CreateUserDto.java b/src/main/java/cn/lihongjie/coal/dto/CreateUserDto.java new file mode 100644 index 00000000..2662df7d --- /dev/null +++ b/src/main/java/cn/lihongjie/coal/dto/CreateUserDto.java @@ -0,0 +1,34 @@ +package cn.lihongjie.coal.dto; + +import cn.lihongjie.coal.dto.base.OrgCommonDto; +import lombok.Data; +import org.hibernate.annotations.Comment; + +import java.util.List; + +@Data +public class CreateUserDto extends OrgCommonDto { + + + + + @Comment("用户名") + private String username; + + @Comment("密码") + private String password; + + + @Comment("邮箱") + private String email; + + + + @Comment("手机号") + private String phone; + + private List roles; + + + +} diff --git a/src/main/java/cn/lihongjie/coal/dto/IdRequest.java b/src/main/java/cn/lihongjie/coal/dto/IdRequest.java index 99795428..86cf4df8 100644 --- a/src/main/java/cn/lihongjie/coal/dto/IdRequest.java +++ b/src/main/java/cn/lihongjie/coal/dto/IdRequest.java @@ -1,13 +1,33 @@ package cn.lihongjie.coal.dto; -import jakarta.validation.constraints.NotEmpty; import lombok.Data; +import org.apache.commons.collections4.CollectionUtils; +import org.apache.commons.lang3.StringUtils; +import java.util.ArrayList; +import java.util.Arrays; import java.util.List; @Data public class IdRequest { - @NotEmpty(message = "ids不能为空") + private String id; private List ids; + + public List getIds() { + + if (StringUtils.isEmpty(id)) { + return ids; + } else if (CollectionUtils.isEmpty(ids)) { + return Arrays.asList(id); + }else { + + + ArrayList dup = new ArrayList<>(ids); + dup.add(id); + return dup; + } + + + } } diff --git a/src/main/java/cn/lihongjie/coal/dto/PermissionDto.java b/src/main/java/cn/lihongjie/coal/dto/PermissionDto.java new file mode 100644 index 00000000..7d4a0ef1 --- /dev/null +++ b/src/main/java/cn/lihongjie/coal/dto/PermissionDto.java @@ -0,0 +1,36 @@ +package cn.lihongjie.coal.dto; + +import cn.lihongjie.coal.dto.base.OrgCommonDto; +import com.fasterxml.jackson.annotation.JsonBackReference; +import com.fasterxml.jackson.annotation.JsonManagedReference; +import jakarta.persistence.*; +import lombok.Data; +import org.hibernate.annotations.Comment; + +import java.util.List; + +@Data +public class PermissionDto extends OrgCommonDto { + + + + private List resources; + + @Data + public static class ResourceDto extends OrgCommonDto { + + + @OneToMany(mappedBy = "parent") + private List children; + + + + @Comment("资源类型") + private String type; + + + + @Comment("资源地址") + private String url; + } +} diff --git a/src/main/java/cn/lihongjie/coal/dto/ResourceDto.java b/src/main/java/cn/lihongjie/coal/dto/ResourceDto.java new file mode 100644 index 00000000..5548f869 --- /dev/null +++ b/src/main/java/cn/lihongjie/coal/dto/ResourceDto.java @@ -0,0 +1,19 @@ +package cn.lihongjie.coal.dto; + +import cn.lihongjie.coal.dto.base.CommonDto; +import lombok.Data; +import org.hibernate.annotations.Comment; + +@Data +public class ResourceDto extends CommonDto { + + + @Comment("资源类型") + private String type; + + + + @Comment("资源地址") + private String url; + +} diff --git a/src/main/java/cn/lihongjie/coal/dto/RoleDto.java b/src/main/java/cn/lihongjie/coal/dto/RoleDto.java new file mode 100644 index 00000000..b585fcb8 --- /dev/null +++ b/src/main/java/cn/lihongjie/coal/dto/RoleDto.java @@ -0,0 +1,18 @@ +package cn.lihongjie.coal.dto; + +import cn.lihongjie.coal.dto.base.OrgCommonDto; +import lombok.Data; + +import java.util.List; + +@Data +public class RoleDto extends OrgCommonDto +{ + + private List permissions; + + @Data + public static class PermissionDto extends OrgCommonDto { + + } +} diff --git a/src/main/java/cn/lihongjie/coal/dto/UpdateCreateResourceDto.java b/src/main/java/cn/lihongjie/coal/dto/UpdateCreateResourceDto.java new file mode 100644 index 00000000..e891ac8d --- /dev/null +++ b/src/main/java/cn/lihongjie/coal/dto/UpdateCreateResourceDto.java @@ -0,0 +1,22 @@ +package cn.lihongjie.coal.dto; + +import cn.lihongjie.coal.dto.base.CommonDto; +import lombok.Data; +import org.hibernate.annotations.Comment; + +@Data +public class UpdateCreateResourceDto extends CommonDto { + + + @Comment("资源类型") + private String type; + + + + @Comment("资源地址") + private String url; + + + private String parent; + +} diff --git a/src/main/java/cn/lihongjie/coal/dto/UpdatePermissionDto.java b/src/main/java/cn/lihongjie/coal/dto/UpdatePermissionDto.java new file mode 100644 index 00000000..6374571e --- /dev/null +++ b/src/main/java/cn/lihongjie/coal/dto/UpdatePermissionDto.java @@ -0,0 +1,16 @@ +package cn.lihongjie.coal.dto; + +import cn.lihongjie.coal.dto.base.CommonDto; +import lombok.Data; + +import java.util.List; + +@Data +public class UpdatePermissionDto extends CommonDto { + + + + private List resources; + + +} diff --git a/src/main/java/cn/lihongjie/coal/dto/UpdateResourceDto.java b/src/main/java/cn/lihongjie/coal/dto/UpdateResourceDto.java new file mode 100644 index 00000000..bbd4b0e2 --- /dev/null +++ b/src/main/java/cn/lihongjie/coal/dto/UpdateResourceDto.java @@ -0,0 +1,19 @@ +package cn.lihongjie.coal.dto; + +import cn.lihongjie.coal.dto.base.CommonDto; +import lombok.Data; +import org.hibernate.annotations.Comment; + +@Data +public class UpdateResourceDto extends CommonDto { + + + @Comment("资源类型") + private String type; + + + + @Comment("资源地址") + private String url; + private String parent; +} diff --git a/src/main/java/cn/lihongjie/coal/dto/UpdateRoleDto.java b/src/main/java/cn/lihongjie/coal/dto/UpdateRoleDto.java new file mode 100644 index 00000000..bbf50304 --- /dev/null +++ b/src/main/java/cn/lihongjie/coal/dto/UpdateRoleDto.java @@ -0,0 +1,13 @@ +package cn.lihongjie.coal.dto; + +import cn.lihongjie.coal.dto.base.OrgCommonDto; +import lombok.Data; + +import java.util.List; + +@Data +public class UpdateRoleDto extends OrgCommonDto +{ + + private List permissions; +} diff --git a/src/main/java/cn/lihongjie/coal/dto/UpdateUserDto.java b/src/main/java/cn/lihongjie/coal/dto/UpdateUserDto.java new file mode 100644 index 00000000..375e47ca --- /dev/null +++ b/src/main/java/cn/lihongjie/coal/dto/UpdateUserDto.java @@ -0,0 +1,30 @@ +package cn.lihongjie.coal.dto; + +import cn.lihongjie.coal.dto.base.OrgCommonDto; +import lombok.Data; +import org.hibernate.annotations.Comment; + +import java.util.List; + +@Data +public class UpdateUserDto extends OrgCommonDto { + + + + + + + + @Comment("邮箱") + private String email; + + + + @Comment("手机号") + private String phone; + + private List roles; + + + +} diff --git a/src/main/java/cn/lihongjie/coal/dto/UserDto.java b/src/main/java/cn/lihongjie/coal/dto/UserDto.java new file mode 100644 index 00000000..2f4d5b8a --- /dev/null +++ b/src/main/java/cn/lihongjie/coal/dto/UserDto.java @@ -0,0 +1,40 @@ +package cn.lihongjie.coal.dto; + +import cn.lihongjie.coal.dto.base.OrgCommonDto; +import cn.lihongjie.coal.entity.PermissionEntity; +import jakarta.persistence.ManyToMany; +import lombok.Data; +import org.hibernate.annotations.Comment; + +import java.util.List; + +@Data +public class UserDto extends OrgCommonDto { + @Comment("用户名") + private String username; + + + + @Comment("邮箱") + private String email; + + + + @Comment("手机号") + private String phone; + + + + + @Data + public static class RoleDto extends OrgCommonDto{ + + + + + } + + + private List roles; + +} diff --git a/src/main/java/cn/lihongjie/coal/dto/base/BaseDto.java b/src/main/java/cn/lihongjie/coal/dto/base/BaseDto.java new file mode 100644 index 00000000..5734d6b2 --- /dev/null +++ b/src/main/java/cn/lihongjie/coal/dto/base/BaseDto.java @@ -0,0 +1,12 @@ +package cn.lihongjie.coal.dto.base; + +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +public abstract class BaseDto { + + private String id; + +} diff --git a/src/main/java/cn/lihongjie/coal/dto/base/CommonDto.java b/src/main/java/cn/lihongjie/coal/dto/base/CommonDto.java new file mode 100644 index 00000000..35012248 --- /dev/null +++ b/src/main/java/cn/lihongjie/coal/dto/base/CommonDto.java @@ -0,0 +1,31 @@ +package cn.lihongjie.coal.dto.base; + +import lombok.Getter; +import lombok.Setter; +import org.hibernate.annotations.Comment; + +@Getter +@Setter +public class CommonDto extends BaseDto { + + + @Comment("名称") + private String name; + + @Comment("编码") + private String code; + + + @Comment("备注") + private String remarks; + + + + @Comment("排序键") + private Integer sortKey; + + + @Comment("常用状态 0 禁用 1 启用") + private Integer status; + +} diff --git a/src/main/java/cn/lihongjie/coal/dto/base/OrgCommonDto.java b/src/main/java/cn/lihongjie/coal/dto/base/OrgCommonDto.java new file mode 100644 index 00000000..f0e96028 --- /dev/null +++ b/src/main/java/cn/lihongjie/coal/dto/base/OrgCommonDto.java @@ -0,0 +1,10 @@ +package cn.lihongjie.coal.dto.base; + +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +public class OrgCommonDto extends CommonDto { + private String organizationId; +} diff --git a/src/main/java/cn/lihongjie/coal/entity/DictionaryItemEntity.java b/src/main/java/cn/lihongjie/coal/entity/DictionaryItemEntity.java index 7cfe9e39..983c87e3 100644 --- a/src/main/java/cn/lihongjie/coal/entity/DictionaryItemEntity.java +++ b/src/main/java/cn/lihongjie/coal/entity/DictionaryItemEntity.java @@ -1,8 +1,6 @@ package cn.lihongjie.coal.entity; import cn.lihongjie.coal.entity.base.CommonEntity; -import com.fasterxml.jackson.annotation.JsonBackReference; -import com.fasterxml.jackson.annotation.JsonManagedReference; import jakarta.persistence.*; import lombok.Getter; import lombok.Setter; @@ -18,17 +16,14 @@ public class DictionaryItemEntity extends CommonEntity { @ManyToOne - @JsonBackReference private DictionaryEntity dictionary; @OneToMany(mappedBy = "parent") - @JsonManagedReference private List children; @ManyToOne - @JsonBackReference @JoinColumn(name = "parent_id",foreignKey = @ForeignKey(value = ConstraintMode.NO_CONSTRAINT)) private DictionaryItemEntity parent; diff --git a/src/main/java/cn/lihongjie/coal/entity/PermissionEntity.java b/src/main/java/cn/lihongjie/coal/entity/PermissionEntity.java index 0dc3d144..6bd9929a 100644 --- a/src/main/java/cn/lihongjie/coal/entity/PermissionEntity.java +++ b/src/main/java/cn/lihongjie/coal/entity/PermissionEntity.java @@ -16,7 +16,6 @@ public class PermissionEntity extends CommonEntity { @ManyToMany(mappedBy = "permissions") - @JsonManagedReference private List resources; diff --git a/src/main/java/cn/lihongjie/coal/entity/ResourceEntity.java b/src/main/java/cn/lihongjie/coal/entity/ResourceEntity.java index 74985e7f..9b7aa943 100644 --- a/src/main/java/cn/lihongjie/coal/entity/ResourceEntity.java +++ b/src/main/java/cn/lihongjie/coal/entity/ResourceEntity.java @@ -1,8 +1,6 @@ package cn.lihongjie.coal.entity; import cn.lihongjie.coal.entity.base.CommonEntity; -import com.fasterxml.jackson.annotation.JsonBackReference; -import com.fasterxml.jackson.annotation.JsonManagedReference; import jakarta.persistence.*; import lombok.Data; import org.hibernate.annotations.Comment; @@ -15,16 +13,13 @@ import java.util.List; public class ResourceEntity extends CommonEntity { @ManyToMany - @JsonBackReference private List permissions; @OneToMany(mappedBy = "parent") - @JsonManagedReference private List children; @ManyToOne - @JsonBackReference @JoinColumn(name = "parent_id", foreignKey = @ForeignKey(value = ConstraintMode.NO_CONSTRAINT)) private ResourceEntity parent; diff --git a/src/main/java/cn/lihongjie/coal/entity/RoleEntity.java b/src/main/java/cn/lihongjie/coal/entity/RoleEntity.java index 2146a11a..50487d0a 100644 --- a/src/main/java/cn/lihongjie/coal/entity/RoleEntity.java +++ b/src/main/java/cn/lihongjie/coal/entity/RoleEntity.java @@ -1,6 +1,6 @@ package cn.lihongjie.coal.entity; -import cn.lihongjie.coal.entity.base.OrgBaseEntity; +import cn.lihongjie.coal.entity.base.OrgCommonEntity; import com.fasterxml.jackson.annotation.JsonBackReference; import jakarta.persistence.Entity; import jakarta.persistence.ManyToMany; @@ -10,7 +10,10 @@ import java.util.List; @Entity @Data -public class RoleEntity extends OrgBaseEntity { + +public class RoleEntity extends OrgCommonEntity { + + @ManyToMany(mappedBy = "roles") diff --git a/src/main/java/cn/lihongjie/coal/entity/UserEntity.java b/src/main/java/cn/lihongjie/coal/entity/UserEntity.java index c6df3ccd..68ec212e 100644 --- a/src/main/java/cn/lihongjie/coal/entity/UserEntity.java +++ b/src/main/java/cn/lihongjie/coal/entity/UserEntity.java @@ -29,8 +29,7 @@ public class UserEntity extends OrgCommonEntity { @Comment("手机号") private String phone; - @ManyToMany - @JsonManagedReference + @ManyToMany() private List roles; diff --git a/src/main/java/cn/lihongjie/coal/entity/base/BaseEntity.java b/src/main/java/cn/lihongjie/coal/entity/base/BaseEntity.java index 940ef89b..907607bc 100644 --- a/src/main/java/cn/lihongjie/coal/entity/base/BaseEntity.java +++ b/src/main/java/cn/lihongjie/coal/entity/base/BaseEntity.java @@ -17,6 +17,10 @@ import java.time.LocalDateTime; @Setter public class BaseEntity { + + + + @Id @GeneratedValue(strategy = GenerationType.UUID) private String id; diff --git a/src/main/java/cn/lihongjie/coal/entity/base/OrgBaseEntity.java b/src/main/java/cn/lihongjie/coal/entity/base/OrgBaseEntity.java index b745397c..a6758f67 100644 --- a/src/main/java/cn/lihongjie/coal/entity/base/OrgBaseEntity.java +++ b/src/main/java/cn/lihongjie/coal/entity/base/OrgBaseEntity.java @@ -11,6 +11,7 @@ import lombok.Setter; @Setter public class OrgBaseEntity extends BaseEntity { + @ManyToOne @JoinColumn(name = "organization_id", foreignKey = @ForeignKey(ConstraintMode.NO_CONSTRAINT)) private OrganizationEntity organization; diff --git a/src/main/java/cn/lihongjie/coal/mapper/CommonMapper.java b/src/main/java/cn/lihongjie/coal/mapper/CommonMapper.java new file mode 100644 index 00000000..2790cccc --- /dev/null +++ b/src/main/java/cn/lihongjie/coal/mapper/CommonMapper.java @@ -0,0 +1,74 @@ +package cn.lihongjie.coal.mapper; + +import cn.lihongjie.coal.entity.*; +import org.mapstruct.Mapper; + +@Mapper(componentModel = "spring") +public interface CommonMapper { + + public default UserEntity createUser(String id) { + + UserEntity user = new UserEntity(); + + user.setId(id); + + return user; + } + + + public default DictionaryEntity createDictionary(String id) { + + DictionaryEntity e = new DictionaryEntity(); + e.setId(id); + return e; + + } + + public default DictionaryItemEntity createDictionaryItem(String id) { + + DictionaryItemEntity e = new DictionaryItemEntity(); + e.setId(id); + return e; + + } + + public default OperationLog createOperat(String id) { + + OperationLog e = new OperationLog(); + e.setId(id); + return e; + + } + + public default OrganizationEntity createOrganization(String id) { + + OrganizationEntity e = new OrganizationEntity(); + e.setId(id); + return e; + + } + + public default PermissionEntity createPermission(String id) { + + PermissionEntity e = new PermissionEntity(); + e.setId(id); + return e; + + } + + public default ResourceEntity createResource(String id) { + + ResourceEntity e = new ResourceEntity(); + e.setId(id); + return e; + + } + + public default RoleEntity createRole(String id) { + + RoleEntity e = new RoleEntity(); + e.setId(id); + return e; + + } +} diff --git a/src/main/java/cn/lihongjie/coal/mapper/PermissionMapper.java b/src/main/java/cn/lihongjie/coal/mapper/PermissionMapper.java new file mode 100644 index 00000000..ad3e4ed7 --- /dev/null +++ b/src/main/java/cn/lihongjie/coal/mapper/PermissionMapper.java @@ -0,0 +1,24 @@ +package cn.lihongjie.coal.mapper; + + +import cn.lihongjie.coal.dto.CreatePermissionDto; +import cn.lihongjie.coal.dto.UpdatePermissionDto; +import cn.lihongjie.coal.dto.PermissionDto; +import cn.lihongjie.coal.entity.PermissionEntity; +import org.mapstruct.Mapper; +import org.mapstruct.MappingConstants; +import org.mapstruct.MappingTarget; + +@Mapper( + componentModel = MappingConstants.ComponentModel.SPRING, + uses = {CommonMapper.class} + +) +public interface PermissionMapper { + PermissionDto toDto(PermissionEntity user); + + PermissionEntity toEntity(CreatePermissionDto request); + + + void updateEntity(@MappingTarget PermissionEntity entity, UpdatePermissionDto dto); +} diff --git a/src/main/java/cn/lihongjie/coal/mapper/ResourceMapper.java b/src/main/java/cn/lihongjie/coal/mapper/ResourceMapper.java new file mode 100644 index 00000000..0381e703 --- /dev/null +++ b/src/main/java/cn/lihongjie/coal/mapper/ResourceMapper.java @@ -0,0 +1,24 @@ +package cn.lihongjie.coal.mapper; + + +import cn.lihongjie.coal.dto.CreateResourceDto; +import cn.lihongjie.coal.dto.UpdateResourceDto; +import cn.lihongjie.coal.dto.ResourceDto; +import cn.lihongjie.coal.entity.ResourceEntity; +import org.mapstruct.Mapper; +import org.mapstruct.MappingConstants; +import org.mapstruct.MappingTarget; + +@Mapper( + componentModel = MappingConstants.ComponentModel.SPRING, + uses = {CommonMapper.class} + +) +public interface ResourceMapper { + ResourceDto toDto(ResourceEntity user); + + ResourceEntity toEntity(CreateResourceDto request); + + + void updateEntity(@MappingTarget ResourceEntity entity, UpdateResourceDto dto); +} diff --git a/src/main/java/cn/lihongjie/coal/mapper/RoleMapper.java b/src/main/java/cn/lihongjie/coal/mapper/RoleMapper.java new file mode 100644 index 00000000..690770c9 --- /dev/null +++ b/src/main/java/cn/lihongjie/coal/mapper/RoleMapper.java @@ -0,0 +1,24 @@ +package cn.lihongjie.coal.mapper; + + +import cn.lihongjie.coal.dto.CreateRoleDto; +import cn.lihongjie.coal.dto.UpdateRoleDto; +import cn.lihongjie.coal.dto.RoleDto; +import cn.lihongjie.coal.entity.RoleEntity; +import org.mapstruct.Mapper; +import org.mapstruct.MappingConstants; +import org.mapstruct.MappingTarget; + +@Mapper( + componentModel = MappingConstants.ComponentModel.SPRING, + uses = {CommonMapper.class} + +) +public interface RoleMapper { + RoleDto toDto(RoleEntity user); + + RoleEntity toEntity(CreateRoleDto request); + + + void updateEntity(@MappingTarget RoleEntity entity, UpdateRoleDto dto); +} diff --git a/src/main/java/cn/lihongjie/coal/mapper/UserMapper.java b/src/main/java/cn/lihongjie/coal/mapper/UserMapper.java new file mode 100644 index 00000000..9b3d5367 --- /dev/null +++ b/src/main/java/cn/lihongjie/coal/mapper/UserMapper.java @@ -0,0 +1,24 @@ +package cn.lihongjie.coal.mapper; + + +import cn.lihongjie.coal.dto.CreateUserDto; +import cn.lihongjie.coal.dto.UpdateUserDto; +import cn.lihongjie.coal.dto.UserDto; +import cn.lihongjie.coal.entity.UserEntity; +import org.mapstruct.Mapper; +import org.mapstruct.MappingConstants; +import org.mapstruct.MappingTarget; + +@Mapper( + componentModel = MappingConstants.ComponentModel.SPRING, + uses = {CommonMapper.class} + +) +public interface UserMapper { + UserDto toDto(UserEntity user); + + UserEntity toEntity(CreateUserDto request); + + + void updateEntity(@MappingTarget UserEntity entity, UpdateUserDto dto); +} diff --git a/src/main/java/cn/lihongjie/coal/service/PermissionService.java b/src/main/java/cn/lihongjie/coal/service/PermissionService.java new file mode 100644 index 00000000..b3e153ab --- /dev/null +++ b/src/main/java/cn/lihongjie/coal/service/PermissionService.java @@ -0,0 +1,81 @@ +package cn.lihongjie.coal.service; + +import cn.lihongjie.coal.dao.PermissionRepository; +import cn.lihongjie.coal.dto.*; +import cn.lihongjie.coal.entity.PermissionEntity; +import cn.lihongjie.coal.mapper.PermissionMapper; +import jakarta.annotation.PostConstruct; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.core.convert.ConversionService; +import org.springframework.data.domain.Page; +import org.springframework.data.domain.PageRequest; +import org.springframework.data.domain.Sort; +import org.springframework.stereotype.Service; + +@Service +@Slf4j +public class PermissionService { + + @Autowired + PermissionRepository repository; + + @Autowired + PermissionMapper mapper; + + + @PostConstruct + public void init() { + + + } + + + public PermissionDto create(CreatePermissionDto request) { + + + PermissionEntity entity = mapper.toEntity(request); + + + this.repository.save(entity); + return getById(entity.getId()); + + } + + + public PermissionDto update(UpdatePermissionDto request) { + PermissionEntity entity = this.repository.get(request.getId()); + this.mapper.updateEntity(entity, request); + + return null; + } + + + public void delete(IdRequest request) { + + this.repository.deleteAllById(request.getIds()); + + } + + + public PermissionDto getById(String id) { + + PermissionEntity entity = repository.get(id); + + + return mapper.toDto(entity); + } + + + @Autowired + ConversionService conversionService; + + public Page list(CommonQuery query) { + + Page page = repository.findAll(query.specification(conversionService), PageRequest.of(query.getPageNo(), query.getPageSize(), Sort.by(query.getOrders()))); + + + return page.map(this.mapper::toDto); + + } +} diff --git a/src/main/java/cn/lihongjie/coal/service/ResourceService.java b/src/main/java/cn/lihongjie/coal/service/ResourceService.java new file mode 100644 index 00000000..97af9a82 --- /dev/null +++ b/src/main/java/cn/lihongjie/coal/service/ResourceService.java @@ -0,0 +1,81 @@ +package cn.lihongjie.coal.service; + +import cn.lihongjie.coal.dao.ResourceRepository; +import cn.lihongjie.coal.dto.*; +import cn.lihongjie.coal.entity.ResourceEntity; +import cn.lihongjie.coal.mapper.ResourceMapper; +import jakarta.annotation.PostConstruct; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.core.convert.ConversionService; +import org.springframework.data.domain.Page; +import org.springframework.data.domain.PageRequest; +import org.springframework.data.domain.Sort; +import org.springframework.stereotype.Service; + +@Service +@Slf4j +public class ResourceService { + + @Autowired + ResourceRepository repository; + + @Autowired + ResourceMapper mapper; + + + @PostConstruct + public void init() { + + + } + + + public ResourceDto create(CreateResourceDto request) { + + + ResourceEntity entity = mapper.toEntity(request); + + + this.repository.save(entity); + return getById(entity.getId()); + + } + + + public ResourceDto update(UpdateResourceDto request) { + ResourceEntity entity = this.repository.get(request.getId()); + this.mapper.updateEntity(entity, request); + + return null; + } + + + public void delete(IdRequest request) { + + this.repository.deleteAllById(request.getIds()); + + } + + + public ResourceDto getById(String id) { + + ResourceEntity entity = repository.get(id); + + + return mapper.toDto(entity); + } + + + @Autowired + ConversionService conversionService; + + public Page list(CommonQuery query) { + + Page page = repository.findAll(query.specification(conversionService), PageRequest.of(query.getPageNo(), query.getPageSize(), Sort.by(query.getOrders()))); + + + return page.map(this.mapper::toDto); + + } +} diff --git a/src/main/java/cn/lihongjie/coal/service/RoleService.java b/src/main/java/cn/lihongjie/coal/service/RoleService.java new file mode 100644 index 00000000..8b9dffbf --- /dev/null +++ b/src/main/java/cn/lihongjie/coal/service/RoleService.java @@ -0,0 +1,81 @@ +package cn.lihongjie.coal.service; + +import cn.lihongjie.coal.dao.RoleRepository; +import cn.lihongjie.coal.dto.*; +import cn.lihongjie.coal.entity.RoleEntity; +import cn.lihongjie.coal.mapper.RoleMapper; +import jakarta.annotation.PostConstruct; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.core.convert.ConversionService; +import org.springframework.data.domain.Page; +import org.springframework.data.domain.PageRequest; +import org.springframework.data.domain.Sort; +import org.springframework.stereotype.Service; + +@Service +@Slf4j +public class RoleService { + + @Autowired + RoleRepository repository; + + @Autowired + RoleMapper mapper; + + + @PostConstruct + public void init() { + + + } + + + public RoleDto create(CreateRoleDto request) { + + + RoleEntity entity = mapper.toEntity(request); + + + this.repository.save(entity); + return getById(entity.getId()); + + } + + + public RoleDto update(UpdateRoleDto request) { + RoleEntity entity = this.repository.get(request.getId()); + this.mapper.updateEntity(entity, request); + + return null; + } + + + public void delete(IdRequest request) { + + this.repository.deleteAllById(request.getIds()); + + } + + + public RoleDto getById(String id) { + + RoleEntity entity = repository.get(id); + + + return mapper.toDto(entity); + } + + + @Autowired + ConversionService conversionService; + + public Page list(CommonQuery query) { + + Page page = repository.findAll(query.specification(conversionService), PageRequest.of(query.getPageNo(), query.getPageSize(), Sort.by(query.getOrders()))); + + + return page.map(this.mapper::toDto); + + } +} diff --git a/src/main/java/cn/lihongjie/coal/service/UserService.java b/src/main/java/cn/lihongjie/coal/service/UserService.java new file mode 100644 index 00000000..5923b61b --- /dev/null +++ b/src/main/java/cn/lihongjie/coal/service/UserService.java @@ -0,0 +1,120 @@ +package cn.lihongjie.coal.service; + +import cn.lihongjie.coal.dao.UserRepository; +import cn.lihongjie.coal.dto.CommonQuery; +import cn.lihongjie.coal.dto.IdRequest; +import cn.lihongjie.coal.dto.ChangeUserPwdDto; +import cn.lihongjie.coal.dto.CreateUserDto; +import cn.lihongjie.coal.dto.UpdateUserDto; +import cn.lihongjie.coal.dto.UserDto; +import cn.lihongjie.coal.entity.UserEntity; +import cn.lihongjie.coal.exception.BizException; +import cn.lihongjie.coal.mapper.UserMapper; +import jakarta.annotation.PostConstruct; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.lang3.StringUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.core.convert.ConversionService; +import org.springframework.data.domain.Page; +import org.springframework.data.domain.PageRequest; +import org.springframework.data.domain.Sort; +import org.springframework.security.crypto.password.Pbkdf2PasswordEncoder; +import org.springframework.stereotype.Service; + +@Service +@Slf4j +public class UserService { + + @Autowired + UserRepository repository; + + @Autowired + UserMapper mapper; + + private Pbkdf2PasswordEncoder passwordEncoder; + + + @PostConstruct + public void init(){ + + passwordEncoder = Pbkdf2PasswordEncoder.defaultsForSpringSecurity_v5_8(); + + } + + + + public UserDto create(CreateUserDto request){ + + + UserEntity entity = mapper.toEntity(request); + + + this.repository.save(entity); + return getById(entity.getId()); + + } + + + + + public UserDto update(UpdateUserDto request){ + UserEntity user = this.repository.get(request.getId()); + this.mapper.updateEntity(user, request); + + return null; + } + + + + + public void delete(IdRequest request){ + + this.repository.deleteAllById(request.getIds()); + + } + + + + public UserDto getById(String id){ + + UserEntity user = repository.get(id); + + + return mapper.toDto(user); + } + + + + public UserDto changePwd(ChangeUserPwdDto request){ + + + UserEntity user = repository.findById(request.getId()).orElseThrow(() -> new BizException("用户不存在")); + + if (!StringUtils.equals(request.getNewPassword(), request.getNewPassword2())) { + throw new BizException("两次输入的密码不一致"); + } + + user.setPassword(passwordEncoder.encode(request.getNewPassword())); + + repository.save(user); + + return + getById(request.getId()); + + + + + } + + @Autowired + ConversionService conversionService; + + public Page list(CommonQuery query) { + + Page page = repository.findAll(query.specification(conversionService), PageRequest.of(query.getPageNo(), query.getPageSize(), Sort.by(query.getOrders()))); + + + return page.map(this.mapper::toDto); + + } +}