feat(after-sale): 售后面板新增「标记订单已退款」勾选项

展开的操作面板在状态下拉与备注旁新增「标记订单已退款」勾选框:勾选后点击确认,会先把关联订单推到已退款,再更新售后工单状态。订单本已退款时勾选框呈现为不可改的已选状态,且不提交该标记。

顺序不能反:OrderRepository::update_status 的退款闸门要求售后工单仍为待审核/处理中,一旦 set_status 先执行就不再放行。因此退款失败时整次操作中止,避免出现「工单已关、订单未退」的半完成状态。订单号由服务端按 after_sale_id 反查,不经客户端传递。

AfterSaleService::get() 由 private 改为 public 以支撑该反查。dev harness 扩展为可驱动 handler 的六个场景,覆盖勾选/未勾选、重复退款、非已支付订单、已关闭工单与非法状态。
This commit is contained in:
2026-10-08 21:03:23 +08:00
parent b733e41993
commit 5fd8c6fc31
4 changed files with 187 additions and 15 deletions
+2 -1
View File
@@ -320,7 +320,8 @@ final class AfterSaleService {
return is_array($row) ? $this->normalize($row) : null;
}
private function get(int $id): ?array {
/** 按 ID 读取售后申请(含关联订单号),供后台操作面板解析关联订单。 */
public function get(int $id): ?array {
global $wpdb;
$row = $wpdb->get_row($wpdb->prepare("SELECT * FROM {$this->table()} WHERE id = %d", $id), ARRAY_A);
return is_array($row) ? $this->normalize($row) : null;