From 1cc6324f557198ad2ca0d22e2efd25a7b6e85faf Mon Sep 17 00:00:00 2001 From: liujiang <569804566@qq.com> Date: Wed, 14 May 2025 15:46:57 +0800 Subject: [PATCH] =?UTF-8?q?master=EF=BC=9A=E7=AB=9E=E4=BB=B7=E5=A4=B1?= =?UTF-8?q?=E8=B4=A5=E5=88=97=E8=A1=A8=E5=8A=9F=E8=83=BD=E5=AE=8C=E5=96=84?= =?UTF-8?q?=EF=BC=9B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../xkt/AdvertRoundRecordController.java | 43 ++++++++++++ .../AdvertRoundRecordPageVO.java | 34 ++++++++++ .../AdvertRoundRecordPageDTO.java | 32 +++++++++ .../AdvertRoundRecordPageResDTO.java | 55 +++++++++++++++ .../xkt/mapper/AdvertRoundRecordMapper.java | 29 ++------ .../service/IAdvertRoundRecordService.java | 23 +++++++ .../impl/AdvertRoundRecordServiceImpl.java | 54 +++++++++++++++ .../mapper/AdvertRoundRecordMapper.xml | 67 ++++++------------- 8 files changed, 268 insertions(+), 69 deletions(-) create mode 100644 ruoyi-admin/src/main/java/com/ruoyi/web/controller/xkt/AdvertRoundRecordController.java create mode 100644 ruoyi-admin/src/main/java/com/ruoyi/web/controller/xkt/vo/advertRoundRecord/AdvertRoundRecordPageVO.java create mode 100644 xkt/src/main/java/com/ruoyi/xkt/dto/advertRoundRecord/AdvertRoundRecordPageDTO.java create mode 100644 xkt/src/main/java/com/ruoyi/xkt/dto/advertRoundRecord/AdvertRoundRecordPageResDTO.java create mode 100644 xkt/src/main/java/com/ruoyi/xkt/service/IAdvertRoundRecordService.java create mode 100644 xkt/src/main/java/com/ruoyi/xkt/service/impl/AdvertRoundRecordServiceImpl.java diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/xkt/AdvertRoundRecordController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/xkt/AdvertRoundRecordController.java new file mode 100644 index 000000000..b26fdd95e --- /dev/null +++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/xkt/AdvertRoundRecordController.java @@ -0,0 +1,43 @@ +package com.ruoyi.web.controller.xkt; + +import cn.hutool.core.bean.BeanUtil; +import com.ruoyi.common.core.controller.XktBaseController; +import com.ruoyi.common.core.domain.R; +import com.ruoyi.common.core.page.Page; +import com.ruoyi.web.controller.xkt.vo.advertRoundRecord.AdvertRoundRecordPageVO; +import com.ruoyi.xkt.dto.advertRoundRecord.AdvertRoundRecordPageDTO; +import com.ruoyi.xkt.dto.advertRoundRecord.AdvertRoundRecordPageResDTO; +import com.ruoyi.xkt.service.IAdvertRoundRecordService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.RequiredArgsConstructor; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +/** + * 推广轮次竞价失败Controller + * + * @author ruoyi + * @date 2025-03-26 + */ +@Api(tags = "推广轮次竞价失败") +@RestController +@RequiredArgsConstructor +@RequestMapping("/rest/v1/ad-round-records") +public class AdvertRoundRecordController extends XktBaseController { + + final IAdvertRoundRecordService advertRoundRecordService; + + /** + * 获取档口竞价失败列表 + */ + @ApiOperation(value = "获取档口竞价失败列表", httpMethod = "POST", response = R.class) + @PostMapping("/page") + public R> page(@Validated @RequestBody AdvertRoundRecordPageVO pageVO) { + return R.ok(advertRoundRecordService.page(BeanUtil.toBean(pageVO, AdvertRoundRecordPageDTO.class))); + } + +} diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/xkt/vo/advertRoundRecord/AdvertRoundRecordPageVO.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/xkt/vo/advertRoundRecord/AdvertRoundRecordPageVO.java new file mode 100644 index 000000000..422ab83f2 --- /dev/null +++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/xkt/vo/advertRoundRecord/AdvertRoundRecordPageVO.java @@ -0,0 +1,34 @@ +package com.ruoyi.web.controller.xkt.vo.advertRoundRecord; + +import com.ruoyi.web.controller.xkt.vo.BasePageVO; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import javax.validation.constraints.NotNull; +import java.util.Date; + +/** + * @author liujiang + * @version v1.0 + * @date 2025/3/27 15:12 + */ +@EqualsAndHashCode(callSuper = true) +@ApiModel("档口竞价失败列表入参") +@Data +public class AdvertRoundRecordPageVO extends BasePageVO { + + @NotNull(message = "档口ID不能为空!") + @ApiModelProperty(value = "档口ID") + private Long storeId; + @ApiModelProperty(value = "平台ID") + private Long platformId; + @ApiModelProperty(value = "推广类型") + private Integer typeId; + @ApiModelProperty(value = "投放开始时间") + private Date startTime; + @ApiModelProperty(value = "投放结束时间") + private Date endTime; + +} diff --git a/xkt/src/main/java/com/ruoyi/xkt/dto/advertRoundRecord/AdvertRoundRecordPageDTO.java b/xkt/src/main/java/com/ruoyi/xkt/dto/advertRoundRecord/AdvertRoundRecordPageDTO.java new file mode 100644 index 000000000..87ec2567a --- /dev/null +++ b/xkt/src/main/java/com/ruoyi/xkt/dto/advertRoundRecord/AdvertRoundRecordPageDTO.java @@ -0,0 +1,32 @@ +package com.ruoyi.xkt.dto.advertRoundRecord; + +import com.ruoyi.xkt.dto.BasePageDTO; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.util.Date; + +/** + * @author liujiang + * @version v1.0 + * @date 2025/3/27 15:12 + */ +@EqualsAndHashCode(callSuper = true) +@ApiModel("档口竞价失败列表入参") +@Data +public class AdvertRoundRecordPageDTO extends BasePageDTO { + + @ApiModelProperty(value = "档口ID") + private Long storeId; + @ApiModelProperty(value = "平台ID") + private Long platformId; + @ApiModelProperty(value = "推广类型") + private Integer typeId; + @ApiModelProperty(value = "投放开始时间") + private Date startTime; + @ApiModelProperty(value = "投放结束时间") + private Date endTime; + +} diff --git a/xkt/src/main/java/com/ruoyi/xkt/dto/advertRoundRecord/AdvertRoundRecordPageResDTO.java b/xkt/src/main/java/com/ruoyi/xkt/dto/advertRoundRecord/AdvertRoundRecordPageResDTO.java new file mode 100644 index 000000000..6acedfe86 --- /dev/null +++ b/xkt/src/main/java/com/ruoyi/xkt/dto/advertRoundRecord/AdvertRoundRecordPageResDTO.java @@ -0,0 +1,55 @@ +package com.ruoyi.xkt.dto.advertRoundRecord; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.experimental.Accessors; + +/** + * @author liujiang + * @version v1.0 + * @date 2025/3/27 15:12 + */ +@ApiModel("档口已订购推广返回列表") +@Data +@Accessors(chain = true) +public class AdvertRoundRecordPageResDTO { + + @ApiModelProperty(value = "投放平台") + private Integer platformId; + @ApiModelProperty(value = "投放平台") + private String platformName; + @ApiModelProperty(value = "投放类型") + private Integer typeId; + @ApiModelProperty(value = "投放类型") + private String typeName; + @ApiModelProperty(value = "投放位置") + private String position; + @ApiModelProperty(value = "投放开始时间") + private String startTime; + @ApiModelProperty(value = "投放结束时间") + private String endTime; + @ApiModelProperty(value = "出价") + private String payPrice; + @ApiModelProperty(value = "投放状态") + private Integer launchStatus; + @ApiModelProperty(value = "投放状态") + private String launchStatusName; + @ApiModelProperty(value = "竞价状态") + private Integer biddingStatus; + @ApiModelProperty(value = "竞价状态") + private String biddingStatusName; + @ApiModelProperty(value = "图片设计类型") + private Integer picDesignType; + @ApiModelProperty(value = "竞价状态") + private String picDesignTypeName; + @ApiModelProperty(value = "图片是否设置") + private Integer picSetType; + @ApiModelProperty(value = "图片是否设置") + private String picSetTypeName; + @ApiModelProperty(value = "图片审核状态") + private Integer picAuditStatus; + @ApiModelProperty(value = "图片审核状态") + private String picAuditStatusName; + +} diff --git a/xkt/src/main/java/com/ruoyi/xkt/mapper/AdvertRoundRecordMapper.java b/xkt/src/main/java/com/ruoyi/xkt/mapper/AdvertRoundRecordMapper.java index 5b1a6c399..5bc4c744b 100644 --- a/xkt/src/main/java/com/ruoyi/xkt/mapper/AdvertRoundRecordMapper.java +++ b/xkt/src/main/java/com/ruoyi/xkt/mapper/AdvertRoundRecordMapper.java @@ -2,12 +2,11 @@ package com.ruoyi.xkt.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.ruoyi.xkt.domain.AdvertRoundRecord; -import org.apache.ibatis.annotations.Param; +import com.ruoyi.xkt.dto.advertRoundRecord.AdvertRoundRecordPageDTO; +import com.ruoyi.xkt.dto.advertRoundRecord.AdvertRoundRecordPageResDTO; import org.springframework.stereotype.Repository; -import java.util.Date; import java.util.List; -import java.util.Set; /** * 推广营销轮次历史记录Mapper接口 @@ -15,32 +14,14 @@ import java.util.Set; * @author ruoyi * @date 2025-03-26 */ -@Repository public interface AdvertRoundRecordMapper extends BaseMapper { /** - * 获取档口在某个广告位的推广记录 + * 获取竞价失败记录列表 * - * @param advertId 广告ID - * @param storeId 档口ID - * @param voucherDate 单据日期 - * @param roundIdSet 未购买的轮次ID + * @param pageDTO 查询入参 * @return */ - List selectListByRoundId(@Param("advertId") Long advertId, @Param("storeId") Long storeId, - @Param("voucherDate") Date voucherDate, @Param("roundIdSet") Set roundIdSet); - - /** - * 获取档口在某个广告位具体位置的推广记录 - * - * @param advertId 广告ID - * @param storeId 档口ID - * @param voucherDate 单据日期 - * @param positionList 位置列表 - * @return - */ - List selectListByPosition(@Param("advertId") Long advertId, @Param("storeId") Long storeId, - @Param("voucherDate") Date voucherDate, @Param("positionList") List positionList); - + List selectRecordPage(AdvertRoundRecordPageDTO pageDTO); } diff --git a/xkt/src/main/java/com/ruoyi/xkt/service/IAdvertRoundRecordService.java b/xkt/src/main/java/com/ruoyi/xkt/service/IAdvertRoundRecordService.java new file mode 100644 index 000000000..60587f811 --- /dev/null +++ b/xkt/src/main/java/com/ruoyi/xkt/service/IAdvertRoundRecordService.java @@ -0,0 +1,23 @@ +package com.ruoyi.xkt.service; + +import com.ruoyi.common.core.page.Page; +import com.ruoyi.xkt.dto.advertRoundRecord.AdvertRoundRecordPageDTO; +import com.ruoyi.xkt.dto.advertRoundRecord.AdvertRoundRecordPageResDTO; + +/** + * 推广营销竞价失败Service接口 + * + * @author ruoyi + * @date 2025-03-26 + */ +public interface IAdvertRoundRecordService { + + /** + * 获取竞价失败列表 + * + * @param pageDTO 竞价失败查询列表 + * @return Page + */ + Page page(AdvertRoundRecordPageDTO pageDTO); + +} diff --git a/xkt/src/main/java/com/ruoyi/xkt/service/impl/AdvertRoundRecordServiceImpl.java b/xkt/src/main/java/com/ruoyi/xkt/service/impl/AdvertRoundRecordServiceImpl.java new file mode 100644 index 000000000..a55941e3b --- /dev/null +++ b/xkt/src/main/java/com/ruoyi/xkt/service/impl/AdvertRoundRecordServiceImpl.java @@ -0,0 +1,54 @@ +package com.ruoyi.xkt.service.impl; + +import com.github.pagehelper.PageHelper; +import com.github.pagehelper.PageInfo; +import com.ruoyi.common.core.page.Page; +import com.ruoyi.common.enums.AdType; +import com.ruoyi.xkt.dto.advertRoundRecord.AdvertRoundRecordPageDTO; +import com.ruoyi.xkt.dto.advertRoundRecord.AdvertRoundRecordPageResDTO; +import com.ruoyi.xkt.enums.*; +import com.ruoyi.xkt.mapper.AdvertRoundRecordMapper; +import com.ruoyi.xkt.service.IAdvertRoundRecordService; +import lombok.RequiredArgsConstructor; +import org.apache.commons.lang3.ObjectUtils; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.List; + +/** + * 推广营销轮次播放Service业务层处理 + * + * @author ruoyi + * @date 2025-03-26 + */ +@Service +@RequiredArgsConstructor +public class AdvertRoundRecordServiceImpl implements IAdvertRoundRecordService { + + final AdvertRoundRecordMapper advertRoundRecordMapper; + + /** + * 获取竞价失败列表 + * + * @param pageDTO 竞价失败查询列表 + * @return Page + */ + @Override + @Transactional(readOnly = true) + public Page page(AdvertRoundRecordPageDTO pageDTO) { + PageHelper.startPage(pageDTO.getPageNum(), pageDTO.getPageSize()); + List list = this.advertRoundRecordMapper.selectRecordPage(pageDTO); + list.forEach(item -> item.setPlatformName(AdPlatformType.of(item.getPlatformId()).getLabel()) + .setLaunchStatusName(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() : "") + .setTypeName(AdType.of(item.getTypeId()).getLabel()) + .setBiddingStatusName(AdBiddingStatus.of(item.getBiddingStatus()).getLabel())); + return Page.convert(new PageInfo<>(list)); + } + + +} diff --git a/xkt/src/main/resources/mapper/AdvertRoundRecordMapper.xml b/xkt/src/main/resources/mapper/AdvertRoundRecordMapper.xml index 7345da6fc..5fdf9867b 100644 --- a/xkt/src/main/resources/mapper/AdvertRoundRecordMapper.xml +++ b/xkt/src/main/resources/mapper/AdvertRoundRecordMapper.xml @@ -4,55 +4,32 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> - SELECT - * + a.platform_id, + arr.type_id, + CONCAT('位置', arr.position) AS position, + arr.start_time, + arr.end_time, + arr.pay_price, + arr.launch_status, + arr.bidding_status, + arr.pic_design_type, + arr.pic_set_type, + arr.pic_audit_status FROM - advert_round_record + advert_round_record arr + JOIN advert a ON arr.advert_id = a.id WHERE - id IN ( - SELECT - MAX( id ) - FROM - advert_round_record - WHERE - advert_id = #{advertId} - AND store_id = #{storeId} - AND voucher_date = #{voucherDate} - AND del_flag = 0 - AND round_id IN - - #{roundId} - - GROUP BY - round_id - ) + arr.del_flag = 0 + AND arr.store_id = #{storeId} + and a.platform_id = #{platformId} + and arr.type_id = #{typeId} + and arr.start_time >= #{startTime} + and arr.end_time <= #{endTime} + ORDER BY + arr.start_time - - \ No newline at end of file