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(power="123456", ifAllPower = {"123", "456"}) 
 | 
    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.name = "张三" ; 
 | 
        po.phone = "13912345678" ; 
 | 
  
 | 
        return BaseResponseUtils.buildSuccess(po); 
 | 
    } 
 | 
  
 | 
  
 | 
} 
 |