wqData['uniacid'], 'reserve'); if (!$power) { echo json_encode(['code' => 2, 'msg' => '暂无权限']); die; } } //预约下订单 public function actionSaveAppointmentOrder() { $request = Yii::$app->request; $result=axios_request(); $userId=$this->wqData['userId']; $now=time(); $uniacid=$this->wqData['uniacid']; if($request->isGet){ return $this->result(2, '请求异常'); } $user=(new \yii\db\Query()) ->from('{{%ybwm_member}}') ->where('id=:id',[':id'=>$userId])->one(); if ($user['isBlack'] == 1) { return $this->result(2, '账号异常,请联系管理员!!!'); } $region=(new \yii\db\Query()) ->from('{{%ybwm_table_area}}') ->where('id=:id',[':id'=>$result['region']])->one(); if (!$region) { return $this->result(2, '区域信息异常!'); } $data['userId'] = $userId; $data['storeId'] = $result['storeId']; $data['uniacid'] = $uniacid; $data['money'] = $region['money']; $data['state'] = 1; $data['outTradeNo'] = date("YmdHis") . rand(111111, 999999); $data['origin'] = $this->wqData['appType']; $data['createdAt'] = $now; $data['people'] = $result['people']; $data['serviceAt'] = strtotime($result['serviceAt']); $data['serviceDay'] = date("m-d", $data['serviceAt']); $data['serviceTime'] = date("H:i", $data['serviceAt']); $data['region'] = $result['region']; $data['userName'] = $result['userName']; $data['userTel'] = $result['userTel']; $data['sex'] = $result['sex']; $data['note'] = $result['note']; $res = Yii::$app->db->createCommand()->insert('{{%ybwm_appointment}}', $data)->execute(); $id = Yii::$app->db->getLastInsertID(); if ($res) { if($region['money']<=0){ CallbackOrder::appointmentOrder($id,0); } return $this->result(1, '下单成功', $id); } else { return $this->result(2, '下单失败'); } } //查看我的预约 public function actionMyAppointmentOrder() { $result=axios_request(); $userId=$this->wqData['userId']; $page=$result['page']?:1; $num=($page-1)*10; $limit=10; $table=(new \yii\db\Query()) ->select('c.name as regionName,a.id,a.createdAt,a.storeId,b.name as storeName,b.icon as storeIcon,a.people,a.serviceDay,a.serviceTime,a.state') ->from('{{%ybwm_appointment}} as a') ->leftJoin('{{%ybwm_store}} as b','a.storeId=b.id') ->leftJoin('{{%ybwm_table_area}} as c','a.region=c.id') ->where('a.state>1 AND a.deleteAt=0 AND a.userDeleteAt=0 AND a.userId=:userId',[':userId'=>$userId]); $list=$table->offset($num) ->limit($limit)->orderBy('a.id desc')->all(); return $this->result(1, '成功',$list); } //查看预约详情// public function actionAppointmentOrderInfo() { $result=axios_request(); $table=(new \yii\db\Query()) ->select('c.name as regionName,a.outTradeNo,a.note,a.sex,a.money,a.code,a.userName,a.userTel,a.createdAt,a.storeId,b.name as storeName,b.icon as storeIcon,a.people,a.serviceDay,a.serviceTime,a.state') ->from('{{%ybwm_appointment}} as a') ->leftJoin('{{%ybwm_store}} as b','a.storeId=b.id') ->leftJoin('{{%ybwm_table_area}} as c','a.region=c.id') ->where('a.id=:id',[':id'=>$result['id']]); $list=$table->orderBy('a.id desc')->one(); return $this->result(1, '成功',$list); } //操作 public function actionOperationAppointmentOrder() { $result=axios_request(); $order =(new \yii\db\Query()) ->from('{{%ybwm_appointment}}') ->where('id=:id',[':id'=>$result['id']])->one(); if($result['type']=='cancel'){ $storeSet = Config::getStoreSet('appointment', $order['storeId']); $storeSet['cancelTime'] = $storeSet['cancelTime'] ?: 60; $time = time() + $storeSet['cancelTime'] * 60; if ($time > $order['serviceAt']) { return $this->result(2, '超过提前取消时间,无法取消订单!'); } $res=Order::reserveCancel($result['id'],1); } if($result['type']=='del'){ if ($order['state'] ==2) { return $this->result(2, '该订单状态无法删除!'); } $res = YII::$app->db->createCommand()->update('{{%ybwm_appointment}}', ['userDeleteAt'=>time()], ['id'=>$result['id']])->execute(); } if ($res) { return $this->result(1, '成功!'); } else { return $this->result(2, '失败!'); } } //预约选项 public function actionAppointmentOptions() { $result=axios_request(); $storeSet = Config::getStoreSet('appointment', $result['storeId']); $days = $storeSet['days'] ?: 7; $selectDay = $storeSet['selectDay'] ?: 1; $storeSet['interval'] = $storeSet['interval'] ?: 60; if ($selectDay == 2) { $daysArr = dateRange(strtotime('+1days', time()), $days); } else { $daysArr = dateRange('', $days); } $storeSet['end']=strtotime($storeSet['end']); $storeSet['start']=strtotime($storeSet['start']); $second = floor(($storeSet['end'] - $storeSet['start']) % 86400 / 60); //相差多少分钟 $timeNum = ceil($second / $storeSet['interval']); //有多少个时间点 $week = $storeSet['week'] ?: [1, 2, 3, 4, 5, 6, 7]; //星期几可以预约 for ($i = 0; $i < count($daysArr); $i++) { if (in_array($daysArr[$i]['week'], $week)) { $daysArr[$i]['isAppointment'] = 1; } else { $daysArr[$i]['isAppointment'] = 2; } $timesArr = []; for ($t = 1; $t <= $timeNum; $t++) { $times = date("H:i", $storeSet['start'] + $storeSet['interval'] * 60 * $t); //获取当前时间段 if ($daysArr[$i]['time'] == date("Y-m-d")) { //是今天 if (strtotime($times) > strtotime(date("H:i")) AND strtotime($times) <= strtotime(date("H:i", $storeSet['end']))) { //开始时间要大于当前时间并且结束时间小于结束时间范围 $timesArr[] = $times; } } elseif (strtotime($times) <= strtotime(date("H:i", $storeSet['end']))) { $timesArr[] = $times; } } $daysArr[$i]['timesArr'] = $timesArr; } $data['daysArr'] = $daysArr; $data['set'] = $storeSet; $region = (new \yii\db\Query()) ->from('{{%ybwm_table_area}}') ->where('appointment=1 AND storeId=:storeId AND deleteAt=0 AND display=1',[':storeId'=>$result['storeId']])->orderBy('sort asc')->all(); $data['region'] = $region; return $this->result(1, '操作成功', $data); } }