From a5bfdd6ced2f63d4d6e00d945ebbe81f86e01621 Mon Sep 17 00:00:00 2001 From: dzc <2388224167@qq.com> Date: Wed, 22 Jan 2025 21:04:28 +0800 Subject: [PATCH] =?UTF-8?q?feat:=E5=90=8E=E5=8F=B0=E9=80=80=E6=AC=BE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../api/dto/order/HardAdminRefundDto.java | 28 ++++++++++++ .../order/HardAfterSaleController.java | 12 +++-- .../hard/service/HardAfterSaleService.java | 16 ++++++- .../impl/order/HardAfterSaleServiceImpl.java | 45 ++++++++++++++++++- 4 files changed, 93 insertions(+), 8 deletions(-) create mode 100644 pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/dto/order/HardAdminRefundDto.java diff --git a/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/dto/order/HardAdminRefundDto.java b/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/dto/order/HardAdminRefundDto.java new file mode 100644 index 000000000..1e2d46b6f --- /dev/null +++ b/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/dto/order/HardAdminRefundDto.java @@ -0,0 +1,28 @@ +package com.bsd.pjcloud.hard.api.dto.order; + +import io.swagger.v3.oas.annotations.media.Schema; +import jakarta.validation.constraints.NotNull; +import lombok.Data; + +@Data +public class HardAdminRefundDto { + + @Schema(description = "订单id不能为空") + @NotNull(message = "订单id不能为空") + private Long orderId; + + @Schema(description = "售后方式") + @NotNull(message = "售后方式不能为空") + private String way; + + @Schema(description = "退款原因") + @NotNull(message = "退款原因不能为空") + private String applyReason; + + @Schema(description = "相关描述") + private String applyDescription; + + @Schema(description="补充凭证图片") + private String applyPicUrls; + +} diff --git a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/controller/order/HardAfterSaleController.java b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/controller/order/HardAfterSaleController.java index f4df4ae41..be78ebb5f 100644 --- a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/controller/order/HardAfterSaleController.java +++ b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/controller/order/HardAfterSaleController.java @@ -10,6 +10,7 @@ import com.bsd.pjcloud.common.idempotent.annotation.Idempotent; import com.bsd.pjcloud.common.log.annotation.SysLog; import com.bsd.pjcloud.common.security.service.PjcloudUser; import com.bsd.pjcloud.common.security.util.SecurityUtils; +import com.bsd.pjcloud.hard.api.dto.order.HardAdminRefundDto; import com.bsd.pjcloud.hard.api.dto.order.HardAfterSaleDto; import com.bsd.pjcloud.hard.api.dto.order.HardDisagreeDto; import com.bsd.pjcloud.hard.api.entity.order.HardAfterSaleEntity; @@ -76,10 +77,13 @@ public class HardAfterSaleController { } /* ************************************* end app end ************************************* */ - @GetMapping(value = "/refund") - @Operation(summary = "查询售后进度") - public R refund(@RequestParam Long id) { - return R.ok(hardAfterSaleService.refund(id)); + @PostMapping(value = "/admin-refund") + @Operation(summary = "后台退款") + @Idempotent(expireTime = 10, info = "正在退款中,请勿重复操作") + @PreAuthorize("@pms.hasPermission('hard_hardAfterSale_adminRefund')") + public R adminRefund(@RequestBody HardAdminRefundDto dto) { + PjcloudUser user = SecurityUtils.getUser(); + return R.ok(hardAfterSaleService.adminRefund(dto, user)); } @GetMapping(value = "/history") diff --git a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/HardAfterSaleService.java b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/HardAfterSaleService.java index 6ff3615e4..908eb2e4a 100644 --- a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/HardAfterSaleService.java +++ b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/HardAfterSaleService.java @@ -2,6 +2,8 @@ package com.bsd.pjcloud.hard.service; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.IService; +import com.bsd.pjcloud.common.security.service.PjcloudUser; +import com.bsd.pjcloud.hard.api.dto.order.HardAdminRefundDto; import com.bsd.pjcloud.hard.api.dto.order.HardAfterSaleDto; import com.bsd.pjcloud.hard.api.dto.order.HardDisagreeDto; import com.bsd.pjcloud.hard.api.entity.order.HardAfterSaleEntity; @@ -20,6 +22,7 @@ public interface HardAfterSaleService extends IService { /** * 申请售后 + * * @param dto * @return */ @@ -27,7 +30,8 @@ public interface HardAfterSaleService extends IService { /** * 取消售后 - * @param userId 用户id + * + * @param userId 用户id * @param afterSaleId 售后id * @return */ @@ -51,7 +55,7 @@ public interface HardAfterSaleService extends IService { * 同意售后 * * @param userId 用户id - * @param id 售后id + * @param id 售后id */ Boolean agreeAfterSale(Long userId, Long id); @@ -63,4 +67,12 @@ public interface HardAfterSaleService extends IService { * @return */ Boolean disagreeRefund(Long userId, HardDisagreeDto dto); + + /** + * 后台退款 + * + * @param dto + * @return + */ + Boolean adminRefund(HardAdminRefundDto dto, PjcloudUser user); } \ No newline at end of file diff --git a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/impl/order/HardAfterSaleServiceImpl.java b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/impl/order/HardAfterSaleServiceImpl.java index 342c2755e..fcb2b4489 100644 --- a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/impl/order/HardAfterSaleServiceImpl.java +++ b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/impl/order/HardAfterSaleServiceImpl.java @@ -17,12 +17,14 @@ import com.bsd.pjcloud.common.core.util.BeanUtils; import com.bsd.pjcloud.common.core.util.CollectionUtils; import com.bsd.pjcloud.common.core.util.R; import com.bsd.pjcloud.common.data.datascope.DataScope; +import com.bsd.pjcloud.common.security.service.PjcloudUser; import com.bsd.pjcloud.hard.api.constant.order.HardOrderStatusEnum; import com.bsd.pjcloud.hard.api.constant.order.HardOrderTypeEnum; import com.bsd.pjcloud.hard.api.constant.refund.HardAfterSaleOperateTypeEnum; import com.bsd.pjcloud.hard.api.constant.refund.HardRefundStatusEnum; import com.bsd.pjcloud.hard.api.constant.refund.HardSaleStatusEnum; import com.bsd.pjcloud.hard.api.constant.refund.HardSaleTypeEnum; +import com.bsd.pjcloud.hard.api.dto.order.HardAdminRefundDto; import com.bsd.pjcloud.hard.api.dto.order.HardAfterSaleDto; import com.bsd.pjcloud.hard.api.dto.order.HardDisagreeDto; import com.bsd.pjcloud.hard.api.dto.order.HardOrderDto; @@ -216,7 +218,10 @@ public class HardAfterSaleServiceImpl extends ServiceImpl walletRefundResult = walletRechargeService.refund(hardRefundDto); - WalletRechargeVo walletRefund = Optional.of(walletRefundResult).map(R::getData).orElseThrow(() -> new RuntimeException("钱包退款错误")); + if (walletRefundResult.getCode() != 0 || ObjectUtil.isEmpty(walletRefundResult.getData())) { + throw new RuntimeException("钱包退款错误"); + } + WalletRechargeVo walletRefund = walletRefundResult.getData(); HardOrderEntity updateObj = HardOrderEntity.builder() .id(order.getId()) .orderStatus(HardOrderStatusEnum.REFUND.getType()) @@ -303,7 +308,7 @@ public class HardAfterSaleServiceImpl extends ServiceImpl