Commit 62422985 authored by unset's avatar unset

会员统计信息修改

parent 2b5e39e0
......@@ -26,7 +26,6 @@ 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;
/**
......@@ -52,7 +51,7 @@ public class BaseUserMemberExportBiz extends BaseBiz<BaseUserMemberExportMapper,
@Autowired
private ThreadPoolTaskExecutor threadPoolTaskExecutor;
private final int BORDER_NUM=250;
private final int BORDER_NUM = 250;
private BaseUserMemberExport baseUserMemberExport;
......@@ -87,22 +86,22 @@ public class BaseUserMemberExportBiz extends BaseBiz<BaseUserMemberExportMapper,
.rentFreeDays(userMemberSaveDTO.getRentFreeDays())
.memberName(userMemberSaveDTO.getMemberName())
.discount(level == null ? 0 : level.getDiscount() == null ? 0 : level.getDiscount())
.status(hasUsed?1:0)
.userId(hasUsed?phoneAndUserIdMap.get(userMemberSaveDTO.getPhone()):null)
.status(hasUsed ? 1 : 0)
.userId(hasUsed ? phoneAndUserIdMap.get(userMemberSaveDTO.getPhone()) : null)
.source(0)
.crtId(userId)
.crtName(name)
.crtTime(Instant.now().toEpochMilli())
.verificationTime(hasUsed?Instant.now().toEpochMilli():0)
.verificationTime(hasUsed ? Instant.now().toEpochMilli() : 0)
.isDel(0)
.build();
if (log.isDebugEnabled()) {
log.debug("当前组装的数据:【{}】", memberExport);
}
Integer id=userMemberSaveDTO.getId() == null ? 0 : userMemberSaveDTO.getId();
if (id == 0){
Integer id = userMemberSaveDTO.getId() == null ? 0 : userMemberSaveDTO.getId();
if (id == 0) {
mapper.insertSelective(memberExport);
}else {
} else {
memberExport.setId(id);
mapper.updateByPrimaryKeySelective(memberExport);
}
......@@ -115,24 +114,22 @@ public class BaseUserMemberExportBiz extends BaseBiz<BaseUserMemberExportMapper,
List<BaseUserMemberExport> baseUserMemberExports = new ArrayList<>();
List<BaseUserMemberLevel> levesls = userMemberLevelBiz.getLevesls();
Map<Integer, BaseUserMemberLevel> levelAndbaseUserMemberMap = levesls.parallelStream().collect(Collectors.toMap(BaseUserMemberLevel::getLevel, Function.identity()));
Map<String,Integer> leavelNameAndLeaveMap = levelAndbaseUserMemberMap.values().parallelStream().collect(Collectors.toMap(BaseUserMemberLevel::getName, BaseUserMemberLevel::getLevel));
Map<String, List<BaseUserMemberLevel>> levelAndbaseUserMemberMap = levesls.stream().collect(Collectors.groupingBy(BaseUserMemberLevel::getName));
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 memberLevel = 1;
Integer discount = 0;
AtomicInteger counter = new AtomicInteger(0);
int threadNums= userMemberData.size()/BORDER_NUM==0?1:userMemberData.size()/BORDER_NUM;
int threadNums = userMemberData.size() / BORDER_NUM == 0 ? 1 : userMemberData.size() / BORDER_NUM;
CountDownLatch latch = new CountDownLatch(threadNums);
Map<Integer,UserMemberDTO> numAndUserMemberMap = new HashMap<>(userMemberData.size());
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, numAndUserMemberMap);
Map<Integer, UserMemberDTO> numAndUserMemberMap = new HashMap<>(userMemberData.size());
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, memberLevel, discount, counter, numAndUserMemberMap);
latch.countDown();
});
}
......@@ -147,8 +144,8 @@ public class BaseUserMemberExportBiz extends BaseBiz<BaseUserMemberExportMapper,
for (Map.Entry<Integer, UserMemberDTO> memberDTOEntry : entries) {
try {
baseUserMemberBiz.updUserMemberByUserId(memberDTOEntry.getValue());
}catch (Exception ex){
log.error("当前行数:【{}】",memberDTOEntry.getKey());
} catch (Exception ex) {
log.error("当前行数:【{}】", memberDTOEntry.getKey());
log.error("会员更新错误:【{}】", ex.getMessage());
throw new BaseException("");
}
......@@ -157,22 +154,22 @@ public class BaseUserMemberExportBiz extends BaseBiz<BaseUserMemberExportMapper,
}
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,Map<Integer,UserMemberDTO> numAndUserMemberMap) {
List<BaseUserMemberExport> baseUserMemberExports, Map<String, List<BaseUserMemberLevel>> levelAndbaseUserMemberMap,
Map<String, Integer> phoneAndUserIdMap,
Integer memberLevel, Integer discount, AtomicInteger counter, Map<Integer, UserMemberDTO> numAndUserMemberMap) {
for (String[] data : userMemberData) {
String phone = data[0];
phone = StringUtils.hasText(phone)?phone.trim():"";
phone = StringUtils.hasText(phone) ? phone.trim() : "";
String memberLevelName = data[1];
String memberName = data[2];
String totalNumber = data[3];
String rentFreeDays = data[4];
for (Map.Entry<String, Integer> entry : leaveNameAndLeaveEntry) {
if (entry.getKey().contains(memberLevelName.substring(0,1))){
memberLevel = entry.getValue();
discount = levelAndbaseUserMemberMap.get(memberLevel).getDiscount();
break;
if (levelAndbaseUserMemberMap.get(memberLevelName.substring(0, 1)) != null) {
List<BaseUserMemberLevel> list = levelAndbaseUserMemberMap.get(memberLevelName.substring(0, 1));
if (list != null && list.size() > 0) {
memberLevel = list.get(0).getLevel();
discount = list.get(0).getDiscount();
}
}
......@@ -186,7 +183,7 @@ public class BaseUserMemberExportBiz extends BaseBiz<BaseUserMemberExportMapper,
userMemberDTO.setIsBind(1);
userMemberDTO.setMemberName(memberName);
userMemberDTO.setBuyCount(0);
numAndUserMemberMap.put(counter.incrementAndGet(),userMemberDTO);
numAndUserMemberMap.put(counter.incrementAndGet(), userMemberDTO);
/* try {
baseUserMemberBiz.updUserMemberByUserId(userMemberDTO);
} catch (Exception e) {
......@@ -203,14 +200,14 @@ public class BaseUserMemberExportBiz extends BaseBiz<BaseUserMemberExportMapper,
.totalNumber(Integer.valueOf(totalNumber))
.rentFreeDays(Integer.valueOf(rentFreeDays))
.discount(discount)
.status(hasUsed?1:0)
.userId(hasUsed?phoneAndUserIdMap.get(phone):null)
.status(hasUsed ? 1 : 0)
.userId(hasUsed ? phoneAndUserIdMap.get(phone) : null)
.crtId(userId)
.memberName(memberName)
.source(0)
.crtName(userName)
.crtTime(Instant.now().toEpochMilli())
.verificationTime(hasUsed?Instant.now().toEpochMilli():null)
.verificationTime(hasUsed ? Instant.now().toEpochMilli() : null)
.isDel(0)
.build();
if (log.isDebugEnabled()) {
......@@ -249,8 +246,8 @@ public class BaseUserMemberExportBiz extends BaseBiz<BaseUserMemberExportMapper,
}
@Transactional(rollbackFor = Exception.class, propagation = Propagation.REQUIRED)
public void updateUserMemberExportDataToLoseEfficacyByPhone(String phone,Integer userId) {
mapper.updateUserMemberExportDataToLoseEfficacyByPhone(phone,userId,Instant.now().toEpochMilli());
public void updateUserMemberExportDataToLoseEfficacyByPhone(String phone, Integer userId) {
mapper.updateUserMemberExportDataToLoseEfficacyByPhone(phone, userId, Instant.now().toEpochMilli());
}
public PageDataVO<BaseUserMemberExportVo> findUserMemberExportDataPage(BaseUserMemberExportDataFindDTO exportDataFindDTO) {
......@@ -282,7 +279,7 @@ public class BaseUserMemberExportBiz extends BaseBiz<BaseUserMemberExportMapper,
}
@Override
public void insertSelective(BaseUserMemberExport baseUserMemberExport){
public void insertSelective(BaseUserMemberExport baseUserMemberExport) {
mapper.insertSelective(baseUserMemberExport);
}
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment