Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Saitistika 4.0.Руководство разработчика.2005

.pdf
Скачиваний:
11
Добавлен:
23.08.2013
Размер:
3.22 Mб
Скачать

Таким образом, оформить заказ может только авторизованный зарегистрированый пользователь

3.3.После оформления заказа пользователю, а также менеджеру магазина автоматически отправляется Email с нотификацией о поступлении заказа.

3.4.В дальнейшем пользователь может снова зайти на сайт и, авторизовавшись, посмотреть на специальной странице статус выполнения своего заказа. Статус изменяет менеджер магазина в бэкофисе. Предполагается, что

дополнительная коммуникация с происходит в оффлайне

Вторичная корзина

1.Технически это такая же корзина, как и основная. В ней могут храниться товары с указанием количества.

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

3.Корзины авторизованного пользователя сохраняется между сессиями на сервере.

Смена пользователя (переавторизация) во время работы:

В магазине персонализированной информацией являются заказы пользователя и корзина (первичная и вторичная)

1.Корзина

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

1.2.При авторизации пользователя

1.2.1.Если текущая (гостевая или предыдущего авторизованного пользователя) корзина не пустая, то ее содержимое переписывается в корзину авторизованного пользователя, которая впоследствии может снова изменяться пользователем.

1.3.При разавторизации пользователя

1.3.1.В гостевую корзину переписывается содержимое корзины предыдущего авторизованного пользователя.

2.Заказы пользователя

2.1.В любой момент времени доступны для просмотра только заказы текущего авторизованного пользователя. Анонимам доступ блокируется совсем.

База данных

В виду того, что данная функциональность содержит большое количество таблиц, то более целесообразным является не отображать атрибуты таблиц на диаграмме. За более подробной информацией следует воспользоваться средствами MS SQL сервера.

Copyright © 2005 Individ company

Страница

Контакты: www.saitistika.ru | support@saitistika.ru | (0852) 321464

171 из 171

 

 

Рисунок 44. Диаграмма таблиц базы данных модуля «Магазин»

Copyright © 2005 Individ company

Страница

Контакты: www.saitistika.ru | support@saitistika.ru | (0852) 321464

172 из 172

 

 

Описания таблиц

Shops – таблица хранения магазинов

 

Поле

Описание

 

 

ID

Идентификатор магазина

 

 

Folder

Ссылка на соответствующий раздел проводника

 

 

Owner

Владелец магазина

 

 

Address

Адрес магазина

 

 

Phones

Контактная информация для покупателей

 

 

Email

Контактный email

 

 

Bank

Банк, обслуживающий организацию

 

 

RaschAccount

Расчётный счёт

 

 

BIK

БИК

 

 

CorrAccount

Корреспондентский счёт

 

 

INN

ИНН

 

 

Currency

Валюта по умолчанию. Может быть NULL.

 

 

ShowRatingForm

Признак: показывать ли форму оценки

 

 

Conference

Ссылка на форум для обсуждения товаров (на самом деле псевдо-внешний ключ, надо строго

 

 

отслеживать ссылку)

 

 

MaxNewGoods

Максимальное количество товаров, которые будут показываться в разделе новых

 

RootCatalogue

Идентификатор магазина в таблице каталогов

 

 

MaxDays

Количество дней, в течение которых товар считается новым

 

 

ShowAllVariants

На самом деле хватило бы типа Bit.

 

 

 

Показывать в каталоге товаров все разновидности или нет.

 

 

ShopOperators - таблица связки магазинов и пользователей Saitistika – операторов магазина

 

 

Поле

Описание

 

 

Man

Ссылка на People

 

 

Shop

Ссылка на Shops

 

 

ShopDealers - привилегированные пользователи магазина

 

 

Поле

Описание

 

 

Shop

Ссылка на Shops

 

 

Client

Ссылка на Clients

 

 

Mark

Служебное поле, используется для корректировки списка

 

 

Goods - товары

 

 

 

Поле

Описание

 

 

ID

Идентификатор товара

 

 

Shop

Ссылка на Shops

 

 

Label

Наименование

 

 

BriefDescription

Краткое описание

 

 

Description

Описание

 

 

Picture

Картинка, ссылка на Pictures

 

 

Notes

Пометки

 

 

Keywords

Ключевые слова.

 

 

Produced

Производитель

 

 

Conference

Идентификатор форума (с отзывами о товаре)

 

 

ConfTopic

Идентификатор цепочки обсуждения (Thread) форума (с отзывами о товаре)

 

 

GoodsNotes - пометки для товара

 

 

Поле

Описание

 

 

Mnemonic

Мнемоника (англ. буквами)

 

 

Label

Текст пометки

 

 

GoodsAnalogues - таблица для связи товара с его аналогами

 

 

Поле

Описание

 

 

Goods

Ссылка на Goods, товар

 

 

Analogue

Ссылка на Goods, его аналог

 

 

 

 

 

 

 

Copyright © 2005 Individ company

Страница

 

 

Контакты: www.saitistika.ru | support@saitistika.ru | (0852) 321464

173 из 173

GoodsAccomps - таблица для связи товара с его сопутствующими товарами

Поле

Описание

Goods

Ссылка на Goods, товар

Accomp

Ссылка на Goods, его сопутствующий товар

GoodsScores - таблица рейтинга товаров

Поле

Описание

Goods

Ссылка на Goods, товар

Scores

Количество проголосовавших

Summary

Рейтинг

LastIp

Ip последнего проголосовавшего пользователя

GoodsCatalogue - таблица для связи товара с каталогами магазина

Поле

Описание

Goods

Ссылка на Goods, товар

Catalogue

Ссылка на ShopCatalogue

SeqNo

Порядковый номер

GoodsVarieties - разновидности товаров

Поле

Описание

ID

Идентификатор

Goods

Ссылка на Goods

Label

Название разновидности товара

GUID

Учётный номер разновидности товара

Picture

Ссылка на Pictures, картинка, подчёркивающая особенность данной разновидности

Weight

Вес товара в граммах

Currency

Ссылка на Currencies

Price

Цена

ShopPrice

Магазинная цена

SelloutPrice

Цена распродажи

FormingPeriod

Срок формирования заказа

IsVisible

Видимость товара в каталогах

LogPrice - история изменения цены

Поле

Описание

GoodsVariety

Ссылка на GoodsVarieties

BeginDate

Начальная дата

EndDate

Конечная дата

Currency

Ссылка на Currencies, валюта

Price

Цена

SelloutPrice

Цена распродажи

Roubricator - рубрикатор товаров

Поле

Описание

ID

Идентификатор раздела в рубрикаторе

Name

Название раздела

Description

Описание раздела

Parent

Ссылка на родителя, реально не явл. внешним ключом

SeqNo

Для упорядочивания разделов рубрикатора.

RoubricatorChars - набор свойств рубрикатора

Поле

Описание

ID

Идентификатор свойства

Roubric

Ссылка на Roubricator

Name

Название

Measurement

Единица измерения

Default

Значение по умолчанию

SeqNo

Для упорядочивания свойств.

Type

Тип свойства (число/строка)

GoodsRoubric - привязка товаров к рубрикатору

Copyright © 2005 Individ company

Страница

Контакты: www.saitistika.ru | support@saitistika.ru | (0852) 321464

174 из 174

 

 

Поле

Описание

Goods

Ссылка на Goods

Roubric

Ссылка на Roubricator

GoodsChars - значения характеристик для товара

Поле

Описание

Goods

Ссылка на Goods

Char

Ссылка на RoubricatorChars

Value

Значение

IsDefinedForVar

Признак переопределения значения свойства для разновидностей товара.

GoodsVarChars - значения характеристик для разновидности товара

Поле

Описание

Goods

Ссылка на Goods

GoodsVar

Ссылка на GoodsVarieties

Char

Ссылка на RoubricatorChars

Value

Значение

ShopCatalogue - каталоги товаров

Поле

Описание

ID

Идентификатор папки

Parent

Ссылка на родителя

Shop

Ссылка на Shops

Path

Имя директории

Description

Описание

Picture

Ссылка на Pictures

Title

Название каталога

SeqNo

Для упорядочивания каталогов

Changed

Дата последнего изменения

Date

Дата создания

SmallPicture

Ссылка на Pictures

Keywords

Ключевые слова

Notes

Пометки каталога

AmountGoods

Количество опубликованных в каталоге товаров

Currencies - валюты и курсы

 

Поле

Описание

ID

Ссылка на Goods

Shop

Ссылка на Shops

Name

Полное название валюты

BriefName

Краткое обозначение валюты

Course

Курс валюты

Code

Код валюты в ЦБ

CurrenciesHystory - история курсов валют

Поле

Описание

Currency

Ссылка на Currencies

BeginDate

Дата начала действия курса

EndDate

Дата окончания действия курса

Course

Курс валюты

ID

Идентификатор

ShopBaskets - товары в корзине (как приготовленные для заказа, так и отложенные)

Поле

Описание

Buyer

Ссылка на Buyers

Shop

Ссылка на магазин

GoodVar

Ссылка на GoodVarieties

Quantity

Количество

IsDelayed

Признак «отложенности» (если «1» - то отложенный)

ID

Идентификатор

GoodsOrdered - заказанные товары

Copyright © 2005 Individ company

Страница

Контакты: www.saitistika.ru | support@saitistika.ru | (0852) 321464

175 из 175

 

 

Поле

Описание

Buyer

Ссылка на Buyers

Shop

Ссылка на магазин

GoodVar

Ссылка на GoodVarieties

Order

Ссылка на ShopOrders

Code

Код товара (то, что везде обозначено как GUID)

Name

Название товара

Weight

Вес товара в граммах

Quantity

Количество товара

Price

Цена товара на момент заказа

Discount

Скидка

FormingPeriod

Время формирования заказа на товар

ShopOrders - заказы

 

Поле

Описание

ID

Идентификатор заказа

Shop

Ссылка на магазин

Buyer

Ссылка на Buyers

Date

Дата заказа

Currency

Ссылка на Currencies

Price

Сумма заказа

Discount

Скидка в процентах на сумму заказа

TotalPrice

Итоговая сумма заказа

PaymentWay

Способ оплаты

DeliveryWay

Способ доставки

DeliveryPrice

Стоимость доставки

CanSplit

Признак, можно ли разбить заказ на несколько

Address

Адрес доставки

IsPaid

Признак оплаченности заказа

Stage

Текущее состояние заказа, ссылка на LogOrderStages

StageChange

Дата последнего изменения состояния

Closed

Признак завершённой обработки заказа

ShopOrderStages - список различных состояний заказов

Поле

Описание

ID

Идентификатор состояния

Shop

Ссылка на магазин

Stage

Краткое название состояния

Description

Описание состояния

SeqNo

Для упорядочивания свойств

Activity

Признак активности, используется или нет

isFirst

Признак первого состояния (системного)

LogOrderStages - история изменения состояний товаров

Поле

Описание

Order

Ссылка на ShopOrders

Stage

Ссылка на ShopOrderStages

BeginDate

Начальная дата

EndDate

Дата перехода в след. Состояние

Comment

Комментарий

ID

Идентификатор записи

ShopDeliveries - способы доставки

Поле

Описание

ID

Идентификатор

Shop

Ссылка на магазин

Name

Наименование

Description

Описание

IsVisible

Признак активности, используется этот вид доставки или нет

ShopPayments - способы оплаты

Copyright © 2005 Individ company

Страница

Контакты: www.saitistika.ru | support@saitistika.ru | (0852) 321464

176 из 176

 

 

Поле

Описание

ID

Идентификатор

Shop

Ссылка на магазин

Name

Наименование

Description

Описание

IsVisible

Признак активности, используется этот вид оплаты или нет

ShopDelPay - таблица для связи способов доставки и способов оплаты

Поле

Описание

Delivery

Ссылка на ShopDeliveries

Payment

Ссылка на ShopPayments

Buyers - покупатели (пользователи) магазина

Поле

Описание

ID

Идентификатор

IsTemp

Признак «временности»

LastVisit

Дата последнего посещения

Currency

Ссылка на валюту, в которой показываются все цены в магазине

MailIndex

Почтовый индекс

Country

Страна

Region

Область, край

City

Город

Address

Ул., дом, кв. доставки

SubwayStation

Станция метро

Phone

Телефон для связи

DeliveryWay

Ссылка на способ доставки, который был использован в последний раз

PaymentWay

Ссылка на способ оплаты, который был использован в последний раз

Client

Ссылка на таблицу зарегистрированных пользователей Clients

Name

ФИО

ContactInfo

Контактная информация

GoodsSort

Сортировка товаров в каталоге магазина

BuyersShopSettings - настройки пользователя в магазине.

Поле

Описание

Buyer

Идентификатор покупателя, ссылка на Buyers

Shop

Идентификатор магазина, ссылка на Shops

Currency

Ссылка на валюту, в которой показываются все цены в магазине, на Currencies

SortOrder

Номер сортировки товаров в каталоге

Delivery

Идентификатор доставки, ссылка на ShopDeliveries

Payment

Идентификатор оплаты, ссылка на ShopPayments

CanSplit

Признак разбиения заказа (можно доставлять по частям или нет)

ShowVariants

Показывать товары в каталоге с разновидностями или без разновидностей.

ListGoods_forSplitOrder - таблица для перемещения товаров при разбиении заказа.

Поле

Описание

OrderId

Идентификатор изменяемого заказа, ссылка на ShopOrders

VarId

Идентификатор разновидности товара, ссылка на GoodsVarieties

Amount

Количество перемещаемого товара.

Хранимые процедуры

Описание не требуется.

Copyright © 2005 Individ company

Страница

Контакты: www.saitistika.ru | support@saitistika.ru | (0852) 321464

177 из 177

 

 

Классы

 

 

 

CShop

 

 

 

 

 

CShopCatalogue

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

+get_QueryString()

 

 

 

 

+get_CatalogueCount()

 

+get_DeliveryCount()

 

 

 

 

+get_CatalogueID(in I)

 

+get_DeliveryID(in I)

 

 

 

 

+get_CatalogueName(in I)

 

+get_DeliveryName(in I)

 

 

 

 

+get_CatalogueURL(in I)

 

+get_DeliveryDescription(in I)

 

 

 

 

+get_CatalogueAmount(in I)

 

+get_PaymentCount(in I)

 

 

 

 

+get_GoodsCount()

 

 

 

 

 

 

+get_PaymentID(in I, in J)

 

 

 

 

+get_GoodsID(in I)

 

+get_PaymentName(in I, in J)

 

 

 

 

+get_GoodsVariantID(in I)

 

+get_PaymentDescription(in I, in J)

 

 

 

 

+get_GoodsName(in I)

 

 

 

 

 

 

+get_CurrencyCount()

 

 

 

 

+get_GoodsDescription(in I)

 

+get_CurrencyID(in I)

 

 

 

 

+get_GoodsMinPrice(in I)

 

+get_CurrencyName(in I)

 

 

 

 

+get_GoodsMaxPrice(in I)

 

+get_CurrencyCourse(in I)

 

 

 

 

+get_GoodsPrice(in I)

 

 

 

 

 

 

+Load(in Folder)

 

 

 

 

+get_GoodsCurrency(in I)

 

+Store(in Name, in Duration)

 

 

 

 

+get_GoodsCurrencyCourse(in I)

 

+Fetch(in Name)

 

 

 

 

+get_GoodsNotes(in I)

 

-Class_Initialize()

 

 

 

 

+get_GoodsImage(in I)

 

-LoadPayments(in I)

 

 

 

 

+get_GoodsURL(in I)

 

 

 

 

 

 

 

 

 

 

 

+get_GoodsHasVariants(in I)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

+get_GoodsIcons(in I)

 

 

 

CShopDecoration

 

 

 

+Load(in FolderID, in ShopID, in CatalogueID, in Lower, in Upper)

 

 

 

 

 

 

 

 

 

 

 

+LoadNew(in FolderID, in ShopID, in Lower, in Upper)

 

+CreateNavigation(in Shop, in Basket)

 

 

 

 

 

 

 

 

 

 

 

+LoadRecommended(in FolderID, in ShopID, in Lower, in Upper)

 

+ListGoods(in Shop, in Catalogue, in Buyer, in Count)

 

 

 

 

 

 

 

+Store(in Key, in Duration)

 

+WriteGood(in Shop, in Goods, in Buyer, in ShowIcons)

 

 

 

 

 

 

 

+Fetch(in Key)

 

+Help(in Shop, in Basket, in Buyer)

 

 

 

 

 

 

 

-Class_Initialize()

 

-Class_Initialize()

 

 

 

 

 

 

 

 

 

 

CShopGoods

 

 

 

CShopByuer

 

 

 

 

 

 

 

 

 

 

+get_Icons()

 

+get_OrderCount()

 

 

 

 

 

 

 

+get_VariantCount()

 

+get_OrderID(in I)

 

 

 

 

 

 

 

+get_VariantID(in I)

 

+get_OrderDate(in I)

 

 

 

 

 

 

 

+get_VariantName(in I)

 

+get_OrderTotal(in I)

 

 

 

 

 

 

 

+get_VariantDays(in I)

 

+get_OrderCurrencyCourse(in I)

 

 

 

 

 

 

 

+get_VariantPrice(in I)

 

+get_OrderCurrency(in I)

 

 

 

 

 

 

 

+get_VariantCurrencyCourse(in I)

 

+get_OrderPayment(in I)

 

 

 

 

 

 

 

+get_VariantCurrency(in I)

 

+get_OrderDelivery(in I)

 

 

 

 

 

 

 

+get_VariantImage(in I)

 

+get_OrderStage(in I)

 

 

 

 

 

 

 

+get_VariantNotes(in I)

 

+get_OrderComment(in I)

 

 

 

 

 

 

 

+get_VariantIcons(in I)

 

+get_OrderIsPaid(in I)

 

 

 

 

 

 

 

+get_PropertyCount()

 

+Load(in FolderID, in ShopID, in Login, in Password)

 

 

 

 

 

 

 

+get_PropertyName(in I)

 

+GetSettings(in ShopID)

 

 

 

 

 

 

 

+get_PropertyValue(in I)

 

+SetSettings(in ShopID, in NewCurrencyID, in NewSortOrder, in NewShowVariants)

 

 

 

+get_VariantPropertyCount(in I)

 

+Add(in ShopID)

 

 

 

 

 

 

 

+get_VariantPropertyName(in I, in J)

 

 

 

 

 

 

 

+get_VariantPropertyValue(in I, in J)

 

 

 

 

 

 

 

+Load(in FolderID, in ShopID, in CatalogueID, in GoodsID)

 

 

CShopBasket

 

 

 

+Rate(in Mark, in IP)

 

 

 

 

 

 

 

-LoadValues(in I)

 

+get_GoodsCount()

 

 

 

 

+get_GoodsVariant(in I)

 

 

 

 

 

+get_GoodsID(in I)

 

 

 

 

 

 

 

 

CShopOrder

 

+get_GoodsName(in I)

 

 

 

 

 

 

 

 

 

 

 

 

 

+get_GoodsAmount(in I)

 

+get_GoodsCount()

 

 

+get_GoodsPrice(in I)

 

+get_GoodsName(in I)

 

 

+get_GoodsCurrencyCourse(in I)

 

+get_GoodsAmount(in I)

 

 

+get_GoodsCurrency(in I)

 

+get_GoodsPrice(in I)

 

 

+get_GoodsCatalogueID(in I)

 

+get_GoodsTotal(in I)

 

 

+get_GoodsTotal(in I)

 

+get_GoodsTotalSum()

 

 

+get_GoodsURL(in I)

 

+get_HistoryCount()

 

 

+Load(in FolderID, in ShopID, in BuyerID)

 

+get_HistoryDate(in I)

 

 

+Add(in ShopID, in BuyerID, in VariantID)

 

+get_HistoryStage(in I)

 

 

+Clear(in ShopID, in BuyerID)

 

+get_HistoryComment(in I)

 

 

+Delete(in ShopID, in BuyerID, in VariantID)

 

+Load(in FolderID, in ShopID, in BuyerID, in OrderID)

 

+Move(in ShopID, in BuyerID, in VariantID)

 

+Cancel()

 

 

+SetAmount(in ShopID, in BuyerID, in VariantID, in Amount)

 

+Create(in ShopID, in BuyerID)

 

 

-Class_Initialize()

 

+Save(in ShopID, in BuyerID, in Delivery, in Payment, in SendType, in Comment, in ClientID)

Copyright © 2005 Individ company

Страница

Контакты: www.saitistika.ru | support@saitistika.ru | (0852) 321464

178 из 178

 

 

Рисунок 45. UML-диаграмма классов модуля «Магазин»

Список классов

CShop CShopBasket CShopBuyer CShopCatalogue CShopGoods CShopOrder CShopDecoration

Copyright © 2005 Individ company

Страница

Контакты: www.saitistika.ru | support@saitistika.ru | (0852) 321464

179 из 179

 

 

Классы, функции и хранимые процедуры

Общие правила по работе с классами и функциями

При разработке фронтофиса и бэкофиса применяется объектно-ориентированный подход (как одна из технологий), в соответствие с которым система представляется как набор объектов, которые в свою очередь являются экземплярами классов. В виду ограниченности средств, которые предоставляет Visual Basic (отсутствие наследования, полиморфизма и т д), система содержит файлы, состоящие не только из описаний классов, но и из функций, которые могут использоваться несколькими классами совместно. Имеется также некоторый набор правил и ограничений, который позволяет все-таки оставаться в рамках объектно-ориентированного подхода в рамках тех средств, что представляет Visual Basic.

Правила построения классов и функций

Любой класс сайтистики, предназначенный для работы в ASP-коде, является отдельным файлом. Имена класса и файла совпадают и начинаются с латинской буквы 'C'. Имя имеет простой и понятный смысл, по которому сразу можно догадаться для чего предназначен данный класс. Класс инкапсулирует в себе максимально возможный набор свойств и методов по работе с какой-либо функциональностью. Классы бывают двух типов контейнеры элементов (списки, деревья и др.) и сами элементы. Из названия класса интуитивно понятно, к какому типу он относится (например, к контейнеру прибавляется слово Tree, List или просто окончание ‘s’).

Пример: CMaterials.asp класс – CMaterials

Из названия ясно, что этот класс предназначен для работы со списком материалов и находится в файле, имя которого совпадает с именем класса.

Для каждой функциональности заводится также файл общих функций. Название файла состоит из имени функциональности и ключевого слова functions. В данном файле сосредоточены общие функции для конкретной функциональности. В этот файл могут быть также включены классы по директиве include. Рекомендуется все настройки, константы и общие для классов функции включать именно в этот файл.

Пример: test-functions.asp

Файл содержит функции для функциональности Тесты’.

Для удобства программирования фронтофиса и бэкофиса были созданы общие файлы с функциями, часто используемые в процессе работе. Для фронтофиса СFOUtils.asp, для бэкофиса CBOUtils.asp и общий файл с совместно используемыми функциями – Utils.asp. Эти файлы подчиняются правилам расположения классов и функций, описанных ниже. Настоятельно рекомендуется включать часто используемые функции именно в эти файлы.

Описанный выше порядок является рекомендуемым, но необязательным и может быть нарушен для совместимости Сайтистики с предидущими версиями.

Правила расположения классов и функций

Классы и функции располагаются согласно их назначению:

1.предназначенные только для работы фронтофиса расположены в теме, к которой они относятся, например в

'common\data\Themes\basic\ '.

2.общие для фронтофиса и бэкофиса в ‘common\include\’

3.общие файлы бэкофиса в ‘include\’

4.файлы конкретной функциональности бэкофиса в 'aspscripts\Имя_функциональности'

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

Copyright © 2005 Individ company

Страница

Контакты: www.saitistika.ru | support@saitistika.ru | (0852) 321464

180 из 180