package dao import ( "github.com/shopspring/decimal" "gorm.io/gorm" "server/global" ) type Project struct { global.GVA_MODEL Code string `json:"code" form:"code" gorm:"comment:项目编号"` Name string `json:"name" form:"name" gorm:"comment:项目名称"` Principal uint `json:"principal" form:"principal" gorm:"comment:负责人"` Price decimal.Decimal `json:"price" form:"price" gorm:"type:decimal(10,2);not null"` Illustrate string `json:"illustrate" form:"illustrate" gorm:"comment:说明"` Source string `json:"source" form:"source" gorm:"comment:来源"` Progress int `json:"progress" form:"progress" gorm:"comment:进度"` State int `json:"state" form:"state" gorm:"comment:状态"` Files []ProjectFile `json:"files" form:"files" gorm:"-"` } func (Project) TableName() string { return "project" } // TODO:项目查询 // QueryProjectList 查询项目列表 func QueryProjectList(limit, offset, state int, name, time string) (project []*Project, total int64, err error) { // 创建db db := global.GVA_DB.Model(&Project{}) // 如果有条件搜索 下方会自动创建搜索语句 if state != 0 { db = db.Where("state = ?", state) } if name != "" { db = db.Where("name LIKE ?", "%"+name+"%") } if time != "" { db = db.Where("WHERE DATE_FORMAT(created_at, '%Y-%m') = ?", time) } err = db.Count(&total).Error if err != nil { return } err = db.Order("id desc").Limit(limit).Offset(offset).Find(&project).Error return project, total, err } // QueryProjectByCode 查询单个项目 按编号 func QueryProjectByCode(code string) (project Project, err error) { err = global.GVA_DB.Model(&Project{}).Where("code = ?", code).First(&project).Error return } // TODO:项目新增 // CreateProject 新增项目 func (p Project) CreateProject() error { return global.GVA_DB.Transaction(func(tx *gorm.DB) error { txErr := tx.Model(&Project{}).Create(&p).Error if txErr != nil { return txErr } for _, file := range p.Files { txErr := tx.Model(&ProjectFile{}).Create(&file).Error if txErr != nil { return txErr } } return txErr }) } // TODO:项目修改 // UpdateProject 修改项目 func (p Project) UpdateProject() error { return global.GVA_DB.Model(&p).Updates(p).Error } // TODO:项目删除 // DeleteProject 删除项目 func DeleteProject(code string) error { return global.GVA_DB.Unscoped().Where("code = ?", code).Delete(&Project{}).Error }