package report
import (
"encoding/json"
"errors"
"fmt"
"hongze/hongze_yb/global"
"hongze/hongze_yb/models/response"
"hongze/hongze_yb/models/response/purchase"
"hongze/hongze_yb/models/tables/chart_permission"
"hongze/hongze_yb/models/tables/chart_permission_chapter_mapping"
"hongze/hongze_yb/models/tables/chart_permission_search_key_word_mapping"
"hongze/hongze_yb/models/tables/daily_base_column"
"hongze/hongze_yb/models/tables/rddp/classify"
"hongze/hongze_yb/models/tables/rddp/report"
"hongze/hongze_yb/models/tables/rddp/report_chapter"
"hongze/hongze_yb/models/tables/rddp/report_chapter_ticker"
"hongze/hongze_yb/models/tables/report_chapter_type"
"hongze/hongze_yb/models/tables/report_chapter_type_permission"
"hongze/hongze_yb/services/company"
elasticService "hongze/hongze_yb/services/elastic"
"hongze/hongze_yb/services/user"
"hongze/hongze_yb/utils"
"html"
"sort"
"strconv"
"time"
)
func GetLatestClassReport(permissionIds []int, userId uint64) (purchaseList []*purchase.PurchaseListItem, err error) {
var errMsg string
defer func() {
if err != nil {
global.LOG.Critical(fmt.Sprintf("GetLatestClassReport: userId=%d, err:%s, errMsg:%s", userId, err.Error(), errMsg))
}
}()
//获取所有分类信息
classifys, err := classify.GetSimpleAll()
if err != nil {
errMsg = err.Error()
err = errors.New("分类查询出错")
return
}
classifyFirstIconMap := make(map[int]string)
classifySecondNameMap := make(map[string]int)
for _, v := range classifys{
if v.ParentId == 0 {
classifyFirstIconMap[v.Id] = v.YbIconUrl
}else{
classifySecondNameMap[v.ClassifyName] = v.Id
}
}
//获取最新的晨报
dayReport, err := report.GetLatestDay()
if err != nil {
errMsg = err.Error()
err = errors.New("晨报查询出错")
return
}
//获取最新的有权限的周报
typeIds, err := report_chapter_type.GetEffectTypeID()
if err != nil {
errMsg = err.Error()
err = errors.New("晨报查询出错")
return
}
weekReport, err := GetLatestWeek(permissionIds, typeIds)
if err != nil {
errMsg = err.Error()
err = errors.New("周报查询出错")
return
}
// 有权限的二级分类
var reports []*report.Report
var classifyIdSeconds []int
classifyIdSecondMap := make(map[int]bool)
// 获取晨报和周报以外的其他报告
// 获取有权限的二级分类
chartPermissions, err := chart_permission_search_key_word_mapping.GetChartPermissionByFrom("rddp")
if err != nil {
errMsg = err.Error()
err = errors.New("分类权限查询出错")
return
}
if len(chartPermissions) > 0 {
for _, v := range chartPermissions {
for _, myPerId := range permissionIds {
if v.ChartPermissionId == myPerId {
if classifyIdSecond, ok := classifySecondNameMap[v.KeyWord]; ok {
if _, ok2 := classifyIdSecondMap[classifyIdSecond]; !ok2 {
classifyIdSeconds = append(classifyIdSeconds, classifyIdSecond)
classifyIdSecondMap[classifyIdSecond] = true
}
}
break
}
}
}
}
reports, err = report.GetLatestClassReportsByClassifyIdSeconds(classifyIdSeconds)
if err != nil {
errMsg = err.Error()
err = errors.New("二级分类最新报告查询出错")
return
}
if dayReport.Id > 0 {
reports = append(reports, dayReport)
}
if weekReport != nil {
reports = append(reports, weekReport)
}
//获取未读数
unReadItem, tErr := GetUnRead(classifyIdSeconds, userId)
if tErr != nil {
err = tErr
return
}
if len(reports) > 0 {
otherLatestItem := new(purchase.PurchaseListItem)
// 处理其他报告()
for _, v := range reports {
temp := new(purchase.PurchaseListItem)
temp.ReportId = v.Id
temp.ClassifyIdFirst = v.ClassifyIdFirst
temp.ClassifyNameFirst = v.ClassifyNameFirst
temp.Stage = v.Stage
temp.Title = v.Title
temp.ClassifyIdSecond = v.ClassifyIdSecond
temp.ClassifyNameSecond = v.ClassifyNameSecond
temp.Time = v.PublishTime
if temp.ClassifyNameFirst == "大事点评" || temp.ClassifyNameFirst == "会议纪要" || temp.ClassifyNameFirst == "年报合集"{
if otherLatestItem.Time.Format(utils.FormatDateTime) > v.PublishTime.Format(utils.FormatDateTime) {
continue
}
temp.Unread = unReadItem["大事点评"] + unReadItem["会议纪要"] + unReadItem["年报合集"]
temp.Content = fmt.Sprintf("【第%d期|FICC】%s", temp.Stage, temp.ClassifyNameFirst)
otherLatestItem = temp
}
}
for _, v := range reports {
temp := new(purchase.PurchaseListItem)
temp.ReportId = v.Id
temp.ClassifyIdFirst = v.ClassifyIdFirst
temp.ClassifyNameFirst = v.ClassifyNameFirst
temp.Stage = v.Stage
temp.Title = v.Title
temp.ClassifyIdSecond = v.ClassifyIdSecond
temp.ClassifyNameSecond = v.ClassifyNameSecond
temp.Time = v.PublishTime
temp.Unread = unReadItem[temp.ClassifyNameFirst]
if imgUrl, ok := classifyFirstIconMap[temp.ClassifyIdFirst]; ok {
temp.ImgUrl = imgUrl
}
if temp.ClassifyNameFirst == "晨报" || temp.ClassifyNameFirst == "周报" { //晨报或者周报,查询最新的章节信息
temp.Content = fmt.Sprintf("【第%d期|FICC】%s", temp.Stage, temp.Title)
}else if temp.ClassifyNameFirst == "大事点评" || temp.ClassifyNameFirst == "会议纪要" || temp.ClassifyNameFirst == "年报合集"{
continue
}else{
if temp.ClassifyIdSecond > 0 { //包含二级分类
temp.Content = fmt.Sprintf("【第%d期|FICC| %s】%s", temp.Stage, temp.ClassifyNameSecond, temp.ClassifyNameFirst)
} else { //无二级分类
temp.Content = fmt.Sprintf("【第%d期|FICC】%s", temp.Stage, temp.ClassifyNameFirst)
}
}
purchaseList = append(purchaseList, temp)
}
purchaseList = append(purchaseList, otherLatestItem)
}
return
}
// GetPurchaseDetail 已购详情页面
func GetPurchaseDetail(permissionIds []int, userId uint64, classifyIdFirst int, pageIndex, pageSize int) (ret *purchase.DetailResp, err error) {
var errMsg string
defer func() {
if err != nil {
global.LOG.Critical(fmt.Sprintf("GetPurchaseDetail: userId=%d, err:%s, errMsg:%s", userId, err.Error(), errMsg))
}
}()
var reports []*report.Report
var weekReportIds []int
classifyInfo, err := classify.GetByClassifyId(classifyIdFirst)
if err != nil {
errMsg = err.Error()
err = errors.New("分类查询出错")
return
}
if classifyInfo.Id == 0 {
err = errors.New("分类不存在")
return
}
classifyNameFirst := classifyInfo.ClassifyName
offset := (pageIndex - 1) * pageSize
var total int64
var classifyIdSeconds []int
if classifyNameFirst == "晨报" {
//分类获取
reports, err = report.GetListByClassifyIdFirst(classifyIdFirst, offset, pageSize)
if err != nil {
errMsg = err.Error()
err = errors.New("晨报查询出错")
return
}
total, err = report.GetListCountByClassifyIdFirst(classifyIdFirst)
if err != nil {
errMsg = err.Error()
err = errors.New("查询报告总数出错")
return
}
}else {
if classifyNameFirst == "周报" {
newTypeIds, tErr := GetWeekTypeIdsByPermissionIds(permissionIds,[]int{})
if tErr != nil {
return
}
weekReportIds, err = report_chapter.GetReportIdsByTypeIdsAndClass(newTypeIds, classifyNameFirst)
//分类获取
reports, err = report.GetListByIDsAndClassifyIdFirst(weekReportIds, classifyIdFirst, offset, pageSize)
if err != nil {
return
}
total, err = report.GetListCountByIDsAndClassifyIdFirst(weekReportIds, classifyIdFirst)
if err != nil {
errMsg = err.Error()
err = errors.New("查询报告总数出错")
return
}
}else{
//获取有权限的二级分类
var classifyNameSeconds []string
chartPermissions, tErr := chart_permission_search_key_word_mapping.GetChartPermissionByFrom("rddp")
if tErr != nil {
errMsg = tErr.Error()
err = errors.New("分类权限查询出错")
return
}
if len(chartPermissions) > 0 {
for _, v := range chartPermissions {
for _, myPerId := range permissionIds {
if v.ChartPermissionId == myPerId {
if classifyNameFirst == "大事点评" || classifyNameFirst == "会议纪要" || classifyNameFirst == "年报合集" {
if v.KeyWord == "大事点评" || v.KeyWord == "会议纪要" || v.KeyWord == "年报合集" { //筛选出用户有权限的二级分类ID
classifyNameSeconds = append(classifyNameSeconds, v.KeyWord)
}
}else{
classifyNameSeconds = append(classifyNameSeconds, v.KeyWord)
}
break
}
}
}
}
//获取所有二级分类的id
if classifyNameFirst == "大事点评" || classifyNameFirst == "会议纪要" || classifyNameFirst == "年报合集" {
classifyIdSeconds, tErr = classify.GetOtherIdsByClassifyNames(classifyNameSeconds)
}else{
classifyIdSeconds, tErr = classify.GetIdsByClassifyNameAndParentId(classifyNameSeconds, classifyIdFirst)
}
if tErr != nil {
errMsg = tErr.Error()
err = errors.New("二级分类查询出错")
return
}
if len(classifyIdSeconds) > 0 {
//分类获取
reports, err = report.GetListByClassifyIdSeconds(classifyIdSeconds, offset, pageSize)
if err != nil {
return
}
total, err = report.GetListCountByClassifyIdSeconds(classifyIdSeconds)
if err != nil {
errMsg = err.Error()
err = errors.New("查询报告总数出错")
return
}
}
}
}
var list []*purchase.Detail
ret = new(purchase.DetailResp)
if len(reports) > 0 {
var viewReportIds []int
for _, v := range reports {
viewReportIds = append(viewReportIds, v.Id)
temp := new(purchase.Detail)
temp.ReportId = v.Id
temp.ClassifyIdFirst = v.ClassifyIdFirst
temp.ClassifyNameFirst = v.ClassifyNameFirst
temp.Title = v.Title
temp.ClassifyIdSecond = v.ClassifyIdSecond
temp.ClassifyNameSecond = v.ClassifyNameSecond
temp.Stage = v.Stage
// TODO 背景图
temp.ImgUrl = classifyInfo.YbBgUrl
if temp.ClassifyNameFirst == "晨报" || temp.ClassifyNameFirst == "周报" { //晨报或者周报,查询最新的章节信息
temp.Content = fmt.Sprintf("【第%d期|FICC】%s", temp.Stage, temp.Title)
temp.TopName = temp.Title
}else{
if temp.ClassifyIdSecond > 0 { //包含二级分类
temp.Content = fmt.Sprintf("【第%d期|FICC| %s】%s", temp.Stage, temp.ClassifyNameSecond, temp.ClassifyNameFirst)
temp.TopName = temp.ClassifyNameSecond
} else { //无二级分类
temp.Content = fmt.Sprintf("【第%d期|FICC】%s", temp.Stage, temp.ClassifyNameFirst)
temp.TopName = temp.ClassifyNameFirst
}
}
temp.Time = v.PublishTime
list = append(list, temp)
}
}
ret.List = list
ret.Paging = response.GetPaging(pageIndex, pageSize, int(total))
_, tErr := BatchInsertReportView(weekReportIds, userId, classifyNameFirst, classifyIdSeconds)
if tErr != nil {
err = tErr
return
}
return
}
// 获取报告详情
func GetReportDetail(userinfo user.UserInfo, reportId int) (reportDetail response.ReportDetail, err error) {
var errMsg string
defer func() {
if err != nil {
global.LOG.Critical(fmt.Sprintf("GetReportDetail: userId=%d, err:%s, errMsg:%s", userinfo.UserID, err.Error(), errMsg))
}
}()
reportInfo, err := report.GetByReportId(reportId)
if err != nil {
errMsg = err.Error()
err = errors.New("报告查询出错")
return
}
if reportInfo.Id == 0 {
err = errors.New("报告不存在")
return
}
//判断权限
var authOk bool
var permissionCheckInfo response.PermissionCheckInfo
if reportInfo.ClassifyNameFirst == "晨报"{
authOk, permissionCheckInfo, err = CheckDayReportPermission(userinfo)
}else if reportInfo.ClassifyNameFirst == "周报"{
authOk, permissionCheckInfo, err = CheckWeekReportPermission(userinfo, reportId)
}else{
authOk, permissionCheckInfo, err = CheckReportPermission(userinfo, reportId)
}
if err != nil {
return
}
reportItem := new(response.ReportItem)
reportItem.ReportId = reportInfo.Id
reportItem.Title = reportInfo.Title
reportItem.PublishTime = reportInfo.PublishTime
reportItem.ClassifyNameFirst = reportInfo.ClassifyNameFirst
reportItem.ClassifyNameSecond = reportInfo.ClassifyNameSecond
reportItem.Stage = reportInfo.Stage
reportItem.Abstract = reportInfo.Abstract
reportItem.ContentSub = html.UnescapeString(reportInfo.ContentSub)
reportItem.Frequency = reportInfo.Frequency
reportItem.VideoName = reportInfo.VideoName
reportItem.VideoPlaySeconds = reportInfo.VideoPlaySeconds
reportItem.Author = reportInfo.Author
var reportTypeList []*response.ReportChapterListItem
if (reportInfo.ClassifyNameFirst == "晨报" || reportInfo.ClassifyNameFirst == "周报") {
//(晨报和周报的banner图)
if reportInfo.ClassifyNameFirst == "晨报" {
reportItem.BannerUrl = utils.ALIYUN_YBIMG_HOST + "report_banner_day.jpg"
} else {
reportItem.BannerUrl = utils.ALIYUN_YBIMG_HOST + "report_banner_week.jpg"
}
if authOk {
reportTypeList, err = GetChapterListByReport(reportInfo.ClassifyNameFirst, reportInfo.Id, userinfo.CompanyID)
if err != nil {
return
}
}
}
//如果有权限则展示content
if authOk {
_ = AddViewRecord(userinfo, reportInfo.Id, reportInfo.ClassifyNameFirst, 0)
reportItem.Content = html.UnescapeString(reportInfo.Content)
reportItem.VideoUrl = reportInfo.VideoUrl
}
reportDetail.ReportInfo = reportItem
reportDetail.ReportChapterList = reportTypeList
reportDetail.PermissionCheck = &permissionCheckInfo
reportDetail.AuthOk = authOk
return
}
// CheckReportPermission 验证用户查看报告的权限
func CheckReportPermission(userInfo user.UserInfo, reportId int) (authOk bool, permissionCheckInfo response.PermissionCheckInfo, err error) {
permissionIds, err := chart_permission_chapter_mapping.GetPermissionIdsByReportId(reportId, "rddp")
if err != nil && err != utils.ErrNoRow {
return
}
authOk, permissionCheckInfo, err = company.GetCheckPermission(userInfo.CompanyID, int(userInfo.UserID), permissionIds)
return
}
// GetReportList 获取报告列表
func GetReportList(user user.UserInfo, keyWord string, classifyIdFirst, classifyIdSecond, pageIndex, pageSize int) (ret *response.ReportList, err error) {
var errMsg string
defer func() {
if err != nil {
global.LOG.Critical(fmt.Sprintf("GetReportList: userId=%d, err:%s, errMsg:%s", user.UserID, err.Error(), errMsg))
}
}()
var condition string
pars := make([]interface{}, 0)
classifyParent, err := classify.GetByClassifyId(classifyIdFirst)
if err != nil {
errMsg = err.Error()
err = errors.New("分类查询出错")
return
}
if classifyParent.Id == 0 {
err = errors.New("该分类不存在")
return
}
condition = `classify_id_first = ?`
pars = append(pars, classifyIdFirst)
permissionMap := make(map[string][]int)
checkPermissionMap := make(map[string]bool)
var reportImgUrl string
reportImgMap := make(map[string]string)
if classifyIdSecond > 0 {
classifyInfo, tErr := classify.GetByClassifyId(classifyIdSecond)
if tErr != nil {
errMsg = tErr.Error()
err = errors.New("分类查询出错")
return
}
if classifyInfo.Id == 0 {
err = errors.New("该二级分类不存在")
return
}
condition += " AND classify_id_second = ?"
pars = append(pars, classifyIdSecond)
//查询二级分类对应的权限
permissionIds, tErr := chart_permission_search_key_word_mapping.GetChartPermissionIdsByKeyWord(classifyInfo.ClassifyName)
if tErr != nil {
errMsg = tErr.Error()
err = errors.New("分类权限查询出错")
return
}
permissionMap[classifyInfo.ClassifyName] = permissionIds
reportImgUrl = classifyInfo.ReportImgUrl
}else{
chartPermissions, tErr := chart_permission_search_key_word_mapping.GetChartPermissionByFrom("rddp")
if tErr != nil {
errMsg = tErr.Error()
err = errors.New("分类权限查询出错")
return
}
if len(chartPermissions) > 0 {
for _, v := range chartPermissions {
permissionMap[v.KeyWord] = append(permissionMap[v.KeyWord], v.ChartPermissionId)
}
}
//获取二级分类的所有头像
classifyList, tErr := classify.GetListByPid(classifyIdFirst)
if tErr != nil {
errMsg = tErr.Error()
err = errors.New("二级分类查询出错")
return
}
for _, v := range classifyList {
reportImgMap[v.ClassifyName] = v.ReportImgUrl
}
}
// 获取有效的权限id列表
validPermissionIdList, err := company.GetValidPermissionIdListByCompany2ProductId(user.CompanyID, 1)
if err != nil && err != utils.ErrNoRow {
errMsg = err.Error()
err = errors.New("查询分类出错")
return
}
if len(validPermissionIdList) > 0 {
for classifyName, perIds := range permissionMap {
checkLoop:
for _, checkId := range perIds{
for _, validPerid := range validPermissionIdList {
if checkId == validPerid {
checkPermissionMap[classifyName] = true
break checkLoop
}
}
}
}
}
if keyWord != "" {
condition += ` AND (title LIKE ? OR abstract LIKE ?) `
pars = append(pars, "%" + keyWord + "%")
pars = append(pars, "%" + keyWord + "%")
}
offset := (pageIndex - 1) * pageSize
list, err := report.GetReportList(condition, pars, offset, pageSize)
if err != nil {
errMsg = err.Error()
err = errors.New("报告查询出错")
return
}
total, err := report.GetReportListCount(condition, pars)
if err != nil {
errMsg = err.Error()
err = errors.New("查询报告总数出错")
return
}
var reportList []*response.ReportListItem
if len(list) > 0 {
for _, reportInfo := range list {
reportItem := new(response.ReportListItem)
reportItem.ReportId = reportInfo.Id
reportItem.Title = reportInfo.Title
reportItem.PublishTime = reportInfo.PublishTime
reportItem.ClassifyNameFirst = reportInfo.ClassifyNameFirst
reportItem.ClassifyNameSecond = reportInfo.ClassifyNameSecond
reportItem.ClassifyIdFirst = reportInfo.ClassifyIdFirst
reportItem.ClassifyIdSecond = reportInfo.ClassifyIdSecond
reportItem.Stage = reportInfo.Stage
reportItem.Abstract = reportInfo.Abstract
reportItem.Author = reportInfo.Author
if reportImgUrl != ""{
reportItem.ReportImgUrl = reportImgUrl
}else if url,ok := reportImgMap[reportInfo.ClassifyNameSecond]; ok {
reportItem.ReportImgUrl = url
}
if authOk,ok := checkPermissionMap[reportInfo.ClassifyNameSecond]; ok && authOk {
reportItem.VideoUrl = reportInfo.VideoUrl
reportItem.AuthOk = authOk
}
reportList = append(reportList, reportItem)
}
}
ret = new(response.ReportList)
ret.List = reportList
ret.Paging = response.GetPaging(pageIndex, pageSize, int(total))
return
}
// GetCollectReportList 首页展示报告汇总列表
func GetCollectReportList(user user.UserInfo, chartPermissionId, pageIndex, pageSize int) (ret *response.ReportCollectResp, err error) {
var errMsg string
defer func() {
if err != nil {
global.LOG.Critical(fmt.Sprintf("GetCollectReportList: userId=%d, err:%s, errMsg:%s", user.UserID, err.Error(), errMsg))
}
}()
// 查询权限的基本信息
permissionInfo, err := chart_permission.GetByChartPermissionId(chartPermissionId)
if err != nil {
errMsg = err.Error()
err = errors.New("查询权限出错")
return
}
if permissionInfo.ChartPermissionID == 0 {
err = errors.New("权限不存在")
return
}
// 除了晨报和周报以外的其他报告
classifyNames, err := chart_permission_search_key_word_mapping.GetKeyWordsByChartPermissionId(chartPermissionId, "rddp")
if err != nil {
errMsg = err.Error()
err = errors.New("查询权限对应的分类出错")
return
}
var classifySecondIds []int
if len(classifyNames) > 0 {
classifySecondIds, err = classify.GetSecondIdsByClassifyNames(classifyNames)
if err != nil {
errMsg = err.Error()
err = errors.New("查询分类出错")
return
}
}
// 查询晨报和周报相对应的章节ID
reportChapterTypeIds, err := report_chapter_type_permission.GetTypeIdsByChartPermissionId(chartPermissionId)
if err != nil {
errMsg = err.Error()
err = errors.New("查询权限对应的章节出错")
return
}
var reportList []*response.ReportCollectListItem
list := response.ReportCollectListResp{}
var total int64
if len(reportChapterTypeIds) > 0 || len(classifySecondIds) > 0 {
offset := (pageIndex - 1) * pageSize
reportList, err = report.GetReportCollectListByPermission(classifySecondIds, reportChapterTypeIds, offset, pageSize)
if err != nil {
errMsg = err.Error()
err = errors.New("查询报告信息出错")
return
}
listMap := make(map[string]*response.ReportCollectList)
for _, v := range reportList {
v.ContentSub = html.UnescapeString(v.ContentSub)
if _, ok := listMap[v.PublishTime.Format("2006-01-02")]; !ok {
temp := new(response.ReportCollectList)
temp.Date = v.PublishTime.Format("2006-01-02")
listMap[v.PublishTime.Format("2006-01-02")] = temp
}
listMap[v.PublishTime.Format("2006-01-02")].SubList = append(listMap[v.PublishTime.Format("2006-01-02")].SubList, v)
}
for _, v := range listMap {
list = append(list, v)
}
total, err = report.GetReportCollectCountByPermission(classifySecondIds, reportChapterTypeIds)
if err != nil {
errMsg = err.Error()
err = errors.New("查询报告总数出错")
return
}
if len(list) > 0 {
sort.Sort(list)
}
}
ret = new(response.ReportCollectResp)
ret.List = list
ret.Paging = response.GetPaging(pageIndex, pageSize, int(total))
return
}
func SearchReport(user user.UserInfo, keyWord string, pageIndex, pageSize int)(ret *response.ReportSearchResp, err error) {
var errMsg string
defer func() {
if err != nil {
global.LOG.Critical(fmt.Sprintf("SearchReport: userId=%d, err:%s, errMsg:%s", user.UserID, err.Error(), errMsg))
}
}()
searchResp, total, err := elasticService.SearchReport(keyWord, pageIndex, pageSize)
if err != nil {
errMsg = err.Error()
err = errors.New("查询失败")
return
}
var reportList []*response.ReportCollectListItem
if searchResp.Hits != nil {
for _, v := range searchResp.Hits.Hits {
temp := new(response.ReportCollectListItem)
itemJson, tmpErr := v.Source.MarshalJSON()
if tmpErr != nil {
errMsg = tmpErr.Error()
err = errors.New("解析出错")
return
}
reportItem := new(response.EsReportItem)
tmpErr = json.Unmarshal(itemJson, &reportItem)
if tmpErr != nil {
errMsg = tmpErr.Error()
err = errors.New("解析json出错")
return
}
temp.ReportId = reportItem.ReportId
temp.ClassifyIdFirst = reportItem.ClassifyIdFirst
temp.ClassifyNameFirst = reportItem.ClassifyNameFirst
temp.ClassifyIdSecond = reportItem.ClassifyIdSecond
temp.ClassifyNameSecond = reportItem.ClassifyNameSecond
temp.Title = reportItem.Title
temp.ContentSub = html.UnescapeString(html.UnescapeString(reportItem.BodyContent))
temp.PublishTime, err = time.Parse("2006-01-02 15:04:05", reportItem.PublishTime)
fmt.Println(*reportItem)
if len(v.Highlight["Title"]) > 0 {
temp.Title = v.Highlight["Title"][0]
}
if len(v.Highlight["BodyContent"]) > 0 {
temp.ContentSub = html.UnescapeString(html.UnescapeString(v.Highlight["BodyContent"][0]))
}
if len(v.Highlight["Categories"]) > 0 {
if temp.ClassifyNameSecond != "" {
temp.ClassifyNameSecond = ""+temp.ClassifyNameSecond+""
}
if temp.ClassifyNameFirst != "" {
temp.ClassifyNameFirst = ""+temp.ClassifyNameFirst+""
}
}
reportList = append(reportList, temp)
}
}
ret = new(response.ReportSearchResp)
ret.List = reportList
ret.Paging = response.GetPaging(pageIndex, pageSize, int(total))
return
}
// GetTickerData 获取指标数据
func GetTickerData(user user.UserInfo, reportChapterId int) (list []*response.TickerDataItem, err error) {
var errMsg string
defer func() {
if err != nil {
global.LOG.Critical(fmt.Sprintf("GetTickerData: userId=%d, err:%s, errMsg:%s", user.UserID, err.Error(), errMsg))
}
}()
//查询章节类型
chapter, err := report_chapter.GetTypeIdById(reportChapterId)
if err != nil {
errMsg = err.Error()
err = errors.New("查询章节失败")
return
}
if chapter.ReportChapterId == 0 {
err = errors.New("章节不存在或者未发布")
return
}
tickers, err := report_chapter_ticker.GetTickerByChapterId(reportChapterId)
if err != nil {
errMsg = err.Error()
err = errors.New("查询章节指标失败")
return
}
if len(tickers) > 0 {
var tickerNames []string
for _, v := range tickers {
tickerNames = append(tickerNames, v.Ticker)
}
var dataList []*response.TickerDataItem
if chapter.TypeId == 17 {
dataList, err = daily_base_column.GetDataByBaseColumnTickers17(tickerNames)
}else{
dataList, err = daily_base_column.GetDataByBaseColumnTickers(tickerNames)
}
if err != nil {
errMsg = err.Error()
err = errors.New("查询指标数据失败")
return
}
if len(dataList) >= 0 {
for _, v := range dataList {
temp := new(response.TickerDataItem)
temp.BaseColumnName = v.BaseColumnName
temp.Ticker = v.Ticker
temp.Date = v.Date
temp.TickerValue, _ = strconv.ParseFloat(fmt.Sprintf("%.2f",v.TickerValue), 2)
temp.LastValue, _ = strconv.ParseFloat(fmt.Sprintf("%.2f",v.LastValue), 2)
temp.MmValue, _ = strconv.ParseFloat(fmt.Sprintf("%.2f", v.MmValue), 2)
temp.DdValue, _ = strconv.ParseFloat(fmt.Sprintf("%.2f", v.DdValue), 2)
temp.WwValue, _ = strconv.ParseFloat(fmt.Sprintf("%.2f", v.WwValue), 2)
list = append(list, temp)
}
}
}
return
}