Browse Source

Merge branch 'ETA_1.8.8' into debug

zwxi 8 months ago
parent
commit
d4d69a9781
3 changed files with 146 additions and 0 deletions
  1. 104 0
      controllers/ai/ai_pormpt.go
  2. 33 0
      models/ai_summary/ai_pormpt.go
  3. 9 0
      routers/commentsRouter.go

+ 104 - 0
controllers/ai/ai_pormpt.go

@@ -2,9 +2,11 @@ package ai
 
 import (
 	"encoding/json"
+	"errors"
 	"eta/eta_api/models"
 	"eta/eta_api/models/ai_summary"
 	"eta/eta_api/models/system"
+	"eta/eta_api/utils"
 	"time"
 )
 
@@ -121,6 +123,8 @@ func (this *AiController) AddPrompt() {
 	}
 
 	var msg string
+	//获取该层级下最大的排序数
+	maxSort, err := ai_summary.GetAiPromptMaxSort(this.SysUser.AdminId)
 
 	prompt := &ai_summary.AiPrompt{
 		CreateTime:    time.Now(),
@@ -129,6 +133,7 @@ func (this *AiController) AddPrompt() {
 		SysAdminId:    this.SysUser.AdminId,
 		SysAdminName:  this.SysUser.RealName,
 		Title:         req.Title,
+		Sort:          maxSort + 1,
 	}
 	_, err = ai_summary.AddPropmt(prompt)
 	if err != nil {
@@ -270,3 +275,102 @@ func (this *AiController) DetailPrompt() {
 	br.Msg = "获取成功"
 	br.Data = promptInfo
 }
+
+// MoveAiPrompt
+// @Title 移动提示词
+// @Description 移动提示词接口
+// @Param	request	body models.ReqMoveGroupPpt true "type json string"
+// @Success 200 Ret=200 移动成功
+// @router /prompt/move [post]
+func (this *AiController) MoveAiPrompt() {
+	br := new(models.BaseResponse).Init()
+	defer func() {
+		this.Data["json"] = br
+		this.ServeJSON()
+	}()
+	var req ai_summary.ReqMovePrompt
+	err := json.Unmarshal(this.Ctx.Input.RequestBody, &req)
+	if err != nil {
+		br.Msg = "参数解析异常!"
+		br.ErrMsg = "参数解析失败,Err:" + err.Error()
+		return
+	}
+	if req.AiPromptId <= 0 {
+		br.Msg = "请输入提示词ID"
+		return
+	}
+
+	prompt, err := ai_summary.GetAiPromptById(req.AiPromptId)
+	if err != nil {
+		if err.Error() == utils.ErrNoRow() {
+			br.Msg = "当前提示词不存在"
+			br.ErrMsg = "当前提示词不存在"
+			return
+		}
+		br.Msg = "提示词查询出错"
+		br.ErrMsg = "提示词查询出错:" + err.Error()
+		return
+	}
+	var updateStr []string
+
+	var currentSort, prevSort, nextSort int
+	currentSort = prompt.Sort
+
+	var prevPrompt *ai_summary.AiPrompt
+	var nextPrompt *ai_summary.AiPrompt
+	if req.PrevAiPromptId > 0 {
+		prevPrompt, err = ai_summary.GetAiPromptById(req.PrevAiPromptId)
+		if err != nil {
+			if err.Error() == utils.ErrNoRow() {
+				err = errors.New("目录下的提示词不存在")
+				return
+			}
+			err = errors.New("目录下的提示词查询出错:" + err.Error())
+			return
+		}
+		prevSort = prevPrompt.Sort
+	}
+
+	if req.NextAiPromptId > 0 {
+		nextPrompt, err = ai_summary.GetAiPromptById(req.NextAiPromptId)
+		if err != nil {
+			if err.Error() == utils.ErrNoRow() {
+				err = errors.New("目录下的提示词不存在")
+				return
+			}
+			err = errors.New("目录下的提示词查询出错:" + err.Error())
+			return
+		}
+		nextSort = nextPrompt.Sort
+	}
+
+	updateStr = append(updateStr, "sort")
+
+	//移到两个排序值中间操作
+	if prevSort >= currentSort {
+		//往下移动
+		err = ai_summary.MoveDownPromptBySort(this.SysUser.AdminId, prevSort, currentSort)
+		if err != nil {
+			err = errors.New("向下移动提示词出错:" + err.Error())
+			return
+		}
+		prompt.Sort = prevSort
+	} else if nextSort <= currentSort && nextSort != 0 {
+		//往上移动
+		err = ai_summary.MoveUpPromptBySort(this.SysUser.AdminId, nextSort, currentSort)
+		if err != nil {
+			err = errors.New("向上移动提示词出错:" + err.Error())
+			return
+		}
+		prompt.Sort = nextSort
+	}
+	//更新当前排序
+	err = prompt.Update(updateStr)
+	if err != nil {
+		err = errors.New("移动提示词出错:" + err.Error())
+		return
+	}
+	br.Ret = 200
+	br.Success = true
+	br.Msg = "移动成功"
+}

+ 33 - 0
models/ai_summary/ai_pormpt.go

@@ -14,6 +14,7 @@ type AiPrompt struct {
 	CreateTime    time.Time // 创建时间
 	ModifyTime    time.Time // 更新时间
 	IsShare       int       // 是否分享,0:不分享,1:分享
+	Sort          int       // 排序
 }
 
 type AiPromptItem struct {
@@ -25,6 +26,7 @@ type AiPromptItem struct {
 	CreateTime    string // 创建时间
 	ModifyTime    string // 更新时间
 	IsShare       int    // 是否分享,0:不分享,1:分享
+	Sort          int    // 排序
 }
 
 func GetAiPromptList(sysUserId, isShare int) (items []*AiPromptItem, err error) {
@@ -99,3 +101,34 @@ func GetAiPromptById(pptId int) (item *AiPrompt, err error) {
 type DeleteAipromptReq struct {
 	AiPromptId int // ai纪要提示词id
 }
+
+type ReqMovePrompt struct {
+	AiPromptId     int `description:"当前被移动的目录里的ppt绑定序号"`
+	PrevAiPromptId int `description:"上一个目录里的ppt绑定序号,ppt最终在目录中置顶,则传0值"`
+	NextAiPromptId int `description:"下一个目录里的ppt绑定序号,ppt最终在目录末尾,则传0值"`
+}
+
+// GetAiPromptMaxSort 获取ai提示词下最大的排序数
+func GetAiPromptMaxSort(adminId int) (sort int, err error) {
+	o := orm.NewOrm()
+	sql := `SELECT Max(sort) AS sort FROM ai_prompt WHERE sys_admin_id=? `
+	err = o.Raw(sql, adminId).QueryRow(&sort)
+	return
+}
+
+
+// MoveDownPromptBySort 往下移动提示词
+func MoveDownPromptBySort(sysAdminId, prevSort, currentSort int) (err error) {
+	o := orm.NewOrm()
+	sql := `update ai_prompt set sort = sort - 1 where sys_admin_id = ? and sort <= ? and sort> ? `
+	_, err = o.Raw(sql, sysAdminId, prevSort, currentSort).Exec()
+	return
+}
+
+// MoveUpPromptBySort 往上移动提示词
+func MoveUpPromptBySort(sysAdminId, nextSort, currentSort int) (err error) {
+	o := orm.NewOrm()
+	sql := `update ai_prompt set sort = sort + 1 where sys_admin_id = ? and sort >= ? and sort< ?`
+	_, err = o.Raw(sql, sysAdminId, nextSort, currentSort).Exec()
+	return
+}

+ 9 - 0
routers/commentsRouter.go

@@ -70,6 +70,15 @@ func init() {
             Filters: nil,
             Params: nil})
 
+    beego.GlobalControllerRouter["eta/eta_api/controllers/ai:AiController"] = append(beego.GlobalControllerRouter["eta/eta_api/controllers/ai:AiController"],
+        beego.ControllerComments{
+            Method: "MoveAiPrompt",
+            Router: `/prompt/move`,
+            AllowHTTPMethods: []string{"post"},
+            MethodParams: param.Make(),
+            Filters: nil,
+            Params: nil})
+
     beego.GlobalControllerRouter["eta/eta_api/controllers/ai:AiController"] = append(beego.GlobalControllerRouter["eta/eta_api/controllers/ai:AiController"],
         beego.ControllerComments{
             Method: "AddSandboxClassify",