Forráskód Böngészése

研报10.0标签相关调整

hsun 2 éve
szülő
commit
b60fcf62e3
5 módosított fájl, 206 hozzáadás és 29 törlés
  1. 3 0
      models/db.go
  2. 178 0
      models/variety_tag.go
  3. 15 15
      models/yb/community_video.go
  4. 3 1
      models/yb/price_driven.go
  5. 7 13
      services/report_push.go

+ 3 - 0
models/db.go

@@ -120,6 +120,9 @@ func initEdbDataTable() {
 		new(data_manage.EdbDataCalculateZjpj),    //直接拼接
 		new(data_manage.EdbDataCalculateLjztbpj), //累计同比值拼接
 		new(data_manage.EdbDataLt),               //路透指标数据表
+		new(VarietyClassify),            // 标签分类表
+		new(VarietyTag),                 // 标签表
+		new(ResearchVarietyTagRelation), // 研究员标签关系表
 	)
 }
 

+ 178 - 0
models/variety_tag.go

@@ -0,0 +1,178 @@
+package models
+
+import (
+	"github.com/beego/beego/v2/client/orm"
+	"time"
+)
+
+// VarietyClassify 标签库分类表
+type VarietyClassify struct {
+	VarietyClassifyId int       `orm:"column(variety_classify_id);pk" description:"标签分类ID"`
+	ClassifyName      string    `json:"classify_name" description:"标签分类名称"`
+	Sort              int       `json:"sort" description:"排序"`
+	State             int       `json:"state" description:"显示状态 0-禁用 1-启用"`
+	CreateTime        time.Time `json:"create_time" description:"创建时间"`
+	ModifyTime        time.Time `json:"modify_time" description:"更新时间"`
+}
+
+// GetVarietyClassifyList 获取标签分类列表
+func GetVarietyClassifyList() (list []*VarietyClassify, err error) {
+	o := orm.NewOrm()
+	sql := `SELECT * FROM variety_classify WHERE state = 1 ORDER BY sort`
+	_, err = o.Raw(sql).QueryRows(&list)
+	return
+}
+
+// GetVarietyClassifyById 主键获取分类
+func GetVarietyClassifyById(classifyId int) (item *VarietyClassify, err error) {
+	o := orm.NewOrm()
+	sql := `SELECT * FROM variety_classify WHERE variety_classify_id = ? LIMIT 1`
+	err = o.Raw(sql, classifyId).QueryRow(&item)
+	return
+}
+
+// VarietyTag 标签表
+type VarietyTag struct {
+	VarietyTagId                int       `orm:"column(variety_tag_id);pk" description:"标签ID"`
+	VarietyClassifyId           int       `json:"variety_classify_id" description:"标签分类ID"`
+	VarietyClassifyName         string    `json:"variety_classify_name" description:"标签分类名称"`
+	TagName                     string    `json:"tag_name" description:"标签名称"`
+	ChartPermissionClassifyName string    `json:"chart_permission_classify_name" description:"品种权限分类名"`
+	ChartPermissionId           int       `json:"chart_permission_id" description:"品种权限ID"`
+	ChartPermissionName         string    `json:"chart_permission_name" description:"品种权限名称"`
+	Sort                        int       `json:"sort" description:"排序"`
+	State                       int       `json:"state" description:"显示状态 0-禁用 1-启用"`
+	CreateTime                  time.Time `json:"create_time" description:"创建时间"`
+	ModifyTime                  time.Time `json:"modify_time" description:"更新时间"`
+}
+
+// GetVarietyTagById 主键获取标签
+func GetVarietyTagById(tagId int) (item *VarietyTag, err error) {
+	o := orm.NewOrm()
+	sql := `SELECT * FROM variety_tag WHERE variety_tag_id = ? LIMIT 1`
+	err = o.Raw(sql, tagId).QueryRow(&item)
+	return
+}
+
+// GetVarietyTagList 获取标签列表
+func GetVarietyTagList() (list []*VarietyTag, err error) {
+	o := orm.NewOrm()
+	sql := `SELECT * FROM variety_tag WHERE state = 1 ORDER BY sort`
+	_, err = o.Raw(sql).QueryRows(&list)
+	return
+}
+
+// GetVarietyTagListByClassifyId 根据分类获取标签列表
+func GetVarietyTagListByClassifyId(classifyId int) (list []*VarietyTag, err error) {
+	o := orm.NewOrm()
+	sql := `SELECT * FROM variety_tag WHERE variety_classify_id = ? AND state = 1 ORDER BY sort`
+	_, err = o.Raw(sql).QueryRows(&list)
+	return
+}
+
+// ResearchVarietyTagRelation 研究员标签关系表
+type ResearchVarietyTagRelation struct {
+	Id           int `orm:"column(id);pk"`
+	VarietyTagId int `json:"variety_tag_id" description:"标签ID"`
+	AdminId      int `json:"admin_id" description:"研究员ID"`
+}
+
+// ResearchVarietyTagRelationListByAdminId 根据研究员ID获取标签关系列表
+func ResearchVarietyTagRelationListByAdminId(adminId int) (list []*ResearchVarietyTagRelation, err error) {
+	o := orm.NewOrm()
+	sql := `SELECT * FROM research_variety_tag_relation WHERE admin_id = ?`
+	_, err = o.Raw(sql, adminId).QueryRows(&list)
+	return
+}
+
+type ResearchTagRelation struct {
+	Id              int `json:"id"`
+	ResearchGroupId int `json:"research_group_id" description:"分组ID"`
+	AdminId         int `json:"admin_id" description:"研究员ID"`
+}
+
+// ResearchTagRelationListByAdminId 根据研究员ID获取标签关系列表
+func ResearchTagRelationListByAdminId(adminId int) (list []*ResearchTagRelation, err error) {
+	o := orm.NewOrm()
+	sql := `SELECT id, variety_tag_id AS research_group_id, admin_id FROM research_variety_tag_relation WHERE admin_id = ?`
+	_, err = o.Raw(sql, adminId).QueryRows(&list)
+	return
+}
+
+// ResearchVarietyTagRelationItem 研究员标签关系
+type ResearchVarietyTagRelationItem struct {
+	VarietyTagId int    `json:"variety_tag_id" description:"标签ID"`
+	AdminId      int    `json:"admin_id" description:"研究员ID"`
+	AdminName    string `json:"admin_name" description:"研究员姓名"`
+}
+
+// GetResearchVarietyTagRelationList 获取研究员标签关系列表
+func GetResearchVarietyTagRelationList(include int) (list []*ResearchVarietyTagRelationItem, err error) {
+	// 是否包含已禁止的研究员, 默认不包含
+	condition := ` WHERE b.enabled = 1 `
+	if include == 1 {
+		condition = ` WHERE 1=1 `
+	}
+	o := orm.NewOrm()
+	sql := `SELECT
+				a.variety_tag_id,
+				a.admin_id,
+				b.real_name AS admin_name
+			FROM
+				research_variety_tag_relation AS a
+			INNER JOIN admin AS b ON a.admin_id = b.admin_id `
+	sql += condition
+	sql += ` ORDER BY
+				a.variety_tag_id ASC,
+				a.admin_id ASC`
+	_, err = o.Raw(sql).QueryRows(&list)
+	return
+}
+
+// UpdateAdminVarietyTagRelation 更新研究员标签关系
+func UpdateAdminVarietyTagRelation(adminId int, items []*ResearchVarietyTagRelation) (err error) {
+	o := orm.NewOrm()
+	to, err := o.Begin()
+	if err != nil {
+		return
+	}
+	defer func() {
+		if err != nil {
+			_ = to.Rollback()
+		} else {
+			_ = to.Commit()
+		}
+	}()
+	sql := `DELETE FROM research_variety_tag_relation WHERE admin_id = ?`
+	if _, err = o.Raw(sql, adminId).Exec(); err != nil {
+		return
+	}
+	itemsLen := len(items)
+	if itemsLen > 0 {
+		_, err = o.InsertMulti(itemsLen, items)
+	}
+	return
+}
+
+// AdminVarietyTagRelationList 研究员研究方向列表
+type AdminVarietyTagRelationList struct {
+	AdminId      int    `json:"admin_id"`
+	GroupNameStr string `json:"group_name_str"`
+}
+
+// GetAdminVarietyTagRelationListByAdminId 获取研究员研究方向分组列表
+func GetAdminVarietyTagRelationListByAdminId(adminIds string) (list []*AdminVarietyTagRelationList, err error) {
+	o := orm.NewOrm()
+	sql := `SELECT
+				a.admin_id,
+				GROUP_CONCAT(b.tag_name) AS group_name_str
+			FROM
+				research_variety_tag_relation AS a
+			INNER JOIN variety_tag AS b ON a.variety_tag_id = b.variety_tag_id
+			WHERE
+				a.admin_id IN (` + adminIds + `)
+			GROUP BY
+				a.admin_id`
+	_, err = o.Raw(sql).QueryRows(&list)
+	return
+}

+ 15 - 15
models/yb/community_video.go

@@ -7,21 +7,21 @@ import (
 
 // CommunityVideo 视频社区
 type CommunityVideo struct {
-	CommunityVideoId    int       `orm:"column(community_video_id);pk" description:"问题ID"`
-	Title               string    `description:"视频标题"`
-	ChartPermissionId   int       `description:"品种权限ID"`
-	ChartPermissionName string    `description:"品种权限名称"`
-	CoverImgUrl         string    `description:"封面图地址"`
-	VideoUrl            string    `description:"视频地址"`
-	VideoSeconds        string    `description:"视频时长,单位秒"`
-	PublishState        int       `description:"发布状态:0-待发布 1-已发布"`
-	SendThsState        int       `description:"客群消息推送状态:0-待推送 1-已推送"`
-	IsDeleted           int       `description:"是否已删除 0-否 1-是"`
-	PublishTime         time.Time `description:"发布时间"`
-	SendThsTime         time.Time `description:"推送客群时间"`
-	CreateTime          time.Time `description:"提问时间"`
-	ModifyTime          time.Time `description:"修改时间"`
-	DeleteTime          time.Time `description:"删除时间"`
+	CommunityVideoId int       `orm:"column(community_video_id);pk" description:"问题ID"`
+	Title            string    `description:"视频标题"`
+	VarietyTagId     int       `description:"标签ID"`
+	VarietyTagName   string    `description:"标签名称"`
+	CoverImgUrl      string    `description:"封面图地址"`
+	VideoUrl         string    `description:"视频地址"`
+	VideoSeconds     string    `description:"视频时长,单位秒"`
+	PublishState     int       `description:"发布状态:0-待发布 1-已发布"`
+	SendThsState     int       `description:"客群消息推送状态:0-待推送 1-已推送"`
+	IsDeleted        int       `description:"是否已删除 0-否 1-是"`
+	PublishTime      time.Time `description:"发布时间"`
+	SendThsTime      time.Time `description:"推送客群时间"`
+	CreateTime       time.Time `description:"提问时间"`
+	ModifyTime       time.Time `description:"修改时间"`
+	DeleteTime       time.Time `description:"删除时间"`
 }
 
 func (item *CommunityVideo) TableName() string {

+ 3 - 1
models/yb/price_driven.go

@@ -8,7 +8,9 @@ import (
 // PriceDriven 价格驱动表
 type PriceDriven struct {
 	PriceDrivenId       int       `orm:"column(price_driven_id);pk" description:"价格驱动ID"`
-	ChartPermissionId   int       `json:"chart_permission_id" description:"品种权限ID"`
+	//ChartPermissionId   int       `json:"chart_permission_id" description:"品种权限ID"`
+	VarietyTagId        int       `json:"variety_tag_id" description:"标签ID"`
+	VarietyTagName      string    `json:"variety_tag_name" description:"标签名称"`
 	MainVariable        string    `json:"main_variable" description:"关键变量"`
 	CoreDrivenType      int       `json:"core_driven_type" description:"核心驱动类型 0-多 1-空"`
 	CoreDrivenContent   string    `json:"core_driven_content" description:"核心驱动内容"`

+ 7 - 13
services/report_push.go

@@ -485,22 +485,16 @@ func SendYbPriceDrivenToThs(priceDrivenId int) (err error) {
 		err = errors.New("获取价格驱动信息失败, Err:" + e.Error())
 		return
 	}
-	chartPermissionId := priceDriven.ChartPermissionId
-	if chartPermissionId <= 0 {
-		err = errors.New("价格驱动品种ID有误")
+	// 标签信息
+	if priceDriven.VarietyTagId <= 0 {
 		return
 	}
-	secondPermission, e := models.GetChartPermissionById(chartPermissionId)
-	if e != nil {
-		err = errors.New("获取品种权限信息失败, Err: " + e.Error())
-		return
-	}
-	permissionName := secondPermission.PermissionName
-	firstClassify, e := models.GetYbChartPermissionFirstByName(secondPermission.ClassifyName)
-	if e != nil {
-		err = errors.New("获取品种权限父级信息失败, Err: " + e.Error())
+	varietyTag, err := models.GetVarietyTagById(priceDriven.VarietyTagId)
+	if err != nil {
 		return
 	}
+
+	permissionName := varietyTag.ChartPermissionName
 	if permissionName == "" {
 		err = errors.New("客群标签为空, 不可推送")
 		return
@@ -509,7 +503,7 @@ func SendYbPriceDrivenToThs(priceDrivenId int) (err error) {
 		permissionName = "宏观"
 	}
 	title := fmt.Sprintf("%s价格驱动", permissionName)
-	jumpUrl := fmt.Sprintf(`%s/pages/pricedriven/pricedriven?default_classify_first=%d&default_classify_sub=%d`, utils.WxYbAppId, firstClassify.Id, chartPermissionId)
+	jumpUrl := fmt.Sprintf(`%s/pages/pricedriven/pricedriven?default_classify_first=%d&default_classify_sub=%d`, utils.WxYbAppId, varietyTag.VarietyClassifyId, varietyTag.VarietyTagId)
 	logoUrl := `https://hongze.oss-cn-shanghai.aliyuncs.com/hzyj.png`
 	// 推送至同花顺
 	dataType := "2"