kobe6258 8 months ago
parent
commit
ec94f509c3

+ 35 - 14
domian/report/report_service.go

@@ -12,6 +12,9 @@ import (
 
 const (
 	indexName = "report_index"
+
+	SourceETA = "ETA"
+	SourceHT  = "HT"
 )
 
 func elastic() *es.ESClient {
@@ -29,13 +32,14 @@ type ESReport struct {
 }
 
 type ReportDTO struct {
-	ReportID      int                    `json:"report_id"`
-	OrgId         int                    `json:"org_id"`
-	Title         string                 `json:"title"`
-	Author        string                 `json:"author"`
-	Source        reportDao.ReportSource `json:"source"`
-	Abstract      string                 `json:"abstract"`
-	PublishedTime string                 `json:"published_time"`
+	ReportID        int         `json:"report_id"`
+	OrgId           int         `json:"org_id"`
+	Title           string      `json:"title"`
+	Author          string      `json:"author"`
+	Source          string      `json:"source"`
+	Abstract        string      `json:"abstract"`
+	PublishedTime   string      `json:"published_time"`
+	PermissionNames interface{} `json:"permissionNames"`
 }
 
 type PermissionDTO struct {
@@ -58,14 +62,31 @@ func GetPermissionList() (dtoList []PermissionDTO, err error) {
 	return
 }
 
-func GetReportLabelsById(id int, source reportDao.ReportSource) {
+func GetReportPermissionsById(id int, source string) (permissionIds []PermissionDTO) {
 	switch source {
-	case reportDao.SourceETA:
-		//eta.GetReportLabelById()
+	case SourceETA:
+		return getETAReportFirstPermissions(id)
+	case SourceHT:
+		return []PermissionDTO{}
+	}
+	return
+}
+
+func getETAReportFirstPermissions(id int) (permissionDTOs []PermissionDTO) {
+	classifyId, err := etaDao.GetReportClassifyById(id)
+	if err != nil || classifyId == 0 {
+		logger.Error("获取研报分类信息失败:%v", err)
 		return
-	case reportDao.SourceHT:
+	}
+	permissions, err := etaDao.GetFirstPermissionsByClassifyID(classifyId)
+	if err != nil {
+		logger.Error("获取研报一级品种信息失败:%v", err)
 		return
 	}
+	for _, permission := range permissions {
+		permissionDTOs = append(permissionDTOs, convertPermissionDTO(permission))
+	}
+	return
 }
 func (es ESReport) GetId() string {
 	return strconv.Itoa(es.ReportID)
@@ -106,9 +127,9 @@ func GetListByConditionDesc(column string, limit int) (dtoList []ReportDTO, err
 		logger.Error("获取研报失败:%v", err)
 		return
 	}
-	dtoList = []ReportDTO{}
 	for _, report := range reports {
-		dtoList = append(dtoList, convertReportDTO(report))
+		dto := convertReportDTO(report)
+		dtoList = append(dtoList, dto)
 	}
 	return
 }
@@ -152,7 +173,7 @@ func convertReportDTO(report reportDao.Report) ReportDTO {
 		Title:         report.Title,
 		OrgId:         report.OrgID,
 		Author:        report.Author,
-		Source:        report.Source,
+		Source:        string(report.Source),
 		Abstract:      report.Abstract,
 		PublishedTime: report.PublishedTime,
 	}

+ 0 - 1
domian/sms/sms_service.go

@@ -48,7 +48,6 @@ func SendSMSCode(codeDTO CodeDTO) (smid int, err error) {
 	//写库
 	smid, err = sms.InsertVerificationRecord(verificationRecord)
 	if err != nil {
-		logger.Error("插入验证记录失败:", err)
 		return
 	}
 	//设置redis

+ 4 - 12
domian/task/task_service.go

@@ -30,22 +30,14 @@ func InitAndStartTask(dto TaskDTO) (taskId int, err error) {
 	return
 }
 func StartTask(taskId int) {
-	err := task.UpdateTaskStatusById(taskId, task.StatusProcess)
-	if err != nil {
-		logger.Error("修改任务状态为启动失败:%d", taskId)
-	}
+	task.UpdateTaskStatusById(taskId, task.StatusProcess)
+
 }
 func UpdateAndFailedTask(taskId int, detail string) {
-	err := task.UpdateDetailsAndStatusById(taskId, task.StatusFailed, detail)
-	if err != nil {
-		logger.Error("修改任务状态为启动失败:%d", taskId)
-	}
+	task.UpdateDetailsAndStatusById(taskId, task.StatusFailed, detail)
 }
 func UpdateAndSuccessTask(taskId int, detail string) {
-	err := task.UpdateDetailsAndStatusById(taskId, task.StatusSuccess, detail)
-	if err != nil {
-		logger.Error("修改任务状态为启动失败:%d", taskId)
-	}
+	task.UpdateDetailsAndStatusById(taskId, task.StatusSuccess, detail)
 }
 func convertToTask(dto TaskDTO) task.Task {
 	return task.Task{

+ 21 - 25
models/eta/eta_permission.go

@@ -6,28 +6,15 @@ import (
 )
 
 const (
-	Columns = "chart_permission_id,permission_name,parent_id"
+	Columns                 = "chart_permission_id,permission_name,parent_id"
+	FirstPermissionsColumns = "DISTINCT parent_id"
 )
 
 // ChartPermission represents the structure of the chart_permission table.
 type ChartPermission struct {
-	ChartPermissionID     int    `gorm:"primaryKey;autoIncrement;column:chart_permission_id;comment:主键"`
-	ChartPermissionName   string `gorm:"size:20;column:chart_permission_name;comment:名称"`
-	PermissionName        string `gorm:"size:50;default:'';column:permission_name;comment:权限名"`
-	Sort                  int    `gorm:"size:10;default:1;column:sort;comment:排序"`
-	Enabled               bool   `gorm:"size:1;default:true;column:enabled;comment:是否可用"`
-	ClassifyName          string `gorm:"size:50;column:classify_name"`
-	ProductName           string `gorm:"size:50;default:'';column:product_name"`
-	ProductID             int    `gorm:"size:11;default:0;column:product_id"`
-	ImageURL              string `gorm:"size:255;column:image_url;comment:图片地址"`
-	ShowType              int    `gorm:"size:4;default:0;column:show_type;comment:1:查研观向小程序展示"`
-	IsOther               bool   `gorm:"size:2;default:false;column:is_other;comment:是否是其他,用于查研观向小程序后台展示"`
-	IsReport              bool   `gorm:"size:4;default:false;column:is_report;comment:是否是报告,用于查研观向小程序前台报告展示"`
-	CygxAuth              bool   `gorm:"size:4;default:false;column:cygx_auth;comment:是否是权限,用于查研观向小程序前台权限校验"`
-	PermissionType        uint16 `gorm:"size:2;unsigned;default:0;column:permission_type;comment:1主观,2客观"`
-	ProductPermissionName string `gorm:"size:50;default:'';column:product_permission_name;comment:种类权限名称"`
-	ParentID              int    `gorm:"size:11;default:0;column:parent_id;comment:父级权限id"`
-	IsPublic              bool   `gorm:"size:4;default:false;column:is_public;comment:是否是公有权限1:公有权限,0私有权限"`
+	ChartPermissionID int    `gorm:"primaryKey;autoIncrement;column:chart_permission_id;comment:主键"`
+	PermissionName    string `gorm:"size:50;default:'';column:permission_name;comment:权限名"`
+	ParentID          int    `gorm:"size:11;default:0;column:parent_id;comment:父级权限id"`
 }
 
 // TableName sets the insert table name for this struct type
@@ -37,14 +24,23 @@ func (c *ChartPermission) TableName() string {
 
 func GetChartPermissionList() (chartPermissionList []ChartPermission, err error) {
 	db := models.ETA()
-	err = db.Select(Columns).Where("product_id =?", 1).Order("parent_id asc").Order("sort asc").Find(&chartPermissionList).Error
-	if err != nil {
-		logger.Error("查询eta品种列表失败:%v", err)
-		return
-	}
-	if chartPermissionList == nil {
+	err = db.Select(Columns).Where("product_id =? and enabled =?", 1, true).Order("parent_id asc").Order("sort asc").Find(&chartPermissionList).Error
+	if err == nil && chartPermissionList == nil {
 		chartPermissionList = []ChartPermission{}
-		return
+	}
+	return
+}
+
+func GetFirstPermissionsByClassifyID(classifyID int) (chartPermissionList []ChartPermission, err error) {
+	sql := "select chart_permission_id, permission_name,parent_id from chart_permission WHERE chart_permission_id in( select DISTINCT cp.parent_id from chart_permission_search_key_word_mapping cpskwp left JOIN chart_permission cp on cp.chart_permission_id =cpskwp.chart_permission_id where cpskwp.classify_id=? order by cp.parent_id)"
+	err = doSql(sql, &chartPermissionList, classifyID)
+	return
+}
+func doSql(sql string, result interface{}, values ...interface{}) (err error) {
+	db := models.ETA()
+	err = db.Raw(sql, values...).Find(result).Error
+	if err != nil {
+		logger.Error("执行sql[%v]失败:%v", sql, err)
 	}
 	return
 }

+ 24 - 21
models/eta/eta_report.go

@@ -1,7 +1,6 @@
 package eta
 
 import (
-	logger "eta_mini_ht_api/common/component/log"
 	"eta_mini_ht_api/models"
 	"strings"
 )
@@ -11,7 +10,8 @@ const (
 	published = 2
 	passed    = 6
 
-	limit = 50
+	limit                                  = 50
+	TlbChartPermissionSearchKeyWordMapping = "chart_permission_search_key_word_mapping"
 )
 
 var (
@@ -34,32 +34,35 @@ type ETAReport struct {
 	PublishTime      string `gorm:"column:publish_time" json:"publish_time"`
 }
 
+//type ReportClassify struct {
+//	ClassifyID int `gorm:"column:classify_id" json:"classify_id"`
+//	ReportPermission
+//}
+
+type ReportPermission struct {
+	ChartPermissionID int `gorm:"primaryKey;autoIncrement;column:chart_permission_id;comment:主键"`
+	ParentID          int `gorm:"size:11;default:0;column:parent_id;comment:父级权限id"`
+}
+
 func GetETAReports(id int) (reports []ETAReport, err error) {
-	err = models.ETA().Table("report").Select(colunms+strings.Join(classifyIds, ",")).Where("state =? or state=?", published, passed).Where("id > ?", id).Order("id").Limit(limit).Find(&reports).Error
-	if err != nil {
-		logger.Error("同步eta数据失败", err)
-	}
-	for _, report := range reports {
-		setClassifyIdValue(&report)
+	err = models.ETA().Table("report").Select(colunms+strings.Join(classifyIds, ",")).Where("state =? or state=?", published, passed).Where("id > ?", id).Order("id asc").Limit(limit).Find(&reports).Error
+	if reports != nil {
+		for _, report := range reports {
+			setClassifyIdValue(&report)
+		}
 	}
 	return
 }
 
 func DoSql(sql string, result interface{}, values ...interface{}) (err error) {
-	db := models.Main()
-	err = db.Raw(sql, values...).Scan(&result).Error
-	if err != nil {
-		logger.Error("执行sql[%v]失败:%v", sql, err)
-	}
-	return
+	db := models.ETA()
+	return db.Raw(sql, values...).Scan(&result).Error
 }
-func GetReportLabelById(id int) (err error) {
-	var classifyId int
-	err = models.ETA().Table("report").Select(" COALESCE( NULLIF(classify_id_third,0) ,NULLIF(classify_id_second,0),classify_id_first) classify_id").Where("id =?", id).First(classifyId).Preload("").Error
-	if err != nil || classifyId <= 0 {
-		logger.Error("获取ETA报告分类失败", err)
-	}
-
+func GetReportClassifyById(id int) (classifyId int, err error) {
+	db := models.ETA()
+	err = db.Table("report").
+		Select("COALESCE(NULLIF(classify_id_third,0),NULLIF(classify_id_second,0),classify_id_first) classify_id").
+		Where("id =?", id).Scan(&classifyId).Error
 	return
 }
 func setClassifyIdValue(report *ETAReport) {

+ 2 - 2
models/report/report.go

@@ -19,7 +19,7 @@ const (
 	StatusDone    ReportStatus = "DONE"
 
 	MaxBatchNum   = 1000
-	CommonColumns = "id,org_id,author,abstract,title,published_time"
+	CommonColumns = "id,org_id,author,abstract,title,source,published_time"
 )
 
 type Report struct {
@@ -58,7 +58,7 @@ func GetETALatestReportId() (id int, err error) {
 }
 func DoSql(sql string, result interface{}, values ...interface{}) (err error) {
 	db := models.Main()
-	err = db.Raw(sql, values...).Scan(&result).Error
+	err = db.Raw(sql, values...).Scan(result).Error
 	if err != nil {
 		logger.Error("执行sql[%v]失败:%v", sql, err)
 	}

+ 3 - 3
models/task/task.go

@@ -46,17 +46,17 @@ func InitTask(task Task) (taskId int, err error) {
 func UpdateTaskStatusById(taskId int, status TaskStatus) (err error) {
 	err = updateColumnById(taskId, "status", status)
 	if err != nil {
-		logger.Error("修改任务状态失败,id:[%d]:%v", taskId, err)
+		logger.Error("修改任务状态失败,id:[%d],状态:%v:%v", taskId, status, err)
 	}
 	return
 }
 
-func UpdateDetailsAndStatusById(taskId int, status TaskStatus, details string) (err error) {
+func UpdateDetailsAndStatusById(taskId int, status TaskStatus, details string) {
 	columns := map[string]interface{}{
 		"details": details,
 		"status":  status,
 	}
-	err = updateColumnsById(taskId, columns)
+	err := updateColumnsById(taskId, columns)
 	if err != nil {
 		logger.Error("修改任务失败,id:[%d]:%v", taskId, err)
 	}

+ 34 - 18
service/report/report_service.go

@@ -9,10 +9,11 @@ import (
 )
 
 type PublishRankedReport struct {
-	Id            int
-	OrgId         int
-	Title         string
-	PublishedTime string
+	Id              int
+	OrgId           int
+	Title           string
+	PermissionNames interface{}
+	PublishedTime   string
 }
 
 type PermissionNode struct {
@@ -29,34 +30,36 @@ func GetRandedReportByPublishTime() (reports []PublishRankedReport, err error) {
 		err = exception.New(exception.GetPublishedRandListFailed)
 		return
 	}
-	reports = convertToPublishRankedReportList(dtoList)
 	//并发获取研报的标签
 	var wg sync.WaitGroup
 	wg.Add(len(dtoList))
-	for _, report := range reports {
-		go func(report *PublishRankedReport) {
+	for i := 0; i < len(dtoList); i++ {
+		go func(report *reportService.ReportDTO) {
 			defer wg.Done()
-			_, err = getReportTags(report.OrgId)
-			if err != nil {
-				logger.Error("获取研报标签失败:%v", err)
-			}
-		}(&report)
+			report.PermissionNames = getReportPermissionNames(report.OrgId, report.Source)
+		}(&dtoList[i])
 	}
 	wg.Wait()
+	reports = convertToPublishRankedReportList(dtoList)
 	return
 }
-func getReportTags(id int) (labels []string, err error) {
-	//reportService.getReportLabelsById(id)
+
+func getReportPermissionNames(id int, source string) (labels []string) {
+	permissions := reportService.GetReportPermissionsById(id, source)
+	for _, permission := range permissions {
+		labels = append(labels, permission.Name)
+	}
 	return
 }
 func convertToPublishRankedReportList(dtoList []reportService.ReportDTO) (reports []PublishRankedReport) {
 	reports = []PublishRankedReport{}
 	for _, dto := range dtoList {
 		report := PublishRankedReport{
-			Id:            dto.ReportID,
-			OrgId:         dto.OrgId,
-			PublishedTime: dto.PublishedTime,
-			Title:         dto.Title,
+			Id:              dto.ReportID,
+			OrgId:           dto.OrgId,
+			PublishedTime:   dto.PublishedTime,
+			Title:           dto.Title,
+			PermissionNames: dto.PermissionNames,
 		}
 		date, err := time.Parse(time.DateTime, report.PublishedTime)
 		if err == nil {
@@ -67,6 +70,19 @@ func convertToPublishRankedReportList(dtoList []reportService.ReportDTO) (report
 	return
 }
 
+func convertToPublishRankedReport(dto reportService.ReportDTO) (report PublishRankedReport) {
+	report = PublishRankedReport{
+		Id:            dto.ReportID,
+		OrgId:         dto.OrgId,
+		PublishedTime: dto.PublishedTime,
+		Title:         dto.Title,
+	}
+	date, err := time.Parse(time.DateTime, report.PublishedTime)
+	if err == nil {
+		report.PublishedTime = date.Format(time.DateOnly)
+	}
+	return
+}
 func GetPermissionList() (root *PermissionNode, err error) {
 	list, err := reportService.GetPermissionList()
 	if err != nil {