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
22f111f6
Commit
22f111f6
authored
Mar 29, 2023
by
songyinghui
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
feat: 销售线索与互动记录
parent
ad359422
Hide whitespace changes
Inline
Side-by-side
Showing
44 changed files
with
1859 additions
and
355 deletions
+1859
-355
PotentialCustomerDTO.java
...c/haoban/manage/api/dto/content/PotentialCustomerDTO.java
+25
-0
InteractRecordQDTO.java
...aoban/manage/api/dto/qdto/content/InteractRecordQDTO.java
+39
-0
InteractRecordExtendInfoDTO.java
...manage/api/enums/content/InteractRecordExtendInfoDTO.java
+187
-0
InteractRecordInfoDTO.java
...aoban/manage/api/enums/content/InteractRecordInfoDTO.java
+122
-0
MaterialInteractRecordEventType.java
...ge/api/enums/content/MaterialInteractRecordEventType.java
+51
-0
TriggerCustomerChannelType.java
.../manage/api/enums/content/TriggerCustomerChannelType.java
+21
-1
InteractRecordApiService.java
.../manage/api/service/content/InteractRecordApiService.java
+23
-0
PotentialCustomerApiService.java
...nage/api/service/content/PotentialCustomerApiService.java
+1
-1
pom.xml
haoban-manage3-service/pom.xml
+6
-0
TabHaobanInteractRecordMapper.java
...ice/dao/mapper/content/TabHaobanInteractRecordMapper.java
+8
-0
TabHaobanPotentialCustomerMapper.java
.../dao/mapper/content/TabHaobanPotentialCustomerMapper.java
+7
-10
InteractRecordBO.java
...oban/manage/service/pojo/bo/content/InteractRecordBO.java
+20
-37
InteractRecordExtendInfoBO.java
...e/service/pojo/bo/content/InteractRecordExtendInfoBO.java
+99
-0
InteractRecordMessageContext.java
...pojo/bo/content/context/InteractRecordMessageContext.java
+122
-0
InteractRecordMessageBO.java
...vice/pojo/bo/content/message/InteractRecordMessageBO.java
+6
-1
InteractRecordQO.java
...oban/manage/service/pojo/qo/content/InteractRecordQO.java
+37
-0
PotentialCustomerQO.java
...n/manage/service/pojo/qo/content/PotentialCustomerQO.java
+5
-0
InteractRecordService.java
...manage/service/service/content/InteractRecordService.java
+24
-1
PotentialCustomerService.java
...age/service/service/content/PotentialCustomerService.java
+30
-0
InteractRecordBuilder.java
...ervice/service/content/adaptor/InteractRecordBuilder.java
+120
-0
InteractRecordMessageBuilder.java
...service/content/adaptor/InteractRecordMessageBuilder.java
+81
-0
InteractRecordServiceImpl.java
...rvice/service/content/impl/InteractRecordServiceImpl.java
+95
-1
PotentialCustomerServiceImpl.java
...ce/service/content/impl/PotentialCustomerServiceImpl.java
+88
-3
InteractRecordMessageService.java
...service/content/message/InteractRecordMessageService.java
+90
-21
InteractRecordApiServiceImpl.java
...ervice/out/impl/content/InteractRecordApiServiceImpl.java
+75
-0
PotentialCustomerApiServiceImpl.java
...ice/out/impl/content/PotentialCustomerApiServiceImpl.java
+33
-3
applicationContext-conf.xml
...e3-service/src/main/resources/applicationContext-conf.xml
+3
-2
dubbo-haoban-manage-service.xml
...ervice/src/main/resources/dubbo-haoban-manage-service.xml
+5
-0
TabHaobanInteractRecordMapper.xml
...esources/mapper/content/TabHaobanInteractRecordMapper.xml
+15
-0
TabHaobanPotentialCustomerMapper.xml
...urces/mapper/content/TabHaobanPotentialCustomerMapper.xml
+19
-89
InteractRecordTest.java
haoban-manage3-service/src/test/java/InteractRecordTest.java
+72
-0
InteractRecordController.java
...nage/web/controller/content/InteractRecordController.java
+68
-3
MaterialDataStaticsController.java
...web/controller/content/MaterialDataStaticsController.java
+3
-2
PotentialCustomerController.java
...e/web/controller/content/PotentialCustomerController.java
+68
-1
ContentMaterialAdaptor.java
...eb/controller/content/adaptor/ContentMaterialAdaptor.java
+51
-0
MaterialDataAdaptor.java
...e/web/controller/content/adaptor/MaterialDataAdaptor.java
+3
-3
InteractRecordQO.java
...om/gic/haoban/manage/web/qo/content/InteractRecordQO.java
+5
-0
MaterialReportQO.java
...an/manage/web/qo/content/statistics/MaterialReportQO.java
+3
-3
InteractRecordExtendInfoVO.java
...ban/manage/web/vo/content/InteractRecordExtendInfoVO.java
+88
-0
InteractRecordVO.java
...om/gic/haoban/manage/web/vo/content/InteractRecordVO.java
+9
-75
SimpleGoodsInfoVO.java
...m/gic/haoban/manage/web/vo/content/SimpleGoodsInfoVO.java
+1
-1
MaterialAreaUsedDataVO.java
...age/web/vo/content/statistics/MaterialAreaUsedDataVO.java
+13
-96
MaterialStoreUsedDataVO.java
...ge/web/vo/content/statistics/MaterialStoreUsedDataVO.java
+16
-1
dubbo-haoban-manage-wx.xml
...ge3-wx/src/main/webapp/WEB-INF/dubbo-haoban-manage-wx.xml
+2
-0
No files found.
haoban-manage3-api/src/main/java/com/gic/haoban/manage/api/dto/content/PotentialCustomerDTO.java
View file @
22f111f6
...
@@ -32,6 +32,15 @@ public class PotentialCustomerDTO implements Serializable {
...
@@ -32,6 +32,15 @@ public class PotentialCustomerDTO implements Serializable {
private
String
memberId
;
private
String
memberId
;
/**
/**
* 销售线索-业务id
*/
private
String
bizId
;
/**
* 业务类型 1 素材
*/
private
Integer
bizType
;
/**
* 最后访问时间
* 最后访问时间
*/
*/
private
Date
lastAccessTime
;
private
Date
lastAccessTime
;
...
@@ -197,4 +206,20 @@ public class PotentialCustomerDTO implements Serializable {
...
@@ -197,4 +206,20 @@ public class PotentialCustomerDTO implements Serializable {
public
void
setDurationTime
(
Integer
durationTime
)
{
public
void
setDurationTime
(
Integer
durationTime
)
{
this
.
durationTime
=
durationTime
;
this
.
durationTime
=
durationTime
;
}
}
public
String
getBizId
()
{
return
bizId
;
}
public
void
setBizId
(
String
bizId
)
{
this
.
bizId
=
bizId
;
}
public
Integer
getBizType
()
{
return
bizType
;
}
public
void
setBizType
(
Integer
bizType
)
{
this
.
bizType
=
bizType
;
}
}
}
haoban-manage3-api/src/main/java/com/gic/haoban/manage/api/dto/qdto/content/InteractRecordQDTO.java
0 → 100644
View file @
22f111f6
package
com
.
gic
.
haoban
.
manage
.
api
.
dto
.
qdto
.
content
;
import
com.gic.api.base.commons.BasePageInfo
;
/**
* @Author MUSI
* @Date 2023/3/29 1:11 PM
* @Description
* @Version
**/
public
class
InteractRecordQDTO
extends
BasePageInfo
{
/**
* 导购id
*/
private
String
clerkId
;
/**
* 会员id
*/
private
String
memberId
;
public
String
getClerkId
()
{
return
clerkId
;
}
public
void
setClerkId
(
String
clerkId
)
{
this
.
clerkId
=
clerkId
;
}
public
String
getMemberId
()
{
return
memberId
;
}
public
void
setMemberId
(
String
memberId
)
{
this
.
memberId
=
memberId
;
}
}
haoban-manage3-api/src/main/java/com/gic/haoban/manage/api/enums/content/InteractRecordExtendInfoDTO.java
0 → 100644
View file @
22f111f6
package
com
.
gic
.
haoban
.
manage
.
api
.
enums
.
content
;
import
java.io.Serializable
;
import
java.math.BigDecimal
;
import
java.util.Date
;
import
java.util.List
;
/**
* @Author MUSI
* @Date 2023/3/29 1:08 PM
* @Description
* @Version
**/
public
class
InteractRecordExtendInfoDTO
implements
Serializable
{
private
static
final
long
serialVersionUID
=
1577766149535235456L
;
/**
* 订单编号
*/
private
String
orderNumber
;
/**
* 订单创建时间
*/
private
Date
orderCreateTime
;
/**
* 订单商品项总数
*/
private
Integer
orderTotalNum
;
/**
* 订单应付
*/
private
BigDecimal
orderPay
;
/**
* 订单实付
*/
private
BigDecimal
realPay
;
/**
* 失效商品数量
*/
private
Integer
invalidGoodsNum
;
/**
* 素材扩展商品信息
*/
private
List
<
ExtendGoodsInfo
>
extendGoodsInfos
;
public
static
class
ExtendGoodsInfo
{
/**
* 商品名称
*/
private
String
goodsName
;
/**
* 商品主图
*/
private
String
goodsImageUrl
;
/**
* 商品货号
*/
private
String
goodsCode
;
/**
* 商品规格 红色,S; 白色,S
*/
private
String
goodsNorm
;
/**
* 订单项数量
*/
private
Integer
orderNum
;
/**
* 商品单价
*/
private
BigDecimal
salePrice
;
public
String
getGoodsName
()
{
return
goodsName
;
}
public
void
setGoodsName
(
String
goodsName
)
{
this
.
goodsName
=
goodsName
;
}
public
String
getGoodsImageUrl
()
{
return
goodsImageUrl
;
}
public
void
setGoodsImageUrl
(
String
goodsImageUrl
)
{
this
.
goodsImageUrl
=
goodsImageUrl
;
}
public
String
getGoodsCode
()
{
return
goodsCode
;
}
public
void
setGoodsCode
(
String
goodsCode
)
{
this
.
goodsCode
=
goodsCode
;
}
public
String
getGoodsNorm
()
{
return
goodsNorm
;
}
public
void
setGoodsNorm
(
String
goodsNorm
)
{
this
.
goodsNorm
=
goodsNorm
;
}
public
Integer
getOrderNum
()
{
return
orderNum
;
}
public
void
setOrderNum
(
Integer
orderNum
)
{
this
.
orderNum
=
orderNum
;
}
public
BigDecimal
getSalePrice
()
{
return
salePrice
;
}
public
void
setSalePrice
(
BigDecimal
salePrice
)
{
this
.
salePrice
=
salePrice
;
}
}
public
String
getOrderNumber
()
{
return
orderNumber
;
}
public
void
setOrderNumber
(
String
orderNumber
)
{
this
.
orderNumber
=
orderNumber
;
}
public
Date
getOrderCreateTime
()
{
return
orderCreateTime
;
}
public
void
setOrderCreateTime
(
Date
orderCreateTime
)
{
this
.
orderCreateTime
=
orderCreateTime
;
}
public
Integer
getOrderTotalNum
()
{
return
orderTotalNum
;
}
public
void
setOrderTotalNum
(
Integer
orderTotalNum
)
{
this
.
orderTotalNum
=
orderTotalNum
;
}
public
BigDecimal
getOrderPay
()
{
return
orderPay
;
}
public
void
setOrderPay
(
BigDecimal
orderPay
)
{
this
.
orderPay
=
orderPay
;
}
public
BigDecimal
getRealPay
()
{
return
realPay
;
}
public
void
setRealPay
(
BigDecimal
realPay
)
{
this
.
realPay
=
realPay
;
}
public
Integer
getInvalidGoodsNum
()
{
return
invalidGoodsNum
;
}
public
void
setInvalidGoodsNum
(
Integer
invalidGoodsNum
)
{
this
.
invalidGoodsNum
=
invalidGoodsNum
;
}
public
List
<
ExtendGoodsInfo
>
getExtendGoodsInfos
()
{
return
extendGoodsInfos
;
}
public
void
setExtendGoodsInfos
(
List
<
ExtendGoodsInfo
>
extendGoodsInfos
)
{
this
.
extendGoodsInfos
=
extendGoodsInfos
;
}
}
haoban-manage3-api/src/main/java/com/gic/haoban/manage/api/enums/content/InteractRecordInfoDTO.java
0 → 100644
View file @
22f111f6
package
com
.
gic
.
haoban
.
manage
.
api
.
enums
.
content
;
import
java.io.Serializable
;
import
java.util.Date
;
/**
* @Author MUSI
* @Date 2023/3/29 12:46 PM
* @Description
* @Version
**/
public
class
InteractRecordInfoDTO
implements
Serializable
{
private
static
final
long
serialVersionUID
=
-
170525928535773136L
;
/**
* 互动记录id
*/
private
Long
interactRecordId
;
/**
* 记录描述
* 通过XXX访问XXXX
*/
private
String
recordDesc
;
/**
* 第几次访问
*/
private
Integer
times
;
/**
* 停留时长 单位秒
*/
private
Integer
durationTime
;
/**
* 记录生成时间
*/
private
Date
createTime
;
/**
* 记录事件类型
* 1浏览素材;2 查看商品; 3 购买商品
* 通过此类型区分 弹窗提示
*/
private
Integer
eventType
;
/**
* 业务id
*/
private
String
bizId
;
/**
* 扩展信息
*/
private
InteractRecordExtendInfoDTO
extendInfo
;
public
Long
getInteractRecordId
()
{
return
interactRecordId
;
}
public
void
setInteractRecordId
(
Long
interactRecordId
)
{
this
.
interactRecordId
=
interactRecordId
;
}
public
String
getRecordDesc
()
{
return
recordDesc
;
}
public
void
setRecordDesc
(
String
recordDesc
)
{
this
.
recordDesc
=
recordDesc
;
}
public
Integer
getTimes
()
{
return
times
;
}
public
void
setTimes
(
Integer
times
)
{
this
.
times
=
times
;
}
public
Integer
getDurationTime
()
{
return
durationTime
;
}
public
void
setDurationTime
(
Integer
durationTime
)
{
this
.
durationTime
=
durationTime
;
}
public
Date
getCreateTime
()
{
return
createTime
;
}
public
void
setCreateTime
(
Date
createTime
)
{
this
.
createTime
=
createTime
;
}
public
Integer
getEventType
()
{
return
eventType
;
}
public
void
setEventType
(
Integer
eventType
)
{
this
.
eventType
=
eventType
;
}
public
String
getBizId
()
{
return
bizId
;
}
public
void
setBizId
(
String
bizId
)
{
this
.
bizId
=
bizId
;
}
public
InteractRecordExtendInfoDTO
getExtendInfo
()
{
return
extendInfo
;
}
public
void
setExtendInfo
(
InteractRecordExtendInfoDTO
extendInfo
)
{
this
.
extendInfo
=
extendInfo
;
}
}
haoban-manage3-api/src/main/java/com/gic/haoban/manage/api/enums/content/MaterialInteractRecordEventType.java
0 → 100644
View file @
22f111f6
package
com
.
gic
.
haoban
.
manage
.
api
.
enums
.
content
;
/**
* @Author MUSI
* @Date 2023/3/29 2:00 PM
* @Description
* @Version
* 素材分享记录 枚举
**/
public
enum
MaterialInteractRecordEventType
{
VISIT_MATERIAL
(
1
,
"浏览了你分享的素材"
),
VISIT_PRODUCT
(
2
,
"浏览了你分享的素材,并查看了关联商品"
),
ORDER
(
3
,
"浏览了你分享的素材,并购买了商品"
);
MaterialInteractRecordEventType
(
Integer
code
,
String
desc
)
{
this
.
code
=
code
;
this
.
desc
=
desc
;
}
public
static
MaterialInteractRecordEventType
getInstance
(
Integer
code
)
{
if
(
code
==
null
)
{
return
null
;
}
for
(
MaterialInteractRecordEventType
value
:
values
())
{
if
(
value
.
code
.
equals
(
code
))
{
return
value
;
}
}
return
null
;
}
private
Integer
code
;
private
String
desc
;
public
Integer
getCode
()
{
return
code
;
}
public
void
setCode
(
Integer
code
)
{
this
.
code
=
code
;
}
public
String
getDesc
()
{
return
desc
;
}
public
void
setDesc
(
String
desc
)
{
this
.
desc
=
desc
;
}
}
haoban-manage3-api/src/main/java/com/gic/haoban/manage/api/enums/content/TriggerCustomerChannelType.java
View file @
22f111f6
package
com
.
gic
.
haoban
.
manage
.
api
.
enums
.
content
;
package
com
.
gic
.
haoban
.
manage
.
api
.
enums
.
content
;
import
java.util.Arrays
;
import
java.util.List
;
/**
/**
* @Author MUSI
* @Author MUSI
* @Date 2023/3/19 10:06 PM
* @Date 2023/3/19 10:06 PM
...
@@ -11,11 +14,28 @@ public enum TriggerCustomerChannelType {
...
@@ -11,11 +14,28 @@ public enum TriggerCustomerChannelType {
PYQ
(
1
,
"朋友圈"
),
PYQ
(
1
,
"朋友圈"
),
CUSTOMER_GROUP
(
2
,
"客户群"
),
CUSTOMER_GROUP
(
2
,
"客户群"
),
DIALOG_BOX
(
3
,
"对话框
/群发给客户
"
),
DIALOG_BOX
(
3
,
"对话框"
),
CONTENT_COPY
(
4
,
"复制文案"
),
CONTENT_COPY
(
4
,
"复制文案"
),
CONTENT_DOWNLOAD
(
5
,
"下载素材"
)
CONTENT_DOWNLOAD
(
5
,
"下载素材"
)
;
;
/**
* 展示文案的渠道类型
* @return
*/
public
static
List
<
Integer
>
showDescChannel
(){
return
Arrays
.
asList
(
PYQ
.
code
,
CUSTOMER_GROUP
.
code
,
DIALOG_BOX
.
code
);
}
public
static
TriggerCustomerChannelType
getInstance
(
Integer
code
)
{
for
(
TriggerCustomerChannelType
customerChannelType
:
values
())
{
if
(
customerChannelType
.
code
.
equals
(
code
))
{
return
customerChannelType
;
}
}
return
null
;
}
TriggerCustomerChannelType
(
Integer
code
,
String
desc
)
{
TriggerCustomerChannelType
(
Integer
code
,
String
desc
)
{
this
.
code
=
code
;
this
.
code
=
code
;
this
.
desc
=
desc
;
this
.
desc
=
desc
;
...
...
haoban-manage3-api/src/main/java/com/gic/haoban/manage/api/service/content/InteractRecordApiService.java
0 → 100644
View file @
22f111f6
package
com
.
gic
.
haoban
.
manage
.
api
.
service
.
content
;
import
com.gic.api.base.commons.Page
;
import
com.gic.api.base.commons.ServiceResponse
;
import
com.gic.haoban.manage.api.dto.qdto.content.InteractRecordQDTO
;
import
com.gic.haoban.manage.api.enums.content.InteractRecordInfoDTO
;
/**
* @Author MUSI
* @Date 2023/3/29 12:45 PM
* @Description
* @Version
* 互动记录
**/
public
interface
InteractRecordApiService
{
/**
* 查询互动记录
* @param interactRecordQDTO
* @return
*/
ServiceResponse
<
Page
<
InteractRecordInfoDTO
>>
queryInteractRecordList
(
InteractRecordQDTO
interactRecordQDTO
);
}
haoban-manage3-api/src/main/java/com/gic/haoban/manage/api/service/content/PotentialCustomerApiService.java
View file @
22f111f6
package
com
.
gic
.
haoban
.
manage
.
api
.
service
.
content
;
package
com
.
gic
.
haoban
.
manage
.
api
.
service
.
content
;
import
com.gic.api.base.commons.Page
;
import
com.gic.api.base.commons.Page
;
import
com.gic.
haoban.base.api.common
.ServiceResponse
;
import
com.gic.
api.base.commons
.ServiceResponse
;
import
com.gic.haoban.manage.api.dto.content.PotentialCustomerDTO
;
import
com.gic.haoban.manage.api.dto.content.PotentialCustomerDTO
;
import
com.gic.haoban.manage.api.dto.qdto.content.PotentialCustomerMarkRecordDTO
;
import
com.gic.haoban.manage.api.dto.qdto.content.PotentialCustomerMarkRecordDTO
;
import
com.gic.haoban.manage.api.dto.qdto.content.PotentialCustomerQDTO
;
import
com.gic.haoban.manage.api.dto.qdto.content.PotentialCustomerQDTO
;
...
...
haoban-manage3-service/pom.xml
View file @
22f111f6
...
@@ -180,6 +180,12 @@
...
@@ -180,6 +180,12 @@
<artifactId>
gic-sharding-sdk
</artifactId>
<artifactId>
gic-sharding-sdk
</artifactId>
<version>
4.0-SNAPSHOT
</version>
<version>
4.0-SNAPSHOT
</version>
</dependency>
</dependency>
<dependency>
<groupId>
com.gic
</groupId>
<artifactId>
gic-store-goods-api
</artifactId>
<version>
${gic-store-goods-api}
</version>
</dependency>
</dependencies>
</dependencies>
<build>
<build>
...
...
haoban-manage3-service/src/main/java/com/gic/haoban/manage/service/dao/mapper/content/TabHaobanInteractRecordMapper.java
View file @
22f111f6
...
@@ -2,6 +2,7 @@ package com.gic.haoban.manage.service.dao.mapper.content;
...
@@ -2,6 +2,7 @@ package com.gic.haoban.manage.service.dao.mapper.content;
import
com.gic.haoban.manage.service.entity.content.TabHaobanInteractRecord
;
import
com.gic.haoban.manage.service.entity.content.TabHaobanInteractRecord
;
import
com.gic.haoban.manage.service.entity.content.TabHaobanPotentialCustomer
;
import
com.gic.haoban.manage.service.entity.content.TabHaobanPotentialCustomer
;
import
com.gic.haoban.manage.service.pojo.qo.content.InteractRecordQO
;
import
org.apache.ibatis.annotations.Param
;
import
org.apache.ibatis.annotations.Param
;
import
org.springframework.data.domain.Pageable
;
import
org.springframework.data.domain.Pageable
;
...
@@ -89,5 +90,12 @@ public interface TabHaobanInteractRecordMapper {
...
@@ -89,5 +90,12 @@ public interface TabHaobanInteractRecordMapper {
*/
*/
TabHaobanInteractRecord
queryWithEnterpriseIdAndTraceId
(
@Param
(
"enterpriseId"
)
String
enterpriseId
,
@Param
(
"traceId"
)
String
traceId
);
TabHaobanInteractRecord
queryWithEnterpriseIdAndTraceId
(
@Param
(
"enterpriseId"
)
String
enterpriseId
,
@Param
(
"traceId"
)
String
traceId
);
/**
* 查询互动记录列表
* @param interactRecordQO
* @return
*/
List
<
TabHaobanInteractRecord
>
queryInteractRecordList
(
InteractRecordQO
interactRecordQO
);
}
}
haoban-manage3-service/src/main/java/com/gic/haoban/manage/service/dao/mapper/content/TabHaobanPotentialCustomerMapper.java
View file @
22f111f6
...
@@ -21,16 +21,15 @@ public interface TabHaobanPotentialCustomerMapper {
...
@@ -21,16 +21,15 @@ public interface TabHaobanPotentialCustomerMapper {
* @param id 主键
* @param id 主键
* @return 实例对象
* @return 实例对象
*/
*/
TabHaobanPotentialCustomer
queryById
(
Long
i
d
);
TabHaobanPotentialCustomer
queryById
(
@Param
(
"id"
)
Long
id
,
@Param
(
"clerkId"
)
String
clerkI
d
);
/**
/**
* 查询指定行数据
* 查询销售线索
*
* @param clerkId
* @param tabHaobanPotentialCustomer 查询条件
* @param memberId
* @param pageable 分页对象
* @return
* @return 对象列表
*/
*/
List
<
TabHaobanPotentialCustomer
>
queryAllByLimit
(
TabHaobanPotentialCustomer
tabHaobanPotentialCustomer
,
@Param
(
"pageable"
)
Pageable
pageable
);
TabHaobanPotentialCustomer
queryWithClerkIdAndMemberId
(
@Param
(
"clerkId"
)
String
clerkId
,
@Param
(
"memberId"
)
String
memberId
);
/**
/**
* 统计总行数
* 统计总行数
...
@@ -86,9 +85,7 @@ public interface TabHaobanPotentialCustomerMapper {
...
@@ -86,9 +85,7 @@ public interface TabHaobanPotentialCustomerMapper {
* @param potentialCustomerQO
* @param potentialCustomerQO
* @return
* @return
*/
*/
TabHaobanPotentialCustomer
queryPotentialCustomerList
(
PotentialCustomerQO
potentialCustomerQO
);
List
<
TabHaobanPotentialCustomer
>
queryPotentialCustomerList
(
PotentialCustomerQO
potentialCustomerQO
);
}
}
haoban-manage3-service/src/main/java/com/gic/haoban/manage/service/pojo/bo/content/InteractRecordBO.java
View file @
22f111f6
package
com
.
gic
.
haoban
.
manage
.
service
.
pojo
.
bo
.
content
;
package
com
.
gic
.
haoban
.
manage
.
service
.
pojo
.
bo
.
content
;
import
com.gic.haoban.manage.api.enums.content.InteractRecordExtendInfoDTO
;
import
lombok.Data
;
import
lombok.Data
;
import
java.util.Date
;
import
java.util.Date
;
...
@@ -15,9 +16,7 @@ import java.util.Date;
...
@@ -15,9 +16,7 @@ import java.util.Date;
public
class
InteractRecordBO
{
public
class
InteractRecordBO
{
private
Long
id
;
private
Long
id
;
/**
* 企业id
*/
private
String
enterpriseId
;
private
String
enterpriseId
;
/**
/**
* 会员id
* 会员id
...
@@ -32,6 +31,10 @@ public class InteractRecordBO {
...
@@ -32,6 +31,10 @@ public class InteractRecordBO {
*/
*/
private
String
clerkId
;
private
String
clerkId
;
/**
/**
* 埋点traceId
*/
private
String
traceId
;
/**
* 销售线索-业务id
* 销售线索-业务id
*/
*/
private
String
bizId
;
private
String
bizId
;
...
@@ -48,57 +51,37 @@ public class InteractRecordBO {
...
@@ -48,57 +51,37 @@ public class InteractRecordBO {
*/
*/
private
Integer
channelSource
;
private
Integer
channelSource
;
/**
/**
* 事件类型 1
访问素材;2访问商品; 3购买商品;
* 事件类型 1
浏览商品;2浏览并点击; 3浏览并查看; 4 浏览并购买; 5查看并购买
*/
*/
private
Integer
eventType
;
private
Integer
eventType
;
/**
/**
* 停留时长 单位秒
* 停留时长 单位秒
*/
*/
private
Integer
durationTime
;
private
Integer
durationTime
;
/**
/**
*
访问次数
*
第几次访问
*/
*/
private
Integer
times
;
private
Integer
times
;
/**
* 会员名称
*/
private
String
memberName
;
/**
* 会员昵称
*/
private
String
memberNickName
;
/**
* 会员手机号
*/
private
String
memberPhone
;
/**
* 成交数量
*/
private
Integer
dealRecordNum
;
/**
* 是否导购星标客户 1是; 0否
*/
private
Integer
starFlag
;
/**
* 是否看过 1 看过; 0未看过
*/
private
Integer
seeFlag
;
/**
* 最新访问时间
*/
private
Date
lastAccessTime
;
/**
/**
* 状态 1 删除; 0正常
* 状态 1 删除; 0正常
*/
*/
private
Integer
deleteFlag
;
private
Integer
deleteFlag
;
/**
/**
* 创建时间
* 创建时间
*/
*/
private
Date
createTime
;
private
Date
createTime
;
private
Date
updateTime
;
/**
/**
* 更新时间
* 记录描述
* 通过XXX访问XXXX
*/
*/
private
Date
updateTime
;
private
String
recordDesc
;
/**
* 扩展信息
*/
private
InteractRecordExtendInfoBO
extendInfo
;
}
}
haoban-manage3-service/src/main/java/com/gic/haoban/manage/service/pojo/bo/content/InteractRecordExtendInfoBO.java
0 → 100644
View file @
22f111f6
package
com
.
gic
.
haoban
.
manage
.
service
.
pojo
.
bo
.
content
;
import
lombok.Data
;
import
java.io.Serializable
;
import
java.math.BigDecimal
;
import
java.util.ArrayList
;
import
java.util.Date
;
import
java.util.List
;
/**
* @Author MUSI
* @Date 2023/3/29 2:27 PM
* @Description
* @Version
**/
@Data
public
class
InteractRecordExtendInfoBO
implements
Serializable
{
/**
* 浏览的商品id
*/
private
List
<
String
>
goodsIds
;
/**
* 订单编号
*/
private
String
orderNumber
;
/**
* 订单创建时间
*/
private
Date
orderCreateTime
;
/**
* 订单商品项总数
*/
private
Integer
orderTotalNum
;
/**
* 订单应付
*/
private
BigDecimal
orderPay
;
/**
* 订单实付
*/
private
BigDecimal
realPay
;
/**
* 失效商品数量
*/
private
Integer
invalidGoodsNum
;
/**
* 素材扩展商品信息
*/
private
List
<
ExtendGoodsInfo
>
extendGoodsInfos
;
@Data
public
static
class
ExtendGoodsInfo
{
/**
* 商品名称
*/
private
String
goodsName
;
/**
* 商品主图
*/
private
String
goodsImageUrl
;
/**
* 商品货号
*/
private
String
goodsCode
;
/**
* 商品规格 红色,S; 白色,S
*/
private
String
goodsNorm
;
/**
* 订单项数量
*/
private
Integer
orderNum
;
/**
* 商品单价
*/
private
BigDecimal
salePrice
;
}
public
static
InteractRecordExtendInfoBO
empty
()
{
InteractRecordExtendInfoBO
temp
=
new
InteractRecordExtendInfoBO
();
// 后续有操作 此处使用可修改类型
temp
.
setGoodsIds
(
new
ArrayList
<>());
return
temp
;
}
}
haoban-manage3-service/src/main/java/com/gic/haoban/manage/service/pojo/bo/content/context/InteractRecordMessageContext.java
0 → 100644
View file @
22f111f6
package
com
.
gic
.
haoban
.
manage
.
service
.
pojo
.
bo
.
content
.
context
;
import
cn.hutool.crypto.digest.MD5
;
import
com.gic.haoban.manage.api.enums.content.ShareBizType
;
import
com.gic.haoban.manage.service.pojo.bo.content.InteractRecordBO
;
import
com.gic.haoban.manage.service.pojo.bo.content.InteractRecordExtendInfoBO
;
import
com.gic.haoban.manage.service.pojo.bo.content.PotentialCustomerBO
;
import
com.gic.haoban.manage.service.pojo.bo.content.message.InteractRecordMessageBO
;
import
lombok.AllArgsConstructor
;
import
lombok.Data
;
import
org.apache.commons.lang3.StringUtils
;
import
org.springframework.beans.BeanUtils
;
import
java.util.Date
;
/**
* @Author MUSI
* @Date 2023/3/29 3:23 PM
* @Description
* @Version
**/
@Data
public
class
InteractRecordMessageContext
{
private
InteractRecordMessageBO
interactRecordMessageBO
;
/**
* 访问次数
*/
private
Integer
times
;
/**
* 冗余的会员信息
*/
private
MemberInfo
memberInfo
;
/**
* 成交过订单
*/
private
boolean
hasDeal
;
public
static
InteractRecordMessageContext
create
(
InteractRecordMessageBO
interactRecordMessageBO
)
{
InteractRecordMessageContext
context
=
new
InteractRecordMessageContext
();
context
.
setInteractRecordMessageBO
(
interactRecordMessageBO
);
return
context
;
}
/**
* 构建唯一key
*
* @return
*/
public
String
buildRecordKey
()
{
String
customerId
=
StringUtils
.
isNotBlank
(
interactRecordMessageBO
.
getMemberId
())
?
interactRecordMessageBO
.
getMemberId
()
:
interactRecordMessageBO
.
getUnionId
();
String
key
=
interactRecordMessageBO
.
getBusinessUUId
()
+
interactRecordMessageBO
.
getClerkId
()
+
interactRecordMessageBO
.
getMaterialId
()
+
customerId
;
return
MD5
.
create
().
digestHex
(
key
);
}
/**
* 获取客户id
*
* @return
*/
public
String
getCustomerId
()
{
if
(
StringUtils
.
isNotBlank
(
this
.
interactRecordMessageBO
.
getMemberId
()))
{
return
this
.
interactRecordMessageBO
.
getMemberId
();
}
return
this
.
interactRecordMessageBO
.
getUnionId
();
}
public
InteractRecordBO
build
()
{
if
(
this
.
interactRecordMessageBO
==
null
)
{
return
null
;
}
InteractRecordBO
temp
=
new
InteractRecordBO
();
temp
.
setEnterpriseId
(
this
.
interactRecordMessageBO
.
getEnterpriseId
());
temp
.
setMemberId
(
this
.
interactRecordMessageBO
.
getMemberId
());
temp
.
setUnionId
(
this
.
interactRecordMessageBO
.
getUnionId
());
temp
.
setClerkId
(
this
.
interactRecordMessageBO
.
getClerkId
());
temp
.
setStoreId
(
this
.
interactRecordMessageBO
.
getStoreId
());
temp
.
setChannelSource
(
this
.
interactRecordMessageBO
.
getChannelSource
());
temp
.
setEventType
(
this
.
interactRecordMessageBO
.
getEventType
());
temp
.
setDurationTime
(
this
.
interactRecordMessageBO
.
getDurationTime
());
temp
.
setBizType
(
ShareBizType
.
MATERIAL
.
getCode
());
temp
.
setBizId
(
this
.
interactRecordMessageBO
.
getMaterialId
()
+
""
);
temp
.
setTimes
(
this
.
times
);
temp
.
setTraceId
(
this
.
buildRecordKey
());
temp
.
setDeleteFlag
(
0
);
temp
.
setCreateTime
(
new
Date
());
temp
.
setUpdateTime
(
new
Date
());
temp
.
setExtendInfo
(
InteractRecordExtendInfoBO
.
empty
());
return
temp
;
}
/**
* 构建销售线索
*/
public
PotentialCustomerBO
buildPotentialCustomerBo
(
InteractRecordBO
interactRecordBO
){
PotentialCustomerBO
temp
=
new
PotentialCustomerBO
();
BeanUtils
.
copyProperties
(
interactRecordBO
,
temp
);
temp
.
setDeleteFlag
(
0
);
temp
.
setCreateTime
(
new
Date
());
temp
.
setUpdateTime
(
new
Date
());
temp
.
setStarFlag
(
0
);
temp
.
setDealRecordNum
(
this
.
hasDeal
?
1
:
0
);
temp
.
setLastAccessTime
(
new
Date
(
this
.
interactRecordMessageBO
.
getLastAccessTime
()));
if
(
this
.
memberInfo
!=
null
)
{
temp
.
setMemberName
(
this
.
memberInfo
.
memberName
);
temp
.
setMemberNickName
(
this
.
memberInfo
.
memberNickName
);
temp
.
setMemberPhone
(
this
.
memberInfo
.
memberPhone
);
}
return
temp
;
}
@Data
@AllArgsConstructor
public
static
class
MemberInfo
{
private
String
memberName
;
private
String
memberNickName
;
private
String
memberPhone
;
}
}
haoban-manage3-service/src/main/java/com/gic/haoban/manage/service/pojo/bo/content/message/InteractRecordBO.java
→
haoban-manage3-service/src/main/java/com/gic/haoban/manage/service/pojo/bo/content/message/InteractRecord
Message
BO.java
View file @
22f111f6
...
@@ -12,7 +12,7 @@ import java.util.List;
...
@@ -12,7 +12,7 @@ import java.util.List;
* @Version
* @Version
**/
**/
@Data
@Data
public
class
InteractRecordBO
implements
Serializable
{
public
class
InteractRecord
Message
BO
implements
Serializable
{
/**
/**
...
@@ -65,4 +65,9 @@ public class InteractRecordBO implements Serializable {
...
@@ -65,4 +65,9 @@ public class InteractRecordBO implements Serializable {
* 业务唯一标识
* 业务唯一标识
*/
*/
private
String
businessUUId
;
private
String
businessUUId
;
/**
* 访问时间
* 时间戳
*/
private
Long
lastAccessTime
;
}
}
haoban-manage3-service/src/main/java/com/gic/haoban/manage/service/pojo/qo/content/InteractRecordQO.java
0 → 100644
View file @
22f111f6
package
com
.
gic
.
haoban
.
manage
.
service
.
pojo
.
qo
.
content
;
import
com.gic.api.base.commons.BasePageInfo
;
import
lombok.Data
;
import
java.util.Date
;
/**
* @Author MUSI
* @Date 2023/3/29 12:33 PM
* @Description
* @Version
**/
@Data
public
class
InteractRecordQO
extends
BasePageInfo
{
/**
* 导购id
*/
private
String
clerkId
;
/**
* 会员id
*/
private
String
memberId
;
/**
*
*/
private
String
unionId
;
/**
* 开始时间
*/
private
Date
startTime
;
}
haoban-manage3-service/src/main/java/com/gic/haoban/manage/service/pojo/qo/content/PotentialCustomerQO.java
View file @
22f111f6
...
@@ -29,6 +29,11 @@ public class PotentialCustomerQO extends BasePageInfo {
...
@@ -29,6 +29,11 @@ public class PotentialCustomerQO extends BasePageInfo {
private
String
clerkId
;
private
String
clerkId
;
/**
/**
* 会员id
*/
private
String
memberId
;
/**
* 搜索字段
* 搜索字段
*/
*/
private
String
search
;
private
String
search
;
...
...
haoban-manage3-service/src/main/java/com/gic/haoban/manage/service/service/content/InteractRecordService.java
View file @
22f111f6
package
com
.
gic
.
haoban
.
manage
.
service
.
service
.
content
;
package
com
.
gic
.
haoban
.
manage
.
service
.
service
.
content
;
import
com.gic.api.base.commons.Page
;
import
com.gic.haoban.manage.service.pojo.bo.content.InteractRecordBO
;
import
com.gic.haoban.manage.service.pojo.bo.content.InteractRecordBO
;
import
com.gic.haoban.manage.service.pojo.qo.content.InteractRecordQO
;
/**
/**
* 互动记录明细(TabHaobanInteractRecord)表服务接口
* 互动记录明细(TabHaobanInteractRecord)表服务接口
...
@@ -16,5 +18,26 @@ public interface InteractRecordService {
...
@@ -16,5 +18,26 @@ public interface InteractRecordService {
* @param traceId
* @param traceId
* @return
* @return
*/
*/
InteractRecordBO
queryInteractInfo
(
String
enterpriseId
,
String
traceId
);
InteractRecordBO
queryWithInteractInfo
(
String
enterpriseId
,
String
traceId
);
/**
* 互动记录查询
* @param interactRecordQO
* @return
*/
Page
<
InteractRecordBO
>
queryInteractRecordPage
(
InteractRecordQO
interactRecordQO
);
/**
* 统计总数
* @param interactRecordQO
* @return
*/
Integer
countInteractRecord
(
InteractRecordQO
interactRecordQO
);
/**
* 保存互动记录
* @param interactRecordBO
* @return
*/
Long
saveOrUpdateInteractRecord
(
InteractRecordBO
interactRecordBO
);
}
}
haoban-manage3-service/src/main/java/com/gic/haoban/manage/service/service/content/PotentialCustomerService.java
View file @
22f111f6
...
@@ -18,4 +18,34 @@ public interface PotentialCustomerService {
...
@@ -18,4 +18,34 @@ public interface PotentialCustomerService {
* @return
* @return
*/
*/
Page
<
PotentialCustomerBO
>
queryPotentialCustomerPage
(
PotentialCustomerQO
potentialCustomerQO
);
Page
<
PotentialCustomerBO
>
queryPotentialCustomerPage
(
PotentialCustomerQO
potentialCustomerQO
);
/**
* 查询详情
* @param clerkId
* @param potentialCustomerId
* @return
*/
PotentialCustomerBO
queryPotentialCustomerInfo
(
String
clerkId
,
Long
potentialCustomerId
);
/**
* 根据导购和会员id查询销售线索
* @param clerkId
* @param memberId
* @return
*/
PotentialCustomerBO
queryPotentialCustomerInfo
(
String
clerkId
,
String
memberId
);
/**
* 修改销售线索
* @param potentialCustomerBO
*/
void
markPotentialCustomer
(
PotentialCustomerBO
potentialCustomerBO
);
/**
* 更新保存
* @param potentialCustomerBO
* @return
*/
Long
saveOrUpdatePotentialCustomer
(
PotentialCustomerBO
potentialCustomerBO
);
}
}
haoban-manage3-service/src/main/java/com/gic/haoban/manage/service/service/content/adaptor/InteractRecordBuilder.java
0 → 100644
View file @
22f111f6
package
com
.
gic
.
haoban
.
manage
.
service
.
service
.
content
.
adaptor
;
import
com.alibaba.fastjson.JSON
;
import
com.alibaba.fastjson.TypeReference
;
import
com.gic.api.base.commons.ServiceResponse
;
import
com.gic.haoban.manage.api.enums.content.MaterialInteractRecordEventType
;
import
com.gic.haoban.manage.api.enums.content.TriggerCustomerChannelType
;
import
com.gic.haoban.manage.service.entity.content.TabHaobanInteractRecord
;
import
com.gic.haoban.manage.service.pojo.bo.content.InteractRecordExtendInfoBO
;
import
com.gic.store.goods.dto.goods.GoodsInfoSimpleDTO
;
import
com.gic.store.goods.dto.qdto.ErpGoodsInfoQDTO
;
import
com.gic.store.goods.enums.GoodsStatusEnum
;
import
com.gic.store.goods.service.GoodsInfoOutApiService
;
import
lombok.extern.slf4j.Slf4j
;
import
org.apache.commons.collections.CollectionUtils
;
import
org.apache.commons.lang3.StringUtils
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Component
;
import
java.util.Arrays
;
import
java.util.Collections
;
import
java.util.List
;
import
java.util.stream.Collectors
;
/**
* @Author MUSI
* @Date 2023/3/29 2:49 PM
* @Description
* @Version
**/
@Slf4j
@Component
public
class
InteractRecordBuilder
{
@Autowired
private
GoodsInfoOutApiService
goodsInfoOutApiService
;
/**
* 互动记录描述
*
* @param interactRecord
* @return
*/
public
String
buildDesc
(
TabHaobanInteractRecord
interactRecord
)
{
StringBuilder
stringBuilder
=
new
StringBuilder
();
if
(
TriggerCustomerChannelType
.
showDescChannel
().
contains
(
interactRecord
.
getChannelSource
()))
{
TriggerCustomerChannelType
channelType
=
TriggerCustomerChannelType
.
getInstance
(
interactRecord
.
getChannelSource
());
if
(
channelType
!=
null
)
{
stringBuilder
.
append
(
String
.
format
(
"通过[%s]"
,
channelType
.
getDesc
()));
}
}
MaterialInteractRecordEventType
instance
=
MaterialInteractRecordEventType
.
getInstance
(
interactRecord
.
getEventType
());
if
(
instance
!=
null
)
{
stringBuilder
.
append
(
instance
.
getDesc
());
}
return
stringBuilder
.
toString
();
}
/**
* 互动记录转换扩展信息
*
* @param interactRecord
* @return
*/
public
InteractRecordExtendInfoBO
convertExtendInfo
(
TabHaobanInteractRecord
interactRecord
)
{
if
(
interactRecord
==
null
)
{
log
.
info
(
"互动记录为空"
);
return
null
;
}
if
(
StringUtils
.
isBlank
(
interactRecord
.
getExtendInfo
()))
{
log
.
info
(
"互动记录扩展信息为空 {}"
,
interactRecord
.
getId
());
return
null
;
}
if
(
MaterialInteractRecordEventType
.
VISIT_MATERIAL
.
getCode
().
equals
(
interactRecord
.
getEventType
()))
{
// 浏览素材事件无扩展信息
log
.
info
(
"浏览素材事件无扩展信息 {}"
,
interactRecord
.
getId
());
return
null
;
}
InteractRecordExtendInfoBO
extendInfo
=
JSON
.
parseObject
(
interactRecord
.
getExtendInfo
(),
new
TypeReference
<
InteractRecordExtendInfoBO
>()
{
});
if
(
MaterialInteractRecordEventType
.
VISIT_PRODUCT
.
getCode
().
equals
(
interactRecord
.
getEventType
()))
{
// 浏览商品事件
List
<
String
>
visitGoodsIds
=
extendInfo
.
getGoodsIds
();
if
(
CollectionUtils
.
isEmpty
(
visitGoodsIds
))
{
return
null
;
}
// 拼接商品信息
List
<
InteractRecordExtendInfoBO
.
ExtendGoodsInfo
>
extendGoodsInfos
=
this
.
convertGoodsInfo
(
visitGoodsIds
,
interactRecord
.
getEnterpriseId
());
extendInfo
.
setExtendGoodsInfos
(
extendGoodsInfos
);
extendInfo
.
setInvalidGoodsNum
(
visitGoodsIds
.
size
()
-
extendGoodsInfos
.
size
());
return
extendInfo
;
}
return
extendInfo
;
}
private
List
<
InteractRecordExtendInfoBO
.
ExtendGoodsInfo
>
convertGoodsInfo
(
List
<
String
>
visitGoodsIds
,
String
enterpriseId
)
{
ErpGoodsInfoQDTO
search
=
new
ErpGoodsInfoQDTO
();
search
.
setEnterpriseId
(
enterpriseId
);
search
.
setGoodsIds
(
visitGoodsIds
);
search
.
setExcludeStatus
(
Arrays
.
asList
(
GoodsStatusEnum
.
DELETED
.
getCode
(),
GoodsStatusEnum
.
BACK
.
getCode
()));
ServiceResponse
<
List
<
GoodsInfoSimpleDTO
>>
serviceResponse
=
goodsInfoOutApiService
.
queryErpGoodsInfoWithIds
(
search
);
if
(!
serviceResponse
.
isSuccess
())
{
return
Collections
.
emptyList
();
}
return
serviceResponse
.
getResult
()
.
stream
()
.
map
(
item
->
{
InteractRecordExtendInfoBO
.
ExtendGoodsInfo
extendGoodsInfo
=
new
InteractRecordExtendInfoBO
.
ExtendGoodsInfo
();
extendGoodsInfo
.
setGoodsName
(
item
.
getGoodsName
());
extendGoodsInfo
.
setGoodsCode
(
item
.
getGoodsCode
());
extendGoodsInfo
.
setGoodsImageUrl
(
item
.
getGoodsImageUrl
());
// todo 商品价格 待订单迭代上线后再调整
// extendGoodsInfo.setSalePrice(item.getStatus());
return
extendGoodsInfo
;
})
.
collect
(
Collectors
.
toList
());
}
}
haoban-manage3-service/src/main/java/com/gic/haoban/manage/service/service/content/adaptor/InteractRecordMessageBuilder.java
0 → 100644
View file @
22f111f6
package
com
.
gic
.
haoban
.
manage
.
service
.
service
.
content
.
adaptor
;
import
com.gic.haoban.manage.service.pojo.bo.content.context.InteractRecordMessageContext
;
import
com.gic.haoban.manage.service.pojo.qo.content.InteractRecordQO
;
import
com.gic.haoban.manage.service.service.content.InteractRecordService
;
import
com.gic.member.api.dto.MemberDTO
;
import
com.gic.member.api.service.MemberService
;
import
lombok.extern.slf4j.Slf4j
;
import
org.apache.commons.lang3.StringUtils
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Component
;
/**
* @Author MUSI
* @Date 2023/3/29 3:48 PM
* @Description
* @Version
**/
@Slf4j
@Component
public
class
InteractRecordMessageBuilder
{
@Autowired
private
InteractRecordService
interactRecordService
;
@Autowired
private
MemberService
memberService
;
/**
* 计算互动记录的访问次数
* // 通过clerkId、memberId、materialId 查询之前存在的记录总数,本次是第几次访问 在之前的记录总数上加1
*
* @param context
*/
public
void
calcCustomerVisitTimes
(
InteractRecordMessageContext
context
)
{
InteractRecordQO
searchQo
=
new
InteractRecordQO
();
searchQo
.
setClerkId
(
context
.
getInteractRecordMessageBO
().
getClerkId
());
searchQo
.
setMemberId
(
context
.
getInteractRecordMessageBO
().
getMemberId
());
if
(
StringUtils
.
isBlank
(
searchQo
.
getMemberId
()))
{
searchQo
.
setUnionId
(
context
.
getInteractRecordMessageBO
().
getUnionId
());
}
searchQo
.
setPageSize
(
1
);
Integer
count
=
interactRecordService
.
countInteractRecord
(
searchQo
);
context
.
setTimes
(
count
+
1
);
}
/**
* 冗余会员信息
* @param context
*/
public
void
redundantMemberInfo
(
InteractRecordMessageContext
context
)
{
String
memberId
=
context
.
getInteractRecordMessageBO
().
getMemberId
();
if
(
StringUtils
.
isBlank
(
memberId
))
{
log
.
info
(
"互动记录冗余会员信息 会员不存在"
);
return
;
}
MemberDTO
memberDTO
=
memberService
.
queryMember
(
memberId
);
if
(
memberDTO
==
null
)
{
log
.
info
(
"查询会员信息为空 {}"
,
memberId
);
return
;
}
InteractRecordMessageContext
.
MemberInfo
memberInfo
=
new
InteractRecordMessageContext
.
MemberInfo
(
memberDTO
.
getMemberName
(),
memberDTO
.
getThirdNickname
(),
memberDTO
.
getPhoneNumber
());
context
.
setMemberInfo
(
memberInfo
);
}
/**
* 计算会员是否有过订单
* @param context
*/
public
void
calcHaveOrderNum
(
InteractRecordMessageContext
context
)
{
String
memberId
=
context
.
getInteractRecordMessageBO
().
getMemberId
();
if
(
StringUtils
.
isBlank
(
memberId
))
{
log
.
info
(
"互动记录冗余会员信息 会员id不存在"
);
return
;
}
// 查询会员全渠道订单
}
}
haoban-manage3-service/src/main/java/com/gic/haoban/manage/service/service/content/impl/InteractRecordServiceImpl.java
View file @
22f111f6
package
com
.
gic
.
haoban
.
manage
.
service
.
service
.
content
.
impl
;
package
com
.
gic
.
haoban
.
manage
.
service
.
service
.
content
.
impl
;
import
com.alibaba.fastjson.JSON
;
import
com.gic.api.base.commons.Page
;
import
com.gic.commons.util.DateUtil
;
import
com.gic.commons.util.UniqueIdUtils
;
import
com.gic.haoban.manage.service.dao.mapper.content.TabHaobanInteractRecordMapper
;
import
com.gic.haoban.manage.service.dao.mapper.content.TabHaobanInteractRecordMapper
;
import
com.gic.haoban.manage.service.entity.content.TabHaobanInteractRecord
;
import
com.gic.haoban.manage.service.entity.content.TabHaobanInteractRecord
;
import
com.gic.haoban.manage.service.pojo.bo.content.InteractRecordBO
;
import
com.gic.haoban.manage.service.pojo.bo.content.InteractRecordBO
;
import
com.gic.haoban.manage.service.pojo.qo.content.InteractRecordQO
;
import
com.gic.haoban.manage.service.service.content.InteractRecordService
;
import
com.gic.haoban.manage.service.service.content.InteractRecordService
;
import
com.gic.haoban.manage.service.service.content.adaptor.InteractRecordBuilder
;
import
com.github.pagehelper.PageHelper
;
import
lombok.extern.slf4j.Slf4j
;
import
lombok.extern.slf4j.Slf4j
;
import
org.apache.commons.collections.CollectionUtils
;
import
org.apache.commons.lang3.StringUtils
;
import
org.apache.commons.lang3.StringUtils
;
import
org.springframework.beans.BeanUtils
;
import
org.springframework.beans.BeanUtils
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Component
;
import
org.springframework.stereotype.Component
;
import
javax.annotation.Resource
;
import
javax.annotation.Resource
;
import
java.util.Date
;
import
java.util.List
;
import
java.util.stream.Collectors
;
/**
/**
* 互动记录明细(TabHaobanInteractRecord)表服务实现类
* 互动记录明细(TabHaobanInteractRecord)表服务实现类
...
@@ -23,6 +35,8 @@ public class InteractRecordServiceImpl implements InteractRecordService {
...
@@ -23,6 +35,8 @@ public class InteractRecordServiceImpl implements InteractRecordService {
@Resource
@Resource
private
TabHaobanInteractRecordMapper
tabHaobanInteractRecordMapper
;
private
TabHaobanInteractRecordMapper
tabHaobanInteractRecordMapper
;
@Autowired
private
InteractRecordBuilder
interactRecordBuilder
;
/**
/**
* 查询互动记录
* 查询互动记录
...
@@ -32,7 +46,7 @@ public class InteractRecordServiceImpl implements InteractRecordService {
...
@@ -32,7 +46,7 @@ public class InteractRecordServiceImpl implements InteractRecordService {
* @return
* @return
*/
*/
@Override
@Override
public
InteractRecordBO
queryInteractInfo
(
String
enterpriseId
,
String
traceId
)
{
public
InteractRecordBO
query
With
InteractInfo
(
String
enterpriseId
,
String
traceId
)
{
if
(
StringUtils
.
isAnyBlank
(
enterpriseId
,
traceId
))
{
if
(
StringUtils
.
isAnyBlank
(
enterpriseId
,
traceId
))
{
return
null
;
return
null
;
...
@@ -46,4 +60,84 @@ public class InteractRecordServiceImpl implements InteractRecordService {
...
@@ -46,4 +60,84 @@ public class InteractRecordServiceImpl implements InteractRecordService {
BeanUtils
.
copyProperties
(
interactRecord
,
temp
);
BeanUtils
.
copyProperties
(
interactRecord
,
temp
);
return
temp
;
return
temp
;
}
}
/**
* 互动记录查询
*
* @param interactRecordQO
* @return
*/
@Override
public
Page
<
InteractRecordBO
>
queryInteractRecordPage
(
InteractRecordQO
interactRecordQO
)
{
// 默认查最近一年内的的数据
if
(
StringUtils
.
isBlank
(
interactRecordQO
.
getClerkId
()))
{
log
.
info
(
"queryInteractRecordPage 参数缺失"
);
return
new
Page
<>();
}
interactRecordQO
.
setStartTime
(
DateUtil
.
addNumForYear
(
new
Date
(),
-
1
));
PageHelper
.
startPage
(
interactRecordQO
.
getPageNum
(),
interactRecordQO
.
getPageSize
());
com
.
github
.
pagehelper
.
Page
<
TabHaobanInteractRecord
>
pageResult
=
(
com
.
github
.
pagehelper
.
Page
<
TabHaobanInteractRecord
>)
tabHaobanInteractRecordMapper
.
queryInteractRecordList
(
interactRecordQO
);
if
(
pageResult
==
null
||
CollectionUtils
.
isEmpty
(
pageResult
))
{
log
.
info
(
"查询互动记录数据为空 {}"
,
JSON
.
toJSONString
(
interactRecordQO
));
return
new
Page
<>();
}
Page
<
InteractRecordBO
>
result
=
new
Page
<>();
result
.
setTotalCount
((
int
)
pageResult
.
getTotal
());
List
<
InteractRecordBO
>
recordBos
=
pageResult
.
getResult
()
.
stream
()
.
map
(
item
->
{
InteractRecordBO
temp
=
new
InteractRecordBO
();
BeanUtils
.
copyProperties
(
item
,
temp
);
temp
.
setRecordDesc
(
this
.
interactRecordBuilder
.
buildDesc
(
item
));
temp
.
setExtendInfo
(
interactRecordBuilder
.
convertExtendInfo
(
item
));
return
temp
;
})
.
collect
(
Collectors
.
toList
());
result
.
setResult
(
recordBos
);
return
result
;
}
/**
* 统计总数
*
* @param interactRecordQO
* @return
*/
@Override
public
Integer
countInteractRecord
(
InteractRecordQO
interactRecordQO
)
{
interactRecordQO
.
setPageNum
(
1
);
interactRecordQO
.
setPageSize
(
1
);
PageHelper
.
startPage
(
interactRecordQO
.
getPageNum
(),
interactRecordQO
.
getPageSize
());
com
.
github
.
pagehelper
.
Page
<
TabHaobanInteractRecord
>
pageResult
=
(
com
.
github
.
pagehelper
.
Page
<
TabHaobanInteractRecord
>)
tabHaobanInteractRecordMapper
.
queryInteractRecordList
(
interactRecordQO
);
if
(
pageResult
==
null
||
CollectionUtils
.
isEmpty
(
pageResult
))
{
log
.
info
(
"查询互动记录数据为空 {}"
,
JSON
.
toJSONString
(
interactRecordQO
));
return
0
;
}
return
(
int
)
pageResult
.
getTotal
();
}
/**
* 保存互动记录
*
* @param interactRecordBO
* @return
*/
@Override
public
Long
saveOrUpdateInteractRecord
(
InteractRecordBO
interactRecordBO
)
{
TabHaobanInteractRecord
temp
=
new
TabHaobanInteractRecord
();
BeanUtils
.
copyProperties
(
interactRecordBO
,
temp
);
if
(
interactRecordBO
.
getExtendInfo
()
!=
null
)
{
temp
.
setExtendInfo
(
JSON
.
toJSONString
(
interactRecordBO
.
getExtendInfo
()));
}
if
(
interactRecordBO
.
getId
()
==
null
)
{
temp
.
setId
(
UniqueIdUtils
.
uniqueLong
());
tabHaobanInteractRecordMapper
.
insert
(
temp
);
}
else
{
tabHaobanInteractRecordMapper
.
update
(
temp
);
}
return
temp
.
getId
();
}
}
}
haoban-manage3-service/src/main/java/com/gic/haoban/manage/service/service/content/impl/PotentialCustomerServiceImpl.java
View file @
22f111f6
package
com
.
gic
.
haoban
.
manage
.
service
.
service
.
content
.
impl
;
package
com
.
gic
.
haoban
.
manage
.
service
.
service
.
content
.
impl
;
import
com.gic.api.base.commons.Page
;
import
com.gic.api.base.commons.Page
;
import
com.gic.haoban.common.utils.StringUtil
;
import
com.gic.commons.util.UniqueIdUtils
;
import
com.gic.haoban.common.utils.PageUtil
;
import
com.gic.haoban.manage.service.dao.mapper.content.TabHaobanPotentialCustomerMapper
;
import
com.gic.haoban.manage.service.dao.mapper.content.TabHaobanPotentialCustomerMapper
;
import
com.gic.haoban.manage.service.entity.content.TabHaobanPotentialCustomer
;
import
com.gic.haoban.manage.service.pojo.bo.content.PotentialCustomerBO
;
import
com.gic.haoban.manage.service.pojo.bo.content.PotentialCustomerBO
;
import
com.gic.haoban.manage.service.pojo.qo.content.PotentialCustomerQO
;
import
com.gic.haoban.manage.service.pojo.qo.content.PotentialCustomerQO
;
import
com.gic.haoban.manage.service.service.content.PotentialCustomerService
;
import
com.gic.haoban.manage.service.service.content.PotentialCustomerService
;
import
com.github.pagehelper.PageHelper
;
import
lombok.extern.slf4j.Slf4j
;
import
lombok.extern.slf4j.Slf4j
;
import
org.apache.commons.collections.CollectionUtils
;
import
org.apache.commons.lang3.StringUtils
;
import
org.apache.commons.lang3.StringUtils
;
import
org.springframework.beans.BeanUtils
;
import
org.springframework.stereotype.Component
;
import
org.springframework.stereotype.Component
;
import
javax.annotation.Resource
;
import
javax.annotation.Resource
;
import
java.util.Date
;
/**
/**
* 销售线索(TabHaobanPotentialCustomer)表服务实现类
* 销售线索(TabHaobanPotentialCustomer)表服务实现类
...
@@ -23,7 +29,7 @@ import javax.annotation.Resource;
...
@@ -23,7 +29,7 @@ import javax.annotation.Resource;
public
class
PotentialCustomerServiceImpl
implements
PotentialCustomerService
{
public
class
PotentialCustomerServiceImpl
implements
PotentialCustomerService
{
@Resource
@Resource
private
TabHaobanPotentialCustomerMapper
tabHaobanP
otentialCustomerMapper
;
private
TabHaobanPotentialCustomerMapper
p
otentialCustomerMapper
;
/**
/**
...
@@ -39,8 +45,87 @@ public class PotentialCustomerServiceImpl implements PotentialCustomerService {
...
@@ -39,8 +45,87 @@ public class PotentialCustomerServiceImpl implements PotentialCustomerService {
log
.
info
(
"参数缺失 {}"
,
potentialCustomerQO
.
getClerkId
());
log
.
info
(
"参数缺失 {}"
,
potentialCustomerQO
.
getClerkId
());
return
new
Page
<>();
return
new
Page
<>();
}
}
PageHelper
.
startPage
(
potentialCustomerQO
.
getPageNum
(),
potentialCustomerQO
.
getPageSize
());
com
.
github
.
pagehelper
.
Page
<
TabHaobanPotentialCustomer
>
pageResult
=
(
com
.
github
.
pagehelper
.
Page
<
TabHaobanPotentialCustomer
>)
potentialCustomerMapper
.
queryPotentialCustomerList
(
potentialCustomerQO
);
return
PageUtil
.
changePageHelperToCurrentPage
(
pageResult
,
PotentialCustomerBO
.
class
);
}
return
null
;
/**
* 查询详情
*
* @param clerkId
* @param potentialCustomerId
* @return
*/
@Override
public
PotentialCustomerBO
queryPotentialCustomerInfo
(
String
clerkId
,
Long
potentialCustomerId
)
{
if
(
StringUtils
.
isBlank
(
clerkId
))
{
return
null
;
}
TabHaobanPotentialCustomer
haobanPotentialCustomer
=
potentialCustomerMapper
.
queryById
(
potentialCustomerId
,
clerkId
);
if
(
haobanPotentialCustomer
==
null
)
{
return
null
;
}
PotentialCustomerBO
temp
=
new
PotentialCustomerBO
();
BeanUtils
.
copyProperties
(
haobanPotentialCustomer
,
temp
);
return
temp
;
}
/**
* 根据导购和会员id查询销售线索
*
* @param clerkId
* @param memberId
* @return
*/
@Override
public
PotentialCustomerBO
queryPotentialCustomerInfo
(
String
clerkId
,
String
memberId
)
{
TabHaobanPotentialCustomer
potentialCustomer
=
potentialCustomerMapper
.
queryWithClerkIdAndMemberId
(
clerkId
,
memberId
);
if
(
potentialCustomer
==
null
)
{
return
null
;
}
PotentialCustomerBO
temp
=
new
PotentialCustomerBO
();
BeanUtils
.
copyProperties
(
potentialCustomer
,
temp
);
return
temp
;
}
/**
* 标记销售线索为已读 或 星标客户
*
* @param potentialCustomerBO
*/
@Override
public
void
markPotentialCustomer
(
PotentialCustomerBO
potentialCustomerBO
)
{
if
(
potentialCustomerBO
.
getId
()
==
null
)
{
log
.
info
(
"参数缺失"
);
return
;
}
TabHaobanPotentialCustomer
temp
=
new
TabHaobanPotentialCustomer
();
temp
.
setId
(
potentialCustomerBO
.
getId
());
temp
.
setStarFlag
(
potentialCustomerBO
.
getStarFlag
());
temp
.
setSeeFlag
(
potentialCustomerBO
.
getSeeFlag
());
potentialCustomerMapper
.
update
(
temp
);
}
/**
* 更新保存
*
* @param potentialCustomerBO
* @return
*/
@Override
public
Long
saveOrUpdatePotentialCustomer
(
PotentialCustomerBO
potentialCustomerBO
)
{
TabHaobanPotentialCustomer
temp
=
new
TabHaobanPotentialCustomer
();
BeanUtils
.
copyProperties
(
potentialCustomerBO
,
temp
);
temp
.
setUpdateTime
(
new
Date
());
if
(
temp
.
getId
()
==
null
)
{
temp
.
setId
(
UniqueIdUtils
.
uniqueLong
());
potentialCustomerMapper
.
insert
(
temp
);
}
else
{
potentialCustomerMapper
.
update
(
temp
);
}
return
temp
.
getId
();
}
}
}
}
haoban-manage3-service/src/main/java/com/gic/haoban/manage/service/service/content/message/InteractRecordMessageService.java
View file @
22f111f6
package
com
.
gic
.
haoban
.
manage
.
service
.
service
.
content
.
message
;
package
com
.
gic
.
haoban
.
manage
.
service
.
service
.
content
.
message
;
import
com.gic.haoban.manage.service.pojo.bo.content.message.InteractRecordBO
;
import
com.gic.haoban.manage.api.enums.content.MaterialInteractRecordEventType
;
import
com.gic.haoban.manage.service.pojo.bo.content.InteractRecordBO
;
import
com.gic.haoban.manage.service.pojo.bo.content.InteractRecordExtendInfoBO
;
import
com.gic.haoban.manage.service.pojo.bo.content.PotentialCustomerBO
;
import
com.gic.haoban.manage.service.pojo.bo.content.context.InteractRecordMessageContext
;
import
com.gic.haoban.manage.service.pojo.bo.content.message.InteractRecordMessageBO
;
import
com.gic.haoban.manage.service.service.content.InteractRecordService
;
import
com.gic.haoban.manage.service.service.content.PotentialCustomerService
;
import
com.gic.haoban.manage.service.service.content.adaptor.InteractRecordMessageBuilder
;
import
lombok.extern.slf4j.Slf4j
;
import
lombok.extern.slf4j.Slf4j
;
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.stereotype.Component
;
import
org.springframework.stereotype.Component
;
import
java.util.Date
;
import
java.util.Optional
;
/**
/**
* @Author MUSI
* @Author MUSI
* @Date 2023/3/28 2:50 PM
* @Date 2023/3/28 2:50 PM
* @Description
* @Description
* @Version
* @Version 互动记录消息处理器
* 互动记录消息处理器
**/
**/
@Slf4j
@Slf4j
@Component
@Component
public
class
InteractRecordMessageService
{
public
class
InteractRecordMessageService
{
@Autowired
InteractRecordService
interactRecordService
;
@Autowired
InteractRecordMessageBuilder
interactRecordMessageBuilder
;
@Autowired
PotentialCustomerService
potentialCustomerService
;
/**
/**
* 处理互动记录
* 处理互动记录
* @param interactRecordBO
*
* @param interactRecordMessageBO
*/
*/
public
void
dealRecord
(
InteractRecord
BO
interactRecord
BO
)
{
public
void
dealRecord
(
InteractRecord
MessageBO
interactRecordMessage
BO
)
{
InteractRecordMessageContext
context
=
InteractRecordMessageContext
.
create
(
interactRecordMessageBO
);
// 参数是否完整
// 参数是否完整
// 根据businessId clerkId memberId materialId 构建唯一标识key
// 根据businessId clerkId memberId materialId 构建唯一标识key
String
recordKey
=
context
.
buildRecordKey
();
// 根据key 查询是否存在记录
// 根据key 查询是否存在记录
String
key
=
this
.
buildRecordKey
(
interactRecordBO
);
InteractRecordBO
interactRecordBO
=
interactRecordService
.
queryWithInteractInfo
(
interactRecordMessageBO
.
getEnterpriseId
(),
recordKey
);
if
(
interactRecordBO
==
null
)
{
// 新增
// 冗余会员信息
interactRecordMessageBuilder
.
redundantMemberInfo
(
context
);
// 查询会员是否有过成交 (是否存在订单)
interactRecordMessageBuilder
.
calcHaveOrderNum
(
context
);
// 计算访问次数
interactRecordMessageBuilder
.
calcCustomerVisitTimes
(
context
);
interactRecordBO
=
context
.
build
();
}
else
{
// 该key已存在 需要对之前的进行合并
// 修改访问类型
interactRecordBO
.
setUpdateTime
(
new
Date
());
Integer
durationTime
=
Optional
.
ofNullable
(
interactRecordBO
.
getDurationTime
()).
orElse
(
0
);
interactRecordBO
.
setDurationTime
(
durationTime
+
Optional
.
ofNullable
(
interactRecordMessageBO
.
getDurationTime
()).
orElse
(
0
));
// 事件类型
if
(
interactRecordBO
.
getEventType
()
<
interactRecordBO
.
getEventType
())
{
interactRecordBO
.
setEventType
(
interactRecordMessageBO
.
getEventType
());
}
}
// 新增
// 组装扩展信息
// 通过clerkId、memberId、materialId 查询之前存在的记录总数,本次是第几次访问 在之前的记录总数上加1
if
(
MaterialInteractRecordEventType
.
VISIT_PRODUCT
.
getCode
().
equals
(
interactRecordMessageBO
.
getEventType
()))
{
// 编辑
// 浏览商品
// 合并时间类型
if
(
CollectionUtils
.
isNotEmpty
(
interactRecordMessageBO
.
getGoodsIds
()))
{
//
if
(
interactRecordBO
.
getExtendInfo
()
==
null
){
interactRecordBO
.
setExtendInfo
(
InteractRecordExtendInfoBO
.
empty
());
}
interactRecordBO
.
getExtendInfo
().
getGoodsIds
().
addAll
(
interactRecordMessageBO
.
getGoodsIds
());
}
}
}
if
(
MaterialInteractRecordEventType
.
ORDER
.
getCode
().
equals
(
interactRecordMessageBO
.
getEventType
()))
{
// 下单
// 查询订单信息
String
orderId
=
interactRecordMessageBO
.
getOrderId
();
/**
}
* 构建唯一key
* @param interactRecordBO
interactRecordService
.
saveOrUpdateInteractRecord
(
interactRecordBO
);
* @return
*/
// 更新销售线索
private
String
buildRecordKey
(
InteractRecordBO
interactRecordBO
)
{
if
(
StringUtils
.
isNotBlank
(
interactRecordMessageBO
.
getMemberId
()))
{
String
customerId
=
StringUtils
.
isNotBlank
(
interactRecordBO
.
getMemberId
())
?
interactRecordBO
.
getMemberId
()
:
interactRecordBO
.
getUnionId
();
return
interactRecordBO
.
getBusinessUUId
()
+
interactRecordBO
.
getClerkId
()
+
interactRecordBO
.
getMaterialId
()
+
customerId
;
// 查询销售线索
PotentialCustomerBO
potentialCustomerBO
=
potentialCustomerService
.
queryPotentialCustomerInfo
(
interactRecordMessageBO
.
getClerkId
(),
interactRecordMessageBO
.
getMemberId
());
if
(
potentialCustomerBO
==
null
)
{
potentialCustomerBO
=
context
.
buildPotentialCustomerBo
(
interactRecordBO
);
}
// 最近访问时间
if
(
potentialCustomerBO
.
getLastAccessTime
().
before
(
new
Date
(
interactRecordMessageBO
.
getLastAccessTime
())))
{
potentialCustomerBO
.
setLastAccessTime
(
new
Date
(
interactRecordMessageBO
.
getLastAccessTime
()));
}
// 标记为未读
potentialCustomerBO
.
setSeeFlag
(
0
);
//
potentialCustomerBO
.
setStoreId
(
interactRecordBO
.
getStoreId
());
potentialCustomerBO
.
setBizId
(
interactRecordBO
.
getBizId
());
potentialCustomerBO
.
setEventType
(
interactRecordBO
.
getEventType
());
potentialCustomerBO
.
setChannelSource
(
interactRecordBO
.
getChannelSource
());
potentialCustomerBO
.
setEventType
(
interactRecordBO
.
getEventType
());
potentialCustomerBO
.
setDurationTime
(
interactRecordBO
.
getDurationTime
());
potentialCustomerBO
.
setTimes
(
interactRecordBO
.
getTimes
());
potentialCustomerService
.
saveOrUpdatePotentialCustomer
(
potentialCustomerBO
);
// 累计 该导购 + 时间段内 未读数量
}
}
}
}
}
haoban-manage3-service/src/main/java/com/gic/haoban/manage/service/service/out/impl/content/InteractRecordApiServiceImpl.java
0 → 100644
View file @
22f111f6
package
com
.
gic
.
haoban
.
manage
.
service
.
service
.
out
.
impl
.
content
;
import
com.alibaba.fastjson.JSON
;
import
com.gic.api.base.commons.Page
;
import
com.gic.api.base.commons.ServiceResponse
;
import
com.gic.haoban.manage.api.dto.qdto.content.InteractRecordQDTO
;
import
com.gic.haoban.manage.api.enums.content.InteractRecordExtendInfoDTO
;
import
com.gic.haoban.manage.api.enums.content.InteractRecordInfoDTO
;
import
com.gic.haoban.manage.api.service.content.InteractRecordApiService
;
import
com.gic.haoban.manage.service.pojo.bo.content.InteractRecordBO
;
import
com.gic.haoban.manage.service.pojo.qo.content.InteractRecordQO
;
import
com.gic.haoban.manage.service.service.content.InteractRecordService
;
import
lombok.extern.slf4j.Slf4j
;
import
org.apache.commons.collections.CollectionUtils
;
import
org.springframework.beans.BeanUtils
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Component
;
import
java.util.Collections
;
import
java.util.List
;
import
java.util.stream.Collectors
;
/**
* @Author MUSI
* @Date 2023/3/29 1:12 PM
* @Description
* @Version
**/
@Slf4j
@Component
(
"interactRecordApiService"
)
public
class
InteractRecordApiServiceImpl
implements
InteractRecordApiService
{
@Autowired
private
InteractRecordService
interactRecordService
;
/**
* 查询互动记录
*
* @param interactRecordQDTO
* @return
*/
@Override
public
ServiceResponse
<
Page
<
InteractRecordInfoDTO
>>
queryInteractRecordList
(
InteractRecordQDTO
interactRecordQDTO
)
{
Page
<
InteractRecordInfoDTO
>
result
=
new
Page
<>();
result
.
setTotalCount
(
0
);
result
.
setResult
(
Collections
.
emptyList
());
InteractRecordQO
searchQo
=
new
InteractRecordQO
();
BeanUtils
.
copyProperties
(
interactRecordQDTO
,
searchQo
);
Page
<
InteractRecordBO
>
pageResult
=
interactRecordService
.
queryInteractRecordPage
(
searchQo
);
if
(
pageResult
==
null
||
CollectionUtils
.
isEmpty
(
pageResult
.
getResult
()))
{
log
.
info
(
"查询结果为空 {}"
,
JSON
.
toJSONString
(
interactRecordQDTO
));
return
ServiceResponse
.
success
(
result
);
}
// 拼接描述
// 组装扩展信息
List
<
InteractRecordInfoDTO
>
recordInfos
=
pageResult
.
getResult
()
.
stream
()
.
map
(
item
->
{
InteractRecordInfoDTO
temp
=
new
InteractRecordInfoDTO
();
BeanUtils
.
copyProperties
(
item
,
temp
);
temp
.
setInteractRecordId
(
item
.
getId
());
if
(
item
.
getExtendInfo
()
!=
null
)
{
InteractRecordExtendInfoDTO
extendInfo
=
new
InteractRecordExtendInfoDTO
();
BeanUtils
.
copyProperties
(
item
.
getExtendInfo
(),
extendInfo
);
temp
.
setExtendInfo
(
extendInfo
);
}
return
temp
;
})
.
collect
(
Collectors
.
toList
());
result
.
setTotalCount
(
pageResult
.
getTotalCount
());
result
.
setResult
(
recordInfos
);
return
ServiceResponse
.
success
(
result
);
}
}
haoban-manage3-service/src/main/java/com/gic/haoban/manage/service/service/out/impl/content/PotentialCustomerApiServiceImpl.java
View file @
22f111f6
package
com
.
gic
.
haoban
.
manage
.
service
.
service
.
out
.
impl
.
content
;
package
com
.
gic
.
haoban
.
manage
.
service
.
service
.
out
.
impl
.
content
;
import
com.gic.api.base.commons.Page
;
import
com.gic.api.base.commons.Page
;
import
com.gic.
haoban.base.api.common
.ServiceResponse
;
import
com.gic.
api.base.commons
.ServiceResponse
;
import
com.gic.haoban.manage.api.dto.content.PotentialCustomerDTO
;
import
com.gic.haoban.manage.api.dto.content.PotentialCustomerDTO
;
import
com.gic.haoban.manage.api.dto.qdto.content.PotentialCustomerMarkRecordDTO
;
import
com.gic.haoban.manage.api.dto.qdto.content.PotentialCustomerMarkRecordDTO
;
import
com.gic.haoban.manage.api.dto.qdto.content.PotentialCustomerQDTO
;
import
com.gic.haoban.manage.api.dto.qdto.content.PotentialCustomerQDTO
;
import
com.gic.haoban.manage.api.service.content.PotentialCustomerApiService
;
import
com.gic.haoban.manage.api.service.content.PotentialCustomerApiService
;
import
com.gic.haoban.manage.service.pojo.bo.content.PotentialCustomerBO
;
import
com.gic.haoban.manage.service.pojo.qo.content.PotentialCustomerQO
;
import
com.gic.haoban.manage.service.service.content.PotentialCustomerService
;
import
com.gic.haoban.manage.service.service.content.PotentialCustomerService
;
import
org.apache.commons.collections.CollectionUtils
;
import
org.springframework.beans.BeanUtils
;
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.List
;
import
java.util.stream.Collectors
;
/**
/**
* @Author MUSI
* @Author MUSI
* @Date 2023/3/29 10:00 AM
* @Date 2023/3/29 10:00 AM
...
@@ -30,7 +37,24 @@ public class PotentialCustomerApiServiceImpl implements PotentialCustomerApiServ
...
@@ -30,7 +37,24 @@ public class PotentialCustomerApiServiceImpl implements PotentialCustomerApiServ
*/
*/
@Override
@Override
public
ServiceResponse
<
Page
<
PotentialCustomerDTO
>>
queryPotentialCustomer
(
PotentialCustomerQDTO
potentialCustomerQDTO
)
{
public
ServiceResponse
<
Page
<
PotentialCustomerDTO
>>
queryPotentialCustomer
(
PotentialCustomerQDTO
potentialCustomerQDTO
)
{
return
null
;
PotentialCustomerQO
searchQO
=
new
PotentialCustomerQO
();
BeanUtils
.
copyProperties
(
potentialCustomerQDTO
,
searchQO
);
Page
<
PotentialCustomerBO
>
customerPage
=
potentialCustomerService
.
queryPotentialCustomerPage
(
searchQO
);
if
(
CollectionUtils
.
isEmpty
(
customerPage
.
getResult
()))
{
return
ServiceResponse
.
success
(
new
Page
<>());
}
Page
<
PotentialCustomerDTO
>
resultPage
=
new
Page
<>();
resultPage
.
setTotalCount
(
customerPage
.
getTotalCount
());
List
<
PotentialCustomerDTO
>
customerDTOS
=
customerPage
.
getResult
()
.
stream
()
.
map
(
item
->
{
PotentialCustomerDTO
temp
=
new
PotentialCustomerDTO
();
BeanUtils
.
copyProperties
(
item
,
temp
);
return
temp
;
})
.
collect
(
Collectors
.
toList
());
resultPage
.
setResult
(
customerDTOS
);
return
ServiceResponse
.
success
(
resultPage
);
}
}
/**
/**
...
@@ -41,6 +65,12 @@ public class PotentialCustomerApiServiceImpl implements PotentialCustomerApiServ
...
@@ -41,6 +65,12 @@ public class PotentialCustomerApiServiceImpl implements PotentialCustomerApiServ
*/
*/
@Override
@Override
public
ServiceResponse
<
Long
>
markPotentialCustomer
(
PotentialCustomerMarkRecordDTO
potentialCustomerMarkRecordDTO
)
{
public
ServiceResponse
<
Long
>
markPotentialCustomer
(
PotentialCustomerMarkRecordDTO
potentialCustomerMarkRecordDTO
)
{
return
null
;
PotentialCustomerBO
potentialCustomerBO
=
potentialCustomerService
.
queryPotentialCustomerInfo
(
potentialCustomerMarkRecordDTO
.
getClerkId
(),
potentialCustomerMarkRecordDTO
.
getPotentialCustomerId
());
if
(
potentialCustomerBO
==
null
)
{
return
ServiceResponse
.
failure
(
"-701"
,
"数据不存在"
);
}
potentialCustomerService
.
markPotentialCustomer
(
potentialCustomerBO
);
return
ServiceResponse
.
success
(
potentialCustomerBO
.
getId
());
}
}
}
}
haoban-manage3-service/src/main/resources/applicationContext-conf.xml
View file @
22f111f6
...
@@ -8,7 +8,7 @@
...
@@ -8,7 +8,7 @@
<import
resource=
"classpath*:kafka-setting.xml"
/>
<import
resource=
"classpath*:kafka-setting.xml"
/>
<import
resource=
"classpath:dubbo-haoban-manage-service.xml"
/>
<import
resource=
"classpath:dubbo-haoban-manage-service.xml"
/>
<import
resource=
"classpath:dubbo-setting-test.xml"
/>
<import
resource=
"classpath:dubbo-setting-test.xml"
/>
<!-- <import resource="classpath:jdbc-haoban-manage-service.xml" />--
>
<import
resource=
"classpath:jdbc-haoban-manage-service.xml"
/
>
<import
resource=
"classpath*:jdbc-haoban-manage-service-sharding.xml"
/
>
<!-- <import resource="classpath*:jdbc-haoban-manage-service-sharding.xml" />--
>
<import
resource=
"classpath*:log-record-init.xml"
/>
<import
resource=
"classpath*:log-record-init.xml"
/>
</beans>
</beans>
\ No newline at end of file
haoban-manage3-service/src/main/resources/dubbo-haoban-manage-service.xml
View file @
22f111f6
...
@@ -210,5 +210,9 @@
...
@@ -210,5 +210,9 @@
ref=
"qywxGroupMsgTaskApiServiceImpl"
timeout=
"10000"
/>
ref=
"qywxGroupMsgTaskApiServiceImpl"
timeout=
"10000"
/>
<dubbo:service
interface=
"com.gic.haoban.manage.api.service.content.PotentialCustomerApiService"
<dubbo:service
interface=
"com.gic.haoban.manage.api.service.content.PotentialCustomerApiService"
ref=
"potentialCustomerApiService"
timeout=
"10000"
/>
ref=
"potentialCustomerApiService"
timeout=
"10000"
/>
<dubbo:service
interface=
"com.gic.haoban.manage.api.service.content.InteractRecordApiService"
ref=
"interactRecordApiService"
timeout=
"10000"
/>
<dubbo:reference
interface=
"com.gic.store.goods.service.GoodsInfoOutApiService"
id=
"goodsInfoOutApiService"
timeout=
"10000"
retries=
"0"
check=
"false"
/>
</beans>
</beans>
\ No newline at end of file
haoban-manage3-service/src/main/resources/mapper/content/TabHaobanInteractRecordMapper.xml
View file @
22f111f6
...
@@ -257,5 +257,20 @@
...
@@ -257,5 +257,20 @@
where enterprise_id = #{enterpriseId} and trace_id = #{traceId}
where enterprise_id = #{enterpriseId} and trace_id = #{traceId}
</select>
</select>
<select
id=
"queryInteractRecordList"
resultMap=
"TabHaobanInteractRecordMap"
>
select
<include
refid=
"baseSql"
/>
from tab_haoban_interact_record
<where>
clerk_id = #{clerkId} and delete_flag = 0
<if
test=
"memberId != null and memberId != ''"
>
and member_id = #{memberId}
</if>
<if
test=
"startTime != null"
>
and create_time >= #{startTime}
</if>
</where>
order by id desc
</select>
</mapper>
</mapper>
haoban-manage3-service/src/main/resources/mapper/content/TabHaobanPotentialCustomerMapper.xml
View file @
22f111f6
...
@@ -77,82 +77,7 @@
...
@@ -77,82 +77,7 @@
create_time,
create_time,
update_time
update_time
from tab_haoban_potential_customer
from tab_haoban_potential_customer
where id = #{id}
where id = #{id} and clerk_id = #{clerkId} and delete_flag = 0
</select>
<!--查询指定行数据-->
<select
id=
"queryAllByLimit"
resultMap=
"TabHaobanPotentialCustomerMap"
>
select
id, enterprise_id, member_id, union_id, clerk_id, biz_id, biz_type, store_id, channel_source, event_type,
duration_time, member_name, member_nick_name, member_phone, deal_record_num, star_flag, see_flag,
last_access_time, delete_flag, create_time, update_time
from tab_haoban_potential_customer
<where>
<if
test=
"id != null"
>
and id = #{id}
</if>
<if
test=
"enterpriseId != null and enterpriseId != ''"
>
and enterprise_id = #{enterpriseId}
</if>
<if
test=
"memberId != null and memberId != ''"
>
and member_id = #{memberId}
</if>
<if
test=
"unionId != null and unionId != ''"
>
and union_id = #{unionId}
</if>
<if
test=
"clerkId != null and clerkId != ''"
>
and clerk_id = #{clerkId}
</if>
<if
test=
"bizId != null and bizId != ''"
>
and biz_id = #{bizId}
</if>
<if
test=
"bizType != null"
>
and biz_type = #{bizType}
</if>
<if
test=
"storeId != null and storeId != ''"
>
and store_id = #{storeId}
</if>
<if
test=
"channelSource != null"
>
and channel_source = #{channelSource}
</if>
<if
test=
"eventType != null"
>
and event_type = #{eventType}
</if>
<if
test=
"durationTime != null"
>
and duration_time = #{durationTime}
</if>
<if
test=
"memberName != null and memberName != ''"
>
and member_name = #{memberName}
</if>
<if
test=
"memberNickName != null and memberNickName != ''"
>
and member_nick_name = #{memberNickName}
</if>
<if
test=
"memberPhone != null and memberPhone != ''"
>
and member_phone = #{memberPhone}
</if>
<if
test=
"dealRecordNum != null"
>
and deal_record_num = #{dealRecordNum}
</if>
<if
test=
"starFlag != null"
>
and star_flag = #{starFlag}
</if>
<if
test=
"seeFlag != null"
>
and see_flag = #{seeFlag}
</if>
<if
test=
"lastAccessTime != null"
>
and last_access_time = #{lastAccessTime}
</if>
<if
test=
"deleteFlag != null"
>
and delete_flag = #{deleteFlag}
</if>
<if
test=
"createTime != null"
>
and create_time = #{createTime}
</if>
<if
test=
"updateTime != null"
>
and update_time = #{updateTime}
</if>
</where>
limit #{pageable.offset}, #{pageable.pageSize}
</select>
</select>
<!--统计总行数-->
<!--统计总行数-->
...
@@ -228,24 +153,24 @@
...
@@ -228,24 +153,24 @@
<!--新增所有列-->
<!--新增所有列-->
<insert
id=
"insert"
keyProperty=
"id"
useGeneratedKeys=
"true"
>
<insert
id=
"insert"
keyProperty=
"id"
useGeneratedKeys=
"true"
>
insert into tab_haoban_potential_customer(enterprise_id, member_id, union_id, clerk_id, biz_id, biz_type,
insert into tab_haoban_potential_customer(
id,
enterprise_id, member_id, union_id, clerk_id, biz_id, biz_type,
store_id, channel_source, event_type, duration_time, member_name,
store_id, channel_source, event_type, duration_time,
times,
member_name,
member_nick_name, member_phone, deal_record_num, star_flag, see_flag,
member_nick_name, member_phone, deal_record_num, star_flag, see_flag,
last_access_time, delete_flag, create_time, update_time)
last_access_time, delete_flag, create_time, update_time)
values (#{enterpriseId}, #{memberId}, #{unionId}, #{clerkId}, #{bizId}, #{bizType}, #{storeId},
values (#{
id}, #{
enterpriseId}, #{memberId}, #{unionId}, #{clerkId}, #{bizId}, #{bizType}, #{storeId},
#{channelSource}, #{eventType}, #{durationTime}, #{memberName}, #{memberNickName}, #{memberPhone},
#{channelSource}, #{eventType}, #{durationTime}, #{
times},#{
memberName}, #{memberNickName}, #{memberPhone},
#{dealRecordNum}, #{starFlag}, #{seeFlag}, #{lastAccessTime}, #{deleteFlag}, #{createTime},
#{dealRecordNum}, #{starFlag}, #{seeFlag}, #{lastAccessTime}, #{deleteFlag}, #{createTime},
#{updateTime})
#{updateTime})
</insert>
</insert>
<insert
id=
"insertBatch"
keyProperty=
"id"
useGeneratedKeys=
"true"
>
<insert
id=
"insertBatch"
keyProperty=
"id"
useGeneratedKeys=
"true"
>
insert into tab_haoban_potential_customer(enterprise_id, member_id, union_id, clerk_id, biz_id, biz_type,
insert into tab_haoban_potential_customer(enterprise_id, member_id, union_id, clerk_id, biz_id, biz_type,
store_id, channel_source, event_type, duration_time, member_name, member_nick_name, member_phone,
store_id, channel_source, event_type, duration_time,
times,
member_name, member_nick_name, member_phone,
deal_record_num, star_flag, see_flag, last_access_time, delete_flag, create_time, update_time)
deal_record_num, star_flag, see_flag, last_access_time, delete_flag, create_time, update_time)
values
values
<foreach
collection=
"entities"
item=
"entity"
separator=
","
>
<foreach
collection=
"entities"
item=
"entity"
separator=
","
>
(#{entity.enterpriseId}, #{entity.memberId}, #{entity.unionId}, #{entity.clerkId}, #{entity.bizId},
(#{entity.enterpriseId}, #{entity.memberId}, #{entity.unionId}, #{entity.clerkId}, #{entity.bizId},
#{entity.bizType}, #{entity.storeId}, #{entity.channelSource}, #{entity.eventType}, #{entity.durationTime},
#{entity.bizType}, #{entity.storeId}, #{entity.channelSource}, #{entity.eventType}, #{entity.durationTime},
#{entity.times},
#{entity.memberName}, #{entity.memberNickName}, #{entity.memberPhone}, #{entity.dealRecordNum},
#{entity.memberName}, #{entity.memberNickName}, #{entity.memberPhone}, #{entity.dealRecordNum},
#{entity.starFlag}, #{entity.seeFlag}, #{entity.lastAccessTime}, #{entity.deleteFlag}, #{entity.createTime},
#{entity.starFlag}, #{entity.seeFlag}, #{entity.lastAccessTime}, #{entity.deleteFlag}, #{entity.createTime},
#{entity.updateTime})
#{entity.updateTime})
...
@@ -254,12 +179,12 @@
...
@@ -254,12 +179,12 @@
<insert
id=
"insertOrUpdateBatch"
keyProperty=
"id"
useGeneratedKeys=
"true"
>
<insert
id=
"insertOrUpdateBatch"
keyProperty=
"id"
useGeneratedKeys=
"true"
>
insert into tab_haoban_potential_customer(enterprise_id, member_id, union_id, clerk_id, biz_id, biz_type,
insert into tab_haoban_potential_customer(enterprise_id, member_id, union_id, clerk_id, biz_id, biz_type,
store_id, channel_source, event_type, duration_time, member_name, member_nick_name, member_phone,
store_id, channel_source, event_type, duration_time,
times,
member_name, member_nick_name, member_phone,
deal_record_num, star_flag, see_flag, last_access_time, delete_flag, create_time, update_time)
deal_record_num, star_flag, see_flag, last_access_time, delete_flag, create_time, update_time)
values
values
<foreach
collection=
"entities"
item=
"entity"
separator=
","
>
<foreach
collection=
"entities"
item=
"entity"
separator=
","
>
(#{entity.enterpriseId}, #{entity.memberId}, #{entity.unionId}, #{entity.clerkId}, #{entity.bizId},
(#{entity.enterpriseId}, #{entity.memberId}, #{entity.unionId}, #{entity.clerkId}, #{entity.bizId},
#{entity.bizType}, #{entity.storeId}, #{entity.channelSource}, #{entity.eventType}, #{entity.durationTime},
#{entity.bizType}, #{entity.storeId}, #{entity.channelSource}, #{entity.eventType}, #{entity.durationTime},
#{times},
#{entity.memberName}, #{entity.memberNickName}, #{entity.memberPhone}, #{entity.dealRecordNum},
#{entity.memberName}, #{entity.memberNickName}, #{entity.memberPhone}, #{entity.dealRecordNum},
#{entity.starFlag}, #{entity.seeFlag}, #{entity.lastAccessTime}, #{entity.deleteFlag}, #{entity.createTime},
#{entity.starFlag}, #{entity.seeFlag}, #{entity.lastAccessTime}, #{entity.deleteFlag}, #{entity.createTime},
#{entity.updateTime})
#{entity.updateTime})
...
@@ -275,6 +200,7 @@
...
@@ -275,6 +200,7 @@
channel_source = values(channel_source),
channel_source = values(channel_source),
event_type = values(event_type),
event_type = values(event_type),
duration_time = values(duration_time),
duration_time = values(duration_time),
times = #{times},
member_name = values(member_name),
member_name = values(member_name),
member_nick_name = values(member_nick_name),
member_nick_name = values(member_nick_name),
member_phone = values(member_phone),
member_phone = values(member_phone),
...
@@ -321,6 +247,9 @@
...
@@ -321,6 +247,9 @@
<if
test=
"durationTime != null"
>
<if
test=
"durationTime != null"
>
duration_time = #{durationTime},
duration_time = #{durationTime},
</if>
</if>
<if
test=
"times != null"
>
times = #{times},
</if>
<if
test=
"memberName != null and memberName != ''"
>
<if
test=
"memberName != null and memberName != ''"
>
member_name = #{memberName},
member_name = #{memberName},
</if>
</if>
...
@@ -362,7 +291,7 @@
...
@@ -362,7 +291,7 @@
where id = #{id}
where id = #{id}
</delete>
</delete>
<s
ql
id=
"queryPotentialCustomerSql
"
>
<s
elect
id=
"queryPotentialCustomerList"
resultMap=
"TabHaobanPotentialCustomerMap
"
>
select customer.*
select customer.*
from tab_haoban_potential_customer customer
from tab_haoban_potential_customer customer
<if
test=
"hasMemberRelation != null"
>
<if
test=
"hasMemberRelation != null"
>
...
@@ -394,11 +323,12 @@
...
@@ -394,11 +323,12 @@
and customer.member_phone is not null
and customer.member_phone is not null
</if>
</if>
</where>
</where>
</sql>
</select>
<select
id=
"queryPotentialCustomerList"
resultMap=
"TabHaobanPotentialCustomerMap"
>
<select
id=
"queryWithClerkIdAndMemberId"
resultMap=
"TabHaobanPotentialCustomerMap"
>
select
<include
refid=
"baseSql"
/>
from tab_haoban_potential_customer
where clerk_id = #{clerkId} and delete_flag = 0 and member_id = #{memberId}
</select>
</select>
</mapper>
</mapper>
...
...
haoban-manage3-service/src/test/java/InteractRecordTest.java
0 → 100644
View file @
22f111f6
import
cn.hutool.crypto.digest.MD5
;
import
com.gic.haoban.manage.api.enums.content.MaterialInteractRecordEventType
;
import
com.gic.haoban.manage.api.enums.content.TriggerCustomerChannelType
;
import
com.gic.haoban.manage.service.pojo.bo.content.message.InteractRecordMessageBO
;
import
com.gic.haoban.manage.service.pojo.qo.content.InteractRecordQO
;
import
com.gic.haoban.manage.service.service.content.InteractRecordService
;
import
com.gic.haoban.manage.service.service.content.message.InteractRecordMessageService
;
import
org.junit.Test
;
import
org.junit.runner.RunWith
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.test.context.ContextConfiguration
;
import
org.springframework.test.context.junit4.SpringJUnit4ClassRunner
;
import
java.util.Collections
;
import
java.util.Date
;
import
java.util.UUID
;
/**
* @Author MUSI
* @Date 2023/3/29 3:16 PM
* @Description
* @Version
**/
@RunWith
(
SpringJUnit4ClassRunner
.
class
)
@ContextConfiguration
(
locations
=
{
"classpath:applicationContext-conf.xml"
})
public
class
InteractRecordTest
{
@Autowired
private
InteractRecordService
interactRecordService
;
@Autowired
private
InteractRecordMessageService
interactRecordMessageService
;
String
eid
=
"ff8080815dacd3a2015dacd3ef5c0000"
;
String
wxEid
=
"ca66a01b79474c40b3e7c7f93daf1a3b"
;
String
staffId
=
"e608b51b267e4943b87e222a343b4f25"
;
String
clerkId
=
"fbc508e395f846ef9005852c420e1c4f"
;
String
memberId
=
"ff8080818147efc8018148d1759903c8"
;
@Test
public
void
queryInteractPageTest
(){
InteractRecordQO
interactRecordQO
=
new
InteractRecordQO
();
interactRecordQO
.
setClerkId
(
staffId
);
interactRecordService
.
queryInteractRecordPage
(
interactRecordQO
);
}
@Test
public
void
dealRecordTest
(){
String
businessId
=
"UUID.randomUUID().toString()"
;
InteractRecordMessageBO
message
=
new
InteractRecordMessageBO
();
message
.
setClerkId
(
clerkId
);
message
.
setEnterpriseId
(
eid
);
message
.
setMemberId
(
memberId
);
message
.
setUnionId
(
memberId
);
message
.
setStoreId
(
"ff8080818499a54801849ce85f9f003f"
);
message
.
setMaterialId
(
"1232139123912"
);
message
.
setChannelSource
(
TriggerCustomerChannelType
.
PYQ
.
getCode
());
message
.
setEventType
(
MaterialInteractRecordEventType
.
VISIT_PRODUCT
.
getCode
());
message
.
setGoodsIds
(
Collections
.
singletonList
(
"fbc508e395f846ef9005852c420e1c23"
));
message
.
setDurationTime
(
2000
);
message
.
setBusinessUUId
(
businessId
);
message
.
setLastAccessTime
(
new
Date
().
getTime
());
interactRecordMessageService
.
dealRecord
(
message
);
}
@Test
public
void
test
(){
for
(
int
i
=
0
;
i
<
10
;
i
++)
{
System
.
out
.
println
(
MD5
.
create
().
digestHex
(
"song"
));
}
}
}
haoban-manage3-wx/src/main/java/com/gic/haoban/manage/web/controller/content/InteractRecordController.java
View file @
22f111f6
package
com
.
gic
.
haoban
.
manage
.
web
.
controller
.
content
;
package
com
.
gic
.
haoban
.
manage
.
web
.
controller
.
content
;
import
com.gic.api.base.commons.Page
;
import
com.gic.api.base.commons.Page
;
import
com.gic.api.base.commons.ServiceResponse
;
import
com.gic.commons.webapi.reponse.RestResponse
;
import
com.gic.commons.webapi.reponse.RestResponse
;
import
com.gic.content.api.dto.material.ContentMaterialBaseDTO
;
import
com.gic.haoban.manage.api.dto.qdto.content.InteractRecordQDTO
;
import
com.gic.haoban.manage.api.enums.content.InteractRecordInfoDTO
;
import
com.gic.haoban.manage.api.service.content.InteractRecordApiService
;
import
com.gic.haoban.manage.web.controller.content.adaptor.ContentMaterialAdaptor
;
import
com.gic.haoban.manage.web.qo.content.InteractRecordQO
;
import
com.gic.haoban.manage.web.qo.content.InteractRecordQO
;
import
com.gic.haoban.manage.web.vo.content.ContentMaterialInfoVO
;
import
com.gic.haoban.manage.web.vo.content.InteractRecordVO
;
import
com.gic.haoban.manage.web.vo.content.InteractRecordVO
;
import
lombok.extern.slf4j.Slf4j
;
import
lombok.extern.slf4j.Slf4j
;
import
org.springframework.web.bind.annotation.RequestBody
;
import
org.apache.commons.collections.CollectionUtils
;
import
org.springframework.beans.BeanUtils
;
import
org.springframework.beans.factory.annotation.Autowired
;
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.List
;
import
java.util.Map
;
import
java.util.stream.Collectors
;
/**
/**
* 好办-互动记录
* 好办-互动记录
**/
**/
...
@@ -17,13 +30,65 @@ import org.springframework.web.bind.annotation.RestController;
...
@@ -17,13 +30,65 @@ import org.springframework.web.bind.annotation.RestController;
@RequestMapping
(
path
=
"/interact/record"
)
@RequestMapping
(
path
=
"/interact/record"
)
public
class
InteractRecordController
{
public
class
InteractRecordController
{
@Autowired
InteractRecordApiService
interactRecordApiService
;
@Autowired
ContentMaterialAdaptor
contentMaterialAdaptor
;
/**
/**
* 会员互动记录列表
* 会员互动记录列表
*
* @return
* @return
*/
*/
@RequestMapping
(
path
=
"/list"
)
@RequestMapping
(
path
=
"/list"
)
public
RestResponse
<
Page
<
InteractRecordVO
>>
queryInteractRecordList
(
@RequestBody
InteractRecordQO
interactRecordQO
){
public
RestResponse
<
Page
<
InteractRecordVO
>>
queryInteractRecordList
(
InteractRecordQO
interactRecordQO
)
{
return
RestResponse
.
successResult
();
InteractRecordQDTO
searchQdto
=
new
InteractRecordQDTO
();
BeanUtils
.
copyProperties
(
interactRecordQO
,
searchQdto
);
ServiceResponse
<
Page
<
InteractRecordInfoDTO
>>
serviceResponse
=
interactRecordApiService
.
queryInteractRecordList
(
searchQdto
);
if
(!
serviceResponse
.
isSuccess
())
{
return
RestResponse
.
failure
(
serviceResponse
.
getCode
(),
serviceResponse
.
getMessage
());
}
if
(
CollectionUtils
.
isEmpty
(
serviceResponse
.
getResult
().
getResult
()))
{
return
RestResponse
.
successResult
(
new
Page
<>());
}
List
<
Long
>
materialIds
=
serviceResponse
.
getResult
()
.
getResult
()
.
stream
()
.
map
(
item
->
Long
.
parseLong
(
item
.
getBizId
()))
.
distinct
()
.
collect
(
Collectors
.
toList
());
Map
<
Long
,
ContentMaterialBaseDTO
>
materialBaseMap
=
contentMaterialAdaptor
.
queryMaterialInfoMap
(
interactRecordQO
.
getEnterpriseId
(),
materialIds
);
List
<
InteractRecordVO
>
interactRecordVos
=
serviceResponse
.
getResult
()
.
getResult
()
.
stream
()
.
map
(
item
->
{
InteractRecordVO
interactRecordVO
=
new
InteractRecordVO
();
BeanUtils
.
copyProperties
(
interactRecordVO
,
interactRecordVO
);
ContentMaterialBaseDTO
materialBaseInfo
=
materialBaseMap
.
get
(
Long
.
parseLong
(
item
.
getBizId
()));
if
(
materialBaseInfo
!=
null
)
{
ContentMaterialInfoVO
temp
=
new
ContentMaterialInfoVO
();
BeanUtils
.
copyProperties
(
materialBaseInfo
,
item
);
interactRecordVO
.
setContentMaterialInfoVO
(
temp
);
}
return
interactRecordVO
;
})
.
collect
(
Collectors
.
toList
());
Page
<
InteractRecordVO
>
result
=
new
Page
<>();
result
.
setTotalCount
(
serviceResponse
.
getResult
().
getTotalCount
());
result
.
setResult
(
interactRecordVos
);
return
RestResponse
.
successResult
(
result
);
}
}
// /**
// * 查询互动记录扩展信息
// * @param interactRecordQO
// * @return
// */
// @RequestMapping(path = "/relation/extend/info")
// public RestResponse<InteractRecordExtendInfoVO> queryInteractRecordRelationGoods(InteractRecordQO interactRecordQO) {
// return RestResponse.successResult();
// }
}
}
haoban-manage3-wx/src/main/java/com/gic/haoban/manage/web/controller/content/MaterialDataStaticsController.java
View file @
22f111f6
...
@@ -16,6 +16,7 @@ import com.gic.haoban.manage.web.qo.content.ContentMaterialBaseQO;
...
@@ -16,6 +16,7 @@ import com.gic.haoban.manage.web.qo.content.ContentMaterialBaseQO;
import
com.gic.haoban.manage.web.qo.content.statistics.MaterialAnalyzeDataQO
;
import
com.gic.haoban.manage.web.qo.content.statistics.MaterialAnalyzeDataQO
;
import
com.gic.haoban.manage.web.qo.content.statistics.MaterialReportQO
;
import
com.gic.haoban.manage.web.qo.content.statistics.MaterialReportQO
;
import
com.gic.haoban.manage.web.qo.content.statistics.MaterialStatisticsBaseQO
;
import
com.gic.haoban.manage.web.qo.content.statistics.MaterialStatisticsBaseQO
;
import
com.gic.haoban.manage.web.vo.content.statistics.MaterialAreaUsedDataVO
;
import
com.gic.haoban.manage.web.vo.content.statistics.MaterialClerkUsedDataVO
;
import
com.gic.haoban.manage.web.vo.content.statistics.MaterialClerkUsedDataVO
;
import
com.gic.haoban.manage.web.vo.content.statistics.MaterialDataOverviewVO
;
import
com.gic.haoban.manage.web.vo.content.statistics.MaterialDataOverviewVO
;
import
com.gic.haoban.manage.web.vo.content.statistics.MaterialIndexDataVO
;
import
com.gic.haoban.manage.web.vo.content.statistics.MaterialIndexDataVO
;
...
@@ -253,7 +254,7 @@ public class MaterialDataStaticsController {
...
@@ -253,7 +254,7 @@ public class MaterialDataStaticsController {
* @return
* @return
*/
*/
@RequestMapping
(
path
=
"/content/material/area/used/data"
)
@RequestMapping
(
path
=
"/content/material/area/used/data"
)
public
RestResponse
<
Material
Store
UsedDataVO
>
queryMaterialAreaUseReport
(
@RequestBody
MaterialReportQO
materialReportQO
)
{
public
RestResponse
<
Material
Area
UsedDataVO
>
queryMaterialAreaUseReport
(
@RequestBody
MaterialReportQO
materialReportQO
)
{
List
<
String
>
storeIds
=
new
ArrayList
<>();
List
<
String
>
storeIds
=
new
ArrayList
<>();
if
(
StringUtils
.
isBlank
(
materialReportQO
.
getStoreId
()))
{
if
(
StringUtils
.
isBlank
(
materialReportQO
.
getStoreId
()))
{
storeIds
=
clerkStoreAdaptor
.
queryClerkStoreIds
(
materialReportQO
.
getClerkId
(),
materialReportQO
.
getWxEnterpriseId
());
storeIds
=
clerkStoreAdaptor
.
queryClerkStoreIds
(
materialReportQO
.
getClerkId
(),
materialReportQO
.
getWxEnterpriseId
());
...
@@ -261,7 +262,7 @@ public class MaterialDataStaticsController {
...
@@ -261,7 +262,7 @@ public class MaterialDataStaticsController {
storeIds
.
add
(
materialReportQO
.
getStoreId
());
storeIds
.
add
(
materialReportQO
.
getStoreId
());
}
}
MaterialStoreUsedDataVO
materialStoreUsedDataVO
=
materialDataAdaptor
.
queryMaterialAreaOverviewData
(
materialReportQO
.
getEnterpriseId
(),
materialReportQO
.
getClerkId
(),
materialReportQO
.
getReportType
(),
storeIds
);
MaterialStoreUsedDataVO
materialStoreUsedDataVO
=
materialDataAdaptor
.
queryMaterialAreaOverviewData
(
materialReportQO
.
getEnterpriseId
(),
materialReportQO
.
getClerkId
(),
materialReportQO
.
getReportType
(),
storeIds
);
return
RestResponse
.
successResult
(
materialStoreUsedDataVO
);
return
RestResponse
.
successResult
();
}
}
...
...
haoban-manage3-wx/src/main/java/com/gic/haoban/manage/web/controller/content/PotentialCustomerController.java
View file @
22f111f6
package
com
.
gic
.
haoban
.
manage
.
web
.
controller
.
content
;
package
com
.
gic
.
haoban
.
manage
.
web
.
controller
.
content
;
import
com.gic.api.base.commons.Page
;
import
com.gic.api.base.commons.Page
;
import
com.gic.api.base.commons.ServiceResponse
;
import
com.gic.commons.webapi.reponse.RestResponse
;
import
com.gic.commons.webapi.reponse.RestResponse
;
import
com.gic.content.api.dto.material.ContentMaterialBaseDTO
;
import
com.gic.haoban.manage.api.dto.content.PotentialCustomerDTO
;
import
com.gic.haoban.manage.api.dto.qdto.content.PotentialCustomerMarkRecordDTO
;
import
com.gic.haoban.manage.api.dto.qdto.content.PotentialCustomerQDTO
;
import
com.gic.haoban.manage.api.enums.content.ShareBizType
;
import
com.gic.haoban.manage.api.service.content.PotentialCustomerApiService
;
import
com.gic.haoban.manage.web.controller.content.adaptor.ContentMaterialAdaptor
;
import
com.gic.haoban.manage.web.qo.content.potential.PotentialCustomerMarkRecordVO
;
import
com.gic.haoban.manage.web.qo.content.potential.PotentialCustomerMarkRecordVO
;
import
com.gic.haoban.manage.web.qo.content.potential.PotentialCustomerQO
;
import
com.gic.haoban.manage.web.qo.content.potential.PotentialCustomerQO
;
import
com.gic.haoban.manage.web.vo.content.ContentMaterialInfoVO
;
import
com.gic.haoban.manage.web.vo.content.potential.PotentialCustomerVO
;
import
com.gic.haoban.manage.web.vo.content.potential.PotentialCustomerVO
;
import
lombok.extern.slf4j.Slf4j
;
import
lombok.extern.slf4j.Slf4j
;
import
org.springframework.beans.BeanUtils
;
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.List
;
import
java.util.Map
;
import
java.util.stream.Collectors
;
/**
/**
* 好办小程序-销售线索
* 好办小程序-销售线索
**/
**/
...
@@ -18,6 +33,10 @@ import org.springframework.web.bind.annotation.RestController;
...
@@ -18,6 +33,10 @@ import org.springframework.web.bind.annotation.RestController;
@RequestMapping
(
path
=
"/potential/customer"
)
@RequestMapping
(
path
=
"/potential/customer"
)
public
class
PotentialCustomerController
{
public
class
PotentialCustomerController
{
@Autowired
private
PotentialCustomerApiService
potentialCustomerApiService
;
@Autowired
ContentMaterialAdaptor
contentMaterialAdaptor
;
/**
/**
* 销售线索列表
* 销售线索列表
*
*
...
@@ -26,9 +45,45 @@ public class PotentialCustomerController {
...
@@ -26,9 +45,45 @@ public class PotentialCustomerController {
*/
*/
@RequestMapping
(
path
=
"/list"
)
@RequestMapping
(
path
=
"/list"
)
public
RestResponse
<
Page
<
PotentialCustomerVO
>>
queryPotentialCustomerList
(
@RequestBody
PotentialCustomerQO
potentialCustomerQO
)
{
public
RestResponse
<
Page
<
PotentialCustomerVO
>>
queryPotentialCustomerList
(
@RequestBody
PotentialCustomerQO
potentialCustomerQO
)
{
return
RestResponse
.
successResult
();
PotentialCustomerQDTO
searchQDTO
=
new
PotentialCustomerQDTO
();
BeanUtils
.
copyProperties
(
potentialCustomerQO
,
searchQDTO
);
ServiceResponse
<
Page
<
PotentialCustomerDTO
>>
serviceResponse
=
potentialCustomerApiService
.
queryPotentialCustomer
(
searchQDTO
);
if
(!
serviceResponse
.
isSuccess
())
{
return
RestResponse
.
failure
(
serviceResponse
.
getCode
(),
serviceResponse
.
getMessage
());
}
List
<
PotentialCustomerDTO
>
customerDTOS
=
serviceResponse
.
getResult
().
getResult
();
List
<
Long
>
materialIds
=
customerDTOS
.
stream
()
.
filter
(
item
->
ShareBizType
.
MATERIAL
.
getCode
().
equals
(
item
.
getBizType
()))
.
map
(
item
->
Long
.
parseLong
(
item
.
getBizId
()))
.
collect
(
Collectors
.
toList
());
Map
<
Long
,
ContentMaterialBaseDTO
>
materialInfoMap
=
contentMaterialAdaptor
.
queryMaterialInfoMap
(
potentialCustomerQO
.
getEnterpriseId
(),
materialIds
);
List
<
PotentialCustomerVO
>
customerVOS
=
customerDTOS
.
stream
()
.
map
(
item
->
{
PotentialCustomerVO
temp
=
new
PotentialCustomerVO
();
BeanUtils
.
copyProperties
(
item
,
temp
);
temp
.
setPotentialCustomerId
(
item
.
getPotentialCustomerId
());
ContentMaterialBaseDTO
contentMaterialBaseDTO
=
materialInfoMap
.
get
(
Long
.
parseLong
(
item
.
getBizId
()));
if
(
contentMaterialBaseDTO
!=
null
)
{
ContentMaterialInfoVO
contentMaterialInfoVO
=
new
ContentMaterialInfoVO
();
BeanUtils
.
copyProperties
(
contentMaterialBaseDTO
,
contentMaterialInfoVO
);
temp
.
setContentMaterialInfoVO
(
contentMaterialInfoVO
);
}
return
temp
;
})
.
collect
(
Collectors
.
toList
());
Page
<
PotentialCustomerVO
>
result
=
new
Page
<>();
result
.
setTotalCount
(
serviceResponse
.
getResult
().
getTotalCount
());
result
.
setResult
(
customerVOS
);
return
RestResponse
.
successResult
(
result
);
}
}
/**
/**
* 标记销售线索为已看
* 标记销售线索为已看
*
*
...
@@ -37,6 +92,12 @@ public class PotentialCustomerController {
...
@@ -37,6 +92,12 @@ public class PotentialCustomerController {
@RequestMapping
(
path
=
"/mark/record/see"
)
@RequestMapping
(
path
=
"/mark/record/see"
)
public
RestResponse
<?>
markRecordSee
(
@RequestBody
PotentialCustomerMarkRecordVO
potentialCustomerMarkRecordVO
)
{
public
RestResponse
<?>
markRecordSee
(
@RequestBody
PotentialCustomerMarkRecordVO
potentialCustomerMarkRecordVO
)
{
PotentialCustomerMarkRecordDTO
markRecord
=
new
PotentialCustomerMarkRecordDTO
();
BeanUtils
.
copyProperties
(
potentialCustomerMarkRecordVO
,
markRecord
);
ServiceResponse
<
Long
>
serviceResponse
=
potentialCustomerApiService
.
markPotentialCustomer
(
markRecord
);
if
(!
serviceResponse
.
isSuccess
())
{
return
RestResponse
.
failure
(
serviceResponse
.
getCode
(),
serviceResponse
.
getMessage
());
}
return
RestResponse
.
successResult
();
return
RestResponse
.
successResult
();
}
}
...
@@ -47,6 +108,12 @@ public class PotentialCustomerController {
...
@@ -47,6 +108,12 @@ public class PotentialCustomerController {
*/
*/
@RequestMapping
(
path
=
"/mark/member/star"
)
@RequestMapping
(
path
=
"/mark/member/star"
)
public
RestResponse
<?>
markMemberStar
(
@RequestBody
PotentialCustomerMarkRecordVO
potentialCustomerMarkRecordVO
)
{
public
RestResponse
<?>
markMemberStar
(
@RequestBody
PotentialCustomerMarkRecordVO
potentialCustomerMarkRecordVO
)
{
PotentialCustomerMarkRecordDTO
markRecord
=
new
PotentialCustomerMarkRecordDTO
();
BeanUtils
.
copyProperties
(
potentialCustomerMarkRecordVO
,
markRecord
);
ServiceResponse
<
Long
>
serviceResponse
=
potentialCustomerApiService
.
markPotentialCustomer
(
markRecord
);
if
(!
serviceResponse
.
isSuccess
())
{
return
RestResponse
.
failure
(
serviceResponse
.
getCode
(),
serviceResponse
.
getMessage
());
}
return
RestResponse
.
successResult
();
return
RestResponse
.
successResult
();
}
}
}
}
haoban-manage3-wx/src/main/java/com/gic/haoban/manage/web/controller/content/adaptor/ContentMaterialAdaptor.java
0 → 100644
View file @
22f111f6
package
com
.
gic
.
haoban
.
manage
.
web
.
controller
.
content
.
adaptor
;
import
com.gic.api.base.commons.ServiceResponse
;
import
com.gic.content.api.dto.material.ContentMaterialBaseDTO
;
import
com.gic.content.api.service.ContentMaterialApiService
;
import
lombok.extern.slf4j.Slf4j
;
import
org.apache.commons.collections.CollectionUtils
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Component
;
import
java.util.Collections
;
import
java.util.List
;
import
java.util.Map
;
import
java.util.function.Function
;
import
java.util.stream.Collectors
;
/**
* @Author MUSI
* @Date 2023/3/29 11:39 AM
* @Description
* @Version
**/
@Slf4j
@Component
public
class
ContentMaterialAdaptor
{
@Autowired
private
ContentMaterialApiService
contentMaterialApiService
;
/**
* 查询素材基本信息
* @param enterpriseId
* @param materialIds
* @return
*/
public
Map
<
Long
,
ContentMaterialBaseDTO
>
queryMaterialInfoMap
(
String
enterpriseId
,
List
<
Long
>
materialIds
)
{
ServiceResponse
<
List
<
ContentMaterialBaseDTO
>>
serviceResponse
=
contentMaterialApiService
.
listMaterialIdByMaterialIdList
(
enterpriseId
,
materialIds
,
null
);
if
(!
serviceResponse
.
isSuccess
())
{
return
Collections
.
emptyMap
();
}
if
(
CollectionUtils
.
isEmpty
(
serviceResponse
.
getResult
()))
{
return
Collections
.
emptyMap
();
}
return
serviceResponse
.
getResult
()
.
stream
()
.
collect
(
Collectors
.
toMap
(
ContentMaterialBaseDTO:
:
getContentMaterialId
,
Function
.
identity
()));
}
}
haoban-manage3-wx/src/main/java/com/gic/haoban/manage/web/controller/content/adaptor/MaterialDataAdaptor.java
View file @
22f111f6
...
@@ -219,7 +219,7 @@ public class MaterialDataAdaptor {
...
@@ -219,7 +219,7 @@ public class MaterialDataAdaptor {
public
Page
<
MaterialPersonalUsedDataVO
>
queryMaterialClerkUsedReport
(
String
enterpriseId
,
String
clerkId
,
public
Page
<
MaterialPersonalUsedDataVO
>
queryMaterialClerkUsedReport
(
String
enterpriseId
,
String
clerkId
,
Integer
reportType
,
List
<
String
>
storeIds
,
Integer
reportType
,
List
<
String
>
storeIds
,
Integer
pageNo
,
Integer
pageSize
,
Integer
pageNo
,
Integer
pageSize
,
String
orderField
,
Integer
order
)
{
String
orderField
,
String
order
)
{
// 获取当前时间周期
// 获取当前时间周期
DateTime
startTime
=
null
;
DateTime
startTime
=
null
;
DateTime
endTime
=
null
;
DateTime
endTime
=
null
;
...
@@ -284,7 +284,7 @@ public class MaterialDataAdaptor {
...
@@ -284,7 +284,7 @@ public class MaterialDataAdaptor {
public
Page
<
MaterialStoreUsedDataVO
>
queryMaterialStoreUseReport
(
String
enterpriseId
,
String
clerkId
,
public
Page
<
MaterialStoreUsedDataVO
>
queryMaterialStoreUseReport
(
String
enterpriseId
,
String
clerkId
,
Integer
reportType
,
List
<
String
>
storeIds
,
Integer
reportType
,
List
<
String
>
storeIds
,
Integer
pageNo
,
Integer
pageSize
,
Integer
pageNo
,
Integer
pageSize
,
String
orderField
,
Integer
order
)
{
String
orderField
,
String
order
)
{
// 获取当前时间周期
// 获取当前时间周期
DateTime
startTime
=
null
;
DateTime
startTime
=
null
;
...
@@ -316,7 +316,7 @@ public class MaterialDataAdaptor {
...
@@ -316,7 +316,7 @@ public class MaterialDataAdaptor {
inlineParams
.
put
(
"storeId"
,
StringUtils
.
join
(
storeIds
,
","
));
inlineParams
.
put
(
"storeId"
,
StringUtils
.
join
(
storeIds
,
","
));
}
}
if
(
StringUtils
.
isNotBlank
(
orderField
))
{
if
(
StringUtils
.
isNotBlank
(
orderField
))
{
String
orderStr
=
new
Integer
(
1
).
equals
(
order
)
?
" asc "
:
" desc "
;
String
orderStr
=
" "
+
order
;
inlineParams
.
put
(
"orderByField"
,
orderField
+
orderStr
);
inlineParams
.
put
(
"orderByField"
,
orderField
+
orderStr
);
}
}
Map
<
String
,
Object
>
result
=
this
.
doHttp
(
JSON
.
toJSONString
(
params
),
apolloKey
);
Map
<
String
,
Object
>
result
=
this
.
doHttp
(
JSON
.
toJSONString
(
params
),
apolloKey
);
...
...
haoban-manage3-wx/src/main/java/com/gic/haoban/manage/web/qo/content/InteractRecordQO.java
View file @
22f111f6
...
@@ -31,4 +31,9 @@ public class InteractRecordQO extends BasePageInfo {
...
@@ -31,4 +31,9 @@ public class InteractRecordQO extends BasePageInfo {
* 导购id
* 导购id
*/
*/
private
String
clerkId
;
private
String
clerkId
;
/**
* 互动记录id
*/
private
Long
interactRecordId
;
}
}
haoban-manage3-wx/src/main/java/com/gic/haoban/manage/web/qo/content/statistics/MaterialReportQO.java
View file @
22f111f6
...
@@ -29,8 +29,8 @@ public class MaterialReportQO extends MaterialStatisticsBaseQO {
...
@@ -29,8 +29,8 @@ public class MaterialReportQO extends MaterialStatisticsBaseQO {
private
String
orderByField
;
private
String
orderByField
;
/**
/**
*
1 生序
*
asc
*
0 降序
*
desc
*/
*/
private
Integer
order
;
private
String
order
;
}
}
haoban-manage3-wx/src/main/java/com/gic/haoban/manage/web/vo/content/InteractRecordExtendInfoVO.java
0 → 100644
View file @
22f111f6
package
com
.
gic
.
haoban
.
manage
.
web
.
vo
.
content
;
import
lombok.Data
;
import
java.io.Serializable
;
import
java.math.BigDecimal
;
import
java.util.Date
;
import
java.util.List
;
/**
* @Author MUSI
* @Date 2023/3/29 12:53 PM
* @Description
* @Version
**/
@Data
public
class
InteractRecordExtendInfoVO
implements
Serializable
{
private
static
final
long
serialVersionUID
=
799914036029100258L
;
/**
* 订单编号
*/
private
String
orderNumber
;
/**
* 订单创建时间
*/
private
Date
orderCreateTime
;
/**
* 订单商品项总数
*/
private
Integer
orderTotalNum
;
/**
* 订单应付
*/
private
BigDecimal
orderPay
;
/**
* 订单实付
*/
private
BigDecimal
realPay
;
/**
* 失效商品数量
*/
private
Integer
invalidGoodsNum
;
/**
* 素材扩展商品信息
*/
private
List
<
ExtendGoodsInfo
>
extendGoodsInfos
;
@Data
public
static
class
ExtendGoodsInfo
{
/**
* 商品名称
*/
private
String
goodsName
;
/**
* 商品主图
*/
private
String
goodsImageUrl
;
/**
* 商品货号
*/
private
String
goodsCode
;
/**
* 商品规格 红色,S; 白色,S
*/
private
String
goodsNorm
;
/**
* 订单项数量
*/
private
Integer
orderNum
;
/**
* 商品单价
*/
private
BigDecimal
salePrice
;
}
}
haoban-manage3-wx/src/main/java/com/gic/haoban/manage/web/vo/content/InteractRecordVO.java
View file @
22f111f6
...
@@ -3,7 +3,6 @@ package com.gic.haoban.manage.web.vo.content;
...
@@ -3,7 +3,6 @@ package com.gic.haoban.manage.web.vo.content;
import
lombok.Data
;
import
lombok.Data
;
import
java.io.Serializable
;
import
java.io.Serializable
;
import
java.math.BigDecimal
;
import
java.util.Date
;
import
java.util.Date
;
import
java.util.List
;
import
java.util.List
;
...
@@ -16,6 +15,12 @@ import java.util.List;
...
@@ -16,6 +15,12 @@ import java.util.List;
@Data
@Data
public
class
InteractRecordVO
implements
Serializable
{
public
class
InteractRecordVO
implements
Serializable
{
/**
* 互动记录id
*/
private
Long
interactRecordId
;
/**
/**
* 记录描述
* 记录描述
* 通过XXX访问XXXX
* 通过XXX访问XXXX
...
@@ -40,6 +45,7 @@ public class InteractRecordVO implements Serializable {
...
@@ -40,6 +45,7 @@ public class InteractRecordVO implements Serializable {
/**
/**
* 记录事件类型
* 记录事件类型
* 1浏览素材;2 查看商品; 3 购买商品
* 1浏览素材;2 查看商品; 3 购买商品
* 通过此类型区分 弹窗提示
*/
*/
private
Integer
eventType
;
private
Integer
eventType
;
...
@@ -50,79 +56,7 @@ public class InteractRecordVO implements Serializable {
...
@@ -50,79 +56,7 @@ public class InteractRecordVO implements Serializable {
private
ContentMaterialInfoVO
contentMaterialInfoVO
;
private
ContentMaterialInfoVO
contentMaterialInfoVO
;
/**
/**
* 记录关联的商品信息
* 扩展信息
*/
private
List
<
SimpleGoodsInfoVO
>
relationGoodsInfo
;
/**
* 订单信息
*/
*/
private
OrderInfo
orderInfo
;
private
InteractRecordExtendInfoVO
extendInfo
;
@Data
public
static
class
OrderInfo
{
/**
* 订单编号
*/
private
String
orderNumber
;
/**
* 订单创建时间
*/
private
Date
orderCreateTime
;
/**
* 订单商品项总数
*/
private
Integer
orderTotalNum
;
/**
* 订单应付
*/
private
BigDecimal
orderPay
;
/**
* 订单实付
*/
private
BigDecimal
realPay
;
/**
* 订单商品信息
*/
private
List
<
OrderItemGoodsInfo
>
orderItemGoodsInfos
;
}
@Data
public
static
class
OrderItemGoodsInfo
{
/**
* 商品名称
*/
private
String
goodsName
;
/**
* 商品主图
*/
private
String
goodsImageUrl
;
/**
* 商品货号
*/
private
String
goodsCode
;
/**
* 商品规格
*/
private
String
goodsNorm
;
/**
* 订单项数量
*/
private
Integer
orderNum
;
/**
* 订单项单价
*/
private
BigDecimal
orderItemPrice
;
}
}
}
haoban-manage3-wx/src/main/java/com/gic/haoban/manage/web/vo/content/SimpleGoodsInfoVO.java
View file @
22f111f6
...
@@ -49,7 +49,7 @@ public class SimpleGoodsInfoVO implements Serializable {
...
@@ -49,7 +49,7 @@ public class SimpleGoodsInfoVO implements Serializable {
private
String
brandName
;
private
String
brandName
;
/**
/**
* 商品
销售
价格
* 商品价格
*/
*/
private
String
salePrice
;
private
String
salePrice
;
...
...
haoban-manage3-wx/src/main/java/com/gic/haoban/manage/web/vo/content/statistics/MaterialAreaUsedDataVO.java
View file @
22f111f6
package
com
.
gic
.
haoban
.
manage
.
web
.
vo
.
content
.
statistics
;
package
com
.
gic
.
haoban
.
manage
.
web
.
vo
.
content
.
statistics
;
import
lombok.Data
;
import
java.io.Serializable
;
import
java.io.Serializable
;
import
java.math.BigDecimal
;
import
java.math.BigDecimal
;
...
@@ -10,6 +12,7 @@ import java.math.BigDecimal;
...
@@ -10,6 +12,7 @@ import java.math.BigDecimal;
* @Version
* @Version
* 门店纬度使用数据
* 门店纬度使用数据
**/
**/
@Data
public
class
MaterialAreaUsedDataVO
implements
Serializable
{
public
class
MaterialAreaUsedDataVO
implements
Serializable
{
private
static
final
long
serialVersionUID
=
-
6389925840088323751L
;
private
static
final
long
serialVersionUID
=
-
6389925840088323751L
;
...
@@ -19,10 +22,20 @@ public class MaterialAreaUsedDataVO implements Serializable {
...
@@ -19,10 +22,20 @@ public class MaterialAreaUsedDataVO implements Serializable {
private
Integer
dayAvgUseMatlNum
;
private
Integer
dayAvgUseMatlNum
;
/**
/**
* | 日均使用素材导购数环比 |
*/
private
BigDecimal
dayAvgUseMatlNumRatio
;
/**
* 日均导购使用占比
* 日均导购使用占比
*/
*/
private
BigDecimal
dayAvgUseRate
;
private
BigDecimal
dayAvgUseRate
;
/***
* 日均使用导购占比环比
*/
private
BigDecimal
dayAvgUseBindProportionRatio
;
/**
/**
* 点击客户数
* 点击客户数
*/
*/
...
@@ -72,100 +85,4 @@ public class MaterialAreaUsedDataVO implements Serializable {
...
@@ -72,100 +85,4 @@ public class MaterialAreaUsedDataVO implements Serializable {
* 门店名称
* 门店名称
*/
*/
private
String
storeName
;
private
String
storeName
;
public
Integer
getDayAvgUseMatlNum
()
{
return
dayAvgUseMatlNum
;
}
public
void
setDayAvgUseMatlNum
(
Integer
dayAvgUseMatlNum
)
{
this
.
dayAvgUseMatlNum
=
dayAvgUseMatlNum
;
}
public
BigDecimal
getDayAvgUseRate
()
{
return
dayAvgUseRate
;
}
public
void
setDayAvgUseRate
(
BigDecimal
dayAvgUseRate
)
{
this
.
dayAvgUseRate
=
dayAvgUseRate
;
}
public
Integer
getClickUserNum
()
{
return
clickUserNum
;
}
public
void
setClickUserNum
(
Integer
clickUserNum
)
{
this
.
clickUserNum
=
clickUserNum
;
}
public
Integer
getConvUserNum
()
{
return
convUserNum
;
}
public
void
setConvUserNum
(
Integer
convUserNum
)
{
this
.
convUserNum
=
convUserNum
;
}
public
BigDecimal
getConvSalesNmt
()
{
return
convSalesNmt
;
}
public
void
setConvSalesNmt
(
BigDecimal
convSalesNmt
)
{
this
.
convSalesNmt
=
convSalesNmt
;
}
public
String
getStoreId
()
{
return
storeId
;
}
public
void
setStoreId
(
String
storeId
)
{
this
.
storeId
=
storeId
;
}
public
String
getStoreCode
()
{
return
storeCode
;
}
public
void
setStoreCode
(
String
storeCode
)
{
this
.
storeCode
=
storeCode
;
}
public
String
getStoreName
()
{
return
storeName
;
}
public
void
setStoreName
(
String
storeName
)
{
this
.
storeName
=
storeName
;
}
public
BigDecimal
getUserClickNumRatio
()
{
return
userClickNumRatio
;
}
public
void
setUserClickNumRatio
(
BigDecimal
userClickNumRatio
)
{
this
.
userClickNumRatio
=
userClickNumRatio
;
}
public
BigDecimal
getConvUserNumRatio
()
{
return
convUserNumRatio
;
}
public
void
setConvUserNumRatio
(
BigDecimal
convUserNumRatio
)
{
this
.
convUserNumRatio
=
convUserNumRatio
;
}
public
Integer
getConvSalesAmtRank
()
{
return
convSalesAmtRank
;
}
public
void
setConvSalesAmtRank
(
Integer
convSalesAmtRank
)
{
this
.
convSalesAmtRank
=
convSalesAmtRank
;
}
public
BigDecimal
getConvSalesAmtRatio
()
{
return
convSalesAmtRatio
;
}
public
void
setConvSalesAmtRatio
(
BigDecimal
convSalesAmtRatio
)
{
this
.
convSalesAmtRatio
=
convSalesAmtRatio
;
}
}
}
haoban-manage3-wx/src/main/java/com/gic/haoban/manage/web/vo/content/statistics/MaterialStoreUsedDataVO.java
View file @
22f111f6
...
@@ -23,11 +23,21 @@ public class MaterialStoreUsedDataVO implements Serializable {
...
@@ -23,11 +23,21 @@ public class MaterialStoreUsedDataVO implements Serializable {
private
Integer
dayAvgUseMatlNum
;
private
Integer
dayAvgUseMatlNum
;
/**
/**
* 日均导购使用占比
* 日均使用导购数环比
*/
private
BigDecimal
dayAvgUseMatlNumRatio
;
/**
* 日均使用素材导购占比
*/
*/
private
BigDecimal
dayAvgUseRate
;
private
BigDecimal
dayAvgUseRate
;
/**
/**
* 日均使用素材导购占比环比
*/
private
BigDecimal
dayAvgUseBindProportionRatio
;
/**
* 点击客户数
* 点击客户数
*/
*/
private
Integer
clickUserNum
;
private
Integer
clickUserNum
;
...
@@ -98,6 +108,11 @@ public class MaterialStoreUsedDataVO implements Serializable {
...
@@ -98,6 +108,11 @@ public class MaterialStoreUsedDataVO implements Serializable {
private
String
clerkName
;
private
String
clerkName
;
/**
/**
* 导购code
*/
private
String
clerkCode
;
/**
* 导购头像
* 导购头像
*/
*/
private
String
imageUrl
;
private
String
imageUrl
;
...
...
haoban-manage3-wx/src/main/webapp/WEB-INF/dubbo-haoban-manage-wx.xml
View file @
22f111f6
...
@@ -129,4 +129,6 @@
...
@@ -129,4 +129,6 @@
<dubbo:reference
interface=
"com.gic.haoban.manage.api.service.content.MaterialShareLogApiService"
id=
"materialShareLogApiService"
timeout=
"100000"
retries=
"0"
check=
"false"
/>
<dubbo:reference
interface=
"com.gic.haoban.manage.api.service.content.MaterialShareLogApiService"
id=
"materialShareLogApiService"
timeout=
"100000"
retries=
"0"
check=
"false"
/>
<dubbo:reference
interface=
"com.gic.haoban.manage.api.service.content.PotentialCustomerApiService"
id=
"potentialCustomerApiService"
timeout=
"100000"
retries=
"0"
check=
"false"
/>
<dubbo:reference
interface=
"com.gic.haoban.manage.api.service.content.InteractRecordApiService"
id=
"interactRecordApiService"
timeout=
"100000"
retries=
"0"
check=
"false"
/>
</beans>
</beans>
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