package dao import ( "errors" "micro-document/api/reports" "micro-document/internel/model" "micro-document/pkg/db" "time" ) type annualReportsDao struct{} var AnnualReportsDao = new(annualReportsDao) func (annualReportsDao) List(req *reports.GetAnnualReportListReq) (data []model.AnnualReport, total int64, err error) { dbQuery := db.DocDB.Model(&model.AnnualReport{}) if req.Filtrate != nil { if req.Filtrate.FileName != "" { dbQuery = dbQuery.Where("file_name LIKE ?", "%"+req.Filtrate.FileName+"%") } if req.Filtrate.Status != 0 { dbQuery = dbQuery.Where("status = ?", req.Filtrate.Status) } } // 按更新时间倒序排列 dbQuery = dbQuery.Order("updated_at DESC") //数据查询 dbQuery.Count(&total) err = dbQuery.Scopes(db.Pagination(req.Page, req.PageSize)).Find(&data).Error if err != nil { return } return } func (annualReportsDao) Add(req *reports.AddAnnualReportReq) (err error) { err = db.DocDB.Model(&model.AnnualReport{}).Create(&model.AnnualReport{ FileName: req.FileName, Date: req.Date, FileUrl: req.FileUrl, Operator: req.Operator, OperatorId: req.OperatorId, }).Error if err != nil { return errors.New("新增年度报告失败") } return } func (annualReportsDao) Edit(req *reports.EditAnnualReportReq) (err error) { err = db.DocDB.Model(&model.AnnualReport{}).Where("id = ?", req.Id).UpdateColumns(&model.AnnualReport{ FileName: req.FileName, Date: req.Date, FileUrl: req.FileUrl, Status: req.Status, Sort: req.Sort, Operator: req.Operator, OperatorId: req.OperatorId, UpdatedAt: time.Now(), }).Error if err != nil { return errors.New("编辑年度报告失败") } return } func (annualReportsDao) Delete(req *reports.DeleteAnnualReportReq) (err error) { // 先查询记录是否存在且状态允许删除 var report model.AnnualReport err = db.DocDB.Model(&model.AnnualReport{}).Where("id = ?", req.Id).First(&report).Error if err != nil { return errors.New("查询记录失败") } // 检查状态,如果status=1则不允许删除 if report.Status == 1 { return errors.New("该记录已上架,不允许删除") } // 执行删除操作 err = db.DocDB.Model(&model.AnnualReport{}).Where("id = ?", req.Id).Delete(&model.AnnualReport{}).Error if err != nil { return errors.New("删除年度报告失败") } return }