“mitao”
2026-04-17 d699da385dda6257677ee93bef47388c0635f64e
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
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<AppPlatformQualificationListItemVO> listPublishedQualifications() {
        List<PlatformQualification> qualifications = platformQualificationMapper.selectList(new LambdaQueryWrapper<PlatformQualification>()
                // APP 端只允许查看后台已上架的数据,避免草稿内容提前暴露。
                .eq(PlatformQualification::getPublishEnabled, PUBLISH_ENABLED)
                .orderByAsc(PlatformQualification::getSort)
                .orderByDesc(PlatformQualification::getId));
        List<AppPlatformQualificationListItemVO> result = new ArrayList<AppPlatformQualificationListItemVO>();
        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<PlatformQualification>()
                .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();
    }
}