Parcourir la source

产品配置优化

zhangqiankun il y a 3 ans
Parent
commit
e5973afb76

+ 8 - 8
saas-account/src/main/java/com/persagy/account/controller/SaasProductController.java

@@ -98,14 +98,14 @@ public class SaasProductController {
 		// 验证产品名称、产品编码的唯一性
 		boolean result = false;
 		if (StringUtil.isNotBlank(model.getProductCode())) {
-			result = this.saasProductService.validProductCode(model.getProductType(), model.getProductCode(), null);
+			result = this.saasProductService.validProductCode(model.getAppId(), model.getProductType(), model.getProductCode(), null);
 			if (!result) {
 				return ResponseResultUtil.errorResult(ResponseCode.C0341.getCode(), "产品编码已存在");
 			}
 		}
-		result = this.saasProductService.validProductName(model.getProductType(), model.getProductName(), null);
-		if (!result) {
-			return ResponseResultUtil.errorResult(ResponseCode.C0341.getCode(), "产品名称已存在");
+		String msg = this.saasProductService.validProductName(model.getAppId(), model.getProductType(),model.getProductName(), model.getId());
+		if (StringUtil.isNotBlank(msg)) {
+			return ResponseResultUtil.errorResult(ResponseCode.C0341.getCode(), msg);
 		}
 		SaasProduct saasProduct = new SaasProduct();
 		BeanUtils.copyProperties(model, saasProduct);
@@ -133,14 +133,14 @@ public class SaasProductController {
 		// 验证产品名称、产品编码的唯一性
 		boolean result = false;
 		if (StringUtil.isNotBlank(model.getProductCode())) {
-			result = this.saasProductService.validProductCode(model.getProductType(), model.getProductCode(), null);
+			result = this.saasProductService.validProductCode(model.getAppId(), model.getProductType(), model.getProductCode(), null);
 			if (!result) {
 				return ResponseResultUtil.errorResult(ResponseCode.C0341.getCode(), "产品编码已存在");
 			}
 		}
-		result = this.saasProductService.validProductName(model.getProductType(),model.getProductName(), model.getId());
-		if (!result) {
-			return ResponseResultUtil.errorResult(ResponseCode.C0341.getCode(), "产品名称已存在");
+		String msg = this.saasProductService.validProductName(model.getAppId(), model.getProductType(),model.getProductName(), model.getId());
+		if (StringUtil.isNotBlank(msg)) {
+			return ResponseResultUtil.errorResult(ResponseCode.C0341.getCode(), msg);
 		}
 		SaasProduct saasProduct = new SaasProduct();
 		BeanUtils.copyProperties(model, saasProduct);

+ 7 - 4
saas-account/src/main/java/com/persagy/account/service/ISaasProductService.java

@@ -22,19 +22,22 @@ public interface ISaasProductService extends ISuperService<SaasProduct> {
 	
 	/**
 	 * 验证产品编码的唯一性
+	 * @param appId
 	 * @param productType
 	 * @param productCode
 	 * @param id
 	 */
-	boolean validProductCode(String productType, String productCode, String id);
+	boolean validProductCode(String appId, String productType, String productCode, String id);
 	
 	/**
-	 * 验证产品名称的唯一性
-	 * 
+	 * 验证产品名称的唯一性,同时验证该产品名称是否在菜单中已存在
+	 * 必须要求菜单类型与产品类型统一
+	 * @param appId
 	 * @param productName
 	 * @param id
+	 * @return 错误时,返回错误描述,否则返回 null
 	 */
-	boolean validProductName(String productType, String productName, String id);
+	String validProductName(String appId, String productType, String productName, String id);
 
 }
 

+ 17 - 9
saas-account/src/main/java/com/persagy/account/service/impl/SaasProductServiceImpl.java

@@ -37,14 +37,15 @@ public class SaasProductServiceImpl extends SuperServiceImpl<SaasProductMapper,
 			// 更新菜单图标为此产品的图标
 			LambdaUpdateWrapper<SaasMenu> updateWrapper = new SaasMenu.Builder().createUpdateWrapper().productId(saasProduct.getId()).builderUpdateWrapper();
 			updateWrapper.set(SaasMenu::getMenuIcon, saasProduct.getProductIcon());
+			updateWrapper.set(SaasMenu::getMenuName, saasProduct.getProductName());
 			this.saasMenuMapper.update(null, updateWrapper);
 		}
 		return SqlHelper.retBool(result);
 	}
 	
 	@Override
-	public boolean validProductCode(String productType, String productCode, String id) {
-		LambdaQueryWrapper<SaasProduct> queryWrapper = new SaasProduct.BuilderQueryWrapper().productTypeEq(productType).productCodeEq(productCode).builder();
+	public boolean validProductCode(String appId, String productType, String productCode, String id) {
+		LambdaQueryWrapper<SaasProduct> queryWrapper = new SaasProduct.BuilderQueryWrapper().appIdEq(appId).productTypeEq(productType).productCodeEq(productCode).builder();
 		SaasProduct selectOne = this.baseMapper.selectOne(queryWrapper);
 		if (selectOne == null) {
 			return true;
@@ -56,16 +57,23 @@ public class SaasProductServiceImpl extends SuperServiceImpl<SaasProductMapper,
 	}
 
 	@Override
-	public boolean validProductName(String productType, String productName, String id) {
-		LambdaQueryWrapper<SaasProduct> queryWrapper = new SaasProduct.BuilderQueryWrapper().productTypeEq(productType).productNameEq(productName).builder();
+	public String validProductName(String appId, String productType, String productName, String id) {
+		LambdaQueryWrapper<SaasProduct> queryWrapper = new SaasProduct.BuilderQueryWrapper().appIdEq(appId).productTypeEq(productType).productNameEq(productName).builder();
 		SaasProduct selectOne = this.baseMapper.selectOne(queryWrapper);
-		if (selectOne == null) {
-			return true;
+		if (selectOne != null) {
+			if (StringUtil.isBlank(id) || !id.equals(selectOne.getId())) {
+				return "产品名称已存在";
+			}
 		}
-		if (StringUtil.isNotBlank(id) && selectOne.getId().equals(id)) {
-			return true;
+		// 验证是否存在相同的菜单名称
+		LambdaQueryWrapper<SaasMenu> menuWrapper = new SaasMenu.Builder().createQueryWrapper().appIdEq(appId).menuTypeEq(productType).menuNameEq(productName).builderQueryWrapper();
+		SaasMenu saasMenu = this.saasMenuMapper.selectOne(menuWrapper);
+		if (saasMenu != null) {
+			if (StringUtil.isBlank(saasMenu.getProductId()) || !id.equals(saasMenu.getProductId())) {
+				return "产品名称已在菜单中存在,不能再被关联菜单,不允许添加此名称";
+			}
 		}
-		return false;
+		return null;
 	}
 
 }