From 8f6af83b7e0f633cefc14eea0ce1539c870f99a5 Mon Sep 17 00:00:00 2001 From: chenruilong <chenruilong@dcloud.io> Date: Wed, 12 Apr 2023 15:01:29 +0800 Subject: [PATCH] docs: update uni-cms.md --- docs/uniCloud/uni-cms.md | 170 ++++++++++++++++++++++++++++++++------- 1 file changed, 143 insertions(+), 27 deletions(-) diff --git a/docs/uniCloud/uni-cms.md b/docs/uniCloud/uni-cms.md index 7a96009bc..a08d477a1 100644 --- a/docs/uniCloud/uni-cms.md +++ b/docs/uniCloud/uni-cms.md @@ -36,11 +36,13 @@ uni-cms包括管ç†ç«¯å’Œç”¨æˆ·ç«¯ã€‚ ### 演示与截图 演示体验系统: - 管ç†ç«¯ï¼š[https://hellouniadmin.dcloud.net.cn/](https://hellouniadmin.dcloud.net.cn/) +- 客户端(å°ç¨‹åºï¼‰æ‰«ç 查看 +![](https://web-assets.dcloud.net.cn/unidoc/zh/202304121203155.jpg) #### 管ç†ç«¯æˆªå›¾ï¼š -![](https://web-assets.dcloud.net.cn/unidoc/zh/202303231717572.png) +![](https://web-assets.dcloud.net.cn/unidoc/zh/202304120145412.png) ![](https://web-assets.dcloud.net.cn/unidoc/zh/202304111812979.png) @@ -48,13 +50,43 @@ uni-cms包括管ç†ç«¯å’Œç”¨æˆ·ç«¯ã€‚ <div style="display: flex; flex-basis: 10px"> <div style="margin-right: 10px;"> - <img src="https://web-assets.dcloud.net.cn/unidoc/zh/202303231658499.jpg" width="375"/> + <img src="https://web-assets.dcloud.net.cn/unidoc/zh/202304120144625.png" width="375"/> </div> <div style="margin-right: 10px;"> - <img src="https://web-assets.dcloud.net.cn/unidoc/zh/202303231657737.jpg" width="375" /> + <img src="https://web-assets.dcloud.net.cn/unidoc/zh/202304120139988.png" width="375" /> </div> <div style="margin-right: 10px;"> - <img src="https://web-assets.dcloud.net.cn/unidoc/zh/202303231701150.jpg" width="375" /> + <img src="https://web-assets.dcloud.net.cn/unidoc/zh/202304120139209.png" width="375" /> +</div> +</div> + +## åŠŸèƒ½ä»‹ç» + +### æ–‡ç« åŸºç¡€åŠŸèƒ½ + +支æŒæ–‡ç« ä¿å˜è‰ç¨¿ã€å‘布ã€ç¼–辑ã€ä¸‹æž¶ã€åˆ 除ã€é˜…读é‡ç»Ÿè®¡ç‰åŠŸèƒ½ã€‚ + +åˆ›å»ºæ–‡ç« æ—¶æ”¯æŒä¿å˜ä¸ºè‰ç¨¿æˆ–者直接å‘布,当ä¿å˜ä¸ºè‰ç¨¿æ—¶ï¼Œæ–‡ç« å¯ä»¥å†æ¬¡ç¼–è¾‘ï¼Œç›´åˆ°æ–‡ç« å‘布æˆåŠŸã€‚ +å·²å‘å¸ƒçš„æ–‡ç« å¯ä»¥ç¼–辑,但是编辑åŽéœ€è¦æ›´æ–°æ–‡ç« ,æ‰èƒ½ç”Ÿæ•ˆã€‚ +当已å‘å¸ƒçš„æ–‡ç« å‡ºçŽ°ä¾µæƒæˆ–è€…ä¸€äº›åŽŸå› éœ€è¦éšè—时,å¯åœ¨æ–‡ç« 列表ä¸å¯¹è¯¥ç¯‡æ–‡ç« 进行下架æ“作,下架åŽçš„æ–‡ç« å°†ä¸ä¼šåœ¨å‰ç«¯å±•ç¤ºï¼ŒåŒæ—¶æ–‡ç« 状æ€ä¼šå˜ä¸ºâ€œè‰ç¨¿â€çŠ¶æ€ã€‚ + +阅读é‡ç»Ÿè®¡ï¼ˆPV):æ¯æ¬¡æ‰“å¼€æ–‡ç« è¯¦æƒ…é¡µï¼Œéƒ½ä¼šå‘åŽç«¯å‘é€è¯·æ±‚,åŽç«¯ä¼šå¯¹æ–‡ç« 的阅读é‡è¿›è¡ŒåŠ 一统计。 + +### 观看广告解é”全文 + +> 使用观看广告解é”全文功能需è¦åœ¨uni-adåŽå°å¼€é€š[激励视频广告](https://uniapp.dcloud.net.cn/component/ad-rewarded-video.html)。 +> +> ç›®å‰H5端ä¸æ”¯æŒå¹¿å‘Šï¼Œæ‰€ä»¥åœ¨H5ç«¯æ— æ³•ä½¿ç”¨è§‚çœ‹å¹¿å‘Šè§£é”全文功能 + +观看广告解é”全文功能,是uni-cmsçš„æ ¸å¿ƒåŠŸèƒ½ä¹‹ä¸€ã€‚å®ƒå¯ä»¥å¸®åŠ©å¼€å‘者快速å˜çŽ°ï¼Œæ高内容生产效率。 + +如何开通使用广告功能,请[å‚考](#watch-ad-unlock-content)。 + +用户端截图如下: + +<div style="display: flex; flex-basis: 10px"> +<div style="margin-right: 10px;"> + <img src="https://web-assets.dcloud.net.cn/unidoc/zh/202304120139209.png" width="375" /> </div> </div> @@ -129,6 +161,41 @@ uni-cms // uni-cms æ’件 │ ├── uni-cms-articles.js // æ–‡ç« è¡¨å•éªŒè¯ │ └── uni-cms-categories.js // 分类表å•éªŒè¯ ├── components // 组件 +│ ├── ai // uni-ai组件 +│ │ ├── chat.nvue // èŠå¤©ç»„件 +│ │ ├── common +│ │ │ ├── appEvent.js +│ │ │ ├── initIndexDB.js +│ │ │ ├── md5.js +│ │ │ ├── sqlite.js +│ │ │ ├── timestampToString.js +│ │ │ └── utils.js +│ │ ├── components +│ │ │ ├── uni-im-control +│ │ │ │ └── uni-im-control.vue +│ │ │ ├── uni-im-icons +│ │ │ │ ├── uni-im-icons.ttf +│ │ │ │ └── uni-im-icons.vue +│ │ │ ├── uni-im-msg +│ │ │ │ ├── html-parser.js +│ │ │ │ └── uni-im-msg.vue +│ │ │ └── uni-im-msg-list +│ │ │ ├── components +│ │ │ │ ├── uni-im-list +│ │ │ │ │ └── uni-im-list.vue +│ │ │ │ └── uni-im-list-item +│ │ │ │ └── uni-im-list-item.vue +│ │ │ └── uni-im-msg-list.vue +│ │ ├── lib +│ │ │ ├── MsgManager.js +│ │ │ ├── createObservable.js +│ │ │ └── main.js +│ │ └── static +│ │ ├── avatarUrl.png +│ │ ├── iconfont.css +│ │ ├── iconfont.ttf +│ │ ├── qrCode.png +│ │ └── sound-ing.gif │ └── editor // 富文本编辑器 (兼容H5, 微信å°ç¨‹åº, App, 基于Quill, 详è§https://quilljs.com/) │ ├── app.scss │ ├── editor.vue // 富文本编辑器组件 @@ -196,13 +263,40 @@ uni-cms // uni-cms æ’件 │ └── list // 分类列表 │ └── list.vue └── uniCloud // 云函数 - ├── cloudfunctions - └── database // æ•°æ®åº“ - ├── uni-cms-articles.schema.ext.js // æ–‡ç« è¡¨schema扩展 - ├── uni-cms-articles.schema.json // æ–‡ç« è¡¨ - └── uni-cms-categories.schema.json // 分类表 + ├── cloudfunctions + │ ├── uni-cms-co // uni-cms 云对象 + │ │ ├── index.obj.js // äº‘å¯¹è±¡å…¥å£ + │ │ ├── package.json + │ │ └── utils.js // uni-cms云对象工具 + │ └── uni-im-co // uni-im 云对象 + │ ├── index.obj.js // äº‘å¯¹è±¡å…¥å£ + │ └── package.json + └── database // æ•°æ®åº“ + ├── db_init.json // æ•°æ®åº“åˆå§‹åŒ–é…置,åˆå§‹åŒ–uni-ai用户 + ├── uni-cms-articles.schema.ext.js // uni-cms-articles 云函数扩展 + ├── uni-cms-articles.schema.json // uni-cms-articles æ•°æ®åº“表 + ├── uni-cms-categories.schema.json // uni-cms-categories æ•°æ®åº“表 + ├── uni-im-conversation.schema.ext.js // uni-im-conversation 云函数扩展 + ├── uni-im-conversation.schema.json // uni-im-conversation æ•°æ®åº“表 + ├── uni-im-friend.schema.json // uni-im-friend æ•°æ®åº“表 + ├── uni-im-group-member.schema.json // uni-im-group-member æ•°æ®åº“表 + ├── uni-im-group.schema.json // uni-im-group æ•°æ®åº“表 + ├── uni-im-msg.schema.ext.js // uni-im-msg 云函数扩展 + ├── uni-im-msg.schema.json // uni-im-msg æ•°æ®åº“表 + └── uni-im-notification.schema.json // uni-im-notification æ•°æ®åº“表 ``` +**æ•°æ®åº“表说明** + +- `uni-cms-articles` cmsæ–‡ç« è¡¨ï¼Œschema 结构[详è§](https://gitee.com/dcloud/opendb/tree/master/collection/uni-cms-articles) +- `uni-cms-categories` cms分类表,schema 结构[详è§](https://gitee.com/dcloud/opendb/tree/master/collection/uni-cms-categories) +- `uni-im-conversation` im会è¯è¡¨ï¼Œschema 结构[详è§](https://gitee.com/dcloud/opendb/tree/master/collection/uni-im-conversation) +- `uni-im-friend` im好å‹è¡¨ï¼Œschema 结构[详è§](https://gitee.com/dcloud/opendb/tree/master/collection/uni-im-friend) +- `uni-im-group-member` im群æˆå‘˜è¡¨ï¼Œschema 结构[详è§](https://gitee.com/dcloud/opendb/tree/master/collection/uni-im-group-member) +- `uni-im-group` im群表,schema 结构[详è§](https://gitee.com/dcloud/opendb/tree/master/collection/uni-im-group) +- `uni-im-msg` im消æ¯è¡¨ï¼Œschema 结构[详è§](https://gitee.com/dcloud/opendb/tree/master/collection/uni-im-msg) +- `uni-im-notification` im通知表,schema 结构[详è§](https://gitee.com/dcloud/opendb/tree/master/collection/uni-im-notification) + #### uni-cms-article 用户端æ’件 ```text uni-cms-article // uni-cms-article æ’件 @@ -230,11 +324,18 @@ uni-cms-article // uni-cms-article æ’件 │ └── uni-cms-unlock-callback // 内容解é”回调 │ └── index.js └── database // æ•°æ®åº“ + ├── db_init.json // æ•°æ®åº“åˆå§‹åŒ–é…ç½® ├── uni-cms-articles.schema.json // æ–‡ç« è¡¨ ├── uni-cms-categories.schema.json // 分类表 └── uni-cms-unlock-record.schema.json // 内容解é”记录表 ``` +**æ•°æ®è¡¨è¯´æ˜Ž** + +- `uni-cms-articles` æ–‡ç« è¡¨ï¼Œschema 结构[详è§](https://gitee.com/dcloud/opendb/tree/master/collection/uni-cms-articles) +- `uni-cms-categories` 分类表,schema 结构[详è§](https://gitee.com/dcloud/opendb/tree/master/collection/uni-cms-categories) +- `uni-cms-unlock-record` 内容解é”记录表,schema 结构[详è§](https://gitee.com/dcloud/opendb/tree/master/collection/uni-cms-unlock-record) + ### uni-cms é…ç½®@uni-cms-config uni-cms的云端的é…置文件统一使用[uni-config-center](uni-config-center.md)。 @@ -262,14 +363,22 @@ uni-cms的云端的é…置文件统一使用[uni-config-center](uni-config-center * `watchAdUniqueType` 为 `device` 时,表示按设备解é”。åŒä¸€è®¾å¤‡åªéœ€è§‚看一次广告,如果该设备观看过广告已解é”è¯¥æ–‡ç« ï¼Œå†æ¬¡æµè§ˆè¯¥æ–‡ç« å°†æ— éœ€å†è§‚看广告。如果应用的本机缓å˜è¢«æ¸…ç†ï¼Œåˆ™è§£é”失效。 * `watchAdUniqueType` 为 `user` 时,表示按用户解é”。æ¤ç”¨æˆ·ä¸ºuni-id用户,如果该用户已解é”è¯¥æ–‡ç« ï¼Œå†æ¬¡æµè§ˆè¯¥æ–‡ç« å°†æ— éœ€å†è§‚看广告。按用户解é”,需应用ä¸åŠ è½½uni-id-pagesæ’件。 -### uni-cms 云对象 +### 相关云函数 + +#### uni-cms + +> 管ç†ç«¯äº‘对象,æ供内容安全检测æœåŠ¡ -#### æŽ¥å£ +**接å£** | 接å£å称 | 接å£åœ°å€ | 接å£æè¿° | |--------|---------------|-----------------------| | 图片安全检测 | imageCheckSec | 对指定的图片进行安全检测,è¿è§„çš„å›¾ç‰‡å°†åˆ é™¤ | +#### uni-cms-unlock-callback + +> 客户端云函数,用于看广告解é”内容åŽçš„回调 + ### 富文本编辑器扩展 > ç›®å‰å¯Œæ–‡æœ¬ç¼–辑器支æŒWebã€å¾®ä¿¡å°ç¨‹åºã€App。ä¸æ”¯æŒå…¶ä»–å¹³å°ã€‚底层基于Quill.js,详è§https://quilljs.com/ @@ -278,6 +387,14 @@ uni-cms的云端的é…置文件统一使用[uni-config-center](uni-config-center > > 如果需è¦äºŒæ¬¡å¼€å‘,将ä¸èƒ½å‘布至微信å°ç¨‹åºæˆ–者App,å¦åˆ™ä¼šå‡ºçŽ°ç¼–è¾‘å™¨æ— æ³•ä½¿ç”¨çš„æƒ…å†µ +:::warning 多端ä¸ä¸€è‡´è¡¨çŽ°è¯´æ˜Ž + +Web端:支æŒäºŒæ¬¡å¼€å‘,支æŒæ‰€æœ‰Quill.js的功能 + +å°ç¨‹åºç«¯/App端:ä¸æ”¯æŒäºŒæ¬¡å¼€å‘,仅支æŒåŸºæœ¬çš„富文本编辑功能,超链接æ’入将被转æ¢ä¸ºMarkDownæ ¼å¼ï¼Œå¦‚æ’入广告解é”ToolBar,将会转会为图片,但ä¸å½±å“å‰ç«¯æ£å¸¸æ¸²æŸ“ï¼Œä»…éœ€ç¼–è¾‘æ—¶æ³¨æ„ + +::: + 由于自定义了 toolbar çš„é…置,所以需è¦åœ¨ `uni_modules/uni-cms/components/editor/web/formats` ç›®å½•ä¸‹æ·»åŠ å¯¹åº”çš„æ ¼å¼æ–‡ä»¶ï¼Œä¾‹å¦‚ `image.js` 文件,用于处ç†å›¾ç‰‡æ ‡ç¾æ ¼å¼ï¼Œä»£ç 如下: ```js const ATTRIBUTES = [ @@ -372,21 +489,15 @@ export default { ### 观看广告解é”全文@watch-ad-unlock-content -> 使用观看广告解é”全文功能需è¦åœ¨uni-adåŽå°å¼€é€š[激励视频广告](https://uniapp.dcloud.net.cn/component/ad-rewarded-video.html)。 - -> ç›®å‰H5端ä¸æ”¯æŒå¹¿å‘Šï¼Œæ‰€ä»¥åœ¨H5ç«¯æ— æ³•ä½¿ç”¨è§‚çœ‹å¹¿å‘Šè§£é”全文功能 - -用户端截图如下: - -<div style="display: flex; flex-basis: 10px"> -<div style="margin-right: 10px;"> - <img src="https://web-assets.dcloud.net.cn/unidoc/zh/202303231701150.jpg" width="375" /> -</div> -</div> - 1. 在uni-adåŽå°([https://uniad.dcloud.net.cn/](https://uniad.dcloud.net.cn/))开通[激励视频广告](https://uniapp.dcloud.net.cn/component/ad-rewarded-video.html),开通æ¥éª¤[详è§](https://uniapp.dcloud.net.cn/uni-ad.html#start) 2. 新建激励视频广告ä½ï¼Œåœ¨å¯¹åº”的广告ä½ä¸Šé…置激励视频云回调,选择åŒè´¦æˆ·ä¸‹uni-cms部署的uniCloudæœåŠ¡ç©ºé—´ï¼Œé…置回调云函数为`uni-cms-unlock-callback` + +![](https://web-assets.dcloud.net.cn/unidoc/zh/202304121447261.png) + 3. 在 uni-AD Web 控制å°ï¼Œæ‰¾åˆ°å¹¿å‘Šä½ï¼Œç‚¹å‡»é…置激励视频,展开当å‰å¹¿å‘Šä½é¡¹ï¼Œå¯çœ‹åˆ°ç”Ÿæˆçš„ `Security key`,å¤åˆ¶ `Security key` + +![](https://web-assets.dcloud.net.cn/unidoc/zh/202304121448549.png) + 4. 在 `uni_modules/uni-config-center/uniCloud/cloudfunctions/common/uni-config-center`目录ä¸åˆ›å»º `uni-cms/config.json` é…置文件,é…置文件如下: ```json { @@ -397,12 +508,14 @@ export default { } } ``` + **注æ„** + - `clientAppIds` 为客户端appIdï¼Œç”¨äºŽæ ¡éªŒå®¢æˆ·ç«¯è¯·æ±‚ï¼Œå¦‚ä¸é…ç½®å¯èƒ½å¯¼è‡´æ— 法使用广告解é”功能,需è¦ä¸Žå®¢æˆ·ç«¯é…置的appIdä¿æŒä¸€è‡´ - `securityKey` 为广告ä½çš„ `Security key`ï¼Œç”¨äºŽæ ¡éªŒå¹¿å‘Šå›žè°ƒçš„åˆæ³•æ€§ - `watchAdUniqueType` ä¸ºè§‚çœ‹å¹¿å‘Šçš„å”¯ä¸€æ ‡è¯†ç±»åž‹ï¼Œå¯é€‰å€¼ä¸º `user` 或者 `device`,`user` 表示用户唯一,`device` 表示设备唯一 - * `watchAdUniqueType` 为 `device` 时,表示按设备解é”。åŒä¸€è®¾å¤‡åªéœ€è§‚看一次广告,如果该设备观看过广告已解é”è¯¥æ–‡ç« ï¼Œå†æ¬¡æµè§ˆè¯¥æ–‡ç« å°†æ— éœ€å†è§‚看广告。如果应用的本机缓å˜è¢«æ¸…ç†ï¼Œåˆ™è§£é”失效。 - * `watchAdUniqueType` 为 `user` 时,表示按用户解é”。æ¤ç”¨æˆ·ä¸ºuni-id用户,如果该用户已解é”è¯¥æ–‡ç« ï¼Œå†æ¬¡æµè§ˆè¯¥æ–‡ç« å°†æ— éœ€å†è§‚看广告。按用户解é”,需应用ä¸åŠ è½½uni-id-pagesæ’件。 +* `watchAdUniqueType` 为 `device` 时,表示按设备解é”。åŒä¸€è®¾å¤‡åªéœ€è§‚看一次广告,如果该设备观看过广告已解é”è¯¥æ–‡ç« ï¼Œå†æ¬¡æµè§ˆè¯¥æ–‡ç« å°†æ— éœ€å†è§‚看广告。如果应用的本机缓å˜è¢«æ¸…ç†ï¼Œåˆ™è§£é”失效。 +* `watchAdUniqueType` 为 `user` 时,表示按用户解é”。æ¤ç”¨æˆ·ä¸ºuni-id用户,如果该用户已解é”è¯¥æ–‡ç« ï¼Œå†æ¬¡æµè§ˆè¯¥æ–‡ç« å°†æ— éœ€å†è§‚看广告。按用户解é”,需应用ä¸åŠ è½½uni-id-pagesæ’件。 5. 在 `uni_modules/uni-cms-article/pages/detail/detail.vue` 文件ä¸æ‰¾åˆ° `data.adpId` 与 `data.watchAdUniqueType` å—æ®µï¼Œæ ¹æ®è‡ªå·±çš„广告ä½ID进行修改,例如: ```js @@ -411,17 +524,20 @@ export default { watchAdUniqueType: "device" //注æ„å‰ç«¯ä¹Ÿéœ€è¦é…置解é”æ–¹å¼ï¼Œæ˜¯æŒ‰è®¾å¤‡è§£é”还是按uni-id的用户解é”。 } ``` + +![](https://web-assets.dcloud.net.cn/unidoc/zh/202304121449714.png) + 6. 对uni-cms管ç†ç«¯é¡¹ç›®ä¸‹çš„uniCloud目录点å³é”®ï¼Œå°†äº‘函数ã€é…ç½®ã€æ•°æ®åº“ã€æ•°æ®åº“扩展jséƒ½ä¸Šä¼ è‡³äº‘ç«¯ 7. è¿è¡Œuni-admin项目,在内容管ç†ä¸æ–°å»ºä¸€ç¯‡æ–‡ç« ,在指定内容åŽï¼Œç‚¹å‡»ToolBarçš„â€çœ‹å¹¿å‘Šè§£é”â€œåŠŸèƒ½ï¼Œæ·»åŠ è§£é”符,ä¿å˜æ–‡ç« 。 8. è¿è¡Œuni-cms-article用户端,æµè§ˆæ–‡ç« ,看广告解é”。 **解é”逻辑说明** -1. 当用户端æµè§ˆæ–‡ç« æ—¶ï¼ŒæŸ¥è¯¢æ–‡ç« è¯¦æƒ…ä¼šè§¦å‘在uni-cms-articles.schema.ext.js(schema扩展库)ä¸å®šä¹‰çš„æ•°æ®åº“读å–触å‘器,在这段jsä¸éªŒè¯ç”¨æˆ·/设备是å¦å·²è§£é”,已解é”的用户将会直接展示全文,未解é”的用户将会展示解é”全文按钮。 +1. 当用户端æµè§ˆæ–‡ç« æ—¶ï¼ŒæŸ¥è¯¢æ–‡ç« è¯¦æƒ…ä¼šè§¦å‘在`uni-cms-articles.schema.ext.js`(schema扩展库)ä¸å®šä¹‰çš„æ•°æ®åº“读å–触å‘器,在这段jsä¸éªŒè¯ç”¨æˆ·/设备是å¦å·²è§£é”,已解é”的用户将会直接展示全文,未解é”的用户将会展示解é”全文按钮。 2. 用户点击解é”全文按钮åŽï¼Œå°†ä¼šå¼¹å‡ºæ¿€åŠ±è§†é¢‘广告, - 2.1 广告æ’放完毕åŽï¼ˆç•Œé¢ä¼šæ˜¾ç¤ºæ’放完毕倒计时) - 广告æœåŠ¡å™¨ä¼šé€šçŸ¥å¼€å‘者的uniCloudæœåŠ¡ç©ºé—´çš„云函数`uni-cms-unlock-callback`,云函数`uni-cms-unlock-callback`进行验è¯ï¼ŒéªŒè¯é€šè¿‡åŽï¼Œä¸ºç”¨æˆ·è§£é”内容,ä¿å˜åœ¨æ•°æ®è¡¨xxx(TODO)å—段ä¸ã€‚ + 广告æœåŠ¡å™¨ä¼šé€šçŸ¥å¼€å‘者的uniCloudæœåŠ¡ç©ºé—´çš„云函数`uni-cms-unlock-callback`,云函数`uni-cms-unlock-callback`进行验è¯ï¼ŒéªŒè¯é€šè¿‡åŽï¼Œä¸ºç”¨æˆ·è§£é”内容,ä¿å˜åœ¨`uni-cms-unlock-record`æ•°æ®è¡¨ä¸ï¼Œä½¿ç”¨å—段`unique_id`æ¥æ ‡è®°ç”¨æˆ·å·²è§£é”。 - 2.2 æ— å¹¿å‘Šæ²¡æœ‰æ’放完毕,被用户æå‰å…³é—,则ä¸ä¼šå›žè°ƒåˆ°äº‘函数。 **其他** -- GitLab