From 7aa726d0a01d3f1042e34d815e9d1e1fd794b973 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BC=A0=E6=9D=BE?= <8605635+zhang3064194730@user.noreply.gitee.com> Date: Fri, 28 Feb 2025 16:42:26 +0800 Subject: [PATCH 1/5] =?UTF-8?q?shopId=E8=8E=B7=E5=8F=96=E6=96=B9=E5=BC=8F?= =?UTF-8?q?=E4=BF=AE=E6=94=B9=EF=BC=8Cget=E4=BC=A0=E5=8F=82=E5=88=99?= =?UTF-8?q?=E5=8F=96get=E5=8F=82=E6=95=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/java/com/czg/sa/MyStpLogic.java | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/cash-common/cash-common-sa-token/src/main/java/com/czg/sa/MyStpLogic.java b/cash-common/cash-common-sa-token/src/main/java/com/czg/sa/MyStpLogic.java index cb8fc24ef..e49e9a068 100644 --- a/cash-common/cash-common-sa-token/src/main/java/com/czg/sa/MyStpLogic.java +++ b/cash-common/cash-common-sa-token/src/main/java/com/czg/sa/MyStpLogic.java @@ -2,6 +2,7 @@ package com.czg.sa; import cn.dev33.satoken.config.SaTokenConfig; import cn.dev33.satoken.context.SaHolder; +import cn.dev33.satoken.context.model.SaRequest; import cn.dev33.satoken.dao.SaTokenDao; import cn.dev33.satoken.exception.NotPermissionException; import cn.dev33.satoken.fun.SaFunction; @@ -84,8 +85,14 @@ public class MyStpLogic { shopId = info instanceof Long l ? l : null; errType = 0; } else { - String header = SaHolder.getRequest().getHeader("shopId"); - shopId = StrUtil.isBlank(header) ? null : Long.parseLong(header); + SaRequest request = SaHolder.getRequest(); + String requestParam = request.getParam("shopId"); + if (StrUtil.isBlank(requestParam)) { + String header = request.getHeader("shopId"); + shopId = StrUtil.isBlank(header) ? null : Long.parseLong(header); + }else { + shopId = Long.parseLong(requestParam); + } errType = 1; } From 0c8a998006cf9396d21d8320d9c1064323292bc1 Mon Sep 17 00:00:00 2001 From: wangw <1594593906@qq.com> Date: Fri, 28 Feb 2025 16:42:56 +0800 Subject: [PATCH 2/5] =?UTF-8?q?=E6=B4=BB=E5=8A=A8=20=E4=BC=A0=E5=8F=82=20s?= =?UTF-8?q?hopId?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/czg/controller/admin/ShopActivateController.java | 5 +++-- .../com/czg/controller/user/UserShopActivateController.java | 5 +++-- .../java/com/czg/account/service/ShopActivateService.java | 2 +- .../account/service/impl/ShopActivateServiceImpl.java | 4 ++-- 4 files changed, 9 insertions(+), 7 deletions(-) diff --git a/cash-api/account-server/src/main/java/com/czg/controller/admin/ShopActivateController.java b/cash-api/account-server/src/main/java/com/czg/controller/admin/ShopActivateController.java index 09ce069a3..6abb5a3ab 100644 --- a/cash-api/account-server/src/main/java/com/czg/controller/admin/ShopActivateController.java +++ b/cash-api/account-server/src/main/java/com/czg/controller/admin/ShopActivateController.java @@ -13,6 +13,7 @@ import java.util.List; /** * 店铺充值活动管理 + * * @author ww * @description */ @@ -29,8 +30,8 @@ public class ShopActivateController { */ @SaAdminCheckPermission("activate:list") @GetMapping - public CzgResult> detail() { - return CzgResult.success(shopActivateService.getList()); + public CzgResult> detail(@RequestParam(required = false) Long shopId) { + return CzgResult.success(shopActivateService.getList(shopId)); } /** diff --git a/cash-api/account-server/src/main/java/com/czg/controller/user/UserShopActivateController.java b/cash-api/account-server/src/main/java/com/czg/controller/user/UserShopActivateController.java index 1a2ae03ab..05b953962 100644 --- a/cash-api/account-server/src/main/java/com/czg/controller/user/UserShopActivateController.java +++ b/cash-api/account-server/src/main/java/com/czg/controller/user/UserShopActivateController.java @@ -6,6 +6,7 @@ import com.czg.resp.CzgResult; import jakarta.annotation.Resource; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; import java.util.List; @@ -25,8 +26,8 @@ public class UserShopActivateController { * 店铺充值活动列表 */ @GetMapping - public CzgResult> detail() { - return CzgResult.success(shopActivateService.getList()); + public CzgResult> detail(@RequestParam(required = false) Long shopId) { + return CzgResult.success(shopActivateService.getList(shopId)); } } diff --git a/cash-common/cash-common-service/src/main/java/com/czg/account/service/ShopActivateService.java b/cash-common/cash-common-service/src/main/java/com/czg/account/service/ShopActivateService.java index f0089a5b3..594e2b6c8 100644 --- a/cash-common/cash-common-service/src/main/java/com/czg/account/service/ShopActivateService.java +++ b/cash-common/cash-common-service/src/main/java/com/czg/account/service/ShopActivateService.java @@ -16,7 +16,7 @@ import java.util.List; */ public interface ShopActivateService extends IService { - List getList(); + List getList(Long shopId); Boolean add(ShopActivateDTO activateDTO); diff --git a/cash-service/account-service/src/main/java/com/czg/service/account/service/impl/ShopActivateServiceImpl.java b/cash-service/account-service/src/main/java/com/czg/service/account/service/impl/ShopActivateServiceImpl.java index 4c767c7d4..1acddb0e5 100644 --- a/cash-service/account-service/src/main/java/com/czg/service/account/service/impl/ShopActivateServiceImpl.java +++ b/cash-service/account-service/src/main/java/com/czg/service/account/service/impl/ShopActivateServiceImpl.java @@ -49,9 +49,9 @@ public class ShopActivateServiceImpl extends ServiceImpl getList() { + public List getList(Long shopId) { List activateDtoS = queryChain().select() - .eq(ShopActivate::getShopId, StpKit.USER.getShopId()) + .eq(ShopActivate::getShopId, shopId == null ? StpKit.USER.getShopId() : shopId) .orderBy(ShopActivate::getAmount, true) .listAs(ShopActivateDTO.class); for (ShopActivateDTO activateDTO : activateDtoS) { From 41686fa3ceac95ca48014e9737a547acbb21ab89 Mon Sep 17 00:00:00 2001 From: wangw <1594593906@qq.com> Date: Fri, 28 Feb 2025 16:51:39 +0800 Subject: [PATCH 3/5] =?UTF-8?q?token=20=E6=A0=A1=E9=AA=8C=20=E9=80=80?= =?UTF-8?q?=E6=AC=BE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../czg/controller/OrderPayController.java | 2 +- .../java/com/czg/config/SaTokenConfigure.java | 3 ++- .../order/service/impl/PayServiceImpl.java | 26 +++++++++++++++---- 3 files changed, 24 insertions(+), 7 deletions(-) diff --git a/cash-api/order-server/src/main/java/com/czg/controller/OrderPayController.java b/cash-api/order-server/src/main/java/com/czg/controller/OrderPayController.java index 64f201ec4..a37083d18 100644 --- a/cash-api/order-server/src/main/java/com/czg/controller/OrderPayController.java +++ b/cash-api/order-server/src/main/java/com/czg/controller/OrderPayController.java @@ -121,7 +121,7 @@ public class OrderPayController { * 获取店铺订单支付URL */ @PostMapping("/shopPayApi/orderPayUrl") - public CzgResult getOrderPayUrl(Long shopId, Long orderId, @RequestParam(required = false) String extend, + public CzgResult getOrderPayUrl(@RequestHeader Long shopId, Long orderId, @RequestParam(required = false) String extend, @RequestParam(required = false) CheckOrderPay checkOrderPay) { AssertUtil.isNull(shopId, "店铺id不能为空"); AssertUtil.isNull(orderId, "订单Id不能为空"); diff --git a/cash-common/cash-common-sa-token/src/main/java/com/czg/config/SaTokenConfigure.java b/cash-common/cash-common-sa-token/src/main/java/com/czg/config/SaTokenConfigure.java index b2cf4a178..67a7bf682 100644 --- a/cash-common/cash-common-sa-token/src/main/java/com/czg/config/SaTokenConfigure.java +++ b/cash-common/cash-common-sa-token/src/main/java/com/czg/config/SaTokenConfigure.java @@ -64,12 +64,13 @@ public class SaTokenConfigure implements WebMvcConfigurer { ApplicationInfo.routePrefix = ""; SaRouter.match("/user/**").notMatch("/user/login", "/user/test", "/user/geo/**", "/user/home/**") + .notMatch("/pay/**") + .notMatch("/notify/**") .check(r -> MyStpLogic.CLIENT_LOGIC.checkLogin()) .setHit(true) // .match("/**") .notMatch("/user/**") .notMatch("/admin/auth/**") - .notMatch("/notify/**") .check(r -> MyStpLogic.ADMIN_LOGIC.checkLogin()); })).addPathPatterns("/**"); diff --git a/cash-service/order-service/src/main/java/com/czg/service/order/service/impl/PayServiceImpl.java b/cash-service/order-service/src/main/java/com/czg/service/order/service/impl/PayServiceImpl.java index 2d1a9da42..9b28194a1 100644 --- a/cash-service/order-service/src/main/java/com/czg/service/order/service/impl/PayServiceImpl.java +++ b/cash-service/order-service/src/main/java/com/czg/service/order/service/impl/PayServiceImpl.java @@ -194,7 +194,7 @@ public class PayServiceImpl implements PayService { if (payParam.getCheckOrderPay().getOrderId() == null) { orderInfo = orderInfoService.createPayOrder(payParam.getShopId(), payParam.getCheckOrderPay().getOrderAmount(), payParam.getCheckOrderPay().getRemark()); - }else { + } else { orderInfo = orderInfoService.getById(payParam.getCheckOrderPay().getOrderId()); } String payOrderNo = orderInfo.getPlatformType() + IdUtil.getSnowflakeNextId(); @@ -501,7 +501,7 @@ public class PayServiceImpl implements PayService { .bizEnum(ShopUserFlowBizEnum.ORDER_REFUND) .build(); shopUserService.updateMoney(orderInfo.getShopId(), shopUserMoneyEditDTO); - } else { + } else if (!orderInfo.getPayType().equals(PayEnums.CASH_PAY.getValue())){ //退款 param.getRefundAmount() refundOrder(orderInfo.getShopId(), orderInfo.getId(), orderInfo.getPayOrderId(), refPayOrderNo, param.getRefundReason(), param.getRefundAmount()); @@ -515,9 +515,25 @@ public class PayServiceImpl implements PayService { if (orderInfo.getRefundAmount().compareTo(orderInfo.getPayAmount()) < 0) { throw new ValidateException("退单失败,可退金额不足"); } - //退款 refundAmountTotal - refundOrder(orderInfo.getShopId(), orderInfo.getId(), orderInfo.getPayOrderId(), - refPayOrderNo, param.getRefundReason(), refundAmountTotal); + //非现金退款 + if (!param.isCash()) { + if (orderInfo.getPayType().equals(PayEnums.VIP_PAY.getValue())) { + ShopUser shopUser = shopUserService.getShopUserInfo(orderInfo.getShopId(), orderInfo.getUserId()); + //会员支付 退钱 + ShopUserMoneyEditDTO shopUserMoneyEditDTO = ShopUserMoneyEditDTO.builder() + .id(shopUser.getId()) + .money(param.getRefundAmount()) + .type(1) + .relationId(orderInfo.getId()) + .bizEnum(ShopUserFlowBizEnum.ORDER_REFUND) + .build(); + shopUserService.updateMoney(orderInfo.getShopId(), shopUserMoneyEditDTO); + } else if (!orderInfo.getPayType().equals(PayEnums.CASH_PAY.getValue())) { + //退款 param.getRefundAmount() + refundOrder(orderInfo.getShopId(), orderInfo.getId(), orderInfo.getPayOrderId(), + refPayOrderNo, param.getRefundReason(), param.getRefundAmount()); + } + } } } else { orderInfo.setOrderAmount(orderInfo.getOrderAmount().subtract(refundAmountTotal)); From 8887ce766d547351bafb1dcc205cf50d28502a44 Mon Sep 17 00:00:00 2001 From: wangw <1594593906@qq.com> Date: Fri, 28 Feb 2025 16:57:43 +0800 Subject: [PATCH 4/5] =?UTF-8?q?token=20=E6=A0=A1=E9=AA=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/java/com/czg/config/SaTokenConfigure.java | 1 + 1 file changed, 1 insertion(+) diff --git a/cash-common/cash-common-sa-token/src/main/java/com/czg/config/SaTokenConfigure.java b/cash-common/cash-common-sa-token/src/main/java/com/czg/config/SaTokenConfigure.java index 67a7bf682..d0c397228 100644 --- a/cash-common/cash-common-sa-token/src/main/java/com/czg/config/SaTokenConfigure.java +++ b/cash-common/cash-common-sa-token/src/main/java/com/czg/config/SaTokenConfigure.java @@ -70,6 +70,7 @@ public class SaTokenConfigure implements WebMvcConfigurer { .setHit(true) // .match("/**") .notMatch("/user/**") + .notMatch("/pay/**") .notMatch("/admin/auth/**") .check(r -> MyStpLogic.ADMIN_LOGIC.checkLogin()); From e939ae9cd14c9e77ec2f8f628d58c0c185a9c0e5 Mon Sep 17 00:00:00 2001 From: wangw <1594593906@qq.com> Date: Fri, 28 Feb 2025 17:21:39 +0800 Subject: [PATCH 5/5] =?UTF-8?q?=E9=80=80=E6=AC=BE=20=E9=87=91=E9=A2=9D=20?= =?UTF-8?q?=E5=9B=9E=E5=A1=AB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../order/service/impl/PayServiceImpl.java | 23 ++++++++++++++++++- 1 file changed, 22 insertions(+), 1 deletion(-) diff --git a/cash-service/order-service/src/main/java/com/czg/service/order/service/impl/PayServiceImpl.java b/cash-service/order-service/src/main/java/com/czg/service/order/service/impl/PayServiceImpl.java index 9b28194a1..029691327 100644 --- a/cash-service/order-service/src/main/java/com/czg/service/order/service/impl/PayServiceImpl.java +++ b/cash-service/order-service/src/main/java/com/czg/service/order/service/impl/PayServiceImpl.java @@ -432,6 +432,7 @@ public class PayServiceImpl implements PayService { isPay = false; refPayOrderNo = ""; } + orderInfo.setStatus(OrderStatusEnums.PART_REFUND.getCode()); if (CollUtil.isNotEmpty(param.getRefundDetails())) { for (OrderDetail refundDetail : param.getRefundDetails()) { AssertUtil.isNull(refundDetail.getNum(), "退单数量不能为空"); @@ -475,10 +476,30 @@ public class PayServiceImpl implements PayService { } orderDetail.setRefundNo(refPayOrderNo); orderDetail.setRefundRemark(orderDetail.getRefundRemark() + param.getRefundReason()); + if (orderDetail.getNum().compareTo(orderDetail.getRefundNum().add(orderDetail.getReturnNum())) == 0) { + orderDetail.setStatus(OrderStatusEnums.REFUND.getCode()); + } else { + orderDetail.setStatus(OrderStatusEnums.PART_REFUND.getCode()); + + } orderDetailService.updateById(orderDetail); } } else { refundAmountTotal = param.getRefundAmount(); + if (isPay) { + orderDetailService.updateChain() + .eq(OrderDetail::getOrderId, param.getOrderId()) + .setRaw(OrderDetail::getRefundNum, "num-refund_num") + .setRaw(OrderDetail::getReturnAmount, "pay_amount") + .set(OrderDetail::getStatus, OrderStatusEnums.REFUND.getCode()) + .update(); + } else { + orderDetailService.updateChain() + .eq(OrderDetail::getOrderId, param.getOrderId()) + .setRaw(OrderDetail::getReturnNum, "num") + .set(OrderDetail::getStatus, OrderStatusEnums.REFUND.getCode()) + .update(); + } } //总退款金额 //TODO 退款 券 未处理 @@ -501,7 +522,7 @@ public class PayServiceImpl implements PayService { .bizEnum(ShopUserFlowBizEnum.ORDER_REFUND) .build(); shopUserService.updateMoney(orderInfo.getShopId(), shopUserMoneyEditDTO); - } else if (!orderInfo.getPayType().equals(PayEnums.CASH_PAY.getValue())){ + } else if (!orderInfo.getPayType().equals(PayEnums.CASH_PAY.getValue())) { //退款 param.getRefundAmount() refundOrder(orderInfo.getShopId(), orderInfo.getId(), orderInfo.getPayOrderId(), refPayOrderNo, param.getRefundReason(), param.getRefundAmount());