data_approve.go 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458
  1. package data_approve
  2. import (
  3. "encoding/json"
  4. "eta_gn/eta_api/controllers"
  5. "eta_gn/eta_api/models"
  6. "eta_gn/eta_api/models/data_manage/data_approve/request"
  7. "eta_gn/eta_api/models/data_manage/data_approve/response"
  8. dataApproveServ "eta_gn/eta_api/services/data/data_approve"
  9. "eta_gn/eta_api/utils"
  10. "fmt"
  11. "github.com/rdlucklib/rdluck_tools/paging"
  12. )
  13. // DataApproveController
  14. // @Description: 数据资产审批
  15. type DataApproveController struct {
  16. controllers.BaseAuthController
  17. }
  18. // List
  19. // @Title 审批列表
  20. // @Description 审批列表
  21. // @Param PageSize query int true "每页数据条数"
  22. // @Param CurrentIndex query int true "当前页页码"
  23. // @Param ListType query int true "列表类型:1-待处理;2-已处理;3-我发起的"
  24. // @Param ClassifyId query int false "分类ID"
  25. // @Param Keyword query string false "搜索关键词"
  26. // @Param ApproveState query int false "审批状态:1-待审批;2-已审批;3-已驳回;4-已撤回"
  27. // @Param TimeType query int false "时间类型:1-提交时间;2-处理时间;3-审批时间"
  28. // @Param StartTime query string false "开始时间"
  29. // @Param EndTime query string false "结束时间"
  30. // @Param SortField query int false "排序字段:1-提交时间;2-处理时间;3-审批时间"
  31. // @Param SortRule query int false "排序方式: 1-正序; 2-倒序(默认)"
  32. // @Success 200 {object} report_approve.DataApproveListResp
  33. // @router /list [get]
  34. func (this *DataApproveController) List() {
  35. br := new(models.BaseResponse).Init()
  36. defer func() {
  37. if br.ErrMsg == "" {
  38. br.IsSendEmail = false
  39. }
  40. this.Data["json"] = br
  41. this.ServeJSON()
  42. }()
  43. sysUser := this.SysUser
  44. pageSize, _ := this.GetInt("PageSize")
  45. currentIndex, _ := this.GetInt("CurrentIndex")
  46. listType, _ := this.GetInt("ListType")
  47. approveState, _ := this.GetInt("ApproveState")
  48. timeType, _ := this.GetInt("TimeType")
  49. startTime := this.GetString("StartTime")
  50. endTime := this.GetString("EndTime")
  51. sortField, _ := this.GetInt("SortField")
  52. sortRule, _ := this.GetInt("SortRule")
  53. classifyId, _ := this.GetInt("ClassifyId")
  54. keyword := this.GetString("Keyword")
  55. if pageSize <= 0 {
  56. pageSize = utils.PageSize10
  57. }
  58. if currentIndex <= 0 {
  59. currentIndex = 1
  60. }
  61. startSize := paging.StartIndex(currentIndex, pageSize)
  62. var list []*response.DataApproveItemOrmResp
  63. var total int
  64. var msg string
  65. var err error
  66. switch listType {
  67. case 1:
  68. list, total, msg, err = dataApproveServ.ProcessingDataApprove(sysUser.AdminId, classifyId, timeType, sortField, sortRule, startSize, pageSize, sysUser.RealName, startTime, endTime, keyword)
  69. case 2:
  70. list, total, msg, err = dataApproveServ.SolvedDataApprove(sysUser.AdminId, classifyId, timeType, sortField, sortRule, approveState, startSize, pageSize, sysUser.RealName, startTime, endTime, keyword)
  71. case 3:
  72. list, total, msg, err = dataApproveServ.MyApplyDataApproves(sysUser.AdminId, classifyId, timeType, sortField, sortRule, approveState, startSize, pageSize, sysUser.RealName, startTime, endTime, keyword)
  73. default:
  74. br.Msg = "列表类型错误"
  75. return
  76. }
  77. if err != nil {
  78. if msg != "" {
  79. br.Msg = msg
  80. } else {
  81. br.Msg = "获取审批列表失败"
  82. }
  83. br.ErrMsg = "获取审批列表失败, Err: " + err.Error()
  84. return
  85. }
  86. resp := new(response.DataApproveListResp)
  87. page := paging.GetPaging(currentIndex, pageSize, total)
  88. resp.List = list
  89. resp.Paging = page
  90. br.Msg = "获取审批列表成功"
  91. br.Data = resp
  92. br.Ret = 200
  93. br.Success = true
  94. }
  95. // Approve
  96. // @Title 通过审批
  97. // @Description 通过审批
  98. // @Param request body report_approve.DataApprovePassReq true "type json string"
  99. // @Success 200 string "操作成功"
  100. // @router /approve [post]
  101. func (this *DataApproveController) Approve() {
  102. br := new(models.BaseResponse).Init()
  103. defer func() {
  104. if br.ErrMsg == "" {
  105. br.IsSendEmail = false
  106. }
  107. this.Data["json"] = br
  108. this.ServeJSON()
  109. }()
  110. sysUser := this.SysUser
  111. if sysUser == nil {
  112. br.Msg = "请登录"
  113. br.ErrMsg = "请登录,SysUser Is Empty"
  114. br.Ret = 408
  115. return
  116. }
  117. var req request.DataApprovePassReq
  118. if e := json.Unmarshal(this.Ctx.Input.RequestBody, &req); e != nil {
  119. br.Msg = "参数有误"
  120. br.ErrMsg = "参数解析失败, Err: " + e.Error()
  121. return
  122. }
  123. if req.DataApproveId <= 0 {
  124. br.Msg = "参数有误"
  125. br.ErrMsg = fmt.Sprintf("参数有误, DataApproveId: %d", req.DataApproveId)
  126. return
  127. }
  128. // 通过审批
  129. msg, err := dataApproveServ.PassDataApprove(req.DataApproveId, sysUser.AdminId)
  130. if err != nil {
  131. if msg != "" {
  132. br.Msg = msg
  133. } else {
  134. br.Msg = "操作失败"
  135. }
  136. br.ErrMsg = "通过审批失败, Err: " + err.Error()
  137. return
  138. }
  139. br.Ret = 200
  140. br.Success = true
  141. br.Msg = "操作成功"
  142. }
  143. // Detail
  144. // @Title 审批详情
  145. // @Description 审批详情
  146. // @Param DataApproveId query int true "审批ID"
  147. // @Success 200 {object} report_approve.DataApproveDetail
  148. // @router /detail [get]
  149. func (this *DataApproveController) Detail() {
  150. br := new(models.BaseResponse).Init()
  151. defer func() {
  152. if br.ErrMsg == "" {
  153. br.IsSendEmail = false
  154. }
  155. this.Data["json"] = br
  156. this.ServeJSON()
  157. }()
  158. sysUser := this.SysUser
  159. if sysUser == nil {
  160. br.Msg = "请登录"
  161. br.ErrMsg = "请登录,SysUser Is Empty"
  162. br.Ret = 408
  163. return
  164. }
  165. approveId, _ := this.GetInt("DataApproveId")
  166. if approveId <= 0 {
  167. br.Msg = "参数有误"
  168. br.ErrMsg = fmt.Sprintf("参数有误, DataApproveId: %d", approveId)
  169. return
  170. }
  171. resp, msg, err := dataApproveServ.GetApproveDetail(approveId)
  172. if err != nil {
  173. if msg != "" {
  174. br.Msg = msg
  175. } else {
  176. br.Msg = "获取审批详情失败"
  177. }
  178. br.ErrMsg = "获取审批详情失败, Err: " + err.Error()
  179. return
  180. }
  181. br.Data = resp
  182. br.Ret = 200
  183. br.Success = true
  184. br.Msg = "获取成功"
  185. }
  186. // Refuse
  187. // @Title 驳回审批
  188. // @Description 驳回审批
  189. // @Param request body request.DataApproveRefuseReq true "type json string"
  190. // @Success 200 string "操作成功"
  191. // @router /refuse [post]
  192. func (this *DataApproveController) Refuse() {
  193. br := new(models.BaseResponse).Init()
  194. defer func() {
  195. if br.ErrMsg == "" {
  196. br.IsSendEmail = false
  197. }
  198. this.Data["json"] = br
  199. this.ServeJSON()
  200. }()
  201. sysUser := this.SysUser
  202. if sysUser == nil {
  203. br.Msg = "请登录"
  204. br.ErrMsg = "请登录,SysUser Is Empty"
  205. br.Ret = 408
  206. return
  207. }
  208. var req request.DataApproveRefuseReq
  209. if e := json.Unmarshal(this.Ctx.Input.RequestBody, &req); e != nil {
  210. br.Msg = "参数有误"
  211. br.ErrMsg = "参数解析失败, Err: " + e.Error()
  212. return
  213. }
  214. if req.DataApproveId <= 0 {
  215. br.Msg = "参数有误"
  216. br.ErrMsg = fmt.Sprintf("参数有误, DataApproveId: %d", req.DataApproveId)
  217. return
  218. }
  219. maxStrLen := 500
  220. approveLen := len([]rune(req.ApproveRemark))
  221. if approveLen > maxStrLen {
  222. br.Msg = fmt.Sprintf("审批驳回原因不能超过%d字", maxStrLen)
  223. return
  224. }
  225. msg, err := dataApproveServ.DataApproveRefuse(req.DataApproveId, sysUser.AdminId, req.ApproveRemark)
  226. if err != nil {
  227. if msg != "" {
  228. br.Msg = msg
  229. } else {
  230. br.Msg = "操作失败"
  231. }
  232. br.ErrMsg = "驳回审批失败, Err: " + err.Error()
  233. return
  234. }
  235. br.Ret = 200
  236. br.Success = true
  237. br.Msg = "操作成功"
  238. }
  239. // Cancel
  240. // @Title 撤销审批
  241. // @Description 撤销审批
  242. // @Param request body report_approve.DataApproveCancelReq true "type json string"
  243. // @Success 200 string "操作成功"
  244. // @router /cancel [post]
  245. func (this *DataApproveController) Cancel() {
  246. br := new(models.BaseResponse).Init()
  247. defer func() {
  248. if br.ErrMsg == "" {
  249. br.IsSendEmail = false
  250. }
  251. this.Data["json"] = br
  252. this.ServeJSON()
  253. }()
  254. sysUser := this.SysUser
  255. if sysUser == nil {
  256. br.Msg = "请登录"
  257. br.ErrMsg = "请登录,SysUser Is Empty"
  258. br.Ret = 408
  259. return
  260. }
  261. var req request.DataApproveCancelReq
  262. if e := json.Unmarshal(this.Ctx.Input.RequestBody, &req); e != nil {
  263. br.Msg = "参数有误"
  264. br.ErrMsg = "参数解析失败, Err: " + e.Error()
  265. return
  266. }
  267. if req.DataApproveId <= 0 {
  268. br.Msg = "参数有误"
  269. br.ErrMsg = fmt.Sprintf("参数有误, DataApproveId: %d", req.DataApproveId)
  270. return
  271. }
  272. // 撤销审批
  273. msg, e := dataApproveServ.DataApproveCancel(req.DataApproveId, sysUser.AdminId, sysUser.RealName)
  274. if e != nil {
  275. if msg != "" {
  276. br.Msg = msg
  277. } else {
  278. br.Msg = "操作失败"
  279. }
  280. br.ErrMsg = "撤销审批失败, Err: " + e.Error()
  281. return
  282. }
  283. br.Ret = 200
  284. br.Success = true
  285. br.Msg = "操作成功"
  286. }
  287. // MessageList
  288. // @Title 审批消息列表
  289. // @Description 审批消息列表
  290. // @Param PageSize query int true "每页数据条数"
  291. // @Param CurrentIndex query int true "当前页页码"
  292. // @Success 200 {object} report_approve.DataApproveMessageListResp
  293. // @router /message/list [get]
  294. func (this *DataApproveController) MessageList() {
  295. br := new(models.BaseResponse).Init()
  296. defer func() {
  297. if br.ErrMsg == "" {
  298. br.IsSendEmail = false
  299. }
  300. this.Data["json"] = br
  301. this.ServeJSON()
  302. }()
  303. sysUser := this.SysUser
  304. if sysUser == nil {
  305. br.Msg = "请登录"
  306. br.ErrMsg = "请登录,SysUser Is Empty"
  307. br.Ret = 408
  308. return
  309. }
  310. currentIndex, _ := this.GetInt("currentIndex")
  311. pageSize, _ := this.GetInt("pageSize")
  312. // 分页
  313. var startSize int
  314. if pageSize <= 0 {
  315. pageSize = utils.PageSize20
  316. }
  317. if currentIndex <= 0 {
  318. currentIndex = 1
  319. }
  320. startSize = utils.StartIndex(currentIndex, pageSize)
  321. resp := new(response.DataApproveMessageListResp)
  322. resp.List = make([]*response.DataApproveMessageItem, 0)
  323. list, total, unRead, msg, err := dataApproveServ.GetDataApproveMessage(sysUser.AdminId, startSize, pageSize)
  324. if err != nil {
  325. if msg != "" {
  326. br.Msg = msg
  327. } else {
  328. br.Msg = "获取审批消息失败"
  329. }
  330. br.ErrMsg = "获取审批消息失败, Err: " + err.Error()
  331. return
  332. }
  333. resp.List = list
  334. resp.UnreadTotal = unRead
  335. page := paging.GetPaging(currentIndex, pageSize, total)
  336. resp.Paging = page
  337. br.Data = resp
  338. br.Ret = 200
  339. br.Success = true
  340. br.Msg = "获取成功"
  341. }
  342. // MessageRead
  343. // @Title 消息已读
  344. // @Description 消息已读
  345. // @Param request body report_approve.DataApproveMessageReadReq true "type json string"
  346. // @Success 200 string "操作成功"
  347. // @router /message/read [post]
  348. func (this *DataApproveController) MessageRead() {
  349. br := new(models.BaseResponse).Init()
  350. defer func() {
  351. if br.ErrMsg == "" {
  352. br.IsSendEmail = false
  353. }
  354. this.Data["json"] = br
  355. this.ServeJSON()
  356. }()
  357. sysUser := this.SysUser
  358. if sysUser == nil {
  359. br.Msg = "请登录"
  360. br.ErrMsg = "请登录,SysUser Is Empty"
  361. br.Ret = 408
  362. return
  363. }
  364. var req request.DataApproveMessageReadReq
  365. if e := json.Unmarshal(this.Ctx.Input.RequestBody, &req); e != nil {
  366. br.Msg = "参数有误"
  367. br.ErrMsg = "参数解析失败, Err: " + e.Error()
  368. return
  369. }
  370. if req.MessageId <= 0 {
  371. br.Msg = "参数有误"
  372. br.ErrMsg = fmt.Sprintf("参数有误, MessageId: %d", req.MessageId)
  373. return
  374. }
  375. msg, err := dataApproveServ.ReadBiMessage(req.MessageId, sysUser.AdminId)
  376. if err != nil {
  377. if msg != "" {
  378. br.Msg = msg
  379. } else {
  380. br.Msg = "操作失败"
  381. }
  382. br.ErrMsg = "消息已读失败, Err: " + err.Error()
  383. return
  384. }
  385. br.Ret = 200
  386. br.Success = true
  387. br.Msg = "操作成功"
  388. }
  389. // CheckApproveOpen
  390. // @Title 校验是否开启审批
  391. // @Description 校验是否开启审批
  392. // @Param request body report_approve.DataApproveCheckApproveOpenReq true "type json string"
  393. // @Success 200 string "操作成功"
  394. // @router /check_open [post]
  395. func (this *DataApproveController) CheckApproveOpen() {
  396. br := new(models.BaseResponse).Init()
  397. defer func() {
  398. if br.ErrMsg == "" {
  399. br.IsSendEmail = false
  400. }
  401. this.Data["json"] = br
  402. this.ServeJSON()
  403. }()
  404. sysUser := this.SysUser
  405. if sysUser == nil {
  406. br.Msg = "请登录"
  407. br.ErrMsg = "请登录,SysUser Is Empty"
  408. br.Ret = 408
  409. return
  410. }
  411. var req request.DataApproveCheckApproveOpenReq
  412. if e := json.Unmarshal(this.Ctx.Input.RequestBody, &req); e != nil {
  413. br.Msg = "参数有误"
  414. br.ErrMsg = "参数解析失败, Err: " + e.Error()
  415. return
  416. }
  417. // 校验是否开启了审批流
  418. opening, e := dataApproveServ.CheckOpenApprove(req.DataType)
  419. if e != nil {
  420. br.Msg = "操作失败"
  421. br.ErrMsg = "校验数据资产是否开启审批流失败, Err: " + e.Error()
  422. return
  423. }
  424. br.Data = opening
  425. br.Ret = 200
  426. br.Success = true
  427. br.Msg = "操作成功"
  428. }