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
9aa05ad2
Commit
9aa05ad2
authored
Dec 02, 2020
by
qwmqiuwenmin
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'developer' into 'master'
Developer See merge request
!85
parents
c857c1e0
00c76a5f
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
39 changed files
with
1558 additions
and
161 deletions
+1558
-161
ExternalUserDTO.java
...n/java/com/gic/haoban/manage/api/dto/ExternalUserDTO.java
+131
-0
PreDealTypeEnum.java
...java/com/gic/haoban/manage/api/enums/PreDealTypeEnum.java
+5
-1
SyncTaskStatusEnum.java
...a/com/gic/haoban/manage/api/enums/SyncTaskStatusEnum.java
+5
-1
DealSyncOperationApiService.java
...aoban/manage/api/service/DealSyncOperationApiService.java
+40
-2
MemberUnionidRelatedApiService.java
...an/manage/api/service/MemberUnionidRelatedApiService.java
+13
-0
pom.xml
haoban-manage3-service/pom.xml
+5
-0
PreDealLogMapper.java
...ic/haoban/manage/service/dao/mapper/PreDealLogMapper.java
+24
-0
SyncTaskMapper.java
.../gic/haoban/manage/service/dao/mapper/SyncTaskMapper.java
+4
-0
TabHaobanClerkMainStoreRelatedMapper.java
...vice/dao/mapper/TabHaobanClerkMainStoreRelatedMapper.java
+5
-0
TabHaobanMemberClerkChatConfigMapper.java
...vice/dao/mapper/TabHaobanMemberClerkChatConfigMapper.java
+6
-0
TabHaobanStaffClerkRelationMapper.java
...service/dao/mapper/TabHaobanStaffClerkRelationMapper.java
+3
-0
ExternalUserPojo.java
.../com/gic/haoban/manage/service/pojo/ExternalUserPojo.java
+10
-0
ClerkMainStoreRelatedService.java
.../manage/service/service/ClerkMainStoreRelatedService.java
+4
-0
PreDealService.java
...com/gic/haoban/manage/service/service/PreDealService.java
+23
-0
StaffClerkRelationService.java
...ban/manage/service/service/StaffClerkRelationService.java
+8
-0
SyncTaskService.java
...om/gic/haoban/manage/service/service/SyncTaskService.java
+8
-0
ClerkMainStoreRelatedServiceImpl.java
...ervice/service/impl/ClerkMainStoreRelatedServiceImpl.java
+6
-0
PreDealServiceImpl.java
...aoban/manage/service/service/impl/PreDealServiceImpl.java
+17
-0
StaffClerkRelationServiceImpl.java
...e/service/service/impl/StaffClerkRelationServiceImpl.java
+5
-0
SyncTaskServiceImpl.java
...oban/manage/service/service/impl/SyncTaskServiceImpl.java
+6
-0
DealSyncOperationApiServiceImpl.java
...ice/service/out/impl/DealSyncOperationApiServiceImpl.java
+0
-0
MemberUnionidRelatedApiServiceImpl.java
.../service/out/impl/MemberUnionidRelatedApiServiceImpl.java
+217
-0
FriendClerkSyncOperation.java
.../haoban/manage/service/task/FriendClerkSyncOperation.java
+157
-0
FriendMergeSyncOperation.java
.../haoban/manage/service/task/FriendMergeSyncOperation.java
+181
-0
FriendSyncOperation.java
...m/gic/haoban/manage/service/task/FriendSyncOperation.java
+179
-0
SelfFriendSyncOperation.java
...c/haoban/manage/service/task/SelfFriendSyncOperation.java
+193
-0
PreDealLogMapper.xml
...e3-service/src/main/resources/mapper/PreDealLogMapper.xml
+30
-1
SyncTaskMapper.xml
...age3-service/src/main/resources/mapper/SyncTaskMapper.xml
+13
-1
TabHaobanClerkMainStoreRelatedMapper.xml
...resources/mapper/TabHaobanClerkMainStoreRelatedMapper.xml
+11
-0
TabHaobanMemberClerkChatConfigMapper.xml
...resources/mapper/TabHaobanMemberClerkChatConfigMapper.xml
+2
-0
TabHaobanStaffClerkRelationMapper.xml
...in/resources/mapper/TabHaobanStaffClerkRelationMapper.xml
+10
-0
CountDownLatchTest.java
haoban-manage3-service/src/test/java/CountDownLatchTest.java
+44
-0
DealSyncTest.java
haoban-manage3-service/src/test/java/DealSyncTest.java
+34
-134
WxEnterpriseController.java
.../haoban/manage/web/controller/WxEnterpriseController.java
+78
-1
HaoBanErrCode.java
...java/com/gic/haoban/manage/web/errCode/HaoBanErrCode.java
+9
-0
MyApplicationContextAware.java
...gic/haoban/manage/web/init/MyApplicationContextAware.java
+43
-12
WebInterceptor.java
...com/gic/haoban/manage/web/interceptor/WebInterceptor.java
+13
-1
ClerkController.java
...com/gic/haoban/manage/web/controller/ClerkController.java
+15
-6
dubbo-haoban-manage-wx.xml
...ge3-wx/src/main/webapp/WEB-INF/dubbo-haoban-manage-wx.xml
+1
-1
No files found.
haoban-manage3-api/src/main/java/com/gic/haoban/manage/api/dto/ExternalUserDTO.java
0 → 100644
View file @
9aa05ad2
package
com
.
gic
.
haoban
.
manage
.
api
.
dto
;
import
java.io.Serializable
;
public
class
ExternalUserDTO
implements
Serializable
{
private
String
wxEnterpriseId
;
private
String
name
;
private
String
unionId
;
private
String
avatar
;
private
String
addCreateTime
;
private
String
wxUserId
;
private
String
externalUserId
;
private
String
memberId
;
private
String
storeId
;
private
String
enterpriseId
;
private
String
clerkId
;
private
String
staffId
;
public
String
getWxEnterpriseId
()
{
return
wxEnterpriseId
;
}
public
void
setWxEnterpriseId
(
String
wxEnterpriseId
)
{
this
.
wxEnterpriseId
=
wxEnterpriseId
;
}
public
String
getName
()
{
return
name
;
}
public
void
setName
(
String
name
)
{
this
.
name
=
name
;
}
public
String
getUnionId
()
{
return
unionId
;
}
public
void
setUnionId
(
String
unionId
)
{
this
.
unionId
=
unionId
;
}
public
String
getAvatar
()
{
return
avatar
;
}
public
void
setAvatar
(
String
avatar
)
{
this
.
avatar
=
avatar
;
}
public
String
getAddCreateTime
()
{
return
addCreateTime
;
}
public
void
setAddCreateTime
(
String
addCreateTime
)
{
this
.
addCreateTime
=
addCreateTime
;
}
public
String
getWxUserId
()
{
return
wxUserId
;
}
public
void
setWxUserId
(
String
wxUserId
)
{
this
.
wxUserId
=
wxUserId
;
}
public
String
getExternalUserId
()
{
return
externalUserId
;
}
public
void
setExternalUserId
(
String
externalUserId
)
{
this
.
externalUserId
=
externalUserId
;
}
public
String
getMemberId
()
{
return
memberId
;
}
public
void
setMemberId
(
String
memberId
)
{
this
.
memberId
=
memberId
;
}
public
String
getStoreId
()
{
return
storeId
;
}
public
void
setStoreId
(
String
storeId
)
{
this
.
storeId
=
storeId
;
}
public
String
getEnterpriseId
()
{
return
enterpriseId
;
}
public
void
setEnterpriseId
(
String
enterpriseId
)
{
this
.
enterpriseId
=
enterpriseId
;
}
public
String
getClerkId
()
{
return
clerkId
;
}
public
void
setClerkId
(
String
clerkId
)
{
this
.
clerkId
=
clerkId
;
}
public
String
getStaffId
()
{
return
staffId
;
}
public
void
setStaffId
(
String
staffId
)
{
this
.
staffId
=
staffId
;
}
}
haoban-manage3-api/src/main/java/com/gic/haoban/manage/api/enums/PreDealTypeEnum.java
View file @
9aa05ad2
...
...
@@ -7,7 +7,11 @@ public enum PreDealTypeEnum {
all
(-
1
),
group
(
0
),
store
(
1
),
clerk
(
2
);
clerk
(
2
),
friend_clerk
(
6
),
friend
(
8
),
self_friend
(
7
),
friend_merge
(
9
);
private
int
val
;
PreDealTypeEnum
(
int
val
)
{
...
...
haoban-manage3-api/src/main/java/com/gic/haoban/manage/api/enums/SyncTaskStatusEnum.java
View file @
9aa05ad2
...
...
@@ -10,7 +10,11 @@ public enum SyncTaskStatusEnum {
clerk_sync
(
3
),
compute
(
4
),
exception_compute
(
5
),
exception_close
(
6
);
exception_close
(
6
),
friend_clerk_sync
(
7
),
self_friend_sync
(
8
),
friend_sync
(
9
),
merge_friend_sync
(
10
);
private
int
val
;
...
...
haoban-manage3-api/src/main/java/com/gic/haoban/manage/api/service/DealSyncOperationApiService.java
View file @
9aa05ad2
...
...
@@ -117,6 +117,44 @@ public interface DealSyncOperationApiService {
* @param taskId
*/
public
void
cleanDiffrence
(
String
wxEnterpriseId
,
String
taskId
);
/**
* 创建企业微信好友刷新任务
* @param wxEnterpriseId
* @param taskName
* @param staffId
* @param desc
* @return
*/
public
String
createWxFriendTask
(
String
wxEnterpriseId
,
String
taskName
,
String
staffId
,
String
desc
);
/**
* 处理需要处理的导购
* @param taskId
* @param wxEnterpriseId
*/
public
void
dealWxFriendClerk
(
String
taskId
,
String
wxEnterpriseId
);
/**
* 创建企业微信好友刷新任务
* @param wxEnterpriseId
* @param taskName
* @param staffId
* @param desc
* @return
*/
public
String
createWxFriendSingleTask
(
String
wxEnterpriseId
,
String
taskName
,
String
staffId
,
String
staffName
);
/**
* 单个导购刷新
* @param taskId
* @param wxUserId
* @param staffId
* @param wxEnterpriseId
*/
public
void
dealWxFriendClerkSingle
(
String
taskId
,
String
wxUserId
,
String
staffId
,
String
wxEnterpriseId
);
/**
* 定时
* @param res
*/
public
void
quartWxFriendClerk
(
String
res
);
void
test
(
String
wxEnterpriseId
,
String
taskId
);
}
haoban-manage3-api/src/main/java/com/gic/haoban/manage/api/service/MemberUnionidRelatedApiService.java
View file @
9aa05ad2
...
...
@@ -7,6 +7,7 @@ import com.gic.api.base.commons.JSONResponse;
import
com.gic.api.base.commons.Page
;
import
com.gic.haoban.base.api.common.BasePageInfo
;
import
com.gic.haoban.manage.api.dto.ExternalClerkRelatedDTO
;
import
com.gic.haoban.manage.api.dto.ExternalUserDTO
;
import
com.gic.haoban.manage.api.dto.MemberStoreDTO
;
import
com.gic.haoban.manage.api.dto.MemberUnionidRelatedDTO
;
...
...
@@ -44,5 +45,17 @@ public interface MemberUnionidRelatedApiService {
String
addMemberUnionidRelatedNew
(
MemberUnionidRelatedDTO
dto
);
void
mqFreshWxFrend
(
String
res
);
void
cleanNoExsitFriend
(
String
wxEnterpriseId
,
String
wxUserId
,
String
resWes
);
List
<
String
>
listSelfExterialList
(
String
wxEnterpriseId
,
String
wxUserId
);
List
<
String
>
listExterialList
(
String
wxEnterpriseId
,
String
wxUserId
);
ExternalUserDTO
getCorpSelfExternalUseridInfo
(
String
wxEnterpriseId
,
String
wxUserId
,
String
externalUserId
);
String
addExternal
(
ExternalUserDTO
dto
);
ExternalUserDTO
getExternalUseridInfo
(
String
wxEnterpriseId
,
String
wxUserId
,
String
externalUserId
);
}
haoban-manage3-service/pom.xml
View file @
9aa05ad2
...
...
@@ -142,6 +142,11 @@
<artifactId>
gic-binlog-base
</artifactId>
<version>
1.0-SNAPSHOT
</version>
</dependency>
<dependency>
<groupId>
cn.hutool
</groupId>
<artifactId>
hutool-all
</artifactId>
<version>
5.5.1
</version>
</dependency>
</dependencies>
<build>
...
...
haoban-manage3-service/src/main/java/com/gic/haoban/manage/service/dao/mapper/PreDealLogMapper.java
View file @
9aa05ad2
...
...
@@ -171,6 +171,30 @@ public interface PreDealLogMapper {
* @return
*/
public
String
getRootDataIdByWxEnterpriseIdAndTaskId
(
@Param
(
"wxEnterpriseId"
)
String
wxEnterpriseId
,
@Param
(
"taskId"
)
String
taskId
);
/**
* 更新状态
* @param taskId
* @param dataId
* @param status
* @param reason
* @param dataContent
* @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 pDataId
* @return
*/
int
countFailStaffTaskByTaskIdAndPDataId
(
@Param
(
"taskId"
)
String
taskId
,
@Param
(
"pDataId"
)
String
pDataId
);
/**
* 根据父id获取
* @param taskId
* @param wxUserId
* @return
*/
List
<
TabHaobanPreDealLog
>
listByPDataIdAndTaskId
(
@Param
(
"taskId"
)
String
taskId
,
@Param
(
"pDataId"
)
String
wxUserId
);
...
...
haoban-manage3-service/src/main/java/com/gic/haoban/manage/service/dao/mapper/SyncTaskMapper.java
View file @
9aa05ad2
...
...
@@ -2,6 +2,7 @@ package com.gic.haoban.manage.service.dao.mapper;
import
com.gic.haoban.manage.service.entity.TabHaobanSyncTask
;
import
org.apache.ibatis.annotations.Mapper
;
import
org.apache.ibatis.annotations.Param
;
import
java.util.List
;
...
...
@@ -34,4 +35,6 @@ public interface SyncTaskMapper {
/**
*/
List
<
TabHaobanSyncTask
>
listPageByWxEid
(
String
wxEnterpriseId
);
List
<
TabHaobanSyncTask
>
listTaskByType
(
@Param
(
"taskType"
)
int
taskType
);
}
\ No newline at end of file
haoban-manage3-service/src/main/java/com/gic/haoban/manage/service/dao/mapper/TabHaobanClerkMainStoreRelatedMapper.java
View file @
9aa05ad2
package
com
.
gic
.
haoban
.
manage
.
service
.
dao
.
mapper
;
import
java.util.List
;
import
org.apache.ibatis.annotations.Param
;
import
com.gic.haoban.manage.service.entity.TabHaobanClerkMainStoreRelated
;
...
...
@@ -18,4 +20,6 @@ public interface TabHaobanClerkMainStoreRelatedMapper {
int
updateByPrimaryKey
(
TabHaobanClerkMainStoreRelated
record
);
TabHaobanClerkMainStoreRelated
selectByWxEnterpriseIdAndStoreId
(
@Param
(
"staffId"
)
String
staffId
,
@Param
(
"wxEnterpriseId"
)
String
wxEnterpriseId
);
List
<
TabHaobanClerkMainStoreRelated
>
listByWxEnterpriseId
(
@Param
(
"wxEnterpriseId"
)
String
wxEnterpriseId
);
}
\ No newline at end of file
haoban-manage3-service/src/main/java/com/gic/haoban/manage/service/dao/mapper/TabHaobanMemberClerkChatConfigMapper.java
View file @
9aa05ad2
package
com
.
gic
.
haoban
.
manage
.
service
.
dao
.
mapper
;
import
com.gic.haoban.manage.service.entity.MemberClerkChatConfig
;
import
com.gic.haoban.manage.service.entity.TabHaobanStaffClerkRelation
;
import
java.util.List
;
import
org.apache.ibatis.annotations.Mapper
;
import
org.apache.ibatis.annotations.Param
;
...
...
@@ -33,4 +37,5 @@ public interface TabHaobanMemberClerkChatConfigMapper {
/**
*/
MemberClerkChatConfig
getChatByMemberIdStaffId
(
@Param
(
"memberId"
)
String
memberId
,
@Param
(
"staffId"
)
String
staffId
);
}
\ No newline at end of file
haoban-manage3-service/src/main/java/com/gic/haoban/manage/service/dao/mapper/TabHaobanStaffClerkRelationMapper.java
View file @
9aa05ad2
...
...
@@ -83,4 +83,6 @@ public interface TabHaobanStaffClerkRelationMapper {
List
<
TabHaobanStaffClerkRelation
>
lisByStaffId
(
@Param
(
"wxEnterpriseId"
)
String
wxEnterpriseId
,
@Param
(
"staffId"
)
String
staffId
);
TabHaobanStaffClerkRelation
getByCodeAndStoreId
(
@Param
(
"clerkCode"
)
String
clerkCode
,
@Param
(
"storeId"
)
String
storeId
);
List
<
TabHaobanStaffClerkRelation
>
listByWxEnterpriseId
(
@Param
(
"wxEnterpriseId"
)
String
wxEnterpriseId
);
}
\ No newline at end of file
haoban-manage3-service/src/main/java/com/gic/haoban/manage/service/pojo/ExternalUserPojo.java
View file @
9aa05ad2
...
...
@@ -13,6 +13,8 @@ public class ExternalUserPojo implements Serializable{
private
String
avatar
;
private
String
addCreateTime
;
private
String
externalUserId
;
public
String
getWxEnterpriseId
()
{
return
wxEnterpriseId
;
...
...
@@ -53,6 +55,14 @@ public class ExternalUserPojo implements Serializable{
public
void
setAddCreateTime
(
String
addCreateTime
)
{
this
.
addCreateTime
=
addCreateTime
;
}
public
String
getExternalUserId
()
{
return
externalUserId
;
}
public
void
setExternalUserId
(
String
externalUserId
)
{
this
.
externalUserId
=
externalUserId
;
}
...
...
haoban-manage3-service/src/main/java/com/gic/haoban/manage/service/service/ClerkMainStoreRelatedService.java
View file @
9aa05ad2
package
com
.
gic
.
haoban
.
manage
.
service
.
service
;
import
java.util.List
;
import
com.gic.haoban.manage.service.entity.TabHaobanClerkMainStoreRelated
;
public
interface
ClerkMainStoreRelatedService
{
...
...
@@ -10,4 +12,6 @@ public interface ClerkMainStoreRelatedService {
void
update
(
TabHaobanClerkMainStoreRelated
r
);
List
<
TabHaobanClerkMainStoreRelated
>
listByWxEnterpriseId
(
String
wxEnterpriseId
);
}
haoban-manage3-service/src/main/java/com/gic/haoban/manage/service/service/PreDealService.java
View file @
9aa05ad2
...
...
@@ -159,5 +159,28 @@ public interface PreDealService {
* @return
*/
public
String
getRootDataIdByWxEnterpriseIdAndTaskId
(
String
wxEnterpriseId
,
String
taskId
);
/**
* 更新好友成功状态
* @param taskId
* @param dataId
* @param status
* @param reason
* @param dataContent
*/
public
boolean
updateFriendStatusByDataId
(
String
taskId
,
String
dataId
,
int
status
,
String
reason
,
String
dataContent
);
/**
* 根据父任务判断子任务是否全部完成
* @param taskId
* @param pDataId
* @return
*/
public
boolean
checkStaffTaskByTaskIdAndPDataId
(
String
taskId
,
String
pDataId
);
/**
* 根据父id获取
* @param taskId
* @param wxUserId
* @return
*/
public
List
<
TabHaobanPreDealLog
>
listByPDataIdAndTaskId
(
String
taskId
,
String
wxUserId
);
}
haoban-manage3-service/src/main/java/com/gic/haoban/manage/service/service/StaffClerkRelationService.java
View file @
9aa05ad2
...
...
@@ -6,6 +6,8 @@ import java.util.Set;
import
com.gic.haoban.base.api.common.ServiceResponse
;
import
com.gic.haoban.manage.api.dto.StaffClerkRelationDTO
;
import
com.gic.haoban.manage.service.entity.MemberClerkChatConfig
;
import
com.gic.haoban.manage.service.entity.TabHaobanStaffClerkRelation
;
import
org.apache.ibatis.annotations.Param
;
public
interface
StaffClerkRelationService
{
...
...
@@ -72,6 +74,12 @@ public interface StaffClerkRelationService {
* @return
*/
public
MemberClerkChatConfig
getChatConfig
(
String
staffId
,
String
memberId
);
/**
* 根据企业查询
* @param wxEnterpriseId
* @return
*/
List
<
TabHaobanStaffClerkRelation
>
listByWxEnterpriseId
(
String
wxEnterpriseId
);
}
haoban-manage3-service/src/main/java/com/gic/haoban/manage/service/service/SyncTaskService.java
View file @
9aa05ad2
package
com
.
gic
.
haoban
.
manage
.
service
.
service
;
import
java.util.List
;
import
com.gic.api.base.commons.Page
;
import
com.gic.haoban.base.api.common.BasePageInfo
;
import
com.gic.haoban.manage.api.dto.SyncTaskDTO
;
...
...
@@ -42,4 +44,10 @@ public interface SyncTaskService {
* @return
*/
public
Page
<
SyncTaskDTO
>
listTaskPage
(
String
wxEnterpriseId
,
BasePageInfo
pageInfo
);
/**
* 获取列表
* @param taskType
* @return
*/
public
List
<
TabHaobanSyncTask
>
listTaskByType
(
int
taskType
);
}
haoban-manage3-service/src/main/java/com/gic/haoban/manage/service/service/impl/ClerkMainStoreRelatedServiceImpl.java
View file @
9aa05ad2
package
com
.
gic
.
haoban
.
manage
.
service
.
service
.
impl
;
import
java.util.Date
;
import
java.util.List
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Service
;
...
...
@@ -42,4 +43,9 @@ public class ClerkMainStoreRelatedServiceImpl implements ClerkMainStoreRelatedSe
mapper
.
updateByPrimaryKeySelective
(
r
);
}
@Override
public
List
<
TabHaobanClerkMainStoreRelated
>
listByWxEnterpriseId
(
String
wxEnterpriseId
)
{
return
mapper
.
listByWxEnterpriseId
(
wxEnterpriseId
);
}
}
haoban-manage3-service/src/main/java/com/gic/haoban/manage/service/service/impl/PreDealServiceImpl.java
View file @
9aa05ad2
...
...
@@ -165,4 +165,21 @@ public class PreDealServiceImpl implements PreDealService {
return
preDealLogMapper
.
getRootDataIdByWxEnterpriseIdAndTaskId
(
wxEnterpriseId
,
taskId
);
}
@Override
public
boolean
updateFriendStatusByDataId
(
String
taskId
,
String
dataId
,
int
status
,
String
reason
,
String
dataContent
)
{
int
i
=
preDealLogMapper
.
updateFriendStatusByDataId
(
taskId
,
dataId
,
status
,
reason
,
dataContent
);
return
i
>=
0
;
}
@Override
public
boolean
checkStaffTaskByTaskIdAndPDataId
(
String
taskId
,
String
pDataId
)
{
return
preDealLogMapper
.
countFailStaffTaskByTaskIdAndPDataId
(
taskId
,
pDataId
)
==
0
;
}
@Override
public
List
<
TabHaobanPreDealLog
>
listByPDataIdAndTaskId
(
String
taskId
,
String
wxUserId
)
{
return
preDealLogMapper
.
listByPDataIdAndTaskId
(
taskId
,
wxUserId
);
}
}
haoban-manage3-service/src/main/java/com/gic/haoban/manage/service/service/impl/StaffClerkRelationServiceImpl.java
View file @
9aa05ad2
...
...
@@ -224,4 +224,9 @@ public class StaffClerkRelationServiceImpl implements StaffClerkRelationService
MemberClerkChatConfig
chatConfig
=
memberClerkChatConfigMapper
.
getChatByMemberIdStaffId
(
memberId
,
staffId
);
return
chatConfig
;
}
@Override
public
List
<
TabHaobanStaffClerkRelation
>
listByWxEnterpriseId
(
String
wxEnterpriseId
)
{
return
mapper
.
listByWxEnterpriseId
(
wxEnterpriseId
);
}
}
haoban-manage3-service/src/main/java/com/gic/haoban/manage/service/service/impl/SyncTaskServiceImpl.java
View file @
9aa05ad2
...
...
@@ -58,4 +58,10 @@ public class SyncTaskServiceImpl implements SyncTaskService {
Page
<
SyncTaskDTO
>
page
=
PageUtil
.
changePageHelperToCurrentPage
(
new
PageInfo
<>(
list
),
SyncTaskDTO
.
class
);
return
page
;
}
@Override
public
List
<
TabHaobanSyncTask
>
listTaskByType
(
int
taskType
)
{
List
<
TabHaobanSyncTask
>
list
=
syncTaskMapper
.
listTaskByType
(
taskType
);
return
list
;
}
}
haoban-manage3-service/src/main/java/com/gic/haoban/manage/service/service/out/impl/DealSyncOperationApiServiceImpl.java
View file @
9aa05ad2
This diff is collapsed.
Click to expand it.
haoban-manage3-service/src/main/java/com/gic/haoban/manage/service/service/out/impl/MemberUnionidRelatedApiServiceImpl.java
View file @
9aa05ad2
...
...
@@ -743,4 +743,221 @@ public class MemberUnionidRelatedApiServiceImpl implements MemberUnionidRelatedA
String
wxEnterpriseId
)
{
return
EntityUtil
.
changeEntityListByJSON
(
MemberUnionidRelatedDTO
.
class
,
memberUnionidRelatedMapper
.
getByWxUserIdListAndWxEnterpriseId
(
userIdList
,
wxEnterpriseId
));
}
@Override
public
void
cleanNoExsitFriend
(
String
wxEnterpriseId
,
String
wxUserId
,
String
wxRes
)
{
log
.
info
(
"【清除不存在的好友】wxEnterpriseId={},wxUserId={}"
,
wxEnterpriseId
,
wxUserId
);
WxEnterpriseDTO
enterprise
=
wxEnterpriseService
.
selectById
(
wxEnterpriseId
);
//String wxRes = qywxUserApiService.listExternalUserid(enterprise.getCorpid(), config.getWxSuiteid(), wxUserId);
List
<
MemberUnionidRelatedDTO
>
list
=
this
.
getByWxUserIdAndWxEnterpriseId
(
wxUserId
,
wxEnterpriseId
);
List
<
String
>
externalUserIdList
=
list
.
stream
().
map
(
external
->
external
.
getExternalUserid
())
.
collect
(
Collectors
.
toList
());
if
(
StringUtils
.
isBlank
(
wxRes
)){
log
.
info
(
"【清除不存在的好友不存在】wxEnterpriseId={},wxUserId={}"
,
wxEnterpriseId
,
wxUserId
);
return
;
}
JSONArray
externalArr
=
JSON
.
parseArray
(
wxRes
);
for
(
String
externalUserId
:
externalUserIdList
)
{
if
(!
externalArr
.
contains
(
externalUserId
)){
//删除成员和外部联系人关系
MemberUnionidRelatedDTO
dto
=
new
MemberUnionidRelatedDTO
();
dto
.
setExternalUserid
(
externalUserId
);
dto
.
setWxUserId
(
wxUserId
);
memberUnionRelatedService
.
delMemberUnionidRelated
(
dto
);
//删除导购和外部联系人关系
externalClerkRelatedService
.
delByUserIdAndExternalUserId
(
dto
);
}
}
}
@Override
public
List
<
String
>
listSelfExterialList
(
String
wxEnterpriseId
,
String
wxUserId
)
{
try
{
log
.
info
(
"【查询自建应用好友】wxEnterpriseId={},wxUserId={}"
,
wxEnterpriseId
,
wxUserId
);
WxEnterpriseDTO
enterprise
=
wxEnterpriseService
.
selectById
(
wxEnterpriseId
);
List
<
String
>
list
=
new
ArrayList
<>();
SecretSettingDTO
secretSetting
=
secretSettingService
.
getSecretSetting
(
wxEnterpriseId
,
SecretTypeEnum
.
CONTACT_CUSTOMER
.
getVal
());
if
(
null
==
secretSetting
||
secretSetting
.
getCheckFlag
()==
0
)
{
log
.
info
(
"没有配置客户联系secret:{}"
,
wxEnterpriseId
);
return
list
;
}
String
res
=
qywxUserApiService
.
listSelfExternalUserid
(
enterprise
.
getCorpid
(),
secretSetting
.
getSecretVal
(),
wxUserId
);
log
.
info
(
"【查询自建应用】res={}"
,
res
);
if
(
StringUtils
.
isBlank
(
res
)){
return
list
;
}
JSONArray
jsonArr
=
JSON
.
parseArray
(
res
);
if
(
jsonArr
.
size
()
==
0
)
{
return
list
;
}
for
(
Object
object
:
jsonArr
)
{
list
.
add
(
object
.
toString
());
}
return
list
;
}
catch
(
Exception
e
)
{
log
.
info
(
"错误={}"
,
e
);
}
return
null
;
}
@Override
public
List
<
String
>
listExterialList
(
String
wxEnterpriseId
,
String
wxUserId
)
{
log
.
info
(
"【获取第三方应用好友】wxEnterpriseId={},wxUserId={}"
,
wxEnterpriseId
,
wxUserId
);
WxEnterpriseDTO
enterprise
=
wxEnterpriseService
.
selectById
(
wxEnterpriseId
);
// String wxRes = qywxUserApiService.listExternalUserid(enterprise.getCorpid(), "wwb3ef71aa8c6d9c06", wxUserId);
String
wxRes
=
qywxUserApiService
.
listExternalUserid
(
enterprise
.
getCorpid
(),
config
.
getWxSuiteid
(),
wxUserId
);
List
<
String
>
list
=
new
ArrayList
<>();
log
.
info
(
"【查询第三方应用】res={}"
,
wxRes
);
if
(
StringUtils
.
isBlank
(
wxRes
)){
return
list
;
}
JSONArray
jsonArr
=
JSON
.
parseArray
(
wxRes
);
if
(
jsonArr
.
size
()
==
0
)
{
return
list
;
}
for
(
Object
object
:
jsonArr
)
{
list
.
add
(
object
.
toString
());
}
return
list
;
}
@Override
public
ExternalUserDTO
getCorpSelfExternalUseridInfo
(
String
wxEnterpriseId
,
String
wxUserId
,
String
externalUserId
)
{
WxEnterpriseDTO
wxEnterprise
=
wxEnterpriseService
.
selectById
(
wxEnterpriseId
);
if
(
wxEnterprise
==
null
){
log
.
info
(
"企业不存在"
);
return
null
;
}
SecretSettingDTO
secretSetting
=
secretSettingService
.
getSecretSetting
(
wxEnterpriseId
,
SecretTypeEnum
.
CONTACT_CUSTOMER
.
getVal
());
if
(
null
==
secretSetting
)
{
log
.
info
(
"没有配置secret"
);
return
null
;
}
String
unionIdJson
=
qywxUserApiService
.
getCorpSelfExternalUseridInfo
(
wxEnterprise
.
getCorpid
(),
secretSetting
.
getSecretVal
(),
externalUserId
);
if
(
StringUtils
.
isBlank
(
unionIdJson
)){
log
.
info
(
"好友不存在"
);
return
null
;
}
ExternalUserPojo
pojo
=
getExternalUserPojo
(
unionIdJson
,
wxUserId
,
wxEnterpriseId
);
return
EntityUtil
.
changeEntityByJSON
(
ExternalUserDTO
.
class
,
pojo
);
}
@Override
public
ExternalUserDTO
getExternalUseridInfo
(
String
wxEnterpriseId
,
String
wxUserId
,
String
externalUserId
)
{
WxEnterpriseDTO
wxEnterprise
=
wxEnterpriseService
.
selectById
(
wxEnterpriseId
);
if
(
wxEnterprise
==
null
){
log
.
info
(
"企业不存在"
);
return
null
;
}
// String uJ = qywxUserApiService.getExternalUseridInfo(wxEnterprise.getCorpid(), "wwb3ef71aa8c6d9c06", externalUserId);
String
uJ
=
qywxUserApiService
.
getExternalUseridInfo
(
wxEnterprise
.
getCorpid
(),
config
.
getWxSuiteid
(),
externalUserId
);
if
(
StringUtils
.
isBlank
(
uJ
)){
log
.
info
(
"好友不存在"
);
return
null
;
}
String
name
=
""
;
String
createTime
=
""
;
String
avatar
=
""
;
if
(
StringUtils
.
isNotBlank
(
uJ
)){
JSONObject
jo
=
JSON
.
parseObject
(
uJ
);
String
external_contact
=
jo
.
getString
(
"external_contact"
);
String
uj_follow_user
=
jo
.
getString
(
"follow_user"
);
JSONObject
jt
=
null
;
if
(
StringUtils
.
isNotBlank
(
external_contact
)){
jt
=
JSON
.
parseObject
(
external_contact
);
name
=
EmojiFilterUtil
.
filterEmojiLast
(
jt
.
getString
(
"name"
),
true
);
avatar
=
jt
.
getString
(
"avatar"
);
}
if
(
StringUtils
.
isNotBlank
(
uj_follow_user
)){
JSONArray
j
=
JSON
.
parseArray
(
uj_follow_user
);
String
uj_userId
=
""
;
for
(
Object
object
:
j
)
{
String
followJson
=
JSON
.
toJSONString
(
object
);
JSONObject
follow
=
JSON
.
parseObject
(
followJson
);
uj_userId
=
follow
.
getString
(
"userid"
);
if
(
uj_userId
.
equals
(
wxUserId
)){
if
(
jt
!=
null
){
externalUserId
=
jt
.
getString
(
"external_userid"
);
createTime
=
follow
.
getString
(
"createtime"
);
break
;
}
}
}
}
}
ExternalUserPojo
pojo
=
new
ExternalUserPojo
();
pojo
.
setExternalUserId
(
externalUserId
);
pojo
.
setName
(
name
);
pojo
.
setAddCreateTime
(
createTime
);
pojo
.
setWxEnterpriseId
(
wxEnterpriseId
);
pojo
.
setAvatar
(
avatar
);
return
EntityUtil
.
changeEntityByJSON
(
ExternalUserDTO
.
class
,
pojo
);
}
@Override
public
String
addExternal
(
ExternalUserDTO
dto
)
{
String
wxUserId
=
dto
.
getWxUserId
();
String
wxEnterpriseId
=
dto
.
getWxEnterpriseId
();
String
name
=
StringUtils
.
isBlank
(
dto
.
getName
())?
"--"
:
dto
.
getName
();
String
createTime
=
dto
.
getAddCreateTime
();
String
unionId
=
dto
.
getUnionId
();
String
externalUserId
=
dto
.
getExternalUserId
();
String
memberId
=
dto
.
getMemberId
();
String
storeId
=
dto
.
getStoreId
();
String
enterpriseId
=
dto
.
getEnterpriseId
();
String
staffId
=
dto
.
getStaffId
();
String
avatar
=
dto
.
getAvatar
();
String
clerkId
=
dto
.
getClerkId
();
if
(
StringUtils
.
isAnyBlank
(
wxUserId
,
wxEnterpriseId
,
name
,
createTime
,
unionId
,
externalUserId
,
memberId
,
storeId
,
enterpriseId
,
staffId
,
clerkId
)){
log
.
info
(
"【新增外部联系人】wxUserId={},wxEnterpriseId={},name={},createTime={},unionId ={},externalUserId ={},memberId ={},storeId ={},enterpriseId ={},staffId={},clerkId={}"
+
""
,
wxUserId
,
wxEnterpriseId
,
name
,
createTime
,
unionId
,
externalUserId
,
memberId
,
storeId
,
enterpriseId
,
staffId
,
clerkId
);
return
"参数不对"
;
}
MemberUnionidRelatedDTO
exsitDTO
=
memberUnionRelatedService
.
getByParams
(
wxUserId
,
wxEnterpriseId
,
name
,
createTime
);
String
uuid
=
""
;
if
(
exsitDTO
==
null
){
exsitDTO
=
new
MemberUnionidRelatedDTO
();
exsitDTO
.
setAvatar
(
avatar
);
exsitDTO
.
setExternalUserid
(
externalUserId
);
exsitDTO
.
setAddCreateTime
(
createTime
);
exsitDTO
.
setEnterpriseId
(
enterpriseId
);
exsitDTO
.
setExternalName
(
name
);
exsitDTO
.
setExternalUserid
(
externalUserId
);
exsitDTO
.
setWxEnterpriseId
(
wxEnterpriseId
);
exsitDTO
.
setWxUserId
(
wxUserId
);
exsitDTO
.
setUnionid
(
unionId
);
uuid
=
memberUnionRelatedService
.
addMemberUnionidRelated
(
exsitDTO
);
}
else
{
uuid
=
exsitDTO
.
getMemberUnionidRelatedId
();
exsitDTO
.
setAvatar
(
avatar
);
exsitDTO
.
setExternalUserid
(
externalUserId
);
memberUnionRelatedService
.
update
(
exsitDTO
);
}
TabHaobanExternalClerkRelated
external
=
externalClerkRelatedService
.
getByParams
(
wxUserId
,
wxEnterpriseId
,
name
,
createTime
);
if
(
external
==
null
){
TabHaobanExternalClerkRelated
related
=
new
TabHaobanExternalClerkRelated
();
related
.
setAddCreateTime
(
createTime
);
related
.
setClerkId
(
clerkId
);
related
.
setEnterpriseId
(
enterpriseId
);
related
.
setExternalName
(
name
);
related
.
setExternalUserId
(
externalUserId
);
related
.
setStaffId
(
staffId
);
related
.
setMemberUnionidRelatedId
(
uuid
);
related
.
setStoreId
(
storeId
);
related
.
setUnionid
(
unionId
);
related
.
setWxEnterpriseId
(
wxEnterpriseId
);
related
.
setWxUserId
(
wxUserId
);
related
.
setMemberId
(
memberId
);
externalClerkRelatedService
.
insert
(
related
);
}
else
{
external
.
setMemberId
(
memberId
);
external
.
setMemberUnionidRelatedId
(
uuid
);
external
.
setExternalUserId
(
externalUserId
);
external
.
setUnionid
(
unionId
);
external
.
setStoreId
(
storeId
);
external
.
setEnterpriseId
(
enterpriseId
);
external
.
setClerkId
(
clerkId
);
externalClerkRelatedService
.
update
(
external
);
}
return
""
;
}
}
haoban-manage3-service/src/main/java/com/gic/haoban/manage/service/task/FriendClerkSyncOperation.java
0 → 100644
View file @
9aa05ad2
package
com
.
gic
.
haoban
.
manage
.
service
.
task
;
import
java.util.HashSet
;
import
java.util.List
;
import
java.util.Set
;
import
java.util.stream.Collectors
;
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
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.DealSyncOperationApiService
;
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.mq.sdk.GicMQClient
;
import
com.gic.redis.data.util.RedisUtil
;
@Service
public
class
FriendClerkSyncOperation
implements
BaseSyncOperation
{
private
static
final
Logger
logger
=
LoggerFactory
.
getLogger
(
FriendClerkSyncOperation
.
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
();
List
<
String
>
selfUserIdList
=
memberUnionidRelatedApiService
.
listSelfExterialList
(
wxEnterpriseId
,
wxUserId
);
logger
.
info
(
"selfUserIdList={}"
,
selfUserIdList
.
size
());
List
<
String
>
userIdList
=
memberUnionidRelatedApiService
.
listExterialList
(
wxEnterpriseId
,
wxUserId
);
memberUnionidRelatedApiService
.
cleanNoExsitFriend
(
wxEnterpriseId
,
wxUserId
,
JSON
.
toJSONString
(
userIdList
));
logger
.
info
(
"userIdList={}"
,
userIdList
.
size
());
if
(
CollectionUtils
.
isNotEmpty
(
selfUserIdList
)){
List
<
TabHaobanPreDealLog
>
dealLogList
=
selfUserIdList
.
stream
().
map
(
externalUserId
->
{
TabHaobanPreDealLog
dealLog
=
new
TabHaobanPreDealLog
();
dealLog
.
setDataId
(
externalUserId
+
"-"
+
wxUserId
);
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
);
HashSet
<
String
>
hashSet
=
(
HashSet
<
String
>)
dealLogList
.
stream
().
map
(
TabHaobanPreDealLog:
:
getDataId
).
collect
(
Collectors
.
toSet
());
dealDepartmentToMq
(
dataPre
.
getTaskId
(),
hashSet
,
SyncTaskStatusEnum
.
self_friend_sync
);
}
if
(
CollectionUtils
.
isNotEmpty
(
userIdList
)){
List
<
TabHaobanPreDealLog
>
dealLogList
=
userIdList
.
stream
().
map
(
externalUserId
->
{
TabHaobanPreDealLog
dealLog
=
new
TabHaobanPreDealLog
();
dealLog
.
setDataId
(
externalUserId
+
"-"
+
wxUserId
);
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
(
dealLogList
);
HashSet
<
String
>
hashSet
=
(
HashSet
<
String
>)
dealLogList
.
stream
().
map
(
TabHaobanPreDealLog:
:
getDataId
).
collect
(
Collectors
.
toSet
());
dealDepartmentToMq
(
dataPre
.
getTaskId
(),
hashSet
,
SyncTaskStatusEnum
.
friend_sync
);
}
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
logger
.
info
(
"同步失败:{},{}"
,
JSONObject
.
toJSONString
(
dataPre
),
e
);
reason
=
"成员好友处理异常"
;
dealFlag
=
false
;
}
finally
{
if
(!
dealFlag
)
{
dealException
(
dealParamMqDTO
.
getTaskId
(),
dealParamMqDTO
.
getData
(),
dataPre
.
getEnterpriseId
(),
reason
);
}
else
{
dealSuccess
(
dealParamMqDTO
.
getTaskId
(),
dealParamMqDTO
.
getData
(),
dataPre
.
getEnterpriseId
(),
dataPre
.
getWxEnterpriseId
());
}
// checkDepartmentTask(taskId);
}
}
@Override
public
void
dealException
(
String
taskId
,
String
dataId
,
String
enterpriseId
,
String
reason
)
{
preDealService
.
updateStatusByDataId
(
taskId
,
dataId
,
PreDealStatusEnum
.
exception
.
getVal
(),
reason
);
}
@Override
public
void
dealSuccess
(
String
taskId
,
String
dataId
,
String
enterpriseId
,
String
wxEnterpriseId
)
{
preDealService
.
updateStatusByDataId
(
taskId
,
dataId
,
PreDealStatusEnum
.
computed
.
getVal
(),
"成功"
);
}
@Override
public
void
checkDepartmentTask
(
String
taskId
)
{
String
key
=
"sync_wx_lock_"
;
boolean
b
=
preDealService
.
checkTask
(
taskId
,
PreDealTypeEnum
.
friend_clerk
.
getVal
());
if
(!
b
)
{
return
;
}
logger
.
info
(
"好友同步成功:{}"
,
taskId
);
TabHaobanSyncTask
syncTask
=
syncTaskService
.
getSyncTask
(
taskId
);
//同步成功 进入门店处理
syncTaskService
.
updateTaskStatus
(
taskId
,
SyncTaskStatusEnum
.
compute
.
getVal
());
RedisUtil
.
delCache
(
key
+
syncTask
.
getWxEnterpriseId
());
}
/**
* 放入mq处理部门数据
*
* @param taskId
* @param dealList
*/
private
void
dealDepartmentToMq
(
String
taskId
,
Set
<
String
>
dealList
,
SyncTaskStatusEnum
syncTaskStatusEnum
)
{
//预处理分组任务
syncTaskService
.
updateTaskStatus
(
taskId
,
syncTaskStatusEnum
.
getVal
());
dealList
.
forEach
(
relationId
->
{
DealParamMqDTO
dealParamMqDTO
=
new
DealParamMqDTO
();
dealParamMqDTO
.
setTaskId
(
taskId
);
dealParamMqDTO
.
setData
(
relationId
);
dealParamMqDTO
.
setType
(
syncTaskStatusEnum
.
getVal
());
GicMQClient
clientInstance
=
GICMQClientUtil
.
getClientInstance
();
try
{
clientInstance
.
sendMessage
(
"departmentSyncDealMq"
,
JSONObject
.
toJSONString
(
dealParamMqDTO
));
}
catch
(
Exception
e
)
{
logger
.
info
(
"发送失败:{},{}"
,
taskId
,
relationId
);
e
.
printStackTrace
();
}
});
}
}
haoban-manage3-service/src/main/java/com/gic/haoban/manage/service/task/FriendMergeSyncOperation.java
0 → 100644
View file @
9aa05ad2
package
com
.
gic
.
haoban
.
manage
.
service
.
task
;
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
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.haoban.manage.api.dto.ClerkMainStoreRelatedDTO
;
import
com.gic.haoban.manage.api.dto.DealParamMqDTO
;
import
com.gic.haoban.manage.api.dto.ExternalUserDTO
;
import
com.gic.haoban.manage.api.dto.StaffClerkRelationDTO
;
import
com.gic.haoban.manage.api.dto.StaffDTO
;
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.entity.TabHaobanSyncTask
;
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.member.api.dto.MemberDTO
;
import
com.gic.member.api.service.MemberOpenCardBusinessService
;
import
com.gic.redis.data.util.RedisUtil
;
@Service
public
class
FriendMergeSyncOperation
implements
BaseSyncOperation
{
private
static
final
Logger
logger
=
LoggerFactory
.
getLogger
(
FriendMergeSyncOperation
.
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
;
@Override
public
void
dealSingleByMq
(
DealParamMqDTO
dealParamMqDTO
,
TabHaobanPreDealLog
dataPre
)
{
String
reason
=
""
;
boolean
dealFlag
=
true
;
String
wxUserId
=
dataPre
.
getpDataId
();
String
wxEnterpriseId
=
dataPre
.
getWxEnterpriseId
();
String
taskId
=
dealParamMqDTO
.
getTaskId
();
String
key
=
dataPre
.
getDataId
();
try
{
String
dataContent
=
dataPre
.
getDataContent
();
ExternalUserDTO
pojo
=
JSON
.
parseObject
(
dataContent
,
ExternalUserDTO
.
class
);
StaffDTO
staff
=
staffApiService
.
selectByUserIdAndEnterpriseId
(
wxUserId
,
wxEnterpriseId
);
if
(
staff
==
null
){
preDealService
.
updateStatusByDataId
(
taskId
,
key
,
PreDealStatusEnum
.
exception
.
getVal
(),
"成员不存在"
);
checkDepartmentTask
(
taskId
);
return
;
}
ClerkMainStoreRelatedDTO
mainStore
=
clerkMainStoreRelatedApiService
.
getWxEnterpriseIdAndStaffId
(
wxEnterpriseId
,
staff
.
getStaffId
());
if
(
mainStore
==
null
){
preDealService
.
updateStatusByDataId
(
taskId
,
key
,
PreDealStatusEnum
.
exception
.
getVal
(),
"主门店不存在"
);
checkDepartmentTask
(
taskId
);
return
;
}
StaffClerkRelationDTO
staffClerkRelationDTO
=
staffClerkRelationService
.
getOneBindByStoreId
(
staff
.
getStaffId
(),
mainStore
.
getStoreId
());
if
(
staffClerkRelationDTO
==
null
){
preDealService
.
updateStatusByDataId
(
taskId
,
key
,
PreDealStatusEnum
.
exception
.
getVal
(),
"未绑定导购"
);
checkDepartmentTask
(
taskId
);
return
;
}
if
(
pojo
==
null
){
dealException
(
taskId
,
key
,
null
,
"好友不存在"
);
checkDepartmentTask
(
taskId
);
return
;
}
pojo
.
setWxEnterpriseId
(
wxEnterpriseId
);
pojo
.
setEnterpriseId
(
staffClerkRelationDTO
.
getEnterpriseId
());
pojo
.
setStoreId
(
mainStore
.
getStoreId
());
pojo
.
setClerkId
(
staffClerkRelationDTO
.
getClerkId
());
pojo
.
setWxUserId
(
wxUserId
);
pojo
.
setStaffId
(
staffClerkRelationDTO
.
getStaffId
());
String
externalUserId
=
pojo
.
getExternalUserId
();
ExternalUserDTO
p
=
memberUnionidRelatedApiService
.
getExternalUseridInfo
(
wxEnterpriseId
,
wxUserId
,
externalUserId
);
if
(
p
==
null
){
dealException
(
taskId
,
key
,
null
,
"好友不存在"
);
checkDepartmentTask
(
taskId
);
return
;
}
pojo
.
setAvatar
(
p
.
getAvatar
());
//新增导购和外部联系人关系
String
clerkCode
=
staffClerkRelationDTO
.
getClerkCode
();
ClerkDTO
clerk
=
clerkService
.
getClerkByClerkCode
(
staffClerkRelationDTO
.
getEnterpriseId
(),
clerkCode
);
if
(
clerk
==
null
){
preDealService
.
updateStatusByDataId
(
taskId
,
key
,
PreDealStatusEnum
.
exception
.
getVal
(),
"导购不存在"
);
checkDepartmentTask
(
taskId
);
return
;
}
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
)){
preDealService
.
updateStatusByDataId
(
taskId
,
key
,
PreDealStatusEnum
.
exception
.
getVal
(),
"导购码不存在"
);
checkDepartmentTask
(
taskId
);
return
;
}
MemberDTO
member
=
null
;
if
(
clerk
!=
null
&&
StringUtils
.
isNotBlank
(
qrcodeParam
)&&
StringUtils
.
isNotBlank
(
pojo
.
getUnionId
())){
member
=
memberOpenCardBusinessService
.
getMemberByQywxChannelParam
(
staffClerkRelationDTO
.
getEnterpriseId
(),
pojo
.
getUnionId
(),
""
,
pojo
.
getName
(),
pojo
.
getAvatar
(),
qrcodeParam
);
}
if
(
member
==
null
){
preDealService
.
updateStatusByDataId
(
taskId
,
key
,
PreDealStatusEnum
.
exception
.
getVal
(),
"会员不存在"
);
checkDepartmentTask
(
taskId
);
return
;
}
pojo
.
setMemberId
(
member
.
getMemberId
());
String
res
=
memberUnionidRelatedApiService
.
addExternal
(
pojo
);
if
(
StringUtils
.
isBlank
(
res
)){
dealSuccess
(
dealParamMqDTO
.
getTaskId
(),
dataPre
.
getDataId
(),
null
,
null
);
}
else
{
dealException
(
dealParamMqDTO
.
getTaskId
(),
dealParamMqDTO
.
getData
(),
dataPre
.
getEnterpriseId
(),
"好友不存在"
);
}
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
logger
.
info
(
"同步失败:{},{}"
,
JSONObject
.
toJSONString
(
dataPre
),
e
);
reason
=
"合并处理异常"
;
dealFlag
=
false
;
}
finally
{
if
(!
dealFlag
)
{
dealException
(
dealParamMqDTO
.
getTaskId
(),
dealParamMqDTO
.
getData
(),
dataPre
.
getEnterpriseId
(),
reason
);
}
checkDepartmentTask
(
taskId
);
}
//
}
@Override
public
void
dealException
(
String
taskId
,
String
dataId
,
String
enterpriseId
,
String
reason
)
{
preDealService
.
updateStatusByDataId
(
taskId
,
dataId
,
PreDealStatusEnum
.
exception
.
getVal
(),
reason
);
}
@Override
public
void
dealSuccess
(
String
taskId
,
String
dataId
,
String
enterpriseId
,
String
wxEnterpriseId
)
{
preDealService
.
updateStatusByDataId
(
taskId
,
dataId
,
PreDealStatusEnum
.
computed
.
getVal
(),
"成功"
);
}
@Override
public
void
checkDepartmentTask
(
String
taskId
)
{
boolean
b
=
preDealService
.
checkTask
(
taskId
,
PreDealTypeEnum
.
friend_merge
.
getVal
());
if
(!
b
)
{
return
;
}
logger
.
info
(
"好友合并成功:{}"
,
taskId
);
int
errorCount
=
preDealService
.
countByTaskId
(
taskId
,
PreDealTypeEnum
.
friend_merge
.
getVal
(),
3
);
int
errorSelfCount
=
preDealService
.
countByTaskId
(
taskId
,
PreDealTypeEnum
.
self_friend
.
getVal
(),
3
);
int
errorFriendCount
=
preDealService
.
countByTaskId
(
taskId
,
PreDealTypeEnum
.
friend
.
getVal
(),
3
);
if
(
errorCount
>
0
||
errorFriendCount
>
0
||
errorSelfCount
>
0
){
syncTaskService
.
updateTaskStatus
(
taskId
,
SyncTaskStatusEnum
.
exception_compute
.
getVal
());
}
else
{
syncTaskService
.
updateTaskStatus
(
taskId
,
SyncTaskStatusEnum
.
compute
.
getVal
());
}
}
}
haoban-manage3-service/src/main/java/com/gic/haoban/manage/service/task/FriendSyncOperation.java
0 → 100644
View file @
9aa05ad2
package
com
.
gic
.
haoban
.
manage
.
service
.
task
;
import
java.util.ArrayList
;
import
java.util.HashMap
;
import
java.util.HashSet
;
import
java.util.List
;
import
java.util.Map
;
import
java.util.Set
;
import
java.util.stream.Collectors
;
import
org.apache.commons.collections.CollectionUtils
;
import
org.apache.commons.lang3.StringUtils
;
import
org.slf4j.Logger
;
import
org.slf4j.LoggerFactory
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Service
;
import
com.alibaba.fastjson.JSON
;
import
com.alibaba.fastjson.JSONObject
;
import
com.gic.commons.util.GICMQClientUtil
;
import
com.gic.haoban.manage.api.dto.ClerkMainStoreRelatedDTO
;
import
com.gic.haoban.manage.api.dto.DealParamMqDTO
;
import
com.gic.haoban.manage.api.dto.ExternalUserDTO
;
import
com.gic.haoban.manage.api.dto.StaffClerkRelationDTO
;
import
com.gic.haoban.manage.api.dto.StaffDTO
;
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.pojo.ExternalUserPojo
;
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.mq.sdk.GicMQClient
;
import
com.gic.redis.data.util.RedisUtil
;
@Service
public
class
FriendSyncOperation
implements
BaseSyncOperation
{
private
static
final
Logger
logger
=
LoggerFactory
.
getLogger
(
FriendSyncOperation
.
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
;
@Override
public
void
dealSingleByMq
(
DealParamMqDTO
dealParamMqDTO
,
TabHaobanPreDealLog
dataPre
)
{
String
reason
=
""
;
boolean
dealFlag
=
true
;
String
wxEnterpriseId
=
dataPre
.
getWxEnterpriseId
();
String
wxUserId
=
dataPre
.
getpDataId
();
String
taskId
=
dealParamMqDTO
.
getTaskId
();
String
externalUserId
=
dataPre
.
getDataContent
();
ExternalUserDTO
pojo
=
memberUnionidRelatedApiService
.
getExternalUseridInfo
(
wxEnterpriseId
,
wxUserId
,
externalUserId
);
if
(
pojo
==
null
){
preDealService
.
updateStatusByDataId
(
taskId
,
dataPre
.
getDataId
(),
PreDealStatusEnum
.
exception
.
getVal
(),
"好友不存在"
);
checkStaffTask
(
taskId
,
wxUserId
);
return
;
}
JSONObject
json
=
new
JSONObject
();
json
.
put
(
"name"
,
pojo
.
getName
());
json
.
put
(
"externalUserId"
,
pojo
.
getExternalUserId
());
json
.
put
(
"addCreateTime"
,
pojo
.
getAddCreateTime
());
dealSuccess
(
taskId
,
dataPre
.
getDataId
(),
JSON
.
toJSONString
(
json
),
wxEnterpriseId
);
try
{
checkStaffTask
(
taskId
,
wxUserId
);
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
logger
.
info
(
"同步失败:{},{}"
,
JSONObject
.
toJSONString
(
dataPre
),
e
);
reason
=
"第三方好友处理异常"
;
dealFlag
=
false
;
}
finally
{
if
(!
dealFlag
)
{
dealException
(
dealParamMqDTO
.
getTaskId
(),
dataPre
.
getDataId
(),
dataPre
.
getEnterpriseId
(),
reason
);
}
}
}
@Override
public
void
dealException
(
String
taskId
,
String
dataId
,
String
enterpriseId
,
String
reason
)
{
preDealService
.
updateStatusByDataId
(
taskId
,
dataId
,
PreDealStatusEnum
.
exception
.
getVal
(),
reason
);
}
@Override
public
void
dealSuccess
(
String
taskId
,
String
dataId
,
String
dataContent
,
String
wxEnterpriseId
)
{
preDealService
.
updateFriendStatusByDataId
(
taskId
,
dataId
,
PreDealStatusEnum
.
computed
.
getVal
(),
"成功"
,
dataContent
);
}
public
void
checkStaffTask
(
String
taskId
,
String
wxUserId
)
{
boolean
flag
=
preDealService
.
checkStaffTaskByTaskIdAndPDataId
(
taskId
,
wxUserId
);
logger
.
info
(
"checkStaffTask={}"
,
flag
);
if
(
flag
){
List
<
TabHaobanPreDealLog
>
list
=
preDealService
.
listByPDataIdAndTaskId
(
taskId
,
wxUserId
);
if
(
CollectionUtils
.
isNotEmpty
(
list
)){
Map
<
String
,
ExternalUserDTO
>
map
=
new
HashMap
<>();
List
<
TabHaobanPreDealLog
>
dealLogList
=
new
ArrayList
<>();
for
(
TabHaobanPreDealLog
tabHaobanPreDealLog
:
list
)
{
String
dataContent
=
tabHaobanPreDealLog
.
getDataContent
();
if
(
StringUtils
.
isNotBlank
(
dataContent
)
&&
dataContent
.
startsWith
(
"{"
)){
ExternalUserDTO
json
=
JSON
.
parseObject
(
dataContent
,
ExternalUserDTO
.
class
);
String
addCreateTime
=
json
.
getAddCreateTime
();
String
name
=
json
.
getName
();
String
key
=
name
+
"-"
+
wxUserId
+
"-"
+
addCreateTime
;
String
unionId
=
json
.
getUnionId
();
String
wxEnterpriseId
=
tabHaobanPreDealLog
.
getWxEnterpriseId
();
String
externalUserId
=
json
.
getExternalUserId
();
ExternalUserDTO
dto
=
map
.
get
(
key
);
if
(
dto
!=
null
){
if
(
tabHaobanPreDealLog
.
getDataType
()
==
PreDealTypeEnum
.
self_friend
.
getVal
()){
dto
.
setUnionId
(
unionId
);
}
else
if
(
tabHaobanPreDealLog
.
getDataType
()
==
PreDealTypeEnum
.
friend
.
getVal
()){
dto
.
setExternalUserId
(
externalUserId
);
}
TabHaobanPreDealLog
dealLog
=
new
TabHaobanPreDealLog
();
dealLog
.
setDataId
(
key
);
dealLog
.
setpDataId
(
wxUserId
);
dealLog
.
setDataType
(
PreDealTypeEnum
.
friend_merge
.
getVal
());
dealLog
.
setStatusFlag
(
0
);
dealLog
.
setTaskId
(
taskId
);
dealLog
.
setDataContent
(
JSONObject
.
toJSONString
(
dto
));
dealLog
.
setWxEnterpriseId
(
wxEnterpriseId
);
dealLogList
.
add
(
dealLog
);
}
else
{
map
.
put
(
key
,
json
);
}
}
}
logger
.
info
(
"dealLogList={}"
,
JSON
.
toJSONString
(
dealLogList
));
if
(
CollectionUtils
.
isNotEmpty
(
dealLogList
)){
preDealService
.
insert
(
dealLogList
);
HashSet
<
String
>
hashSet
=
(
HashSet
<
String
>)
dealLogList
.
stream
().
map
(
TabHaobanPreDealLog:
:
getDataId
).
collect
(
Collectors
.
toSet
());
dealDepartmentToMq
(
taskId
,
hashSet
,
SyncTaskStatusEnum
.
merge_friend_sync
);
}
}
}
}
@Override
public
void
checkDepartmentTask
(
String
taskId
)
{
}
/**
* 放入mq处理部门数据
*
* @param taskId
* @param dealList
*/
private
void
dealDepartmentToMq
(
String
taskId
,
Set
<
String
>
dealList
,
SyncTaskStatusEnum
syncTaskStatusEnum
)
{
//预处理分组任务
syncTaskService
.
updateTaskStatus
(
taskId
,
syncTaskStatusEnum
.
getVal
());
dealList
.
forEach
(
relationId
->
{
DealParamMqDTO
dealParamMqDTO
=
new
DealParamMqDTO
();
dealParamMqDTO
.
setTaskId
(
taskId
);
dealParamMqDTO
.
setData
(
relationId
);
dealParamMqDTO
.
setType
(
syncTaskStatusEnum
.
getVal
());
GicMQClient
clientInstance
=
GICMQClientUtil
.
getClientInstance
();
try
{
clientInstance
.
sendMessage
(
"departmentSyncDealMq"
,
JSONObject
.
toJSONString
(
dealParamMqDTO
));
}
catch
(
Exception
e
)
{
logger
.
info
(
"发送失败:{},{}"
,
taskId
,
relationId
);
e
.
printStackTrace
();
}
});
}
}
haoban-manage3-service/src/main/java/com/gic/haoban/manage/service/task/SelfFriendSyncOperation.java
0 → 100644
View file @
9aa05ad2
package
com
.
gic
.
haoban
.
manage
.
service
.
task
;
import
java.util.ArrayList
;
import
java.util.HashMap
;
import
java.util.HashSet
;
import
java.util.List
;
import
java.util.Map
;
import
java.util.Set
;
import
java.util.stream.Collectors
;
import
org.apache.commons.collections.CollectionUtils
;
import
org.apache.commons.lang3.StringUtils
;
import
org.slf4j.Logger
;
import
org.slf4j.LoggerFactory
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Service
;
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.ClerkMainStoreRelatedDTO
;
import
com.gic.haoban.manage.api.dto.DealParamMqDTO
;
import
com.gic.haoban.manage.api.dto.ExternalUserDTO
;
import
com.gic.haoban.manage.api.dto.StaffClerkRelationDTO
;
import
com.gic.haoban.manage.api.dto.StaffDTO
;
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.member.api.dto.MemberDTO
;
import
com.gic.member.api.service.MemberOpenCardBusinessService
;
import
com.gic.mq.sdk.GicMQClient
;
@Service
public
class
SelfFriendSyncOperation
implements
BaseSyncOperation
{
private
static
final
Logger
logger
=
LoggerFactory
.
getLogger
(
SelfFriendSyncOperation
.
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
;
@Override
public
void
dealSingleByMq
(
DealParamMqDTO
dealParamMqDTO
,
TabHaobanPreDealLog
dataPre
)
{
String
reason
=
""
;
boolean
dealFlag
=
true
;
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
){
dealException
(
taskId
,
dataPre
.
getDataId
(),
null
,
"好友不存在"
);
checkStaffTask
(
taskId
,
wxUserId
);
return
;
}
JSONObject
json
=
new
JSONObject
();
json
.
put
(
"name"
,
pojo
.
getName
());
json
.
put
(
"unionId"
,
pojo
.
getUnionId
());
json
.
put
(
"addCreateTime"
,
pojo
.
getAddCreateTime
());
try
{
dealSuccess
(
taskId
,
dataPre
.
getDataId
(),
json
.
toJSONString
(),
wxEnterpriseId
);
checkStaffTask
(
taskId
,
wxUserId
);
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
logger
.
info
(
"同步失败:{},{}"
,
JSONObject
.
toJSONString
(
dataPre
),
e
);
reason
=
"自建应用好友处理异常"
;
dealFlag
=
false
;
}
finally
{
if
(!
dealFlag
)
{
dealException
(
dealParamMqDTO
.
getTaskId
(),
dataPre
.
getDataId
(),
dataPre
.
getEnterpriseId
(),
reason
);
}
}
}
@Override
public
void
dealException
(
String
taskId
,
String
dataId
,
String
enterpriseId
,
String
reason
)
{
preDealService
.
updateStatusByDataId
(
taskId
,
dataId
,
PreDealStatusEnum
.
exception
.
getVal
(),
reason
);
}
@Override
public
void
dealSuccess
(
String
taskId
,
String
dataId
,
String
dataContent
,
String
wxEnterpriseId
)
{
preDealService
.
updateFriendStatusByDataId
(
taskId
,
dataId
,
PreDealStatusEnum
.
computed
.
getVal
(),
"成功"
,
dataContent
);
}
public
void
checkStaffTask
(
String
taskId
,
String
wxUserId
)
{
boolean
flag
=
preDealService
.
checkStaffTaskByTaskIdAndPDataId
(
taskId
,
wxUserId
);
logger
.
info
(
"checkStaffTask={}"
,
flag
);
if
(
flag
){
List
<
TabHaobanPreDealLog
>
list
=
preDealService
.
listByPDataIdAndTaskId
(
taskId
,
wxUserId
);
if
(
CollectionUtils
.
isNotEmpty
(
list
)){
List
<
TabHaobanPreDealLog
>
dealLogList
=
new
ArrayList
<>();
Map
<
String
,
ExternalUserDTO
>
map
=
new
HashMap
<>();
for
(
TabHaobanPreDealLog
tabHaobanPreDealLog
:
list
)
{
String
dataContent
=
tabHaobanPreDealLog
.
getDataContent
();
if
(
StringUtils
.
isNotBlank
(
dataContent
)
&&
dataContent
.
startsWith
(
"{"
)){
ExternalUserDTO
json
=
JSON
.
parseObject
(
dataContent
,
ExternalUserDTO
.
class
);
String
addCreateTime
=
json
.
getAddCreateTime
();
String
name
=
json
.
getName
();
String
key
=
name
+
"-"
+
wxUserId
+
"-"
+
addCreateTime
;
String
unionId
=
json
.
getUnionId
();
String
wxEnterpriseId
=
tabHaobanPreDealLog
.
getWxEnterpriseId
();
ExternalUserDTO
dto
=
map
.
get
(
key
);
if
(
dto
!=
null
){
if
(
tabHaobanPreDealLog
.
getDataType
()
==
PreDealTypeEnum
.
self_friend
.
getVal
()){
dto
.
setUnionId
(
unionId
);
}
else
if
(
tabHaobanPreDealLog
.
getDataType
()
==
PreDealTypeEnum
.
friend
.
getVal
()){
dto
.
setExternalUserId
(
tabHaobanPreDealLog
.
getDataId
());
}
TabHaobanPreDealLog
dealLog
=
new
TabHaobanPreDealLog
();
dealLog
.
setDataId
(
key
);
dealLog
.
setpDataId
(
wxUserId
);
dealLog
.
setDataType
(
PreDealTypeEnum
.
friend_merge
.
getVal
());
dealLog
.
setStatusFlag
(
0
);
dealLog
.
setTaskId
(
taskId
);
dealLog
.
setDataContent
(
JSONObject
.
toJSONString
(
dto
));
dealLog
.
setWxEnterpriseId
(
wxEnterpriseId
);
dealLogList
.
add
(
dealLog
);
}
else
{
map
.
put
(
key
,
json
);
}
}
}
logger
.
info
(
"dealLogList={}"
,
JSON
.
toJSONString
(
dealLogList
));
if
(
CollectionUtils
.
isNotEmpty
(
dealLogList
)){
preDealService
.
insert
(
dealLogList
);
HashSet
<
String
>
hashSet
=
(
HashSet
<
String
>)
dealLogList
.
stream
().
map
(
TabHaobanPreDealLog:
:
getDataId
).
collect
(
Collectors
.
toSet
());
dealDepartmentToMq
(
taskId
,
hashSet
,
SyncTaskStatusEnum
.
merge_friend_sync
);
}
}
}
}
@Override
public
void
checkDepartmentTask
(
String
taskId
)
{
}
/**
* 放入mq处理部门数据
*
* @param taskId
* @param dealList
*/
private
void
dealDepartmentToMq
(
String
taskId
,
Set
<
String
>
dealList
,
SyncTaskStatusEnum
syncTaskStatusEnum
)
{
//预处理分组任务
syncTaskService
.
updateTaskStatus
(
taskId
,
syncTaskStatusEnum
.
getVal
());
dealList
.
forEach
(
relationId
->
{
DealParamMqDTO
dealParamMqDTO
=
new
DealParamMqDTO
();
dealParamMqDTO
.
setTaskId
(
taskId
);
dealParamMqDTO
.
setData
(
relationId
);
dealParamMqDTO
.
setType
(
syncTaskStatusEnum
.
getVal
());
GicMQClient
clientInstance
=
GICMQClientUtil
.
getClientInstance
();
try
{
clientInstance
.
sendMessage
(
"departmentSyncDealMq"
,
JSONObject
.
toJSONString
(
dealParamMqDTO
));
}
catch
(
Exception
e
)
{
logger
.
info
(
"发送失败:{},{}"
,
taskId
,
relationId
);
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/PreDealLogMapper.xml
View file @
9aa05ad2
...
...
@@ -20,7 +20,7 @@
update_time
</sql>
<sql
id=
"Base_Column_List_data"
>
id, wx_enterprise_id,enterprise_id, data_id,data_content, p_data_id, task_id, data_type, status_flag, create_time,
id, wx_enterprise_id,enterprise_id, data_id,data_content, p_data_id, task_id, data_type, status_flag, create_time,
reason,
update_time
</sql>
<select
id=
"selectByPrimaryKey"
parameterType=
"java.lang.Integer"
resultMap=
"BaseResultMap"
>
...
...
@@ -344,5 +344,33 @@
and wx_enterprise_id =#{wxEnterpriseId} limit 1
</select>
<update
id=
"updateFriendStatusByDataId"
>
update tab_haoban_pre_deal_log
<set>
status_flag = #{status,jdbcType=INTEGER},
reason=#{reason},
data_content = #{dataContent},
update_time = now()
</set>
where data_id = #{dataId,jdbcType=INTEGER} and task_id=#{taskId}
</update>
<select
id=
"countFailStaffTaskByTaskIdAndPDataId"
resultType=
"integer"
>
select
count(*)
from tab_haoban_pre_deal_log
where task_id = #{taskId}
and p_data_id =#{pDataId}
and status_flag != 2
and status_flag != 3
</select>
<select
id=
"listByPDataIdAndTaskId"
resultMap=
"BaseResultMap"
>
select
<include
refid=
"Base_Column_List_data"
/>
from tab_haoban_pre_deal_log
where task_id = #{taskId}
and p_data_id =#{pDataId}
</select>
</mapper>
\ No newline at end of file
haoban-manage3-service/src/main/resources/mapper/SyncTaskMapper.xml
View file @
9aa05ad2
...
...
@@ -120,6 +120,17 @@
select
<include
refid=
"Base_Column_List"
/>
from tab_haoban_sync_task
where wx_enterprise_id = #{wxEnterpriseId,jdbcType=VARCHAR} order by update_time desc
where wx_enterprise_id = #{wxEnterpriseId,jdbcType=VARCHAR}
and task_type != 4
order by update_time desc
</select>
<select
id=
"listTaskByType"
resultMap=
"BaseResultMap"
>
select
<include
refid=
"Base_Column_List"
/>
from tab_haoban_sync_task
where status_flag = 0
and task_type = #{taskType}
group by wx_enterprise_id
</select>
</mapper>
\ No newline at end of file
haoban-manage3-service/src/main/resources/mapper/TabHaobanClerkMainStoreRelatedMapper.xml
View file @
9aa05ad2
...
...
@@ -138,4 +138,14 @@
and status_flag = 1
limit 1
</select>
<select
id=
"listByWxEnterpriseId"
resultMap=
"BaseResultMap"
parameterType=
"java.lang.String"
>
select
<include
refid=
"Base_Column_List"
/>
from tab_haoban_clerk_main_store_related
where 1
and wx_enterprise_id = #{wxEnterpriseId}
and status_flag = 1
group by staff_id
</select>
</mapper>
\ No newline at end of file
haoban-manage3-service/src/main/resources/mapper/TabHaobanMemberClerkChatConfigMapper.xml
View file @
9aa05ad2
...
...
@@ -136,4 +136,5 @@
where staff_id = #{staffId,jdbcType=VARCHAR} and member_id = #{memberId,jdbcType=VARCHAR}
and status =1
</select>
</mapper>
\ No newline at end of file
haoban-manage3-service/src/main/resources/mapper/TabHaobanStaffClerkRelationMapper.xml
View file @
9aa05ad2
...
...
@@ -359,4 +359,13 @@
and status_flag = 1
</select>
<select
id=
"listByWxEnterpriseId"
resultMap=
"BaseResultMap"
>
select
<include
refid=
"Base_Column_List"
/>
from tab_haoban_staff_clerk_relation
where wx_enterprise_id = #{wxEnterpriseId,jdbcType=VARCHAR}
and status_flag =1
group by wx_user_id
</select>
</mapper>
\ No newline at end of file
haoban-manage3-service/src/test/java/CountDownLatchTest.java
0 → 100644
View file @
9aa05ad2
import
java.util.List
;
import
java.util.concurrent.CountDownLatch
;
import
java.util.concurrent.ExecutorService
;
import
java.util.concurrent.Executors
;
import
java.util.concurrent.atomic.AtomicInteger
;
import
org.slf4j.Logger
;
import
org.slf4j.LoggerFactory
;
import
com.alibaba.fastjson.JSON
;
import
com.gic.haoban.manage.api.service.MemberUnionidRelatedApiService
;
public
class
CountDownLatchTest
implements
Runnable
{
private
static
Logger
logger
=
LoggerFactory
.
getLogger
(
CountDownLatchTest
.
class
);
final
AtomicInteger
number
=
new
AtomicInteger
();
volatile
boolean
bol
=
false
;
private
MemberUnionidRelatedApiService
memberUnionidRelatedApiService
;
private
String
wxUserId
;
private
CountDownLatch
countDownLatch
;
public
CountDownLatchTest
(
MemberUnionidRelatedApiService
memberUnionidRelatedApiService
,
String
wxUserId
,
CountDownLatch
countDownLatch
){
this
.
memberUnionidRelatedApiService
=
memberUnionidRelatedApiService
;
this
.
wxUserId
=
wxUserId
;
this
.
countDownLatch
=
countDownLatch
;
}
@Override
public
void
run
()
{
try
{
// 线程等待
countDownLatch
.
await
();
long
startTime
=
System
.
currentTimeMillis
();
List
<
String
>
res
=
memberUnionidRelatedApiService
.
listSelfExterialList
(
"ca66a01b79474c40b3e7c7f93daf1a3b"
,
wxUserId
);
System
.
out
.
println
(
JSON
.
toJSONString
(
res
));
long
endTime
=
System
.
currentTimeMillis
();
System
.
out
.
println
(
Thread
.
currentThread
().
getName
()
+
" ended at: "
+
endTime
+
", cost: "
+
(
endTime
-
startTime
)
+
" ms."
);
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
}
}
}
haoban-manage3-service/src/test/java/DealSyncTest.java
View file @
9aa05ad2
import
cn.hutool.core.thread.ConcurrencyTester
;
import
cn.hutool.core.thread.ThreadUtil
;
import
com.alibaba.fastjson.JSON
;
import
com.alibaba.fastjson.JSONObject
;
import
com.gic.haoban.base.api.common.ServiceResponse
;
import
com.gic.haoban.manage.api.dto.StaffDTO
;
import
com.gic.haoban.manage.api.dto.SyncSingleDealDTO
;
import
com.gic.haoban.manage.api.service.DealSyncOperationApiService
;
import
com.gic.haoban.manage.api.service.MemberUnionidRelatedApiService
;
import
com.gic.haoban.manage.api.service.StaffApiService
;
import
com.gic.haoban.manage.api.service.StaffClerkRelationApiService
;
import
com.gic.haoban.manage.service.service.StaffService
;
...
...
@@ -23,6 +27,9 @@ import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import
java.util.ArrayList
;
import
java.util.List
;
import
java.util.concurrent.CountDownLatch
;
import
java.util.concurrent.ExecutorService
;
import
java.util.concurrent.Executors
;
import
java.util.concurrent.TimeUnit
;
@RunWith
(
SpringJUnit4ClassRunner
.
class
)
...
...
@@ -48,143 +55,36 @@ public class DealSyncTest {
@Autowired
private
StaffClerkRelationApiService
staffClerkRelationApiService
;
@Autowired
private
MemberUnionidRelatedApiService
memberUnionidRelatedApiService
;
@Test
public
void
test
()
{
List
<
SyncSingleDealDTO
>
add
=
new
ArrayList
<>();
List
<
SyncSingleDealDTO
>
edit
=
new
ArrayList
<>();
{
SyncSingleDealDTO
dealDTO
=
new
SyncSingleDealDTO
();
dealDTO
.
setDepartmentId
(
"ff80808166c3a1050166c43175d9000e"
);
dealDTO
.
setParentDepartmentId
(
"a101b3a51cd549e79f3daec1aa628301"
);
dealDTO
.
setDepartmentName
(
"西溪花园"
);
dealDTO
.
setRelatedId
(
"ff80808166c3a1050166c43175d9000e"
);
dealDTO
.
setStoreFlag
(
0
);
dealDTO
.
setEnterpriseId
(
"ff8080815dacd3a2015dacd3ef5c0000"
);
add
.
add
(
dealDTO
);
}
{
SyncSingleDealDTO
dealDTO
=
new
SyncSingleDealDTO
();
dealDTO
.
setDepartmentId
(
"100333808083"
);
dealDTO
.
setParentDepartmentId
(
"a101b3a51cd549e79f3daec1aa628301"
);
dealDTO
.
setDepartmentName
(
"测试门店1003338"
);
dealDTO
.
setRelatedId
(
"100333808083"
);
dealDTO
.
setStoreFlag
(
1
);
dealDTO
.
setEnterpriseId
(
"ff8080815dacd3a2015dacd3ef5c0000"
);
add
.
add
(
dealDTO
);
}
dealSyncOperationApiService
.
dealQywxDepartment
(
"111"
,
"ca66a01b79474c40b3e7c7f93daf1a3b"
);
}
@Test
public
void
test2
()
{
int
i
=
1
;
while
(
true
)
{
i
++;
if
(
i
==
5
){
System
.
out
.
println
(
"close"
);
RedisUtil
.
close
();
}
if
(
i
==
10
||
i
==
25
){
System
.
out
.
println
(
"creConnect"
);
RedisUtil
.
reConnect
();
}
try
{
RedisUtil
.
setCache
(
"1"
,
"2"
);
Object
cache
=
RedisUtil
.
getCache
(
"1"
);
System
.
out
.
println
(
"======={}"
+
i
+
":"
+
cache
);
Thread
.
sleep
(
2000
);
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
}
}
}
@Test
public
void
test3
()
{
staffApiService
.
getWxSaveNew
(
"3e7a7c09097a40b18aef1478b04688fe"
,
"ca66a01b79474c40b3e7c7f93daf1a3b"
);
}
@Test
public
void
test5
()
{
String
key
=
"test2"
;
RedisUtil
.
lock
(
key
,
100L
,
TimeUnit
.
SECONDS
,
0L
);
// try {
// Thread.sleep(3000);
// } catch (InterruptedException e) {
// e.printStackTrace();
// }
// if(RedisUtil.isLocked(key)){
// RedisUtil.unlock(key);
// }
dealSyncOperationApiService
.
test
(
"ca66a01b79474c40b3e7c7f93daf1a3b"
,
"49da12164c584fe8aabbb1094b25cfa5"
);
// ConcurrencyTester tester = ThreadUtil.concurrencyTest(10, () -> {
// List<String> res = memberUnionidRelatedApiService.listSelfExterialList("ca66a01b79474c40b3e7c7f93daf1a3b", "QiuWenMin");
// System.out.println(JSON.toJSONString(res));
// });
//
// ExecutorService pool = Executors. newCachedThreadPool();
// List<String> res = memberUnionidRelatedApiService.listSelfExterialList("ca66a01b79474c40b3e7c7f93daf1a3b", "QiuWenMin");
// System.out.println(JSON.toJSONString(res));
// 初始化计数器为1
// CountDownLatch countDownLatch = new CountDownLatch(1);
// new Thread(new CountDownLatchTest(memberUnionidRelatedApiService,"12", countDownLatch)).start();
// new Thread(new CountDownLatchTest(memberUnionidRelatedApiService,"13989473881", countDownLatch)).start();
// new Thread(new CountDownLatchTest(memberUnionidRelatedApiService,"1545shiyao", countDownLatch)).start();
// new Thread(new CountDownLatchTest(memberUnionidRelatedApiService,"15757150876", countDownLatch)).start();;
// new Thread(new CountDownLatchTest(memberUnionidRelatedApiService,"18758285875", countDownLatch)).start();
// new Thread(new CountDownLatchTest(memberUnionidRelatedApiService,"2224324sdftgret90", countDownLatch)).start();
// new Thread(new CountDownLatchTest(memberUnionidRelatedApiService,"2341578784", countDownLatch)).start();
// new Thread(new CountDownLatchTest(memberUnionidRelatedApiService,"234324", countDownLatch)).start();
// new Thread(new CountDownLatchTest(memberUnionidRelatedApiService,"niweizhong", countDownLatch)).start();
// new Thread(new CountDownLatchTest(memberUnionidRelatedApiService,"QiuWenMin", countDownLatch)).start();
// 启动多个线程
// countDownLatch.countDown();
}
@Test
public
void
test6
()
{
String
key
=
"test2"
;
// RedisUtil.lock(key,100L, TimeUnit.SECONDS,0L);
// try {
// Thread.sleep(3000);
// } catch (InterruptedException e) {
// e.printStackTrace();
// }
RLock
lock
=
RedisUtil
.
getRedisClient
().
getLock
(
key
);
try
{
if
(
lock
.
tryLock
(
0
,
10
,
TimeUnit
.
MINUTES
))
{
try
{
Thread
.
sleep
(
1000L
);
}
finally
{
lock
.
unlock
();
}
}
}
catch
(
InterruptedException
e
)
{
e
.
printStackTrace
();
}
// if(RedisUtil.isLocked(key)){
// RedisUtil.unlock(key);
// }
// RedisUtil.unlock();
// RedisUtil.setCache("test5511","111",2592030L);
}
@Test
public
void
test4
()
{
List
<
StaffDTO
>
retList
=
staffService
.
listByUserIdsAndWxEnterpriseId
(
null
,
"ca66a01b79474c40b3e7c7f93daf1a3b"
);
System
.
out
.
println
(
retList
.
size
());
if
(
CollectionUtils
.
isEmpty
(
retList
))
{
return
;
}
List
<
StaffDTO
>
staffDTOS
=
retList
.
subList
(
2
,
retList
.
size
()-
1
);
staffDTOS
.
forEach
(
staffDTO
->
{
if
(
StringUtils
.
isNotBlank
(
staffDTO
.
getWxUserId
()))
{
logger
.
info
(
staffDTO
.
getWxUserId
());
QywxExternalcontactDTO
send
=
new
QywxExternalcontactDTO
();
send
.
setType
(
1
);
send
.
setScene
(
1
);
send
.
setRemark
(
"tesst_"
+
staffDTO
.
getPhoneNumber
());
List
<
String
>
userIds
=
new
ArrayList
<>();
userIds
.
add
(
staffDTO
.
getWxUserId
());
send
.
setUser
(
userIds
);
String
configId
=
qywxUserApiService
.
getExternalcontactByUserId
(
"ww9ede832a84b7ae5f"
,
"65zze159pYb4ofbFsIREZ5X7d7iaZ-bWsVIQk2y5kTU"
,
send
);
if
(
StringUtils
.
isNotBlank
(
configId
))
{
logger
.
info
(
"staff:{}"
,
configId
,
JSONObject
.
toJSONString
(
staffDTO
));
com
.
gic
.
haoban
.
manage
.
service
.
entity
.
Test
test
=
new
com
.
gic
.
haoban
.
manage
.
service
.
entity
.
Test
();
test
.
setId
(
configId
);
test
.
setName
(
staffDTO
.
getWxUserId
());
testService
.
save
(
test
);
}
}
});
}
@Test
public
void
test7
()
{
ServiceResponse
<
String
>
memberChatConfig
=
staffClerkRelationApiService
.
getClerkMemberChatConfig
(
"ff8080816106031401612207e9b405aa"
);
System
.
out
.
println
(
JSONObject
.
toJSONString
(
memberChatConfig
));
}
}
haoban-manage3-web/src/main/java/com/gic/haoban/manage/web/controller/WxEnterpriseController.java
View file @
9aa05ad2
...
...
@@ -3,7 +3,9 @@ package com.gic.haoban.manage.web.controller;
import
cn.hutool.core.collection.CollectionUtil
;
import
com.alibaba.druid.util.StringUtils
;
import
com.alibaba.fastjson.JSON
;
import
com.alibaba.fastjson.JSONObject
;
import
com.gic.api.base.commons.Page
;
import
com.gic.commons.util.DateUtil
;
import
com.gic.enterprise.api.dto.EnterpriseAndUserDTO
;
import
com.gic.enterprise.api.dto.EnterpriseDTO
;
import
com.gic.enterprise.api.dto.StoreDTO
;
...
...
@@ -19,6 +21,7 @@ import com.gic.haoban.manage.api.dto.SecretSettingDTO;
import
com.gic.haoban.manage.api.dto.StaffDTO
;
import
com.gic.haoban.manage.api.dto.WxEnterpriseDTO
;
import
com.gic.haoban.manage.api.enums.SecretTypeEnum
;
import
com.gic.haoban.manage.api.service.DealSyncOperationApiService
;
import
com.gic.haoban.manage.api.service.DepartmentApiService
;
import
com.gic.haoban.manage.api.service.StaffApiService
;
import
com.gic.haoban.manage.api.service.WxEnterpriseApiService
;
...
...
@@ -31,6 +34,9 @@ import com.gic.haoban.manage.web.vo.EnterpriseSearchVO;
import
com.gic.haoban.manage.web.vo.LoginVO
;
import
com.gic.haoban.manage.web.vo.SecretSettingVO
;
import
com.gic.haoban.manage.web.vo.StoreVo
;
import
com.gic.quartz.api.dto.QuartzTaskDTO
;
import
com.gic.quartz.api.service.QuartzService
;
import
com.gic.redis.data.util.RedisUtil
;
import
com.gic.wechat.api.dto.qywx.UserDTO
;
import
com.gic.wechat.api.service.qywx.QywxUserApiService
;
import
com.gic.wechat.token.api.dto.QywxCorpInfoDTO
;
...
...
@@ -67,6 +73,10 @@ public class WxEnterpriseController extends WebBaseController{
@Autowired
private
StaffApiService
staffApiService
;
@Autowired
private
DealSyncOperationApiService
dealSyncOperationApiService
;
@Autowired
private
QuartzService
quartzService
;
//授权企业列表
...
...
@@ -465,7 +475,7 @@ public class WxEnterpriseController extends WebBaseController{
listRet
.
forEach
(
secretSettingVO
->
{
if
((!
StringUtils
.
isEmpty
(
secretSettingVO
.
getEnterpriseId
()))&&(!
secretSettingVO
.
getEnterpriseId
().
equals
(
"-1"
)))
{
EnterpriseDTO
enterpriseDTO
=
enterpriseService
.
getEnterpriseById
(
secretSettingVO
.
getEnterpriseId
());
secretSettingVO
.
setEnterpriseName
(
enterpriseDTO
.
getBrandName
());
secretSettingVO
.
setEnterpriseName
(
enterpriseDTO
==
null
?
""
:
enterpriseDTO
.
getBrandName
());
}
});
}
...
...
@@ -503,6 +513,73 @@ public class WxEnterpriseController extends WebBaseController{
return
resultResponse
(
HaoBanErrCode
.
ERR_1
,
true
);
}
/**
* 刷新企业微信好友
* @return
*/
@RequestMapping
(
"/fresh-wx-friend"
)
public
HaobanResponse
freshWxFriend
(){
LoginVO
login
=
(
LoginVO
)
AuthRequestUtil
.
getLoginUser
();
String
wxEnterpriseId
=
login
.
getWxEnterpriseId
();
String
dayKey
=
"haoban_fresh-wx-friend-day"
+
wxEnterpriseId
+
DateUtil
.
dateToStr
(
new
Date
(),
"yyyy-MM-dd"
);
String
monthKey
=
"haoban_fresh-wx-friend-month"
+
wxEnterpriseId
+
DateUtil
.
dateToStr
(
new
Date
(),
"yyyy-MM"
);
String
dateKey
=
"haoban_fresh-wx-friend-date"
+
wxEnterpriseId
;
Integer
dayCount
=
RedisUtil
.
getCache
(
dayKey
)
==
null
?
0
:
Integer
.
parseInt
(
RedisUtil
.
getCache
(
dayKey
).
toString
());
Integer
monthCount
=
RedisUtil
.
getCache
(
monthKey
)
==
null
?
0
:
Integer
.
parseInt
(
RedisUtil
.
getCache
(
monthKey
).
toString
());
if
(
dayCount
>=
1
){
return
resultResponse
(
HaoBanErrCode
.
ERR_100019
);
}
if
(
monthCount
>=
3
){
return
resultResponse
(
HaoBanErrCode
.
ERR_100020
);
}
String
taskId
=
dealSyncOperationApiService
.
createWxFriendTask
(
wxEnterpriseId
,
"刷新企微好友"
,
login
.
getStaffDTO
().
getStaffId
(),
"刷新企微好友"
);
if
(
StringUtils
.
isEmpty
(
taskId
)){
return
resultResponse
(
HaoBanErrCode
.
ERR_100021
);
}
// dealSyncOperationApiService.dealWxFriendClerk(taskId, wxEnterpriseId);
RedisUtil
.
setCache
(
dayKey
,
dayCount
+
1
);
RedisUtil
.
setCache
(
monthKey
,
monthCount
+
1
);
RedisUtil
.
setCache
(
dateKey
,
DateUtil
.
dateToStr
(
new
Date
(),
DateUtil
.
FORMAT_DATETIME_19
));
return
resultResponse
(
HaoBanErrCode
.
ERR_1
);
}
private
QuartzTaskDTO
buildQuartzTaskDTO
(
String
id
)
{
QuartzTaskDTO
taskDTO
=
new
QuartzTaskDTO
();
taskDTO
.
setReferId
(
id
);
taskDTO
.
setTaskMethod
(
"quartWxFriendClerk"
);
taskDTO
.
setTaskService
(
"com.gic.haoban.manage.api.service.DealSyncOperationApiService"
);
return
taskDTO
;
}
/**
* 获取企业微信好友刷新时间
* @return
*/
@RequestMapping
(
"/get-fresh-detail"
)
public
HaobanResponse
getFreshDetail
(){
LoginVO
login
=
(
LoginVO
)
AuthRequestUtil
.
getLoginUser
();
String
wxEnterpriseId
=
login
.
getWxEnterpriseId
();
String
dateKey
=
"haoban_fresh-wx-friend-date"
+
wxEnterpriseId
;
RedisUtil
.
getCache
(
dateKey
);
return
resultResponse
(
HaoBanErrCode
.
ERR_1
,
RedisUtil
.
getCache
(
dateKey
));
}
/**
* 获取刷新好友开关接口
* @return
*/
@RequestMapping
(
"/get-fresh-on-off"
)
public
HaobanResponse
getFreshOnOff
(){
LoginVO
login
=
(
LoginVO
)
AuthRequestUtil
.
getLoginUser
();
String
wxEnterpriseId
=
login
.
getWxEnterpriseId
();
String
dateKey
=
"haoban_fresh-wx-friend-enterprise"
;
Object
value
=
RedisUtil
.
getCache
(
dateKey
);
if
(
value
!=
null
){
String
valueStr
=
value
.
toString
();
return
resultResponse
(
HaoBanErrCode
.
ERR_1
,
valueStr
.
contains
(
wxEnterpriseId
));
}
return
resultResponse
(
HaoBanErrCode
.
ERR_1
,
false
);
}
}
haoban-manage3-web/src/main/java/com/gic/haoban/manage/web/errCode/HaoBanErrCode.java
View file @
9aa05ad2
...
...
@@ -57,6 +57,11 @@ public enum HaoBanErrCode {
ERR_11
(
11
,
"验证码发送失败"
),
/**
* 验证码发送失败
*/
ERR_13
(
11
,
"客官,当前访问人数较多,请稍后再试"
),
/**
* 验证码校验失败
*/
ERR_12
(
12
,
"验证码校验失败"
),
...
...
@@ -106,6 +111,10 @@ public enum HaoBanErrCode {
ERR_100016
(
100016
,
"审核失败"
),
ERR_100017
(
100017
,
"secret已经设置过"
),
ERR_100018
(
100018
,
"企业不存在"
),
ERR_100019
(
100019
,
"一天只能刷新1次"
),
ERR_100020
(
100020
,
"一个月只能刷新3次"
),
ERR_100021
(
100021
,
"创建任务失败"
),
ERR_DEFINE
(-
888
,
"自定义错误"
),
ERR_OTHER
(-
999
,
"未知错误code"
);
...
...
haoban-manage3-web/src/main/java/com/gic/haoban/manage/web/init/MyApplicationContextAware.java
View file @
9aa05ad2
package
com
.
gic
.
haoban
.
manage
.
web
.
init
;
import
com.alibaba.fastjson.JSONObject
;
import
com.gic.commons.util.DateUtil
;
import
com.gic.quartz.api.dto.QuartzTaskDTO
;
import
com.gic.quartz.api.service.QuartzService
;
import
java.util.Calendar
;
import
java.util.Date
;
import
org.apache.logging.log4j.LogManager
;
import
org.apache.logging.log4j.Logger
;
import
org.springframework.beans.BeansException
;
...
...
@@ -23,22 +28,48 @@ public class MyApplicationContextAware implements ApplicationContextAware {
@Override
public
void
setApplicationContext
(
ApplicationContext
applicationContext
)
throws
BeansException
{
log
.
info
(
"【定时开始】----------------------"
);
QuartzTaskDTO
taskDTO
=
buildQuartzMessageDTO
(
"haoban-message-status-time"
);
taskDTO
.
setTaskParam
(
""
);
// QuartzTaskDTO taskDTO = buildQuartzMessageDTO("haoban-message-status-time3");
// taskDTO.setTaskParam("");
// taskDTO.setTaskStatus(1);
// taskDTO.setTaskTimeInfo("0 30 1 * * *");
//// taskDTO.setTaskTimeInfo("0 0/5 * * * *");
// quartzService.addOrUpdateQuartzTask(taskDTO);
QuartzTaskDTO
memberExportTask
=
buildMemberExportQuartzTaskDTO
(
"haoban-member-export3"
);
memberExportTask
.
setTaskParam
(
"-1"
);
memberExportTask
.
setTaskStatus
(
1
);
memberExportTask
.
setTaskTimeInfo
(
"0 0/15 * * * *"
);
quartzService
.
addOrUpdateQuartzTask
(
memberExportTask
);
QuartzTaskDTO
taskDTO
=
buildQuartzTaskDTO
(
"hb-fresh-wx-friend"
);
taskDTO
.
setTaskParam
(
"-1"
);
taskDTO
.
setTaskStatus
(
1
);
taskDTO
.
setTaskTimeInfo
(
"0 30 1 * * *"
);
// taskDTO.setTaskTimeInfo("0 0/5 * * * *");
taskDTO
.
setTaskTimeInfo
(
"0 0 4 * * *"
);
quartzService
.
addOrUpdateQuartzTask
(
taskDTO
);
}
private
QuartzTaskDTO
buildQuartzMessageDTO
(
String
id
)
{
QuartzTaskDTO
taskDTO
=
new
QuartzTaskDTO
();
taskDTO
.
setReferId
(
id
);
taskDTO
.
setTaskMethod
(
"quartzUpdateMessageStatus"
);
taskDTO
.
setTaskService
(
"com.gic.haoban.app.customer.service.api.service.MessageLogApiService"
);
return
taskDTO
;
// private QuartzTaskDTO buildQuartzMessageDTO(String id) {
// QuartzTaskDTO taskDTO = new QuartzTaskDTO();
// taskDTO.setReferId(id);
// taskDTO.setTaskMethod("quartzUpdateMessageStatus");
// taskDTO.setTaskService("com.gic.haoban.app.customer.service.api.service.MessageLogApiService");
// return taskDTO;
// }
private
QuartzTaskDTO
buildQuartzTaskDTO
(
String
id
)
{
QuartzTaskDTO
taskDTO
=
new
QuartzTaskDTO
();
taskDTO
.
setReferId
(
id
);
taskDTO
.
setTaskMethod
(
"quartWxFriendClerk"
);
taskDTO
.
setTaskService
(
"com.gic.haoban.manage.api.service.DealSyncOperationApiService"
);
return
taskDTO
;
}
private
QuartzTaskDTO
buildMemberExportQuartzTaskDTO
(
String
id
)
{
QuartzTaskDTO
taskDTO
=
new
QuartzTaskDTO
();
taskDTO
.
setReferId
(
id
);
taskDTO
.
setTaskMethod
(
"quartzMemberExport"
);
taskDTO
.
setTaskService
(
"com.gic.haoban.app.customer.service.api.service.MemberExportApiService"
);
return
taskDTO
;
}
}
haoban-manage3-web/src/main/java/com/gic/haoban/manage/web/interceptor/WebInterceptor.java
View file @
9aa05ad2
...
...
@@ -10,6 +10,7 @@ import com.gic.haoban.manage.web.auth.AuthRequestUtil;
import
com.gic.haoban.manage.web.errCode.HaoBanErrCode
;
import
com.gic.haoban.manage.web.vo.LoginVO
;
import
com.gic.redis.data.util.GicRateLimiter
;
import
org.apache.commons.lang3.StringUtils
;
import
org.slf4j.Logger
;
import
org.slf4j.LoggerFactory
;
...
...
@@ -37,7 +38,7 @@ public class WebInterceptor extends HandlerInterceptorAdapter {
// @Autowired
// private ClerkRightManageService clerkRightManageService;
private
static
String
MOUDLE
=
"haoban-manage3-web"
;
private
void
errorResult
(
HttpServletResponse
httpServletResponse
,
HaoBanErrCode
errCode
)
{
HaobanResponse
response
=
new
HaobanResponse
();
...
...
@@ -98,6 +99,17 @@ public class WebInterceptor extends HandlerInterceptorAdapter {
if
(
loginUser
.
getStaffDTO
()
!=
null
)
{
httpServletRequest
.
setAttribute
(
"staffDTO"
,
loginUser
.
getStaffDTO
());
}
String
wxEnterpriseId
=
loginUser
.
getWxEnterpriseId
();
GicRateLimiter
instance
=
GicRateLimiter
.
getInstance
(
MOUDLE
);
Long
acquire
=
instance
.
acquire
(
requestURI
,
wxEnterpriseId
);
logger
.
info
(
"限流返回值:{},{}"
,
requestURI
,
acquire
);
if
(
acquire
.
equals
(
0
))
{
this
.
errorResult
(
httpServletResponse
,
HaoBanErrCode
.
ERR_13
);
logger
.
info
(
"限流!"
);
return
false
;
}
return
true
;
}
...
...
haoban-manage3-wx/src/main/java/com/gic/haoban/manage/web/controller/ClerkController.java
View file @
9aa05ad2
...
...
@@ -72,6 +72,8 @@ public class ClerkController extends WebBaseController{
private
ClerkNewService
clerkNewService
;
@Autowired
private
AuditSettingApiService
auditSettingApiService
;
@Autowired
private
DealSyncOperationApiService
dealSyncOperationApiService
;
//选择成员列表
@RequestMapping
(
"/staff-list"
)
public
HaobanResponse
staffList
(
String
storeId
)
{
...
...
@@ -394,13 +396,20 @@ public class ClerkController extends WebBaseController{
json
.
put
(
"wxUserId"
,
staff
.
getWxUserId
());
json
.
put
(
"wxEnterpriseId"
,
wxEnterpriseId
);
json
.
put
(
"storeId"
,
storeId
);
logger
.
info
(
"【刷下微信好友】{},{},{}"
,
RouterConstant
.
FRESH_WX_FRIEND_SERVICENAME
,
RouterConstant
.
INIT_FRESH_WX_FRIEND_METHODNAME
,
json
.
toJSONString
());
try
{
GICMQClientUtil
.
getClientInstance
().
sendCommonMessage
(
RouterConstant
.
ROUTERTYPE
,
json
.
toJSONString
(),
RouterConstant
.
FRESH_WX_FRIEND_SERVICENAME
,
RouterConstant
.
INIT_FRESH_WX_FRIEND_METHODNAME
);
}
catch
(
Exception
e
)
{
logger
.
info
(
e
.
getMessage
(),
e
);
// logger.info("【刷下微信好友】{},{},{}",RouterConstant.FRESH_WX_FRIEND_SERVICENAME,RouterConstant.INIT_FRESH_WX_FRIEND_METHODNAME,json.toJSONString());
String
taskName
=
"刷新企业微信好友("
+
staff
.
getStaffName
()+
")"
;
String
taskId
=
dealSyncOperationApiService
.
createWxFriendSingleTask
(
wxEnterpriseId
,
taskName
,
staffId
,
staff
.
getStaffName
());
if
(
StringUtils
.
isNotBlank
(
taskId
)){
dealSyncOperationApiService
.
dealWxFriendClerkSingle
(
taskId
,
wxUserId
,
staffId
,
wxEnterpriseId
);
}
else
{
return
resultResponse
(
HaoBanErrCode
.
ERR_999
);
}
// try {
// GICMQClientUtil.getClientInstance().sendCommonMessage(RouterConstant.ROUTERTYPE, json.toJSONString(),
// RouterConstant.FRESH_WX_FRIEND_SERVICENAME, RouterConstant.INIT_FRESH_WX_FRIEND_METHODNAME);
// } catch (Exception e) {
// logger.info(e.getMessage(),e);
// }
// memberUnionidRelatedApiService.freshWxFrend(wxEnterpriseId, staff.getWxUserId(),storeId);
}
else
{
...
...
haoban-manage3-wx/src/main/webapp/WEB-INF/dubbo-haoban-manage-wx.xml
View file @
9aa05ad2
...
...
@@ -61,6 +61,6 @@
<dubbo:reference
interface=
"com.gic.clerk.api.service.ClerkNewService"
id=
"clerkNewService"
/>
<dubbo:reference
interface=
"com.gic.haoban.manage.api.service.DealSyncOperationApiService"
id=
"dealSyncOperationApiService"
/>
</beans>
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