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