123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112 |
- <?php
- namespace app\common\service;
- use app\common\model\demand\Biddings;
- use app\common\traits\ServiceTrait;
- use Exception;
- use think\Db;
- class DemandBiddingService
- {
- use ServiceTrait;
- /** @var Biddings */
- public static $Model = Biddings::class;
- // 竞标状态
- const STATUS_BIDDING_NO = 0; //无
- const STATUS_BIDDING_ONGOING = 1; //竞标中
- const STATUS_BIDDING_WIN = 2; //中标
- const STATUS_BIDDING_FAILED = 3; //未中标
- const BIDDING_STATUS_MAP = [
- self::STATUS_BIDDING_NO => '无',
- 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);
- });
- }
- }
|