sandbox.go 22 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814
  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. "hongze/hz_eta_api/models/system"
  12. sandboxService "hongze/hz_eta_api/services/sandbox"
  13. "hongze/hz_eta_api/utils"
  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. // 获取系统菜单, 如果没有对应的字段的特殊处理项, 则忽略必填
  289. menus, e := system.GetSysMenuItemsByCondition("", make([]interface{}, 0), []string{}, ``)
  290. if e != nil {
  291. br.Msg = "保存失败"
  292. br.ErrMsg = "获取菜单列表失败, Err: " + e.Error()
  293. return
  294. }
  295. menuMap := make(map[string]bool)
  296. for _, m := range menus {
  297. if m.ButtonCode != "" {
  298. menuMap[m.ButtonCode] = true
  299. }
  300. }
  301. ignoreVariety := false
  302. if !menuMap[system.MenuSpecialHandleSandboxVariety] {
  303. ignoreVariety = true
  304. return
  305. }
  306. var sandboxInfo *sandbox.Sandbox
  307. var errMsg string
  308. if req.SandboxVersionCode == `` {
  309. //新增沙盘
  310. sandboxInfo, err = sandboxService.AddSandbox(req, sysUser.AdminId, sysUser.RealName, ignoreVariety)
  311. } else {
  312. ////更新当前编辑中的状态缓存
  313. //err = sandboxService.UpdateSandboxEditMark(req.SandboxId, sysUser.AdminId, 1)
  314. //if err != nil {
  315. // br.Msg = err.Error()
  316. // return
  317. //}
  318. //编辑沙盘
  319. sandboxInfo, err, errMsg = sandboxService.UpdateSandbox(req, sysUser.AdminId, sysUser.RealName, ignoreVariety)
  320. }
  321. if err != nil {
  322. br.Msg = "保存失败!"
  323. if errMsg != `` {
  324. br.Msg = errMsg
  325. }
  326. br.ErrMsg = "保存失败,Err:" + err.Error()
  327. return
  328. }
  329. msg := "保存成功"
  330. br.Ret = 200
  331. br.Success = true
  332. br.Msg = msg
  333. br.Data = sandboxInfo
  334. }
  335. // AddSandboxDraft
  336. // @Title 添加沙盘草稿
  337. // @Description 添加沙盘草稿接口
  338. // @Param request body request.AddAndEditSandbox true "type json string"
  339. // @Success 200 {object} sandbox.SandboxDraft
  340. // @Fail 202 另外的人在操作,不要重复添加草稿;204 错误了,当时不是必要性的错误,不用将错误信息暴露给用户
  341. // @router /draft/add [post]
  342. func (this *SandboxController) AddSandboxDraft() {
  343. br := new(models.BaseResponse).Init()
  344. br.IsSendEmail = false
  345. defer func() {
  346. this.Data["json"] = br
  347. this.ServeJSON()
  348. }()
  349. sysUser := this.SysUser
  350. if sysUser == nil {
  351. br.Msg = "请登录"
  352. br.ErrMsg = "请登录,SysUser Is Empty"
  353. br.Ret = 408
  354. return
  355. }
  356. var req request.AddAndEditSandbox
  357. err := json.Unmarshal(this.Ctx.Input.RequestBody, &req)
  358. if err != nil {
  359. br.Msg = "参数解析异常!"
  360. br.ErrMsg = "参数解析失败,Err:" + err.Error()
  361. return
  362. }
  363. if req.SandboxVersionCode == `` {
  364. br.Msg = "请传入沙盘版本!"
  365. return
  366. }
  367. // 获取沙盘版本信息
  368. sandboxVersion, err := sandbox.GetSandboxVersionBySandboxVersionCode(req.SandboxVersionCode)
  369. if err != nil {
  370. if err.Error() == utils.ErrNoRow() {
  371. br.Msg = "找不到该版本!"
  372. br.ErrMsg = "找不到该版本"
  373. return
  374. }
  375. br.Msg = "找不到该版本!"
  376. br.ErrMsg = "找不到该版本,Err:" + err.Error()
  377. br.IsSendEmail = false
  378. return
  379. }
  380. //更新标记key
  381. markStatus, err := sandboxService.UpdateSandboxEditMark(sandboxVersion.SandboxId, sysUser.AdminId, 1, sysUser.RealName)
  382. if err != nil {
  383. br.Msg = err.Error()
  384. return
  385. }
  386. if markStatus.Status == 1 {
  387. br.Msg = markStatus.Msg
  388. return
  389. }
  390. //新增沙盘草稿
  391. sandboxDraftInfo, err := sandboxService.AddSandboxDraft(sandboxVersion.SandboxId, req, sysUser.AdminId, sysUser.RealName)
  392. if err != nil {
  393. br.Msg = "保存失败!"
  394. br.ErrMsg = "保存失败,Err:" + err.Error()
  395. br.Ret = 204 //204 (无内容) :服务器成功处理了请求,但没有返回任何内容。
  396. return
  397. }
  398. msg := "保存成功"
  399. br.Ret = 200
  400. br.Success = true
  401. br.Msg = msg
  402. br.Data = sandboxDraftInfo
  403. }
  404. // MarkEditStatus
  405. // @Title 标记沙盘编辑状态
  406. // @Description 标记沙盘编辑状态接口
  407. // @Param request body request.MarkEditSandbox true "type json string"
  408. // @Success 200 标记成功 ;202 标记成功
  409. // @router /mark [post]
  410. func (this *SandboxController) MarkEditStatus() {
  411. br := new(models.BaseResponse).Init()
  412. defer func() {
  413. this.Data["json"] = br
  414. this.ServeJSON()
  415. }()
  416. sysUser := this.SysUser
  417. if sysUser == nil {
  418. br.Msg = "请登录"
  419. br.ErrMsg = "请登录,SysUser Is Empty"
  420. br.Ret = 408
  421. return
  422. }
  423. var req request.MarkEditSandbox
  424. err := json.Unmarshal(this.Ctx.Input.RequestBody, &req)
  425. if err != nil {
  426. br.Msg = "参数解析异常!"
  427. br.ErrMsg = "参数解析失败,Err:" + err.Error()
  428. return
  429. }
  430. if req.SandboxId <= 0 {
  431. br.Msg = "缺少沙盘编号"
  432. return
  433. }
  434. if req.Status <= 0 {
  435. br.Msg = "标记状态异常"
  436. return
  437. }
  438. //更新标记key
  439. data, err := sandboxService.UpdateSandboxEditMark(req.SandboxId, sysUser.AdminId, req.Status, sysUser.RealName)
  440. if err != nil {
  441. br.Msg = err.Error()
  442. return
  443. }
  444. msg := "标记成功"
  445. br.Ret = 200
  446. br.Success = true
  447. br.Msg = msg
  448. br.Data = data
  449. }
  450. // GetSandboxVersionDetail
  451. // @Title 获取沙盘版本数据详情(已保存的)
  452. // @Description 获取沙盘版本数据详情接口(已保存的)
  453. // @Param SandboxVersionCode query string true "沙盘版本code"
  454. // @Success 200 {object} sandbox.SandboxVersion
  455. // @router /version/detail [get]
  456. func (this *SandboxController) GetSandboxVersionDetail() {
  457. br := new(models.BaseResponse).Init()
  458. defer func() {
  459. this.Data["json"] = br
  460. this.ServeJSON()
  461. }()
  462. sysUser := this.SysUser
  463. if sysUser == nil {
  464. br.Msg = "请登录"
  465. br.ErrMsg = "请登录,SysUser Is Empty"
  466. br.Ret = 408
  467. return
  468. }
  469. sandboxVersionCode := this.GetString("SandboxVersionCode")
  470. if sandboxVersionCode == "" {
  471. br.Msg = "缺少沙盘版本编号"
  472. return
  473. }
  474. //获取沙盘数据详情(已保存的)
  475. sandboxVersionInfo, err := sandboxService.GetSandboxVersionDetailByCode(sandboxVersionCode)
  476. if err != nil {
  477. br.Msg = "获取失败"
  478. br.ErrMsg = "获取失败,Err:" + err.Error()
  479. return
  480. }
  481. msg := "获取成功"
  482. br.Ret = 200
  483. br.Success = true
  484. br.Msg = msg
  485. br.Data = sandboxVersionInfo
  486. }
  487. // GetLastSandboxInfo
  488. // @Title 获取最后一次编辑的沙盘数据详情
  489. // @Description 获取最后一次编辑的沙盘数据详情接口
  490. // @Param SandboxId query int true "沙盘编号id"
  491. // @Success 200 {object} sandbox.Sandbox
  492. // @router /last_info [get]
  493. func (this *SandboxController) GetLastSandboxInfo() {
  494. br := new(models.BaseResponse).Init()
  495. defer func() {
  496. this.Data["json"] = br
  497. this.ServeJSON()
  498. }()
  499. sysUser := this.SysUser
  500. if sysUser == nil {
  501. br.Msg = "请登录"
  502. br.ErrMsg = "请登录,SysUser Is Empty"
  503. br.Ret = 408
  504. return
  505. }
  506. sandboxId, _ := this.GetInt("SandboxId", 0)
  507. if sandboxId <= 0 {
  508. br.Msg = "缺少沙盘编号"
  509. return
  510. }
  511. //获取最后一次操作的沙盘数据
  512. sandboxInfo, err := sandboxService.GetLastSandboxInfo(sandboxId)
  513. if err != nil {
  514. br.Msg = err.Error()
  515. return
  516. }
  517. msg := "获取成功"
  518. br.Ret = 200
  519. br.Success = true
  520. br.Msg = msg
  521. br.Data = sandboxInfo
  522. }
  523. // Delete
  524. // @Title 删除沙盘
  525. // @Description 删除沙盘接口
  526. // @Param request body request.DeleteSandbox true "type json string"
  527. // @Success 200 标记成功
  528. // @router /delete [post]
  529. func (this *SandboxController) Delete() {
  530. br := new(models.BaseResponse).Init()
  531. defer func() {
  532. this.Data["json"] = br
  533. this.ServeJSON()
  534. }()
  535. sysUser := this.SysUser
  536. if sysUser == nil {
  537. br.Msg = "请登录"
  538. br.ErrMsg = "请登录,SysUser Is Empty"
  539. br.Ret = 408
  540. return
  541. }
  542. var req request.DeleteSandbox
  543. err := json.Unmarshal(this.Ctx.Input.RequestBody, &req)
  544. if err != nil {
  545. br.Msg = "参数解析异常!"
  546. br.ErrMsg = "参数解析失败,Err:" + err.Error()
  547. return
  548. }
  549. if req.SandboxId <= 0 {
  550. br.Msg = "缺少沙盘编号"
  551. return
  552. }
  553. /*key := fmt.Sprint(`crm:sandbox:edit:`, req.SandboxId)
  554. opUserId, _ := utils.Rc.RedisInt(key)
  555. //如果当前有人操作,且获取当前操作人不是本人,那么不允许删除
  556. if opUserId > 0 && opUserId != this.SysUser.AdminId {
  557. br.Msg = "当前有其他人正在编辑,不允许删除该沙盘"
  558. return
  559. }*/
  560. markStatus, err := sandboxService.UpdateSandboxEditMark(req.SandboxId, this.SysUser.AdminId, 2, this.SysUser.RealName)
  561. if err != nil {
  562. br.Msg = "查询标记状态失败"
  563. br.ErrMsg = "查询标记状态失败,Err:" + err.Error()
  564. return
  565. }
  566. if markStatus.Status == 1 {
  567. br.Msg = fmt.Sprintf("当前%s正在编辑,不允许删除该沙盘", markStatus.Editor)
  568. return
  569. }
  570. //删除沙盘
  571. err = sandboxService.DeleteSandbox(req.SandboxId)
  572. if err != nil {
  573. br.Msg = err.Error()
  574. return
  575. }
  576. msg := "删除成功"
  577. br.Ret = 200
  578. br.Success = true
  579. br.Msg = msg
  580. }
  581. // DeleteVersion
  582. // @Title 删除沙盘版本
  583. // @Description 删除沙盘版本接口
  584. // @Param request body request.DeleteSandbox true "type json string"
  585. // @Success 200 标记成功
  586. // @router /version/delete [post]
  587. func (this *SandboxController) DeleteVersion() {
  588. br := new(models.BaseResponse).Init()
  589. defer func() {
  590. this.Data["json"] = br
  591. this.ServeJSON()
  592. }()
  593. sysUser := this.SysUser
  594. if sysUser == nil {
  595. br.Msg = "请登录"
  596. br.ErrMsg = "请登录,SysUser Is Empty"
  597. br.Ret = 408
  598. return
  599. }
  600. var req request.DeleteSandboxVersion
  601. err := json.Unmarshal(this.Ctx.Input.RequestBody, &req)
  602. if err != nil {
  603. br.Msg = "参数解析异常!"
  604. br.ErrMsg = "参数解析失败,Err:" + err.Error()
  605. return
  606. }
  607. if req.SandboxVersionCode == `` {
  608. br.Msg = "缺少沙盘版本号"
  609. return
  610. }
  611. //删除沙盘
  612. err, errMsg := sandboxService.DeleteSandboxVersion(req.SandboxVersionCode, this.SysUser.AdminId)
  613. if err != nil {
  614. br.Msg = "删除版本失败"
  615. if errMsg != `` {
  616. br.Msg = errMsg
  617. }
  618. br.ErrMsg = err.Error()
  619. return
  620. }
  621. msg := "删除成功"
  622. br.Ret = 200
  623. br.Success = true
  624. br.Msg = msg
  625. }
  626. // ResetDraftToLastVersion
  627. // @Title 重置沙盘草稿至最新版本
  628. // @Description 重置沙盘草稿至最新版本接口
  629. // @Param request body request.DeleteSandbox true "type json string"
  630. // @Success 200 {object} sandbox.SandboxDraft
  631. // @Fail 202 另外的人在操作,不要重复添加草稿;204 错误了,当时不是必要性的错误,不用将错误信息暴露给用户
  632. // @router /draft/reset [post]
  633. func (this *SandboxController) ResetDraftToLastVersion() {
  634. br := new(models.BaseResponse).Init()
  635. defer func() {
  636. this.Data["json"] = br
  637. this.ServeJSON()
  638. }()
  639. sysUser := this.SysUser
  640. if sysUser == nil {
  641. br.Msg = "请登录"
  642. br.ErrMsg = "请登录,SysUser Is Empty"
  643. br.Ret = 408
  644. return
  645. }
  646. var req request.DeleteSandbox
  647. err := json.Unmarshal(this.Ctx.Input.RequestBody, &req)
  648. if err != nil {
  649. br.Msg = "参数解析异常!"
  650. br.ErrMsg = "参数解析失败,Err:" + err.Error()
  651. return
  652. }
  653. if req.SandboxId <= 0 {
  654. br.Msg = "缺少沙盘编号"
  655. return
  656. }
  657. //更新标记key
  658. markStatus, err := sandboxService.UpdateSandboxEditMark(req.SandboxId, sysUser.AdminId, 0, sysUser.RealName)
  659. if err != nil {
  660. br.Msg = err.Error()
  661. return
  662. }
  663. if markStatus.Status == 1 {
  664. br.Msg = markStatus.Msg
  665. return
  666. }
  667. //重置沙盘草稿至最新版本
  668. sandboxDraftInfo, err := sandboxService.ResetDraftToLastVersion(req.SandboxId, sysUser.AdminId, sysUser.RealName)
  669. if err != nil {
  670. br.Msg = "保存失败!"
  671. br.ErrMsg = "保存失败,Err:" + err.Error()
  672. return
  673. }
  674. msg := "保存成功"
  675. br.Ret = 200
  676. br.Success = true
  677. br.Msg = msg
  678. br.Data = sandboxDraftInfo
  679. }
  680. // ListByQuote
  681. // @Title 逻辑导图列表(其他地方引用到的,莫名其妙要根据输入的关键字匹配品种)
  682. // @Description 逻辑导图列表接口(其他地方引用到的,莫名其妙要根据输入的关键字匹配品种)
  683. // @Param PageSize query int true "每页数据条数"
  684. // @Param CurrentIndex query int true "当前页页码,从1开始"
  685. // @Param ChartPermissionId query int true "权限编号id"
  686. // @Param Keyword query string false "搜索关键词:沙盘名称/编辑人名称"
  687. // @Success 200 {object} response.SandboxListResp
  688. // @router /list_by_quote [get]
  689. func (this *SandboxController) ListByQuote() {
  690. br := new(models.BaseResponse).Init()
  691. defer func() {
  692. this.Data["json"] = br
  693. this.ServeJSON()
  694. }()
  695. chartPermissionId, _ := this.GetInt("ChartPermissionId")
  696. keyword := this.GetString("Keyword")
  697. pageSize, _ := this.GetInt("PageSize")
  698. currentIndex, _ := this.GetInt("CurrentIndex")
  699. var startSize int
  700. if pageSize <= 0 {
  701. pageSize = utils.PageSize20
  702. }
  703. if currentIndex <= 0 {
  704. currentIndex = 1
  705. }
  706. startSize = paging.StartIndex(currentIndex, pageSize)
  707. var condition string
  708. var pars []interface{}
  709. if chartPermissionId > 0 {
  710. condition += " AND a.chart_permission_id=? "
  711. pars = append(pars, chartPermissionId)
  712. }
  713. if keyword != "" {
  714. condition += ` AND ( a.name LIKE '%` + keyword + `%' OR b.name LIKE '%` + keyword + `%' OR a.chart_permission_name LIKE '%` + keyword + `%' )`
  715. }
  716. //获取指标信息
  717. total, list, err := sandbox.GetList(condition, pars, startSize, pageSize)
  718. if err != nil && err.Error() != utils.ErrNoRow() {
  719. br.Success = true
  720. br.Msg = "获取沙盘列表失败"
  721. br.ErrMsg = "获取沙盘列表失败,Err:" + err.Error()
  722. return
  723. }
  724. if list == nil || (err != nil && err.Error() == utils.ErrNoRow()) {
  725. list = make([]*sandbox.SandboxListItem, 0)
  726. }
  727. page := paging.GetPaging(currentIndex, pageSize, total)
  728. resp := response.SandboxListResp{
  729. Paging: page,
  730. List: list,
  731. }
  732. br.Ret = 200
  733. br.Success = true
  734. br.Msg = "获取成功"
  735. br.Data = resp
  736. }