Commit 7666d4ff by fengshuonan

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

parent 9dc66a7e
......@@ -16,7 +16,7 @@ USE guns;
Target Server Version : 50724
File Encoding : 65001
Date: 24/06/2019 11:08:03
Date: 24/06/2019 14:02:50
*/
SET NAMES utf8mb4;
......@@ -43,7 +43,7 @@ CREATE TABLE `database_info` (
-- Records of database_info
-- ----------------------------
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;
-- ----------------------------
......@@ -88,7 +88,14 @@ CREATE TABLE `sys_config` (
`update_time` datetime DEFAULT NULL COMMENT '更新时间',
`update_user` bigint(20) DEFAULT NULL COMMENT '更新人',
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
......
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;
import cn.stylefeng.guns.base.enums.CommonStatus;
import cn.stylefeng.roses.core.util.ToolUtil;
import java.util.Map;
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;
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 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package cn.stylefeng.guns.sys.core.constant.state;
package cn.stylefeng.guns.base.enums;
import lombok.Getter;
......
......@@ -76,5 +76,4 @@ public interface Const {
*/
String OAUTH2_ACCOUNT_PREFIX = "oauth2";
}
......@@ -83,6 +83,12 @@ public enum BizExceptionEnum implements AbstractBaseExceptionEnum {
SIGN_ERROR(700, "签名验证失败"),
/**
* 系统常量
*/
ALREADY_CONSTANTS_ERROR(400, "已经存在该编码的系统参数"),
SYSTEM_CONSTANT_ERROR(400, "不能删除系统常量"),
/**
* 其他
*/
AUTH_REQUEST_ERROR(400, "账号密码错误");
......
......@@ -33,8 +33,6 @@ public class GunsProperties {
public static final String PREFIX = "guns";
private Boolean kaptchaOpen = false;
private String fileUploadPath;
private Boolean haveCreatePath = false;
......
......@@ -15,8 +15,7 @@
*/
package cn.stylefeng.guns.sys.core.util;
import cn.stylefeng.guns.sys.core.properties.GunsProperties;
import cn.stylefeng.roses.core.util.SpringContextHolder;
import cn.stylefeng.guns.base.consts.ConstantsContext;
/**
* 验证码工具类
......@@ -27,6 +26,6 @@ public class KaptchaUtil {
* 获取验证码开关
*/
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;
import cn.stylefeng.guns.base.consts.ConstantsContext;
import cn.stylefeng.guns.base.pojo.page.LayuiPageFactory;
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.mapper.SysConfigMapper;
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.service.SysConfigService;
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.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
......@@ -17,6 +21,9 @@ import org.springframework.stereotype.Service;
import java.io.Serializable;
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>
* 参数配置 服务实现类
......@@ -32,17 +39,38 @@ public class SysConfigServiceImpl extends ServiceImpl<SysConfigMapper, SysConfig
public void add(SysConfigParam 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())
&& param.getDictFlag().equalsIgnoreCase("Y")) {
entity.setValue(param.getDictValue());
}
//添加字典context
ConstantsContext.putConstant(entity.getCode(), entity.getValue());
this.save(entity);
}
@Override
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));
}
......@@ -65,6 +93,9 @@ public class SysConfigServiceImpl extends ServiceImpl<SysConfigMapper, SysConfig
updateWrapper.set(true, "dict_type_id", null);
}
//添加字典context
ConstantsContext.putConstant(newEntity.getCode(), newEntity.getValue());
this.update(newEntity, updateWrapper);
}
......
package cn.stylefeng.guns.sys.modular.system.service;
import cn.stylefeng.guns.sys.core.constant.state.CommonStatus;
import cn.stylefeng.guns.sys.core.exception.enums.BizExceptionEnum;
import cn.stylefeng.guns.base.enums.CommonStatus;
import cn.stylefeng.guns.base.pojo.node.ZTreeNode;
import cn.stylefeng.guns.base.pojo.page.LayuiPageFactory;
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.mapper.DictMapper;
import cn.stylefeng.guns.sys.modular.system.model.params.DictParam;
......
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.LayuiPageInfo;
import cn.stylefeng.guns.sys.core.constant.state.CommonStatus;
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.DictType;
......
......@@ -20,7 +20,7 @@
<div class="layui-input-block">
<input id="code" name="code" placeholder="属性编码" type="text" class="layui-input" autocomplete="off" lay-verify="required" required/>
</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 class="layui-form-item">
<label class="layui-form-label">取值范围<span style="color: red;">*</span></label>
......
......@@ -18,9 +18,9 @@
<div class="layui-form-item">
<label class="layui-form-label">编码<span style="color: red;">*</span></label>
<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 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 class="layui-form-item">
<label class="layui-form-label">取值范围<span style="color: red;">*</span></label>
......
......@@ -48,30 +48,6 @@
</div>
</div>
<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">
<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>
......
......@@ -42,30 +42,6 @@
</div>
</div>
<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">
<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>
......
......@@ -3,7 +3,6 @@ server:
max-http-header-size: 10240
guns:
kaptcha-open: false #是否开启登录时验证码 (true/false)
spring-session-open: false #是否开启spring session,如果是多机环境需要开启(true/false)
session-invalidate-time: 1800 #session失效时间(只在单机环境下生效,多机环境在SpringSessionConfig类中配置) 单位:秒
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