118 lines
3.2 KiB
Go
118 lines
3.2 KiB
Go
package dao
|
||
|
||
import (
|
||
"errors"
|
||
"micro-document/api/reports"
|
||
"micro-document/internel/model"
|
||
"micro-document/pkg/db"
|
||
"micro-document/pkg/msg"
|
||
"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(req *reports.DisplayAnnualReportReq) (data []model.AnnualReport, total int64, err error) {
|
||
result := db.DocDB.Model(&model.AnnualReport{})
|
||
result = result.Where("status = ?", msg.StatusOnline).Order("sort ASC")
|
||
result.Count(&total)
|
||
err = result.Scopes(db.Pagination(req.Page, req.PageSize)).Find(&data).Error
|
||
|
||
if err != nil {
|
||
return nil, 0, errors.New("查询年度报告失败")
|
||
}
|
||
return data, total, nil
|
||
}
|