From 86251b491634d20f4ef0aaac1aa50acec5dfcfd5 Mon Sep 17 00:00:00 2001 From: huangqizhen Date: Sat, 28 Dec 2024 17:41:58 +0800 Subject: [PATCH] =?UTF-8?q?=E5=90=8E=E7=AB=AF=E6=95=B4=E5=90=88=E6=A8=A1?= =?UTF-8?q?=E5=9D=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/com/example/demo/Util/JWTUtil.java | 2 +- .../com/example/demo/controller/KafkaConsumer.java | 25 +++ .../demo/controller/RechargeController.java | 42 +++- .../com/example/demo/domain/entity/Recharge.java | 8 +- .../com/example/demo/domain/vo/ConsumeDetail.java | 1 + .../com/example/demo/mapper/ConsumeMapper.java | 8 +- .../java/com/example/demo/mapper/DetailMapper.java | 4 +- .../com/example/demo/mapper/RechargeMapper.java | 14 +- .../com/example/demo/security/TokenFilter.java | 242 ++++++++++----------- .../demo/serviceImpl/RechargeServiceImpl.java | 5 +- src/main/resources/application.yml | 1 + 11 files changed, 206 insertions(+), 146 deletions(-) diff --git a/src/main/java/com/example/demo/Util/JWTUtil.java b/src/main/java/com/example/demo/Util/JWTUtil.java index 7fb5671..f68a974 100644 --- a/src/main/java/com/example/demo/Util/JWTUtil.java +++ b/src/main/java/com/example/demo/Util/JWTUtil.java @@ -138,7 +138,7 @@ public class JWTUtil { */ public static Claims parseJWT(String jwt) throws Exception { SecretKey secretKey = generalKey(); - System.out.println(jwt+"-----------------------++++++++++++++++++++++-"); + System.out.println(jwt); return Jwts.parser() .setSigningKey(secretKey) .parseClaimsJws(jwt) diff --git a/src/main/java/com/example/demo/controller/KafkaConsumer.java b/src/main/java/com/example/demo/controller/KafkaConsumer.java index aabb6ba..373a98a 100644 --- a/src/main/java/com/example/demo/controller/KafkaConsumer.java +++ b/src/main/java/com/example/demo/controller/KafkaConsumer.java @@ -5,12 +5,16 @@ import com.example.demo.domain.entity.DetailY; import com.example.demo.domain.entity.Recharge; import com.example.demo.serviceImpl.ConsumeServiceImpl; import com.example.demo.sevice.RechargeService; +import com.fasterxml.jackson.core.type.TypeReference; import com.fasterxml.jackson.databind.ObjectMapper; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.kafka.annotation.KafkaListener; import org.springframework.stereotype.Service; +import java.io.IOException; +import java.util.List; + @Service @Slf4j public class KafkaConsumer { @@ -23,6 +27,27 @@ public class KafkaConsumer { private final ObjectMapper objectMapper = new ObjectMapper(); + @KafkaListener(topics = "rechargeadd_topic") + public void listenRechargeadd(String message) { + try { + // 反序列化为List + List rechargeList = objectMapper.readValue(message, new TypeReference>() {}); + + // 遍历并处理每个充值记录 + for (Recharge recharge : rechargeList) { + processRecharge(recharge); + } + } catch (IOException e) { + // 处理反序列化异常 + e.printStackTrace(); + } + } + + private void processRecharge(Recharge recharge) { + // 具体的业务处理逻辑 + System.out.println("Processing recharge: " + recharge); + } + @KafkaListener(topics = "consume-topic", groupId = "my-group") public void listenConsume(String message) { try { diff --git a/src/main/java/com/example/demo/controller/RechargeController.java b/src/main/java/com/example/demo/controller/RechargeController.java index 3b1c697..1c808b1 100644 --- a/src/main/java/com/example/demo/controller/RechargeController.java +++ b/src/main/java/com/example/demo/controller/RechargeController.java @@ -10,10 +10,14 @@ import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.util.ObjectUtils; +import org.springframework.util.StringUtils; import org.springframework.web.bind.annotation.*; import java.util.Arrays; import java.util.List; +import java.util.Map; +import java.util.Objects; +import java.util.stream.Collectors; @RestController @RequestMapping("/recharge/recharge") @@ -23,26 +27,50 @@ import java.util.List; public class RechargeController { private final RechargeService rechargeService; - + private final ObjectMapper objectMapper; // 添加这一行 @Autowired private KafkaProducer kafkaProducer; @PostMapping("/addmore") - public Result add(@RequestBody List recharge) { + public Result add(@RequestBody Map requestBody) { try { + // 获取 token 字段 + String token = (String) requestBody.get("token"); + if (StringUtils.hasText(token)) { + // processToken(token); // 移除或注释掉这一行 + } + + // 提取并转换所有的 Recharge 对象 + List recharges = requestBody.entrySet().stream() + .filter(entry -> !entry.getKey().equals("token")) + .map(entry -> { + try { + return objectMapper.convertValue(entry.getValue(), Recharge.class); + } catch (IllegalArgumentException e) { + log.warn("Failed to convert entry: {}", entry.getKey(), e); + return null; + } + }) + .filter(Objects::nonNull) + .collect(Collectors.toList()); + + if (recharges.isEmpty()) { + return Result.error("No valid recharge data found."); + } + // 将 Recharge 对象转换为 JSON 字符串 - ObjectMapper objectMapper = new ObjectMapper(); - String rechargeJson = objectMapper.writeValueAsString(recharge); + String rechargeJson = objectMapper.writeValueAsString(recharges); // 发送消息到 Kafka 队列 - kafkaProducer.sendMessage("recharge-topic", rechargeJson); + kafkaProducer.sendMessage("rechargeadd-topic", rechargeJson); - return rechargeService.addRecharges(recharge); + return rechargeService.addRecharges(recharges); } catch (Exception e) { - log.error(Arrays.toString(e.getStackTrace())); + log.error("Error processing /addmore request", e); return Result.error(e.getMessage()); } } + @PostMapping("/add") public Result add(@RequestBody Recharge recharge) { try { diff --git a/src/main/java/com/example/demo/domain/entity/Recharge.java b/src/main/java/com/example/demo/domain/entity/Recharge.java index b3279cd..f1591ed 100644 --- a/src/main/java/com/example/demo/domain/entity/Recharge.java +++ b/src/main/java/com/example/demo/domain/entity/Recharge.java @@ -10,6 +10,7 @@ import java.util.Date; @Data @NoArgsConstructor + public class Recharge { private Integer rechargeId; private String jwcode; @@ -33,5 +34,10 @@ public class Recharge { private Date endDate; private String orderCode; private String token; -private Integer rateId; + private Integer rateId; + private Integer line; + private String showInput; + private String imageUrl; + private String rate; + } diff --git a/src/main/java/com/example/demo/domain/vo/ConsumeDetail.java b/src/main/java/com/example/demo/domain/vo/ConsumeDetail.java index f1bccf8..5200be6 100644 --- a/src/main/java/com/example/demo/domain/vo/ConsumeDetail.java +++ b/src/main/java/com/example/demo/domain/vo/ConsumeDetail.java @@ -44,5 +44,6 @@ public class ConsumeDetail { private Integer auditId; private String token; private Integer refundId; + private String productName; } diff --git a/src/main/java/com/example/demo/mapper/ConsumeMapper.java b/src/main/java/com/example/demo/mapper/ConsumeMapper.java index 5c7572a..674c534 100644 --- a/src/main/java/com/example/demo/mapper/ConsumeMapper.java +++ b/src/main/java/com/example/demo/mapper/ConsumeMapper.java @@ -52,11 +52,11 @@ public interface ConsumeMapper { "", // "`detail_flag`=1 AND update_type = '1'", "update_type=1", - "and detail.jwcode =#{jwcode}", + "and detail_y.jwcode =#{jwcode}", "and product.name = #{productName}", - "and detail.consume_platform=#{consumePlatform}", - "and detail.consume_type= #{consumeType}", - "AND detail.create_time BETWEEN #{startDate} AND #{endDate}", + "and detail_y.consume_platform=#{consumePlatform}", + "and detail_y.consume_type= #{consumeType}", + "AND detail_y.create_time BETWEEN #{startDate} AND #{endDate}", "", "ORDER BY detail_y.create_time DESC", "" diff --git a/src/main/java/com/example/demo/mapper/DetailMapper.java b/src/main/java/com/example/demo/mapper/DetailMapper.java index 9718021..76d5119 100644 --- a/src/main/java/com/example/demo/mapper/DetailMapper.java +++ b/src/main/java/com/example/demo/mapper/DetailMapper.java @@ -14,10 +14,10 @@ public interface DetailMapper { @Insert({ "insert into detail", - "(jwcode,order_code,activity_id,recharge_way,product_id,consume_platform,consume_type,refund_type,refund_goods," + + "(jwcode,order_code,activity_id,recharge_way,product_id,consume_type,refund_type,refund_goods," + "contact_id,remark,recharge_coin,free_coin,task_coin,admin_id,update_type,detail_flag,create_time,first_recharge)", "values ", - "(#{jwcode},#{orderCode},#{activityId},#{rechargeWay},#{productId},#{consumePlatform},#{consumeType},#{refundType}" + + "(#{jwcode},#{orderCode},#{activityId},#{rechargeWay},#{productId},#{consumeType},#{refundType}" + ",#{refundGoods},#{contactId},#{remark},#{rechargeCoin}" + ",#{freeCoin},#{taskCoin},#{adminId},#{updateType},1,now(),#{firstRecharge})" }) diff --git a/src/main/java/com/example/demo/mapper/RechargeMapper.java b/src/main/java/com/example/demo/mapper/RechargeMapper.java index a2551a7..ec02526 100644 --- a/src/main/java/com/example/demo/mapper/RechargeMapper.java +++ b/src/main/java/com/example/demo/mapper/RechargeMapper.java @@ -19,16 +19,20 @@ public interface RechargeMapper { @Options(useGeneratedKeys = true,keyColumn = "recharge_id",keyProperty = "rechargeId") int insert(Recharge recharge); + @Insert({ + "" }) - @Options(useGeneratedKeys = true, keyColumn = "recharge_id", keyProperty = "rechargeId") - int insertBatch(List list); + @Options(useGeneratedKeys = false) + int insertBatch(@Param("list") List list); + @Update({ "