This commit is contained in:
2023-05-25 15:10:08 +08:00
parent 5ee9d8c051
commit b61183b0a9
9 changed files with 155 additions and 16 deletions

View File

@ -3,6 +3,8 @@ package com.qiaoba.module.system.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.qiaoba.api.system.entity.SysConfig;
import java.util.List;
/**
* 系统配置 数据层
*
@ -11,4 +13,20 @@ import com.qiaoba.api.system.entity.SysConfig;
* @since 2023-04-23 20:33:43
*/
public interface SysConfigMapper extends BaseMapper<SysConfig> {
/**
* 校验参数键名是否唯一
*
* @param sysConfig 参数配置信息
* @return 结果
*/
String checkKeyIsExist(SysConfig sysConfig);
/**
* 通过主键批量查询列表
*
* @param ids ids
* @return list
*/
List<SysConfig> selectByIds(List<String> ids);
}

View File

@ -1,17 +1,26 @@
package com.qiaoba.module.system.service.impl;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.util.StrUtil;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.qiaoba.api.system.entity.SysConfig;
import com.qiaoba.api.system.entity.param.SysConfigParam;
import com.qiaoba.auth.utils.SecurityUtil;
import com.qiaoba.common.base.constants.BaseConstant;
import com.qiaoba.common.base.constants.ConfigConstant;
import com.qiaoba.common.base.exceptions.ServiceException;
import com.qiaoba.common.database.entity.PageQuery;
import com.qiaoba.common.database.entity.TableDataInfo;
import com.qiaoba.common.redis.service.RedisService;
import com.qiaoba.module.system.mapper.SysConfigMapper;
import com.qiaoba.module.system.service.SysConfigService;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Objects;
/**
* 系统配置 服务层实现
@ -25,15 +34,31 @@ import java.util.List;
public class SysConfigServiceImpl implements SysConfigService {
private final SysConfigMapper sysConfigMapper;
private final RedisService redisService;
@Override
public int insert(SysConfig sysConfig) {
return sysConfigMapper.insert(sysConfig);
checkKeyIsExist(sysConfig);
sysConfig.setCreateTime(new Date());
sysConfig.setCreateUser(SecurityUtil.getLoginUsername());
int result = sysConfigMapper.insert(sysConfig);
if (result > BaseConstant.HANDLE_ERROR) {
cacheConfig(sysConfig);
}
return result;
}
@Override
public int updateById(SysConfig sysConfig) {
return sysConfigMapper.updateById(sysConfig);
checkKeyIsExist(sysConfig);
sysConfig.setUpdateTime(new Date());
sysConfig.setUpdateUser(SecurityUtil.getLoginUsername());
int result = sysConfigMapper.updateById(sysConfig);
if (result > BaseConstant.HANDLE_ERROR) {
cacheConfig(sysConfig);
}
return result;
}
@Override
@ -48,21 +73,48 @@ public class SysConfigServiceImpl implements SysConfigService {
@Override
public int deleteById(String configId) {
SysConfig sysConfig = selectById(configId);
if (Objects.isNull(sysConfig)) {
return BaseConstant.HANDLE_ERROR;
}
if (BaseConstant.YES.equals(sysConfig.getConfigType())) {
throw new ServiceException("系统内置不允许删除!");
}
redisService.del(ConfigConstant.SYS_CONFIG_KEY_PREFIX + sysConfig.getConfigKey());
return sysConfigMapper.deleteById(configId);
}
@Override
public int deleteByIds(List<String> ids) {
List<SysConfig> configs = sysConfigMapper.selectByIds(ids);
if (CollUtil.isEmpty(configs)) {
return BaseConstant.HANDLE_ERROR;
}
List<String> delKeys = new ArrayList<>();
for (SysConfig config : configs) {
if (BaseConstant.YES.equals(config.getConfigType())) {
throw new ServiceException("系统内置不允许删除!");
}
delKeys.add(ConfigConstant.SYS_CONFIG_KEY_PREFIX + config.getConfigKey());
}
redisService.del(delKeys);
return sysConfigMapper.deleteBatchIds(ids);
}
@Override
public void resetConfigCache() {
List<SysConfig> list = selectList(new SysConfigParam());
for (SysConfig sysConfig : list) {
cacheConfig(sysConfig);
}
}
@Override
public String selectConfigByKey(String configKey) {
configKey = ConfigConstant.SYS_CONFIG_KEY_PREFIX + configKey;
if (redisService.hasKey(configKey)) {
return redisService.getObject(configKey, String.class);
}
return null;
}
@ -79,4 +131,14 @@ public class SysConfigServiceImpl implements SysConfigService {
public TableDataInfo<SysConfig> selectPageList(SysConfigParam param, PageQuery pageQuery) {
return TableDataInfo.build(sysConfigMapper.selectPage(pageQuery.build(), param2Wrapper(param)));
}
private void checkKeyIsExist(SysConfig sysConfig) {
if (StrUtil.isNotBlank(sysConfigMapper.checkKeyIsExist(sysConfig))) {
throw new ServiceException("参数Key已存在, 操作失败!");
}
}
private void cacheConfig(SysConfig sysConfig) {
redisService.set(ConfigConstant.SYS_CONFIG_KEY_PREFIX + sysConfig.getConfigKey(), sysConfig.getConfigValue());
}
}

View File

@ -96,21 +96,19 @@ public class SysLoginServiceImpl implements SysLoginService {
}
private boolean getCaptchaConfig() {
return true;
/* try {
try {
return SecurityConstant.CAPTCHA_ON.equals(redisService.get(SecurityConstant.CAPTCHA_ON_OFF_KEY));
} catch (Exception e) {
throw new ServiceException("Redis中验证码配置不存在");
}*/
}
}
private boolean getRegisterConfig() {
return true;
/* try {
try {
return SecurityConstant.REGISTER_ON.equals(redisService.get(SecurityConstant.REGISTER_ON_OFF_KEY));
} catch (Exception e) {
throw new ServiceException("Redis中注册配置不存在");
}*/
}
}
private void validateCaptcha(String code, String uuid) {

View File

@ -0,0 +1,22 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.qiaoba.module.system.mapper.SysConfigMapper">
<select id="checkKeyIsExist" resultType="string">
select config_key from sys_config
where config_key = #{configKey}
<if test="configId !=null">
and config_id != #{configId}
</if>
limit 1
</select>
<select id="selectByIds" resultType="com.qiaoba.api.system.entity.SysConfig">
select config_id, config_name, config_key, config_value, config_type, create_user, create_time, update_user, update_time, remark
from sys_config where config_id in
<foreach item="configId" collection="list" open="(" separator="," close=")">
#{configId}
</foreach>
</select>
</mapper>