811 lines
29 KiB
PHP
811 lines
29 KiB
PHP
<?
|
||
if($_GET['act'] == 'chkserver') {
|
||
echo '{"status":1,"message":"ok","data":[]}';
|
||
exit;
|
||
}
|
||
//取餐客户端程序
|
||
require_once(dirname(__FILE__)."/common.php");
|
||
$act = trim($_GET['act']);
|
||
|
||
if(get_magic_quotes_gpc()) {
|
||
foreach($_POST as $key => $v) {
|
||
if(is_string($v)) $_POST[$key] = stripslashes($v);
|
||
}
|
||
foreach($_GET as $key => $v) {
|
||
if(is_string($v)) $_GET[$key] = stripslashes($v);
|
||
}
|
||
}
|
||
|
||
if(!in_array($act,array("sync","chkserver","syncorder","getConsumeList","getPeriodAmount","info"))) {
|
||
if($_SERVER["HTTP_GYHFTIPFSDX"]) {
|
||
$ip = trim(addslashes(current(explode(',', $_SERVER['HTTP_GYHFTIPFSDX']))));
|
||
} else {
|
||
$ip = $_SERVER["REMOTE_ADDR"];
|
||
}
|
||
$request = serialize($_REQUEST);
|
||
$now = date('Y-m-d H:i:s');
|
||
$sql = "insert into tb_chk_server_log(act,ip,request,record_datetime) values('".$act."','".$ip."','".$request."','".$now."')";
|
||
$db->query($sql);
|
||
}
|
||
|
||
|
||
switch($act) {
|
||
case "chkserver"://检查服务器连接
|
||
echoRs(1,"ok");
|
||
break;
|
||
case "sync": //接收客户端传送过来的数据:
|
||
$datas = file_get_contents('php://input');
|
||
$datas = json_decode($datas,true);
|
||
|
||
if(count($datas) < 1) {
|
||
echoRs(1,"ok");
|
||
exit;
|
||
}
|
||
|
||
$arr = array();
|
||
foreach($datas as $data) {
|
||
|
||
$mac = mysql_real_escape_string($data['mac']);
|
||
$dining_hall_id = intval($data['dining_hall_id']);
|
||
$channel_id = intval($data['channel_id']);
|
||
$type = $data['type'];
|
||
$code = mysql_real_escape_string($data['code']);
|
||
$recharge_amount = floatval($data['recharge_amount']);
|
||
$local_datetime = date("Y-m-d H:i:s",$data['local_datetime'] / 1000);
|
||
$local_id = mysql_real_escape_string($data['local_id']);
|
||
$order_id = intval($data['order_id']);
|
||
$take_food_time = mysql_real_escape_string($data['take_food_time']);
|
||
$take_type = mysql_real_escape_string($data['take_type']);
|
||
|
||
switch($data['local_type']) {
|
||
case "pay":
|
||
$rs = $db->get_one("select * from tb_recharge_local where local_id = '".$local_id."' and mac = '".$mac."'");
|
||
if(!$rs) {
|
||
switch($type) {
|
||
case "qr":
|
||
$type = 6;
|
||
break;
|
||
case "ic":
|
||
$type = "12";
|
||
break;
|
||
case "face":
|
||
$type = "15";
|
||
break;
|
||
}
|
||
|
||
$db->query("insert into tb_recharge_local(local_id,dining_hall_id,channel_id,mac,code,type,recharge_amount,local_datetime,record_datetime)
|
||
values('".$local_id."','".$dining_hall_id."','".$channel_id."','".$mac."','".$code."','".$type."','".$recharge_amount."','".$local_datetime."',now())
|
||
");
|
||
$result = 1;
|
||
} else {
|
||
$result = 2;
|
||
}
|
||
|
||
$arr[] = array(
|
||
'type' => 'pay',
|
||
'local_id' => $local_id,
|
||
'state_id' => $result,
|
||
);
|
||
break;
|
||
case "take":
|
||
$rs = $db->get_one("select * from tb_order_local where order_id = ".$order_id." and mac = '".$mac."'");
|
||
if(!$rs) {
|
||
$db->query("insert into tb_order_local(order_id,dining_hall_id,channel_id,mac,code,take_type,take_food_time,record_datetime)
|
||
values(".$order_id.",'".$dining_hall_id."','".$channel_id."','".$mac."','".$code."','".$take_type."','".$take_food_time."',now())
|
||
");
|
||
//echo "insert into tb_order_local(order_id,dining_hall_id,channel_id,mac,code,take_type,take_food_time,record_datetime)
|
||
// values(".$order_id.",'".$dining_hall_id."','".$channel_id."','".$mac."','".$code."','".$take_type."','".$take_food_time."',now())";
|
||
$result = 1;
|
||
} else {
|
||
$result = 2;
|
||
}
|
||
$arr[] = array(
|
||
'type' => 'take',
|
||
'order_id' => $order_id,
|
||
'state_id' => $result,
|
||
);
|
||
|
||
break;
|
||
}
|
||
//
|
||
}
|
||
echoRs(1,"ok",array('data' => $arr));
|
||
break;
|
||
case "info":
|
||
$custid = $_GET['custid'];
|
||
$custids = explode("-",$custid);
|
||
$company_id = intval($custids[1]);
|
||
|
||
$where = "";
|
||
if(count($custids) == 2) {
|
||
$company_id = intval($custids[1]);
|
||
$where .= " and company_id = ".$company_id;
|
||
|
||
}
|
||
if(count($custids) >= 3){
|
||
$dining_hall_id = intval($custids[2]);
|
||
$where .= " and id = ".$dining_hall_id;
|
||
$channel_id = intval($custids[3]);
|
||
}
|
||
|
||
$data = $ids = $channels = array();
|
||
|
||
//查询饭堂
|
||
$rs = $db->get_all("select * from tb_dining_hall where enabled = 1 ".$where);
|
||
if(empty($rs)){
|
||
echoRs(0,"暂没有对应饭堂信息",array('data' => $data));
|
||
}
|
||
|
||
if(count($custids) == 3){
|
||
$data['company_id'] = $rs[0]['company_id'];
|
||
}
|
||
// 取餐机是否展示自动页面
|
||
// $data['show_automatic'] = $rs[0]['company_id'] == '4142' ? 1 : 0;
|
||
// $data['show_automatic'] = 0;
|
||
|
||
// 先查看tb_pos_channel.show_automatic,再查tb_company.show_automatic
|
||
|
||
$show_automatic = null;
|
||
if(!empty($channel_id)){
|
||
$channelInfo = $db->get_one("select * from tb_pos_channel where enabled=1 and id='{$channel_id}'");
|
||
if($channelInfo['show_automatic'] !== null && $channelInfo['show_automatic'] !== ''){
|
||
$show_automatic = $channelInfo['show_automatic'];
|
||
}
|
||
}
|
||
if($show_automatic === null){
|
||
$companyInfo = $db->get_one("select * from tb_company where id='{$company_id}'");
|
||
if($companyInfo['show_automatic'] !== null && $companyInfo['show_automatic'] !== ''){
|
||
$show_automatic = $companyInfo['show_automatic'];
|
||
}
|
||
}
|
||
|
||
$data['show_automatic'] = $show_automatic !== null && $show_automatic !== '' ? $show_automatic : 1;
|
||
foreach($rs as $k => $v) {
|
||
$data['dining_hall_ids'][] = array(
|
||
'id' => $v['id'],
|
||
'name' => $v['name'],
|
||
'channel_ids' => '',
|
||
'pay_values' => $v['pay_values'],
|
||
);
|
||
$ids[] = $v['id'];
|
||
}
|
||
|
||
//查询消费设备
|
||
$rs = $db->get_all("select * from tb_pos_channel where dining_hall_id in (".implode(",",$ids).") and enabled = 1");
|
||
//echo "select * from tb_pos_channel where dining_hall_id in (".implode(",",$ids).") and enabled = 1";
|
||
foreach($rs as $k => $v) {
|
||
$channel_ids[$v['dining_hall_id']][] = array(
|
||
'channel_id' => $v['id'],
|
||
'channel_name' => $v['channel_name'],
|
||
);
|
||
}
|
||
|
||
foreach($data['dining_hall_ids'] as $k => $v) {
|
||
$data['dining_hall_ids'][$k]['channel_ids'] = $channel_ids[$v['id']];
|
||
}
|
||
|
||
//$tarr = $data;
|
||
//unset($data);
|
||
|
||
//$data['dining_hall_id'] = $tarr;
|
||
|
||
//获取刷卡消费间隔 默认20秒
|
||
$interval = "20";
|
||
$rs = $db->get_one("select * from tb_config where class='IDCARD_ONLINE_TIMEOUT'");
|
||
|
||
if($rs) $interval = $rs['value'];
|
||
$data['ic_interval'] = $interval;
|
||
|
||
echoRs(1,"ok",array('data' => $data));
|
||
|
||
break;
|
||
case "syncorder":
|
||
$channel_id = intval($_POST['channel_id']);
|
||
$dining_hall_id = intval($_POST['dining_hall_id']);
|
||
$min = intval($_POST['min']);
|
||
|
||
$max = intval($_POST['max']);
|
||
//print_r($_POST);
|
||
|
||
//查询合符时间的菜谱类型
|
||
$time = date("H:i:s");
|
||
$date_ids = array();
|
||
$rs = $db->get_all("select a.* from tb_meal_type a,tb_meal_type_dining_hall b where a.id = b.meal_type_id and b.dining_hall_id = ".$dining_hall_id);
|
||
foreach($rs as $k => $v) {
|
||
$hour = substr($v['end_time'],0,2);
|
||
$minute = substr($v['end_time'],2,6);
|
||
if($hour > 23) {
|
||
$dateadd = 1;
|
||
$v['end_time'] = ($hour - 24).$minute;
|
||
} else {
|
||
$dateadd = 0;
|
||
}
|
||
|
||
$date_ids[$v['id']] = array(
|
||
'dc_type' => $v['id'],
|
||
'dateadd' => $dateadd,
|
||
'start_time' => $v['start_time'],
|
||
'end_time' => $v['end_time'],
|
||
);;
|
||
}
|
||
$dc_date = date("Y-m-d",time() - 86400);
|
||
|
||
$where = "";
|
||
if($min >= 0 && $max > 0 && $min != $max) {
|
||
$where = " and a.id between ".$min." and ".$max;
|
||
}
|
||
if($min == $max) {
|
||
$where = " and a.id > ".$max;
|
||
}
|
||
|
||
$rs = $db->get_all("select a.*,d.dc_date,b.name,d.dc_type,c.username,f.name type_name from tb_order a ,tb_date d,tb_meal_type b,tb_user c,tb_user_type f where a.uid = c.id and a.date_id = d.id and d.dc_type = b.id and c.type_id = f.id and d.dining_hall_id = ".$dining_hall_id.$where." and d.dc_date > '".$dc_date."' and a.state_id in (6) order by a.id asc limit 50");
|
||
|
||
//echo "select a.*,d.dc_date,b.name,d.dc_type,c.username,c.deptname,c.cellphone,cardno,f.name type_name from tb_order a ,tb_date d,tb_meal_type b,tb_user c,tb_user_type f where a.uid = c.id and a.date_id = d.id and d.dc_type = b.id and c.type_id = f.id and d.dining_hall_id = ".$dining_hall_id.$where." and d.dc_date > '".$dc_date."' and a.state_id in (6) order by a.id asc limit 50";
|
||
//exit;
|
||
|
||
$user_ids = array(0);
|
||
$data = array();
|
||
$ids = array(0);
|
||
foreach($rs as $k => $v) {
|
||
if(!$v['take_food_code']) continue;
|
||
|
||
$end_date = date("Y-m-d",strtotime($v['dc_date']) + 86400 * $date_ids[$v['dc_type']]['dateadd']);
|
||
|
||
$data[] = array(
|
||
'take_food_code' => $v['take_food_code'],
|
||
'id' => $v['id'],
|
||
'dc_date' => $v['dc_date'],
|
||
'date_id' => $v['date_id'],
|
||
'meal_name' => $v['name'],
|
||
'start_time' => $v['dc_date']." ".$date_ids[$v['dc_type']]['start_time'],
|
||
'end_time' => $end_date." ".$date_ids[$v['dc_type']]['end_time'],
|
||
'username' => mb_substr($v['username'],0,1,"utf-8")."XXXX",
|
||
'cellphone' => '',
|
||
'user_type_name' => $v['type_name'],
|
||
'deptname' => '',
|
||
'cardno' => '',
|
||
'user_id' => $v['uid'],
|
||
);
|
||
|
||
$ids[] = $v['id'];
|
||
$user_ids[] = $v['uid'];
|
||
};
|
||
|
||
//匹配相关ic卡信息
|
||
$idcards = array();
|
||
$rs = $db->get_all("select user_id,group_concat(cardno) cardno from tb_user_idcard where user_id in (".implode(",",$user_ids).") and state = 1");
|
||
foreach($rs as $k => $v) {
|
||
$idcards[$v['user_id']] = $v['cardno'];
|
||
}
|
||
|
||
$faces = array();
|
||
$rs = $db->get_all("select user_id,card from tb_user_face where user_id in (".implode(",",$user_ids).")");
|
||
foreach($rs as $k => $v) {
|
||
$faces[$v['user_id']] = $v['card'];
|
||
}
|
||
|
||
$details = array();
|
||
$rs = $db->get_all("select a.dish_id,a.order_id,b.dish_name,a.dish_price,a.dish_amount,c.type_name from tb_order_detail a, tb_dish b,tb_dish_type c where a.dish_id = b.id and b.dish_type = c.id and a.order_id in (".implode(",",$ids).")");
|
||
//echo "select a.order_id,b.dish_name,a.dish_price,a.dish_amount,c.type_name from tb_order_detail a, tb_dish b,tb_dish_type c where a.dish_id = b.id and b.type_id = c.id and a.order_id in (".implode(",",$ids).")";exit;
|
||
foreach($rs as $k => $v) {
|
||
$details[$v['order_id']][] = array(
|
||
'dish_id' => $v['dish_id'],
|
||
'dish_name' => $v['dish_name'],
|
||
'dish_price' => $v['dish_price'],
|
||
'dish_amount' => $v['dish_amount'],
|
||
'type_name' => $v['type_name'],
|
||
);
|
||
}
|
||
|
||
foreach($data as $k => $v) {
|
||
$data[$k]['order_detail'] = $details[$v['id']];
|
||
$data[$k]['cardno'] = $idcards[$v['user_id']];
|
||
$data[$k]['face'] = $faces[$v['user_id']];
|
||
}
|
||
|
||
echoRs(1,"ok",array('data' => $data));
|
||
|
||
break;
|
||
case "income";
|
||
$dining_hall_id = intval($_POST['dining_hall_id']);
|
||
$channel_id = intval($_POST['channel_id']);
|
||
$channel_name = "";
|
||
|
||
$rs = $db->get_all("select sum(recharge_amount) recharge_amount,channel_id,b.name dining_hall_name,c.channel_name from tb_recharge a,tb_dining_hall b,tb_pos_channel c
|
||
where type in (6,12,15) and ftid = ".$dining_hall_id." and a.ftid = b.id and a.channel_id = c.id and record_datetime like '".date("Y-m-d")."%' group by a.channel_id
|
||
");
|
||
$income = $channel_income = 0;
|
||
foreach($rs as $k => $v) {
|
||
$income += abs(floatval($v['recharge_amount']));
|
||
$dining_hall_name = $v['dining_hall_name'];
|
||
|
||
if($channel_id == $v['channel_id']) {
|
||
$channel_income = abs(floatval($v['recharge_amount']));
|
||
$channel_name = $v['channel_name'];
|
||
}
|
||
|
||
}
|
||
|
||
if(!$channel_name && $channel_id) {
|
||
$rs = $db->get_one("select * from tb_pos_channel where id = ".$channel_id);
|
||
$channel_name = $rs['channel_name'];
|
||
}
|
||
|
||
$income = number_format($income,2,".","");
|
||
$channel_income = number_format($channel_income,2,".","");
|
||
|
||
$result = array(
|
||
'dining_hall_name' => $dining_hall_name,
|
||
'income' => $income,
|
||
'channel_name' => $channel_name,
|
||
'channel_income' => $channel_income,
|
||
'date' => date("Y-m-d"),
|
||
);
|
||
echoRs(1,"ok",array('data' => $result));
|
||
|
||
break;
|
||
case "icgetcode":
|
||
$dining_hall_id = intval($_POST['dining_hall_id']);
|
||
$cardno = htmlentities($_POST['cardno']);
|
||
|
||
$now = date("Y-m-d H:i:00");
|
||
|
||
$uInfo = $db->get_one("select a.id,a.username,a.cellphone,a.deptname,a.area_id from tb_user a,tb_user_idcard b where b.user_id=a.id and cardno='{$cardno}' and a.enabled in (1,-1) and b.state=1");
|
||
//echo "select a.id,a.username,a.cellphone,a.deptname,a.area_id from tb_user a,tb_user_idcard b where b.user_id=a.id and cardno='{$cardno}' and a.enabled not in (0, -99) and b.state=1";
|
||
if(!$uInfo) {
|
||
echoRs(0, '无效ic卡');
|
||
exit;
|
||
}
|
||
$GLOBALS['is_meal_to_time'] = 0;
|
||
$take_codes = get_take_info($dining_hall_id, $uInfo['id']);
|
||
$info = array('user' => array());
|
||
$info['take_code'] = "";
|
||
|
||
if($take_codes) $info['take_code'] = implode(",", $take_codes);
|
||
$is_meal_time = 0; // 到了取餐时间
|
||
if(empty($take_codes)){
|
||
// 获取今天是否有餐,而没到时间
|
||
$is_meal_time = $GLOBALS['is_meal_to_time'];
|
||
}else{
|
||
$is_meal_time = 1;
|
||
}
|
||
$info['is_meal_type'] = $is_meal_time;
|
||
$res['status'] = 1;
|
||
$res['message'] = 'ok';
|
||
$res['data'] = $info;
|
||
echo json_encode($res);
|
||
exit;
|
||
// echoRs(1, 'ok', array('data' => $info));
|
||
|
||
//列出订单详情
|
||
|
||
|
||
break;
|
||
case "facegetcode":
|
||
$facecard = trim($_POST['facecard']);
|
||
$dining_hall_id = trim($_POST['dining_hall_id']);
|
||
if(!$facecard || !$dining_hall_id) exit;
|
||
|
||
$uInfo = $db->get_one("select b.* from tb_user_face a, tb_user b where a.user_id=b.id and b.enabled = '1' and a.card='{$facecard}'");
|
||
if(!$uInfo) {
|
||
echoRs(0, 'nouser');
|
||
}
|
||
|
||
$GLOBALS['is_meal_to_time'] = 0;
|
||
$take_codes = get_take_info($dining_hall_id, $uInfo['id']);
|
||
$info = array('user' => array());
|
||
$info['take_code'] = "";
|
||
if($take_codes) $info['take_code'] = implode(",", $take_codes);
|
||
|
||
$is_meal_time = 0; // 到了取餐时间
|
||
if(empty($take_codes)){
|
||
// 获取今天是否有餐,而没到时间
|
||
$is_meal_time = $GLOBALS['is_meal_to_time'];
|
||
}else{
|
||
$is_meal_time = 1;
|
||
}
|
||
$info['is_meal_type'] = $is_meal_time;
|
||
$res['status'] = 1;
|
||
$res['message'] = 'ok';
|
||
$res['data'] = $info;
|
||
echo json_encode($res);
|
||
exit;
|
||
// echoRs(1, 'ok', array('data' => $info));
|
||
|
||
break;
|
||
case 'getConsumeList':
|
||
$channel_id = intval($_POST['channel_id']);
|
||
if(empty($channel_id)){
|
||
echoRs(0, '参数有误', array());
|
||
exit;
|
||
}
|
||
|
||
$chk_server_log_table = $db->get_one("show tables like 'tb_chk_server_log'");
|
||
if($chk_server_log_table){
|
||
// 同一个机器,不能连续请求
|
||
$timestamp = time() - 60;
|
||
$before_one_min = date('Y-m-d H:i:s', $timestamp);
|
||
$checkRequest = $db->get_one("select * from tb_chk_server_log where act='getConsumeList' and record_datetime>='{$before_one_min}' and channel_id='{$channel_id}'");
|
||
if($checkRequest){
|
||
echoRs(0, '一分钟内只能查询一次,请刷新或稍后再试', array());
|
||
exit;
|
||
}else{
|
||
if($_SERVER["HTTP_GYHFTIPFSDX"]) {
|
||
$ip = trim(addslashes(current(explode(',', $_SERVER['HTTP_GYHFTIPFSDX']))));
|
||
} else {
|
||
$ip = $_SERVER["REMOTE_ADDR"];
|
||
}
|
||
$request = serialize($_REQUEST);
|
||
$now = date('Y-m-d H:i:s');
|
||
$sql = "insert into tb_chk_server_log(act,ip,request,record_datetime,channel_id) values('".$act."','".$ip."','".$request."','".$now."', '".$channel_id."')";
|
||
$db->query($sql);
|
||
}
|
||
}
|
||
|
||
$all_consume_price = 0;
|
||
|
||
// 获取今天总的消费额(人脸和刷卡消费)
|
||
// $data = $db->get_one("select sum(recharge_amount) all_consume_price from tb_recharge
|
||
// where
|
||
// channel_id='{$channel_id}' and
|
||
// DATE_FORMAT(record_datetime,'%Y-%m-%d')=CURRENT_DATE and
|
||
// user_id>0 and
|
||
// type in (12,15)");
|
||
// DATE_FORMAT(record_datetime,'%Y-%m-%d')=CURRENT_DATE and
|
||
|
||
// 今天的全部消费记录,时间desc
|
||
$data = $db->get_all("select
|
||
a.id,
|
||
b.username,
|
||
a.recharge_amount,
|
||
a.record_datetime,
|
||
case a.type when '12' then '刷卡' when '15' then '人脸' when '6' then '付款码' end as consume_type
|
||
from tb_recharge a left join tb_user b on a.user_id=b.id
|
||
where
|
||
a.channel_id='{$channel_id}' and
|
||
record_datetime BETWEEN CURRENT_DATE and DATE_ADD(CURRENT_DATE,INTERVAL 1 day) and
|
||
user_id>0 and
|
||
type in (6,12,15)
|
||
order by record_datetime desc
|
||
");
|
||
|
||
$list = array();
|
||
foreach ($data as $k => $v){
|
||
$all_consume_price += abs($v['recharge_amount']);
|
||
if($k >= 50){
|
||
continue;
|
||
}
|
||
$list[] = $v;
|
||
}
|
||
|
||
foreach ($list as $k => $v){
|
||
$list[$k]['username'] = cutName($v['username']);
|
||
$list[$k]['recharge_amount'] = abs($v['recharge_amount']);
|
||
$list[$k]['record_datetime_short'] = explode(' ', $v['record_datetime'])[1];
|
||
}
|
||
|
||
$res['status'] = 1;
|
||
$res['message'] = "获取成功";
|
||
$res['data'] = array(
|
||
'all_consume_price' => abs($all_consume_price ? $all_consume_price : 0),
|
||
'consume_list' => $list
|
||
);
|
||
|
||
echo json_encode($res);
|
||
|
||
break;
|
||
|
||
case 'getPeriodAmount':
|
||
// 罗定邦竖屏机获取当前时间段的固定消费金额
|
||
$channel_id = intval($_POST['channel_id']);
|
||
$dining_hall_id = intval($_POST['dining_hall_id']);
|
||
if(empty($channel_id) || empty($dining_hall_id)){
|
||
echoRs(0, '参数有误', array());
|
||
exit;
|
||
}
|
||
|
||
$company = $db->get_one("select * from tb_dining_hall where id='{$dining_hall_id}' and enabled='1'");
|
||
if(empty($company)){
|
||
echoRs(0, '该饭堂不存在', array());
|
||
exit;
|
||
}
|
||
$company_id = $company['company_id'];
|
||
|
||
// $new_date = date('Y-m-d H:i:s');
|
||
// $new_time = date('H:i:s');
|
||
|
||
$info = $db->get_one("select * from tb_period_amount where company_id='{$company_id}' and dining_hall_id='{$dining_hall_id}' and channel_id like '%,{$channel_id},%' and (CURTIME() BETWEEN start_time and end_time) and status='1' order by id desc");
|
||
if(empty($info)){
|
||
echoRs(0, '暂没有可用的固定消费金额', array());
|
||
}
|
||
|
||
$res['status'] = 1;
|
||
$res['msg'] = "获取成功";
|
||
$res['data'] = array(
|
||
'price' => $info['price'],
|
||
);
|
||
echo json_encode($res);
|
||
break;
|
||
|
||
case "icUserInfo":
|
||
$cardno = htmlentities($_POST['cardno']);
|
||
|
||
$uInfo = $db->get_one("select a.id,a.username,a.cellphone,a.deptname,a.area_id from tb_user a,tb_user_idcard b where b.user_id=a.id and cardno='{$cardno}' and a.enabled in (1,-1) and b.state=1");
|
||
//echo "select a.id,a.username,a.cellphone,a.deptname,a.area_id from tb_user a,tb_user_idcard b where b.user_id=a.id and cardno='{$cardno}' and a.enabled != 0 and b.state=1";
|
||
if(!$uInfo) {
|
||
echoRs(0, '无效ic卡');
|
||
exit;
|
||
}
|
||
$info = array();
|
||
|
||
// 实验中学,增加用户信息(学生卡号,姓名,余额)
|
||
// if($UNIQUE_NAME == 'dlsyzx'){
|
||
// $ye = $db->get_one("select sum(account) total_account from tb_account where user_id='{$uInfo['id']}' group by user_id");
|
||
// $info['user'] = array(
|
||
// 'cardNo' => $cardno,
|
||
// 'username' => $uInfo['username'],
|
||
// 'ye' => $ye['total_account']
|
||
// );
|
||
// }
|
||
echoRs(1, 'ok', array('data' => $info));
|
||
break;
|
||
|
||
case "faceUserInfo":
|
||
$facecard = htmlentities($_POST['facecard']);
|
||
|
||
// $uInfo = $db->get_one("select a.id,a.username,a.cellphone,a.deptname,a.area_id from tb_user a,tb_user_idcard b where b.user_id=a.id and cardno='{$cardno}' and a.enabled in (1,-1) and b.state=1");
|
||
$uInfo = $db->get_one("select a.id,a.username,a.cellphone,a.deptname,a.area_id from tb_user a,tb_user_face b where b.user_id=a.id and b.card='{$facecard}' and a.enabled in (1,-1)");
|
||
//echo "select a.id,a.username,a.cellphone,a.deptname,a.area_id from tb_user a,tb_user_idcard b where b.user_id=a.id and cardno='{$cardno}' and a.enabled != 0 and b.state=1";
|
||
if(!$uInfo) {
|
||
echoRs(0, '无效人脸');
|
||
exit;
|
||
}
|
||
$info = array();
|
||
|
||
// 实验中学,增加用户信息(学生卡号,姓名,余额)
|
||
// if($UNIQUE_NAME == 'dlsyzx'){
|
||
// $ye = $db->get_one("select sum(account) total_account from tb_account where user_id='{$uInfo['id']}' group by user_id");
|
||
// $info['user'] = array(
|
||
// 'cardNo' => '',
|
||
// 'username' => $uInfo['username'],
|
||
// 'ye' => $ye['total_account']
|
||
// );
|
||
// }
|
||
echoRs(1, 'ok', array('data' => $info));
|
||
break;
|
||
|
||
case 'getMealOrPay':
|
||
$type = $_POST['type'];
|
||
$code = $_POST['code'];
|
||
$dining_hall_id = intval($_POST['dining_hall_id']);
|
||
$channel_id = intval($_POST['channel_id']);
|
||
|
||
$fee = '0.01';
|
||
|
||
if(empty($type) || empty($code)){
|
||
echoRs(0, '参数有误', array());
|
||
}
|
||
|
||
$host = $_SERVER['HTTP_HOST'];
|
||
$protocol = (!empty($_SERVER['HTTPS']) && $_SERVER['HTTPS'] !== 'off' || $_SERVER['SERVER_PORT'] == 443) ? "https://" : "http://";
|
||
|
||
// 获取 订餐的情况
|
||
if($type == 'ic'){
|
||
$info = gquery("{$protocol}{$host}/show/chkserver.php?act=icgetcode", array(
|
||
'dining_hall_id' => $dining_hall_id,
|
||
'cardno' => $code,
|
||
));
|
||
$info = json_decode($info, 1);
|
||
if($info['status'] == 1){
|
||
if($info['data']['take_code'] && count($info['data']['take_code']) > 0){
|
||
$info['payType'] = 'qc';
|
||
echo json_encode($info);
|
||
exit;
|
||
}
|
||
}else{
|
||
echo json_encode($info);
|
||
exit;
|
||
}
|
||
|
||
}elseif($type == 'face'){
|
||
$info = gquery("{$protocol}{$host}/show/chkserver.php?act=facegetcode", array(
|
||
'dining_hall_id' => $dining_hall_id,
|
||
'facecard' => $code,
|
||
));
|
||
$info = json_decode($info, 1);
|
||
if($info['status'] == 1){
|
||
if($info['data']['take_code'] && count($info['data']['take_code']) > 0){
|
||
$info['payType'] = 'qc';
|
||
echo json_encode($info);
|
||
exit;
|
||
}
|
||
}else{
|
||
echo json_encode($info);
|
||
exit;
|
||
}
|
||
|
||
}elseif($type == 'qr'){
|
||
// 判断是否取餐码
|
||
$qcRow = $db->get_one("select * from tb_order where take_food_code='{$code}'");
|
||
$user_id = 0;
|
||
if($qcRow){
|
||
// 是取餐码
|
||
$user_id = $qcRow['uid'];
|
||
$date_id = $qcRow['date_id'];
|
||
$take_codes = get_take_info($dining_hall_id,$user_id);
|
||
if(in_array($code, $take_codes)){
|
||
$info['take_code'] = implode(",", $take_codes);
|
||
if($take_codes && count($take_codes) > 0){
|
||
echoRs(1, '取餐成功', array('data' => $info, 'payType' => 'qc'));
|
||
}else{
|
||
echoRs(0, '当前暂无餐可取');
|
||
}
|
||
}else{
|
||
// 没到取餐时间
|
||
echoRs(0, '当前暂无餐可取');
|
||
}
|
||
}
|
||
// 不是取餐码,直接往下走 现场支付
|
||
// ------------------------------------------------
|
||
// // 读取二维码,获取人的信息
|
||
$row = $db->get_one("select * from tb_payqr where code = '{$code}'");
|
||
// and oid=0 and expire>".time()
|
||
if($row){
|
||
$user_id = $row['uid'];
|
||
if($row['oid'] != 0){
|
||
echoRs(0, '付款码已过期或已使用');
|
||
}
|
||
if(time() > $row['expire']){
|
||
echoRs(0, '付款码已过期');
|
||
}
|
||
$take_codes = get_take_info($dining_hall_id,$user_id);
|
||
if(!empty($take_codes) && count($take_codes) > 0){
|
||
// 有取餐码
|
||
$info['take_code'] = implode(",", $take_codes);
|
||
echoRs(1, 'ok', array('data' => $info, 'payType' => 'qc'));
|
||
}
|
||
}
|
||
if($user_id == 0){
|
||
echoRs(0, '二维码无效');
|
||
}
|
||
|
||
// if($row) {
|
||
// $uid = $row['uid'];
|
||
// $row2 = $db->get_one("select * from tb_payqr where uid = {$uid} and oid=0 order by expire desc limit 1");
|
||
// if($row['code'] != $row2['code']){
|
||
// echoRs(0, 'ok', array());
|
||
// };
|
||
// }
|
||
// $user_id = $row['uid'];
|
||
// // 获取用户的取餐信息
|
||
// $take_codes = get_take_info($dining_hall_id,$user_id);
|
||
// $info = array('user' => array());
|
||
// $info['take_code'] = "";
|
||
// if($take_codes) {
|
||
// $info['take_code'] = implode(",", $take_codes);
|
||
// }
|
||
// if($take_codes && count($info['take_code']) > 0){
|
||
// echoRs(1, 'ok', array('data' => $info));
|
||
// exit;
|
||
// }
|
||
}
|
||
// 没有取餐信息,现场支付
|
||
$payInfo = gquery("{$protocol}{$host}/api/user/qrpay", array(
|
||
'ftid' => $dining_hall_id,
|
||
'channelid' => $channel_id,
|
||
'fee' => $fee,
|
||
'code' => $code,
|
||
'type' => $type
|
||
));
|
||
$payInfo = json_decode($payInfo, 1);
|
||
$payInfo['payType'] = 'qrpay';
|
||
if(isset($payInfo['data']['name']) && $payInfo['data']['name'] != ''){
|
||
$payInfo['data']['name'] = cutName($payInfo['data']['name']);
|
||
}
|
||
echo json_encode($payInfo);
|
||
exit;
|
||
break;
|
||
|
||
case 'getLastMeal':
|
||
// 获取最新的菜品数据
|
||
$dining_hall_id = intval($_POST['dining_hall_id']);
|
||
$channel_id = intval($_POST['channel_id']);
|
||
$userid = intval($_POST['user_id']);
|
||
|
||
$chk_server_log_table = $db->get_one("show tables like 'tb_chk_server_log'");
|
||
if($chk_server_log_table){
|
||
$REST_MEAL_QUERY_TIME = $db->get_one("select * from tb_config where class='REST_MEAL_QUERY_TIME'");
|
||
$REST_MEAL_QUERY_TIME = isset($REST_MEAL_QUERY_TIME['value']) ? $REST_MEAL_QUERY_TIME['value'] : 60;
|
||
if($REST_MEAL_QUERY_TIME == 0){
|
||
echoRs(-1, '停用实时查询剩余菜品', array());
|
||
exit;
|
||
}
|
||
// 同一个机器,不能连续请求 (给2秒延迟)
|
||
$timestamp = time() - $REST_MEAL_QUERY_TIME + 2 ;
|
||
$before_one_min = date('Y-m-d H:i:s', $timestamp);
|
||
$checkRequest = $db->get_one("select * from tb_chk_server_log where act='getLastMeal' and record_datetime>='{$before_one_min}' and channel_id='{$channel_id}'");
|
||
if($checkRequest){
|
||
echoRs(0, $REST_MEAL_QUERY_TIME.'秒内只能查询一次,请刷新或稍后再试', array());
|
||
exit;
|
||
}else{
|
||
if($_SERVER["HTTP_GYHFTIPFSDX"]) {
|
||
$ip = trim(addslashes(current(explode(',', $_SERVER['HTTP_GYHFTIPFSDX']))));
|
||
} else {
|
||
$ip = $_SERVER["REMOTE_ADDR"];
|
||
}
|
||
$request = serialize($_REQUEST);
|
||
$now = date('Y-m-d H:i:s');
|
||
$sql = "insert into tb_chk_server_log(act,ip,request,record_datetime,channel_id) values('".$act."','".$ip."','".$request."','".$now."', '".$channel_id."')";
|
||
$db->query($sql);
|
||
}
|
||
}
|
||
|
||
|
||
$GLOBALS['current_date_id'] = 0;
|
||
get_take_info($dining_hall_id, $userid);
|
||
$date_id = $GLOBALS['current_date_id'];
|
||
$sql = "select c.id, c.dish_name, IFNULL(sum(b.dish_amount), 0) rest_num from (select c.id, c.dish_name from tb_dish c, tb_date_dish e where c.id = e.dish_id and e.date_id={$date_id} and c.dish_type not in (" . USER_DISHES_TYPE_OFFICIAL1 . "," . USER_DISHES_TYPE_OFFICIAL2 . ")) c
|
||
LEFT JOIN (select b.id, b.dish_id, b.dish_amount from tb_order a, tb_order_detail b where date_id = {$date_id} and a.id = b.order_id and a.state_id=" . ORDER_STATE_ORDERED . " and a.type=" . DISHES_TYPE_COMMON . " ) b
|
||
on b.dish_id = c.id
|
||
group by c.id";
|
||
$rest_info['rest_info'] = $db->get_all($sql);
|
||
|
||
// 是否开启实时剩余菜品
|
||
$REST_MEAL_QUERY_TIME = $db->get_one("select * from tb_config where class='REST_MEAL_QUERY_TIME'");
|
||
$rest_info['restMealQueryTime'] = isset($REST_MEAL_QUERY_TIME['value']) ? intval($REST_MEAL_QUERY_TIME['value']) * 1000 : 0;
|
||
echoRs(1, '获取成功', array('data' => $rest_info));
|
||
break;
|
||
}
|
||
|
||
function get_take_info($dining_hall_id, $userid)
|
||
{
|
||
global $db;
|
||
$today = time();
|
||
|
||
$dates = get_today_dates($dining_hall_id);
|
||
$take_codes = array();
|
||
$uInfo = $db->get_one("select * from tb_user where id=".intval($userid));
|
||
$user_type = $uInfo['type_id'];
|
||
foreach($dates as $date) {
|
||
$dc_type = $date['dc_type'];
|
||
$meal_info = $db->get_one("select * from tb_meal_type where status=1 and id=".intval($dc_type));
|
||
$start_time = $meal_info['start_time'];
|
||
$end_time = $meal_info['end_time'];
|
||
$nowtime = date('H:i');
|
||
$GLOBALS['current_date_id'] = $date['id'];
|
||
|
||
$meal_info2 = $db->get_one("select * from tb_meal_type_user_time where meal_type_id={$dc_type} and user_type_id=".intval($user_type));
|
||
if($meal_info2) {
|
||
$start_time = $meal_info2['start_time'];
|
||
$end_time = $meal_info2['end_time'];
|
||
}
|
||
if( $nowtime >= $start_time && $nowtime < $end_time) {
|
||
$GLOBALS['is_meal_to_time'] = 1;
|
||
$GLOBALS['current_date_id'] = $date['id'];
|
||
$order = $db->get_one("select a.* from tb_order a where uid = {$userid} and type=1 and date_id=".$date['id']." and state_id in (6)");
|
||
if(!$order) $order = $db->get_one("select a.* from tb_order a where uid = {$userid} and type=1 and date_id=".$date['id']." and state_id in (3)");
|
||
if ($order) {
|
||
$take_code = $order['take_food_code'];
|
||
$take_codes[] = $take_code;
|
||
}
|
||
}
|
||
|
||
}
|
||
return $take_codes;
|
||
}
|
||
|
||
function get_today_dates($dining_hall_id)
|
||
{
|
||
global $db;
|
||
$data = $db->get_all("select * from tb_date where dining_hall_id={$dining_hall_id} and dc_date = '".date("Y-m-d")."'");
|
||
$nowtime = date('H:i');
|
||
$all = array();
|
||
//foreach($data as $item) {
|
||
//
|
||
|
||
//}
|
||
|
||
return $data;
|
||
}
|
||
?>
|