package com.tcm.training.admin.system.service;
|
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
import com.tcm.training.admin.system.dto.SystemSettingsSaveRequest;
|
import com.tcm.training.admin.system.entity.SystemSettings;
|
import com.tcm.training.admin.system.mapper.SystemSettingsMapper;
|
import com.tcm.training.admin.system.vo.SystemSettingsVO;
|
import org.springframework.stereotype.Service;
|
import org.springframework.transaction.annotation.Transactional;
|
|
@Service
|
public class SystemSettingsAppService {
|
|
private final SystemSettingsMapper systemSettingsMapper;
|
|
public SystemSettingsAppService(SystemSettingsMapper systemSettingsMapper) {
|
this.systemSettingsMapper = systemSettingsMapper;
|
}
|
|
public SystemSettingsVO current() {
|
SystemSettings config = systemSettingsMapper.selectOne(new LambdaQueryWrapper<SystemSettings>()
|
.eq(SystemSettings::getDeleted, 0)
|
.orderByDesc(SystemSettings::getId)
|
.last("limit 1"));
|
return toVO(config);
|
}
|
|
@Transactional
|
public SystemSettingsVO saveCurrent(SystemSettingsSaveRequest request) {
|
// 开启时必须提供图片;服务层校验同时覆盖非 HTTP 调用。
|
if (Boolean.TRUE.equals(request.getStartupPageEnabled())
|
&& (request.getStartupPageImageUrl() == null || request.getStartupPageImageUrl().trim().isEmpty())) {
|
throw new IllegalArgumentException("开启启动页后,请上传启动页图片");
|
}
|
SystemSettings config = systemSettingsMapper.selectOne(new LambdaQueryWrapper<SystemSettings>()
|
.eq(SystemSettings::getDeleted, 0)
|
.orderByDesc(SystemSettings::getId)
|
.last("limit 1"));
|
if (config == null) {
|
config = new SystemSettings();
|
fillConfig(config, request);
|
systemSettingsMapper.insert(config);
|
} else {
|
fillConfig(config, request);
|
systemSettingsMapper.updateById(config);
|
}
|
return toVO(config);
|
}
|
|
private void fillConfig(SystemSettings config, SystemSettingsSaveRequest request) {
|
config.setServicePhone(request.getServicePhone().trim());
|
config.setServiceOnlineTime(request.getServiceOnlineTime().trim());
|
config.setBackupCycleDays(request.getBackupCycleDays());
|
config.setMemberExpireRemindDays(request.getMemberExpireRemindDays());
|
config.setStartupPageEnabled(Boolean.TRUE.equals(request.getStartupPageEnabled()));
|
// 空串也会写入,避免 updateById 忽略 null 导致删除图片后仍保留旧值。
|
config.setStartupPageImageUrl(request.getStartupPageImageUrl() == null
|
? "" : request.getStartupPageImageUrl().trim());
|
}
|
|
private SystemSettingsVO toVO(SystemSettings config) {
|
if (config == null) {
|
return null;
|
}
|
SystemSettingsVO vo = new SystemSettingsVO();
|
vo.setId(config.getId());
|
vo.setServicePhone(config.getServicePhone());
|
vo.setServiceOnlineTime(config.getServiceOnlineTime());
|
vo.setBackupCycleDays(config.getBackupCycleDays());
|
vo.setMemberExpireRemindDays(config.getMemberExpireRemindDays());
|
vo.setStartupPageEnabled(Boolean.TRUE.equals(config.getStartupPageEnabled()));
|
vo.setStartupPageImageUrl(config.getStartupPageImageUrl());
|
return vo;
|
}
|
}
|