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
af017ea2
Commit
af017ea2
authored
Apr 10, 2023
by
songyinghui
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
feat: 订单延迟消费
parent
89c34cec
Show whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
83 additions
and
5 deletions
+83
-5
NoticeMessageCategoryTypeEnum.java
...aoban/manage/api/enums/NoticeMessageCategoryTypeEnum.java
+2
-2
MallOrderStatusChangeApiService.java
.../api/service/content/MallOrderStatusChangeApiService.java
+7
-0
OrderEventMqBO.java
...haoban/manage/service/pojo/bo/content/OrderEventMqBO.java
+6
-0
InteractRecordMessageBO.java
...vice/pojo/bo/content/message/InteractRecordMessageBO.java
+5
-0
InteractRecordMessageService.java
...service/content/message/InteractRecordMessageService.java
+17
-2
MallOrderStatusChangeApiServiceImpl.java
...out/impl/content/MallOrderStatusChangeApiServiceImpl.java
+46
-1
No files found.
haoban-manage3-api/src/main/java/com/gic/haoban/manage/api/enums/NoticeMessageCategoryTypeEnum.java
View file @
af017ea2
...
...
@@ -10,8 +10,8 @@ public enum NoticeMessageCategoryTypeEnum {
CUSTOMER
(
0
,
"客户相关"
),
TASK
(
1
,
"任务相关"
),
ACTIVITY
(
2
,
"活动相关"
),
MATERIAL
(
4
,
"素材相关"
),
POTENTIAL_CUSTOMER
(
5
,
"销售线索"
),
MATERIAL
(
6
,
"素材相关"
),
POTENTIAL_CUSTOMER
(
7
,
"销售线索"
),
OTHER
(
3
,
"其它"
),;
private
int
type
;
private
String
name
;
...
...
haoban-manage3-api/src/main/java/com/gic/haoban/manage/api/service/content/MallOrderStatusChangeApiService.java
View file @
af017ea2
...
...
@@ -18,4 +18,11 @@ public interface MallOrderStatusChangeApiService {
* @return
*/
ServiceResponse
<
Void
>
mallOrderStatusChange
(
String
params
);
/**
* 兼容订单事件先到达 埋点数据未到的情况
* @param params
* @return
*/
ServiceResponse
<
Void
>
orderEventDelay
(
String
params
);
}
haoban-manage3-service/src/main/java/com/gic/haoban/manage/service/pojo/bo/content/OrderEventMqBO.java
View file @
af017ea2
...
...
@@ -31,4 +31,10 @@ public class OrderEventMqBO implements Serializable {
* 结束状态
*/
private
Integer
toStatus
;
/**
* 消费次数
* 默认0
*/
private
Integer
times
;
}
haoban-manage3-service/src/main/java/com/gic/haoban/manage/service/pojo/bo/content/message/InteractRecordMessageBO.java
View file @
af017ea2
...
...
@@ -75,4 +75,9 @@ public class InteractRecordMessageBO implements Serializable {
* 临时字段
*/
private
String
refUrl
;
/**
* 消息消费次数
*/
private
Integer
times
;
}
haoban-manage3-service/src/main/java/com/gic/haoban/manage/service/service/content/message/InteractRecordMessageService.java
View file @
af017ea2
...
...
@@ -52,10 +52,13 @@ public class InteractRecordMessageService {
// 根据key 查询是否存在记录
InteractRecordBO
interactRecordBO
=
null
;
if
(
MaterialInteractRecordEventType
.
ORDER
.
getCode
().
equals
(
interactRecordMessageBO
.
getEventType
()))
{
interactRecordBO
=
interactRecordService
.
queryLeastRecord
(
interactRecordMessageBO
.
getEnterpriseId
(),
interactRecordMessageBO
.
getClerkId
(),
interactRecordMessageBO
.
getMaterialId
(),
interactRecordMessageBO
.
getMemberId
());
interactRecordBO
=
this
.
getInteractRecordBOWithOrderType
(
interactRecordMessageBO
);
if
(
interactRecordBO
==
null
)
{
log
.
info
(
"下单事件 互动记录为空 {}"
,
JSON
.
toJSONString
(
interactRecordMessageBO
));
if
(
interactRecordMessageBO
.
getTimes
()
==
null
||
interactRecordMessageBO
.
getTimes
()
<
60
)
{
// 兼容订单事件先到达的情况 延迟消费 60轮 每轮一分钟
}
return
;
}
}
else
{
...
...
@@ -142,4 +145,16 @@ public class InteractRecordMessageService {
RedisUtil
.
unlock
(
recordKey
);
}
}
/**
查询订单事件的互动记录
* @param interactRecordMessageBO
* @return
*/
public
InteractRecordBO
getInteractRecordBOWithOrderType
(
InteractRecordMessageBO
interactRecordMessageBO
)
{
InteractRecordBO
interactRecordBO
;
interactRecordBO
=
interactRecordService
.
queryLeastRecord
(
interactRecordMessageBO
.
getEnterpriseId
(),
interactRecordMessageBO
.
getClerkId
(),
interactRecordMessageBO
.
getMaterialId
(),
interactRecordMessageBO
.
getMemberId
());
return
interactRecordBO
;
}
}
haoban-manage3-service/src/main/java/com/gic/haoban/manage/service/service/out/impl/content/MallOrderStatusChangeApiServiceImpl.java
View file @
af017ea2
...
...
@@ -7,8 +7,10 @@ import com.gic.business.order.dto.ordermanage.OrderOutInfoDTO;
import
com.gic.business.order.enums.OrderEnum
;
import
com.gic.business.order.qdto.ordermanage.OrderInfoQDTO
;
import
com.gic.business.order.service.ordermanage.OrderInfoOutApiService
;
import
com.gic.commons.util.GICMQClientUtil
;
import
com.gic.haoban.manage.api.enums.content.MaterialInteractRecordEventType
;
import
com.gic.haoban.manage.api.service.content.MallOrderStatusChangeApiService
;
import
com.gic.haoban.manage.service.pojo.bo.content.InteractRecordBO
;
import
com.gic.haoban.manage.service.pojo.bo.content.OrderEventMqBO
;
import
com.gic.haoban.manage.service.pojo.bo.content.message.InteractRecordMessageBO
;
import
com.gic.haoban.manage.service.service.content.message.InteractRecordMessageService
;
...
...
@@ -33,6 +35,8 @@ public class MallOrderStatusChangeApiServiceImpl implements MallOrderStatusChang
@Autowired
InteractRecordMessageService
interactRecordMessageService
;
private
static
final
String
ORDER_EVENT_RETRY
=
"orderEventRetryMQ"
;
/***
* 订单状态变更事件
* @param params
...
...
@@ -78,13 +82,54 @@ public class MallOrderStatusChangeApiServiceImpl implements MallOrderStatusChang
interactRecordMessageBO
.
setEnterpriseId
(
orderEventMqBO
.
getEnterpriseId
());
interactRecordMessageBO
.
setMemberId
(
memberId
);
interactRecordMessageBO
.
setClerkId
(
clerkId
);
interactRecordMessageBO
.
setStoreId
(
""
);
interactRecordMessageBO
.
setMaterialId
(
contentMaterialId
);
interactRecordMessageBO
.
setEventType
(
MaterialInteractRecordEventType
.
ORDER
.
getCode
());
interactRecordMessageBO
.
setDurationTime
(
0
);
interactRecordMessageBO
.
setLastAccessTime
(
orderInfo
.
getCreateTime
().
getTime
());
interactRecordMessageBO
.
setOrderNumber
(
orderEventMqBO
.
getOrderNumber
());
interactRecordMessageBO
.
setTimes
(
orderEventMqBO
.
getTimes
());
InteractRecordBO
interactRecordBO
=
interactRecordMessageService
.
getInteractRecordBOWithOrderType
(
interactRecordMessageBO
);
if
(
interactRecordBO
==
null
)
{
log
.
info
(
"订单事件先到达,埋点事件延迟 >>> {}"
,
JSON
.
toJSONString
(
interactRecordMessageBO
));
if
(
orderEventMqBO
.
getTimes
()
!=
null
&&
orderEventMqBO
.
getTimes
()
>
60
)
{
log
.
info
(
"订单事件延迟60分钟仍未被消费,忽略 {}"
,
params
);
return
ServiceResponse
.
success
();
}
if
(
orderEventMqBO
.
getTimes
()
==
null
)
{
orderEventMqBO
.
setTimes
(
0
);
}
orderEventMqBO
.
setTimes
(
orderEventMqBO
.
getTimes
()
+
1
);
this
.
sendDelayMessage
(
orderEventMqBO
);
return
ServiceResponse
.
success
();
}
interactRecordMessageService
.
dealRecord
(
interactRecordMessageBO
);
return
ServiceResponse
.
success
();
}
/**
* 兼容订单事件先到达 埋点数据未到的情况
*
* @param params
* @return
*/
@Override
public
ServiceResponse
<
Void
>
orderEventDelay
(
String
params
)
{
// 处理埋点数据延迟的问题
log
.
info
(
"处理埋点数据延迟 订单事件先到的场景 >>>> {}"
,
params
);
this
.
mallOrderStatusChange
(
params
);
}
public
boolean
sendDelayMessage
(
OrderEventMqBO
orderEventMqBO
)
{
log
.
info
(
"[MallOrderStatusChangeApiService] 发送订单支付事件延迟处理消息 {}"
,
JSON
.
toJSONString
(
orderEventMqBO
));
try
{
GICMQClientUtil
.
getClientInstance
().
sendMessage
(
ORDER_EVENT_RETRY
,
JSON
.
toJSONString
(
orderEventMqBO
),
60
);
}
catch
(
Exception
e
)
{
log
.
info
(
"发送消息异常 {}"
,
JSON
.
toJSONString
(
orderEventMqBO
),
e
);
return
false
;
}
return
true
;
}
}
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