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(openId string) (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 open_id = ? ", openId).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 open_id = ? and DATE(order_group_success_time) = curdate() ", openId).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 open_id = ? and DATE(order_group_success_time) = date_sub(curdate(),interval 1 day) ", openId).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 open_id = ? and DATE(order_group_success_time) >= date_sub(curdate(),interval 30 day) ", openId).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 open_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) ", openId).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
}