<?php
namespace App\Model;

use Illuminate\Database\Eloquent\Model;
use Illuminate\Support\Facades\Redis;
use Request;
use Excel;
use DB;

class OrderModel extends Model
{
    protected $connection = 'order';
    protected $table      = 'lie_order';
    protected $primaryKey = 'order_id';
    public $timestamps    = false;

	// 订单导出
	public function orderExport($map)
	{
        set_time_limit(0); 
        ini_set('memory_limit', '2048M');

        $userMainModel = new UserMainModel();
        $map['testMobile'] = $userMainModel->testMobile();

        $map['limit'] = isset($map['limit']) ? $map['limit'] : 100;
        $map['p']     = isset($map['p']) ? $map['p'] : 1;

        $list = $this->from('lie_order as o')
                ->join('lie_order_items as it', 'o.order_id', '=', 'it.order_id')
                ->leftJoin('lie_order_invoice as i', 'o.order_id', '=', 'i.order_id')
                ->leftJoin('lie_order_extend as oe', 'o.order_id', '=', 'oe.order_id')
                // ->leftJoin('lie_order_address as a', function($join) {
                //     $join->on('o.order_id', '=', 'a.order_id')->where('a.address_type', '=', 1);
                // })
                // ->leftJoin('lie_order_shipping as s', function($join) {
                //     $join->on('o.order_id', '=', 's.order_id')->where('s.shipping_type', '=', 1);
                // })
                ->leftJoin('lie_user_main as u', 'o.user_id', '=', 'u.user_id')
                // ->leftJoin('lie_user_company as c', 'o.user_id', '=', 'c.user_id')
                ->where(function ($query) use ($map) {
                    // 查询类型
                    if (!empty($map['order_contain'])) {
                        if ($map['order_type'] == 3) { // 发票抬头
                            $query->where('i.tax_title', '=', $map['order_contain']);
                        } else if($map['order_type'] == 4) { // 会员ID
                            $query->where('o.user_id', '=', $map['order_contain']);
                        } else { // 会员账号 
                            if (preg_match('/@/', $map['order_contain'])) {
                                $query->where('u.email', '=', $map['order_contain']);
                            } else {
                                $query->where('u.mobile', '=', $map['order_contain']);
                            }
                        }
                    }
                })
                ->where(function ($query) use ($map) {
                    // 订单编号
                    if (!empty($map['order_sn'])) {
                        $query->where('o.order_sn', '=', $map['order_sn']);
                    }
                })
                 ->where(function ($query) use ($map) {
                    // ERP订单编号
                    if (!empty($map['erp_sn'])) {
                        $query->where('oe.erp_sn', '=', $map['erp_sn']);
                    }
                })
                ->where(function ($query) use ($map) {
                    // 型号
                    if (!empty($map['goods_name'])) {
                        $query->where('it.goods_name', '=', $map['goods_name']);
                    }
                })
                ->where(function ($query) use ($map) {
                    // 创建时间
                    if (!empty($map['time_start']) && !empty($map['time_end'])) {
                        $query->whereBetween('o.create_time', [$map['time_start'], $map['time_end']]); 
                    } else if (!empty($map['time_start'])) {
                        $query->where('o.create_time', '>', $map['time_start']);
                    } else if (!empty($map['time_end'])) {
                        $query->where('o.create_time', '<', $map['time_end']); 
                    }
                })
                ->where(function ($query) use ($map) {
                    // 订单状态
                    if (!empty($map['order_status'])) {
                        $query->whereIn('o.status', explode(',', $map['order_status']));
                    }
                })
                ->where(function ($query) use ($map) {
                    // 配送方式
                    if (!empty($map['shipping_name'])) {
                        $query->where('o.order_shipping_type', '=', $map['shipping_name']);
                    }
                })
                ->where(function ($query) use ($map) {
                    // 订单推送业务员
                    if (!empty($map['sale_id'])) {
                        $query->whereIn('o.sale_id',  explode(',', $map['sale_id']));
                    }
                })
                ->where(function ($query) use ($map) {
                    // 订单类型
                    if (!empty($map['order_pay_type'])) {
                        $query->where('o.order_pay_type', '=', $map['order_pay_type']);
                    }
                })
                ->where(function ($query) use ($map) {
                    // 测试订单
                    if (empty($map['test_order'])) {            
                        $query->whereNotIn('o.user_id', $map['testMobile']);
                    } 
                })
                ->where(function ($query) use ($map) {
                    // 订单来源
                    if (!empty($map['order_source_pf'])) {
                        $order_source_pf = explode(',', $map['order_source_pf']);
                        $string = '';

                        foreach ($order_source_pf as $v) {
                            switch ($v) {
                                case '1': 
                                case '2': 
                                case '6': 
                                    $string .= "FIND_IN_SET('pf=".$v."', o.order_source) AND o.order_type = 1 OR "; 
                                    break;
                                case '3': 
                                    $string .= "o.order_type = 1 AND oe.order_type != 0 OR "; 
                                    break;
                                case '4': 
                                    $string .= "o.order_type = 3 OR "; 
                                    break;
                                case '5': 
                                    $string .= "o.order_type = 2 OR ";
                                    break;
                                case '7': 
                                    $string .= "o.order_type = 4 OR "; 
                                    break;
                            }
                        }

                        $query->whereRaw(rtrim($string, ' OR '));

                        // if ($map['order_source_pf'] == 1) {
                        //     $query->whereRaw("FIND_IN_SET('pf=1', o.order_source)");
                        // } else {
                        //     $query->whereRaw("FIND_IN_SET('pf=2', o.order_source)");

                        // }
                    }
                })
                ->where(function ($query) use ($map) {
                    // adtags来源
                    if (!empty($map['order_source_adtag'])) {
                        $query->where('o.order_source', 'like', '%adtag='.$map['order_source_adtag'].'%');
                    }
                })
                ->where(function ($query) use ($map) {
                    // ptag来源
                    if (!empty($map['order_source_ptag'])) {
                        $query->where('o.order_source', 'like', '%ptag='.$map['order_source_ptag'].'%');
                    }
                })
                // ->where(function ($query) use ($map) {
                //     if ($map['order_type_filter']) { // 自营获取线上、京东、象牙宝订单
                //         $query->whereIn('o.order_type', $map['order_type_filter']); 
                //     }
                // })
                 ->where(function ($query) use ($map) {
                    // 交货地
                    if (!empty($map['delivery_place'])) {
                        $query->where('o.delivery_place', $map['delivery_place']);    
                    }
                })
                ->where(function ($query) use ($map) {
                    // 同步状态
                    if (!empty($map['erp_order_id'])) {
                        $query->where('o.erp_order_id', '<>', '');    
                    }
                })
                ->where(function ($query) use ($map) {
                    // 订单类型
                    if (isset($map['order_type_extend'])) {
                        $query->where('o.order_type_extend', '=', $map['order_type_extend']);
                    }
                })
                ->where(function ($query) use ($map) {
                    // 团购状态
                    if (isset($map['status_extend'])) {
                        $query->where('o.status_extend', '=', $map['status_extend']);
                    }
                })
                ->where(function ($query) use ($map) {
                    // 主管审核
                    if (!empty($map['is_manager_audit'])) {
                        $query->whereIn('oe.is_manager_audit', explode(',', $map['is_manager_audit']));
                    }
                })
                ->where(function ($query) use ($map) {
                    // 竞调数据
                    if (isset($map['is_fake'])) {
                        $query->where('o.is_type', '=', $map['is_fake']);
                    }
                });

        if (!empty($map['order_payment_mode'])) {
            $list = $list->leftJoin('lie_pay_log as p', 'o.order_id', '=', 'p.order_id')
                    ->where(function ($query) use ($map) {
                        // 支付方式
                        $pay_name = explode(',', $map['order_payment_mode']);
                        $order_payment_mode = [];

                        foreach ($pay_name as $v) {
                            switch ($v) {
                                case '1': $order_payment_mode[] = '微信支付';break;
                                case '2': $order_payment_mode[] = '支付宝';break;
                                case '3': $order_payment_mode[] = '银联支付(B2B)';break;
                                case '4': $order_payment_mode[] = '银联支付(B2C)';break;
                                case '5': $order_payment_mode[] = '账期支付';break;
                                case '6': $order_payment_mode[] = '京东支付';break;
                                case '7': $order_payment_mode[] = '交通银行';break;
                                case '8': $order_payment_mode[] = '恒生银行';break;
                                case '9': $order_payment_mode[] = '钱包支付';break;
                            }
                        }

                        $query->whereIn('p.pay_name', $order_payment_mode);
                    });
        }
                
        $list = $list->where(function ($query) use ($map) {
                    // 发票类型
                    if (!empty($map['order_invoice_status'])) {
                        $query->where('i.inv_type', '=', $map['order_invoice_status']);
                    }
                })
                ->where(function ($query) use ($map) {
                    // 是否为新用户
                    if ($map['is_new'] != '') {
                        $query->where('u.is_new', '=', $map['is_new']);
                    }
                })
                ->where(function ($query) use ($map) {
                    // 是否新订单
                    if ($map['is_new_order'] != '') {
                        $query->where('oe.is_new', '=', $map['is_new_order']);
                    }
                })
                ->where(function ($query) use ($map) {
                    // 自营其他业务类型
                    if ($map['business_type'] != '') {
                        $query->whereIn('oe.business_type', explode(',', $map['business_type']));
                    }
                })
                ->where(function ($query) use ($map) {
                    // 销售类型
                    if ($map['sale_type'] != '') {
                        $query->where('o.sale_type', '=', $map['sale_type']);
                    }
                })
                ->where('it.status', 1)
                ->where('o.order_goods_type', '=', $map['order_goods_type'])
                ->select('o.order_id', 'o.order_sn', 'o.order_type', 'o.order_pay_type', 'o.order_goods_type', 'o.order_source', 'o.create_time', 'o.status', 'o.order_amount', 'o.sale_type', 'o.currency', 'o.sale_id', 'o.cancel_reason', 'o.advance_pay_time', 'o.pay_time', 'it.goods_id', 'it.goods_name', 'it.goods_number', 'it.goods_price', 'it.single_pre_price', 'it.brand_name', 'it.supplier_name', 'it.goods_class', 'it.self_supplier_type', 'it.extra_price', 'it.goods_discount_amount', 'i.tax_title', 'i.inv_type', 'i.invoice_status', 'i.tax_title', 'i.company_address', 'i.company_phone', 'i.tax_no', 'i.bank_name', 'i.bank_account', 'u.user_id', 'u.mobile', 'u.email', 'u.client_source', 'u.is_new', 'u.is_test', 'oe.erp_sn', 'oe.order_type as extend_order_type', 'oe.send_remark', 'oe.is_new as is_new_order', 'oe.business_type', 'oe.jd_order_id', 'oe.exchange_rate', 'oe.sample_demand_desc')
                ->groupBy('it.rec_id')
                ->orderBy('o.create_time', 'DESC')
                // ->get()
                // ->toArray();
                ->paginate($map['limit'], ['*'], 'p', $map['p'])->toArray();

                if (!empty($list['data'])) {
                    $list['data'] = $this->exportList($list['data']); // 订单数据处理
                }

                return $list;
// dump($list->getBindings());
// dump($list->toSql());
// $tmp = str_replace('?', '"'.'%s'.'"', $list->toSql());
// $tmp = vsprintf($tmp, $list->getBindings());
// echo $tmp;
// exit;
        // if (!empty($list)) {
        //     // 订单数据处理
        //     $cellData = $this->exportList($list);

        //     // 标题
        //     if ($map['order_goods_type'] == 1) {
        //         $headerCell = ['订单ID', '订单编号', 'ERP单号', '京东订单号', '会员账号', '收货人', '下单日期', '下单时间', '客户名称', '平台来源', 'SKUID', '商品型号', '商品分类', '制造商', '供应商', '数量', '单价', '均摊后单价', '商品小计', '币种', '客服', '商品总额', '运费', '附加费', '优惠券', '订单总额', '人民币总额', '付款类型', '订单状态', '发货状态', '收货地址', '发票类型', '发票状态', '发票抬头', '公司注册地址', '公司电话', 'adtags来源', '新用户来源', '取消原因', '推送备注', '是否为测试订单', '是否为新订单'];
        //     } else {
        //         $headerCell = ['订单ID', '订单编号', 'ERP单号', '京东订单号', '会员账号', '收货人', '下单日期', '下单时间', '客户名称', '平台来源', 'SKUID', '商品型号', '商品分类', '制造商', '供应商', '数量', '单价', '均摊后单价', '商品小计', '币种', '客服', '商品总额', '运费', '附加费', '优惠券', '订单总额', '付款类型', '订单状态', '发货状态', '收货地址', '发票类型', '发票状态', '发票抬头', '公司注册地址', '公司电话', 'adtags来源', '新用户来源', '取消原因', '推送备注', '是否为测试订单', '销售类型', '业务类型', '自采标记', '项目需求描述','收货联系电话'];
        //     }  

        //     array_unshift($cellData, $headerCell);

        //     $fileName = $map['order_goods_type'] == 1 ? '联营订单导出'.date('_YmdHis') : '自营订单导出'.date('_YmdHis');

        //     Excel::create($fileName, function($excel) use ($cellData){
        //         $excel->sheet('订单导出', function($sheet) use ($cellData){
        //             $sheet->rows($cellData);
        //         });
        //     })->export('xls');
        // } else {
        //     return redirect('/prompt')->with(['message'=>"数据为空无法导出!",'url' =>$_SERVER['HTTP_REFERER'], 'jumpTime'=>3,'status'=>false]);
        // }
	}

	/**
     * 导出数据处理
     * @param  [type] $order [查询出的订单数据]
     * @return [type]        [description]
     */
    public function exportList($order)
    {
        // 订单发货状态
        $shipping_status = array(
            '-1' => '未配送',
            '1'  => '配送中',
            '2'  => '已签',
        );

        // 发票类型
        $inv_type = array(
            '1' => '不开发票',
            '2' => '普通发票',
            '3' => '增值税专用发票',
            '4' => '增值税普通发票',
        ); 

        // 发票状态
        $invoice_status = array(
            '-1' => '待确认',
            '1'  => '已开票',
            '2'  => '已发货', 
            '3'  => '已签收',
        );

        // 用户标签
        $user_tags = array(
            '0' => '用户',
            '1' => '新用户',
            '2' => '老用户',
        );

        // 自采标记
        $self_supplier_type = array(
            '0' => '自采',
            '1' => '自采',
            '2' => '立创',
            '3' => '京北',
            '4' => '油柑网',
        );

        $tmp = array();

        $all_sale_id  = array_column($order, 'sale_id');
        $all_order_id = array_column($order, 'order_id');
        $all_user_id  = array_column($order, 'user_id');

        // 获取所有客服
        $sales = DB::table('user_info')->whereIn('userId', $all_sale_id)->lists('name', 'userId');

        // 获取所有价格
        $OrderPriceModel = new OrderPriceModel();
        // $order_price = $OrderPriceModel->whereIn('order_id', $all_order_id)->select('order_id', 'price_type', 'price')->get()->keyBy('order_id')->toArray();
        $order_price = $OrderPriceModel->whereIn('order_id', $all_order_id)->select('order_id', 'price_type', 'price')->get()->keyBy(function ($item) {
                            return strtoupper($item['order_id'].'.'.$item['price_type']);
                        })->toArray();

        // 获取用户公司名称
        $UserCompanyModel = new UserCompanyModel();
        $company_info = $UserCompanyModel->whereIn('user_id', $all_user_id)->lists('com_name', 'user_id')->toArray();

        // 获取所有订单收货地址
        $OrderAddressModel = new OrderAddressModel();
        $order_address = $OrderAddressModel->where('address_type', 1)->whereIn('order_id', $all_order_id)->select('order_id', 'mobile', 'consignee', 'province','city','district', 'address')->get()->keyBy('order_id')->toArray();

        // 获取所有订单物流信息
        $OrderShippingModel = new OrderShippingModel();
        $order_shipping = $OrderShippingModel->where('shipping_type', 1)->whereIn('order_id', $all_order_id)->select('order_id', 'status')->get()->keyBy('order_id')->toArray();

        for ($i = 0; $i < count($order); $i++) {
            $current_com_name = isset($company_info[$order[$i]['user_id']]) ? $company_info[$order[$i]['user_id']] : ''; // 当前公司
            $current_order_addr = isset($order_address[$order[$i]['order_id']]) ? $order_address[$order[$i]['order_id']] : ''; // 当前订单收货地址
            $current_order_shipping = isset($order_shipping[$order[$i]['order_id']]) ? $order_shipping[$order[$i]['order_id']] : ''; // 当前订单物流

            $tmp[$i]['order_id']     = $order[$i]['order_id'];
            $tmp[$i]['order_sn']     = "\t".$order[$i]['order_sn']."\t";
            $tmp[$i]['erp_sn']       = "\t".$order[$i]['erp_sn']."\t";
            $tmp[$i]['jd_order_id']  = "\t".$order[$i]['jd_order_id']."\t";          
            $tmp[$i]['user_account'] = $order[$i]['mobile'] ? $order[$i]['mobile'] : $order[$i]['email'];
            // $tmp[$i]['is_new']     = $order[$i]['is_new'] == 1 ? '是' : '否'; // 是否为新用户
            
            $tmp[$i]['consignee']        = isset($current_order_addr['consignee']) ? $current_order_addr['consignee']."\t" : '';
            $tmp[$i]['create_time_date'] = date('Y-m-d', $order[$i]['create_time']); 
            $tmp[$i]['create_time_sec']  = date('H:i:s', $order[$i]['create_time']); 
            $tmp[$i]['com_name']         = !empty($order[$i]['tax_title']) ? $order[$i]['tax_title'] : $current_com_name; 
            $tmp[$i]['items_source']     = $this->getOrderSource($order[$i]['order_id'], $order[$i]['order_type'], $order[$i]['order_goods_type'], $order[$i]['extend_order_type'], $order[$i]['order_source']);

            $tmp[$i]['goods_id']         = $order[$i]['goods_id']."\t";

            // 自营商品名称换成商品型号
            $tmp[$i]['goods_name']            = $order[$i]['order_goods_type'] == 1 ? $order[$i]['goods_name'] : $this->getGoodsName($order[$i]['goods_id']); 
            $tmp[$i]['goods_class']           = $order[$i]['goods_class'];  
            $tmp[$i]['brand_name']            = $order[$i]['brand_name'];  
            $tmp[$i]['supplier_name']         = $order[$i]['supplier_name']; 
            $tmp[$i]['currency']              = $order[$i]['currency'] == 1 ? 'RMB' : 'USD';
            $tmp[$i]['sale_name']             = isset($sales[$order[$i]['sale_id']]) ? $sales[$order[$i]['sale_id']] : '';  // 推送业务员
            $tmp[$i]['goods_number']          = $order[$i]['goods_number']; 
            $tmp[$i]['goods_price']           = $order[$i]['goods_price'];  
            $tmp[$i]['single_pre_price']      = $order[$i]['single_pre_price'];  
            $tmp[$i]['goods_amount']          = $order[$i]['goods_number'] * $order[$i]['goods_price'];
            $tmp[$i]['extra_price']           = $order[$i]['extra_price']; // 费用
            $tmp[$i]['goods_discount_amount'] = $order[$i]['goods_discount_amount']; // 折扣
             
            if ($i > 0 && $order[$i]['order_id'] == $order[$i-1]['order_id']) {
                $tmp[$i]['goods_sum']    = '';
                $tmp[$i]['shipping_fee'] = '';
                $tmp[$i]['extra_fee']    = '';
                $tmp[$i]['coupon']       = '';
                $tmp[$i]['order_amount'] = '';   

                if ($order[$i]['order_goods_type'] == 1) {
                    $tmp[$i]['rmb_amount'] = ''; // 人民币总额  
                }
            } else {
                $tmp[$i]['goods_sum']    = isset($order_price[$order[$i]['order_id'].'.1']) ? $order_price[$order[$i]['order_id'].'.1']['price'] : 0;
                $tmp[$i]['shipping_fee'] = isset($order_price[$order[$i]['order_id'].'.3']) ? $order_price[$order[$i]['order_id'].'.3']['price'] : 0;
                $tmp[$i]['extra_fee']    = isset($order_price[$order[$i]['order_id'].'.2']) ? $order_price[$order[$i]['order_id'].'.2']['price'] : 0;
                $tmp[$i]['coupon']       = isset($order_price[$order[$i]['order_id'].'.-4']) ? $order_price[$order[$i]['order_id'].'.-4']['price'] : 0;
                $tmp[$i]['order_amount'] = $order[$i]['order_amount'];  

                if ($order[$i]['order_goods_type'] == 1) {
                    $tmp[$i]['rmb_amount']   = $order[$i]['currency'] == 2 ? $order[$i]['order_amount'] * $order[$i]['exchange_rate'] : $order[$i]['order_amount']; // 人民币总额  
                }
            }

            $tmp[$i]['order_type']      = !empty($order[$i]['order_pay_type']) ? Config('params.order_pay_type')[$order[$i]['order_pay_type']] : '未知';
            $tmp[$i]['order_status']    = !empty($order[$i]['status']) ? Config('params.order_status')[$order[$i]['status']] : '未知';
            $tmp[$i]['shipping_status'] = !empty($current_order_shipping['status']) ? $shipping_status[$current_order_shipping['status']] : '无发货信息'; // 发货状态

            //查询发货地址的省市区
            if ($current_order_addr) {
                $province = $this->getProvince($current_order_addr['province']);
                $city     = $this->getCity($current_order_addr['province'], $current_order_addr['city']);
                $district = $this->getDistrict($current_order_addr['city'], $current_order_addr['district']);

                $tmp[$i]['address'] = $province.$city.$district.$current_order_addr['address'];
            } else {
                $tmp[$i]['address'] = '';
            } 

            $tmp[$i]['inv_type']        =  $order[$i]['inv_type'] ? $inv_type[$order[$i]['inv_type']] : '未知'; // 发票类型
            $tmp[$i]['invoice_status']  = !empty($order[$i]['invoice_status']) ? $invoice_status[$order[$i]['invoice_status']] : '无发票信息'; // 发票状态
            $tmp[$i]['tax_title']       = $order[$i]['tax_title'];
            $tmp[$i]['company_address'] = $order[$i]['company_address'];
            $tmp[$i]['company_phone']   = $order[$i]['company_phone'];


            if ($i > 0 && $order[$i]['order_id'] == $order[$i-1]['order_id']) { 
                $tmp[$i]['adtags']        = '';
                $tmp[$i]['client_source'] = '';
                $tmp[$i]['cancel_reason'] = 
                $tmp[$i]['send_remark']   = '';
            } else {
                $tmp[$i]['adtags']          = $order[$i]['order_source'];
                $tmp[$i]['client_source']   = $order[$i]['client_source'];
                $tmp[$i]['cancel_reason']   = $order[$i]['cancel_reason'];
                $tmp[$i]['send_remark']     = $order[$i]['send_remark'];
            }

            $tmp[$i]['is_test'] = $order[$i]['is_test'] == 1 ? '是' : '否';

            if ($order[$i]['order_goods_type'] == 2) {
                $tmp[$i]['sale_type']     = $order[$i]['sale_type'] == 1 ? '现卖' : '预售';
                // 自营其他业务类型
                $tmp[$i]['business_type'] = $order[$i]['business_type'] ? Config('params.business_type')[$order[$i]['business_type']] : '正常订单'; 
                $tmp[$i]['self_supplier_type'] = isset($self_supplier_type[$order[$i]['self_supplier_type']]) ? $self_supplier_type[$order[$i]['self_supplier_type']] : '未知'; // 自采标记
                $tmp[$i]['sample_demand_desc'] = $order[$i]['sample_demand_desc']; // 样片项目需求描述
                //收货地址的电话
                $tmp[$i]['receiving_address']  = isset($current_order_addr['mobile']) ? $current_order_addr['mobile'] : '';
            } else {
                $tmp[$i]['is_new_order'] = $order[$i]['is_new_order'] == 1 ? '是' : '否'; // 是否为新订单
            }     

            // 付款时间,多条明细则只在第一行显示,预付款只显示首款付款时间
            if ($i > 1) {
                $tmp[$i]['pay_time'] = '';
            } else {
                if ($order[$i]['order_pay_type'] == 2) {
                    $tmp[$i]['pay_time_date'] = $order[$i]['advance_pay_time'] ? date('Y-m-d', $order[$i]['advance_pay_time']) : ''; 
                    $tmp[$i]['pay_time_sec']  = $order[$i]['advance_pay_time'] ? date('H:i:s', $order[$i]['advance_pay_time']) : ''; 
                } else {
                    $tmp[$i]['pay_time_date'] = $order[$i]['pay_time'] ? date('Y-m-d', $order[$i]['pay_time']) : ''; 
                    $tmp[$i]['pay_time_sec']  = $order[$i]['pay_time'] ? date('H:i:s', $order[$i]['pay_time']) : ''; 
                }
            }
        }

        return $tmp;
    }

    // 获取省
    public function getProvince($region_id)
    {
        if (!$region_id) return '';

        $province = S_str('oms:province');

        $filter = array_filter($province, function($v) use ($region_id) {
            return $v['region_id'] == $region_id;
        });

        $filter = array_merge($filter); // 重新索引

        return $filter ? $filter[0]['region_name'] : '';
    }

    // 获取城市
    public function getCity($parent_id, $region_id)
    {
        if (!$parent_id || !$region_id) return '';

        $city = S_hash('oms:city:'.$parent_id, $region_id);
        
        return $city ? $city['region_name'] : '';
    }

    // 获取区
    public function getDistrict($parent_id, $region_id)
    {
        if (!$parent_id || !$region_id) return '';

        $district = S_hash('oms:district:'.$parent_id, $region_id);
        
        return $district ? $district['region_name'] : '';
    }

    public function get_address_name($id){
        $result = $this->from('lie_region')->where(['region_id' => $id])->select(array('region_name','parent_id','region_type'))->get()->toArray();

        $city = array('天津','北京','上海','重庆');

        //地址并未查找到
        if(empty($result[0]['region_name'])){
            return '';
        }

        //如果名字是这几个 就是直辖市
        if(in_array($result[0]['region_name'], $city) && $result[0]['region_type'] != 2){
           return '';
        }else if($result[0]['region_type'] == 2){
            $suffix = '市';
        }else if($result[0]['parent_id'] == 1){
            $suffix = '省';
        }else{
            $suffix = '';
        }

        return $result[0]['region_name'].$suffix;

       

    }

    // 获取自营商品型号
    public function getGoodsName($goods_id)
    {
        $goods_info = json_decode(Redis::hget('Self_SelfGoods', $goods_id), true);
        
        return $goods_info['goods_name'];
    }

    // 订单金额展示
    public function getOrderPrice($order_id, $type)
    {
        $price = DB::connection('order')->table('lie_order_price')->where('order_id', '=', $order_id)->where('price_type', '=', $type)->select('price')->first();

        return $price ? $price->price : 0;
    }

    // 获取订单来源
    public function getOrderSource($order_id, $order_type=1, $order_goods_type=1, $extend_order_type=0, $order_source='')
    {
        if ($order_type == 1) {
            if ($extend_order_type) return '后台';

            if (preg_match('/pf=1/', $order_source)) {
                $source = 'PC端';
            } else if (preg_match('/pf=2/', $order_source)) {
                $source = '移动端';
            } else if (preg_match('/pf=6/', $order_source)) {
                $source = '小程序';
            } else {
                $source = '未知';
            }

            return $source;
        } else if ($order_type == 2) {
            return 'ERP';
        } else if ($order_type == 3) {
            return '京东';
        } else if ($order_type == 4) {
            return $order_goods_type == 1 ? '开放平台' : '象牙宝';
        }

        return false;
    }
}