<?php
namespace app\admin\controller;

use think\Db;

class ShopOrders extends Auth
{
    public function index(){
        if(request()->isAjax()){
            //分页参数
            $length = input('rows',10,'intval');   //每页条数
            $page = input('page',1,'intval');      //第几页
            $start = ($page - 1) * $length;     //分页开始位置
            //排序
            $sortRow = input('sidx','id','trim');      //排序列
            $sort = input('sord','asc','trim');        //排序方式
            $order = $sortRow.' '.$sort;

            $orderSn = input('orderSn','','trim');
            if($orderSn){
                $map[] = ['order_sn','like','%'.$orderSn.'%'];
            }
            $name = input('name','','trim');
            if($name){
                $map[] = ['name','like','%'.$name.'%'];
            }
            $cate = input('cate','','trim');
            if($cate != ''){
                $map[] = ['cate','=',$cate];
            }
            $status = input('status','','trim');
            if($status != ''){
                $map[] = ['status','=',$status];
            }
            $map[] = ['org_id','=',$this->orgId];
            $map[] = ['del','=',0];
            $map= empty($map) ? true: $map;
            //数据查询
            $lists = Db::name('shop_orders')->where($map)
                ->limit($start,$length)->order($order)
                ->select();
            //数据返回
            $totalCount = Db::name('shop_orders')->where($map)->count();
            $totalPage = ceil($totalCount/$length);
            $result['page'] = $page;
            $result['total'] = $totalPage;
            $result['records'] = $totalCount;
            $result['rows'] = $lists;
            return json($result);
        }else{
            $this->assign('meta_title','订单列表');
            return $this->fetch();
        }
    }

    public function detail($id = 0){
        $info = Db::name('shop_orders')
            ->where('id',$id)->where('del',0)->find();
        if(!$info){
            $this->error('订单不存在');
        }

        $goods = Db::name('shop_order_goods')
            ->alias('sog')
            ->join('shop_goods sg','sg.id = sog.goods_id')
            ->where('sog.order_id',$id)
            ->field('sog.*,sg.title,sg.img')
            ->select();
        $info['goods'] = $goods?$goods:[];

        $this->assign('info',$info);
        return $this->fetch();
    }

    /**
     * 删除记录
     * @param int $id
     */
    public function del($id=0){
        if(!$id){
            $this->error('参数错误');
        }
        $res = Db::name('shop_orders')->where('id',$id)->update(['del'=>1]);
        if($res){
            $this->success('删除成功');
        }else{
            $this->error('删除失败');
        }
    }

    /**
     * 取消记录
     * @param int $id
     */
    public function cancel($id=0){
        if(!$id){
            $this->error('参数错误');
        }
        $info = Db::name('shop_orders')->where('id',$id)->where('del',0)->find();
        if(!$info){
            $this->error('订单不存在');
        }
        if($info['status'] != 1){
            $this->error('此状态无法取消');
        }
        $res = Db::name('shop_orders')->where('id',$id)->update(['status'=>2,'cancel_time'=>date('Y-m-d H:i:s')]);
        if($res){
            $this->success('操作成功');
        }else{
            $this->error('操作失败');
        }
    }

}