Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
H
haoban-manage3.0
Overview
Overview
Details
Activity
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
haoban3.0
haoban-manage3.0
Commits
48d243d0
Commit
48d243d0
authored
Mar 25, 2025
by
王祖波
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
潜客数据接口
parent
d6ea4ce3
Hide whitespace changes
Inline
Side-by-side
Showing
32 changed files
with
1541 additions
and
34 deletions
+1541
-34
ContactLogServiceImpl.java
...e/service/service/contact/impl/ContactLogServiceImpl.java
+1
-1
ClerkStoreAdaptor.java
...age/web/controller/content/adaptor/ClerkStoreAdaptor.java
+19
-4
PotentialDataController.java
...age/web/controller/potential/PotentialDataController.java
+284
-0
PotentialDataAdaptor.java
...eb/controller/potential/adaptor/PotentialDataAdaptor.java
+255
-0
PotentialBusiOverviewQO.java
...oban/manage/web/qo/potential/PotentialBusiOverviewQO.java
+18
-0
PotentialContactOverviewQO.java
...n/manage/web/qo/potential/PotentialContactOverviewQO.java
+28
-0
PotentialConvMemberQO.java
...haoban/manage/web/qo/potential/PotentialConvMemberQO.java
+22
-0
PotentialConvOverviewQO.java
...oban/manage/web/qo/potential/PotentialConvOverviewQO.java
+29
-0
PotentialOverviewQO.java
...c/haoban/manage/web/qo/potential/PotentialOverviewQO.java
+30
-0
PotentialStatisticsBaseQO.java
...an/manage/web/qo/potential/PotentialStatisticsBaseQO.java
+83
-0
RecommendBusiOverviewQO.java
...oban/manage/web/qo/potential/RecommendBusiOverviewQO.java
+16
-0
RecommendConvOverviewQO.java
...oban/manage/web/qo/potential/RecommendConvOverviewQO.java
+29
-0
RecommendConvTrendQO.java
.../haoban/manage/web/qo/potential/RecommendConvTrendQO.java
+30
-0
RecommendUsedOverviewQO.java
...oban/manage/web/qo/potential/RecommendUsedOverviewQO.java
+27
-0
RecommendUsedTrendQO.java
.../haoban/manage/web/qo/potential/RecommendUsedTrendQO.java
+28
-0
EsMemberInfoUtils.java
...va/com/gic/haoban/manage/web/utils/EsMemberInfoUtils.java
+7
-1
StoreClerkIdVO.java
...ain/java/com/gic/haoban/manage/web/vo/StoreClerkIdVO.java
+21
-0
StoreClerkInfoVO.java
...n/java/com/gic/haoban/manage/web/vo/StoreClerkInfoVO.java
+61
-0
MaterialPersonalUsedDataVO.java
...content/statistics/report/MaterialPersonalUsedDataVO.java
+0
-28
PotentialContactDetailOverviewVO.java
...ge/web/vo/potential/PotentialContactDetailOverviewVO.java
+17
-0
PotentialContactOverviewVO.java
...n/manage/web/vo/potential/PotentialContactOverviewVO.java
+82
-0
PotentialConvDetailOverviewVO.java
...anage/web/vo/potential/PotentialConvDetailOverviewVO.java
+18
-0
PotentialConvOverviewVO.java
...oban/manage/web/vo/potential/PotentialConvOverviewVO.java
+83
-0
PotentialMemberConvVO.java
...haoban/manage/web/vo/potential/PotentialMemberConvVO.java
+39
-0
PotentialOverviewVO.java
...c/haoban/manage/web/vo/potential/PotentialOverviewVO.java
+64
-0
RecommendConvDetailOverviewVO.java
...anage/web/vo/potential/RecommendConvDetailOverviewVO.java
+18
-0
RecommendConvOverviewVO.java
...oban/manage/web/vo/potential/RecommendConvOverviewVO.java
+51
-0
RecommendConvTrendVO.java
.../haoban/manage/web/vo/potential/RecommendConvTrendVO.java
+56
-0
RecommendOverviewVO.java
...c/haoban/manage/web/vo/potential/RecommendOverviewVO.java
+21
-0
RecommendUsedDetailOverviewVO.java
...anage/web/vo/potential/RecommendUsedDetailOverviewVO.java
+17
-0
RecommendUsedOverviewVO.java
...oban/manage/web/vo/potential/RecommendUsedOverviewVO.java
+41
-0
RecommendUsedTrendVO.java
.../haoban/manage/web/vo/potential/RecommendUsedTrendVO.java
+46
-0
No files found.
haoban-manage3-service/src/main/java/com/gic/haoban/manage/service/service/contact/impl/ContactLogServiceImpl.java
View file @
48d243d0
...
@@ -106,7 +106,7 @@ public class ContactLogServiceImpl implements ContactLogService {
...
@@ -106,7 +106,7 @@ public class ContactLogServiceImpl implements ContactLogService {
contactLog
.
setContactTime
(
date
);
contactLog
.
setContactTime
(
date
);
contactLog
.
setContactCycle
(
contactCycle
);
contactLog
.
setContactCycle
(
contactCycle
);
contactLog
.
setContactCycleFirst
(
contactCycleFirst
);
contactLog
.
setContactCycleFirst
(
contactCycleFirst
);
//
todo 建联时间
//
成为潜客时间 无用暂不写
contactLog
.
setPotentialTime
(
null
);
contactLog
.
setPotentialTime
(
null
);
contactLog
.
setEnterpriseId
(
enterpriseId
);
contactLog
.
setEnterpriseId
(
enterpriseId
);
contactLogMapper
.
insert
(
contactLog
);
contactLogMapper
.
insert
(
contactLog
);
...
...
haoban-manage3-wx/src/main/java/com/gic/haoban/manage/web/controller/content/adaptor/ClerkStoreAdaptor.java
View file @
48d243d0
package
com
.
gic
.
haoban
.
manage
.
web
.
controller
.
content
.
adaptor
;
package
com
.
gic
.
haoban
.
manage
.
web
.
controller
.
content
.
adaptor
;
import
cn.hutool.core.lang.Pair
;
import
com.gic.clerk.api.dto.ClerkDTO
;
import
com.gic.clerk.api.dto.ClerkDTO
;
import
com.gic.clerk.api.dto.StoreInfoDTO
;
import
com.gic.clerk.api.dto.StoreInfoDTO
;
import
com.gic.clerk.api.service.ClerkService
;
import
com.gic.clerk.api.service.ClerkService
;
...
@@ -11,16 +12,15 @@ import com.gic.haoban.manage.api.dto.StaffDTO;
...
@@ -11,16 +12,15 @@ import com.gic.haoban.manage.api.dto.StaffDTO;
import
com.gic.haoban.manage.api.dto.role.StoreRoleDTO
;
import
com.gic.haoban.manage.api.dto.role.StoreRoleDTO
;
import
com.gic.haoban.manage.api.service.StaffApiService
;
import
com.gic.haoban.manage.api.service.StaffApiService
;
import
com.gic.haoban.manage.api.service.StaffClerkRelationApiService
;
import
com.gic.haoban.manage.api.service.StaffClerkRelationApiService
;
import
com.gic.haoban.manage.web.vo.StoreClerkIdVO
;
import
com.google.common.collect.Lists
;
import
lombok.extern.slf4j.Slf4j
;
import
lombok.extern.slf4j.Slf4j
;
import
org.apache.commons.collections.CollectionUtils
;
import
org.apache.commons.collections.CollectionUtils
;
import
org.apache.commons.lang3.StringUtils
;
import
org.apache.commons.lang3.StringUtils
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Component
;
import
org.springframework.stereotype.Component
;
import
java.util.Collections
;
import
java.util.*
;
import
java.util.HashSet
;
import
java.util.List
;
import
java.util.Map
;
import
java.util.stream.Collectors
;
import
java.util.stream.Collectors
;
/**
/**
...
@@ -128,4 +128,19 @@ public class ClerkStoreAdaptor {
...
@@ -128,4 +128,19 @@ public class ClerkStoreAdaptor {
}
}
return
storeDTOS
.
stream
().
collect
(
Collectors
.
toMap
(
StoreDTO:
:
getStoreId
,
storeDTO
->
storeDTO
));
return
storeDTOS
.
stream
().
collect
(
Collectors
.
toMap
(
StoreDTO:
:
getStoreId
,
storeDTO
->
storeDTO
));
}
}
public
Pair
<
Map
<
String
,
ClerkDTO
>,
Map
<
String
,
StoreDTO
>>
getClerkStoreIdMap
(
List
<?
extends
StoreClerkIdVO
>
result
)
{
if
(
CollectionUtils
.
isEmpty
(
result
))
{
return
new
Pair
<>(
new
HashMap
<>(),
new
HashMap
<>());
}
Set
<
String
>
storeIdSet
=
new
HashSet
<>();
Set
<
String
>
clerkIdSet
=
new
HashSet
<>();
result
.
forEach
(
x
->{
storeIdSet
.
add
(
x
.
getStoreId
());
clerkIdSet
.
add
(
x
.
getClerkId
());
});
Map
<
String
,
ClerkDTO
>
clerkMap
=
queryClerkMap
(
Lists
.
newArrayList
(
clerkIdSet
));
Map
<
String
,
StoreDTO
>
storeMap
=
queryStoreMap
(
Lists
.
newArrayList
(
storeIdSet
));
return
new
Pair
<>(
clerkMap
,
storeMap
);
}
}
}
haoban-manage3-wx/src/main/java/com/gic/haoban/manage/web/controller/potential/PotentialDataController.java
View file @
48d243d0
package
com
.
gic
.
haoban
.
manage
.
web
.
controller
.
potential
;
package
com
.
gic
.
haoban
.
manage
.
web
.
controller
.
potential
;
import
cn.hutool.core.date.DateUtil
;
import
cn.hutool.core.lang.Pair
;
import
com.gic.api.base.commons.BasePageInfo
;
import
com.gic.api.base.commons.BasePageInfo
;
import
com.gic.api.base.commons.Page
;
import
com.gic.api.base.commons.Page
;
import
com.gic.api.base.commons.ServiceResponse
;
import
com.gic.api.base.commons.ServiceResponse
;
import
com.gic.clerk.api.dto.ClerkDTO
;
import
com.gic.clerk.api.service.ClerkService
;
import
com.gic.commons.webapi.reponse.RestResponse
;
import
com.gic.commons.webapi.reponse.RestResponse
;
import
com.gic.enterprise.api.dto.StoreDTO
;
import
com.gic.haoban.manage.api.dto.contact.ContactOrderDetailDTO
;
import
com.gic.haoban.manage.api.dto.contact.ContactOrderDetailDTO
;
import
com.gic.haoban.manage.api.qdto.contact.ContactOrderSearchQDTO
;
import
com.gic.haoban.manage.api.qdto.contact.ContactOrderSearchQDTO
;
import
com.gic.haoban.manage.api.service.contact.ContactOrderApiService
;
import
com.gic.haoban.manage.api.service.contact.ContactOrderApiService
;
import
com.gic.haoban.manage.web.controller.content.adaptor.ClerkStoreAdaptor
;
import
com.gic.haoban.manage.web.controller.potential.adaptor.PotentialDataAdaptor
;
import
com.gic.haoban.manage.web.qo.contact.ContactOrderPageQO
;
import
com.gic.haoban.manage.web.qo.contact.ContactOrderPageQO
;
import
com.gic.haoban.manage.web.qo.potential.*
;
import
com.gic.haoban.manage.web.utils.EsMemberInfoUtils
;
import
com.gic.haoban.manage.web.utils.storestatusfilter.StoreStatusFilterUtils
;
import
com.gic.haoban.manage.web.vo.potential.*
;
import
com.google.common.collect.Lists
;
import
com.google.common.collect.Lists
;
import
com.google.common.collect.Sets
;
import
org.apache.commons.collections.CollectionUtils
;
import
org.apache.commons.lang3.StringUtils
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.web.bind.annotation.RequestBody
;
import
org.springframework.web.bind.annotation.RequestBody
;
import
org.springframework.web.bind.annotation.RequestMapping
;
import
org.springframework.web.bind.annotation.RequestMapping
;
import
org.springframework.web.bind.annotation.RestController
;
import
org.springframework.web.bind.annotation.RestController
;
import
java.util.*
;
import
java.util.stream.Collectors
;
/**
/**
* 潜客雷达-数据
* 潜客雷达-数据
*/
*/
...
@@ -23,6 +40,15 @@ public class PotentialDataController {
...
@@ -23,6 +40,15 @@ public class PotentialDataController {
@Autowired
@Autowired
private
ContactOrderApiService
contactOrderApiService
;
private
ContactOrderApiService
contactOrderApiService
;
@Autowired
private
ClerkService
clerkService
;
@Autowired
private
ClerkStoreAdaptor
clerkStoreAdaptor
;
@Autowired
private
PotentialDataAdaptor
potentialDataAdaptor
;
@Autowired
private
EsMemberInfoUtils
esMemberInfoUtils
;
/**
/**
* 分页查询转化记录
* 分页查询转化记录
* @param contactOrderPageQO
* @param contactOrderPageQO
...
@@ -46,4 +72,262 @@ public class PotentialDataController {
...
@@ -46,4 +72,262 @@ public class PotentialDataController {
return
RestResponse
.
successResult
(
serviceResponse
.
getResult
());
return
RestResponse
.
successResult
(
serviceResponse
.
getResult
());
}
}
/**
* 建联/转化概览 周/月报
*
* @return
*/
@RequestMapping
(
path
=
"/potential/overview"
)
public
RestResponse
<
PotentialOverviewVO
>
queryPotentialOverviewReport
(
@RequestBody
PotentialBusiOverviewQO
potentialOverviewQO
)
{
String
clerkId
=
potentialOverviewQO
.
getClerkId
();
List
<
String
>
storeIds
=
getStoreIds
(
potentialOverviewQO
);
// 建联数据
PotentialContactOverviewVO
contactOverviewVO
=
null
;
// 转化数据
PotentialConvOverviewVO
convOverviewVO
=
null
;
PotentialOverviewVO
overviewVO
=
new
PotentialOverviewVO
();
// 查询的业务列表 默认所有 1建联数据 2转化数据
List
<
Integer
>
queryBiz
=
potentialOverviewQO
.
getQueryBiz
();
if
(
CollectionUtils
.
isEmpty
(
queryBiz
))
{
contactOverviewVO
=
potentialDataAdaptor
.
potentialContactOverview
(
potentialOverviewQO
,
storeIds
);
convOverviewVO
=
potentialDataAdaptor
.
potentialConvOverview
(
potentialOverviewQO
,
storeIds
);
}
else
if
(
queryBiz
.
contains
(
1
))
{
contactOverviewVO
=
potentialDataAdaptor
.
potentialContactOverview
(
potentialOverviewQO
,
storeIds
);
}
else
if
(
queryBiz
.
contains
(
2
))
{
convOverviewVO
=
potentialDataAdaptor
.
potentialConvOverview
(
potentialOverviewQO
,
storeIds
);
}
overviewVO
.
setConv
(
convOverviewVO
);
overviewVO
.
setContact
(
contactOverviewVO
);
Pair
<
String
,
String
>
datePair
=
potentialDataAdaptor
.
getDateParam
(
potentialOverviewQO
.
getReportType
(),
potentialOverviewQO
.
getBizDate
());
if
(
StringUtils
.
isNotBlank
(
datePair
.
getKey
()))
{
overviewVO
.
setStartTime
(
DateUtil
.
parseDate
(
datePair
.
getKey
()));
}
if
(
StringUtils
.
isNotBlank
(
datePair
.
getValue
()))
{
overviewVO
.
setEndTime
(
DateUtil
.
parseDate
(
datePair
.
getValue
()));
}
if
(
StringUtils
.
isNotBlank
(
clerkId
))
{
ClerkDTO
clerkInfo
=
clerkService
.
getClerkByClerkId
(
clerkId
);
overviewVO
.
setClerk
(
clerkInfo
);
}
return
RestResponse
.
successResult
(
overviewVO
);
}
/**
* 潜客转化会员明细
*
* @return
*/
@RequestMapping
(
path
=
"/potential/conv-member"
)
public
RestResponse
<
Page
<
PotentialMemberConvVO
>>
queryPotentialConvMember
(
@RequestBody
PotentialConvMemberQO
potentialOverviewQO
)
{
List
<
String
>
storeIds
=
getStoreIds
(
potentialOverviewQO
);
Page
<
PotentialMemberConvVO
>
page
=
potentialDataAdaptor
.
pagePotentialConvMember
(
potentialOverviewQO
,
storeIds
);
List
<
PotentialMemberConvVO
>
result
=
page
.
getResult
();
if
(
CollectionUtils
.
isNotEmpty
(
result
))
{
esMemberInfoUtils
.
setMemberInfo
(
potentialOverviewQO
.
getEnterpriseId
(),
result
,
Sets
.
newHashSet
(
"memberName"
,
"memberNick"
,
"memberImage"
,
"memberCard"
));
}
return
RestResponse
.
successResult
(
page
);
}
/**
* 建联明细概览 周/月报
*
* @return
*/
@RequestMapping
(
path
=
"/potential/contact-detail"
)
public
RestResponse
<
Page
<
PotentialContactDetailOverviewVO
>>
queryPotentialContactReport
(
@RequestBody
PotentialContactOverviewQO
potentialOverviewQO
)
{
List
<
String
>
storeIds
=
getStoreIds
(
potentialOverviewQO
);
Page
<
PotentialContactOverviewVO
>
page
=
potentialDataAdaptor
.
pagePotentialContactOverview
(
potentialOverviewQO
,
storeIds
);
List
<
PotentialContactOverviewVO
>
result
=
page
.
getResult
();
List
<
PotentialContactDetailOverviewVO
>
list
=
null
;
if
(
CollectionUtils
.
isNotEmpty
(
result
))
{
Pair
<
Map
<
String
,
ClerkDTO
>,
Map
<
String
,
StoreDTO
>>
pair
=
clerkStoreAdaptor
.
getClerkStoreIdMap
(
result
);
Map
<
String
,
ClerkDTO
>
clerkMap
=
pair
.
getKey
();
Map
<
String
,
StoreDTO
>
storeMap
=
pair
.
getValue
();
list
=
result
.
stream
().
map
(
x
->
{
ClerkDTO
clerkDTO
=
clerkMap
.
getOrDefault
(
x
.
getClerkId
(),
new
ClerkDTO
());
StoreDTO
storeDTO
=
storeMap
.
getOrDefault
(
x
.
getStoreId
(),
new
StoreDTO
());
PotentialContactDetailOverviewVO
overviewVO
=
new
PotentialContactDetailOverviewVO
();
overviewVO
.
setContact
(
x
);
overviewVO
.
setStore
(
storeDTO
);
overviewVO
.
setClerk
(
clerkDTO
);
return
overviewVO
;
}).
collect
(
Collectors
.
toList
());
}
Page
<
PotentialContactDetailOverviewVO
>
res
=
new
Page
<>();
res
.
setCurrentPage
(
page
.
getCurrentPage
());
res
.
setPageSize
(
page
.
getPageSize
());
res
.
setTotalPage
(
page
.
getTotalPage
());
res
.
setTotalCount
(
page
.
getTotalCount
());
res
.
setResult
(
list
);
return
RestResponse
.
successResult
(
res
);
}
/**
* 转化明细概览 周/月报
*
* @return
*/
@RequestMapping
(
path
=
"/potential/conv-detail"
)
public
RestResponse
<
Page
<
PotentialConvDetailOverviewVO
>>
queryPotentialConvReport
(
@RequestBody
PotentialConvOverviewQO
potentialOverviewQO
)
{
List
<
String
>
storeIds
=
getStoreIds
(
potentialOverviewQO
);
Page
<
PotentialConvOverviewVO
>
page
=
potentialDataAdaptor
.
pagePotentialConvOverview
(
potentialOverviewQO
,
storeIds
);
List
<
PotentialConvOverviewVO
>
result
=
page
.
getResult
();
List
<
PotentialConvDetailOverviewVO
>
list
=
null
;
if
(
CollectionUtils
.
isNotEmpty
(
result
))
{
Pair
<
Map
<
String
,
ClerkDTO
>,
Map
<
String
,
StoreDTO
>>
pair
=
clerkStoreAdaptor
.
getClerkStoreIdMap
(
result
);
Map
<
String
,
ClerkDTO
>
clerkMap
=
pair
.
getKey
();
Map
<
String
,
StoreDTO
>
storeMap
=
pair
.
getValue
();
list
=
result
.
stream
().
map
(
x
->
{
ClerkDTO
clerkDTO
=
clerkMap
.
getOrDefault
(
x
.
getClerkId
(),
new
ClerkDTO
());
StoreDTO
storeDTO
=
storeMap
.
getOrDefault
(
x
.
getStoreId
(),
new
StoreDTO
());
PotentialConvDetailOverviewVO
overviewVO
=
new
PotentialConvDetailOverviewVO
();
overviewVO
.
setConv
(
x
);
overviewVO
.
setStore
(
storeDTO
);
overviewVO
.
setClerk
(
clerkDTO
);
return
overviewVO
;
}).
collect
(
Collectors
.
toList
());
}
Page
<
PotentialConvDetailOverviewVO
>
res
=
new
Page
<>();
res
.
setCurrentPage
(
page
.
getCurrentPage
());
res
.
setPageSize
(
page
.
getPageSize
());
res
.
setTotalPage
(
page
.
getTotalPage
());
res
.
setTotalCount
(
page
.
getTotalCount
());
res
.
setResult
(
list
);
return
RestResponse
.
successResult
(
res
);
}
/**
* 人货匹配推荐概览
*
* @return
*/
@RequestMapping
(
path
=
"/recommend/overview"
)
public
RestResponse
<
RecommendOverviewVO
>
queryRecommendOverviewReport
(
@RequestBody
RecommendBusiOverviewQO
potentialOverviewQO
)
{
List
<
String
>
storeIds
=
getStoreIds
(
potentialOverviewQO
);
// 使用数据
RecommendUsedOverviewVO
usedOverviewVO
=
null
;
// 转化数据
RecommendConvOverviewVO
convOverviewVO
=
null
;
RecommendOverviewVO
overviewVO
=
new
RecommendOverviewVO
();
// 查询的业务列表 默认所有 1使用数据 2转化数据
List
<
Integer
>
queryBiz
=
potentialOverviewQO
.
getQueryBiz
();
if
(
CollectionUtils
.
isEmpty
(
queryBiz
))
{
usedOverviewVO
=
potentialDataAdaptor
.
recommendUsedOverview
(
potentialOverviewQO
,
storeIds
);
convOverviewVO
=
potentialDataAdaptor
.
recommendConvOverview
(
potentialOverviewQO
,
storeIds
);
}
else
if
(
queryBiz
.
contains
(
1
))
{
usedOverviewVO
=
potentialDataAdaptor
.
recommendUsedOverview
(
potentialOverviewQO
,
storeIds
);
}
else
if
(
queryBiz
.
contains
(
2
))
{
convOverviewVO
=
potentialDataAdaptor
.
recommendConvOverview
(
potentialOverviewQO
,
storeIds
);
}
overviewVO
.
setUsed
(
usedOverviewVO
);
overviewVO
.
setConv
(
convOverviewVO
);
return
RestResponse
.
successResult
(
overviewVO
);
}
/**
* 人货匹配使用概览明细
*
* @return
*/
@RequestMapping
(
path
=
"/recommend/used-detail"
)
public
RestResponse
<
Page
<
RecommendUsedDetailOverviewVO
>>
queryRecommendUsedReport
(
@RequestBody
RecommendUsedOverviewQO
potentialOverviewQO
)
{
List
<
String
>
storeIds
=
getStoreIds
(
potentialOverviewQO
);
Page
<
RecommendUsedOverviewVO
>
page
=
potentialDataAdaptor
.
pageRecommendUsedOverview
(
potentialOverviewQO
,
storeIds
);
List
<
RecommendUsedOverviewVO
>
result
=
page
.
getResult
();
List
<
RecommendUsedDetailOverviewVO
>
list
=
null
;
if
(
CollectionUtils
.
isNotEmpty
(
result
))
{
Pair
<
Map
<
String
,
ClerkDTO
>,
Map
<
String
,
StoreDTO
>>
pair
=
clerkStoreAdaptor
.
getClerkStoreIdMap
(
result
);
Map
<
String
,
ClerkDTO
>
clerkMap
=
pair
.
getKey
();
Map
<
String
,
StoreDTO
>
storeMap
=
pair
.
getValue
();
list
=
result
.
stream
().
map
(
x
->
{
ClerkDTO
clerkDTO
=
clerkMap
.
getOrDefault
(
x
.
getClerkId
(),
new
ClerkDTO
());
StoreDTO
storeDTO
=
storeMap
.
getOrDefault
(
x
.
getStoreId
(),
new
StoreDTO
());
RecommendUsedDetailOverviewVO
overviewVO
=
new
RecommendUsedDetailOverviewVO
();
overviewVO
.
setUsed
(
x
);
overviewVO
.
setStore
(
storeDTO
);
overviewVO
.
setClerk
(
clerkDTO
);
return
overviewVO
;
}).
collect
(
Collectors
.
toList
());
}
Page
<
RecommendUsedDetailOverviewVO
>
res
=
new
Page
<>();
res
.
setCurrentPage
(
page
.
getCurrentPage
());
res
.
setPageSize
(
page
.
getPageSize
());
res
.
setTotalPage
(
page
.
getTotalPage
());
res
.
setTotalCount
(
page
.
getTotalCount
());
res
.
setResult
(
list
);
return
RestResponse
.
successResult
(
res
);
}
/**
* 人货匹配转化概览明细
*
* @return
*/
@RequestMapping
(
path
=
"/recommend/conv-detail"
)
public
RestResponse
<
Page
<
RecommendConvDetailOverviewVO
>>
queryRecommendConvReport
(
@RequestBody
RecommendConvOverviewQO
potentialOverviewQO
)
{
List
<
String
>
storeIds
=
getStoreIds
(
potentialOverviewQO
);
Page
<
RecommendConvOverviewVO
>
page
=
potentialDataAdaptor
.
pageRecommendConvOverview
(
potentialOverviewQO
,
storeIds
);
List
<
RecommendConvOverviewVO
>
result
=
page
.
getResult
();
List
<
RecommendConvDetailOverviewVO
>
list
=
null
;
if
(
CollectionUtils
.
isNotEmpty
(
result
))
{
Pair
<
Map
<
String
,
ClerkDTO
>,
Map
<
String
,
StoreDTO
>>
pair
=
clerkStoreAdaptor
.
getClerkStoreIdMap
(
result
);
Map
<
String
,
ClerkDTO
>
clerkMap
=
pair
.
getKey
();
Map
<
String
,
StoreDTO
>
storeMap
=
pair
.
getValue
();
list
=
result
.
stream
().
map
(
x
->
{
ClerkDTO
clerkDTO
=
clerkMap
.
getOrDefault
(
x
.
getClerkId
(),
new
ClerkDTO
());
StoreDTO
storeDTO
=
storeMap
.
getOrDefault
(
x
.
getStoreId
(),
new
StoreDTO
());
RecommendConvDetailOverviewVO
overviewVO
=
new
RecommendConvDetailOverviewVO
();
overviewVO
.
setConv
(
x
);
overviewVO
.
setStore
(
storeDTO
);
overviewVO
.
setClerk
(
clerkDTO
);
return
overviewVO
;
}).
collect
(
Collectors
.
toList
());
}
Page
<
RecommendConvDetailOverviewVO
>
res
=
new
Page
<>();
res
.
setCurrentPage
(
page
.
getCurrentPage
());
res
.
setPageSize
(
page
.
getPageSize
());
res
.
setTotalPage
(
page
.
getTotalPage
());
res
.
setTotalCount
(
page
.
getTotalCount
());
res
.
setResult
(
list
);
return
RestResponse
.
successResult
(
res
);
}
/**
* 人货匹配使用趋势
*
* @return
*/
@RequestMapping
(
path
=
"/recommend/used-trend"
)
public
RestResponse
<
Page
<
RecommendUsedTrendVO
>>
queryRecommendUsedTrend
(
@RequestBody
RecommendUsedTrendQO
potentialOverviewQO
)
{
List
<
String
>
storeIds
=
getStoreIds
(
potentialOverviewQO
);
Page
<
RecommendUsedTrendVO
>
page
=
potentialDataAdaptor
.
pageRecommendUsedTrend
(
potentialOverviewQO
,
storeIds
);
return
RestResponse
.
successResult
(
page
);
}
/**
* 人货匹配转化趋势
*
* @return
*/
@RequestMapping
(
path
=
"/recommend/conv-trend"
)
public
RestResponse
<
Page
<
RecommendConvTrendVO
>>
queryRecommendConvTrend
(
@RequestBody
RecommendConvTrendQO
potentialOverviewQO
)
{
List
<
String
>
storeIds
=
getStoreIds
(
potentialOverviewQO
);
Page
<
RecommendConvTrendVO
>
page
=
potentialDataAdaptor
.
pageRecommendConvTrend
(
potentialOverviewQO
,
storeIds
);
return
RestResponse
.
successResult
(
page
);
}
private
List
<
String
>
getStoreIds
(
PotentialStatisticsBaseQO
potentialStatisticsBaseQO
)
{
String
wxEnterpriseId
=
potentialStatisticsBaseQO
.
getWxEnterpriseId
();
String
storeId
=
potentialStatisticsBaseQO
.
getStoreId
();
Integer
storeStatusFilter
=
potentialStatisticsBaseQO
.
getStoreStatusFilter
();
List
<
String
>
storeIds
=
new
ArrayList
<>();
if
(
StringUtils
.
isBlank
(
storeId
))
{
storeIds
=
clerkStoreAdaptor
.
queryClerkStoreIds
(
storeId
,
wxEnterpriseId
,
StoreStatusFilterUtils
.
getStoreStatusList
(
storeStatusFilter
));
}
else
{
storeIds
.
add
(
storeId
);
}
return
storeIds
;
}
}
}
haoban-manage3-wx/src/main/java/com/gic/haoban/manage/web/controller/potential/adaptor/PotentialDataAdaptor.java
0 → 100644
View file @
48d243d0
package
com
.
gic
.
haoban
.
manage
.
web
.
controller
.
potential
.
adaptor
;
import
cn.hutool.core.date.DateTime
;
import
cn.hutool.core.lang.Pair
;
import
com.alibaba.fastjson.JSON
;
import
com.gic.api.base.commons.Page
;
import
com.gic.commons.util.DataApiUtils
;
import
com.gic.haoban.manage.api.enums.content.MaterialReportType
;
import
com.gic.haoban.manage.web.qo.potential.PotentialOverviewQO
;
import
com.gic.haoban.manage.web.qo.potential.PotentialStatisticsBaseQO
;
import
com.gic.haoban.manage.web.vo.potential.*
;
import
lombok.extern.slf4j.Slf4j
;
import
org.apache.commons.collections.CollectionUtils
;
import
org.apache.commons.lang3.StringUtils
;
import
org.springframework.stereotype.Component
;
import
java.util.HashMap
;
import
java.util.List
;
import
java.util.Map
;
/**
* Created by wangzubo on 2025/3/21.
*/
@Slf4j
@Component
public
class
PotentialDataAdaptor
{
/**
* 潜客建联
*/
private
static
final
String
POTENTIAL_CONTACT_OVERVIEW
=
"data_mkt_pos_cut_haoban_overview"
;
/**
* 潜客转化
*/
private
static
final
String
POTENTIAL_CONV_OVERVIEW
=
"data_mkt_pos_cut_haoban_conv"
;
/**
* 潜客转化会员
*/
private
static
final
String
POTENTIAL_CONV_MEMBER
=
"data_mkt_pos_cut_haoban_detail"
;
/**
* 推荐使用
*/
private
static
final
String
RECOMMEND_USED_OVERVIEW
=
"data_mkt_pos_cut_haoban_goods_match_use"
;
/**
* 推荐转化
*/
private
static
final
String
RECOMMEND_CONV_OVERVIEW
=
"data_mkt_pos_cut_haoban_goods_match_conv"
;
/**
* 推荐使用趋势
*/
private
static
final
String
RECOMMEND_USED_TREND
=
"data_mkt_pos_cut_haoban_goods_match_use_date"
;
/**
* 推荐转化趋势
*/
private
static
final
String
RECOMMEND_CONV_TREND
=
"data_mkt_pos_cut_haoban_conv_date"
;
private
<
T
>
T
fetchOverviewData
(
PotentialOverviewQO
potentialOverviewQO
,
List
<
String
>
storeIds
,
String
url
,
Class
<
T
>
clazz
)
{
potentialOverviewQO
.
setPotGroup
(
3
);
Map
<
String
,
Object
>
inlineParams
=
getOverviewParams
(
potentialOverviewQO
,
storeIds
);
Map
<
String
,
Object
>
result
=
DataApiUtils
.
http
(
JSON
.
toJSONString
(
inlineParams
),
url
);
if
(
result
.
get
(
"data"
)
==
null
)
{
return
null
;
}
List
<
T
>
dataList
=
DataApiUtils
.
parsePageDataList
(
result
,
clazz
);
if
(
CollectionUtils
.
isEmpty
(
dataList
))
{
return
null
;
}
return
dataList
.
get
(
0
);
}
private
<
T
>
Page
<
T
>
fetchPageData
(
PotentialOverviewQO
potentialOverviewQO
,
List
<
String
>
storeIds
,
String
url
,
Class
<
T
>
clazz
)
{
Map
<
String
,
Object
>
inlineParams
=
getOverviewParams
(
potentialOverviewQO
,
storeIds
);
convertPageParams
(
potentialOverviewQO
,
inlineParams
);
Map
<
String
,
Object
>
result
=
DataApiUtils
.
http
(
JSON
.
toJSONString
(
inlineParams
),
url
);
if
(
result
.
get
(
"data"
)
==
null
)
{
return
new
Page
<>();
}
return
DataApiUtils
.
getPageData
(
result
,
clazz
);
}
private
<
T
>
Page
<
T
>
fetchPageDataBase
(
PotentialStatisticsBaseQO
potentialOverviewQO
,
List
<
String
>
storeIds
,
String
url
,
Class
<
T
>
clazz
)
{
Map
<
String
,
Object
>
inlineParams
=
getOverviewBaseParams
(
potentialOverviewQO
,
storeIds
);
convertPageParams
(
potentialOverviewQO
,
inlineParams
);
Map
<
String
,
Object
>
result
=
DataApiUtils
.
http
(
JSON
.
toJSONString
(
inlineParams
),
url
);
if
(
result
.
get
(
"data"
)
==
null
)
{
return
new
Page
<>();
}
return
DataApiUtils
.
getPageData
(
result
,
clazz
);
}
/**
* 潜客建联概览
* @return
*/
public
PotentialContactOverviewVO
potentialContactOverview
(
PotentialOverviewQO
potentialOverviewQO
,
List
<
String
>
storeIds
)
{
return
fetchOverviewData
(
potentialOverviewQO
,
storeIds
,
POTENTIAL_CONTACT_OVERVIEW
,
PotentialContactOverviewVO
.
class
);
}
/**
* 潜客转化概览
* @return
*/
public
PotentialConvOverviewVO
potentialConvOverview
(
PotentialOverviewQO
potentialOverviewQO
,
List
<
String
>
storeIds
)
{
return
fetchOverviewData
(
potentialOverviewQO
,
storeIds
,
POTENTIAL_CONV_OVERVIEW
,
PotentialConvOverviewVO
.
class
);
}
/**
* 推荐使用概览
* @return
*/
public
RecommendUsedOverviewVO
recommendUsedOverview
(
PotentialOverviewQO
potentialOverviewQO
,
List
<
String
>
storeIds
)
{
return
fetchOverviewData
(
potentialOverviewQO
,
storeIds
,
RECOMMEND_USED_OVERVIEW
,
RecommendUsedOverviewVO
.
class
);
}
/**
* 推荐转化概览
* @return
*/
public
RecommendConvOverviewVO
recommendConvOverview
(
PotentialOverviewQO
potentialOverviewQO
,
List
<
String
>
storeIds
)
{
return
fetchOverviewData
(
potentialOverviewQO
,
storeIds
,
RECOMMEND_CONV_OVERVIEW
,
RecommendConvOverviewVO
.
class
);
}
/**
* 潜客转化客户
* @return
*/
public
Page
<
PotentialMemberConvVO
>
pagePotentialConvMember
(
PotentialStatisticsBaseQO
potentialOverviewQO
,
List
<
String
>
storeIds
)
{
return
fetchPageDataBase
(
potentialOverviewQO
,
storeIds
,
POTENTIAL_CONV_MEMBER
,
PotentialMemberConvVO
.
class
);
}
/**
* 潜客建联明细概览
* @return
*/
public
Page
<
PotentialContactOverviewVO
>
pagePotentialContactOverview
(
PotentialOverviewQO
potentialOverviewQO
,
List
<
String
>
storeIds
)
{
return
fetchPageData
(
potentialOverviewQO
,
storeIds
,
POTENTIAL_CONTACT_OVERVIEW
,
PotentialContactOverviewVO
.
class
);
}
/**
* 潜客转化明细概览
* @return
*/
public
Page
<
PotentialConvOverviewVO
>
pagePotentialConvOverview
(
PotentialOverviewQO
potentialOverviewQO
,
List
<
String
>
storeIds
)
{
return
fetchPageData
(
potentialOverviewQO
,
storeIds
,
POTENTIAL_CONV_OVERVIEW
,
PotentialConvOverviewVO
.
class
);
}
/**
* 推荐使用明细概览
* @return
*/
public
Page
<
RecommendUsedOverviewVO
>
pageRecommendUsedOverview
(
PotentialOverviewQO
potentialOverviewQO
,
List
<
String
>
storeIds
)
{
return
fetchPageData
(
potentialOverviewQO
,
storeIds
,
RECOMMEND_USED_OVERVIEW
,
RecommendUsedOverviewVO
.
class
);
}
/**
* 潜客转化明细概览
* @return
*/
public
Page
<
RecommendConvOverviewVO
>
pageRecommendConvOverview
(
PotentialOverviewQO
potentialOverviewQO
,
List
<
String
>
storeIds
)
{
return
fetchPageData
(
potentialOverviewQO
,
storeIds
,
RECOMMEND_CONV_OVERVIEW
,
RecommendConvOverviewVO
.
class
);
}
/**
* 推荐使用趋势
* @return
*/
public
Page
<
RecommendUsedTrendVO
>
pageRecommendUsedTrend
(
PotentialStatisticsBaseQO
potentialOverviewQO
,
List
<
String
>
storeIds
)
{
return
fetchPageDataBase
(
potentialOverviewQO
,
storeIds
,
RECOMMEND_USED_TREND
,
RecommendUsedTrendVO
.
class
);
}
/**
* 推荐转化趋势
* @return
*/
public
Page
<
RecommendConvTrendVO
>
pageRecommendConvTrend
(
PotentialStatisticsBaseQO
potentialOverviewQO
,
List
<
String
>
storeIds
)
{
return
fetchPageDataBase
(
potentialOverviewQO
,
storeIds
,
RECOMMEND_CONV_TREND
,
RecommendConvTrendVO
.
class
);
}
private
Map
<
String
,
Object
>
getOverviewParams
(
PotentialOverviewQO
potentialOverviewQO
,
List
<
String
>
storeIds
)
{
Integer
reportType
=
potentialOverviewQO
.
getReportType
();
String
bizDate
=
potentialOverviewQO
.
getBizDate
();
Integer
potGroup
=
potentialOverviewQO
.
getPotGroup
();
Map
<
String
,
Object
>
inlineParams
=
getOverviewBaseParams
(
potentialOverviewQO
,
storeIds
);
Pair
<
String
,
String
>
dateParam
=
getDateParam
(
reportType
,
bizDate
);
String
startDate
=
dateParam
.
getKey
();
String
endDate
=
dateParam
.
getValue
();
if
(
StringUtils
.
isBlank
(
startDate
))
{
inlineParams
.
put
(
"startDate"
,
startDate
);
}
if
(
StringUtils
.
isBlank
(
endDate
))
{
inlineParams
.
put
(
"endDate"
,
endDate
);
}
// 1 门店维度 2 导购维度 3 合计
if
(
potGroup
!=
null
)
{
inlineParams
.
put
(
"potGroup"
,
potGroup
);
}
if
(
reportType
!=
null
)
{
inlineParams
.
put
(
"reportType"
,
reportType
);
}
return
inlineParams
;
}
private
Map
<
String
,
Object
>
getOverviewBaseParams
(
PotentialStatisticsBaseQO
baseQO
,
List
<
String
>
storeIds
)
{
String
clerkId
=
baseQO
.
getClerkId
();
String
enterpriseId
=
baseQO
.
getEnterpriseId
();
String
startDate
=
""
;
String
endDate
=
""
;
Map
<
String
,
Object
>
inlineParams
=
new
HashMap
<>();
if
(
StringUtils
.
isNotBlank
(
clerkId
))
{
inlineParams
.
put
(
"clerkId"
,
clerkId
);
}
if
(
CollectionUtils
.
isNotEmpty
(
storeIds
))
{
inlineParams
.
put
(
"storeId"
,
String
.
join
(
","
,
storeIds
));
}
if
(
StringUtils
.
isNotBlank
(
baseQO
.
getStartDate
()))
{
startDate
=
baseQO
.
getStartDate
();
}
if
(
StringUtils
.
isNotBlank
(
baseQO
.
getEndDate
()))
{
endDate
=
baseQO
.
getEndDate
();
}
inlineParams
.
put
(
"enterpriseId"
,
enterpriseId
);
inlineParams
.
put
(
"startDate"
,
startDate
);
inlineParams
.
put
(
"endDate"
,
endDate
);
inlineParams
.
put
(
"orderByFields"
,
2
);
inlineParams
.
put
(
"orderByType"
,
1
);
return
inlineParams
;
}
private
void
convertPageParams
(
PotentialStatisticsBaseQO
potentialOverviewQO
,
Map
<
String
,
Object
>
inlineParams
)
{
inlineParams
.
put
(
"pageNum"
,
potentialOverviewQO
.
getPageNum
());
inlineParams
.
put
(
"pageSize"
,
potentialOverviewQO
.
getPageSize
());
int
orderByFields
=
DataApiUtils
.
getOrderByFields
(
potentialOverviewQO
.
getOrderByField
(),
potentialOverviewQO
.
getDefaultFields
(),
potentialOverviewQO
.
getFieldsOrder
());
inlineParams
.
put
(
"orderByFields"
,
orderByFields
);
inlineParams
.
put
(
"orderByType"
,
DataApiUtils
.
getOrderByType
(
potentialOverviewQO
.
getOrder
()));
}
public
Pair
<
String
,
String
>
getDateParam
(
Integer
reportType
,
String
bizDate
)
{
if
(
reportType
==
null
)
{
return
new
Pair
<>(
""
,
""
);
}
String
endDate
=
bizDate
;
String
beginDate
=
bizDate
;
if
(
MaterialReportType
.
MONTH
.
getCode
().
equals
(
reportType
))
{
DateTime
date
=
cn
.
hutool
.
core
.
date
.
DateUtil
.
parse
(
"yyyy-MM"
);
beginDate
=
cn
.
hutool
.
core
.
date
.
DateUtil
.
format
(
cn
.
hutool
.
core
.
date
.
DateUtil
.
beginOfMonth
(
date
),
"yyyy-MM-dd"
);
endDate
=
cn
.
hutool
.
core
.
date
.
DateUtil
.
format
(
cn
.
hutool
.
core
.
date
.
DateUtil
.
endOfMonth
(
date
),
"yyyy-MM-dd"
);
}
else
{
DateTime
date
=
cn
.
hutool
.
core
.
date
.
DateUtil
.
parse
(
"yyyy-MM-dd"
);
endDate
=
cn
.
hutool
.
core
.
date
.
DateUtil
.
format
(
cn
.
hutool
.
core
.
date
.
DateUtil
.
endOfWeek
(
date
),
"yyyy-MM-dd"
);
}
Pair
<
String
,
String
>
pair
=
new
Pair
<>(
beginDate
,
endDate
);
return
pair
;
}
}
haoban-manage3-wx/src/main/java/com/gic/haoban/manage/web/qo/potential/PotentialBusiOverviewQO.java
0 → 100644
View file @
48d243d0
package
com
.
gic
.
haoban
.
manage
.
web
.
qo
.
potential
;
import
lombok.Data
;
import
java.util.HashMap
;
import
java.util.List
;
import
java.util.Map
;
@Data
public
class
PotentialBusiOverviewQO
extends
PotentialOverviewQO
{
private
static
final
long
serialVersionUID
=
-
4105397589798480404L
;
/**
* 查询的业务列表 默认所有 1建联数据 2转化数据
*/
private
List
<
Integer
>
queryBiz
;
}
haoban-manage3-wx/src/main/java/com/gic/haoban/manage/web/qo/potential/PotentialContactOverviewQO.java
0 → 100644
View file @
48d243d0
package
com
.
gic
.
haoban
.
manage
.
web
.
qo
.
potential
;
import
lombok.Data
;
import
java.util.HashMap
;
import
java.util.Map
;
@Data
public
class
PotentialContactOverviewQO
extends
PotentialOverviewQO
{
private
static
final
long
serialVersionUID
=
-
4105397589798480404L
;
public
Map
<
String
,
Integer
>
getFieldsOrder
()
{
Map
<
String
,
Integer
>
map
=
new
HashMap
<>();
map
.
put
(
"potCusNum"
,
1
);
// 潜力客户数
map
.
put
(
"connPotCusNum"
,
2
);
// 建联客户数
map
.
put
(
"potCusConnRate"
,
3
);
// 建联率
map
.
put
(
"convsPotCusNum"
,
4
);
// 转化客户数
map
.
put
(
"connConvsRate"
,
5
);
// 转化率
map
.
put
(
"connConvsAmt"
,
6
);
// 潜客转化金额
map
.
put
(
"noConnPotCusNum"
,
7
);
// 当前未建联潜客数
return
map
;
}
public
String
getDefaultFields
()
{
return
"potCusConnRate"
;
}
}
haoban-manage3-wx/src/main/java/com/gic/haoban/manage/web/qo/potential/PotentialConvMemberQO.java
0 → 100644
View file @
48d243d0
package
com
.
gic
.
haoban
.
manage
.
web
.
qo
.
potential
;
import
lombok.Data
;
import
java.util.HashMap
;
import
java.util.Map
;
@Data
public
class
PotentialConvMemberQO
extends
PotentialStatisticsBaseQO
{
private
static
final
long
serialVersionUID
=
-
4105397589798480404L
;
public
Map
<
String
,
Integer
>
getFieldsOrder
()
{
Map
<
String
,
Integer
>
map
=
new
HashMap
<>();
map
.
put
(
"connConvsAmt"
,
1
);
// 潜客转化金额
return
map
;
}
public
String
getDefaultFields
()
{
return
"connConvsAmt"
;
}
}
haoban-manage3-wx/src/main/java/com/gic/haoban/manage/web/qo/potential/PotentialConvOverviewQO.java
0 → 100644
View file @
48d243d0
package
com
.
gic
.
haoban
.
manage
.
web
.
qo
.
potential
;
import
lombok.Data
;
import
java.util.HashMap
;
import
java.util.Map
;
@Data
public
class
PotentialConvOverviewQO
extends
PotentialOverviewQO
{
private
static
final
long
serialVersionUID
=
-
4105397589798480404L
;
public
Map
<
String
,
Integer
>
getFieldsOrder
()
{
Map
<
String
,
Integer
>
map
=
new
HashMap
<>();
map
.
put
(
"onlineConnConvsMbrNum"
,
1
);
// 商城转化客户数
map
.
put
(
"onlineConnConvsAmt"
,
2
);
// 商城转化金额
map
.
put
(
"offlineConnConvsMbrNum"
,
3
);
// 线下转化客户数
map
.
put
(
"offlineConnConvsAmt"
,
4
);
// 线下转化金额
map
.
put
(
"potCusRdrOnlineConvsMbrNum"
,
5
);
// 潜客雷达商城转化客户数
map
.
put
(
"potCusRdrOnlineConvsAmt"
,
6
);
// 潜客雷达商城转化金额
map
.
put
(
"potCusRdrOfflineConvsMbrNum"
,
7
);
// 潜客雷达线下转化客户数
map
.
put
(
"potCusRdrOfflineConvsAmt"
,
8
);
// 潜客雷达线下转化金额
return
map
;
}
public
String
getDefaultFields
()
{
return
"onlineConnConvsMbrNum"
;
}
}
haoban-manage3-wx/src/main/java/com/gic/haoban/manage/web/qo/potential/PotentialOverviewQO.java
0 → 100644
View file @
48d243d0
package
com
.
gic
.
haoban
.
manage
.
web
.
qo
.
potential
;
import
lombok.Data
;
import
java.util.HashMap
;
import
java.util.Map
;
@Data
public
class
PotentialOverviewQO
extends
PotentialStatisticsBaseQO
{
private
static
final
long
serialVersionUID
=
-
4105397589798480404L
;
/**
* 数据类型
* 1 周报; 2 月报
* @see com.gic.haoban.manage.api.enums.content.MaterialReportType
*/
private
Integer
reportType
;
/**
* 周报/月报传业务周期
*/
private
String
bizDate
;
/**
* 1 门店维度 2 导购维度
*/
private
Integer
potGroup
;
}
haoban-manage3-wx/src/main/java/com/gic/haoban/manage/web/qo/potential/PotentialStatisticsBaseQO.java
0 → 100644
View file @
48d243d0
package
com
.
gic
.
haoban
.
manage
.
web
.
qo
.
potential
;
import
com.gic.api.base.commons.BasePageInfo
;
import
com.gic.haoban.common.utils.DateUtil
;
import
lombok.Data
;
import
org.apache.commons.lang3.StringUtils
;
import
org.apache.commons.lang3.time.DateUtils
;
import
java.util.Date
;
import
java.util.HashMap
;
import
java.util.List
;
import
java.util.Map
;
@Data
public
class
PotentialStatisticsBaseQO
extends
BasePageInfo
{
/**
* 企业id
*/
private
String
enterpriseId
;
/**
* 微信企业id
*/
private
String
wxEnterpriseId
;
/**
* 导购id
*/
private
String
clerkId
;
/**
* 门店id
*/
private
String
storeId
;
/**
* 门店id列表
*/
private
List
<
String
>
storeIdList
;
/**
* 门店过滤
*/
private
Integer
storeStatusFilter
;
/**
* 开始时间
*/
private
String
startDate
;
/**
* 结束时间
*/
private
String
endDate
;
/**
* 排序字段
*/
private
String
orderByField
;
/**
* asc
* desc
*/
private
String
order
;
public
String
getEndDate
()
{
if
(
StringUtils
.
isBlank
(
this
.
endDate
))
{
return
DateUtil
.
dateToStr
(
DateUtils
.
addDays
(
new
Date
(),
-
1
),
"yyyy-MM-dd"
);
}
return
endDate
;
}
public
Map
<
String
,
Integer
>
getFieldsOrder
()
{
Map
<
String
,
Integer
>
map
=
new
HashMap
<>();
return
map
;
}
public
String
getDefaultFields
()
{
return
""
;
}
}
haoban-manage3-wx/src/main/java/com/gic/haoban/manage/web/qo/potential/RecommendBusiOverviewQO.java
0 → 100644
View file @
48d243d0
package
com
.
gic
.
haoban
.
manage
.
web
.
qo
.
potential
;
import
lombok.Data
;
import
java.util.List
;
@Data
public
class
RecommendBusiOverviewQO
extends
PotentialOverviewQO
{
private
static
final
long
serialVersionUID
=
-
4105397589798480404L
;
/**
* 查询的业务列表 默认所有 1使用数据 2转化数据
*/
private
List
<
Integer
>
queryBiz
;
}
haoban-manage3-wx/src/main/java/com/gic/haoban/manage/web/qo/potential/RecommendConvOverviewQO.java
0 → 100644
View file @
48d243d0
package
com
.
gic
.
haoban
.
manage
.
web
.
qo
.
potential
;
import
lombok.Data
;
import
java.util.HashMap
;
import
java.util.Map
;
@Data
public
class
RecommendConvOverviewQO
extends
PotentialOverviewQO
{
private
static
final
long
serialVersionUID
=
-
4105397589798480404L
;
public
Map
<
String
,
Integer
>
getFieldsOrder
()
{
Map
<
String
,
Integer
>
map
=
new
HashMap
<>();
map
.
put
(
"matchingOnlineConvsMbrNum"
,
1
);
// 人货匹配商城转化人数
map
.
put
(
"matchingOnlineConvsAmt"
,
2
);
// 人货匹配商城转化金额
map
.
put
(
"matchingOfflineConvsMbrNum"
,
3
);
// 人货匹配线下转化人数
map
.
put
(
"matchingOfflineConvsAmt"
,
4
);
// 人货匹配线下转化金额
map
.
put
(
"matchingOnlineConvsMbrNumOverview"
,
5
);
// 人货匹配商城转化人数(总览)
map
.
put
(
"matchingOnlineConvsAmtOverview"
,
6
);
// 人货匹配商城转化金额(总览)
map
.
put
(
"matchingOfflineConvsMbrNumOverview"
,
7
);
// 人货匹配线下转化人数(总览)
map
.
put
(
"matchingOfflineConvsAmtOverview"
,
8
);
// 人货匹配线下转化金额(总览)
return
map
;
}
public
String
getDefaultFields
()
{
return
"matchingOnlineConvsMbrNum"
;
}
}
haoban-manage3-wx/src/main/java/com/gic/haoban/manage/web/qo/potential/RecommendConvTrendQO.java
0 → 100644
View file @
48d243d0
package
com
.
gic
.
haoban
.
manage
.
web
.
qo
.
potential
;
import
lombok.Data
;
import
java.util.HashMap
;
import
java.util.Map
;
@Data
public
class
RecommendConvTrendQO
extends
PotentialStatisticsBaseQO
{
private
static
final
long
serialVersionUID
=
-
4105397589798480404L
;
public
Map
<
String
,
Integer
>
getFieldsOrder
()
{
Map
<
String
,
Integer
>
map
=
new
HashMap
<>();
map
.
put
(
"matchingOnlineConvsMbrNum"
,
1
);
// 1 人货匹配商城转化客户数
map
.
put
(
"matchingOnlineConvsAmt"
,
2
);
// 2 人货匹配商城转化金额
map
.
put
(
"matchingOfflineConvsMbrNum"
,
3
);
// 3 人货匹配线下转化客户数
map
.
put
(
"matchingOfflineConvsAmt"
,
4
);
// 4 人货匹配线下转化金额
map
.
put
(
"matchingOnlineConvsMbrNumOverview"
,
5
);
// 5 人货匹配商城转化客户数(总览)
map
.
put
(
"matchingOnlineConvsAmtOverview"
,
6
);
// 6 人货匹配商城转化金额(总览)
map
.
put
(
"matchingOfflineConvsMbrNumOverview"
,
7
);
// 7 人货匹配线下转化客户数(总览)
map
.
put
(
"matchingOfflineConvsAmtOverview"
,
8
);
// 8 人货匹配线下转化金额(总览)
map
.
put
(
"bizDate"
,
9
);
// 日期
return
map
;
}
public
String
getDefaultFields
()
{
return
"bizDate"
;
}
}
haoban-manage3-wx/src/main/java/com/gic/haoban/manage/web/qo/potential/RecommendUsedOverviewQO.java
0 → 100644
View file @
48d243d0
package
com
.
gic
.
haoban
.
manage
.
web
.
qo
.
potential
;
import
lombok.Data
;
import
java.util.HashMap
;
import
java.util.Map
;
@Data
public
class
RecommendUsedOverviewQO
extends
PotentialOverviewQO
{
private
static
final
long
serialVersionUID
=
-
4105397589798480404L
;
public
Map
<
String
,
Integer
>
getFieldsOrder
()
{
Map
<
String
,
Integer
>
map
=
new
HashMap
<>();
map
.
put
(
"matchingTouchMbrNum"
,
1
);
// 人货匹配触达客户数
map
.
put
(
"matchingReachClickMbrNum"
,
2
);
// 人货匹配访问人数
map
.
put
(
"matchingCTR"
,
3
);
// 人货匹配触达访问率
map
.
put
(
"matchingTouchConvsMbrNum"
,
4
);
// 人货匹配触达转化人数
map
.
put
(
"matchingConvsRate"
,
5
);
// 人货匹配触达转化率
map
.
put
(
"matchingTouchConvsAmt"
,
6
);
// 人货匹配触达转化金额
return
map
;
}
public
String
getDefaultFields
()
{
return
"matchingTouchMbrNum"
;
}
}
haoban-manage3-wx/src/main/java/com/gic/haoban/manage/web/qo/potential/RecommendUsedTrendQO.java
0 → 100644
View file @
48d243d0
package
com
.
gic
.
haoban
.
manage
.
web
.
qo
.
potential
;
import
lombok.Data
;
import
java.util.HashMap
;
import
java.util.Map
;
@Data
public
class
RecommendUsedTrendQO
extends
PotentialStatisticsBaseQO
{
private
static
final
long
serialVersionUID
=
-
4105397589798480404L
;
public
Map
<
String
,
Integer
>
getFieldsOrder
()
{
Map
<
String
,
Integer
>
map
=
new
HashMap
<>();
map
.
put
(
"matchingTouchMbrNum"
,
1
);
// 人货匹配触达客户数
map
.
put
(
"matchingReachClickMbrNum"
,
2
);
// 人货匹配访问人数
map
.
put
(
"matchingCTR"
,
3
);
// 人货匹配触达访问率
map
.
put
(
"matchingTouchConvsMbrNum"
,
4
);
// 人货匹配触达转化人数
map
.
put
(
"matchingConvsRate"
,
5
);
// 人货匹配触达转化率
map
.
put
(
"matchingTouchConvsAmt"
,
6
);
// 人货匹配触达转化金额
map
.
put
(
"bizDate"
,
7
);
// 日期
return
map
;
}
public
String
getDefaultFields
()
{
return
"bizDate"
;
}
}
haoban-manage3-wx/src/main/java/com/gic/haoban/manage/web/utils/EsMemberInfoUtils.java
View file @
48d243d0
...
@@ -41,7 +41,7 @@ public class EsMemberInfoUtils {
...
@@ -41,7 +41,7 @@ public class EsMemberInfoUtils {
}
}
}
}
if
(
CollectionUtils
.
isNotEmpty
(
memberIdList
))
{
if
(
CollectionUtils
.
isNotEmpty
(
memberIdList
))
{
List
<
JSONObject
>
memberJson
=
queryDataBatch
(
enterpriseId
,
memberIdList
,
"memberId,name,mainStoreId,phoneNumber,name,nickName,mainClerkId,photoUrl"
);
List
<
JSONObject
>
memberJson
=
queryDataBatch
(
enterpriseId
,
memberIdList
,
"memberId,name,mainStoreId,phoneNumber,name,nickName,mainClerkId,photoUrl
,cardNo
"
);
if
(
CollectionUtils
.
isNotEmpty
(
memberJson
))
{
if
(
CollectionUtils
.
isNotEmpty
(
memberJson
))
{
Map
<
String
,
JSONObject
>
map
=
memberJson
.
stream
()
Map
<
String
,
JSONObject
>
map
=
memberJson
.
stream
()
.
collect
(
Collectors
.
toMap
(
e
->
e
.
getString
(
"memberId"
),
e
->
e
));
.
collect
(
Collectors
.
toMap
(
e
->
e
.
getString
(
"memberId"
),
e
->
e
));
...
@@ -94,6 +94,12 @@ public class EsMemberInfoUtils {
...
@@ -94,6 +94,12 @@ public class EsMemberInfoUtils {
if
(
fieldName
.
contains
(
"memberScene"
))
{
if
(
fieldName
.
contains
(
"memberScene"
))
{
ReflectUtils
.
setDateFieldValue
(
vo
,
"memberScene"
,
3
);
ReflectUtils
.
setDateFieldValue
(
vo
,
"memberScene"
,
3
);
}
}
if
(
fieldName
.
contains
(
"memberCard"
))
{
ReflectUtils
.
setDateFieldValue
(
vo
,
"memberCard"
,
jsonValue
.
getString
(
"cardNo"
));
}
if
(
fieldName
.
contains
(
"memberImage"
))
{
ReflectUtils
.
setDateFieldValue
(
vo
,
"memberImage"
,
jsonValue
.
getString
(
"photoUrl"
));
}
if
(
isQueryStore
)
{
if
(
isQueryStore
)
{
String
mainStoreId
=
jsonValue
.
getString
(
"mainStoreId"
);
String
mainStoreId
=
jsonValue
.
getString
(
"mainStoreId"
);
...
...
haoban-manage3-wx/src/main/java/com/gic/haoban/manage/web/vo/StoreClerkIdVO.java
0 → 100644
View file @
48d243d0
package
com
.
gic
.
haoban
.
manage
.
web
.
vo
;
import
lombok.Data
;
/**
* Created by wangzubo on 2025/3/22.
*/
@Data
public
class
StoreClerkIdVO
{
/**
* 导购id
*/
private
String
clerkId
;
/**
* 门店id
*/
private
String
storeId
;
}
haoban-manage3-wx/src/main/java/com/gic/haoban/manage/web/vo/StoreClerkInfoVO.java
0 → 100644
View file @
48d243d0
package
com
.
gic
.
haoban
.
manage
.
web
.
vo
;
import
com.gic.clerk.api.dto.ClerkDTO
;
import
com.gic.enterprise.api.dto.StoreDTO
;
import
lombok.Data
;
/**
* Created by wangzubo on 2025/3/22.
*/
@Data
public
class
StoreClerkInfoVO
{
/**
* 导购id
*/
private
String
clerkId
;
/**
* 导购code
*/
private
String
clerkCode
;
/**
* 导购名称
*/
private
String
clerkName
;
/**
* 门店id
*/
private
String
storeId
;
/**
* 门店code
*/
private
String
storeCode
;
/**
* 门店名称
*/
private
String
storeName
;
public
void
setClerk
(
ClerkDTO
clerkDTO
)
{
if
(
clerkDTO
==
null
)
{
return
;
}
this
.
setClerkId
(
clerkDTO
.
getClerkId
());
this
.
setClerkCode
(
clerkDTO
.
getClerkCode
());
this
.
setClerkName
(
clerkDTO
.
getClerkName
());
}
public
void
setStore
(
StoreDTO
storeDTO
)
{
if
(
storeDTO
==
null
)
{
return
;
}
this
.
setStoreId
(
storeDTO
.
getStoreId
());
this
.
setStoreCode
(
storeDTO
.
getStoreCode
());
this
.
setStoreName
(
storeDTO
.
getStoreName
());
}
}
haoban-manage3-wx/src/main/java/com/gic/haoban/manage/web/vo/content/statistics/report/MaterialPersonalUsedDataVO.java
View file @
48d243d0
...
@@ -13,35 +13,7 @@ import java.util.Date;
...
@@ -13,35 +13,7 @@ import java.util.Date;
public
class
MaterialPersonalUsedDataVO
implements
Serializable
{
public
class
MaterialPersonalUsedDataVO
implements
Serializable
{
private
static
final
long
serialVersionUID
=
6148710247246321358L
;
private
static
final
long
serialVersionUID
=
6148710247246321358L
;
/**
* 开始时间
*/
private
Date
startTime
;
/**
* 结束时间
*/
private
Date
endTime
;
/**
* 导购id
*/
private
String
clerkId
;
/**
* 导购code
*/
private
String
clerkCode
;
/**
* 导购名称
*/
private
String
clerkName
;
/**
* 导购头像
*/
private
String
imageUrl
;
/**
/**
* 使用素材数量
* 使用素材数量
...
...
haoban-manage3-wx/src/main/java/com/gic/haoban/manage/web/vo/potential/PotentialContactDetailOverviewVO.java
0 → 100644
View file @
48d243d0
package
com
.
gic
.
haoban
.
manage
.
web
.
vo
.
potential
;
import
com.gic.haoban.manage.web.vo.StoreClerkInfoVO
;
import
lombok.Data
;
/**
* Created by wangzubo on 2025/3/22.
*/
@Data
public
class
PotentialContactDetailOverviewVO
extends
StoreClerkInfoVO
{
/**
* 建联数据
*/
private
PotentialContactOverviewVO
contact
;
}
haoban-manage3-wx/src/main/java/com/gic/haoban/manage/web/vo/potential/PotentialContactOverviewVO.java
0 → 100644
View file @
48d243d0
package
com
.
gic
.
haoban
.
manage
.
web
.
vo
.
potential
;
import
com.gic.haoban.manage.web.vo.StoreClerkIdVO
;
import
lombok.Data
;
/**
* Created by wangzubo on 2025/3/21.
*/
@Data
public
class
PotentialContactOverviewVO
extends
StoreClerkIdVO
{
/**
* 潜力客户数
*/
private
Integer
potCusNum
;
/**
* 建联客户数
*/
private
Integer
connPotCusNum
;
/**
* 建联率
*/
private
Double
potCusConnRate
;
/**
* 转化客户数
*/
private
Integer
convsPotCusNum
;
/**
* 转化率
*/
private
Double
connConvsRate
;
/**
* 潜客转化金额
*/
private
Double
connConvsAmt
;
/**
* 当前未建联潜客数
*/
private
Integer
noConnPotCusNum
;
/**
* 潜力客户数上一周期环比
*/
private
Double
potCusNumLast
;
/**
* 建联客户数上一周期环比
*/
private
Double
connPotCusNumLast
;
/**
* 建联率上一周期环比
*/
private
Double
potCusConnRateLast
;
/**
* 转化客户数上一周期环比
*/
private
Integer
convsPotCusNumLast
;
/**
* 转化率上一周期环比
*/
private
Double
connConvsRateLast
;
/**
* 潜客转化金额上一周期环比
*/
private
Double
connConvsAmtLast
;
/**
* 建联率排名
*/
private
Integer
potCusConnRateRank
;
}
haoban-manage3-wx/src/main/java/com/gic/haoban/manage/web/vo/potential/PotentialConvDetailOverviewVO.java
0 → 100644
View file @
48d243d0
package
com
.
gic
.
haoban
.
manage
.
web
.
vo
.
potential
;
import
com.gic.haoban.manage.web.vo.StoreClerkInfoVO
;
import
lombok.Data
;
/**
* Created by wangzubo on 2025/3/22.
*/
@Data
public
class
PotentialConvDetailOverviewVO
extends
StoreClerkInfoVO
{
/**
* 转化数据
*/
private
PotentialConvOverviewVO
conv
;
}
haoban-manage3-wx/src/main/java/com/gic/haoban/manage/web/vo/potential/PotentialConvOverviewVO.java
0 → 100644
View file @
48d243d0
package
com
.
gic
.
haoban
.
manage
.
web
.
vo
.
potential
;
import
com.gic.haoban.manage.web.vo.StoreClerkIdVO
;
import
lombok.Data
;
/**
* Created by wangzubo on 2025/3/22.
*/
@Data
public
class
PotentialConvOverviewVO
extends
StoreClerkIdVO
{
/**
* 商城转化金额
*/
private
Double
onlineConnConvsAmt
;
/**
* 商城转化客户数
*/
private
Integer
onlineConnConvsMbrNum
;
/**
* 线下转化金额
*/
private
Double
offlineConnConvsAmt
;
/**
* 线下转化客户数
*/
private
Integer
offlineConnConvsMbrNum
;
/**
* 商城转化金额上一周期环比
*/
private
Double
onlineConnConvsAmtLast
;
/**
* 商城转化客户数上一周期环比
*/
private
Double
onlineConnConvsMbrNumLast
;
/**
* 线下转化金额上一周期环比
*/
private
Double
offlineConnConvsAmtLast
;
/**
* 线下转化客户数上一周期环比 (必须)
*/
private
Integer
offlineConnConvsMbrNumLast
;
/**
* 商城转化金额排名 (必须)
*/
private
Integer
onlineConnConvsAmtRank
;
/**
* 线下转化金额排名 (必须)
*/
private
Integer
offlineConnConvsAmtRank
;
/**
* 潜客雷达商城转化客户数
*/
private
Integer
potCusRdrOnlineConvsMbrNum
;
/**
* 潜客雷达商城转化金额
*/
private
Double
potCusRdrOnlineConvsAmt
;
/**
* 潜客雷达线下转化客户数
*/
private
Integer
potCusRdrOfflineConvsMbrNum
;
/**
* 潜客雷达线下转化金额
*/
private
Double
potCusRdrOfflineConvsAmt
;
}
haoban-manage3-wx/src/main/java/com/gic/haoban/manage/web/vo/potential/PotentialMemberConvVO.java
0 → 100644
View file @
48d243d0
package
com
.
gic
.
haoban
.
manage
.
web
.
vo
.
potential
;
import
lombok.Data
;
/**
* Created by wangzubo on 2025/3/22.
*/
@Data
public
class
PotentialMemberConvVO
{
/**
* 会员id
*/
private
String
memberId
;
/**
* 潜客转化金额
*/
private
Double
connConvsAmt
;
/**
* 会员名称
*/
private
String
memberName
;
/**
* 会员昵称
*/
private
String
memberNick
;
/**
* 会员卡号
*/
private
String
memberCard
;
/**
* 会员头像
*/
private
String
memberImage
;
}
haoban-manage3-wx/src/main/java/com/gic/haoban/manage/web/vo/potential/PotentialOverviewVO.java
0 → 100644
View file @
48d243d0
package
com
.
gic
.
haoban
.
manage
.
web
.
vo
.
potential
;
import
com.gic.clerk.api.dto.ClerkDTO
;
import
lombok.Data
;
import
java.util.Date
;
/**
* Created by wangzubo on 2025/3/22.
*/
@Data
public
class
PotentialOverviewVO
{
/**
* 建联数据
*/
private
PotentialContactOverviewVO
contact
;
/**
* 转化数据
*/
private
PotentialConvOverviewVO
conv
;
/**
* 开始时间
*/
private
Date
startTime
;
/**
* 结束时间
*/
private
Date
endTime
;
/**
* 导购id
*/
private
String
clerkId
;
/**
* 导购code
*/
private
String
clerkCode
;
/**
* 导购名称
*/
private
String
clerkName
;
/**
* 导购头像
*/
private
String
imageUrl
;
public
void
setClerk
(
ClerkDTO
clerkDTO
)
{
if
(
clerkDTO
==
null
)
{
return
;
}
this
.
clerkId
=
clerkDTO
.
getClerkId
();
this
.
clerkCode
=
clerkDTO
.
getClerkCode
();
this
.
clerkName
=
clerkDTO
.
getClerkName
();
this
.
imageUrl
=
clerkDTO
.
getImageUrl
();
}
}
haoban-manage3-wx/src/main/java/com/gic/haoban/manage/web/vo/potential/RecommendConvDetailOverviewVO.java
0 → 100644
View file @
48d243d0
package
com
.
gic
.
haoban
.
manage
.
web
.
vo
.
potential
;
import
com.gic.haoban.manage.web.vo.StoreClerkInfoVO
;
import
lombok.Data
;
/**
* Created by wangzubo on 2025/3/22.
*/
@Data
public
class
RecommendConvDetailOverviewVO
extends
StoreClerkInfoVO
{
/**
* 转化数据
*/
private
RecommendConvOverviewVO
conv
;
}
haoban-manage3-wx/src/main/java/com/gic/haoban/manage/web/vo/potential/RecommendConvOverviewVO.java
0 → 100644
View file @
48d243d0
package
com
.
gic
.
haoban
.
manage
.
web
.
vo
.
potential
;
import
com.gic.haoban.manage.web.vo.StoreClerkIdVO
;
import
lombok.Data
;
/**
* Created by wangzubo on 2025/3/22.
*/
@Data
public
class
RecommendConvOverviewVO
extends
StoreClerkIdVO
{
/**
* 人货匹配商城转化人数
*/
private
Integer
matchingOnlineConvsMbrNum
;
/**
* 人货匹配商城转化金额
*/
private
Double
matchingOnlineConvsAmt
;
/**
* 人货匹配线下转化人数
*/
private
Integer
matchingOfflineConvsMbrNum
;
/**
* 人货匹配线下转化金额
*/
private
Double
matchingOfflineConvsAmt
;
/**
* 人货匹配商城转化人数(总览)
*/
private
Integer
matchingOnlineConvsMbrNumOverview
;
/**
* 人货匹配商城转化金额(总览)
*/
private
Double
matchingOnlineConvsAmtOverview
;
/**
* 人货匹配线下转化人数(总览)
*/
private
Integer
matchingOfflineConvsMbrNumOverview
;
/**
* 人货匹配线下转化金额(总览)
*/
private
Double
matchingOfflineConvsAmtOverview
;
}
haoban-manage3-wx/src/main/java/com/gic/haoban/manage/web/vo/potential/RecommendConvTrendVO.java
0 → 100644
View file @
48d243d0
package
com
.
gic
.
haoban
.
manage
.
web
.
vo
.
potential
;
import
lombok.Data
;
/**
* Created by wangzubo on 2025/3/22.
*/
@Data
public
class
RecommendConvTrendVO
{
/**
* 人货匹配商城转化客户数
*/
private
Integer
matchingOnlineConvsMbrNum
;
/**
* 人货匹配商城转化金额
*/
private
Double
matchingOnlineConvsAmt
;
/**
* 人货匹配线下转化客户数
*/
private
Integer
matchingOfflineConvsMbrNum
;
/**
* 人货匹配线下转化金额
*/
private
Double
matchingOfflineConvsAmt
;
/**
* 人货匹配商城转化客户数(总览)
*/
private
Integer
matchingOnlineConvsMbrNumOverview
;
/**
* 人货匹配商城转化金额(总览)
*/
private
Double
matchingOnlineConvsAmtOverview
;
/**
* 人货匹配线下转化客户数(总览)
*/
private
Integer
matchingOfflineConvsMbrNumOverview
;
/**
* 人货匹配线下转化金额(总览)
*/
private
Double
matchingOfflineConvsAmtOverview
;
/**
* 日期
*/
private
String
bizDate
;
}
haoban-manage3-wx/src/main/java/com/gic/haoban/manage/web/vo/potential/RecommendOverviewVO.java
0 → 100644
View file @
48d243d0
package
com
.
gic
.
haoban
.
manage
.
web
.
vo
.
potential
;
import
lombok.Data
;
/**
* Created by wangzubo on 2025/3/22.
*/
@Data
public
class
RecommendOverviewVO
{
/**
* 使用数据
*/
private
RecommendUsedOverviewVO
used
;
/**
* 转化数据
*/
private
RecommendConvOverviewVO
conv
;
}
haoban-manage3-wx/src/main/java/com/gic/haoban/manage/web/vo/potential/RecommendUsedDetailOverviewVO.java
0 → 100644
View file @
48d243d0
package
com
.
gic
.
haoban
.
manage
.
web
.
vo
.
potential
;
import
com.gic.haoban.manage.web.vo.StoreClerkInfoVO
;
import
lombok.Data
;
/**
* Created by wangzubo on 2025/3/22.
*/
@Data
public
class
RecommendUsedDetailOverviewVO
extends
StoreClerkInfoVO
{
/**
* 使用数据
*/
private
RecommendUsedOverviewVO
used
;
}
haoban-manage3-wx/src/main/java/com/gic/haoban/manage/web/vo/potential/RecommendUsedOverviewVO.java
0 → 100644
View file @
48d243d0
package
com
.
gic
.
haoban
.
manage
.
web
.
vo
.
potential
;
import
com.gic.haoban.manage.web.vo.StoreClerkIdVO
;
import
lombok.Data
;
/**
* Created by wangzubo on 2025/3/22.
*/
@Data
public
class
RecommendUsedOverviewVO
extends
StoreClerkIdVO
{
/**
* 人货匹配触达客户数
*/
private
Integer
matchingTouchMbrNum
;
/**
* 人货匹配访问人数
*/
private
Integer
matchingReachClickMbrNum
;
/**
* 人货匹配触达访问率
*/
private
Double
matchingCTR
;
/**
* 人货匹配触达转化人数
*/
private
Integer
matchingTouchConvsMbrNum
;
/**
* 人货匹配触达转化率
*/
private
Double
matchingConvsRate
;
/**
* 人货匹配触达转化金额
*/
private
Double
matchingTouchConvsAmt
;
}
haoban-manage3-wx/src/main/java/com/gic/haoban/manage/web/vo/potential/RecommendUsedTrendVO.java
0 → 100644
View file @
48d243d0
package
com
.
gic
.
haoban
.
manage
.
web
.
vo
.
potential
;
import
lombok.Data
;
/**
* Created by wangzubo on 2025/3/22.
*/
@Data
public
class
RecommendUsedTrendVO
{
/**
* 人货匹配触达客户数
*/
private
Integer
matchingTouchMbrNum
;
/**
* 人货匹配访问人数
*/
private
Integer
matchingReachClickMbrNum
;
/**
* 人货匹配触达访问率
*/
private
Double
matchingCTR
;
/**
* 人货匹配触达转化人数
*/
private
Integer
matchingTouchConvsMbrNum
;
/**
* 人货匹配触达转化率
*/
private
Double
matchingConvsRate
;
/**
* 人货匹配触达转化金额
*/
private
Double
matchingTouchConvsAmt
;
/**
* 日期
*/
private
String
bizDate
;
}
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