getOrder(); if($order===''){ $order='id desc'; } $map = $this->getMap(); $data_list = Db::name('collage_products')->where($map)->order($order)->paginate(); $page = $data_list->render(); return ZBuilder::make('table') ->setPageTitle('') // 设置页面标题 ->setPageTips('') // 设置页面提示信息 ->hideCheckbox() //隐藏第一列多选框 ->setTableName('collage_products') // 指定数据表名 ->addOrder('id,end_at') // 添加排序 ->addTopSelect('status', '全部拼单状态', ['0'=>'进行中','1'=>'拼单成功','2'=>'拼单失败']) //添加顶部下拉筛选 ->setSearch(['id' => 'ID', 'title' => '产品名称'], '', '', '搜索') // 设置搜索参数 ->addColumns([ ['id', 'ID'], ['title', '产品名称'], ['collage_price', '拼单价格(元)'], ['collage_price', '购买价格(元)'], ['require_orders', '拼单要求'], ['collage_orders', '当前人数','callback',function($value,$data){ return db('collage_orders')->where(['collage_product_id'=>$data['id']])->count('id'); },'__data__'], ['end_at', '截止时间','datetime', '未知','Y-m-d H:i'], ['status','拼单状态','status', '', ['进行中','拼单成功','拼单失败:danger']], ['audit_status', '判定', 'callback',function($value,$data,$menu_id){ if($data['status']==0){ if(!if_menu_auth($menu_id)) return ''; return "$data['id'],'status'=>'1'])."' class='btn btn-xs btn-default ajax-get confirm'>判定成功$data['id'],'status'=>'2',])."' class='btn btn-xs btn-default ajax-get confirm'>判定失败"; }else{ return '已判定'; } },'__data__','244'], ['right_button', '操作', 'btn'], ]) //添加多列数据 //->addRightButton('custom',['title'=>'查看详情','href'=>url('look',['id'=>'__ID__'])],true) ->addRightButton('edit',['title'=>'编辑产品']) ->addRightButton('custom',['title'=>'查看订单','href'=>url('mall/collageorder/index',['collage_product_id'=>'__ID__'])]) ->addTopButton('add',['title'=>'新建产品']) //->addTopButton('custom',['title'=>'判定成功','href'=>url('audit',['status'=>'1']),'icon'=>'fa fa-fw fa-calendar-check-o','class'=>'btn btn-primary ajax-post confirm']) //->addTopButton('custom',['title'=>'判定失败','href'=>url('audit',['status'=>'2']),'icon'=>'fa fa-fw fa-calendar-times-o','class'=>'btn btn-primary ajax-post confirm']) ->setRowList($data_list) // 设置表格数据 ->setPages($page) // 设置分页数据 ->fetch(); } /*public function look($id=''){ $collage_product=Db::name("collage_products")->where('id',$id)->find(); if(!$collage_product){ return $this->error('请求错误'); } // 使用ZBuilder快速创建表单 }*/ public function audit(){ $status=input('status','0'); if($status!='1' && $status!='2'){ return $this->error('请求错误'); } $now=time(); $ids = (Request::instance()->isGet()) ? input('ids') : input('post.ids/a'); $ids=(array)$ids; foreach ($ids as $key => $value) { if(Db::name('collage_products')->where('id',$value)->value('status')!='0'){ unset($ids[$key]); } } $rt=Db::name('collage_products')->where('id','in',$ids)->update(['status'=>$status,'updated_at'=>$now]); if($rt!==false){ if($status=='1'){ //判定订单状态 Db::name('collage_orders')->where('collage_product_id','in',$ids)->update(['state'=>'1','updated_at'=>$now]); //记录订单事件 $collage_order_ids=Db::name('collage_orders')->field('id')->where('collage_product_id','in',$ids)->select(); foreach ($collage_order_ids as $key => $value) { Db::name('collage_order_events')->insertGetId(['collage_order_id'=>$value['id'],'event'=>'拼单成功','created_at'=>$now,'updated_at'=>$now]); } $tips='成功'; }else{ //判定订单状态 Db::name('collage_orders')->where('collage_product_id','in',$ids)->update(['state'=>'2','updated_at'=>$now]); //记录订单事件 $collage_order_ids=Db::name('collage_orders')->field('id')->where('collage_product_id','in',$ids)->select(); foreach ($collage_order_ids as $key => $value) { Db::name('collage_order_events')->insertGetId(['collage_order_id'=>$value['id'],'event'=>'拼单失败','created_at'=>$now,'updated_at'=>$now]); } $tips='失败'; } return $this->success('已判定为拼单'.$tips); } else { return $this->error('数据库写入错误'); } } public function add(){ //判断是否为post请求 if (Request::instance()->isPost()) { $now=time(); //获取请求的post数据 $data=input('post.'); //数据输入验证 $validate = new Validate([ 'title|标题'=> 'require|length:1,20', 'weight|重量' => 'require|gt:0|regex:^\d{0,5}(\.\d{1,3})?$', 'bland|品牌' => 'require', 'require_orders|拼单要求' => 'require|gt:0|regex:^\d{0,10}$', 'collage_price|拼单价格' => 'require|gt:0|regex:^\d{0,10}(\.\d{1,2})?$', 'price|购买价格' => 'require|gt:0|regex:^\d{0,10}(\.\d{1,2})?$', 'end_at|截止时间' => 'require', 'admin_attachment_ids|图片' => 'require', 'detail|产品详情' => 'require' ]); if (!$validate->check($data)) { return $this->error($validate->getError()); } if ($data['collage_price']>=$data['price']) { return $this->error('拼单价格必须小于购买价格'); } $data['end_at']=strtotime($data['end_at']); if ($data['end_at']<=$now) { return $this->error('截止时间必须在当前时间之后'); } if (count(explode(',',$data['admin_attachment_ids']))>5) { return $this->error('图片最多只能上传五张'); } //数据处理 $insert=array(); $insert['title']=$data['title']; $insert['spec']=$data['spec']; $insert['size']=$data['size']; $insert['weight']=$data['weight']; $insert['bland']=$data['bland']; $insert['require_orders']=$data['require_orders']; $insert['collage_price']=$data['collage_price']; $insert['price']=$data['price']; $insert['end_at']=$data['end_at']; $insert['admin_attachment_ids']=$data['admin_attachment_ids']; $insert['detail']=$data['detail']; $insert['created_at']=$now; $insert['updated_at']=$now; //数据更新 $insert_id=Db::name("collage_products")->insertGetId($insert); //跳转 if($insert_id>0){ return $this->success('发布拼单产品成功',url('index')); } else { return $this->error('发布拼单产品失败'); } } // 使用ZBuilder快速创建表单 return ZBuilder::make('form') ->setPageTitle('新建拼单产品') // 设置页面标题 ->setPageTips('请认真编辑相关信息') // 设置页面提示信息 ->setBtnTitle('submit', '发布') //修改默认按钮标题 ->addBtn('') //添加额外按钮 ->addText('title', '标题','必填,限制在20个字以内') ->addText('spec', '规格描述','') ->addText('size', '尺寸','') ->addText('weight', '重量','必填,规则范围0.001~99999.999', '', ['', 'KG']) ->addText('bland', '品牌','必填') ->addText('require_orders', '拼单要求','必填,即最低订单笔数,规则范围1~9999999999') ->addText('collage_price', '拼单价格','必填,若有人参与拼单后则不可修改,需小于购买价格,规则范围0.01~9999999999.99', '', ['', '']) ->addText('price', '购买价格','必填,若有人直接购买或补差价购买后则不可修改,规则范围0.00~9999999999.99', '', ['', '']) ->addDatetime('end_at', '截止时间', '必选,需为确定提交之后的时间') ->addImages('admin_attachment_ids', '图片','必传,最多上传五张图片,第一张为主图') ->addUeditor('detail', '产品详情','') //->isAjax(false) //默认为ajax的post提交 ->fetch(); } public function edit($id=''){ //判断是否为post请求 if (Request::instance()->isPost()) { $now=time(); //获取请求的post数据 $data=input('post.'); //数据输入验证 $validate = new Validate([ 'title|标题'=> 'require|length:1,20', 'weight|重量' => 'require|gt:0|regex:^\d{0,5}(\.\d{1,3})?$', 'bland|品牌' => 'require', 'require_orders|拼单要求' => 'require|gt:0|regex:^\d{0,10}$', 'collage_price|拼单价格' => 'require|gt:0|regex:^\d{0,10}(\.\d{1,2})?$', 'price|购买价格' => 'require|gt:0|regex:^\d{0,10}(\.\d{1,2})?$', 'end_at|截止时间' => 'require', 'admin_attachment_ids|图片' => 'require', 'detail|产品详情' => 'require' ]); if (!$validate->check($data)) { return $this->error($validate->getError()); } if ($data['collage_price']>=$data['price']) { return $this->error('拼单价格必须小于购买价格'); } $data['end_at']=strtotime($data['end_at']); if ($data['end_at']where('id',$data['id'])->value('end_at')) { return $this->error('截止时间不能小于原来的截止时间'); } if (count(explode(',',$data['admin_attachment_ids']))>5) { return $this->error('图片最多只能上传五张'); } //数据处理 $update=array(); $update['id']=$data['id']; $update['title']=$data['title']; $update['spec']=$data['spec']; $update['size']=$data['size']; $update['weight']=$data['weight']; $update['bland']=$data['bland']; $update['require_orders']=$data['require_orders']; $update['collage_price']=$data['collage_price']; $update['price']=$data['price']; $update['end_at']=$data['end_at']; $update['admin_attachment_ids']=$data['admin_attachment_ids']; $update['detail']=$data['detail']; $update['updated_at']=$now; //数据更新 $rt=Db::name("collage_products")->update($update); //跳转 if($rt!==false){ return $this->success('编辑拼单产品成功',url('index')); } else { return $this->error('编辑拼单产品失败'); } } // 接收id if ($id>0) { // 查处数据 $collage_product=Db::name("collage_products")->where('id',$id)->find(); if(!$collage_product){ return $this->error('请求错误'); } $col_order=db('collage_orders')->where('collage_product_id',$id)->where('state','in','1,2,3')->find(); if($col_order){ $col_attr='readonly'; $col_tips='已有人参与拼单,不能修改'; }else{ $col_attr=''; $col_tips='必填,需小于购买价格,规则范围0.01~9999999999.99'; } $buy_order=db('collage_orders')->where('collage_product_id',$id)->where('state','in','4')->find(); if($buy_order){ $buy_attr='readonly'; $buy_tips='已有人购买,不能修改'; }else{ $buy_attr=''; $buy_tips='必填,规则范围0.00~9999999999.99'; } // 使用ZBuilder快速创建表单 return ZBuilder::make('form') ->setPageTitle('编辑拼单产品') // 设置页面标题 ->setPageTips('请认真编辑相关信息') // 设置页面提示信息 ->setBtnTitle('submit', '发布') //修改默认按钮标题 ->addBtn('') //添加额外按钮 ->addText('title', '标题','必填,限制在20个字以内',$collage_product['title']) ->addText('spec', '规格描述','',$collage_product['spec']) ->addText('size', '尺寸','',$collage_product['size']) ->addText('weight', '重量','必填,规则范围0.001~99999.999',$collage_product['weight'], ['', 'KG']) ->addText('bland', '品牌','必填',$collage_product['bland']) ->addText('require_orders', '拼单要求','必填,即最低订单笔数,规则范围1~9999999999',$collage_product['require_orders']) ->addText('collage_price','拼单价格', $col_tips,$collage_product['collage_price'], ['', ''], $col_attr) ->addText('price', '购买价格',$buy_tips,$collage_product['price'], ['', ''], $buy_attr) ->addDatetime('end_at', '截止时间', '必选,需为确定提交之后的时间',date('Y-m-d H:i',$collage_product['end_at'])) ->addImages('admin_attachment_ids', '图片','必传,最多上传五张图片,第一张为主图',$collage_product['admin_attachment_ids']) ->addUeditor('detail', '产品详情','',$collage_product['detail']) ->addHidden('id',$collage_product['id']) //->isAjax(false) //默认为ajax的post提交 ->fetch(); } } }