| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216 |
- <?php
- /**
- * 重庆赤晓店信息科技有限公司
- * https://www.chixiaodian.com
- * Copyright (c) 2023 赤店商城 All rights reserved.
- */
- namespace app\models\common;
- use app\models\AccountLog;
- use app\models\Option;
- use app\models\Register;
- use app\models\Share;
- use app\models\User;
- use yii\base\Model;
- use yii\helpers\Json;
- class Bind extends Model
- {
- public $store_id;
- public $user_id;
- public $parent_id;
- public $condition;
- public function rules()
- {
- return [
- [['parent_id', 'user_id', 'store_id', 'condition'], 'integer'],
- ];
- }
- /**
- * @return array
- * 绑定上下级关系
- */
- public function save()
- {
- $setting = Option::get('share_basic_setting', get_store_id());
- $setting = $setting ? Json::decode($setting['value']) : [];
- //店铺未开启分销
- if ($setting['level']['value'] == 0) {
- \Yii::warning('未开启分销');
- return [
- 'code' => 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);
- }
- }
|