Initial project files: BESCMS full source

This commit is contained in:
bes
2026-08-13 23:37:46 +08:00
parent fa6cddb540
commit 2e26f85723
2166 changed files with 396625 additions and 0 deletions
+11
View File
@@ -0,0 +1,11 @@
<?php
return [
'type' => 'app',
'name' => '用户系统',
'author' => '迅睿云软件',
'icon' => 'fa fa-user',
'uri' => 'member/home/index'
];
+23
View File
@@ -0,0 +1,23 @@
<?php
if (!method_exists(\Phpcmf\Service::M('table'), 'install_schema')) {
return dr_return_data(0, '请先升级迅睿系统后再安装本插件');
}
$code = (string)file_get_contents(CMSPATH.'Core/Hooks.php');
if (strpos($code, 'app_on') === false) {
return dr_return_data(0, '迅睿主程序版本较低,无法安装本插件');
}
if (\Phpcmf\Service::M()->is_table_exists('member_menu')) {
$path = dr_get_app_dir('member');
file_put_contents($path.'install.lock', SYS_TIME);
if (function_exists('dr_install_app')) {
dr_install_app('member');
}
// 已经安装成功的版本
\Phpcmf\Service::M('Menu')->add_app('member');
return dr_return_data(0, '用户系统已安装成功');
}
return dr_return_data(1, 'ok');
+69
View File
@@ -0,0 +1,69 @@
<?php
\Phpcmf\Hooks::app_on('member', 'cms_init', function() {
if (IS_ADMIN || IS_API) {
return;
}
\Phpcmf\Service::L('member', 'member')->group_timeout(\Phpcmf\Service::C());
});
// 多几个版本再移动至init
if (!function_exists('dr_member_menu_show')) {
// 判断用户中心菜单权限
function dr_member_menu_show($t) {
if ($t['mark']) {
list($a, $b) = explode('-', $t['mark']);
switch ($a) {
case 'module':
// 判断模块当前站点是否可用
if (!\Phpcmf\Service::C()->get_cache('module-'.SITE_ID.'-'.$b)) {
return 0;
}
break;
}
}
// 判断站点显示权限
$is_site = 0;
if (!$t['site'] || ($t['site'] && dr_in_array(SITE_ID, $t['site']))) {
$is_site = 1; // 当前可用
}
// 判断终端显示权限
$is_client = 0;
if (!$t['client'] || ($t['client'] && dr_in_array(CLIENT_NAME, $t['client']))) {
$is_client = 1; // 当前可用
}
// 判断用户组显示权限
if ($is_client && $is_site
&& (!$t['group'] || dr_array_intersect(\Phpcmf\Service::C()->member['groupid'], $t['group']))) {
return 1;
}
return 0;
}
}
if (!function_exists('dr_member_group_is_timeout')) {
function dr_member_group_is_timeout() {
if (APP_DIR == 'api' or IS_API == 1) {
return 0; // api控制器不强制跳转
} elseif (APP_DIR == 'pay') {
return 0; // 支付系统放过
} elseif (IS_MEMBER
&& in_array(\Phpcmf\Service::L('Router')->class, ['home', 'pay', 'recharge', 'api', 'apply'])) {
return 0;// 指定这些控制器不强制跳转
}
return 1;
}
}
+55
View File
@@ -0,0 +1,55 @@
<?php
if (IS_ADMIN) {
if (! function_exists('dr_redirect_safe_check')) {
$this->_admin_msg(1, '需要升级一下CMS主程序!', dr_url('cloud/update'));
}
}
// 头像
function dr_member_list_avatar($value, $param = [], $data = [], $field = []) {
$uid = isset($data['id']) ? $data['id'] : 0;
return '<a class="fc_member_show" href="javascript:;" uid="'.$uid.'"><img class="img-circle" src="'.dr_avatar($uid).'" style="width:30px;height:30px"></a>';
}
function dr_member_verify_avatar_url($uid) {
$avatar_url = '';
list($cache_path, $cache_url) = dr_avatar_path();
$dir = dr_avatar_dir($uid);
if (is_file($cache_path.$dir.$uid.'_verify.jpg')) {
$avatar_url = $cache_url.$dir.$uid.'_verify.jpg?time='.SYS_TIME;
}
return $avatar_url;
}
// 头像
function dr_member_verify_avatar($value, $param = [], $data = [], $field = []) {
$uid = isset($data['uid']) ? $data['uid'] : 0;
return '<a class="fc_member_show" href="javascript:;" uid="'.$uid.'"><img class="img-circle" src="'.dr_avatar($uid).'" style="width:30px;height:30px"></a>';
}
function dr_member_verify_avatar2($value, $param = [], $data = [], $field = []) {
$uid = isset($data['uid']) ? $data['uid'] : 0;
return '<a href="javascript:;""><img class="img-circle" src="'.dr_member_verify_avatar_url($uid).'" style="width:30px;height:30px"></a>';
}
function dr_member_verify_status($value, $param = [], $data = [], $field = []) {
if ($value == 1) {
$html = '<span class="label label-sm label-danger">'.dr_lang('待审核');
} elseif ($value == 2) {
$html = '<span class="label label-sm label-success">'.dr_lang('已通过');
} else {
$html = '<span class="label label-sm label-warning">'.dr_lang('未通过') ;
}
return '<label>'.$html.'</span></label>';
}
+238
View File
@@ -0,0 +1,238 @@
<?php
$rt = \Phpcmf\Service::M('table')->install_schema([
'tables' => [
'member_login' => [
'comment' => '登录日志记录',
'drop' => false,
'fields' => [
'id' => 'int(10) unsigned NOT NULL AUTO_INCREMENT',
'uid' => 'mediumint(8) unsigned DEFAULT NULL COMMENT \'会员uid\'',
'type' => 'varchar(30) NOT NULL COMMENT \'登录方式\'',
'loginip' => 'varchar(50) NOT NULL COMMENT \'登录Ip\'',
'logintime' => 'int(10) unsigned NOT NULL COMMENT \'登录时间\'',
'useragent' => 'varchar(255) NOT NULL COMMENT \'客户端信息\'',
],
'indexes' => [
'PRIMARY KEY (`id`)',
'KEY `uid` (`uid`)',
'KEY `loginip` (`loginip`)',
'KEY `logintime` (`logintime`)',
],
],
'member_group' => [
'comment' => '用户组表',
'drop' => false,
'fields' => [
'id' => 'smallint(5) unsigned NOT NULL AUTO_INCREMENT',
'name' => 'text NOT NULL COMMENT \'用户组名称\'',
'price' => 'decimal(10,2) NOT NULL COMMENT \'售价\'',
'unit' => 'tinyint(1) unsigned NOT NULL COMMENT \'价格单位:1积分,0金钱\'',
'days' => 'int(10) unsigned NOT NULL COMMENT \'生效时长\'',
'apply' => 'tinyint(1) unsigned NOT NULL COMMENT \'是否申请\'',
'register' => 'tinyint(1) unsigned NOT NULL COMMENT \'是否允许注册\'',
'setting' => 'text NOT NULL COMMENT \'用户组配置\'',
'displayorder' => 'smallint(5) NOT NULL COMMENT \'排序\'',
],
'indexes' => [
'PRIMARY KEY (`id`)',
'KEY `displayorder` (`displayorder`)',
],
],
'member_level' => [
'comment' => '用户组级别表',
'drop' => false,
'fields' => [
'id' => 'smallint(5) unsigned NOT NULL AUTO_INCREMENT',
'gid' => 'smallint(5) unsigned NOT NULL COMMENT \'用户id\'',
'name' => 'varchar(255) NOT NULL COMMENT \'名称\'',
'stars' => 'int(10) NOT NULL COMMENT \'图标\'',
'value' => 'int(10) unsigned NOT NULL COMMENT \'升级值要求\'',
'note' => 'text NOT NULL COMMENT \'备注\'',
'apply' => 'tinyint(1) unsigned NOT NULL COMMENT \'是否允许升级\'',
'setting' => 'text NOT NULL COMMENT \'等级配置\'',
'displayorder' => 'smallint(5) NOT NULL COMMENT \'排序\'',
],
'indexes' => [
'PRIMARY KEY (`id`)',
'KEY `value` (`value`)',
'KEY `apply` (`apply`)',
'KEY `gid` (`gid`)',
'KEY `displayorder` (`displayorder`)',
],
],
'member_group_index' => [
'comment' => '用户组归属表',
'drop' => false,
'fields' => [
'id' => 'int(10) unsigned NOT NULL AUTO_INCREMENT',
'uid' => 'int(10) unsigned NOT NULL COMMENT \'用户id\'',
'gid' => 'smallint(5) unsigned NOT NULL COMMENT \'用户组id\'',
'lid' => 'smallint(5) unsigned NOT NULL COMMENT \'用户组等级id\'',
'stime' => 'int(10) unsigned NOT NULL COMMENT \'开通时间\'',
'etime' => 'int(10) unsigned NOT NULL COMMENT \'结束时间\'',
],
'indexes' => [
'PRIMARY KEY (`id`)',
'KEY `uid` (`uid`)',
'KEY `lid` (`lid`)',
'KEY `gid` (`gid`)',
],
],
'member_group_verify' => [
'comment' => '用户组申请审核',
'drop' => false,
'fields' => [
'id' => 'int(10) unsigned NOT NULL AUTO_INCREMENT',
'uid' => 'mediumint(8) unsigned NOT NULL DEFAULT \'0\'',
'username' => 'varchar(50) NOT NULL COMMENT \'用户名\'',
'gid' => 'smallint(5) unsigned NOT NULL COMMENT \'用户组id\'',
'lid' => 'smallint(5) unsigned NOT NULL COMMENT \'用户组等级id\'',
'status' => 'tinyint(1) unsigned NOT NULL COMMENT \'状态\'',
'price' => 'decimal(10,2) DEFAULT NULL COMMENT \'已费用\'',
'content' => 'text NOT NULL COMMENT \'自定义字段信息\'',
'inputtime' => 'int(10) unsigned NOT NULL',
],
'indexes' => [
'PRIMARY KEY (`id`)',
'KEY `uid` (`uid`)',
'KEY `status` (`status`)',
'KEY `inputtime` (`inputtime`)',
],
],
'member_setting' => [
'comment' => '用户属性参数表',
'drop' => false,
'fields' => [
'name' => 'varchar(50) NOT NULL',
'value' => 'mediumtext NOT NULL',
],
'indexes' => [
'PRIMARY KEY (`name`)',
],
],
'member_menu' => [
'comment' => '用户组菜单表',
'drop' => false,
'fields' => [
'id' => 'smallint(5) unsigned NOT NULL AUTO_INCREMENT',
'pid' => 'smallint(5) unsigned NOT NULL COMMENT \'上级菜单id\'',
'name' => 'text NOT NULL COMMENT \'菜单语言名称\'',
'uri' => 'varchar(255) DEFAULT NULL COMMENT \'uri字符串\'',
'url' => 'varchar(255) DEFAULT NULL COMMENT \'外链地址\'',
'mark' => 'varchar(255) DEFAULT NULL COMMENT \'菜单标识\'',
'hidden' => 'tinyint(1) unsigned DEFAULT NULL COMMENT \'是否隐藏\'',
'icon' => 'varchar(255) DEFAULT NULL COMMENT \'图标标示\'',
'group' => 'text DEFAULT NULL COMMENT \'用户组划分\'',
'site' => 'text DEFAULT NULL COMMENT \'站点划分\'',
'client' => 'text DEFAULT NULL COMMENT \'终端划分\'',
'displayorder' => 'int(5) DEFAULT NULL COMMENT \'排序值\'',
],
'indexes' => [
'PRIMARY KEY (`id`)',
'KEY `pid` (`pid`)',
'KEY `mark` (`mark`)',
'KEY `hidden` (`hidden`)',
'KEY `uri` (`uri`)',
'KEY `displayorder` (`displayorder`)',
],
],
'member_oauth' => [
'comment' => '快捷登录用户OAuth授权表',
'drop' => false,
'fields' => [
'id' => 'int(10) NOT NULL AUTO_INCREMENT',
'uid' => 'mediumint(8) unsigned NOT NULL COMMENT \'会员uid\'',
'oid' => 'varchar(255) NOT NULL COMMENT \'OAuth返回id\'',
'oauth' => 'varchar(255) NOT NULL COMMENT \'运营商\'',
'avatar' => 'varchar(255) NOT NULL COMMENT \'头像\'',
'unionid' => 'varchar(255) DEFAULT NULL COMMENT \'unionId\'',
'nickname' => 'varchar(255) NOT NULL COMMENT \'昵称\'',
'expire_at' => 'int(10) unsigned NOT NULL COMMENT \'绑定时间\'',
'access_token' => 'varchar(255) DEFAULT NULL COMMENT \'保留\'',
'refresh_token' => 'varchar(255) DEFAULT NULL COMMENT \'保留\'',
],
'indexes' => [
'PRIMARY KEY (`id`)',
'KEY `uid` (`uid`)',
],
],
'member_verify' => [
'comment' => '会员审核表',
'drop' => false,
'fields' => [
'id' => 'smallint(5) unsigned NOT NULL AUTO_INCREMENT',
'uid' => 'mediumint(8) unsigned NOT NULL COMMENT \'会员uid\'',
'tid' => 'tinyint(1) unsigned NOT NULL COMMENT \'类别\'',
'status' => 'tinyint(1) unsigned NOT NULL COMMENT \'状态\'',
'content' => 'mediumtext NOT NULL COMMENT \'自定义字段信息\'',
'result' => 'text NOT NULL COMMENT \'处理结果\'',
'updatetime' => 'int(10) unsigned NOT NULL COMMENT \'处理时间\'',
'inputtime' => 'int(10) unsigned NOT NULL COMMENT \'提交时间\'',
],
'indexes' => [
'PRIMARY KEY (`id`)',
'KEY `tid` (`tid`)',
'KEY `uid` (`uid`)',
'KEY `status` (`status`)',
'KEY `inputtime` (`inputtime`)',
],
],
],
'seeds' => [
['table' => 'member_group', 'data' => [
'id' => 1,
'name' => '注册用户',
'price' => 0.00,
'unit' => 0,
'days' => 0,
'apply' => 1,
'register' => 1,
'setting' => '{"level":{"auto":"0","unit":"0","price":"0"},"verify":"0"}',
'displayorder' => 0,
]],
['table' => 'member_group_index', 'data' => [
'id' => 1,
'uid' => 1,
'gid' => 1,
'lid' => 0,
'stime' => 0,
'etime' => 0,
]],
['table' => 'member_setting', 'data' => [
'name' => 'config',
'value' => '{"edit_name":"1","edit_mobile":"1","logintime":"","verify_msg":"","pagesize":"","pagesize_mobile":"","pagesize_api":""}',
]],
['table' => 'member_setting', 'data' => [
'name' => 'login',
'value' => '{"code":"1"}',
]],
['table' => 'member_setting', 'data' => [
'name' => 'register',
'value' => '{"close":"0","groupid":"1","field":["username","email"],"cutname":"0","unprefix":"","code":"1","verify":"","preg":"","notallow":""}',
]],
['table' => 'member_setting', 'data' => [
'name' => 'auth2',
'value' => '{"1":{"public":{"home":{"show":"0","is_category":"0"},"form_public":[],"share_category_public":{"show":"1","add":"1","edit":"1","code":"1","verify":"1","exp":"","score":"","money":"","day_post":"","total_post":""},"category_public":[],"mform_public":"","form":null,"share_category":null,"category":null,"mform":null}}}',
]],
],
]);
if (empty($rt['code'])) {
log_message('error', 'Member install_schema: '.($rt['msg'] ?? ''));
return dr_return_data(0, dr_lang('安装失败').''.($rt['msg'] ?? ''));
}
\Phpcmf\Service::M('Menu')->db->resetDataCache();
\Phpcmf\Service::M()->table('member_menu')->clear_all();
$menu = require $path.'Config/Menu.php';
foreach ($menu['member'] as $mark => $top) {
// 插入顶级菜单
$mark = strlen($mark) > 2 ? $mark : '';
$top_id = \Phpcmf\Service::M('Menu')->_add('member', 0, $top, $mark, true);
// 插入链接菜单
if ($top_id) {
foreach ($top['link'] as $mark2 => $link) {
\Phpcmf\Service::M('Menu')->_add('member', $top_id, $link);
}
}
}
+158
View File
@@ -0,0 +1,158 @@
<?php
/**
* 菜单配置
*/
return [
'admin' => [
'member' => [
'name' => '用户',
'icon' => 'fa fa-user',
'left' => [
'member-list' => [
'name' => '用户管理',
'icon' => 'fa fa-user',
'link' => [
[
'name' => '用户管理',
'icon' => 'fa fa-user',
'uri' => 'member/home/index',
'displayorder' => '-1',
],
[
'name' => '用户组管理',
'icon' => 'fa fa-users',
'uri' => 'member/group/index',
'displayorder' => '-1',
],
[
'name' => '授权账号',
'icon' => 'fa fa-qq',
'uri' => 'member/oauth/index',
],
[
'name' => '用户菜单',
'icon' => 'fa fa-list-alt',
'uri' => 'member/menu/index',
],
]
],
'member-sz' => [
'name' => '用户设置',
'icon' => 'fa fa-user',
'link' => [
[
'name' => '用户设置',
'icon' => 'fa fa-cog',
'uri' => 'member/setting/index',
],
[
'name' => '字段划分',
'icon' => 'fa fa-code',
'uri' => 'member/field/index',
],
[
'name' => '通知设置',
'icon' => 'fa fa-volume-up',
'uri' => 'member/setting_notice/index',
],
[
'name' => '用户权限',
'icon' => 'fa fa-user',
'uri' => 'member/auth/index',
],
]
],
'member-verify' => [
'name' => '审核管理',
'icon' => 'fa fa-edit',
'link' => [
[
'name' => '注册审核',
'icon' => 'fa fa-user',
'uri' => 'member/verify/index',
],
[
'name' => '申请审核',
'icon' => 'fa fa-users',
'uri' => 'member/apply/index',
],
[
'name' => '资料审核',
'icon' => 'fa fa-edit',
'uri' => 'member/edit_verify/index',
],
[
'name' => '头像审核',
'icon' => 'fa fa-user-circle',
'uri' => 'member/avatar_verify/index',
],
]
],
],
],
],
'member' => [
'user' => [
'name' => '账号管理',
'icon' => 'fa fa-user',
'link' => [
[
'name' => '资料修改',
'icon' => 'fa fa-cog',
'uri' => 'account/index',
],
[
'name' => '头像设置',
'icon' => 'fa fa-smile-o',
'uri' => 'account/avatar',
],
[
'name' => '手机认证',
'icon' => 'fa fa-mobile',
'uri' => 'account/mobile',
],
[
'name' => '邮箱认证',
'icon' => 'fa fa-envelope',
'uri' => 'account/email',
],
[
'name' => '修改密码',
'icon' => 'fa fa-expeditedssl',
'uri' => 'account/password',
],
[
'name' => '账号绑定',
'icon' => 'fa fa-qq',
'uri' => 'account/oauth',
],
[
'name' => '登录记录',
'icon' => 'fa fa-calendar',
'uri' => 'account/login',
],
],
],
'content-module' => [
'name' => '内容管理',
'icon' => 'fa fa-th-large',
'link' => [
],
],
],
];
+40
View File
@@ -0,0 +1,40 @@
<?php
// 自定义字段的支持函数
// \Phpcmf\Service::M('field')
// 初始化信息
function myfield_init_member($relatedname, $relatedid) {
return dr_return_data(1, 'ok', [
'ismain' => 1,
'name' => '用户信息字段',
'backurl' => \Phpcmf\Service::L('Router')->url('member/field/index'), // 返回uri地址
]);
}
function myfield_tablename_member($field, $siteid, $relatedname, $relatedid) {
return 'member_data';
}
// 执行sql
function myfield_sql_member($sql, $ismain) {
\Phpcmf\Service::M('field')->db->simpleQuery(str_replace('{tablename}', \Phpcmf\Service::M('field')->dbprefix('member_data'), $sql));
\Phpcmf\Service::M('field')->_table_field[] = \Phpcmf\Service::M('field')->dbprefix('member_data');
}
// 字段是否存在
function myfield_field_member($name) {
// 保留
if (in_array($name, ['role', 'uid', 'authid', 'adminid', 'tableid', 'group', 'groupid', 'levelid'])) {
return 1;
}
// 主表
$table = \Phpcmf\Service::M('field')->dbprefix('member_data');
$rt = \Phpcmf\Service::M('field')->_field_exitsts('id', $name, $table, SITE_ID);
if ($rt) {
return 1;
}
return 0;
}
// 更新缓存
function myfield_cache_member() {
\Phpcmf\Service::M('cache')->sync_cache('member'); // 自动更新缓存
}
+34
View File
@@ -0,0 +1,34 @@
<?php
/**
* https://www.besyun.com
* BESCMS
* 本文件是框架系统文件,二次开发时不可以修改本文件
**/
/**
* 通知动作注册配置
*
* 动作字符 => 动作名称
*
**/
return [
'member_register' => '用户注册',
'member_login' => '用户登录',
'member_register_verify' => '用户注册审核完成',
'member_edit_verify_1' => '资料审核通过',
'member_edit_verify_0' => '资料审核被拒绝',
'member_avatar_verify_1' => '头像审核通过',
'member_avatar_verify_0' => '头像审核被拒绝',
'member_edit_password' => '用户修改密码',
'member_verify_group' => '审核用户组',
'member_edit_group' => '用户组变更',
'member_edit_level' => '用户组等级变更',
'module_content_delete' => '模块内容删除通知作者',
'module_content_verify_1' => '模块内容审核通过通知作者',
'module_content_verify_0' => '模块内容审核被拒通知作者',
];
+4
View File
@@ -0,0 +1,4 @@
<?php
// 加载主程序的路由
require COREPATH.'Config/Routes.php';
+15
View File
@@ -0,0 +1,15 @@
<?php
$t = \Phpcmf\Service::M('table');
$m = \Phpcmf\Service::M();
foreach ([
'member_login',
'member_group',
'member_level',
'member_group_index',
'member_group_verify',
'member_menu',
'member_oauth',
'member_verify',
] as $name) {
$t->drop_table($m->dbprefix($name), true);
}
+167
View File
@@ -0,0 +1,167 @@
<?php
/**
* 更新数据结构
*/
$prefix = \Phpcmf\Service::M()->prefix;
$m = \Phpcmf\Service::M();
$t = \Phpcmf\Service::M('table');
$table = $prefix.'member_setting';
if (!$m->is_table_exists($table)) {
$t->create_table(
$table,
[
'name' => 'varchar(50) NOT NULL',
'value' => 'mediumtext NOT NULL',
],
[
'PRIMARY KEY (`name`)',
],
'用户属性参数表'
);
} else {
if ($m->is_field_exists($table, 'id')) {
// 处理旧版 id 字段:重建为 name 主键
$settingQuery = $m->db->table('member_setting')->get();
$data = $settingQuery ? $settingQuery->getResultArray() : [];
$t->drop_table($table, true);
$t->create_table(
$table,
[
'name' => 'varchar(50) NOT NULL',
'value' => 'mediumtext NOT NULL',
],
[
'PRIMARY KEY (`name`)',
],
'用户属性参数表'
);
if ($data) {
foreach ($data as $row) {
$m->table('member_setting')->replace([
'name' => $row['name'],
'value' => $row['value'],
]);
}
}
}
}
$auth2Query = $m->db->table('member_setting')->where('name', 'auth2')->get();
if (!$auth2Query || !$auth2Query->getRowArray()) {
$m->table('member_setting')->replace([
'name' => 'auth2',
'value' => '{"1":{"public":{"home":{"show":"0","is_category":"0"},"form_public":[],"share_category_public":{"show":"1","add":"1","edit":"1","code":"1","verify":"1","exp":"","score":"","money":"","day_post":"","total_post":""},"category_public":[],"mform_public":"","form":null,"share_category":null,"category":null,"mform":null}}}',
]);
}
$table = $prefix.'member_paylog';
if ($m->is_table_exists($table)) {
if (!$m->is_field_exists($table, 'site')) {
$t->add_field($table, 'site', 'INT(10)', 'NOT NULL', '站点');
}
if ($m->is_field_exists($table, 'username')) {
$t->drop_field($table, 'username');
}
if ($m->is_field_exists($table, 'tousername')) {
$t->drop_field($table, 'tousername');
}
}
$table = $prefix.'member_verify';
if (!$m->is_table_exists($table)) {
$t->create_table(
$table,
[
'id' => 'smallint(5) unsigned NOT NULL AUTO_INCREMENT',
'uid' => 'mediumint(8) unsigned NOT NULL COMMENT \'会员uid\'',
'tid' => 'tinyint(1) unsigned NOT NULL COMMENT \'类别\'',
'status' => 'tinyint(1) unsigned NOT NULL COMMENT \'状态\'',
'content' => 'mediumtext NOT NULL COMMENT \'自定义字段信息\'',
'result' => 'text NOT NULL COMMENT \'处理结果\'',
'updatetime' => 'int(10) unsigned NOT NULL COMMENT \'处理时间\'',
'inputtime' => 'int(10) unsigned NOT NULL COMMENT \'提交时间\'',
],
[
'PRIMARY KEY (`id`)',
'KEY `tid` (`tid`)',
'KEY `uid` (`uid`)',
'KEY `status` (`status`)',
'KEY `inputtime` (`inputtime`)',
],
'会员审核表'
);
}
if ($m->is_table_exists($table) && !$m->is_field_exists($table, 'tid')) {
$t->add_field($table, 'tid', 'int(1)', 'DEFAULT NULL', '类型');
}
$table = $prefix.'member_group_verify';
if ($m->is_table_exists($table) && !$m->is_field_exists($table, 'price')) {
$t->add_field($table, 'price', 'decimal(10,2)', 'DEFAULT NULL', '已费用');
}
$table = $prefix.'member_scorelog';
if ($m->is_table_exists($table) && !$m->is_field_exists($table, 'username')) {
$t->add_field($table, 'username', 'VARCHAR(100)', 'DEFAULT NULL', '');
}
$table = $prefix.'member_notice';
if ($m->is_table_exists($table) && !$m->is_field_exists($table, 'mark')) {
$t->add_field($table, 'mark', 'VARCHAR(100)', 'DEFAULT NULL', '');
$t->edit_field($prefix.'member_notice', 'type', 'tinyint(2) unsigned', 'NOT NULL', '类型');
}
$table = $prefix.'member_explog';
if ($m->is_table_exists($table) && !$m->is_field_exists($table, 'username')) {
$t->add_field($table, 'username', 'VARCHAR(100)', 'DEFAULT NULL', '');
}
$table = $prefix.'member_oauth';
if ($m->is_table_exists($table) && !$m->is_field_exists($table, 'unionid')) {
$t->add_field($table, 'unionid', 'VARCHAR(100)', 'DEFAULT NULL', '');
}
$table = $prefix.'member_menu';
if ($m->is_table_exists($table) && !$m->is_field_exists($table, 'site')) {
$t->add_field($table, 'site', 'TEXT', 'NOT NULL', '');
}
if ($m->is_table_exists($table) && !$m->is_field_exists($table, 'client')) {
$t->add_field($table, 'client', 'TEXT', 'DEFAULT NULL', '');
}
$table = $prefix.'member_level';
if (!$m->is_table_exists($table)) {
$rt = $t->create_table(
$table,
[
'id' => 'smallint(5) unsigned NOT NULL AUTO_INCREMENT',
'gid' => 'smallint(5) unsigned NOT NULL COMMENT \'用户id\'',
'name' => 'varchar(255) NOT NULL COMMENT \'名称\'',
'stars' => 'int(10) NOT NULL COMMENT \'图标\'',
'value' => 'int(10) unsigned NOT NULL COMMENT \'升级值要求\'',
'note' => 'text NOT NULL COMMENT \'备注\'',
'apply' => 'tinyint(1) unsigned NOT NULL COMMENT \'是否允许升级\'',
'setting' => 'text NOT NULL COMMENT \'等级配置\'',
'displayorder' => 'smallint(5) NOT NULL COMMENT \'排序\'',
],
[
'PRIMARY KEY (`id`)',
'KEY `value` (`value`)',
'KEY `apply` (`apply`)',
'KEY `gid` (`gid`)',
'KEY `displayorder` (`displayorder`)',
],
'用户组级别表'
);
if (empty($rt['code'])) {
log_message('error', 'Member Update create member_level failed: '.($rt['msg'] ?? ''));
}
} else {
$t->edit_field($table, 'stars', 'int(10) unsigned', 'NOT NULL', '图标');
if (!$m->is_field_exists($table, 'setting')) {
$t->add_field($table, 'setting', 'TEXT', 'NOT NULL', '');
}
if (!$m->is_field_exists($table, 'displayorder')) {
$t->add_field($table, 'displayorder', 'INT(10)', 'DEFAULT NULL', '排序');
}
}
+13
View File
@@ -0,0 +1,13 @@
<?php
return [
'id' => '784',
'vip' => '',
'cms' => '4.7.3',
'version' => '3.0',
'license' => '375C71349B295FBE2DCDCA9206F20A1703',
'updatetime' => '2026-07-30 14:12:32',
'downtime' => '2026-08-08 00:54:28',
];
@@ -0,0 +1,15 @@
<?php
/**
* 示例文件
* 变量介绍
* $name 字段英文名称
* $field 字段信息(数组)
* $value 当前字段的值
* \Phpcmf\Service::C() 表示控制器方法
* \Phpcmf\Service::M() 表示模型方法
* 表单的name值格式是:data[$name]
*/
$avatar_url = dr_member_verify_avatar_url($value);
$code = '<label><span href="javascript:;" class="thumbnail"><img src="'.$avatar_url.'" style="height: 180px; width: 100%; display: block;"> </span></label>'; // 最终输出的代码