Przeglądaj źródła

fix:
租户套餐名称不能重复

18339543638 2 lat temu
rodzic
commit
79b9b6c9df

+ 13 - 6
tr-modules/tr-module-system/src/main/java/cn/tr/module/sys/tenant/service/impl/SysTenantPackageServiceImpl.java

@@ -53,6 +53,7 @@ public class SysTenantPackageServiceImpl implements ISysTenantPackageService {
     @Override
     public boolean updateSysTenantPackageById(SysTenantPackageDTO source) {
         validatePackageSource(Collections.singleton(source.getId()));
+        validateSource(source);
         SysTenantPackagePO exitPackage = tenantPackageRepository.selectOne(new LambdaQueryWrapper<SysTenantPackagePO>()
                 .eq(SysTenantPackagePO::getPackageCode, source.getPackageCode())
                 .ne(SysTenantPackagePO::getId,source.getId())
@@ -65,12 +66,7 @@ public class SysTenantPackageServiceImpl implements ISysTenantPackageService {
 
     @Override
     public boolean insertSysTenantPackage(SysTenantPackageDTO source) {
-        SysTenantPackagePO exitPackage = tenantPackageRepository.selectOne(new LambdaQueryWrapper<SysTenantPackagePO>()
-                .eq(SysTenantPackagePO::getPackageCode, source.getPackageCode())
-                .last("limit 1"));
-        if(exitPackage!=null){
-            throw new ServiceException(TRExcCode.SYSTEM_ERROR_B0001,String.format("租户套餐编号 %s 已存在,无法重复添加",source.getPackageCode()));
-        }
+        validateSource(source);
         return tenantPackageRepository.insert(SysTenantPackageMapper.INSTANCE.toPO(source))!=0;
     }
 
@@ -101,6 +97,17 @@ public class SysTenantPackageServiceImpl implements ISysTenantPackageService {
                 .eq(SysTenantPackagePO::getType, PackageEnum.sys.name())));
     }
 
+    private void validateSource(SysTenantPackageDTO source){
+        SysTenantPackagePO sysTenantPackagePO = tenantPackageRepository.selectOne(new LambdaQueryWrapper<SysTenantPackagePO>()
+                .ne(StrUtil.isNotEmpty(source.getId()), SysTenantPackagePO::getId, source.getId())
+                .eq(SysTenantPackagePO::getPackageCode, source.getPackageCode())
+                .eq(SysTenantPackagePO::getPackageName, source.getPackageName())
+                .last("limit 1"));
+        if(ObjectUtil.isNotNull(sysTenantPackagePO)){
+            throw new ServiceException(TRExcCode.SYSTEM_ERROR_B0001,"租户套餐的名称、编码不能重复");
+        }
+    }
+
     private void validatePackageSource(Collection<String> packageIds){
         List<SysTenantPackagePO> packages = tenantPackageRepository.selectList(new LambdaQueryWrapper<SysTenantPackagePO>()
                 .in(SysTenantPackagePO::getId, packageIds));