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;
|
}
|
}
|