ZjOrderController.php 12.3 KB
<?php
/**
 * Created by PhpStorm.
 * User: wz
 * Date: 2018/9/25
 * Time: 11:29
 */

namespace app\admin\controller;


use app\kdnapi\controller\KdnApiController;
use cmf\controller\AdminBaseController;
use think\Db;

class ZjOrderController extends AdminBaseController
{
    /**
     * 订单列表
     */
    public function index(){
        $where['o.delete_time']=0;
        $arr=[];
        $where1=[];
        if ($this->request->param()){
            $arr=input('param.');
            if (!empty($arr['uid'])){
                $where['o.uid']=$arr['uid'];
            }
            if (!empty($arr['yi'])){
                $where['o.cid']=$arr['yi'];
            }
            if (!empty($arr['er'])){
                $where['o.cids']=['like','%-'.$arr['er'].'-%'];
            }
            if (!empty($arr['step'])){
                $where['o.step']=$arr['step'];
            }
            if (!empty($arr['num'])){
                $where['o.order_num']=$arr['num'];
            }
            if (!empty($arr['name'])){
                $where['o.name']=$arr['name'];
            }
            if (!empty($arr['mobile'])){
                $where['o.mobile']=$arr['mobile'];
            }
            if (!empty($arr['start_time'])){
                $where['o.create_time']=['egt',strtotime($arr['start_time'])];
            }
            if (!empty($arr['end_time'])){
                $where1['o.create_time']=['elt',strtotime($arr['end_time'])];
            }
        }
        $all=Db::name('zj_order')->alias('o')->join('user u','o.uid=u.id','left')
            ->where($where)->where($where1)->order('create_time','desc')->field('o.*,u.user_nickname')->paginate(15);
        $all->appends($arr);

        //查询商品分类
        $cate=Db::name('zj_category')->where(['delete_time'=>'0'])->field('name,id,cid,grade')->select()->toArray();
        $cate1=[];
        $cate2=[];
        foreach ($cate as $k=>$v){
            if ($cate[$k]['grade']==1){
                $cate1[$k]=$cate[$k];
            }else{
                $cate2[$k]=$cate[$k];
            }
        }
        $cate1=array_values($cate1);
        $cate2=array_values($cate2);
        $this->assign('start_time', !empty($arr['start_time']) ? $arr['start_time'] : '');
        $this->assign('end_time', !empty($arr['end_time']) ? $arr['end_time'] : '');
        $this->assign('uid',!empty($arr['uid'])?$arr['uid']:'');
        $this->assign('step',!empty($arr['step'])?$arr['step']:'');
        $this->assign('num',!empty($arr['num'])?$arr['num']:'');
        $this->assign('name',!empty($arr['name'])?$arr['name']:'');
        $this->assign('mobile',!empty($arr['mobile'])?$arr['mobile']:'');
        $this->assign('yi',!empty($arr['yi'])?$arr['yi']:'');
        $this->assign('er',!empty($arr['er'])?$arr['er']:'');
        $this->assign('page',$all->render());
        $this->assign('all',$all->items());
        $this->assign('cate1',$cate1);
        $this->assign('cate2',$cate2);
        return $this->fetch();
    }

    /**
     * 订单详情
     */
    public function detail(){
        if ($this->request->param()){
            $id=input('param.id');
            $url=input('param.sta');
            if ($url==1){
                $url=url('index');
            }elseif ($url==2){
                $url=url('backlog');
            }
            $one=Db::name('zj_order')->alias('o')->join('user u','o.uid=u.id','left')->join('zj_kd k','o.kid=k.id','left')
                ->where('o.id',$id)->field('o.*,u.user_nickname,k.name as kname')->find();
            $kd=Db::name('zj_kd')->select();
            $all=Db::name('zj_order_goods')->alias('og')->join('zj_goods g','og.gid=g.id')->where('oid',$id)
                ->field('g.name,og.num')->select();
            if ($one['step']>2&&$one['kid']!=0){
                $kdgj=Db::name('zj_kd_order')->where(['kd_num'=>$one['kd_num']])->value('text');
                $kdgj=json_decode($kdgj,true);
                $this->assign('kdgj',$kdgj);
            }
            $this->assign('kd',$kd);
            $this->assign('url',$url);
            $this->assign('one',$one);
            $this->assign('all',$all);
            return $this->fetch();
        }
    }
    /**
     * 订单详情修改提交
     */
    public function detailPost(){
        if ($this->request->param()){
            $param=input('param.');
            $edit=Db::name('zj_order')->update($param);
            if ($param['step']=='3'){
                if ($param['kid']=='0'){
                    $kds='自提订单';
                }else{
                    //引入快递订阅接口
                    $kd=new KdnApiController();
                    $kds=$kd->orderTracesSubByJson($param['id']);
                    $kds=json_decode($kds,true);
                    if ($kds['Success']==true){
                        $kds='快递状态订阅成功';
                    }else{
                        $kds='快递状态订阅失败';
                    }
                }
            }
            if (empty($edit)){
                $this->error('修改失败,'.$kds);
            }else{
                $this->success('修改成功,'.$kds);
            }
        }
    }


    /**
     * 待处理订单列表
     */
    public function backlog(){
        $where['o.delete_time']=0;
        $arr=[];
        $where1['o.step']=['in',['2','6','8']];
        if ($this->request->param()){
            $arr=input('param.');
            if (!empty($arr['uid'])){
                $where['o.uid']=$arr['uid'];
            }
            if (!empty($arr['step'])){
                $where['o.step']=$arr['step'];
            }
            if (!empty($arr['num'])){
                $where['o.order_num']=$arr['num'];
            }
            if (!empty($arr['name'])){
                $where['o.name']=$arr['name'];
            }
            if (!empty($arr['mobile'])){
                $where['o.mobile']=$arr['mobile'];
            }
            if (!empty($arr['start_time'])){
                $where['o.create_time']=['egt',strtotime($arr['start_time'])];
            }
            if (!empty($arr['end_time'])){
                $where1['o.create_time']=['elt',strtotime($arr['end_time'])];
            }
        }
        $all=Db::name('zj_order')->alias('o')->join('user u','o.uid=u.id','left')->where($where)->where($where1)
            ->order('create_time','desc')->field('o.*,u.user_nickname')->paginate(15);
        $all->appends($arr);
        $this->assign('start_time', !empty($arr['start_time']) ? $arr['start_time'] : '');
        $this->assign('end_time', !empty($arr['end_time']) ? $arr['end_time'] : '');
        $this->assign('uid',!empty($arr['uid'])?$arr['uid']:'');
        $this->assign('step',!empty($arr['step'])?$arr['step']:'');
        $this->assign('num',!empty($arr['num'])?$arr['num']:'');
        $this->assign('name',!empty($arr['name'])?$arr['name']:'');
        $this->assign('mobile',!empty($arr['mobile'])?$arr['mobile']:'');
        $this->assign('page',$all->render());
        $this->assign('all',$all->items());
        return $this->fetch();
    }
    /**
     * 订单发货
     */
    public function fahuo(){
        if ($this->request->param()){
            $param=input('param.id');
            //获取订单数据
            $one=Db::name('zj_order')->alias('o')->join('user u','o.uid=u.id','left')
                ->where('o.id',$param)->field('o.*,u.user_nickname')->find();
            //获取快递公司数据
            $kd=Db::name('zj_kd')->select();
            //获取订单商品
            $all=Db::name('zj_order_goods')->alias('og')->join('zj_goods g','og.gid=g.id')->where('oid',$param)
                ->field('g.name,og.num')->select();
            if ($one['step']>2){
                echo "<div style='width: 100%;text-align: center;padding-top: 50px'><p style='font-size: 25px'>订单已发货</p></div>";
            }elseif ($one['step']==1){
                echo "<div style='width: 100%;text-align: center;padding-top: 50px'><p style='font-size: 25px'>订单未支付</p></div>";
            }else{
                $this->assign('kd',$kd);
                $this->assign('one',$one);
                $this->assign('all',$all);
                return $this->fetch();
            }
        }
    }
    /**
     * 订单发货提交
     */
    public function fhPost(){
        if ($this->request->param()){
            $param=input('param.');
            if (empty($param['kd_num'])){
                $this->error('快递单号不能为空');
            }

            $param['step']=3;
            $edit=Db::name('zj_order')->update($param);
            //引入快递订阅接口
            $kd=new KdnApiController();
            $kds=$kd->orderTracesSubByJson($param['id']);
            $kds=json_decode($kds,true);
            if ($kds['Success']==true){
                $kds='快递状态订阅成功';
            }else{
                $kds='快递状态订阅失败';
            }
            if (empty($edit)){
                $this->error('订单状态更新失败,'.$kds);
            }else{
                $this->success('订单状态更新成功,'.$kds);
            }
        }
    }
    /**
     * 订单退款审核
     */
    public function check(){
        if ($this->request->param()){
            $param=input('param.id');
            //获取订单数据
            $one=Db::name('zj_order')->alias('o')->join('user u','o.uid=u.id','left')->where('o.id',$param)
                ->field('o.*,u.user_nickname')->find();
            //获取订单商品
            $all=Db::name('zj_order_goods')->alias('og')->join('zj_goods g','og.gid=g.id')->where('oid',$param)
                ->field('g.name,g.price,og.num')->select();
            if ($one['step']<6){
                echo "<div style='width: 100%;text-align: center;padding-top: 50px'><p style='font-size: 25px'>订单未退货</p></div>";
            }elseif ($one['step']>6){
                echo "<div style='width: 100%;text-align: center;padding-top: 50px'><p style='font-size: 25px'>退款审核通过</p></div>";
            }else{
                $this->assign('one',$one);
                $this->assign('all',$all);
                return $this->fetch();
            }
        }
    }

    /**
     * 订单退款审核提交
     */
    public function checkPost(){
        if ($this->request->param()){
            $param=input('param.');
            //判断审核是否通过
            if (!empty($param['sta'])){
                $param['step']=5;
                unset($param['sta']);
                $edit=Db::name('zj_order')->update($param);
            }else{
                $param['step']=7;
                $edit=Db::name('zj_order')->update($param);
            }
            if (empty($edit)){
                $this->error('订单状态更新失败');
            }else{
                $this->success('订单状态更新成功');
            }
        }
    }
    /**
     * 订单退款
     */
    public function refund(){
        if ($this->request->param()){
            $param=input('param.id');
            //获取订单数据
            $one=Db::name('zj_order')->alias('o')->join('user u','o.uid=u.id','left')->where('o.id',$param)
                ->field('o.*,u.user_nickname')->find();
            //获取订单商品
            $all=Db::name('zj_order_goods')->alias('og')->join('zj_goods g','og.gid=g.id')->where('oid',$param)
                ->field('g.name,g.price,og.num')->select();
            if ($one['step']>8){
                echo "<div style='width: 100%;text-align: center;padding-top: 50px'><p style='font-size: 25px'>订单已退款</p></div>";
            }elseif ($one['step']<8){
                echo "<div style='width: 100%;text-align: center;padding-top: 50px'><p style='font-size: 25px'>订单状态错误</p></div>";
            }else{
                $this->assign('one',$one);
                $this->assign('all',$all);
                return $this->fetch();
            }
        }
    }
    /**
     * 订单退款提交
     */
    public function refundPost(){
        if ($this->request->param()){
            $param=input('param.');
            if ($param['tui']<=0){
                $this->error('退款金额需大于0');
            }

            $param['step']=9;
            unset($param['tui']);//删除无用数据
            $edit=Db::name('zj_order')->update($param);
            if (empty($edit)){
                $this->error('订单退款失败');
            }else{
                $this->success('订单退款成功');
            }
        }
    }

}