| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248 |
- <?php
- namespace addons\Pk\common\models;
- use addons\Pk\common\enums\PkEnum;
- use common\enums\StatusEnum;
- use common\models\user\User;
- use phpDocumentor\Reflection\DocBlock\Tags\Var_;
- use Yii;
- use yii\base\Exception;
- /**
- * This is the model class for table "{{%addons_pk_activity_statistic}}".
- *
- * @property int $id
- * @property int|null $activity_id 活动ID
- * @property int|null $user_id 用户ID
- * @property int $mall_id 商场ID
- * @property int $status 状态[1启用 0禁用 -1删除]
- * @property int|null $target 目标
- * @property int $new_user_num 拉新人数
- * @property float|null $order_money_num 现在业绩值
- * @property int $share_num 分享次数
- * @property int $share_visit 分享访问人数
- * @property int $created_at 创建时间
- * @property int $updated_at 修改时间
- */
- class PkActivityStatistic extends \common\models\base\BaseActiveRecord
- {
- const ENABLE_STATUS = 1; // 启用
- CONST DISABLE_STATUS = 0; // 禁用
- CONST DELETE_STATUS = -1; // 删除
- /**
- * {@inheritdoc}
- */
- public static function tableName()
- {
- return '{{%addons_pk_activity_statistic}}';
- }
- /**
- * {@inheritdoc}
- */
- public function rules()
- {
- return [
- [['activity_id', 'user_id', 'mall_id', 'status', 'new_user_num', 'share_num', 'share_visit', 'created_at', 'updated_at'], 'integer'],
- [['order_money_num', 'target'], 'number'],
- ];
- }
- /**
- * {@inheritdoc}
- */
- public function attributeLabels()
- {
- return [
- 'id' => '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');
- }
- }
|