master:管理员菜单推广营销调整;

pull/1121/head
liujiang 2025-08-15 00:15:54 +08:00
parent f3e7f0e3c5
commit 2c8a1cca17
3 changed files with 38 additions and 22 deletions

View File

@ -5,6 +5,8 @@ import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.experimental.Accessors;
import java.util.List;
/**
* @author liujiang
* @version v1.0
@ -71,5 +73,11 @@ public class AdminAdRoundPageResDTO {
private String picPixel;
@ApiModelProperty(value = "推广图片大小")
private String picSize;
@ApiModelProperty(value = "推广图url")
private String advertPicUrl;
@ApiModelProperty(value = "推广商品id str")
private String prodIdStr;
@ApiModelProperty(value = "推广商品列表")
private List<String> prodArtNumList;
}

View File

@ -1,6 +1,7 @@
package com.ruoyi.xkt.service.impl;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.util.StrUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
@ -10,17 +11,11 @@ import com.ruoyi.common.core.page.Page;
import com.ruoyi.common.enums.AdType;
import com.ruoyi.common.exception.ServiceException;
import com.ruoyi.common.utils.DateUtils;
import com.ruoyi.xkt.domain.AdvertRound;
import com.ruoyi.xkt.domain.AdvertRoundRecord;
import com.ruoyi.xkt.domain.AdvertStoreFile;
import com.ruoyi.xkt.domain.SysFile;
import com.ruoyi.xkt.domain.*;
import com.ruoyi.xkt.dto.adminAdvertRound.*;
import com.ruoyi.xkt.dto.advertRound.AdRoundUpdateDTO;
import com.ruoyi.xkt.enums.*;
import com.ruoyi.xkt.mapper.AdvertRoundMapper;
import com.ruoyi.xkt.mapper.AdvertRoundRecordMapper;
import com.ruoyi.xkt.mapper.AdvertStoreFileMapper;
import com.ruoyi.xkt.mapper.SysFileMapper;
import com.ruoyi.xkt.mapper.*;
import com.ruoyi.xkt.service.IAdminAdvertRoundService;
import com.ruoyi.xkt.service.IAssetService;
import lombok.RequiredArgsConstructor;
@ -36,10 +31,9 @@ import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.LocalTime;
import java.time.ZoneId;
import java.util.Date;
import java.util.List;
import java.util.Objects;
import java.util.Optional;
import java.util.*;
import java.util.concurrent.ConcurrentHashMap;
import java.util.stream.Collectors;
/**
* 广Service
@ -56,6 +50,7 @@ public class AdminAdvertRoundServiceImpl implements IAdminAdvertRoundService {
final SysFileMapper fileMapper;
final AdvertStoreFileMapper advertStoreFileMapper;
final AdvertRoundRecordMapper advertRoundRecordMapper;
final StoreProductMapper storeProdMapper;
/**
* 广
@ -69,15 +64,25 @@ public class AdminAdvertRoundServiceImpl implements IAdminAdvertRoundService {
Optional.ofNullable(pageDTO.getLaunchStatus()).orElseThrow(() -> new ServiceException("投放状态launchStatus必传", HttpStatus.ERROR));
PageHelper.startPage(pageDTO.getPageNum(), pageDTO.getPageSize());
List<AdminAdRoundPageResDTO> list = this.advertRoundMapper.selectAdminAdvertPage(pageDTO);
list.forEach(item -> item.setPlatformName(AdPlatformType.of(item.getPlatformId()).getLabel())
.setTypeName(AdType.of(item.getTypeId()).getLabel())
.setTabName(ObjectUtils.isNotEmpty(item.getTabId()) ? AdTab.of(item.getTabId()).getLabel() : "")
.setLaunchStatusName(ObjectUtils.isNotEmpty(item.getLaunchStatus()) ? AdLaunchStatus.of(item.getLaunchStatus()).getLabel() : "")
.setPicAuditStatusName(ObjectUtils.isNotEmpty(item.getPicAuditStatus()) ? AdPicAuditStatus.of(item.getPicAuditStatus()).getLabel() : "")
.setPicDesignTypeName(ObjectUtils.isNotEmpty(item.getPicDesignType()) ? AdDesignType.of(item.getPicDesignType()).getLabel() : "")
.setPicAuditStatusName(ObjectUtils.isNotEmpty(item.getPicAuditStatus()) ? AdPicAuditStatus.of(item.getPicAuditStatus()).getLabel() : "")
.setPicSetTypeName(ObjectUtils.isNotEmpty(item.getPicSetType()) ? AdPicSetType.of(item.getPicSetType()).getLabel() : "")
.setBiddingStatusName(ObjectUtils.isNotEmpty(item.getBiddingStatus()) ? AdBiddingStatus.of(item.getBiddingStatus()).getLabel() : ""));
// 所有的商品id列表
List<Long> prodIdList = list.stream().filter(x -> StringUtils.isNotEmpty(x.getProdIdStr()))
.flatMap(x -> StrUtil.split(x.getProdIdStr(), ",").stream()).map(Long::parseLong).collect(Collectors.toList());
Map<Long, String> storeProdMap = CollectionUtils.isEmpty(prodIdList) ? new ConcurrentHashMap<>()
: this.storeProdMapper.selectByIds(prodIdList).stream().collect(Collectors.toMap(StoreProduct::getId, StoreProduct::getProdArtNum));
list.forEach(item -> {
item.setPlatformName(AdPlatformType.of(item.getPlatformId()).getLabel())
.setTypeName(AdType.of(item.getTypeId()).getLabel())
.setTabName(ObjectUtils.isNotEmpty(item.getTabId()) ? AdTab.of(item.getTabId()).getLabel() : "")
.setLaunchStatusName(ObjectUtils.isNotEmpty(item.getLaunchStatus()) ? AdLaunchStatus.of(item.getLaunchStatus()).getLabel() : "")
.setPicAuditStatusName(ObjectUtils.isNotEmpty(item.getPicAuditStatus()) ? AdPicAuditStatus.of(item.getPicAuditStatus()).getLabel() : "")
.setPicDesignTypeName(ObjectUtils.isNotEmpty(item.getPicDesignType()) ? AdDesignType.of(item.getPicDesignType()).getLabel() : "")
.setPicAuditStatusName(ObjectUtils.isNotEmpty(item.getPicAuditStatus()) ? AdPicAuditStatus.of(item.getPicAuditStatus()).getLabel() : "")
.setPicSetTypeName(ObjectUtils.isNotEmpty(item.getPicSetType()) ? AdPicSetType.of(item.getPicSetType()).getLabel() : "")
.setBiddingStatusName(ObjectUtils.isNotEmpty(item.getBiddingStatus()) ? AdBiddingStatus.of(item.getBiddingStatus()).getLabel() : "");
if (StringUtils.isNotEmpty(item.getProdIdStr())) {
item.setProdArtNumList(StrUtil.split(item.getProdIdStr(), ",").stream().map(Long::parseLong).map(storeProdMap::get).collect(Collectors.toList()));
}
});
return Page.convert(new PageInfo<>(list));
}

View File

@ -93,11 +93,14 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
ar.pic_audit_status,
ar.sys_intercept,
a.pic_pixel,
a.pic_size
a.pic_size,
sf.file_url AS advertPicUrl,
ar.prod_id_str
FROM
advert_round ar
JOIN advert a ON ar.advert_id = a.id
LEFT JOIN store s ON ar.store_id = s.id
LEFT JOIN sys_file sf ON ar.pic_id = sf.id
WHERE
ar.del_flag = 0
AND ar.launch_status = #{launchStatus}