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
7f6227f1
Commit
7f6227f1
authored
Apr 24, 2023
by
songyinghui
Browse files
Options
Browse Files
Download
Plain Diff
Merge remote-tracking branch 'origin/master' into bugfix_0424
parents
11b0d752
720c1b9f
Hide whitespace changes
Inline
Side-by-side
Showing
25 changed files
with
522 additions
and
257 deletions
+522
-257
GroupChatDTO.java
...java/com/gic/haoban/manage/api/dto/chat/GroupChatDTO.java
+13
-1
ExternalClerkRelatedApiService.java
...an/manage/api/service/ExternalClerkRelatedApiService.java
+3
-4
MemberUnionidRelatedApiService.java
...an/manage/api/service/MemberUnionidRelatedApiService.java
+1
-8
PreDealLogMapper.java
...ic/haoban/manage/service/dao/mapper/PreDealLogMapper.java
+1
-1
TabHaobanExternalClerkRelatedMapper.java
...rvice/dao/mapper/TabHaobanExternalClerkRelatedMapper.java
+6
-2
MaterialReportContext.java
...ervice/pojo/bo/content/context/MaterialReportContext.java
+7
-2
ClerkMainStoreRelatedService.java
.../manage/service/service/ClerkMainStoreRelatedService.java
+5
-1
PreDealService.java
...com/gic/haoban/manage/service/service/PreDealService.java
+1
-1
MaterialReportBuilder.java
...ervice/service/content/adaptor/MaterialReportBuilder.java
+11
-2
MaterialReportServiceImpl.java
...rvice/service/content/impl/MaterialReportServiceImpl.java
+5
-0
ClerkMainStoreRelatedServiceImpl.java
...ervice/service/impl/ClerkMainStoreRelatedServiceImpl.java
+13
-13
PreDealServiceImpl.java
...aoban/manage/service/service/impl/PreDealServiceImpl.java
+1
-1
StaffClerkRelationServiceImpl.java
...e/service/service/impl/StaffClerkRelationServiceImpl.java
+179
-22
ClerkMainStoreRelatedApiServiceImpl.java
...service/out/impl/ClerkMainStoreRelatedApiServiceImpl.java
+3
-2
ExternalClerkRelatedApiServiceImpl.java
.../service/out/impl/ExternalClerkRelatedApiServiceImpl.java
+2
-2
HaobanCommonMQApiServiceImpl.java
...ervice/service/out/impl/HaobanCommonMQApiServiceImpl.java
+10
-0
MemberUnionidRelatedApiServiceImpl.java
.../service/out/impl/MemberUnionidRelatedApiServiceImpl.java
+91
-28
StaffClerkRelationApiServiceImpl.java
...ce/service/out/impl/StaffClerkRelationApiServiceImpl.java
+33
-26
FriendClerkSyncNewOperation.java
...nage/service/task/friend/FriendClerkSyncNewOperation.java
+3
-3
FriendSyncNewOperation.java
...an/manage/service/task/friend/FriendSyncNewOperation.java
+26
-102
SelfFriendSyncNewOperation.java
...anage/service/task/friend/SelfFriendSyncNewOperation.java
+7
-9
TabHaobanExternalClerkRelatedMapper.xml
.../resources/mapper/TabHaobanExternalClerkRelatedMapper.xml
+20
-0
StaffController.java
...com/gic/haoban/manage/web/controller/StaffController.java
+4
-2
GroupChatController.java
...aoban/manage/web/controller/chat/GroupChatController.java
+70
-14
WxStaffController.java
...m/gic/haoban/manage/web/controller/WxStaffController.java
+7
-11
No files found.
haoban-manage3-api/src/main/java/com/gic/haoban/manage/api/dto/chat/GroupChatDTO.java
View file @
7f6227f1
...
...
@@ -69,7 +69,19 @@ public class GroupChatDTO implements Serializable {
private
int
hmAddStatus
=
1
;
private
String
chatRemark
;
private
int
initFlag
;
private
String
clerkRelationExcel
;
public
String
getClerkRelationExcel
()
{
if
(
clerkRelationFlag
==
0
){
clerkRelationExcel
=
"未关联"
;
}
else
{
clerkRelationExcel
=
"已关联"
;
}
return
clerkRelationExcel
;
}
public
void
setClerkRelationExcel
(
String
clerkRelationExcel
)
{
this
.
clerkRelationExcel
=
clerkRelationExcel
;
}
public
int
getInitFlag
()
{
return
initFlag
;
}
...
...
haoban-manage3-api/src/main/java/com/gic/haoban/manage/api/service/ExternalClerkRelatedApiService.java
View file @
7f6227f1
...
...
@@ -195,6 +195,7 @@ public interface ExternalClerkRelatedApiService {
com
.
gic
.
api
.
base
.
commons
.
ServiceResponse
<
Boolean
>
isQwFriend
(
String
enterpriseId
,
String
staffId
,
String
memberId
)
;
/**
*
* @param enterpriseId
...
...
@@ -204,10 +205,8 @@ public interface ExternalClerkRelatedApiService {
*/
com
.
gic
.
api
.
base
.
commons
.
ServiceResponse
<
Boolean
>
isQwFriendWithUnionId
(
String
enterpriseId
,
String
clerkId
,
String
unionId
)
;
//无效接口
// com.gic.api.base.commons.ServiceResponse<String> getExternalUseridForWxa(String enterpriseId, String staffId, String memberId) ;
List
<
String
>
listMemberAndClerk
(
List
<
String
>
memberIdList
,
List
<
String
>
clerkIdList
,
String
enterpriseId
)
;
List
<
String
>
listMemberAndStaff
(
List
<
String
>
memberIdList
,
String
StaffId
,
String
enterpriseId
)
;
/**
* 批量查询会员与导购好友关系
...
...
haoban-manage3-api/src/main/java/com/gic/haoban/manage/api/service/MemberUnionidRelatedApiService.java
View file @
7f6227f1
...
...
@@ -146,14 +146,7 @@ public interface MemberUnionidRelatedApiService {
ExternalUserDTO
getCorpSelfExternalUseridInfoForMember
(
String
wxEnterpriseId
,
String
wxUserId
,
String
externalUserId
,
String
enterpriseId
);
/**
* 添加企微好友关联关系表-无需触达
*
* @param dto
* @return
*/
String
addExternal
(
ExternalUserDTO
dto
);
public
String
dealMergeForReflsh
(
ExternalUserDTO
externalUserDTO
,
String
wxEnterpriseId
,
String
staffId
)
;
/**
* 获取客户详情-第三方
*
...
...
haoban-manage3-service/src/main/java/com/gic/haoban/manage/service/dao/mapper/PreDealLogMapper.java
View file @
7f6227f1
...
...
@@ -186,7 +186,7 @@ public interface PreDealLogMapper {
* @param relationKey
* @return
*/
TabHaobanPreDealLog
getByRelationKey
(
@Param
(
"taskId"
)
String
taskId
,
@Param
(
"dataType"
)
int
dataType
,
@Param
(
"relationKey"
)
String
relationKey
);
List
<
TabHaobanPreDealLog
>
getByRelationKey
(
@Param
(
"taskId"
)
String
taskId
,
@Param
(
"dataType"
)
int
dataType
,
@Param
(
"relationKey"
)
String
relationKey
);
/**
* 校验任务
...
...
haoban-manage3-service/src/main/java/com/gic/haoban/manage/service/dao/mapper/TabHaobanExternalClerkRelatedMapper.java
View file @
7f6227f1
...
...
@@ -365,7 +365,7 @@ public interface TabHaobanExternalClerkRelatedMapper {
@Param
(
"staffId"
)
String
staffId
);
List
<
String
>
listMemberAndClerk
(
@Param
(
"memberIdList"
)
List
<
String
>
memberIdList
,
@Param
(
"clerkIdList"
)
List
<
String
>
clerkIdList
,
@Param
(
"enterpriseId"
)
String
enterpriseId
);
int
getCountExternalClerk
(
@Param
(
"wxEnterpriseId"
)
String
wxEnterpriseId
,
@Param
(
"staffId"
)
String
staffId
,
@Param
(
"statusFlags"
)
List
<
Integer
>
statusFlags
);
...
...
@@ -373,7 +373,9 @@ public interface TabHaobanExternalClerkRelatedMapper {
int
getCountByMemberId
(
@Param
(
"memberId"
)
String
memberId
);
void
updateClerkInfo
(
@Param
(
"staffId"
)
String
staffId
,
@Param
(
"oldClerkId"
)
String
oldClerkId
,
@Param
(
"newClerkId"
)
String
newClerkId
,
@Param
(
"storeId"
)
String
storeId
);
List
<
String
>
listByClerkId
(
@Param
(
"staffId"
)
String
staffId
,
@Param
(
"clerkId"
)
String
clerkId
)
;
int
updateExternalStatus
(
@Param
(
"wxEnterpriseId"
)
String
wxEnterpriseId
,
@Param
(
"externalUserid"
)
String
externalUserid
,
@Param
(
"status"
)
int
status
);
/**
...
...
@@ -381,6 +383,8 @@ public interface TabHaobanExternalClerkRelatedMapper {
*/
TabHaobanExternalClerkRelated
getMemberForExternalId
(
@Param
(
"wxEnterpriseId"
)
String
wxEnterpriseId
,
@Param
(
"externalUserId"
)
String
externalUserId
);
List
<
String
>
listMemberAndStaff
(
@Param
(
"memberIdList"
)
List
<
String
>
memberIdList
,
@Param
(
"staffId"
)
String
staffId
,
@Param
(
"enterpriseId"
)
String
enterpriseId
);
/**
* 查询成员的好友列表
...
...
haoban-manage3-service/src/main/java/com/gic/haoban/manage/service/pojo/bo/content/context/MaterialReportContext.java
View file @
7f6227f1
...
...
@@ -62,6 +62,11 @@ public class MaterialReportContext {
private
String
clerkId
;
/**
* 是否是区经
*/
private
boolean
isManager
;
/**
* 主门店
*/
private
String
mainStoreId
;
...
...
@@ -97,8 +102,8 @@ public class MaterialReportContext {
log
.
info
(
"成员未绑定导购, staffId: {}"
,
this
.
staffId
);
return
Collections
.
emptyList
();
}
if
(
StringUtils
.
isBlank
(
this
.
mainStoreId
)
)
{
log
.
info
(
"成员
{} 没有主门店数据, 区经角色
不发送小程序消息通知 "
,
this
.
staffId
);
if
(
this
.
isManager
)
{
log
.
info
(
"成员
{}为区经角色,
不发送小程序消息通知 "
,
this
.
staffId
);
return
Collections
.
emptyList
();
}
return
this
.
staffClerkRelations
...
...
haoban-manage3-service/src/main/java/com/gic/haoban/manage/service/service/ClerkMainStoreRelatedService.java
View file @
7f6227f1
...
...
@@ -8,8 +8,12 @@ import java.util.Set;
public
interface
ClerkMainStoreRelatedService
{
void
setMainStore
(
String
staffId
,
String
storeId
,
String
wxEnterpriseId
);
// 自动刷新好友列表
void
reflushExternal
(
String
wxEnterpriseId
,
String
staffId
)
;
TabHaobanClerkMainStoreRelated
selectByWxEnterpriseIdAndStoreId
(
String
staffId
,
String
wxEnterpriseId
);
TabHaobanClerkMainStoreRelated
selectStaffMainStore
(
String
staffId
,
String
wxEnterpriseId
);
/**
* 获取主门店 如果没有主门店设置主门店
...
...
haoban-manage3-service/src/main/java/com/gic/haoban/manage/service/service/PreDealService.java
View file @
7f6227f1
...
...
@@ -173,7 +173,7 @@ public interface PreDealService {
* @param relationKey
* @return
*/
public
TabHaobanPreDealLog
getByRelationKey
(
String
taskId
,
Integer
dataType
,
String
relationKey
);
public
List
<
TabHaobanPreDealLog
>
getByRelationKey
(
String
taskId
,
Integer
dataType
,
String
relationKey
);
/**
* 获取任务是否有在同步中 好友
...
...
haoban-manage3-service/src/main/java/com/gic/haoban/manage/service/service/content/adaptor/MaterialReportBuilder.java
View file @
7f6227f1
...
...
@@ -81,12 +81,17 @@ public class MaterialReportBuilder {
if
(
context
.
getStaffClerkRelations
().
size
()
==
1
)
{
StaffClerkRelationDTO
staffClerkRelationDTO
=
context
.
getStaffClerkRelations
().
get
(
0
);
if
(
staffClerkRelationDTO
.
getClerkType
()
!=
null
&&
staffClerkRelationDTO
.
getClerkType
()
==
2
)
{
log
.
info
(
"成员clerId:{}, staffId: {} 为区经角色"
,
staffClerkRelationDTO
.
getClerkId
(),
staffClerkRelationDTO
.
getStaffId
());
log
.
info
(
"成员cler
k
Id:{}, staffId: {} 为区经角色"
,
staffClerkRelationDTO
.
getClerkId
(),
staffClerkRelationDTO
.
getStaffId
());
// 区经无主门店
context
.
setClerkId
(
staffClerkRelationDTO
.
getClerkId
());
// 是区经角色
context
.
setManager
(
true
);
return
;
}
}
log
.
info
(
"成员{}为导购角色"
,
context
.
getStaffId
());
context
.
setManager
(
false
);
// 获取成员主门店
TabHaobanClerkMainStoreRelated
mainStoreInfo
=
clerkMainStoreRelatedService
.
getMainStoreByStaffId
(
context
.
getStaffId
(),
context
.
getStaffInfo
().
getWxEnterpriseId
());
if
(
mainStoreInfo
!=
null
)
{
context
.
setMainStoreId
(
mainStoreInfo
.
getStoreId
());
...
...
@@ -95,7 +100,7 @@ public class MaterialReportBuilder {
.
filter
(
item
->
StringUtils
.
equals
(
item
.
getStoreId
(),
mainStoreInfo
.
getStoreId
()))
.
findFirst
();
if
(!
mainClerkInfo
.
isPresent
())
{
log
.
info
(
"成员{}
与主门店{}不存在导购关联关系"
,
context
.
getStaffId
(),
context
.
getMainStor
eId
());
log
.
info
(
"成员{}
的主门店{}不在当前企业{}的绑定关系中"
,
context
.
getStaffId
(),
context
.
getMainStoreId
(),
context
.
getEnterpris
eId
());
return
;
}
// 成员在主门店时的clerkId
...
...
@@ -110,6 +115,10 @@ public class MaterialReportBuilder {
*/
public
void
buildMaterialReportData
(
MaterialReportContext
context
)
{
// 获取该导购/店长/区经 的周报/月报数据
if
(
StringUtils
.
isBlank
(
context
.
getClerkId
()))
{
log
.
info
(
"成员{} 默认主门店的clerkId不存在 不发送应用消息"
,
context
.
getStaffId
());
return
;
}
String
clerkId
=
context
.
getClerkId
();
String
enterpriseId
=
context
.
getEnterpriseId
();
MaterialDataAdaptor
.
MaterialDataResult
materialDataResult
;
...
...
haoban-manage3-service/src/main/java/com/gic/haoban/manage/service/service/content/impl/MaterialReportServiceImpl.java
View file @
7f6227f1
...
...
@@ -17,6 +17,7 @@ import com.gic.wechat.api.dto.qywx.QywxNewsSendMessageDTO;
import
com.gic.wechat.api.service.qywx.QywxSuiteApiService
;
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
;
...
...
@@ -89,6 +90,10 @@ public class MaterialReportServiceImpl implements MaterialReportService {
if
(
CollectionUtils
.
isNotEmpty
(
noticeMessageBos
))
{
noticeMessageService
.
addNoticeMessageBatch
(
noticeMessageBos
);
}
if
(
StringUtils
.
isBlank
(
context
.
getClerkId
()))
{
log
.
info
(
"成员{}在企业{}中不存在主门店, 不推送企微应用消息"
,
staffId
,
enterpriseId
);
return
;
}
// 发送企微消息
WxEnterpriseQwDTO
qwDTO
=
this
.
wxEnterpriseService
.
getQwInfo
(
staffInfo
.
getWxEnterpriseId
());
QywxNewsSendMessageDTO
newsSendMessageDTO
=
materialReportBuilder
.
buildQywxNewsMessage
(
context
,
qwDTO
);
...
...
haoban-manage3-service/src/main/java/com/gic/haoban/manage/service/service/impl/ClerkMainStoreRelatedServiceImpl.java
View file @
7f6227f1
...
...
@@ -42,11 +42,16 @@ public class ClerkMainStoreRelatedServiceImpl implements ClerkMainStoreRelatedSe
@Autowired
private
StaffService
staffService
;
@Override
public
TabHaobanClerkMainStoreRelated
selectByWxEnterpriseIdAndStoreId
(
String
staffId
,
String
wxEnterpriseId
)
{
return
mapper
.
selectByWxEnterpriseIdAndStoreId
(
staffId
,
wxEnterpriseId
,
null
);
}
@Override
public
TabHaobanClerkMainStoreRelated
selectStaffMainStore
(
String
staffId
,
String
wxEnterpriseId
)
{
return
mapper
.
selectByWxEnterpriseIdAndStoreId
(
staffId
,
wxEnterpriseId
,
null
);
}
@Override
public
void
setMainStore
(
String
staffId
,
String
storeId
,
String
wxEnterpriseId
)
{
...
...
@@ -55,7 +60,6 @@ public class ClerkMainStoreRelatedServiceImpl implements ClerkMainStoreRelatedSe
logger
.
info
(
"区经无需设置主门店:{}"
,
staffId
);
return
;
}
String
uuId
=
com
.
gic
.
haoban
.
common
.
utils
.
StringUtil
.
randomUUID
();
Date
now
=
new
Date
();
TabHaobanClerkMainStoreRelated
t
=
new
TabHaobanClerkMainStoreRelated
();
...
...
@@ -68,9 +72,10 @@ public class ClerkMainStoreRelatedServiceImpl implements ClerkMainStoreRelatedSe
t
.
setFreshFriendFlag
(
1
);
t
.
setClerkMainStoreRelatedId
(
uuId
);
mapper
.
insert
(
t
);
logger
.
info
(
"切换主门店-刷新企业微信好友:{},{}"
,
staffId
,
storeId
);
//主门店切换需要刷新企业微信好友
}
@Override
public
void
reflushExternal
(
String
wxEnterpriseId
,
String
staffId
)
{
TabHaobanStaff
staff
=
staffService
.
selectById
(
staffId
);
if
(
staff
==
null
)
{
logger
.
info
(
"员工不存在:{}"
,
staffId
);
...
...
@@ -79,21 +84,16 @@ public class ClerkMainStoreRelatedServiceImpl implements ClerkMainStoreRelatedSe
String
taskName
=
"自动刷新企业微信好友("
+
staff
.
getStaffName
()
+
")"
;
String
taskId
=
dealSyncOperationApiService
.
createWxFriendTaskSingle
(
wxEnterpriseId
,
taskName
,
staffId
,
staff
.
getStaffName
(),
SyncTaskTypeEnum
.
FRIEND_SINGLE
.
getType
());
if
(
StringUtils
.
isBlank
(
taskId
))
{
logger
.
info
(
"刷新好友失败或正在刷新:{},{}"
,
staffId
,
storeId
);
logger
.
info
(
"刷新好友失败或正在刷新:{},{}"
,
staffId
);
return
;
}
dealSyncOperationApiService
.
dealWxFriendClerkSingle
(
taskId
,
staffId
,
staffId
,
wxEnterpriseId
);
logger
.
info
(
"
任务id:{}"
,
task
Id
);
logger
.
info
(
"
开始自动刷新好友任务id={},staffId={}"
,
taskId
,
staff
Id
);
}
@Override
public
TabHaobanClerkMainStoreRelated
getMainStoreByStaffId
(
String
staffId
,
String
wxEnterpriseId
)
{
TabHaobanClerkMainStoreRelated
mainStoreRelated
=
mapper
.
selectByWxEnterpriseIdAndStoreId
(
staffId
,
wxEnterpriseId
,
null
);
if
(
null
!=
mainStoreRelated
)
{
return
mainStoreRelated
;
}
return
setStaffMainStore
(
staffId
,
wxEnterpriseId
,
null
);
return
this
.
getMainStoreByStaffId
(
staffId
,
wxEnterpriseId
,
null
);
}
@Override
...
...
haoban-manage3-service/src/main/java/com/gic/haoban/manage/service/service/impl/PreDealServiceImpl.java
View file @
7f6227f1
...
...
@@ -164,7 +164,7 @@ public class PreDealServiceImpl implements PreDealService {
}
@Override
public
TabHaobanPreDealLog
getByRelationKey
(
String
taskId
,
Integer
dataType
,
String
relationKey
)
{
public
List
<
TabHaobanPreDealLog
>
getByRelationKey
(
String
taskId
,
Integer
dataType
,
String
relationKey
)
{
return
preDealLogMapper
.
getByRelationKey
(
taskId
,
dataType
,
relationKey
);
}
...
...
haoban-manage3-service/src/main/java/com/gic/haoban/manage/service/service/impl/StaffClerkRelationServiceImpl.java
View file @
7f6227f1
...
...
@@ -24,6 +24,17 @@ import com.gic.haoban.manage.service.service.*;
import
com.gic.member.api.service.MemberApiService
;
import
com.github.pagehelper.PageHelper
;
import
com.github.pagehelper.PageInfo
;
import
java.util.ArrayList
;
import
java.util.Arrays
;
import
java.util.Collections
;
import
java.util.Date
;
import
java.util.HashMap
;
import
java.util.List
;
import
java.util.Map
;
import
java.util.Set
;
import
java.util.stream.Collectors
;
import
org.apache.commons.collections.CollectionUtils
;
import
org.apache.commons.lang3.StringUtils
;
import
org.slf4j.Logger
;
...
...
@@ -31,13 +42,47 @@ import org.slf4j.LoggerFactory;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Service
;
import
java.util.*
;
import
java.util.stream.Collectors
;
import
com.alibaba.fastjson.JSON
;
import
com.gic.api.base.commons.Page
;
import
com.gic.clerk.api.dto.ClerkDTO
;
import
com.gic.clerk.api.service.ClerkService
;
import
com.gic.clerk.api.service.RightService
;
import
com.gic.commons.util.EntityUtil
;
import
com.gic.enterprise.api.dto.StoreDTO
;
import
com.gic.enterprise.api.service.StoreService
;
import
com.gic.haoban.base.api.common.BasePageInfo
;
import
com.gic.haoban.common.utils.PageUtil
;
import
com.gic.haoban.common.utils.StringUtil
;
import
com.gic.haoban.manage.api.dto.CommonMQDTO
;
import
com.gic.haoban.manage.api.dto.StaffClerkRelationDTO
;
import
com.gic.haoban.manage.api.dto.WxEnterpriseQwDTO
;
import
com.gic.haoban.manage.api.dto.qdto.hm.HmQrcodeQDTO
;
import
com.gic.haoban.manage.api.enums.BindTypeEnum
;
import
com.gic.haoban.manage.api.enums.ChannelCodeEnum
;
import
com.gic.haoban.manage.api.service.HaobanCommonMQApiService
;
import
com.gic.haoban.manage.api.service.hm.HmClerkRelationApiService
;
import
com.gic.haoban.manage.api.service.hm.HmQrcodeApiService
;
import
com.gic.haoban.manage.service.dao.mapper.TabHaobanExternalClerkRelatedMapper
;
import
com.gic.haoban.manage.service.dao.mapper.TabHaobanMemberClerkChatConfigMapper
;
import
com.gic.haoban.manage.service.dao.mapper.TabHaobanStaffClerkRelationMapper
;
import
com.gic.haoban.manage.service.entity.MemberClerkChatConfig
;
import
com.gic.haoban.manage.service.entity.TabHaobanClerkMainStoreRelated
;
import
com.gic.haoban.manage.service.entity.TabHaobanStaff
;
import
com.gic.haoban.manage.service.entity.TabHaobanStaffClerkRelation
;
import
com.gic.haoban.manage.service.service.ClerkMainStoreRelatedService
;
import
com.gic.haoban.manage.service.service.ExternalClerkRelatedService
;
import
com.gic.haoban.manage.service.service.StaffClerkBindLogService
;
import
com.gic.haoban.manage.service.service.StaffClerkRelationService
;
import
com.gic.haoban.manage.service.service.StaffService
;
import
com.gic.haoban.manage.service.service.WxEnterpriseService
;
import
com.gic.member.api.service.MemberApiService
;
import
com.github.pagehelper.PageHelper
;
import
com.github.pagehelper.PageInfo
;
@Service
public
class
StaffClerkRelationServiceImpl
implements
StaffClerkRelationService
{
private
static
final
Logger
logger
=
LoggerFactory
.
getLogger
(
StaffClerkRelationService
Impl
.
class
);
private
static
final
Logger
logger
=
LoggerFactory
.
getLogger
(
StaffClerkRelationService
.
class
);
@Autowired
private
TabHaobanStaffClerkRelationMapper
mapper
;
...
...
@@ -47,13 +92,16 @@ public class StaffClerkRelationServiceImpl implements StaffClerkRelationService
@Autowired
private
ExternalClerkRelatedService
externalClerkRelatedService
;
@Autowired
private
HaobanCommonMQApiService
haobanCommonMQApiService
;
@Autowired
private
ClerkMainStoreRelatedService
clerkMainStoreRelatedService
;
@Autowired
private
TabHaobanExternalClerkRelatedMapper
externalClerkRelatedMapper
;
@Autowired
private
TabHaobanMemberClerkChatConfigMapper
memberClerkChatConfigMapper
;
@Autowired
private
StoreService
storeService
;
@Autowired
private
HmQrcodeApiService
hmQrcodeApiService
;
@Autowired
...
...
@@ -78,33 +126,118 @@ public class StaffClerkRelationServiceImpl implements StaffClerkRelationService
public
List
<
StaffClerkRelationDTO
>
listBindCodeByStaffId
(
List
<
String
>
enterpriseIdList
,
String
staffId
)
{
return
this
.
filterDelClerkList
(
mapper
.
listBindCodeByStaffId
(
enterpriseIdList
,
staffId
));
}
/*
* 导购进行解绑/换导购,更新好友和导购关联关系
*/
@Override
public
boolean
delBind
(
String
oldClerkId
,
String
optStaffId
,
int
channelCode
,
String
newClerkId
,
String
wxEnterpriseId
)
{
TabHaobanStaff
staff
=
this
.
staffService
.
selectById
(
optStaffId
)
;
if
(
null
!=
staff
)
{
wxEnterpriseId
=
staff
.
getWxEnterpriseId
()
;
boolean
changeClerkFlag
=
StringUtils
.
isNotEmpty
(
newClerkId
)
;
logger
.
info
(
"导购解绑/换导购={},oldClerkId={},optStaffId={}"
,
changeClerkFlag
,
oldClerkId
,
optStaffId
);
if
(
StringUtils
.
isNotEmpty
(
optStaffId
)
&&
"-1"
.
equals
(
optStaffId
))
{
TabHaobanStaff
staff
=
this
.
staffService
.
selectById
(
optStaffId
)
;
if
(
null
!=
staff
)
{
wxEnterpriseId
=
staff
.
getWxEnterpriseId
()
;
}
}
// wxEnterpriseId非必传
StaffClerkRelationDTO
clerkRelation
=
mapper
.
getOneByClerkId
(
oldClerkId
,
wxEnterpriseId
);
if
(
null
==
clerkRelation
)
{
logger
.
info
(
"老的绑定关联不存在,
c
lerkId={}"
,
oldClerkId
);
logger
.
info
(
"老的绑定关联不存在,
oldC
lerkId={}"
,
oldClerkId
);
return
true
;
}
int
i
=
mapper
.
changeStatusByClerkId
(
oldClerkId
,
0
);
// 如果是区经
if
(
clerkRelation
.
getManageFlag
()==
1
)
{
this
.
mapper
.
changeStatusByClerkId
(
oldClerkId
,
0
);
return
true
;
}
wxEnterpriseId
=
clerkRelation
.
getWxEnterpriseId
()
;
String
enterpriseId
=
clerkRelation
.
getEnterpriseId
();
logger
.
info
(
"当前删除换绑的商户={},{}"
,
enterpriseId
,
wxEnterpriseId
);
String
staffId
=
clerkRelation
.
getStaffId
()
;
String
storeId
=
clerkRelation
.
getStoreId
()
;
boolean
needFlush
=
false
;
boolean
delFlag
=
true
;
if
(
StringUtils
.
isEmpty
(
newClerkId
))
{
// 成员关联的门店
List
<
StaffClerkRelationDTO
>
relationList
=
this
.
listByStaffId
(
wxEnterpriseId
,
staffId
)
;
Set
<
String
>
set
=
relationList
.
stream
().
map
(
o
->
o
.
getEnterpriseId
()).
collect
(
Collectors
.
toSet
())
;
// 否关联的多个商户
boolean
multipleFlag
=
set
.
size
()
>
1
;
List
<
String
>
storeIdList
=
relationList
.
stream
().
filter
(
o
->!
storeId
.
equals
(
o
.
getStoreId
())
&&
o
.
getEnterpriseId
().
equals
(
enterpriseId
)).
map
(
o
->
o
.
getStoreId
()).
collect
(
Collectors
.
toList
())
;
logger
.
info
(
"成员{},关联门店数={},同商户下的门店={}"
,
staffId
,
relationList
.
size
(),
JSON
.
toJSON
(
storeIdList
));
if
(
CollectionUtils
.
isNotEmpty
(
storeIdList
))
{
if
(
multipleFlag
)
{
needFlush
=
true
;
TabHaobanClerkMainStoreRelated
currentMainStore
=
this
.
clerkMainStoreRelatedService
.
selectStaffMainStore
(
staffId
,
wxEnterpriseId
);
String
mainStoreEnterpriseId
=
null
;
if
(
null
==
currentMainStore
)
{
mainStoreEnterpriseId
=
enterpriseId
;
}
else
{
String
mainStoreId
=
currentMainStore
.
getStoreId
()
;
StoreDTO
store
=
this
.
storeService
.
getStore
(
mainStoreId
)
;
mainStoreEnterpriseId
=
store
.
getEnterpriseId
()
;
}
logger
.
info
(
"当前主门店商户和处理商户是否一致{},{}"
,
mainStoreEnterpriseId
,
enterpriseId
);
if
(
mainStoreEnterpriseId
.
equals
(
enterpriseId
))
{
// 删除关联关系
this
.
mapper
.
changeStatusByClerkId
(
oldClerkId
,
0
);
delFlag
=
false
;
TabHaobanClerkMainStoreRelated
mainStoreRelation
=
this
.
clerkMainStoreRelatedService
.
getMainStoreByStaffId
(
staffId
,
wxEnterpriseId
,
storeIdList
)
;
String
newStoreId
=
mainStoreRelation
.
getStoreId
()
;
StaffClerkRelationDTO
mainClerk
=
this
.
getOneBindByStoreId
(
staffId
,
newStoreId
)
;
newClerkId
=
mainClerk
.
getClerkId
()
;
logger
.
info
(
"查询到成员的主门店导购={},{}"
,
staffId
,
newClerkId
);
needFlush
=
false
;
}
}
else
{
// 删除关联关系
this
.
mapper
.
changeStatusByClerkId
(
oldClerkId
,
0
);
delFlag
=
false
;
TabHaobanClerkMainStoreRelated
mainStore
=
this
.
clerkMainStoreRelatedService
.
getMainStoreByStaffId
(
staffId
,
wxEnterpriseId
,
storeIdList
)
;
String
newStoreId
=
mainStore
.
getStoreId
()
;
StaffClerkRelationDTO
mainClerk
=
this
.
getOneBindByStoreId
(
staffId
,
newStoreId
)
;
newClerkId
=
mainClerk
.
getClerkId
()
;
logger
.
info
(
"查询到成员的主门店导购={},{}"
,
staffId
,
newClerkId
);
}
}
}
// 删除关联关系
if
(
delFlag
)
{
this
.
mapper
.
changeStatusByClerkId
(
oldClerkId
,
0
);
}
if
(
StringUtils
.
isNotBlank
(
newClerkId
))
{
this
.
externalClerkRelatedService
.
updateClerkInfo
(
clerkRelation
.
getStaffId
()
,
oldClerkId
,
newClerkId
)
;
List
<
String
>
memberIdList
=
this
.
externalClerkRelatedMapper
.
listByClerkId
(
staffId
,
oldClerkId
)
;
this
.
externalClerkRelatedService
.
updateClerkInfo
(
staffId
,
oldClerkId
,
newClerkId
)
;
if
(
CollectionUtils
.
isNotEmpty
(
memberIdList
))
{
for
(
String
memberId
:
memberIdList
)
{
logger
.
info
(
"会员={}"
,
memberId
);
CommonMQDTO
dto
=
new
CommonMQDTO
();
dto
.
setType
(
3
);
Map
<
String
,
String
>
map
=
new
HashMap
<>()
;
map
.
put
(
"enterpriseId"
,
enterpriseId
)
;
map
.
put
(
"memberId"
,
memberId
)
;
map
.
put
(
"clerkId"
,
newClerkId
)
;
dto
.
setParams
(
map
);
this
.
haobanCommonMQApiService
.
putCommonMessage
(
dto
);
}
}
}
else
{
List
<
String
>
memberIds
=
externalClerkRelatedService
.
getByStoreIdAndStaffId
(
clerkRelation
.
getStoreId
(),
clerkRelation
.
getStaffId
());
logger
.
info
(
"成员删除所有关联导购={}"
,
staffId
);
List
<
String
>
memberIds
=
externalClerkRelatedService
.
getByStoreIdAndStaffId
(
storeId
,
staffId
);
//删除 并设置主门店
clerkMainStoreRelatedService
.
delMainStore
(
clerkRelation
.
getStaffId
(),
clerkRelation
.
getStoreId
(),
clerkRelation
.
getWxEnterpriseId
()
);
clerkMainStoreRelatedService
.
delMainStore
(
staffId
,
storeId
,
wxEnterpriseId
);
//推入日志
delMemberQywxFlag
(
enterpriseId
,
memberIds
);
}
staffClerkBindLogService
.
pushToMq
(
clerkRelation
.
getStaffId
(),
optStaffId
,
BindTypeEnum
.
UNBIND
.
getVal
(),
channelCode
,
clerkRelation
.
getStaffClerkRelationId
());
if
(
needFlush
)
{
logger
.
info
(
"解绑自动刷新好友,staffId={}"
,
staffId
);
this
.
clerkMainStoreRelatedService
.
reflushExternal
(
wxEnterpriseId
,
staffId
);
}
this
.
staffClerkBindLogService
.
pushToMq
(
staffId
,
optStaffId
,
BindTypeEnum
.
UNBIND
.
getVal
(),
channelCode
,
clerkRelation
.
getStaffClerkRelationId
());
//废弃活码
hmClerkRelationApiService
.
delByClerkId
(
oldClerkId
,
enterpriseId
,
clerkRelation
.
getWxEnterpriseId
(),
channelCode
,
newClerkId
);
return
i
>
0
;
this
.
hmClerkRelationApiService
.
delByClerkId
(
oldClerkId
,
enterpriseId
,
wxEnterpriseId
,
channelCode
,
null
);
return
true
;
}
...
...
@@ -181,7 +314,11 @@ public class StaffClerkRelationServiceImpl implements StaffClerkRelationService
//do nothing
}
else
{
logger
.
info
(
"设置主门店并创建活码:manageFlag:{},staffId:{}"
,
manageFlag
,
staffId
);
clerkMainStoreRelatedService
.
getMainStoreByStaffId
(
staffId
,
wxEnterpriseId
);
TabHaobanClerkMainStoreRelated
mainStore
=
clerkMainStoreRelatedService
.
getMainStoreByStaffId
(
staffId
,
wxEnterpriseId
);
// 判断是主门店
if
(
null
!=
mainStore
&&
mainStore
.
getStoreId
().
equals
(
dto
.
getStoreId
()))
{
this
.
clerkMainStoreRelatedService
.
reflushExternal
(
wxEnterpriseId
,
staffId
);
}
//有活码权限的企业
boolean
flag
=
rightService
.
hasRightForAdmin
(
enterpriseId
,
"hb_m0206"
);
if
(
flag
)
{
...
...
@@ -389,12 +526,22 @@ public class StaffClerkRelationServiceImpl implements StaffClerkRelationService
}
List
<
StaffClerkRelationDTO
>
retList
=
new
ArrayList
<>()
;
for
(
StaffClerkRelationDTO
item
:
list
)
{
boolean
delFlag
=
false
;
String
clerkId
=
item
.
getClerkId
()
;
ClerkDTO
clerk
=
this
.
clerkService
.
getclerkById
(
clerkId
)
;
if
(
null
!=
clerk
&&
clerk
.
getStatus
()
==
1
)
{
retList
.
add
(
item
)
;
}
else
{
if
(
null
==
clerk
||
clerk
.
getStatus
()
!=
1
)
{
delFlag
=
true
;
}
if
(!
delFlag
&&
null
!=
clerk
&&
clerk
.
getClerkType
()<
2
&&
StringUtils
.
isNotEmpty
(
clerk
.
getStoreId
()))
{
StoreDTO
store
=
this
.
storeService
.
getStore
(
clerk
.
getStoreId
())
;
if
(
null
==
store
||
store
.
getStatus
()
==
-
3
)
{
delFlag
=
true
;
}
}
if
(
delFlag
)
{
this
.
mapper
.
delByClerkId
(
clerkId
);
}
else
{
retList
.
add
(
item
)
;
}
}
return
retList
;
...
...
@@ -406,7 +553,17 @@ public class StaffClerkRelationServiceImpl implements StaffClerkRelationService
}
String
clerkId
=
dto
.
getClerkId
()
;
ClerkDTO
clerk
=
this
.
clerkService
.
getclerkById
(
clerkId
)
;
boolean
delFlag
=
false
;
if
(
null
==
clerk
||
clerk
.
getStatus
()
!=
1
)
{
delFlag
=
true
;
}
if
(!
delFlag
&&
null
!=
clerk
&&
clerk
.
getClerkType
()
<
2
&&
StringUtils
.
isNotEmpty
(
clerk
.
getStoreId
()))
{
StoreDTO
store
=
this
.
storeService
.
getStore
(
clerk
.
getStoreId
())
;
if
(
null
==
store
||
store
.
getStatus
()
==
-
3
)
{
delFlag
=
true
;
}
}
if
(
delFlag
)
{
this
.
mapper
.
delByClerkId
(
clerkId
);
dto
=
null
;
}
...
...
haoban-manage3-service/src/main/java/com/gic/haoban/manage/service/service/out/impl/ClerkMainStoreRelatedApiServiceImpl.java
View file @
7f6227f1
...
...
@@ -23,9 +23,10 @@ public class ClerkMainStoreRelatedApiServiceImpl implements ClerkMainStoreRelate
@Override
public
void
setMainStore
(
String
staffId
,
String
storeId
,
String
wxEnterpriseId
)
{
TabHaobanClerkMainStoreRelated
related
=
clerkMainStoreRelatedService
.
select
ByWxEnterpriseIdAndStoreId
(
staffId
,
wxEnterpriseId
);
TabHaobanClerkMainStoreRelated
related
=
clerkMainStoreRelatedService
.
select
StaffMainStore
(
staffId
,
wxEnterpriseId
);
if
(
related
==
null
)
{
clerkMainStoreRelatedService
.
setMainStore
(
staffId
,
storeId
,
wxEnterpriseId
);
this
.
clerkMainStoreRelatedService
.
setMainStore
(
staffId
,
storeId
,
wxEnterpriseId
);
this
.
clerkMainStoreRelatedService
.
reflushExternal
(
wxEnterpriseId
,
staffId
);
}
else
if
(
null
!=
related
&&
(!
related
.
getStoreId
().
equals
(
storeId
)))
{
related
.
setStatusFlag
(
0
);
related
.
setUpdateTime
(
new
Date
());
...
...
haoban-manage3-service/src/main/java/com/gic/haoban/manage/service/service/out/impl/ExternalClerkRelatedApiServiceImpl.java
View file @
7f6227f1
...
...
@@ -488,8 +488,8 @@ public class ExternalClerkRelatedApiServiceImpl implements ExternalClerkRelatedA
// }
@Override
public
List
<
String
>
listMemberAnd
Clerk
(
List
<
String
>
memberIdList
,
List
<
String
>
clerkIdList
,
String
enterpriseId
)
{
List
<
String
>
list
=
tabHaobanExternalClerkRelatedMapper
.
listMemberAnd
Clerk
(
memberIdList
,
clerkIdList
,
enterpriseId
);
public
List
<
String
>
listMemberAnd
Staff
(
List
<
String
>
memberIdList
,
String
staffId
,
String
enterpriseId
)
{
List
<
String
>
list
=
tabHaobanExternalClerkRelatedMapper
.
listMemberAnd
Staff
(
memberIdList
,
staffId
,
enterpriseId
);
return
list
;
}
...
...
haoban-manage3-service/src/main/java/com/gic/haoban/manage/service/service/out/impl/HaobanCommonMQApiServiceImpl.java
View file @
7f6227f1
...
...
@@ -15,6 +15,7 @@ import com.gic.haoban.manage.api.dto.CommonMQDTO;
import
com.gic.haoban.manage.api.service.HaobanCommonMQApiService
;
import
com.gic.haoban.manage.service.service.StaffDepartmentRelatedService
;
import
com.gic.haoban.manage.service.service.WelcomeSendService
;
import
com.gic.member.api.service.MemberOpenCardBusinessService
;
import
com.gic.mq.sdk.GicMQClient
;
import
com.gic.quartz.api.dto.QuartzTaskDTO
;
import
com.gic.quartz.api.service.QuartzService
;
...
...
@@ -32,6 +33,8 @@ public class HaobanCommonMQApiServiceImpl implements HaobanCommonMQApiService {
private
StaffDepartmentRelatedService
staffDepartmentRelatedService
;
@Autowired
private
WelcomeSendService
welcomeSendService
;
@Autowired
private
MemberOpenCardBusinessService
memberOpenCardBusinessService
;
@Override
public
void
putCommonMessage
(
CommonMQDTO
dto
)
{
...
...
@@ -74,6 +77,13 @@ public class HaobanCommonMQApiServiceImpl implements HaobanCommonMQApiService {
if
(
StringUtils
.
isNotBlank
(
staffId
))
{
this
.
staffDepartmentRelatedService
.
repairStaffDepart
(
staffId
);
}
break
;
case
3
:
String
memberId
=
map
.
get
(
"memberId"
)
;
enterpriseId
=
map
.
get
(
"enterpriseId"
)
;
String
clerkId
=
map
.
get
(
"clerkId"
)
;
this
.
memberOpenCardBusinessService
.
memberClerkByQywx
(
enterpriseId
,
memberId
,
clerkId
);
break
;
default
:
break
;
}
...
...
haoban-manage3-service/src/main/java/com/gic/haoban/manage/service/service/out/impl/MemberUnionidRelatedApiServiceImpl.java
View file @
7f6227f1
...
...
@@ -43,6 +43,7 @@ import com.gic.haoban.app.customer.service.api.service.CustomerApiService;
import
com.gic.haoban.base.api.common.ServiceResponse
;
import
com.gic.haoban.common.utils.DingUtils
;
import
com.gic.haoban.manage.api.constants.Manage3Constants
;
import
com.gic.haoban.manage.api.dto.ClerkMainStoreRelatedDTO
;
import
com.gic.haoban.manage.api.dto.ContentMaterialDTO
;
import
com.gic.haoban.manage.api.dto.ExternalClerkRelatedDTO
;
import
com.gic.haoban.manage.api.dto.ExternalMemberLogDTO
;
...
...
@@ -59,6 +60,7 @@ import com.gic.haoban.manage.api.dto.hm.HmQrcodeDTO;
import
com.gic.haoban.manage.api.dto.qdto.hm.WxUserAddLogQDTO
;
import
com.gic.haoban.manage.api.enums.SecretTypeEnum
;
import
com.gic.haoban.manage.api.service.CheckQywxSettingApiService
;
import
com.gic.haoban.manage.api.service.ClerkMainStoreRelatedApiService
;
import
com.gic.haoban.manage.api.service.ExternalClerkRelatedApiService
;
import
com.gic.haoban.manage.api.service.MemberUnionidRelatedApiService
;
import
com.gic.haoban.manage.api.service.hm.HmQrcodeApiService
;
...
...
@@ -191,6 +193,8 @@ public class MemberUnionidRelatedApiServiceImpl implements MemberUnionidRelatedA
private
WelcomeSendService
welcomeSendService
;
@Autowired
private
ExternalMemberService
externalMemberService
;
@Autowired
private
ClerkMainStoreRelatedApiService
clerkMainStoreRelatedApiService
;
GicMQClient
instance
=
GICMQClientUtil
.
getClientInstance
();
...
...
@@ -661,24 +665,7 @@ public class MemberUnionidRelatedApiServiceImpl implements MemberUnionidRelatedA
memberId
=
memberService
.
getMemberIdByPhoneNumber
(
mobile
,
enterpriseId
);
}
if
(
null
==
memberId
)
{
QywxMemberQDTO
qdto
=
new
QywxMemberQDTO
()
;
qdto
.
setEnterpriseId
(
enterpriseId
);
qdto
.
setNick
(
name
);
qdto
.
setPhotoUrl
(
avatar
);
qdto
.
setQrcodeParam
(
qrcodeParam
);
qdto
.
setUnionId
(
unionId
);
if
(
wxEnterpriseRelated
.
getWxEnterpriseType
()==
0
)
{
qdto
.
setUserId
(
externalUserid
);
}
qdto
.
setSence
(
2
);
com
.
gic
.
api
.
base
.
commons
.
ServiceResponse
<
MemberSimpleDetailDTO
>
resp
=
this
.
memberEntranceApiService
.
enterpriseWechatByFriendEntrance
(
qdto
);
log
.
info
(
"新增外部联系人,创建member,resp={},param={}"
,
JSON
.
toJSON
(
resp
),
JSON
.
toJSONString
(
qdto
));
if
(
resp
.
isSuccess
())
{
MemberSimpleDetailDTO
member
=
resp
.
getResult
()
;
memberId
=
member
.
getMemberId
()
;
}
else
{
log
.
info
(
JSON
.
toJSONString
(
resp
));
}
memberId
=
this
.
getMeberId
(
enterpriseId
,
unionId
,
name
,
avatar
,
qrcodeParam
,
externalUserid
,
wxEnterpriseRelated
.
getWxEnterpriseType
(),
2
)
;
}
if
(
memberId
==
null
)
{
log
.
info
(
"新增外部联系人,创建member失败,unionid={},外部联系人id={},"
,
unionId
,
externalUserid
);
...
...
@@ -734,15 +721,23 @@ public class MemberUnionidRelatedApiServiceImpl implements MemberUnionidRelatedA
}
else
{
log
.
info
(
"更新好友表"
);
TabHaobanExternalClerkRelated
exsitDTO
=
externalList
.
get
(
0
);
exsitDTO
.
setMemberId
(
memberId
);
exsitDTO
.
setMemberUnionidRelatedId
(
memberUnionidRelatedId
);
exsitDTO
.
setUnionid
(
unionId
);
exsitDTO
.
setRelationKey
(
relationKey
);
exsitDTO
.
setHeadUrl
(
avatar
);
exsitDTO
.
setStoreId
(
storeId
);
if
(
null
!=
memberId
)
{
exsitDTO
.
setMemberId
(
memberId
);
}
if
(
null
!=
unionId
)
{
exsitDTO
.
setUnionid
(
unionId
);
}
if
(
StringUtils
.
isEmpty
(
exsitDTO
.
getStoreId
()))
{
exsitDTO
.
setStoreId
(
storeId
);
}
if
(
StringUtils
.
isEmpty
(
exsitDTO
.
getClerkId
()))
{
exsitDTO
.
setClerkId
(
clerkId
);
}
exsitDTO
.
setEnterpriseId
(
enterpriseId
);
exsitDTO
.
setClerkId
(
clerkId
);
if
(
StringUtils
.
isNotBlank
(
memberId
)
&&
exsitDTO
.
getStatusFlag
()
!=
1
)
{
if
(
StringUtils
.
isNotBlank
(
exsitDTO
.
getMemberId
())
&&
exsitDTO
.
getStatusFlag
()
!=
1
)
{
exsitDTO
.
setStatusFlag
(
1
);
}
this
.
externalClerkRelatedService
.
update
(
exsitDTO
);
...
...
@@ -1305,9 +1300,7 @@ public class MemberUnionidRelatedApiServiceImpl implements MemberUnionidRelatedA
return
EntityUtil
.
changeEntityByJSON
(
ExternalUserDTO
.
class
,
pojo
);
}
@Override
public
String
addExternal
(
ExternalUserDTO
dto
)
{
String
wxUserId
=
dto
.
getWxUserId
();
private
String
saveExternalUser
(
ExternalUserDTO
dto
)
{
String
wxEnterpriseId
=
dto
.
getWxEnterpriseId
();
String
name
=
StringUtils
.
isBlank
(
dto
.
getName
())
?
"--"
:
dto
.
getName
();
String
createTime
=
dto
.
getAddCreateTime
();
...
...
@@ -1318,9 +1311,9 @@ public class MemberUnionidRelatedApiServiceImpl implements MemberUnionidRelatedA
String
storeId
=
dto
.
getStoreId
();
String
clerkId
=
dto
.
getClerkId
();
String
staffId
=
dto
.
getStaffId
();
if
(
StringUtils
.
isAnyBlank
(
wx
UserId
,
wx
EnterpriseId
,
name
,
createTime
,
externalUserId
,
storeId
,
enterpriseId
,
staffId
,
clerkId
))
{
if
(
StringUtils
.
isAnyBlank
(
wxEnterpriseId
,
name
,
createTime
,
externalUserId
,
storeId
,
enterpriseId
,
staffId
,
clerkId
))
{
log
.
info
(
"【刷新好友】参数有空wxUserId={},wxEnterpriseId={},name={},createTime={},unionId ={},externalUserId ={},memberId ={},storeId ={},enterpriseId ={},staffId={},clerkId={}"
+
""
,
wx
UserId
,
wx
EnterpriseId
,
name
,
createTime
,
unionId
,
externalUserId
,
memberId
,
storeId
,
enterpriseId
,
staffId
,
clerkId
);
+
""
,
wxEnterpriseId
,
name
,
createTime
,
unionId
,
externalUserId
,
memberId
,
storeId
,
enterpriseId
,
staffId
,
clerkId
);
return
"参数不对"
;
}
String
memberUnionidRelatedId
=
this
.
saveMemberUnionTable
(
dto
)
;
...
...
@@ -1656,5 +1649,75 @@ public class MemberUnionidRelatedApiServiceImpl implements MemberUnionidRelatedA
public
void
saveExternalMemberLog
(
ExternalMemberLogDTO
memberLog
)
{
this
.
externalMemberService
.
insert
(
memberLog
)
;
}
@Override
public
String
dealMergeForReflsh
(
ExternalUserDTO
externalUserDTO
,
String
wxEnterpriseId
,
String
staffId
)
{
if
(
externalUserDTO
.
getFriendType
()
==
2
)
{
return
"不是微信好友,是企业微信好友:"
+
externalUserDTO
.
getFriendType
();
}
ClerkMainStoreRelatedDTO
mainStore
=
clerkMainStoreRelatedApiService
.
getWxEnterpriseIdAndStaffId
(
wxEnterpriseId
,
staffId
);
if
(
mainStore
==
null
)
{
return
"主门店不存在"
;
}
StaffClerkRelationDTO
staffClerkRelationDTO
=
staffClerkRelationService
.
getOneBindByStoreId
(
staffId
,
mainStore
.
getStoreId
());
if
(
staffClerkRelationDTO
==
null
)
{
return
"未绑定导购"
;
}
String
enterpriseId
=
staffClerkRelationDTO
.
getEnterpriseId
()
;
TabHaobanWxEnterpriseRelated
wxEnterpriseRelated
=
wxEnterpriseRelatedService
.
getByEnterpriseId
(
wxEnterpriseId
,
enterpriseId
);
if
(
wxEnterpriseRelated
==
null
)
{
log
.
info
(
"没有存在企业关联:{},{}"
,
wxEnterpriseId
,
enterpriseId
);
return
"没有关联企业"
;
}
String
storeId
=
mainStore
.
getStoreId
()
;
String
clerkId
=
staffClerkRelationDTO
.
getClerkId
()
;
externalUserDTO
.
setWxEnterpriseId
(
wxEnterpriseId
);
externalUserDTO
.
setEnterpriseId
(
enterpriseId
);
externalUserDTO
.
setStoreId
(
storeId
);
externalUserDTO
.
setClerkId
(
clerkId
);
externalUserDTO
.
setStaffId
(
staffId
);
boolean
addByWelcome
=
this
.
wxEnterpriseRelatedService
.
getAddByWelcomeFlag
(
wxEnterpriseRelated
,
externalUserDTO
.
getUnionId
(),
false
)
;
if
(
addByWelcome
)
{
log
.
info
(
"好友不同开平:{}"
,
JSONObject
.
toJSONString
(
externalUserDTO
));
return
this
.
saveExternalUser
(
externalUserDTO
);
}
String
clerkCode
=
staffClerkRelationDTO
.
getClerkCode
();
ClerkDTO
clerk
=
clerkService
.
getClerkByClerkCode
(
staffClerkRelationDTO
.
getEnterpriseId
(),
clerkCode
);
if
(
clerk
==
null
)
{
return
"导购不存在:"
+
clerkCode
;
}
String
qrcodeParam
=
clerk
.
getQrcodeParam
();
if
(
StringUtils
.
isBlank
(
qrcodeParam
))
{
log
.
info
(
"导购码不存在:"
+
clerkCode
);
qrcodeParam
=
"clerk_clerk_"
+
clerk
.
getClerkId
()
;
}
String
memberId
=
this
.
getMeberId
(
enterpriseId
,
externalUserDTO
.
getUnionId
(),
externalUserDTO
.
getName
(),
externalUserDTO
.
getAvatar
(),
qrcodeParam
,
externalUserDTO
.
getExternalUserId
(),
wxEnterpriseRelated
.
getWxEnterpriseType
(),
1
)
;
if
(
memberId
==
null
)
{
return
"会员不存在:unionid:"
+
externalUserDTO
.
getUnionId
();
}
externalUserDTO
.
setMemberId
(
memberId
);
return
this
.
saveExternalUser
(
externalUserDTO
);
}
private
String
getMeberId
(
String
enterpriseId
,
String
unionid
,
String
name
,
String
image
,
String
qrcodeParam
,
String
externalUserId
,
int
wxEnterpriseType
,
int
sence
)
{
QywxMemberQDTO
qdto
=
new
QywxMemberQDTO
()
;
qdto
.
setEnterpriseId
(
enterpriseId
);
qdto
.
setNick
(
name
);
qdto
.
setPhotoUrl
(
image
);
qdto
.
setQrcodeParam
(
qrcodeParam
);
qdto
.
setUnionId
(
unionid
);
if
(
wxEnterpriseType
==
0
)
{
qdto
.
setUserId
(
externalUserId
);
}
qdto
.
setSence
(
sence
);
String
memberId
=
null
;
com
.
gic
.
api
.
base
.
commons
.
ServiceResponse
<
MemberSimpleDetailDTO
>
resp
=
this
.
memberEntranceApiService
.
enterpriseWechatByFriendEntrance
(
qdto
);
log
.
info
(
"刷新好友,创建member,resp={},param={}"
,
JSON
.
toJSON
(
resp
),
JSON
.
toJSONString
(
qdto
));
if
(
resp
.
isSuccess
())
{
MemberSimpleDetailDTO
member
=
resp
.
getResult
()
;
memberId
=
member
.
getMemberId
()
;
}
return
memberId
;
}
}
haoban-manage3-service/src/main/java/com/gic/haoban/manage/service/service/out/impl/StaffClerkRelationApiServiceImpl.java
View file @
7f6227f1
...
...
@@ -98,12 +98,17 @@ public class StaffClerkRelationApiServiceImpl implements StaffClerkRelationApiSe
clerkName
=
clerkDTO
.
getClerkName
();
}
String
operClerkId
=
infoDTO
.
getOptStaffId
();
//操作人只有staffId,operName字段存储成员名称
TabHaobanStaff
tabHaobanStaff
=
staffService
.
selectById
(
operClerkId
);
// clerkDTO = clerkService.getClerkByClerkIdNoStatus(clerkRelation.getClerkId());
ClerkDTO
operClerkDTO
=
clerkService
.
getClerkByClerkIdNoStatus
(
operClerkId
);
String
operName
=
null
;
if
(
null
!=
tabHaobanStaff
)
{
operName
=
tabHaobanStaff
.
getStaffName
();
if
(
null
!=
operClerkDTO
)
{
operName
=
operClerkDTO
.
getClerkName
();
}
//如果是小程序解绑,需要存储staffName
if
(
infoDTO
.
getChannelCode
()
!=
null
&&(
infoDTO
.
getChannelCode
().
equals
(
ChannelCodeEnum
.
SELF_UNBIND
.
getCode
())
||
infoDTO
.
getChannelCode
().
equals
(
ChannelCodeEnum
.
SELF_BIND
.
getCode
()))){
TabHaobanStaff
tabHaobanStaff
=
staffService
.
selectById
(
operClerkId
);
if
(
null
!=
tabHaobanStaff
)
{
operName
=
tabHaobanStaff
.
getStaffName
();
}
}
TabHaobanStaffClerkBindLog
enity
=
new
TabHaobanStaffClerkBindLog
();
enity
.
setClerkId
(
clerkRelation
.
getClerkId
());
...
...
@@ -199,23 +204,25 @@ public class StaffClerkRelationApiServiceImpl implements StaffClerkRelationApiSe
logger
.
info
(
"该导购已经被被申请绑定,请审核处理后再绑定"
);
return
ServiceResponse
.
failure
(
"4"
,
"该导购已经被被申请绑定,请审核处理后再绑定"
);
}
List
<
AuditDTO
>
list
=
auditApiService
.
listByStoreId
(
staffClerkRelationDTO
.
getStoreId
());
if
(
CollectionUtils
.
isNotEmpty
(
list
))
{
Set
<
String
>
staffIds
=
list
.
stream
().
map
(
AuditDTO:
:
getCommitStaffId
).
collect
(
Collectors
.
toSet
());
if
(
staffIds
.
contains
(
staffId
))
{
logger
.
info
(
"该成员已经已经在该门店下申请了绑定,请审核处理后再绑定"
);
return
ServiceResponse
.
failure
(
"5"
,
"该成员已经已经在该门店下申请了绑定,请审核处理后再绑定"
);
if
(
manageFlag
==
null
||
manageFlag
==
0
)
{
List
<
AuditDTO
>
list
=
auditApiService
.
listByStoreId
(
staffClerkRelationDTO
.
getStoreId
());
if
(
CollectionUtils
.
isNotEmpty
(
list
))
{
Set
<
String
>
staffIds
=
list
.
stream
().
map
(
AuditDTO:
:
getCommitStaffId
).
collect
(
Collectors
.
toSet
());
if
(
staffIds
.
contains
(
staffId
))
{
logger
.
info
(
"该成员已经已经在该门店下申请了绑定,请审核处理后再绑定"
);
return
ServiceResponse
.
failure
(
"5"
,
"该成员已经已经在该门店下申请了绑定,请审核处理后再绑定"
);
}
}
StaffClerkRelationDTO
storeHasBind
=
staffClerkRelationService
.
getOneBindByStoreId
(
staffId
,
staffClerkRelationDTO
.
getStoreId
());
if
(
storeHasBind
!=
null
)
{
logger
.
info
(
"该导购已在该门店下有其它成员绑定"
);
return
ServiceResponse
.
failure
(
"3"
,
"该导购已在该门店下有其它成员绑定"
);
}
List
<
StaffClerkRelationDTO
>
staffClerkRelationDTOS
=
staffClerkRelationService
.
listManageBindByStaffId
(
staffId
);
if
(
CollectionUtils
.
isNotEmpty
(
staffClerkRelationDTOS
))
{
logger
.
info
(
"该导购已绑定区经,不允许绑定导购"
);
return
ServiceResponse
.
failure
(
"3"
,
"该导购已绑定区经,不允许绑定导购"
);
}
}
StaffClerkRelationDTO
storeHasBind
=
staffClerkRelationService
.
getOneBindByStoreId
(
staffId
,
staffClerkRelationDTO
.
getStoreId
());
if
(
storeHasBind
!=
null
)
{
logger
.
info
(
"该导购已在该门店下有其它成员绑定"
);
return
ServiceResponse
.
failure
(
"3"
,
"该导购已在该门店下有其它成员绑定"
);
}
List
<
StaffClerkRelationDTO
>
staffClerkRelationDTOS
=
staffClerkRelationService
.
listManageBindByStaffId
(
staffId
);
if
(
CollectionUtils
.
isNotEmpty
(
staffClerkRelationDTOS
))
{
logger
.
info
(
"该导购已绑定区经,不允许绑定导购"
);
return
ServiceResponse
.
failure
(
"3"
,
"该导购已绑定区经,不允许绑定导购"
);
}
return
null
;
}
...
...
@@ -540,11 +547,11 @@ public class StaffClerkRelationApiServiceImpl implements StaffClerkRelationApiSe
// 导购门店转移
private
void
moveOrAddClerk
(
ClerkSyncQDTO
clerkSyncQDTO
,
StaffClerkRelationDTO
oldRelationDTO
)
{
boolean
flag
=
false
;
/*
boolean flag = false;
if (null != RedisUtil.getCache("clerkMoveFlag2022")) {
flag = true;
}
if
(
flag
)
{
if (flag) {
*/
String
oldClerkId
=
oldRelationDTO
.
getClerkId
();
this
.
staffClerkRelationService
.
delBind
(
oldClerkId
,
"-1"
,
ChannelCodeEnum
.
SYNC_UNBIND
.
getCode
(),
clerkSyncQDTO
.
getClerkId
(),
oldRelationDTO
.
getWxEnterpriseId
());
// 设置新的ID
...
...
@@ -555,15 +562,15 @@ public class StaffClerkRelationApiServiceImpl implements StaffClerkRelationApiSe
if
(
response
==
null
)
{
this
.
staffClerkRelationService
.
insert
(
oldRelationDTO
);
}
}
else
{
/*
} else {
String oldClerkId = oldRelationDTO.getClerkId();
this.staffClerkRelationService.delBind(oldClerkId, "-1", ChannelCodeEnum.SYNC_UNBIND.getCode(), null,null);
// 设置新的ID
oldRelationDTO.setClerkId(clerkSyncQDTO.getClerkId());
oldRelationDTO.setStoreId(clerkSyncQDTO.getStoreId());
ServiceResponse resp = this.bindStaffClerk(oldRelationDTO, "-1", ChannelCodeEnum.SYNC_BIND.getCode());
logger
.
info
(
"绑定结果正常:{},{}"
,
JSONObject
.
toJSONString
(
resp
),
oldRelationDTO
.
getClerkId
());
}
logger.info("绑定结果正常:{},{}", JSONObject.toJSONString(resp), oldRelationDTO.getClerkId());
*/
//
}
}
@Override
...
...
haoban-manage3-service/src/main/java/com/gic/haoban/manage/service/task/friend/FriendClerkSyncNewOperation.java
View file @
7f6227f1
...
...
@@ -56,7 +56,7 @@ public class FriendClerkSyncNewOperation implements BaseSyncOperation {
@Override
public
void
dealSingleByMq
(
DealParamMqDTO
dealParamMqDTO
,
TabHaobanPreDealLog
dataPre
)
{
logger
.
info
(
"dealParamMqDTO={},dataPre={}"
,
JSON
.
toJSONString
(
dealParamMqDTO
),
JSON
.
toJSONString
(
dataPre
));
logger
.
info
(
"
刷新好友列表(7-8),
dealParamMqDTO={},dataPre={}"
,
JSON
.
toJSONString
(
dealParamMqDTO
),
JSON
.
toJSONString
(
dataPre
));
String
reason
=
""
;
boolean
dealFlag
=
true
;
try
{
...
...
@@ -82,7 +82,7 @@ public class FriendClerkSyncNewOperation implements BaseSyncOperation {
return
;
}
if
(
CollectionUtils
.
isEmpty
(
selfUserIdList
))
{
logger
.
info
(
"
改用户没有
外部联系人:{}"
,
JSONObject
.
toJSONString
(
dataPre
));
logger
.
info
(
"
该用户无代开
外部联系人:{}"
,
JSONObject
.
toJSONString
(
dataPre
));
dealFlag
=
false
;
reason
=
"该用户没有外部联系人"
;
return
;
...
...
@@ -100,7 +100,7 @@ public class FriendClerkSyncNewOperation implements BaseSyncOperation {
return
;
}
if
(
CollectionUtils
.
isEmpty
(
userIdList
))
{
logger
.
info
(
"该用户
没有外部联系人2
:{}"
,
JSONObject
.
toJSONString
(
dataPre
));
logger
.
info
(
"该用户
无第三方外部联系人
:{}"
,
JSONObject
.
toJSONString
(
dataPre
));
dealFlag
=
false
;
reason
=
"该用户没有外部联系人"
;
return
;
...
...
haoban-manage3-service/src/main/java/com/gic/haoban/manage/service/task/friend/FriendSyncNewOperation.java
View file @
7f6227f1
...
...
@@ -3,25 +3,20 @@ package com.gic.haoban.manage.service.task.friend;
import
cn.hutool.crypto.SecureUtil
;
import
com.alibaba.fastjson.JSON
;
import
com.alibaba.fastjson.JSONObject
;
import
com.gic.clerk.api.dto.ClerkDTO
;
import
com.gic.clerk.api.service.ClerkService
;
import
com.gic.commons.util.GICMQClientUtil
;
import
com.gic.haoban.manage.api.dto.*
;
import
com.gic.haoban.manage.api.enums.PreDealStatusEnum
;
import
com.gic.haoban.manage.api.enums.PreDealTypeEnum
;
import
com.gic.haoban.manage.api.enums.SyncTaskStatusEnum
;
import
com.gic.haoban.manage.api.service.ClerkMainStoreRelatedApiService
;
import
com.gic.haoban.manage.api.service.MemberUnionidRelatedApiService
;
import
com.gic.haoban.manage.service.entity.TabHaobanPreDealLog
;
import
com.gic.haoban.manage.service.entity.TabHaobanWxEnterpriseRelated
;
import
com.gic.haoban.manage.service.exception.WxApiLimitException
;
import
com.gic.haoban.manage.service.service.*
;
import
com.gic.haoban.manage.service.task.BaseSyncOperation
;
import
com.gic.member.api.dto.MemberSimpleDetailDTO
;
import
com.gic.member.api.dto.QywxMemberQDTO
;
import
com.gic.member.api.service.MemberEntranceApiService
;
import
com.gic.mq.sdk.GicMQClient
;
import
com.gic.redis.data.util.RedisUtil
;
import
org.apache.commons.collections.CollectionUtils
;
import
org.apache.commons.lang3.StringUtils
;
import
org.slf4j.Logger
;
import
org.slf4j.LoggerFactory
;
...
...
@@ -48,69 +43,67 @@ public class FriendSyncNewOperation implements BaseSyncOperation {
@Autowired
private
SyncTaskService
syncTaskService
;
@Autowired
private
ClerkMainStoreRelatedApiService
clerkMainStoreRelatedApiService
;
@Autowired
private
StaffClerkRelationService
staffClerkRelationService
;
@Autowired
private
ClerkService
clerkService
;
@Autowired
private
FriendClerkSyncNewOperation
friendClerkSyncNewOperation
;
@Autowired
private
WxEnterpriseRelatedService
wxEnterpriseRelatedService
;
@Autowired
private
MemberEntranceApiService
memberEntranceApiService
;
private
static
final
String
TRY_AGAIN
=
"haoban_fresh_wx_friend_again_"
;
@Override
public
void
dealSingleByMq
(
DealParamMqDTO
dealParamMqDTO
,
TabHaobanPreDealLog
dataPre
)
{
logger
.
info
(
"
同步好友开始
,第三方={}"
,
JSONObject
.
toJSONString
(
dataPre
));
logger
.
info
(
"
刷新好友
,第三方={}"
,
JSONObject
.
toJSONString
(
dataPre
));
String
reason
=
"成功"
;
boolean
dealFlag
=
true
;
String
relationKey
=
"-1"
;
try
{
if
(
dataPre
.
getStatusFlag
()
!=
PreDealStatusEnum
.
pre
.
getVal
())
{
logger
.
info
(
"已经处理过,无需重复处理:{}"
,
JSONObject
.
toJSONString
(
dataPre
));
return
;
}
String
wxEnterpriseId
=
dataPre
.
getWxEnterpriseId
();
String
wxUserId
=
dataPre
.
getDataId
().
split
(
"###"
)[
1
]
;
String
taskId
=
dealParamMqDTO
.
getTaskId
();
String
externalUserId
=
dataPre
.
getDataContent
();
String
staffId
=
dataPre
.
getpDataId
()
;
if
(
dataPre
.
getStatusFlag
()
!=
PreDealStatusEnum
.
pre
.
getVal
())
{
logger
.
info
(
"已经处理过,无需重复处理:{}"
,
JSONObject
.
toJSONString
(
dataPre
));
return
;
}
ExternalUserDTO
externalUserDTO
=
memberUnionidRelatedApiService
.
getExternalUseridInfo
(
wxEnterpriseId
,
wxUserId
,
externalUserId
);
if
(
externalUserDTO
==
null
)
{
logger
.
info
(
"第三方外部联系人详情查询失败,staffId={},{},{}"
,
staffId
,
wxUserId
,
externalUserId
);
dealFlag
=
false
;
reason
=
"好友不存在"
;
return
;
}
//relationkey
relationKey
=
SecureUtil
.
md5
(
staffId
+
"_"
+
externalUserDTO
.
getName
()
+
"_"
+
externalUserDTO
.
getAddCreateTime
());
logger
.
info
(
"第三方生成relationKey:{},{},{} 客户={}, 结果={}"
,
staffId
,
externalUserDTO
.
getName
(),
externalUserDTO
.
getAddCreateTime
()
,
externalUserDTO
.
getExternalUserId
()
,
relationKey
);
String
str
=
staffId
+
"_"
+
externalUserDTO
.
getName
()
+
"_"
+
externalUserDTO
.
getAddCreateTime
()
;
relationKey
=
SecureUtil
.
md5
(
str
);
logger
.
info
(
"生成第三方relationKey={},staff={},{}"
,
relationKey
,
staffId
,
str
);
// 根据关联键relationkey查看自建应用 是否有数据
TabHaobanPreDealLog
selfPre
=
preDealService
.
getByRelationKey
(
taskId
,
PreDealTypeEnum
.
self_friend
.
getVal
(),
relationKey
);
if
(
null
==
selfPre
)
{
logger
.
info
(
"用户的
自建应用不存在该
数据:{},{}"
,
JSONObject
.
toJSONString
(
dataPre
),
JSONObject
.
toJSONString
(
externalUserDTO
));
List
<
TabHaobanPreDealLog
>
list
=
this
.
preDealService
.
getByRelationKey
(
taskId
,
PreDealTypeEnum
.
self_friend
.
getVal
(),
relationKey
);
if
(
CollectionUtils
.
isEmpty
(
list
)
)
{
logger
.
info
(
"用户的
代开发不存在关联
数据:{},{}"
,
JSONObject
.
toJSONString
(
dataPre
),
JSONObject
.
toJSONString
(
externalUserDTO
));
dealFlag
=
false
;
reason
=
"用户的
自建
应用不存在该数据:"
+
relationKey
;
reason
=
"用户的
代开发
应用不存在该数据:"
+
relationKey
;
return
;
}
if
(
list
.
size
()>
1
)
{
logger
.
info
(
"用户的代开发应用数据多条:{},{}"
,
JSONObject
.
toJSONString
(
dataPre
),
JSONObject
.
toJSONString
(
externalUserDTO
));
dealFlag
=
false
;
reason
=
"用户的代开发应用数据多条:"
+
relationKey
;
return
;
}
TabHaobanPreDealLog
selfPre
=
list
.
get
(
0
)
;
logger
.
info
(
"代开发的数据={}"
,
selfPre
.
getDataContent
());
ExternalUserDTO
selfUserData
=
JSON
.
parseObject
(
selfPre
.
getDataContent
(),
ExternalUserDTO
.
class
);
externalUserDTO
.
setUnionId
(
selfUserData
.
getUnionId
());
externalUserDTO
.
setSelfExternalUserId
(
selfUserData
.
getExternalUserId
());
externalUserDTO
.
setAvatar
(
selfUserData
.
getAvatar
());
externalUserDTO
.
setName
(
selfUserData
.
getName
());
//序列化数据
String
ret
=
dealMerge
(
externalUserDTO
,
dataPre
)
;
String
ret
=
this
.
memberUnionidRelatedApiService
.
dealMergeForReflsh
(
externalUserDTO
,
wxEnterpriseId
,
staffId
)
;
if
(
StringUtils
.
isNotBlank
(
ret
))
{
logger
.
info
(
"好友创建失败:{},{}"
,
ret
,
JSONObject
.
toJSONString
(
externalUserDTO
));
dealFlag
=
false
;
reason
=
ret
+
":"
+
relationKey
;
return
;
}
//更新状态
preDealService
.
updateFriendStatusByDataId
(
taskId
,
dataPre
.
getDataId
(),
PreDealStatusEnum
.
computed
.
getVal
(),
reason
,
externalUserDTO
.
getMemberId
(),
relationKey
,
PreDealTypeEnum
.
friend
.
getVal
());
dealSuccess
(
taskId
,
dataPre
.
getDataId
(),
dataPre
.
getpDataId
(),
wxEnterpriseId
);
...
...
@@ -155,75 +148,6 @@ public class FriendSyncNewOperation implements BaseSyncOperation {
return
true
;
}
private
String
dealMerge
(
ExternalUserDTO
externalUserDTO
,
TabHaobanPreDealLog
dataPre
)
{
String
wxEnterpriseId
=
dataPre
.
getWxEnterpriseId
();
String
wxUserId
=
dataPre
.
getDataId
().
split
(
"###"
)[
1
]
;
if
(
externalUserDTO
.
getFriendType
()
==
2
)
{
return
"不是微信好友,是企业微信好友:"
+
externalUserDTO
.
getFriendType
();
}
String
staffId
=
dataPre
.
getpDataId
()
;
ClerkMainStoreRelatedDTO
mainStore
=
clerkMainStoreRelatedApiService
.
getWxEnterpriseIdAndStaffId
(
wxEnterpriseId
,
staffId
);
if
(
mainStore
==
null
)
{
return
"主门店不存在"
;
}
StaffClerkRelationDTO
staffClerkRelationDTO
=
staffClerkRelationService
.
getOneBindByStoreId
(
staffId
,
mainStore
.
getStoreId
());
if
(
staffClerkRelationDTO
==
null
)
{
return
"未绑定导购"
;
}
String
enterpriseId
=
staffClerkRelationDTO
.
getEnterpriseId
()
;
TabHaobanWxEnterpriseRelated
wxEnterpriseRelated
=
wxEnterpriseRelatedService
.
getByEnterpriseId
(
wxEnterpriseId
,
enterpriseId
);
if
(
wxEnterpriseRelated
==
null
)
{
logger
.
info
(
"没有存在企业关联:{},{}"
,
wxEnterpriseId
,
enterpriseId
);
return
"没有关联企业"
;
}
String
storeId
=
mainStore
.
getStoreId
()
;
String
clerkId
=
staffClerkRelationDTO
.
getClerkId
()
;
externalUserDTO
.
setWxEnterpriseId
(
wxEnterpriseId
);
externalUserDTO
.
setEnterpriseId
(
enterpriseId
);
externalUserDTO
.
setStoreId
(
storeId
);
externalUserDTO
.
setClerkId
(
clerkId
);
externalUserDTO
.
setWxUserId
(
wxUserId
);
externalUserDTO
.
setStaffId
(
staffId
);
boolean
addByWelcome
=
this
.
wxEnterpriseRelatedService
.
getAddByWelcomeFlag
(
wxEnterpriseRelated
,
externalUserDTO
.
getUnionId
(),
false
)
;
if
(
addByWelcome
)
{
logger
.
info
(
"好友不同开平:{}"
,
JSONObject
.
toJSONString
(
externalUserDTO
));
return
memberUnionidRelatedApiService
.
addExternal
(
externalUserDTO
);
}
String
clerkCode
=
staffClerkRelationDTO
.
getClerkCode
();
ClerkDTO
clerk
=
clerkService
.
getClerkByClerkCode
(
staffClerkRelationDTO
.
getEnterpriseId
(),
clerkCode
);
if
(
clerk
==
null
)
{
return
"导购不存在:"
+
clerkCode
;
}
String
qrcodeParam
=
clerk
.
getQrcodeParam
();
if
(
StringUtils
.
isBlank
(
qrcodeParam
))
{
logger
.
info
(
"导购码不存在:"
+
clerkCode
);
qrcodeParam
=
"clerk_clerk_"
+
clerk
.
getClerkId
()
;
}
QywxMemberQDTO
qdto
=
new
QywxMemberQDTO
()
;
qdto
.
setEnterpriseId
(
enterpriseId
);
qdto
.
setNick
(
externalUserDTO
.
getName
());
qdto
.
setPhotoUrl
(
externalUserDTO
.
getAvatar
());
qdto
.
setQrcodeParam
(
qrcodeParam
);
qdto
.
setUnionId
(
externalUserDTO
.
getUnionId
());
if
(
wxEnterpriseRelated
.
getWxEnterpriseType
()==
0
)
{
qdto
.
setUserId
(
externalUserDTO
.
getExternalUserId
());
}
qdto
.
setSence
(
1
);
String
memberId
=
null
;
com
.
gic
.
api
.
base
.
commons
.
ServiceResponse
<
MemberSimpleDetailDTO
>
resp
=
this
.
memberEntranceApiService
.
enterpriseWechatByFriendEntrance
(
qdto
);
logger
.
info
(
"加好友,创建member,resp={},param={}"
,
JSON
.
toJSON
(
resp
),
JSON
.
toJSONString
(
qdto
));
if
(
resp
.
isSuccess
())
{
MemberSimpleDetailDTO
member
=
resp
.
getResult
()
;
memberId
=
member
.
getMemberId
()
;
}
if
(
memberId
==
null
)
{
return
"会员不存在:unionid:"
+
externalUserDTO
.
getUnionId
();
}
externalUserDTO
.
setMemberId
(
memberId
);
return
memberUnionidRelatedApiService
.
addExternal
(
externalUserDTO
);
}
public
void
dealException
(
String
taskId
,
String
dataId
,
String
pDataId
,
String
reason
,
String
relationKey
)
{
preDealService
.
updateFriendStatusByDataId
(
taskId
,
dataId
,
PreDealStatusEnum
.
exception
.
getVal
(),
reason
,
null
,
relationKey
,
PreDealTypeEnum
.
friend
.
getVal
());
checkDepartmentTask
(
taskId
,
pDataId
);
...
...
haoban-manage3-service/src/main/java/com/gic/haoban/manage/service/task/friend/SelfFriendSyncNewOperation.java
View file @
7f6227f1
...
...
@@ -51,7 +51,7 @@ public class SelfFriendSyncNewOperation implements BaseSyncOperation {
@Override
public
void
dealSingleByMq
(
DealParamMqDTO
dealParamMqDTO
,
TabHaobanPreDealLog
dataPre
)
{
logger
.
info
(
"
同步好友开始,自建
代开发={}"
,
JSONObject
.
toJSONString
(
dataPre
));
logger
.
info
(
"
刷新好友列表7,
代开发={}"
,
JSONObject
.
toJSONString
(
dataPre
));
String
reason
=
"成功"
;
boolean
dealFlag
=
true
;
try
{
...
...
@@ -60,10 +60,10 @@ public class SelfFriendSyncNewOperation implements BaseSyncOperation {
String
staffId
=
dataPre
.
getpDataId
()
;
String
taskId
=
dealParamMqDTO
.
getTaskId
();
String
externalUserId
=
dataPre
.
getDataContent
();
// 查询企微侧外部联系人详情
ExternalUserDTO
externalUserDTO
=
memberUnionidRelatedApiService
.
getCorpSelfExternalUseridInfo
(
wxEnterpriseId
,
wxUserId
,
externalUserId
);
if
(
externalUserDTO
==
null
)
{
logger
.
info
(
"
外部联系人好友不存在:{}"
,
JSONObject
.
toJSONString
(
dataPre
)
);
logger
.
info
(
"
代开发外部联系人详情查询失败,staffId={},{},{}"
,
staffId
,
wxUserId
,
externalUserId
);
dealException
(
taskId
,
dataPre
.
getDataId
(),
null
,
"好友不存在"
);
return
;
}
...
...
@@ -74,13 +74,11 @@ public class SelfFriendSyncNewOperation implements BaseSyncOperation {
json
.
put
(
"avatar"
,
externalUserDTO
.
getAvatar
());
json
.
put
(
"externalUserId"
,
externalUserDTO
.
getExternalUserId
());
json
.
put
(
"addCreateTime"
,
externalUserDTO
.
getAddCreateTime
());
//relationkey
logger
.
info
(
"生成relationKey:{},{},{}"
,
staffId
,
externalUserDTO
.
getName
(),
externalUserDTO
.
getAddCreateTime
());
String
relationKey
=
SecureUtil
.
md5
(
staffId
+
"_"
+
externalUserDTO
.
getName
()
+
"_"
+
externalUserDTO
.
getAddCreateTime
());
logger
.
info
(
"relationKey:{},{}"
,
relationKey
,
externalUserDTO
.
getExternalUserId
());
String
str
=
staffId
+
"_"
+
externalUserDTO
.
getName
()
+
"_"
+
externalUserDTO
.
getAddCreateTime
()
;
String
relationKey
=
SecureUtil
.
md5
(
str
);
logger
.
info
(
"生成代开发relationKey={},staff={},{}"
,
relationKey
,
staffId
,
str
);
//更新状态
preDealService
.
updateFriendStatusByDataId
(
taskId
,
dataPre
.
getDataId
(),
PreDealStatusEnum
.
computed
.
getVal
(),
reason
,
json
.
toJSONString
(),
relationKey
,
PreDealTypeEnum
.
self_friend
.
getVal
());
this
.
preDealService
.
updateFriendStatusByDataId
(
taskId
,
dataPre
.
getDataId
(),
PreDealStatusEnum
.
computed
.
getVal
(),
reason
,
json
.
toJSONString
(),
relationKey
,
PreDealTypeEnum
.
self_friend
.
getVal
());
dealSuccess
(
taskId
,
dataPre
.
getDataId
(),
null
,
wxEnterpriseId
);
}
catch
(
WxApiLimitException
e
)
{
logger
.
info
(
"接口次数限制:{}"
,
JSONObject
.
toJSONString
(
dataPre
));
...
...
haoban-manage3-service/src/main/resources/mapper/TabHaobanExternalClerkRelatedMapper.xml
View file @
7f6227f1
...
...
@@ -745,6 +745,13 @@
and status_flag in (1,3,4)
</update>
<select
id=
"listByClerkId"
resultType=
"String"
>
select member_id from tab_haoban_external_clerk_related
where staff_id = #{staffId}
and clerk_id = #{clerkId}
and status_flag = 1
</select>
<update
id=
"updateExternalStatus"
>
update tab_haoban_external_clerk_related set external_status = #{status} where
external_user_id = #{externalUserid} and wx_enterprise_id = #{wxEnterpriseId}
...
...
@@ -774,4 +781,16 @@
</foreach>
</select>
<select
id=
"listMemberAndStaff"
resultType=
"java.lang.String"
>
select member_id
from tab_haoban_external_clerk_related
where member_id in
<foreach
collection=
"memberIdList"
item=
"item"
separator=
","
open=
"("
close=
")"
>
#{item}
</foreach>
and staff_id = #{staffId}
and enterprise_id = #{enterpriseId}
AND status_flag = 1
</select>
</mapper>
\ No newline at end of file
haoban-manage3-web/src/main/java/com/gic/haoban/manage/web/controller/StaffController.java
View file @
7f6227f1
...
...
@@ -374,11 +374,13 @@ public class StaffController extends WebBaseController {
}
}
StoreDTO
store
=
storeService
.
getStore
(
clerkInfoVo
.
getStoreId
());
if
(
null
!=
store
)
{
if
(
null
!=
store
&&
store
.
getStatus
()
!=
-
3
)
{
clerkInfoVo
.
setStoreName
(
store
.
getStoreName
());
}
});
if
(
manageFlag
==
null
||
manageFlag
!=
1
)
{
retList
=
retList
.
stream
().
filter
(
o
->
StringUtils
.
isNotEmpty
(
o
.
getStoreName
())).
collect
(
Collectors
.
toList
())
;
}
}
}
return
resultResponse
(
HaoBanErrCode
.
ERR_1
,
retList
);
...
...
haoban-manage3-web/src/main/java/com/gic/haoban/manage/web/controller/chat/GroupChatController.java
View file @
7f6227f1
package
com
.
gic
.
haoban
.
manage
.
web
.
controller
.
chat
;
import
java.util.ArrayList
;
import
java.util.List
;
import
org.apache.commons.collections.CollectionUtils
;
import
org.apache.commons.lang3.StringUtils
;
import
org.apache.logging.log4j.LogManager
;
import
org.apache.logging.log4j.Logger
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.web.bind.annotation.RequestBody
;
import
org.springframework.web.bind.annotation.RequestMapping
;
import
org.springframework.web.bind.annotation.RestController
;
import
cn.hutool.core.collection.CollUtil
;
import
cn.hutool.core.convert.Convert
;
import
com.gic.api.base.commons.BasePageInfo
;
import
com.gic.api.base.commons.Page
;
import
com.gic.api.base.commons.ServiceResponse
;
import
com.gic.commons.util.ExcelUtils
;
import
com.gic.commons.webapi.reponse.RestResponse
;
import
com.gic.enterprise.api.service.EnterpriseService
;
import
com.gic.haoban.base.api.common.pojo.dto.WebLoginDTO
;
import
com.gic.haoban.common.utils.AuthWebRequestUtil
;
import
com.gic.haoban.manage.api.dto.StaffDTO
;
...
...
@@ -28,14 +20,29 @@ import com.gic.haoban.manage.api.dto.qdto.chat.GroupChatUserSearchQDTO;
import
com.gic.haoban.manage.api.dto.qdto.chat.OwnerSearchQDTO
;
import
com.gic.haoban.manage.api.service.StaffApiService
;
import
com.gic.haoban.manage.api.service.chat.GroupChatApiService
;
import
com.gic.haoban.manage.web.errCode.HaoBanErrCode
;
import
com.gic.haoban.manage.web.log.LogRecordUserServiceImpl
;
import
com.gic.log.record.anno.GicLogRecord
;
import
com.gic.log.record.util.GicLogRecordCategoryEnum
;
import
com.gic.log.record.util.GicLogRecordEvaluationContext
;
import
com.gic.log.record.util.GicLogRecordOptTypeEnum
;
import
org.apache.commons.collections.CollectionUtils
;
import
org.apache.commons.lang3.StringUtils
;
import
org.apache.logging.log4j.LogManager
;
import
org.apache.logging.log4j.Logger
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.web.bind.annotation.RequestBody
;
import
org.springframework.web.bind.annotation.RequestMapping
;
import
org.springframework.web.bind.annotation.RestController
;
import
javax.servlet.http.HttpServletRequest
;
import
javax.servlet.http.HttpServletResponse
;
import
java.util.ArrayList
;
import
java.util.Arrays
;
import
java.util.List
;
/**
*
*
* @ClassName: GroupChatController
* @Description: 群
* @author xugh
...
...
@@ -52,6 +59,8 @@ public class GroupChatController {
private
GroupChatApiService
groupChatApiService
;
@Autowired
private
StaffApiService
staffApiService
;
@Autowired
private
EnterpriseService
enterpriseService
;
@RequestMapping
(
"get-set-gic-flag"
)
public
RestResponse
<
Object
>
getFlag
()
{
...
...
@@ -63,7 +72,7 @@ public class GroupChatController {
}
/**
*
*
* @Title: save
* @Description: 认领gic
* @author xugh
...
...
@@ -204,5 +213,52 @@ public class GroupChatController {
GicLogRecordEvaluationContext
.
putOptTargetId
(
AuthWebRequestUtil
.
getLoginUser
().
getClerkId
());
return
RestResponse
.
successResult
(
resp
.
getResult
());
}
/**
* 客户群列表数据明细导出
*/
@RequestMapping
(
"customer-group-export"
)
public
RestResponse
<
Boolean
>
customerGroupExport
(
HttpServletRequest
request
,
HttpServletResponse
response
,
GroupChatSearchQDTO
qdto
)
{
// 登录校验
WebLoginDTO
loginUser
=
AuthWebRequestUtil
.
getLoginUser
();
if
(
loginUser
==
null
||
StringUtils
.
isBlank
(
loginUser
.
getEnterpriseId
()))
{
return
RestResponse
.
failure
(
Convert
.
toStr
(
HaoBanErrCode
.
ERR_4
.
getCode
()),
HaoBanErrCode
.
ERR_4
.
getMsg
());
}
String
sortColumn
=
qdto
.
getSortColumn
();
if
(
StringUtils
.
isBlank
(
sortColumn
))
{
sortColumn
=
null
;
}
else
if
(
"totalCount"
.
equals
(
sortColumn
))
{
sortColumn
=
"total_count"
;
}
else
if
(
"totalMemberCount"
.
equals
(
sortColumn
))
{
sortColumn
=
"total_member_count"
;
}
else
if
(
"addMemberCount"
.
equals
(
sortColumn
))
{
sortColumn
=
"add_member_count"
;
}
else
if
(
"addCount"
.
equals
(
sortColumn
))
{
sortColumn
=
"add_count"
;
}
else
if
(
"quitCount"
.
equals
(
sortColumn
))
{
sortColumn
=
"quit_count"
;
}
else
if
(
"quitMemberCount"
.
equals
(
sortColumn
))
{
sortColumn
=
"quit_member_count"
;
}
BasePageInfo
basePageInfo
=
new
BasePageInfo
()
;
basePageInfo
.
setPageNum
(
1
);
basePageInfo
.
setPageSize
(
99999
);
qdto
.
setSortColumn
(
sortColumn
);
qdto
.
setWxEnterpriseId
(
loginUser
.
getWxEnterpriseId
());
qdto
.
setEnterpriseId
(
loginUser
.
getEnterpriseId
());
ServiceResponse
<
Page
<
GroupChatDTO
>>
page
=
this
.
groupChatApiService
.
listPage
(
qdto
,
basePageInfo
);
if
(
page
.
isSuccess
()
&&
CollUtil
.
isNotEmpty
(
page
.
getResult
().
getResult
())){
String
fileName
=
"客户群列表数据"
;
List
<
String
>
titleList
=
Arrays
.
asList
(
"客户群ID"
,
"客户群名称"
,
"群人数"
,
"群客户数"
,
"新增总数"
,
"流失总数"
,
"群主"
,
"群主在好办小程序关联状态"
,
"创建时间"
);
List
<
String
>
fileList
=
Arrays
.
asList
(
"groupChatId"
,
"name"
,
"totalCount"
,
"totalMemberCount"
,
"addCount"
,
"quitCount"
,
"staffName"
,
"clerkRelationExcel"
,
"createTime"
);
try
{
ExcelUtils
.
xls
(
response
,
request
,
fileName
,
page
.
getResult
().
getResult
(),
fileList
,
titleList
);
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
logger
.
info
(
"导出失败"
);
}
return
RestResponse
.
successResult
(
true
);
}
return
RestResponse
.
successResult
(
false
);
}
}
haoban-manage3-wx/src/main/java/com/gic/haoban/manage/web/controller/WxStaffController.java
View file @
7f6227f1
...
...
@@ -186,9 +186,13 @@ public class WxStaffController extends WebBaseController {
List
<
StaffVO
>
resultList
=
new
ArrayList
<>();
for
(
StaffDTO
staffDTO
:
resultlist
)
{
String
enterpriseId
=
staffDTO
.
getEnterpriseId
();
long
memberCount
=
distributeApiService
.
getClerkMemberCount
(
enterpriseId
,
staffDTO
.
getClerkId
(),
storeId
);
logger
.
info
(
"【获取会员数】enterpriseId={},clerkId={},storeId={},memberCount={}"
,
enterpriseId
,
staffDTO
.
getClerkId
(),
storeId
,
memberCount
);
String
staffClerkId
=
staffDTO
.
getClerkId
()
;
ClerkDTO
clerk
=
this
.
clerkService
.
getclerkById
(
staffClerkId
)
;
if
(
null
!=
clerk
)
{
staffDTO
.
setStaffName
(
clerk
.
getClerkName
());
}
long
memberCount
=
customerApiService
.
countMember
(
enterpriseId
,
storeId
,
staffDTO
.
getClerkId
());
logger
.
info
(
"【获取会员数】enterpriseId={},clerkId={},storeId={},memberCount={}"
,
enterpriseId
,
staffDTO
.
getClerkId
(),
storeId
,
memberCount
);
staffDTO
.
setMemberCount
(
Convert
.
toInt
(
memberCount
,
0
));
resultList
.
add
(
EntityUtil
.
changeEntityNew
(
StaffVO
.
class
,
staffDTO
));
}
...
...
@@ -631,15 +635,7 @@ public class WxStaffController extends WebBaseController {
@HttpLimit
@RequestMapping
(
"/check-main-store"
)
public
HaobanResponse
checkMainStore
(
String
staffId
,
String
storeId
,
String
wxEnterpriseId
,
String
dateStr
)
{
StaffDTO
staff
=
staffApiService
.
selectById
(
staffId
);
Date
curDate
=
new
Date
();
if
(
staff
==
null
)
{
return
resultResponse
(
HaoBanErrCode
.
ERR_10006
);
}
// 给测试使用
if
(
StringUtils
.
isNotBlank
(
dateStr
))
{
curDate
=
cn
.
hutool
.
core
.
date
.
DateUtil
.
parse
(
dateStr
);
}
int
i
=
cn
.
hutool
.
core
.
date
.
DateUtil
.
weekOfYear
(
curDate
);
String
key
=
"haoban_set_main_store_"
+
i
+
":"
+
staffId
;
Object
hasSet
=
RedisUtil
.
getCache
(
key
);
...
...
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