knowledge_resource.go 5.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205
  1. package services
  2. import (
  3. "eta_gn/eta_report/models"
  4. "eta_gn/eta_report/utils"
  5. "html"
  6. "strconv"
  7. "strings"
  8. "time"
  9. )
  10. func ReportKnowledgeResourceAdd(title string, fileUrl string, adminId int, adminRealName string) (msg string, err error) {
  11. classifyObj := new(models.KnowledgeClassify)
  12. childClassifyId, err := classifyObj.GetChildClassifyIdByNamePath("市场研究报告", "内部报告", "日常报告")
  13. if err != nil {
  14. if utils.IsErrNoRow(err) {
  15. msg = "分类不存在,请检查知识资源-报告库中是否存在-市场研究报告/内部报告/日常报告分类"
  16. return
  17. }
  18. msg = "报告库添加失败"
  19. return
  20. }
  21. obj := new(models.KnowledgeResource)
  22. obj.ResourceType = models.KnowledgeResourceTypeReport
  23. obj.ClassifyId = childClassifyId
  24. obj.Title = title
  25. obj.CreateTime = time.Now()
  26. obj.ModifyTime = time.Now()
  27. obj.State = models.KnowledgeResourceStatePublished
  28. timestamp := strconv.FormatInt(time.Now().UnixNano(), 10)
  29. obj.ResourceCode = utils.MD5(utils.CHART_PREFIX + "_" + timestamp)
  30. obj.AdminId = adminId
  31. obj.AdminRealName = adminRealName
  32. obj.SourceFrom = "市场信息研究所"
  33. currentTime := time.Now()
  34. obj.StartTime = &currentTime
  35. // 此处传入的url会在入库时存入knowledge_resource_file表中
  36. obj.FileUrl = fileUrl
  37. if fileUrl != "" {
  38. obj.IsFile = 1
  39. }
  40. err = obj.Create()
  41. if err != nil {
  42. return
  43. }
  44. return
  45. }
  46. func ReportKnowledgeResourceClassifyCheckAndSave(reportClassifyId int) (classifyId int, err error) {
  47. classifyObj := new(models.Classify)
  48. classifyObj, err = classifyObj.GetItemById(reportClassifyId)
  49. if err != nil {
  50. if !utils.IsErrNoRow(err) {
  51. return
  52. }
  53. }
  54. levelPath := classifyObj.LevelPath
  55. classifyIdStrs := strings.Split(levelPath, ",")
  56. classifyIds := make([]int, 0, len(classifyIdStrs))
  57. for _, classifyIdStr := range classifyIdStrs {
  58. classifyId, _ := strconv.Atoi(classifyIdStr)
  59. classifyIds = append(classifyIds, classifyId)
  60. }
  61. classifyList, err := classifyObj.GetItemsByIds(classifyIds)
  62. if err != nil {
  63. return
  64. }
  65. knowledgeClassifyObj := new(models.KnowledgeClassify)
  66. var parentId int
  67. for i, classify := range classifyList {
  68. knowledgeClassifyObj, err = knowledgeClassifyObj.GetClassifyByNameTypeAndParentId(classify.ClassifyName, models.KnowledgeResourceTypeOpinion, parentId)
  69. if err != nil {
  70. if !utils.IsErrNoRow(err) {
  71. return
  72. }
  73. for j := i; j < len(classifyList); j++ {
  74. tmp := &models.KnowledgeClassify{
  75. ClassifyName: classifyList[j].ClassifyName,
  76. Sort: 1,
  77. ParentId: parentId,
  78. CreateTime: time.Now(),
  79. ModifyTime: time.Now(),
  80. Enabled: 1,
  81. Level: classifyList[j].Level,
  82. ResourceType: models.KnowledgeResourceTypeOpinion,
  83. }
  84. err = tmp.Create()
  85. if err != nil {
  86. return
  87. }
  88. parentId = tmp.ClassifyId
  89. }
  90. classifyId = parentId
  91. return
  92. }
  93. parentId = knowledgeClassifyObj.ClassifyId
  94. }
  95. classifyId = parentId
  96. return
  97. }
  98. // ViewPointSave 知识资源观点库保存
  99. func ViewPointSave(outId, adminId int, adminRealName, title, content, sourceFrom, classifyName string, classifyId int, startTime *time.Time) (msg string, err error) {
  100. if classifyId <= 0 {
  101. tmpClassifyId, er := ViewPointKnowledgeResourceClassifyCheckAndSave(classifyName, models.KnowledgeResourceTypeOpinion)
  102. if er != nil {
  103. msg = "观点保存失败"
  104. err = er
  105. return
  106. }
  107. classifyId = tmpClassifyId
  108. }
  109. obj := new(models.KnowledgeResource)
  110. knowledgeResource, err := obj.GetKnowledgeResourceByOutId(outId)
  111. if err != nil {
  112. if !utils.IsErrNoRow(err) {
  113. msg = "观点保存失败"
  114. return
  115. }
  116. // 创建新的知识资源库
  117. err = nil
  118. obj.ResourceType = models.KnowledgeResourceTypeOpinion
  119. obj.ClassifyId = classifyId
  120. obj.Title = title
  121. obj.CreateTime = time.Now()
  122. obj.ModifyTime = time.Now()
  123. obj.State = models.KnowledgeResourceStateApproved
  124. obj.Content = html.EscapeString(content)
  125. timestamp := strconv.FormatInt(time.Now().UnixNano(), 10)
  126. obj.ResourceCode = utils.MD5(utils.CHART_PREFIX + "_" + timestamp)
  127. obj.AdminId = adminId
  128. if adminRealName == "" || obj.AdminId == 0 {
  129. obj.AdminRealName = "无"
  130. } else {
  131. obj.AdminRealName = adminRealName
  132. }
  133. obj.SourceFrom = sourceFrom
  134. obj.StartTime = startTime
  135. obj.IsFile = 0
  136. obj.OutId = outId
  137. err = obj.Create()
  138. if err != nil {
  139. msg = "观点保存失败"
  140. return
  141. }
  142. } else {
  143. // 更新知识资源库的状态
  144. var updateCols []string
  145. if knowledgeResource.Title != title {
  146. knowledgeResource.Title = title
  147. updateCols = append(updateCols, "title")
  148. }
  149. if knowledgeResource.Content != content {
  150. knowledgeResource.Content = content
  151. updateCols = append(updateCols, "content")
  152. }
  153. if !knowledgeResource.StartTime.Equal(*startTime) {
  154. knowledgeResource.StartTime = startTime
  155. updateCols = append(updateCols, "start_time")
  156. }
  157. if knowledgeResource.SourceFrom != sourceFrom {
  158. knowledgeResource.SourceFrom = sourceFrom
  159. updateCols = append(updateCols, "source_from")
  160. }
  161. if len(updateCols) > 0 {
  162. knowledgeResource.ModifyTime = time.Now()
  163. updateCols = append(updateCols, "modify_time")
  164. err = knowledgeResource.Update(updateCols)
  165. if err != nil {
  166. msg = "观点保存失败"
  167. return
  168. }
  169. }
  170. }
  171. return
  172. }
  173. func ViewPointKnowledgeResourceClassifyCheckAndSave(classifyName string, resourceType int) (classifyId int, err error) {
  174. obj := new(models.KnowledgeClassify)
  175. obj, err = obj.GetClassifyByNameTypeAndParentId(classifyName, resourceType, 0)
  176. if err != nil {
  177. if !utils.IsErrNoRow(err) {
  178. return
  179. }
  180. // 创建新的分类
  181. err = nil
  182. obj.ClassifyName = classifyName
  183. obj.ResourceType = resourceType
  184. obj.CreateTime = time.Now()
  185. obj.ModifyTime = time.Now()
  186. obj.Enabled = 1
  187. obj.Level = 1
  188. obj.Sort = 1
  189. err = obj.Create()
  190. if err != nil {
  191. return
  192. }
  193. classifyId = obj.ClassifyId
  194. } else {
  195. classifyId = obj.ClassifyId
  196. }
  197. return
  198. }