Browse Source

【Mod】企微绑定流程修改

liuxiangxin 4 tháng trước cách đây
mục cha
commit
2a3f1ee040

+ 10 - 10
app/Http/Controllers/Admin/Custom.php

@@ -38,7 +38,7 @@ class Custom extends Auth{
 		$code					= request('custom_code','');
 		$phone					= request('phone','');
 		$username				= request('username','');
-		$weibanId				= request('weiban_extid','');
+		$weibanId				= request('external_userid','');
 		$cityId					= request('city_id',0);
 		$status					= request('status');
 		$startTime				= request('start_time','');
@@ -51,7 +51,7 @@ class Custom extends Auth{
 		if( $phone )			$map[] = ['phone','=',$phone];
 		if( $username )			$map[] = ['username','=',$username];
 		if( $cityId )			$map[] = ['city_id','=',$cityId];
-		if( $weibanId )			$map[] = ['weiban_extid','=',$weibanId];
+		if( $weibanId )			$map[] = ['external_userid','=',$weibanId];
 		if( $startTime )		$map[] = ['insert_time','>=',Carbon::createFromFormat('Y-m-d',$startTime)->startOfDay()->getTimestamp()];
 		if( $startTime )		$map[] = ['insert_time','<=',Carbon::createFromFormat('Y-m-d',$startTime)->endOfDay()->getTimestamp()];
 		if( !is_null($status) )	$map[] = ['status','=',$status];
@@ -66,11 +66,11 @@ class Custom extends Auth{
 			// id转编号
 			$value['custom_score'] 	= $CustomScore->getCustomScore($value['uid']);
 			// 如果不存在微伴ID
-			if( !$value['weiban_extid'] )	{
+			if( !$value['external_userid'] )	{
 				// 通过手机号查询注册的账号
-				$value['weiban_extid'] 	= (string) $WeiBanFollow->query()->where([['phone_number','=',$value['phone']]])->value('weiban_extid');
+				$value['external_userid'] 	= (string) $WeiBanFollow->query()->where([['phone_number','=',$value['phone']]])->value('external_userid');
 				// 如果存在的话,修正
-				if( $value['weiban_extid'] ) $Model->edit($value['uid'],['weiban_extid'=>$value['weiban_extid']]);
+				if( $value['external_userid'] ) $Model->edit($value['uid'],['external_userid'=>$value['external_userid']]);
 			}
 			// 重组
 			$list[$key]				= $value;
@@ -134,7 +134,7 @@ class Custom extends Auth{
 			$data['username']		= request('username','');
 			$data['phone']			= request('phone','');
 			$data['city_id']		= request('city_id',0);
-			$data['weiban_extid']	= request('weiban_extid','');
+			$data['external_userid']	= request('external_userid','');
 			// 写入数据表
 			$result					= $Model->edit($uid,$data);
 			// 如果操作失败
@@ -207,7 +207,7 @@ class Custom extends Auth{
 			// 获取手机号,查询是否用客户
 			$custom							= $Model->getOneByPhone($value['phone']);
 			// 组装数据
-			$data							= ['weiban_extid'=>$value['weiban_extid'],'username'=>$value['username']];
+			$data							= ['external_userid'=>$value['external_userid'],'username'=>$value['username']];
 			// 如果客户不存在
 			if( !$custom )					$data['phone'] = $value['phone'];
 			// 如果存在城市ID,才修改城市
@@ -237,7 +237,7 @@ class Custom extends Auth{
 		$code					= request('custom_code','');
 		$phone					= request('phone','');
 		$username				= request('username','');
-		$weibanId				= request('weiban_extid','');
+		$weibanId				= request('external_userid','');
 		$cityId					= request('city_id',0);
 		$status					= request('status');
 		$startTime				= request('start_time','');
@@ -250,7 +250,7 @@ class Custom extends Auth{
 		if( $phone )			$map[] = ['phone','=',$phone];
 		if( $username )			$map[] = ['username','=',$username];
 		if( $cityId )			$map[] = ['city_id','=',$cityId];
-		if( $weibanId )			$map[] = ['weiban_extid','=',$weibanId];
+		if( $weibanId )			$map[] = ['external_userid','=',$weibanId];
 		if( $startTime )		$map[] = ['insert_time','>=',Carbon::createFromFormat('Y-m-d',$startTime)->startOfDay()->getTimestamp()];
 		if( $startTime )		$map[] = ['insert_time','<=',Carbon::createFromFormat('Y-m-d',$startTime)->endOfDay()->getTimestamp()];
 		if( !is_null($status) )	$map[] = ['status','=',$status];
@@ -290,7 +290,7 @@ class Custom extends Auth{
 			//避免 = + - 识别成公式
             $sheet->setCellValueExplicit('B'.$row, $value['username'],DataType::TYPE_STRING);
             $sheet->setCellValue('C'.$row, $value['phone']);
-			$sheet->setCellValue('D'.$row, $value['weiban_extid']);
+			$sheet->setCellValue('D'.$row, $value['external_userid']);
 			$sheet->setCellValue('E'.$row, $value['city_name']);
 			$sheet->setCellValue('F'.$row, $value['status']?'禁用':'正常');
 			$sheet->setCellValue('G'.$row, date('Y-m-d H:i:s',$value['insert_time']));

+ 14 - 12
app/Http/Controllers/Api/WechatWork.php

@@ -64,10 +64,12 @@ class WechatWork extends Api{
 	 */
 	public function addExternal($message){
 		// 实例
-		$WorkExternal			= New WorkExternal;
-		$WorkState				= new WorkState;
-		$WorkUser				= New WorkUser;
-		$WorkTag				= New Worktag;
+		$WorkExternal				= new WorkExternal;
+		$WorkState					= new WorkState;
+		$WorkUser					= new WorkUser;
+		$WorkTag					= new Worktag;
+		// 状态
+		$state						= [];
 		// 通过state获取附加参数以判断用户类型
 		parse_str($message['State'],$state);
 		// 获取附加参数
@@ -87,7 +89,7 @@ class WechatWork extends Api{
 		// 如果添加失败
 		if( !$id )					return ['error'=>'新用户添加失败'];
 		// 跳转链接
-		$link						= Mini::getUrlLink('pages/bind/user',http_build_query(['kailin_uid'=>Hashids::encodeHex($id),'work_userid'=>$message['UserID']]));
+		$link						= Mini::getUrlLink('pages/coupon/active',http_build_query(['id'=>1,'kailin_uid'=>Hashids::encodeHex($id),'work_userid'=>$message['UserID']]));
 		// 欢迎语
 		$welcome					= $link ? ['link'=>['title'=>'请点此填写表单','desc'=>'填写表单信息为了给您提供更优服务','url'=>$link]] : ['text'=>['content'=>'请联系您的对接人员为您录入信息']];
 		// 发送欢迎语
@@ -112,9 +114,9 @@ class WechatWork extends Api{
 	 */
 	public function editExternal($message){
 		// 实例
-		$WorkExternal				= New WorkExternal;
-		$WorkUser					= New WorkUser;
-		$WorkTag					= New WorkTag;
+		$WorkExternal				= new WorkExternal;
+		$WorkUser					= new WorkUser;
+		$WorkTag					= new WorkTag;
 		// 获取客户详情
 		$extUser					= ExternalContact::getOne($message['ExternalUserID']);
 		// 如果没有获取到数据的话
@@ -146,8 +148,8 @@ class WechatWork extends Api{
 	 */
 	public function delExternal($message){
 		// 实例
-		$WorkUser					= New WorkUser;
-		$WorkTag					= New WorkTag;
+		$WorkUser					= new WorkUser;
+		$WorkTag					= new WorkTag;
 		// 获取客户详情
 		$extUser					= ExternalContact::getOne($message['ExternalUserID']);
 		// 如果没有获取到数据的话
@@ -166,8 +168,8 @@ class WechatWork extends Api{
 	 */
 	public function delFollow($message){
 		// 实例
-		$WorkExternal				= New WorkExternal;
-		$WorkUser					= New WorkUser;
+		$WorkExternal				= new WorkExternal;
+		$WorkUser					= new WorkUser;
 		// 获取客户详情
 		$extUser					= ExternalContact::getOne($message['ExternalUserID']);
 		// 如果没有获取到数据的话

+ 59 - 0
app/Http/Controllers/Api/WorkBind.php

@@ -82,4 +82,63 @@ class WorkBind extends Api{
 		return							json_send(['code'=>'success','msg'=>'登录成功','data'=>$token]);
 	}
 
+	/**
+	 * 绑定客户			/api/work_bind/user
+	 * 
+	 * @param	string		$code		授权码
+	 * 
+	 * */
+	public function user(Request $request,Model $Model,WorkExternal $WorkExternal,WorkUser $WorkUser){
+		// 接口验签
+		// $this->verify_sign();
+		// 参数验证
+		$request->scene('user')->validate();
+		// 检查登录
+		$uid							= $this->checkLogin();
+		$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有误']]);
+		// 通过手机号查询账号
+		$custom 						= $Model->getOne($uid);
+		// 查询用户
+		$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							= $custom['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]);
+	}
+
 }

+ 2 - 1
app/Http/Requests/Api/WorkBind.php

@@ -27,7 +27,8 @@ class WorkBind extends BaseRequest
 
     // 场景列表
     protected   $scenes         = [
-        'custom'                => ['uid','work_userid','code'],
+        'custom'               => ['kailin_uid','work_userid','code'],
+        'user'                 => ['kailin_uid','work_userid'],
 	];
 
     /**

+ 1 - 1
resources/views/admin/custom/edit.blade.php

@@ -14,7 +14,7 @@ style="margin: 0 auto;width: 96%;padding: 30px 0px;"
 	</div>
 	<div class="form-group col-sm-12">
 		<label class="control-label">微伴ID</label>
-		<input class="form-control" type="text" placeholder="微伴ID,请尽量不要留空" name="weiban_extid" value="{{$oldData['weiban_extid']}}" />
+		<input class="form-control" type="text" placeholder="微伴ID,请尽量不要留空" name="external_userid" value="{{$oldData['external_userid']}}" />
 	</div>
 	<div class="form-group col-sm-12">
 		<label class="control-label">客户城市</label>

+ 3 - 3
resources/views/admin/custom/index.blade.php

@@ -27,7 +27,7 @@ style="margin: 0 auto;width: 96%;padding: 30px 0px;"
 		<input type="text" class="form-control" name="phone" value="{{request('phone','')}}" placeholder="请输入联系方式查询" />
 	</div>
 	<div class="form-group col col-lg-2 col-md-2 col-sm-2 col-xs-2" style="margin-right: 2px;">
-		<input type="text" class="form-control" name="weiban_extid" value="{{request('weiban_extid','')}}" placeholder="请输入微伴ID查询" />
+		<input type="text" class="form-control" name="external_userid" value="{{request('external_userid','')}}" placeholder="请输入企微ID查询" />
 	</div>
 	<div class="form-group col col-lg-2 col-md-2 col-sm-2 col-xs-2" style="margin-right: 2px;">
 		<select name="status" class="form-control">
@@ -69,7 +69,7 @@ style="margin: 0 auto;width: 96%;padding: 30px 0px;"
 						<th>客户昵称</th>
 						<th>联系方式</th>
 						<th>客户积分</th>
-						<th>微ID</th>
+						<th>微ID</th>
 						<th>客户城市</th>
 						<th>客户状态</th>
 						<th>创建时间</th>
@@ -85,7 +85,7 @@ style="margin: 0 auto;width: 96%;padding: 30px 0px;"
 							<td> {{$a['username']}} </td>
 							<td> {{$a['phone']}} </td>
 							<td> {{$a['custom_score']['score']}} </td>
-							<td> <a href="{{url('admin/weiban_external/index?'.http_build_query(['id'=>$a['weiban_extid']]))}}">{{$a['weiban_extid']}}</a></td>
+							<td> <a href="{{url('admin/weiban_external/index?'.http_build_query(['id'=>$a['external_userid']]))}}">{{$a['external_userid']}}</a></td>
 							<td> {{$a['city_name']}} </td>
 							<td> {{$a['status']?'禁用':'正常'}} </td>
 							<td> {{date('Y/m/d H:i:s',$a['insert_time'])}}</td>

+ 2 - 1
routes/api.php

@@ -70,7 +70,8 @@ Route::any('custom_coupon/get_coupon',[\App\Http\Controllers\Api\CustomCoupon::c
 Route::any('workwechat/notify',[\App\Http\Controllers\Api\WechatWork::class,'notify']);
 // 企微绑定客户
 Route::any('work_bind/custom',[\App\Http\Controllers\Api\WorkBind::class,'custom']);
-
+// 企微绑定客户
+Route::any('work_bind/user',[\App\Http\Controllers\Api\WorkBind::class,'user']);
 
 
 // 新增购物车