1, 'msg' => '未开启分销' ]; } // 成为下线条件 0--首次点击分享链接 1--首次下单 2--首次付款 if ($setting['condition']['value'] !== $this->condition) { \Yii::warning('未满足成为下线条件'); return [ 'code' => 1, 'msg' => '未满足成为下线条件' ]; } //自身分享的页面 if ($this->user_id == $this->parent_id) { \Yii::warning('自身分销的页面'); return [ 'code' => 1, 'msg' => '自身分销的页面' ]; } //父级id是否是分销商 $exit = Share::find()->andWhere(['user_id' => $this->parent_id, 'store_id' => $this->store_id, 'is_delete' => 0, 'status' => 1])->exists(); if (!$exit) { \Yii::warning('不是分销商'); return [ 'code' => 1, 'msg' => '不是分销商' ]; } //判断父级id是否在三级分销链中 $res = self::check($this->user_id, $this->parent_id, 0); if ($res['code'] == 1) { \Yii::warning('父级id不存在三级分销链中'); return [ 'code' => 1, 'msg' => '父级id是否在三级分销链中' ]; } $user = User::findOne(['id' => $this->user_id, 'is_delete' => 0]); $parent = User::findOne(['id' => $this->parent_id, 'is_delete' => 0]); if ($parent->is_distributor != 1) { \Yii::warning('父级不是分销商'); return [ 'code' => 1, 'msg' => '父级不是分销商' ]; } //用户是否是分销商 if ($user->is_distributor == 1) { \Yii::warning('用户不是分销商'); return [ 'code' => 1, 'msg' => '用户不是分销商' ]; } //用户是否存在父级 if ($user->parent_id != 0 || $user->old_parent_id != 0) { \Yii::warning('用户存在存在父级'); return [ 'code' => 1, 'msg' => '用户存在存在父级' ]; } $user->parent_id = $this->parent_id; $user->old_parent_id = $this->parent_id; if ($user->save()) { // 推荐送积分 if ($setting['d_rec_member_integral']['value'] > 0) { $before = $user->integral; $user->integral += $setting['d_rec_member_integral']['value']; $user->save(); $register = new Register(); $register->store_id = get_store_id(); $register->user_id = $user->id; $register->register_time = "$this->parent_id";// 推荐人 $register->created_at = time(); $register->continuation = 0; $register->type = 31; $register->integral = $setting['d_rec_member_integral']['value']; $register->order_id = 0; $register->save(); $log = new AccountLog(); $log->store_id = get_store_id(); $log->user_id = $user->id; $log->type = AccountLog::TYPE_INTEGRAL; $log->amount = $setting['d_rec_member_integral']['value']; $log->desc = "被推荐会员赠送积分"; $log->before = $before; $log->after = $user->integral; $log->log_type = AccountLog::LOG_TYPE_INCOME; $log->operator = 'system'; $log->operator_id = 0; $log->operator_type = AccountLog::TYPE_OPERATOR_NORMAL; $log->created_at = time(); $log->order_id = 0; $log->order_type = 0; $log->save(); } if ($setting['rec_member_integral']['value'] > 0) { $parent_info = User::findOne($this->parent_id); $before = $parent_info->integral; $parent_info->integral += $setting['rec_member_integral']['value']; $parent_info->save(); $register = new Register(); $register->store_id = get_store_id(); $register->user_id = $user->id; $register->register_time = "$this->parent_id";// 推荐人 $register->created_at = time(); $register->continuation = 0; $register->type = 31; $register->integral = $setting['rec_member_integral']['value']; $register->order_id = 0; $register->save(); $log = new AccountLog(); $log->store_id = get_store_id(); $log->user_id = $user->id; $log->type = AccountLog::TYPE_INTEGRAL; $log->amount = $setting['rec_member_integral']['value']; $log->desc = "推荐会员赠送积分"; $log->before = $before; $log->after = $user->integral; $log->log_type = AccountLog::LOG_TYPE_INCOME; $log->operator = 'system'; $log->operator_id = 0; $log->operator_type = AccountLog::TYPE_OPERATOR_NORMAL; $log->created_at = time(); $log->order_id = 0; $log->order_type = 0; $log->save(); } return [ 'code' => 0, 'msg' => '成功', 'data' => $parent->nickname ]; } else { return [ 'code' => 1, 'msg' => '网络异常' ]; } } public static function check($user_id, $parent_id, $root = 0) { if ($root == 3) { return [ 'code' => 0, 'msg' => '可以绑定' ]; } if ($parent_id == 0) { return [ 'code' => 0, 'msg' => '可以绑定' ]; } $user = User::findOne(['id' => $parent_id, 'is_delete' => 0]); if ($user_id == $user->parent_id) { return [ 'code' => 1, 'msg' => '不能' ]; } return self::check($user_id, $user->parent_id, $root + 1); } }