package com.ruoyi.system.service.impl; import com.ruoyi.common.exception.ServiceException; import com.ruoyi.common.utils.StringUtils; import com.ruoyi.system.domain.SysProtocolConfig; import com.ruoyi.system.dto.SysProtocolConfigDetailRequest; import com.ruoyi.system.dto.SysProtocolConfigSaveRequest; import com.ruoyi.system.mapper.SysProtocolConfigMapper; import com.ruoyi.system.service.ISysProtocolConfigService; import com.ruoyi.system.utils.ProtocolHtmlSanitizer; import com.ruoyi.system.vo.SysProtocolConfigVO; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; /** * 协议配置服务实现 * * @author ruoyi */ @Service public class SysProtocolConfigServiceImpl implements ISysProtocolConfigService { public static final String DEFAULT_PROTOCOL_TYPE = "ENTRY_COMMITMENT"; @Autowired private SysProtocolConfigMapper protocolConfigMapper; @Override public SysProtocolConfigVO selectConfig(SysProtocolConfigDetailRequest request) { String protocolType = resolveProtocolType(request == null ? null : request.getProtocolType()); SysProtocolConfig config = protocolConfigMapper.selectByProtocolType(protocolType); return toVO(config == null ? buildDefaultConfig(protocolType) : config); } @Override public SysProtocolConfigVO saveConfig(SysProtocolConfigSaveRequest request, String username) { if (request == null) { throw new ServiceException("协议配置不能为空"); } String protocolType = resolveProtocolType(request.getProtocolType()); String protocolName = StringUtils.trim(request.getProtocolName()); if (StringUtils.isEmpty(protocolName)) { throw new ServiceException("协议名称不能为空"); } String protocolContent = StringUtils.trim(ProtocolHtmlSanitizer.clean(request.getProtocolContent())); if (StringUtils.isEmpty(protocolContent)) { throw new ServiceException("协议内容不能为空"); } SysProtocolConfig config = protocolConfigMapper.selectByProtocolType(protocolType); boolean insert = config == null; if (insert) { config = new SysProtocolConfig(); config.setProtocolType(protocolType); config.setCreateBy(username); } else { config.setUpdateBy(username); } config.setProtocolName(protocolName); config.setProtocolContent(protocolContent); config.setEnabled(request.getEnabled() == null ? Boolean.TRUE : request.getEnabled()); if (insert) { protocolConfigMapper.insertConfig(config); } else { protocolConfigMapper.updateConfig(config); } return toVO(config); } private String resolveProtocolType(String protocolType) { String value = StringUtils.trim(protocolType); return StringUtils.isEmpty(value) ? DEFAULT_PROTOCOL_TYPE : value; } private SysProtocolConfig buildDefaultConfig(String protocolType) { SysProtocolConfig config = new SysProtocolConfig(); config.setProtocolType(protocolType); config.setProtocolName("入园承诺"); config.setProtocolContent(""); config.setEnabled(true); return config; } private SysProtocolConfigVO toVO(SysProtocolConfig config) { SysProtocolConfigVO vo = new SysProtocolConfigVO(); vo.setProtocolId(config.getProtocolId()); vo.setProtocolType(config.getProtocolType()); vo.setProtocolName(config.getProtocolName()); vo.setProtocolContent(config.getProtocolContent()); vo.setEnabled(config.getEnabled()); return vo; } }