diff --git a/base-service/src/main/java/com/hzya/frame/sysnew/login/ILoginService.java b/base-service/src/main/java/com/hzya/frame/sysnew/login/ILoginService.java index 90f9bfa0..69b63c81 100644 --- a/base-service/src/main/java/com/hzya/frame/sysnew/login/ILoginService.java +++ b/base-service/src/main/java/com/hzya/frame/sysnew/login/ILoginService.java @@ -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) ; } diff --git a/base-service/src/main/java/com/hzya/frame/sysnew/login/impl/LoginServiceImpl.java b/base-service/src/main/java/com/hzya/frame/sysnew/login/impl/LoginServiceImpl.java index 3b0bf5be..f0db3c9e 100644 --- a/base-service/src/main/java/com/hzya/frame/sysnew/login/impl/LoginServiceImpl.java +++ b/base-service/src/main/java/com/hzya/frame/sysnew/login/impl/LoginServiceImpl.java @@ -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 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 userRoleMap = (List) 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 getData(String key, JSONObject jsonObject, Class clz) { if (checkStr(jsonObject.getString(key))) { return jsonObject.getJSONObject(key).toJavaObject(clz); diff --git a/base-webapp/src/main/java/com/hzya/frame/webapp/entrance/service/impl/EntranceServiceImpl.java b/base-webapp/src/main/java/com/hzya/frame/webapp/entrance/service/impl/EntranceServiceImpl.java index 9dec83c7..ea5f4c44 100644 --- a/base-webapp/src/main/java/com/hzya/frame/webapp/entrance/service/impl/EntranceServiceImpl.java +++ b/base-webapp/src/main/java/com/hzya/frame/webapp/entrance/service/impl/EntranceServiceImpl.java @@ -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(); //校验当前登陆人是否有权限