eta_business_menu.go 4.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185
  1. package eta_business
  2. import (
  3. "encoding/json"
  4. "hongze/hz_crm_api/controllers"
  5. "hongze/hz_crm_api/models"
  6. "hongze/hz_crm_api/models/eta_business"
  7. etaBusinessService "hongze/hz_crm_api/services/eta_business"
  8. )
  9. // EtaBusinessMenuController ETA商家菜单
  10. type EtaBusinessMenuController struct {
  11. controllers.BaseAuthController
  12. }
  13. // List
  14. // @Title 商家菜单列表
  15. // @Description 商家菜单列表
  16. // @Param BusinessId query int false "商家ID"
  17. // @Success 200 Ret=200 获取成功
  18. // @router /menu/list [get]
  19. func (this *EtaBusinessMenuController) List() {
  20. br := new(models.BaseResponse).Init()
  21. defer func() {
  22. if br.ErrMsg == "" {
  23. br.IsSendEmail = false
  24. }
  25. this.Data["json"] = br
  26. this.ServeJSON()
  27. }()
  28. sysUser := this.SysUser
  29. if sysUser == nil {
  30. br.Msg = "请登录"
  31. br.ErrMsg = "请登录,SysUser Is Empty"
  32. br.Ret = 408
  33. return
  34. }
  35. resp := new(eta_business.EtaBusinessMenuListResp)
  36. resp.ChoiceList = make([]int, 0)
  37. resp.List = make([]*eta_business.EtaBusinessMenuItem, 0)
  38. // 权限校验
  39. ok, e := etaBusinessService.CheckEtaBusinessOperateAuth(sysUser.RoleTypeCode)
  40. if e != nil {
  41. br.Msg = "操作失败"
  42. br.ErrMsg = "操作权限校验失败, ErrMsg: " + e.Error()
  43. return
  44. }
  45. if !ok {
  46. br.Data = resp
  47. br.Ret = 200
  48. br.Success = true
  49. br.Msg = "获取成功"
  50. return
  51. }
  52. // 商家勾选的权限
  53. businessId, _ := this.GetInt("EtaBusinessId", 0)
  54. if businessId > 0 {
  55. relateOb := new(eta_business.EtaBusinessMenuRelate)
  56. cond := ` AND eta_business_id = ?`
  57. pars := make([]interface{}, 0)
  58. pars = append(pars, businessId)
  59. relates, e := relateOb.GetItemsByCondition(cond, pars, []string{}, "")
  60. if e != nil {
  61. br.Msg = "获取失败"
  62. br.ErrMsg = "获取商家菜单关联列表失败, Err: " + e.Error()
  63. return
  64. }
  65. for _, r := range relates {
  66. resp.ChoiceList = append(resp.ChoiceList, r.MenuId)
  67. }
  68. }
  69. menuOb := new(eta_business.EtaBusinessMenu)
  70. order := `sort ASC, create_time DESC, menu_id DESC`
  71. list, e := menuOb.GetItemsByCondition("", make([]interface{}, 0), []string{}, order)
  72. if e != nil {
  73. br.Msg = "获取失败"
  74. br.ErrMsg = "获取商家菜单列表失败, Err: " + e.Error()
  75. return
  76. }
  77. items := make([]*eta_business.EtaBusinessMenuItem, 0)
  78. for _, v := range list {
  79. t := &eta_business.EtaBusinessMenuItem{
  80. MenuId: v.MenuId,
  81. ParentId: v.ParentId,
  82. Name: v.Name,
  83. Sort: v.Sort,
  84. Path: v.Path,
  85. PathName: v.PathName,
  86. IconPath: v.IconPath,
  87. Component: v.Component,
  88. Hidden: v.Hidden,
  89. HiddenLayout: v.HiddenLayout,
  90. Level: v.Level,
  91. MenuType: v.MenuType,
  92. ButtonCode: v.ButtonCode,
  93. Children: make([]*eta_business.EtaBusinessMenuItem, 0),
  94. }
  95. items = append(items, t)
  96. }
  97. // 递归返回树形结构
  98. items = etaBusinessService.GetMenuTreeRecursive(items, 0)
  99. resp.List = items
  100. br.Data = resp
  101. br.Ret = 200
  102. br.Success = true
  103. br.Msg = "获取成功"
  104. }
  105. // SaveRelate
  106. // @Title 保存商家菜单关联
  107. // @Description 保存商家菜单关联
  108. // @Param request body eta_business.EtaBusinessAddReq true "type json string"
  109. // @Success 200 Ret=200 操作成功
  110. // @router /menu/relate/save [post]
  111. func (this *EtaBusinessMenuController) SaveRelate() {
  112. br := new(models.BaseResponse).Init()
  113. defer func() {
  114. if br.ErrMsg == "" {
  115. br.IsSendEmail = false
  116. }
  117. this.Data["json"] = br
  118. this.ServeJSON()
  119. }()
  120. sysUser := this.SysUser
  121. if sysUser == nil {
  122. br.Msg = "请登录"
  123. br.ErrMsg = "请登录,SysUser Is Empty"
  124. br.Ret = 408
  125. return
  126. }
  127. // 操作权限校验
  128. ok, e := etaBusinessService.CheckEtaBusinessOperateAuth(sysUser.RoleTypeCode)
  129. if e != nil {
  130. br.Msg = "操作失败"
  131. br.ErrMsg = "操作权限校验失败, ErrMsg: " + e.Error()
  132. return
  133. }
  134. if !ok {
  135. br.Msg = "无权操作"
  136. return
  137. }
  138. // 参数校验
  139. var req eta_business.EtaBusinessMenuRelateSaveReq
  140. if e := json.Unmarshal(this.Ctx.Input.RequestBody, &req); e != nil {
  141. br.Msg = "参数解析异常!"
  142. br.ErrMsg = "参数解析失败,Err:" + e.Error()
  143. return
  144. }
  145. if req.EtaBusinessId <= 0 {
  146. br.Msg = "参数有误"
  147. return
  148. }
  149. if len(req.MenuIds) == 0 {
  150. br.Msg = "请选择菜单"
  151. return
  152. }
  153. ob := new(eta_business.EtaBusinessMenuRelate)
  154. items := make([]*eta_business.EtaBusinessMenuRelate, 0)
  155. for _, v := range req.MenuIds {
  156. t := new(eta_business.EtaBusinessMenuRelate)
  157. t.MenuId = v
  158. t.EtaBusinessId = req.EtaBusinessId
  159. items = append(items, t)
  160. }
  161. if e := ob.CreateMulti(req.EtaBusinessId, items); e != nil {
  162. br.Msg = "保存失败"
  163. br.ErrMsg = "保存商家菜单关联失败, Err: " + e.Error()
  164. return
  165. }
  166. // TODO:后续需要生成SQL脚本文件
  167. br.Ret = 200
  168. br.Success = true
  169. br.Msg = "操作成功"
  170. }