Эх сурвалжийг харах

新增报告列表接口和报告分类接口

xiexiaoyuan 2 жил өмнө
parent
commit
3e4f2ff46e

+ 162 - 0
controllers/english_report.go

@@ -2,6 +2,7 @@ package controllers
 
 import (
 	"errors"
+	"github.com/rdlucklib/rdluck_tools/paging"
 	"hongze/hongze_api/models"
 	"hongze/hongze_api/services/alarm_msg"
 	"hongze/hongze_api/utils"
@@ -14,6 +15,10 @@ type EnglishReportShareController struct {
 	BaseCommonController
 }
 
+type EnglishReportController struct {
+	BaseCommonController
+}
+
 // @Title 英文研报-分享详情
 // @Description 英文研报-分享详情
 // @Param   ReportCode   query   string  true	"报告唯一编码"
@@ -103,3 +108,160 @@ func (this *EnglishReportShareController) EnglishReportDetail() {
 	br.Msg = "获取成功"
 	br.Data = resp
 }
+
+// @Title 获取分类列表
+// @Description 获取分类列表
+// @Param   PageSize   query   int  true       "每页数据条数"
+// @Param   CurrentIndex   query   int  true       "当前页页码,从1开始"
+// @Param   KeyWord   query   string  true       "检索关键词"
+// @Param   CompanyType   query   string  false       "产品类型,枚举值:'ficc','权益';不传默认返回全部"
+// @Success 200 {object} models.EnglishClassifyListResp
+// @router /classify [get]
+func (this *EnglishReportController) Classify() {
+	br := new(models.BaseResponse).Init()
+	defer func() {
+		this.Data["json"] = br
+		this.ServeJSON()
+	}()
+
+	parentList, err := models.GetParentEnglishClassify()
+	if err != nil {
+		br.Msg = "获取一级分类失败"
+		br.ErrMsg = "获取一级分类失败,Err:" + err.Error()
+		return
+	}
+	childList, err := models.GetChildEnglishClassify()
+	if err != nil {
+		br.Msg = "获取二级分类失败"
+		br.ErrMsg = "获取二级分类失败,Err:" + err.Error()
+		return
+	}
+	parentMap := make(map[int][]*models.EnglishClassify, 0)
+	for _, v := range childList {
+		parentMap[v.ParentId] = append(parentMap[v.ParentId], v)
+	}
+	list := make([]*models.EnglishClassifyList, 0)
+	for _, v := range parentList {
+		tmp := &models.EnglishClassifyList{
+			Id:            v.Id,
+			ClassifyName:  v.ClassifyName,
+			Sort:          v.Sort,
+			ParentId:      v.ParentId,
+			CreateTime:    v.CreateTime.Format(utils.FormatDateTime),
+			ModifyTime:    v.ModifyTime.Format(utils.FormatDateTime),
+			ClassifyLabel: v.ClassifyLabel,
+			ShowType:      v.ShowType,
+			IsShow:        v.IsShow,
+		}
+		if child, ok := parentMap[v.Id]; ok {
+			tmp.Child = child
+		}
+		list = append(list, tmp)
+	}
+	resp := new(models.EnglishClassifyListResp)
+	resp.List = list
+
+	br.Data = resp
+	br.Ret = 200
+	br.Success = true
+	br.Msg = "获取成功"
+}
+
+// @Title 获取报告列表接口
+// @Description 获取报告列表
+// @Param   PageSize   query   int  true       "每页数据条数"
+// @Param   CurrentIndex   query   int  true       "当前页页码,从1开始"
+// @Param   StartDate   query   string  true       "开始时间"
+// @Param   EndDate   query   string  true       "结束时间"
+// @Param   Frequency   query   string  true       "频度"
+// @Param   ClassifyNameFirst   query   string  true       "一级分类名称"
+// @Param   ClassifyNameSecond   query   string  true       "二级分类名称"
+// @Param   State   query   int  true       "状态"
+// @Param   KeyWord   query   string  true       "搜索关键词"
+// @Param   PublishSort   query   string  true       "desc:降序,asc 升序(预留)"
+// @Param   CompanyType   query   string  false       "产品类型,枚举值:'ficc','权益';不传默认返回全部"
+// @Success 200 {object} models.ReportListResp
+// @router /list [get]
+func (this *EnglishReportController) ListReport() {
+	br := new(models.BaseResponse).Init()
+	defer func() {
+		this.Data["json"] = br
+		this.ServeJSON()
+	}()
+
+	pageSize, _ := this.GetInt("PageSize")
+	currentIndex, _ := this.GetInt("CurrentIndex")
+	classifyNameFirst := this.GetString("ClassifyNameFirst")
+	classifyNameSecond := this.GetString("ClassifyNameSecond")
+
+	var startSize int
+	if pageSize <= 0 {
+		pageSize = utils.PageSize20
+	}
+	if currentIndex <= 0 {
+		currentIndex = 1
+	}
+	startSize = utils.StartIndex(currentIndex, pageSize)
+
+	var condition string
+	var pars []interface{}
+
+	if classifyNameFirst != "" {
+		condition += ` AND classify_name_first = ? `
+		pars = append(pars, classifyNameFirst)
+	}
+
+	if classifyNameSecond != "" {
+		condition += ` AND classify_name_second = ? `
+		pars = append(pars, classifyNameSecond)
+	}
+
+	total, err := models.GetEnglishReportListCount(condition, pars)
+	if err != nil {
+		br.Msg = "获取失败"
+		br.ErrMsg = "获取失败,Err:" + err.Error()
+		return
+	}
+	detailList, err := models.GetEnglishReportList(condition, pars, startSize, pageSize)
+	if err != nil {
+		br.Msg = "获取失败"
+		br.ErrMsg = "获取失败,Err:" + err.Error()
+		return
+	}
+	list := make([]*models.EnglishReportList, 0)
+	for _, v := range detailList {
+		tmp := &models.EnglishReportList{
+			Id:                 v.Id,
+			AddType:            v.AddType,
+			ClassifyIdFirst:    v.ClassifyIdFirst,
+			ClassifyNameFirst:  v.ClassifyNameFirst,
+			ClassifyIdSecond:   v.ClassifyIdSecond,
+			ClassifyNameSecond: v.ClassifyNameSecond,
+			Title:              v.Title,
+			Abstract:           v.Abstract,
+			Author:             v.Author,
+			Frequency:          v.Frequency,
+			CreateTime:         v.CreateTime,
+			ModifyTime:         v.ModifyTime,
+			PublishTime:        v.PublishTime,
+			Stage:              v.Stage,
+			VideoUrl:           v.VideoUrl,
+			VideoName:          v.VideoName,
+			VideoPlaySeconds:   v.VideoPlaySeconds,
+			ReportCode:         v.ReportCode,
+		}
+		if v.State == 2 {
+			tmp.ShareUrl = "https://share.hzinsights.com/reportEn?code=" + v.ReportCode
+		}
+		list = append(list, tmp)
+	}
+	page := paging.GetPaging(currentIndex, pageSize, total)
+	resp := new(models.EnglishReportListResp)
+	resp.Paging = page
+	resp.List = list
+	br.Ret = 200
+	br.Success = true
+	br.Msg = "获取成功"
+	br.Data = resp
+}
+

+ 103 - 1
models/english_report.go

@@ -1,6 +1,10 @@
 package models
 
-import "github.com/beego/beego/v2/client/orm"
+import (
+	"github.com/beego/beego/v2/client/orm"
+	"github.com/rdlucklib/rdluck_tools/paging"
+	"time"
+)
 
 type EnglishReportDetail struct {
 	Id                 int    `orm:"column(id)" description:"报告Id"`
@@ -27,6 +31,7 @@ type EnglishReportDetail struct {
 	ThsMsgIsSend       int    `description:"客户群消息是否已发送,0:否,1:是"`
 	HasChapter         int    `description:"是否有章节 0-否 1-是"`
 	ChapterType        string `description:"章节类型 day-晨报 week-周报"`
+	ReportCode         string    `description:"报告唯一编码"`
 	Overview           string `description:"英文概述部分"`
 }
 
@@ -54,3 +59,100 @@ func UpdateEnglishReportEmailCounts(reportCode string) (err error) {
 	_, err = o.Raw(sql, reportCode).Exec()
 	return
 }
+
+type EnglishClassifyList struct {
+	Id            int       `orm:"column(id);pk"`
+	ClassifyName  string    `description:"分类名称"`
+	Sort          int       `description:"排序"`
+	ParentId      int       `description:"父级分类id"`
+	CreateTime    string    `description:"创建时间"`
+	ModifyTime    string    `description:"修改时间"`
+	ClassifyLabel string    `description:"分类标签"`
+	ShowType      int       `description:"展示类型:1-列表 2-专栏"`
+	IsShow        int       `description:"是否在小程序显示:1-显示 0-隐藏"`
+	Child         []*EnglishClassify
+}
+
+type EnglishClassify struct {
+	Id            int       `orm:"column(id);pk"`
+	ClassifyName  string    `description:"分类名称"`
+	Sort          int       `description:"排序"`
+	ParentId      int       `description:"父级分类id"`
+	CreateTime    time.Time `description:"创建时间"`
+	ModifyTime    time.Time `description:"修改时间"`
+	ClassifyLabel string    `description:"分类标签"`
+	ShowType      int       `description:"展示类型:1-列表 2-专栏"`
+	IsShow        int       `description:"是否在小程序显示:1-显示 0-隐藏"`
+}
+
+
+type EnglishClassifyListResp struct {
+	List   []*EnglishClassifyList
+}
+
+// GetParentEnglishClassify 获取一级分类列表
+func GetParentEnglishClassify() (items []*EnglishClassify, err error) {
+	sql := `SELECT * FROM english_classify WHERE parent_id=0 ORDER BY sort ASC,create_time ASC`
+	o := orm.NewOrmUsingDB("rddp")
+	_, err = o.Raw(sql).QueryRows(&items)
+	return
+}
+
+// GetChildEnglishClassify 获取二级分类列表
+func GetChildEnglishClassify() (items []*EnglishClassify, err error) {
+	sql := `SELECT * FROM english_classify WHERE parent_id>0 ORDER BY sort ASC,create_time ASC`
+	o := orm.NewOrmUsingDB("rddp")
+	_, err = o.Raw(sql).QueryRows(&items)
+	return
+}
+
+
+func GetEnglishReportListCount(condition string, pars []interface{}) (count int, err error) {
+	//产品权限
+	oRddp := orm.NewOrmUsingDB("rddp")
+	sql := `SELECT COUNT(1) AS count  FROM english_report WHERE state=2 `
+	if condition != "" {
+		sql += condition
+	}
+	err = oRddp.Raw(sql, pars).QueryRow(&count)
+	return
+}
+
+type EnglishReportList struct {
+	Id                 int       `description:"报告Id"`
+	AddType            int       `description:"新增方式:1:新增报告,2:继承报告"`
+	ClassifyIdFirst    int       `description:"一级分类id"`
+	ClassifyNameFirst  string    `description:"一级分类名称"`
+	ClassifyIdSecond   int       `description:"二级分类id"`
+	ClassifyNameSecond string    `description:"二级分类名称"`
+	Title              string    `description:"标题"`
+	Abstract           string    `description:"摘要"`
+	Author             string    `description:"作者"`
+	Frequency          string    `description:"频度"`
+	CreateTime         string    `description:"创建时间"`
+	ModifyTime         string    `description:"修改时间"`
+	PublishTime        string    `description:"发布时间"`
+	Stage              int       `description:"期数"`
+	VideoUrl           string    `description:"音频文件URL"`
+	VideoName          string    `description:"音频文件名称"`
+	VideoPlaySeconds   string    `description:"音频播放时长"`
+	ReportCode         string    `description:"报告唯一编码"`
+	ShareUrl           string    `description:"分享url"`
+}
+
+type EnglishReportListResp struct {
+	List   []*EnglishReportList
+	Paging *paging.PagingItem `description:"分页数据"`
+}
+
+func GetEnglishReportList(condition string, pars []interface{}, startSize, pageSize int) (items []*EnglishReportDetail, err error) {
+	o := orm.NewOrmUsingDB("rddp")
+	sql := `SELECT * 
+        FROM english_report WHERE state=2  `
+	if condition != "" {
+		sql += condition
+	}
+	sql += `ORDER BY  publish_time DESC, id DESC LIMIT ?,?`
+	_, err = o.Raw(sql, pars, startSize, pageSize).QueryRows(&items)
+	return
+}

+ 18 - 0
routers/commentsRouter.go

@@ -43,6 +43,24 @@ func init() {
             Filters: nil,
             Params: nil})
 
+    beego.GlobalControllerRouter["hongze/hongze_api/controllers:EnglishReportController"] = append(beego.GlobalControllerRouter["hongze/hongze_api/controllers:EnglishReportController"],
+        beego.ControllerComments{
+            Method: "Classify",
+            Router: `/classify`,
+            AllowHTTPMethods: []string{"get"},
+            MethodParams: param.Make(),
+            Filters: nil,
+            Params: nil})
+
+    beego.GlobalControllerRouter["hongze/hongze_api/controllers:EnglishReportController"] = append(beego.GlobalControllerRouter["hongze/hongze_api/controllers:EnglishReportController"],
+        beego.ControllerComments{
+            Method: "ListReport",
+            Router: `/list`,
+            AllowHTTPMethods: []string{"get"},
+            MethodParams: param.Make(),
+            Filters: nil,
+            Params: nil})
+
     beego.GlobalControllerRouter["hongze/hongze_api/controllers:EnglishReportShareController"] = append(beego.GlobalControllerRouter["hongze/hongze_api/controllers:EnglishReportShareController"],
         beego.ControllerComments{
             Method: "EnglishReportDetail",

+ 1 - 0
routers/router.go

@@ -93,6 +93,7 @@ func init() {
 		web.NSNamespace("/english_report",
 			web.NSInclude(
 				&controllers.EnglishReportShareController{},
+				&controllers.EnglishReportController{},
 			),
 		),
 	)