Скрипт читает БД и выводит общую таблицу по всем товарам и продавцам
seller | product | price | count
2. Пользователь выбирает подходящего продавца, кликает на его имя и переходит на страницу seller.php
Скрипт читает БД и выводит таблицу по всем товарам продавца
product | price | in_stock_count
Скрипт рисует карточки к выбранным товарам с двумя полями: dicount | count
Пользователь вводит количество нужного товара в count
Пользователь выбирает вариант дисконта из выпадающего списка
Создается сделка deal - автоматически присваивается deal_id
Код получения deal_id на PHP
Скрипт рисует кнопку [отправить]
Методом GET передаём *.php?dial=1 - передали id сделки, здесь это 1
Поскольку проект учебный, все запросы реализованы через GET.
3. Пользователь нажал [отправить], переход на propose_add.php
Скрипт создает запрос к БД
1. Создаёт propose в proposes
propose_id - здесь это 1. Генерирует БД
записать propose_user_id - user_id покупателя
запиcать propose_deal_id - deal_id сделки из пункта 2 (предыдущее действие по сценарию)
запиcать propose_round - какое по счёту предложение в цепочке. Сначала 1
2а. Создаёт cart для 1 продукта
cart_id - сгенерирован автоматом
cart_discount_id = id_ дисконта
cart_product_id = id_продукта_1
cart_amount = количество продукта
cart_propose_id = id предложения для быстрой идентификации предложения
cart_deal_id = id сделки для быстрой идентификации сделки
Скрипт получает cart_id в php - для всех создаваемых carts
2б. Создаёт cart для 2 продукта
cart_id - сгенерирован автоматом
cart_discount_id = id_ дисконта
cart_product_id = id_продукта_2
cart_amount = количество продукта
cart_propose_id = id предложения для быстрой идентификации предложения
cart_deal_id = id сделки для быстрой идентификации сделки
3. Записывает в proposes_carts
propose_cart_cart_id - cart_id первой cart
propose_cart_propose_id - id предложения один на обе cart
propose_cart_cart_id - cart_id второй cart
propose_cart_propose_id - id предложения один на обе cart
Генерация ссылки propose_ID продавцу для отправки, например, через мессенджер в виде site_name?dial=1&propose=1
4. Продавец открыл ссылку, где есть propose_id propose_read.php
Скрипт читает данные из БД
propose_user_id из proposes (по propose_id)
propose_cart_cart_id из proposes_carts по propose_id
cart_product_id, cart_discount_id, cart_amount из carts
product_price из products
product_name из names
Скрипт генерирует таблицу:
propose_id | proposer_id | seller | product | stock_price | propose_price | in_stock_count | propose_count | propose_dicount | total_price
плюс генерирует карточки с двумя полями для предложения продавца: discount | count
Продавец вводит количество товара, который готов отгрузить в count
Продавец выбирает вариант дисконта из выпадающего списка в discount
7. Покупатель нажал [отправить], переход на propose_add.php
Скрипт создает запрос к БД:
1. создать propose в proposes
propose_id - гененрируется автоматом в бд, здесь это 3
записать propose_user_id - user_id покупателя (здесь это 3)
запиcать propose_deal_id - deal_id сделки из пункта 2
запиcать propose_round - какое по счёту предложение в цепочке. Уже 3
2а. создать cart для 1 продукта
cart_discount_id = id_ дисконта
cart_product_id = id_продукта_1
cart_amount = количество продукта
cart_propose_id = id предложения для быстрой идентификации предложения уже 2
cart_deal_id = id сделки для быстрой идентификации сделки так же 1
2б. создать cart для 2 продукта
cart_product_id = id_продукта_2
3. записать в proposes_carts
propose_cart_cart_id - cart_id первой cart в данном случае это 3
propose_cart_propose_id - id предложения один на обе cart, уже 2
propose_cart_cart_id - cart_id второй cart в данном случае это 4
propose_cart_propose_id - id предложения один на обе cart, уже 2
Скрипт геренрирует ссылку с propose_ID продавцу. Её можно отправить, например, через мессенджер в виде site_name?dial=1&propose=3
... и т.д.
N. Нажата кнопка [принять условия], отправлен и получен последний propose_id и текущий dial_id. Переход на deal.php
Скрипт читает данные из БД
пусть propose_id = 4 dial_id = 1
скрипт обновляет статус deal_is_accepted, ставит 1
скрипт обновляет поле deal_finish_time - пишет текущий timestamp
Скрипт выводит информацию о совершенной сделке
Database schema Back to About