package order import ( "fmt" "github.com/beego/beego/v2/client/orm" "time" ) type CygxOrderResp struct { OrderId int `orm:"column(order_id);pk";comment:"订单id"` OrderCode string `comment:"订单编号"` OutTradeCode string `comment:"外部交易号"` PaymentType int `comment:"支付类型。取值范围:1微信支付,2支付宝支付。"` GoodsName string `comment:"商品名称"` GoodsId int `comment:"商品ID"` BuyerInvoice string `comment:"买家发票信息"` GoodsMoney float64 `comment:"商品总价"` OrderMoney float64 `comment:"订单总价"` Point int `comment:"订单消耗积分"` PointMoney float64 `comment:"订单消耗积分抵多少钱"` PayMoney float64 `comment:"订单实付金额"` RefundMoney float64 `comment:"订单退款金额"` OrderStatus int `comment:"订单状态,0:已取消、1:待支付、2:已支付、3:已退款"` PayTime time.Time `comment:"订单付款时间"` SourceId int `comment:"来源ID"` Source string `comment:"来源\n报告 :article\n活动 :activity"` SourceTitle string `comment:"来源名称,活动或者报告标题"` UserId int `comment:"用户ID"` Mobile string `comment:"手机号"` Email string `comment:"邮箱"` CompanyId int `comment:"公司ID"` CompanyName string `comment:"公司名称"` RealName string `comment:"用户实际名称"` SellerName string `comment:"所属销售"` CreateTime time.Time `comment:"创建时间"` ModifyTime time.Time `comment:"修改时间"` RegisterPlatform int `comment:"来源 1小程序,2:网页"` StartDate time.Time `comment:"开始时间"` EndDate time.Time `comment:"结束时间"` } // 订单表 type CygxOrder struct { OrderId int `orm:"column(order_id);pk";comment:"订单id"` OrderCode string `comment:"订单编号"` OutTradeNo string `comment:"【商户订单号】 商户系统内部订单号"` OutTradeCode string `comment:"外部交易号"` PaymentType int `comment:"支付类型。取值范围:1微信支付,2支付宝支付。"` TradeType string `comment:"交易类型,枚举值:JSAPI:公众号支付 、 NATIVE:扫码支付 、 App:App支付 、 MICROPAY:付款码支付 、 MWEB:H5支付 、 FACEPAY:刷脸支付"` GoodsName string `comment:"商品名称"` GoodsId int `comment:"商品ID"` BuyerInvoice string `comment:"买家发票信息"` GoodsMoney float64 `comment:"商品总价"` OrderMoney float64 `comment:"订单总价"` Point int `comment:"订单消耗积分"` PointMoney float64 `comment:"订单消耗积分抵多少钱"` PayMoney float64 `comment:"订单实付金额"` RefundTime time.Time `comment:"订单退款时间"` RefundMoney float64 `comment:"订单退款金额"` OrderStatus int `comment:"订单状态,0:已取消、1:待支付、2:已支付、3:已退款"` PayTime time.Time `comment:"订单付款时间"` SourceId int `comment:"来源ID"` Source string `comment:"来源\n报告 :article\n活动 :activity"` SourceTitle string `comment:"来源名称,活动或者报告标题"` UserId int `comment:"用户ID"` Mobile string `comment:"手机号"` Email string `comment:"邮箱"` CompanyId int `comment:"公司ID"` CompanyName string `comment:"公司名称"` RealName string `comment:"用户实际名称"` SellerName string `comment:"所属销售"` SellerId int `comment:"所属销售Id"` CreateTime time.Time `comment:"创建时间"` ModifyTime time.Time `comment:"修改时间"` RegisterPlatform int `comment:"来源 1小程序,2:网页"` OrderType int `comment:"订单类型,1:畅读卡订单,2:单场付费订单"` StartDate time.Time `comment:"开始时间"` EndDate time.Time `comment:"结束时间"` } // 订单操作表 type CygxOrderAction struct { ActionId int64 `orm:"column(action_id);pk"` // 动作id Action string // 动作内容 OrderStatus int // 订单状态,0:已取消、1:待支付、2:已支付、3:已退款 OrderStatusText string // 订单状态名称 OrderCode string // 订单编号 UserId int // 用户ID Mobile string // 手机号 Email string // 邮箱 CompanyId int // 公司ID CompanyName string // 公司名称 RealName string // 用户实际名称 SellerName string // 所属销售 CreateTime time.Time // 创建时间 ModifyTime time.Time // 修改时间 RegisterPlatform int // 来源 1小程序,2:网页 AdminId int // 管理员ID AdminName string // 管理员姓名 } func GetCygxOrderList(condition string, pars []interface{}, startSize, pageSize int) (items []*CygxOrder, err error) { o := orm.NewOrm() sql := `SELECT * FROM cygx_order WHERE 1 = 1 ` + condition sql += ` LIMIT ?,? ` _, err = o.Raw(sql, pars, startSize, pageSize).QueryRows(&items) return } func GetCygxOrderDetailList(condition string, pars []interface{}) (items []*CygxOrder, err error) { o := orm.NewOrm() sql := `SELECT * FROM cygx_order WHERE 1 = 1 ` + condition _, err = o.Raw(sql, pars).QueryRows(&items) return } // 自动取消订单 func CancelCygxOrder(item *CygxOrder) (err error) { o, err := orm.NewOrm().Begin() if err != nil { return } defer func() { fmt.Println(err) if err == nil { o.Commit() } else { o.Rollback() } }() itemOrderAction := new(CygxOrderAction) itemOrderAction.Action = "超时自动取消订单" itemOrderAction.OrderStatus = 0 itemOrderAction.OrderStatusText = "已取消" itemOrderAction.OrderCode = item.OrderCode itemOrderAction.UserId = item.UserId itemOrderAction.Mobile = item.Mobile itemOrderAction.Email = item.Email itemOrderAction.CompanyId = item.CompanyId itemOrderAction.CompanyName = item.CompanyName itemOrderAction.RealName = item.RealName itemOrderAction.SellerName = item.SellerName itemOrderAction.CreateTime = time.Now() itemOrderAction.ModifyTime = time.Now() itemOrderAction.RegisterPlatform = item.RegisterPlatform _, err = o.Insert(itemOrderAction) // 写入订单操作信息 if err != nil { return } updateParams := make(map[string]interface{}) updateParams["OrderStatus"] = 0 updateParams["ModifyTime"] = item.ModifyTime ptrStructOrTableName := "cygx_order" whereParam := map[string]interface{}{"order_code": item.OrderCode} qs := o.QueryTable(ptrStructOrTableName) for expr, exprV := range whereParam { qs = qs.Filter(expr, exprV) } _, err = qs.Update(updateParams) if err != nil { return } return } // 根据订单编号获取订单详情 func GetCygxOrderDetailByOrderCode(orderCode string) (item *CygxOrder, err error) { o := orm.NewOrm() sql := `SELECT * FROM cygx_order WHERE order_code = ? ` err = o.Raw(sql, orderCode).QueryRow(&item) return } // 根据订单编号获取订单详情 func GetCygxOrderDetailByOutTradeNo(outTradeNo string) (item *CygxOrder, err error) { o := orm.NewOrm() sql := `SELECT * FROM cygx_order WHERE out_trade_no = ? ` err = o.Raw(sql, outTradeNo).QueryRow(&item) return }