Сервис для замены карт предназначен для замены карт, которые уже есть на КС и БС, на новые бонусные карты. Основная информация из старой карты переносится в новую карту, накопления из старой карты переносятся в сервис счетчиков, затем старая карта блокируется.
Для замены карты необходимы следующие данные:
- номер старой карты,
- номер новой карты,
- идентификатор кассы.
Установка сервиса по замене карт
Для установки сервиса выполните команду:
sudo apt-get install artixcs-change-card
Настройка сервиса по замене карт
Настройка работы сервиса осуществляется в конфигурационном файле application.properties
, который находится в директории /opt/artixcs-change-card/
, там же где и jar-файл:
# Идентификатор счетчика. При переносе суммы накоплений из старой карты в сервис счетчиков будет использоваться данный идентификатор counterId=changecard # Список полей карты, который не надо копировать из старой карты в новую card.ignoreCopyProperties=idcard,idcardgroup,number,cardSum,blocked,cardstatus # Список префиксов номеров "старых" бонусных карт(только бонусных, без дисконтных и без "новых" бонусных) numberPrefixesOldAccountingCard="" # Список префиксов номеров "новых" бонусных карт numberPrefixesNewCard="" # подключение к КС cashserver.host=localhost cashserver.port=8080 cashserver.login=admin cashserver.password=admin # подключение к сервису счетчиков counter.host=localhost counter.port=8091 counter.login=admin counter.password=admin # подключение к БС accounting.host=localhost accounting.port=8080 accounting.login=LM_DEFAULT_TERMINAL accounting.password= # настройки подключения REST-клиента custom.rest.connection.connection-request-timeout=3000 custom.rest.connection.connect-timeout=3000 custom.rest.connection.read-timeout=3000 #проверять, что у новой бонусной карты аккаунт пустой, или соответствует номеру самой карты, или соответствует аккаунту старой бонусной карты card.checkAccountForDstCard=false server.port=8093
REST-запрос
Для замены старой карты на новую необходимо направить REST
запрос типа POST
на url:
http://{хост сервиса}:{порт сервиса}/v1/changecard/src_cardnumber/{номер старой карты}/dst_cardnumber/{номер новой карты}?cashId={идетификатор кассы}
{ "success": false, "status": 7, "message": "Can't set bonuses to dst card with number 123456789" }
Список возможных статусов:
Статус | Описание |
---|---|
0 | Данные по карте успешно перенесены |
1 | Не найдена карта, из которой требуется перенести данные |
2 | Не найдена карта, в которую требуется перенести данные |
3 | Заблокирована карта, из которой требуется перенести данные |
5 | К карте, в которую требуется перенести данные, уже привязан клиент |
6 | Ошибка копирования полей из одной карты в другую |
7 | Ошибка начисления бонусов на карту |
8 | Ошибка обновления карты, в которую требуется перенести данные |
9 | Ошибка блокировки карты, из которой были перенесены данные |
10 | Ошибка подтверждения начисления бонусов на карту |
11 | Нет аккаунта у карты, из которой требуется перенести данные |
12 | На БС не найдена карта, в которую требуется перенести данные |
13 | К карте на БС, в которую требуется перенести данные, уже привязан аккаунт |
14 | Ошибка создания аккаунта, который требуется привязать к новой карте |
15 | Ошибка блокировки виртуальной карты на БС |
16 | Ошибка обновления статуса и аккаунта карты на БС |
17 | Ошибочный номер карты, из которой требуется перенести данные |
18 | Ошибочный номер карты, в которую требуется перенести данные |
Порядок работы запроса для замены карты
- Находим старую карту на КС:
- если карта не найдена, возвращаем соответствую ошибку;
- если карта заблокирована, возвращаем соответствую ошибку.
- По идентификатору клиента из старой карты находим на КС все карты, которые привязаны к этому клиенту.
- По номерам старых карт ищем первую попавшуюся бонусную карту на БС. Если не нашли, то это нормально. Не факт, что пользователь покупал что-то через интернет магазин:
- если к бонусной карте не привязан аккаунт, возвращаем соответствую ошибку.
- Находим новую карту на КС:
- если карта не найдена, возвращаем соответствую ошибку;
- если у карты уже есть клиент отличный от клиента старой карты, возвращаем соответствую ошибку.
- Находим новую карту на БС:
- если карта не найдена, возвращаем соответствую ошибку;
- если к бонусной карте привязан счет отличный от ее номера и отличный от счета старой виртуальной бонусной карты, возвращаем соответствую ошибку.
- Если к новой карте еще не привязан клиент из старой карты, то переносим все необходимые поля из старой карты в новую:
- если не удалось обновить новую карту на КС, возвращаем соответствую ошибку.
- Если есть старая бонусная карта, то привязываем ее счет к новой бонусной карте, иначе создаем счет по номеру новой карты и привязываем его к новой бонусной карте:
- если нужно было создать новый аккаунт, но не удалось, возвращаем соответствую ошибку;
- если не удалось обновить новую карту на БС, возвращаем соответствую ошибку.
- Суммируем накопления по старым картам и переносим их в счетчики (
destination = idclient
):- если не удалось отправить операцию по начислению счетчика, возвращаем соответствую ошибку.
- Блокируем все старые карты на КС (
blocked
=1,cardstatus
=2):- если не удалось заблокировать старые карты, то отменяем начисление по счетчику и возвращаем соответствую ошибку.
- Если есть старая бонусная карта, то блокируем ее на БС:
- если не удалось заблокировать старую бонусную карту на БС, возвращаем соответствую ошибку.
- Подтверждаем операцию по переносу накоплений в счетчики:
- если не удалось подтвердить начисление по счетчику, возвращаем соответствую ошибку.