package mysql import orm "duoduo/database" type Order struct { CreateTime string `gorm:"column:create_time" json:"createTime"` GoodsName string `gorm:"column:goods_name" json:"goodsName"` GoodsThumbnailURL string `gorm:"column:goods_thumbnail_url" json:"goodsThumbnailUrl"` JSONData string `gorm:"column:json_data" json:"jsonData"` OrderGroupSuccessTime string `gorm:"column:order_group_success_time" json:"orderGroupSuccessTime"` OrderID string `gorm:"column:order_id" json:"orderId"` OrderStatus int `gorm:"column:order_status" json:"orderStatus"` OrderStatusDesc string `gorm:"column:order_status_desc" json:"orderStatusDesc"` PID string `gorm:"column:p_id" json:"pId"` PromotionAmount int `gorm:"column:promotion_amount" json:"promotionAmount"` UpdateTime string `gorm:"column:update_time" json:"updateTime"` } // TableName sets the insert table name for this struct type func (o *Order) TableName() string { return "order" } func (o *Order) Create() (Order, error) { var doc Order result := orm.Eloquent.Table(o.TableName()).Create(&o) if result.Error != nil { err := result.Error return doc, err } doc = *o return doc, nil } func (o *Order) GetNum() int { var count int tableCount := orm.Eloquent.Table(o.TableName()).Where("order_id = ? ", o.OrderID) tableCount.Count(&count) return count } func (o *Order) GetAmount() (Wallet, error) { var wallet Wallet //历史总收益: 0,1,2,3,5 求和 //今日预估收益:0,1,2,3 求和 //昨日预估收益:0,1,2,3 求和 //近30日预估收益:0,1,2,3,5 求和 //可体现金额:5求和-已体现金额 //已体现金额:提现记录求和 //历史总收益 err := orm.Eloquent.Select("SUM(promotion_amount) as total_amount").Where("order_status in (0,1,2,3,5) and p_id = ? ", o.PID).Table(o.TableName()).First(&wallet).Error if err != nil { return wallet, err } //今日收益 err = orm.Eloquent.Select("SUM(promotion_amount) as today_amount").Where("order_status in (0,1,2,3) and p_id = ? and DATE(order_group_success_time) = curdate() ", o.PID).Table(o.TableName()).First(&wallet).Error if err != nil { return wallet, err } //昨日收益 err = orm.Eloquent.Select("SUM(promotion_amount) as yesterday_amount").Where("order_status in (0,1,2,3) and p_id = ? and DATE(order_group_success_time) = date_sub(curdate(),interval 1 day) ", o.PID).Table(o.TableName()).First(&wallet).Error if err != nil { return wallet, err } //近30日收益 err = orm.Eloquent.Select("SUM(promotion_amount) as lately_amount").Where("order_status in (0,1,2,3) and p_id = ? and DATE(order_group_success_time) >= date_sub(curdate(),interval 30 day) ", o.PID).Table(o.TableName()).First(&wallet).Error if err != nil { return wallet, err } //上个月结算收益 err = orm.Eloquent.Select("SUM(promotion_amount) as available_amount").Where("order_status = 5 and p_id = ? and DATE(order_group_success_time) >= date_sub(date_sub(date_format(now(),'%y-%m-%d'),interval extract(day from now()) day),interval 0 month) ", o.PID).Table(o.TableName()).First(&wallet).Error if err != nil { return wallet, err } return wallet, nil } // 更新 func (o *Order) Update(orderId string) (update Order, err error) { if err = orm.Eloquent.Table(o.TableName()).Where("order_id = ?", orderId).First(&update).Error; err != nil { return } //参数1:是要修改的数据 //参数2:是修改的数据 if err = orm.Eloquent.Table(o.TableName()).Model(&update).Updates(&o).Error; err != nil { return } return }