153 lines
4.8 KiB
PHP
153 lines
4.8 KiB
PHP
<?php
|
|
|
|
namespace app\models;
|
|
|
|
use app\components\SiteHelper;
|
|
use Yii;
|
|
|
|
/**
|
|
* This is the model class for table "{{%level}}".
|
|
*
|
|
* @property int $id
|
|
* @property int $level 等级
|
|
* @property string $name 等级名称
|
|
* @property string $cover 封面图
|
|
* @property string $cover_min 封面图
|
|
* @property string $pic 封面图
|
|
* @property string $font_color 封面图
|
|
* @property float $recharge_number 充值多少升级
|
|
* @property float $discount 折扣
|
|
* @property int $status 是否启用0未启用1启用
|
|
* @property int|null $created_at
|
|
* @property int|null $updated_at
|
|
*/
|
|
class Level extends \yii\db\ActiveRecord
|
|
{
|
|
#大图#
|
|
const MAX_V1 = '/statics/images/level/max_v1.png';
|
|
const MAX_V2 = '/statics/images/level/max_v2.png';
|
|
const MAX_V3 = '/statics/images/level/max_v3.png';
|
|
#小图#
|
|
const MIN_V1 = '/statics/images/level/min_v1.png';
|
|
const MIN_V2 = '/statics/images/level/min_v2.png';
|
|
const MIN_V3 = '/statics/images/level/min_v3.png';
|
|
|
|
#折扣权限#
|
|
|
|
#锁#
|
|
const LOCK_V1 = '/statics/images/level/lock_v1.png';
|
|
const LOCK_V2 = '/statics/images/level/lock_v2.png';
|
|
const LOCK_V3 = '/statics/images/level/lock_v3.png';
|
|
|
|
#见习会员#
|
|
const PIC_V1 = '/statics/images/level/pic_v1.png';
|
|
|
|
#进阶会员#
|
|
const PIC_V2_1 = '/statics/images/level/pic_v2_1.png';
|
|
const PIC_V2_2 = '/statics/images/level/pic_v2_2.png';
|
|
|
|
#见习会员#
|
|
const PIC_V3_1 = '/statics/images/level/pic_v3_1.png';
|
|
const PIC_V3_2 = '/statics/images/level/pic_v3_2.png';
|
|
const PIC_V3_3 = '/statics/images/level/pic_v3_3.png';
|
|
|
|
const BACKGROUND_V1 = '/statics/images/level/background_v1.png';
|
|
const BACKGROUND_V2 = '/statics/images/level/background_v2.png';
|
|
const BACKGROUND_V3 = '/statics/images/level/background_v3.png';
|
|
|
|
/**
|
|
* {@inheritdoc}
|
|
*/
|
|
public static function tableName()
|
|
{
|
|
return '{{%level}}';
|
|
}
|
|
|
|
/**
|
|
* {@inheritdoc}
|
|
*/
|
|
public function rules()
|
|
{
|
|
return [
|
|
[['level', 'name', 'recharge_number', 'discount'], 'required'],
|
|
[['level', 'status', 'created_at', 'updated_at', 'discount','recharge_number'], 'integer'],
|
|
[['name', 'cover','pic','cover_min'], 'string', 'max' => 255],
|
|
[['font_color'], 'string', 'max' => 10],
|
|
];
|
|
}
|
|
|
|
/**
|
|
* {@inheritdoc}
|
|
*/
|
|
public function attributeLabels()
|
|
{
|
|
return [
|
|
'id' => 'ID',
|
|
'level' => '等级',
|
|
'name' => '等级名称',
|
|
'cover' => '卡片1',
|
|
'cover_min' => '卡片2',
|
|
'pic' => '图标',
|
|
'font_color' => '字体颜色',
|
|
'recharge_number' => '充值多少升级',
|
|
'discount' => '折扣',
|
|
'status' => '是否启用0未启用1启用',
|
|
'created_at' => 'Created At',
|
|
'updated_at' => 'Updated At',
|
|
];
|
|
}
|
|
|
|
public static function getUserLevel($user)
|
|
{
|
|
$id = $user->level_id;
|
|
if(in_array($user->level_id,[0,1,2])){
|
|
$id += 1;
|
|
}
|
|
$level = Level::findOne(['id' => $id]);
|
|
if($level == null){
|
|
return [];
|
|
}
|
|
|
|
$level_exp = floor($user->level_exp);
|
|
$recharge_number = $level->recharge_number;
|
|
|
|
$percentage = floor(($level_exp/$recharge_number) * 100);
|
|
$percentage = $percentage > 100 ? 100 : $percentage;
|
|
|
|
if($user->level_id == 0 || $user->level_id == 1){
|
|
$cover = SiteHelper::getFullUrl(Level::MIN_V1);
|
|
$desc = '充值'.$level->recharge_number.'元成为'.$level->name.',解锁更多折扣';
|
|
}
|
|
if($user->level_id == 2){
|
|
$cover = SiteHelper::getFullUrl(Level::MIN_V3);
|
|
$desc = '充值'.$level->recharge_number.'元升至'.$level->name.',解锁更多折扣';
|
|
}
|
|
if($user->level_id == 3){
|
|
$cover = SiteHelper::getFullUrl(Level::MIN_V2);
|
|
// $desc = '充值'.$level->recharge_number.'元升至'.$level->name.',解锁更多折扣';
|
|
$desc = '已到最高等级';
|
|
}
|
|
$level_exp = $level_exp > $recharge_number ? $recharge_number : $level_exp;
|
|
return ['cover' => $cover,'desc' => $desc,'level_exp' => $level_exp,'recharge_number' => $recharge_number,'percentage' => $percentage];
|
|
}
|
|
|
|
//检测升级
|
|
public static function checkUpgrade($level_id,$level_exp)
|
|
{
|
|
$level = Level::find()
|
|
->select('id,recharge_number')
|
|
->where(['status' => 1])
|
|
->andWhere(['>','id',$level_id])
|
|
->orderBy(['level' => SORT_DESC])->asArray()->all();
|
|
if(empty($level)){
|
|
return false;
|
|
}
|
|
foreach ($level as $index => $item){
|
|
if($level_exp >= $item['recharge_number']){
|
|
return $item['id'];
|
|
}
|
|
}
|
|
return false;
|
|
}
|
|
}
|