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:8080/base/demo/info/123234234/?name=张三 @SsoAop(power="123456", ifAllPower = {"123", "456"}) public BaseResponse 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:8080/base/demo/test/{"id":123456789,"age":12,"name":"test","tel":"1230987654"} public BaseResponse 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 test1(){ BaUser po = new BaUser() ; po.id = System.currentTimeMillis() ; po.name = "张三" ; po.phone = "13912345678" ; return BaseResponseUtils.buildSuccess(po); } }