model('miniapp'); load()->model('phoneapp'); $dos = array('rank', 'display', 'list', 'switch', 'platform', 'history', 'setting_star', 'setting_star_rank', 'list_star', 'account_num', 'welcome_link', 'account_modules', 'account_create_info'); $do = in_array($_GPC['do'], $dos) ? $do : 'platform'; if ('platform' == $do) { $url = $_W['siteroot'] . 'web/home.php'; $last_uniacid = switch_get_account_display(); if (empty($last_uniacid)) { itoast('', $url, 'info'); } if (!empty($last_uniacid) && $last_uniacid != $_W['uniacid']) { switch_save_account_display($last_uniacid); } $permission = permission_account_user_role($_W['uid'], $last_uniacid); if (empty($permission)) { itoast('', $url, 'info'); } $account_info = uni_fetch($last_uniacid); if (ACCOUNT_TYPE_SIGN == $account_info['type_sign']) { $url = url('home/welcome'); } elseif (WEBAPP_TYPE_SIGN == $account_info['type_sign']) { $url = url('webapp/home/display'); } else { $last_version = miniapp_fetch($last_uniacid); if (!empty($last_version)) { $url = url('miniapp/version/home', array('version_id' => $last_version['version']['id'])); } } itoast('', $url); } if ('list' == $do) { if ($_W['isadmin']) { $founders = pdo_getall('users', array('founder_groupid' => 2), array('uid', 'username'), 'uid'); $founder_id = intval($_GPC['founder_id']); } $pindex = max(1, intval($_GPC['page'])); $psize = 'list' == $do ? 24 : 20; $limit_num = intval($_GPC['limit_num']); $psize = $limit_num > 0 ? $limit_num : $psize; $type = ACCOUNT_TYPE_SIGN; if ('all' == $type) { $condition = array_keys($account_all_type); } else { $condition = $account_all_type_sign[$type]['contain_type']; } $table = table('account'); $table->searchWithType($condition); $keyword = safe_gpc_string($_GPC['keyword']); if (!empty($keyword)) { $table->searchWithKeyword($keyword); } $letter = safe_gpc_string($_GPC['letter']); if (!empty($letter) && '全部' != $letter) { $table->searchWithLetter($letter); } $search_role = in_array($_GPC['role'], array('owner', 'manager', 'operator')) ? $_GPC['role'] : ''; if ($search_role) { $table->searchWithRole($search_role); } if ('all' == $type) { $total_list = array(); foreach ($account_all_type as $account_type) { $total_list[$account_type['type_sign']] = 0; } if (!empty($founder_id)) { $table->searchWithViceFounder($founder_id); } $account_total = $table->searchAccounTotal(false); $table->searchWithType($condition); if (!empty($keyword)) { $table->searchWithKeyword($keyword); } if (!empty($letter) && '全部' != $letter) { $table->searchWithLetter($letter); } if ($search_role) { $table->searchWithRole($_GPC['role']); } foreach ($account_total as $row) { if (in_array($row['type'], array(ACCOUNT_TYPE_OFFCIAL_NORMAL, ACCOUNT_TYPE_OFFCIAL_AUTH))) { $total_list['account'] += $row['total']; } elseif (in_array($row['type'], array(ACCOUNT_TYPE_APP_NORMAL, ACCOUNT_TYPE_APP_AUTH))) { $total_list['wxapp'] += $row['total']; } else { foreach ($account_all_type as $type_key => $type_info) { if ($type_key == $row['type']) { $total_list[$type_info['type_sign']] += $row['total']; } } } } } if ('display' == $do) { $table->accountRankOrder(); $table->accountUniacidOrder(); } elseif ('list' == $do) { $orderby = $_GPC['orderby'] == 'initials' ? 'initials' : 'createtime'; switch($orderby) { case 'createtime': $table->accountUniacidOrder(); break; case 'initials': $table->accountInitialsOrder(); break; } } $table->searchWithPage($pindex, $psize); $list = $table->searchAccountList(false); $total = $table->getLastQueryTotal(); if (!empty($list)) { if (!$_W['isfounder']) { $account_user_roles = table('uni_account_users')->where('uid', $_W['uid'])->getall('uniacid'); } foreach ($list as $k => &$account) { $account = uni_fetch($account['uniacid']); $account['manageurl'] .= '&iscontroller=0'; if (!in_array($account_user_roles[$account['uniacid']]['role'], array(ACCOUNT_MANAGE_NAME_OWNER, ACCOUNT_MANAGE_NAME_MANAGER)) && !$_W['isfounder']) { unset($account['manageurl']); } $account['list_type'] = 'account'; $account['type_name'] = $account->typeName; $account['level'] = $account_all_type_sign[$account['type_sign']]['level'][$account['level']]; $account['user_role'] = $account_user_roles[$account['uniacid']]['role']; if (ACCOUNT_MANAGE_NAME_CLERK == $account['user_role']) { unset($list[$k]); continue; } $account['is_star'] = 0; $account['end'] = USER_ENDTIME_GROUP_EMPTY_TYPE == $account['endtime'] || USER_ENDTIME_GROUP_UNLIMIT_TYPE == $account['endtime'] ? '永久' : date('Y-m-d', $account['endtime']) . '到期'; } if (!empty($list)) { $list = array_values($list); } } iajax(0, $list); } if ('switch' == $do) { $uniacid = intval($_GPC['uniacid']); $module_name = safe_gpc_string($_GPC['module_name']); if (!empty($uniacid)) { $role = permission_account_user_role($_W['uid'], $uniacid); if (empty($role) || ACCOUNT_MANAGE_NAME_CLERK == $role && empty($module_name)) { if ($_W['isajax']) { iajax(-1, '操作失败, 非法访问.'); } itoast('操作失败, 非法访问.', '', 'error'); } $account_info = uni_fetch($uniacid); if (USER_ENDTIME_GROUP_EMPTY_TYPE != $account_info['endtime'] && USER_ENDTIME_GROUP_UNLIMIT_TYPE != $account_info['endtime'] && TIMESTAMP > $account_info['endtime'] && !$_W['isadmin']) { $type_sign = $account_info->typeSign; $expired_message_settings = setting_load('account_expired_message'); $expired_message_settings = $expired_message_settings['account_expired_message'][$type_sign]; if (!empty($expired_message_settings) && !empty($expired_message_settings['status']) && !empty($expired_message_settings['message'])) { if ($_W['isajax']) { iajax(-1, $expired_message_settings['message']); } itoast($expired_message_settings['message']); } else { if ($_W['isajax']) { iajax(-1, '抱歉,您的平台账号服务已过期,请及时联系管理员'); } itoast('抱歉,您的平台账号服务已过期,请及时联系管理员'); } } $url = url('site/entry/index', array('m' => 'weliam_smartcity')); switch_save_uniacid($uniacid); if ($_W['isajax']) { iajax(0, '切换成功'); } itoast('', $url); } } if ('history' == $do) { $limit_num = intval($_GPC['limit_num']); $limit_num = $limit_num > 0 ? $limit_num : 40; $history = user_load_operate_history($limit_num); if (empty($history)) { iajax(0, array()); } $result = array(); $keyword = safe_gpc_string($_GPC['keyword']); foreach ($history as $key => $item) { $operate = array(); $account_info = uni_fetch($item['uniacid']); if (USERS_OPERATE_TYPE_ACCOUNT == $item['type'] && empty($account_info['isdeleted'])) { $operate = array( 'list_type' => 'account', 'name' => $account_info['name'], 'uniacid' => $account_info['uniacid'], 'type' => $account_info['type'], 'type_name' => $account_info['type_name'], 'level' => $account_all_type_sign[$account_info['type_sign']]['level'][$account_info['level']], 'logo' => $account_info['logo'], 'switchurl' => $account_info['switchurl'], 'is_star' => $account_info['is_star'] ? 1 : 0, ); if (!empty($keyword) && strpos($operate['name'], $keyword) === false) { continue; } } elseif (USERS_OPERATE_TYPE_MODULE == $item['type']) { $module_info = module_fetch($item['module_name']); if (empty($module_info)) { continue; } if (!empty($keyword) && strpos($module_info['title'], $keyword) === false) { continue; } $module_info['list_type'] = 'module'; $module_info['is_star'] = table('users_operate_star')->getByUidUniacidModulename($_W['uid'], $item['uniacid'], $item['module_name']) ? 1 : 0; $module_info['switchurl'] = url('module/display/switch', array('module_name' => $item['module_name'], 'uniacid' => $item['uniacid'])); $module_info['default_account'] = array( 'name' => $account_info['name'], 'uniacid' => $account_info['uniacid'], 'type' => $account_info['type'], 'logo' => $account_info['logo'], ); $operate = $module_info; } if ($operate) { $result[] = $operate; } } iajax(0, $result); } if ('setting_star' == $do) { $type = intval($_GPC['type']); $uniacid = intval($_GPC['uniacid']); $module_name = safe_gpc_string($_GPC['module_name']); $result = user_save_operate_star($type, $uniacid, $module_name); if (is_error($result)) { iajax(-1, $result['message']); } else { iajax(0, '设置成功!'); } } if ('setting_star_rank' == $do) { $change_ids = safe_gpc_array($_GPC['change_ids']); $users_operate_star_table = table('users_operate_star'); $all_star = $users_operate_star_table->getALlByUid($_W['uid']); $all_star_num = count($all_star); if ($all_star_num != count($change_ids)) { iajax(-1, '参数不合法,非法请求!'); } foreach ($change_ids as $id) { $if_exists = $users_operate_star_table->where('uid', $_W['uid'])->getById($id); if (!$if_exists) { iajax(-1, '当前用户没有设置该星标!'); break; } } unset($id); $change_data = array(); foreach ($change_ids as $id) { $change_data[] = array('id' => $id, 'rank' => $all_star_num); $all_star_num--; } foreach ($change_data as $data) { $result = $users_operate_star_table->where('id', $data['id'])->fill(array('rank' => $data['rank']))->save(); } iajax(0, $result); } if ('list_star' == $do) { $limit_num = intval($_GPC['limit_num']); $limit_num = $limit_num > 0 ? $limit_num : 100; $list = user_load_operate_star($limit_num); if (empty($list)) { iajax(0, array()); } $keyword = safe_gpc_string($_GPC['keyword']); foreach ($list as $key => $item) { $account_info = uni_fetch($item['uniacid']); if (USERS_OPERATE_TYPE_ACCOUNT == $item['type'] && empty($account_info['isdeleted'])) { if (!empty($keyword) && strpos($account_info['name'], $keyword) === false) { continue; } $result[] = array( 'id' => $item['id'], 'list_type' => 'account', 'name' => $account_info['name'], 'uniacid' => $account_info['uniacid'], 'type' => $account_info['type'], 'type_name' => $account_info['type_name'], 'level' => $account_all_type_sign[$account_info['type_sign']]['level'][$account_info['level']], 'logo' => $account_info['logo'], 'switchurl' => $account_info['switchurl'], 'manageurl' => $account_info['manageurl'], 'is_star' => 1, ); } elseif (USERS_OPERATE_TYPE_MODULE == $item['type']) { $module_info = module_fetch($item['module_name']); if (empty($module_info)) { continue; } if (!empty($keyword) && strpos($module_info['title'], $keyword) === false) { continue; } $module_info['id'] = $item['id']; $module_info['is_star'] = 1; $module_info['switchurl'] = url('module/display/switch', array('module_name' => $item['module_name'], 'uniacid' => $item['uniacid'])); $module_info['default_account'] = array( 'name' => $account_info['name'], 'uniacid' => $account_info['uniacid'], 'type' => $account_info['type'], 'logo' => $account_info['logo'], ); $module_info['list_type'] = 'module'; $result[] = $module_info; } } iajax(0, $result); } if ('account_num' == $do) { $result = array('max_total' => 0, 'created_total' => 0, 'limit_total' => 0); if ($_W['isadmin']) { iajax(0, array('max_total' => '不限', 'created_total' => '不限', 'limit_total' => '不限')); } $user_founder_info = table('users_founder_own_users')->getFounderByUid($_W['uid']); $account_num = permission_user_account_num(); if ($user_founder_info) { $result['max_total'] = $account_num['max_total'] - $account_num['founder_limit_total'] > 0 ? ($account_num['founder_limit_total'] + $account_num['created_total']) : $account_num['max_total']; $result['created_total'] = $account_num['current_vice_founder_user_created_total'] < 0 ? 0 : $account_num['created_total']; $result['limit_total'] = $account_num['limit_total'] - $account_num['founder_limit_total'] > 0 ? $account_num['founder_limit_total'] : $account_num['limit_total']; } else { $result['max_total'] = max(0, $account_num['max_total']); $result['created_total'] = max(0, $account_num['created_total']); $result['limit_total'] = max(0, $account_num['limit_total']); } iajax(0, $result); } if ('welcome_link' == $do) { if ($_W['isadmin']) { iajax(0, array()); } $welcome_link_info = array( array('id' => WELCOME_DISPLAY_TYPE, 'name' => '用户欢迎页'), array('id' => PLATFORM_DISPLAY_TYPE, 'name' => '最后进入的平台或应用'), ); $result = array( 'user_welcome_link' => in_array($_W['user']['welcome_link'], array_column($welcome_link_info, 'id')) ? $_W['user']['welcome_link'] : WELCOME_DISPLAY_TYPE, 'welcome_link' => $welcome_link_info, ); iajax(0, $result); } if ('account_modules' == $do) { $uniacid = intval($_GPC['uniacid']); $result = array(); $account_type_sign = table('account')->getByUniacid($uniacid); $account_type_sign = $account_all_type[$account_type_sign['type']]['type_sign']; $uni_user_accounts = uni_user_accounts($_W['uid'], $account_type_sign); if (!in_array($uniacid, array_keys($uni_user_accounts)) && !$_W['isadmin']) { iajax(-1, '您没有该账号的权限!'); } $account_modules = uni_modules_by_uniacid($uniacid); if (empty($account_modules)) { iajax(0, $result); } $user_account_modules = permission_account_user_menu($_W['uid'], $uniacid, 'modules'); $account_info = uni_fetch($uniacid); if ($account_info->supportVersion) { $version_info = miniapp_fetch($uniacid); $version_modules = !empty($version_info['version']) && !empty($version_info['version']['modules']) ? array_keys($version_info['version']['modules']) : array(); } $star_info = table('users_operate_star')->where('type', USERS_OPERATE_TYPE_MODULE)->where('uid', $_W['uid'])->where('uniacid', $uniacid)->where('module_name IN', array_keys($account_modules))->getall('module_name'); foreach ($account_modules as $module) { if ($module['issystem'] || !empty($user_account_modules) && empty($user_account_modules[$module['name']]) || $module[$account_all_type[$account_info['type']]['module_support_name']] != $account_all_type[$account_info['type']]['module_support_value']) { continue; } if (!empty($version_modules) && !in_array($module['name'], $version_modules)) { continue; } $module['switchurl'] = url('module/display/switch', array('module_name' => $module['name'], 'uniacid' => $uniacid)); $module['is_star'] = $star_info[$module['name']] ? 1 : 0; $module['list_type'] = 'module'; $module['default_account'] = array( 'name' => $account_info['name'], 'uniacid' => $account_info['uniacid'], 'type' => $account_info['type'], 'logo' => $account_info['logo'], ); $result[] = $module; } $pindex = max(1, intval($_GPC['page'])); $psize = 40; $page_result = array_slice($result, ($pindex - 1) * $psize, $psize); $message = array( 'total' => count($result), 'page' => $pindex, 'page_size' => $psize, 'list' => $page_result ); iajax(0, $message); } if ('account_create_info' == $do) { //$result = uni_account_create_info(); iajax(0, []); }