<?php /** * Created by PhpStorm. * User: 29925 * Date: 2018/8/16 * Time: 14:14 */ namespace app\admin\controller; use app\admin\model\OrderModel; use cmf\controller\AdminBaseController; use think\Db; class OrderController extends AdminBaseController { protected $table; protected $order_model; protected $option_table; protected $sort_model; public function _initialize() { $this->table = 'Order'; $this->order_model = new OrderModel(); $this->option_table = 'OrderOption'; $this->sort_model[1] = '<div class="text_item form_options" data-validate="{validate}"> <p class="text_tit"><span class=" _validate">{name}</span>{must}</p> <input type="text" name="" id="" value="{value}" class="baby_input" placeholder="请输入{name}" /> </div>'; $this->sort_model[2] = '<div class="text_item form_options" data-validate="{validate}"> <p class="text_tit"><span class=" _validate">{name}</span>{must}</p> <input type="number" name="" id="" value="{value}" class="baby_input" placeholder="请输入{name}" /> </div>'; $this->sort_model[3] = '<div class="text_item form_options" data-validate="{validate}"> <p class="text_tit"><span class=" _validate">{name}</span>{must}</p> <input type="number" maxlength="11" name="" id="" value="{value}" class="baby_input" placeholder="请输入{name}" /> </div>'; $this->sort_model[4] = '<div class="write_tit form_options" data-validate="{validate}"> <p class="tit"><span class=" _validate">{name}</span></p> <div class="flex_style"> {options} </div> </div>'; $this->sort_model[5] = '<div class="text_item form_options" data-validate="{validate}"> <p class="text_tit"><span class=" _validate">{name}</span>{must}</p> <input type="text" name="" id="" value="{value}" class="baby_input" placeholder="请输入{name}" /> </div>'; $this->sort_model[6] = '<div class="text_item form_options" data-validate="{validate}"> <p class="text_tit"><span class=" _validate">{name}</span>{must}</p> <textarea class="baby_input">{value}</textarea> </div>'; $this->sort_model[7] = '<div class="text_item form_options" data-validate="{validate}"> <p class="text_tit"><span class=" _validate">{name}</span>{must}</p> <input type="text" name="" id="product" value="{value}" class="baby_input" placeholder="请选择{name}" /> <img src="__TMPL__/public/mobile/images/youjiantou.png" class="jiantou" /> </div>'; $this->sort_model[8] = '<div class="write_wrap" style="margin: 0;" data-validate="{validate}"> <p class="text_tit" style="line-height: 0.6rem;"><span class=" _validate">{name}</span>{must}</p> </div> <div class="up_wrap form_options"> <div class="up_pic"> <i class="iconfont icon-msnui-cloud-upload"></i> <p class="click_up">点击上传</p> </div> </div>'; $this->sort_model[10] = '<div class="text_item no_margin form_options" data-validate="{validate}"> <p class="text_tit"><span class=" _validate">{name}</span>{must}</p> <input type="text" name="" id="birthday" readonly="readonly" value="{value}" class="baby_input" placeholder="请选择{name}" /> <img src="__TMPL__/public/mobile/images/youjiantou.png" class="jiantou" /> </div>'; $this->sort_model[11] = '<div class="text_item form_options" data-validate="{validate}"> <p class="text_tit"><span class=" _validate">{name}</span>{must}</p> <weui-distpicker province="广东省" city="广州市" area="海珠区"></weui-distpicker> <input type="text" name="" id="address" readonly="readonly" value="{value}" class="baby_input" placeholder="请输入{name}" /> <img src="__TMPL__/public/mobile/images/youjiantou.png" class="jiantou" /> </div>'; } /** * 电子订单列表 * @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 ]; if(isset($param['keyword'])) { $where['order_sn|sort_name|user_login|number'] = ['like','%'.$param['keyword'].'%']; } if(!empty($param['sort_id'])) { $where['sort_id'] = $param['sort_id']; } if(isset($param['status']) && $param['status'] >= 0) { $where['status'] = $param['status']; } if(isset($param['is_excel']) && $param['is_excel'] >= 0) { $where['is_excel'] = $param['is_excel']; } if(isset($param['is_over']) && $param['is_over'] >= 0) { if($param['is_over'] == 0) { $where['over_time'] = ['egt',time()]; } if($param['is_over'] == 1) { $where['over_time'] = ['lt',time()]; } } $startTime = empty($param['start_time']) ? 0 : strtotime($param['start_time']); $endTime = empty($param['end_time']) ? 0 : strtotime($param['end_time']); if (!empty($startTime) && !empty($endTime)) { $where['create_time'] = [['>= time', $startTime], ['<= time', $endTime]]; } else { if (!empty($startTime)) { $where['create_time'] = ['>= time', $startTime]; } if (!empty($endTime)) { $where['create_time'] = ['<= time', $endTime]; } } $list = Db::name('order_view')->where($where)->paginate(10); $list->appends($param); $this->assign('list',$list->items()); $this->assign('page',$list->render()); $this->assign('keyword',isset($param['keyword']) ? $param['keyword'] : ''); $this->assign('sort_id',isset($param['sort_id']) ? $param['sort_id'] : ''); $this->assign('status',isset($param['status']) ? $param['status'] : ''); $this->assign('is_excel',isset($param['is_excel']) ? $param['is_excel'] : ''); $this->assign('is_over',isset($param['is_over']) ? $param['is_over'] : ''); $this->assign('start_time',isset($param['start_time']) ? $param['start_time'] : ''); $this->assign('end_time',isset($param['end_time']) ? $param['end_time'] : ''); // 订单类型 $sortList = Db::name('OrderSort')->where(['delete_time'=>0])->select()->toArray(); $this->assign('sortList',$sortList); return $this->fetch(); } /** * 电子订单列表(表单类型下) * @adminMenu( * 'name' => '电子订单列表', * 'parent' => 'admin/OrderSort/index', * 'display'=> false, * 'hasView'=> false, * 'order' => 1, * 'icon' => '', * 'remark' => '电子订单列表(表单类型下)', * 'param' => '' * ) */ public function index_sort() { $param = $this->request->param(); $where = [ 'delete_time'=>0 ]; if(empty($param['sort_id'])) { $this->error('参数错误'); } $where['sort_id'] = $param['sort_id']; if(isset($param['keyword'])) { $where['sort_name'] = ['like','%'.$param['keyword'].'%']; } $startTime = empty($filter['start_time']) ? 0 : strtotime($filter['start_time']); $endTime = empty($filter['end_time']) ? 0 : strtotime($filter['end_time']); if (!empty($startTime) && !empty($endTime)) { $where['create_time'] = [['>= time', $startTime], ['<= time', $endTime]]; } else { if (!empty($startTime)) { $where['create_time'] = ['>= time', $startTime]; } if (!empty($endTime)) { $where['create_time'] = ['<= time', $endTime]; } } $list = Db::name('order_view')->where($where)->paginate(10); $list->appends($param); $this->assign('list',$list->items()); $this->assign('page',$list->render()); $this->assign('keyword',isset($param['keyword']) ? $param['keyword'] : ''); $this->assign('sort_id',$param['sort_id']); // 订单类型 $sortList = Db::name('OrderSort')->where(['delete_time'=>0])->select()->toArray(); $this->assign('sortList',$sortList); return $this->fetch(); } /** * 电子订单列表(销售人员下) * @adminMenu( * 'name' => '电子订单列表', * 'parent' => 'admin/OrderSort/index', * 'display'=> false, * 'hasView'=> false, * 'order' => 2, * 'icon' => '', * 'remark' => '电子订单列表(销售人员下)', * 'param' => '' * ) */ public function index_sales() { $param = $this->request->param(); $where = [ 'delete_time'=>0 ]; if(empty($param['user_id'])) { $this->error('参数错误'); } $where['user_id'] = $param['user_id']; if(isset($param['keyword'])) { $where['order_sn|sort_name|user_login|number'] = ['like','%'.$param['keyword'].'%']; } $startTime = empty($filter['start_time']) ? 0 : strtotime($filter['start_time']); $endTime = empty($filter['end_time']) ? 0 : strtotime($filter['end_time']); if (!empty($startTime) && !empty($endTime)) { $where['create_time'] = [['>= time', $startTime], ['<= time', $endTime]]; } else { if (!empty($startTime)) { $where['create_time'] = ['>= time', $startTime]; } if (!empty($endTime)) { $where['create_time'] = ['<= time', $endTime]; } } $list = Db::name('order_view')->where($where)->paginate(10); $list->appends($param); $this->assign('list',$list->items()); $this->assign('page',$list->render()); $this->assign('keyword',isset($param['keyword']) ? $param['keyword'] : ''); $this->assign('user_id',$param['user_id']); // 订单类型 $sortList = Db::name('OrderSort')->where(['delete_time'=>0])->select()->toArray(); $this->assign('sortList',$sortList); return $this->fetch(); } /** * 用户数据导出 * @adminMenu( * 'name' => '用户数据导出', * 'parent' => 'index', * 'display'=> false, * 'hasView'=> false, * 'order' => 3, * 'icon' => '', * 'remark' => '用户数据导出', * 'param' => '' * ) */ public function excel() { $param = $this->request->param(); $where = [ 'delete_time'=>0 ]; if(!empty($param['ids'])) { $where['id'] = ['in',$param['ids']]; } if(isset($param['keyword'])) { $where['order_sn|sort_name|user_login|number'] = ['like','%'.$param['keyword'].'%']; } if(!empty($param['sort_id'])) { $where['sort_id'] = $param['sort_id']; } if(isset($param['status']) && $param['status'] >= 0) { $where['status'] = $param['status']; } if(isset($param['is_excel']) && $param['is_excel'] >= 0) { $where['is_excel'] = $param['is_excel']; } if(isset($param['is_over']) && $param['is_over'] >= 0) { if($param['is_over'] == 0) { $where['over_time'] = ['egt',time()]; } if($param['is_over'] == 1) { $where['over_time'] = ['lt',time()]; } } $startTime = empty($param['start_time']) ? 0 : strtotime($param['start_time']); $endTime = empty($param['end_time']) ? 0 : strtotime($param['end_time']); if (!empty($startTime) && !empty($endTime)) { $where['create_time'] = [['>= time', $startTime], ['<= time', $endTime]]; } else { if (!empty($startTime)) { $where['create_time'] = ['>= time', $startTime]; } if (!empty($endTime)) { $where['create_time'] = ['<= time', $endTime]; } } $list = Db::name('order_view')->where($where)->select()->toArray(); $this->expList($list); } // 数据导出 private function expList($array) { //导出Excel $objPHPExcel = new \PHPExcel(); //Add some data $objPHPExcel->setActiveSheetIndex(0) ->setCellValue('A1', 'ID') ->setCellValue('B1', '订单号') ->setCellValue('C1', '订单类型') ->setCellValue('D1', '销售用户名') ->setCellValue('E1', '订单确认码') ->setCellValue('F1', '订单状态') ->setCellValue('G1', '收集状态') ->setCellValue('H1', '发布时间') ->setCellValue('I1', '失效时间'); $i = 2; foreach ($array as $v) { $status = '未支付'; if($v['status'] == 1) { $status = '已支付'; } $is_stop = '收集中'; if($v['is_stop'] == 1) { $is_stop = '已停止'; } $objPHPExcel->setActiveSheetIndex(0) ->setCellValue('A' . $i, $v['id']) ->setCellValueExplicit('B' . $i, $v['order_sn'],\PHPExcel_Cell_DataType::TYPE_STRING) // ->setCellValueExplicit('B' . $i, $v['order_sn'],\PHPExcel_Cell_DataType::TYPE_STRING) ->setCellValue('C' . $i, $v['sort_name']) ->setCellValue('D' . $i, $v['user_login']) ->setCellValue('E' . $i, $v['number']) ->setCellValue('F' . $i, $status) ->setCellValue('G' . $i, $is_stop) ->setCellValue('H' . $i, date('Y-m-d H:i',$v['create_time'])) ->setCellValue('I' . $i, date('Y-m-d H:i',$v['over_time'])); $i++; Db::name('Order')->where(['order_sn'=>$v['order_sn']])->update(['is_excel'=>1,'excel_time'=>time()]); } $filename = '订单数据导出'. date('Y-m-d').'.xls'; ob_end_clean(); header("Content-type:application/vnd.ms-excel;charset=UTF-8"); header('Content-Type: application/vnd.ms-excel'); header('Content-Disposition: attachment;filename="' . $filename . '"'); header('Cache-Control: max-age=0'); $objWriter = \PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5'); $objWriter->save('php://output'); } /** * 编辑订单 * @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('参数错误'); } $where = [ 'id' => $id, 'delete_time'=>0 ]; $info = Db::name('order_view')->where($where)->find(); $info['options'] = json_decode($info['options'],true); foreach ($info['options'] as $k=>$v) { $optionsInfo = $this->singleData($this->option_table,['id'=>$v['id']]); $v['name'] = $optionsInfo['name']; $v['html'] = $this->form_model($v); $info['group'][] = $v; } $this->assign($info); return $this->fetch(); } // 处理订单模型数据 private function form_model($formData) { $html = $this->sort_model[$formData['type']]; $html = str_replace('{name}',$formData['name'],$html); if($formData['checked'] == 1) { $html = str_replace('{must}','*',$html); $html = str_replace('{validate}',1,$html); } else { $html = str_replace('{must}','',$html); $html = str_replace('{validate}',0,$html); } if(!empty($formData['values']) && $formData['values'] != null) { $array = explode(',',$formData['values']); $options = ''; foreach ($array as $k=>$v) { $active = isset($formData['user_choose'])?($formData['user_choose']==$v?'active':''):($k==0?'active':''); $options .= '<p class="order_style '.$active.'">'.$v.'</p>'; } $html = str_replace('{options}',$options,$html); } if(!empty($formData['user_choose'])) { $html = str_replace('{value}',$formData['user_choose'],$html); } else { $html = str_replace('{value}','',$html); } return $html; } /** * 修改订单收集状态 * @adminMenu( * 'name' => '修改订单收集状态', * 'parent' => 'index', * 'display'=> false, * 'hasView'=> false, * 'order' => 5, * 'icon' => '', * 'remark' => '修改订单收集状态', * 'param' => '' * ) */ public function stop() { $param = $this->request->param(); $msg = ''; if (isset($param['ids']) && isset($param["is_stop"])) { $stop = $param["is_stop"]; $ids = $this->request->param('ids/a'); $this->order_model->where(['id' => ['in', $ids]])->update(['is_stop' => $stop, 'update_time' => time()]); if($stop == 0) { $msg = "开启收集成功!"; } if($stop == 1) { $msg = "停止收集成功!"; } $this->success($msg, ''); } if (isset($param['id']) && isset($param["is_stop"])) { $stop = $param["is_stop"]; $id = $this->request->param('id'); $this->order_model->where(['id' => $id])->update(['is_stop' => $stop, 'update_time' => time()]); if($stop == 0) { $msg = "开启收集成功!"; } if($stop == 1) { $msg = "停止收集成功!"; } $this->success($msg,''); } } /** * 删除订单 * @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->order_model->where(['id'=>$id])->update(['delete_time'=>time()]); } if(isset($ids)) { $result = $this->order_model->where(['id'=>['in',$ids]])->update(['delete_time'=>time()]); } if(!$result) { $this->error('删除失败'); } $this->success('删除成功'); } }