'无', self::STATUS_BIDDING_ONGOING => '竞标中', self::STATUS_BIDDING_WIN => '中标', self::STATUS_BIDDING_FAILED => '未中标', ]; // 竞标状态 const STATUS_PROCESS_NO = 0; //未处理 const STATUS_PROCESS_ONGOING = 1; //待确认 const STATUS_PROCESS_CONFIRMED = 2; //已确认 const STATUS_PROCESS_FAILED = 3; //已拒绝 const STATUS_PROCESS_TIMEOUT = 4; //超时弃权 const PROCESS_STATUS_MAP = [ self::STATUS_PROCESS_NO => '未处理', self::STATUS_PROCESS_ONGOING => '待确认', self::STATUS_PROCESS_CONFIRMED => '已确认', self::STATUS_PROCESS_FAILED => '已拒绝', self::STATUS_PROCESS_TIMEOUT => '超时弃权', ]; /** * 创建竞标记录 * * @param array $data 需求数据 * @param int $userId 用户ID * @return bool * @throws Exception */ public static function create($data, $userId) { $saveData = $data + [ 'user_id' => $userId, 'bidding_status' => self::STATUS_BIDDING_ONGOING, 'process_status' => self::STATUS_PROCESS_NO, ]; $result = self::$Model::create($saveData); if (!$result) { throw new Exception('需求保存失败'); } return true; } public static function joinBidding() { } /** * 设为中标 * @param $demandBidding * @return void */ public static function setWin($demandBidding) { DB::transaction(function () use ($demandBidding) { $demandId = $demandBidding->demand_id; $demand = DemandService::getOne(['id' => $demandId]); $where = ['demand_id' => $demandId, 'bidding_status' => DemandBiddingService::STATUS_BIDDING_WIN]; $winBidding = DemandBiddingService::where($where)->find(); if ($winBidding) { exception('请先执行重置投标操作'); } if ($demandBidding->bidding_status != CommonService::ONGOING) { exception('用户投标状态异常不能中标'); } //设置为已中标 $demandBidding->bidding_status = DemandBiddingService::STATUS_BIDDING_WIN; $demandBidding->process_status = DemandBiddingService::STATUS_PROCESS_ONGOING; $saveRes = $demandBidding->save(); if (!$saveRes) { exception('更新中标状态失败'); } //发送接单成功提醒消息 $msgData = [ 'values' => [ $demand->parent_order_no, mb_substr($demand->desc, 0, 8), mb_substr($demand->desc, 0, 11), SubscribeMessageService::MSG_MAP[SubscribeMessageService::MSG_TEMP_DEMAND_RECEIVE]['remark'], ] ]; (new EasyWeChatService())->sendMsg($demandBidding->user_id, SubscribeMessageService::MSG_TEMP_DEMAND_RECEIVE, $msgData); }); } }