Selaa lähdekoodia

feat:增加pdf报告功能

zqbao 9 kuukautta sitten
vanhempi
commit
5300fe1271
6 muutettua tiedostoa jossa 410 lisäystä ja 46 poistoa
  1. 1 0
      .gitignore
  2. 299 43
      controllers/report_pdf.go
  3. 19 0
      models/report_pdf.go
  4. 5 0
      models/response/report_pdf.go
  5. 81 0
      routers/commentsRouter.go
  6. 5 3
      scheduler/task.go

+ 1 - 0
.gitignore

@@ -7,3 +7,4 @@ go.sum
 scheduler/etalogs/
 scheduler/conf/
 *_test.go
+/test/

+ 299 - 43
controllers/report_pdf.go

@@ -44,7 +44,7 @@ func (this *ReportPdfController) Author() {
 // Add
 // @Title 添加研报
 // @Description 添加研报
-// @Param   File   query   file  true       "文件"
+// @Param   PdfUrl   query   file  true       "文件URL"
 // @Param   Title   query   string  true       "标题"
 // @Param   Author   query   string  true       "作者名称"
 // @Param   Abstract   query   string  true       "摘要"
@@ -59,13 +59,7 @@ func (this *ReportPdfController) Add() {
 		this.ServeJSON()
 	}()
 
-	f, h, err := this.GetFile("File")
-	if err != nil {
-		br.Msg = "获取资源信息失败"
-		br.ErrMsg = "获取资源信息失败,Err:" + err.Error()
-		return
-	}
-	defer f.Close()
+	pdfUrl := this.GetString("PdfUrl")
 	author := this.GetString("Author")
 	abstract := this.GetString("Abstract")
 	classifyIdFirst, _ := this.GetInt("ClassifyIdFirst")
@@ -80,6 +74,66 @@ func (this *ReportPdfController) Add() {
 		return
 	}
 
+	nameFirst, err := models.GetClassifyById(classifyIdFirst)
+	if err != nil {
+		br.Msg = "文件上传失败"
+		br.ErrMsg = "一级类名获取失败,Err:" + err.Error()
+		return
+	}
+	nameSecond, err := models.GetClassifyById(classifyIdSecond)
+	if err != nil {
+		br.Msg = "文件上传失败"
+		br.ErrMsg = "二级类名获取失败,Err:" + err.Error()
+		return
+	}
+
+	pdf := &models.ReportPdf{
+		PdfUrl:             pdfUrl,
+		Title:              title,
+		Author:             author,
+		Abstract:           abstract,
+		ClassifyIdFirst:    classifyIdFirst,
+		ClassifyNameFirst:  nameFirst.ClassifyName,
+		ClassifyIdSecond:   classifyIdSecond,
+		ClassifyNameSecond: nameSecond.ClassifyName,
+		PublishTime:        time.Now(),
+		ModifyTime:         time.Now(),
+		SysUserId:          this.SysUser.SysUserId,
+		SysRealName:        this.SysUser.SysRealName,
+		State:              utils.ReportStatusUp,
+	}
+	err = pdf.Add()
+	if err != nil {
+		br.Msg = "文件上传失败"
+		br.ErrMsg = "pdf研报新增失败,Err:" + err.Error()
+		return
+	}
+
+	br.Msg = "上传成功"
+	br.Ret = 200
+	br.Success = true
+}
+
+// @Title 上传pdf研报
+// @Description 上传pdf研报
+// @Param   File   query   file  true       "文件"
+// @Success 200 {object} models.ReportAuthorResp
+// @router /uploadPdf [post]
+func (this *ReportPdfController) UploadPdf() {
+	br := new(models.BaseResponse).Init()
+	defer func() {
+		this.Data["json"] = br
+		this.ServeJSON()
+	}()
+
+	f, h, err := this.GetFile("File")
+	if err != nil {
+		br.Msg = "获取资源信息失败"
+		br.ErrMsg = "获取资源信息失败,Err:" + err.Error()
+		return
+	}
+	defer f.Close()
+
 	ext := path.Ext(h.Filename)
 	dateDir := time.Now().Format("20060102")
 	uploadDir := utils.STATIC_DIR + "hongze/" + dateDir
@@ -92,7 +146,6 @@ func (this *ReportPdfController) Add() {
 	randStr := utils.GetRandStringNoSpecialChar(28)
 	fileName := randStr + ext
 	fpath := uploadDir + "/" + fileName
-	defer f.Close() //关闭上传文件
 	err = this.SaveToFile("file", fpath)
 	if err != nil {
 		br.Msg = "文件上传失败"
@@ -121,41 +174,12 @@ func (this *ReportPdfController) Add() {
 		return
 	}
 
-	nameFirst, err := models.GetClassifyById(classifyIdFirst)
-	if err != nil {
-		br.Msg = "文件上传失败"
-		br.ErrMsg = "一级类名获取失败,Err:" + err.Error()
-		return
-	}
-	nameSecond, err := models.GetClassifyById(classifyIdSecond)
-	if err != nil {
-		br.Msg = "文件上传失败"
-		br.ErrMsg = "二级类名获取失败,Err:" + err.Error()
-		return
-	}
-
-	pdf := &models.ReportPdf{
-		PdfUrl:             pdfUrl,
-		Title:              title,
-		Author:             author,
-		Abstract:           abstract,
-		ClassifyIdFirst:    classifyIdFirst,
-		ClassifyNameFirst:  nameFirst.ClassifyName,
-		ClassifyIdSecond:   classifyIdSecond,
-		ClassifyNameSecond: nameSecond.ClassifyName,
-		PublishTime:        time.Now(),
-		ModifyTime:         time.Now(),
-		SysUserId:          this.SysUser.SysUserId,
-		SysRealName:        this.SysUser.SysRealName,
-		State:              utils.ReportStatusUp,
-	}
-	err = pdf.Add()
-	if err != nil {
-		br.Msg = "文件上传失败"
-		br.ErrMsg = "pdf研报新增失败,Err:" + err.Error()
-		return
-	}
+	base := path.Base(h.Filename)
+	resp := new(response.ReportPdfUploadResp)
+	resp.Url = pdfUrl
+	resp.FileName = base[:len(base)-len(ext)]
 
+	br.Data = resp
 	br.Msg = "上传成功"
 	br.Ret = 200
 	br.Success = true
@@ -319,3 +343,235 @@ func (this *ReportPdfController) List() {
 	br.Data = resp
 	br.Msg = "获取成功"
 }
+
+// Edit
+// @Title 编辑研报
+// @Description 编辑研报
+// @Param   ReportPdfId   query   string  true       "pdf研报id"
+// @Param   PdfUrl   query   file  true       "文件URL"
+// @Param   Title   query   string  true       "标题"
+// @Param   Author   query   string  true       "作者名称"
+// @Param   Abstract   query   string  true       "摘要"
+// @Param   ClassifyIdFirst   query   int  true       "一级分类id"
+// @Param   ClassifyIdSecond   query   int  true       "二级分类id"
+// @Success 200 {object} models.ReportAuthorResp
+// @router /edit [post]
+func (this *ReportPdfController) Edit() {
+	br := new(models.BaseResponse).Init()
+	defer func() {
+		this.Data["json"] = br
+		this.ServeJSON()
+	}()
+	pdfUrl := this.GetString("PdfUrl")
+	author := this.GetString("Author")
+	ReportPdfId, _ := this.GetInt("ReportPdfId")
+	abstract := this.GetString("Abstract")
+	classifyIdFirst, _ := this.GetInt("ClassifyIdFirst")
+	classifyIdSecond, _ := this.GetInt("ClassifyIdSecond")
+	title := this.GetString("Title")
+	if classifyIdFirst <= 0 {
+		br.Msg = "请选择研报所属的一级分类"
+		return
+	}
+	if classifyIdSecond <= 0 {
+		br.Msg = "请选择研报所属的二级分类"
+		return
+	}
+	if pdfUrl == "" {
+		br.Msg = "请上传研报文件"
+		return
+	}
+	reportPdf, err := models.GetReportPdfById(ReportPdfId)
+	if err != nil {
+		if err.Error() == utils.ErrNoRow() {
+			br.Msg = "研报不存在或已删除,请刷新页面"
+			return
+		}
+		br.Msg = "获取研报失败"
+		br.ErrMsg = "获取研报失败,系统错误,Err:" + err.Error()
+		return
+	}
+
+	nameFirst, err := models.GetClassifyById(classifyIdFirst)
+	if err != nil {
+		br.Msg = "文件上传失败"
+		br.ErrMsg = "一级类名获取失败,Err:" + err.Error()
+		return
+	}
+	nameSecond, err := models.GetClassifyById(classifyIdSecond)
+	if err != nil {
+		br.Msg = "文件上传失败"
+		br.ErrMsg = "二级类名获取失败,Err:" + err.Error()
+		return
+	}
+	if reportPdf.Title != title || reportPdf.ClassifyIdFirst != classifyIdFirst || reportPdf.ClassifyIdSecond != classifyIdSecond || reportPdf.Author != author || reportPdf.Abstract != abstract || reportPdf.PdfUrl != pdfUrl {
+		reportPdf.Title = title
+		reportPdf.ClassifyIdFirst = classifyIdFirst
+		reportPdf.ClassifyIdSecond = classifyIdSecond
+		reportPdf.ClassifyNameFirst = nameFirst.ClassifyName
+		reportPdf.ClassifyNameSecond = nameSecond.ClassifyName
+		reportPdf.Author = author
+		reportPdf.Abstract = abstract
+		reportPdf.PdfUrl = pdfUrl
+		reportPdf.ModifyTime = time.Now()
+		err = reportPdf.Update([]string{"title", "classify_id_first", "classify_id_second", "classify_name_first", "classify_name_second", "author", "abstract", "pdf_url", "modify_time"})
+		if err != nil {
+			br.Msg = "文件上传失败"
+			br.ErrMsg = "文件上传失败,Err:" + err.Error()
+			return
+		}
+	}
+	br.Msg = "研报编辑成功"
+	br.Ret = 200
+	br.Success = true
+}
+
+// Publish
+// @Title 发布研报
+// @Description 发布研报
+// @Param   ReportPdfId   query   string  true       "pdf研报id"
+// @Success 200 {object} models.BaseResponse
+// @router /publish [get]
+func (this *ReportPdfController) Publish() {
+	br := new(models.BaseResponse).Init()
+	defer func() {
+		this.Data["json"] = br
+		this.ServeJSON()
+	}()
+	ReportPdfId, _ := this.GetInt("ReportPdfId")
+	reportPdf, err := models.GetReportPdfById(ReportPdfId)
+	if err != nil {
+		if err.Error() == utils.ErrNoRow() {
+			br.Msg = "研报不存在或已删除,请刷新页面"
+			return
+		}
+		br.Msg = "获取研报失败"
+		br.ErrMsg = "获取研报失败,系统错误,Err:" + err.Error()
+		return
+	}
+	if reportPdf.State == utils.ReportStatusUp {
+		br.Msg = "研报已发布"
+		return
+	}
+	reportPdf.State = utils.ReportStatusUp
+	reportPdf.PublishTime = time.Now()
+	err = reportPdf.Update([]string{"status", "publish_time"})
+	if err != nil {
+		br.Msg = "发布研报失败"
+		br.ErrMsg = "发布研报失败,系统错误,Err:" + err.Error()
+		return
+	}
+	br.Msg = "发布研报成功"
+	br.Ret = 200
+	br.Success = true
+}
+
+// PublishCancel
+// @Title 取消发布研报
+// @Description 取消发布研报
+// @Param   ReportPdfId   query   string  true       "pdf研报id"
+// @Success 200 {object} models.BaseResponse
+// @router /publishCancel [get]
+func (this *ReportPdfController) PublishCancel() {
+	br := new(models.BaseResponse).Init()
+	defer func() {
+		this.Data["json"] = br
+		this.ServeJSON()
+	}()
+	ReportPdfId, _ := this.GetInt("ReportPdfId")
+	reportPdf, err := models.GetReportPdfById(ReportPdfId)
+	if err != nil {
+		if err.Error() == utils.ErrNoRow() {
+			br.Msg = "研报不存在或已删除,请刷新页面"
+			return
+		}
+		br.Msg = "获取研报失败"
+		br.ErrMsg = "获取研报失败,系统错误,Err:" + err.Error()
+		return
+	}
+	if reportPdf.State == utils.ReportStatusDown {
+		br.Msg = "研报已撤销"
+		return
+	}
+	reportPdf.State = utils.ReportStatusDown
+	err = reportPdf.Update([]string{"status"})
+	if err != nil {
+		br.Msg = "发布研报失败"
+		br.ErrMsg = "发布研报失败,系统错误,Err:" + err.Error()
+		return
+	}
+	br.Msg = "撤销研报成功"
+	br.Ret = 200
+	br.Success = true
+}
+
+// delete
+// @Title 删除研报
+// @Description 删除研报
+// @Param   ReportPdfId   query   string  true       "pdf研报id"
+// @Success 200 {object} models.BaseResponse
+// @router /delete [get]
+func (this *ReportPdfController) Delete() {
+	br := new(models.BaseResponse).Init()
+	defer func() {
+		this.Data["json"] = br
+		this.ServeJSON()
+	}()
+	ReportPdfId, _ := this.GetInt("ReportPdfId")
+	reportPdf, err := models.GetReportPdfById(ReportPdfId)
+	if err != nil {
+		if err.Error() == utils.ErrNoRow() {
+			br.Msg = "研报不存在或已删除,请刷新页面"
+			return
+		}
+		br.Msg = "获取研报失败"
+		br.ErrMsg = "获取研报失败,系统错误,Err:" + err.Error()
+		return
+	}
+	if reportPdf.State == utils.ReportStatusUp {
+		br.Msg = "研报已发布,不可以删除"
+		return
+	}
+
+	reportPdf.State = utils.ReportStatusDown
+	err = reportPdf.Delete()
+	if err != nil {
+		br.Msg = "研报删除失败"
+		br.ErrMsg = "研报删除失败,系统错误,Err:" + err.Error()
+		return
+	}
+
+	br.Msg = "删除研报成功"
+	br.Ret = 200
+	br.Success = true
+}
+
+// Detail
+// @Title 研报详情
+// @Description 研报详情
+// @Param   ReportPdfId   query   string  true       "pdf研报id"
+// @Success 200 {object} models.BaseResponse
+// @router /detail [get]
+func (this *ReportPdfController) Detail() {
+	br := new(models.BaseResponse).Init()
+	defer func() {
+		this.Data["json"] = br
+		this.ServeJSON()
+	}()
+	ReportPdfId, _ := this.GetInt("ReportPdfId")
+	reportPdf, err := models.GetReportPdfById(ReportPdfId)
+	if err != nil {
+		if err.Error() == utils.ErrNoRow() {
+			br.Msg = "研报不存在或已删除,请刷新页面"
+			return
+		}
+		br.Msg = "获取研报失败"
+		br.ErrMsg = "获取研报失败,系统错误,Err:" + err.Error()
+		return
+	}
+
+	br.Data = reportPdf
+	br.Ret = 200
+	br.Success = true
+	br.Msg = "获取研报成功"
+}

+ 19 - 0
models/report_pdf.go

@@ -38,6 +38,18 @@ func (r *ReportPdf) Add() (err error) {
 	return
 }
 
+func (r *ReportPdf) Update(cols []string) (err error) {
+	o := orm.NewOrm()
+	_, err = o.Update(r, cols...)
+	return
+}
+
+func (r *ReportPdf) Delete() (err error) {
+	o := orm.NewOrm()
+	_, err = o.Delete(r)
+	return
+}
+
 func GetReportPdfCountByCondition(condition string, pars []interface{}) (count int, err error) {
 	o := orm.NewOrm()
 	sql := `SELECT COUNT(*) AS count FROM report_pdf WHERE 1=1 `
@@ -61,3 +73,10 @@ func GetReportPdfByCondition(condition, sortCondition string, pars []interface{}
 	_, err = o.Raw(sql, pars, startPage, pageSize).QueryRows(&items)
 	return
 }
+
+func GetReportPdfById(id int) (item *ReportPdf, err error) {
+	o := orm.NewOrm()
+	sql := `SELECT * FROM report_pdf WHERE report_pdf_id=?`
+	err = o.Raw(sql, id).QueryRow(&item)
+	return
+}

+ 5 - 0
models/response/report_pdf.go

@@ -10,3 +10,8 @@ type ReportPdfListResp struct {
 	List   []*models.ReportPdf
 	Paging *paging.PagingItem `description:"分页数据"`
 }
+
+type ReportPdfUploadResp struct {
+	Url      string `description:"pdf文件URL"`
+	FileName string `description:"pdf文件名称"`
+}

+ 81 - 0
routers/commentsRouter.go

@@ -25,6 +25,87 @@ func init() {
             Filters: nil,
             Params: nil})
 
+    beego.GlobalControllerRouter["eta/eta_mini_crm/controllers:ReportPdfController"] = append(beego.GlobalControllerRouter["eta/eta_mini_crm/controllers:ReportPdfController"],
+        beego.ControllerComments{
+            Method: "Add",
+            Router: `/add`,
+            AllowHTTPMethods: []string{"post"},
+            MethodParams: param.Make(),
+            Filters: nil,
+            Params: nil})
+
+    beego.GlobalControllerRouter["eta/eta_mini_crm/controllers:ReportPdfController"] = append(beego.GlobalControllerRouter["eta/eta_mini_crm/controllers:ReportPdfController"],
+        beego.ControllerComments{
+            Method: "Author",
+            Router: `/author`,
+            AllowHTTPMethods: []string{"get"},
+            MethodParams: param.Make(),
+            Filters: nil,
+            Params: nil})
+
+    beego.GlobalControllerRouter["eta/eta_mini_crm/controllers:ReportPdfController"] = append(beego.GlobalControllerRouter["eta/eta_mini_crm/controllers:ReportPdfController"],
+        beego.ControllerComments{
+            Method: "Delete",
+            Router: `/delete`,
+            AllowHTTPMethods: []string{"get"},
+            MethodParams: param.Make(),
+            Filters: nil,
+            Params: nil})
+
+    beego.GlobalControllerRouter["eta/eta_mini_crm/controllers:ReportPdfController"] = append(beego.GlobalControllerRouter["eta/eta_mini_crm/controllers:ReportPdfController"],
+        beego.ControllerComments{
+            Method: "Detail",
+            Router: `/detail`,
+            AllowHTTPMethods: []string{"get"},
+            MethodParams: param.Make(),
+            Filters: nil,
+            Params: nil})
+
+    beego.GlobalControllerRouter["eta/eta_mini_crm/controllers:ReportPdfController"] = append(beego.GlobalControllerRouter["eta/eta_mini_crm/controllers:ReportPdfController"],
+        beego.ControllerComments{
+            Method: "Edit",
+            Router: `/edit`,
+            AllowHTTPMethods: []string{"post"},
+            MethodParams: param.Make(),
+            Filters: nil,
+            Params: nil})
+
+    beego.GlobalControllerRouter["eta/eta_mini_crm/controllers:ReportPdfController"] = append(beego.GlobalControllerRouter["eta/eta_mini_crm/controllers:ReportPdfController"],
+        beego.ControllerComments{
+            Method: "List",
+            Router: `/list`,
+            AllowHTTPMethods: []string{"get"},
+            MethodParams: param.Make(),
+            Filters: nil,
+            Params: nil})
+
+    beego.GlobalControllerRouter["eta/eta_mini_crm/controllers:ReportPdfController"] = append(beego.GlobalControllerRouter["eta/eta_mini_crm/controllers:ReportPdfController"],
+        beego.ControllerComments{
+            Method: "Publish",
+            Router: `/publish`,
+            AllowHTTPMethods: []string{"get"},
+            MethodParams: param.Make(),
+            Filters: nil,
+            Params: nil})
+
+    beego.GlobalControllerRouter["eta/eta_mini_crm/controllers:ReportPdfController"] = append(beego.GlobalControllerRouter["eta/eta_mini_crm/controllers:ReportPdfController"],
+        beego.ControllerComments{
+            Method: "PublishCancel",
+            Router: `/publishCancel`,
+            AllowHTTPMethods: []string{"get"},
+            MethodParams: param.Make(),
+            Filters: nil,
+            Params: nil})
+
+    beego.GlobalControllerRouter["eta/eta_mini_crm/controllers:ReportPdfController"] = append(beego.GlobalControllerRouter["eta/eta_mini_crm/controllers:ReportPdfController"],
+        beego.ControllerComments{
+            Method: "UploadPdf",
+            Router: `/uploadPdf`,
+            AllowHTTPMethods: []string{"post"},
+            MethodParams: param.Make(),
+            Filters: nil,
+            Params: nil})
+
     beego.GlobalControllerRouter["eta/eta_mini_crm/controllers:SellerController"] = append(beego.GlobalControllerRouter["eta/eta_mini_crm/controllers:SellerController"],
         beego.ControllerComments{
             Method: "List",

+ 5 - 3
scheduler/task.go

@@ -53,9 +53,11 @@ func ModifyUserStatus(ctx context.Context) (err error) {
 		record.CreateTime = time.Now()
 		userRecordList = append(userRecordList, record)
 	}
-	err = models.UserChangeRecordMultiInsert(userRecordList)
-	if err != nil {
-		return
+	if len(userRecordList) > 0 {
+		err = models.UserChangeRecordMultiInsert(userRecordList)
+		if err != nil {
+			return
+		}
 	}
 	return
 }