From 95211bf2ce90cd63ce87c11c032a44a71eba993e Mon Sep 17 00:00:00 2001 From: cwchen <1048842385@qq.com> Date: Thu, 11 Sep 2025 16:47:21 +0800 Subject: [PATCH 1/5] =?UTF-8?q?=E6=95=B0=E6=8D=AE=E9=9B=86=E6=88=90?= =?UTF-8?q?=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../common/SessionCheckController.java | 35 ++++++ .../controller/system/SysLoginController.java | 7 +- .../tool/KyDataClassifyController.java | 1 + bonus-common/pom.xml | 5 + .../common/filter/RequestCoverFilter.java | 101 ++++++++++-------- .../framework/config/SecurityConfig.java | 3 +- .../bonus/framework/config/SessionConfig.java | 30 ++++++ .../framework/filter/ReplayAttackFilter.java | 1 + .../interceptor/ParamSecureHandler.java | 3 + .../interceptor/XssRequestWrapper.java | 28 +++-- .../handle/LogoutSuccessHandlerImpl.java | 3 + .../web/service/SysLoginService.java | 7 +- .../mapper/system/DataCollectDataMapper.xml | 2 +- .../mapper/system/SysIpWhitelistMapper.xml | 26 +++-- 14 files changed, 176 insertions(+), 76 deletions(-) create mode 100644 bonus-admin/src/main/java/com/bonus/web/controller/common/SessionCheckController.java create mode 100644 bonus-framework/src/main/java/com/bonus/framework/config/SessionConfig.java diff --git a/bonus-admin/src/main/java/com/bonus/web/controller/common/SessionCheckController.java b/bonus-admin/src/main/java/com/bonus/web/controller/common/SessionCheckController.java new file mode 100644 index 0000000..330a51d --- /dev/null +++ b/bonus-admin/src/main/java/com/bonus/web/controller/common/SessionCheckController.java @@ -0,0 +1,35 @@ +package com.bonus.web.controller.common; + +import com.bonus.common.core.domain.AjaxResult; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import javax.servlet.http.HttpServletRequest; + +/** + * 会话检查控制器 + */ +@RestController +@RequestMapping("/api/session") +public class SessionCheckController { + +// @Autowired +// private SessionManagementService sessionManagementService; + + /** + * 检查会话状态 + */ + /*@GetMapping("/check") + public AjaxResult checkSession(HttpServletRequest request) { + String sessionId = request.getSession().getId(); + + if (sessionManagementService.isSessionForcedLogout(sessionId)) { + String message = sessionManagementService.getForceLogoutMessage(sessionId); + return AjaxResult.error(403, message).put("forceLogout", true); + } + + return AjaxResult.success().put("forceLogout", false); + }*/ +} \ No newline at end of file diff --git a/bonus-admin/src/main/java/com/bonus/web/controller/system/SysLoginController.java b/bonus-admin/src/main/java/com/bonus/web/controller/system/SysLoginController.java index 2486597..a91d8a5 100644 --- a/bonus-admin/src/main/java/com/bonus/web/controller/system/SysLoginController.java +++ b/bonus-admin/src/main/java/com/bonus/web/controller/system/SysLoginController.java @@ -24,6 +24,9 @@ import com.bonus.framework.web.service.TokenService; import com.bonus.system.service.ISysConfigService; import com.bonus.system.service.ISysMenuService; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + /** * 登录验证 * @@ -54,11 +57,11 @@ public class SysLoginController * @return 结果 */ @PostMapping("/login") - public AjaxResult login(@RequestBody LoginBody loginBody) + public AjaxResult login(HttpServletRequest request, @RequestBody LoginBody loginBody) { AjaxResult ajax = AjaxResult.success(); // 生成令牌 - String token = loginService.login(loginBody.getUsername(), loginBody.getPassword(), loginBody.getCode(), + String token = loginService.login(request,loginBody.getUsername(), loginBody.getPassword(), loginBody.getCode(), loginBody.getUuid()); ajax.put(Constants.TOKEN, token); return ajax; diff --git a/bonus-admin/src/main/java/com/bonus/web/controller/tool/KyDataClassifyController.java b/bonus-admin/src/main/java/com/bonus/web/controller/tool/KyDataClassifyController.java index 52c20e9..ef277a9 100644 --- a/bonus-admin/src/main/java/com/bonus/web/controller/tool/KyDataClassifyController.java +++ b/bonus-admin/src/main/java/com/bonus/web/controller/tool/KyDataClassifyController.java @@ -109,6 +109,7 @@ public class KyDataClassifyController extends BaseController { * @return */ /*@PreAuthorize("@ss.hasPermi('data:classify:list')")*/ + @RequiresPermissions("data:Collect:list") @GetMapping("/listAll") public TableDataInfo listAll(KyDataClassify kyDataClassify) { diff --git a/bonus-common/pom.xml b/bonus-common/pom.xml index d0d1bc9..d378cb7 100644 --- a/bonus-common/pom.xml +++ b/bonus-common/pom.xml @@ -164,6 +164,11 @@ spring-session-data-redis + + com.fasterxml.jackson.core + jackson-databind + + \ No newline at end of file diff --git a/bonus-common/src/main/java/com/bonus/common/filter/RequestCoverFilter.java b/bonus-common/src/main/java/com/bonus/common/filter/RequestCoverFilter.java index ef51fb1..b669e50 100644 --- a/bonus-common/src/main/java/com/bonus/common/filter/RequestCoverFilter.java +++ b/bonus-common/src/main/java/com/bonus/common/filter/RequestCoverFilter.java @@ -218,8 +218,8 @@ public class RequestCoverFilter implements Filter { throw new CaptchaException("请求参数不正确"); } String calculatedHash = Sm3Util.encrypt(query); - log.debug("计算出的哈希值: {}", calculatedHash); - log.debug("提供的哈希值: {}", providedHmac); + log.info("计算出的哈希值: {}", calculatedHash); + log.info("提供的哈希值: {}", providedHmac); if (!calculatedHash.equals(providedHmac)) { log.error("参数完整性校验失败"); throw new CaptchaException("请求参数不正确"); @@ -279,6 +279,7 @@ public class RequestCoverFilter implements Filter { public QueryStringRequestWrapper(HttpServletRequest request, String queryString) { super(request); this.queryString = queryString; +// log.info("QueryStringRequestWrapper 接收到的参数: {}", queryString); } @Override @@ -295,7 +296,7 @@ public class RequestCoverFilter implements Filter { @Override public Map getParameterMap() { if (cachedParameterMap == null) { - cachedParameterMap = parseNestedQueryString(queryString); + cachedParameterMap = parseQueryString(queryString); } return cachedParameterMap; } @@ -311,52 +312,68 @@ public class RequestCoverFilter implements Filter { } /** - * 解析嵌套查询字符串为Map,支持 params[beginTime] 格式 + * 解析查询字符串,支持普通格式和嵌套格式 */ - private Map parseNestedQueryString(String queryString) { + private Map parseQueryString(String queryString) { Map parameterMap = new HashMap<>(); - if (queryString != null) { - try { - // 先URL解码 - String decodedQueryString = java.net.URLDecoder.decode(queryString, StandardCharsets.UTF_8.name()); - String[] pairs = decodedQueryString.split("&"); + if (queryString == null || queryString.trim().isEmpty()) { + return parameterMap; + } - for (String pair : pairs) { - String[] keyValue = pair.split("=", 2); - if (keyValue.length == 2) { - String key = keyValue[0]; - String value = keyValue[1]; +// log.info("开始解析查询字符串: {}", queryString); - // 处理嵌套参数格式(如 params[beginTime]) - if (key.startsWith("params[") && key.endsWith("]")) { - // 提取嵌套参数名,如从 "params[beginTime]" 提取 "beginTime" - String nestedKey = key.substring(7, key.length() - 1); + try { + // 先URL解码 + String decodedQueryString = java.net.URLDecoder.decode(queryString, StandardCharsets.UTF_8.name()); + String[] pairs = decodedQueryString.split("&"); - // 将嵌套参数转换为 params. 前缀的参数 - String paramsKey = "params[" + nestedKey + "]"; - parameterMap.put(paramsKey, new String[]{value}); - } else { - // 普通参数处理 - if (parameterMap.containsKey(key)) { - String[] existingValues = parameterMap.get(key); - String[] newValues = Arrays.copyOf(existingValues, existingValues.length + 1); - newValues[existingValues.length] = value; - parameterMap.put(key, newValues); - } else { - parameterMap.put(key, new String[]{value}); - } - } - } + for (String pair : pairs) { + if (pair == null || pair.trim().isEmpty()) { + continue; } - } catch (Exception e) { - log.warn("解析嵌套查询字符串失败,使用简单解析: {}", e.getMessage()); - return parseSimpleQueryString(queryString); + String[] keyValue = pair.split("=", 2); + if (keyValue.length >= 1) { + String key = keyValue[0].trim(); + String value = keyValue.length == 2 ? keyValue[1].trim() : ""; + + // 处理嵌套参数格式(如 params[beginTime]) + if (key.startsWith("params[") && key.endsWith("]")) { + String nestedKey = key.substring(7, key.length() - 1); + String paramsKey = "params[" + nestedKey + "]"; + addParameter(parameterMap, paramsKey, value); + } else { + // 处理普通参数(如 pageNum=1, pageSize=10) + addParameter(parameterMap, key, value); + } + } } + + } catch (Exception e) { + log.warn("解析查询字符串失败: {}", e.getMessage()); + // 失败时尝试简单解析 + return parseSimpleQueryString(queryString); } + +// log.info("解析后的参数Map: {}", parameterMap); return parameterMap; } + /** + * 添加参数到Map,支持多值参数 + */ + private void addParameter(Map parameterMap, String key, String value) { + if (parameterMap.containsKey(key)) { + String[] existingValues = parameterMap.get(key); + String[] newValues = Arrays.copyOf(existingValues, existingValues.length + 1); + newValues[existingValues.length] = value; + parameterMap.put(key, newValues); + } else { + parameterMap.put(key, new String[]{value}); + } +// log.info("添加参数: {} = {}", key, value); + } + /** * 简单解析查询字符串(备用方案) */ @@ -369,15 +386,7 @@ public class RequestCoverFilter implements Filter { if (keyValue.length == 2) { String key = keyValue[0]; String value = keyValue[1]; - - if (parameterMap.containsKey(key)) { - String[] existingValues = parameterMap.get(key); - String[] newValues = Arrays.copyOf(existingValues, existingValues.length + 1); - newValues[existingValues.length] = value; - parameterMap.put(key, newValues); - } else { - parameterMap.put(key, new String[]{value}); - } + addParameter(parameterMap, key, value); } } } diff --git a/bonus-framework/src/main/java/com/bonus/framework/config/SecurityConfig.java b/bonus-framework/src/main/java/com/bonus/framework/config/SecurityConfig.java index 17d23c6..29e6189 100644 --- a/bonus-framework/src/main/java/com/bonus/framework/config/SecurityConfig.java +++ b/bonus-framework/src/main/java/com/bonus/framework/config/SecurityConfig.java @@ -10,6 +10,7 @@ import org.springframework.security.authentication.dao.DaoAuthenticationProvider import org.springframework.security.config.annotation.method.configuration.EnableMethodSecurity; import org.springframework.security.config.annotation.web.builders.HttpSecurity; import org.springframework.security.config.http.SessionCreationPolicy; +import org.springframework.security.core.session.SessionRegistry; import org.springframework.security.core.userdetails.UserDetailsService; import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder; import org.springframework.security.web.SecurityFilterChain; @@ -111,7 +112,7 @@ public class SecurityConfig .authorizeHttpRequests((requests) -> { permitAllUrl.getUrls().forEach(url -> requests.antMatchers(url).permitAll()); // 对于登录login 注册register 验证码captchaImage 允许匿名访问 - requests.antMatchers("/login", "/register", "/captchaImage").permitAll() + requests.antMatchers("/login", "/register", "/captchaImage","/session/check").permitAll() // 静态资源,可匿名访问 .antMatchers(HttpMethod.GET, "/", "/*.html", "/**/*.html", "/**/*.css", "/**/*.js", "/profile/**").permitAll() .antMatchers("/swagger-ui.html", "/swagger-resources/**", "/webjars/**", "/*/api-docs", "/druid/**").permitAll() diff --git a/bonus-framework/src/main/java/com/bonus/framework/config/SessionConfig.java b/bonus-framework/src/main/java/com/bonus/framework/config/SessionConfig.java new file mode 100644 index 0000000..adb50da --- /dev/null +++ b/bonus-framework/src/main/java/com/bonus/framework/config/SessionConfig.java @@ -0,0 +1,30 @@ +package com.bonus.framework.config; + +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.security.core.session.SessionRegistry; +import org.springframework.security.core.session.SessionRegistryImpl; +import org.springframework.security.web.session.HttpSessionEventPublisher; + +/** + * Session管理配置 + */ +@Configuration +public class SessionConfig { + + /** + * 注册SessionRegistry bean + */ + @Bean + public SessionRegistry sessionRegistry() { + return new SessionRegistryImpl(); + } + + /** + * 注册HttpSessionEventPublisher,用于监听session创建和销毁事件 + */ + @Bean + public HttpSessionEventPublisher httpSessionEventPublisher() { + return new HttpSessionEventPublisher(); + } +} \ No newline at end of file diff --git a/bonus-framework/src/main/java/com/bonus/framework/filter/ReplayAttackFilter.java b/bonus-framework/src/main/java/com/bonus/framework/filter/ReplayAttackFilter.java index 9d46a66..0071f49 100644 --- a/bonus-framework/src/main/java/com/bonus/framework/filter/ReplayAttackFilter.java +++ b/bonus-framework/src/main/java/com/bonus/framework/filter/ReplayAttackFilter.java @@ -38,6 +38,7 @@ public class ReplayAttackFilter implements Filter { ignoreUrlPatterns.add("/smartArchives/logout"); ignoreUrlPatterns.add("/smartArchives/getInfo"); ignoreUrlPatterns.add("/smartArchives/getRouters"); + ignoreUrlPatterns.add("/smartArchives/session/check"); } @Autowired diff --git a/bonus-framework/src/main/java/com/bonus/framework/interceptor/ParamSecureHandler.java b/bonus-framework/src/main/java/com/bonus/framework/interceptor/ParamSecureHandler.java index e59688a..b2c8a54 100644 --- a/bonus-framework/src/main/java/com/bonus/framework/interceptor/ParamSecureHandler.java +++ b/bonus-framework/src/main/java/com/bonus/framework/interceptor/ParamSecureHandler.java @@ -5,6 +5,7 @@ import com.bonus.common.core.domain.AjaxResult; import com.bonus.common.utils.SafeUtil; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; +import org.springframework.context.annotation.Configuration; import org.springframework.stereotype.Component; import org.springframework.web.servlet.AsyncHandlerInterceptor; @@ -33,6 +34,7 @@ public class ParamSecureHandler implements AsyncHandlerInterceptor { ignoreUrlPatterns.add("/smartArchives/logout"); ignoreUrlPatterns.add("/smartArchives/getInfo"); ignoreUrlPatterns.add("/smartArchives/getRouters"); + ignoreUrlPatterns.add("/smartArchives/session/check"); } private String rnd = null; @@ -67,6 +69,7 @@ public class ParamSecureHandler implements AsyncHandlerInterceptor { } XssRequestWrapper requestWrapper = new XssRequestWrapper(request); + System.err.println(JSON.toJSONString(request.getParameterMap())); /** * 校验参数是否合法 */ diff --git a/bonus-framework/src/main/java/com/bonus/framework/interceptor/XssRequestWrapper.java b/bonus-framework/src/main/java/com/bonus/framework/interceptor/XssRequestWrapper.java index 2eb3934..e5632e4 100644 --- a/bonus-framework/src/main/java/com/bonus/framework/interceptor/XssRequestWrapper.java +++ b/bonus-framework/src/main/java/com/bonus/framework/interceptor/XssRequestWrapper.java @@ -17,7 +17,6 @@ import java.util.ArrayList; import java.util.Iterator; import java.util.List; import java.util.Map; -import java.util.regex.Matcher; import java.util.regex.Pattern; /** @@ -47,12 +46,12 @@ public class XssRequestWrapper extends HttpServletRequestWrapper { } String requestBody = stringBuilder.toString(); - // 进行XSS清理 - streamParam = xssClean(requestBody); + // 不变更请求体,只做检测 + streamParam = requestBody; body = streamParam.getBytes(request.getCharacterEncoding() != null ? request.getCharacterEncoding() : "UTF-8"); - // 检查安全性 + // 检查安全性(仅校验,不篡改) String queryStr = request.getQueryString(); setChecked(xssCleanNew(requestBody) && (queryStr == null || xssCleanNew(queryStr))); @@ -63,7 +62,8 @@ public class XssRequestWrapper extends HttpServletRequestWrapper { setChecked(false); } - queryString = xssClean(request.getQueryString()); + // 不对查询串做篡改,保持原样,防止影响参数绑定 + queryString = request.getQueryString(); } @Override @@ -166,18 +166,14 @@ public class XssRequestWrapper extends HttpServletRequestWrapper { private static final String regex9 = "vbscript:"; private static final String regex10 = "onload(.*?)="; - // 添加安全脚本模式 - public static final String SAFE_SCRIPT_PATTERN = "(\\||;|\\$|'|\\'|0x0d|0x0a|\\%27|\\%3B|<>|\\[\\]|\\(\\)|\"|script|alert|svg|confirm|prompt|onload|%3c|%3e|%2b|@|!|img|src)"; + // 安全模式:移除过度严格的字符级别清理,避免破坏 JSON/参数结构 + // public static final String SAFE_SCRIPT_PATTERN = "(\\||;|\\$|'|\\'|0x0d|0x0a|\\%27|\\%3B|_|.)"; private String xssClean(String value) { if (value == null) { return null; } - // 移除空字符串替换(这行代码没有实际效果) - // value = value.replaceAll("", ""); - - // 使用预编译的模式提高性能 value = Pattern.compile(regex1, Pattern.CASE_INSENSITIVE).matcher(value).replaceAll(""); value = Pattern.compile(regex2, Pattern.CASE_INSENSITIVE | Pattern.MULTILINE | Pattern.DOTALL).matcher(value).replaceAll(""); value = Pattern.compile(regex3, Pattern.CASE_INSENSITIVE | Pattern.MULTILINE | Pattern.DOTALL).matcher(value).replaceAll(""); @@ -188,8 +184,8 @@ public class XssRequestWrapper extends HttpServletRequestWrapper { value = Pattern.compile(regex8, Pattern.CASE_INSENSITIVE).matcher(value).replaceAll(""); value = Pattern.compile(regex9, Pattern.CASE_INSENSITIVE).matcher(value).replaceAll(""); value = Pattern.compile(regex10, Pattern.CASE_INSENSITIVE | Pattern.MULTILINE | Pattern.DOTALL).matcher(value).replaceAll(""); - // 添加额外的安全过滤 - value = Pattern.compile(SAFE_SCRIPT_PATTERN, Pattern.CASE_INSENSITIVE).matcher(value).replaceAll(""); + // 移除对普通字符的全量替换,防止破坏字段名/JSON结构 + // value = Pattern.compile(SAFE_SCRIPT_PATTERN, Pattern.CASE_INSENSITIVE).matcher(value).replaceAll(""); return value; } @@ -215,7 +211,8 @@ public class XssRequestWrapper extends HttpServletRequestWrapper { patterns.add(Pattern.compile(regex8, Pattern.CASE_INSENSITIVE)); patterns.add(Pattern.compile(regex9, Pattern.CASE_INSENSITIVE)); patterns.add(Pattern.compile(regex10, Pattern.CASE_INSENSITIVE | Pattern.MULTILINE | Pattern.DOTALL)); - patterns.add(Pattern.compile(SAFE_SCRIPT_PATTERN, Pattern.CASE_INSENSITIVE)); + // 移除过度严格的 SAFE_SCRIPT_PATTERN 检查 + // patterns.add(Pattern.compile(SAFE_SCRIPT_PATTERN, Pattern.CASE_INSENSITIVE)); for (Pattern pattern : patterns) { if (match(pattern, value)) { @@ -332,7 +329,8 @@ public class XssRequestWrapper extends HttpServletRequestWrapper { patterns.add(Pattern.compile(regex8, Pattern.CASE_INSENSITIVE)); patterns.add(Pattern.compile(regex9, Pattern.CASE_INSENSITIVE)); patterns.add(Pattern.compile(regex10, Pattern.CASE_INSENSITIVE | Pattern.MULTILINE | Pattern.DOTALL)); - patterns.add(Pattern.compile(SAFE_SCRIPT_PATTERN, Pattern.CASE_INSENSITIVE)); + // 移除过度严格的 SAFE_SCRIPT_PATTERN 检查 + // patterns.add(Pattern.compile(SAFE_SCRIPT_PATTERN, Pattern.CASE_INSENSITIVE)); for (Pattern pattern : patterns) { if (match(pattern, value)) { diff --git a/bonus-framework/src/main/java/com/bonus/framework/security/handle/LogoutSuccessHandlerImpl.java b/bonus-framework/src/main/java/com/bonus/framework/security/handle/LogoutSuccessHandlerImpl.java index 15f1f71..8f69a27 100644 --- a/bonus-framework/src/main/java/com/bonus/framework/security/handle/LogoutSuccessHandlerImpl.java +++ b/bonus-framework/src/main/java/com/bonus/framework/security/handle/LogoutSuccessHandlerImpl.java @@ -4,6 +4,7 @@ import java.io.IOException; import javax.servlet.ServletException; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; + import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Configuration; import org.springframework.security.core.Authentication; @@ -30,6 +31,7 @@ public class LogoutSuccessHandlerImpl implements LogoutSuccessHandler @Autowired private TokenService tokenService; + /** * 退出处理 * @@ -43,6 +45,7 @@ public class LogoutSuccessHandlerImpl implements LogoutSuccessHandler if (StringUtils.isNotNull(loginUser)) { String userName = loginUser.getUsername(); + String sessionId = request.getSession().getId(); // 删除用户缓存记录 tokenService.delLoginUser(loginUser.getToken()); // 记录用户退出日志 diff --git a/bonus-framework/src/main/java/com/bonus/framework/web/service/SysLoginService.java b/bonus-framework/src/main/java/com/bonus/framework/web/service/SysLoginService.java index 2906dc3..098c987 100644 --- a/bonus-framework/src/main/java/com/bonus/framework/web/service/SysLoginService.java +++ b/bonus-framework/src/main/java/com/bonus/framework/web/service/SysLoginService.java @@ -1,11 +1,14 @@ package com.bonus.framework.web.service; import javax.annotation.Resource; +import javax.servlet.http.HttpServletRequest; + import org.springframework.beans.factory.annotation.Autowired; import org.springframework.security.authentication.AuthenticationManager; import org.springframework.security.authentication.BadCredentialsException; import org.springframework.security.authentication.UsernamePasswordAuthenticationToken; import org.springframework.security.core.Authentication; +import org.springframework.security.core.context.SecurityContextHolder; import org.springframework.stereotype.Component; import com.bonus.common.constant.CacheConstants; import com.bonus.common.constant.Constants; @@ -52,6 +55,8 @@ public class SysLoginService @Autowired private ISysConfigService configService; + + /** * 登录验证 * @@ -61,7 +66,7 @@ public class SysLoginService * @param uuid 唯一标识 * @return 结果 */ - public String login(String username, String password, String code, String uuid) + public String login(HttpServletRequest request,String username, String password, String code, String uuid) { // 验证码校验 validateCaptcha(username, code, uuid); diff --git a/bonus-system/src/main/resources/mapper/system/DataCollectDataMapper.xml b/bonus-system/src/main/resources/mapper/system/DataCollectDataMapper.xml index 300d4ba..e0319dd 100644 --- a/bonus-system/src/main/resources/mapper/system/DataCollectDataMapper.xml +++ b/bonus-system/src/main/resources/mapper/system/DataCollectDataMapper.xml @@ -9,7 +9,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" from da_ky_data_collect_data where del_flag = '1' - data_classify_id = #{dataClassifyId} + AND data_classify_id = #{dataClassifyId} diff --git a/bonus-system/src/main/resources/mapper/system/SysIpWhitelistMapper.xml b/bonus-system/src/main/resources/mapper/system/SysIpWhitelistMapper.xml index d74c12c..d7a3e4a 100644 --- a/bonus-system/src/main/resources/mapper/system/SysIpWhitelistMapper.xml +++ b/bonus-system/src/main/resources/mapper/system/SysIpWhitelistMapper.xml @@ -65,17 +65,23 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" SELECT COUNT(*) FROM da_ky_sys_ip_whitelist WHERE status = '0' - AND ( - (ip_address = #{ip} AND ip_address IS NOT NULL) - OR - (ip_range_start IS NOT NULL AND ip_range_end IS NOT NULL - AND INET_ATON(#{ip}) BETWEEN INET_ATON(ip_range_start) AND INET_ATON(ip_range_end)) - ) - AND ( + AND ( + (TRIM(ip_address) = #{ip}) + OR + (ip_range_start IS NOT NULL + AND ip_range_end IS NOT NULL + AND TRIM(ip_range_start) != '' + AND TRIM(ip_range_end) != '' + AND INET_ATON(#{ip}) BETWEEN + INET_ATON(TRIM(ip_range_start)) AND + INET_ATON(TRIM(ip_range_end))) + ) + AND ( (access_start_time IS NULL AND access_end_time IS NULL) - OR - (#{currentTime} BETWEEN access_start_time AND access_end_time) - ) + OR + (access_start_time <= #{currentTime} + AND access_end_time >= #{currentTime}) + ) + select dkfmc.id,dkfmc.classify_name,dkfmc.dimension,dkfmc.classify_desc,dkfmc.update_time, + dkfmc.update_user_id,dkfmc.update_user_name,dksdd.dict_label as dictLabel + from da_ky_files_multi_classify dkfmc + left join da_ky_sys_dict_data dksdd on dkfmc.dimension = dksdd.dict_code + where dkfmc.del_flag='1' + + and classify_name LIKE CONCAT('%', #{classifyName}, '%') + + + + diff --git a/bonus-system/src/main/resources/mapper/system/KyDataClassifyMapper.xml b/bonus-system/src/main/resources/mapper/system/KyDataClassifyMapper.xml index b33de85..90eaa04 100644 --- a/bonus-system/src/main/resources/mapper/system/KyDataClassifyMapper.xml +++ b/bonus-system/src/main/resources/mapper/system/KyDataClassifyMapper.xml @@ -20,6 +20,12 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" update_user_name =#{updateUserName}, + + update_time =#{updateTime}, + + + remark =#{remark}, + where id = #{id} @@ -33,6 +39,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" and data_type_name LIKE CONCAT('%', #{dataTypeName}, '%') + order by create_time desc + From d21d758aa1e4594b39eb9852dc91d587242a3507 Mon Sep 17 00:00:00 2001 From: cwchen <1048842385@qq.com> Date: Thu, 11 Sep 2025 17:57:55 +0800 Subject: [PATCH 4/5] =?UTF-8?q?=E6=95=B0=E6=8D=AE=E9=9B=86=E6=88=90?= =?UTF-8?q?=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- bonus-common/src/main/java/com/bonus/common/utils/SafeUtil.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bonus-common/src/main/java/com/bonus/common/utils/SafeUtil.java b/bonus-common/src/main/java/com/bonus/common/utils/SafeUtil.java index a4abf6f..4e69712 100644 --- a/bonus-common/src/main/java/com/bonus/common/utils/SafeUtil.java +++ b/bonus-common/src/main/java/com/bonus/common/utils/SafeUtil.java @@ -27,7 +27,7 @@ public class SafeUtil { "|<>|\\[\\]|\\(\\)|/|\"" + "|script|alert|svg|confirm|prompt|onload" + "|%3c|%3e|%2b|@|!|img|src" + - "|%|_)"; + "|%)"; /** * 检查特殊字符的正则表达式 From e0c77e5239db30a7afe0f48a2fffff783333d320 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=A9=AC=E4=B8=89=E7=82=AE?= <15856818120@163.com> Date: Thu, 11 Sep 2025 18:04:32 +0800 Subject: [PATCH 5/5] =?UTF-8?q?=E6=A1=A3=E6=A1=88=E8=87=AA=E5=AE=9A?= =?UTF-8?q?=E4=B9=89=E5=88=86=E7=B1=BB=E7=AE=A1=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../FilesCustomizeClassifyController.java | 107 ++++++++++++ .../tool/FilesMultiClassifyController.java | 27 ++- .../domain/KyFilesCustomizeClassify.java | 157 ++++++++++++++++++ .../mapper/FilesCustomizeClassifyMapper.java | 17 ++ .../FilesCustomizeClassifyService.java | 15 ++ .../FilesCustomizeClassifyServiceImpl.java | 51 ++++++ .../impl/KyDataClassifyServiceImpl.java | 5 + .../system/FilesCustomizeClassifyMapper.xml | 50 ++++++ .../system/FilesMultiClassifyMapper.xml | 2 +- 9 files changed, 416 insertions(+), 15 deletions(-) create mode 100644 bonus-admin/src/main/java/com/bonus/web/controller/tool/FilesCustomizeClassifyController.java create mode 100644 bonus-system/src/main/java/com/bonus/system/domain/KyFilesCustomizeClassify.java create mode 100644 bonus-system/src/main/java/com/bonus/system/mapper/FilesCustomizeClassifyMapper.java create mode 100644 bonus-system/src/main/java/com/bonus/system/service/FilesCustomizeClassifyService.java create mode 100644 bonus-system/src/main/java/com/bonus/system/service/impl/FilesCustomizeClassifyServiceImpl.java create mode 100644 bonus-system/src/main/resources/mapper/system/FilesCustomizeClassifyMapper.xml diff --git a/bonus-admin/src/main/java/com/bonus/web/controller/tool/FilesCustomizeClassifyController.java b/bonus-admin/src/main/java/com/bonus/web/controller/tool/FilesCustomizeClassifyController.java new file mode 100644 index 0000000..be33bd0 --- /dev/null +++ b/bonus-admin/src/main/java/com/bonus/web/controller/tool/FilesCustomizeClassifyController.java @@ -0,0 +1,107 @@ +package com.bonus.web.controller.tool; + +import com.bonus.common.annotation.RequiresPermissions; +import com.bonus.common.annotation.SysLog; +import com.bonus.common.core.controller.BaseController; +import com.bonus.common.core.domain.AjaxResult; +import com.bonus.common.core.page.TableDataInfo; +import com.bonus.common.enums.OperaType; +import com.bonus.common.utils.DateUtils; +import com.bonus.system.domain.KyFilesCustomizeClassify; +import com.bonus.system.domain.KyFilesMultiClassify; +import com.bonus.system.service.FilesCustomizeClassifyService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import java.util.List; + +/** + * 档案自定义分类 + * @author 马三炮 + * @date 2025/9/11 + */ +@RestController +@RequestMapping("/files/customize") +@Slf4j +public class FilesCustomizeClassifyController extends BaseController { + + @Resource + private FilesCustomizeClassifyService filesCustomizeClassifyService; + + /** + * 获取档案自定义分类管理列表 + * @param kyFilesCustomizeClassify + * @return + */ + @SysLog(title = "档案自定义分类管理", businessType = OperaType.QUERY, module = "档案自定义分类管理->获取档案自定义分类管理列表", details = "获取档案自定义分类管理列表") + @RequiresPermissions("files:customize:list") + @GetMapping("/getKyFilesCustomizeClassifyList") + public TableDataInfo getKyFilesCustomizeClassifyList(KyFilesCustomizeClassify kyFilesCustomizeClassify) + { + startPage(); + List list = filesCustomizeClassifyService.getKyFilesCustomizeClassifyList(kyFilesCustomizeClassify); + return getDataTable(list); + } + + /** + * 新增档案自定义分类管理 + * @param kyFilesCustomizeClassify + * @return + */ + @SysLog(title = "档案自定义分类管理", businessType = OperaType.QUERY, module = "档案自定义分类管理->新增档案自定义分类管理", details = "新增档案自定义分类管理") + @RequiresPermissions("files:customize:add") + @PostMapping("/addKyFilesCustomizeClassify") + public AjaxResult addKyFilesCustomizeClassify(@Validated @RequestBody KyFilesCustomizeClassify kyFilesCustomizeClassify) + { + + kyFilesCustomizeClassify.setCreateUserId(getUserId()); + kyFilesCustomizeClassify.setCreateUserName(getUsername()); + kyFilesCustomizeClassify.setCreateTime(DateUtils.getNowDate()); + kyFilesCustomizeClassify.setUpdateUserId(getUserId()); + kyFilesCustomizeClassify.setUpdateUserName(getUsername()); + kyFilesCustomizeClassify.setUpdateTime(DateUtils.getNowDate()); + int res = filesCustomizeClassifyService.addKyFilesCustomizeClassify(kyFilesCustomizeClassify); + if (res==1){ + return toAjax(res); + }else { + return error("分类名称已存在"); + } + } + + /** + * 修改档案自定义分类管理 + * @param kyFilesCustomizeClassify + * @return + */ + @SysLog(title = "档案自定义分类管理", businessType = OperaType.QUERY, module = "档案自定义分类管理->修改档案自定义分类管理", details = "修改档案自定义分类管理") + @RequiresPermissions("files:customize:update") + @PostMapping("/updateKyFilesCustomizeClassify") + public AjaxResult updateKyFilesCustomizeClassify(@Validated @RequestBody KyFilesCustomizeClassify kyFilesCustomizeClassify) + { + + kyFilesCustomizeClassify.setUpdateUserId(getUserId()); + kyFilesCustomizeClassify.setUpdateUserName(getUsername()); + kyFilesCustomizeClassify.setUpdateTime(DateUtils.getNowDate()); + int res = filesCustomizeClassifyService.updateKyFilesCustomizeClassify(kyFilesCustomizeClassify); + if (res==1){ + return toAjax(res); + }else { + return error("分类名称已存在"); + } + } + + /** + * 修改档案自定义分类管理 + * @param kyFilesCustomizeClassify + * @return + */ + @SysLog(title = "档案自定义分类管理", businessType = OperaType.QUERY, module = "档案自定义分类管理->修改档案自定义分类管理", details = "修改档案自定义分类管理") + @RequiresPermissions("files:customize:del") + @PostMapping("/delKyFilesCustomizeClassify") + public AjaxResult delKyFilesCustomizeClassify(@Validated @RequestBody KyFilesCustomizeClassify kyFilesCustomizeClassify) + { + return toAjax(filesCustomizeClassifyService.delKyFilesCustomizeClassify(kyFilesCustomizeClassify)); + } +} diff --git a/bonus-admin/src/main/java/com/bonus/web/controller/tool/FilesMultiClassifyController.java b/bonus-admin/src/main/java/com/bonus/web/controller/tool/FilesMultiClassifyController.java index c73d5a2..c9701bf 100644 --- a/bonus-admin/src/main/java/com/bonus/web/controller/tool/FilesMultiClassifyController.java +++ b/bonus-admin/src/main/java/com/bonus/web/controller/tool/FilesMultiClassifyController.java @@ -11,9 +11,8 @@ import com.bonus.system.domain.KyDataClassify; import com.bonus.system.domain.KyFilesMultiClassify; import com.bonus.system.service.FilesMultiClassifyService; import lombok.extern.slf4j.Slf4j; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; import javax.annotation.Resource; import java.util.List; @@ -37,9 +36,9 @@ public class FilesMultiClassifyController extends BaseController { * @return */ @SysLog(title = "档案多维度分类管理", businessType = OperaType.QUERY, module = "档案多维度分类管理->获取档案多维度分类管理列表", details = "获取档案多维度分类管理列表") - @RequiresPermissions("data:classify:list") + @RequiresPermissions("files:multi:list") @GetMapping("/getKyFilesMultiClassifyList") - public TableDataInfo list(KyFilesMultiClassify kyFilesMultiClassify) + public TableDataInfo getKyFilesMultiClassifyList(KyFilesMultiClassify kyFilesMultiClassify) { startPage(); List list = filesMultiClassifyService.selectKyFilesMultiClassifyList(kyFilesMultiClassify); @@ -52,9 +51,9 @@ public class FilesMultiClassifyController extends BaseController { * @return */ @SysLog(title = "档案多维度分类管理", businessType = OperaType.QUERY, module = "档案多维度分类管理->新增档案多维度分类管理", details = "新增档案多维度分类管理") - @RequiresPermissions("data:classify:add") - @GetMapping("/addKyFilesMultiClassify") - public AjaxResult addKyFilesMultiClassify(KyFilesMultiClassify kyFilesMultiClassify) + @RequiresPermissions("files:multi:add") + @PostMapping("/addKyFilesMultiClassify") + public AjaxResult addKyFilesMultiClassify(@Validated @RequestBody KyFilesMultiClassify kyFilesMultiClassify) { kyFilesMultiClassify.setCreateUserId(getUserId()); @@ -77,9 +76,9 @@ public class FilesMultiClassifyController extends BaseController { * @return */ @SysLog(title = "档案多维度分类管理", businessType = OperaType.QUERY, module = "档案多维度分类管理->新增档案多维度分类管理", details = "新增档案多维度分类管理") - @RequiresPermissions("data:classify:update") - @GetMapping("/updateKyFilesMultiClassify") - public AjaxResult updateKyFilesMultiClassify(KyFilesMultiClassify kyFilesMultiClassify) + @RequiresPermissions("files:multi:update") + @PostMapping("/updateKyFilesMultiClassify") + public AjaxResult updateKyFilesMultiClassify(@Validated @RequestBody KyFilesMultiClassify kyFilesMultiClassify) { kyFilesMultiClassify.setUpdateUserId(getUserId()); kyFilesMultiClassify.setUpdateUserName(getUsername()); @@ -98,9 +97,9 @@ public class FilesMultiClassifyController extends BaseController { * @return */ @SysLog(title = "档案多维度分类管理", businessType = OperaType.QUERY, module = "档案多维度分类管理->删除档案多维度分类管理", details = "删除档案多维度分类管理") - @RequiresPermissions("data:classify:del") - @GetMapping("/delKyFilesMultiClassify") - public AjaxResult delKyFilesMultiClassify(KyFilesMultiClassify kyFilesMultiClassify) + @RequiresPermissions("files:multi:del") + @PostMapping("/delKyFilesMultiClassify") + public AjaxResult delKyFilesMultiClassify(@Validated @RequestBody KyFilesMultiClassify kyFilesMultiClassify) { return toAjax(filesMultiClassifyService.delKyFilesMultiClassify(kyFilesMultiClassify)); } diff --git a/bonus-system/src/main/java/com/bonus/system/domain/KyFilesCustomizeClassify.java b/bonus-system/src/main/java/com/bonus/system/domain/KyFilesCustomizeClassify.java new file mode 100644 index 0000000..5a0b1ed --- /dev/null +++ b/bonus-system/src/main/java/com/bonus/system/domain/KyFilesCustomizeClassify.java @@ -0,0 +1,157 @@ +package com.bonus.system.domain; + +import javax.validation.constraints.Size; +import java.util.Date; + +/** + * @author 马三炮 + * @date 2025/9/11 + */ +public class KyFilesCustomizeClassify { + + /** + * id + */ + private Long id; + + /** + * 自定义分类名称 + */ + private String customizeClassifyName; + + /** + * 分类描述 + */ + private String classifyDesc; + + /** + * 创建时间 + */ + private Date createTime; + + /** + * 修改时间 + */ + private Date updateTime; + + /** + * 创建人 + */ + private Long createUserId; + + /** + * 创建人姓名 + */ + private String createUserName; + + /** + * 修改人 + */ + private Long updateUserId; + + /** + * 修改人姓名 + */ + private String updateUserName; + + /** + * 是否删除 0. 删除 1.未删除 + */ + private String delFlag; + + public Long getId() { + return id; + } + + public void setId(Long id) { + this.id = id; + } + @Size(min = 0, max = 64, message = "自定义分类名称超过64个字符") + public String getCustomizeClassifyName() { + return customizeClassifyName; + } + + public void setCustomizeClassifyName(String customizeClassifyName) { + this.customizeClassifyName = customizeClassifyName; + } + @Size(min = 0, max = 255, message = "分类描述超过64个字符") + public String getClassifyDesc() { + return classifyDesc; + } + + public void setClassifyDesc(String classifyDesc) { + this.classifyDesc = classifyDesc; + } + + public Date getCreateTime() { + return createTime; + } + + public void setCreateTime(Date createTime) { + this.createTime = createTime; + } + + public Date getUpdateTime() { + return updateTime; + } + + public void setUpdateTime(Date updateTime) { + this.updateTime = updateTime; + } + + public Long getCreateUserId() { + return createUserId; + } + + public void setCreateUserId(Long createUserId) { + this.createUserId = createUserId; + } + + public String getCreateUserName() { + return createUserName; + } + + public void setCreateUserName(String createUserName) { + this.createUserName = createUserName; + } + + public Long getUpdateUserId() { + return updateUserId; + } + + public void setUpdateUserId(Long updateUserId) { + this.updateUserId = updateUserId; + } + + public String getUpdateUserName() { + return updateUserName; + } + + public void setUpdateUserName(String updateUserName) { + this.updateUserName = updateUserName; + } + + public String getDelFlag() { + return delFlag; + } + + public void setDelFlag(String delFlag) { + this.delFlag = delFlag; + } + + @Override + public String toString() { + return "KyFilesCustomizeClassify{" + + "id=" + id + + ", customizeClassifyName='" + customizeClassifyName + '\'' + + ", classifyDesc='" + classifyDesc + '\'' + + ", createTime=" + createTime + + ", updateTime=" + updateTime + + ", createUserId=" + createUserId + + ", createUserName='" + createUserName + '\'' + + ", updateUserId=" + updateUserId + + ", updateUserName='" + updateUserName + '\'' + + ", delFlag='" + delFlag + '\'' + + '}'; + } +} diff --git a/bonus-system/src/main/java/com/bonus/system/mapper/FilesCustomizeClassifyMapper.java b/bonus-system/src/main/java/com/bonus/system/mapper/FilesCustomizeClassifyMapper.java new file mode 100644 index 0000000..38568eb --- /dev/null +++ b/bonus-system/src/main/java/com/bonus/system/mapper/FilesCustomizeClassifyMapper.java @@ -0,0 +1,17 @@ +package com.bonus.system.mapper; + +import com.bonus.system.domain.KyFilesCustomizeClassify; + +import java.util.List; + +public interface FilesCustomizeClassifyMapper { + List getKyFilesCustomizeClassifyList(KyFilesCustomizeClassify kyFilesCustomizeClassify); + + KyFilesCustomizeClassify getKyFilesCustomizeClassify(KyFilesCustomizeClassify kyFilesCustomizeClassify); + + int addKyFilesCustomizeClassify(KyFilesCustomizeClassify kyFilesCustomizeClassify); + + int updateKyFilesCustomizeClassify(KyFilesCustomizeClassify kyFilesCustomizeClassify); + + int delKyFilesCustomizeClassify(KyFilesCustomizeClassify kyFilesCustomizeClassify); +} diff --git a/bonus-system/src/main/java/com/bonus/system/service/FilesCustomizeClassifyService.java b/bonus-system/src/main/java/com/bonus/system/service/FilesCustomizeClassifyService.java new file mode 100644 index 0000000..1ab1f2f --- /dev/null +++ b/bonus-system/src/main/java/com/bonus/system/service/FilesCustomizeClassifyService.java @@ -0,0 +1,15 @@ +package com.bonus.system.service; + +import com.bonus.system.domain.KyFilesCustomizeClassify; + +import java.util.List; + +public interface FilesCustomizeClassifyService { + List getKyFilesCustomizeClassifyList(KyFilesCustomizeClassify kyFilesCustomizeClassify); + + int addKyFilesCustomizeClassify(KyFilesCustomizeClassify kyFilesCustomizeClassify); + + int updateKyFilesCustomizeClassify(KyFilesCustomizeClassify kyFilesCustomizeClassify); + + int delKyFilesCustomizeClassify(KyFilesCustomizeClassify kyFilesCustomizeClassify); +} diff --git a/bonus-system/src/main/java/com/bonus/system/service/impl/FilesCustomizeClassifyServiceImpl.java b/bonus-system/src/main/java/com/bonus/system/service/impl/FilesCustomizeClassifyServiceImpl.java new file mode 100644 index 0000000..d45d718 --- /dev/null +++ b/bonus-system/src/main/java/com/bonus/system/service/impl/FilesCustomizeClassifyServiceImpl.java @@ -0,0 +1,51 @@ +package com.bonus.system.service.impl; + +import com.bonus.common.utils.StringUtils; +import com.bonus.system.domain.KyFilesCustomizeClassify; +import com.bonus.system.mapper.FilesCustomizeClassifyMapper; +import com.bonus.system.service.FilesCustomizeClassifyService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import java.util.List; + +/** + * @author 马三炮 + * @date 2025/9/11 + */ +@Service +@Slf4j +public class FilesCustomizeClassifyServiceImpl implements FilesCustomizeClassifyService { + + @Resource + private FilesCustomizeClassifyMapper filesCustomizeClassifyMapper; + + @Override + public List getKyFilesCustomizeClassifyList(KyFilesCustomizeClassify kyFilesCustomizeClassify) { + return filesCustomizeClassifyMapper.getKyFilesCustomizeClassifyList(kyFilesCustomizeClassify); + } + + @Override + public int addKyFilesCustomizeClassify(KyFilesCustomizeClassify kyFilesCustomizeClassify) { + KyFilesCustomizeClassify kyFilesCustomizeClassifyOld = filesCustomizeClassifyMapper.getKyFilesCustomizeClassify(kyFilesCustomizeClassify); + if (StringUtils.isNotNull(kyFilesCustomizeClassifyOld)){ + return 0; + } + return filesCustomizeClassifyMapper.addKyFilesCustomizeClassify(kyFilesCustomizeClassify); + } + + @Override + public int updateKyFilesCustomizeClassify(KyFilesCustomizeClassify kyFilesCustomizeClassify) { + KyFilesCustomizeClassify kyFilesCustomizeClassifyOld = filesCustomizeClassifyMapper.getKyFilesCustomizeClassify(kyFilesCustomizeClassify); + if (StringUtils.isNotNull(kyFilesCustomizeClassifyOld) && !kyFilesCustomizeClassify.getId().equals(kyFilesCustomizeClassifyOld.getId())){ + return 0; + } + return filesCustomizeClassifyMapper.updateKyFilesCustomizeClassify(kyFilesCustomizeClassify); + } + + @Override + public int delKyFilesCustomizeClassify(KyFilesCustomizeClassify kyFilesCustomizeClassify) { + return filesCustomizeClassifyMapper.delKyFilesCustomizeClassify(kyFilesCustomizeClassify); + } +} diff --git a/bonus-system/src/main/java/com/bonus/system/service/impl/KyDataClassifyServiceImpl.java b/bonus-system/src/main/java/com/bonus/system/service/impl/KyDataClassifyServiceImpl.java index 2467f04..85811b2 100644 --- a/bonus-system/src/main/java/com/bonus/system/service/impl/KyDataClassifyServiceImpl.java +++ b/bonus-system/src/main/java/com/bonus/system/service/impl/KyDataClassifyServiceImpl.java @@ -56,6 +56,11 @@ public class KyDataClassifyServiceImpl implements KyDataClassifyService { */ @Override public int updateKyDataClassify(KyDataClassify kyDataClassify) { + //判读数据名称是否存在 + KyDataClassify kyDataClassifyOld = kyDataClassifyMapper.selectKyDataClassifyByDataTypeName(kyDataClassify); + if (StringUtils.isNotNull(kyDataClassifyOld) && !kyDataClassify.getId().equals(kyDataClassifyOld.getId())){ + return 0; + } return kyDataClassifyMapper.updateKyDataClassify(kyDataClassify); } diff --git a/bonus-system/src/main/resources/mapper/system/FilesCustomizeClassifyMapper.xml b/bonus-system/src/main/resources/mapper/system/FilesCustomizeClassifyMapper.xml new file mode 100644 index 0000000..e52e025 --- /dev/null +++ b/bonus-system/src/main/resources/mapper/system/FilesCustomizeClassifyMapper.xml @@ -0,0 +1,50 @@ + + + + + insert into da_ky_files_customize_classify + (customize_classify_name,classify_desc,create_time,update_time,create_user_id,create_user_name,update_user_id,update_user_name) + values (#{customizeClassifyName},#{classifyDesc},#{classifyDesc},#{createTime},#{updateTime},#{createUserId},#{createUserName},#{updateUserId},#{updateUserName}) + + + + update da_ky_files_customize_classify + + + customize_classify_name =#{customizeClassifyName}, + + + classify_desc =#{classifyDesc}, + + + update_user_id =#{updateUserId}, + + + update_user_name =#{updateUserName}, + + + update_time =#{updateTime}, + + + where id = #{id} + + + update da_ky_files_customize_classify set del_flag = '0' where id = #{id} + + + + + diff --git a/bonus-system/src/main/resources/mapper/system/FilesMultiClassifyMapper.xml b/bonus-system/src/main/resources/mapper/system/FilesMultiClassifyMapper.xml index 19f3404..6844533 100644 --- a/bonus-system/src/main/resources/mapper/system/FilesMultiClassifyMapper.xml +++ b/bonus-system/src/main/resources/mapper/system/FilesMultiClassifyMapper.xml @@ -4,7 +4,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> - insert into da_ky_data_classify + insert into da_ky_files_multi_classify (classify_name,dimension,classify_desc,create_time,update_time,create_user_id,create_user_name,update_user_id,update_user_name) values (#{classifyName},#{dimension},#{classifyDesc},#{createTime},#{updateTime},#{createUserId},#{createUserName},#{updateUserId},#{updateUserName})