Commit 1b27516a authored by shiyu's avatar shiyu

支持展示多个专场

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