package data import ( "PaymentCenter/app/http/entities" "PaymentCenter/app/models/ordersmodel" "database/sql" "xorm.io/builder" "xorm.io/xorm" ) type OrderRepo struct { repo xorm.Interface } func NewOrderRepo(repo xorm.Interface) *OrderRepo { return &OrderRepo{ repo: repo, } } func (m *OrderRepo) OrderList(conn builder.Cond, pageFilter entities.PageRequest, orderList *[]ordersmodel.Orders) (int64, error) { repo := m.repo.Where(conn) if pageFilter.Page > 0 { repo = repo.Limit(pageFilter.PageSize, pageFilter.PageSize*(pageFilter.Page-1)) } return repo.Desc("create_time").FindAndCount(orderList) } func (m *OrderRepo) OrderInsertOne(order *ordersmodel.Orders) (int64, error) { return m.repo.InsertOne(order) } func (m *OrderRepo) OrderDelete(order *ordersmodel.Orders, conn builder.Cond) (int64, error) { return m.repo.Where(conn).Delete(order) } // columns 参数为要更新的字段 func (m *OrderRepo) OrderUpdate(order *ordersmodel.Orders, conn builder.Cond, columns ...string) (int64, error) { return m.repo.Where(conn).MustCols(columns...).Update(order) } func (m *OrderRepo) OrdersBackendList(conn builder.Cond, pageFilter entities.PageRequest, orderList *[]ordersmodel.OrdersBackendList) (int64, error) { repo := m.repo.Select(`orders.*, merchant.name as merchant_name, app.app_name, pay_channel.pay_name`). Where(conn) if pageFilter.Page > 0 { repo = repo.Limit(pageFilter.PageSize, pageFilter.PageSize*(pageFilter.Page-1)) } repo = repo.Join("left", "app", "app.id = orders.app_id"). Join("left", "merchant", "merchant.id = orders.merchant_id"). Join("left", "pay_channel", "pay_channel.id = orders.pay_channel_id") return repo.Desc("orders.create_time").FindAndCount(orderList) } func (m *OrderRepo) OrdersLeftPayChannelList(conn builder.Cond, pageFilter entities.PageRequest, orderList *[]ordersmodel.OrdersLeftPayChannelList) error { repo := m.repo.Select(`orders.*,pay_channel.channel_type,pay_channel.app_id ,pay_channel.ext_json`). Where(conn) if pageFilter.Page > 0 { repo = repo.Limit(pageFilter.PageSize, pageFilter.PageSize*(pageFilter.Page-1)) } repo = repo.Join("left", "pay_channel", "pay_channel.id = orders.pay_channel_id") return repo.Find(orderList) } func (m *OrderRepo) OrderFindOne(order *ordersmodel.Orders, conn builder.Cond, columns ...string) (*ordersmodel.Orders, error) { has, err := m.repo.Where(conn).Get(order) if !has { return nil, sql.ErrNoRows } return order, err }