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
3b9926c6
Commit
3b9926c6
authored
Jun 12, 2023
by
徐高华
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'feature/五月二期' into 'developer'
好友查询 See merge request
!1306
parents
4e9217cf
2b5a2950
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
1202 additions
and
1181 deletions
+1202
-1181
TabHaobanExternalClerkRelatedMapper.java
...rvice/dao/mapper/TabHaobanExternalClerkRelatedMapper.java
+423
-417
ExternalClerkRelatedApiServiceImpl.java
.../service/out/impl/ExternalClerkRelatedApiServiceImpl.java
+765
-762
TabHaobanExternalClerkRelatedMapper.xml
.../resources/mapper/TabHaobanExternalClerkRelatedMapper.xml
+12
-0
WxEnterpriseInfoController.java
...ban/manage/web/controller/WxEnterpriseInfoController.java
+2
-2
No files found.
haoban-manage3-service/src/main/java/com/gic/haoban/manage/service/dao/mapper/TabHaobanExternalClerkRelatedMapper.java
View file @
3b9926c6
package
com
.
gic
.
haoban
.
manage
.
service
.
dao
.
mapper
;
import
java.util.Collection
;
import
java.util.Date
;
import
java.util.List
;
import
org.apache.ibatis.annotations.Param
;
import
com.gic.haoban.manage.api.dto.ExternalClerkRelatedDTO
;
import
com.gic.haoban.manage.service.entity.TabHaobanExternalClerkRelated
;
import
com.github.pagehelper.Page
;
public
interface
TabHaobanExternalClerkRelatedMapper
{
int
insertSelective
(
TabHaobanExternalClerkRelated
record
);
TabHaobanExternalClerkRelated
selectByPrimaryKey
(
String
externalClerkRelatedId
);
int
updateByPrimaryKeySelective
(
TabHaobanExternalClerkRelated
record
);
TabHaobanExternalClerkRelated
selectByClerkIdAndExternalUserId
(
@Param
(
"clerkId"
)
String
clerkId
,
@Param
(
"externalUserId"
)
String
externalUserId
);
int
delByUserIdAndExternalUserId
(
@Param
(
"externalUserId"
)
String
externalUserId
,
@Param
(
"staffId"
)
String
staffId
);
void
delByUserIdAndExternalUserIdBatch
(
@Param
(
"staffId"
)
String
staffId
,
@Param
(
"wxEnterpriseId"
)
String
wxEnterpriseId
,
@Param
(
"externalUserIds"
)
List
<
String
>
externalUserIds
);
void
delByClerkIdAndStaffId
(
@Param
(
"clerkId"
)
String
clerkId
,
@Param
(
"staffId"
)
String
staffId
);
void
delByStoreIdAndStaffId
(
@Param
(
"storeId"
)
String
storeId
,
@Param
(
"staffId"
)
String
staffId
);
int
delByStoreIds
(
@Param
(
"storeIds"
)
Collection
<
String
>
storeIds
);
void
cleanStaffRelated
(
@Param
(
"wxEnterpriseId"
)
String
wxEnterpriseId
,
@Param
(
"staffIds"
)
List
<
String
>
staffIds
);
List
<
TabHaobanExternalClerkRelated
>
listByExTernalUseridAndWxUserId
(
@Param
(
"externalUserid"
)
String
externalUserid
,
@Param
(
"staffId"
)
String
staffId
,
@Param
(
"statusFlag"
)
Integer
statusFlag
);
/**
* 查询该会员该企业下的好友关系
*
* @param externalUserid 外部用户标识
* @param wxEnterpriseId wx企业标识
* @param statusFlags 状态标志
* @return {@link List<TabHaobanExternalClerkRelated> }
* @author mozhu
* @date 2022-02-10 10:11:21
*/
List
<
TabHaobanExternalClerkRelated
>
listByExternalUseridAndWxEnterpriseId
(
@Param
(
"externalUserid"
)
String
externalUserid
,
@Param
(
"wxEnterpriseId"
)
String
wxEnterpriseId
,
@Param
(
"statusFlags"
)
List
<
String
>
statusFlags
);
List
<
TabHaobanExternalClerkRelated
>
listByExTernalUseridAndWxUserIdAllStatus
(
@Param
(
"wxEnterpriseId"
)
String
wxEnterpriseId
,
@Param
(
"externalUserid"
)
String
externalUserid
,
@Param
(
"staffId"
)
String
staffId
);
List
<
TabHaobanExternalClerkRelated
>
listByEnterpriseIdAndDate
(
@Param
(
"enterpriseId"
)
String
enterpriseId
,
@Param
(
"date"
)
Date
date
);
Page
<
TabHaobanExternalClerkRelated
>
pageMemberUnionByParams
(
@Param
(
"staffIdList"
)
List
<
String
>
staffIdList
,
@Param
(
"sendMemberIds"
)
List
<
String
>
sendMemberIds
,
@Param
(
"enterpriseId"
)
String
enterpriseId
);
List
<
TabHaobanExternalClerkRelated
>
listByWxEnterpriseIdAndWxUserId
(
@Param
(
"staffId"
)
String
staffId
,
@Param
(
"wxEnterpriseId"
)
String
wxEnterpriseId
);
List
<
TabHaobanExternalClerkRelated
>
listByWxEnterpriseIdAndWxUserIds
(
@Param
(
"staffIdList"
)
List
<
String
>
staffIdList
,
@Param
(
"wxEnterpriseId"
)
String
wxEnterpriseId
);
TabHaobanExternalClerkRelated
getByMemberId
(
@Param
(
"staffId"
)
String
staffId
,
@Param
(
"memberId"
)
String
memberId
);
/**
* 外部联系人的unionid
*
* @param enterpriseId
* @param unionId
* @return
*/
List
<
TabHaobanExternalClerkRelated
>
listExternalByUnionId
(
@Param
(
"enterpriseId"
)
String
enterpriseId
,
@Param
(
"unionId"
)
String
unionId
);
/**
* @param relationKey
* @return
*/
TabHaobanExternalClerkRelated
getByRelationKey
(
@Param
(
"relationKey"
)
String
relationKey
,
@Param
(
"filterMember"
)
int
filterMember
);
/**
* 列表数据 根据状态 时间倒序
*
* @param wxEnterpriseId
* @param staffId
* @param statusFlags
* @return
*/
List
<
TabHaobanExternalClerkRelated
>
listByWxEnterpriseIdAndWxUserIdAndStatus
(
@Param
(
"wxEnterpriseId"
)
String
wxEnterpriseId
,
@Param
(
"staffId"
)
String
staffId
,
@Param
(
"statusFlags"
)
List
<
Integer
>
statusFlags
);
/**
* 触达会员 给会员发送
*
* @param relationKey
* @return
*/
int
pushExternalByRelationKey
(
@Param
(
"relationKey"
)
String
relationKey
);
/**
* 获取企业下的关联关系列表
*
* @param wxEnterpriseId
* @param wxUserId
* @param enterpriseId
* @param externalUserId
* @return
*/
TabHaobanExternalClerkRelated
getExternalClerkByWxUserIdAncExternalUserId
(
@Param
(
"wxEnterpriseId"
)
String
wxEnterpriseId
,
@Param
(
"staffId"
)
String
staffId
,
@Param
(
"enterpriseId"
)
String
enterpriseId
,
@Param
(
"externalUserId"
)
String
externalUserId
);
/**
* 查询会员在企业下的好友关系
*
* @param memberId
* @param wxEnterpriseId
* @param enterpriseId
* @return
*/
List
<
TabHaobanExternalClerkRelated
>
listByMemberIdAndWxEnterpriseId
(
@Param
(
"memberId"
)
String
memberId
,
@Param
(
"wxEnterpriseId"
)
String
wxEnterpriseId
,
@Param
(
"enterpriseId"
)
String
enterpriseId
);
/**
* 查询会员在企业下的好友关系
*
* @param memberId
* @param wxEnterpriseId
* @param enterpriseId
* @return
*/
List
<
ExternalClerkRelatedDTO
>
listByMemberIdList
(
@Param
(
"memberIdList"
)
List
<
String
>
memberIdList
,
@Param
(
"wxEnterpriseId"
)
String
wxEnterpriseId
,
@Param
(
"enterpriseId"
)
String
enterpriseId
);
/**
* 获取最新的最近的外部联系人
*
* @param externalUserid
* @param wxUserId
* @return
*/
TabHaobanExternalClerkRelated
getLastByExTernalUseridAndWxUserIdNoStatus
(
@Param
(
"wxEnterpriseId"
)
String
wxEnterpriseId
,
@Param
(
"externalUserid"
)
String
externalUserid
,
@Param
(
"staffId"
)
String
staffId
);
/**
* 根据id 查询列表
*
* @param wxEnterpriseId
* @param ids
* @return
*/
List
<
TabHaobanExternalClerkRelated
>
listByIds
(
@Param
(
"wxEnterpriseId"
)
String
wxEnterpriseId
,
@Param
(
"ids"
)
List
<
String
>
ids
);
/**
* 根据企业id 查询列表
*
* @param wxEnterpriseId
* @return
*/
List
<
String
>
listMemberIdByEnterpriseId
(
@Param
(
"wxEnterpriseId"
)
String
wxEnterpriseId
,
@Param
(
"enterpriseId"
)
String
enterpriseId
);
/**
* 查询会员在企业下的好友关系memberIds 根据会员ids
*
* @param memberIds
* @param wxEnterpriseId
* @return
*/
List
<
String
>
listMemberIdsByMemberIds
(
@Param
(
"memberIds"
)
List
<
String
>
memberIds
,
@Param
(
"wxEnterpriseId"
)
String
wxEnterpriseId
);
/**
* 查询会员在企业下的好友关系 根据会员id
*
* @param memberId
* @param enterpriseId
* @return
*/
List
<
TabHaobanExternalClerkRelated
>
listByMemberId
(
@Param
(
"memberId"
)
String
memberId
,
@Param
(
"enterpriseId"
)
String
enterpriseId
);
/**
* 通过会员id查询门店id
*
* @param memberId 成员身份
* @return {@link List }<{@link String }>
* @author mozhu
* @date 2022-07-06 14:40:15
*/
List
<
String
>
listStoreIdByMemberId
(
@Param
(
"memberId"
)
String
memberId
);
/**
* 查询会员在企业下的好友关系 根据会员id
*
* @param wxEnterpriseId
* @return
*/
List
<
TabHaobanExternalClerkRelated
>
listByExternalUserId
(
@Param
(
"wxEnterpriseId"
)
String
wxEnterpriseId
,
@Param
(
"externalUserId"
)
String
externalUserId
);
/**
* 根据会员id更新新老会员id
*
* @param memberId
* @param oldMemberId 老会员id
* @param enterpriseId 企业标识
* @return int
* @author mozhu
* @date 2022-03-24 10:28:40
*/
int
updateMemberIdByMemberId
(
@Param
(
"memberId"
)
String
memberId
,
@Param
(
"oldMemberId"
)
String
oldMemberId
,
@Param
(
"enterpriseId"
)
String
enterpriseId
);
/**
* 更新状态通过会员id
*
* @param memberId 会员ID
* @param enterpriseId 企业id
* @return int
* @author mozhu
* @date 2021-09-13 16:59:49
*/
int
updateStatusByMemberId
(
@Param
(
"memberId"
)
String
memberId
,
@Param
(
"enterpriseId"
)
String
enterpriseId
);
/**
* 通过会员id和员工id查询数据
*
* @param staffId 员工id
* @param enterpriseId 企业标识
* @param memberId 会员ID
* @return {@link TabHaobanExternalClerkRelated }
* @author mozhu
* @date 2021-10-21 10:41:28
*/
TabHaobanExternalClerkRelated
getByMemberIdAndStaffId
(
@Param
(
"staffId"
)
String
staffId
,
@Param
(
"enterpriseId"
)
String
enterpriseId
,
@Param
(
"memberId"
)
String
memberId
);
TabHaobanExternalClerkRelated
getByUnionIdAndStaffId
(
@Param
(
"staffId"
)
String
staffId
,
@Param
(
"enterpriseId"
)
String
enterpriseId
,
@Param
(
"unionId"
)
String
unionId
);
/**
* 根据企业id分页
*
* @param wxEnterpriseId 企业标识
* @return {@link List<TabHaobanExternalClerkRelated> }
* @author mozhu
* @date 2021-12-13 14:59:03
*/
List
<
TabHaobanExternalClerkRelated
>
pageExternalByEnterpriseId
(
@Param
(
"wxEnterpriseId"
)
String
wxEnterpriseId
);
/**
* 更新外部用户id的老外部用户id
*
* @param newExternalUserId 外部用户id
* @param oldExternalUserId 旧的外部用户id
* @param wxEnterpriseId wx企业标识
* @return int
* @author mozhu
* @date 2021-12-13 15:33:41
*/
int
updateExternalUserIdByOldExternalUserId
(
@Param
(
"newExternalUserId"
)
String
newExternalUserId
,
@Param
(
"oldExternalUserId"
)
String
oldExternalUserId
,
@Param
(
"wxEnterpriseId"
)
String
wxEnterpriseId
);
/**
* 获取好友数量
*
* @param wxEnterpriseId 企业id
* @param enterpriseId 商户id
* @param staffId 企业微信导购账号
* @param clerkId 导购id
* @return
*/
int
countByClerkId
(
@Param
(
"wxEnterpriseId"
)
String
wxEnterpriseId
,
@Param
(
"enterpriseId"
)
String
enterpriseId
,
@Param
(
"staffId"
)
String
staffId
,
@Param
(
"clerkId"
)
String
clerkId
);
/**
* 客户好友需触达列表
*/
TabHaobanExternalClerkRelated
getByEnterpriseIdAndExternalUserId
(
@Param
(
"wxEnterpriseId"
)
String
wxEnterpriseId
,
@Param
(
"staffId"
)
String
staffId
,
@Param
(
"enterpriseId"
)
String
enterpriseId
,
@Param
(
"externalUserId"
)
String
externalUserId
);
/**
* 查询所有好友关系
*
* @param wxEnterpriseId wx企业标识
* @param staffId wx用户id
* @return {@link List}<{@link TabHaobanExternalClerkRelated}>
*/
List
<
TabHaobanExternalClerkRelated
>
getByWxUserIdAndWxEnterpriseId
(
@Param
(
"wxEnterpriseId"
)
String
wxEnterpriseId
,
@Param
(
"staffId"
)
String
staffId
);
/**
* 根据staffId和会员unionid进行查询数据
*/
TabHaobanExternalClerkRelated
getByWxEnterpriseIdAndUnionId
(
@Param
(
"wxEnterpriseId"
)
String
wxEnterpriseId
,
@Param
(
"staffId"
)
String
staffId
,
@Param
(
"unionid"
)
String
unionid
);
/**
* 查询最新的会员好友
*
* @param enterpriseId 企业标识
* @param memberId 成员身份
* @param statusFlag 状态标志
* @return {@link TabHaobanExternalClerkRelated }
* @author mozhu
* @date 2022-04-15 17:12:38
*/
TabHaobanExternalClerkRelated
getByEnterpriseIdAndMemberId
(
@Param
(
"enterpriseId"
)
String
enterpriseId
,
@Param
(
"memberId"
)
String
memberId
,
@Param
(
"statusFlag"
)
Integer
statusFlag
);
/**
* 会员好友数量
*
* @param memberId 成员身份
* @param enterpriseId 企业标识
* @return int
* @author mozhu
* @date 2022-04-21 10:06:21
*/
int
countByMemberId
(
@Param
(
"memberId"
)
String
memberId
,
@Param
(
"enterpriseId"
)
String
enterpriseId
);
List
<
String
>
getIdList
(
@Param
(
"memberId"
)
String
memberId
,
@Param
(
"enterpriseId"
)
String
enterpriseId
)
;
void
updateMemberByIdList
(
@Param
(
"memberId"
)
String
memberId
,
@Param
(
"list"
)
List
<
String
>
idList
)
;
List
<
TabHaobanExternalClerkRelated
>
listPageByWxenterpriseId
(
@Param
(
"wxEnterpriseId"
)
String
wxEnterpriseId
,
@Param
(
"startItem"
)
int
startItem
,
@Param
(
"pageSize"
)
int
pageSize
,
@Param
(
"type"
)
int
type
);
/**
* 获取所有的好友会员id
*
* @param storeId 存储id
* @param staffId 员工id
* @return {@link List}<{@link String}>
*/
List
<
String
>
getByStoreIdAndStaffId
(
@Param
(
"storeId"
)
String
storeId
,
@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
);
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
);
/**
* 通过第三方或者待开发查询是否好友
*/
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
);
/**
* 查询成员的好友列表
*/
List
<
String
>
queryExternalUserIdWithStaffId
(
@Param
(
"staffId"
)
String
staffId
);
/**
* 查询会员与导购的好友关系
* @param staffId
* @param memberIds
* @return
*/
List
<
TabHaobanExternalClerkRelated
>
queryClerkMemberRelations
(
@Param
(
"staffId"
)
String
staffId
,
@Param
(
"memberIds"
)
List
<
String
>
memberIds
);
/**
* 查询企业微信下面 外部联系人是null的所有成员
* @param wxEnterpriseId
* @param enterpriseIdList
* @return
*/
List
<
String
>
listByWxEnterpriseId
(
@Param
(
"wxEnterpriseId"
)
String
wxEnterpriseId
,
@Param
(
"enterpriseIdList"
)
List
<
String
>
enterpriseIdList
);
/**
* 删除企业微信下面,所有外部联系人是null的成员
* @param wxEnterpriseId
* @param enterpriseIdList
*/
void
deleteByWxEnterpriseId
(
@Param
(
"wxEnterpriseId"
)
String
wxEnterpriseId
,
@Param
(
"enterpriseIdList"
)
List
<
String
>
enterpriseIdList
);
package
com
.
gic
.
haoban
.
manage
.
service
.
dao
.
mapper
;
import
java.util.Collection
;
import
java.util.Date
;
import
java.util.List
;
import
org.apache.ibatis.annotations.Param
;
import
com.gic.haoban.manage.api.dto.ExternalClerkRelatedDTO
;
import
com.gic.haoban.manage.service.entity.TabHaobanExternalClerkRelated
;
import
com.github.pagehelper.Page
;
public
interface
TabHaobanExternalClerkRelatedMapper
{
int
insertSelective
(
TabHaobanExternalClerkRelated
record
);
TabHaobanExternalClerkRelated
selectByPrimaryKey
(
String
externalClerkRelatedId
);
int
updateByPrimaryKeySelective
(
TabHaobanExternalClerkRelated
record
);
TabHaobanExternalClerkRelated
selectByClerkIdAndExternalUserId
(
@Param
(
"clerkId"
)
String
clerkId
,
@Param
(
"externalUserId"
)
String
externalUserId
);
int
delByUserIdAndExternalUserId
(
@Param
(
"externalUserId"
)
String
externalUserId
,
@Param
(
"staffId"
)
String
staffId
);
void
delByUserIdAndExternalUserIdBatch
(
@Param
(
"staffId"
)
String
staffId
,
@Param
(
"wxEnterpriseId"
)
String
wxEnterpriseId
,
@Param
(
"externalUserIds"
)
List
<
String
>
externalUserIds
);
void
delByClerkIdAndStaffId
(
@Param
(
"clerkId"
)
String
clerkId
,
@Param
(
"staffId"
)
String
staffId
);
void
delByStoreIdAndStaffId
(
@Param
(
"storeId"
)
String
storeId
,
@Param
(
"staffId"
)
String
staffId
);
int
delByStoreIds
(
@Param
(
"storeIds"
)
Collection
<
String
>
storeIds
);
void
cleanStaffRelated
(
@Param
(
"wxEnterpriseId"
)
String
wxEnterpriseId
,
@Param
(
"staffIds"
)
List
<
String
>
staffIds
);
List
<
TabHaobanExternalClerkRelated
>
listByExTernalUseridAndWxUserId
(
@Param
(
"externalUserid"
)
String
externalUserid
,
@Param
(
"staffId"
)
String
staffId
,
@Param
(
"statusFlag"
)
Integer
statusFlag
);
/**
* 查询该会员该企业下的好友关系
*
* @param externalUserid 外部用户标识
* @param wxEnterpriseId wx企业标识
* @param statusFlags 状态标志
* @return {@link List<TabHaobanExternalClerkRelated> }
* @author mozhu
* @date 2022-02-10 10:11:21
*/
List
<
TabHaobanExternalClerkRelated
>
listByExternalUseridAndWxEnterpriseId
(
@Param
(
"externalUserid"
)
String
externalUserid
,
@Param
(
"wxEnterpriseId"
)
String
wxEnterpriseId
,
@Param
(
"statusFlags"
)
List
<
String
>
statusFlags
);
List
<
TabHaobanExternalClerkRelated
>
listByExTernalUseridAndWxUserIdAllStatus
(
@Param
(
"wxEnterpriseId"
)
String
wxEnterpriseId
,
@Param
(
"externalUserid"
)
String
externalUserid
,
@Param
(
"staffId"
)
String
staffId
);
List
<
TabHaobanExternalClerkRelated
>
listByEnterpriseIdAndDate
(
@Param
(
"enterpriseId"
)
String
enterpriseId
,
@Param
(
"date"
)
Date
date
);
Page
<
TabHaobanExternalClerkRelated
>
pageMemberUnionByParams
(
@Param
(
"staffIdList"
)
List
<
String
>
staffIdList
,
@Param
(
"sendMemberIds"
)
List
<
String
>
sendMemberIds
,
@Param
(
"enterpriseId"
)
String
enterpriseId
);
List
<
TabHaobanExternalClerkRelated
>
listByWxEnterpriseIdAndWxUserId
(
@Param
(
"staffId"
)
String
staffId
,
@Param
(
"wxEnterpriseId"
)
String
wxEnterpriseId
);
List
<
TabHaobanExternalClerkRelated
>
listByWxEnterpriseIdAndWxUserIds
(
@Param
(
"staffIdList"
)
List
<
String
>
staffIdList
,
@Param
(
"wxEnterpriseId"
)
String
wxEnterpriseId
);
TabHaobanExternalClerkRelated
getByMemberId
(
@Param
(
"staffId"
)
String
staffId
,
@Param
(
"memberId"
)
String
memberId
);
/**
* 外部联系人的unionid
*
* @param enterpriseId
* @param unionId
* @return
*/
List
<
TabHaobanExternalClerkRelated
>
listExternalByUnionId
(
@Param
(
"enterpriseId"
)
String
enterpriseId
,
@Param
(
"unionId"
)
String
unionId
);
/**
* @param relationKey
* @return
*/
TabHaobanExternalClerkRelated
getByRelationKey
(
@Param
(
"relationKey"
)
String
relationKey
,
@Param
(
"filterMember"
)
int
filterMember
);
/**
* 列表数据 根据状态 时间倒序
*
* @param wxEnterpriseId
* @param staffId
* @param statusFlags
* @return
*/
List
<
TabHaobanExternalClerkRelated
>
listByWxEnterpriseIdAndWxUserIdAndStatus
(
@Param
(
"wxEnterpriseId"
)
String
wxEnterpriseId
,
@Param
(
"staffId"
)
String
staffId
,
@Param
(
"statusFlags"
)
List
<
Integer
>
statusFlags
);
/**
* 触达会员 给会员发送
*
* @param relationKey
* @return
*/
int
pushExternalByRelationKey
(
@Param
(
"relationKey"
)
String
relationKey
);
/**
* 获取企业下的关联关系列表
*
* @param wxEnterpriseId
* @param wxUserId
* @param enterpriseId
* @param externalUserId
* @return
*/
TabHaobanExternalClerkRelated
getExternalClerkByWxUserIdAncExternalUserId
(
@Param
(
"wxEnterpriseId"
)
String
wxEnterpriseId
,
@Param
(
"staffId"
)
String
staffId
,
@Param
(
"enterpriseId"
)
String
enterpriseId
,
@Param
(
"externalUserId"
)
String
externalUserId
);
TabHaobanExternalClerkRelated
getExternalClerkByWxUserIdAncExternalUserIdSelf
(
@Param
(
"wxEnterpriseId"
)
String
wxEnterpriseId
,
@Param
(
"staffId"
)
String
staffId
,
@Param
(
"enterpriseId"
)
String
enterpriseId
,
@Param
(
"externalUserId"
)
String
externalUserId
);
/**
* 查询会员在企业下的好友关系
*
* @param memberId
* @param wxEnterpriseId
* @param enterpriseId
* @return
*/
List
<
TabHaobanExternalClerkRelated
>
listByMemberIdAndWxEnterpriseId
(
@Param
(
"memberId"
)
String
memberId
,
@Param
(
"wxEnterpriseId"
)
String
wxEnterpriseId
,
@Param
(
"enterpriseId"
)
String
enterpriseId
);
/**
* 查询会员在企业下的好友关系
*
* @param memberId
* @param wxEnterpriseId
* @param enterpriseId
* @return
*/
List
<
ExternalClerkRelatedDTO
>
listByMemberIdList
(
@Param
(
"memberIdList"
)
List
<
String
>
memberIdList
,
@Param
(
"wxEnterpriseId"
)
String
wxEnterpriseId
,
@Param
(
"enterpriseId"
)
String
enterpriseId
);
/**
* 获取最新的最近的外部联系人
*
* @param externalUserid
* @param wxUserId
* @return
*/
TabHaobanExternalClerkRelated
getLastByExTernalUseridAndWxUserIdNoStatus
(
@Param
(
"wxEnterpriseId"
)
String
wxEnterpriseId
,
@Param
(
"externalUserid"
)
String
externalUserid
,
@Param
(
"staffId"
)
String
staffId
);
/**
* 根据id 查询列表
*
* @param wxEnterpriseId
* @param ids
* @return
*/
List
<
TabHaobanExternalClerkRelated
>
listByIds
(
@Param
(
"wxEnterpriseId"
)
String
wxEnterpriseId
,
@Param
(
"ids"
)
List
<
String
>
ids
);
/**
* 根据企业id 查询列表
*
* @param wxEnterpriseId
* @return
*/
List
<
String
>
listMemberIdByEnterpriseId
(
@Param
(
"wxEnterpriseId"
)
String
wxEnterpriseId
,
@Param
(
"enterpriseId"
)
String
enterpriseId
);
/**
* 查询会员在企业下的好友关系memberIds 根据会员ids
*
* @param memberIds
* @param wxEnterpriseId
* @return
*/
List
<
String
>
listMemberIdsByMemberIds
(
@Param
(
"memberIds"
)
List
<
String
>
memberIds
,
@Param
(
"wxEnterpriseId"
)
String
wxEnterpriseId
);
/**
* 查询会员在企业下的好友关系 根据会员id
*
* @param memberId
* @param enterpriseId
* @return
*/
List
<
TabHaobanExternalClerkRelated
>
listByMemberId
(
@Param
(
"memberId"
)
String
memberId
,
@Param
(
"enterpriseId"
)
String
enterpriseId
);
/**
* 通过会员id查询门店id
*
* @param memberId 成员身份
* @return {@link List }<{@link String }>
* @author mozhu
* @date 2022-07-06 14:40:15
*/
List
<
String
>
listStoreIdByMemberId
(
@Param
(
"memberId"
)
String
memberId
);
/**
* 查询会员在企业下的好友关系 根据会员id
*
* @param wxEnterpriseId
* @return
*/
List
<
TabHaobanExternalClerkRelated
>
listByExternalUserId
(
@Param
(
"wxEnterpriseId"
)
String
wxEnterpriseId
,
@Param
(
"externalUserId"
)
String
externalUserId
);
/**
* 根据会员id更新新老会员id
*
* @param memberId
* @param oldMemberId 老会员id
* @param enterpriseId 企业标识
* @return int
* @author mozhu
* @date 2022-03-24 10:28:40
*/
int
updateMemberIdByMemberId
(
@Param
(
"memberId"
)
String
memberId
,
@Param
(
"oldMemberId"
)
String
oldMemberId
,
@Param
(
"enterpriseId"
)
String
enterpriseId
);
/**
* 更新状态通过会员id
*
* @param memberId 会员ID
* @param enterpriseId 企业id
* @return int
* @author mozhu
* @date 2021-09-13 16:59:49
*/
int
updateStatusByMemberId
(
@Param
(
"memberId"
)
String
memberId
,
@Param
(
"enterpriseId"
)
String
enterpriseId
);
/**
* 通过会员id和员工id查询数据
*
* @param staffId 员工id
* @param enterpriseId 企业标识
* @param memberId 会员ID
* @return {@link TabHaobanExternalClerkRelated }
* @author mozhu
* @date 2021-10-21 10:41:28
*/
TabHaobanExternalClerkRelated
getByMemberIdAndStaffId
(
@Param
(
"staffId"
)
String
staffId
,
@Param
(
"enterpriseId"
)
String
enterpriseId
,
@Param
(
"memberId"
)
String
memberId
);
TabHaobanExternalClerkRelated
getByUnionIdAndStaffId
(
@Param
(
"staffId"
)
String
staffId
,
@Param
(
"enterpriseId"
)
String
enterpriseId
,
@Param
(
"unionId"
)
String
unionId
);
/**
* 根据企业id分页
*
* @param wxEnterpriseId 企业标识
* @return {@link List<TabHaobanExternalClerkRelated> }
* @author mozhu
* @date 2021-12-13 14:59:03
*/
List
<
TabHaobanExternalClerkRelated
>
pageExternalByEnterpriseId
(
@Param
(
"wxEnterpriseId"
)
String
wxEnterpriseId
);
/**
* 更新外部用户id的老外部用户id
*
* @param newExternalUserId 外部用户id
* @param oldExternalUserId 旧的外部用户id
* @param wxEnterpriseId wx企业标识
* @return int
* @author mozhu
* @date 2021-12-13 15:33:41
*/
int
updateExternalUserIdByOldExternalUserId
(
@Param
(
"newExternalUserId"
)
String
newExternalUserId
,
@Param
(
"oldExternalUserId"
)
String
oldExternalUserId
,
@Param
(
"wxEnterpriseId"
)
String
wxEnterpriseId
);
/**
* 获取好友数量
*
* @param wxEnterpriseId 企业id
* @param enterpriseId 商户id
* @param staffId 企业微信导购账号
* @param clerkId 导购id
* @return
*/
int
countByClerkId
(
@Param
(
"wxEnterpriseId"
)
String
wxEnterpriseId
,
@Param
(
"enterpriseId"
)
String
enterpriseId
,
@Param
(
"staffId"
)
String
staffId
,
@Param
(
"clerkId"
)
String
clerkId
);
/**
* 客户好友需触达列表
*/
TabHaobanExternalClerkRelated
getByEnterpriseIdAndExternalUserId
(
@Param
(
"wxEnterpriseId"
)
String
wxEnterpriseId
,
@Param
(
"staffId"
)
String
staffId
,
@Param
(
"enterpriseId"
)
String
enterpriseId
,
@Param
(
"externalUserId"
)
String
externalUserId
);
/**
* 查询所有好友关系
*
* @param wxEnterpriseId wx企业标识
* @param staffId wx用户id
* @return {@link List}<{@link TabHaobanExternalClerkRelated}>
*/
List
<
TabHaobanExternalClerkRelated
>
getByWxUserIdAndWxEnterpriseId
(
@Param
(
"wxEnterpriseId"
)
String
wxEnterpriseId
,
@Param
(
"staffId"
)
String
staffId
);
/**
* 根据staffId和会员unionid进行查询数据
*/
TabHaobanExternalClerkRelated
getByWxEnterpriseIdAndUnionId
(
@Param
(
"wxEnterpriseId"
)
String
wxEnterpriseId
,
@Param
(
"staffId"
)
String
staffId
,
@Param
(
"unionid"
)
String
unionid
);
/**
* 查询最新的会员好友
*
* @param enterpriseId 企业标识
* @param memberId 成员身份
* @param statusFlag 状态标志
* @return {@link TabHaobanExternalClerkRelated }
* @author mozhu
* @date 2022-04-15 17:12:38
*/
TabHaobanExternalClerkRelated
getByEnterpriseIdAndMemberId
(
@Param
(
"enterpriseId"
)
String
enterpriseId
,
@Param
(
"memberId"
)
String
memberId
,
@Param
(
"statusFlag"
)
Integer
statusFlag
);
/**
* 会员好友数量
*
* @param memberId 成员身份
* @param enterpriseId 企业标识
* @return int
* @author mozhu
* @date 2022-04-21 10:06:21
*/
int
countByMemberId
(
@Param
(
"memberId"
)
String
memberId
,
@Param
(
"enterpriseId"
)
String
enterpriseId
);
List
<
String
>
getIdList
(
@Param
(
"memberId"
)
String
memberId
,
@Param
(
"enterpriseId"
)
String
enterpriseId
)
;
void
updateMemberByIdList
(
@Param
(
"memberId"
)
String
memberId
,
@Param
(
"list"
)
List
<
String
>
idList
)
;
List
<
TabHaobanExternalClerkRelated
>
listPageByWxenterpriseId
(
@Param
(
"wxEnterpriseId"
)
String
wxEnterpriseId
,
@Param
(
"startItem"
)
int
startItem
,
@Param
(
"pageSize"
)
int
pageSize
,
@Param
(
"type"
)
int
type
);
/**
* 获取所有的好友会员id
*
* @param storeId 存储id
* @param staffId 员工id
* @return {@link List}<{@link String}>
*/
List
<
String
>
getByStoreIdAndStaffId
(
@Param
(
"storeId"
)
String
storeId
,
@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
);
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
);
/**
* 通过第三方或者待开发查询是否好友
*/
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
);
/**
* 查询成员的好友列表
*/
List
<
String
>
queryExternalUserIdWithStaffId
(
@Param
(
"staffId"
)
String
staffId
);
/**
* 查询会员与导购的好友关系
* @param staffId
* @param memberIds
* @return
*/
List
<
TabHaobanExternalClerkRelated
>
queryClerkMemberRelations
(
@Param
(
"staffId"
)
String
staffId
,
@Param
(
"memberIds"
)
List
<
String
>
memberIds
);
/**
* 查询企业微信下面 外部联系人是null的所有成员
* @param wxEnterpriseId
* @param enterpriseIdList
* @return
*/
List
<
String
>
listByWxEnterpriseId
(
@Param
(
"wxEnterpriseId"
)
String
wxEnterpriseId
,
@Param
(
"enterpriseIdList"
)
List
<
String
>
enterpriseIdList
);
/**
* 删除企业微信下面,所有外部联系人是null的成员
* @param wxEnterpriseId
* @param enterpriseIdList
*/
void
deleteByWxEnterpriseId
(
@Param
(
"wxEnterpriseId"
)
String
wxEnterpriseId
,
@Param
(
"enterpriseIdList"
)
List
<
String
>
enterpriseIdList
);
}
\ No newline at end of file
haoban-manage3-service/src/main/java/com/gic/haoban/manage/service/service/out/impl/ExternalClerkRelatedApiServiceImpl.java
View file @
3b9926c6
package
com
.
gic
.
haoban
.
manage
.
service
.
service
.
out
.
impl
;
import
com.alibaba.fastjson.JSON
;
import
com.alibaba.fastjson.JSONObject
;
import
com.gic.api.base.commons.Page
;
import
com.gic.api.base.dto.SubscribeMessageDTO
;
import
com.gic.clerk.api.dto.ClerkDTO
;
import
com.gic.clerk.api.service.ClerkService
;
import
com.gic.commons.util.EntityUtil
;
import
com.gic.commons.util.GICMQClientUtil
;
import
com.gic.dubbo.entity.ProviderLocalTag
;
import
com.gic.enterprise.api.dto.StoreDTO
;
import
com.gic.enterprise.api.service.StoreService
;
import
com.gic.haoban.app.customer.enums.GicQywxSyncTypeEnum
;
import
com.gic.haoban.app.customer.enums.QywxSyncTaskTypeEnum
;
import
com.gic.haoban.base.api.common.BasePageInfo
;
import
com.gic.haoban.base.api.common.ServiceResponse
;
import
com.gic.haoban.base.api.common.errCode.HaoBanErrCodeCommon
;
import
com.gic.haoban.common.utils.PageUtil
;
import
com.gic.haoban.manage.api.dto.*
;
import
com.gic.haoban.manage.api.enums.AlertTypeEnum
;
import
com.gic.haoban.manage.api.enums.SyncTaskTypeEnum
;
import
com.gic.haoban.manage.api.service.CheckQywxSettingApiService
;
import
com.gic.haoban.manage.api.service.DealSyncOperationApiService
;
import
com.gic.haoban.manage.api.service.ExternalClerkRelatedApiService
;
import
com.gic.haoban.manage.api.service.WxEnterpriseApiService
;
import
com.gic.haoban.manage.service.config.Config
;
import
com.gic.haoban.manage.service.dao.mapper.*
;
import
com.gic.haoban.manage.service.entity.TabHaobanExternalClerkRelated
;
import
com.gic.haoban.manage.service.entity.TabHaobanWxEnterprise
;
import
com.gic.haoban.manage.service.entity.ext.MemberStaffRelExtDO
;
import
com.gic.haoban.manage.service.pojo.QywxTagSyncInfoPojo
;
import
com.gic.haoban.manage.service.service.WxEnterpriseService
;
import
com.gic.haoban.manage.service.service.hm.WxUserAddLogService
;
import
com.gic.member.api.dto.MemberDTO
;
import
com.gic.member.api.dto.MemberSourceDetailDTO
;
import
com.gic.member.api.dto.MemberSourceShowDTO
;
import
com.gic.member.api.service.MemberApiService
;
import
com.gic.member.api.service.MemberEntranceApiService
;
import
com.gic.member.api.service.MemberService
;
import
com.gic.mq.sdk.GicMQClient
;
import
com.gic.redis.data.util.RedisUtil
;
import
com.gic.wechat.api.service.qywx.QywxUserApiService
;
import
com.github.pagehelper.PageHelper
;
import
com.github.pagehelper.PageInfo
;
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.redisson.api.RRateLimiter
;
import
org.redisson.api.RateIntervalUnit
;
import
org.redisson.api.RateType
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Service
;
import
org.springframework.transaction.annotation.Transactional
;
import
java.util.*
;
import
java.util.concurrent.TimeUnit
;
import
java.util.stream.Collectors
;
@Service
public
class
ExternalClerkRelatedApiServiceImpl
implements
ExternalClerkRelatedApiService
{
private
static
final
Logger
log
=
LogManager
.
getLogger
(
ExternalClerkRelatedApiServiceImpl
.
class
);
@Autowired
private
TabHaobanExternalClerkRelatedMapper
tabHaobanExternalClerkRelatedMapper
;
@Autowired
private
TabHaobanStaffClerkRelationMapper
staffClerkRelationMapper
;
@Autowired
private
WxEnterpriseMapper
wxEnterriseMapper
;
@Autowired
private
QywxUserApiService
qywxUserApiService
;
@Autowired
private
Config
config
;
@Autowired
private
ExternalUseridLogMapper
externalUseridLogMapper
;
@Autowired
private
CheckQywxSettingApiService
checkQywxSettingApiService
;
@Autowired
private
WxEnterpriseApiService
wxEnterpriseApiService
;
@Autowired
private
MemberApiService
memberApiService
;
@Autowired
private
WxUserAddLogService
wxUserAddLogService
;
@Autowired
private
WxEnterpriseService
wxEnterpriseService
;
@Autowired
private
DealSyncOperationApiService
dealSyncOperationApiService
;
@Autowired
private
MemberEntranceApiService
memberEntranceApiService
;
@Autowired
private
StoreService
storeService
;
@Autowired
private
ClerkService
clerkService
;
@Autowired
private
MemberService
memberService
;
/**
* 查询会员在企业下的好友关系
*
* @param memberId : 会员id
* @param wxEnterpriseId : 微信企业id
* @param enterpriseId : 企业id
* @return : 返回会员导购关联关系
*/
@Override
public
List
<
ExternalClerkRelatedDTO
>
listByMemberIdAndWxEnterpriseId
(
String
memberId
,
String
wxEnterpriseId
,
String
enterpriseId
)
{
List
<
TabHaobanExternalClerkRelated
>
list
=
tabHaobanExternalClerkRelatedMapper
.
listByMemberIdAndWxEnterpriseId
(
memberId
,
wxEnterpriseId
,
enterpriseId
);
return
EntityUtil
.
changeEntityListByJSON
(
ExternalClerkRelatedDTO
.
class
,
list
);
}
@Override
public
List
<
ExternalClerkRelatedDTO
>
listByMemberIdList
(
List
<
String
>
memberIdList
,
String
wxEnterpriseId
,
String
enterpriseId
)
{
List
<
ExternalClerkRelatedDTO
>
list
=
tabHaobanExternalClerkRelatedMapper
.
listByMemberIdList
(
memberIdList
,
wxEnterpriseId
,
enterpriseId
);
return
list
;
}
@Override
public
List
<
ExternalClerkRelatedDTO
>
listByWxEnterpriseIdAndWxUserId
(
String
staffId
,
String
wxEnterpriseId
)
{
return
EntityUtil
.
changeEntityListByJSON
(
ExternalClerkRelatedDTO
.
class
,
tabHaobanExternalClerkRelatedMapper
.
listByWxEnterpriseIdAndWxUserId
(
staffId
,
wxEnterpriseId
));
}
@Override
public
List
<
ExternalClerkRelatedDTO
>
listByWxEnterpriseIdAndWxUserIds
(
List
<
String
>
staffIdList
,
String
wxEnterpriseId
)
{
if
(
CollectionUtils
.
isEmpty
(
staffIdList
))
{
return
Collections
.
emptyList
();
}
return
EntityUtil
.
changeEntityListByJSON
(
ExternalClerkRelatedDTO
.
class
,
tabHaobanExternalClerkRelatedMapper
.
listByWxEnterpriseIdAndWxUserIds
(
staffIdList
,
wxEnterpriseId
));
}
@Override
public
ExternalClerkRelatedDTO
getExternalClerkByRelationKeyAndPre
(
String
relationKey
)
{
TabHaobanExternalClerkRelated
related
=
tabHaobanExternalClerkRelatedMapper
.
getByRelationKey
(
relationKey
,
0
);
return
EntityUtil
.
changeEntityNew
(
ExternalClerkRelatedDTO
.
class
,
related
);
}
@Override
public
Page
<
ExternalClerkRelatedDTO
>
pageExternalClerk
(
String
wxEnterpriseId
,
String
staffId
,
List
<
Integer
>
statusFlags
,
BasePageInfo
pageInfo
)
{
PageHelper
.
startPage
(
pageInfo
);
List
<
TabHaobanExternalClerkRelated
>
ret
=
tabHaobanExternalClerkRelatedMapper
.
listByWxEnterpriseIdAndWxUserIdAndStatus
(
wxEnterpriseId
,
staffId
,
statusFlags
);
return
PageUtil
.
changePageHelperToCurrentPage
(
new
PageInfo
<>(
ret
),
ExternalClerkRelatedDTO
.
class
);
}
@Override
public
boolean
pushExternalByRelationKey
(
String
relationKey
)
{
tabHaobanExternalClerkRelatedMapper
.
pushExternalByRelationKey
(
relationKey
);
return
true
;
}
@Override
public
List
<
ExternalClerkRelatedDTO
>
listByEnterpriseIdAndDate
(
String
enterpriseId
,
Date
date
)
{
List
<
TabHaobanExternalClerkRelated
>
list
=
tabHaobanExternalClerkRelatedMapper
.
listByEnterpriseIdAndDate
(
enterpriseId
,
date
);
return
EntityUtil
.
changeEntityListByJSON
(
ExternalClerkRelatedDTO
.
class
,
list
);
}
@Override
public
Page
<
ExternalClerkRelatedDTO
>
pageMemberUnionByParams
(
List
<
String
>
userIdList
,
List
<
String
>
sendMemberIds
,
String
enterpriseId
,
BasePageInfo
pageInfo
)
{
PageHelper
.
startPage
(
pageInfo
.
getPageNum
(),
pageInfo
.
getPageSize
());
return
PageUtil
.
changePageHelperToCurrentPage
(
tabHaobanExternalClerkRelatedMapper
.
pageMemberUnionByParams
(
userIdList
,
sendMemberIds
,
enterpriseId
),
ExternalClerkRelatedDTO
.
class
);
}
@Override
public
ServiceResponse
<
ExternalClerkRelatedDTO
>
bindMemberIdExternalByRelationKey
(
String
relationKey
,
String
enterpriseId
,
String
memberId
,
String
unionid
)
{
ServiceResponse
<
ExternalClerkRelatedDTO
>
resp
=
new
ServiceResponse
<>();
TabHaobanExternalClerkRelated
externalClerkRelated
=
tabHaobanExternalClerkRelatedMapper
.
getByRelationKey
(
relationKey
,
1
);
if
(
null
==
externalClerkRelated
)
{
log
.
error
(
"relationKey对应的关联关系不存在或删除:relationKey:{},memberId:{},unionid:{}"
,
relationKey
,
memberId
,
unionid
);
resp
.
setCode
(
0
);
resp
.
setMessage
(
"relationKey对应的关联关系不存在或删除"
);
return
resp
;
}
if
(!
externalClerkRelated
.
getEnterpriseId
().
equals
(
enterpriseId
))
{
log
.
error
(
"relationKey对应的企业与所传会员企业不对应:relationKey:{},memberId:{},unionid:{}"
,
relationKey
,
memberId
,
unionid
);
resp
.
setCode
(
0
);
resp
.
setMessage
(
"relationKey对应的企业与所传会员企业不对应"
);
return
resp
;
}
updateExternalClerkRelated
(
enterpriseId
,
memberId
,
unionid
,
externalClerkRelated
);
resp
.
setResult
(
EntityUtil
.
changeEntityNew
(
ExternalClerkRelatedDTO
.
class
,
externalClerkRelated
));
return
resp
;
}
@Override
public
boolean
bindMemberIdExternalById
(
String
externalClerkRelatedId
,
String
enterpriseId
,
String
memberId
,
String
unionid
)
{
TabHaobanExternalClerkRelated
externalClerkRelated
=
tabHaobanExternalClerkRelatedMapper
.
selectByPrimaryKey
(
externalClerkRelatedId
);
if
(
externalClerkRelated
==
null
)
{
log
.
error
(
"查询好办与gic数据为空,externalClerkRelatedId:{},enterpriseId:{},memberId:{},unionid:{}"
,
externalClerkRelatedId
,
enterpriseId
,
memberId
,
unionid
);
return
false
;
}
updateExternalClerkRelated
(
enterpriseId
,
memberId
,
unionid
,
externalClerkRelated
);
return
true
;
}
/**
* 更新好友关系
*
* @param enterpriseId
* @param memberId
* @param unionid
* @param externalClerkRelated
*/
private
void
updateExternalClerkRelated
(
String
enterpriseId
,
String
memberId
,
String
unionid
,
TabHaobanExternalClerkRelated
externalClerkRelated
)
{
externalClerkRelated
.
setMemberId
(
memberId
);
externalClerkRelated
.
setUnionid
(
unionid
);
externalClerkRelated
.
setUpdateTime
(
new
Date
());
externalClerkRelated
.
setStatusFlag
(
1
);
tabHaobanExternalClerkRelatedMapper
.
updateByPrimaryKeySelective
(
externalClerkRelated
);
String
wxEnterpriseId
=
externalClerkRelated
.
getWxEnterpriseId
();
//同步标签
pushTagSync
(
memberId
,
wxEnterpriseId
,
enterpriseId
);
//回调给会员,更新是否为企微好友
log
.
info
(
"通知会员 合并会员后更新为企微好友,memberId:{}"
,
memberId
);
memberApiService
.
updateMemberQywxFlag
(
enterpriseId
,
memberId
,
1
);
//定制
addDelFriendEvent
(
unionid
,
externalClerkRelated
.
getClerkId
(),
wxEnterpriseId
,
enterpriseId
,
memberId
,
externalClerkRelated
.
getStoreId
(),
1
);
//日志
wxUserAddLogService
.
updateMemberInfo
(
wxEnterpriseId
,
enterpriseId
,
externalClerkRelated
.
getStaffId
(),
externalClerkRelated
.
getExternalUserId
(),
memberId
);
}
/**
* 欧泊莱定制需求
*
* @param unionId
* @param clerkId
* @param enterpriseId
* @param memberId
* @param storeId
*/
private
void
addDelFriendEvent
(
String
unionId
,
String
clerkId
,
String
wxEnterpriseId
,
String
enterpriseId
,
String
memberId
,
String
storeId
,
Integer
changeType
)
{
String
addDelFriendEvent
=
config
.
getAddDelFriendEvent
();
if
(!
addDelFriendEvent
.
contains
(
wxEnterpriseId
))
{
log
.
info
(
"非定制,无需广播通知"
);
return
;
}
if
(
StringUtils
.
isBlank
(
memberId
))
{
log
.
info
(
"会员不存在:{}"
,
memberId
);
return
;
}
log
.
info
(
"欧泊莱定制:推送会员,memberId:{},changeType:{}"
,
memberId
,
changeType
);
//欧泊莱定制需求
ClerkDTO
clerkDTO
=
clerkService
.
getClerkByClerkIdNoStatus
(
clerkId
);
StoreDTO
storeDTO
=
storeService
.
getStore
(
storeId
);
MemberDTO
member
=
memberService
.
getMember
(
memberId
);
if
(
member
==
null
)
{
log
.
info
(
"会员不存在:{}"
,
memberId
);
return
;
}
GicMQClient
clientInstance
=
GICMQClientUtil
.
getClientInstance
();
try
{
JSONObject
msgBody
=
new
JSONObject
();
msgBody
.
put
(
"cardNo"
,
member
.
getCardNum
());
msgBody
.
put
(
"enterpriseId"
,
enterpriseId
);
msgBody
.
put
(
"unionid"
,
unionId
);
if
(
storeDTO
!=
null
)
{
msgBody
.
put
(
"storeName"
,
storeDTO
.
getStoreName
());
msgBody
.
put
(
"storeCode"
,
storeDTO
.
getStoreCode
());
}
if
(
clerkDTO
!=
null
)
{
msgBody
.
put
(
"clerkName"
,
clerkDTO
.
getClerkName
());
msgBody
.
put
(
"clerkCode"
,
clerkDTO
.
getClerkCode
());
}
msgBody
.
put
(
"changeType"
,
changeType
);
msgBody
.
put
(
"addCreateTime"
,
new
Date
());
msgBody
.
put
(
"delCreateTime"
,
""
);
//获取渠道
List
<
String
>
list
=
new
ArrayList
<>();
MemberSourceShowDTO
memberSourceShowDTO
=
memberEntranceApiService
.
getMemberSourceByMemberId
(
enterpriseId
,
memberId
);
if
(
memberSourceShowDTO
!=
null
&&
CollectionUtils
.
isNotEmpty
(
memberSourceShowDTO
.
getMemberSourceList
()))
{
for
(
MemberSourceDetailDTO
memberSourceDetailDTO
:
memberSourceShowDTO
.
getMemberSourceList
())
{
if
(
null
!=
memberSourceDetailDTO
.
getHighlight
()
&&
memberSourceDetailDTO
.
getHighlight
()
==
1
)
{
list
.
add
(
memberSourceDetailDTO
.
getParentSourceCode
());
}
}
}
SubscribeMessageDTO
subscribeMessageDTO
=
new
SubscribeMessageDTO
();
subscribeMessageDTO
.
setEvent
(
"addDelFriendEvent"
);
subscribeMessageDTO
.
setTopic
(
"member"
);
subscribeMessageDTO
.
setEnterpriseId
(
enterpriseId
);
subscribeMessageDTO
.
setMemberId
(
memberId
);
subscribeMessageDTO
.
setMemberChannels
(
list
);
subscribeMessageDTO
.
setMsgBody
(
msgBody
.
toJSONString
());
clientInstance
.
sendMessage
(
"dealQywxExternalUserEvent"
,
JSONObject
.
toJSONString
(
subscribeMessageDTO
));
}
catch
(
Exception
e
)
{
log
.
info
(
"加好友事件订阅通知:{}"
,
e
.
getMessage
(),
e
);
}
}
/**
* 刷新标签信息
*
* @param memberId
* @param wxEnterpriseId
* @param enterpriseId
*/
private
void
pushTagSync
(
String
memberId
,
String
wxEnterpriseId
,
String
enterpriseId
)
{
QywxTagSyncInfoPojo
pojo
=
new
QywxTagSyncInfoPojo
();
pojo
.
setDataId
(
memberId
);
pojo
.
setTaskId
(
"-1"
);
pojo
.
setTaskType
(
QywxSyncTaskTypeEnum
.
MEMBER_SYNC
.
getType
());
//单个会员同步
pojo
.
setSyncType
(
GicQywxSyncTypeEnum
.
SINGLE_WXENT_MEMNER_SYNC
.
getType
());
pojo
.
setWxEnterpriseId
(
wxEnterpriseId
);
pojo
.
setEnterpriseId
(
enterpriseId
);
GicMQClient
clientInstance
=
GICMQClientUtil
.
getClientInstance
();
try
{
clientInstance
.
sendMessage
(
"qywxTagSyncDeal"
,
JSONObject
.
toJSONString
(
pojo
));
}
catch
(
Exception
e
)
{
log
.
info
(
"异常:{}"
,
e
.
getMessage
(),
e
);
}
}
// @Override
// public ExternalClerkRelatedDTO getClerkFriendByUnionid(String enterpriseId, String clerkId, String unionid) {
// TabHaobanExternalClerkRelated externalClerkRelated = tabHaobanExternalClerkRelatedMapper.getClerkExternalByUnionId(enterpriseId, clerkId, unionid);
// ExternalClerkRelatedDTO clerkRelatedDTO = EntityUtil.changeEntityNew(ExternalClerkRelatedDTO.class, externalClerkRelated);
// return clerkRelatedDTO;
// }
@Override
public
ExternalClerkRelatedDTO
getExternalClerkByWxUserIdAncExternalUserId
(
String
wxEnterpriseId
,
String
staffId
,
String
enterpriseId
,
String
externalUserId
)
{
TabHaobanExternalClerkRelated
externalClerkRelated
=
tabHaobanExternalClerkRelatedMapper
.
getExternalClerkByWxUserIdAncExternalUserId
(
wxEnterpriseId
,
staffId
,
enterpriseId
,
externalUserId
);
return
EntityUtil
.
changeEntityNew
(
ExternalClerkRelatedDTO
.
class
,
externalClerkRelated
);
}
@Override
public
List
<
ExternalClerkRelatedDTO
>
listByIds
(
String
wxEnterpriseId
,
List
<
String
>
ids
)
{
List
<
TabHaobanExternalClerkRelated
>
list
=
tabHaobanExternalClerkRelatedMapper
.
listByIds
(
wxEnterpriseId
,
ids
);
return
EntityUtil
.
changeEntityListNew
(
ExternalClerkRelatedDTO
.
class
,
list
);
}
@Override
public
Page
<
String
>
pageExternalByEnterpriseId
(
String
wxEnterpriseId
,
String
enterpriseId
,
BasePageInfo
pageInfo
)
{
PageHelper
.
startPage
(
pageInfo
);
List
<
String
>
memberIDs
=
tabHaobanExternalClerkRelatedMapper
.
listMemberIdByEnterpriseId
(
wxEnterpriseId
,
enterpriseId
);
return
PageUtil
.
changePageHelperToCurrentPage
(
new
PageInfo
<>(
memberIDs
));
}
@Override
public
Page
<
String
>
pageExternalByEnterpriseId
(
String
wxEnterpriseId
,
String
enterpriseId
,
int
pageNum
,
int
pageSize
)
{
PageHelper
.
startPage
(
pageNum
,
pageSize
);
List
<
String
>
memberIDs
=
tabHaobanExternalClerkRelatedMapper
.
listMemberIdByEnterpriseId
(
wxEnterpriseId
,
enterpriseId
);
return
PageUtil
.
changePageHelperToCurrentPage
(
new
PageInfo
<>(
memberIDs
));
}
@Override
public
List
<
String
>
listExternalClerkMemberIdsByMemberIds
(
String
wxEnterpriseId
,
List
<
String
>
memberIds
)
{
return
tabHaobanExternalClerkRelatedMapper
.
listMemberIdsByMemberIds
(
memberIds
,
wxEnterpriseId
);
}
@Override
public
List
<
ExternalClerkRelatedShortInfoDTO
>
listExternalClerkByMemberId
(
String
memberId
,
String
enterpriseId
)
{
if
(
StringUtils
.
isAnyBlank
(
memberId
))
{
return
null
;
}
List
<
TabHaobanExternalClerkRelated
>
list
=
tabHaobanExternalClerkRelatedMapper
.
listByMemberId
(
memberId
,
enterpriseId
);
return
EntityUtil
.
changeEntityListNew
(
ExternalClerkRelatedShortInfoDTO
.
class
,
list
);
}
@Override
public
List
<
ExternalClerkRelatedShortInfoDTO
>
listExternalClerkByMemberId
(
String
memberId
)
{
if
(
StringUtils
.
isBlank
(
memberId
))
{
return
null
;
}
List
<
TabHaobanExternalClerkRelated
>
list
=
tabHaobanExternalClerkRelatedMapper
.
listByMemberId
(
memberId
,
null
);
return
EntityUtil
.
changeEntityListNew
(
ExternalClerkRelatedShortInfoDTO
.
class
,
list
);
}
@Override
public
List
<
String
>
listStoreIdByMemberId
(
String
memberId
)
{
if
(
StringUtils
.
isBlank
(
memberId
))
{
return
null
;
}
return
tabHaobanExternalClerkRelatedMapper
.
listStoreIdByMemberId
(
memberId
);
}
@Override
public
void
delByMemberIdAndEnterpriseId
(
String
memberId
,
String
enterpriseId
,
String
mergeMemberId
,
int
type
)
{
// 0 删除会员 1合并会员 2会员换绑
if
(
type
==
0
)
{
log
.
info
(
"删除会员,memberId:{}"
,
memberId
);
this
.
tabHaobanExternalClerkRelatedMapper
.
updateStatusByMemberId
(
memberId
,
enterpriseId
);
}
else
if
(
type
==
1
)
{
//合并会员,会员会先调删除,在调合并。顺序不能调换
log
.
info
(
"合并会员,memberId:{},新memberId={}"
,
memberId
,
mergeMemberId
);
int
i
=
tabHaobanExternalClerkRelatedMapper
.
countByMemberId
(
memberId
,
enterpriseId
);
if
(
i
>
0
)
{
tabHaobanExternalClerkRelatedMapper
.
updateMemberIdByMemberId
(
mergeMemberId
,
memberId
,
enterpriseId
);
log
.
info
(
"会员合并 ,更新为企微好友,新memberId:{}"
,
mergeMemberId
);
this
.
memberApiService
.
updateMemberQywxFlag
(
enterpriseId
,
mergeMemberId
,
1
);
}
}
else
if
(
type
==
2
)
{
int
m1
=
this
.
tabHaobanExternalClerkRelatedMapper
.
countByMemberId
(
memberId
,
enterpriseId
)
;
int
m2
=
this
.
tabHaobanExternalClerkRelatedMapper
.
countByMemberId
(
mergeMemberId
,
enterpriseId
)
;
log
.
info
(
"合并换绑,m1={},好友数={}, m2={},好友数={}"
,
memberId
,
m1
,
mergeMemberId
,
m2
);
if
(
m1
==
0
&&
m2
==
0
)
{
log
.
info
(
"都是非企微好友"
);
}
else
if
(
m1
==
0
&&
m2
>
0
)
{
this
.
tabHaobanExternalClerkRelatedMapper
.
updateMemberIdByMemberId
(
memberId
,
mergeMemberId
,
enterpriseId
);
log
.
info
(
"会员换绑 ,更新为企微好友,新memberId:{}"
,
memberId
);
this
.
memberApiService
.
updateMemberQywxFlag
(
enterpriseId
,
memberId
,
1
);
this
.
memberApiService
.
updateMemberQywxFlag
(
enterpriseId
,
mergeMemberId
,
0
);
}
else
if
(
m1
>
0
&&
m2
==
0
)
{
this
.
tabHaobanExternalClerkRelatedMapper
.
updateMemberIdByMemberId
(
mergeMemberId
,
memberId
,
enterpriseId
);
log
.
info
(
"会员换绑 ,更新为企微好友,新memberId:{}"
,
mergeMemberId
);
this
.
memberApiService
.
updateMemberQywxFlag
(
enterpriseId
,
mergeMemberId
,
1
);
this
.
memberApiService
.
updateMemberQywxFlag
(
enterpriseId
,
memberId
,
0
);
}
else
if
(
m1
>
0
&&
m2
>
0
)
{
List
<
String
>
m1IdList
=
this
.
tabHaobanExternalClerkRelatedMapper
.
getIdList
(
memberId
,
enterpriseId
)
;
List
<
String
>
m2IdList
=
this
.
tabHaobanExternalClerkRelatedMapper
.
getIdList
(
mergeMemberId
,
enterpriseId
)
;
this
.
tabHaobanExternalClerkRelatedMapper
.
updateMemberByIdList
(
mergeMemberId
,
m1IdList
);
this
.
tabHaobanExternalClerkRelatedMapper
.
updateMemberByIdList
(
memberId
,
m2IdList
);
this
.
memberApiService
.
updateMemberQywxFlag
(
enterpriseId
,
memberId
,
1
);
this
.
memberApiService
.
updateMemberQywxFlag
(
enterpriseId
,
mergeMemberId
,
1
);
}
}
}
@Override
public
void
delByMemberIdAndEnterpriseId
(
String
memberId
,
String
enterpriseId
,
String
mergeMemberId
)
{
log
.
info
(
"删除会员或者合并会员,memberId:{},enterpriseId:{},mergeMemberId:{}"
,
memberId
,
enterpriseId
,
mergeMemberId
);
if
(
StringUtils
.
isBlank
(
mergeMemberId
))
{
this
.
delByMemberIdAndEnterpriseId
(
memberId
,
enterpriseId
,
mergeMemberId
,
0
);
}
else
{
this
.
delByMemberIdAndEnterpriseId
(
memberId
,
enterpriseId
,
mergeMemberId
,
1
);
}
}
@Override
public
boolean
isFriends
(
String
memberId
,
String
clerkId
,
String
enterpriseId
)
{
StaffClerkRelationDTO
staffClerkRelation
=
staffClerkRelationMapper
.
getOneByClerkId
(
clerkId
,
null
);
if
(
staffClerkRelation
==
null
)
{
return
false
;
}
String
staffId
=
staffClerkRelation
.
getStaffId
();
return
this
.
isQwFriend
(
enterpriseId
,
staffId
,
memberId
).
getResult
()
;
}
@Override
public
com
.
gic
.
api
.
base
.
commons
.
ServiceResponse
<
Boolean
>
isQwFriend
(
String
enterpriseId
,
String
staffId
,
String
memberId
)
{
log
.
info
(
"查询是否好友enterpriseId={},staffId={},memberId={}"
,
enterpriseId
,
staffId
,
memberId
);
TabHaobanExternalClerkRelated
externalClerkRelated
=
tabHaobanExternalClerkRelatedMapper
.
getByMemberIdAndStaffId
(
staffId
,
enterpriseId
,
memberId
);
if
(
externalClerkRelated
==
null
)
{
return
com
.
gic
.
api
.
base
.
commons
.
ServiceResponse
.
success
(
Boolean
.
FALSE
);
}
return
com
.
gic
.
api
.
base
.
commons
.
ServiceResponse
.
success
(
externalClerkRelated
.
getStatusFlag
()
==
1
);
}
/**
* @param enterpriseId
* @param clerkId
* @param unionId
* @return
*/
@Override
public
com
.
gic
.
api
.
base
.
commons
.
ServiceResponse
<
Boolean
>
isQwFriendWithUnionId
(
String
enterpriseId
,
String
clerkId
,
String
unionId
)
{
StaffClerkRelationDTO
staffClerkRelation
=
staffClerkRelationMapper
.
getOneByClerkId
(
clerkId
,
null
);
if
(
staffClerkRelation
==
null
)
{
return
com
.
gic
.
api
.
base
.
commons
.
ServiceResponse
.
success
(
Boolean
.
FALSE
);
}
String
staffId
=
staffClerkRelation
.
getStaffId
();
TabHaobanExternalClerkRelated
externalClerkRelated
=
tabHaobanExternalClerkRelatedMapper
.
getByUnionIdAndStaffId
(
staffId
,
enterpriseId
,
unionId
);
if
(
externalClerkRelated
==
null
)
{
return
com
.
gic
.
api
.
base
.
commons
.
ServiceResponse
.
success
(
Boolean
.
FALSE
);
}
return
com
.
gic
.
api
.
base
.
commons
.
ServiceResponse
.
success
(
externalClerkRelated
.
getStatusFlag
()
==
1
);
}
// @Override
// public com.gic.api.base.commons.ServiceResponse<String> getExternalUseridForWxa(String enterpriseId, String staffId,
// String memberId) {
// TabHaobanExternalClerkRelated externalClerkRelated = tabHaobanExternalClerkRelatedMapper.getByMemberIdAndStaffId(staffId, enterpriseId, memberId);
// if(null != externalClerkRelated) {
// return com.gic.api.base.commons.ServiceResponse.success(externalClerkRelated.getExternalClerkRelatedId());
// }
// return com.gic.api.base.commons.ServiceResponse.failure("9999", "无好友关系") ;
// }
@Override
public
List
<
String
>
listMemberAndStaff
(
List
<
String
>
memberIdList
,
String
staffId
,
String
enterpriseId
)
{
List
<
String
>
list
=
tabHaobanExternalClerkRelatedMapper
.
listMemberAndStaff
(
memberIdList
,
staffId
,
enterpriseId
);
return
list
;
}
@Override
public
Map
<
String
,
List
<
ClerkStaffWxUserDTO
>>
listMemberStaffRel
(
List
<
String
>
memberIdList
,
List
<
String
>
clerkIdList
,
String
enterpriseId
,
String
wxEnterpriseId
)
{
if
(
CollectionUtils
.
isEmpty
(
memberIdList
)
||
CollectionUtils
.
isEmpty
(
clerkIdList
))
{
// 2个列表都为空查不了关系
return
Collections
.
emptyMap
();
}
WxEnterpriseQwDTO
qwDTO
=
this
.
wxEnterpriseService
.
getQwInfo
(
wxEnterpriseId
);
if
(
qwDTO
==
null
)
{
return
Collections
.
emptyMap
();
}
List
<
MemberStaffRelExtDO
>
res
=
staffClerkRelationMapper
.
listMemberStaffRelNew
(
memberIdList
,
clerkIdList
,
enterpriseId
,
wxEnterpriseId
);
if
(
CollectionUtils
.
isEmpty
(
res
))
{
return
Collections
.
emptyMap
();
}
return
res
.
stream
().
collect
(
Collectors
.
toMap
(
// key-memberId
MemberStaffRelExtDO:
:
getMemberId
,
// value-list
e
->
new
ArrayList
<>(
Collections
.
singletonList
(
new
ClerkStaffWxUserDTO
(
e
.
getStaffId
(),
e
.
getStaffClerkId
(),
e
.
getMemberExternalUserId
(),
e
.
getAddFriendTime
()))),
// 重复key的value添加到集合
(
List
<
ClerkStaffWxUserDTO
>
oldList
,
List
<
ClerkStaffWxUserDTO
>
newList
)
->
{
oldList
.
addAll
(
newList
);
return
oldList
;
}));
}
@Override
@Transactional
(
rollbackFor
=
Exception
.
class
)
public
ServiceResponse
updateNewExternalUserid
(
String
wxEnterpriseId
)
{
log
.
info
(
"企业外部联系人id start,wxEnterpriseId:{}"
,
wxEnterpriseId
);
TabHaobanWxEnterprise
tabHaobanWxEnterprise
=
wxEnterriseMapper
.
selectByPrimaryKey
(
wxEnterpriseId
);
ServiceResponse
serviceResponse
=
new
ServiceResponse
();
if
(
tabHaobanWxEnterprise
==
null
)
{
log
.
info
(
"企业外部联系人id为空"
);
serviceResponse
.
setCode
(
HaoBanErrCodeCommon
.
ERR_0
.
getCode
());
serviceResponse
.
setMessage
(
"企业外部联系人id为空"
);
return
serviceResponse
;
}
String
lockKey
=
"updateNewExternalUserid_"
+
wxEnterpriseId
;
if
(
RedisUtil
.
isLocked
(
lockKey
))
{
log
.
info
(
"redis锁,lockKey:{}"
,
lockKey
);
String
corpName
=
tabHaobanWxEnterprise
.
getCorpName
();
serviceResponse
.
setCode
(
HaoBanErrCodeCommon
.
ERR_0
.
getCode
());
serviceResponse
.
setMessage
(
corpName
+
"已经在转换中,请勿重复操作!"
);
return
serviceResponse
;
}
Integer
externalFlag
=
tabHaobanWxEnterprise
.
getExternalFlag
();
if
(
externalFlag
==
1
||
externalFlag
==
2
)
{
log
.
info
(
"已经在转换成功或转换中,请勿重复操作:wxEnterpriseId:{}"
,
wxEnterpriseId
);
String
corpName
=
tabHaobanWxEnterprise
.
getCorpName
();
serviceResponse
.
setCode
(
HaoBanErrCodeCommon
.
ERR_0
.
getCode
());
serviceResponse
.
setMessage
(
corpName
+
"已经在转换成功或转换中,请勿重复操作!"
);
return
serviceResponse
;
}
RedisUtil
.
lock
(
lockKey
,
1L
,
TimeUnit
.
DAYS
,
0L
);
try
{
WxEnterpriseQwDTO
qwDTO
=
this
.
wxEnterpriseService
.
getQwInfo
(
wxEnterpriseId
);
updateNewExUserId
(
tabHaobanWxEnterprise
.
getWxEnterpriseId
(),
qwDTO
.
getThirdCorpid
());
log
.
info
(
"企业外部联系人id end,wxEnterpriseId:{}"
,
wxEnterpriseId
);
RedisUtil
.
unlock
(
lockKey
);
serviceResponse
.
setCode
(
HaoBanErrCodeCommon
.
ERR_1
.
getCode
());
serviceResponse
.
setMessage
(
HaoBanErrCodeCommon
.
ERR_1
.
getMsg
());
return
serviceResponse
;
}
catch
(
Exception
e
)
{
log
.
info
(
"企业外部联系人id异常,wxEnterpriseId:{},{}"
,
wxEnterpriseId
,
e
.
getMessage
(),
e
);
RedisUtil
.
unlock
(
lockKey
);
serviceResponse
.
setCode
(
HaoBanErrCodeCommon
.
ERR_0
.
getCode
());
serviceResponse
.
setMessage
(
"企业外部联系人id转换异常,请联系技术人员查看"
);
return
serviceResponse
;
}
}
@Override
@Deprecated
public
void
updateNewExternalUseridMq
(
String
res
)
{
log
.
info
(
"更新新的外部联系人id mq,start"
);
}
@Override
public
List
<
ExternalClerkRelatedShortInfoDTO
>
listByMemberIdAndEnterpriseId
(
String
memberId
,
String
enterpriseId
)
{
List
<
TabHaobanExternalClerkRelated
>
list
=
tabHaobanExternalClerkRelatedMapper
.
listByMemberId
(
memberId
,
enterpriseId
);
return
EntityUtil
.
changeEntityListNew
(
ExternalClerkRelatedShortInfoDTO
.
class
,
list
);
}
@Override
public
ExternalClerkRelatedDTO
getByWxEnterpriseIdAndUnionId
(
String
wxEnterpriseId
,
String
staffId
,
String
unionid
)
{
TabHaobanExternalClerkRelated
related
=
tabHaobanExternalClerkRelatedMapper
.
getByWxEnterpriseIdAndUnionId
(
wxEnterpriseId
,
staffId
,
unionid
);
return
EntityUtil
.
changeEntityNew
(
ExternalClerkRelatedDTO
.
class
,
related
);
}
@Override
public
FriendMemberStatusDTO
getFriendMemberStatus
(
String
memberId
,
String
enterpriseId
)
{
TabHaobanExternalClerkRelated
tabHaobanExternalClerkRelated
=
tabHaobanExternalClerkRelatedMapper
.
getByEnterpriseIdAndMemberId
(
enterpriseId
,
memberId
,
null
);
if
(
tabHaobanExternalClerkRelated
!=
null
)
{
TabHaobanExternalClerkRelated
hasFriend
=
tabHaobanExternalClerkRelatedMapper
.
getByEnterpriseIdAndMemberId
(
enterpriseId
,
memberId
,
1
);
if
(
hasFriend
!=
null
)
{
FriendMemberStatusDTO
friendMemberStatusDTO
=
new
FriendMemberStatusDTO
();
friendMemberStatusDTO
.
setStatusFlag
(
1
);
friendMemberStatusDTO
.
setLastCreateTime
(
hasFriend
.
getCreateTime
());
return
friendMemberStatusDTO
;
}
else
{
TabHaobanExternalClerkRelated
hasCancelFriend
=
tabHaobanExternalClerkRelatedMapper
.
getByEnterpriseIdAndMemberId
(
enterpriseId
,
memberId
,
2
);
if
(
hasCancelFriend
!=
null
)
{
FriendMemberStatusDTO
friendMemberStatusDTO
=
new
FriendMemberStatusDTO
();
friendMemberStatusDTO
.
setStatusFlag
(
2
);
friendMemberStatusDTO
.
setLastCancelCreateTime
(
hasCancelFriend
.
getCreateTime
());
return
friendMemberStatusDTO
;
}
}
}
FriendMemberStatusDTO
friendMemberStatusDTO
=
new
FriendMemberStatusDTO
();
friendMemberStatusDTO
.
setStatusFlag
(
0
);
return
friendMemberStatusDTO
;
}
/**
* 更新状态
*
* @param corpid
* @param wxEnterpriseId
*/
private
void
updateAgreeExternalUseridFlag
(
String
corpid
,
String
wxEnterpriseId
)
{
//serviceCorpid 默认为:达摩网络
boolean
flag
=
qywxUserApiService
.
finishExternalUseridMigration
(
corpid
,
config
.
getCorpid
());
log
.
info
(
"更新新的外部联系人id最后一页,设置迁移完成:flag:{}"
,
flag
);
if
(
flag
)
{
//成功
wxEnterpriseApiService
.
agreeExternalUseridFlag
(
wxEnterpriseId
,
1
);
}
else
{
//失败
wxEnterriseMapper
.
updateExternalFlagById
(
3
,
wxEnterpriseId
);
//回退老的
//externalUseridLogMapper.updateOldExternalUserId(wxEnterpriseId);
//更新状态为失败
externalUseridLogMapper
.
updateStatusFlagByWxEnterpriseId
(
0
,
wxEnterpriseId
);
}
}
@Override
public
boolean
isExternalFriendByMemberId
(
String
memberId
,
String
enterpriseId
)
{
int
count
=
tabHaobanExternalClerkRelatedMapper
.
countByMemberId
(
memberId
,
enterpriseId
);
return
count
>
0
;
}
/**
* 更新新的外部联系人id
*
* @param wxEnterpriseId wx企业标识
* @param corpid corpid
* @author mozhu
* @date 2021-12-13 15:40:30
*/
private
void
updateNewExUserId
(
String
wxEnterpriseId
,
String
corpid
)
{
wxEnterriseMapper
.
updateExternalFlagById
(
2
,
wxEnterpriseId
);
messageAlert
(
wxEnterpriseId
,
"更新新的外部联系人id"
);
// 限流器
RRateLimiter
rateLimiter
=
RedisUtil
.
getRedisClient
().
getRateLimiter
(
"haoban:manage3:updateNewExUserId:limit"
);
// 每1秒产生5个令牌
rateLimiter
.
trySetRate
(
RateType
.
OVERALL
,
5
,
1
,
RateIntervalUnit
.
SECONDS
);
int
pageNum
=
1
;
// 开启消息发送
while
(
true
)
{
// 获取令牌
rateLimiter
.
acquire
();
//企微转换最多支持1000个
PageInfo
<
TabHaobanExternalClerkRelated
>
tabHaobanWxEnterprisePageInfo
=
pageExternalByWxEnterpriseId
(
wxEnterpriseId
,
pageNum
,
1000
);
List
<
TabHaobanExternalClerkRelated
>
enterprisePageInfoList
=
tabHaobanWxEnterprisePageInfo
.
getList
();
if
(
CollectionUtils
.
isEmpty
(
enterprisePageInfoList
))
{
if
(
pageNum
==
1
)
{
log
.
info
(
"如果没有好友,直接转换完成..corpid:{}"
,
corpid
);
updateAgreeExternalUseridFlag
(
corpid
,
wxEnterpriseId
);
}
break
;
}
pageNum
++;
List
<
String
>
externalUserIdList
=
enterprisePageInfoList
.
stream
().
map
(
TabHaobanExternalClerkRelated:
:
getExternalUserId
).
collect
(
Collectors
.
toList
());
JSONObject
jsonObject
=
new
JSONObject
();
jsonObject
.
put
(
"corpid"
,
corpid
);
jsonObject
.
put
(
"wxEnterpriseId"
,
wxEnterpriseId
);
jsonObject
.
put
(
"externalUserIdList"
,
externalUserIdList
);
jsonObject
.
put
(
"externalUserId"
,
externalUserIdList
.
get
(
0
));
//是否是最后一批
if
(
tabHaobanWxEnterprisePageInfo
.
isIsLastPage
())
{
jsonObject
.
put
(
"isLastPage"
,
true
);
}
else
{
jsonObject
.
put
(
"isLastPage"
,
false
);
}
GicMQClient
clientInstance
=
GICMQClientUtil
.
getClientInstance
();
try
{
clientInstance
.
sendMessage
(
"updateNewExUserIdMq"
,
JSONObject
.
toJSONString
(
jsonObject
));
}
catch
(
Exception
e
)
{
log
.
info
(
"企微转换id发送消息队列异常:{}"
,
e
.
getMessage
(),
e
);
}
}
}
/**
* 根据企业id分页
*
* @param wxEnterpriseId 企业标识
* @param pageNum 页面num
* @param pageSize 页面大小
* @return {@link Page<ExternalClerkRelatedDTO> }
* @author mozhu
* @date 2021-12-13 15:10:19
*/
private
PageInfo
<
TabHaobanExternalClerkRelated
>
pageExternalByWxEnterpriseId
(
String
wxEnterpriseId
,
Integer
pageNum
,
Integer
pageSize
)
{
PageHelper
.
startPage
(
pageNum
,
pageSize
);
List
<
TabHaobanExternalClerkRelated
>
tabHaobanWxEnterpriseList
=
tabHaobanExternalClerkRelatedMapper
.
pageExternalByEnterpriseId
(
wxEnterpriseId
);
return
new
PageInfo
<>(
tabHaobanWxEnterpriseList
);
}
/**
* 消息提醒
* 告警
*
* @param wxEnterpriseId wx企业标识
* @param titleSub 子标题
*/
private
void
messageAlert
(
String
wxEnterpriseId
,
String
titleSub
)
{
ProviderLocalTag
providerLocalTag
=
ProviderLocalTag
.
tag
.
get
();
String
traceId
=
providerLocalTag
.
traceId
;
AlertMessageDTO
messageDTO
=
new
AlertMessageDTO
();
messageDTO
.
setTraceId
(
traceId
);
messageDTO
.
setWxEnterpriseId
(
wxEnterpriseId
);
messageDTO
.
setAlertTitle
(
titleSub
);
messageDTO
.
setAlertType
(
AlertTypeEnum
.
GET_NEW_EXTERNAL_USERID
.
getType
());
checkQywxSettingApiService
.
alertCallback
(
JSONObject
.
toJSONString
(
messageDTO
));
}
@Override
public
int
countFriendCountByClerkId
(
String
wxEnterpriseId
,
String
enterpriseId
,
String
staffId
,
String
clerkId
)
{
return
tabHaobanExternalClerkRelatedMapper
.
countByClerkId
(
wxEnterpriseId
,
enterpriseId
,
staffId
,
clerkId
);
}
@Override
public
void
initWxEnterpriseFriend
(
String
wxEnterpriseId
)
{
log
.
info
(
"刷新整个企业的好友开始={}"
,
wxEnterpriseId
);
String
taskName
=
"刷新整个企微好友"
;
String
taskId
=
dealSyncOperationApiService
.
createWxFriendTaskSingle
(
wxEnterpriseId
,
taskName
,
"-1"
,
"管理员"
,
SyncTaskTypeEnum
.
FRIEND_WX_ENTEPRISE
.
getType
());
if
(
StringUtils
.
isNotBlank
(
taskId
))
{
List
<
String
>
staffList
=
staffClerkRelationMapper
.
listByWxEnterpriseId
(
wxEnterpriseId
);
if
(
CollectionUtils
.
isEmpty
(
staffList
))
{
log
.
info
(
"没有要刷新的:{},{}"
,
wxEnterpriseId
,
staffList
);
return
;
}
staffList
=
staffList
.
stream
().
distinct
().
collect
(
Collectors
.
toList
());
log
.
info
(
"staffList={}"
,
JSON
.
toJSONString
(
staffList
));
for
(
String
staffId
:
staffList
)
{
this
.
dealSyncOperationApiService
.
dealWxFriendClerkSingle
(
taskId
,
staffId
,
staffId
,
wxEnterpriseId
);
}
}
}
@Override
public
int
getCountExternalClerk
(
String
wxEnterpriseId
,
String
staffId
,
List
<
Integer
>
statusFlags
)
{
return
tabHaobanExternalClerkRelatedMapper
.
getCountExternalClerk
(
wxEnterpriseId
,
staffId
,
statusFlags
);
}
@Override
public
int
updateExternalStatus
(
String
wxEnterpriseId
,
String
externalUserid
,
int
status
)
{
return
this
.
tabHaobanExternalClerkRelatedMapper
.
updateExternalStatus
(
wxEnterpriseId
,
externalUserid
,
status
);
}
}
package
com
.
gic
.
haoban
.
manage
.
service
.
service
.
out
.
impl
;
import
com.alibaba.fastjson.JSON
;
import
com.alibaba.fastjson.JSONObject
;
import
com.gic.api.base.commons.Page
;
import
com.gic.api.base.dto.SubscribeMessageDTO
;
import
com.gic.clerk.api.dto.ClerkDTO
;
import
com.gic.clerk.api.service.ClerkService
;
import
com.gic.commons.util.EntityUtil
;
import
com.gic.commons.util.GICMQClientUtil
;
import
com.gic.dubbo.entity.ProviderLocalTag
;
import
com.gic.enterprise.api.dto.StoreDTO
;
import
com.gic.enterprise.api.service.StoreService
;
import
com.gic.haoban.app.customer.enums.GicQywxSyncTypeEnum
;
import
com.gic.haoban.app.customer.enums.QywxSyncTaskTypeEnum
;
import
com.gic.haoban.base.api.common.BasePageInfo
;
import
com.gic.haoban.base.api.common.ServiceResponse
;
import
com.gic.haoban.base.api.common.errCode.HaoBanErrCodeCommon
;
import
com.gic.haoban.common.utils.PageUtil
;
import
com.gic.haoban.manage.api.dto.*
;
import
com.gic.haoban.manage.api.enums.AlertTypeEnum
;
import
com.gic.haoban.manage.api.enums.SyncTaskTypeEnum
;
import
com.gic.haoban.manage.api.service.CheckQywxSettingApiService
;
import
com.gic.haoban.manage.api.service.DealSyncOperationApiService
;
import
com.gic.haoban.manage.api.service.ExternalClerkRelatedApiService
;
import
com.gic.haoban.manage.api.service.WxEnterpriseApiService
;
import
com.gic.haoban.manage.service.config.Config
;
import
com.gic.haoban.manage.service.dao.mapper.*
;
import
com.gic.haoban.manage.service.entity.TabHaobanExternalClerkRelated
;
import
com.gic.haoban.manage.service.entity.TabHaobanWxEnterprise
;
import
com.gic.haoban.manage.service.entity.ext.MemberStaffRelExtDO
;
import
com.gic.haoban.manage.service.pojo.QywxTagSyncInfoPojo
;
import
com.gic.haoban.manage.service.service.WxEnterpriseService
;
import
com.gic.haoban.manage.service.service.hm.WxUserAddLogService
;
import
com.gic.member.api.dto.MemberDTO
;
import
com.gic.member.api.dto.MemberSourceDetailDTO
;
import
com.gic.member.api.dto.MemberSourceShowDTO
;
import
com.gic.member.api.service.MemberApiService
;
import
com.gic.member.api.service.MemberEntranceApiService
;
import
com.gic.member.api.service.MemberService
;
import
com.gic.mq.sdk.GicMQClient
;
import
com.gic.redis.data.util.RedisUtil
;
import
com.gic.wechat.api.service.qywx.QywxUserApiService
;
import
com.github.pagehelper.PageHelper
;
import
com.github.pagehelper.PageInfo
;
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.redisson.api.RRateLimiter
;
import
org.redisson.api.RateIntervalUnit
;
import
org.redisson.api.RateType
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Service
;
import
org.springframework.transaction.annotation.Transactional
;
import
java.util.*
;
import
java.util.concurrent.TimeUnit
;
import
java.util.stream.Collectors
;
@Service
public
class
ExternalClerkRelatedApiServiceImpl
implements
ExternalClerkRelatedApiService
{
private
static
final
Logger
log
=
LogManager
.
getLogger
(
ExternalClerkRelatedApiServiceImpl
.
class
);
@Autowired
private
TabHaobanExternalClerkRelatedMapper
tabHaobanExternalClerkRelatedMapper
;
@Autowired
private
TabHaobanStaffClerkRelationMapper
staffClerkRelationMapper
;
@Autowired
private
WxEnterpriseMapper
wxEnterriseMapper
;
@Autowired
private
QywxUserApiService
qywxUserApiService
;
@Autowired
private
Config
config
;
@Autowired
private
ExternalUseridLogMapper
externalUseridLogMapper
;
@Autowired
private
CheckQywxSettingApiService
checkQywxSettingApiService
;
@Autowired
private
WxEnterpriseApiService
wxEnterpriseApiService
;
@Autowired
private
MemberApiService
memberApiService
;
@Autowired
private
WxUserAddLogService
wxUserAddLogService
;
@Autowired
private
WxEnterpriseService
wxEnterpriseService
;
@Autowired
private
DealSyncOperationApiService
dealSyncOperationApiService
;
@Autowired
private
MemberEntranceApiService
memberEntranceApiService
;
@Autowired
private
StoreService
storeService
;
@Autowired
private
ClerkService
clerkService
;
@Autowired
private
MemberService
memberService
;
/**
* 查询会员在企业下的好友关系
*
* @param memberId : 会员id
* @param wxEnterpriseId : 微信企业id
* @param enterpriseId : 企业id
* @return : 返回会员导购关联关系
*/
@Override
public
List
<
ExternalClerkRelatedDTO
>
listByMemberIdAndWxEnterpriseId
(
String
memberId
,
String
wxEnterpriseId
,
String
enterpriseId
)
{
List
<
TabHaobanExternalClerkRelated
>
list
=
tabHaobanExternalClerkRelatedMapper
.
listByMemberIdAndWxEnterpriseId
(
memberId
,
wxEnterpriseId
,
enterpriseId
);
return
EntityUtil
.
changeEntityListByJSON
(
ExternalClerkRelatedDTO
.
class
,
list
);
}
@Override
public
List
<
ExternalClerkRelatedDTO
>
listByMemberIdList
(
List
<
String
>
memberIdList
,
String
wxEnterpriseId
,
String
enterpriseId
)
{
List
<
ExternalClerkRelatedDTO
>
list
=
tabHaobanExternalClerkRelatedMapper
.
listByMemberIdList
(
memberIdList
,
wxEnterpriseId
,
enterpriseId
);
return
list
;
}
@Override
public
List
<
ExternalClerkRelatedDTO
>
listByWxEnterpriseIdAndWxUserId
(
String
staffId
,
String
wxEnterpriseId
)
{
return
EntityUtil
.
changeEntityListByJSON
(
ExternalClerkRelatedDTO
.
class
,
tabHaobanExternalClerkRelatedMapper
.
listByWxEnterpriseIdAndWxUserId
(
staffId
,
wxEnterpriseId
));
}
@Override
public
List
<
ExternalClerkRelatedDTO
>
listByWxEnterpriseIdAndWxUserIds
(
List
<
String
>
staffIdList
,
String
wxEnterpriseId
)
{
if
(
CollectionUtils
.
isEmpty
(
staffIdList
))
{
return
Collections
.
emptyList
();
}
return
EntityUtil
.
changeEntityListByJSON
(
ExternalClerkRelatedDTO
.
class
,
tabHaobanExternalClerkRelatedMapper
.
listByWxEnterpriseIdAndWxUserIds
(
staffIdList
,
wxEnterpriseId
));
}
@Override
public
ExternalClerkRelatedDTO
getExternalClerkByRelationKeyAndPre
(
String
relationKey
)
{
TabHaobanExternalClerkRelated
related
=
tabHaobanExternalClerkRelatedMapper
.
getByRelationKey
(
relationKey
,
0
);
return
EntityUtil
.
changeEntityNew
(
ExternalClerkRelatedDTO
.
class
,
related
);
}
@Override
public
Page
<
ExternalClerkRelatedDTO
>
pageExternalClerk
(
String
wxEnterpriseId
,
String
staffId
,
List
<
Integer
>
statusFlags
,
BasePageInfo
pageInfo
)
{
PageHelper
.
startPage
(
pageInfo
);
List
<
TabHaobanExternalClerkRelated
>
ret
=
tabHaobanExternalClerkRelatedMapper
.
listByWxEnterpriseIdAndWxUserIdAndStatus
(
wxEnterpriseId
,
staffId
,
statusFlags
);
return
PageUtil
.
changePageHelperToCurrentPage
(
new
PageInfo
<>(
ret
),
ExternalClerkRelatedDTO
.
class
);
}
@Override
public
boolean
pushExternalByRelationKey
(
String
relationKey
)
{
tabHaobanExternalClerkRelatedMapper
.
pushExternalByRelationKey
(
relationKey
);
return
true
;
}
@Override
public
List
<
ExternalClerkRelatedDTO
>
listByEnterpriseIdAndDate
(
String
enterpriseId
,
Date
date
)
{
List
<
TabHaobanExternalClerkRelated
>
list
=
tabHaobanExternalClerkRelatedMapper
.
listByEnterpriseIdAndDate
(
enterpriseId
,
date
);
return
EntityUtil
.
changeEntityListByJSON
(
ExternalClerkRelatedDTO
.
class
,
list
);
}
@Override
public
Page
<
ExternalClerkRelatedDTO
>
pageMemberUnionByParams
(
List
<
String
>
userIdList
,
List
<
String
>
sendMemberIds
,
String
enterpriseId
,
BasePageInfo
pageInfo
)
{
PageHelper
.
startPage
(
pageInfo
.
getPageNum
(),
pageInfo
.
getPageSize
());
return
PageUtil
.
changePageHelperToCurrentPage
(
tabHaobanExternalClerkRelatedMapper
.
pageMemberUnionByParams
(
userIdList
,
sendMemberIds
,
enterpriseId
),
ExternalClerkRelatedDTO
.
class
);
}
@Override
public
ServiceResponse
<
ExternalClerkRelatedDTO
>
bindMemberIdExternalByRelationKey
(
String
relationKey
,
String
enterpriseId
,
String
memberId
,
String
unionid
)
{
ServiceResponse
<
ExternalClerkRelatedDTO
>
resp
=
new
ServiceResponse
<>();
TabHaobanExternalClerkRelated
externalClerkRelated
=
tabHaobanExternalClerkRelatedMapper
.
getByRelationKey
(
relationKey
,
1
);
if
(
null
==
externalClerkRelated
)
{
log
.
error
(
"relationKey对应的关联关系不存在或删除:relationKey:{},memberId:{},unionid:{}"
,
relationKey
,
memberId
,
unionid
);
resp
.
setCode
(
0
);
resp
.
setMessage
(
"relationKey对应的关联关系不存在或删除"
);
return
resp
;
}
if
(!
externalClerkRelated
.
getEnterpriseId
().
equals
(
enterpriseId
))
{
log
.
error
(
"relationKey对应的企业与所传会员企业不对应:relationKey:{},memberId:{},unionid:{}"
,
relationKey
,
memberId
,
unionid
);
resp
.
setCode
(
0
);
resp
.
setMessage
(
"relationKey对应的企业与所传会员企业不对应"
);
return
resp
;
}
updateExternalClerkRelated
(
enterpriseId
,
memberId
,
unionid
,
externalClerkRelated
);
resp
.
setResult
(
EntityUtil
.
changeEntityNew
(
ExternalClerkRelatedDTO
.
class
,
externalClerkRelated
));
return
resp
;
}
@Override
public
boolean
bindMemberIdExternalById
(
String
externalClerkRelatedId
,
String
enterpriseId
,
String
memberId
,
String
unionid
)
{
TabHaobanExternalClerkRelated
externalClerkRelated
=
tabHaobanExternalClerkRelatedMapper
.
selectByPrimaryKey
(
externalClerkRelatedId
);
if
(
externalClerkRelated
==
null
)
{
log
.
error
(
"查询好办与gic数据为空,externalClerkRelatedId:{},enterpriseId:{},memberId:{},unionid:{}"
,
externalClerkRelatedId
,
enterpriseId
,
memberId
,
unionid
);
return
false
;
}
updateExternalClerkRelated
(
enterpriseId
,
memberId
,
unionid
,
externalClerkRelated
);
return
true
;
}
/**
* 更新好友关系
*
* @param enterpriseId
* @param memberId
* @param unionid
* @param externalClerkRelated
*/
private
void
updateExternalClerkRelated
(
String
enterpriseId
,
String
memberId
,
String
unionid
,
TabHaobanExternalClerkRelated
externalClerkRelated
)
{
externalClerkRelated
.
setMemberId
(
memberId
);
externalClerkRelated
.
setUnionid
(
unionid
);
externalClerkRelated
.
setUpdateTime
(
new
Date
());
externalClerkRelated
.
setStatusFlag
(
1
);
tabHaobanExternalClerkRelatedMapper
.
updateByPrimaryKeySelective
(
externalClerkRelated
);
String
wxEnterpriseId
=
externalClerkRelated
.
getWxEnterpriseId
();
//同步标签
pushTagSync
(
memberId
,
wxEnterpriseId
,
enterpriseId
);
//回调给会员,更新是否为企微好友
log
.
info
(
"通知会员 合并会员后更新为企微好友,memberId:{}"
,
memberId
);
memberApiService
.
updateMemberQywxFlag
(
enterpriseId
,
memberId
,
1
);
//定制
addDelFriendEvent
(
unionid
,
externalClerkRelated
.
getClerkId
(),
wxEnterpriseId
,
enterpriseId
,
memberId
,
externalClerkRelated
.
getStoreId
(),
1
);
//日志
wxUserAddLogService
.
updateMemberInfo
(
wxEnterpriseId
,
enterpriseId
,
externalClerkRelated
.
getStaffId
(),
externalClerkRelated
.
getExternalUserId
(),
memberId
);
}
/**
* 欧泊莱定制需求
*
* @param unionId
* @param clerkId
* @param enterpriseId
* @param memberId
* @param storeId
*/
private
void
addDelFriendEvent
(
String
unionId
,
String
clerkId
,
String
wxEnterpriseId
,
String
enterpriseId
,
String
memberId
,
String
storeId
,
Integer
changeType
)
{
String
addDelFriendEvent
=
config
.
getAddDelFriendEvent
();
if
(!
addDelFriendEvent
.
contains
(
wxEnterpriseId
))
{
log
.
info
(
"非定制,无需广播通知"
);
return
;
}
if
(
StringUtils
.
isBlank
(
memberId
))
{
log
.
info
(
"会员不存在:{}"
,
memberId
);
return
;
}
log
.
info
(
"欧泊莱定制:推送会员,memberId:{},changeType:{}"
,
memberId
,
changeType
);
//欧泊莱定制需求
ClerkDTO
clerkDTO
=
clerkService
.
getClerkByClerkIdNoStatus
(
clerkId
);
StoreDTO
storeDTO
=
storeService
.
getStore
(
storeId
);
MemberDTO
member
=
memberService
.
getMember
(
memberId
);
if
(
member
==
null
)
{
log
.
info
(
"会员不存在:{}"
,
memberId
);
return
;
}
GicMQClient
clientInstance
=
GICMQClientUtil
.
getClientInstance
();
try
{
JSONObject
msgBody
=
new
JSONObject
();
msgBody
.
put
(
"cardNo"
,
member
.
getCardNum
());
msgBody
.
put
(
"enterpriseId"
,
enterpriseId
);
msgBody
.
put
(
"unionid"
,
unionId
);
if
(
storeDTO
!=
null
)
{
msgBody
.
put
(
"storeName"
,
storeDTO
.
getStoreName
());
msgBody
.
put
(
"storeCode"
,
storeDTO
.
getStoreCode
());
}
if
(
clerkDTO
!=
null
)
{
msgBody
.
put
(
"clerkName"
,
clerkDTO
.
getClerkName
());
msgBody
.
put
(
"clerkCode"
,
clerkDTO
.
getClerkCode
());
}
msgBody
.
put
(
"changeType"
,
changeType
);
msgBody
.
put
(
"addCreateTime"
,
new
Date
());
msgBody
.
put
(
"delCreateTime"
,
""
);
//获取渠道
List
<
String
>
list
=
new
ArrayList
<>();
MemberSourceShowDTO
memberSourceShowDTO
=
memberEntranceApiService
.
getMemberSourceByMemberId
(
enterpriseId
,
memberId
);
if
(
memberSourceShowDTO
!=
null
&&
CollectionUtils
.
isNotEmpty
(
memberSourceShowDTO
.
getMemberSourceList
()))
{
for
(
MemberSourceDetailDTO
memberSourceDetailDTO
:
memberSourceShowDTO
.
getMemberSourceList
())
{
if
(
null
!=
memberSourceDetailDTO
.
getHighlight
()
&&
memberSourceDetailDTO
.
getHighlight
()
==
1
)
{
list
.
add
(
memberSourceDetailDTO
.
getParentSourceCode
());
}
}
}
SubscribeMessageDTO
subscribeMessageDTO
=
new
SubscribeMessageDTO
();
subscribeMessageDTO
.
setEvent
(
"addDelFriendEvent"
);
subscribeMessageDTO
.
setTopic
(
"member"
);
subscribeMessageDTO
.
setEnterpriseId
(
enterpriseId
);
subscribeMessageDTO
.
setMemberId
(
memberId
);
subscribeMessageDTO
.
setMemberChannels
(
list
);
subscribeMessageDTO
.
setMsgBody
(
msgBody
.
toJSONString
());
clientInstance
.
sendMessage
(
"dealQywxExternalUserEvent"
,
JSONObject
.
toJSONString
(
subscribeMessageDTO
));
}
catch
(
Exception
e
)
{
log
.
info
(
"加好友事件订阅通知:{}"
,
e
.
getMessage
(),
e
);
}
}
/**
* 刷新标签信息
*
* @param memberId
* @param wxEnterpriseId
* @param enterpriseId
*/
private
void
pushTagSync
(
String
memberId
,
String
wxEnterpriseId
,
String
enterpriseId
)
{
QywxTagSyncInfoPojo
pojo
=
new
QywxTagSyncInfoPojo
();
pojo
.
setDataId
(
memberId
);
pojo
.
setTaskId
(
"-1"
);
pojo
.
setTaskType
(
QywxSyncTaskTypeEnum
.
MEMBER_SYNC
.
getType
());
//单个会员同步
pojo
.
setSyncType
(
GicQywxSyncTypeEnum
.
SINGLE_WXENT_MEMNER_SYNC
.
getType
());
pojo
.
setWxEnterpriseId
(
wxEnterpriseId
);
pojo
.
setEnterpriseId
(
enterpriseId
);
GicMQClient
clientInstance
=
GICMQClientUtil
.
getClientInstance
();
try
{
clientInstance
.
sendMessage
(
"qywxTagSyncDeal"
,
JSONObject
.
toJSONString
(
pojo
));
}
catch
(
Exception
e
)
{
log
.
info
(
"异常:{}"
,
e
.
getMessage
(),
e
);
}
}
// @Override
// public ExternalClerkRelatedDTO getClerkFriendByUnionid(String enterpriseId, String clerkId, String unionid) {
// TabHaobanExternalClerkRelated externalClerkRelated = tabHaobanExternalClerkRelatedMapper.getClerkExternalByUnionId(enterpriseId, clerkId, unionid);
// ExternalClerkRelatedDTO clerkRelatedDTO = EntityUtil.changeEntityNew(ExternalClerkRelatedDTO.class, externalClerkRelated);
// return clerkRelatedDTO;
// }
@Override
public
ExternalClerkRelatedDTO
getExternalClerkByWxUserIdAncExternalUserId
(
String
wxEnterpriseId
,
String
staffId
,
String
enterpriseId
,
String
externalUserId
)
{
TabHaobanExternalClerkRelated
externalClerkRelated
=
tabHaobanExternalClerkRelatedMapper
.
getExternalClerkByWxUserIdAncExternalUserId
(
wxEnterpriseId
,
staffId
,
enterpriseId
,
externalUserId
);
if
(
null
==
externalClerkRelated
)
{
externalClerkRelated
=
this
.
tabHaobanExternalClerkRelatedMapper
.
getExternalClerkByWxUserIdAncExternalUserIdSelf
(
wxEnterpriseId
,
staffId
,
enterpriseId
,
externalUserId
)
;
}
return
EntityUtil
.
changeEntityNew
(
ExternalClerkRelatedDTO
.
class
,
externalClerkRelated
);
}
@Override
public
List
<
ExternalClerkRelatedDTO
>
listByIds
(
String
wxEnterpriseId
,
List
<
String
>
ids
)
{
List
<
TabHaobanExternalClerkRelated
>
list
=
tabHaobanExternalClerkRelatedMapper
.
listByIds
(
wxEnterpriseId
,
ids
);
return
EntityUtil
.
changeEntityListNew
(
ExternalClerkRelatedDTO
.
class
,
list
);
}
@Override
public
Page
<
String
>
pageExternalByEnterpriseId
(
String
wxEnterpriseId
,
String
enterpriseId
,
BasePageInfo
pageInfo
)
{
PageHelper
.
startPage
(
pageInfo
);
List
<
String
>
memberIDs
=
tabHaobanExternalClerkRelatedMapper
.
listMemberIdByEnterpriseId
(
wxEnterpriseId
,
enterpriseId
);
return
PageUtil
.
changePageHelperToCurrentPage
(
new
PageInfo
<>(
memberIDs
));
}
@Override
public
Page
<
String
>
pageExternalByEnterpriseId
(
String
wxEnterpriseId
,
String
enterpriseId
,
int
pageNum
,
int
pageSize
)
{
PageHelper
.
startPage
(
pageNum
,
pageSize
);
List
<
String
>
memberIDs
=
tabHaobanExternalClerkRelatedMapper
.
listMemberIdByEnterpriseId
(
wxEnterpriseId
,
enterpriseId
);
return
PageUtil
.
changePageHelperToCurrentPage
(
new
PageInfo
<>(
memberIDs
));
}
@Override
public
List
<
String
>
listExternalClerkMemberIdsByMemberIds
(
String
wxEnterpriseId
,
List
<
String
>
memberIds
)
{
return
tabHaobanExternalClerkRelatedMapper
.
listMemberIdsByMemberIds
(
memberIds
,
wxEnterpriseId
);
}
@Override
public
List
<
ExternalClerkRelatedShortInfoDTO
>
listExternalClerkByMemberId
(
String
memberId
,
String
enterpriseId
)
{
if
(
StringUtils
.
isAnyBlank
(
memberId
))
{
return
null
;
}
List
<
TabHaobanExternalClerkRelated
>
list
=
tabHaobanExternalClerkRelatedMapper
.
listByMemberId
(
memberId
,
enterpriseId
);
return
EntityUtil
.
changeEntityListNew
(
ExternalClerkRelatedShortInfoDTO
.
class
,
list
);
}
@Override
public
List
<
ExternalClerkRelatedShortInfoDTO
>
listExternalClerkByMemberId
(
String
memberId
)
{
if
(
StringUtils
.
isBlank
(
memberId
))
{
return
null
;
}
List
<
TabHaobanExternalClerkRelated
>
list
=
tabHaobanExternalClerkRelatedMapper
.
listByMemberId
(
memberId
,
null
);
return
EntityUtil
.
changeEntityListNew
(
ExternalClerkRelatedShortInfoDTO
.
class
,
list
);
}
@Override
public
List
<
String
>
listStoreIdByMemberId
(
String
memberId
)
{
if
(
StringUtils
.
isBlank
(
memberId
))
{
return
null
;
}
return
tabHaobanExternalClerkRelatedMapper
.
listStoreIdByMemberId
(
memberId
);
}
@Override
public
void
delByMemberIdAndEnterpriseId
(
String
memberId
,
String
enterpriseId
,
String
mergeMemberId
,
int
type
)
{
// 0 删除会员 1合并会员 2会员换绑
if
(
type
==
0
)
{
log
.
info
(
"删除会员,memberId:{}"
,
memberId
);
this
.
tabHaobanExternalClerkRelatedMapper
.
updateStatusByMemberId
(
memberId
,
enterpriseId
);
}
else
if
(
type
==
1
)
{
//合并会员,会员会先调删除,在调合并。顺序不能调换
log
.
info
(
"合并会员,memberId:{},新memberId={}"
,
memberId
,
mergeMemberId
);
int
i
=
tabHaobanExternalClerkRelatedMapper
.
countByMemberId
(
memberId
,
enterpriseId
);
if
(
i
>
0
)
{
tabHaobanExternalClerkRelatedMapper
.
updateMemberIdByMemberId
(
mergeMemberId
,
memberId
,
enterpriseId
);
log
.
info
(
"会员合并 ,更新为企微好友,新memberId:{}"
,
mergeMemberId
);
this
.
memberApiService
.
updateMemberQywxFlag
(
enterpriseId
,
mergeMemberId
,
1
);
}
}
else
if
(
type
==
2
)
{
int
m1
=
this
.
tabHaobanExternalClerkRelatedMapper
.
countByMemberId
(
memberId
,
enterpriseId
)
;
int
m2
=
this
.
tabHaobanExternalClerkRelatedMapper
.
countByMemberId
(
mergeMemberId
,
enterpriseId
)
;
log
.
info
(
"合并换绑,m1={},好友数={}, m2={},好友数={}"
,
memberId
,
m1
,
mergeMemberId
,
m2
);
if
(
m1
==
0
&&
m2
==
0
)
{
log
.
info
(
"都是非企微好友"
);
}
else
if
(
m1
==
0
&&
m2
>
0
)
{
this
.
tabHaobanExternalClerkRelatedMapper
.
updateMemberIdByMemberId
(
memberId
,
mergeMemberId
,
enterpriseId
);
log
.
info
(
"会员换绑 ,更新为企微好友,新memberId:{}"
,
memberId
);
this
.
memberApiService
.
updateMemberQywxFlag
(
enterpriseId
,
memberId
,
1
);
this
.
memberApiService
.
updateMemberQywxFlag
(
enterpriseId
,
mergeMemberId
,
0
);
}
else
if
(
m1
>
0
&&
m2
==
0
)
{
this
.
tabHaobanExternalClerkRelatedMapper
.
updateMemberIdByMemberId
(
mergeMemberId
,
memberId
,
enterpriseId
);
log
.
info
(
"会员换绑 ,更新为企微好友,新memberId:{}"
,
mergeMemberId
);
this
.
memberApiService
.
updateMemberQywxFlag
(
enterpriseId
,
mergeMemberId
,
1
);
this
.
memberApiService
.
updateMemberQywxFlag
(
enterpriseId
,
memberId
,
0
);
}
else
if
(
m1
>
0
&&
m2
>
0
)
{
List
<
String
>
m1IdList
=
this
.
tabHaobanExternalClerkRelatedMapper
.
getIdList
(
memberId
,
enterpriseId
)
;
List
<
String
>
m2IdList
=
this
.
tabHaobanExternalClerkRelatedMapper
.
getIdList
(
mergeMemberId
,
enterpriseId
)
;
this
.
tabHaobanExternalClerkRelatedMapper
.
updateMemberByIdList
(
mergeMemberId
,
m1IdList
);
this
.
tabHaobanExternalClerkRelatedMapper
.
updateMemberByIdList
(
memberId
,
m2IdList
);
this
.
memberApiService
.
updateMemberQywxFlag
(
enterpriseId
,
memberId
,
1
);
this
.
memberApiService
.
updateMemberQywxFlag
(
enterpriseId
,
mergeMemberId
,
1
);
}
}
}
@Override
public
void
delByMemberIdAndEnterpriseId
(
String
memberId
,
String
enterpriseId
,
String
mergeMemberId
)
{
log
.
info
(
"删除会员或者合并会员,memberId:{},enterpriseId:{},mergeMemberId:{}"
,
memberId
,
enterpriseId
,
mergeMemberId
);
if
(
StringUtils
.
isBlank
(
mergeMemberId
))
{
this
.
delByMemberIdAndEnterpriseId
(
memberId
,
enterpriseId
,
mergeMemberId
,
0
);
}
else
{
this
.
delByMemberIdAndEnterpriseId
(
memberId
,
enterpriseId
,
mergeMemberId
,
1
);
}
}
@Override
public
boolean
isFriends
(
String
memberId
,
String
clerkId
,
String
enterpriseId
)
{
StaffClerkRelationDTO
staffClerkRelation
=
staffClerkRelationMapper
.
getOneByClerkId
(
clerkId
,
null
);
if
(
staffClerkRelation
==
null
)
{
return
false
;
}
String
staffId
=
staffClerkRelation
.
getStaffId
();
return
this
.
isQwFriend
(
enterpriseId
,
staffId
,
memberId
).
getResult
()
;
}
@Override
public
com
.
gic
.
api
.
base
.
commons
.
ServiceResponse
<
Boolean
>
isQwFriend
(
String
enterpriseId
,
String
staffId
,
String
memberId
)
{
log
.
info
(
"查询是否好友enterpriseId={},staffId={},memberId={}"
,
enterpriseId
,
staffId
,
memberId
);
TabHaobanExternalClerkRelated
externalClerkRelated
=
tabHaobanExternalClerkRelatedMapper
.
getByMemberIdAndStaffId
(
staffId
,
enterpriseId
,
memberId
);
if
(
externalClerkRelated
==
null
)
{
return
com
.
gic
.
api
.
base
.
commons
.
ServiceResponse
.
success
(
Boolean
.
FALSE
);
}
return
com
.
gic
.
api
.
base
.
commons
.
ServiceResponse
.
success
(
externalClerkRelated
.
getStatusFlag
()
==
1
);
}
/**
* @param enterpriseId
* @param clerkId
* @param unionId
* @return
*/
@Override
public
com
.
gic
.
api
.
base
.
commons
.
ServiceResponse
<
Boolean
>
isQwFriendWithUnionId
(
String
enterpriseId
,
String
clerkId
,
String
unionId
)
{
StaffClerkRelationDTO
staffClerkRelation
=
staffClerkRelationMapper
.
getOneByClerkId
(
clerkId
,
null
);
if
(
staffClerkRelation
==
null
)
{
return
com
.
gic
.
api
.
base
.
commons
.
ServiceResponse
.
success
(
Boolean
.
FALSE
);
}
String
staffId
=
staffClerkRelation
.
getStaffId
();
TabHaobanExternalClerkRelated
externalClerkRelated
=
tabHaobanExternalClerkRelatedMapper
.
getByUnionIdAndStaffId
(
staffId
,
enterpriseId
,
unionId
);
if
(
externalClerkRelated
==
null
)
{
return
com
.
gic
.
api
.
base
.
commons
.
ServiceResponse
.
success
(
Boolean
.
FALSE
);
}
return
com
.
gic
.
api
.
base
.
commons
.
ServiceResponse
.
success
(
externalClerkRelated
.
getStatusFlag
()
==
1
);
}
// @Override
// public com.gic.api.base.commons.ServiceResponse<String> getExternalUseridForWxa(String enterpriseId, String staffId,
// String memberId) {
// TabHaobanExternalClerkRelated externalClerkRelated = tabHaobanExternalClerkRelatedMapper.getByMemberIdAndStaffId(staffId, enterpriseId, memberId);
// if(null != externalClerkRelated) {
// return com.gic.api.base.commons.ServiceResponse.success(externalClerkRelated.getExternalClerkRelatedId());
// }
// return com.gic.api.base.commons.ServiceResponse.failure("9999", "无好友关系") ;
// }
@Override
public
List
<
String
>
listMemberAndStaff
(
List
<
String
>
memberIdList
,
String
staffId
,
String
enterpriseId
)
{
List
<
String
>
list
=
tabHaobanExternalClerkRelatedMapper
.
listMemberAndStaff
(
memberIdList
,
staffId
,
enterpriseId
);
return
list
;
}
@Override
public
Map
<
String
,
List
<
ClerkStaffWxUserDTO
>>
listMemberStaffRel
(
List
<
String
>
memberIdList
,
List
<
String
>
clerkIdList
,
String
enterpriseId
,
String
wxEnterpriseId
)
{
if
(
CollectionUtils
.
isEmpty
(
memberIdList
)
||
CollectionUtils
.
isEmpty
(
clerkIdList
))
{
// 2个列表都为空查不了关系
return
Collections
.
emptyMap
();
}
WxEnterpriseQwDTO
qwDTO
=
this
.
wxEnterpriseService
.
getQwInfo
(
wxEnterpriseId
);
if
(
qwDTO
==
null
)
{
return
Collections
.
emptyMap
();
}
List
<
MemberStaffRelExtDO
>
res
=
staffClerkRelationMapper
.
listMemberStaffRelNew
(
memberIdList
,
clerkIdList
,
enterpriseId
,
wxEnterpriseId
);
if
(
CollectionUtils
.
isEmpty
(
res
))
{
return
Collections
.
emptyMap
();
}
return
res
.
stream
().
collect
(
Collectors
.
toMap
(
// key-memberId
MemberStaffRelExtDO:
:
getMemberId
,
// value-list
e
->
new
ArrayList
<>(
Collections
.
singletonList
(
new
ClerkStaffWxUserDTO
(
e
.
getStaffId
(),
e
.
getStaffClerkId
(),
e
.
getMemberExternalUserId
(),
e
.
getAddFriendTime
()))),
// 重复key的value添加到集合
(
List
<
ClerkStaffWxUserDTO
>
oldList
,
List
<
ClerkStaffWxUserDTO
>
newList
)
->
{
oldList
.
addAll
(
newList
);
return
oldList
;
}));
}
@Override
@Transactional
(
rollbackFor
=
Exception
.
class
)
public
ServiceResponse
updateNewExternalUserid
(
String
wxEnterpriseId
)
{
log
.
info
(
"企业外部联系人id start,wxEnterpriseId:{}"
,
wxEnterpriseId
);
TabHaobanWxEnterprise
tabHaobanWxEnterprise
=
wxEnterriseMapper
.
selectByPrimaryKey
(
wxEnterpriseId
);
ServiceResponse
serviceResponse
=
new
ServiceResponse
();
if
(
tabHaobanWxEnterprise
==
null
)
{
log
.
info
(
"企业外部联系人id为空"
);
serviceResponse
.
setCode
(
HaoBanErrCodeCommon
.
ERR_0
.
getCode
());
serviceResponse
.
setMessage
(
"企业外部联系人id为空"
);
return
serviceResponse
;
}
String
lockKey
=
"updateNewExternalUserid_"
+
wxEnterpriseId
;
if
(
RedisUtil
.
isLocked
(
lockKey
))
{
log
.
info
(
"redis锁,lockKey:{}"
,
lockKey
);
String
corpName
=
tabHaobanWxEnterprise
.
getCorpName
();
serviceResponse
.
setCode
(
HaoBanErrCodeCommon
.
ERR_0
.
getCode
());
serviceResponse
.
setMessage
(
corpName
+
"已经在转换中,请勿重复操作!"
);
return
serviceResponse
;
}
Integer
externalFlag
=
tabHaobanWxEnterprise
.
getExternalFlag
();
if
(
externalFlag
==
1
||
externalFlag
==
2
)
{
log
.
info
(
"已经在转换成功或转换中,请勿重复操作:wxEnterpriseId:{}"
,
wxEnterpriseId
);
String
corpName
=
tabHaobanWxEnterprise
.
getCorpName
();
serviceResponse
.
setCode
(
HaoBanErrCodeCommon
.
ERR_0
.
getCode
());
serviceResponse
.
setMessage
(
corpName
+
"已经在转换成功或转换中,请勿重复操作!"
);
return
serviceResponse
;
}
RedisUtil
.
lock
(
lockKey
,
1L
,
TimeUnit
.
DAYS
,
0L
);
try
{
WxEnterpriseQwDTO
qwDTO
=
this
.
wxEnterpriseService
.
getQwInfo
(
wxEnterpriseId
);
updateNewExUserId
(
tabHaobanWxEnterprise
.
getWxEnterpriseId
(),
qwDTO
.
getThirdCorpid
());
log
.
info
(
"企业外部联系人id end,wxEnterpriseId:{}"
,
wxEnterpriseId
);
RedisUtil
.
unlock
(
lockKey
);
serviceResponse
.
setCode
(
HaoBanErrCodeCommon
.
ERR_1
.
getCode
());
serviceResponse
.
setMessage
(
HaoBanErrCodeCommon
.
ERR_1
.
getMsg
());
return
serviceResponse
;
}
catch
(
Exception
e
)
{
log
.
info
(
"企业外部联系人id异常,wxEnterpriseId:{},{}"
,
wxEnterpriseId
,
e
.
getMessage
(),
e
);
RedisUtil
.
unlock
(
lockKey
);
serviceResponse
.
setCode
(
HaoBanErrCodeCommon
.
ERR_0
.
getCode
());
serviceResponse
.
setMessage
(
"企业外部联系人id转换异常,请联系技术人员查看"
);
return
serviceResponse
;
}
}
@Override
@Deprecated
public
void
updateNewExternalUseridMq
(
String
res
)
{
log
.
info
(
"更新新的外部联系人id mq,start"
);
}
@Override
public
List
<
ExternalClerkRelatedShortInfoDTO
>
listByMemberIdAndEnterpriseId
(
String
memberId
,
String
enterpriseId
)
{
List
<
TabHaobanExternalClerkRelated
>
list
=
tabHaobanExternalClerkRelatedMapper
.
listByMemberId
(
memberId
,
enterpriseId
);
return
EntityUtil
.
changeEntityListNew
(
ExternalClerkRelatedShortInfoDTO
.
class
,
list
);
}
@Override
public
ExternalClerkRelatedDTO
getByWxEnterpriseIdAndUnionId
(
String
wxEnterpriseId
,
String
staffId
,
String
unionid
)
{
TabHaobanExternalClerkRelated
related
=
tabHaobanExternalClerkRelatedMapper
.
getByWxEnterpriseIdAndUnionId
(
wxEnterpriseId
,
staffId
,
unionid
);
return
EntityUtil
.
changeEntityNew
(
ExternalClerkRelatedDTO
.
class
,
related
);
}
@Override
public
FriendMemberStatusDTO
getFriendMemberStatus
(
String
memberId
,
String
enterpriseId
)
{
TabHaobanExternalClerkRelated
tabHaobanExternalClerkRelated
=
tabHaobanExternalClerkRelatedMapper
.
getByEnterpriseIdAndMemberId
(
enterpriseId
,
memberId
,
null
);
if
(
tabHaobanExternalClerkRelated
!=
null
)
{
TabHaobanExternalClerkRelated
hasFriend
=
tabHaobanExternalClerkRelatedMapper
.
getByEnterpriseIdAndMemberId
(
enterpriseId
,
memberId
,
1
);
if
(
hasFriend
!=
null
)
{
FriendMemberStatusDTO
friendMemberStatusDTO
=
new
FriendMemberStatusDTO
();
friendMemberStatusDTO
.
setStatusFlag
(
1
);
friendMemberStatusDTO
.
setLastCreateTime
(
hasFriend
.
getCreateTime
());
return
friendMemberStatusDTO
;
}
else
{
TabHaobanExternalClerkRelated
hasCancelFriend
=
tabHaobanExternalClerkRelatedMapper
.
getByEnterpriseIdAndMemberId
(
enterpriseId
,
memberId
,
2
);
if
(
hasCancelFriend
!=
null
)
{
FriendMemberStatusDTO
friendMemberStatusDTO
=
new
FriendMemberStatusDTO
();
friendMemberStatusDTO
.
setStatusFlag
(
2
);
friendMemberStatusDTO
.
setLastCancelCreateTime
(
hasCancelFriend
.
getCreateTime
());
return
friendMemberStatusDTO
;
}
}
}
FriendMemberStatusDTO
friendMemberStatusDTO
=
new
FriendMemberStatusDTO
();
friendMemberStatusDTO
.
setStatusFlag
(
0
);
return
friendMemberStatusDTO
;
}
/**
* 更新状态
*
* @param corpid
* @param wxEnterpriseId
*/
private
void
updateAgreeExternalUseridFlag
(
String
corpid
,
String
wxEnterpriseId
)
{
//serviceCorpid 默认为:达摩网络
boolean
flag
=
qywxUserApiService
.
finishExternalUseridMigration
(
corpid
,
config
.
getCorpid
());
log
.
info
(
"更新新的外部联系人id最后一页,设置迁移完成:flag:{}"
,
flag
);
if
(
flag
)
{
//成功
wxEnterpriseApiService
.
agreeExternalUseridFlag
(
wxEnterpriseId
,
1
);
}
else
{
//失败
wxEnterriseMapper
.
updateExternalFlagById
(
3
,
wxEnterpriseId
);
//回退老的
//externalUseridLogMapper.updateOldExternalUserId(wxEnterpriseId);
//更新状态为失败
externalUseridLogMapper
.
updateStatusFlagByWxEnterpriseId
(
0
,
wxEnterpriseId
);
}
}
@Override
public
boolean
isExternalFriendByMemberId
(
String
memberId
,
String
enterpriseId
)
{
int
count
=
tabHaobanExternalClerkRelatedMapper
.
countByMemberId
(
memberId
,
enterpriseId
);
return
count
>
0
;
}
/**
* 更新新的外部联系人id
*
* @param wxEnterpriseId wx企业标识
* @param corpid corpid
* @author mozhu
* @date 2021-12-13 15:40:30
*/
private
void
updateNewExUserId
(
String
wxEnterpriseId
,
String
corpid
)
{
wxEnterriseMapper
.
updateExternalFlagById
(
2
,
wxEnterpriseId
);
messageAlert
(
wxEnterpriseId
,
"更新新的外部联系人id"
);
// 限流器
RRateLimiter
rateLimiter
=
RedisUtil
.
getRedisClient
().
getRateLimiter
(
"haoban:manage3:updateNewExUserId:limit"
);
// 每1秒产生5个令牌
rateLimiter
.
trySetRate
(
RateType
.
OVERALL
,
5
,
1
,
RateIntervalUnit
.
SECONDS
);
int
pageNum
=
1
;
// 开启消息发送
while
(
true
)
{
// 获取令牌
rateLimiter
.
acquire
();
//企微转换最多支持1000个
PageInfo
<
TabHaobanExternalClerkRelated
>
tabHaobanWxEnterprisePageInfo
=
pageExternalByWxEnterpriseId
(
wxEnterpriseId
,
pageNum
,
1000
);
List
<
TabHaobanExternalClerkRelated
>
enterprisePageInfoList
=
tabHaobanWxEnterprisePageInfo
.
getList
();
if
(
CollectionUtils
.
isEmpty
(
enterprisePageInfoList
))
{
if
(
pageNum
==
1
)
{
log
.
info
(
"如果没有好友,直接转换完成..corpid:{}"
,
corpid
);
updateAgreeExternalUseridFlag
(
corpid
,
wxEnterpriseId
);
}
break
;
}
pageNum
++;
List
<
String
>
externalUserIdList
=
enterprisePageInfoList
.
stream
().
map
(
TabHaobanExternalClerkRelated:
:
getExternalUserId
).
collect
(
Collectors
.
toList
());
JSONObject
jsonObject
=
new
JSONObject
();
jsonObject
.
put
(
"corpid"
,
corpid
);
jsonObject
.
put
(
"wxEnterpriseId"
,
wxEnterpriseId
);
jsonObject
.
put
(
"externalUserIdList"
,
externalUserIdList
);
jsonObject
.
put
(
"externalUserId"
,
externalUserIdList
.
get
(
0
));
//是否是最后一批
if
(
tabHaobanWxEnterprisePageInfo
.
isIsLastPage
())
{
jsonObject
.
put
(
"isLastPage"
,
true
);
}
else
{
jsonObject
.
put
(
"isLastPage"
,
false
);
}
GicMQClient
clientInstance
=
GICMQClientUtil
.
getClientInstance
();
try
{
clientInstance
.
sendMessage
(
"updateNewExUserIdMq"
,
JSONObject
.
toJSONString
(
jsonObject
));
}
catch
(
Exception
e
)
{
log
.
info
(
"企微转换id发送消息队列异常:{}"
,
e
.
getMessage
(),
e
);
}
}
}
/**
* 根据企业id分页
*
* @param wxEnterpriseId 企业标识
* @param pageNum 页面num
* @param pageSize 页面大小
* @return {@link Page<ExternalClerkRelatedDTO> }
* @author mozhu
* @date 2021-12-13 15:10:19
*/
private
PageInfo
<
TabHaobanExternalClerkRelated
>
pageExternalByWxEnterpriseId
(
String
wxEnterpriseId
,
Integer
pageNum
,
Integer
pageSize
)
{
PageHelper
.
startPage
(
pageNum
,
pageSize
);
List
<
TabHaobanExternalClerkRelated
>
tabHaobanWxEnterpriseList
=
tabHaobanExternalClerkRelatedMapper
.
pageExternalByEnterpriseId
(
wxEnterpriseId
);
return
new
PageInfo
<>(
tabHaobanWxEnterpriseList
);
}
/**
* 消息提醒
* 告警
*
* @param wxEnterpriseId wx企业标识
* @param titleSub 子标题
*/
private
void
messageAlert
(
String
wxEnterpriseId
,
String
titleSub
)
{
ProviderLocalTag
providerLocalTag
=
ProviderLocalTag
.
tag
.
get
();
String
traceId
=
providerLocalTag
.
traceId
;
AlertMessageDTO
messageDTO
=
new
AlertMessageDTO
();
messageDTO
.
setTraceId
(
traceId
);
messageDTO
.
setWxEnterpriseId
(
wxEnterpriseId
);
messageDTO
.
setAlertTitle
(
titleSub
);
messageDTO
.
setAlertType
(
AlertTypeEnum
.
GET_NEW_EXTERNAL_USERID
.
getType
());
checkQywxSettingApiService
.
alertCallback
(
JSONObject
.
toJSONString
(
messageDTO
));
}
@Override
public
int
countFriendCountByClerkId
(
String
wxEnterpriseId
,
String
enterpriseId
,
String
staffId
,
String
clerkId
)
{
return
tabHaobanExternalClerkRelatedMapper
.
countByClerkId
(
wxEnterpriseId
,
enterpriseId
,
staffId
,
clerkId
);
}
@Override
public
void
initWxEnterpriseFriend
(
String
wxEnterpriseId
)
{
log
.
info
(
"刷新整个企业的好友开始={}"
,
wxEnterpriseId
);
String
taskName
=
"刷新整个企微好友"
;
String
taskId
=
dealSyncOperationApiService
.
createWxFriendTaskSingle
(
wxEnterpriseId
,
taskName
,
"-1"
,
"管理员"
,
SyncTaskTypeEnum
.
FRIEND_WX_ENTEPRISE
.
getType
());
if
(
StringUtils
.
isNotBlank
(
taskId
))
{
List
<
String
>
staffList
=
staffClerkRelationMapper
.
listByWxEnterpriseId
(
wxEnterpriseId
);
if
(
CollectionUtils
.
isEmpty
(
staffList
))
{
log
.
info
(
"没有要刷新的:{},{}"
,
wxEnterpriseId
,
staffList
);
return
;
}
staffList
=
staffList
.
stream
().
distinct
().
collect
(
Collectors
.
toList
());
log
.
info
(
"staffList={}"
,
JSON
.
toJSONString
(
staffList
));
for
(
String
staffId
:
staffList
)
{
this
.
dealSyncOperationApiService
.
dealWxFriendClerkSingle
(
taskId
,
staffId
,
staffId
,
wxEnterpriseId
);
}
}
}
@Override
public
int
getCountExternalClerk
(
String
wxEnterpriseId
,
String
staffId
,
List
<
Integer
>
statusFlags
)
{
return
tabHaobanExternalClerkRelatedMapper
.
getCountExternalClerk
(
wxEnterpriseId
,
staffId
,
statusFlags
);
}
@Override
public
int
updateExternalStatus
(
String
wxEnterpriseId
,
String
externalUserid
,
int
status
)
{
return
this
.
tabHaobanExternalClerkRelatedMapper
.
updateExternalStatus
(
wxEnterpriseId
,
externalUserid
,
status
);
}
}
haoban-manage3-service/src/main/resources/mapper/TabHaobanExternalClerkRelatedMapper.xml
View file @
3b9926c6
...
...
@@ -438,6 +438,18 @@
and status_flag in(1,3,4)
order by update_time desc limit 1
</select>
<select
id=
"getExternalClerkByWxUserIdAncExternalUserIdSelf"
resultMap=
"BaseResultMap"
>
select
<include
refid=
"Base_Column_List"
/>
from tab_haoban_external_clerk_related
where staff_id = #{staffId,jdbcType=VARCHAR}
and wx_enterprise_id = #{wxEnterpriseId}
and enterprise_id = #{enterpriseId}
and self_external_userid = #{externalUserId}
and status_flag in(1,3,4)
order by update_time desc limit 1
</select>
<select
id=
"listByMemberIdAndWxEnterpriseId"
resultMap=
"BaseResultMap"
>
select
...
...
haoban-manage3-wx/src/main/java/com/gic/haoban/manage/web/controller/WxEnterpriseInfoController.java
View file @
3b9926c6
...
...
@@ -657,7 +657,7 @@ public class WxEnterpriseInfoController extends WebBaseController {
logger
.
info
(
"请先添加好友,企业微信未查询到该好友,externalUserid:{}"
,
externalUserid
);
return
resultResponse
(
HaoBanErrCode
.
ERR_11126
);
}
if
(!
qwInfo
.
isSelf
())
{
/*
if(!qwInfo.isSelf()) {
MemberUnionidRelatedDTO memberUnionidRelatedDTO = memberUnionidRelatedApiService.getBySelfExternalUserId(wxEnterpriseId, externalUserid);
if (null == memberUnionidRelatedDTO) {
logger.info("请刷新好友,wxEnterpriseId:{},传入的externalUserid:{},wxUserId:{}", wxEnterpriseId, externalUserid, wxUserId);
...
...
@@ -665,7 +665,7 @@ public class WxEnterpriseInfoController extends WebBaseController {
}
externalUserid = memberUnionidRelatedDTO.getExternalUserid() ;
logger.info("会员数据:{}", JSON.toJSONString(memberUnionidRelatedDTO));
}
}
*/
ExternalClerkRelatedDTO
clerkRelatedDTO
=
externalClerkRelatedApiService
.
getExternalClerkByWxUserIdAncExternalUserId
(
wxEnterpriseId
,
staffId
,
gicEnterpriseId
,
externalUserid
);
if
(
clerkRelatedDTO
==
null
)
{
logger
.
info
(
"该企业没有对应需要发送好友关系的信息,wxEnterpriseId:{},externalUserid:{},wxUserId:{}"
,
wxEnterpriseId
,
externalUserid
,
wxUserId
);
...
...
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