Jelajahi Sumber

价格驱动客群消息

hsun 2 tahun lalu
induk
melakukan
1d31e470cc
4 mengubah file dengan 173 tambahan dan 0 penghapusan
  1. 69 0
      models/chart_permission.go
  2. 2 0
      models/db.go
  3. 61 0
      models/yb/price_driven.go
  4. 41 0
      services/report_push.go

+ 69 - 0
models/chart_permission.go

@@ -0,0 +1,69 @@
+package models
+
+import (
+	"github.com/beego/beego/v2/client/orm"
+	"time"
+)
+
+// ChartPermission 报告权限表
+type ChartPermission struct {
+	ChartPermissionId   int       `orm:"column(chart_permission_id);pk" description:"问题ID"`
+	ChartPermissionName string    `description:"名称"`
+	PermissionName      string    `description:"权限名"`
+	Sort                int       `description:"排序"`
+	Enabled             int       `description:"是否可用"`
+	CreatedTime         time.Time `description:"创建时间"`
+	LastUpdatedTime     time.Time `description:"更新时间"`
+	TeleconferenceSort  int       `description:"电话会类型排序"`
+	Remark              string    `description:"备注"`
+	ClassifyName        string    `description:"分类名称"`
+	ProductName         string    `description:"产品名称"`
+	ProductID           int       `description:"产品ID"`
+	ImageURL            string    `description:"图片地址"`
+	ShowType            int       `description:"1:查研观向小程序展示"`
+	IsOther             int       `description:"是否是其他,用于查研观向小程序后台展示"`
+	IsReport            int       `description:"是否是报告,用于查研观向小程序前台报告展示"`
+	CygxAuth            int       `description:"是否是权限,用于查研观向小程序前台权限校验"`
+	YbImgUrl            string    `description:"研报小程序报告列表icon"`
+	PriceDrivenState    int       `description:"品种价格驱动开启状态 0-关闭 1-开启"`
+}
+
+// GetChartPermissionById 主键获取权限
+func GetChartPermissionById(permissionId int) (item *ChartPermission, err error) {
+	o := orm.NewOrm()
+	sql := `SELECT * FROM chart_permission WHERE chart_permission_id = ? LIMIT 1`
+	err = o.Raw(sql, permissionId).QueryRow(&item)
+	return
+}
+
+// Update 更新
+func (chartPermissionInfo *ChartPermission) Update(cols []string) (err error) {
+	o := orm.NewOrm()
+	_, err = o.Update(chartPermissionInfo, cols...)
+	return
+}
+
+// YbChartPermissionFirst 研报一级品种分类
+type YbChartPermissionFirst struct {
+	ClassName   string `description:"权限一级分类名称,与chart_permission的classify_name一致"`
+	YbIndexShow int    `description:"是否展示在研报小程序首页页面  1-展示;0-不展示"`
+	YbIndexName string `description:"研报小程序首页简称"`
+	YbIndexSort string `description:"研报小程序首页排序"`
+	YbIndexIcon string `description:"研报小程序首页图标地址"`
+}
+
+// GetYbChartPermissionFirst 获取研报一级品种分类
+func GetYbChartPermissionFirst() (list []*YbChartPermissionFirst, err error) {
+	o := orm.NewOrm()
+	sql := `SELECT * FROM chart_permission_first ORDER BY yb_index_sort ASC`
+	_, err = o.Raw(sql).QueryRows(&list)
+	return
+}
+
+// GetPermissionByProductIdAndClassifyName 获取子分类
+func GetPermissionByProductIdAndClassifyName(productId int, classifyName string) (items []*ChartPermission, err error) {
+	o := orm.NewOrm()
+	sql := `SELECT * FROM chart_permission WHERE enabled = 1 AND product_id = ? AND classify_name = ? AND permission_type = 0 ORDER BY sort ASC`
+	_, err = o.Raw(sql, productId, classifyName).QueryRows(&items)
+	return
+}

+ 2 - 0
models/db.go

@@ -66,6 +66,7 @@ func init() {
 		new(UserViewStatistics),
 		new(roadshow.RsReportRecord), //路演记录
 		new(CompanyReportRecord),
+		new(ChartPermission),     // 权限表
 	)
 
 	// 注册客户信息 数据表
@@ -131,5 +132,6 @@ func initYbTable() {
 		new(yb.ActivityVoice),    //研报活动语音表
 		new(yb.ActivityRegister), //研报活动报名表
 		new(yb.Speaker),          //研报主持人表
+		new(yb.PriceDriven),		// 研报价格驱动表
 	)
 }

+ 61 - 0
models/yb/price_driven.go

@@ -0,0 +1,61 @@
+package yb
+
+import (
+	"github.com/beego/beego/v2/client/orm"
+	"time"
+)
+
+// PriceDriven 价格驱动表
+type PriceDriven struct {
+	PriceDrivenId       int       `orm:"column(price_driven_id);pk" description:"价格驱动ID"`
+	ChartPermissionId   int       `json:"chart_permission_id" description:"品种权限ID"`
+	MainVariable        string    `json:"main_variable" description:"关键变量"`
+	CoreDrivenType      int       `json:"core_driven_type" description:"核心驱动类型 0-多 1-空"`
+	CoreDrivenContent   string    `json:"core_driven_content" description:"核心驱动内容"`
+	CoreContent         string    `json:"core_content" description:"核心内容"`
+	LastUpdateAdminId   int       `json:"last_update_admin_id" description:"最后更新人ID"`
+	LastUpdateAdminName string    `json:"last_update_admin_name" description:"最后更新人名称"`
+	LastThsMsgTime      time.Time `json:"last_ths_msg_time" description:"最后推送同花顺客群消息时间"`
+	LastTemplateMsgTime time.Time `json:"last_template_msg_time" description:"最后推送模板消息时间"`
+	CreateTime          time.Time `json:"create_time" description:"创建时间"`
+	ModifyTime          time.Time `json:"modify_time" description:"更新时间"`
+}
+
+// TableName 表名变更
+func (priceDrivenInfo *PriceDriven) TableName() string {
+	return "yb_price_driven"
+}
+
+// Add 新增
+func (priceDrivenInfo *PriceDriven) Add() (err error) {
+	o := orm.NewOrm()
+	id, err := o.Insert(priceDrivenInfo)
+	if err != nil {
+		return
+	}
+	priceDrivenInfo.PriceDrivenId = int(id)
+	return
+}
+
+// Update 更新
+func (priceDrivenInfo *PriceDriven) Update(cols []string) (err error) {
+	o := orm.NewOrm()
+	_, err = o.Update(priceDrivenInfo, cols...)
+	return
+}
+
+// GetPriceDrivenByChartPermissionId 通过品种获取价格驱动
+func GetPriceDrivenByChartPermissionId(chartPermissionId int) (item *PriceDriven, err error) {
+	o := orm.NewOrm()
+	sql := `SELECT * FROM yb_price_driven WHERE chart_permission_id = ? LIMIT 1`
+	err = o.Raw(sql, chartPermissionId).QueryRow(&item)
+	return
+}
+
+// GetPriceDrivenById 主键获取价格驱动
+func GetPriceDrivenById(priceDrivenId int) (item *PriceDriven, err error) {
+	o := orm.NewOrm()
+	sql := `SELECT * FROM yb_price_driven WHERE price_driven_id = ? LIMIT 1`
+	err = o.Raw(sql, priceDrivenId).QueryRow(&item)
+	return
+}

+ 41 - 0
services/report_push.go

@@ -7,6 +7,7 @@ import (
 	"fmt"
 	"github.com/wenzhenxi/gorsa"
 	"hongze/hongze_task/models"
+	"hongze/hongze_task/models/yb"
 	"hongze/hongze_task/services/alarm_msg"
 	"hongze/hongze_task/utils"
 	"io/ioutil"
@@ -165,6 +166,11 @@ func SendToThs(sendDetailId, reportId int, reportType string) (err error) {
 		if tmpErr != nil {
 			err = tmpErr
 		}
+	case "价格驱动":
+		tmpErr := SendYbPriceDrivenToThs(reportId)
+		if tmpErr != nil {
+			err = tmpErr
+		}
 	default:
 		err = errors.New("异常类型")
 	}
@@ -460,3 +466,38 @@ func SendReportMiniToThs(reportId int) (err error) {
 
 	return
 }
+
+// SendYbPriceDrivenToThs 推送研报小程序价格驱动客群消息
+func SendYbPriceDrivenToThs(chartPermissionId int) (err error) {
+	defer func() {
+		if err != nil {
+			go alarm_msg.SendAlarmMsg("SendYbPriceDrivenToThs-延时任务发送报告至同花顺失败, ChartPermissionId:"+strconv.Itoa(chartPermissionId)+", ErrMsg:"+err.Error(), 3)
+		}
+	}()
+	priceDriven, e := yb.GetPriceDrivenByChartPermissionId(chartPermissionId)
+	if e != nil {
+		err = errors.New("获取价格驱动信息失败, Err:" + e.Error())
+		return
+	}
+	chartPermission, e := models.GetChartPermissionById(priceDriven.ChartPermissionId)
+	if e != nil {
+		err = errors.New("获取价格驱动分类信息失败, Err:" + e.Error())
+		return
+	}
+	thsTag := chartPermission.PermissionName
+	if thsTag == "" {
+		err = errors.New("客群标签为空, 无效推送")
+		return
+	}
+	if thsTag == "宏观经济" {
+		thsTag = "宏观"
+	}
+	// TODO:小程序跳转地址待定
+	title := fmt.Sprintf("%s价格驱动", thsTag)
+	jumpUrl := fmt.Sprintf(`%s/pages-report/reportDetail?reportId=%d`, utils.WxYbAppId, chartPermissionId)
+	logoUrl := `https://hongze.oss-cn-shanghai.aliyuncs.com/hzyj.png`
+	// 推送至同花顺
+	dataType := "2"
+	err = SendThs(title, thsTag, title, jumpUrl, logoUrl, dataType)
+	return
+}