合并 main 分支并融合订单列表最小化与 SQL 治理
- Auth/权限中间件取 main 演进版(错误细分、token 来源),保留 dev 的用户 cookie 与登出撤销语义 - 后台订单列表:融合 main 的首页免 COUNT 优化与关键词索引路由,保留 dev 的最小化 AdminOrderListItemDTO(结账明细仍由详情接口返回,同步调整对应集成测试) - 保留 dev 的 token_version 冻结/解冻递增与 main 的状态变化判断及通知 - 前端:保留 dev 登出接口与 main 的 fetchMe silent 参数、SSE 登录跳转;后台订单表按 dev 最小化 DTO 移除号主到手列
This commit is contained in:
@@ -4,6 +4,7 @@ import (
|
||||
"time"
|
||||
|
||||
"gorm.io/datatypes"
|
||||
"gorm.io/gorm"
|
||||
)
|
||||
|
||||
type RentalOrder struct {
|
||||
@@ -77,6 +78,24 @@ func (RentalOrder) TableName() string {
|
||||
return "rental_orders"
|
||||
}
|
||||
|
||||
// AfterSave 将商品关联发布群的最新订单快照一并更新。
|
||||
// 客服列表会高频按订单状态筛选,直接读这个快照可避免每次聚合全量 rental_orders。
|
||||
func (o *RentalOrder) AfterSave(tx *gorm.DB) error {
|
||||
if o.ID == 0 || o.ListingID == 0 {
|
||||
return nil
|
||||
}
|
||||
return tx.Model(&ChatConversation{}).
|
||||
Where("listing_id = ? AND order_id IS NULL", o.ListingID).
|
||||
Where("latest_order_id IS NULL OR latest_order_id <= ?", o.ID).
|
||||
Updates(map[string]any{
|
||||
"latest_order_id": o.ID,
|
||||
"latest_order_no": o.OrderNo,
|
||||
"latest_order_status": o.Status,
|
||||
"latest_order_handoff_status": o.HandoffStatus,
|
||||
"latest_order_refund_status": o.RefundStatus,
|
||||
}).Error
|
||||
}
|
||||
|
||||
// 押金暂扣状态:客服可对进行中订单的押金退款进行暂扣,订单照常结算,
|
||||
// 但本应原路退给租客的押金部分挂起不退,后续由客服手动归还。
|
||||
const (
|
||||
|
||||
Reference in New Issue
Block a user