CrmBindController.class.php 2.99 KB
<?php
/**
 * CrmBindController.class.php
 * 与劲霸 CRM 进行绑定接口
 * @author Deepseath
 * @version $Id$
 */
namespace Open\Controller\User;

use Common\Common\User;
use VcySDK\Member;
use VcySDK\Service;

/**
 * 用于与劲霸 CRM 进行绑定的接口:与 CRM 帐号绑定
 */
class CrmBindController extends AbstractController
{

    /**
     * 劲霸 CRM 帐号绑定接口
     * 提供给劲霸 CRM 系统帐号绑定接口
     * @param string userid:true 员工企业微信 userid
     * @param string salesnumber:false 员工的导购编号(可选,如果为空则表示解绑动作,非空则表示绑定动作)
     * @param string timestamp:true (公共参数)请求的 Unix 时间戳,单位:秒
     * @param string noncestr:true (公共参数)请求的随机字符串
     * @param string signature:true (公共参数)请求的参数签名
     * @param string requester:true (公共参数)请求的身份名,固定为:crm
     * @return <pre> array(
     *         'userid' => 'dsdfasd', // 员工的企业微信 userid
     *         'salesnumber' => 'xxxx' // 员工的导购编号
     *         )
     *         </pre>
     */
    public function Index()
    {
        if (empty($this->_input['userid']) || !is_scalar($this->_input['userid'])) {
            $this->_set_error('_ERR_CONTACT_OPEN_USERID_NULL_90002');
            return false;
        }

        if (empty($this->_input['salesnumber'])) {
            // 解绑动作
            $salesnumber = '';
        } else {
            // 绑定动作
            if (!is_scalar($this->_input['salesnumber'])) {
                $this->_set_error('_ERROR_CONTACT_OPEN_NUMBER_NULL_90003');
                return false;
            }
            $salesnumber = $this->_input['salesnumber'];
        }

        // 根据 userid 查询人员列表
        $userServer = User::instance();
        $r = $userServer->listByConds([
            'userids' => [
                $this->_input['userid']
            ]
        ]);
        if (empty($r) || empty($r['list'])) {
            $this->_set_error('_ERR_CONTACT_OPEN_USER_NOT_EXISTS_90000');
            return false;
        }
        // 获取单人结果数据
        reset($r['list']);
        // 人员信息
        $user = current($r['list']);
        unset($r);
        if (stripos($user['memUserid'], $this->_input['userid']) !== 0) {
            // 查出的人员信息微信 userid 不匹配,为了确保不混淆,返回错误信息
            $this->_set_error('_ERR_CONTACT_OPEN_USER_ERROR_90001');
            return false;
        }

        // 调用 SDK 更新人员的导购编号
        $memberSDKService = new Member(Service::instance());
        $memberSDKService->modifyExt([
            'memUid' => $user['memUid'],
            'extKey' => $this->_KBoxing['salesNumberField'],
            'extValue' => $salesnumber
        ]);

        $this->_result = [
            'userid' => $user['memUserid'],
            'salesnumber' => $salesnumber
        ];

        return true;
    }
}