文件

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);
}
}