• Tp3.2 组合查询


    // $where['status'] = 6;
    // // or
    // $where['final_price'] = ['gt', 0];
    // $where['status'] = 4;
    
    $where['_string'] = ' (status = 6)  OR ( status = 4 AND final_price > 0) ';
    

    用string最好实现了!

    请欣赏优美的代码!

    /**
     * 获取订单列表
     */
    public function getOrderList()
    {
        if (!$type = $_POST['type']) { // 1 待上门 2 待报价 3 待确认 4 待服务 5 待支付 6 已完成 7 已取消
            $this->json->E('缺少参数');
        }
        if (!in_array($type, [1, 2, 3, 4, 5, 6, 7])) {
            $this->json->E('类型数值有误');
        }
    
        if (!isset($_POST['page']) || $_POST['page'] < 1) {
            $_POST['page'] = 1;
        }
    
        if (!isset($_POST['page_size']) || $_POST['page_size'] < 1) {
            $_POST['page_size'] = C('PAGE_NORMAL_COUNT');
        }
    
        $where['master_uid'] = $this->uid;
    
        switch ($type) {
            case 1:
                $where['status'] = 3;
                break;
            case 2:
                $where['final_price'] = 0; // 报价服务
                $where['status'] = 4;
                break;
            case 3:
                $where['status'] = 5;
                break;
            case 4:
                // $where['status'] = 6;
                // // or
                // $where['final_price'] = ['gt', 0];
                // $where['status'] = 4;
    
                $where['_string'] = ' (status = 6)  OR ( status = 4 AND final_price > 0) ';
                break;
            case 5:
                $where['status'] = 7;
                break;
            case 6:
                $where['status'] = 8;
                break;
            case 7:
                $where['status'] = ['lt',0];
                break;
        }
    
        $page = $_POST['page'];
        $page_size = $_POST['page_size'];
    
        // 获取总数
        $service_order = M('service_order');
        $count = $service_order->where($where)->count();
        $total_page = ceil($count / $page_size);
    
        if ($page > $total_page) {
            $this->json->setErr(0, '没有更多了');
            $return_data = ['data_list' => [], 'total_page' => $total_page, 'current_page' => $page];
            $this->json->setAttr('data', $return_data);
            $this->json->Send();
        }
    
        $data_list = $service_order->where($where)
            ->order('id desc')
            ->limit((($page - 1) * $page_size) . ',' . $page_size)
            ->select();
    
        $serviceService = new ServiceService();
        if ($data_list) {
            // 获取服务信息
            $service = M('service');
            $service_type = M('service_type');
            $tmp_list = [];
            foreach ($data_list as $k => &$v) {
                $tmp = [];
                // 订单id、订单号
                $tmp['id'] = $v['id'];
                $tmp['order_num'] = $v['order_num'];
    
                // 地址信息
                $tmp['address'] = $serviceService->getAddressFromJson($v['address_json']);
    
                // 上门时间
                $tmp['visit_date'] = $serviceService->getVisitDate($v['order_visit_time']);
                $tmp['visit_section'] = $v['order_visit_section'];
    
                // 预计佣金
                if ($type != 7) {
                    $tmp['commission_price'] = $serviceService->getCommissionFromOrder($v);
                }
                
                // 类别
                $service_info = $service->where(['id' => $v['service_id']])->find();
                $tmp['type_name'] = $service_type->where(['id' => $service_info['type_id']])->getField('name');
    
                // 下单时间
                $tmp['first_pay_time'] = date('Y-m-d H:i', $v['first_pay_time']);
    
                $tmp['is_quote'] = $v['final_price'] == 0 ? 1 : 0;
    
                $tmp['status'] = $v['status'];
                $tmp['status_str'] = $serviceService->getOrderStatus($v['status'], $tmp['is_quote']);
    
                $tmp_list[] = $tmp;
            }
        }
    
        $out_data = $tmp_list ?: [];
        $return_data = ['data_list' => $out_data, 'total_page' => $total_page, 'current_page' => $page];
        $this->json->S($return_data);
    }
    
  • 相关阅读:
    Oracle:解锁scott用户及设置密码
    js生成条形码
    返回头部效果
    密码强度
    事件委托小效果
    圆形导航效果
    进度条效果
    标题跟随效果
    随机抽人小效果
    点击创建效果
  • 原文地址:https://www.cnblogs.com/jiqing9006/p/12576479.html
Copyright © 2020-2023  润新知