package shanghu

import (
	orm "duoduo/database"
	"time"
)

type MerchantActiveGroupByProject struct {
	ID             int64     `gorm:"column:id;type:bigint(20);primary_key;AUTO_INCREMENT" json:"id"`
	MerchantOpenID string    `gorm:"column:merchant_open_id;type:varchar(255)" json:"merchant_open_id"` // Open id
	GroupBuyID     int64     `gorm:"column:group_buy_id;type:bigint(20)" json:"group_buy_id"`           // 关联活动
	ProjectName    string    `gorm:"column:project_name;type:varchar(255)" json:"project_name"`         // 项目名
	CancelNum      int       `gorm:"column:cancel_num;type:int(11)" json:"cancel_num"`                  // 核销数量
	CreateBy       int64     `gorm:"column:create_by;type:bigint(20)" json:"create_by"`                 // 创建者
	UpdateBy       int64     `gorm:"column:update_by;type:bigint(20)" json:"update_by"`                 // 更新者
	CreatedAt      time.Time `gorm:"column:created_at;type:datetime(3)" json:"created_at"`              // 创建时间
	UpdatedAt      time.Time `gorm:"column:updated_at;type:datetime(3)" json:"updated_at"`              // 最后更新时间
	DeletedAt      time.Time `gorm:"column:deleted_at;type:datetime(3);default:null" json:"deleted_at"` // 删除时间
}

func (m *MerchantActiveGroupByProject) TableName() string {
	return "merchant_active_group_by_project"
}

func (u *MerchantActiveGroupByProject) Create() (MerchantActiveGroupByProject, error) {
	var doc MerchantActiveGroupByProject
	var err error

	doc = *u
	err = orm.ShMysql.Table(u.TableName()).Create(&doc).Error
	if err != nil {
		return doc, err
	}

	return doc, nil
}

// 中奖商品列表
func (m *MerchantActiveGroupByProject) GetGroupBuyProjectList() ([]MerchantActiveGroupByProject, int, error) {
	var doc []MerchantActiveGroupByProject

	table := orm.ShMysql.Table(m.TableName())

	table = table.Where("group_buy_id = ?  ", m.GroupBuyID)
	var count int
	if err := table.Select("*").Order("id desc").Find(&doc).Error; err != nil {
		return nil, 0, err
	}
	table.Count(&count)
	return doc, count, nil
}

func (m *MerchantActiveGroupByProject) GetMerchantActiveGroupBuyProjectByID() (MerchantActiveGroupByProject, error) {
	var doc MerchantActiveGroupByProject

	table := orm.ShMysql.Table(m.TableName())
	table = table.Where("id = ?  ", m.ID)
	if err := table.Select("*").First(&doc).Error; err != nil {
		return doc, err
	}

	return doc, nil
}