diff --git a/src/main/java/cn/lihongjie/coal/dao/OrganizationRepository.java b/src/main/java/cn/lihongjie/coal/dao/OrganizationRepository.java index 1e1366d9..3d61f7c7 100644 --- a/src/main/java/cn/lihongjie/coal/dao/OrganizationRepository.java +++ b/src/main/java/cn/lihongjie/coal/dao/OrganizationRepository.java @@ -1,8 +1,11 @@ package cn.lihongjie.coal.dao; +import org.springframework.lang.Nullable; import org.springframework.stereotype.Repository; import cn.lihongjie.coal.entity.OrganizationEntity; @Repository public interface OrganizationRepository extends BaseRepository { + @Nullable + OrganizationEntity findByCode(String code); } \ 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 index 1c3b9a64..091dda53 100644 --- a/src/main/java/cn/lihongjie/coal/dao/UserRepository.java +++ b/src/main/java/cn/lihongjie/coal/dao/UserRepository.java @@ -6,4 +6,7 @@ import org.springframework.stereotype.Repository; @Repository public interface UserRepository extends BaseRepository { + + + public UserEntity findByUsername(String username); } \ No newline at end of file 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 907607bc..ac336fd5 100644 --- a/src/main/java/cn/lihongjie/coal/entity/base/BaseEntity.java +++ b/src/main/java/cn/lihongjie/coal/entity/base/BaseEntity.java @@ -1,12 +1,11 @@ package cn.lihongjie.coal.entity.base; -import jakarta.persistence.GeneratedValue; -import jakarta.persistence.GenerationType; -import jakarta.persistence.Id; -import jakarta.persistence.MappedSuperclass; +import cn.lihongjie.coal.common.Ctx; +import jakarta.persistence.*; import lombok.Getter; import lombok.Setter; +import org.apache.commons.lang3.StringUtils; import org.hibernate.annotations.*; import org.springframework.data.annotation.CreatedDate; @@ -18,22 +17,16 @@ import java.time.LocalDateTime; public class BaseEntity { - - - @Id @GeneratedValue(strategy = GenerationType.UUID) private String id; - - - @Comment("创建用户ID") private String createUserId; - @Formula("(select '')") + @Formula("(select name from t_user where id = create_user_id)") private String createUserName; @Comment("创建时间") @@ -41,10 +34,9 @@ public class BaseEntity { private LocalDateTime createTime; - @Comment("更新用户ID") private String updateUserId; - @Formula("(select '')") + @Formula("((select name from t_user where id = create_user_id))") private String updateUserName; @Comment("更新时间") @@ -52,5 +44,19 @@ public class BaseEntity { private LocalDateTime updateTime; + @PrePersist + public void prePersist() { + if (StringUtils.isEmpty(this.createUserId)) { + + this.createUserId = Ctx.isLoggedIn() ? Ctx.getUserId() : ""; + } + } + + @PreUpdate + public void preUpdate() { + + this.updateUserId = Ctx.isLoggedIn() ? Ctx.getUserId() : ""; + } + } diff --git a/src/main/java/cn/lihongjie/coal/entity/base/CommonEntity.java b/src/main/java/cn/lihongjie/coal/entity/base/CommonEntity.java index a6a8d132..c27f193a 100644 --- a/src/main/java/cn/lihongjie/coal/entity/base/CommonEntity.java +++ b/src/main/java/cn/lihongjie/coal/entity/base/CommonEntity.java @@ -1,6 +1,8 @@ package cn.lihongjie.coal.entity.base; import jakarta.persistence.MappedSuperclass; +import jakarta.persistence.PrePersist; +import jakarta.persistence.PreUpdate; import lombok.Getter; import lombok.Setter; import org.hibernate.annotations.Comment; @@ -37,4 +39,17 @@ public class CommonEntity extends BaseEntity { return Objects.equals(status, 0); } + + + @Override + public void prePersist() { + this.status = this.status == null ? 1 : this.status; + super.prePersist(); + } + + @Override + public void preUpdate() { + this.status = this.status == null ? 1 : this.status; + super.preUpdate(); + } } 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 a6758f67..891c4e75 100644 --- a/src/main/java/cn/lihongjie/coal/entity/base/OrgBaseEntity.java +++ b/src/main/java/cn/lihongjie/coal/entity/base/OrgBaseEntity.java @@ -1,10 +1,12 @@ package cn.lihongjie.coal.entity.base; +import cn.lihongjie.coal.common.Ctx; import cn.lihongjie.coal.entity.OrganizationEntity; import cn.lihongjie.coal.entity.base.BaseEntity; import jakarta.persistence.*; import lombok.Getter; import lombok.Setter; +import org.apache.commons.lang3.StringUtils; @MappedSuperclass @Getter @@ -12,8 +14,21 @@ import lombok.Setter; public class OrgBaseEntity extends BaseEntity { - @ManyToOne - @JoinColumn(name = "organization_id", foreignKey = @ForeignKey(ConstraintMode.NO_CONSTRAINT)) - private OrganizationEntity organization; + private String organizationId; + + + @Override + public void prePersist() { + if (StringUtils.isEmpty(organizationId)) { + + this.organizationId = Ctx.isLoggedIn() ? Ctx.currentUser().getOrganizationId() : organizationId; + } + super.prePersist(); + } + + @Override + public void preUpdate() { + super.preUpdate(); + } } diff --git a/src/main/java/cn/lihongjie/coal/entity/base/OrgCommonEntity.java b/src/main/java/cn/lihongjie/coal/entity/base/OrgCommonEntity.java index bfd5064e..4cbc1915 100644 --- a/src/main/java/cn/lihongjie/coal/entity/base/OrgCommonEntity.java +++ b/src/main/java/cn/lihongjie/coal/entity/base/OrgCommonEntity.java @@ -1,20 +1,34 @@ package cn.lihongjie.coal.entity.base; +import cn.lihongjie.coal.common.Ctx; import cn.lihongjie.coal.entity.OrganizationEntity; import cn.lihongjie.coal.entity.base.CommonEntity; import com.fasterxml.jackson.annotation.JsonIgnore; import jakarta.persistence.*; import lombok.Getter; import lombok.Setter; +import org.apache.commons.lang3.StringUtils; @MappedSuperclass @Getter @Setter public class OrgCommonEntity extends CommonEntity { - @ManyToOne - @JoinColumn(name = "organization_id", foreignKey = @ForeignKey(ConstraintMode.NO_CONSTRAINT)) - @JsonIgnore - private OrganizationEntity organization; + private String organizationId; + + + @Override + public void prePersist() { + if (StringUtils.isEmpty(organizationId)) { + + this.organizationId = Ctx.isLoggedIn() ? Ctx.currentUser().getOrganizationId() : organizationId; + } + super.prePersist(); + } + + @Override + public void preUpdate() { + super.preUpdate(); + } } diff --git a/src/main/java/cn/lihongjie/coal/runner/InitDataRunner.java b/src/main/java/cn/lihongjie/coal/runner/InitDataRunner.java new file mode 100644 index 00000000..40772656 --- /dev/null +++ b/src/main/java/cn/lihongjie/coal/runner/InitDataRunner.java @@ -0,0 +1,37 @@ +package cn.lihongjie.coal.runner; + +import cn.lihongjie.coal.entity.OrganizationEntity; +import cn.lihongjie.coal.entity.UserEntity; +import cn.lihongjie.coal.service.OrganizationService; +import cn.lihongjie.coal.service.UserService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.CommandLineRunner; +import org.springframework.stereotype.Component; + +@Component +@Slf4j +public class InitDataRunner implements CommandLineRunner { + + @Autowired + OrganizationService organizationService; + + + @Autowired + UserService userService; + + + + @Override + public void run(String... args) throws Exception { + + + OrganizationEntity e = organizationService.initOrGetAdminOrg(); + + UserEntity u = userService.initOrGetAdminUser(e); + + + + + } +} diff --git a/src/main/java/cn/lihongjie/coal/service/OrganizationService.java b/src/main/java/cn/lihongjie/coal/service/OrganizationService.java index f61ba54f..5291be14 100644 --- a/src/main/java/cn/lihongjie/coal/service/OrganizationService.java +++ b/src/main/java/cn/lihongjie/coal/service/OrganizationService.java @@ -78,4 +78,26 @@ public class OrganizationService extends BaseService{ public UserDto create(CreateUserDto request){ - + request.setPassword(passwordEncoder.encode(request.getPassword())); UserEntity entity = mapper.toEntity(request); @@ -136,4 +137,32 @@ public class UserService extends BaseService{ public boolean isValidPassword(String rawPassword, String encodedPassword) { return passwordEncoder.matches(rawPassword, encodedPassword); } + + public UserEntity initOrGetAdminUser(OrganizationEntity e) { + + UserEntity adminuser = this.repository.findByUsername("adminuser"); + + if (adminuser == null) { + + adminuser = new UserEntity(); + + adminuser.setUsername("adminuser"); + + adminuser.setPassword(passwordEncoder.encode("abc@123")); + + adminuser.setOrgAdmin(true); + adminuser.setName("超级管理员"); + + adminuser.setSysAdmin(true); + + + adminuser.setOrganizationId(e.getId()); + + this.repository.save(adminuser); + } + + return adminuser; + + + } }