|
@@ -1,27 +1,30 @@
|
|
|
package thyyxxk.webserver.service;
|
|
|
|
|
|
+import lombok.extern.slf4j.Slf4j;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
import thyyxxk.webserver.config.exception.ExceptionEnum;
|
|
|
+import thyyxxk.webserver.constants.Capacity;
|
|
|
import thyyxxk.webserver.dao.his.LoginDao;
|
|
|
import thyyxxk.webserver.entity.ResultVo;
|
|
|
import thyyxxk.webserver.entity.dictionary.CodeName;
|
|
|
import thyyxxk.webserver.entity.login.UserInfo;
|
|
|
+import thyyxxk.webserver.entity.settings.permissions.MenuItem;
|
|
|
import thyyxxk.webserver.utils.ResultVoUtil;
|
|
|
import thyyxxk.webserver.utils.SnowFlakeId;
|
|
|
import thyyxxk.webserver.utils.TokenUtil;
|
|
|
|
|
|
-import java.util.ArrayList;
|
|
|
-import java.util.List;
|
|
|
-import java.util.Random;
|
|
|
+import java.util.*;
|
|
|
|
|
|
/**
|
|
|
* @author dj
|
|
|
*/
|
|
|
+@Slf4j
|
|
|
@Service
|
|
|
public class LoginService {
|
|
|
private final LoginDao dao;
|
|
|
private final TokenService tokenService;
|
|
|
+ private static final int DOUBLE_LEVEL_MAX = 10;
|
|
|
|
|
|
@Autowired
|
|
|
public LoginService(LoginDao dao, TokenService tokenService) {
|
|
@@ -62,6 +65,65 @@ public class LoginService {
|
|
|
return ResultVoUtil.success(paths);
|
|
|
}
|
|
|
|
|
|
+ public ResultVo<List<MenuItem>> fetchMenus() {
|
|
|
+ Map<Integer, MenuItem> finalMap = new HashMap<>(Capacity.DEFAULT);
|
|
|
+ List<Integer> roles = dao.getUserRoles(TokenUtil.getTokenUserId());
|
|
|
+ List<MenuItem> userMenus = dao.selectMenusByRoles(roles);
|
|
|
+ List<MenuItem> doubleLevelMenus = new ArrayList<>();
|
|
|
+ List<MenuItem> tripleLevelMenus = new ArrayList<>();
|
|
|
+ userMenus.forEach(item -> {
|
|
|
+ if (item.getParent() > DOUBLE_LEVEL_MAX) {
|
|
|
+ tripleLevelMenus.add(item);
|
|
|
+ } else {
|
|
|
+ doubleLevelMenus.add(item);
|
|
|
+ }
|
|
|
+ });
|
|
|
+
|
|
|
+ if (!doubleLevelMenus.isEmpty()) {
|
|
|
+ Map<Integer, List<MenuItem>> doubleLevelMap = new HashMap<>(Capacity.DEFAULT);
|
|
|
+ doubleLevelMenus.forEach(item -> {
|
|
|
+ if (doubleLevelMap.containsKey(item.getParent())) {
|
|
|
+ doubleLevelMap.get(item.getParent()).add(item);
|
|
|
+ } else {
|
|
|
+ List<MenuItem> tempList = new ArrayList<>();
|
|
|
+ tempList.add(item);
|
|
|
+ doubleLevelMap.put(item.getParent(), tempList);
|
|
|
+ }
|
|
|
+ });
|
|
|
+ for (Map.Entry<Integer, List<MenuItem>> entry : doubleLevelMap.entrySet()) {
|
|
|
+ MenuItem item = dao.selectMenuByCode(entry.getKey());
|
|
|
+ item.setChildren(entry.getValue());
|
|
|
+ finalMap.put(item.getCode(), item);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if (!tripleLevelMenus.isEmpty()) {
|
|
|
+ Map<Integer, List<MenuItem>> tripleLevelMap = new HashMap<>(Capacity.DEFAULT);
|
|
|
+ tripleLevelMenus.forEach(item -> {
|
|
|
+ if (tripleLevelMap.containsKey(item.getParent())) {
|
|
|
+ tripleLevelMap.get(item.getParent()).add(item);
|
|
|
+ } else {
|
|
|
+ List<MenuItem> tempList = new ArrayList<>();
|
|
|
+ tempList.add(item);
|
|
|
+ tripleLevelMap.put(item.getParent(), tempList);
|
|
|
+ }
|
|
|
+ });
|
|
|
+ for (Map.Entry<Integer, List<MenuItem>> entry : tripleLevelMap.entrySet()) {
|
|
|
+ MenuItem item = dao.selectMenuByCode(entry.getKey());
|
|
|
+ item.setChildren(entry.getValue());
|
|
|
+ if (null == finalMap.get(item.getParent())) {
|
|
|
+ finalMap.put(item.getParent(), item);
|
|
|
+ } else {
|
|
|
+ finalMap.get(item.getParent()).getChildren().add(item);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ List<MenuItem> list = new ArrayList<>();
|
|
|
+ for (Map.Entry<Integer, MenuItem> entry : finalMap.entrySet()) {
|
|
|
+ list.add(entry.getValue());
|
|
|
+ }
|
|
|
+ return ResultVoUtil.success(list);
|
|
|
+ }
|
|
|
+
|
|
|
public ResultVo<List<CodeName>> getWards() {
|
|
|
String code = TokenUtil.getTokenUserId();
|
|
|
List<Integer> roles = dao.getUserRoles(code);
|