From f6f578d5f61d0db54b00c8e7a3d3255cf9be7bff Mon Sep 17 00:00:00 2001 From: wong <106998207@qq.com> Date: Sat, 21 Jun 2025 14:24:45 +0800 Subject: [PATCH] =?UTF-8?q?=E7=94=A8=E6=88=B7=E7=94=BB=E5=83=8F=E6=95=B0?= =?UTF-8?q?=E6=8D=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../plan/PostExternalApiV1Controller.php | 53 ++++++++++++++++++- 1 file changed, 51 insertions(+), 2 deletions(-) diff --git a/Server/application/cunkebao/controller/plan/PostExternalApiV1Controller.php b/Server/application/cunkebao/controller/plan/PostExternalApiV1Controller.php index 589f78a6..2086f5ea 100644 --- a/Server/application/cunkebao/controller/plan/PostExternalApiV1Controller.php +++ b/Server/application/cunkebao/controller/plan/PostExternalApiV1Controller.php @@ -22,7 +22,7 @@ class PostExternalApiV1Controller extends Controller private function validateSign($params, $apiKey, $sign) { // 1. 从参数中移除sign和apiKey - unset($params['sign'], $params['apiKey']); + unset($params['sign'], $params['apiKey'],$params['portrait']); // 2. 移除空值 $params = array_filter($params, function($value) { @@ -93,13 +93,20 @@ class PostExternalApiV1Controller extends Controller $trafficPool = Db::name('traffic_pool')->where('identifier', $identifier)->find(); if (!$trafficPool) { - Db::name('traffic_pool')->insert([ + $trafficPoolId =Db::name('traffic_pool')->insertGetId([ 'identifier' => $identifier, 'mobile' => $params['phone'] ]); + }else{ + $trafficPoolId = $trafficPool['id']; } $taskCustomer = Db::name('task_customer')->where('task_id', $plan['id'])->where('phone', $identifier)->find(); + + // 处理用户画像 + if(!empty($params['portrait']) && is_array($params['portrait'])){ + $this->updatePortrait($params['portrait'],$trafficPoolId); + } if (!$taskCustomer) { $tags = !empty($params['tags']) ? explode(',',$params['tags']) : []; Db::name('task_customer')->insert([ @@ -127,4 +134,46 @@ class PostExternalApiV1Controller extends Controller return ResponseHelper::error('系统错误: ' . $e->getMessage(), 500); } } + + + + /** + * 用户画像 + * @param array $data 用户画像数据 + * @param int $trafficPoolId 流量池id + */ + public function updatePortrait($data,$trafficPoolId) + { + if(empty($data) || empty($trafficPoolId) || !is_array($data)){ + return; + } + + $type = !empty($data['type']) ? $data['type'] : 0; + $source = !empty($data['source']) ? $data['source'] : 0; + $sourceId = !empty($data['sourceId']) ? $data['sourceId'] : 0; + $remark = !empty($data['remark']) ? $data['remark'] : ''; + + $data = [ + 'trafficPoolId' => $trafficPoolId, + 'type' => $type, + 'source' => $source, + 'sourceId' => $sourceId, + 'remark' => $remark, + 'count' => 1, + 'createTime' => time(), + 'updateTime' => time(), + ]; + + $res= Db::name('user_portrait') + ->where(['trafficPoolId'=>$trafficPoolId,'type'=>$type,'source'=>$source,'sourceId'=>$sourceId]) + ->where('createTime','>',time()-1800) + ->find(); + if($res){ + $count = $res['count'] + 1; + Db::name('user_portrait')->where(['id'=>$res['id']])->update(['count'=>$count,'updateTime'=>time()]); + }else{ + Db::name('user_portrait')->insert($data); + } + + } } \ No newline at end of file