Server : Apache System : Linux iZ2vcgyutqttsd1p850kl8Z 3.10.0-1160.92.1.el7.x86_64 #1 SMP Tue Jun 20 11:48:01 UTC 2023 x86_64 User : www ( 1000) PHP Version : 5.6.40 Disable Function : passthru,exec,system,putenv,chroot,chgrp,chown,shell_exec,popen,proc_open,pcntl_exec,ini_alter,ini_restore,dl,openlog,syslog,readlink,symlink,popepassthru,pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,imap_open,apache_setenv Directory : /www/wwwroot/saimikebio.com/mobile/ecshopjcw/ |
<?php /** * ECSHOP 虚拟卡商品管理程序 * ============================================================================ * * 版权所有 2005-2012 上海商派网络科技有限公司,并保留所有权利。 * 网站地址: http://www.ecshop.com; * ---------------------------------------------------------------------------- * 这不是一个自由软件!您只能在不用于商业目的的前提下对程序代码进行修改和 * 使用;不允许对程序代码以任何形式任何目的的再发布。 * ============================================================================ * $Author: liubo $ * $Id: virtual_card.php 17217 2011-01-19 06:29:08Z liubo $ */ define('IN_ECTOUCH', true); /* 包含文件 */ require(dirname(__FILE__) . '/includes/init.php'); require_once(ROOT_PATH . 'include/lib_code.php'); /*------------------------------------------------------ */ //-- 补货处理 /*------------------------------------------------------ */ if ($_REQUEST['act'] == 'replenish') { assign_query_info(); /* 检查权限 */ admin_priv('virualcard'); /* 验证goods_id是否合法 */ if (empty($_REQUEST['goods_id'])) { $link[] = array('text'=>$_LANG['go_back'],'href'=>'virtual_card.php?act=list'); sys_msg($_LANG['replenish_no_goods_id'], 1, $link); } else { $goods_name = $db->GetOne("SELECT goods_name From ".$ecs->table('goods')." WHERE goods_id='".$_REQUEST['goods_id']."' AND is_real = 0 AND extension_code='virtual_card' "); if (empty($goods_name)) { $link[] = array('text'=>$_LANG['go_back'],'href'=>'virtual_card.php?act=list'); sys_msg($_LANG['replenish_no_get_goods_name'],1, $link); } } $card = array('goods_id'=>$_REQUEST['goods_id'],'goods_name'=>$goods_name, 'end_date'=>date('Y-m-d', strtotime('+1 year'))); $smarty->assign('card', $card); $smarty->assign('ur_here', $_LANG['replenish']); $smarty->assign('action_link', array('text'=>$_LANG['go_list'], 'href'=>'virtual_card.php?act=card&goods_id='.$card['goods_id'])); $smarty->display('replenish_info.htm'); } /*------------------------------------------------------ */ //-- 编辑补货信息 /*------------------------------------------------------ */ elseif ($_REQUEST['act'] == 'edit_replenish') { /* 检查权限 */ admin_priv('virualcard'); /* 获取卡片信息 */ $sql = "SELECT T1.card_id, T1.goods_id, T2.goods_name,T1.card_sn, T1.card_password, T1.end_date, T1.crc32 FROM ". $ecs->table('virtual_card')." AS T1, ".$ecs->table('goods')." AS T2 ". "WHERE T1.goods_id = T2.goods_id AND T1.card_id = '$_REQUEST[card_id]'"; $card = $db->GetRow($sql); if ($card['crc32'] == 0 || $card['crc32'] == crc32(AUTH_KEY)) { $card['card_sn'] = decrypt($card['card_sn']); $card['card_password'] = decrypt($card['card_password']); } elseif ($card['crc32'] == crc32(OLD_AUTH_KEY)) { $card['card_sn'] = decrypt($card['card_sn'], OLD_AUTH_KEY); $card['card_password'] = decrypt($card['card_password'], OLD_AUTH_KEY); } else { $card['card_sn'] = '***'; $card['card_password'] = '***'; } $smarty->assign('ur_here', $_LANG['replenish']); $smarty->assign('action_link', array('text'=>$_LANG['go_list'], 'href'=>'virtual_card.php?act=card&goods_id='.$card['goods_id'])); $smarty->assign('card', $card); $smarty->display('replenish_info.htm'); } elseif ($_REQUEST['act'] == 'action') { /* 检查权限 */ admin_priv('virualcard'); $_POST['card_sn'] = trim($_POST['card_sn']); /* 加密后的 */ $coded_card_sn = encrypt($_POST['card_sn']); $coded_old_card_sn = encrypt($_POST['old_card_sn']); $coded_card_password = encrypt($_POST['card_password']); /* 在前后两次card_sn不一致时,检查是否有重复记录,一致时直接更新数据 */ if ($_POST['card_sn'] != $_POST['old_card_sn']) { $sql = "SELECT count(*) FROM ".$ecs->table('virtual_card')." WHERE goods_id='".$_POST['goods_id']."' AND card_sn='$coded_card_sn'"; if ($db->GetOne($sql) > 0) { $link[] = array('text'=>$_LANG['go_back'], 'href'=>'virtual_card.php?act=replenish&goods_id='.$_POST['goods_id']); sys_msg(sprintf($_LANG['card_sn_exist'],$_POST['card_sn']),1,$link); } } /* 如果old_card_sn不存在则新加一条记录 */ if (empty($_POST['old_card_sn'])) { /* 插入一条新记录 */ $end_date = strtotime($_POST['end_dateYear'] . "-" . $_POST['end_dateMonth'] . "-" . $_POST['end_dateDay']); $add_date = gmtime(); $sql = "INSERT INTO ".$ecs->table('virtual_card')." (goods_id, card_sn, card_password, end_date, add_date, crc32) ". "VALUES ('$_POST[goods_id]', '$coded_card_sn', '$coded_card_password', '$end_date', '$add_date', '" . crc32(AUTH_KEY) . "')"; $db->query($sql); /* 如果添加成功且原卡号为空时商品库存加1 */ if (empty($_POST['old_card_sn'])) { $sql = "UPDATE ".$ecs->table('goods')." SET goods_number= goods_number+1 WHERE goods_id='$_POST[goods_id]'"; $db->query($sql); } $link[] = array('text'=>$_LANG['go_list'], 'href'=>'virtual_card.php?act=card&goods_id='.$_POST['goods_id']); $link[] = array('text'=>$_LANG['continue_add'], 'href'=>'virtual_card.php?act=replenish&goods_id='.$_POST['goods_id']); sys_msg($_LANG['action_success'], 0, $link); } else { /* 更新数据 */ $end_date = strtotime($_POST['end_dateYear'] . "-" . $_POST['end_dateMonth'] . "-" . $_POST['end_dateDay']); $sql = "UPDATE ".$ecs->table('virtual_card')." SET card_sn='$coded_card_sn', card_password='$coded_card_password', end_date='$end_date' ". "WHERE card_id='$_POST[card_id]'"; $db->query($sql); $link[] = array('text'=>$_LANG['go_list'], 'href'=>'virtual_card.php?act=card&goods_id='.$_POST['goods_id']); $link[] = array('text'=>$_LANG['continue_add'], 'href'=>'virtual_card.php?act=replenish&goods_id='.$_POST['goods_id']); sys_msg($_LANG['action_success'], 0, $link); } } /*------------------------------------------------------ */ //-- 补货列表 /*------------------------------------------------------ */ elseif ($_REQUEST['act'] == 'card') { /* 检查权限 */ admin_priv('virualcard'); /* 验证goods_id是否合法 */ if (empty($_REQUEST['goods_id'])) { $link[] = array('text'=>$_LANG['go_back'],'href'=>'virtual_card.php?act=list'); sys_msg($_LANG['replenish_no_goods_id'], 1, $link); } else { $goods_name = $db->GetOne("SELECT goods_name From ".$ecs->table('goods')." WHERE goods_id='".$_REQUEST['goods_id']."' AND is_real = 0 AND extension_code='virtual_card' "); if (empty($goods_name)) { $link[] = array('text'=>$_LANG['go_back'],'href'=>'virtual_card.php?act=list'); sys_msg($_LANG['replenish_no_get_goods_name'],1, $link); } } if (empty($_REQUEST['order_sn'])) { $_REQUEST['order_sn'] = ''; } $smarty->assign('goods_id', $_REQUEST['goods_id']); $smarty->assign('full_page', 1); $smarty->assign('lang', $_LANG); $smarty->assign('ur_here', $goods_name); $smarty->assign('action_link', array('text' => $_LANG['replenish'], 'href' => 'virtual_card.php?act=replenish&goods_id='.$_REQUEST['goods_id'])); $smarty->assign('goods_id', $_REQUEST['goods_id']); $list = get_replenish_list(); $smarty->assign('card_list', $list['item']); $smarty->assign('filter', $list['filter']); $smarty->assign('record_count', $list['record_count']); $smarty->assign('page_count', $list['page_count']); $sort_flag = sort_flag($list['filter']); $smarty->assign($sort_flag['tag'], $sort_flag['img']); assign_query_info(); $smarty->display('replenish_list.htm'); } /*------------------------------------------------------ */ //-- 虚拟卡列表,用于排序、翻页 /*------------------------------------------------------ */ elseif ($_REQUEST['act'] == 'query_card') { $list = get_replenish_list(); $smarty->assign('card_list', $list['item']); $smarty->assign('filter', $list['filter']); $smarty->assign('record_count', $list['record_count']); $smarty->assign('page_count', $list['page_count']); $sort_flag = sort_flag($list['filter']); $smarty->assign($sort_flag['tag'], $sort_flag['img']); make_json_result($smarty->fetch('replenish_list.htm'), '', array('filter'=>$list['filter'], 'page_count'=>$list['page_count'])); } /* 批量删除card */ elseif ($_REQUEST['act'] == 'batch_drop_card') { /* 检查权限 */ admin_priv('virualcard'); $num = count($_POST['checkboxes']); $sql = "DELETE FROM ".$ecs->table('virtual_card')." WHERE card_id ".db_create_in(implode(',',$_POST['checkboxes'])); if ($db->query($sql)) { /* 商品数量减$num */ update_goods_number(intval($_REQUEST['goods_id'])); $link[] = array('text'=>$_LANG['go_list'], 'href'=>'virtual_card.php?act=card&goods_id='.$_REQUEST['goods_id']); sys_msg($_LANG['action_success'], 0, $link); } } /* 批量上传页面 */ elseif ($_REQUEST['act'] == 'batch_card_add') { /* 检查权限 */ admin_priv('virualcard'); $smarty->assign('ur_here', $_LANG['batch_card_add']); $smarty->assign('action_link', array('text'=>$_LANG['virtual_card_list'], 'href'=>'goods.php?act=list&extension_code=virtual_card')); $smarty->assign('goods_id', $_REQUEST['goods_id']); $smarty->display('batch_card_info.htm'); } elseif ($_REQUEST['act'] == 'batch_confirm') { /* 检查上传是否成功 */ if ($_FILES['uploadfile']['tmp_name'] == '' || $_FILES['uploadfile']['tmp_name'] == 'none') { sys_msg($_LANG['uploadfile_fail'], 1); } $data = file($_FILES['uploadfile']['tmp_name']); $rec = array(); //数据数组 $i = 0; $separator = trim($_POST['separator']); foreach ($data as $line) { $row = explode($separator, $line); switch(count($row)) { case '3': $rec[$i]['end_date'] = $row[2]; case '2': $rec[$i]['card_password'] = $row[1]; case '1': $rec[$i]['card_sn'] = $row[0]; break; default: $rec[$i]['card_sn'] = $row[0]; $rec[$i]['card_password'] = $row[1]; $rec[$i]['end_date'] = $row[2]; break; } $i++; } $smarty->assign('ur_here', $_LANG['batch_card_add']); $smarty->assign('action_link', array('text'=>$_LANG['batch_card_add'], 'href'=>'virtual_card.php?act=batch_card_add&goods_id='.$_REQUEST['goods_id'])); $smarty->assign('list', $rec); $smarty->display('batch_card_confirm.htm'); } /* 批量上传处理 */ elseif ($_REQUEST['act'] == 'batch_insert') { /* 检查权限 */ admin_priv('virualcard'); $add_time = gmtime(); $i = 0; foreach ($_POST['checked'] as $key) { $rec['card_sn'] = encrypt($_POST['card_sn'][$key]); $rec['card_password'] = encrypt($_POST['card_password'][$key]); $rec['crc32'] = crc32(AUTH_KEY); $rec['end_date'] = empty($_POST['end_date'][$key]) ? 0 : strtotime($_POST['end_date'][$key]); $rec['goods_id'] = $_POST['goods_id']; $rec['add_date'] = $add_time; $db->AutoExecute($ecs->table('virtual_card'), $rec, 'INSERT'); $i++; } /* 更新商品库存 */ update_goods_number(intval($_REQUEST['goods_id'])); $link[] = array('text' => $_LANG['card'] , 'href' => 'virtual_card.php?act=card&goods_id='.$_POST['goods_id']); sys_msg(sprintf($_LANG['batch_card_add_ok'], $i) , 0, $link); } /*------------------------------------------------------ */ //-- 更改加密串 /*------------------------------------------------------ */ elseif ($_REQUEST['act'] == 'change') { /* 检查权限 */ admin_priv('virualcard'); $smarty->assign('ur_here', $_LANG['virtual_card_change']); assign_query_info(); $smarty->display('virtual_card_change.htm'); } /*------------------------------------------------------ */ //-- 提交更改 /*------------------------------------------------------ */ elseif ($_REQUEST['act'] == 'submit_change') { /* 检查权限 */ admin_priv('virualcard'); if (isset($_POST['old_string']) && isset($_POST['new_string'])) { // 检查原加密串是否正确 if ($_POST['old_string'] != OLD_AUTH_KEY) { sys_msg($_LANG['invalid_old_string'], 1); } // 检查新加密串是否正确 if ($_POST['new_string'] != AUTH_KEY) { sys_msg($_LANG['invalid_new_string'], 1); } // 检查原加密串和新加密串是否相同 if ($_POST['old_string'] == $_POST['new_string'] || crc32($_POST['old_string']) == crc32($_POST['new_string'])) { sys_msg($_LANG['same_string'], 1); } // 重新加密卡号和密码 $old_crc32 = crc32($_POST['old_string']); $new_crc32 = crc32($_POST['new_string']); $sql = "SELECT card_id, card_sn, card_password FROM " . $ecs->table('virtual_card') . " WHERE crc32 = '$old_crc32'"; $res = $db->query($sql); while ($row = $db->fetchRow($res)) { $row['card_sn'] = encrypt(decrypt($row['card_sn'], $_POST['old_string']), $_POST['new_string']); $row['card_password'] = encrypt(decrypt($row['card_password'], $_POST['old_string']), $_POST['new_string']); $row['crc32'] = $new_crc32; $db->autoExecute($ecs->table('virtual_card'), $row, 'UPDATE', 'card_id = ' . $row['card_id']); } // 记录日志 //admin_log(); // 返回 sys_msg($_LANG['change_key_ok'], 0, array(array('href' => 'virtual_card.php?act=list', 'text' => $_LANG['virtual_card_list']))); } } /*------------------------------------------------------ */ //-- 切换是否已出售状态 /*------------------------------------------------------ */ elseif ($_REQUEST['act'] == 'toggle_sold') { check_authz_json('virualcard'); $id = intval($_POST['id']); $val = intval($_POST['val']); $sql = "UPDATE ".$ecs->table('virtual_card')." SET is_saled= '$val' WHERE card_id='$id'"; if ($db->query($sql, 'SILENT')) { /* 修改商品库存 */ $sql = "SELECT goods_id FROM " . $ecs->table('virtual_card') . " WHERE card_id = '$id' LIMIT 1"; $goods_id = $db->getOne($sql); update_goods_number($goods_id); make_json_result($val); } else { make_json_error($_LANG['action_fail'] . "\n" .$db->error()); } } /*------------------------------------------------------ */ //-- 删除卡片 /*------------------------------------------------------ */ elseif ($_REQUEST['act'] == 'remove_card') { check_authz_json('virualcard'); $id = intval($_GET['id']); $row = $db->GetRow('SELECT card_sn, goods_id FROM ' . $ecs->table('virtual_card') . " WHERE card_id = '$id'"); $sql = 'DELETE FROM ' . $ecs->table('virtual_card') . " WHERE card_id = '$id'"; if ($db->query($sql, 'SILENT')) { /* 修改商品数量 */ update_goods_number($row['goods_id']); $url = 'virtual_card.php?act=query_card&' . str_replace('act=remove', '', $_SERVER['QUERY_STRING']); ecs_header("Location: $url\n"); exit; } else { make_json_error($db->error()); } } /*------------------------------------------------------ */ //-- 开始更改加密串:先检查原串和新串 /*------------------------------------------------------ */ elseif ($_REQUEST['act'] == 'start_change') { $old_key = json_str_iconv(trim($_GET['old_key'])); $new_key = json_str_iconv(trim($_GET['new_key'])); // 检查原加密串和新加密串是否相同 if ($old_key == $new_key || crc32($old_key) == crc32($new_key)) { make_json_error($GLOBALS['_LANG']['same_string']); } if ($old_key != AUTH_KEY) { make_json_error($GLOBALS['_LANG']['invalid_old_string']); } else { $f=ROOT_PATH . 'data/config.php'; file_put_contents($f,str_replace("'AUTH_KEY', '".AUTH_KEY."'","'AUTH_KEY', '".$new_key."'",file_get_contents($f))); file_put_contents($f,str_replace("'OLD_AUTH_KEY', '".OLD_AUTH_KEY."'","'OLD_AUTH_KEY', '".$old_key."'",file_get_contents($f))); @fclose($fp); } // 查询统计信息:总记录,使用原串的记录,使用新串的记录,使用未知串的记录 $stat = array('all' => 0, 'new' => 0, 'old' => 0, 'unknown' => 0); $sql = "SELECT crc32, count(*) AS cnt FROM " . $ecs->table('virtual_card') . " GROUP BY crc32"; $res = $GLOBALS['db']->query($sql); while ($row = $db->fetchRow($res)) { $stat['all'] += $row['cnt']; if (crc32($new_key) == $row['crc32']) { $stat['new'] += $row['cnt']; } elseif (crc32($old_key) == $row['crc32']) { $stat['old'] += $row['cnt']; } else { $stat['unknown'] += $row['cnt']; } } make_json_result(sprintf($GLOBALS['_LANG']['old_stat'], $stat['all'], $stat['new'], $stat['old'], $stat['unknown'])); } /*------------------------------------------------------ */ //-- 更新加密串 /*------------------------------------------------------ */ elseif ($_REQUEST['act'] == 'on_change') { // 重新加密卡号和密码 $each_num = 1; $old_crc32 = crc32(OLD_AUTH_KEY); $new_crc32 = crc32(AUTH_KEY); $updated = intval($_GET['updated']); $sql = "SELECT card_id, card_sn, card_password ". " FROM " . $ecs->table('virtual_card') . " WHERE crc32 = '$old_crc32' LIMIT $each_num"; $res = $db->query($sql); while ($row = $db->fetchRow($res)) { $row['card_sn'] = encrypt(decrypt($row['card_sn'], OLD_AUTH_KEY)); $row['card_password'] = encrypt(decrypt($row['card_password'], OLD_AUTH_KEY)); $row['crc32'] = $new_crc32; if (!$db->autoExecute($ecs->table('virtual_card'), $row, 'UPDATE', 'card_id = ' . $row['card_id'])) { make_json_error($updated, 0, $_LANG['update_error'] ."\n". $db->error()); } $updated++; } // 查询是否还有未更新的 $sql = "SELECT COUNT(*) FROM " . $ecs->table('virtual_card') . " WHERE crc32 = '$old_crc32' "; $left_num = $db->getOne($sql); if ($left_num > 0) { make_json_result($updated); } else { // 查询统计信息 $stat = array('new' => 0, 'unknown' => 0); $sql = "SELECT crc32, count(*) AS cnt FROM " . $GLOBALS['ecs']->table('virtual_card') . " GROUP BY crc32"; $res = $GLOBALS['db']->query($sql); while ($row = $db->fetchRow($res)) { if ($new_crc32 == $row['crc32']) { $stat['new'] += $row['cnt']; } else { $stat['unknown'] += $row['cnt']; } } make_json_result($updated, sprintf($_LANG['new_stat'], $stat['new'], $stat['unknown'])); } } /** * 返回补货列表 * * @return array */ function get_replenish_list() { /* 查询条件 */ $filter['goods_id'] = empty($_REQUEST['goods_id']) ? 0 : intval($_REQUEST['goods_id']); $filter['search_type'] = empty($_REQUEST['search_type']) ? 0 : trim($_REQUEST['search_type']); $filter['order_sn'] = empty($_REQUEST['order_sn']) ? 0 : trim($_REQUEST['order_sn']); $filter['keyword'] = empty($_REQUEST['keyword']) ? 0 : trim($_REQUEST['keyword']); if (isset($_REQUEST['is_ajax']) && $_REQUEST['is_ajax'] == 1) { $filter['keyword'] = json_str_iconv($filter['keyword']); } $filter['sort_by'] = empty($_REQUEST['sort_by']) ? 'card_id' : trim($_REQUEST['sort_by']); $filter['sort_order'] = empty($_REQUEST['sort_order']) ? 'DESC' : trim($_REQUEST['sort_order']); $where = (!empty($filter['goods_id'])) ? " AND goods_id = '" . $filter['goods_id'] . "' " : ''; $where .= (!empty($filter['order_sn'])) ? " AND order_sn LIKE '%" . mysql_like_quote($filter['order_sn']) . "%' " : ''; if (!empty($filter['keyword'])) { if ($filter['search_type'] == 'card_sn') { $where .= " AND card_sn = '" .encrypt($filter['keyword']). "'"; } else { $where .= " AND order_sn LIKE '%" . mysql_like_quote($filter['keyword']). "%' "; } } $sql = "SELECT COUNT(*) FROM " . $GLOBALS['ecs']->table('virtual_card') . " WHERE 1 $where"; $filter['record_count'] = $GLOBALS['db']->getOne($sql); /* 分页大小 */ $filter = page_and_size($filter); $start = ($filter['page'] - 1) * $filter['page_size']; /* 查询 */ $sql = "SELECT card_id, goods_id, card_sn, card_password, end_date, is_saled, order_sn, crc32 ". " FROM ".$GLOBALS['ecs']->table('virtual_card'). " WHERE 1 ".$where. " ORDER BY $filter[sort_by] $filter[sort_order] ". " LIMIT $start, $filter[page_size]"; $all = $GLOBALS['db']->getAll($sql); $arr = array(); foreach ($all AS $key => $row) { if ($row['crc32'] == 0 || $row['crc32'] == crc32(AUTH_KEY)) { $row['card_sn'] = decrypt($row['card_sn']); $row['card_password'] = decrypt($row['card_password']); } elseif ($row['crc32'] == crc32(OLD_AUTH_KEY)) { $row['card_sn'] = decrypt($row['card_sn'], OLD_AUTH_KEY); $row['card_password'] = decrypt($row['card_password'], OLD_AUTH_KEY); } else { $row['card_sn'] = '***'; $row['card_password'] = '***'; } $row['end_date'] = $row['end_date'] == 0 ? '' : date($GLOBALS['_CFG']['date_format'], $row['end_date']); $arr[] = $row; } return array('item' => $arr, 'filter' => $filter, 'page_count' => $filter['page_count'], 'record_count' => $filter['record_count']); } /** * 更新虚拟商品的商品数量 * * @access public * @param int $goods_id * * @return bool */ function update_goods_number($goods_id) { $sql = "SELECT COUNT(*) FROM " . $GLOBALS['ecs']->table('virtual_card') . " WHERE goods_id = '$goods_id' AND is_saled = 0"; $goods_number = $GLOBALS['db']->getOne($sql); $sql = "UPDATE " . $GLOBALS['ecs']->table('goods') . " SET goods_number = '$goods_number' WHERE goods_id = '$goods_id' AND extension_code='virtual_card'"; return $GLOBALS['db']->query($sql); } ?>