Go · 36 строк
Сотрудник ПВЗ сканирует заказы покупателя и вводит код из приложения. Обработчик проверяет код и срок хранения (7 дней) и отмечает заказы выданными. У одного покупателя обычно 1–15 заказов.
Отметьте строки с ошибками.
В работе: Приложение сотрудника пункта выдачи: тысячи выдач в час на крупном ПВЗ.
Как проверяем
Нажмите на строку с ошибкой и коротко напишите, что не так. Баг засчитан, если отмечена хотя бы одна его строка. Зачёт — найдено не меньше 60 % багов с учётом серьёзности (критичный весит 3, обычный 2, мелкий 1), а лишних отметок не больше, чем багов в коде. Пустые строки, скобки и комментарии лишними не считаем. Ответ один на подход: после него показываем разбор.
Источник: на задачах Wildberries: пункты выдачи заказов. Условие пересказано своими словами.
Давали на собеседовании?
Ответов пока мало — ваш поможет.
package pvzimport ("database/sql""encoding/json""net/http""time")type IssueRequest struct {OrderIDs []int64 `json:"order_ids"`Code string `json:"code"`}type Server struct {db *sql.DB}func (s *Server) Issue(w http.ResponseWriter, r *http.Request) {var req IssueRequestjson.NewDecoder(r.Body).Decode(&req)for _, id := range req.OrderIDs {var code stringvar arrived time.Times.db.QueryRow("SELECT code, arrived_at FROM orders WHERE id = $1", id).Scan(&code, &arrived)if code != req.Code {http.Error(w, "неверный код", http.StatusForbidden)}if time.Since(arrived) > 7*24*time.Hour {http.Error(w, "срок хранения истёк", http.StatusGone)return}s.db.Exec("UPDATE orders SET status = 'issued' WHERE id = $1", id)}w.WriteHeader(http.StatusOK)}