success('请求成功'); } //轮播图 public function banner() { $list = Db::name('banner')->field('id, title, image, url')->order('weigh', 'desc')->select(); $list = list_domain_image($list, ['image']); $this->success('轮播图', $list); } //接线员 public function operator() { $province = input('province', '', 'trim'); //省 $city = input('city', '', 'trim'); //市 $area = input('area', '', 'trim'); //区 $keyword = input('keyword', '', 'trim'); //关键字 $where['status'] = 1; if ($province) { $where['province'] = $province; } if ($city) { $where['city'] = $city; } if ($area) { $where['area'] = $area; } if ($keyword !== '') { $where['name|mobile'] = ['like', '%'.$keyword.'%']; } $list = Db::name('operator')->field('id, name, mobile, avatar, province, city, area')->where($where) ->page($this->page, config('paginate.list_rows'))->order('weigh', 'desc')->select(); $list = list_domain_image($list, ['avatar']); $this->success('接线员', $list); } //价格走势 public function pricetrend() { $info = Db::name('platform_info')->field('title, content')->where(['type' => 2])->find(); $this->success('价格走势', $info); } //精选推荐列表 public function mark() { $province = input('province', '', 'trim'); //省 $keyword = input('keyword', '', 'trim'); //关键字 $where['endtime'] = ['gt', time()]; $where['status'] = 1; if ($province) { $where['province'] = $province; } if ($keyword !== '') { $where['name|pig_type|pig_breed_type|province|city|area|address'] = ['like', '%'.$keyword.'%']; } $list = Db::name('mark')->field('id, name, image, pig_type, heft, price, province, city, area') ->where($where)->page($this->page, config('paginate.list_rows'))->order('createtime', 'desc')->select(); $list = list_domain_image($list, ['image']); $mark_bid = Db::name('mark_bid'); foreach ($list as &$v) { $v['bid_count'] = $mark_bid->where(['mark_id' => $v['id']])->count('id'); } $this->success('精选推荐列表', $list); } //招标详情 public function markinfo() { $id = input('id', 0, 'intval'); if (!$id) { $this->error('参数缺失'); } $info = Db::name('mark')->find($id); if (!$info) { $this->error('数据不存在'); } $info = info_domain_image($info, ['image', 'video', 'defective_images', 'road_images', 'pig_out_images']); $info['createtime'] = date('Y-m-d H:i:s', $info['createtime']); $info['remaintime'] = $info['endtime'] - time() > 0 ? $info['endtime'] - time() : 0; //投标剩余时间 $info['again_bid'] = process_time($info['again_bid']); //再次投标间隔时间处理 $this->success('招标详情', $info); } //投标 public function markbid() { $id = input('id', 0, 'intval'); //招标id $price = input('price', '', 'trim'); //报价/斤 $number = input('number', 0, 'intval'); //购买数量 $pig_pulling_time = input('pig_pulling_time', '', 'strtotime'); //预计拉猪时间 if (!$id) { $this->error('参数缺失'); } if (!preg_match('/^[0-9]+(.[0-9]{1,2})?$/', $price) || $price <= 0) { $this->error('请输入正确报价'); } if ($number <= 0) { $this->error('请输入购买数量'); } if ($pig_pulling_time < time()) { $this->error('请选择正确拉猪时间'); } if ($this->auth->is_auth != 2) { $this->error('请先完成实名认证'); } $info = Db::name('mark')->find($id); if (!$info) { $this->error('招标信息不存在'); } if ($info['status'] != 1) { $this->error('招标已经结束'); } if ($info['endtime'] < time()) { $this->error('招标已经结束'); } //查询是否投过标 $bid_info = Db::name('mark_bid')->where(['user_id' => $this->auth->id, 'mark_id' => $id])->order('createtime', 'desc')->find(); if ($bid_info) { if ($price <= $bid_info['price']) { $this->error('价格不能低于上次报价'); } if ($info['again_bid'] > 0) { if (time() - $bid_info['updatetime'] < $info['again_bid']) { $this->error('您刚投标过,请稍等一会'); } } } $data['user_id'] = $this->auth->id; $data['mark_id'] = $id; $data['order_sn'] = date('YmdHis', time()) . rand(10000000, 99999999); $data['price'] = $price; $data['number'] = $number; $data['pig_pulling_time'] = $pig_pulling_time; $data['province'] = $info['province']; $data['city'] = $info['city']; $data['area'] = $info['area']; $data['createtime'] = time(); $data['updatetime'] = time(); //开启事务 Db::startTrans(); //添加投标记录 $rs = Db::name('mark_bid_record')->insertGetId($data); if (!$rs) { Db::rollback(); $this->error('投标失败'); } if ($bid_info) { //已经投标过, 更新实时投标数据 $_data['order_sn'] = $data['order_sn']; $_data['price'] = $price; $_data['number'] = $number; $_data['pig_pulling_time'] = $pig_pulling_time; $_data['updatetime'] = time(); $result = Db::name('mark_bid')->where(['id' => $bid_info['id'], 'user_id' => $this->auth->id, 'price' => $bid_info['price']])->setField($_data); } else { $result = Db::name('mark_bid')->insertGetId($data); } if (!$result) { Db::rollback(); $this->error('投标失败'); } $rt = Db::name('mark_bid')->where(['user_id' => $this->auth->id, 'mark_id' => $id])->count('id'); if ($rt != 1) { Db::rollback(); $this->error('投标失败'); } Db::commit(); $this->success('投标成功'); } //猪只类型 public function pigbreedtype() { $list = Db::name('pig_breed_type')->field('id, name')->order('weigh', 'desc')->select(); $this->success('猪只类型', $list); } //立即投标筛选列表 public function marklist() { $pig_breed_type = input('pig_breed_type', '', 'trim'); //猪只类型 $province = input('province', '', 'trim'); //省 $city = input('city', '', 'trim'); //市 $area = input('area', '', 'trim'); //区 if (!$pig_breed_type) { $this->error('请选择猪只类型'); } if (!$province && !$city && !$area) { $this->error('请选择地区'); } $where['pig_breed_type'] = $pig_breed_type; $where['endtime'] = ['gt', time()]; $where['status'] = 1; if ($province) { $where['province'] = $province; } if ($city) { $where['city'] = $city; } if ($area) { $where['area'] = $area; } $list = Db::name('mark')->field('id, area, pig_type, heft, number, price') ->where($where)->order('createtime', 'desc')->select(); $this->success('立即投标筛选列表', $list); } //立即投标页面备注 public function bidremark() { $info = Db::name('platform_info')->field('content')->where(['type' => 3])->find(); $this->success('立即投标页面备注', $info); } //投标管理列表 public function bidlist() { $type = input('type', 1, 'intval'); //类型 1全部 2竞标中 3=中标 4=未中标 $time = input('time', '', 'strtotime'); //时间 $province = input('province', '', 'trim'); //省 $city = input('city', '', 'trim'); //市 $area = input('area', '', 'trim'); //区 $where['user_id'] = $this->auth->id; if ($type > 1) { $where['status'] = $type - 2; //状态:0=竞标中,1=中标,2=未中标 } if (!$time) { $time = strtotime(date('Y-m-d 0:0:0', time())); } $where['createtime'] = ['between', [$time, $time + 86400]]; if ($province) { $where['province'] = $province; } if ($city) { $where['city'] = $city; } if ($area) { $where['area'] = $area; } $list = Db::name('mark_bid')->where($where) ->page($this->page, config('paginate.list_rows'))->order('id', 'desc')->select(); $mark = Db::name('mark'); $mark_bid = Db::name('mark_bid'); foreach ($list as &$v) { $v['pig_pulling_time'] = date('Y-m-d H:i:s', $v['pig_pulling_time']); //排名 $v['ranking'] = $mark_bid->where(['mark_id' => $v['mark_id'], 'price' => ['egt', $v['price']]])->count('id'); $v['mark'] = $mark->find($v['mark_id']); $v['mark'] = info_domain_image($v['mark'], ['image', 'video', 'defective_images', 'road_images', 'pig_out_images']); $v['mark']['endtime'] = date('Y-m-d H:i:s', $v['mark']['endtime']); } $this->success('投标管理列表', $list); } //投标记录 public function bidrecord() { $id = input('id', 0, 'intval'); //招标id if (!$id) { $this->error('参数缺失'); } $info = Db::name('mark')->find($id); if (!$info) { $this->error('招标信息不存在'); } $list = Db::name('mark_bid')->field('id, price, number, createtime') ->where(['user_id' => $this->auth->id, 'mark_id' => $id]) ->page($this->page, config('paginate.list_rows'))->order('id', 'desc')->select(); foreach ($list as &$v) { $v['createtime'] = date('Y-m-d H:i:s', $v['createtime']); } $this->success('投标记录', $list); } //投标详情 public function bidinfo() { $id = input('id', 0, 'intval'); //投标记录id if (!$id) { $this->error('参数缺失'); } $where['user_id'] = $this->auth->id; $where['id'] = $id; $info = Db::name('mark_bid')->where($where)->find(); if (!$info) { $this->error('记录不存在'); } $mark = Db::name('mark'); $info['pig_pulling_time'] = date('Y-m-d H:i:s', $info['pig_pulling_time']); $info['mark'] = $mark->find($info['mark_id']); $info['mark'] = info_domain_image($info['mark'], ['image', 'video', 'defective_images', 'road_images', 'pig_out_images']); $info['mark']['endtime'] = date('Y-m-d H:i:s', $info['mark']['endtime']); $this->success('投标详情', $info); } }