From 62912360e21e8b48c7898b7f3885e22941bd5726 Mon Sep 17 00:00:00 2001 From: Starryi Date: Fri, 11 Feb 2022 18:53:41 +0800 Subject: [PATCH] =?UTF-8?q?REPORT-66304=20=E3=80=90=E7=BB=84=E4=BB=B6?= =?UTF-8?q?=E5=95=86=E5=9F=8E=E9=A3=8E=E6=A0=BC=E4=BC=98=E5=8C=96=E3=80=91?= =?UTF-8?q?=E4=B8=8B=E8=BD=BD=E5=AD=98=E5=9C=A8=E9=AB=98=E7=89=88=E6=9C=AC?= =?UTF-8?q?=E7=BB=84=E4=BB=B6=E7=9A=84=E7=BB=84=E4=BB=B6=E5=8C=85=EF=BC=8C?= =?UTF-8?q?=E6=8F=90=E7=A4=BA=E5=92=8C=E6=95=88=E6=9E=9C=E8=B7=9F=E8=AE=BE?= =?UTF-8?q?=E8=AE=A1=E4=B8=8D=E7=AC=A6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 【问题原因】 使用组件包的designerVersion来判断兼容性不可靠,需要依次检查其中的每个组件的 兼容性 【改动思路】 同上 --- .../mini/bridge/NativeProductBridge.java | 19 ++++++++++++++----- .../mainframe/share/util/OnlineShopUtils.java | 7 ++++++- 2 files changed, 20 insertions(+), 6 deletions(-) diff --git a/designer-form/src/main/java/com/fr/design/mainframe/share/ui/online/mini/bridge/NativeProductBridge.java b/designer-form/src/main/java/com/fr/design/mainframe/share/ui/online/mini/bridge/NativeProductBridge.java index a57968174..e9daf3e0e 100644 --- a/designer-form/src/main/java/com/fr/design/mainframe/share/ui/online/mini/bridge/NativeProductBridge.java +++ b/designer-form/src/main/java/com/fr/design/mainframe/share/ui/online/mini/bridge/NativeProductBridge.java @@ -13,6 +13,7 @@ import com.fr.design.mainframe.share.ui.online.installation.ComponentInstallatio import com.fr.design.mainframe.share.ui.online.installation.ComponentsPackageInstallation; import com.fr.design.mainframe.share.ui.online.installation.TemplateThemeInstallation; import com.fr.design.mainframe.share.ui.online.mini.MiniComponentShopDialog; +import com.fr.design.mainframe.share.util.OnlineShopUtils; import com.fr.form.share.Group; import com.fr.form.share.SharableWidgetProvider; import com.fr.form.share.bean.OnlineShareWidget; @@ -306,23 +307,31 @@ public class NativeProductBridge { @Override public void run() { boolean allowedDownload; - if (!widget.isCompatibleWithCurrentEnv()) { - int result = FineJOptionPane.showConfirmDialog( + OnlineShareWidget[] childrenWidgets = OnlineShopUtils.getPackageWidgets(widget, false); + boolean isCompatibleWithCurrentEnv = true; + for (OnlineShareWidget children: childrenWidgets) { + if (!children.isCompatibleWithCurrentEnv()) { + isCompatibleWithCurrentEnv = false; + break; + } + } + int result; + if (!isCompatibleWithCurrentEnv) { + result = FineJOptionPane.showConfirmDialog( MiniComponentShopDialog.getInstance().getContentPane(), Toolkit.i18nText("Fine-Design_Share_Online_Mini_Shop_Download_Incompatible_Components_Package_Tip", childrenCount), "", FineJOptionPane.YES_NO_OPTION ); - allowedDownload = result == JOptionPane.YES_OPTION; } else { - int result = FineJOptionPane.showConfirmDialog( + result = FineJOptionPane.showConfirmDialog( MiniComponentShopDialog.getInstance().getContentPane(), Toolkit.i18nText("Fine-Design_Share_Online_Mini_Shop_Download_Components_Package_Tip", childrenCount), "", FineJOptionPane.YES_NO_OPTION ); - allowedDownload = result == JOptionPane.YES_OPTION; } + allowedDownload = result == JOptionPane.YES_OPTION; if (allowedDownload) { fireStartEvent(null); action.install(); diff --git a/designer-form/src/main/java/com/fr/design/mainframe/share/util/OnlineShopUtils.java b/designer-form/src/main/java/com/fr/design/mainframe/share/util/OnlineShopUtils.java index d0fbd83d5..fef0caed2 100644 --- a/designer-form/src/main/java/com/fr/design/mainframe/share/util/OnlineShopUtils.java +++ b/designer-form/src/main/java/com/fr/design/mainframe/share/util/OnlineShopUtils.java @@ -256,7 +256,12 @@ public class OnlineShopUtils { } public static OnlineShareWidget[] getPackageWidgets(OnlineShareWidget widgetPackage) { - String plistUrl = getPackageChildrenPath() + widgetPackage.getId() + "?designerVersion="+ ProductConstants.RELEASE_VERSION; + return getPackageWidgets(widgetPackage, true); + } + + public static OnlineShareWidget[] getPackageWidgets(OnlineShareWidget widgetPackage, boolean requireCompatible) { + String targetDesignerVersion = requireCompatible ? ProductConstants.RELEASE_VERSION : "0"; + String plistUrl = getPackageChildrenPath() + widgetPackage.getId() + "?designerVersion="+ targetDesignerVersion; OnlineShareWidget[] widgets = getOnlineShareWidgets(plistUrl); for (OnlineShareWidget widget : widgets) { widget.setParentPackage(widgetPackage);