setGrade($userId); return true; } /** * 设置等级 */ private function setGrade($userId) { if (empty($userId)) { return false; } log_write('分销商升级$user_id='.$userId); // 用户模型 $user = UserModel::detail($userId); if (empty($user)){ return false; } // 获取所有等级 $list = GradeModel::getUsableList($user['app_id']); if ($list->isEmpty()) { return false; } // 遍历等级,根据升级条件 查询满足消费金额的用户列表,并且他的等级小于该等级 $upgradeGrade = null; foreach ($list as $grade) { if($grade['is_default'] == 1){ continue; } // 不自动升级 if($grade['auto_upgrade'] == 0){ continue; } $is_upgrade = $this->checkCanUpdate($user, $grade); if($is_upgrade){ $upgradeGrade = $grade; continue; }else{ break; } } if($upgradeGrade){ if($user['grade_id'] == $upgradeGrade['grade_id']){ return true; } $this->dologs('setAgentUserGrade', [ 'user_id' => $user['user_id'], 'grade_id' => $upgradeGrade['grade_id'], ]); // 修改会员的等级 (new UserModel())->upgradeGrade($user, $upgradeGrade); } } /** * 查询满足会员等级升级条件的用户列表 */ public function checkCanUpdate($user, $grade) { $agent_money = false; // 按推广金额升级 if($grade['open_agent_money'] == 1 && ($user['money'] + $user['freeze_money'] + $user['total_money']) >= $grade['agent_money']){ $agent_money = true; } $agent_user = false; // 按直推人数升级 if($grade['open_agent_user'] == 1 && UserModel::agentCount($user['user_id']) >= $grade['agent_user']){ $agent_user = true; } // 按购买指定商品次数升级 $purchase_count = false; if($grade['is_purchase_count'] == 1 && $user['user']['purchase_count'] >= $grade['purchase_count']){ $purchase_count = true; } if($grade['condition_type'] == 'and'){ $grade['open_agent_user']!=1 && $agent_user=true; $grade['open_agent_money']!=1 && $agent_money=true; $grade['is_purchase_count']!=1 && $purchase_count=true; return $agent_money && $agent_user && $purchase_count; }else{ return $agent_money || $agent_user || $purchase_count; } } /** * 记录日志 */ private function dologs($method, $params = []) { $value = 'UserGrade --' . $method; foreach ($params as $key => $val) $value .= ' --' . $key . ' ' . $val; return log_write($value, 'task'); } }