Pārlūkot izejas kodu

首页列表,我的收藏

xingzai 2 gadi atpakaļ
vecāks
revīzija
b98a2ad951
9 mainītis faili ar 558 papildinājumiem un 3 dzēšanām
  1. 85 0
      controllers/chart.go
  2. 205 0
      controllers/home.go
  3. 1 0
      go.mod
  4. 2 1
      go.sum
  5. 95 1
      models/chart.go
  6. 7 0
      models/home.go
  7. 27 0
      routers/commentsRouter_controllers.go
  8. 6 0
      routers/router.go
  9. 130 1
      services/chart.go

+ 85 - 0
controllers/chart.go

@@ -0,0 +1,85 @@
+package controllers
+
+import (
+	"github.com/rdlucklib/rdluck_tools/paging"
+	"hongze/hongze_cygx/models"
+	"hongze/hongze_cygx/services"
+	"hongze/hongze_cygx/utils"
+)
+
+type ChartController struct {
+	BaseAuthController
+}
+
+type BaseChartController struct {
+	BaseCommonController
+}
+
+// @Title 图表标签分类
+// @Description 图表标签分类接口
+// @Success 200 {object} models.ChartPtagResp
+// @router /patg [get]
+func (this *BaseChartController) Patg() {
+	br := new(models.BaseResponse).Init()
+	defer func() {
+		this.Data["json"] = br
+		this.ServeJSON()
+	}()
+	list, err := services.GetChartPtagByApi()
+	if err != nil {
+		br.Msg = "获取图表分类失败!"
+		br.ErrMsg = "获取图表分类失败"
+		return
+	}
+	br.Ret = 200
+	br.Success = true
+	br.Msg = "获取成功"
+	br.Data = list
+}
+
+// @Title 我的收藏
+// @Description 我的收藏接口
+// @Param   PageSize   query   int  true       "每页数据条数"
+// @Param   CurrentIndex   query   int  true       "当前页页码,从1开始"
+// @Success 200 {object} models.HomeChartListItem
+// @router /my/collection [get]
+func (this *ChartController) Collection() {
+	br := new(models.BaseResponse).Init()
+	defer func() {
+		this.Data["json"] = br
+		this.ServeJSON()
+	}()
+	user := this.User
+	if user == nil {
+		br.Msg = "请重新登录"
+		br.Ret = 408
+		return
+	}
+	mobile := user.Mobile
+	if mobile == "" {
+		br.Msg = "请绑定手机号!"
+		return
+	}
+	pageSize, _ := this.GetInt("PageSize")
+	currentIndex, _ := this.GetInt("CurrentIndex")
+	if pageSize <= 0 {
+		pageSize = utils.PageSize20
+	}
+	if currentIndex <= 0 {
+		currentIndex = 1
+	}
+	list, err := services.GetChartCollectionByApi(mobile)
+	if err != nil {
+		br.Msg = "获取图表分类失败!"
+		br.ErrMsg = "获取图表分类失败"
+		return
+	}
+	page := paging.GetPaging(currentIndex, pageSize, len(list))
+	resp := new(models.HomeChartListItem)
+	resp.List = list
+	resp.Paging = page
+	br.Ret = 200
+	br.Success = true
+	br.Msg = "获取成功"
+	br.Data = resp
+}

+ 205 - 0
controllers/home.go

@@ -313,3 +313,208 @@ func (this *BaseHomeController) ListHomePublic() {
 	br.Msg = "获取成功"
 	br.Data = resp
 }
+
+// @Title 首页列表接口v6版本
+// @Description 首页列表接口v6版本
+// @Param   PageSize   query   int  true       "每页数据条数"
+// @Param   CurrentIndex   query   int  true       "当前页页码,从1开始"
+// @Param   ChartPermissionId   query   int  true       "品类id,最新传0"
+// @Param   CtagId   query   int  true       "图表子类ID"
+// @Param   ListType   query   int  true       "列表类型,1最新,2 纪要 ,3图表 默认1"
+// @Success 200 {object} models.HomeArtAndChartListResp
+// @router /artAndChart/list [get]
+func (this *HomeController) ListHomeArtAndChart() {
+	br := new(models.BaseResponse).Init()
+	defer func() {
+		this.Data["json"] = br
+		this.ServeJSON()
+	}()
+	user := this.User
+	if user == nil {
+		br.Msg = "请登录"
+		br.ErrMsg = "请登录,用户信息为空"
+		br.Ret = 408
+		return
+	}
+	pageSize, _ := this.GetInt("PageSize")
+	currentIndex, _ := this.GetInt("CurrentIndex")
+	chartPermissionId, _ := this.GetInt("ChartPermissionId")
+	ctagId, _ := this.GetInt("CtagId")
+	listType, _ := this.GetInt("ListType")
+
+	var startSize int
+	if pageSize <= 0 {
+		pageSize = utils.PageSize20
+	}
+	if currentIndex <= 0 {
+		currentIndex = 1
+	}
+	if listType <= 0 {
+		listType = 1
+	}
+	startSize = paging.StartIndex(currentIndex, pageSize)
+
+	var condition string
+	var pars []interface{}
+	var total, chartTotal int
+	resp := new(models.HomeArtAndChartListResp)
+	page := paging.GetPaging(currentIndex, pageSize, total)
+	resp.HaveResearch = true
+	var chartList []*models.HomeChartListResp
+	var err error
+	if listType == 1 {
+		if currentIndex <= 2 {
+			chartList, err = models.GetChartList(condition, pars, startSize, pageSize)
+			if err != nil {
+				br.Msg = "获取信息失败"
+				br.ErrMsg = "获取用户信息失败,Err:" + err.Error()
+				return
+			}
+		}
+	} else if listType == 3 {
+		if chartPermissionId > 0 {
+			condition += ` AND a.ptag_id>=? `
+			pars = append(pars, chartPermissionId)
+		}
+		if ctagId > 0 {
+			condition += ` AND a.ctag_id>=? `
+			pars = append(pars, ctagId)
+		}
+		chartList, err = models.GetChartList(condition, pars, startSize, pageSize)
+		if err != nil {
+			br.Msg = "获取信息失败"
+			br.ErrMsg = "获取用户信息失败,Err:" + err.Error()
+			return
+		}
+		chartTotal, err = models.GetChartCount(condition, pars)
+		if err != nil {
+			br.Msg = "获取信息失败"
+			br.Msg = "获取帖子总数失败,Err:" + err.Error()
+			return
+		}
+	}
+	for k, _ := range chartList {
+		chartList[k].IsNeedJump = true
+	}
+	resp.ChartList = chartList
+
+	if listType != 3 {
+		userType, _, err := services.GetUserType(user.CompanyId)
+		if err != nil {
+			br.Msg = "获取信息失败"
+			br.ErrMsg = "获取用户信息失败,Err:" + err.Error()
+			return
+		}
+		condition = ` AND is_summary = 1  `
+		if chartPermissionId > 0 {
+			categoryId, err := models.GetCategoryId(chartPermissionId)
+			if err != nil && err.Error() != utils.ErrNoRow() {
+				br.Msg = "获取信息失败"
+				br.ErrMsg = "获取分类权限信息失败,Err:" + err.Error()
+				return
+			}
+			categoryinfo, err := models.GetChartPermissionById(chartPermissionId)
+			if err != nil {
+				br.Msg = "获取信息失败"
+				br.ErrMsg = "获取信息失败,Err:" + err.Error()
+				return
+			}
+			if userType == 1 && categoryinfo.PermissionName == "研选" {
+				resp.HaveResearch = false
+				resp.Paging = page
+				br.Ret = 200
+				br.Success = true
+				br.Msg = "获取成功"
+				br.Data = resp
+				return
+			}
+			page = paging.GetPaging(currentIndex, pageSize, total)
+			if categoryId != "" {
+				condition += ` AND category_id IN(` + categoryId + `)`
+				condition += ` OR ( category_name  LIKE '%` + categoryinfo.PermissionName + `%' AND publish_status = 1 AND is_summary = 1 )`
+			} else {
+				condition += ` AND  category_name   LIKE '%` + categoryinfo.PermissionName + `%'`
+			}
+		}
+		//永续客户无法查看研选分类的内容
+		if userType == 1 {
+			condition += ` AND  category_name  NOT LIKE '%研选` + `%'`
+		}
+		total, err = models.GetHomeCount(condition, pars)
+		if err != nil {
+			br.Msg = "获取信息失败"
+			br.Msg = "获取帖子总数失败,Err:" + err.Error()
+			return
+		}
+		if chartTotal > total {
+			total = chartTotal
+		}
+		page = paging.GetPaging(currentIndex, pageSize, total)
+		list, err := models.GetHomeList(condition, pars, startSize, pageSize)
+		if err != nil {
+			br.Msg = "获取信息失败"
+			br.Msg = "获取帖子数据失败,Err:" + err.Error()
+			return
+		}
+		//研选的五张图片
+		detailResearch, err := models.GetConfigByCode("category_research_img_url")
+		if err != nil {
+			br.Msg = "获取数据失败"
+			br.ErrMsg = "获取数据研选分类图片失败,Err:" + err.Error()
+			return
+		}
+		researchList := strings.Split(detailResearch.ConfigValue, "{|}")
+		//对应分类的所图片
+		detailCategoryUrl, err := models.GetConfigByCode("category_map_img_url")
+		if err != nil {
+			br.Msg = "获取数据失败"
+			br.ErrMsg = "行业配置信息失败,Err:" + err.Error()
+			return
+		}
+		categoryUrlList := strings.Split(detailCategoryUrl.ConfigValue, "{|}")
+		mapCategoryUrl := make(map[string]string)
+		var categoryId string
+		var imgUrlChart string
+		for _, v := range categoryUrlList {
+			vslice := strings.Split(v, "_")
+			categoryId = vslice[0]
+			imgUrlChart = vslice[len(vslice)-1]
+			mapCategoryUrl[categoryId] = imgUrlChart
+		}
+
+		for k, v := range list {
+			item := list[k]
+			//如果文章一开始的内容是图片,优先展示第一张图片
+			imgurl, _ := services.FixArticleImgUrl(html.UnescapeString(list[k].Body))
+			newBody, _ := services.GetReportContentTextSub(item.Body)
+			list[k].Body = newBody
+			if imgurl != "" {
+				list[k].BodyHtml = imgurl
+			}
+			list[k].PublishDate = utils.StrTimeToTime(item.PublishDate).Format(utils.FormatDateTimeNoSecond) //时间字符串格式转时间格式
+			if strings.Contains(item.CategoryName, "研选") {
+				list[k].IsResearch = true
+			}
+			if item.Pv > 999 {
+				list[k].Pv = 999
+			}
+			//如果是研选系列的任意取五张图片的中的一张
+			if v.CategoryId == "0" {
+				knum := v.ArticleId % 5
+				list[k].ImgUrlPc = researchList[knum]
+			} else {
+				list[k].ImgUrlPc = mapCategoryUrl[v.CategoryId]
+			}
+			if list[k].ArticleId < utils.SummaryArticleId {
+				list[k].HttpUrl = utils.StrategyPlatform + strconv.Itoa(v.ArticleId)
+				list[k].IsNeedJump = true
+			}
+		}
+		resp.List = list
+	}
+	resp.Paging = page
+	br.Ret = 200
+	br.Success = true
+	br.Msg = "获取成功"
+	br.Data = resp
+}

+ 1 - 0
go.mod

@@ -16,5 +16,6 @@ require (
 	github.com/rdlucklib/rdluck_tools v1.0.3
 	github.com/satori/go.uuid v1.2.0 // indirect
 	github.com/tealeg/xlsx v1.0.5
+	golang.org/x/time v0.0.0-20220411224347-583f2d630306 // indirect
 	gopkg.in/gomail.v2 v2.0.0-20160411212932-81ebce5c23df
 )

+ 2 - 1
go.sum

@@ -537,8 +537,9 @@ golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
 golang.org/x/text v0.3.7 h1:olpwvP2KacW1ZWvsR7uQhoyTYvKAupfQrRGBFM352Gk=
 golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ=
 golang.org/x/time v0.0.0-20180412165947-fbb02b2291d2/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
-golang.org/x/time v0.0.0-20191024005414-555d28b269f0 h1:/5xXl8Y5W96D+TtHSlonuFqGHIWVuyCkGJLwGh9JJFs=
 golang.org/x/time v0.0.0-20191024005414-555d28b269f0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
+golang.org/x/time v0.0.0-20220411224347-583f2d630306 h1:+gHMid33q6pen7kv9xvT+JRinntgeXO2AeZVd0AWD3w=
+golang.org/x/time v0.0.0-20220411224347-583f2d630306/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
 golang.org/x/tools v0.0.0-20180221164845-07fd8470d635/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
 golang.org/x/tools v0.0.0-20180828015842-6cd1fcedba52/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
 golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=

+ 95 - 1
models/chart.go

@@ -2,6 +2,7 @@ package models
 
 import (
 	"github.com/beego/beego/v2/client/orm"
+	"github.com/rdlucklib/rdluck_tools/paging"
 	"time"
 )
 
@@ -11,14 +12,28 @@ type ChartResultApi struct {
 	Msg  string               `json:"msg"`
 }
 
+type ChartFavoritesResultApi struct {
+	Data []ChartInfo `json:"data"`
+	Code int         `json:"code"`
+	Msg  string      `json:"msg"`
+}
+
+type ChartInfo struct {
+	ChartInfo *ChartResultApidate `json:"chart_info"`
+	ChartId   int                 `json:"id"`
+}
+
 type ChartResultApidate struct {
 	ChartId       int    `json:"id"`
+	PtagId        int    `json:"ptag_id"`
+	CtagId        int    `json:"ctag_id"`
 	Title         string `json:"title"`
 	TitleEn       string `json:"title_en"`
 	CreateDate    string `json:"create_date"`
 	UpdateDate    string `json:"update_date"`
 	PublishStatus int    `json:"publish_status"`
 	Cover         string `json:"cover"`
+	Iframe        string `json:"iframe"`
 	Ptag          Ptag   `json:"ptag"`
 	Ctag          Ptag   `json:"ctag"`
 }
@@ -33,12 +48,14 @@ type Ctag struct {
 	Id          int    `json:"id"`
 	Name        string `json:"name"`
 	Description string `json:"description"`
-	PtagId      string `json:"ptag_id"`
+	PtagId      int    `json:"ptag_id"`
 }
 
 type CygxChart struct {
 	Id            int       `orm:"column(id);pk"`
 	ChartId       int       `description:"图表id"`
+	PtagId        int       `description:"图表父类分类id"`
+	CtagId        int       `description:"图表子类分类id"`
 	Title         string    `description:"标题"`
 	TitleEn       string    `description:"英文标题 "`
 	CreateDate    string    `description:"本地创建时间"`
@@ -47,6 +64,7 @@ type CygxChart struct {
 	PtagName      string    `description:"父类名称"`
 	CtagName      string    `description:"子类名称"`
 	Cover         string    `description:"图表图片"`
+	Iframe        string    `description:"图表详情跳转地址"`
 }
 
 func GetChartCountById(chartId int) (count int, err error) {
@@ -62,3 +80,79 @@ func AddCygxChart(item *CygxChart) (lastId int64, err error) {
 	lastId, err = o.Insert(item)
 	return
 }
+
+//标签分类
+type ChartPtagResultApi struct {
+	Data []ChartPtagResultApidate `json:"data"`
+	Code int                      `json:"code"`
+	Msg  string                   `json:"msg"`
+}
+
+type ChartPtagResultApidate struct {
+	ChartPermissionId   int    `json:"id"`
+	ChartPermissionName string `json:"name"`
+	Ctag                []Ctag `json:"ctag"`
+}
+
+type ChartPtagResp struct {
+	ChartPermissionId   int         `description:"分类ID"`
+	ChartPermissionName string      `description:"分类名称"`
+	List                []*CtagResp `description:"子分类"`
+}
+
+type CtagResp struct {
+	CtagId int    `description:"子分类ID"`
+	Name   string `description:"子分类名称"`
+}
+
+type ChartUserTokenResult struct {
+	AccessToken string `json:"access_token"`
+}
+
+type ChartUserTokenResultApi struct {
+	Data ChartUserTokenResult `json:"data"`
+	Code int                  `json:"code"`
+	Msg  string               `json:"msg"`
+}
+
+type HomeChartListResp struct {
+	ChartId    int    `description:"图表ID"`
+	Title      string `description:"标题"`
+	TitleEn    string `description:"英文标题 "`
+	CreateDate string `description:"创建时间"`
+	PtagName   string `description:"父类名称"`
+	CtagName   string `description:"子类名称"`
+	ImgUrlPc   string `orm:"column(cover)";description:"图片链接"`
+	HttpUrl    string `orm:"column(iframe)";description:"文章链接跳转地址"`
+	IsNeedJump bool   `description:"是否需要跳转链接地址"`
+}
+
+type HomeChartListItem struct {
+	Paging *paging.PagingItem
+	List   []*HomeChartListResp `description:"图表列表"`
+}
+
+//获取图表列表
+func GetChartList(condition string, pars []interface{}, startSize, pageSize int) (items []*HomeChartListResp, err error) {
+	o := orm.NewOrm()
+	sql := ` SELECT * FROM cygx_chart AS a WHERE a.publish_status=1 `
+	if condition != "" {
+		sql += condition
+	}
+	sql += ` ORDER BY create_date DESC LIMIT ?,? `
+	_, err = o.Raw(sql, pars, startSize, pageSize).QueryRows(&items)
+	return
+}
+
+//获取图表数量
+func GetChartCount(condition string, pars []interface{}) (count int, err error) {
+	o := orm.NewOrm()
+	sql := `SELECT COUNT(1) AS count
+                FROM cygx_chart AS a
+                WHERE a.publish_status=1 `
+	if condition != "" {
+		sql += condition
+	}
+	err = o.Raw(sql, pars).QueryRow(&count)
+	return
+}

+ 7 - 0
models/home.go

@@ -35,3 +35,10 @@ type HomeListResp struct {
 	Paging       *paging.PagingItem
 	List         []*HomeArticle
 }
+
+type HomeArtAndChartListResp struct {
+	HaveResearch bool `description:"是否有研选权限"`
+	Paging       *paging.PagingItem
+	List         []*HomeArticle       `description:"文章列表"`
+	ChartList    []*HomeChartListResp `description:"图表列表"`
+}

+ 27 - 0
routers/commentsRouter_controllers.go

@@ -304,6 +304,15 @@ func init() {
             Filters: nil,
             Params: nil})
 
+    beego.GlobalControllerRouter["hongze/hongze_cygx/controllers:BaseChartController"] = append(beego.GlobalControllerRouter["hongze/hongze_cygx/controllers:BaseChartController"],
+        beego.ControllerComments{
+            Method: "Patg",
+            Router: "/patg",
+            AllowHTTPMethods: []string{"get"},
+            MethodParams: param.Make(),
+            Filters: nil,
+            Params: nil})
+
     beego.GlobalControllerRouter["hongze/hongze_cygx/controllers:BaseConfigController"] = append(beego.GlobalControllerRouter["hongze/hongze_cygx/controllers:BaseConfigController"],
         beego.ControllerComments{
             Method: "HotDetail",
@@ -331,6 +340,15 @@ func init() {
             Filters: nil,
             Params: nil})
 
+    beego.GlobalControllerRouter["hongze/hongze_cygx/controllers:ChartController"] = append(beego.GlobalControllerRouter["hongze/hongze_cygx/controllers:ChartController"],
+        beego.ControllerComments{
+            Method: "Collection",
+            Router: "/my/collection",
+            AllowHTTPMethods: []string{"get"},
+            MethodParams: param.Make(),
+            Filters: nil,
+            Params: nil})
+
     beego.GlobalControllerRouter["hongze/hongze_cygx/controllers:ChartPermissionAuthController"] = append(beego.GlobalControllerRouter["hongze/hongze_cygx/controllers:ChartPermissionAuthController"],
         beego.ControllerComments{
             Method: "Detail",
@@ -394,6 +412,15 @@ func init() {
             Filters: nil,
             Params: nil})
 
+    beego.GlobalControllerRouter["hongze/hongze_cygx/controllers:HomeController"] = append(beego.GlobalControllerRouter["hongze/hongze_cygx/controllers:HomeController"],
+        beego.ControllerComments{
+            Method: "ListHomeArtAndChart",
+            Router: "/artAndChart/list",
+            AllowHTTPMethods: []string{"get"},
+            MethodParams: param.Make(),
+            Filters: nil,
+            Params: nil})
+
     beego.GlobalControllerRouter["hongze/hongze_cygx/controllers:HomeController"] = append(beego.GlobalControllerRouter["hongze/hongze_cygx/controllers:HomeController"],
         beego.ControllerComments{
             Method: "ListHome",

+ 6 - 0
routers/router.go

@@ -101,6 +101,12 @@ func init() {
 				&controllers.ResearchController{},
 			),
 		),
+		web.NSNamespace("/chart",
+			web.NSInclude(
+				&controllers.BaseChartController{},
+				&controllers.ChartController{},
+			),
+		),
 	)
 	web.AddNamespace(ns)
 }

+ 130 - 1
services/chart.go

@@ -8,6 +8,8 @@ import (
 	"hongze/hongze_cygx/utils"
 	"io/ioutil"
 	nhttp "net/http"
+	"strconv"
+	"strings"
 	"time"
 )
 
@@ -49,7 +51,7 @@ func GetChartListByApi(cont context.Context) (err error) {
 			go utils.SendEmail(utils.APPNAME+"【"+utils.RunMode+"】"+"失败提醒", "GetArticleListByApi ErrMsg:"+err.Error(), utils.EmailSendToUsers)
 		}
 	}()
-	url := utils.ApiUrl + "charts/mp?take=100&skip=0"
+	url := utils.ApiUrl + "charts/mp?take=4000&skip=0"
 	authorization := utils.ApiAuthorization
 	body, err := PublicGetDate(url, authorization)
 	if err != nil {
@@ -65,6 +67,8 @@ func GetChartListByApi(cont context.Context) (err error) {
 	for _, v := range chartResult.Data {
 		item := new(models.CygxChart)
 		item.ChartId = v.ChartId
+		item.PtagId = v.PtagId
+		item.CtagId = v.CtagId
 		item.Title = v.Title
 		item.TitleEn = v.TitleEn
 		item.CreateDateApi = time.Now()
@@ -73,6 +77,7 @@ func GetChartListByApi(cont context.Context) (err error) {
 		item.PtagName = v.Ptag.Name
 		item.CtagName = v.Ctag.Name
 		item.Cover = v.Cover
+		item.Iframe = v.Iframe
 		count, err := models.GetChartCountById(v.ChartId)
 		if err != nil && err.Error() != utils.ErrNoRow() {
 			fmt.Println("GetChartCountById Err:", err.Error())
@@ -87,12 +92,15 @@ func GetChartListByApi(cont context.Context) (err error) {
 		} else {
 			updateParams := make(map[string]interface{})
 			updateParams["Title"] = v.Title
+			updateParams["PtagId"] = v.PtagId
+			updateParams["CtagId"] = v.CtagId
 			updateParams["TitleEn"] = v.TitleEn
 			updateParams["CreateDate"] = v.CreateDate
 			updateParams["PublishStatus"] = v.PublishStatus
 			updateParams["PtagName"] = v.Ptag.Name
 			updateParams["CtagName"] = v.Ctag.Name
 			updateParams["Cover"] = v.Cover
+			updateParams["Iframe"] = v.Iframe
 			whereParam := map[string]interface{}{"chart_id": v.ChartId}
 			err = models.UpdateByExpr(models.CygxChart{}, whereParam, updateParams)
 		}
@@ -102,3 +110,124 @@ func GetChartListByApi(cont context.Context) (err error) {
 	return
 
 }
+
+//获取图表分类
+func GetChartPtagByApi() (items []*models.ChartPtagResp, err error) {
+	defer func() {
+		if err != nil {
+			fmt.Println("GetChartPtagByApi Err:" + err.Error())
+			go utils.SendEmail(utils.APPNAME+"【"+utils.RunMode+"】"+"失败提醒", "GetChartPtagByApi ErrMsg:"+err.Error(), utils.EmailSendToUsers)
+		}
+	}()
+	url := utils.ApiUrl + "charts/ptag"
+	authorization := utils.ApiAuthorization
+	body, err := PublicGetDate(url, authorization)
+	if err != nil {
+		fmt.Println(err)
+		return
+	}
+	var chartResult models.ChartPtagResultApi
+	err = json.Unmarshal(body, &chartResult)
+	if err != nil {
+		fmt.Println("Getres.pdfResult Err:", err.Error())
+		return
+	}
+	for _, v := range chartResult.Data {
+		item := new(models.ChartPtagResp)
+		item.ChartPermissionName = v.ChartPermissionName
+		item.ChartPermissionId = v.ChartPermissionId
+		if len(v.Ctag) > 0 {
+			for _, v2 := range v.Ctag {
+				itemCtag := new(models.CtagResp)
+				itemCtag.CtagId = v2.Id
+				itemCtag.Name = v2.Name
+				item.List = append(item.List, itemCtag)
+			}
+		}
+		items = append(items, item)
+	}
+	return
+}
+
+//获取用户的Token
+func GetUserTokenByMobile(mobile string) (token string, err error) {
+	url := "https://vmp.hzinsights.com/v2api/auth/login"
+	method := "POST"
+	payload := strings.NewReader(`{
+    "phone_number":"` + mobile + `",
+    "password":"hz123456"
+}`)
+	client := &nhttp.Client{}
+	req, err := nhttp.NewRequest(method, url, payload)
+
+	if err != nil {
+		fmt.Println(err)
+		return
+	}
+	req.Header.Add("Content-Type", "application/json")
+	req.Header.Add("Cookie", "sessionid=naj5j5kl1jjynh7og1rsaxkl1vrsl829")
+
+	res, err := client.Do(req)
+	if err != nil {
+		fmt.Println(err)
+		return
+	}
+	defer res.Body.Close()
+
+	body, err := ioutil.ReadAll(res.Body)
+	if err != nil {
+		fmt.Println(err)
+		return
+	}
+	var chartResult models.ChartUserTokenResultApi
+	err = json.Unmarshal(body, &chartResult)
+	if err != nil {
+		fmt.Println("Getres.pdfResult Err:", err.Error())
+		return
+	}
+	token = chartResult.Data.AccessToken
+	return
+}
+
+//获取图表分类
+func GetChartCollectionByApi(mobile string) (items []*models.HomeChartListResp, err error) {
+	defer func() {
+		if err != nil {
+			fmt.Println("GetChartPtagByApi Err:" + err.Error())
+			go utils.SendEmail(utils.APPNAME+"【"+utils.RunMode+"】"+"失败提醒", "GetChartPtagByApi ErrMsg:"+err.Error(), utils.EmailSendToUsers)
+		}
+	}()
+	url := utils.ApiUrl + "charts/favorites"
+	authorization, err := GetUserTokenByMobile(mobile)
+	if err != nil {
+		fmt.Println(err)
+		return
+	}
+	authorization = "bearer " + authorization
+	body, err := PublicGetDate(url, authorization)
+	if err != nil {
+		fmt.Println(err)
+		return
+	}
+	var chartResult models.ChartFavoritesResultApi
+	err = json.Unmarshal(body, &chartResult)
+	if err != nil {
+		fmt.Println("Getres.pdfResult Err:", err.Error())
+		return
+	}
+	for _, v := range chartResult.Data {
+		fmt.Println(v)
+		item := new(models.HomeChartListResp)
+		item.ChartId = v.ChartId
+		item.Title = v.ChartInfo.Title
+		item.TitleEn = v.ChartInfo.TitleEn
+		item.CreateDate = v.ChartInfo.CreateDate
+		item.PtagName = v.ChartInfo.Ptag.Name
+		item.CtagName = v.ChartInfo.Ctag.Name
+		item.ImgUrlPc = "https://vmp.hzinsights.com/v2/charts/" + strconv.Itoa(v.ChartId)
+		item.HttpUrl = v.ChartInfo.Iframe
+		item.IsNeedJump = true
+		items = append(items, item)
+	}
+	return
+}