package com.hosea.service.app.tenant; import com.alibaba.cola.dto.PageResponse; import com.hosea.cloud.web.exception.Assert; import com.hosea.service.app.tenant.executor.TenantCmdExecute; import com.hosea.service.app.tenant.executor.TenantQueryExecute; import com.hosea.service.user.client.dto.constant.TenantErrorCode; import com.hosea.service.user.client.dto.data.TenantDTO; import com.hosea.service.user.client.dto.data.TenantUniqueDTO; import com.hosea.service.user.client.dto.request.TenantAddCmd; import com.hosea.service.user.client.dto.request.TenantListPageQuery; import com.hosea.service.user.client.dto.request.TenantUpdateCmd; import jakarta.annotation.Resource; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import java.util.Optional; /** * 租户服务 *
*
* 职责:协调层 *
* 统一暴露业务能力入口(API粒度) *
* 事务边界控制(@Transactional) *
* 跨聚合协调(如租户创建时同步初始化权限) *
* 基础参数透传(不处理业务逻辑) *
*
* 关键边界控制点: *
* 流量方向:Controller → Service → (Cmd/Query)Execute → DomainService *
* 禁止反向调用:QueryExecute永远不能调用CmdExecute *
* 状态修改权限:只有CmdExecute可以修改领域对象状态 *
* 数据可见性:QueryExecute可以直接访问Repository但CmdExecute必须通过DomainService
*
* @author hosea
* @date 2025-06-23
*/
@Service
@Transactional
public class TenantService {
@Resource
private TenantCmdExecute tenantCmd;
@Resource
private TenantQueryExecute tenantQuery;
/**
* 查
*/
public Optional