quanwei
2025-11-28 3ea53e61cc23fdb3ddf8b38a199ca60a6da8c407
1
<?php namespace app\common\model\plus\team; use app\common\enum\user\grade\ChangeTypeEnum; use app\common\model\BaseModel; /**  * 队长用户模型  */ class User extends BaseModel {     protected $name = 'team_user';     protected $pk = 'user_id';          /**      * 关联会员等级表      */     public function grade()     {         return $this->belongsTo('app\\common\\model\\plus\\team\\Grade', 'grade_id', 'grade_id');     }          /**      * 关联会员记录表      * @return \think\model\relation\BelongsTo      */     public function user()     {         return $this->belongsTo('app\\common\\model\\user\\User');     }     /**      * 关联队长关系表      * @return \think\model\relation\BelongsTo      */     public function referee()     {         return $this->belongsTo('app\\common\\model\\plus\\team\\Referee', 'user_id', 'user_id');     }     /**      * 详情      */     public static function detail($user_id, $with = ['user', 'referee'])     {         return (new static())->with($with)->find($user_id);     }     /**      * 是否为队长      */     public static function isteamUser($user_id)     {         $team = self::detail($user_id);         return !!$team && !$team['is_delete'];     }     /**      * 新增队长用户记录      * @param $user_id      * @param $data      * @return bool      */     public static function add($user_id, $data)     {         $model = static::detail($user_id) ?: new static;         $model->save(array_merge([             'user_id' => $user_id,             'grade_id' => Grade::getDefaultGradeId(),             'is_delete' => 0,             'app_id' => $model::$app_id         ], $data));         //更新队长成员         Referee::createTeam($user_id);         // 更新改用户队长的成员数量         $heads_id = Referee::getHeadsId($user_id);         if ($heads_id) {             User::setMemberInc($heads_id);         }         return true;     }     /**      * 发放队长佣金      * @param $user_id      * @param $money      * @return bool      */     public static function grantMoney($user_id, $money, $bonus_type)     {         // 队长详情         $model = static::detail($user_id);         if (!$model || $model['is_delete']) {             return false;         }         // 累积队长可提现佣金         $model->where('user_id', '=', $user_id)->inc('money', $money)->update();         // 记录队长资金明细         Capital::add([             'user_id' => $user_id,             'flow_type' => 10,             'money' => $money,             'bonus_type' => $bonus_type['value'],             'describe' => '订单分红结算-' . $bonus_type['text'],             'app_id' => $model['app_id'],         ]);         return true;     }     /**      * 批量设置队长等级      */     public function upgradeGrade($user, $upgradeGrade)     {         // 更新会员等级的数据         $this->where('user_id', '=', $user['user_id'])             ->update([                 'grade_id' => $upgradeGrade['grade_id']             ]);         (new GradeLog)->save([             'old_grade_id' => $user['grade_id'],             'new_grade_id' => $upgradeGrade['grade_id'],             'change_type' => ChangeTypeEnum::AUTO_UPGRADE,             'user_id' => $user['user_id'],             'app_id' => $user['app_id']         ]);         return true;     }     /**      * 累计队长成员数量      */     public static function setMemberInc($user_id)     {         if(empty($user_id)) {             return false;         }         $model = static::detail($user_id);         return $model->save([             'total_num' => Referee::teamCount($user_id)         ]);     } }