sandbox.go 21 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795
  1. package sandbox
  2. import (
  3. "encoding/json"
  4. "fmt"
  5. "github.com/rdlucklib/rdluck_tools/paging"
  6. "hongze/hz_eta_api/controllers"
  7. "hongze/hz_eta_api/models"
  8. "hongze/hz_eta_api/models/sandbox"
  9. "hongze/hz_eta_api/models/sandbox/request"
  10. "hongze/hz_eta_api/models/sandbox/response"
  11. sandboxService "hongze/hz_eta_api/services/sandbox"
  12. "hongze/hz_eta_api/utils"
  13. )
  14. // versionSize 版本列表第一页数据约定是:3条
  15. var versionSize = 3
  16. // SandboxController 逻辑导图
  17. type SandboxController struct {
  18. controllers.BaseAuthController
  19. }
  20. // List
  21. // @Title 逻辑导图列表
  22. // @Description 逻辑导图列表接口
  23. // @Param PageSize query int true "每页数据条数"
  24. // @Param CurrentIndex query int true "当前页页码,从1开始"
  25. // @Param ChartPermissionId query int true "权限编号id"
  26. // @Param Keyword query string false "搜索关键词:沙盘名称/编辑人名称"
  27. // @Success 200 {object} response.SandboxListResp
  28. // @router /list [get]
  29. func (this *SandboxController) List() {
  30. br := new(models.BaseResponse).Init()
  31. defer func() {
  32. this.Data["json"] = br
  33. this.ServeJSON()
  34. }()
  35. chartPermissionId, _ := this.GetInt("ChartPermissionId")
  36. keyword := this.GetString("Keyword")
  37. pageSize, _ := this.GetInt("PageSize")
  38. currentIndex, _ := this.GetInt("CurrentIndex")
  39. var startSize int
  40. if pageSize <= 0 {
  41. pageSize = utils.PageSize20
  42. }
  43. if currentIndex <= 0 {
  44. currentIndex = 1
  45. }
  46. startSize = paging.StartIndex(currentIndex, pageSize)
  47. var condition string
  48. var pars []interface{}
  49. if chartPermissionId > 0 {
  50. condition += " AND a.chart_permission_id=? "
  51. pars = append(pars, chartPermissionId)
  52. }
  53. if keyword != "" {
  54. condition += ` AND ( a.name LIKE '%` + keyword + `%' OR b.name LIKE '%` + keyword + `%' )`
  55. }
  56. //获取指标信息
  57. total, list, err := sandbox.GetList(condition, pars, startSize, pageSize)
  58. if err != nil && err.Error() != utils.ErrNoRow() {
  59. br.Success = true
  60. br.Msg = "获取沙盘列表失败"
  61. br.ErrMsg = "获取沙盘列表失败,Err:" + err.Error()
  62. return
  63. }
  64. if list == nil || (err != nil && err.Error() == utils.ErrNoRow()) {
  65. list = make([]*sandbox.SandboxListItem, 0)
  66. }
  67. if len(list) > 0 {
  68. sandboxIdList := make([]int, 0)
  69. for _, v := range list {
  70. sandboxIdList = append(sandboxIdList, v.SandboxId)
  71. }
  72. sandboxVersionTotalList, err := sandbox.GetTotalSandboxVersionBySandboxIdList(sandboxIdList)
  73. if err != nil {
  74. br.Success = true
  75. br.Msg = "获取沙盘版本数量失败"
  76. br.ErrMsg = "获取沙盘版本数量失败,Err:" + err.Error()
  77. return
  78. }
  79. sandboxVersionTotalMap := make(map[int]int)
  80. for _, v := range sandboxVersionTotalList {
  81. sandboxVersionTotalMap[v.SandboxId] = v.Total
  82. }
  83. for _, item := range list {
  84. /*key := fmt.Sprint(`crm:sandbox:edit:`, item.SandboxId)
  85. opUserId, _ := utils.Rc.RedisInt(key)
  86. //如果当前没有人操作,获取当前操作人是本人,那么编辑按钮可用
  87. if opUserId <= 0 || (opUserId == this.SysUser.AdminId) {
  88. item.CanEdit = true
  89. } else {
  90. adminInfo, errAdmin := system.GetSysUserById(opUserId)
  91. if errAdmin != nil {
  92. br.Msg = "获取失败"
  93. br.ErrMsg = "获取失败,Err:" + errAdmin.Error()
  94. return
  95. }
  96. item.Editor = adminInfo.RealName
  97. }*/
  98. markStatus, err := sandboxService.UpdateSandboxEditMark(item.SandboxId, this.SysUser.AdminId, 2, this.SysUser.RealName)
  99. if err != nil {
  100. br.Msg = "查询标记状态失败"
  101. br.ErrMsg = "查询标记状态失败,Err:" + err.Error()
  102. return
  103. }
  104. if markStatus.Status == 0 {
  105. item.CanEdit = true
  106. } else {
  107. item.Editor = markStatus.Editor
  108. }
  109. // 沙盘版本数量
  110. versionTotal := sandboxVersionTotalMap[item.SandboxId]
  111. item.VersionTotal = versionTotal
  112. }
  113. }
  114. page := paging.GetPaging(currentIndex, pageSize, total)
  115. resp := response.SandboxListResp{
  116. Paging: page,
  117. List: list,
  118. }
  119. br.Ret = 200
  120. br.Success = true
  121. br.Msg = "获取成功"
  122. br.Data = resp
  123. }
  124. // FirstVersionList
  125. // @Title 逻辑导图版本列表(列表页第一页)
  126. // @Description 逻辑导图版本列表接口(列表页第一页)
  127. // @Param SandboxId query int true "沙盘id"
  128. // @Success 200 {object} response.SandboxVersionListResp
  129. // @router /version/first_list [get]
  130. func (this *SandboxController) FirstVersionList() {
  131. br := new(models.BaseResponse).Init()
  132. defer func() {
  133. this.Data["json"] = br
  134. this.ServeJSON()
  135. }()
  136. sandboxId, _ := this.GetInt("SandboxId")
  137. keyword := this.GetString("Keyword")
  138. currentIndex := 1
  139. pageSize := versionSize
  140. startSize := 0
  141. var condition string
  142. var pars []interface{}
  143. if sandboxId <= 0 {
  144. br.Msg = "参数错误,沙盘编号id必传!"
  145. br.ErrMsg = "参数错误,沙盘编号id必传"
  146. return
  147. }
  148. condition += " AND a.sandbox_id=? "
  149. pars = append(pars, sandboxId)
  150. //不能筛选出当前版本
  151. condition += " AND b.curr_version < a.curr_version "
  152. if keyword != "" {
  153. condition += ` AND ( a.name LIKE '%` + keyword + `%' OR b.name LIKE '%` + keyword + `%' )`
  154. }
  155. //获取指标信息
  156. total, list, err := sandbox.GetVersionList(condition, pars, startSize, pageSize)
  157. if err != nil && err.Error() != utils.ErrNoRow() {
  158. br.Success = true
  159. br.Msg = "获取沙盘列表失败"
  160. br.ErrMsg = "获取沙盘列表失败,Err:" + err.Error()
  161. return
  162. }
  163. if list == nil || (err != nil && err.Error() == utils.ErrNoRow()) {
  164. list = make([]*sandbox.SandboxVersionListItem, 0)
  165. }
  166. for _, v := range list {
  167. v.ModifyTime = v.CreateTime
  168. }
  169. page := paging.GetPaging(currentIndex, pageSize, total)
  170. resp := response.SandboxVersionListResp{
  171. Paging: page,
  172. List: list,
  173. }
  174. br.Ret = 200
  175. br.Success = true
  176. br.Msg = "获取成功"
  177. br.Data = resp
  178. }
  179. // VersionList
  180. // @Title 逻辑导图版本列表
  181. // @Description 逻辑导图版本列表接口
  182. // @Param PageSize query int true "每页数据条数"
  183. // @Param CurrentIndex query int true "当前页页码,从1开始"
  184. // @Param SandboxId query int true "沙盘id"
  185. // @Success 200 {object} response.SandboxVersionListResp
  186. // @router /version/list [get]
  187. func (this *SandboxController) VersionList() {
  188. br := new(models.BaseResponse).Init()
  189. defer func() {
  190. this.Data["json"] = br
  191. this.ServeJSON()
  192. }()
  193. sandboxId, _ := this.GetInt("SandboxId")
  194. keyWord := this.GetString("Keyword")
  195. pageSize, _ := this.GetInt("PageSize")
  196. currentIndex, _ := this.GetInt("CurrentIndex")
  197. var startSize int
  198. if pageSize <= 0 {
  199. pageSize = utils.PageSize20
  200. }
  201. //第一页需要返回的几条数据(目前是3条)
  202. startSize = paging.StartIndex(currentIndex, pageSize) + versionSize
  203. var condition string
  204. var pars []interface{}
  205. if sandboxId <= 0 {
  206. br.Msg = "参数错误,沙盘编号id必传!"
  207. br.ErrMsg = "参数错误,沙盘编号id必传"
  208. return
  209. }
  210. condition += " AND a.sandbox_id=? "
  211. pars = append(pars, sandboxId)
  212. //不能筛选出当前版本
  213. condition += " AND b.curr_version < a.curr_version "
  214. if keyWord != "" {
  215. condition += ` AND ( a.op_user_name LIKE '%` + keyWord + `%' OR a.name LIKE '%` + keyWord + `%' or a.op_user_name LIKE '%` + keyWord + `%' OR a.name LIKE '%` + keyWord + `%' )`
  216. }
  217. //获取指标信息
  218. total, list, err := sandbox.GetVersionList(condition, pars, startSize, pageSize)
  219. if err != nil && err.Error() != utils.ErrNoRow() {
  220. br.Success = true
  221. br.Msg = "获取沙盘列表失败"
  222. br.ErrMsg = "获取沙盘列表失败,Err:" + err.Error()
  223. return
  224. }
  225. if list == nil || (err != nil && err.Error() == utils.ErrNoRow()) {
  226. list = make([]*sandbox.SandboxVersionListItem, 0)
  227. }
  228. for _, v := range list {
  229. v.ModifyTime = v.CreateTime
  230. /*key := fmt.Sprint(`crm:sandbox:edit:`, v.SandboxId)
  231. opUserId, _ := utils.Rc.RedisInt(key)
  232. //如果当前没有人操作,获取当前操作人是本人,那么编辑按钮可用
  233. if opUserId <= 0 || (opUserId == this.SysUser.AdminId) {
  234. v.CanEdit = true
  235. }*/
  236. markStatus, err := sandboxService.UpdateSandboxEditMark(v.SandboxId, this.SysUser.AdminId, 2, this.SysUser.RealName)
  237. if err != nil {
  238. br.Msg = "查询标记状态失败"
  239. br.ErrMsg = "查询标记状态失败,Err:" + err.Error()
  240. return
  241. }
  242. if markStatus.Status == 0 {
  243. v.CanEdit = true
  244. }
  245. }
  246. //过滤第一页的几条数据(目前是3条)
  247. total = total - versionSize
  248. if total <= 0 {
  249. total = 0
  250. }
  251. page := paging.GetPaging(currentIndex, pageSize, total)
  252. resp := response.SandboxVersionListResp{
  253. Paging: page,
  254. List: list,
  255. }
  256. br.Ret = 200
  257. br.Success = true
  258. br.Msg = "获取成功"
  259. br.Data = resp
  260. }
  261. // Save
  262. // @Title 新增/编辑保存沙盘
  263. // @Description 新增/编辑保存沙盘接口
  264. // @Param request body request.AddAndEditSandbox true "type json string"
  265. // @Success 200 {object} sandbox.Sandbox
  266. // @router /save [post]
  267. func (this *SandboxController) Save() {
  268. br := new(models.BaseResponse).Init()
  269. defer func() {
  270. this.Data["json"] = br
  271. this.ServeJSON()
  272. }()
  273. sysUser := this.SysUser
  274. if sysUser == nil {
  275. br.Msg = "请登录"
  276. br.ErrMsg = "请登录,SysUser Is Empty"
  277. br.Ret = 408
  278. return
  279. }
  280. var req request.AddAndEditSandbox
  281. err := json.Unmarshal(this.Ctx.Input.RequestBody, &req)
  282. if err != nil {
  283. br.Msg = "参数解析异常!"
  284. br.ErrMsg = "参数解析失败,Err:" + err.Error()
  285. return
  286. }
  287. var sandboxResp *sandbox.SandboxSaveResp
  288. var errMsg string
  289. if req.SandboxVersionCode == `` {
  290. //新增沙盘
  291. sandboxResp, err = sandboxService.AddSandbox(req, sysUser.AdminId, sysUser.RealName)
  292. } else {
  293. ////更新当前编辑中的状态缓存
  294. //err = sandboxService.UpdateSandboxEditMark(req.SandboxId, sysUser.AdminId, 1)
  295. //if err != nil {
  296. // br.Msg = err.Error()
  297. // return
  298. //}
  299. //编辑沙盘
  300. sandboxResp, err, errMsg = sandboxService.UpdateSandbox(req, sysUser.AdminId, sysUser.RealName)
  301. }
  302. if err != nil {
  303. br.Msg = "保存失败!"
  304. if errMsg != `` {
  305. br.Msg = errMsg
  306. }
  307. br.ErrMsg = "保存失败,Err:" + err.Error()
  308. return
  309. }
  310. msg := "保存成功"
  311. br.Ret = 200
  312. br.Success = true
  313. br.Msg = msg
  314. br.Data = sandboxResp
  315. }
  316. // AddSandboxDraft
  317. // @Title 添加沙盘草稿
  318. // @Description 添加沙盘草稿接口
  319. // @Param request body request.AddAndEditSandbox true "type json string"
  320. // @Success 200 {object} sandbox.SandboxDraft
  321. // @Fail 202 另外的人在操作,不要重复添加草稿;204 错误了,当时不是必要性的错误,不用将错误信息暴露给用户
  322. // @router /draft/add [post]
  323. func (this *SandboxController) AddSandboxDraft() {
  324. br := new(models.BaseResponse).Init()
  325. br.IsSendEmail = false
  326. defer func() {
  327. this.Data["json"] = br
  328. this.ServeJSON()
  329. }()
  330. sysUser := this.SysUser
  331. if sysUser == nil {
  332. br.Msg = "请登录"
  333. br.ErrMsg = "请登录,SysUser Is Empty"
  334. br.Ret = 408
  335. return
  336. }
  337. var req request.AddAndEditSandbox
  338. err := json.Unmarshal(this.Ctx.Input.RequestBody, &req)
  339. if err != nil {
  340. br.Msg = "参数解析异常!"
  341. br.ErrMsg = "参数解析失败,Err:" + err.Error()
  342. return
  343. }
  344. if req.SandboxVersionCode == `` {
  345. br.Msg = "请传入沙盘版本!"
  346. return
  347. }
  348. // 获取沙盘版本信息
  349. sandboxVersion, err := sandbox.GetSandboxVersionBySandboxVersionCode(req.SandboxVersionCode)
  350. if err != nil {
  351. if err.Error() == utils.ErrNoRow() {
  352. br.Msg = "找不到该版本!"
  353. br.ErrMsg = "找不到该版本"
  354. return
  355. }
  356. br.Msg = "找不到该版本!"
  357. br.ErrMsg = "找不到该版本,Err:" + err.Error()
  358. br.IsSendEmail = false
  359. return
  360. }
  361. //更新标记key
  362. markStatus, err := sandboxService.UpdateSandboxEditMark(sandboxVersion.SandboxId, sysUser.AdminId, 1, sysUser.RealName)
  363. if err != nil {
  364. br.Msg = err.Error()
  365. return
  366. }
  367. if markStatus.Status == 1 {
  368. br.Msg = markStatus.Msg
  369. return
  370. }
  371. //新增沙盘草稿
  372. sandboxDraftInfo, err := sandboxService.AddSandboxDraft(sandboxVersion.SandboxId, req, sysUser.AdminId, sysUser.RealName)
  373. if err != nil {
  374. br.Msg = "保存失败!"
  375. br.ErrMsg = "保存失败,Err:" + err.Error()
  376. br.Ret = 204 //204 (无内容) :服务器成功处理了请求,但没有返回任何内容。
  377. return
  378. }
  379. msg := "保存成功"
  380. br.Ret = 200
  381. br.Success = true
  382. br.Msg = msg
  383. br.Data = sandboxDraftInfo
  384. }
  385. // MarkEditStatus
  386. // @Title 标记沙盘编辑状态
  387. // @Description 标记沙盘编辑状态接口
  388. // @Param request body request.MarkEditSandbox true "type json string"
  389. // @Success 200 标记成功 ;202 标记成功
  390. // @router /mark [post]
  391. func (this *SandboxController) MarkEditStatus() {
  392. br := new(models.BaseResponse).Init()
  393. defer func() {
  394. this.Data["json"] = br
  395. this.ServeJSON()
  396. }()
  397. sysUser := this.SysUser
  398. if sysUser == nil {
  399. br.Msg = "请登录"
  400. br.ErrMsg = "请登录,SysUser Is Empty"
  401. br.Ret = 408
  402. return
  403. }
  404. var req request.MarkEditSandbox
  405. err := json.Unmarshal(this.Ctx.Input.RequestBody, &req)
  406. if err != nil {
  407. br.Msg = "参数解析异常!"
  408. br.ErrMsg = "参数解析失败,Err:" + err.Error()
  409. return
  410. }
  411. if req.SandboxId <= 0 {
  412. br.Msg = "缺少沙盘编号"
  413. return
  414. }
  415. if req.Status <= 0 {
  416. br.Msg = "标记状态异常"
  417. return
  418. }
  419. //更新标记key
  420. data, err := sandboxService.UpdateSandboxEditMark(req.SandboxId, sysUser.AdminId, req.Status, sysUser.RealName)
  421. if err != nil {
  422. br.Msg = err.Error()
  423. return
  424. }
  425. msg := "标记成功"
  426. br.Ret = 200
  427. br.Success = true
  428. br.Msg = msg
  429. br.Data = data
  430. }
  431. // GetSandboxVersionDetail
  432. // @Title 获取沙盘版本数据详情(已保存的)
  433. // @Description 获取沙盘版本数据详情接口(已保存的)
  434. // @Param SandboxVersionCode query string true "沙盘版本code"
  435. // @Success 200 {object} sandbox.SandboxVersion
  436. // @router /version/detail [get]
  437. func (this *SandboxController) GetSandboxVersionDetail() {
  438. br := new(models.BaseResponse).Init()
  439. defer func() {
  440. this.Data["json"] = br
  441. this.ServeJSON()
  442. }()
  443. sysUser := this.SysUser
  444. if sysUser == nil {
  445. br.Msg = "请登录"
  446. br.ErrMsg = "请登录,SysUser Is Empty"
  447. br.Ret = 408
  448. return
  449. }
  450. sandboxVersionCode := this.GetString("SandboxVersionCode")
  451. if sandboxVersionCode == "" {
  452. br.Msg = "缺少沙盘版本编号"
  453. return
  454. }
  455. //获取沙盘数据详情(已保存的)
  456. sandboxVersionInfo, err := sandboxService.GetSandboxVersionDetailByCode(sandboxVersionCode)
  457. if err != nil {
  458. br.Msg = "获取失败"
  459. br.ErrMsg = "获取失败,Err:" + err.Error()
  460. return
  461. }
  462. msg := "获取成功"
  463. br.Ret = 200
  464. br.Success = true
  465. br.Msg = msg
  466. br.Data = sandboxVersionInfo
  467. }
  468. // GetLastSandboxInfo
  469. // @Title 获取最后一次编辑的沙盘数据详情
  470. // @Description 获取最后一次编辑的沙盘数据详情接口
  471. // @Param SandboxId query int true "沙盘编号id"
  472. // @Success 200 {object} sandbox.Sandbox
  473. // @router /last_info [get]
  474. func (this *SandboxController) GetLastSandboxInfo() {
  475. br := new(models.BaseResponse).Init()
  476. defer func() {
  477. this.Data["json"] = br
  478. this.ServeJSON()
  479. }()
  480. sysUser := this.SysUser
  481. if sysUser == nil {
  482. br.Msg = "请登录"
  483. br.ErrMsg = "请登录,SysUser Is Empty"
  484. br.Ret = 408
  485. return
  486. }
  487. sandboxId, _ := this.GetInt("SandboxId", 0)
  488. if sandboxId <= 0 {
  489. br.Msg = "缺少沙盘编号"
  490. return
  491. }
  492. //获取最后一次操作的沙盘数据
  493. sandboxInfo, err := sandboxService.GetLastSandboxInfo(sandboxId)
  494. if err != nil {
  495. br.Msg = err.Error()
  496. return
  497. }
  498. msg := "获取成功"
  499. br.Ret = 200
  500. br.Success = true
  501. br.Msg = msg
  502. br.Data = sandboxInfo
  503. }
  504. // Delete
  505. // @Title 删除沙盘
  506. // @Description 删除沙盘接口
  507. // @Param request body request.DeleteSandbox true "type json string"
  508. // @Success 200 标记成功
  509. // @router /delete [post]
  510. func (this *SandboxController) Delete() {
  511. br := new(models.BaseResponse).Init()
  512. defer func() {
  513. this.Data["json"] = br
  514. this.ServeJSON()
  515. }()
  516. sysUser := this.SysUser
  517. if sysUser == nil {
  518. br.Msg = "请登录"
  519. br.ErrMsg = "请登录,SysUser Is Empty"
  520. br.Ret = 408
  521. return
  522. }
  523. var req request.DeleteSandbox
  524. err := json.Unmarshal(this.Ctx.Input.RequestBody, &req)
  525. if err != nil {
  526. br.Msg = "参数解析异常!"
  527. br.ErrMsg = "参数解析失败,Err:" + err.Error()
  528. return
  529. }
  530. if req.SandboxId <= 0 {
  531. br.Msg = "缺少沙盘编号"
  532. return
  533. }
  534. /*key := fmt.Sprint(`crm:sandbox:edit:`, req.SandboxId)
  535. opUserId, _ := utils.Rc.RedisInt(key)
  536. //如果当前有人操作,且获取当前操作人不是本人,那么不允许删除
  537. if opUserId > 0 && opUserId != this.SysUser.AdminId {
  538. br.Msg = "当前有其他人正在编辑,不允许删除该沙盘"
  539. return
  540. }*/
  541. markStatus, err := sandboxService.UpdateSandboxEditMark(req.SandboxId, this.SysUser.AdminId, 2, this.SysUser.RealName)
  542. if err != nil {
  543. br.Msg = "查询标记状态失败"
  544. br.ErrMsg = "查询标记状态失败,Err:" + err.Error()
  545. return
  546. }
  547. if markStatus.Status == 1 {
  548. br.Msg = fmt.Sprintf("当前%s正在编辑,不允许删除该沙盘", markStatus.Editor)
  549. return
  550. }
  551. //删除沙盘
  552. err = sandboxService.DeleteSandbox(req.SandboxId)
  553. if err != nil {
  554. br.Msg = err.Error()
  555. return
  556. }
  557. msg := "删除成功"
  558. br.Ret = 200
  559. br.Success = true
  560. br.Msg = msg
  561. }
  562. // DeleteVersion
  563. // @Title 删除沙盘版本
  564. // @Description 删除沙盘版本接口
  565. // @Param request body request.DeleteSandbox true "type json string"
  566. // @Success 200 标记成功
  567. // @router /version/delete [post]
  568. func (this *SandboxController) DeleteVersion() {
  569. br := new(models.BaseResponse).Init()
  570. defer func() {
  571. this.Data["json"] = br
  572. this.ServeJSON()
  573. }()
  574. sysUser := this.SysUser
  575. if sysUser == nil {
  576. br.Msg = "请登录"
  577. br.ErrMsg = "请登录,SysUser Is Empty"
  578. br.Ret = 408
  579. return
  580. }
  581. var req request.DeleteSandboxVersion
  582. err := json.Unmarshal(this.Ctx.Input.RequestBody, &req)
  583. if err != nil {
  584. br.Msg = "参数解析异常!"
  585. br.ErrMsg = "参数解析失败,Err:" + err.Error()
  586. return
  587. }
  588. if req.SandboxVersionCode == `` {
  589. br.Msg = "缺少沙盘版本号"
  590. return
  591. }
  592. //删除沙盘
  593. err, errMsg := sandboxService.DeleteSandboxVersion(req.SandboxVersionCode, this.SysUser.AdminId)
  594. if err != nil {
  595. br.Msg = "删除版本失败"
  596. if errMsg != `` {
  597. br.Msg = errMsg
  598. }
  599. br.ErrMsg = err.Error()
  600. return
  601. }
  602. msg := "删除成功"
  603. br.Ret = 200
  604. br.Success = true
  605. br.Msg = msg
  606. }
  607. // ResetDraftToLastVersion
  608. // @Title 重置沙盘草稿至最新版本
  609. // @Description 重置沙盘草稿至最新版本接口
  610. // @Param request body request.DeleteSandbox true "type json string"
  611. // @Success 200 {object} sandbox.SandboxDraft
  612. // @Fail 202 另外的人在操作,不要重复添加草稿;204 错误了,当时不是必要性的错误,不用将错误信息暴露给用户
  613. // @router /draft/reset [post]
  614. func (this *SandboxController) ResetDraftToLastVersion() {
  615. br := new(models.BaseResponse).Init()
  616. defer func() {
  617. this.Data["json"] = br
  618. this.ServeJSON()
  619. }()
  620. sysUser := this.SysUser
  621. if sysUser == nil {
  622. br.Msg = "请登录"
  623. br.ErrMsg = "请登录,SysUser Is Empty"
  624. br.Ret = 408
  625. return
  626. }
  627. var req request.DeleteSandbox
  628. err := json.Unmarshal(this.Ctx.Input.RequestBody, &req)
  629. if err != nil {
  630. br.Msg = "参数解析异常!"
  631. br.ErrMsg = "参数解析失败,Err:" + err.Error()
  632. return
  633. }
  634. if req.SandboxId <= 0 {
  635. br.Msg = "缺少沙盘编号"
  636. return
  637. }
  638. //更新标记key
  639. markStatus, err := sandboxService.UpdateSandboxEditMark(req.SandboxId, sysUser.AdminId, 0, sysUser.RealName)
  640. if err != nil {
  641. br.Msg = err.Error()
  642. return
  643. }
  644. if markStatus.Status == 1 {
  645. br.Msg = markStatus.Msg
  646. return
  647. }
  648. //重置沙盘草稿至最新版本
  649. sandboxDraftInfo, err := sandboxService.ResetDraftToLastVersion(req.SandboxId, sysUser.AdminId, sysUser.RealName)
  650. if err != nil {
  651. br.Msg = "保存失败!"
  652. br.ErrMsg = "保存失败,Err:" + err.Error()
  653. return
  654. }
  655. msg := "保存成功"
  656. br.Ret = 200
  657. br.Success = true
  658. br.Msg = msg
  659. br.Data = sandboxDraftInfo
  660. }
  661. // ListByQuote
  662. // @Title 逻辑导图列表(其他地方引用到的,莫名其妙要根据输入的关键字匹配品种)
  663. // @Description 逻辑导图列表接口(其他地方引用到的,莫名其妙要根据输入的关键字匹配品种)
  664. // @Param PageSize query int true "每页数据条数"
  665. // @Param CurrentIndex query int true "当前页页码,从1开始"
  666. // @Param ChartPermissionId query int true "权限编号id"
  667. // @Param Keyword query string false "搜索关键词:沙盘名称/编辑人名称"
  668. // @Success 200 {object} response.SandboxListResp
  669. // @router /list_by_quote [get]
  670. func (this *SandboxController) ListByQuote() {
  671. br := new(models.BaseResponse).Init()
  672. defer func() {
  673. this.Data["json"] = br
  674. this.ServeJSON()
  675. }()
  676. chartPermissionId, _ := this.GetInt("ChartPermissionId")
  677. keyword := this.GetString("Keyword")
  678. pageSize, _ := this.GetInt("PageSize")
  679. currentIndex, _ := this.GetInt("CurrentIndex")
  680. var startSize int
  681. if pageSize <= 0 {
  682. pageSize = utils.PageSize20
  683. }
  684. if currentIndex <= 0 {
  685. currentIndex = 1
  686. }
  687. startSize = paging.StartIndex(currentIndex, pageSize)
  688. var condition string
  689. var pars []interface{}
  690. if chartPermissionId > 0 {
  691. condition += " AND a.chart_permission_id=? "
  692. pars = append(pars, chartPermissionId)
  693. }
  694. if keyword != "" {
  695. condition += ` AND ( a.name LIKE '%` + keyword + `%' OR b.name LIKE '%` + keyword + `%' OR a.chart_permission_name LIKE '%` + keyword + `%' )`
  696. }
  697. //获取指标信息
  698. total, list, err := sandbox.GetList(condition, pars, startSize, pageSize)
  699. if err != nil && err.Error() != utils.ErrNoRow() {
  700. br.Success = true
  701. br.Msg = "获取沙盘列表失败"
  702. br.ErrMsg = "获取沙盘列表失败,Err:" + err.Error()
  703. return
  704. }
  705. if list == nil || (err != nil && err.Error() == utils.ErrNoRow()) {
  706. list = make([]*sandbox.SandboxListItem, 0)
  707. }
  708. page := paging.GetPaging(currentIndex, pageSize, total)
  709. resp := response.SandboxListResp{
  710. Paging: page,
  711. List: list,
  712. }
  713. br.Ret = 200
  714. br.Success = true
  715. br.Msg = "获取成功"
  716. br.Data = resp
  717. }