value
2024-05-15 bce822c1cb336db7dad14e7dbc12f5a8a0fd656b
Merge remote-tracking branch 'origin/master'
已修改2个文件
已添加8个文件
340 ■■■■■ 文件已修改
system-run/src/main/resources/application-dev.yml 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
user-server/src/main/java/com/yuanchu/mom/controller/CompaniesController.java 37 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
user-server/src/main/java/com/yuanchu/mom/controller/PostController.java 30 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
user-server/src/main/java/com/yuanchu/mom/controller/SimpleController.java 28 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
user-server/src/main/java/com/yuanchu/mom/pojo/AuthApi.java 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
user-server/src/main/java/com/yuanchu/mom/pojo/Company.java 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
user-server/src/main/java/com/yuanchu/mom/pojo/Post.java 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
user-server/src/main/java/com/yuanchu/mom/pojo/User.java 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
user-server/src/main/java/com/yuanchu/mom/util/HeaderToken.java 154 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
user-server/src/main/java/com/yuanchu/mom/util/TestApi.java 25 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
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:
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());
    }
}
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));
    }
}
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));
    }
}
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=";
}
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;
}
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;
}
user-server/src/main/java/com/yuanchu/mom/pojo/User.java
@@ -112,4 +112,26 @@
    @ApiModelProperty(value = "关联的部门id")
    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;
}
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;
    }
}
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());
    }
}