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
eadd1576
Commit
eadd1576
authored
Oct 29, 2020
by
黄芝文
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'developer' into 'master'
Developer See merge request
!83
parents
59fec0fa
029e846d
Hide whitespace changes
Inline
Side-by-side
Showing
9 changed files
with
265 additions
and
29 deletions
+265
-29
TestApiService.java
...ava/com/gic/haoban/manage/api/service/TestApiService.java
+13
-0
PreDealLogMapper.java
...ic/haoban/manage/service/dao/mapper/PreDealLogMapper.java
+16
-1
PreDealService.java
...com/gic/haoban/manage/service/service/PreDealService.java
+16
-1
PreDealServiceImpl.java
...aoban/manage/service/service/impl/PreDealServiceImpl.java
+40
-2
TestServiceImpl.java
...oban/manage/service/service/out/impl/TestServiceImpl.java
+42
-0
QywxGroupSyncOperation.java
...ic/haoban/manage/service/task/QywxGroupSyncOperation.java
+75
-25
PreDealLogMapper.xml
...e3-service/src/main/resources/mapper/PreDealLogMapper.xml
+21
-0
test.java
haoban-manage3-service/src/test/java/test.java
+30
-0
TestController.java
.../com/gic/haoban/manage/web/controller/TestController.java
+12
-0
No files found.
haoban-manage3-api/src/main/java/com/gic/haoban/manage/api/service/TestApiService.java
View file @
eadd1576
...
...
@@ -10,4 +10,17 @@ public interface TestApiService {
* @return
*/
public
String
checkThread
(
String
id
,
Long
expireTime
);
/**
* 拉取自己部门企业微信通讯录
* @return
*/
public
String
listSelfQywxUser
(
String
corpid
,
String
secretVal
,
String
dataId
);
/**
* 拉取所有部门企业微信通讯录
* @return
*/
public
String
listAllQywxUser
(
String
corpid
,
String
secretVal
,
String
dataId
);
}
haoban-manage3-service/src/main/java/com/gic/haoban/manage/service/dao/mapper/PreDealLogMapper.java
View file @
eadd1576
...
...
@@ -150,7 +150,12 @@ public interface PreDealLogMapper {
* @return
*/
public
int
countByDataId
(
@Param
(
"taskId"
)
String
taskId
,
@Param
(
"dataId"
)
String
dataId
,
@Param
(
"dataType"
)
int
dataType
);
/**
* 获取列表
* @param taskId
* @param dataType
*/
public
List
<
String
>
listDataIdByTaskIdAndDataType
(
@Param
(
"taskId"
)
String
taskId
,
@Param
(
"dataType"
)
int
dataType
);
/**
* 统计任务数量
* countExcepAndPreByTaskId
...
...
@@ -159,5 +164,14 @@ public interface PreDealLogMapper {
* @return
*/
public
TabHaobanPreDealLog
getLastPreDataByTaskId
(
@Param
(
"taskId"
)
String
taskId
);
/**
* 获取根节点
* @param taskId
* @return
*/
public
String
getRootDataIdByWxEnterpriseIdAndTaskId
(
@Param
(
"wxEnterpriseId"
)
String
wxEnterpriseId
,
@Param
(
"taskId"
)
String
taskId
);
}
\ No newline at end of file
haoban-manage3-service/src/main/java/com/gic/haoban/manage/service/service/PreDealService.java
View file @
eadd1576
...
...
@@ -138,11 +138,26 @@ public interface PreDealService {
* @return
*/
public
boolean
existDataId
(
String
taskId
,
String
dataId
);
/**
* 获取dataIdList
* @param taskId
* @param dateType
* @return
*/
public
List
<
String
>
listDataIdByTaskIdAndDataType
(
String
taskId
,
Integer
dateType
);
/**
* 获取最近的数据
*
* @return
*/
public
PreDealLogInfoDTO
getLastPreDataByTaskId
(
String
taskId
);
/**
* 获取根节点
*
* @return
*/
public
String
getRootDataIdByWxEnterpriseIdAndTaskId
(
String
wxEnterpriseId
,
String
taskId
);
}
haoban-manage3-service/src/main/java/com/gic/haoban/manage/service/service/impl/PreDealServiceImpl.java
View file @
eadd1576
...
...
@@ -11,12 +11,17 @@ import com.gic.haoban.manage.api.enums.PreDealTypeEnum;
import
com.gic.haoban.manage.service.dao.mapper.PreDealLogMapper
;
import
com.gic.haoban.manage.service.entity.TabHaobanPreDealLog
;
import
com.gic.haoban.manage.service.service.PreDealService
;
import
com.gic.haoban.manage.service.task.QywxGroupSyncOperation
;
import
com.github.pagehelper.PageHelper
;
import
com.github.pagehelper.PageInfo
;
import
org.apache.commons.collections.CollectionUtils
;
import
org.slf4j.Logger
;
import
org.slf4j.LoggerFactory
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Service
;
import
java.util.ArrayList
;
import
java.util.List
;
/**
...
...
@@ -29,13 +34,30 @@ public class PreDealServiceImpl implements PreDealService {
@Autowired
private
PreDealLogMapper
preDealLogMapper
;
private
static
final
Logger
logger
=
LoggerFactory
.
getLogger
(
PreDealServiceImpl
.
class
);
private
static
final
int
pageSize
=
1000
;
@Override
public
boolean
insert
(
List
<
TabHaobanPreDealLog
>
list
)
{
if
(
CollectionUtils
.
isEmpty
(
list
))
{
return
true
;
}
preDealLogMapper
.
insertSelectiveBatch
(
list
);
//插入不存在的我们pre表的企业微信数据
int
count
=
list
.
size
();
int
pre
=
count
/
pageSize
+
1
;
int
yushu
=
count
%
pageSize
;
if
(
yushu
==
0
){
pre
=
pre
-
1
;
}
int
i
=
0
;
while
(
i
<
pre
){
logger
.
info
(
"这是第{}次,进入"
,
i
);
i
++;
int
fromIndex
=
(
i
-
1
)*
pageSize
;
int
toIndex
=
(
count
-
fromIndex
)
>
pageSize
?
(
fromIndex
+
pageSize
):
count
;
List
<
TabHaobanPreDealLog
>
subList
=
list
.
subList
(
fromIndex
,
toIndex
);
preDealLogMapper
.
insertSelectiveBatch
(
subList
);
}
return
true
;
}
...
...
@@ -121,10 +143,26 @@ public class PreDealServiceImpl implements PreDealService {
int
i
=
preDealLogMapper
.
countByDataId
(
taskId
,
dataId
,
PreDealTypeEnum
.
clerk
.
getVal
());
return
i
>
0
;
}
@Override
public
List
<
String
>
listDataIdByTaskIdAndDataType
(
String
taskId
,
Integer
dateType
)
{
List
<
String
>
list
=
preDealLogMapper
.
listDataIdByTaskIdAndDataType
(
taskId
,
dateType
);
if
(
list
==
null
){
list
=
new
ArrayList
<
String
>();
}
return
list
;
}
@Override
public
PreDealLogInfoDTO
getLastPreDataByTaskId
(
String
taskId
)
{
TabHaobanPreDealLog
preDealLog
=
preDealLogMapper
.
getLastPreDataByTaskId
(
taskId
);
return
EntityUtil
.
changeEntityByOrika
(
PreDealLogInfoDTO
.
class
,
preDealLog
);
}
@Override
public
String
getRootDataIdByWxEnterpriseIdAndTaskId
(
String
wxEnterpriseId
,
String
taskId
)
{
return
preDealLogMapper
.
getRootDataIdByWxEnterpriseIdAndTaskId
(
wxEnterpriseId
,
taskId
);
}
}
haoban-manage3-service/src/main/java/com/gic/haoban/manage/service/service/out/impl/TestServiceImpl.java
View file @
eadd1576
package
com
.
gic
.
haoban
.
manage
.
service
.
service
.
out
.
impl
;
import
java.util.List
;
import
com.gic.haoban.manage.api.dto.SecretSettingDTO
;
import
com.gic.haoban.manage.api.dto.WxEnterpriseDTO
;
import
com.gic.haoban.manage.api.enums.SecretTypeEnum
;
import
com.gic.haoban.manage.api.service.TestApiService
;
import
com.gic.haoban.manage.service.service.SecretSettingService
;
import
com.gic.haoban.manage.service.service.WxEnterpriseService
;
import
com.gic.wechat.api.dto.qywx.UserDTO
;
import
com.gic.wechat.api.service.qywx.QywxUserApiService
;
import
org.slf4j.Logger
;
import
org.slf4j.LoggerFactory
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Service
;
/**
...
...
@@ -11,6 +22,13 @@ import org.springframework.stereotype.Service;
@Service
public
class
TestServiceImpl
implements
TestApiService
{
private
static
final
Logger
logger
=
LoggerFactory
.
getLogger
(
TestServiceImpl
.
class
);
@Autowired
private
QywxUserApiService
qywxUserApiService
;
@Autowired
private
WxEnterpriseService
wxEnterpriseService
;
@Autowired
private
SecretSettingService
secretSettingService
;
@Override
public
String
checkThread
(
String
id
,
Long
expireTime
)
{
logger
.
info
(
"测试-start:{}"
,
id
);
...
...
@@ -25,4 +43,28 @@ public class TestServiceImpl implements TestApiService {
logger
.
info
(
"测试-end:{}"
,
id
);
return
id
;
}
@Override
public
String
listSelfQywxUser
(
String
corpid
,
String
secretVal
,
String
dataId
)
{
long
t
=
System
.
currentTimeMillis
();
List
<
UserDTO
>
list
=
this
.
qywxUserApiService
.
listSelfDepartmentUser
(
corpid
,
secretVal
,
dataId
,
0
);
logger
.
info
(
"耗时为===============>{}毫秒"
,(
System
.
currentTimeMillis
()-
t
));
if
(
null
!=
list
)
{
logger
.
info
(
"微信获取部门成员数量为:{}"
,
list
.
size
());
}
else
{
logger
.
info
(
"微信获取部门成员数量异常"
);
}
return
""
;
}
@Override
public
String
listAllQywxUser
(
String
corpid
,
String
secretVal
,
String
dataId
)
{
long
t
=
System
.
currentTimeMillis
();
List
<
UserDTO
>
list
=
this
.
qywxUserApiService
.
listSelfDepartmentUser
(
corpid
,
secretVal
,
dataId
,
1
);
logger
.
info
(
"耗时为===============>{}毫秒"
,(
System
.
currentTimeMillis
()-
t
));
if
(
null
!=
list
)
{
logger
.
info
(
"微信获取部门成员数量为:{}"
,
list
.
size
());
}
else
{
logger
.
info
(
"微信获取部门成员数量异常"
);
}
return
""
;
}
}
haoban-manage3-service/src/main/java/com/gic/haoban/manage/service/task/QywxGroupSyncOperation.java
View file @
eadd1576
...
...
@@ -31,6 +31,7 @@ import com.gic.wechat.api.dto.qywx.UserDTO;
import
com.gic.wechat.api.service.qywx.QywxDepartmentApiService
;
import
com.gic.wechat.api.service.qywx.QywxUserApiService
;
import
com.vdurmont.emoji.EmojiParser
;
import
org.apache.commons.collections.CollectionUtils
;
import
org.slf4j.Logger
;
import
org.slf4j.LoggerFactory
;
...
...
@@ -50,6 +51,7 @@ import java.util.stream.Collectors;
@Service
public
class
QywxGroupSyncOperation
implements
BaseSyncOperation
{
private
static
final
Logger
logger
=
LoggerFactory
.
getLogger
(
QywxGroupSyncOperation
.
class
);
private
static
final
int
pageSize
=
500
;
@Autowired
private
DepartmentService
departmentService
;
...
...
@@ -189,28 +191,77 @@ public class QywxGroupSyncOperation implements BaseSyncOperation {
@Override
public
void
dealSuccess
(
String
taskId
,
String
dataId
,
String
enterpriseId
,
String
wxEnterpriseId
)
{
WxEnterpriseDTO
wxEnterpriseDTO
=
wxEnterpriseService
.
selectById
(
wxEnterpriseId
);
SecretSettingDTO
secretSetting
=
secretSettingService
.
getSecretSetting
(
wxEnterpriseId
,
SecretTypeEnum
.
HAOBAN_HELP
.
getVal
());
if
(
null
==
secretSetting
||
secretSetting
.
getCheckFlag
()==
0
)
{
logger
.
info
(
"没有配置secret:{},{}"
,
taskId
,
wxEnterpriseId
);
return
;
}
List
<
UserDTO
>
list
=
this
.
qywxUserApiService
.
listSelfDepartmentUser
(
wxEnterpriseDTO
.
getCorpid
(),
secretSetting
.
getSecretVal
(),
dataId
,
0
);
TabHaobanPreDealLog
preData
=
preDealService
.
getByDataId
(
taskId
,
dataId
,
PreDealTypeEnum
.
group
.
getVal
(),
-
1
);
String
pDataId
=
preData
.
getpDataId
();
if
(
"0"
.
equals
(
pDataId
)){
//根级部门
List
<
UserDTO
>
list
=
this
.
qywxUserApiService
.
listSelfDepartmentUser
(
wxEnterpriseDTO
.
getCorpid
(),
secretSetting
.
getSecretVal
(),
dataId
,
1
);
if
(
null
==
list
)
{
logger
.
info
(
"微信获取部门成员异常:{},{}"
,
taskId
,
dataId
);
return
;
}
logger
.
info
(
"是否已经进来了,进来"
);
//预处理门店 写入预处理表
if
(
CollectionUtils
.
isNotEmpty
(
list
))
{
List
<
String
>
dataList
=
preDealService
.
listDataIdByTaskIdAndDataType
(
taskId
,
PreDealTypeEnum
.
clerk
.
getVal
());
List
<
TabHaobanPreDealLog
>
preDealLogList
=
list
.
stream
().
filter
(
mid
->
!
dataList
.
contains
(
mid
.
getUserid
())
).
map
(
userDTO
->
{
TabHaobanPreDealLog
dealLog
=
new
TabHaobanPreDealLog
();
dealLog
.
setDataId
(
userDTO
.
getUserid
());
dealLog
.
setpDataId
(
dataId
);
dealLog
.
setDataType
(
PreDealTypeEnum
.
clerk
.
getVal
());
dealLog
.
setStatusFlag
(
0
);
dealLog
.
setDataContent
(
EmojiFilterUtil
.
removeAllEmoji
(
userDTO
.
getName
()));
dealLog
.
setTaskId
(
taskId
);
dealLog
.
setWxEnterpriseId
(
wxEnterpriseId
);
dealLog
.
setEnterpriseId
(
enterpriseId
);
return
dealLog
;
}).
collect
(
Collectors
.
toList
());
//插入不存在的我们pre表的企业微信数据
preDealService
.
insert
(
preDealLogList
);
}
}
boolean
b
=
preDealService
.
updateStatusByDataId
(
taskId
,
dataId
,
PreDealTypeEnum
.
group
.
getVal
(),
PreDealStatusEnum
.
computed
.
getVal
(),
"成功"
);
if
(!
b
)
{
logger
.
info
(
"成功修改错误!{}"
,
dataId
);
return
;
}
List
<
TabHaobanPreDealLog
>
preList
=
preDealService
.
listReByPDataId
(
taskId
,
dataId
);
if
(
CollectionUtils
.
isNotEmpty
(
preList
))
{
Set
<
String
>
mid
=
preList
.
stream
().
map
(
tab
->
tab
.
getDataId
()).
collect
(
Collectors
.
toSet
());
dealDepartmentToMq
(
taskId
,
mid
,
SyncTaskStatusEnum
.
group_sync
);
}
else
{
// checkSelfDepartmentTask(taskId,wxEnterpriseId,enterpriseId,wxEnterpriseDTO.getCorpid(), secretSetting.getSecretVal());
checkDepartmentTask
(
taskId
);
}
}
private
void
checkSelfDepartmentTask
(
String
taskId
,
String
wxEnterpriseId
,
String
enterpriseId
,
String
corpid
,
String
secretVal
)
{
boolean
b
=
preDealService
.
checkTask
(
taskId
,
PreDealTypeEnum
.
group
.
getVal
());
if
(!
b
)
{
return
;
}
//TODO 插入pre-clerk
//获取根节点
String
dataId
=
preDealService
.
getRootDataIdByWxEnterpriseIdAndTaskId
(
wxEnterpriseId
,
taskId
);
List
<
UserDTO
>
list
=
this
.
qywxUserApiService
.
listSelfDepartmentUser
(
corpid
,
secretVal
,
dataId
,
1
);
if
(
null
==
list
)
{
logger
.
info
(
"微信获取部门成员异常:{},{}"
,
taskId
,
dataId
);
return
;
}
logger
.
info
(
"是否已经进来了,进来"
);
//预处理门店 写入预处理表
if
(
CollectionUtils
.
isNotEmpty
(
list
))
{
List
<
TabHaobanPreDealLog
>
preDealLogList
=
list
.
stream
().
filter
(
mid
->
{
boolean
flag
=
preDealService
.
existDataId
(
taskId
,
mid
.
getUserid
());
if
(
flag
)
{
return
false
;
}
return
true
;
}).
map
(
userDTO
->
{
List
<
String
>
dataList
=
preDealService
.
listDataIdByTaskIdAndDataType
(
taskId
,
PreDealTypeEnum
.
clerk
.
getVal
());
List
<
TabHaobanPreDealLog
>
preDealLogList
=
list
.
stream
().
filter
(
mid
->
!
dataList
.
contains
(
mid
.
getUserid
())
).
map
(
userDTO
->
{
TabHaobanPreDealLog
dealLog
=
new
TabHaobanPreDealLog
();
dealLog
.
setDataId
(
userDTO
.
getUserid
());
dealLog
.
setpDataId
(
dataId
);
...
...
@@ -222,20 +273,20 @@ public class QywxGroupSyncOperation implements BaseSyncOperation {
dealLog
.
setEnterpriseId
(
enterpriseId
);
return
dealLog
;
}).
collect
(
Collectors
.
toList
());
preDealService
.
insert
(
preDealLogList
);
}
boolean
b
=
preDealService
.
updateStatusByDataId
(
taskId
,
dataId
,
PreDealTypeEnum
.
group
.
getVal
(),
PreDealStatusEnum
.
computed
.
getVal
(),
"成功"
);
if
(!
b
)
{
logger
.
info
(
"成功修改错误!{}"
,
dataId
);
return
;
}
List
<
TabHaobanPreDealLog
>
preList
=
preDealService
.
listReByPDataId
(
taskId
,
dataId
);
if
(
CollectionUtils
.
isNotEmpty
(
preList
))
{
Set
<
String
>
mid
=
preList
.
stream
().
map
(
tab
->
tab
.
getDataId
()).
collect
(
Collectors
.
toSet
());
dealDepartmentToMq
(
taskId
,
mid
,
SyncTaskStatusEnum
.
group_sync
);
}
else
{
checkDepartmentTask
(
taskId
);
//插入不存在的我们pre表的企业微信数据
int
count
=
preDealLogList
.
size
();
int
pre
=
count
/
1000
+
1
;
int
i
=
0
;
while
(
i
<
pre
){
i
++;
int
fromIndex
=
(
i
-
1
)*
1000
;
int
toIndex
=
(
count
-
fromIndex
)
>
1000
?
(
fromIndex
+
1000
):
count
;
List
<
TabHaobanPreDealLog
>
subList
=
preDealLogList
.
subList
(
fromIndex
,
toIndex
);
preDealService
.
insert
(
subList
);
}
}
//处理导购任务
checkDepartmentTask
(
taskId
);
}
@Override
...
...
@@ -248,6 +299,7 @@ public class QywxGroupSyncOperation implements BaseSyncOperation {
String
key
=
"haoban_sync_department_task_"
+
taskId
;
RedisUtil
.
lock
(
key
,
3L
);
TabHaobanSyncTask
syncTask
=
syncTaskService
.
getSyncTask
(
taskId
);
//同步成功 进入门店处理
if
(
syncTask
.
getStatusFlag
().
equals
(
SyncTaskStatusEnum
.
group_sync
.
getVal
()))
{
syncTaskService
.
updateTaskStatus
(
taskId
,
SyncTaskStatusEnum
.
clerk_sync
.
getVal
());
...
...
@@ -262,8 +314,6 @@ public class QywxGroupSyncOperation implements BaseSyncOperation {
}
RedisUtil
.
unlock
(
key
);
}
/**
* 放入mq处理部门数据
*
...
...
haoban-manage3-service/src/main/resources/mapper/PreDealLogMapper.xml
View file @
eadd1576
...
...
@@ -318,6 +318,15 @@
and data_type=#{dataType}
</if>
</select>
<select
id=
"listDataIdByTaskIdAndDataType"
resultType=
"java.lang.String"
>
select
data_id
from tab_haoban_pre_deal_log
where task_id = #{taskId}
and data_type =#{dataType}
</select>
<select
id=
"getLastPreDataByTaskId"
resultMap=
"BaseResultMap"
>
select
...
...
@@ -325,4 +334,15 @@
from tab_haoban_pre_deal_log
where task_id = #{taskId,jdbcType=INTEGER} order by update_time desc limit 1
</select>
<select
id=
"getRootDataIdByWxEnterpriseIdAndTaskId"
resultType=
"java.lang.String"
>
select
data_id
from tab_haoban_pre_deal_log
where task_id = #{taskId}
and p_data_id =0
and wx_enterprise_id =#{wxEnterpriseId} limit 1
</select>
</mapper>
\ No newline at end of file
haoban-manage3-service/src/test/java/test.java
0 → 100644
View file @
eadd1576
import
java.util.List
;
import
com.gic.haoban.manage.service.entity.TabHaobanPreDealLog
;
public
class
test
{
public
static
void
main
(
String
[]
args
)
{
//插入不存在的我们pre表的企业微信数据
int
pageSize
=
500
;
int
count
=
345
;
int
pre
=
count
/
pageSize
+
1
;
int
yushu
=
count
%
pageSize
;
if
(
yushu
==
0
){
pre
=
pre
-
1
;
}
int
i
=
0
;
while
(
i
<
pre
){
System
.
out
.
println
(
"这是第{}次,进入"
+
i
);
i
++;
int
fromIndex
=
(
i
-
1
)*
pageSize
;
int
toIndex
=
(
count
-
fromIndex
)
>
pageSize
?
(
fromIndex
+
pageSize
):
count
;
System
.
out
.
println
(
"fromIndex=============>"
+
fromIndex
);
System
.
out
.
println
(
"toIndex=============>"
+
toIndex
);
}
}
}
haoban-manage3-web/src/main/java/com/gic/haoban/manage/web/controller/TestController.java
View file @
eadd1576
...
...
@@ -140,4 +140,16 @@ public class TestController extends WebBaseController {
Page
<
MaidianLogDTO
>
page
=
maidianLogApiService
.
queryList
(
hbversion
,
pageInfo
);
return
resultResponse
(
HaoBanErrCode
.
ERR_1
,
page
);
}
@RequestMapping
(
"/deal-slef-qywx-sys-department"
)
public
HaobanResponse
dealSys1
(
String
corpid
,
String
secretVal
,
String
dataId
)
{
testApiService
.
listSelfQywxUser
(
corpid
,
secretVal
,
dataId
);
return
resultResponse
(
HaoBanErrCode
.
ERR_1
);
}
@RequestMapping
(
"/deal-all-qywx-sys-department"
)
public
HaobanResponse
dealSys2
(
String
corpid
,
String
secretVal
,
String
dataId
)
{
testApiService
.
listAllQywxUser
(
corpid
,
secretVal
,
dataId
);
return
resultResponse
(
HaoBanErrCode
.
ERR_1
);
}
}
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