Files
amb_wechatapp/application/api/model/app/agent/Level.php
T

156 lines
3.5 KiB
PHP

<?php
namespace app\api\model\app\agent;
use think\Model;
use think\Db;
/**
* 分销等级
*/
class Level extends Model
{
/**
* 获取用户当前等级
* @param $userId
* @return void
*/
public function getUserLevel($userId){
$levelList = \app\common\model\app\agent\Level::getLevelList();
if(empty($levelList)){
return false;
}
$memberModel = new \app\common\model\app\agent\Member();
$member = $memberModel->getMember($userId);
if(!$member || $member['status'] != 1){
return false;
}
foreach ($levelList as $item){
if( isset($item['id']) && $member['level'] == $item['id']){
return $item;
}
}
return $levelList[0];
}
/**
* 获取用户的下一等级
* @param $userId
* @return void
*/
public function getUserNextLevel($userId){
$levelList = \app\common\model\app\agent\Level::getLevelList();
$memberModel = new \app\common\model\app\agent\Member();
$member = $memberModel->getMember($userId);
if(!$member){
return false;
}
$levelIndex = 0;
//当前的等级下标
$nowLevelIndex = 0;
foreach ($levelList as $item){
$data[] = $item;
if( isset($item['id']) && $member['level'] == $item['id']){
$nowLevelIndex = $levelIndex;
}
$levelIndex++;
}
if(isset($data[$nowLevelIndex+1])){
return $data[$nowLevelIndex+1];
}
return false;
}
/**
* 检查升级
* @param $userId
* @return void
*/
public function handle($userId){
$nextLevelId = $this->checkLevelCondtion($userId);
if($nextLevelId !== false){
$this->upLevel($userId,$nextLevelId);
}
return true;
}
/**
* 检查是否满足升级条件
* @param $userId 用户ID
* @return false 满足则返回升级等级ID 否则false
*/
public function checkLevelCondtion($userId)
{
$config = \app\common\model\app\Config::getConfig('agent');
$upLevel = $this->getUserNextLevel($userId);
if(!$upLevel){
return false;
}
//判断是否满足条件
$satisfy = false;
foreach ($upLevel['condition'] as $type => $item){
if($item['status'] == 1){
//判断自定条件
$temp = \app\api\model\app\agent\Condition::checkCondition($userId,$type,$item['value']);
if($config['upgrade'] == 2){
//满足一个即可
if($temp){
$satisfy = true;
break;
}
}else{
//需要全部满足
if(!$temp){
$satisfy = false;
break;
}else{
$satisfy = true;
}
}
}
}
if($satisfy){
return $upLevel['id'];
}
return false;
}
/**
* 升级
* @param $userId 用户ID
* @param $toLevelId 要升级的等级ID
* @return void
*/
public function upLevel($userId,$toLevelId){
$memberModel = new \app\common\model\app\agent\Member();
return $memberModel->where([
'user_id'=>$userId
])->update([
'level'=>$toLevelId
]);
}
}