Files

232 lines
8.6 KiB
PHP
Raw Permalink 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 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']])
);
}
}
}
}