Pārlūkot izejas kodu

add: 添加图表和研报模块功能

zqbao 9 mēneši atpakaļ
vecāks
revīzija
acd69d2082

+ 1 - 5
controllers/base_auth.go

@@ -5,7 +5,6 @@ import (
 	"eta/eta_mini_api/models"
 	"eta/eta_mini_api/utils"
 	"net/http"
-	"strings"
 
 	"github.com/beego/beego/v2/client/orm"
 	"github.com/beego/beego/v2/server/web"
@@ -27,10 +26,7 @@ func (c *BaseAuthController) Prepare() {
 				c.StopRun()
 				return
 			}
-			tokenStr := authorization
-			tokenArr := strings.Split(tokenStr, "=")
-			token := tokenArr[1]
-
+			token := authorization
 			user, err := models.GetUserByToken(token)
 			if err != nil {
 				if err == orm.ErrNoRows {

+ 87 - 0
controllers/chart.go

@@ -0,0 +1,87 @@
+package controllers
+
+import (
+	"eta/eta_mini_api/models"
+	"eta/eta_mini_api/models/response"
+	"eta/eta_mini_api/services"
+)
+
+type ChartController struct {
+	BaseAuthController
+}
+
+// @Title List
+// @Description create users
+// @Param   PageSize   query   int  true       "每页数据条数"
+// @Param   CurrentIndex   query   int  true       "当前页页码,从1开始"
+// @Success 200 {object} models.BaseResponse
+// @Failure 403 {object} models.BaseResponse
+// @router /list [get]
+func (this *ChartController) List() {
+	br := new(models.BaseResponse).Init()
+	defer func() {
+		this.Data["json"] = br
+		this.ServeJSON()
+	}()
+
+	pageSize, _ := this.GetInt("PageSize")
+	currentIndex, _ := this.GetInt("CurrentIndex")
+
+	result, err := services.GetChartList(pageSize, currentIndex)
+	if err != nil {
+		br.Msg = "查询图表失败"
+		br.ErrMsg = "查询图表失败,系统异常,Err:" + err.Error()
+		return
+	}
+	if result.Ret != 200 {
+		br.Msg = "查询图表失败"
+		br.ErrMsg = result.ErrMsg
+		return
+	}
+	resp := new(response.ChartListResp)
+	resp.List = result.Data.List
+	resp.Paging = result.Data.Paging
+
+	br.Msg = "查询图表成功"
+	br.Data = result.Data
+	br.Success = true
+	br.Ret = 200
+}
+
+// @Title List
+// @Description create users
+// @Param   PageSize   query   int  true       "每页数据条数"
+// @Param   CurrentIndex   query   int  true       "当前页页码,从1开始"
+// @Success 200 {object} models.BaseResponse
+// @Failure 403 {object} models.BaseResponse
+// @router /my/list [get]
+func (this *ChartController) MyList() {
+	br := new(models.BaseResponse).Init()
+	defer func() {
+		this.Data["json"] = br
+		this.ServeJSON()
+	}()
+
+	pageSize, _ := this.GetInt("PageSize")
+	currentIndex, _ := this.GetInt("CurrentIndex")
+
+	result, err := services.GetChartList(pageSize, currentIndex)
+	if err != nil {
+		br.Msg = "查询图表失败"
+		br.ErrMsg = "查询图表失败,系统异常,Err:" + err.Error()
+		return
+	}
+	if result.Ret != 200 {
+		br.Msg = "查询图表失败"
+		br.ErrMsg = result.ErrMsg
+		return
+	}
+	resp := new(response.ChartListResp)
+	resp.List = result.Data.List
+	resp.Paging = result.Data.Paging
+
+	br.Msg = "查询图表成功"
+	br.Data = result.Data
+	br.Success = true
+	br.Ret = 200
+}

+ 9 - 4
controllers/report.go

@@ -25,8 +25,9 @@ func (this *ReportController) Detail() {
 		br.Msg = "报告不存在"
 		return
 	}
+	user := this.User
 
-	result, err := services.GetReportDetail(reportId)
+	result, err := services.GetReportDetail(reportId, user.UserId)
 	if err != nil {
 		br.Msg = "查询报告详情失败"
 		br.ErrMsg = "查询报告失败,系统异常,Err:" + err.Error()
@@ -47,11 +48,11 @@ func (this *ReportController) Detail() {
 
 // @Title 研报列表
 // @Description 研报列表
-// @Param   ReportId   query   int  true       "报告id"
-// @Param   chartPermissionId   query   int  true       "品种ID"
+// @Param   ChartPermissionId   query   int  true       "品种ID"
 // @Param   Level   query   int  true       "品种层级"
 // @Param   PageSize   query   int  true       "每页数据条数"
 // @Param   CurrentIndex   query   int  true       "当前页页码,从1开始"
+// @Param   RangeType   query   string  true       "范围类型,1-一天内,2-一周内,3-半年内"
 // @Success 200 {object} models.ReportDetailResp
 // @router /list [get]
 func (this *ReportController) List() {
@@ -65,7 +66,8 @@ func (this *ReportController) List() {
 	currentIndex, _ := this.GetInt("CurrentIndex")
 	chartPermissionId, _ := this.GetInt("ChartPermissionId")
 	level, _ := this.GetInt("Level")
-	reports, err := services.GetReportList(chartPermissionId, level, currentIndex, pageSize)
+	rangeType, _ := this.GetInt("RangeType")
+	reports, err := services.GetReportList(chartPermissionId, level, rangeType, currentIndex, pageSize)
 	if err != nil {
 		br.Msg = "研报列表查询失败"
 		br.ErrMsg = "研报列表查询失败,系统异常,Err:" + err.Error()
@@ -100,6 +102,9 @@ func (this *ReportController) DailyList() {
 
 	pageSize, _ := this.GetInt("PageSize")
 	currentIndex, _ := this.GetInt("CurrentIndex")
+	if pageSize <= 0 {
+		pageSize = 3
+	}
 
 	reports, err := services.GetReportDailyList(currentIndex, pageSize)
 	if err != nil {

+ 0 - 1
models/db.go

@@ -28,7 +28,6 @@ func init() {
 
 	// register model
 	orm.RegisterModel(
-		new(WxSession),
 		new(MsgCode),
 		new(User),
 		new(WxToken),

+ 12 - 0
models/response/chart.go

@@ -0,0 +1,12 @@
+package response
+
+import (
+	"eta/eta_mini_api/services"
+
+	"github.com/rdlucklib/rdluck_tools/paging"
+)
+
+type ChartListResp struct {
+	List   []*services.ChartInfoView
+	Paging *paging.PagingItem
+}

+ 0 - 37
models/wx_session.go

@@ -1,37 +0,0 @@
-package models
-
-import (
-	"time"
-
-	"github.com/beego/beego/v2/client/orm"
-)
-
-type WxSession struct {
-	WxSessionId    int `orm:"pk"`
-	UserId         int
-	OpenId         string
-	AccessToken    string
-	CreateTime     time.Time
-	LastUpdateTime time.Time
-}
-
-func (s *WxSession) AddWxSession() (err error) {
-	o := orm.NewOrm()
-	_, err = o.Insert(s)
-	return
-}
-
-func GetWxSessionByToken(token string) (item *WxSession, err error) {
-	sql := `SELECT * FROM wx_session WHERE access_token=? ORDER BY expire_time DESC LIMIT 1 `
-	o := orm.NewOrm()
-	err = o.Raw(sql, token).QueryRow(&item)
-	return
-}
-
-// 根据用户id获取token
-func GetTokenByOpenId(openId string) (item *WxSession, err error) {
-	sql := `SELECT * FROM wx_session WHERE open_id=? ORDER BY wx_session_id DESC LIMIT 1 `
-	o := orm.NewOrm()
-	err = o.Raw(sql, openId).QueryRow(&item)
-	return
-}

+ 0 - 20
models/wx_user.go

@@ -1,20 +0,0 @@
-package models
-
-type WxUser struct {
-	Id             int64
-	OpenId         string
-	UnionId        string
-	NickName       string
-	Sex            int
-	Language       string
-	City           string
-	Province       string
-	Country        string
-	HeadImgUrl     string
-	SubscribeTime  int64
-	SubscribeScene string
-	QrScene        int
-	QrSceneStr     string
-	CreateTime     int64
-	UpdateTime     int64
-}

+ 9 - 0
routers/commentsRouter.go

@@ -7,6 +7,15 @@ import (
 
 func init() {
 
+    beego.GlobalControllerRouter["eta/eta_mini_api/controllers:ChartController"] = append(beego.GlobalControllerRouter["eta/eta_mini_api/controllers:ChartController"],
+        beego.ControllerComments{
+            Method: "List",
+            Router: `/list`,
+            AllowHTTPMethods: []string{"get"},
+            MethodParams: param.Make(),
+            Filters: nil,
+            Params: nil})
+
     beego.GlobalControllerRouter["eta/eta_mini_api/controllers:ChartPermissionController"] = append(beego.GlobalControllerRouter["eta/eta_mini_api/controllers:ChartPermissionController"],
         beego.ControllerComments{
             Method: "List",

+ 5 - 0
routers/router.go

@@ -33,6 +33,11 @@ func init() {
 				&controllers.ReportController{},
 			),
 		),
+		beego.NSNamespace("/chart",
+			beego.NSInclude(
+				&controllers.ChartController{},
+			),
+		),
 		beego.NSNamespace("/chart_perimission",
 			beego.NSInclude(
 				&controllers.ChartPermissionController{},

+ 140 - 0
services/chart.go

@@ -0,0 +1,140 @@
+package services
+
+import (
+	"encoding/json"
+	"eta/eta_mini_api/utils"
+	"fmt"
+	"io"
+	"net/http"
+	"time"
+
+	"github.com/rdlucklib/rdluck_tools/paging"
+)
+
+type ChartInfoView struct {
+	ChartInfoId       int    `orm:"column(chart_info_id);pk"`
+	ChartName         string `description:"来源名称"`
+	ChartNameEn       string `description:"英文图表名称"`
+	Unit              string `description:"中文单位名称"`
+	UnitEn            string `description:"英文单位名称"`
+	ChartClassifyId   int    `description:"图表分类id"`
+	ChartClassifyName string `description:"图表名称"`
+	SysUserId         int
+	SysUserRealName   string
+	UniqueCode        string `description:"图表唯一编码"`
+	CreateTime        time.Time
+	ModifyTime        time.Time
+	DateType          int    `description:"日期类型:1:00年至今,2:10年至今,3:15年至今,4:年初至今,5:自定义时间"`
+	StartDate         string `description:"自定义开始日期"`
+	EndDate           string `description:"自定义结束日期"`
+	IsSetName         int    `description:"设置名称"`
+	EdbInfoIds        string `description:"指标id"`
+	ChartType         int    `description:"生成样式:1:曲线图,2:季节性图"`
+	Calendar          string `description:"公历/农历"`
+	SeasonStartDate   string `description:"季节性图开始日期"`
+	SeasonEndDate     string `description:"季节性图开始日期"`
+	ChartImage        string `description:"图表图片"`
+	Sort              int    `description:"排序字段,数字越小越排前面"`
+	IsAdd             bool   `description:"true:已加入我的图库,false:未加入我的图库"`
+	MyChartId         int
+	MyChartClassifyId string `description:"我的图表分类,多个用逗号隔开"`
+	ChartClassify     []*ChartClassifyView
+	EdbEndDate        string `description:"指标最新更新日期"`
+	XMin              string `description:"图表X轴最小值"`
+	XMax              string `description:"图表X轴最大值"`
+	LeftMin           string `description:"图表左侧最小值"`
+	LeftMax           string `description:"图表左侧最大值"`
+	RightMin          string `description:"图表右侧最小值"`
+	RightMax          string `description:"图表右侧最大值"`
+	Right2Min         string `description:"图表右侧最小值"`
+	Right2Max         string `description:"图表右侧最大值"`
+	MinMaxSave        int    `description:"是否手动保存过上下限:0-否;1-是"`
+	IsEdit            bool   `description:"是否有编辑权限"`
+	IsEnChart         bool   `description:"是否展示英文标识"`
+	WarnMsg           string `description:"错误信息"`
+	Disabled          int    `description:"是否禁用,0:启用,1:禁用,默认:0"`
+	BarConfig         string `description:"柱方图的配置,json数据" json:"-"`
+	Source            int    `description:"1:ETA图库;2:商品价格曲线;3:相关性图表"`
+	//CorrelationLeadUnit string `description:"相关性图表-领先单位"`
+	ExtraConfig       string          `description:"图表额外配置,json数据"`
+	ChartSource       string          `description:"图表来源str"`
+	ChartSourceEn     string          `description:"图表来源(英文)"`
+	Button            ChartViewButton `description:"操作按钮"`
+	SeasonExtraConfig string          `description:"季节性图表中的配置,json数据"`
+	StartYear         int             `description:"当选择的日期类型为最近N年类型时,即date_type=20, 用start_year表示N"`
+	ChartThemeId      int             `description:"图表应用主题ID"`
+	ChartThemeStyle   string          `description:"图表应用主题样式"`
+	SourcesFrom       string          `description:"图表来源"`
+	Instructions      string          `description:"图表说明"`
+	MarkersLines      string          `description:"标识线"`
+	MarkersAreas      string          `description:"标识区"`
+	IsJoinPermission  int             `description:"是否加入权限管控,0:不加入;1:加入;默认:0"`
+	HaveOperaAuth     bool            `description:"是否有数据权限,默认:false"`
+	ForumChartInfoId  int             `description:"社区的图表ID"`
+}
+
+type ChartClassifyView struct {
+	ChartClassifyId   int    `orm:"column(chart_classify_id);pk"`
+	ChartClassifyName string `description:"分类名称"`
+	ParentId          int    `description:"父级id"`
+}
+
+type ChartViewButton struct {
+	IsEdit    bool `description:"是否有编辑权限"`
+	IsEnChart bool `description:"是否展示英文标识"`
+	IsAdd     bool `description:"true:已加入我的图库,false:未加入我的图库"`
+	IsCopy    bool `description:"是否有另存为按钮"`
+	IsSetName int  `description:"设置名称"`
+}
+
+type ChartListResp struct {
+	List   []*ChartInfoView
+	Paging *paging.PagingItem
+}
+
+type ChartResp[T any] struct {
+	Ret    int
+	Data   T
+	Msg    string
+	ErrMsg string
+}
+
+func GetChartList(currentIndex, pageSize int) (resp *ChartResp[ChartListResp], err error) {
+	url := utils.ETA_MINI_BRIDGE_URL + "/chart/list?"
+	url += fmt.Sprintf("PageSize=%d&CurrentIndex=%d", pageSize, currentIndex)
+	fmt.Println(url)
+	client := &http.Client{}
+	// 提交请求
+	req, err := http.NewRequest("GET", url, nil)
+	if err != nil {
+		return
+	}
+	nonce := utils.GetRandStringNoSpecialChar(16)
+	timestamp := time.Now().Format(utils.FormatDateTimeUnSpace)
+	signature := utils.GetSign(nonce, timestamp, utils.ETA_MINI_APPID, utils.ETA_MINI_APP_SECRET)
+	//增加header选项
+	req.Header.Add("Nonce", nonce)
+	req.Header.Add("Timestamp", timestamp)
+	req.Header.Add("Appid", utils.ETA_MINI_APPID)
+	req.Header.Add("Signature", signature)
+	req.Header.Set("Content-Type", "application/json")
+
+	response, err := client.Do(req)
+	if err != nil {
+		return
+	}
+	defer response.Body.Close()
+
+	body, err := io.ReadAll(response.Body)
+	if err != nil {
+		return
+	}
+
+	utils.FileLog.Info("result:" + string(body))
+	err = json.Unmarshal(body, &resp)
+	if err != nil {
+		return resp, err
+	}
+	return resp, nil
+
+}

+ 9 - 10
services/report.go

@@ -25,15 +25,15 @@ type ReportResp[T any] struct {
 	ErrMsg string
 }
 
-func GetReportList(chartPermissionId, level, currentIndex, pageSize int) (resp *ReportResp[ReportList], err error) {
+func GetReportList(chartPermissionId, level, rangeType, currentIndex, pageSize int) (resp *ReportResp[ReportList], err error) {
 	url := utils.ETA_MINI_BRIDGE_URL + "/report/list?"
-	url += fmt.Sprintf("ChartPermissionId=%d&Level=%d&PageSize=%d&CurrentIndex=%d", chartPermissionId, level, pageSize, currentIndex)
+	url += fmt.Sprintf("RangeType=%d&ChartPermissionId=%d&Level=%d&PageSize=%d&CurrentIndex=%d", rangeType, chartPermissionId, level, pageSize, currentIndex)
 	fmt.Println(url)
 	client := &http.Client{}
 	// 提交请求
 	req, err := http.NewRequest("GET", url, nil)
 	if err != nil {
-		return &ReportResp[ReportList]{}, err
+		return
 	}
 	nonce := utils.GetRandStringNoSpecialChar(16)
 	timestamp := time.Now().Format(utils.FormatDateTimeUnSpace)
@@ -47,14 +47,14 @@ func GetReportList(chartPermissionId, level, currentIndex, pageSize int) (resp *
 
 	response, err := client.Do(req)
 	if err != nil {
-		return &ReportResp[ReportList]{}, err
+		return
 	}
 	defer response.Body.Close()
 
 	body, err := io.ReadAll(response.Body)
 
 	if err != nil {
-		return &ReportResp[ReportList]{}, err
+		return
 	}
 
 	utils.FileLog.Info("result:" + string(body))
@@ -66,12 +66,11 @@ func GetReportList(chartPermissionId, level, currentIndex, pageSize int) (resp *
 
 }
 
-func GetReportDetail(reportId int) (resp *ReportResp[models.ReportDetail], err error) {
-	url := utils.ETA_MINI_BRIDGE_URL + "/report/detail"
+func GetReportDetail(reportId, userId int) (resp *ReportResp[models.ReportDetail], err error) {
+	url := utils.ETA_MINI_BRIDGE_URL + "/report/detail?"
+	url += fmt.Sprintf("ReportId=%d&UserId=%d", reportId, userId)
+	fmt.Println(url)
 	client := &http.Client{}
-	if url != "" {
-		url += "?ReportId=" + strconv.Itoa(reportId)
-	}
 	// 提交请求
 	req, err := http.NewRequest("GET", url, nil)
 	if err != nil {