parent
74683e1fb1
commit
77cfec981c
@ -0,0 +1,25 @@ |
|||||||
|
target/ |
||||||
|
!.mvn/wrapper/maven-wrapper.jar |
||||||
|
|
||||||
|
### STS ### |
||||||
|
.apt_generated |
||||||
|
.classpath |
||||||
|
.factorypath |
||||||
|
.project |
||||||
|
.settings |
||||||
|
.springBeans |
||||||
|
|
||||||
|
### IntelliJ IDEA ### |
||||||
|
.idea |
||||||
|
*.iws |
||||||
|
*.iml |
||||||
|
*.ipr |
||||||
|
|
||||||
|
### NetBeans ### |
||||||
|
nbproject/private/ |
||||||
|
build/ |
||||||
|
nbbuild/ |
||||||
|
dist/ |
||||||
|
nbdist/ |
||||||
|
.nb-gradle/ |
||||||
|
/local-config/ |
@ -0,0 +1,108 @@ |
|||||||
|
<?xml version="1.0" encoding="UTF-8"?> |
||||||
|
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" |
||||||
|
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> |
||||||
|
<modelVersion>4.0.0</modelVersion> |
||||||
|
<groupId>com.gitee.sop</groupId> |
||||||
|
<artifactId>sop-easyopen</artifactId> |
||||||
|
<version>1.0.0-SNAPSHOT</version> |
||||||
|
<packaging>jar</packaging> |
||||||
|
|
||||||
|
<name>easyopen-server-empty</name> |
||||||
|
<description>easyopen Demo project for Spring Boot</description> |
||||||
|
|
||||||
|
<parent> |
||||||
|
<groupId>org.springframework.boot</groupId> |
||||||
|
<artifactId>spring-boot-starter-parent</artifactId> |
||||||
|
<version>2.1.2.RELEASE</version> |
||||||
|
<relativePath /> <!-- lookup parent from repository --> |
||||||
|
</parent> |
||||||
|
|
||||||
|
<properties> |
||||||
|
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> |
||||||
|
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding> |
||||||
|
<spring-cloud.version>Greenwich.RELEASE</spring-cloud.version> |
||||||
|
<java.version>1.8</java.version> |
||||||
|
</properties> |
||||||
|
|
||||||
|
<dependencies> |
||||||
|
<!-- sop接入依赖 --> |
||||||
|
<dependency> |
||||||
|
<groupId>com.gitee.sop</groupId> |
||||||
|
<artifactId>sop-service-common</artifactId> |
||||||
|
<version>1.0.0-SNAPSHOT</version> |
||||||
|
</dependency> |
||||||
|
<dependency> |
||||||
|
<groupId>org.springframework.cloud</groupId> |
||||||
|
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId> |
||||||
|
</dependency> |
||||||
|
<dependency> |
||||||
|
<groupId>net.oschina.durcframework</groupId> |
||||||
|
<artifactId>easyopen</artifactId> |
||||||
|
<version>1.16.1</version> |
||||||
|
</dependency> |
||||||
|
<!-- sop接入依赖 end --> |
||||||
|
|
||||||
|
<dependency> |
||||||
|
<groupId>org.springframework.boot</groupId> |
||||||
|
<artifactId>spring-boot-starter-web</artifactId> |
||||||
|
</dependency> |
||||||
|
<dependency> |
||||||
|
<groupId>org.springframework.boot</groupId> |
||||||
|
<artifactId>spring-boot-starter-thymeleaf</artifactId> |
||||||
|
</dependency> |
||||||
|
|
||||||
|
<dependency> |
||||||
|
<groupId>org.springframework.boot</groupId> |
||||||
|
<artifactId>spring-boot-starter-data-redis</artifactId> |
||||||
|
</dependency> |
||||||
|
|
||||||
|
<dependency> |
||||||
|
<groupId>org.springframework.boot</groupId> |
||||||
|
<artifactId>spring-boot-configuration-processor</artifactId> |
||||||
|
<optional>true</optional> |
||||||
|
</dependency> |
||||||
|
<dependency> |
||||||
|
<groupId>org.springframework.boot</groupId> |
||||||
|
<artifactId>spring-boot-devtools</artifactId> |
||||||
|
<optional>true</optional> |
||||||
|
</dependency> |
||||||
|
|
||||||
|
<dependency> |
||||||
|
<groupId>org.springframework.boot</groupId> |
||||||
|
<artifactId>spring-boot-starter-test</artifactId> |
||||||
|
<scope>test</scope> |
||||||
|
</dependency> |
||||||
|
|
||||||
|
</dependencies> |
||||||
|
|
||||||
|
<dependencyManagement> |
||||||
|
<dependencies> |
||||||
|
<dependency> |
||||||
|
<groupId>org.springframework.cloud</groupId> |
||||||
|
<artifactId>spring-cloud-dependencies</artifactId> |
||||||
|
<version>${spring-cloud.version}</version> |
||||||
|
<type>pom</type> |
||||||
|
<scope>import</scope> |
||||||
|
</dependency> |
||||||
|
</dependencies> |
||||||
|
</dependencyManagement> |
||||||
|
|
||||||
|
<build> |
||||||
|
<plugins> |
||||||
|
<plugin> |
||||||
|
<groupId>org.springframework.boot</groupId> |
||||||
|
<artifactId>spring-boot-maven-plugin</artifactId> |
||||||
|
</plugin> |
||||||
|
<!-- 打包时跳过测试 --> |
||||||
|
<plugin> |
||||||
|
<groupId>org.apache.maven.plugins</groupId> |
||||||
|
<artifactId>maven-surefire-plugin</artifactId> |
||||||
|
<configuration> |
||||||
|
<skipTests>true</skipTests> |
||||||
|
</configuration> |
||||||
|
</plugin> |
||||||
|
</plugins> |
||||||
|
</build> |
||||||
|
|
||||||
|
|
||||||
|
</project> |
@ -0,0 +1,31 @@ |
|||||||
|
# easyopen-server |
||||||
|
|
||||||
|
接口服务器空项目,可在此基础上做开发。 |
||||||
|
|
||||||
|
入口类:IndexController |
||||||
|
|
||||||
|
业务类在api下,重点关注这里即可。 |
||||||
|
|
||||||
|
``` |
||||||
|
└─com.gitee.easyopen.server |
||||||
|
│ EmptySpringbootApplication.java // springboot启动类 |
||||||
|
│ IndexController.java // easyopen入口类 |
||||||
|
│ |
||||||
|
├─api // 存放接口 |
||||||
|
│ │ GoodsApi.java // 示例接口 |
||||||
|
│ │ |
||||||
|
│ ├─param // 存放接口参数类 |
||||||
|
│ │ GoodsParam.java |
||||||
|
│ │ |
||||||
|
│ └─result // 存放放回接口类 |
||||||
|
│ Goods.java |
||||||
|
│ |
||||||
|
├─config // spring配置 |
||||||
|
│ CorsConfig.java |
||||||
|
│ |
||||||
|
├─interceptor // easyopen拦截器 |
||||||
|
│ LogInterceptor.java |
||||||
|
│ |
||||||
|
└─message // 错误处理 |
||||||
|
CommonErrors.java |
||||||
|
``` |
@ -0,0 +1,25 @@ |
|||||||
|
package com.gitee.easyopen.server; |
||||||
|
|
||||||
|
import com.gitee.easyopen.ApiConfig; |
||||||
|
import com.gitee.easyopen.support.ApiController; |
||||||
|
import org.springframework.stereotype.Controller; |
||||||
|
import org.springframework.web.bind.annotation.RequestMapping; |
||||||
|
|
||||||
|
import java.util.HashMap; |
||||||
|
import java.util.Map; |
||||||
|
|
||||||
|
/** |
||||||
|
* 文档地址:http://localhost:8080/api/doc
|
||||||
|
*/ |
||||||
|
@Controller |
||||||
|
@RequestMapping("api") |
||||||
|
public class IndexController extends ApiController { |
||||||
|
@Override |
||||||
|
protected void initApiConfig(ApiConfig apiConfig) { |
||||||
|
apiConfig.setShowDoc(true); // 显示文档页面
|
||||||
|
// 配置国际化消息
|
||||||
|
Map<String, String> appSecretStore = new HashMap<String, String>(); |
||||||
|
appSecretStore.put("test", "123456"); |
||||||
|
apiConfig.addAppSecret(appSecretStore); |
||||||
|
} |
||||||
|
} |
@ -0,0 +1,14 @@ |
|||||||
|
package com.gitee.easyopen.server; |
||||||
|
|
||||||
|
import org.springframework.boot.SpringApplication; |
||||||
|
import org.springframework.boot.autoconfigure.SpringBootApplication; |
||||||
|
import org.springframework.cloud.client.discovery.EnableDiscoveryClient; |
||||||
|
|
||||||
|
@EnableDiscoveryClient |
||||||
|
@SpringBootApplication |
||||||
|
public class SopEasyopenApplication { |
||||||
|
|
||||||
|
public static void main(String[] args) { |
||||||
|
SpringApplication.run(SopEasyopenApplication.class, args); |
||||||
|
} |
||||||
|
} |
@ -0,0 +1,31 @@ |
|||||||
|
package com.gitee.easyopen.server.api; |
||||||
|
|
||||||
|
import com.gitee.easyopen.annotation.Api; |
||||||
|
import com.gitee.easyopen.annotation.ApiService; |
||||||
|
import com.gitee.easyopen.doc.annotation.ApiDoc; |
||||||
|
import com.gitee.easyopen.doc.annotation.ApiDocMethod; |
||||||
|
import com.gitee.easyopen.server.api.param.GoodsParam; |
||||||
|
import com.gitee.easyopen.server.api.result.Goods; |
||||||
|
|
||||||
|
import java.math.BigDecimal; |
||||||
|
|
||||||
|
/** |
||||||
|
* 业务类 |
||||||
|
* |
||||||
|
* @author tanghc |
||||||
|
*/ |
||||||
|
@ApiService |
||||||
|
@ApiDoc("商品模块") |
||||||
|
public class GoodsApi { |
||||||
|
|
||||||
|
@Api(name = "goods.get") |
||||||
|
@ApiDocMethod(description = "获取商品") |
||||||
|
Goods getGoods(GoodsParam param) { |
||||||
|
Goods goods = new Goods(); |
||||||
|
goods.setId(1L); |
||||||
|
goods.setGoods_name("苹果iPhoneX"); |
||||||
|
goods.setPrice(new BigDecimal(8000)); |
||||||
|
return goods; |
||||||
|
} |
||||||
|
|
||||||
|
} |
@ -0,0 +1,23 @@ |
|||||||
|
package com.gitee.easyopen.server.api.param; |
||||||
|
|
||||||
|
import com.gitee.easyopen.doc.annotation.ApiDocField; |
||||||
|
import org.hibernate.validator.constraints.Length; |
||||||
|
|
||||||
|
import javax.validation.constraints.NotEmpty; |
||||||
|
|
||||||
|
public class GoodsParam { |
||||||
|
|
||||||
|
@ApiDocField(description = "商品名称", required = true, example = "iphoneX") |
||||||
|
@NotEmpty(message = "商品名称不能为空") |
||||||
|
@Length(min = 3, max = 20, message = "{goods.name.length}=3,20") |
||||||
|
private String goods_name; |
||||||
|
|
||||||
|
public String getGoods_name() { |
||||||
|
return goods_name; |
||||||
|
} |
||||||
|
|
||||||
|
public void setGoods_name(String goods_name) { |
||||||
|
this.goods_name = goods_name; |
||||||
|
} |
||||||
|
|
||||||
|
} |
@ -0,0 +1,46 @@ |
|||||||
|
package com.gitee.easyopen.server.api.result; |
||||||
|
|
||||||
|
import com.gitee.easyopen.doc.DataType; |
||||||
|
import com.gitee.easyopen.doc.annotation.ApiDocField; |
||||||
|
|
||||||
|
import java.math.BigDecimal; |
||||||
|
|
||||||
|
public class Goods { |
||||||
|
|
||||||
|
@ApiDocField(description = "id") |
||||||
|
private Long id; |
||||||
|
@ApiDocField(description = "商品名称") |
||||||
|
private String goods_name; |
||||||
|
@ApiDocField(description = "价格", dataType = DataType.FLOAT) |
||||||
|
private BigDecimal price; |
||||||
|
|
||||||
|
public Long getId() { |
||||||
|
return id; |
||||||
|
} |
||||||
|
|
||||||
|
public void setId(Long id) { |
||||||
|
this.id = id; |
||||||
|
} |
||||||
|
|
||||||
|
public String getGoods_name() { |
||||||
|
return goods_name; |
||||||
|
} |
||||||
|
|
||||||
|
public void setGoods_name(String goods_name) { |
||||||
|
this.goods_name = goods_name; |
||||||
|
} |
||||||
|
|
||||||
|
public BigDecimal getPrice() { |
||||||
|
return price; |
||||||
|
} |
||||||
|
|
||||||
|
public void setPrice(BigDecimal price) { |
||||||
|
this.price = price; |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public String toString() { |
||||||
|
return "Goods [id=" + id + ", goods_name=" + goods_name + ", price=" + price + "]"; |
||||||
|
} |
||||||
|
|
||||||
|
} |
@ -0,0 +1,37 @@ |
|||||||
|
package com.gitee.easyopen.server.config; |
||||||
|
|
||||||
|
import org.springframework.context.annotation.Bean; |
||||||
|
import org.springframework.context.annotation.Configuration; |
||||||
|
import org.springframework.web.cors.CorsConfiguration; |
||||||
|
import org.springframework.web.cors.UrlBasedCorsConfigurationSource; |
||||||
|
import org.springframework.web.filter.CorsFilter; |
||||||
|
|
||||||
|
/** |
||||||
|
* 解决js跨域 |
||||||
|
* @author tanghc |
||||||
|
*/ |
||||||
|
@Configuration |
||||||
|
public class CorsConfig { |
||||||
|
|
||||||
|
/** |
||||||
|
* 跨域过滤器 |
||||||
|
* |
||||||
|
* @return |
||||||
|
*/ |
||||||
|
@Bean |
||||||
|
public CorsFilter corsFilter() { |
||||||
|
UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource(); |
||||||
|
source.registerCorsConfiguration("/**", buildConfig()); // 4
|
||||||
|
return new CorsFilter(source); |
||||||
|
} |
||||||
|
|
||||||
|
private CorsConfiguration buildConfig() { |
||||||
|
CorsConfiguration corsConfiguration = new CorsConfiguration(); |
||||||
|
corsConfiguration.addAllowedOrigin("*"); |
||||||
|
corsConfiguration.addAllowedHeader("*"); |
||||||
|
corsConfiguration.addAllowedMethod("*"); |
||||||
|
return corsConfiguration; |
||||||
|
} |
||||||
|
|
||||||
|
|
||||||
|
} |
@ -0,0 +1,11 @@ |
|||||||
|
package com.gitee.easyopen.server.config; |
||||||
|
|
||||||
|
import com.gitee.sop.servercommon.configuration.EasyopenServiceConfiguration; |
||||||
|
import org.springframework.context.annotation.Configuration; |
||||||
|
|
||||||
|
/** |
||||||
|
* @author tanghc |
||||||
|
*/ |
||||||
|
@Configuration |
||||||
|
public class SopConfig extends EasyopenServiceConfiguration { |
||||||
|
} |
@ -0,0 +1,23 @@ |
|||||||
|
package com.gitee.easyopen.server.interceptor; |
||||||
|
|
||||||
|
import com.gitee.easyopen.ApiContext; |
||||||
|
import com.gitee.easyopen.interceptor.ApiInterceptorAdapter; |
||||||
|
import com.gitee.easyopen.util.RequestUtil; |
||||||
|
import org.slf4j.Logger; |
||||||
|
import org.slf4j.LoggerFactory; |
||||||
|
|
||||||
|
import javax.servlet.http.HttpServletRequest; |
||||||
|
import javax.servlet.http.HttpServletResponse; |
||||||
|
import java.net.URLDecoder; |
||||||
|
|
||||||
|
public class LogInterceptor extends ApiInterceptorAdapter { |
||||||
|
|
||||||
|
Logger logger = LoggerFactory.getLogger(getClass()); |
||||||
|
|
||||||
|
@Override |
||||||
|
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object serviceObj, Object argu) |
||||||
|
throws Exception { |
||||||
|
logger.info("收到客户端请求,ip={},参数={}", RequestUtil.getClientIP(request), URLDecoder.decode(ApiContext.getApiParam().toJSONString(), "UTF-8")); |
||||||
|
return true; |
||||||
|
} |
||||||
|
} |
@ -0,0 +1,16 @@ |
|||||||
|
package com.gitee.easyopen.server.message; |
||||||
|
|
||||||
|
import com.gitee.easyopen.message.ErrorMeta; |
||||||
|
|
||||||
|
/** |
||||||
|
* 错误码放在这里 |
||||||
|
* |
||||||
|
* 使用方式:throw CommonErrors.NUll_ERROR.getException(); |
||||||
|
*/ |
||||||
|
public interface CommonErrors { |
||||||
|
String isvModule = "isv.error_"; // error_zh_CN2.properties内容前缀
|
||||||
|
|
||||||
|
ErrorMeta NUll_ERROR = new ErrorMeta(isvModule, "200", "不能为空"); |
||||||
|
|
||||||
|
|
||||||
|
} |
@ -0,0 +1,26 @@ |
|||||||
|
server: |
||||||
|
port: 2121 |
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
# 指定注册中心 |
||||||
|
eureka: |
||||||
|
port: 1111 |
||||||
|
host: localhost |
||||||
|
client: |
||||||
|
serviceUrl: |
||||||
|
defaultZone: http://${eureka.host}:${eureka.port}/eureka/ |
||||||
|
|
||||||
|
spring: |
||||||
|
application: |
||||||
|
# 指定服务名 |
||||||
|
name: easyopen-service |
||||||
|
|
||||||
|
# 指定zookeeper |
||||||
|
cloud: |
||||||
|
zookeeper: |
||||||
|
connect-string: localhost:2181 |
||||||
|
|
||||||
|
# 指定接口路径 |
||||||
|
easyopen: |
||||||
|
prefix-path: /api |
@ -0,0 +1,2 @@ |
|||||||
|
# common errors here |
||||||
|
isv.error_200=\u4E0D\u80FD\u4E3A\u7A7A |
@ -0,0 +1,16 @@ |
|||||||
|
package com.gitee.durcframework.easyopen.server; |
||||||
|
|
||||||
|
import org.junit.Test; |
||||||
|
import org.junit.runner.RunWith; |
||||||
|
import org.springframework.boot.test.context.SpringBootTest; |
||||||
|
import org.springframework.test.context.junit4.SpringRunner; |
||||||
|
|
||||||
|
@RunWith(SpringRunner.class) |
||||||
|
@SpringBootTest |
||||||
|
public class SopEasyopenApplicationApplicationTests { |
||||||
|
|
||||||
|
@Test |
||||||
|
public void contextLoads() { |
||||||
|
} |
||||||
|
|
||||||
|
} |
Loading…
Reference in new issue