From 4671569308ed8a55f6ce1d83c3a9798c9c3e1ad6 Mon Sep 17 00:00:00 2001 From: jkcdev Date: Tue, 20 May 2025 10:54:21 +0800 Subject: [PATCH 1/6] =?UTF-8?q?=E5=AE=8C=E6=88=90=E9=80=80=E6=AC=BE?= =?UTF-8?q?=E5=88=97=E8=A1=A8=EF=BC=8C=E5=A2=9E=E5=8A=A0=E8=BD=A6=E8=BE=86?= =?UTF-8?q?=E7=BC=96=E5=8F=B7=E3=80=81=E9=AA=91=E8=A1=8C=E8=B5=B7=E6=AD=A2?= =?UTF-8?q?=E6=97=B6=E9=97=B4=EF=BC=8C=E4=BE=BF=E4=BA=8E=E6=9F=A5=E8=AF=A2?= =?UTF-8?q?=E9=AA=91=E8=A1=8C=E8=BD=A8=E8=BF=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../feign/clients/OrdersFeignClient.java | 24 +++++++++++++ .../controller/EbikeUserOrdersController.java | 36 +++++++++++++++++++ .../com/cdzy/orders/enums/OrderStatus.java | 12 +++++++ .../orders/service/UserOrdersService.java | 18 ++++++++++ .../service/impl/UserOrdersServiceImpl.java | 30 ++++++++++++++++ 5 files changed, 120 insertions(+) diff --git a/ebike-feign/src/main/java/com/ebike/feign/clients/OrdersFeignClient.java b/ebike-feign/src/main/java/com/ebike/feign/clients/OrdersFeignClient.java index 58354018..26571287 100644 --- a/ebike-feign/src/main/java/com/ebike/feign/clients/OrdersFeignClient.java +++ b/ebike-feign/src/main/java/com/ebike/feign/clients/OrdersFeignClient.java @@ -63,6 +63,14 @@ public interface OrdersFeignClient { @GetMapping("userOrders/refund") JsonResult refund(@RequestParam("orderId")Long orderId); + /** + * 订单发起退款申请 + * @param orderId 订单ID + * @return @ {@code 200} 成功,{@code 500} 失败 + */ + @GetMapping("userOrders/refundApply") + JsonResult refundApply(@RequestParam("orderId")Long orderId); + /** * 订单退款完成 * @param orderId 订单ID @@ -70,4 +78,20 @@ public interface OrdersFeignClient { */ @GetMapping("userOrders/doneRefund") JsonResult doneRefund(@RequestParam("orderId")Long orderId); + + /** + * 订单退款驳回 + * @param orderId 订单ID + * @return @ {@code 200} 成功,{@code 500} 失败 + */ + @GetMapping("userOrders/rejectRefund") + JsonResult rejectRefund(@RequestParam("orderId")Long orderId); + + /** + * 订单退款失败 + * @param orderId 订单ID + * @return @ {@code 200} 成功,{@code 500} 失败 + */ + @GetMapping("userOrders/failRefund") + JsonResult failRefund(@RequestParam("orderId")Long orderId); } diff --git a/ebike-orders/src/main/java/com/cdzy/orders/controller/EbikeUserOrdersController.java b/ebike-orders/src/main/java/com/cdzy/orders/controller/EbikeUserOrdersController.java index e1172294..1953f060 100644 --- a/ebike-orders/src/main/java/com/cdzy/orders/controller/EbikeUserOrdersController.java +++ b/ebike-orders/src/main/java/com/cdzy/orders/controller/EbikeUserOrdersController.java @@ -150,6 +150,18 @@ public class EbikeUserOrdersController { return JsonResult.success(); } + /** + * 订单退款申请。 + * + * @param orderId 订单ID + * @ {@code 200} 添加成功,{@code 500} 添加失败 + */ + @GetMapping("refundApply") + public JsonResult refundApply(@RequestParam("orderId")Long orderId) { + userOrdersService.refundApply(orderId); + return JsonResult.success(); + } + /** * 订单退款。 * @@ -174,6 +186,30 @@ public class EbikeUserOrdersController { return JsonResult.success(); } + /** + * 订单退款驳回。 + * + * @param orderId 订单ID + * @ {@code 200} 添加成功,{@code 500} 添加失败 + */ + @GetMapping("rejectRefund") + public JsonResult rejectRefund(@RequestParam("orderId")Long orderId) { + userOrdersService.rejectRefund(orderId); + return JsonResult.success(); + } + + /** + * 订单退款失败。 + * + * @param orderId 订单ID + * @ {@code 200} 添加成功,{@code 500} 添加失败 + */ + @GetMapping("failRefund") + public JsonResult failRefund(@RequestParam("orderId")Long orderId) { + userOrdersService.failRefund(orderId); + return JsonResult.success(); + } + /** * 检查车辆是否在运营区内。 diff --git a/ebike-orders/src/main/java/com/cdzy/orders/enums/OrderStatus.java b/ebike-orders/src/main/java/com/cdzy/orders/enums/OrderStatus.java index e81c4cc6..edf2981c 100644 --- a/ebike-orders/src/main/java/com/cdzy/orders/enums/OrderStatus.java +++ b/ebike-orders/src/main/java/com/cdzy/orders/enums/OrderStatus.java @@ -35,4 +35,16 @@ public interface OrderStatus { * 已退款 */ int REFUNDED = 5; + /** + * 退款申请中 + */ + int REFUND_APPLYING = 6; + /** + * 退款申请驳回 + */ + int REFUND_REJECTED = 7; + /** + * 退款失败 + */ + int REFUND_FAILED = 8; } diff --git a/ebike-orders/src/main/java/com/cdzy/orders/service/UserOrdersService.java b/ebike-orders/src/main/java/com/cdzy/orders/service/UserOrdersService.java index 83f92cc7..baad3c63 100644 --- a/ebike-orders/src/main/java/com/cdzy/orders/service/UserOrdersService.java +++ b/ebike-orders/src/main/java/com/cdzy/orders/service/UserOrdersService.java @@ -87,6 +87,12 @@ public interface UserOrdersService extends IService { */ void payment(ResFeignOrderPaymentDto paymentDto); + /** + * 订单发起退款 + * @param orderId 订单ID + */ + void refundApply(Long orderId); + /** * 订单退款 * @param orderId 订单ID @@ -99,6 +105,18 @@ public interface UserOrdersService extends IService { */ void doneRefund(Long orderId); + /** + * 订单退款驳回 + * @param orderId 订单ID + */ + void rejectRefund(Long orderId); + + /** + * 订单退款失败 + * @param orderId 订单ID + */ + void failRefund(Long orderId); + /** * 获取订单详情 * @param orderId 订单id diff --git a/ebike-orders/src/main/java/com/cdzy/orders/service/impl/UserOrdersServiceImpl.java b/ebike-orders/src/main/java/com/cdzy/orders/service/impl/UserOrdersServiceImpl.java index bde5c907..32d38433 100644 --- a/ebike-orders/src/main/java/com/cdzy/orders/service/impl/UserOrdersServiceImpl.java +++ b/ebike-orders/src/main/java/com/cdzy/orders/service/impl/UserOrdersServiceImpl.java @@ -304,6 +304,16 @@ public class UserOrdersServiceImpl extends ServiceImpl Date: Tue, 20 May 2025 10:55:58 +0800 Subject: [PATCH 2/6] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E9=80=80=E6=AC=BE?= =?UTF-8?q?=E5=90=84=E4=B8=AA=E7=8E=AF=E8=8A=82=E5=90=8C=E6=AD=A5=E8=AE=A2?= =?UTF-8?q?=E5=8D=95=E7=8A=B6=E6=80=81=E7=9A=84=E5=AE=9E=E7=8E=B0=EF=BC=8C?= =?UTF-8?q?=E5=A2=9E=E5=8A=A06-=E9=80=80=E6=AC=BE=E7=94=B3=E8=AF=B7?= =?UTF-8?q?=E4=B8=AD=207-=E9=80=80=E6=AC=BE=E9=A9=B3=E5=9B=9E=208-?= =?UTF-8?q?=E9=80=80=E6=AC=BE=E5=A4=B1=E8=B4=A5=E4=B8=89=E7=A7=8D=E7=8A=B6?= =?UTF-8?q?=E6=80=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/EbikeWxPaymentController.java | 7 +----- .../service/impl/EbikeRefundServiceImpl.java | 17 ++++++++------ .../service/impl/WxPayServiceImpl.java | 23 ++++++++++++------- 3 files changed, 26 insertions(+), 21 deletions(-) diff --git a/ebike-payment/src/main/java/com/cdzy/payment/controller/EbikeWxPaymentController.java b/ebike-payment/src/main/java/com/cdzy/payment/controller/EbikeWxPaymentController.java index 81a0274b..d1f73651 100644 --- a/ebike-payment/src/main/java/com/cdzy/payment/controller/EbikeWxPaymentController.java +++ b/ebike-payment/src/main/java/com/cdzy/payment/controller/EbikeWxPaymentController.java @@ -85,12 +85,7 @@ public class EbikeWxPaymentController { @PostMapping("/refund") public JsonResult refund(@RequestBody ReqRefundDto refundDto) { HandleNotifyResult r = wxPayService.refund(refundDto); - if (r.isSuccess()) - return JsonResult.success(); - JSONObject error = JSONObject.parseObject(r.getMessage()); - if (error==null) - return JsonResult.failed(r.getMessage()); - return JsonResult.failed("退款失败", error); + return r.isSuccess()?JsonResult.success(true):JsonResult.failed(r.getMessage()); } /** diff --git a/ebike-payment/src/main/java/com/cdzy/payment/service/impl/EbikeRefundServiceImpl.java b/ebike-payment/src/main/java/com/cdzy/payment/service/impl/EbikeRefundServiceImpl.java index 0ec226c1..b4dbc195 100644 --- a/ebike-payment/src/main/java/com/cdzy/payment/service/impl/EbikeRefundServiceImpl.java +++ b/ebike-payment/src/main/java/com/cdzy/payment/service/impl/EbikeRefundServiceImpl.java @@ -42,7 +42,7 @@ public class EbikeRefundServiceImpl extends ServiceImpl ordersFeignClient.refund(orderId); + case SUCCESS -> ordersFeignClient.doneRefund(orderId); + case ABNORMAL -> ordersFeignClient.failRefund(orderId); } return updateById(ebikeRefund); } diff --git a/ebike-payment/src/main/java/com/cdzy/payment/service/impl/WxPayServiceImpl.java b/ebike-payment/src/main/java/com/cdzy/payment/service/impl/WxPayServiceImpl.java index cd44ffe9..229e36e0 100644 --- a/ebike-payment/src/main/java/com/cdzy/payment/service/impl/WxPayServiceImpl.java +++ b/ebike-payment/src/main/java/com/cdzy/payment/service/impl/WxPayServiceImpl.java @@ -366,7 +366,6 @@ public class WxPayServiceImpl implements WxPayService { ebikeRefund.setRefundApply(ebikePayment.getTotal()); ebikeRefund.setTransactionId(transactionId); ebikeRefund.setReason(reason); - ebikeRefund.setStatus(String.valueOf(Status.PROCESSING.ordinal())); ebikeRefund.setProcessState(String.valueOf(RefundProcessState.applying.ordinal())); ebikeRefund.setSource(String.valueOf(RefoundApplySource.user.ordinal())); ebikeRefundService.saveRefundResult(ebikeRefund); @@ -388,6 +387,10 @@ public class WxPayServiceImpl implements WxPayService { ebikeRefund.setRefund(ebikeRefund.getRefundApply()); ebikeRefund.setRefundMethod(processDto.getMethod()); } + if (String.valueOf(RefundProcessState.closed.ordinal()).equals(processDto.getOperate())) { + // 更新订单状态 + ordersFeignClient.rejectRefund(Long.valueOf(ebikeRefund.getOrderId())); + } return ebikeRefundService.updateById(ebikeRefund); } @@ -452,12 +455,11 @@ public class WxPayServiceImpl implements WxPayService { ebikeRefund.setTotal(amount.getTotal()); ebikeRefund.setStatus(String.valueOf(result.getStatus().ordinal())); ebikeRefund.setCurrency(amount.getCurrency()); - if (Status.SUCCESS.equals(result.getStatus())) { - ebikeRefund.setRefund(result.getAmount().getRefund().doubleValue() / 100.0); - ebikeRefund.setRefundTime(LocalDateTime.now()); - ebikeRefund.setRemark(refundDto.getRemark()); - ebikeRefund.setRefundTransactionId(result.getRefundId()); - } + ebikeRefund.setRefund(result.getAmount().getRefund().doubleValue() / 100.0); + ebikeRefund.setRefundTime(LocalDateTime.now()); + ebikeRefund.setRemark(refundDto.getRemark()); + ebikeRefund.setProcessState(String.valueOf(RefundProcessState.processed.ordinal())); + ebikeRefund.setRefundTransactionId(result.getRefundId()); ebikeRefundService.updateById(ebikeRefund); result_.setSuccess(true); result_.setMessage("退款成功"); @@ -468,7 +470,12 @@ public class WxPayServiceImpl implements WxPayService { return result_; } catch (Exception e) { String err = logError("退款refund", e); - result_.setMessage(err); + try { + JSONObject json = JSON.parseObject(err); + result_.setMessage(json.getString("message")); + }catch (Exception ex) { + result_.setMessage(err); + } return result_; } } From 579c5fc6bf7b1ba6ebe750257a1f77e33f1aa2f5 Mon Sep 17 00:00:00 2001 From: jkcdev Date: Tue, 20 May 2025 11:23:25 +0800 Subject: [PATCH 3/6] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E9=80=80=E6=AC=BE?= =?UTF-8?q?=E5=90=84=E4=B8=AA=E7=8E=AF=E8=8A=82=E5=90=8C=E6=AD=A5=E8=AE=A2?= =?UTF-8?q?=E5=8D=95=E7=8A=B6=E6=80=81=E7=9A=84=E5=AE=9E=E7=8E=B0=EF=BC=8C?= =?UTF-8?q?=E5=A2=9E=E5=8A=A06-=E9=80=80=E6=AC=BE=E7=94=B3=E8=AF=B7?= =?UTF-8?q?=E4=B8=AD=207-=E9=80=80=E6=AC=BE=E9=A9=B3=E5=9B=9E=208-?= =?UTF-8?q?=E9=80=80=E6=AC=BE=E5=A4=B1=E8=B4=A5=E4=B8=89=E7=A7=8D=E7=8A=B6?= =?UTF-8?q?=E6=80=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/cdzy/payment/service/impl/WxPayServiceImpl.java | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/ebike-payment/src/main/java/com/cdzy/payment/service/impl/WxPayServiceImpl.java b/ebike-payment/src/main/java/com/cdzy/payment/service/impl/WxPayServiceImpl.java index 229e36e0..c635dc16 100644 --- a/ebike-payment/src/main/java/com/cdzy/payment/service/impl/WxPayServiceImpl.java +++ b/ebike-payment/src/main/java/com/cdzy/payment/service/impl/WxPayServiceImpl.java @@ -386,8 +386,9 @@ public class WxPayServiceImpl implements WxPayService { if (String.valueOf(RefundProcessState.processing.ordinal()).equals(processDto.getOperate())) { ebikeRefund.setRefund(ebikeRefund.getRefundApply()); ebikeRefund.setRefundMethod(processDto.getMethod()); - } - if (String.valueOf(RefundProcessState.closed.ordinal()).equals(processDto.getOperate())) { + // 更新订单状态 + ordersFeignClient.refund(Long.valueOf(ebikeRefund.getOrderId())); + }else if (String.valueOf(RefundProcessState.closed.ordinal()).equals(processDto.getOperate())) { // 更新订单状态 ordersFeignClient.rejectRefund(Long.valueOf(ebikeRefund.getOrderId())); } From 541727821857693319cd2740940b5e56a2665fda Mon Sep 17 00:00:00 2001 From: attiya <2413103649@qq.com> Date: Tue, 20 May 2025 14:25:06 +0800 Subject: [PATCH 4/6] =?UTF-8?q?=E7=94=A8=E6=88=B7=E7=AB=AF=EF=BC=9A?= =?UTF-8?q?=E6=89=80=E5=9C=A8=E8=BF=90=E8=90=A5=E5=8C=BA=E5=86=85=E7=9A=84?= =?UTF-8?q?=E5=85=A8=E9=83=A8=E7=AB=99=E7=82=B9(=E8=BF=90=E8=90=A5?= =?UTF-8?q?=E4=B8=AD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../cdzy/common/model}/ReqBatchRegionDto.java | 6 +- .../feign/clients/OperateFeignClient.java | 10 +++ .../controller/EbikeRegionController.java | 11 +++ .../service/EbikeOperationRegionService.java | 2 +- .../service/EbikeSiteRegionService.java | 10 ++- .../impl/EbikeOperationRegionServiceImpl.java | 2 +- .../impl/EbikeSiteRegionServiceImpl.java | 15 +++- .../service/impl/UserOrdersServiceImpl.java | 75 ++++++++++++------- .../java/com/cdzy/orders/uitls/RedisUtil.java | 22 ++++++ .../orders/EbikeOrdersApplicationTests.java | 22 ++++-- 10 files changed, 132 insertions(+), 43 deletions(-) rename {ebike-operate/src/main/java/com/cdzy/ebikeoperate/model/dto/request => ebike-common/src/main/java/com/cdzy/common/model}/ReqBatchRegionDto.java (75%) diff --git a/ebike-operate/src/main/java/com/cdzy/ebikeoperate/model/dto/request/ReqBatchRegionDto.java b/ebike-common/src/main/java/com/cdzy/common/model/ReqBatchRegionDto.java similarity index 75% rename from ebike-operate/src/main/java/com/cdzy/ebikeoperate/model/dto/request/ReqBatchRegionDto.java rename to ebike-common/src/main/java/com/cdzy/common/model/ReqBatchRegionDto.java index d989cc48..1921209f 100644 --- a/ebike-operate/src/main/java/com/cdzy/ebikeoperate/model/dto/request/ReqBatchRegionDto.java +++ b/ebike-common/src/main/java/com/cdzy/common/model/ReqBatchRegionDto.java @@ -1,8 +1,10 @@ -package com.cdzy.ebikeoperate.model.dto.request; +package com.cdzy.common.model; import jakarta.validation.constraints.NotNull; import jakarta.validation.constraints.Size; +import lombok.AllArgsConstructor; import lombok.Data; +import lombok.NoArgsConstructor; import java.util.List; @@ -11,6 +13,8 @@ import java.util.List; * @since 2025-04-29 */ @Data +@AllArgsConstructor +@NoArgsConstructor public class ReqBatchRegionDto { /** diff --git a/ebike-feign/src/main/java/com/ebike/feign/clients/OperateFeignClient.java b/ebike-feign/src/main/java/com/ebike/feign/clients/OperateFeignClient.java index 5ebcaee1..a75d10bf 100644 --- a/ebike-feign/src/main/java/com/ebike/feign/clients/OperateFeignClient.java +++ b/ebike-feign/src/main/java/com/ebike/feign/clients/OperateFeignClient.java @@ -2,6 +2,7 @@ package com.ebike.feign.clients; import com.cdzy.common.model.EbikeTracking; import com.cdzy.common.model.JsonResult; +import com.cdzy.common.model.ReqBatchRegionDto; import com.ebike.feign.model.res.ReqUserOperateDto; import com.ebike.feign.model.res.ResFeignEbikeSysRcostsetDto; import com.ebike.feign.model.rsp.FeignEbikeRegionDto; @@ -132,4 +133,13 @@ public interface OperateFeignClient { */ @GetMapping("ebikeRegion/selectSiteListByOperationRegionId") JsonResult selectSiteListByOperationRegionId(@RequestParam("operationRegionId") Long operationRegionId); + + /** + * 根据运营区id获取站点列表 + * + * @param reqBatchRegionDto 运营区id + * @return 结果数据 + */ + @PostMapping("operationRegionIdFilter") + JsonResult> operationRegionIdFilter(@RequestBody ReqBatchRegionDto reqBatchRegionDto); } diff --git a/ebike-operate/src/main/java/com/cdzy/ebikeoperate/controller/EbikeRegionController.java b/ebike-operate/src/main/java/com/cdzy/ebikeoperate/controller/EbikeRegionController.java index 0897f3c8..22d5e2e6 100644 --- a/ebike-operate/src/main/java/com/cdzy/ebikeoperate/controller/EbikeRegionController.java +++ b/ebike-operate/src/main/java/com/cdzy/ebikeoperate/controller/EbikeRegionController.java @@ -4,6 +4,7 @@ import cn.dev33.satoken.stp.StpUtil; import com.cdzy.common.enums.Code; import com.cdzy.common.model.JsonResult; import com.cdzy.common.model.PageParam; +import com.cdzy.common.model.ReqBatchRegionDto; import com.cdzy.ebikeoperate.enums.EbikeRegionInOperation; import com.cdzy.ebikeoperate.enums.RegionLevelType; import com.cdzy.ebikeoperate.mapper.EbikeRegionLevelMapper; @@ -481,4 +482,14 @@ public class EbikeRegionController { List page = siteRegionService.listByOperationRegionId(operationRegionId); return JsonResult.success(page); } + + /** + * 根据运营区id查询站点列表。 + * + */ + @PostMapping("operationRegionIdFilter") + public JsonResult operationRegionIdFilter(@RequestBody ReqBatchRegionDto reqBatchRegionDto) { + List list = siteRegionService.getInOperationIds(reqBatchRegionDto.getIds()); + return JsonResult.success(list); + } } diff --git a/ebike-operate/src/main/java/com/cdzy/ebikeoperate/service/EbikeOperationRegionService.java b/ebike-operate/src/main/java/com/cdzy/ebikeoperate/service/EbikeOperationRegionService.java index 17bb89ce..e071166b 100644 --- a/ebike-operate/src/main/java/com/cdzy/ebikeoperate/service/EbikeOperationRegionService.java +++ b/ebike-operate/src/main/java/com/cdzy/ebikeoperate/service/EbikeOperationRegionService.java @@ -2,7 +2,7 @@ package com.cdzy.ebikeoperate.service; import com.cdzy.common.model.PageParam; import com.cdzy.ebikeoperate.model.dto.request.ReqAuthorizeOperationDto; -import com.cdzy.ebikeoperate.model.dto.request.ReqBatchRegionDto; +import com.cdzy.common.model.ReqBatchRegionDto; import com.cdzy.ebikeoperate.model.dto.request.ReqEbikeOperationRegionDto; import com.cdzy.ebikeoperate.model.dto.response.EbikeOperationRegionPageDto; import com.cdzy.ebikeoperate.model.dto.response.ResEbikeOperationRegionDto; diff --git a/ebike-operate/src/main/java/com/cdzy/ebikeoperate/service/EbikeSiteRegionService.java b/ebike-operate/src/main/java/com/cdzy/ebikeoperate/service/EbikeSiteRegionService.java index 8dc80541..6626e3ed 100644 --- a/ebike-operate/src/main/java/com/cdzy/ebikeoperate/service/EbikeSiteRegionService.java +++ b/ebike-operate/src/main/java/com/cdzy/ebikeoperate/service/EbikeSiteRegionService.java @@ -1,7 +1,7 @@ package com.cdzy.ebikeoperate.service; import com.cdzy.common.model.PageParam; -import com.cdzy.ebikeoperate.model.dto.request.ReqBatchRegionDto; +import com.cdzy.common.model.ReqBatchRegionDto; import com.cdzy.ebikeoperate.model.dto.request.ReqSiteRegionDto; import com.cdzy.ebikeoperate.model.dto.response.ResEbikeSiteRegionInfoDto; import com.cdzy.ebikeoperate.model.dto.response.ResEbikeSiteRegionPageDto; @@ -87,4 +87,12 @@ public interface EbikeSiteRegionService extends IService { * @return 站点列表 */ List listByOperationRegionId(Long operationRegionId); + + + /** + * 筛选出运营中的运营区 + * @param operationRegionIds 运营区id列表 + * @return 运营区id列表 + */ + List getInOperationIds(List operationRegionIds); } diff --git a/ebike-operate/src/main/java/com/cdzy/ebikeoperate/service/impl/EbikeOperationRegionServiceImpl.java b/ebike-operate/src/main/java/com/cdzy/ebikeoperate/service/impl/EbikeOperationRegionServiceImpl.java index 339b80b9..79a09693 100644 --- a/ebike-operate/src/main/java/com/cdzy/ebikeoperate/service/impl/EbikeOperationRegionServiceImpl.java +++ b/ebike-operate/src/main/java/com/cdzy/ebikeoperate/service/impl/EbikeOperationRegionServiceImpl.java @@ -12,7 +12,7 @@ import com.cdzy.ebikeoperate.mapper.EbikeOperationRegionMapper; import com.cdzy.ebikeoperate.mapper.EbikePointMapper; import com.cdzy.ebikeoperate.mapper.EbikeStaffRegionMapper; import com.cdzy.ebikeoperate.model.dto.request.ReqAuthorizeOperationDto; -import com.cdzy.ebikeoperate.model.dto.request.ReqBatchRegionDto; +import com.cdzy.common.model.ReqBatchRegionDto; import com.cdzy.ebikeoperate.model.dto.request.ReqEbikeOperationRegionDto; import com.cdzy.ebikeoperate.model.dto.request.ReqEbikePointDto; import com.cdzy.ebikeoperate.model.dto.response.EbikeOperationRegionPageDto; diff --git a/ebike-operate/src/main/java/com/cdzy/ebikeoperate/service/impl/EbikeSiteRegionServiceImpl.java b/ebike-operate/src/main/java/com/cdzy/ebikeoperate/service/impl/EbikeSiteRegionServiceImpl.java index dcec0a64..aec67905 100644 --- a/ebike-operate/src/main/java/com/cdzy/ebikeoperate/service/impl/EbikeSiteRegionServiceImpl.java +++ b/ebike-operate/src/main/java/com/cdzy/ebikeoperate/service/impl/EbikeSiteRegionServiceImpl.java @@ -3,12 +3,13 @@ package com.cdzy.ebikeoperate.service.impl; import cn.dev33.satoken.stp.StpUtil; import com.cdzy.common.model.JsonResult; import com.cdzy.common.model.PageParam; +import com.cdzy.ebikeoperate.enums.EbikeRegionInOperation; import com.cdzy.ebikeoperate.enums.RegionLevelType; import com.cdzy.ebikeoperate.mapper.EbikeOperationRegionMapper; import com.cdzy.ebikeoperate.mapper.EbikePointMapper; import com.cdzy.ebikeoperate.mapper.EbikeSiteImagesMapper; import com.cdzy.ebikeoperate.mapper.EbikeSiteRegionMapper; -import com.cdzy.ebikeoperate.model.dto.request.ReqBatchRegionDto; +import com.cdzy.common.model.ReqBatchRegionDto; import com.cdzy.ebikeoperate.model.dto.request.ReqEbikePointDto; import com.cdzy.ebikeoperate.model.dto.request.ReqSiteRegionDto; import com.cdzy.ebikeoperate.model.dto.response.ResEbikeSiteRegionInfoDto; @@ -147,10 +148,20 @@ public class EbikeSiteRegionServiceImpl extends ServiceImpl getInOperationIds(List operationRegionIds){ + QueryWrapper queryWrapper = QueryWrapper.create() + .select(EBIKE_OPERATION_REGION.OPERATION_REGION_ID) + .where(EBIKE_OPERATION_REGION.OPERATION_REGION_ID.in(operationRegionIds)) + .where(EBIKE_OPERATION_REGION.IN_OPERATION.eq(EbikeRegionInOperation.IN)); + return this.mapper.selectListWithRelationsByQueryAs(queryWrapper,Long.class); + } + private void delImages(Long siteRegionId) throws Exception { QueryWrapper queryWrapper = QueryWrapper.create() .where(EBIKE_SITE_IMAGES.SITE_REGION_ID.eq(siteRegionId)); diff --git a/ebike-orders/src/main/java/com/cdzy/orders/service/impl/UserOrdersServiceImpl.java b/ebike-orders/src/main/java/com/cdzy/orders/service/impl/UserOrdersServiceImpl.java index bde5c907..01cb4ce5 100644 --- a/ebike-orders/src/main/java/com/cdzy/orders/service/impl/UserOrdersServiceImpl.java +++ b/ebike-orders/src/main/java/com/cdzy/orders/service/impl/UserOrdersServiceImpl.java @@ -3,6 +3,7 @@ package com.cdzy.orders.service.impl; import com.alibaba.fastjson2.JSONObject; import com.cdzy.common.enums.Code; import com.cdzy.common.model.JsonResult; +import com.cdzy.common.model.ReqBatchRegionDto; import com.cdzy.common.model.ResGPSDto; import com.cdzy.common.utils.ConvertUtil; import com.cdzy.orders.component.EbikeCoreHandler; @@ -10,10 +11,7 @@ import com.cdzy.orders.enums.*; import com.cdzy.orders.mapper.EbikeOrderDetailsMapper; import com.cdzy.orders.mapper.UserOrdersMapper; import com.cdzy.orders.model.dto.req.*; -import com.cdzy.orders.model.dto.res.RedisPoint; -import com.cdzy.orders.model.dto.res.RspBikeDto; -import com.cdzy.orders.model.dto.res.RspOrderDetailsInfo; -import com.cdzy.orders.model.dto.res.RspOrderDetailsUserList; +import com.cdzy.orders.model.dto.res.*; import com.cdzy.orders.model.entity.EbikeOrderDetails; import com.cdzy.orders.model.entity.EbikeUser; import com.cdzy.orders.model.entity.EbikeUserOrders; @@ -127,7 +125,7 @@ public class UserOrdersServiceImpl extends ServiceImpl stringCompletableFuture = ebikeCoreHandler.executeCommand(ecuInfo, CmdCode.LOCK, Long.valueOf(bikeInfoDto.getBikeId()), userId); @@ -183,7 +181,7 @@ public class UserOrdersServiceImpl extends ServiceImpl list = new ArrayList<>(); //是否在运营区内 @@ -473,7 +471,7 @@ public class UserOrdersServiceImpl extends ServiceImpl orderDetailsUserList(ReqOrderDetailsDto params) { + public List orderDetailsUserList(ReqOrderDetailsDto params) { String userId = params.getUserId().toString(); PageParam pageParam = params.getPageParam(); - Integer pageNum= pageParam.getPageNum(); - Integer pageSize= pageParam.getPageSize(); + Integer pageNum = pageParam.getPageNum(); + Integer pageSize = pageParam.getPageSize(); Integer offset = (pageNum - 1) * pageSize; // 计算OFFSET - List orderDetailsUserList = userOrdersMapper.getOrderDetailsUserList(userId,offset,pageSize); + List orderDetailsUserList = userOrdersMapper.getOrderDetailsUserList(userId, offset, pageSize); return orderDetailsUserList; } @Override - public JsonResult siteRegionList(ReqSiteDto siteDto) { - String operationId = redisUtil.isPointInAllOperationWithOperationId(siteDto.getLongitude(), siteDto.getLatitude()); + public JsonResult siteRegionList(ReqSiteDto siteDto) { + List area = redisUtil.findNearbyAreaByOperationInAll(siteDto.getLongitude(), siteDto.getLatitude()); + List ids = area.stream().map(dto -> { + String areaId = dto.getAreaId(); + return Long.valueOf(areaId); + }).toList(); + JsonResult> jsonResult = operateFeignClient.operationRegionIdFilter(new ReqBatchRegionDto(ids)); + if (jsonResult.getCode() == Code.SUCCESS) { + throw new RuntimeException("获取运营区信息错误"); + } + List data = jsonResult.getData(); + if (data == null || !data.isEmpty()) { + return JsonResult.success(List.of()); + } + List list = area.stream().filter(dto -> { + String areaId = dto.getAreaId(); + Long aLong = Long.valueOf(areaId); + return data.contains(aLong); + }).toList(); + String operationId = redisUtil.isPointInAllOperationWithOperationId(siteDto.getLongitude(), siteDto.getLatitude(),list); if (operationId == null) { - return JsonResult.success(); + return JsonResult.success(List.of()); } return operateFeignClient.selectSiteListByOperationRegionId(Long.valueOf(operationId)); } diff --git a/ebike-orders/src/main/java/com/cdzy/orders/uitls/RedisUtil.java b/ebike-orders/src/main/java/com/cdzy/orders/uitls/RedisUtil.java index 289c6848..2ec1dda5 100644 --- a/ebike-orders/src/main/java/com/cdzy/orders/uitls/RedisUtil.java +++ b/ebike-orders/src/main/java/com/cdzy/orders/uitls/RedisUtil.java @@ -319,6 +319,28 @@ public class RedisUtil { return null; } + /** + * 判断坐标点是否在附近运营区内 + * + * @param lng 经度 + * @param lat 纬度 + * @return true-在内部;false-在外部或边界上(根据业务需求调整) + */ + public String isPointInAllOperationWithOperationId(double lng, double lat,List area) { + for (ResOperationInAllDto areaDto : area) { + String key = areaDto.getKey().replace("operation_geo","operation_area:meta:"); + String areaId = areaDto.getAreaId(); + String polygonFromWKT = getPolygonFromWKT(areaId, key); + Polygon polygon = parsePolygonFromWKT(polygonFromWKT); + boolean inPolygon = isPointInPolygon(lng, lat, polygon); + if (inPolygon) { + return areaId; + } + } + + return null; + } + /** * 获取附近的运营区 * diff --git a/ebike-orders/src/test/java/com/cdzy/orders/EbikeOrdersApplicationTests.java b/ebike-orders/src/test/java/com/cdzy/orders/EbikeOrdersApplicationTests.java index f5af9cf3..4010c953 100644 --- a/ebike-orders/src/test/java/com/cdzy/orders/EbikeOrdersApplicationTests.java +++ b/ebike-orders/src/test/java/com/cdzy/orders/EbikeOrdersApplicationTests.java @@ -7,6 +7,7 @@ import com.cdzy.common.model.JsonResult; import com.cdzy.orders.component.EbikeCoreHandler; import com.cdzy.orders.enums.CmdCode; import com.cdzy.orders.mapper.UserOrdersMapper; +import com.cdzy.orders.model.dto.res.ResOperationInAllDto; import com.cdzy.orders.model.dto.res.TimeSegment; import com.cdzy.orders.model.entity.EbikeUserOrders; import com.cdzy.orders.uitls.RedisUtil; @@ -57,20 +58,22 @@ class EbikeOrdersApplicationTests { // List timeSegments = TimeUtils.splitByDays(ebikeUserOrders.getStartTime(), ebikeUserOrders.getEndTime()); // timeSegments.forEach(System.out::println); // System.out.println(crossDay); - double lng = 103.97465469434792 ; - double lat = 30.63210622402551 ; + double lng = 103.97465469434792; + double lat = 30.63210622402551; // List nearbyMembers = redisUtil.findNearbyMembers(lng, lat, 5.0); // nearbyMembers.forEach(System.out::println); // redisUtil.addLocation(new Point(lng,lat),"2370171016"); // - boolean pointInOperation = redisUtil.isPointInOperation(lng, lat, 258106438092689409L, 269652483491594240L); + String area = redisUtil.isPointInAllOperationWithOperationId(lng, lat); + System.out.println(area); +// boolean pointInOperation = redisUtil.isPointInOperation(lng, lat, 258106438092689409L, 269652483491594240L); // System.out.println(pointInOperation); } - private static final String model_path ="D:/Projects/eBIKE/mybatis-flex/ebike-orders"; - private static final String mapperPath="D:/Projects/eBIKE/mybatis-flex/ebike-orders/resources/mapper"; - private static final String packageName ="com.cdzy.orders"; - private static final String[] tables= new String[]{ + private static final String model_path = "D:/Projects/eBIKE/mybatis-flex/ebike-orders"; + private static final String mapperPath = "D:/Projects/eBIKE/mybatis-flex/ebike-orders/resources/mapper"; + private static final String packageName = "com.cdzy.orders"; + private static final String[] tables = new String[]{ "ebike_order_attachment_file", "ebike_user_faultreport", "ebike_attachefile_assosiated", @@ -93,6 +96,7 @@ class EbikeOrdersApplicationTests { //生成代码 generator.generate(); } + private GlobalConfig createGlobalConfigUseStyle1() { // 创建配置内容 GlobalConfig globalConfig = new GlobalConfig(); @@ -119,6 +123,7 @@ class EbikeOrdersApplicationTests { .setFileSuffix("Mapper"); // 确保设置正确的后缀名 return globalConfig; } + private GlobalConfig createGlobalConfigUseStyle2() { // 创建配置内容 GlobalConfig globalConfig = new GlobalConfig(); @@ -149,6 +154,7 @@ class EbikeOrdersApplicationTests { // 返回配置 return globalConfig; } + @Test void time() { EbikeUserOrders userOrders = ordersMapper.selectOneById(267861509802156032L); @@ -159,7 +165,7 @@ class EbikeOrdersApplicationTests { @Test void send() { JsonResult jsonResult = maintenanceFeignClient.getEbikeInfoByCode("250306001002"); - if (jsonResult.getCode() != Code.SUCCESS){ + if (jsonResult.getCode() != Code.SUCCESS) { throw new RuntimeException("获取车辆信息失败"); } FeignEbikeBikeInfoDto bikeInfoDto = jsonResult.getData(); From 528c077e9d4d4b64950ce192fb48033888761897 Mon Sep 17 00:00:00 2001 From: attiya <2413103649@qq.com> Date: Tue, 20 May 2025 14:28:20 +0800 Subject: [PATCH 5/6] =?UTF-8?q?=E7=94=A8=E6=88=B7=E7=AB=AF=EF=BC=9A?= =?UTF-8?q?=E6=89=80=E5=9C=A8=E8=BF=90=E8=90=A5=E5=8C=BA=E5=86=85=E7=9A=84?= =?UTF-8?q?=E5=85=A8=E9=83=A8=E7=AB=99=E7=82=B9(=E8=BF=90=E8=90=A5?= =?UTF-8?q?=E4=B8=AD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/java/com/ebike/feign/clients/OperateFeignClient.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ebike-feign/src/main/java/com/ebike/feign/clients/OperateFeignClient.java b/ebike-feign/src/main/java/com/ebike/feign/clients/OperateFeignClient.java index a75d10bf..def90044 100644 --- a/ebike-feign/src/main/java/com/ebike/feign/clients/OperateFeignClient.java +++ b/ebike-feign/src/main/java/com/ebike/feign/clients/OperateFeignClient.java @@ -140,6 +140,6 @@ public interface OperateFeignClient { * @param reqBatchRegionDto 运营区id * @return 结果数据 */ - @PostMapping("operationRegionIdFilter") + @PostMapping("ebikeRegion/operationRegionIdFilter") JsonResult> operationRegionIdFilter(@RequestBody ReqBatchRegionDto reqBatchRegionDto); } From a8e1fd3a632ea37058d8eba62ba75f2a3825aa2d Mon Sep 17 00:00:00 2001 From: attiya <2413103649@qq.com> Date: Tue, 20 May 2025 14:33:12 +0800 Subject: [PATCH 6/6] =?UTF-8?q?=E7=94=A8=E6=88=B7=E7=AB=AF=EF=BC=9A?= =?UTF-8?q?=E6=89=80=E5=9C=A8=E8=BF=90=E8=90=A5=E5=8C=BA=E5=86=85=E7=9A=84?= =?UTF-8?q?=E5=85=A8=E9=83=A8=E7=AB=99=E7=82=B9(=E8=BF=90=E8=90=A5?= =?UTF-8?q?=E4=B8=AD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ebikeoperate/service/impl/EbikeSiteRegionServiceImpl.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ebike-operate/src/main/java/com/cdzy/ebikeoperate/service/impl/EbikeSiteRegionServiceImpl.java b/ebike-operate/src/main/java/com/cdzy/ebikeoperate/service/impl/EbikeSiteRegionServiceImpl.java index aec67905..e0a73191 100644 --- a/ebike-operate/src/main/java/com/cdzy/ebikeoperate/service/impl/EbikeSiteRegionServiceImpl.java +++ b/ebike-operate/src/main/java/com/cdzy/ebikeoperate/service/impl/EbikeSiteRegionServiceImpl.java @@ -159,7 +159,7 @@ public class EbikeSiteRegionServiceImpl extends ServiceImpl