package anyi.space.memberConsumer.service.impl; import anyi.sapce.common.entity.Member; import anyi.sapce.common.entity.ResponseResult; import anyi.space.memberConsumer.service.MemberService; import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.databind.ObjectMapper; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.http.ResponseEntity; import org.springframework.stereotype.Service; import org.springframework.web.client.RestTemplate; import java.util.Map; /** * @ProjectName: distributedSystemLearn * @FileName: MemberServiceIml * @Author: 杨逸 * @Data:2025/4/13 20:10 * @Description: */ @Slf4j @RequiredArgsConstructor @Service public class MemberServiceIml implements MemberService { private final RestTemplate restTemplate; private final ObjectMapper objectMapper; private final static String MEMBER_SERVICE_URL = "http://member-service-provider"; @Override public Member getById(Long id) { /** * 通过RestTemplate调用远程服务 */ ResponseEntity resultResponseEntity = restTemplate.getForEntity(MEMBER_SERVICE_URL + "/member-provider/member?id="+id, ResponseResult.class); try { log.info("远程调用服务返回结果:{}",objectMapper.writeValueAsString(resultResponseEntity.getBody())); } catch (JsonProcessingException e) { e.printStackTrace(); } Object data = resultResponseEntity.getBody().getData(); //映射请求结果 Map map = (Map) data; Member member = new Member(); id = Long.valueOf(map.get("id") + ""); member.setId(id); member.setName((String) map.get("name")); member.setPwd((String) map.get("pwd")); member.setEmail((String) map.get("email")); member.setGender((int)map.get("gender")); return member; } @Override public boolean save(Member member) { //直接传递参数,是使用json的格式提交数据 ResponseEntity responseResultResponseEntity = restTemplate.postForEntity(MEMBER_SERVICE_URL + "/member-provider/member", member, ResponseResult.class); //HttpEntity stringHttpEntity = new HttpEntity<>(); Object data = responseResultResponseEntity.getBody().getData(); boolean flag = (boolean) data; return flag; } }