版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
1、Hipay系統(tǒng)自助終端頁面開發(fā)流程和規(guī)范一:Hipay頁面開發(fā)1名目結構:1.1:頂層名目結構圖(1)所示App licatio ns:名目里放著我們創(chuàng)建的應用板塊。 Framework:里是Hi pay系統(tǒng)應用,包含實體和服務板塊 Base:里放著啟動,容器和配置和組件加載等公共類。D FrmtvorkData:是Hi pay內(nèi)建的數(shù)據(jù)庫。$ I iaipLicitiantj1* bar6或 5屯=t. j 2ki p iy. I at; J軻IHS-DDS 批處理文件吃 K& 1 KBUogs: 是系B日志文件夾。 iHaysbat是啟動文件|圖(1)圖(2)所示1.2: applicat
2、ions 名目Accounting :帳務治理,支付信息,發(fā)票等。Con te nt :內(nèi)容治理,調(diào)查等。Ecommerce :電子商務應用。Order :訂單治理。Party :人員組織治理Securityext :安全治理拓展P roduct :產(chǎn)品治理。Cmposent-load.xm/。板塊加載配置文件pixtr-L J iEuid.zLproiKal諭 razeor hrn藝刊i:cwr-MieM-loil jerlXWL2 tB圖(2)1.3: ecommerce 名目 圖(3)所示Src : java源文件。Config :配置文件,要緊是多語言的配置文件Data :系統(tǒng)運行時需
3、要導入的數(shù)據(jù)文件Scr ip t : Hip ay 系統(tǒng) mi ni-la ng 文件(簡單 Java 方法) Temp lates :模板頁面Weba pp : web服務需要用到的頁面和腳本W(wǎng)idget :用xml描述的頁面畫1缽1 :用ant工具編譯src文件夾的源文件生成的oSSes文件和jar包放在build中。_LgntSton e-co mponn t/x簾空璉子商務板塊加載(?* build, xmlI三 XML pQcmienl.|三地址 )Ihip礦icMGpplimtiQrs圖(3)匸J catalog.1.4: webapp 名 目iWebapp下有一個應用文件夾為bi
4、i遼 d.艾nil XML Docunentgi ants tone-comp o -. XML Document配置文件。I二)Hid事 tcontento customerecommerce,其名目結構如圖曲(4)所main ftL FTl文件示: shofpinsistH 1 WEE-IHF除了 WEB INF文件夾以外, 件差不多上以樣為后1EB其他的文件差不多上頁面文件, freemaker模板頁面。in KE圖(4)1.5: WEB INF名目如圖(5)所示Actions:栄統(tǒng)腳本文件夾_,beanshell腳本地址迦to F :hipa;ji clcVappli cati cii
5、isecommercehebappecommerceWEB一HHF contr6ller.xml :流程操縱器_r.xmjs:網(wǎng)站參數(shù)設置iOTitr ollftr. ihl KHL Do cum ent 66 EBxab. wulJML Document E KB.圖,地ill: Q? aF Atij s廠ietc、ajpliatiunsSewsbap?號wmnercWES-H7acti,ns,1.6: actio ns 名目廠如圖(6)二廠八;課-/ cataloe contentL其文件結構和圖(期 中的ftl頁面結構是對應的。j例如講顯示購物車信息的頁面showcart.肚放在圖(4)
6、cart文件夾中,則對應的腳本showcart.bsh放在圖(6)的cart文件夾中,如此做不是必需 c_e&rieisi DU- baherror, tzh 、jgetLmmigtz. tm I丄SLivbEh的,一 一一h f cistorar而是規(guī)范的,易于愛護的。-oremain. bsk &SH文件41 KB介、邂冷爻f婪圖(6)iS:龍 I F a JDBSH交洋 KB1.7: widget 名目Widget是把ftl頁面和bsh腳本組合起來供前端顯示的工具。它用xml語言和特定標簽描述頁面和頁面,頁面和腳本之間如何組合和定制。Commo nScree ns.xml是公共模板定制頁
7、面CartScree n.xml是購物車有關頁面定制CatalogScree ns.xml是產(chǎn)品,名目的顯示的頁面定制屈qstomerScree ns.xml是有關調(diào)查,尋價和客戶方面的頁面定制 地4n 口兀山ipwjriM占吐ion認MtmmwQ譏vid淞tConlentScree ns.xml是跟內(nèi)容治理有關的頁面定制W 陀.科| _片 11 1 n-I廣弓創(chuàng) n J U1z i;artScrten3.iiBLOrderScree ns.xmhiB HI ai lECat dogptrTeen5.inir b at lio gp ere ens. ml = 再跟訂單和支付有關的頁面定制 j
8、_r 二_fEcommerceSetupbsh是公共 模板:加二 Cr.UM;er*si5 ml 怙CusfMtrSertu!. nmM KML Blocijli-r.t芝 IWL. Dsnuifrit 三一J5 E0C orir 0113 zre ens. olIML BotTjnent11陽圖(7)其他板塊的名目結構和ecommerce是相似的。2開發(fā)內(nèi)容2.1:對widget組合頁面要熟練把握。Web Widget是輕量級的 Web應用程序,為使用者提供一鍵式的服務。它通常被設計為具有特定的功能,如提供天氣、股票、拍賣等的信息。它與網(wǎng)頁一樣,使用標準的 Web技術開發(fā),如XHTML,CS
9、S, javascript等。從這方面看,Widget是脫離掃瞄器UI運行的網(wǎng)頁。Java = CoKBonScfeezLS. zkI = Eclxpse PlartocM諸eansheii腳本預備數(shù)據(jù)盂fsemaker頁面顯示數(shù)據(jù)具正是 組合腳本和頁面的,它規(guī)定了哪個腳本為哪個頁面組織數(shù)據(jù),即起到綁定腳本和頁面的作用,同時也能夠定義某些變量供頁面使用,所以有些頁面 士冃 rrr.inn?f能夠沒有腳本,簡單的來講昆擱競確實是用戶要求頁面,它把變量,標 簽和freemaker模板語言組合生謎畫HtML頁面,當用戶要求時就發(fā)送給用戶 Jl:Dean3r.ell掃瞄器。3crLPt LocatL0
10、1l= COrpoIieEt:/WE&sefTK3E&S6/VID-心口匚 1 tltl3門Q加恥&血tlEHD3ET心Widget用到的標簽在framework / widget / dtd里的xsd文件里,如圖htI- tcttlate lotatccfcpcnejit:/Tl!fEaee/wch時ip/TSSBae/inclale打hciadm)i/htf丄卜WUIiJa 亠回 A=-巾WKJT西虛二劈專,-idecorsrt or-aect lcm-inc Lude n&ue二 性口與燈、圖(8)在eclipse開發(fā)環(huán)境下,有代碼預示的功能,如圖(9)-Thtml-tecTp late
11、 Loe at i dti= ccwpc nent : / /TTSEtse/ vebp p / TTS EaBe/inclarfEsfaotBc.fcWp p L&2ortnspec ti Lc圖(9)eSY/seutiOD/RCTppn圖(10)圖(10)的 !-的內(nèi)容是注釋,從圖中的注釋清晰地介紹的用widget如何定制一個模板。screenScreen標簽對應的是前端要求的頁面,頁面的名稱name屬性是必須的。 sectionScreen 下有一個唯獨的 section ,section 下包含 condition , actions , widgets 禾B fail-widgets
12、 標簽。 condition如果 condition存在,同時condition是true則頁面顯示 widgets內(nèi)容, 否則顯示 fail-widgets。如果 condition 不存在,則 fail-widgets 標簽也就沒有必要。以下是對 attrName 非空的判定: 是檢查當前用戶是否 擁有對order的VIEW (查看)的權限 是把 變量跟某個常量進行比較,操作包括 less greater equals less-equals greater -equals not-equals contains ,分別表示,小于 大于 等于 小于等于 大于等 于 不等 包含。2是把兩個變
13、量進行比較,type類型值能夠為Float Dou ble Integer Long Boolean String PlainString Date Time Timestamp B Obj ect,如果沒有type默認為String。and 是對多個條件進行與操作 or 或操作 xor 異或 not 非 其他的標簽請查看圖( 8)所示的文件中內(nèi)容。 actionsactions 是加載頁面之前的動作。 常用的動作是 :set :set 定義一個變量并賦值 field 的值確實是變量名 value 是變量值; script :script加載一個beanshell腳本文件,location是腳
14、本的位置,xyz。位置以” component:/xyz/ ”開頭,意思是在 xyz 那個板塊下, xyz 是 在Hi pay的安裝名目下的app licatio ns和framework下的第一層子名目文件 夾,如圖( 2)得文件夾都能夠作為那個地點的property-map :prop erty-map加載一個屬性文件,resource的值是文件的名稱,文件后 綴為properties可省略不寫,關于多語言,例如要加載簡體中文配置文件TMSBaseUiLabels_zh_CN.properties和美國英語配置文件 TMSBaseUiLabels_ en_US.properties并把配置
15、文件的鍵值對放在一個 Map即uiLabelMap中, 作為全局變量是用,只需要如此一行代碼:這行代碼會加載所有各種語言的配置文件, 然后按照用戶的locale,讀 取當時當?shù)氐恼Z言配置。還有一點需要注意,如果 uiLabelMap 在 TMSBas eUiLabels_zh_CN.properties中找不到鍵值,它會去 TMSBaseUiLabels_zh.pr operties查找,如果沒找到,則連續(xù)查找 TMSBaseUiLperties,如果 仍舊沒有值則返回鍵本身,如果有則返回文件中定義的值;widgetsWidgets 是對頁面的加載和布局。常用的加載頁面的方法
16、包括1:platform-specificcom ponen t:/TMSBase/weba pp /TMSBase/i ncludes/header.fti 為要加載的 文件路徑和名稱。即TMSBase那個板塊下webapp文件夾的子文件夾TMS Base下的子文件夾includes下的header.ftl文件。2:include-screen這行代碼的意思是加載一個頁面,那個頁面是在 TMSBase那個板塊下 的widget文件夾下的bcd.xml文件里定義的abc頁面。abc是screen的na me的值。3:decorator另外,模板常用到這行代碼 意思是頁面的body部分是空的,其
17、他頁面使用以下代碼使用那個模板, 容器里面能夠加載其他頁面,這類似于 HTML 中的 DIV 層。以下代碼是合法的: /i nclude-scree n疥口 成效是等同的,其他類似。5: widget 中的 section section widgets 中能夠放置多個 6:其他 加載一個圖片能夠使用 頁面上顯示一行文字可用其他的標簽請查看圖( 8)所示的文件中內(nèi)容。fail-widgets等同于 widget 標簽,是條件不滿足時給用戶顯示的頁面。2.2:對 freemaker 模板語言的熟練把握2.2.1:各頁面功能及存放位置件夾shofpinistr面文件后綴為.晡Ffme ftl :中
18、.文仲,1 KBsmtin. tlFTL文件存放在圖(4)所示的名目中,ffiiiftup. ftl 財FTL文佯10 O匚3 locin ftlO ftl立件webapp下的圖(4)自助終端目前用到的頁面中有圖(4)中的部分頁面:main.fti是主頁面,用戶返回時會到此頁面,該頁面左邊顯示分類,右 邊顯示推廣產(chǎn)品。mainframe.ftl框架頁面分三個部分框架上面部分占99.98%是用戶操 作的業(yè)務頁面,框架中間占0.01%,是用來加載終端插件,框架下部是用來 加載加密插件和進行加密驗證的。mainup.ftl是語言選擇頁面。login.fti是用戶刷卡登陸頁面。cart下的showca
19、rt.ftl頁面 (購物車頁面)catalog下的sidedeepcategory.fti (終端屏幕的左邊名目翻頁頁面) customer下的survey.fti (調(diào)查頁面即用戶的密碼,號碼輸入頁面) error下的error.fti(錯誤頁面)in cludes 下的:header.fti模板頭部導航欄加載樣式表定制頁面超時腳本footer.fti模板底部留個按鈕hidebottom.fti加載終端插件,是頁面底部框架固定不動的部分,關于 不同的終端,申明和條用插件的方式可能不同,現(xiàn)在需要編寫多個廠家的底部框架頁面。jiami.fti工行自助終端用到的加密插件頁面。order下的chec
20、kouto ptio ns.fti該頁面顯示正在支付中,請用戶等候,該頁面向后 臺傳遞了用戶的支付方式,物資的運送方式,聯(lián)系方式等等重要信息,不 可或缺。能夠taloplete.ftl該頁面是支付完成 址擇打印憑條。kfyjv jr i:9 I 站0 KDF外還用到了 order板塊的webapp下ordermgr的字文件夾entry的ca g的部分文件,如圖矽4ych ftl9 EBFTLi# :i EDnet. ft!1 EB,顯示支付纟吉果,成功則用戶 J 茁plad.4 IqiII?. fJ.PTL丈件C刃1 脣 proi-oct. ftl o托 priliKideiaiL. f 遼1
21、2 KBprodizctEurriary. ftl圖(11)calldetaillE.ftl是天一終端的IE掃瞄器在進行銀行卡打電話業(yè)務時顯 示的頁面。calldetailNE.ftl是芙蓉終端mozzila掃瞄器銀行卡打電話頁面 category.ftl是顯示產(chǎn)品分類的頁面其指向categorydetail categorydetail.ftl是產(chǎn)品分類的詳細信息頁面其指向productsummary.ftlp roductsummary.ftl是某一個分類下所有產(chǎn)品的簡要介紹頁面,在終端 上確實是顯示在屏幕右邊的四個按鈕上的內(nèi)容。Product.ftl是產(chǎn)品頁面其指向productdeta
22、il.fti頁面Productdetail.ftl頁面是按照對產(chǎn)品的配置的詳情頁面來展現(xiàn)產(chǎn)品。例 如銀行卡打電話那個產(chǎn)品確實是配置成了calldetail.ftl ,如果沒有配置則默認顯示 Productdetail.ftl 頁面222:常用的頁面標簽以下例子中能夠見到常用到了頁面標簽。$uiLabelMap.chooseLanguage#-$uiLabelMap.firstPagedownInformation-input type=button id=$styleValue class=buttonImgClass value =$uiLabelMaplanguage.descriptio
23、n?if_exists name=$index*2 onclick=window.location=$language.requestUr i?if_exists;/ 注釋 注釋的內(nèi)容不能顯現(xiàn) - 字樣#-$uiLabelMap.firstPagedownInformation-要注意區(qū)分 HTML 頁面的注釋 賦值 assign$index ,將會顯示 條件判定if else使用時以尖括號和#開頭 并以 結尾b)A比B大A 不比 B 大 列表 listsizeindex設置變量 頁面使用變量時用 Chinese ,English
24、,French #assign languagesList = languagesList size = $languagesList?size $language 位置是 $language_index , 則最后顯示的結果是:Chinese位置是0 , English位置是1 , French位置是 2, 專門處理 如果變量值沒有定義頁面就會報錯,加上以下一些判定,能夠排除頁 面上的錯誤:exists if_exists has_content defaultexists 是對某個變量進行判定,返回值是布爾型 true or false ;if_exists 返回是字符串,對
25、某個變量進行判定 如果值或引用不存在則 顯示空串,相當于“” ;has_content 對變量進行判定,如果值或引用存在同時不為空時才為 tr ue 否則為 false。default 如果變量無值就設定默認值。$someparametert$someparameter$someparameter?if_exists$someparameter?default“( defaultValue”) 其他 關于自助終端頁面目前常用確實是上面介紹的這些標簽 更多請參考 FreeMarker 設計指南 .doc2.3:對beanshell腳本的熟悉Beanshell是寬松的Java,使用
26、變量前無需定義,它完全兼容Java語法。Fit頁面負責顯示后臺傳來的數(shù)據(jù),對頁面來講beanshell腳本是重要的 后端數(shù)據(jù)源,在bea nshell里能夠直截了當引用request變量和con text變量;通過request的get Parameter(“ name”)方法bsh腳本能夠獵取前端頁 面?zhèn)鱽淼膮?shù)通過context的put( “name” ,value)方法bsh腳本能夠把通過處理的數(shù) 據(jù)送回前端頁面顯示。頁面使用 $ name 即可顯示。request 能夠得到 delegator 和 dispatcherdelegatorbsh腳本中得到delegator:delegat
27、or = request.getAttribute(delegator);delegator 是實體引擎對數(shù)據(jù)庫增刪查改的代理器; 數(shù)據(jù)庫查找按照主鍵查找:Bsh 腳本中最常做的情況是到數(shù)據(jù)庫中查找數(shù)據(jù)供前臺頁面展現(xiàn)。 value = delegator.findByPrimaryKey( 數(shù)據(jù)庫表名 , inMap ); inMap 放置主鍵鍵值對 . UtilMisc.toMap(name,value) 方法是把鍵值 對放入 Map 中例如:orderHeader=delegator.findByPrimaryKey(OrderHeader,UtilMisc.toMap (orderId,
28、 1000);意思是在表 OrderHeader中查找主鍵(orderld)等于1000的記錄,查 出后賦給 orderHeader。按照某幾個字段交集查詢:valueList = delegator.findByAnd( 數(shù)據(jù)庫表名 , inMap );orderHeader=delegator.findByAnd(OrderHeader,UtilMisc.toMap(statusld, APPROVE , grandTotal,200);意思是在表OrderHeader查詢狀態(tài)是APPROVE同時交易金額是200元的記錄列表。按照某幾個字段并集查詢:valueList = delegato
29、r.findByOr( 數(shù)據(jù)庫表名 , inMap ); orderHeader=delegator.findByOr(OrderHeader, UtilMisc.toMap(statusId, APPROVE ,grandTotal,200); 意思是在表OrderHeader查詢狀態(tài)是APPROVE或者交易金額是200 元的記錄列表。按照條件查詢:delegator.findByCondition(數(shù)據(jù)庫名,條件列表,需要查詢出來的字段 列表, 字段排序列表 )需要查詢出來的字段列表如果設置為 null 則默認查出所有字段。創(chuàng)建條件例如產(chǎn)品號等于 10001:Condition1 = ne
30、w EntityExpr(productId, EntityOperator.EQUALS, 10001);狀態(tài)是 ACTIVE :Condition2 = new EntityExpr(statusId , EntityOperator.EQUALS, A CTIVE);生產(chǎn)日期大于某個日期 date1:Condition3 = new EntityExpr(munaDate, EntityOperator.GREATER_ THAN, date1);過期時刻小于或等于某個日期 data2:Condition4 = new EntityExpr(overDate, EntityOperato
31、r.LESS_THAN _EQUAL_TO, date2);總條件:Conds = new LinkedList(); 添加條件:Conds.add(Condition1);Conds.add(Condition2);Conds.add(Condition3);Conds.add(Condition4);設置條件之間的關系為與關系:findCondition= new EntityConditionList(Conds, EntityOperator.AND); 設置排序:按產(chǎn)品號倒序排列。orderby = UtilMisc.toList(-productId ) ; 開始查詢:findRe
32、sultList=delegator.findByCondition( Product, findCondition, nul l, orderby );其他查詢方法請參考 com.giantstone.entity.GenericDelegato類的方法。刪除數(shù)據(jù)庫記錄 在查詢方法中介紹的比較詳細,此處不再贅述有關內(nèi)容。 按照主鍵刪除:Gen eric PK pk = (Ge nencValue)it .n ext().get PrimaryKeyO; delegator.removeByPrimaryKey(pk);按照某幾個字段交集刪除delegator.removeByAnd(Term
33、Service,UtilMisc.toMap(DEVTYPEID,s DEVTYPEID);按照條件刪除delegator.removeByCondition“數(shù)據(jù)庫表”,“條件列表”);刪除列表delegator.removeAll(List);能夠先查出一個列表,然后刪除。其他刪除方法請參考 com.giantstone.entity.GenericDelegato類的方法。增加數(shù)據(jù)庫記錄delegator.create( 數(shù)據(jù)庫表名 , inMap );例如: nowTimestamp 是當時時刻delegator.create( Product, UtilMisc.toMap(prod
34、uctId, 10002, statu sId, CREATE, fromDate, nowTimestamp);意思是往表Product中插入一條產(chǎn)品號是10002狀態(tài)是CREATE,開始 日期是 nowTimestamp的記錄。更換數(shù)據(jù)庫中的記錄value 是數(shù)據(jù)庫的一條記錄。fields 是實據(jù)庫字段的鍵值對 Mapvalue = makeValue“ 數(shù)據(jù)庫表” ,fields)delegator.store(value);按照條件更新:delegator.storeByCondition();delegator.storeByConditionC數(shù)據(jù)庫表名,要更新的字段,更新條件);
35、 dispatcherbsh 腳本中得到 dispatcher:dispatcher = request.getAttribute(dispatcher);dispatcher 是服務引擎的調(diào)度器。調(diào)用服務方法:同步調(diào)用服務:outMap = dispatcher.runSync (服務名 , inMap ) ;inMap 是輸入?yún)?shù)組成的 Map ;outMap 是輸出參數(shù)組成的 Map ;2.4:熟悉流程操縱器 controller.xmlhandler操縱器定義了關于各種類型要求或響應采納何種方法來處理。在 controller.xml 里有大量的 uri 是頁面的要求。request-
36、map 上面代碼的意思是:如果有要求是main,第一步安全驗證,https=true,表示要走https安 全協(xié)議, https =false就走http協(xié)議,auth二true強制調(diào)用checkLogin要求,驗證用戶是否已 登錄,auth二false則不檢查此項,第二步意思是如果成功則到要求 main頁 面。 main 頁面在 view-map 中介紹。再看看 checkLogin:驗證用戶是否登陸 v/description 那個要求中https=true,走https協(xié)議,auth二false,它所以不能遞歸調(diào)用 自己。eve nt是對該要求的響應事件typ e二” java”表示后臺
37、用java方法來處 理那個要求,path是java的路徑,invoke的值是java類的某個靜態(tài)方法。方法會返回“ success或者error,如果是前者,則頁面轉到 main頁 面,否則到 login 頁面。處理要求的事件除了 java還有service,用一個服務來響應一個要求, 服務會返回“ success或者error。常用的還有 simple 是 mini-lang ,即簡單 java 語言,詳情參看安裝名目 frameworkminilangdtdsimple-methods.xsd 及各板塊中 script 文件夾的例程。當一個要求的response的type是 “reques”的時候會按照value的值 來連續(xù)找 request -map 的對應值,如此就形成了鏈式要求,即多個要求連 續(xù)調(diào)用。當最后一個要求的值確信會落在type是“view”上。應為HTTP要求確信會給用戶一個回應。view-map當一個要求的response的typ
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024副食品保障供應合同
- 農(nóng)產(chǎn)品采購合作協(xié)議書
- 社區(qū)物業(yè)管理服務合同
- 小額民間借款合同范本
- 建筑行業(yè)材料購銷協(xié)議模板
- 2023年高考地理復習精題精練-區(qū)域發(fā)展對交通運輸布局的影響(解析版)
- 2024年售房的合同范本
- 建筑工地物資租賃合同書
- 房產(chǎn)抵押擔保協(xié)議參考
- 2024年勞務協(xié)議書樣本
- 企業(yè)如何利用新媒體做好宣傳工作課件
- 如何培養(yǎng)孩子的自信心課件
- 中醫(yī)藥膳學全套課件
- 頸脊髓損傷-匯總課件
- 齒輪故障診斷完美課課件
- 2023年中國鹽業(yè)集團有限公司校園招聘筆試題庫及答案解析
- 大班社會《特殊的車輛》課件
- 野生動物保護知識講座課件
- 早教托育園招商加盟商業(yè)計劃書
- 光色變奏-色彩基礎知識與應用課件-高中美術人美版(2019)選修繪畫
- 前列腺癌的放化療護理
評論
0/150
提交評論