|
@@ -238,9 +238,17 @@ class UserLevelServices extends BaseServices
|
|
|
// $field[] = Form::number('valid_date', '有效时间(天)', $vipinfo['valid_date'] ?? 0)->min(0)->col(12);
|
|
|
$field[] = Form::number('grade', '等级', $vipinfo['grade'] ?? 0)->min(0)->precision(0)->col(8);
|
|
|
$field[] = Form::number('discount', '享受折扣', $vipinfo['discount'] ?? 100)->min(0)->max(100)->col(8)->placeholder('输入折扣数100,代表原价,90代表9折');
|
|
|
- $field[] = Form::number('exp_num', '解锁需经验值达到', $vipinfo['exp_num'] ?? 0)->min(0)->precision(0)->col(8);
|
|
|
- $field[] = Form::frameImage('icon', '图标', Url::buildUrl(config('admin.admin_prefix') . '/widget.images/index', array('fodder' => 'icon')), $vipinfo['icon'] ?? '')->icon('ios-add')->width('960px')->height('505px')->modal(['footer-hide' => true])->appendValidate(Iview::validateStr()->required()->message('请选择图标'));
|
|
|
- $field[] = Form::frameImage('image', '会员背景', Url::buildUrl(config('admin.admin_prefix') . '/widget.images/index', array('fodder' => 'image')), $vipinfo['image'] ?? '')->icon('ios-add')->width('960px')->height('505px')->modal(['footer-hide' => true])->appendValidate(Iview::validateStr()->required()->message('请选择背景'));
|
|
|
+// $field[] = Form::number('exp_num', '解锁需经验值达到', $vipinfo['exp_num'] ?? 0)->min(0)->precision(0)->col(8);
|
|
|
+ $field[] = Form::number('achievement', '解锁需业绩达到', $vipinfo['achievement'] ?? 0)->min(0)->step(0.01)->col(8);
|
|
|
+
|
|
|
+ $pre_level = false;
|
|
|
+ if (isset($vipinfo)) {
|
|
|
+ $pre_level = app()->make(SystemUserLevelServices::class)->getPreLevel($vipinfo['grade']);
|
|
|
+ }
|
|
|
+
|
|
|
+ $field[] = Form::number('sub_grade_num', $pre_level ? '解锁需存在' . $pre_level['name'] . '以上大区' : '解锁需存在低级别以上大区', $vipinfo['sub_grade_num'] ?? 0)->min(0)->precision(0)->col(8);
|
|
|
+ $field[] = Form::frameImage('icon', '图标', Url::buildUrl(config('admin.admin_prefix') . '/widget.images/index', array('fodder' => 'icon')), $vipinfo['icon'] ?? '')->icon('ios-add')->width('960px')->height('505px')->modal(['footer-hide' => true])->appendValidate(Iview::validateStr()->required()->message('请选择图标'));
|
|
|
+ $field[] = Form::frameImage('image', '会员背景', Url::buildUrl(config('admin.admin_prefix') . '/widget.images/index', array('fodder' => 'image')), $vipinfo['image'] ?? '')->icon('ios-add')->width('960px')->height('505px')->modal(['footer-hide' => true])->appendValidate(Iview::validateStr()->required()->message('请选择背景'));
|
|
|
$field[] = Form::radio('is_show', '是否显示', $vipinfo['is_show'] ?? 0)->options([['label' => '显示', 'value' => 1], ['label' => '隐藏', 'value' => 0]])->col(24);
|
|
|
$field[] = Form::textarea('explain', '等级说明', $vipinfo['explain'] ?? '');
|
|
|
return create_form($msg, $field, Url::buildUrl('/user/user_level'), 'POST');
|
|
@@ -256,48 +264,41 @@ class UserLevelServices extends BaseServices
|
|
|
/** @var SystemUserLevelServices $systemUserLevel */
|
|
|
$systemUserLevel = app()->make(SystemUserLevelServices::class);
|
|
|
$levelOne = $systemUserLevel->getWhereLevel(['is_del' => 0, 'grade' => $data['grade']]);
|
|
|
- $levelTwo = $systemUserLevel->getWhereLevel(['is_del' => 0, 'exp_num' => $data['exp_num']]);
|
|
|
$levelThree = $systemUserLevel->getWhereLevel(['is_del' => 0, 'name' => $data['name']]);
|
|
|
$levelPre = $systemUserLevel->getPreLevel($data['grade']);
|
|
|
$levelNext = $systemUserLevel->getNextLevel($data['grade']);
|
|
|
- if ($levelPre && $data['exp_num'] <= $levelPre['exp_num']) {
|
|
|
- throw new AdminException('会员经验必须大于上一等级设置的经验');
|
|
|
+ if ($levelPre && $data['achievement'] < $levelPre['achievement']) {
|
|
|
+ throw new AdminException('会员业绩必须大于等于上一等级设置的业绩');
|
|
|
}
|
|
|
- if ($levelNext && $data['exp_num'] >= $levelNext['exp_num']) {
|
|
|
- throw new AdminException('会员经验必须小于下一等级设置的经验');
|
|
|
+ if ($levelNext && $data['achievement'] > $levelNext['achievement']) {
|
|
|
+ throw new AdminException('会员业绩必须小于等于下一等级设置的业绩');
|
|
|
}
|
|
|
//修改
|
|
|
if ($id) {
|
|
|
if (($levelOne && $levelOne['id'] != $id) || ($levelThree && $levelThree['id'] != $id)) {
|
|
|
throw new AdminException('已检测到您设置过的会员等级,此等级不可重复');
|
|
|
}
|
|
|
- if ($levelTwo && $levelTwo['id'] != $id) {
|
|
|
- throw new AdminException('已检测到您设置过该会员经验值,经验值不可重复');
|
|
|
- }
|
|
|
if (!$systemUserLevel->update($id, $data)) {
|
|
|
throw new AdminException('修改失败');
|
|
|
}
|
|
|
|
|
|
- $data['id'] = $id;
|
|
|
- $systemUserLevel->dao->cacheUpdate($data);
|
|
|
+ $data['id'] = $id;
|
|
|
+ $systemUserLevel->dao->cacheUpdate($data);
|
|
|
|
|
|
return '修改成功';
|
|
|
} else {
|
|
|
if ($levelOne || $levelThree) {
|
|
|
throw new AdminException('已检测到您设置过的会员等级,此等级不可重复');
|
|
|
}
|
|
|
- if ($levelTwo) {
|
|
|
- throw new AdminException('已检测到您设置过该会员经验值,经验值不可重复');
|
|
|
- }
|
|
|
//新增
|
|
|
$data['add_time'] = time();
|
|
|
- $res = $systemUserLevel->save($data);
|
|
|
+ $res = $systemUserLevel->save($data);
|
|
|
if (!$res) {
|
|
|
throw new AdminException('添加失败');
|
|
|
}
|
|
|
|
|
|
- $data['id'] = $res->id;
|
|
|
- $systemUserLevel->cacheUpdate($data);
|
|
|
+ $data['id'] = $res->id;
|
|
|
+ $systemUserLevel->cacheUpdate($data);
|
|
|
|
|
|
return '添加成功';
|
|
|
}
|
|
@@ -325,7 +326,7 @@ class UserLevelServices extends BaseServices
|
|
|
throw new AdminException('删除失败');
|
|
|
}
|
|
|
}
|
|
|
- $systemUserLevel->cacheDelById($id);
|
|
|
+ $systemUserLevel->cacheDelById($id);
|
|
|
return '删除成功';
|
|
|
}
|
|
|
|
|
@@ -342,7 +343,7 @@ class UserLevelServices extends BaseServices
|
|
|
if (!$systemUserLevel->getWhereLevel(['id' => $id]))
|
|
|
throw new AdminException('数据不存在');
|
|
|
if ($systemUserLevel->update($id, ['is_show' => $is_show])) {
|
|
|
- $systemUserLevel->cacheSaveValue($id, 'is_show', $is_show);
|
|
|
+ $systemUserLevel->cacheSaveValue($id, 'is_show', $is_show);
|
|
|
return $is_show == 1 ? '显示成功' : '隐藏成功';
|
|
|
} else {
|
|
|
throw new AdminException($is_show == 1 ? '显示失败' : '隐藏失败');
|
|
@@ -362,7 +363,7 @@ class UserLevelServices extends BaseServices
|
|
|
if (!$systemUserLevel->getWhereLevel(['id' => $id]))
|
|
|
throw new AdminException('数据不存在');
|
|
|
if ($systemUserLevel->update($id, [$data['field'] => $data['value']])) {
|
|
|
- $systemUserLevel->cacheSaveValue($id, $data['field'], $data['value']);
|
|
|
+ $systemUserLevel->cacheSaveValue($id, $data['field'], $data['value']);
|
|
|
return true;
|
|
|
} else {
|
|
|
throw new AdminException('保存失败');
|
|
@@ -386,10 +387,10 @@ class UserLevelServices extends BaseServices
|
|
|
if (!$user) {
|
|
|
throw new ValidateException('没有此用户,无法检测升级会员');
|
|
|
}
|
|
|
- //没有激活暂不升级
|
|
|
- if (!$user['level_status']) {
|
|
|
- return true;
|
|
|
- }
|
|
|
+ //没有激活暂不升级
|
|
|
+ if (!$user['level_status']) {
|
|
|
+ return true;
|
|
|
+ }
|
|
|
/** @var SystemUserLevelServices $systemUserLevel */
|
|
|
$systemUserLevel = app()->make(SystemUserLevelServices::class);
|
|
|
$userAllLevel = $systemUserLevel->getList([['is_del', '=', 0], ['is_show', '=', 1], ['exp_num', '<=', (float)$user['exp']]]);
|
|
@@ -517,19 +518,19 @@ class UserLevelServices extends BaseServices
|
|
|
$levelInfo['vip_icon'] = $levelInfo['icon'];
|
|
|
$levelInfo['vip_name'] = $levelInfo['name'];
|
|
|
}
|
|
|
- $data['level_info'] = $levelInfo;
|
|
|
- $i = 0;
|
|
|
- foreach ($levelList as &$level) {
|
|
|
- if ($level['grade'] < $levelInfo['grade']) {
|
|
|
- $level['next_exp_num'] = $levelList[$i + 1]['exp_num'] ?? $level['exp_num'];
|
|
|
- } else {
|
|
|
- $level['next_exp_num'] = $level['exp_num'];
|
|
|
- }
|
|
|
- $level['image'] = set_file_url($level['image']);
|
|
|
- $level['icon'] = set_file_url($level['icon']);
|
|
|
- $i++;
|
|
|
- }
|
|
|
- $data['level_list'] = $levelList;
|
|
|
+ $data['level_info'] = $levelInfo;
|
|
|
+ $i = 0;
|
|
|
+ foreach ($levelList as &$level) {
|
|
|
+ if ($level['grade'] < $levelInfo['grade']) {
|
|
|
+ $level['next_exp_num'] = $levelList[$i + 1]['exp_num'] ?? $level['exp_num'];
|
|
|
+ } else {
|
|
|
+ $level['next_exp_num'] = $level['exp_num'];
|
|
|
+ }
|
|
|
+ $level['image'] = set_file_url($level['image']);
|
|
|
+ $level['icon'] = set_file_url($level['icon']);
|
|
|
+ $i++;
|
|
|
+ }
|
|
|
+ $data['level_list'] = $levelList;
|
|
|
|
|
|
$data['level_info']['exp'] = $user['exp'] ?? 0;
|
|
|
/** @var UserBillServices $userBillservices */
|
|
@@ -602,24 +603,24 @@ class UserLevelServices extends BaseServices
|
|
|
throw new ValidateException('不需要重复激活');
|
|
|
}
|
|
|
$extend_info = $userServices->handelExtendInfo($data, true) ?: [];
|
|
|
- $update = ['level_status' => 1];
|
|
|
- if ($extend_info) {
|
|
|
- $default = $userServices->defaultExtendInfo;
|
|
|
- $params = array_column($default, 'param');
|
|
|
- $sex = $userServices->sex;
|
|
|
- $update['level_extend_info'] = $extend_info;
|
|
|
- foreach ($extend_info as $info) {
|
|
|
- if (isset($info['param']) && in_array($info['param'], $params) && isset($info['value'])) {
|
|
|
- if ($info['param'] == 'sex') {
|
|
|
- $update['sex'] = $sex[$info['value']] ?? 0;
|
|
|
- } elseif ($info['param'] == 'birthday') {
|
|
|
- $update['birthday'] = strtotime($info['value']);
|
|
|
- } else {
|
|
|
- $update[$info['param']] = $info['value'];
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
+ $update = ['level_status' => 1];
|
|
|
+ if ($extend_info) {
|
|
|
+ $default = $userServices->defaultExtendInfo;
|
|
|
+ $params = array_column($default, 'param');
|
|
|
+ $sex = $userServices->sex;
|
|
|
+ $update['level_extend_info'] = $extend_info;
|
|
|
+ foreach ($extend_info as $info) {
|
|
|
+ if (isset($info['param']) && in_array($info['param'], $params) && isset($info['value'])) {
|
|
|
+ if ($info['param'] == 'sex') {
|
|
|
+ $update['sex'] = $sex[$info['value']] ?? 0;
|
|
|
+ } elseif ($info['param'] == 'birthday') {
|
|
|
+ $update['birthday'] = strtotime($info['value']);
|
|
|
+ } else {
|
|
|
+ $update[$info['param']] = $info['value'];
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
$userServices->update($uid, $update);
|
|
|
$data = [];
|
|
|
//获取激活送好礼
|
|
@@ -639,12 +640,12 @@ class UserLevelServices extends BaseServices
|
|
|
$coupon = $couponServices->getList(['id' => $ids]);
|
|
|
$data['level_give_coupon'] = $coupon;
|
|
|
}
|
|
|
- if (!$data['level_integral_status']) {
|
|
|
- $data['level_give_integral'] = 0;
|
|
|
- }
|
|
|
- if (!$data['level_money_status']) {
|
|
|
- $data['level_give_money'] = 0;
|
|
|
- }
|
|
|
+ if (!$data['level_integral_status']) {
|
|
|
+ $data['level_give_integral'] = 0;
|
|
|
+ }
|
|
|
+ if (!$data['level_money_status']) {
|
|
|
+ $data['level_give_money'] = 0;
|
|
|
+ }
|
|
|
//激活会员卡事件
|
|
|
event('user.activate.level', [$uid]);
|
|
|
return $data;
|