Skip to content

Java Springboot microservice for voucher and promotion management

License

Notifications You must be signed in to change notification settings

aizuddindeyn/voucher-service

Repository files navigation

voucher-service

voucher-service is Springboot powered microservice that allow configuration of promotion and voucher, that consists of features like generating new promotion, registering user as promotion end-user, and generating voucher(s) for said end-user.

Voucher is a bond of the redeemable transaction type which is worth a certain monetary value and which may be spent only for specific reasons or on specific goods.

Voucher nowadays is famous in e-commerce company would try to expand their customer-based, by giving out attractive discounts.

Features

  • REST API to generate promotion and query/register user
  • REST API to generate, validate and redeem voucher.
  • Internal batch task to generate voucher(s), to improve processing time.
  • Localization support in REST API

Technology

sms-service uses a number of open source projects/libraries to work properly:

  • Springboot - Stand-alone Spring based application (2.3.5.RELEASE)
  • Hibernate - ORM framework between Java application and relational database (5.4.22.Final)
  • Spring JPA - Another example of persistence framework (2.3.5.RELEASE)
  • Log4J - Logging and tracing framework for auditing (2.13.3)
  • (Optional) H2 Database - Embedded/In-memory database for Java application (1.4.200)

Usage

Download and install dependencies, and start voucher-service server (can be executed at root folder)

gradle bootRun

Request can be made by using API tools (e.g. Postman, SoapUI) or executing curl command

curl --location --request POST 'http://localhost:8080/voucher/1.0/offer/generate' \
--header 'Content-Type: application/json' \
--data-raw '{
    "header": {
        "function": "offer.generate",
        "version": "1.0",
        "requestMsgId": "4f63d435-73f9-4390-ba6c-ec3cd2d8ce42",
        "requestTime": "2020-11-12 01:17:29.723"
    },
    "body": {
        "name": "MXS 10% Voucher",
        "prefix": "MXS",
        "codeLength": 10,
        "discount": 10,
        "expiry": "2021-12-31"
    },
    "signature": ""
}'

Sample Request

{
    "header": {
        "function": "offer.generate",
        "version": "1.0",
        "requestMsgId": "4f63d435-73f9-4390-ba6c-ec3cd2d8ce42",
        "requestTime": "2020-11-12 01:17:29.723"
    },
    "body": {
        "name": "Maxis 10% Voucher",
        "prefix": "MXS",
        "codeLength": 10,
        "discount": 10,
        "expiry": "2021-12-31"
    },
    "signature": ""
}

Sample Response

{
    "header": {
        "function": "offer.generate",
        "version": "1.0",
        "requestMsgId": "4f63d435-73f9-4390-ba6c-ec3cd2d8ce42",
        "requestTime": "2020-11-12 01:17:29.723"
    },
    "body": {
        "statusCode": "00",
        "message": "Success",
        "uniqueId": "4f63d435-73f9-4390-ba6c-ec3cd2d8ce43",
        "createdTime": "2020-11-12 01:17:29.800"
    },
    "signature": "offer.generate"
}

Database

voucher-service was packaged together with in-memory H2 database, to allow stand-alone application.
But, it also can be configured to connect with stand-alone relational database.
Configure Spring data source properties inside application.properties

# Database properties
spring.datasource.url=jdbc:h2:mem:sms_service
spring.datasource.driverClassName=org.h2.Driver
spring.datasource.username=sa
spring.datasource.password=sa
spring.datasource.platform=h2
spring.jpa.database-platform=org.hibernate.dialect.H2Dialect
spring.jpa.hibernate.ddl-auto=none

Development

Pull request are welcome. Do contact me to learn more.

License

MIT

Releases

No releases published

Packages

No packages published

Languages