x_shop_orders.gen.go 7.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173
  1. // Code generated by gorm.io/gen. DO NOT EDIT.
  2. // Code generated by gorm.io/gen. DO NOT EDIT.
  3. // Code generated by gorm.io/gen. DO NOT EDIT.
  4. package model
  5. import (
  6. "go_zh/config"
  7. "time"
  8. "github.com/shopspring/decimal"
  9. )
  10. const TableNameXShopOrder = "x_shop_orders"
  11. // XShopOrder mapped from table <x_shop_orders>
  12. type XShopOrder struct {
  13. ID int `gorm:"column:id;primaryKey;autoIncrement:true" json:"id"`
  14. ShopID int `gorm:"column:shop_id;not null;comment:店铺ID" json:"shop_id"` // 店铺ID
  15. MID int `gorm:"column:m_id;not null;comment:会员ID" json:"m_id"` // 会员ID
  16. RsSn string `gorm:"column:rs_sn;not null;comment:店铺订单支付编号" json:"rs_sn"` // 店铺订单支付编号
  17. PaySn string `gorm:"column:pay_sn;not null;comment:支付编号" json:"pay_sn"` // 支付编号
  18. PayType int `gorm:"column:pay_type;not null;comment:支付类型,1:微信,2:支付宝" json:"pay_type"` // 支付类型,1:微信,2:支付宝
  19. PayMoney decimal.Decimal `gorm:"column:pay_money;not null;comment:支付金额" json:"pay_money"` // 支付金额
  20. Status int `gorm:"column:status;not null;comment:1:待支付,2:已支付,3:已退款,已完成" json:"status"` // 1:待支付,2:已支付,3:已退款,已完成
  21. CreatedAt time.Time `gorm:"column:created_at" json:"created_at"`
  22. UpdatedAt time.Time `gorm:"column:updated_at" json:"updated_at"`
  23. Discount decimal.Decimal `gorm:"column:discount;default:0.00;comment:折扣金额" json:"discount"` // 折扣金额
  24. IsClearing int `gorm:"column:is_clearing;comment:是否清分 0:待清分,1:已清分" json:"is_clearing"` // 是否清分 0:待清分,1:已清分
  25. ServiceMoney decimal.Decimal `gorm:"column:service_money;not null;default:0.00;comment:平台手续费" json:"service_money"` // 平台手续费
  26. DiscountMoney decimal.Decimal `gorm:"column:discount_money;not null;default:0.00;comment:让利金额" json:"discount_money"` // 让利金额
  27. EarningsMoney decimal.Decimal `gorm:"column:earnings_money;not null;default:0.00;comment:收益金额" json:"earnings_money"` // 收益金额
  28. ReturnSn string `gorm:"column:return_sn;comment:退款订单编号" json:"return_sn"` // 退款订单编号
  29. IsReport int `gorm:"column:is_report;comment:是否播报" json:"is_report"` // 是否播报
  30. PayCodeSource int `gorm:"column:pay_code_source;default:1;comment:支付收款码来源 1普通收款码 2烟草收款码" json:"pay_code_source"` // 支付收款码来源 1普通收款码 2烟草收款码
  31. IsBank int `gorm:"column:is_bank;comment:是否银联支付 0否1是" json:"is_bank"` // 是否银联支付 0否1是
  32. }
  33. // TableName XShopOrder's table name
  34. func (*XShopOrder) TableName() string {
  35. return TableNameXShopOrder
  36. }
  37. // 新增订单
  38. func (so *XShopOrder) CreateShopOrder() error {
  39. err := config.Mdb.Model(&so).Create(&so).Error
  40. return err
  41. }
  42. // OrderInfo 订单详情(包含店铺名称)
  43. type OrderInfo struct {
  44. RsSn string `json:"rs_sn"` // 店铺订单支付编号
  45. PaySn string `json:"pay_sn"` // 支付编号
  46. Status int `json:"status"` // 订单状态
  47. PayMoney decimal.Decimal `json:"pay_money"` // 支付金额
  48. ShopName string `json:"shop_name"` // 店铺名称
  49. }
  50. // GetOrderInfo 获取订单详情(关联店铺表)
  51. func (so *XShopOrder) GetOrderInfo(orderSn string) (OrderInfo, error) {
  52. var info OrderInfo
  53. err := config.Mdb.Table("x_shop_orders as o").
  54. Joins("JOIN x_shops as s ON s.id = o.shop_id").
  55. Where("o.rs_sn = ?", orderSn).
  56. Select("o.rs_sn, o.pay_sn, o.status, o.pay_money, s.shop_name").
  57. Find(&info).Error
  58. return info, err
  59. }
  60. // BankOrderItem 银联待入账订单项
  61. type BankOrderItem struct {
  62. RsSn string `json:"rs_sn"` // 订单编号
  63. PayMoney decimal.Decimal `json:"pay_money"` // 支付金额
  64. IsClearing int `json:"is_clearing"` // 是否清分
  65. Status int `json:"status"` // 订单状态
  66. CreatedAt time.Time `json:"created_at"` // 创建时间
  67. }
  68. // GetBankOrderList 获取银联待入账订单列表(最新 10 条)
  69. func (so *XShopOrder) GetBankOrderList(shopId int) ([]BankOrderItem, error) {
  70. var items []BankOrderItem
  71. // 查询最新 10 条记录
  72. err := config.Mdb.Model(&XShopOrder{}).
  73. Where("shop_id = ? AND status = ? AND is_bank = ?", shopId, 6, 1).
  74. Select("rs_sn, pay_money, is_clearing, status, created_at").
  75. Order("id desc").
  76. Limit(10).
  77. Find(&items).Error
  78. return items, err
  79. }
  80. // GetTotalBankMoney 获取银联待入账总金额
  81. func (so *XShopOrder) GetTotalBankMoney(shopId int) (decimal.Decimal, error) {
  82. var total decimal.Decimal
  83. err := config.Mdb.Model(&XShopOrder{}).
  84. Where("shop_id = ? AND status = ? AND is_bank = ?", shopId, 6, 1).
  85. Select("COALESCE(SUM(pay_money), 0)").
  86. Scan(&total).Error
  87. return total, err
  88. }
  89. // BankOrderListResult 银联订单列表返回结果
  90. type BankOrderListResult struct {
  91. Items []BankOrderItem `json:"items"`
  92. Total int64 `json:"total"`
  93. EndDate string `json:"end_date"`
  94. }
  95. // GetShopBankOrderList 获取商户银联待入账金额列表(带日期范围和分页)
  96. func (so *XShopOrder) GetShopBankOrderList(shopId int, date string, page, pageSize int) (*BankOrderListResult, error) {
  97. // 计算日期范围:从指定月份的 1 号到下个月 1 号之前
  98. var startDate, endDate time.Time
  99. var err error
  100. if date == "" {
  101. // 默认为本月
  102. date = time.Now().Format("2006-01")
  103. }
  104. // 解析日期(格式:2006-01)
  105. startDate, err = time.ParseInLocation("2006-01", date, time.Local)
  106. if err != nil {
  107. return nil, err
  108. }
  109. // 计算下个月 1 号
  110. endDate = startDate.AddDate(0, 1, 0)
  111. // 格式化日期范围
  112. startDateStr := startDate.Format("2006-01-02 15:04:05")
  113. endDateStr := endDate.Format("2006-01-02 15:04:05")
  114. // 查询总数
  115. var total int64
  116. err = config.Mdb.Model(&XShopOrder{}).
  117. Where("shop_id = ? AND is_bank = ? AND created_at >= ? AND created_at < ? AND status IN ?",
  118. shopId, 1, startDateStr, endDateStr, []int{4, 6}).
  119. Count(&total).Error
  120. if err != nil {
  121. return nil, err
  122. }
  123. // 分页查询
  124. offset := (page - 1) * pageSize
  125. var items []BankOrderItem
  126. err = config.Mdb.Model(&XShopOrder{}).
  127. Where("shop_id = ? AND is_bank = ? AND created_at >= ? AND created_at < ? AND status IN ?",
  128. shopId, 1, startDateStr, endDateStr, []int{4, 6}).
  129. Select("rs_sn, pay_money, is_clearing, status, created_at").
  130. Order("id desc").
  131. Offset(offset).
  132. Limit(pageSize).
  133. Find(&items).Error
  134. if err != nil {
  135. return nil, err
  136. }
  137. // 计算结束日期的年月(返回用户选择的月份)
  138. endDateStr = startDate.Format("2006-01")
  139. return &BankOrderListResult{
  140. Items: items,
  141. Total: total,
  142. EndDate: endDateStr,
  143. }, nil
  144. }