Opencart:前台游客下单后如何查询订单

多版本可使用

Opencart 的前台中,除了登录购买查询还有一个游客非登录购买商品,那么非登录购买商品的话,该如何去查询已下单的内容?

此文以非登录查询,可以游客手机号及订单号查询,但经本人考虑,手机查询这个会涉及信息泄露,所以以订单号查询订单

在此之前,你需要做的是,客户下单后,你需要邮箱发送给客户,让客户获取他下单后的订单号是什么。这个可以百度设置就可以了。

接下来,开始正文
1,数据库保证有订单号的字段
2,下单的数据中 ,订单号必须被填写,opencart 中的订单号默认是id号(可自行新加字段并添加)
3,创建一个新的搜索入口(name与商品的查询不一),后台能获取的,最好是另起一个order命名的控制器,视图与模型的文件(本人没有新建模型,控制器与视图皆新建)。

以下开始贴代码
新建的order文件控制器

<?php
class ControllerOrderSearch extends Controller {
    public function __construct($registry)
    {
        parent::__construct($registry);
        $this->load->language('checkout/cart');
        $this->load->language('checkout/coupon');
        $this->load->language('checkout/checkout');
        $this->load->model('account/activity');
        $this->load->model('account/custom_field');
        $this->load->model('tool/upload');
        $this->load->model('account/address');
        $this->load->model('account/customer');
        $this->load->model('account/customer_group');
        $this->load->model('localisation/country');
        $this->load->model('localisation/zone');
        $this->load->model('checkout/checkout');
        $this->load->model('checkout/order');
    }
	public function index() {
		
		$this->load->language('product/search');

		$this->load->model('catalog/category');

		$this->load->model('catalog/product');

		$this->load->model('tool/image');

		if (isset($this->request->get['search_order_number'])) {
			$search = $this->request->get['search_order_number'];
		} else {
			$search = '';
		}

		if (isset($this->request->get['tag'])) {
			$tag = $this->request->get['tag'];
		} elseif (isset($this->request->get['search_order_number'])) {
			$tag = $this->request->get['search_order_number'];
		} else {
			$tag = '';
		}
		//新添加方法
		$order = $this->model_checkout_order->getOrderPhone($this->request->get['search_order_number']);
			
		$search_order_number = array();

		foreach($order as $key => $value){

			$search_order_number[$value['order_id']] = $value['order_id'];
		
		}
		//转为in(这个为当初我以手机号搜索写的,可自行修改)
		$data['order_id'] = $this->dbCreateIn($search_order_number);
      
        // 获取商品			
		$data['products'] = array();
		//在相应的文件添加方法
		$products = $this->model_checkout_order->getOrderDing($data['order_id']);
		$data['row_num'] = count($products,0);

		foreach ($products as $product) {

			$data['products'][] = array(
				'order_product_id' => $product['order_product_id'],
				'product_id'       => $product['product_id'],
				'name'    	 	   => $product['name'],
				'model'    		   => $product['model'],
				// 'option'   		   => $option_data,
				'quantity'		   => $product['quantity'],
				'price'    		   => $this->currency->format($product['price'] + ($this->config->get('config_tax') ? $product['tax'] : 0), $order['currency_code'], $order['currency_value']),
				'total'    		   => $this->currency->format($product['total'] + ($this->config->get('config_tax') ? ($product['tax'] * $product['quantity']) : 0), $order['currency_code'], $order['currency_value']),
				'href'     		   => $this->url->link('catalog/product/edit', 'user_token=' . $this->session->data['user_token'] . '&product_id=' . $product['product_id'])
			);
		}

		foreach ($order as $k1 => $v1) {
			
			foreach ($products as $k2 => $v2) {

				if ($v1['order_id']==$v2['order_id']) {
					$order[$k1]['child'][] = $v2;
				}

			}
			
		}
		// var_dump($data);die;

		foreach ($order as $order_data) {
	   
			$data['order_search'][] = array(
				'name'    	 	   => $order_data['name'],
				'quantity'		   => $order_data['quantity'],
				'price'    		   => $this->currency->format($order_data['price'] + ($this->config->get('config_tax') ? $order_data['tax'] : 0), $order_data['currency_code'], $order_data['currency_value']),
				'total'    		   => $this->currency->format($order_data['total'] + ($this->config->get('config_tax') ? ($order_data['tax'] * $order_data['quantity']) : 0), $order_data['currency_code'], $order_data['currency_value']),
				'href'     		   => $this->url->link('catalog/product/edit', 'user_token=' . $this->session->data['user_token'] . '&product_id=' . $order_data['product_id']),
				'payment_address'  => address_format($order_data, $order_data['payment_address_format'], 'payment'),

				// Shipping Address
				'shipping_address'  => address_format($order_data, $order_data['shipping_address_format'], 'shipping'),

			    'shipping_method'  => $order_data['shipping_method'] ?: false,
				 'payment_method'  => $order_data['payment_method'],
				 'href'     		   => $this->url->link('catalog/product/edit', 'user_token=' . $this->session->data['user_token'] . '&product_id=' . $order_data['product_id']),
				 'order_number'    => $order_data['order_number'],
				 'time'    => $order_data['date_added'],
				 'child'  => $order_data['child']
			);
		}
	
		$data['search'] = $search;
		$data['column_left'] = $this->load->controller('common/column_left');
		$data['column_right'] = $this->load->controller('common/column_right');
		$data['content_top'] = $this->load->controller('common/content_top');
		$data['content_bottom'] = $this->load->controller('common/content_bottom');
		$data['footer'] = $this->load->controller('common/footer');
		$data['header'] = $this->load->controller('common/header');

		$this->response->setOutput($this->load->view('order/search', $data));
	}
	function dbCreateIn($itemList)
	{
		if(empty($itemList )){
			return " IN ('') ";
		}else{
			return " IN ('" . join ("','", $itemList) . "') ";
		}
	}
}

model里新添加的方法

	public function getOrderPhone($order_phone) {

		$order_query = $this->db->query("SELECT * FROM `" . DB_PREFIX . "order`  WHERE order_number = '" . $order_phone . "'");

		if ($order_query->num_rows) {
			return $order_query->rows;
			
		} else {
			return false;
		}
	}
	
	//查找搜索订单
	public function getOrderDing($order_id) {
	
		$query = $this->db->query("SELECT * FROM " . DB_PREFIX . "order_product  WHERE order_id " . $order_id );

		return $query->rows;
	}

至此就结束了
提交的name要获取到就行,至于view,这个就不贴出来的。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

weixin_42456392

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值