BackendSourceController.java 9.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253
  1. package com.fuint.module.backendApi.controller;
  2. import com.fuint.common.domain.TreeNode;
  3. import com.fuint.common.domain.TreeSelect;
  4. import com.fuint.common.dto.AccountInfo;
  5. import com.fuint.common.dto.SourceDto;
  6. import com.fuint.common.service.SourceService;
  7. import com.fuint.common.util.CommonUtil;
  8. import com.fuint.common.util.TokenUtil;
  9. import com.fuint.framework.exception.BusinessCheckException;
  10. import com.fuint.framework.web.BaseController;
  11. import com.fuint.framework.web.ResponseObject;
  12. import com.fuint.repository.model.TSource;
  13. import com.fuint.utils.StringUtil;
  14. import io.swagger.annotations.Api;
  15. import io.swagger.annotations.ApiOperation;
  16. import lombok.AllArgsConstructor;
  17. import org.springframework.security.access.prepost.PreAuthorize;
  18. import org.springframework.web.bind.annotation.*;
  19. import javax.servlet.http.HttpServletRequest;
  20. import java.util.List;
  21. import java.util.Map;
  22. /**
  23. * 菜单管理控制类
  24. *
  25. * Created by FSQ
  26. * CopyRight https://www.fuint.cn
  27. */
  28. @Api(tags="管理端-后台菜单相关接口")
  29. @RestController
  30. @AllArgsConstructor
  31. @RequestMapping(value = "/backendApi/source")
  32. public class BackendSourceController extends BaseController {
  33. /**
  34. * 菜单服务接口
  35. * */
  36. private SourceService sourceService;
  37. /**
  38. * 获取菜单列表
  39. *
  40. * @return 账户信息列表展现页面
  41. */
  42. @ApiOperation(value = "获取菜单列表")
  43. @RequestMapping(value = "/list", method = RequestMethod.GET)
  44. @PreAuthorize("@pms.hasPermission('system:menu:index')")
  45. public ResponseObject list(HttpServletRequest request) {
  46. String token = request.getHeader("Access-Token");
  47. AccountInfo accountInfo = TokenUtil.getAccountInfoByToken(token);
  48. if (accountInfo == null) {
  49. return getFailureResult(1001, "请先登录");
  50. }
  51. List<TreeNode> sources = sourceService.getSourceTree(accountInfo.getMerchantId());
  52. return getSuccessResult(sources);
  53. }
  54. /**
  55. * 获取菜单详情
  56. *
  57. * @param sourceId 菜单ID
  58. * @return 菜单信息
  59. */
  60. @ApiOperation(value = "获取菜单详情")
  61. @RequestMapping(value = "/info/{sourceId}", method = RequestMethod.GET)
  62. public ResponseObject info( @PathVariable("sourceId") Long sourceId) {
  63. TSource tSource = sourceService.getById(sourceId);
  64. SourceDto sourceDto = new SourceDto();
  65. sourceDto.setId(tSource.getSourceId());
  66. sourceDto.setName(tSource.getSourceName());
  67. if (tSource.getParentId() != null) {
  68. sourceDto.setParentId(tSource.getParentId());
  69. }
  70. sourceDto.setMerchantId(tSource.getMerchantId());
  71. sourceDto.setPath(tSource.getPath());
  72. sourceDto.setIcon(tSource.getNewIcon());
  73. sourceDto.setNewIcon(tSource.getNewIcon());
  74. sourceDto.setSort(tSource.getSourceStyle());
  75. sourceDto.setEname(tSource.getEname());
  76. sourceDto.setStatus(tSource.getStatus());
  77. sourceDto.setIsMenu(tSource.getIsMenu());
  78. sourceDto.setPerms(tSource.getPath().replaceAll("/", ":"));
  79. sourceDto.setDescription(tSource.getDescription());
  80. return getSuccessResult(sourceDto);
  81. }
  82. /**
  83. * 新增菜单
  84. *
  85. * @return
  86. * @throws BusinessCheckException
  87. */
  88. @ApiOperation(value = "新增菜单")
  89. @RequestMapping(value = "/add", method = RequestMethod.POST)
  90. @PreAuthorize("@pms.hasPermission('system:menu:add')")
  91. public ResponseObject addSource(HttpServletRequest request, @RequestBody Map<String, Object> param) {
  92. String token = request.getHeader("Access-Token");
  93. AccountInfo accountInfo = TokenUtil.getAccountInfoByToken(token);
  94. if (accountInfo == null) {
  95. return getFailureResult(1001, "请先登录");
  96. }
  97. String name = param.get("name").toString();
  98. String status = param.get("status").toString();
  99. String parentId = param.get("parentId").toString();
  100. String icon = param.get("icon").toString();
  101. String path = param.get("path").toString();
  102. String sort = param.get("sort").toString();
  103. Integer isMenu = param.get("isMenu") == null ? 1 : Integer.parseInt(param.get("isMenu").toString());
  104. TSource addSource = new TSource();
  105. addSource.setSourceName(name);
  106. addSource.setMerchantId(accountInfo.getMerchantId());
  107. addSource.setStatus(status);
  108. addSource.setNewIcon(icon);
  109. addSource.setIsLog(1);
  110. addSource.setPath(path);
  111. addSource.setSourceStyle(sort);
  112. addSource.setIsMenu(isMenu);
  113. addSource.setSourceCode(path);
  114. String eName = "";
  115. String[] paths = path.split("/");
  116. for (int i = 0; i < paths.length; i++) {
  117. eName = eName + CommonUtil.firstLetterToUpperCase(paths[i]);
  118. }
  119. addSource.setEname(eName);
  120. if (StringUtil.isNotBlank(parentId)) {
  121. if (Integer.parseInt(parentId) > 0) {
  122. TSource parentSource = sourceService.getById(parentId);
  123. addSource.setParentId(parentSource.getSourceId());
  124. addSource.setSourceLevel(parentSource.getSourceLevel() + 1);
  125. } else {
  126. addSource.setSourceLevel(1);
  127. }
  128. } else {
  129. addSource.setSourceLevel(1);
  130. }
  131. sourceService.addSource(addSource);
  132. return getSuccessResult(true);
  133. }
  134. /**
  135. * 修改菜单
  136. *
  137. * @param param
  138. * @return
  139. */
  140. @ApiOperation(value = "修改菜单")
  141. @RequestMapping(value = "/update", method = RequestMethod.POST)
  142. @PreAuthorize("@pms.hasPermission('system:menu:edit')")
  143. public ResponseObject update(HttpServletRequest request, @RequestBody Map<String, Object> param) {
  144. String token = request.getHeader("Access-Token");
  145. AccountInfo accountInfo = TokenUtil.getAccountInfoByToken(token);
  146. if (accountInfo == null) {
  147. return getFailureResult(1001, "请先登录");
  148. }
  149. String name = param.get("name").toString();
  150. String status = param.get("status").toString();
  151. String parentId = param.get("parentId").toString();
  152. String icon = param.get("icon").toString();
  153. String path = param.get("path").toString();
  154. String sort = param.get("sort").toString();
  155. Integer isMenu = param.get("isMenu") == null ? 1 : Integer.parseInt(param.get("isMenu").toString());
  156. Long id = param.get("id") == null ? 0 : Long.parseLong(param.get("id").toString());
  157. TSource editSource = sourceService.getById(id);
  158. if (!editSource.getMerchantId().equals(accountInfo.getMerchantId()) && accountInfo.getMerchantId() > 0) {
  159. return getFailureResult(201, "抱歉,您没有修改的权限");
  160. }
  161. editSource.setSourceName(name);
  162. editSource.setStatus(status);
  163. editSource.setNewIcon(icon);
  164. editSource.setIsLog(1);
  165. editSource.setPath(path);
  166. editSource.setSourceStyle(sort);
  167. editSource.setIsMenu(isMenu);
  168. editSource.setSourceCode(editSource.getPath());
  169. String eName = "";
  170. String[] paths = path.split("/");
  171. for (int i = 0; i < paths.length; i++) {
  172. eName = eName + CommonUtil.firstLetterToUpperCase(paths[i]);
  173. }
  174. editSource.setEname(eName);
  175. if (StringUtil.isNotBlank(parentId)) {
  176. try {
  177. if (Integer.parseInt(parentId) > 0) {
  178. TSource parentSource = sourceService.getById(Long.parseLong(parentId));
  179. editSource.setParentId(parentSource.getSourceId());
  180. editSource.setSourceLevel(parentSource.getSourceLevel() + 1);
  181. } else {
  182. editSource.setSourceLevel(1);
  183. }
  184. } catch (Exception e) {
  185. return getFailureResult(201, "父菜单" + parentId + "不存在");
  186. }
  187. } else {
  188. editSource.setSourceLevel(1);
  189. }
  190. sourceService.editSource(editSource);
  191. return getSuccessResult(true);
  192. }
  193. /**
  194. * 删除菜单
  195. *
  196. * @return
  197. * @throws BusinessCheckException
  198. */
  199. @ApiOperation(value = "删除菜单")
  200. @RequestMapping(value = "/delete/{sourceId}", method = RequestMethod.GET)
  201. @PreAuthorize("@pms.hasPermission('system:menu:delete')")
  202. public ResponseObject delete(HttpServletRequest request, @PathVariable("sourceId") Long sourceId) throws BusinessCheckException {
  203. String token = request.getHeader("Access-Token");
  204. AccountInfo accountInfo = TokenUtil.getAccountInfoByToken(token);
  205. if (accountInfo == null) {
  206. return getFailureResult(1001, "请先登录");
  207. }
  208. TSource tSource = sourceService.getById(sourceId);
  209. if (!tSource.getMerchantId().equals(accountInfo.getMerchantId()) && accountInfo.getMerchantId() > 0) {
  210. return getFailureResult(201, "抱歉,您没有删除的权限");
  211. }
  212. sourceService.deleteSource(tSource);
  213. return getSuccessResult(true);
  214. }
  215. /**
  216. * 获取菜单下拉树列表
  217. * */
  218. @ApiOperation(value = "获取菜单下拉树列表")
  219. @RequestMapping(value = "/treeselect", method = RequestMethod.GET)
  220. public ResponseObject treeselect(HttpServletRequest request) {
  221. String token = request.getHeader("Access-Token");
  222. AccountInfo accountInfo = TokenUtil.getAccountInfoByToken(token);
  223. if (accountInfo == null) {
  224. return getFailureResult(1001, "请先登录");
  225. }
  226. List<TreeNode> sources = sourceService.getSourceTree(accountInfo.getMerchantId());
  227. List<TreeSelect> data = sourceService.buildMenuTreeSelect(sources);
  228. return getSuccessResult(data);
  229. }
  230. }