From 47a26c3365cfe2a9705aea8ae0887086f521ef7b Mon Sep 17 00:00:00 2001
From: ZhuDongming <773644075@qq.com>
Date: Fri, 27 Dec 2019 16:27:51 +0800
Subject: [PATCH] 新增大屏登陆接口

---
 src/main/java/com/moral/mapper/AccountMapper.java            |    4 +
 src/main/java/com/moral/service/impl/AccountServiceImpl.java |   31 ++++++++++
 src/main/resources/mapper/AccountMapper.xml                  |   37 ++++++++++++
 src/main/java/com/moral/controller/ScreenController.java     |   52 +++++++++++++++++
 src/main/java/com/moral/service/AccountService.java          |    2 
 5 files changed, 126 insertions(+), 0 deletions(-)

diff --git a/src/main/java/com/moral/controller/ScreenController.java b/src/main/java/com/moral/controller/ScreenController.java
index 0fd3457..474f0ef 100644
--- a/src/main/java/com/moral/controller/ScreenController.java
+++ b/src/main/java/com/moral/controller/ScreenController.java
@@ -247,6 +247,58 @@
         return resultMap;
     }
 
+    @GetMapping("loginNew")
+    public Map<String, Object> screenLoginNew(HttpServletRequest request) {
+        Map<String, Object> resultMap = new HashMap<String, Object>();
+        Map<String, Object> parameters = getParametersStartingWith(request, null);
+        if (!(parameters.containsKey("account") && parameters.containsKey("password"))) {
+            resultMap.put("msg", "������������������������������������");
+            resultMap.put("accountId", -1);
+        } else {
+            resultMap = accountService.screenLoginNew(parameters);
+            // ������������������������������������������
+            Object orgId = resultMap.get("orgId");
+            if (resultMap.get("orgId") != null && resultMap.get("orgId") instanceof Integer) {
+                StringBuilder areaNamesBuilder = new StringBuilder("������");
+                if (!((Integer) orgId).equals(dictionaryDataService.querySupperOrgId())) {
+                    Organization organization = organizationService.getOrganizationById((Integer) orgId);
+                    if (organization.getAreaNames() != null) {
+                        Map<String, String> areaNameMap = BeanUtils.beanToMap(organization.getAreaNames());
+                        List<String> names = areaNameMap.entrySet().stream().filter(item -> {
+                            return item.getValue() != null;
+                        }).map(item -> {
+                            return item.getValue();
+                        }).collect(Collectors.toList());
+                        AreaNames areaNames = organization.getAreaNames();
+                        areaNamesBuilder.append("/");
+                        areaNamesBuilder.append(String.join("/", names));
+                    }
+                    // ������������
+                    if (organization.getRank() != null && organization.getRank() == 0) {
+                        resultMap.put("type", "enterprise");
+                    } else {
+                        resultMap.put("type", "government");
+                    }
+                    Number mapAreaCode = null;
+                    if (organization.getVillageCode() != null) {
+                        mapAreaCode = organization.getVillageCode();
+                    } else if (organization.getTownCode() != null) {
+                        mapAreaCode = organization.getTownCode();
+                    } else if (organization.getAreaCode() != null) {
+                        mapAreaCode = organization.getAreaCode();
+                    } else if (organization.getCityCode() != null) {
+                        mapAreaCode = organization.getCityCode();
+                    } else if (organization.getProvinceCode() != null) {
+                        mapAreaCode = organization.getProvinceCode();
+                    }
+                    resultMap.put("mapAreaCode", mapAreaCode.toString());
+                }
+                resultMap.put("mapPath", areaNamesBuilder.toString());
+            }
+        }
+        return resultMap;
+    }
+
     /**
      * Gets the equipment states. ���������������������������������������
      *
diff --git a/src/main/java/com/moral/mapper/AccountMapper.java b/src/main/java/com/moral/mapper/AccountMapper.java
index 6fc6fc0..c3bfbed 100644
--- a/src/main/java/com/moral/mapper/AccountMapper.java
+++ b/src/main/java/com/moral/mapper/AccountMapper.java
@@ -28,4 +28,8 @@
 
     List<Menu> getChildMenuIdsByAccountName(@Param("accountName") String accountName, @Param("id") Integer id);
 
+    List<Menu> getScreenMenuListsByAccountName(@Param("accountName") String accountName);
+
+    Integer getScreenRoleByAccountName(@Param("accountName") String accountName);
+
 }
\ No newline at end of file
diff --git a/src/main/java/com/moral/service/AccountService.java b/src/main/java/com/moral/service/AccountService.java
index b3cd3a5..0dd7c82 100644
--- a/src/main/java/com/moral/service/AccountService.java
+++ b/src/main/java/com/moral/service/AccountService.java
@@ -12,6 +12,8 @@
 
 	Map<String, Object> screenLogin(Map<String, Object> parameters);
 
+    Map<String, Object> screenLoginNew(Map<String, Object> parameters);
+
 	Account getAccountByAccountName(String account);
 
     Account getAccountById(Integer id);
diff --git a/src/main/java/com/moral/service/impl/AccountServiceImpl.java b/src/main/java/com/moral/service/impl/AccountServiceImpl.java
index 7d4b446..a865fa9 100644
--- a/src/main/java/com/moral/service/impl/AccountServiceImpl.java
+++ b/src/main/java/com/moral/service/impl/AccountServiceImpl.java
@@ -82,6 +82,37 @@
     }
 
     @Override
+    public Map<String, Object> screenLoginNew(Map<String, Object> parameters) {
+        Map<String, Object> result = new HashMap<String, Object>();
+        Account account = new Account();
+        account.setAccountName((String) parameters.get("account"));
+        String rawPassword = (String) parameters.get("password");
+//		account.setPassword(encoder.encode((String) parameters.get("password")));
+        account = accountMapper.selectOne(account);
+        Integer existRole=accountMapper.getScreenRoleByAccountName(account.getAccountName());
+        List<Menu> menuList = accountMapper.getScreenMenuListsByAccountName(account.getAccountName());
+        boolean isValid = account == null ? false : encoder.matches(rawPassword, account.getPassword());
+        if (!isValid) {
+            result.put("msg", "���������������������������������");
+        } else {
+            if (IS_DELETE_FALSE.equals(account.getIsDelete())) {
+                if(existRole!=null) {
+                    result.put("msg", "���������������");
+                    result.put("accountId", account.getId());
+                    result.put("orgId", account.getOrganizationId());
+                    result.put("data",menuList);
+                    setOrgIdsByAccount(result);
+                }else{
+                    result.put("msg", "���������������������");
+                }
+            } else {
+                result.put("msg", "���������������������������������������������");
+            }
+        }
+        return result;
+    }
+
+    @Override
     public Account getAccountByAccountName(String accountName) {
         Account account = new Account();
         account.setAccountName(accountName);
diff --git a/src/main/resources/mapper/AccountMapper.xml b/src/main/resources/mapper/AccountMapper.xml
index 2c97198..f981613 100644
--- a/src/main/resources/mapper/AccountMapper.xml
+++ b/src/main/resources/mapper/AccountMapper.xml
@@ -88,6 +88,19 @@
         a.account_name = #{accountName} and r.id is not null
     </select>
 
+    <select id="getScreenRoleByAccountName" resultType="int">
+         SELECT channel_id
+         from
+         (select DISTINCT channel_id FROM role_menu
+         WHERE role_id in ( select r.id from
+         role r
+         right join account_role ar on ar.role_id = r.id
+         right join account a on a.id = ar.account_id
+         where
+         a.account_name = #{accountName} and r.id is not null)) s
+         where s.channel_id=1;
+    </select>
+
     <select id="getParentMenuListsByAccountName" resultMap="MenuResultMap" parameterType="java.lang.String">
         select
         DISTINCT
@@ -143,4 +156,28 @@
         where account_name = #{accountName}
     </select>
 
+    <select id="getScreenMenuListsByAccountName" resultMap="MenuResultMap" parameterType="java.lang.String">
+        select
+        DISTINCT
+        m.id,m.menu_name,m.menu_icon,m.menu_url,m.menu_order,m.menu_parent_id
+        from
+        menu m
+        right join role_menu rm on rm.channel_id = m.channel_id and rm.menu_id=m.id and m.channel_id=1
+        right join role on rm.role_id in
+        (
+            select
+                r.id
+            from
+                role r
+            right join
+                account_role ar on ar.role_id = r.id
+            right join
+                account a on a.id = ar.account_id
+            where
+                a.account_name = #{accountName} and r.is_delete=0 and r.id is not null
+        )
+        where m.menu_parent_id=0 and m.is_delete=0
+        order by m.menu_order
+    </select>
+
 </mapper>
\ No newline at end of file

--
Gitblit v1.8.0