package dao import ( "errors" "micro-document/api/reports" "micro-document/internel/model" "micro-document/pkg/db" "time" ) type quarterlyReportsDao struct{} var QuarterlyReportsDao = new(quarterlyReportsDao) func (quarterlyReportsDao) List(req *reports.GetQuarterlyReportListReq) (data []model.QuarterlyReport, total int64, err error) { dbQuery := db.DocDB.Model(&model.QuarterlyReport{}) 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.Count(&total) err = dbQuery.Scopes(db.Pagination(req.Page, req.PageSize)).Find(&data).Error if err != nil { return } return } func (quarterlyReportsDao) Add(req *reports.AddQuarterlyReportReq) (err error) { err = db.DocDB.Model(&model.QuarterlyReport{}).Create(&model.QuarterlyReport{ FileName: req.FileName, FileIntroduce: req.FileIntroduce, Attachment: req.Attachment, AttachmentName: req.AttachmentName, Operator: req.Operator, OperatorId: req.OperatorId, }).Error if err != nil { return errors.New("新增季度报告失败") } return } func (quarterlyReportsDao) Edit(req *reports.EditQuarterlyReportReq) (err error) { err = db.DocDB.Model(&model.QuarterlyReport{}).Where("id = ?", req.Id).UpdateColumns(&model.QuarterlyReport{ FileName: req.FileName, FileIntroduce: req.FileIntroduce, Attachment: req.Attachment, AttachmentName: req.AttachmentName, Status: req.Status, Sort: req.Sort, Operator: req.Operator, OperatorId: req.OperatorId, UpdatedAt: time.Now(), }).Error if err != nil { return errors.New("编辑季度报告失败") } return } func (quarterlyReportsDao) Delete(req *reports.DeleteQuarterlyReportReq) (err error) { // 先查询记录是否存在且状态允许删除 var report model.QuarterlyReport err = db.DocDB.Model(&model.QuarterlyReport{}).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.QuarterlyReport{}).Where("id = ?", req.Id).Delete(&model.QuarterlyReport{}).Error if err != nil { return errors.New("删除季度报告失败") } return }