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
QianQiXiang
haoban-manage3.0
Commits
f665f24c
Commit
f665f24c
authored
Mar 22, 2021
by
fudahua
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
好友
parent
ce5a9bfc
Hide whitespace changes
Inline
Side-by-side
Showing
20 changed files
with
865 additions
and
20 deletions
+865
-20
MemberUnionidRelatedApiService.java
...an/manage/api/service/MemberUnionidRelatedApiService.java
+9
-0
MemberUnionidRelatedMapper.java
...manage/service/dao/mapper/MemberUnionidRelatedMapper.java
+3
-1
PreDealLogMapper.java
...ic/haoban/manage/service/dao/mapper/PreDealLogMapper.java
+44
-2
TabHaobanExternalClerkRelatedMapper.java
...rvice/dao/mapper/TabHaobanExternalClerkRelatedMapper.java
+2
-0
TabHaobanPreDealLog.java
...gic/haoban/manage/service/entity/TabHaobanPreDealLog.java
+10
-0
ExternalUserIdWxUserIdPojo.java
...aoban/manage/service/pojo/ExternalUserIdWxUserIdPojo.java
+34
-0
ExternalClerkRelatedService.java
...n/manage/service/service/ExternalClerkRelatedService.java
+9
-0
MemberUnionRelatedService.java
...ban/manage/service/service/MemberUnionRelatedService.java
+10
-1
PreDealService.java
...com/gic/haoban/manage/service/service/PreDealService.java
+48
-1
ExternalClerkRelatedServiceImpl.java
...service/service/impl/ExternalClerkRelatedServiceImpl.java
+5
-0
MemberUnionRelatedServiceImpl.java
...e/service/service/impl/MemberUnionRelatedServiceImpl.java
+7
-2
PreDealServiceImpl.java
...aoban/manage/service/service/impl/PreDealServiceImpl.java
+29
-2
MemberUnionidRelatedApiServiceImpl.java
.../service/out/impl/MemberUnionidRelatedApiServiceImpl.java
+34
-10
FriendClerkSyncNewOperation.java
...nage/service/task/friend/FriendClerkSyncNewOperation.java
+176
-0
FriendSyncNewOperation.java
...an/manage/service/task/friend/FriendSyncNewOperation.java
+209
-0
SelfFriendSyncNewOperation.java
...anage/service/task/friend/SelfFriendSyncNewOperation.java
+160
-0
MemberUnionidRelatedMapper.xml
.../src/main/resources/mapper/MemberUnionidRelatedMapper.xml
+13
-0
PreDealLogMapper.xml
...e3-service/src/main/resources/mapper/PreDealLogMapper.xml
+43
-0
TabHaobanExternalClerkRelatedMapper.xml
.../resources/mapper/TabHaobanExternalClerkRelatedMapper.xml
+16
-0
ClerkController.java
...com/gic/haoban/manage/web/controller/ClerkController.java
+4
-1
No files found.
haoban-manage3-api/src/main/java/com/gic/haoban/manage/api/service/MemberUnionidRelatedApiService.java
View file @
f665f24c
...
...
@@ -58,4 +58,13 @@ public interface MemberUnionidRelatedApiService {
ExternalUserDTO
getExternalUseridInfo
(
String
wxEnterpriseId
,
String
wxUserId
,
String
externalUserId
);
/**
* 清理外部联系人
*
* @param wxEnterpriseId
* @param wxUserId
* @param externalUserIds
*/
void
cleanNoExsitFriendNew
(
String
wxEnterpriseId
,
String
wxUserId
,
List
<
String
>
externalUserIds
);
}
haoban-manage3-service/src/main/java/com/gic/haoban/manage/service/dao/mapper/MemberUnionidRelatedMapper.java
View file @
f665f24c
...
...
@@ -24,12 +24,14 @@ public interface MemberUnionidRelatedMapper {
int
cleanByCid
(
@Param
(
"cid"
)
String
cid
);
MemberUnionidRelated
getByUnionId
(
@Param
(
"wxUserId"
)
String
wxUserId
,
@Param
(
"unionid"
)
String
unionid
);
MemberUnionidRelated
getByUnionId
(
@Param
(
"wxEnterpriseId"
)
String
wxEnterpriseId
,
@Param
(
"wxUserId"
)
String
wxUserId
,
@Param
(
"unionid"
)
String
unionid
);
MemberUnionidRelated
getByMemberId
(
@Param
(
"wxUserId"
)
String
wxUserId
,
@Param
(
"memberId"
)
String
memberId
);
void
deleteByUnionidAndUserId
(
@Param
(
"externalUserid"
)
String
externalUserid
,
@Param
(
"wxUserId"
)
String
wxUserId
);
void
delMemberUnionidRelatedBatch
(
String
wxEnterpriseId
,
@Param
(
"externalUserids"
)
List
<
String
>
externalUserid
,
@Param
(
"wxUserId"
)
String
wxUserId
);
List
<
MemberUnionidRelated
>
getByWxUserIdAndWxEnterpriseId
(
@Param
(
"wxUserId"
)
String
wxUserId
,
@Param
(
"wxEnterpriseId"
)
String
wxEnterpriseId
);
List
<
MemberUnionidRelated
>
listByEnterpriseIdAndDate
(
@Param
(
"enterpriseId"
)
String
enterpriseId
,
@Param
(
"date"
)
Date
date
);
...
...
haoban-manage3-service/src/main/java/com/gic/haoban/manage/service/dao/mapper/PreDealLogMapper.java
View file @
f665f24c
...
...
@@ -181,7 +181,20 @@ public interface PreDealLogMapper {
* @return
*/
int
updateFriendStatusByDataId
(
@Param
(
"taskId"
)
String
taskId
,
@Param
(
"dataId"
)
String
dataId
,
@Param
(
"status"
)
int
status
,
@Param
(
"reason"
)
String
reason
,
@Param
(
"dataContent"
)
String
dataContent
);
/**
/**
* 更新状态
*
* @param taskId
* @param dataId
* @param status
* @param reason
* @param dataContent
* @return
*/
int
updateFriendStatusAndRelationKeyByDataId
(
@Param
(
"taskId"
)
String
taskId
,
@Param
(
"dataId"
)
String
dataId
,
@Param
(
"status"
)
int
status
,
@Param
(
"reason"
)
String
reason
,
@Param
(
"dataContent"
)
String
dataContent
,
@Param
(
"relationKey"
)
String
relationKey
);
/**
*
* @param taskId
* @param pDataId
...
...
@@ -196,6 +209,34 @@ public interface PreDealLogMapper {
*/
List
<
TabHaobanPreDealLog
>
listByPDataIdAndTaskId
(
@Param
(
"taskId"
)
String
taskId
,
@Param
(
"pDataId"
)
String
wxUserId
);
/**
* 根据关联键获取字段
*
* @param taskId
* @param relationKey
* @return
*/
TabHaobanPreDealLog
getByRelationKey
(
@Param
(
"taskId"
)
String
taskId
,
@Param
(
"dataType"
)
int
dataType
,
@Param
(
"relationKey"
)
String
relationKey
);
/**
* 校验任务
*
* @param taskId
* @param dataType
* @return
*/
public
int
checkTaskFriend
(
@Param
(
"taskId"
)
String
taskId
,
@Param
(
"pDataId"
)
String
pDataId
,
@Param
(
"dataType"
)
int
dataType
);
/**
* 获取dataid 根据父id
*
* @param taskId
* @param pDataId
* @return
*/
List
<
String
>
listReDataIdByPDataId
(
@Param
(
"taskId"
)
String
taskId
,
@Param
(
"dataId"
)
String
pDataId
,
@Param
(
"dataType"
)
int
dataType
);
}
\ No newline at end of file
haoban-manage3-service/src/main/java/com/gic/haoban/manage/service/dao/mapper/TabHaobanExternalClerkRelatedMapper.java
View file @
f665f24c
...
...
@@ -25,6 +25,8 @@ public interface TabHaobanExternalClerkRelatedMapper {
void
delByUserIdAndExternalUserId
(
TabHaobanExternalClerkRelated
record
);
void
delByUserIdAndExternalUserIdBatch
(
@Param
(
"wxUserId"
)
String
wxUserId
,
@Param
(
"wxEnterpriseId"
)
String
wxEnterpriseId
,
@Param
(
"externalUserIds"
)
List
<
String
>
externalUserIds
);
void
delByClerkIdAndStaffId
(
@Param
(
"clerkId"
)
String
clerkId
,
@Param
(
"staffId"
)
String
staffId
);
void
cleanStaffRelated
(
@Param
(
"wxEnterpriseId"
)
String
wxEnterpriseId
,
@Param
(
"staffIds"
)
List
<
String
>
staffIds
);
...
...
haoban-manage3-service/src/main/java/com/gic/haoban/manage/service/entity/TabHaobanPreDealLog.java
View file @
f665f24c
...
...
@@ -61,8 +61,18 @@ public class TabHaobanPreDealLog implements Serializable {
private
String
dataContent
;
private
String
relationKey
;
private
String
reason
;
public
String
getRelationKey
()
{
return
relationKey
;
}
public
void
setRelationKey
(
String
relationKey
)
{
this
.
relationKey
=
relationKey
;
}
public
String
getReason
()
{
return
reason
;
}
...
...
haoban-manage3-service/src/main/java/com/gic/haoban/manage/service/pojo/ExternalUserIdWxUserIdPojo.java
0 → 100644
View file @
f665f24c
package
com
.
gic
.
haoban
.
manage
.
service
.
pojo
;
import
java.io.Serializable
;
/**
* Created 2021/3/18.
*
* @author hua
*/
public
class
ExternalUserIdWxUserIdPojo
implements
Serializable
{
private
String
externalUserId
;
private
String
wxUserId
;
public
ExternalUserIdWxUserIdPojo
(
String
externalUserId
,
String
wxUserId
)
{
this
.
externalUserId
=
externalUserId
;
this
.
wxUserId
=
wxUserId
;
}
public
String
getExternalUserId
()
{
return
externalUserId
;
}
public
void
setExternalUserId
(
String
externalUserId
)
{
this
.
externalUserId
=
externalUserId
;
}
public
String
getWxUserId
()
{
return
wxUserId
;
}
public
void
setWxUserId
(
String
wxUserId
)
{
this
.
wxUserId
=
wxUserId
;
}
}
haoban-manage3-service/src/main/java/com/gic/haoban/manage/service/service/ExternalClerkRelatedService.java
View file @
f665f24c
...
...
@@ -12,6 +12,15 @@ public interface ExternalClerkRelatedService {
void
delByUserIdAndExternalUserId
(
MemberUnionidRelatedDTO
dto
);
/**
* 删除会员与导购的关联关系
*
* @param wxEnterpriseId
* @param wxUserId
* @param externalUserids
*/
void
delByUserIdAndExternalUserIdBatch
(
String
wxEnterpriseId
,
String
wxUserId
,
List
<
String
>
externalUserids
);
void
delByClerkIdAndStaffId
(
String
clerkId
,
String
staffId
);
void
cleanStaffRelated
(
String
wxEnterpriseId
,
List
<
String
>
staffIds
);
...
...
haoban-manage3-service/src/main/java/com/gic/haoban/manage/service/service/MemberUnionRelatedService.java
View file @
f665f24c
...
...
@@ -7,7 +7,7 @@ import com.gic.haoban.manage.service.entity.MemberUnionidRelated;
public
interface
MemberUnionRelatedService
{
MemberUnionidRelatedDTO
getByUnionId
(
String
wxUserId
,
String
unionid
);
MemberUnionidRelatedDTO
getByUnionId
(
String
wx
EnterpriseId
,
String
wx
UserId
,
String
unionid
);
MemberUnionidRelatedDTO
getByMemberId
(
String
wxUserId
,
String
memberId
);
...
...
@@ -15,6 +15,15 @@ public interface MemberUnionRelatedService {
void
delMemberUnionidRelated
(
MemberUnionidRelatedDTO
dto
);
/**
* 删除外部联系人关系
*
* @param wxEnterpriseId
* @param wxUserId
* @param externalUserids
*/
void
delMemberUnionidRelatedBatch
(
String
wxEnterpriseId
,
String
wxUserId
,
List
<
String
>
externalUserids
);
List
<
MemberUnionidRelatedDTO
>
getByWxUserIdAndWxEnterpriseId
(
String
wxUserId
,
String
wxEnterpriseId
);
MemberUnionidRelatedDTO
getByParams
(
String
wxUserId
,
String
enterpriseId
,
String
name
,
String
createTime
);
...
...
haoban-manage3-service/src/main/java/com/gic/haoban/manage/service/service/PreDealService.java
View file @
f665f24c
...
...
@@ -168,7 +168,19 @@ public interface PreDealService {
* @param dataContent
*/
public
boolean
updateFriendStatusByDataId
(
String
taskId
,
String
dataId
,
int
status
,
String
reason
,
String
dataContent
);
/**
/**
* 更新好友成功状态
*
* @param taskId
* @param dataId
* @param status
* @param reason
* @param dataContent
*/
public
boolean
updateFriendStatusByDataId
(
String
taskId
,
String
dataId
,
int
status
,
String
reason
,
String
dataContent
,
String
relationKey
);
/**
* 根据父任务判断子任务是否全部完成
* @param taskId
* @param pDataId
...
...
@@ -182,5 +194,40 @@ public interface PreDealService {
* @return
*/
public
List
<
TabHaobanPreDealLog
>
listByPDataIdAndTaskId
(
String
taskId
,
String
wxUserId
);
/**
* 根据唯一key 获取用户
*
* @param taskId
* @param dataType
* @param relationKey
* @return
*/
public
TabHaobanPreDealLog
getByRelationKey
(
String
taskId
,
Integer
dataType
,
String
relationKey
);
/**
* 获取任务是否有在同步中 好友
*
* @param dataType
* @return
*/
public
boolean
checkFriendTask
(
String
taskId
,
int
dataType
);
/**
* 获取任务是否有在同步中 好友
*
* @param dataType
* @return
*/
public
boolean
checkFriendTaskByPDataId
(
String
taskId
,
String
pDataId
,
int
dataType
);
/**
* 根据父数据id 所有dataid
*
* @param pDataId
* @return
*/
public
List
<
String
>
listReDataIdByPDataId
(
String
taskId
,
String
pDataId
,
Integer
dataType
);
}
haoban-manage3-service/src/main/java/com/gic/haoban/manage/service/service/impl/ExternalClerkRelatedServiceImpl.java
View file @
f665f24c
...
...
@@ -44,6 +44,11 @@ public class ExternalClerkRelatedServiceImpl implements ExternalClerkRelatedServ
}
@Override
public
void
delByUserIdAndExternalUserIdBatch
(
String
wxEnterpriseId
,
String
wxUserId
,
List
<
String
>
externalUserids
)
{
}
@Override
public
void
delByClerkIdAndStaffId
(
String
clerkId
,
String
staffId
)
{
mapper
.
delByClerkIdAndStaffId
(
clerkId
,
staffId
);
}
...
...
haoban-manage3-service/src/main/java/com/gic/haoban/manage/service/service/impl/MemberUnionRelatedServiceImpl.java
View file @
f665f24c
...
...
@@ -22,8 +22,8 @@ public class MemberUnionRelatedServiceImpl implements MemberUnionRelatedService
private
MemberUnionidRelatedMapper
mapper
;
@Override
public
MemberUnionidRelatedDTO
getByUnionId
(
String
wxUserId
,
String
unionid
)
{
return
EntityUtil
.
changeEntityByJSON
(
MemberUnionidRelatedDTO
.
class
,
mapper
.
getByUnionId
(
wxUserId
,
unionid
));
public
MemberUnionidRelatedDTO
getByUnionId
(
String
wx
EnterpriseId
,
String
wx
UserId
,
String
unionid
)
{
return
EntityUtil
.
changeEntityByJSON
(
MemberUnionidRelatedDTO
.
class
,
mapper
.
getByUnionId
(
wxEnterpriseId
,
wxUserId
,
unionid
));
}
@Override
public
MemberUnionidRelatedDTO
getByMemberId
(
String
wxUserId
,
String
memberId
)
{
...
...
@@ -45,6 +45,11 @@ public class MemberUnionRelatedServiceImpl implements MemberUnionRelatedService
}
@Override
public
void
delMemberUnionidRelatedBatch
(
String
wxEnterpriseId
,
String
wxUserId
,
List
<
String
>
externalUserids
)
{
mapper
.
delMemberUnionidRelatedBatch
(
wxEnterpriseId
,
externalUserids
,
wxUserId
);
}
@Override
public
List
<
MemberUnionidRelatedDTO
>
getByWxUserIdAndWxEnterpriseId
(
String
wxUserId
,
String
wxEnterpriseId
)
{
return
EntityUtil
.
changeEntityListByJSON
(
MemberUnionidRelatedDTO
.
class
,
mapper
.
getByWxUserIdAndWxEnterpriseId
(
wxUserId
,
wxEnterpriseId
));
}
...
...
haoban-manage3-service/src/main/java/com/gic/haoban/manage/service/service/impl/PreDealServiceImpl.java
View file @
f665f24c
...
...
@@ -173,8 +173,13 @@ public class PreDealServiceImpl implements PreDealService {
}
@Override
public
boolean
checkStaffTaskByTaskIdAndPDataId
(
String
taskId
,
String
pDataId
)
{
@Override
public
boolean
updateFriendStatusByDataId
(
String
taskId
,
String
dataId
,
int
status
,
String
reason
,
String
dataContent
,
String
relationKey
)
{
return
false
;
}
@Override
public
boolean
checkStaffTaskByTaskIdAndPDataId
(
String
taskId
,
String
pDataId
)
{
return
preDealLogMapper
.
countFailStaffTaskByTaskIdAndPDataId
(
taskId
,
pDataId
)
==
0
;
}
...
...
@@ -182,4 +187,26 @@ public class PreDealServiceImpl implements PreDealService {
public
List
<
TabHaobanPreDealLog
>
listByPDataIdAndTaskId
(
String
taskId
,
String
wxUserId
)
{
return
preDealLogMapper
.
listByPDataIdAndTaskId
(
taskId
,
wxUserId
);
}
@Override
public
TabHaobanPreDealLog
getByRelationKey
(
String
taskId
,
Integer
dataType
,
String
relationKey
)
{
return
preDealLogMapper
.
getByRelationKey
(
taskId
,
dataType
,
relationKey
);
}
@Override
public
boolean
checkFriendTask
(
String
taskId
,
int
dataType
)
{
int
i
=
preDealLogMapper
.
checkTaskFriend
(
taskId
,
null
,
dataType
);
return
i
==
0
;
}
@Override
public
boolean
checkFriendTaskByPDataId
(
String
taskId
,
String
pDataId
,
int
dataType
)
{
int
i
=
preDealLogMapper
.
checkTaskFriend
(
taskId
,
pDataId
,
dataType
);
return
i
==
0
;
}
@Override
public
List
<
String
>
listReDataIdByPDataId
(
String
taskId
,
String
pDataId
,
Integer
dataType
)
{
return
preDealLogMapper
.
listReDataIdByPDataId
(
taskId
,
pDataId
,
dataType
);
}
}
haoban-manage3-service/src/main/java/com/gic/haoban/manage/service/service/out/impl/MemberUnionidRelatedApiServiceImpl.java
View file @
f665f24c
...
...
@@ -16,13 +16,11 @@ import com.gic.wechat.api.service.qywx.QywxSuiteApiService;
import
com.gic.wechat.api.service.qywx.QywxUserApiService
;
import
com.github.pagehelper.PageHelper
;
import
java.util.ArrayList
;
import
java.util.Arrays
;
import
java.util.Date
;
import
java.util.List
;
import
java.util.Map
;
import
java.util.*
;
import
java.util.stream.Collectors
;
import
com.google.common.collect.Sets
;
import
org.apache.commons.collections.CollectionUtils
;
import
org.apache.commons.lang3.StringUtils
;
import
org.apache.logging.log4j.LogManager
;
import
org.apache.logging.log4j.Logger
;
...
...
@@ -235,7 +233,7 @@ public class MemberUnionidRelatedApiServiceImpl implements MemberUnionidRelatedA
return
null
;
}
log
.
info
(
"【查询会员】wxUserId={},unionid={}"
,
staff
.
getWxUserId
(),
unionid
);
return
memberUnionRelatedService
.
getByUnionId
(
staff
.
getWx
UserId
(),
unionid
);
return
memberUnionRelatedService
.
getByUnionId
(
staff
.
getWx
EnterpriseId
(),
staff
.
getWxUserId
(),
unionid
);
}
@Override
public
String
addMemberUnionidRelated
(
MemberUnionidRelatedDTO
dto
)
{
...
...
@@ -926,7 +924,7 @@ public class MemberUnionidRelatedApiServiceImpl implements MemberUnionidRelatedA
+
""
,
wxUserId
,
wxEnterpriseId
,
name
,
createTime
,
unionId
,
externalUserId
,
memberId
,
storeId
,
enterpriseId
,
staffId
,
clerkId
);
return
"参数不对"
;
}
MemberUnionidRelatedDTO
exsitDTO
=
memberUnionRelatedService
.
getBy
Params
(
wxUserId
,
wxEnterpriseId
,
name
,
createTime
);
MemberUnionidRelatedDTO
exsitDTO
=
memberUnionRelatedService
.
getBy
UnionId
(
wxEnterpriseId
,
wxUserId
,
unionId
);
String
uuid
=
""
;
if
(
exsitDTO
==
null
){
exsitDTO
=
new
MemberUnionidRelatedDTO
();
...
...
@@ -947,9 +945,9 @@ public class MemberUnionidRelatedApiServiceImpl implements MemberUnionidRelatedA
exsitDTO
.
setUnionid
(
unionId
);
memberUnionRelatedService
.
update
(
exsitDTO
);
}
TabHaobanExternalClerkRelated
external
=
externalClerkRelatedService
.
getByParams
(
wxUserId
,
wxEnterpriseId
,
name
,
createTime
);
if
(
external
==
null
)
{
List
<
TabHaobanExternalClerkRelated
>
clerkRelateds
=
externalClerkRelatedService
.
listByExTernalUseridAndWxUserId
(
externalUserId
,
wxUserId
);
if
(
CollectionUtils
.
isEmpty
(
clerkRelateds
))
{
TabHaobanExternalClerkRelated
related
=
new
TabHaobanExternalClerkRelated
();
related
.
setAddCreateTime
(
createTime
);
related
.
setClerkId
(
clerkId
);
...
...
@@ -966,6 +964,7 @@ public class MemberUnionidRelatedApiServiceImpl implements MemberUnionidRelatedA
externalClerkRelatedService
.
insert
(
related
);
}
else
{
TabHaobanExternalClerkRelated
external
=
clerkRelateds
.
get
(
0
);
external
.
setMemberId
(
memberId
);
external
.
setMemberUnionidRelatedId
(
uuid
);
external
.
setExternalUserId
(
externalUserId
);
...
...
@@ -977,4 +976,29 @@ public class MemberUnionidRelatedApiServiceImpl implements MemberUnionidRelatedA
}
return
""
;
}
@Override
public
void
cleanNoExsitFriendNew
(
String
wxEnterpriseId
,
String
wxUserId
,
List
<
String
>
externalUserIds
)
{
log
.
info
(
"【清除不存在的好友】wxEnterpriseId={},wxUserId={}"
,
wxEnterpriseId
,
wxUserId
);
//查询所有的外部联系人
List
<
MemberUnionidRelatedDTO
>
list
=
memberUnionRelatedService
.
getByWxUserIdAndWxEnterpriseId
(
wxUserId
,
wxEnterpriseId
);
if
(
CollectionUtils
.
isEmpty
(
list
))
{
log
.
info
(
"改导购下没有外部联系人,无需清理外部联系人:{},{}"
,
wxUserId
,
wxEnterpriseId
);
return
;
}
Set
<
String
>
externalUserIdList
=
list
.
stream
().
map
(
external
->
external
.
getExternalUserid
())
.
collect
(
Collectors
.
toSet
());
Sets
.
SetView
<
String
>
delExternalUserIds
=
Sets
.
difference
(
new
HashSet
<>(
externalUserIds
),
externalUserIdList
);
if
(
CollectionUtils
.
isEmpty
(
delExternalUserIds
))
{
log
.
info
(
"没有需要删除逇外部联系人:{},{}"
,
wxUserId
,
wxEnterpriseId
);
return
;
}
//删除成员与union的关联关系
memberUnionRelatedService
.
delMemberUnionidRelatedBatch
(
wxEnterpriseId
,
wxUserId
,
new
ArrayList
<>(
delExternalUserIds
));
//删除导购和外部联系人关系
externalClerkRelatedService
.
delByUserIdAndExternalUserIdBatch
(
wxEnterpriseId
,
wxUserId
,
new
ArrayList
<>(
delExternalUserIds
));
}
}
haoban-manage3-service/src/main/java/com/gic/haoban/manage/service/task/friend/FriendClerkSyncNewOperation.java
0 → 100644
View file @
f665f24c
package
com
.
gic
.
haoban
.
manage
.
service
.
task
.
friend
;
import
com.alibaba.fastjson.JSON
;
import
com.alibaba.fastjson.JSONObject
;
import
com.gic.commons.util.GICMQClientUtil
;
import
com.gic.haoban.manage.api.dto.DealParamMqDTO
;
import
com.gic.haoban.manage.api.enums.PreDealStatusEnum
;
import
com.gic.haoban.manage.api.enums.PreDealTypeEnum
;
import
com.gic.haoban.manage.api.enums.SyncTaskStatusEnum
;
import
com.gic.haoban.manage.api.service.MemberUnionidRelatedApiService
;
import
com.gic.haoban.manage.service.entity.TabHaobanPreDealLog
;
import
com.gic.haoban.manage.service.entity.TabHaobanSyncTask
;
import
com.gic.haoban.manage.service.service.PreDealService
;
import
com.gic.haoban.manage.service.service.SyncTaskService
;
import
com.gic.haoban.manage.service.task.BaseSyncOperation
;
import
com.gic.mq.sdk.GicMQClient
;
import
com.gic.redis.data.util.RedisUtil
;
import
org.apache.commons.collections.CollectionUtils
;
import
org.slf4j.Logger
;
import
org.slf4j.LoggerFactory
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Service
;
import
java.util.HashSet
;
import
java.util.List
;
import
java.util.Set
;
import
java.util.stream.Collectors
;
@Service
public
class
FriendClerkSyncNewOperation
implements
BaseSyncOperation
{
private
static
final
Logger
logger
=
LoggerFactory
.
getLogger
(
FriendClerkSyncNewOperation
.
class
);
@Autowired
private
PreDealService
preDealService
;
@Autowired
private
MemberUnionidRelatedApiService
memberUnionidRelatedApiService
;
@Autowired
private
SyncTaskService
syncTaskService
;
@Override
public
void
dealSingleByMq
(
DealParamMqDTO
dealParamMqDTO
,
TabHaobanPreDealLog
dataPre
)
{
logger
.
info
(
"dealParamMqDTO={},dataPre={}"
,
JSON
.
toJSONString
(
dealParamMqDTO
),
JSON
.
toJSONString
(
dataPre
));
String
reason
=
""
;
boolean
dealFlag
=
true
;
String
taskId
=
dealParamMqDTO
.
getTaskId
();
try
{
String
wxEnterpriseId
=
dataPre
.
getWxEnterpriseId
();
String
wxUserId
=
dataPre
.
getDataId
();
//获取所有外部联系人的外部联系人ids
List
<
String
>
selfUserIdList
=
memberUnionidRelatedApiService
.
listSelfExterialList
(
wxEnterpriseId
,
wxUserId
);
logger
.
info
(
"selfUserIdList={}"
,
selfUserIdList
.
size
());
if
(
CollectionUtils
.
isEmpty
(
selfUserIdList
))
{
logger
.
info
(
"改用户没有外部联系人:{}"
,
JSONObject
.
toJSONString
(
dataPre
));
dealFlag
=
false
;
reason
=
"该用户没有外部联系人"
;
return
;
}
//第三方服务商的外部联系人
List
<
String
>
userIdList
=
memberUnionidRelatedApiService
.
listExterialList
(
wxEnterpriseId
,
wxUserId
);
if
(
CollectionUtils
.
isEmpty
(
userIdList
))
{
logger
.
info
(
"改用户没有外部联系人2:{}"
,
JSONObject
.
toJSONString
(
dataPre
));
dealFlag
=
false
;
reason
=
"该用户没有外部联系人"
;
return
;
}
//清理外部联系人
memberUnionidRelatedApiService
.
cleanNoExsitFriendNew
(
wxEnterpriseId
,
wxUserId
,
userIdList
);
//写入外部联系人的处理队列
List
<
TabHaobanPreDealLog
>
dealLogList
=
selfUserIdList
.
stream
().
map
(
externalUserId
->
{
TabHaobanPreDealLog
dealLog
=
new
TabHaobanPreDealLog
();
dealLog
.
setDataId
(
externalUserId
+
"-"
+
dataPre
.
getDataId
());
dealLog
.
setpDataId
(
dataPre
.
getDataId
());
dealLog
.
setDataType
(
PreDealTypeEnum
.
self_friend
.
getVal
());
dealLog
.
setStatusFlag
(
0
);
dealLog
.
setTaskId
(
dataPre
.
getTaskId
());
dealLog
.
setDataContent
(
externalUserId
);
dealLog
.
setWxEnterpriseId
(
wxEnterpriseId
);
return
dealLog
;
}).
collect
(
Collectors
.
toList
());
preDealService
.
insert
(
dealLogList
);
//写入外部联系人的处理队列
List
<
TabHaobanPreDealLog
>
thirddealLogList
=
userIdList
.
stream
().
map
(
externalUserId
->
{
TabHaobanPreDealLog
dealLog
=
new
TabHaobanPreDealLog
();
dealLog
.
setDataId
(
externalUserId
+
"-"
+
dataPre
.
getDataId
());
dealLog
.
setpDataId
(
dataPre
.
getDataId
());
dealLog
.
setDataType
(
PreDealTypeEnum
.
friend
.
getVal
());
dealLog
.
setStatusFlag
(
0
);
dealLog
.
setTaskId
(
dataPre
.
getTaskId
());
dealLog
.
setDataContent
(
externalUserId
);
dealLog
.
setWxEnterpriseId
(
wxEnterpriseId
);
return
dealLog
;
}).
collect
(
Collectors
.
toList
());
preDealService
.
insert
(
thirddealLogList
);
//成功更新状态
dealSuccess
(
dealParamMqDTO
.
getTaskId
(),
dealParamMqDTO
.
getData
(),
dataPre
.
getEnterpriseId
(),
dataPre
.
getWxEnterpriseId
());
}
catch
(
Exception
e
)
{
logger
.
info
(
"同步失败:{},{}"
,
JSONObject
.
toJSONString
(
dataPre
),
e
);
reason
=
"成员好友处理异常"
;
dealFlag
=
false
;
}
finally
{
if
(!
dealFlag
)
{
dealException
(
dealParamMqDTO
.
getTaskId
(),
dealParamMqDTO
.
getData
(),
dataPre
.
getEnterpriseId
(),
reason
);
}
}
}
@Override
public
void
dealException
(
String
taskId
,
String
dataId
,
String
enterpriseId
,
String
reason
)
{
preDealService
.
updateStatusByDataId
(
taskId
,
dataId
,
PreDealStatusEnum
.
exception
.
getVal
(),
reason
);
checkDepartmentTask
(
taskId
);
}
@Override
public
void
dealSuccess
(
String
taskId
,
String
dataId
,
String
enterpriseId
,
String
wxEnterpriseId
)
{
preDealService
.
updateStatusByDataId
(
taskId
,
dataId
,
PreDealStatusEnum
.
dealing
.
getVal
(),
"预处理中"
);
List
<
String
>
dataIds
=
preDealService
.
listReDataIdByPDataId
(
taskId
,
dataId
,
PreDealTypeEnum
.
self_friend
.
getVal
());
dealDepartmentToMq
(
taskId
,
new
HashSet
<>(
dataIds
),
SyncTaskStatusEnum
.
self_friend_sync
);
checkDepartmentTask
(
taskId
);
}
@Override
public
void
checkDepartmentTask
(
String
taskId
)
{
boolean
b
=
preDealService
.
checkFriendTask
(
taskId
,
PreDealTypeEnum
.
friend_clerk
.
getVal
());
if
(!
b
)
{
return
;
}
logger
.
info
(
"好友同步成功:{}"
,
taskId
);
String
key
=
"haoban_sync_friend_task_"
+
taskId
;
RedisUtil
.
lock
(
key
,
3L
);
TabHaobanSyncTask
syncTask
=
syncTaskService
.
getSyncTask
(
taskId
);
if
(
syncTask
.
getStatusFlag
()
==
SyncTaskStatusEnum
.
compute
.
getVal
()
||
syncTask
.
getStatusFlag
()
==
SyncTaskStatusEnum
.
exception_compute
.
getVal
())
{
logger
.
info
(
"已经处理成功"
);
return
;
}
int
errCount
=
preDealService
.
countByTaskId
(
taskId
,
-
1
,
PreDealStatusEnum
.
exception
.
getVal
());
if
(
errCount
>
0
)
{
syncTaskService
.
updateTaskStatus
(
taskId
,
SyncTaskStatusEnum
.
exception_compute
.
getVal
());
}
else
{
syncTaskService
.
updateTaskStatus
(
taskId
,
SyncTaskStatusEnum
.
compute
.
getVal
());
}
RedisUtil
.
unlock
(
key
);
}
/**
* 放入mq处理部门数据
*
* @param taskId
* @param dealList
*/
private
void
dealDepartmentToMq
(
String
taskId
,
Set
<
String
>
dealList
,
SyncTaskStatusEnum
syncTaskStatusEnum
)
{
//预处理分组任务
syncTaskService
.
updateTaskStatus
(
taskId
,
syncTaskStatusEnum
.
getVal
());
List
<
String
>
ret
=
dealList
.
stream
().
map
(
relationId
->
{
DealParamMqDTO
dealParamMqDTO
=
new
DealParamMqDTO
();
dealParamMqDTO
.
setData
(
relationId
);
dealParamMqDTO
.
setTaskId
(
taskId
);
dealParamMqDTO
.
setType
(
syncTaskStatusEnum
.
getVal
());
return
JSONObject
.
toJSONString
(
dealParamMqDTO
);
}).
collect
(
Collectors
.
toList
());
GicMQClient
clientInstance
=
GICMQClientUtil
.
getClientInstance
();
try
{
clientInstance
.
sendBatchMessages
(
"departmentSyncDealMq"
,
ret
);
}
catch
(
Exception
e
)
{
logger
.
info
(
"发送失败:{},{}"
,
taskId
);
e
.
printStackTrace
();
}
}
}
haoban-manage3-service/src/main/java/com/gic/haoban/manage/service/task/friend/FriendSyncNewOperation.java
0 → 100644
View file @
f665f24c
package
com
.
gic
.
haoban
.
manage
.
service
.
task
.
friend
;
import
cn.hutool.crypto.SecureUtil
;
import
com.alibaba.fastjson.JSON
;
import
com.alibaba.fastjson.JSONObject
;
import
com.gic.clerk.api.dto.ClerkDTO
;
import
com.gic.clerk.api.service.ClerkService
;
import
com.gic.clerk.api.service.PowerService
;
import
com.gic.commons.util.GICMQClientUtil
;
import
com.gic.haoban.manage.api.dto.*
;
import
com.gic.haoban.manage.api.enums.PreDealStatusEnum
;
import
com.gic.haoban.manage.api.enums.PreDealTypeEnum
;
import
com.gic.haoban.manage.api.enums.SyncTaskStatusEnum
;
import
com.gic.haoban.manage.api.service.ClerkMainStoreRelatedApiService
;
import
com.gic.haoban.manage.api.service.MemberUnionidRelatedApiService
;
import
com.gic.haoban.manage.api.service.StaffApiService
;
import
com.gic.haoban.manage.service.entity.TabHaobanPreDealLog
;
import
com.gic.haoban.manage.service.service.PreDealService
;
import
com.gic.haoban.manage.service.service.StaffClerkRelationService
;
import
com.gic.haoban.manage.service.service.SyncTaskService
;
import
com.gic.haoban.manage.service.task.BaseSyncOperation
;
import
com.gic.member.api.dto.MemberDTO
;
import
com.gic.member.api.service.MemberOpenCardBusinessService
;
import
com.gic.mq.sdk.GicMQClient
;
import
com.gic.redis.data.util.RedisUtil
;
import
org.apache.commons.collections.CollectionUtils
;
import
org.apache.commons.lang3.StringUtils
;
import
org.slf4j.Logger
;
import
org.slf4j.LoggerFactory
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Service
;
import
java.util.*
;
import
java.util.stream.Collectors
;
@Service
public
class
FriendSyncNewOperation
implements
BaseSyncOperation
{
private
static
final
Logger
logger
=
LoggerFactory
.
getLogger
(
FriendSyncNewOperation
.
class
);
@Autowired
private
PreDealService
preDealService
;
@Autowired
private
MemberUnionidRelatedApiService
memberUnionidRelatedApiService
;
@Autowired
private
SyncTaskService
syncTaskService
;
@Autowired
private
ClerkMainStoreRelatedApiService
clerkMainStoreRelatedApiService
;
@Autowired
private
StaffApiService
staffApiService
;
@Autowired
private
StaffClerkRelationService
staffClerkRelationService
;
@Autowired
private
ClerkService
clerkService
;
@Autowired
private
PowerService
powerService
;
@Autowired
private
MemberOpenCardBusinessService
memberOpenCardBusinessService
;
@Autowired
private
FriendClerkSyncNewOperation
friendClerkSyncNewOperation
;
@Override
public
void
dealSingleByMq
(
DealParamMqDTO
dealParamMqDTO
,
TabHaobanPreDealLog
dataPre
)
{
String
reason
=
""
;
boolean
dealFlag
=
true
;
try
{
String
wxEnterpriseId
=
dataPre
.
getWxEnterpriseId
();
String
wxUserId
=
dataPre
.
getpDataId
();
String
taskId
=
dealParamMqDTO
.
getTaskId
();
String
externalUserId
=
dataPre
.
getDataContent
();
ExternalUserDTO
externalUserDTO
=
memberUnionidRelatedApiService
.
getExternalUseridInfo
(
wxEnterpriseId
,
wxUserId
,
externalUserId
);
if
(
externalUserDTO
==
null
)
{
dealFlag
=
false
;
reason
=
"好友不存在"
;
return
;
}
//relationkey
String
relationKey
=
SecureUtil
.
md5
(
wxUserId
+
"_"
+
externalUserDTO
.
getName
()
+
"_"
+
externalUserDTO
.
getAddCreateTime
());
logger
.
info
(
"relationKey:{},{}"
,
relationKey
,
externalUserDTO
.
getExternalUserId
());
// 根据关联键relationkey查看自建应用 是否有数据
TabHaobanPreDealLog
selfPre
=
preDealService
.
getByRelationKey
(
taskId
,
PreDealTypeEnum
.
self_friend
.
getVal
(),
relationKey
);
if
(
null
==
selfPre
)
{
logger
.
info
(
"用户的自建应用不存在该数据:{},{}"
,
JSONObject
.
toJSONString
(
dataPre
),
JSONObject
.
toJSONString
(
externalUserDTO
));
dealFlag
=
false
;
reason
=
"用户的自建应用不存在该数据:"
+
relationKey
;
return
;
}
ExternalUserDTO
selfUserData
=
JSON
.
parseObject
(
selfPre
.
getDataContent
(),
ExternalUserDTO
.
class
);
externalUserDTO
.
setUnionId
(
selfUserData
.
getUnionId
());
//序列化数据
String
ret
=
dealMerge
(
externalUserDTO
,
dataPre
);
if
(
StringUtils
.
isBlank
(
ret
))
{
logger
.
info
(
"好友创建失败:{},{}"
,
ret
,
JSONObject
.
toJSONString
(
externalUserDTO
));
dealFlag
=
false
;
reason
=
ret
+
":"
+
relationKey
;
}
//更新状态
preDealService
.
updateFriendStatusByDataId
(
taskId
,
dataPre
.
getDataId
(),
PreDealStatusEnum
.
computed
.
getVal
(),
reason
,
externalUserDTO
.
getMemberId
(),
relationKey
);
dealSuccess
(
taskId
,
dataPre
.
getDataId
(),
null
,
wxEnterpriseId
);
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
logger
.
info
(
"同步失败:{},{}"
,
JSONObject
.
toJSONString
(
dataPre
),
e
);
reason
=
"第三方好友处理异常"
;
dealFlag
=
false
;
}
finally
{
if
(!
dealFlag
)
{
dealException
(
dealParamMqDTO
.
getTaskId
(),
dataPre
.
getDataId
(),
dataPre
.
getpDataId
(),
reason
);
}
}
}
private
String
dealMerge
(
ExternalUserDTO
externalUserDTO
,
TabHaobanPreDealLog
dataPre
)
{
String
wxEnterpriseId
=
dataPre
.
getWxEnterpriseId
();
String
wxUserId
=
dataPre
.
getpDataId
();
String
taskId
=
dataPre
.
getTaskId
();
//staff信息
StaffDTO
staff
=
staffApiService
.
selectByUserIdAndEnterpriseId
(
wxUserId
,
wxEnterpriseId
);
if
(
staff
==
null
)
{
return
"成员不存在"
;
}
ClerkMainStoreRelatedDTO
mainStore
=
clerkMainStoreRelatedApiService
.
getWxEnterpriseIdAndStaffId
(
wxEnterpriseId
,
staff
.
getStaffId
());
if
(
mainStore
==
null
)
{
return
"主门店不存在"
;
}
StaffClerkRelationDTO
staffClerkRelationDTO
=
staffClerkRelationService
.
getOneBindByStoreId
(
staff
.
getStaffId
(),
mainStore
.
getStoreId
());
if
(
staffClerkRelationDTO
==
null
)
{
return
"未绑定导购"
;
}
externalUserDTO
.
setWxEnterpriseId
(
wxEnterpriseId
);
externalUserDTO
.
setEnterpriseId
(
staffClerkRelationDTO
.
getEnterpriseId
());
externalUserDTO
.
setStoreId
(
mainStore
.
getStoreId
());
externalUserDTO
.
setClerkId
(
staffClerkRelationDTO
.
getClerkId
());
externalUserDTO
.
setWxUserId
(
wxUserId
);
externalUserDTO
.
setStaffId
(
staffClerkRelationDTO
.
getStaffId
());
String
clerkCode
=
staffClerkRelationDTO
.
getClerkCode
();
ClerkDTO
clerk
=
clerkService
.
getClerkByClerkCode
(
staffClerkRelationDTO
.
getEnterpriseId
(),
clerkCode
);
if
(
clerk
==
null
)
{
return
"导购不存在:"
+
clerkCode
;
}
String
qrcodeParam
=
clerk
.
getQrcodeParam
();
if
(
StringUtils
.
isBlank
(
qrcodeParam
))
{
powerService
.
saveClerkQrCode
(
clerk
.
getClerkId
());
clerk
=
clerkService
.
getClerkByClerkCode
(
staffClerkRelationDTO
.
getEnterpriseId
(),
clerkCode
);
qrcodeParam
=
clerk
.
getQrcodeParam
();
}
if
(
StringUtils
.
isBlank
(
qrcodeParam
))
{
return
"导购码不存在:"
+
clerkCode
;
}
MemberDTO
member
=
null
;
if
(
clerk
!=
null
&&
StringUtils
.
isNotBlank
(
qrcodeParam
)
&&
StringUtils
.
isNotBlank
(
externalUserDTO
.
getUnionId
()))
{
member
=
memberOpenCardBusinessService
.
getMemberByQywxChannelParam
(
staffClerkRelationDTO
.
getEnterpriseId
(),
externalUserDTO
.
getUnionId
(),
""
,
externalUserDTO
.
getName
(),
externalUserDTO
.
getAvatar
(),
qrcodeParam
);
}
if
(
member
==
null
)
{
return
"会员不存在:"
+
externalUserDTO
.
getUnionId
();
}
externalUserDTO
.
setMemberId
(
member
.
getMemberId
());
return
memberUnionidRelatedApiService
.
addExternal
(
externalUserDTO
);
}
@Override
public
void
dealException
(
String
taskId
,
String
dataId
,
String
pDataId
,
String
reason
)
{
preDealService
.
updateStatusByDataId
(
taskId
,
dataId
,
PreDealStatusEnum
.
exception
.
getVal
(),
reason
);
checkDepartmentTask
(
taskId
,
pDataId
);
}
@Override
public
void
dealSuccess
(
String
taskId
,
String
dataId
,
String
pDataId
,
String
wxEnterpriseId
)
{
//校验成功是否都
checkDepartmentTask
(
taskId
,
pDataId
);
}
/**
* 自定义处理流程
*
* @param taskId
* @param pDataId
*/
public
void
checkDepartmentTask
(
String
taskId
,
String
pDataId
)
{
//校验是否都已经处理完成
boolean
b
=
preDealService
.
checkFriendTaskByPDataId
(
taskId
,
pDataId
,
PreDealTypeEnum
.
friend
.
getVal
());
if
(!
b
)
{
return
;
}
logger
.
info
(
"同步第三方服务商好友:{},{}"
,
taskId
,
pDataId
);
String
key
=
"haoban_sync_third_friend_task_"
+
taskId
;
RedisUtil
.
lock
(
key
,
3L
);
TabHaobanPreDealLog
preDealLog
=
preDealService
.
getByDataId
(
taskId
,
pDataId
,
PreDealTypeEnum
.
friend_clerk
.
getVal
(),
PreDealStatusEnum
.
dealing
.
getVal
());
if
(
preDealLog
!=
null
)
{
preDealService
.
updateStatusByDataId
(
taskId
,
pDataId
,
PreDealTypeEnum
.
friend_clerk
.
getVal
(),
PreDealStatusEnum
.
computed
.
getVal
(),
"成功"
);
this
.
checkDepartmentTask
(
taskId
);
}
RedisUtil
.
unlock
(
key
);
}
@Override
public
void
checkDepartmentTask
(
String
taskId
)
{
friendClerkSyncNewOperation
.
checkDepartmentTask
(
taskId
);
}
}
haoban-manage3-service/src/main/java/com/gic/haoban/manage/service/task/friend/SelfFriendSyncNewOperation.java
0 → 100644
View file @
f665f24c
package
com
.
gic
.
haoban
.
manage
.
service
.
task
.
friend
;
import
cn.hutool.crypto.SecureUtil
;
import
com.alibaba.fastjson.JSON
;
import
com.alibaba.fastjson.JSONObject
;
import
com.gic.commons.util.GICMQClientUtil
;
import
com.gic.haoban.manage.api.dto.DealParamMqDTO
;
import
com.gic.haoban.manage.api.dto.ExternalUserDTO
;
import
com.gic.haoban.manage.api.enums.PreDealStatusEnum
;
import
com.gic.haoban.manage.api.enums.PreDealTypeEnum
;
import
com.gic.haoban.manage.api.enums.SyncTaskStatusEnum
;
import
com.gic.haoban.manage.api.service.MemberUnionidRelatedApiService
;
import
com.gic.haoban.manage.service.entity.TabHaobanPreDealLog
;
import
com.gic.haoban.manage.service.service.PreDealService
;
import
com.gic.haoban.manage.service.service.SyncTaskService
;
import
com.gic.haoban.manage.service.task.BaseSyncOperation
;
import
com.gic.mq.sdk.GicMQClient
;
import
com.gic.redis.data.util.RedisUtil
;
import
org.apache.commons.collections.CollectionUtils
;
import
org.slf4j.Logger
;
import
org.slf4j.LoggerFactory
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Service
;
import
java.util.HashSet
;
import
java.util.List
;
import
java.util.Set
;
import
java.util.stream.Collectors
;
@Service
public
class
SelfFriendSyncNewOperation
implements
BaseSyncOperation
{
private
static
final
Logger
logger
=
LoggerFactory
.
getLogger
(
SelfFriendSyncNewOperation
.
class
);
@Autowired
private
PreDealService
preDealService
;
@Autowired
private
MemberUnionidRelatedApiService
memberUnionidRelatedApiService
;
@Autowired
private
SyncTaskService
syncTaskService
;
@Autowired
private
FriendClerkSyncNewOperation
friendClerkSyncNewOperation
;
@Override
public
void
dealSingleByMq
(
DealParamMqDTO
dealParamMqDTO
,
TabHaobanPreDealLog
dataPre
)
{
String
reason
=
"成功"
;
boolean
dealFlag
=
true
;
try
{
String
wxEnterpriseId
=
dataPre
.
getWxEnterpriseId
();
String
wxUserId
=
dataPre
.
getpDataId
();
String
taskId
=
dealParamMqDTO
.
getTaskId
();
String
externalUserId
=
dataPre
.
getDataContent
();
ExternalUserDTO
pojo
=
memberUnionidRelatedApiService
.
getCorpSelfExternalUseridInfo
(
wxEnterpriseId
,
wxUserId
,
externalUserId
);
if
(
pojo
==
null
)
{
logger
.
info
(
"外部联系人好友不存在:{}"
,
JSONObject
.
toJSONString
(
dataPre
));
dealException
(
taskId
,
dataPre
.
getDataId
(),
null
,
"好友不存在"
);
return
;
}
//自有应用信息
JSONObject
json
=
new
JSONObject
();
json
.
put
(
"name"
,
pojo
.
getName
());
json
.
put
(
"unionId"
,
pojo
.
getUnionId
());
json
.
put
(
"addCreateTime"
,
pojo
.
getAddCreateTime
());
//relationkey
String
relationKey
=
SecureUtil
.
md5
(
wxUserId
+
"_"
+
pojo
.
getName
()
+
"_"
+
pojo
.
getAddCreateTime
());
//更新状态
preDealService
.
updateFriendStatusByDataId
(
taskId
,
dataPre
.
getDataId
(),
PreDealStatusEnum
.
computed
.
getVal
(),
reason
,
json
.
toJSONString
(),
relationKey
);
dealSuccess
(
taskId
,
dataPre
.
getDataId
(),
null
,
wxEnterpriseId
);
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
logger
.
info
(
"同步失败:{},{}"
,
JSONObject
.
toJSONString
(
dataPre
),
e
);
reason
=
"自建应用好友处理异常"
;
dealFlag
=
false
;
}
finally
{
if
(!
dealFlag
)
{
dealException
(
dealParamMqDTO
.
getTaskId
(),
dataPre
.
getDataId
(),
dataPre
.
getpDataId
(),
reason
);
}
}
}
@Override
public
void
dealException
(
String
taskId
,
String
dataId
,
String
pDataId
,
String
reason
)
{
preDealService
.
updateStatusByDataId
(
taskId
,
dataId
,
PreDealStatusEnum
.
exception
.
getVal
(),
reason
);
checkDepartmentTask
(
taskId
,
pDataId
);
}
@Override
public
void
dealSuccess
(
String
taskId
,
String
dataId
,
String
dataContent
,
String
wxEnterpriseId
)
{
TabHaobanPreDealLog
data
=
preDealService
.
getByDataId
(
taskId
,
dataId
,
PreDealTypeEnum
.
self_friend
.
getVal
(),
-
1
);
//校验成功是否都
checkDepartmentTask
(
taskId
,
data
.
getpDataId
());
}
/**
* 自定义处理流程
*
* @param taskId
* @param pDataId
*/
public
void
checkDepartmentTask
(
String
taskId
,
String
pDataId
)
{
//校验是否都已经处理完成
boolean
b
=
preDealService
.
checkFriendTaskByPDataId
(
taskId
,
pDataId
,
PreDealTypeEnum
.
self_friend
.
getVal
());
if
(!
b
)
{
return
;
}
logger
.
info
(
"同步第三方服务商好友:{},{}"
,
taskId
,
pDataId
);
String
key
=
"haoban_sync_self_friend_task_"
+
taskId
;
RedisUtil
.
lock
(
key
,
3L
);
List
<
String
>
dataIds
=
preDealService
.
listReDataIdByPDataId
(
taskId
,
pDataId
,
PreDealTypeEnum
.
friend
.
getVal
());
if
(
CollectionUtils
.
isEmpty
(
dataIds
))
{
//更新父级别
preDealService
.
updateStatusByDataId
(
taskId
,
pDataId
,
PreDealTypeEnum
.
friend_clerk
.
getVal
(),
PreDealStatusEnum
.
computed
.
getVal
(),
"成功"
);
//校验异常
this
.
checkDepartmentTask
(
taskId
);
}
else
{
dealDepartmentToMq
(
taskId
,
new
HashSet
<>(
dataIds
),
SyncTaskStatusEnum
.
friend_sync
);
}
RedisUtil
.
unlock
(
key
);
}
@Override
public
void
checkDepartmentTask
(
String
taskId
)
{
friendClerkSyncNewOperation
.
checkDepartmentTask
(
taskId
);
}
/**
* 放入mq处理部门数据
*
* @param taskId
* @param dealList
*/
private
void
dealDepartmentToMq
(
String
taskId
,
Set
<
String
>
dealList
,
SyncTaskStatusEnum
syncTaskStatusEnum
)
{
//预处理分组任务
syncTaskService
.
updateTaskStatus
(
taskId
,
syncTaskStatusEnum
.
getVal
());
List
<
String
>
ret
=
dealList
.
stream
().
map
(
relationId
->
{
DealParamMqDTO
dealParamMqDTO
=
new
DealParamMqDTO
();
dealParamMqDTO
.
setData
(
relationId
);
dealParamMqDTO
.
setTaskId
(
taskId
);
dealParamMqDTO
.
setType
(
syncTaskStatusEnum
.
getVal
());
return
JSONObject
.
toJSONString
(
dealParamMqDTO
);
}).
collect
(
Collectors
.
toList
());
GicMQClient
clientInstance
=
GICMQClientUtil
.
getClientInstance
();
try
{
clientInstance
.
sendBatchMessages
(
"departmentSyncDealMq"
,
ret
);
}
catch
(
Exception
e
)
{
logger
.
info
(
"发送失败:{},{}"
,
taskId
);
e
.
printStackTrace
();
}
}
public
static
void
main
(
String
[]
args
)
{
String
res
=
"{'clerkId':'b160eb9a3daf4b3da936b678f1b06744','enterpriseId':'ff8080815dacd3a2015dacd3ef5c0000','externalUserId':'wm59NLDQAAY5Q4pABXAfaTJ6mORvpw','name':'hzw','storeId':'ff8080815695df44015697ada25b0102','wxEnterpriseId':'ca66a01b79474c40b3e7c7f93"
;
System
.
err
.
println
(
JSON
.
parseObject
(
res
,
ExternalUserDTO
.
class
));
}
}
haoban-manage3-service/src/main/resources/mapper/MemberUnionidRelatedMapper.xml
View file @
f665f24c
...
...
@@ -200,6 +200,7 @@
<include
refid=
"Base_Column_List"
/>
from tab_haoban_member_unionid_related
where wx_user_id = #{wxUserId}
and wx_enterprise_id=#{wxEnterpriseId}
and status_flag = 1
and unionid = #{unionid}
limit 1
...
...
@@ -221,6 +222,18 @@
where external_userid = #{externalUserid,jdbcType=VARCHAR}
and wx_user_id = #{wxUserId}
</update>
<update
id=
"delMemberUnionidRelatedBatch"
parameterType=
"com.gic.haoban.manage.service.entity.MemberUnionidRelated"
>
update tab_haoban_member_unionid_related
set status_flag = 0
where
wx_enterprise_id=#{wxEnterpriseId}
and wx_user_id = #{wxUserId}
and external_userid in
<foreach
collection=
"externalUserids"
open=
"("
close=
")"
separator=
","
item=
"item"
>
#{item}
</foreach>
</update>
<select
id=
"getByWxUserIdAndWxEnterpriseId"
resultMap=
"BaseResultMap"
parameterType=
"java.lang.String"
>
select
...
...
haoban-manage3-service/src/main/resources/mapper/PreDealLogMapper.xml
View file @
f665f24c
...
...
@@ -355,6 +355,19 @@
</set>
where data_id = #{dataId,jdbcType=INTEGER} and task_id=#{taskId}
</update>
<update
id=
"updateFriendStatusAndRelationKeyByDataId"
>
update tab_haoban_pre_deal_log
<set>
status_flag = #{status,jdbcType=INTEGER},
reason=#{reason},
data_content = #{dataContent},
relation_key=#{relationKey},
update_time = now()
</set>
where data_id = #{dataId,jdbcType=INTEGER} and task_id=#{taskId}
</update>
<select
id=
"countFailStaffTaskByTaskIdAndPDataId"
resultType=
"integer"
>
select
...
...
@@ -373,4 +386,33 @@
where task_id = #{taskId}
and p_data_id =#{pDataId}
</select>
<select
id=
"getByRelationKey"
resultMap=
"BaseResultMap"
>
select
<include
refid=
"Base_Column_List_data"
/>
from tab_haoban_pre_deal_log
where task_id = #{taskId}
and relation_key =#{relationKey}
and data_type =#{dataType}
</select>
<select
id=
"checkTaskFriend"
resultType=
"Integer"
>
select
count(*)
from tab_haoban_pre_deal_log
where task_id = #{taskId}
<if
test=
"pDataId!=null"
>
p_data_id=#{pDataId}
</if>
and data_type=#{dataType}
and status_flag in(0,1)
</select>
<select
id=
"listReDataIdByPDataId"
resultType=
"String"
>
select
data_id
from tab_haoban_pre_deal_log
where task_id = #{taskId} and p_data_id=#{dataId} and data_type=#{dataType}
and status_flag in(0,1,3)
</select>
</mapper>
\ No newline at end of file
haoban-manage3-service/src/main/resources/mapper/TabHaobanExternalClerkRelatedMapper.xml
View file @
f665f24c
...
...
@@ -239,6 +239,22 @@
and wx_user_id = #{wxUserId}
and status_flag = 1
</update>
<update
id=
"delByUserIdAndExternalUserIdBatch"
parameterType=
"com.gic.haoban.manage.service.entity.TabHaobanExternalClerkRelated"
>
update tab_haoban_external_clerk_related
set
status_flag = 2,
update_time = now()
where
wx_enterprise_id=#{wxEnterpriseId}
and wx_user_id = #{wxUserId}
and status_flag = 1
and external_user_id in
<foreach
collection=
"externalUserIds"
item=
"item"
open=
"("
separator=
","
close=
")"
>
#{item}
</foreach>
</update>
<update
id=
"delByClerkIdAndStaffId"
parameterType=
"com.gic.haoban.manage.service.entity.TabHaobanExternalClerkRelated"
>
update tab_haoban_external_clerk_related
...
...
haoban-manage3-wx/src/main/java/com/gic/haoban/manage/web/controller/ClerkController.java
View file @
f665f24c
...
...
@@ -27,10 +27,12 @@ import com.gic.haoban.manage.web.utils.RouterConstant;
import
com.gic.haoban.manage.web.vo.*
;
import
com.gic.redis.data.util.RedisUtil
;
import
org.apache.commons.lang3.StringUtils
;
import
org.apache.ibatis.annotations.Param
;
import
org.slf4j.Logger
;
import
org.slf4j.LoggerFactory
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.web.bind.annotation.RequestMapping
;
import
org.springframework.web.bind.annotation.RequestParam
;
import
org.springframework.web.bind.annotation.RestController
;
import
java.util.*
;
...
...
@@ -382,7 +384,8 @@ public class ClerkController extends WebBaseController{
//刷新微信好友
@RequestMapping
(
"/fresh-wx-friend"
)
public
HaobanResponse
freshWxFrend
(
String
staffId
,
String
storeId
,
String
wxEnterpriseId
,
String
staffDepartmentRelatedId
,
String
wxUserId
)
{
public
HaobanResponse
freshWxFrend
(
String
staffId
,
String
storeId
,
String
wxEnterpriseId
,
String
staffDepartmentRelatedId
,
String
wxUserId
,
@RequestParam
(
defaultValue
=
"0"
)
Integer
flushType
)
{
StaffDTO
staff
=
staffApiService
.
selectById
(
staffId
);
String
yyyyMM
=
DateUtil
.
dateToStr
(
new
Date
(),
"yyyyMM"
);
if
(
staff
==
null
){
...
...
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