Commit 62422985 authored by unset's avatar unset

会员统计信息修改

parent 2b5e39e0
...@@ -26,7 +26,6 @@ import java.time.Instant; ...@@ -26,7 +26,6 @@ import java.time.Instant;
import java.util.*; import java.util.*;
import java.util.concurrent.CountDownLatch; import java.util.concurrent.CountDownLatch;
import java.util.concurrent.atomic.AtomicInteger; import java.util.concurrent.atomic.AtomicInteger;
import java.util.function.Function;
import java.util.stream.Collectors; import java.util.stream.Collectors;
/** /**
...@@ -50,9 +49,9 @@ public class BaseUserMemberExportBiz extends BaseBiz<BaseUserMemberExportMapper, ...@@ -50,9 +49,9 @@ public class BaseUserMemberExportBiz extends BaseBiz<BaseUserMemberExportMapper,
private AppUserLoginBiz appUserLoginBiz; private AppUserLoginBiz appUserLoginBiz;
@Autowired @Autowired
private ThreadPoolTaskExecutor threadPoolTaskExecutor; private ThreadPoolTaskExecutor threadPoolTaskExecutor;
private final int BORDER_NUM=250; private final int BORDER_NUM = 250;
private BaseUserMemberExport baseUserMemberExport; private BaseUserMemberExport baseUserMemberExport;
...@@ -87,22 +86,22 @@ public class BaseUserMemberExportBiz extends BaseBiz<BaseUserMemberExportMapper, ...@@ -87,22 +86,22 @@ public class BaseUserMemberExportBiz extends BaseBiz<BaseUserMemberExportMapper,
.rentFreeDays(userMemberSaveDTO.getRentFreeDays()) .rentFreeDays(userMemberSaveDTO.getRentFreeDays())
.memberName(userMemberSaveDTO.getMemberName()) .memberName(userMemberSaveDTO.getMemberName())
.discount(level == null ? 0 : level.getDiscount() == null ? 0 : level.getDiscount()) .discount(level == null ? 0 : level.getDiscount() == null ? 0 : level.getDiscount())
.status(hasUsed?1:0) .status(hasUsed ? 1 : 0)
.userId(hasUsed?phoneAndUserIdMap.get(userMemberSaveDTO.getPhone()):null) .userId(hasUsed ? phoneAndUserIdMap.get(userMemberSaveDTO.getPhone()) : null)
.source(0) .source(0)
.crtId(userId) .crtId(userId)
.crtName(name) .crtName(name)
.crtTime(Instant.now().toEpochMilli()) .crtTime(Instant.now().toEpochMilli())
.verificationTime(hasUsed?Instant.now().toEpochMilli():0) .verificationTime(hasUsed ? Instant.now().toEpochMilli() : 0)
.isDel(0) .isDel(0)
.build(); .build();
if (log.isDebugEnabled()) { if (log.isDebugEnabled()) {
log.debug("当前组装的数据:【{}】", memberExport); log.debug("当前组装的数据:【{}】", memberExport);
} }
Integer id=userMemberSaveDTO.getId() == null ? 0 : userMemberSaveDTO.getId(); Integer id = userMemberSaveDTO.getId() == null ? 0 : userMemberSaveDTO.getId();
if (id == 0){ if (id == 0) {
mapper.insertSelective(memberExport); mapper.insertSelective(memberExport);
}else { } else {
memberExport.setId(id); memberExport.setId(id);
mapper.updateByPrimaryKeySelective(memberExport); mapper.updateByPrimaryKeySelective(memberExport);
} }
...@@ -115,27 +114,25 @@ public class BaseUserMemberExportBiz extends BaseBiz<BaseUserMemberExportMapper, ...@@ -115,27 +114,25 @@ public class BaseUserMemberExportBiz extends BaseBiz<BaseUserMemberExportMapper,
List<BaseUserMemberExport> baseUserMemberExports = new ArrayList<>(); List<BaseUserMemberExport> baseUserMemberExports = new ArrayList<>();
List<BaseUserMemberLevel> levesls = userMemberLevelBiz.getLevesls(); List<BaseUserMemberLevel> levesls = userMemberLevelBiz.getLevesls();
Map<Integer, BaseUserMemberLevel> levelAndbaseUserMemberMap = levesls.parallelStream().collect(Collectors.toMap(BaseUserMemberLevel::getLevel, Function.identity())); Map<String, List<BaseUserMemberLevel>> levelAndbaseUserMemberMap = levesls.stream().collect(Collectors.groupingBy(BaseUserMemberLevel::getName));
Map<String,Integer> leavelNameAndLeaveMap = levelAndbaseUserMemberMap.values().parallelStream().collect(Collectors.toMap(BaseUserMemberLevel::getName, BaseUserMemberLevel::getLevel));
List<String> phones = userMemberData.stream().map(x -> x[0]).distinct().collect(Collectors.toList()); List<String> phones = userMemberData.stream().map(x -> x[0]).distinct().collect(Collectors.toList());
Map<String, Integer> phoneAndUserIdMap = appUserLoginBiz.findPhoneAndUserIdMapByPhones(phones); Map<String, Integer> phoneAndUserIdMap = appUserLoginBiz.findPhoneAndUserIdMapByPhones(phones);
Set<Map.Entry<String, Integer>> leaveNameAndLeaveEntry = leavelNameAndLeaveMap.entrySet(); Integer memberLevel = 1;
Integer memberLevel =1;
Integer discount = 0; Integer discount = 0;
AtomicInteger counter = new AtomicInteger(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); CountDownLatch latch = new CountDownLatch(threadNums);
Map<Integer,UserMemberDTO> numAndUserMemberMap = new HashMap<>(userMemberData.size()); Map<Integer, UserMemberDTO> numAndUserMemberMap = new HashMap<>(userMemberData.size());
for (int i=0;i<threadNums;i++){ for (int i = 0; i < threadNums; i++) {
int startIndex = i*BORDER_NUM; int startIndex = i * BORDER_NUM;
int endIndex=i==(threadNums-1)?userMemberData.size():(i+1)*BORDER_NUM; int endIndex = i == (threadNums - 1) ? userMemberData.size() : (i + 1) * BORDER_NUM;
List<String[]> subResultDate = userMemberData.subList(startIndex,endIndex); List<String[]> subResultDate = userMemberData.subList(startIndex, endIndex);
threadPoolTaskExecutor.execute(()->{ threadPoolTaskExecutor.execute(() -> {
wrapperData(subResultDate, userId, userName, baseUserMemberExports, levelAndbaseUserMemberMap, phoneAndUserIdMap, leaveNameAndLeaveEntry, memberLevel, discount, counter, numAndUserMemberMap); wrapperData(subResultDate, userId, userName, baseUserMemberExports, levelAndbaseUserMemberMap, phoneAndUserIdMap, memberLevel, discount, counter, numAndUserMemberMap);
latch.countDown(); latch.countDown();
}); });
} }
try { try {
latch.await(); latch.await();
} catch (InterruptedException e) { } catch (InterruptedException e) {
...@@ -147,8 +144,8 @@ public class BaseUserMemberExportBiz extends BaseBiz<BaseUserMemberExportMapper, ...@@ -147,8 +144,8 @@ public class BaseUserMemberExportBiz extends BaseBiz<BaseUserMemberExportMapper,
for (Map.Entry<Integer, UserMemberDTO> memberDTOEntry : entries) { for (Map.Entry<Integer, UserMemberDTO> memberDTOEntry : entries) {
try { try {
baseUserMemberBiz.updUserMemberByUserId(memberDTOEntry.getValue()); baseUserMemberBiz.updUserMemberByUserId(memberDTOEntry.getValue());
}catch (Exception ex){ } catch (Exception ex) {
log.error("当前行数:【{}】",memberDTOEntry.getKey()); log.error("当前行数:【{}】", memberDTOEntry.getKey());
log.error("会员更新错误:【{}】", ex.getMessage()); log.error("会员更新错误:【{}】", ex.getMessage());
throw new BaseException(""); throw new BaseException("");
} }
...@@ -157,22 +154,22 @@ public class BaseUserMemberExportBiz extends BaseBiz<BaseUserMemberExportMapper, ...@@ -157,22 +154,22 @@ public class BaseUserMemberExportBiz extends BaseBiz<BaseUserMemberExportMapper,
} }
private void wrapperData(List<String[]> userMemberData, Integer userId, String userName, private void wrapperData(List<String[]> userMemberData, Integer userId, String userName,
List<BaseUserMemberExport> baseUserMemberExports, Map<Integer, BaseUserMemberLevel> levelAndbaseUserMemberMap, List<BaseUserMemberExport> baseUserMemberExports, Map<String, List<BaseUserMemberLevel>> levelAndbaseUserMemberMap,
Map<String, Integer> phoneAndUserIdMap, Set<Map.Entry<String, Integer>> leaveNameAndLeaveEntry, Map<String, Integer> phoneAndUserIdMap,
Integer memberLevel, Integer discount, AtomicInteger counter,Map<Integer,UserMemberDTO> numAndUserMemberMap) { Integer memberLevel, Integer discount, AtomicInteger counter, Map<Integer, UserMemberDTO> numAndUserMemberMap) {
for (String[] data : userMemberData) { for (String[] data : userMemberData) {
String phone = data[0]; String phone = data[0];
phone = StringUtils.hasText(phone)?phone.trim():""; phone = StringUtils.hasText(phone) ? phone.trim() : "";
String memberLevelName = data[1]; String memberLevelName = data[1];
String memberName = data[2]; String memberName = data[2];
String totalNumber = data[3]; String totalNumber = data[3];
String rentFreeDays = data[4]; String rentFreeDays = data[4];
for (Map.Entry<String, Integer> entry : leaveNameAndLeaveEntry) { if (levelAndbaseUserMemberMap.get(memberLevelName.substring(0, 1)) != null) {
if (entry.getKey().contains(memberLevelName.substring(0,1))){ List<BaseUserMemberLevel> list = levelAndbaseUserMemberMap.get(memberLevelName.substring(0, 1));
memberLevel = entry.getValue(); if (list != null && list.size() > 0) {
discount = levelAndbaseUserMemberMap.get(memberLevel).getDiscount(); memberLevel = list.get(0).getLevel();
break; discount = list.get(0).getDiscount();
} }
} }
...@@ -186,7 +183,7 @@ public class BaseUserMemberExportBiz extends BaseBiz<BaseUserMemberExportMapper, ...@@ -186,7 +183,7 @@ public class BaseUserMemberExportBiz extends BaseBiz<BaseUserMemberExportMapper,
userMemberDTO.setIsBind(1); userMemberDTO.setIsBind(1);
userMemberDTO.setMemberName(memberName); userMemberDTO.setMemberName(memberName);
userMemberDTO.setBuyCount(0); userMemberDTO.setBuyCount(0);
numAndUserMemberMap.put(counter.incrementAndGet(),userMemberDTO); numAndUserMemberMap.put(counter.incrementAndGet(), userMemberDTO);
/* try { /* try {
baseUserMemberBiz.updUserMemberByUserId(userMemberDTO); baseUserMemberBiz.updUserMemberByUserId(userMemberDTO);
} catch (Exception e) { } catch (Exception e) {
...@@ -203,14 +200,14 @@ public class BaseUserMemberExportBiz extends BaseBiz<BaseUserMemberExportMapper, ...@@ -203,14 +200,14 @@ public class BaseUserMemberExportBiz extends BaseBiz<BaseUserMemberExportMapper,
.totalNumber(Integer.valueOf(totalNumber)) .totalNumber(Integer.valueOf(totalNumber))
.rentFreeDays(Integer.valueOf(rentFreeDays)) .rentFreeDays(Integer.valueOf(rentFreeDays))
.discount(discount) .discount(discount)
.status(hasUsed?1:0) .status(hasUsed ? 1 : 0)
.userId(hasUsed?phoneAndUserIdMap.get(phone):null) .userId(hasUsed ? phoneAndUserIdMap.get(phone) : null)
.crtId(userId) .crtId(userId)
.memberName(memberName) .memberName(memberName)
.source(0) .source(0)
.crtName(userName) .crtName(userName)
.crtTime(Instant.now().toEpochMilli()) .crtTime(Instant.now().toEpochMilli())
.verificationTime(hasUsed?Instant.now().toEpochMilli():null) .verificationTime(hasUsed ? Instant.now().toEpochMilli() : null)
.isDel(0) .isDel(0)
.build(); .build();
if (log.isDebugEnabled()) { if (log.isDebugEnabled()) {
...@@ -249,8 +246,8 @@ public class BaseUserMemberExportBiz extends BaseBiz<BaseUserMemberExportMapper, ...@@ -249,8 +246,8 @@ public class BaseUserMemberExportBiz extends BaseBiz<BaseUserMemberExportMapper,
} }
@Transactional(rollbackFor = Exception.class, propagation = Propagation.REQUIRED) @Transactional(rollbackFor = Exception.class, propagation = Propagation.REQUIRED)
public void updateUserMemberExportDataToLoseEfficacyByPhone(String phone,Integer userId) { public void updateUserMemberExportDataToLoseEfficacyByPhone(String phone, Integer userId) {
mapper.updateUserMemberExportDataToLoseEfficacyByPhone(phone,userId,Instant.now().toEpochMilli()); mapper.updateUserMemberExportDataToLoseEfficacyByPhone(phone, userId, Instant.now().toEpochMilli());
} }
public PageDataVO<BaseUserMemberExportVo> findUserMemberExportDataPage(BaseUserMemberExportDataFindDTO exportDataFindDTO) { public PageDataVO<BaseUserMemberExportVo> findUserMemberExportDataPage(BaseUserMemberExportDataFindDTO exportDataFindDTO) {
...@@ -282,7 +279,7 @@ public class BaseUserMemberExportBiz extends BaseBiz<BaseUserMemberExportMapper, ...@@ -282,7 +279,7 @@ public class BaseUserMemberExportBiz extends BaseBiz<BaseUserMemberExportMapper,
} }
@Override @Override
public void insertSelective(BaseUserMemberExport baseUserMemberExport){ public void insertSelective(BaseUserMemberExport baseUserMemberExport) {
mapper.insertSelective(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