// Code generated by gorm.io/gen. DO NOT EDIT. // Code generated by gorm.io/gen. DO NOT EDIT. // Code generated by gorm.io/gen. DO NOT EDIT. package model import ( "go_zh/config" "time" "github.com/shopspring/decimal" ) const TableNameXShopOrder = "x_shop_orders" // XShopOrder mapped from table type XShopOrder struct { ID int `gorm:"column:id;primaryKey;autoIncrement:true" json:"id"` ShopID int `gorm:"column:shop_id;not null;comment:店铺ID" json:"shop_id"` // 店铺ID MID int `gorm:"column:m_id;not null;comment:会员ID" json:"m_id"` // 会员ID RsSn string `gorm:"column:rs_sn;not null;comment:店铺订单支付编号" json:"rs_sn"` // 店铺订单支付编号 PaySn string `gorm:"column:pay_sn;not null;comment:支付编号" json:"pay_sn"` // 支付编号 PayType int `gorm:"column:pay_type;not null;comment:支付类型,1:微信,2:支付宝" json:"pay_type"` // 支付类型,1:微信,2:支付宝 PayMoney decimal.Decimal `gorm:"column:pay_money;not null;comment:支付金额" json:"pay_money"` // 支付金额 Status int `gorm:"column:status;not null;comment:1:待支付,2:已支付,3:已退款,已完成" json:"status"` // 1:待支付,2:已支付,3:已退款,已完成 CreatedAt time.Time `gorm:"column:created_at" json:"created_at"` UpdatedAt time.Time `gorm:"column:updated_at" json:"updated_at"` Discount decimal.Decimal `gorm:"column:discount;default:0.00;comment:折扣金额" json:"discount"` // 折扣金额 IsClearing int `gorm:"column:is_clearing;comment:是否清分 0:待清分,1:已清分" json:"is_clearing"` // 是否清分 0:待清分,1:已清分 ServiceMoney decimal.Decimal `gorm:"column:service_money;not null;default:0.00;comment:平台手续费" json:"service_money"` // 平台手续费 DiscountMoney decimal.Decimal `gorm:"column:discount_money;not null;default:0.00;comment:让利金额" json:"discount_money"` // 让利金额 EarningsMoney decimal.Decimal `gorm:"column:earnings_money;not null;default:0.00;comment:收益金额" json:"earnings_money"` // 收益金额 ReturnSn string `gorm:"column:return_sn;comment:退款订单编号" json:"return_sn"` // 退款订单编号 IsReport int `gorm:"column:is_report;comment:是否播报" json:"is_report"` // 是否播报 PayCodeSource int `gorm:"column:pay_code_source;default:1;comment:支付收款码来源 1普通收款码 2烟草收款码" json:"pay_code_source"` // 支付收款码来源 1普通收款码 2烟草收款码 IsBank int `gorm:"column:is_bank;comment:是否银联支付 0否1是" json:"is_bank"` // 是否银联支付 0否1是 } // TableName XShopOrder's table name func (*XShopOrder) TableName() string { return TableNameXShopOrder } // 新增订单 func (so *XShopOrder) CreateShopOrder() error { err := config.Mdb.Model(&so).Create(&so).Error return err } // OrderInfo 订单详情(包含店铺名称) type OrderInfo struct { RsSn string `json:"rs_sn"` // 店铺订单支付编号 PaySn string `json:"pay_sn"` // 支付编号 Status int `json:"status"` // 订单状态 PayMoney decimal.Decimal `json:"pay_money"` // 支付金额 ShopName string `json:"shop_name"` // 店铺名称 } // GetOrderInfo 获取订单详情(关联店铺表) func (so *XShopOrder) GetOrderInfo(orderSn string) (OrderInfo, error) { var info OrderInfo err := config.Mdb.Table("x_shop_orders as o"). Joins("JOIN x_shops as s ON s.id = o.shop_id"). Where("o.rs_sn = ?", orderSn). Select("o.rs_sn, o.pay_sn, o.status, o.pay_money, s.shop_name"). Find(&info).Error return info, err } // BankOrderItem 银联待入账订单项 type BankOrderItem struct { RsSn string `json:"rs_sn"` // 订单编号 PayMoney decimal.Decimal `json:"pay_money"` // 支付金额 IsClearing int `json:"is_clearing"` // 是否清分 Status int `json:"status"` // 订单状态 CreatedAt time.Time `json:"created_at"` // 创建时间 } // GetBankOrderList 获取银联待入账订单列表(最新 10 条) func (so *XShopOrder) GetBankOrderList(shopId int) ([]BankOrderItem, error) { var items []BankOrderItem // 查询最新 10 条记录 err := config.Mdb.Model(&XShopOrder{}). Where("shop_id = ? AND status = ? AND is_bank = ?", shopId, 6, 1). Select("rs_sn, pay_money, is_clearing, status, created_at"). Order("id desc"). Limit(10). Find(&items).Error return items, err } // GetTotalBankMoney 获取银联待入账总金额 func (so *XShopOrder) GetTotalBankMoney(shopId int) (decimal.Decimal, error) { var total decimal.Decimal err := config.Mdb.Model(&XShopOrder{}). Where("shop_id = ? AND status = ? AND is_bank = ?", shopId, 6, 1). Select("COALESCE(SUM(pay_money), 0)"). Scan(&total).Error return total, err } // BankOrderListResult 银联订单列表返回结果 type BankOrderListResult struct { Items []BankOrderItem `json:"items"` Total int64 `json:"total"` EndDate string `json:"end_date"` } // GetShopBankOrderList 获取商户银联待入账金额列表(带日期范围和分页) func (so *XShopOrder) GetShopBankOrderList(shopId int, date string, page, pageSize int) (*BankOrderListResult, error) { // 计算日期范围:从指定月份的 1 号到下个月 1 号之前 var startDate, endDate time.Time var err error if date == "" { // 默认为本月 date = time.Now().Format("2006-01") } // 解析日期(格式:2006-01) startDate, err = time.ParseInLocation("2006-01", date, time.Local) if err != nil { return nil, err } // 计算下个月 1 号 endDate = startDate.AddDate(0, 1, 0) // 格式化日期范围 startDateStr := startDate.Format("2006-01-02 15:04:05") endDateStr := endDate.Format("2006-01-02 15:04:05") // 查询总数 var total int64 err = config.Mdb.Model(&XShopOrder{}). Where("shop_id = ? AND is_bank = ? AND created_at >= ? AND created_at < ? AND status IN ?", shopId, 1, startDateStr, endDateStr, []int{4, 6}). Count(&total).Error if err != nil { return nil, err } // 分页查询 offset := (page - 1) * pageSize var items []BankOrderItem err = config.Mdb.Model(&XShopOrder{}). Where("shop_id = ? AND is_bank = ? AND created_at >= ? AND created_at < ? AND status IN ?", shopId, 1, startDateStr, endDateStr, []int{4, 6}). Select("rs_sn, pay_money, is_clearing, status, created_at"). Order("id desc"). Offset(offset). Limit(pageSize). Find(&items).Error if err != nil { return nil, err } // 计算结束日期的年月(返回用户选择的月份) endDateStr = startDate.Format("2006-01") return &BankOrderListResult{ Items: items, Total: total, EndDate: endDateStr, }, nil }