package com.cloud.application.controller; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import com.cloud.common.utils.JsonUtil; import com.cloud.common.utils.RestTemplateUtil; import com.cloud.model.common.Result; import com.cloud.model.sys.SysMenu; import io.swagger.annotations.Api; import io.swagger.annotations.ApiImplicitParam; import io.swagger.annotations.ApiImplicitParams; import io.swagger.annotations.ApiOperation; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Value; import org.springframework.http.MediaType; import org.springframework.util.LinkedMultiValueMap; import org.springframework.util.MultiValueMap; import org.springframework.util.StringUtils; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; import java.util.ArrayList; import java.util.Iterator; import java.util.List; import java.util.Map; @Slf4j @RestController @RequestMapping("/data/api-u/sysmenus") @Api(value = "SysMenuController", description = "菜单控制层") public class SysMenuController { @Value("${loginData.redUrl}") String reurl; @Value("${loginData.redPort}") String port; /** * 当前登录用户的菜单 */ @GetMapping("/me") @ApiOperation(value = "查询用户菜单", notes = "当前登录用户的菜单", httpMethod = "GET", produces = MediaType.APPLICATION_JSON_UTF8_VALUE) @ApiImplicitParam(name = "module", value = "module", required = true, dataType = "String", paramType = "query") public Result findMyMenu(@RequestParam Map params) { try { String url = "http://"+ reurl+":"+port+"/data/api-u/sysmenus/me"; JSONObject jsonObject = JsonUtil.mapToJson(params); String result = RestTemplateUtil.get(url, jsonObject, true); if(!StringUtils.isEmpty(result)){ return JSONObject.parseObject(result, Result.class); } } catch (Exception e) { log.info(e.getMessage()); } return Result.custom("查询失败", 500, false, "查询失败"); } @GetMapping("/findAllMenuByUser") @ApiOperation(value = "查询所有模块名称",notes = "查询所有模块名称", httpMethod = "GET", produces = MediaType.APPLICATION_JSON_UTF8_VALUE) @ApiImplicitParams({ @ApiImplicitParam(name = "orgId", value = "机构id", required = true, dataType = "Long", paramType = "query"), @ApiImplicitParam(name = "userId", value = "当前登录人id", required = true, dataType = "Long", paramType = "query"), @ApiImplicitParam(name = "tags", value = "查询的模块device or map", required = true, dataType = "Long", paramType = "query"), }) public List> findAllMenuByUser(@RequestParam Map map) { List resultList = new ArrayList<>(); try { String url = "http://"+reurl+":"+port+"/data/api-u/sysmenus/findAllMenuByUser"; JSONObject jsonObject = JsonUtil.mapToJson(map); // MultiValueMap multiValueMap = createMultiValueMapObject(jsonObject); String result = RestTemplateUtil.get(url, jsonObject, true); if(!StringUtils.isEmpty(result)){ resultList = JSONArray.parseArray(result); } //List list = RestTemplateUtil.getHeaderForEntity(url,multiValueMap,List.class,true); } catch (Exception e) { e.printStackTrace(); } return resultList; } private static MultiValueMap createMultiValueMapObject(JSONObject params) { MultiValueMap map = new LinkedMultiValueMap<>(); if(params !=null) { for (String key : params.keySet()) { if (params.get(key) instanceof List) { for (Iterator it = ((List) params.get(key)).iterator(); it.hasNext(); ) { Object value = it.next(); map.add(key, value); } } else { map.add(key, params.getString(key)); } } } return map; } }