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
bb0a5042
Commit
bb0a5042
authored
Apr 02, 2023
by
songyinghui
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
feat: 会员id变动事件MQ
parent
61fda740
Hide whitespace changes
Inline
Side-by-side
Showing
12 changed files
with
277 additions
and
5 deletions
+277
-5
InteractRecordApiService.java
.../manage/api/service/content/InteractRecordApiService.java
+7
-0
TabHaobanInteractRecordMapper.java
...ice/dao/mapper/content/TabHaobanInteractRecordMapper.java
+16
-0
TabHaobanPotentialCustomerMapper.java
.../dao/mapper/content/TabHaobanPotentialCustomerMapper.java
+7
-0
MemberAttrChangeBO.java
...an/manage/service/pojo/bo/content/MemberAttrChangeBO.java
+50
-0
InteractRecordService.java
...manage/service/service/content/InteractRecordService.java
+14
-0
PotentialCustomerService.java
...age/service/service/content/PotentialCustomerService.java
+7
-0
InteractRecordBuilder.java
...ervice/service/content/adaptor/InteractRecordBuilder.java
+31
-4
InteractRecordServiceImpl.java
...rvice/service/content/impl/InteractRecordServiceImpl.java
+68
-0
PotentialCustomerServiceImpl.java
...ce/service/content/impl/PotentialCustomerServiceImpl.java
+14
-0
InteractRecordApiServiceImpl.java
...ervice/out/impl/content/InteractRecordApiServiceImpl.java
+38
-0
TabHaobanInteractRecordMapper.xml
...esources/mapper/content/TabHaobanInteractRecordMapper.xml
+19
-1
TabHaobanPotentialCustomerMapper.xml
...urces/mapper/content/TabHaobanPotentialCustomerMapper.xml
+6
-0
No files found.
haoban-manage3-api/src/main/java/com/gic/haoban/manage/api/service/content/InteractRecordApiService.java
View file @
bb0a5042
...
...
@@ -20,4 +20,11 @@ public interface InteractRecordApiService {
* @return
*/
ServiceResponse
<
Page
<
InteractRecordInfoDTO
>>
queryInteractRecordList
(
InteractRecordQDTO
interactRecordQDTO
);
/**
* 处理member信息变化的MQ
* @param params
* @return
*/
ServiceResponse
<
Void
>
memberChangeMQ
(
String
params
);
}
haoban-manage3-service/src/main/java/com/gic/haoban/manage/service/dao/mapper/content/TabHaobanInteractRecordMapper.java
View file @
bb0a5042
...
...
@@ -105,5 +105,21 @@ public interface TabHaobanInteractRecordMapper {
*/
List
<
PotentialCustomerStaticsBO
>
staticsClerkInteractRecordNew
(
InteractRecordQO
interactRecordQO
);
/**
* 会员合并
* @param mergeMemberId
* @param memberId
* @return
*/
int
mergeMember
(
@Param
(
"mergeMemberId"
)
String
mergeMemberId
,
@Param
(
"memberId"
)
String
memberId
);
/**
* 会员授权事件
* @param memberId
* @param unionId
* @return
*/
int
memberAuthorized
(
@Param
(
"memberId"
)
String
memberId
,
@Param
(
"unionId"
)
String
unionId
);
}
haoban-manage3-service/src/main/java/com/gic/haoban/manage/service/dao/mapper/content/TabHaobanPotentialCustomerMapper.java
View file @
bb0a5042
...
...
@@ -78,5 +78,12 @@ public interface TabHaobanPotentialCustomerMapper {
*/
List
<
TabHaobanPotentialCustomer
>
queryPotentialCustomerList
(
PotentialCustomerQO
potentialCustomerQO
);
/**
* 会员合并操作
* @param mergeMemberId
* @param memberId
*/
void
mergeMember
(
@Param
(
"mergeMemberId"
)
String
mergeMemberId
,
@Param
(
"memberId"
)
String
memberId
);
}
haoban-manage3-service/src/main/java/com/gic/haoban/manage/service/pojo/bo/content/MemberAttrChangeBO.java
0 → 100644
View file @
bb0a5042
package
com
.
gic
.
haoban
.
manage
.
service
.
pojo
.
bo
.
content
;
import
lombok.Data
;
import
lombok.Getter
;
import
java.io.Serializable
;
/**
* @Author MUSI
* @Date 2023/4/2 9:12 AM
* @Description
* @Version
**/
@Data
public
class
MemberAttrChangeBO
implements
Serializable
{
/**
* 会员id
*/
private
String
memberId
;
/**
* 会员unionId
*/
private
String
unionId
;
/**
* 被合并的会员id
*/
private
String
mergeMemberId
;
/**
* 业务变动类型:1小程序授权 2会员合并
*/
private
Integer
opt
;
@Getter
public
enum
MemberChangeOpt
{
MINI_APP_AUTHORIZED
(
1
,
"会员授权"
),
MEMBER_MERGE
(
2
,
"会员合并"
);
MemberChangeOpt
(
Integer
code
,
String
desc
)
{
this
.
code
=
code
;
this
.
desc
=
desc
;
}
private
Integer
code
;
private
String
desc
;
}
}
haoban-manage3-service/src/main/java/com/gic/haoban/manage/service/service/content/InteractRecordService.java
View file @
bb0a5042
...
...
@@ -51,4 +51,18 @@ public interface InteractRecordService {
*/
List
<
PotentialCustomerStaticsBO
>
staticsClerkNewInteractRecord
(
InteractRecordQO
interactRecordQO
);
/**
* 会员合并操作
* @param mergeMemberId
* @param memberId
*/
void
mergeMember
(
String
mergeMemberId
,
String
memberId
);
/**
* 会员授权事件
* @param memberId
* @param unionId
*/
void
memberAuthorized
(
String
memberId
,
String
unionId
);
}
haoban-manage3-service/src/main/java/com/gic/haoban/manage/service/service/content/PotentialCustomerService.java
View file @
bb0a5042
...
...
@@ -55,4 +55,11 @@ public interface PotentialCustomerService {
* @param context
*/
void
sendPotentialCustomerNotice
(
PotentialCustomerNotifyContext
context
);
/**
* 会员合并操作
* @param mergeMemberId
* @param memberId
*/
void
mergeMember
(
String
mergeMemberId
,
String
memberId
);
}
haoban-manage3-service/src/main/java/com/gic/haoban/manage/service/service/content/adaptor/InteractRecordBuilder.java
View file @
bb0a5042
...
...
@@ -9,19 +9,23 @@ 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.InteractRecordBO
;
import
com.gic.haoban.manage.service.pojo.bo.content.InteractRecordExtendInfoBO
;
import
com.gic.haoban.manage.service.pojo.bo.content.PotentialCustomerBO
;
import
com.gic.member.api.dto.MemberDTO
;
import
com.gic.member.api.service.MemberService
;
import
com.gic.store.goods.dto.goods.GoodsSpuInfoDTO
;
import
com.gic.store.goods.dto.qdto.GoodsListQDTO
;
import
com.gic.store.goods.enums.GoodsStatusEnum
;
import
com.gic.store.goods.service.GoodsCenterApiService
;
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.BeanUtils
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Component
;
import
java.util.Arrays
;
import
java.util.Collections
;
import
java.util.Date
;
import
java.util.List
;
import
java.util.stream.Collectors
;
...
...
@@ -34,11 +38,10 @@ import java.util.stream.Collectors;
@Slf4j
@Component
public
class
InteractRecordBuilder
{
@Autowired
private
GoodsInfoOutApiService
goodsInfoOutApiService
;
@Autowired
private
GoodsCenterApiService
goodsCenterApiService
;
@Autowired
private
MemberService
memberService
;
/**
* 互动记录描述
...
...
@@ -174,4 +177,28 @@ public class InteractRecordBuilder {
interactRecordBO
.
setOrderGoodsNum
(
orderGoodsNum
);
}
}
public
PotentialCustomerBO
build
(
TabHaobanInteractRecord
interactRecord
)
{
PotentialCustomerBO
temp
=
new
PotentialCustomerBO
();
BeanUtils
.
copyProperties
(
interactRecord
,
temp
);
temp
.
setId
(
null
);
// 获取会员信息
MemberDTO
memberDTO
=
memberService
.
queryMember
(
interactRecord
.
getMemberId
());
if
(
memberDTO
!=
null
)
{
temp
.
setMemberName
(
memberDTO
.
getMemberName
());
temp
.
setMemberNickName
(
memberDTO
.
getThirdNickname
());
temp
.
setMemberImageUrl
(
memberDTO
.
getThirdImgUrl
());
temp
.
setMemberPhone
(
memberDTO
.
getPhoneNumber
());
}
temp
.
setStarFlag
(
0
);
temp
.
setSeeFlag
(
0
);
temp
.
setLastAccessTime
(
interactRecord
.
getCreateTime
());
temp
.
setCreateTime
(
new
Date
());
temp
.
setUpdateTime
(
new
Date
());
temp
.
setDeleteFlag
(
0
);
// 查询memberId是否成交过订单
temp
.
setDealRecordNum
(
0
);
return
temp
;
}
}
haoban-manage3-service/src/main/java/com/gic/haoban/manage/service/service/content/impl/InteractRecordServiceImpl.java
View file @
bb0a5042
...
...
@@ -7,9 +7,11 @@ import com.gic.commons.util.UniqueIdUtils;
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.pojo.bo.content.InteractRecordBO
;
import
com.gic.haoban.manage.service.pojo.bo.content.PotentialCustomerBO
;
import
com.gic.haoban.manage.service.pojo.bo.content.PotentialCustomerStaticsBO
;
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.PotentialCustomerService
;
import
com.gic.haoban.manage.service.service.content.adaptor.InteractRecordBuilder
;
import
com.github.pagehelper.PageHelper
;
import
lombok.extern.slf4j.Slf4j
;
...
...
@@ -20,8 +22,11 @@ import org.springframework.beans.factory.annotation.Autowired;
import
org.springframework.stereotype.Component
;
import
javax.annotation.Resource
;
import
java.util.Comparator
;
import
java.util.Date
;
import
java.util.List
;
import
java.util.Map
;
import
java.util.Objects
;
import
java.util.stream.Collectors
;
/**
...
...
@@ -38,6 +43,8 @@ public class InteractRecordServiceImpl implements InteractRecordService {
private
TabHaobanInteractRecordMapper
tabHaobanInteractRecordMapper
;
@Autowired
private
InteractRecordBuilder
interactRecordBuilder
;
@Autowired
PotentialCustomerService
potentialCustomerService
;
/**
* 查询互动记录
...
...
@@ -155,4 +162,65 @@ public class InteractRecordServiceImpl implements InteractRecordService {
public
List
<
PotentialCustomerStaticsBO
>
staticsClerkNewInteractRecord
(
InteractRecordQO
interactRecordQO
)
{
return
this
.
tabHaobanInteractRecordMapper
.
staticsClerkInteractRecordNew
(
interactRecordQO
);
}
/**
* 会员合并操作
*
* @param mergeMemberId
* @param memberId
*/
@Override
public
void
mergeMember
(
String
mergeMemberId
,
String
memberId
)
{
if
(
StringUtils
.
isAnyBlank
(
memberId
,
mergeMemberId
))
{
log
.
info
(
"合并会员参数缺失 mergeMemberId: {} memberId: {}"
,
mergeMemberId
,
memberId
);
return
;
}
tabHaobanInteractRecordMapper
.
mergeMember
(
mergeMemberId
,
memberId
);
}
/**
* 会员授权事件
*
* @param memberId
* @param unionId
*/
@Override
public
void
memberAuthorized
(
String
memberId
,
String
unionId
)
{
InteractRecordQO
interactRecordQO
=
new
InteractRecordQO
();
interactRecordQO
.
setUnionId
(
unionId
);
List
<
TabHaobanInteractRecord
>
interactRecords
=
this
.
tabHaobanInteractRecordMapper
.
queryInteractRecordList
(
interactRecordQO
);
if
(
CollectionUtils
.
isEmpty
(
interactRecords
))
{
log
.
info
(
"会员授权事件, 该会员未产生过互动记录 {}"
,
unionId
);
return
;
}
tabHaobanInteractRecordMapper
.
memberAuthorized
(
memberId
,
unionId
);
Map
<
String
,
List
<
TabHaobanInteractRecord
>>
interactRecordMap
=
interactRecords
.
stream
()
.
collect
(
Collectors
.
groupingBy
(
item
->
item
.
getClerkId
()
+
item
.
getMemberId
()));
for
(
Map
.
Entry
<
String
,
List
<
TabHaobanInteractRecord
>>
entry
:
interactRecordMap
.
entrySet
())
{
this
.
handlerRecord
(
memberId
,
entry
.
getValue
());
}
}
private
void
handlerRecord
(
String
memberId
,
List
<
TabHaobanInteractRecord
>
interactRecords
)
{
Integer
durationTime
=
interactRecords
.
stream
()
.
map
(
TabHaobanInteractRecord:
:
getDurationTime
)
.
filter
(
Objects:
:
nonNull
)
.
reduce
(
0
,
Integer:
:
sum
);
interactRecords
.
sort
(
Comparator
.
comparing
(
TabHaobanInteractRecord:
:
getId
).
reversed
());
TabHaobanInteractRecord
interactRecord
=
interactRecords
.
get
(
0
);
interactRecord
.
setMemberId
(
memberId
);
PotentialCustomerBO
potentialCustomerBO
=
potentialCustomerService
.
queryPotentialCustomerInfo
(
interactRecord
.
getClerkId
(),
memberId
);
if
(
potentialCustomerBO
==
null
)
{
potentialCustomerBO
=
interactRecordBuilder
.
build
(
interactRecord
);
}
potentialCustomerBO
.
setDurationTime
(
durationTime
);
potentialCustomerService
.
saveOrUpdatePotentialCustomer
(
potentialCustomerBO
);
}
}
haoban-manage3-service/src/main/java/com/gic/haoban/manage/service/service/content/impl/PotentialCustomerServiceImpl.java
View file @
bb0a5042
...
...
@@ -229,4 +229,18 @@ public class PotentialCustomerServiceImpl implements PotentialCustomerService {
// 如果该导购id是成员在主门店时的导购id 发送应用消息
potentialCustomerNotifyBuilder
.
sendApplicationMessage
(
context
);
}
/**
* 会员合并操作
*
* @param mergeMemberId
* @param memberId
*/
@Override
public
void
mergeMember
(
String
mergeMemberId
,
String
memberId
)
{
if
(
StringUtils
.
isAnyBlank
(
mergeMemberId
,
memberId
))
{
return
;
}
potentialCustomerMapper
.
mergeMember
(
mergeMemberId
,
memberId
);
}
}
haoban-manage3-service/src/main/java/com/gic/haoban/manage/service/service/out/impl/content/InteractRecordApiServiceImpl.java
View file @
bb0a5042
...
...
@@ -8,10 +8,13 @@ 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.bo.content.MemberAttrChangeBO
;
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.PotentialCustomerService
;
import
lombok.extern.slf4j.Slf4j
;
import
org.apache.commons.collections.CollectionUtils
;
import
org.apache.commons.lang3.StringUtils
;
import
org.springframework.beans.BeanUtils
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Component
;
...
...
@@ -32,6 +35,8 @@ public class InteractRecordApiServiceImpl implements InteractRecordApiService {
@Autowired
private
InteractRecordService
interactRecordService
;
@Autowired
PotentialCustomerService
potentialCustomerService
;
/**
* 查询互动记录
...
...
@@ -72,4 +77,37 @@ public class InteractRecordApiServiceImpl implements InteractRecordApiService {
result
.
setResult
(
recordInfos
);
return
ServiceResponse
.
success
(
result
);
}
/**
* 处理member信息变化的MQ
*
* @param params
* @return
*/
@Override
public
ServiceResponse
<
Void
>
memberChangeMQ
(
String
params
)
{
if
(
StringUtils
.
isBlank
(
params
))
{
log
.
info
(
"会员id发生变化 {}"
,
params
);
return
ServiceResponse
.
success
();
}
MemberAttrChangeBO
memberAttrChangeBO
=
JSON
.
parseObject
(
params
,
MemberAttrChangeBO
.
class
);
if
(
memberAttrChangeBO
==
null
)
{
return
ServiceResponse
.
success
();
}
if
(
MemberAttrChangeBO
.
MemberChangeOpt
.
MINI_APP_AUTHORIZED
.
getCode
().
equals
(
memberAttrChangeBO
.
getOpt
()))
{
// 会员授权事件
// 根据unionId 刷新 memberId 并写入销售线索
interactRecordService
.
memberAuthorized
(
memberAttrChangeBO
.
getMemberId
(),
memberAttrChangeBO
.
getUnionId
());
}
if
(
MemberAttrChangeBO
.
MemberChangeOpt
.
MEMBER_MERGE
.
getCode
().
equals
(
memberAttrChangeBO
.
getOpt
()))
{
//会员合并
// 把合并的memberId 修改成 合并后的memberId
interactRecordService
.
mergeMember
(
memberAttrChangeBO
.
getMergeMemberId
(),
memberAttrChangeBO
.
getMemberId
());
potentialCustomerService
.
mergeMember
(
memberAttrChangeBO
.
getMergeMemberId
(),
memberAttrChangeBO
.
getMemberId
());
}
return
ServiceResponse
.
success
();
}
}
haoban-manage3-service/src/main/resources/mapper/content/TabHaobanInteractRecordMapper.xml
View file @
bb0a5042
...
...
@@ -261,7 +261,10 @@
select
<include
refid=
"baseSql"
/>
from tab_haoban_interact_record
<where>
clerk_id = #{clerkId} and delete_flag = 0
delete_flag = 0
<if
test=
"clerkId != null and clerkId != ''"
>
and clerk_id = #{clerkId}
</if>
<if
test=
"memberId != null and memberId != ''"
>
and member_id = #{memberId}
</if>
...
...
@@ -271,6 +274,9 @@
<if
test=
"endTime != null"
>
and create_time
<![CDATA[ <= ]]>
#{endTime}
</if>
<if
test=
"unionId != null and unionId != '' "
>
and union_id = #{unionId}
</if>
</where>
order by id desc
</select>
...
...
@@ -295,5 +301,17 @@
order by null
</select>
<update
id=
"mergeMember"
>
update tab_haoban_interact_record
set member_id = #{memberId}
where member_id = #{mergeMemberId} and delete_flag = 0
</update>
<update
id=
"memberAuthorized"
>
update tab_haoban_interact_record
set member_id = #{memberId}
where union_id = #{unionId} and delete_flag = 0
</update>
</mapper>
haoban-manage3-service/src/main/resources/mapper/content/TabHaobanPotentialCustomerMapper.xml
View file @
bb0a5042
...
...
@@ -276,5 +276,11 @@
where clerk_id = #{clerkId} and delete_flag = 0 and member_id = #{memberId}
</select>
<update
id=
"mergeMember"
>
update tab_haoban_potential_customer
set member_id = #{memberId}
where member_id = #{memberId} and delete_flag = 0
</update>
</mapper>
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