package com.zt.modules.sys.service; 
 | 
  
 | 
import com.alibaba.fastjson.JSON; 
 | 
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; 
 | 
import com.zt.common.constant.CacheKey; 
 | 
import com.zt.common.constant.Constant; 
 | 
import com.zt.common.db.query.QueryFilter; 
 | 
import com.zt.common.exception.ErrorCode; 
 | 
import com.zt.common.exception.RenException; 
 | 
import com.zt.common.service.BaseService; 
 | 
import com.zt.common.utils.CacheUtils; 
 | 
import com.zt.core.sys.service.ISysParamsService; 
 | 
import com.zt.modules.sys.dao.SysParamsDao; 
 | 
import com.zt.modules.sys.dto.ConfigDto; 
 | 
import com.zt.modules.sys.enums.ParamValueType; 
 | 
import com.zt.modules.sys.model.SysParams; 
 | 
import org.apache.commons.lang3.StringUtils; 
 | 
import org.springframework.stereotype.Service; 
 | 
import org.springframework.transaction.annotation.Transactional; 
 | 
  
 | 
import java.util.List; 
 | 
import java.util.stream.Collectors; 
 | 
  
 | 
/** 
 | 
 * 参数管理 
 | 
 * 
 | 
 * @author hehz 
 | 
 * @since 1.0.0 
 | 
 */ 
 | 
@Service 
 | 
public class SysParamsService extends BaseService<SysParamsDao, SysParams> implements ISysParamsService { 
 | 
  
 | 
    public List<SysParams> page(QueryFilter queryFilter) { 
 | 
        return super.query(queryFilter); 
 | 
    } 
 | 
  
 | 
    public List<ConfigDto> getConfigs() { 
 | 
        List<ConfigDto> configs = (List<ConfigDto>) CacheUtils.get(Constant.Cache.SYS, CacheKey.SYS_CONFIG.getKey()); 
 | 
        if (configs == null) { 
 | 
            List<SysParams> params = baseDao.selectList(new QueryWrapper<SysParams>() 
 | 
                    .eq("is_to_web", Constant.Bool.YES).eq(Constant.TableColumn.IS_DELETE, Constant.Bool.NO) 
 | 
                    .eq(Constant.TableColumn.TENANT_ID, Constant.Sys.PLATFORM_TENANT_ID)); 
 | 
            configs = params.stream().map(p -> { 
 | 
                ConfigDto dto = new ConfigDto(); 
 | 
                dto.setKey(p.getParamCode()); 
 | 
                String value = p.getParamValue(); 
 | 
                if (ParamValueType.STRING.getValue().equals(p.getParamValueType())) { 
 | 
                    dto.setValue(value); 
 | 
                } else if (ParamValueType.INT.getValue().equals(p.getParamValueType())) { 
 | 
                    dto.setValue(Integer.parseInt(value)); 
 | 
                } else if (ParamValueType.LONG.getValue().equals(p.getParamValueType())) { 
 | 
                    dto.setValue(Long.parseLong(value)); 
 | 
                } else if (ParamValueType.NUMBER.getValue().equals(p.getParamValueType())) { 
 | 
                    dto.setValue(Double.parseDouble(value)); 
 | 
                } else if (ParamValueType.BOOLEAN.getValue().equals(p.getParamValueType())) { 
 | 
                    dto.setValue(Boolean.parseBoolean(value)); 
 | 
                } 
 | 
                return dto; 
 | 
            }).collect(Collectors.toList()); 
 | 
  
 | 
            CacheUtils.put(Constant.Cache.SYS, CacheKey.SYS_CONFIG.getKey(), configs); 
 | 
        } 
 | 
        return configs; 
 | 
    } 
 | 
  
 | 
    public SysParams get(Long id) { 
 | 
        return baseDao.selectById(id); 
 | 
    } 
 | 
  
 | 
    @Transactional(rollbackFor = Exception.class) 
 | 
    public void insert(SysParams entity) { 
 | 
        super.insert(entity); 
 | 
        CacheUtils.remove(Constant.Cache.SYS, CacheKey.SYS_CONFIG.getKey());// 清楚config缓存 
 | 
    } 
 | 
  
 | 
    @Transactional(rollbackFor = Exception.class) 
 | 
    public void update(SysParams entity) { 
 | 
        super.update(entity); 
 | 
        CacheUtils.put(Constant.Cache.SYS, entity.getParamCode(), entity.getParamValue()); 
 | 
        CacheUtils.remove(Constant.Cache.SYS, CacheKey.SYS_CONFIG.getKey());// 清楚config缓存 
 | 
    } 
 | 
  
 | 
    @Transactional(rollbackFor = Exception.class) 
 | 
    public void delete(Long[] ids) { 
 | 
        super.deleteLogic(ids); 
 | 
        CacheUtils.remove(Constant.Cache.SYS, CacheKey.SYS_CONFIG.getKey());// 清楚config缓存 
 | 
    } 
 | 
  
 | 
    @Override 
 | 
    public String getValue(String paramCode) { 
 | 
        String paramValue = (String) CacheUtils.get(Constant.Cache.SYS, paramCode); 
 | 
        if (paramValue == null) { 
 | 
            paramValue = baseDao.getValueByCode(paramCode); 
 | 
  
 | 
            CacheUtils.put(Constant.Cache.SYS, paramCode, paramValue); 
 | 
        } 
 | 
        return paramValue; 
 | 
    } 
 | 
  
 | 
    @Override 
 | 
    public boolean getBooleanValue(String paramCode, boolean defaultValue) { 
 | 
        String value = getValue(paramCode); 
 | 
        return StringUtils.isEmpty(value) ? defaultValue : String.valueOf(Constant.Bool.YES).equals(value); 
 | 
    } 
 | 
  
 | 
    @Override 
 | 
    public <T> T getValueObject(String paramCode, Class<T> clazz) { 
 | 
        String paramValue = getValue(paramCode); 
 | 
        if (StringUtils.isNotBlank(paramValue)) { 
 | 
            return JSON.parseObject(paramValue, clazz); 
 | 
        } 
 | 
  
 | 
        try { 
 | 
            return clazz.newInstance(); 
 | 
        } catch (Exception e) { 
 | 
            throw new RenException(ErrorCode.PARAMS_GET_ERROR); 
 | 
        } 
 | 
    } 
 | 
  
 | 
    @Override 
 | 
    @Transactional(rollbackFor = Exception.class) 
 | 
    public int updateValueByCode(String paramCode, String paramValue) { 
 | 
        int count = baseDao.updateValueByCode(paramCode, paramValue); 
 | 
        CacheUtils.remove(Constant.Cache.SYS, CacheKey.SYS_CONFIG.getKey());// 清楚config缓存 
 | 
        return count; 
 | 
    } 
 | 
} 
 |