Commit a9c712fda8ebbaa1c179d8ea6f00a5e576bf0291
1 parent
773c31ce
Exists in
master
旷视云 api 配置,接口添加
Showing
8 changed files
with
218 additions
and
2 deletions
Show diff stats
springboot.iml
... | ... | @@ -105,6 +105,20 @@ |
105 | 105 | <orderEntry type="library" name="Maven: org.hdrhistogram:HdrHistogram:2.1.9" level="project" /> |
106 | 106 | <orderEntry type="library" name="Maven: org.latencyutils:LatencyUtils:2.0.3" level="project" /> |
107 | 107 | <orderEntry type="library" name="Maven: net.sf.ehcache:ehcache:2.10.6" level="project" /> |
108 | + <orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-data-redis:2.1.3.RELEASE" level="project" /> | |
109 | + <orderEntry type="library" name="Maven: org.springframework.data:spring-data-redis:2.1.5.RELEASE" level="project" /> | |
110 | + <orderEntry type="library" name="Maven: org.springframework.data:spring-data-keyvalue:2.1.5.RELEASE" level="project" /> | |
111 | + <orderEntry type="library" name="Maven: org.springframework.data:spring-data-commons:2.1.5.RELEASE" level="project" /> | |
112 | + <orderEntry type="library" name="Maven: org.springframework:spring-oxm:5.1.5.RELEASE" level="project" /> | |
113 | + <orderEntry type="library" name="Maven: io.lettuce:lettuce-core:5.1.4.RELEASE" level="project" /> | |
114 | + <orderEntry type="library" name="Maven: io.netty:netty-common:4.1.33.Final" level="project" /> | |
115 | + <orderEntry type="library" name="Maven: io.netty:netty-handler:4.1.33.Final" level="project" /> | |
116 | + <orderEntry type="library" name="Maven: io.netty:netty-buffer:4.1.33.Final" level="project" /> | |
117 | + <orderEntry type="library" name="Maven: io.netty:netty-codec:4.1.33.Final" level="project" /> | |
118 | + <orderEntry type="library" name="Maven: io.netty:netty-transport:4.1.33.Final" level="project" /> | |
119 | + <orderEntry type="library" name="Maven: io.netty:netty-resolver:4.1.33.Final" level="project" /> | |
120 | + <orderEntry type="library" name="Maven: io.projectreactor:reactor-core:3.2.6.RELEASE" level="project" /> | |
121 | + <orderEntry type="library" name="Maven: org.reactivestreams:reactive-streams:1.0.2" level="project" /> | |
108 | 122 | <orderEntry type="library" name="Maven: org.springframework.cloud:spring-cloud-starter-netflix-eureka-server:2.1.1.RELEASE" level="project" /> |
109 | 123 | <orderEntry type="library" name="Maven: org.springframework.cloud:spring-cloud-starter:2.1.1.RELEASE" level="project" /> |
110 | 124 | <orderEntry type="library" name="Maven: org.springframework.cloud:spring-cloud-context:2.1.1.RELEASE" level="project" /> | ... | ... |
springboot/pom.xml
... | ... | @@ -134,6 +134,11 @@ |
134 | 134 | <artifactId>commons-lang3</artifactId> |
135 | 135 | <version>3.1</version> |
136 | 136 | </dependency> |
137 | + <!--redis配置--> | |
138 | + <dependency> | |
139 | + <groupId>org.springframework.boot</groupId> | |
140 | + <artifactId>spring-boot-starter-data-redis</artifactId> | |
141 | + </dependency> | |
137 | 142 | <!--注册中心--> |
138 | 143 | <dependency> |
139 | 144 | <groupId>org.springframework.cloud</groupId> | ... | ... |
springboot/src/main/java/com/sincre/springboot/ApiModel/FacePlusResult.java
0 → 100644
... | ... | @@ -0,0 +1,26 @@ |
1 | +package com.sincre.springboot.ApiModel; | |
2 | + | |
3 | +import com.fasterxml.jackson.annotation.JsonInclude; | |
4 | + | |
5 | +@JsonInclude(JsonInclude.Include.NON_EMPTY) | |
6 | +public class FacePlusResult { | |
7 | + | |
8 | + private int error_code; | |
9 | + private String error_message; | |
10 | + | |
11 | + public String getError_message() { | |
12 | + return error_message; | |
13 | + } | |
14 | + | |
15 | + public void setError_message(String error_message) { | |
16 | + this.error_message = error_message; | |
17 | + } | |
18 | + | |
19 | + public int getError_code() { | |
20 | + return error_code; | |
21 | + } | |
22 | + | |
23 | + public void setError_code(int error_code) { | |
24 | + this.error_code = error_code; | |
25 | + } | |
26 | +} | ... | ... |
springboot/src/main/java/com/sincre/springboot/ApiModel/YinShiResResult.java
... | ... | @@ -9,6 +9,8 @@ public class YinShiResResult<T> { |
9 | 9 | |
10 | 10 | private Page page ; |
11 | 11 | private T data; |
12 | + private Integer code; | |
13 | + private String msg; | |
12 | 14 | |
13 | 15 | public T getData() { |
14 | 16 | return data; |
... | ... | @@ -41,8 +43,7 @@ public class YinShiResResult<T> { |
41 | 43 | public void setPage(Page page) { |
42 | 44 | this.page = page; |
43 | 45 | } |
44 | - private Integer code; | |
45 | - private String msg; | |
46 | + | |
46 | 47 | } |
47 | 48 | |
48 | 49 | ... | ... |
springboot/src/main/java/com/sincre/springboot/ApiPlatform/FacePlusConfig.java
0 → 100644
... | ... | @@ -0,0 +1,13 @@ |
1 | +package com.sincre.springboot.ApiPlatform; | |
2 | + | |
3 | +public class FacePlusConfig { | |
4 | + | |
5 | + | |
6 | + /** | |
7 | + * 旷视 api 基础参数 | |
8 | + */ | |
9 | + public static String hostUrl = "https://api-cn.faceplusplus.com"; | |
10 | + public static String apiKey = "Xgyw3EZmAO70MOHVmt0q-zHWtmZEHtYP"; | |
11 | + public static String apiSecret = "uskc2mPcC7dQIh-aTdOqsym9kS0bl_hE"; | |
12 | + | |
13 | +} | ... | ... |
springboot/src/main/java/com/sincre/springboot/controller/FacePlusController.java
0 → 100644
... | ... | @@ -0,0 +1,89 @@ |
1 | +package com.sincre.springboot.controller; | |
2 | + | |
3 | +import com.alibaba.fastjson.JSON; | |
4 | +import com.sincre.springboot.ApiModel.FacePlusResult; | |
5 | +import com.sincre.springboot.ApiPlatform.FacePlusConfig; | |
6 | +import com.sincre.springboot.common.ServerResponse; | |
7 | +import com.sincre.springboot.utils.ApiHelper; | |
8 | +import com.sincre.springboot.utils.ResultUtils; | |
9 | +import io.swagger.annotations.Api; | |
10 | +import io.swagger.annotations.ApiImplicitParam; | |
11 | +import io.swagger.annotations.ApiImplicitParams; | |
12 | +import io.swagger.annotations.ApiOperation; | |
13 | +import org.omg.CORBA.Any; | |
14 | +import org.springframework.web.bind.annotation.PostMapping; | |
15 | +import org.springframework.web.bind.annotation.RequestMapping; | |
16 | +import org.springframework.web.bind.annotation.RestController; | |
17 | +import springfox.documentation.spring.web.json.Json; | |
18 | + | |
19 | +import java.util.HashMap; | |
20 | +import java.util.Map; | |
21 | + | |
22 | +@RestController | |
23 | +@RequestMapping(value = "/FacePlus/*") | |
24 | +@Api(tags = "旷视云服务API") | |
25 | +public class FacePlusController { | |
26 | + | |
27 | + | |
28 | + @ApiOperation("人脸数据注册") | |
29 | + @ApiImplicitParam(name = "imageUrl",value = "人脸图片地址",required = true) | |
30 | + @PostMapping("detect") | |
31 | + public ServerResponse detect(String imageUrl){ | |
32 | + | |
33 | + String url = FacePlusConfig.hostUrl + "/facepp/v3/detect"; | |
34 | + Map<String,String> head = new HashMap<>(); | |
35 | + Map<String,Object> body = setUpCommonBody(); | |
36 | + body.put("image_url",imageUrl); | |
37 | + | |
38 | + String result = ApiHelper.doPost(url,head,body); | |
39 | + FacePlusResult faceResult = JSON.parseObject(result,FacePlusResult.class); | |
40 | + return ResultUtils.getInstance().returnResult_Face(faceResult,result); | |
41 | + } | |
42 | + | |
43 | + | |
44 | + @ApiOperation("人脸数据比较") | |
45 | + @ApiImplicitParams({ | |
46 | + @ApiImplicitParam(name = "faceToken1",value = "人脸1token",required = true), | |
47 | + @ApiImplicitParam(name = "faceToken2",value = "人脸2token",required = true) | |
48 | + }) | |
49 | + @PostMapping("compare") | |
50 | + public ServerResponse compare(String faceToken1,String faceToken2){ | |
51 | + | |
52 | + String url = FacePlusConfig.hostUrl + "/facepp/v3/compare"; | |
53 | + Map<String,String> head = new HashMap<>(); | |
54 | + Map<String,Object> body = setUpCommonBody(); | |
55 | + body.put("face_token1",faceToken1); | |
56 | + body.put("face_token2",faceToken2); | |
57 | + | |
58 | + String result = ApiHelper.doPost(url,head,body); | |
59 | + FacePlusResult faceResult = JSON.parseObject(result,FacePlusResult.class); | |
60 | + return ResultUtils.getInstance().returnResult_Face(faceResult,result); | |
61 | + } | |
62 | + | |
63 | + @ApiOperation("人脸数据查询") | |
64 | + @ApiImplicitParam(name = "faceToken",value = "人脸token",required = true) | |
65 | + @PostMapping("search") | |
66 | + public ServerResponse search(String faceToken){ | |
67 | + | |
68 | + String url = FacePlusConfig.hostUrl + "/facepp/v3/search"; | |
69 | + Map<String,String> head = new HashMap<>(); | |
70 | + Map<String,Object> body = setUpCommonBody(); | |
71 | + body.put("face_token",faceToken); | |
72 | + | |
73 | + String result = ApiHelper.doPost(url,head,body); | |
74 | + FacePlusResult faceResult = JSON.parseObject(result,FacePlusResult.class); | |
75 | + return ResultUtils.getInstance().returnResult_Face(faceResult,result); | |
76 | + } | |
77 | + | |
78 | + /** | |
79 | + * 通用参数 | |
80 | + * @return | |
81 | + */ | |
82 | + private Map<String,Object> setUpCommonBody(){ | |
83 | + | |
84 | + Map<String,Object> map = new HashMap<>(); | |
85 | + map.put("api_key", FacePlusConfig.apiKey); | |
86 | + map.put("api_secret",FacePlusConfig.apiSecret); | |
87 | + return map; | |
88 | + } | |
89 | +} | ... | ... |
springboot/src/main/java/com/sincre/springboot/utils/ResultUtils.java
... | ... | @@ -4,6 +4,7 @@ package com.sincre.springboot.utils; |
4 | 4 | import com.alibaba.fastjson.JSON; |
5 | 5 | import com.alibaba.fastjson.JSONArray; |
6 | 6 | import com.sincre.springboot.ApiModel.BaiduResult; |
7 | +import com.sincre.springboot.ApiModel.FacePlusResult; | |
7 | 8 | import com.sincre.springboot.ApiModel.TuYaResResult; |
8 | 9 | import com.sincre.springboot.ApiModel.YinShiResResult; |
9 | 10 | import com.sincre.springboot.common.ResponseCode; |
... | ... | @@ -114,4 +115,50 @@ public class ResultUtils { |
114 | 115 | return ServerResponse.createByErrorMessage("服务器内部处理出错!"); |
115 | 116 | } |
116 | 117 | } |
118 | + /** | |
119 | + * 旷视返回结果 | |
120 | + * @param result | |
121 | + * @return | |
122 | + */ | |
123 | + public ServerResponse returnResult_Face(FacePlusResult result,String data){ | |
124 | + | |
125 | + try{ | |
126 | + String msg = result.getError_message(); | |
127 | + if (msg == null) { | |
128 | + return ServerResponse.createBySuccess(data); | |
129 | + }else{ | |
130 | + int errorCode = 400; | |
131 | + switch (msg) { | |
132 | + case "AUTHENTICATION_ERROR": | |
133 | + errorCode = 401; | |
134 | + break; | |
135 | + case "AUTHORIZATION_ERROR": | |
136 | + errorCode = 403; | |
137 | + break; | |
138 | + case "CONCURRENCY_LIMIT_EXCEEDED": | |
139 | + errorCode = 403; | |
140 | + break; | |
141 | + case "IMAGE_DOWNLOAD_TIMEOUT": | |
142 | + errorCode = 412; | |
143 | + case "Request Entity Too Large": | |
144 | + errorCode = 413; | |
145 | + break; | |
146 | + case "API_NOT_FOUND": | |
147 | + errorCode = 404; | |
148 | + break; | |
149 | + case "INTERNAL_ERROR": | |
150 | + errorCode = 500; | |
151 | + break; | |
152 | + default: | |
153 | + break; | |
154 | + } | |
155 | + return ServerResponse.createByErrorCodeMessage(errorCode,msg); | |
156 | + } | |
157 | + }catch (Exception e){ | |
158 | + return ServerResponse.createByErrorMessage("服务器内部处理出错!"); | |
159 | + } | |
160 | + | |
161 | + | |
162 | + } | |
163 | + | |
117 | 164 | } | ... | ... |
springboot/src/main/resources/application.properties
... | ... | @@ -17,3 +17,24 @@ eureka.client.register-with-ecueka=false |
17 | 17 | #不去检索服务 |
18 | 18 | eureka.client.fetch-registry=false |
19 | 19 | eureka.client.serviceUrl.defaultZone=http://121.40.109.21:8761/eureka/ |
20 | + | |
21 | +# http://121.40.109.21:8761/eureka/,http://121.40.109.21:8762/eureka/ | |
22 | +#Redis 配置 | |
23 | +# Redis数据库索引(默认为0) | |
24 | +spring.redis.database=0 | |
25 | +# Redis服务器地址 | |
26 | +spring.redis.host=127.0.0.1 | |
27 | +# Redis服务器连接端口 | |
28 | +spring.redis.port=6379 | |
29 | +# Redis服务器连接密码(默认为空) | |
30 | +spring.redis.password= | |
31 | +# 连接池最大连接数(使用负值表示没有限制) | |
32 | +spring.redis.jedis.pool.max-active=20 | |
33 | +# 连接池最大阻塞等待时间(使用负值表示没有限制) | |
34 | +spring.redis.jedis.pool.max-wait=-1 | |
35 | +# 连接池中的最大空闲连接 | |
36 | +spring.redis.jedis.pool.max-idle=10 | |
37 | +# 连接池中的最小空闲连接 | |
38 | +spring.redis.jedis.pool.min-idle=0 | |
39 | +# 连接超时时间(毫秒) | |
40 | +spring.redis.timeout=1000 | |
20 | 41 | \ No newline at end of file | ... | ... |