Browse Source

fix:知识资源新增编辑接口

zqbao 3 months ago
parent
commit
f13cc08b26

+ 74 - 10
models/knowledge/knowledge_resource.go

@@ -207,16 +207,16 @@ type DeleteReq struct {
 }
 
 type AddReq struct {
-	ResourceType int    `gorm:"column:resource_type;"`
-	ClassifyId   int    `gorm:"column:classify_id"`
-	Title        string `gorm:"column:title;"`
-	State        int    `gorm:"column:state" description:"0:未发布;1:已发布"`
-	Content      string `gorm:"column:content"`
-	SourceFrom   string `gorm:"column:source_from"`
-	TagId        int    `gorm:"column:tag_id;default:0;NOT NULL"`
-	StartTime    string `gorm:"column:start_time"`
-	EndTime      string `gorm:"column:end_time"`
-	FileUrl      string `gorm:"column:file_url"`
+	ResourceType int      `gorm:"column:resource_type;"`
+	ClassifyId   int      `gorm:"column:classify_id"`
+	Title        string   `gorm:"column:title;"`
+	State        int      `gorm:"column:state" description:"0:未发布;1:已发布"`
+	Content      string   `gorm:"column:content"`
+	SourceFrom   string   `gorm:"column:source_from"`
+	TagId        int      `gorm:"column:tag_id;default:0;NOT NULL"`
+	StartTime    string   `gorm:"column:start_time"`
+	EndTime      string   `gorm:"column:end_time"`
+	FileUrl      []string `gorm:"column:file_url"`
 }
 
 type AddResp struct {
@@ -233,6 +233,35 @@ func (m *KnowledgeResource) Add(item *KnowledgeResource) (err error) {
 	return
 }
 
+func (m *KnowledgeResource) AddWithFile(file []string) (err error) {
+	tx := global.DmSQL["rddp"].Begin()
+	defer func() {
+		if err != nil {
+			tx.Rollback()
+		} else {
+			tx.Commit()
+		}
+	}()
+	err = tx.Create(m).Error
+	if err != nil {
+		return
+	}
+	if len(file) > 0 {
+		fileList := make([]*KnowledgeResourceFile, len(file))
+		for i, v := range file {
+			fileList[i] = &KnowledgeResourceFile{
+				KnowledgeResourceId: m.KnowledgeResourceId,
+				FileUrl:             v,
+			}
+		}
+		err = tx.CreateInBatches(fileList, utils.MultiAddNum).Error
+		if err != nil {
+			return
+		}
+	}
+	return
+}
+
 func (m *KnowledgeResource) AddBatch(item []*KnowledgeResource) (err error) {
 	err = global.DmSQL["rddp"].CreateInBatches(item, 50).Error
 	return
@@ -281,6 +310,41 @@ func (m *KnowledgeResource) Update(cols []string) (err error) {
 	return
 }
 
+func (m *KnowledgeResource) UpdateWithFile(cols, file []string) (err error) {
+	tx := global.DmSQL["rddp"].Begin()
+	defer func() {
+		if err != nil {
+			tx.Rollback()
+		} else {
+			tx.Commit()
+		}
+	}()
+	err = tx.Select(cols).Updates(m).Error
+	if err != nil {
+		return
+	}
+	if len(file) > 0 {
+		sql := `DELETE FROM knowledge_resource_file WHERE knowledge_resource_id =?`
+		err = tx.Exec(sql, m.KnowledgeResourceId).Error
+		if err != nil {
+			return
+		}
+
+		fileList := make([]*KnowledgeResourceFile, len(file))
+		for i, v := range file {
+			fileList[i] = &KnowledgeResourceFile{
+				KnowledgeResourceId: m.KnowledgeResourceId,
+				FileUrl:             v,
+			}
+		}
+		err = tx.CreateInBatches(fileList, utils.MultiAddNum).Error
+		if err != nil {
+			return
+		}
+	}
+	return
+}
+
 // MarkEditReport 标记编辑英文研报的请求数据
 type MarkEditReport struct {
 	KnowledgeResourceId int `description:"研报id"`

+ 15 - 1
models/knowledge/knowledge_resource_file.go

@@ -1,6 +1,9 @@
 package knowledge
 
-import "eta_gn/eta_api/global"
+import (
+	"eta_gn/eta_api/global"
+	"eta_gn/eta_api/utils"
+)
 
 type KnowledgeResourceFile struct {
 	KnowledgeResourceFileId int    `gorm:"column:knowledge_resource_file_id;primaryKey;autoIncrement"`
@@ -12,6 +15,17 @@ func (k KnowledgeResourceFile) TableName() string {
 	return "knowledge_resource_file"
 }
 
+func (k *KnowledgeResourceFile) BatchAdd(items []*KnowledgeResourceFile) (err error) {
+	err = global.DmSQL["rddp"].CreateInBatches(items, utils.MultiAddNum).Error
+	return
+}
+
+func (k *KnowledgeResourceFile) DeleteByResourceId(id int) (err error) {
+	sql := "DELETE FROM knowledge_resource_file WHERE knowledge_resource_id =?"
+	err = global.DmSQL["rddp"].Exec(sql, id).Error
+	return
+}
+
 func (k *KnowledgeResourceFile) GetByResourceId(id int) (item []*KnowledgeResourceFile, err error) {
 	sql := "SELECT * FROM knowledge_resource_file WHERE knowledge_resource_id =?"
 	err = global.DmSQL["rddp"].Raw(sql, id).Find(&item).Error

+ 5 - 7
services/knowledge/resource.go

@@ -74,7 +74,7 @@ func AddResource(req *knowledge.AddReq, sysUser *system.Admin) (item *knowledge.
 			return
 		}*/
 	} else {
-		if req.FileUrl == "" {
+		if len(req.FileUrl) == 0 {
 			errMsg = "内容或文件不能为空"
 			err = fmt.Errorf("内容或文件不能为空")
 			return
@@ -126,7 +126,6 @@ func AddResource(req *knowledge.AddReq, sysUser *system.Admin) (item *knowledge.
 	timestamp := strconv.FormatInt(time.Now().UnixNano(), 10)
 	item.ResourceCode = utils.MD5(utils.CHART_PREFIX + "_" + timestamp)
 	item.IsFile = isFile
-	item.FileUrl = req.FileUrl
 	//todo 内容前5行
 	//item.ContentSub = html.EscapeString(contentSub)
 	if !startTime.IsZero() {
@@ -147,7 +146,7 @@ func AddResource(req *knowledge.AddReq, sysUser *system.Admin) (item *knowledge.
 	item.ModifyTime = time.Now()
 	item.CreateTime = time.Now()
 
-	err = item.Add(item)
+	err = item.AddWithFile(req.FileUrl)
 	if err != nil {
 		errMsg = "保存失败"
 		err = fmt.Errorf("保存失败,Err:" + err.Error())
@@ -197,7 +196,7 @@ func EditResource(resourceInfo *knowledge.KnowledgeResource, req knowledge.EditR
 			return
 		}
 	} else if resourceInfo.IsFile == 1 {
-		if req.FileUrl == "" {
+		if len(req.FileUrl) == 0 {
 			errMsg = "文件地址不能为空"
 			err = fmt.Errorf("文件地址不能为空")
 			return
@@ -269,15 +268,14 @@ func EditResource(resourceInfo *knowledge.KnowledgeResource, req knowledge.EditR
 	if !endTime.IsZero() {
 		resourceInfo.EndTime = &endTime
 	}
-	resourceInfo.FileUrl = req.FileUrl
 	//resourceInfo.LastModifyAdminId = sysUser.AdminId
 	//resourceInfo.LastModifyAdminName = sysUser.RealName
 	resourceInfo.ModifyTime = time.Now()
 
-	updateCols := []string{"ClassifyId", "SourceFrom", "TagId", "Title", "Content", "StartTime", "EndTime", "ModifyTime", "FileUrl"}
+	updateCols := []string{"ClassifyId", "SourceFrom", "TagId", "Title", "Content", "StartTime", "EndTime", "ModifyTime"}
 
 	// 修改报告的基本信息,以及报告的授权用户
-	err = resourceInfo.Update(updateCols)
+	err = resourceInfo.UpdateWithFile(updateCols, req.FileUrl)
 	if err != nil {
 		return
 	}