package com.tcm.training.admin.app.system.service; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.tcm.training.admin.app.system.vo.AppPlatformQualificationDetailVO; import com.tcm.training.admin.app.system.vo.AppPlatformQualificationListItemVO; import com.tcm.training.admin.system.entity.PlatformQualification; import com.tcm.training.admin.system.mapper.PlatformQualificationMapper; import org.springframework.stereotype.Service; import java.util.ArrayList; import java.util.List; /** * APP 平台资质服务。 */ @Service public class AppPlatformQualificationService { private static final int PUBLISH_ENABLED = 1; private final PlatformQualificationMapper platformQualificationMapper; /** * 注入平台资质数据访问依赖。 */ public AppPlatformQualificationService(PlatformQualificationMapper platformQualificationMapper) { this.platformQualificationMapper = platformQualificationMapper; } /** * 获取 APP 端可展示的平台资质列表。 */ public List listPublishedQualifications() { List qualifications = platformQualificationMapper.selectList(new LambdaQueryWrapper() // APP 端只允许查看后台已上架的数据,避免草稿内容提前暴露。 .eq(PlatformQualification::getPublishEnabled, PUBLISH_ENABLED) .orderByAsc(PlatformQualification::getSort) .orderByDesc(PlatformQualification::getId)); List result = new ArrayList(); for (PlatformQualification qualification : qualifications) { result.add(toListItem(qualification)); } return result; } /** * 获取 APP 端可查看的平台资质详情。 */ public AppPlatformQualificationDetailVO getPublishedQualificationDetail(Long id) { PlatformQualification qualification = requirePublishedQualification(id); return toDetail(qualification); } /** * 仅读取已上架的平台资质,未上架和已删除数据对 APP 统一视为不存在。 */ private PlatformQualification requirePublishedQualification(Long id) { PlatformQualification qualification = platformQualificationMapper.selectOne(new LambdaQueryWrapper() .eq(PlatformQualification::getId, id) .eq(PlatformQualification::getPublishEnabled, PUBLISH_ENABLED) .last("limit 1")); if (qualification == null) { throw new IllegalArgumentException("平台资质不存在"); } return qualification; } /** * 构建 APP 平台资质列表项。 */ private AppPlatformQualificationListItemVO toListItem(PlatformQualification qualification) { AppPlatformQualificationListItemVO item = new AppPlatformQualificationListItemVO(); item.setId(qualification.getId()); item.setQualificationName(trimToEmpty(qualification.getQualificationName())); item.setQualificationType(trimToEmpty(qualification.getQualificationType())); item.setRecordNumber(trimToEmpty(qualification.getRecordNumber())); item.setLinkUrl(trimToEmpty(qualification.getLinkUrl())); item.setSort(qualification.getSort()); return item; } /** * 构建 APP 平台资质详情。 */ private AppPlatformQualificationDetailVO toDetail(PlatformQualification qualification) { AppPlatformQualificationDetailVO detail = new AppPlatformQualificationDetailVO(); detail.setId(qualification.getId()); detail.setQualificationName(trimToEmpty(qualification.getQualificationName())); detail.setQualificationType(trimToEmpty(qualification.getQualificationType())); detail.setRecordNumber(trimToEmpty(qualification.getRecordNumber())); detail.setContentHtml(trimToEmpty(qualification.getContentHtml())); detail.setLinkUrl(trimToEmpty(qualification.getLinkUrl())); return detail; } /** * 将可空文本归一化为空字符串。 */ private String trimToEmpty(String value) { if (value == null) { return ""; } return value.trim(); } }