|
@@ -0,0 +1,142 @@
|
|
|
+package services
|
|
|
+
|
|
|
+import (
|
|
|
+ "eta_gn/eta_report/models"
|
|
|
+ "eta_gn/eta_report/utils"
|
|
|
+ "html"
|
|
|
+ "strconv"
|
|
|
+ "time"
|
|
|
+)
|
|
|
+
|
|
|
+func ReportKnowledgeResourceAdd(title string, fileUrl string, adminId int, adminRealName string) (msg string, err error) {
|
|
|
+ classifyObj := new(models.KnowledgeClassify)
|
|
|
+ classifyObj, err = classifyObj.GetClassifyByNameAndType("日常报告", models.KnowledgeResourceTypeReport)
|
|
|
+ if err != nil {
|
|
|
+ if utils.IsErrNoRow(err) {
|
|
|
+ msg = "分类不存在,请检查知识资源-报告库中是否存在-市场研究报告/内部报告/日常报告分类"
|
|
|
+ return
|
|
|
+ }
|
|
|
+ msg = "报告库添加失败"
|
|
|
+ return
|
|
|
+ }
|
|
|
+
|
|
|
+ obj := new(models.KnowledgeResource)
|
|
|
+ obj.ResourceType = models.KnowledgeResourceTypeReport
|
|
|
+ obj.ClassifyId = classifyObj.ClassifyId
|
|
|
+ obj.Title = title
|
|
|
+ obj.CreateTime = time.Now()
|
|
|
+ obj.ModifyTime = time.Now()
|
|
|
+ obj.State = models.KnowledgeResourceStatePublished
|
|
|
+ timestamp := strconv.FormatInt(time.Now().UnixNano(), 10)
|
|
|
+ obj.ResourceCode = utils.MD5(utils.CHART_PREFIX + "_" + timestamp)
|
|
|
+ obj.AdminId = adminId
|
|
|
+ obj.AdminRealName = adminRealName
|
|
|
+ obj.SourceFrom = "市场信息研究所"
|
|
|
+ currentTime := time.Now()
|
|
|
+ obj.StartTime = ¤tTime
|
|
|
+ // 此处传入的url会在入库时存入knowledge_resource_file表中
|
|
|
+ obj.FileUrl = fileUrl
|
|
|
+ if fileUrl != "" {
|
|
|
+ obj.IsFile = 1
|
|
|
+ }
|
|
|
+ err = obj.Create()
|
|
|
+ if err != nil {
|
|
|
+ return
|
|
|
+ }
|
|
|
+ return
|
|
|
+}
|
|
|
+
|
|
|
+// ViewPointSave 知识资源观点库保存
|
|
|
+func ViewPointSave(req *models.ReportViewPointReq) (msg string, err error) {
|
|
|
+ classifyId, err := KnowledgeResourceClassifyCheckAndSave(req.Category, models.KnowledgeResourceTypeOpinion)
|
|
|
+ if err != nil {
|
|
|
+ msg = "观点保存失败"
|
|
|
+ return
|
|
|
+ }
|
|
|
+ obj := new(models.KnowledgeResource)
|
|
|
+ knowledgeResource, err := obj.GetKnowledgeResourceByOutId(req.Id)
|
|
|
+ if err != nil {
|
|
|
+ if !utils.IsErrNoRow(err) {
|
|
|
+ msg = "观点保存失败"
|
|
|
+ return
|
|
|
+ }
|
|
|
+ // 创建新的知识资源库
|
|
|
+ err = nil
|
|
|
+ obj.ResourceType = models.KnowledgeResourceTypeOpinion
|
|
|
+ obj.ClassifyId = classifyId
|
|
|
+ obj.Title = req.Title
|
|
|
+ obj.CreateTime = time.Now()
|
|
|
+ obj.ModifyTime = time.Now()
|
|
|
+ obj.State = models.KnowledgeResourceStateApproved
|
|
|
+ obj.Content = html.EscapeString(req.Content)
|
|
|
+ timestamp := strconv.FormatInt(time.Now().UnixNano(), 10)
|
|
|
+ obj.ResourceCode = utils.MD5(utils.CHART_PREFIX + "_" + timestamp)
|
|
|
+ obj.AdminRealName = "无"
|
|
|
+ obj.SourceFrom = req.DataSource
|
|
|
+ obj.StartTime = req.DataDate
|
|
|
+ obj.IsFile = 0
|
|
|
+ obj.OutId = req.Id
|
|
|
+ err = obj.Create()
|
|
|
+ if err != nil {
|
|
|
+ msg = "观点保存失败"
|
|
|
+ return
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ // 更新知识资源库的状态
|
|
|
+ var updateCols []string
|
|
|
+ if knowledgeResource.Title != req.Title {
|
|
|
+ knowledgeResource.Title = req.Title
|
|
|
+ updateCols = append(updateCols, "title")
|
|
|
+ }
|
|
|
+ if knowledgeResource.Content != req.Content {
|
|
|
+ knowledgeResource.Content = req.Content
|
|
|
+ updateCols = append(updateCols, "content")
|
|
|
+ }
|
|
|
+ if !knowledgeResource.StartTime.Equal(*req.DataDate) {
|
|
|
+ knowledgeResource.StartTime = req.DataDate
|
|
|
+ updateCols = append(updateCols, "start_time")
|
|
|
+ }
|
|
|
+ if knowledgeResource.SourceFrom != req.DataSource {
|
|
|
+ knowledgeResource.SourceFrom = req.DataSource
|
|
|
+ updateCols = append(updateCols, "source_from")
|
|
|
+ }
|
|
|
+
|
|
|
+ if len(updateCols) > 0 {
|
|
|
+ knowledgeResource.ModifyTime = time.Now()
|
|
|
+ updateCols = append(updateCols, "modify_time")
|
|
|
+ err = knowledgeResource.Update(updateCols)
|
|
|
+ if err != nil {
|
|
|
+ msg = "观点保存失败"
|
|
|
+ return
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return
|
|
|
+}
|
|
|
+
|
|
|
+func KnowledgeResourceClassifyCheckAndSave(classifyName string, resourceType int) (classifyId int, err error) {
|
|
|
+ obj := new(models.KnowledgeClassify)
|
|
|
+ obj, err = obj.GetClassifyByNameAndType(classifyName, resourceType)
|
|
|
+ if err != nil {
|
|
|
+ if !utils.IsErrNoRow(err) {
|
|
|
+ return
|
|
|
+ }
|
|
|
+ // 创建新的分类
|
|
|
+ err = nil
|
|
|
+ obj.ClassifyName = classifyName
|
|
|
+ obj.ResourceType = resourceType
|
|
|
+ obj.CreateTime = time.Now()
|
|
|
+ obj.ModifyTime = time.Now()
|
|
|
+ obj.Enabled = 1
|
|
|
+ obj.Level = 1
|
|
|
+ obj.Sort = 1
|
|
|
+ err = obj.Create()
|
|
|
+ if err != nil {
|
|
|
+ return
|
|
|
+ }
|
|
|
+ classifyId = obj.ClassifyId
|
|
|
+ } else {
|
|
|
+ classifyId = obj.ClassifyId
|
|
|
+ }
|
|
|
+ return
|
|
|
+}
|