编写移动端钉钉登录
This commit is contained in:
parent
f0db5772a2
commit
44fb1eaca1
|
@ -15,4 +15,13 @@ public interface ILoginService {
|
|||
* @throws Exception
|
||||
*/
|
||||
JsonResultEntity doLogin(JSONObject jsonObject)throws Exception;
|
||||
/****
|
||||
* 移动端登录
|
||||
* @content:
|
||||
* @author 👻👻👻👻👻👻👻👻 gjh
|
||||
* @date 2024-09-14 10:51
|
||||
* @param
|
||||
* @return com.hzya.frame.web.entity.JsonResultEntity
|
||||
**/
|
||||
JsonResultEntity appDoLogin(JSONObject jsonObject) ;
|
||||
}
|
||||
|
|
|
@ -2,7 +2,18 @@ package com.hzya.frame.sysnew.login.impl;
|
|||
|
||||
import cn.dev33.satoken.stp.SaTokenInfo;
|
||||
import cn.dev33.satoken.stp.StpUtil;
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import cn.hutool.http.HttpRequest;
|
||||
import cn.hutool.http.HttpUtil;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import com.dingtalk.api.DefaultDingTalkClient;
|
||||
import com.dingtalk.api.DingTalkClient;
|
||||
import com.dingtalk.api.request.OapiGettokenRequest;
|
||||
import com.dingtalk.api.request.OapiV2UserGetRequest;
|
||||
import com.dingtalk.api.request.OapiV2UserGetuserinfoRequest;
|
||||
import com.dingtalk.api.response.OapiGettokenResponse;
|
||||
import com.dingtalk.api.response.OapiV2UserGetResponse;
|
||||
import com.dingtalk.api.response.OapiV2UserGetuserinfoResponse;
|
||||
import com.hzya.frame.sysnew.application.dao.ISysApplicationDao;
|
||||
import com.hzya.frame.sysnew.application.entity.SysApplicationEntity;
|
||||
import com.hzya.frame.sysnew.login.ILoginService;
|
||||
|
@ -21,11 +32,15 @@ import com.hzya.frame.sysnew.userRoles.entity.SysUserRolesEntity;
|
|||
import com.hzya.frame.util.AESUtil;
|
||||
import com.hzya.frame.web.entity.BaseResult;
|
||||
import com.hzya.frame.web.entity.JsonResultEntity;
|
||||
import com.hzya.frame.web.exception.BaseSystemException;
|
||||
import org.checkerframework.checker.units.qual.C;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
|
||||
/**
|
||||
|
@ -35,6 +50,7 @@ import java.util.List;
|
|||
**/
|
||||
@Service(value = "loginService")
|
||||
public class LoginServiceImpl implements ILoginService {
|
||||
private final Logger logger = LoggerFactory.getLogger(LoginServiceImpl.class);
|
||||
|
||||
@Resource
|
||||
private ISysUserDao sysUserDao;
|
||||
|
@ -131,6 +147,116 @@ public class LoginServiceImpl implements ILoginService {
|
|||
return BaseResult.getSuccessMessageEntity("登录成功", res);
|
||||
}
|
||||
|
||||
/****
|
||||
* 移动端登录地址
|
||||
* @content:
|
||||
* @author 👻👻👻👻👻👻👻👻 gjh
|
||||
* @date 2024-09-14 11:14
|
||||
* @param
|
||||
* @return com.hzya.frame.web.entity.JsonResultEntity
|
||||
**/
|
||||
@Override
|
||||
public JsonResultEntity appDoLogin(JSONObject jsonObject) {
|
||||
//移动端类型
|
||||
JSONObject entity = getData("jsonStr", jsonObject, JSONObject.class);
|
||||
//DD,weChat
|
||||
String appType = entity.getString("appType");
|
||||
String appId = entity.getString("appId");
|
||||
String apiCode = entity.getString("apiCode");
|
||||
String userApiCode = entity.getString("userApiCode");
|
||||
SysUserEntity userEntity = new SysUserEntity();
|
||||
switch (appType){
|
||||
case "DD":
|
||||
String code = entity.getString("code");//授权码
|
||||
String requestType = entity.getString("UserAgent");// pc端还是移动端
|
||||
JSONObject bodyParams = new JSONObject();
|
||||
bodyParams.put("code",code);
|
||||
String result = HttpRequest.post("http://127.0.0.1:9999/kangarooDataCenterV3/entranceController/externalCallInterface").
|
||||
header("appId",appId).
|
||||
header("apiCode",userApiCode).
|
||||
header("publicKey","ZJYAWb7lhAUTYqekPkU+uHJv1/ObJxb7dT7sD8HPRDGAgyhCe7eDIk+3zDUT+v578prj").
|
||||
header("secretKey","fviZnLBsQUAGF8w8FSOdJi7XlIm/XAZclMxRagDLfTyJFlvnIBF3w66Hrpfzs8cYj3JzOP8MtA1LSGvL+2BWG8c/o7DKi92S4mr3zcGearA=").
|
||||
body(bodyParams.toJSONString()).
|
||||
execute().
|
||||
body();
|
||||
JSONObject resultJson = JSONObject.parseObject(result);
|
||||
boolean flag = resultJson.getBoolean("flag");
|
||||
if(!flag){
|
||||
throw new BaseSystemException("请求错误:"+resultJson.getString("msg"));
|
||||
}
|
||||
String userid = resultJson.getString("userid");
|
||||
if(StrUtil.isEmpty(userid)){
|
||||
return BaseResult.getFailureMessageEntity("认证失败!当前用户未绑定钉钉","1005");
|
||||
}
|
||||
userEntity.setDdUserId( userid);
|
||||
userEntity = sysUserDao.queryOne(userEntity);
|
||||
if(null == userEntity ){
|
||||
if(StrUtil.isEmpty(userid)){
|
||||
JSONObject object = new JSONObject();
|
||||
object.put("userid",userid);
|
||||
return BaseResult.getFailureMessageEntity("认证失败!当前用户未绑定钉钉","1005",object);
|
||||
}
|
||||
}
|
||||
break;
|
||||
case "weChat":
|
||||
break;
|
||||
default:
|
||||
throw new BaseSystemException("错误的App类型:"+appType+" 支持的app类型有:DD,weChat");
|
||||
|
||||
}
|
||||
//登录
|
||||
StpUtil.login(userEntity.getId());
|
||||
//获取token
|
||||
SaTokenInfo tokenInfo = StpUtil.getTokenInfo();
|
||||
String token = tokenInfo.getTokenValue();
|
||||
//获取公司
|
||||
SysOrganEntity sysOrganEntity = new SysOrganEntity();
|
||||
sysOrganEntity.setUserId(userEntity.getId());
|
||||
List<SysOrganEntity> sysOrganEntities = sysOrganDao.queryUserCompany(sysOrganEntity);
|
||||
//返回值
|
||||
JSONObject res = new JSONObject();
|
||||
res.put("token", token);
|
||||
res.put("userInfo", userEntity);
|
||||
res.put("company", sysOrganEntities);
|
||||
//切换数据源查询
|
||||
|
||||
return BaseResult.getSuccessMessageEntity("登录成功", res);
|
||||
|
||||
//校验当前登陆人是否有权限
|
||||
//boolean flag = false;
|
||||
//SysInterfaceEntity sysInterfaceEntity = (SysInterfaceEntity) interfaceCache.get("6","beanNameloginServiceinterfacNamedoLogin");
|
||||
//if(sysInterfaceEntity == null || sysInterfaceEntity.getId() == null){
|
||||
// return BaseResult.getFailureMessageEntity("用户无访问权限,请联系管理员");
|
||||
//}
|
||||
////查询用户权限
|
||||
//if(!flag){
|
||||
// SysPopedomInterfaceEntity userPopedomInterfaceEntity = (SysPopedomInterfaceEntity) interfaceCache.get("4","userId"+sysUserEntity.getId()+"interfaceId"+sysInterfaceEntity.getId());
|
||||
// if(userPopedomInterfaceEntity != null && userPopedomInterfaceEntity.getId() != null ){
|
||||
// flag = true;
|
||||
// }
|
||||
//}
|
||||
////查询用户角色的权限
|
||||
//if(!flag){
|
||||
// List<SysUserRolesEntity> userRoleMap = (List<SysUserRolesEntity>) interfaceCache.get("3",null);
|
||||
// if(userRoleMap != null && userRoleMap.size() > 0){
|
||||
// for (SysUserRolesEntity sysUserRolesEntity : userRoleMap) {
|
||||
// if(sysUserRolesEntity.getUserId().equals(sysUserEntity.getId())){
|
||||
// SysPopedomInterfaceEntity sysPopedomInterfaceEntity = (SysPopedomInterfaceEntity) interfaceCache.get("5","roleId"+sysUserRolesEntity.getRoleId()+"interfaceId"+sysInterfaceEntity.getId());
|
||||
// if(sysPopedomInterfaceEntity != null && sysPopedomInterfaceEntity.getId() != null ){
|
||||
// flag = true;
|
||||
// break;
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
//}
|
||||
//if(!flag){
|
||||
// return BaseResult.getFailureMessageEntity("用户无访问权限,请联系管理员");
|
||||
//}
|
||||
|
||||
}
|
||||
|
||||
|
||||
protected <T> T getData(String key, JSONObject jsonObject, Class<T> clz) {
|
||||
if (checkStr(jsonObject.getString(key))) {
|
||||
return jsonObject.getJSONObject(key).toJavaObject(clz);
|
||||
|
|
|
@ -78,7 +78,7 @@ public class EntranceServiceImpl implements IEntranceService {
|
|||
if (m.getName().equals(serviceMethod.trim())) {
|
||||
if (m.getName().startsWith("thirdInterface")) {//TODO 后续可能要加强校验规则
|
||||
logger.info("第三方接口,不校验是否登陆");
|
||||
}else if (!"doLogin".equals(m.getName())) {
|
||||
}else if (!"doLogin".equals(m.getName())&& !"appDoLogin".equals(m.getName()) ) {
|
||||
try {
|
||||
StpUtil.checkLogin();
|
||||
//校验当前登陆人是否有权限
|
||||
|
|
Loading…
Reference in New Issue