You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
97 lines
5.8 KiB
97 lines
5.8 KiB
package models
|
|
|
|
import (
|
|
"time"
|
|
|
|
"github.com/ouxuanserver/osmanthuswine/src/core"
|
|
)
|
|
|
|
const CustomerOrderTableName = TableNamePrefix + "customer_order"
|
|
|
|
type CustomerOrder struct {
|
|
Id int64 `json:"id" xorm:"not null pk autoincr comment('主键') INT(11)"`
|
|
IsDelete bool `json:"is_delete" xorm:"not null default 0 comment('软删除') TINYINT(1)"`
|
|
CreatedAt time.Time `json:"created_at" xorm:"not null created comment('创建时间') DATETIME"`
|
|
UpdatedAt time.Time `json:"updated_at" xorm:"not null updated comment('更新时间') DATETIME"`
|
|
|
|
UserPrizeId int64 `json:"user_prize_id" xorm:"not null default 0 comment('用户奖品id') INT(11)"`
|
|
ActivityId int64 `json:"activity_id" xorm:"not null default 0 comment('主活动id') INT(11)"`
|
|
AreaId int64 `json:"area_id" xorm:"not null default 0 comment('地区id') INT(11)"`
|
|
AreaName string `json:"area_name" xorm:"not null default '' comment('地区名字') VARCHAR(255)"`
|
|
RehearsalId int64 `json:"rehearsal_id" xorm:"not null default 0 comment('彩排id/0正式') BIGINT(20)"`
|
|
OrderNo string `json:"order_no" xorm:"not null default 0 comment('本机订单号') VARCHAR(255)"`
|
|
OutTradeNo string `json:"out_trade_no" xorm:"not null default '' comment('微信订单流水号') VARCHAR(255)"`
|
|
OrderEntryPersonId int64 `json:"order_enter_person_id" xorm:"not null default 0 comment('订单录入人员id') BIGINT(20)"`
|
|
BuyerId int64 `json:"buyer_id" xorm:"not null default 0 comment('user表id') BIGINT(20)"`
|
|
GoodsId int64 `json:"goods_id,omitempty" xorm:"not null default 0 comment('customer_goods表id') BIGINT(20)"`
|
|
GoodsName string `json:"goods_name,omitempty" xorm:"not null default '' comment('商品名字') VARCHAR(255)"`
|
|
GoodsNum int `json:"goods_num,omitempty" xorm:"not null default 0 comment('商品数量') INT(11)"`
|
|
TotalAmount float64 `json:"total_amount" xorm:"not null default 0.00 comment('订单总额')"`
|
|
PayAmount float64 `json:"pay_amount" xorm:"not null default 0.00 comment('支付金额')"`
|
|
Postage float64 `json:"postage" xorm:"not null default 0.00 comment('邮费[0免邮]')"`
|
|
Status int `json:"status" xorm:"not null default 0 comment('订单状态[0未支付1已支付即待发货3已发货4确认收货5申请退款6已退款7申请退货8已退货9已取消]')"`
|
|
ExpireTime int64 `json:"expire_time" xorm:"not null default 0 comment('订单过时') INT(11)"`
|
|
Type int `json:"type" xorm:"not null default 0 comment('订单类型、0录入订单1直播订单')"`
|
|
|
|
// 快递信息
|
|
Receiver string `json:"receiver" xorm:"not null default '' comment('收件人') VARCHAR(128)"`
|
|
Address string `json:"address" xorm:"not null default '' comment('收件人地址') VARCHAR(255)"`
|
|
Phone string `json:"phone" xorm:"not null default '' comment('收件人电话') VARCHAR(128)"`
|
|
IsDrawCash int `json:"is_draw_cash" xorm:"not null default 0 comment('订单是否提取贷款0否1是') TINYINT(1)"`
|
|
ExpressId int `json:"express_id" xorm:"not null default '0' comment('快递公司名字') INT(11)"`
|
|
ExpressName string `json:"express_name" xorm:"not null default '' comment('快递名字') VARCHAR(128)"`
|
|
ExpressNo string `json:"express_no" xorm:"not null default '' comment('快递单号') VARCHAR(128)"`
|
|
CancelTime time.Time `json:"cancel_time" xorm:"comment('取消时间') DATETIME"`
|
|
AutoReceiveTime time.Time `json:"auto_receive_time" xorm:"comment('自动收货时间') DATETIME"`
|
|
|
|
// 无关变量
|
|
OrderTime string `json:"order_time,omitempty" xorm:"-"`
|
|
Good *CustomerGoods `json:"good,omitempty" xorm:"-"`
|
|
User *User `json:"user,omitempty" xorm:"-"`
|
|
OrderEntryPersonName string `json:"order_entry_person_name,omitempty" xorm:"-"`
|
|
ServicePhone string `json:"service_phone" xorm:"-"`
|
|
//SubOrders []*CustomerOrderSub `json:"sub_orders" xorm:"-"`
|
|
SubOrders []map[string]string `json:"sub_orders,omitempty" xorm:"-"`
|
|
}
|
|
|
|
func (t *CustomerOrder) TableName() string {
|
|
return CustomerOrderTableName
|
|
}
|
|
|
|
func (t *CustomerOrder) SoftDeleteById(id int64) (int64, error) {
|
|
t.IsDelete = true
|
|
return core.GetXormAuto().Where("id=?", id).Cols("is_delete").Update(t)
|
|
}
|
|
|
|
func (t *CustomerOrder) GetByOutTradeNO(outTradeNo string) (bool, error) {
|
|
return core.GetXormAuto().Where("is_delete=0 and out_trade_no=?", outTradeNo).Get(t)
|
|
}
|
|
|
|
func (t *CustomerOrder) Count(activityId, rehearsalId int64, limitTime time.Time) (int64, error) {
|
|
return core.GetXormAuto().Where("user_prize_id=0 and created_at >= ? and "+
|
|
"activity_id=? and rehearsal_id=? and is_delete=0",
|
|
limitTime, activityId, rehearsalId).Count(t)
|
|
}
|
|
|
|
func GetCustomerOrdersByActivityId(userId, activityId, rehearsalId, areaId int64, status []string, page, pageSize int) ([]*CustomerOrder, error) {
|
|
orders := make([]*CustomerOrder, 0)
|
|
err := core.GetXormAuto().Where("is_delete=0 and buyer_id=? and activity_id=? and "+
|
|
"rehearsal_id=? and area_id=?", userId, activityId, rehearsalId, areaId).In("status", status).
|
|
Desc("created_at").Limit(pageSize, page*pageSize).Find(&orders)
|
|
return orders, err
|
|
}
|
|
|
|
func (t *CustomerOrder) UpdateStatusBy(outTradeNo string, originStatus, status int) (int64, error) {
|
|
t.Status = status
|
|
return core.GetXormAuto().Where("is_delete=0 and status=? and out_trade_no=?",
|
|
originStatus, outTradeNo).Cols("status, cancel_time").Update(t)
|
|
}
|
|
|
|
func GetExpiredAtLiveCustomerOrder() ([]*CustomerOrder, error) {
|
|
orders := make([]*CustomerOrder, 0)
|
|
err := core.GetXormAuto().Where("type=1 and is_delete=0 and status=0 and expire_time <= ?", time.Now().Unix()).Find(&orders)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
return orders, nil
|
|
}
|