Browse Source

新增之后返回ID

huangxiao 1 month ago
parent
commit
731eaf8c41

+ 3 - 6
service-user-app/src/main/java/com/hosea/service/app/tenant/executor/TenantCmdExecute.java

@@ -1,8 +1,8 @@
 package com.hosea.service.app.tenant.executor;
 
 import com.hosea.service.app.tenant.TenantConversion;
-import com.hosea.service.domain.tenant.Tenant;
 import com.hosea.service.domain.tenant.TenantDomainService;
+import com.hosea.service.domain.tenant.TenantUnique;
 import com.hosea.service.user.client.dto.request.TenantAddCmd;
 import com.hosea.service.user.client.dto.request.TenantUpdateCmd;
 import jakarta.annotation.Resource;
@@ -33,12 +33,9 @@ public class TenantCmdExecute {
     /**
      * 增
      */
-    public Tenant add(TenantAddCmd tenant) {
+    public TenantUnique add(TenantAddCmd tenant) {
         tenant.validation();
-        Tenant domain = TenantConversion.INSTANCE.toDomain(tenant.getTenant());
-        tenantDomainService.add(domain);
-        tenant.getTenant().setId(domain.getUnique().getId());
-        return domain;
+        return tenantDomainService.add(TenantConversion.INSTANCE.toDomain(tenant.getTenant()));
     }
 
     /**

+ 3 - 6
service-user-app/src/main/java/com/hosea/service/app/user/executor/UserCmdExecute.java

@@ -5,8 +5,8 @@ import com.alibaba.cola.exception.BizException;
 import com.hosea.service.app.tenant.TenantConversion;
 import com.hosea.service.app.user.UserConversion;
 import com.hosea.service.domain.tenant.TenantUnique;
-import com.hosea.service.domain.user.User;
 import com.hosea.service.domain.user.UserDomainService;
+import com.hosea.service.domain.user.UserUnique;
 import com.hosea.service.user.client.dto.request.UserAddCmd;
 import com.hosea.service.user.client.dto.request.UserJoinTenantCmd;
 import com.hosea.service.user.client.dto.request.UserUpdateCmd;
@@ -27,12 +27,9 @@ public class UserCmdExecute {
     /**
      * 增
      */
-    public User add(UserAddCmd user) throws BizException {
+    public UserUnique add(UserAddCmd user) throws BizException {
         user.validation();
-        User domain = UserConversion.INSTANCE.toDomain(user.getUser());
-        userDomainService.add(domain);
-        user.getUser().setId(domain.getUnique().getId());
-        return domain;
+        return userDomainService.add(UserConversion.INSTANCE.toDomain(user.getUser()));
     }
 
     /**

+ 14 - 7
service-user-domain/src/main/java/com/hosea/service/domain/tenant/TenantDomainService.java

@@ -37,16 +37,23 @@ public class TenantDomainService {
     /**
      * 增
      */
-    public void add(Tenant tenant) throws BizException {
+    public TenantUnique add(Tenant tenant) throws BizException {
         Assert.isFalse(of(tenant.getUnique()).isPresent(), TenantErrorCode.ALREADY_EXISTS);
         tenant.setStatus(TenantStatus.Normal);
-        Assert.isTrue(tenantRepository.save(tenant), TenantErrorCode.ADD_FAILED);
-        eventPublisher.publishEvent(TenantCreateEvent.builder()
-                .id(tenant.getUnique().getId())
-                .code(tenant.getUnique().getCode())
+        TenantUnique unique = tenantRepository.save(tenant).orElseThrow(TenantErrorCode.ADD_FAILED::toBizException);
+        eventPublisher.publishEvent(toTenantCreateEvent(unique));
+        return unique;
+    }
+
+    /**
+     * 创建事件
+     */
+    private TenantCreateEvent toTenantCreateEvent(TenantUnique unique) {
+        return TenantCreateEvent.builder()
+                .id(unique.getId())
+                .code(unique.getCode())
                 .time(LocalDateTime.now())
-                .build()
-        );
+                .build();
     }
 
     /**

+ 1 - 1
service-user-domain/src/main/java/com/hosea/service/domain/tenant/TenantRepository.java

@@ -17,7 +17,7 @@ public interface TenantRepository {
     /**
      * 增
      */
-    boolean save(Tenant tenant);
+    Optional<TenantUnique> save(Tenant tenant);
 
     /**
      * 改

+ 14 - 7
service-user-domain/src/main/java/com/hosea/service/domain/user/UserDomainService.java

@@ -65,16 +65,23 @@ public class UserDomainService {
     /**
      * 增
      */
-    public void add(User user) throws BizException {
+    public UserUnique add(User user) throws BizException {
         Assert.isFalse(of(user.getUnique()).isPresent(), UserErrorCode.ALREADY_EXISTS);
         user.setStatus(UserStatus.Normal);
-        Assert.isTrue(userRepository.save(user), UserErrorCode.ADD_FAILED);
-        eventPublisher.publishEvent(UserCreateEvent.builder()
-                .id(user.getUnique().getId())
-                .name(user.getUnique().getName())
+        UserUnique unique = userRepository.save(user).orElseThrow(UserErrorCode.ADD_FAILED::toBizException);
+        eventPublisher.publishEvent(toUserCreateEvent(unique));
+        return unique;
+    }
+
+    /**
+     * 创建事件
+     */
+    private UserCreateEvent toUserCreateEvent(UserUnique unique) {
+        return UserCreateEvent.builder()
+                .id(unique.getId())
+                .name(unique.getName())
                 .time(LocalDateTime.now())
-                .build()
-        );
+                .build();
     }
 
     /**

+ 2 - 2
service-user-domain/src/main/java/com/hosea/service/domain/user/UserRepository.java

@@ -28,7 +28,7 @@ public interface UserRepository {
     /**
      * 增
      */
-    boolean save(User user);
+    Optional<UserUnique> save(User user);
 
     /**
      * 改
@@ -38,7 +38,7 @@ public interface UserRepository {
     /**
      * 清除所有租户
      */
-    void cleanAllTenant(UserUnique unique);
+    boolean cleanAllTenant(UserUnique unique);
 
     /**
      * 保存所有租户

+ 3 - 3
service-user-infrastructure/src/main/java/com/hosea/service/infra/tenant/TenantRepositoryImpl.java

@@ -39,15 +39,15 @@ public class TenantRepositoryImpl implements TenantRepository, TenantComplexQuer
     }
 
     @Override
-    public boolean save(Tenant tenant) {
+    public Optional<TenantUnique> save(Tenant tenant) {
         TenantInfoPO po = TenantConversion.INSTANCE.toPo(tenant);
         // 兼容maxkey的非空逻辑
         po.setInstid("1");
         if (tenantMapper.insert(po) > 0) {
             tenant.getUnique().setId(po.getId());
-            return true;
+            return Optional.ofNullable(tenant.getUnique());
         }
-        return false;
+        return Optional.empty();
     }
 
     @Override

+ 1 - 1
service-user-infrastructure/src/main/java/com/hosea/service/infra/user/UserMapper.java

@@ -37,7 +37,7 @@ public interface UserMapper extends BaseMapper<UserInfoPO> {
      * 清空用户的租户
      */
     @Delete("DELETE gm FROM mxk_group_member gm JOIN mxk_userinfo u ON u.ID = gm.MEMBERID WHERE u.ID = #{id} OR u.USERNAME = #{name}")
-    void cleanTenant(UserUnique unique);
+    Integer cleanTenant(UserUnique unique);
 
     /**
      * 批量保存用户的租户

+ 5 - 5
service-user-infrastructure/src/main/java/com/hosea/service/infra/user/UserRepositoryImpl.java

@@ -44,7 +44,7 @@ public class UserRepositoryImpl implements UserRepository, UserComplexQuery {
     }
 
     @Override
-    public boolean save(User user) {
+    public Optional<UserUnique> save(User user) {
         UserInfoPO po = UserConversion.INSTANCE.toPo(user);
         // 兼容maxkey的非空逻辑
         po.setInstid("1");
@@ -52,9 +52,9 @@ public class UserRepositoryImpl implements UserRepository, UserComplexQuery {
         po.setDecipherable("");
         if (userMapper.insert(po) > 0) {
             user.getUnique().setId(po.getId());
-            return true;
+            return Optional.ofNullable(user.getUnique());
         }
-        return false;
+        return Optional.empty();
     }
 
     @Override
@@ -63,8 +63,8 @@ public class UserRepositoryImpl implements UserRepository, UserComplexQuery {
     }
 
     @Override
-    public void cleanAllTenant(UserUnique unique) {
-        userMapper.cleanTenant(unique);
+    public boolean cleanAllTenant(UserUnique unique) {
+        return userMapper.cleanTenant(unique) > 0;
     }
 
     @Override