Files
BESCMS/dayrui/App/Member/Controllers/Admin/Group.php
T

335 lines
12 KiB
PHP

<?php namespace Phpcmf\Controllers\Admin;
// 用户组
class Group extends \Phpcmf\Table
{
private $type;
public function __construct()
{
parent::__construct();
// 支持附表存储
$this->is_data = 0;
// 表单验证配置
$this->form_rule = [
'name' => [
'name' => '名称',
'rule' => [
'empty' => dr_lang('名称不能为空')
],
'filter' => [],
'length' => '200'
],
];
\Phpcmf\Service::V()->assign([
'menu' => \Phpcmf\Service::M('auth')->_admin_menu(
[
'用户组管理' => [APP_DIR.'/'.\Phpcmf\Service::L('Router')->class.'/index', 'fa fa-users'],
'添加组' => [APP_DIR.'/'.\Phpcmf\Service::L('Router')->class.'/add', 'fa fa-plus'],
'修改' => ['hide:'.APP_DIR.'/'.\Phpcmf\Service::L('Router')->class.'/edit', 'fa fa-edit'],
'等级制度' => ['hide:'.APP_DIR.'/'.\Phpcmf\Service::L('Router')->class.'/level_index', 'fa fa-list-ol'],
'添加等级' => ['hide:'.APP_DIR.'/'.\Phpcmf\Service::L('Router')->class.'/level_add', 'fa fa-plus'],
'修改等级' => ['hide:'.APP_DIR.'/'.\Phpcmf\Service::L('Router')->class.'/level_edit', 'fa fa-edit'],
'help' => [515]
]
),
]);
}
private function _init_group() {
$this->type = 1;
// 表单显示名称
$this->name = dr_lang('用户组');
$this->tpl_prefix = 'member_group_';
// 初始化数据表
$this->_init([
'table' => 'member_group',
'sys_field' => [],
'order_by' => 'displayorder asc,id asc',
'list_field' => [],
]);
}
private function _init_level($gid) {
if (!$gid) {
$this->_admin_msg(0, dr_lang('用户组id参数不能为空'));
}
$this->type = 0;
// 表单显示名称
$this->name = dr_lang('用户组等级');
$this->tpl_prefix = 'member_level_';
$this->my_field = [
'stars' => [
'ismain' => 1,
'name' => '图标',
'fieldtype' => 'File',
'fieldname' => 'stars',
'setting' => ['option' => ['ext' => 'jpg,gif,png,jpeg', 'size' => 10, 'input' => 1]]
]
];
// 初始化数据表
$this->_init([
'table' => 'member_level',
'field' => $this->my_field,
'sys_field' => [],
'order_by' => 'displayorder asc,id asc',
'list_field' => [],
'where_list' => 'gid='.$gid,
]);
$group = \Phpcmf\Service::M()->table('member_group')->get($gid);
$group['setting'] = dr_string2array($group['setting']);
if ($group['setting']['level']['auto']) {
// 自动模式,只有消费额和经验值
if ($group['setting']['level']['unit']) {
$dwz = dr_lang('消费额');
} else {
$dwz = SITE_EXPERIENCE;
}
} else {
// 手动模式,只有人民币和积分
if ($group['unit']) {
$dwz = SITE_SCORE;
} else {
$dwz = dr_lang('元');
}
}
\Phpcmf\Service::V()->assign([
'dwz' => $dwz,
'group' => $group
]);
}
// 管理
public function index() {
$this->_init_group();
list($tpl, $data) = $this->_List(null, -1);
if ($data['list']) {
foreach ($data['list'] as $i => $t) {
$data['list'][$i]['level'] = \Phpcmf\Service::M()->table('member_level')->where('gid', $t['id'])->order_by('value asc')->getAll();
}
\Phpcmf\Service::V()->assign('list', $data['list']);
}
\Phpcmf\Service::V()->display($tpl);
}
// 添加
public function add() {
$this->_init_group();
list($tpl) = $this->_Post(0);
\Phpcmf\Service::V()->display($tpl);
}
// 修改
public function edit() {
$this->_init_group();
$gid = intval(\Phpcmf\Service::L('input')->get('id'));
list($tpl) = $this->_Post($gid);
$page = intval(\Phpcmf\Service::L('input')->get('page'));
$is_level = \Phpcmf\Service::M()->table('member_level')->where('gid', $gid)->getRow();
\Phpcmf\Service::V()->assign([
'page' => $page,
'form' => dr_form_hidden(['page' => $page]),
'is_level' => $is_level,
]);
\Phpcmf\Service::V()->display($tpl);
}
// 排序
public function order_edit() {
$this->_init_group();
$this->_Display_Order(
intval(\Phpcmf\Service::L('input')->get('id')),
intval(\Phpcmf\Service::L('input')->get('value')),
function ($r) {
\Phpcmf\Service::M('cache')->sync_cache('member'); // 自动更新缓存
}
);
}
// 允许注册
public function register_edit() {
$this->_init_group();
$id = (int)\Phpcmf\Service::L('input')->get('id');
$data = $this->_Data($id);
if (!$data) {
$this->_json(0, dr_lang('数据#%s不存在', $id));
}
if (!$data['register']) {
$level = \Phpcmf\Service::M()->table('member_level')->where('gid', $id)->order_by('displayorder ASC,id ASC')->getRow();
if ($level && !$data['setting']['level']['auto'] && $level['value'] > 0) {
$this->_json(0, dr_lang('收费的用户组,不能开启允许注册开关'), $data);
} elseif ($data['price'] > 0) {
$this->_json(0, dr_lang('收费的用户组,不能开启允许注册开关'), $data);
}
}
$value = $data['register'] ? 0 : 1;
\Phpcmf\Service::M()->table('member_group')->save($id, 'register', $value);
\Phpcmf\Service::M('cache')->sync_cache('member'); // 自动更新缓存
$this->_json(1, dr_lang('操作成功'), ['value' => $value]);
}
// 允许申请
public function apply_edit() {
$this->_init_group();
$id = (int)\Phpcmf\Service::L('input')->get('id');
$data = $this->_Data($id);
if (!$data) {
$this->_json(0, dr_lang('数据#%s不存在', $id));
}
$value = $data['apply'] ? 0 : 1;
\Phpcmf\Service::M()->table('member_group')->save($id, 'apply', $value);
\Phpcmf\Service::M('cache')->sync_cache('member'); // 自动更新缓存
exit($this->_json(1, dr_lang('操作成功'), ['value' => $value]));
}
// 删除
public function del() {
$this->_init_group();
$ids = \Phpcmf\Service::L('input')->get_post_ids();
$this->_Del(
$ids,
null,
function ($rows) {
\Phpcmf\Service::M('cache')->sync_cache('member'); // 自动更新缓存
},
\Phpcmf\Service::M()->dbprefix($this->init['table'])
);
}
// 等级管理
public function level_index() {
$gid = intval($_GET['gid']);
$this->_init_level($gid);;
list($tpl) = $this->_List([], -1);
\Phpcmf\Service::V()->assign([
'gid' => $gid,
'menu' => \Phpcmf\Service::M('auth')->_admin_menu(
[
'用户组管理' => [APP_DIR.'/'.\Phpcmf\Service::L('Router')->class.'/index', 'fa fa-users'],
'修改' => ['hide:'.APP_DIR.'/'.\Phpcmf\Service::L('Router')->class.'/edit', 'fa fa-edit'],
'等级制度' => ['hide:'.APP_DIR.'/'.\Phpcmf\Service::L('Router')->class.'/level_index', 'fa fa-list-ol'],
'添加等级' => [APP_DIR.'/'.\Phpcmf\Service::L('Router')->class.'/level_add{gid='.intval($_GET['gid']).'}', 'fa fa-plus'],
]
),
]);
\Phpcmf\Service::V()->display($tpl);
}
// 添加等级
public function level_add() {
$gid = intval($_GET['gid']);
$this->_init_level($gid);
list($tpl) = $this->_Post(0);
\Phpcmf\Service::V()->assign([
'gid' => $gid,
'form' => dr_form_hidden(['gid' => $gid]),
'apply' => 1,
]);
\Phpcmf\Service::V()->display($tpl);
}
// 修改等级
public function level_edit() {
$gid = intval($_GET['gid']);
$this->_init_level($gid);
list($tpl, $data) = $this->_Post(intval(\Phpcmf\Service::L('input')->get('id')));
\Phpcmf\Service::V()->assign([
'form' => dr_form_hidden(['gid' => intval($data['gid'])]),
]);
\Phpcmf\Service::V()->display($tpl);
}
// 等级排序
public function level_order_edit() {
$this->_init_level(intval($_GET['gid']));
$this->_Display_Order(
intval(\Phpcmf\Service::L('input')->get('id')),
intval(\Phpcmf\Service::L('input')->get('value')),
function ($r) {
\Phpcmf\Service::M('cache')->sync_cache('member'); // 自动更新缓存
}
);
}
// 允许申请等级
public function apply_level_edit() {
$gid = intval($_GET['gid']);
$this->_init_level($gid);
$id = (int)\Phpcmf\Service::L('input')->get('id');
$data = $this->_Data($id);
if (!$data) {
$this->_json(0, dr_lang('数据#%s不存在', $id));
}
$value = $data['apply'] ? 0 : 1;
\Phpcmf\Service::M()->table('member_level')->save($id, 'apply', $value);
\Phpcmf\Service::M('cache')->sync_cache('member'); // 自动更新缓存
exit($this->_json(1, dr_lang('操作成功'), ['value' => $value]));
}
// 删除等级
public function level_del() {
$gid = intval($_GET['gid']);
$this->_init_level($gid);
$this->_Del(
\Phpcmf\Service::L('input')->get_post_ids(),
null,
function ($r) {
\Phpcmf\Service::M('cache')->sync_cache('member'); // 自动更新缓存
},
\Phpcmf\Service::M()->dbprefix($this->init['table'])
);
}
// 保存
protected function _Save($id = 0, $data = [], $old = [], $func = null, $after = null) {
return parent::_Save($id, $data, $old, function($id, $post, $old){
$data = \Phpcmf\Service::L('input')->post('data');
$setting = \Phpcmf\Service::L('input')->post('setting');
$data['setting'] = dr_array2string($setting);
if ($this->type) {
// 用户组
$level = $id ? \Phpcmf\Service::M()->table('member_level')->where('gid', $id)->order_by('displayorder ASC,id ASC')->getRow() : [];
if ($level && !$setting['level']['auto'] && $level['value'] > 0 && $data['register']) {
return dr_return_data(0, dr_lang('收费的用户组,不能开启允许注册开关'), $data);
} elseif ($data['price'] > 0 && $data['register']) {
return dr_return_data(0, dr_lang('收费的用户组,不能开启允许注册开关'), $data);
}
$data['price'] = floatval($data['price']);
$data['days'] = intval($data['days']);
} else {
// 等级
$data['gid'] = (int)\Phpcmf\Service::L('input')->post('gid');
if (!$data['gid']) {
return dr_return_data(0, dr_lang('所属用户组id不存在'), $data);
}
$data['stars'] = $post[1]['stars'];
$data['value'] = intval($data['value']);
}
!$id && $data['displayorder'] = 0;
return dr_return_data(1, null, $data);
}, function ($id, $data, $old) {
\Phpcmf\Service::M('cache')->sync_cache('member'); // 自动更新缓存
});
}
/**
* 获取内容
* $id 内容id,新增为0
* */
protected function _Data($id = 0) {
$data = parent::_Data($id);
$data['setting'] = dr_string2array($data['setting']);
return $data;
}
}