232 lines
8.6 KiB
PHP
232 lines
8.6 KiB
PHP
<?php namespace Phpcmf\Controllers\Admin;
|
||
|
||
|
||
// 用户组申请
|
||
class Apply extends \Phpcmf\Table
|
||
{
|
||
|
||
public function __construct()
|
||
{
|
||
parent::__construct();
|
||
// 支持附表存储
|
||
$this->is_data = 0;
|
||
// 模板前缀(避免混淆)
|
||
$this->my_field = array(
|
||
'username' => array(
|
||
'ismain' => 1,
|
||
'name' => dr_lang('账户'),
|
||
'fieldname' => 'username',
|
||
'fieldtype' => 'Text',
|
||
'setting' => array(
|
||
'option' => array(
|
||
'width' => 200,
|
||
),
|
||
)
|
||
),
|
||
'uid' => array(
|
||
'ismain' => 1,
|
||
'name' => dr_lang('uid'),
|
||
'fieldname' => 'uid',
|
||
'fieldtype' => 'Text',
|
||
'setting' => array(
|
||
'option' => array(
|
||
'width' => 200,
|
||
),
|
||
)
|
||
),
|
||
);
|
||
// 表单显示名称
|
||
$this->name = dr_lang('用户组审核');
|
||
// 初始化数据表
|
||
$this->_init([
|
||
'table' => 'member_group_verify',
|
||
'field' => $this->my_field,
|
||
'sys_field' => [],
|
||
'order_by' => 'inputtime desc',
|
||
'date_field' => 'inputtime',
|
||
'list_field' => [],
|
||
]);
|
||
\Phpcmf\Service::V()->assign([
|
||
'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'],
|
||
]
|
||
),
|
||
'field' => $this->my_field,
|
||
]);
|
||
}
|
||
|
||
// index
|
||
public function index() {
|
||
$this->_List();
|
||
\Phpcmf\Service::V()->display('member_apply_list.html');
|
||
}
|
||
|
||
// edit
|
||
public function edit() {
|
||
|
||
list($tpl, $data) = $this->_Post((int)\Phpcmf\Service::L('input')->get('id'), [], 1);
|
||
if (!$data) {
|
||
$this->_admin_msg(0, dr_lang('申请记录不存在'));
|
||
}
|
||
|
||
$my = dr_string2array($data['content']);
|
||
$user = dr_member_info($data['uid']);
|
||
$my = dr_array22array($user, $my);
|
||
|
||
// 获取该组可用字段
|
||
$field = [
|
||
'note' => array(
|
||
'ismain' => 1,
|
||
'name' => dr_lang('审核备注'),
|
||
'fieldname' => 'note',
|
||
'fieldtype' => 'Textarea',
|
||
'setting' => array(
|
||
'option' => array(
|
||
'width' => '80%',
|
||
),
|
||
)
|
||
),
|
||
];
|
||
if ($this->member_cache['field'] && $this->member_cache['group'][$data['gid']]['field']) {
|
||
foreach ($this->member_cache['field'] as $fname => $t) {
|
||
dr_in_array($fname, $this->member_cache['group'][$data['gid']]['field']) && $field[$fname] = $t;
|
||
}
|
||
}
|
||
|
||
$verify_msg = [];
|
||
if ($this->member_cache['config']['verify_msg']) {
|
||
$msg = @explode(PHP_EOL, $this->member_cache['config']['verify_msg']);
|
||
$msg && $verify_msg = $msg;
|
||
}
|
||
|
||
\Phpcmf\Service::V()->assign([
|
||
'myfield' => \Phpcmf\Service::L('field')->toform($this->uid, $field, $my),
|
||
'verify_msg' => $verify_msg,
|
||
]);
|
||
\Phpcmf\Service::V()->display('member_apply_post.html');
|
||
}
|
||
|
||
/**
|
||
* 保存内容
|
||
* $id 内容id,新增为0
|
||
* $data 提交内容数组,留空为自动获取
|
||
* $func 格式化提交的数据
|
||
* */
|
||
protected function _Save($id = 0, $data = [], $old = [], $func = null, $func2 = null) {
|
||
|
||
\Phpcmf\Service::M('member')->todo_admin_notice('member/apply/edit:id/'.$id);
|
||
|
||
$post = \Phpcmf\Service::L('input')->post('data');
|
||
$member = \Phpcmf\Service::M('member')->member_info($old['uid']);
|
||
$member['verify'] = dr_array22array($old, $post);
|
||
$member['verify_group'] = $this->member_cache['group'][$old['gid']]['name'];
|
||
$member['verify_status'] = $post['status'] ? dr_lang('成功') : dr_lang('被拒绝');
|
||
$member['verify_content'] = $post['note'];
|
||
|
||
if ($post['status']) {
|
||
unset($post['status']);
|
||
// 获取该组可用字段
|
||
$field = [];
|
||
if ($this->member_cache['field'] && $this->member_cache['group'][$old['gid']]['field']) {
|
||
foreach ($this->member_cache['field'] as $fname => $t) {
|
||
dr_in_array($fname, $this->member_cache['group'][$old['gid']]['field']) && $field[$fname] = $t;
|
||
}
|
||
}
|
||
|
||
// 表单操作类
|
||
\Phpcmf\Service::L('form')->id($id); // 初始化id
|
||
list($post, $return, $attach) = \Phpcmf\Service::L('form')->validation($post, [], $field, []);
|
||
if ($return) {
|
||
$this->_json(0, $return['error'], ['field' => $return['name']]);
|
||
}
|
||
unset($post[1]['uid']);
|
||
unset($post[1]['username']);
|
||
|
||
$post[1] && \Phpcmf\Service::M()->table('member_data')->update($old['uid'], $post[1]);
|
||
SYS_ATTACHMENT_DB && $attach && \Phpcmf\Service::M('Attachment')->handle($old['uid'], \Phpcmf\Service::M()->dbprefix('member').'-'.$id, $attach);
|
||
|
||
\Phpcmf\Service::M()->table('member_group_verify')->delete($id);
|
||
$post[1] && \Phpcmf\Service::M()->table('member_data')->update($old['uid'], $post[1]);
|
||
\Phpcmf\Service::M('member')->insert_group($old['uid'], $old['gid']);
|
||
$old['lid'] && \Phpcmf\Service::M('member')->update_level($old['uid'], $old['gid'], $old['lid']);
|
||
} else {
|
||
// 审核拒绝
|
||
unset($post['status']);
|
||
\Phpcmf\Service::M()->table('member_group_verify')->update($id, [
|
||
'content' => dr_array2string($post),
|
||
'status' => 1, // 拒绝
|
||
]);
|
||
// 不退回金额
|
||
}
|
||
|
||
// 通知 钩子
|
||
\Phpcmf\Service::L('Notice')->send_notice('member_verify_group', $member);
|
||
\Phpcmf\Hooks::trigger('member_verify_group_after', $member);
|
||
|
||
$this->_json(1, dr_lang('操作成功'));
|
||
}
|
||
|
||
// 删除
|
||
public function del() {
|
||
$this->_Del(\Phpcmf\Service::L('input')->get_post_ids(), null, function($rows) {
|
||
foreach ($rows as $t) {
|
||
// 删除审核提醒
|
||
\Phpcmf\Service::M('member')->delete_admin_notice('member/apply/edit:id/'.$t['id']);
|
||
// 退回金额
|
||
$this->_call_score($t);
|
||
}
|
||
return dr_return_data(1, 'ok');
|
||
});
|
||
}
|
||
|
||
// 退回金额
|
||
private function _call_score($t) {
|
||
|
||
if ($t['price'] > 0) {
|
||
$group = $this->member_cache['group'][$t['gid']];
|
||
$notice = $t['lid'] ? dr_lang('[退回]申请用户组(%s): %s', $group['name'], $group['level'][$t['lid']]['name']) : dr_lang('[退回]申请用户组(%s)', $group['name']);
|
||
if ($this->member_cache['group'][$t['gid']]['unit']) {
|
||
// 金币
|
||
// 扣分
|
||
$rt = \Phpcmf\Service::M('member')->add_score($t['uid'], (int)$t['price'], $notice, '', '');
|
||
if (!$rt['code']) {
|
||
$this->_json(0, $rt['msg']);
|
||
}
|
||
// 提醒通知
|
||
\Phpcmf\Service::M('member')->notice($t['uid'], 2, $notice);
|
||
} else {
|
||
// rmb
|
||
if (!dr_is_app('pay')) {
|
||
$this->_msg(0, '没有安装「支付系统」插件');exit;
|
||
}
|
||
$rt = \Phpcmf\Service::M('Pay','pay')->add_money($t['uid'], $t['price']);
|
||
if (!$rt['code']) {
|
||
$this->_json(0, $rt['msg']);
|
||
}
|
||
// 增加到交易流水
|
||
$rt = \Phpcmf\Service::M('Pay','pay')->add_paylog([
|
||
'uid' => $t['uid'],
|
||
'touid' => 0,
|
||
'mid' => 'system',
|
||
'title' => $notice,
|
||
'value' => $t['price'],
|
||
'type' => 'finecms',
|
||
'status' => 1,
|
||
'result' => '',
|
||
'paytime' => SYS_TIME,
|
||
'inputtime' => SYS_TIME,
|
||
]);
|
||
// 提醒通知
|
||
\Phpcmf\Service::M('member')->notice(
|
||
$t['uid'],
|
||
2,
|
||
$notice,
|
||
\Phpcmf\Service::L('Router')->member_url('pay/paylog/show', ['id'=>$rt['code']])
|
||
);
|
||
}
|
||
}
|
||
}
|
||
}
|