12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485 |
- 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;
- /**
- * 租户服务
- * <p>
- * <p>
- * <b>职责:协调层</b>
- * <p>
- * 统一暴露业务能力入口(API粒度)
- * <p>
- * 事务边界控制(@Transactional)
- * <p>
- * 跨聚合协调(如租户创建时同步初始化权限)
- * <p>
- * 基础参数透传(不处理业务逻辑)
- * <p>
- * <p>
- * <b>关键边界控制点</b>:
- * <p>
- * 流量方向:Controller → Service → (Cmd/Query)Execute → DomainService
- * <p>
- * 禁止反向调用:QueryExecute永远不能调用CmdExecute
- * <p>
- * 状态修改权限:只有CmdExecute可以修改领域对象状态
- * <p>
- * 数据可见性: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<TenantDTO> get(TenantUniqueDTO unique) {
- Assert.notNull(unique, TenantErrorCode.NOT_NULL);
- return tenantQuery.of(unique);
- }
- /**
- * 增
- */
- public void add(TenantAddCmd tenant) {
- Assert.notNull(tenant, TenantErrorCode.NOT_NULL);
- tenantCmd.add(tenant);
- }
- /**
- * 删
- */
- public void update(TenantUpdateCmd tenant) {
- Assert.notNull(tenant, TenantErrorCode.NOT_NULL);
- tenantCmd.update(tenant);
- }
- /**
- * 租户分页列表
- */
- public PageResponse<TenantDTO> list(TenantListPageQuery query) {
- return tenantQuery.list(Optional.ofNullable(query).orElseGet(TenantListPageQuery::new));
- }
- }
|