isAjax()) { $page = input('page', 1); $page_size = input('page_size', PAGE_LIST_ROWS); $order = input("order", "create_time desc"); $verify_type = input('verify_type', "");//验证类型 $verify_code = input('verify_code', "");//验证码 $verifier_name = input('verifier_name', ""); $start_time = input("start_time", ''); $end_time = input("end_time", ''); $verify_from = input('verify_from', ''); $condition = [ [ 'site_id', "=", $this->site_id ], [ 'is_verify', '=', 1 ] ]; if (!empty($verify_type)) { $condition[] = [ "verify_type", "=", $verify_type ]; } if (!empty($verify_from)) { $condition[] = [ "verify_from", "=", $verify_from ]; } if (!empty($verify_code)) { $condition[] = [ "verify_code", 'like', '%' . $verify_code . '%' ]; } if (!empty($verifier_name)) { $condition[] = [ 'verifier_name', 'like', '%' . $verifier_name . '%' ]; } if (!empty($start_time) && empty($end_time)) { $condition[] = [ 'verify_time', '>=', date_to_time($start_time) ]; } elseif (empty($start_time) && !empty($end_time)) { $condition[] = [ "verify_time", "<=", date_to_time($end_time) ]; } elseif (!empty($start_time) && !empty($end_time)) { $condition[] = [ 'verify_time', 'between', [ date_to_time($start_time), date_to_time($end_time) ] ]; } $list = $verify_model->getVerifyPageList($condition, $page, $page_size, $order, $field = 'id, verify_code, verify_type, verify_type_name, verify_content_json, verifier_id, verifier_name,verify_from,verify_remark, is_verify, create_time, verify_time'); return $list; } else { $verify_type = $verify_model->getVerifyType(); $verify_from = $verify_model->verifyFrom; $this->assign('verify_from', $verify_from); $this->assign('verify_type', $verify_type); return $this->fetch("verify/lists"); } } /** * 核销记录 * @return mixed */ public function records() { $verify_model = new VerifyModel(); $verify_record_model = new VerifyRecord(); $verify_code = input('verify_code', "");//验证码 if (request()->isAjax()) { $page = input('page', 1); $page_size = input('page_size', PAGE_LIST_ROWS); $order = input("order", "create_time desc"); $verify_type = input('verify_type', "");//验证类型 $verifier_name = input('verifier_name', ""); $start_time = input("start_time", ''); $end_time = input("end_time", ''); $store_id = input('store_id', ''); $condition = [ [ 'vr.site_id', "=", $this->site_id ], // ['is_verify', '=', 1] ]; if (!empty($verify_type)) { $condition[] = [ "v.verify_type", "=", $verify_type ]; } if (!empty($store_id)) { $condition[] = [ "vr.store_id", "=", $store_id ]; } if (!empty($verify_code)) { $condition[] = [ "vr.verify_code", 'like', '%' . $verify_code . '%' ]; } if (!empty($verifier_name)) { $condition[] = [ 'vr.verifier_name', 'like', '%' . $verifier_name . '%' ]; } if (!empty($start_time) && empty($end_time)) { $condition[] = [ 'vr.verify_time', '>=', date_to_time($start_time) ]; } elseif (empty($start_time) && !empty($end_time)) { $condition[] = [ "vr.verify_time", "<=", date_to_time($end_time) ]; } elseif (!empty($start_time) && !empty($end_time)) { $condition[] = [ 'vr.verify_time', 'between', [ date_to_time($start_time), date_to_time($end_time) ] ]; } $list = $verify_record_model->getVerifyRecordsViewPageList($condition, $page, $page_size, $order, $field = 'id, verify_code, verify_type, verify_type_name, verify_content_json, verifier_id, verifier_name,verify_from,verify_remark, is_verify, create_time, verify_time'); return $list; } else { $verify_type = $verify_model->getVerifyType(); $verify_from = $verify_model->verifyFrom; $this->assign('verify_code', $verify_code); $this->assign('verify_from', $verify_from); $this->assign('verify_type', $verify_type); $store_list = (new Store())->getStoreList([ ['site_id', '=', $this->site_id] ], 'store_name,store_id'); $this->assign('store_list', $store_list['data']); return $this->fetch("verify/records"); } } /** * 订单核销 * @return mixed */ public function orderverify() { $verify_model = new VerifyModel(); if (request()->isAjax()) { $page = input('page', 1); $page_size = input('page_size', PAGE_LIST_ROWS); $verify_code = input('verify_code', ""); $start_time = input("start_time", ''); $end_time = input("end_time", ''); $verify_from = input('verify_from', ''); $verify_type = input('verify_type', ''); $is_verify = input('is_verify', ''); $condition = [ [ 'site_id', "=", $this->site_id ], ]; if (!empty($verify_type)) { $condition[] = [ "verify_type", "=", $verify_type ]; } if ($is_verify !== '') { $condition[] = [ "is_verify", "=", $is_verify ]; } if (!empty($verify_from)) { $condition[] = [ "verify_from", "=", $verify_from ]; } if (!empty($verify_code)) { $condition[] = [ "verify_code", 'like', '%' . $verify_code . '%' ]; } if (!empty($start_time) && empty($end_time)) { $condition[] = [ 'create_time', '>=', date_to_time($start_time) ]; } elseif (empty($start_time) && !empty($end_time)) { $condition[] = [ "create_time", "<=", date_to_time($end_time) ]; } elseif (!empty($start_time) && !empty($end_time)) { $condition[] = [ 'create_time', 'between', [ date_to_time($start_time), date_to_time($end_time) ] ]; } $list = $verify_model->getVerifyPageList($condition, $page, $page_size, 'id desc'); return $list; } else { $verify_count = $verify_model->getVerifyInfo([ [ 'site_id', '=', $this->site_id ] ], 'count(id) as total_count, sum(verify_use_num) as verify_use_num,is_verify,verify_content_json')[ 'data' ] ?? []; $this->assign('total_count', $verify_count[ 'total_count' ] ?? 0); $this->assign('verify_use_num', $verify_count[ 'verify_use_num' ] ?? 0); $verify_info = $verify_model->getVerifyInfo([ [ 'site_id', '=', $this->site_id ], [ 'verify_type', '=', 'virtualgoods' ] ], 'count(id) as total_count, sum(verify_total_count) as verify_total_count, sum(verify_use_num) as verify_use_num,is_verify,verify_content_json')[ 'data' ] ?? []; $this->assign('verify_goods_num', (int) abs($verify_info[ 'verify_total_count' ] - $verify_info[ 'verify_use_num' ])); $this->assign('verify_goods_count', $verify_info[ 'total_count' ]); $verify_info = $verify_model->getVerifyInfo([ [ 'site_id', '=', $this->site_id ], [ 'verify_type', '=', 'pickup' ] ], 'count(id) as total_count,sum(verify_total_count) as verify_total_count, sum(verify_use_num) as verify_use_num,is_verify,verify_content_json')[ 'data' ] ?? []; $this->assign('pickup_num', (int) abs($verify_info[ 'verify_total_count' ] - $verify_info[ 'verify_use_num' ])); $this->assign('pickup_count', $verify_info[ 'total_count' ]); $card_goods_count = $verify_model->getVerifyCount([ [ 'site_id', '=', $this->site_id ], [ 'verify_type', '=', 'cardgoods' ] ], 'id')[ 'data' ] ?? []; $verify_info = $verify_model->getVerifyInfo([ [ 'site_id', '=', $this->site_id ], [ 'verify_type', '=', 'cardgoods' ], ['verify_total_count', '>', 0] ], 'sum(verify_total_count) as verify_total_count, sum(verify_use_num) as verify_use_num,is_verify,verify_content_json')[ 'data' ] ?? []; $card_goods_num = (int) abs($verify_info[ 'verify_total_count' ] - $verify_info[ 'verify_use_num' ]); $card_goods_num += $verify_model->getVerifyCount([ [ 'site_id', '=', $this->site_id ], [ 'verify_type', '=', 'cardgoods' ], ['verify_total_count', '=', 0], ['expire_time', '>', 0], ['expire_time', '<', time()] ], 'id')[ 'data' ]; $this->assign('card_goods_num', $card_goods_num); $this->assign('card_goods_count', $card_goods_count); $verify_type = $verify_model->getVerifyType(); $this->assign('verify_type', $verify_type); return $this->fetch("verify/order_verify"); } } /** * 核销信息 */ public function verifyInfo() { $id = input('id', ''); $verify_model = new VerifyModel(); $info = $verify_model->getVerifyInfo([ [ 'id', '=', $id ], [ 'site_id', '=', $this->site_id ] ]); return $info; } /** * 核销台 * @return mixed */ public function verifyCard() { if (request()->isAjax()) { $verify_code = input("verify_code", ""); $verify_model = new VerifyModel(); $res = $verify_model->getVerifyInfo([ [ "verify_code", "=", $verify_code ], [ "site_id", "=", $this->site_id ] ]); return $res; } else { return $this->fetch("verify/verify_card"); } } /** * 核销 */ public function verify() { $info = array ( "verifier_id" => $this->uid, "verifier_name" => $this->user_info[ 'username' ], "verify_from" => 'shop' ); $verify_code = input("verify_code", ""); $verify_model = new VerifyModel(); $res = $verify_model->verify($info, $verify_code); return $res; } /** * 核销记录导出 */ public function exportVerify() { $verify_model = new VerifyModel(); $page = input('page', 1); $page_size = 0; $order = input("order", "create_time desc"); $verify_type = input('verify_type', "");//验证类型 $verify_code = input('verify_code', "");//验证码 $verifier_name = input('verifier_name', ""); $start_time = input("start_time", ''); $end_time = input("end_time", ''); $condition = [ [ 'site_id', "=", $this->site_id ], [ 'is_verify', '=', 1 ] ]; if (!empty($verify_type)) { $condition[] = [ "verify_type", "=", $verify_type ]; } if (!empty($verify_code)) { $condition[] = [ "verify_code", 'like', '%' . $verify_code . '%' ]; } if (!empty($verifier_name)) { $condition[] = [ 'verifier_name', 'like', '%' . $verifier_name . '%' ]; } if (!empty($start_time) && empty($end_time)) { $condition[] = [ 'verify_time', '>=', date_to_time($start_time) ]; } elseif (empty($start_time) && !empty($end_time)) { $condition[] = [ "verify_time", "<=", date_to_time($end_time) ]; } elseif (!empty($start_time) && !empty($end_time)) { $condition[] = [ 'verify_time', 'between', [ date_to_time($start_time), date_to_time($end_time) ] ]; } $list_result = $verify_model->getVerifyPageList($condition, $page, $page_size, $order, $field = 'id, verify_code, verify_type, verify_type_name, verify_content_json, verifier_id, verifier_name, is_verify, create_time, verify_time'); $list = $list_result[ 'data' ][ 'list' ]; // 实例化excel $phpExcel = new \PhpOffice\PhpSpreadsheet\Spreadsheet(); $phpExcel->getProperties()->setTitle("核销记录"); $phpExcel->getProperties()->setSubject("核销记录"); //单独添加列名称 $phpExcel->setActiveSheetIndex(0); $phpExcel->getActiveSheet()->setCellValue("A1", '核销码'); $phpExcel->getActiveSheet()->setCellValue("B1", '核销类型'); $phpExcel->getActiveSheet()->setCellValue("C1", '核销员'); $phpExcel->getActiveSheet()->setCellValue("D1", '状态'); $phpExcel->getActiveSheet()->setCellValue("E1", '创建时间'); $phpExcel->getActiveSheet()->setCellValue("F1", '核销时间'); if (!empty($list)) { foreach ($list as $k => $v) { $start = $k + 2; $phpExcel->getActiveSheet()->setCellValue('A' . $start, $v[ 'verify_code' ] . "\t"); $phpExcel->getActiveSheet()->setCellValue('B' . $start, $v[ 'verify_type_name' ] . "\t"); $phpExcel->getActiveSheet()->setCellValue('C' . $start, $v[ 'verifier_name' ] . "\t"); if ($v[ 'is_verify' ] == 1) { $verify_status = "已核销"; } else { $verify_status = "尚未核销"; } $phpExcel->getActiveSheet()->setCellValue('D' . $start, $verify_status . "\t"); $phpExcel->getActiveSheet()->setCellValue('E' . $start, time_to_date($v[ 'create_time' ]) . "\t"); $phpExcel->getActiveSheet()->setCellValue('F' . $start, time_to_date($v[ 'verify_time' ]) . "\t"); } } // 重命名工作sheet $phpExcel->getActiveSheet()->setTitle('核销记录'); // 设置第一个sheet为工作的sheet $phpExcel->setActiveSheetIndex(0); // 保存Excel 2007格式文件,保存路径为当前路径,名字为export.xlsx $objWriter = \PhpOffice\PhpSpreadsheet\IOFactory::createWriter($phpExcel, 'Xlsx'); $file = date('Y年m月d日-核销记录', time()) . '.xlsx'; $objWriter->save($file); header("Content-type:application/octet-stream"); $filename = basename($file); header("Content-Disposition:attachment;filename = " . $filename); header("Accept-ranges:bytes"); header("Accept-length:" . filesize($file)); readfile($file); unlink($file); exit; } }