sandbox.go 22 KB

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