账户权限管理
parent
8ee851db04
commit
6ccbf217ce
@ -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<String, Object> loginInfo;
|
||||
|
||||
|
||||
}
|
@ -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<String, Object> loginAccount(@RequestParam("login")String login, @RequestParam("password")String password,
|
||||
@RequestParam(value = "isMD5",required = false,defaultValue = "false")Boolean isMD5){
|
||||
try{
|
||||
Map<String, Object> 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<String, Object> loginAccountBind(@RequestParam("login")String login, @RequestParam("password")String password,
|
||||
@RequestParam("qywxUserId")String qywxUserId){
|
||||
try{
|
||||
Map<String, Object> 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();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
@ -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;
|
||||
}
|
||||
}
|
@ -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<String, String> getLoginInfoByQywxUserId(String qywxUserId);
|
||||
}
|
@ -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<String, Object> loginInfoMap = new HashMap<>();
|
||||
Map<String, Object> selectAccountMap = new HashMap<>();
|
||||
selectAccountMap.put("login", login);
|
||||
selectAccountMap.put("type", AccountEnum.ACCOUNT_TYPE_SYSTEM.getType());
|
||||
selectAccountMap.put("status", AccountEnum.ACCOUNT_STATUS_NORMAL.getType());
|
||||
List<PrivilageAccountDO> 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<PrivilageAccountDO> 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<String, Object> selectUserInfoMap = new HashMap<>();
|
||||
selectUserInfoMap.put("id", privilageAccountDO.getUserId());
|
||||
List<PrivilageUserDO> 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<String, Object> selectAccountMap = new HashMap<>();
|
||||
selectAccountMap.put("login", qywxUserId);
|
||||
selectAccountMap.put("type", AccountEnum.ACCOUNT_TYPE_QYWX.getType());
|
||||
List<PrivilageAccountDO> 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<String, String> getLoginInfoByQywxUserId(String qywxUserId) {
|
||||
Map<String, Object> selectAccountMap = new HashMap<>();
|
||||
selectAccountMap.put("login", qywxUserId);
|
||||
selectAccountMap.put("type", AccountEnum.ACCOUNT_TYPE_QYWX.getType());
|
||||
List<PrivilageAccountDO> 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<PrivilageAccountDO> accountDOS = privilageAccountDOMapper.selectByMap(selectAccountMap);
|
||||
if (accountDOS != null && accountDOS.size() > 0){
|
||||
Map<String, String> result = new HashMap<>(2);
|
||||
result.put("login",accountDOS.get(0).getLogin());
|
||||
result.put("password",accountDOS.get(0).getPassword());
|
||||
return result;
|
||||
}else{
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue