ModuleButtonController.java 8.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229
  1. package jnpf.base.controller;
  2. import cn.dev33.satoken.annotation.SaCheckPermission;
  3. import cn.dev33.satoken.annotation.SaMode;
  4. import cn.hutool.core.collection.CollectionUtil;
  5. import io.swagger.v3.oas.annotations.Operation;
  6. import io.swagger.v3.oas.annotations.Parameter;
  7. import io.swagger.v3.oas.annotations.Parameters;
  8. import io.swagger.v3.oas.annotations.tags.Tag;
  9. import jnpf.base.ActionResult;
  10. import jnpf.base.Pagination;
  11. import jnpf.base.entity.ModuleButtonEntity;
  12. import jnpf.base.model.button.*;
  13. import jnpf.base.service.ModuleButtonService;
  14. import jnpf.base.vo.ListVO;
  15. import jnpf.base.vo.PageListVO;
  16. import jnpf.base.vo.PaginationVO;
  17. import jnpf.constant.MsgCode;
  18. import jnpf.exception.DataException;
  19. import jnpf.permission.entity.ActionEntity;
  20. import jnpf.permission.model.action.ActionForm;
  21. import jnpf.permission.service.ActionService;
  22. import jnpf.util.JsonUtil;
  23. import jnpf.util.JsonUtilEx;
  24. import jnpf.util.RandomUtil;
  25. import jnpf.util.treeutil.SumTree;
  26. import jnpf.util.treeutil.newtreeutil.TreeDotUtils;
  27. import org.springframework.beans.factory.annotation.Autowired;
  28. import org.springframework.web.bind.annotation.*;
  29. import java.util.List;
  30. import java.util.stream.Collectors;
  31. /**
  32. * 按钮权限
  33. *
  34. * @author JNPF开发平台组
  35. * @version V3.1.0
  36. * @copyright 引迈信息技术有限公司
  37. * @date 2019年9月27日 上午9:18
  38. */
  39. @Tag(name = "按钮权限", description = "ModuleButton")
  40. @RestController
  41. @RequestMapping("/api/system/ModuleButton")
  42. public class ModuleButtonController extends SuperController<ModuleButtonService, ModuleButtonEntity> {
  43. @Autowired
  44. private ModuleButtonService moduleButtonService;
  45. @Autowired
  46. private ActionService actionService;
  47. /**
  48. * 按钮按钮权限列表
  49. *
  50. * @param menuId 功能主键
  51. * @param pagination 分页参数
  52. * @return ignore
  53. */
  54. @Operation(summary = "获取按钮权限列表")
  55. @Parameters({
  56. @Parameter(name = "menuId", description = "功能主键", required = true)
  57. })
  58. @SaCheckPermission(value = {"permission.resource", "appConfig.appResource"}, mode = SaMode.OR)
  59. @GetMapping("/{menuId}/List")
  60. public ActionResult<PageListVO<ButtonListVO>> list(@PathVariable("menuId") String menuId, Pagination pagination) {
  61. List<ModuleButtonEntity> data = moduleButtonService.getListByModuleIds(menuId, pagination);
  62. List<ButtonListVO> list = JsonUtil.getJsonToList(data, ButtonListVO.class);
  63. PaginationVO paginationVO = JsonUtil.getJsonToBean(pagination, PaginationVO.class);
  64. return ActionResult.page(list, paginationVO);
  65. }
  66. /**
  67. * 按钮按钮权限列表
  68. *
  69. * @param menuId 功能主键
  70. * @return ignore
  71. */
  72. @Operation(summary = "获取按钮权限下拉框")
  73. @Parameters({
  74. @Parameter(name = "menuId", description = "功能主键", required = true)
  75. })
  76. @GetMapping("/{menuId}/Selector")
  77. public ActionResult<ListVO<ButtonTreeListVO>> selectList(@PathVariable("menuId") String menuId) {
  78. List<ModuleButtonEntity> data = moduleButtonService.getListByModuleIds(menuId);
  79. List<ButtonTreeListModel> treeList = JsonUtil.getJsonToList(data, ButtonTreeListModel.class);
  80. List<SumTree<ButtonTreeListModel>> sumTrees = TreeDotUtils.convertListToTreeDot(treeList);
  81. List<ButtonTreeListVO> list = JsonUtil.getJsonToList(sumTrees, ButtonTreeListVO.class);
  82. ListVO<ButtonTreeListVO> treeVo = new ListVO<>();
  83. treeVo.setList(list);
  84. return ActionResult.success(treeVo);
  85. }
  86. /**
  87. * 获取按钮权限信息
  88. *
  89. * @param id 主键值
  90. * @return ignore
  91. */
  92. @Operation(summary = "获取按钮权限信息")
  93. @Parameters({
  94. @Parameter(name = "id", description = "主键值", required = true)
  95. })
  96. @SaCheckPermission(value = {"permission.resource", "appConfig.appResource"}, mode = SaMode.OR)
  97. @GetMapping("/{id}")
  98. public ActionResult<ModuleButtonInfoVO> info(@PathVariable("id") String id) throws DataException {
  99. ModuleButtonEntity entity = moduleButtonService.getInfo(id);
  100. ModuleButtonInfoVO vo = JsonUtilEx.getJsonToBeanEx(entity, ModuleButtonInfoVO.class);
  101. return ActionResult.success(vo);
  102. }
  103. /**
  104. * 新建按钮权限
  105. *
  106. * @param moduleButtonCrForm 实体对象
  107. * @return ignore
  108. */
  109. @Operation(summary = "新建按钮权限")
  110. @Parameters({
  111. @Parameter(name = "moduleButtonCrForm", description = "实体对象", required = true)
  112. })
  113. @SaCheckPermission(value = {"permission.resource", "appConfig.appResource"}, mode = SaMode.OR)
  114. @PostMapping
  115. public ActionResult create(@RequestBody ModuleButtonCrForm moduleButtonCrForm) {
  116. ModuleButtonEntity entity = JsonUtil.getJsonToBean(moduleButtonCrForm, ModuleButtonEntity.class);
  117. if (moduleButtonService.isExistByEnCode(entity.getModuleId(), entity.getEnCode(), entity.getId())) {
  118. return ActionResult.fail(MsgCode.EXIST002.get());
  119. }
  120. moduleButtonService.create(entity);
  121. return ActionResult.success(MsgCode.SU001.get());
  122. }
  123. /**
  124. * 更新按钮权限
  125. *
  126. * @param id 主键值
  127. * @param moduleButtonUpForm 更新参数
  128. * @return ignore
  129. */
  130. @Operation(summary = "更新按钮权限")
  131. @Parameters({
  132. @Parameter(name = "id", description = "主键值", required = true),
  133. @Parameter(name = "moduleButtonUpForm", description = "实体对象", required = true)
  134. })
  135. @SaCheckPermission(value = {"permission.resource", "appConfig.appResource"}, mode = SaMode.OR)
  136. @PutMapping("/{id}")
  137. public ActionResult update(@PathVariable("id") String id, @RequestBody ModuleButtonUpForm moduleButtonUpForm) {
  138. ModuleButtonEntity entity = JsonUtil.getJsonToBean(moduleButtonUpForm, ModuleButtonEntity.class);
  139. if (moduleButtonService.isExistByEnCode(entity.getModuleId(), entity.getEnCode(), id)) {
  140. return ActionResult.fail(MsgCode.EXIST002.get());
  141. }
  142. boolean flag = moduleButtonService.update(id, entity);
  143. if (flag == false) {
  144. return ActionResult.success(MsgCode.FA002.get());
  145. }
  146. return ActionResult.success(MsgCode.SU004.get());
  147. }
  148. /**
  149. * 删除按钮权限
  150. *
  151. * @param id 主键值
  152. * @return ignore
  153. */
  154. @Operation(summary = "删除按钮权限")
  155. @Parameters({
  156. @Parameter(name = "id", description = "主键值", required = true)
  157. })
  158. @SaCheckPermission(value = {"permission.resource", "appConfig.appResource"}, mode = SaMode.OR)
  159. @DeleteMapping("/{id}")
  160. public ActionResult delete(@PathVariable("id") String id) {
  161. ModuleButtonEntity entity = moduleButtonService.getInfo(id);
  162. if (entity != null) {
  163. moduleButtonService.delete(entity);
  164. return ActionResult.success(MsgCode.SU003.get());
  165. }
  166. return ActionResult.fail(MsgCode.FA003.get());
  167. }
  168. /**
  169. * 更新菜单状态
  170. *
  171. * @param id 主键值
  172. * @return ignore
  173. */
  174. @Operation(summary = "更新菜单状态")
  175. @Parameters({
  176. @Parameter(name = "id", description = "主键值", required = true)
  177. })
  178. @SaCheckPermission(value = {"permission.resource", "appConfig.appResource"}, mode = SaMode.OR)
  179. @PutMapping("/{id}/Actions/State")
  180. public ActionResult upState(@PathVariable("id") String id) {
  181. ModuleButtonEntity entity = moduleButtonService.getInfo(id);
  182. if (entity.getEnabledMark() == null || "1".equals(String.valueOf(entity.getEnabledMark()))) {
  183. entity.setEnabledMark(0);
  184. } else {
  185. entity.setEnabledMark(1);
  186. }
  187. boolean flag = moduleButtonService.update(id, entity);
  188. if (!flag) {
  189. return ActionResult.success(MsgCode.FA002.get());
  190. }
  191. return ActionResult.success(MsgCode.SU004.get());
  192. }
  193. @Operation(summary = "根据系统动作管理选择动作")
  194. @PostMapping("/selectActions/{menuId}")
  195. @SaCheckPermission(value = {"permission.auth", "permission.role", "permission.resource", "appConfig.appResource"}, mode = SaMode.OR)
  196. public ActionResult selectActionBySystem(@RequestBody ActionForm actionForm, @PathVariable String menuId) {
  197. List<ActionEntity> ids = actionForm.getIds();
  198. for (ActionEntity id : ids) {
  199. if (moduleButtonService.isExistByEnCode(actionForm.getMenuId(), id.getEnCode(), null)) {
  200. return ActionResult.fail(MsgCode.EXIST002.get());
  201. }
  202. }
  203. List<ModuleButtonEntity> jsonToList = JsonUtil.getJsonToList(ids, ModuleButtonEntity.class);
  204. jsonToList.forEach(item->{
  205. item.setModuleId(menuId);
  206. item.setParentId("-1");
  207. item.setEnabledMark(1);
  208. item.setId(RandomUtil.uuId());
  209. });
  210. moduleButtonService.saveBatch(jsonToList);
  211. return ActionResult.success(MsgCode.SU005.get());
  212. }
  213. }