kobe6258 9 місяців тому
батько
коміт
77d2332919

+ 2 - 2
controllers/audio.go

@@ -378,9 +378,9 @@ func (this *AudioController) AudioList() {
 		br.ErrMsg = "获取音频列表失败,Err:" + err.Error()
 		return
 	}
-	var reportViewList []*models.ESMedia
+	var reportViewList []*models.MediaView
 	for _, report := range reportList {
-		reportView := report.ToView()
+		reportView := report.ToMediaView()
 		reportViewList = append(reportViewList, reportView)
 	}
 	page := paging.GetPaging(currentIndex, pageSize, total)

+ 95 - 0
controllers/message.go

@@ -306,3 +306,98 @@ func (this *MessageController) VideoList() {
 	br.Data = resp
 	br.Msg = "获取成功"
 }
+
+// SendTemplateMsg
+// @Title 研报列表
+// @Description pdf研报列表
+// @Param   PageSize   query   int  true       "每页数据条数"
+// @Param   CurrentIndex   query   int  true       "当前页页码,从1开始"
+// @Param   ClassifyIds   query   string  true       "二级分类id,可多选用英文,隔开"
+// @Param   KeyWord   query   string  true       "报告标题/创建人"
+// @Param   SortType   query   string  true       "排序方式"
+// @Success 200 {object} models.ReportAuthorResp
+// @router /sendTemplateMsg [get]
+func (this *MessageController) SendTemplateMsg() {
+	br := new(models.BaseResponse).Init()
+	defer func() {
+		this.Data["json"] = br
+		this.ServeJSON()
+	}()
+	pageSize, _ := this.GetInt("PageSize")
+	currentIndex, _ := this.GetInt("CurrentIndex")
+	permissionIds := this.GetString("PermissionIds")
+	analystIds := this.GetString("AnalystIds")
+	sortType := this.GetString("SortType")
+	KeyWord := this.GetString("KeyWord")
+	var permissionCondition string
+	var condition string
+	var pars []interface{}
+
+	if pageSize <= 0 {
+		pageSize = utils.PageSize20
+	}
+	if currentIndex <= 0 {
+		currentIndex = 1
+	}
+	if KeyWord != "" {
+		condition += " AND media_name like '%" + KeyWord + "%'"
+	}
+	var permissionPars []interface{}
+	if permissionIds != "" {
+		permissionArr := strings.Split(permissionIds, ",")
+		for _, permissionId := range permissionArr {
+			perId, _ := strconv.Atoi(permissionId)
+			permissionPars = append(permissionPars, perId)
+		}
+		permissionCondition += " AND permission_id in (" + utils.GetOrmReplaceHolder(len(permissionPars)) + ")"
+		ids, err := models.GetMappingsByCondition(permissionCondition, permissionPars)
+		if err != nil {
+			condition += " AND id in (" + utils.GetOrmReplaceHolder(len(ids)) + ")"
+			pars = append(pars, ids)
+		}
+	}
+
+	if analystIds != "" {
+		analystIdArr := strings.Split(analystIds, ",")
+		var authorIds []int
+		for _, analystId := range analystIdArr {
+			id, _ := strconv.Atoi(analystId)
+			authorIds = append(authorIds, id)
+		}
+		condition += " AND author_id in (" + utils.GetOrmReplaceHolder(len(authorIds)) + ")"
+		pars = append(pars, authorIds)
+	}
+	sortCondition := " ORDER BY published_time "
+	if sortType == "" {
+		sortType = "DESC"
+	}
+	sortCondition = sortCondition + sortType
+	total, err := models.GetMediaCountByCondition(models.Video, condition, pars)
+	if err != nil {
+		br.Msg = "获取视频列表失败"
+		br.ErrMsg = "获取视频列表统计失败,Err:" + err.Error()
+		return
+	}
+
+	startSize := utils.StartIndex(currentIndex, pageSize)
+	List, err := models.GetMediaByCondition(models.Video, condition, sortCondition, pars, startSize, pageSize)
+	if err != nil {
+		br.Msg = "获取视频列表失败"
+		br.ErrMsg = "获取视频列表失败,Err:" + err.Error()
+		return
+	}
+	var reportViewList []*models.MessageMedia
+	for _, report := range List {
+		reportView := report.ToMessageView()
+		reportViewList = append(reportViewList, reportView)
+	}
+	page := paging.GetPaging(currentIndex, pageSize, total)
+	resp := new(response.MessageMediaListResp)
+	resp.List = reportViewList
+	resp.Paging = page
+
+	br.Ret = 200
+	br.Success = true
+	br.Data = resp
+	br.Msg = "发送成功"
+}

+ 27 - 3
controllers/video.go

@@ -10,9 +10,11 @@ import (
 	"eta/eta_mini_crm_ht/utils"
 	"fmt"
 	"github.com/rdlucklib/rdluck_tools/paging"
+	"math/rand"
 	"os"
 	"path"
 	"strconv"
+	"strings"
 	"time"
 )
 
@@ -137,12 +139,34 @@ func (this *VideoController) AddVideo() {
 		return
 	}
 	var err error
-
+	var coverSrc int
+	permissions := strings.Split(req.PermissionIds, ",")
+	permissionsId, err := strconv.Atoi(permissions[0])
+	if err != nil {
+		coverSrc = 0
+	} else {
+		var ids []int
+		ids, err = models.GetImageIdByPermissionId(permissionsId)
+		if err != nil {
+			br.Msg = "上传视频失败"
+			br.ErrMsg = "获取封面图片失败"
+			return
+		}
+		if ids == nil || len(ids) == 0 {
+			coverSrc = 0
+		} else {
+			rand.Seed(time.Now().UnixNano())
+			// 从切片中随机选择一个元素
+			randomIndex := rand.Intn(len(ids))
+			coverSrc = ids[randomIndex]
+		}
+	}
 	audioInsert := &models.Media{
 		AuthorId:              req.AnalystId,
 		AuthorName:            req.AnalystName,
 		MediaType:             models.Video,
 		Src:                   req.SrcUrl,
+		CoverSrc:              coverSrc,
 		MediaName:             req.AudioName,
 		SourceType:            "mp4",
 		MediaPlayMilliseconds: req.DurationMillisecond,
@@ -345,9 +369,9 @@ func (this *VideoController) VideoList() {
 		br.ErrMsg = "获取视频列表失败,Err:" + err.Error()
 		return
 	}
-	var reportViewList []*models.ESMedia
+	var reportViewList []*models.MediaView
 	for _, report := range List {
-		reportView := report.ToView()
+		reportView := report.ToMediaView()
 		reportViewList = append(reportViewList, reportView)
 	}
 	page := paging.GetPaging(currentIndex, pageSize, total)

+ 6 - 1
models/chart_permission.go

@@ -107,7 +107,12 @@ func GetChartPermissionList() (items []*ChartPermission, err error) {
 	_, err = o.Raw(sql).QueryRows(&items)
 	return
 }
-
+func GetPermissionNames(ids []int) (items []string, err error) {
+	o := orm.NewOrmUsingDB("rddp")
+	sql := `SELECT distinct  permission_name FROM chart_permission WHERE enabled=1 AND product_id=1 and chart_permission_id in ?`
+	_, err = o.Raw(sql, ids).QueryRows(&items)
+	return
+}
 func GetChartPermissionByParentId(parentId int) (items []*ChartPermissionList, err error) {
 	o := orm.NewOrmUsingDB("rddp")
 	sql := `SELECT * FROM chart_permission WHERE enabled=1 AND chart_permission_id=? order parent_id asc ,sort asc`

+ 14 - 0
models/image_sources.go

@@ -36,3 +36,17 @@ func (i *ImageSource) Delete() (err error) {
 	_, err = o.Update(i, "deleted")
 	return
 }
+
+func GetImageIdByPermissionId(permissionId int) (items []int, err error) {
+	o := orm.NewOrm()
+	sql := "select id from image_sources where permission_id = ?"
+	_, err = o.Raw(sql, permissionId).QueryRows(&items)
+	return
+}
+
+func GetImageById(Id int) (item *ImageSource, err error) {
+	o := orm.NewOrm()
+	sql := "select id from image_sources where id = ?"
+	err = o.Raw(sql, Id).QueryRow(&item)
+	return
+}

+ 84 - 6
models/media.go

@@ -1,6 +1,7 @@
 package models
 
 import (
+	"eta/eta_mini_crm_ht/utils"
 	"fmt"
 	"github.com/beego/beego/v2/client/orm"
 	"strconv"
@@ -34,6 +35,19 @@ func (m *Media) ToView() *ESMedia {
 }
 
 type ESMedia struct {
+	MediaId               int       `json:"mediaId"`
+	AuthorId              int       `json:"authorId"`
+	AuthorName            string    `json:"authorName"`
+	CoverSrc              int       `json:"coverSrc"`
+	MediaType             MediaType `json:"mediaType"`
+	Src                   string    `json:"src"`
+	MediaName             string    `json:"mediaName"`
+	SourceType            string    `json:"sourceType"`
+	MediaPlayMilliseconds int       `json:"mediaPlayMilliseconds"`
+	PermissionIds         string    `json:"permissionIds"`
+	PublishedTime         string    `json:"publishedTime"`
+}
+type MediaView struct {
 	MediaId               int       `json:"mediaId"`
 	AuthorId              int       `json:"authorId"`
 	AuthorName            string    `json:"authorName"`
@@ -44,11 +58,50 @@ type ESMedia struct {
 	SourceType            string    `json:"sourceType"`
 	MediaPlayMilliseconds int       `json:"mediaPlayMilliseconds"`
 	PermissionIds         string    `json:"permissionIds"`
+	PermissionNames       string    `json:"permission_names"`
 	PublishedTime         string    `json:"publishedTime"`
 }
 
-func (m *Media) ToMessageView() *MessageMedia {
-	return &MessageMedia{
+func (m *Media) ToMediaView() (message *MediaView) {
+	message = &MediaView{
+		MediaId:               m.Id,
+		AuthorId:              m.AuthorId,
+		AuthorName:            m.AuthorName,
+		MediaType:             m.MediaType,
+		Src:                   m.Src,
+		MediaName:             m.MediaName,
+		SourceType:            m.SourceType,
+		MediaPlayMilliseconds: m.MediaPlayMilliseconds,
+		PermissionIds:         m.PermissionIds,
+		PublishedTime:         m.PublishedTime.Format(time.DateTime),
+	}
+	image, err := GetImageById(m.CoverSrc)
+	if err != nil || image == nil {
+		message.CoverSrc = ""
+	}
+	message.CoverSrc = image.SrcUrl
+	ids := strings.Split(m.PermissionIds, ",")
+	var idList []int
+	for _, id := range ids {
+		var idInt int
+		idInt, err = strconv.Atoi(id)
+		if err != nil {
+			utils.FileLog.Error("转换品种名称失败:%v", err)
+			break
+		}
+		idList = append(idList, idInt)
+	}
+	if len(idList) > 0 {
+		names, err := GetPermissionNames(idList)
+		if err != nil {
+			utils.FileLog.Error("获取品种名称失败:%v", err)
+		}
+		message.PermissionNames = strings.Join(names, ",")
+	}
+	return
+}
+func (m *Media) ToMessageView() (message *MessageMedia) {
+	message = &MessageMedia{
 		MediaId:               m.Id,
 		AuthorId:              m.AuthorId,
 		AuthorName:            m.AuthorName,
@@ -61,6 +114,30 @@ func (m *Media) ToMessageView() *MessageMedia {
 		PermissionIds:         m.PermissionIds,
 		PublishedTime:         m.PublishedTime.Format(time.DateTime),
 	}
+	image, err := GetImageById(m.CoverSrc)
+	if err != nil || image == nil {
+		message.CoverSrc = ""
+	}
+	message.CoverSrc = image.SrcUrl
+	ids := strings.Split(m.PermissionIds, ",")
+	var idList []int
+	for _, id := range ids {
+		var idInt int
+		idInt, err = strconv.Atoi(id)
+		if err != nil {
+			utils.FileLog.Error("转换品种名称失败:%v", err)
+			break
+		}
+		idList = append(idList, idInt)
+	}
+	if len(idList) > 0 {
+		names, err := GetPermissionNames(idList)
+		if err != nil {
+			utils.FileLog.Error("获取品种名称失败:%v", err)
+		}
+		message.PermissionNames = strings.Join(names, ",")
+	}
+	return
 }
 
 type MessageMedia struct {
@@ -75,13 +152,14 @@ type MessageMedia struct {
 	SendStatus            SendStatus `json:"sendStatus"`
 	MediaPlayMilliseconds int        `json:"mediaPlayMilliseconds"`
 	PermissionIds         string     `json:"permissionIds"`
+	PermissionNames       string     `description:"permission_names"`
 	PublishedTime         string     `json:"publishedTime"`
 }
 type Media struct {
 	Id                    int        `orm:"pk;auto" description:"id"`
 	AuthorId              int        `description:"author_id"`
 	AuthorName            string     `description:"author_name"`
-	CoverSrc              string     `description:"cover_src"`
+	CoverSrc              int        `description:"cover_src"`
 	MediaType             MediaType  `description:"media_type"`
 	Src                   string     `description:"src"`
 	MediaName             string     `description:"media_name"`
@@ -97,7 +175,7 @@ type Media struct {
 
 func GetMediaCountByCondition(media MediaType, condition string, pars []interface{}) (count int, err error) {
 	o := orm.NewOrm()
-	sql := `SELECT COUNT(*) AS count FROM media WHERE 1=1  AND media_type=? `
+	sql := `SELECT COUNT(*) AS count FROM media WHERE 1 =1  AND media_type = ? `
 	if condition != "" {
 		sql += condition
 	}
@@ -107,14 +185,14 @@ func GetMediaCountByCondition(media MediaType, condition string, pars []interfac
 
 func GetMediaByCondition(media MediaType, condition string, sortCondition string, pars []interface{}, startPage, pageSize int) (items []*Media, err error) {
 	o := orm.NewOrm()
-	sql := `SELECT * FROM media WHERE 1=1 AND media_type=?`
+	sql := `SELECT * FROM media WHERE 1 = 1 AND media_type = ? AND deleted=0`
 	if condition != "" {
 		sql += condition
 	}
 	if sortCondition != "" {
 		sql += sortCondition // 排序
 	}
-	sql += ` LIMIT ?,?`
+	sql += ` LIMIT ?, ?`
 	_, err = o.Raw(sql, media, pars, startPage, pageSize).QueryRows(&items)
 	return
 }

+ 6 - 0
models/request/wx_message.go

@@ -0,0 +1,6 @@
+package request
+
+type WxMessage struct {
+	DataId   int
+	DataType string
+}

+ 1 - 1
models/response/media.go

@@ -6,7 +6,7 @@ import (
 )
 
 type MediaListResp struct {
-	List   []*models.ESMedia
+	List   []*models.MediaView
 	Paging *paging.PagingItem `description:"分页数据"`
 }
 

+ 1 - 1
services/wechat.go

@@ -51,7 +51,7 @@ func (wechat WechatAccessToken) GetAccessToken() (accessToken string, err error)
 		var updateCols = []string{"access_token", "expires_in"}
 		wxToken.AccessToken = tmpAccessToken
 		wxToken.ExpiresIn = time.Now().Unix() + expires - 600 //快过期前10分钟就刷新掉
-		wxToken.Update(updateCols)
+		_ = wxToken.Update(updateCols)
 	}
 	accessToken = wxToken.AccessToken
 	return