Commit 40e7c30e25ba578b20fc94e19d01e49739909955
1 parent
5a926884
Exists in
master
增加负载均衡客户端服务
Showing
35 changed files
with
982 additions
and
55 deletions
Show diff stats
| ... | ... | @@ -0,0 +1,40 @@ |
| 1 | +<?xml version="1.0" encoding="UTF-8"?> | |
| 2 | +<project xmlns="http://maven.apache.org/POM/4.0.0" | |
| 3 | + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" | |
| 4 | + xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> | |
| 5 | + <parent> | |
| 6 | + <artifactId>cloud</artifactId> | |
| 7 | + <groupId>com.sincere</groupId> | |
| 8 | + <version>1.0.0</version> | |
| 9 | + </parent> | |
| 10 | + <modelVersion>4.0.0</modelVersion> | |
| 11 | + | |
| 12 | + <artifactId>RibbonConsume</artifactId> | |
| 13 | + | |
| 14 | + <properties> | |
| 15 | + <ribbon>2.1.3.RELEASE</ribbon> | |
| 16 | + </properties> | |
| 17 | + | |
| 18 | + <dependencies> | |
| 19 | + | |
| 20 | + <dependency> | |
| 21 | + <groupId>org.springframework.cloud</groupId> | |
| 22 | + <artifactId>spring-cloud-starter-netflix-ribbon</artifactId> | |
| 23 | + <version>${ribbon}</version> | |
| 24 | + </dependency> | |
| 25 | + | |
| 26 | + <dependency> | |
| 27 | + <groupId>org.springframework.boot</groupId> | |
| 28 | + <artifactId>spring-boot-starter-web</artifactId> | |
| 29 | + </dependency> | |
| 30 | + | |
| 31 | + </dependencies> | |
| 32 | + | |
| 33 | + <build> | |
| 34 | + | |
| 35 | + | |
| 36 | + <finalName>RibbonConsume</finalName> | |
| 37 | + | |
| 38 | + </build> | |
| 39 | + | |
| 40 | +</project> | |
| 0 | 41 | \ No newline at end of file | ... | ... |
cloud/RibbonConsume/src/main/java/com/sincere/ribbon/RibbonApplication.java
0 → 100644
| ... | ... | @@ -0,0 +1,27 @@ |
| 1 | +package com.sincere.ribbon; | |
| 2 | + | |
| 3 | +import org.springframework.boot.SpringApplication; | |
| 4 | +import org.springframework.boot.autoconfigure.SpringBootApplication; | |
| 5 | +import org.springframework.cloud.client.discovery.EnableDiscoveryClient; | |
| 6 | +import org.springframework.cloud.client.loadbalancer.LoadBalanced; | |
| 7 | +import org.springframework.context.annotation.Bean; | |
| 8 | +import org.springframework.web.client.RestTemplate; | |
| 9 | + | |
| 10 | +@SpringBootApplication | |
| 11 | +@EnableDiscoveryClient | |
| 12 | +public class RibbonApplication { | |
| 13 | + | |
| 14 | + | |
| 15 | + @Bean | |
| 16 | + @LoadBalanced | |
| 17 | + RestTemplate restTemplate(){ | |
| 18 | + return new RestTemplate(); | |
| 19 | + } | |
| 20 | + | |
| 21 | + public static void main(String[] args) { | |
| 22 | + SpringApplication.run(RibbonApplication.class,args); | |
| 23 | + } | |
| 24 | + | |
| 25 | + | |
| 26 | + | |
| 27 | +} | ... | ... |
cloud/RibbonConsume/src/main/java/com/sincere/ribbon/control/FileRibbonControl.java
0 → 100644
| ... | ... | @@ -0,0 +1,53 @@ |
| 1 | +package com.sincere.ribbon.control; | |
| 2 | + | |
| 3 | +import org.slf4j.Logger; | |
| 4 | +import org.slf4j.LoggerFactory; | |
| 5 | +import org.springframework.beans.factory.annotation.Autowired; | |
| 6 | +import org.springframework.http.HttpEntity; | |
| 7 | +import org.springframework.http.HttpHeaders; | |
| 8 | +import org.springframework.http.HttpMethod; | |
| 9 | +import org.springframework.http.ResponseEntity; | |
| 10 | +import org.springframework.web.bind.annotation.*; | |
| 11 | +import org.springframework.web.client.RestTemplate; | |
| 12 | + | |
| 13 | +import javax.servlet.http.HttpServletRequest; | |
| 14 | +import java.util.Enumeration; | |
| 15 | +import java.util.HashMap; | |
| 16 | +import java.util.Map; | |
| 17 | + | |
| 18 | +@RestController | |
| 19 | +@RequestMapping("/file/*") | |
| 20 | +public class FileRibbonControl { | |
| 21 | + | |
| 22 | + Logger logger = LoggerFactory.getLogger(FileRibbonControl.class); | |
| 23 | + | |
| 24 | + @Autowired | |
| 25 | + RestTemplate restTemplate; | |
| 26 | + | |
| 27 | + @RequestMapping(value = "deleteFile/{fileName}", method = RequestMethod.GET) | |
| 28 | + public boolean deleteFile(@PathVariable String fileName, HttpServletRequest req) { | |
| 29 | + | |
| 30 | + HttpServletRequest request = req; | |
| 31 | + //获取header信息 | |
| 32 | + HttpHeaders requestHeaders = new HttpHeaders(); | |
| 33 | +// Enumeration<String> headerNames = request.getHeaderNames(); | |
| 34 | +// while (headerNames.hasMoreElements()) { | |
| 35 | +// String key = (String) headerNames.nextElement(); | |
| 36 | +// String value = request.getHeader(key); | |
| 37 | +// requestHeaders.add(key, value); | |
| 38 | +// } | |
| 39 | + requestHeaders.add("ossPath","ceshi"); | |
| 40 | + Map<String, String[]> params = new HashMap<>(); | |
| 41 | + //获取parameter信息 | |
| 42 | + if (params == null) { | |
| 43 | + params = request.getParameterMap(); | |
| 44 | + } | |
| 45 | + | |
| 46 | + HttpEntity<String> requestEntity = new HttpEntity<String>(null, requestHeaders); | |
| 47 | + ResponseEntity<String> rss = restTemplate.exchange("http://file-center/file/deleteFile/"+fileName, HttpMethod.DELETE, requestEntity, String.class, params); | |
| 48 | + logger.error("删除文件:" + rss.getStatusCodeValue()); | |
| 49 | + return true; | |
| 50 | + | |
| 51 | + } | |
| 52 | + | |
| 53 | +} | ... | ... |
cloud/RibbonConsume/src/main/java/com/sincere/ribbon/control/RibbonConsumeControl.java
0 → 100644
| ... | ... | @@ -0,0 +1,60 @@ |
| 1 | +package com.sincere.ribbon.control; | |
| 2 | + | |
| 3 | +import com.sincere.ribbon.model.Login; | |
| 4 | +import org.slf4j.Logger; | |
| 5 | +import org.slf4j.LoggerFactory; | |
| 6 | +import org.springframework.beans.factory.annotation.Autowired; | |
| 7 | +import org.springframework.cloud.client.ServiceInstance; | |
| 8 | +import org.springframework.cloud.client.discovery.DiscoveryClient; | |
| 9 | +import org.springframework.http.HttpEntity; | |
| 10 | +import org.springframework.http.HttpHeaders; | |
| 11 | +import org.springframework.http.MediaType; | |
| 12 | +import org.springframework.util.LinkedMultiValueMap; | |
| 13 | +import org.springframework.util.MultiValueMap; | |
| 14 | +import org.springframework.web.bind.annotation.*; | |
| 15 | +import org.springframework.web.client.RestTemplate; | |
| 16 | + | |
| 17 | +import java.util.HashMap; | |
| 18 | +import java.util.List; | |
| 19 | +import java.util.Map; | |
| 20 | + | |
| 21 | +@RestController | |
| 22 | +@RequestMapping(value = "/ribbon/*") | |
| 23 | +public class RibbonConsumeControl { | |
| 24 | + private static final Logger LOG = LoggerFactory.getLogger(RibbonConsumeControl.class); | |
| 25 | + | |
| 26 | + @Autowired | |
| 27 | + RestTemplate restTemplate; | |
| 28 | + | |
| 29 | + @Autowired | |
| 30 | + private DiscoveryClient discoveryClient; | |
| 31 | + | |
| 32 | + @RequestMapping(value = "login",method = RequestMethod.GET ) | |
| 33 | + public String login(@RequestParam("account")String account,@RequestParam("password")String password,@RequestParam("userType")String userType){ | |
| 34 | + LOG.error("登录中:"+account+password+userType); | |
| 35 | + HttpHeaders headers = new HttpHeaders(); | |
| 36 | + | |
| 37 | + Login login = new Login(); | |
| 38 | + login.setAccount(account); | |
| 39 | + login.setPassword(password); | |
| 40 | + login.setUserType(userType); | |
| 41 | + | |
| 42 | + String result = restTemplate.postForEntity("http://authserver/login",login,String.class).getBody(); | |
| 43 | + LOG.error("登录结果:"+result); | |
| 44 | + return result; | |
| 45 | + | |
| 46 | + } | |
| 47 | + | |
| 48 | + @GetMapping("serviceurl") | |
| 49 | + public Map<String, List<ServiceInstance>> serviceUrl() { | |
| 50 | + Map<String, List<ServiceInstance>> msl = new HashMap<>(); | |
| 51 | + List<String> services = discoveryClient.getServices(); | |
| 52 | + for (String service : services) { | |
| 53 | + List<ServiceInstance> sis = discoveryClient.getInstances(service); | |
| 54 | + msl.put(service, sis); | |
| 55 | + } | |
| 56 | + return msl; | |
| 57 | + } | |
| 58 | + | |
| 59 | + | |
| 60 | +} | ... | ... |
cloud/RibbonConsume/src/main/java/com/sincere/ribbon/model/Login.java
0 → 100644
| ... | ... | @@ -0,0 +1,44 @@ |
| 1 | +package com.sincere.ribbon.model; | |
| 2 | + | |
| 3 | +public class Login { | |
| 4 | + | |
| 5 | + private String account; | |
| 6 | + | |
| 7 | + private String password; | |
| 8 | + | |
| 9 | + private String userType; | |
| 10 | + | |
| 11 | + public String getAccount() { | |
| 12 | + return account; | |
| 13 | + } | |
| 14 | + | |
| 15 | + public void setAccount(String account) { | |
| 16 | + this.account = account; | |
| 17 | + } | |
| 18 | + | |
| 19 | + public String getPassword() { | |
| 20 | + return password; | |
| 21 | + } | |
| 22 | + | |
| 23 | + public void setPassword(String password) { | |
| 24 | + this.password = password; | |
| 25 | + } | |
| 26 | + | |
| 27 | + public String getUserType() { | |
| 28 | + return userType; | |
| 29 | + } | |
| 30 | + | |
| 31 | + public void setUserType(String userType) { | |
| 32 | + this.userType = userType; | |
| 33 | + } | |
| 34 | + | |
| 35 | + @Override | |
| 36 | + public String toString() { | |
| 37 | + return "Login{" + | |
| 38 | + "account='" + account + '\'' + | |
| 39 | + ", password='" + password + '\'' + | |
| 40 | + ", userType='" + userType + '\'' + | |
| 41 | + '}'; | |
| 42 | + } | |
| 43 | +} | |
| 44 | + | ... | ... |
| ... | ... | @@ -0,0 +1,30 @@ |
| 1 | +#端口 | |
| 2 | +server: | |
| 3 | + port: 8091 #固定端口 | |
| 4 | +# port: ${randomServerPort.value[5000,5005]} #随机端口 | |
| 5 | + | |
| 6 | +#服务名称 | |
| 7 | +spring: | |
| 8 | + application: | |
| 9 | + name: ribbon-consume | |
| 10 | + | |
| 11 | +#eureka client配置 | |
| 12 | +eureka: | |
| 13 | + client: | |
| 14 | + serviceUrl: | |
| 15 | +# defaultZone: http://localhost:8761/eureka/,http://localhost:8762/eureka/ | |
| 16 | + defaultZone: http://121.40.109.21:8761/eureka/,http://121.40.109.21:8762/eureka/ | |
| 17 | + #http://134.224.249.33:1111/eureka/ 正式库 | |
| 18 | + #http://134.224.249.33:1111/eureka/ 测试库 | |
| 19 | + #http://127.0.0.1:8761/eureka,http://127.0.0.1:8762/eureka | |
| 20 | + registry-fetch-interval-seconds: 5 | |
| 21 | + instance-info-replication-interval-seconds: 10 | |
| 22 | + instance: | |
| 23 | +# prefer-ip-address: true | |
| 24 | + instance-id: ${spring.application.name} | |
| 25 | +# instance-id: ${spring.application.name}:${spring.cloud.client.ip-address}:${spring.application.instance_id:${server.port}} #固定端口 | |
| 26 | +# instance-id: ${spring.application.name}:${spring.cloud.client.ip-address}:${spring.application.instance_id:${randomServerPort.value[5000,5005]}} #随机端口 | |
| 27 | + lease-renewal-interval-in-seconds: 10 #每隔几秒告诉eureka服务器我还存活,用于心跳检测 | |
| 28 | + lease-expiration-duration-in-seconds: 10 #如果心跳检测一直没有发送,10秒后会从eureka服务器中将此服务剔除 | |
| 29 | + status-page-url: http://${spring.cloud.client.ip-address}:${server.port}/doc.html # ${server.port}为该服务的端口号 | |
| 30 | +# status-page-url: http://${spring.cloud.client.ip-address}:${randomServerPort.value[5000,5005]}/document.html # ${server.port}为该服务的端口号 | |
| 0 | 31 | \ No newline at end of file | ... | ... |
cloud/autho/src/main/java/com/sincere/autho/control/LoginController.java
| ... | ... | @@ -21,6 +21,7 @@ public class LoginController { |
| 21 | 21 | |
| 22 | 22 | @RequestMapping(value = "/login" , method = RequestMethod.POST) |
| 23 | 23 | public BaseDto<String> login(@RequestBody LoginReqDto loginReqDto){ |
| 24 | + System.out.println("登录接口"); | |
| 24 | 25 | BaseDto<String> result = new BaseDto<>() ; |
| 25 | 26 | String userId = loginService.login(loginReqDto); |
| 26 | 27 | if(StringUtils.isNotBlank(userId)){ | ... | ... |
cloud/autho/src/main/resources/application.yaml
cloud/fIle-center/pom.xml
| ... | ... | @@ -58,6 +58,17 @@ |
| 58 | 58 | </goals> |
| 59 | 59 | </execution> |
| 60 | 60 | </executions> |
| 61 | + <configuration> | |
| 62 | + <includeSystemScope>true</includeSystemScope> | |
| 63 | + <layout>ZIP</layout> | |
| 64 | + <includes> | |
| 65 | + <include> | |
| 66 | + <!-- 排除所有Jar --> | |
| 67 | + <groupId>nothing</groupId> | |
| 68 | + <artifactId>nothing</artifactId> | |
| 69 | + </include> | |
| 70 | + </includes> | |
| 71 | + </configuration> | |
| 61 | 72 | </plugin> |
| 62 | 73 | |
| 63 | 74 | </plugins> | ... | ... |
cloud/fIle-center/src/main/java/com/sincere/file/control/FileControl.java
| ... | ... | @@ -37,6 +37,9 @@ public class FileControl { |
| 37 | 37 | public boolean deleteFile(@PathVariable String fileName,HttpServletRequest request){ |
| 38 | 38 | String ossPath = request.getHeader("ossPath");//oss的二级目录 |
| 39 | 39 | fileService.delete(fileName,ossPath); |
| 40 | + | |
| 41 | + System.out.println("fileName:"+fileName+"----ossPath:"+ossPath); | |
| 42 | + | |
| 40 | 43 | return true; |
| 41 | 44 | } |
| 42 | 45 | } | ... | ... |
cloud/fIle-center/src/main/resources/bootstrap.yml
| ... | ... | @@ -33,11 +33,12 @@ eureka: |
| 33 | 33 | registry-fetch-interval-seconds: 5 |
| 34 | 34 | instance-info-replication-interval-seconds: 10 |
| 35 | 35 | instance: |
| 36 | - prefer-ip-address: true | |
| 36 | +# prefer-ip-address: false | |
| 37 | 37 | instance-id: ${spring.application.name} |
| 38 | 38 | # instance-id: ${spring.application.name}:${spring.cloud.client.ip-address}:${spring.application.instance_id:${server.port}} #固定端口 |
| 39 | 39 | # instance-id: ${spring.application.name}:${spring.cloud.client.ip-address}:${spring.application.instance_id:${randomServerPort.value[5000,5005]}} #随机端口 |
| 40 | 40 | lease-renewal-interval-in-seconds: 10 #每隔几秒告诉eureka服务器我还存活,用于心跳检测 |
| 41 | 41 | lease-expiration-duration-in-seconds: 10 #如果心跳检测一直没有发送,10秒后会从eureka服务器中将此服务剔除 |
| 42 | - status-page-url: http://${spring.cloud.client.ip-address}:${server.port}/doc.html # ${server.port}为该服务的端口号 | |
| 43 | -# status-page-url: http://${spring.cloud.client.ip-address}:${randomServerPort.value[5000,5005]}/document.html # ${server.port}为该服务的端口号 | |
| 44 | 42 | \ No newline at end of file |
| 43 | +# status-page-url: http://${spring.cloud.client.ip-address}:${server.port}/doc.html # ${server.port}为该服务的端口号 | |
| 44 | + hostname: 121.40.30.78 | |
| 45 | +# status-page-url: http://${spring.cloud.client.ip-address}:${randomServerPort.value[5000,5005]}/document.html # ${server.port}为该服务的端口号 | |
| 45 | 46 | \ No newline at end of file | ... | ... |
cloud/getaway/pom.xml
| ... | ... | @@ -58,6 +58,17 @@ |
| 58 | 58 | </goals> |
| 59 | 59 | </execution> |
| 60 | 60 | </executions> |
| 61 | + <configuration> | |
| 62 | + <includeSystemScope>true</includeSystemScope> | |
| 63 | + <layout>ZIP</layout> | |
| 64 | + <includes> | |
| 65 | + <include> | |
| 66 | + <!-- 排除所有Jar --> | |
| 67 | + <groupId>nothing</groupId> | |
| 68 | + <artifactId>nothing</artifactId> | |
| 69 | + </include> | |
| 70 | + </includes> | |
| 71 | + </configuration> | |
| 61 | 72 | </plugin> |
| 62 | 73 | </plugins> |
| 63 | 74 | <finalName>${project.artifactId}</finalName> | ... | ... |
cloud/getaway/src/main/java/com/sincere/getaway/client/config/CorsConfig.java
| ... | ... | @@ -17,6 +17,7 @@ |
| 17 | 17 | //import org.springframework.web.server.ServerWebExchange; |
| 18 | 18 | //import org.springframework.web.server.WebFilter; |
| 19 | 19 | //import org.springframework.web.server.WebFilterChain; |
| 20 | +// | |
| 20 | 21 | //import reactor.core.publisher.Mono; |
| 21 | 22 | // |
| 22 | 23 | ///** |
| ... | ... | @@ -37,7 +38,7 @@ |
| 37 | 38 | // |
| 38 | 39 | // @Bean |
| 39 | 40 | // public RouteDefinitionLocator discoveryClientRouteDefinitionLocator(DiscoveryClient discoveryClient, |
| 40 | -// DiscoveryLocatorProperties properties) { | |
| 41 | +// DiscoveryLocatorProperties properties) { | |
| 41 | 42 | // return new DiscoveryClientRouteDefinitionLocator(discoveryClient, properties); |
| 42 | 43 | // } |
| 43 | 44 | // | ... | ... |
cloud/getaway/src/main/resources/application.yml
| ... | ... | @@ -43,12 +43,19 @@ spring: |
| 43 | 43 | - StripPrefix=1 |
| 44 | 44 | - id: authserver |
| 45 | 45 | uri: http://121.40.30.78:9005 |
| 46 | +# uri: lb://authserver | |
| 46 | 47 | predicates: |
| 47 | 48 | - Path=/authserver/** |
| 48 | 49 | filters: |
| 49 | 50 | - StripPrefix=1 |
| 50 | - default-filters: | |
| 51 | - - DedupeResponseHeader=Access-Control-Allow-Origin, RETAIN_UNIQUE | |
| 51 | + - id: NewSmartCampus | |
| 52 | + uri: http://114.55.30.100:1111 | |
| 53 | + predicates: | |
| 54 | + - Path=/NewSmartCampus/** | |
| 55 | + filters: | |
| 56 | + - StripPrefix=1 | |
| 57 | +# default-filters: | |
| 58 | +# - DedupeResponseHeader=Access-Control-Allow-Origin, RETAIN_UNIQUE | |
| 52 | 59 | # discovery: |
| 53 | 60 | # locator: |
| 54 | 61 | # lowerCaseServiceId: true |
| ... | ... | @@ -70,4 +77,4 @@ ribbon: |
| 70 | 77 | |
| 71 | 78 | |
| 72 | 79 | url: |
| 73 | - ignored: /SmartCampusWebApi/**,/authserver/** | |
| 74 | 80 | \ No newline at end of file |
| 81 | + ignored: /SmartCampusWebApi/**,/authserver/**,/NewSmartCampus/** | |
| 75 | 82 | \ No newline at end of file | ... | ... |
cloud/haikangface/pom.xml
| ... | ... | @@ -97,11 +97,11 @@ |
| 97 | 97 | <scope>compile</scope> |
| 98 | 98 | </dependency> |
| 99 | 99 | |
| 100 | - <!--<dependency>--> | |
| 101 | - <!--<groupId>com.baidu.aip</groupId>--> | |
| 102 | - <!--<artifactId>java-sdk</artifactId>--> | |
| 103 | - <!--<version>4.10.0</version>--> | |
| 104 | - <!--</dependency>--> | |
| 100 | + <dependency> | |
| 101 | + <groupId>com.baidu.aip</groupId> | |
| 102 | + <artifactId>java-sdk</artifactId> | |
| 103 | + <version>4.10.0</version> | |
| 104 | + </dependency> | |
| 105 | 105 | <dependency> |
| 106 | 106 | <groupId>com.sun.image.jce</groupId> |
| 107 | 107 | <artifactId>jce</artifactId> | ... | ... |
cloud/haikangface/src/main/java/com/sincere/haikangface/CMSServer.java
| ... | ... | @@ -326,7 +326,7 @@ public class CMSServer implements ApplicationRunner { |
| 326 | 326 | pFilePath.write(0, strFilePath.getBytes(), 0, strFilePath.getBytes().length); |
| 327 | 327 | |
| 328 | 328 | if (isZhuaPai) { |
| 329 | - MqtUtils.getInstance().sendMsg("http://campus.myjxt.com//face17e5/School16/Student/" + pFileName); | |
| 329 | +// MqtUtils.getInstance().sendMsg("http://campus.myjxt.com//face17e5/School16/Student/" + pFileName); | |
| 330 | 330 | } |
| 331 | 331 | |
| 332 | 332 | return true; |
| ... | ... | @@ -509,7 +509,7 @@ public class CMSServer implements ApplicationRunner { |
| 509 | 509 | int err = hCEhomeSS.NET_ESS_GetLastError(); |
| 510 | 510 | System.out.println("NET_ESS_ClientDoUpload失败,错误号:" + err); |
| 511 | 511 | } else { |
| 512 | - url = "http://" + ip + ":" + 8081 + new String(szUrl).trim(); | |
| 512 | + url = "http://120.26.116.253:" + 8081 + new String(szUrl).trim(); | |
| 513 | 513 | // System.err.println("NET_ESS_ClientDoUpload成功!:" + url); |
| 514 | 514 | } |
| 515 | 515 | hCEhomeSS.NET_ESS_DestroyClient(client);//释放资源 | ... | ... |
cloud/haikangface/src/main/java/com/sincere/haikangface/admindao/ZuoyeAdminDao.java
| ... | ... | @@ -11,13 +11,13 @@ import java.util.List; |
| 11 | 11 | public interface ZuoyeAdminDao { |
| 12 | 12 | |
| 13 | 13 | |
| 14 | - @Select("select Id from ZY_YYChapter where Name like #{chapter}") | |
| 14 | + @Select("select Top(1) Id from ZY_YYChapter where Name like #{chapter}") | |
| 15 | 15 | String getChapterId(@Param("chapter") String chapter); |
| 16 | 16 | |
| 17 | - @Select("select Id from ZY_YYKnowledge where name like #{knowledge}") | |
| 17 | + @Select("select Top(1) Id from ZY_YYKnowledge where name like #{knowledge}") | |
| 18 | 18 | String getKnowledgeId(@Param("knowledge") String knowledge); |
| 19 | 19 | |
| 20 | - @Select("select Id from ZY_YYGrade where name like #{gradeId}") | |
| 20 | + @Select("select Top(1) Id from ZY_YYGrade where name like #{gradeId}") | |
| 21 | 21 | String getGradeId(@Param("gradeId") String gradeId); |
| 22 | 22 | |
| 23 | 23 | @Insert("insert into ZY_YYQuestion (Question, Qtype, Answer, CorrectAnswer, Analysis, State, Intime, StemId, ExamineFlag, SubjectId, SuggestionTime, DifficulteId, ChapterId, GradeId, SourceId, QuestionSource, AutomaticCorrection)" + | ... | ... |
cloud/haikangface/src/main/java/com/sincere/haikangface/async/SendUserAsync.java
| ... | ... | @@ -39,7 +39,7 @@ public class SendUserAsync { |
| 39 | 39 | |
| 40 | 40 | // @Async("taskExecutor") |
| 41 | 41 | public void sendStuToHaiKang(String srcFile, String picUrl, String card, String startTime, String endTime, int validTimeEnabled, String name, String deviceId, String userType, int isPiliang) { |
| 42 | - System.out.println("下发时间设置:"+validTimeEnabled); | |
| 42 | +// System.out.println("下发时间设置:"+validTimeEnabled); | |
| 43 | 43 | if (null == sendRecoderUtils) sendRecoderUtils = new SendRecoderUtils(); |
| 44 | 44 | //1、检测图片是否合格 |
| 45 | 45 | boolean check = true; |
| ... | ... | @@ -68,7 +68,6 @@ public class SendUserAsync { |
| 68 | 68 | |
| 69 | 69 | } |
| 70 | 70 | |
| 71 | - | |
| 72 | 71 | /** |
| 73 | 72 | * 调用传图片接口 |
| 74 | 73 | * @param filePath |
| ... | ... | @@ -80,13 +79,12 @@ public class SendUserAsync { |
| 80 | 79 | * @param validTimeEnabled |
| 81 | 80 | * @param userType |
| 82 | 81 | */ |
| 83 | - @Async("taskExecutor") | |
| 82 | +// @Async("taskExecutor") | |
| 84 | 83 | public void uploadImgs(String filePath,String card,String name,String deviceId,String startTime,String endTime,int validTimeEnabled,String userType){ |
| 85 | - | |
| 86 | 84 | HttpUtil.uploadImgs(filePath,card,name,deviceId,startTime,endTime,validTimeEnabled,userType); |
| 87 | 85 | } |
| 88 | 86 | |
| 89 | - @Async("taskExecutor") | |
| 87 | +// @Async("taskExecutor") | |
| 90 | 88 | public void deleteCard(String deviceId, String card){ |
| 91 | 89 | HttpUtil.deleteCard(deviceId,card); |
| 92 | 90 | } | ... | ... |
cloud/haikangface/src/main/java/com/sincere/haikangface/bean/Answer.java
0 → 100644
| ... | ... | @@ -0,0 +1,37 @@ |
| 1 | +package com.sincere.haikangface.bean; | |
| 2 | + | |
| 3 | +import io.swagger.annotations.ApiModelProperty; | |
| 4 | + | |
| 5 | +public class Answer { | |
| 6 | + | |
| 7 | + @ApiModelProperty(value = "题目id") | |
| 8 | + private String queId; | |
| 9 | + | |
| 10 | + @ApiModelProperty(value = "答案图片链接") | |
| 11 | + private String ansUrl; | |
| 12 | + | |
| 13 | + public String getQueId() { | |
| 14 | + return queId; | |
| 15 | + } | |
| 16 | + | |
| 17 | + public void setQueId(String queId) { | |
| 18 | + this.queId = queId; | |
| 19 | + } | |
| 20 | + | |
| 21 | + public String getAnsUrl() { | |
| 22 | + return ansUrl; | |
| 23 | + } | |
| 24 | + | |
| 25 | + public void setAnsUrl(String ansUrl) { | |
| 26 | + this.ansUrl = ansUrl; | |
| 27 | + } | |
| 28 | + | |
| 29 | + @Override | |
| 30 | + public String toString() { | |
| 31 | + return "Answer{" + | |
| 32 | + "queId='" + queId + '\'' + | |
| 33 | + ", ansUrl='" + ansUrl + '\'' + | |
| 34 | + '}'; | |
| 35 | + } | |
| 36 | + | |
| 37 | +} | ... | ... |
cloud/haikangface/src/main/java/com/sincere/haikangface/bean/Images2Ddevices.java
0 → 100644
| ... | ... | @@ -0,0 +1,48 @@ |
| 1 | +package com.sincere.haikangface.bean; | |
| 2 | + | |
| 3 | +import io.swagger.annotations.ApiModelProperty; | |
| 4 | + | |
| 5 | +/** | |
| 6 | + * 下发图片到设备集合对象 | |
| 7 | + */ | |
| 8 | +public class Images2Ddevices { | |
| 9 | + | |
| 10 | + @ApiModelProperty("设备集合,用,隔开") | |
| 11 | + private String devices; | |
| 12 | + @ApiModelProperty("图片目录") | |
| 13 | + private String imgPath; | |
| 14 | + @ApiModelProperty("身份类型1:老师,2:学生") | |
| 15 | + private String userType; | |
| 16 | + | |
| 17 | + public String getUserType() { | |
| 18 | + return userType; | |
| 19 | + } | |
| 20 | + | |
| 21 | + public void setUserType(String userType) { | |
| 22 | + this.userType = userType; | |
| 23 | + } | |
| 24 | + | |
| 25 | + public String getDevices() { | |
| 26 | + return devices; | |
| 27 | + } | |
| 28 | + | |
| 29 | + public void setDevices(String devices) { | |
| 30 | + this.devices = devices; | |
| 31 | + } | |
| 32 | + | |
| 33 | + public String getImgPath() { | |
| 34 | + return imgPath; | |
| 35 | + } | |
| 36 | + | |
| 37 | + public void setImgPath(String imgPath) { | |
| 38 | + this.imgPath = imgPath; | |
| 39 | + } | |
| 40 | + | |
| 41 | + @Override | |
| 42 | + public String toString() { | |
| 43 | + return "Images2Ddevices{" + | |
| 44 | + "devices='" + devices + '\'' + | |
| 45 | + ", imgPath='" + imgPath + '\'' + | |
| 46 | + '}'; | |
| 47 | + } | |
| 48 | +} | ... | ... |
cloud/haikangface/src/main/java/com/sincere/haikangface/bean/ShijiBean.java
0 → 100644
| ... | ... | @@ -0,0 +1,79 @@ |
| 1 | +package com.sincere.haikangface.bean; | |
| 2 | + | |
| 3 | +import io.swagger.annotations.Api; | |
| 4 | +import io.swagger.annotations.ApiModelProperty; | |
| 5 | + | |
| 6 | +import java.util.List; | |
| 7 | + | |
| 8 | +public class ShijiBean { | |
| 9 | + @ApiModelProperty(value = "章节") | |
| 10 | + private String chapter;//章节 | |
| 11 | + @ApiModelProperty(value = "请求链接") | |
| 12 | + private String requestUrl;//请求链接 | |
| 13 | + @ApiModelProperty(value = "年级") | |
| 14 | + private String grade;//年级 | |
| 15 | + @ApiModelProperty(value = "科目") | |
| 16 | + private String subject;//科目 | |
| 17 | + @ApiModelProperty(value = "学校id") | |
| 18 | + private String schoolId;//科目 | |
| 19 | + @ApiModelProperty(value = "答案") | |
| 20 | + private List<Answer> answer; | |
| 21 | + | |
| 22 | + | |
| 23 | + public String getSchoolId() { | |
| 24 | + return schoolId; | |
| 25 | + } | |
| 26 | + | |
| 27 | + public void setSchoolId(String schoolId) { | |
| 28 | + this.schoolId = schoolId; | |
| 29 | + } | |
| 30 | + | |
| 31 | + public String getSubject() { | |
| 32 | + return subject; | |
| 33 | + } | |
| 34 | + | |
| 35 | + public void setSubject(String subject) { | |
| 36 | + this.subject = subject; | |
| 37 | + } | |
| 38 | + | |
| 39 | + public String getChapter() { | |
| 40 | + return chapter; | |
| 41 | + } | |
| 42 | + | |
| 43 | + public void setChapter(String chapter) { | |
| 44 | + this.chapter = chapter; | |
| 45 | + } | |
| 46 | + | |
| 47 | + public String getRequestUrl() { | |
| 48 | + return requestUrl; | |
| 49 | + } | |
| 50 | + | |
| 51 | + public void setRequestUrl(String requestUrl) { | |
| 52 | + this.requestUrl = requestUrl; | |
| 53 | + } | |
| 54 | + | |
| 55 | + public List<Answer> getAnswer() { | |
| 56 | + return answer; | |
| 57 | + } | |
| 58 | + | |
| 59 | + public void setAnswer(List<Answer> answer) { | |
| 60 | + this.answer = answer; | |
| 61 | + } | |
| 62 | + | |
| 63 | + public String getGrade() { | |
| 64 | + return grade; | |
| 65 | + } | |
| 66 | + | |
| 67 | + public void setGrade(String grade) { | |
| 68 | + this.grade = grade; | |
| 69 | + } | |
| 70 | + | |
| 71 | + @Override | |
| 72 | + public String toString() { | |
| 73 | + return "ShijiBean{" + | |
| 74 | + "chapter='" + chapter + '\'' + | |
| 75 | + ", requestUrl='" + requestUrl + '\'' + | |
| 76 | + ", answer=" + answer + | |
| 77 | + '}'; | |
| 78 | + } | |
| 79 | +} | ... | ... |
cloud/haikangface/src/main/java/com/sincere/haikangface/bean/StudentBean.java
| ... | ... | @@ -276,11 +276,30 @@ public class StudentBean implements Serializable { |
| 276 | 276 | @Override |
| 277 | 277 | public String toString() { |
| 278 | 278 | return "StudentBean{" + |
| 279 | + "teacher_id='" + teacher_id + '\'' + | |
| 280 | + ", parent_id='" + parent_id + '\'' + | |
| 281 | + ", ID=" + ID + | |
| 282 | + ", UserId='" + UserId + '\'' + | |
| 283 | + ", CustomerId='" + CustomerId + '\'' + | |
| 284 | + ", StudentType=" + StudentType + | |
| 285 | + ", UserType=" + UserType + | |
| 279 | 286 | ", name='" + name + '\'' + |
| 287 | + ", ClassId=" + ClassId + | |
| 280 | 288 | ", ClassName='" + ClassName + '\'' + |
| 289 | + ", OldCard='" + OldCard + '\'' + | |
| 281 | 290 | ", Card='" + Card + '\'' + |
| 282 | 291 | ", SchoolId=" + SchoolId + |
| 283 | 292 | ", school_id=" + school_id + |
| 293 | + ", IsNew=" + IsNew + | |
| 294 | + ", UpdateType=" + UpdateType + | |
| 295 | + ", AddTime=" + AddTime + | |
| 296 | + ", Sex=" + Sex + | |
| 297 | + ", Face='" + Face + '\'' + | |
| 298 | + ", studentcode='" + studentcode + '\'' + | |
| 299 | + ", student_num='" + student_num + '\'' + | |
| 300 | + ", student_id='" + student_id + '\'' + | |
| 301 | + ", user_id='" + user_id + '\'' + | |
| 302 | + ", photo='" + photo + '\'' + | |
| 284 | 303 | ", teacher_num='" + teacher_num + '\'' + |
| 285 | 304 | ", num='" + num + '\'' + |
| 286 | 305 | '}'; | ... | ... |
cloud/haikangface/src/main/java/com/sincere/haikangface/bean/UploadBean.java
0 → 100644
| ... | ... | @@ -0,0 +1,124 @@ |
| 1 | +package com.sincere.haikangface.bean; | |
| 2 | + | |
| 3 | +/** | |
| 4 | + * 上传人脸的元素 | |
| 5 | + */ | |
| 6 | +public class UploadBean { | |
| 7 | + | |
| 8 | + | |
| 9 | + private String filePath;//源文件 | |
| 10 | + | |
| 11 | + private String targetPath;//目标文件 | |
| 12 | + | |
| 13 | + private String cardNUm;//十进制卡号 | |
| 14 | + | |
| 15 | + private String startTime;//开始时间 | |
| 16 | + | |
| 17 | + private String endTime;//结束时间 | |
| 18 | + | |
| 19 | + private int validTimeEnabled;//1:增加,0:删除 | |
| 20 | + | |
| 21 | + private String name;//姓名 | |
| 22 | + | |
| 23 | + private String deviceId;//设备id | |
| 24 | + | |
| 25 | + private String userType;//用户身份 | |
| 26 | + | |
| 27 | + private String isPiliang;//0:批量,1:单张 | |
| 28 | + | |
| 29 | + public String getFilePath() { | |
| 30 | + return filePath; | |
| 31 | + } | |
| 32 | + | |
| 33 | + public void setFilePath(String filePath) { | |
| 34 | + this.filePath = filePath; | |
| 35 | + } | |
| 36 | + | |
| 37 | + public String getTargetPath() { | |
| 38 | + return targetPath; | |
| 39 | + } | |
| 40 | + | |
| 41 | + public void setTargetPath(String targetPath) { | |
| 42 | + this.targetPath = targetPath; | |
| 43 | + } | |
| 44 | + | |
| 45 | + public String getCardNUm() { | |
| 46 | + return cardNUm; | |
| 47 | + } | |
| 48 | + | |
| 49 | + public void setCardNUm(String cardNUm) { | |
| 50 | + this.cardNUm = cardNUm; | |
| 51 | + } | |
| 52 | + | |
| 53 | + public String getStartTime() { | |
| 54 | + return startTime; | |
| 55 | + } | |
| 56 | + | |
| 57 | + public void setStartTime(String startTime) { | |
| 58 | + this.startTime = startTime; | |
| 59 | + } | |
| 60 | + | |
| 61 | + public String getEndTime() { | |
| 62 | + return endTime; | |
| 63 | + } | |
| 64 | + | |
| 65 | + public void setEndTime(String endTime) { | |
| 66 | + this.endTime = endTime; | |
| 67 | + } | |
| 68 | + | |
| 69 | + public int getValidTimeEnabled() { | |
| 70 | + return validTimeEnabled; | |
| 71 | + } | |
| 72 | + | |
| 73 | + public void setValidTimeEnabled(int validTimeEnabled) { | |
| 74 | + this.validTimeEnabled = validTimeEnabled; | |
| 75 | + } | |
| 76 | + | |
| 77 | + public String getName() { | |
| 78 | + return name; | |
| 79 | + } | |
| 80 | + | |
| 81 | + public void setName(String name) { | |
| 82 | + this.name = name; | |
| 83 | + } | |
| 84 | + | |
| 85 | + public String getDeviceId() { | |
| 86 | + return deviceId; | |
| 87 | + } | |
| 88 | + | |
| 89 | + public void setDeviceId(String deviceId) { | |
| 90 | + this.deviceId = deviceId; | |
| 91 | + } | |
| 92 | + | |
| 93 | + public String getUserType() { | |
| 94 | + return userType; | |
| 95 | + } | |
| 96 | + | |
| 97 | + public void setUserType(String userType) { | |
| 98 | + this.userType = userType; | |
| 99 | + } | |
| 100 | + | |
| 101 | + public String getIsPiliang() { | |
| 102 | + return isPiliang; | |
| 103 | + } | |
| 104 | + | |
| 105 | + public void setIsPiliang(String isPiliang) { | |
| 106 | + this.isPiliang = isPiliang; | |
| 107 | + } | |
| 108 | + | |
| 109 | + @Override | |
| 110 | + public String toString() { | |
| 111 | + return "UploadBean{" + | |
| 112 | + "filePath='" + filePath + '\'' + | |
| 113 | + ", targetPath='" + targetPath + '\'' + | |
| 114 | + ", cardNUm='" + cardNUm + '\'' + | |
| 115 | + ", startTime='" + startTime + '\'' + | |
| 116 | + ", endTime='" + endTime + '\'' + | |
| 117 | + ", validTimeEnabled=" + validTimeEnabled + | |
| 118 | + ", name='" + name + '\'' + | |
| 119 | + ", deviceId='" + deviceId + '\'' + | |
| 120 | + ", userType='" + userType + '\'' + | |
| 121 | + ", isPiliang='" + isPiliang + '\'' + | |
| 122 | + '}'; | |
| 123 | + } | |
| 124 | +} | ... | ... |
cloud/haikangface/src/main/java/com/sincere/haikangface/control/FileControl.java
| ... | ... | @@ -2,19 +2,25 @@ package com.sincere.haikangface.control; |
| 2 | 2 | |
| 3 | 3 | import com.sincere.haikangface.CMSServer; |
| 4 | 4 | import com.sincere.haikangface.async.SendUserAsync; |
| 5 | -import com.sincere.haikangface.bean.face.SendFaceBean; | |
| 5 | +import com.sincere.haikangface.bean.Images2Ddevices; | |
| 6 | +import com.sincere.haikangface.bean.StudentBean; | |
| 7 | +import com.sincere.haikangface.bean.UploadBean; | |
| 6 | 8 | import com.sincere.haikangface.dao.UserDao; |
| 7 | 9 | import com.sincere.haikangface.utils.FileUtils; |
| 8 | 10 | import com.sincere.haikangface.utils.SendRecoderUtils; |
| 9 | 11 | import com.sincere.haikangface.xiananDao.SendRecordDao; |
| 10 | 12 | import io.swagger.annotations.Api; |
| 11 | 13 | import io.swagger.annotations.ApiOperation; |
| 14 | +import org.slf4j.Logger; | |
| 15 | +import org.slf4j.LoggerFactory; | |
| 12 | 16 | import org.springframework.beans.factory.annotation.Autowired; |
| 13 | 17 | import org.springframework.web.bind.annotation.*; |
| 14 | 18 | import org.springframework.web.multipart.MultipartFile; |
| 15 | 19 | |
| 16 | 20 | import java.io.File; |
| 17 | 21 | import java.io.FileOutputStream; |
| 22 | +import java.text.SimpleDateFormat; | |
| 23 | +import java.util.*; | |
| 18 | 24 | |
| 19 | 25 | @RestController |
| 20 | 26 | @Api("文件管理器") |
| ... | ... | @@ -35,14 +41,21 @@ public class FileControl { |
| 35 | 41 | |
| 36 | 42 | SendRecoderUtils sendRecoderUtils; |
| 37 | 43 | |
| 44 | + Queue<UploadBean> uploadBeanQueue = new LinkedList<>(); | |
| 45 | + | |
| 38 | 46 | @RequestMapping(method = RequestMethod.POST, value = "uploadImg") |
| 39 | 47 | public String uploadImg(@RequestParam("file") MultipartFile file, @RequestParam("card") String card |
| 40 | 48 | , @RequestParam("name") String name, @RequestParam("deviceId") String deviceId, @RequestParam("startTime") String startTime, |
| 41 | 49 | @RequestParam("endTime") String endTime, @RequestParam("validTimeEnabled") int validTimeEnabled, @RequestParam("userType") String userType) { |
| 42 | 50 | |
| 51 | + | |
| 43 | 52 | try { |
| 44 | - String fileName = file.getOriginalFilename();//文件名 | |
| 53 | + if (!cmsServer.getIsDeviceOnline(deviceId)){ | |
| 54 | + FileUtils.getInstance().writeLogs("设备不在线:" +deviceId, FileUtils.devices); | |
| 55 | + return "0"; | |
| 56 | + } | |
| 45 | 57 | |
| 58 | + String fileName = file.getOriginalFilename();//文件名 | |
| 46 | 59 | File outFile = new File(".//imgCom"); |
| 47 | 60 | if (!outFile.exists()) outFile.mkdirs(); |
| 48 | 61 | File dest = new File(outFile, fileName); |
| ... | ... | @@ -54,7 +67,7 @@ public class FileControl { |
| 54 | 67 | long time = System.currentTimeMillis(); |
| 55 | 68 | if (filePath.contains(".jpg")) filePath = filePath.replace(".jpg", ".png"); |
| 56 | 69 | if (new File(filePath.trim()).exists()) { |
| 57 | - String targetPath = FileUtils.picPathComp + new File(filePath).getName(); | |
| 70 | + String targetPath = FileUtils.picPathComp + new File(filePath).getName().replace(".png",".jpg"); | |
| 58 | 71 | try { |
| 59 | 72 | int isPiliang = 0;//0:批量,1:单张 |
| 60 | 73 | if (filePath.contains("face17e50")) {//批量发送 | ... | ... |
cloud/haikangface/src/main/java/com/sincere/haikangface/control/QueControl21.java
0 → 100644
| ... | ... | @@ -0,0 +1,274 @@ |
| 1 | +package com.sincere.haikangface.control; | |
| 2 | + | |
| 3 | +import com.baidu.aip.util.Base64Util; | |
| 4 | +import com.sincere.common.util.AuthService; | |
| 5 | +import com.sincere.haikangface.admindao.ZuoyeAdminDao; | |
| 6 | +import com.sincere.haikangface.bean.Answer; | |
| 7 | +import com.sincere.haikangface.bean.ShijiBean; | |
| 8 | +import com.sincere.haikangface.bean.homework.QuestionBean; | |
| 9 | +import com.sincere.haikangface.dao.UserDao; | |
| 10 | +import com.sincere.haikangface.dao.ZuoYeDao; | |
| 11 | +import com.sincere.haikangface.utils.HttpUtil; | |
| 12 | +import io.swagger.annotations.Api; | |
| 13 | +import io.swagger.annotations.ApiOperation; | |
| 14 | +import org.json.JSONArray; | |
| 15 | +import org.json.JSONException; | |
| 16 | +import org.json.JSONObject; | |
| 17 | +import org.springframework.beans.factory.annotation.Autowired; | |
| 18 | +import org.springframework.http.HttpEntity; | |
| 19 | +import org.springframework.http.HttpHeaders; | |
| 20 | +import org.springframework.http.MediaType; | |
| 21 | +import org.springframework.http.ResponseEntity; | |
| 22 | +import org.springframework.util.LinkedMultiValueMap; | |
| 23 | +import org.springframework.util.MultiValueMap; | |
| 24 | +import org.springframework.util.StringUtils; | |
| 25 | +import org.springframework.web.bind.annotation.RequestBody; | |
| 26 | +import org.springframework.web.bind.annotation.RequestMapping; | |
| 27 | +import org.springframework.web.bind.annotation.RequestMethod; | |
| 28 | +import org.springframework.web.bind.annotation.RestController; | |
| 29 | +import org.springframework.web.client.RestTemplate; | |
| 30 | + | |
| 31 | +import java.io.*; | |
| 32 | +import java.net.URL; | |
| 33 | +import java.net.URLConnection; | |
| 34 | +import java.net.URLEncoder; | |
| 35 | +import java.text.SimpleDateFormat; | |
| 36 | +import java.util.ArrayList; | |
| 37 | +import java.util.Date; | |
| 38 | +import java.util.HashMap; | |
| 39 | +import java.util.List; | |
| 40 | + | |
| 41 | +@RestController | |
| 42 | +@RequestMapping("/shiji/*") | |
| 43 | +@Api("21世纪题目添加") | |
| 44 | +public class QueControl21 { | |
| 45 | + @Autowired | |
| 46 | + ZuoYeDao zuoYeDao; | |
| 47 | + | |
| 48 | + @Autowired | |
| 49 | + ZuoyeAdminDao zuoyeAdminDao; | |
| 50 | + | |
| 51 | + @RequestMapping(value = "addQuestion", method = RequestMethod.POST) | |
| 52 | + @ApiOperation(value = "添加题目") | |
| 53 | + public String addQuestion(@RequestBody ShijiBean shijiBean) { | |
| 54 | + List<String> errQuesList = new ArrayList<>(); | |
| 55 | + try { | |
| 56 | + | |
| 57 | + RestTemplate restTemplate = new RestTemplate(); | |
| 58 | + | |
| 59 | + String url = shijiBean.getRequestUrl(); | |
| 60 | + | |
| 61 | + String content = restTemplate.getForObject(url, String.class, new HashMap<>()); | |
| 62 | + | |
| 63 | + JSONObject jsonObject = new JSONObject(content); | |
| 64 | + JSONObject data = jsonObject.optJSONObject("data"); | |
| 65 | + JSONArray questions = data.optJSONArray("questions"); | |
| 66 | + for (int i = 0; i < questions.length(); i++) { | |
| 67 | + JSONObject question = questions.optJSONObject(i); | |
| 68 | + String question_text = question.optString("question_text"); | |
| 69 | + String question_id = question.optString("question_id"); | |
| 70 | + String explanation = question.optString("explanation");//解析 | |
| 71 | + String difficult_index = question.optString("difficult_index");//难度系数 | |
| 72 | + String channel_type_name = question.optString("channel_type_name");//题目类型 | |
| 73 | + JSONArray t_knowledge = question.optJSONArray("t_knowledge"); | |
| 74 | + String Knowledge = ""; | |
| 75 | + if (t_knowledge != null && t_knowledge.length() > 0) { | |
| 76 | + JSONArray t_knowArr = t_knowledge.optJSONArray(0); | |
| 77 | + if (t_knowArr != null && t_knowArr.length() > 0) | |
| 78 | + Knowledge = t_knowArr.optJSONObject(0).optString("name"); | |
| 79 | + } | |
| 80 | + String chapterId = zuoyeAdminDao.getChapterId(shijiBean.getChapter()); | |
| 81 | + String KnowledgeId = zuoyeAdminDao.getKnowledgeId(Knowledge); | |
| 82 | + String gradeId = zuoyeAdminDao.getGradeId(shijiBean.getGrade()); | |
| 83 | + explanation = "<p><img src=\"" + explanation + "\" title=\"image.png\" alt=\"image.png\"/></p>"; | |
| 84 | + String answer = getAnswerUrl(question_id, shijiBean.getAnswer());//答案 | |
| 85 | + System.out.println("answer:" + answer + "KnowledgeId:" + KnowledgeId + " chapterId:" + shijiBean.getChapter()+chapterId+" gradeId:"+gradeId+" Knowledge:"+Knowledge); | |
| 86 | + | |
| 87 | + | |
| 88 | + if (StringUtils.isEmpty(chapterId)){ | |
| 89 | + return "章节不存在"; | |
| 90 | + } | |
| 91 | + | |
| 92 | + if (StringUtils.isEmpty(KnowledgeId)){ | |
| 93 | + return "知识点不存在"; | |
| 94 | + } | |
| 95 | + | |
| 96 | + if (StringUtils.isEmpty(gradeId)){ | |
| 97 | + return "年级不存在"; | |
| 98 | + } | |
| 99 | + | |
| 100 | + if (StringUtils.isEmpty(answer)){ | |
| 101 | + return "答案解析失败"; | |
| 102 | + } | |
| 103 | + | |
| 104 | + if (!answer.equals("") && KnowledgeId != null && chapterId != null && gradeId != null) { | |
| 105 | + List<QuestionBean> questionBeans = zuoYeDao.getQuestions(question_text);//获取题目 | |
| 106 | +// System.out.println("questionBeans:"+questionBeans); | |
| 107 | + if (questionBeans != null && questionBeans.size() > 0) {//更新题库 | |
| 108 | + for (int j = 0; j < questionBeans.size(); j++) { | |
| 109 | + QuestionBean questionBean = questionBeans.get(j); | |
| 110 | + zuoYeDao.updateQuestion(questionBean.getID(), answer, explanation); | |
| 111 | + System.out.println("更新题库成功"); | |
| 112 | + } | |
| 113 | + } else {//新增题库 | |
| 114 | + String dateTime = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()); | |
| 115 | + String subjectId = getSubjectId(shijiBean.getSubject()); | |
| 116 | + if (subjectId == null) return "科目输入错误"; | |
| 117 | + String createrUserId = jsonObject.optString("createUserId"); | |
| 118 | + String schoolId = shijiBean.getSchoolId(); | |
| 119 | + zuoYeDao.addQuestionStem(channel_type_name, "1", dateTime); | |
| 120 | + int stemId = zuoYeDao.getStemId(); | |
| 121 | + zuoYeDao.addQuestion(question_text, "1", "A,B,C,D", answer, explanation, "1", dateTime, | |
| 122 | + "1", createrUserId, createrUserId, subjectId, schoolId, difficult_index, | |
| 123 | + KnowledgeId, chapterId, gradeId, "1", "1", "1", stemId + "", "1", "0", "0"); | |
| 124 | + System.out.println("添加题库成功"); | |
| 125 | + } | |
| 126 | + } else { | |
| 127 | + System.out.println("导入题目失败"); | |
| 128 | + errQuesList.add(question.toString()); | |
| 129 | + } | |
| 130 | + Thread.sleep(1000); | |
| 131 | + } | |
| 132 | + | |
| 133 | + } catch (JSONException e) { | |
| 134 | + e.printStackTrace(); | |
| 135 | + } catch (InterruptedException e) { | |
| 136 | + e.printStackTrace(); | |
| 137 | + } | |
| 138 | + return "导入题目成功"; | |
| 139 | + } | |
| 140 | + | |
| 141 | + private String getSubjectId(String subject) { | |
| 142 | + | |
| 143 | + switch (subject) { | |
| 144 | + case "数学": | |
| 145 | + return "1"; | |
| 146 | + case "语文": | |
| 147 | + return "2"; | |
| 148 | + case "化学": | |
| 149 | + return "3"; | |
| 150 | + case "英语": | |
| 151 | + return "5"; | |
| 152 | + case "科学": | |
| 153 | + return "9"; | |
| 154 | + } | |
| 155 | + | |
| 156 | + return null; | |
| 157 | + } | |
| 158 | + | |
| 159 | + | |
| 160 | + private String getAnswerUrl(String quesId, List<Answer> answer) { | |
| 161 | + | |
| 162 | + for (Answer ans : | |
| 163 | + answer) { | |
| 164 | + System.out.println("ans:" + ans.getQueId() + "-------quesId:" + quesId); | |
| 165 | + if (quesId.equals(ans.getQueId())) { | |
| 166 | + return getAnswer(ans.getAnsUrl(), 2); | |
| 167 | + } | |
| 168 | + | |
| 169 | + } | |
| 170 | + | |
| 171 | + | |
| 172 | + return ""; | |
| 173 | + | |
| 174 | + } | |
| 175 | + | |
| 176 | + | |
| 177 | + private String url = "https://aip.baidubce.com/rest/2.0/ocr/v1/general_basic?access_token="+ AuthService.getAuth(); | |
| 178 | + | |
| 179 | + private String getAnswer(String imgUrl, int type) { | |
| 180 | + | |
| 181 | + RestTemplate restTemplate = new RestTemplate(); | |
| 182 | + | |
| 183 | + HttpHeaders headers = new HttpHeaders(); | |
| 184 | + headers.setContentType(MediaType.APPLICATION_FORM_URLENCODED); | |
| 185 | + | |
| 186 | + MultiValueMap<String, String> multiValueMap = new LinkedMultiValueMap<>(); | |
| 187 | + if (type == 1) { | |
| 188 | + multiValueMap.add("url", imgUrl); | |
| 189 | + } else if (type == 2) { | |
| 190 | + multiValueMap.add("image", Base64Util.encode(download(imgUrl))); | |
| 191 | + } | |
| 192 | + HttpEntity<MultiValueMap> requestEntity = new HttpEntity<MultiValueMap>(multiValueMap, | |
| 193 | + | |
| 194 | + headers); | |
| 195 | + | |
| 196 | + ResponseEntity<String> result = restTemplate.postForEntity(url, requestEntity, String.class); | |
| 197 | + | |
| 198 | + JSONObject jsonObject = null; | |
| 199 | + try { | |
| 200 | + jsonObject = new JSONObject(result.getBody()); | |
| 201 | + } catch (JSONException e) { | |
| 202 | + e.printStackTrace(); | |
| 203 | + } | |
| 204 | +// System.out.println("result:"+result.getBody()); | |
| 205 | + JSONArray words_result = jsonObject.optJSONArray("words_result"); | |
| 206 | + System.out.println("words_result:"+words_result); | |
| 207 | + StringBuilder stringBuilder = new StringBuilder(); | |
| 208 | + if (words_result != null) { | |
| 209 | + for (int i = 0; i < words_result.length(); i++) { | |
| 210 | + String words = words_result.optJSONObject(i).optString("words"); | |
| 211 | + stringBuilder.append(words + " "); | |
| 212 | + } | |
| 213 | + System.out.println("result:" + stringBuilder.toString()); | |
| 214 | + } | |
| 215 | + return stringBuilder.toString().equals("") ? "" : stringBuilder.toString(); | |
| 216 | + } | |
| 217 | + | |
| 218 | + private byte[] download(String urlString) { | |
| 219 | + try { | |
| 220 | +System.out.println("urlString:"+urlString); | |
| 221 | + // 构造URL | |
| 222 | + URL url = new URL(urlString); | |
| 223 | + // 打开连接 | |
| 224 | + URLConnection con = url.openConnection(); | |
| 225 | + // 输入流 | |
| 226 | + InputStream is = con.getInputStream(); | |
| 227 | + // 1K的数据缓冲 | |
| 228 | + byte[] bs = new byte[1024]; | |
| 229 | + // 读取到的数据长度 | |
| 230 | + int len; | |
| 231 | + // 输出的文件流 | |
| 232 | + String filename = "./imgs/"; //下载路径及下载图片名称 | |
| 233 | + File file = new File(filename); | |
| 234 | + if (!file.exists())file.mkdirs(); | |
| 235 | + | |
| 236 | + String filePath = filename+File.separator+System.currentTimeMillis()+".png"; | |
| 237 | + File outFile = new File(filePath); | |
| 238 | + if (!outFile.exists())outFile.createNewFile(); | |
| 239 | + FileOutputStream os = new FileOutputStream(outFile, true); | |
| 240 | + // 开始读取 | |
| 241 | + while ((len = is.read(bs)) != -1) { | |
| 242 | + os.write(bs,0,len); | |
| 243 | + } | |
| 244 | + // 完毕,关闭所有链接 | |
| 245 | + is.close(); | |
| 246 | + os.close(); | |
| 247 | + return InputStream2ByteArray(outFile.getAbsolutePath()); | |
| 248 | + } catch (Exception e) { | |
| 249 | + e.printStackTrace(); | |
| 250 | + } | |
| 251 | + return null; | |
| 252 | + } | |
| 253 | + | |
| 254 | + private byte[] InputStream2ByteArray(String filePath) throws IOException { | |
| 255 | + | |
| 256 | + InputStream in = new FileInputStream(filePath); | |
| 257 | + byte[] data = toByteArray(in); | |
| 258 | + in.close(); | |
| 259 | + | |
| 260 | + return data; | |
| 261 | + } | |
| 262 | + | |
| 263 | + private byte[] toByteArray(InputStream in) throws IOException { | |
| 264 | + | |
| 265 | + ByteArrayOutputStream out = new ByteArrayOutputStream(); | |
| 266 | + byte[] buffer = new byte[1024 * 4]; | |
| 267 | + int n = 0; | |
| 268 | + while ((n = in.read(buffer)) != -1) { | |
| 269 | + out.write(buffer, 0, n); | |
| 270 | + } | |
| 271 | + return out.toByteArray(); | |
| 272 | + } | |
| 273 | + | |
| 274 | +} | ... | ... |
cloud/haikangface/src/main/java/com/sincere/haikangface/control/UserControl.java
| 1 | 1 | package com.sincere.haikangface.control; |
| 2 | 2 | |
| 3 | 3 | import com.sincere.common.dto.smartCampus.SZ_AttendanceDto; |
| 4 | +import com.sincere.haikangface.bean.Images2Ddevices; | |
| 4 | 5 | import com.sincere.haikangface.utils.BaiduApiUtiols; |
| 5 | 6 | import com.sincere.haikangface.CMSServer; |
| 6 | 7 | import com.sincere.haikangface.async.SendUserAsync; |
| ... | ... | @@ -14,13 +15,12 @@ import io.swagger.annotations.Api; |
| 14 | 15 | import io.swagger.annotations.ApiImplicitParam; |
| 15 | 16 | import io.swagger.annotations.ApiImplicitParams; |
| 16 | 17 | import io.swagger.annotations.ApiOperation; |
| 18 | +import org.slf4j.Logger; | |
| 19 | +import org.slf4j.LoggerFactory; | |
| 17 | 20 | import org.springframework.beans.factory.annotation.Autowired; |
| 18 | 21 | import org.springframework.http.MediaType; |
| 19 | 22 | import org.springframework.util.StringUtils; |
| 20 | -import org.springframework.web.bind.annotation.RequestMapping; | |
| 21 | -import org.springframework.web.bind.annotation.RequestMethod; | |
| 22 | -import org.springframework.web.bind.annotation.RequestParam; | |
| 23 | -import org.springframework.web.bind.annotation.RestController; | |
| 23 | +import org.springframework.web.bind.annotation.*; | |
| 24 | 24 | import org.springframework.web.multipart.MultipartFile; |
| 25 | 25 | |
| 26 | 26 | import java.io.*; |
| ... | ... | @@ -59,12 +59,9 @@ public class UserControl { |
| 59 | 59 | @RequestParam("endTime") String endTime, @RequestParam("validTimeEnabled") int validTimeEnabled, @RequestParam("userType") String userType) { |
| 60 | 60 | |
| 61 | 61 | try { |
| 62 | - | |
| 63 | 62 | if (filePath.contains(".jpg")) filePath = filePath.replace(".jpg", ".png"); |
| 64 | 63 | if (new File(filePath.trim()).exists()) { |
| 65 | - | |
| 66 | 64 | return sendImg(filePath, deviceId, card, name, userType); |
| 67 | - | |
| 68 | 65 | } else { |
| 69 | 66 | if (null == sendRecoderUtils) sendRecoderUtils = new SendRecoderUtils(); |
| 70 | 67 | sendRecoderUtils.sendFail(sendRecordDao, Long.parseLong(getCard(card), 16) + "", filePath, deviceId, userDao, "文件不存在", userType); |
| ... | ... | @@ -96,7 +93,7 @@ public class UserControl { |
| 96 | 93 | else { |
| 97 | 94 | sendUserAsync.uploadImgs(filePath, card, name, deviceId, startTime, endTime, 1, userType); |
| 98 | 95 | } |
| 99 | - System.out.println("time:" + (System.currentTimeMillis() - time) / 1000); | |
| 96 | +// System.out.println("time:" + (System.currentTimeMillis() - time) / 1000); | |
| 100 | 97 | return true; |
| 101 | 98 | } catch (Exception e) { |
| 102 | 99 | e.printStackTrace(); |
| ... | ... | @@ -105,6 +102,47 @@ public class UserControl { |
| 105 | 102 | |
| 106 | 103 | } |
| 107 | 104 | |
| 105 | + Logger logger = LoggerFactory.getLogger(FileControl.class); | |
| 106 | + | |
| 107 | + @RequestMapping(value = "sendImg2Devices", method = RequestMethod.POST) | |
| 108 | + @ApiOperation("本地下发人脸给设备") | |
| 109 | + public boolean sendImg2Devices(@RequestBody Images2Ddevices images2Ddevices) throws Exception { | |
| 110 | + String startTime = new SimpleDateFormat("yyyy-MM-dd HH:mm:dd").format(new Date()); | |
| 111 | + Calendar calendar = Calendar.getInstance(); | |
| 112 | + calendar.add(Calendar.YEAR, 10); | |
| 113 | + String endTime = new SimpleDateFormat("yyyy-MM-dd HH:mm:dd").format(calendar.getTime()); | |
| 114 | + String devices = images2Ddevices.getDevices(); | |
| 115 | + | |
| 116 | + String imgPath = images2Ddevices.getImgPath(); | |
| 117 | + | |
| 118 | + String[] devStrs = devices.split(","); | |
| 119 | + | |
| 120 | + File[] imgStrs = new File(imgPath).listFiles(); | |
| 121 | + | |
| 122 | + if (null != imgStrs) { | |
| 123 | + for (int i = 0; i < imgStrs.length; i++) { | |
| 124 | + | |
| 125 | + File filePath = imgStrs[i];//图片路径 | |
| 126 | + if (filePath.exists()) { | |
| 127 | + String studentCode = filePath.getName().split("\\.")[0]; | |
| 128 | + StudentBean studentBean = userDao.getStudent_NumWitdCode(studentCode); | |
| 129 | + if (null != studentBean) { | |
| 130 | + for (int j = 0; j < devStrs.length; j++) { | |
| 131 | + String devId = devStrs[j]; | |
| 132 | + sendUserAsync.uploadImgs(filePath.getAbsolutePath(), studentBean.getStudent_num(), studentBean.getName(), devId, startTime, endTime, 1, images2Ddevices.getUserType()); | |
| 133 | + } | |
| 134 | + } else { | |
| 135 | + logger.error("学生对象不存在"); | |
| 136 | + } | |
| 137 | + | |
| 138 | + } | |
| 139 | + | |
| 140 | + } | |
| 141 | + } | |
| 142 | + | |
| 143 | + return true; | |
| 144 | + } | |
| 145 | + | |
| 108 | 146 | @RequestMapping(value = "sendFaces", method = RequestMethod.GET) |
| 109 | 147 | @ApiOperation(value = "下发学校下所有人脸给指定设备", notes = "下发所有人脸给指定设备") |
| 110 | 148 | public void sendFaces(@RequestParam("deviceIds") String deviceIds, @RequestParam("schoolId") String schoolId, @RequestParam("userType") String userType) { |
| ... | ... | @@ -131,13 +169,13 @@ public class UserControl { |
| 131 | 169 | StudentBean studentBean = null; |
| 132 | 170 | String card = "", name = ""; |
| 133 | 171 | if (userType.equals("1")) { |
| 134 | - studentBean = userDao.getTeacherWithstudentcode(file.getName().split("\\.")[0],schoolId); | |
| 135 | - if (null!=studentBean){ | |
| 172 | + studentBean = userDao.getTeacherWithstudentcode(file.getName().split("\\.")[0], schoolId); | |
| 173 | + if (null != studentBean) { | |
| 136 | 174 | card = studentBean.getTeacher_num(); |
| 137 | 175 | name = studentBean.getName(); |
| 138 | 176 | } |
| 139 | 177 | } else if (userType.equals("2")) { |
| 140 | - studentBean = userDao.getStudentWithstudentcode(file.getName().split("\\.")[0],schoolId); | |
| 178 | + studentBean = userDao.getStudentWithstudentcode(file.getName().split("\\.")[0], schoolId); | |
| 141 | 179 | if (null != studentBean) { |
| 142 | 180 | card = studentBean.getStudent_num(); |
| 143 | 181 | name = studentBean.getName(); |
| ... | ... | @@ -158,10 +196,10 @@ public class UserControl { |
| 158 | 196 | |
| 159 | 197 | @RequestMapping(value = "sendFaceToDevices", method = RequestMethod.GET) |
| 160 | 198 | @ApiOperation(value = "下发单个用户给指定设备", notes = "下发单个用户给指定设备") |
| 161 | - @ApiImplicitParams({@ApiImplicitParam(name = "deviceIds",value = "设备id用逗号,拼接"), | |
| 162 | - @ApiImplicitParam(name = "file",value = "100服务器上图片绝对路径")}) | |
| 163 | - public void sendFaceToDevices(@RequestParam("deviceIds") String deviceIds, @RequestParam("userType") String userType,@RequestParam("file") String file, | |
| 164 | - @RequestParam("card") String card,@RequestParam("name") String name) { | |
| 199 | + @ApiImplicitParams({@ApiImplicitParam(name = "deviceIds", value = "设备id用逗号,拼接"), | |
| 200 | + @ApiImplicitParam(name = "file", value = "100服务器上图片绝对路径")}) | |
| 201 | + public void sendFaceToDevices(@RequestParam("deviceIds") String deviceIds, @RequestParam("userType") String userType, @RequestParam("file") String file, | |
| 202 | + @RequestParam("card") String card, @RequestParam("name") String name) { | |
| 165 | 203 | |
| 166 | 204 | String[] deviceIdsStr = deviceIds.split(","); |
| 167 | 205 | |
| ... | ... | @@ -173,8 +211,7 @@ public class UserControl { |
| 173 | 211 | } |
| 174 | 212 | |
| 175 | 213 | |
| 176 | - | |
| 177 | - @RequestMapping(value = "DeleteCard", method = RequestMethod.GET) | |
| 214 | + @RequestMapping(value = "DeleteCard", method = RequestMethod.GET) | |
| 178 | 215 | @ApiOperation("删除人脸") |
| 179 | 216 | public boolean deleteCard(@RequestParam("deviceId") String deviceId, @RequestParam("card") String card) { |
| 180 | 217 | if (cmsServer.getIsDeviceOnline(deviceId)) | ... | ... |
cloud/haikangface/src/main/java/com/sincere/haikangface/control/ZuoYeControl.java
| ... | ... | @@ -206,8 +206,11 @@ public class ZuoYeControl { |
| 206 | 206 | String channel_type_name = question.optString("channel_type_name");//题目类型 |
| 207 | 207 | JSONArray t_knowledge = question.optJSONArray("t_knowledge"); |
| 208 | 208 | String Knowledge = ""; |
| 209 | - if (t_knowledge != null && t_knowledge.length() > 0) | |
| 210 | - Knowledge = t_knowledge.optJSONObject(0).optString("name"); | |
| 209 | + if (t_knowledge != null && t_knowledge.length() > 0){ | |
| 210 | + JSONArray t_knowArr = t_knowledge.optJSONArray(0); | |
| 211 | + if (t_knowArr!=null&&t_knowArr.length()>0) | |
| 212 | + Knowledge = t_knowArr.optJSONObject(0).optString("name"); | |
| 213 | + } | |
| 211 | 214 | |
| 212 | 215 | String chapterId = zuoyeAdminDao.getChapterId(jsonObject.optString("chapter")); |
| 213 | 216 | String KnowledgeId = zuoyeAdminDao.getKnowledgeId(jsonObject.optString("chapter")); | ... | ... |
cloud/haikangface/src/main/java/com/sincere/haikangface/dao/UserDao.java
| ... | ... | @@ -2,7 +2,6 @@ package com.sincere.haikangface.dao; |
| 2 | 2 | |
| 3 | 3 | import com.sincere.haikangface.bean.*; |
| 4 | 4 | import org.apache.ibatis.annotations.*; |
| 5 | -import org.springframework.security.core.parameters.P; | |
| 6 | 5 | import org.springframework.stereotype.Repository; |
| 7 | 6 | |
| 8 | 7 | import java.util.List; |
| ... | ... | @@ -186,7 +185,7 @@ public interface UserDao { |
| 186 | 185 | @Select("select class_id from SZ_V_School_Student where school_id = 479 and student_id = #{customerId} ") |
| 187 | 186 | String getClassName(@Param("customerId") String customerId); |
| 188 | 187 | |
| 189 | - @Select("select clint_id from SZ_AttendanceDto where school_id = #{schoolId} and clint_type=18") | |
| 188 | + @Select("select clint_id from SZ_Attendance where school_id = #{schoolId} and clint_type=18") | |
| 190 | 189 | List<String> getDeviceIdsWidthSchoolId(@Param("schoolId") int schoolId); |
| 191 | 190 | |
| 192 | 191 | |
| ... | ... | @@ -211,4 +210,7 @@ public interface UserDao { |
| 211 | 210 | "from SZ_V_School_Teacher\n" + |
| 212 | 211 | "where num = #{num} and school_id = #{schoolId}") |
| 213 | 212 | StudentBean getTeacherWithstudentcode(@Param("num") String num,@Param("schoolId")String schoolId); |
| 213 | + | |
| 214 | + @Select("select Top(1) * from SZ_V_School_Student where studentcode = #{studentcode}") | |
| 215 | + StudentBean getStudent_NumWitdCode(@Param("studentcode") String studentcode); | |
| 214 | 216 | } | ... | ... |
cloud/haikangface/src/main/java/com/sincere/haikangface/utils/CompressPic.java
| ... | ... | @@ -16,7 +16,7 @@ import java.io.InputStream; |
| 16 | 16 | public class CompressPic { |
| 17 | 17 | |
| 18 | 18 | public static String CompressPic(String srcPath, String targetPath) throws Exception { |
| 19 | - double cutPercent = 0.4; | |
| 19 | + double cutPercent = 0.1; | |
| 20 | 20 | File file = new File(srcPath.trim()); |
| 21 | 21 | FileInputStream fileInputStreamSrc = new FileInputStream(file); |
| 22 | 22 | BufferedImage bufferedImage = ImageIO.read(fileInputStreamSrc); |
| ... | ... | @@ -26,8 +26,9 @@ public class CompressPic { |
| 26 | 26 | System.out.println("fileLength:"+fileLength); |
| 27 | 27 | if ((fileLength / 1024) < 200) { |
| 28 | 28 | writeImgToFile(bufferedImage, width, height, targetPath); |
| 29 | - } else | |
| 29 | + } else{ | |
| 30 | 30 | while ((fileLength / 1024) >= 200) { |
| 31 | + System.out.println("fileLength:"+fileLength); | |
| 31 | 32 | width = (int) (width * (1 - cutPercent)); |
| 32 | 33 | height = (int) (height * (1 - cutPercent)); |
| 33 | 34 | |
| ... | ... | @@ -41,6 +42,7 @@ public class CompressPic { |
| 41 | 42 | fileLength = file1.length(); |
| 42 | 43 | fileInputStream.close(); |
| 43 | 44 | } |
| 45 | + } | |
| 44 | 46 | // System.out.printf("图片大小:"+fileLength/1024); |
| 45 | 47 | fileInputStreamSrc.close(); |
| 46 | 48 | return targetPath; |
| ... | ... | @@ -64,10 +66,10 @@ public class CompressPic { |
| 64 | 66 | } |
| 65 | 67 | |
| 66 | 68 | }*/ |
| 67 | - System.out.println("读写图片:" + write); | |
| 69 | +// System.out.println("读写图片:" + write); | |
| 68 | 70 | deskImage.close(); |
| 69 | 71 | } catch (Exception e) { |
| 70 | - System.out.println("读写图片:" + e.toString()); | |
| 72 | +// System.out.println("读写图片:" + e.toString()); | |
| 71 | 73 | e.printStackTrace(); |
| 72 | 74 | } |
| 73 | 75 | } | ... | ... |
cloud/haikangface/src/main/java/com/sincere/haikangface/utils/SendRecoderUtils.java
| ... | ... | @@ -100,7 +100,7 @@ public class SendRecoderUtils { |
| 100 | 100 | |
| 101 | 101 | break; |
| 102 | 102 | } |
| 103 | - System.out.println("studentBean:" + studentBean); | |
| 103 | +// System.out.println("studentBean:" + studentBean); | |
| 104 | 104 | if (null != studentBean) { |
| 105 | 105 | String time = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()); |
| 106 | 106 | String schoolName = userDao.getSchoolName(studentBean.getSchool_id() + ""); | ... | ... |
cloud/haikangface/src/main/resources/application.yaml
| ... | ... | @@ -38,8 +38,8 @@ eureka: |
| 38 | 38 | lease-renewal-interval-in-seconds: 10 |
| 39 | 39 | client: |
| 40 | 40 | service-url: |
| 41 | -# defaultZone: http://121.40.109.21:8761/eureka/,http://121.40.109.21:8762/eureka/ | |
| 42 | - defaultZone: http://localhost:8761/eureka/,http://localhost:8762/eureka/ | |
| 41 | + defaultZone: http://121.40.109.21:8761/eureka/,http://121.40.109.21:8762/eureka/ | |
| 42 | +# defaultZone: http://localhost:8761/eureka/,http://localhost:8762/eureka/ | |
| 43 | 43 | |
| 44 | 44 | mybatis: |
| 45 | 45 | campus: | ... | ... |
cloud/pom.xml
cloud/server1/src/main/resources/application.yaml
| ... | ... | @@ -4,7 +4,7 @@ eureka: |
| 4 | 4 | lease-renewal-interval-in-seconds: 10 |
| 5 | 5 | lease-expiration-duration-in-seconds: 60 |
| 6 | 6 | hostname: localhost |
| 7 | - prefer-ip-address: true | |
| 7 | + prefer-ip-address: false | |
| 8 | 8 | server: |
| 9 | 9 | #是否开启保护模式 |
| 10 | 10 | enable-self-preservation: false #关闭服务器自我保护,客户端心跳检测15分钟内错误达到80%服务会保护,导致别人还认为是好用的服务 | ... | ... |
cloud/server2/src/main/resources/application.yaml
| ... | ... | @@ -13,7 +13,7 @@ eureka: |
| 13 | 13 | lease-renewal-interval-in-seconds: 10 |
| 14 | 14 | lease-expiration-duration-in-seconds: 60 |
| 15 | 15 | hostname: localhost |
| 16 | - prefer-ip-address: true | |
| 16 | + prefer-ip-address: false | |
| 17 | 17 | server: |
| 18 | 18 | #是否开启保护模式 |
| 19 | 19 | enable-self-preservation: false #关闭服务器自我保护,客户端心跳检测15分钟内错误达到80%服务会保护,导致别人还认为是好用的服务 | ... | ... |