Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/korolelizavetar/bookshop

Программный комплекс учета продаж товаров сети книжных магазинов
https://github.com/korolelizavetar/bookshop

spring-data-jpa spring-mvc spring-security

Last synced: about 6 hours ago
JSON representation

Программный комплекс учета продаж товаров сети книжных магазинов

Awesome Lists containing this project

README

        

### РУКОВОДСТВО ПОЛЬЗОВАТЕЛЯ ###

Для удобства пользования системой описаны основные возможности сайта с приведением рисунков пользовательского интерфейса.
На сайте предусмотрено четыре роли: неавторизированный пользователь, администратор, продавец-кассир и покупатель.

#### Возможности неавторизированного пользователя ####

Будучи неавторизированным, каждый пользователь сайта может ознакомиться с ассортиментом книг, предлагаемый магазином. На рисунке 6.1 продемонстрирована возможность искать товары по названию, а также сортировать книги по цене.

![image](https://github.com/user-attachments/assets/a67dfc85-b374-414a-a80a-ac451b7fd5d0)

Рисунок 6.1 – Каталог книг, по поиску символа «а» и с сортировкой по убыванию цены

При переходе на любую книгу пользователь получает подробную информацию о книге, а также сообщение о необходимости авторизации для осуществления заказа, что показано на рисунке 6.2.

![image](https://github.com/user-attachments/assets/9b7c6a77-5102-4285-af42-b13a104255d6)

Рисунок 6.2 – Подробная информация о книге от лица неавторизированного пользователя

Неавторизированный пользователь также может ознакомиться с доступными торговыми точками, однако до авторизации пользователю не доступна опция выбора магазина, что продемонстрировано на рисунке 6.3.

![image](https://github.com/user-attachments/assets/fce8f4f7-c91f-4fac-bf4d-4a1ae5a8b4eb)

Рисунок 6.3 – Информация о доступных торговых точках от лица неавторизированного пользователя

#### Авторизация ####

На рисунке 6.4 представлено окно авторизации:

![image](https://github.com/user-attachments/assets/b434f68e-1be7-43a7-b63c-eecafe83f5eb)

Рисунок 6.4 – Окно авторизации

При неверно введенных учетных данных, пользователь сталкивается с ошибкой, что продемонстрировано на рисунке 6.5.

![image](https://github.com/user-attachments/assets/cacc05f9-364b-4610-8bb0-63d977e78ab8)

Рисунок 6.5 – Неверно введенные учетные данные

При нажатии на подсвеченный текст «Зарегистрируйтесь» пользователь попадает в раздел регистрации. На рисунке 6.2 представлено окно регистрации, а также ошибки, которые пользователь может получить при введении некорректных данных. Часть из них обрабатывается еще на этапе заполнения формы, остальные обрабатываются на стороне сервера.

![image](https://github.com/user-attachments/assets/a5578752-42be-4feb-b006-df7281e9367a)

Рисунок 6.6 – Окно регистрации

После успешной регистрации, пользователь автоматически становится покупателем в информационной системе. Для входа ему необходимо ввести email и пароль, с которыми он зарегистрировался. По нажатии кнопки «Войти», пользователю выдается уникальный идентификатор сессии – cookies.

#### Модуль покупателя ####

Покупатель в системе может оформлять заказы, класть товары в корзину и отслеживать статус текущих покупок.
Положить товар в корзину можно перейдя по ссылке любой представленной на сайте книги по нажатии кнопки «Положить в корзину».

![image](https://github.com/user-attachments/assets/85e03f2e-7223-4051-a214-fb032409616d)

Рисунок 6.7 – Информация о книге от лица покупателя

При нажатии в панели навигации на «Корзина», пользователь попадает в корзину с товарами, где пользователь может изменить количество заказываемых книг, сохранить изменения в количестве, удалить заказ из корзины и заказать товар, что показано на рисунке 6.8

![image](https://github.com/user-attachments/assets/2c02755b-318a-4f9d-8b7c-d35a9a4b45a2)

Рисунок 6.8 – Корзина заказов

В разделе «Мои заказы» пользователь может увидеть заказы, которые ожидают доставки, прибывшие заказы в магазин и успешно закрытые заказы. На данном этапе пользователь ничего не может сделать с заказом, только ожидать действий со стороны кассира.

![image](https://github.com/user-attachments/assets/64dd2e4d-53f1-4cb9-8b5a-7f72579d8220)

Рисунок 6.9 – Раздел «Мои заказы»

#### Модуль продавца-кассира ####

Данная роль предусмотрена для работников магазина, позволяя им автоматизировать процесс выдачи заказываемых товаров. По эндпоинту /orders продавцы получают доступ к заказам на точке, за которой они закреплены. Кассир может подтвердить прибытие товара на пункт выдачи. Когда покупатель приходит за товаром, у продавца есть возможность подтвердить его заказ или отменить. Вкладка заказов представлена на рисунке 6.10.

![image](https://github.com/user-attachments/assets/3e811888-0c6f-4e38-b31f-fd95601f6f42)

Рисунок 6.10 – Управление заказами кассиром

Для удобства реализован поиск по номеру заказа с предусмотренными конфликтными ситуациями, что продемонстрировано на рисунке 6.11.

![image](https://github.com/user-attachments/assets/d36e8876-86a2-4532-aff5-c223d4ff72d6)

Рисунок 6.11 – Поиск по номеру заказа

#### Модуль администратора ####

Администратор обладает широким спектром полномочий. В его права доступа входит возможность добавлять, изменять и удалять книги, вносить книги в различные товарные точки. Возможности администратора располагаются по эндпоинтам /ADMIN/**.

![image](https://github.com/user-attachments/assets/df7086d7-fab5-415b-b375-c38c902a8b6f)

Рисунок 6.12 – Меню администратора каталога книг

Меню редактирования книги представлено на рисунке 6.13. Практически аналогичным образом выглядит и меню добавления книги, поэтому для примера продемонстрировано только меню изменения книги. Сохранения изменяются нажатием кнопки «Сохранить изменения», отмена сохранений приводит к возвращению к списку книг без сохранения изменений.

![image](https://github.com/user-attachments/assets/c53e1b98-8b18-44f6-bd1b-f8e396dce3e6)

Рисунок 6.13 – Редактирование книги

При переходе в управление пользователями, администратору предоставляется возможность изменять их роль с покупателя на продавца и обратно, а также деактивировать аккаунт, что показано на рисунке 6.14. Заметим, что администратор не имеет возможности влиять на личную информацию пользователя, так как это нарушало бы конфиденциальность и невмешательство магазина в личную информацию пользователя.

![image](https://github.com/user-attachments/assets/49ee784f-1df8-42c7-8ffc-ee6b620e404a)

Рисунок 6.14 – Редактирование книги

Проследовав по пункту «Товарные точки», администратор попадает на выбор склада, в который можно добавить товар. (Рисунок 6.15)

![image](https://github.com/user-attachments/assets/34740bd4-85ff-462f-a135-49b5d16a3dc7)

Рисунок 6.15 – Меню товарных точек

Проследовав по ссылке, пользователь попадает на меню изменения количества и добавления товара на склад (Рисунок 6.16).

![image](https://github.com/user-attachments/assets/02af1fb7-c6d3-43b7-b944-b7cbcb8c70c0)

Рисунок 6.16 – Меню добавления и изменения товара на складе

При нажатии на кнопку «Статистика», администратор получает pdf-файл с отчетом по закрытым заказам на каждой точке, а также по итоговой прибыли с нее (Рисунок 6.17).

![image](https://github.com/user-attachments/assets/4434aea7-5242-4f2a-b55f-c3f0a0afbb40)

Рисунок 6.17 – Отчет по заказам по торговым точкам

#### Личный кабинет и запрещенные страницы ####

В данном разделе рассматривается функционал, справедливый для каждой роли в системе.
При переходе в личный кабинет пользователя встречает окно с его текущей информацией и кнопкой «Редактировать», а также кнопка «Выйти», которая прекращает текущую сессию в браузере (Рисунок 6.18).

![image](https://github.com/user-attachments/assets/073c9a75-3eac-4d9f-8779-2663c4404228)

Рисунок 6.18 – Личный кабинет пользователя

При нажатии на кнопку «Редактировать» пользователь попадает в меню изменения личной информации. Здесь, как и в других частях системы, предусмотрена валидация данных на вводимых полях, что показано на рисунке 6.19.

![image](https://github.com/user-attachments/assets/b9b083e7-4f55-43d8-9899-b239d4092364)

Рисунок 6.19 – Изменение личной информации
Если пользователь пытается перейти по адресу, который для него заблокирован, он попадает на страницу, которая просит его перейти обратно в каталог (Рисунок 6.20).

![image](https://github.com/user-attachments/assets/b3b3a231-a5ce-4c05-91a4-0e83f36dfc77)

Рисунок 6.20 – Страница ошибки доступа