liurunyu
2024-01-29 c568a328a8c273531773710fe814ac429bafc48f
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
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.userId = System.currentTimeMillis() ;
        po.userName = "张三" ;
        po.phone = "13912345678" ;
 
        return BaseResponseUtils.buildSuccess(po);
    }
 
 
}