Bläddra i källkod

未设置产品

kobe6258 4 månader sedan
förälder
incheckning
57abb63884
6 ändrade filer med 163 tillägg och 6 borttagningar
  1. 20 1
      controllers/product.go
  2. 9 2
      models/media.go
  3. 10 2
      models/media_permission_mapping.go
  4. 23 0
      models/permission.go
  5. 1 0
      models/report.go
  6. 100 1
      services/product.go

+ 20 - 1
controllers/product.go

@@ -8,6 +8,7 @@ import (
 	"github.com/rdlucklib/rdluck_tools/paging"
 	"strconv"
 	"strings"
+	"sync"
 )
 
 type ProductController struct {
@@ -87,12 +88,30 @@ func (this *ProductController) UnSetProductList() {
 			return
 		}
 	}
+	var wg sync.WaitGroup
+	wg.Add(len(list))
+	for _, product := range list {
+		go func(product *services.ProductView) {
+			defer wg.Done()
 
+			switch product.ProductType {
+			case "report":
+				product.RiskLevel = product.GetRiskLevel("report", product.SourceId)
+				product.ProductType = "报告"
+			case "video":
+				product.RiskLevel = product.GetRiskLevel("media", product.SourceId)
+				product.ProductType = "视频"
+			case "audio":
+				product.RiskLevel = product.GetRiskLevel("media", product.SourceId)
+				product.ProductType = "音频"
+			}
+		}(product)
+	}
+	wg.Wait()
 	page := paging.GetPaging(currentIndex, pageSize, total)
 	resp := new(response.ProductListResp)
 	resp.List = list
 	resp.Paging = page
-
 	br.Ret = 200
 	br.Success = true
 	br.Data = resp

+ 9 - 2
models/media.go

@@ -191,8 +191,15 @@ func (m *Media) UpdateSendStatus(statusType SendStatus) (err error) {
 }
 func GetMediaById(media MediaType, id int) (item *Media, err error) {
 	o := orm.NewOrm()
-	sql := `SELECT * FROM media WHERE 1 = 1 AND media_type = ?  and id =? AND deleted=0`
-	err = o.Raw(sql, media, id).QueryRow(&item)
+	var sql string
+	if media == "" {
+		sql = `SELECT * FROM media WHERE 1 = 1  and id =? AND deleted=0`
+		err = o.Raw(sql, id).QueryRow(&item)
+	} else {
+		sql = `SELECT * FROM media WHERE 1 = 1 AND media_type = ?  and id =? AND deleted=0`
+		err = o.Raw(sql, media, id).QueryRow(&item)
+	}
+
 	return
 }
 func GetMediasById(ids []int, sortCondition string, startPage, pageSize int) (medias []Media, err error) {

+ 10 - 2
models/media_permission_mapping.go

@@ -39,8 +39,16 @@ func GetMappingsByCondition(condition string, pars []interface{}) (items []int64
 
 func GetPermissionIdsByMediaId(mediaType MediaType, mediaId int) (ids []int, err error) {
 	o := orm.NewOrm()
-	sql := `SELECT distinct  permission_id FROM media_permission_mappings WHERE media_id=? and media_type=? and DELETED=0 `
-	_, err = o.Raw(sql, mediaId, mediaType).QueryRows(&ids)
+	var sql string
+
+	if mediaType == "" {
+		sql = `SELECT distinct  permission_id FROM media_permission_mappings WHERE media_id=? and DELETED=0 `
+		_, err = o.Raw(sql, mediaId).QueryRows(&ids)
+	} else {
+		sql = `SELECT distinct  permission_id FROM media_permission_mappings WHERE media_id=? and media_type=? and DELETED=0 `
+		_, err = o.Raw(sql, mediaId, mediaType).QueryRows(&ids)
+	}
+
 	return
 }
 

+ 23 - 0
models/permission.go

@@ -77,6 +77,22 @@ func GetPermissionNamesWithRiskLevel(ids []int) (permissionNameList []string, er
 	}
 	return
 }
+
+func GetPermissionsWithRiskLevel(ids []int) (permissionList []Permission, err error) {
+	o := orm.NewOrm()
+	var sql string
+	if len(ids) == 0 {
+		sql = `SELECT  * FROM permissions  where  risk_level !=''  order by permission_id asc`
+	} else {
+		condition := " permission_id in (" + utils.GetOrmReplaceHolder(len(ids)) + ")"
+		sql = `SELECT * FROM permissions  where  risk_level !='' and ` + condition + `  order by permission_id asc`
+	}
+	_, err = o.Raw(sql, ids).QueryRows(&permissionList)
+	if err != nil {
+		return
+	}
+	return
+}
 func GetClassifyIdByPermissionIds(permissionIds []int) (classifyIds []int, err error) {
 	o := orm.NewOrm()
 	if len(permissionIds) == 0 {
@@ -98,3 +114,10 @@ func FilterPermissionIdsWithRiskLevel(ids []int) (permissionIds []int, err error
 	_, err = o.Raw(sql, permissionIds).QueryRows(&permissionIds)
 	return
 }
+
+func GetPermissionByName(name string) (permission Permission, err error) {
+	o := orm.NewOrm()
+	sql := `SELECT * FROM permissions  where  name = ?`
+	err = o.Raw(sql, name).QueryRow(&permission)
+	return
+}

+ 1 - 0
models/report.go

@@ -29,6 +29,7 @@ type Report struct {
 	Abstract      string       `description:"摘要"`
 	Author        string       `description:"作者"`
 	CoverSrc      int          `description:"封面"`
+	ClassifyId    int          `description:"分类Id"`
 	PlateName     string       `description:"板块名称"`
 	Status        ReportStatus `description:"状态"`
 	SendStatus    SendStatus   `description:"发送状态"`

+ 100 - 1
services/product.go

@@ -4,9 +4,18 @@ import (
 	"errors"
 	"eta/eta_mini_crm_ht/models"
 	"eta/eta_mini_crm_ht/utils"
+	"fmt"
+	"strconv"
 	"time"
 )
 
+var (
+	tranMediaMap = map[models.MediaType]string{
+		models.Video: "视频",
+		models.Audio: "音频",
+	}
+)
+
 func GetUnsetProductCountByCondition(productType string, permissionIds []int, condition string, pars []interface{}) (total int, ids []int, err error) {
 	setIds, err := models.GetProductSourceIdsByProductType(productType)
 	if err != nil {
@@ -138,7 +147,7 @@ func GetUnsetProductByCondition(productType string, ids []int, sortCondition str
 			products = append(products, &ProductView{
 				ProductName:   media.MediaName,
 				SourceId:      media.Id,
-				ProductType:   media.SourceType,
+				ProductType:   string(media.MediaType),
 				PublishedTime: media.PublishedTime.Format(time.DateTime),
 			})
 		}
@@ -156,3 +165,93 @@ type ProductView struct {
 	RiskLevel     string
 	PublishedTime string
 }
+
+func (v ProductView) GetRiskLevel(productType string, id int) (risklevel string) {
+	switch productType {
+	case "report":
+		report, err := models.GetReportById(id)
+		if err != nil {
+			utils.FileLog.Error("获取报告失败,无法确认风险等级", err.Error())
+			return
+		}
+		switch report.Source {
+		case models.SourceHT:
+			var permission models.Permission
+			permission, err = models.GetPermissionByName(report.PlateName)
+			if err != nil {
+				utils.FileLog.Error("获取品种信息,无法确认风险等级", err.Error())
+				return
+			}
+			return permission.RiskLevel
+		case models.SourceETA:
+			var permissionIds []int
+			permissionIds, err = models.GetByPermissionIdsByClassifyId(report.ClassifyId)
+			if err != nil {
+				utils.FileLog.Error("获取品种信息,无法确认风险等级", err.Error())
+				return
+			}
+			var permissions []models.Permission
+			permissions, err = models.GetPermissionsWithRiskLevel(permissionIds)
+			if err != nil {
+				utils.FileLog.Error("获取品种信息,无法确认风险等级", err.Error())
+				return
+			}
+			var riskNum int
+			for _, permission := range permissions {
+				if permission.RiskLevel == "" {
+					continue
+				}
+				var parseErr error
+				currentNum, parseErr := strconv.Atoi(permission.RiskLevel[1:])
+				if parseErr != nil {
+					continue
+				}
+				if currentNum > riskNum {
+					riskNum = currentNum
+				}
+			}
+			if riskNum > 0 {
+				return fmt.Sprintf("R%d", riskNum)
+			}
+			return
+		}
+	case "media":
+		media, err := models.GetMediaById("", id)
+		if err != nil {
+			utils.FileLog.Error("获取媒体信息,无法确认风险等级", err.Error())
+			return
+		}
+		permissionsIds, err := models.GetPermissionIdsByMediaId(media.MediaType, id)
+		if err != nil {
+			utils.FileLog.Error("获取媒体信息,无法确认风险等级", err.Error())
+			return
+		}
+		permissions, err := models.GetPermissionsWithRiskLevel(permissionsIds)
+		if err != nil {
+			utils.FileLog.Error("获取媒体信息,无法确认风险等级", err.Error())
+			return
+		}
+		var riskNum int
+		for _, permission := range permissions {
+
+			if permission.RiskLevel == "" {
+				continue
+			}
+			var parseErr error
+			currentNum, parseErr := strconv.Atoi(permission.RiskLevel[1:])
+			if parseErr != nil {
+				continue
+			}
+			if currentNum > riskNum {
+				riskNum = currentNum
+			}
+		}
+		if riskNum > 0 {
+			return fmt.Sprintf("R%d", riskNum)
+		}
+		return
+	default:
+		return
+	}
+	return
+}