verify_sign(); // 参数验证 $request->scene('custom')->validate(); // 检查登录 $code = request('code',''); $id = request('kailin_uid',''); $workUserId = request('work_userid',''); // 解析ID $id = Hashids::decodeHex($id); // 用户不存在 if( empty($id) ) return json_send(['code'=>'error','msg'=>'用户不存在','data'=>['error'=>'用户ID有误']]); // // 授权结果 $userPhone = Mini::getUserPhone($code); // // 如果所需字段不存在 if( isset($userPhone['error']) ) return json_send(['code'=>'error','msg'=>'授权失败','data'=>['error'=>$userPhone['error']]]); // // 如果所需字段不存在 if( empty($userPhone['purePhoneNumber']) ) return json_send(['code'=>'error','msg'=>'未获取到手机号','data'=>['error'=>'未获取到手机号']]); // 查询用户 $external = $WorkExternal->getOne($id); // 用户不存在 if( empty($external) ) return json_send(['code'=>'error','msg'=>'用户不存在','data'=>['error'=>'用户不存在']]); // 如果手机号已经存在 if( $external['custom_uid'] ) return json_send(['code'=>'error','msg'=>'用户已绑定','data'=>['error'=>'用户已绑定']]); // 获取不包含区号的手机号(因为绑定手机号字段会有国际区号) $phone = $userPhone['purePhoneNumber']; // 通过手机号查询账号 $custom = $Model->getOneByPhone($phone); // 新用户信息 $newCustom = ['phone'=>$phone,'external_userid'=>$external['external_userid'],'userpic'=>$external['avatar'],'username'=>$external['name'],'sex'=>$external['gender'],'user_type'=>$external['user_type']]; // 修改客户信息 if( $custom ) $Model->edit($custom['uid'],$newCustom); // 添加客户信息 $uid = $custom ? $custom['uid'] : $Model->add($newCustom); // 没有手机号对应的账号 if( !$uid ) return json_send(['code'=>'error','msg'=>'手机号注册失败','data'=>['error'=>'手机号注册失败']]); // 查询对应的跟进人员 $followUser = $WorkUser->getOneByExtUserId($external['external_userid'],$workUserId); // 如果没有跟进人员 if( !$followUser ) $followUser = ['work_userid'=>$workUserId,'external_userid'=>$external['external_userid']]; // 备注手机号格式转数组并追加新手机号 $remarkMobiles = push_str_arr($followUser['remark_mobiles'],$phone); // 添加备注手机号 ExternalContact::remark($external['external_userid'],$workUserId,['remark_mobiles'=>$remarkMobiles]); // 修改信息 $result = $WorkExternal->edit($id,['custom_uid'=>$uid]); // 绑定失败 if( !$result ) return json_send(['code'=>'error','msg'=>'绑定失败','data'=>['error'=>'绑定失败']]); // 转字符串 $followUser['remark_mobiles'] = implode(',',$remarkMobiles); // 修改或者添加跟进人员客户画像 empty($followUser['id']) ? $WorkUser->add($followUser) : $WorkUser->edit($followUser['id'],$followUser); // 进行登录 $token = $Model->createLoginAuthcode($uid,time()); // 返回结果 return json_send(['code'=>'success','msg'=>'登录成功','data'=>$token]); } }