From 103a6e7db7f76f1ceb602e80ae865f5867cc0d44 Mon Sep 17 00:00:00 2001 From: yang <2119157836@qq.com> Date: Tue, 11 Feb 2025 13:56:17 +0800 Subject: [PATCH] =?UTF-8?q?refactor(payment):=20=E8=B0=83=E6=95=B4?= =?UTF-8?q?=E6=94=AF=E4=BB=98=E5=AE=9D=E6=94=AF=E4=BB=98=E5=92=8C=E8=AE=A2?= =?UTF-8?q?=E5=8D=95=E7=8A=B6=E6=80=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../memberCenter/MemberController.java | 11 ++-- .../pay/AliPay/AliPayController.java | 2 +- .../pay/service/impl/AliPayServiceImpl.java | 52 +++++++++++++------ .../service/impl/OrderTradeServiceImpl.java | 2 +- .../service/impl/ModelImageServiceImpl.java | 6 +-- 5 files changed, 47 insertions(+), 26 deletions(-) diff --git a/mcwl-admin/src/main/java/com/mcwl/web/controller/memberCenter/MemberController.java b/mcwl-admin/src/main/java/com/mcwl/web/controller/memberCenter/MemberController.java index 3371290..d2f0501 100644 --- a/mcwl-admin/src/main/java/com/mcwl/web/controller/memberCenter/MemberController.java +++ b/mcwl-admin/src/main/java/com/mcwl/web/controller/memberCenter/MemberController.java @@ -85,9 +85,14 @@ public class MemberController { public AjaxResult getPoints() { Long userId = SecurityUtils.getUserId(); + SysUser sysUser = sysUserService.selectUserById(userId); + Member member = memberService.getUseUserMemberByUserId(userId); - if (!Optional.ofNullable(member).isPresent()) { - return AjaxResult.warn("用户未开通会员"); + + double points = sysUser.getFreePoints(); + + if (Objects.nonNull(member)) { + points = points + member.getPoints(); } PointsVO pointsVO = new PointsVO(); @@ -98,7 +103,7 @@ public class MemberController { .eq(MemberConsume::getUserId, userId) .list(); - pointsVO.setPoints(member.getPoints()); + pointsVO.setPoints(points); pointsVO.setMemberConsumeList(memberConsumeList); return AjaxResult.success(pointsVO); diff --git a/mcwl-admin/src/main/java/com/mcwl/web/controller/pay/AliPay/AliPayController.java b/mcwl-admin/src/main/java/com/mcwl/web/controller/pay/AliPay/AliPayController.java index ea865d6..5e27192 100644 --- a/mcwl-admin/src/main/java/com/mcwl/web/controller/pay/AliPay/AliPayController.java +++ b/mcwl-admin/src/main/java/com/mcwl/web/controller/pay/AliPay/AliPayController.java @@ -152,7 +152,7 @@ public class AliPayController extends BaseController { @NotNull(message = "提现金额不能为空") Double amount) throws Exception { if (amount < 0.1) { - return AjaxResult.error("提现金额最小为0.01"); + return AjaxResult.error("提现金额最小为0.1"); } String outBizNo = UUID.fastUUID().toString(true); diff --git a/mcwl-pay/src/main/java/com/mcwl/pay/service/impl/AliPayServiceImpl.java b/mcwl-pay/src/main/java/com/mcwl/pay/service/impl/AliPayServiceImpl.java index 9f997c3..90c3f57 100644 --- a/mcwl-pay/src/main/java/com/mcwl/pay/service/impl/AliPayServiceImpl.java +++ b/mcwl-pay/src/main/java/com/mcwl/pay/service/impl/AliPayServiceImpl.java @@ -46,6 +46,7 @@ import com.mcwl.system.service.ISysUserPayAccountService; import com.mcwl.system.service.ISysUserService; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor; import org.springframework.stereotype.Component; import org.springframework.transaction.annotation.Transactional; @@ -86,6 +87,9 @@ public class AliPayServiceImpl implements AliPayService { @Autowired private OrderTradeService orderTradeService; + @Autowired + private ThreadPoolTaskExecutor threadPoolTaskExecutor; + private final int MAX_RETRY = 3; // 最大重试次数 @@ -359,27 +363,13 @@ public class AliPayServiceImpl implements AliPayService { long time = (System.currentTimeMillis() - orderTrade.getCreateTime().getTime()) / 1000 / 60; // time 超过15分钟,则删除redis中订单信息 if (time >= 1) { - for (int i = 0; i < MAX_RETRY; i++) { - // 撤销交易 - AlipayTradeCancelResponse cancel = Factory.Payment.Common().cancel(outTradeNo); - if (cancel.getMsg().equals("Success")) { - orderTrade.setOrderStatus(4); - orderTradeService.updateById(orderTrade); - redisCache.deleteObject(outTradeNo + "promotionId"); - break; - } else { - // 检查是否需要继续重试 - if (!"Y".equals(cancel.getRetryFlag())) { - break; - } - } - Thread.sleep(2000); // 间隔2秒重试 - } + + this.cancelTrade(orderTrade); } } - redisCache.setCacheObject(outTradeNo, JSONUtil.toJsonStr(orderTrade), 10, TimeUnit.SECONDS); + redisCache.setCacheObject(outTradeNo, JSONUtil.toJsonStr(orderTrade), 4, TimeUnit.SECONDS); return AjaxResult.success("查询成功", orderTrade.getOrderStatus()); } @@ -454,6 +444,34 @@ public class AliPayServiceImpl implements AliPayService { } + + private void cancelTrade(OrderTrade orderTrade) throws Exception { + + threadPoolTaskExecutor.execute(() -> { + try { + for (int i = 0; i < MAX_RETRY; i++) { + // 撤销交易 + AlipayTradeCancelResponse cancel = Factory.Payment.Common().cancel(orderTrade.getCode()); + if (cancel.getMsg().equals("Success")) { + orderTrade.setOrderStatus(4); + orderTradeService.updateById(orderTrade); + redisCache.deleteObject(orderTrade.getCode() + "promotionId"); + break; + } else { + // 检查是否需要继续重试 + if (!"Y".equals(cancel.getRetryFlag())) { + break; + } + } + Thread.sleep(2000); // 间隔2秒重试 + } + } catch (Exception e) { + throw new RuntimeException(e); + } + }); + + } + private Object getTradStatus(String outTradeNo) throws Exception { Factory.setOptions(config); AlipayTradeQueryResponse query = Factory.Payment.Common().query(outTradeNo); diff --git a/mcwl-pay/src/main/java/com/mcwl/pay/service/impl/OrderTradeServiceImpl.java b/mcwl-pay/src/main/java/com/mcwl/pay/service/impl/OrderTradeServiceImpl.java index b518dd9..683f1cc 100644 --- a/mcwl-pay/src/main/java/com/mcwl/pay/service/impl/OrderTradeServiceImpl.java +++ b/mcwl-pay/src/main/java/com/mcwl/pay/service/impl/OrderTradeServiceImpl.java @@ -217,7 +217,7 @@ public class OrderTradeServiceImpl extends ServiceImpl tagList = new ArrayList<>(); if (StringUtils.isNotEmpty(modelImage.getTags())) { String[] tagValueList = modelImage.getTags().split(","); - for (String tagValue : tagValueList) { - String dictLabel = DictInit.getDictValue(DictConstants.IMAGE_LABEL, tagValue); - tagList.add(dictLabel); - } + tagList.addAll(Arrays.asList(tagValueList)); } modelImageVo.setTags(tagList);