package com.gkhy.system.service.impl; import cn.hutool.core.date.DateUtil; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.gkhy.common.core.redis.RedisCache; import com.gkhy.common.core.text.Convert; import com.gkhy.common.enums.OpenFlagEnum; import com.gkhy.common.exception.ServiceException; import com.gkhy.common.utils.SecurityUtils; import com.gkhy.common.utils.StringUtils; import com.gkhy.system.domain.ApplyRecord; import com.gkhy.system.domain.SysSettings; import com.gkhy.system.mapper.ApplyRecordMapper; import com.gkhy.system.mapper.SysSettingsMapper; import com.gkhy.system.service.ISysSettingsService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import javax.annotation.PostConstruct; import java.util.List; /** * 系统配置Service业务层处理 * * @author expert * @date 2024-11-13 */ @Service public class SysSettingsServiceImpl extends ServiceImpl implements ISysSettingsService { @Autowired private SysSettingsMapper sysSettingsMapper; @Autowired private RedisCache redisCache; @Autowired private ApplyRecordMapper applyRecordMapper; public static final String APPLY_SETTINGS = "APPLY_SETTINGS_KEY"; @PostConstruct public void init() { loadingSettingsCache(); } /** * 查询系统配置 * * @return 系统配置 */ @Override public String selectSysSettings() { String state = Convert.toStr(redisCache.getCacheObject(APPLY_SETTINGS)); if (StringUtils.isNotEmpty(state)) { return state; } SysSettings sysSettings = sysSettingsMapper.selectSysSettingsByState(); if (StringUtils.isNotNull(sysSettings)) { redisCache.setCacheObject(APPLY_SETTINGS, sysSettings.getState()); return sysSettings.getState(); } return OpenFlagEnum.CLOSE.getCode(); } public void loadingSettingsCache(){ SysSettings sysSettings = sysSettingsMapper.selectSysSettingsByState(); if (sysSettings != null) { redisCache.setCacheObject(APPLY_SETTINGS, sysSettings.getState()); }else { redisCache.setCacheObject(APPLY_SETTINGS, OpenFlagEnum.CLOSE.getCode()); } } /** * 修改系统配置 * * @param sysSettings 系统配置 * @return 结果 */ @Override @Transactional public int updateSysSettings(String sysSettings) { int i = sysSettingsMapper.updateSysSettingsState(sysSettings); if (i > 0){ String state = Convert.toStr(redisCache.getCacheObject(APPLY_SETTINGS)); if (OpenFlagEnum.OPEN.getCode().equals(sysSettings)){ if (StringUtils.isNotEmpty(state) && OpenFlagEnum.OPEN.getCode().equals(state)){ throw new ServiceException("当前状态已开启!"); } ApplyRecord applyRecord = new ApplyRecord(); applyRecord.setStartTime(DateUtil.date()); applyRecord.setCreateBy(SecurityUtils.getUsername()); int i1 = applyRecordMapper.insertApplyRecord(applyRecord); if (i1 < 1){ throw new ServiceException("开启失败,稍后再试!"); } }else { if (StringUtils.isNotEmpty(state) && OpenFlagEnum.CLOSE.getCode().equals(state)){ throw new ServiceException("当前状态已关闭!"); } List list = applyRecordMapper.selectApplyRecordList(); if (StringUtils.isNotEmpty(list)){ ApplyRecord applyRecord = list.get(0); applyRecord.setEndTime(DateUtil.date()); applyRecord.setUpdateBy(SecurityUtils.getUsername()); int i1 = applyRecordMapper.updateApplyRecord(applyRecord); if (i1 < 1){ throw new ServiceException("关闭失败,稍后再试!"); } } } redisCache.setCacheObject(APPLY_SETTINGS, sysSettings); } return i; } /** * 查询开启申请记录列表 * * @return 开启申请记录 */ @Override public List selectApplyRecordList() { return applyRecordMapper.selectApplyRecordList(); } }