From ab1472ff50ade2f5296366938fbdd7e954ba96b5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=8E=8B=E5=A5=8E=E5=85=B4?= <2220574228@qq.com> Date: Tue, 9 Dec 2025 18:43:00 +0800 Subject: [PATCH] =?UTF-8?q?=E8=BE=BE=E6=A2=A6=E9=80=82=E9=85=8D=E5=A4=A7?= =?UTF-8?q?=E5=B0=8F=E5=86=99=E6=95=8F=E6=84=9F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../config/CamelCaseMapPlugin.java | 57 +++++++++++++++++++ .../infrastructure/util/CamelCaseUtils.java | 54 ++++++++++++++++++ .../config/CamelCaseMapPlugin.java | 57 +++++++++++++++++++ .../infrastructure/util/CamelCaseUtils.java | 54 ++++++++++++++++++ .../resources/mapper/UserDriverMapper.xml | 12 ++-- .../config/CamelCaseMapPlugin.java | 57 +++++++++++++++++++ .../infrastructure/util/CamelCaseUtils.java | 54 ++++++++++++++++++ .../verification/VerificationMapper.xml | 1 - .../domain/config/CamelCaseMapPlugin.java | 57 +++++++++++++++++++ .../product/domain/util/CamelCaseUtils.java | 54 ++++++++++++++++++ .../main/resources/mapper/menu/MenuMapper.xml | 4 +- .../config/CamelCaseMapPlugin.java | 57 +++++++++++++++++++ .../infrastructure/utils/CamelCaseUtils.java | 54 ++++++++++++++++++ .../config/CamelCaseMapPlugin.java | 57 +++++++++++++++++++ .../infrastructure/util/CamelCaseUtils.java | 54 ++++++++++++++++++ 15 files changed, 674 insertions(+), 9 deletions(-) create mode 100644 mhd-modules/mhd-system/src/main/java/com/mhd/basic/infrastructure/config/CamelCaseMapPlugin.java create mode 100644 mhd-modules/mhd-system/src/main/java/com/mhd/basic/infrastructure/util/CamelCaseUtils.java create mode 100644 mhd-user-center/src/main/java/com/mhd/user/infrastructure/config/CamelCaseMapPlugin.java create mode 100644 mhd-user-center/src/main/java/com/mhd/user/infrastructure/util/CamelCaseUtils.java create mode 100644 mhd_finance/src/main/java/com/linke/finance/infrastructure/config/CamelCaseMapPlugin.java create mode 100644 mhd_finance/src/main/java/com/linke/finance/infrastructure/util/CamelCaseUtils.java create mode 100644 mhd_product/src/main/java/com/linke/product/domain/config/CamelCaseMapPlugin.java create mode 100644 mhd_product/src/main/java/com/linke/product/domain/util/CamelCaseUtils.java create mode 100644 mhd_thrid_party/src/main/java/com/linke/thirdParty/infrastructure/config/CamelCaseMapPlugin.java create mode 100644 mhd_thrid_party/src/main/java/com/linke/thirdParty/infrastructure/utils/CamelCaseUtils.java create mode 100644 mhd_transport/src/main/java/com/linke/transport/infrastructure/config/CamelCaseMapPlugin.java create mode 100644 mhd_transport/src/main/java/com/linke/transport/infrastructure/util/CamelCaseUtils.java diff --git a/mhd-modules/mhd-system/src/main/java/com/mhd/basic/infrastructure/config/CamelCaseMapPlugin.java b/mhd-modules/mhd-system/src/main/java/com/mhd/basic/infrastructure/config/CamelCaseMapPlugin.java new file mode 100644 index 000000000..ba41cf91d --- /dev/null +++ b/mhd-modules/mhd-system/src/main/java/com/mhd/basic/infrastructure/config/CamelCaseMapPlugin.java @@ -0,0 +1,57 @@ +package com.mhd.basic.infrastructure.config; + +import com.mhd.basic.infrastructure.util.CamelCaseUtils; +import org.apache.ibatis.executor.resultset.ResultSetHandler; +import org.apache.ibatis.plugin.*; +import org.springframework.stereotype.Component; + +import java.sql.Statement; +import java.util.List; +import java.util.Map; +import java.util.Properties; + +/** + * MyBatis插件:拦截Map类型结果,转换Key为驼峰 + */ +@Intercepts({@Signature( + type = ResultSetHandler.class, + method = "handleResultSets", + args = {Statement.class} +)}) +@Component +public class CamelCaseMapPlugin implements Interceptor { + + @Override + public Object intercept(Invocation invocation) throws Throwable { + // 执行原方法获取结果 + Object result = invocation.proceed(); + // 处理结果:如果是List且元素是Map,转换Key + if (result instanceof List) { + List> list = (List>) result; + for (int i = 0; i < list.size(); i++) { + Object item = list.get(i); + if (item instanceof Map) { + @SuppressWarnings("unchecked") + Map map = (Map) item; + // 转换Key为驼峰 + list.set(i, CamelCaseUtils.convertMapKeyToCamel(map)); + } + } + } + return result; + } + + @Override + public Object plugin(Object target) { + // 只拦截ResultSetHandler类型 + if (target instanceof ResultSetHandler) { + return Plugin.wrap(target, this); + } + return target; + } + + @Override + public void setProperties(Properties properties) { + // 可配置参数,此处无需处理 + } +} \ No newline at end of file diff --git a/mhd-modules/mhd-system/src/main/java/com/mhd/basic/infrastructure/util/CamelCaseUtils.java b/mhd-modules/mhd-system/src/main/java/com/mhd/basic/infrastructure/util/CamelCaseUtils.java new file mode 100644 index 000000000..63f799bad --- /dev/null +++ b/mhd-modules/mhd-system/src/main/java/com/mhd/basic/infrastructure/util/CamelCaseUtils.java @@ -0,0 +1,54 @@ +package com.mhd.basic.infrastructure.util; + +import org.apache.commons.lang3.StringUtils; + +import java.util.HashMap; +import java.util.Map; + +/** + * 字符串工具类扩展:下划线/大写转驼峰 + */ +public class CamelCaseUtils { + + /** + * 大写下划线转驼峰(如:USER_NAME → userName) + */ + public static String toCamelCase(String str) { + if (StringUtils.isBlank(str)) { + return str; + } + // 先转小写,再处理下划线 + str = str.toLowerCase(); + StringBuilder sb = new StringBuilder(); + boolean nextUpperCase = false; + for (int i = 0; i < str.length(); i++) { + char c = str.charAt(i); + if (c == '_') { + nextUpperCase = true; + } else { + if (nextUpperCase) { + sb.append(Character.toUpperCase(c)); + nextUpperCase = false; + } else { + sb.append(c); + } + } + } + return sb.toString(); + } + + /** + * 批量转换Map的Key为驼峰 + */ + public static Map convertMapKeyToCamel(Map map) { + if (map == null || map.isEmpty()) { + return map; + } + Map newMap = new HashMap<>(map.size()); + for (Map.Entry entry : map.entrySet()) { + String camelKey = toCamelCase(entry.getKey()); + newMap.put(camelKey, entry.getValue()); + } + return newMap; + } +} \ No newline at end of file diff --git a/mhd-user-center/src/main/java/com/mhd/user/infrastructure/config/CamelCaseMapPlugin.java b/mhd-user-center/src/main/java/com/mhd/user/infrastructure/config/CamelCaseMapPlugin.java new file mode 100644 index 000000000..fd6b3fc2c --- /dev/null +++ b/mhd-user-center/src/main/java/com/mhd/user/infrastructure/config/CamelCaseMapPlugin.java @@ -0,0 +1,57 @@ +package com.mhd.user.infrastructure.config; + +import com.mhd.user.infrastructure.util.CamelCaseUtils; +import org.apache.ibatis.executor.resultset.ResultSetHandler; +import org.apache.ibatis.plugin.*; +import org.springframework.stereotype.Component; + +import java.sql.Statement; +import java.util.List; +import java.util.Map; +import java.util.Properties; + +/** + * MyBatis插件:拦截Map类型结果,转换Key为驼峰 + */ +@Intercepts({@Signature( + type = ResultSetHandler.class, + method = "handleResultSets", + args = {Statement.class} +)}) +@Component +public class CamelCaseMapPlugin implements Interceptor { + + @Override + public Object intercept(Invocation invocation) throws Throwable { + // 执行原方法获取结果 + Object result = invocation.proceed(); + // 处理结果:如果是List且元素是Map,转换Key + if (result instanceof List) { + List> list = (List>) result; + for (int i = 0; i < list.size(); i++) { + Object item = list.get(i); + if (item instanceof Map) { + @SuppressWarnings("unchecked") + Map map = (Map) item; + // 转换Key为驼峰 + list.set(i, CamelCaseUtils.convertMapKeyToCamel(map)); + } + } + } + return result; + } + + @Override + public Object plugin(Object target) { + // 只拦截ResultSetHandler类型 + if (target instanceof ResultSetHandler) { + return Plugin.wrap(target, this); + } + return target; + } + + @Override + public void setProperties(Properties properties) { + // 可配置参数,此处无需处理 + } +} \ No newline at end of file diff --git a/mhd-user-center/src/main/java/com/mhd/user/infrastructure/util/CamelCaseUtils.java b/mhd-user-center/src/main/java/com/mhd/user/infrastructure/util/CamelCaseUtils.java new file mode 100644 index 000000000..e10b3ad75 --- /dev/null +++ b/mhd-user-center/src/main/java/com/mhd/user/infrastructure/util/CamelCaseUtils.java @@ -0,0 +1,54 @@ +package com.mhd.user.infrastructure.util; + +import org.apache.commons.lang3.StringUtils; + +import java.util.HashMap; +import java.util.Map; + +/** + * 字符串工具类扩展:下划线/大写转驼峰 + */ +public class CamelCaseUtils { + + /** + * 大写下划线转驼峰(如:USER_NAME → userName) + */ + public static String toCamelCase(String str) { + if (StringUtils.isBlank(str)) { + return str; + } + // 先转小写,再处理下划线 + str = str.toLowerCase(); + StringBuilder sb = new StringBuilder(); + boolean nextUpperCase = false; + for (int i = 0; i < str.length(); i++) { + char c = str.charAt(i); + if (c == '_') { + nextUpperCase = true; + } else { + if (nextUpperCase) { + sb.append(Character.toUpperCase(c)); + nextUpperCase = false; + } else { + sb.append(c); + } + } + } + return sb.toString(); + } + + /** + * 批量转换Map的Key为驼峰 + */ + public static Map convertMapKeyToCamel(Map map) { + if (map == null || map.isEmpty()) { + return map; + } + Map newMap = new HashMap<>(map.size()); + for (Map.Entry entry : map.entrySet()) { + String camelKey = toCamelCase(entry.getKey()); + newMap.put(camelKey, entry.getValue()); + } + return newMap; + } +} \ No newline at end of file diff --git a/mhd-user-center/src/main/resources/mapper/UserDriverMapper.xml b/mhd-user-center/src/main/resources/mapper/UserDriverMapper.xml index 3dbef0abf..80e2c2aea 100644 --- a/mhd-user-center/src/main/resources/mapper/UserDriverMapper.xml +++ b/mhd-user-center/src/main/resources/mapper/UserDriverMapper.xml @@ -107,7 +107,7 @@ a.driver_license_back_url, a.driver_license_number, a.driver_license_long, - a.driver_work_license_authority_code, + cast(a.driver_work_license_authority_code as BIGINT) as driver_work_license_authority_code, a.driver_work_license_authority_name, a.driver_work_license_number, a.driver_work_license_type_id, @@ -189,7 +189,7 @@ WM_CONCAT(DISTINCT dvb.vehicle_license_plate_number ) AS vehicleLicensePlateNumber, WM_CONCAT(DISTINCT m.motorcade_name ) AS driverTeamName FROM - "user" b + "USER" b LEFT JOIN ( SELECT user_id, @@ -325,7 +325,7 @@ FROM user_driver a LEFT JOIN - "user" u + "USER" u ON u.user_id = a.user_id AND u.del_flag = 1 WHERE a.del_flag = 1 @@ -769,7 +769,7 @@ FROM user_driver d LEFT JOIN - "user" u + "USER" u ON d.user_id = u.user_id LEFT JOIN driver_vehicle_bind b @@ -1105,7 +1105,7 @@ ude.driver_enterprise_fill, ud.driver_captain_fill FROM - "user" b + "USER" b LEFT JOIN user_driver a ON a.user_id = b.user_id LEFT JOIN user_driver_enterprise ude ON b.user_id = ude.user_id AND ude.driver_type = 1 @@ -1137,7 +1137,7 @@ a.user_id, a.create_by FROM - "user" u + "USER" u LEFT JOIN user_driver a ON u.user_id = a.user_id LEFT JOIN motorcade_driver md ON a.user_id = md.user_id LEFT JOIN motorcade m ON m.motorcade_id = md.motorcade_id diff --git a/mhd_finance/src/main/java/com/linke/finance/infrastructure/config/CamelCaseMapPlugin.java b/mhd_finance/src/main/java/com/linke/finance/infrastructure/config/CamelCaseMapPlugin.java new file mode 100644 index 000000000..524382f43 --- /dev/null +++ b/mhd_finance/src/main/java/com/linke/finance/infrastructure/config/CamelCaseMapPlugin.java @@ -0,0 +1,57 @@ +package com.linke.finance.infrastructure.config; + +import com.linke.finance.infrastructure.util.CamelCaseUtils; +import org.apache.ibatis.executor.resultset.ResultSetHandler; +import org.apache.ibatis.plugin.*; +import org.springframework.stereotype.Component; + +import java.sql.Statement; +import java.util.List; +import java.util.Map; +import java.util.Properties; + +/** + * MyBatis插件:拦截Map类型结果,转换Key为驼峰 + */ +@Intercepts({@Signature( + type = ResultSetHandler.class, + method = "handleResultSets", + args = {Statement.class} +)}) +@Component +public class CamelCaseMapPlugin implements Interceptor { + + @Override + public Object intercept(Invocation invocation) throws Throwable { + // 执行原方法获取结果 + Object result = invocation.proceed(); + // 处理结果:如果是List且元素是Map,转换Key + if (result instanceof List) { + List> list = (List>) result; + for (int i = 0; i < list.size(); i++) { + Object item = list.get(i); + if (item instanceof Map) { + @SuppressWarnings("unchecked") + Map map = (Map) item; + // 转换Key为驼峰 + list.set(i, CamelCaseUtils.convertMapKeyToCamel(map)); + } + } + } + return result; + } + + @Override + public Object plugin(Object target) { + // 只拦截ResultSetHandler类型 + if (target instanceof ResultSetHandler) { + return Plugin.wrap(target, this); + } + return target; + } + + @Override + public void setProperties(Properties properties) { + // 可配置参数,此处无需处理 + } +} \ No newline at end of file diff --git a/mhd_finance/src/main/java/com/linke/finance/infrastructure/util/CamelCaseUtils.java b/mhd_finance/src/main/java/com/linke/finance/infrastructure/util/CamelCaseUtils.java new file mode 100644 index 000000000..c344f2535 --- /dev/null +++ b/mhd_finance/src/main/java/com/linke/finance/infrastructure/util/CamelCaseUtils.java @@ -0,0 +1,54 @@ +package com.linke.finance.infrastructure.util; + +import org.apache.commons.lang3.StringUtils; + +import java.util.HashMap; +import java.util.Map; + +/** + * 字符串工具类扩展:下划线/大写转驼峰 + */ +public class CamelCaseUtils { + + /** + * 大写下划线转驼峰(如:USER_NAME → userName) + */ + public static String toCamelCase(String str) { + if (StringUtils.isBlank(str)) { + return str; + } + // 先转小写,再处理下划线 + str = str.toLowerCase(); + StringBuilder sb = new StringBuilder(); + boolean nextUpperCase = false; + for (int i = 0; i < str.length(); i++) { + char c = str.charAt(i); + if (c == '_') { + nextUpperCase = true; + } else { + if (nextUpperCase) { + sb.append(Character.toUpperCase(c)); + nextUpperCase = false; + } else { + sb.append(c); + } + } + } + return sb.toString(); + } + + /** + * 批量转换Map的Key为驼峰 + */ + public static Map convertMapKeyToCamel(Map map) { + if (map == null || map.isEmpty()) { + return map; + } + Map newMap = new HashMap<>(map.size()); + for (Map.Entry entry : map.entrySet()) { + String camelKey = toCamelCase(entry.getKey()); + newMap.put(camelKey, entry.getValue()); + } + return newMap; + } +} \ No newline at end of file diff --git a/mhd_finance/src/main/resources/mapper/verification/VerificationMapper.xml b/mhd_finance/src/main/resources/mapper/verification/VerificationMapper.xml index fcee7e895..62b204034 100644 --- a/mhd_finance/src/main/resources/mapper/verification/VerificationMapper.xml +++ b/mhd_finance/src/main/resources/mapper/verification/VerificationMapper.xml @@ -1110,7 +1110,6 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" a.verification_money, a.first_subject_name, a.second_subject_name, - a.verification_money, a.create_by_name, b.create_by_name record_create_by_name, a.verification_status diff --git a/mhd_product/src/main/java/com/linke/product/domain/config/CamelCaseMapPlugin.java b/mhd_product/src/main/java/com/linke/product/domain/config/CamelCaseMapPlugin.java new file mode 100644 index 000000000..c00d8d9f1 --- /dev/null +++ b/mhd_product/src/main/java/com/linke/product/domain/config/CamelCaseMapPlugin.java @@ -0,0 +1,57 @@ +package com.linke.product.domain.config; + +import com.linke.product.domain.util.CamelCaseUtils; +import org.apache.ibatis.executor.resultset.ResultSetHandler; +import org.apache.ibatis.plugin.*; +import org.springframework.stereotype.Component; + +import java.sql.Statement; +import java.util.List; +import java.util.Map; +import java.util.Properties; + +/** + * MyBatis插件:拦截Map类型结果,转换Key为驼峰 + */ +@Intercepts({@Signature( + type = ResultSetHandler.class, + method = "handleResultSets", + args = {Statement.class} +)}) +@Component +public class CamelCaseMapPlugin implements Interceptor { + + @Override + public Object intercept(Invocation invocation) throws Throwable { + // 执行原方法获取结果 + Object result = invocation.proceed(); + // 处理结果:如果是List且元素是Map,转换Key + if (result instanceof List) { + List> list = (List>) result; + for (int i = 0; i < list.size(); i++) { + Object item = list.get(i); + if (item instanceof Map) { + @SuppressWarnings("unchecked") + Map map = (Map) item; + // 转换Key为驼峰 + list.set(i, CamelCaseUtils.convertMapKeyToCamel(map)); + } + } + } + return result; + } + + @Override + public Object plugin(Object target) { + // 只拦截ResultSetHandler类型 + if (target instanceof ResultSetHandler) { + return Plugin.wrap(target, this); + } + return target; + } + + @Override + public void setProperties(Properties properties) { + // 可配置参数,此处无需处理 + } +} \ No newline at end of file diff --git a/mhd_product/src/main/java/com/linke/product/domain/util/CamelCaseUtils.java b/mhd_product/src/main/java/com/linke/product/domain/util/CamelCaseUtils.java new file mode 100644 index 000000000..64768e1fe --- /dev/null +++ b/mhd_product/src/main/java/com/linke/product/domain/util/CamelCaseUtils.java @@ -0,0 +1,54 @@ +package com.linke.product.domain.util; + +import org.apache.commons.lang3.StringUtils; + +import java.util.HashMap; +import java.util.Map; + +/** + * 字符串工具类扩展:下划线/大写转驼峰 + */ +public class CamelCaseUtils { + + /** + * 大写下划线转驼峰(如:USER_NAME → userName) + */ + public static String toCamelCase(String str) { + if (StringUtils.isBlank(str)) { + return str; + } + // 先转小写,再处理下划线 + str = str.toLowerCase(); + StringBuilder sb = new StringBuilder(); + boolean nextUpperCase = false; + for (int i = 0; i < str.length(); i++) { + char c = str.charAt(i); + if (c == '_') { + nextUpperCase = true; + } else { + if (nextUpperCase) { + sb.append(Character.toUpperCase(c)); + nextUpperCase = false; + } else { + sb.append(c); + } + } + } + return sb.toString(); + } + + /** + * 批量转换Map的Key为驼峰 + */ + public static Map convertMapKeyToCamel(Map map) { + if (map == null || map.isEmpty()) { + return map; + } + Map newMap = new HashMap<>(map.size()); + for (Map.Entry entry : map.entrySet()) { + String camelKey = toCamelCase(entry.getKey()); + newMap.put(camelKey, entry.getValue()); + } + return newMap; + } +} \ No newline at end of file diff --git a/mhd_product/src/main/resources/mapper/menu/MenuMapper.xml b/mhd_product/src/main/resources/mapper/menu/MenuMapper.xml index a41bf6c67..2e49952ab 100644 --- a/mhd_product/src/main/resources/mapper/menu/MenuMapper.xml +++ b/mhd_product/src/main/resources/mapper/menu/MenuMapper.xml @@ -273,8 +273,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"