SpringCloudFeign之传输List/Map/Object参数(利用fastjson json list转换)

方案背景

在我们的营养探索馆项目,有这么一个需求,调用系统A发起请求,将一份数据传输到被调用端B去进行数据库同步。这个时侯当然是用Feign来实现。

    A                       B
json(feign) -----------> execute
success    <-----------  response

方案详情

被调用系统B(执行业务)

@Controller
public class ProjectController {
    @Autowired
    CheckProjectRepository checkProjectRepository;

    @PostMapping("/project/sync")
    public ApiReturnObject syncProject(String projectListStr) {
        //转换json->java list
        System.out.println("projectListStr->"+projectListStr);
        //fastjson格式化到list
        List<CheckProject> projectList=JSONObject.parseArray(projectListStr,CheckProject.class);
        if(projectList!=null) {
            checkProjectRepository.deleteAll();
            for (CheckProject p:projectList){
                System.out.println("p->"+JSON.toJSONString(p));
                checkProjectRepository.save(p);
            }
        }
        return ApiReturnUtil.success("同步成功");
    }
}

调用系统A(发起调用系统B)

    @GetMapping("/sync")
    public ApiReturnObject syncProject() {
        //源数据
        List<FacilityType> facilityTypeList=facilityTypeRepository.findAll();
        //转换为被调用系统的数据
        List<CheckProject> projectList=new ArrayList<CheckProject>();
        for (FacilityType facilityType:facilityTypeList){
            CheckProject project=new CheckProject();
            project.setFacilityTypeName(facilityType.getFacilityTypeName());
            project.setFacilityTypeNum(facilityType.getFacilityTypeNum());
            project.setId(facilityType.getId());
            project.setIsRequired("1");
            project.setStatus("1");
            projectList.add(project);
        }
        //格式化为json并进行feign远程调用
        checkCollectysysRemoteClient.syncProject(JSON.toJSONString(projectList));
        return ApiReturnUtil.success("操作成功");
    }

feign定义(对接被调用系统B)

//name=目标系统的id
@FeignClient(name = "tcbj-yytsg-checkcollectsys")
public interface CheckCollectysysRemoteClient {
    //目标系统的完整访问地址
    @PostMapping("/checkcollectsys/project/sync")
    public ApiReturnObject syncProject(@RequestParam(value="projectListStr") String projectListStr);
}

猜你喜欢

转载自blog.csdn.net/moshowgame/article/details/80983824
今日推荐