国产一级a片免费看高清,亚洲熟女中文字幕在线视频,黄三级高清在线播放,免费黄色视频在线看

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費(fèi)電子書(shū)等14項(xiàng)超值服

開(kāi)通VIP
開(kāi)發(fā) IBM Lotus Domino Web 2.0 客戶機(jī)

Raj Balasubramanian, IT 架構(gòu)顧問(wèn), IBM

2006 年 11 月 27 日

使用 HTML 和 JavaScript 為 Lotus Domino 創(chuàng)建一個(gè) Web 2.0 風(fēng)格的瘦 Web 客戶機(jī)?;谝郧坝嘘P(guān) IBM Lotus Domino XML (DXL) 框架的文章,本文向您介紹如何使用 Ajax 擴(kuò)展 Notes/Domino 應(yīng)用程序。

在文章 “訪問(wèn) Notes/Domino 數(shù)據(jù)的定制 DXL 框架” 中,我向您介紹了 Lotus Domino XML (DXL) 框架。從這篇文章中,您學(xué)習(xí)了如何使用此 DXL 框架來(lái)允許其他應(yīng)用程序創(chuàng)建、查看和更新 Notes 文檔。之后通過(guò)三個(gè) LotusScript 代理,您又學(xué)習(xí)了如何查看 DXL 文檔、如何通過(guò) DXL 創(chuàng)建文檔以及如何通過(guò) DXL 更新文檔。

在另一篇文章 “為 Domino 構(gòu)建 JSR 168 門(mén)戶應(yīng)用程序” 中,您學(xué)習(xí)了如何使用 Java Specification Requests (JSR) 168 portlet 創(chuàng)建 Notes/Domino 數(shù)據(jù)庫(kù)的前端。

本文將繼續(xù)學(xué)習(xí) Lotus Domino DXL 框架,為 Lotus Notes/Domino Contacts 數(shù)據(jù)庫(kù)構(gòu)建一個(gè) Web 2.0 風(fēng)格的瘦 Web 客戶機(jī)。我們使用宿主在 Domino 服務(wù)器上用 CSS/JavaScript 構(gòu)建的平面式 HTML 文件訪問(wèn)使用 Ajax 的 Domino 數(shù)據(jù)庫(kù),另外,我們還會(huì)使用以前文章中的一些元素來(lái)創(chuàng)建此 Web 2.0 客戶機(jī)。

本文假設(shè)您是有經(jīng)驗(yàn)的 Notes/Domino 應(yīng)用程序開(kāi)發(fā)人員并了解 JavaScript。


什么是 Web 2.0?

Web 2.0 這個(gè)術(shù)語(yǔ)是由 Tim O‘Reilly 在 2005 年的一次會(huì)議上引入的。這個(gè)術(shù)語(yǔ)代表了下一代 Web 應(yīng)用程序,這些程序采用了正確的 Web 設(shè)計(jì)原則構(gòu)建并且利用了 HTTP 的簡(jiǎn)單性。一些常見(jiàn)的 Web 2.0 應(yīng)用程序包括 Google AdSense、Flickr 和博客。從那時(shí)起,便對(duì)這個(gè)術(shù)語(yǔ)進(jìn)行了概括,目的是形成一種 Web 應(yīng)用程序的概念和趨勢(shì)。其核心前提是這些 Web 應(yīng)用程序?qū)?Internet 用作它們的平臺(tái)并將功能作為服務(wù)公開(kāi),這些服務(wù)是根據(jù)用戶或其他應(yīng)用程序(換句話說(shuō),這些應(yīng)用程序使用這些服務(wù))的需要提供的,以便向用戶提供有意義的、內(nèi)容豐富的應(yīng)用程序。支持 Web 2.0 的應(yīng)用程序的技術(shù)和概念如下:

  • 最新的 Web 瀏覽器(Mozilla Firefox、Microsoft Internet Explorer 7 等等)
  • AJAX
  • JavaScript
  • DHTML
  • REST(REpresentational State Transfer,一種 Web 本身所基于的架構(gòu)樣式)

JavaScript:選中的語(yǔ)言

隨著 Web 2.0 風(fēng)格的應(yīng)用程序的普及,JavaScript 發(fā)揮了重要的作用。由于 JavaScript 是靈活的腳本語(yǔ)言,而且?guī)缀跄鼙凰?Web 瀏覽器解析,因此,可以對(duì)其進(jìn)行擴(kuò)展以包括面向?qū)ο蟮慕Y(jié)構(gòu),而且也可以用來(lái)構(gòu)建復(fù)雜的 Web 應(yīng)用程序。我們可以將 JavaScript 函數(shù)用作對(duì)象、方法以及傳統(tǒng)過(guò)程函數(shù)。您將看到如何在平面式 HTML 上采用 JavaScript 實(shí)現(xiàn) MVC (Model View Controller) 模式。







關(guān)于此應(yīng)用程序

Lotus Domino 的 Web 2.0 客戶機(jī)由一個(gè) HTML 文件和支持腳本、圖像以及樣式表組成。最好使用 Mozilla Firefox 查看此應(yīng)用程序。本文使用 Firefox 作為瀏覽器平臺(tái)。

圖 1 顯示了應(yīng)用程序的主頁(yè)面。這是用戶在自己的瀏覽器中打開(kāi) Web 2.0 客戶機(jī)之后首先看到的屏幕。


圖 1. Lotus Domino 的 Web 2.0 客戶機(jī)


可以單擊 Read Documents 或 Create Documents 鏈接。單擊 Read Documents 之后,會(huì)看到一個(gè)類(lèi)似于圖 2 的屏幕。在我們的示例中,顯示 Contacts 數(shù)據(jù)庫(kù)(基于 Lotus Notes Personal Address Book 模板的數(shù)據(jù)庫(kù))中的姓名和電子郵件地址。


圖 2. Read Documents 視圖


此時(shí),可以單擊 Create Document 或單擊其中一個(gè)條目查看更多詳細(xì)信息。讓我們單擊視圖中的第一個(gè)條目。出現(xiàn)圖 3 ,其中顯示 Contacts 數(shù)據(jù)庫(kù)中的關(guān)鍵文檔字段。


圖 3. 聯(lián)系信息


在左側(cè)提供了一個(gè)微型導(dǎo)航視圖,其中有姓名清單??梢赃x擇單擊微型導(dǎo)航視圖中的一個(gè)條目來(lái)查看此文檔的詳細(xì)信息,或者通過(guò)單擊 Edit 圖標(biāo)編輯顯示的文檔。然后,便可以編輯此文檔,單擊 Save 圖標(biāo)可保存更改。也可以通過(guò)單擊 Close 或者單擊其他任何鏈接來(lái)取消更改。

如果想創(chuàng)建一個(gè)文檔,則單擊菜單中的 Create Document 圖標(biāo)。這會(huì)彈出一個(gè)空白的表可用來(lái)創(chuàng)建新的文檔(參見(jiàn)圖 4)。可以在其中輸入必要的詳細(xì)信息并單擊 Save 以創(chuàng)建新的文檔。


圖 4. 創(chuàng)建聯(lián)系信息文檔


應(yīng)用程序中的文件

Lotus Domino 的 Web 2.0 客戶機(jī)由一個(gè) HTML 頁(yè)面和 JavaScript 支持文件組成,它們用于完成用戶執(zhí)行的各種操作。由級(jí)聯(lián)樣式表 (CSS) 和圖像控制顯示。圖 5 顯示了各種文件之間的關(guān)系。dxl.html 文件是一個(gè)平面式的 HTML 文件,它使用 style.css 格式化內(nèi)容的表現(xiàn)形式,使用 dojo.js、controller.js 和 model.js 執(zhí)行任務(wù)。


圖 5. 文件關(guān)系


所有這些文件都位于 ...data/domino/html 目錄下一個(gè)名為 web2.0 的目錄中。托管的 Domino 服務(wù)器在 Microsoft Windows XP 上運(yùn)行 V7.0.1。出于這里的應(yīng)用程序的需要,服務(wù)器還支持基本的 Web 身份驗(yàn)證。如果想啟用基于會(huì)話的身份驗(yàn)證,請(qǐng)參閱本文中后面的“部署”一節(jié)以獲得所需步驟。

除此之外,還會(huì)使用 “訪問(wèn) Notes/Domino 數(shù)據(jù)的定制 DXL 框架” 文章中介紹的 DXL 代理并將其導(dǎo)入到 Contacts 數(shù)據(jù)庫(kù)中。

設(shè)計(jì)原則

由于 JavaScript 有助于過(guò)程式編程,因此,可以使用傳統(tǒng)方法來(lái)構(gòu)造構(gòu)建應(yīng)用程序所需的各種函數(shù)。但是,它不容易維護(hù)。因而,您會(huì)希望構(gòu)建應(yīng)用程序就如同使用自己喜愛(ài)的 Web 應(yīng)用程序服務(wù)器(J2EE、Microsoft .NET、PHP 等等)構(gòu)建一個(gè)三層的 Web 應(yīng)用程序一樣。這意味著需要保持關(guān)注點(diǎn)分離,并且需要在部署單元內(nèi)像調(diào)用一樣分組。實(shí)際上,可以通過(guò)對(duì)瘦 Web 應(yīng)用程序應(yīng)用 Model View Controller 設(shè)計(jì)原則來(lái)實(shí)現(xiàn)這些目標(biāo)。

您可能還希望能夠盡可能多地堅(jiān)持 DRY(不要重復(fù)自己)這個(gè)原則。為了實(shí)現(xiàn)這個(gè)目標(biāo),可以使用 JavaScript 的閉包功能,該功能允許將函數(shù)視為數(shù)據(jù)來(lái)創(chuàng)建類(lèi)和對(duì)象。然后,可以定義要使用的類(lèi)和對(duì)象,采用的方法與我們?cè)?JSR-168 portlet 示例(請(qǐng)參閱文章 “為 Domino 構(gòu)建 JSR 168 門(mén)戶應(yīng)用程序” )中使用的方法基本相同。







表示設(shè)計(jì)

現(xiàn)在,來(lái)看看如何使用 MVC 構(gòu)建簡(jiǎn)單的 Web 應(yīng)用程序。圖 6 顯示了相關(guān)的對(duì)象、它們公開(kāi)的方法以及它們所屬的部署單元。

此視圖由主頁(yè) (dxl.html) 處理;它還具有 helper 函數(shù)以及用于維護(hù)信息的全局變量。主要視圖組件如下:

  • Menu 類(lèi):顯示 Read/Create Documents 的菜單項(xiàng)。
  • mainView 類(lèi):以表格格式處理 Domino 視圖信息的顯示。
  • miniView 類(lèi):在文檔顯示模式時(shí)處理導(dǎo)航視圖的顯示以便快速訪問(wèn)文檔。
  • doc 類(lèi):處理 Domino 文檔信息的顯示并提供進(jìn)行編輯、創(chuàng)建和保存的選項(xiàng)。

模型由模型 JavaScript 文件 (model.js) 中的代碼處理。它定義的主類(lèi)為 people(包含來(lái)自 Domino 視圖的信息)和 person(包含有關(guān) Domino 聯(lián)系信息文檔的信息)。

控制器由控制器 JavaScript 文件 (controller.js) 處理,并且包含執(zhí)行其工作所使用的幾種方法和屬性。此類(lèi)的主要方法為 action,它基于用戶執(zhí)行的操作處理視圖中應(yīng)顯示的相應(yīng)信息??刂破鬟€使用 Ajax 調(diào)用訪問(wèn)相應(yīng)的 Domino 資源、填充相應(yīng)的 model 對(duì)象并且將其傳遞給視圖進(jìn)行顯示。反過(guò)來(lái),視圖初始化控制器的實(shí)例并且指派所有操作和決定。

注意:理想情況下,可以將數(shù)據(jù)訪問(wèn)邏輯分隔到它自己的部署單元中并且保持控制器沒(méi)有被混雜。但是,為了簡(jiǎn)單起見(jiàn),我們選擇將其組合。作為練習(xí),您可以對(duì)代碼進(jìn)行重構(gòu)以將數(shù)據(jù)訪問(wèn)函數(shù)分離到單獨(dú)的文件中。


圖 6. 設(shè)計(jì)


一些常見(jiàn)過(guò)程的流程如圖 7 中所示。


圖 7. 流程表







相關(guān)代碼

這里不再詳細(xì)介紹整個(gè)應(yīng)用程序,而只關(guān)注一下應(yīng)用程序的突出點(diǎn)以及如何實(shí)現(xiàn) MVC 模式的部分。

按順序引用外部的 JS 文件

首先,dxl.html 文件以優(yōu)先順序加載 JavaScript 文件:

<script type="text/javascript" src="controller.js"></script>
<script type="text/javascript" src="model.js"></script>
<script type="text/javascript" src="dojo.js"></script>


建立關(guān)鍵的全局對(duì)象

下一步,應(yīng)用程序?qū)⒖刂破鲗?duì)象作為全局變量進(jìn)行實(shí)例化。這對(duì)設(shè)計(jì)非常關(guān)鍵,原因是用戶執(zhí)行的每個(gè)視圖操作都被發(fā)送到該控制器進(jìn)行處理。出于管理的目的(如查看字段中更改的值),應(yīng)用程序還建立了其他全局對(duì)象。代碼傳遞在此局部網(wǎng)頁(yè)中引用的控件的字符串值,以便在其顯示視圖對(duì)象時(shí)控制器對(duì)象可以引用該值。

<script language="JAVASCRIPT">
var html_control = new control("html_control");


將表示組件封裝為 JavaScript 對(duì)象

表示組件作為 JavaScript 對(duì)象實(shí)現(xiàn),由控制器對(duì)象進(jìn)行初始化。view/presentation 對(duì)象引用在上一步 ("html_control") 中創(chuàng)建的控制器對(duì)象名稱(chēng)。

function mainView(ob,controller){                        ....                        this.show=function(...){                        };                        this.hide=function(...){                        ...                        };                        }                        function miniView(ob,controller){                        ...                        ..                        }                        function doc(ob,controller){                        ...                        ..                        }                        

表示組件由 controller.js 中的控制對(duì)象實(shí)例化。

function control(str){                        ...                        this.mainview = new mainView(this.ob,this);                        this.doc = new doc(this.ob,this);                        this.miniview = new miniView(this.ob,this);                        ...                        }                        

使用瀏覽器 DOM 維護(hù)有關(guān)此元素的上下文

對(duì)于所有可操作的項(xiàng)目使用 <div> 標(biāo)記。利用可用的 DOM 屬性傳送上下文并將其作為用戶執(zhí)行操作的一部分進(jìn)行傳遞。在我們的示例中,我們已經(jīng)將文檔 UNID 定義為名稱(chēng)屬性值以傳送關(guān)于此元素的上下文。

<tr><td><a href="#" id="display_doc" name="‘
+u.unids[x]+‘" onclick="‘+controller.varname+‘
.action(this)">‘+u.names[x]+‘</a></td></tr>‘;


將視圖中的所有操作發(fā)送給控制器

將應(yīng)用程序中的任何鏈接或可操作的功能發(fā)送給向其自身傳遞引用的控制器。

<!--the view previous icon on the view page-->                        <input type="image" src="prev.gif" id="view_prev"                        onclick="‘+controller.varname+‘.action(this)"/>‘;                        <!-- the link in the view to show the doc details-->                        <a href="#" id="display_doc" name="‘+u.unids[x]+‘"                        onclick="‘+controller.varname+‘.action(this)">‘                        +u.names[x]+‘</a>                        

根據(jù)動(dòng)作和上下文作出所有決定并集中控制器中的邏輯。

執(zhí)行動(dòng)作時(shí)所需的核心邏輯作為控制對(duì)象的一部分被封裝到 action JavaScript 函數(shù)中。switch/case 語(yǔ)句用于指派正確的函數(shù)。

function control(str){                        ....                        ..                        this.action = function(u){                        if(u.id==‘‘){u.id=‘menu_read‘;};                        switch(u.id){                        case("menu_read"):                        {                        this.menu.move();                        this.startdoc=‘1‘;                        this.serialize(this.viewurl                        (this.startdoc,this.displaycount),                        this.showMainView, this.mainview);                        this.miniview.hide();                        }                        break;                        case("display_doc"):                        {                        // get doc details and redirect                        // to appropriate display                        ...                        }                        break;                        case("view_prev"):                        {                        // get next set of view entries                        // and show it in display                        ...                        }                        break;                        ...                        ...                        };                        }                        

定義可重新使用的對(duì)象,用于描述 Notes 視圖和 Notes 文檔

model.js 文件包含作為 JavaScript 函數(shù)實(shí)現(xiàn)的兩個(gè)對(duì)象:person 用于文檔,people 用于視圖。表示 (dxl.html) 只處理這些域?qū)ο???刂破鳎刂坪瘮?shù))負(fù)責(zé)將 Domino 服務(wù)器中的 XML/DXL 序列化為正確的值對(duì)象,反之亦然。

//People                        function people(){                        this.unids=[];                        this.names=[];                        this.emails=[];                        }                        //Person                        function person(){                        this.firstname=‘‘;                        this.lastname=‘‘;                        this.officecity=‘‘;                        this.officestate=‘‘;                        this.unid=‘‘;                        this.jobtitle=‘‘;                        this.companyname=‘‘;                        this.mailaddress=‘‘;                        }                        

將 Ajax 調(diào)用指派給庫(kù)/工具包

這里我們不需實(shí)現(xiàn)自定義的 Ajax 控件,使用 Dojo 工具包 [http://dojotoolkit.org/] 就可以了。這些調(diào)用被封裝在屬于控制對(duì)象的 JavaScript 函數(shù)中。

this.serialize =function(url, fn, fn1){                        dojo.io.bind({url: url,                        load: function(type,data,evt){fn(data, fn1);},                        error: function(type,error){alert                        ("reached in error"+error.toSource());},                        mimetype: "text/xml"                        });                        };                        

此處將其他 JavaScript 函數(shù)作為參數(shù)傳遞給 serialize 方法,此方法設(shè)置為在狀態(tài)更改的情況下被調(diào)用。在前述的這個(gè)代碼片段中,完成加載之后,從服務(wù)器返回的 XML 在 data 對(duì)象中被引用,此對(duì)象作為參數(shù)發(fā)送給最初傳遞的函數(shù)。這樣有助于重新使用??梢允褂孟嗤?serialize 方法顯示主視圖(顯示姓名和電子郵件這兩列)以及在查看文檔詳細(xì)信息時(shí)用于訪問(wèn)文檔的微型導(dǎo)航視圖。







安全性

正如您在下一節(jié)中將看到的,需要確保為 Domino 服務(wù)器上托管此應(yīng)用程序的文件夾指定了足夠的權(quán)限。此外,根據(jù)用戶的權(quán)限對(duì) Domino 數(shù)據(jù)庫(kù)執(zhí)行操作(創(chuàng)建、讀、編輯)。因此,訪問(wèn)此應(yīng)用程序的用戶組應(yīng)該在數(shù)據(jù)庫(kù) ACL 中具有相應(yīng)的權(quán)限以執(zhí)行必要的功能。與任何其他 Web 應(yīng)用程序一樣,如果用戶的機(jī)器的安全性受到威脅的話,最好結(jié)束瀏覽器會(huì)話以規(guī)避將來(lái)的安全隱患。







部署到服務(wù)器并進(jìn)行測(cè)試

使用以下提示將 Web 2.0 客戶機(jī)部署到 Lotus Domino 7 服務(wù)器:

  • 擁有一個(gè)基于 Notes Personal Address Book 模板且能正常工作的 Contacts 數(shù)據(jù)庫(kù)。
  • 確保將 ACL 設(shè)置為允許測(cè)試用戶創(chuàng)建/編輯文檔以及讀取視圖。
  • 安裝第一篇文章中的 LotusScript 代理并確保它們由授權(quán)的 Agent Signer 簽名。
  • 將本文中的文件解壓縮到 ...data/domino/html 目錄中。確保文件位于 html 目錄下名為 web2.0 的文件夾中。
  • 打開(kāi) controller.js 文件并將 control 函數(shù)中名為 this.dominourl 的變量編輯為 Domino 服務(wù)器的正確的 URL。

    注意:如果對(duì) Web 登錄啟用了基于會(huì)話的身份驗(yàn)證,則應(yīng)該使用正確的完全合格的主機(jī)名作為字符串的一部分。此外,如果 Domino 服務(wù)器正在偵聽(tīng)某個(gè)端口,而不是 80 端口,則還應(yīng)該確保指定正確的端口。

  • 對(duì)新創(chuàng)建的 web2.0 目錄建立文件保護(hù)。在 File Protection 文檔的 Basics 附簽上,接受默認(rèn)的選項(xiàng)并修改 access control 列表以確保將 domino/html/web2.0 目錄指定為 Path。在 Access Control 附簽上,確保 "Current access control list" 包括 No Access for Anonymous 和 POST and Get for Default(參見(jiàn)圖 8)。

圖 8. Access Control 附簽


總共就這些?,F(xiàn)在您便可以測(cè)試應(yīng)用程序了。步驟如下:

  • 打開(kāi) Mozilla Firefox。
  • 訪問(wèn) URL:http://your dominourl/web2.0/dxl.html。
  • 登錄之后,應(yīng)該能夠訪問(wèn)此應(yīng)用程序。






使之適合您自己的 Domino 應(yīng)用程序

根據(jù)以下指導(dǎo)調(diào)整 Web 2.0 客戶機(jī)使之適合您可能有的任何自定義的 Domino 數(shù)據(jù)庫(kù):

  • 編輯 model.js 中的 models 對(duì)象以反映您的應(yīng)用程序所代表的域。例如,假設(shè)此應(yīng)用程序是一個(gè)訂購(gòu)系統(tǒng)。如果您具有顯示訂單的 Domino 視圖并且文檔名為 order detail,則您很可能就會(huì)有一個(gè)名為 Orders 的 collection 對(duì)象和一個(gè)名為 OrderDetails 的 document 對(duì)象。
  • 編輯 controller.js 中的控件代碼以映射正確的 URL,編輯在 showMainView 和 showMiniView 函數(shù)中顯示的您所想要的視圖列映射。
  • 最后,編輯 mainView、miniView 以及 dxl.html 文件中的 doc 對(duì)象以反映來(lái)自第一項(xiàng)的 models 對(duì)象中的字段。






結(jié)束語(yǔ)

至此,您已經(jīng)了解了如何利用在第一篇文章中介紹的 DXL 框架構(gòu)建 Web 2.0 風(fēng)格的應(yīng)用程序以使其位于 Domino 數(shù)據(jù)庫(kù)的前端。您可以使用 Dojo 工具包的 UI 實(shí)用工具或任何其他 DHTML 方法使表示形式更加豐富。您還了解了如何使用關(guān)注點(diǎn)分離和最佳重用的設(shè)計(jì)模式構(gòu)造 Web 應(yīng)用程序。您可以仔細(xì)地閱讀代碼并且通過(guò)編輯 model.js、controller.js 和 dxl.html 文件使該應(yīng)用程序適用于特定的數(shù)據(jù)庫(kù)或其他 Domino 應(yīng)用程序。









下載

描述 名字 大小 下載方法
本文的示例腳本 web20.zip 45 KB HTTP
關(guān)于下載方法的信息
Get Adobe? Reader?


參考資料

學(xué)習(xí)

獲得產(chǎn)品和技術(shù)

討論


關(guān)于作者

 

Raj Balasubramanian 是 IBM Software Services for Lotus(ISSL)的 IT 架構(gòu)顧問(wèn)。他負(fù)責(zé)與客戶洽談提供應(yīng)用程序和與基礎(chǔ)設(shè)施有關(guān)的項(xiàng)目。在走訪客戶、閱讀數(shù)學(xué)書(shū)籍之余,他喜歡和他的兒子談?wù)摍C(jī)器人和新的火星漫游。

本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊舉報(bào)。
打開(kāi)APP,閱讀全文并永久保存 查看更多類(lèi)似文章
猜你喜歡
類(lèi)似文章
Lotus Domino 和 IBM WebSphere 集成解決方案: Domino JSP 標(biāo)簽庫(kù)
Domino_web開(kāi)發(fā)與管理
集成 IBM Lotus Domino 和 SAP
ODBC實(shí)現(xiàn)Domino和關(guān)系數(shù)據(jù)庫(kù)的互操作
Java 對(duì) Domino Objects 的訪問(wèn),第 1 部分
lotus 家族產(chǎn)品簡(jiǎn)介
更多類(lèi)似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長(zhǎng)圖 關(guān)注 下載文章
綁定賬號(hào)成功
后續(xù)可登錄賬號(hào)暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服