package order import ( "cls/internal/domain/order" "cls/pkg/logger" "cls/pkg/xorm_engine" "errors" "xorm.io/builder" ) // OrderRepositoryORM 订单仓储实现 type OrderRepositoryORM struct { engine *xorm_engine.Engine log logger.Logger } func (r *OrderRepositoryORM) Create(order *order.Order) error { //TODO implement me panic("implement me") } func (r *OrderRepositoryORM) GetByID(id uint64) (*order.Order, error) { //TODO implement me panic("implement me") } func (r *OrderRepositoryORM) GetByOrderNo(orderNo string) (*order.Order, error) { //TODO implement me panic("implement me") } func (r *OrderRepositoryORM) ListByUserID(userID uint64, page, size int) ([]*order.Order, int64, error) { //TODO implement me panic("implement me") } var _ order.OrderRepository = (*OrderRepositoryORM)(nil) // NewOrderRepositoryORM 创建订单仓储实现 func NewOrderRepositoryORM(engine *xorm_engine.Engine, log logger.New) order.OrderRepository { return &OrderRepositoryORM{ engine: engine, log: log("cls:repo:order"), } } // Save 保存订单 func (r *OrderRepositoryORM) Save(order *order.Order) error { if _, err := r.engine.Insert(order); err != nil { r.log.Error(err) return err } return nil } // FindByID 根据ID获取订单 func (r *OrderRepositoryORM) FindByID(id uint64) (*order.Order, error) { order := &order.Order{} has, err := r.engine.ID(id).Get(order) if err != nil { r.log.Error(err) return nil, err } if !has { return nil, errors.New("订单不存在") } return order, nil } // FindByOrderNo 根据订单号获取订单 func (r *OrderRepositoryORM) FindByOrderNo(orderNo string) (*order.Order, error) { order := &order.Order{} has, err := r.engine.Where(builder.Eq{"order_no": orderNo}).Get(order) if err != nil { r.log.Error(err) return nil, err } if !has { return nil, errors.New("订单不存在") } return order, nil } // Update 更新订单 func (r *OrderRepositoryORM) Update(order *order.Order) error { if _, err := r.engine.ID(order.ID).Update(order); err != nil { r.log.Error(err) return err } return nil } // UpdateStatus 更新订单状态 func (r *OrderRepositoryORM) UpdateStatus(id uint64, status order.OrderStatus) error { if _, err := r.engine.ID(id).Update(&order.Order{Status: status}); err != nil { r.log.Error(err) return err } return nil } // Delete 删除订单 func (r *OrderRepositoryORM) Delete(id uint64) error { if _, err := r.engine.ID(id).Delete(&order.Order{}); err != nil { r.log.Error(err) return err } return nil } func (r *OrderRepositoryORM) GetPendingOrder(targetId uint64, t order.OrderType, uid uint64) (*order.Order, error) { o := &order.Order{} _, err := r.engine.Where(builder.Eq{"target_id": targetId}. And(builder.Eq{"type": t}). And(builder.Eq{"user_id": uid}). And(builder.Eq{"status": order.OrderStatusPending})).Get(o) return o, err }