You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
373 lines
14 KiB
373 lines
14 KiB
<?php
|
|
namespace App\Http\Controllers\Admin;
|
|
|
|
use App\Http\Controllers\Admin\CommonController;
|
|
use App\Http\Model\Order;
|
|
use App\Http\Model\OrderGoods;
|
|
use App\Http\Model\User;
|
|
use App\Http\Model\Region;
|
|
use Illuminate\Support\Facades\DB;
|
|
use App\Common\ReturnData;
|
|
use Illuminate\Http\Request;
|
|
|
|
class OrderController extends BaseController
|
|
{
|
|
public function __construct()
|
|
{
|
|
parent::__construct();
|
|
}
|
|
|
|
public function index()
|
|
{
|
|
$res = '';
|
|
$where = function ($query) use ($res) {
|
|
if(isset($_REQUEST["keyword"]))
|
|
{
|
|
$query->where(function ($query2){$query2->where('order_sn', 'like', '%'.$_REQUEST['keyword'].'%')->orWhere("name", "like", '%'.$_REQUEST['keyword'].'%')->orWhere("mobile", "like", '%'.$_REQUEST['keyword'].'%');});
|
|
}
|
|
|
|
if(isset($_REQUEST["mobile"]))
|
|
{
|
|
$query->where('mobile', 'like', '%'.$_REQUEST['mobile'].'%');
|
|
}
|
|
|
|
if(isset($_REQUEST["order_sn"]))
|
|
{
|
|
$query->where('order_sn', 'like', '%'.$_REQUEST['order_sn'].'%');
|
|
}
|
|
|
|
if(isset($_REQUEST["name"]))
|
|
{
|
|
$query->where("name", "like", '%'.$_REQUEST['name'].'%');
|
|
}
|
|
|
|
//0或者不传表示全部,1待付款,2待发货,3待收货,4待评价(确认收货,交易成功),5退款/售后
|
|
if(isset($_REQUEST["status"]))
|
|
{
|
|
if($_REQUEST["status"] == 1)
|
|
{
|
|
$query->where(array('order_status'=>0,'pay_status'=>0));
|
|
}
|
|
elseif($_REQUEST["status"] == 2)
|
|
{
|
|
$query->where(array('order_status'=>0,'shipping_status'=>0,'pay_status'=>1));
|
|
}
|
|
elseif($_REQUEST["status"] == 3)
|
|
{
|
|
$query->where(array('order_status'=>0,'refund_status'=>0,'shipping_status'=>1,'pay_status'=>1));
|
|
}
|
|
elseif($_REQUEST["status"] == 4)
|
|
{
|
|
$query->where(array('order_status'=>3,'refund_status'=>0,'shipping_status'=>2,'is_comment'=>0));
|
|
}
|
|
elseif($_REQUEST["status"] == 5)
|
|
{
|
|
$query->where(array('order_status'=>3,'refund_status'=>1));
|
|
}
|
|
}
|
|
|
|
$query->where('is_delete', 0); //未删除
|
|
};
|
|
|
|
$posts = parent::pageList('order', $where);
|
|
foreach($posts as $key=>$value)
|
|
{
|
|
$order_status_arr = model('Order')->getOrderStatusAttr($value);
|
|
$posts[$key]->order_status_text = $order_status_arr?$order_status_arr['text']:'';
|
|
$posts[$key]->order_status_num = $order_status_arr?$order_status_arr['num']:'';
|
|
|
|
$posts[$key]->province_name = model('Region')->getRegionName(['id'=>$value->province]);
|
|
$posts[$key]->city_name = model('Region')->getRegionName(['id'=>$value->city]);
|
|
$posts[$key]->district_name = model('Region')->getRegionName(['id'=>$value->district]);
|
|
}
|
|
|
|
$data['posts'] = $posts;
|
|
|
|
return view('admin.order.index', $data);
|
|
}
|
|
|
|
public function detail()
|
|
{
|
|
if(!empty($_GET["id"])){$id = $_GET["id"];}else{$id="";}
|
|
if(preg_match('/[0-9]*/',$id)){}else{exit;}
|
|
|
|
$data['id'] = $id;
|
|
$data['post'] = Order::where('id', $id)->first();
|
|
|
|
if($data['post'])
|
|
{
|
|
$order_status_arr = model('Order')->getOrderStatusAttr($data['post']);
|
|
$data['post']['order_status_text'] = $order_status_arr?$order_status_arr['text']:'';
|
|
$data['post']['order_status_num'] = $order_status_arr?$order_status_arr['num']:'';
|
|
|
|
$data['post']['province_name'] = model('Region')->getRegionName(['id'=>$data['post']->province]);
|
|
$data['post']['city_name'] = model('Region')->getRegionName(['id'=>$data['post']->city]);
|
|
$data['post']['district_name'] = model('Region')->getRegionName(['id'=>$data['post']->district]);
|
|
|
|
$data['post']['invoice_text'] = model('Order')->getInvoiceAttr($data['post']);
|
|
$data['post']['place_type_text'] = model('Order')->getPlaceTypeAttr($data['post']);
|
|
|
|
$data['post']['user'] = User::where(array('id'=>$data['post']['user_id']))->first(); //下单人信息
|
|
|
|
$order_goods = OrderGoods::where(array('order_id'=>$data['post']['id']))->get(); //订单商品列表
|
|
|
|
foreach($order_goods as $k=>$v)
|
|
{
|
|
$order_goods[$k]['refund_status_text'] = model('OrderGoods')->getRefundStatusAttr($v);
|
|
}
|
|
|
|
$data['post']['goodslist'] = $order_goods;
|
|
}
|
|
//echo '<pre>';print_r($data['post']);exit;
|
|
$data['kuaidi'] = DB::table('kuaidi')->where(['status'=>0])->orderBy('listorder', 'asc')->get();
|
|
|
|
return view('admin.order.detail', $data);
|
|
}
|
|
|
|
public function doadd()
|
|
{
|
|
$_POST['add_time'] = time();//更新时间
|
|
$_POST['click'] = rand(200,500);//点击
|
|
|
|
unset($_POST["_token"]);
|
|
if(isset($_POST['editorValue'])){unset($_POST['editorValue']);}
|
|
|
|
if(Order::insert($_POST))
|
|
{
|
|
success_jump('添加成功', route('admin_order'));
|
|
}
|
|
else
|
|
{
|
|
error_jump('添加失败!请修改后重新添加');
|
|
}
|
|
}
|
|
|
|
public function add()
|
|
{
|
|
return view('admin.order.add');
|
|
}
|
|
|
|
public function edit()
|
|
{
|
|
if(!empty($_GET["id"])){$id = $_GET["id"];}else{$id="";}
|
|
if(preg_match('/[0-9]*/',$id)){}else{exit;}
|
|
|
|
$data['id'] = $id;
|
|
$data['post'] = Order::where('id', $id)->first();
|
|
|
|
return view('admin.order.edit', $data);
|
|
}
|
|
|
|
public function doedit()
|
|
{
|
|
if(!empty($_POST["id"])){$id = $_POST["id"];unset($_POST["id"]);}else {$id="";exit;}
|
|
|
|
unset($_POST["_token"]);
|
|
if(isset($_POST['editorValue'])){unset($_POST['editorValue']);}
|
|
|
|
if(Order::where('id', $id)->update($_POST))
|
|
{
|
|
success_jump('修改成功', route('admin_order'));
|
|
}
|
|
else
|
|
{
|
|
error_jump('修改失败!请修改后重新添加');
|
|
}
|
|
}
|
|
|
|
public function del()
|
|
{
|
|
if(!empty($_GET["id"])){$id = $_GET["id"];}else{error_jump("删除失败!请重新提交");} //if(preg_match('/[0-9]*/',$id)){}else{exit;}
|
|
|
|
if(Order::whereIn("id", explode(',', $id))->update(array('is_delete'=>1)))
|
|
{
|
|
success_jump('删除成功');
|
|
}
|
|
else
|
|
{
|
|
error_jump("删除失败!请重新提交");
|
|
}
|
|
}
|
|
|
|
//发货修改物流信息
|
|
public function changeShipping(Request $request)
|
|
{
|
|
if(isset($_POST["id"]) && !empty($_POST["id"])){$id = $_POST["id"];}else{return ReturnData::create(ReturnData::PARAMS_ERROR);}
|
|
|
|
$data['shipping_id'] = $request->input('shipping_id', '');
|
|
$data['shipping_sn'] = $request->input('shipping_sn', '');
|
|
|
|
if($data['shipping_id'] == ''){return ReturnData::create(ReturnData::PARAMS_ERROR);}
|
|
|
|
if($data['shipping_id'] == 0)
|
|
{
|
|
$data['shipping_name'] = '无须物流';
|
|
unset($data['shipping_sn']);
|
|
}
|
|
else
|
|
{
|
|
if($data['shipping_sn'] == ''){return ReturnData::create(ReturnData::PARAMS_ERROR);}
|
|
|
|
$data['shipping_name'] = DB::table('kuaidi')->where('id', $data['shipping_id'])->value('name');
|
|
}
|
|
|
|
if(DB::table('order')->where(['id'=>$id,'shipping_status'=>0])->update($data) === false)
|
|
{
|
|
return ReturnData::create(ReturnData::SYSTEM_FAIL);
|
|
}
|
|
|
|
return ReturnData::create(ReturnData::SUCCESS);
|
|
}
|
|
|
|
//修改订单状态
|
|
public function changeStatus(Request $request)
|
|
{
|
|
if(isset($_POST["id"]) && !empty($_POST["id"])){$id = $_POST["id"];}else{return ReturnData::create(ReturnData::PARAMS_ERROR);}
|
|
$status = $request->input('status', '');
|
|
if($status==''){return ReturnData::create(ReturnData::PARAMS_ERROR);}
|
|
|
|
//2设为已付款,3发货,4设为已收货,7设为无效,8同意退款
|
|
if($status==2)
|
|
{
|
|
$data['pay_status'] = 1;
|
|
|
|
//...
|
|
}
|
|
elseif($status==3)
|
|
{
|
|
$data['shipping_status'] = 1;
|
|
}
|
|
elseif($status==4)
|
|
{
|
|
$data['order_status'] = 3;
|
|
$data['shipping_status'] = 2;
|
|
|
|
//...
|
|
}
|
|
elseif($status==7)
|
|
{
|
|
$data['order_status'] = 2;
|
|
|
|
//返库存
|
|
if(!Order::returnStock($id)){return ReturnData::create(ReturnData::SYSTEM_FAIL);}
|
|
}
|
|
elseif($status==8)
|
|
{
|
|
$data['refund_status'] = 2;
|
|
|
|
$order = DB::table('order')->where('id', $id)->first();
|
|
if($order->pay_money>0)
|
|
{
|
|
//返余额
|
|
//增加用户余额
|
|
DB::table('user')->where(array('id'=>$order->user_id))->increment('money', $order->pay_money);
|
|
//添加用户余额记录
|
|
DB::table('user_money')->insert(array('user_id'=>$order->user_id,'type'=>0,'money'=>$order->pay_money,'des'=>'退货-返余额','user_money'=>DB::table('user')->where(array('id'=>$order->user_id))->value('money'),'add_time'=>time()));
|
|
}
|
|
|
|
//返库存
|
|
if(!Order::returnStock($id)){return ReturnData::create(ReturnData::SYSTEM_FAIL);}
|
|
}
|
|
|
|
if(DB::table('order')->where('id', $id)->update($data) === false)
|
|
{
|
|
return ReturnData::create(ReturnData::SYSTEM_FAIL);
|
|
}
|
|
|
|
return ReturnData::create(ReturnData::SUCCESS);
|
|
}
|
|
|
|
//导出订单Excel
|
|
public function outputExcel(Request $request)
|
|
{
|
|
$res = '';
|
|
$where = function ($query) use ($res) {
|
|
if(isset($_REQUEST["keyword"]))
|
|
{
|
|
$query->where('order_sn', 'like', '%'.$_REQUEST['keyword'].'%')->orWhere("name", "like", '%'.$_REQUEST['keyword'].'%')->orWhere("mobile", "like", '%'.$_REQUEST['keyword'].'%');
|
|
}
|
|
|
|
if(isset($_REQUEST["min_addtime"]) && isset($_REQUEST["max_addtime"]) && !empty($_REQUEST["min_addtime"]) && !empty($_REQUEST["max_addtime"]))
|
|
{
|
|
$query->where('add_time', '>=', $_REQUEST['min_addtime'])->where('add_time', '<=', $_REQUEST["max_addtime"]);
|
|
}
|
|
|
|
if(isset($_REQUEST["mobile"]))
|
|
{
|
|
$query->where('mobile', 'like', '%'.$_REQUEST['mobile'].'%');
|
|
}
|
|
|
|
if(isset($_REQUEST["order_sn"]))
|
|
{
|
|
$query->where('order_sn', 'like', '%'.$_REQUEST['order_sn'].'%');
|
|
}
|
|
|
|
if(isset($_REQUEST["name"]))
|
|
{
|
|
$query->where("name", "like", '%'.$_REQUEST['name'].'%');
|
|
}
|
|
|
|
//0或者不传表示全部,1待付款,2待发货,3待收货,4待评价(确认收货,交易成功),5退款/售后
|
|
if(isset($_REQUEST["status"]))
|
|
{
|
|
if($_REQUEST["status"] == 1)
|
|
{
|
|
$query->where(array('order_status'=>0,'pay_status'=>0));
|
|
}
|
|
elseif($_REQUEST["status"] == 2)
|
|
{
|
|
$query->where(array('order_status'=>0,'shipping_status'=>0,'pay_status'=>1));
|
|
}
|
|
elseif($_REQUEST["status"] == 3)
|
|
{
|
|
$query->where(array('order_status'=>0,'refund_status'=>0,'shipping_status'=>1));
|
|
}
|
|
elseif($_REQUEST["status"] == 4)
|
|
{
|
|
$query->where(array('order_status'=>3,'refund_status'=>0));
|
|
}
|
|
elseif($_REQUEST["status"] == 5)
|
|
{
|
|
$query->where(array('order_status'=>3,'refund_status'=>1));
|
|
}
|
|
}
|
|
|
|
$query->where('is_delete', 0); //未删除
|
|
};
|
|
|
|
$cellData = [];
|
|
array_push($cellData,['ID','订单号','时间','状态','商品总价','应付金额','支付金额','收货人','地址','电话','订单来源']);
|
|
$order_list = DB::table('order')->where($where)->orderBy('id', 'desc')->get();
|
|
if($order_list)
|
|
{
|
|
foreach($order_list as $k=>$v)
|
|
{
|
|
$order_status_arr = Order::getOrderStatusText(object_to_array($v, 1));
|
|
$order_list[$k]->order_status_text = $order_status_arr?$order_status_arr['text']:'';
|
|
$order_list[$k]->order_status_num = $order_status_arr?$order_status_arr['num']:'';
|
|
|
|
$order_list[$k]->province_name = Region::getRegionName($v->province);
|
|
$order_list[$k]->city_name = Region::getRegionName($v->city);
|
|
$order_list[$k]->district_name = Region::getRegionName($v->district);
|
|
$order_list[$k]->place_type_text = Order::getPlaceTypeText(['place_type'=>$v->place_type]);
|
|
|
|
array_push($cellData,[$v->id,$v->order_sn,date('Y-m-d H:i:s',$v->add_time),$order_list[$k]->order_status_text,$v->goods_amount,$v->order_amount,$v->pay_money,$v->name,$order_list[$k]->province_name.$order_list[$k]->city_name.$order_list[$k]->district_name.' '.$v->address,$v->mobile,$order_list[$k]->place_type_text]);
|
|
}
|
|
}
|
|
|
|
//导出EXCEL
|
|
\Excel::create('订单列表',function($excel) use ($cellData){
|
|
// Set the title
|
|
$excel->setTitle('order list');
|
|
// Chain the setters
|
|
$excel->setCreator('FLi')->setCompany('FanCheng');
|
|
// Call them separately
|
|
$excel->setDescription('A demonstration to change the file properties');
|
|
|
|
//第一个工作簿,Sheet1是工作簿的名称
|
|
$excel->sheet('Sheet1', function($sheet) use ($cellData){
|
|
$sheet->rows($cellData);
|
|
});
|
|
})->download('xls');
|
|
}
|
|
}
|