Pārlūkot izejas kodu

Merge branch 'dev' of chenweida/wlyy2.0 into dev

chenweida 6 gadi atpakaļ
vecāks
revīzija
7168c4eb22

+ 15 - 0
svr-lib-parent-pom/pom.xml

@ -499,6 +499,21 @@
                </configuration>
                <version>3.1</version>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-source-plugin</artifactId>
                <configuration>
                    <attach>true</attach>
                </configuration>
                <executions>
                    <execution>
                        <phase>compile</phase>
                        <goals>
                            <goal>jar</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
            <!--编译插件 end-->
            <plugin>
                <groupId>org.asciidoctor</groupId>

+ 103 - 0
svr/svr-base/src/main/java/com/yihu/jw/business/demo/DemoController.java

@ -0,0 +1,103 @@
package com.yihu.jw.business.demo;
import com.netflix.hystrix.contrib.javanica.annotation.HystrixCommand;
import com.netflix.hystrix.contrib.javanica.annotation.HystrixProperty;
import com.yihu.jw.exception.SystemException;
import com.yihu.jw.exception.business.ManageException;
import com.yihu.jw.fegin.DemoFeign;
import com.yihu.jw.restmodel.common.Envelop;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.cloud.context.config.annotation.RefreshScope;
import org.springframework.cloud.sleuth.Tracer;
import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletRequest;
/**
 * Created by chenweida on 2017/5/10.
 */
@RestController
@RequestMapping("/demo")
@Api(description = "demo例子")
@RefreshScope
public class DemoController {
    private Logger logger = LoggerFactory.getLogger(DemoController.class);
    @Autowired
    private DemoFeign patientFegin;
    @Autowired
    private Tracer tracer;
//    @Value("${test.aaa}")
    private String aaaa;
    @GetMapping("/hello")
    @ResponseBody
    public Envelop hello1(@RequestParam(name = "id") Integer id,
                          @RequestParam(name = "name") String name,
                          HttpServletRequest request
    ) throws Exception {
        tracer.getCurrentSpan().logEvent("logEvent");
        tracer.getCurrentSpan().tag("test","tag");
        tracer.getCurrentSpan().setBaggageItem("test","BaggageItem");
        switch (id) {
            case 1: {
                throw new ManageException("后台管理系统异常");
            }
            case 2: {
                throw new SecurityException("权限异常");
            }
            case 3: {
                throw new SystemException("后台系统异常");
            }
        }
        return Envelop.getSuccess("请求成功");
    }
    @GetMapping("/hello2")
    @ResponseBody
    public String hello2(String id) throws Exception {
        System.out.println("haha2.........");
        return "hello2";
    }
    @GetMapping("/refresh")
    @ResponseBody
    public String refresh(HttpServletRequest request) throws Exception {
        return aaaa;
    }
    @ApiOperation(value = "根据code查找患者")
    @GetMapping(value = "findByCode")
    //配置HystrixProperty 则调用的方法和fallback是同一个线程 否则就不是
    //@HystrixCommand(fallbackMethod = "findByCodeFallback",commandProperties = @HystrixProperty(name = "execution.isolation.strategy",value = "SEMAPHORE"))
//   @HystrixCommand(fallbackMethod = "findByCodeFallback" )
    @HystrixCommand(commandProperties = {
            @HystrixProperty(name = "execution.isolation.thread.timeoutInMilliseconds", value = "-1"),//超时时间
            @HystrixProperty(name = "execution.timeout.enabled", value = "false")})
    public String findByCode(
            @ApiParam(name = "code", value = "患者code", required = true) @RequestParam(value = "code", required = true) String code) {
        tracer.getCurrentSpan().logEvent("开始调用微服务查询患者");
        String text1 = patientFegin.findByCode(code);
        tracer.getCurrentSpan().logEvent("查询调用微服务找患者结束");
        return text1;
    }
//    /**
//     * 参数要一致 返回值类型也要一致
//     *
//     * @param code
//     * @return
//     */
//    public String findByCodeFallback(String code) {
//        return "启动断路器";
//    }
}