|
|
@ -13,7 +13,10 @@ import com.kiisoo.ic.system.enums.AccountEnum;
|
|
|
|
import com.kiisoo.ic.system.mapper.PrivilageAccountDOMapper;
|
|
|
|
import com.kiisoo.ic.system.mapper.PrivilageAccountDOMapper;
|
|
|
|
import com.kiisoo.ic.system.mapper.PrivilageRoleDOMapper;
|
|
|
|
import com.kiisoo.ic.system.mapper.PrivilageRoleDOMapper;
|
|
|
|
import com.kiisoo.ic.system.mapper.PrivilageUserDOMapper;
|
|
|
|
import com.kiisoo.ic.system.mapper.PrivilageUserDOMapper;
|
|
|
|
|
|
|
|
import com.kiisoo.ic.wx.service.QWMailListManageService;
|
|
|
|
import lombok.extern.slf4j.Slf4j;
|
|
|
|
import lombok.extern.slf4j.Slf4j;
|
|
|
|
|
|
|
|
import me.chanjar.weixin.common.error.WxErrorException;
|
|
|
|
|
|
|
|
import org.apache.commons.lang3.StringUtils;
|
|
|
|
import org.apache.shiro.SecurityUtils;
|
|
|
|
import org.apache.shiro.SecurityUtils;
|
|
|
|
import org.apache.shiro.authc.*;
|
|
|
|
import org.apache.shiro.authc.*;
|
|
|
|
import org.apache.shiro.subject.Subject;
|
|
|
|
import org.apache.shiro.subject.Subject;
|
|
|
@ -25,6 +28,8 @@ import java.util.HashMap;
|
|
|
|
import java.util.List;
|
|
|
|
import java.util.List;
|
|
|
|
import java.util.Map;
|
|
|
|
import java.util.Map;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
import static com.kiisoo.ic.constants.Constants.MINI_ROLE_CODE;
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
/**
|
|
|
|
* @author jinchaofan
|
|
|
|
* @author jinchaofan
|
|
|
|
* @Date 2020/2/25 12:57
|
|
|
|
* @Date 2020/2/25 12:57
|
|
|
@ -50,11 +55,17 @@ public class LoginServiceImpl implements LoginService {
|
|
|
|
*/
|
|
|
|
*/
|
|
|
|
private final PrivilageRoleDOMapper privilageRoleDOMapper;
|
|
|
|
private final PrivilageRoleDOMapper privilageRoleDOMapper;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
|
|
* 企业微信service
|
|
|
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
private final QWMailListManageService qwMailListManageService;
|
|
|
|
|
|
|
|
|
|
|
|
@Autowired
|
|
|
|
@Autowired
|
|
|
|
public LoginServiceImpl(PrivilageAccountDOMapper privilageAccountDOMapper, PrivilageUserDOMapper privilageUserDOMapper, PrivilageRoleDOMapper privilageRoleDOMapper) {
|
|
|
|
public LoginServiceImpl(PrivilageAccountDOMapper privilageAccountDOMapper, PrivilageUserDOMapper privilageUserDOMapper, PrivilageRoleDOMapper privilageRoleDOMapper, QWMailListManageService qwMailListManageService) {
|
|
|
|
this.privilageAccountDOMapper = privilageAccountDOMapper;
|
|
|
|
this.privilageAccountDOMapper = privilageAccountDOMapper;
|
|
|
|
this.privilageUserDOMapper = privilageUserDOMapper;
|
|
|
|
this.privilageUserDOMapper = privilageUserDOMapper;
|
|
|
|
this.privilageRoleDOMapper = privilageRoleDOMapper;
|
|
|
|
this.privilageRoleDOMapper = privilageRoleDOMapper;
|
|
|
|
|
|
|
|
this.qwMailListManageService = qwMailListManageService;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@ -95,6 +106,46 @@ public class LoginServiceImpl implements LoginService {
|
|
|
|
return loginBean;
|
|
|
|
return loginBean;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
|
|
|
public LoginBean miniLogin(String login, String password, Boolean isMD5) {
|
|
|
|
|
|
|
|
UsernamePasswordToken token = new UsernamePasswordToken(login, password, isMD5);
|
|
|
|
|
|
|
|
Subject subject = SecurityUtils.getSubject();
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
try {
|
|
|
|
|
|
|
|
subject.login(token);
|
|
|
|
|
|
|
|
} catch (UnknownAccountException e) {//账号不存在
|
|
|
|
|
|
|
|
return new LoginBean(Constants.ERROR_ACCOUNT_NOT_EXIST);
|
|
|
|
|
|
|
|
} catch (IncorrectCredentialsException e) {//密码错误
|
|
|
|
|
|
|
|
return new LoginBean(Constants.ERROR_PASSWORD);
|
|
|
|
|
|
|
|
}catch (AuthenticationException e) {
|
|
|
|
|
|
|
|
log.info("login exception", e);
|
|
|
|
|
|
|
|
return new LoginBean(Constants.ERROR_SYSTEM);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
LoginBean loginBean = new LoginBean();
|
|
|
|
|
|
|
|
if (subject.isAuthenticated()) {
|
|
|
|
|
|
|
|
PrivilageAccountDO privilageAccountDO = (PrivilageAccountDO) SecurityUtils.getSubject().getPrincipal();
|
|
|
|
|
|
|
|
Map<String, Object> loginInfoMap = new HashMap<>();
|
|
|
|
|
|
|
|
PrivilageUserDO privilageUserDO = privilageUserDOMapper.selectById(privilageAccountDO.getUserId());
|
|
|
|
|
|
|
|
PrivilageRoleDO roleDO = privilageRoleDOMapper.selectRoleName(privilageAccountDO.getUserId());
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//成功设置信息
|
|
|
|
|
|
|
|
loginBean.setUserName(privilageUserDO.getName());
|
|
|
|
|
|
|
|
loginBean.setUserId(privilageAccountDO.getUserId());
|
|
|
|
|
|
|
|
loginBean.setRoleId(privilageAccountDO.getId());
|
|
|
|
|
|
|
|
loginBean.setRoleCode(roleDO.getCode());
|
|
|
|
|
|
|
|
if (StringUtils.isNotBlank(roleDO.getCode()) && !MINI_ROLE_CODE.contains(roleDO.getCode())){
|
|
|
|
|
|
|
|
return new LoginBean(Constants.ERROR_ROLE_NO_PERMISSION);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
loginBean.setLogin(login);
|
|
|
|
|
|
|
|
loginInfoMap.put("code", LoginEnum.LOGIN_SUCCEED.getCode());
|
|
|
|
|
|
|
|
loginBean.setLoginInfo(loginInfoMap);
|
|
|
|
|
|
|
|
}else {
|
|
|
|
|
|
|
|
return new LoginBean(Constants.LOGIN_NO_PERMISSIONS);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
return loginBean;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
@Override
|
|
|
|
public void bindQywxUserIdByUserId(Long userId, String qywxUserId) {
|
|
|
|
public void bindQywxUserIdByUserId(Long userId, String qywxUserId) {
|
|
|
|
Map<String, Object> selectAccountMap = new HashMap<>();
|
|
|
|
Map<String, Object> selectAccountMap = new HashMap<>();
|
|
|
@ -139,4 +190,28 @@ public class LoginServiceImpl implements LoginService {
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
|
|
|
public Map<String, String> qyMiniAutoLogin(String code) throws WxErrorException {
|
|
|
|
|
|
|
|
Map<String, String> result = new HashMap<>(3);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
String cpUserId = qwMailListManageService.getCpUserIdByCode(code);
|
|
|
|
|
|
|
|
result.put("cpUserId",cpUserId);
|
|
|
|
|
|
|
|
Map<String, Object> selectAccountMap = new HashMap<>();
|
|
|
|
|
|
|
|
selectAccountMap.put("login", cpUserId);
|
|
|
|
|
|
|
|
selectAccountMap.put("type", AccountEnum.ACCOUNT_TYPE_QYWX.getType());
|
|
|
|
|
|
|
|
List<PrivilageAccountDO> privilageAccountDOS = privilageAccountDOMapper.selectByMap(selectAccountMap);
|
|
|
|
|
|
|
|
//账号不存在
|
|
|
|
|
|
|
|
if (privilageAccountDOS != null && privilageAccountDOS.size() > 0) {
|
|
|
|
|
|
|
|
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) {
|
|
|
|
|
|
|
|
result.put("login", accountDOS.get(0).getLogin());
|
|
|
|
|
|
|
|
result.put("password", accountDOS.get(0).getPassword());
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
return result;
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|