| src/main/java/com/zy/common/config/AdminInterceptor.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| src/main/java/com/zy/common/properties/SystemProperties.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| src/main/java/com/zy/common/task/ActivateScheduler.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| src/main/java/com/zy/common/web/AuthController.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| src/main/java/com/zy/system/service/ConfigService.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| src/main/java/com/zy/system/service/impl/ConfigServiceImpl.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| src/main/java/com/zy/system/timer/LoadingConfigTimer.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| src/main/java/com/zy/system/timer/TokenTimer.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
src/main/java/com/zy/common/config/AdminInterceptor.java
@@ -5,10 +5,11 @@ import com.core.annotations.ManagerAuth; import com.core.common.BaseRes; import com.core.common.Cools; import com.zy.common.properties.SystemProperties; import com.zy.common.utils.Http; import com.zy.system.entity.*; import com.zy.system.service.*; import com.zy.system.timer.LicenseTimer; import com.zy.system.timer.LoadingConfigTimer; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.lang.Nullable; @@ -40,6 +41,10 @@ private PermissionService permissionService; @Autowired private RolePermissionService rolePermissionService; @Autowired private LicenseTimer licenseTimer; @Autowired private LoadingConfigTimer loadingConfigTimer; @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { @@ -54,7 +59,7 @@ if (deToken != null) { long timestamp = Long.parseLong(deToken.substring(0, 13)); // 半小时后过期 if (System.currentTimeMillis() - timestamp > 1000 * 60 * 30) { if (System.currentTimeMillis() - timestamp > loadingConfigTimer.getTokenExpire()) { Http.response(response, BaseRes.DENIED); return false; } @@ -136,7 +141,7 @@ // 操作日志 if (!Cools.isEmpty(memo)) { // 进行激活判断 if (!SystemProperties.SYSTEM_ACTIVATION) { if (!licenseTimer.getSystemSupport()) { Http.response(response, BaseRes.NO_ACTIVATION); return false; } src/main/java/com/zy/common/properties/SystemProperties.java
File was deleted src/main/java/com/zy/common/task/ActivateScheduler.java
File was deleted src/main/java/com/zy/common/web/AuthController.java
@@ -4,25 +4,25 @@ import com.baomidou.mybatisplus.mapper.EntityWrapper; import com.baomidou.mybatisplus.mapper.Wrapper; import com.core.annotations.ManagerAuth; import com.core.common.AesUtils; import com.core.common.Cools; import com.core.common.DateUtils; import com.core.common.R; import com.core.exception.CoolException; import com.zy.common.CodeRes; import com.zy.common.entity.Parameter; import com.zy.common.model.PowerDto; import com.zy.common.model.enums.HtmlNavIconType; import com.zy.common.properties.OSinfo; import com.zy.common.properties.SystemProperties; import com.zy.common.utils.RandomValidateCodeUtil; import com.zy.system.entity.*; import com.zy.system.service.*; import com.zy.system.timer.LicenseTimer; import com.zy.system.timer.LoadingConfigTimer; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.transaction.annotation.Transactional; import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; import javax.servlet.http.HttpServletResponse; import java.util.*; @@ -51,6 +51,8 @@ private RolePermissionService rolePermissionService; @Autowired private LicenseTimer licenseTimer; @Autowired private LoadingConfigTimer loadingConfigTimer; @RequestMapping("/login.action") @ManagerAuth(value = ManagerAuth.Auth.NONE, memo = "登录") @@ -78,7 +80,9 @@ return R.parse(CodeRes.USER_10003); } String token = Cools.enToken(System.currentTimeMillis() + username, user.getPassword()); userLoginService.delete(new EntityWrapper<UserLogin>().eq("user_id", user.getId())); if (loadingConfigTimer.getTokenNumber() == 1) { userLoginService.delete(new EntityWrapper<UserLogin>().eq("user_id", user.getId()).eq("system", "WMS")); } UserLogin userLogin = new UserLogin(); userLogin.setUserId(user.getId()); userLogin.setToken(token); @@ -136,7 +140,7 @@ resourceWrapper = new EntityWrapper<Resource>().eq("level", 2).eq("status", 1).orderBy("sort"); } else { // 激活码验证 if (!SystemProperties.SYSTEM_ACTIVATION) { if (!licenseTimer.getSystemSupport()) { return R.ok(); } oneLevel = resourceService.selectList(new EntityWrapper<Resource>().eq("level", 1).eq("status", 1).orderBy("sort")); @@ -342,48 +346,48 @@ return R.ok(resources); } @GetMapping(value = "/system/activation/auth") public R activation() { if (SystemProperties.SYSTEM_ACTIVATION) { String activationCode = SystemProperties.getActivationCode(OSinfo.getOSname().getActivationCodePath()); String timeStr = AesUtils.decrypt(activationCode, SystemProperties.SALT); if (null == timeStr) { SystemProperties.SYSTEM_ACTIVATION = Boolean.FALSE; return R.error(); } Date exprTime = DateUtils.convert(timeStr, DateUtils.yyyyMMddHHmmss); if (new Date().getTime() < exprTime.getTime()) { return R.ok().add(DateUtils.convert(exprTime)); } else { SystemProperties.SYSTEM_ACTIVATION = Boolean.FALSE; return R.error(); } } else { return R.error(); } } @PostMapping(value = "/system/secret/auth") @ManagerAuth public R systemSecret(@RequestParam(value = "secret") String secret) { if (Cools.isEmpty(secret)) { return R.error("请输入激活码"); } // 验证激活码 String timeStr = AesUtils.decrypt(secret, SystemProperties.SALT); if (null == timeStr) { return R.error("激活码错误"); } Date exprTime = DateUtils.convert(timeStr, DateUtils.yyyyMMddHHmmss); if (new Date().getTime() >= exprTime.getTime()) { return R.error("激活码已失效"); } boolean result = SystemProperties.saveActivationCode(OSinfo.getOSname().getActivationCodePath(), secret); if (!result) { return R.error("激活失败"); } SystemProperties.SYSTEM_ACTIVATION = Boolean.TRUE; return R.ok("激活成功,有效期至" + DateUtils.convert(exprTime)); } // @GetMapping(value = "/system/activation/auth") // public R activation() { // if (SystemProperties.SYSTEM_ACTIVATION) { // String activationCode = SystemProperties.getActivationCode(OSinfo.getOSname().getActivationCodePath()); // String timeStr = AesUtils.decrypt(activationCode, SystemProperties.SALT); // if (null == timeStr) { // SystemProperties.SYSTEM_ACTIVATION = Boolean.FALSE; // return R.error(); // } // Date exprTime = DateUtils.convert(timeStr, DateUtils.yyyyMMddHHmmss); // if (new Date().getTime() < exprTime.getTime()) { // return R.ok().add(DateUtils.convert(exprTime)); // } else { // SystemProperties.SYSTEM_ACTIVATION = Boolean.FALSE; // return R.error(); // } // } else { // return R.error(); // } // } // // @PostMapping(value = "/system/secret/auth") // @ManagerAuth // public R systemSecret(@RequestParam(value = "secret") String secret) { // if (Cools.isEmpty(secret)) { // return R.error("请输入激活码"); // } // // 验证激活码 // String timeStr = AesUtils.decrypt(secret, SystemProperties.SALT); // if (null == timeStr) { // return R.error("激活码错误"); // } // Date exprTime = DateUtils.convert(timeStr, DateUtils.yyyyMMddHHmmss); // if (new Date().getTime() >= exprTime.getTime()) { // return R.error("激活码已失效"); // } // boolean result = SystemProperties.saveActivationCode(OSinfo.getOSname().getActivationCodePath(), secret); // if (!result) { // return R.error("激活失败"); // } // SystemProperties.SYSTEM_ACTIVATION = Boolean.TRUE; // return R.ok("激活成功,有效期至" + DateUtils.convert(exprTime)); // } } src/main/java/com/zy/system/service/ConfigService.java
@@ -6,4 +6,7 @@ public interface ConfigService extends IService<Config> { Config selectConfigByCode(String code); <T> T getVal(String key, Class<T> clazz, T t); } src/main/java/com/zy/system/service/impl/ConfigServiceImpl.java
@@ -1,12 +1,15 @@ package com.zy.system.service.impl; import com.baomidou.mybatisplus.service.impl.ServiceImpl; import com.core.common.Cools; import com.zy.system.entity.Config; import com.zy.system.mapper.ConfigMapper; import com.zy.system.service.ConfigService; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; @Service("configService") @Slf4j public class ConfigServiceImpl extends ServiceImpl<ConfigMapper, Config> implements ConfigService { @Override @@ -14,6 +17,44 @@ return this.baseMapper.selectConfigByCode(code); } ; /** * 获取配置信息 * * @param key 键值 * @param clazz 类型 * @param t 默认值 * @param <T> * @return */ @Override @SuppressWarnings("unchecked") public <T> T getVal(String key, Class<T> clazz, T t) { try { Config config = this.baseMapper.selectConfigByCode(key); if (config == null || config.getStatus() != 1 || Cools.isEmpty(config.getValue())) { return t; } String val = config.getValue(); if (clazz.equals(Boolean.class)) { if (val.equals("1") || val.trim().equalsIgnoreCase("TRUE")) { return (T) Boolean.TRUE; } return (T) Boolean.FALSE; } else if (clazz.equals(Integer.class)) { return (T) Integer.valueOf(val); } else if (clazz.equals(String.class)) { return (T) val; } else if (clazz.equals(Short.class)) { return (T) Short.valueOf(val); } else if (clazz.equals(Long.class)) { return (T) Long.valueOf(val); } else if (clazz.equals(Double.class)) { return (T) Double.valueOf(val); } } catch (Exception e) { log.error("参数加载异常,配置参数={}", key); } return t; } } src/main/java/com/zy/system/timer/LoadingConfigTimer.java
New file @@ -0,0 +1,39 @@ package com.zy.system.timer; import com.zy.system.service.ConfigService; import lombok.Data; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.scheduling.annotation.Scheduled; import org.springframework.stereotype.Component; /** * 定时任务读取配置信息 */ @Component @Slf4j @Data public class LoadingConfigTimer { /** * token有效期时间 */ private Integer tokenExpire = 1000 * 30 * 60; /** * token数量限制 */ private Integer tokenNumber = 1; @Autowired private ConfigService configService; @Scheduled(cron = "0/2 * * * * ? ") public void timer() { tokenExpire = configService.getVal("tokenExpire", Integer.class, tokenExpire); tokenNumber = configService.getVal("tokenNumber", Integer.class, tokenNumber); } } src/main/java/com/zy/system/timer/TokenTimer.java
New file @@ -0,0 +1,50 @@ package com.zy.system.timer; import com.baomidou.mybatisplus.mapper.EntityWrapper; import com.core.common.Cools; import com.zy.system.entity.UserLogin; import com.zy.system.service.UserLoginService; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.scheduling.annotation.Scheduled; import org.springframework.stereotype.Component; import java.util.List; /** * token定时任务,删除过期的token */ @Component @Slf4j public class TokenTimer { @Autowired private UserLoginService userLoginService; @Autowired private LoadingConfigTimer loadingConfigTimer; @Value("${super.pwd}") private String superPwd; @Scheduled(cron = "0/30 * * * * ? ") public void timer() { if (loadingConfigTimer.getTokenNumber() == 1) { return; } List<UserLogin> userLogins = userLoginService.selectList(new EntityWrapper<>()); for (UserLogin userLogin : userLogins) { String deToken = Cools.deTokn(userLogin.getToken(), superPwd); if (deToken != null) { long timestamp = Long.parseLong(deToken.substring(0, 13)); // 半小时后过期 if (System.currentTimeMillis() - timestamp > loadingConfigTimer.getTokenExpire()) { userLoginService.deleteById(userLogin.getId()); } } } } }