У меня есть система парковки, в которой я использую Angular 6 + Laravel для бэкенда, у меня есть сообщение, в котором я публикую некоторые из моих проблем, которые были решены с помощью DigitalDrifter, спасибо.
Вот ссылка: Как создать задачу планировщика для каждой новой записи после 20 минут в Laravel?
Моя система не на 100% хороша, потому что у меня странное поведение. Каждый клиент должен зайти в Платежную зону и подтвердить вашу запись. Когда клиент показал билет кассиру, он подтвердил запись после оплаты, нажав на кнопку «VALIDATE TICKET»
И мой код делает это на Angular:
validateEntry(ean13: string, value: number) {
this.spinner.show();
this.entryService.validateEntry(this.config.role.validateEntryUrl, ean13, value, this.userModel.mov_user_id)
.pipe(
catchError(
(error: any): Observable<any> => {
this.spinner.hide();
$('#m_modal_1').modal('hide');
return this.utilService.errorHandler(error);
}))
.subscribe(response => {
if (response.success != 0) {
$('#m_modal_1').modal('hide');
this.spinner.hide();
swal({
title: 'Validado!',
text: response.message,
type: 'success',
showCloseButton: true,
showCancelButton: false,
showConfirmButton: false
}).then((result) => {
$("#mov_ean13_input").focus();
});
}else {
$('#m_modal_1').modal('hide');
this.spinner.hide();
swal({
title: 'Erro!',
text: response.message,
type: 'error',
showCloseButton: true,
showCancelButton: false,
showConfirmButton: false
}).then((result) => {
$("#mov_ean13_input").focus();
});
}
});
}
А вот сервис на Angular 6:
public validateEntry(url: string, ean13: string, value: number, userid: number): Observable<any> {
console.log(userid);
return this.http.post(this.mainConfig.config.default.mainUrl + url, { ean13: ean13, value: value, userid: userid });
}
А вот бэкэнд на Laravel, это код:
public function validateEntry(Request $request){
try{
$entryean13 = $request->input('ean13');
$value = $request->input('value');
$userid = $request->input('userid');
$this->mdEntry->validatedEntryByEan($entryean13,$value,$userid);
if(empty($this->mdEntry->checkValidEntry($entryean13))){
$response["success"] = 0;
$response["message"] = "Ocorreu algum erro no servidor, tente validar novamente";
}else {
$response["success"] = 1;
$response["message"] = "Entrada validada com sucesso";
}
return $response;
}
catch(\Exception $e){
$response["success"] = 0;
$response["message"] = "Aconteceu algum erro no processamento, tente novamente em alguns minutos.";
$response["erro"] = $e->getMessage();
return $response;
}
}
And to finish the code area here is the Eloquent that update my table:
public function validatedEntryByEan($ean13,$valor,$userid){
Entry::where('mov_entry_ean13', $ean13 )
->update(['validated' => 'S',
'value' => $valor,
'mov_user_id' => $userid]);
}
Отправляясь в Laravel, я получаю код EAN_13 записи, $ value и $ userid (пользователь Cashier), обновляю таблицу и проверяю запись,
у клиента есть 30 минут, чтобы выйти.
Проблема в том, что 85% подтверждены, а 15% нет, и Кассир всегда говорит, что всегда нажимает кнопку для подтверждения. Некоторые клиенты платят и когда
он выйдет в ТОТЕМ ВЫХОДА, не отпускайте их, когда я заберу билет и проверю его, он не подтвержден.
Что мне не хватает? Не человеческая ошибка, все нажимают на кнопку. Я не знаю, что не так, потому что, когда пользователь нажимает кнопку, я возвращаю окно с надписью «ВВЕДЕНИЕ ВАЛИДИРОВАННЫЙ», когда (response.success! = 0) на Angular.
Я делаю эту проверку, чтобы увидеть, будет ли пользователь проверен для некоторых тестов. Теперь мой вопрос, это правильный подход для подписки? Ребята, вы думаете, что каждый раз, когда он нажимает на кнопку, он идет и делает запрос? или нет? Извините, это очень нубский вопрос, но я хочу, чтобы это работало на 100%, я приложил некоторые попытки и поймал и не получил никакой ошибки.
Как вы думаете, ребята, что проблема с браузером? Поскольку я работаю на Raspberry Pi 3 в Ubuntu Mate, приложение Angular 6 для Chromium, я подумываю сменить браузер на тест.