micro-document/internel/dao/annualReports.go

113 lines
3.0 KiB
Go
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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) {
if req.FileName == "" {
return errors.New("文件名称不能为空")
}
if req.Date == 0 {
return errors.New("日期不能为空")
}
if req.FileUrl == "" {
return errors.New("文件地址不能为空")
}
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) {
if req.FileName == "" {
return errors.New("文件名称不能为空")
}
if req.Date == 0 {
return errors.New("日期不能为空")
}
if req.FileUrl == "" {
return errors.New("文件地址不能为空")
}
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
}
func (annualReportsDao) Display() (data []model.AnnualReport, err error) {
err = db.DocDB.Model(&model.AnnualReport{}).Where("status = ?", 1).Order("sort ASC").Find(&data).Error
if err != nil {
return nil, errors.New("查询年度报告失败")
}
return
}