コード例 #1
0
ファイル: words.php プロジェクト: YouthAndra/huaitaoo2o
 /**  
  * 文本分词
  * @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;
 }
コード例 #2
0
 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)));
     }
 }
コード例 #3
0
ファイル: cart.php プロジェクト: YouthAndra/huaitaoo2o
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;
}
コード例 #4
0
 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;
 }
コード例 #5
0
 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']);
     }
 }
コード例 #6
0
 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;
 }
コード例 #7
0
 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'];
         }
     }
 }
コード例 #8
0
 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);
     }
 }
コード例 #9
0
 /**
  * 下订单
  */
 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' => '订单添加失败'));
         }
     }
 }
コード例 #10
0
ファイル: deal.php プロジェクト: YouthAndra/huaitaoo2o
/**
 * 检测团购的数量状态
 * $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;
}