feat(W1): 皮肤包完整管理-外部主题目录+热注册,zip上传/派生/编辑/删除,ThemePackageValidator收敛,Thymeleaf文件解析器,list增source/inUseCount/editable/usedBySiteNames,T-W1-01..20 全绿299/299
build / build-push (push) Successful in 52s
build / build-push (push) Successful in 52s
This commit is contained in:
@@ -18,16 +18,35 @@ import java.util.List;
|
||||
public class ThemeService {
|
||||
|
||||
private final ThemeRegistry themeRegistry;
|
||||
private final com.yunhai.cms.repository.CmsSiteRepository siteRepository;
|
||||
|
||||
/** 可用主题(default 优先,其余按名称排序),管理端建站向导与站点编辑共用 */
|
||||
/** 可用主题(default 优先,其余按名称排序),管理端建站向导与站点编辑共用。
|
||||
* W1(G1/T-W1-14):增 source/inUseCount/editable——来源与删除保护口径同源(findByTheme)。 */
|
||||
public List<ThemeVo> list() {
|
||||
List<ThemeVo> result = new ArrayList<>();
|
||||
for (ThemeInfo info : themeRegistry.list()) {
|
||||
result.add(ThemeVo.of(info));
|
||||
result.add(voOf(info));
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
/** 单个包 VO 装配(来源/被用数/可编辑随 Registry sourceOf 与站点仓储实时装配) */
|
||||
public ThemeVo voOf(ThemeInfo info) {
|
||||
ThemeVo vo = ThemeVo.of(info);
|
||||
String source = themeRegistry.sourceOf(info.getName()) == null
|
||||
? ThemeRegistry.SOURCE_BUILTIN : themeRegistry.sourceOf(info.getName());
|
||||
vo.setSource(source);
|
||||
java.util.List<com.yunhai.cms.entity.CmsSite> usedBy = siteRepository.findByTheme(info.getName());
|
||||
vo.setInUseCount(usedBy.size());
|
||||
java.util.List<String> usedNames = new ArrayList<>();
|
||||
for (com.yunhai.cms.entity.CmsSite s : usedBy) {
|
||||
usedNames.add(s.getName());
|
||||
}
|
||||
vo.setUsedBySiteNames(usedNames);
|
||||
vo.setEditable(ThemeRegistry.SOURCE_EXTERNAL.equals(source));
|
||||
return vo;
|
||||
}
|
||||
|
||||
/** 未注册主题返回 null(白名单判断用) */
|
||||
public ThemeInfo get(String name) {
|
||||
return themeRegistry.get(name);
|
||||
|
||||
Reference in New Issue
Block a user