From 30dc0e976eb8f23b7c5049040a5de06ee288123e Mon Sep 17 00:00:00 2001 From: Jack <46790855@qq.com> Date: Tue, 29 Jul 2025 19:54:05 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9B=B4=E6=94=B9=20mysql=20=E6=95=B0=E6=8D=AE?= =?UTF-8?q?=E5=BA=93=E4=B8=BA=20=E5=8E=9F=E7=94=9F=E6=95=B0=E6=8D=AE?= =?UTF-8?q?=E5=BA=93=EF=BC=8C=E6=94=BE=E5=BC=83=20docker=20=E5=AE=B9?= =?UTF-8?q?=E5=99=A8=E6=95=B0=E6=8D=AE=E5=BA=93?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.MD | 4 +-- .../listener/DealUserAnalyticsListener.java | 9 +++++- .../listener/DealUserInfoListener.java | 9 +++++- .../account/listener/ExperienceListener.java | 9 +++++- .../listener/UpgradeUserLevelListener.java | 9 +++++- .../suisung/mall/shop/components/IpUtil.java | 31 +++++++++---------- .../order/listener/DelayMessageReceiver.java | 9 +----- .../shop/order/listener/MessageListener.java | 8 +++++ .../order/listener/OrderPayedListener.java | 3 +- .../service/impl/ShopPageBaseServiceImpl.java | 23 +++++++++----- pom.xml | 4 +-- 11 files changed, 77 insertions(+), 41 deletions(-) diff --git a/README.MD b/README.MD index 07907d71..47391a02 100644 --- a/README.MD +++ b/README.MD @@ -43,10 +43,10 @@ cd /data/sh ```shell 进入 docker 控制台 cd /var/lib/mysql -mysqldump -u root -p mall_prod | gzip > mall_prod_20250723.sql.gz +mysqldump -u root -p mall_prod | gzip > mall_prod_20250729.sql.gz 在宿主机找到: -/data/mysql/data/mall_prod_20250630.sql.gz +/data/mysql/data/mall_prod_20250729.sql.gz ``` 清除 docker 日志 diff --git a/mall-account/src/main/java/com/suisung/mall/account/listener/DealUserAnalyticsListener.java b/mall-account/src/main/java/com/suisung/mall/account/listener/DealUserAnalyticsListener.java index a8f99fd8..062bca31 100644 --- a/mall-account/src/main/java/com/suisung/mall/account/listener/DealUserAnalyticsListener.java +++ b/mall-account/src/main/java/com/suisung/mall/account/listener/DealUserAnalyticsListener.java @@ -22,10 +22,17 @@ public class DealUserAnalyticsListener { @Autowired private AccountUserAnalyticsService accountUserAnalyticsService; +// @RabbitHandler +// public void listener(byte[] data, Channel channel, Message message) throws IOException, InterruptedException { +// // 将byte[]转换为String,然后调用现有的处理逻辑 +// String dataStr = new String(data, StandardCharsets.UTF_8); +// listener(dataStr, channel, message); +// } + @RabbitHandler public void listener(String data, Channel channel, Message message) throws IOException, InterruptedException { AccountUserAnalytics accountUserAnalytics = JSONUtil.toBean(data, AccountUserAnalytics.class); - String messageId = message.getMessageProperties().getMessageId(); + // String messageId = message.getMessageProperties().getMessageId(); try { boolean flag = accountUserAnalyticsService.saveOrUpdate(accountUserAnalytics); diff --git a/mall-account/src/main/java/com/suisung/mall/account/listener/DealUserInfoListener.java b/mall-account/src/main/java/com/suisung/mall/account/listener/DealUserInfoListener.java index 09629721..fa7d4358 100644 --- a/mall-account/src/main/java/com/suisung/mall/account/listener/DealUserInfoListener.java +++ b/mall-account/src/main/java/com/suisung/mall/account/listener/DealUserInfoListener.java @@ -22,10 +22,17 @@ public class DealUserInfoListener { @Autowired private AccountUserInfoService accountUserInfoService; +// @RabbitHandler +// public void listener(byte[] data, Channel channel, Message message) throws IOException, InterruptedException { +// // 将byte[]转换为String,然后调用现有的处理逻辑 +// String dataStr = new String(data, StandardCharsets.UTF_8); +// listener(dataStr, channel, message); +// } + @RabbitHandler public void listener(String data, Channel channel, Message message) throws IOException, InterruptedException { AccountUserInfo accountUserInfo = JSONUtil.toBean(data, AccountUserInfo.class); - String messageId = message.getMessageProperties().getMessageId(); + // String messageId = message.getMessageProperties().getMessageId(); try { boolean flag = accountUserInfoService.saveOrUpdate(accountUserInfo); diff --git a/mall-account/src/main/java/com/suisung/mall/account/listener/ExperienceListener.java b/mall-account/src/main/java/com/suisung/mall/account/listener/ExperienceListener.java index 18bb94a3..efee4275 100644 --- a/mall-account/src/main/java/com/suisung/mall/account/listener/ExperienceListener.java +++ b/mall-account/src/main/java/com/suisung/mall/account/listener/ExperienceListener.java @@ -22,10 +22,17 @@ public class ExperienceListener { @Autowired private AccountUserInfoService accountUserInfoService; +// @RabbitHandler +// public void listener(byte[] data, Channel channel, Message message) throws IOException, InterruptedException { +// // 将byte[]转换为String,然后调用现有的处理逻辑 +// String dataStr = new String(data, StandardCharsets.UTF_8); +// listener(dataStr, channel, message); +// } + @RabbitHandler public void listener(String data, Channel channel, Message message) throws IOException, InterruptedException { ExperienceTO experienceTO = JSONUtil.toBean(data, ExperienceTO.class); - String messageId = message.getMessageProperties().getMessageId(); + // String messageId = message.getMessageProperties().getMessageId(); try { boolean flag = accountUserInfoService.experience(experienceTO.getUser_id(), experienceTO.getExp(), experienceTO.getExp_type_id(), experienceTO.getDesc()); diff --git a/mall-account/src/main/java/com/suisung/mall/account/listener/UpgradeUserLevelListener.java b/mall-account/src/main/java/com/suisung/mall/account/listener/UpgradeUserLevelListener.java index 4e8429db..fcead46e 100644 --- a/mall-account/src/main/java/com/suisung/mall/account/listener/UpgradeUserLevelListener.java +++ b/mall-account/src/main/java/com/suisung/mall/account/listener/UpgradeUserLevelListener.java @@ -22,10 +22,17 @@ public class UpgradeUserLevelListener { @Autowired private AccountUserInfoService accountUserInfoService; +// @RabbitHandler +// public void listener(byte[] data, Channel channel, Message message) throws IOException, InterruptedException { +// // 将byte[]转换为String,然后调用现有的处理逻辑 +// String dataStr = new String(data, StandardCharsets.UTF_8); +// listener(dataStr, channel, message); +// } + @RabbitHandler public void listener(String data, Channel channel, Message message) throws IOException, InterruptedException { UserLevelTO userLevelTO = JSONUtil.toBean(data, UserLevelTO.class); - String messageId = message.getMessageProperties().getMessageId(); +// String messageId = message.getMessageProperties().getMessageId(); try { boolean flag = accountUserInfoService.checkUpdateUserLevel(userLevelTO.getUser_id(), userLevelTO.getUser_exp_total(), userLevelTO.getUser_fans_total(), userLevelTO.getUser_spend_total(), 0, 0, 0); diff --git a/mall-shop/src/main/java/com/suisung/mall/shop/components/IpUtil.java b/mall-shop/src/main/java/com/suisung/mall/shop/components/IpUtil.java index f1f90a65..985273c3 100644 --- a/mall-shop/src/main/java/com/suisung/mall/shop/components/IpUtil.java +++ b/mall-shop/src/main/java/com/suisung/mall/shop/components/IpUtil.java @@ -7,8 +7,8 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.boot.ApplicationArguments; import org.springframework.boot.ApplicationRunner; -import org.springframework.stereotype.Component; import org.springframework.core.io.ClassPathResource; +import org.springframework.stereotype.Component; import java.io.IOException; import java.io.InputStream; @@ -89,10 +89,14 @@ public class IpUtil implements ApplicationRunner { try { List split = Arrays.asList(ss.split("\\|")); - if (split.size() >= 4) { - districtVo.setCountry(split.get(0)); // 设置国家 - districtVo.setProvince(split.get(2)); // 设置省份 - districtVo.setCity(split.get(3)); // 设置城市 + String[] parts = ss.split("\\|"); + + // 检查分割后的数组长度,避免数组越界 + if (parts.length >= 4) { + // 对每个部分进行非空检查,防止空指针异常 + districtVo.setCountry(parts[0] != null ? parts[0] : ""); // 设置国家 + districtVo.setProvince(parts[2] != null ? parts[2] : ""); // 设置省份 + districtVo.setCity(parts[3] != null ? parts[3] : ""); // 设置城市 } else { log.debug("IP:{} 解析结果格式不符合要求,原始数据: {}", ip, ss); return null; @@ -116,13 +120,13 @@ public class IpUtil implements ApplicationRunner { * @throws Exception 加载过程中可能抛出的异常 */ @Override - public void run(ApplicationArguments args) throws Exception { + public void run(ApplicationArguments args) { try { log.info("开始加载 ip2region 数据文件"); ClassPathResource resource = new ClassPathResource("static/ip/ip2region.xdb"); InputStream inputStream = resource.getInputStream(); - + // 使用 ByteArrayOutputStream 替代 available() 方法来正确读取文件内容 java.io.ByteArrayOutputStream buffer = new java.io.ByteArrayOutputStream(); int nRead; @@ -132,18 +136,13 @@ public class IpUtil implements ApplicationRunner { } buffer.flush(); byte[] bytes = buffer.toByteArray(); - + inputStream.close(); searcher = Searcher.newWithBuffer(bytes); log.info("成功加载 ip2region 数据文件。"); - - // 测试本地IP地址解析 - try { - String testResult = searcher.search("127.0.0.1"); - log.info("测试本地IP解析结果: {}", testResult); - } catch (Exception e) { - log.warn("本地IP测试解析失败: {}", e.getMessage()); - } + + } catch (ArrayIndexOutOfBoundsException e) { + log.error("解析IP地址的地区信息时发生数组越界异常,原始数据: {}", e); } catch (IOException e) { log.error("加载 ip2region 失败。", e); } catch (Exception e) { diff --git a/mall-shop/src/main/java/com/suisung/mall/shop/order/listener/DelayMessageReceiver.java b/mall-shop/src/main/java/com/suisung/mall/shop/order/listener/DelayMessageReceiver.java index 71e39a00..417952b6 100644 --- a/mall-shop/src/main/java/com/suisung/mall/shop/order/listener/DelayMessageReceiver.java +++ b/mall-shop/src/main/java/com/suisung/mall/shop/order/listener/DelayMessageReceiver.java @@ -41,14 +41,7 @@ public class DelayMessageReceiver { @Lazy @Resource private PushMessageService pushMessageService; - - @RabbitListener(queues = MqConstant.DEAD_LETTER_QUEUE_NAME) -// public void handleExpiredMessage(byte[] data, Channel channel, Message message) { -// // 将byte[]转换为String,然后调用现有的处理逻辑 -// String dataStr = new String(data, StandardCharsets.UTF_8); -// handleExpiredMessage(dataStr, channel, message); -// } - + /** * 监听死信队列,处理过期的延迟消息 * diff --git a/mall-shop/src/main/java/com/suisung/mall/shop/order/listener/MessageListener.java b/mall-shop/src/main/java/com/suisung/mall/shop/order/listener/MessageListener.java index 02ab3ad9..55a5a895 100644 --- a/mall-shop/src/main/java/com/suisung/mall/shop/order/listener/MessageListener.java +++ b/mall-shop/src/main/java/com/suisung/mall/shop/order/listener/MessageListener.java @@ -13,6 +13,7 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import java.io.IOException; +import java.nio.charset.StandardCharsets; @Service @Slf4j @@ -22,6 +23,13 @@ public class MessageListener { @Autowired private MessageService messageService; + @RabbitHandler + public void listener(byte[] data, Channel channel, Message message) { + // 将byte[]转换为String,然后调用现有的处理逻辑 + String dataStr = new String(data, StandardCharsets.UTF_8); + listener(dataStr, channel, message); + } + @RabbitHandler public void listener(String data, Channel channel, Message message) { MsgTO msgTO = JSONUtil.toBean(data, MsgTO.class); diff --git a/mall-shop/src/main/java/com/suisung/mall/shop/order/listener/OrderPayedListener.java b/mall-shop/src/main/java/com/suisung/mall/shop/order/listener/OrderPayedListener.java index 83f2365a..25f8af62 100644 --- a/mall-shop/src/main/java/com/suisung/mall/shop/order/listener/OrderPayedListener.java +++ b/mall-shop/src/main/java/com/suisung/mall/shop/order/listener/OrderPayedListener.java @@ -66,8 +66,7 @@ public class OrderPayedListener { @RabbitHandler public void listener(String data, Channel channel, Message message) throws IOException, InterruptedException { - String messageId = message.getMessageProperties().getMessageId(); - + // String messageId = message.getMessageProperties().getMessageId(); List order_id_row = Convert.toList(String.class, data); try { diff --git a/mall-shop/src/main/java/com/suisung/mall/shop/page/service/impl/ShopPageBaseServiceImpl.java b/mall-shop/src/main/java/com/suisung/mall/shop/page/service/impl/ShopPageBaseServiceImpl.java index 253b6ea7..833e2b93 100644 --- a/mall-shop/src/main/java/com/suisung/mall/shop/page/service/impl/ShopPageBaseServiceImpl.java +++ b/mall-shop/src/main/java/com/suisung/mall/shop/page/service/impl/ShopPageBaseServiceImpl.java @@ -443,9 +443,9 @@ public class ShopPageBaseServiceImpl extends BaseServiceImpl item_id_104 = new ArrayList<>(); for (Object datum : data) { - JSONObject jsonObject = cn.hutool.json.JSONUtil.parseObj(datum); + JSONObject jsonObject = JSONUtil.parseObj(datum); List ids = Convert.toList(jsonObject.get("ids")); item_id_104.addAll(ids); } List item_ids = new ArrayList<>(); - if(CollUtil.isNotEmpty(item_id_104)) { + if (CollUtil.isNotEmpty(item_id_104)) { List item_ids_key = shopProductItemService.findKey(new QueryWrapper().in("item_id", item_id_104).eq("item_enable", 1001)); if (CollUtil.isNotEmpty(item_ids_key)) { item_ids = Convert.toList(Long.class, item_ids_key); } } +// List item_ids = new ArrayList<>(); +// QueryWrapper shopProductItemQueryWrapper = new QueryWrapper<>(); +// itemEQueryWrapper.in("item_id", item_id_104); +// itemEQueryWrapper.eq("item_enable", 1001); +// List item_ids_key = shopProductItemService.findKey(shopProductItemQueryWrapper); +// if (CollUtil.isNotEmpty(item_ids_key)) { +// item_ids = Convert.toList(Long.class, item_ids_key); +// } + JSONArray data1 = new JSONArray(); for (Object datum : data) { JSONObject jsonObject = JSONUtil.parseObj(datum); diff --git a/pom.xml b/pom.xml index aab053aa..2c4ed507 100644 --- a/pom.xml +++ b/pom.xml @@ -478,10 +478,10 @@ 172.16.0.11:8718 172.16.0.11 - 3306 + 13306 mall_prod webprod - v9W2ER6KG9HVtH1mjAytRvdr + J1XivNvAcR21}pA6Cysm.E29 com.mysql.cj.jdbc.Driver