package com.dy.pipIrrDemo.demo;
|
|
import com.dy.common.aop.SsoAop;
|
import com.dy.common.springUtil.SpringContextUtil;
|
import com.dy.common.multiDataSource.DataSourceContext;
|
import com.dy.common.webUtil.BaseResponse;
|
import com.dy.common.webUtil.BaseResponseUtils;
|
import com.dy.common.webUtil.GlException;
|
import com.dy.common.webUtil.ResultCodeMsg;
|
import com.dy.pipIrrGlobal.pojoBa.BaUser;
|
import com.dy.pipIrrGlobal.pojoDemo.DemoTest;
|
import io.swagger.v3.oas.annotations.Operation;
|
import io.swagger.v3.oas.annotations.Parameter;
|
import io.swagger.v3.oas.annotations.Parameters;
|
import io.swagger.v3.oas.annotations.enums.ParameterIn;
|
import io.swagger.v3.oas.annotations.media.Content;
|
import io.swagger.v3.oas.annotations.media.Schema;
|
import io.swagger.v3.oas.annotations.responses.ApiResponse;
|
import io.swagger.v3.oas.annotations.responses.ApiResponses;
|
import io.swagger.v3.oas.annotations.tags.Tag;
|
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Value;
|
import org.springframework.context.ApplicationContext;
|
import org.springframework.web.bind.annotation.*;
|
|
/**
|
* @Tag 用来设置 Controller 的名称和描述,类似于给 Postman 的 Collections 命名;
|
* @ApiResponses 和 @ApiResponse 用来配置响应;
|
* @Operation 用来设置接口名称和描述;
|
* @Parameter 用来设置请求参数的描述、是否必填和示例。
|
*/
|
//在API中显示: Tag 注解, 给整个接口起了个名字, 描述"
|
@Tag(name = "测试接口", description = "测试整个框架可运行性")
|
@RestController
|
@RequestMapping(path="demo")
|
@SuppressWarnings("unchecked")
|
public class DemoCtrl {
|
|
@Value("${pipIrr.test}")
|
public String test ;
|
|
@Value("${pipIrr.demo.name}")
|
public String name ;
|
|
@Autowired
|
public DemoSv demoSv;
|
|
//在API中显示: Operation 注解设置的接口名称, 接口描述
|
@Operation(summary = "一测试", description = "测试Get请求、基于配置得到得配置项值、及抛出异常测试")
|
//在API中显示: 给每个接口提供一个默认的响应, 状态码是 XXXX, 描述是 "XXXX",Media type是"application/json,返回schema: BaseResponse json
|
@Parameters(value = {
|
@Parameter(name = "id", description = "实体ID", in = ParameterIn.PATH),
|
@Parameter(name = "name", description = "姓名", in = ParameterIn.QUERY)
|
})
|
@ApiResponses(value = {
|
@ApiResponse(
|
responseCode = ResultCodeMsg.RsCode.SUCCESS_CODE,
|
description = "返回字符串",
|
content = {@Content(mediaType = "text/plain",
|
schema = @Schema(implementation = String.class))}
|
),
|
@ApiResponse(
|
responseCode = ResultCodeMsg.RsCode.ERROR_CODE,
|
description = "参数填写错误",
|
content = @Content
|
)
|
})
|
@GetMapping("info/{id}/")
|
//http://127.0.0.1:8000/demo/demo/info/123234234/?name=张三
|
@SsoAop()
|
public BaseResponse<String> info(@PathVariable String id, @RequestParam String name) throws GlException{
|
if(name == null || name.trim().equals("")){
|
return BaseResponseUtils.buildFail(ResultCodeMsg.RsMsg.ERROR_PARAM);
|
}
|
ApplicationContext sctx = SpringContextUtil.getApplicationContext() ;
|
if(sctx == null){
|
throw new GlException("未获得Spring 上下文");
|
}
|
DataSourceContext.set("ym");
|
String str = "" + this.test + "\n" + this.name ;
|
String count = demoSv.getCount() ;
|
str += "\n 用户数:" + count ;
|
if(count.equals("0")){
|
throw new GlException("测试抛出异常");
|
}
|
return BaseResponseUtils.buildSuccess(str);
|
}
|
|
@Operation(summary = "二测试", description = "测试得到实体,使得实体的API可见")
|
//在API中显示: 给每个接口提供一个默认的响应, 状态码是 XXXX, 描述是 "XXXX",Media type是"application/json,返回schema: BaseResponse json
|
@ApiResponses(@ApiResponse(
|
responseCode = ResultCodeMsg.RsCode.SUCCESS_CODE,
|
description = "返回数据实体",
|
content = {@Content(mediaType = "application/json",
|
schema = @Schema(implementation = BaseResponse.class))}
|
))
|
@PostMapping(value = "test", consumes = "application/json")
|
//@RequestMapping(value="test", method = RequestMethod.POST, consumes = "application/json")
|
//http://127.0.0.1:8000/demo/demo/test/{"id":123456789,"age":12,"name":"test","tel":"1230987654"}
|
public BaseResponse<DemoTest> test(@RequestBody DemoTestVo req){
|
DemoTest po = new DemoTest() ;
|
po.id = System.currentTimeMillis() ;
|
po.name = "张三" ;
|
po.phone = "13912345678" ;
|
|
return BaseResponseUtils.buildSuccess(po);
|
}
|
@Operation(summary = "三测试", description = "测试BaUser")
|
//在API中显示: 给每个接口提供一个默认的响应, 状态码是 XXXX, 描述是 "XXXX",Media type是"application/json,返回schema: BaseResponse json
|
@ApiResponses(@ApiResponse(
|
responseCode = ResultCodeMsg.RsCode.SUCCESS_CODE,
|
description = "返回数据实体",
|
content = {@Content(mediaType = "application/json",
|
schema = @Schema(implementation = BaseResponse.class))}
|
))
|
@GetMapping("test1")
|
public BaseResponse<BaUser> test1(){
|
BaUser po = new BaUser() ;
|
po.id = System.currentTimeMillis() ;
|
po.userName = "张三" ;
|
po.phone = "13912345678" ;
|
|
return BaseResponseUtils.buildSuccess(po);
|
}
|
|
|
}
|