浏览代码

【Add】微伴标签互通

liuxiangxin 5 月之前
父节点
当前提交
f815a952e9

+ 2 - 6
app/Console/Commands/StaffRelation.php

@@ -66,13 +66,9 @@ class StaffRelation extends Command
       // 返回结果
       if( !$task['id'] )	return ['error'=>'无执行任务'];
       // 获取列表
-      $userList           = OpenApi::getUserList($task['limit'],$task['offset'],$task['last_time']);
-      // 最后的更新时间
-      $lastTime           = 0;
+      $userList           = OpenApi::getUserList($task['limit'],$task['offset'],$task['last_time'],$source);
       // 放到队列执行
       foreach ($userList['user_list'] as $key=>$value) {
-          // 获取最后更新时间
-          $lastTime       = $value['updated_at'];
           // 外部联系人
           $value          = ['id'=>$value['id']];
           // 发送到队列执行,上锁成功则发送到队列执行
@@ -96,7 +92,7 @@ class StaffRelation extends Command
               // 状态结束
               $task['status']             = 1;
               // 最后的修改时间
-              $task['last_time']          = $lastTime - 1;
+              $task['last_time']          = time() - 1;
           }
       }
       // 修改任务情况

+ 2 - 6
app/Console/Commands/StaffRemark.php

@@ -66,13 +66,9 @@ class StaffRemark extends Command
       // 返回结果
       if( !$task['id'] )	return ['error'=>'无执行任务'];
       // 获取列表
-      $userList           = OpenApi::getUserList($task['limit'],$task['offset'],$task['last_time']);
-      // 最后的更新时间
-      $lastTime           = 0;
+      $userList           = OpenApi::getUserList($task['limit'],$task['offset'],$task['last_time'],$source);
       // 放到队列执行
       foreach ($userList['user_list'] as $key=>$value) {
-          // 获取最后更新时间
-          $lastTime       = $value['updated_at'];
           // 外部联系人
           $value          = ['id'=>$value['id']];
           // ['id'=>$value['id'],'name'=>$value['name'],'avatar'=>str_ireplace('http://','https://',(string)$value['avatar']),'gender'=>$value['gender'],'type'=>$value['type'],'corp_name'=>(string)$value['corp_name'],'corp_full_name'=>(string)$value['corp_full_name'],'insert_time'=>$value['created_at'],'update_time'=>$value['updated_at'],];
@@ -97,7 +93,7 @@ class StaffRemark extends Command
               // 状态结束
               $task['status']             = 1;
               // 最后的修改时间
-              $task['last_time']          = $lastTime - 1;
+              $task['last_time']          = time() - 1;
           }
       }
       // 修改任务情况

+ 2 - 6
app/Console/Commands/TagRelation.php

@@ -68,13 +68,9 @@ class TagRelation extends Command
       // 返回结果
       if( !$task['id'] )	return ['error'=>'无执行任务'];
       // 获取列表
-      $userList           = OpenApi::getUserList($task['limit'],$task['offset'],$task['last_time']);
-      // 最后的更新时间
-      $lastTime           = 0;
+      $userList           = OpenApi::getUserList($task['limit'],$task['offset'],$task['last_time'],$source);
       // 放到队列执行
       foreach ($userList['user_list'] as $key=>$value) {
-          // 获取最后更新时间
-          $lastTime       = $value['updated_at'];
           // 外部联系人
           $value          = ['id'=>$value['id']];
           // 发送到队列执行,上锁成功则发送到队列执行
@@ -98,7 +94,7 @@ class TagRelation extends Command
               // 状态结束
               $task['status']             = 1;
               // 最后的修改时间
-              $task['last_time']          = $lastTime - 1;
+              $task['last_time']          = time() - 1;
           }
       }
       // 修改任务情况

+ 64 - 0
app/Console/Commands/WeibanTaglist.php

@@ -0,0 +1,64 @@
+<?php
+
+namespace App\Console\Commands;
+
+use Illuminate\Console\Command;
+use App\Facades\Servers\WeiBan\OpenApi;
+use App\Facades\Servers\Logs\Log;
+
+class WeibanTaglist extends Command
+{
+  /**
+   * 任务名称
+   *
+   * @var string
+   */
+  protected $signature = 'weiban_taglist';
+
+  /**
+   * 任务描述
+   *
+   * @var string
+   */
+  protected $description = '微伴标签列表同步任务';
+
+  /**
+   * Create a new command instance.
+   *
+   * @return void
+   */
+  public function __construct()
+  {
+    parent::__construct();
+  }
+
+  /**
+   * Execute the console command.
+   *
+   * @return int
+   */
+  public function handle()
+  {
+    try {
+      // 数据结果
+      $this->sync_user();
+      // 返回结果
+      return 0;
+    } catch (\Throwable $th) {
+      // 记录错误信息
+      Log::error('weiban_taglist', $th->getMessage());
+      // 返回结果
+      return 0;
+    }
+  }
+
+
+  /**
+   * 客户关系同步
+   * 
+   * */
+  public function sync_user()
+  {
+    OpenApi::getTagList();
+  }
+}

+ 2 - 0
app/Console/Kernel.php

@@ -28,6 +28,8 @@ class Kernel extends ConsoleKernel
         $schedule->command('staff_relation')->runInBackground();
         $schedule->command('staff_remark')->runInBackground();
         $schedule->command('tag_relation')->runInBackground();
+        // 微伴标签列表同步
+        $schedule->command('weiban_taglist')->runInBackground();
         // 产品限购自动下架
         $schedule->command('product_delist')->everyMinute();
         //拼团活动

+ 2 - 1
app/Facades/Servers/WeiBan/OpenApi.php

@@ -9,7 +9,8 @@ use Illuminate\Support\Facades\Facade;
  * @method static array  getUserList(int $limit,int $offset,int $startTime=0,string $source='remark')       获取用户列表
  * @method static array  getUserDetail(string $id)                                                          获取用户详情
  * @method static array  getUserListByPhone($phone)                                                         通过手机获取用户列表
- * 
+ * @method static array  getTagList(int $limit=100,int $offset=0)                                           获取标签列表
+ * @method static array  markTags($extUserid,$addTags,$rmTags,$staffId)                                     给客户打标签
  * 
  * @see \App\Servers\WeiBan\OpenApi
  * 

+ 128 - 1
app/Http/Controllers/Admin/WeibanExternal.php

@@ -1,9 +1,12 @@
 <?php namespace App\Http\Controllers\Admin;
 
+use App\Facades\Servers\WeiBan\OpenApi;
 use App\Models\Custom;
 use App\Models\WeiBan\External as Model;
 use App\Models\WeiBan\Tags as WeiBanTags;
+use App\Models\WeiBan\Taglist as Taglist;
 use Illuminate\Support\Carbon;
+use Illuminate\Support\Facades\DB;
 
 /**
  * 客户管理
@@ -68,6 +71,130 @@ class WeibanExternal extends Auth{
 		return 					$this->fetch();
     }
 
-
+	/**
+	 * 打标签
+	 * 
+	 */
+	public function mark_tags(Model $Model,WeiBanTags $WeiBanTags, Taglist $Taglist){
+		// 接受参数
+		$extUserid				= request('weiban_extid', '');
+		$staffId				= request('staff_id', '');
+		// 查询条件
+		$map 					= [];
+		// 编码ID
+		if ($extUserid)			$map[] = ['weiban_external.id', '=', $extUserid];
+		if ($staffId)			$map[] = ['weiban_follow.staff_id', '=', $staffId];
+		// 查询数据
+		$oldData				= $Model->query()->join('weiban_follow','weiban_follow.weiban_extid','=','weiban_external.id')->where($map)->first(['weiban_external.*','weiban_follow.staff_id','weiban_follow.staff_name','weiban_follow.remark','weiban_follow.remark_corp_name','weiban_follow.phone_number']);
+		// 修改
+		if( request()->isMethod('post') ){
+			// 如果数据不存在
+			if( !$oldData )			return json_send(['code'=>'error','msg'=>'查无该客户信息']);
+			// 数据处理
+			$oldData				= $oldData->toArray();
+			// 组合数据
+			$tags					= request('tags',[]);
+			// 获取客户的原来标签
+			$oldData				= $WeiBanTags->getListByWeibanExtid($oldData['id']);
+			// 获取标签数据
+			$oldTags				= array_column($oldData,'name');
+			// 原标签对比新标签多出来的,移除
+			$rmTags					= array_diff($oldTags,$tags);
+			// 新标签对比原标签多出来的,新增
+			$addTags				= array_diff($tags,$oldTags);
+			// 获取标签数据
+			$tagList				= $Taglist->getListByItem();
+			// 循环需要移除的标签,获取对应的tagid
+			$markTag['add_tag_id_list'] = [];
+			$markTag['remove_tag_id_list'] = [];
+			// 循环处理
+			foreach ( $tagList as $tag ) {
+				// 新增的
+				if(  in_array($tag['tag_name'],$addTags) ) $markTag['add_tag_id_list'][] = $tag['tag_id'];
+				// 移除的
+				if(  in_array($tag['tag_name'],$rmTags) ) $markTag['remove_tag_id_list'][] = $tag['tag_id'];
+			}
+			// 提示
+			if( !$markTag['add_tag_id_list'] && !$markTag['remove_tag_id_list'] ){
+				// 提示
+				return 				json_send(['code'=>'error','msg'=>'标签未改变']);
+			}
+			// 微伴ID
+			$markTag['external_user_id']= $extUserid;
+			$markTag['staff_id']		= $staffId;
+			// 修改数据
+			foreach ($addTags as $key => $value) {
+				// 循环处理
+				foreach ( $tagList as $tag ) {
+					// 如果数据匹配
+					if( $tag['tag_name'] == $value ) {
+						// 重组添加数据
+						$value				= ['weiban_extid'=>$extUserid,'staff_id'=>$staffId,'name'=>$tag['tag_name'],'group'=>$tag['tag_group_name'],'update_time'=>time()];
+						// 重组添加数据
+						$addTags[$key]		= $value;
+						// 跳出循环
+						break;
+					}
+				}
+			}
+			// 事务
+			DB::beginTransaction();
+			// 尝试执行代码
+			try {
+				// 添加标签
+				$result 				= $markTag['add_tag_id_list'] ? $WeiBanTags->query()->insert($addTags) : true;
+				// 修改结果
+				if( !$result )			{
+					// 回滚
+					DB::rollBack();
+					// 提示
+					return 				json_send(['code'=>'error','msg'=>'客户标签添加失败']);
+				}
+				// 删除标签
+				$result 				= $markTag['remove_tag_id_list'] ? $WeiBanTags->query()->whereIn('name',$rmTags)->where([['weiban_extid','=',$extUserid],['staff_id','=',$staffId]])->delete() : true;
+				// 修改结果
+				if( !$result )			{
+					// 回滚
+					DB::rollBack();
+					// 提示
+					return 				json_send(['code'=>'error','msg'=>'客户标签移除失败']);
+				}
+				// 企微打标签
+				$result 				= OpenApi::markTags($extUserid,$markTag['add_tag_id_list'],$markTag['remove_tag_id_list'],$staffId);
+				// 修改结果
+				if( !$result )			{
+					// 回滚
+					DB::rollBack();
+					// 提示
+					return 				json_send(['code'=>'error','msg'=>'客户标签同步失败']);
+				}
+				// 提交
+				DB::commit();
+				// 告知结果
+				return					json_send(['code'=>'success','msg'=>'客户标签成功','action'=>'add']);
+			} catch (\Throwable $th)	{
+				// 回滚
+				DB::rollBack();
+				// 修改结果
+				return					json_send(['code'=>'error','msg'=>'客户标签标记失败','data'=>['error'=>$th->getMessage()]]);
+			}
+		}
+		// 如果数据不存在
+		if( !$oldData )			return $this->error('查无该客户信息');
+		// 数据处理
+		$oldData				= $oldData->toArray();
+		// 获取标签
+		$oldData['tags']		= $WeiBanTags->getListByWeibanExtid($oldData['id']);
+		// 获取标签数据
+		$oldData['tags']		= array_column($oldData['tags'],'name');
+		// 获取标签数据
+		$tagList				= $Taglist->getList();
+		// 分配数据
+		$this->assign('crumbs','客户标签');
+		$this->assign('oldData', $oldData);
+		$this->assign('tagList', $tagList);
+		// 加载模板
+		return 					$this->fetch();
+	}
 
 }

+ 14 - 73
app/Http/Controllers/Api/Test.php

@@ -1,4 +1,6 @@
-<?php namespace App\Http\Controllers\Api;
+<?php
+
+namespace App\Http\Controllers\Api;
 
 use App\Http\Controllers\Api\Api;
 use App\Facades\Servers\WechatMini\Mini;
@@ -9,78 +11,17 @@ use App\Facades\Servers\WechatMini\Mini;
  * @author 刘相欣
  * 
  * */
-class Test extends Api{
-	
-	
-	/**
-	 * 同步			/api/test/sync_user
-	 * 
-	 * */
-	public function sync_user(){
-        // 跳转链接
-		$link						= Mini::getUrlLink('pages/index/index');
-		return 						json_send(['code'=>'error','msg'=>'禁用账号','data'=>$link]);
-    }
+class Test extends Api
+{
 
-	/**
-	 * 自动发放优惠券
-	 * 
-	 */
-	private function autoCoupon($uid){
-		// 模型实例
-		$Rule 					= new \App\Models\CouponRewardRule();
-		$RuleProduct 			= new \App\Models\CouponRewardProduct();
-		$OrdersProduct 			= new \App\Models\OrdersProduct();
-		$Custom					= new \App\Models\Custom();
-		$Coupon					= new \App\Models\Coupon();
-		$CustomCoupon			= new \App\Models\CustomCoupon();
-		// 获取配置列表
-		$ruleList				= $Rule->getList();
-		// 如果没有信息的话
-		if( !$ruleList )		return ['success'=>'暂无活动'];
-		// 获取客户城市ID
-		$customCityId			= (int) $Custom->getValue($uid,'city_id');
-		// 循环配置列表
-		foreach ( $ruleList as 	$value ) {
-			// 如果存在城市范围,并且不在城市范围,不参与这个活动
-			if( $value['city_ids'] && !in_array($customCityId,explode(',',$value['city_ids'])) ) continue;
-			// 未到开始时间
-			if( $value['start_time'] > time() )  continue;
-			// 通过配置ID获取对应的商品范围
-			$productList 		= $RuleProduct->getListByRule($value['id']);
-			// 如果不存在产品范围,跳过
-			if( !$productList ) continue;
-			// 获取客户 规定时段内订单的商品ID以及购买数量
-			$orderList 			= $OrdersProduct->query()->where([['custom_uid','=',$uid],['status','=',1],['insert_time','>=',$value['start_time']],['insert_time','<=',$value['end_time']]])->get(['product_id','buy_num'])->toArray();
-			// 如果没有订单总数
-			if( !$orderList ) 	continue;
-			// 计算商品总量
-			$total				= 0;
-			// 循环商品范围
-			foreach ($productList as $scope) {
-				// 循环订单产品
-				foreach ($orderList as $order) {
-					// 如果产品不相等
-					if( $scope['product_id'] != $order['product_id'] ) continue;
-					// 相等的计算总量
-					$total		+= $scope['product_units'] * $order['buy_num'];
-				}
-			}
-			// 判断总数是不是达标
-			if( $total < $value['std_num'] )  continue;
-			// 达标的是否已经发送过优惠券
-			$havaCoupon			= $CustomCoupon->query()->where([['custom_uid','=',$uid],['coupon_id','=',$value['coupon_id']]])->first(['status']);
-			// 已经发过优惠券的,不发
-			if( $havaCoupon )   continue;
-			// 获取优惠券的可用时间
-			$expTime			= $Coupon->query()->where([['id','=',$value['coupon_id']]])->value('exp_time');
-			// 时间转时间
-			$expTime			= $Coupon->getExpTime($expTime);
-			// 发送优惠券
-			$CustomCoupon->add(['coupon_id'=>$value['coupon_id'],'custom_uid'=>$uid,'exp_time'=>$expTime]);
-		}
-		// 返回成功
-		return					['success'=>'操作成功'];
-	}
 
+  /**
+   * 同步			/api/test/sync_user
+   * 
+   * */
+  public function sync_user(){
+    // 跳转链接
+    $link            = Mini::getUrlLink('pages/index/index');
+    return             json_send(['code' => 'error', 'msg' => '禁用账号', 'data' => $link]);
+  }
 }

+ 5 - 0
app/Jobs/WeiBanSync.php

@@ -57,6 +57,8 @@ class WeiBanSync implements ShouldQueue
             $Sync   = new Sync();
             // 尝试执行
             try{
+                // 记录错误信息
+                Log::error('weiban_sync','进行更新',$this->extUser);
                 // 通过id查询详情信息
                 $extUser                        = OpenApi::getUserDetail($this->extUser['id']);
                 // 不存在客户信息,再次获取
@@ -65,6 +67,9 @@ class WeiBanSync implements ShouldQueue
                 if( $extUser )                  $this->sync_user($extUser);
                 // 解除锁定
                 $Sync->unlockSyncExtidMark($this->extUser['id']);
+                // 记录错误信息
+                Log::error('weiban_sync','更新成功',$this->extUser);
+
             } catch (\Exception $exception) {
                 // 解除锁定
                 $Sync->unlockSyncExtidMark($this->extUser['id']);

+ 85 - 0
app/Models/WeiBan/Taglist.php

@@ -0,0 +1,85 @@
+<?php namespace App\Models\WeiBan;
+
+use Illuminate\Database\Eloquent\Factories\HasFactory;
+use Illuminate\Database\Eloquent\Model;
+
+/**
+ * 客户-客服标签列表模型
+ * 
+ */
+class Taglist extends Model
+{
+    use HasFactory;
+
+    // 与模型关联的表名
+    protected $table = 'weiban_taglist';
+    // 是否主动维护时间戳
+    public $timestamps = false;
+    // 定义时间戳字段名
+    // const CREATED_AT = 'insert_time';
+    // const UPDATED_AT = 'update_time';
+    // 主键字段名
+    protected $primaryKey = 't_id';
+
+    /**
+     * 批量写入
+     * 
+     * @param   array      $list      数据列表
+     * 
+     */
+    function upsertData($list) {
+        // 数据处理
+        foreach ($list as $key => $value) {
+            $value      = ['t_id'=>$value['t_id'],'tag_id'=>$value['tag_id'],'tag_name'=>$value['tag_name'],'tag_group_id'=>$value['tag_group_id'],'tag_group_name'=>$value['tag_group_name']];
+            $list[$key] = $value;
+        }
+        // 批量写入
+        $result         = $this->query()->upsert($list,'t_id',['tag_id','tag_name','tag_group_id','tag_group_name']);
+        // 如果修改成功,更新获取标签列表缓存
+        if( $result )   $this->getList(true);
+        // 返回结果
+        return          $result;
+    }
+
+
+    /**
+     * 获取标签列表
+     * @param   Bool    $force  是否强制更新
+     * 
+     */
+    public function getList($force=false)
+    {
+        // 结果数据
+        $list                  = $force ? [] : cache('admin:weiban:taglist:list');
+        // 不存在数据
+        if ( !$list ) {
+            // 从数据库获取数据
+            $data              = $this->query()->get(['tag_id','tag_name','tag_group_id','tag_group_name']);
+            // 是否有数据
+            $data              = $data ? $data->toArray() : [];
+            // 循环处理数据
+            $list              = [];
+            // 进行更新
+            foreach ($data as $value) {
+                // 重组数据
+                $list[$value['tag_group_id']]['group_name']                  = $value['tag_group_name'];
+                $list[$value['tag_group_id']]['tag_list'][$value['tag_id']]  = $value['tag_name'];
+            }
+            // 存起来
+            cache(['admin:weiban:taglist:list'=>$list]);
+        }
+        // 返回结果
+        return                  $list;
+    }
+
+    /**
+     * 获取标签二维数组列表
+     * 
+     */
+    public function getListByItem()
+    {
+        // 获取标签数据
+        $tagList			= $this->query()->get(['tag_id','tag_name','tag_group_id','tag_group_name'])->toArray();
+        return              $tagList;
+    }
+}

+ 73 - 2
app/Servers/WeiBan/OpenApi.php

@@ -2,8 +2,7 @@
 
 use Ixudra\Curl\Facades\Curl;
 use App\Facades\Servers\Logs\Log;
-use App\Facades\Servers\Redis\Redis;
-use App\Facades\Servers\Redis\RedisLock;
+use App\Models\WeiBan\Taglist;
 
 /**
  * 微信小程序
@@ -164,6 +163,78 @@ class OpenApi
         return                              $result['external_user'];
     }
 
+    /**
+     * 获取标签列表
+     * 
+     * @param       int         $limit      每页条数
+     * @param       int         $offset     列表偏移。用于迭代获取所有数据,默认值为0
+     * 
+     * @return      array                   标签列表
+     * 
+     * */
+    public function getTagList($limit=100,$offset=0){
+        // 获取调用凭证
+        $accessToken                        = $this->getAccessToken();
+        // 如果没有返回
+        if( !$accessToken )                 return [];
+        // 组装接口
+        $url                                = $this->domain.'/open-api/tag/list';
+        // 调用接口
+        $result                             = Curl::to($url)->withData(['access_token'=>$accessToken,'limit'=>$limit,'offset'=>$offset])->asJson(true)->get();
+        // 如果没有返回
+        if( !isset($result['errcode']) )    {
+            Log::error('weiban_openai/tag_list','接口未返回数据');
+            return [];
+        }
+        // 如果是凭证错误,递归
+        if( $result['errcode'] == '10001' ) return $this->getTagList($limit,$offset);
+        // 如果调用结果失败
+        if( $result['errcode'] != 0 )       {
+            Log::error('weiban_openai/tag_list',$result['errcode'].'=>'.$result['errmsg']);
+            return                          [];
+        }
+        // 如果列表偏移量小于标签总数
+        if( $offset < $result['total'] )    {
+            // 休眠一秒钟,避免超限错误
+            sleep(1);
+            // 获取下一页
+            $result['tag_list']             = array_merge($result['tag_list'],$this->getTagList($limit,$offset+$limit));
+        }
+        // 修改数据
+        (new Taglist)->upsertData($result['tag_list']);
+        // 返回结果
+        return                              $result['tag_list'];
+    }
+
+    /**
+     * 批量更新客户企业标签
+     * 
+     * */ 
+    public function markTags($extUserid,$addTags,$rmTags,$staffId){
+        // 获取调用凭证
+        $accessToken                        = $this->getAccessToken();
+        // 如果没有返回
+        if( !$accessToken )                 return [];
+        // 组装接口
+        $url                                = $this->domain.'/open-api/tag/batch_update?access_token='.$accessToken;
+        $param                              = ['staff_id'=>$staffId,'external_user_id'=>$extUserid,'add_tag_id_list'=>$addTags,'remove_tag_id_list'=>$rmTags]; 
+        // 调用接口
+        $result                             = Curl::to($url)->withData($param)->asJson(true)->post();
+        // 如果没有返回
+        if( !isset($result['errcode']) )    {
+            Log::error('weiban_openai/tag_batch_update','接口未返回数据',$result);
+            return                          false;
+        }
+        // 如果是凭证错误,递归
+        if( $result['errcode'] == '10001' ) return $this->markTags($extUserid,$addTags,$rmTags,$staffId);
+        // 如果调用结果失败
+        if( $result['errcode'] != 0 )    {
+            Log::error('weiban_openai/tag_batch_update',$result['errcode'].'=>'.$result['errmsg']);
+            return                          false;
+        }
+        // 返回结果
+        return                              true;
+    }
 
 }
 

+ 7 - 1
resources/views/admin/weiban_external/index.blade.php

@@ -59,7 +59,13 @@ style="margin: 0 auto;width: 96%;padding: 30px 0px;"
 							<td> <a href="{{url('admin/custom/index?'.http_build_query(['custom_code'=>$a['custom_code']]))}}">{{$a['custom_name']}}</a></td>
 							<td> {{date('Y/m/d H:i:s',$a['insert_time'])}}</td>
 							<td> {{date('Y/m/d H:i:s',$a['update_time'])}}</td>
-							<td> </td>
+							<td>
+								@if(check_auth('admin/weiban_external/mark_tags'))
+								<a class="btn btn-success btn-sm" href="{{url('admin/weiban_external/mark_tags?'.http_build_query(['weiban_extid'=>$a['id'],'staff_id'=>$a['staff_id']]))}}">
+									客户标签
+								</a>
+								@endif
+							</td>
 						</tr>  
 						@endforeach
 						<tr>

+ 39 - 0
resources/views/admin/weiban_external/mark_tags.blade.php

@@ -0,0 +1,39 @@
+@extends('admin.public.base')
+@section('body_class')
+style="margin: 0 auto;width: 96%;padding: 30px 0px;"
+@endsection
+@section('content')
+<form class="post-form" action="" method="post">
+	<div class="form-group col-sm-4">
+		<label class="control-label">客户昵称</label>
+		<input class="form-control" disabled="" type="text" placeholder="名称" maxlength="50" name="name" value="{{$oldData['name']}}" />
+	</div>
+	<div class="form-group col-sm-4">
+		<label class="control-label">客户备注</label>
+		<input class="form-control" disabled=""  type="text" placeholder="名称" maxlength="50" name="name" value="{{$oldData['remark']}}" />
+	</div>
+	<div class="form-group col-sm-4" >
+		<label class="control-label">接待人员</label>
+		<select name="userid" class="form-control" disabled="" >
+			<option value="{{$oldData['staff_id']}}" >{{$oldData['staff_name']}}</option>
+		</select>
+	</div>
+	<div class="form-group col-sm-12">
+		<label class="control-label">客户标签</label>
+		<select name="tags[]" class="form-control selectpicker" data-live-search="true" data-live-search-placeholder="搜索标签" data-none-results-text="未搜索到 {0}" title="选择标签" multiple>
+			@foreach ($tagList as $group)
+			<optgroup label="{{$group['group_name']}}">
+				@foreach ($group['tag_list'] as $tagid=>$tagname)
+				<option value="{{$tagname}}"  @if(in_array($tagname,$oldData['tags'])) selected @endif >{{$tagname}}</option>
+				@endforeach
+			</optgroup>
+			@endforeach
+		</select>
+	</div>
+	<div class="form-group col-sm-12">
+		@csrf
+		
+		<input id="send" type="submit" value="提交" class="btn btn-primary btn-block" />
+	</div>
+</form>
+@endsection

+ 2 - 1
routes/web.php

@@ -1,6 +1,5 @@
 <?php
 
-use Illuminate\Support\Facades\DB;
 use Illuminate\Support\Facades\Route;
 
 /*
@@ -338,6 +337,8 @@ Route::middleware('admin')->prefix('admin')->group(function(){
     /* 微伴客户 */
     // 列表
     Route::any('weiban_external/index',[App\Http\Controllers\Admin\WeibanExternal::class,'index']);
+    // 列表
+    Route::any('weiban_external/mark_tags',[App\Http\Controllers\Admin\WeibanExternal::class,'mark_tags']);
 
     /* 订单Banner */
     // 列表