From fecc505ff55fcfcb3a46063e62982ebc254f6558 Mon Sep 17 00:00:00 2001
From: puzhibing <393733352@qq.com>
Date: 星期四, 27 八月 2026 17:57:55 +0800
Subject: [PATCH] feat: add standalone card charging orders

---
 ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/mapper/TCardChargingOrderShareRecordMapper.java                   |    7 
 ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/mapper/TCardAccountingStrategyOrderMapper.java                    |    7 
 ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/mapper/TCardChargingOrderAccountingStrategyMapper.java            |    7 
 ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/TCardChargingOrderRefundService.java                      |    7 
 ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TCardChargingOrderAccountingStrategyServiceImpl.java |   13 +
 ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TCardChargingOrderShareRecordServiceImpl.java        |   13 +
 ruoyi-service/ruoyi-order/src/main/resources/mapper/order/TCardChargingOrderMapper.xml                                    |  108 ++++++++
 ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/TCardChargingOrderAccountingStrategyService.java          |    7 
 ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/model/TCardChargingOrder.java                                 |   23 +
 ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TCardChargingOrderRefundServiceImpl.java             |   13 +
 ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/TCardChargingOrderController.java                      |   52 ++++
 ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/TCardChargingOrderShareRecordService.java                 |    7 
 ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/TCardAccountingStrategyOrderService.java                  |    7 
 ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/mapper/TCardChargingOrderMapper.java                              |   22 +
 ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TCardAccountingStrategyDetailOrderServiceImpl.java   |   13 +
 ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/mapper/TCardChargingOrderRefundMapper.java                        |    7 
 ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/mapper/TCardAccountingStrategyDetailOrderMapper.java              |    7 
 ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TCardChargingOrderServiceImpl.java                   |   39 +++
 ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/TCardChargingOrderService.java                            |   20 +
 ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TCardAccountingStrategyOrderServiceImpl.java         |   13 +
 ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/model/TCardAccountingStrategyDetailOrder.java                 |   11 
 ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/model/TCardChargingOrderRefund.java                           |   11 
 sql/20260827_card_charging_order.sql                                                                                      |  234 ++++++++++++++++++
 ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/model/TCardChargingOrderShareRecord.java                      |   11 
 ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/model/TCardChargingOrderAccountingStrategy.java               |   11 
 ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/query/CardChargingOrderQuery.java                             |   38 ++
 ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/TCardAccountingStrategyDetailOrderService.java            |    7 
 ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/model/TCardAccountingStrategyOrder.java                       |   11 
 28 files changed, 726 insertions(+), 0 deletions(-)

diff --git a/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/model/TCardAccountingStrategyDetailOrder.java b/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/model/TCardAccountingStrategyDetailOrder.java
new file mode 100644
index 0000000..8f36ea1
--- /dev/null
+++ b/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/model/TCardAccountingStrategyDetailOrder.java
@@ -0,0 +1,11 @@
+package com.ruoyi.order.api.model;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+@Data
+@EqualsAndHashCode(callSuper = true)
+@TableName("t_card_accounting_strategy_detail_order")
+public class TCardAccountingStrategyDetailOrder extends AccountingStrategyDetailOrder {
+}
diff --git a/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/model/TCardAccountingStrategyOrder.java b/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/model/TCardAccountingStrategyOrder.java
new file mode 100644
index 0000000..968f6db
--- /dev/null
+++ b/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/model/TCardAccountingStrategyOrder.java
@@ -0,0 +1,11 @@
+package com.ruoyi.order.api.model;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+@Data
+@EqualsAndHashCode(callSuper = true)
+@TableName("t_card_accounting_strategy_order")
+public class TCardAccountingStrategyOrder extends AccountingStrategyOrder {
+}
diff --git a/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/model/TCardChargingOrder.java b/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/model/TCardChargingOrder.java
new file mode 100644
index 0000000..aab6b43
--- /dev/null
+++ b/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/model/TCardChargingOrder.java
@@ -0,0 +1,23 @@
+package com.ruoyi.order.api.model;
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableName;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+@Data
+@EqualsAndHashCode(callSuper = true)
+@TableName("t_card_charging_order")
+@ApiModel("刷卡充电订单")
+public class TCardChargingOrder extends TChargingOrder {
+
+    @ApiModelProperty("充电卡ID(分片键)")
+    @TableField("card_id")
+    private Long cardId;
+
+    @ApiModelProperty("充电卡号快照")
+    @TableField("card_no")
+    private String cardNo;
+}
diff --git a/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/model/TCardChargingOrderAccountingStrategy.java b/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/model/TCardChargingOrderAccountingStrategy.java
new file mode 100644
index 0000000..4fad790
--- /dev/null
+++ b/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/model/TCardChargingOrderAccountingStrategy.java
@@ -0,0 +1,11 @@
+package com.ruoyi.order.api.model;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+@Data
+@EqualsAndHashCode(callSuper = true)
+@TableName("t_card_charging_order_accounting_strategy")
+public class TCardChargingOrderAccountingStrategy extends TChargingOrderAccountingStrategy {
+}
diff --git a/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/model/TCardChargingOrderRefund.java b/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/model/TCardChargingOrderRefund.java
new file mode 100644
index 0000000..e88ad6a
--- /dev/null
+++ b/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/model/TCardChargingOrderRefund.java
@@ -0,0 +1,11 @@
+package com.ruoyi.order.api.model;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+@Data
+@EqualsAndHashCode(callSuper = true)
+@TableName("t_card_charging_order_refund")
+public class TCardChargingOrderRefund extends TChargingOrderRefund {
+}
diff --git a/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/model/TCardChargingOrderShareRecord.java b/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/model/TCardChargingOrderShareRecord.java
new file mode 100644
index 0000000..e2a1464
--- /dev/null
+++ b/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/model/TCardChargingOrderShareRecord.java
@@ -0,0 +1,11 @@
+package com.ruoyi.order.api.model;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+@Data
+@EqualsAndHashCode(callSuper = true)
+@TableName("t_card_charging_order_share_record")
+public class TCardChargingOrderShareRecord extends TChargingOrderShareRecord {
+}
diff --git a/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/query/CardChargingOrderQuery.java b/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/query/CardChargingOrderQuery.java
new file mode 100644
index 0000000..b5c9871
--- /dev/null
+++ b/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/query/CardChargingOrderQuery.java
@@ -0,0 +1,38 @@
+package com.ruoyi.order.api.query;
+
+import com.ruoyi.common.core.web.page.BasePage;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+@Data
+@ApiModel(value = "CardChargingOrderQuery刷卡充电订单查询对象")
+public class CardChargingOrderQuery extends BasePage {
+
+    @ApiModelProperty("订单编号")
+    private String code;
+
+    @ApiModelProperty("充电卡ID(分片键)")
+    private Long cardId;
+
+    @ApiModelProperty("充电卡号")
+    private String cardNo;
+
+    @ApiModelProperty("订单状态")
+    private Integer status;
+
+    @ApiModelProperty("站点ID")
+    private Integer siteId;
+
+    @ApiModelProperty("充电桩ID")
+    private Integer pileId;
+
+    @ApiModelProperty("充电枪ID")
+    private Integer gunId;
+
+    @ApiModelProperty("开始时间范围")
+    private String startTime;
+
+    @ApiModelProperty("结束时间范围")
+    private String endTime;
+}
diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/TCardChargingOrderController.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/TCardChargingOrderController.java
new file mode 100644
index 0000000..d3b3286
--- /dev/null
+++ b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/TCardChargingOrderController.java
@@ -0,0 +1,52 @@
+package com.ruoyi.order.controller;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.ruoyi.common.core.domain.R;
+import com.ruoyi.order.api.query.CardChargingOrderQuery;
+import com.ruoyi.order.service.TCardChargingOrderService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.RestController;
+
+import javax.annotation.Resource;
+import java.util.Collections;
+import java.util.List;
+import java.util.Map;
+
+@RestController
+@RequestMapping("/t-card-charging-order")
+@Api(tags = "管理后台-刷卡充电订单")
+public class TCardChargingOrderController {
+
+    @Resource
+    private TCardChargingOrderService cardChargingOrderService;
+
+    @GetMapping("/list")
+    @ApiOperation("刷卡充电订单列表")
+    public R<IPage<Map<String, Object>>> list(CardChargingOrderQuery query) {
+        return R.ok(cardChargingOrderService.pageList(query));
+    }
+
+    @GetMapping("/summary")
+    @ApiOperation("刷卡充电订单汇总")
+    public R<Map<String, Object>> summary(CardChargingOrderQuery query) {
+        Map<String, Object> summary = cardChargingOrderService.summary(query);
+        return R.ok(summary == null ? Collections.emptyMap() : summary);
+    }
+
+    @GetMapping("/balance-income-detail")
+    @ApiOperation("刷卡充电订单余额收入明细")
+    public R<List<Map<String, Object>>> balanceIncomeDetail(CardChargingOrderQuery query) {
+        return R.ok(cardChargingOrderService.balanceIncomeDetail(query));
+    }
+
+    @GetMapping("/accounting-strategy")
+    @ApiOperation("刷卡充电订单计费明细")
+    public R<Map<String, Object>> accountingStrategy(@RequestParam("chargingOrderId") Long chargingOrderId) {
+        List<Map<String, Object>> list = cardChargingOrderService.accountingStrategyList(chargingOrderId);
+        return R.ok(Collections.singletonMap("list", list));
+    }
+}
diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/mapper/TCardAccountingStrategyDetailOrderMapper.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/mapper/TCardAccountingStrategyDetailOrderMapper.java
new file mode 100644
index 0000000..717df3b
--- /dev/null
+++ b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/mapper/TCardAccountingStrategyDetailOrderMapper.java
@@ -0,0 +1,7 @@
+package com.ruoyi.order.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.ruoyi.order.api.model.TCardAccountingStrategyDetailOrder;
+
+public interface TCardAccountingStrategyDetailOrderMapper extends BaseMapper<TCardAccountingStrategyDetailOrder> {
+}
diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/mapper/TCardAccountingStrategyOrderMapper.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/mapper/TCardAccountingStrategyOrderMapper.java
new file mode 100644
index 0000000..d463852
--- /dev/null
+++ b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/mapper/TCardAccountingStrategyOrderMapper.java
@@ -0,0 +1,7 @@
+package com.ruoyi.order.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.ruoyi.order.api.model.TCardAccountingStrategyOrder;
+
+public interface TCardAccountingStrategyOrderMapper extends BaseMapper<TCardAccountingStrategyOrder> {
+}
diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/mapper/TCardChargingOrderAccountingStrategyMapper.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/mapper/TCardChargingOrderAccountingStrategyMapper.java
new file mode 100644
index 0000000..5559dbe
--- /dev/null
+++ b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/mapper/TCardChargingOrderAccountingStrategyMapper.java
@@ -0,0 +1,7 @@
+package com.ruoyi.order.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.ruoyi.order.api.model.TCardChargingOrderAccountingStrategy;
+
+public interface TCardChargingOrderAccountingStrategyMapper extends BaseMapper<TCardChargingOrderAccountingStrategy> {
+}
diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/mapper/TCardChargingOrderMapper.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/mapper/TCardChargingOrderMapper.java
new file mode 100644
index 0000000..0267763
--- /dev/null
+++ b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/mapper/TCardChargingOrderMapper.java
@@ -0,0 +1,22 @@
+package com.ruoyi.order.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.ruoyi.order.api.model.TCardChargingOrder;
+import com.ruoyi.order.api.query.CardChargingOrderQuery;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+import java.util.Map;
+
+public interface TCardChargingOrderMapper extends BaseMapper<TCardChargingOrder> {
+
+    IPage<Map<String, Object>> pageList(Page<?> page, @Param("query") CardChargingOrderQuery query);
+
+    Map<String, Object> summary(@Param("query") CardChargingOrderQuery query);
+
+    List<Map<String, Object>> balanceIncomeDetail(@Param("query") CardChargingOrderQuery query);
+
+    List<Map<String, Object>> accountingStrategyList(@Param("chargingOrderId") Long chargingOrderId);
+}
diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/mapper/TCardChargingOrderRefundMapper.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/mapper/TCardChargingOrderRefundMapper.java
new file mode 100644
index 0000000..8cd27a2
--- /dev/null
+++ b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/mapper/TCardChargingOrderRefundMapper.java
@@ -0,0 +1,7 @@
+package com.ruoyi.order.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.ruoyi.order.api.model.TCardChargingOrderRefund;
+
+public interface TCardChargingOrderRefundMapper extends BaseMapper<TCardChargingOrderRefund> {
+}
diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/mapper/TCardChargingOrderShareRecordMapper.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/mapper/TCardChargingOrderShareRecordMapper.java
new file mode 100644
index 0000000..c5adbe4
--- /dev/null
+++ b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/mapper/TCardChargingOrderShareRecordMapper.java
@@ -0,0 +1,7 @@
+package com.ruoyi.order.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.ruoyi.order.api.model.TCardChargingOrderShareRecord;
+
+public interface TCardChargingOrderShareRecordMapper extends BaseMapper<TCardChargingOrderShareRecord> {
+}
diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/TCardAccountingStrategyDetailOrderService.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/TCardAccountingStrategyDetailOrderService.java
new file mode 100644
index 0000000..c449d40
--- /dev/null
+++ b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/TCardAccountingStrategyDetailOrderService.java
@@ -0,0 +1,7 @@
+package com.ruoyi.order.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.ruoyi.order.api.model.TCardAccountingStrategyDetailOrder;
+
+public interface TCardAccountingStrategyDetailOrderService extends IService<TCardAccountingStrategyDetailOrder> {
+}
diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/TCardAccountingStrategyOrderService.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/TCardAccountingStrategyOrderService.java
new file mode 100644
index 0000000..7b9b5a3
--- /dev/null
+++ b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/TCardAccountingStrategyOrderService.java
@@ -0,0 +1,7 @@
+package com.ruoyi.order.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.ruoyi.order.api.model.TCardAccountingStrategyOrder;
+
+public interface TCardAccountingStrategyOrderService extends IService<TCardAccountingStrategyOrder> {
+}
diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/TCardChargingOrderAccountingStrategyService.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/TCardChargingOrderAccountingStrategyService.java
new file mode 100644
index 0000000..7800f41
--- /dev/null
+++ b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/TCardChargingOrderAccountingStrategyService.java
@@ -0,0 +1,7 @@
+package com.ruoyi.order.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.ruoyi.order.api.model.TCardChargingOrderAccountingStrategy;
+
+public interface TCardChargingOrderAccountingStrategyService extends IService<TCardChargingOrderAccountingStrategy> {
+}
diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/TCardChargingOrderRefundService.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/TCardChargingOrderRefundService.java
new file mode 100644
index 0000000..0ef8bb6
--- /dev/null
+++ b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/TCardChargingOrderRefundService.java
@@ -0,0 +1,7 @@
+package com.ruoyi.order.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.ruoyi.order.api.model.TCardChargingOrderRefund;
+
+public interface TCardChargingOrderRefundService extends IService<TCardChargingOrderRefund> {
+}
diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/TCardChargingOrderService.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/TCardChargingOrderService.java
new file mode 100644
index 0000000..df7776e
--- /dev/null
+++ b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/TCardChargingOrderService.java
@@ -0,0 +1,20 @@
+package com.ruoyi.order.service;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.ruoyi.order.api.model.TCardChargingOrder;
+import com.ruoyi.order.api.query.CardChargingOrderQuery;
+
+import java.util.List;
+import java.util.Map;
+
+public interface TCardChargingOrderService extends IService<TCardChargingOrder> {
+
+    IPage<Map<String, Object>> pageList(CardChargingOrderQuery query);
+
+    Map<String, Object> summary(CardChargingOrderQuery query);
+
+    List<Map<String, Object>> balanceIncomeDetail(CardChargingOrderQuery query);
+
+    List<Map<String, Object>> accountingStrategyList(Long chargingOrderId);
+}
diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/TCardChargingOrderShareRecordService.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/TCardChargingOrderShareRecordService.java
new file mode 100644
index 0000000..998cd19
--- /dev/null
+++ b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/TCardChargingOrderShareRecordService.java
@@ -0,0 +1,7 @@
+package com.ruoyi.order.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.ruoyi.order.api.model.TCardChargingOrderShareRecord;
+
+public interface TCardChargingOrderShareRecordService extends IService<TCardChargingOrderShareRecord> {
+}
diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TCardAccountingStrategyDetailOrderServiceImpl.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TCardAccountingStrategyDetailOrderServiceImpl.java
new file mode 100644
index 0000000..b21af56
--- /dev/null
+++ b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TCardAccountingStrategyDetailOrderServiceImpl.java
@@ -0,0 +1,13 @@
+package com.ruoyi.order.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.ruoyi.order.api.model.TCardAccountingStrategyDetailOrder;
+import com.ruoyi.order.mapper.TCardAccountingStrategyDetailOrderMapper;
+import com.ruoyi.order.service.TCardAccountingStrategyDetailOrderService;
+import org.springframework.stereotype.Service;
+
+@Service
+public class TCardAccountingStrategyDetailOrderServiceImpl
+        extends ServiceImpl<TCardAccountingStrategyDetailOrderMapper, TCardAccountingStrategyDetailOrder>
+        implements TCardAccountingStrategyDetailOrderService {
+}
diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TCardAccountingStrategyOrderServiceImpl.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TCardAccountingStrategyOrderServiceImpl.java
new file mode 100644
index 0000000..06cb834
--- /dev/null
+++ b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TCardAccountingStrategyOrderServiceImpl.java
@@ -0,0 +1,13 @@
+package com.ruoyi.order.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.ruoyi.order.api.model.TCardAccountingStrategyOrder;
+import com.ruoyi.order.mapper.TCardAccountingStrategyOrderMapper;
+import com.ruoyi.order.service.TCardAccountingStrategyOrderService;
+import org.springframework.stereotype.Service;
+
+@Service
+public class TCardAccountingStrategyOrderServiceImpl
+        extends ServiceImpl<TCardAccountingStrategyOrderMapper, TCardAccountingStrategyOrder>
+        implements TCardAccountingStrategyOrderService {
+}
diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TCardChargingOrderAccountingStrategyServiceImpl.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TCardChargingOrderAccountingStrategyServiceImpl.java
new file mode 100644
index 0000000..b4b3865
--- /dev/null
+++ b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TCardChargingOrderAccountingStrategyServiceImpl.java
@@ -0,0 +1,13 @@
+package com.ruoyi.order.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.ruoyi.order.api.model.TCardChargingOrderAccountingStrategy;
+import com.ruoyi.order.mapper.TCardChargingOrderAccountingStrategyMapper;
+import com.ruoyi.order.service.TCardChargingOrderAccountingStrategyService;
+import org.springframework.stereotype.Service;
+
+@Service
+public class TCardChargingOrderAccountingStrategyServiceImpl
+        extends ServiceImpl<TCardChargingOrderAccountingStrategyMapper, TCardChargingOrderAccountingStrategy>
+        implements TCardChargingOrderAccountingStrategyService {
+}
diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TCardChargingOrderRefundServiceImpl.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TCardChargingOrderRefundServiceImpl.java
new file mode 100644
index 0000000..6085a6d
--- /dev/null
+++ b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TCardChargingOrderRefundServiceImpl.java
@@ -0,0 +1,13 @@
+package com.ruoyi.order.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.ruoyi.order.api.model.TCardChargingOrderRefund;
+import com.ruoyi.order.mapper.TCardChargingOrderRefundMapper;
+import com.ruoyi.order.service.TCardChargingOrderRefundService;
+import org.springframework.stereotype.Service;
+
+@Service
+public class TCardChargingOrderRefundServiceImpl
+        extends ServiceImpl<TCardChargingOrderRefundMapper, TCardChargingOrderRefund>
+        implements TCardChargingOrderRefundService {
+}
diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TCardChargingOrderServiceImpl.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TCardChargingOrderServiceImpl.java
new file mode 100644
index 0000000..79bb6c0
--- /dev/null
+++ b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TCardChargingOrderServiceImpl.java
@@ -0,0 +1,39 @@
+package com.ruoyi.order.service.impl;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.ruoyi.order.api.model.TCardChargingOrder;
+import com.ruoyi.order.api.query.CardChargingOrderQuery;
+import com.ruoyi.order.mapper.TCardChargingOrderMapper;
+import com.ruoyi.order.service.TCardChargingOrderService;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+import java.util.Map;
+
+@Service
+public class TCardChargingOrderServiceImpl extends ServiceImpl<TCardChargingOrderMapper, TCardChargingOrder>
+        implements TCardChargingOrderService {
+
+    @Override
+    public IPage<Map<String, Object>> pageList(CardChargingOrderQuery query) {
+        Page<Map<String, Object>> page = new Page<>(query.getPageCurr(), query.getPageSize());
+        return baseMapper.pageList(page, query);
+    }
+
+    @Override
+    public Map<String, Object> summary(CardChargingOrderQuery query) {
+        return baseMapper.summary(query);
+    }
+
+    @Override
+    public List<Map<String, Object>> balanceIncomeDetail(CardChargingOrderQuery query) {
+        return baseMapper.balanceIncomeDetail(query);
+    }
+
+    @Override
+    public List<Map<String, Object>> accountingStrategyList(Long chargingOrderId) {
+        return baseMapper.accountingStrategyList(chargingOrderId);
+    }
+}
diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TCardChargingOrderShareRecordServiceImpl.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TCardChargingOrderShareRecordServiceImpl.java
new file mode 100644
index 0000000..9bac885
--- /dev/null
+++ b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TCardChargingOrderShareRecordServiceImpl.java
@@ -0,0 +1,13 @@
+package com.ruoyi.order.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.ruoyi.order.api.model.TCardChargingOrderShareRecord;
+import com.ruoyi.order.mapper.TCardChargingOrderShareRecordMapper;
+import com.ruoyi.order.service.TCardChargingOrderShareRecordService;
+import org.springframework.stereotype.Service;
+
+@Service
+public class TCardChargingOrderShareRecordServiceImpl
+        extends ServiceImpl<TCardChargingOrderShareRecordMapper, TCardChargingOrderShareRecord>
+        implements TCardChargingOrderShareRecordService {
+}
diff --git a/ruoyi-service/ruoyi-order/src/main/resources/mapper/order/TCardChargingOrderMapper.xml b/ruoyi-service/ruoyi-order/src/main/resources/mapper/order/TCardChargingOrderMapper.xml
new file mode 100644
index 0000000..d5fa099
--- /dev/null
+++ b/ruoyi-service/ruoyi-order/src/main/resources/mapper/order/TCardChargingOrderMapper.xml
@@ -0,0 +1,108 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.ruoyi.order.mapper.TCardChargingOrderMapper">
+
+    <sql id="queryCondition">
+        <where>
+            o.del_flag = 0
+            <if test="query.code != null and query.code != ''">
+                AND o.code LIKE CONCAT('%', #{query.code}, '%')
+            </if>
+            <if test="query.cardId != null">
+                AND o.card_id = #{query.cardId}
+            </if>
+            <if test="query.cardNo != null and query.cardNo != ''">
+                AND o.card_no LIKE CONCAT('%', #{query.cardNo}, '%')
+            </if>
+            <if test="query.status != null">
+                AND o.status = #{query.status}
+            </if>
+            <if test="query.siteId != null">
+                AND o.site_id = #{query.siteId}
+            </if>
+            <if test="query.pileId != null">
+                AND o.charging_pile_id = #{query.pileId}
+            </if>
+            <if test="query.gunId != null">
+                AND o.charging_gun_id = #{query.gunId}
+            </if>
+            <if test="query.startTime != null and query.startTime != ''">
+                AND o.start_time &gt;= #{query.startTime}
+            </if>
+            <if test="query.endTime != null and query.endTime != ''">
+                AND o.start_time &lt;= #{query.endTime}
+            </if>
+        </where>
+    </sql>
+
+    <select id="pageList" resultType="java.util.LinkedHashMap">
+        SELECT o.id,
+               o.code,
+               o.card_id AS cardId,
+               o.card_no AS cardNo,
+               o.site_id AS siteId,
+               o.charging_pile_id AS chargingPileId,
+               o.charging_gun_id AS chargingGunId,
+               o.start_time AS startTime,
+               o.end_time AS endTime,
+               o.status,
+               o.order_amount AS orderAmount,
+               o.payment_amount AS paymentAmount,
+               o.electrovalence,
+               o.service_charge AS serviceCharge,
+               o.charging_capacity AS chargingCapacity,
+               o.balance_pay_amount AS balancePayAmount,
+               o.third_pay_amount AS thirdPayAmount,
+               o.refund_amount AS refundAmount,
+               o.pay_time AS payTime,
+               o.create_time AS createTime
+        FROM t_card_charging_order o
+        <include refid="queryCondition"/>
+        ORDER BY o.id DESC
+    </select>
+
+    <select id="summary" resultType="java.util.LinkedHashMap">
+        SELECT COUNT(1) AS orderCount,
+               IFNULL(SUM(o.order_amount), 0) AS orderAmount,
+               IFNULL(SUM(o.payment_amount), 0) AS paymentAmount,
+               IFNULL(SUM(o.electrovalence), 0) AS electrovalence,
+               IFNULL(SUM(o.service_charge), 0) AS serviceCharge,
+               IFNULL(SUM(o.charging_capacity), 0) AS chargingCapacity,
+               IFNULL(SUM(o.balance_pay_amount), 0) AS balancePayAmount,
+               IFNULL(SUM(o.third_pay_amount), 0) AS thirdPayAmount,
+               IFNULL(SUM(o.refund_amount), 0) AS refundAmount
+        FROM t_card_charging_order o
+        <include refid="queryCondition"/>
+    </select>
+
+    <select id="balanceIncomeDetail" resultType="java.util.LinkedHashMap">
+        SELECT o.card_id AS cardId,
+               o.card_no AS cardNo,
+               COUNT(1) AS orderCount,
+               IFNULL(SUM(o.balance_pay_amount), 0) AS balancePayAmount,
+               IFNULL(SUM(o.payment_amount), 0) AS paymentAmount
+        FROM t_card_charging_order o
+        <include refid="queryCondition"/>
+        GROUP BY o.card_id, o.card_no
+        ORDER BY balancePayAmount DESC
+    </select>
+
+    <select id="accountingStrategyList" resultType="java.util.LinkedHashMap">
+        SELECT id,
+               charging_order_id AS chargingOrderId,
+               accounting_strategy_detail_id AS accountingStrategyDetailId,
+               start_time AS startTime,
+               end_time AS endTime,
+               type,
+               electrovalence,
+               service_charge AS serviceCharge,
+               cost_service_charge AS costServiceCharge,
+               charging_capacity AS chargingCapacity,
+               period_electric_price AS periodElectricPrice,
+               period_service_price AS periodServicePrice,
+               create_time AS createTime
+        FROM t_card_charging_order_accounting_strategy
+        WHERE charging_order_id = #{chargingOrderId}
+        ORDER BY start_time ASC, id ASC
+    </select>
+</mapper>
diff --git a/sql/20260827_card_charging_order.sql b/sql/20260827_card_charging_order.sql
new file mode 100644
index 0000000..8ab9e4c
--- /dev/null
+++ b/sql/20260827_card_charging_order.sql
@@ -0,0 +1,234 @@
+-- 刷卡充电订单独立存储增量脚本
+-- MyCat 环境请分逻辑库执行:订单表在 charging_pile_order,菜单在 charging_pile_other。
+
+USE charging_pile_order;
+
+CREATE TABLE IF NOT EXISTS `t_card_charging_order` (
+  `id` bigint NOT NULL COMMENT '主键',
+  `code` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL COMMENT '订单编号',
+  `card_id` bigint NOT NULL COMMENT '充电卡ID(分片键)',
+  `card_no` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL COMMENT '充电卡号快照',
+  `order_type` int DEFAULT '2' COMMENT '订单类型(固定为刷卡充电订单)',
+  `order_classification` int DEFAULT NULL COMMENT '订单分类(1=线上,2=线下)',
+  `app_user_id` bigint DEFAULT NULL COMMENT '用户id',
+  `app_user_car_id` bigint DEFAULT NULL COMMENT '充电车辆id',
+  `plate_num` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL COMMENT '车牌号',
+  `reservation_time` datetime DEFAULT NULL COMMENT '预约充电时间',
+  `expected_vin` varchar(64) DEFAULT NULL COMMENT '支付车辆VIN快照',
+  `actual_vin` varchar(64) DEFAULT NULL COMMENT '启动时设备识别VIN',
+  `site_id` int DEFAULT NULL COMMENT '站点id',
+  `parking_lot_id` int DEFAULT NULL COMMENT '停车场id',
+  `charging_pile_id` int DEFAULT NULL COMMENT '充电桩id',
+  `charging_gun_id` int DEFAULT NULL COMMENT '充电枪id',
+  `charging_capacity` decimal(10,5) DEFAULT '0.00000' COMMENT '充电总度数',
+  `charging_power` decimal(10,4) DEFAULT NULL COMMENT '充电功率',
+  `start_time` datetime DEFAULT NULL COMMENT '充电开始时间',
+  `end_time` datetime DEFAULT NULL COMMENT '充电结束时间',
+  `status` int DEFAULT NULL COMMENT '订单状态',
+  `end_mode` int DEFAULT NULL COMMENT '结束方式',
+  `recharge_amount` decimal(10,4) DEFAULT '0.0000' COMMENT '充值金额',
+  `recharge_payment_type` int DEFAULT NULL COMMENT '充值支付方式',
+  `recharge_payment_status` int DEFAULT NULL COMMENT '充值支付状态',
+  `pay_method` int DEFAULT NULL COMMENT '充电支付模式',
+  `balance_pay_amount` decimal(10,2) DEFAULT '0.00' COMMENT '余额支付金额',
+  `third_pay_amount` decimal(10,2) DEFAULT '0.00' COMMENT '第三方支付金额',
+  `balance_refund_amount` decimal(10,2) DEFAULT '0.00' COMMENT '余额退款金额',
+  `third_refund_amount` decimal(10,2) DEFAULT '0.00' COMMENT '第三方退款金额',
+  `recharge_serial_number` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL COMMENT '充值支付第三方流水号',
+  `charge_amount` decimal(10,2) DEFAULT NULL COMMENT '充电金额',
+  `residual_amount` decimal(10,2) DEFAULT NULL COMMENT '充值剩余金额',
+  `order_amount` decimal(10,4) DEFAULT NULL COMMENT '订单金额',
+  `payment_amount` decimal(10,4) DEFAULT NULL COMMENT '支付金额',
+  `refund_amount` decimal(10,4) DEFAULT '0.0000' COMMENT '退款金额',
+  `app_coupon_id` bigint DEFAULT NULL COMMENT '优惠券id',
+  `coupon_discount_amount` decimal(10,4) DEFAULT NULL COMMENT '优惠金额',
+  `is_whitelist` tinyint NOT NULL DEFAULT '0' COMMENT '是否白名单订单',
+  `whitelist_id` bigint DEFAULT NULL COMMENT '白名单用户ID',
+  `whitelist_benefit_type` tinyint DEFAULT NULL COMMENT '白名单权益',
+  `whitelist_discount_amount` decimal(10,2) NOT NULL DEFAULT '0.00' COMMENT '白名单减免金额',
+  `whitelist_electric_refund_amount` decimal(10,2) NOT NULL DEFAULT '0.00' COMMENT '白名单电费退款金额',
+  `whitelist_service_refund_amount` decimal(10,2) NOT NULL DEFAULT '0.00' COMMENT '白名单服务费退款金额',
+  `vip_discount` decimal(10,2) DEFAULT NULL COMMENT '会员折扣',
+  `vip_discount_amount` decimal(10,4) DEFAULT NULL COMMENT '会员优惠金额',
+  `refund_code` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL COMMENT '退款流水号',
+  `refund_status` int DEFAULT NULL COMMENT '退款状态',
+  `refund_serial_number` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL COMMENT '退款第三方流水号',
+  `refund_time` datetime DEFAULT NULL COMMENT '退款成功时间',
+  `create_time` datetime DEFAULT NULL COMMENT '添加时间',
+  `del_flag` tinyint(1) DEFAULT '0' COMMENT '删除标记',
+  `order_source` int DEFAULT '1' COMMENT '订单来源',
+  `source_name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL COMMENT '平台名称',
+  `operator_id` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL COMMENT '运营商ID',
+  `tripartite_platform_name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL COMMENT '三方平台名称',
+  `start_charge_seq` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL COMMENT '三方平台充电订单号',
+  `commission_amount` decimal(10,4) DEFAULT '0.0000' COMMENT '手续费',
+  `sharing_amount` decimal(10,4) DEFAULT '0.0000' COMMENT '分佣',
+  `service_charge` decimal(10,4) DEFAULT NULL COMMENT '累计服务费',
+  `electrovalence` decimal(10,4) DEFAULT NULL COMMENT '累计电费',
+  `current` decimal(10,2) DEFAULT NULL COMMENT '电流',
+  `voltage` decimal(10,2) DEFAULT NULL COMMENT '电压',
+  `electricity` decimal(10,2) DEFAULT NULL COMMENT '电量',
+  `power` decimal(10,2) DEFAULT NULL COMMENT '功率',
+  `pay_time` datetime DEFAULT NULL COMMENT '最后支付时间',
+  `phone` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL COMMENT '电话',
+  `title` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL COMMENT '订单标题',
+  `need_elec` decimal(10,2) DEFAULT NULL COMMENT '实时需求电流',
+  `total_electricity` double DEFAULT NULL COMMENT '剩余电量',
+  `start_soc` decimal(10,2) DEFAULT '0.00' COMMENT '开始SOC',
+  `end_soc` decimal(10,2) DEFAULT NULL COMMENT '结束SOC',
+  PRIMARY KEY USING BTREE (`id`),
+  KEY `idx_card_id` USING BTREE (`card_id`),
+  KEY `idx_card_no` USING BTREE (`card_no`),
+  KEY `idx_code` USING BTREE (`code`)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin ROW_FORMAT=DYNAMIC COMMENT='刷卡充电订单'
+TBPARTITION BY MOD_HASH(card_id) TBPARTITIONS 20;
+
+CREATE TABLE IF NOT EXISTS `t_card_accounting_strategy_detail_order` (
+  `id` int NOT NULL COMMENT '计费策略明细主键id',
+  `accounting_strategy_id` int DEFAULT NULL COMMENT '策略id',
+  `type` int DEFAULT NULL COMMENT '阶段',
+  `start_time` varchar(100) DEFAULT NULL COMMENT '开始时间',
+  `end_time` varchar(100) DEFAULT NULL COMMENT '结束时间',
+  `electrovalence` double(10,4) DEFAULT NULL COMMENT '电价',
+  `service_charge` double(10,4) DEFAULT NULL COMMENT '服务费',
+  `cost_service_charge` double(10,4) DEFAULT NULL COMMENT '原价服务费',
+  `charging_order_id` bigint NOT NULL COMMENT '刷卡充电订单id(分片键)',
+  `create_time` datetime DEFAULT CURRENT_TIMESTAMP,
+  `del_flag` int DEFAULT '0'
+) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin COMMENT='刷卡订单计费策略明细快照'
+TBPARTITION BY MOD_HASH(charging_order_id) TBPARTITIONS 20;
+
+CREATE TABLE IF NOT EXISTS `t_card_accounting_strategy_order` (
+  `id` int NOT NULL COMMENT '策略id',
+  `site_id` int DEFAULT NULL COMMENT '站点id',
+  `name` varchar(255) DEFAULT NULL COMMENT '策略名称',
+  `description` varchar(255) DEFAULT NULL COMMENT '策略说明',
+  `discount` double(10,2) DEFAULT NULL COMMENT '会员折扣',
+  `create_time` datetime DEFAULT NULL COMMENT '添加时间',
+  `del_flag` int DEFAULT '0' COMMENT '删除状态',
+  `first_user_id` bigint DEFAULT NULL COMMENT '一级审核用户id',
+  `two_user_id` bigint DEFAULT NULL COMMENT '二级审核用户id',
+  `first_remark` varchar(255) DEFAULT NULL COMMENT '一级审核备注',
+  `two_remark` varchar(255) DEFAULT NULL COMMENT '二级审核备注',
+  `audit_status` int DEFAULT '1' COMMENT '审核状态',
+  `first_audit_time` datetime DEFAULT NULL COMMENT '一级审核时间',
+  `two_audit_time` datetime DEFAULT NULL COMMENT '二级审核时间',
+  `user_id` bigint DEFAULT NULL COMMENT '申请人ID',
+  `parent_id` int DEFAULT NULL COMMENT '父级id',
+  `charging_order_id` bigint NOT NULL COMMENT '刷卡充电订单id(分片键)'
+) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin COMMENT='刷卡订单计费策略快照'
+TBPARTITION BY MOD_HASH(charging_order_id) TBPARTITIONS 20;
+
+CREATE TABLE IF NOT EXISTS `t_card_charging_order_accounting_strategy` (
+  `id` bigint NOT NULL COMMENT '主键',
+  `charging_order_id` bigint NOT NULL COMMENT '刷卡充电订单id(分片键)',
+  `accounting_strategy_detail_id` bigint DEFAULT NULL COMMENT '计费策略明细id',
+  `type` int DEFAULT NULL COMMENT '阶段',
+  `start_time` varchar(100) DEFAULT NULL COMMENT '开始时间',
+  `end_time` varchar(100) DEFAULT NULL COMMENT '结束时间',
+  `electrovalence` double(10,4) DEFAULT NULL COMMENT '电价',
+  `service_charge` double(10,4) DEFAULT NULL COMMENT '服务费',
+  `cost_service_charge` double(10,4) DEFAULT NULL COMMENT '原价服务费',
+  `charging_capacity` decimal(10,4) DEFAULT NULL COMMENT '充电度数',
+  `create_time` datetime DEFAULT NULL COMMENT '首次添加时间',
+  `period_electric_price` decimal(10,4) DEFAULT NULL COMMENT '时段电费',
+  `period_service_price` decimal(10,4) DEFAULT NULL COMMENT '时段服务费',
+  `period_original_service_price` decimal(10,4) DEFAULT NULL COMMENT '时段原服务费',
+  `vip_discount_amount` decimal(10,4) DEFAULT NULL COMMENT '会员折扣金额',
+  `coupon_discount_amount` decimal(10,4) DEFAULT NULL COMMENT '优惠券抵扣金额',
+  PRIMARY KEY USING BTREE (`id`),
+  KEY `idx_card_order_id` USING BTREE (`charging_order_id`)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin COMMENT='刷卡充电订单计费明细'
+TBPARTITION BY MOD_HASH(charging_order_id) TBPARTITIONS 20;
+
+CREATE TABLE IF NOT EXISTS `t_card_charging_order_refund` (
+  `id` bigint NOT NULL COMMENT '主键',
+  `charging_order_id` bigint NOT NULL COMMENT '刷卡充电订单id(分片键)',
+  `refund_code` varchar(255) DEFAULT NULL COMMENT '退款流水号',
+  `refund_amount` decimal(10,2) DEFAULT NULL COMMENT '退款金额',
+  `balance_refund_amount` decimal(10,2) NOT NULL DEFAULT '0.00' COMMENT '余额退款金额',
+  `third_refund_amount` decimal(10,2) NOT NULL DEFAULT '0.00' COMMENT '第三方退款金额',
+  `refund_status` int DEFAULT NULL COMMENT '退款状态',
+  `refund_serial_number` varchar(255) DEFAULT NULL COMMENT '退款第三方流水号',
+  `refund_time` datetime DEFAULT NULL COMMENT '退款成功时间',
+  `code` varchar(255) DEFAULT NULL COMMENT '订单编号',
+  `refund_title` varchar(255) DEFAULT NULL COMMENT '退款标题',
+  `refund_content` varchar(255) DEFAULT NULL COMMENT '退款内容',
+  `refund_reason` varchar(255) DEFAULT NULL COMMENT '退款原因',
+  `refund_remark` varchar(255) DEFAULT NULL COMMENT '退款备注',
+  `refund_total_amount` decimal(10,2) DEFAULT NULL COMMENT '累计退款金额',
+  `refund_fee` decimal(10,2) DEFAULT '0.00' COMMENT '手续费',
+  `pay_amount` decimal(10,2) DEFAULT NULL COMMENT '支付金额',
+  `pay_type` int DEFAULT NULL COMMENT '支付类型',
+  `create_time` datetime DEFAULT NULL,
+  `del_flag` int DEFAULT '0'
+) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin COMMENT='刷卡充电退款明细'
+TBPARTITION BY MOD_HASH(charging_order_id) TBPARTITIONS 20;
+
+CREATE TABLE IF NOT EXISTS `t_card_charging_order_share_record` (
+  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键',
+  `charging_order_id` bigint DEFAULT NULL COMMENT '刷卡充电订单ID',
+  `charging_order_code` varchar(64) NOT NULL COMMENT '刷卡充电订单号',
+  `site_id` int DEFAULT NULL COMMENT '站点ID',
+  `partner_id` int DEFAULT NULL COMMENT '合作商ID',
+  `pay_channel` varchar(16) NOT NULL COMMENT '支付渠道',
+  `channel_pay_amount` decimal(10,2) NOT NULL DEFAULT '0.00',
+  `channel_gift_amount` decimal(10,2) NOT NULL DEFAULT '0.00',
+  `channel_pay_ratio` decimal(10,6) NOT NULL DEFAULT '0.000000',
+  `channel_electricity_amount` decimal(10,2) NOT NULL DEFAULT '0.00',
+  `channel_service_amount` decimal(10,2) NOT NULL DEFAULT '0.00',
+  `electricity_share_ratio` decimal(5,2) DEFAULT NULL,
+  `service_share_ratio` decimal(5,2) DEFAULT NULL,
+  `electricity_share_amount` decimal(10,2) NOT NULL DEFAULT '0.00',
+  `service_share_amount` decimal(10,2) NOT NULL DEFAULT '0.00',
+  `share_amount` decimal(10,2) NOT NULL DEFAULT '0.00',
+  `need_online_share` tinyint(1) NOT NULL DEFAULT '0',
+  `online_share_status` varchar(16) NOT NULL DEFAULT 'RECORDED',
+  `seq_no` varchar(50) DEFAULT NULL,
+  `busi_type` varchar(1) DEFAULT NULL,
+  `ori_mer_id` varchar(20) DEFAULT NULL,
+  `ori_trx_date` date DEFAULT NULL,
+  `sub_order_id` varchar(50) DEFAULT NULL,
+  `sub_mer_id` varchar(20) DEFAULT NULL,
+  `sub_mer_prtcl_no` varchar(20) DEFAULT NULL,
+  `mer_acct` varchar(34) DEFAULT NULL,
+  `icbc_order_id` varchar(64) DEFAULT NULL,
+  `sub_order_seq` varchar(32) DEFAULT NULL,
+  `sub_order_trxid` varchar(64) DEFAULT NULL,
+  `rec_result` varchar(8) DEFAULT NULL,
+  `request_json` text,
+  `response_json` text,
+  `fail_reason` varchar(512) DEFAULT NULL,
+  `retry_count` int NOT NULL DEFAULT '0',
+  `last_retry_time` datetime DEFAULT NULL,
+  `create_time` datetime DEFAULT NULL,
+  `del_flag` int DEFAULT '0',
+  PRIMARY KEY (`id`),
+  UNIQUE KEY `uk_order_channel` (`charging_order_code`,`pay_channel`),
+  KEY `idx_share_status` (`online_share_status`),
+  KEY `idx_share_sub_order_id` (`sub_order_id`),
+  KEY `idx_share_partner` (`partner_id`)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin COMMENT='刷卡充电订单全渠道分账记录';
+
+USE charging_pile_other;
+
+INSERT INTO `sys_menu`
+(`menu_name`,`parent_id`,`order_num`,`path`,`component`,`query`,`is_frame`,`is_cache`,`menu_type`,`visible`,`status`,`perms`,`icon`,`create_by`,`create_time`,`update_by`,`update_time`,`remark`)
+SELECT '刷卡充电订单', 20, 2, 'cardChargingOrder', 'order/cardChargingOrder/index', '', 1, 0, 'C', '0', '0', '/cardChargingOrder', 'transaction', 'admin', NOW(), '', NULL, '刷卡充电订单独立查询'
+WHERE NOT EXISTS (SELECT 1 FROM `sys_menu` WHERE `perms` = '/cardChargingOrder');
+
+INSERT INTO `sys_menu`
+(`menu_name`,`parent_id`,`order_num`,`path`,`component`,`query`,`is_frame`,`is_cache`,`menu_type`,`visible`,`status`,`perms`,`icon`,`create_by`,`create_time`,`update_by`,`update_time`,`remark`)
+SELECT '刷卡订单详情', parent.menu_id, 1, '#', '', '', 1, 0, 'F', '0', '0', '/cardChargingOrder/detail', '#', 'admin', NOW(), '', NULL, ''
+FROM `sys_menu` parent
+WHERE parent.perms = '/cardChargingOrder'
+  AND NOT EXISTS (SELECT 1 FROM `sys_menu` WHERE `perms` = '/cardChargingOrder/detail');
+
+INSERT INTO `sys_role_menu` (`role_id`,`menu_id`)
+SELECT 1, menu.menu_id
+FROM `sys_menu` menu
+WHERE menu.perms IN ('/cardChargingOrder','/cardChargingOrder/detail')
+  AND NOT EXISTS (
+    SELECT 1 FROM `sys_role_menu` role_menu
+    WHERE role_menu.role_id = 1 AND role_menu.menu_id = menu.menu_id
+  );

--
Gitblit v1.7.1