Commit 1b27516a authored by shiyu's avatar shiyu

支持展示多个专场

parent 5700d630
......@@ -528,7 +528,6 @@ public class SysSupplierItemServiceImpl implements SysSupplierItemService {
auctionConfig.setRealEndTime(StringUtils.isEmpty(dto.getAuctionEndTime()) ? endTime : DateUtils.parseString(dto.getAuctionEndTime()));
auctionConfig.setStartPrice(StringUtils.isEmpty(dto.getStartPrice()) ? 0 : PriceUtil.convertPriceFromStr(dto.getStartPrice()));
auctionConfig.setAddExtent(StringUtils.isEmpty(dto.getAddExtent()) ? 5000 : PriceUtil.convertPriceFromStr(dto.getAddExtent()));
auctionConfig.setAddExtent(StringUtils.isEmpty(dto.getAddExtent()) ? 50 : PriceUtil.convertPriceFromStr(dto.getAddExtent()));
auctionConfig.setEstimatedPrice(StringUtils.isEmpty(dto.getEstimatedPrice()) ? 999999999 : PriceUtil.convertPriceFromStr(dto.getEstimatedPrice()));
auctionConfig.setCreateTime(now);
auctionConfig.setUpdateTime(now);
......
......@@ -9,7 +9,7 @@ public interface SpecialPerformanceDao {
List<SpecialPerformance> find(SpecialPerformanceRequestDto dto);
SpecialPerformance findByType(SpecialPerformanceRequestDto dto);
List<SpecialPerformance> findByType(SpecialPerformanceRequestDto dto);
SpecialPerformance findById(int id);
......
......@@ -35,12 +35,12 @@ public class SpecialPerformanceDaoImpl implements SpecialPerformanceDao {
}
@Override
public SpecialPerformance findByType(SpecialPerformanceRequestDto dto) {
public List<SpecialPerformance> findByType(SpecialPerformanceRequestDto dto) {
SpecialPerformanceExample example = new SpecialPerformanceExample();
SpecialPerformanceExample.Criteria criteria = example.createCriteria();
criteria.andTypeEqualTo(dto.getType());
JdbcHelper.ifPresent(dto.getStateList(), criteria::andStateIn);
return specialPerformanceMapper.selectOneByExample(example);
return specialPerformanceMapper.selectByExample(example);
}
......
......@@ -90,67 +90,70 @@ public class SpecialPerformanceServiceImpl implements SpecialPerformanceService
specialPerformanceDao.update(updateDto);
}
}
List<SpecialPerformanceVo> resultList = new ArrayList<>();
SpecialPerformanceVo specialPerformanceVo = new SpecialPerformanceVo();
dto.setStateList(Arrays.asList(SpecialPerformanceEnum.StateEnum.PREVIEW.getCode(), SpecialPerformanceEnum.StateEnum.PROCESSING.getCode()));
SpecialPerformance specialPerformance = specialPerformanceDao.findByType(dto);
if (specialPerformance == null) {
return Result.success(specialPerformanceVo);
List<SpecialPerformance> specialPerformances = specialPerformanceDao.findByType(dto);
if (CollectionUtils.isEmpty(specialPerformances)) {
return Result.success(resultList);
}
for (SpecialPerformance specialPerformance : specialPerformances) {
SpecialPerformanceVo specialPerformanceVo = new SpecialPerformanceVo();
if (now.after(specialPerformance.getEndTime())) {
SpecialPerformance updateDto = new SpecialPerformance();
updateDto.setId(specialPerformance.getId());
updateDto.setState(SpecialPerformanceEnum.StateEnum.END.getCode());
updateDto.setUpdateTime(now);
specialPerformanceDao.update(updateDto);
specialPerformance.setState(SpecialPerformanceEnum.StateEnum.END.getCode());
}
int specialPerformanceId = specialPerformance.getId();
SpecialPerformanceConfigRequestDto specialPerformanceConfigRequestDto = new SpecialPerformanceConfigRequestDto();
specialPerformanceConfigRequestDto.setPage(dto.getPage());
specialPerformanceConfigRequestDto.setLimit(dto.getLimit());
specialPerformanceConfigRequestDto.setSpecialPerformanceId(specialPerformanceId);
//排除待上架的商品
AuctionConfigRequestDto auctionConfigRequestDto = new AuctionConfigRequestDto();
auctionConfigRequestDto.setState(AuctionEnum.StateEnum.WAIT_ON_SALE.getCode());
auctionConfigRequestDto.setLimit(9999);
List<AuctionConfig> auctionConfigList = auctionConfigDao.findList(auctionConfigRequestDto);
List<Long> filterItemIdList = auctionConfigList.stream().map(AuctionConfig::getItemId).collect(Collectors.toList());
if (!CollectionUtils.isEmpty(filterItemIdList)) {
specialPerformanceConfigRequestDto.setFilterItemIdList(filterItemIdList);
}
List<SpecialPerformanceConfig> list = specialPerformanceConfigDao.findList(specialPerformanceConfigRequestDto);
PageInfo pageInfo = new PageInfo<>(list);
specialPerformanceVo.setTotalItemNum(pageInfo.getTotal());
specialPerformanceVo.setSpecialPerformanceId(specialPerformanceId);
specialPerformanceVo.setTitle(specialPerformance.getTitle());
specialPerformanceVo.setState(specialPerformance.getState());
specialPerformanceVo.setStateName(SpecialPerformanceEnum.StateEnum.getNameByCode(specialPerformance.getState()));
specialPerformanceVo.setStartTime(specialPerformance.getStartTime());
specialPerformanceVo.setEndTime(specialPerformance.getEndTime());
long totalViewNum = specialPerformanceConfigDao.countViewNum(specialPerformanceId);
specialPerformanceVo.setTotalViewNum(totalViewNum);
List<Map<String, Object>> dataList = new ArrayList<>();
if (now.after(specialPerformance.getEndTime())) {
SpecialPerformance updateDto = new SpecialPerformance();
updateDto.setId(specialPerformance.getId());
updateDto.setState(SpecialPerformanceEnum.StateEnum.END.getCode());
updateDto.setUpdateTime(now);
specialPerformanceDao.update(updateDto);
specialPerformance.setState(SpecialPerformanceEnum.StateEnum.END.getCode());
}
int specialPerformanceId = specialPerformance.getId();
SpecialPerformanceConfigRequestDto specialPerformanceConfigRequestDto = new SpecialPerformanceConfigRequestDto();
specialPerformanceConfigRequestDto.setPage(dto.getPage());
specialPerformanceConfigRequestDto.setLimit(dto.getLimit());
specialPerformanceConfigRequestDto.setSpecialPerformanceId(specialPerformanceId);
//排除待上架的商品
AuctionConfigRequestDto auctionConfigRequestDto = new AuctionConfigRequestDto();
auctionConfigRequestDto.setState(AuctionEnum.StateEnum.WAIT_ON_SALE.getCode());
auctionConfigRequestDto.setLimit(9999);
List<AuctionConfig> auctionConfigList = auctionConfigDao.findList(auctionConfigRequestDto);
List<Long> filterItemIdList = auctionConfigList.stream().map(AuctionConfig::getItemId).collect(Collectors.toList());
if (!CollectionUtils.isEmpty(filterItemIdList)) {
specialPerformanceConfigRequestDto.setFilterItemIdList(filterItemIdList);
}
List<SpecialPerformanceConfig> list = specialPerformanceConfigDao.findList(specialPerformanceConfigRequestDto);
PageInfo pageInfo = new PageInfo<>(list);
specialPerformanceVo.setTotalItemNum(pageInfo.getTotal());
specialPerformanceVo.setSpecialPerformanceId(specialPerformanceId);
specialPerformanceVo.setTitle(specialPerformance.getTitle());
specialPerformanceVo.setState(specialPerformance.getState());
specialPerformanceVo.setStateName(SpecialPerformanceEnum.StateEnum.getNameByCode(specialPerformance.getState()));
specialPerformanceVo.setStartTime(specialPerformance.getStartTime());
specialPerformanceVo.setEndTime(specialPerformance.getEndTime());
long totalViewNum = specialPerformanceConfigDao.countViewNum(specialPerformanceId);
specialPerformanceVo.setTotalViewNum(totalViewNum);
List<Map<String, Object>> dataList = new ArrayList<>();
List<Long> itemList = list.stream().map(SpecialPerformanceConfig::getItemId).collect(Collectors.toList());
List<SupplierItem> supplierItemList = new ArrayList<>();
if (!CollectionUtils.isEmpty(itemList)) {
SupplierItemRequestDto supplierItemRequestDto = new SupplierItemRequestDto();
supplierItemRequestDto.setIds(itemList);
supplierItemList = supplierItemDao.findList(supplierItemRequestDto);
}
Map<Long, Integer> specialPerformanceConfigMap = list.stream().collect(Collectors.toMap(SpecialPerformanceConfig::getItemId, SpecialPerformanceConfig::getViewNum, (k1, k2) ->k2));
for (SupplierItem supplierItem : supplierItemList) {
Map<String, Object> map = new HashMap<>();
map.put("homePageImage", MediaUtil.getHomePageImage(supplierItem.getImages(), supplierItem.getVideos()));
map.put("itemId", supplierItem.getId());
map.put("itemName", supplierItem.getName());
map.put("viewNum", specialPerformanceConfigMap.get(supplierItem.getId()));
dataList.add(map);
List<Long> itemList = list.stream().map(SpecialPerformanceConfig::getItemId).collect(Collectors.toList());
List<SupplierItem> supplierItemList = new ArrayList<>();
if (!CollectionUtils.isEmpty(itemList)) {
SupplierItemRequestDto supplierItemRequestDto = new SupplierItemRequestDto();
supplierItemRequestDto.setIds(itemList);
supplierItemList = supplierItemDao.findList(supplierItemRequestDto);
}
Map<Long, Integer> specialPerformanceConfigMap = list.stream().collect(Collectors.toMap(SpecialPerformanceConfig::getItemId, SpecialPerformanceConfig::getViewNum, (k1, k2) -> k2));
for (SupplierItem supplierItem : supplierItemList) {
Map<String, Object> map = new HashMap<>();
map.put("homePageImage", MediaUtil.getHomePageImage(supplierItem.getImages(), supplierItem.getVideos()));
map.put("itemId", supplierItem.getId());
map.put("itemName", supplierItem.getName());
map.put("viewNum", specialPerformanceConfigMap.get(supplierItem.getId()));
dataList.add(map);
}
specialPerformanceVo.setItemList(dataList);
resultList.add(specialPerformanceVo);
}
specialPerformanceVo.setItemList(dataList);
return Result.success(specialPerformanceVo);
return Result.success(resultList);
} catch (Exception e) {
logger.error("查询专场信息失败 error : {}", e);
}
......@@ -278,45 +281,47 @@ public class SpecialPerformanceServiceImpl implements SpecialPerformanceService
SpecialPerformanceRequestDto specialPerformanceRequestDto = new SpecialPerformanceRequestDto();
specialPerformanceRequestDto.setType(SpecialPerformanceEnum.TypeEnum.AUCTION.getCode());
specialPerformanceRequestDto.setState(SpecialPerformanceEnum.StateEnum.PROCESSING.getCode());
SpecialPerformance specialPerformance = specialPerformanceDao.findByType(specialPerformanceRequestDto);
if (specialPerformance == null) {
List<SpecialPerformance> specialPerformanceList = specialPerformanceDao.findByType(specialPerformanceRequestDto);
if (CollectionUtils.isEmpty(specialPerformanceList)) {
return Result.failed("专场信息为空");
}
logger.info("当前进行的专场id:{}, 名称为 {} ", specialPerformance.getId(), specialPerformance.getTitle());
String progressKey = SPECIAL_PERFORMANCE_PROGRESS_SEND_MSG_KEY + specialPerformance.getId();
if (!redisUtils.hasKey(progressKey)) {
//发送短信通知
String url = wxAppletApi.getUrlLink(SPECIAL_PERFORMANCE_URL, "specialId=" + specialPerformance.getId());
String msg = specialPerformance.getTitle() + "正在火热进行中,请前往" + url + "查看";
boolean hasNextPage = true;
int page = 1;
UserRequestDto userRequestDto = new UserRequestDto();
while (hasNextPage) {
List<User> userList = userDao.findList(userRequestDto);
PageInfo pageInfo = new PageInfo(userList);
for (User user : userList) {
String phone = user.getMobile();
if (StringUtils.hasLength(phone)) {
aliSmsSender.sendSms(phone, msg);
for (SpecialPerformance specialPerformance : specialPerformanceList) {
logger.info("当前进行的专场id:{}, 名称为 {} ", specialPerformance.getId(), specialPerformance.getTitle());
String progressKey = SPECIAL_PERFORMANCE_PROGRESS_SEND_MSG_KEY + specialPerformance.getId();
if (!redisUtils.hasKey(progressKey)) {
//发送短信通知
String url = wxAppletApi.getUrlLink(SPECIAL_PERFORMANCE_URL, "specialId=" + specialPerformance.getId());
String msg = specialPerformance.getTitle() + "正在火热进行中,请前往" + url + "查看";
boolean hasNextPage = true;
int page = 1;
UserRequestDto userRequestDto = new UserRequestDto();
while (hasNextPage) {
List<User> userList = userDao.findList(userRequestDto);
PageInfo pageInfo = new PageInfo(userList);
for (User user : userList) {
String phone = user.getMobile();
if (StringUtils.hasLength(phone)) {
aliSmsSender.sendSms(phone, msg);
}
}
if (pageInfo.isHasNextPage()) {
page = page + 1;
userRequestDto.setPage(page);
logger.info("专场进行中要发送短信通知的用户数据总页数为 : {}, 当前为 : {}", pageInfo.getPages(), page);
} else {
hasNextPage = false;
logger.info("============= 发送专场进行中短信循环结束 =============");
}
if (page > 500) {
hasNextPage = false;
logger.info("============= 发送专场进行中短信超出上限,停止发送 =============");
}
}
if (pageInfo.isHasNextPage()) {
page = page + 1;
userRequestDto.setPage(page);
logger.info("专场进行中要发送短信通知的用户数据总页数为 : {}, 当前为 : {}", pageInfo.getPages(), page);
} else {
hasNextPage = false;
logger.info("============= 发送专场进行中短信循环结束 =============");
}
if (page > 500) {
hasNextPage = false;
logger.info("============= 发送专场进行中短信超出上限,停止发送 =============");
}
logger.info("================专场id: {}, 进行中通知任务,提醒短信发送成功 ==============", specialPerformance.getId());
redisUtils.set(progressKey, specialPerformance.getId(), 3600 * 24);
} else {
return Result.failed("24小时内只能执行一次专场进行中通知任务");
}
logger.info("================专场id: {}, 进行中通知任务,提醒短信发送成功 ==============", specialPerformance.getId());
redisUtils.set(progressKey, specialPerformance.getId(), 3600 * 24);
} else {
return Result.failed("24小时内只能执行一次专场进行中通知任务");
}
return Result.success("专场进行中通知任务执行成功");
} catch (Exception e) {
......
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