package card_t_mall_order

import (
	"context"
	"kami/internal/dao"
	"kami/internal/model"
	"kami/internal/model/do"
	"kami/utility/config"

	"github.com/gogf/gf/v2/database/gdb"
)

// UpdateOrderStatusByAccountNumberAndStatus 更新指定号码的订单状态
func (h *sRechargeTMallGameOrder) UpdateOrderStatusByAccountNumberAndStatus(ctx context.Context, input *model.UpdateOrderStatusInput) (err error) {
	_, err = dao.V1RechargeTMallOrder.Ctx(ctx).DB(config.GetDatabaseV1()).
		Where(dao.V1RechargeTMallOrder.Columns().AccountNumber, input.AccountNumber).
		Where(dao.V1RechargeTMallOrder.Columns().Status, input.QueryStatus).
		Update(do.V1RechargeTMallOrder{
			Status: input.Status,
		})
	return
}

// UpdateOrderStatusByTBOrderNo 更新指定订单号的订单状态
func (h *sRechargeTMallGameOrder) UpdateOrderStatusByTBOrderNo(ctx context.Context, input *model.UpdateOrderStatusByTBOrderNoInput, tx gdb.TX) (err error) {
	m := dao.V1RechargeTMallOrder.Ctx(ctx).DB(config.GetDatabaseV1())
	if tx != nil {
		m = m.TX(tx)
	}
	err = m.Ctx(ctx).Transaction(ctx, func(ctx context.Context, tx gdb.TX) error {
		_, err2 := h.GetShopOrderByOrderNo(ctx, input.OrderNo, tx)
		if err2 != nil {
			return err2
		}
		_, _ = dao.V1RechargeTMallOrder.Ctx(ctx).DB(config.GetDatabaseV1()).TX(tx).
			Where(dao.V1RechargeTMallOrder.Columns().OrderNo, input.OrderNo).Update(do.V1RechargeTMallOrder{
			Status: input.Status,
		})
		if err3 := h.AddOrderHistory(ctx, &model.AddAgisoCallBackHistoryInput{
			OrderNo:      input.OrderNo,
			OriginalData: input.OriginalData,
			Status:       input.Status,
			SourceType:   input.SourceType,
			Remark:       "",
		}, tx); err3 != nil {
			return err3
		}
		return nil
	})
	return
}
