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