100 lines
2.8 KiB
Go
100 lines
2.8 KiB
Go
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 = 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 (quarterlyReportsDao) Add(req *reports.AddQuarterlyReportReq) (err error) {
|
||
if req.FileName == "" {
|
||
return errors.New("文件名称不能为空")
|
||
}
|
||
if req.Attachment == "" {
|
||
return errors.New("附件不能为空")
|
||
}
|
||
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) {
|
||
if req.FileName == "" {
|
||
return errors.New("文件名称不能为空")
|
||
}
|
||
if req.Attachment == "" {
|
||
return errors.New("附件不能为空")
|
||
}
|
||
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
|
||
}
|