优化线下提号利润修改

This commit is contained in:
yml2213
2026-07-25 14:53:11 +08:00
parent 7ca68e6b8b
commit 9bb57b7094
10 changed files with 404 additions and 6 deletions
@@ -270,6 +270,51 @@ func (r *Repository) Complete(ctx context.Context, pickupID uint64, req Complete
return r.FindByID(ctx, pickupID)
}
// UpdateProfit 修改提号中的线下利润,已完成和已取消的提号不可修改。
func (r *Repository) UpdateProfit(ctx context.Context, pickupID uint64, req UpdateProfitRequest, adminID uint64, meta auditlog.Meta) (*PickupDTO, error) {
if r == nil || r.db == nil {
return nil, ErrDependencyUnavailable
}
err := r.db.WithContext(ctx).Transaction(func(tx *gorm.DB) error {
var pickup model.AdminPickup
if err := tx.Clauses(clause.Locking{Strength: "UPDATE"}).First(&pickup, pickupID).Error; err != nil {
if errors.Is(err, gorm.ErrRecordNotFound) {
return ErrPickupNotFound
}
return err
}
if pickup.Status != StatusPickingUp {
return ErrPickupNotPickingUp
}
oldProfitAmountCent := pickup.ProfitAmountCent
pickup.ProfitAmountCent = req.ProfitAmountCent
if err := tx.Model(&pickup).Update("profit_amount_cent", pickup.ProfitAmountCent).Error; err != nil {
return err
}
bid := pickup.ID
return auditlog.Append(tx, auditlog.Entry{
ActorType: "admin",
ActorID: adminID,
Action: "pickup_profit_update",
BizType: "admin_pickup",
BizID: &bid,
Meta: meta,
Detail: map[string]any{
"pickup_no": pickup.PickupNo,
"old_profit_amount_cent": oldProfitAmountCent,
"new_profit_amount_cent": pickup.ProfitAmountCent,
"reason": strings.TrimSpace(req.Reason),
},
})
})
if err != nil {
return nil, err
}
return r.FindByID(ctx, pickupID)
}
// Cancel 取消提号:恢复 listing 为 published + 解锁 in_transaction,账号恢复可租。
func (r *Repository) Cancel(ctx context.Context, pickupID uint64, reason string, adminID uint64, meta auditlog.Meta) error {
if r == nil || r.db == nil {