147 行
4.9 KiB
PHP
可执行文件
147 行
4.9 KiB
PHP
可执行文件
<?php
|
|
|
|
namespace Distribution\Business;
|
|
|
|
use Common\Model\RetailBillOrderModel;
|
|
|
|
/**
|
|
* 分销客户绑定类
|
|
* Class Distribution
|
|
* [
|
|
* 购买商品绑定 getDisLinkOperate
|
|
* 点击商品链接绑定 getLinkBehavior
|
|
* ]
|
|
* @package Distribution\Business
|
|
*/
|
|
class Link
|
|
{
|
|
/**
|
|
* 购买商品绑定
|
|
* @param billOrder 订单id或者订单数据
|
|
*/
|
|
public function getDisLinkOperate($billOrder)
|
|
{
|
|
$RetailBillOrderModel = new RetailBillOrderModel();
|
|
if (!is_array($billOrder)) {
|
|
$billOrder = $RetailBillOrderModel->getFind(['id' => $billOrder]);
|
|
}
|
|
$DisOrderModel = new \Distribution\Model\OrderModel();
|
|
$this->bindUser([
|
|
'distributor_id' => $DisOrderModel->getFindField(['bill_id' => $billOrder['id']], 'did'),
|
|
'merchant_id' => $billOrder['merchant_id'],
|
|
'uid' => $billOrder['uid'],
|
|
'type' => 1,
|
|
]);
|
|
}
|
|
|
|
/**
|
|
* 点击商品链接绑定
|
|
* @param $uid 用户ID
|
|
* @param $distributor_id 分销员ID
|
|
* @param $merchant_id 商户ID
|
|
*/
|
|
public function getLinkBehavior($uid, $distributor_id, $merchant_id)
|
|
{
|
|
$this->bindUser([
|
|
'distributor_id' => $distributor_id,
|
|
'merchant_id' => $merchant_id,
|
|
'uid' => $uid,
|
|
'type' => 2,
|
|
]);
|
|
}
|
|
|
|
/**
|
|
* 绑定客户
|
|
* @param $param
|
|
* $param['distributor_id'] 分销员ID
|
|
* $param['merchant_id'] 商户ID
|
|
* $param['uid'] 用户ID
|
|
* $param['type'] 操作来源 1购买商品 2点击商品链接
|
|
*/
|
|
private function bindUser($param)
|
|
{
|
|
if (!$param['uid'] || !$param['distributor_id'] || !$param['merchant_id'] || !$param['type']) {
|
|
return;
|
|
}
|
|
$DisConfigModel = new \Distribution\Model\ConfigModel();
|
|
$field = [
|
|
'is_open', //是否开启分销 0关闭 1开启
|
|
'binding_type', //客户绑定方式 1购买商品绑定 2点击链接绑定
|
|
'is_customer_protect', //是否开启客户保护 1关闭 2开启
|
|
'customer_protect_type', //客户保护方式 1永久保护 2固定时间保护
|
|
'protect_date' //固定保护天数
|
|
];
|
|
//分销设置
|
|
$cMap = [
|
|
'merchant_id' => $param['merchant_id'],
|
|
'binding_type' => $param['type']
|
|
];
|
|
$config = $DisConfigModel->getFind($cMap, $field);
|
|
|
|
//商户未开启分销或未开启客户保护
|
|
if (empty($config) || $config['is_open'] != 1) {
|
|
return;
|
|
}
|
|
|
|
$DistributorModel = new \Distribution\Model\DistributorModel();
|
|
// 判断分销员
|
|
$dMap = [
|
|
'id' => $param['distributor_id'],
|
|
'merchant_id' => $param['merchant_id'],
|
|
'status' => 0
|
|
];
|
|
$distributor = $DistributorModel->getCount($dMap);
|
|
if (empty($distributor)) {
|
|
return;
|
|
}
|
|
|
|
//处理绑定信息
|
|
$DisLinkModel = new \Distribution\Model\LinkModel();
|
|
|
|
$newLinkData = [
|
|
'distributor_id' => $param['distributor_id'],
|
|
'uid' => $param['uid'],
|
|
'add_time' => time(),
|
|
'binding_type' => $param['type'],
|
|
'status' => 1,
|
|
];
|
|
//获取用户有效的绑定信息
|
|
$hasLinkData = $DisLinkModel->getOrderFind(['uid' => $param['uid'], 'status' => 1], 'id', 'add_time desc');
|
|
if (!empty($hasLinkData)) {
|
|
//之前存在绑定关系
|
|
switch ($config['is_customer_protect']) {
|
|
case '1':
|
|
//未开启客户保护
|
|
if ($hasLinkData['distributor_id'] == $param['distributor_id']) {
|
|
//上一次绑定的分销员为当前分销员 不需要再一次绑定
|
|
return;
|
|
}
|
|
break;
|
|
case '2':
|
|
//开启客户保护
|
|
switch ($config['customer_protect_type']) {
|
|
case '1':
|
|
//永久保护 不能再重新绑定
|
|
return;
|
|
break;
|
|
case '2':
|
|
//固定时间保护
|
|
//判断是否过了保护期
|
|
if (bcadd($hasLinkData['add_time'], $config['protect_date'] * 86400) > time()) {
|
|
//未过保护期 不需要再一次绑定
|
|
return;
|
|
}
|
|
break;
|
|
}
|
|
break;
|
|
}
|
|
//取消之前的绑定关系
|
|
$DisLinkModel->updateOrder(['uid' => $param['uid'], 'status' => 1], ['status' => 0]);
|
|
}
|
|
|
|
//建立新的绑定关系
|
|
$DisLinkModel->addOrder($newLinkData);
|
|
|
|
}
|
|
}
|