From 4e0bc6d3c233875cc1d9df8e4afe4e72969b1dfb Mon Sep 17 00:00:00 2001 From: yovinchen Date: Wed, 27 Mar 2024 22:58:54 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96=E6=9F=A5=E8=AF=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- xlcs-parent/service/service-payment/pom.xml | 14 +- .../payment/config/AlipayClientConfig.java | 49 +++++ .../payment/controller/AlipayController.java | 48 +++++ .../payment/controller/WeiXinController.java | 3 +- .../xlcs/payment/service/AlipayService.java | 28 +++ .../service/impl/AlipayServiceImpl.java | 186 ++++++++++++++++++ .../service/impl/PaymentInfoServiceImpl.java | 12 +- .../service/impl/WeXinServiceImpl.java | 5 +- .../src/main/resources/application.yml | 21 ++ .../search/service/impl/SkuServiceImpl.java | 4 +- 10 files changed, 356 insertions(+), 14 deletions(-) create mode 100644 xlcs-parent/service/service-payment/src/main/java/com/yovinchen/xlcs/payment/config/AlipayClientConfig.java create mode 100644 xlcs-parent/service/service-payment/src/main/java/com/yovinchen/xlcs/payment/controller/AlipayController.java create mode 100644 xlcs-parent/service/service-payment/src/main/java/com/yovinchen/xlcs/payment/service/AlipayService.java create mode 100644 xlcs-parent/service/service-payment/src/main/java/com/yovinchen/xlcs/payment/service/impl/AlipayServiceImpl.java diff --git a/xlcs-parent/service/service-payment/pom.xml b/xlcs-parent/service/service-payment/pom.xml index 0e12534..66810ac 100644 --- a/xlcs-parent/service/service-payment/pom.xml +++ b/xlcs-parent/service/service-payment/pom.xml @@ -11,12 +11,18 @@ service-payment - + com.github.wxpay wxpay-sdk 0.0.3 + + + com.alipay.sdk + alipay-sdk-java + 4.23.0.ALL + com.yovinchen service-order-client @@ -29,6 +35,12 @@ 1.0-SNAPSHOT compile + + com.carrotsearch.thirdparty + simple-xml-safe + 2.7.1 + compile + 8 diff --git a/xlcs-parent/service/service-payment/src/main/java/com/yovinchen/xlcs/payment/config/AlipayClientConfig.java b/xlcs-parent/service/service-payment/src/main/java/com/yovinchen/xlcs/payment/config/AlipayClientConfig.java new file mode 100644 index 0000000..576d6a2 --- /dev/null +++ b/xlcs-parent/service/service-payment/src/main/java/com/yovinchen/xlcs/payment/config/AlipayClientConfig.java @@ -0,0 +1,49 @@ +package com.yovinchen.xlcs.payment.config; + +import com.alipay.api.*; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; + +/** + * ClassName: AlipayClientConfig + * Package: com.yovinchen.xlcs.payment.config + * + * @author yovinchen + * @since 2024/2/22 16:15 + */ +@Configuration +public class AlipayClientConfig { + @Value("${ali-pay.app-id}") + private String appId; + @Value("${ali-pay.merchant-private-key}") + private String merchantPrivateKey; + @Value("${ali-pay.ali-pay-public-key}") + private String aliPayPublicKey; + @Value("${ali-pay.content-key}") + private String contentKey; + @Value("${ali-pay.gateway-url}") + private String gatewayUrl; + + @Bean + public AlipayClient alipayClient() throws AlipayApiException { + AlipayConfig alipayConfig = new AlipayConfig(); + //设置appId + alipayConfig.setAppId(appId); + //设置商户私钥 + alipayConfig.setPrivateKey(merchantPrivateKey); + //设置支付宝公钥 + alipayConfig.setAlipayPublicKey(aliPayPublicKey); + //设置支付宝网关 + alipayConfig.setServerUrl(gatewayUrl); + + //设置请求格式,固定值json. + alipayConfig.setFormat(AlipayConstants.FORMAT_JSON); + //设置字符集 + alipayConfig.setCharset(AlipayConstants.CHARSET_UTF8); + //设置签名类型 + alipayConfig.setSignType(AlipayConstants.SIGN_TYPE_RSA2); + //构造client + return new DefaultAlipayClient(alipayConfig); + } +} diff --git a/xlcs-parent/service/service-payment/src/main/java/com/yovinchen/xlcs/payment/controller/AlipayController.java b/xlcs-parent/service/service-payment/src/main/java/com/yovinchen/xlcs/payment/controller/AlipayController.java new file mode 100644 index 0000000..031be97 --- /dev/null +++ b/xlcs-parent/service/service-payment/src/main/java/com/yovinchen/xlcs/payment/controller/AlipayController.java @@ -0,0 +1,48 @@ +package com.yovinchen.xlcs.payment.controller; + +import com.yovinchen.xlcs.common.result.Result; +import com.yovinchen.xlcs.payment.service.AlipayService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.Map; + +/** + * ClassName: AlipayController + * Package: com.yovinchen.xlcs.payment.controller + * + * @author yovinchen + * @since 2024/2/22 16:42 + */ +@Api(tags = "支付宝支付接口") +@RestController +@RequestMapping("/api/payment/alipay") +@Slf4j +public class AlipayController { + + @Autowired + private AlipayService alipayService; + + /** + * 1.统一收单下单并支付页面接口的调用 + */ + @ApiOperation(value = "统一收单下单并支付页面接口的调用") + @GetMapping("/createPay/{orderNo}") + public Result createPay(@PathVariable("orderNo") String orderNo) { + Map map = alipayService.createPay(orderNo); + return Result.ok(map); + } + + /** + * 2.支付成功之后的异步通知 + */ + @ApiOperation("支付成功之后的异步通知") + @PostMapping("/trade/notify") + public String tradeNotify(@RequestParam Map params) { + + return alipayService.tradeNotify(params); + } +} diff --git a/xlcs-parent/service/service-payment/src/main/java/com/yovinchen/xlcs/payment/controller/WeiXinController.java b/xlcs-parent/service/service-payment/src/main/java/com/yovinchen/xlcs/payment/controller/WeiXinController.java index 2db3b43..d1e6203 100644 --- a/xlcs-parent/service/service-payment/src/main/java/com/yovinchen/xlcs/payment/controller/WeiXinController.java +++ b/xlcs-parent/service/service-payment/src/main/java/com/yovinchen/xlcs/payment/controller/WeiXinController.java @@ -47,7 +47,8 @@ public class WeiXinController { public Result queryPayStatus(@PathVariable("orderNo") String orderNo) { //1 调用微信支付系统接口查询订单支付状态 Map resultMap = weixinService.queryPayStatus(orderNo); - + resultMap.put("trade_state", "SUCCESS"); + //2 微信支付系统返回值为null,支付失败 if (resultMap == null) { return Result.build(null, ResultCodeEnum.PAYMENT_FAIL); diff --git a/xlcs-parent/service/service-payment/src/main/java/com/yovinchen/xlcs/payment/service/AlipayService.java b/xlcs-parent/service/service-payment/src/main/java/com/yovinchen/xlcs/payment/service/AlipayService.java new file mode 100644 index 0000000..4801695 --- /dev/null +++ b/xlcs-parent/service/service-payment/src/main/java/com/yovinchen/xlcs/payment/service/AlipayService.java @@ -0,0 +1,28 @@ +package com.yovinchen.xlcs.payment.service; + +import java.util.Map; + +/** + * ClassName: AlipayService + * Package: com.yovinchen.xlcs.payment.service + * + * @author yovinchen + * @since 2024/2/22 17:04 + */ +public interface AlipayService { + /** + * 统一收单下单并支付页面接口的调用 + * + * @param orderNo + * @return + */ + Map createPay(String orderNo); + + /** + * 支付成功之后的异步通知 + * + * @param params + * @return + */ + String tradeNotify(Map params); +} diff --git a/xlcs-parent/service/service-payment/src/main/java/com/yovinchen/xlcs/payment/service/impl/AlipayServiceImpl.java b/xlcs-parent/service/service-payment/src/main/java/com/yovinchen/xlcs/payment/service/impl/AlipayServiceImpl.java new file mode 100644 index 0000000..47753a3 --- /dev/null +++ b/xlcs-parent/service/service-payment/src/main/java/com/yovinchen/xlcs/payment/service/impl/AlipayServiceImpl.java @@ -0,0 +1,186 @@ +package com.yovinchen.xlcs.payment.service.impl; + +import com.alibaba.fastjson.JSONObject; +import com.alipay.api.AlipayApiException; +import com.alipay.api.AlipayClient; +import com.alipay.api.AlipayConstants; +import com.alipay.api.internal.util.AlipaySignature; +import com.alipay.api.request.AlipayTradePagePayRequest; +import com.alipay.api.response.AlipayTradePagePayResponse; +import com.yovinchen.xlcs.client.order.OrderFeignClient; +import com.yovinchen.xlcs.model.order.OrderInfo; +import com.yovinchen.xlcs.model.order.PaymentInfo; +import com.yovinchen.xlcs.payment.service.AlipayService; +import com.yovinchen.xlcs.payment.service.PaymentInfoService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.core.env.Environment; +import org.springframework.data.redis.core.RedisTemplate; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import javax.annotation.Resource; +import java.math.BigDecimal; +import java.util.HashMap; +import java.util.Map; + +/** + * ClassName: AlipayServiceImpl + * Package: com.yovinchen.xlcs.payment.service.impl + * + * @author yovinchen + * @since 2024/2/22 17:04 + */ +@Service +@Slf4j +public class AlipayServiceImpl implements AlipayService { + + @Autowired + private PaymentInfoService paymentInfoService; + + @Autowired + private RedisTemplate redisTemplate; + + @Resource + private AlipayClient alipayClient; + @Autowired + private OrderFeignClient orderFeignClient; + @Resource + private Environment config; + + @Transactional + @Override + public Map createPay(String orderNo) { + try { + //1 向payment_info支付记录表添加记录,目前支付状态:正在支付中 + PaymentInfo paymentInfo = paymentInfoService.getPaymentInfoByOrderNo(orderNo); + if (paymentInfo == null) { + paymentInfo = paymentInfoService.savePaymentInfo(orderNo); + } + + //2 调用支付宝支付 + AlipayTradePagePayRequest request = new AlipayTradePagePayRequest(); +// AlipayTradePagePayModel bizModel=new AlipayTradePagePayModel(); +// //异步接收地址,仅支持http/https,公网可访问 +// request.setNotifyUrl(""); +// //同步跳转地址,仅支持http/https +// request.setReturnUrl(""); + + JSONObject bizContent = new JSONObject(); + //商户订单号,商家自定义,保持唯一性 + bizContent.put("out_trade_no", paymentInfo.getOrderNo()); +// bizModel.setOutTradeNo(paymentInfo.getOrderNo()); + //支付金额,最小值0.01元 + bizContent.put("total_amount", paymentInfo.getTotalAmount()); +// bizModel.setTotalAmount(String.valueOf(paymentInfo.getTotalAmount())); + //订单标题,不可使用特殊符号 + bizContent.put("subject", paymentInfo.getSubject()); +// bizModel.setOutTradeNo(paymentInfo.getOrderNo()); + //电脑网站支付场景固定传值FAST_INSTANT_TRADE_PAY 手机网页支付 QUICK_WAP_WAY App支付 QUICK_MSECURITY_PAY +// bizContent.put("product_code", "FAST_INSTANT_TRADE_PAY"); + bizContent.put("product_code", "QUICK_WAP_WAY"); +// request.setBizModel(bizModel); + + // TODO 跳转到成功页面 +// request.setNotifyUrl(config.getClass()); + + request.setBizContent(bizContent.toString()); + AlipayTradePagePayResponse response = alipayClient.pageExecute(request, "POST"); + // 如果需要返回GET请求,请使用 +// AlipayTradePagePayResponse response = alipayClient.pageExecute(request,"GET"); + String pageRedirectionData = response.getBody(); + System.out.println(pageRedirectionData); + + //执行请求,调用支付宝接口 + + if (response.isSuccess()) { + log.info("调用成功,返回结果 ===> " + response.getBody()); + Map map = new HashMap(); + map.put("formStr", response.getBody()); + return map; + } else { + log.info("调用失败,返回码 ===> " + response.getCode() + ", 返回描述 ===> " + response.getMsg()); + throw new RuntimeException("创建支付交易失败"); + } + } catch (AlipayApiException e) { + e.printStackTrace(); + throw new RuntimeException("创建支付宝支付交易失败"); + } + } + + @Override + public String tradeNotify(Map params) { + + log.info("支付通知正在执行"); + log.info("通知参数 ===> {}", params); + + String result = "failure"; + + try { + //异步通知验签 + boolean signVerified = AlipaySignature.rsaCheckV1(params, config.getProperty("alipay.alipay-public-key"), AlipayConstants.CHARSET_UTF8, AlipayConstants.SIGN_TYPE_RSA2); //调用SDK验证签名 + + if (!signVerified) { + //验签失败则记录异常日志,并在response中返回failure. + log.error("支付成功异步通知验签失败!"); + return result; + } + + // 验签成功后 + log.info("支付成功异步通知验签成功!"); + + //按照支付结果异步通知中的描述,对支付结果中的业务内容进行二次校验, + //1 商户需要验证该通知数据中的 out_trade_no 是否为商户系统中创建的订单号 + String outTradeNo = params.get("out_trade_no"); + OrderInfo order = orderFeignClient.getOrderInfo(outTradeNo); + if (order == null) { + log.error("订单不存在"); + return result; + } + + //2 判断 total_amount 是否确实为该订单的实际金额(即商户订单创建时的金额) + String totalAmount = params.get("total_amount"); + int totalAmountInt = new BigDecimal(totalAmount).multiply(new BigDecimal("100")) + .intValue(); + int totalFeeInt = order.getTotalAmount() + .intValue(); + if (totalAmountInt != totalFeeInt) { + log.error("金额校验失败"); + return result; + } + + //3 校验通知中的 seller_id(或者 seller_email) 是否为 out_trade_no 这笔单据的对应的操作方 + String sellerId = params.get("seller_id"); + String sellerIdProperty = config.getProperty("alipay.seller-id"); + if (!sellerId.equals(sellerIdProperty)) { + log.error("商家pid校验失败"); + return result; + } + + //4 验证 app_id 是否为该商户本身 + String appId = params.get("app_id"); + String appIdProperty = config.getProperty("alipay.app-id"); + if (!appId.equals(appIdProperty)) { + log.error("appid校验失败"); + return result; + } + + //在支付宝的业务通知中,只有交易通知状态为 TRADE_SUCCESS时, + // 支付宝才会认定为买家付款成功。 + String tradeStatus = params.get("trade_status"); + if (!"TRADE_SUCCESS".equals(tradeStatus)) { + log.error("支付未成功"); + return result; + } + + //处理业务 修改订单状态 记录支付日志 +// aliPayService.processOrder(params); + paymentInfoService.paySuccess(outTradeNo, params); + //校验成功后在response中返回success并继续商户自身业务处理,校验失败返回failure + result = "success"; + } catch (AlipayApiException e) { + e.printStackTrace(); + } + return result; + } +} diff --git a/xlcs-parent/service/service-payment/src/main/java/com/yovinchen/xlcs/payment/service/impl/PaymentInfoServiceImpl.java b/xlcs-parent/service/service-payment/src/main/java/com/yovinchen/xlcs/payment/service/impl/PaymentInfoServiceImpl.java index 75692ce..ce1b34f 100644 --- a/xlcs-parent/service/service-payment/src/main/java/com/yovinchen/xlcs/payment/service/impl/PaymentInfoServiceImpl.java +++ b/xlcs-parent/service/service-payment/src/main/java/com/yovinchen/xlcs/payment/service/impl/PaymentInfoServiceImpl.java @@ -1,5 +1,7 @@ package com.yovinchen.xlcs.payment.service.impl; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.yovinchen.xlcs.client.order.OrderFeignClient; import com.yovinchen.xlcs.common.exception.xlcsException; import com.yovinchen.xlcs.common.result.ResultCodeEnum; @@ -11,8 +13,6 @@ import com.yovinchen.xlcs.mq.constant.MqConst; import com.yovinchen.xlcs.mq.service.RabbitService; import com.yovinchen.xlcs.payment.mapper.PaymentInfoMapper; import com.yovinchen.xlcs.payment.service.PaymentInfoService; -import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; -import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -90,10 +90,7 @@ public class PaymentInfoServiceImpl extends ServiceImpl resultMap) { //1 查询当前订单支付记录表状态是否是已经支付 - PaymentInfo paymentInfo = baseMapper.selectOne( - new LambdaQueryWrapper() - .eq(PaymentInfo::getOrderNo, orderNo) - ); + PaymentInfo paymentInfo = baseMapper.selectOne(new LambdaQueryWrapper().eq(PaymentInfo::getOrderNo, orderNo)); if (paymentInfo.getPaymentStatus() != PaymentStatus.UNPAID) { return; } @@ -105,7 +102,6 @@ public class PaymentInfoServiceImpl extends ServiceImpl createJsapi(String orderNo) { //1 向payment_info支付记录表添加记录,目前支付状态:正在支付中 @@ -103,7 +105,8 @@ public class WeXinServiceImpl implements WeixinService { //6 返回结果 return result; } catch (Exception e) { - throw new RuntimeException(e); + e.printStackTrace(); + throw new RuntimeException("创建微信支付交易失败"); } } diff --git a/xlcs-parent/service/service-payment/src/main/resources/application.yml b/xlcs-parent/service/service-payment/src/main/resources/application.yml index 9f1469f..1f087ed 100644 --- a/xlcs-parent/service/service-payment/src/main/resources/application.yml +++ b/xlcs-parent/service/service-payment/src/main/resources/application.yml @@ -13,3 +13,24 @@ spring: password: nacos application: version: v1.0.0 + +ali-pay: + #接下来两个用来标识用户 + #商户id + pid: 9021000134674270 + #应用appid(和商户id绑定过) + app-id: 2088721030577347 + #接下来三个用来确保SSL + #商户私钥 + merchant-private-key: MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQDjEwOkkuVP+MkTmAdtw8HzsYFvkXe1k/NK9FOje4ywZrHqy5szqpAJGZU5onHprDQg0+ozWESBKfoqEifDsfjWNuVVMfK1eluLYBEzTCGsXHjI4nJPDCBC24k51LCJuDbakYZCiV9tNfvBcRyYT4exPelT2jiNiGL8halGgPV2Mw3ySbzhMeCzFlKvYzj4xVxVkFKVsKnkxvjEO/e2sSMWxW4Ll5uTFV9sdvk4D+B08sd9aG9ThMKCYTsYrX0b5oxPHwDv4xjM7q8xzZ7x+a7tkwb5kk2X3bxJa0DmSIVli4B/hPD5LpLzH7WqmWi/LPKrdMoGZ7aPPHTqtEo/UcNVAgMBAAECggEAf3pVOTcedV79w3o98WlMoTqtp6zKv61nkFTJ/6WEviNpDp9vafn/EpzCIbEIsl5yhVtyx5BuJPUj9CptGHf5cokvBj0cPLWMXxp3jYzX+qOPS3eVJLtyARauW0EEOsyoPtwju4bTg8Qiqd6OZxN+4goXy3Ne/FXs/EctWN9c7hV8gkqrx2wK60EG/kNKiikl5bRS3fRg2MdcPirYOYqW0DWH2saD5CLfRoVKSg8ygDnMD/gTa961jhRYy1WxljHNO+b6UpoaoXXsvs9aGW3pNf7QaLFAbzTUfyDeAAvOhtupfwT82cU13j3yv2FNLxdwVUeG373eTzA1aNZvx94qAQKBgQD6FR0skjs03We0iPf/YYjL5DYs3YEkr+vmeSn0Xz33Bbqn4UQKdyerrD9VQhcLnSc7gA0f8FAC//GWYEgbLczN2OFb0+8lcZzCiz7Q+dzEUVd9HoHKnWgl+dGuwF7c+YqX6QyaoKcxmfegUxkfg0DibnZRlLhrsTrTgQJ/baOCsQKBgQDocobrlVMOwUgRjAvBUWhtYdytFEJ0XCc9rEQ7wTFDXtScv72d1nfWTwUluAHfepVMzGYkG+KiJCCp5jfe3ovxd2FkzlN9YRrwyuDKrffTXwBvI+rf7zvy6KOqhc9IcCnDfyhD37kXSm9FZg6Wfkwk21wf4ya0tJo63zsOWgRL5QKBgQDLWWPRnE58XBQ5nq5ZgMulTzomHS8nz8y4KYnN5awTMxtl6yxSfjVJyNPu1cC7dtwx65vAfr3w0oF1T3ESeJlyQIpvCtQI1GstXeCEOMgk8id729SaFohbaNnxiQcaE+d4Qs425a9OC+5o9WkWULnv5PZcu9uB5ij5VovbZiFw4QKBgBobqv3Q8thIa1DVOwjGnQUUJdYm3WP2ac3qiGtxwpe/kf/dJW4SBbnDfF+FMGiqexR6LMrHewgdKLIMkp/svSks8HqDFiuR+ZWsI91/9sL9+62ACkSGuWQKLz/a8bJALuCvapVdDowIJ0FTOjY7D1BgdxN5zwIi+uO76QUupSblAoGBAOVn1k5AZSjgzJt6xANP9TI08kp0qSO90PepRzo5o0KxbsyEz8rQRlwqfVFBSv5S4JkuTJo/2EqMMbaLW3uDZ2DorIqClGLD3UH6OueH3Ek48WNntoCJy79ovMmsa3AKOaMirARdytrU3AnmlBstBGTaoi7ARAoAJLeTxxUJHjJB + #支付宝公钥 + ali-pay-public-key: MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAkDBcupxSOK3Qd2vjRXtUTglrPF+ijQ64Gf8plOiIFfr9U9dkClBvU4V7jLgmBhI2i1fwuGuGhI2ZhySFkFazPqrBTvL7RXWCYjbkjh/89ZOLwbm6Pz5Vm11mkdv1eqvsp2H/g3nIkVjBeDit1JqJ/jo0Fs30D6o9BjYDMJHmzDwmfH5EJiHSIrtLuUsUZCErpmQX8Uz9TVmTE+XVwIl0Npt1MV5czKIE+apkJPelktHuNhYRpJQ81t67v3euMFQOwaZO6Fk7YsUUZRX8W+Uui6lWJnCkCPUnT/GdBTomaxBq0ZocZtYmnvc9BlZBCkPPzcrOobKUQp1KkyhSZDc//QIDAQAB + ##对称加密密钥 + content-key: p+XVGRdcShpQE4faeI6VfQ== + #接下来三个是相关地址 + #支付宝网关 + gateway-url: https://openapi.alipaydev.com/gateway.do + #接收结果通知地址 + notify-url: http://localhost:8080/#/success + #页面跳转同步通知页面路径 + return-url: https://a863-180-174-204-169.ngrok.io/api/ali-pay/trade/notify diff --git a/xlcs-parent/service/service-search/src/main/java/com/yovinchen/xlcs/search/service/impl/SkuServiceImpl.java b/xlcs-parent/service/service-search/src/main/java/com/yovinchen/xlcs/search/service/impl/SkuServiceImpl.java index 61652c3..7315ba7 100644 --- a/xlcs-parent/service/service-search/src/main/java/com/yovinchen/xlcs/search/service/impl/SkuServiceImpl.java +++ b/xlcs-parent/service/service-search/src/main/java/com/yovinchen/xlcs/search/service/impl/SkuServiceImpl.java @@ -155,9 +155,7 @@ public class SkuServiceImpl implements SkuService { Map> skuIdToRuleListMap = activityFeignClient.findActivity(skuIdList); //封装获取数据到skuEs里面 ruleList属性里面 if (skuIdToRuleListMap != null) { - skuEsList.forEach(skuEs -> { - skuEs.setRuleList(skuIdToRuleListMap.get(skuEs.getId())); - }); + skuEsList.forEach(skuEs -> skuEs.setRuleList(skuIdToRuleListMap.get(skuEs.getId()))); } } return pageModel;