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