| | |
| | | <?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,
'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)
]);
}
} |
| | | <?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)
]);
}
} |