permission.go 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423
  1. package v1
  2. import (
  3. "git.getensh.com/common/gopkgs/logger"
  4. "git.getensh.com/common/gopkgs/tasker/httptasker"
  5. "git.getensh.com/common/gopkgs/util"
  6. "github.com/gin-gonic/gin"
  7. "go.uber.org/zap"
  8. "net/http"
  9. "property-system-gateway/errors"
  10. param_v1 "property-system-gateway/param/v1"
  11. "property-system-gateway/pb"
  12. "property-system-gateway/pb/v1"
  13. "property-system-gateway/utils"
  14. )
  15. //
  16. // @Summary 添加权限组
  17. // @Description 添加权限组
  18. // @Tags 权限管理
  19. // @Accept json
  20. // @Produce json
  21. // @Param token header string true "token"
  22. // @Param body body v1.GroupAddBody true "组信息"
  23. // @Success 200 {object} v1.GroupAddResponse
  24. // @Failure 500 {object} base.HTTPError
  25. // @Router /api/v1/permission/group [post]
  26. func (c *Controller) GroupAdd(ctx *gin.Context) {
  27. // 解析参数
  28. req := &param_v1.GroupAddRequest{}
  29. parseParamTask := func() error {
  30. err := util.ShouldBind(ctx, &req.Header, nil, nil, &req.GroupAddBody)
  31. if err != nil {
  32. logger.Error("func",
  33. zap.String("call", "util.ShouldBind"),
  34. zap.String("error", err.Error()))
  35. return errors.ParamsError
  36. }
  37. return nil
  38. }
  39. // 业务处理
  40. handleServiceTask := func() error {
  41. tokenInfo, err := utils.GetSubjectValue(ctx)
  42. if err != nil {
  43. return err
  44. }
  45. // 响应数据
  46. resp := param_v1.GroupAddResponse{}
  47. rpcReq := &v1.GroupAddRequest{
  48. GroupDesc: req.GroupDesc,
  49. GroupName: req.GroupName,
  50. PermissionCodes: req.PermissionCodes,
  51. Cid: tokenInfo.Cid,
  52. GardenId: tokenInfo.GardenId,
  53. }
  54. rpcRsp, err := pb.System.GroupAdd(ctx, rpcReq)
  55. if err != nil {
  56. s, _ := json.MarshalToString(req)
  57. logger.Error("func",
  58. zap.String("call", "pb.System.GroupAdd"),
  59. zap.String("params", s),
  60. zap.String("error", err.Error()))
  61. return errors.ErrorTransForm(err)
  62. }
  63. resp.Data = *rpcRsp
  64. ctx.JSON(http.StatusOK, resp)
  65. logReq := OperationLogRequest{
  66. Module: ModulePermission,
  67. Action: ActionGroupAdd,
  68. Origin: nil,
  69. Target: req.GroupAddBody,
  70. UserName: tokenInfo.UserName,
  71. Uid: tokenInfo.Uid,
  72. Cid: tokenInfo.Cid,
  73. GardenId: tokenInfo.GardenId,
  74. }
  75. go OperationLogAdd(&logReq)
  76. return nil
  77. }
  78. // 执行任务
  79. httptasker.Exec(ctx, parseParamTask, handleServiceTask)
  80. }
  81. //
  82. // @Summary 更改权限组
  83. // @Description 更改权限组
  84. // @Tags 权限管理
  85. // @Accept json
  86. // @Produce json
  87. // @Param token header string true "token"
  88. // @Param body body v1.GroupUpdateBody true "组信息"
  89. // @Success 200 {object} v1.GroupUpdateResponse
  90. // @Failure 500 {object} base.HTTPError
  91. // @Router /api/v1/permission/group [put]
  92. func (c *Controller) GroupUpdate(ctx *gin.Context) {
  93. // 解析参数
  94. req := &param_v1.GroupUpdateRequest{}
  95. parseParamTask := func() error {
  96. err := util.ShouldBind(ctx, &req.Header, nil, nil, &req.GroupUpdateBody)
  97. if err != nil {
  98. logger.Error("func",
  99. zap.String("call", "util.ShouldBind"),
  100. zap.String("error", err.Error()))
  101. return errors.ParamsError
  102. }
  103. return nil
  104. }
  105. // 业务处理
  106. handleServiceTask := func() error {
  107. tokenInfo, err := utils.GetSubjectValue(ctx)
  108. if err != nil {
  109. return err
  110. }
  111. // 响应数据
  112. resp := param_v1.GroupUpdateResponse{}
  113. rpcReq := &v1.GroupUpdateRequest{
  114. GroupDesc: req.GroupDesc,
  115. GroupName: req.GroupName,
  116. PermissionCodes: req.PermissionCodes,
  117. Cid: tokenInfo.Cid,
  118. GardenId: tokenInfo.GardenId,
  119. Id: req.Id,
  120. }
  121. rpcRsp, err := pb.System.GroupUpdate(ctx, rpcReq)
  122. if err != nil {
  123. s, _ := json.MarshalToString(req)
  124. logger.Error("func",
  125. zap.String("call", "pb.System.GroupUpdate"),
  126. zap.String("params", s),
  127. zap.String("error", err.Error()))
  128. return errors.ErrorTransForm(err)
  129. }
  130. ctx.JSON(http.StatusOK, resp)
  131. logReq := OperationLogRequest{
  132. Module: ModulePermission,
  133. Action: ActionGroupUpdate,
  134. Origin: rpcRsp.Origin,
  135. Target: req.GroupUpdateBody,
  136. UserName: tokenInfo.UserName,
  137. Uid: tokenInfo.Uid,
  138. Cid: tokenInfo.Cid,
  139. GardenId: tokenInfo.GardenId,
  140. }
  141. go OperationLogAdd(&logReq)
  142. return nil
  143. }
  144. // 执行任务
  145. httptasker.Exec(ctx, parseParamTask, handleServiceTask)
  146. }
  147. //
  148. // @Summary 删除权限组
  149. // @Description 删除权限组
  150. // @Tags 权限管理
  151. // @Accept json
  152. // @Produce json
  153. // @Param token header string true "token"
  154. // @Param id query int true "组id"
  155. // @Success 200 {object} v1.GroupDelResponse
  156. // @Failure 500 {object} base.HTTPError
  157. // @Router /api/v1/permission/group [delete]
  158. func (c *Controller) GroupDel(ctx *gin.Context) {
  159. // 解析参数
  160. req := &param_v1.GroupDelRequest{}
  161. parseParamTask := func() error {
  162. err := util.ShouldBind(ctx, &req.Header, nil, &req.GroupDelQuery, nil)
  163. if err != nil {
  164. logger.Error("func",
  165. zap.String("call", "util.ShouldBind"),
  166. zap.String("error", err.Error()))
  167. return errors.ParamsError
  168. }
  169. return nil
  170. }
  171. // 业务处理
  172. handleServiceTask := func() error {
  173. tokenInfo, err := utils.GetSubjectValue(ctx)
  174. if err != nil {
  175. return err
  176. }
  177. // 响应数据
  178. resp := param_v1.GroupDelResponse{}
  179. rpcReq := &v1.GroupDelRequest{
  180. Id: req.Id,
  181. Cid: tokenInfo.Cid,
  182. GardenId: tokenInfo.GardenId,
  183. }
  184. rpcRsp, err := pb.System.GroupDel(ctx, rpcReq)
  185. if err != nil {
  186. s, _ := json.MarshalToString(req)
  187. logger.Error("func",
  188. zap.String("call", "pb.System.GroupDel"),
  189. zap.String("params", s),
  190. zap.String("error", err.Error()))
  191. return errors.ErrorTransForm(err)
  192. }
  193. ctx.JSON(http.StatusOK, resp)
  194. logReq := OperationLogRequest{
  195. Module: ModulePermission,
  196. Action: ActionGroupDel,
  197. Origin: rpcRsp.Origin,
  198. Target: nil,
  199. UserName: tokenInfo.UserName,
  200. Uid: tokenInfo.Uid,
  201. Cid: tokenInfo.Cid,
  202. GardenId: tokenInfo.GardenId,
  203. }
  204. go OperationLogAdd(&logReq)
  205. return nil
  206. }
  207. // 执行任务
  208. httptasker.Exec(ctx, parseParamTask, handleServiceTask)
  209. }
  210. //
  211. // @Summary 权限组列表
  212. // @Description 权限组列表
  213. // @Tags 权限管理
  214. // @Accept json
  215. // @Produce json
  216. // @Param token header string true "token"
  217. // @Success 200 {object} v1.GroupListResponse
  218. // @Failure 500 {object} base.HTTPError
  219. // @Router /api/v1/permission/group_list [get]
  220. func (c *Controller) GroupList(ctx *gin.Context) {
  221. // 解析参数
  222. req := &param_v1.GroupListRequest{}
  223. parseParamTask := func() error {
  224. err := util.ShouldBind(ctx, &req.Header, nil, nil, nil)
  225. if err != nil {
  226. logger.Error("func",
  227. zap.String("call", "util.ShouldBind"),
  228. zap.String("error", err.Error()))
  229. return errors.ParamsError
  230. }
  231. return nil
  232. }
  233. // 业务处理
  234. handleServiceTask := func() error {
  235. tokenInfo, err := utils.GetSubjectValue(ctx)
  236. if err != nil {
  237. return err
  238. }
  239. // 响应数据
  240. resp := param_v1.GroupListResponse{}
  241. rpcReq := &v1.GroupListRequest{
  242. Cid: tokenInfo.Cid,
  243. GardenId: tokenInfo.GardenId,
  244. }
  245. rpcRsp, err := pb.System.GroupList(ctx, rpcReq)
  246. if err != nil {
  247. s, _ := json.MarshalToString(req)
  248. logger.Error("func",
  249. zap.String("call", "pb.System.GroupList"),
  250. zap.String("params", s),
  251. zap.String("error", err.Error()))
  252. return errors.ErrorTransForm(err)
  253. }
  254. if rpcRsp.List == nil {
  255. rpcRsp.List = make([]*v1.GroupItem, 0)
  256. }
  257. resp.Data = *rpcRsp
  258. ctx.JSON(http.StatusOK, resp)
  259. return nil
  260. }
  261. // 执行任务
  262. httptasker.Exec(ctx, parseParamTask, handleServiceTask)
  263. }
  264. func handleGroupPermission(data []*v1.SystemGroupPermissionItem) []*v1.SystemGroupPermissionItem {
  265. if len(data) == 0 {
  266. return make([]*v1.SystemGroupPermissionItem, 0)
  267. }
  268. for i, _ := range data {
  269. data[i].Childs = handleGroupPermission(data[i].Childs)
  270. }
  271. return data
  272. }
  273. //
  274. // @Summary 权限组信息
  275. // @Description 权限组信息
  276. // @Tags 权限管理
  277. // @Accept json
  278. // @Produce json
  279. // @Param token header string true "token"
  280. // @Param id query int true "组id"
  281. // @Success 200 {object} v1.GroupInfoResponse
  282. // @Failure 500 {object} base.HTTPError
  283. // @Router /api/v1/permission/group_info [get]
  284. func (c *Controller) GroupInfo(ctx *gin.Context) {
  285. // 解析参数
  286. req := &param_v1.GroupInfoRequest{}
  287. parseParamTask := func() error {
  288. err := util.ShouldBind(ctx, &req.Header, nil, &req.GroupInfoQuery, nil)
  289. if err != nil {
  290. logger.Error("func",
  291. zap.String("call", "util.ShouldBind"),
  292. zap.String("error", err.Error()))
  293. return errors.ParamsError
  294. }
  295. return nil
  296. }
  297. // 业务处理
  298. handleServiceTask := func() error {
  299. // 响应数据
  300. resp := param_v1.GroupInfoResponse{}
  301. rpcReq := &v1.GroupInfoRequest{
  302. Id: req.Id,
  303. }
  304. rpcRsp, err := pb.System.GroupInfo(ctx, rpcReq)
  305. if err != nil {
  306. s, _ := json.MarshalToString(req)
  307. logger.Error("func",
  308. zap.String("call", "pb.System.GroupInfo"),
  309. zap.String("params", s),
  310. zap.String("error", err.Error()))
  311. return errors.ErrorTransForm(err)
  312. }
  313. rpcRsp.List = handleGroupPermission(rpcRsp.List)
  314. resp.Data = *rpcRsp
  315. ctx.JSON(http.StatusOK, resp)
  316. return nil
  317. }
  318. // 执行任务
  319. httptasker.Exec(ctx, parseParamTask, handleServiceTask)
  320. }
  321. func handleAllPermission(data []*v1.GardenPermissionItem) []*v1.GardenPermissionItem {
  322. if len(data) == 0 {
  323. return make([]*v1.GardenPermissionItem, 0)
  324. }
  325. for i, _ := range data {
  326. data[i].Childs = handleAllPermission(data[i].Childs)
  327. }
  328. return data
  329. }
  330. //
  331. // @Summary 所有权限节点信息
  332. // @Description 所有权限节点信息
  333. // @Tags 权限管理
  334. // @Accept json
  335. // @Produce json
  336. // @Param token header string true "token"
  337. // @Success 200 {object} v1.AllPermissionResponse
  338. // @Failure 500 {object} base.HTTPError
  339. // @Router /api/v1/permission/all [get]
  340. func (c *Controller) AllPermission(ctx *gin.Context) {
  341. // 解析参数
  342. req := &param_v1.AllPermissionRequest{}
  343. parseParamTask := func() error {
  344. err := util.ShouldBind(ctx, &req.Header, nil, nil, nil)
  345. if err != nil {
  346. logger.Error("func",
  347. zap.String("call", "util.ShouldBind"),
  348. zap.String("error", err.Error()))
  349. return errors.ParamsError
  350. }
  351. return nil
  352. }
  353. // 业务处理
  354. handleServiceTask := func() error {
  355. tokenInfo, err := utils.GetSubjectValue(ctx)
  356. if err != nil {
  357. return err
  358. }
  359. // 响应数据
  360. resp := param_v1.AllPermissionResponse{}
  361. rpcReq := &v1.GardenPermissionListRequest{
  362. GardenId: tokenInfo.GardenId,
  363. }
  364. rpcRsp, err := pb.System.GardenPermissionList(ctx, rpcReq)
  365. if err != nil {
  366. s, _ := json.MarshalToString(req)
  367. logger.Error("func",
  368. zap.String("call", "pb.System.GardenPermissionList"),
  369. zap.String("params", s),
  370. zap.String("error", err.Error()))
  371. return errors.ErrorTransForm(err)
  372. }
  373. rpcRsp.List = handleAllPermission(rpcRsp.List)
  374. resp.Data = *rpcRsp
  375. ctx.JSON(http.StatusOK, resp)
  376. return nil
  377. }
  378. // 执行任务
  379. httptasker.Exec(ctx, parseParamTask, handleServiceTask)
  380. }