【问题标题】:How to output based on the input conditions如何根据输入条件输出
【发布时间】:2014-12-31 06:13:54
【问题描述】:

1)如果在 2 个不同的策略上有多个实例具有 CategoryCd = GL AND selectedInd = 'Y' AND deletedInd = 'Y',则 FAIL 并返回代码 FAILURE 和返回原因代码 MANYPOL

<policy VERSION_NO="1" MC_ID="66" ID="1">
    <businessGroupCdGvngOrgn>14</businessGroupCdGvngOrgn>
            <linesOfInsurance>
                <underlyingPolicy>
                    <PolicyNo>22</PolicyNo>
                    <deletedInd>Y</deletedInd>
                    <VersionNbr>2</VersionNbr>
                    <selectedInd>Y</selectedInd>
                    <CategoryCd>GL</CategoryCd>
                </underlyingPolicy>
                <underlyingPolicy ID="5">
                    <PolicyNo>22</PolicyNo>
                    <deletedInd>Y</deletedInd>
                    <VersionNbr>1</VersionNbr>
                    <selectedInd>N</selectedInd>
                    <CategoryCd>GL</CategoryCd>
                </underlyingPolicy>     
                <underlyingPolicy ID="4">
                    <PolicyNo>11</PolicyNo>
                    <deletedInd>N</deletedInd>
                    <VersionNbr>2</VersionNbr>
                    <selectedInd>Y</selectedInd>
                    <CategoryCd>GL</CategoryCd>
                </underlyingPolicy>
                <underlyingPolicy ID="3">
                    <PolicyNo>11</PolicyNo>
                    <deletedInd>Y</deletedInd>
                    <VersionNbr>1</VersionNbr>
                    <selectedInd>Y</selectedInd>
                    <CategoryCd>GL</CategoryCd>
                </underlyingPolicy>     
            </linesOfInsurance>
        </policy>
Expected O/P:
<AdaptikXML>
    <PWResponse>
        <ReturnCode>FAILURE</ReturnCode>
        <ReturnReasonCode>MANYPOL</ReturnReasonCode>
        <PWData>
            <policy VERSION_NO="1" MC_ID="66"/>
        </PWData>
    </PWResponse>
</AdaptikXML>
--------------------------------------------------------------------------------

2) 如果在同一策略上有多个具有基础策略类别 Cd = GL AND selectedInd = 'Y' 和 deletedInd = 'Y' 的实例,则 FAIL 并返回代码 FAILURE 并返回原因代码 MANY

<policy VERSION_NO="1" MC_ID="34">
    <businessGroupCd>14</businessGroupCd>
            <linesOfInsurance>
                <underlyingPolicy>
                    <PolicyNo>22</PolicyNo>
                    <deletedInd>Y</deletedInd>
                    <VersionNbr>2</VersionNbr>
                    <selectedInd>N</selectedInd>
                    <CategoryCd>GL</CategoryCd>
                </underlyingPolicy>
                <underlyingPolicy ID="5">
                    <PolicyNo>22</PolicyNo>
                    <deletedInd>Y</deletedInd>
                    <VersionNbr>1</VersionNbr>
                    <selectedInd>N</selectedInd>
                    <CategoryCd>GL</CategoryCd>
                </underlyingPolicy>     
                <underlyingPolicy ID="4">
                    <PolicyNo>11</PolicyNo>
                    <deletedInd>Y</deletedInd>
                    <VersionNbr>2</VersionNbr>
                    <selectedInd>Y</selectedInd>
                    <CategoryCd>GL</CategoryCd>
                </underlyingPolicy>
                <underlyingPolicy ID="3">
                    <PolicyNo>11</PolicyNo>
                    <deletedInd>Y</deletedInd>
                    <VersionNbr>1</VersionNbr>
                    <selectedInd>Y</selectedInd>
                    <CategoryCd>GL</CategoryCd>
                </underlyingPolicy>     
            </linesOfInsurance>
        </policy>
Expected O/P:
<AdaptikXML>
        <PWResponse>
            <ReturnCode>FAILURE</ReturnCode>
            <ReturnReasonCode>MANY</ReturnReasonCode>
            <PWData>
                <policy VERSION_NO="1" MC_ID="34"/>
            </PWData>
        </PWResponse>    
</AdaptikXML>
--------------------------------------------------------------------------------

3) 如果 MANYPOL 和 MANY 条件都为真,则应返回 MANYPOL(这意味着您可以先检查 MANYPOL 条件,如果为真,则可以停止处理并返回

<policy VERSION_NO="1" MC_ID="66">
    <businessGroupCdGvngOrgn>14</businessGroupCdGvngOrgn>
            <linesOfInsurance>
                <underlyingPolicy>
                    <PolicyNo>22</PolicyNo>
                    <deletedInd>Y</deletedInd>
                    <VersionNbr>2</VersionNbr>
                    <selectedInd>Y</selectedInd>
                    <CategoryCd>GL</CategoryCd>
                </underlyingPolicy>
                <underlyingPolicy ID="5">
                    <PolicyNo>22</PolicyNo>
                    <deletedInd>Y</deletedInd>
                    <VersionNbr>1</VersionNbr>
                    <selectedInd>N</selectedInd>
                    <CategoryCd>GL</CategoryCd>
                </underlyingPolicy>     
                <underlyingPolicy ID="4">
                    <PolicyNo>11</PolicyNo>
                    <deletedInd>Y</deletedInd>
                    <VersionNbr>2</VersionNbr>
                    <selectedInd>Y</selectedInd>
                    <CategoryCd>GL</CategoryCd>
                </underlyingPolicy>
                <underlyingPolicy ID="3">
                    <PolicyNo>11</PolicyNo>
                    <deletedInd>Y</deletedInd>
                    <VersionNbr>1</VersionNbr>
                    <selectedInd>Y</selectedInd>
                    <CategoryCd>GL</CategoryCd>
                </underlyingPolicy>     
            </linesOfInsurance>
        </policy>
EXPECTED O/P:
    <AdaptikXML>
        <PWResponse>
            <ReturnCode>FAILURE</ReturnCode>
            <ReturnReasonCode>MANYPOL</ReturnReasonCode>
            <PWData>
                <policy VERSION_NO="1" MC_ID="66"/>
            </PWData>
        </PWResponse>
</AdaptikXML>

4)如果没有底层PolicyCategoryCd = GL AND selectedInd = 'Y' AND deletedInd = 'Y' 的实例,则返回代码= SUCCESS 并返回原因代码NOCHANGE

<policy VERSION_NO="1" MC_ID="56">
      <businessGroupCdGvngOrgn>14</businessGroupCdGvngOrgn>
        <linesOfInsurance>
            <underlyingPolicy ID="8">
                <PolicyNo>33</PolicyNo>
                <deletedInd>N</deletedInd>
                <VersionNbr>2</VersionNbr>
                <selectedInd>Y</selectedInd>
                <CategoryCd>AL</CategoryCd>
            </underlyingPolicy>
            <underlyingPolicy ID="7">
                <PolicyNo>33</PolicyNo>
                <deletedInd>Y</deletedInd>
                <VersionNbr>1</VersionNbr>
                <selectedInd>N</selectedInd>
                <CategoryCd>AL</CategoryCd>
            </underlyingPolicy>         
            <underlyingPolicy>
                <PolicyNo>22</PolicyNo>
                <deletedInd>Y</deletedInd>
                <VersionNbr>2</VersionNbr>
                <selectedInd>N</selectedInd>
                <CategoryCd>GL</CategoryCd>
            </underlyingPolicy>
            <underlyingPolicy ID="5">
                <PolicyNo>22</PolicyNo>
                <deletedInd>Y</deletedInd>
                <VersionNbr>1</VersionNbr>
                <selectedInd>N</selectedInd>
                <CategoryCd>GL</CategoryCd>
            </underlyingPolicy>     
            <underlyingPolicy ID="4">
                <PolicyNo>11</PolicyNo>
                <deletedInd>N</deletedInd>
                <VersionNbr>2</VersionNbr>
                <selectedInd>Y</selectedInd>
                <CategoryCd>GL</CategoryCd>
            </underlyingPolicy>
            <underlyingPolicy ID="3">
                <PolicyNo>11</PolicyNo>
                <deletedInd>Y</deletedInd>
                <VersionNbr>1</VersionNbr>
                <selectedInd>N</selectedInd>
                <CategoryCd>GL</CategoryCd>
            </underlyingPolicy>     
        </linesOfInsurance>
    </policy>
Expected O/P:
<AdaptikXML>
    <PWResponse>
        <ReturnCode>SUCCESS</ReturnCode>
        <ReturnReasonCode>NOCHANGE</ReturnReasonCode>
        <ReturnMessage/>
        <PWData>
            <policy VERSION_NO="1" MC_ID="56"/>
        </PWData>
    </PWResponse>
</AdaptikXML>

测试用例 3 - 2 个 GL 政策,每个政策有 2 个报价版本。策略 22 版本 1 选择了 Ind = 'Y' AND deletedInd = 'Y',策略 11 版本 1 选择了 Ind = 'Y' AND deletedInd = 'N'。其他 2 个版本已 selectedInd = 'N' AND deletedInd = 'Y'。最终结果应该是 Policy 22 version 1 has selectedInd = 'Y' AND deletedInd = 'N' 并且 policy 11 version 1 has selectedInd = 'N' AND deletedInd = 'Y'。

<policy VERSION_NO="1" MC_ID="66">
    <businessGroupCdGvngOrgn>14</businessGroupCdGvngOrgn>
    <linesOfInsurance>            <underlyingPolicy>
            <PolicyNo>22</PolicyNo>
            <deletedInd>Y</deletedInd>
            <VersionNbr>2</VersionNbr>
            <selectedInd>N</selectedInd>
            <CategoryCd>GL</CategoryCd>
        </underlyingPolicy>
        <underlyingPolicy ID="5">
            <PolicyNo>22</PolicyNo>
            <deletedInd>Y</deletedInd>
            <VersionNbr>1</VersionNbr>
            <selectedInd>Y</selectedInd>
            <CategoryCd>GL</CategoryCd>
        </underlyingPolicy>     
        <underlyingPolicy ID="4">
            <PolicyNo>11</PolicyNo>
            <deletedInd>Y</deletedInd>
            <VersionNbr>2</VersionNbr>
            <selectedInd>N</selectedInd>
            <CategoryCd>GL</CategoryCd>
        </underlyingPolicy>
        <underlyingPolicy ID="3">
            <PolicyNo>11</PolicyNo>
            <deletedInd>N</deletedInd>
            <VersionNbr>1</VersionNbr>
            <selectedInd>Y</selectedInd>
            <CategoryCd>GL</CategoryCd>
        </underlyingPolicy>     
    </linesOfInsurance>
</policy>

预期的 O/P:

<AdaptikXML>
    <PWResponse>
        <ReturnCode>SUCCESS</ReturnCode>
        <ReturnReasonCode>CHANGE</ReturnReasonCode>
        <ReturnMessage/>
        <PWData>
            <policy VERSION_NO="1" MC_ID="66" ExtAction="U">
                <linesOfInsurance ExtAction="U">
                    <underlyingPolicy ID="5" ExtAction="U">
                        <PolicyNo>22</PolicyNo>
                        <VersionNbr>1</VersionNbr>
                        <selectedInd>Y</selectedInd>
                        <deletedInd>N</deletedInd>
                    </underlyingPolicy>
                    <underlyingPolicy ID="3" ExtAction="U">
                        <PolicyNo>11</PolicyNo>
                        <VersionNbr>1</VersionNbr>
                        <selectedInd>N</selectedInd>
                        <deletedInd>Y</deletedInd>
                    </underlyingPolicy>
                </linesOfInsurance>
            </policy>
        </PWData>
    </PWResponse>
</AdaptikXML>

-_________________________________________________________________________________________________

测试用例 4 - 2 个 AL 策略,1 个带有 2 个引用版本,1 个带有 3。策略 33 版本 1 已选择Ind = 'Y' AND deletedInd = 'Y',策略 44 版本 2 已选择Ind = 'Y' AND deletedInd ='是'。最终结果应该是 Policy 33 版本 1 和 Policy 44 版本 2 已选择 Ind = 'Y' AND deletedInd = 'N'。策略 33 版本 2 和策略 44 版本 1 已选择 Ind = 'N' AND deletedInd = 'Y'。政策 44 第 3 版保持不变(selectedInd = 'N' AND deletedInd = 'Y')

    <policy VERSION_NO="1" MC_ID="55">        
<businessGroupCdGvngOrgn>14</businessGroupCdGvngOrgn>
        <linesOfInsurance>            
<underlyingPolicy ID="7">
                <PolicyNo>44</PolicyNo>
                <deletedInd>Y</deletedInd>
                <VersionNbr>3</VersionNbr>
                <selectedInd>N</selectedInd>
                <CategoryCd>AL</CategoryCd>
            </underlyingPolicy>     
            <underlyingPolicy>
                <PolicyNo>44</PolicyNo>
                <deletedInd>Y</deletedInd>
                <VersionNbr>2</VersionNbr>
                <selectedInd>Y</selectedInd>
                <CategoryCd>AL</CategoryCd>
            </underlyingPolicy>
            <underlyingPolicy ID="5">
                <PolicyNo>44</PolicyNo>
                <deletedInd>N</deletedInd>
                <VersionNbr>1</VersionNbr>
                <selectedInd>Y</selectedInd>
                <CategoryCd>AL</CategoryCd>
            </underlyingPolicy>     
            <underlyingPolicy ID="4">
                <PolicyNo>33</PolicyNo>
                <deletedInd>N</deletedInd>
                <VersionNbr>2</VersionNbr>
                <selectedInd>Y</selectedInd>
                <CategoryCd>AL</CategoryCd>
            </underlyingPolicy>
            <underlyingPolicy ID="3">
                <PolicyNo>33</PolicyNo>
                <deletedInd>Y</deletedInd>
                <VersionNbr>1</VersionNbr>
                <selectedInd>Y</selectedInd>
                <CategoryCd>AL</CategoryCd>
            </underlyingPolicy>     
        </linesOfInsurance>
    </policy>

预期 o/p:

<AdaptikXML>
    <PWResponse>
        <ReturnCode>SUCCESS</ReturnCode>
        <ReturnReasonCode>CHANGE</ReturnReasonCode>
        <ReturnMessage/>
        <PWData>
            <policy VERSION_NO="1" MC_ID="55" ExtAction="U">
                <linesOfInsurance ExtAction="U">
                    <underlyingPolicy ExtAction="U">
                        <PolicyNo>44</PolicyNo>
                        <VersionNbr>2</VersionNbr>
                        <selectedInd>Y</selectedInd>
                        <deletedInd>N</deletedInd>
                    </underlyingPolicy>
                    <underlyingPolicy ID="5" ExtAction="U">
                        <PolicyNo>44</PolicyNo>
                        <VersionNbr>1</VersionNbr>
                        <selectedInd>N</selectedInd>
                        <deletedInd>Y</deletedInd>
                    </underlyingPolicy>
                    <underlyingPolicy ID="4" ExtAction="U">
                        <PolicyNo>33</PolicyNo>
                        <VersionNbr>2</VersionNbr>
                        <selectedInd>N</selectedInd>
                        <deletedInd>Y</deletedInd>
                    </underlyingPolicy>
                    <underlyingPolicy ID="3" ExtAction="U">
                        <PolicyNo>33</PolicyNo>
                        <VersionNbr>1</VersionNbr>
                        <selectedInd>Y</selectedInd>
                        <deletedInd>N</deletedInd>
                    </underlyingPolicy>                 
                </linesOfInsurance>
            </policy>
        </PWData>
    </PWResponse>
</AdaptikXML>

测试用例 5 - 最终结果应该是 Policy 22 version 1 has selectedInd = 'Y' AND deletedInd = 'N' 并且 policy 11 version 1 has selectedInd = 'N' AND deletedInd = 'Y'。策略 33 版本 1 和策略 44 版本 2 已选择 Ind = 'Y' AND deletedInd = 'N'。策略 33 版本 2 和策略 44 版本 1 已选择 Ind = 'N' AND deletedInd = 'Y'。

<policy VERSION_NO="1" MC_ID="89">
    <businessGroupCdGvngOrgn>14</businessGroupCdGvngOrgn>
    <linesOfInsurance>
        <underlyingPolicy ID="10">
            <PolicyNo>44</PolicyNo>
            <deletedInd>Y</deletedInd>
            <VersionNbr>2</VersionNbr>
            <selectedInd>Y</selectedInd>
            <CategoryCd>AL</CategoryCd>
        </underlyingPolicy>
        <underlyingPolicy ID="9">
            <PolicyNo>44</PolicyNo>
            <deletedInd>N</deletedInd>
            <VersionNbr>1</VersionNbr>
            <selectedInd>Y</selectedInd>
            <CategoryCd>AL</CategoryCd>
        </underlyingPolicy>     
        <underlyingPolicy ID="8">
            <PolicyNo>33</PolicyNo>
            <deletedInd>N</deletedInd>
            <VersionNbr>2</VersionNbr>
            <selectedInd>Y</selectedInd>
            <CategoryCd>AL</CategoryCd>
        </underlyingPolicy>
        <underlyingPolicy ID="7">
            <PolicyNo>33</PolicyNo>
            <deletedInd>Y</deletedInd>
            <VersionNbr>1</VersionNbr>
            <selectedInd>Y</selectedInd>
            <CategoryCd>AL</CategoryCd>
        </underlyingPolicy>
        <underlyingPolicy>
            <PolicyNo>22</PolicyNo>
            <deletedInd>Y</deletedInd>
            <VersionNbr>2</VersionNbr>
            <selectedInd>N</selectedInd>
            <CategoryCd>GL</CategoryCd>
        </underlyingPolicy>
        <underlyingPolicy ID="5">
            <PolicyNo>22</PolicyNo>
            <deletedInd>Y</deletedInd>
            <VersionNbr>1</VersionNbr>
            <selectedInd>Y</selectedInd>
            <CategoryCd>GL</CategoryCd>
        </underlyingPolicy>     
        <underlyingPolicy ID="4">
            <PolicyNo>11</PolicyNo>
            <deletedInd>Y</deletedInd>
            <VersionNbr>2</VersionNbr>
            <selectedInd>N</selectedInd>
            <CategoryCd>GL</CategoryCd>
        </underlyingPolicy>
        <underlyingPolicy ID="3">
            <PolicyNo>11</PolicyNo>
            <deletedInd>N</deletedInd>
            <VersionNbr>1</VersionNbr>
            <selectedInd>Y</selectedInd>
            <CategoryCd>GL</CategoryCd>
        </underlyingPolicy>                 
    </linesOfInsurance>
</policy>

预期的 O/P:

<AdaptikXML>
    <PWResponse>
        <ReturnCode>SUCCESS</ReturnCode>
        <ReturnReasonCode>CHANGE</ReturnReasonCode>
        <ReturnMessage/>
        <PWData>
            <policy VERSION_NO="1" MC_ID="89" ExtAction="U">
                <linesOfInsurance ExtAction="U">
                    <underlyingPolicy ID="5" ExtAction="U">
                        <PolicyNo>22</PolicyNo>
                        <VersionNbr>1</VersionNbr>
                        <selectedInd>Y</selectedInd>
                        <deletedInd>N</deletedInd>
                    </underlyingPolicy>
                    <underlyingPolicy ID="3" ExtAction="U">
                        <PolicyNo>11</PolicyNo>
                        <VersionNbr>1</VersionNbr>
                        <selectedInd>N</selectedInd>
                        <deletedInd>Y</deletedInd>
                    </underlyingPolicy>
                    <underlyingPolicy ID="10" ExtAction="U">
                        <PolicyNo>44</PolicyNo>
                        <VersionNbr>2</VersionNbr>
                        <selectedInd>Y</selectedInd>
                        <deletedInd>N</deletedInd>
                    </underlyingPolicy>
                    <underlyingPolicy ID="9" ExtAction="U">
                        <PolicyNo>44</PolicyNo>
                        <VersionNbr>1</VersionNbr>
                        <selectedInd>N</selectedInd>
                        <deletedInd>Y</deletedInd>
                    </underlyingPolicy>
                    <underlyingPolicy ID="8" ExtAction="U">
                        <PolicyNo>33</PolicyNo>
                        <VersionNbr>2</VersionNbr>
                        <selectedInd>N</selectedInd>
                        <deletedInd>Y</deletedInd>
                    </underlyingPolicy>
                    <underlyingPolicy ID="7" ExtAction="U">
                        <PolicyNo>33</PolicyNo>
                        <VersionNbr>1</VersionNbr>
                        <selectedInd>Y</selectedInd>
                        <deletedInd>N</deletedInd>
                    </underlyingPolicy>                                 
            </policy>
        </PWData>
    </PWResponse>
</AdaptikXML>

【问题讨论】:

  • 不谈细节,你得到的输出是什么?哪种情况不起作用?
  • 我得到第二个场景输出,但不是 1 和 3。

标签: xml xslt xslt-1.0


【解决方案1】:

您的样式表看起来不仅仅是检查“MANYPOL”和“MANY”,但我将只关注手头的任务......

考虑使用键通过相关指标查找underlyingPolicy元素

<xsl:key name="policy" 
         match="underlyingPolicy" 
         use="concat(CategoryCd, '|', selectedInd, '|', deletedInd)" />

然后,您可以测试是否有两个具有相同指标的不同保单编号,如下所示:

<xsl:when test="linesOfInsurance/underlyingPolicy
                   [PolicyNo != key('policy', concat(CategoryCd, '|', selectedInd, '|', deletedInd))/PolicyNo]">

这会给你MANYPOL 结果。

现在,您可能想通过将“不等于”更改为“等于”来检查 MANY

<xsl:when test="linesOfInsurance/underlyingPolicy
                   [PolicyNo = key('policy', concat(CategoryCd, '|', selectedInd, '|', deletedInd))/PolicyNo]">

但这不起作用,因为它会将当前的underlyingPolicy 元素与自身匹配!相反,创建第二个密钥,其中包含 PolicyNo

<xsl:key name="policy_with_no" 
         match="underlyingPolicy" 
         use="concat(PolicyNo, '|', CategoryCd, '|', selectedInd, '|', deletedInd)" />

然后你可以检查是否有多个相同数量的策略共享相同的指标,像这样:

 <xsl:when test="linesOfInsurance/underlyingPolicy
                    [key('policy_with_no', concat(PolicyNo, '|',CategoryCd, '|', selectedInd, '|', deletedInd))[2]]">

通过使用xsl:choose,首先评估第一个xsl:when,因此将始终输出MANYPOL,即使MANY 也是如此。

试试这个 XSLT

<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0" >
    <xsl:output method="xml" indent="yes" />

    <xsl:key name="policy" match="underlyingPolicy" use="concat(CategoryCd, '|', selectedInd, '|', deletedInd)" />
    <xsl:key name="policy_with_no" match="underlyingPolicy" use="concat(PolicyNo, '|', CategoryCd, '|', selectedInd, '|', deletedInd)" />

    <xsl:template match="/policy">
        <PWResponse>
            <xsl:choose>
                <xsl:when test="linesOfInsurance/underlyingPolicy[PolicyNo != key('policy', concat(CategoryCd, '|', selectedInd, '|', deletedInd))/PolicyNo]">
                    <ReturnCode>FAILURE</ReturnCode>
                    <ReturnReasonCode>MANYPOL</ReturnReasonCode>
                </xsl:when>
                <xsl:when test="linesOfInsurance/underlyingPolicy[key('policy_with_no', concat(PolicyNo, '|',CategoryCd, '|', selectedInd, '|', deletedInd))[2]]">
                    <ReturnCode>FAILURE</ReturnCode>
                    <ReturnReasonCode>MANYPOL</ReturnReasonCode>
                </xsl:when>
                <xsl:otherwise>
                    <ReturnCode>SUCCESS</ReturnCode>
                    <ReturnReasonCode></ReturnReasonCode>
                </xsl:otherwise>
            </xsl:choose>
        </PWResponse>
    </xsl:template>
</xsl:stylesheet>

【讨论】:

  • 非常感谢蒂姆。我明白了这个概念,还有 3 个案例让我很困惑。你也能帮忙吗。我将添加输入和预期输出。
  • 如果你能把你的问题放回原来的样子,并在你的新案例中提出一个全新的问题,这可能会更好。谢谢。
  • 谢谢蒂姆,将用新的测试用例放回问题。
  • 嗨蒂姆,请检查我已添加所有测试用例。非常感谢您的帮助
  • 我的意思是将新案例放在一个全新的问题中。最初的问题已被回答并接受,因此在此阶段添加新案例会令人困惑。谢谢!
猜你喜欢
  • 1970-01-01
  • 2019-01-13
  • 2021-12-21
  • 1970-01-01
  • 2020-11-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多