Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
S
service-campaign
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Nguyen Ha
service-campaign
Commits
ed1c6e2d
Commit
ed1c6e2d
authored
Aug 06, 2019
by
đinh thị đầm
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'master' of
http://git.myitsol.com/hanv/service-campaign
parents
b88b5d4e
7cdb69ac
Changes
19
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
19 changed files
with
450 additions
and
57 deletions
+450
-57
campaign.iml
campaign.iml
+1
-0
pom.xml
pom.xml
+6
-0
src/main/java/com/viettel/campaign/config/ModelMapperConfig.java
...n/java/com/viettel/campaign/config/ModelMapperConfig.java
+16
-0
src/main/java/com/viettel/campaign/model/CampaignCustomer.java
...ain/java/com/viettel/campaign/model/CampaignCustomer.java
+57
-0
src/main/java/com/viettel/campaign/model/TimeRangeDialMode.java
...in/java/com/viettel/campaign/model/TimeRangeDialMode.java
+40
-0
src/main/java/com/viettel/campaign/model/TimeZoneDialMode.java
...ain/java/com/viettel/campaign/model/TimeZoneDialMode.java
+45
-0
src/main/java/com/viettel/campaign/repository/CampaignRepository.java
...a/com/viettel/campaign/repository/CampaignRepository.java
+10
-0
src/main/java/com/viettel/campaign/repository/CampaignRepositoryCustom.java
...viettel/campaign/repository/CampaignRepositoryCustom.java
+2
-5
src/main/java/com/viettel/campaign/repository/impl/CampaignRepositoryImpl.java
...ttel/campaign/repository/impl/CampaignRepositoryImpl.java
+108
-32
src/main/java/com/viettel/campaign/service/CampaignService.java
...in/java/com/viettel/campaign/service/CampaignService.java
+7
-1
src/main/java/com/viettel/campaign/service/impl/CampaignServiceImpl.java
...om/viettel/campaign/service/impl/CampaignServiceImpl.java
+52
-15
src/main/java/com/viettel/campaign/utils/SQLBuilder.java
src/main/java/com/viettel/campaign/utils/SQLBuilder.java
+18
-0
src/main/java/com/viettel/campaign/web/dto/CampaignCustomerDTO.java
...ava/com/viettel/campaign/web/dto/CampaignCustomerDTO.java
+29
-0
src/main/java/com/viettel/campaign/web/dto/CampaignDTO.java
src/main/java/com/viettel/campaign/web/dto/CampaignDTO.java
+2
-0
src/main/java/com/viettel/campaign/web/dto/ResultDTO.java
src/main/java/com/viettel/campaign/web/dto/ResultDTO.java
+1
-0
src/main/java/com/viettel/campaign/web/dto/TimeRangeDialModeDTO.java
...va/com/viettel/campaign/web/dto/TimeRangeDialModeDTO.java
+21
-0
src/main/java/com/viettel/campaign/web/dto/TimeZoneDialModeDTO.java
...ava/com/viettel/campaign/web/dto/TimeZoneDialModeDTO.java
+20
-0
src/main/java/com/viettel/campaign/web/dto/request_dto/CampaignRequestDTO.java
...ttel/campaign/web/dto/request_dto/CampaignRequestDTO.java
+1
-1
src/main/java/com/viettel/campaign/web/rest/controller/CampaignController.java
...ttel/campaign/web/rest/controller/CampaignController.java
+14
-3
No files found.
campaign.iml
View file @
ed1c6e2d
...
...
@@ -208,5 +208,6 @@
<orderEntry
type=
"library"
name=
"Maven: com.fasterxml.jackson.core:jackson-databind:2.9.8"
level=
"project"
/>
<orderEntry
type=
"library"
name=
"Maven: com.fasterxml.jackson.core:jackson-annotations:2.9.8"
level=
"project"
/>
<orderEntry
type=
"library"
name=
"Maven: joda-time:joda-time:2.9.9"
level=
"project"
/>
<orderEntry
type=
"library"
name=
"Maven: org.modelmapper:modelmapper:2.3.2"
level=
"project"
/>
</component>
</module>
\ No newline at end of file
pom.xml
View file @
ed1c6e2d
...
...
@@ -183,6 +183,12 @@
<groupId>
joda-time
</groupId>
<artifactId>
joda-time
</artifactId>
</dependency>
<dependency>
<groupId>
org.modelmapper
</groupId>
<artifactId>
modelmapper
</artifactId>
<version>
2.3.2
</version>
</dependency>
</dependencies>
<dependencyManagement>
...
...
src/main/java/com/viettel/campaign/config/ModelMapperConfig.java
0 → 100644
View file @
ed1c6e2d
package
com.viettel.campaign.config
;
import
org.modelmapper.ModelMapper
;
import
org.springframework.context.annotation.Bean
;
import
org.springframework.context.annotation.Configuration
;
/**
* @author anhvd_itsol
*/
@Configuration
public
class
ModelMapperConfig
{
@Bean
public
ModelMapper
modelMapper
()
{
return
new
ModelMapper
();
}
}
src/main/java/com/viettel/campaign/model/CampaignCustomer.java
0 → 100644
View file @
ed1c6e2d
package
com.viettel.campaign.model
;
import
lombok.Getter
;
import
lombok.Setter
;
import
javax.persistence.*
;
import
javax.validation.constraints.NotNull
;
import
java.util.Date
;
@Entity
@Table
(
name
=
"CAMPAIGN_CUSTOMER"
)
@Getter
@Setter
public
class
CampaignCustomer
{
@Id
@Basic
(
optional
=
false
)
@NotNull
@Column
(
name
=
"CAMPAIGN_CUSTOMERLIST_ID"
)
private
Long
campaignCustomerListId
;
@Column
(
name
=
"CAMPAIGN_ID"
)
private
Long
campaignId
;
@Column
(
name
=
"CUSTOMER_ID"
)
private
Long
customerId
;
@Column
(
name
=
"STATUS"
)
private
Short
status
;
@Column
(
name
=
"AGENT_ID"
)
private
Long
agentId
;
@Temporal
(
TemporalType
.
TIMESTAMP
)
@Column
(
name
=
"RECALL_TIME"
)
private
Date
recallTime
;
@Column
(
name
=
"RECALL_COUNT"
)
private
Long
recallCount
=
0L
;
@Temporal
(
TemporalType
.
TIMESTAMP
)
@Column
(
name
=
"CALL_TIME"
)
private
Date
callTime
;
@Column
(
name
=
"CUSTOMER_LIST_ID"
)
private
Long
customerListId
;
@Column
(
name
=
"IN_CAMPAIGN_STATUS"
)
private
Short
inCampaignStatus
;
@Temporal
(
TemporalType
.
TIMESTAMP
)
@Column
(
name
=
"SEND_TIME"
)
private
Date
sendTime
;
@Column
(
name
=
"PROCESS_STATUS"
)
private
Short
processStatus
=
0
;
@Column
(
name
=
"CONTACT_STATUS"
)
private
Short
contactStatus
;
@Column
(
name
=
"REDISTRIBUTE"
)
private
Short
redistribute
;
@Column
(
name
=
"SESSION_ID"
)
private
String
sessionId
;
@Column
(
name
=
"CALL_STATUS"
)
private
Long
callStatus
;
@Column
(
name
=
"COMPANY_SITE_ID"
)
private
Long
companySiteId
;
@Column
(
name
=
"COMPLAIN_ID"
)
private
Long
complainId
;
}
src/main/java/com/viettel/campaign/model/TimeRangeDialMode.java
0 → 100644
View file @
ed1c6e2d
package
com.viettel.campaign.model
;
import
lombok.Getter
;
import
lombok.Setter
;
import
javax.persistence.*
;
import
javax.validation.constraints.NotNull
;
import
java.io.Serializable
;
import
java.util.Date
;
/**
* @author anhvd_itsol
*/
@Entity
@Table
(
name
=
"TIME_RANGE_DIAL_MODE"
)
@Getter
@Setter
public
class
TimeRangeDialMode
implements
Serializable
{
@Id
@NotNull
@Basic
(
optional
=
false
)
@Column
(
name
=
"TIME_RANGE_DIAL_MODE_ID"
)
private
Long
timeRangeDialModeId
;
@Column
(
name
=
"COMPANY_SITE_ID"
)
private
Long
companySiteId
;
@Temporal
(
TemporalType
.
DATE
)
@Column
(
name
=
"START_TIME"
)
private
Date
startTime
;
@Column
(
name
=
"CAMPAIGN_ID"
)
private
Long
campaignId
;
@Column
(
name
=
"DIAL_MODE"
)
private
Short
dialMode
;
@Column
(
name
=
"USER_ID"
)
private
Long
userId
;
}
src/main/java/com/viettel/campaign/model/TimeZoneDialMode.java
0 → 100644
View file @
ed1c6e2d
package
com.viettel.campaign.model
;
import
javax.persistence.Entity
;
import
lombok.Getter
;
import
lombok.Setter
;
import
javax.persistence.*
;
import
javax.validation.constraints.NotNull
;
import
java.io.Serializable
;
/**
* @author anhvd_itsol
*/
@Entity
@Table
(
name
=
"TIME_ZONE_DIAL_MODE"
)
@Getter
@Setter
public
class
TimeZoneDialMode
implements
Serializable
{
@Id
@NotNull
@Basic
(
optional
=
false
)
@Column
(
name
=
"TIME_ZONE_DIAL_MODE_ID"
)
private
Long
timeRangeDialModeId
;
@Column
(
name
=
"COMPANY_SITE_ID"
)
private
Long
companySiteId
;
@Column
(
name
=
"HOUR"
)
private
String
hour
;
@Column
(
name
=
"MINUTE"
)
private
String
minute
;
@Column
(
name
=
"CAMPAIGN_ID"
)
private
Long
campaignId
;
@Column
(
name
=
"DIAL_MODE"
)
private
Short
dialMode
;
@Column
(
name
=
"USER_ID"
)
private
Long
userId
;
}
src/main/java/com/viettel/campaign/repository/CampaignRepository.java
View file @
ed1c6e2d
...
...
@@ -2,8 +2,18 @@ package com.viettel.campaign.repository;
import
com.viettel.campaign.model.Campaign
;
import
org.springframework.data.jpa.repository.JpaRepository
;
import
org.springframework.data.jpa.repository.Query
;
import
org.springframework.data.repository.query.Param
;
import
org.springframework.stereotype.Repository
;
@Repository
public
interface
CampaignRepository
extends
JpaRepository
<
Campaign
,
Long
>,
CampaignRepositoryCustom
{
@Query
(
"SELECT COUNT(c.campaignId) "
+
" FROM Campaign c JOIN CampaignCustomer cc ON c.campaignId = cc.campaignId "
+
" WHERE cc.companySiteId = :pCompanySiteId "
+
" AND cc.status = 1 "
+
" AND cc.recallTime <= sysdate "
+
" AND cc.agentId = :pAgentId"
)
Long
countRecallCustomer
(
@Param
(
"pCompanySiteId"
)
Long
pCompanySiteId
,
@Param
(
"pAgentId"
)
Long
pAgentId
);
}
src/main/java/com/viettel/campaign/repository/CampaignRepositoryCustom.java
View file @
ed1c6e2d
package
com.viettel.campaign.repository
;
import
com.viettel.campaign.web.dto.CampaignDTO
;
import
com.viettel.campaign.web.dto.ResultDTO
;
import
com.viettel.campaign.web.dto.request_dto.CampaignRequestDTO
;
import
org.springframework.data.domain.Pageable
;
import
org.springframework.stereotype.Repository
;
import
java.util.List
;
@Repository
public
interface
CampaignRepositoryCustom
{
List
<
CampaignDTO
>
searchCampaignExecute
(
String
agentId
,
Pageable
pageable
);
ResultDTO
searchCampaignExecute
(
CampaignRequestDTO
campaignRequestDto
);
ResultDTO
search
(
CampaignRequestDTO
requestDto
);
ResultDTO
findByCampaignCode
(
CampaignRequestDTO
requestDTO
);
}
src/main/java/com/viettel/campaign/repository/impl/CampaignRepositoryImpl.java
View file @
ed1c6e2d
This diff is collapsed.
Click to expand it.
src/main/java/com/viettel/campaign/service/CampaignService.java
View file @
ed1c6e2d
package
com.viettel.campaign.service
;
import
com.viettel.campaign.web.dto.CampaignDTO
;
import
com.viettel.campaign.web.dto.ResultDTO
;
import
com.viettel.campaign.web.dto.request_dto.CampaignRequestDTO
;
import
java.util.Map
;
public
interface
CampaignService
{
Map
searchCampaignExecute
(
int
page
,
int
pageSize
,
String
sort
,
String
agentId
);
ResultDTO
searchCampaignExecute
(
CampaignRequestDTO
requestDto
);
ResultDTO
search
(
CampaignRequestDTO
requestDto
);
ResultDTO
findByCampaignCode
(
CampaignRequestDTO
requestDTO
);
ResultDTO
addNewCampaign
(
CampaignDTO
campaignDTO
);
Map
countRecallCustomer
(
Long
companySiteId
,
Long
agentId
);
}
src/main/java/com/viettel/campaign/service/impl/CampaignServiceImpl.java
View file @
ed1c6e2d
package
com.viettel.campaign.service.impl
;
import
com.viettel.campaign.model.Campaign
;
import
com.viettel.campaign.repository.CampaignRepository
;
import
com.viettel.campaign.repository.impl.CampaignRepositoryImpl
;
import
com.viettel.campaign.service.CampaignService
;
import
com.viettel.campaign.utils.Constants
;
import
com.viettel.campaign.web.dto.CampaignDTO
;
import
com.viettel.campaign.web.dto.ResultDTO
;
import
com.viettel.campaign.web.dto.request_dto.CampaignRequestDTO
;
import
org.apache.logging.log4j.LogManager
;
import
org.apache.logging.log4j.Logger
;
import
org.modelmapper.ModelMapper
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.data.domain.PageRequest
;
import
org.springframework.data.domain.Pageable
;
import
org.springframework.data.domain.Sort
;
import
org.springframework.stereotype.Service
;
import
org.springframework.transaction.annotation.Transactional
;
import
java.util.HashMap
;
import
java.util.List
;
import
java.util.Map
;
@Service
@Transactional
(
rollbackFor
=
Exception
.
class
)
public
class
CampaignServiceImpl
implements
CampaignService
{
private
static
final
Logger
logger
=
LogManager
.
getLogger
(
CampaignRepositoryImpl
.
class
);
@Autowired
CampaignRepository
campaignRepository
;
@Override
public
Map
searchCampaignExecute
(
int
page
,
int
pageSize
,
String
sort
,
String
agentId
)
{
Map
result
=
new
HashMap
();
Pageable
pageable
=
PageRequest
.
of
(
page
,
pageSize
,
Sort
.
by
(
sort
));
List
<
CampaignDTO
>
lst
=
campaignRepository
.
searchCampaignExecute
(
agentId
,
pageable
);
List
<
CampaignDTO
>
count
=
campaignRepository
.
searchCampaignExecute
(
agentId
,
null
);
result
.
put
(
"totalItem"
,
count
.
size
());
result
.
put
(
"data"
,
lst
);
@Autowired
ModelMapper
modelMapper
;
return
result
;
@Override
public
ResultDTO
searchCampaignExecute
(
CampaignRequestDTO
requestDto
)
{
return
campaignRepository
.
searchCampaignExecute
(
requestDto
);
}
@Override
...
...
@@ -44,4 +43,42 @@ public class CampaignServiceImpl implements CampaignService {
public
ResultDTO
findByCampaignCode
(
CampaignRequestDTO
requestDTO
)
{
return
campaignRepository
.
findByCampaignCode
(
requestDTO
);
}
@Override
public
ResultDTO
addNewCampaign
(
CampaignDTO
campaignDTO
)
{
ResultDTO
resultDTO
=
new
ResultDTO
();
Campaign
campaign
=
modelMapper
.
map
(
campaignDTO
,
Campaign
.
class
);
try
{
campaign
=
campaignRepository
.
save
(
campaign
);
//insert sub tables
resultDTO
.
setErrorCode
(
Constants
.
ApiErrorCode
.
SUCCESS
);
resultDTO
.
setErrorCode
(
Constants
.
ApiErrorDesc
.
SUCCESS
);
resultDTO
.
setData
(
campaign
);
}
catch
(
Exception
ex
)
{
logger
.
error
(
ex
.
getMessage
(),
ex
);
resultDTO
.
setErrorCode
(
Constants
.
ApiErrorCode
.
ERROR
);
resultDTO
.
setErrorCode
(
Constants
.
ApiErrorDesc
.
ERROR
);
}
return
resultDTO
;
}
public
Map
countRecallCustomer
(
Long
companySiteId
,
Long
agentId
)
{
Map
result
=
new
HashMap
();
Long
count
=
campaignRepository
.
countRecallCustomer
(
companySiteId
,
agentId
);
ResultDTO
resultDTO
=
new
ResultDTO
();
if
(
count
!=
null
)
{
resultDTO
.
setErrorCode
(
Constants
.
ApiErrorCode
.
SUCCESS
);
resultDTO
.
setDescription
(
Constants
.
ApiErrorDesc
.
SUCCESS
);
result
.
put
(
"info"
,
resultDTO
);
result
.
put
(
"result"
,
count
);
}
else
{
resultDTO
.
setErrorCode
(
Constants
.
ApiErrorCode
.
ERROR
);
resultDTO
.
setDescription
(
Constants
.
ApiErrorDesc
.
ERROR
);
result
.
put
(
"info"
,
resultDTO
);
result
.
put
(
"result"
,
0
);
}
return
result
;
}
}
src/main/java/com/viettel/campaign/utils/SQLBuilder.java
View file @
ed1c6e2d
...
...
@@ -3,7 +3,13 @@ import java.io.File;
import
java.nio.file.Files
;
import
java.nio.file.Paths
;
import
java.io.IOException
;
import
com.viettel.campaign.web.dto.BaseDTO
;
import
com.viettel.campaign.web.dto.request_dto.CampaignRequestDTO
;
import
org.springframework.core.io.ClassPathResource
;
import
org.springframework.data.domain.PageRequest
;
import
org.springframework.data.domain.Pageable
;
import
org.springframework.data.domain.Sort
;
/**
* @author anhvd_itsol
...
...
@@ -30,4 +36,16 @@ public class SQLBuilder {
}
return
null
;
}
public
static
Pageable
buildPageable
(
BaseDTO
obj
)
{
Pageable
pageable
=
null
;
if
(
DataUtil
.
isNullOrEmpty
(
obj
.
getSort
()))
{
pageable
=
PageRequest
.
of
(
obj
.
getPage
(),
obj
.
getPageSize
(),
null
);
}
else
{
String
[]
sorts
=
obj
.
getSort
().
split
(
","
);
Sort
sort
=
new
Sort
(
Sort
.
Direction
.
fromString
(
sorts
[
1
]),
sorts
[
0
]);
pageable
=
PageRequest
.
of
(
obj
.
getPage
(),
obj
.
getPageSize
(),
sort
);
}
return
pageable
;
}
}
src/main/java/com/viettel/campaign/web/dto/CampaignCustomerDTO.java
0 → 100644
View file @
ed1c6e2d
package
com.viettel.campaign.web.dto
;
import
lombok.Getter
;
import
lombok.Setter
;
import
java.util.Date
;
@Getter
@Setter
public
class
CampaignCustomerDTO
{
private
Long
campaignCustomerListId
;
private
Long
campaignId
;
private
Long
customerId
;
private
Short
status
;
private
Long
agentId
;
private
Date
recallTime
;
private
Long
recallCount
=
0L
;
private
Date
callTime
;
private
Long
customerListId
;
private
Short
inCampaignStatus
;
private
Date
sendTime
;
private
Short
processStatus
=
0
;
private
Short
contactStatus
;
private
Short
redistribute
;
private
String
sessionId
;
private
Long
callStatus
;
private
Long
companySiteId
;
private
Long
complainId
;
}
src/main/java/com/viettel/campaign/web/dto/CampaignDTO.java
View file @
ed1c6e2d
...
...
@@ -58,4 +58,6 @@ public class CampaignDTO extends BaseDTO {
private
Long
numOfNotJoinedCus
;
private
Long
numOfLockCus
;
private
String
campaignTypeName
;
}
src/main/java/com/viettel/campaign/web/dto/ResultDTO.java
View file @
ed1c6e2d
...
...
@@ -13,4 +13,5 @@ public class ResultDTO {
private
String
description
;
private
List
<?>
listData
=
new
ArrayList
();
private
Object
data
;
private
int
totalRow
=
0
;
}
src/main/java/com/viettel/campaign/web/dto/TimeRangeDialModeDTO.java
0 → 100644
View file @
ed1c6e2d
package
com.viettel.campaign.web.dto
;
import
lombok.Getter
;
import
lombok.Setter
;
import
java.util.Date
;
/**
* @author anhvd_itsol
*/
@Getter
@Setter
public
class
TimeRangeDialModeDTO
{
private
Long
timeRangeDialModeId
;
private
Long
companySiteId
;
private
Date
startTime
;
private
Long
campaignId
;
private
Short
dialMode
;
private
Long
userId
;
}
src/main/java/com/viettel/campaign/web/dto/TimeZoneDialModeDTO.java
0 → 100644
View file @
ed1c6e2d
package
com.viettel.campaign.web.dto
;
import
lombok.Getter
;
import
lombok.Setter
;
/**
* @author anhvd_itsol
*/
@Getter
@Setter
public
class
TimeZoneDialModeDTO
{
private
Long
timeRangeDialModeId
;
private
Long
companySiteId
;
private
String
hour
;
private
String
minute
;
private
Long
campaignId
;
private
Short
dialMode
;
private
Long
userId
;
}
src/main/java/com/viettel/campaign/web/dto/request_dto/CampaignRequestDTO.java
View file @
ed1c6e2d
...
...
@@ -8,7 +8,6 @@ import lombok.Setter;
* @author anhvd_itsol
*/
@Getter
@Setter
public
class
CampaignRequestDTO
extends
BaseDTO
{
...
...
@@ -24,5 +23,6 @@ public class CampaignRequestDTO extends BaseDTO {
Short
type
;
Short
chanel
;
String
companySiteId
;
String
agentId
;
String
types
;
}
src/main/java/com/viettel/campaign/web/rest/controller/CampaignController.java
View file @
ed1c6e2d
...
...
@@ -21,10 +21,10 @@ public class CampaignController {
@Autowired
CampaignService
campaignService
;
@
Ge
tMapping
(
"/searchCampaignExecute"
)
@
Reques
tMapping
(
"/searchCampaignExecute"
)
@ResponseBody
public
ResponseEntity
searchCampaignExecute
(
@RequestParam
(
"page"
)
int
page
,
@RequestParam
(
"pageSize"
)
int
pageSize
,
@RequestParam
(
"sort"
)
String
sort
,
@RequestParam
(
"agentId"
)
String
agentId
)
{
Map
result
=
campaignService
.
searchCampaignExecute
(
page
,
pageSize
,
sort
,
agentId
);
public
ResponseEntity
<
ResultDTO
>
searchCampaignExecute
(
@RequestBody
CampaignRequestDTO
requestDto
)
{
ResultDTO
result
=
campaignService
.
searchCampaignExecute
(
requestDto
);
return
new
ResponseEntity
<>(
result
,
HttpStatus
.
OK
);
}
...
...
@@ -39,4 +39,15 @@ public class CampaignController {
return
campaignService
.
findByCampaignCode
(
dto
);
}
@RequestMapping
(
method
=
RequestMethod
.
POST
)
public
ResultDTO
addNewCampaign
(
@RequestBody
CampaignRequestDTO
dto
)
{
return
campaignService
.
findByCampaignCode
(
dto
);
}
@GetMapping
(
"/countRecallCustomer"
)
@ResponseBody
public
ResponseEntity
countRecallCustomer
(
@RequestParam
(
"companySiteId"
)
Long
companySiteId
,
@RequestParam
(
"agentId"
)
Long
agentId
)
{
Map
result
=
campaignService
.
countRecallCustomer
(
companySiteId
,
agentId
);
return
new
ResponseEntity
<>(
result
,
HttpStatus
.
OK
);
}
}
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