12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788 |
- 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
- }
|