Commit 7666d4ff by fengshuonan

是否开启登录时验证码开关做到系统常量

parent 9dc66a7e
...@@ -16,7 +16,7 @@ USE guns; ...@@ -16,7 +16,7 @@ USE guns;
Target Server Version : 50724 Target Server Version : 50724
File Encoding : 65001 File Encoding : 65001
Date: 24/06/2019 11:08:03 Date: 24/06/2019 14:02:50
*/ */
SET NAMES utf8mb4; SET NAMES utf8mb4;
...@@ -43,7 +43,7 @@ CREATE TABLE `database_info` ( ...@@ -43,7 +43,7 @@ CREATE TABLE `database_info` (
-- Records of database_info -- Records of database_info
-- ---------------------------- -- ----------------------------
BEGIN; BEGIN;
INSERT INTO `database_info` VALUES (1142988647625146369, 'master', 'com.mysql.cj.jdbc.Driver', 'root', 'root', 'jdbc:mysql://127.0.0.1:3306/guns?autoReconnect=true&useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=CONVERT_TO_NULL&useSSL=false&serverTimezone=CTT', '主数据源,项目启动数据源!', '2019-06-24 10:51:43'); INSERT INTO `database_info` VALUES (1143035807842471938, 'master', 'com.mysql.cj.jdbc.Driver', 'root', 'root', 'jdbc:mysql://127.0.0.1:3306/guns?autoReconnect=true&useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=CONVERT_TO_NULL&useSSL=false&serverTimezone=CTT', '主数据源,项目启动数据源!', '2019-06-24 13:59:07');
COMMIT; COMMIT;
-- ---------------------------- -- ----------------------------
...@@ -88,7 +88,14 @@ CREATE TABLE `sys_config` ( ...@@ -88,7 +88,14 @@ CREATE TABLE `sys_config` (
`update_time` datetime DEFAULT NULL COMMENT '更新时间', `update_time` datetime DEFAULT NULL COMMENT '更新时间',
`update_user` bigint(20) DEFAULT NULL COMMENT '更新人', `update_user` bigint(20) DEFAULT NULL COMMENT '更新人',
PRIMARY KEY (`id`) PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=16 DEFAULT CHARSET=utf8 COMMENT='参数配置'; ) ENGINE=InnoDB AUTO_INCREMENT=20 DEFAULT CHARSET=utf8 COMMENT='参数配置';
-- ----------------------------
-- Records of sys_config
-- ----------------------------
BEGIN;
INSERT INTO `sys_config` VALUES (19, '验证码开关', 'GUNS_KAPTCHA_OPEN', 'Y', 1106120265689055233, 'DISABLE', '是否开启验证码', '2019-06-24 12:46:43', 1, '2019-06-24 14:01:39', 1);
COMMIT;
-- ---------------------------- -- ----------------------------
-- Table structure for sys_dept -- Table structure for sys_dept
......
package cn.stylefeng.guns.base.consts;
/**
* 配置的常量
*
* @author fengshuonan
* @date 2019-06-24-12:51
*/
public interface ConfigConstant {
/**
* 系统常量的前缀标识
*/
String SYSTEM_CONSTANT_PREFIX = "GUNS_";
}
package cn.stylefeng.guns.base.consts; package cn.stylefeng.guns.base.consts;
import cn.stylefeng.guns.base.enums.CommonStatus;
import cn.stylefeng.roses.core.util.ToolUtil;
import java.util.Map; import java.util.Map;
import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.ConcurrentHashMap;
import static cn.stylefeng.guns.base.consts.ConfigConstant.SYSTEM_CONSTANT_PREFIX;
/** /**
* 系统常量的容器 * 系统常量的容器
* *
...@@ -12,9 +17,50 @@ import java.util.concurrent.ConcurrentHashMap; ...@@ -12,9 +17,50 @@ import java.util.concurrent.ConcurrentHashMap;
public class ConstantsContext { public class ConstantsContext {
/** /**
* 系统常量的容器 * 所有的常量,可以增删改查
*/ */
private static Map<String, String> SYSTEM_CONSTNTS = new ConcurrentHashMap<>(); private static Map<String, Object> CONSTNTS_HOLDER = new ConcurrentHashMap<>();
/**
* 添加系统常量
*/
public static void putConstant(String key, Object value) {
if (ToolUtil.isOneEmpty(key, value)) {
return;
}
CONSTNTS_HOLDER.put(key, value);
}
/**
* 删除常量
*/
public static void deleteConstant(String key) {
if (ToolUtil.isOneEmpty(key)) {
return;
}
//如果是系统常量
if (!key.startsWith(SYSTEM_CONSTANT_PREFIX)) {
CONSTNTS_HOLDER.remove(key);
}
}
/**
* 获取系统常量
*/
public static Map<String, Object> getConstntsMap() {
return CONSTNTS_HOLDER;
}
/**
* 获取开关
*/
public static Boolean getKaptchaOpen() {
String gunsKaptchaOpen = (String) CONSTNTS_HOLDER.get("GUNS_KAPTCHA_OPEN");
if (CommonStatus.ENABLE.getCode().equalsIgnoreCase(gunsKaptchaOpen)) {
return true;
} else {
return false;
}
}
} }
...@@ -13,7 +13,7 @@ ...@@ -13,7 +13,7 @@
* See the License for the specific language governing permissions and * See the License for the specific language governing permissions and
* limitations under the License. * limitations under the License.
*/ */
package cn.stylefeng.guns.sys.core.constant.state; package cn.stylefeng.guns.base.enums;
import lombok.Getter; import lombok.Getter;
......
...@@ -76,5 +76,4 @@ public interface Const { ...@@ -76,5 +76,4 @@ public interface Const {
*/ */
String OAUTH2_ACCOUNT_PREFIX = "oauth2"; String OAUTH2_ACCOUNT_PREFIX = "oauth2";
} }
...@@ -83,6 +83,12 @@ public enum BizExceptionEnum implements AbstractBaseExceptionEnum { ...@@ -83,6 +83,12 @@ public enum BizExceptionEnum implements AbstractBaseExceptionEnum {
SIGN_ERROR(700, "签名验证失败"), SIGN_ERROR(700, "签名验证失败"),
/** /**
* 系统常量
*/
ALREADY_CONSTANTS_ERROR(400, "已经存在该编码的系统参数"),
SYSTEM_CONSTANT_ERROR(400, "不能删除系统常量"),
/**
* 其他 * 其他
*/ */
AUTH_REQUEST_ERROR(400, "账号密码错误"); AUTH_REQUEST_ERROR(400, "账号密码错误");
......
...@@ -33,8 +33,6 @@ public class GunsProperties { ...@@ -33,8 +33,6 @@ public class GunsProperties {
public static final String PREFIX = "guns"; public static final String PREFIX = "guns";
private Boolean kaptchaOpen = false;
private String fileUploadPath; private String fileUploadPath;
private Boolean haveCreatePath = false; private Boolean haveCreatePath = false;
......
...@@ -15,8 +15,7 @@ ...@@ -15,8 +15,7 @@
*/ */
package cn.stylefeng.guns.sys.core.util; package cn.stylefeng.guns.sys.core.util;
import cn.stylefeng.guns.sys.core.properties.GunsProperties; import cn.stylefeng.guns.base.consts.ConstantsContext;
import cn.stylefeng.roses.core.util.SpringContextHolder;
/** /**
* 验证码工具类 * 验证码工具类
...@@ -27,6 +26,6 @@ public class KaptchaUtil { ...@@ -27,6 +26,6 @@ public class KaptchaUtil {
* 获取验证码开关 * 获取验证码开关
*/ */
public static Boolean getKaptchaOnOff() { public static Boolean getKaptchaOnOff() {
return SpringContextHolder.getBean(GunsProperties.class).getKaptchaOpen(); return ConstantsContext.getKaptchaOpen();
} }
} }
\ No newline at end of file
package cn.stylefeng.guns.sys.modular.consts.service.impl; package cn.stylefeng.guns.sys.modular.consts.service.impl;
import cn.stylefeng.guns.base.consts.ConstantsContext;
import cn.stylefeng.guns.base.pojo.page.LayuiPageFactory; import cn.stylefeng.guns.base.pojo.page.LayuiPageFactory;
import cn.stylefeng.guns.base.pojo.page.LayuiPageInfo; import cn.stylefeng.guns.base.pojo.page.LayuiPageInfo;
import cn.stylefeng.guns.sys.core.exception.enums.BizExceptionEnum;
import cn.stylefeng.guns.sys.modular.consts.entity.SysConfig; import cn.stylefeng.guns.sys.modular.consts.entity.SysConfig;
import cn.stylefeng.guns.sys.modular.consts.mapper.SysConfigMapper; import cn.stylefeng.guns.sys.modular.consts.mapper.SysConfigMapper;
import cn.stylefeng.guns.sys.modular.consts.model.params.SysConfigParam; import cn.stylefeng.guns.sys.modular.consts.model.params.SysConfigParam;
import cn.stylefeng.guns.sys.modular.consts.model.result.SysConfigResult; import cn.stylefeng.guns.sys.modular.consts.model.result.SysConfigResult;
import cn.stylefeng.guns.sys.modular.consts.service.SysConfigService; import cn.stylefeng.guns.sys.modular.consts.service.SysConfigService;
import cn.stylefeng.roses.core.util.ToolUtil; import cn.stylefeng.roses.core.util.ToolUtil;
import cn.stylefeng.roses.kernel.model.exception.ServiceException;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
...@@ -17,6 +21,9 @@ import org.springframework.stereotype.Service; ...@@ -17,6 +21,9 @@ import org.springframework.stereotype.Service;
import java.io.Serializable; import java.io.Serializable;
import java.util.List; import java.util.List;
import static cn.stylefeng.guns.base.consts.ConfigConstant.SYSTEM_CONSTANT_PREFIX;
import static cn.stylefeng.guns.sys.core.exception.enums.BizExceptionEnum.ALREADY_CONSTANTS_ERROR;
/** /**
* <p> * <p>
* 参数配置 服务实现类 * 参数配置 服务实现类
...@@ -32,17 +39,38 @@ public class SysConfigServiceImpl extends ServiceImpl<SysConfigMapper, SysConfig ...@@ -32,17 +39,38 @@ public class SysConfigServiceImpl extends ServiceImpl<SysConfigMapper, SysConfig
public void add(SysConfigParam param) { public void add(SysConfigParam param) {
SysConfig entity = getEntity(param); SysConfig entity = getEntity(param);
//判断编码有没有重复
SysConfig sysConfig = new SysConfig();
sysConfig.setCode(entity.getCode());
List<SysConfig> list = this.list(new QueryWrapper<>(sysConfig));
if (list != null && list.size() > 0) {
throw new ServiceException(ALREADY_CONSTANTS_ERROR);
}
//如果是字典类型 //如果是字典类型
if (ToolUtil.isNotEmpty(param.getDictFlag()) if (ToolUtil.isNotEmpty(param.getDictFlag())
&& param.getDictFlag().equalsIgnoreCase("Y")) { && param.getDictFlag().equalsIgnoreCase("Y")) {
entity.setValue(param.getDictValue()); entity.setValue(param.getDictValue());
} }
//添加字典context
ConstantsContext.putConstant(entity.getCode(), entity.getValue());
this.save(entity); this.save(entity);
} }
@Override @Override
public void delete(SysConfigParam param) { public void delete(SysConfigParam param) {
//不能删除系统常量
SysConfig sysConfig = this.getById(param.getId());
if (sysConfig != null && sysConfig.getCode().startsWith(SYSTEM_CONSTANT_PREFIX)) {
throw new ServiceException(BizExceptionEnum.SYSTEM_CONSTANT_ERROR);
}
//删除字典context
ConstantsContext.deleteConstant(sysConfig.getCode());
this.removeById(getKey(param)); this.removeById(getKey(param));
} }
...@@ -65,6 +93,9 @@ public class SysConfigServiceImpl extends ServiceImpl<SysConfigMapper, SysConfig ...@@ -65,6 +93,9 @@ public class SysConfigServiceImpl extends ServiceImpl<SysConfigMapper, SysConfig
updateWrapper.set(true, "dict_type_id", null); updateWrapper.set(true, "dict_type_id", null);
} }
//添加字典context
ConstantsContext.putConstant(newEntity.getCode(), newEntity.getValue());
this.update(newEntity, updateWrapper); this.update(newEntity, updateWrapper);
} }
......
package cn.stylefeng.guns.sys.modular.system.service; package cn.stylefeng.guns.sys.modular.system.service;
import cn.stylefeng.guns.sys.core.constant.state.CommonStatus; import cn.stylefeng.guns.base.enums.CommonStatus;
import cn.stylefeng.guns.sys.core.exception.enums.BizExceptionEnum;
import cn.stylefeng.guns.base.pojo.node.ZTreeNode; import cn.stylefeng.guns.base.pojo.node.ZTreeNode;
import cn.stylefeng.guns.base.pojo.page.LayuiPageFactory; import cn.stylefeng.guns.base.pojo.page.LayuiPageFactory;
import cn.stylefeng.guns.base.pojo.page.LayuiPageInfo; import cn.stylefeng.guns.base.pojo.page.LayuiPageInfo;
import cn.stylefeng.guns.sys.core.exception.enums.BizExceptionEnum;
import cn.stylefeng.guns.sys.modular.system.entity.Dict; import cn.stylefeng.guns.sys.modular.system.entity.Dict;
import cn.stylefeng.guns.sys.modular.system.mapper.DictMapper; import cn.stylefeng.guns.sys.modular.system.mapper.DictMapper;
import cn.stylefeng.guns.sys.modular.system.model.params.DictParam; import cn.stylefeng.guns.sys.modular.system.model.params.DictParam;
......
package cn.stylefeng.guns.sys.modular.system.service; package cn.stylefeng.guns.sys.modular.system.service;
import cn.stylefeng.guns.base.enums.CommonStatus;
import cn.stylefeng.guns.base.pojo.page.LayuiPageFactory; import cn.stylefeng.guns.base.pojo.page.LayuiPageFactory;
import cn.stylefeng.guns.base.pojo.page.LayuiPageInfo; import cn.stylefeng.guns.base.pojo.page.LayuiPageInfo;
import cn.stylefeng.guns.sys.core.constant.state.CommonStatus;
import cn.stylefeng.guns.sys.core.exception.enums.BizExceptionEnum; import cn.stylefeng.guns.sys.core.exception.enums.BizExceptionEnum;
import cn.stylefeng.guns.sys.modular.system.entity.Dict; import cn.stylefeng.guns.sys.modular.system.entity.Dict;
import cn.stylefeng.guns.sys.modular.system.entity.DictType; import cn.stylefeng.guns.sys.modular.system.entity.DictType;
......
...@@ -20,7 +20,7 @@ ...@@ -20,7 +20,7 @@
<div class="layui-input-block"> <div class="layui-input-block">
<input id="code" name="code" placeholder="属性编码" type="text" class="layui-input" autocomplete="off" lay-verify="required" required/> <input id="code" name="code" placeholder="属性编码" type="text" class="layui-input" autocomplete="off" lay-verify="required" required/>
</div> </div>
<div class="layui-form-mid layui-word-aux form-tips">推荐采用下划线大写风格,例如,KAPTCH_OPEN</div> <div class="layui-form-mid layui-word-aux form-tips">推荐采用下划线大写风格,例如,KAPTCH_OPEN,若以GUNS_开头则是系统常量不可删除。</div>
</div> </div>
<div class="layui-form-item"> <div class="layui-form-item">
<label class="layui-form-label">取值范围<span style="color: red;">*</span></label> <label class="layui-form-label">取值范围<span style="color: red;">*</span></label>
......
...@@ -18,9 +18,9 @@ ...@@ -18,9 +18,9 @@
<div class="layui-form-item"> <div class="layui-form-item">
<label class="layui-form-label">编码<span style="color: red;">*</span></label> <label class="layui-form-label">编码<span style="color: red;">*</span></label>
<div class="layui-input-block"> <div class="layui-input-block">
<input id="code" name="code" placeholder="属性编码" type="text" class="layui-input" autocomplete="off" lay-verify="required" required/> <input id="code" disabled="disabled" name="code" placeholder="属性编码" type="text" class="layui-input" autocomplete="off" lay-verify="required" required/>
</div> </div>
<div class="layui-form-mid layui-word-aux form-tips">推荐采用下划线大写风格,例如,KAPTCH_OPEN</div> <div class="layui-form-mid layui-word-aux form-tips">编码填写后不可修改</div>
</div> </div>
<div class="layui-form-item"> <div class="layui-form-item">
<label class="layui-form-label">取值范围<span style="color: red;">*</span></label> <label class="layui-form-label">取值范围<span style="color: red;">*</span></label>
......
...@@ -48,30 +48,6 @@ ...@@ -48,30 +48,6 @@
</div> </div>
</div> </div>
<div class="layui-form-item"> <div class="layui-form-item">
<label class="layui-form-label">创建时间</label>
<div class="layui-input-block">
<input id="createTime" name="createTime" type="text" class="layui-input white-border" disabled="disabled"/>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">更新时间</label>
<div class="layui-input-block">
<input id="updateTime" name="updateTime" type="text" class="layui-input white-border" disabled="disabled"/>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">创建人</label>
<div class="layui-input-block">
<input id="createUser" name="createUser" type="text" class="layui-input white-border" disabled="disabled"/>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">修改人</label>
<div class="layui-input-block">
<input id="updateUser" name="updateUser" type="text" class="layui-input white-border" disabled="disabled"/>
</div>
</div>
<div class="layui-form-item">
<div class="layui-input-block"> <div class="layui-input-block">
<button class="layui-btn" lay-filter="btnSubmit" lay-submit>&emsp;提交&emsp;</button> <button class="layui-btn" lay-filter="btnSubmit" lay-submit>&emsp;提交&emsp;</button>
<button class="layui-btn layui-btn-primary" type="button" id="backupPage">&emsp;返回&emsp;</button> <button class="layui-btn layui-btn-primary" type="button" id="backupPage">&emsp;返回&emsp;</button>
......
...@@ -42,30 +42,6 @@ ...@@ -42,30 +42,6 @@
</div> </div>
</div> </div>
<div class="layui-form-item"> <div class="layui-form-item">
<label class="layui-form-label">创建时间</label>
<div class="layui-input-block">
<input id="createTime" name="createTime" type="text" class="layui-input white-border" disabled="disabled"/>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">创建人</label>
<div class="layui-input-block">
<input id="createUser" name="createUser" type="text" class="layui-input white-border" disabled="disabled"/>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">修改时间</label>
<div class="layui-input-block">
<input id="updateTime" name="updateTime" type="text" class="layui-input white-border" disabled="disabled"/>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">修改人</label>
<div class="layui-input-block">
<input id="updateUser" name="updateUser" type="text" class="layui-input white-border" disabled="disabled"/>
</div>
</div>
<div class="layui-form-item">
<div class="layui-input-block"> <div class="layui-input-block">
<button class="layui-btn" lay-filter="btnSubmit" lay-submit>&emsp;提交&emsp;</button> <button class="layui-btn" lay-filter="btnSubmit" lay-submit>&emsp;提交&emsp;</button>
<button class="layui-btn layui-btn-primary" type="button" id="backupPage">&emsp;返回&emsp;</button> <button class="layui-btn layui-btn-primary" type="button" id="backupPage">&emsp;返回&emsp;</button>
......
...@@ -3,7 +3,6 @@ server: ...@@ -3,7 +3,6 @@ server:
max-http-header-size: 10240 max-http-header-size: 10240
guns: guns:
kaptcha-open: false #是否开启登录时验证码 (true/false)
spring-session-open: false #是否开启spring session,如果是多机环境需要开启(true/false) spring-session-open: false #是否开启spring session,如果是多机环境需要开启(true/false)
session-invalidate-time: 1800 #session失效时间(只在单机环境下生效,多机环境在SpringSessionConfig类中配置) 单位:秒 session-invalidate-time: 1800 #session失效时间(只在单机环境下生效,多机环境在SpringSessionConfig类中配置) 单位:秒
session-validation-interval: 900 #多久检测一次失效的session(只在单机环境下生效) 单位:秒 session-validation-interval: 900 #多久检测一次失效的session(只在单机环境下生效) 单位:秒
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment