這輛號稱快過邁凱倫的超跑 終於要發布了!

這個陣容相當於中國的半個互聯網都投了蔚來汽車。與此同時,業界發出了一些質疑之聲:搞互聯網的人會造出什麼樣的車。有意思的是,李斌極少回應,蔚來汽車至今也沒舉辦過哪怕一場新聞發布會。(蔚來汽車聖何塞辦公室)(蔚來汽車慕尼黑辦公室)(蔚來汽車上海辦公室)(蔚來汽車南京工廠)而有跡可循的事實是,在短短兩年間,這家新創車企已先後在美國聖何塞、德國慕尼黑、英國倫敦和中國上海、北京、香港、南京、合肥等12地設立了研發、設計、生產和商務機構,全球僱員達2000餘人,來自近40個國家和地區。

對大多數人來說,蔚來汽車是熟悉又陌生的存在。

熟悉的是它的創始人——李斌,一手帶領易車成為中國第一家在海外上市的汽車互聯網公司。易車之後,他創辦了蔚來汽車。

陌生的是迄今為止,除了幾張照片、幾條被瘋狂轉發的微博外,沒有任何官方對蔚來汽車旗下有關車型的回應或宣傳。我們所知道的,就是蔚來汽車做出了一輛電動超跑,它很厲害,可與邁凱倫等頂級跑車抗衡,僅此而已。

“哥不在江湖,但江湖裡總有哥的傳說”。在競爭如此激烈的汽車界,在大家都在推崇“品牌營銷”理念的市場環境中,蔚來汽車顯得太低調了。如果要列舉一份至今沒有舉辦過發布會的新創車企名單,“蔚來汽車”肯定不會缺席。為何蔚來反而“低調做事”?

因為他們曾公開表示,“一旦我們舉辦發布會,那就是要發布真正可以使用、可以跑的車了。”

今年10月14日,英國知名超跑博主Shemee150在社交應用Instagram上曝光了一組蔚來汽車純電動超跑的賽道測試照。

邁凱倫p1看到這兒消息的時候也懵逼了,直呼:“what do we think 我們該怎麼看”。

對此蔚來汽車官方遲遲沒有回應,直到前幾天官網突然發布了一條公告:“11月21日,蔚來汽車將於倫敦舉行全球發布會,正式發布新品牌並推出限量版電動超級跑車。”

這家異常低調神秘的新創車企,終於要開發布會了。

如果仔細推敲,蔚來的這款超跑,是目前公開報道中第一台脫離了ppT、非概念、能在賽道上飛馳的實體電動跑車。有傳言這款超跑前幾天在德國紐博格林北環進行的賽道速度測試中成功刷新世界紀錄,成為該賽道上速度最快的電動超跑。

回顧“蔚來汽車”的發展之路

創辦蔚來汽車前,在接受許多媒體採訪時,李斌都表達了一個相似的觀點。他發現在傳統的汽車公司架構中,企業與用戶交流的方式以及產業鏈與汽車用戶之間的互動平台無法滿足移動互聯網時代用戶對汽車品牌的全方位服務需求。他開始萌生了要重新定義汽車的用戶體驗,創造一個真正為用戶考慮的“用戶企業”的想法。

(李斌內部分享)

真正讓他把這個想法落到實處的,多少和北京近幾年嚴重的霧霾有關。蔚來汽車官方微信發布的一篇文章显示,李斌在一次內部講話中談及他創辦蔚來的初衷時直言:“在霧霾天空下生活是很絕望的,會讓人覺得人生非常沒有意義。趁着自己還清醒的時候,我們應該做一點事情。”

於是2014年11月,蔚來汽車誕生。

第一次聽到“蔚來汽車”,很多人會誤以為是“未來汽車”,但據稱蔚來汽車的寓意應該理解為“讓蔚藍的天空回到我們身邊”。

蔚來汽車的投資背景堪稱豪華。公開報道显示,蔚來汽車的創始投資方包括騰訊、易車創始人李斌、汽車之家創始人李想、京東創始人劉強東以及順為資本(雷軍創辦)、高瓴資本、紅杉資本和愉悅資本。今年年中公布的新一輪投資機構名單中,淡馬錫、聯想、TpG和厚朴也赫然在列。這個陣容相當於中國的半個互聯網都投了蔚來汽車。

與此同時,業界發出了一些質疑之聲:搞互聯網的人會造出什麼樣的車?有意思的是,李斌極少回應,蔚來汽車至今也沒舉辦過哪怕一場新聞發布會。

(蔚來汽車聖何塞辦公室)

(蔚來汽車慕尼黑辦公室)

(蔚來汽車上海辦公室)

(蔚來汽車南京工廠)

而有跡可循的事實是,在短短兩年間,這家新創車企已先後在美國聖何塞、德國慕尼黑、英國倫敦和中國上海、北京、香港、南京、合肥等12地設立了研發、設計、生產和商務機構,全球僱員達2000餘人,來自近40個國家和地區。

(李斌與伍絲麗)

去年12月,蔚來汽車挖來了“硅谷女王”伍絲麗,擔任公司首席發展官兼北美公司CEO。這位前思科首席技術和戰略官、摩托羅拉首席技術官的履新,引發了硅谷不小震動。

默默完成了產業鏈的布局,最可怕的不是對手太強大,而是強大的對手太低調。

“蔚來汽車”的速度

當不少新創車企在“ppT造車”的道路上越走越遠時,蔚來汽車已將電能技術運用到自己的電動方程式賽車上。

早在2014年,蔚來汽車就參加了第一屆由國際汽聯主辦的“電動方程式世界錦標賽”(Formula E,簡稱“FE”),這項賽事可以簡單理解為“F1的電動版”,是全球第一項依靠全電力驅動的賽車比賽。

(FE 蔚來賽車)

2015年FE第一賽季結束時,蔚來車隊有些出人意料地奪得該項賽事史上首個年度車手總冠軍。今年已是蔚來車隊連續第三年參加該項賽事。

“很多人誤認為我們只是冠名贊助商,這是一個很大的誤解。這就是蔚來汽車自己的車隊,賽車和車手都是我們自己的,而且我們擁有賽車的核心技術。”蔚來汽車相關消息人士透露。

而在2016年,這家低調的車企所取得的進展則有些令人吃驚。

今年4月,蔚來汽車悄然發布了兩條新聞:一是與江淮汽車達成戰略合作協議,雙方將在電動汽車領域進行全面戰略合作,整體合作規模達到100億元;二是當月底,蔚來汽車總投資30億元人民幣的高性能電機及電控系統生產基地在南京經濟技術開發區落成。

半年後的10月28日,一條公眾號消息未讀提醒推送到了很多人的手機屏幕上:“蔚來汽車首批電驅動總成在南京下線”。

11月21日,蔚來汽車第一款電動超跑的神秘面紗終於要揭開。

“蔚來汽車”未來要重新定義汽車?

在不少論壇現場,李斌都會被主辦方有意無意地安排與滴滴的高層同台。

“汽車產業現在得了一種‘互聯網焦慮症’的病,最焦慮的東西其實就是前面柳青提到的他們的目標:將來大家不用買車了!”今年6月的中國互聯網大會開幕論壇上,李斌在國家發改委、工信部、國家互聯網信息辦的領導面前慷慨陳詞。

他在現場舉了兩個很有說服力的例子,美國灣區和中國北京的汽車銷量,都沒有因為優步、滴滴的風行而減少,銷量反而大幅度增加。

“汽車用戶的購車需求並沒有因為移動出行軟件的興起而下降。之所以出現這樣的一個跟想象不一樣的判斷,主要是我們大部分時候簡單地把出行等同於汽車!”李斌認為,汽車行業最大的問題是把汽車當成一個交通工具,“如果你把手機只當成一個通話的工具,那就永遠沒有智能手機的出現。所以重新定義汽車的用戶體驗,才能重新定義汽車。”本站聲明:網站內容來源於http://www.auto6s.com/,如有侵權,請聯繫我們,我們將及時處理

【其他文章推薦】

※別再煩惱如何寫文案,掌握八大原則!

網頁設計一頭霧水該從何著手呢? 台北網頁設計公司幫您輕鬆架站!

※超省錢租車方案

※教你寫出一流的銷售文案?

網頁設計最專業,超強功能平台可客製化

※產品缺大量曝光嗎?你需要的是一流包裝設計!

台中搬家遵守搬運三大原則,讓您的家具不再被破壞!

動不動9速10速,變速箱真的是擋位越多越好?

但是那樣的路段少之又少,在城市裡面幾乎用不上。為什麼會導致現在這樣尷尬的局面呢。其實現在回頭看市面上搭載9速卻很難用上第9擋的車型大多數小排量車型,因為廠家把9速拿來就是為了宣傳低油耗,但是最後搭配了一個不足以配合9AT的發動機,自由光就是這個反面教材,而像奔馳的GLE400,同樣是9AT,卻可以在80公里時速就輕鬆掛上第9擋,發動機的轉速還很低。

如果要在幾年前和你談十速變速箱,你可能以為我和你說的某台貨車

而現實是謳歌RLX已經搭載了10速變速箱

甚至已經為3離合11速變速箱申請專利

搞得大家沒有個8AT都不好意思出門

在過去很長一段時間里,特別是4AT還大行其道的時候,的確存在這樣一個現象,擋數越高就意味着更高的傳動效率、更好的燃油經濟性、更平順的動力輸出、更爽快的加速體驗,這些不假!

但是現在真實的情況是消費者被一些車商洗腦了,讓大家脫離汽車本身,專註於變速箱去了。像目前6、7速變速箱仍然是大眾的主力變速箱,而且據了解在未來很長一段時間內都不會更換,寶馬也已確定8AT變速箱已基本是終極。 而奔馳通過模擬分析后得出的結論,無需再開發9擋以上的變速度箱,甚至斷言檔數到達9擋以上后,就會成為發動機的累贅,雖然如此果斷的觀點不太妥當,畢竟奔馳打臉的事情也沒少干,最近復活直六發動機的事情也算其中之一吧。

但是之前的實例像Jeep的自由光

它是全球第一台搭載橫置9AT變速箱的車,廠家曾把它的9AT吹得天化亂墜,最後用戶們發現這玩意跟期待中的完全不是那麼一回事,但卻因為它花了大價錢。雖然也有些車主說自由光的9AT也有用到9擋的時候,據統計大多數是在下坡的高速公路路段。但是那樣的路段少之又少,在城市裡面幾乎用不上。

為什麼會導致現在這樣尷尬的局面呢?

其實現在回頭看市面上搭載9速卻很難用上第9擋的車型大多數小排量車型,因為廠家把9速拿來就是為了宣傳低油耗,但是最後搭配了一個不足以配合9AT的發動機,自由光就是這個反面教材,而像奔馳的GLE400,同樣是9AT,卻可以在80公里時速就輕鬆掛上第9擋,發動機的轉速還很低。

所以這個掛不上第9擋的鍋,現在來說不一定是變速箱來背,這就像什麼呢,你去買衣服,明明是140的身高,但是一想190的和140的價格一樣,布料卻更多,買190的比較划算,所以就買了一個並不合身的衣服,布料是賺到了,但是穿着好不好只有自己知道。

而且我們並不能只看變速箱這一點,而是整車動力系統的匹配,就像你女友看到你撅屁股就知道你要放屁。

放到汽車上也是一樣,變速箱更智能积極的換擋邏輯,知道你踩油門應該升擋還是降擋,發動機同時也要能配合,升到最高擋發動機轉速低時,也不會覺得發動機乏力,這些才是我們想要的。如果能夠做到這些又何必在乎它有多少個擋呢?本站聲明:網站內容來源於http://www.auto6s.com/,如有侵權,請聯繫我們,我們將及時處理

【其他文章推薦】

※教你寫出一流的銷售文案?

※廣告預算用在刀口上,台北網頁設計公司幫您達到更多曝光效益

※回頭車貨運收費標準

※別再煩惱如何寫文案,掌握八大原則!

※超省錢租車方案

※產品缺大量曝光嗎?你需要的是一流包裝設計!

※推薦台中搬家公司優質服務,可到府估價

V8,懂車的男人都很想要

1秒,最高時速為250km/h(电子限速),標配的前245/35 ZR19后265/35 ZR19輪胎也能夠提供強大的抓地力,為強大的性能提供保障。配合上AMG C 63 Sedan的陶瓷通風剎車盤、後橋限滑差速器等高科技裝備,AMG C 63 Sedan的運動性得到了最好的施展空間。

作為一名汽車編輯,小編有機會試到各種高性能車型,而最讓小編沉醉的就是大排量V8發動機。

V8發動機是目前超級性能車中最常用的發動機類型,我們熟悉的許許多多的超跑和超級性能車都使用的V8發動機,比如法拉利488、邁凱輪p1等車型都使用的V8發動機,在如今小排量車型大行其道的今天,V8發動機仍然有着不可抗拒的魅力。

為什麼V8的魅力依然無可取代?

性能車到底多少個氣缸比較好?在小編看來這個最佳氣缸數非8缸不可,8缸是一個臨界點,12缸發動機雖然有着十分兇猛的動力輸出以及更好的運轉精緻度,但是巨大的尺寸和重量會嚴重影響到性能車的操控表現以及重量分配,許多搭載12缸發動機的車型都有一個嚴重的推頭問題,實際操控性能反倒不如8缸車型。

而6缸發動機先天排量不足,小排量的結構劣勢導致了6缸發動機雖然動力輸出足夠強大,但是和真正的超級性能車型相比它的動力輸出還是有不小差距,即使加上渦輪增壓或者机械增壓之後仍然不能夠表現出性能車該有的兇悍。而如果要強行壓榨動力就必須使用更大的渦輪,這樣小排量渦輪增壓車型的渦輪遲滯問題也就隨之出現了,而使用机械增壓的話效率並不高,而且高轉速的噪音比較大,机械增壓也不利於轉速的提升。

而V8發動機中做的最好的莫過於奔馳AMG,比如說奔馳AMG C 63 Sedan上那台4.0T V8雙渦輪增壓發動機,這台V8發動機尺寸和重量都比較適中,而且由於基礎排量比較大氣缸數也比較多,所以這台V8發動機動力輸出十分強勁,發動機底氣十足,即使在低轉速下也有十分恐怖的扭矩輸出,並且發動機低沉的聲浪以及換擋收油時候的“放炮聲”都十分勾魂,這樣的聲浪聽起來是一種享受。

AMG C 63 Sedan的4.0T V8發動機最大功率476馬力,最大扭矩達到了650牛米。而且發動機的最大扭矩輸出區間為1750-4500轉,寬泛的扭矩輸出平台也保證了動力隨叫隨到,提供最強大的響應性支持。

在如此強大動力的加持下AMG C 63 Sedan的0~100km/h加速時間僅需4.1秒,最高時速為250km/h(电子限速),標配的前245/35 ZR19后265/35 ZR19輪胎也能夠提供強大的抓地力,為強大的性能提供保障。

配合上AMG C 63 Sedan的陶瓷通風剎車盤、後橋限滑差速器等高科技裝備,AMG C 63 Sedan的運動性得到了最好的施展空間。奔馳的動態選檔系統也十分實用,可以說是駕馭住這款性能猛獸的神器,動態選檔系統從運動到舒適一共有5檔可以選擇,通過改變油門的響應性、轉向力度、懸挂的阻尼等實現在運動和舒適之間的平衡。

AMG三個字母是什麼含義?

AMG是頂級性能和極致駕控魅力的代名詞,AMG的造車技術登峰造極,尤其是在發動機的設計與製造上,奔馳 A45AMG上那台2.0T發動機就能夠爆出了380馬力的恐怖輸出,而AMG C 63 Sedan上的4.0T V8雙渦輪增壓發動機的輸出恐怖程度也就可想而知了,正因為奔馳AMG能夠造出輸出十分恐怖的發動機,因此我們熟悉的頂級跑車帕加尼都使用AMG提供的發動機。

AMG的歷史可以追溯到上世紀60年代;1967年6月1日,AMG雛形“AMG 設計與測試賽車發動機技術公司”誕生,從此輝煌45載AMG名聲籍甚,在高性能汽車領域AMG無人不知無人不曉,高性能與創新是AMG至死不渝的造車理念,動力、操控和聲音上AMG都追求極致,AMG致力於製造最完美的高性能汽車,因此AMG也擁有大量的忠實擁躉。

而在創新上AMG也是高性能汽車領域的先行者,1984年工程師Melcher開發了完全獨立的氣缸蓋,因此AMG成為發動機生產公司。強調一人一機理念,目前AMG已經成為擁有1100多人的公司,其中工程師就多達500位。擁有眾多技術高超的工程師和設計師的AMG也就掌握了最先進的研發力量,而AMG每一台發動機,每一台車型都有專門的工程師負責裝配和檢驗,並且在發動機上籤下工程師的名字,細緻的檢測精心的裝配,確保每一台AMG都能夠發揮它的最強勁最穩定的性能。

發動機是AMG的靈魂,也是一台性能車的靈魂,AMG C 63 Sedan代表的不僅僅是一台性能車,而是代表着性能車同級最強的表現,V8的魅力無法拒絕,而更讓人難以拒絕的是奔馳AMG C 63 Sedan的V8。本站聲明:網站內容來源於http://www.auto6s.com/,如有侵權,請聯繫我們,我們將及時處理

【其他文章推薦】

※超省錢租車方案

※別再煩惱如何寫文案,掌握八大原則!

※回頭車貨運收費標準

※教你寫出一流的銷售文案?

※產品缺大量曝光嗎?你需要的是一流包裝設計!

※廣告預算用在刀口上,台北網頁設計公司幫您達到更多曝光效益

網頁設計最專業,超強功能平台可客製化

沒天理!回頭率爆表的總統級座駕 竟然比寶馬5系還便宜?

0T兩款發動機,匹配6AT變速箱,高配車型有四驅系統搭配,整體動力輸出數值十分高,尤其是3。0T車型的參數十分恐怖。就目前的信息來看,預售的三款車型配置都十分高,可變懸挂/胎壓監測/一鍵啟動/電動後備廂/前後雷達/真皮座椅/主動剎車系統都是標配。

外觀

霸氣敦實

外觀上林肯新大陸的設計和上次咱們試駕過的林肯MKZ有很大的相似度,除了車尾之外,其它地方設計基本相同,不過在車門把手上大陸還是十分有標誌性,由於車身尺寸碩大,加上碩大的中網和犀利的大燈,林肯大陸的氣場十分強大,看上去有幾分大型豪華轎車的感覺。

內飾

用料奢華

內飾上林肯大陸的用料十分值得讚歎,雖然在中控台的造型設計上不算多麼出彩,和德系車的車廂相比設計感欠缺,但是細膩的皮革到處都是,配置也十分豐富,大陸的內飾也值得讚歎,在MKZ上那個十分有福特味道的儀錶盤並沒有出現在大陸上,大陸使用一塊液晶儀錶盤,显示信息更加豐富,效果也更加棒。

空間

足夠寬敞

由於大陸的尺寸十分龐大,軸距也接近3米,所以大陸的內部空間還是十分有保障的,和同價位的加長對手相比也絲毫不遜色,後備箱空間十分規整但是寬度比較窄,實用性受到一定的影響。

動力

數據強大

動力上林肯大陸使用了2.0T/3.0T兩款發動機,匹配6AT變速箱,高配車型有四驅系統搭配,整體動力輸出數值十分高,尤其是3.0T車型的參數十分恐怖。

就目前的信息來看,預售的三款車型配置都十分高,可變懸挂/胎壓監測/一鍵啟動/電動後備廂/前後雷達/真皮座椅/主動剎車系統都是標配。結合42萬的預售價來看相比德系對手優勢不小。林肯大陸有着龐大的尺寸,精緻豪華的內飾氛圍和寬敞的空間,和德系對手相比它的價格更有誘惑力,配置更加豐富,唯一需要擔心的就是品牌了,還是那句話,人家不認識林肯標啊!本站聲明:網站內容來源於http://www.auto6s.com/,如有侵權,請聯繫我們,我們將及時處理

【其他文章推薦】

※產品缺大量曝光嗎?你需要的是一流包裝設計!

※自行創業缺乏曝光? 網頁設計幫您第一時間規劃公司的形象門面

※回頭車貨運收費標準

※推薦評價好的iphone維修中心

※超省錢租車方案

台中搬家遵守搬運三大原則,讓您的家具不再被破壞!

※推薦台中搬家公司優質服務,可到府估價

這款歐系SUV品質好 而且20萬內配置完虐日產奇駿?

內飾設計兩台車的內飾設計都屬於乏善可陳,沒有什麼太大的亮點。不過,奇駿烤黑鋼琴漆的中控面板會更顯高級,而科雷嘉的設計則偏向於簡潔,甚至略顯可愛。乘坐空間與感受奇駿的後排奇駿的軸距2706mm,而科雷嘉的軸距則為2645mm,這就有了61mm的差距。

科雷嘉與逍客同為雷諾-日產聯盟CMF的產物,但是科雷嘉的價格已經越級去挑戰了奇駿的售價區間,那麼下面編者我就分析一下科雷嘉可否有能力挑戰奇駿的地位。首先,為了公平起見,我會拿科雷嘉的2.0L 兩驅尊貴版與奇駿的2.0L CVT舒適版 2WD來作對比,兩者售價均為19.68萬,而終端優惠都在2萬元左右,可能奇駿還能有更大一點點的優惠。

外觀設計

科雷嘉的前臉看上去很有流線感,而且很妖嬈,充滿法式浪漫。大燈處,兩個半矩形框分別把遠近光燈半包圍住,盡顯銳利。尾部則略為簡潔,僅僅是尾燈處向側面作了延伸。

奇駿的前臉用了倒梯形的設計,各處有棱有角,既具時尚,也不失陽剛之氣。整個側面相當簡練,C柱往後線條開始上揚。

動力總成

雖然兩者的發動機型號不一樣,但是各種參數均高度一致,最大輸出150馬力和200牛米。同樣地,兩款車都搭載了CVT變速箱,不過開起來就略有差異了。

科雷嘉給人的感覺是不緊不慢,踩下油門,轉速先升上去,然後車速再慢慢攀升。雖然是CVT變速箱,但模擬出了7個擋位,因此,在換擋時,能感受到變速箱的節奏感。

奇駿則與科雷嘉調性相反,油門響應很快,市區中開起來相當輕快。然而,一旦開快以後再加速,則會有多數小排量發動機存在的問題,就是光吼不走。至於CVT的匹配很好,開起來也平順,動力銜接流暢。

內飾設計

兩台車的內飾設計都屬於乏善可陳,沒有什麼太大的亮點。不過,奇駿烤黑鋼琴漆的中控面板會更顯高級,而科雷嘉的設計則偏向於簡潔,甚至略顯可愛。

乘坐空間與感受

奇駿的後排

奇駿的軸距2706mm,而科雷嘉的軸距則為2645mm,這就有了61mm的差距。進到車廂內的後排會發現奇駿的腿部空間相當富餘,不過座椅太大,包裹性略顯不足,但舒適性可以給高分,很柔軟。值得表揚的一點就是配有後座出風口。

科雷嘉的後排

科雷嘉的後排空間就不是那麼樂觀了,腿部空間尚還可以,然而座椅靠背較直,填充料較硬大大影響了乘坐舒適性。還有一點就是缺乏後座出風口,這就不太對得起次頂配這個配置了。

配置對比

奇駿用的是腳剎,而科雷嘉用的是电子駐車。而且,科雷嘉的18寸輪胎從視覺感受與抓地力上要優於奇駿的17寸輪胎,不過油耗上會略有吃虧。除此以外,科雷嘉比奇駿多出了前後排頭部氣囊和車頂行李架。其餘的配置差異,可以看下錶對比。

油耗及保養費用

鑒於動力總成上的一致性,同時整備質量也只差了十幾公斤。因此,兩台車均做出了百公里綜合油耗8.9L的好成績。

在保養費用的對比上,奇駿以6萬公里總保養費用5225元勝出,而科雷嘉的費用為6562元。奇駿送兩次保養,同時變速箱油終身免維護,而火花塞每10萬公里更換一次,這些都是它的保養費用低於科雷嘉的原因。

編者總結:

從以上對比不難看出,科雷嘉對比奇駿優勝在更時尚的外觀,以及一些配置。但是在駕駛和乘坐感受上都要遜於奇駿。本站聲明:網站內容來源於http://www.auto6s.com/,如有侵權,請聯繫我們,我們將及時處理

【其他文章推薦】

※回頭車貨運收費標準

※產品缺大量曝光嗎?你需要的是一流包裝設計!

※自行創業缺乏曝光? 網頁設計幫您第一時間規劃公司的形象門面

※推薦評價好的iphone維修中心

※教你寫出一流的銷售文案?

台中搬家公司教你幾個打包小技巧,輕鬆整理裝箱!

台中搬家遵守搬運三大原則,讓您的家具不再被破壞!

今年首家報捷!永豐銀行簽署赤道原則

摘錄自2020年3月3日中時報導

永豐金控3日舉辦法說會,總經理朱士廷宣布,永豐金控子公司永豐銀行已於日前簽署「赤道原則」(Equator Principles, EPs) ,成為國銀第6家、全球第102家赤道銀行。

朱士廷指出,銀行雖非高耗能產業,卻因掌握支撐經濟運作的關鍵金流,在全球低碳化議題上扮演重要角色;經由依循「赤道原則」將ESG議題納入融資風險決策過程中,關注客戶是否瞭解氣候變遷對營運帶來的風險與機會,以及對財務績效的影響,以進一步積極採取因應措施。

永豐銀行總經理莊銘福表示,永豐銀行已經於2月27日簽署「赤道原則」,本次簽署「赤道原則」,將進一步落實管理大型專案融資案件在環境(E)、社會(S)、治理(G)等面向的風險,也將爭議性、敏感性產業明訂為避免承作及關注表列清單。

【其他文章推薦】

新北市探針選用參考標準?

※如何正確使用飲水機?

※攻戰消費者第一視覺,包裝設計很重要!

滑鼠墊適用各種文宣活動廣告曝光,專業客製服務

封口機購物網-不怕你比價,就怕你買貴!

寶德能源破產 九家踩雷銀行團今會商債權確保

摘錄自2020年3月5日自由時報報導

國發基金投資的太陽能廠寶德能源上週宣告破產,不但大股東華新(1605)已公告恐需認列16.8億元的損失,以兆豐銀行為首的九家聯貸銀行團再度踩雷,聯貸債權餘額高達百億元,將於今(5日)緊急會商,商討擔保品拍賣事宜。

除了大股東華新麗華外,受傷最慘重的,將是高達百億元的聯貸銀行團,寶德能源因有國發基金投資,八大公股銀行全數參貸,其中又以兆豐銀行的金額最高。

根據統計,九家參貸行中,兆豐銀占約20億元,其次為共同主辦行一銀約14億元及台新12億元,其他銀行華銀、台銀、彰銀、合庫銀、台企銀各約7至3億元不等,金額最少的是土銀僅不到1億元。

【其他文章推薦】

無塵擦拭布各大品牌廠商販售比價網!

※如何正確使用飲水機?

※掌握產品行銷策略,帶你認識商品包裝設計基本要素

※精密CNC 自動車床設備介紹

空壓機這裡買最划算!

赫爾辛基大學能源和清潔空氣中心的梅利維爾擔心

赫爾辛基大學能源和清潔空氣中心的梅利維爾擔心,當疫情過去後工商業復甦又恢復到以往的排碳量。以中國為例,2008年金融海嘯一度造成排碳量大減,但之後政府大興土木以刺激經濟,使得排碳量不減反增。

佛蒙特大學岡德環境研究所埃里克森指出,與其在面對危機時被迫減碳,我們還有5至10年的時間,將經濟轉型成低碳產業,同時令經濟衝擊降到最低。對此,埃里克森認為,對抗氣候變遷需要與抗疫相同程度的國際合作。

【其他文章推薦】

※客製專屬滑鼠墊、可愛造型L夾L型資料夾、透明證件套、手提袋,專業印刷設計廠商!  

示波器鮮為人知的使用技巧?

※掌握產品行銷策略,帶你認識商品包裝設計基本要素

※買不起高檔茶葉,精緻包裝茶葉罐,也能撐場面!

貨梯使用安全與保養

※高效率洗滌塔活性碳設備有哪些?

※專業模具開發-五金製品代工製作廠

基於 abp vNext 和 .NET Core 開發博客項目 – 博客接口實戰篇(三)

系列文章

  1. 基於 abp vNext 和 .NET Core 開發博客項目 – 使用 abp cli 搭建項目
  2. 基於 abp vNext 和 .NET Core 開發博客項目 – 給項目瘦身,讓它跑起來
  3. 基於 abp vNext 和 .NET Core 開發博客項目 – 完善與美化,Swagger登場
  4. 基於 abp vNext 和 .NET Core 開發博客項目 – 數據訪問和代碼優先
  5. 基於 abp vNext 和 .NET Core 開發博客項目 – 自定義倉儲之增刪改查
  6. 基於 abp vNext 和 .NET Core 開發博客項目 – 統一規範API,包裝返回模型
  7. 基於 abp vNext 和 .NET Core 開發博客項目 – 再說Swagger,分組、描述、小綠鎖
  8. 基於 abp vNext 和 .NET Core 開發博客項目 – 接入GitHub,用JWT保護你的API
  9. 基於 abp vNext 和 .NET Core 開發博客項目 – 異常處理和日誌記錄
  10. 基於 abp vNext 和 .NET Core 開發博客項目 – 使用Redis緩存數據
  11. 基於 abp vNext 和 .NET Core 開發博客項目 – 集成Hangfire實現定時任務處理
  12. 基於 abp vNext 和 .NET Core 開發博客項目 – 用AutoMapper搞定對象映射
  13. 基於 abp vNext 和 .NET Core 開發博客項目 – 定時任務最佳實戰(一)
  14. 基於 abp vNext 和 .NET Core 開發博客項目 – 定時任務最佳實戰(二)
  15. 基於 abp vNext 和 .NET Core 開發博客項目 – 定時任務最佳實戰(三)
  16. 基於 abp vNext 和 .NET Core 開發博客項目 – 博客接口實戰篇(一)
  17. 基於 abp vNext 和 .NET Core 開發博客項目 – 博客接口實戰篇(二)

上篇文章完成了分類和標籤頁面相關的共6個接口,本篇繼續來寫博客增刪改查API的業務。

供前端查詢用的接口還剩下一個,這裏先補上。

友鏈列表

分析:返回標題和對應的鏈接即可,傳輸對象FriendLinkDto.cs

//FriendLinkDto.cs
namespace Meowv.Blog.Application.Contracts.Blog
{
    public class FriendLinkDto
    {
        /// <summary>
        /// 標題
        /// </summary>
        public string Title { get; set; }

        /// <summary>
        /// 鏈接
        /// </summary>
        public string LinkUrl { get; set; }
    }
}

添加查詢友鏈列表接口和緩存接口。

//IBlogService.FriendLink.cs
using Meowv.Blog.Application.Contracts.Blog;
using Meowv.Blog.ToolKits.Base;
using System.Collections.Generic;
using System.Threading.Tasks;

namespace Meowv.Blog.Application.Blog
{
    public partial interface IBlogService
    {
        /// <summary>
        /// 查詢友鏈列表
        /// </summary>
        /// <returns></returns>
        Task<ServiceResult<IEnumerable<FriendLinkDto>>> QueryFriendLinksAsync();
    }
}
//IBlogCacheService.FriendLink.cs
using Meowv.Blog.Application.Contracts.Blog;
using Meowv.Blog.ToolKits.Base;
using System;
using System.Collections.Generic;
using System.Threading.Tasks;

namespace Meowv.Blog.Application.Caching.Blog
{
    public partial interface IBlogCacheService
    {
        /// <summary>
        /// 查詢友鏈列表
        /// </summary>
        /// <param name="factory"></param>
        /// <returns></returns>
        Task<ServiceResult<IEnumerable<FriendLinkDto>>> QueryFriendLinksAsync(Func<Task<ServiceResult<IEnumerable<FriendLinkDto>>>> factory);
    }
}

接下來,實現他們。

//BlogCacheService.FriendLink.cs
using Meowv.Blog.Application.Contracts.Blog;
using Meowv.Blog.ToolKits.Base;
using System;
using System.Collections.Generic;
using System.Threading.Tasks;
using static Meowv.Blog.Domain.Shared.MeowvBlogConsts;

namespace Meowv.Blog.Application.Caching.Blog.Impl
{
    public partial class BlogCacheService
    {
        private const string KEY_QueryFriendLinks = "Blog:FriendLink:QueryFriendLinks";

        /// <summary>
        /// 查詢友鏈列表
        /// </summary>
        /// <param name="factory"></param>
        /// <returns></returns>
        public async Task<ServiceResult<IEnumerable<FriendLinkDto>>> QueryFriendLinksAsync(Func<Task<ServiceResult<IEnumerable<FriendLinkDto>>>> factory)
        {
            return await Cache.GetOrAddAsync(KEY_QueryFriendLinks, factory, CacheStrategy.ONE_DAY);
        }
    }
}
//BlogService.FriendLink.cs
using Meowv.Blog.Application.Contracts.Blog;
using Meowv.Blog.Domain.Blog;
using Meowv.Blog.ToolKits.Base;
using System.Collections.Generic;
using System.Threading.Tasks;

namespace Meowv.Blog.Application.Blog.Impl
{
    public partial class BlogService
    {
        /// <summary>
        /// 查詢友鏈列表
        /// </summary>
        /// <returns></returns>
        public async Task<ServiceResult<IEnumerable<FriendLinkDto>>> QueryFriendLinksAsync()
        {
            return await _blogCacheService.QueryFriendLinksAsync(async () =>
            {
                var result = new ServiceResult<IEnumerable<FriendLinkDto>>();

                var friendLinks = await _friendLinksRepository.GetListAsync();
                var list = ObjectMapper.Map<IEnumerable<FriendLink>, IEnumerable<FriendLinkDto>>(friendLinks);

                result.IsSuccess(list);
                return result;
            });
        }
    }
}

直接查詢所有的友鏈數據,這裏使用前面講到的AutoMapper處理對象映射,將IEnumerable<FriendLink>轉換為IEnumerable<FriendLinkDto>

MeowvBlogAutoMapperProfile.cs中添加一條配置:CreateMap<FriendLink, FriendLinkDto>();,在BlogController中添加API。

/// <summary>
/// 查詢友鏈列表
/// </summary>
/// <returns></returns>
[HttpGet]
[Route("friendlinks")]
public async Task<ServiceResult<IEnumerable<FriendLinkDto>>> QueryFriendLinksAsync()
{
    return await _blogService.QueryFriendLinksAsync();
}

編譯運行,打開查詢友鏈的API,此時沒數據,手動添加幾條數據進去再試試吧。

文章管理

後台文章管理包含:文章列表、新增、更新、刪除文章,接下來依次完成這些接口。

文章列表

這裏的文章列表和前台的文章列表差不多,就是多了一個Id,以供編輯和刪除使用,所以可以新建一個模型類QueryPostForAdminDto繼承QueryPostDto,添加PostBriefForAdminDto繼承PostBriefDto同時新增一個字段主鍵Id。

QueryPostForAdminDto中隱藏基類成員Posts,使用新的接收類型:IEnumerable<PostBriefForAdminDto>

//PostBriefForAdminDto.cs
namespace Meowv.Blog.Application.Contracts.Blog
{
    public class PostBriefForAdminDto : PostBriefDto
    {
        /// <summary>
        /// 主鍵
        /// </summary>
        public int Id { get; set; }
    }
}
//QueryPostForAdminDto.cs
using System.Collections.Generic;

namespace Meowv.Blog.Application.Contracts.Blog
{
    public class QueryPostForAdminDto : QueryPostDto
    {
        /// <summary>
        /// Posts
        /// </summary>
        public new IEnumerable<PostBriefForAdminDto> Posts { get; set; }
    }
}

添加分頁查詢文章列表的接口:QueryPostsForAdminAsync(),關於後台的一些接口就不添加緩存了。

//IBlogService.Admin.cs
using Meowv.Blog.Application.Contracts;
using Meowv.Blog.Application.Contracts.Blog;
using Meowv.Blog.ToolKits.Base;
using System.Threading.Tasks;

namespace Meowv.Blog.Application.Blog
{
    public partial interface IBlogService
    {
        /// <summary>
        /// 分頁查詢文章列表
        /// </summary>
        /// <param name="input"></param>
        /// <returns></returns>
        Task<ServiceResult<PagedList<QueryPostForAdminDto>>> QueryPostsForAdminAsync(PagingInput input);
    }
}

然後實現這個接口。

//BlogService.Admin.cs
using Meowv.Blog.Application.Contracts;
using Meowv.Blog.Application.Contracts.Blog;
using Meowv.Blog.ToolKits.Base;
using Meowv.Blog.ToolKits.Extensions;
using System.Linq;
using System.Threading.Tasks;

namespace Meowv.Blog.Application.Blog.Impl
{
    public partial class BlogService
    {
        /// <summary>
        /// 分頁查詢文章列表
        /// </summary>
        /// <param name="input"></param>
        /// <returns></returns>
        public async Task<ServiceResult<PagedList<QueryPostForAdminDto>>> QueryPostsForAdminAsync(PagingInput input)
        {
            var result = new ServiceResult<PagedList<QueryPostForAdminDto>>();

            var count = await _postRepository.GetCountAsync();

            var list = _postRepository.OrderByDescending(x => x.CreationTime)
                                      .PageByIndex(input.Page, input.Limit)
                                      .Select(x => new PostBriefForAdminDto
                                      {
                                          Id = x.Id,
                                          Title = x.Title,
                                          Url = x.Url,
                                          Year = x.CreationTime.Year,
                                          CreationTime = x.CreationTime.TryToDateTime()
                                      })
                                      .GroupBy(x => x.Year)
                                      .Select(x => new QueryPostForAdminDto
                                      {
                                          Year = x.Key,
                                          Posts = x.ToList()
                                      }).ToList();

            result.IsSuccess(new PagedList<QueryPostForAdminDto>(count.TryToInt(), list));
            return result;
        }
    }
}

實現邏輯也非常簡單和之前一樣,就是在Select的時候多了一個Id,添加一個新的Controller:BlogController.Admin.cs,添加這個接口。

//BlogController.Admin.cs
using Meowv.Blog.Application.Contracts;
using Meowv.Blog.Application.Contracts.Blog;
using Meowv.Blog.ToolKits.Base;
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Mvc;
using System.Threading.Tasks;
using static Meowv.Blog.Domain.Shared.MeowvBlogConsts;

namespace Meowv.Blog.HttpApi.Controllers
{
    public partial class BlogController
    {
        /// <summary>
        /// 分頁查詢文章列表
        /// </summary>
        /// <param name="input"></param>
        /// <returns></returns>
        [HttpGet]
        [Authorize]
        [Route("admin/posts")]
        [ApiExplorerSettings(GroupName = Grouping.GroupName_v2)]
        public async Task<ServiceResult<PagedList<QueryPostForAdminDto>>> QueryPostsForAdminAsync([FromQuery] PagingInput input)
        {
            return await _blogService.QueryPostsForAdminAsync(input);
        }
    }
}

因為是後台的接口,所以加上AuthorizeAttribute,指定接口組為GroupName_v2,參數方式為[FromQuery]

當沒有進行授權的時候,是無法訪問接口的。

新增文章

在做新增文章的時候要注意幾點,不是單純的添加文章數據就結束了,要指定文章分類,添加文章的標籤。添加標籤我這裡是從標籤庫中去取得數據,只存標籤Id,所以添加標籤的時候就可能存在添加了標籤庫中已有的標籤。

新建一個新增和更新文章的通用輸出參數模型類,起名:EditPostInput,繼承PostDto,然後添加標籤Tags字段,返回類型IEnumerable<string>

//EditPostInput.cs
using System.Collections.Generic;

namespace Meowv.Blog.Application.Contracts.Blog.Params
{
    public class EditPostInput : PostDto
    {
        /// <summary>
        /// 標籤列表
        /// </summary>
        public IEnumerable<string> Tags { get; set; }
    }
}

添加新增文章的接口:InsertPostAsync

/// <summary>
/// 新增文章
/// </summary>
/// <param name="input"></param>
/// <returns></returns>
Task<ServiceResult> InsertPostAsync(EditPostInput input);

然後去實現這個接口,實現之前,配置AutoMapper實體映射。

CreateMap<EditPostInput, Post>().ForMember(x => x.Id, opt => opt.Ignore());

EditPostInput轉換為Post,並且忽略Id字段。

/// <summary>
/// 新增文章
/// </summary>
/// <param name="input"></param>
/// <returns></returns>
public async Task<ServiceResult> InsertPostAsync(EditPostInput input)
{
    var result = new ServiceResult();

    var post = ObjectMapper.Map<EditPostInput, Post>(input);
    post.Url = $"{post.CreationTime.ToString(" yyyy MM dd ").Replace(" ", "/")}{post.Url}/";
    await _postRepository.InsertAsync(post);

    var tags = await _tagRepository.GetListAsync();

    var newTags = input.Tags
                       .Where(item => !tags.Any(x => x.TagName.Equals(item)))
                       .Select(item => new Tag
                       {
                           TagName = item,
                           DisplayName = item
                       });
    await _tagRepository.BulkInsertAsync(newTags);

    var postTags = input.Tags.Select(item => new PostTag
    {
        PostId = post.Id,
        TagId = _tagRepository.FirstOrDefault(x => x.TagName == item).Id
    });
    await _postTagRepository.BulkInsertAsync(postTags);

    result.IsSuccess(ResponseText.INSERT_SUCCESS);
    return result;
}

URL字段,根據創建時間按照yyyy/MM/dd/name/格式拼接。

然後找出是否有新標籤,有的話批量添加至標籤表。

再根據input.Tags構建PostTag列表,也進行批量保存,這樣才算是新增好一篇文章,最後輸出ResponseText.INSERT_SUCCESS常量,提示成功。

BlogController.Admin.cs添加API。

/// <summary>
/// 新增文章
/// </summary>
/// <param name="input"></param>
/// <returns></returns>
[HttpPost]
[Authorize]
[Route("post")]
[ApiExplorerSettings(GroupName = Grouping.GroupName_v2)]
public async Task<ServiceResult> InsertPostAsync([FromBody] EditPostInput input)
{
    return await _blogService.InsertPostAsync(input);
}

更新文章

更新操作和新增操作輸入參數一樣,只新增一個Id用來標識更新那篇文章,添加UpdatePostAsync更新文章接口。

/// <summary>
/// 更新文章
/// </summary>
/// <param name="id"></param>
/// <param name="input"></param>
/// <returns></returns>
Task<ServiceResult> UpdatePostAsync(int id, EditPostInput input);

同樣的實現這個接口。

/// <summary>
/// 更新文章
/// </summary>
/// <param name="id"></param>
/// <param name="input"></param>
/// <returns></returns>
public async Task<ServiceResult> UpdatePostAsync(int id, EditPostInput input)
{
    var result = new ServiceResult();

    var post = await _postRepository.GetAsync(id);
    post.Title = input.Title;
    post.Author = input.Author;
    post.Url = $"{input.CreationTime.ToString(" yyyy MM dd ").Replace(" ", "/")}{input.Url}/";
    post.Html = input.Html;
    post.Markdown = input.Markdown;
    post.CreationTime = input.CreationTime;
    post.CategoryId = input.CategoryId;

    await _postRepository.UpdateAsync(post);

    var tags = await _tagRepository.GetListAsync();

    var oldPostTags = from post_tags in await _postTagRepository.GetListAsync()
                      join tag in await _tagRepository.GetListAsync()
                      on post_tags.TagId equals tag.Id
                      where post_tags.PostId.Equals(post.Id)
                      select new
                      {
                          post_tags.Id,
                          tag.TagName
                      };

    var removedIds = oldPostTags.Where(item => !input.Tags.Any(x => x == item.TagName) &&
                                               tags.Any(t => t.TagName == item.TagName))
                                .Select(item => item.Id);
    await _postTagRepository.DeleteAsync(x => removedIds.Contains(x.Id));

    var newTags = input.Tags
                       .Where(item => !tags.Any(x => x.TagName == item))
                       .Select(item => new Tag
                       {
                           TagName = item,
                           DisplayName = item
                       });
    await _tagRepository.BulkInsertAsync(newTags);

    var postTags = input.Tags
                        .Where(item => !oldPostTags.Any(x => x.TagName == item))
                        .Select(item => new PostTag
                        {
                            PostId = id,
                            TagId = _tagRepository.FirstOrDefault(x => x.TagName == item).Id
                        });
    await _postTagRepository.BulkInsertAsync(postTags);

    result.IsSuccess(ResponseText.UPDATE_SUCCESS);
    return result;
}

ResponseText.UPDATE_SUCCESS是常量更新成功。

先根據Id查詢到數據庫中的這篇文章數據,然後根據input參數,修改需要修改的數據,最後保存。

注意的是,如果修改的時候修改了標籤,有可能新增也有可能刪除,也許會又有新增又有刪除。

這時候就需要注意,這裏做了一個比較通用的方法,找到數據庫中當前文章Id的所有Tags,然後根據參數input.Tags可以找出被刪掉的標籤的PostTags的Id,調用刪除方法刪掉即可,同時也可以獲取到新增的標籤,批量進行保存。

完成上面操作后,才保存新加標籤與文章對應的數據,最後提示更新成功,在BlogController.Admin添加API。

/// <summary>
/// 更新文章
/// </summary>
/// <param name="id"></param>
/// <param name="input"></param>
/// <returns></returns>
[HttpPut]
[Authorize]
[Route("post")]
[ApiExplorerSettings(GroupName = Grouping.GroupName_v2)]
public async Task<ServiceResult> UpdatePostAsync([Required] int id, [FromBody] EditPostInput input)
{
    return await _blogService.UpdatePostAsync(id, input);
}

[HttpPut]指定請求方式為put請求,一般需要修改用put,添加用post。

[Required]指定參數id必填且是FromQuery的方式,input為[FromBody]

更新一下上面新增的數據試試。

刪除文章

刪除相對來說就非常簡單了,一般刪除都會做邏輯刪除,就是避免某些手殘刪除了,有找回的餘地,我們這裏就直接Delete了,也沒什麼重要數據。

添加接口:DeletePostAsync

/// <summary>
/// 刪除文章
/// </summary>
/// <param name="id"></param>
/// <returns></returns>
Task<ServiceResult> DeletePostAsync(int id);

實現接口。

/// <summary>
/// 刪除文章
/// </summary>
/// <param name="id"></param>
/// <returns></returns>
public async Task<ServiceResult> DeletePostAsync(int id)
{
    var result = new ServiceResult();

    var post = await _postRepository.GetAsync(id);
    if (null == post)
    {
        result.IsFailed(ResponseText.WHAT_NOT_EXIST.FormatWith("Id", id));
        return result;
    }

    await _postRepository.DeleteAsync(id);
    await _postTagRepository.DeleteAsync(x => x.PostId == id);

    result.IsSuccess(ResponseText.DELETE_SUCCESS);
    return result;
}

刪除的時候同樣去查詢一下數據,來判斷是否存在。

ResponseText.DELETE_SUCCESS是添加的常量刪除成功,刪除成功同時也要將post_tags表的標籤對應關係也幹掉才算完整,在BlogController.Admin添加API。

/// <summary>
/// 刪除文章
/// </summary>
/// <param name="id"></param>
/// <returns></returns>
[HttpDelete]
[Authorize]
[Route("post")]
[ApiExplorerSettings(GroupName = Grouping.GroupName_v2)]
public async Task<ServiceResult> DeletePostAsync([Required] int id)
{
    return await _blogService.DeletePostAsync(id);
}

[HttpDelete]指定請求方式是刪除資源,[Required]指定參數Id必填。

刪掉上面添加的文章看看效果。

至此,完成了博客文章的增刪改接口,未完待續…

開源地址:https://github.com/Meowv/Blog/tree/blog_tutorial

搭配下方課程學習更佳 ↓ ↓ ↓

http://gk.link/a/10iQ7

本站聲明:網站內容來源於博客園,如有侵權,請聯繫我們,我們將及時處理

【其他文章推薦】

※自行創業缺乏曝光? 網頁設計幫您第一時間規劃公司的形象門面

網頁設計一頭霧水該從何著手呢? 台北網頁設計公司幫您輕鬆架站!

※想知道最厲害的網頁設計公司"嚨底家"!

※別再煩惱如何寫文案,掌握八大原則!

※產品缺大量曝光嗎?你需要的是一流包裝設計!

※回頭車貨運收費標準

台中搬家公司費用怎麼算?

藍委要核四燃料棒先不運國外 蘇貞昌:可問侯友宜

摘錄自2020年3月31日中央社報導

國民黨立委鄭正鈐今(31日)說,政府是否承諾在核四商轉公投前不將核四燃料棒送到國外,行政院長蘇貞昌表示,這不是他喊停就能停,新北市長侯友宜一直對核安表示態度,可先問侯的態度。

立法院會今天繼續進行施政總質詢,鄭正鈐在質詢時詢問,全國性公投第17案的核四商轉公投已經成案,明年會投票,但核四目前的狀況,恐讓明年的公投變成無意義的公投,因此他希望蘇貞昌是否承諾在明年公投前不將核四燃料棒送到國外,以及台電也能依法提出核四廠建廠執照的延期申請。

對此,蘇貞昌表示,核三廠在他的故鄉,當年他是屏東縣長,核四在新北市,他也當過台北縣長,這可以先問問新北市長侯友宜對核四執照、燃料棒的態度與看法。

【其他文章推薦】

※(全省)堆高機租賃保養一覽表

※高效率洗滌塔活性碳設備,能去除多少有機溶劑?

塑膠射出成型技師工作甘苦談

臭氧機推薦