Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
C
cloud-platform
Project
Project
Details
Activity
Releases
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
youjj
cloud-platform
Commits
5303b20c
Commit
5303b20c
authored
Sep 26, 2019
by
libin
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
会员导入优化
parent
3cb8c1a8
Changes
2
Show whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
36 additions
and
8 deletions
+36
-8
AppUserLoginBiz.java
...om/github/wxiaoqi/security/admin/biz/AppUserLoginBiz.java
+1
-1
BaseUserMemberExportBiz.java
...b/wxiaoqi/security/admin/biz/BaseUserMemberExportBiz.java
+35
-7
No files found.
ace-modules/ace-admin/src/main/java/com/github/wxiaoqi/security/admin/biz/AppUserLoginBiz.java
View file @
5303b20c
...
...
@@ -232,7 +232,7 @@ public class AppUserLoginBiz extends BaseBiz<AppUserLoginMapper, AppUserLogin> {
List
<
AppUserLogin
>
appUserLogins
=
mapper
.
selectbyPhones
(
phones
);
Map
<
String
,
Integer
>
phoneAndUserIdMap
=
null
;
if
(
CollectionUtils
.
isNotEmpty
(
appUserLogins
))
{
phoneAndUserIdMap
=
appUserLogins
.
s
tream
().
collect
(
Collectors
.
toMap
(
AppUserLogin:
:
getUsername
,
AppUserLogin:
:
getId
));
phoneAndUserIdMap
=
appUserLogins
.
parallelS
tream
().
collect
(
Collectors
.
toMap
(
AppUserLogin:
:
getUsername
,
AppUserLogin:
:
getId
));
}
return
phoneAndUserIdMap
;
}
...
...
ace-modules/ace-admin/src/main/java/com/github/wxiaoqi/security/admin/biz/BaseUserMemberExportBiz.java
View file @
5303b20c
...
...
@@ -17,6 +17,7 @@ import lombok.extern.slf4j.Slf4j;
import
org.apache.commons.collections.CollectionUtils
;
import
org.springframework.beans.BeanUtils
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor
;
import
org.springframework.stereotype.Service
;
import
org.springframework.transaction.annotation.Propagation
;
import
org.springframework.transaction.annotation.Transactional
;
...
...
@@ -24,6 +25,8 @@ import tk.mybatis.mapper.entity.Example;
import
java.time.Instant
;
import
java.util.*
;
import
java.util.concurrent.CountDownLatch
;
import
java.util.concurrent.atomic.AtomicInteger
;
import
java.util.function.Function
;
import
java.util.stream.Collectors
;
...
...
@@ -47,6 +50,11 @@ public class BaseUserMemberExportBiz extends BaseBiz<BaseUserMemberExportMapper,
@Autowired
private
AppUserLoginBiz
appUserLoginBiz
;
@Autowired
private
ThreadPoolTaskExecutor
threadPoolTaskExecutor
;
private
final
int
BORDER_NUM
=
250
;
public
void
saveUserMember
(
UserMemberSaveDTO
userMemberSaveDTO
,
Integer
userId
,
String
name
)
{
if
(
userMemberSaveDTO
!=
null
)
{
...
...
@@ -95,15 +103,37 @@ public class BaseUserMemberExportBiz extends BaseBiz<BaseUserMemberExportMapper,
List
<
BaseUserMemberExport
>
baseUserMemberExports
=
new
ArrayList
<>();
List
<
BaseUserMemberLevel
>
levesls
=
userMemberLevelBiz
.
getLevesls
();
Map
<
Integer
,
BaseUserMemberLevel
>
levelAndbaseUserMemberMap
=
levesls
.
s
tream
().
collect
(
Collectors
.
toMap
(
BaseUserMemberLevel:
:
getLevel
,
Function
.
identity
()));
Map
<
String
,
Integer
>
leavelNameAndLeaveMap
=
levelAndbaseUserMemberMap
.
values
().
s
tream
().
collect
(
Collectors
.
toMap
(
BaseUserMemberLevel:
:
getName
,
BaseUserMemberLevel:
:
getLevel
));
Map
<
Integer
,
BaseUserMemberLevel
>
levelAndbaseUserMemberMap
=
levesls
.
parallelS
tream
().
collect
(
Collectors
.
toMap
(
BaseUserMemberLevel:
:
getLevel
,
Function
.
identity
()));
Map
<
String
,
Integer
>
leavelNameAndLeaveMap
=
levelAndbaseUserMemberMap
.
values
().
parallelS
tream
().
collect
(
Collectors
.
toMap
(
BaseUserMemberLevel:
:
getName
,
BaseUserMemberLevel:
:
getLevel
));
List
<
String
>
phones
=
userMemberData
.
stream
().
map
(
x
->
x
[
0
]).
distinct
().
collect
(
Collectors
.
toList
());
Map
<
String
,
Integer
>
phoneAndUserIdMap
=
appUserLoginBiz
.
findPhoneAndUserIdMapByPhones
(
phones
);
Set
<
Map
.
Entry
<
String
,
Integer
>>
leaveNameAndLeaveEntry
=
leavelNameAndLeaveMap
.
entrySet
();
Integer
memberLevel
=
1
;
Integer
discount
=
0
;
for
(
String
[]
data
:
userMemberData
)
{
AtomicInteger
counter
=
new
AtomicInteger
(
0
);
int
threadNums
=
userMemberData
.
size
()/
BORDER_NUM
==
0
?
1
:
userMemberData
.
size
()/
BORDER_NUM
;
CountDownLatch
latch
=
new
CountDownLatch
(
threadNums
);
for
(
int
i
=
0
;
i
<
threadNums
;
i
++){
int
startIndex
=
i
*
BORDER_NUM
;
int
endIndex
=
i
==(
threadNums
-
1
)?
userMemberData
.
size
():(
i
+
1
)*
BORDER_NUM
;
List
<
String
[]>
subResultDate
=
userMemberData
.
subList
(
startIndex
,
endIndex
);
threadPoolTaskExecutor
.
execute
(()->{
wrapperData
(
subResultDate
,
userId
,
userName
,
baseUserMemberExports
,
levelAndbaseUserMemberMap
,
phoneAndUserIdMap
,
leaveNameAndLeaveEntry
,
memberLevel
,
discount
,
counter
);
latch
.
countDown
();
});
}
try
{
latch
.
await
();
}
catch
(
InterruptedException
e
)
{
throw
new
BaseException
(
"导入数据失败"
);
}
InsertBatch
(
baseUserMemberExports
);
return
baseUserMemberExports
.
size
();
}
private
void
wrapperData
(
List
<
String
[]>
userMemberData
,
Integer
userId
,
String
userName
,
List
<
BaseUserMemberExport
>
baseUserMemberExports
,
Map
<
Integer
,
BaseUserMemberLevel
>
levelAndbaseUserMemberMap
,
Map
<
String
,
Integer
>
phoneAndUserIdMap
,
Set
<
Map
.
Entry
<
String
,
Integer
>>
leaveNameAndLeaveEntry
,
Integer
memberLevel
,
Integer
discount
,
AtomicInteger
counter
)
{
for
(
String
[]
data
:
userMemberData
)
{
counter
.
incrementAndGet
();
String
phone
=
data
[
0
];
String
memberLevelName
=
data
[
1
];
String
memberName
=
data
[
2
];
...
...
@@ -131,6 +161,7 @@ public class BaseUserMemberExportBiz extends BaseBiz<BaseUserMemberExportMapper,
try
{
baseUserMemberBiz
.
updUserMemberByUserId
(
userMemberDTO
);
}
catch
(
Exception
e
)
{
log
.
error
(
"当前行数:【{}】"
,
counter
.
get
());
log
.
error
(
"会员更新错误:【{}】"
,
e
.
getMessage
());
throw
new
BaseException
(
e
);
}
...
...
@@ -138,7 +169,7 @@ public class BaseUserMemberExportBiz extends BaseBiz<BaseUserMemberExportMapper,
BaseUserMemberExport
memberExport
=
BaseUserMemberExport
.
builder
()
.
username
(
phone
)
.
username
(
phone
.
trim
()
)
.
memberLevel
(
memberLevel
)
.
totalNumber
(
Integer
.
valueOf
(
totalNumber
))
.
rentFreeDays
(
Integer
.
valueOf
(
rentFreeDays
))
...
...
@@ -155,9 +186,6 @@ public class BaseUserMemberExportBiz extends BaseBiz<BaseUserMemberExportMapper,
}
baseUserMemberExports
.
add
(
memberExport
);
}
InsertBatch
(
baseUserMemberExports
);
return
baseUserMemberExports
.
size
();
}
@Transactional
(
rollbackFor
=
Exception
.
class
,
propagation
=
Propagation
.
REQUIRED
)
...
...
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