diff --git a/lib/EmergencyService/zdxtEmergencyAuthService/src/main/java/com/zdxt/auth/framework/config/ShiroConfig.java b/lib/EmergencyService/zdxtEmergencyAuthService/src/main/java/com/zdxt/auth/framework/config/ShiroConfig.java index 63e3bd50..43120cf7 100644 --- a/lib/EmergencyService/zdxtEmergencyAuthService/src/main/java/com/zdxt/auth/framework/config/ShiroConfig.java +++ b/lib/EmergencyService/zdxtEmergencyAuthService/src/main/java/com/zdxt/auth/framework/config/ShiroConfig.java @@ -302,6 +302,7 @@ public class ShiroConfig { filterChainDefinitionMap.put("/project/safety/css/**", "anon"); filterChainDefinitionMap.put("/project/safety/js/**", "anon"); filterChainDefinitionMap.put("/project/safety/img/**", "anon"); + filterChainDefinitionMap.put("/thirdLogin/**", "anon"); // 系统权限列表 // filterChainDefinitionMap.putAll(SpringUtils.getBean(IMenuService.class).selectPermsAll()); diff --git a/lib/EmergencyService/zdxtEmergencyBootStart/src/main/resources/application.yml b/lib/EmergencyService/zdxtEmergencyBootStart/src/main/resources/application.yml index c4f599dd..abdd38e4 100644 --- a/lib/EmergencyService/zdxtEmergencyBootStart/src/main/resources/application.yml +++ b/lib/EmergencyService/zdxtEmergencyBootStart/src/main/resources/application.yml @@ -210,6 +210,7 @@ qr_code_url: C:\ruoyi\uploadPath\zfjd_logo.png #深i企对接密钥 测试环境 siq: + siqUrl: http://egbpub.siqhz.com/egb/api/thirdauth code: zfjdm secretKey: eWIzY3BMRVNEQXhvUUlXMA== diff --git a/lib/EmergencyService/zdxtLawEnforcementCodeService/src/main/java/com/zdxt/code/controller/TestSIQController.java b/lib/EmergencyService/zdxtLawEnforcementCodeService/src/main/java/com/zdxt/code/controller/TestSIQController.java new file mode 100644 index 00000000..4e7e8182 --- /dev/null +++ b/lib/EmergencyService/zdxtLawEnforcementCodeService/src/main/java/com/zdxt/code/controller/TestSIQController.java @@ -0,0 +1,48 @@ +package com.zdxt.code.controller; + +import cn.hutool.core.util.IdUtil; +import com.zdxt.code.utils.HttpUtil; +import com.zdxt.code.utils.IdCardCryptoUtil; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.ResponseBody; + +import java.util.HashMap; +import java.util.Map; + +@RequestMapping("/siq") +@Controller +public class TestSIQController { + + @Value("${siq.code}") + private String code; + + @Value("${siq.secretKey}") + private String secretKey; + + @GetMapping("/getToken") + @ResponseBody + public void getToken(String userId,String userName){ + Map heardMap = new HashMap<>(); + Map paramsMap = new HashMap<>(); + try { + //加密后的 + System.out.println(secretKey); + String userIdCode = IdCardCryptoUtil.symmetricEncryptIdCard(secretKey, userId); + String userNameCode = IdCardCryptoUtil.symmetricEncryptIdCard(secretKey, userName); + System.out.println(userIdCode); + System.out.println(userNameCode);; + heardMap.put("x-auth-channel", IdUtil.simpleUUID()); + heardMap.put("x-auth-app-code",code); +// paramsMap.put("userId",userIdCode); +// paramsMap.put("userName",userNameCode); + String s = IdCardCryptoUtil.httpSendPost("http://egbpub.siqhz.com/egb/api/thirdauth/pub/auth/token", + userIdCode,userNameCode,code); + System.out.println(s); + } catch (Exception e) { + e.printStackTrace(); + } + } +} diff --git a/lib/EmergencyService/zdxtLawEnforcementCodeService/src/main/java/com/zdxt/code/controller/ThirdLoginController.java b/lib/EmergencyService/zdxtLawEnforcementCodeService/src/main/java/com/zdxt/code/controller/ThirdLoginController.java new file mode 100644 index 00000000..482eda15 --- /dev/null +++ b/lib/EmergencyService/zdxtLawEnforcementCodeService/src/main/java/com/zdxt/code/controller/ThirdLoginController.java @@ -0,0 +1,75 @@ +package com.zdxt.code.controller; + +import com.alibaba.fastjson.JSONObject; +import com.zdxt.code.domain.SiqLogin; +import com.zdxt.code.service.ThirdLoginService; +import com.zdxt.code.utils.HttpUtil; +import com.zdxt.code.utils.IdCardCryptoUtil; +import com.zdxt.common.ZDResponse; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.ResponseBody; + +import java.util.HashMap; +import java.util.Map; + +/** + * 第三方登录控制层 + */ +@Slf4j +@Controller +@RequestMapping("/thirdLogin") +public class ThirdLoginController { + + + @Value("${siq.code}") + private String code; + + @Value("${siq.secretKey}") + private String secretKey; + + @Value("${siq.siqUrl}") + private String siqUrl; + + @Autowired + private ThirdLoginService thirdLoginService; + + /** + * 深i企用户登录 + * @param siqLogin + */ + @PostMapping("/siqLogin") + @ResponseBody + public ZDResponse siqLogin(@RequestBody SiqLogin siqLogin){ + //敏感信息加密 + String userIdCode = IdCardCryptoUtil.symmetricEncryptIdCard(secretKey, siqLogin.getUserId()); + String userNameCode = IdCardCryptoUtil.symmetricEncryptIdCard(secretKey, siqLogin.getUserName()); + + //获取登录的token + String token = IdCardCryptoUtil.httpSendPost(siqUrl + "/pub/auth/token", userIdCode, userNameCode, code); + Map params = new HashMap<>(); + log.info("获取用户登录令牌:{}",token); + String secret = IdCardCryptoUtil.symmetricEncryptIdCard(secretKey, token); + params.put("accessKeySign",secret); + params.put("appCode",code); + String userInfo = null; + try { + userInfo = HttpUtil.HttpSendPost(siqUrl + "/pub/auth/getUserInfo", params, null, null); + } catch (Exception e) { + e.printStackTrace(); + } + JSONObject jsonObject = JSONObject.parseObject(userInfo); + log.info("用户信息:{}",jsonObject.toJSONString()); + //添加深i企用户 + thirdLoginService.addSiqUser(jsonObject); + //添加深i企用户关联企业信息 + thirdLoginService.addSiqUserCompany(jsonObject); + + return thirdLoginService.siqLogin(jsonObject); + } +} diff --git a/lib/EmergencyService/zdxtLawEnforcementCodeService/src/main/java/com/zdxt/code/domain/SiqLogin.java b/lib/EmergencyService/zdxtLawEnforcementCodeService/src/main/java/com/zdxt/code/domain/SiqLogin.java new file mode 100644 index 00000000..46b70ddc --- /dev/null +++ b/lib/EmergencyService/zdxtLawEnforcementCodeService/src/main/java/com/zdxt/code/domain/SiqLogin.java @@ -0,0 +1,30 @@ +package com.zdxt.code.domain; + +public class SiqLogin { + + /** + * 用户ID + */ + private String userId; + + /** + * 用户姓名 + */ + private String userName; + + public String getUserId() { + return userId; + } + + public void setUserId(String userId) { + this.userId = userId; + } + + public String getUserName() { + return userName; + } + + public void setUserName(String userName) { + this.userName = userName; + } +} diff --git a/lib/EmergencyService/zdxtLawEnforcementCodeService/src/main/java/com/zdxt/code/service/ThirdLoginService.java b/lib/EmergencyService/zdxtLawEnforcementCodeService/src/main/java/com/zdxt/code/service/ThirdLoginService.java new file mode 100644 index 00000000..347a39ba --- /dev/null +++ b/lib/EmergencyService/zdxtLawEnforcementCodeService/src/main/java/com/zdxt/code/service/ThirdLoginService.java @@ -0,0 +1,31 @@ +package com.zdxt.code.service; + +import com.alibaba.fastjson.JSONObject; +import com.zdxt.common.ZDResponse; + +/** + * 第三方登录业务层 + */ +public interface ThirdLoginService { + + /** + * 深i企登录 + */ + ZDResponse siqLogin(JSONObject jsonObject); + + /** + * 添加深i企用户 + * @param jsonObject + * @return + */ + Boolean addSiqUser(JSONObject jsonObject); + + /** + * 添加深i企 + * @param jsonObject + * @return + */ + Boolean addSiqUserCompany(JSONObject jsonObject); + + void siqTestLogin(String userId,String userName); +} diff --git a/lib/EmergencyService/zdxtLawEnforcementCodeService/src/main/java/com/zdxt/code/service/impl/ThirdLoginServiceImpl.java b/lib/EmergencyService/zdxtLawEnforcementCodeService/src/main/java/com/zdxt/code/service/impl/ThirdLoginServiceImpl.java new file mode 100644 index 00000000..d65564c4 --- /dev/null +++ b/lib/EmergencyService/zdxtLawEnforcementCodeService/src/main/java/com/zdxt/code/service/impl/ThirdLoginServiceImpl.java @@ -0,0 +1,136 @@ +package com.zdxt.code.service.impl; + +import com.alibaba.fastjson.JSONObject; +import com.zdxt.auth.dto.UserBean; +import com.zdxt.auth.feign.UserApi; +import com.zdxt.code.domain.EnterpriseInformation; +import com.zdxt.code.service.IEnforcementRegistrationService; +import com.zdxt.code.service.IEnterpriseInformationService; +import com.zdxt.code.service.ThirdLoginService; +import com.zdxt.code.utils.HttpUtil; +import com.zdxt.code.utils.IdCardCryptoUtil; +import com.zdxt.common.ZDResponse; +import com.zdxt.common.util.DateUtils; +import com.zdxt.common.util.UserConstants; +import com.zdxt.domain.auth.User; +import lombok.extern.slf4j.Slf4j; +import org.apache.shiro.SecurityUtils; +import org.apache.shiro.authc.UsernamePasswordToken; +import org.apache.shiro.subject.Subject; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.stereotype.Service; + +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +@Slf4j +@Service +public class ThirdLoginServiceImpl implements ThirdLoginService { + + + @Value("${siq.code}") + private String code; + + @Value("${siq.secretKey}") + private String secretKey; + + @Value("${siq.siqUrl}") + private String siqUrl; + + @Autowired + private UserApi userApi; + + @Autowired + private IEnterpriseInformationService enterpriseInformationService; + + @Override + public ZDResponse siqLogin(JSONObject jsonObject) { + + try { + //查询登录用户 + UserBean user = userApi.getUserByUserLoginName(jsonObject.getString("account")); + //本系统令牌 + UsernamePasswordToken sysToken = new UsernamePasswordToken(user.getLoginName(), user.getPassword(), false); + Subject subject = SecurityUtils.getSubject(); + subject.login(sysToken); + return ZDResponse.success("登录成功",user); + } catch (Exception e) { + e.printStackTrace(); + } + return null; + } + + @Override + public Boolean addSiqUser(JSONObject jsonObject) { + if(UserConstants.USER_NAME_NOT_UNIQUE.equals(userApi.checkLoginNameUnique(jsonObject.getString("account")))){ + //新增用户信息 + UserBean userBean = new UserBean(); + //设置默认用户权限,权限为默认值 + userBean.setRoleId(178L); + //用户姓名 + userBean.setUserName(jsonObject.getString("contactName")); + //登录账号 + userBean.setLoginName(jsonObject.getString("account")); + //手机号码 + userBean.setPhonenumber(IdCardCryptoUtil.symmetricDecryptIdCard(secretKey,jsonObject.getString("account"))); + //设置为默认密码 + userBean.setPassword("123456"); + userBean.setCreateTime(DateUtils.getNowDate()); +// userBean.setUserId(Long.valueOf(userId)); + //部门ID设置为默认值 + userBean.setDeptId(405L); + + return userApi.insertUser(userBean) > 0 ? Boolean.TRUE : Boolean.FALSE; + } + return true; + } + + @Override + public Boolean addSiqUserCompany(JSONObject jsonObject) { + //判断当前登录人是否已经在本系统中登记了企业信息 + EnterpriseInformation enterpriseInformation1 = new EnterpriseInformation(); + enterpriseInformation1.setEnterpriseNumber(jsonObject.getString("corpCid")); + List enterpriseInformations = enterpriseInformationService.selectEnterpriseInformationList(enterpriseInformation1); + if(enterpriseInformations.size() == 0){ + //保存企业信息 + EnterpriseInformation enterpriseInformation = new EnterpriseInformation(); + //企业统一信用代码 + enterpriseInformation.setEnterpriseNumber(jsonObject.getString("corpCid")); + //企业名称 + enterpriseInformation.setEnterpriseName(jsonObject.getString("corpName")); + //经营范围 + enterpriseInformation.setBusinessScope(jsonObject.getString("businessScope")); + //注册地址 + enterpriseInformation.setEnterpriseAddress(jsonObject.getString("regLocation")); + //注册资金 + enterpriseInformation.setRegisteredCapital(jsonObject.getString("regCapital")); + //企业联系人电话 + enterpriseInformation.setEnterpriseTel(jsonObject.getString("contactTel")); + //企业法人 + enterpriseInformation.setLegalPerson(jsonObject.getString("legalPersonName")); + //营业时间 + //开始时间 + String termStart = jsonObject.getString("termStart"); + //结束时间 返回为空表示为永久 + String termEnd = jsonObject.getString("termEnd"); + //营业时间 + enterpriseInformation.setOperatingTerm(termStart+ "-" +termEnd); + + return enterpriseInformationService.insertEnterpriseInformation(enterpriseInformation) > 0 + ? Boolean.TRUE : Boolean.FALSE; + } + return true; + } + + @Override + public void siqTestLogin(String userId, String userName) { + //查询登录用户 + UserBean user = userApi.getUserByUserLoginName(userName); + //本系统令牌 + UsernamePasswordToken sysToken = new UsernamePasswordToken(user.getLoginName(), "123456", false); + Subject subject = SecurityUtils.getSubject(); + subject.login(sysToken); + } +} diff --git a/lib/EmergencyService/zdxtLawEnforcementCodeService/src/main/java/com/zdxt/code/utils/IdCardCryptoUtil.java b/lib/EmergencyService/zdxtLawEnforcementCodeService/src/main/java/com/zdxt/code/utils/IdCardCryptoUtil.java index e685a35a..3859bcdf 100644 --- a/lib/EmergencyService/zdxtLawEnforcementCodeService/src/main/java/com/zdxt/code/utils/IdCardCryptoUtil.java +++ b/lib/EmergencyService/zdxtLawEnforcementCodeService/src/main/java/com/zdxt/code/utils/IdCardCryptoUtil.java @@ -41,15 +41,17 @@ public class IdCardCryptoUtil { String userIdCode = IdCardCryptoUtil.symmetricEncryptIdCard("eWIzY3BMRVNEQXhvUUlXMA==", "1608434855568265217"); String userNameCode = IdCardCryptoUtil.symmetricEncryptIdCard("eWIzY3BMRVNEQXhvUUlXMA==", "汤家荣"); - String secret = IdCardCryptoUtil.symmetricEncryptIdCard("eWIzY3BMRVNEQXhvUUlXMA==", "e0fadbf2-3f7a-4a15-891b-8168711ccae8"); + String secret = IdCardCryptoUtil.symmetricEncryptIdCard("eWIzY3BMRVNEQXhvUUlXMA==", "62cb4638-250a-40eb-9f01-0df9f95834a4"); + String phone = IdCardCryptoUtil.symmetricDecryptIdCard("eWIzY3BMRVNEQXhvUUlXMA==", "0PPEx9wD2DLva7zpWJt8MQ=="); - System.out.println(userIdCode); +// System.out.println(userIdCode); + System.out.println(phone); - System.out.println(userNameCode); +// System.out.println(userNameCode); System.out.println(secret); - Map heardMap = new HashMap<>(); - heardMap.put("x-auth-channel", IdUtil.simpleUUID()); - heardMap.put("x-auth-app-code","zfjdm"); +// Map heardMap = new HashMap<>(); +// heardMap.put("x-auth-channel", IdUtil.simpleUUID()); +// heardMap.put("x-auth-app-code","zfjdm"); // String s = IdCardCryptoUtil.httpSendPost("http://egbpub.siqhz.com/egb/api/thirdauth/pub/auth/token?userId=" +userIdCode+ "&userName="+ userNameCode, // "userId= " + userIdCode + "&userName=" + userNameCode, heardMap); // System.out.println(s); @@ -106,50 +108,10 @@ public class IdCardCryptoUtil { return SecureUtil.aes(SecureUtil.decode(key)).decryptStr(content); } - public static String httpSendPost(String url,String params,Map heardMap){ - try { - URL uri = new URL(url); - HttpURLConnection connection = (HttpURLConnection) uri.openConnection(); - connection.setRequestMethod("POST"); - connection.setRequestProperty("Content-Type","application/x-www-form-urlencoded"); - for (Map.Entry entry : heardMap.entrySet()) { - // 对value进行相应的操作 - connection.setRequestProperty(entry.getKey(), String.valueOf(entry.getValue())); - } -// connection.setRequestProperty("x-auth-channel",IdUtil.simpleUUID()); -// connection.setRequestProperty("x-auth-app-code","zfjdm"); - connection.setDoOutput(true); - DataOutputStream out = new DataOutputStream(connection.getOutputStream()); - out.writeBytes(params); - out.flush(); - out.close(); - connection.connect(); - int responseCode = connection.getResponseCode(); - if(responseCode == HttpURLConnection.HTTP_OK){ - BufferedReader in = new BufferedReader(new InputStreamReader(connection.getInputStream())); - String inputLine; - StringBuffer response = new StringBuffer(); - - while ((inputLine = in.readLine()) != null){ - response.append(inputLine); - } - in.close(); - System.out.println(response.toString()); - System.out.println("请求成功"); - }else{ - System.out.println("请求失败"); - } - } catch (Exception e) { - e.printStackTrace(); - } - - return ""; - } - - public static String httpSendPost(String url,String userId,String userName){ + public static String httpSendPost(String url,String userId,String userName,String appCode){ HttpRequest request = HttpRequest.post(url) .header("x-auth-channel",IdUtil.simpleUUID()) - .header("x-auth-app-code","zfjdm") + .header("x-auth-app-code",appCode) .form("userId", userId) .form("userName", userName); request.contentType("application/x-www-form-urlencoded");