From 2e89bb115815ca329c6fd54d6d987779791c657c Mon Sep 17 00:00:00 2001 From: value <z1292839451@163.com> Date: 星期四, 30 五月 2024 22:35:37 +0800 Subject: [PATCH] 大改用户和客户 --- user-server/src/main/java/com/yuanchu/mom/util/HeaderToken.java | 206 ++++++++++++++++++++++++++------------------------ 1 files changed, 107 insertions(+), 99 deletions(-) diff --git a/user-server/src/main/java/com/yuanchu/mom/util/HeaderToken.java b/user-server/src/main/java/com/yuanchu/mom/util/HeaderToken.java index 147145f..ca77494 100644 --- a/user-server/src/main/java/com/yuanchu/mom/util/HeaderToken.java +++ b/user-server/src/main/java/com/yuanchu/mom/util/HeaderToken.java @@ -1,24 +1,29 @@ package com.yuanchu.mom.util; +import cn.hutool.core.bean.BeanUtil; import cn.hutool.http.HttpRequest; import cn.hutool.http.HttpResponse; +import cn.hutool.log.Log; import com.alibaba.fastjson.JSON; -import com.fasterxml.jackson.core.JsonProcessingException; -import com.fasterxml.jackson.core.type.TypeReference; +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.fasterxml.jackson.databind.JsonNode; import com.fasterxml.jackson.databind.ObjectMapper; +import com.yuanchu.mom.exception.ErrorException; +import com.yuanchu.mom.mapper.UserMapper; import com.yuanchu.mom.pojo.AuthApi; import com.yuanchu.mom.pojo.Company; -import com.yuanchu.mom.pojo.Post; +import com.yuanchu.mom.pojo.Person; import com.yuanchu.mom.pojo.User; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.redis.core.RedisTemplate; import org.springframework.stereotype.Component; import javax.annotation.Resource; -import java.time.Duration; import java.util.List; +import java.util.Objects; +import java.util.Optional; import java.util.concurrent.TimeUnit; +import java.util.stream.Collectors; @Component public class HeaderToken { @@ -26,129 +31,132 @@ @Resource private RedisTemplate redisTemplate; - public static void main(String[] args) { - HttpRequest request = HttpRequest.post("https://ztt-sso.asuncloud.net/oauth2/token") - .header("Content-Type", "application/x-www-form-urlencoded") - .form("grant_type", "client_credentials") - .form("client_id", "8b2f2c7e-2ab9-4718-8193-c0c636dceba8") - .form("client_secret", "db59b70d28ab1865aafe4008f59d4760"); - - HttpResponse response = request.execute(); - - System.out.println(response.body()); - } + @Resource + private UserMapper userMapper; public String fetchNewAccessToken() { - HttpRequest request = HttpRequest.post("https://ztt-sso.asuncloud.net/oauth2/token") + HttpRequest request = HttpRequest.post(AuthApi.code) .header("Content-Type", "application/x-www-form-urlencoded") .form("grant_type", "client_credentials") - .form("client_id", "8b2f2c7e-2ab9-4718-8193-c0c636dceba8") - .form("client_secret", "db59b70d28ab1865aafe4008f59d4760"); + .form("client_id", AuthApi.appId) + .form("client_secret", AuthApi.appSecret); HttpResponse response = request.execute(); - - System.out.println(response.body()); ObjectMapper objectMapper = new ObjectMapper(); - JsonNode jsonNode = null; + JsonNode jsonNode; try { jsonNode = objectMapper.readTree(response.body()); String accessToken = jsonNode.get("access_token").asText(); - redisTemplate.opsForValue().set("access_token",accessToken); - redisTemplate.expire("access_token", dataTime("access_token"), TimeUnit.SECONDS); - } catch (JsonProcessingException e) { - e.printStackTrace(); + Log.get().info("鑾峰彇浜轰簨绯荤粺token锛�"+accessToken); + redisTemplate.opsForValue().set("access_token",accessToken,jsonNode.get("expires_in").asInt() - 60,TimeUnit.SECONDS); + return accessToken; + } catch (Exception e) { + throw new ErrorException(e.getMessage()); } - return null; } - private String accessToken ; - //鍒ゆ柇鏄惁杩囨湡 + //鍒ゆ柇鏄惁瀛樺湪 public String getAccessToken() { - accessToken=(String) redisTemplate.opsForValue().get("access_token"); - if (accessToken == null) { + String accessToken; + if (!redisTemplate.hasKey("access_token")) { accessToken = fetchNewAccessToken(); + }else{ + accessToken = redisTemplate.opsForValue().get("access_token")+""; } return accessToken; } - //鍒ゆ柇 token 鏄惁宸插瓨鍦� - public String getToken(String token) { - String o = redisTemplate.opsForValue().get(token).toString(); - if (o != null && !o.isEmpty()) { - return o; - }else{ - redisTemplate.expire(token,dataTime("access_token"),TimeUnit.SECONDS); - String tokens = redisTemplate.opsForValue().get(token).toString(); - return tokens; - } - // 鑾峰彇 token -// accessToken = fetchNewAccessToken(); -// return accessToken; - } - - //鑾峰彇token杩囨湡鏃堕棿 - public Long dataTime(String token){ - Long access_token = redisTemplate.getExpire(token); - if(access_token != null && access_token >60) { - redisTemplate.expire(token, access_token - 60 ,TimeUnit.SECONDS); - return access_token - 60; - }//灏辩洿鎺ヨ皟鐢� - return null; - } - - //璋冪敤 - public List<Company> companyUrl() { + public List<Company> companyUrl() { String accessToken = getAccessToken(); - String getToken= getToken(accessToken); - String apiUrl =AuthApi.companies; // 鏇挎崲涓哄疄闄呯殑API绔偣URL - HttpRequest request = HttpRequest.get(apiUrl) + HttpRequest request = HttpRequest.get(AuthApi.companies) .header("Authorization", "Bearer " + accessToken); - HttpResponse response = request.execute(); - ObjectMapper objectMapper = new ObjectMapper(); - String body = response.body(); - List<Company> companies = null; + List<Company> companies; try { - companies = objectMapper.readValue(body, new TypeReference<List<Company>>(){}); - } catch (JsonProcessingException e) { - e.printStackTrace(); + companies = JSON.parseArray(request.execute().body(), Company.class); + }catch (Exception e){ + throw new ErrorException(e.getMessage()); } - return companies; + return companies.stream().filter(ob->{ + if(Objects.equals(ob.getStatus(), "enabled")) return true; + return false; + }).collect(Collectors.toList()); +// return companies; } - public List<Post> postUrl(String companyId) { + public List<Person> userUrl(String companyId) { String accessToken = getAccessToken(); - String token = getToken(accessToken); - String apiUrl =AuthApi.post+companyId; // 鏇挎崲涓哄疄闄呯殑API绔偣URL - HttpRequest request = HttpRequest.get(apiUrl) - .header("Authorization", "Bearer " + accessToken); - HttpResponse response = request.execute(); - ObjectMapper objectMapper = new ObjectMapper(); - String body = response.body(); - List<Post> posts = null; - try { - posts=objectMapper.readValue(body, new TypeReference<List<Post>>() {}); - } catch (JsonProcessingException e) { - e.printStackTrace(); - } - return posts; - } - - public List<User> userUrl(String companyId) { - String accessToken = getAccessToken(); - String token = getToken(accessToken); - String apiUrl =AuthApi.simple+companyId; // 鏇挎崲涓哄疄闄呯殑API绔偣URL - HttpRequest request = HttpRequest.get(apiUrl) + HttpRequest request = HttpRequest.get(AuthApi.simple+companyId) .header("Authorization", "Bearer " + accessToken) .header("Content-Type", "application/form-data"); - HttpResponse response = request.execute(); - ObjectMapper objectMapper = new ObjectMapper(); - String body = response.body(); - List<User> user=null; + List<Person> person; try { - user= objectMapper.readValue(body,new TypeReference<List<User>>(){}); - } catch (JsonProcessingException e) { - e.printStackTrace(); + person = JSON.parseArray(request.execute().body(), Person.class); + }catch (Exception e){ + throw new ErrorException(e.getMessage()); } - return user; + List<JSONObject> department = getDepartment(companyId); + return person.stream().filter(ob->{ + if(Objects.equals(ob.getStatus(), "enabled")) { + ob.setIsLive(userMapper.selectCount(Wrappers.<User>lambdaQuery().eq(User::getAccount, ob.getEmployeeID()))); + ob.setDepartment(getDepartmentStr(department, ob.getDepartmentCode()).replaceFirst("/", "")); + return true; + } + return false; + }).collect(Collectors.toList()); } + + public String getDepartmentStr(List<JSONObject> department, String code){ + String str = ""; + Optional<JSONObject> depart = department.stream().filter(a -> code.equals(a.get("departmentCode"))).findFirst(); + str = "/" + depart.get().get("departmentName") + str; + if(depart.get().get("parentDepartmentCode") != null){ + str = getDepartmentStr(department, depart.get().get("parentDepartmentCode").toString()) + str; + } + return str; + } + + public String getPassword(String employeeId) { + String accessToken = getAccessToken(); + HttpRequest request = HttpRequest.get(AuthApi.password + employeeId) + .header("Authorization", "Bearer " + accessToken); + System.out.println(AuthApi.password + employeeId); + System.out.println(request.execute().body()); + return JSON.parseObject(request.execute().body()).get("originalPwd").toString(); + } + + public List<JSONObject> getDepartment(String companyId){ + String accessToken = getAccessToken(); + HttpRequest request = HttpRequest.get(AuthApi.department.replace("companyId", companyId)) + .header("Authorization", "Bearer " + accessToken) + .header("Content-Type", "application/form-data"); + List<JSONObject> list; + try { + list = JSON.parseArray(request.execute().body()); + }catch (Exception e){ + throw new ErrorException(e.getMessage()); + } + return list.stream().filter(ob->{ + if(Objects.equals(ob.get("status"), "enabled")) return true; + return false; + }).collect(Collectors.toList()); + } + + public Person selectPersonUser(String code){ + String accessToken = getAccessToken(); + HttpRequest request = HttpRequest.get(AuthApi.person + code) + .header("Authorization", "Bearer " + accessToken) + .header("Content-Type", "application/form-data"); + Person person; + try { + person = JSON.parseObject(request.execute().body(), Person.class); + if(BeanUtil.isEmpty(person))return null; + }catch (Exception e){ + throw new ErrorException(e.getMessage()); + } + List<JSONObject> department = getDepartment(person.getCompanyId()); + person.setDepartment(getDepartmentStr(department, person.getDepartmentCode()).replaceFirst("/", "")); + person.setIsLive(userMapper.selectCount(Wrappers.<User>lambdaQuery().eq(User::getAccount, person.getEmployeeID()))); + return person; + } + } \ No newline at end of file -- Gitblit v1.9.3