*/ class Bidding extends Admin { /** * 列表数据接口 * @return mixed|string|\think\Collection|\think\response\Json * @throws \app\common\SdException */ public function listData() { return $this ->setField('i.id,i.title,i.province,i.city,i.project_title,i.purchase_unit,i.contact_person,i.contact_person_tel,i.status,i.is_urgent,i.tag_ids,i.open_bid_time,i.create_time,i.status status_1,i.contract_title,i.contractNo,i.projectNo,i.sort') ->setSort('sort,desc')->setSort('create_time,desc') ->listsRequest(); } /** * @return array|string|\think\response\Json * @throws \think\db\exception\DataNotFoundException * @throws \think\db\exception\DbException * @throws \think\db\exception\ModelNotFoundException * @author Deng * @date 2020-12-21 18:43 * 中标详情 */ public function details(){ $id = $this->request->get('id'); if(!$id){ return ResponseJson::fail('参数错误'); } $bidding = \app\common\model\Bidding::where(['id'=>$id])->find()->toArray(); $data = Db::name('tender')->alias('t') ->leftJoin('member m','m.id=t.member_id') ->where(['t.bidding_id'=>$bidding['id'],'m.delete_time'=>0,'t.delete_time'=>0]) ->field('t.tender_price,t.create_time,t.file_id,m.username,m.mobile,m.company') ->find(); if(isset($data['file_id']) && !empty($data['file_id'])){ $update_file = Db::name('resource')->where('id',$data['file_id'])->find(); $data['update_file'] = !empty($update_file) ? ''.$update_file['tag'].'' :''; } return T::data([$bidding,$data], true)->title(['标书资料','投标资料'])->render([ [ T::tr( T::td('标题', 'title'), T::td('省份', 'province'), T::td('城市', 'city',3) ), T::tr( T::td('项目名称', 'project_title'), T::td('项目编号', 'projectNo'), T::td('项目所在地', 'project_address',3) ), T::tr( T::td('合同名称', 'contract_title'), T::td('合同编号', 'contractNo'), T::td('采购单位', 'purchase_unit',3) ), T::tr( T::td('联系人', 'contact_person'), T::td('招标人', 'bidding_person'), T::td('联系人电话', 'contact_person_tel'), T::td('开标时间', 'open_bid_time') ) ], [ T::tr( T::td('姓名', 'username'), T::td('电话', 'mobile'), T::td('公司', 'company') ), T::tr( T::td('投标价格', 'tender_price'), T::td('投标时间', 'create_time'), T::td('投标文件', 'update_file') ), ] ]); } /** * @param \app\common\model\Tender $tender * @return array|\think\response\View * @author Deng * @date 2020-12-23 14:58 * 投标列表 */ public function tenderList(\app\common\model\Tender $tender){ $id = $this->request->get('id'); return $this->fetch('common/list_page',['table'=>$this->getPage()->getTenderList(),'id'=>$id]); } /** * @return array * @throws \think\db\exception\DbException * @author Deng * @date 2020-12-23 14:58 * 投标列表数据 */ public function tenderData(){ $id = $this->request->get('id'); $limit = $this->request->get('limit'); $data = \app\common\model\Tender::alias('t') ->leftJoin('member m','m.id=t.member_id') ->leftJoin('bidding b','b.id=t.bidding_id') ->field('t.id,t.status,t.tender_price,m.username,b.title,b.contract_title,t.create_time,b.id bidding_id,t.file_id,t.ip,t.ip_address,m.company') ->where(['t.bidding_id'=>$id,'t.delete_time'=>0])->order('tender_price desc')->paginate($limit??10)->toArray(); if($data['data']){ foreach ($data['data'] as $key => $value){ $data['data'][$key]['status'] = $value['status']==1 ? '中标' : '未中标'; if ($value['file_id']){ $resource = Db::name('resource')->where('id',$value['file_id'])->find(); $path = '/upload/watermark/'.$resource['md5'].'.jpg'; if(file_exists(\think\facade\App::getRootPath().$path)){ if(strstr($resource['tag'],'.pdf')){ $tag = str_replace('.pdf','.jpg',$resource['tag']); $data['data'][$key]['file_id'] = ''.$resource['tag'].''; }else{ $data['data'][$key]['file_id'] = ''.$resource['tag'].''; } }else{ $data['data'][$key]['file_id'] = '无'; } } } } return ['code'=>0,'data'=>$data['data'],'count'=>$data['total']]; } /** * @return \think\response\Json * @throws \think\db\exception\DataNotFoundException * @throws \think\db\exception\DbException * @throws \think\db\exception\ModelNotFoundException * @author Deng * @date 2020-12-23 17:23 * 中标 */ public function winningBiding(){ $getData = $this->request->get(); $bidding_info = \app\common\model\Tender::where('id',$getData['id'])->find()->toArray(); if(\app\common\model\Tender::where(['status'=>1,'bidding_id'=>$bidding_info['bidding_id'],'delete_time'=>0])->find()){ return ResponseJson::fail('改标已经中标'); } Db::startTrans(); try { //修改投标状态 $upTender = Db::name('tender')->where('id',$getData['id'])->update(['status'=>1,'update_time'=>date('Y-m-d H:i:s')]); if(!$upTender){ db::rollback(); return ResponseJson::fail('更新投标失败'); } //修改招标状态 $upBidding = \app\common\model\Bidding::where(['id'=>$bidding_info['bidding_id']])->update(['status'=>1,'update_time'=>date('Y-m-d H:i:s')]); if(!$upBidding){ db::rollback(); return ResponseJson::fail('修改招标状态失败'); } //发送通知 $bidding = \app\common\model\Bidding::where('id',$bidding_info['bidding_id'])->find()->toArray(); $content= '恭喜您通过招标。请您和我司负责人'.$bidding['contact_person'].'进行沟通联系方式:'.$bidding['contact_person_tel']; $createNotice = \app\common\model\Notice::create([ 'member_id' => $bidding_info['member_id'], 'bidding_id' => $bidding_info['id'], 'content' => $content, 'contract_title' => $bidding['contract_title'] ]); if(!$createNotice){ db::rollback(); return ResponseJson::fail('发送投标成功通知失败'); } db::commit(); return ResponseJson::success('','中标成功'); } catch (\Exception $exception) { db::rollback(); return ResponseJson::fail($exception->getMessage()); } } /** * @return \think\response\File * @author Deng * @date 2020-12-21 18:43 * 下载 */ public function download() { $getData = request()->get(); $str = App::getRootPath() . $getData['path']; return download($str, $getData['tag']); } }