162 lines
5.2 KiB
PHP
Executable File
162 lines
5.2 KiB
PHP
Executable File
<?php
|
|
/**
|
|
* 订单控制器
|
|
*/
|
|
|
|
namespace app\admin\controller;
|
|
|
|
use think\Request;
|
|
use app\common\model\Order;
|
|
use app\common\model\MallImage;
|
|
|
|
use app\common\validate\OrderValidate;
|
|
|
|
class OrderController extends Controller
|
|
{
|
|
|
|
//列表
|
|
public function index(Request $request, Order $model, MallImage $mimodel)
|
|
{
|
|
$param = $request->param();
|
|
$where = [];
|
|
//订单搜素
|
|
if (!empty($param['search_key']) && !empty($param['keyword'])) {
|
|
$keyword = $param['keyword'];
|
|
switch ($param['search_key']) {
|
|
case 'order_sn':
|
|
$where[] = ['o.order_sn', 'like', '%' . $keyword . '%'];
|
|
break;
|
|
case 'user_sn':
|
|
$where[] = ['u.sn', 'like', '%' . $keyword . '%'];
|
|
break;
|
|
case 'nickname':
|
|
$where[] = ['u.nickname', 'like', '%' . $keyword . '%'];
|
|
break;
|
|
case 'user_mobile':
|
|
$where[] = ['u.mobile', 'like', '%' . $keyword . '%'];
|
|
break;
|
|
}
|
|
}
|
|
|
|
//商品名称
|
|
if (isset($param['goods_name']) && $param['goods_name'] != '') {
|
|
$where[] = ['g.goods_name', 'like', '%' . $param['goods_name'] . '%'];
|
|
}
|
|
|
|
//订单类型
|
|
if (isset($param['order_type']) && $param['order_type'] != '') {
|
|
$where[] = ['o.order_status', '=', $param['order_type']];
|
|
}
|
|
|
|
//下单时间
|
|
if (isset($param['start_time']) && $param['start_time'] != '') {
|
|
$where[] = ['o.create_time', '>=', strtotime($param['start_time'])];
|
|
}
|
|
if (isset($param['end_time']) && $param['end_time'] != '') {
|
|
$where[] = ['o.create_time', '<=', strtotime($param['end_time'])];
|
|
}
|
|
$model = $model
|
|
->alias('o')
|
|
->field('o.*,u.mobile,u.nickname,u.sn,u.avatar')
|
|
->join('user u', 'u.id = o.user_id')
|
|
->join('order_goods g', 'g.order_id = o.id')
|
|
->with(['order_goods'])
|
|
->append(['delivery_address'])
|
|
->where($where)
|
|
->order('o.id desc')
|
|
->group('o.id')
|
|
->scope('where', $param);
|
|
|
|
$data = $model->paginate($this->admin['per_page'], false, ['query'=>$request->get()]);
|
|
foreach ($data as $key => $value) {
|
|
foreach ($value['order_goods'] as &$order_goods){
|
|
$mi_info=$mimodel->where(array('union_id'=>$order_goods['goods_id'],'type'=>1,'is_cover'=>1))->find();
|
|
$order_goods['img']=$mi_info['thumb_image'];
|
|
}
|
|
}
|
|
//关键词,排序等赋值
|
|
$this->assign($request->get());
|
|
|
|
$this->assign([
|
|
'data' => $data,
|
|
'page' => $data->render(),
|
|
'total' => $data->total(),
|
|
]);
|
|
return $this->fetch();
|
|
}
|
|
|
|
/**
|
|
* Desc: 订单详情
|
|
*/
|
|
public function detail($id, Request $request, Order $model, MallImage $mimodel)
|
|
{
|
|
$order = new Order();
|
|
$data = $order
|
|
->with(['user', 'order_goods'])
|
|
->where('id', $id)
|
|
->append(['delivery_address'])
|
|
->find();
|
|
foreach ($data['order_goods'] as &$order_goods){
|
|
$mi_info=$mimodel->where(array('union_id'=>$order_goods['goods_id'],'type'=>1,'is_cover'=>1))->find();
|
|
$order_goods['img']=$mi_info['thumb_image'];
|
|
}
|
|
$this->assign([
|
|
'detail' => $data,
|
|
]);
|
|
return $this->fetch();
|
|
}
|
|
|
|
/**
|
|
* Desc: 订单详情
|
|
*/
|
|
public function delivery($id, Request $request, Order $model, MallImage $mimodel)
|
|
{
|
|
$order = new Order();
|
|
$data = $order
|
|
->with(['user', 'order_goods'])
|
|
->where('id', $id)
|
|
->append(['delivery_address'])
|
|
->find();
|
|
foreach ($data['order_goods'] as &$order_goods){
|
|
$mi_info=$mimodel->where(array('union_id'=>$order_goods['goods_id'],'type'=>1,'is_cover'=>1))->find();
|
|
$order_goods['img']=$mi_info['thumb_image'];
|
|
}
|
|
$this->assign([
|
|
'detail' => $data,
|
|
]);
|
|
return $this->fetch();
|
|
}
|
|
|
|
/**
|
|
* Desc: 发货操作
|
|
*/
|
|
public function deliveryHandle(Request $request, Order $model, OrderValidate $validate)
|
|
{
|
|
if ($request->isAjax()) {
|
|
$param = $request->param();
|
|
$validate_result = $validate->scene('hansle')->check($param);
|
|
if (!$validate_result) {
|
|
return error($validate->getError());
|
|
}
|
|
$model->delivery_handle($param);
|
|
return success('发货成功');
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Desc: 确认收货
|
|
*/
|
|
public function confirm(Request $request, Order $model)
|
|
{
|
|
if ($this->request->isAjax()) {
|
|
$param = $request->param();
|
|
$order = Order::get(['id' => $param['order_id']]);
|
|
$order->order_status = 3;
|
|
$order->update_time = time();
|
|
$order->confirm_take_time = time();
|
|
$order->save();
|
|
return success('确认成功');
|
|
}
|
|
}
|
|
}
|