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
88cf4c50
Commit
88cf4c50
authored
Apr 15, 2025
by
王祖波
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'feature-recommend'
parents
5e63bade
f9f676bb
Show whitespace changes
Inline
Side-by-side
Showing
7 changed files
with
277 additions
and
12 deletions
+277
-12
HaobanTimerApiService.java
.../gic/haoban/manage/api/service/HaobanTimerApiService.java
+6
-0
RouterApiService.java
...ic/haoban/manage/api/service/common/RouterApiService.java
+6
-0
ContactDataBO.java
.../haoban/manage/service/pojo/bo/contact/ContactDataBO.java
+31
-0
ContactAdaptor.java
...anage/service/service/contact/adaptor/ContactAdaptor.java
+199
-0
HaobanTimerApiServiceImpl.java
...e/service/service/out/impl/HaobanTimerApiServiceImpl.java
+15
-5
RouterApiServiceImpl.java
...service/service/out/impl/common/RouterApiServiceImpl.java
+13
-0
PotentialDataController.java
...age/web/controller/potential/PotentialDataController.java
+7
-7
No files found.
haoban-manage3-api/src/main/java/com/gic/haoban/manage/api/service/HaobanTimerApiService.java
View file @
88cf4c50
...
...
@@ -151,4 +151,10 @@ public interface HaobanTimerApiService {
* @param params
*/
void
cancelSendTimer
(
String
params
)
;
/**
* 建联刷新数据定时任务
* @param params
*/
void
contactDataTimer
(
String
params
);
}
haoban-manage3-api/src/main/java/com/gic/haoban/manage/api/service/common/RouterApiService.java
View file @
88cf4c50
...
...
@@ -15,4 +15,10 @@ public interface RouterApiService {
*/
ServiceResponse
<
Void
>
memberClerkEvent
(
String
params
);
/**
* 建联数据刷新
* @return
*/
ServiceResponse
<
Void
>
contactDataRefreshMQ
(
String
param
);
}
haoban-manage3-service/src/main/java/com/gic/haoban/manage/service/pojo/bo/contact/ContactDataBO.java
0 → 100644
View file @
88cf4c50
package
com
.
gic
.
haoban
.
manage
.
service
.
pojo
.
bo
.
contact
;
import
lombok.Data
;
/**
* Created by wangzubo on 2025/4/14.
*/
@Data
public
class
ContactDataBO
{
/**
* 企业id
*/
private
String
enterpriseId
;
/**
* 导购id
*/
private
String
clerkId
;
/**
* 门店id
*/
private
String
storeId
;
/**
* 未建联数
*/
private
Integer
noConnPotCusNum
=
0
;
}
haoban-manage3-service/src/main/java/com/gic/haoban/manage/service/service/contact/adaptor/ContactAdaptor.java
0 → 100644
View file @
88cf4c50
package
com
.
gic
.
haoban
.
manage
.
service
.
service
.
contact
.
adaptor
;
import
com.alibaba.fastjson.JSON
;
import
com.alibaba.fastjson.JSONObject
;
import
com.alibaba.fastjson.PropertyNamingStrategy
;
import
com.alibaba.fastjson.serializer.SerializeConfig
;
import
com.alibaba.hologres.client.HoloClient
;
import
com.alibaba.hologres.client.Put
;
import
com.alibaba.hologres.client.model.TableSchema
;
import
com.gic.api.base.commons.ServiceResponse
;
import
com.gic.clerk.api.dto.ClerkDTO
;
import
com.gic.clerk.api.dto.ClerkListDTO
;
import
com.gic.clerk.api.service.ClerkService
;
import
com.gic.commons.util.GICMQClientUtil
;
import
com.gic.enterprise.api.constant.EnterpriseServiceEnum
;
import
com.gic.enterprise.api.dto.enterprise.EnterpriseUsingStatusDTO
;
import
com.gic.enterprise.api.service.EnterpriseUseForbidService
;
import
com.gic.haoban.app.customer.dto.ChildDTO
;
import
com.gic.haoban.app.customer.dto.CustomerDTO
;
import
com.gic.haoban.app.customer.dto.FilterListDTO
;
import
com.gic.haoban.app.customer.dto.MemberInfoListParamsDTO
;
import
com.gic.haoban.app.customer.dto.contact.ContactParamDTO
;
import
com.gic.haoban.app.customer.dto.contact.ContactSumDTO
;
import
com.gic.haoban.app.customer.service.api.service.CustomerApiService
;
import
com.gic.haoban.common.utils.DateUtil
;
import
com.gic.haoban.manage.service.dao.mapper.content.holo.HoloDataSource
;
import
com.gic.haoban.manage.service.pojo.bo.contact.ContactDataBO
;
import
com.gic.store.goods.dto.potential.PlatformPotentialCustomerOutDTO
;
import
com.gic.store.goods.service.potential.PlatformPotentialCustomerApiService
;
import
com.google.common.collect.Lists
;
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.*
;
import
java.util.stream.Collectors
;
/**
* Created by wangzubo on 2025/4/14.
*/
@Slf4j
@Component
public
class
ContactAdaptor
{
@Autowired
private
EnterpriseUseForbidService
enterpriseUseForbidService
;
@Autowired
private
ClerkService
clerkService
;
@Autowired
private
PlatformPotentialCustomerApiService
platformPotentialCustomerApiService
;
@Autowired
private
CustomerApiService
customerService
;
@Autowired
private
HoloDataSource
holoDataSource
;
/**
* 潜客商户定时刷新
*/
public
void
contactDataTimer
()
{
// 处理潜客相关企业ID
ServiceResponse
<
List
<
EnterpriseUsingStatusDTO
>>
serviceResponse
=
enterpriseUseForbidService
.
getUseEnterpriseByCode
(
EnterpriseServiceEnum
.
POTENTIAL
.
getRightMenuCode
(),
null
);
List
<
ContactDataBO
>
list
=
new
ArrayList
<>();
List
<
String
>
eidList
=
Optional
.
ofNullable
(
serviceResponse
.
getResult
()).
orElse
(
Collections
.
emptyList
())
.
stream
()
.
filter
(
item
->
Boolean
.
TRUE
.
equals
(
item
.
getVaild
()))
.
map
(
EnterpriseUsingStatusDTO:
:
getEnterpriseId
).
collect
(
Collectors
.
toList
());
ContactDataBO
contactDataBO
=
null
;
for
(
String
eid
:
eidList
)
{
log
.
info
(
"开始处理潜客数据eid:{}"
,
eid
);
Set
<
String
>
storeIdSet
=
new
HashSet
<>();
List
<
ClerkListDTO
>
enterpriseClerk
=
clerkService
.
getEnterpriseClerk
(
eid
);
if
(
CollectionUtils
.
isEmpty
(
enterpriseClerk
))
{
continue
;
}
log
.
info
(
"潜客数据导购数:{}"
,
enterpriseClerk
.
size
());
for
(
int
i
=
0
;
i
<
enterpriseClerk
.
size
();
i
++)
{
ClerkListDTO
clerk
=
enterpriseClerk
.
get
(
i
);
// 无归属导购数据
if
(
storeIdSet
.
add
(
clerk
.
getStoreId
()))
{
contactDataBO
=
new
ContactDataBO
();
contactDataBO
.
setEnterpriseId
(
clerk
.
getEnterpriseId
());
contactDataBO
.
setClerkId
(
"-1"
);
contactDataBO
.
setStoreId
(
clerk
.
getStoreId
());
list
.
add
(
contactDataBO
);
}
contactDataBO
=
new
ContactDataBO
();
contactDataBO
.
setEnterpriseId
(
clerk
.
getEnterpriseId
());
contactDataBO
.
setClerkId
(
clerk
.
getClerkId
());
contactDataBO
.
setStoreId
(
clerk
.
getStoreId
());
list
.
add
(
contactDataBO
);
if
(
list
.
size
()
>=
100
||
i
==
enterpriseClerk
.
size
()
-
1
)
{
try
{
String
jsonString
=
JSON
.
toJSONString
(
list
);
GICMQClientUtil
.
getClientInstance
().
sendMessage
(
"contactDataRefreshMQ"
,
jsonString
);
jsonString
=
null
;
}
catch
(
Exception
e
)
{
log
.
error
(
"发送MQ异常:"
,
e
);
}
list
.
clear
();
}
}
}
}
/**
* 定时刷新未建联数到holo
* @param param
*/
public
void
contactDataRefresh
(
String
param
)
{
List
<
ContactDataBO
>
list
=
JSONObject
.
parseArray
(
param
,
ContactDataBO
.
class
);
if
(
CollectionUtils
.
isEmpty
(
list
))
{
return
;
}
ContactDataBO
contactDataBO
=
list
.
get
(
0
);
String
enterpriseId
=
contactDataBO
.
getEnterpriseId
();
ServiceResponse
<
PlatformPotentialCustomerOutDTO
>
potentialResponse
=
platformPotentialCustomerApiService
.
getPotentialCustomerOutRule
(
enterpriseId
);
if
(!
potentialResponse
.
isSuccess
()
||
potentialResponse
.
getResult
()
==
null
)
{
return
;
}
List
<
String
>
clerkIdList
=
list
.
stream
().
map
(
ContactDataBO:
:
getClerkId
).
collect
(
Collectors
.
toList
());
List
<
ClerkDTO
>
clerkDTOS
=
clerkService
.
getClerkByClerkIds
(
new
HashSet
<>(
clerkIdList
));
Map
<
String
,
ClerkDTO
>
clerkMap
=
Optional
.
ofNullable
(
clerkDTOS
).
orElse
(
new
ArrayList
<>()).
stream
().
collect
(
Collectors
.
toMap
(
ClerkDTO:
:
getClerkId
,
clerkDTO
->
clerkDTO
));
for
(
ContactDataBO
dataBO
:
list
)
{
boolean
unassigned
=
Objects
.
equals
(
dataBO
.
getClerkId
(),
"-1"
);
ClerkDTO
clerkDTO
=
clerkMap
.
get
(
dataBO
.
getClerkId
());
Integer
noConnPotCusNum
=
getNoConnPotCusNum
(
potentialResponse
.
getResult
(),
dataBO
.
getEnterpriseId
(),
dataBO
.
getStoreId
(),
clerkDTO
,
unassigned
);
log
.
info
(
"clerkId:{},noConnPotCusNum:{}"
,
dataBO
.
getClerkId
(),
noConnPotCusNum
);
dataBO
.
setNoConnPotCusNum
(
noConnPotCusNum
);
}
try
{
HoloClient
client
=
holoDataSource
.
getClient
();
if
(
client
==
null
)
{
log
.
error
(
"数仓数据源链接异常, 请检查!!!!{}"
,
param
);
return
;
}
TableSchema
tableSchema
=
client
.
getTableSchema
(
"ads_gic_mbr_no_conn_mbr_1d"
);
SerializeConfig
serializeConfig
=
new
SerializeConfig
();
serializeConfig
.
setPropertyNamingStrategy
(
PropertyNamingStrategy
.
SnakeCase
);
List
<
Put
>
puts
=
list
.
stream
()
.
map
(
item
->
{
Put
temp
=
new
Put
(
tableSchema
);
temp
.
setObject
(
"ent_id"
,
item
.
getEnterpriseId
());
temp
.
setObject
(
"store_id"
,
item
.
getStoreId
());
temp
.
setObject
(
"clerk_id"
,
item
.
getClerkId
());
temp
.
setObject
(
"no_conn_pot_cus_num"
,
item
.
getNoConnPotCusNum
());
// 时间戳格式不行
temp
.
setObject
(
"create_time"
,
DateUtil
.
dateToStr
(
new
Date
(),
"yyyy-MM-dd HH:mm:ss"
));
return
temp
;
})
.
collect
(
Collectors
.
toList
());
client
.
put
(
puts
);
log
.
info
(
"写数据组完成"
);
}
catch
(
Exception
ex
)
{
log
.
info
(
"数据组写入异常 {}"
,
param
,
ex
);
}
}
public
Integer
getNoConnPotCusNum
(
PlatformPotentialCustomerOutDTO
result
,
String
enterpriseId
,
String
storeId
,
ClerkDTO
clerkDTO
,
boolean
unassigned
)
{
if
(
StringUtils
.
isBlank
(
storeId
)
&&
clerkDTO
==
null
)
{
return
0
;
}
String
clerkTypeStr
=
"1"
;
CustomerDTO
params
=
new
CustomerDTO
();
String
clerkId
=
null
;
if
(
clerkDTO
!=
null
)
{
clerkTypeStr
=
"0"
;
clerkId
=
clerkDTO
.
getClerkId
();
Integer
clerkType
=
clerkDTO
.
getClerkType
();
if
(
clerkType
==
0
||
clerkType
==
1
)
{
storeId
=
clerkDTO
.
getStoreId
();
}
}
ContactParamDTO
contact
=
new
ContactParamDTO
();
contact
.
setRuleJSON
(
JSON
.
toJSONString
(
result
));
contact
.
setContactType
(
0
);
params
.
setStoreId
(
storeId
);
params
.
setClerkId
(
clerkId
);
params
.
setClerkType
(
clerkTypeStr
);
params
.
setEnterpriseId
(
enterpriseId
);
params
.
setContactParamDTO
(
contact
);
MemberInfoListParamsDTO
memberInfoListParamsDTO
=
new
MemberInfoListParamsDTO
();
// 查询无归属数据
if
(
unassigned
)
{
FilterListDTO
filterListDTO
=
new
FilterListDTO
();
filterListDTO
.
setFilterType
(
"1"
);
ChildDTO
child
=
new
ChildDTO
();
child
.
setId
(
"-1"
);
filterListDTO
.
setChild
(
child
);
memberInfoListParamsDTO
.
setFilterList
(
Lists
.
newArrayList
(
filterListDTO
));
}
ServiceResponse
<
ContactSumDTO
>
noContactResponse
=
customerService
.
contactMemberSum
(
new
com
.
gic
.
haoban
.
base
.
api
.
common
.
BasePageInfo
(),
params
,
memberInfoListParamsDTO
);
return
noContactResponse
.
getResult
()
!=
null
?
noContactResponse
.
getResult
().
getTotalCount
()
:
0
;
}
}
haoban-manage3-service/src/main/java/com/gic/haoban/manage/service/service/out/impl/HaobanTimerApiServiceImpl.java
View file @
88cf4c50
package
com
.
gic
.
haoban
.
manage
.
service
.
service
.
out
.
impl
;
import
com.alibaba.fastjson.JSONObject
;
import
com.gic.api.base.commons.ServiceResponse
;
import
com.gic.haoban.manage.api.dto.CommonDataMQDTO
;
import
com.gic.haoban.manage.api.service.HaobanCommonMQApiService
;
import
com.gic.haoban.manage.api.service.HaobanTimerApiService
;
import
com.gic.haoban.manage.service.dao.mapper.TabHaobanExternalClerkRelatedMapper
;
import
com.gic.haoban.manage.service.dao.mapper.hm.WxUserAddLogMapper
;
import
com.gic.haoban.manage.service.entity.TabHaobanExternalClerkRelated
;
import
com.gic.haoban.manage.service.entity.hm.TabWxUserAddLog
;
import
com.gic.haoban.manage.service.service.*
;
import
com.gic.haoban.manage.service.service.chat.*
;
import
com.gic.haoban.manage.service.service.chat.GroupChatActivityService
;
import
com.gic.haoban.manage.service.service.chat.GroupChatDataService
;
import
com.gic.haoban.manage.service.service.chat.GroupChatPlanService
;
import
com.gic.haoban.manage.service.service.chat.GroupChatService
;
import
com.gic.haoban.manage.service.service.contact.adaptor.ContactAdaptor
;
import
com.gic.haoban.manage.service.service.hm.HmQrcodeTempService
;
import
com.gic.haoban.manage.service.util.DingUtils
;
import
com.gic.haoban.manage.service.util.HBQwMonitorUtils
;
import
com.gic.redis.data.util.RedisUtil
;
...
...
@@ -20,10 +27,6 @@ import org.redisson.api.RMap;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Service
;
import
com.gic.api.base.commons.ServiceResponse
;
import
com.gic.haoban.manage.api.service.HaobanTimerApiService
;
import
com.gic.haoban.manage.service.service.hm.HmQrcodeTempService
;
import
java.util.*
;
import
java.util.stream.Collectors
;
...
...
@@ -57,6 +60,8 @@ public class HaobanTimerApiServiceImpl implements HaobanTimerApiService {
private
GroupChatActivityService
groupChatActivityService
;
@Autowired
private
GroupChatPlanService
groupChatPlanService
;
@Autowired
private
ContactAdaptor
contactAdaptor
;
@Override
...
...
@@ -204,4 +209,9 @@ public class HaobanTimerApiServiceImpl implements HaobanTimerApiService {
public
void
cancelSendTimer
(
String
params
)
{
this
.
groupChatPlanService
.
cancelSendTimer
(
params
)
;
}
@Override
public
void
contactDataTimer
(
String
params
)
{
contactAdaptor
.
contactDataTimer
();
}
}
haoban-manage3-service/src/main/java/com/gic/haoban/manage/service/service/out/impl/common/RouterApiServiceImpl.java
View file @
88cf4c50
...
...
@@ -4,6 +4,7 @@ import com.alibaba.fastjson.JSONObject;
import
com.gic.api.base.commons.ServiceResponse
;
import
com.gic.haoban.manage.api.service.common.RouterApiService
;
import
com.gic.haoban.manage.service.service.contact.ContactLogService
;
import
com.gic.haoban.manage.service.service.contact.adaptor.ContactAdaptor
;
import
com.gic.member.api.dto.event.clerk.ClerkAddEventParam
;
import
org.apache.commons.lang3.StringUtils
;
import
org.apache.logging.log4j.LogManager
;
...
...
@@ -21,6 +22,8 @@ public class RouterApiServiceImpl implements RouterApiService {
@Autowired
private
ContactLogService
contactLogService
;
@Autowired
private
ContactAdaptor
contactAdaptor
;
@Override
public
ServiceResponse
<
Void
>
memberClerkEvent
(
String
params
)
{
...
...
@@ -36,4 +39,14 @@ public class RouterApiServiceImpl implements RouterApiService {
}
return
ServiceResponse
.
success
();
}
@Override
public
ServiceResponse
<
Void
>
contactDataRefreshMQ
(
String
param
)
{
if
(
StringUtils
.
isBlank
(
param
))
{
return
ServiceResponse
.
success
();
}
contactAdaptor
.
contactDataRefresh
(
param
);
return
ServiceResponse
.
success
();
}
}
haoban-manage3-wx/src/main/java/com/gic/haoban/manage/web/controller/potential/PotentialDataController.java
View file @
88cf4c50
...
...
@@ -215,13 +215,13 @@ public class PotentialDataController {
list
=
result
.
stream
().
map
(
x
->
{
ClerkDTO
clerkDTO
=
clerkMap
.
get
(
x
.
getClerkId
());
StoreDTO
storeDTO
=
storeMap
.
get
(
x
.
getStoreId
());
if
(!
weekMonth
)
{
// 无归属导购
boolean
unassigned
=
Objects
.
equals
(
x
.
getClerkId
(),
"-1"
)
?
true
:
false
;
// 实时获取当前未建联数 todo
Integer
noConnPotCusNum
=
getNoConnPotCusNum
(
potentialResponse
,
enterpriseId
,
wxEnterpriseId
,
storeDTO
,
clerkDTO
,
unassigned
);
x
.
setNoConnPotCusNum
(
noConnPotCusNum
);
}
//
if (!weekMonth) {
//
// 无归属导购
// boolean unassigned = Objects.equals(x.getClerkId(), "-1")
;
// // 实时获取当前未建联数
//
Integer noConnPotCusNum = getNoConnPotCusNum(potentialResponse, enterpriseId, wxEnterpriseId, storeDTO, clerkDTO,unassigned);
//
x.setNoConnPotCusNum(noConnPotCusNum);
//
}
PotentialContactDetailOverviewVO
overviewVO
=
new
PotentialContactDetailOverviewVO
();
overviewVO
.
setContact
(
x
);
overviewVO
.
setStore
(
storeDTO
);
...
...
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