uni-ad-admin.md 10.5 KB
Newer Older
hbcui1984's avatar
hbcui1984 已提交
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
## uni-ad-admin 插件概述

`uni-ad-admin` 是基于[uni-admin](https://doc.dcloud.net.cn/uniCloud/admin.html)`uni-ad`插件。

`uni-ad-admin`主要包括两个功能:
- 数据同步:使用`uni-ad-admin`插件,你可以将自己账号下的`uni-ad`收益数据同步到自己的服务空间,存储在自己的云数据库中。
- 统计报表:`uni-ad-admin`默认内置3个统计报表页面,展示内容和[uniAD控制台](https://uniad.dcloud.net.cn/login)中的收益报表一致;

`uni-ad-admin`是开源的,你可以自由定制,比如:
- 基于同步过来的收益数据,你可以再次同步到自己的业务服务器中,比如同步到自己的虚拟机或MySQL数据库中。
- 基于同步过来的收益数据,定制多维度的广告报表、漏斗分析等。

## 安装部署

### 下载插件

前往[插件市场](https://ext.dcloud.net.cn), 找到 [uni-ad-admin](https://ext.dcloud.net.cn/plugin?name=uni-ad-admin)插件,点击 `下载插件并导入HBuilderX` ,在 HBuilderX 中选择对应的 `uni-admin`项目,HBuilderX会自动完成插件下载及文件合并。

`uni-ad-admin` 插件新增的文件主要包括:
lee7751's avatar
lee7751 已提交
20
- 云函数:`uni_modules/uni-ad-admin/uniCloud/cloudfunctions/uni-ad-admin-receiver` 接收同步数据云函数
hbcui1984's avatar
hbcui1984 已提交
21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86
- 数据表:`uni_modules/uni-ad-admin/uniCloud/database`目录下 `uni-ad` 开头的 `schema` 文件
- 统计页面:`uni_modules/uni-ad-admin/pages` 文件夹下面的若干页面

### 注册菜单

在HBuilderX中找到 `opendb-admin-menus.init_data.json` 文件,右键 `初始化云数据库数据`,可完成左侧导航菜单的注册。

> 如果你只有国内广告,没有海外广告,可在`opendb-admin-menus.init_data.json`文件中删除如下海外广告菜单后,再右键`初始化云数据库数据`。

``` json
[	
	{
		"parent_id": "uni-ad",
		"permission": [],
		"enable": true,
		"menu_id": "uni-ad-global",
		"name": "国际广告",
		"icon": "",
		"url": "",
		"sort": 2300,
		"create_date": 1638356902516,
		"_id": "uni-ad-global"
	},
	{
		"parent_id": "uni-ad-global",
		"permission": [],
		"enable": true,
		"menu_id": "uni-ad-global-home",
		"name": "概况",
		"icon": "",
		"url": "/uni_modules/uni-ad-admin/pages/global/index/index",
		"sort": 2211,
		"create_date": 1638356902516,
		"_id": "uni-ad-global-home"
	},
	{
		"parent_id": "uni-ad-global",
		"permission": [],
		"enable": true,
		"menu_id": "uni-ad-global-revenue",
		"name": "数据收益",
		"icon": "",
		"url": "/uni_modules/uni-ad-admin/pages/global/revenue/revenue",
		"sort": 2212,
		"create_date": 1638356902516,
		"_id": "uni-ad-global-revenue"
	}
]
```

### 上传 schema

schema 位于 uniCloud/database 目录下,在 `database` 目录右键点击 `上传所有DB Schema` 菜单,将 schema 上传到云端服务空间。

### 配置签名秘钥

为保证数据安全,数据从uniAD云端同步到你的服务空间时,会使用秘钥加密传输,该秘钥需你自己配置。

配置文件:`uniCloud/cloudfunctions/uni-ad-admin-receiver/config/config.json`

### 上传云函数

在HBuilderX中,选择`uniCloud/cloudfunctions/uni-ad-admin-receiver`,右键`上传部署`

## 收益数据同步

lee7751's avatar
lee7751 已提交
87
登录[uniAd控制台](https://uniad.dcloud.net.cn),在右上角点击 `uni-ad-admin` 按钮,在弹出框中选择已部署含`uni-ad-admin`插件的`uni-admin`项目空间:
hbcui1984's avatar
hbcui1984 已提交
88

lee7751's avatar
lee7751 已提交
89
![](https://web-ext-storage.dcloud.net.cn/doc/uniadmin/shengqing.png)
hbcui1984's avatar
hbcui1984 已提交
90 91 92 93

注意:`secret`是数据同步过程中的加密秘钥,务必和`uniCloud/cloudfunctions/uni-ad-admin-receiver/config/config.json`文件中配置的`scrert`保持一致。

:::warning 注意
lee7751's avatar
lee7751 已提交
94 95
-  数据同步:每日下午3点开始同步昨日收益数据。如需历史数据同步请发邮件到 `service@dcloud.io` 申请。
-  由于网络或数据库无读、写次数等原因同步失败后,服务器会有重试同步机制,每日重试5次,5次都失败后不再同步。如你确认服务空间无问题后可以应用收益详情的 `同步日志` 中点击重新同步。
hbcui1984's avatar
hbcui1984 已提交
96 97 98
-  `云函数` 接收到同步后首先会按 `收益日期` 删除已存在数据,防止数据重复。不使用循环查询是否存在以减少读、写次数。
:::

lee7751's avatar
lee7751 已提交
99
如果你的原服务空间过期或其它原因需要变更收益数据的服务空间,则需再次登录[uniAd控制台](https://uniad.dcloud.net.cn),点击右上角 `uni-ad-admin` 按钮,在弹出对话框中选择新的服务空间即可。
hbcui1984's avatar
hbcui1984 已提交
100 101 102

你也可以在该弹出框中,点击左下角的`关闭收益同步`按钮,关闭该项功能。

lee7751's avatar
lee7751 已提交
103
`uni-ad-admin`的应用收益详情中,可查看数据同步日志。如有同步失败的,可点击重新同步。
hbcui1984's avatar
hbcui1984 已提交
104

lee7751's avatar
lee7751 已提交
105
![](https://web-ext-storage.dcloud.net.cn/doc/uniadmin/user-repush.png)
hbcui1984's avatar
hbcui1984 已提交
106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157

## 插件源码解读

### 表结构

`uni-ad-admin`插件包含4个数据表:

- uni-ad-positions:广告位记录表
- uni-ad-adp-revenues:adp收益表(广告位维度)
- uni-ad-app-revenues:app收益表(应用维度)
- uni-ad-sync-logs:uni-ad 数据同步日志表,记录每日同步时间、状态;

**uni-ad-positions 广告位**

|字段|类型|默认值|可选值|说明|
|:-:|:-:|:-:|:-:|:-:|
|appid      |   string  |   |   |   应用appid,对应opendb-app-list.appid|
|ad_region  |   int| 1   | 1,2 | 数据源|
|adp_id |   string| -|-|广告位id|
|adp_name| string| -|-|广告位名称|
|ad_type|int|0|-|广告位类型|
|create_time| timestamp| -|-|创建时间|


**uni-ad-adp-revenues收益数据,广告位维度**
|字段|类型|默认值|可选值|说明|
|:-:|:-:|:-:|:-:|:-:|
|ad_region  |   int| 1   | 1,2| 数据源|
|revenue_date|int|-|-|收益日期,格式:yyyymmdd,例:20240415  |
|appid|string|-|-|应用appid,对应opedb-app-list.appid|
|adp_id|string|-|-|广告位id,对应uni-ad-posotions表的adp_id|
|ad_platform|int|-|-|广告平台|
|show_count|int|0|-|广告展示量|
|click_count|int|0|-|广告点击量|
|click_rate|string|-|-|广告点击率|
|revenue|int|0|-|预估收益,单位:厘|
|cpc|string|-|-|每次点击收益(单位:元,如:1.25)|
|cpm|string|-|-|千次展现收益(单位:元,如:5.25)|
|ad_type|int|0|-|广告类型|
|os|string|-|-|系统类型 android 或 ios  只有platform_id=2(渠道SDK广告)时才有该字段|
|create_time| timestamp| -|-|创建时间|


**uni-ad-app-revenues日汇总收益表**
|字段|类型|默认值|可选值|说明|
|:-:|:-:|:-:|:-:|:-:|
|ad_region  |   int| 1   | 1,2| 数据源|
|revenue_date|int|-|-|收益日期,格式:yyyymmdd,例:20240415  |
|appid|string|-|-|应用appid,对应opedb-app-list.appid|
|revenue|int|0|-|预估收益,单位:厘|
|create_time| timestamp| -|-|创建时间|

lee7751's avatar
lee7751 已提交
158
**uni-ad-sync-logs数据同步日志表**
hbcui1984's avatar
hbcui1984 已提交
159 160 161

|字段|类型|默认值|可选值|说明|
|:-:|:-:|:-:|:-:|:-:|
lee7751's avatar
lee7751 已提交
162
|sync_date  |   int |   -   |   -   |   收益同步日期,格式:yyyymmdd,例:20240415   |
hbcui1984's avatar
hbcui1984 已提交
163 164
|appid      |   string  |   |   |   应用appid,对应opendb-app-list.appid|
|ad_region  |   int| 1   | 1,2 | 数据源|
lee7751's avatar
lee7751 已提交
165
|status |   int |   0   |   0,1,2,3   | 同步状态 |
hbcui1984's avatar
hbcui1984 已提交
166 167 168 169 170
|create_time| timestamp| -|-|创建时间|
|update_time| timestamp| -|-|更新时间|

### 表字段说明

lee7751's avatar
lee7751 已提交
171
**`status`:同步状态**
hbcui1984's avatar
hbcui1984 已提交
172 173
|值|说明|
|:-:|:-:|
lee7751's avatar
lee7751 已提交
174 175 176 177
|0|未同步|
|1|同步完成|
|2|正在同步|
|3|同步失败|
hbcui1984's avatar
hbcui1984 已提交
178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255


**`ad_region`:数据源**
|值|说明|
|:-:|:-:|
|1|国内广告|
|2|国际广告|

**`ad_platform`:广告平台**
|值|说明|
|:-:|:-:|
|1|APP-DCloud快捷广告|
|2|APP-渠道SDK广告|
|3|Web广告|
|4|小程序广告|

**`ad_type`:广告类型**
|值|说明|
|:-:|:-:|
|1|开屏|
|4|信息流|
|7|全屏视频|
|9|激励视频 |
|10|Draw视频广告|
|13|互动游戏|
|14|内容联盟|
|15|插屏广告|
|17|小程序格子广告|
|18|互动红包|
|91|DCloud快捷广告-开屏|
|92|DCloud快捷广告-红包|
|93|DCloud快捷广告-PUSH|
|94|DCloud快捷广告-uniMP|

**`CPC`:平均每次点击收益**

计算公式:CPC = 总收益 / 点击量

**`CPM`:千次展现收益**

计算公式:CPM = 总收益 / 展示量 * 1000

### 报表展示页

下方仅展示 `uni-ad-admin` 插件相关的文件夹及文件。

```bash
├── uniCloud							# 云函数
├── common								# 样式文件
├── components                          # 自定义组件
├── js_sdk                              # js sdk
├── pages                               # 页面
│   │── china                          	# 国内统计页面
│   |   │── detail                     	# 应用统计详情
│   |   |   │── detail.vue             	# 页面(下同)
│   |   |   └── fieldsMap.js            # 字段配置(下同)
|	|	|──	index
│   |   |   │── index.vue
│   |   |   └── fieldsMap.js
|	|	└──	revenue
│   |       │── index.vue
│   |      	└── fieldsMap.js
|	└──	global
│   	│── detail                     	# 应用统计详情
│      	|   │── detail.vue             	# 页面(下同)
│      	|   └── fieldsMap.js            # 字段配置(下同)
|		|──	index
│      	|   │── index.vue
│      	|   └── fieldsMap.js
|		└──	revenue
│          	│── index.vue
│         	└── fieldsMap.js
└── package.json
```


## 常见问题

lee7751's avatar
lee7751 已提交
256
**1. 申请数据同步后,何时可以查看报表数据 ?**
hbcui1984's avatar
hbcui1984 已提交
257

lee7751's avatar
lee7751 已提交
258
答:数据同步服务每日下午3点启动,如您在下午3点后申请,在次日下午3点才会启动同步。
hbcui1984's avatar
hbcui1984 已提交
259 260 261

**2. 数据报表可查看当日数据吗?**

lee7751's avatar
lee7751 已提交
262
答:数据同步和 `uni-ad` 后台一样,今日出昨日的预估收益。
hbcui1984's avatar
hbcui1984 已提交
263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301

**3. 子账号需要赋予哪些表的权限才能正常查看uni-ad统计?**

分三步骤

**第一步:添加用户角色权限**
1、去权限管理添加一个权限id为: `READ_UNI_AD` 的权限 
2、去角色管理添加一个角色id为: `READ_UNI_AD` 的角色
3、去用户管理赋予子账号角色 `READ_UNI_AD` 角色

**第二步:给相关的表设置read权限**
涉及表如下:
1、uni-ad-sync-logs
2、uni-ad-positions
3、uni-ad-position-revenues
4、uni-ad-day-revenues
5、opendb-app-list

需要赋予上面的表的 `read` 权限全部设置为


```json
"permission": {
	"read": "'READ_UNI_AD' in auth.permission",
	"create": false,
	"update": false,
	"delete": false
}
```


**第三步:前往菜单管理,对每一个uni-ad统计的页面(包含子页面)设置下权限 `READ_UNI_AD`(菜单只有拥有对应权限才会显示)**


## 参考资料

- uni-admin文档:[详见](https://doc.dcloud.net.cn/uniCloud/admin.html)
- opendb文档:[详见](https://doc.dcloud.net.cn/uniCloud/opendb.html)