From 4a062bbdbdd5e1870bdecddc90a0a3af8192b95f Mon Sep 17 00:00:00 2001
From: kaiyu <404897439@qq.com>
Date: Fri, 12 Mar 2021 17:16:49 +0800
Subject: [PATCH] manage模块:     登陆功能完善,增加了过滤前端不需要参数的功能。     注销功能完成

---
 screen-manage/src/main/java/com/moral/api/entity/Menu.java                           |    6 
 screen-common/src/main/java/com/moral/util/ObjectUtils.java                          |    4 
 screen-manage/src/main/java/com/moral/api/service/ManageAccountService.java          |   25 ++--
 screen-manage/src/main/java/com/moral/api/entity/ManageMenu.java                     |    2 
 screen-common/src/main/java/com/moral/util/TokenUtils.java                           |   14 +-
 screen-manage/src/main/java/com/moral/api/entity/ManageRole.java                     |    1 
 screen-manage/src/main/java/com/moral/api/pojo/dto/LoginDTO.java                     |   61 ++++++++++++
 screen-common/src/main/java/com/moral/constant/Constants.java                        |   10 ++
 screen-manage/src/main/java/com/moral/api/controller/AccountController.java          |   28 +++-
 screen-manage/src/main/java/com/moral/api/pojo/dto/AccountInfoDTO.java               |   40 ++++++++
 screen-manage/src/main/java/com/moral/api/service/impl/ManageAccountServiceImpl.java |  101 +++++++++++--------
 11 files changed, 217 insertions(+), 75 deletions(-)

diff --git a/screen-common/src/main/java/com/moral/constant/Constants.java b/screen-common/src/main/java/com/moral/constant/Constants.java
index 945ef27..5c17ba4 100644
--- a/screen-common/src/main/java/com/moral/constant/Constants.java
+++ b/screen-common/src/main/java/com/moral/constant/Constants.java
@@ -25,6 +25,11 @@
     * */
     public static final String MSG_TOKEN_CREATE_ERROR = "token���������������������������������";
 
+    /*
+    * ���������������������������
+    * */
+    public static final String MSG_PARAMETER_IS_MISSING = "������������";
+
     /**
      * ������������code
      */
@@ -34,6 +39,11 @@
      */
     public static final int CODE_OPERATION_FAILED = -1;
 
+    /*
+    * ���������������������������
+    * */
+    public static final int CODE_PARAMETER_IS_MISSING = -2;
+
     /**
      * token������������
      */
diff --git a/screen-common/src/main/java/com/moral/util/ObjectUtils.java b/screen-common/src/main/java/com/moral/util/ObjectUtils.java
index 2808e7f..d7043aa 100644
--- a/screen-common/src/main/java/com/moral/util/ObjectUtils.java
+++ b/screen-common/src/main/java/com/moral/util/ObjectUtils.java
@@ -11,13 +11,13 @@
  **/
 public class ObjectUtils {
     /**
-    * @Description: ������map������map������Key������������
+    * @Description: ������map������map������Key���������������������������������false���������������true���
             * @Param: [map, keys]
             * @return: boolean
             * @Author: ���������
             * @Date: 2021/3/10
             */
-    public static boolean checkParamAndMap(Map<String,Object> map,String ... keys){
+    public static boolean isNotAllEmpty(Map<String,Object> map,String ... keys){
         if(null==map)
             return false;
         for (String key : keys) {
diff --git a/screen-common/src/main/java/com/moral/util/TokenUtils.java b/screen-common/src/main/java/com/moral/util/TokenUtils.java
index 7900fa2..5c668f2 100644
--- a/screen-common/src/main/java/com/moral/util/TokenUtils.java
+++ b/screen-common/src/main/java/com/moral/util/TokenUtils.java
@@ -37,13 +37,13 @@
     private static final int validity_time = 60*30;
 
     /**
-     * @Description: ������token
-     * @Param: [type, uid] type��� ���������������manage  ���������������api
+     * @Description: ������token,���������������������������������
+     * @Param: [uid] type��� ���������������manage  ���������������api
      * @return: java.lang.String
      * @Author: ���������
      * @Date: 2021/3/10
      */
-    public static String getToken(String uid, Map<String, Object> userInfo) {
+    public static String getToken(String uid, Object userInfo) {
         //������������token
         try {
             //������token
@@ -62,8 +62,8 @@
             log.error("token���������������"+e.getMessage());
             throw new TokenException(Constants.CODE_TOKEN_CREATE_ERROR,Constants.MSG_TOKEN_CREATE_ERROR);
         }
-
     }
+
 
     /**
      * @Description: ������token
@@ -90,14 +90,14 @@
     }
 
     /**
-     * @Description: ������token������������������
+     * @Description: ������token������������������  ������������
      * @Param: [token]
      * @return: java.util.Map<java.lang.String   ,   java.lang.Object>
      * @Author: ���������
      * @Date: 2021/3/11
      */
-    public static Map<String, Object> getUserInfoByToken(String token) {
-        Map<String, Object> userInfo = (Map<String, Object>) redisTemplate.opsForValue().get(token);
+    public static Object getUserInfoByToken(String token) {
+        Object userInfo = redisTemplate.opsForValue().get(token);
         if(userInfo==null)
             throw new TokenException(Constants.CODE_TOKEN_ERROR,Constants.MSG_TOKEN_ERROR);
         return userInfo;
diff --git a/screen-manage/src/main/java/com/moral/api/controller/AccountController.java b/screen-manage/src/main/java/com/moral/api/controller/AccountController.java
index 779cea6..600db90 100644
--- a/screen-manage/src/main/java/com/moral/api/controller/AccountController.java
+++ b/screen-manage/src/main/java/com/moral/api/controller/AccountController.java
@@ -1,6 +1,8 @@
 package com.moral.api.controller;
 
+import com.moral.api.pojo.dto.LoginDTO;
 import com.moral.api.service.ManageAccountService;
+import com.moral.constant.Constants;
 import com.moral.constant.ResultMessage;
 import com.moral.util.ObjectUtils;
 import io.swagger.annotations.*;
@@ -27,22 +29,30 @@
 
 
     @PostMapping("login")
-    public ResultMessage login(@RequestBody Map<String, Object> paramters) {
-        if (!ObjectUtils.checkParamAndMap(paramters, "account", "password"))
-            return ResultMessage.fail("���������������");
+    public ResultMessage login(@RequestBody Map<String, Object> parameters) {
+        if (!ObjectUtils.isNotAllEmpty(parameters, "account", "password"))
+            return ResultMessage.fail(Constants.CODE_PARAMETER_IS_MISSING,Constants.MSG_PARAMETER_IS_MISSING);
+        String AESAccount = (String) parameters.get("account");
+        String AESPassword = (String) parameters.get("password");
 
-        Map<String, Object> result = accountService.login(paramters);
+        LoginDTO loginDTO = accountService.login(AESAccount,AESPassword);
 
-        if ((int) result.get("accountId") < 0)
-            return ResultMessage.fail(result);
-        return ResultMessage.ok(result);
+        if(loginDTO.getCode().equals(LoginDTO.SUCCESS))
+            return ResultMessage.ok(loginDTO);
+        return ResultMessage.fail(loginDTO);
     }
 
 
     @PostMapping("logout")
-    public ResultMessage logout(@RequestBody Map<String, Object> paramters, HttpServletRequest request) {
+    public ResultMessage logout(@RequestBody Map<String, Object> parameters, HttpServletRequest request) {
+        if(!ObjectUtils.isNotAllEmpty(parameters,"accountId"))
+            return ResultMessage.fail(Constants.CODE_PARAMETER_IS_MISSING,Constants.MSG_PARAMETER_IS_MISSING);
+        String token = request.getHeader("token");
 
-        return null;
+        if(accountService.logout(String.valueOf(parameters.get("accountId")),token))
+            return ResultMessage.ok("������������");
+        return ResultMessage.fail("������������");
+
     }
 
 
diff --git a/screen-manage/src/main/java/com/moral/api/entity/ManageMenu.java b/screen-manage/src/main/java/com/moral/api/entity/ManageMenu.java
index 0f89b6f..697d6e1 100644
--- a/screen-manage/src/main/java/com/moral/api/entity/ManageMenu.java
+++ b/screen-manage/src/main/java/com/moral/api/entity/ManageMenu.java
@@ -8,6 +8,7 @@
 import java.util.Date;
 import java.util.List;
 
+import com.fasterxml.jackson.annotation.JsonInclude;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
 
@@ -21,6 +22,7 @@
  */
 @Data
 @EqualsAndHashCode(callSuper = false)
+@JsonInclude(JsonInclude.Include.NON_EMPTY)
 public class ManageMenu extends Model<ManageMenu> {
 
     private static final long serialVersionUID = 1L;
diff --git a/screen-manage/src/main/java/com/moral/api/entity/ManageRole.java b/screen-manage/src/main/java/com/moral/api/entity/ManageRole.java
index e51d7ef..40d5bcf 100644
--- a/screen-manage/src/main/java/com/moral/api/entity/ManageRole.java
+++ b/screen-manage/src/main/java/com/moral/api/entity/ManageRole.java
@@ -7,6 +7,7 @@
 import java.io.Serializable;
 import java.util.Date;
 
+import com.fasterxml.jackson.annotation.JsonInclude;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
 
diff --git a/screen-manage/src/main/java/com/moral/api/entity/Menu.java b/screen-manage/src/main/java/com/moral/api/entity/Menu.java
index 916591e..5c90fda 100644
--- a/screen-manage/src/main/java/com/moral/api/entity/Menu.java
+++ b/screen-manage/src/main/java/com/moral/api/entity/Menu.java
@@ -5,6 +5,8 @@
 import com.baomidou.mybatisplus.annotation.TableId;
 import java.time.LocalDateTime;
 import java.io.Serializable;
+import java.util.Date;
+
 import lombok.Data;
 import lombok.EqualsAndHashCode;
 
@@ -56,12 +58,12 @@
     /**
      * ������������
      */
-    private LocalDateTime createTime;
+    private Date createTime;
 
     /**
      * ������������
      */
-    private LocalDateTime updateTime;
+    private Date updateTime;
 
     /**
      * ������������
diff --git a/screen-manage/src/main/java/com/moral/api/pojo/dto/AccountInfoDTO.java b/screen-manage/src/main/java/com/moral/api/pojo/dto/AccountInfoDTO.java
new file mode 100644
index 0000000..6b686bc
--- /dev/null
+++ b/screen-manage/src/main/java/com/moral/api/pojo/dto/AccountInfoDTO.java
@@ -0,0 +1,40 @@
+package com.moral.api.pojo.dto;
+
+import com.fasterxml.jackson.annotation.JsonInclude;
+import com.moral.api.entity.ManageMenu;
+import lombok.Data;
+
+import java.util.List;
+
+/**
+ * @ClassName AccountInfoDto
+ * @Description TODO
+ * @Author ���������
+ * @Date 2021/3/12 13:51
+ * @Version TODO
+ **/
+@Data
+@JsonInclude(JsonInclude.Include.NON_EMPTY)
+public class AccountInfoDTO {
+    /*
+    * ������Id
+    * */
+    private String accountId;
+
+    /*
+    * ������������
+    * */
+    private String accountName;
+
+
+    /*
+    * ������������
+    * */
+    private List<String> roles;
+
+    /*
+    * ������������
+    * */
+    private List<ManageMenu> menus;
+
+}
diff --git a/screen-manage/src/main/java/com/moral/api/pojo/dto/LoginDTO.java b/screen-manage/src/main/java/com/moral/api/pojo/dto/LoginDTO.java
new file mode 100644
index 0000000..cdc2dab
--- /dev/null
+++ b/screen-manage/src/main/java/com/moral/api/pojo/dto/LoginDTO.java
@@ -0,0 +1,61 @@
+package com.moral.api.pojo.dto;
+
+import com.fasterxml.jackson.annotation.JsonInclude;
+import lombok.Data;
+
+/**
+ * @ClassName LoginDTO
+ * @Description TODO
+ * @Author ���������
+ * @Date 2021/3/12 14:49
+ * @Version TODO
+ **/
+@Data
+@JsonInclude(JsonInclude.Include.NON_EMPTY)
+public class LoginDTO {
+
+    /*
+    * ������������
+    * */
+    public static final String SUCCESS = "0";
+
+    /*
+    * ���������������
+    * */
+    public static final String NOT_EXIST = "-1";
+
+    /*
+    * ������������������
+    * */
+    public static final String IS_DELETE = "-2";
+
+   /*
+   * ������������
+   * */
+   public static final String PASSWORD_ERROR = "-3";
+
+   /*
+   * ������������������
+   * */
+   public static final String ROLE_EMPTY = "-4";
+
+   /*
+   * ������������������
+   * */
+   public static final String MENU_EMPTY = "-5";
+
+   /*
+   * ���������
+   * */
+    private String code;
+
+    /*
+    *������token
+    * */
+    private String token;
+
+    /*
+    * ������������������
+    * */
+    private AccountInfoDTO accountInfo;
+}
diff --git a/screen-manage/src/main/java/com/moral/api/service/ManageAccountService.java b/screen-manage/src/main/java/com/moral/api/service/ManageAccountService.java
index 875edd7..c65e13c 100644
--- a/screen-manage/src/main/java/com/moral/api/service/ManageAccountService.java
+++ b/screen-manage/src/main/java/com/moral/api/service/ManageAccountService.java
@@ -2,6 +2,7 @@
 
 import com.moral.api.entity.ManageAccount;
 import com.baomidou.mybatisplus.extension.service.IService;
+import com.moral.api.pojo.dto.LoginDTO;
 
 import java.util.Map;
 
@@ -15,20 +16,20 @@
  */
 public interface ManageAccountService extends IService<ManageAccount> {
     /**
-    * @Description: ������������
-            * @Param: [paramters]
+    * @Description: ������
+            * @Param: [AESAccount, AESPassword]
             * @return: java.util.Map<java.lang.String,java.lang.Object>
             * @Author: ���������
-            * @Date: 2021/3/11
+            * @Date: 2021/3/12
             */
-    Map<String, Object> login(Map<String, Object> paramters);
+    LoginDTO login(String AESAccount, String AESPassword);
 
-    /**
-    * @Description: ������������
-            * @Param: [paramters]
-            * @return: java.util.Map<java.lang.String,java.lang.Object>
-            * @Author: ���������
-            * @Date: 2021/3/11
-            */
-    Map<String, Object> logout(Map<String, Object> paramters);
+   /**
+   * @Description: ������
+           * @Param: [accountId, token]
+           * @return: java.util.Map<java.lang.String,java.lang.Object>
+           * @Author: ���������
+           * @Date: 2021/3/12
+           */
+   boolean logout(String accountId,String token);
 }
diff --git a/screen-manage/src/main/java/com/moral/api/service/impl/ManageAccountServiceImpl.java b/screen-manage/src/main/java/com/moral/api/service/impl/ManageAccountServiceImpl.java
index 53aee77..07f3022 100644
--- a/screen-manage/src/main/java/com/moral/api/service/impl/ManageAccountServiceImpl.java
+++ b/screen-manage/src/main/java/com/moral/api/service/impl/ManageAccountServiceImpl.java
@@ -7,6 +7,8 @@
 import com.moral.api.mapper.ManageAccountMapper;
 import com.moral.api.mapper.ManageMenuMapper;
 import com.moral.api.mapper.ManageRoleMapper;
+import com.moral.api.pojo.dto.AccountInfoDTO;
+import com.moral.api.pojo.dto.LoginDTO;
 import com.moral.api.service.ManageAccountService;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.moral.util.AESUtils;
@@ -41,86 +43,99 @@
 
     /**
      * @Description: ������
-     * @Param: [paramters]
+     * @Param: [parameters]
      * @return: java.util.Map<java.lang.String   ,   java.lang.Object>
      * @Author: ���������
      * @Date: 2021/3/11
      */
     @Override
-    public Map<String, Object> login(Map<String, Object> paramters) {
-        Map<String, Object> result = new HashMap<>();
-        //������������
-        String cyrpAccount = (String) paramters.get("account");
-        String cyrpPassword = (String) paramters.get("password");
+    public LoginDTO login(String AESAccount,String AESPassword) {
+        LoginDTO loginDTO = new LoginDTO();
         //������
-        String account = AESUtils.decrypt(cyrpAccount, AESKey);
-        String password = AESUtils.decrypt(cyrpPassword, AESKey);
+        String account = AESUtils.decrypt(AESAccount, AESKey);
+        String password = AESUtils.decrypt(AESPassword, AESKey);
         //������������������
         QueryWrapper<ManageAccount> wrapper = new QueryWrapper<>();
         wrapper.eq("account", account);
         ManageAccount manageAccount = accountMapper.selectOne(wrapper);
         if (ObjectUtils.isEmpty(manageAccount)) {
-            result.put("accountId", -1);
-            result.put("msg", "���������������");
-            return result;
+            loginDTO.setCode(LoginDTO.NOT_EXIST);
+            return loginDTO;
         }
         //������������������������
         if (manageAccount.getIsDelete().equals("1")) {
-            result.put("accountId", -2);
-            result.put("msg", "������������������");
-            return result;
+            loginDTO.setCode(LoginDTO.IS_DELETE);
+            return loginDTO;
         }
         //������������
         if (!MD5Utils.saltMD5Verify(password, manageAccount.getPassword())) {
-            result.put("accountId", -3);
-            result.put("msg", "���������������������");
-            return result;
+            loginDTO.setCode(LoginDTO.PASSWORD_ERROR);
+            return loginDTO;
         }
+
         //������������
         List<ManageRole> roles = roleMapper.getManageRoleByAccountId(manageAccount.getId());
-        if (ObjectUtils.isEmpty(roles)) {
-            result.put("accountId", -4);
-            result.put("msg", "������������������������");
-            return result;
+        if (ObjectUtils.isEmpty(roles)) {//������������������������������
+            loginDTO.setCode(LoginDTO.ROLE_EMPTY);
+            return loginDTO;
         }
         //������������
         List<ManageMenu> menus = manageMenuMapper.getParentChildrenMenusByRoles(roles);
-        if (ObjectUtils.isEmpty(menus)) {
-            result.put("accountId", -5);
-            result.put("msg", "������������������������");
-            return result;
+        if (ObjectUtils.isEmpty(menus)) {//������������������������������
+            loginDTO.setCode(LoginDTO.MENU_EMPTY);
+            return loginDTO;
         }
 
-        //������������token,���������������������������������
-        Map<String, Object> userInfo = new HashMap<>();//���������������������������������������
-        userInfo.put("accountId", manageAccount.getId());//������Id
-        userInfo.put("userName", manageAccount.getUserName());//������������
-        userInfo.put("roles", roles);//������������
-        userInfo.put("menus", menus);//������������
-        String token = TokenUtils.getToken(String.valueOf(manageAccount.getId()), userInfo);
+
+        //������������������
+        AccountInfoDTO accountInfoDTO = new AccountInfoDTO();
+        /*������������������������*/
+        ArrayList<String> roleNames = new ArrayList<>();
+        roles.forEach(role->roleNames.add(role.getName()));
+        /*������menu������������*/
+        for (ManageMenu menu : menus) {
+            menu.setCreateTime(null);
+            menu.setIsDelete(null);
+            menu.setUpdateTime(null);
+            menu.setParentId(null);
+            List<ManageMenu> children = menu.getChildren();
+            for (ManageMenu child : children) {
+                child.setCreateTime(null);
+                child.setIsDelete(null);
+                child.setUpdateTime(null);
+                child.setParentId(null);
+            }
+        }
+        accountInfoDTO.setAccountId(String.valueOf(manageAccount.getId()));
+        accountInfoDTO.setAccountName(manageAccount.getUserName());
+        accountInfoDTO.setMenus(menus);
+        accountInfoDTO.setRoles(roleNames);
 
 
-        //������������������
-        result.put("accountId", manageAccount.getId());//������Id
-        result.put("userName", manageAccount.getUserName());//������������
-        result.put("roles", roles);//������������
-        result.put("menus", menus);//������������
-        result.put("token", token);
-        return result;
+        //������token ������������������
+        String token = TokenUtils.getToken(String.valueOf(manageAccount.getId()), accountInfoDTO);
+
+        //������������������
+        loginDTO.setCode(LoginDTO.SUCCESS);
+        loginDTO.setAccountInfo(accountInfoDTO);
+        loginDTO.setToken(token);
+
+        return loginDTO;
     }
 
     /**
      * @Description: ������
-     * @Param: [paramters]
+     * @Param: [parameters]
      * @return: java.util.Map<java.lang.String   ,   java.lang.Object>
      * @Author: ���������
      * @Date: 2021/3/11
      */
     @Override
-    public Map<String, Object> logout(Map<String, Object> paramters) {
-
-        return null;
+    public boolean logout(String accountId,String token) {
+        TokenUtils.destoryToken(accountId,token);
+        return true;
     }
 
 
+
 }

--
Gitblit v1.8.0