# feign接口

feign接口 服务间的接口调用,可实现服务间数据交互,以下为服务A调用服务B的feign接口代码示例;
Author zhangyun1@expservice.com.cn

# 后端示例

# 服务A

  • feign接口
// 本地调试时使用此地址 name:调用服务名称  url:指定调用地址
// @FeignClient(name = "sentury-rms", url = "http://127.0.0.1:5707/", configuration = FeignConfig.class, fallbackFactory = HystrixFallbackFactory.class)
// 注意:contextId的值要唯一
@FeignClient(name = "sentury-rms", configuration = FeignConfig.class, fallbackFactory = HystrixFallbackFactory.class, contextId = "ImsRetailerScanService")
public interface RmsStoreDailyScanService extends FeignFallback
{
  /** 
  * @remark:获取调用服务数据
  * @param: id
  * @return: java.lang.String,java.lang.Object
  * @author: zhangyun
  * @date: 2023/5/31 11:46 
  * @version: 1.0.1
  * Modification History: 
  * Date         Author       Version        Description 
  * ----------------------------------------------------------
  * 2023/5/31    zhangyun     v1.0.1         init
  */
  @PostMapping(value = "/storeDailyScan/findStoreDailyScan")
  Object findStoreDailyScan(String id);
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21

# 服务B

  • controller
@Api(tags = {"rms_storeDailyScan"})
@RestController
@EnableFeignClients
@RequestMapping("/storeDailyScan")
public class StoreDailyScanController
{
  @Resource
  private StoreDailyScanService storeDailyScanService;
  /** 
  * @remark:查询门店扫码数据controller层
  * @param: id
  * @return: java.util.List<java.util.Map<java.lang.String,java.lang.Object>>
  * @author: zhangyun
  * @date: 2023/5/31 11:46 
  * @version: 1.0.1
  * Modification History: 
  * Date         Author       Version        Description 
  * ----------------------------------------------------------
  * 2023/5/31    zhangyun     v1.0.1         init
  */
  @ApiOperation(value = "查询->查询门店扫码数据", notes = "查询门店扫码数据")
  @ApiImplicitParams({
          @ApiImplicitParam(name = "param", value = "查询参数", dataTypeClass = String.class)
  })
  @PostMapping(value = "/findStoreDailyScan")
  public List<Map<String,Object>>  findStoreDailyScan(@RequestBody String id)
  {
    return storeDailyScanService.findStoreDailyScan(id);
  }
}
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
  • service
public interface StoreDailyScanService
{
  /** 
  * @remark:查询门店扫码数据service层
  * @param: id
  * @return: java.util.List<java.util.Map<java.lang.String,java.lang.Object>>
  * @author: zhangyun
  * @date: 2023/5/31 11:47 
  * @version: 1.0.1
  * Modification History: 
  * Date         Author       Version        Description 
  * ----------------------------------------------------------
  * 2023/5/31    zhangyun     v1.0.1         init
  */
  List<Map<String, Object>> findStoreDailyScan(String id);
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
  • impl
@Service
public class StoreDailyScanServiceImpl implements StoreDailyScanService
{
  @Resource
  public StoreDailyScanMapper storeDailyScanMapper;
  /** 
  * @remark:查询门店扫码数据impl层
  * @param: id
  * @return: java.util.List<java.util.Map<java.lang.String,java.lang.Object>>
  * @author: zhangyun
  * @date: 2023/5/31 11:48 
  * @version: 1.0.1
  * Modification History: 
  * Date         Author       Version        Description 
  * ----------------------------------------------------------
  * 2023/5/31    zhangyun     v1.0.1         init
  */
  @ApiOperation(value = "查询门店扫码数据", notes = "查询门店扫码数据")
  @ApiImplicitParams({
          @ApiImplicitParam(name = "request", value = "request", dataTypeClass = String.class)
  })
  @PostMapping(value = "/findStoreScanList")
  public List<Map<String,Object>> findStoreDailyScan(String id)
  {
    return storeDailyScanMapper.findStoreDailyScan(id);
  }
}
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
  • mapper
@Repository
public interface StoreDailyScanMapper extends DBMapper<RmsDealerDailySalesPO>
{
  /** 
  * @remark:查询门店扫码数据mapper层
  * @param: id
  * @return: java.util.List<java.util.Map<java.lang.String,java.lang.Object>>
  * @author: zhangyun
  * @date: 2023/5/31 11:49 
  * @version: 1.0.1
  * Modification History: 
  * Date         Author       Version        Description 
  * ----------------------------------------------------------
  * 2023/5/31    zhangyun     v1.0.1         init
  */
  @SelectProvider(StoreDailyScanSqlProvider.class)
  List<Map<String, Object>> findStoreDailyScan(String id);
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
  • provider
public class StoreDailyScanSqlProvider implements ProviderMethodResolver
{
  /**
   * @remark: 查询门店扫码数据provider层
   * @param: id
   * @return: String
   * @author: zhangyun
   * @created: 2023/5/31 11:50
   * @version: 1.0.1
   * Modification History:
    * Date         Author       Version        Description 
    * ----------------------------------------------------------
    * 2023/5/31    zhangyun     v1.0.1         init
  **/
  public static String findStoreDailyScan(String id)
  {
    StringBuffer sql = new StringBuffer();
    sql.append(" select \n ");
    sql.append("  store_dept_code as storeDeptCode,\n ");
    sql.append("  store_dept_name as storeDeptName,\n ");
    sql.append("  store_owner_phone as storeOwnerPhone,\n ");
    sql.append("  customer_code as customerCode,\n ");
    sql.append("  customer_name as customerName,\n ");
    sql.append("  brand_id as brandId,\n ");
    sql.append("  brand_name as brandName\n ");
    sql.append(" from\n ");
    sql.append("  rms_store_daily_scan\n ");
    sql.append(" where store_id = "+ id + "\n ");
    sql.append("  and count_day = date_format(date_sub(now(),interval 1 day),'%Y-%m-%d')\n ");
    return sql.toString();
  }
}
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

# 版本

  • v1.0.1