jtoms há 4 anos atrás
pai
commit
a6b6f9fefc

+ 27 - 7
pom.xml

@@ -25,13 +25,13 @@
         <mybatis-spring-boot-starter.version>2.2.0</mybatis-spring-boot-starter.version>
         <mybatis.version>3.5.7</mybatis.version>
         <framework.version>1.0.16</framework.version>
+        <db-migration.version>1.0.0</db-migration.version>
 
-        <!--        <slf4j.version>1.7.32</slf4j.version>-->
-        <!--        <commons-lang3.version>3.12.0</commons-lang3.version>-->
-        <!--        <lombok.version>1.18.22</lombok.version>-->
-        <!--        <javax.servlet.version>4.0.1</javax.servlet.version>-->
-        <!--        <hibernate-validator.version>6.0.22.Final</hibernate-validator.version>-->
-        <!--        <okhttp.version>4.9.3</okhttp.version>-->
+        <slf4j.version>1.7.32</slf4j.version>
+        <commons-lang3.version>3.12.0</commons-lang3.version>
+        <lombok.version>1.18.22</lombok.version>
+        <javax.servlet.version>4.0.1</javax.servlet.version>
+        <okhttp.version>4.9.3</okhttp.version>
     </properties>
 
     <dependencies>
@@ -48,7 +48,22 @@
         <dependency>
             <groupId>com.dliyun</groupId>
             <artifactId>db-migration</artifactId>
-            <version>1.0.0</version>
+            <version>${db-migration.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>org.projectlombok</groupId>
+            <artifactId>lombok</artifactId>
+            <version>${lombok.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>org.slf4j</groupId>
+            <artifactId>slf4j-api</artifactId>
+            <version>${slf4j.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.commons</groupId>
+            <artifactId>commons-lang3</artifactId>
+            <version>${commons-lang3.version}</version>
         </dependency>
         <dependency>
             <groupId>org.springframework.boot</groupId>
@@ -94,6 +109,11 @@
             <artifactId>ip2region</artifactId>
             <version>${ip2region.version}</version>
         </dependency>
+        <dependency>
+            <groupId>com.squareup.okhttp3</groupId>
+            <artifactId>okhttp</artifactId>
+            <version>${okhttp.version}</version>
+        </dependency>
     </dependencies>
     <build>
         <plugins>

+ 9 - 0
src/main/java/com/zhiqiyun/open/config/BeanConfig.java

@@ -6,6 +6,7 @@ import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor;
 import com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor;
 import com.zhiqiyun.open.Application;
 import lombok.extern.slf4j.Slf4j;
+import okhttp3.OkHttpClient;
 import org.lionsoul.ip2region.DbConfig;
 import org.lionsoul.ip2region.DbSearcher;
 import org.springframework.context.annotation.Bean;
@@ -13,6 +14,7 @@ import org.springframework.context.annotation.Configuration;
 
 import java.io.ByteArrayOutputStream;
 import java.io.InputStream;
+import java.util.concurrent.TimeUnit;
 
 @Slf4j
 @Configuration
@@ -28,6 +30,13 @@ public class BeanConfig {
     }
 
     @Bean
+    public OkHttpClient okHttpClient() {
+        OkHttpClient.Builder builder = new OkHttpClient.Builder();
+        builder.connectTimeout(30, TimeUnit.SECONDS);
+        return builder.build();
+    }
+
+    @Bean
     public ConfigurationCustomizer configurationCustomizer() {
         return configuration -> configuration.setUseGeneratedKeys(true);
     }

+ 119 - 0
src/main/java/com/zhiqiyun/open/router/apis/Oauth2Api.java

@@ -0,0 +1,119 @@
+package com.zhiqiyun.open.router.apis;
+
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONObject;
+import com.dliyun.oap.framework.annotation.ServiceMethod;
+import com.dliyun.oap.framework.annotation.ServiceMethodBean;
+import com.dliyun.oap.framework.response.OapResponse;
+import com.zhiqiyun.open.router.request.Oauth2LoginRequest;
+import com.zhiqiyun.open.router.request.Oauth2RefreshTokenRequest;
+import com.zhiqiyun.open.router.request.Oauth2UserInfoRequest;
+import lombok.extern.slf4j.Slf4j;
+import okhttp3.*;
+import org.apache.commons.codec.digest.DigestUtils;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+
+import java.io.IOException;
+import java.util.HashMap;
+import java.util.Map;
+import java.util.Objects;
+
+@Slf4j
+@ServiceMethodBean
+public class Oauth2Api {
+
+    @Autowired
+    private OkHttpClient okHttpClient;
+
+    @ServiceMethod(method = "oauth2.login", title = "用户登录")
+    public OapResponse login(Oauth2LoginRequest request) throws IOException {
+
+        Map<String, String> paramValues = new HashMap<>();
+        paramValues.put("grant_type", "password");
+        paramValues.put("username", request.getUserName());
+        paramValues.put("password", DigestUtils.md5Hex(request.getPassword()));
+        paramValues.put("scope", "all");
+        paramValues.put("tenantId", "222712");
+        FormBody.Builder formBuilder = new FormBody.Builder();
+        paramValues.forEach(formBuilder::add);
+
+
+        Request.Builder builder = new Request.Builder();
+        builder.url("http://apis-dev.smartcity.123cx.com/blade-auth/oauth/token");
+        builder.header("Authorization", "Basic c2FiZXI6c2FiZXJfc2VjcmV0");
+        builder.header("Content-Type", "application/x-www-form-urlencoded");
+        builder.header("Tenant-Id", "222712");
+        builder.post(formBuilder.build());
+
+        Response resp = this.okHttpClient.newCall(builder.build()).execute();
+        if (resp.isSuccessful()) {
+            String result = Objects.requireNonNull(resp.body()).string();
+            JSONObject jsonObject = JSON.parseObject(result);
+            if (jsonObject.containsKey("error")) {
+                return OapResponse.fail(jsonObject.getString("jsonObject"), jsonObject.getString("error_description"));
+            }
+            return OapResponse.success().setBody(jsonObject);
+        } else {
+            return OapResponse.fail("NETWORK_ERROR", "网络异常" + resp.message());
+        }
+    }
+
+    @ServiceMethod(method = "oauth2.refresh.token", title = "刷新Token")
+    public OapResponse refreshToken(Oauth2RefreshTokenRequest request) throws IOException {
+
+        Map<String, String> paramValues = new HashMap<>();
+        paramValues.put("grant_type", "refresh_token");
+        paramValues.put("scope", "all");
+        paramValues.put("refresh_token", request.getRefreshToken());
+        FormBody.Builder formBuilder = new FormBody.Builder();
+        paramValues.forEach(formBuilder::add);
+
+
+        Request.Builder builder = new Request.Builder();
+        builder.url("http://apis-dev.smartcity.123cx.com/blade-auth/oauth/token");
+        builder.header("Authorization", "Basic c2FiZXI6c2FiZXJfc2VjcmV0");
+        builder.header("Content-Type", "application/x-www-form-urlencoded");
+        builder.header("Tenant-Id", "222712");
+        builder.post(formBuilder.build());
+
+        Response resp = this.okHttpClient.newCall(builder.build()).execute();
+        if (resp.isSuccessful()) {
+            String result = Objects.requireNonNull(resp.body()).string();
+            JSONObject jsonObject = JSON.parseObject(result);
+            if (jsonObject.containsKey("error")) {
+                return OapResponse.fail(jsonObject.getString("jsonObject"), jsonObject.getString("error_description"));
+            }
+            return OapResponse.success().setBody(jsonObject);
+        } else {
+            return OapResponse.fail("NETWORK_ERROR", "网络异常" + resp.message());
+        }
+    }
+
+    @ServiceMethod(method = "oauth2.user.info", title = "获取用户信息")
+    public OapResponse userInfo(Oauth2UserInfoRequest request) throws IOException {
+
+        Request.Builder builder = new Request.Builder();
+        builder.url("http://apis-dev.smartcity.123cx.com/blade-auth/oauth/user-info");
+        builder.header("Authorization", "bearer " + request.getAccessToken());
+        builder.header("Content-Type", "application/x-www-form-urlencoded");
+        builder.header("Tenant-Id", "222712");
+//        builder.post(RequestBody.create(null));
+
+        Response resp = this.okHttpClient.newCall(builder.build()).execute();
+        if (resp.isSuccessful()) {
+            String result = Objects.requireNonNull(resp.body()).string();
+            JSONObject jsonObject = JSON.parseObject(result);
+            String code = jsonObject.getString("code");
+            String msg = jsonObject.getString("msg");
+            JSONObject data = jsonObject.getJSONObject("data");
+
+            if (StringUtils.equals("200", code)) {
+                return OapResponse.success().setBody(data);
+            }
+            return OapResponse.fail("REMOTE_ERROR_" + code, msg);
+        } else {
+            return OapResponse.fail("NETWORK_ERROR", "网络异常" + resp.message());
+        }
+    }
+}

+ 0 - 39
src/main/java/com/zhiqiyun/open/router/apis/UserApi.java

@@ -1,39 +0,0 @@
-package com.zhiqiyun.open.router.apis;
-
-import com.dliyun.oap.framework.annotation.ServiceMethod;
-import com.dliyun.oap.framework.annotation.ServiceMethodBean;
-import com.dliyun.oap.framework.response.OapResponse;
-import com.fasterxml.jackson.databind.ObjectMapper;
-import com.zhiqiyun.open.router.apis.request.LogonRequest;
-import lombok.extern.slf4j.Slf4j;
-import org.springframework.beans.factory.annotation.Autowired;
-
-import java.util.HashMap;
-import java.util.Map;
-
-/**
- * <pre>
- * 功能说明:
- * </pre>
- *
- * @author stjdydayou
- * @version 1.0
- */
-@Slf4j
-@ServiceMethodBean
-public class UserApi {
-
-    @Autowired
-    private ObjectMapper objectMapper;
-
-    @ServiceMethod(method = "user.login", title = "用户登录", groupTitle = "")
-    public OapResponse login(LogonRequest request) {
-
-        Map<String, Object> m = new HashMap<>();
-        m.put("userName", request.getUserName());
-        m.put("password", request.getPassword());
-        m.put("ss", request.getSs());
-
-        return OapResponse.success().setBody(m);
-    }
-}

+ 0 - 46
src/main/java/com/zhiqiyun/open/router/apis/request/LogonRequest.java

@@ -1,46 +0,0 @@
-/**
- * 版权声明:中图一购网络科技有限公司 版权所有 违者必究 2012
- * 日    期:12-7-14
- */
-package com.zhiqiyun.open.router.apis.request;
-
-import com.dliyun.oap.framework.annotation.ServiceParamField;
-import com.dliyun.oap.framework.request.AbstractOapRequest;
-import com.dliyun.oap.framework.request.UploadFile;
-import lombok.Data;
-import lombok.EqualsAndHashCode;
-
-import javax.validation.constraints.NotBlank;
-import javax.validation.constraints.NotNull;
-import javax.validation.constraints.Pattern;
-import java.util.List;
-
-
-/**
- * <pre>
- * 功能说明:
- * </pre>
- *
- * @author 陈雄华
- * @version 1.0
- */
-@Data
-@EqualsAndHashCode(callSuper = true)
-public class LogonRequest extends AbstractOapRequest {
-
-	@ServiceParamField(describe = "用户名")
-	@NotNull
-	@Pattern(regexp = "\\w{4,30}")
-	private String userName;
-
-	@ServiceParamField(describe = "密码")
-	@NotBlank
-	@Pattern(regexp = "\\w{6,30}")
-	private String password;
-
-	private List<String> ss;
-
-	@ServiceParamField(describe = "上传文件")
-	private UploadFile file;
-}
-

+ 26 - 0
src/main/java/com/zhiqiyun/open/router/request/Oauth2LoginRequest.java

@@ -0,0 +1,26 @@
+/**
+ * 版权声明:中图一购网络科技有限公司 版权所有 违者必究 2012
+ * 日    期:12-7-14
+ */
+package com.zhiqiyun.open.router.request;
+
+import com.dliyun.oap.framework.annotation.ServiceParamField;
+import com.dliyun.oap.framework.request.AbstractOapRequest;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+import javax.validation.constraints.NotBlank;
+
+@Data
+@EqualsAndHashCode(callSuper = true)
+public class Oauth2LoginRequest extends AbstractOapRequest {
+
+    @ServiceParamField(describe = "用户名")
+    @NotBlank
+    private String userName;
+
+    @ServiceParamField(describe = "密码")
+    @NotBlank
+    private String password;
+}
+

+ 11 - 0
src/main/java/com/zhiqiyun/open/router/request/Oauth2RefreshTokenRequest.java

@@ -0,0 +1,11 @@
+package com.zhiqiyun.open.router.request;
+
+import com.dliyun.oap.framework.request.AbstractOapRequest;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+@Data
+@EqualsAndHashCode(callSuper = true)
+public class Oauth2RefreshTokenRequest extends AbstractOapRequest {
+    private String refreshToken;
+}

+ 11 - 0
src/main/java/com/zhiqiyun/open/router/request/Oauth2UserInfoRequest.java

@@ -0,0 +1,11 @@
+package com.zhiqiyun.open.router.request;
+
+import com.dliyun.oap.framework.request.AbstractOapRequest;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+@Data
+@EqualsAndHashCode(callSuper = true)
+public class Oauth2UserInfoRequest extends AbstractOapRequest {
+    private String accessToken;
+}