Code Monkey home page Code Monkey logo

testtaskavito's Introduction

Тестовое задание на позицию стажера-бекендера

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

Задача:

Необходимо реализовать микросервис для работы с балансом пользователей (зачисление средств, списание средств, перевод средств от пользователя к пользователю, а также метод получения баланса пользователя). Сервис должен предоставлять HTTP API и принимать/отдавать запросы/ответы в формате JSON.

Стек используемых в сервисе технологий
1.Golang
2.PostgreSQL(для хранения данных о балансах, id и сумм снятия пользователей)
3.Redis(для хранения и отображения всех транзакций)

Реализовано:
1.Метод начисления средств на баланс. Принимает id пользователя и сколько средств зачислить.
2. Метод списания средств с баланса. Принимает id пользователя и сколько средств списать.
3. Метод перевода средств от пользователя к пользователю. Принимает id пользователя с которого нужно списать средства, id пользователя которому должны зачислить средства, а также сумму.
4.Метод получения текущего баланса пользователя. Принимает id пользователя. Баланс всегда в рублях. (по умолчанию сервис не содержит в себе никаких данных о балансах (пустая табличка в БД). Данные о балансе появляются при первом зачислении денег)
5. В методе получения баланса сделан доп. параметр. Пример: ?currency=USD. Если этот параметр присутствует, то мы должны конвертировать баланс пользователя с рубля на указанную валюту. Данные по текущему курсу валют я беру из https://exchangeratesapi.io/.(базовая валюта хранится на балансе в рублях)
6. Метод получения списка транзакция каждого пользователя.

Работа сервиса

После запуска сервиса(файла main.go) и баз данных. Сервис будет ждать запросов(Get или Post). Get-запросы сделаны для создания нового пользователя, получения баланса пользователя и для получения всех транзакций пользователя.
Post-запросы сделаны для снятия и внесения денег пользователем, а также для перевода между двумя существующими пользователями.
Все ошибки сервиса будут выведены как ответ на ваш запрос в формате Json.

Примеры запросов:

  1. "http://localhost:8083/get-transactions/10" - данный Get-запрос возвращает JSON файл со всеми транзакциями пользователя c id = 10.\

  2. "http://localhost:8083/deposit-money/" - данный Post-запрос зачисляет на баланс пользователя c id = 10 сумму указанную в теле запроса(для снятия все аналогично кроме самого запроса, там будет withdraw-money).
    Тело данного запроса:
    ({"id": 10,
    "updateValue": 10000
    })\

  3. "http://localhost:8082/transfer-money/" - данный Post-запрос позволяет перевести сумму от одного пользователя к другому. Тело данного запроса:
    {"id-sender": 10,
    "id-recipient" : 4,
    "sending-amount": 50
    }\

  4. "http://localhost:8083/get-balance/10&EUR" - данный Get-запрос позволяет получить баланс пользователя с id = 10, переведенный в любую валюту(в данном случае в EUR- евро)

Тестовая часть
Тесты сделаны только для части repository, чтобы проверить работоспособность запросов в бд и логику взаимодействия. Тесты необходимо просто запустить с пустой таблицей в PostgreSQL(название таблицы user_table).

testtaskavito's People

Contributors

squarys avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.