From 676e70436fce3018407acb9f72a4a730272de928 Mon Sep 17 00:00:00 2001 From: Ethan Shen <42264778+nczitzk@users.noreply.github.com> Date: Wed, 8 Nov 2023 00:31:13 +0800 Subject: [PATCH] =?UTF-8?q?feat(route):=20add=20=E7=BD=97=E6=88=88?= =?UTF-8?q?=E7=BD=91=20(#13704)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * feat(route): add 罗戈网 * fix typo * fix typo --- lib/v2/logclub/index.js | 134 ++++++++++++ lib/v2/logclub/maintainer.js | 9 + lib/v2/logclub/radar.js | 139 ++++++++++++ lib/v2/logclub/report.js | 98 +++++++++ lib/v2/logclub/router.js | 5 + lib/v2/logclub/templates/description.art | 33 +++ website/docs/routes/new-media.mdx | 262 +++++++++++++++++++++++ 7 files changed, 680 insertions(+) create mode 100644 lib/v2/logclub/index.js create mode 100644 lib/v2/logclub/maintainer.js create mode 100644 lib/v2/logclub/radar.js create mode 100644 lib/v2/logclub/report.js create mode 100644 lib/v2/logclub/router.js create mode 100644 lib/v2/logclub/templates/description.art diff --git a/lib/v2/logclub/index.js b/lib/v2/logclub/index.js new file mode 100644 index 00000000000000..01d0ca5c752e8e --- /dev/null +++ b/lib/v2/logclub/index.js @@ -0,0 +1,134 @@ +const got = require('@/utils/got'); +const cheerio = require('cheerio'); +const { parseDate } = require('@/utils/parse-date'); +const { art } = require('@/utils/render'); +const path = require('path'); + +module.exports = async (ctx) => { + const { category = 'news' } = ctx.params; + const limit = ctx.query.limit ? parseInt(ctx.query.limit, 10) : 11; + + const rootUrl = 'https://www.logclub.com'; + const currentUrl = new URL(category, rootUrl).href; + + const { data: response } = await got(currentUrl); + + const $ = cheerio.load(response); + + let items = $('li.layui-row, li.layui-timeline-item') + .slice(0, limit) + .toArray() + .map((item) => { + item = $(item); + + const a = item.find('div.newslist-txt h3 a, a.article_title').first(); + const image = item.find('img.img-hover').prop('src')?.split(/\?/)[0] ?? undefined; + + return { + title: a.text(), + link: new URL(a.prop('href'), rootUrl).href, + description: art(path.join(__dirname, 'templates/description.art'), { + image: { + src: image, + alt: a.text(), + }, + intro: item.find('p.newslist-intro, div.newslist-info-intro').text(), + }), + itunes_item_image: image, + }; + }); + + items = await Promise.all( + items.map((item) => + ctx.cache.tryGet(item.link, async () => { + const { data: detailResponse } = await got(item.link); + + const content = cheerio.load(detailResponse); + + content('a.dl_file').each((_, el) => { + el = content(el); + el.parent().remove(); + }); + content('img').each((_, el) => { + el = content(el); + el.replaceWith( + art(path.join(__dirname, 'templates/description.art'), { + image: { + src: el.prop('src')?.split(/\?/)[0] ?? undefined, + alt: el.prop('title'), + }, + }) + ); + }); + + item.title = content('h1, div.current_video_title').first().text(); + + item.enclosure_url = content('video#ref_video').prop('src'); + if (item.enclosure_url) { + item.enclosure_type = `video/${item.enclosure_url.split(/\./).pop()}`; + } + + item.description += art(path.join(__dirname, 'templates/description.art'), { + video: { + poster: item.itunes_item_image, + src: item.enclosure_url, + type: item.enclosure_type, + }, + description: content('div.article-cont').html(), + }); + item.author = content('div.article-info-r a') + .toArray() + .map((a) => content(a).text()) + .join('/'); + item.category = [ + ...new Set([ + ...content('div.article-label-r a.label') + .toArray() + .map((c) => content(c).text()), + ...(content('meta[name="keywords"]') + .prop('content') + ?.split(/\s?,\s?/) ?? []), + ]), + ].filter((c) => c); + + if (content('span.aritlceIn-time').length === 0) { + item.pubDate = parseDate( + content( + content('div.video_info_item, div.lc-infos div') + .toArray() + .filter((i) => /\d{4}-\d{2}-\d{2}/.test(content(i).text())) + .pop() + ) + .text() + .split(/:/) + .pop() + .trim() + ); + } else { + item.pubDate = parseDate(content('span.aritlceIn-time').text().trim()); + } + + return item; + }) + ) + ); + + const icon = new URL($('link[rel="shortcut icon"]').prop('href'), rootUrl).href; + const subtitle = $('meta[name="keywords"]').prop('content'); + const author = subtitle.split(/,/)[0]; + + ctx.state.data = { + item: items, + title: $('title').text().split(/-/)[0].trim(), + link: currentUrl, + description: $('meta[name="description"]').prop('content'), + language: 'zh', + image: new URL($('div.logo_img img').prop('src'), rootUrl).href, + icon, + logo: icon, + subtitle: subtitle.replace(/,/g, ''), + author, + itunes_author: author, + itunes_category: 'News', + }; +}; diff --git a/lib/v2/logclub/maintainer.js b/lib/v2/logclub/maintainer.js new file mode 100644 index 00000000000000..68c46e20c708f0 --- /dev/null +++ b/lib/v2/logclub/maintainer.js @@ -0,0 +1,9 @@ +module.exports = { + '/company/:id': ['nczitzk'], + '/columnist/articleList/:id': ['nczitzk'], + '/lc_report/:id?': ['nczitzk'], + '/news/:id?': ['nczitzk'], + '/original': ['nczitzk'], + '/recruit': ['nczitzk'], + '/tender': ['nczitzk'], +}; diff --git a/lib/v2/logclub/radar.js b/lib/v2/logclub/radar.js new file mode 100644 index 00000000000000..675254d7cc9cf0 --- /dev/null +++ b/lib/v2/logclub/radar.js @@ -0,0 +1,139 @@ +module.exports = { + 'logclub.com': { + _name: '罗戈网', + '.': [ + { + title: '资讯', + docs: 'https://docs.rsshub.app/routes/new-media#luo-ge-wang-zi-xun', + source: ['/news/:id', '/news'], + target: (params) => { + const id = params.id; + + return `/logclub/news${id ? `/${id}` : ''}`; + }, + }, + { + title: '资讯 - 供应链', + docs: 'https://docs.rsshub.app/routes/new-media#luo-ge-wang-zi-xun', + source: ['/news/10-16'], + target: '/logclub/news/10-16', + }, + { + title: '资讯 - 快递', + docs: 'https://docs.rsshub.app/routes/new-media#luo-ge-wang-zi-xun', + source: ['/news/11'], + target: '/logclub/news/11', + }, + { + title: '资讯 - 快运/运输', + docs: 'https://docs.rsshub.app/routes/new-media#luo-ge-wang-zi-xun', + source: ['/news/30'], + target: '/logclub/news/30', + }, + { + title: '资讯 - 仓储/地产', + docs: 'https://docs.rsshub.app/routes/new-media#luo-ge-wang-zi-xun', + source: ['/news/9'], + target: '/logclub/news/9', + }, + { + title: '资讯 - 物流综合', + docs: 'https://docs.rsshub.app/routes/new-media#luo-ge-wang-zi-xun', + source: ['/news/32'], + target: '/logclub/news/32', + }, + { + title: '资讯 - 国际与跨境物流', + docs: 'https://docs.rsshub.app/routes/new-media#luo-ge-wang-zi-xun', + source: ['/news/114'], + target: '/logclub/news/114', + }, + { + title: '资讯 - 科技创新', + docs: 'https://docs.rsshub.app/routes/new-media#luo-ge-wang-zi-xun', + source: ['/news/107'], + target: '/logclub/news/107', + }, + { + title: '资讯 - 绿色供应链', + docs: 'https://docs.rsshub.app/routes/new-media#luo-ge-wang-zi-xun', + source: ['/news/213'], + target: '/logclub/news/213', + }, + { + title: '资讯 - 低碳物流', + docs: 'https://docs.rsshub.app/routes/new-media#luo-ge-wang-zi-xun', + source: ['/news/214'], + target: '/logclub/news/214', + }, + { + title: '资讯 - 碳中和碳达峰', + docs: 'https://docs.rsshub.app/routes/new-media#luo-ge-wang-zi-xun', + source: ['/news/215'], + target: '/logclub/news/215', + }, + { + title: '招聘', + docs: 'https://docs.rsshub.app/routes/new-media#luo-ge-wang-zhao-pin', + source: ['/recruit'], + target: '/logclub/recruit', + }, + { + title: '报告', + docs: 'https://docs.rsshub.app/routes/new-media#luo-ge-wang-bao-gao', + source: ['/lc_report'], + target: (params, url, document) => { + const id = document + ?.querySelector('li.layui-this[id]') + ?.id?.replace(/_/g, ' ') + .replace(/\b\w/g, (c) => c.toUpperCase()) + .replace(/\s/g, ''); + + return `/logclub/lc_report${id ? `/${id}` : ''}`; + }, + }, + { + title: '报告 - 罗戈研究出品', + docs: 'https://docs.rsshub.app/routes/new-media#luo-ge-wang-bao-gao', + source: ['/lc_report'], + target: '/logclub/lc_report/Report', + }, + { + title: '报告 - 物流报告', + docs: 'https://docs.rsshub.app/routes/new-media#luo-ge-wang-bao-gao', + source: ['/lc_report'], + target: '/logclub/lc_report/IndustryReport', + }, + { + title: '报告 - 绿色双碳报告', + docs: 'https://docs.rsshub.app/routes/new-media#luo-ge-wang-bao-gao', + source: ['/lc_report'], + target: '/logclub/lc_report/GreenDualCarbonReport', + }, + { + title: '招投标', + docs: 'https://docs.rsshub.app/routes/new-media#luo-ge-wang-zhao-tou-biao', + source: ['/tender'], + target: '/logclub/tender', + }, + { + title: '原创', + docs: 'https://docs.rsshub.app/routes/new-media#luo-ge-wang-zhao-yuan-chuang', + source: ['/original'], + target: '/logclub/original', + }, + { + title: '大企业', + docs: 'https://docs.rsshub.app/routes/new-media#luo-ge-wang-zhao-da-qi-ye', + source: ['/company/:id'], + target: '/logclub/company/:id', + }, + { + title: '专家说', + docs: 'https://docs.rsshub.app/routes/new-media#luo-ge-wang-zhao-zhuan-jia-shuo', + source: ['/columnist/articleList/:id'], + target: '/logclub/columnist/articleList/:id', + }, + ], + }, +}; diff --git a/lib/v2/logclub/report.js b/lib/v2/logclub/report.js new file mode 100644 index 00000000000000..1abd9b1b97f938 --- /dev/null +++ b/lib/v2/logclub/report.js @@ -0,0 +1,98 @@ +const got = require('@/utils/got'); +const cheerio = require('cheerio'); +const timezone = require('@/utils/timezone'); +const { parseDate } = require('@/utils/parse-date'); +const { art } = require('@/utils/render'); +const path = require('path'); + +module.exports = async (ctx) => { + const { id = 'Report' } = ctx.params; + const limit = ctx.query.limit ? parseInt(ctx.query.limit, 10) : 11; + + const rootUrl = 'https://www.logclub.com'; + const currentUrl = new URL('lc_report', rootUrl).href; + const apiUrl = new URL(`front/lc_report/load${id}List`, rootUrl).href; + + const { data: response } = await got.post(apiUrl, { + json: { + page: 1, + }, + }); + + let items = response.list.slice(0, limit).map((item) => ({ + title: item.title, + link: new URL(`front/lc_report/get_report_info/${item.id}`, rootUrl).href, + description: art(path.join(__dirname, 'templates/description.art'), { + image: { + src: item.img_url?.split(/\?/)[0] ?? undefined, + alt: item.title, + }, + }), + author: item.author, + category: [item.channel_name], + guid: `logclub-report-${item.id}`, + pubDate: timezone(parseDate(item.release_time), +8), + })); + + items = await Promise.all( + items.map((item) => + ctx.cache.tryGet(item.link, async () => { + const { data: detailResponse } = await got(item.link); + + const content = cheerio.load(detailResponse); + + content('img').each((_, el) => { + el = content(el); + el.replaceWith( + art(path.join(__dirname, 'templates/description.art'), { + image: { + src: el.prop('src')?.split(/\?/)[0] ?? undefined, + alt: el.prop('title'), + }, + }) + ); + }); + + item.title = content('h1').first().text(); + item.description += art(path.join(__dirname, 'templates/description.art'), { + description: content('div.article-cont').html(), + }); + item.author = content('div.lc-infos a') + .toArray() + .map((a) => content(a).text()) + .join('/'); + item.category = [ + ...new Set([ + ...(item.category ?? []), + ...content('div.article-label-r a.label') + .toArray() + .map((c) => content(c).text()), + ]), + ].filter((c) => c); + + return item; + }) + ) + ); + + const { data: currentResponse } = await got(currentUrl); + + const $ = cheerio.load(currentResponse); + + const title = $('div.this_nav').text().trim(); + const icon = new URL($('link[rel="shortcut icon"]').prop('href'), rootUrl).href; + const subtitle = $('meta[name="keywords"]').prop('content'); + + ctx.state.data = { + item: items, + title: `${$('title').text()}${title}`, + link: currentUrl, + description: $('meta[name="description"]').prop('content'), + language: 'zh', + image: new URL($('div.logo_img img').prop('src'), rootUrl).href, + icon, + logo: icon, + subtitle: subtitle.replace(/,/g, ''), + author: subtitle.split(/,/)[0], + }; +}; diff --git a/lib/v2/logclub/router.js b/lib/v2/logclub/router.js new file mode 100644 index 00000000000000..fa03f16902fffb --- /dev/null +++ b/lib/v2/logclub/router.js @@ -0,0 +1,5 @@ +module.exports = (router) => { + router.get('/lc_report/:id?', require('./report')); + router.get('/report/:id?', require('./report')); + router.get('/:category*', require('./')); +}; diff --git a/lib/v2/logclub/templates/description.art b/lib/v2/logclub/templates/description.art new file mode 100644 index 00000000000000..eedb4179b066ae --- /dev/null +++ b/lib/v2/logclub/templates/description.art @@ -0,0 +1,33 @@ +{{ if image?.src }} +
+ {{ image.alt }} +
+{{ /if }} + +{{ if intro }} +

{{ intro }}

+{{ /if }} + +{{ if video?.src }} + +{{ /if }} + +{{ if description }} + {{@ description }} +{{ /if }} \ No newline at end of file diff --git a/website/docs/routes/new-media.mdx b/website/docs/routes/new-media.mdx index 8eda702dc6baac..c94ca05d0fe11a 100644 --- a/website/docs/routes/new-media.mdx +++ b/website/docs/routes/new-media.mdx @@ -4300,6 +4300,268 @@ column 为 third 时可选的 category: +## 罗戈网 {#luo-ge-wang} + +### 资讯 {#luo-ge-wang-zi-xun} + + + +| 供应链 | 快递 | 快运/运输 | 仓储/地产 | 物流综合 | 国际与跨境物流 | 科技创新 | +| ------ | ---- | --------- | --------- | -------- | -------------- | -------- | +| 10-16 | 11 | 30 | 9 | 32 | 114 | 107 | + +| 绿色供应链 | 低碳物流 | 碳中和碳达峰 | +| ---------- | -------- | ------------ | +| 213 | 214 | 215 | + + + +### 招聘 {#luo-ge-wang-zhao-pin} + + + +### 报告 {#luo-ge-wang-bao-gao} + + + +| 罗戈研究出品 | 物流报告 | 绿色双碳报告 | +| ------------ | -------------- | --------------------- | +| Report | IndustryReport | GreenDualCarbonReport | + + + +### 招投标 {#luo-ge-wang-zhao-tou-biao} + + + +### 原创 {#luo-ge-wang-yuan-chuang} + + + +### 大企业 {#luo-ge-wang-da-qi-ye} + + + +#### 明星企业 {#luo-ge-wang-da-qi-ye-ming-xing-qi-ye} + +| 顺丰 | 菜鸟 | 京东物流 | 德邦快递/德邦股份 | +| ---- | ---- | -------- | ----------------- | +| 14 | 56 | 453 | 145 | + +| 百世集团 | 中国物流集团 | 极兔速递 | 中通快递 | +| -------- | ------------ | -------- | -------- | +| 116 | 6807 | 3246 | 132 | + +前往 [更多](https://www.logclub.com/columnist/more/star) 查看更多企业 + +#### 综合物流/供应链企业 {#luo-ge-wang-da-qi-ye-zong-he-wu-liu-gong-ying-lian-qi-ye} + +| 锐特信息 | 中国物流与采购网 | 则一 | 普路通 | +| -------- | ---------------- | ---- | ------ | +| 716 | 525 | 524 | 464 | + +| 安得智联 | 集保中国 | 上汽安吉物流 | 苏宁物流 | +| -------- | -------- | ------------ | -------- | +| 215 | 147 | 15 | 12 | + +| 准时达 | 深国际 | 益邦控股 | 卓志跨境供应链 | +| ------ | ------ | -------- | -------------- | +| 158 | 167 | 758 | 130 | + +| 日日顺 | 传化智联 | CJ荣庆物流 | 江苏飞力达 | +| ------ | -------- | ---------- | ---------- | +| 179 | 166 | 770 | 548 | + +前往 [更多](https://www.logclub.com/columnist/more/integrated_logistics) 查看更多企业 + +#### 快递/快运企业 {#luo-ge-wang-da-qi-ye-kuai-di-kuai-yun-qi-ye} + +| 盛丰物流 | 跨越速运 | 顺心捷达 | 中国邮政 | +| -------- | -------- | -------- | -------- | +| 819 | 372 | 327 | 134 | + +| 韵达 | 申通快递 | 圆通 | 壹米滴答集团 | +| ---- | -------- | ---- | ------------ | +| 113 | 137 | 143 | 97 | + +| 安能物流 | 联邦快递FedEx | UPS | DHL | +| -------- | ------------- | --- | --- | +| 151 | 104 | 388 | 219 | + +| 优速快递 | 中铁快运 | 德坤物流 | 商桥物流 | +| -------- | -------- | -------- | -------- | +| 1243 | 1015 | 2254 | 99 | + +前往 [更多](https://www.logclub.com/columnist/more/express) 查看更多企业 + +#### 系统/智能平台/智能硬件/设施企业 {#luo-ge-wang-da-qi-ye-xi-tong-zhi-neng-ping-tai-zhi-neng-ying-jian-she-shi-qi-ye} + +| 甲子光年 | 炬星科技 | 斑马智行 | 智行者 | +| -------- | -------- | -------- | ------ | +| 700 | 665 | 540 | 510 | + +| 纵行科技 | 行深智能 | 地上铁 | 图森未来 | +| -------- | -------- | ------ | -------- | +| 509 | 508 | 500 | 445 | + +| oTMS运输管理云平台 | 聚龄供应链 | 博科资讯 | 富勒FLUX | +| ------------------ | ---------- | -------- | -------- | +| 53 | 5806 | 6870 | 122 | + +| 科箭软件 | 通天晓软件 | 嬴彻科技 | 货车宝 | +| -------- | ---------- | -------- | ------ | +| 180 | 503 | 462 | 129 | + +前往 [更多](https://www.logclub.com/columnist/more/intellectualization) 查看更多企业 + +#### 货运/配送平台/仓储/地产企业 {#luo-ge-wang-da-qi-ye-huo-yun-pei-song-ping-tai-cang-chu-di-chan-qi-ye} + +| 卡力互联 | 想乐送 | 宝湾物流 | 卡车之家 | +| -------- | ------ | -------- | -------- | +| 1660 | 1558 | 1031 | 365 | + +| 罗宾升 | 好多车 | 饿了么 | 闪送 | +| ------ | ------ | ------ | ---- | +| 308 | 269 | 172 | 80 | + +| 宏昌物流园 | 路歌互联网物流平台 | 福佑卡车 | 普洛斯 | +| ---------- | ------------------ | -------- | ------ | +| 6816 | 182 | 18 | 150 | + +| 菜鸟速递 | 达达集团 | 满帮集团 | 货拉拉 | +| -------- | -------- | -------- | ------ | +| 1972 | 748 | 193 | 79 | + +前往 [更多](https://www.logclub.com/columnist/more/freight_transport) 查看更多企业 + +#### 证券交运/咨询机构 {#luo-ge-wang-da-qi-ye-zheng-quan-jiao-yun-zi-xun-ji-gou} + +| 罗戈网 | 物流沙龙 | 罗戈研究 | 招商证券 | +| ------ | -------- | -------- | -------- | +| 17 | 21 | 26 | 51 | + +| 兴业证券 | 环球物流咨询规划 | 华创证券 | 艾瑞咨询 | +| -------- | ---------------- | -------- | -------- | +| 161 | 29 | 1287 | 58 | + +| 安信证券 | 天风证券 | 方正证券 | 中信证券 | +| -------- | -------- | -------- | -------- | +| 1295 | 1136 | 1169 | 469 | + +| 申万宏源证券 | 国海证券 | 华泰证券 | 东方证券 | +| ------------ | -------- | -------- | -------- | +| 1296 | 6381 | 2119 | 1772 | + +前往 [更多](https://www.logclub.com/columnist/more/securities_delivery) 查看更多企业 + +#### 资本 {#luo-ge-wang-da-qi-ye-zi-ben} + +| 源码资本 | 华兴资本 | IDG资本 | 元赋资本 | +| -------- | -------- | ------- | -------- | +| 1037 | 931 | 787 | 393 | + +| 钟鼎资本 | 红杉资本 | +| -------- | -------- | | | +| 159 | 5265 | + +前往 [更多](https://www.logclub.com/columnist/more/capital) 查看更多企业 + + + +### 专家说 {#luo-ge-wang-zhuan-jia-shuo} + + + +#### 精选专家 {#luo-ge-wang-zhuan-jia-shuo-jing-xuan-zhuan-jia} + +| 潘永刚 | Tracy | 唐隆基 | 褚建新 | +| ------ | ----- | ------ | ------ | +| 27 | 157 | 91 | 9749 | + +前往 [更多](https://www.logclub.com/columnist/authorMore/experts) 查看更多专家 + +#### 资深作者 {#luo-ge-wang-zhuan-jia-shuo-zi-shen-zuo-zhe} + +| 物流麻将胡 | 小周伯通 | 郭嘉 | 周艳青 | +| ---------- | -------- | ---- | ------ | +| 10 | 19 | 7 | 559 | + +前往 [更多](https://www.logclub.com/columnist/authorMore/author) 查看更多专家 + +#### 综合物流 {#luo-ge-wang-zhuan-jia-shuo-zong-he-wu-liu} + +| 韩雪峰 | 李赛赛 | 陈晓曦 | 李长宏 | +| ------ | ------ | ------ | ------ | +| 41 | 12378 | 1495 | 110 | + +前往 [更多](https://www.logclub.com/columnist/authorMore/integrated_logistics) 查看更多专家 + +#### 数字化 {#luo-ge-wang-zhuan-jia-shuo-shu-zi-hua} + +| 秦愉 | 冯雷 | 卢立新 | 段琰 | +| ---- | ---- | ------ | ---- | +| 160 | 147 | 95 | 284 | + +前往 [更多](https://www.logclub.com/columnist/authorMore/digitization) 查看更多专家 + +#### 智能化 {#luo-ge-wang-zhuan-jia-shuo-zhi-neng-hua} + +| 曾志宏 | 亦橙 | 马荣 | 陈晓春 | +| ------ | ---- | ---- | ------ | +| 34 | 201 | 130 | 123 | + +前往 [更多](https://www.logclub.com/columnist/authorMore/intellectualization) 查看更多专家 + +#### 快运 {#luo-ge-wang-zhuan-jia-shuo-kuai-yun} + +| 王坚 | 王拥军 | 靖晟 | 廖文明 | +| ---- | ------ | ---- | ------ | +| 172 | 252 | 84 | 50 | + +前往 [更多](https://www.logclub.com/columnist/authorMore/express_transportation) 查看更多专家 + +#### 合同物流 {#luo-ge-wang-zhuan-jia-shuo-he-tong-wu-liu} + +| 非红 | 王鹏飞 | 周海 | 王伟 | +| ---- | ------ | ---- | ---- | +| 40 | 2274 | 168 | 158 | + +前往 [更多](https://www.logclub.com/columnist/authorMore/contract_logistics) 查看更多专家 + +#### 供应链 {#luo-ge-wang-zhuan-jia-shuo-gong-ying-lian} + +| 黄尧笛 | 卓弘毅 | 胡珉 | 雷文军Jason | +| ------ | ------ | ---- | ----------- | +| 26 | 35 | 188 | 303 | + +前往 [更多](https://www.logclub.com/columnist/authorMore/supply_chain) 查看更多专家 + +#### 快递 {#luo-ge-wang-zhuan-jia-shuo-kuai-di} + +| 致快递 | 中通之声 | 科技中通 | 明兴 | +| ------ | -------- | -------- | ---- | +| 9633 | 618 | 385 | 265 | + +前往 [更多](https://www.logclub.com/columnist/authorMore/express) 查看更多专家 + +#### 城配 {#luo-ge-wang-zhuan-jia-shuo-cheng-pei} + +| 张春鑫(荡漾哥) | 梁佳 | 赵波 | 王行广 | +| -------------- | ---- | ---- | ------ | +| 1527 | 3374 | 49 | 75 | + +前往 [更多](https://www.logclub.com/columnist/authorMore/urban_distribution) 查看更多专家 + +#### 仓储 {#luo-ge-wang-zhuan-jia-shuo-cang-chu} + +| 叶剑 | 木棉 | 陈艺 | 冯银川 | +| ---- | ---- | ---- | ------ | +| 1881 | 59 | 1637 | 215 | + +前往 [更多](https://www.logclub.com/columnist/authorMore/storage) 查看更多专家 + + + ## 妈咪帮 {#ma-mi-bang}