| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173 |
- // 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 <x_shop_orders>
- 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 = endDate.Format("2006-01")
- return &BankOrderListResult{
- Items: items,
- Total: total,
- EndDate: endDateStr,
- }, nil
- }
|