ai_pormpt.go 8.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370
  1. package ai
  2. import (
  3. "encoding/json"
  4. "errors"
  5. "eta_gn/eta_api/models"
  6. "eta_gn/eta_api/models/ai_summary"
  7. "eta_gn/eta_api/models/system"
  8. aiSummaryService "eta_gn/eta_api/services/ai_summary"
  9. "eta_gn/eta_api/utils"
  10. "time"
  11. )
  12. // @router /prompt/list [get]
  13. func (this *AiController) AiPromptList() {
  14. br := new(models.BaseResponse).Init()
  15. defer func() {
  16. this.Data["json"] = br
  17. this.ServeJSON()
  18. }()
  19. list, err := ai_summary.GetAiPromptList(this.SysUser.AdminId, 0)
  20. if err != nil {
  21. br.Msg = "获取失败"
  22. br.ErrMsg = "获取数据失败,Err:" + err.Error()
  23. return
  24. }
  25. br.Ret = 200
  26. br.Success = true
  27. br.Msg = "获取成功"
  28. br.Data = list
  29. }
  30. // @router /prompt/groups [get]
  31. func (this *AiController) PromptGroupList() {
  32. br := new(models.BaseResponse).Init()
  33. defer func() {
  34. this.Data["json"] = br
  35. this.ServeJSON()
  36. }()
  37. list, err := ai_summary.GetAiPromptShareList()
  38. if err != nil {
  39. br.Msg = err.Error()
  40. return
  41. }
  42. resp := make([]*ai_summary.RespGroupListItem, 0)
  43. publicAdminIdList := make([]int, 0)
  44. publicPromptListMap := make(map[int][]*ai_summary.AiPromptItem)
  45. systemAdminMap := make(map[int]*system.Admin)
  46. for _, v := range list {
  47. publicPromptList, ok := publicPromptListMap[v.SysAdminId]
  48. if !ok {
  49. publicPromptList = make([]*ai_summary.AiPromptItem, 0)
  50. publicAdminIdList = append(publicAdminIdList, v.SysAdminId)
  51. }
  52. systemAdminMap[v.SysAdminId] = &system.Admin{
  53. AdminId: v.SysAdminId,
  54. RealName: v.SysAdminName,
  55. }
  56. publicPromptList = append(publicPromptList, v)
  57. publicPromptListMap[v.SysAdminId] = publicPromptList
  58. }
  59. for _, v := range publicAdminIdList {
  60. systemAdmin, ok := systemAdminMap[v]
  61. if !ok {
  62. continue
  63. }
  64. respGroupPptNameListItemList, ok := publicPromptListMap[v]
  65. if !ok {
  66. respGroupPptNameListItemList = make([]*ai_summary.AiPromptItem, 0)
  67. }
  68. // 分组信息
  69. tmpRespGroupListItem := &ai_summary.RespGroupListItem{
  70. GroupId: int64(systemAdmin.AdminId),
  71. GroupName: systemAdmin.RealName,
  72. AdminId: systemAdmin.AdminId,
  73. IsShare: 1,
  74. PromptList: respGroupPptNameListItemList,
  75. }
  76. resp = append(resp, tmpRespGroupListItem)
  77. }
  78. br.Ret = 200
  79. br.Success = true
  80. br.Msg = "查询成功"
  81. br.Data = resp
  82. return
  83. }
  84. // @router /prompt/add [post]
  85. func (this *AiController) AddPrompt() {
  86. br := new(models.BaseResponse).Init()
  87. defer func() {
  88. this.Data["json"] = br
  89. this.ServeJSON()
  90. }()
  91. var req ai_summary.AiPromptAddReq
  92. err := json.Unmarshal(this.Ctx.Input.RequestBody, &req)
  93. if err != nil {
  94. br.Msg = "参数解析异常!"
  95. br.ErrMsg = "参数解析失败,Err:" + err.Error()
  96. return
  97. }
  98. if req.Title == "" {
  99. br.Msg = "标题不能为空"
  100. return
  101. }
  102. var msg string
  103. maxSort, err := ai_summary.GetAiPromptMaxSort(this.SysUser.AdminId)
  104. prompt := &ai_summary.AiPrompt{
  105. CreateTime: time.Now(),
  106. ModifyTime: time.Now(),
  107. PromptContent: req.PromptContent,
  108. SysAdminId: this.SysUser.AdminId,
  109. SysAdminName: this.SysUser.RealName,
  110. Title: req.Title,
  111. Sort: maxSort + 1,
  112. }
  113. _, err = ai_summary.AddPropmt(prompt)
  114. if err != nil {
  115. br.Msg = "新增失败"
  116. br.ErrMsg = "新增失败,Err:" + err.Error()
  117. return
  118. }
  119. msg = "新增成功"
  120. br.Ret = 200
  121. br.Success = true
  122. br.Msg = msg
  123. }
  124. // @router /prompt/edit [post]
  125. func (this *AiController) EditPrompt() {
  126. br := new(models.BaseResponse).Init()
  127. defer func() {
  128. this.Data["json"] = br
  129. this.ServeJSON()
  130. }()
  131. var req ai_summary.AiPromptEditReq
  132. err := json.Unmarshal(this.Ctx.Input.RequestBody, &req)
  133. if err != nil {
  134. br.Msg = "参数解析异常!"
  135. br.ErrMsg = "参数解析失败,Err:" + err.Error()
  136. return
  137. }
  138. if req.Title == "" {
  139. br.Msg = "标题不能为空"
  140. return
  141. }
  142. promptItem := &ai_summary.AiPrompt{
  143. AiPromptId: req.AiPromptId,
  144. PromptContent: req.PromptContent,
  145. Title: req.Title,
  146. CreateTime: time.Time{},
  147. ModifyTime: time.Now(),
  148. }
  149. err = promptItem.Update([]string{"ModifyTime", "PromptContent", "Title"})
  150. if err != nil {
  151. br.Msg = "编辑失败"
  152. br.ErrMsg = "编辑失败,Err:" + err.Error()
  153. return
  154. }
  155. br.Ret = 200
  156. br.Success = true
  157. br.Msg = "编辑成功"
  158. br.IsAddLog = true
  159. }
  160. // @router /prompt/delete [post]
  161. func (this *AiController) DeletePrompt() {
  162. br := new(models.BaseResponse).Init()
  163. defer func() {
  164. this.Data["json"] = br
  165. this.ServeJSON()
  166. }()
  167. var req ai_summary.DeleteAipromptReq
  168. err := json.Unmarshal(this.Ctx.Input.RequestBody, &req)
  169. if err != nil {
  170. br.Msg = "参数解析异常!"
  171. br.ErrMsg = "参数解析失败,Err:" + err.Error()
  172. return
  173. }
  174. if req.AiPromptId <= 0 {
  175. br.Msg = "参数错误"
  176. return
  177. }
  178. promptInfo, err := ai_summary.GetAiPromptById(req.AiPromptId)
  179. if err != nil {
  180. br.Msg = "提示词不存在"
  181. return
  182. }
  183. if promptInfo.SysAdminId != this.SysUser.AdminId {
  184. br.Msg = "无权删除"
  185. return
  186. }
  187. err = ai_summary.DelAiPromptyId(req.AiPromptId)
  188. if err != nil {
  189. br.Msg = "删除失败"
  190. br.ErrMsg = "删除失败,Err:" + err.Error()
  191. return
  192. }
  193. br.Ret = 200
  194. br.Success = true
  195. br.IsAddLog = true
  196. br.Msg = "删除成功"
  197. }
  198. // @router /prompt/detail [get]
  199. func (this *AiController) DetailPrompt() {
  200. br := new(models.BaseResponse).Init()
  201. defer func() {
  202. if br.ErrMsg == "" {
  203. br.IsSendEmail = false
  204. }
  205. this.Data["json"] = br
  206. this.ServeJSON()
  207. }()
  208. sysUser := this.SysUser
  209. if sysUser == nil {
  210. br.Msg = "请登录"
  211. br.ErrMsg = "请登录,SysUser Is Empty"
  212. br.Ret = 408
  213. return
  214. }
  215. aiPromptId, _ := this.GetInt("AiPromptId")
  216. promptInfo, err := ai_summary.GetAiPromptById(aiPromptId)
  217. if err != nil {
  218. br.Msg = "提示词不存在"
  219. return
  220. }
  221. br.Ret = 200
  222. br.Success = true
  223. br.Msg = "获取成功"
  224. br.Data = promptInfo
  225. }
  226. // @router /prompt/move [post]
  227. func (this *AiController) MoveAiPrompt() {
  228. br := new(models.BaseResponse).Init()
  229. defer func() {
  230. this.Data["json"] = br
  231. this.ServeJSON()
  232. }()
  233. var req ai_summary.ReqMovePrompt
  234. err := json.Unmarshal(this.Ctx.Input.RequestBody, &req)
  235. if err != nil {
  236. br.Msg = "参数解析异常!"
  237. br.ErrMsg = "参数解析失败,Err:" + err.Error()
  238. return
  239. }
  240. if req.AiPromptId <= 0 {
  241. br.Msg = "请输入提示词ID"
  242. return
  243. }
  244. prompt, err := ai_summary.GetAiPromptById(req.AiPromptId)
  245. if err != nil {
  246. if utils.IsErrNoRow(err) {
  247. br.Msg = "当前提示词不存在"
  248. br.ErrMsg = "当前提示词不存在"
  249. return
  250. }
  251. br.Msg = "提示词查询出错"
  252. br.ErrMsg = "提示词查询出错:" + err.Error()
  253. return
  254. }
  255. var updateStr []string
  256. var currentSort, prevSort, nextSort int
  257. currentSort = prompt.Sort
  258. var prevPrompt *ai_summary.AiPrompt
  259. var nextPrompt *ai_summary.AiPrompt
  260. if req.PrevAiPromptId > 0 {
  261. prevPrompt, err = ai_summary.GetAiPromptById(req.PrevAiPromptId)
  262. if err != nil {
  263. if utils.IsErrNoRow(err) {
  264. err = errors.New("目录下的提示词不存在")
  265. return
  266. }
  267. err = errors.New("目录下的提示词查询出错:" + err.Error())
  268. return
  269. }
  270. prevSort = prevPrompt.Sort
  271. }
  272. if req.NextAiPromptId > 0 {
  273. nextPrompt, err = ai_summary.GetAiPromptById(req.NextAiPromptId)
  274. if err != nil {
  275. if utils.IsErrNoRow(err) {
  276. err = errors.New("目录下的提示词不存在")
  277. return
  278. }
  279. err = errors.New("目录下的提示词查询出错:" + err.Error())
  280. return
  281. }
  282. nextSort = nextPrompt.Sort
  283. }
  284. updateStr = append(updateStr, "sort")
  285. if prevSort >= currentSort {
  286. err = ai_summary.MoveDownPromptBySort(this.SysUser.AdminId, prevSort, currentSort)
  287. if err != nil {
  288. err = errors.New("向下移动提示词出错:" + err.Error())
  289. return
  290. }
  291. prompt.Sort = prevSort
  292. } else if nextSort <= currentSort && nextSort != 0 {
  293. err = ai_summary.MoveUpPromptBySort(this.SysUser.AdminId, nextSort, currentSort)
  294. if err != nil {
  295. err = errors.New("向上移动提示词出错:" + err.Error())
  296. return
  297. }
  298. prompt.Sort = nextSort
  299. }
  300. err = prompt.Update(updateStr)
  301. if err != nil {
  302. err = errors.New("移动提示词出错:" + err.Error())
  303. return
  304. }
  305. br.Ret = 200
  306. br.Success = true
  307. br.Msg = "移动成功"
  308. }
  309. // @router /prompt/share [post]
  310. func (this *AiController) SharePrompt() {
  311. br := new(models.BaseResponse).Init()
  312. defer func() {
  313. this.Data["json"] = br
  314. this.ServeJSON()
  315. }()
  316. var req ai_summary.DeleteAipromptReq
  317. err := json.Unmarshal(this.Ctx.Input.RequestBody, &req)
  318. if err != nil {
  319. br.Msg = "参数解析异常!"
  320. br.ErrMsg = "参数解析失败,Err:" + err.Error()
  321. return
  322. }
  323. if req.AiPromptId <= 0 {
  324. br.Msg = "请输入提示词序号"
  325. return
  326. }
  327. err = aiSummaryService.SharePrompt(req.AiPromptId, this.SysUser.AdminId)
  328. if err != nil {
  329. br.Msg = err.Error()
  330. return
  331. }
  332. br.Ret = 200
  333. br.Success = true
  334. br.Msg = "操作成功"
  335. return
  336. }