eta_business_menu.go 4.9 KB

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