java推广系统设计
本文最后更新于:2021年6月15日 晚上
前言
公司新站由于运营需求,需要开发一套推广系统,用于网站用户引流,衍生出的推广套路目前便已经有四种,为了降低运营上手推广系统的难度,因此推广系统务必要便于使用,所以每种推广方式的配置需要保持足够明了简单。
聊聊推广
常见的推广套路就是针对一个推广员生成推广链接,推广员然后其他用户通过推广链接点击进来注册,但是不可能推广的页面是注册页面,所以需要先记录下用户的来源。注册成功的同时,绑定用户与推广员的关系,便于日后通过用户的充值消费统计推广员的推广费用,以下为推广的简单流程图。
推广系统实现
推广链接的生成
整个推广流程最主要的地方就是推广链接的生成与使用,为了方便推广链接的管理,需要将生成的推广链接进行保存。首先进行推广链接表的设计。最后提供给推广员的推广链接格式如:http://m.domain.com/cp?code=xx
,其中 code 的值为推广链接的 ID。
字段名称 | 字段类型 | 字段描述 |
---|---|---|
id | int | 推广链接自增主键 |
title | varcahr | 推广标题 |
partner_id | int | 推广员ID |
params | text | 推广参数 |
type | tinyint | 推广类型 |
url_type | tinyint | URL类型 |
create_time | timestamp | 创建时间 |
update_time | timestamp | 更新时间 |
status | tinyint | 启用状态 |
字段解读:
我这里的 id 直接设置为了自增主键的值,当然为了安全点,也可以设置为其他的值,比如 UUID;
title 对于同一个推广员,可能会生成多条推广链接,用于区别。
partner_id 这个就不必多说,表明推广链接属于哪一个推广员
params 注意这个参数类型为 text, 因为为了方便扩展业务参数,因此此字段存储的是一段 JSON,若使用 varchar 长度会不够用。业务参数在我司,可以是:赠送 VIP 天数,赠送阅读券数量,推广费用等。这个字段可以自由发挥,在绑定用户的时候获取该字段,解析成 JSON 对象,读取对应的业务参数,进行相对应的设置。
因为运营同学的脑洞一般都很大,因此推广方式会有很多种,也是为了日后分析推广效果,因此加上 type 字段用于区分推广类型,推广类型有比如: CPS推广、微信公众推广等;
url_type 用于区分需要推广的页面是相对路径还是绝对路径。
status 用于标记此推广链接是否有效,比如终止推广合作,就可以设置为关闭,不再将用户绑定到此链接。
后台推广链接生成页面参考:
推广链接的跳转
首先再看看推广的流程
首先用户通过点击推广链接,进入了推广的页面,我司就是小说的某一免费章节的阅读页面,之后到收费章节的时候,就会提示用户进行登录。
注册的用户,如何知道是从哪一个链接过来的呢?这就需要在用户注册之前就将推广链接的标记进行存储,最好的方式就是写入 Cookie。之前公司项目写 Cookie 是在前端进行,但是运行之后,发现不太可靠,因此我们将写 Cookie 的操作放在后端进行。
推广链接地址是 http://m.domain.com/cp?code=xx
,访问如下接口:
1 |
|
写这篇文章的时候,发现之前设计推广链接的时候有所疏漏,有的推广方式是相对路径,而有的是绝对路径。
而我在代码中是通过 String 的 Contains方法是否包含域名来判断是相对的还是绝对的路径,其实没有必要,完全可以添加一个推广链接的 url 的路径类型。判断类型即可,如果是绝对路径直接跳转,否则拼接域名后跳转。
推广关系的绑定
用户浏览器的 Cookie 中已经保存好了推广链接的 code 值,绑定关系就好办了,可以在用户注册的时候,读取浏览器的 Cookie,获取这个 Cookie,得到推广链接的 id, 将用户的 id 与推广的 partner_id 进行绑定,保存到绑定关系的表中即可,比如我司的赠送操作也一在绑定后执行。
至于绑定关系的表设计,主要将 partner_id 与 user_id 作为联合主键保存,其他字段如绑定时间就不用多说了吧。
后记
如果你看完觉得有什么疑问,可以留言评论,有需要改进的地方也请提出,共同进步!
本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!