From 8bca6289be590b24ad1214cb12579d8d8e4b0f2f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=B5=B5=E5=95=B8=E9=9D=9E?= <8153694@qq.com> Date: Tue, 21 Nov 2023 10:48:12 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E8=B5=84=E6=BA=90=E8=87=AA?= =?UTF-8?q?=E5=8A=A8=E5=88=B7=E6=96=B0=E8=8E=B7=E5=8F=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../xhx/base/login/web/LoginController.java | 49 +++++++++++++------ .../service/impl/ResourceServiceImpl.java | 11 ++++- 2 files changed, 42 insertions(+), 18 deletions(-) diff --git a/portal-manager/src/main/java/com/mortals/xhx/base/login/web/LoginController.java b/portal-manager/src/main/java/com/mortals/xhx/base/login/web/LoginController.java index e9d1ed18..4ba0daf6 100644 --- a/portal-manager/src/main/java/com/mortals/xhx/base/login/web/LoginController.java +++ b/portal-manager/src/main/java/com/mortals/xhx/base/login/web/LoginController.java @@ -6,14 +6,18 @@ import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import com.mortals.framework.exception.AppException; import com.mortals.framework.service.IAuthTokenService; +import com.mortals.framework.service.ICacheService; import com.mortals.framework.service.IUser; import com.mortals.framework.util.DateUtils; import com.mortals.framework.util.StringUtils; import com.mortals.framework.web.BaseCRUDJsonBodyMappingController; +import com.mortals.xhx.base.system.resource.service.ResourceService; import com.mortals.xhx.base.system.valid.service.ValidCodeService; import com.mortals.xhx.common.code.YesNoEnum; +import com.mortals.xhx.common.key.RedisKey; import com.mortals.xhx.common.pdu.SitePdu; import com.mortals.xhx.common.utils.LoginAESUtil; +import com.mortals.xhx.common.utils.MenuEncodeUtil; import com.mortals.xhx.feign.model.IApiModelFeign; import com.mortals.xhx.feign.rsp.ApiResp; import com.mortals.xhx.module.menu.model.MenuEntity; @@ -22,6 +26,7 @@ import com.mortals.xhx.module.user.model.UserEntity; import com.mortals.xhx.module.user.service.UserService; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.util.ObjectUtils; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; @@ -43,9 +48,13 @@ public class LoginController extends BaseCRUDJsonBodyMappingController<UserServi private IApiModelFeign apiModelFeign; @Autowired private ValidCodeService validCodeService; + @Autowired + private ICacheService cacheService; + @Autowired + private ResourceService resourceService; private static final String AES_KEY = "0000000671595991"; - private static final String AES_IV = "tdrdadq59tbss5n7"; + private static final String AES_IV = "tdrdadq59tbss5n7"; @RequestMapping("login") public String login(@RequestBody LoginForm loginForm) throws Exception { @@ -59,15 +68,15 @@ public class LoginController extends BaseCRUDJsonBodyMappingController<UserServi ret.put(KEY_RESULT_MSG, "鏈幏鍙栧埌鐢ㄦ埛淇℃伅锛岃閲嶆柊鐧诲綍"); return ret.toJSONString(); } - if(loginForm.getType()!=null&&loginForm.getType()==2){ - loginName = LoginAESUtil.decrypt(loginName,AES_KEY,AES_IV,LoginAESUtil.AES_CBC); - password = LoginAESUtil.decrypt(password,AES_KEY,AES_IV,LoginAESUtil.AES_CBC); + if (loginForm.getType() != null && loginForm.getType() == 2) { + loginName = LoginAESUtil.decrypt(loginName, AES_KEY, AES_IV, LoginAESUtil.AES_CBC); + password = LoginAESUtil.decrypt(password, AES_KEY, AES_IV, LoginAESUtil.AES_CBC); } UserEntity userEntity = null; try { loginForm.validate(); - boolean validCode = validCodeService.doCheckImageValidCode(loginForm.getMark(),super.getRequestIP(request),loginForm.getSecurityCode()); - if(!validCode){ + boolean validCode = validCodeService.doCheckImageValidCode(loginForm.getMark(), super.getRequestIP(request), loginForm.getSecurityCode()); + if (!validCode) { throw new AppException("楠岃瘉鐮侀敊璇�"); } userEntity = userService.userdoLogin(loginName, password, ip); @@ -82,15 +91,23 @@ public class LoginController extends BaseCRUDJsonBodyMappingController<UserServi List<MenuEntity> menuList = menuService.findTreeMenuByUser(userEntity); userEntity.setMenuList(menuList); data.put("user", userEntity); - if(userEntity.getId()==1 && StringUtils.isEmpty(userEntity.getAreaCodes())){ + Set<String> urls = new HashSet<>(); + String menuUrl = cacheService.hget(RedisKey.KEY_USER_MENU_CACHE, userEntity.getId().toString(), String.class); + if (ObjectUtils.isEmpty(menuUrl)) { + urls = resourceService.findUrlSetByUserId(userEntity.getId()); + menuUrl = MenuEncodeUtil.generateMenuUrlCode(urls); + cacheService.hset(RedisKey.KEY_USER_MENU_CACHE, userEntity.getId().toString(), menuUrl); + } + data.put("urls", urls); + if (userEntity.getId() == 1 && StringUtils.isEmpty(userEntity.getAreaCodes())) { JSONArray siteList = new JSONArray(); JSONObject siteObject = new JSONObject(); - siteObject.put("id",0); - siteObject.put("siteName","鏃犵珯鐐�"); + siteObject.put("id", 0); + siteObject.put("siteName", "鏃犵珯鐐�"); siteList.add(siteObject); data.put("siteList", siteList); - }else { - if(StringUtils.isNotEmpty(userEntity.getAreaCodes())){ + } else { + if (StringUtils.isNotEmpty(userEntity.getAreaCodes())) { SitePdu sitePdu = new SitePdu(); List<String> areaCodeList = Arrays.asList(userEntity.getAreaCodes().split(",")); sitePdu.setAreaCodeList(areaCodeList); @@ -99,12 +116,12 @@ public class LoginController extends BaseCRUDJsonBodyMappingController<UserServi if (apiResp.getCode() != YesNoEnum.YES.getValue()) { throw new AppException("鑾峰彇鐢ㄦ埛绔欑偣鍒楄〃鏍戞暟鎹け璐ワ細" + apiResp.getMsg()); } - if(apiResp.getData().get("data")!=null) { + if (apiResp.getData().get("data") != null) { data.put("siteList", apiResp.getData().get("data")); - }else { + } else { data.put("siteList", Collections.emptyList()); } - }else { + } else { data.put("siteList", Collections.emptyList()); } } @@ -120,9 +137,9 @@ public class LoginController extends BaseCRUDJsonBodyMappingController<UserServi return ret.toJSONString(); } catch (Exception e) { log.error("login error ", e); - if(e instanceof AppException){ + if (e instanceof AppException) { ret.put(KEY_RESULT_CODE, ((AppException) e).getCode()); - }else { + } else { ret.put(KEY_RESULT_CODE, VALUE_RESULT_FAILURE); } ret.put(KEY_RESULT_MSG, super.convertException(e)); diff --git a/portal-manager/src/main/java/com/mortals/xhx/base/system/resource/service/impl/ResourceServiceImpl.java b/portal-manager/src/main/java/com/mortals/xhx/base/system/resource/service/impl/ResourceServiceImpl.java index 328f7151..7b297c95 100644 --- a/portal-manager/src/main/java/com/mortals/xhx/base/system/resource/service/impl/ResourceServiceImpl.java +++ b/portal-manager/src/main/java/com/mortals/xhx/base/system/resource/service/impl/ResourceServiceImpl.java @@ -71,7 +71,14 @@ public class ResourceServiceImpl extends AbstractCRUDServiceImpl<ResourceDao, Re @Override public Set<String> findUrlSetByUserId(Long userId) throws AppException { Set<String> urls = new HashSet<>(); - List<ResourceEntity> resList = this.findListByUserId(userId); + List<ResourceEntity> resList = new ArrayList<>(); + if (1L == userId) { + //绠$悊鍛� + resList = this.find(new ResourceQuery()); + } else { + resList = this.findListByUserId(userId); + } + for (ResourceEntity res : resList) { String url = res.getUrl(); if (StringUtils.isEmpty(url)) { @@ -92,7 +99,7 @@ public class ResourceServiceImpl extends AbstractCRUDServiceImpl<ResourceDao, Re public Rest<String> refreshResourceUrl(String packageName, Context context) { List<Class<?>> classList = ControllerScanUtil.getAllClassByPackageName(packageName); //System.out.println(classList); //鑾峰彇鍒颁簡鎵€鏈夌殑绫� - List<ResourceEntity> newResourcelist = ControllerScanUtil.getAnnotationInfo(classList).stream().filter(f->!ObjectUtils.isEmpty(f.getUrl())).collect(Collectors.toList()); + List<ResourceEntity> newResourcelist = ControllerScanUtil.getAnnotationInfo(classList).stream().filter(f -> !ObjectUtils.isEmpty(f.getUrl())).collect(Collectors.toList()); Map<String, List<ResourceEntity>> localResourceMap = this.find(new ResourceQuery()).stream().collect(Collectors.groupingBy(x -> x.getName())); Map<String, List<ResourceEntity>> newResourceMap = newResourcelist.stream().collect(Collectors.groupingBy(x -> x.getName())); -- 2.24.3