<?php /** * Created by PhpStorm. * User: 29925 * Date: 2018/8/20 * Time: 10:57 */ namespace app\admin\controller; use app\admin\model\LogisticsModel; use cmf\controller\AdminBaseController; use think\Db; class LogisticsController extends AdminBaseController { protected $table; protected $logistics_model; public function _initialize() { $this->table = 'Logistics'; $this->logistics_model = new LogisticsModel(); } /** * 物流列表 * @adminMenu( * 'name' => '物流列表', * 'parent' => 'admin/OrderOption/default', * 'display'=> true, * 'hasView'=> true, * 'order' => 10000, * 'icon' => '', * 'remark' => '物流列表', * 'param' => '' * ) */ public function index() { $param = $this->request->param(); $where = [ 'delete_time'=>0, 'is_del'=>0 ]; if(isset($param['keyword'])) { $where['name'] = ['like','%'.$param['keyword'].'%']; } $list = $this->singleData($this->table,$where,2,['create_time'=>'DESC']); $list->appends($param); $this->assign('list',$list->items()); $this->assign('page',$list->render()); $this->assign('keyword',isset($param['keyword']) ? $param['keyword'] : ''); return $this->fetch(); } /** * 导入excel数据 * @adminMenu( * 'name' => '导入excel数据', * 'parent' => 'index', * 'display'=> false, * 'hasView'=> false, * 'order' => 10000, * 'icon' => '', * 'remark' => '导入excel数据', * 'param' => '' * ) */ public function excel() { list($status, $msg, $file) = $this->upload(); if($status == 0) { $this->error($msg); } $excel = $file['filepath']; // 获取excel内容的数据 $array = $this->import_excel('./upload/'.$excel); //执行导入操作 Db::startTrans(); $t = 24 * 60 * 60; foreach ($array as $k=>$v) { // if(!$this->logistics_model->check($v[1])) { $insert['mobile'] = $update['mobile'] = $v[0]; $insert['send_time'] = $update['send_time'] = date('Y-m-d H:i:s',\PHPExcel_Shared_Date::ExcelToPHP($v[1])); $insert['version'] = $update['version'] = $v[2]; $insert['express'] = $update['express'] = $v[3]; $insert['is_del'] = $update['is_del'] = $v[4]; if(empty($v[4])) { $insert['is_del'] = $update['is_del'] = 0; } $info = $this->logistics_model->where(['express'=>$insert['express']])->find(); if($info) { $update['id'] = $info['id']; $update['update_time'] = time(); if(!$this->logistics_model->editLogistics($update)) { Db::rollback(); $this->error('数据导入中出错,请重试'); } } else { if(!$this->logistics_model->addLogistics($insert)) { Db::rollback(); $this->error('数据导入中出错,请重试'); } } // } } Db::commit(); $this->success('数据导入成功'); } /** * 导入excel文件 * @param string $file excel文件路径 * @return array excel文件内容数组 */ private function import_excel($file){ // 判断文件是什么格式 $type = pathinfo($file); $type = strtolower($type["extension"]); if($type =='xlsx' ){ $type = 'Excel2007'; }else{ $type = 'Excel5'; } ini_set('max_execution_time', '0'); vendor('phpoffice.phpexcel'); // 判断使用哪种格式 $objReader = \PHPExcel_IOFactory::createReader($type); $objPHPExcel = $objReader->load($file); $sheet = $objPHPExcel->getSheet(0); // 取得总行数 $highestRow = $sheet->getHighestRow(); // 取得总列数 $highestColumn = $sheet->getHighestColumn(); //循环读取excel文件,读取一条,插入一条 $data=array(); //从第二行开始读取数据 for($j=2;$j<=$highestRow;$j++){ //从A列读取数据 for($k='A';$k<=$highestColumn;$k++){ // 读取单元格 $cell = $objPHPExcel->getActiveSheet()->getCell("$k$j")->getValue(); if(is_object($cell)) { $data[$j][] = $cell->__toString(); } else { $data[$j][] = $cell; } } } return $data; } /** * 添加物流 * @adminMenu( * 'name' => '添加物流', * 'parent' => 'index', * 'display'=> false, * 'hasView'=> false, * 'order' => 2, * 'icon' => '', * 'remark' => '添加物流', * 'param' => '' * ) */ public function add() { return $this->fetch(); } /** * 添加物流提交 * @adminMenu( * 'name' => '添加物流提交', * 'parent' => 'index', * 'display'=> false, * 'hasView'=> false, * 'order' => 3, * 'icon' => '', * 'remark' => '添加物流提交', * 'param' => '' * ) */ public function addPost() { if($this->request->isAjax()) { $post = $this->request->param(); $validate = $this->validate($post, $this->table); if ($validate !== true) { $this->error($validate); } $result = $this->logistics_model->addLogistics($post); if (!$result) { $this->error('添加失败'); } $this->success('添加成功',url('Logistics/index')); } } /** * 编辑物流 * @adminMenu( * 'name' => '编辑物流', * 'parent' => 'index', * 'display'=> false, * 'hasView'=> false, * 'order' => 4, * 'icon' => '', * 'remark' => '编辑物流', * 'param' => '' * ) */ public function edit() { $id = $this->request->param('id',0,'intval'); if(!$id) { $this->error('参数错误'); } $info = $this->singleData($this->table,['id'=>$id,'delete_time'=>0]); $this->assign($info); return $this->fetch(); } /** * 编辑物流提交 * @adminMenu( * 'name' => '编辑物流提交', * 'parent' => 'index', * 'display'=> false, * 'hasView'=> false, * 'order' => 5, * 'icon' => '', * 'remark' => '编辑物流提交', * 'param' => '' * ) */ public function editPost() { if($this->request->isPost()) { $id = $this->request->param('id', 0, 'intval'); if (!$id) { $this->error('参数错误'); } $post = $this->request->param(); $validate = $this->validate($post, $this->table); if ($validate !== true) { $this->error($validate); } $result = $this->logistics_model->editLogistics($post); if (!$result) { $this->error('修改失败'); } $this->success('修改成功'); } } /** * 删除物流 * @adminMenu( * 'name' => '删除物流', * 'parent' => 'index', * 'display'=> false, * 'hasView'=> false, * 'order' => 6, * 'icon' => '', * 'remark' => '删除物流', * 'param' => '' * ) */ public function delete() { $id = $this->request->param('id',0,'intval'); $ids = $this->request->param('ids/a'); if(isset($id)) { $result = $this->logistics_model->where(['id'=>$id])->update(['delete_time'=>time()]); } if(isset($ids)) { $result = $this->logistics_model->where(['id'=>['in',$ids]])->update(['delete_time'=>time()]); } if(!$result) { $this->error('删除失败'); } $this->success('删除成功'); } }