<?php
|
|
namespace app\common\model\plus\release;
|
|
use app\common\model\BaseModel;
|
use app\common\model\plus\release\DemandUser as DemandUserModel;
|
use app\common\model\plus\release\SupplyUser as SupplyUserModel;
|
use app\common\model\plus\release\Evaluate as EvaluateModel;
|
|
/**
|
* 等级模型
|
*/
|
class Grade extends BaseModel
|
{
|
protected $pk = 'grade_id';
|
protected $name = 'release_grade';
|
|
/**
|
* 用户等级模型初始化
|
*/
|
public static function init()
|
{
|
parent::init();
|
}
|
|
/**
|
* 获取详情
|
*/
|
public static function detail($grade_id)
|
{
|
return (new static())->find($grade_id);
|
}
|
|
/**
|
* 获取列表记录
|
*/
|
public function getLists()
|
{
|
return $this->where('is_delete', '=', 0)
|
->field('grade_id,name')
|
->order(['weight' => 'asc', 'create_time' => 'asc'])
|
->select();
|
}
|
|
/**
|
* 获取可用的等级列表
|
*/
|
public static function getUsableList($appId = null)
|
{
|
$model = new static;
|
$appId = $appId ? $appId : $model::$app_id;
|
return $model->where('is_delete', '=', '0')
|
->where('app_id', '=', $appId)
|
->order(['weight' => 'asc', 'create_time' => 'asc'])
|
->select();
|
}
|
|
/**
|
* 获取默认等级id
|
*/
|
public static function getDefaultGradeId(){
|
$grade = (new static())->where('is_default', '=', 1)->find();
|
return $grade['grade_id'];
|
}
|
|
/**
|
* 设置用户的评论等级
|
*/
|
public function setUserGrade($userId,$prodect_type=0)
|
{
|
// 用户模型
|
if($prodect_type == 0){
|
$user = DemandUserModel::detail($userId);
|
}else{
|
$user = SupplyUserModel::detail($userId);
|
}
|
if(empty($user)){
|
return true;
|
}
|
// 获取所有等级
|
$list = self::getUsableList($user['app_id']);
|
if ($list->isEmpty()) {
|
return false;
|
}
|
//获取用户的好评条数
|
$num = EvaluateModel::getGoodsEvaluateNum($userId);
|
|
// 遍历等级
|
$upgradeGrade = null;
|
foreach ($list as $grade) {
|
if($grade['upgrade_num'] > 0 && $num >=$grade['upgrade_num']){
|
$upgradeGrade = $grade;
|
//满足条件,继续判断更高等级是否满足
|
continue;
|
}else{
|
//第一个等级不满足,则更高的等级不需要再看了
|
break;
|
}
|
}
|
//获取当前的等级权重
|
$cur_grade = self::detail($user['grade_id']);
|
//两个等级权重对比
|
if(!empty($upgradeGrade) && $upgradeGrade['weight'] > $cur_grade['weight']){
|
// 修改等级
|
if($prodect_type == 0){
|
$user = (new DemandUserModel())->where('user_id','=',$user['user_id'])->update(['grade_id'=>$upgradeGrade['grade_id']]);
|
}else{
|
$user = (new SupplyUserModel())->where('user_id','=',$user['user_id'])->update(['grade_id'=>$upgradeGrade['grade_id']]);;
|
}
|
}
|
}
|
}
|