'ID', 'activity_id' => '活动ID', 'user_id' => '用户ID', 'mall_id' => '商场ID', 'status' => '状态[1启用 0禁用 -1删除]', 'target' => '目标', 'new_user_num' => '拉新人数', 'order_money_num' => '现在业绩值', 'share_num' => '分享次数', 'share_visit' => '分享访问人数', 'created_at' => '创建时间', 'updated_at' => '修改时间', ]; } public function getUser() { return $this->hasOne(User::class, ['id' => 'user_id'])->select('id,mobile,nickname,avatar_url,parent_id,username'); } public function getActivity() { return $this->hasOne(PkActivity::ClassName(), ['id' => 'activity_id'])->select('name,id'); } /** * 更新统计数据 * @Author: ltm * @DateTime: 2022/6/8 0015 9:26 * @Copyright: copyright (c) 2021 * @param $mall_id * @param array $params * @return Rebate|bool */ public static function setData(array $params){ try{ //添加活动统计数据 $model = self::findOne(['user_id' => $params['user_id'],'mall_id' => $params['mall_id'],'activity_id'=>$params['activity_id']]); if($model){ if($params['new_user_num']) $model->new_user_num = $model->new_user_num + $params['new_user_num']; if($params['order_money_start']) $model->order_money_start = $model->order_money_start + $params['order_money_start']; if($params['order_money_num']) $model->order_money_num = $model->order_money_num + $params['order_money_num']; if($params['order_money_end']) $model->order_money_end = $model->order_money_end + $params['order_money_end']; if($params['share_num']) $model->share_num = $model->share_num + $params['share_num']; if($params['share_visit']) $model->share_visit = $model->share_visit + $params['share_visit']; unset($params['new_user_num'], $params['order_money_start'], $params['order_money_num'], $params['order_money_end'], $params['share_num'], $params['share_visit']); }else{ $model = new self(); $model->loadDefaultValues(); $model->mall_id = $params['mall_id']; $model->user_id = $params['user_id']; } if(!$model->load($params,'') || !$model->save()) throw new Exception($model->getErrorMessage()); return $model; }catch(\Exception $e){ self::setStaticError($e->getMessage()); return false; } } /** * 更新拉新统计数据 * @Author: ltm * @DateTime: 2022/6/8 0015 9:26 * @Copyright: copyright (c) 2021 * @param $mall_id * @param array $params * @return Rebate|bool */ public static function updateNewData(array $user,array $activity){ try{ //添加活动统计数据 $params['mall_id'] = $user['mall_id']; $model = self::findOne(['user_id' => $user['parent_id'],'mall_id' => $user['mall_id'],'activity_id'=>$activity['id']]); if($model){ if($activity['new_user_num']) $model->new_user_num = $model->new_user_num + $activity['new_user_num']; if(!$model->load($params,'') || !$model->save()) throw new Exception($model->getErrorMessage()); //添加活动记录数据 $log['activity_id'] = $activity['id']; $log['share_user_id'] = $user['parent_id']; $log['mall_id'] = $user['mall_id']; $log['invitee_id'] = $user['id']; $log['year'] = date('Y'); $log['month'] = date('m'); $log['date'] = date('d'); $log['activity_type'] = PkEnum::ACTIVITY_TYPE_PERSON; $add_log = PkInviteLog::setData($log); //按天更新统计数据 $date_statistic['mall_id'] = $user['mall_id']; $date_statistic['new_user_num'] = 1; $date_statistic['date'] = date("Y-m-d"); $add_static = PkDateStatistic::setData($date_statistic); //更新商场pk数据 $statistic['mall_id'] = $user['mall_id']; $statistic['new_user_num'] = 1; $add_static = PkStatistic::setData($statistic); $activity = PkActivity::findOne(['id'=>$activity['id']]); $activity->new_num = $activity->new_num + 1; if (!$activity->save()) { throw new Exception($activity->getErrorMessage()); } } return $model; }catch(\Exception $e){ self::setStaticError($e->getMessage()); return false; } } /** * 更新拉新统计数据 * @Author: ltm * @DateTime: 2022/6/8 0015 9:26 * @Copyright: copyright (c) 2021 * @param $mall_id * @param array $params * @return Rebate|bool */ public static function updateOrderData(array $user,array $activity,array $order){ try{ //添加活动统计数据 $params['mall_id'] = $user['mall_id']; $model = self::findOne(['user_id' => $user['parent_id'],'mall_id' => $user['mall_id'],'activity_id'=>$activity['id']]); if(!empty($model)){ $model->order_money_num = $model->order_money_num + $order['pay_money']; if(!$model->load($params,'') || !$model->save()) throw new Exception($model->getErrorMessage()); //添加活动记录数据 $log['activity_id'] = $activity['id']; $log['share_user_id'] = $user['parent_id']; $log['order_id'] = $order['id']; $log['buyer_id'] = $user['id']; $log['order_id'] = $order['id']; $log['mall_id'] = $user['mall_id']; $log['money'] = $order['pay_money']; $log['year'] = date('Y'); $log['month'] = date('m'); $log['date'] = date('d'); $log['activity_type'] = PkEnum::ACTIVITY_TYPE_PERSON; $add_log = PkPerformanceLog::setData($log); //按天更新统计数据 $date_statistic['mall_id'] = $user['mall_id']; $date_statistic['order_money_num'] = $order['pay_money']; $date_statistic['date'] = date("Y-m-d"); $add_static = PkDateStatistic::setData($date_statistic); //更新商场pk数据 $statistic['mall_id'] = $user['mall_id']; $statistic['order_money_num'] = $order['pay_money']; $add_static = PkStatistic::setData($statistic); $activity = PkActivity::findOne(['id'=>$activity['id']]); $activity->order_amount = $activity->order_amount + $order['pay_money']; if (!$activity->save()) { throw new Exception('统计业绩失败' . $activity->getErrorMessage()); } } return $model; }catch(\Exception $e){ self::setStaticError($e->getMessage()); return false; } } /** * (后台)个人PK概况 */ public function personalPkStatistics($mall_id, $start_time, $end_time) { // PK活动数量 $activity_number = PkDateStatistic::pkAcitivityNumCount($mall_id, $start_time, $end_time, 'activity_num'); // 拉新获客 //$new_user_number = PkDateStatistic::pkInvitedNewUserNum($mall_id, 1, $start_time, $end_time, false); $new_user_number = PkDateStatistic::pkAcitivityNumCount($mall_id, $start_time, $end_time, 'new_user_num'); // PK业绩(元) //$performance_number = PkDateStatistic::pkPerformanceNum($mall_id, 1, $start_time, $end_time, false); $performance_number = PkDateStatistic::pkAcitivityNumCount($mall_id, $start_time, $end_time, 'order_money_num'); // PK参与人数 $join_user_number = PkDateStatistic::pkAcitivityNumCount($mall_id, $start_time, $end_time, 'join_user_num'); //分享次数 $share_number = PkDateStatistic::pkAcitivityNumCount($mall_id, $start_time, $end_time, 'share_num'); // 分享访问人数 $share_visit_number = PkDateStatistic::pkAcitivityNumCount($mall_id, $start_time, $end_time, 'share_visit'); return compact('activity_number', 'new_user_number', 'performance_number', 'join_user_number', 'share_number', 'share_visit_number'); } }