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
d8b0514d
Commit
d8b0514d
authored
Aug 22, 2023
by
songyinghui
Browse files
Options
Browse Files
Download
Plain Diff
Merge remote-tracking branch 'origin/master' into feature-content4
parents
6447d09d
375a592a
Expand all
Show whitespace changes
Inline
Side-by-side
Showing
29 changed files
with
624 additions
and
289 deletions
+624
-289
StaffActiveAllocationDTO.java
...m/gic/haoban/manage/api/dto/StaffActiveAllocationDTO.java
+37
-0
DealSyncOperationApiService.java
...aoban/manage/api/service/DealSyncOperationApiService.java
+3
-0
StaffApiService.java
...va/com/gic/haoban/manage/api/service/StaffApiService.java
+2
-0
TestController.java
...gic/haoban/manage/web/controller/test/TestController.java
+16
-0
TabHaobanExternalClerkRelatedMapper.java
...rvice/dao/mapper/TabHaobanExternalClerkRelatedMapper.java
+1
-1
TabHaobanQywxFeeOrderAccountMapper.java
...ce/dao/mapper/fee/TabHaobanQywxFeeOrderAccountMapper.java
+5
-4
ExternalClerkRelatedService.java
...n/manage/service/service/ExternalClerkRelatedService.java
+1
-1
PreDealService.java
...com/gic/haoban/manage/service/service/PreDealService.java
+2
-2
HaobanQywxFeeOrderAccountService.java
...service/service/fee/HaobanQywxFeeOrderAccountService.java
+6
-2
HaobanQywxFeeOrderService.java
...manage/service/service/fee/HaobanQywxFeeOrderService.java
+2
-0
HaobanQywxFeeOrderAccountServiceImpl.java
...ervice/fee/impl/HaobanQywxFeeOrderAccountServiceImpl.java
+12
-3
HaobanQywxFeeOrderServiceImpl.java
...rvice/service/fee/impl/HaobanQywxFeeOrderServiceImpl.java
+5
-0
ExternalClerkRelatedServiceImpl.java
...service/service/impl/ExternalClerkRelatedServiceImpl.java
+3
-3
PreDealServiceImpl.java
...aoban/manage/service/service/impl/PreDealServiceImpl.java
+18
-40
StaffClerkRelationServiceImpl.java
...e/service/service/impl/StaffClerkRelationServiceImpl.java
+1
-1
DealSyncOperationApiServiceImpl.java
...ice/service/out/impl/DealSyncOperationApiServiceImpl.java
+136
-36
ExternalClerkRelatedApiServiceImpl.java
.../service/out/impl/ExternalClerkRelatedApiServiceImpl.java
+1
-1
MemberUnionidRelatedApiServiceImpl.java
.../service/out/impl/MemberUnionidRelatedApiServiceImpl.java
+8
-5
StaffApiServiceImpl.java
.../manage/service/service/out/impl/StaffApiServiceImpl.java
+105
-0
FriendClerkSyncNewOperation.java
...nage/service/task/friend/FriendClerkSyncNewOperation.java
+26
-61
FriendSyncNewOperation.java
...an/manage/service/task/friend/FriendSyncNewOperation.java
+19
-56
SelfFriendSyncNewOperation.java
...anage/service/task/friend/SelfFriendSyncNewOperation.java
+16
-61
PreDealLogMapper.xml
...e3-service/src/main/resources/mapper/PreDealLogMapper.xml
+12
-12
TabHaobanExternalClerkRelatedMapper.xml
.../resources/mapper/TabHaobanExternalClerkRelatedMapper.xml
+3
-0
TabHaobanQywxFeeOrderAccountMapper.xml
...sources/mapper/fee/TabHaobanQywxFeeOrderAccountMapper.xml
+14
-0
StaffController.java
...com/gic/haoban/manage/web/controller/StaffController.java
+19
-0
GroupChatController.java
...aoban/manage/web/controller/chat/GroupChatController.java
+37
-0
StaffActiveAllocationVO.java
...com/gic/haoban/manage/web/vo/StaffActiveAllocationVO.java
+37
-0
GroupChatUserQuitVO.java
...om/gic/haoban/manage/web/vo/chat/GroupChatUserQuitVO.java
+77
-0
No files found.
haoban-manage3-api/src/main/java/com/gic/haoban/manage/api/dto/StaffActiveAllocationDTO.java
0 → 100644
View file @
d8b0514d
package
com
.
gic
.
haoban
.
manage
.
api
.
dto
;
import
java.io.Serializable
;
/**
* @description:
* @Author: wenhua
* @Date: 2023/8/16 10:08
*/
public
class
StaffActiveAllocationDTO
implements
Serializable
{
private
static
final
long
serialVersionUID
=
1L
;
/**
* 失败个数
*/
private
Integer
nums
;
/**
* 失败原因
*/
private
String
errMessage
;
public
Integer
getNums
()
{
return
nums
;
}
public
void
setNums
(
Integer
nums
)
{
this
.
nums
=
nums
;
}
public
String
getErrMessage
()
{
return
errMessage
;
}
public
void
setErrMessage
(
String
errMessage
)
{
this
.
errMessage
=
errMessage
;
}
}
haoban-manage3-api/src/main/java/com/gic/haoban/manage/api/service/DealSyncOperationApiService.java
View file @
d8b0514d
...
...
@@ -209,4 +209,7 @@ public interface DealSyncOperationApiService {
* @param taskId
*/
void
dealTagTask
(
String
wxEnterpriseId
,
String
enterpriseId
,
List
<
String
>
tagIds
,
String
taskId
);
void
taskStatusTimer
(
String
params
)
;
void
staffTaskStatusTimer
(
String
params
)
;
}
haoban-manage3-api/src/main/java/com/gic/haoban/manage/api/service/StaffApiService.java
View file @
d8b0514d
...
...
@@ -356,4 +356,6 @@ public interface StaffApiService {
*/
com
.
gic
.
api
.
base
.
commons
.
ServiceResponse
<
Boolean
>
syncQywxStaffList
(
String
params
)
;
com
.
gic
.
api
.
base
.
commons
.
ServiceResponse
<
StaffActiveAllocationDTO
>
staffActiveAllocation
(
String
wxEnterpriseId
,
String
staffIds
);
}
haoban-manage3-operation-web/src/main/java/com/gic/haoban/manage/web/controller/test/TestController.java
View file @
d8b0514d
...
...
@@ -15,6 +15,7 @@ import com.gic.haoban.manage.web.controller.WebBaseController;
import
com.gic.haoban.manage.web.errCode.HaoBanErrCode
;
import
com.gic.member.tag.api.service.MemberTagImportDealService
;
import
com.gic.mq.sdk.GicMQClient
;
import
com.gic.redis.data.util.RedisUtil
;
import
com.gic.sharing.core.service.api.service.MqApiService
;
import
com.task.allocation.qo.AllocationTaskQo
;
import
com.task.allocation.qo.TaskAllocationComputed
;
...
...
@@ -263,4 +264,19 @@ public class TestController extends WebBaseController {
}
return
resultResponse
(
HaoBanErrCode
.
ERR_1
);
}
@RequestMapping
(
"/get-cache"
)
public
Object
getCache
(
String
key
)
{
Object
o
=
RedisUtil
.
getCache
(
key
)
;
return
o
;
}
@RequestMapping
(
"/del-cache"
)
public
Object
delCache
(
String
key
)
{
Object
o
=
RedisUtil
.
getCache
(
key
)
;
if
(
null
!=
o
)
{
RedisUtil
.
delCache
(
key
);
}
return
o
;
}
}
haoban-manage3-service/src/main/java/com/gic/haoban/manage/service/dao/mapper/TabHaobanExternalClerkRelatedMapper.java
View file @
d8b0514d
...
...
@@ -420,7 +420,7 @@ public interface TabHaobanExternalClerkRelatedMapper {
*/
void
deleteByWxEnterpriseId
(
@Param
(
"wxEnterpriseId"
)
String
wxEnterpriseId
,
@Param
(
"enterpriseIdList"
)
List
<
String
>
enterpriseIdList
);
List
<
TabHaobanExternalClerkRelated
>
getAddTimeByMemberId
(
@Param
(
"memberId"
)
String
memberId
,
@Param
(
"enterpriseId"
)
String
enterpriseId
);
List
<
TabHaobanExternalClerkRelated
>
getAddTimeByMemberId
(
@Param
(
"memberId"
)
String
memberId
,
@Param
(
"enterpriseId"
)
String
enterpriseId
,
@Param
(
"flag"
)
String
flag
);
/**
* 根据外部联系人id查询memberId
...
...
haoban-manage3-service/src/main/java/com/gic/haoban/manage/service/dao/mapper/fee/TabHaobanQywxFeeOrderAccountMapper.java
View file @
d8b0514d
package
com
.
gic
.
haoban
.
manage
.
service
.
dao
.
mapper
.
fee
;
import
java.util.List
;
import
org.apache.ibatis.annotations.Param
;
import
com.gic.haoban.manage.service.entity.fee.TabHaobanQywxFeeOrderAccount
;
import
org.apache.ibatis.annotations.Param
;
import
java.util.HashMap
;
import
java.util.List
;
...
...
@@ -53,5 +50,9 @@ public interface TabHaobanQywxFeeOrderAccountMapper {
int
countOrderAccountStatus
(
@Param
(
"status"
)
Integer
status
,
@Param
(
"wxEnterpriseId"
)
String
wxEnterpriseId
);
List
<
HashMap
<
String
,
Integer
>>
countStatusByWxEnterpriseId
(
@Param
(
"wxEnterpriseId"
)
String
wxEnterpriseId
);
List
<
TabHaobanQywxFeeOrderAccount
>
selectByWxEnterpriseId
(
@Param
(
"wxEnterpriseId"
)
String
wxEnterpriseId
);
void
updateByActiveCode
(
@Param
(
"wxEnterpriseId"
)
String
wxEnterpriseId
,
@Param
(
"activeCode"
)
String
activeCode
);
}
haoban-manage3-service/src/main/java/com/gic/haoban/manage/service/service/ExternalClerkRelatedService.java
View file @
d8b0514d
...
...
@@ -113,7 +113,7 @@ public interface ExternalClerkRelatedService {
* @param enterpriseIdList
*/
void
deleteByWxEnterpriseId
(
String
wxEnterpriseId
,
List
<
String
>
enterpriseIdList
);
List
<
TabHaobanExternalClerkRelated
>
getAddTimeByMemberId
(
String
memberId
,
String
enterpriseId
);
List
<
TabHaobanExternalClerkRelated
>
getAddTimeByMemberId
(
String
memberId
,
String
enterpriseId
,
String
flag
);
/**
* 根据外部联系人id查询memberId
...
...
haoban-manage3-service/src/main/java/com/gic/haoban/manage/service/service/PreDealService.java
View file @
d8b0514d
...
...
@@ -92,8 +92,6 @@ public interface PreDealService {
*/
public
int
countByTaskId
(
String
taskId
,
int
dataType
,
int
status
);
public
int
countByTaskId
(
String
taskId
);
/**
* 获取任务数量
*
...
...
@@ -201,5 +199,7 @@ public interface PreDealService {
*/
public
List
<
String
>
listReDataIdByPDataId
(
String
taskId
,
String
pDataId
,
Integer
dataType
);
public
void
addTaskStatusCache
(
String
taskId
)
;
public
void
addTaskStaffStatusCache
(
String
taskId
,
String
staffId
,
int
type
)
;
}
haoban-manage3-service/src/main/java/com/gic/haoban/manage/service/service/fee/HaobanQywxFeeOrderAccountService.java
View file @
d8b0514d
package
com
.
gic
.
haoban
.
manage
.
service
.
service
.
fee
;
import
java.util.List
;
import
com.gic.haoban.manage.service.entity.fee.TabHaobanQywxFeeOrderAccount
;
import
java.util.List
;
/**
* 企业微信收费订单账号(激活码)(TabHaobanQywxFeeOrderAccount)表服务接口
*
...
...
@@ -31,4 +31,8 @@ public interface HaobanQywxFeeOrderAccountService {
*/
int
countOrderAccountStatus
(
Integer
status
,
String
wxEnterpriseId
);
List
<
TabHaobanQywxFeeOrderAccount
>
selectByWxEnterpriseId
(
String
wxEnterpriseId
);
void
updateByActiveCode
(
String
wxEnterpriseId
,
String
activeCode
);
}
haoban-manage3-service/src/main/java/com/gic/haoban/manage/service/service/fee/HaobanQywxFeeOrderService.java
View file @
d8b0514d
...
...
@@ -42,4 +42,6 @@ public interface HaobanQywxFeeOrderService {
*/
List
<
TabHaobanQywxFeeOrder
>
listOrder
(
String
wxEnterpriseId
)
;
TabHaobanQywxFeeOrder
selectByOrderId
(
String
wxEnterpriseId
,
String
orderId
);
}
haoban-manage3-service/src/main/java/com/gic/haoban/manage/service/service/fee/impl/HaobanQywxFeeOrderAccountServiceImpl.java
View file @
d8b0514d
...
...
@@ -4,12 +4,11 @@ import com.gic.commons.util.UniqueIdUtils;
import
com.gic.haoban.manage.service.dao.mapper.fee.TabHaobanQywxFeeOrderAccountMapper
;
import
com.gic.haoban.manage.service.entity.fee.TabHaobanQywxFeeOrderAccount
;
import
com.gic.haoban.manage.service.service.fee.HaobanQywxFeeOrderAccountService
;
import
java.util.List
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Service
;
import
java.util.List
;
/**
* 企业微信收费订单账号(激活码)(TabHaobanQywxFeeOrderAccount)表服务实现类
*
...
...
@@ -48,4 +47,14 @@ public class HaobanQywxFeeOrderAccountServiceImpl implements HaobanQywxFeeOrderA
return
tabHaobanQywxFeeOrderAccountMapper
.
countOrderAccountStatus
(
status
,
wxEnterpriseId
);
}
@Override
public
List
<
TabHaobanQywxFeeOrderAccount
>
selectByWxEnterpriseId
(
String
wxEnterpriseId
)
{
return
tabHaobanQywxFeeOrderAccountMapper
.
selectByWxEnterpriseId
(
wxEnterpriseId
);
}
@Override
public
void
updateByActiveCode
(
String
wxEnterpriseId
,
String
activeCode
)
{
tabHaobanQywxFeeOrderAccountMapper
.
updateByActiveCode
(
wxEnterpriseId
,
activeCode
);
}
}
haoban-manage3-service/src/main/java/com/gic/haoban/manage/service/service/fee/impl/HaobanQywxFeeOrderServiceImpl.java
View file @
d8b0514d
...
...
@@ -55,4 +55,9 @@ public class HaobanQywxFeeOrderServiceImpl implements HaobanQywxFeeOrderService
public
List
<
TabHaobanQywxFeeOrder
>
listOrder
(
String
wxEnterpriseId
)
{
return
this
.
tabHaobanQywxFeeOrderMapper
.
listOrder
(
wxEnterpriseId
);
}
@Override
public
TabHaobanQywxFeeOrder
selectByOrderId
(
String
wxEnterpriseId
,
String
orderId
)
{
return
this
.
tabHaobanQywxFeeOrderMapper
.
selectByOrderId
(
wxEnterpriseId
,
orderId
);
}
}
haoban-manage3-service/src/main/java/com/gic/haoban/manage/service/service/impl/ExternalClerkRelatedServiceImpl.java
View file @
d8b0514d
...
...
@@ -127,7 +127,7 @@ public class ExternalClerkRelatedServiceImpl implements ExternalClerkRelatedServ
logger
.
info
(
"通知会员 删除会员后更新为非企微好友 memberId:{}"
,
memberId
);
// memberApiService.updateMemberQywxFlag(enterpriseId, memberId, 0);
// 查询好办外部联系人接口,获取最近删除的时间
List
<
TabHaobanExternalClerkRelated
>
memberList
=
this
.
getAddTimeByMemberId
(
memberId
,
enterpriseId
);
List
<
TabHaobanExternalClerkRelated
>
memberList
=
this
.
getAddTimeByMemberId
(
memberId
,
enterpriseId
,
null
);
Date
date
=
new
Date
();
Date
opTime
=
new
Date
(
0
);
if
(
CollectionUtils
.
isNotEmpty
(
memberList
)){
...
...
@@ -544,8 +544,8 @@ public class ExternalClerkRelatedServiceImpl implements ExternalClerkRelatedServ
}
@Override
public
List
<
TabHaobanExternalClerkRelated
>
getAddTimeByMemberId
(
String
memberId
,
String
enterpriseId
)
{
return
this
.
mapper
.
getAddTimeByMemberId
(
memberId
,
enterpriseId
);
public
List
<
TabHaobanExternalClerkRelated
>
getAddTimeByMemberId
(
String
memberId
,
String
enterpriseId
,
String
flag
)
{
return
this
.
mapper
.
getAddTimeByMemberId
(
memberId
,
enterpriseId
,
flag
);
}
@Override
...
...
haoban-manage3-service/src/main/java/com/gic/haoban/manage/service/service/impl/PreDealServiceImpl.java
View file @
d8b0514d
...
...
@@ -14,6 +14,7 @@ import com.gic.redis.data.util.RedisUtil;
import
com.github.pagehelper.PageHelper
;
import
com.github.pagehelper.PageInfo
;
import
org.apache.commons.collections.CollectionUtils
;
import
org.redisson.api.RSet
;
import
org.slf4j.Logger
;
import
org.slf4j.LoggerFactory
;
import
org.springframework.beans.factory.annotation.Autowired
;
...
...
@@ -30,6 +31,9 @@ import java.util.List;
@Service
public
class
PreDealServiceImpl
implements
PreDealService
{
public
static
final
String
HAOBAN_TASK_ID_SET_CACHE
=
"haobanTaskSyncIdSetCache"
;
public
static
final
String
HAOBAN_TASK_STAFF_ID_SET_CACHE
=
"haobanTaskStaffSyncIdSetCache"
;
@Autowired
private
PreDealLogMapper
preDealLogMapper
;
private
static
final
Logger
logger
=
LoggerFactory
.
getLogger
(
PreDealServiceImpl
.
class
);
...
...
@@ -93,16 +97,8 @@ public class PreDealServiceImpl implements PreDealService {
@Override
public
boolean
checkTask
(
String
taskId
,
int
dataType
)
{
String
key
=
taskId
+
"_checkTask"
+
dataType
;
Object
o
=
null
;
//RedisUtil.getCache(key) ;
if
(
null
==
o
)
{
int
i
=
preDealLogMapper
.
checkTask
(
taskId
,
dataType
,
PreDealStatusEnum
.
pre
.
getVal
());
boolean
flag
=
(
i
==
0
)
;
RedisUtil
.
setCache
(
key
,
flag
,
60
*
3
l
);
return
flag
;
}
else
{
return
(
boolean
)
o
;
}
return
(
i
==
0
)
;
}
@Override
...
...
@@ -116,19 +112,6 @@ public class PreDealServiceImpl implements PreDealService {
}
@Override
public
int
countByTaskId
(
String
taskId
)
{
String
key
=
taskId
+
"countByTaskId"
;
Object
o
=
null
;
//RedisUtil.getCache(key) ;
if
(
null
==
o
)
{
int
count
=
this
.
preDealLogMapper
.
countByTaskId
(
taskId
,-
1
,
0
)
;
RedisUtil
.
setCache
(
key
,
count
,
60
*
3
l
);
return
count
;
}
else
{
return
(
int
)
o
;
}
}
@Override
public
int
countExcepAndPreByTaskId
(
String
taskId
,
int
dataType
)
{
return
preDealLogMapper
.
countExcepAndPreByTaskId
(
taskId
,
dataType
);
}
...
...
@@ -192,34 +175,29 @@ public class PreDealServiceImpl implements PreDealService {
@Override
public
boolean
checkFriendTask
(
String
taskId
,
int
dataType
)
{
String
key
=
taskId
+
"_checkFriendTask"
+
dataType
;
Object
o
=
null
;
//RedisUtil.getCache(key) ;
if
(
null
==
o
)
{
int
i
=
preDealLogMapper
.
checkTaskFriend
(
taskId
,
null
,
dataType
);
boolean
flag
=
(
i
==
0
)
;
RedisUtil
.
setCache
(
key
,
flag
,
60
*
3
l
);
return
flag
;
}
else
{
return
(
boolean
)
o
;
}
return
(
i
==
0
)
;
}
@Override
public
boolean
checkFriendTaskByPDataId
(
String
taskId
,
String
pDataId
,
int
dataType
)
{
String
key
=
taskId
+
"_checkFriendTaskByPDataId"
+
dataType
;
Object
o
=
null
;
//RedisUtil.getCache(key) ;
if
(
null
==
o
)
{
int
i
=
preDealLogMapper
.
checkTaskFriend
(
taskId
,
pDataId
,
dataType
);
boolean
flag
=
(
i
==
0
)
;
RedisUtil
.
setCache
(
key
,
flag
,
60
*
3
l
);
return
flag
;
}
else
{
return
(
boolean
)
o
;
}
return
(
i
==
0
)
;
}
@Override
public
List
<
String
>
listReDataIdByPDataId
(
String
taskId
,
String
pDataId
,
Integer
dataType
)
{
return
preDealLogMapper
.
listReDataIdByPDataId
(
taskId
,
pDataId
,
dataType
);
}
@Override
public
void
addTaskStatusCache
(
String
taskId
){
RSet
<
String
>
set
=
RedisUtil
.
getRedisClient
().
getSet
(
HAOBAN_TASK_ID_SET_CACHE
);
set
.
add
(
taskId
)
;
}
@Override
public
void
addTaskStaffStatusCache
(
String
taskId
,
String
staffId
,
int
type
)
{
String
key
=
taskId
+
"#"
+
staffId
+
"#"
+
type
;
RSet
<
String
>
set
=
RedisUtil
.
getRedisClient
().
getSet
(
HAOBAN_TASK_STAFF_ID_SET_CACHE
);
set
.
add
(
key
)
;
}
}
haoban-manage3-service/src/main/java/com/gic/haoban/manage/service/service/impl/StaffClerkRelationServiceImpl.java
View file @
d8b0514d
...
...
@@ -223,7 +223,7 @@ public class StaffClerkRelationServiceImpl implements StaffClerkRelationService
logger
.
info
(
"通知会员 删除企微好友,该会员无任何好友关系,memberId:{}"
,
memberId
);
// memberApiService.updateMemberQywxFlag(enterpriseId, memberId, 0);
// 查询好办外部联系人接口,获取最近删除的时间
List
<
TabHaobanExternalClerkRelated
>
memberList
=
externalClerkRelatedService
.
getAddTimeByMemberId
(
memberId
,
enterpriseId
);
List
<
TabHaobanExternalClerkRelated
>
memberList
=
externalClerkRelatedService
.
getAddTimeByMemberId
(
memberId
,
enterpriseId
,
null
);
Date
date
=
new
Date
();
Date
opTime
=
new
Date
(
0
);
if
(
CollectionUtils
.
isNotEmpty
(
memberList
)){
...
...
haoban-manage3-service/src/main/java/com/gic/haoban/manage/service/service/out/impl/DealSyncOperationApiServiceImpl.java
View file @
d8b0514d
This diff is collapsed.
Click to expand it.
haoban-manage3-service/src/main/java/com/gic/haoban/manage/service/service/out/impl/ExternalClerkRelatedApiServiceImpl.java
View file @
d8b0514d
...
...
@@ -761,7 +761,7 @@ public class ExternalClerkRelatedApiServiceImpl implements ExternalClerkRelatedA
return
;
}
staffList
=
staffList
.
stream
().
distinct
().
collect
(
Collectors
.
toList
());
log
.
info
(
"
staffList={}"
,
JSON
.
toJSONString
(
staffList
));
log
.
info
(
"
刷新好友,关联导购的staff数={}"
,
staffList
.
size
(
));
for
(
String
staffId
:
staffList
)
{
this
.
dealSyncOperationApiService
.
dealWxFriendClerkSingle
(
taskId
,
staffId
,
staffId
,
wxEnterpriseId
);
}
...
...
haoban-manage3-service/src/main/java/com/gic/haoban/manage/service/service/out/impl/MemberUnionidRelatedApiServiceImpl.java
View file @
d8b0514d
...
...
@@ -737,7 +737,7 @@ public class MemberUnionidRelatedApiServiceImpl implements MemberUnionidRelatedA
log
.
info
(
"通知会员 合并会员后更新为企微好友,memberId:{}"
,
memberId
);
// this.memberApiService.updateMemberQywxFlag(enterpriseId, memberId, 1);
// 查询好办外部联系人接口,获取最早的时间替换当前时间
List
<
TabHaobanExternalClerkRelated
>
memberList
=
externalClerkRelatedService
.
getAddTimeByMemberId
(
memberId
,
enterpriseId
);
List
<
TabHaobanExternalClerkRelated
>
memberList
=
externalClerkRelatedService
.
getAddTimeByMemberId
(
memberId
,
enterpriseId
,
null
);
Date
date
=
new
Date
();
Date
opTime
=
new
Date
(
0
);
Date
firstTime
=
new
Date
();
...
...
@@ -1289,9 +1289,10 @@ public class MemberUnionidRelatedApiServiceImpl implements MemberUnionidRelatedA
String
corpid
=
qwDTO
.
getThirdCorpid
();
String
userId
=
""
;
TabHaobanStaff
staff
=
staffService
.
selectByUserIdAndEnterpriseId
(
wxUserId
,
wxEnterpriseId
);
List
<
String
>
list
=
new
ArrayList
<>();
if
(
staff
==
null
)
{
log
.
error
(
"员工为空,wxUserId:{}"
,
wxUserId
);
return
null
;
return
list
;
}
if
(
qwDTO
.
needOpenUserId3th
())
{
userId
=
staff
.
getWxOpenUseId
();
...
...
@@ -1300,7 +1301,6 @@ public class MemberUnionidRelatedApiServiceImpl implements MemberUnionidRelatedA
}
log
.
info
(
"【获取第三方应用好友】wxEnterpriseId={},userId={}"
,
wxEnterpriseId
,
userId
);
String
wxRes
=
qywxUserApiService
.
listExternalUserid
(
corpid
,
config
.
getWxSuiteid
(),
userId
);
List
<
String
>
list
=
new
ArrayList
<>();
log
.
info
(
"【查询第三方应用】res={}"
,
wxRes
);
if
(
"1"
.
equals
(
wxRes
))
{
log
.
info
(
"代表需要重试"
);
...
...
@@ -1479,12 +1479,15 @@ public class MemberUnionidRelatedApiServiceImpl implements MemberUnionidRelatedA
this
.
pushTagSync
(
memberId
,
wxEnterpriseId
,
enterpriseId
);
log
.
info
(
"通知会员 更新为企微好友 memberId:{}"
,
memberId
);
// memberApiService.updateMemberQywxFlag(enterpriseId, memberId, 1);
List
<
TabHaobanExternalClerkRelated
>
memberList
=
externalClerkRelatedService
.
getAddTimeByMemberId
(
memberId
,
enterpriseId
);
List
<
TabHaobanExternalClerkRelated
>
memberList
=
externalClerkRelatedService
.
getAddTimeByMemberId
(
memberId
,
enterpriseId
,
"1"
);
Date
date
=
new
Date
();
Date
opTime
=
new
Date
(
0
);
Date
firstTime
=
new
Date
();
if
(
CollectionUtils
.
isNotEmpty
(
memberList
)){
for
(
TabHaobanExternalClerkRelated
a
:
memberList
){
if
(
null
==
a
.
getAddTime
())
{
continue
;
}
Date
addTime
=
new
Date
(
a
.
getAddTime
()
*
1000L
);
if
((
a
.
getStatusFlag
()
==
1
||
a
.
getStatusFlag
()
==
3
||
a
.
getStatusFlag
()
==
4
)
&&
opTime
.
before
(
addTime
)){
opTime
=
addTime
;
...
...
@@ -1494,9 +1497,9 @@ public class MemberUnionidRelatedApiServiceImpl implements MemberUnionidRelatedA
firstTime
=
addTime
;
}
}
}
this
.
memberApiService
.
updateMemberQywxEveryOccasion
(
enterpriseId
,
memberId
,
1
,
date
,
firstTime
);
}
}
return
""
;
}
...
...
haoban-manage3-service/src/main/java/com/gic/haoban/manage/service/service/out/impl/StaffApiServiceImpl.java
View file @
d8b0514d
...
...
@@ -37,10 +37,14 @@ import com.gic.haoban.manage.service.config.Config;
import
com.gic.haoban.manage.service.dao.mapper.StaffDepartmentRelatedMapper
;
import
com.gic.haoban.manage.service.dao.mapper.StaffMapper
;
import
com.gic.haoban.manage.service.entity.*
;
import
com.gic.haoban.manage.service.entity.fee.TabHaobanQywxFeeOrder
;
import
com.gic.haoban.manage.service.entity.fee.TabHaobanQywxFeeOrderAccount
;
import
com.gic.haoban.manage.service.errorcode.QywxErrCode
;
import
com.gic.haoban.manage.service.pojo.bo.StaffListBO
;
import
com.gic.haoban.manage.service.service.*
;
import
com.gic.haoban.manage.service.service.chat.GroupChatService
;
import
com.gic.haoban.manage.service.service.fee.HaobanQywxFeeOrderAccountService
;
import
com.gic.haoban.manage.service.service.fee.HaobanQywxFeeOrderService
;
import
com.gic.haoban.manage.service.util.EmojiFilterUtil
;
import
com.gic.redis.data.util.RedisUtil
;
import
com.gic.thirdparty.cloudfile.CloudFileUtil
;
...
...
@@ -50,6 +54,8 @@ import com.gic.thirdparty.cloudfile.pojo.CloudFileInfo;
import
com.gic.wechat.api.dto.qywx.QywxNewUseridDTO
;
import
com.gic.wechat.api.dto.qywx.UserDTO
;
import
com.gic.wechat.api.dto.qywx.fee.AccountTransferUserDTO
;
import
com.gic.wechat.api.dto.qywx.fee.FeeOrderDeatilResponseDTO
;
import
com.gic.wechat.api.dto.qywx.response.QywxResponseDTO
;
import
com.gic.wechat.api.service.qywx.QywxOrderApiService
;
import
com.gic.wechat.api.service.qywx.QywxUserApiService
;
import
com.github.pagehelper.PageHelper
;
...
...
@@ -121,6 +127,10 @@ public class StaffApiServiceImpl implements StaffApiService {
private
ExternalClerkRelatedService
externalClerkRelatedService
;
@Autowired
private
WxEnterpriseActiveDataService
wxEnterpriseActiveDataService
;
@Autowired
private
HaobanQywxFeeOrderAccountService
haobanQywxFeeOrderAccountService
;
@Autowired
private
HaobanQywxFeeOrderService
haobanQywxFeeOrderService
;
@Override
public
StaffDTO
selectById
(
String
staffId
)
{
...
...
@@ -1183,6 +1193,7 @@ public class StaffApiServiceImpl implements StaffApiService {
return
com
.
gic
.
api
.
base
.
commons
.
ServiceResponse
.
failure
(
"-9999"
,
"成员userid不存在!"
);
}
String
staffId
=
staff
.
getStaffId
();
StaffActiveDataDTO
activeDataDTO
=
wxEnterpriseActiveDataService
.
getWxEnterpriseActiveDataByWxEnterpriseId
(
wxEnterprise
.
getWxEnterpriseId
());
if
(
null
==
activeDataDTO
){
logger
.
info
(
"查询不到企业微信id->{}的许可账号统计信息!"
,
wxEnterprise
.
getWxEnterpriseId
());
...
...
@@ -1215,6 +1226,9 @@ public class StaffApiServiceImpl implements StaffApiService {
}
staffMapper
.
updateActiveStatusById
(
staffId
,
timeStampDate
,
expireTimeDate
,
activeCode
);
groupChatService
.
initStaffGroupChat
(
staffId
);
//更新好办激活码许可表
haobanQywxFeeOrderAccountService
.
updateByActiveCode
(
wxEnterprise
.
getWxEnterpriseId
(),
activeCode
);
}
return
com
.
gic
.
api
.
base
.
commons
.
ServiceResponse
.
success
(
true
);
}
...
...
@@ -1283,4 +1297,95 @@ public class StaffApiServiceImpl implements StaffApiService {
}
return
null
;
}
@Override
public
com
.
gic
.
api
.
base
.
commons
.
ServiceResponse
<
StaffActiveAllocationDTO
>
staffActiveAllocation
(
String
wxEnterpriseId
,
String
staffIds
)
{
StaffActiveAllocationDTO
result
=
new
StaffActiveAllocationDTO
();
if
(
StrUtil
.
isBlank
(
staffIds
)){
return
com
.
gic
.
api
.
base
.
commons
.
ServiceResponse
.
failure
(
"-9999"
,
"参数不能为空"
);
}
WxEnterpriseDTO
wxEnterpriseDTO
=
wxEnterpriseService
.
selectById
(
wxEnterpriseId
);
if
(
wxEnterpriseDTO
==
null
)
{
return
com
.
gic
.
api
.
base
.
commons
.
ServiceResponse
.
failure
(
"-9999"
,
"企业微信不存在!!"
);
}
String
openCorpid
=
wxEnterpriseDTO
.
getOpenCorpid
();
String
serviceCorpid
=
config
.
getCorpid
();
List
<
String
>
staffIdList
=
Arrays
.
asList
(
staffIds
.
split
(
","
));
List
<
TabHaobanStaff
>
haobanStaffs
=
staffMapper
.
listByIds
(
staffIdList
);
List
<
TabHaobanQywxFeeOrderAccount
>
accounts
=
haobanQywxFeeOrderAccountService
.
selectByWxEnterpriseId
(
wxEnterpriseId
);
if
(
CollUtil
.
isEmpty
(
accounts
)
||
accounts
.
size
()
<
haobanStaffs
.
size
()){
return
com
.
gic
.
api
.
base
.
commons
.
ServiceResponse
.
failure
(
"-9999"
,
"剩余可用许可数量小于激活成员数量"
);
}
if
(
CollUtil
.
isNotEmpty
(
haobanStaffs
)){
int
num
=
0
;
String
errMessage
=
null
;
for
(
int
i
=
0
;
i
<
haobanStaffs
.
size
();
i
++){
String
activeCode
=
accounts
.
get
(
i
).
getActiveCode
();
String
orderId
=
accounts
.
get
(
i
).
getOrderId
();
String
staffId
=
haobanStaffs
.
get
(
i
).
getStaffId
();
JSONObject
object
=
new
JSONObject
();
object
.
put
(
"active_code"
,
accounts
.
get
(
i
).
getActiveCode
());
object
.
put
(
"corpid"
,
openCorpid
);
String
wxUserId
=
haobanStaffs
.
get
(
i
).
getWxUserId
();
if
(
StrUtil
.
isBlank
(
wxUserId
)){
wxUserId
=
haobanStaffs
.
get
(
i
).
getWxOpenUseId
();
}
object
.
put
(
"userid"
,
wxUserId
);
com
.
gic
.
api
.
base
.
commons
.
ServiceResponse
<
QywxResponseDTO
>
response
=
qywxOrderApiService
.
activeAccount
(
serviceCorpid
,
JSON
.
toJSONString
(
object
));
if
(!
response
.
isSuccess
()){
num
++;
errMessage
=
"许可账号分配失败,复制链接查看失败原因:https://developer.work.weixin.qq.com/devtool/query?e="
+
response
.
getCode
();
}
else
{
//手动分配成功需要实时更新许可激活码状态
StaffActiveDataDTO
activeDataDTO
=
wxEnterpriseActiveDataService
.
getWxEnterpriseActiveDataByWxEnterpriseId
(
wxEnterpriseId
);
if
(
null
==
activeDataDTO
){
logger
.
info
(
"查询不到企业微信id->{}的许可账号统计信息!"
,
wxEnterpriseId
);
}
else
{
//需要区分激活码,待转移状态的激活码不需要处理
TabHaobanStaff
haobanStaff
=
staffMapper
.
getNumByActiveCode
(
wxEnterpriseId
,
activeCode
);
if
(
null
==
haobanStaff
){
//已使用的加1,已激活的加1,未激活的减1
Integer
used
=
activeDataDTO
.
getUsed
();
Integer
inactive
=
activeDataDTO
.
getInactive
();
Integer
activated
=
activeDataDTO
.
getActivated
();
used
++;
activated
++;
if
(
null
!=
inactive
&&
inactive
>
0
){
inactive
--;
}
activeDataDTO
.
setUsed
(
used
);
activeDataDTO
.
setInactive
(
inactive
);
activeDataDTO
.
setActivated
(
activated
);
wxEnterpriseActiveDataService
.
updateByStaffActiveDataDTO
(
activeDataDTO
);
}
else
{
//判断是否是其它占用的许可被当天激活
Date
delTime
=
haobanStaff
.
getDelTime
();
Date
now
=
new
Date
();
int
days
=
DateUtil
.
daysBetween
(
delTime
,
now
);
if
(
days
==
0
){
staffMapper
.
updateOccupyFlagByStaffId
(
haobanStaff
.
getStaffId
());
}
}
}
//根据订单id,查询订单详情,获取购买的时长,当前激活时间加上时长为过期时间
TabHaobanQywxFeeOrder
tabHaobanQywxFeeOrder
=
haobanQywxFeeOrderService
.
selectByOrderId
(
wxEnterpriseId
,
orderId
);
Integer
months
=
tabHaobanQywxFeeOrder
.
getMonths
();
Date
expireTime
=
null
;
if
(
null
!=
months
){
//转换成天数
months
=
months
*
31
;
expireTime
=
DateUtil
.
addDay
(
new
Date
(),
months
);
}
staffMapper
.
updateActiveStatusById
(
staffId
,
new
Date
(),
expireTime
,
activeCode
);
//更新好办激活码许可表
haobanQywxFeeOrderAccountService
.
updateByActiveCode
(
wxEnterpriseId
,
activeCode
);
}
}
result
.
setNums
(
num
);
result
.
setErrMessage
(
errMessage
);
return
com
.
gic
.
api
.
base
.
commons
.
ServiceResponse
.
success
(
result
);
}
return
com
.
gic
.
api
.
base
.
commons
.
ServiceResponse
.
failure
(
"-9999"
,
"成员不存在"
);
}
}
haoban-manage3-service/src/main/java/com/gic/haoban/manage/service/task/friend/FriendClerkSyncNewOperation.java
View file @
d8b0514d
...
...
@@ -50,8 +50,6 @@ public class FriendClerkSyncNewOperation implements BaseSyncOperation {
@Autowired
private
WxEnterpriseService
wxEnterpriseService
;
private
static
final
String
FRIEND_LOCK
=
"haoban_fresh_wx_friend_lock_"
;
private
static
final
String
TRY_AGAIN
=
"haoban_fresh_wx_friend_again_"
;
@Override
...
...
@@ -62,6 +60,7 @@ public class FriendClerkSyncNewOperation implements BaseSyncOperation {
try
{
String
wxEnterpriseId
=
dataPre
.
getWxEnterpriseId
();
String
staffId
=
dataPre
.
getDataId
()
;
this
.
preDealService
.
addTaskStatusCache
(
dataPre
.
getTaskId
());
TabHaobanStaff
staff
=
this
.
staffService
.
selectById
(
staffId
)
;
if
(
null
==
staff
)
{
logger
.
info
(
"staff不存在,staffId={}"
,
staffId
);
...
...
@@ -76,16 +75,14 @@ public class FriendClerkSyncNewOperation implements BaseSyncOperation {
List
<
String
>
selfUserIdList
=
memberUnionidRelatedApiService
.
listSelfExterialList
(
wxEnterpriseId
,
dkWxUserId
);
List
<
String
>
delUserIdList
=
selfUserIdList
;
logger
.
info
(
"selfUserIdList={}"
,
JSONObject
.
toJSONString
(
selfUserIdList
));
if
(
CollectionUtils
.
isEmpty
(
selfUserIdList
))
{
logger
.
info
(
"自建应用调用第三方接口进入重试"
);
if
(
null
==
selfUserIdList
)
{
dealFlag
=
tryAgainToMq
(
dataPre
);
reason
=
"
重试次数过多
"
;
reason
=
"
企微接口失败
"
;
return
;
}
if
(
CollectionUtils
.
isEmpty
(
selfUserIdList
))
{
logger
.
info
(
"该用户无代开外部联系人:{}"
,
JSONObject
.
toJSONString
(
dataPre
));
dealFlag
=
false
;
reason
=
"
该用户没有
外部联系人"
;
reason
=
"
无
外部联系人"
;
return
;
}
String
wxUserId3th
=
staff
.
getWxUserId
()
;
...
...
@@ -94,19 +91,17 @@ public class FriendClerkSyncNewOperation implements BaseSyncOperation {
}
List
<
String
>
userIdList
=
null
;
if
(!
qwDTO
.
isSelf
())
{
//第三方服务商的外部联系人
userIdList
=
memberUnionidRelatedApiService
.
listExterialList
(
wxEnterpriseId
,
wxUserId3th
);
delUserIdList
=
userIdList
;
if
(
CollectionUtils
.
isEmpty
(
selfUserIdList
)
)
{
if
(
null
==
userIdList
)
{
dealFlag
=
tryAgainToMq
(
dataPre
);
reason
=
"
重试次数过多
"
;
reason
=
"
企微接口失败
"
;
logger
.
info
(
"第三方服务商外部联系人调用失败进入重试:{}"
,
dataPre
.
getDataId
());
return
;
}
if
(
CollectionUtils
.
isEmpty
(
userIdList
))
{
logger
.
info
(
"该用户无第三方外部联系人:{}"
,
JSONObject
.
toJSONString
(
dataPre
));
dealFlag
=
false
;
reason
=
"
该用户没有
外部联系人"
;
reason
=
"
无
外部联系人"
;
return
;
}
}
...
...
@@ -158,35 +153,9 @@ public class FriendClerkSyncNewOperation implements BaseSyncOperation {
}
}
/**
* 重试机制
*
* @param dataPre
* @return
*/
private
boolean
tryAgainToMq
(
TabHaobanPreDealLog
dataPre
)
{
logger
.
info
(
"需要重试:{}"
,
dataPre
.
getDataId
());
String
key
=
TRY_AGAIN
+
dataPre
.
getTaskId
()
+
":"
+
dataPre
.
getDataId
();
Object
cache
=
RedisUtil
.
getCache
(
key
);
if
(
null
==
cache
)
{
RedisUtil
.
setCache
(
key
,
1
,
2L
,
TimeUnit
.
HOURS
);
}
else
{
int
count
=
Integer
.
parseInt
(
cache
.
toString
());
RedisUtil
.
setCache
(
key
,
count
+
1
);
if
(
count
>
4
)
{
return
false
;
}
}
HashSet
<
String
>
reTrysIds
=
new
HashSet
<>();
reTrysIds
.
add
(
dataPre
.
getDataId
());
dealDepartmentToMq
(
dataPre
.
getTaskId
(),
reTrysIds
,
SyncTaskStatusEnum
.
friend_clerk_sync
);
return
true
;
}
@Override
public
void
dealException
(
String
taskId
,
String
dataId
,
String
enterpriseId
,
String
reason
)
{
preDealService
.
updateStatusByDataId
(
taskId
,
dataId
,
PreDealStatusEnum
.
exception
.
getVal
(),
reason
);
checkDepartmentTask
(
taskId
);
}
@Override
...
...
@@ -195,33 +164,10 @@ public class FriendClerkSyncNewOperation implements BaseSyncOperation {
List
<
String
>
dataIds
=
preDealService
.
listReDataIdByPDataId
(
taskId
,
dataId
,
PreDealTypeEnum
.
self_friend
.
getVal
());
logger
.
info
(
"下一步处理的数据:{},dataId={}"
,
JSONObject
.
toJSONString
(
dataIds
)
,
dataId
);
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
(
"已经处理成功:{}"
,
taskId
);
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
());
}
String
staffLockKey
=
FRIEND_LOCK
+
syncTask
.
getAddUser
();
RedisUtil
.
delCache
(
staffLockKey
);
RedisUtil
.
unlock
(
key
);
}
...
...
@@ -252,4 +198,23 @@ public class FriendClerkSyncNewOperation implements BaseSyncOperation {
}
}
private
boolean
tryAgainToMq
(
TabHaobanPreDealLog
dataPre
)
{
logger
.
info
(
"需要重试:{}"
,
dataPre
.
getDataId
());
String
key
=
TRY_AGAIN
+
dataPre
.
getTaskId
()
+
":"
+
dataPre
.
getDataId
();
Object
cache
=
RedisUtil
.
getCache
(
key
);
if
(
null
==
cache
)
{
RedisUtil
.
setCache
(
key
,
1
,
2L
,
TimeUnit
.
HOURS
);
}
else
{
int
count
=
Integer
.
parseInt
(
cache
.
toString
());
RedisUtil
.
setCache
(
key
,
count
+
1
);
if
(
count
>
4
)
{
return
false
;
}
}
HashSet
<
String
>
reTrysIds
=
new
HashSet
<>();
reTrysIds
.
add
(
dataPre
.
getDataId
());
dealDepartmentToMq
(
dataPre
.
getTaskId
(),
reTrysIds
,
SyncTaskStatusEnum
.
friend_clerk_sync
);
return
true
;
}
}
haoban-manage3-service/src/main/java/com/gic/haoban/manage/service/task/friend/FriendSyncNewOperation.java
View file @
d8b0514d
...
...
@@ -12,6 +12,7 @@ import com.gic.haoban.manage.api.service.MemberUnionidRelatedApiService;
import
com.gic.haoban.manage.service.entity.TabHaobanPreDealLog
;
import
com.gic.haoban.manage.service.exception.WxApiLimitException
;
import
com.gic.haoban.manage.service.service.*
;
import
com.gic.haoban.manage.service.service.out.impl.DealSyncOperationApiServiceImpl
;
import
com.gic.haoban.manage.service.task.BaseSyncOperation
;
import
com.gic.mq.sdk.GicMQClient
;
import
com.gic.redis.data.util.RedisUtil
;
...
...
@@ -42,8 +43,6 @@ public class FriendSyncNewOperation implements BaseSyncOperation {
private
MemberUnionidRelatedApiService
memberUnionidRelatedApiService
;
@Autowired
private
SyncTaskService
syncTaskService
;
@Autowired
private
FriendClerkSyncNewOperation
friendClerkSyncNewOperation
;
private
static
final
String
TRY_AGAIN
=
"haoban_fresh_wx_friend_again_"
;
...
...
@@ -123,31 +122,6 @@ public class FriendSyncNewOperation implements BaseSyncOperation {
}
}
/**
* 重试机制
*
* @param dataPre
* @return
*/
private
boolean
tryAgainToMq
(
TabHaobanPreDealLog
dataPre
)
{
logger
.
info
(
"需要重试friend:{}"
,
dataPre
.
getDataId
());
String
key
=
TRY_AGAIN
+
dataPre
.
getTaskId
()
+
":"
+
dataPre
.
getDataId
();
Object
cache
=
RedisUtil
.
getCache
(
key
);
if
(
null
==
cache
)
{
RedisUtil
.
setCache
(
key
,
1
,
2L
,
TimeUnit
.
HOURS
);
}
else
{
Integer
count
=
Integer
.
valueOf
(
cache
.
toString
());
RedisUtil
.
setCache
(
key
,
count
+
1
);
if
(
count
>
4
)
{
return
false
;
}
}
HashSet
<
String
>
reTrysIds
=
new
HashSet
<>();
reTrysIds
.
add
(
dataPre
.
getDataId
());
dealDepartmentToMq
(
dataPre
.
getTaskId
(),
reTrysIds
,
SyncTaskStatusEnum
.
friend_sync
);
return
true
;
}
public
void
dealException
(
String
taskId
,
String
dataId
,
String
pDataId
,
String
reason
,
String
relationKey
)
{
preDealService
.
updateFriendStatusByDataId
(
taskId
,
dataId
,
PreDealStatusEnum
.
exception
.
getVal
(),
reason
,
null
,
relationKey
,
PreDealTypeEnum
.
friend
.
getVal
());
checkDepartmentTask
(
taskId
,
pDataId
);
...
...
@@ -171,41 +145,30 @@ public class FriendSyncNewOperation implements BaseSyncOperation {
* @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
+
":"
+
pDataId
;
String
lockKey
=
"haoban_sync_third_friend_task_lock_"
+
taskId
+
":"
+
pDataId
;
RedisUtil
.
lock
(
lockKey
,
3L
);
Object
hasDealCheck
=
RedisUtil
.
getCache
(
key
);
if
(
hasDealCheck
!=
null
)
{
logger
.
info
(
"重复提交结束第三方好友:{}"
,
pDataId
);
RedisUtil
.
unlock
(
lockKey
);
return
;
}
RedisUtil
.
setCache
(
key
,
pDataId
,
30L
,
TimeUnit
.
SECONDS
);
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
(
lockKey
);
this
.
preDealService
.
addTaskStaffStatusCache
(
taskId
,
pDataId
,
8
);
}
@Override
public
void
checkDepartmentTask
(
String
taskId
)
{
friendClerkSyncNewOperation
.
checkDepartmentTask
(
taskId
);
}
/**
* 放入mq处理部门数据
*
* @param taskId
* @param dealList
*/
private
boolean
tryAgainToMq
(
TabHaobanPreDealLog
dataPre
)
{
String
key
=
TRY_AGAIN
+
dataPre
.
getTaskId
()
+
":"
+
dataPre
.
getDataId
();
Object
cache
=
RedisUtil
.
getCache
(
key
);
if
(
null
==
cache
)
{
RedisUtil
.
setCache
(
key
,
1
,
2L
,
TimeUnit
.
HOURS
);
}
else
{
Integer
count
=
Integer
.
valueOf
(
cache
.
toString
());
RedisUtil
.
setCache
(
key
,
count
+
1
);
if
(
count
>
4
)
{
return
false
;
}
}
HashSet
<
String
>
reTrysIds
=
new
HashSet
<>();
reTrysIds
.
add
(
dataPre
.
getDataId
());
dealDepartmentToMq
(
dataPre
.
getTaskId
(),
reTrysIds
,
SyncTaskStatusEnum
.
friend_sync
);
return
true
;
}
private
void
dealDepartmentToMq
(
String
taskId
,
Set
<
String
>
dealList
,
SyncTaskStatusEnum
syncTaskStatusEnum
)
{
//预处理分组任务
syncTaskService
.
updateTaskStatus
(
taskId
,
syncTaskStatusEnum
.
getVal
());
...
...
haoban-manage3-service/src/main/java/com/gic/haoban/manage/service/task/friend/SelfFriendSyncNewOperation.java
View file @
d8b0514d
...
...
@@ -48,8 +48,6 @@ public class SelfFriendSyncNewOperation implements BaseSyncOperation {
@Autowired
private
SyncTaskService
syncTaskService
;
@Autowired
private
FriendClerkSyncNewOperation
friendClerkSyncNewOperation
;
@Autowired
private
WxEnterpriseService
wxEnterpriseService
;
private
static
final
String
TRY_AGAIN
=
"haoban_fresh_wx_friend_again_"
;
...
...
@@ -95,11 +93,11 @@ public class SelfFriendSyncNewOperation implements BaseSyncOperation {
}
//更新状态
this
.
preDealService
.
updateFriendStatusByDataId
(
taskId
,
dataPre
.
getDataId
(),
PreDealStatusEnum
.
computed
.
getVal
(),
reason
,
json
.
toJSONString
(),
relationKey
,
PreDealTypeEnum
.
self_friend
.
getVal
());
dealSuccess
(
taskId
,
dataPre
.
getDataId
(),
null
,
wxEnterpriseId
);
dealSuccess
(
taskId
,
dataPre
.
getDataId
(),
dataPre
.
getpDataId
()
,
wxEnterpriseId
);
}
catch
(
WxApiLimitException
e
)
{
logger
.
info
(
"接口次数限制:{}"
,
JSONObject
.
toJSONString
(
dataPre
));
dealFlag
=
tryAgainToMq
(
dataPre
);
reason
=
"
getCorpSelfExternalUseridInfo
重试次数过多"
;
reason
=
"重试次数过多"
;
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
logger
.
info
(
"同步失败:{},{}"
,
JSONObject
.
toJSONString
(
dataPre
),
e
);
...
...
@@ -120,18 +118,25 @@ public class SelfFriendSyncNewOperation implements BaseSyncOperation {
}
@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
());
public
void
dealSuccess
(
String
taskId
,
String
dataId
,
String
pDataId
,
String
wxEnterpriseId
)
{
checkDepartmentTask
(
taskId
,
pDataId
);
}
/**
*
重试机制
*
自定义处理流程
*
* @param
dataPre
* @
return
* @param
taskId
* @
param pDataId
*/
public
void
checkDepartmentTask
(
String
taskId
,
String
pDataId
)
{
this
.
preDealService
.
addTaskStaffStatusCache
(
taskId
,
pDataId
,
7
);
}
@Override
public
void
checkDepartmentTask
(
String
taskId
)
{
}
private
boolean
tryAgainToMq
(
TabHaobanPreDealLog
dataPre
)
{
logger
.
info
(
"需要重试self:{}"
,
dataPre
.
getDataId
());
String
key
=
TRY_AGAIN
+
dataPre
.
getTaskId
()
+
":"
+
dataPre
.
getDataId
();
...
...
@@ -150,55 +155,6 @@ public class SelfFriendSyncNewOperation implements BaseSyncOperation {
dealDepartmentToMq
(
dataPre
.
getTaskId
(),
reTrysIds
,
SyncTaskStatusEnum
.
self_friend_sync
);
return
true
;
}
/**
* 自定义处理流程
*
* @param taskId
* @param pDataId
*/
public
void
checkDepartmentTask
(
String
taskId
,
String
pDataId
)
{
//校验是否都已经处理完成
boolean
b
=
preDealService
.
checkFriendTaskByPDataId
(
taskId
,
pDataId
,
PreDealTypeEnum
.
self_friend
.
getVal
());
if
(!
b
)
{
logger
.
info
(
"校验直接返回"
);
return
;
}
logger
.
info
(
"同步第三方服务商好友开始:{},{}"
,
taskId
,
pDataId
);
String
key
=
"haoban_sync_self_friend_task_"
+
taskId
+
":"
+
pDataId
;
String
lockKey
=
"haoban_sync_self_friend_task_lock_"
+
taskId
+
":"
+
pDataId
;
RedisUtil
.
lock
(
lockKey
,
3L
);
Object
hasDealCheck
=
RedisUtil
.
getCache
(
key
);
if
(
hasDealCheck
!=
null
)
{
logger
.
info
(
"重复提交处理第三方好友:{}"
,
pDataId
);
RedisUtil
.
unlock
(
lockKey
);
return
;
}
RedisUtil
.
setCache
(
key
,
pDataId
,
30L
,
TimeUnit
.
SECONDS
);
List
<
String
>
dataIds
=
preDealService
.
listReDataIdByPDataId
(
taskId
,
pDataId
,
PreDealTypeEnum
.
friend
.
getVal
());
if
(
CollectionUtils
.
isEmpty
(
dataIds
))
{
logger
.
info
(
"第三方的数据为空"
);
//更新父级别
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
(
lockKey
);
}
@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
());
...
...
@@ -219,5 +175,4 @@ public class SelfFriendSyncNewOperation implements BaseSyncOperation {
e
.
printStackTrace
();
}
}
}
haoban-manage3-service/src/main/resources/mapper/PreDealLogMapper.xml
View file @
d8b0514d
...
...
@@ -257,6 +257,18 @@
and status_flag in(0,3)
</select>
<select
id=
"checkTaskFriend"
resultType=
"Integer"
>
select
count(*)
from tab_haoban_pre_deal_log
where task_id = #{taskId}
<if
test=
"pDataId!=null"
>
and p_data_id=#{pDataId}
</if>
and data_type=#{dataType}
and status_flag in(0,1)
</select>
<select
id=
"listRebuildDepartByTaskId"
resultMap=
"BaseResultMap"
>
SELECT
<include
refid=
"Base_Column_List"
/>
...
...
@@ -365,18 +377,6 @@
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"
>
and p_data_id=#{pDataId}
</if>
and data_type=#{dataType}
and status_flag in(0,1)
</select>
<select
id=
"listReDataIdByPDataId"
resultType=
"String"
>
select
data_id
...
...
haoban-manage3-service/src/main/resources/mapper/TabHaobanExternalClerkRelatedMapper.xml
View file @
d8b0514d
...
...
@@ -857,6 +857,9 @@
WHERE
member_id = #{memberId}
AND enterprise_id = #{enterpriseId}
<if
test=
"null != flag"
>
and status_flag in (1)
</if>
</select>
<select
id=
"getMemberIdByExternalId"
resultType=
"java.lang.String"
>
...
...
haoban-manage3-service/src/main/resources/mapper/fee/TabHaobanQywxFeeOrderAccountMapper.xml
View file @
d8b0514d
...
...
@@ -87,5 +87,19 @@
where wx_enterprise_id = #{wxEnterpriseId} GROUP BY STATUS
</select>
<select
id=
"selectByWxEnterpriseId"
resultMap=
"TabHaobanQywxFeeOrderAccountMap"
>
select
<include
refid=
"Base_Column_List"
/>
from tab_haoban_qywx_fee_order_account
where wx_enterprise_id = #{wxEnterpriseId}
and status in (1,4)
</select>
<update
id=
"updateByActiveCode"
>
update tab_haoban_qywx_fee_order_account
set status = 2,update_time = NOW()
where wx_enterprise_id = #{wxEnterpriseId} and active_code = #{activeCode}
</update>
</mapper>
haoban-manage3-web/src/main/java/com/gic/haoban/manage/web/controller/StaffController.java
View file @
d8b0514d
...
...
@@ -10,6 +10,7 @@ import cn.hutool.core.collection.CollUtil;
import
com.alibaba.fastjson.JSONArray
;
import
com.gic.haoban.manage.api.dto.*
;
import
com.gic.haoban.manage.api.dto.qdto.TransferActiveCodeQDTO
;
import
com.gic.haoban.manage.api.dto.qdto.licence.LicenceOrderPageQDTO
;
import
com.gic.haoban.manage.api.service.*
;
import
com.gic.haoban.manage.web.log.LogRecordUserServiceImpl
;
import
com.gic.haoban.manage.web.qo.StaffListQO
;
...
...
@@ -695,4 +696,22 @@ public class StaffController extends WebBaseController {
return
RestResponse
.
successResult
(
vo
);
}
/**
* 批量分配成员许可码
* @param staffIds
* @return
*/
@RequestMapping
(
"staff-active-allocation"
)
public
RestResponse
<
StaffActiveAllocationVO
>
staffActiveAllocation
(
String
staffIds
)
{
WebLoginDTO
login
=
AuthWebRequestUtil
.
getLoginUser
();
String
wxEnterpriseId
=
login
.
getWxEnterpriseId
();
ServiceResponse
<
StaffActiveAllocationDTO
>
response
=
staffApiService
.
staffActiveAllocation
(
wxEnterpriseId
,
staffIds
);
if
(
response
.
isSuccess
()){
StaffActiveAllocationDTO
dto
=
response
.
getResult
();
StaffActiveAllocationVO
result
=
JSONObject
.
parseObject
(
JSONObject
.
toJSONString
(
dto
),
StaffActiveAllocationVO
.
class
);
return
RestResponse
.
successResult
(
result
);
}
return
RestResponse
.
failure
(
response
.
getCode
(),
response
.
getMessage
());
}
}
haoban-manage3-web/src/main/java/com/gic/haoban/manage/web/controller/chat/GroupChatController.java
View file @
d8b0514d
...
...
@@ -5,6 +5,8 @@ import cn.hutool.core.convert.Convert;
import
com.gic.api.base.commons.BasePageInfo
;
import
com.gic.api.base.commons.Page
;
import
com.gic.api.base.commons.ServiceResponse
;
import
com.gic.commons.util.DateUtil
;
import
com.gic.commons.util.EntityUtil
;
import
com.gic.commons.util.ExcelUtils
;
import
com.gic.commons.webapi.reponse.RestResponse
;
import
com.gic.enterprise.api.service.EnterpriseService
;
...
...
@@ -22,10 +24,12 @@ import com.gic.haoban.manage.api.service.StaffApiService;
import
com.gic.haoban.manage.api.service.chat.GroupChatApiService
;
import
com.gic.haoban.manage.web.errCode.HaoBanErrCode
;
import
com.gic.haoban.manage.web.log.LogRecordUserServiceImpl
;
import
com.gic.haoban.manage.web.vo.chat.GroupChatUserQuitVO
;
import
com.gic.log.record.anno.GicLogRecord
;
import
com.gic.log.record.util.GicLogRecordCategoryEnum
;
import
com.gic.log.record.util.GicLogRecordEvaluationContext
;
import
com.gic.log.record.util.GicLogRecordOptTypeEnum
;
import
org.apache.commons.collections.ArrayStack
;
import
org.apache.commons.collections.CollectionUtils
;
import
org.apache.commons.lang3.StringUtils
;
import
org.apache.logging.log4j.LogManager
;
...
...
@@ -147,6 +151,39 @@ public class GroupChatController {
return
RestResponse
.
successResult
(
page
.
getResult
());
}
@RequestMapping
(
"user/quit/excel"
)
public
RestResponse
<
Boolean
>
excel
(
HttpServletRequest
request
,
HttpServletResponse
response
,
GroupChatUserSearchQDTO
qdto
,
BasePageInfo
basePageInfo
)
{
ServiceResponse
<
Page
<
GroupChatUserDTO
>>
page
=
this
.
groupChatApiService
.
listUserPage
(
qdto
,
basePageInfo
);
if
(
page
.
isSuccess
()
&&
CollUtil
.
isNotEmpty
(
page
.
getResult
().
getResult
())){
List
<
GroupChatUserQuitVO
>
voList
=
new
ArrayList
<>()
;
for
(
GroupChatUserDTO
dto
:
page
.
getResult
().
getResult
())
{
GroupChatUserQuitVO
vo
=
EntityUtil
.
changeEntityByJSON
(
GroupChatUserQuitVO
.
class
,
dto
)
;
vo
.
setUserQuitTimeExcel
(
DateUtil
.
dateToStr
(
dto
.
getUserQuitTime
(),
"yyyy-MM-dd HH:mm:ss"
));
if
(
dto
.
getUserType
()==
1
)
{
vo
.
setUserTypeExcel
(
"企业成员"
);
}
else
if
(
dto
.
getUserType
()==
2
)
{
vo
.
setUserTypeExcel
(
"外部成员"
);
}
else
{
vo
.
setUserTypeExcel
(
"客户"
);
}
voList
.
add
(
vo
)
;
}
String
fileName
=
"退群记录"
;
List
<
String
>
titleList
=
Arrays
.
asList
(
"群成员"
,
"身份"
,
"群名称"
,
"群主"
,
"退群时间"
);
List
<
String
>
fileList
=
Arrays
.
asList
(
"userName"
,
"userTypeExcel"
,
"chatName"
,
"staffName"
,
"userQuitTimeExcel"
);
try
{
ExcelUtils
.
xls
(
response
,
request
,
fileName
,
voList
,
fileList
,
titleList
);
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
logger
.
info
(
"导出失败"
);
}
return
RestResponse
.
successResult
(
true
);
}
return
RestResponse
.
successResult
(
false
);
}
@RequestMapping
(
"detail"
)
public
RestResponse
<
Object
>
detail
(
Long
groupChatId
)
{
if
(
null
==
groupChatId
)
{
...
...
haoban-manage3-web/src/main/java/com/gic/haoban/manage/web/vo/StaffActiveAllocationVO.java
0 → 100644
View file @
d8b0514d
package
com
.
gic
.
haoban
.
manage
.
web
.
vo
;
import
java.io.Serializable
;
/**
* @description:
* @Author: wenhua
* @Date: 2023/8/16 10:08
*/
public
class
StaffActiveAllocationVO
implements
Serializable
{
private
static
final
long
serialVersionUID
=
1L
;
/**
* 失败个数
*/
private
Integer
nums
;
/**
* 失败原因
*/
private
String
errMessage
;
public
Integer
getNums
()
{
return
nums
;
}
public
void
setNums
(
Integer
nums
)
{
this
.
nums
=
nums
;
}
public
String
getErrMessage
()
{
return
errMessage
;
}
public
void
setErrMessage
(
String
errMessage
)
{
this
.
errMessage
=
errMessage
;
}
}
haoban-manage3-web/src/main/java/com/gic/haoban/manage/web/vo/chat/GroupChatUserQuitVO.java
0 → 100644
View file @
d8b0514d
package
com
.
gic
.
haoban
.
manage
.
web
.
vo
.
chat
;
import
java.io.Serializable
;
/**
*
* @ClassName: TabHaobanGroupChatUser
* @Description: TODO
* @Author 徐高华
* @Date 2022年11月25日 15:42:52
* @Modify
* @CopyRight
*/
public
class
GroupChatUserQuitVO
implements
Serializable
{
private
static
final
long
serialVersionUID
=
21771431486600L
;
/**1企业成员2外部联系人3客户*/
private
String
userTypeExcel
;
/**姓名*/
private
String
userName
;
/**昵称*/
private
String
nickName
;
/**用户退群时间*/
private
String
userQuitTimeExcel
;
private
String
chatName
;
private
String
staffName
;
public
String
getUserTypeExcel
()
{
return
userTypeExcel
;
}
public
void
setUserTypeExcel
(
String
userTypeExcel
)
{
this
.
userTypeExcel
=
userTypeExcel
;
}
public
String
getUserName
()
{
return
userName
;
}
public
void
setUserName
(
String
userName
)
{
this
.
userName
=
userName
;
}
public
String
getNickName
()
{
return
nickName
;
}
public
void
setNickName
(
String
nickName
)
{
this
.
nickName
=
nickName
;
}
public
String
getUserQuitTimeExcel
()
{
return
userQuitTimeExcel
;
}
public
void
setUserQuitTimeExcel
(
String
userQuitTimeExcel
)
{
this
.
userQuitTimeExcel
=
userQuitTimeExcel
;
}
public
String
getChatName
()
{
return
chatName
;
}
public
void
setChatName
(
String
chatName
)
{
this
.
chatName
=
chatName
;
}
public
String
getStaffName
()
{
return
staffName
;
}
public
void
setStaffName
(
String
staffName
)
{
this
.
staffName
=
staffName
;
}
}
\ No newline at end of file
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