格式修改

This commit is contained in:
2026-08-05 10:35:07 +08:00
parent 81c9c92f5d
commit 496fc58a90
241 changed files with 5600 additions and 2088 deletions
@@ -6,6 +6,8 @@ import com.baiyue.common.core.exception.BizException;
import com.baiyue.common.core.export.ExportContracts.ExportBatchRequest;
import com.baiyue.common.core.export.ExportContracts.ExportBatchResponse;
import com.baiyue.iam.service.CustomerListExportProviderService;
import jakarta.annotation.PostConstruct;
import jakarta.annotation.Resource;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
@@ -20,14 +22,15 @@ import java.security.MessageDigest;
@RestController
@RequestMapping("/internal/exports/v1/CUSTOMER_LIST")
public class CustomerListExportProviderController {
private final CustomerListExportProviderService service;
private final byte[] internalToken;
@Resource
private CustomerListExportProviderService service;
@Value("${baiyue.security.internal-service-token}")
private String internalTokenValue;
private byte[] internalToken;
public CustomerListExportProviderController(
CustomerListExportProviderService service,
@Value("${baiyue.security.internal-service-token}") String internalToken) {
this.service = service;
this.internalToken = internalToken.getBytes(StandardCharsets.UTF_8);
@PostConstruct
void initializeToken() {
this.internalToken = internalTokenValue.getBytes(StandardCharsets.UTF_8);
}
@PostMapping("/batches")
@@ -9,6 +9,7 @@ import com.baiyue.iam.service.TenantGuard;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag;
import jakarta.validation.Valid;
import jakarta.annotation.Resource;
import jakarta.validation.constraints.Max;
import jakarta.validation.constraints.Min;
import jakarta.validation.constraints.Pattern;
@@ -23,11 +24,8 @@ import org.springframework.web.bind.annotation.*;
@Validated
@Tag(name = "Platform user administration / 平台用户管理")
public class PlatformUserManagementController {
private final PlatformUserManagementService service;
public PlatformUserManagementController(PlatformUserManagementService service) {
this.service = service;
}
@Resource
private PlatformUserManagementService service;
@GetMapping
@PreAuthorize("hasAuthority('platform:user:list')")
@@ -3,6 +3,7 @@ package com.baiyue.iam.repository;
import com.baiyue.iam.entity.IamTenant;
import com.baiyue.iam.mapper.IamTenantMapper;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import jakarta.annotation.Resource;
import org.springframework.stereotype.Repository;
import org.springframework.util.StringUtils;
@@ -11,11 +12,8 @@ import java.util.List;
/** Read-only customer queries used by the generic export provider. */
@Repository
public class CustomerListExportProviderRepository {
private final IamTenantMapper tenantMapper;
public CustomerListExportProviderRepository(IamTenantMapper tenantMapper) {
this.tenantMapper = tenantMapper;
}
@Resource
private IamTenantMapper tenantMapper;
public long maximumId(String keyword, String status) {
LambdaQueryWrapper<IamTenant> wrapper = filters(keyword, status)
@@ -8,6 +8,7 @@ import com.baiyue.iam.mapper.IamMembershipMapper;
import com.baiyue.iam.mapper.IamMembershipRoleMapper;
import com.baiyue.iam.mapper.IamUserMapper;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import jakarta.annotation.Resource;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import org.springframework.stereotype.Repository;
@@ -18,16 +19,12 @@ import java.util.List;
/** 企业成员仓储,所有成员查询均显式携带租户条件。 */
@Repository
public class MemberRepository {
private final IamMembershipMapper membershipMapper;
private final IamUserMapper userMapper;
private final IamMembershipRoleMapper roleMapper;
public MemberRepository(IamMembershipMapper membershipMapper, IamUserMapper userMapper,
IamMembershipRoleMapper roleMapper) {
this.membershipMapper = membershipMapper;
this.userMapper = userMapper;
this.roleMapper = roleMapper;
}
@Resource
private IamMembershipMapper membershipMapper;
@Resource
private IamUserMapper userMapper;
@Resource
private IamMembershipRoleMapper roleMapper;
public List<IamMembership> findByTenant(long tenantId) {
return membershipMapper.selectList(new LambdaQueryWrapper<IamMembership>()
@@ -7,6 +7,7 @@ import com.baiyue.iam.mapper.IamTenantAddressMapper;
import com.baiyue.iam.mapper.IamTenantQualificationMapper;
import com.baiyue.iam.mapper.IamUserMapper;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import jakarta.annotation.Resource;
import org.springframework.stereotype.Repository;
import java.util.List;
@@ -16,16 +17,12 @@ import java.util.List;
*/
@Repository
public class ProfileResourceRepository {
private final IamUserMapper userMapper;
private final IamTenantAddressMapper addressMapper;
private final IamTenantQualificationMapper qualificationMapper;
public ProfileResourceRepository(IamUserMapper userMapper, IamTenantAddressMapper addressMapper,
IamTenantQualificationMapper qualificationMapper) {
this.userMapper = userMapper;
this.addressMapper = addressMapper;
this.qualificationMapper = qualificationMapper;
}
@Resource
private IamUserMapper userMapper;
@Resource
private IamTenantAddressMapper addressMapper;
@Resource
private IamTenantQualificationMapper qualificationMapper;
public IamUser findUserByAuthId(Long authUserId) { return userMapper.selectOne(new LambdaQueryWrapper<IamUser>().eq(IamUser::getAuthUserId, authUserId).last("LIMIT 1")); }
public void saveUser(IamUser user) { userMapper.updateById(user); }
@@ -3,6 +3,7 @@ package com.baiyue.iam.repository;
import com.baiyue.iam.entity.*;
import com.baiyue.iam.mapper.*;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import jakarta.annotation.Resource;
import org.springframework.stereotype.Repository;
import java.time.LocalDateTime;
@@ -13,22 +14,16 @@ import java.util.Set;
/** RBAC 仓储,所有业务查询均显式携带租户和应用域。 */
@Repository
public class RbacRepository {
private final IamRoleMapper roleMapper;
private final IamPermissionMapper permissionMapper;
private final IamMembershipRoleMapper membershipRoleMapper;
private final IamRolePermissionMapper rolePermissionMapper;
private final IamDataScopeMapper dataScopeMapper;
public RbacRepository(IamRoleMapper roleMapper, IamPermissionMapper permissionMapper,
IamMembershipRoleMapper membershipRoleMapper,
IamRolePermissionMapper rolePermissionMapper,
IamDataScopeMapper dataScopeMapper) {
this.roleMapper = roleMapper;
this.permissionMapper = permissionMapper;
this.membershipRoleMapper = membershipRoleMapper;
this.rolePermissionMapper = rolePermissionMapper;
this.dataScopeMapper = dataScopeMapper;
}
@Resource
private IamRoleMapper roleMapper;
@Resource
private IamPermissionMapper permissionMapper;
@Resource
private IamMembershipRoleMapper membershipRoleMapper;
@Resource
private IamRolePermissionMapper rolePermissionMapper;
@Resource
private IamDataScopeMapper dataScopeMapper;
public IamRole findRole(Long id, long tenantId, String appCode) {
return roleMapper.selectOne(new LambdaQueryWrapper<IamRole>()
@@ -6,6 +6,7 @@ import com.baiyue.iam.entity.IamTenantReview;
import com.baiyue.iam.mapper.IamTenantMapper;
import com.baiyue.iam.mapper.IamTenantReviewMapper;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import jakarta.annotation.Resource;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import org.springframework.stereotype.Repository;
import org.springframework.util.StringUtils;
@@ -17,13 +18,10 @@ import java.util.List;
*/
@Repository
public class TenantRepository {
private final IamTenantMapper tenantMapper;
private final IamTenantReviewMapper reviewMapper;
public TenantRepository(IamTenantMapper tenantMapper, IamTenantReviewMapper reviewMapper) {
this.tenantMapper = tenantMapper;
this.reviewMapper = reviewMapper;
}
@Resource
private IamTenantMapper tenantMapper;
@Resource
private IamTenantReviewMapper reviewMapper;
public boolean existsByCreditCode(String creditCode) {
return tenantMapper.selectCount(new LambdaQueryWrapper<IamTenant>()
@@ -8,6 +8,8 @@ import com.baiyue.common.core.export.ExportContracts.ExportColumn;
import com.baiyue.common.core.export.ExportContracts.ExportColumnType;
import com.baiyue.iam.entity.IamTenant;
import com.baiyue.iam.repository.CustomerListExportProviderRepository;
import jakarta.annotation.PostConstruct;
import jakarta.annotation.Resource;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
@@ -54,13 +56,14 @@ public class CustomerListExportProviderService {
column("approvedAt", "审批时间", ExportColumnType.DATETIME, 21));
private static final String SCHEMA_HASH = schemaHash(COLUMNS);
private final CustomerListExportProviderRepository repository;
private final byte[] snapshotSigningKey;
@Resource
private CustomerListExportProviderRepository repository;
@Value("${baiyue.security.internal-service-token}")
private String internalServiceToken;
private byte[] snapshotSigningKey;
public CustomerListExportProviderService(
CustomerListExportProviderRepository repository,
@Value("${baiyue.security.internal-service-token}") String internalServiceToken) {
this.repository = repository;
@PostConstruct
void initializeSigningKey() {
this.snapshotSigningKey = internalServiceToken.getBytes(StandardCharsets.UTF_8);
}
@@ -13,6 +13,7 @@ import com.baiyue.iam.mapper.IamRoleMapper;
import com.baiyue.iam.repository.MemberRepository;
import com.baomidou.mybatisplus.core.toolkit.IdWorker;
import feign.FeignException;
import jakarta.annotation.Resource;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
@@ -29,18 +30,14 @@ import org.slf4j.LoggerFactory;
public class MemberService {
private static final String GRANT_ROLE_PERMISSION = "merchant:member:grant-role";
private static final Logger log = LoggerFactory.getLogger(MemberService.class);
private final MemberRepository repository;
private final IamRoleMapper roleMapper;
private final AuthAccountClient authClient;
private final String internalToken;
public MemberService(MemberRepository repository, IamRoleMapper roleMapper, AuthAccountClient authClient,
@Value("${baiyue.security.internal-service-token}") String internalToken) {
this.repository = repository;
this.roleMapper = roleMapper;
this.authClient = authClient;
this.internalToken = internalToken;
}
@Resource
private MemberRepository repository;
@Resource
private IamRoleMapper roleMapper;
@Resource
private AuthAccountClient authClient;
@Value("${baiyue.security.internal-service-token}")
private String internalToken;
public List<MemberResponse> list(long tenantId) {
return repository.findByTenant(tenantId).stream().map(m -> response(tenantId, m)).toList();
@@ -7,6 +7,7 @@ import com.baiyue.iam.dto.ProfileDtos.UpdatePersonalProfileRequest;
import com.baiyue.iam.entity.IamMembership;
import com.baiyue.iam.entity.IamUser;
import com.baiyue.iam.repository.MemberRepository;
import jakarta.annotation.Resource;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import com.baiyue.common.audit.BusinessAudit;
@@ -14,8 +15,8 @@ import com.baiyue.common.audit.BusinessAudit;
/** 当前用户个人资料服务,必须同时匹配认证账号与当前租户成员关系。 */
@Service
public class PersonalProfileService {
private final MemberRepository repository;
public PersonalProfileService(MemberRepository repository) { this.repository = repository; }
@Resource
private MemberRepository repository;
public PersonalProfileResponse get(long tenantId, Long authUserId, String username) {
return response(tenantId, authUserId, username);
@@ -13,6 +13,7 @@ import com.baiyue.iam.mapper.IamRoleMapper;
import com.baiyue.iam.repository.MemberRepository;
import com.baomidou.mybatisplus.core.toolkit.IdWorker;
import feign.FeignException;
import jakarta.annotation.Resource;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Value;
@@ -31,19 +32,14 @@ public class PlatformInternalUserService {
private static final long PLATFORM_TENANT_ID = 0L;
private static final Logger log = LoggerFactory.getLogger(PlatformInternalUserService.class);
private final MemberRepository repository;
private final IamRoleMapper roleMapper;
private final AuthAccountClient authClient;
private final String internalToken;
public PlatformInternalUserService(MemberRepository repository, IamRoleMapper roleMapper,
AuthAccountClient authClient,
@Value("${baiyue.security.internal-service-token}") String internalToken) {
this.repository = repository;
this.roleMapper = roleMapper;
this.authClient = authClient;
this.internalToken = internalToken;
}
@Resource
private MemberRepository repository;
@Resource
private IamRoleMapper roleMapper;
@Resource
private AuthAccountClient authClient;
@Value("${baiyue.security.internal-service-token}")
private String internalToken;
@Transactional(readOnly = true)
public List<InternalUserResponse> list() {
@@ -15,6 +15,7 @@ import com.baiyue.iam.repository.MemberRepository;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.IdWorker;
import feign.FeignException;
import jakarta.annotation.Resource;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Value;
@@ -36,19 +37,14 @@ public class PlatformUserManagementService {
private static final long PLATFORM_TENANT_ID = 0L;
private static final Logger log = LoggerFactory.getLogger(PlatformUserManagementService.class);
private final MemberRepository members;
private final IamRoleMapper roleMapper;
private final AuthAccountClient authClient;
private final String internalToken;
public PlatformUserManagementService(MemberRepository members, IamRoleMapper roleMapper,
AuthAccountClient authClient,
@Value("${baiyue.security.internal-service-token}") String internalToken) {
this.members = members;
this.roleMapper = roleMapper;
this.authClient = authClient;
this.internalToken = internalToken;
}
@Resource
private MemberRepository members;
@Resource
private IamRoleMapper roleMapper;
@Resource
private AuthAccountClient authClient;
@Value("${baiyue.security.internal-service-token}")
private String internalToken;
@Transactional(readOnly = true)
public PageResult<UserResponse> page(long page, long size, String keyword, String status) {
@@ -13,9 +13,9 @@ import com.baiyue.iam.repository.MemberRepository;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.IdWorker;
import feign.FeignException;
import jakarta.annotation.Resource;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.core.annotation.Order;
import org.springframework.stereotype.Service;
@@ -37,28 +37,15 @@ public class TenantAdministratorProvisioningService implements TenantApprovalIni
private static final int USERNAME_SUFFIX_LENGTH = 8;
private static final int USERNAME_ATTEMPTS = 3;
private final MemberRepository members;
private final IamRoleMapper roles;
private final AuthAccountClient authClient;
private final String internalToken;
private final SecureRandom random;
@Autowired
public TenantAdministratorProvisioningService(MemberRepository members, IamRoleMapper roles,
AuthAccountClient authClient,
@Value("${baiyue.security.internal-service-token}") String internalToken) {
this(members, roles, authClient, internalToken, new SecureRandom());
}
TenantAdministratorProvisioningService(MemberRepository members, IamRoleMapper roles,
AuthAccountClient authClient, String internalToken,
SecureRandom random) {
this.members = members;
this.roles = roles;
this.authClient = authClient;
this.internalToken = internalToken;
this.random = random;
}
@Resource
private MemberRepository members;
@Resource
private IamRoleMapper roles;
@Resource
private AuthAccountClient authClient;
@Value("${baiyue.security.internal-service-token}")
private String internalToken;
private SecureRandom random = new SecureRandom();
@Override
public String name() { return "tenant-administrator"; }
@@ -8,6 +8,8 @@ import org.springframework.core.annotation.AnnotationAwareOrderComparator;
import org.springframework.stereotype.Service;
import org.springframework.transaction.support.TransactionSynchronization;
import org.springframework.transaction.support.TransactionSynchronizationManager;
import jakarta.annotation.PostConstruct;
import jakarta.annotation.Resource;
import java.util.ArrayList;
import java.util.Collections;
@@ -21,9 +23,11 @@ import java.util.concurrent.atomic.AtomicBoolean;
@Service
public class TenantApprovalInitializationCoordinator {
private static final Logger log = LoggerFactory.getLogger(TenantApprovalInitializationCoordinator.class);
private final List<TenantApprovalInitializer> initializers;
@Resource
private List<TenantApprovalInitializer> initializers;
public TenantApprovalInitializationCoordinator(List<TenantApprovalInitializer> initializers) {
@PostConstruct
void initialize() {
List<TenantApprovalInitializer> ordered = new ArrayList<>(initializers);
AnnotationAwareOrderComparator.sort(ordered);
Set<String> names = new HashSet<>();
+1 -1
View File
@@ -38,6 +38,6 @@ logging:
rollingpolicy:
file-name-pattern: "${LOGGING_ROLLING_FILE_NAME_PATTERN:${LOG_PATH:./logs}/${spring.application.name}.%d{yyyy-MM-dd}.%i.log.gz}"
max-file-size: "${LOGGING_ROLLING_MAX_FILE_SIZE:100MB}"
max-history: "${LOGGING_ROLLING_MAX_HISTORY:30}"
max-history: "${LOGGING_ROLLING_MAX_HISTORY:7}"
total-size-cap: "${LOGGING_ROLLING_TOTAL_SIZE_CAP:5GB}"
clean-history-on-start: "${LOGGING_ROLLING_CLEAN_HISTORY_ON_START:false}"