admin/plugins/team-dividend/src/models/Uplog.php

107 lines
3.0 KiB
PHP

<?php
namespace Yunshop\TeamDividend\models;
use app\common\models\BaseModel;
use app\common\models\Member;
use Illuminate\Database\Eloquent\Builder;
use Yunshop\TeamDividend\services\upgrate\UplogService;
class Uplog extends BaseModel
{
public $table = 'yz_team_dividend_uplog';
public $timestamps = true;
protected $guarded = [''];
protected $casts = [
'before_level_setting' => 'json',
'after_level_setting' => 'json',
'conditions' => 'json',
];
protected $appends = [
'type_name', 'code_name'
];
// 后台修改
const CODE_ADMIN = 0;
// 自主升级
const CODE_SELF = 1;
// 激活码
const CODE_KEY = 2;
public function getTypeNameAttribute()
{
$name = '与';
if ($this->up_type == 1) {
$name = '或';
}
return $name;
}
public function getCodeNameAttribute()
{
$name = '后台修改';
if ($this->up_code == self::CODE_SELF) {
$name = '自主升级';
}
if ($this->up_code == self::CODE_KEY) {
$name = '激活码';
}
return $name;
}
public function scopeSearch($query, $search)
{
if ($search['uid']) {
$query->where('uid', $search['uid']);
}
if ($search['before_level_id'] > 0) {
$query->where('before_level_id', $search['before_level_id']);
}
if ($search['after_level_id'] > 0) {
$query->where('after_level_id', $search['after_level_id']);
}
return $query;
}
public function member()
{
return $this->hasOne(Member::class, 'uid', 'uid');
}
public function beforeLevel()
{
return $this->hasOne(TeamDividendLevelModel::class, 'id', 'before_level_id');
}
public function afterLevel()
{
return $this->hasOne(TeamDividendLevelModel::class, 'id', 'after_level_id');
}
public static function addLog($agency, $beforeLevel, $afterLevel, $upCode = Uplog::CODE_ADMIN)
{
$beforeLevelSetting = !is_null($beforeLevel) ? $beforeLevel->toArray() : [];
$afterLevelSetting = $afterLevel->toArray();
$uplogService = new UplogService($agency->uid, $agency->uniacid, $beforeLevelSetting['id']);
$beforeLevelSetting['has_one_upgrade_set']['parase'] = unserialize($beforeLevelSetting['has_one_upgrade_set']['parase']);
$uplogService->setBeforeLevelSetting($beforeLevelSetting);
$afterLevelSetting['has_one_upgrade_set']['parase'] = unserialize($afterLevelSetting['has_one_upgrade_set']['parase']);
$uplogService->setAfterLevelSetting($afterLevelSetting);
$uplogService->setAfterLevelId($afterLevelSetting['id']);
$uplogService->setUpCode($upCode);
$uplogService->store();
}
public static function boot()
{
parent::boot();
static::addGlobalScope(function (Builder $builder) {
$builder->uniacid();
});
}
}