|
@@ -209,26 +209,32 @@ class Core
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
- * 根据积分算等级
|
|
|
+ * 根据积分算等级,如果是自动升级,则直接升级,如果是手动升级,则将其标识置为可以升级状态。
|
|
|
*
|
|
|
* @return mixed
|
|
|
*/
|
|
|
public function setLevel($uid, $level_type)
|
|
|
{
|
|
|
- if ($level_type['type'] == 2) {
|
|
|
- return;
|
|
|
- }
|
|
|
# 获取当前用户的等级
|
|
|
$where['uid'] = $uid;
|
|
|
- $where['level_type_id'] = $type_id;
|
|
|
+ $where['level_type_id'] = $level_type['id'];
|
|
|
$user_level = Dever::db('score/user_level')->one($where);
|
|
|
+
|
|
|
+ /*
|
|
|
if ($user_level && $user_level['type'] == 2) {
|
|
|
return;
|
|
|
- } elseif ($user_level && $user_level['type'] == 1) {
|
|
|
+ } else
|
|
|
+ */
|
|
|
+
|
|
|
+ $update = array();
|
|
|
+ if ($user_level) {
|
|
|
$config = Dever::db('score/level')->one($user_level['level_id']);
|
|
|
$level = $config['level'] + 1;
|
|
|
+ $method = 'update';
|
|
|
+ $update['where_id'] = $user_level['id'];
|
|
|
} else {
|
|
|
$level = 1;
|
|
|
+ $method = 'insert';
|
|
|
}
|
|
|
|
|
|
$config = Dever::db('score/level')->one(array('level' => $level, 'level_type_id' => $level_type['id'], 'state' => 1));
|
|
@@ -236,6 +242,16 @@ class Core
|
|
|
if ($config) {
|
|
|
# 是否能升级
|
|
|
$yes = false;
|
|
|
+
|
|
|
+ if ($config['total_type'] == 1 && $config['total'] > 0) {
|
|
|
+ # 查看是否超过总数
|
|
|
+ $total = Dever::db('score/user_level')->total(array('level_id' => $config['id']));
|
|
|
+
|
|
|
+ if ($total >= $config['total']) {
|
|
|
+ return $yes;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
$rule = Dever::array_decode($config['score']);
|
|
|
if ($rule) {
|
|
|
$user_score = Dever::db('score/user')->getScoreByConfig($where);
|
|
@@ -245,6 +261,13 @@ class Core
|
|
|
$num = $v['num'];
|
|
|
if (isset($user_score[$score]) && $user_score[$score]['score'] && $user_score[$score]['score'] >= $num) {
|
|
|
$yes = $config['id'];
|
|
|
+
|
|
|
+ # 是否清空积分 当type为自动并且score为2时
|
|
|
+ if ($level_type['score'] == 2 && $level_type['type'] == 1) {
|
|
|
+ $user_score_update['where_id'] = $user_score[$score]['id'];
|
|
|
+ $user_score_update['score'] = $user_score[$score]['score'] - $num;
|
|
|
+ Dever::db('score/user')->update($user_score_update);
|
|
|
+ }
|
|
|
} else {
|
|
|
$yes = false;
|
|
|
}
|
|
@@ -252,13 +275,19 @@ class Core
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+ # 可以升级
|
|
|
if ($yes) {
|
|
|
- # 可以升级
|
|
|
- if ($user_level) {
|
|
|
- Dever::db('score/user_level')->update(array('where_id' => $user_level['id'], 'level_id' => $yes, 'level_type_id' => $level_type['id']));
|
|
|
+ if ($level_type['type'] == 2) {
|
|
|
+ $update['next_level_id'] = $yes;
|
|
|
+ $update['level_status'] = 1;
|
|
|
} else {
|
|
|
- Dever::db('score/user_level')->insert(array('uid' => $uid,'level_id' => $yes, 'type' => 1, 'level_type_id' => $level_type['id']));
|
|
|
+ $update['level_id'] = $update['next_level_id'] = $yes;
|
|
|
+ $update['level_status'] = 2;
|
|
|
}
|
|
|
+
|
|
|
+ $update['uid'] = $uid;
|
|
|
+ $update['level_type_id'] = $level_type['id'];
|
|
|
+ Dever::db('score/user_level')->$method($update);
|
|
|
}
|
|
|
}
|
|
|
}
|