diff --git a/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/dto/xfj/XfjTransactionRefundDto.java b/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/dto/xfj/XfjOrderRefundDto.java similarity index 85% rename from pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/dto/xfj/XfjTransactionRefundDto.java rename to pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/dto/xfj/XfjOrderRefundDto.java index 5672127af..6098006ef 100644 --- a/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/dto/xfj/XfjTransactionRefundDto.java +++ b/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/dto/xfj/XfjOrderRefundDto.java @@ -3,7 +3,7 @@ package com.bsd.pjcloud.hard.api.dto.xfj; import lombok.Data; @Data -public class XfjTransactionRefundDto { +public class XfjOrderRefundDto { /** * 消费订单号(最大30字符) diff --git a/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/vo/xfj/XfjTransactionRefundVo.java b/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/vo/xfj/XfjOrderRefundVo.java similarity index 92% rename from pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/vo/xfj/XfjTransactionRefundVo.java rename to pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/vo/xfj/XfjOrderRefundVo.java index b755cd0cb..6c581ae43 100644 --- a/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/vo/xfj/XfjTransactionRefundVo.java +++ b/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/vo/xfj/XfjOrderRefundVo.java @@ -3,7 +3,7 @@ package com.bsd.pjcloud.hard.api.vo.xfj; import lombok.Data; @Data -public class XfjTransactionRefundVo extends XfjBaseVo { +public class XfjOrderRefundVo extends XfjBaseVo { /** * 人员姓名 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 7370fee9f..90e6ffa0b 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 @@ -109,7 +109,7 @@ public class HardAfterSaleController { @PreAuthorize("@pms.hasPermission('hard_hardAfterSale_adminRefund')") public R adminRefund(@RequestBody HardAdminRefundDto dto) { PjcloudUser user = SecurityUtils.getUser(); - return R.ok(hardAfterSaleService.adminRefund(dto, user)); + return R.ok(hardAfterSaleService.adminRefund(dto, user.getId())); } @PostMapping(value = "/admin-reinforce-refund") @@ -118,7 +118,7 @@ public class HardAfterSaleController { @PreAuthorize("@pms.hasPermission('hard_hardAfterSale_adminRefund')") public R adminReinforceRefund(@RequestBody HardAdminRefundReinforceDto dto) { PjcloudUser user = SecurityUtils.getUser(); - return R.ok(hardAfterSaleService.adminReinforceRefund(dto, user)); + return R.ok(hardAfterSaleService.adminReinforceRefund(dto, user.getId())); } @GetMapping(value = "/history") diff --git a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/controller/xfj/HardXfjController.java b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/controller/xfj/HardXfjController.java index 819d61eb4..b4352d6e6 100644 --- a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/controller/xfj/HardXfjController.java +++ b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/controller/xfj/HardXfjController.java @@ -4,6 +4,7 @@ import com.bsd.pjcloud.common.security.annotation.Inner; import com.bsd.pjcloud.hard.api.vo.xfj.XfjCountsVo; import com.bsd.pjcloud.hard.api.vo.xfj.XfjServerTimeVo; import com.bsd.pjcloud.hard.api.vo.xfj.XfjTransactionInquiryVo; +import com.bsd.pjcloud.hard.api.vo.xfj.XfjOrderRefundVo; import com.bsd.pjcloud.hard.service.HardXfjService; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.security.SecurityRequirement; @@ -56,13 +57,20 @@ public class HardXfjController { return hardXfjService.counts(httpEntity.getBody(), headers); } - @Operation(summary = "终端设备待查状态,按上翻/下翻键向服务器请求,服务器返回一条消费明细(或者退款接口)") + @Operation(summary = "终端设备待查状态,按上翻/下翻键向服务器请求,服务器返回一条消费明细") @PostMapping("/v1/transaction") @Inner(value = false) public Object transaction(HttpEntity httpEntity, @RequestHeader Map headers) { return hardXfjService.transaction(httpEntity.getBody(), headers); } + @Operation(summary = "订单退款接口") + @PostMapping("/v1/OrderRefund") + @Inner(value = false) + public XfjOrderRefundVo orderRefund(HttpEntity httpEntity, @RequestHeader Map headers) { + return hardXfjService.orderRefund(httpEntity.getBody(), headers); + } + @Operation(summary = "KeepAlive") @PostMapping("/v1/KeepAlive") @Inner(value = false) 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 6ab612301..9e2480e2a 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 @@ -68,15 +68,20 @@ public interface HardAfterSaleService extends IService { /** * 后台退款 */ - Boolean adminRefund(HardAdminRefundDto dto, PjcloudUser user); + Boolean adminRefund(HardAdminRefundDto dto, Long userId); /** * 后台强化退款 */ - Boolean adminReinforceRefund(HardAdminRefundReinforceDto dto, PjcloudUser user); + Boolean adminReinforceRefund(HardAdminRefundReinforceDto dto, Long userId); /** * 消费机限时退款 */ Boolean adTimeLintRefund(Long orderId, String reason, PjcloudUser user); + + /** + * 涉笔退款 + */ + Boolean adRefund(Long orderId, String reason); } \ No newline at end of file diff --git a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/HardXfjService.java b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/HardXfjService.java index c75526f00..15be954de 100644 --- a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/HardXfjService.java +++ b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/HardXfjService.java @@ -28,10 +28,15 @@ public interface HardXfjService { XfjCountsVo counts(String body, Map headers); /** - * 终端设备待查状态,按上翻/下翻键向服务器请求,服务器返回一条消费明细(或者退款接口) + * 终端设备待查状态,按上翻/下翻键向服务器请求,服务器返回一条消费明细 */ Object transaction(String body, Map headers); + /** + * 订单退款接口 + */ + XfjOrderRefundVo orderRefund(String body, Map headers); + /** * KeepAlive */ 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 246cf0248..467d10fc3 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 @@ -489,7 +489,7 @@ public class HardAfterSaleServiceImpl extends ServiceImpl headers) { - HardXfjLogEntity logger = initLogger(body, headers, "终端设备待查状态,按上翻/下翻键向服务器请求,服务器返回一条消费明细(或者退款接口)"); + HardXfjLogEntity logger = initLogger(body, headers, "终端设备待查状态,按上翻/下翻键向服务器请求,服务器返回一条消费明细"); XfjTransactionVo result = new XfjTransactionVo(); try { HardManagerEntity hardEntity = checkSignAndReturnConfig(body, headers); @@ -347,6 +348,71 @@ public class HardXfjServiceImpl implements HardXfjService { return null; } + /** + * 订单退款接口 + */ + @Override + public XfjOrderRefundVo orderRefund(String body, Map headers) { + HardXfjLogEntity logger = initLogger(body, headers, "订单退款接口"); + XfjOrderRefundVo result = new XfjOrderRefundVo(); + try { + HardManagerEntity hardEntity = checkSignAndReturnConfig(body, headers); + logger.setUniqueCode(hardEntity.getUniqueCode()); + // 获取参数 + XfjOrderRefundDto dto = JSONUtil.toBean(body, XfjOrderRefundDto.class); + // 退款 + if (ObjectUtil.isEmpty(dto) || ObjectUtil.isEmpty(dto.getOrderSeralid()) || ObjectUtil.isEmpty(dto.getAmount())) { + result.setStatus(XfjBaseVo.STATUS_FAIL); + result.setMsg("参数错误"); + return result; + } + // 查询订单 + HardOrderEntity order = hardOrderService.getById(Long.valueOf(dto.getOrderSeralid())); + if (ObjectUtil.isEmpty(order)) { + result.setStatus(XfjBaseVo.STATUS_FAIL); + result.setMsg("参数错误"); + return result; + } + // 执行退款 + Boolean isRefund = hardAfterSaleService.adRefund(order.getId(), "退还消费"); + if (!isRefund) { + result.setStatus(XfjBaseVo.STATUS_FAIL); + result.setMsg("退款失败"); + return result; + } + // 查询用户 + String username = "未知用户"; + UserInfo user = remoteUserService.getInnerByUserId(order.getUserId()).getData(); + if (ObjectUtil.isNotEmpty(user) && ObjectUtil.isNotEmpty(user.getSysUser().getName())) { + username = user.getSysUser().getName(); + } + // 余额(分) + int balance = 0; + WalletManageVo wallet = walletService.getWalletById(order.getWalletId()).getData(); + if (ObjectUtil.isNotEmpty(wallet) && ObjectUtil.isNotEmpty(wallet.getBalance())) { + balance = wallet.getBalance(); + } + result.setName(username); + result.setCardNo(""); + result.setMoney(fenToYuan(BigDecimal.valueOf(balance))); + result.setSubsidy(""); + result.setTimes("0"); + result.setIntegral("0"); + result.setAmount(dto.getAmount()); + result.setCmdType(11); + logger.setRes(JSONUtil.toJsonStr(result)); + return result; + } catch (Exception e) { + logger.setError(e.getMessage()); + e.printStackTrace(); + log.error("|订单退款接口|意外的错误error:{}", e.getMessage()); + } finally { + logger.setRes(JSONUtil.toJsonStr(result)); + saveLogger(logger); + } + return null; + } + /** * 付款码(二维码)支付接口 */