From 2e43d137c7832e149f3df4145aa7fcca2153ef9c Mon Sep 17 00:00:00 2001
From: luodangjia <luodangjia>
Date: 星期六, 31 八月 2024 16:52:53 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master'
---
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TChargingOrderServiceImpl.java | 265 ++++++++
ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/TInvoiceTypeController.java | 2
ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/vo/ChargingOrderListVO.java | 71 ++
ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/dto/InfoCouponDto.java | 5
ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/query/ChargingOrderQuery.java | 2
ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/vo/TOrderAppealVO.java | 23
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TShoppingOrderServiceImpl.java | 208 ++++++
ruoyi-api/ruoyi-api-payment/src/main/java/com/ruoyi/payment/api/factory/WxPaymentFallbackFactory.java | 6
ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/model/PlatformStartCharging.java | 2
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/dto/MyShoppingOrderList.java | 4
ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/model/TAppUserVipDetail.java | 5
ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/vo/ChargingOrderInfoVO.java | 35 +
ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/TInvoiceInformationController.java | 16
ruoyi-api/ruoyi-api-integration/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports | 4
ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/TAppUserVipDetailController.java | 30
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/TExchangeOrderController.java | 17
ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/factory/ChargingGunFallbackFactory.java | 6
ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/vo/ChargingOrderTimeVO.java | 34 +
ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/model/TShoppingOrderRefund.java | 8
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/TExchangeOrderService.java | 3
ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/model/TChargingOrder.java | 10
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/dto/MyShoppingOrderInfo.java | 2
ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/feignClient/CouponClient.java | 10
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/TOrderEvaluateController.java | 2
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/dto/PayOrderDto.java | 2
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/TOrderAppealService.java | 2
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TChargingOrderRefundServiceImpl.java | 15
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TOrderAppealServiceImpl.java | 61 +
ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/dto/ExchangeDto.java | 2
ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/model/ChargingHandshake.java | 3
ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/TAppUserAddressController.java | 10
ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/impl/TChargingPileServiceImpl.java | 18
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TChargingOrderAccountingStrategyServiceImpl.java | 6
ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/feignClient/ChargingGunClient.java | 10
ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/feignClient/ChargingOrderAccountingStrategyClient.java | 2
ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/mongodb/service/ChargingHandshakeService.java | 2
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/TShoppingOrderController.java | 57 +
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TOrderInvoiceServiceImpl.java | 2
ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/feignClient/SendMessageClient.java | 26
ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/vo/ChargingOrderVO.java | 3
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TVipOrderRefundServiceImpl.java | 15
ruoyi-api/ruoyi-api-payment/src/main/java/com/ruoyi/payment/api/vo/WxRefundNotifyResp.java | 35 +
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TVipOrderServiceImpl.java | 14
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/TOrderAppealController.java | 44 +
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/mapper/TChargingOrderMapper.java | 5
ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/TChargingGunController.java | 24
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/filter/AuthFilter.java | 2
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TExchangeOrderServiceImpl.java | 62 +
ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/factory/SendMessageFallbackFactory.java | 34 +
ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/vo/SiteNameVO.java | 24
ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/model/TOrderAppeal.java | 2
ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/impl/TAccountingStrategyDetailServiceImpl.java | 2
ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/TGoodsController.java | 19
ruoyi-service/ruoyi-chargingPile/src/main/resources/mapper/chargingPile/SiteMapper.xml | 1
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/TShoppingOrderService.java | 15
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/dto/MyChargingOrderList.java | 6
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/TChargingOrderService.java | 3
ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/vo/InvoiceInformationVo.java | 62 ++
ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/factory/CouponFallbackFactory.java | 5
ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/controller/ChargingHandshakeController.java | 35 +
ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/TAppUserController.java | 10
ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/factory/GoodsFallbackFactory.java | 5
ruoyi-service/ruoyi-payment/src/main/java/com/ruoyi/payment/controller/WxPayController.java | 22
ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/model/TExchangeOrder.java | 9
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/TChargingOrderController.java | 85 +-
ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/vo/TCharingOrderVO.java | 2
ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/model/TInvoiceInformation.java | 6
ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/model/TShoppingOrder.java | 10
ruoyi-api/ruoyi-api-payment/src/main/java/com/ruoyi/payment/api/feignClient/WxPaymentClient.java | 7
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TShoppingOrderRefundServiceImpl.java | 15
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/dto/ChargingListQuery.java | 38 +
ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/feignClient/ChargingHandshakeClient.java | 26
ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/model/TVipOrder.java | 9
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/dto/ChargingDetails.java | 6
ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/model/TChargingOrderAccountingStrategy.java | 12
ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/feignClient/GoodsClient.java | 10
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/FinancialSettlementController.java | 97 +++
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/TVipOrderController.java | 2
ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/TCouponController.java | 14
ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/TEvaluationTagController.java | 5
ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/factory/ChargingHandshakeFallbackFactory.java | 37 +
81 files changed, 1,639 insertions(+), 188 deletions(-)
diff --git a/ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/dto/InfoCouponDto.java b/ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/dto/InfoCouponDto.java
index d6fcd90..083e79f 100644
--- a/ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/dto/InfoCouponDto.java
+++ b/ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/dto/InfoCouponDto.java
@@ -15,7 +15,7 @@
@ApiModelProperty(value = "主键")
@TableId(value = "id", type = IdType.AUTO)
- private Long id;
+ private String id;
@ApiModelProperty(value = "优惠券名称")
@TableField("name")
private String name;
@@ -42,4 +42,7 @@
@TableField("start_time")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm", timezone = "GMT+8")
private LocalDateTime startTime;
+ @ApiModelProperty(value = "最高优惠金额")
+ @TableField("maximum_discount_amount")
+ private BigDecimal maximumDiscountAmount;
}
diff --git a/ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/model/TAppUserVipDetail.java b/ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/model/TAppUserVipDetail.java
index ed91fc3..ffc516b 100644
--- a/ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/model/TAppUserVipDetail.java
+++ b/ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/model/TAppUserVipDetail.java
@@ -3,6 +3,7 @@
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
+import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@@ -57,10 +58,12 @@
@ApiModelProperty(value = "会员开始时间")
@TableField("start_time")
+ @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
private LocalDateTime startTime;
@ApiModelProperty(value = "会员结束时间")
@TableField("end_time")
+ @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
private LocalDateTime endTime;
@TableField("create_time")
@@ -74,6 +77,8 @@
@ApiModelProperty(value = "要赠送的优惠卷")
@TableField("coupon_ids")
private String couponIds;
+ @TableField(exist = false)
+ private String vipName;
}
diff --git a/ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/model/TInvoiceInformation.java b/ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/model/TInvoiceInformation.java
index 439ced7..103142b 100644
--- a/ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/model/TInvoiceInformation.java
+++ b/ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/model/TInvoiceInformation.java
@@ -38,7 +38,11 @@
@ApiModelProperty(value = "发票类型(1=增值税普通发票,2=增值税专用发票)")
@TableField("invoice_type")
- private Integer invoiceType;
+ private String invoiceType;
+
+ @ApiModelProperty(value = "发票类型(1=增值税普通发票,2=增值税专用发票)")
+ @TableField("invoice_type_id")
+ private Integer invoiceTypeId;
@ApiModelProperty(value = "抬头类型(1=个人,2=企业)")
@TableField("invoicing_object_type")
diff --git a/ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/vo/InvoiceInformationVo.java b/ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/vo/InvoiceInformationVo.java
new file mode 100644
index 0000000..6a6b7c6
--- /dev/null
+++ b/ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/vo/InvoiceInformationVo.java
@@ -0,0 +1,62 @@
+package com.ruoyi.account.api.vo;
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.ruoyi.common.core.web.domain.BasePojo;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+/**
+ * <p>
+ *
+ * </p>
+ *
+ * @author luodangjia
+ * @since 2024-08-06
+ */
+@Data
+public class InvoiceInformationVo {
+
+
+ private String id;
+
+ @ApiModelProperty(value = "用户id")
+ private Long appUserId;
+
+ @ApiModelProperty(value = "发票类型(1=增值税普通发票,2=增值税专用发票)")
+ private String invoiceType;
+
+ @ApiModelProperty(value = "发票类型id")
+ private Integer invoiceTypeId;
+
+ @ApiModelProperty(value = "抬头类型(1=个人,2=企业)")
+ private Integer invoicingObjectType;
+
+ @ApiModelProperty(value = "名称")
+ private String name;
+
+ @ApiModelProperty(value = "纳税识别号")
+ private String taxIdentificationNumber;
+
+ @ApiModelProperty(value = "公司地址")
+ private String companyAddress;
+
+ @ApiModelProperty(value = "公司电话")
+ private String companyPhone;
+
+ @ApiModelProperty(value = "开户银行")
+ private String depositBank;
+
+ @ApiModelProperty(value = "银行账户")
+ private String bankAccount;
+
+ @ApiModelProperty(value = "设置默认(0=否,1=是)")
+ private Integer isDefault;
+
+
+
+
+}
diff --git a/ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/factory/ChargingGunFallbackFactory.java b/ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/factory/ChargingGunFallbackFactory.java
index ee67b6f..3c9c594 100644
--- a/ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/factory/ChargingGunFallbackFactory.java
+++ b/ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/factory/ChargingGunFallbackFactory.java
@@ -4,6 +4,7 @@
import com.ruoyi.chargingPile.api.feignClient.ChargingPileClient;
import com.ruoyi.chargingPile.api.model.TChargingGun;
import com.ruoyi.chargingPile.api.model.TChargingPile;
+import com.ruoyi.chargingPile.api.vo.SiteNameVO;
import com.ruoyi.common.core.domain.R;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -36,6 +37,11 @@
public R<TChargingGun> getChargingGunById(Integer id) {
return R.fail("根据id获取充电枪失败:" + throwable.getMessage());
}
+
+ @Override
+ public R<SiteNameVO> getAllInfoById(Integer id) {
+ return R.fail("通过枪id获取站点、桩、枪的名称失败:" + throwable.getMessage());
+ }
};
}
}
diff --git a/ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/feignClient/ChargingGunClient.java b/ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/feignClient/ChargingGunClient.java
index 149625a..1e9cf96 100644
--- a/ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/feignClient/ChargingGunClient.java
+++ b/ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/feignClient/ChargingGunClient.java
@@ -2,6 +2,7 @@
import com.ruoyi.chargingPile.api.factory.ChargingGunFallbackFactory;
import com.ruoyi.chargingPile.api.model.TChargingGun;
+import com.ruoyi.chargingPile.api.vo.SiteNameVO;
import com.ruoyi.common.core.constant.ServiceNameConstants;
import com.ruoyi.common.core.domain.R;
import org.springframework.cloud.openfeign.FeignClient;
@@ -32,4 +33,13 @@
*/
@PostMapping("/t-charging-gun/getChargingGunById/{id}")
R<TChargingGun> getChargingGunById(@PathVariable("id") Integer id);
+
+ /**
+ * 通过枪id获取站点、桩、枪的名称VO
+ * @param id
+ * @return
+ */
+ @PostMapping("/t-charging-gun/getAllInfoById/{id}")
+ R<SiteNameVO> getAllInfoById(@PathVariable("id") Integer id);
+
}
diff --git a/ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/vo/SiteNameVO.java b/ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/vo/SiteNameVO.java
new file mode 100644
index 0000000..06049e4
--- /dev/null
+++ b/ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/vo/SiteNameVO.java
@@ -0,0 +1,24 @@
+package com.ruoyi.chargingPile.api.vo;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+
+@Data
+@ApiModel(value = "获取站点、桩、枪的名称VO")
+public class SiteNameVO implements Serializable {
+
+ @ApiModelProperty(value = "站点名称")
+ private String siteName;
+ @ApiModelProperty(value = "桩名称")
+ private String pileName;
+ @ApiModelProperty(value = "桩号")
+ private Integer pileNumber;
+ @ApiModelProperty(value = "枪名称")
+ private String gunName;
+ @ApiModelProperty(value = "枪号")
+ private String gunNumber;
+
+}
diff --git a/ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/factory/ChargingHandshakeFallbackFactory.java b/ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/factory/ChargingHandshakeFallbackFactory.java
new file mode 100644
index 0000000..a1b0f16
--- /dev/null
+++ b/ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/factory/ChargingHandshakeFallbackFactory.java
@@ -0,0 +1,37 @@
+package com.ruoyi.integration.api.factory;
+
+import com.ruoyi.common.core.domain.R;
+import com.ruoyi.integration.api.feignClient.ChargingHandshakeClient;
+import com.ruoyi.integration.api.feignClient.UploadRealTimeMonitoringDataClient;
+import com.ruoyi.integration.api.model.ChargingHandshake;
+import com.ruoyi.integration.api.model.UploadRealTimeMonitoringData;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.cloud.openfeign.FallbackFactory;
+import org.springframework.stereotype.Component;
+
+import java.util.List;
+
+/**
+ * 充电桩服务降级处理
+ *
+ * @author ruoyi
+ */
+@Component
+public class ChargingHandshakeFallbackFactory implements FallbackFactory<ChargingHandshakeClient>
+{
+ private static final Logger log = LoggerFactory.getLogger(ChargingHandshakeFallbackFactory.class);
+
+ @Override
+ public ChargingHandshakeClient create(Throwable throwable) {
+ log.error("调用充电握手数据失败:{}", throwable.getMessage());
+ return new ChargingHandshakeClient() {
+
+
+ @Override
+ public R<ChargingHandshake> getDataByOrderCode(String code) {
+ return R.fail("根据订单号查询充电握手数据失败:" + throwable.getMessage());
+ }
+ };
+ }
+}
diff --git a/ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/factory/SendMessageFallbackFactory.java b/ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/factory/SendMessageFallbackFactory.java
new file mode 100644
index 0000000..863530b
--- /dev/null
+++ b/ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/factory/SendMessageFallbackFactory.java
@@ -0,0 +1,34 @@
+package com.ruoyi.integration.api.factory;
+
+import com.ruoyi.common.core.domain.R;
+import com.ruoyi.integration.api.feignClient.ChargingHandshakeClient;
+import com.ruoyi.integration.api.feignClient.SendMessageClient;
+import com.ruoyi.integration.api.model.ChargingHandshake;
+import com.ruoyi.integration.api.model.PlatformStartCharging;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.cloud.openfeign.FallbackFactory;
+import org.springframework.stereotype.Component;
+
+/**
+ * 充电桩服务降级处理
+ *
+ * @author ruoyi
+ */
+@Component
+public class SendMessageFallbackFactory implements FallbackFactory<SendMessageClient>
+{
+ private static final Logger log = LoggerFactory.getLogger(SendMessageFallbackFactory.class);
+
+ @Override
+ public SendMessageClient create(Throwable throwable) {
+ log.error("发送充电桩消息失败:{}", throwable.getMessage());
+ return new SendMessageClient() {
+
+
+ @Override
+ public void platformStartCharging(PlatformStartCharging platformStartCharging) {
+ }
+ };
+ }
+}
diff --git a/ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/feignClient/ChargingHandshakeClient.java b/ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/feignClient/ChargingHandshakeClient.java
new file mode 100644
index 0000000..b81372d
--- /dev/null
+++ b/ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/feignClient/ChargingHandshakeClient.java
@@ -0,0 +1,26 @@
+package com.ruoyi.integration.api.feignClient;
+
+import com.ruoyi.common.core.constant.ServiceNameConstants;
+import com.ruoyi.common.core.domain.R;
+import com.ruoyi.integration.api.factory.ChargingHandshakeFallbackFactory;
+import com.ruoyi.integration.api.model.ChargingHandshake;
+import org.springframework.cloud.openfeign.FeignClient;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+
+/**
+ * @author zhibing.pu
+ * @Date 2024/8/28 10:46
+ */
+@FeignClient(contextId = "ChargingHandshakeClient", value = ServiceNameConstants.INTEGRATION_SERVICE, fallbackFactory = ChargingHandshakeFallbackFactory.class)
+public interface ChargingHandshakeClient {
+
+
+ /**
+ * 根据订单号查询充电握手数据
+ * @param code
+ * @return
+ */
+ @PostMapping("/chargingHandshake/getDataByOrderCode")
+ R<ChargingHandshake> getDataByOrderCode(@RequestParam("code") String code);
+}
diff --git a/ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/feignClient/SendMessageClient.java b/ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/feignClient/SendMessageClient.java
new file mode 100644
index 0000000..0657802
--- /dev/null
+++ b/ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/feignClient/SendMessageClient.java
@@ -0,0 +1,26 @@
+package com.ruoyi.integration.api.feignClient;
+
+import com.ruoyi.common.core.constant.ServiceNameConstants;
+import com.ruoyi.integration.api.factory.SendMessageFallbackFactory;
+import com.ruoyi.integration.api.model.EndCharge;
+import com.ruoyi.integration.api.model.PlatformStartCharging;
+import org.springframework.cloud.openfeign.FeignClient;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+
+/**
+ * @author zhibing.pu
+ * @Date 2024/8/28 16:53
+ */
+@FeignClient(contextId = "SendMessageClient", value = ServiceNameConstants.INTEGRATION_SERVICE, fallbackFactory = SendMessageFallbackFactory.class)
+public interface SendMessageClient {
+
+
+ /**
+ * 远程控制启动充电
+ * @param platformStartCharging
+ * @return
+ */
+ @PostMapping("/sendMessage/platformStartCharging")
+ void platformStartCharging(@RequestBody PlatformStartCharging platformStartCharging);
+}
diff --git a/ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/model/ChargingHandshake.java b/ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/model/ChargingHandshake.java
index 872cc2e..98158a9 100644
--- a/ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/model/ChargingHandshake.java
+++ b/ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/model/ChargingHandshake.java
@@ -2,6 +2,7 @@
import lombok.Data;
import lombok.experimental.Accessors;
+import org.springframework.data.annotation.Id;
import org.springframework.data.mongodb.core.mapping.Document;
import java.math.BigDecimal;
@@ -14,7 +15,7 @@
@Document(collection = "charging_handshake") //指定要对应的文档名(表名)
@Accessors(chain = true)
public class ChargingHandshake extends BaseModel {
-
+ @Id
private String transaction_serial_number;// 交易流水号
private String charging_pile_code;// 桩编码
private String charging_gun_code;// 抢号
diff --git a/ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/model/PlatformStartCharging.java b/ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/model/PlatformStartCharging.java
index 5edb4de..b19b471 100644
--- a/ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/model/PlatformStartCharging.java
+++ b/ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/model/PlatformStartCharging.java
@@ -2,6 +2,7 @@
import lombok.Data;
import lombok.experimental.Accessors;
+import org.springframework.data.annotation.Id;
import org.springframework.data.mongodb.core.mapping.Document;
import java.math.BigDecimal;
@@ -15,6 +16,7 @@
@Accessors(chain = true)
public class PlatformStartCharging extends BaseModel {
+ @Id
private String transaction_serial_number; // 交易流水号
private String charging_pile_code; // 桩编码
private String charging_gun_code; // 抢号
diff --git a/ruoyi-api/ruoyi-api-integration/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports b/ruoyi-api/ruoyi-api-integration/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports
index 1dff966..5d5cc8f 100644
--- a/ruoyi-api/ruoyi-api-integration/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports
+++ b/ruoyi-api/ruoyi-api-integration/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports
@@ -1,2 +1,4 @@
com.ruoyi.integration.api.factory.IntegrationFallbackFactory
-com.ruoyi.integration.api.factory.UploadRealTimeMonitoringDataFallbackFactory
\ No newline at end of file
+com.ruoyi.integration.api.factory.UploadRealTimeMonitoringDataFallbackFactory
+com.ruoyi.integration.api.factory.ChargingHandshakeFallbackFactory
+com.ruoyi.integration.api.factory.SendMessageFallbackFactory
\ No newline at end of file
diff --git a/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/feignClient/ChargingOrderAccountingStrategyClient.java b/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/feignClient/ChargingOrderAccountingStrategyClient.java
index 5d51fbc..2f98b2c 100644
--- a/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/feignClient/ChargingOrderAccountingStrategyClient.java
+++ b/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/feignClient/ChargingOrderAccountingStrategyClient.java
@@ -36,6 +36,6 @@
* @param days
* @return
*/
- @PostMapping("/t-charging-order-getDailyChargingDegree-strategy/getUtilizationTrend/{days}")
+ @PostMapping("/t-charging-order-accounting-strategy/getDailyChargingDegree/{days}")
R<List<Double>> getDailyChargingDegree(@PathVariable("days") Integer days, @RequestParam("siteIds") Set<Integer> siteIds);
}
diff --git a/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/model/TChargingOrder.java b/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/model/TChargingOrder.java
index 0e9cab6..2dacfee 100644
--- a/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/model/TChargingOrder.java
+++ b/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/model/TChargingOrder.java
@@ -181,6 +181,12 @@
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
@TableField("pay_time")
private LocalDateTime payTime;
-
-
+
+ @ApiModelProperty(value = "累计服务费")
+ @TableField("service_charge")
+ private BigDecimal serviceCharge;
+
+ @ApiModelProperty(value = "累计电费")
+ @TableField("electrovalence")
+ private BigDecimal electrovalence;
}
diff --git a/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/model/TChargingOrderAccountingStrategy.java b/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/model/TChargingOrderAccountingStrategy.java
index 67a9f61..68c2568 100644
--- a/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/model/TChargingOrderAccountingStrategy.java
+++ b/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/model/TChargingOrderAccountingStrategy.java
@@ -72,5 +72,17 @@
@TableField("period_service_price")
private BigDecimal periodServicePrice;
+ @ApiModelProperty(value = "会员抵扣")
+ @TableField(exist = false)
+ private BigDecimal vipDiscount;
+
+ @ApiModelProperty(value = "优惠券抵扣")
+ @TableField(exist = false)
+ private BigDecimal couponDiscount;
+
+ @ApiModelProperty(value = "最终服务费")
+ @TableField(exist = false)
+ private BigDecimal finalService;
+
}
diff --git a/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/model/TExchangeOrder.java b/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/model/TExchangeOrder.java
index 16d3a99..b40f900 100644
--- a/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/model/TExchangeOrder.java
+++ b/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/model/TExchangeOrder.java
@@ -113,6 +113,15 @@
@ApiModelProperty(value = "取消人")
@TableField(exist = false)
private String cancellationName;
+ @ApiModelProperty(value = "商品名称")
+ @TableField(exist = false)
+ private String name;
+ @ApiModelProperty(value = "下单手机号")
+ @TableField(exist = false)
+ private String phone;
+ @ApiModelProperty(value = "订单id")
+ @TableField(exist = false)
+ private String uid;
}
diff --git a/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/model/TOrderAppeal.java b/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/model/TOrderAppeal.java
index 29320fa..344daa0 100644
--- a/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/model/TOrderAppeal.java
+++ b/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/model/TOrderAppeal.java
@@ -70,6 +70,8 @@
@ApiModelProperty(value = "申诉反馈")
@TableField("feedback")
private String feedback;
+ @TableField(exist = false)
+ private String uid;
@ApiModelProperty(value = "反馈人id")
@TableField("feedback_user_id")
diff --git a/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/model/TShoppingOrder.java b/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/model/TShoppingOrder.java
index 9679d6a..eb32601 100644
--- a/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/model/TShoppingOrder.java
+++ b/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/model/TShoppingOrder.java
@@ -162,7 +162,12 @@
@TableField("pay_time")
private LocalDateTime payTime;
-
+ @ApiModelProperty(value = "下单手机号")
+ @TableField(exist = false)
+ private String phone;
+ @ApiModelProperty(value = "商品/优惠券名称")
+ @TableField(exist = false)
+ private String name;
@ApiModelProperty(value = "收货人")
@TableField(exist = false)
private String receivingName;
@@ -175,5 +180,8 @@
@ApiModelProperty(value = "取消人")
@TableField(exist = false)
private String cancellationName;
+ @ApiModelProperty(value = "订单id")
+ @TableField(exist = false)
+ private String uid;
}
diff --git a/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/model/TShoppingOrderRefund.java b/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/model/TShoppingOrderRefund.java
index f3aa48a..708996e 100644
--- a/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/model/TShoppingOrderRefund.java
+++ b/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/model/TShoppingOrderRefund.java
@@ -29,6 +29,14 @@
@ApiModelProperty(value = "主键")
@TableField("id")
private Long id;
+
+ @ApiModelProperty(value = "支付时间")
+ @TableField("pay_time")
+ private LocalDateTime payTime;
+
+ @ApiModelProperty(value = "支付流水号")
+ @TableField("pay_code")
+ private String payCode;
@ApiModelProperty(value = "累计退款金额")
@TableField("pay_amount")
diff --git a/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/model/TVipOrder.java b/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/model/TVipOrder.java
index 9349993..ab4f606 100644
--- a/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/model/TVipOrder.java
+++ b/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/model/TVipOrder.java
@@ -89,5 +89,14 @@
@ApiModelProperty(value = "退款金额")
@TableField("refund_amount")
private BigDecimal refundAmount;
+ @ApiModelProperty(value = "会员类型名称")
+ @TableField(exist = false)
+ private String name;
+ @ApiModelProperty(value = "uid")
+ @TableField(exist = false)
+ private String uid;
+ @ApiModelProperty(value = "userUid")
+ @TableField(exist = false)
+ private String userUid;
}
diff --git a/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/query/ChargingOrderQuery.java b/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/query/ChargingOrderQuery.java
index 267f10a..a7ecf9f 100644
--- a/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/query/ChargingOrderQuery.java
+++ b/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/query/ChargingOrderQuery.java
@@ -9,7 +9,7 @@
import java.util.List;
@Data
-@ApiModel(value = "ChargingOrderQuery对象",description = "管理后台充电订单查询对象")
+@ApiModel(value = "ChargingOrderQuery充电桩订单查询对象",description = "管理后台充电桩订单查询对象")
public class ChargingOrderQuery extends BasePage {
@ApiModelProperty(value = "订单编号")
private String code;
diff --git a/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/vo/ChargingOrderInfoVO.java b/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/vo/ChargingOrderInfoVO.java
new file mode 100644
index 0000000..a0ae96a
--- /dev/null
+++ b/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/vo/ChargingOrderInfoVO.java
@@ -0,0 +1,35 @@
+package com.ruoyi.order.api.vo;
+
+import com.ruoyi.order.api.model.TChargingOrder;
+import com.ruoyi.order.api.model.TChargingOrderAccountingStrategy;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.math.BigDecimal;
+import java.util.List;
+
+@Data
+@ApiModel(value = "充电桩订单列表查看详情",description = "充电桩订单列表查看详情")
+public class ChargingOrderInfoVO {
+ @ApiModelProperty(value = "充电电流")
+ private String cdElectronic;
+ @ApiModelProperty(value = "充电电压")
+ private String cdVoltage;
+ @ApiModelProperty(value = "剩余电量")
+ private String surplus;
+ @ApiModelProperty(value = "实时总功率")
+ private String totalPower;
+ @ApiModelProperty(value = "车牌号")
+ private String licensePlate;
+ @ApiModelProperty(value = "车辆品牌")
+ private String vehicleBrand;
+ @ApiModelProperty(value = "车辆类型")
+ private String vehicleModel;
+ @ApiModelProperty(value = "用车类型")
+ private String vehicleUse;
+
+ @ApiModelProperty(value = "充电明细列表")
+ private List<TChargingOrderAccountingStrategy> list;
+
+}
diff --git a/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/vo/ChargingOrderListVO.java b/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/vo/ChargingOrderListVO.java
new file mode 100644
index 0000000..286972a
--- /dev/null
+++ b/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/vo/ChargingOrderListVO.java
@@ -0,0 +1,71 @@
+package com.ruoyi.order.api.vo;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.ruoyi.order.api.model.TChargingOrder;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.math.BigDecimal;
+import java.time.LocalDateTime;
+
+@Data
+@ApiModel(value = "ChargingOrderListVO对象",description = "充电时段统计列表VO")
+public class ChargingOrderListVO {
+ @ApiModelProperty(value = "电站名称")
+ private String siteName;
+ @ApiModelProperty(value = "电站id")
+ private Integer siteId;
+ @ApiModelProperty(value = "充电桩id")
+ private Integer chargingPileId;
+ @ApiModelProperty(value = "用户id")
+ private Long appUserId;
+ @ApiModelProperty(value = "用户车辆id")
+ private Long appUserCarId;
+ @ApiModelProperty(value = "充电枪id")
+ private Integer chargingGunId;
+ @ApiModelProperty(value = "订单编号")
+ private String code;
+ @ApiModelProperty(value = "订单类型(1=充电订单(小程序),2=充电订单(刷卡))")
+ private String orderType;
+ @ApiModelProperty(value = "充电终端名称 桩+枪")
+ private String terminalName;
+ @ApiModelProperty(value = "充电时间 秒")
+ private Long chargingSecond;
+ @ApiModelProperty(value = "充电电流 度")
+ private BigDecimal chargingCapacity;
+ @ApiModelProperty(value = "车牌号")
+ private String licensePlate;
+ @ApiModelProperty(value = "客户手机号")
+ private String phone;
+ @ApiModelProperty(value = "充电到账金额")
+ private BigDecimal paymentAmount;
+ @ApiModelProperty(value = "累计电费")
+ private BigDecimal electrovalence;
+ @ApiModelProperty(value = "累计服务费")
+ private BigDecimal serviceCharge;
+ @ApiModelProperty(value = "平台手续费")
+ private BigDecimal commissionAmount;
+ @ApiModelProperty(value = "引流平台")
+ private String sourceName;
+ @ApiModelProperty(value = "平台分佣")
+ private BigDecimal sharingAmount;
+ @ApiModelProperty(value = "开始时间")
+ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+ private LocalDateTime startTime;
+ @ApiModelProperty(value = "结束时间")
+ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+ private LocalDateTime endTime;
+ @ApiModelProperty(value = "开始soc")
+ private String startSoc;
+ @ApiModelProperty(value = "结束soc")
+ private String endSoc;
+ @ApiModelProperty(value = "结束原因 (0=异常终止,1=主动终止,2=满电终止,3=费用不足终止)")
+ private Integer endMode;
+ @ApiModelProperty(value = "电流占比")
+ private String electronicProportion;
+ @ApiModelProperty(value = "订单id")
+ private Long id;
+ @ApiModelProperty(value = "订单uid")
+ private String uid;
+}
diff --git a/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/vo/ChargingOrderTimeVO.java b/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/vo/ChargingOrderTimeVO.java
new file mode 100644
index 0000000..eef3f64
--- /dev/null
+++ b/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/vo/ChargingOrderTimeVO.java
@@ -0,0 +1,34 @@
+package com.ruoyi.order.api.vo;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.ruoyi.common.core.web.page.PageInfo;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.math.BigDecimal;
+import java.time.LocalDateTime;
+import java.util.List;
+
+@Data
+@ApiModel(value = "ChargingOrderTimeVO对象",description = "充电时段统计VO")
+public class ChargingOrderTimeVO {
+ @ApiModelProperty(value = "订单数量")
+ private Integer orderCount;
+ @ApiModelProperty(value = "充电总度数")
+ private BigDecimal chargingCapacity;
+ @ApiModelProperty(value = "充电到账金额")
+ private BigDecimal paymentAmount;
+ @ApiModelProperty(value = "累计电费")
+ private BigDecimal electrovalence;
+ @ApiModelProperty(value = "累计服务费")
+ private BigDecimal serviceCharge;
+ @ApiModelProperty(value = "尖峰平谷充电量")
+ private String capacityProportion;
+ @ApiModelProperty(value = "尖峰平谷服务费")
+ private String serviceProportion;
+ @ApiModelProperty(value = "尖峰平谷充电到账")
+ private String electronicProportion;
+ @ApiModelProperty(value = "列表数据")
+ private PageInfo<ChargingOrderListVO> list;
+}
diff --git a/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/vo/ChargingOrderVO.java b/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/vo/ChargingOrderVO.java
index df78e8e..1c5ba30 100644
--- a/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/vo/ChargingOrderVO.java
+++ b/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/vo/ChargingOrderVO.java
@@ -13,7 +13,7 @@
import java.util.List;
@Data
-@ApiModel(value = "SiteDetailEvaluateVO对象",description = "站点详情订单评价")
+@ApiModel(value = "ChargingOrderVO对象",description = "充电订单列表VO")
public class ChargingOrderVO extends TChargingOrder {
@ApiModelProperty(value = "站点名称")
private String siteName;
@@ -38,5 +38,4 @@
private Integer count;
@ApiModelProperty(value = "1明星充电 2快电 3新电途")
private Integer orderSource;
-
}
diff --git a/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/vo/TCharingOrderVO.java b/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/vo/TCharingOrderVO.java
index 8608405..5929188 100644
--- a/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/vo/TCharingOrderVO.java
+++ b/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/vo/TCharingOrderVO.java
@@ -8,7 +8,7 @@
import java.math.BigDecimal;
@Data
-@ApiModel(value = "TOrderAppealVO对象", description = "充电桩订单VO")
+@ApiModel(value = "充电桩订单列表对象", description = "充电桩订单VO")
public class TCharingOrderVO {
@ApiModelProperty(value = "分页列表")
private PageInfo<ChargingOrderVO> list;
diff --git a/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/vo/TOrderAppealVO.java b/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/vo/TOrderAppealVO.java
index cafe08b..7bec166 100644
--- a/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/vo/TOrderAppealVO.java
+++ b/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/vo/TOrderAppealVO.java
@@ -4,10 +4,15 @@
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
+import lombok.Getter;
+import lombok.Setter;
@Data
@ApiModel(value = "TOrderAppealVO对象", description = "订单申诉VO对象")
public class TOrderAppealVO extends TOrderAppeal {
+
+ @ApiModelProperty(value = "uid")
+ private String uid;
@ApiModelProperty(value = "充电订单")
private TChargingOrder chargingOrder;
@@ -15,10 +20,20 @@
@ApiModelProperty(value = "购物订单")
private TShoppingOrder shoppingOrder;
- @ApiModelProperty(value = "兑换订单")
- private TExchangeOrder exchangeOrder;
+ @ApiModelProperty(value = "商品名称")
+ private String goodsName;
+ @ApiModelProperty(value = "商品图片")
+ private String goodsPicture;
- @ApiModelProperty(value = "会员订单")
- private TVipOrder vipOrder;
+ @ApiModelProperty(value = "站点名称")
+ private String siteName;
+ @ApiModelProperty(value = "桩名称")
+ private String pileName;
+ @ApiModelProperty(value = "桩号")
+ private Integer pileNumber;
+ @ApiModelProperty(value = "枪名称")
+ private String gunName;
+ @ApiModelProperty(value = "枪号")
+ private String gunNumber;
}
diff --git a/ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/factory/CouponFallbackFactory.java b/ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/factory/CouponFallbackFactory.java
index 4937da4..ba006ed 100644
--- a/ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/factory/CouponFallbackFactory.java
+++ b/ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/factory/CouponFallbackFactory.java
@@ -35,6 +35,11 @@
public R<List<Integer>> getCouponIdsByName(String name) {
return R.fail("根据名称查询优惠券ids:" + throwable.getMessage());
}
+
+ @Override
+ public R updateCoupon(TCoupon coupon) {
+ throw new RuntimeException("修改优惠券失败");
+ }
};
}
diff --git a/ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/factory/GoodsFallbackFactory.java b/ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/factory/GoodsFallbackFactory.java
index 2ee7b91..e9002f4 100644
--- a/ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/factory/GoodsFallbackFactory.java
+++ b/ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/factory/GoodsFallbackFactory.java
@@ -33,6 +33,11 @@
public R<List<Integer>> getGoodsIdsByName(String name) {
return R.fail("根据商品名称获取商品ids失败:" + throwable.getMessage());
}
+
+ @Override
+ public R updateGoods(TGoods goods) {
+ throw new RuntimeException("修改商品异常");
+ }
};
}
diff --git a/ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/feignClient/CouponClient.java b/ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/feignClient/CouponClient.java
index 64f7fdb..946dc50 100644
--- a/ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/feignClient/CouponClient.java
+++ b/ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/feignClient/CouponClient.java
@@ -8,6 +8,7 @@
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
import java.util.List;
@@ -28,4 +29,13 @@
R<TCoupon> getCouponById1(@PathVariable("id") Integer id);
@PostMapping("/t-coupon/getCouponIdsByName/{name}")
R<List<Integer>> getCouponIdsByName(@PathVariable("name")String name);
+
+
+ /**
+ * 修改优惠券
+ * @param coupon
+ * @return
+ */
+ @PostMapping("/t-coupon/updateCoupon")
+ R updateCoupon(@RequestBody TCoupon coupon);
}
diff --git a/ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/feignClient/GoodsClient.java b/ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/feignClient/GoodsClient.java
index 6f918aa..7f7e94a 100644
--- a/ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/feignClient/GoodsClient.java
+++ b/ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/feignClient/GoodsClient.java
@@ -8,6 +8,7 @@
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
import java.util.List;
@@ -32,4 +33,13 @@
*/
@PostMapping("/t-goods/getGoodsIdsByName/{name}")
public R<List<Integer>> getGoodsIdsByName(@PathVariable("name")String name);
+
+
+ /**
+ * 修改商品
+ * @param goods
+ * @return
+ */
+ @PostMapping("/t-goods/updateGoods")
+ R updateGoods(@RequestBody TGoods goods);
}
diff --git a/ruoyi-api/ruoyi-api-payment/src/main/java/com/ruoyi/payment/api/factory/WxPaymentFallbackFactory.java b/ruoyi-api/ruoyi-api-payment/src/main/java/com/ruoyi/payment/api/factory/WxPaymentFallbackFactory.java
index ee40d32..6ed2018 100644
--- a/ruoyi-api/ruoyi-api-payment/src/main/java/com/ruoyi/payment/api/factory/WxPaymentFallbackFactory.java
+++ b/ruoyi-api/ruoyi-api-payment/src/main/java/com/ruoyi/payment/api/factory/WxPaymentFallbackFactory.java
@@ -5,6 +5,7 @@
import com.ruoyi.payment.api.model.WxPaymentRefundModel;
import com.ruoyi.payment.api.vo.NotifyV3PayDecodeRespBody;
import com.ruoyi.payment.api.vo.PaymentOrder;
+import com.ruoyi.payment.api.vo.WxRefundNotifyResp;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.cloud.openfeign.FallbackFactory;
@@ -58,6 +59,11 @@
return R.fail("微信退款失败:" + throwable.getMessage());
}
+
+ @Override
+ public R<WxRefundNotifyResp> refundNotify(HttpServletRequest request) {
+ return R.fail("微信退款回调失败:" + throwable.getMessage());
+ }
};
}
}
diff --git a/ruoyi-api/ruoyi-api-payment/src/main/java/com/ruoyi/payment/api/feignClient/WxPaymentClient.java b/ruoyi-api/ruoyi-api-payment/src/main/java/com/ruoyi/payment/api/feignClient/WxPaymentClient.java
index a09b432..90cb9c9 100644
--- a/ruoyi-api/ruoyi-api-payment/src/main/java/com/ruoyi/payment/api/feignClient/WxPaymentClient.java
+++ b/ruoyi-api/ruoyi-api-payment/src/main/java/com/ruoyi/payment/api/feignClient/WxPaymentClient.java
@@ -6,6 +6,7 @@
import com.ruoyi.payment.api.model.WxPaymentRefundModel;
import com.ruoyi.payment.api.vo.NotifyV3PayDecodeRespBody;
import com.ruoyi.payment.api.vo.PaymentOrder;
+import com.ruoyi.payment.api.vo.WxRefundNotifyResp;
import io.swagger.annotations.ApiOperation;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.PostMapping;
@@ -65,4 +66,10 @@
@ApiOperation("订单退款")
@PostMapping(value = "/wx/refundOrderR")
public R<String> refundOrderR(@RequestBody WxPaymentRefundModel model);
+
+
+
+ @ApiOperation("订单退款回调")
+ @PostMapping(value = "/wx/refund/notify")
+ R<WxRefundNotifyResp> refundNotify(HttpServletRequest request);
}
diff --git a/ruoyi-api/ruoyi-api-payment/src/main/java/com/ruoyi/payment/api/vo/WxRefundNotifyResp.java b/ruoyi-api/ruoyi-api-payment/src/main/java/com/ruoyi/payment/api/vo/WxRefundNotifyResp.java
new file mode 100644
index 0000000..320cc40
--- /dev/null
+++ b/ruoyi-api/ruoyi-api-payment/src/main/java/com/ruoyi/payment/api/vo/WxRefundNotifyResp.java
@@ -0,0 +1,35 @@
+package com.ruoyi.payment.api.vo;
+
+import lombok.Data;
+
+/**
+ * @author zhibing.pu
+ * @Date 2024/8/28 14:54
+ */
+@Data
+public class WxRefundNotifyResp {
+ /**
+ * 支付单号
+ */
+ private String out_trade_no;
+ /**
+ * 退款单号
+ */
+ private String out_refund_no;
+ /**
+ * 支付流水号
+ */
+ private String transaction_id;
+ /**
+ * 退款流水号
+ */
+ private String refund_id;
+ /**
+ * 退款状态
+ */
+ private String tradeState;
+ /**
+ * 退款时间
+ */
+ private String success_time;
+}
diff --git a/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/dto/ExchangeDto.java b/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/dto/ExchangeDto.java
index b736df9..a8123db 100644
--- a/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/dto/ExchangeDto.java
+++ b/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/dto/ExchangeDto.java
@@ -10,7 +10,7 @@
@ApiModelProperty("商品id")
Integer goodId;
@ApiModelProperty("地址id")
- Integer addressId;
+ Long addressId;
@ApiModelProperty("备注")
String remark;
@ApiModelProperty(hidden = true)
diff --git a/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/TAppUserAddressController.java b/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/TAppUserAddressController.java
index d779300..593d572 100644
--- a/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/TAppUserAddressController.java
+++ b/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/TAppUserAddressController.java
@@ -12,6 +12,7 @@
import org.springframework.web.bind.annotation.*;
import java.util.List;
+import java.util.Objects;
/**
* <p>
@@ -68,8 +69,11 @@
Long userId = tokenService.getLoginUserApplet().getUserId();
TAppUserAddress appUserAddress = appUserAddressService.getOne(Wrappers.<TAppUserAddress>lambdaQuery().eq(TAppUserAddress::getAppUserId, userId)
.eq(TAppUserAddress::getDefaultAddress, 1));
+ if(Objects.isNull(appUserAddress)){
+ return AjaxResult.success();
+ }
appUserAddress.setUid(appUserAddress.getId().toString());
- return AjaxResult.ok(appUserAddress);
+ return AjaxResult.success(appUserAddress);
}
@@ -106,6 +110,8 @@
@ApiOperation(tags = {"小程序-用户地址"},value = "修改用户地址")
@PostMapping(value = "/update")
public AjaxResult<Boolean> update(@RequestBody TAppUserAddress dto) {
+ // 用户id
+ dto.setAppUserId(tokenService.getLoginUserApplet().getUserId());
// 修改用户默认地址
appUserAddressService.updateDefaultAddress(dto.getDefaultAddress(),dto.getAppUserId());
return AjaxResult.ok(appUserAddressService.updateById(dto));
@@ -127,7 +133,7 @@
*/
@ApiOperation(tags = {"小程序-用户地址"},value = "删除用户地址")
@DeleteMapping(value = "/deleteById")
- public AjaxResult<Boolean> deleteById(@RequestParam("id") Integer id) {
+ public AjaxResult<Boolean> deleteById(@RequestParam("id") Long id) {
return AjaxResult.ok(appUserAddressService.removeById(id));
}
diff --git a/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/TAppUserController.java b/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/TAppUserController.java
index a106416..93d83d5 100644
--- a/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/TAppUserController.java
+++ b/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/TAppUserController.java
@@ -544,7 +544,7 @@
TCoupon coupon = JSON.toJavaObject(JSON.parseObject(tAppCoupon.getCouponJson()), TCoupon.class);
InfoCouponDto infoCouponDto = new InfoCouponDto();
BeanUtils.copyProperties(coupon, infoCouponDto);
- infoCouponDto.setId(tAppCoupon.getId());
+ infoCouponDto.setId(tAppCoupon.getId().toString());
infoCouponDto.setEndTime(tAppCoupon.getEndTime());
couponDtos1.add(infoCouponDto);
@@ -558,7 +558,7 @@
TCoupon coupon = JSON.toJavaObject(JSON.parseObject(tAppCoupon.getCouponJson()), TCoupon.class);
InfoCouponDto infoCouponDto = new InfoCouponDto();
BeanUtils.copyProperties(coupon, infoCouponDto);
- infoCouponDto.setId(tAppCoupon.getId());
+ infoCouponDto.setId(tAppCoupon.getId().toString());
infoCouponDto.setEndTime(tAppCoupon.getEndTime());
couponDtos2.add(infoCouponDto);
}
@@ -566,7 +566,7 @@
TCoupon coupon = JSON.toJavaObject(JSON.parseObject(tAppCoupon.getCouponJson()), TCoupon.class);
InfoCouponDto infoCouponDto = new InfoCouponDto();
BeanUtils.copyProperties(coupon, infoCouponDto);
- infoCouponDto.setId(tAppCoupon.getId());
+ infoCouponDto.setId(tAppCoupon.getId().toString());
infoCouponDto.setEndTime(tAppCoupon.getEndTime());
couponDtos2.add(infoCouponDto);
}
@@ -586,7 +586,7 @@
@ApiOperation(value = "优惠卷详情(1可使用2不可用)", tags = {"小程序-个人中心"})
- @PostMapping(value = "/user/coupon/getById")
+ @GetMapping(value = "/user/coupon/getById")
public R<TAppCoupon> couponGetById(@RequestParam("id")Long id) {
TAppCoupon appCoupon = appCouponService.getById(id);
return R.ok(appCoupon);
@@ -628,7 +628,7 @@
}
@ApiOperation(value = "已赠送列表", tags = {"小程序-个人中心-邀请好友"})
- @PostMapping(value = "/user/invite/info")
+ @GetMapping(value = "/user/invite/info")
public R<InviteInfoDto> inviteInfo() {
Long userId = tokenService.getLoginUserApplet().getUserId();
Integer point = 0;
diff --git a/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/TAppUserVipDetailController.java b/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/TAppUserVipDetailController.java
index 898a5eb..42de42e 100644
--- a/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/TAppUserVipDetailController.java
+++ b/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/TAppUserVipDetailController.java
@@ -5,12 +5,14 @@
import com.ruoyi.account.api.vo.GetAppUserVipDetail;
import com.ruoyi.account.service.TAppUserVipDetailService;
import com.ruoyi.common.core.domain.R;
-import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.RequestBody;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
+import com.ruoyi.common.security.service.TokenService;
+import com.ruoyi.other.api.domain.TVip;
+import com.ruoyi.other.api.feignClient.VipClient;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
+import java.util.List;
/**
* @author zhibing.pu
@@ -22,6 +24,8 @@
@Resource
private TAppUserVipDetailService appUserVipDetailService;
+ @Resource
+ private TokenService tokenService;
/**
* 获取用户当前有效的vip明细
@@ -36,6 +40,22 @@
.last(" and now() between start_time and end_time"));
return R.ok(one);
}
-
+
+ @Resource
+ private VipClient vipClient;
+
+ @GetMapping("/getVipUseDetail")
+ @ApiOperation(value = "生效会员列表", tags = {"小程序-个人中心"})
+ public R<List<TAppUserVipDetail>> getVipUseDetail(){
+ Long userId = tokenService.getLoginUserApplet().getUserId();
+ List<TAppUserVipDetail> list = appUserVipDetailService.lambdaQuery().eq(TAppUserVipDetail::getAppUserId, userId).last(" and now() between start_time and end_time order by start_time desc").list();
+
+ for (TAppUserVipDetail tAppUserVipDetail : list) {
+ TVip data = vipClient.getInfo1(tAppUserVipDetail.getVipId()).getData();
+ tAppUserVipDetail.setVipName(data.getName());
+ }
+ return R.ok(list);
+ }
+
}
diff --git a/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/TInvoiceInformationController.java b/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/TInvoiceInformationController.java
index 29a90fb..5eb18cf 100644
--- a/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/TInvoiceInformationController.java
+++ b/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/TInvoiceInformationController.java
@@ -3,13 +3,16 @@
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.ruoyi.account.api.model.TInvoiceInformation;
+import com.ruoyi.account.api.vo.InvoiceInformationVo;
import com.ruoyi.account.service.TInvoiceInformationService;
import com.ruoyi.common.core.web.domain.AjaxResult;
import com.ruoyi.common.security.service.TokenService;
import io.swagger.annotations.ApiOperation;
+import org.springframework.beans.BeanUtils;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
+import java.util.ArrayList;
import java.util.List;
/**
@@ -34,10 +37,17 @@
@ResponseBody
@GetMapping(value = "/getInvoiceInformationList")
@ApiOperation(value = "获取开票抬头数据列表", tags = {"小程序-充电发票"})
- public AjaxResult<List<TInvoiceInformation>> getInvoiceInformationList(){
+ public AjaxResult<List<InvoiceInformationVo>> getInvoiceInformationList(){
Long userId = tokenService.getLoginUserApplet().getUserId();
List<TInvoiceInformation> list = invoiceInformationService.list(new LambdaQueryWrapper<TInvoiceInformation>().eq(TInvoiceInformation::getAppUserId, userId).eq(TInvoiceInformation::getDelFlag, 0));
- return AjaxResult.success(list);
+ List<InvoiceInformationVo> lists = new ArrayList<>();
+ for (TInvoiceInformation tInvoiceInformation : list) {
+ InvoiceInformationVo vo = new InvoiceInformationVo();
+ BeanUtils.copyProperties(tInvoiceInformation, vo);
+ vo.setId(tInvoiceInformation.getId().toString());
+ lists.add(vo);
+ }
+ return AjaxResult.success(lists);
}
@@ -48,7 +58,7 @@
public AjaxResult addInvoiceInformation(@RequestBody TInvoiceInformation invoiceInformation){
Long userId = tokenService.getLoginUserApplet().getUserId();
//如果当前是默认抬头,则需要去除其他的默认配置
- if(1 == invoiceInformation.getIsDefault()){
+ if(null != invoiceInformation.getIsDefault() && 1 == invoiceInformation.getIsDefault()){
TInvoiceInformation one = invoiceInformationService.getOne(new LambdaQueryWrapper<TInvoiceInformation>().eq(TInvoiceInformation::getDelFlag, 0)
.eq(TInvoiceInformation::getIsDefault, 1).eq(TInvoiceInformation::getAppUserId, userId));
if(null != one){
diff --git a/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/TChargingGunController.java b/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/TChargingGunController.java
index 4120f07..fe5e167 100644
--- a/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/TChargingGunController.java
+++ b/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/TChargingGunController.java
@@ -4,10 +4,13 @@
import cn.hutool.core.img.ImgUtil;
import cn.hutool.core.io.FileUtil;
import com.ruoyi.chargingPile.api.dto.TChargingGunDTO;
+import com.ruoyi.chargingPile.api.model.Site;
import com.ruoyi.chargingPile.api.model.TChargingGun;
import com.ruoyi.chargingPile.api.model.TChargingPile;
import com.ruoyi.chargingPile.api.query.TChargingGunQuery;
+import com.ruoyi.chargingPile.api.vo.SiteNameVO;
import com.ruoyi.chargingPile.api.vo.TChargingGunVO;
+import com.ruoyi.chargingPile.service.ISiteService;
import com.ruoyi.chargingPile.service.TChargingGunService;
import com.ruoyi.chargingPile.service.TChargingPileService;
import com.ruoyi.chargingPile.util.QRCodeUtils;
@@ -52,6 +55,8 @@
@Resource
private TChargingPileService chargingPileService;
+ @Resource
+ private ISiteService siteService;
@Autowired
public TChargingGunController(TChargingGunService chargingGunService) {
@@ -184,5 +189,24 @@
TChargingGun chargingGun = chargingGunService.getById(id);
return R.ok(chargingGun);
}
+ /**
+ * 根据id获取充电枪详情
+ * @param id
+ * @return
+ */
+ @ResponseBody
+ @PostMapping(value = "/getAllInfoById/{id}")
+ public R<SiteNameVO> getAllInfoById(@PathVariable Integer id){
+ SiteNameVO siteNameVO = new SiteNameVO();
+ TChargingGun chargingGun = chargingGunService.getById(id);
+ siteNameVO.setGunName(chargingGun.getName());
+ siteNameVO.setGunNumber(chargingGun.getCode());
+ TChargingPile chargingPile = chargingPileService.getById(id);
+ siteNameVO.setPileName(chargingPile.getName());
+ siteNameVO.setPileNumber(chargingPile.getNumber());
+ Site site = siteService.getById(id);
+ siteNameVO.setSiteName(site.getName());
+ return R.ok(siteNameVO);
+ }
}
diff --git a/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/impl/TAccountingStrategyDetailServiceImpl.java b/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/impl/TAccountingStrategyDetailServiceImpl.java
index 785ad38..9b2aaab 100644
--- a/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/impl/TAccountingStrategyDetailServiceImpl.java
+++ b/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/impl/TAccountingStrategyDetailServiceImpl.java
@@ -64,7 +64,7 @@
throw new ServiceException("未查询到计费策略");
}
List<TAccountingStrategyDetailVO> list = this.queryAccountingStrategyDetailByStrategyId(accountingStrategy.getId());
- list.stream().filter(item -> "24:00".equals(item.getEndTime())).forEach(item -> item.setEndTime("23:59:59"));
+ list.stream().filter(item -> "00:00".equals(item.getEndTime())).forEach(item -> item.setEndTime("23:59:59"));
// 获取当前登录用户id
Long userId = tokenService.getLoginUserApplet().getUserId();
// 根据id查询用户信息
diff --git a/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/impl/TChargingPileServiceImpl.java b/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/impl/TChargingPileServiceImpl.java
index a567303..d497796 100644
--- a/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/impl/TChargingPileServiceImpl.java
+++ b/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/impl/TChargingPileServiceImpl.java
@@ -40,6 +40,7 @@
import javax.annotation.Resource;
import java.math.BigDecimal;
+import java.math.MathContext;
import java.math.RoundingMode;
import java.text.SimpleDateFormat;
import java.util.*;
@@ -304,8 +305,13 @@
chargeMonitoring.setNotCharged(total.size() - charging.size());
chargeMonitoring.setRatedPower(ratedPower.setScale(4, RoundingMode.HALF_EVEN));
chargeMonitoring.setRealTimePower(realTimePower.setScale(4, RoundingMode.HALF_EVEN));
- chargeMonitoring.setDemandPowerSatisfactionRate(realTimePower.divide(ratedPower).multiply(new BigDecimal(100)).setScale(2, RoundingMode.HALF_EVEN));
-
+ if(ratedPower.equals(BigDecimal.ZERO)){
+ chargeMonitoring.setDemandPowerSatisfactionRate(BigDecimal.ZERO);
+ }else{
+ chargeMonitoring.setDemandPowerSatisfactionRate(realTimePower.divide(ratedPower, new MathContext(2, RoundingMode.HALF_EVEN))
+ .multiply(new BigDecimal(100)).setScale(2, RoundingMode.HALF_EVEN));
+ }
+
List<String> dates = new ArrayList<>();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MMM-dd");
Calendar calendar = Calendar.getInstance();
@@ -325,8 +331,12 @@
List<Double> data = chargingOrderAccountingStrategyClient.getDailyChargingDegree(6, siteIds).getData();
List<Double> value2 = new ArrayList<>();
for (Double datum : data) {
- Double datum1 = new BigDecimal(datum).divide(new BigDecimal(list.size()).multiply(v).multiply(new BigDecimal(24))).setScale(2, BigDecimal.ROUND_HALF_EVEN).doubleValue();
- value2.add(datum1);
+ if(list.size() == 0){
+ value2.add(0D);
+ }else{
+ Double datum1 = new BigDecimal(datum).divide(new BigDecimal(list.size()).multiply(v).multiply(new BigDecimal(24))).setScale(2, BigDecimal.ROUND_HALF_EVEN).doubleValue();
+ value2.add(datum1);
+ }
}
Map<String, Object> utilizationTrend = new HashMap<>();
utilizationTrend.put("date", dates);
diff --git a/ruoyi-service/ruoyi-chargingPile/src/main/resources/mapper/chargingPile/SiteMapper.xml b/ruoyi-service/ruoyi-chargingPile/src/main/resources/mapper/chargingPile/SiteMapper.xml
index d36aaf4..2acbc96 100644
--- a/ruoyi-service/ruoyi-chargingPile/src/main/resources/mapper/chargingPile/SiteMapper.xml
+++ b/ruoyi-service/ruoyi-chargingPile/src/main/resources/mapper/chargingPile/SiteMapper.xml
@@ -163,6 +163,7 @@
</if>
AND ts.del_flag = ${@com.ruoyi.common.core.enums.DelFlagEnum@NO.getCode()}
AND ts.status = ${@com.ruoyi.common.core.enums.status.SiteStatusEnum@NORMAL_USE.getCode()}
+ AND ts.accounting_strategy_id IS NOT NULL
</where>
<if test="query.sortType != null">
<choose>
diff --git a/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/controller/ChargingHandshakeController.java b/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/controller/ChargingHandshakeController.java
new file mode 100644
index 0000000..844d62e
--- /dev/null
+++ b/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/controller/ChargingHandshakeController.java
@@ -0,0 +1,35 @@
+package com.ruoyi.integration.controller;
+
+import com.ruoyi.common.core.domain.R;
+import com.ruoyi.integration.api.model.ChargingHandshake;
+import com.ruoyi.integration.mongodb.service.ChargingHandshakeService;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.RestController;
+
+import javax.annotation.Resource;
+
+/**
+ * @author zhibing.pu
+ * @Date 2024/8/28 9:50
+ */
+@RestController
+@RequestMapping("/chargingHandshake")
+public class ChargingHandshakeController {
+
+ @Resource
+ private ChargingHandshakeService chargingHandshakeService;
+
+
+ /**
+ * 根据订单编号获取充电握手数据
+ * @param code
+ * @return
+ */
+ @PostMapping("/getDataByOrderCode")
+ public R<ChargingHandshake> getDataByOrderCode(@RequestParam("code") String code){
+ ChargingHandshake chargingHandshake = chargingHandshakeService.findById(code);
+ return R.ok(chargingHandshake);
+ }
+}
diff --git a/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/mongodb/service/ChargingHandshakeService.java b/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/mongodb/service/ChargingHandshakeService.java
index aa79902..11c7824 100644
--- a/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/mongodb/service/ChargingHandshakeService.java
+++ b/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/mongodb/service/ChargingHandshakeService.java
@@ -4,4 +4,6 @@
import com.ruoyi.integration.mongodb.base.BaseService;
public interface ChargingHandshakeService extends BaseService<ChargingHandshake> {
+
+
}
diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/FinancialSettlementController.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/FinancialSettlementController.java
new file mode 100644
index 0000000..eba02aa
--- /dev/null
+++ b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/FinancialSettlementController.java
@@ -0,0 +1,97 @@
+package com.ruoyi.order.controller;
+
+
+import com.ruoyi.account.api.feignClient.AppUserCarClient;
+import com.ruoyi.account.api.feignClient.AppUserClient;
+import com.ruoyi.chargingPile.api.feignClient.ChargingGunClient;
+import com.ruoyi.chargingPile.api.feignClient.ChargingPileClient;
+import com.ruoyi.chargingPile.api.feignClient.ParkingLotClient;
+import com.ruoyi.chargingPile.api.feignClient.SiteClient;
+import com.ruoyi.common.core.domain.R;
+import com.ruoyi.common.core.web.domain.AjaxResult;
+import com.ruoyi.common.core.web.page.PageInfo;
+import com.ruoyi.common.redis.service.RedisService;
+import com.ruoyi.common.security.service.TokenService;
+import com.ruoyi.order.api.model.TVipOrder;
+import com.ruoyi.order.api.query.VipShoppingOrderQuery;
+import com.ruoyi.order.api.vo.ChargingOrderTimeVO;
+import com.ruoyi.order.dto.ChargingListQuery;
+import com.ruoyi.order.dto.PayOrderDto;
+import com.ruoyi.order.dto.PayOrderQueryDto;
+import com.ruoyi.order.service.*;
+import com.ruoyi.payment.api.feignClient.AliPaymentClient;
+import com.ruoyi.payment.api.feignClient.WxPaymentClient;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.util.StringUtils;
+import org.springframework.web.bind.annotation.*;
+
+import javax.annotation.Resource;
+import java.util.Arrays;
+import java.util.List;
+
+/**
+ * <p>
+ * 前端控制器
+ * </p>
+ *
+ * @author xiaochen
+ * @since 2024-08-07
+ */
+@Api(tags = "财务结算")
+@RestController
+@RequestMapping("/financial/settlement")
+public class FinancialSettlementController {
+
+ @Resource
+ private TChargingOrderService chargingOrderService;
+ @Autowired
+ private TokenService tokenService;
+ @Autowired
+ private TOrderEvaluateService orderEvaluateService;
+
+ @Resource
+ private WxPaymentClient wxPaymentClient;
+
+ @Resource
+ private RedisService redisService;
+
+ @Resource
+ private AliPaymentClient aliPaymentClient;
+ @Resource
+ private TShoppingOrderService shoppingOrderService;
+
+ @Resource
+ private AppUserClient appUserClient;
+
+ @Resource
+ private TVipOrderService vipOrderService;
+ @Resource
+ private ParkingLotClient parkingLotClient;
+ @Resource
+ private TChargingOrderRefundService chargingOrderRefundService;
+
+ @Resource
+ private TShoppingOrderRefundService shoppingOrderRefundService;
+ @Resource
+ private TVipOrderRefundService vipOrderRefundService;
+ @Resource
+ private SiteClient siteClient;
+ @Resource
+ private ChargingPileClient chargingPileClient;
+ @Resource
+ private ChargingGunClient chargingGunClient;
+ @Resource
+ private AppUserCarClient appUserCarClient;
+ @Resource
+ private TChargingOrderAccountingStrategyService chargingOrderAccountingStrategyService;
+ @ResponseBody
+ @PostMapping(value = "/chargingList")
+ @ApiOperation(value = "充电时段统计列表", tags = {"管理后台-财务结算"})
+ public AjaxResult<ChargingOrderTimeVO> chargingList(@RequestBody ChargingListQuery dto) {
+ ChargingOrderTimeVO res = chargingOrderService.chargingList(dto);
+ return AjaxResult.success(res);
+ }
+}
+
diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/TChargingOrderController.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/TChargingOrderController.java
index f405a62..85ba284 100644
--- a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/TChargingOrderController.java
+++ b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/TChargingOrderController.java
@@ -1,4 +1,6 @@
package com.ruoyi.order.controller;
+import com.google.common.collect.Lists;
+
import java.math.BigDecimal;
import java.time.DayOfWeek;
import java.time.LocalDate;
@@ -35,6 +37,7 @@
import com.ruoyi.order.api.model.*;
import com.ruoyi.order.api.query.ChargingOrderQuery;
import com.ruoyi.order.api.query.TChargingCountQuery;
+import com.ruoyi.order.api.vo.ChargingOrderInfoVO;
import com.ruoyi.order.api.vo.ChargingOrderVO;
import com.ruoyi.order.api.vo.TCharingOrderVO;
import com.ruoyi.order.dto.GetMyChargingOrderList;
@@ -65,6 +68,7 @@
import java.time.temporal.ChronoUnit;
import java.time.temporal.TemporalAdjusters;
import java.util.*;
+import java.util.*;
import java.util.List;
import java.util.stream.Collectors;
@@ -87,20 +91,18 @@
private TokenService tokenService;
@Autowired
private TOrderEvaluateService orderEvaluateService;
-
+
@Resource
private WxPaymentClient wxPaymentClient;
-
+
@Resource
private RedisService redisService;
-
+
@Resource
private AliPaymentClient aliPaymentClient;
@Resource
private TShoppingOrderService shoppingOrderService;
-
- @Autowired
- private AppUserClient appUserClient;
+
@Resource
private TVipOrderService vipOrderService;
@@ -124,9 +126,10 @@
@Resource
private TChargingOrderAccountingStrategyService chargingOrderAccountingStrategyService;
-
-
+
+ @Resource
+ private TChargingOrderAccountingStrategyService chargingOrderAccountingStrategyService;
@ResponseBody
@PostMapping(value = "/pay/order/list")
@@ -186,11 +189,12 @@
// payOrderInfoDto3.setRefundAmount(new BigDecimal("0"));
- }
+
+
+ }
return R.ok();
}
-
@ResponseBody
@GetMapping(value = "/pay/order/refund/detail")
@ApiOperation(value = "退款信息", tags = {"管理后台-支付订单-订单信息"})
@@ -223,8 +227,10 @@
payOrderChargingInfo.setChargingName(data1.getName());
TChargingGun data2 = chargingGunClient.getChargingGunById(byId.getChargingGunId()).getData();
payOrderChargingInfo.setGunName(data2.getName());
- List<TAppUserCar> data3 = appUserCarClient.getCarByIds(Collections.singletonList(byId.getAppUserCarId())).getData();
- payOrderChargingInfo.setCarNum(data3.get(0).getLicensePlate());
+ if (byId.getAppUserCarId()!=null) {
+ List<TAppUserCar> data3 = appUserCarClient.getCarByIds(Collections.singletonList(byId.getAppUserCarId())).getData();
+ payOrderChargingInfo.setCarNum(data3.get(0).getLicensePlate());
+ }
return R.ok();
}
@@ -237,6 +243,7 @@
}
+
@ResponseBody
@PostMapping(value = "/pay/order/refund/list")
@ApiOperation(value = "充电信息", tags = {"管理后台-支付订单-退款订单"})
@@ -244,6 +251,9 @@
return chargingOrderService.getRefundList(chargingRefundDto);
}
+
+
+
@ResponseBody
@@ -259,9 +269,19 @@
@ResponseBody
@PostMapping(value = "/chargingOrderInfo")
@ApiOperation(value = "充电桩订单列表查看详情", tags = {"管理后台-订单管理"})
- public AjaxResult<TCharingOrderVO> chargingOrderInfo(String orderId) {
-
- return AjaxResult.success();
+ public AjaxResult<ChargingOrderInfoVO> chargingOrderInfo(String orderId) {
+ ChargingOrderInfoVO chargingOrderInfoVO = new ChargingOrderInfoVO();
+ chargingOrderInfoVO.setCdElectronic("");
+ chargingOrderInfoVO.setCdVoltage("");
+ chargingOrderInfoVO.setSurplus("");
+ chargingOrderInfoVO.setTotalPower("");
+ chargingOrderInfoVO.setLicensePlate("");
+ chargingOrderInfoVO.setVehicleBrand("");
+ chargingOrderInfoVO.setVehicleModel("");
+ chargingOrderInfoVO.setVehicleUse("");
+ List<TChargingOrderAccountingStrategy> tChargingOrderAccountingStrategies = new ArrayList<>();
+ chargingOrderInfoVO.setList(tChargingOrderAccountingStrategies);
+ return AjaxResult.success(chargingOrderInfoVO);
}
@ResponseBody
@@ -272,9 +292,9 @@
orderEvaluateService.addOrderEvaluate(dto);
return AjaxResult.success();
}
-
/**
* 查询用户最近一次充电记录使用的车辆
+ *
* @param
* @return
*/
@@ -283,11 +303,11 @@
List<TChargingOrder> list = chargingOrderService.list(new LambdaQueryWrapper<TChargingOrder>()
.eq(TChargingOrder::getAppUserId, tokenService.getLoginUserApplet().getUserId())
.isNotNull(TChargingOrder::getAppUserCarId));
- if (!list.isEmpty()) {
+ if (!list.isEmpty()){
// 最近使用的车辆id
Long size = list.get(0).getAppUserCarId();
return R.ok(size);
- } else {
+ }else{
return R.ok(-1L);
}
}
@@ -305,7 +325,6 @@
.between(TChargingOrder::getStartTime, req.getStartTime(), req.getEndTime())).size();
return R.ok(size);
}
-
//用户订单数量
@PostMapping(value = "/useOrderCount")
public R<Long> useOrderCount(@RequestParam("userId") Long userId) {
@@ -313,7 +332,6 @@
return R.ok(count);
}
-
//订单详情
@PostMapping(value = "/detail")
public R<TChargingOrder> detail(@RequestParam("orderId") Long orderId) {
@@ -345,8 +363,10 @@
.eq(TChargingOrder::getDelFlag, 0).eq(TChargingOrder::getStatus, 3));
return R.ok(one);
}
-
-
+
+
+
+
@ResponseBody
@GetMapping(value = "/getMyChargingOrderList")
@ApiOperation(value = "获取充电记录列表", tags = {"小程序-充电记录"})
@@ -354,8 +374,8 @@
Map<String, Object> orderList = chargingOrderService.getMyChargingOrderList(query);
return AjaxResult.success(orderList);
}
-
-
+
+
@ResponseBody
@GetMapping(value = "/getMyChargingOrderInfo")
@ApiOperation(value = "获取充电记订单明细", tags = {"小程序-充电记录"})
@@ -363,8 +383,9 @@
MyChargingOrderInfo myChargingOrderInfo = chargingOrderService.getMyChargingOrderInfo(id);
return AjaxResult.success(myChargingOrderInfo);
}
-
-
+
+
+
@ResponseBody
@GetMapping(value = "/getNoInvoicedOrder")
@ApiOperation(value = "获取未开票的订单数据", tags = {"小程序-充电发票"})
@@ -372,15 +393,16 @@
List<MyChargingOrderList> list = chargingOrderService.getNoInvoicedOrder(query);
return AjaxResult.success(list);
}
-
-
+
+
+
@ResponseBody
@PostMapping(value = "/paymentChargingOrder")
@ApiOperation(value = "支付充电充值费用", tags = {"小程序-扫一扫"})
public AjaxResult paymentChargingOrder(@RequestBody AddChargingOrder addChargingOrder) {
return chargingOrderService.paymentChargingOrder(addChargingOrder);
}
-
+
/**
* 充电充值支付回调
* @param request
@@ -435,8 +457,9 @@
Object cacheObject = redisService.getCacheObject(key);
return AjaxResult.success(cacheObject);
}
-
-
+
+
+
@ResponseBody
@GetMapping(value = "/getChargingDetails/{id}")
@ApiOperation(value = "获取充电中页面数据", tags = {"小程序-扫一扫"})
diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/TExchangeOrderController.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/TExchangeOrderController.java
index 2c79bee..ac3e50d 100644
--- a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/TExchangeOrderController.java
+++ b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/TExchangeOrderController.java
@@ -38,10 +38,7 @@
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Date;
-import java.util.List;
+import java.util.*;
import java.util.stream.Collectors;
/**
@@ -96,7 +93,7 @@
}
@Resource
private SysUserClient sysUserClient;
- @PostMapping("/getShoppingOrderInfoById")
+ @GetMapping("/getShoppingOrderInfoById")
@ApiOperation(value = "根据订单id查看订单详情", tags = {"管理后台-兑换订单"})
public AjaxResult<TExchangeOrder> getShoppingOrderList(String id) {
TExchangeOrder byId = exchangeOrderService.getById(id);
@@ -145,8 +142,10 @@
}
@GetMapping("/consignerShoppingOrder")
@ApiOperation(value = "发货", tags = {"管理后台-兑换订单"})
- public AjaxResult consignerShoppingOrder(String id) {
+ public AjaxResult consignerShoppingOrder(String id,String companyName,String code) {
TExchangeOrder byId = exchangeOrderService.getById(id);
+ byId.setExpressCompany(companyName);
+ byId.setExpressNumber(code);
Long userid = tokenService.getLoginUser().getUserid();
byId.setConsignerId(userid);
byId.setConsignerTime(LocalDateTime.now());
@@ -281,7 +280,7 @@
tExchangeOrder.setPoints(exchangeDto.getPoint());
tExchangeOrder.setRemark("");
if (exchangeDto.getGoodType()==1){
- tExchangeOrder.setStatus(0);
+ tExchangeOrder.setStatus(1);
}else {
tExchangeOrder.setStatus(3);
}
@@ -296,8 +295,8 @@
@GetMapping("/getMyExchangeOrder")
@ApiOperation(value = "获取兑换记录列表", tags = {"小程序-兑换记录"})
- public AjaxResult<List<MyExchangeOrderList>> getMyExchangeOrder(GetMyExchangeOrder query){
- List<MyExchangeOrderList> list = exchangeOrderService.getMyExchangeOrder(query);
+ public AjaxResult<Map<String, Object>> getMyExchangeOrder(GetMyExchangeOrder query){
+ Map<String, Object> list = exchangeOrderService.getMyExchangeOrder(query);
return AjaxResult.success(list);
}
diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/TOrderAppealController.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/TOrderAppealController.java
index b2ddb1d..2a771c7 100644
--- a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/TOrderAppealController.java
+++ b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/TOrderAppealController.java
@@ -9,18 +9,19 @@
import com.ruoyi.common.core.web.page.PageInfo;
import com.ruoyi.common.security.service.TokenService;
import com.ruoyi.common.security.utils.SecurityUtils;
-import com.ruoyi.order.api.model.TOrderAppeal;
+import com.ruoyi.order.api.model.*;
import com.ruoyi.order.api.query.TOrderAppealQuery;
import com.ruoyi.order.api.vo.TOrderAppealVO;
import com.ruoyi.order.dto.ManageFeedbackDto;
import com.ruoyi.order.dto.ManageOrderAppealQuery;
-import com.ruoyi.order.service.TOrderAppealService;
+import com.ruoyi.order.service.*;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
+import java.util.Arrays;
/**
* <p>
@@ -38,6 +39,16 @@
private final TokenService tokenService;
@Resource
private AppUserClient appUserClient;
+ @Resource
+ private TChargingOrderService chargingOrderService;
+ @Resource
+ private TShoppingOrderService shoppingOrderService;
+ @Resource
+ private TExchangeOrderService exchangeOrderService;
+
+ @Resource
+ private TVipOrderService vipOrderService;
+
@Autowired
public TOrderAppealController(TOrderAppealService orderAppealService, TokenService tokenService) {
@@ -53,9 +64,19 @@
.like(manageOrderAppealQuery.getPhone() != null, TOrderAppeal::getPhone, manageOrderAppealQuery.getPhone())
.eq(manageOrderAppealQuery.getOrderType() != null, TOrderAppeal::getOrderType, manageOrderAppealQuery.getOrderType())
.in(TOrderAppeal::getOrderType, 1, 2).page(Page.of(manageOrderAppealQuery.getPageCurr(), manageOrderAppealQuery.getPageSize()));
+
+ for (TOrderAppeal record : page.getRecords()) {
+ record.setUid(record.getId().toString());
+ }
return R.ok(page);
+ }
+ @ApiOperation(tags = {"后台-订单管理-订单申诉"},value = "删除")
+ @DeleteMapping (value = "/manage/delete")
+ public R<Page<TOrderAppeal>> delete(String ids) {
+ orderAppealService.removeBatchByIds(Arrays.asList(ids.split(",")));
+ return R.ok();
}
@ApiOperation(tags = {"后台-订单管理-订单申诉"},value = "后台-订单管理-订单申诉")
@@ -73,8 +94,7 @@
@ApiOperation(tags = {"小程序-订单申诉"},value = "查询订单申诉分页列表")
@PostMapping(value = "/pageList")
public AjaxResult<PageInfo<TOrderAppealVO>> pageList(@RequestBody TOrderAppealQuery query) {
- // TODO 用户id 获取小程序当前登录用户id
- Long userId = tokenService.getLoginUser().getUserid();
+ Long userId = tokenService.getLoginUserApplet().getUserId();
query.setAppUserId(userId);
return AjaxResult.ok(orderAppealService.pageList(query));
}
@@ -84,7 +104,7 @@
*/
@GetMapping(value = "/getDetailById")
@ApiOperation(tags = {"小程序-订单申诉"},value = "查询订单申诉详情")
- public AjaxResult<TOrderAppealVO> getDetailById(Integer id) {
+ public AjaxResult<TOrderAppealVO> getDetailById(String id) {
return AjaxResult.ok(orderAppealService.getDetailById(id));
}
@@ -99,6 +119,20 @@
orderAppeal.setAppUserId(appUserId);
orderAppeal.setStatus(1);
orderAppeal.setPhone(data.getPhone());
+
+ if (orderAppeal.getOrderType()==1){
+ TChargingOrder byId = chargingOrderService.getById(orderAppeal.getOrderId());
+ orderAppeal.setCode(byId.getCode());
+ }else if(orderAppeal.getOrderType()==2){
+ TShoppingOrder byId = shoppingOrderService.getById(orderAppeal.getOrderId());
+ orderAppeal.setCode(byId.getCode());
+ }else if(orderAppeal.getOrderType()==3){
+ TExchangeOrder byId = exchangeOrderService.getById(orderAppeal.getOrderId());
+ orderAppeal.setCode(byId.getCode());
+ }else if(orderAppeal.getOrderType()==4){
+ TVipOrder byId = vipOrderService.getById(orderAppeal.getOrderId());
+ orderAppeal.setCode(byId.getCode());
+ }
orderAppealService.save(orderAppeal);
return AjaxResult.success();
}
diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/TOrderEvaluateController.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/TOrderEvaluateController.java
index 63c2a97..924cae7 100644
--- a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/TOrderEvaluateController.java
+++ b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/TOrderEvaluateController.java
@@ -54,7 +54,7 @@
- @GetMapping(value = "/getPageList")
+ @PostMapping(value = "/getPageList")
@ApiOperation(value = "获取充电评价列表", tags = {"管理后台-充电评价"})
public AjaxResult<PageInfo<GetOrderEvaluatePageListDTO>> getPageList(@RequestBody GetOrderEvaluatePageList pageList){
PageInfo<GetOrderEvaluatePageListDTO> list = orderEvaluateService.getPageList(pageList);
diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/TShoppingOrderController.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/TShoppingOrderController.java
index c843b31..8418b50 100644
--- a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/TShoppingOrderController.java
+++ b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/TShoppingOrderController.java
@@ -3,6 +3,8 @@
import java.time.LocalDateTime;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.extension.conditions.query.LambdaQueryChainWrapper;
import com.ruoyi.account.api.feignClient.AppCouponClient;
import com.ruoyi.account.api.feignClient.AppUserClient;
import com.ruoyi.account.api.model.TAppUserAddress;
@@ -24,6 +26,7 @@
import com.ruoyi.payment.api.model.RefundReq;
import com.ruoyi.payment.api.model.RefundResp;
import com.ruoyi.payment.api.model.WxPaymentRefundModel;
+import com.ruoyi.payment.api.vo.WxRefundNotifyResp;
import com.ruoyi.system.api.domain.SysUser;
import com.ruoyi.system.api.feignClient.SysUserClient;
import io.swagger.annotations.Api;
@@ -33,9 +36,8 @@
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
-import java.util.Arrays;
-import java.util.Date;
-import java.util.List;
+import javax.servlet.http.HttpServletRequest;
+import java.util.*;
/**
* <p>
@@ -84,7 +86,7 @@
}
@Resource
private SysUserClient sysUserClient;
- @PostMapping("/getShoppingOrderInfoById")
+ @GetMapping("/getShoppingOrderInfoById")
@ApiOperation(value = "根据订单id查看订单详情", tags = {"管理后台-购物订单"})
public AjaxResult<TShoppingOrder> getShoppingOrderList(String id) {
TShoppingOrder byId = shoppingOrderService.getById(id);
@@ -142,6 +144,9 @@
// todo 部署到线上之后写回调地址
// wxPaymentRefundModel.setNotify_url("");
String string = byId.getPaymentAmount().multiply(new BigDecimal("100")).toString();
+ if (string.contains(".")){
+ string = string.substring(0,string.indexOf("."));
+ }
int i = Integer.parseInt(string);
WxPaymentRefundModel.RefundAmount refundAmount = new WxPaymentRefundModel.RefundAmount();
refundAmount.setTotal(i);
@@ -176,8 +181,10 @@
}
@GetMapping("/consignerShoppingOrder")
@ApiOperation(value = "发货", tags = {"管理后台-购物订单"})
- public AjaxResult consignerShoppingOrder(String id) {
+ public AjaxResult consignerShoppingOrder(String id,String companyName,String code) {
TShoppingOrder byId = shoppingOrderService.getById(id);
+ byId.setExpressCompany(companyName);
+ byId.setExpressNumber(code);
Long userid = tokenService.getLoginUser().getUserid();
byId.setConsignerId(userid);
byId.setConsignerTime(LocalDateTime.now());
@@ -187,11 +194,28 @@
}
@GetMapping("/getMyShoppingOrderList")
@ApiOperation(value = "获取购买订单列表", tags = {"小程序-商城购买订单"})
- public AjaxResult<List<MyShoppingOrderList>> getMyShoppingOrderList(GetMyShoppingOrderList query){
- List<MyShoppingOrderList> list = shoppingOrderService.getMyShoppingOrderList(query);
+ public AjaxResult<Map<String, Object>> getMyShoppingOrderList(GetMyShoppingOrderList query){
+ Map<String, Object> list = shoppingOrderService.getMyShoppingOrderList(query);
return AjaxResult.success(list);
}
-
+
+ @GetMapping("/getMyShoppingOrderListNum")
+ @ApiOperation(value = "获取购买订单列表数量", tags = {"小程序-商城购买订单"})
+ public AjaxResult<Map<String, Object>> getMyShoppingOrderListNum(){
+ Long userId = tokenService.getLoginUserApplet().getUserId();
+ long dfh = shoppingOrderService.count(new LambdaQueryWrapper<TShoppingOrder>().eq(TShoppingOrder::getDelFlag, 0)
+ .eq(TShoppingOrder::getStatus, 1).eq(TShoppingOrder::getAppUserId, userId));
+ long dsh = shoppingOrderService.count(new LambdaQueryWrapper<TShoppingOrder>().eq(TShoppingOrder::getDelFlag, 0)
+ .eq(TShoppingOrder::getStatus, 2).eq(TShoppingOrder::getAppUserId, userId));
+ long ywc = shoppingOrderService.count(new LambdaQueryWrapper<TShoppingOrder>().eq(TShoppingOrder::getDelFlag, 0)
+ .eq(TShoppingOrder::getStatus, 3).eq(TShoppingOrder::getAppUserId, userId));
+ Map<String, Object> map = new HashMap<>();
+ map.put("dfh", dfh);
+ map.put("dsh", dsh);
+ map.put("ywc", ywc);
+ return AjaxResult.success(map);
+ }
+
@GetMapping("/getMyShoppingOrderInfo/{id}")
@@ -228,6 +252,21 @@
return shoppingOrderService.cancelOrder(id);
}
+ /**
+ * 商城订单取消微信退款回调
+ */
+ @PostMapping("/cancelShoppingOrderWxRefund")
+ public void cancelShoppingOrderWxRefund(HttpServletRequest request){
+ WxRefundNotifyResp data = wxPaymentClient.refundNotify(request).getData();
+ if(null != data){
+ String out_refund_no = data.getOut_refund_no();
+ String refund_id = data.getRefund_id();
+ String tradeState = data.getTradeState();
+ String success_time = data.getSuccess_time();
+ shoppingOrderService.cancelShoppingOrderWxRefund(out_refund_no, refund_id, tradeState, success_time);
+ }
+ }
+
@ResponseBody
@@ -250,7 +289,7 @@
shoppingOrder.setCouponId(exchangeDto.getGoodId());
}
shoppingOrder.setPurchaseQuantity(exchangeDto.getNum());
- shoppingOrder.setAppUserAddressId(Long.valueOf(exchangeDto.getAddressId()));
+ shoppingOrder.setAppUserAddressId(exchangeDto.getAddressId());
shoppingOrder.setOrderAmount(exchangeDto.getOrderPrice());
if (exchangeDto.getCouponId()!=null) {
shoppingOrder.setAppCouponId(exchangeDto.getCouponId());
diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/TVipOrderController.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/TVipOrderController.java
index 8165775..7beaf25 100644
--- a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/TVipOrderController.java
+++ b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/TVipOrderController.java
@@ -52,7 +52,7 @@
@PostMapping("/addVipOrder")
@ApiOperation(value = "添加会员订单", tags = {"管理后台-会员订单"})
public AjaxResult addVipOrder(@RequestBody TVipOrder dto) {
- vipOrderService.save(dto);
+ vipOrderService.saveOrUpdate(dto);
return AjaxResult.success();
}
@GetMapping("/deleteVipOrder")
diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/dto/ChargingDetails.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/dto/ChargingDetails.java
index 6dd6614..18e2fbe 100644
--- a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/dto/ChargingDetails.java
+++ b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/dto/ChargingDetails.java
@@ -26,7 +26,7 @@
@ApiModelProperty("续航")
private BigDecimal endurance;
@ApiModelProperty("剩余充电时间")
- private Long remainingChargeTime;
+ private Integer remainingChargeTime;
@ApiModelProperty("充电枪名")
private String name;
@ApiModelProperty("订单编号")
@@ -34,9 +34,9 @@
@ApiModelProperty("已充电度数")
private BigDecimal chargedDegrees;
@ApiModelProperty("已充电时间")
- private Long chargedTime;
+ private Integer chargedTime;
@ApiModelProperty("充电费用")
- private BigDecimal ChargingCost;
+ private BigDecimal chargingCost;
@ApiModelProperty("充电状态(0=未知,1=等待中,2=启动中,3=充电中,4=停止中,5=已结束)")
private Integer status;
}
diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/dto/ChargingListQuery.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/dto/ChargingListQuery.java
new file mode 100644
index 0000000..e9187bb
--- /dev/null
+++ b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/dto/ChargingListQuery.java
@@ -0,0 +1,38 @@
+package com.ruoyi.order.dto;
+
+import com.ruoyi.common.core.web.page.BasePage;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.time.LocalDateTime;
+import java.util.List;
+
+@Data
+public class ChargingListQuery extends BasePage {
+ @ApiModelProperty("订单编号")
+ private String code;
+
+ @ApiModelProperty("电站id")
+ private Integer siteId;
+ @ApiModelProperty("状态(0=未知,1=等待中,2=启动中,3=充电中,4=停止中,5=已结束)")
+ private Integer status;
+
+ @ApiModelProperty("手机号")
+ private String phone;
+ @ApiModelProperty("车牌号")
+ private String licensePlate;
+
+ @ApiModelProperty("订单类型(1=充电订单(小程序),2=充电订单(刷卡))")
+ private Integer orderType;
+
+ @ApiModelProperty("开始时间 2020-01-01 12:00:00 - 2020-01-01 23:00:00")
+ private String startTime;
+
+ @ApiModelProperty("结束时间 2020-01-01 12:00:00 - 2020-01-01 23:00:00")
+ private String endTime;
+ @ApiModelProperty("用户ids 前端忽略")
+ private List<Long> userIds;
+ @ApiModelProperty("车辆ids 前端忽略")
+ private List<Long> carIds;
+
+}
diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/dto/MyChargingOrderList.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/dto/MyChargingOrderList.java
index 9c1613b..0173c0d 100644
--- a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/dto/MyChargingOrderList.java
+++ b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/dto/MyChargingOrderList.java
@@ -31,4 +31,10 @@
private BigDecimal payMoney;
@ApiModelProperty("订单时间")
private String createTime;
+ @ApiModelProperty("评价状态(1=待评价,2=已评价)")
+ private Long evaluate;
+ @ApiModelProperty("电费")
+ private BigDecimal electricCharge;
+ @ApiModelProperty("服务费")
+ private BigDecimal serviceCharge;
}
diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/dto/MyShoppingOrderInfo.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/dto/MyShoppingOrderInfo.java
index 307d58f..382c3ff 100644
--- a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/dto/MyShoppingOrderInfo.java
+++ b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/dto/MyShoppingOrderInfo.java
@@ -39,6 +39,8 @@
private String code;
@ApiModelProperty("下单时间")
private String createTime;
+ @ApiModelProperty("订单金额")
+ private BigDecimal orderAmount;
@ApiModelProperty("支付金额")
private BigDecimal paymentAmount;
@ApiModelProperty("备注")
diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/dto/MyShoppingOrderList.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/dto/MyShoppingOrderList.java
index 6cc1346..a16ec05 100644
--- a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/dto/MyShoppingOrderList.java
+++ b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/dto/MyShoppingOrderList.java
@@ -19,6 +19,8 @@
private String imgUrl;
@ApiModelProperty("商品名称")
private String name;
+ @ApiModelProperty("商品类型(1=商品,2=优惠券)")
+ private Integer orderType;
@ApiModelProperty("状态(1=待发货,2=待收货,3=已完成,4=已取消)")
private Integer status;
@ApiModelProperty("单价")
@@ -27,4 +29,6 @@
private Integer number;
@ApiModelProperty("支付金额")
private BigDecimal paymentAmount;
+ @ApiModelProperty("订单时间")
+ private String createTime;
}
diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/dto/PayOrderDto.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/dto/PayOrderDto.java
index db5a856..762d550 100644
--- a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/dto/PayOrderDto.java
+++ b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/dto/PayOrderDto.java
@@ -31,5 +31,7 @@
private LocalDateTime endTime;
@ApiModelProperty("支付时间")
private LocalDateTime payTime;
+ private Integer refundStatus;
+ private Double finalAmount;
}
diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/filter/AuthFilter.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/filter/AuthFilter.java
index 6d39f09..bebbace 100644
--- a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/filter/AuthFilter.java
+++ b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/filter/AuthFilter.java
@@ -80,7 +80,7 @@
return;
}
}
- filterChain.doFilter(request, response);
+ filterChain.doFilter(servletRequest, servletResponse);
}
diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/mapper/TChargingOrderMapper.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/mapper/TChargingOrderMapper.java
index 4c5c6d6..d9bad70 100644
--- a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/mapper/TChargingOrderMapper.java
+++ b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/mapper/TChargingOrderMapper.java
@@ -7,6 +7,7 @@
import com.ruoyi.order.api.model.TChargingOrder;
import com.ruoyi.order.api.model.TChargingOrderRefund;
import com.ruoyi.order.api.query.ChargingOrderQuery;
+import com.ruoyi.order.api.vo.ChargingOrderListVO;
import com.ruoyi.order.api.vo.ChargingOrderVO;
import com.ruoyi.order.dto.*;
import org.apache.ibatis.annotations.Mapper;
@@ -74,4 +75,8 @@
List<Map<String, BigDecimal>> getMonthData(List<Long> chargingOrderIds);
List<Map<String, BigDecimal>> getYearData(List<Long> chargingOrderIds);
+
+ List<ChargingOrderListVO> chargingList(@Param("pageInfo")PageInfo<ChargingOrderListVO> pageInfo, @Param("req")ChargingListQuery dto, @Param("startTime1")String startTime1, @Param("startTime2")String startTime2, @Param("endTime1")String endTime1, @Param("endTime2")String endTime2);
+ List<ChargingOrderListVO> chargingList1( @Param("req")ChargingListQuery dto, @Param("startTime1")String startTime1, @Param("startTime2")String startTime2, @Param("endTime1")String endTime1, @Param("endTime2")String endTime2);
+
}
diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/TChargingOrderService.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/TChargingOrderService.java
index 340dda8..23d19a3 100644
--- a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/TChargingOrderService.java
+++ b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/TChargingOrderService.java
@@ -10,6 +10,7 @@
import com.ruoyi.order.api.model.TChargingOrder;
import com.ruoyi.order.api.model.TChargingOrderRefund;
import com.ruoyi.order.api.query.ChargingOrderQuery;
+import com.ruoyi.order.api.vo.ChargingOrderTimeVO;
import com.ruoyi.order.api.vo.ChargingOrderVO;
import com.ruoyi.order.api.vo.TCharingOrderVO;
import com.ruoyi.order.dto.*;
@@ -112,4 +113,6 @@
List<Map<String, BigDecimal>> getMonthData(List<Long> chargingOrderIds);
List<Map<String, BigDecimal>> getYearData(List<Long> chargingOrderIds);
+
+ ChargingOrderTimeVO chargingList(ChargingListQuery dto);
}
diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/TExchangeOrderService.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/TExchangeOrderService.java
index 755fa3c..ce4ae13 100644
--- a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/TExchangeOrderService.java
+++ b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/TExchangeOrderService.java
@@ -9,6 +9,7 @@
import com.ruoyi.order.dto.MyExchangeOrderList;
import java.util.List;
+import java.util.Map;
/**
* <p>
@@ -26,7 +27,7 @@
* @param query
* @return
*/
- List<MyExchangeOrderList> getMyExchangeOrder(GetMyExchangeOrder query);
+ Map<String, Object> getMyExchangeOrder(GetMyExchangeOrder query);
/**
diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/TOrderAppealService.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/TOrderAppealService.java
index 1cad0a1..2ed3cae 100644
--- a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/TOrderAppealService.java
+++ b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/TOrderAppealService.java
@@ -28,5 +28,5 @@
* @param id
* @return
*/
- TOrderAppealVO getDetailById(Integer id);
+ TOrderAppealVO getDetailById(String id);
}
diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/TShoppingOrderService.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/TShoppingOrderService.java
index c75e0b8..0412e97 100644
--- a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/TShoppingOrderService.java
+++ b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/TShoppingOrderService.java
@@ -15,6 +15,7 @@
import java.math.BigDecimal;
import java.time.LocalDate;
import java.util.List;
+import java.util.Map;
/**
* <p>
@@ -34,7 +35,7 @@
* @param query
* @return
*/
- List<MyShoppingOrderList> getMyShoppingOrderList(GetMyShoppingOrderList query);
+ Map<String, Object> getMyShoppingOrderList(GetMyShoppingOrderList query);
/**
@@ -54,6 +55,18 @@
/**
+ * 商城订单取消订单微信退款处理
+ * @param out_refund_no 退款单号
+ * @param refund_id 退款流水号
+ * @param refund_status 退款状态 SUCCESS:退款成功 CLOSED:退款关闭 ABNORMAL:退款异常
+ * @param success_time 退款成功时间
+ * @return
+ */
+ AjaxResult cancelShoppingOrderWxRefund(String out_refund_no, String refund_id, String refund_status, String success_time);
+
+
+
+ /**
* 获取未开票的订单列表
* @param query
* @return
diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TChargingOrderAccountingStrategyServiceImpl.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TChargingOrderAccountingStrategyServiceImpl.java
index 413fa9b..f242070 100644
--- a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TChargingOrderAccountingStrategyServiceImpl.java
+++ b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TChargingOrderAccountingStrategyServiceImpl.java
@@ -71,21 +71,21 @@
map2.put("name", "峰");
BigDecimal value2 = list1.stream().filter(s -> orderIds.contains(s.getChargingOrderId()) && s.getType() == 2)
.map(TChargingOrderAccountingStrategy::getChargingCapacity).reduce(BigDecimal.ZERO, BigDecimal::add);
- map1.put("value", value2.setScale(2, RoundingMode.HALF_EVEN));
+ map2.put("value", value2.setScale(2, RoundingMode.HALF_EVEN));
datas.add(map2);
Map<String, Object> map3 = new HashMap<>();
map3.put("name", "平");
BigDecimal value3 = list1.stream().filter(s -> orderIds.contains(s.getChargingOrderId()) && s.getType() == 3)
.map(TChargingOrderAccountingStrategy::getChargingCapacity).reduce(BigDecimal.ZERO, BigDecimal::add);
- map1.put("value", value3.setScale(2, RoundingMode.HALF_EVEN));
+ map3.put("value", value3.setScale(2, RoundingMode.HALF_EVEN));
datas.add(map3);
Map<String, Object> map4 = new HashMap<>();
map4.put("name", "谷");
BigDecimal value4 = list1.stream().filter(s -> orderIds.contains(s.getChargingOrderId()) && s.getType() == 4)
.map(TChargingOrderAccountingStrategy::getChargingCapacity).reduce(BigDecimal.ZERO, BigDecimal::add);
- map1.put("value", value4.setScale(2, RoundingMode.HALF_EVEN));
+ map4.put("value", value4.setScale(2, RoundingMode.HALF_EVEN));
datas.add(map4);
list2.add(datas);
}
diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TChargingOrderRefundServiceImpl.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TChargingOrderRefundServiceImpl.java
new file mode 100644
index 0000000..ecb7753
--- /dev/null
+++ b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TChargingOrderRefundServiceImpl.java
@@ -0,0 +1,15 @@
+package com.ruoyi.order.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.ruoyi.order.api.model.TChargingOrderRefund;
+import com.ruoyi.order.mapper.TChargingOrderRefundMapper;
+import com.ruoyi.order.service.TChargingOrderRefundService;
+import org.springframework.stereotype.Service;
+
+/**
+ * @author zhibing.pu
+ * @date 2024/8/28 15:18
+ */
+@Service
+public class TChargingOrderRefundServiceImpl extends ServiceImpl<TChargingOrderRefundMapper, TChargingOrderRefund> implements TChargingOrderRefundService {
+}
diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TChargingOrderServiceImpl.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TChargingOrderServiceImpl.java
index c4a7a3c..dbb8223 100644
--- a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TChargingOrderServiceImpl.java
+++ b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TChargingOrderServiceImpl.java
@@ -25,18 +25,26 @@
import com.ruoyi.common.core.web.page.PageInfo;
import com.ruoyi.common.redis.service.RedisService;
import com.ruoyi.common.security.service.TokenService;
+import com.ruoyi.integration.api.feignClient.ChargingHandshakeClient;
+import com.ruoyi.integration.api.feignClient.SendMessageClient;
import com.ruoyi.integration.api.feignClient.UploadRealTimeMonitoringDataClient;
+import com.ruoyi.integration.api.model.ChargingHandshake;
+import com.ruoyi.integration.api.model.PlatformStartCharging;
import com.ruoyi.integration.api.model.UploadRealTimeMonitoringData;
import com.ruoyi.order.api.model.TChargingOrder;
import com.ruoyi.order.api.model.TChargingOrderAccountingStrategy;
import com.ruoyi.order.api.model.TChargingOrderRefund;
+import com.ruoyi.order.api.model.TOrderEvaluate;
import com.ruoyi.order.api.query.ChargingOrderQuery;
+import com.ruoyi.order.api.vo.ChargingOrderListVO;
+import com.ruoyi.order.api.vo.ChargingOrderTimeVO;
import com.ruoyi.order.api.vo.ChargingOrderVO;
import com.ruoyi.order.api.vo.TCharingOrderVO;
import com.ruoyi.order.dto.*;
import com.ruoyi.order.mapper.TChargingOrderMapper;
import com.ruoyi.order.service.TChargingOrderAccountingStrategyService;
import com.ruoyi.order.service.TChargingOrderService;
+import com.ruoyi.order.service.TOrderEvaluateService;
import com.ruoyi.payment.api.feignClient.AliPaymentClient;
import com.ruoyi.payment.api.feignClient.WxPaymentClient;
import com.ruoyi.payment.api.vo.*;
@@ -78,7 +86,11 @@
private AppUserCarClient appUserCarClient;
@Resource
private AppUserClient appUserClient;
-
+
+ @Resource
+ private ChargingPileClient chargingPileClient;
+
+
@Resource
private TChargingOrderAccountingStrategyService chargingOrderAccountingStrategyService;
@@ -91,8 +103,7 @@
@Resource
private AliPaymentClient aliPaymentClient;
- @Resource
- private ChargingPileClient chargingPileClient;
+
@Resource
@@ -104,7 +115,15 @@
@Resource
private UploadRealTimeMonitoringDataClient uploadRealTimeMonitoringDataClient;
-
+ @Resource
+ private ChargingHandshakeClient chargingHandshakeClient;
+
+ @Resource
+ private SendMessageClient sendMessageClient;
+
+ @Resource
+ private TOrderEvaluateService orderEvaluateService;
+
@@ -135,9 +154,14 @@
BigDecimal payMoney = tChargingOrder.getStatus() < 4 ? tChargingOrder.getRechargeAmount() : tChargingOrder.getPaymentAmount();
myChargingOrderList.setPayMoney(payMoney);
myChargingOrderList.setCreateTime(tChargingOrder.getCreateTime().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));
+ long count = orderEvaluateService.count(new LambdaQueryWrapper<TOrderEvaluate>().eq(TOrderEvaluate::getOrderType, 1)
+ .eq(TOrderEvaluate::getOrderId, tChargingOrder.getId()).eq(TOrderEvaluate::getDelFlag, 0));
+ myChargingOrderList.setEvaluate(count + 1L);
orderLists.add(myChargingOrderList);
}
+ list = this.baseMapper.getMyChargingOrderList(appUserId, query.getType(), null, null);
map.put("list", orderLists);
+ map.put("totle", list.size());
return map;
}
@@ -207,7 +231,7 @@
map.put("time", time.get(i));
//soc
map.put("soc", soc.get(i));
- //电压
+ //功率
map.put("power", po.get(i));
power.add(map);
}
@@ -241,6 +265,8 @@
BigDecimal payMoney = tChargingOrder.getStatus() < 4 ? tChargingOrder.getRechargeAmount() : tChargingOrder.getPaymentAmount();
myChargingOrderList.setPayMoney(payMoney);
myChargingOrderList.setCreateTime(tChargingOrder.getCreateTime().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));
+ myChargingOrderList.setElectricCharge(tChargingOrder.getElectrovalence());
+ myChargingOrderList.setServiceCharge(tChargingOrder.getServiceCharge());
list.add(myChargingOrderList);
}
return list;
@@ -414,10 +440,25 @@
preChargeCheck.setSecureConnectionDetection(false);
String key = "AQJC_" + chargingOrder.getChargingGunId();
redisService.setCacheObject(key, preChargeCheck);
- //开始检测充电桩状,将检查状态写入缓存。检测完成后开始开启充电
- //充电结束后需要计算退款剩余金额
- // todo 需要完善
+ //根据当前充值的金额和计费模板算出充电的金额
+ BigDecimal rechargeAmount = chargingOrder.getRechargeAmount();
+ //计算充电金额,会员需要将折扣金额加入到充电总金额中
+
+// TAppUser appUser = appUserClient.getUserById(chargingOrder.getAppUserId()).getData();
+// if(){
+// appUser.getVipId()
+// }
+//
+//
+// //调用远程启动充电消息
+// PlatformStartCharging platformStartCharging = new PlatformStartCharging();
+// platformStartCharging.setTransaction_serial_number(chargingOrder.getCode());
+// platformStartCharging.setCharging_pile_code();
+// platformStartCharging.setCharging_gun_code();
+// platformStartCharging.setCard_number();
+// platformStartCharging.setAccount_balance()
+// sendMessageClient.platformStartCharging(platformStartCharging);
return AjaxResult.success();
}
@@ -435,7 +476,6 @@
if(null == one){
return null;
}
- // todo 需要完善充电实时数据
ChargingDetails chargingDetails = new ChargingDetails();
chargingDetails.setId(one.getId().toString());
TChargingGun chargingGun = chargingGunClient.getChargingGunById(id).getData();
@@ -444,6 +484,27 @@
chargingDetails.setName(site.getName() + "-" + chargingPile.getName());
chargingDetails.setCode(one.getCode());
chargingDetails.setStatus(one.getStatus());
+ UploadRealTimeMonitoringData data = uploadRealTimeMonitoringDataClient.chargingOrderInfo(one.getCode()).getData();
+ if(null != data){
+ chargingDetails.setChargeCurrent(data.getOutput_current());
+ chargingDetails.setChargeVoltage(data.getOutput_voltage());
+ BigDecimal power = data.getOutput_current().multiply(data.getOutput_voltage()).divide(new BigDecimal(1000));
+ chargingDetails.setChargePower(power);
+ chargingDetails.setCompletionRatio(data.getSoc());
+ chargingDetails.setRemainingChargeTime(data.getTime_remaining());
+ chargingDetails.setChargedDegrees(data.getCharging_degree());
+ chargingDetails.setChargedTime(data.getCumulative_charging_time());
+ chargingDetails.setChargingCost(data.getPaid_amount());
+ }
+ ChargingHandshake chargingHandshake = chargingHandshakeClient.getDataByOrderCode(one.getCode()).getData();
+ if(null != chargingHandshake && null != data && null != one.getAppUserCarId()){
+ BigDecimal bms_battery_capacity = chargingHandshake.getBms_battery_capacity();
+ TAppUserCar appUserCar = appUserCarClient.getCarByIds(Arrays.asList(one.getAppUserCarId())).getData().get(0);
+ // 续航 = 电池容量 / 续航里程 * soc
+ BigDecimal divide = bms_battery_capacity.divide(new BigDecimal(appUserCar.getEndurance()));
+ BigDecimal multiply = new BigDecimal(data.getSoc() / 100).multiply(divide);
+ chargingDetails.setEndurance(multiply);
+ }
return chargingDetails;
}
@@ -467,6 +528,14 @@
// todo 待完善
return AjaxResult.success();
}
+
+
+
+ public void endCharge(){
+
+ }
+
+
@Override
@@ -506,6 +575,12 @@
BigDecimal electronicMoney = new BigDecimal("0");
BigDecimal serviceMoney = new BigDecimal("0");
for (ChargingOrderVO chargingOrderVO : list) {
+ TChargingGun data3 = chargingGunClient.getChargingGunById(chargingOrderVO.getChargingGunId()).getData();
+ TChargingPile data2 = chargingPileClient.getChargingPileById(chargingOrderVO.getChargingPileId()).getData();
+ if (data2!=null && data3!=null){
+ chargingOrderVO.setTerminalName(data2.getName()+"-"+data3.getName());
+
+ }
if (chargingOrderVO.getChargingCapacity()!=null){
total = total.add(chargingOrderVO.getChargingCapacity());
}
@@ -516,14 +591,8 @@
BigDecimal electronicMoney1 = new BigDecimal("0");
// 单个订单累计服务费
BigDecimal serviceMoney1 = new BigDecimal("0");
- LocalDateTime startTime = chargingOrderVO.getStartTime();
- LocalDateTime endTime = chargingOrderVO.getEndTime();
- // 计算时间差 秒 充电时长
- if (startTime!=null && endTime!=null){
- long between = ChronoUnit.SECONDS.between(startTime, endTime);
- chargingOrderVO.setChargingSecond(between);
- time += between;
- }
+ // todo 调用第三方获取充电时长 秒
+
// 总收入
if (chargingOrderVO.getRefundStatus() !=null && chargingOrderVO.getRefundStatus() == 2){
income = income.add(chargingOrderVO.getPaymentAmount().subtract(chargingOrderVO.getRefundAmount()));
@@ -634,4 +703,166 @@
public List<Map<String, BigDecimal>> getYearData(List<Long> chargingOrderIds) {
return this.baseMapper.getYearData(chargingOrderIds);
}
+
+ @Override
+ public ChargingOrderTimeVO chargingList(ChargingListQuery dto) {
+ String startTime1 = null;
+ String startTime2 = null;
+ String endTime1 = null;
+ String endTime2 = null;
+
+ if (StringUtils.hasLength(dto.getStartTime())){
+ String[] split = dto.getStartTime().split(" - ");
+ startTime1 = split[0];
+ startTime2 = split[1];
+ }
+ if (StringUtils.hasLength(dto.getEndTime())){
+ String[] split = dto.getEndTime().split(" - ");
+ endTime1 = split[0];
+ endTime2 = split[1];
+ }
+ ChargingOrderTimeVO chargingOrderTimeVO = new ChargingOrderTimeVO();
+
+
+ PageInfo<ChargingOrderListVO> pageInfo = new PageInfo<>(dto.getPageCurr(),dto.getPageSize());
+ List<ChargingOrderListVO> list = this.baseMapper.chargingList(pageInfo,dto,startTime1,startTime2,endTime1,endTime2);
+ for (ChargingOrderListVO chargingOrderListVO : list) {
+ List<Integer> integers = new ArrayList<>();
+ integers.add(chargingOrderListVO.getSiteId());
+ List<Site> data = siteClient.getSiteByIds(integers).getData();
+ if (!data.isEmpty()) {
+ chargingOrderListVO.setSiteName(data.get(0).getName());
+ }
+ TChargingGun data1 = chargingGunClient.getChargingGunById(chargingOrderListVO.getChargingGunId()).getData();
+ TChargingPile data2 = chargingPileClient.getChargingPileById(chargingOrderListVO.getChargingPileId()).getData();
+ if (data2 != null && data1 != null) {
+ chargingOrderListVO.setTerminalName(data2.getName() + "-" + data1.getName());
+ }
+ // todo 充电时长 调用第三方获取
+ TAppUser data3 = appUserClient.getUserById(chargingOrderListVO.getAppUserId()).getData();
+ List<Long> carId = new ArrayList<>();
+ if (chargingOrderListVO.getAppUserCarId() != null) {
+ carId.add(chargingOrderListVO.getAppUserCarId());
+ List<TAppUserCar> data4 = appUserCarClient.getCarByIds(carId).getData();
+ if (!data4.isEmpty()) chargingOrderListVO.setLicensePlate(data4.get(0).getLicensePlate());
+ }
+ if (data3 != null) chargingOrderListVO.setPhone(data3.getPhone());
+ List<TChargingOrderAccountingStrategy> list2 = chargingOrderAccountingStrategyService.lambdaQuery()
+ .eq(TChargingOrderAccountingStrategy::getChargingOrderId, chargingOrderListVO.getId()).list();
+ // 尖峰平谷充电量 度数
+ BigDecimal jian = new BigDecimal("0");
+ BigDecimal feng = new BigDecimal("0");
+ BigDecimal ping = new BigDecimal("0");
+ BigDecimal gu = new BigDecimal("0");
+ BigDecimal total = new BigDecimal("0");
+ for (TChargingOrderAccountingStrategy temp : list2) {
+ switch (temp.getType()) {
+ case 1:
+ jian = jian.add(temp.getChargingCapacity());
+ break;
+ case 2:
+ feng = feng.add(temp.getChargingCapacity());
+ break;
+ case 3:
+ ping = ping.add(temp.getChargingCapacity());
+ break;
+ case 4:
+ gu = gu.add(temp.getChargingCapacity());
+ break;
+ }
+ }
+ total = total.add(jian).add(feng).add(ping).add(gu);
+ chargingOrderListVO.setElectronicProportion(
+ jian.divide(total,4,BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal("100"))+"%(尖)/"
+ +feng.divide(total,4,BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal("100"))+"%(峰)/"
+ +ping.divide(total,4,BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal("100"))+"%(平)/"
+ +gu.divide(total,4,BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal("100"))+"%(谷)");
+ }
+ // 不分页
+ List<ChargingOrderListVO> list1 = this.baseMapper.chargingList1(dto,startTime1,startTime2,endTime1,endTime2);
+ chargingOrderTimeVO.setOrderCount(list1.size());
+ // 计算充电总度数
+ BigDecimal electronic = new BigDecimal("0");
+ // 支付金额
+ BigDecimal paymentAmount = new BigDecimal("0");
+ // 电费
+ BigDecimal electrovalence = new BigDecimal("0");
+ // 服务费
+ BigDecimal serviceCharge = new BigDecimal("0");
+ // 尖峰平谷充电到账
+ BigDecimal jianElectronic = new BigDecimal("0");
+ BigDecimal fengElectronic = new BigDecimal("0");
+ BigDecimal pingElectronic = new BigDecimal("0");
+ BigDecimal guElectronic = new BigDecimal("0");
+ // 尖峰平谷服务费
+ BigDecimal jianService = new BigDecimal("0");
+ BigDecimal fengService = new BigDecimal("0");
+ BigDecimal pingService = new BigDecimal("0");
+ BigDecimal guService = new BigDecimal("0");
+ // 尖峰平谷充电量 度数
+ BigDecimal jian = new BigDecimal("0");
+ BigDecimal feng = new BigDecimal("0");
+ BigDecimal ping = new BigDecimal("0");
+ BigDecimal gu = new BigDecimal("0");
+ for (ChargingOrderListVO chargingOrderListVO : list1) {
+ electronic = electronic.add(chargingOrderListVO.getChargingCapacity());
+ paymentAmount = paymentAmount.add(chargingOrderListVO.getPaymentAmount());
+ electrovalence = electrovalence.add(chargingOrderListVO.getElectrovalence());
+ serviceCharge = serviceCharge.add(chargingOrderListVO.getServiceCharge());
+ List<TChargingOrderAccountingStrategy> list2 = chargingOrderAccountingStrategyService.lambdaQuery()
+ .eq(TChargingOrderAccountingStrategy::getChargingOrderId, chargingOrderListVO.getId()).list();
+ for (TChargingOrderAccountingStrategy temp : list2) {
+ switch (temp.getType()){
+ case 1:
+ jian = jian.add(temp.getChargingCapacity());
+ jianElectronic = jianElectronic.add(temp.getChargingCapacity());
+ jianService = jianService.add(temp.getChargingCapacity());
+ break;
+ case 2:
+ feng = feng.add(temp.getChargingCapacity());
+ fengElectronic = fengElectronic.add(temp.getChargingCapacity());
+ fengService = fengService.add(temp.getChargingCapacity());
+ break;
+ case 3:
+ ping = ping.add(temp.getChargingCapacity());
+ pingElectronic = pingElectronic.add(temp.getChargingCapacity());
+ pingService = pingService.add(temp.getChargingCapacity());
+ break;
+ case 4:
+ gu = gu.add(temp.getChargingCapacity());
+ guElectronic = guElectronic.add(temp.getChargingCapacity());
+ guService = guService.add(temp.getChargingCapacity());
+ break;
+ }
+ }
+ }
+
+ chargingOrderTimeVO.setChargingCapacity(electronic);
+ chargingOrderTimeVO.setPaymentAmount(paymentAmount);
+ chargingOrderTimeVO.setElectrovalence(electrovalence);
+ chargingOrderTimeVO.setServiceCharge(serviceCharge);
+ // 计算尖峰平谷充电量占比
+ BigDecimal add = jianElectronic.add(fengElectronic).add(pingElectronic).add(guElectronic);
+ // 计算尖峰平谷服务费占比
+ BigDecimal add1 = jianService.add(fengService).add(pingService).add(guService);
+ // 计算尖峰平谷充电到账占比
+ BigDecimal add2 = jian.add(feng).add(ping).add(gu);
+ chargingOrderTimeVO.setCapacityProportion(jianElectronic+"度/"+fengElectronic+"度/"+pingElectronic+"度/"+guElectronic+"度-"
+ +jianElectronic.divide(add,4,BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal("100"))+"%/"
+ +fengElectronic.divide(add,4,BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal("100"))+"%/"
+ +pingElectronic.divide(add,4,BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal("100"))+"%/"
+ +guElectronic.divide(add,4,BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal("100"))+"%");
+ chargingOrderTimeVO.setServiceProportion(jianService+"元/"+fengService+"元/"+pingService+"元/"+guService+"元-"
+ +jianService.divide(add1,4,BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal("100"))+"%/"
+ +fengService.divide(add1,4,BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal("100"))+"%/"
+ +pingService.divide(add1,4,BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal("100"))+"%/"
+ +guService.divide(add1,4,BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal("100"))+"%");
+ chargingOrderTimeVO.setElectronicProportion(jian+"元/"+feng+"元/"+ping+"元/"+gu+"元-"
+ +jian.divide(add2,4,BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal("100"))+"%/"
+ +feng.divide(add2,4,BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal("100"))+"%/"
+ +ping.divide(add2,4,BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal("100"))+"%/"
+ +gu.divide(add2,4,BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal("100"))+"%");
+ chargingOrderTimeVO.setList(pageInfo);
+ return chargingOrderTimeVO;
+ }
}
diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TExchangeOrderServiceImpl.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TExchangeOrderServiceImpl.java
index d554e24..243c47e 100644
--- a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TExchangeOrderServiceImpl.java
+++ b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TExchangeOrderServiceImpl.java
@@ -3,6 +3,8 @@
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.ruoyi.account.api.feignClient.AppUserAddressClient;
+import com.ruoyi.account.api.feignClient.AppUserClient;
+import com.ruoyi.account.api.model.TAppUser;
import com.ruoyi.account.api.model.TAppUserAddress;
import com.ruoyi.common.core.web.page.PageInfo;
import com.ruoyi.common.security.service.TokenService;
@@ -25,7 +27,9 @@
import javax.annotation.Resource;
import java.time.format.DateTimeFormatter;
import java.util.ArrayList;
+import java.util.HashMap;
import java.util.List;
+import java.util.Map;
/**
* <p>
@@ -49,8 +53,9 @@
@Resource
private AppUserAddressClient appUserAddressClient;
-
-
+
+ @Resource
+ private AppUserClient appUserClient;
@@ -61,7 +66,7 @@
* @return
*/
@Override
- public List<MyExchangeOrderList> getMyExchangeOrder(GetMyExchangeOrder query) {
+ public Map<String, Object> getMyExchangeOrder(GetMyExchangeOrder query) {
Long userid = tokenService.getLoginUserApplet().getUserId();
LambdaQueryWrapper<TExchangeOrder> wrapper = new LambdaQueryWrapper<TExchangeOrder>().eq(TExchangeOrder::getDelFlag, 0).eq(TExchangeOrder::getAppUserId, userid);
if(query.getStatus() == 0){
@@ -69,7 +74,9 @@
}else{
wrapper.eq(TExchangeOrder::getStatus, query.getStatus());
}
- List<TExchangeOrder> list = this.list(wrapper.orderByDesc(TExchangeOrder::getCreateTime).last(" limit " + query.getPageCurr() + "," + query.getPageSize()));
+ long count = this.count(wrapper);
+ Integer pageCurr = (query.getPageCurr() - 1) * query.getPageSize();
+ List<TExchangeOrder> list = this.list(wrapper.orderByDesc(TExchangeOrder::getCreateTime).last(" limit " + pageCurr + "," + query.getPageSize()));
List<MyExchangeOrderList> pageList = new ArrayList<>();
for (TExchangeOrder tExchangeOrder : list) {
MyExchangeOrderList exchangeOrderList = new MyExchangeOrderList();
@@ -94,7 +101,10 @@
exchangeOrderList.setImgUrl(imgUrl);
pageList.add(exchangeOrderList);
}
- return pageList;
+ Map<String, Object> map = new HashMap<>();
+ map.put("list", pageList);
+ map.put("total", count);
+ return map;
}
@@ -109,10 +119,12 @@
ExchangeOrderGoodsInfo info = new ExchangeOrderGoodsInfo();
info.setId(id);
info.setStatus(exchangeOrder.getStatus());
- TAppUserAddress userAddress = appUserAddressClient.getAppUserAddressById(exchangeOrder.getAppUserAddressId()).getData();
- info.setConsignee(userAddress.getName());
- info.setPhone(userAddress.getPhone());
- info.setAddress(userAddress.getAddress());
+ if(null != exchangeOrder.getAppUserAddressId()){
+ TAppUserAddress userAddress = appUserAddressClient.getAppUserAddressById(exchangeOrder.getAppUserAddressId()).getData();
+ info.setConsignee(userAddress.getName());
+ info.setPhone(userAddress.getPhone());
+ info.setAddress(userAddress.getAddress());
+ }
info.setExpressCompany(exchangeOrder.getExpressCompany());
info.setExpressNumber(exchangeOrder.getExpressNumber());
String name = "";
@@ -137,8 +149,12 @@
info.setCreateTime(exchangeOrder.getCreateTime().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));
info.setPoints(exchangeOrder.getPoints());
info.setRemark(exchangeOrder.getRemark());
- info.setDeliveryTime(exchangeOrder.getConsignerTime().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));
- info.setFinishTime(exchangeOrder.getReceivingTime().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));
+ if(null != exchangeOrder.getConsignerTime()){
+ info.setDeliveryTime(exchangeOrder.getConsignerTime().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));
+ }
+ if(null != exchangeOrder.getReceivingTime()){
+ info.setFinishTime(exchangeOrder.getReceivingTime().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));
+ }
return info;
}
@@ -155,7 +171,29 @@
}
PageInfo<TExchangeOrder> pageInfo = new PageInfo<>(query.getPageCurr(),query.getPageSize());
List<TExchangeOrder> list = this.baseMapper.pageList(pageInfo,query,startTime1,startTime2);
-
+ for (TExchangeOrder tShoppingOrder : list) {
+ tShoppingOrder.setUid(tShoppingOrder.getId().toString());
+ switch (tShoppingOrder.getOrderType()){
+ case 1:
+ TGoods data = goodsClient.getGoodsById(tShoppingOrder.getGoodsId()).getData();
+ if (data!=null){
+ tShoppingOrder.setName(data.getName());
+ }
+ break;
+ case 2:
+ TCoupon data1 = couponClient.getCouponById1(tShoppingOrder.getCouponId()).getData();
+ if (data1!=null){
+ tShoppingOrder.setName(data1.getName());
+ }
+ break;
+ }
+ if (tShoppingOrder.getAppUserId() != null){
+ TAppUser data = appUserClient.getUserById(tShoppingOrder.getAppUserId()).getData();
+ if (data!=null){
+ tShoppingOrder.setPhone(data.getPhone());
+ }
+ }
+ }
pageInfo.setRecords(list);
return pageInfo;
}
diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TOrderAppealServiceImpl.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TOrderAppealServiceImpl.java
index 4bc05f6..6c8d89c 100644
--- a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TOrderAppealServiceImpl.java
+++ b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TOrderAppealServiceImpl.java
@@ -2,6 +2,10 @@
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.ruoyi.chargingPile.api.feignClient.ChargingGunClient;
+import com.ruoyi.chargingPile.api.model.Site;
+import com.ruoyi.chargingPile.api.model.TChargingPile;
+import com.ruoyi.chargingPile.api.vo.SiteNameVO;
import com.ruoyi.common.core.web.page.PageInfo;
import com.ruoyi.order.api.model.*;
import com.ruoyi.order.api.query.TOrderAppealQuery;
@@ -9,11 +13,14 @@
import com.ruoyi.order.mapper.*;
import com.ruoyi.order.service.TChargingOrderService;
import com.ruoyi.order.service.TOrderAppealService;
+import com.ruoyi.other.api.domain.TGoods;
+import com.ruoyi.other.api.feignClient.GoodsClient;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
+import java.util.Objects;
import java.util.stream.Collectors;
/**
@@ -30,11 +37,11 @@
@Autowired
private TChargingOrderMapper chargingOrderMapper;
@Autowired
- private TExchangeOrderMapper exchangeOrderMapper;
- @Autowired
private TShoppingOrderMapper shoppingOrderMapper;
@Autowired
- private TVipOrderMapper vipOrderMapper;
+ private GoodsClient goodsClient;
+ @Autowired
+ private ChargingGunClient chargingGunClient;
@Override
public PageInfo<TOrderAppealVO> pageList(TOrderAppealQuery query) {
@@ -44,42 +51,54 @@
// 查询当前页的订单
List<TChargingOrder> chargingOrders = chargingOrderMapper.selectList(Wrappers.lambdaQuery(TChargingOrder.class)
.in(TChargingOrder::getId, orderIds));
- List<TExchangeOrder> exchangeOrders = exchangeOrderMapper.selectList(Wrappers.lambdaQuery(TExchangeOrder.class)
- .in(TExchangeOrder::getId, orderIds));
List<TShoppingOrder> shoppingOrders = shoppingOrderMapper.selectList(Wrappers.lambdaQuery(TShoppingOrder.class)
.in(TShoppingOrder::getId, orderIds));
- List<TVipOrder> vipOrders = vipOrderMapper.selectList(Wrappers.lambdaQuery(TVipOrder.class)
- .in(TVipOrder::getId, orderIds));
list.forEach(item -> {
if (item.getOrderType() == 1) {
- item.setChargingOrder(chargingOrders.stream().filter(chargingOrder -> chargingOrder.getId().equals(item.getOrderId())).findFirst().orElse(null));
- } else if (item.getOrderType() == 2) {
- item.setExchangeOrder(exchangeOrders.stream().filter(exchangeOrder -> exchangeOrder.getId().equals(item.getOrderId())).findFirst().orElse(null));
- }else if (item.getOrderType() == 3) {
- item.setShoppingOrder(shoppingOrders.stream().filter(shoppingOrder -> shoppingOrder.getId().equals(item.getOrderId())).findFirst().orElse(null));
- }else if (item.getOrderType() == 4) {
- item.setVipOrder(vipOrders.stream().filter(vipOrder -> vipOrder.getId().equals(item.getOrderId())).findFirst().orElse(null));
+ TChargingOrder tChargingOrder = chargingOrders.stream().filter(chargingOrder -> chargingOrder.getId().equals(item.getOrderId())).findFirst().orElse(null);
+ if(Objects.nonNull(tChargingOrder)){
+ item.setChargingOrder(chargingOrders.stream().filter(chargingOrder -> chargingOrder.getId().equals(item.getOrderId())).findFirst().orElse(null));
+ SiteNameVO siteNameVO = chargingGunClient.getAllInfoById(tChargingOrder.getChargingGunId()).getData();
+ item.setGunName(siteNameVO.getGunName());
+ item.setGunNumber(siteNameVO.getGunNumber());
+ item.setPileName(siteNameVO.getPileName());
+ item.setPileNumber(siteNameVO.getPileNumber());
+ item.setSiteName(siteNameVO.getSiteName());
+ }
+ }else if (item.getOrderType() == 2) {
+ TShoppingOrder tShoppingOrder = shoppingOrders.stream().filter(shoppingOrder -> shoppingOrder.getId().equals(item.getOrderId())).findFirst().orElse(null);
+ setGoodsInfo(item,tShoppingOrder);
}
});
+ list.forEach(e->e.setUid(e.getId().toString()));
pageInfo.setRecords(list);
return pageInfo;
}
@Override
- public TOrderAppealVO getDetailById(Integer id) {
+ public TOrderAppealVO getDetailById(String id) {
TOrderAppeal orderAppeal = this.baseMapper.selectById(id);
TOrderAppealVO orderAppealVO = new TOrderAppealVO();
BeanUtils.copyProperties(orderAppeal,orderAppealVO);
// 查询申诉详情
if (orderAppeal.getOrderType() == 1) {
orderAppealVO.setChargingOrder(chargingOrderMapper.selectById(orderAppeal.getOrderId()));
- } else if (orderAppeal.getOrderType() == 2) {
- orderAppealVO.setExchangeOrder(exchangeOrderMapper.selectById(orderAppeal.getOrderId()));
- }else if (orderAppeal.getOrderType() == 3) {
- orderAppealVO.setShoppingOrder(shoppingOrderMapper.selectById(orderAppeal.getOrderId()));
- }else if (orderAppeal.getOrderType() == 4) {
- orderAppealVO.setVipOrder(vipOrderMapper.selectById(orderAppeal.getOrderId()));
+ }else if (orderAppeal.getOrderType() == 2) {
+ TShoppingOrder tShoppingOrder = shoppingOrderMapper.selectById(orderAppeal.getOrderId());
+ setGoodsInfo(orderAppealVO,tShoppingOrder);
}
return orderAppealVO;
}
+
+ private void setGoodsInfo(TOrderAppealVO orderAppealVO,TShoppingOrder tShoppingOrder){
+ if(Objects.nonNull(tShoppingOrder)){
+ orderAppealVO.setShoppingOrder(tShoppingOrder);
+ TGoods goods = goodsClient.getGoodsById(tShoppingOrder.getGoodsId()).getData();
+ if(Objects.nonNull(goods)){
+ orderAppealVO.setGoodsName(goods.getName());
+ orderAppealVO.setGoodsPicture(goods.getCoverPicture());
+ }
+ }
+ }
+
}
diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TOrderInvoiceServiceImpl.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TOrderInvoiceServiceImpl.java
index ac22a39..61431f4 100644
--- a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TOrderInvoiceServiceImpl.java
+++ b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TOrderInvoiceServiceImpl.java
@@ -90,7 +90,7 @@
public AjaxResult addOrderInvoice(AddOrderInvoice addOrderInvoice) {
Long userId = tokenService.getLoginUserApplet().getUserId();
String orders = addOrderInvoice.getOrders();
- if(StringUtils.isNotEmpty(orders)){
+ if(StringUtils.isEmpty(orders)){
return AjaxResult.error("请选择有效的订单");
}
JSONArray parse = JSONArray.parse(orders);
diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TShoppingOrderRefundServiceImpl.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TShoppingOrderRefundServiceImpl.java
new file mode 100644
index 0000000..1df92a2
--- /dev/null
+++ b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TShoppingOrderRefundServiceImpl.java
@@ -0,0 +1,15 @@
+package com.ruoyi.order.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.ruoyi.order.api.model.TShoppingOrderRefund;
+import com.ruoyi.order.mapper.TShoppingOrderRefundMapper;
+import com.ruoyi.order.service.TShoppingOrderRefundService;
+import org.springframework.stereotype.Service;
+
+/**
+ * @author zhibing.pu
+ * @date 2024/8/28 15:16
+ */
+@Service
+public class TShoppingOrderRefundServiceImpl extends ServiceImpl<TShoppingOrderRefundMapper, TShoppingOrderRefund> implements TShoppingOrderRefundService {
+}
diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TShoppingOrderServiceImpl.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TShoppingOrderServiceImpl.java
index 9034b92..5802610 100644
--- a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TShoppingOrderServiceImpl.java
+++ b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TShoppingOrderServiceImpl.java
@@ -6,12 +6,16 @@
import com.ruoyi.account.api.dto.GrantCouponDto;
import com.ruoyi.account.api.feignClient.AppCouponClient;
import com.ruoyi.account.api.feignClient.AppUserAddressClient;
+import com.ruoyi.account.api.feignClient.AppUserClient;
+import com.ruoyi.account.api.model.TAppUser;
import com.ruoyi.account.api.model.TAppUserAddress;
+import com.ruoyi.common.core.domain.R;
import com.ruoyi.common.core.web.domain.AjaxResult;
import com.ruoyi.common.core.web.page.PageInfo;
import com.ruoyi.common.security.service.TokenService;
import com.ruoyi.order.api.model.TExchangeOrder;
import com.ruoyi.order.api.model.TShoppingOrder;
+import com.ruoyi.order.api.model.TShoppingOrderRefund;
import com.ruoyi.order.api.query.ShoppingOrderQuery;
import com.ruoyi.order.api.query.TActivityStatisticsQuery;
import com.ruoyi.order.api.vo.ChargingOrderVO;
@@ -19,22 +23,32 @@
import com.ruoyi.order.api.vo.TActivityVO;
import com.ruoyi.order.dto.*;
import com.ruoyi.order.mapper.TShoppingOrderMapper;
+import com.ruoyi.order.service.TShoppingOrderRefundService;
import com.ruoyi.order.service.TShoppingOrderService;
import com.ruoyi.other.api.domain.TCoupon;
import com.ruoyi.other.api.domain.TGoods;
import com.ruoyi.other.api.feignClient.CouponClient;
import com.ruoyi.other.api.feignClient.GoodsClient;
+import com.ruoyi.payment.api.feignClient.AliPaymentClient;
+import com.ruoyi.payment.api.feignClient.WxPaymentClient;
+import com.ruoyi.payment.api.model.RefundReq;
+import com.ruoyi.payment.api.model.RefundResp;
+import com.ruoyi.payment.api.model.WxPaymentRefundModel;
+import com.ruoyi.payment.api.vo.AliQueryOrder;
+import com.ruoyi.payment.api.vo.NotifyV3PayDecodeRespBody;
+import io.seata.spring.annotation.GlobalTransactional;
import org.springframework.stereotype.Service;
import org.springframework.util.StringUtils;
import javax.annotation.Resource;
import java.math.BigDecimal;
+import java.math.RoundingMode;
import java.text.SimpleDateFormat;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
-import java.util.ArrayList;
-import java.util.List;
+import java.util.*;
+import java.util.stream.Collectors;
/**
* <p>
@@ -55,11 +69,22 @@
@Resource
private CouponClient couponClient;
+ @Resource
+ private AppUserClient appUserClient;
@Resource
private AppUserAddressClient appUserAddressClient;
@Resource
private AppCouponClient appCouponClient;
+
+ @Resource
+ private WxPaymentClient wxPaymentClient;
+
+ @Resource
+ private AliPaymentClient aliPaymentClient;
+
+ @Resource
+ private TShoppingOrderRefundService shoppingOrderRefundService;
@@ -168,14 +193,16 @@
* @return
*/
@Override
- public List<MyShoppingOrderList> getMyShoppingOrderList(GetMyShoppingOrderList query) {
+ public Map<String, Object> getMyShoppingOrderList(GetMyShoppingOrderList query) {
Long userId = tokenService.getLoginUserApplet().getUserId();
LambdaQueryWrapper<TShoppingOrder> wrapper = new LambdaQueryWrapper<TShoppingOrder>().eq(TShoppingOrder::getDelFlag, 0)
.eq(TShoppingOrder::getAppUserId, userId);
if(query.getStatus() != 0){
wrapper.eq(TShoppingOrder::getStatus, query.getStatus());
}
- List<TShoppingOrder> list = this.list(wrapper.orderByDesc(TShoppingOrder::getCreateTime).last(" limit " + query.getPageCurr() + ", " + query.getPageSize()));
+ long count = this.count(wrapper);
+ Integer pageCurr = (query.getPageCurr() - 1) * query.getPageSize();
+ List<TShoppingOrder> list = this.list(wrapper.orderByDesc(TShoppingOrder::getCreateTime).last(" limit " + pageCurr + ", " + query.getPageSize()));
List<MyShoppingOrderList> pageList = new ArrayList<>();
for (TShoppingOrder tShoppingOrder : list) {
MyShoppingOrderList myShoppingOrderList = new MyShoppingOrderList();
@@ -187,7 +214,7 @@
name = goods.getName();
imgUrl = goods.getCoverPicture();
}else{
- TCoupon coupon = couponClient.getCouponById1(tShoppingOrder.getGoodsId()).getData();
+ TCoupon coupon = couponClient.getCouponById1(tShoppingOrder.getCouponId()).getData();
name = coupon.getName();
imgUrl = coupon.getCoverPicture();
}
@@ -198,9 +225,13 @@
myShoppingOrderList.setUnitPrice(unitPrice);
myShoppingOrderList.setNumber(tShoppingOrder.getPurchaseQuantity());
myShoppingOrderList.setPaymentAmount(tShoppingOrder.getPaymentAmount());
+ myShoppingOrderList.setOrderType(tShoppingOrder.getOrderType());
pageList.add(myShoppingOrderList);
}
- return pageList;
+ Map<String, Object> map = new HashMap<>();
+ map.put("list", pageList);
+ map.put("total", count);
+ return map;
}
@@ -228,7 +259,7 @@
name = goods.getName();
imgUrl = goods.getCoverPicture();
}else{
- TCoupon coupon = couponClient.getCouponById1(shoppingOrder.getGoodsId()).getData();
+ TCoupon coupon = couponClient.getCouponById1(shoppingOrder.getCouponId()).getData();
info.setCouponType(coupon.getType());
info.setDays(coupon.getDays());
info.setEndTime(coupon.getEndTime().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));
@@ -242,10 +273,15 @@
info.setUnitPrice(unitPrice);
info.setCode(shoppingOrder.getCode());
info.setCreateTime(shoppingOrder.getCreateTime().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));
+ info.setOrderAmount(shoppingOrder.getOrderAmount());
info.setPaymentAmount(shoppingOrder.getPaymentAmount());
info.setRemark(shoppingOrder.getRemark());
- info.setDeliveryTime(shoppingOrder.getConsignerTime().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));
- info.setFinishTime(shoppingOrder.getReceivingTime().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));
+ if(null != shoppingOrder.getConsignerTime()){
+ info.setDeliveryTime(shoppingOrder.getConsignerTime().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));
+ }
+ if(null != shoppingOrder.getReceivingTime()){
+ info.setFinishTime(shoppingOrder.getReceivingTime().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));
+ }
return info;
}
@@ -264,25 +300,143 @@
if(shoppingOrder.getStatus() == 3){
return AjaxResult.error("订单已完成,不能取消");
}
- if(shoppingOrder.getStatus() == 4){
+ //退款状态并且所有金额退完
+ List<TShoppingOrderRefund> list = shoppingOrderRefundService.list(new LambdaQueryWrapper<TShoppingOrderRefund>().eq(TShoppingOrderRefund::getShoppingOrderId, id).eq(TShoppingOrderRefund::getRefundStatus, 2));
+ BigDecimal bigDecimal = list.stream().map(TShoppingOrderRefund::getRefundAmount).reduce(BigDecimal.ZERO, BigDecimal::add).setScale(2, RoundingMode.HALF_EVEN);
+ if(shoppingOrder.getPaymentAmount().compareTo(bigDecimal) == 0 && shoppingOrder.getStatus() == 4){
return AjaxResult.error("订单已取消,不能重复操作");
}
+
+ //退款金额
+ BigDecimal refundAmount = shoppingOrder.getPaymentAmount().subtract(bigDecimal);
+
//先查询第三方订单状态订单是否退款
- //支付方式(1=微信,2=支付宝) todo 待完善
+ //支付方式(1=微信,2=支付宝)
Integer paymentType = shoppingOrder.getPaymentType();
if(1 == paymentType){
-
+ NotifyV3PayDecodeRespBody data = wxPaymentClient.queryOrderInfo(shoppingOrder.getCode()).getData();
+ String trade_state = data.getTrade_state();
+ if("NOTPAY".equals(trade_state) || "REVOKED".equals(trade_state) || "PAYERROR".equals(trade_state)){
+ return AjaxResult.error("订单还未支付,不能操作退款");
+ }
+ if("CLOSED".equals(trade_state)){
+ return AjaxResult.error("订单支付已关闭,不能操作退款");
+ }
+ if("USERPAYING".equals(trade_state)){
+ return AjaxResult.error("订单正在支付中,不能操作退款");
+ }
}
if(2 == paymentType){
-
+ AliQueryOrder aliQueryOrder = aliPaymentClient.query(shoppingOrder.getCode()).getData();
+ String tradeStatus = aliQueryOrder.getTradeStatus();
+ if("TRADE_CLOSED".equals(tradeStatus)){
+ return AjaxResult.error("订单还未支付,不能操作退款");
+ }
+ if("TRADE_FINISHED".equals(tradeStatus)){
+ return AjaxResult.error("订单支付已关闭,不能操作退款");
+ }
+ if("WAIT_BUYER_PAY".equals(tradeStatus)){
+ return AjaxResult.error("订单正在支付中,不能操作退款");
+ }
}
//退款成功后需要判断商品库存类型后决定是否需要回退库存
//加redis锁处理高并发
-
-
+ //构建退款明细
+ TShoppingOrderRefund shoppingOrderRefund = new TShoppingOrderRefund();
+ shoppingOrderRefund.setPayTime(shoppingOrder.getPayTime());
+ shoppingOrderRefund.setPayCode(shoppingOrder.getSerialNumber());
+ shoppingOrderRefund.setPayType(shoppingOrder.getPaymentType());
+ shoppingOrderRefund.setShoppingOrderId(shoppingOrder.getId());
+ SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmssSSS");
+ shoppingOrderRefund.setRefundCode("GDF" + sdf.format(new Date()) + (Math.random() * 1000));
+ shoppingOrderRefund.setRefundAmount(refundAmount);
+ shoppingOrderRefund.setRefundStatus(1);
+ shoppingOrderRefund.setCode(shoppingOrder.getCode());
+ shoppingOrderRefund.setRefundTitle("取消订单");
+ shoppingOrderRefund.setRefundContent("取消订单");
+ shoppingOrderRefund.setRefundReason("取消订单");
+ shoppingOrderRefund.setRefundRemark("全额退款");
+ shoppingOrderRefund.setRefundTotalAmount(refundAmount.add(bigDecimal));
+ shoppingOrderRefund.setPayAmount(shoppingOrder.getPaymentAmount());
+ if(1 == paymentType){
+ WxPaymentRefundModel model = new WxPaymentRefundModel();
+ model.setOut_trade_no(shoppingOrder.getCode());
+ model.setOut_refund_no(shoppingOrderRefund.getRefundCode());
+ model.setReason("取消订单");
+ model.setNotify_url("http://127.0.0.1:9000/order/t-shopping-order/cancelShoppingOrderWxRefund");
+ WxPaymentRefundModel.RefundAmount amount = new WxPaymentRefundModel.RefundAmount();
+ amount.setRefund(refundAmount.multiply(new BigDecimal(100)).intValue());
+ amount.setTotal(shoppingOrder.getPaymentAmount().multiply(new BigDecimal(100)).intValue());
+ amount.setCurrency("CNY");
+ model.setAmount(amount);
+ R<String> orderR = wxPaymentClient.refundOrderR(model);
+ if(200 == orderR.getCode()){
+ shoppingOrderRefundService.save(shoppingOrderRefund);
+ }
+ }
+ if(2 == paymentType){
+ RefundReq dto = new RefundReq();
+ dto.setOutTradeNo(shoppingOrder.getCode());
+ dto.setOutRequestNo(shoppingOrderRefund.getCode());
+ dto.setRefundAmount(refundAmount.toString());
+ dto.setRefundReason("取消订单");
+ RefundResp resp = aliPaymentClient.refund(dto).getData();
+ if(null != resp){
+ SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy-MM-DDTHH:mm:ss+TIMEZONE");
+ AjaxResult success = cancelShoppingOrderWxRefund(resp.getOutTradeNo(), resp.getTradeNo(), "SUCCESS", sdf1.format(new Date()));
+ if(success.isSuccess()){
+ shoppingOrderRefundService.save(shoppingOrderRefund);
+ }
+ }
+ }
return AjaxResult.success();
}
+
+ /**
+ * 商城订单取消订单微信退款处理
+ * @param out_refund_no 退款单号
+ * @param refund_id 退款流水号
+ * @param refund_status 退款状态 SUCCESS:退款成功 CLOSED:退款关闭 ABNORMAL:退款异常
+ * @param success_time 退款成功时间
+ * @return
+ */
+ @Override
+ @GlobalTransactional(rollbackFor = Exception.class)//分布式事务
+ public AjaxResult cancelShoppingOrderWxRefund(String out_refund_no, String refund_id, String refund_status, String success_time) {
+ if("SUCCESS".equals(refund_status)){
+ TShoppingOrderRefund one = shoppingOrderRefundService.getOne(new LambdaQueryWrapper<TShoppingOrderRefund>().eq(TShoppingOrderRefund::getRefundCode, out_refund_no));
+ one.setRefundSerialNumber(refund_id);
+ one.setRefundTime(LocalDateTime.parse(success_time, DateTimeFormatter.ofPattern("yyyy-MM-DDTHH:mm:ss+TIMEZONE")));
+ shoppingOrderRefundService.updateById(one);
+ //判断是否需要回退库存
+ TShoppingOrder shoppingOrder = this.getById(one.getShoppingOrderId());
+ //商品
+ if(shoppingOrder.getOrderType() == 1){
+ // todo 需完善redis锁
+ //redis锁 和支付使用同一个锁
+ TGoods goods = goodsClient.getGoodsById(shoppingOrder.getGoodsId()).getData();
+ Integer inventory = goods.getInventory();
+ if(-1 != inventory){
+ goods.setInventory(inventory + shoppingOrder.getPurchaseQuantity());
+ goodsClient.updateGoods(goods);
+ }
+ //解锁
+ }
+ //优惠券
+ if(shoppingOrder.getOrderType() == 2){
+ //redis锁
+ TCoupon coupon = couponClient.getCouponById1(shoppingOrder.getCouponId()).getData();
+ Integer inventory = coupon.getInventoryQuantity();
+ if(-1 != inventory){
+ coupon.setInventoryQuantity(inventory + shoppingOrder.getPurchaseQuantity());
+ couponClient.updateCoupon(coupon);
+ }
+ //解锁
+ }
+ }
+ return AjaxResult.success();
+ }
/**
* 获取未开票的订单列表
@@ -315,6 +469,7 @@
myShoppingOrderList.setUnitPrice(unitPrice);
myShoppingOrderList.setNumber(tShoppingOrder.getPurchaseQuantity());
myShoppingOrderList.setPaymentAmount(tShoppingOrder.getPaymentAmount());
+ myShoppingOrderList.setCreateTime(tShoppingOrder.getCreateTime().format(DateTimeFormatter.ofPattern("yyyy.MM.dd HH:mm:ss")));
pageList.add(myShoppingOrderList);
}
return pageList;
@@ -352,7 +507,30 @@
}
PageInfo<TShoppingOrder> pageInfo = new PageInfo<>(query.getPageCurr(),query.getPageSize());
List<TShoppingOrder> list = this.baseMapper.pageList(pageInfo,query,startTime1,startTime2);
+ for (TShoppingOrder tShoppingOrder : list) {
+ tShoppingOrder.setUid(tShoppingOrder.getId().toString());
+ switch (tShoppingOrder.getOrderType()){
+ case 1:
+ TGoods data = goodsClient.getGoodsById(tShoppingOrder.getGoodsId()).getData();
+ if (data!=null){
+ tShoppingOrder.setName(data.getName());
+ }
+ break;
+ case 2:
+ TCoupon data1 = couponClient.getCouponById1(tShoppingOrder.getCouponId()).getData();
+ if (data1!=null){
+ tShoppingOrder.setName(data1.getName());
+ }
+ break;
+ }
+ if (tShoppingOrder.getAppUserId() != null){
+ TAppUser data = appUserClient.getUserById(tShoppingOrder.getAppUserId()).getData();
+ if (data!=null){
+ tShoppingOrder.setPhone(data.getPhone());
+ }
+ }
+ }
pageInfo.setRecords(list);
return pageInfo;
}
diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TVipOrderRefundServiceImpl.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TVipOrderRefundServiceImpl.java
new file mode 100644
index 0000000..85ad828
--- /dev/null
+++ b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TVipOrderRefundServiceImpl.java
@@ -0,0 +1,15 @@
+package com.ruoyi.order.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.ruoyi.order.api.model.TVipOrderRefund;
+import com.ruoyi.order.mapper.TVipOrderRefundMapper;
+import com.ruoyi.order.service.TVipOrderRefundService;
+import org.springframework.stereotype.Service;
+
+/**
+ * @author zhibing.pu
+ * @date 2024/8/28 15:19
+ */
+@Service
+public class TVipOrderRefundServiceImpl extends ServiceImpl<TVipOrderRefundMapper, TVipOrderRefund> implements TVipOrderRefundService {
+}
diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TVipOrderServiceImpl.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TVipOrderServiceImpl.java
index ffd14da..c96a21f 100644
--- a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TVipOrderServiceImpl.java
+++ b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TVipOrderServiceImpl.java
@@ -8,11 +8,14 @@
import com.ruoyi.order.dto.SixVipDto;
import com.ruoyi.order.mapper.TVipOrderMapper;
import com.ruoyi.order.service.TVipOrderService;
+import com.ruoyi.other.api.domain.TVip;
+import com.ruoyi.other.api.feignClient.VipClient;
import org.springframework.stereotype.Service;
import org.springframework.util.StringUtils;
import java.math.BigDecimal;
import java.time.LocalDate;
+import javax.annotation.Resource;
import java.util.List;
/**
@@ -26,6 +29,8 @@
@Service
public class TVipOrderServiceImpl extends ServiceImpl<TVipOrderMapper, TVipOrder> implements TVipOrderService {
+ @Resource
+ private VipClient vipClient;
@Override
public PageInfo<TVipOrder> pageList(VipShoppingOrderQuery query) {
String startTime1 = null;
@@ -39,7 +44,14 @@
}
PageInfo<TVipOrder> pageInfo = new PageInfo<>(query.getPageCurr(),query.getPageSize());
List<TVipOrder> list = this.baseMapper.pageList(pageInfo,query,startTime1,startTime2);
-
+ for (TVipOrder tVipOrder : list) {
+ tVipOrder.setUid(tVipOrder.getId().toString());
+ tVipOrder.setUserUid(tVipOrder.getAppUserId().toString());
+ TVip data = vipClient.getInfo(tVipOrder.getVipId()).getData();
+ if (data!=null){
+ tVipOrder.setName(data.getName());
+ }
+ }
pageInfo.setRecords(list);
return pageInfo;
}
diff --git a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/TCouponController.java b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/TCouponController.java
index 34d1ff5..a2eefca 100644
--- a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/TCouponController.java
+++ b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/TCouponController.java
@@ -202,7 +202,17 @@
TCoupon coupon = tCouponService.getById(id);
return R.ok(coupon);
}
-
-
+
+
+ /**
+ * 修改优惠券
+ * @param coupon
+ * @return
+ */
+ @PostMapping(value = "/updateCoupon")
+ public R updateCoupon(@RequestBody TCoupon coupon){
+ tCouponService.updateById(coupon);
+ return R.ok();
+ }
}
diff --git a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/TEvaluationTagController.java b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/TEvaluationTagController.java
index 191d727..6161598 100644
--- a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/TEvaluationTagController.java
+++ b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/TEvaluationTagController.java
@@ -107,8 +107,9 @@
@ResponseBody
@GetMapping("/getRandomEvaluationTag")
@ApiOperation(value = "获取随机的4个评价标签", tags = {"小程序-充电记录"})
- public AjaxResult<List<TEvaluationTag>> getRandomEvaluationTag(){
- List<TEvaluationTag> list = evaluationTagService.list(new LambdaQueryWrapper<TEvaluationTag>().last(" order by RAND() limit 0, 4"));
+ public AjaxResult<List<TEvaluationTag>> getRandomEvaluationTag(Integer type){
+ List<TEvaluationTag> list = evaluationTagService.list(new LambdaQueryWrapper<TEvaluationTag>().eq(TEvaluationTag::getType, type)
+ .last(" order by RAND() limit 0, 4"));
return AjaxResult.success(list);
}
}
diff --git a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/TGoodsController.java b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/TGoodsController.java
index 6021c3a..afb862e 100644
--- a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/TGoodsController.java
+++ b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/TGoodsController.java
@@ -239,7 +239,7 @@
Long userId = tokenService.getLoginUserApplet().getUserId();
TAppUser user = appUserClient.getUserById(userId).getData();
boolean isVip = false;
- if (user.getVipEndTime().isAfter(LocalDateTime.now())){
+ if (user.getVipEndTime()!=null&&user.getVipEndTime().isAfter(LocalDateTime.now())){
isVip = true;
}
//计算价格
@@ -256,7 +256,7 @@
originalPrice = good.getVipPrice();
}
}
- orderPrice.add(originalPrice.multiply(BigDecimal.valueOf(exchangeDto.getNum())));
+ orderPrice = orderPrice.add(originalPrice.multiply(BigDecimal.valueOf(exchangeDto.getNum())));
}else {
TCoupon coupon = couponService.getById(exchangeDto.getGoodId());
BigDecimal originalPrice = coupon.getPaymentAmount();
@@ -266,7 +266,7 @@
originalPrice = coupon.getVipPaymentAmount();
}
}
- orderPrice.add(originalPrice);
+ orderPrice = orderPrice.add(originalPrice);
}
exchangeDto.setOrderPrice(orderPrice);
@@ -286,6 +286,7 @@
exchangeDto.setPayPrice(payPrice);
exchangeDto.setDiscountPrice(discountPrice);
exchangeDto.setVipDiscount(vipDiscount);
+ exchangeDto.setUserId(userId);
//创建订单
TShoppingOrder shopOrder = orderClient.shopCreate(exchangeDto).getData();
if (exchangeDto.getPayMethod()==1) {
@@ -317,5 +318,17 @@
TGoods goods = goodsService.getById(id);
return R.ok(goods);
}
+
+
+ /**
+ * 修改商品
+ * @param goods
+ * @return
+ */
+ @PostMapping("/updateGoods")
+ public R updateGoods(@RequestBody TGoods goods){
+ goodsService.updateById(goods);
+ return R.ok();
+ }
}
diff --git a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/TInvoiceTypeController.java b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/TInvoiceTypeController.java
index f69c779..7f4effd 100644
--- a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/TInvoiceTypeController.java
+++ b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/TInvoiceTypeController.java
@@ -80,7 +80,7 @@
@ResponseBody
- @DeleteMapping("/getInvoiceTypeList")
+ @GetMapping("/getInvoiceTypeList")
@ApiOperation(value = "获取开票类型", tags = {"小程序-充电发票"})
public AjaxResult<List<TInvoiceType>> getInvoiceTypeList(){
List<TInvoiceType> list = invoiceTypeService.list(new LambdaQueryWrapper<TInvoiceType>()
diff --git a/ruoyi-service/ruoyi-payment/src/main/java/com/ruoyi/payment/controller/WxPayController.java b/ruoyi-service/ruoyi-payment/src/main/java/com/ruoyi/payment/controller/WxPayController.java
index 81ea044..a937505 100644
--- a/ruoyi-service/ruoyi-payment/src/main/java/com/ruoyi/payment/controller/WxPayController.java
+++ b/ruoyi-service/ruoyi-payment/src/main/java/com/ruoyi/payment/controller/WxPayController.java
@@ -4,6 +4,7 @@
import com.ruoyi.common.core.domain.R;
import com.ruoyi.common.core.web.domain.AjaxResult;
import com.ruoyi.payment.api.vo.PaymentOrder;
+import com.ruoyi.payment.api.vo.WxRefundNotifyResp;
import com.ruoyi.payment.wx.enums.RefundEnum;
import com.ruoyi.payment.api.model.WxPaymentRefundModel;
import com.ruoyi.payment.wx.resp.NotifyV3PayDecodeRespBody;
@@ -149,12 +150,12 @@
* 退款回调
*/
@PostMapping("refund/notify")
- public void refundNotify(HttpServletRequest request) throws IOException {
+ public R<WxRefundNotifyResp> refundNotify(HttpServletRequest request) throws IOException {
try {
Map<String, Object> params = wxV3Pay.verifyNotify(request, new TypeReference<Map<String, Object>>() {
});
// 商户订单号
- String tradeNo = params.get("out_trade_no").toString();
+ String out_trade_no = params.get("out_trade_no").toString();
// 商户退款单号
String out_refund_no = params.get("out_refund_no").toString();
// 微信支付订单号
@@ -167,21 +168,22 @@
// 时间不对的话,可以调用 WxTimeUtils.toRfc3339Date(success_time)转换一下
String success_time = params.get("success_time").toString();
if (tradeState.equals(RefundEnum.SUCCESS.name())) {
- String substring = out_refund_no.substring(0, 2);
- switch (substring){
- case "GW":
- break;
-
- }
- // TODO 退款成功处理
+ WxRefundNotifyResp resp = new WxRefundNotifyResp();
+ resp.setOut_trade_no(out_trade_no);
+ resp.setOut_refund_no(out_refund_no);
+ resp.setTradeState(tradeState);
+ resp.setTransaction_id(transaction_id);
+ resp.setRefund_id(refund_id);
+ resp.setSuccess_time(success_time);
wxV3Pay.ack();
+ return R.ok(resp);
} else {
wxV3Pay.ack(false, "不是成功的退款状态");
}
} catch (Exception e) {
wxV3Pay.ack(false, e.getMessage());
}
-
+ return R.fail();
}
/**
--
Gitblit v1.7.1