浏览代码

fix:观点和课题的导入

zqbao 3 月之前
父节点
当前提交
f898183566
共有 5 个文件被更改,包括 157 次插入59 次删除
  1. 70 6
      controllers/report_open.go
  2. 25 8
      models/knowledge_resource.go
  3. 12 13
      models/report_open.go
  4. 18 0
      routers/commentsRouter.go
  5. 32 32
      services/knowledge_resource.go

+ 70 - 6
controllers/report_open.go

@@ -406,6 +406,7 @@ func (this *ReportOpenController) ReportApprove() {
 					}
 				}()
 				go func() {
+					// 审批通过,将摘要加入知识资源库观点中
 					var classifyId int
 					if v.ClassifyIdThird > 0 {
 						classifyId = v.ClassifyIdThird
@@ -416,6 +417,10 @@ func (this *ReportOpenController) ReportApprove() {
 					}
 
 					classifyId, err := services.ReportKnowledgeResourceClassifyCheckAndSave(classifyId)
+					if err != nil {
+						utils.FileLog.Error(fmt.Sprintf("ReportKnowledgeResourceClassifyCheckAndSave-报告分类保存失败,reportId:%d,classifyId:%d,err: %v", v.Id, classifyId, err))
+						return
+					}
 					msg, err := services.ViewPointSave(0, v.AdminId, v.AdminRealName, v.Title, v.Abstract, "市场信息研究所", "", classifyId, &v.ApproveTime)
 					if err != nil {
 						utils.FileLog.Error(fmt.Sprintf("ViewPointSave-报告摘要知识资源库添加失败,reportId:%d,msg:%s,err: %v", v.Id, msg, err))
@@ -517,8 +522,15 @@ func (this *ReportOpenController) ReportApprove() {
 					}
 				}()
 				go func() {
-
+					// 审批通过,将摘要加入知识资源库观点中
+					if v.Abstract == "" {
+						return
+					}
 					classifyId, err := services.ReportKnowledgeResourceClassifyCheckAndSave(v.ClassifyId)
+					if err != nil {
+						utils.FileLog.Error(fmt.Sprintf("ReportKnowledgeResourceClassifyCheckAndSave-PPT分类保存失败,pptId:%d,classifyId:%d,err: %v", v.PptId, v.ClassifyId, err))
+						return
+					}
 					msg, err := services.ViewPointSave(0, v.AdminId, v.AdminRealName, v.Title, v.Abstract, "市场信息研究所", "", classifyId, &v.ApproveTime)
 					if err != nil {
 						utils.FileLog.Error(fmt.Sprintf("ViewPointSave-ppt摘要知识库添加失败,pptId:%d,msg:%s,err: %v", v.PptId, msg, err))
@@ -666,7 +678,7 @@ func (this *ReportOpenController) ReportRemove() {
 // @Description 观点保存
 // @Param request body models.ReportViewPointReq true "type json string"
 // @Success 200 string "操作成功"
-// @Router /viewpoint/save [post]
+// @router /viewpoint/save [post]
 func (this *ReportOpenController) ViewPointSave() {
 	br := new(models.BaseResponse).Init()
 	defer func() {
@@ -676,7 +688,7 @@ func (this *ReportOpenController) ViewPointSave() {
 		this.Data["json"] = br
 		this.ServeJSON()
 	}()
-	var req *models.ReportViewPointReq
+	var req *models.ReportViewPointSaveReq
 	if e := json.Unmarshal(this.Ctx.Input.RequestBody, &req); e != nil {
 		br.Msg = "参数解析异常"
 		br.ErrMsg = fmt.Sprintf("参数解析失败,%v", e)
@@ -697,12 +709,16 @@ func (this *ReportOpenController) ViewPointSave() {
 		br.Msg = "观点分类不能为空"
 		return
 	}
-	if req.DataDate == nil {
+	if req.DataDate == "" {
 		br.Msg = "观点日期不能为空"
 		return
 	}
-
-	msg, err := services.ViewPointSave(req.Id, 0, "", req.Title, req.Content, req.DataSource, req.Category, 0, req.DataDate)
+	dataDate, err := time.Parse(utils.FormatDateTime, req.DataDate)
+	if err != nil {
+		br.Msg = "观点日期格式不正确"
+		return
+	}
+	msg, err := services.ViewPointSave(req.Id, 0, "", req.Title, req.Content, req.DataSource, req.Category, 0, &dataDate)
 	if err != nil {
 		if msg == "" {
 			msg = "保存观点失败"
@@ -716,3 +732,51 @@ func (this *ReportOpenController) ViewPointSave() {
 	br.Success = true
 	br.Ret = 200
 }
+
+// @Title 观点删除
+// @Description 观点删除
+// @Param request body models.ReportViewPointReq true "type json string"
+// @Success 200 string "操作成功"
+// @router /viewpoint/delete [post]
+func (this *ReportOpenController) ViewPointDelete() {
+	br := new(models.BaseResponse).Init()
+	defer func() {
+		if br.ErrMsg == "" {
+			br.IsSendEmail = false
+		}
+		this.Data["json"] = br
+		this.ServeJSON()
+	}()
+	var req *models.ReportViewPointDeleteRep
+	if e := json.Unmarshal(this.Ctx.Input.RequestBody, &req); e != nil {
+		br.Msg = "参数解析异常"
+		br.ErrMsg = fmt.Sprintf("参数解析失败,%v", e)
+		return
+	}
+	if req.Id == nil {
+		br.Msg = "观点ID不能为空"
+		return
+	}
+
+	obj := new(models.KnowledgeResource)
+	obj, err := obj.GetKnowledgeResourceByOutId(*req.Id)
+	if err != nil {
+		if utils.IsErrNoRow(err) {
+			br.Msg = "观点不存在"
+			return
+		}
+		br.Msg = "删除观点失败"
+		br.ErrMsg = fmt.Sprintf("删除观点失败, %v", err)
+		return
+	}
+	obj.IsDelete = 1
+	if err = obj.Update([]string{"IsDelete"}); err != nil {
+		br.Msg = "删除观点失败"
+		br.ErrMsg = fmt.Sprintf("删除观点失败, %v", err)
+		return
+	}
+
+	br.Msg = "删除观点成功"
+	br.Success = true
+	br.Ret = 200
+}

+ 25 - 8
models/knowledge_resource.go

@@ -10,12 +10,12 @@ const (
 	KnowledgeResourceTypeEvent = iota
 	// 事件-政策库
 	KnowledgeResourceTypePolicy
-	// 事件-观点库
-	KnowledgeResourceTypeOpinion
-	// 事件类型-知识库
-	KnowledgeResourceTypeKnow
 	// 事件-报告库
 	KnowledgeResourceTypeReport
+	// 事件类型-知识库
+	KnowledgeResourceTypeKnow
+	// 事件-观点库
+	KnowledgeResourceTypeOpinion
 )
 
 const (
@@ -60,6 +60,7 @@ type KnowledgeResource struct {
 	IsFile              int        `gorm:"column:is_file;default:0;NOT NULL"`
 	FileUrl             string     `gorm:"column:file_url"`
 	OutId               int        `gorm:"column:out_id" description:"外部系统ID"`
+	IsDelete            int        `gorm:"column:is_delete;default:0;NOT NULL"`
 }
 
 func (k KnowledgeResource) TableName() string {
@@ -116,14 +117,30 @@ func (k *KnowledgeClassify) Create() error {
 	return global.DEFAULT_DmSQL.Create(k).Error
 }
 
-func (k *KnowledgeClassify) GetClassifyByNameAndType(classifyName string, resourceType, parentId int) (items *KnowledgeClassify, err error) {
+func (k *KnowledgeClassify) GetClassifyByNameTypeAndParentId(classifyName string, resourceType, parentId int) (items *KnowledgeClassify, err error) {
 	sql := "SELECT * FROM knowledge_classify WHERE classify_name = ? AND resource_type = ? AND parent_id = ?"
 	err = global.DEFAULT_DmSQL.Raw(sql, classifyName, resourceType, parentId).First(&items).Error
 	return
 }
 
-func (k *KnowledgeClassify) GetClassifysByNamesAndType(classifyNames []string, resourceType int) (items []*KnowledgeClassify, err error) {
-	sql := "SELECT * FROM knowledge_classify WHERE classify_name IN (?) AND resource_type = ?"
-	err = global.DEFAULT_DmSQL.Raw(sql, classifyNames, resourceType).Find(&items).Error
+func (k *KnowledgeClassify) GetClassifysByNameAndType(classifyName string, resourceType int) (item *KnowledgeClassify, err error) {
+	sql := "SELECT * FROM knowledge_classify WHERE classify_name = ? AND resource_type = ?"
+	err = global.DEFAULT_DmSQL.Raw(sql, classifyName, resourceType).Find(&item).Error
+	return
+}
+
+func (k *KnowledgeClassify) GetChildClassifyIdByNamePath(classifyNameFirst string, classifyNameSecond string, classifyNameThird string) (id int, err error) {
+	sql := `SELECT 
+    c3.classify_id AS id
+	FROM knowledge_classify c1 
+	JOIN knowledge_classify c2 ON c2.parent_id = c1.classify_id 
+					AND c2.classify_name = ? 
+					AND c2.level = 2
+	JOIN knowledge_classify c3 ON c3.parent_id = c2.classify_id 
+					AND c3.classify_name = ?
+					AND c3.level = 3
+	WHERE c1.classify_name = ?
+	AND c1.level = 1 `
+	err = global.DEFAULT_DmSQL.Raw(sql, classifyNameSecond, classifyNameThird, classifyNameFirst).Scan(&id).Error
 	return
 }

+ 12 - 13
models/report_open.go

@@ -1,7 +1,5 @@
 package models
 
-import "time"
-
 // ReportCreateReq 创建报告
 type ReportCreateReq struct {
 	ReportId   int      `description:"智力共享报告ID"`
@@ -41,15 +39,16 @@ type ReportRemoveReq struct {
 	Operator  string `description:"操作人工号"`
 }
 
-type ReportViewPointReq struct {
-	Id             int        `description:"观点库id"`
-	Title          string     `description:"观点标题"`
-	Category       string     `description:"观点分类"`
-	Content        string     `description:"观点内容"`
-	DataSourceCode string     `description:"数据来源"`
-	DataSource     string     `description:"数据来源名称"`
-	Creator        string     `description:"创建人"`
-	Des            string     `description:"描述"`
-	DataDate       *time.Time `description:"数据日期"`
-	UpdateTime     string     `description:"更新时间"`
+type ReportViewPointSaveReq struct {
+	Id         int    `description:"观点库外部id"`
+	Title      string `description:"观点标题"`
+	Category   string `description:"观点分类"`
+	Content    string `description:"观点内容"`
+	DataSource string `description:"数据来源名称"`
+	DataDate   string `description:"数据日期"`
+	UpdateTime string `description:"更新时间"`
+}
+
+type ReportViewPointDeleteRep struct {
+	Id *int `description:"观点库外部id"`
 }

+ 18 - 0
routers/commentsRouter.go

@@ -88,6 +88,24 @@ func init() {
             Filters: nil,
             Params: nil})
 
+    beego.GlobalControllerRouter["eta_gn/eta_report/controllers:ReportOpenController"] = append(beego.GlobalControllerRouter["eta_gn/eta_report/controllers:ReportOpenController"],
+        beego.ControllerComments{
+            Method: "ViewPointDelete",
+            Router: `/viewpoint/delete`,
+            AllowHTTPMethods: []string{"post"},
+            MethodParams: param.Make(),
+            Filters: nil,
+            Params: nil})
+
+    beego.GlobalControllerRouter["eta_gn/eta_report/controllers:ReportOpenController"] = append(beego.GlobalControllerRouter["eta_gn/eta_report/controllers:ReportOpenController"],
+        beego.ControllerComments{
+            Method: "ViewPointSave",
+            Router: `/viewpoint/save`,
+            AllowHTTPMethods: []string{"post"},
+            MethodParams: param.Make(),
+            Filters: nil,
+            Params: nil})
+
     beego.GlobalControllerRouter["eta_gn/eta_report/controllers:ReportShareController"] = append(beego.GlobalControllerRouter["eta_gn/eta_report/controllers:ReportShareController"],
         beego.ControllerComments{
             Method: "Detail",

+ 32 - 32
services/knowledge_resource.go

@@ -11,7 +11,7 @@ import (
 
 func ReportKnowledgeResourceAdd(title string, fileUrl string, adminId int, adminRealName string) (msg string, err error) {
 	classifyObj := new(models.KnowledgeClassify)
-	classifyObj, err = classifyObj.GetClassifyByNameAndType("日常报告", models.KnowledgeResourceTypeReport, 0)
+	childClassifyId, err := classifyObj.GetChildClassifyIdByNamePath("市场研究报告", "内部报告", "日常报告")
 	if err != nil {
 		if utils.IsErrNoRow(err) {
 			msg = "分类不存在,请检查知识资源-报告库中是否存在-市场研究报告/内部报告/日常报告分类"
@@ -23,7 +23,7 @@ func ReportKnowledgeResourceAdd(title string, fileUrl string, adminId int, admin
 
 	obj := new(models.KnowledgeResource)
 	obj.ResourceType = models.KnowledgeResourceTypeReport
-	obj.ClassifyId = classifyObj.ClassifyId
+	obj.ClassifyId = childClassifyId
 	obj.Title = title
 	obj.CreateTime = time.Now()
 	obj.ModifyTime = time.Now()
@@ -69,7 +69,7 @@ func ReportKnowledgeResourceClassifyCheckAndSave(reportClassifyId int) (classify
 	knowledgeClassifyObj := new(models.KnowledgeClassify)
 	var parentId int
 	for i, classify := range classifyList {
-		knowledgeClassifyObj, err = knowledgeClassifyObj.GetClassifyByNameAndType(classify.ClassifyName, models.KnowledgeResourceTypeReport, parentId)
+		knowledgeClassifyObj, err = knowledgeClassifyObj.GetClassifyByNameTypeAndParentId(classify.ClassifyName, models.KnowledgeResourceTypeOpinion, parentId)
 		if err != nil {
 			if !utils.IsErrNoRow(err) {
 				return
@@ -83,7 +83,7 @@ func ReportKnowledgeResourceClassifyCheckAndSave(reportClassifyId int) (classify
 					ModifyTime:   time.Now(),
 					Enabled:      1,
 					Level:        classifyList[j].Level,
-					ResourceType: models.KnowledgeResourceTypeReport,
+					ResourceType: models.KnowledgeResourceTypeOpinion,
 				}
 				err = tmp.Create()
 				if err != nil {
@@ -144,34 +144,34 @@ func ViewPointSave(outId, adminId int, adminRealName, title, content, sourceFrom
 			msg = "观点保存失败"
 			return
 		}
-	}
-
-	// 更新知识资源库的状态
-	var updateCols []string
-	if knowledgeResource.Title != title {
-		knowledgeResource.Title = title
-		updateCols = append(updateCols, "title")
-	}
-	if knowledgeResource.Content != content {
-		knowledgeResource.Content = content
-		updateCols = append(updateCols, "content")
-	}
-	if !knowledgeResource.StartTime.Equal(*startTime) {
-		knowledgeResource.StartTime = startTime
-		updateCols = append(updateCols, "start_time")
-	}
-	if knowledgeResource.SourceFrom != sourceFrom {
-		knowledgeResource.SourceFrom = sourceFrom
-		updateCols = append(updateCols, "source_from")
-	}
+	} else {
+		// 更新知识资源库的状态
+		var updateCols []string
+		if knowledgeResource.Title != title {
+			knowledgeResource.Title = title
+			updateCols = append(updateCols, "title")
+		}
+		if knowledgeResource.Content != content {
+			knowledgeResource.Content = content
+			updateCols = append(updateCols, "content")
+		}
+		if !knowledgeResource.StartTime.Equal(*startTime) {
+			knowledgeResource.StartTime = startTime
+			updateCols = append(updateCols, "start_time")
+		}
+		if knowledgeResource.SourceFrom != sourceFrom {
+			knowledgeResource.SourceFrom = sourceFrom
+			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
+		if len(updateCols) > 0 {
+			knowledgeResource.ModifyTime = time.Now()
+			updateCols = append(updateCols, "modify_time")
+			err = knowledgeResource.Update(updateCols)
+			if err != nil {
+				msg = "观点保存失败"
+				return
+			}
 		}
 	}
 	return
@@ -179,7 +179,7 @@ func ViewPointSave(outId, adminId int, adminRealName, title, content, sourceFrom
 
 func ViewPointKnowledgeResourceClassifyCheckAndSave(classifyName string, resourceType int) (classifyId int, err error) {
 	obj := new(models.KnowledgeClassify)
-	obj, err = obj.GetClassifyByNameAndType(classifyName, resourceType, 0)
+	obj, err = obj.GetClassifyByNameTypeAndParentId(classifyName, resourceType, 0)
 	if err != nil {
 		if !utils.IsErrNoRow(err) {
 			return