From 6ccbf217cea2fcf7ac29bb650029e7e375255933 Mon Sep 17 00:00:00 2001 From: Caps <452713115@qq.com> Date: Wed, 8 Apr 2020 15:14:54 +0800 Subject: [PATCH] =?UTF-8?q?=E8=B4=A6=E6=88=B7=E6=9D=83=E9=99=90=E7=AE=A1?= =?UTF-8?q?=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/kiisoo/ic/login/bean/LoginBean.java | 47 +++++ .../ic/login/controller/LoginController.java | 87 ++++++++++ .../com/kiisoo/ic/login/enums/LoginEnum.java | 42 +++++ .../kiisoo/ic/login/service/LoginService.java | 38 +++++ .../login/service/impl/LoginServiceImpl.java | 161 ++++++++++++++++++ 5 files changed, 375 insertions(+) create mode 100644 src/main/java/com/kiisoo/ic/login/bean/LoginBean.java create mode 100644 src/main/java/com/kiisoo/ic/login/controller/LoginController.java create mode 100644 src/main/java/com/kiisoo/ic/login/enums/LoginEnum.java create mode 100644 src/main/java/com/kiisoo/ic/login/service/LoginService.java create mode 100644 src/main/java/com/kiisoo/ic/login/service/impl/LoginServiceImpl.java diff --git a/src/main/java/com/kiisoo/ic/login/bean/LoginBean.java b/src/main/java/com/kiisoo/ic/login/bean/LoginBean.java new file mode 100644 index 0000000..ed674bf --- /dev/null +++ b/src/main/java/com/kiisoo/ic/login/bean/LoginBean.java @@ -0,0 +1,47 @@ +package com.kiisoo.ic.login.bean; + +import lombok.Data; + +import java.util.Map; + +/** + * @author jinchaofan + * @date 2020/2/25 12:51 + * @company kiisoo + * @details 登入bean + */ +@Data +public class LoginBean { + + /** + * 用户名 + */ + private String userName; + + /** + * 账号 + */ + private String login; + + /** + * 角色id + */ + private Long roleId; + + /** + * 角色码 + */ + private String roleCode; + + /** + * 用户id + */ + private Long userId; + + /** + * 登录信息 + */ + private Map loginInfo; + + +} diff --git a/src/main/java/com/kiisoo/ic/login/controller/LoginController.java b/src/main/java/com/kiisoo/ic/login/controller/LoginController.java new file mode 100644 index 0000000..0f6c502 --- /dev/null +++ b/src/main/java/com/kiisoo/ic/login/controller/LoginController.java @@ -0,0 +1,87 @@ +package com.kiisoo.ic.login.controller; + +import com.kiisoo.ic.common.BaseController; +import com.kiisoo.ic.login.bean.LoginBean; +import com.kiisoo.ic.login.enums.LoginEnum; +import com.kiisoo.ic.login.service.LoginService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestMethod; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.ResponseBody; + +import java.util.HashMap; +import java.util.Map; + +/** + * @Description: 用户登入 + * @Author: wangyinjia + * @Date: 2020/2/18 + * @Company: kiisoo + * @Version: 1.0 + */ +@Controller +@RequestMapping("/login") +@Slf4j +public class LoginController extends BaseController { + + /** + * 登录 service + */ + @Autowired + private LoginService loginService; + + /** + * 登录账号 + * @param login 用户名 + * @param password 密码 + * @return 成功/失败 + */ + @RequestMapping(value = "/account",method = RequestMethod.POST) + @ResponseBody + public Map loginAccount(@RequestParam("login")String login, @RequestParam("password")String password, + @RequestParam(value = "isMD5",required = false,defaultValue = "false")Boolean isMD5){ + try{ + Map resultMap = new HashMap<>(); + LoginBean loginBean = loginService.login(login, password,isMD5); + resultMap.put("code", loginBean.getLoginInfo().get("code")); + resultMap.put("results", loginBean); + resultMap.put("success", Boolean.TRUE); + return resultMap; + }catch (Exception e){ + log.error("登录失败", e); + return fail(); + } + } + + /** + * 登录账号 + * @param login 用户名 + * @param password 密码 + * @param qywxUserId 企业微信账号 + * @return 成功/失败 + */ + @RequestMapping(value = "/account/bind",method = RequestMethod.POST) + @ResponseBody + public Map loginAccountBind(@RequestParam("login")String login, @RequestParam("password")String password, + @RequestParam("qywxUserId")String qywxUserId){ + try{ + Map resultMap = new HashMap<>(); + LoginBean loginBean = loginService.login(login, password,false); + resultMap.put("code", loginBean.getLoginInfo().get("code")); + if (LoginEnum.LOGIN_SUCCEED.getCode().equals(loginBean.getLoginInfo().get("code"))){ + loginService.bindQywxUserIdByUserId(loginBean.getUserId(),qywxUserId); + } + resultMap.put("results", loginBean); + resultMap.put("success", Boolean.TRUE); + return resultMap; + }catch (Exception e){ + log.error("登录失败", e); + return fail(); + } + } + + +} diff --git a/src/main/java/com/kiisoo/ic/login/enums/LoginEnum.java b/src/main/java/com/kiisoo/ic/login/enums/LoginEnum.java new file mode 100644 index 0000000..5b844b3 --- /dev/null +++ b/src/main/java/com/kiisoo/ic/login/enums/LoginEnum.java @@ -0,0 +1,42 @@ +package com.kiisoo.ic.login.enums; + +import lombok.Getter; + +/** + * @author jinchaofan + * @date 2020/2/25 12:52 + * @company kiisoo + * @details 登录枚举 + */ +@Getter +public enum LoginEnum { + + LOGIN_SUCCEED("登录成功", "0000"), + + LOGIN_ERROR("登录出错", "0001"), + + LOGIN_LOGIN_NONENTITY("登录账号不存在", "0002"), + + LOGIN_PASSWORD_ERROR("密码不正确,请检查密码", "0003"), + + LOGIN_ROLE_NONENTITY("角色不存在", "0004"), + + LOGIN_USER_NONENTITY("用户不存在", "0005"), + ; + + /** + * 登录信息 + */ + private String loginInfo; + + /** + * 成功码 + */ + private String code; + + + LoginEnum(String loginInfo, String code) { + this.loginInfo = loginInfo; + this.code = code; + } +} diff --git a/src/main/java/com/kiisoo/ic/login/service/LoginService.java b/src/main/java/com/kiisoo/ic/login/service/LoginService.java new file mode 100644 index 0000000..1a7316f --- /dev/null +++ b/src/main/java/com/kiisoo/ic/login/service/LoginService.java @@ -0,0 +1,38 @@ +package com.kiisoo.ic.login.service; + +import com.kiisoo.ic.login.bean.LoginBean; + +import java.util.Map; + +/** + * @author jinchaofan + * @date 2020/2/25 0025 13:00 + * @company kiisoo + * @details 登录 service + */ +public interface LoginService { + + /** + * 登录标识 + * @param login 登录账号 + * @param password 密码 + * @param isMD5 密码是否MD5 + * @return 登录bean + */ + LoginBean login(String login, String password, Boolean isMD5); + + /** + * 绑定企业微信id(账户)到userId + * @param userId 用户id + * @param qywxUserId 企业微信id(账户) + * @return + */ + Boolean bindQywxUserIdByUserId(Long userId, String qywxUserId); + + /** + * 根据企业微信id(账户)找到用户的账号密码 + * @param qywxUserId 企业微信id(账户) + * @return + */ + Map getLoginInfoByQywxUserId(String qywxUserId); +} diff --git a/src/main/java/com/kiisoo/ic/login/service/impl/LoginServiceImpl.java b/src/main/java/com/kiisoo/ic/login/service/impl/LoginServiceImpl.java new file mode 100644 index 0000000..4b7ed2c --- /dev/null +++ b/src/main/java/com/kiisoo/ic/login/service/impl/LoginServiceImpl.java @@ -0,0 +1,161 @@ +package com.kiisoo.ic.login.service.impl; + +import com.kiisoo.ic.common.utils.MD5FileUtil; +import com.kiisoo.ic.login.bean.LoginBean; +import com.kiisoo.ic.login.enums.LoginEnum; +import com.kiisoo.ic.login.service.LoginService; +import com.kiisoo.ic.system.entity.PrivilageAccountDO; +import com.kiisoo.ic.system.entity.PrivilageRoleDO; +import com.kiisoo.ic.system.entity.PrivilageUserDO; +import com.kiisoo.ic.system.enums.AccountEnum; +import com.kiisoo.ic.system.mapper.PrivilageAccountDOMapper; +import com.kiisoo.ic.system.mapper.PrivilageRoleDOMapper; +import com.kiisoo.ic.system.mapper.PrivilageUserDOMapper; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.Date; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +/** + * @author jinchaofan + * @date 2020/2/25 12:57 + * @company kiisoo + * @details 登录 实现 + */ +@Service +public class LoginServiceImpl implements LoginService { + + /** + * 账号 mapper + */ + @Autowired + private PrivilageAccountDOMapper privilageAccountDOMapper; + + /** + * 用户 mapper + */ + @Autowired + private PrivilageUserDOMapper privilageUserDOMapper; + + /** + * 角色 mapper + */ + @Autowired + private PrivilageRoleDOMapper privilageRoleDOMapper; + + + @Override + public LoginBean login(String login, String password, Boolean isMD5) { + LoginBean loginBean = new LoginBean(); + Map loginInfoMap = new HashMap<>(); + Map selectAccountMap = new HashMap<>(); + selectAccountMap.put("login", login); + selectAccountMap.put("type", AccountEnum.ACCOUNT_TYPE_SYSTEM.getType()); + selectAccountMap.put("status", AccountEnum.ACCOUNT_STATUS_NORMAL.getType()); + List privilageAccountDOS = privilageAccountDOMapper.selectByMap(selectAccountMap); + //账号不存在 + if(privilageAccountDOS == null || privilageAccountDOS.size() == 0) { + loginInfoMap.put("code", LoginEnum.LOGIN_LOGIN_NONENTITY.getCode()); + loginBean.setLoginInfo(loginInfoMap); + return loginBean; + } + //账号密码不正确 + if (isMD5){ + selectAccountMap.put("password", password); + }else{ + selectAccountMap.put("password", MD5FileUtil.getMD5String(password)); + } + List privilageAccountDOS1 = privilageAccountDOMapper.selectByMap(selectAccountMap); + if(privilageAccountDOS1 == null || privilageAccountDOS1.size() == 0) { + loginInfoMap.put("code", LoginEnum.LOGIN_PASSWORD_ERROR.getCode()); + loginBean.setLoginInfo(loginInfoMap); + return loginBean; + } + PrivilageAccountDO privilageAccountDO = privilageAccountDOS1.get(0); + //用户不存在 + if(privilageAccountDO.getUserId() == null) { + loginInfoMap.put("code", LoginEnum.LOGIN_USER_NONENTITY.getCode()); + loginBean.setLoginInfo(loginInfoMap); + return loginBean; + } + Map selectUserInfoMap = new HashMap<>(); + selectUserInfoMap.put("id", privilageAccountDO.getUserId()); + List privilageUserDOS = privilageUserDOMapper.selectByMap(selectUserInfoMap); + if(privilageUserDOS == null || privilageUserDOS.size() == 0) { + loginInfoMap.put("code", LoginEnum.LOGIN_USER_NONENTITY.getCode()); + loginBean.setLoginInfo(loginInfoMap); + return loginBean; + } + PrivilageUserDO privilageUserDO = privilageUserDOS.get(0); + Long userId = privilageUserDO.getId(); + //角色不存在 + PrivilageRoleDO privilageRoleDO = privilageRoleDOMapper.selectRoleByUserId(userId); + if(privilageRoleDO == null) { + loginInfoMap.put("code", LoginEnum.LOGIN_ROLE_NONENTITY.getCode()); + loginBean.setLoginInfo(loginInfoMap); + return loginBean; + } + + //成功设置信息 + loginBean.setUserName(privilageUserDO.getName()); + loginBean.setUserId(userId); + loginBean.setRoleId(privilageRoleDO.getId()); + loginBean.setRoleCode(privilageRoleDO.getCode()); + loginBean.setLogin(login); + loginInfoMap.put("code", LoginEnum.LOGIN_SUCCEED.getCode()); + loginBean.setLoginInfo(loginInfoMap); + return loginBean; + } + + @Override + public Boolean bindQywxUserIdByUserId(Long userId, String qywxUserId) { + Map selectAccountMap = new HashMap<>(); + selectAccountMap.put("login", qywxUserId); + selectAccountMap.put("type", AccountEnum.ACCOUNT_TYPE_QYWX.getType()); + List privilageAccountDOS = privilageAccountDOMapper.selectByMap(selectAccountMap); + //账号不存在 + if(privilageAccountDOS == null || privilageAccountDOS.size() == 0) { + PrivilageAccountDO accountDO = new PrivilageAccountDO(); + accountDO.setLogin(qywxUserId); + accountDO.setType(AccountEnum.ACCOUNT_TYPE_QYWX.getType()); + accountDO.setStatus(AccountEnum.ACCOUNT_STATUS_NORMAL.getType()); + accountDO.setCreatedTime(new Date()); + accountDO.setUpdatedTime(new Date()); + accountDO.setUserId(userId); + int insert = privilageAccountDOMapper.insert(accountDO); + if (insert > 0){ + return true; + } + } + return false; + } + + @Override + public Map getLoginInfoByQywxUserId(String qywxUserId) { + Map selectAccountMap = new HashMap<>(); + selectAccountMap.put("login", qywxUserId); + selectAccountMap.put("type", AccountEnum.ACCOUNT_TYPE_QYWX.getType()); + List privilageAccountDOS = privilageAccountDOMapper.selectByMap(selectAccountMap); + //账号不存在 + if(privilageAccountDOS == null || privilageAccountDOS.size() == 0) { + return null; + }else{ + selectAccountMap = new HashMap<>(); + selectAccountMap.put("user_id", privilageAccountDOS.get(0).getUserId()); + selectAccountMap.put("type", AccountEnum.ACCOUNT_TYPE_SYSTEM.getType()); + List accountDOS = privilageAccountDOMapper.selectByMap(selectAccountMap); + if (accountDOS != null && accountDOS.size() > 0){ + Map result = new HashMap<>(2); + result.put("login",accountDOS.get(0).getLogin()); + result.put("password",accountDOS.get(0).getPassword()); + return result; + }else{ + return null; + } + } + + } +}