OrderController.php 6.8 KB
<?php
/**
 * Created by PhpStorm.
 * User: Administrator
 * Date: 2019/6/5
 * Time: 19:55
 */

namespace app\portal\controller;


use app\portal\model\AddressModel;
use app\portal\model\IndentGoodsModel;
use app\portal\model\IndentModel;
use cmf\controller\WeChatBaseController;
use think\Db;

class OrderController extends WeChatBaseController
{
    /**
     * 全部订单
     * @return mixed
     * @throws \think\db\exception\DataNotFoundException
     * @throws \think\db\exception\ModelNotFoundException
     * @throws \think\exception\DbException
     */
    public function get_all(){
        $state = $this->request->param('state',0,'intval');
//        if(!empty($state)){
//            $where1['state'] = ['eq',$state];
//        }
        $user_id = cmf_get_current_user_id();
        $indentModel = new IndentModel();
        $where1['uid'] = ['eq',$user_id];
        $data = $indentModel->selectData($where1);
        if(!empty($data)){
            $indentGoodsModel = new IndentGoodsModel();
            foreach($data as $key => $vo){
                $where2['indent_id'] = ['eq',$vo['id']];
                $indentGoods = $indentGoodsModel->selectData($where2);
                $data[$key]['indent_goods'] = $indentGoods;
                if($vo['is_courier'] == 1){
                    if(empty($vo['name'])){
                        unset($data[$key]);
                    }
                }else if($vo['is_courier'] == 2){
                    if(empty($vo['indent_address'])){
                        unset($data[$key]);
                    }
                }else{
                    unset($data[$key]);
                }
            }
        }
        $this->assign('data',$data);
        $this->assign('state',$state);
        return $this->fetch();
    }
    public function get_one(){
        $id = $this->request->param('id',0,'intval');
        if(empty($id)){
            $this->error('缺少必要参数','','','');
        }
        $user_id = cmf_get_current_user_id();
        $where1['uid'] = ['eq',$user_id];
        $where1['id'] = ['eq',$id];
        $indentModel = new IndentModel();
        $data = $indentModel->findData($where1)->toArray();
        if(empty($data)){
            $this->error('未查询到该订单','','','');
        }
        $where2['indent_id'] = ['eq',$data['id']];
        $indentGoodsModel = new IndentGoodsModel();
        $indentGoods = $indentGoodsModel->selectData($where2);
        $addressModle = new AddressModel();
        $address = $addressModle->findData(['id'=>$data['indent_address']]);
        $data['address'] = $address;
        $data['indent_goods'] = $indentGoods;
        $this->assign('data',$data);
        //显示售后咨询手机号
        $phone = Db::name('token') -> where('id',3) -> find();
        $this -> assign('phone',$phone);
        return $this->fetch();
    }
    public function cancel_order(){
        $id = $this->request->param('id',0,'intval');
        if(empty($id)){
            $this->error('缺少必要参数','','','');
        }
        $where1['id'] = ['eq',$id];
        $indentModel = new IndentModel();
        $data = $indentModel->findData($where1);
        if(empty($data)){
            $this->error('缺少必要参数','','','');
        }
        if($data['state'] != 4){
            $this->error('订单不是待支付状态','','','');
        }
        $result = $indentModel->deleteData($where1);
        if(empty($result)){
            $this->error('sql执行失败','','','');
        }
        $this->success('SUCCESS');
    }
    public function delivery(){
        $id = $this->request->param('indent_id',0,'intval');
        if(empty($id)){
            $this->error('缺少必要参数');
        }
        $where1['id'] = ['eq',$id];
        $indentModel = new IndentModel();
        $data = $indentModel->findData($where1);
        if(empty($data)){
            $this->error('缺少必要参数','','','');
        }
        $where2['indent_id'] = ['eq',$data['id']];
        $indentGoodsModel = new IndentGoodsModel();
        $indentGoods = $indentGoodsModel->selectData($where2);
        $data['indent_goods'] = $indentGoods;
        $data['create_time'] = date('Y-m-d H:i:s',$data['create_time']);
        if($data['state'] != 5){
            $this->error('订单不是待收货状态','','','');
        }
        $result = $indentModel->updateData($where1,['state'=>3]);
        if(empty($result)){
            $this->error('sql执行失败','','','');
        }
        $this->success('SUCCESS','',$data);
    }

    /**
     * 判断用户去支付是否为上级业务员所卖书籍
     */
    public function is_my_salesman(){

        $uid = cmf_get_current_user_id();
        $indent_id = $_POST['indent_id'];
        //获取这条订单
        $indent = Db::name('indent') -> where('id',$indent_id) -> find();
        //如果这条订单为平台订单
        if($indent['indent_type'] == 1){
            //获取这条订单下的所有商品
            $pingtai_goods = Db::name('indent_goods') -> where('indent_id',$indent_id) -> select();
            //循环判断商品是否存在是否下架
            foreach ($pingtai_goods as $key => $val){
                $pt_goods = Db::name('goods') -> where('id',$val['goods_id']) -> find();
                //判断商品是否存在
                if(empty($pt_goods)){
                    return false;
                }
                //判断商品是否下架
                if($pt_goods['is_out'] == 0){
                    return false;
                }
            }
            return true;
        }
        //获取当前用户身份
        $my_user = Db::name('my_user') -> where('uid',$uid) -> find();
        //判断用户身份 获取上级业务员
        if($my_user['status'] == 3){
            //当为老师时
            $salesman = Db::name('my_user') -> where('id',$my_user['pid']) -> find();
            if(empty($salesman)){
               return false;
            }
        }
        if($my_user['status'] == 4){
            //当为学生时
            $teacher = Db::name('my_user') -> where('id',$my_user['pid']) -> find();
            if(empty($teacher)){
                return false;
            }
            $salesman = Db::name('my_user') -> where('id',$teacher['pid']) -> find();
        }

        //获取订单下的商品
        $indent_goods = Db::name('indent_goods') -> where('indent_id',$indent_id) -> select();
        foreach ($indent_goods as $key => $val){
            $goods = Db::name('goods') -> where('id',$val['goods_id']) -> find();
            //判断商品是否存在
            if(empty($goods)){
                return false;
            }
            //判断商品是否下架
            if($goods['is_out'] == 0){
                return false;
            }
            if($salesman['uid'] != $goods['uid']){
                return false;
            }

        }
        return true;

    }

































}