public function download() { // 批量下载 $config = C('UPLOAD_TYPE_CONFIG'); $config['domain'] = '7xlf9w.com2.z0.glb.qiniucdn.com'; $config['bucket'] = 'zjfq-contract'; $qiniu = new \Common\Util\Qiniu($config); // 查询打包状态 $pid = I('pid'); if ($pid) { $ret = $qiniu->status($pid) or ajax_error('无法获取打包状态!'); if ($ret['code'] == 1 || $ret['code'] == 2) { ajax_success(); } if ($ret['code'] == 3) { ajax_error($ret['items'][0]['error']); } elseif ($ret['code'] == 0) { // 打包完成 $row = M('loan_order_contract_download')->where(['qiniu_persistent_id' => $pid])->find(); // 标识已下载 M('loan_order_contract')->where(['order_id' => ['in', $row['order_ids']]])->save(['is_download' => 1, 'use_time' => time() - $row['created']]); // 标识所用时间 M('loan_order_contract_download')->save(['id' => $row['id'], 'use_time' => time() - $row['created']]); // 返回下载地址 $url = $qiniu->downLink($row['zip_file']); $url = $url . '?e=' . (time() + 60); $url .= '&token=' . $qiniu::sign($qiniu->sk, $qiniu->ak, $url); ajax_success($url); } else { system_warn('未知返回结果:' . print_r($ret, true)); ajax_error('未知状态!'); } } $ids = explode(',', I('get.ids')) or $this->error('参数错误!'); $model = new \Loan\Model\OrderContractModel(); if (count($ids) <= 1) { $id = $ids[0]; $url = $model->pdfUrl(I('id')) or $this->error($model->getError()); M('loan_order_contract')->save(['order_id' => $id, 'is_download' => 1]); header('Location: ' . $url); exit; } $orders = M('loan_order_contract')->where(['order_id' => ['in', $ids]])->field('order_id,url')->select() or $this->error('找不到此电子合同记录!'); $urls = []; foreach ($orders as $key => $row) { $url = $row['url'] or $this->error('找不到订单的合同地址:' . $row['order_id']); $url = $url . '?e=' . (time() + 60); $urls[] = $url . '&token=' . $qiniu::sign($qiniu->sk, $qiniu->ak, $url); } $ret = $qiniu->mkzip($urls) or $this->error('无法请求七牛打包接口!'); M('loan_order_contract_download')->add(['created' => time(), 'zip_file' => $ret['zip_file'], 'qiniu_persistent_id' => $ret['persistent_id'], 'order_ids' => implode(',', $ids), 'order_count' => count($ids)]); $this->success($ret['persistent_id']); }