關於渠道號的管理

[to 前端、后端]渠道拓展是业务运营的重要工作,其中在技术层面,本文章给出一个渠道管理的解决方案,具体如下:

关于渠道号的管理

一、抽象角色,合作方t_partner_info

合作方的库表属性如下,其中code为渠道码,建议8位(以便配合小程序scene的32位长)。每个合作方的code不同,前端将自己所属渠道记录到localstorage中,后续全部的接口都将code加入到参数中,同user_id和token一样

关于渠道号的管理

二、后端设定中间件

中间件判断user_id和code信息,如果存在相关信息,则记录用户的渠道信息。

/**

* Handle an incoming request.

*

* @param \Illuminate\Http\Request $request

* @param \Closure $next

* @return mixed

*/

public function handle($request, Closure $next)

{

//用于记录每日一画的渠道号

$data = $request->all();

//入参中存在用户id和mch_code,则可以记录渠道信息

if (array_key_exists('user_id', $data) && array_key_exists('token', $data) && array_key_exists('mch_code', $data)) {

$user_id = $data['user_id'];

//校验token的合法性

$result = UserManager::ckeckToken($user_id, $data['token']);

Utils::processLog(__METHOD__, '', "校验token合法性:" . $result);

if (!$result) {

return $next($request);

}

//获取渠道方信息

$mryhPartner = MryhPartnerManager::getByCode($data['mch_code']);

Utils::processLog(__METHOD__, '', "渠道信息:" . $mryhPartner);

//如果不存在渠道

if (!$mryhPartner) {

return $next($request);

}

$mryhPartnerUser = MryhPartnerUserManager::getListByCon(['user_id' => $user_id, 'partner_id' => $mryhPartner->id], false)->first();

//如果不存在,则需要记录

if (!$mryhPartnerUser) {

$mryhPartnerUser = new MryhPartnerUser();

$mryhPartnerUser->user_id = $user_id;

$mryhPartnerUser->partner_id = $mryhPartner->id;

$mryhPartnerUser->save();

MryhPartnerManager::addStatistics($mryhPartner->id, 'user_num', 1); //进行计数

}

}

return $next($request);

}

三、前端获取渠道号

前端封装公共方法,如果传入页面、扫码、程序跳转中有code参数,则将code存入localstorage中。

用以上的方法记录渠道信息,则可以较好的简化代码和逻辑,完成用户渠道管理。


分享到:


相關文章: