/** * 文本分词 * @param string $text 需要分词的文本 * @param int $num 返回分词数量 * @return array */ public static function segment($text, $num = 10) { $list = array(); if (empty($text)) { return $list; } $cmd = "/usr/local/scws/bin/scws -i \"{$text}\" -c utf8 -d /srv/o2o/system/scws/add_dict.txt:/srv/o2o/system/scws/n_dict.utf8.xdb -M 2 -r /srv/o2o/system/scws/rules.utf8.ini"; save_debug_log("fenci cmd", "{$cmd}"); exec($cmd, $list); // //检测是否已安装php_scws扩展 // if(function_exists("scws_open")) // { //// $sh = scws_open(); //// scws_set_charset($sh,'utf8'); //// scws_set_duality(0); //// scws_set_dict($sh,APP_ROOT_PATH.'system/scws/n_dict.utf8.xdb'); //// scws_set_rule($sh,APP_ROOT_PATH.'system/scws/rules.utf8.ini'); //// scws_set_ignore($sh,true); //// scws_send_text($sh, $text); //// $words = scws_get_tops($sh, $num); //// scws_close($sh); // // } // else // { // require_once APP_ROOT_PATH.'system/scws/pscws4.class.php'; // $pscws = new PSCWS4(); // $pscws->set_duality(0); // $pscws->set_dict(APP_ROOT_PATH.'system/scws/n_dict.utf8.xdb'); // $pscws->set_rule(APP_ROOT_PATH.'system/scws/rules.utf8.ini'); // $pscws->set_ignore(true); // $pscws->send_text($text); // $words = $pscws->get_tops($num); // $pscws->close(); // } // // foreach($words as $word) // { // $list[] = $word['word']; // } $list_arr = explode(" ", $list[0]); return $list_arr; }
public function order_done() { save_debug_log('order_done', 'request:' . json_encode($_REQUEST)); $user_info = $GLOBALS['user_info']; $id = intval($_REQUEST['id']); //订单号 $order = $GLOBALS['db']->getRow("select * from " . DB_PREFIX . "deal_order where id = " . $id . " and is_delete = 0"); if (!$order) { showErr($GLOBALS['lang']['INVALID_ORDER_DATA']); } $region4_id = intval($_REQUEST['region_lv4']); $region3_id = intval($_REQUEST['region_lv3']); $region2_id = intval($_REQUEST['region_lv2']); $region1_id = intval($_REQUEST['region_lv1']); if ($region4_id == 0) { if ($region3_id == 0) { if ($region2_id == 0) { $region_id = $region1_id; } else { $region_id = $region2_id; } } else { $region_id = $region3_id; } } else { $region_id = $region4_id; } $delivery_id = intval($_REQUEST['delivery']); $payment = intval($_REQUEST['payment']); $account_money = floatval($_REQUEST['account_money']); $all_account_money = intval($_REQUEST['all_account_money']); $ecvsn = $_REQUEST['ecvsn'] ? addslashes(trim($_REQUEST['ecvsn'])) : ''; $ecvpassword = $_REQUEST['ecvpassword'] ? addslashes(trim($_REQUEST['ecvpassword'])) : ''; $goods_list = $GLOBALS['db']->getAll("select * from " . DB_PREFIX . "deal_order_item where order_id = " . $order['id']); //验证购物车 if (!$user_info) { showErr($GLOBALS['lang']['PLEASE_LOGIN_FIRST'], 0, url("shop", "user#login")); } //验证支付方式的支持 foreach ($goods_list as $k => $row) { if ($GLOBALS['db']->getOne("select define_payment from " . DB_PREFIX . "deal where id = " . $row['deal_id']) == 1) { if ($GLOBALS['db']->getOne("select count(*) from " . DB_PREFIX . "deal_payment where deal_id = " . $row['deal_id'] . " and payment_id = " . $payment)) { showErr($GLOBALS['lang']['INVALID_PAYMENT'], $ajax); } } } //结束验证购物车 //开始验证订单接交信息 require_once APP_ROOT_PATH . "system/libs/cart.php"; $data = count_buy_total($region_id, $delivery_id, $payment, $account_money, $all_account_money, $ecvsn, $ecvpassword, $goods_list, $order['account_money'], $order['ecv_money']); if ($data['is_delivery'] == 1) { //配送验证 if (!$data['region_info'] || $data['region_info']['region_level'] != 4) { showErr($GLOBALS['lang']['FILL_CORRECT_CONSIGNEE_ADDRESS']); } if (trim($_REQUEST['consignee']) == '') { showErr($GLOBALS['lang']['FILL_CORRECT_CONSIGNEE']); } if (trim($_REQUEST['address']) == '') { showErr($GLOBALS['lang']['FILL_CORRECT_ADDRESS']); } // if(trim($_REQUEST['zip'])=='') // { // showErr($GLOBALS['lang']['FILL_CORRECT_ZIP']); // } if (trim($_REQUEST['mobile']) == '') { showErr($GLOBALS['lang']['FILL_MOBILE_PHONE']); } if (!check_mobile(trim($_REQUEST['mobile']))) { showErr($GLOBALS['lang']['FILL_CORRECT_MOBILE_PHONE']); } // if(!$data['delivery_info']) // { // showErr($GLOBALS['lang']['PLEASE_SELECT_DELIVERY']); // } } if (round($data['pay_price'], 4) > 0 && !$data['payment_info']) { showErr($GLOBALS['lang']['PLEASE_SELECT_PAYMENT']); } //结束验证订单接交信息 //开始修正订单 $now = get_gmtime(); $order['total_price'] = $data['pay_total_price']; //应付总额 商品价 - 会员折扣 + 运费 + 支付手续费 $order['memo'] = htmlspecialchars(trim($_REQUEST['memo'])); $order['region_lv1'] = intval($_REQUEST['region_lv1']); $order['region_lv2'] = intval($_REQUEST['region_lv2']); $order['region_lv3'] = intval($_REQUEST['region_lv3']); $order['region_lv4'] = intval($_REQUEST['region_lv4']); $order['address'] = htmlspecialchars(addslashes(trim($_REQUEST['address']))); $order['mobile'] = htmlspecialchars(addslashes(trim($_REQUEST['mobile']))); $order['consignee'] = htmlspecialchars(addslashes(trim($_REQUEST['consignee']))); $order['zip'] = htmlspecialchars(addslashes(trim($_REQUEST['zip']))); $order['delivery_fee'] = $data['delivery_fee']; $order['delivery_id'] = $data['delivery_info']['id']; $order['payment_id'] = $data['payment_info']['id']; $order['payment_fee'] = $data['payment_fee']; $order['discount_price'] = $data['user_discount']; $order['bank_id'] = htmlspecialchars(addslashes(trim($_REQUEST['bank_id']))); $order['promote_description'] = ""; foreach ($data['promote_description'] as $promote_item) { $order['promote_description'] .= $promote_item . "<br />"; } $coupon_mobile = htmlspecialchars(addslashes(trim($_REQUEST['coupon_mobile']))); $user_info = es_session::get("user_info"); if ($coupon_mobile != '') { $GLOBALS['db']->query("update " . DB_PREFIX . "user set mobile = '" . $coupon_mobile . "' where id = " . intval($user_info['id'])); } $GLOBALS['db']->autoExecute(DB_PREFIX . "deal_order", $order, 'UPDATE', 'id=' . $order['id'], 'SILENT'); if ($data['is_delivery'] == 1) { //保存收款人 $user_consignee = $GLOBALS['db']->getRow("select * from " . DB_PREFIX . "user_consignee where user_id = " . $order['user_id'] . " order by id desc"); $user_consignee['region_lv1'] = intval($_REQUEST['region_lv1']); $user_consignee['region_lv2'] = intval($_REQUEST['region_lv2']); $user_consignee['region_lv3'] = intval($_REQUEST['region_lv3']); $user_consignee['region_lv4'] = intval($_REQUEST['region_lv4']); $user_consignee['address'] = htmlspecialchars(addslashes(trim($_REQUEST['address']))); $user_consignee['mobile'] = htmlspecialchars(addslashes(trim($_REQUEST['mobile']))); $user_consignee['consignee'] = htmlspecialchars(addslashes(trim($_REQUEST['consignee']))); $user_consignee['zip'] = htmlspecialchars(addslashes(trim($_REQUEST['zip']))); $user_consignee['user_id'] = $order['user_id']; if (intval($user_consignee['id']) == 0) { //新增 $GLOBALS['db']->autoExecute(DB_PREFIX . "user_consignee", $user_consignee, 'INSERT', '', 'SILENT'); } else { //更新 $GLOBALS['db']->autoExecute(DB_PREFIX . "user_consignee", $user_consignee, 'UPDATE', 'id=' . $user_consignee['id'], 'SILENT'); } } //生成order_id 后 //1. 余额支付 $account_money = $data['account_money']; if (floatval($account_money) > 0) { $account_payment_id = $GLOBALS['db']->getOne("select id from " . DB_PREFIX . "payment where class_name = 'Account'"); $payment_notice_id = make_payment_notice($account_money, $order['id'], $account_payment_id); require_once APP_ROOT_PATH . "system/payment/Account_payment.php"; $account_payment = new Account_payment(); $account_payment->get_payment_code($payment_notice_id); } //3. 相应的支付接口 $payment_info = $data['payment_info']; if ($payment_info && $data['pay_price'] > 0) { $payment_notice_id = make_payment_notice($data['pay_price'], $order['id'], $payment_info['id']); //创建支付接口的付款单 } $rs = order_paid($order['id']); if ($rs) { app_redirect(url("shop", "payment#done", array("id" => $order['id']))); //支付成功 } else { app_redirect(url("shop", "payment#pay", array("id" => $payment_notice_id))); } }
function order_paid($order_id) { $order_id = intval($order_id); $order = $GLOBALS['db']->getRow("select * from " . DB_PREFIX . "deal_order where id = " . $order_id); if ($order['pay_amount'] >= $order['total_price']) { $sql = "update " . DB_PREFIX . "deal_order set pay_status = 2 where id =" . $order_id . " and pay_status <> 2"; $GLOBALS['db']->query($sql); save_debug_log('order_paid update sql', $sql); $rs = $GLOBALS['db']->affected_rows(); if ($rs) { make_deal_sn_and_send_msg($order_id); save_debug_log('order_paid', 'rs' . $rs . 'order_id:' . $order_id); //支付完成 order_paid_done($order_id); save_debug_log('order_paid_done', 'rs' . $rs . 'order_id:' . $order_id); $order = $GLOBALS['db']->getRow("select * from " . DB_PREFIX . "deal_order where id = " . $order_id); if ($order['pay_status'] == 2 && $order['after_sale'] == 0) { $result = true; } else { $result = false; } } } elseif ($order['pay_amount'] < $order['total_price'] && $order['pay_amount'] != 0) { $GLOBALS['db']->query("update " . DB_PREFIX . "deal_order set pay_status = 1 where id =" . $order_id); $result = false; //订单未支付成功 } elseif ($order['pay_amount'] == 0) { $GLOBALS['db']->query("update " . DB_PREFIX . "deal_order set pay_status = 0 where id =" . $order_id); $result = false; //订单未支付成功 } return $result; }
public function shop() { //分类 $cate_tree = M("ShopCate")->where('is_delete = 0')->findAll(); $cate_tree = D("ShopCate")->toFormatTree($cate_tree, 'name'); $this->assign("cate_tree", $cate_tree); //输出团购城市 $city_list = M("DealCity")->where('is_delete = 0')->findAll(); $city_list = D("DealCity")->toFormatTree($city_list, 'name'); $this->assign("city_list", $city_list); //输出品牌 $brand_list = M("Brand")->findAll(); $this->assign("brand_list", $brand_list); //开始加载搜索条件 if (intval($_REQUEST['id']) > 0) { $map['id'] = intval($_REQUEST['id']); } $map['is_delete'] = 0; if (trim($_REQUEST['name']) != '') { $map['name'] = array('like', '%' . trim($_REQUEST['name']) . '%'); } if (intval($_REQUEST['city_id']) > 0) { require_once APP_ROOT_PATH . "system/utils/child.php"; $child = new Child("deal_city"); $city_ids = $child->getChildIds(intval($_REQUEST['city_id'])); $city_ids[] = intval($_REQUEST['city_id']); $map['city_id'] = array("in", $city_ids); } if (intval($_REQUEST['cate_id']) > 0) { require_once APP_ROOT_PATH . "system/utils/child.php"; $child = new Child("shop_cate"); $cate_ids = $child->getChildIds(intval($_REQUEST['cate_id'])); $cate_ids[] = intval($_REQUEST['cate_id']); $map['shop_cate_id'] = array("in", $cate_ids); } //是否将过期 if (intval($_REQUEST['going_expire']) == 1) { $map['end_time'] = array("between", array(time(), time() + 86400)); } if (intval($_REQUEST['brand_id']) > 0) { $map['brand_id'] = intval($_REQUEST['brand_id']); } $map['publish_wait'] = 0; $map['is_shop'] = 1; save_debug_log('shop', 'map:' . json_encode($map)); if (method_exists($this, '_filter')) { $this->_filter($map); } $name = $this->getActionName(); $model = D($name); if (!empty($model)) { $this->_list($model, $map); } $this->display(); return; }
public function response() { save_debug_log('payment response', 'request' . json_encode($_REQUEST)); //支付跳转返回页 if ($GLOBALS['pay_req']['class_name']) { $_REQUEST['class_name'] = $GLOBALS['pay_req']['class_name']; } $class_name = addslashes(trim($_REQUEST['class_name'])); $payment_info = $GLOBALS['db']->getRow("select * from " . DB_PREFIX . "payment where class_name = '" . $class_name . "'"); if ($payment_info) { require_once APP_ROOT_PATH . "system/payment/" . $payment_info['class_name'] . "_payment.php"; $payment_class = $payment_info['class_name'] . "_payment"; $payment_object = new $payment_class(); adddeepslashes($_REQUEST); save_debug_log('payment response', '$payment_class' . $payment_class); $payment_code = $payment_object->response($_REQUEST); } else { showErr($GLOBALS['lang']['PAYMENT_NOT_EXIST']); } }
public function deal_index() { $reminder = M("RemindCount")->find(); $reminder['order_count_time'] = get_gmtime(); $reminder['refund_count_time'] = get_gmtime(); $reminder['retake_count_time'] = get_gmtime(); M("RemindCount")->save($reminder); //处理-1情况的select if (!isset($_REQUEST['pay_status'])) { $_REQUEST['pay_status'] = -1; } if (!isset($_REQUEST['delivery_status'])) { $_REQUEST['delivery_status'] = -1; } if (!isset($_REQUEST['extra_status'])) { $_REQUEST['extra_status'] = -1; } if (!isset($_REQUEST['after_sale'])) { $_REQUEST['after_sale'] = -1; } if (!isset($_REQUEST['delivery_region_id'])) { $_REQUEST['delivery_region_id'] = -1; } $where = " 1=1 "; if (intval($_REQUEST['id']) > 0) { $where .= " and id = " . intval($_REQUEST['id']); } //定义条件 if (isset($_REQUEST['referer']) && trim($_REQUEST['referer']) != '') { $where .= " and " . DB_PREFIX . "deal_order.referer = '" . trim($_REQUEST['referer']) . "'"; } if (trim($_REQUEST['user_name']) != '') { $where .= " and " . DB_PREFIX . "deal_order.user_name like '%" . trim($_REQUEST['user_name']) . "%'"; } if (intval($_REQUEST['deal_id']) > 0) { $where .= " and (" . DB_PREFIX . "deal_order.deal_ids = " . intval($_REQUEST['deal_id']) . " or deal_ids like '%" . intval($_REQUEST['deal_id']) . ",%' or deal_ids like '%," . intval($_REQUEST['deal_id']) . "' or deal_ids like '%," . intval($_REQUEST['deal_id']) . ",%')"; } $where .= " and " . DB_PREFIX . "deal_order.is_delete = 0 "; $where .= " and " . DB_PREFIX . "deal_order.type = 0 "; if (trim($_REQUEST['order_sn']) != '') { $where .= " and " . DB_PREFIX . "deal_order.order_sn like '%" . trim($_REQUEST['order_sn']) . "%' "; } if (intval($_REQUEST['pay_status']) >= 0) { $where .= " and " . DB_PREFIX . "deal_order.pay_status = " . intval($_REQUEST['pay_status']); } if (intval($_REQUEST['delivery_status']) >= 0) { $where .= " and " . DB_PREFIX . "deal_order.delivery_status = " . intval($_REQUEST['delivery_status']); } if (intval($_REQUEST['extra_status']) >= 0) { $where .= " and " . DB_PREFIX . "deal_order.extra_status = " . intval($_REQUEST['extra_status']); } if (intval($_REQUEST['after_sale']) >= 0) { $where .= " and " . DB_PREFIX . "deal_order.after_sale = " . intval($_REQUEST['after_sale']); } save_debug_log('deal_index where', $where); if (intval($_REQUEST['delivery_region_id']) >= 0) { $region = $GLOBALS['db']->getOne("select region_level from " . DB_PREFIX . "delivery_region where id=" . $_REQUEST['delivery_region_id']); if ($region > 0) { $where .= " and " . DB_PREFIX . "deal_order.region_lv{$region} = " . intval($_REQUEST['delivery_region_id']); } } save_debug_log('deal_index where', $where); //关于列表数据的输出 if (isset($_REQUEST['_order'])) { $order = DB_PREFIX . 'deal_order.' . $_REQUEST['_order']; } else { $order = !empty($sortBy) ? $sortBy : DB_PREFIX . 'deal_order.id'; } //排序方式默认按照倒序排列 //接受 sost参数 0 表示倒序 非0都 表示正序 if (isset($_REQUEST['_sort'])) { $sort = $_REQUEST['_sort'] ? 'asc' : 'desc'; } else { $sort = $asc ? 'asc' : 'desc'; } //取得满足条件的记录数 $count = M("DealOrder")->where($where)->count(); if ($count > 0) { //创建分页对象 if (!empty($_REQUEST['listRows'])) { $listRows = $_REQUEST['listRows']; } else { $listRows = ''; } $p = new Page($count, $listRows); //分页查询数据 $voList = M("DealOrder")->where($where)->field(DB_PREFIX . 'deal_order.*')->order($order . " " . $sort)->limit($p->firstRow . ',' . $p->listRows)->findAll(); //分页跳转的时候保证查询条件 foreach ($map as $key => $val) { if (!is_array($val)) { $p->parameter .= "{$key}=" . urlencode($val) . "&"; } } //分页显示 $page = $p->show(); //列表排序显示 $sortImg = $sort; //排序图标 $sortAlt = $sort == 'desc' ? l("ASC_SORT") : l("DESC_SORT"); //排序提示 $sort = $sort == 'desc' ? 1 : 0; //排序方式 //模板赋值显示 $this->assign('list', $voList); $this->assign('sort', $sort); $this->assign('order', $_REQUEST['_order'] ? $_REQUEST['_order'] : 'id'); $this->assign('sortImg', $sortImg); $this->assign('sortType', $sortAlt); $this->assign("page", $page); $this->assign("nowPage", $p->nowPage); } //输出地区列表 $delivery_region_list = M("DeliveryRegion")->where("region_level>=3")->findAll(); $this->assign("delivery_region_list", $delivery_region_list); //输出快递接口 $express_list = M("Express")->where("is_effect = 1")->findAll(); $this->assign("express_list", $express_list); //end $this->display(); return; }
public function do_send_goods($payment_notice_id, $delivery_notice_sn) { save_debug_log('Alipay_payment do_send_goods', 'payment_notice_id,delivery_notice_sn:' . $payment_notice_id, $delivery_notice_sn); require_once APP_ROOT_PATH . "system/utils/XmlBase.php"; $payment_notice = $GLOBALS['db']->getRow("select * from " . DB_PREFIX . "payment_notice where id = " . $payment_notice_id); $order_info = $GLOBALS['db']->getRow("select * from " . DB_PREFIX . "deal_order where id = " . $payment_notice['order_id']); $payment = $GLOBALS['db']->getRow("select id,config from " . DB_PREFIX . "payment where class_name='Alipay'"); $payment['config'] = unserialize($payment['config']); $gateway = "https://mapi.alipay.com/gateway.do"; $parameter = array('service' => 'send_goods_confirm_by_platform', 'partner' => $payment['config']['alipay_partner'], '_input_charset' => 'utf-8', 'invoice_no' => $delivery_notice_sn, 'transport_type' => 'EXPRESS', 'logistics_name' => 'NONE', 'trade_no' => $payment_notice['outer_notice_sn']); ksort($parameter); reset($parameter); $sign = ''; $param = ''; foreach ($parameter as $key => $val) { $sign .= "{$key}={$val}&"; $param .= "{$key}=" . urlencode($val) . "&"; } $param = substr($param, 0, -1); $sign = substr($sign, 0, -1) . $payment['config']['alipay_key']; $sign_md5 = md5($sign); $param .= "&sign=" . $sign_md5 . "&sign_type=MD5"; $curl_exists = function_exists('curl_init'); if ($curl_exists) { $ch = curl_init(); //curl_setopt($ch, CURLOPT_POST, 1); curl_setopt($ch, CURLOPT_POSTFIELDS, $param); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_URL, $gateway); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); //curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true); $result = curl_exec($ch); curl_close($ch); } else { $result = file_get_contents($gateway . "?" . $param); } if ($result) { $result = toArray($result, "alipay"); } else { return "同步发货失败,请检查服务器是否开启了curl支持"; } if ($result['is_success'][0] == 'T') { return "支付宝发货成功"; } else { if ($result['error'] == 'ILLEGAL_ARGUMENT') { return $result['error'] . ' 参数不正确'; } elseif ($result['error'] == 'TRADE_NOT_EXIST') { return $result['error'] . ' 交易单号有误'; } elseif ($result['error'] == 'GENERIC_FAILURE') { return $result['error'] . ' 执行命令错误'; } else { return $result['error']; } } }
public function addcart() { if (empty($_REQUEST['id'])) { $res = array('ret' => '102', 'msg' => '参数不得为空'); ajax_return($res); } $id = intval($_REQUEST['id']); save_debug_log("addcart", 'post:' . json_encode($_POST)); save_debug_log("addcart", 'get:' . json_encode($_GET)); $deal_info = $GLOBALS['db']->getRow("select * from " . DB_PREFIX . "deal where id=" . $id); $session_id = "app"; if (!$deal_info) { $res = array('ret' => '-1', 'msg' => '该商品不存在'); ajax_return($res); } else { $attr_str = '0'; $verify_code = md5($id . "_" . $attr_str); $cart_item = $GLOBALS['db']->getRow("select * from " . DB_PREFIX . "deal_cart where session_id='" . $session_id . "' and user_id = " . intval($GLOBALS['user_info']['id']) . " and verify_code = '" . $verify_code . "'"); $add_number = $number = intval($_REQUEST['number']) <= 0 ? 1 : intval($_REQUEST['number']); //开始运算购物车的验证 if ($cart_item) { $check = check_deal_time($cart_item['deal_id']); if ($check['status'] == 0) { $res = array('ret' => '-1', 'msg' => "商品:" . $check['info'] . "不在可购买时间内"); ajax_return($res); } $check = check_user_bought_day($cart_item['deal_id'], $add_number, $session_id); if ($check['status'] == 0) { $res = array('ret' => '-1', 'msg' => $check['info']); ajax_return($res); } $check = check_deal_number($cart_item['deal_id'], $add_number); if ($check['status'] == 0) { $res = array('ret' => '-1', 'msg' => "商品:" . $check['info'] . "库存不足"); ajax_return($res); } } else { $check = check_deal_time($cart_item['deal_id']); if ($check['status'] == 0) { $res = array('ret' => '-1', 'msg' => "商品:" . $check['info'] . "不在可购买时间内"); ajax_return($res); } $check = check_user_bought_day($deal_info['id'], $add_number); if ($check['status'] == 0) { $res = array('ret' => '-1', 'msg' => $check['info']); ajax_return($res); } $check = check_deal_number($deal_info['id'], $add_number); if ($check['status'] == 0) { $res = array('ret' => '-1', 'msg' => "商品:" . $check['info'] . "库存不足"); ajax_return($res); } } if ($deal_info['return_score'] < 0) { //需要积分兑换 $user_score = intval($GLOBALS['db']->getOne("select score from " . DB_PREFIX . "user where id = " . intval($GLOBALS['user_info']['id']))); if ($user_score < abs(intval($deal_info['return_score']) * $add_number)) { $res['err'] = 1; $res['open_win'] = 1; $res['html'] = $check['info'] . " " . $GLOBALS['lang']['NOT_ENOUGH_SCORE']; $res['number'] = $GLOBALS['db']->getOne("select sum(number) from " . DB_PREFIX . "deal_cart where session_id = '" . es_session::id() . "' and user_id = " . intval($GLOBALS['user_info']['id'])); ajax_return($res); } } //验证over if (!$cart_item) { $attr_price = $GLOBALS['db']->getOne("select sum(price) from " . DB_PREFIX . "deal_attr where id in({$attr_str})"); $cart_item['session_id'] = $session_id; $cart_item['user_id'] = intval($GLOBALS['user_info']['id']); $cart_item['deal_id'] = $id; //属性 if ($attr_name != '') { $cart_item['name'] = $deal_info['name'] . " [" . $attr_name . "]"; $cart_item['sub_name'] = $deal_info['sub_name'] . " [" . $attr_name . "]"; } else { $cart_item['name'] = $deal_info['name']; $cart_item['sub_name'] = $deal_info['sub_name']; } $cart_item['name'] = addslashes($cart_item['name']); $cart_item['sub_name'] = addslashes($cart_item['sub_name']); $cart_item['attr'] = $attr_str; $cart_item['unit_price'] = $deal_info['current_price'] + $attr_price; $cart_item['number'] = $number; $cart_item['total_price'] = $cart_item['unit_price'] * $cart_item['number']; $cart_item['verify_code'] = $verify_code; $cart_item['create_time'] = get_gmtime(); $cart_item['update_time'] = get_gmtime(); $cart_item['return_score'] = $deal_info['return_score']; $cart_item['return_total_score'] = $deal_info['return_score'] * $cart_item['number']; $cart_item['return_money'] = $deal_info['return_money']; $cart_item['return_total_money'] = $deal_info['return_money'] * $cart_item['number']; $cart_item['buy_type'] = $deal_info['buy_type']; $cart_item['supplier_id'] = $deal_info['supplier_id']; $cart_item['attr_str'] = $attr_name_str; $GLOBALS['db']->autoExecute(DB_PREFIX . "deal_cart", $cart_item); } else { if ($number > 0) { $cart_item['number'] += $number; $cart_item['total_price'] = $cart_item['unit_price'] * $cart_item['number']; $cart_item['return_total_score'] = $deal_info['return_score'] * $cart_item['number']; $cart_item['return_total_money'] = $deal_info['return_money'] * $cart_item['number']; $GLOBALS['db']->autoExecute(DB_PREFIX . "deal_cart", $cart_item, "UPDATE", "id=" . $cart_item['id']); } } $res['number'] = $GLOBALS['db']->getOne("select sum(number) from " . DB_PREFIX . "deal_cart where session_id = '" . $session_id . "' and user_id = " . intval($GLOBALS['user_info']['id'])); $res['ret'] = '0'; save_debug_log('add cart', 'post :' . json_encode($_POST) . ' res:' . json_encode($res)); ajax_return($res); } }
/** * 下订单 */ public function add_deal_order() { if (empty($_REQUEST['deal_id'])) { echo json_encode(array('ret' => '-1', 'msg' => '请求参数为空')); } else { save_debug_log("add_deal_order post", json_encode($_POST)); $deal_id = $_REQUEST['deal_id']; $deal_info = $GLOBALS['db']->getRow("select * from " . DB_PREFIX . "deal where id =" . $deal_id); if (!$deal_info) { $res = array('ret' => '-1', 'msg' => '该商品不存在'); ajax_return($res); } $number = empty($_REQUEST['number']) ? 1 : $_REQUEST['number']; $is_cash_pay = isset($_REQUEST['is_cash_pay']) ? $_REQUEST['is_cash_pay'] : 0; //是否货到付款 if ($is_cash_pay && !is_deal_cash_pay($deal_id)) { //检测商品是否支持货到付款 $res = array('ret' => '-1', 'msg' => "该商品不支持货到付款"); ajax_return($res); } $check = check_deal_number($deal_id, $number, "app"); if ($check['status'] == 0) { $res = array('ret' => '-1', 'msg' => $check['info']); ajax_return($res); } $check = check_user_bought_day($deal_id, $number); if ($check['status'] == 0) { $res = array('ret' => '-1', 'msg' => $check['info']); ajax_return($res); } $check_deal_time = check_deal_time($deal_id); if ($check_deal_time['status'] == 0) { $res = array('ret' => '-1', 'msg' => "商品:" . $check['info'] . "不在可购买时间内"); ajax_return($res); } $deal_order = array(); $deal_order['order_sn'] = to_date(get_gmtime(), "Ymdhis") . rand(10, 99); $deal_order['type'] = 0; $deal_order['user_id'] = $GLOBALS['user_info']['id']; $deal_order['create_time'] = time(); $deal_order['pay_status'] = 0; $deal_order['pay_amount'] = 0; $deal_order['delivery_status'] = $deal_info['is_delivery'] == 0 ? 5 : 0; //$deal_order['delivery_status'] = 0; $deal_order['is_delete'] = 0; $deal_order['return_total_score'] = 0; $deal_order['refund_amount'] = 0; if ($deal_info['is_delivery'] == 1) { // 填写收货地址 if (!empty($_POST['consignee_id'])) { $consignee = $GLOBALS['db']->getRow("select * from " . DB_PREFIX . "user_consignee where id=" . $_POST['consignee_id']); } else { $consignee = $GLOBALS['db']->getRow("select * from " . DB_PREFIX . "user_consignee where user_id=" . $GLOBALS['user_info']['id'] . " and isdef=1"); } save_debug_log("add_deal_order consignee", json_encode($consignee)); if ($consignee) { $is_region_lv4_exist = $GLOBALS['db']->getOne("select count(1) from " . DB_PREFIX . "delivery_region where id=" . $consignee['region_lv4']); save_debug_log('is_region_lv4', "sql " . "select count(1) from " . DB_PREFIX . "delivery_region where id=" . $consignee['region_lv4'] . " is_regioin_lv4: {$is_region_lv4_exist}"); if ($is_region_lv4_exist <= 0) { $res = array('ret' => '-1', 'msg' => "所选地址服务站不存在,请重新选择"); ajax_return($res); } $deal_order['region_lv1'] = $consignee['region_lv1']; $deal_order['region_lv2'] = $consignee['region_lv2']; $deal_order['region_lv3'] = $consignee['region_lv3']; $deal_order['region_lv4'] = $consignee['region_lv4']; //判断收货地址是否支持货到付款 if ($is_cash_pay && !is_region_cash_pay($deal_order['region_lv4'])) { $res = array('ret' => '-1', 'msg' => '所选地址服务站不支持货到付款'); ajax_return($res); } $deal_order['address'] = $consignee['address']; $deal_order['mobile'] = $consignee['mobile']; $deal_order['zip'] = $consignee['zip']; } else { $res = array('ret' => '-1', 'msg' => "收货地址不得为空"); ajax_return($res); } } $deal_order['deal_ids'] = $deal_id; $deal_order['user_name'] = $GLOBALS['user_info']['user_name']; $total_price = $deal_info['current_price'] * $number; $deal_order['total_price'] = $total_price; // 需要计算 $deal_order['deal_total_price'] = $total_price; $deal_order['discount_price'] = 0; $deal_order['delivery_fee'] = 0; $deal_order['ecv_money'] = 0; $deal_order['account_money'] = 0; $deal_order['delivery_id'] = 0; $deal_order['payment_id'] = $is_cash_pay ? 22 : 0; $deal_order['payment_fee'] = 0; $deal_order['return_total_money'] = 0; $deal_order['extra_status'] = 0; $deal_order['after_sale'] = 0; $deal_order['refund_money'] = 0; $deal_order['refund_status'] = 0; $deal_order['retake_status'] = 0; if ($GLOBALS['db']->autoExecute(DB_PREFIX . "deal_order", $deal_order, "INSERT")) { $order_id = $GLOBALS['db']->insert_id(); // 成功插入订单数据后 $deal_order_item = array(); $deal_order_item['deal_id'] = $deal_info['id']; $deal_order_item['number'] = $number; $deal_order_item['unit_price'] = $deal_info['current_price']; $deal_order_item['total_price'] = $total_price; $deal_order_item['delivery_status'] = $deal_info['is_delivery'] == 0 ? 5 : 0; $deal_order_item['name'] = $deal_info['name']; $deal_order_item['sub_name'] = $deal_info['sub_name']; $deal_order_item['return_score'] = 0; $deal_order_item['return_total_score'] = 0; $deal_order_item['order_id'] = $order_id; $deal_order_item['attr'] = ''; $deal_order_item['verify_code'] = ''; $deal_order_item['return_money'] = 0; $deal_order_item['return_total_money'] = 0; $deal_order_item['buy_type'] = $deal_info['buy_type']; $deal_order_item['is_balance'] = 0; $GLOBALS['db']->autoExecute(DB_PREFIX . "deal_order_item", $deal_order_item, "INSERT"); echo json_encode(array('ret' => '0', 'order_id' => $order_id, 'order_sn' => $deal_order['order_sn'])); save_debug_log('add_deal_order ret id', json_encode(array('ret' => '0', 'order_id' => $order_id, 'order_sn' => $deal_order['order_sn'])) . "\n"); } else { echo json_encode(array('ret' => '-1', 'msg' => '订单添加失败')); } } }
/** * 检测团购的数量状态 * $id 团购ID * $number 数量 */ function check_deal_number($id, $number = 0, $session_id = '') { $id = intval($id); if ($session_id == "app") { $deal_info = $GLOBALS['db']->getRow("select * from " . DB_PREFIX . "deal where id =" . $id); } else { $deal_info = load_auto_cache("cache_deal_cart", array("id" => $id)); } if (!$deal_info) { $res = array('ret' => '-1', 'msg' => '该商品不存在'); ajax_return($res); } if ($session_id == '') { $session_id = es_session::id(); } /*验证数量*/ //定义几组需要的数据 //1. 本团购记录下的购买量 $deal_buy_count = intval($GLOBALS['db']->getOne("select sum(number) from " . DB_PREFIX . "deal_order_item where deal_id=" . $id)); //2. 本团购当前会员的购物车中数量 $deal_user_cart_count = intval($GLOBALS['db']->getOne("select sum(number) from " . DB_PREFIX . "deal_cart where session_id='" . $session_id . "' and deal_id =" . $id . " and user_id = " . intval($GLOBALS['user_info']['id']))); //3. 本团购当前会员已付款的数量buy_count $deal_user_paid_count = intval($GLOBALS['db']->getOne("select sum(oi.number) from " . DB_PREFIX . "deal_order_item as oi left join " . DB_PREFIX . "deal_order as o on oi.order_id = o.id where o.user_id = " . intval($GLOBALS['user_info']['id']) . " and o.pay_status = 2 and oi.deal_id = " . $id . " and o.is_delete = 0")); //4. 本团购当前会员未付款的数量 $deal_user_unpaid_count = intval($GLOBALS['db']->getOne("select sum(oi.number) from " . DB_PREFIX . "deal_order_item as oi left join " . DB_PREFIX . "deal_order as o on oi.order_id = o.id where o.user_id = " . intval($GLOBALS['user_info']['id']) . " and o.pay_status <> 2 and oi.deal_id = " . $id . " and o.is_delete = 0")); save_debug_log('deal_user_unpaid_cout', "select sum(oi.number) from " . DB_PREFIX . "deal_order_item as oi left join " . DB_PREFIX . "deal_order as o on oi.order_id = o.id where o.user_id = " . intval($GLOBALS['user_info']['id']) . " and o.pay_status <> 2 and oi.deal_id = " . $id . " and o.is_delete = 0"); save_debug_log('check_deal_num', "deal_id:{$id} deal_buy_count:{$deal_buy_count} deal_user_cart_count:{$deal_user_cart_count} deal_user_paid_count: {$deal_user_paid_count} deal_user_unpaid_count:{$deal_user_unpaid_count} number:{$number}"); $sql = "select count(*) from " . DB_PREFIX . "deal_cart where session_id = '" . $session_id . "' and deal_id = " . $id . " and user_id = " . intval($GLOBALS['user_info']['id']) . " and number <= 0"; $invalid_count = intval($GLOBALS['db']->getOne($sql)); if ($invalid_count > 0) { $result['status'] = 0; $result['data'] = DEAL_ERROR_MIN_USER_BUY; //用户最小购买数不足 $result['info'] = $deal_info['sub_name'] . " " . sprintf($GLOBALS['lang']['DEAL_USER_MIN_BOUGHT'], 1); return $result; } if ($deal_user_cart_count + $deal_buy_count + $deal_user_unpaid_count + $number > $deal_info['max_bought'] && $deal_info['max_bought'] > 0) { $result['status'] = 0; $result['data'] = DEAL_OUT_OF_STOCK; //库存不足 $result['info'] = $deal_info['sub_name'] . " " . sprintf($GLOBALS['lang']['DEAL_MAX_BOUGHT'], $deal_info['max_bought']); return $result; } if ($deal_user_cart_count + $deal_user_paid_count + $number < $deal_info['user_min_bought'] && $deal_info['user_min_bought'] > 0 && ACTION_NAME != 'addcart') { $result['status'] = 0; $result['data'] = DEAL_ERROR_MIN_USER_BUY; //用户最小购买数不足 $result['info'] = $deal_info['sub_name'] . " " . sprintf($GLOBALS['lang']['DEAL_USER_MIN_BOUGHT'], $deal_info['user_min_bought']); return $result; } if ($deal_user_cart_count + $deal_user_paid_count + $deal_user_unpaid_count + $number > $deal_info['user_max_bought'] && $deal_info['user_max_bought'] > 0) { $result['status'] = 0; $result['data'] = DEAL_ERROR_MAX_USER_BUY; //用户最大购买数超出 //$result['info'] = $deal_info['sub_name']." ".sprintf($GLOBALS['lang']['DEAL_USER_MAX_BOUGHT'],$deal_info['user_max_bought']); $result['info'] = "你已经选购了此商品,请查看个人信息"; return $result; } /*验证数量*/ $result['status'] = 1; $result['info'] = $deal_info['sub_name']; return $result; }