|
@@ -1,9 +1,12 @@
|
|
<?php namespace App\Http\Controllers\Admin;
|
|
<?php namespace App\Http\Controllers\Admin;
|
|
|
|
|
|
|
|
+use App\Facades\Servers\WeiBan\OpenApi;
|
|
use App\Models\Custom;
|
|
use App\Models\Custom;
|
|
use App\Models\WeiBan\External as Model;
|
|
use App\Models\WeiBan\External as Model;
|
|
use App\Models\WeiBan\Tags as WeiBanTags;
|
|
use App\Models\WeiBan\Tags as WeiBanTags;
|
|
|
|
+use App\Models\WeiBan\Taglist as Taglist;
|
|
use Illuminate\Support\Carbon;
|
|
use Illuminate\Support\Carbon;
|
|
|
|
+use Illuminate\Support\Facades\DB;
|
|
|
|
|
|
/**
|
|
/**
|
|
* 客户管理
|
|
* 客户管理
|
|
@@ -68,6 +71,130 @@ class WeibanExternal extends Auth{
|
|
return $this->fetch();
|
|
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();
|
|
|
|
+ }
|
|
|
|
|
|
}
|
|
}
|