Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
O
OTSWithFeign
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Bhaskar Katakam
OTSWithFeign
Commits
edf374b6
Commit
edf374b6
authored
Apr 14, 2020
by
Kali Padhi
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Modified For Metadata Table
parent
3128d7e4
Changes
27
Show whitespace changes
Inline
Side-by-side
Showing
27 changed files
with
489 additions
and
168 deletions
+489
-168
readme.md
readme.md
+77
-2
ClientService.java
...m/nisum/offertransactionservice/client/ClientService.java
+2
-9
OfferTransactionController.java
...sactionservice/controller/OfferTransactionController.java
+3
-5
OfferConvertion.java
...um/offertransactionservice/converter/OfferConvertion.java
+9
-4
OfferMetaDataRepo.java
.../nisum/offertransactionservice/dao/OfferMetaDataRepo.java
+13
-0
EndOfSaleReq.java
...a/com/nisum/offertransactionservice/dto/EndOfSaleReq.java
+2
-1
EndOfSaleResponse.java
.../nisum/offertransactionservice/dto/EndOfSaleResponse.java
+1
-1
Item.java
...main/java/com/nisum/offertransactionservice/dto/Item.java
+1
-1
Offer.java
...ain/java/com/nisum/offertransactionservice/dto/Offer.java
+1
-1
OfferLookupDTO.java
...com/nisum/offertransactionservice/dto/OfferLookupDTO.java
+29
-0
OfferMetaDTO.java
...a/com/nisum/offertransactionservice/dto/OfferMetaDTO.java
+35
-0
OfferTransactionRequest.java
.../offertransactionservice/dto/OfferTransactionRequest.java
+2
-1
OfferTransactionResponse.java
...offertransactionservice/dto/OfferTransactionResponse.java
+2
-1
PERequest.java
...java/com/nisum/offertransactionservice/dto/PERequest.java
+4
-2
PEResponse.java
...ava/com/nisum/offertransactionservice/dto/PEResponse.java
+2
-1
Status.java
...in/java/com/nisum/offertransactionservice/dto/Status.java
+1
-1
GlobalApiGenericException.java
...onservice/genericexception/GlobalApiGenericException.java
+3
-0
OfferLookup.java
.../com/nisum/offertransactionservice/model/OfferLookup.java
+13
-7
OfferLookupComposite.java
...m/offertransactionservice/model/OfferLookupComposite.java
+30
-0
OfferMeta.java
...va/com/nisum/offertransactionservice/model/OfferMeta.java
+27
-3
EndOfSaleService.java
...sum/offertransactionservice/service/EndOfSaleService.java
+4
-1
OfferCallingPEService.java
...ffertransactionservice/service/OfferCallingPEService.java
+34
-14
application.properties
src/main/resources/application.properties
+1
-1
ClientServiceTest.java
...sum/offertransactionservice/client/ClientServiceTest.java
+4
-9
OfferControllerTest.java
...fertransactionservice/controller/OfferControllerTest.java
+100
-96
EndOfSaleTest.java
.../nisum/offertransactionservice/service/EndOfSaleTest.java
+3
-2
OfferServiceTest.java
...sum/offertransactionservice/service/OfferServiceTest.java
+86
-5
No files found.
readme.md
View file @
edf374b6
...
...
@@ -61,8 +61,18 @@ ALTER TABLE public.offerlookup
Once you create use the below query to insert a data
INSERT INTO public.offerlookup
(
offer_lookup_id, store_id, terminal, offer_type, offer_id, pre_condition
)
VALUES
(
'1234567890'
,
'0001'
,
'002'
,
'UPC'
,
'01'
,
'AND'
)
;
store_id, terminal, offer_type, offer_id, pre_condition,offer_lookup_id
)
VALUES
(
'0001'
,
'001'
,
'Customer'
,
'o1'
,
'AND'
,
'54321'
)
;
INSERT INTO public.offerlookup
(
store_id, terminal, offer_type, offer_id, pre_condition,offer_lookup_id
)
VALUES
(
'0001'
,
'001'
,
'Customer'
,
'o2'
,
'AND'
,
'54321'
)
;
INSERT INTO public.offerlookup
(
store_id, terminal, offer_type, offer_id, pre_condition,offer_lookup_id
)
VALUES
(
'0001'
,
'001'
,
'Customer'
,
'o3'
,
'AND'
,
'54321'
)
;
INSERT INTO public.offerlookup
(
store_id, terminal, offer_type, offer_id, pre_condition,offer_lookup_id
)
VALUES
(
'0001'
,
'001'
,
'Customer'
,
'o4'
,
'AND'
,
'54321'
)
;
```
```
bash
...
...
@@ -90,4 +100,69 @@ INSERT INTO endofsale VALUES ( uuid_generate_v4() ,
```
## Create table offer metadata
```bash
-- Table: public.offer_meta_data
-- DROP TABLE public.offer_meta_data;
CREATE TABLE public.offer_meta_data
(
offerid text COLLATE pg_catalog."default" NOT NULL,
eligibility text COLLATE pg_catalog."default" NOT NULL,
discount_type text COLLATE pg_catalog."default" NOT NULL,
status text COLLATE pg_catalog."default" NOT NULL,
start_time timestamp with time zone NOT NULL,
end_time timestamp with time zone NOT NULL,
offer_desc text COLLATE pg_catalog."default" NOT NULL,
offer_type text COLLATE pg_catalog."default" NOT NULL,
rcpt_txt text COLLATE pg_catalog."default" NOT NULL,
CONSTRAINT offer_meta_data_pkey PRIMARY KEY (offerid)
)
TABLESPACE pg_default;
ALTER TABLE public.offer_meta_data
OWNER to "user";
```
```bash
dummy data
==========
INSERT INTO public.offer_meta_data(
offerid, eligibility, discount_type, offer_meta_status, start_time,end_time,
offer_desc,offer_type,rcpt_txt)
VALUES ('o1','elgibility','dicounted','Active','2020-04-14 19:10:25','2020-04-15 19:10:25',
'30 percent','5','RCPT TXT');
INSERT INTO public.offer_meta_data(
offerid, eligibility, discount_type, offer_meta_status, start_time,end_time,
offer_desc,offer_type,rcpt_txt)
VALUES ('o2','elgibility','dicounted','InActive','2020-04-14 19:10:25','2020-04-15 19:10:25',
'20 percent','5','RCPT TXT');
INSERT INTO public.offer_meta_data(
offerid, eligibility, discount_type, offer_meta_status, start_time,end_time,
offer_desc,offer_type,rcpt_txt)
VALUES ('o3','elgibility','dicounted','Active','2020-04-15 19:10:25','2020-04-16 19:10:25',
'10 percent','5','RCPT TXT');
INSERT INTO public.offer_meta_data(
offerid, eligibility, discount_type, offer_meta_status, start_time,end_time,
offer_desc,offer_type,rcpt_txt)
VALUES ('o4','elgibility','dicounted','Active','2020-04-1 19:10:25','2020-04-15 19:10:25',
'05 percent','5','RCPT TXT');
```
src/main/java/com/nisum/offertransactionservice/client/ClientService.java
View file @
edf374b6
package
com
.
nisum
.
offertransactionservice
.
client
;
import
com.nisum.offertransactionservice.config.OfferTransactionConfig
;
import
com.nisum.offertransactionservice.genericexception.GlobalApiGenericException
;
import
com.nisum.offertransactionservice.model.PERequest
;
import
com.nisum.offertransactionservice.model.PEResponse
;
import
com.safeway.epe.model.Response
;
import
com.nisum.offertransactionservice.dto.PERequest
;
import
com.nisum.offertransactionservice.dto.PEResponse
;
import
lombok.extern.slf4j.Slf4j
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.beans.factory.annotation.Value
;
import
org.springframework.http.HttpHeaders
;
import
org.springframework.http.HttpStatus
;
import
org.springframework.http.MediaType
;
import
org.springframework.stereotype.Component
;
import
org.springframework.web.reactive.function.client.ClientResponse
;
import
org.springframework.web.reactive.function.client.ExchangeFilterFunction
;
import
org.springframework.web.reactive.function.client.WebClient
;
import
reactor.core.publisher.Flux
;
import
reactor.core.publisher.Mono
;
import
javax.annotation.PostConstruct
;
...
...
@@ -72,8 +67,6 @@ public class ClientService {
bodyToMono
(
String
.
class
);
}
public
PEResponse
getPeResponseFlux
(
PERequest
peRequest
)
{
return
webClient
.
post
().
uri
(
offerTransactionConfig
.
getPromotionEngineUrl
()).
...
...
src/main/java/com/nisum/offertransactionservice/controller/OfferTransactionController.java
View file @
edf374b6
package
com
.
nisum
.
offertransactionservice
.
controller
;
import
com.nisum.offertransactionservice.model.*
;
import
com.nisum.offertransactionservice.dto.EndOfSaleReq
;
import
com.nisum.offertransactionservice.dto.OfferTransactionRequest
;
import
com.nisum.offertransactionservice.dto.OfferTransactionResponse
;
import
com.nisum.offertransactionservice.service.EndOfSaleService
;
import
com.nisum.offertransactionservice.service.EndOfTransactionService
;
import
com.nisum.offertransactionservice.service.OfferCallingPEService
;
import
org.slf4j.MDC
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.http.HttpStatus
;
import
org.springframework.http.ResponseEntity
;
import
org.springframework.web.bind.annotation.*
;
import
javax.validation.Valid
;
import
java.io.IOException
;
import
java.util.List
;
import
java.util.UUID
;
@RestController
@CrossOrigin
...
...
src/main/java/com/nisum/offertransactionservice/converter/OfferConvertion.java
View file @
edf374b6
package
com
.
nisum
.
offertransactionservice
.
converter
;
import
com.nisum.offertransactionservice.model.OfferTransactionRequest
;
import
com.nisum.offertransactionservice.model.OfferTransactionResponse
;
import
com.nisum.offertransactionservice.model.PERequest
;
import
com.nisum.offertransactionservice.model.PEResponse
;
import
com.nisum.offertransactionservice.dto.*
;
import
com.nisum.offertransactionservice.model.OfferLookup
;
import
com.nisum.offertransactionservice.model.OfferMeta
;
import
org.mapstruct.Mapper
;
import
org.mapstruct.factory.Mappers
;
...
...
@@ -15,4 +14,10 @@ public interface OfferConvertion {
OfferTransactionResponse
map
(
PEResponse
peResponse
);
PERequest
map
(
OfferTransactionRequest
offerTransactionRequest
);
OfferLookupDTO
map
(
OfferLookup
offerLookup
);
OfferMetaDTO
map
(
OfferMeta
offerMeta
);
}
src/main/java/com/nisum/offertransactionservice/dao/OfferMetaDataRepo.java
0 → 100644
View file @
edf374b6
package
com
.
nisum
.
offertransactionservice
.
dao
;
import
com.nisum.offertransactionservice.model.OfferMeta
;
import
org.springframework.data.jpa.repository.JpaRepository
;
import
java.util.Optional
;
public
interface
OfferMetaDataRepo
extends
JpaRepository
<
OfferMeta
,
String
>
{
public
Optional
<
OfferMeta
>
findByOfferIdAndOfferStatus
(
String
offerId
,
String
offerStatus
);
}
src/main/java/com/nisum/offertransactionservice/
model
/EndOfSaleReq.java
→
src/main/java/com/nisum/offertransactionservice/
dto
/EndOfSaleReq.java
View file @
edf374b6
package
com
.
nisum
.
offertransactionservice
.
model
;
package
com
.
nisum
.
offertransactionservice
.
dto
;
import
com.nisum.offertransactionservice.model.OfferLookup
;
import
lombok.AccessLevel
;
import
lombok.AllArgsConstructor
;
import
lombok.Data
;
...
...
src/main/java/com/nisum/offertransactionservice/
model
/EndOfSaleResponse.java
→
src/main/java/com/nisum/offertransactionservice/
dto
/EndOfSaleResponse.java
View file @
edf374b6
package
com
.
nisum
.
offertransactionservice
.
model
;
package
com
.
nisum
.
offertransactionservice
.
dto
;
import
lombok.AccessLevel
;
...
...
src/main/java/com/nisum/offertransactionservice/
model
/Item.java
→
src/main/java/com/nisum/offertransactionservice/
dto
/Item.java
View file @
edf374b6
package
com
.
nisum
.
offertransactionservice
.
model
;
package
com
.
nisum
.
offertransactionservice
.
dto
;
import
lombok.AccessLevel
;
import
lombok.AllArgsConstructor
;
...
...
src/main/java/com/nisum/offertransactionservice/
model
/Offer.java
→
src/main/java/com/nisum/offertransactionservice/
dto
/Offer.java
View file @
edf374b6
package
com
.
nisum
.
offertransactionservice
.
model
;
package
com
.
nisum
.
offertransactionservice
.
dto
;
import
lombok.AccessLevel
;
import
lombok.AllArgsConstructor
;
...
...
src/main/java/com/nisum/offertransactionservice/dto/OfferLookupDTO.java
0 → 100644
View file @
edf374b6
package
com
.
nisum
.
offertransactionservice
.
dto
;
import
com.nisum.offertransactionservice.model.OfferLookupComposite
;
import
lombok.AccessLevel
;
import
lombok.AllArgsConstructor
;
import
lombok.Data
;
import
lombok.NoArgsConstructor
;
import
lombok.experimental.FieldDefaults
;
import
javax.persistence.Column
;
import
javax.persistence.EmbeddedId
;
@Data
@NoArgsConstructor
@AllArgsConstructor
@FieldDefaults
(
level
=
AccessLevel
.
PRIVATE
,
makeFinal
=
false
)
public
class
OfferLookupDTO
{
String
id
;
String
idType
;
String
offerId
;
String
storeId
;
String
terminal
;
String
preCondition
;
OfferMetaDTO
offerMetaDTO
;
}
src/main/java/com/nisum/offertransactionservice/dto/OfferMetaDTO.java
0 → 100644
View file @
edf374b6
package
com
.
nisum
.
offertransactionservice
.
dto
;
import
lombok.AccessLevel
;
import
lombok.AllArgsConstructor
;
import
lombok.Data
;
import
lombok.NoArgsConstructor
;
import
lombok.experimental.FieldDefaults
;
import
java.time.LocalDateTime
;
@Data
@NoArgsConstructor
@AllArgsConstructor
@FieldDefaults
(
level
=
AccessLevel
.
PRIVATE
,
makeFinal
=
false
)
public
class
OfferMetaDTO
{
String
offerId
;
LocalDateTime
startTime
;
LocalDateTime
expiryTime
;
String
offerStatus
;
String
eligibility
;
String
discount
;
String
offerType
;
String
offerDesc
;
String
rcptTxt
;
}
src/main/java/com/nisum/offertransactionservice/
model
/OfferTransactionRequest.java
→
src/main/java/com/nisum/offertransactionservice/
dto
/OfferTransactionRequest.java
View file @
edf374b6
package
com
.
nisum
.
offertransactionservice
.
model
;
package
com
.
nisum
.
offertransactionservice
.
dto
;
import
com.nisum.offertransactionservice.dto.Item
;
import
lombok.AccessLevel
;
import
lombok.AllArgsConstructor
;
import
lombok.Data
;
...
...
src/main/java/com/nisum/offertransactionservice/
model
/OfferTransactionResponse.java
→
src/main/java/com/nisum/offertransactionservice/
dto
/OfferTransactionResponse.java
View file @
edf374b6
package
com
.
nisum
.
offertransactionservice
.
model
;
package
com
.
nisum
.
offertransactionservice
.
dto
;
import
com.nisum.offertransactionservice.dto.Item
;
import
lombok.AccessLevel
;
import
lombok.AllArgsConstructor
;
import
lombok.Data
;
...
...
src/main/java/com/nisum/offertransactionservice/
model
/PERequest.java
→
src/main/java/com/nisum/offertransactionservice/
dto
/PERequest.java
View file @
edf374b6
package
com
.
nisum
.
offertransactionservice
.
model
;
package
com
.
nisum
.
offertransactionservice
.
dto
;
import
com.nisum.offertransactionservice.dto.Item
;
import
com.nisum.offertransactionservice.model.OfferLookup
;
import
lombok.AccessLevel
;
import
lombok.AllArgsConstructor
;
import
lombok.Data
;
...
...
@@ -19,5 +21,5 @@ public class PERequest {
String
hhId
;
List
<
Item
>
itemList
;
List
<
OfferLookup
>
eligibleOffers
;
List
<
OfferLookup
DTO
>
eligibleOffers
;
}
src/main/java/com/nisum/offertransactionservice/
model
/PEResponse.java
→
src/main/java/com/nisum/offertransactionservice/
dto
/PEResponse.java
View file @
edf374b6
package
com
.
nisum
.
offertransactionservice
.
model
;
package
com
.
nisum
.
offertransactionservice
.
dto
;
import
com.nisum.offertransactionservice.dto.Item
;
import
lombok.AccessLevel
;
import
lombok.AllArgsConstructor
;
import
lombok.Data
;
...
...
src/main/java/com/nisum/offertransactionservice/
model
/Status.java
→
src/main/java/com/nisum/offertransactionservice/
dto
/Status.java
View file @
edf374b6
package
com
.
nisum
.
offertransactionservice
.
model
;
package
com
.
nisum
.
offertransactionservice
.
dto
;
public
enum
Status
{
C
(
"C"
),
L
(
"L"
),
D
(
"D"
);
...
...
src/main/java/com/nisum/offertransactionservice/genericexception/GlobalApiGenericException.java
View file @
edf374b6
...
...
@@ -14,6 +14,9 @@ public class GlobalApiGenericException extends RuntimeException {
private
Response
response
;
public
GlobalApiGenericException
()
{
}
public
GlobalApiGenericException
(
Response
response
,
String
statusCode
){
this
.
response
=
response
;
this
.
statusCode
=
statusCode
;
...
...
src/main/java/com/nisum/offertransactionservice/model/OfferLookup.java
View file @
edf374b6
...
...
@@ -6,30 +6,36 @@ import lombok.Data;
import
lombok.NoArgsConstructor
;
import
lombok.experimental.FieldDefaults
;
import
javax.persistence.Column
;
import
javax.persistence.Entity
;
import
javax.persistence.Id
;
import
javax.persistence.Table
;
import
javax.persistence.*
;
@Data
@NoArgsConstructor
@AllArgsConstructor
@FieldDefaults
(
level
=
AccessLevel
.
PRIVATE
,
makeFinal
=
false
)
@Entity
@Table
(
name
=
"offer_lookup"
)
@Table
(
name
=
"offerlookup"
)
@IdClass
(
OfferLookupComposite
.
class
)
public
class
OfferLookup
{
@Id
@Column
(
name
=
"offer_lookup_id"
)
String
id
;
@Id
@Column
(
name
=
"offer_type"
)
String
idType
;
@Id
@Column
(
name
=
"offer_id"
)
String
offerId
;
@Column
(
name
=
"store_id"
)
String
storeId
;
@Column
(
name
=
"terminal"
)
String
terminal
;
@Column
(
name
=
"pre_condition"
)
String
preCondition
;
@Column
(
name
=
"offer_type"
)
String
idType
;
}
src/main/java/com/nisum/offertransactionservice/model/OfferLookupComposite.java
0 → 100644
View file @
edf374b6
package
com
.
nisum
.
offertransactionservice
.
model
;
import
lombok.AccessLevel
;
import
lombok.AllArgsConstructor
;
import
lombok.Data
;
import
lombok.NoArgsConstructor
;
import
lombok.experimental.FieldDefaults
;
import
javax.persistence.Column
;
import
javax.persistence.Embeddable
;
import
java.io.Serializable
;
@Data
@NoArgsConstructor
@AllArgsConstructor
@FieldDefaults
(
level
=
AccessLevel
.
PRIVATE
,
makeFinal
=
false
)
public
class
OfferLookupComposite
implements
Serializable
{
@Column
(
name
=
"offer_lookup_id"
)
String
id
;
@Column
(
name
=
"offer_type"
)
String
idType
;
@Column
(
name
=
"offer_id"
)
String
offerId
;
}
src/main/java/com/nisum/offertransactionservice/model/OfferMeta.java
View file @
edf374b6
package
com
.
nisum
.
offertransactionservice
.
model
;
import
lombok.AccessLevel
;
import
lombok.AllArgsConstructor
;
import
lombok.Data
;
import
lombok.NoArgsConstructor
;
import
lombok.experimental.FieldDefaults
;
import
javax.persistence.Column
;
import
javax.persistence.Entity
;
import
javax.persistence.Id
;
import
javax.persistence.Table
;
import
java.time.LocalDateTime
;
@Data
@NoArgsConstructor
@AllArgsConstructor
@FieldDefaults
(
level
=
AccessLevel
.
PRIVATE
,
makeFinal
=
false
)
@Entity
@Table
(
name
=
"offer_meta_data"
)
public
class
OfferMeta
{
@Id
@Column
(
name
=
"offerid"
)
String
offerId
;
@Column
(
name
=
"start_time"
)
LocalDateTime
startTime
;
@Column
(
name
=
"end_time"
)
LocalDateTime
expiryTime
;
Status
status
;
@Column
(
name
=
"offer_meta_status"
)
String
offerStatus
;
@Column
(
name
=
"eligibility"
)
String
eligibility
;
@Column
(
name
=
"discount_type"
)
String
discount
;
@Column
(
name
=
"offer_type"
)
String
offerType
;
@Column
(
name
=
"offer_desc"
)
String
offerDesc
;
@Column
(
name
=
"rcpt_txt"
)
String
rcptTxt
;
Integer
discountThreshold
;
String
offerLimit
;
}
src/main/java/com/nisum/offertransactionservice/service/EndOfSaleService.java
View file @
edf374b6
package
com
.
nisum
.
offertransactionservice
.
service
;
import
com.nisum.offertransactionservice.dao.EndOfSaleRepo
;
import
com.nisum.offertransactionservice.dto.EndOfSaleReq
;
import
com.nisum.offertransactionservice.model.*
;
import
lombok.extern.slf4j.Slf4j
;
import
org.codehaus.jackson.map.ObjectMapper
;
...
...
@@ -24,12 +25,14 @@ public class EndOfSaleService {
String
offerTransactionResponseJson
=
mapper
.
writeValueAsString
(
endOfSaleReq
.
getOfferTransactionResponse
());
String
offersJosn
=
mapper
.
writeValueAsString
(
endOfSaleReq
.
getOffers
());
EndOfSaleEntity
endOfSaleEntity
=
new
EndOfSaleEntity
();
endOfSaleEntity
.
setUuid
(
UUID
.
randomUUID
());
endOfSaleEntity
.
setOfferTransactionResponse
(
offerTransactionResponseJson
);
endOfSaleEntity
.
setOffers
(
offersJosn
);
endOfSaleRepo
.
save
(
endOfSaleEntity
);
if
(
Objects
.
nonNull
(
endOfSaleReq
.
getOfferTransactionResponse
().
getTransactionId
()))
return
endOfSaleReq
.
getOfferTransactionResponse
().
getTransactionId
();
return
""
;
final
String
toString
=
endOfSaleEntity
.
getUuid
().
toString
();
return
toString
;
}
...
...
src/main/java/com/nisum/offertransactionservice/service/OfferCallingPEService.java
View file @
edf374b6
...
...
@@ -4,6 +4,8 @@ package com.nisum.offertransactionservice.service;
import
com.nisum.offertransactionservice.client.ClientService
;
import
com.nisum.offertransactionservice.converter.OfferConvertion
;
import
com.nisum.offertransactionservice.dao.OfferLookupRepo
;
import
com.nisum.offertransactionservice.dao.OfferMetaDataRepo
;
import
com.nisum.offertransactionservice.dto.*
;
import
com.nisum.offertransactionservice.genericexception.GlobalApiGenericException
;
import
com.nisum.offertransactionservice.model.*
;
import
lombok.extern.slf4j.Slf4j
;
...
...
@@ -15,6 +17,8 @@ import reactor.core.publisher.Mono;
import
java.util.ArrayList
;
import
java.util.List
;
import
java.util.Optional
;
import
java.util.stream.Collectors
;
@Service
@PropertySource
(
"classpath:application.properties"
)
...
...
@@ -28,32 +32,23 @@ public class OfferCallingPEService {
@Autowired
private
ClientService
clientService
;
private
ExchangeFilterFunction
logRequest
()
{
return
ExchangeFilterFunction
.
ofRequestProcessor
(
clientRequest
->
{
log
.
info
(
"Promotional Request {}"
,
clientRequest
);
return
Mono
.
just
(
clientRequest
);
});
}
private
ExchangeFilterFunction
logResponse
()
{
return
ExchangeFilterFunction
.
ofResponseProcessor
(
clientResponse
->
{
log
.
info
(
"Promotional Request {}"
,
clientResponse
);
return
Mono
.
just
(
clientResponse
);
});
}
@Autowired
private
OfferMetaDataRepo
offerMetaDataRepo
;
public
OfferTransactionResponse
getDiscountedItemList
(
OfferTransactionRequest
offerTransactionRequest
)
{
log
.
info
(
"Inside getDiscountedItemList Method"
);
List
<
OfferLookup
>
eligibleOffer
=
new
ArrayList
();
offerLookupRepo
.
findAll
().
forEach
(
eligibleOffer:
:
add
);
if
(
eligibleOffer
.
isEmpty
())
{
List
<
OfferLookupDTO
>
offerLookupDTOList
=
getOfferMetaDto
(
eligibleOffer
);
if
(
offerLookupDTOList
.
isEmpty
())
{
log
.
error
(
"Offer lookup Object is empty"
);
throw
new
GlobalApiGenericException
(
"Unable to get the Offer Response "
,
new
Exception
(
"exception e"
),
"400"
,
false
);
}
log
.
debug
(
"Offer lookup Object {}"
,
offerLookupRepo
);
OfferTransactionResponse
offerTransactionResponse
;
PERequest
peRequest
=
OfferConvertion
.
INSTANCE
.
map
(
offerTransactionRequest
);
peRequest
.
setEligibleOffers
(
eligibleOffer
);
peRequest
.
setEligibleOffers
(
offerLookupDTOList
);
log
.
info
(
"Promotional Engine WebClient call Start"
);
PEResponse
peResponseFlux
=
clientService
.
getPeResponseFlux
(
peRequest
);
log
.
debug
(
"Promotional Engine WebClient call End"
);
...
...
@@ -63,5 +58,30 @@ public class OfferCallingPEService {
return
offerTransactionResponse
;
}
public
List
<
OfferLookupDTO
>
getOfferMetaDto
(
List
<
OfferLookup
>
eligibleOffer
){
return
eligibleOffer
.
stream
().
map
(
offer
->
{
Optional
<
OfferMeta
>
optionalOfferMeta
=
offerMetaDataRepo
.
findByOfferIdAndOfferStatus
(
offer
.
getOfferId
(),
"Active"
);
if
(
optionalOfferMeta
.
isPresent
()){
OfferMetaDTO
offerMetaDTO
=
OfferConvertion
.
INSTANCE
.
map
(
optionalOfferMeta
.
get
());
OfferLookupDTO
offerLookupDTO
=
OfferConvertion
.
INSTANCE
.
map
(
offer
);
offerLookupDTO
.
setOfferMetaDTO
(
offerMetaDTO
);
return
offerLookupDTO
;
}
return
null
;
})
.
filter
(
offerLookupDTO
->
offerLookupDTO
!=
null
)
.
collect
(
Collectors
.
toList
());
}
}
src/main/resources/application.properties
View file @
edf374b6
...
...
@@ -2,7 +2,7 @@ spring.datasource.url=jdbc:postgresql://127.0.0.1:5432/postgres
spring.datasource.username
=
user
spring.datasource.password
=
password123
endpoint.url.promotionEngineUrl
=
/promotionEngine/calculateDiscount
endpoint.url.peBaseUrl
=
http://localhost:808
1
endpoint.url.peBaseUrl
=
http://localhost:808
9
endpoint.url.storeConsumerUrl
=
/store/producer
endpoint.url.scBaseUrl
=
http://localhost:8081
server.port
=
8085
src/test/java/com/nisum/offertransactionservice/client/ClientServiceTest.java
View file @
edf374b6
...
...
@@ -2,10 +2,9 @@ package com.nisum.offertransactionservice.client;
import
com.nisum.offertransactionservice.config.OfferTransactionConfig
;
import
com.nisum.offertransactionservice.model.Item
;
import
com.nisum.offertransactionservice.model.PERequest
;
import
com.nisum.offertransactionservice.model.PEResponse
;
import
com.safeway.epe.model.Employee
;
import
com.nisum.offertransactionservice.dto.Item
;
import
com.nisum.offertransactionservice.dto.PERequest
;
import
com.nisum.offertransactionservice.dto.PEResponse
;
import
org.junit.Assert
;
import
org.junit.Before
;
import
org.junit.Test
;
...
...
@@ -14,12 +13,9 @@ import org.mockito.InjectMocks;
import
org.mockito.Mock
;
import
org.mockito.MockitoAnnotations
;
import
org.mockito.junit.MockitoJUnitRunner
;
import
org.springframework.http.MediaType
;
import
org.springframework.test.util.ReflectionTestUtils
;
import
org.springframework.test.web.reactive.server.WebTestClient
;
import
org.springframework.web.reactive.function.client.WebClient
;
import
reactor.core.publisher.Mono
;
import
reactor.test.StepVerifier
;
import
java.util.ArrayList
;
import
java.util.List
;
...
...
@@ -71,8 +67,7 @@ public class ClientServiceTest {
@Test
public
void
getStringMonoTest
(){
String
uuid
=
"86fd4146-0540-405b-b621-a95f4ccdfa0d"
;
// ReflectionTestUtils.setField(clientService,"storeConsumerUrl","/store/producer");
when
(
offerTransactionConfig
.
getPeBaseUrl
()).
thenReturn
(
"http://localhost:8081"
);
when
(
offerTransactionConfig
.
getPeBaseUrl
()).
thenReturn
(
"http://localhost:8089"
);
when
(
offerTransactionConfig
.
getScBaseUrl
()).
thenReturn
(
"http://localhost:8081"
);
when
(
webClientMock
.
post
()).
thenReturn
(
requestBodyUriMock
);
when
(
requestBodyUriMock
.
uri
(
"/store/producer"
)).
thenReturn
(
requestBodyMock
);
...
...
src/test/java/com/nisum/offertransactionservice/controller/OfferControllerTest.java
View file @
edf374b6
package
com
.
nisum
.
offertransactionservice
.
controller
;
import
com.nisum.offertransactionservice.model.*
;
import
com.nisum.offertransactionservice.service.EndOfSaleService
;
import
com.nisum.offertransactionservice.service.EndOfTransactionService
;
import
com.nisum.offertransactionservice.service.OfferCallingPEService
;
import
org.junit.Assert
;
import
org.junit.Ignore
;
import
org.junit.Test
;
import
org.junit.runner.RunWith
;
import
org.mockito.Mock
;
import
org.mockito.Mockito
;
import
org.mockito.junit.MockitoJUnitRunner
;
import
java.io.IOException
;
import
java.util.ArrayList
;
import
java.util.List
;
import
java.util.UUID
;
import
java.util.stream.Collectors
;
@RunWith
(
MockitoJUnitRunner
.
class
)
@Ignore
public
class
OfferControllerTest
{
@Mock
private
OfferCallingPEService
offerCallingPEService
;
@Mock
private
EndOfTransactionService
endOfTransactionService
;
@Mock
private
EndOfSaleService
endOfSaleService
;
@Test
public
void
getOfferTransactionResponseTest
()
{
OfferTransactionRequest
offerTransactionRequest
=
getOfferTransactionRequest
();
Mockito
.
when
(
offerCallingPEService
.
getDiscountedItemList
(
offerTransactionRequest
)).
thenReturn
(
retOfferTransRes
());
OfferTransactionResponse
offerTransactionResponse
=
offerCallingPEService
.
getDiscountedItemList
(
offerTransactionRequest
);
Assert
.
assertNotNull
(
offerTransactionResponse
);
}
@Test
public
void
endOfSaleTest
()
throws
IOException
{
Mockito
.
when
(
endOfSaleService
.
putEndofSaleResInDb
(
getEndOfSaleReq
())).
thenReturn
(
UUID
.
randomUUID
().
toString
());
String
uuid
=
endOfSaleService
.
putEndofSaleResInDb
(
getEndOfSaleReq
());
Assert
.
assertNotNull
(
uuid
);
}
@Test
public
void
endOfTransactionTest
()
{
Mockito
.
when
(
endOfTransactionService
.
endOfTransaction
(
UUID
.
randomUUID
().
toString
())).
thenReturn
(
"End Of Transaction note from Store Producer"
);
String
res
=
endOfTransactionService
.
endOfTransaction
(
UUID
.
randomUUID
().
toString
());
Assert
.
assertEquals
(
res
,
"End Of Transaction note from Store Producer"
);
}
private
EndOfSaleReq
getEndOfSaleReq
()
{
EndOfSaleReq
endOfSaleReq
=
new
EndOfSaleReq
();
endOfSaleReq
.
setOfferTransactionResponse
(
retOfferTransRes
());
endOfSaleReq
.
setOffers
(
returnOffers
());
return
endOfSaleReq
;
}
public
List
<
OfferLookup
>
returnOffers
()
{
OfferLookup
offerLookup1
=
new
OfferLookup
(
"1"
,
"12"
,
"234"
,
"02"
,
"AND"
,
"BOGO"
);
OfferLookup
offerLookup2
=
new
OfferLookup
(
"2"
,
"13"
,
"234"
,
"02"
,
"OR"
,
"BXGY"
);
List
<
OfferLookup
>
offerLookups
=
new
ArrayList
<>();
offerLookups
.
add
(
offerLookup1
);
offerLookups
.
add
(
offerLookup2
);
return
offerLookups
.
stream
().
collect
(
Collectors
.
toList
());
}
private
OfferTransactionResponse
retOfferTransRes
()
{
OfferTransactionResponse
offerTransactionResponse
=
new
OfferTransactionResponse
();
offerTransactionResponse
.
setHhid
(
"123"
);
List
<
Item
>
itemList
=
new
ArrayList
<>();
Item
item1
=
new
Item
(
"Coke"
,
"12"
,
6.05
);
Item
item2
=
new
Item
(
"Thumpsup"
,
"11"
,
12.32
);
itemList
.
add
(
item1
);
itemList
.
add
(
item2
);
offerTransactionResponse
.
setDiscountedItemList
(
itemList
);
return
offerTransactionResponse
;
}
private
OfferTransactionRequest
getOfferTransactionRequest
()
{
OfferTransactionRequest
offerTransactionRequest
=
new
OfferTransactionRequest
();
offerTransactionRequest
.
setHhId
(
"123"
);
List
<
Item
>
itemList
=
new
ArrayList
<>();
Item
item1
=
new
Item
(
"Coke"
,
"12"
,
13.05
);
Item
item2
=
new
Item
(
"Thumpsup"
,
"11"
,
14.05
);
itemList
.
add
(
item1
);
itemList
.
add
(
item2
);
offerTransactionRequest
.
setItemList
(
itemList
);
return
offerTransactionRequest
;
}
}
//package com.nisum.offertransactionservice.controller;
//
//import com.nisum.offertransactionservice.dto.EndOfSaleReq;
//import com.nisum.offertransactionservice.dto.Item;
//import com.nisum.offertransactionservice.dto.OfferTransactionRequest;
//import com.nisum.offertransactionservice.dto.OfferTransactionResponse;
//import com.nisum.offertransactionservice.model.*;
//import com.nisum.offertransactionservice.service.EndOfSaleService;
//import com.nisum.offertransactionservice.service.EndOfTransactionService;
//import com.nisum.offertransactionservice.service.OfferCallingPEService;
//import org.junit.Assert;
//import org.junit.Ignore;
//import org.junit.Test;
//import org.junit.runner.RunWith;
//import org.mockito.Mock;
//import org.mockito.Mockito;
//import org.mockito.junit.MockitoJUnitRunner;
//
//import java.io.IOException;
//import java.util.ArrayList;
//import java.util.List;
//import java.util.UUID;
//import java.util.stream.Collectors;
//
//@RunWith(MockitoJUnitRunner.class)
//@Ignore
//public class OfferControllerTest {
//
// @Mock
// private OfferCallingPEService offerCallingPEService;
//
// @Mock
// private EndOfTransactionService endOfTransactionService;
//
// @Mock
// private EndOfSaleService endOfSaleService;
//
// @Test
// public void getOfferTransactionResponseTest() {
// OfferTransactionRequest offerTransactionRequest = getOfferTransactionRequest();
// Mockito.when(offerCallingPEService.getDiscountedItemList(offerTransactionRequest)).thenReturn(retOfferTransRes());
// OfferTransactionResponse offerTransactionResponse = offerCallingPEService.getDiscountedItemList(offerTransactionRequest);
// Assert.assertNotNull(offerTransactionResponse);
// }
//
// @Test
// public void endOfSaleTest() throws IOException {
// Mockito.when(endOfSaleService.putEndofSaleResInDb(getEndOfSaleReq())).thenReturn(UUID.randomUUID().toString());
// String uuid = endOfSaleService.putEndofSaleResInDb(getEndOfSaleReq());
// Assert.assertNotNull(uuid);
// }
//
// @Test
// public void endOfTransactionTest() {
// Mockito.when(endOfTransactionService.endOfTransaction(UUID.randomUUID().toString())).thenReturn("End Of Transaction note from Store Producer");
// String res = endOfTransactionService.endOfTransaction(UUID.randomUUID().toString());
// Assert.assertEquals(res, "End Of Transaction note from Store Producer");
// }
//
// private EndOfSaleReq getEndOfSaleReq() {
// EndOfSaleReq endOfSaleReq = new EndOfSaleReq();
// endOfSaleReq.setOfferTransactionResponse(retOfferTransRes());
// endOfSaleReq.setOffers(returnOffers());
// return endOfSaleReq;
// }
//
// public List<OfferLookup> returnOffers() {
// OfferLookup offerLookup1 = new OfferLookup("1", "12", "234", "02", "AND", "BOGO");
// OfferLookup offerLookup2 = new OfferLookup("2", "13", "234", "02", "OR", "BXGY");
// List<OfferLookup> offerLookups = new ArrayList<>();
// offerLookups.add(offerLookup1);
// offerLookups.add(offerLookup2);
// return offerLookups.stream().collect(Collectors.toList());
// }
//
// private OfferTransactionResponse retOfferTransRes() {
// OfferTransactionResponse offerTransactionResponse = new OfferTransactionResponse();
// offerTransactionResponse.setHhid("123");
// List<Item> itemList = new ArrayList<>();
// Item item1 = new Item("Coke", "12", 6.05);
// Item item2 = new Item("Thumpsup", "11", 12.32);
// itemList.add(item1);
// itemList.add(item2);
// offerTransactionResponse.setDiscountedItemList(itemList);
// return offerTransactionResponse;
// }
//
// private OfferTransactionRequest getOfferTransactionRequest() {
// OfferTransactionRequest offerTransactionRequest = new OfferTransactionRequest();
// offerTransactionRequest.setHhId("123");
// List<Item> itemList = new ArrayList<>();
// Item item1 = new Item("Coke", "12", 13.05);
// Item item2 = new Item("Thumpsup", "11", 14.05);
// itemList.add(item1);
// itemList.add(item2);
// offerTransactionRequest.setItemList(itemList);
// return offerTransactionRequest;
// }
//
//}
src/test/java/com/nisum/offertransactionservice/service/EndOfSaleTest.java
View file @
edf374b6
package
com
.
nisum
.
offertransactionservice
.
service
;
import
com.nisum.offertransactionservice.dao.EndOfSaleRepo
;
import
com.nisum.offertransactionservice.dao.OfferLookupRepo
;
import
com.nisum.offertransactionservice.dto.EndOfSaleReq
;
import
com.nisum.offertransactionservice.dto.Item
;
import
com.nisum.offertransactionservice.dto.OfferTransactionResponse
;
import
com.nisum.offertransactionservice.model.*
;
import
org.junit.Assert
;
import
org.junit.Before
;
...
...
@@ -14,7 +16,6 @@ import org.mockito.junit.MockitoJUnitRunner;
import
java.io.IOException
;
import
java.util.ArrayList
;
import
java.util.List
;
import
java.util.UUID
;
import
java.util.stream.Collectors
;
@RunWith
(
MockitoJUnitRunner
.
class
)
...
...
src/test/java/com/nisum/offertransactionservice/service/OfferServiceTest.java
View file @
edf374b6
...
...
@@ -3,6 +3,8 @@ package com.nisum.offertransactionservice.service;
import
com.nisum.offertransactionservice.client.ClientService
;
import
com.nisum.offertransactionservice.dao.OfferLookupRepo
;
import
com.nisum.offertransactionservice.dao.OfferMetaDataRepo
;
import
com.nisum.offertransactionservice.dto.*
;
import
com.nisum.offertransactionservice.model.*
;
import
org.junit.Assert
;
import
org.junit.Before
;
...
...
@@ -11,15 +13,14 @@ import org.junit.Test;
import
org.junit.runner.RunWith
;
import
org.mockito.*
;
import
org.mockito.junit.MockitoJUnitRunner
;
import
org.springframework.beans.factory.annotation.Value
;
import
org.springframework.boot.test.autoconfigure.web.reactive.AutoConfigureWebTestClient
;
import
org.springframework.boot.test.context.SpringBootTest
;
import
org.springframework.context.annotation.PropertySource
;
import
org.springframework.test.annotation.DirtiesContext
;
import
org.springframework.test.web.reactive.server.WebTestClient
;
import
java.time.LocalDateTime
;
import
java.util.ArrayList
;
import
java.util.Arrays
;
import
java.util.List
;
import
java.util.Optional
;
import
java.util.stream.Collectors
;
@RunWith
(
MockitoJUnitRunner
.
class
)
...
...
@@ -30,6 +31,10 @@ public class OfferServiceTest {
@Mock
private
OfferLookupRepo
offerLookupRepo
;
@Mock
private
OfferMetaDataRepo
offerMetaDataRepo
;
@InjectMocks
private
OfferCallingPEService
offerCallingPEService
=
new
OfferCallingPEService
();
...
...
@@ -46,10 +51,13 @@ public class OfferServiceTest {
OfferTransactionRequest
offerTransactionRequest
=
getOfferTransactionRequest
();
Mockito
.
when
(
offerLookupRepo
.
findAll
()).
thenReturn
(
returnOffers
());
Mockito
.
when
(
clientService
.
getPeResponseFlux
(
ArgumentMatchers
.
any
())).
thenReturn
(
getPeResponse
());
Mockito
.
doReturn
(
getOfferMeta
()).
when
(
offerMetaDataRepo
).
findByOfferIdAndOfferStatus
(
ArgumentMatchers
.
any
(),
ArgumentMatchers
.
any
());
OfferTransactionResponse
offerTransactionResponse
=
offerCallingPEService
.
getDiscountedItemList
(
offerTransactionRequest
);
Assert
.
assert
Equals
(
offerTransactionResponse
,
retOfferTransRes
()
);
Assert
.
assert
NotNull
(
offerTransactionResponse
);
}
private
OfferTransactionResponse
retOfferTransRes
()
{
OfferTransactionResponse
offerTransactionResponse
=
new
OfferTransactionResponse
();
offerTransactionResponse
.
setHhid
(
"123"
);
...
...
@@ -106,4 +114,77 @@ public class OfferServiceTest {
offerLookups
.
add
(
offerLookup2
);
return
offerLookups
.
stream
().
collect
(
Collectors
.
toList
());
}
private
Optional
<
OfferMeta
>
getOfferMeta
(){
OfferMeta
offerMeta
=
new
OfferMeta
();
offerMeta
.
setDiscount
(
"discount"
);
offerMeta
.
setEligibility
(
"eligibility"
);
offerMeta
.
setExpiryTime
(
LocalDateTime
.
of
(
2021
,
01
,
01
,
01
,
01
));
offerMeta
.
setStartTime
(
LocalDateTime
.
of
(
2020
,
01
,
01
,
01
,
01
));
offerMeta
.
setOfferDesc
(
"30 percent"
);
offerMeta
.
setOfferId
(
"o1"
);
offerMeta
.
setOfferStatus
(
"Active"
);
offerMeta
.
setRcptTxt
(
"text"
);
offerMeta
.
setOfferType
(
"aaa"
);
return
Optional
.
of
(
offerMeta
);
}
private
List
<
OfferLookupDTO
>
getOfferLookupDto
(){
OfferLookupDTO
offerLookupDTO
=
new
OfferLookupDTO
();
offerLookupDTO
.
setId
(
"123456"
);
offerLookupDTO
.
setIdType
(
"1234"
);
offerLookupDTO
.
setOfferId
(
"o1"
);
offerLookupDTO
.
setPreCondition
(
"And"
);
offerLookupDTO
.
setStoreId
(
"001"
);
offerLookupDTO
.
setTerminal
(
"001"
);
OfferMetaDTO
offerMetaDTO
=
new
OfferMetaDTO
();
offerMetaDTO
.
setDiscount
(
"discount"
);
offerMetaDTO
.
setEligibility
(
"eligibility"
);
offerMetaDTO
.
setExpiryTime
(
LocalDateTime
.
of
(
2021
,
01
,
01
,
01
,
01
));
offerMetaDTO
.
setStartTime
(
LocalDateTime
.
of
(
2020
,
01
,
01
,
01
,
01
));
offerMetaDTO
.
setOfferDesc
(
"30 percent"
);
offerMetaDTO
.
setOfferId
(
"o1"
);
offerMetaDTO
.
setOfferStatus
(
"Active"
);
offerMetaDTO
.
setRcptTxt
(
"text"
);
offerMetaDTO
.
setOfferType
(
"aaa"
);
offerLookupDTO
.
setOfferMetaDTO
(
offerMetaDTO
);
OfferLookupDTO
offerLookupDTO1
=
new
OfferLookupDTO
();
offerLookupDTO1
.
setId
(
"123456"
);
offerLookupDTO1
.
setIdType
(
"1234"
);
offerLookupDTO1
.
setOfferId
(
"o1"
);
offerLookupDTO1
.
setPreCondition
(
"And"
);
offerLookupDTO1
.
setStoreId
(
"001"
);
offerLookupDTO1
.
setTerminal
(
"001"
);
OfferMetaDTO
offerMetaDTO1
=
new
OfferMetaDTO
();
offerMetaDTO1
.
setDiscount
(
"discount"
);
offerMetaDTO1
.
setEligibility
(
"eligibility"
);
offerMetaDTO1
.
setExpiryTime
(
LocalDateTime
.
of
(
2021
,
01
,
01
,
01
,
01
));
offerMetaDTO1
.
setStartTime
(
LocalDateTime
.
of
(
2020
,
01
,
01
,
01
,
01
));
offerMetaDTO1
.
setOfferDesc
(
"20 percent"
);
offerMetaDTO1
.
setOfferId
(
"o1"
);
offerMetaDTO1
.
setOfferStatus
(
"Active"
);
offerMetaDTO1
.
setRcptTxt
(
"text"
);
offerMetaDTO1
.
setOfferType
(
"aaa"
);
offerLookupDTO1
.
setOfferMetaDTO
(
offerMetaDTO
);
List
<
OfferLookupDTO
>
offerLookupDTOList
=
Arrays
.
asList
(
offerLookupDTO1
,
offerLookupDTO
);
return
offerLookupDTOList
;
}
}
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment