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<AppHomeBannerVO> listEnabledBanners() {
|
LocalDateTime now = LocalDateTime.now();
|
List<SystemBannerConfig> records = systemBannerConfigMapper.selectList(new LambdaQueryWrapper<SystemBannerConfig>()
|
.eq(SystemBannerConfig::getDeleted, 0)
|
.eq(SystemBannerConfig::getPublishEnabled, 1)
|
.le(SystemBannerConfig::getStartAt, now)
|
.ge(SystemBannerConfig::getEndAt, now)
|
.orderByDesc(SystemBannerConfig::getId));
|
List<AppHomeBannerVO> result = new ArrayList<AppHomeBannerVO>(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;
|
}
|
}
|