From bce822c1cb336db7dad14e7dbc12f5a8a0fd656b Mon Sep 17 00:00:00 2001 From: value <z1292839451@163.com> Date: 星期三, 15 五月 2024 15:28:14 +0800 Subject: [PATCH] Merge remote-tracking branch 'origin/master' --- system-run/src/main/resources/application-dev.yml | 3 user-server/src/main/java/com/yuanchu/mom/controller/SimpleController.java | 28 ++++ user-server/src/main/java/com/yuanchu/mom/util/HeaderToken.java | 154 +++++++++++++++++++++++++ user-server/src/main/java/com/yuanchu/mom/util/TestApi.java | 25 ++++ user-server/src/main/java/com/yuanchu/mom/pojo/AuthApi.java | 11 + user-server/src/main/java/com/yuanchu/mom/controller/PostController.java | 30 +++++ user-server/src/main/java/com/yuanchu/mom/pojo/Company.java | 17 ++ user-server/src/main/java/com/yuanchu/mom/pojo/User.java | 22 +++ user-server/src/main/java/com/yuanchu/mom/controller/CompaniesController.java | 37 ++++++ user-server/src/main/java/com/yuanchu/mom/pojo/Post.java | 13 ++ 10 files changed, 339 insertions(+), 1 deletions(-) diff --git a/system-run/src/main/resources/application-dev.yml b/system-run/src/main/resources/application-dev.yml index b8bc183..6892d1f 100644 --- a/system-run/src/main/resources/application-dev.yml +++ b/system-run/src/main/resources/application-dev.yml @@ -38,7 +38,8 @@ type: com.alibaba.druid.pool.DruidDataSource driverClassName: com.mysql.cj.jdbc.Driver #url: jdbc:mysql://localhost:3306/center_lims?useSSL=false&useUnicode=true&characterEncoding=utf-8&serverTimezone=GMT%2B8 - url: jdbc:mysql://114.132.189.42:9004/center-lims?useSSL=false&useUnicode=true&characterEncoding=utf-8&serverTimezone=GMT%2B8 +# url: jdbc:mysql://114.132.189.42:9004/center-lims?useSSL=false&useUnicode=true&characterEncoding=utf-8&serverTimezone=GMT%2B8 + url: jdbc:mysql://localhost:3306/center-lims?useSSL=false&useUnicode=true&characterEncoding=utf-8&serverTimezone=GMT%2B8 username: root password: 123456 druid: diff --git a/user-server/src/main/java/com/yuanchu/mom/controller/CompaniesController.java b/user-server/src/main/java/com/yuanchu/mom/controller/CompaniesController.java new file mode 100644 index 0000000..73bb8e9 --- /dev/null +++ b/user-server/src/main/java/com/yuanchu/mom/controller/CompaniesController.java @@ -0,0 +1,37 @@ +package com.yuanchu.mom.controller; + +import cn.hutool.http.HttpRequest; +import cn.hutool.http.HttpResponse; +import cn.hutool.http.HttpUtil; +import com.yuanchu.mom.annotation.ValueAuth; +import com.yuanchu.mom.pojo.AuthApi; +import com.yuanchu.mom.pojo.Company; +import com.yuanchu.mom.util.HeaderToken; +import com.yuanchu.mom.vo.Result; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import io.swagger.annotations.Authorization; +import lombok.AllArgsConstructor; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import java.util.List; + +@RestController +@AllArgsConstructor +@RequestMapping("/companies") +@Api("缁勭粐妯″潡") +public class CompaniesController { + + @Autowired + private HeaderToken headerToken; + + @ValueAuth + @ApiOperation(value = "鑾峰彇缁勭粐鍒楄〃") + @GetMapping(value = "/selectCompaniesList") + public Result<List<Company>> selectcompaniesList(){ + return Result.success(headerToken.companyUrl()); + } +} \ No newline at end of file diff --git a/user-server/src/main/java/com/yuanchu/mom/controller/PostController.java b/user-server/src/main/java/com/yuanchu/mom/controller/PostController.java new file mode 100644 index 0000000..dd87db6 --- /dev/null +++ b/user-server/src/main/java/com/yuanchu/mom/controller/PostController.java @@ -0,0 +1,30 @@ +package com.yuanchu.mom.controller; + +import com.yuanchu.mom.annotation.ValueAuth; +import com.yuanchu.mom.pojo.Post; +import com.yuanchu.mom.util.HeaderToken; +import com.yuanchu.mom.vo.Result; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.AllArgsConstructor; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +@RestController +@AllArgsConstructor +@RequestMapping("/post") +@Api("宀椾綅妯″潡") +public class PostController { + + @Autowired + private HeaderToken headerToken; + + @ValueAuth + @ApiOperation(value = "鑾峰彇宀椾綅鍒楄〃") + @PostMapping(value = "/selectPostList/{companyId}") + public Result<List<Post>> selectPostList(@PathVariable String companyId){ + return Result.success(headerToken.postUrl(companyId)); + } +} \ No newline at end of file diff --git a/user-server/src/main/java/com/yuanchu/mom/controller/SimpleController.java b/user-server/src/main/java/com/yuanchu/mom/controller/SimpleController.java new file mode 100644 index 0000000..9d2660d --- /dev/null +++ b/user-server/src/main/java/com/yuanchu/mom/controller/SimpleController.java @@ -0,0 +1,28 @@ +package com.yuanchu.mom.controller; + + +import com.yuanchu.mom.pojo.User; +import com.yuanchu.mom.util.HeaderToken; +import com.yuanchu.mom.vo.Result; +import io.swagger.annotations.Api; +import lombok.AllArgsConstructor; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + + +@AllArgsConstructor +@RestController +@RequestMapping("/simple") +@Api("浜哄憳妯″潡") +public class SimpleController { + + @Autowired + private HeaderToken headerToken; + + @PostMapping( value = "/selectSimpleList/companyId") + public Result<List<User>> selectSimpleList(@PathVariable String companyId){ + return Result.success(headerToken.userUrl(companyId)); + } +} diff --git a/user-server/src/main/java/com/yuanchu/mom/pojo/AuthApi.java b/user-server/src/main/java/com/yuanchu/mom/pojo/AuthApi.java new file mode 100644 index 0000000..b91d14b --- /dev/null +++ b/user-server/src/main/java/com/yuanchu/mom/pojo/AuthApi.java @@ -0,0 +1,11 @@ +package com.yuanchu.mom.pojo; + +public class AuthApi { + + public static String companies = "https://ztt-sso.asuncloud.net/api/org/v1/companies"; + + public static String post="https://ztt-sso.asuncloud.net/api/org/v1/post?companyId="; + + public static String simple="https://ztt-sso.asuncloud.net/api/org/v1/employees/simple?companyId="; + +} \ No newline at end of file diff --git a/user-server/src/main/java/com/yuanchu/mom/pojo/Company.java b/user-server/src/main/java/com/yuanchu/mom/pojo/Company.java new file mode 100644 index 0000000..6ba5133 --- /dev/null +++ b/user-server/src/main/java/com/yuanchu/mom/pojo/Company.java @@ -0,0 +1,17 @@ +package com.yuanchu.mom.pojo; + +import lombok.Data; + +@Data +public class Company { + + private String companyId; + + private String companyName; + + private String parentCompanyId; + + private String description; + + private String status; +} \ No newline at end of file diff --git a/user-server/src/main/java/com/yuanchu/mom/pojo/Post.java b/user-server/src/main/java/com/yuanchu/mom/pojo/Post.java new file mode 100644 index 0000000..5891604 --- /dev/null +++ b/user-server/src/main/java/com/yuanchu/mom/pojo/Post.java @@ -0,0 +1,13 @@ +package com.yuanchu.mom.pojo; + +import lombok.Data; + +@Data +public class Post { + private String companyId; + private String postCode; + private String postName; + private String deptCode; + private String postType; + private String status; +} diff --git a/user-server/src/main/java/com/yuanchu/mom/pojo/User.java b/user-server/src/main/java/com/yuanchu/mom/pojo/User.java index ab26b1b..6f4b5fb 100644 --- a/user-server/src/main/java/com/yuanchu/mom/pojo/User.java +++ b/user-server/src/main/java/com/yuanchu/mom/pojo/User.java @@ -112,4 +112,26 @@ @ApiModelProperty(value = "鍏宠仈鐨勯儴闂╥d") private String departId; + ////浜哄憳缂栧彿锛屽叏灞�鍞竴 +// private String employeeID; +////宀椾綅 +// private String position; +////宀椾綅缂栫爜 +// private String positionCode; +////鎵嬫満鍙风爜 +// private String phoneNumber; +// +// //鎬у埆 1:鐢� 2:濂� +// private int gender; +// +// //缁勭粐鐘舵�� enable:鍦ㄨ亴 disabled:绂昏亴 +// private String status; +////鎵�灞炵粍缁囩紪鐮� +// private String companyId; +////鍏徃閭(鍙敤浜庨偖绠辩郴缁�) +// private String companyEmail; +////鍏ヨ亴鍏徃鏃堕棿 +// private String dateOfJoiningTheCompany; +////缁勭粐鍐呯殑閮ㄩ棬缂栫爜 +// private String departmentCode; } 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 new file mode 100644 index 0000000..147145f --- /dev/null +++ b/user-server/src/main/java/com/yuanchu/mom/util/HeaderToken.java @@ -0,0 +1,154 @@ +package com.yuanchu.mom.util; + +import cn.hutool.http.HttpRequest; +import cn.hutool.http.HttpResponse; +import com.alibaba.fastjson.JSON; +import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.core.type.TypeReference; +import com.fasterxml.jackson.databind.JsonNode; +import com.fasterxml.jackson.databind.ObjectMapper; +import com.yuanchu.mom.pojo.AuthApi; +import com.yuanchu.mom.pojo.Company; +import com.yuanchu.mom.pojo.Post; +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.concurrent.TimeUnit; + +@Component +public class HeaderToken { + + @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()); + } + + public String fetchNewAccessToken() { + 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()); + ObjectMapper objectMapper = new ObjectMapper(); + JsonNode jsonNode = null; + 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(); + } + return null; + } + private String accessToken ; + + //鍒ゆ柇鏄惁杩囨湡 + public String getAccessToken() { + accessToken=(String) redisTemplate.opsForValue().get("access_token"); + if (accessToken == null) { + accessToken = fetchNewAccessToken(); + } + 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() { + String accessToken = getAccessToken(); + String getToken= getToken(accessToken); + String apiUrl =AuthApi.companies; // 鏇挎崲涓哄疄闄呯殑API绔偣URL + HttpRequest request = HttpRequest.get(apiUrl) + .header("Authorization", "Bearer " + accessToken); + HttpResponse response = request.execute(); + ObjectMapper objectMapper = new ObjectMapper(); + String body = response.body(); + List<Company> companies = null; + try { + companies = objectMapper.readValue(body, new TypeReference<List<Company>>(){}); + } catch (JsonProcessingException e) { + e.printStackTrace(); + } + return companies; + } + + public List<Post> postUrl(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) + .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; + try { + user= objectMapper.readValue(body,new TypeReference<List<User>>(){}); + } catch (JsonProcessingException e) { + e.printStackTrace(); + } + return user; + } +} \ No newline at end of file diff --git a/user-server/src/main/java/com/yuanchu/mom/util/TestApi.java b/user-server/src/main/java/com/yuanchu/mom/util/TestApi.java new file mode 100644 index 0000000..1955fa5 --- /dev/null +++ b/user-server/src/main/java/com/yuanchu/mom/util/TestApi.java @@ -0,0 +1,25 @@ +package com.yuanchu.mom.util; + +import cn.hutool.http.HttpRequest; +import cn.hutool.http.HttpResponse; +import com.yuanchu.mom.pojo.AuthApi; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; + +@Component +public class TestApi { + + @Autowired + private HeaderToken headerToken; + + public void testApi() { + String accessToken =headerToken.getAccessToken(); + String apiUrl = AuthApi.companies; + // 鏇挎崲涓哄疄闄呯殑API绔偣URL + HttpRequest request = HttpRequest.get(apiUrl) + .header("Authorization", "Bearer " + accessToken); + HttpResponse response = request.execute(); + System.out.println("Response Code: " + response.getStatus()); + System.out.println("Response Body: " + response.body()); + } +} \ No newline at end of file -- Gitblit v1.9.3