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

791 lines
34 KiB
PHP
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<?php namespace Phpcmf\Controllers\Admin;
// 会员管理
class Home extends \Phpcmf\Table
{
public $group;
public function __construct()
{
parent::__construct();
// 不是超级管理员排除角色账号
if (!dr_in_array(1, $this->admin['roleid']) && \Phpcmf\Service::M('auth')->is_post_user()) {
$this->_admin_msg(0, dr_lang('投稿者无权限操作'));
}
// 支持附表存储
$this->is_data = 0;
// 模板前缀(避免混淆)
$this->tpl_prefix = 'member_';
$this->my_field = array(
'username' => array(
'ismain' => 1,
'name' => dr_lang('账号'),
'fieldname' => 'username',
'fieldtype' => 'Text',
'setting' => array(
'option' => array(
'width' => 200,
)
)
),
'email' => array(
'ismain' => 1,
'name' => dr_lang('邮箱'),
'fieldname' => 'email',
'fieldtype' => 'Text',
'setting' => array(
'option' => array(
'width' => 200,
)
)
),
'phone' => array(
'ismain' => 1,
'name' => dr_lang('手机'),
'fieldname' => 'phone',
'fieldtype' => 'Text',
'setting' => array(
'option' => array(
'width' => 200,
)
)
),
'name' => array(
'ismain' => 1,
'name' => MEMBER_CNAME,
'fieldname' => 'name',
'fieldtype' => 'Text',
'setting' => array(
'option' => array(
'width' => 200,
)
)
),
);
// 表单显示名称
$this->name = dr_lang('用户');
// 初始化数据表
if ($this->member_cache['field']) {
foreach ($this->member_cache['field'] as $i => $t) {
$this->member_cache['field'][$i]['setting']['validate']['required'] = 0;
$this->my_field[$t['fieldname']] = $t;
}
}
if (!isset($this->member_cache['list_field']) || !$this->member_cache['list_field']) {
$this->member_cache = \Phpcmf\Service::M('member', 'member')->cache();
}
$list_field = [
'avatar' => array(
'use' => '1',
'name' => '头像',
'width' => '70',
'func' => 'dr_member_list_avatar',
'center' => '1',
),
];
$this->_init([
'table' => 'member',
'stable' => 'member_data',
'field' => $this->member_cache['field'],
'join_list' => ['member_data', 'member.id=member_data.id', 'left'],
'order_by' => 'member.id desc',
'list_field' => dr_array22array($list_field, $this->member_cache['list_field']),
]);
$this->group = $this->member_cache['group'];
\Phpcmf\Service::V()->assign([
'menu' => \Phpcmf\Service::M('auth')->_admin_menu(
[
'用户管理' => [APP_DIR.'/'.\Phpcmf\Service::L('Router')->class.'/index', 'fa fa-user'],
'添加用户' => ['add:'.APP_DIR.'/'.\Phpcmf\Service::L('Router')->class.'/add', 'fa fa-plus'],
'批量添加' => ['add:'.APP_DIR.'/'.\Phpcmf\Service::L('Router')->class.'/all_add', 'fa fa-plus-square', '70%'],
'修改' => ['hide:'.APP_DIR.'/'.\Phpcmf\Service::L('Router')->class.'/edit', 'fa fa-edit'],
]
),
'group' => $this->group,
'field' => $this->my_field,
'member_list_field' => dr_array22array(\Phpcmf\Service::L('Field')->member_list_field(), $this->member_cache['field']),
'is_show_search_bar' => $this->member_cache['config']['is_show_search_bar'],
]);
}
// 用户管理
public function index() {
$p = $where = [];
$name = dr_safe_replace(\Phpcmf\Service::L('input')->request('field'));
$value = dr_safe_replace(\Phpcmf\Service::L('input')->request('keyword'));
if ($name && $value && isset($this->my_field[$name])) {
if (isset($this->member_cache['field'][$name])) {
$where[] = str_replace('`'.\Phpcmf\Service::M()->dbprefix('member_data').'`', 'member_data', \Phpcmf\Service::M()->_where(
\Phpcmf\Service::M()->dbprefix('member_data'),
$name,
$value,
$this->member_cache['field'][$name],
1
));
unset($this->init['field'][$name]);
} else {
$where[] = '`'.$name.'` LIKE "%'.$value.'%"';
}
$p[$name] = $value;
}
$groupid = \Phpcmf\Service::L('input')->request('groupid');
if ($groupid && is_array($groupid)) {
$in = [];
foreach ($groupid as $gid) {
$gid = intval($gid);
if ($gid) {
$in[] = $gid;
}
}
if ($in) {
$where[] = \Phpcmf\Service::M()->dbprefix('member').'.id IN (select uid from `'.\Phpcmf\Service::M()->dbprefix('member_group_index').'` where gid in ('.implode(',', $in).'))';
$p['groupid'] = $in;
}
}
$sname = [
'is_lock' => '账号锁定',
'is_mobile' => '手机认证',
'is_email' => '邮箱认证',
'is_complete' => '完善资料',
];
$status = \Phpcmf\Service::L('input')->request('status');
if ($status) {
foreach ($status as $v) {
if (isset($sname[$v])) {
$where[] = 'member_data.'.$v.' = 1';
}
}
$p['status'] = $status;
}
// 不是超级管理员排除角色账号
if (!dr_in_array(1, $this->admin['roleid'])) {
$where[] = 'member.id NOT IN (select uid from `'.\Phpcmf\Service::M()->dbprefix('admin_role_index').'` where uid<> '.$this->uid.')';
}
$rs = \Phpcmf\Hooks::trigger_callback('admin_member_list_where');
if ($rs && isset($rs['code']) && $rs['code']) {
$where[] = $rs['data']['where'];
}
$where && \Phpcmf\Service::M()->set_where_list(implode(' AND ', $where));
$this->field = dr_array22array(\Phpcmf\Service::L('Field')->member_list_field(), $this->my_field);
$this->is_ajax_list = true;
list($tpl, $data) = $this->_List($p);
$this->mytable = [
'foot_tpl' => '',
'link_tpl' => '',
'link_var' => 'html = html.replace(/\{id\}/g, row.id);
html = html.replace(/\{uid\}/g, row.id);',
];
$uriprefix = APP_DIR.'/'.\Phpcmf\Service::L('Router')->class;
if ($this->_is_admin_auth('del') || $this->_is_admin_auth('edit')) {
$this->mytable['foot_tpl'].= '<label class="table_select_all"><input onclick="dr_table_select_all(this)" type="checkbox"><span></span></label>';
}
if ($this->_is_admin_auth('del')) {
$this->mytable['foot_tpl'].= '<label><button type="button" onclick="dr_ajax_option_user(\''.dr_url('member/home/del').'\', 1)" class="btn red btn-sm"> <i class="fa fa-trash"></i> '.dr_lang('删除').'</button></label>';
}
if ($this->_is_admin_auth('edit')) {
$this->mytable['link_tpl'].= '<label><a href="javascript:dr_iframe_show(\''.dr_lang('登录记录').'\', \''.dr_url($uriprefix.'/login_index').'&id={id}\', \'80%\')" class="btn btn-xs blue"> <i class="fa fa-calendar"></i> '.dr_lang('记录').'</a></label>';
$this->mytable['link_tpl'].= '<label><a href="'.dr_url($uriprefix.'/edit').'&id={id}" class="btn btn-xs red"> <i class="fa fa-edit"></i> '.dr_lang('修改').'</a></label>';
$this->mytable['link_tpl'].= '<label><a href="javascript:dr_iframe(\''.dr_lang('设置用户组').'\', \''.dr_url($uriprefix.'/group_edit').'&id={id}\', \'60%\')" class="btn btn-xs dark"> <i class="fa fa-users"></i> '.dr_lang('权限').'</a></label>';
$this->mytable['link_tpl'].= '<label><a href="'.dr_url('api/alogin').'&id={id}" class="btn btn-xs red" target="_blank"> <i class="fa fa-user"></i> '.dr_lang('登录').'</a></label>';
$this->mytable['foot_tpl'].= '
<label>
<select name="groupid" class="form-control">
<option value=""> -- </option>';
foreach ($this->group as $t) {
$this->mytable['foot_tpl'].= '<option value="'.$t['id'].'" '.($data['param']['groupid'] == $t['id'] ? ' selected' : '').'>'.dr_lang($t['name']).'</option> ';
}
$this->mytable['foot_tpl'].= '
</select>
</label>
<label><button type="button" onclick="dr_ajax_option(\''.dr_url('member/home/group_all_edit').'\', \''.dr_lang('你确定要这样操作吗?').'\', 1)" class="btn green btn-sm"> <i class="fa fa-edit"></i> '.dr_lang('更改').'</button></label>
';
$clink = $this->_app_clink('member');
if ($clink) {
foreach ($clink as $a) {
if ($a['model'] && $a['check']
&& method_exists($a['model'], $a['check']) && call_user_func(array($a['model'], $a['check']), APP_DIR, []) == 0) {
continue;
}
$this->mytable['link_tpl'].= '<label><a class="btn '.$a['color'].' btn-xs" href="'.$a['url'].'"><i class="'.$a['icon'].'"></i> '.dr_lang($a['name']);
if ($a['field'] && \Phpcmf\Service::M()->is_field_exists($this->init['table'], $a['field'])) {
$this->mytable['link_tpl'].= '{'.$a['field'].'}';
$this->mytable['link_var'].= 'html = html.replace(/\{'.$a['field'].'\}/g, row.'.$a['field'].');';
}
$this->mytable['link_tpl'].= '</a></label>';
}
}
$cbottom = $this->_app_cbottom('member');
if ($cbottom) {
$this->mytable['foot_tpl'].= '<label>
<div class="btn-group dropup">
<a class="btn blue btn-sm dropdown-toggle" data-toggle="dropdown" data-hover="dropdown" data-close-others="true" aria-expanded="false" href="javascript:;"> '.dr_lang('批量').'
<i class="fa fa-angle-up"></i>
</a>
<ul class="dropdown-menu">';
foreach ($cbottom as $a) {
$this->mytable['foot_tpl'].= '<li>
<a href="'.urldecode($a['url']).'"> <i class="'.$a['icon'].'"></i> '.dr_lang($a['name']).' </a>
</li>';
}
$this->mytable['foot_tpl'].= '
</ul>
</div>
</label>';
}
}
\Phpcmf\Service::V()->assign([
'mytable' => $this->mytable,
'status' => $sname,
]);
\Phpcmf\Service::V()->display($tpl);
}
// 修改账号
public function username_edit() {
$uid = intval(\Phpcmf\Service::L('input')->get('id'));
$member = dr_member_info($uid);
if (!$member) {
$this->_json(0, dr_lang('该用户不存在'));
}
if (!\Phpcmf\Service::M('auth')->cleck_edit_member($uid)) {
$this->_admin_msg(0, dr_lang('无权限操作其他管理员账号'));
}
if (IS_POST) {
$name = trim(dr_safe_filename(\Phpcmf\Service::L('input')->post('name')));
if (!$name) {
$this->_json(0, dr_lang('新账号不能为空'));
} elseif ($member['username'] == $name) {
$this->_json(0, dr_lang('新账号不能和原始账号相同'));
} elseif (\Phpcmf\Service::M()->table('member')->where('username', $name)->counts()) {
$this->_json(0, dr_lang('新账号%s已经注册', $name), ['field' => 'name']);
}
$rt = \Phpcmf\Service::L('form')->check_username($name);
if (!$rt['code']) {
$this->_json(0, $rt['msg'], ['field' => 'name']);
}
\Phpcmf\Service::M('member')->edit_username($uid, $name);
$this->_json(1, dr_lang('操作成功'));
}
\Phpcmf\Service::V()->assign([
'form' => dr_form_hidden(),
'member' => $member,
]);
\Phpcmf\Service::V()->display('member_edit_username.html');exit;
}
// 后台添加
public function add() {
if (IS_AJAX_POST) {
$post = \Phpcmf\Service::L('input')->post('data');
if (empty($post['password'])) {
$this->_json(0, dr_lang('密码必须填写'), ['field' => 'password']);
} else {
$rt = \Phpcmf\Service::L('Form')->check_password((string)$post['password'], (string)$post['username']);
if (!$rt['code']) {
$this->_json(0, $rt['msg'], ['field' => 'password']);
}
$rt = \Phpcmf\Service::M('member')->register((int)$post['groupid'], [
'username' => (string)$post['username'],
'phone' => (string)$post['phone'],
'email' => (string)$post['email'],
'name' => (string)$post['name'],
'password' => dr_safe_password($post['password']),
]);
if (!$rt['code']) {
$this->_json(0, $rt['msg'], ['field' => $rt['data']['field']]);
}
}
$this->_json(1, dr_lang('操作成功'));
}
\Phpcmf\Service::V()->assign([
'form' => dr_form_hidden(),
]);
\Phpcmf\Service::V()->display('member_add.html');exit;
}
// 后台添加
public function all_add() {
if (IS_AJAX_POST) {
$post = \Phpcmf\Service::L('input')->post('data');
if (!$post['all']) {
$this->_json(0, dr_lang('用户集未填写'), ['field' => 'all']);
}
$all = explode(PHP_EOL, $post['all']);
$error = $ok = 0;
foreach ($all as $t) {
list($username, $password, $email, $phone, $name) = explode('|', $t);
$name = trim($name == 'null' ? '' : (string)$name);
$phone = trim($phone == 'null' ? '' : (string)$phone);
$email = trim($email == 'null' ? '' : (string)$email);
$username = trim($username == 'null' ? '' : (string)$username);
$password = trim($password == 'null' ? '' : (string)$password);
$rt = \Phpcmf\Service::L('Form')->check_password($password, $username);
if (!$rt['code']) {
$this->_json(0, $rt['msg'], ['field' => 'password']);
}
$rt = \Phpcmf\Service::M('member')->register((int)$post['groupid'], [
'username' => (string)$username,
'phone' => (string)$phone,
'email' => (string)$email,
'name' => (string)$name,
'password' => dr_safe_password($password),
]);
if ($rt['code']) {
$ok ++;
} else {
$error ++;
log_message('error', dr_lang('后台批量注册会员失败(%s):%s', trim($t), $rt['msg']));
}
}
$this->_json(1, dr_lang('批量注册%s个用户,失败%s个(查看系统错误日志)', $ok, $error));
}
\Phpcmf\Service::V()->assign([
'form' => dr_form_hidden(),
]);
\Phpcmf\Service::V()->display('member_add_all.html');exit;
}
// 后台修改
public function edit() {
$uid = intval(\Phpcmf\Service::L('input')->get('id'));
if (!$uid) {
$this->_admin_msg(0, dr_lang('用户uid不存在'));
}
$page = intval(\Phpcmf\Service::L('input')->get('page'));
if (!\Phpcmf\Service::M('auth')->cleck_edit_member($uid)) {
$this->_admin_msg(0, dr_lang('无权限操作其他管理员账号'));
}
$field = [];
if (dr_in_array(1, $this->admin['roleid'])) {
// 超级管理员,显示全部字段并提示
if ($this->member_cache['field']) {
$member = \Phpcmf\Service::M('member')->get_member($uid);
$fieldid = [];
if ($member['groupid']) {
foreach ($member['groupid'] as $gid) {
if ($this->member_cache['group'][$gid]['field']) {
$fieldid = dr_array2array($fieldid, $this->member_cache['group'][$gid]['field']);
}
}
if ($fieldid) {
foreach ($this->member_cache['field'] as $fname => $t) {
if (!in_array($fname, $fieldid)) {
$field[$fname] = $t;
}
}
}
}
}
} else {
// 子管理员排查不可用的字段
$myfield = [];
$groupid = \Phpcmf\Service::M()->table('member_group_index')->where('uid', $uid)->getAll();
if ($groupid && $this->member_cache['field']) {
$fieldid = [];
foreach ($groupid as $t) {
if ($this->member_cache['group'][$t['gid']]['field']) {
$fieldid = dr_array2array($fieldid, $this->member_cache['group'][$t['gid']]['field']);
}
}
if ($fieldid) {
foreach ($this->member_cache['field'] as $fname => $t) {
if (in_array($fname, $fieldid)) {
$myfield[$fname] = $t;
}
}
}
}
$this->_init([
'table' => 'member',
'field' => $field,
]);
}
$this->_Post($uid);
\Phpcmf\Service::V()->assign([
'uid' => $uid,
'page' => $page,
'form' => dr_form_hidden(['page' => $page]),
'field' => $field,
'oauth' => \Phpcmf\Service::M()->table('member_oauth')->where('uid', $uid)->getAll(),
'mygroup' => \Phpcmf\Service::M()->table('member_group_index')->where('uid', $uid)->getAll(),
'regfield' => [
'regip' => array(
'ismain' => 1,
'name' => dr_lang('注册地区'),
'fieldtype' => 'Textbtn',
'fieldname' => 'regip',
'setting' => array(
'option' => array(
'width' => 320,
'name' => '查看',
'icon' => 'fa fa-arrow-right',
'func' => 'dr_show_ip',
'value' => \Phpcmf\Service::L('input')->ip_info()
)
)
),
'regtime' => array(
'ismain' => 1,
'name' => dr_lang('注册时间'),
'fieldtype' => 'Date',
'fieldname' => 'regtime',
'setting' => array(
'option' => array(
'width' => 280,
'value' => 'SYS_TIME',
'is_left' => 0,
)
)
),
],
]);
\Phpcmf\Service::V()->display('member_edit.html');
}
// 后台删除
public function del() {
$ids = \Phpcmf\Service::L('input')->get_post_ids();
if (dr_in_array(1, $ids)) {
$this->_json(0, dr_lang('创始人账号不能删除'));
} elseif (dr_in_array($this->uid, $ids)) {
$this->_json(0, dr_lang('不能删除自己'));
}
// 删除时同步删除很多内容
$this->_Del(
$ids,
function ($rows) {
foreach ($rows as $t) {
if (!isset($this->admin['role'][1])
&& \Phpcmf\Service::M()->table('admin_role_index')->where('uid', intval($t['id']))->where('roleid', 1)->counts()) {
return dr_return_data(0, dr_lang('账号[%s]不能删除', $t['username']));
}
}
return dr_return_data(1, 'ok');
},
function ($rows) {
$ids = [];
foreach ($rows as $t) {
$id = intval($t['id']);
if (!\Phpcmf\Service::M('auth')->cleck_edit_member($id)) {
continue;
}
$ids[] = $id;
\Phpcmf\Service::M('member')->member_delete($id, (int)\Phpcmf\Service::L('input')->get('sync'));
}
return dr_return_data(1, 'ok');
},
(int)\Phpcmf\Service::L('input')->get('sync') ? \Phpcmf\Service::M()->dbprefix('member') : 0
);
}
// 解绑
public function jb_del() {
$uid = (int)\Phpcmf\Service::L('input')->get('id');
if (!\Phpcmf\Service::M('auth')->cleck_edit_member($uid)) {
$this->_json(0, dr_lang('无权限操作其他管理员账号'));
}
$tid = dr_safe_filename(\Phpcmf\Service::L('input')->get('tid'));
\Phpcmf\Service::M()->table('member_oauth')->where('uid', $uid)->where('oauth', $tid)->delete();
if ($tid == 'wechat' && dr_is_app('weixin')) {
// 判断微信
\Phpcmf\Service::C()->init_file('weixin');
\Phpcmf\Service::M()->table(weixin_wxtable('user'))->where('uid', $uid)->delete();
}
\Phpcmf\Service::M('member')->clear_cache($uid);
$this->_json(1, dr_lang('操作成功'), [
'url' => dr_url(APP_DIR.'/home/edit', ['id'=> $uid, 'page'=>4])
]);
}
// 登录记录
public function login_index() {
$uid = (int)\Phpcmf\Service::L('input')->get('id');
if (!\Phpcmf\Service::M('auth')->cleck_edit_member($uid)) {
$this->_admin_msg(0, dr_lang('无权限操作其他管理员账号'));
}
\Phpcmf\Service::V()->assign([
'list' => \Phpcmf\Service::M()->table('member_login')->where('uid', $uid)->order_by('logintime desc')->getAll(),
]);
\Phpcmf\Service::V()->display('member_login.html');exit;
}
// 删除用户组
public function group_del() {
$gid = (int)\Phpcmf\Service::L('input')->get('gid');
$uid = (int)\Phpcmf\Service::L('input')->get('uid');
if (!\Phpcmf\Service::M('auth')->cleck_edit_member($uid)) {
$this->_json(0, dr_lang('无权限操作其他管理员账号'));
}
\Phpcmf\Service::M('member')->delete_group($uid, $gid, 1);
$this->_json(1, dr_lang('操作成功'));
}
// 设置用户组
public function group_edit() {
$uid = (int)\Phpcmf\Service::L('input')->get('id');
if (!\Phpcmf\Service::M('auth')->cleck_edit_member($uid)) {
$this->_admin_msg(0, dr_lang('无权限操作其他管理员账号'));
}
$groups = \Phpcmf\Service::M('member')->update_group(
\Phpcmf\Service::M()->table('member')->get($uid),
\Phpcmf\Service::M()->table('member_group_index')->where('uid', $uid)->getAll()
);
if (IS_AJAX_POST) {
$post = \Phpcmf\Service::L('input')->post('data');
if (!$post) {
$this->_json(0, dr_lang('用户组不存在'));
} elseif (!$this->member_cache['config']['groups'] && dr_count($groups) > 1) {
$this->_json(0, dr_lang('不能同时拥有多个用户组'));
}
foreach ($post as $gid => $t) {
// 手动更新等级
if ($t['lid'] && $t['lid'] != $groups[$gid]['lid']) {
\Phpcmf\Service::M('member')->update_level($uid, $gid, $t['lid']);
}
$stime = (int)strtotime($t['stime']);
$etime = (int)strtotime($t['etime']);
// 设置时间
\Phpcmf\Service::M()->db->table('member_group_index')->where('uid', $uid)->where('gid', $gid)->update([
'stime' => $t['stime'] ? $stime : SYS_TIME,
'etime' => $t['etime'] ? ($stime > $etime ? 0 : $etime) : 0,
]);
}
$this->_json(1, dr_lang('操作成功'));
}
\Phpcmf\Service::V()->assign([
'id' => $uid,
'form' => dr_form_hidden(),
'mygroup' => $groups,
]);
\Phpcmf\Service::V()->display('member_group.html');exit;
}
// 批量设置用户组
public function group_all_edit() {
$ids = \Phpcmf\Service::L('input')->get_post_ids();
if (!$ids) {
$this->_json(0, dr_lang('所选用户不存在'));
}
$gid = \Phpcmf\Service::L('input')->post('groupid');
if (!$gid) {
$this->_json(0, dr_lang('所选用户组不存在'));
}
// 验证用户
foreach ($ids as $i) {
$uid = intval($i);
if (!$uid) {
$this->_json(0, dr_lang('所选用户不存在'));
} elseif (!\Phpcmf\Service::M('auth')->cleck_edit_member($uid)) {
$this->_json(0, dr_lang('无权限操作用户#%s', $uid));
} elseif (!$this->member_cache['config']['groups']
&& dr_count(\Phpcmf\Service::M()->table('member_group_index')->where('uid', $uid)->getAll()) > 1) {
$this->_json(0, dr_lang('用户#%s不能同时拥有多个用户组', $uid));
} elseif (\Phpcmf\Service::M()->counts('member_group_index', 'uid='.$uid.' and gid='.$gid)) {
$this->_json(0, dr_lang('用户#%s已经拥有了此用户组', $uid));
}
}
foreach ($ids as $i) {
\Phpcmf\Service::M('member')->insert_group(intval($i), $gid);
}
$this->_json(1, dr_lang('共执行%s个用户', dr_count($ids)));
}
/**
* 后台授权登录
*/
public function alogin_index() {
$this->_msg(1, dr_lang('正在授权登录此用户...'), dr_url('api/alogin', ['id' => intval(\Phpcmf\Service::L('input')->get('id'))]), 0);
}
// 重写存储值
protected function _Save_Value($id, $name, $value, $after = null, $before = null) {
\Phpcmf\Service::M('member')->clear_cache($id);
if ($name == 'username') {
if (!$value) {
$this->_json(0, dr_lang('新账号不能为空'));
} elseif ($this->member['username'] == $value) {
$this->_json(0, dr_lang('新账号不能和原始账号相同'));
} elseif (\Phpcmf\Service::M()->db->table('member')->where('username', $value)->countAllResults()) {
$this->_json(0, dr_lang('新账号%s已经注册', $value), ['field' => 'name']);
}
$rt = \Phpcmf\Service::L('form')->check_username($value);
if (!$rt['code']) {
$this->_json(0, $rt['code'], ['field' => 'name']);
}
\Phpcmf\Service::M('member')->edit_username($id, $value);
$this->_json(1, dr_lang('操作成功'));
} elseif ($name == 'email' ) {
if (!\Phpcmf\Service::L('Form')->check_email($value)) {
$this->_json(0, dr_lang('邮箱格式不正确'), ['field' => 'email']);
} elseif (\Phpcmf\Service::M()->db->table('member')->where('id<>'. $id)->where('email', $value)->countAllResults()) {
$this->_json(0, dr_lang('邮箱%s已经注册', $value), ['field' => 'email']);
}
\Phpcmf\Service::M()->db->table('member')->where('id', $id)->update(['email' => $value]);
$this->_json(1, dr_lang('操作成功'));
} elseif ($name == 'phone' ) {
if (!\Phpcmf\Service::L('Form')->check_phone($value)) {
$this->_json(0, dr_lang('手机号码格式不正确'), ['field' => 'phone']);
} elseif (\Phpcmf\Service::M()->db->table('member')->where('id<>'. $id)->where('phone', $value)->countAllResults()) {
$this->_json(0, dr_lang('手机号码%s已经注册', $value), ['field' => 'phone']);
}
\Phpcmf\Service::M()->db->table('member')->where('id', $id)->update(['phone' => $value]);
$this->_json(1, dr_lang('操作成功'));
} elseif ($name == 'money') {
$this->_json(0, dr_lang('金额不能变更'));
} elseif ($name == 'score') {
$this->_json(0, dr_lang('积分不能变更'));
}
parent::_Save_Value($id, $name, $value, $after, $before);
}
/**
* 获取内容
* $id 内容id,新增为0
* */
protected function _Data($id = 0) {
$data = parent::_Data($id);
$data2 = \Phpcmf\Service::M()->db->table('member_data')->where('id', $id)->get()->getRowArray();
if ($data2) {
$data = $data + $data2;
$data['is_mobile2'] = $data['is_mobile'];
unset($data['is_mobile']);
}
return $data;
}
/**
* 保存内容
* $id 内容id,新增为0
* $data 提交内容数组,留空为自动获取
* $func 格式化提交的数据
* */
protected function _Save($id = 0, $data = [], $old = [], $func = null, $func2 = null) {
return parent::_Save($id, $data, $old,
function ($id, $data, $old){
// 保存之前的判断
$member = \Phpcmf\Service::L('input')->post('member');
if ($member['email'] && !\Phpcmf\Service::L('Form')->check_email($member['email'])) {
$this->_json(0, dr_lang('邮箱格式不正确'), ['field' => 'email']);
} elseif ($member['phone'] && !\Phpcmf\Service::L('Form')->check_phone($member['phone'])) {
$this->_json(0, dr_lang('手机号码格式不正确'), ['field' => 'phone']);
} elseif ($member['email'] && \Phpcmf\Service::M()->db->table('member')->where('id<>'. $id)->where('email', $member['email'])->countAllResults()) {
return dr_return_data(0, dr_lang('邮箱%s已经注册', $member['email']), ['field' => 'email']);
} elseif ($member['phone'] && \Phpcmf\Service::M()->db->table('member')->where('id<>'. $id)->where('phone', $member['phone'])->countAllResults()) {
return dr_return_data(0, dr_lang('手机号码%s已经注册', $member['phone']), ['field' => 'phone']);
} elseif ($this->member_cache['config']['unique_name']
&& $member['name'] && \Phpcmf\Service::M()->db->table('member')->where('id<>'. $id)->where('name', $member['name'])->countAllResults()) {
return dr_return_data(0, dr_lang('姓名%s已经注册', $member['name']), ['field' => 'name']);
}
$password = \Phpcmf\Service::L('input')->post('password');
if ($password) {
$rt = \Phpcmf\Service::L('Form')->check_password($password, $old['username']);
if (!$rt['code']) {
return dr_return_data(0, $rt['msg'], ['field' => 'password']);
}
}
// 保存附表内容
$post = \Phpcmf\Service::L('input')->post('data');
$status = \Phpcmf\Service::L('input')->post('status');
$member['regip'] = $post['regip'];
$member['regtime'] = strtotime($post['regtime']);
$member_data = $data[1] ? $data[1] : [];
$member_data['is_lock'] = isset($status['is_lock']) ? (int)$status['is_lock'] : 0;
$member_data['is_mobile'] = isset($status['is_mobile']) ? (int)$status['is_mobile'] : 0;
$member_data['is_email'] = isset($status['is_email']) ? (int)$status['is_email'] : 0;
$member_data['is_verify'] = isset($status['is_verify']) ? (int)$status['is_verify'] : 0;
$member_data['is_complete'] = isset($status['is_complete']) ? (int)$status['is_complete'] : 0;
$member_data['is_avatar'] = isset($status['is_avatar']) ? (int)$status['is_avatar'] : 0;
\Phpcmf\Service::M()->table('member_data')->update($id, $member_data);
return dr_return_data(1, '', [1 => $member]);
},
function ($id, $data, $old) {
// 保存之后
// 修改密码
$password = \Phpcmf\Service::L('input')->post('password');
if ($password) {
$member = \Phpcmf\Service::M()->table('member')->get($id);
\Phpcmf\Service::M('member')->edit_password($member, $password);
}
\Phpcmf\Service::M('member')->clear_cache($id, $old ? $old['username'] : '');
// 审核状态
$status = \Phpcmf\Service::L('input')->post('status');
if ($status && $old && isset($old['is_verify']) && $old['is_verify'] == 0 && $status['is_verify'] == 1) {
\Phpcmf\Service::M('member')->verify_member($id);
}
\Phpcmf\Hooks::trigger('member_edit_after', $data, $old);
return $data;
}
);
}
}