package com.tcm.training.admin.app.home.service; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.tcm.training.admin.app.home.vo.AppHomeBannerVO; import com.tcm.training.admin.system.entity.SystemBannerConfig; import com.tcm.training.admin.system.mapper.SystemBannerConfigMapper; import org.springframework.stereotype.Service; import java.time.LocalDateTime; import java.util.ArrayList; import java.util.List; /** * APP 首页 banner 服务。 */ @Service public class AppHomeBannerService { private final SystemBannerConfigMapper systemBannerConfigMapper; /** * 注入 banner 配置查询能力。 */ public AppHomeBannerService(SystemBannerConfigMapper systemBannerConfigMapper) { this.systemBannerConfigMapper = systemBannerConfigMapper; } /** * 查询 APP 首页可展示的 banner 列表。 */ public List listEnabledBanners() { LocalDateTime now = LocalDateTime.now(); List records = systemBannerConfigMapper.selectList(new LambdaQueryWrapper() .eq(SystemBannerConfig::getDeleted, 0) .eq(SystemBannerConfig::getPublishEnabled, 1) .le(SystemBannerConfig::getStartAt, now) .ge(SystemBannerConfig::getEndAt, now) .orderByDesc(SystemBannerConfig::getId)); List result = new ArrayList(records.size()); for (SystemBannerConfig record : records) { result.add(toBannerVO(record)); } return result; } /** * 将后台 banner 配置转换为 APP 首页展示对象。 */ private AppHomeBannerVO toBannerVO(SystemBannerConfig record) { AppHomeBannerVO vo = new AppHomeBannerVO(); vo.setId(record.getId()); vo.setImageUrl(record.getBannerImg()); vo.setTitle(record.getTitle()); vo.setJumpType(record.getJumpType()); vo.setTargetId(record.getTargetId()); vo.setTargetUrl(record.getTargetUrl()); return vo; } }