糊涂工具类真是场景下请求http接口的案例

大家好,我是雄雄,欢迎关注微信公众号:雄雄的小课堂

现在是:2022年7月7日13:46:07

前言

今天有个这样的需求,PC端需要查看一下哪些天有数据,但是哪些有有没有数据我这边还看不出来,得请求别的系统的接口去看。且团组和会员请求的接口和请求方式均不一样。
前端说为了方便,团组和个人都走一个接口吧,让我这边封装一下……

实现

如何区分前台请求的是会员的还是团组的

让前台这样传,如果不传groupId,传memberId,则我就知道了,请求的是查询会员的信息。反之则请求的是团组的接口。
代码如下:

	if(Strings.isNotBlank(groupId)){
			//是团组
			//查询这个团组下面的人
			LambdaQueryWrapper<GroupUser> groupUserLambdaQueryWrapper = new LambdaQueryWrapper<>();
			groupUserLambdaQueryWrapper.eq(GroupUser::getGroupId, groupId);
			List<GroupUser> groupUserList = groupUserService.list(groupUserLambdaQueryWrapper);
			List<Long> userList = new ArrayList<>();
			groupUserList.forEach(group->{
				userList.add(group.getUserId());
			});
			//集合去重
			List<Long> memberIdList =
				userList
					.stream()
					.distinct()
					.collect(Collectors.toList());
			url = ServicePathConstant.HBV_GATAWAY+"/doctor/api/doctor/getMemberDataDays";
			body = HttpUtil.createPost(url)
				.contentType("application/json")
				.body(JSON.toJSONString(memberIdList)).execute().body();
		}else if(Strings.isNotBlank(memberId)){
			//是会员
			url = ServicePathConstant.HBV_GATAWAY+"/doctor/api/doctor/getMemberDataDays/"+memberId;
			body = HttpUtil.createGet(url).execute().body();
		}

里面涉及到了些别的代码,集合去重:

	//集合去重
			List<Long> memberIdList =
				userList
					.stream()
					.distinct()
					.collect(Collectors.toList());

还别说,这个地方用的还挺多的,不过每次用到了之后都是翻之前的代码。。。。。

完整代码如下:

	/**
	 * 获取有日期的报告吗,返回一个集合
	 * @param groupId
	 * @return
	 */
	@GetMapping("/getReportHaveDateList")
	public Object getReportHaveDateList(String groupId,String memberId) {
		cn.hutool.json.JSONObject jsonObjectResult = new cn.hutool.json.JSONObject();
		//请求接口地址
		String url = "";
		String body = "";
		if(Strings.isNotBlank(groupId)){
			//是团组
			//查询这个团组下面的人
			LambdaQueryWrapper<GroupUser> groupUserLambdaQueryWrapper = new LambdaQueryWrapper<>();
			groupUserLambdaQueryWrapper.eq(GroupUser::getGroupId, groupId);
			List<GroupUser> groupUserList = groupUserService.list(groupUserLambdaQueryWrapper);
			List<Long> userList = new ArrayList<>();
			groupUserList.forEach(group->{
				userList.add(group.getUserId());
			});
			//集合去重
			List<Long> memberIdList =
				userList
					.stream()
					.distinct()
					.collect(Collectors.toList());
			url = ServicePathConstant.HBV_GATAWAY+"/doctor/api/doctor/getMemberDataDays";
			body = HttpUtil.createPost(url)
				.contentType("application/json")
				.body(JSON.toJSONString(memberIdList)).execute().body();
		}else if(Strings.isNotBlank(memberId)){
			//是会员
			url = ServicePathConstant.HBV_GATAWAY+"/doctor/api/doctor/getMemberDataDays/"+memberId;
			body = HttpUtil.createGet(url).execute().body();
		}
		if (StringUtils.isBlank(body)) {
			jsonObjectResult.putOpt("code", 500);
			jsonObjectResult.putOpt("data", null);
			jsonObjectResult.putOpt("msg", "操作失败");
			return jsonObjectResult;
		}
		cn.hutool.json.JSONObject obj = JSONUtil.parseObj(body);
		if (obj == null) {
			jsonObjectResult.putOpt("code", 500);
			jsonObjectResult.putOpt("data", null);
			jsonObjectResult.putOpt("msg", "操作失败");
			return jsonObjectResult;
		}
		String code = obj.get("code").toString();
		String msg = obj.get("msg").toString();
		System.out.println("调用doctor系统返回的信息:"+msg);
		if ("200".equals(code)) {
			jsonObjectResult.putOpt("code", 200);
			jsonObjectResult.putOpt("data", obj.get("data"));
			jsonObjectResult.putOpt("msg", "操作成功");
			//标记有没有记录
			jsonObjectResult.putOpt("count", obj.getJSONArray("data").size());
			return jsonObjectResult;
		}else{
			jsonObjectResult.putOpt("code", 200);
			jsonObjectResult.putOpt("data", new ArrayList<String>());
			jsonObjectResult.putOpt("msg", "操作成功");
			//标记有没有记录
			jsonObjectResult.putOpt("count", 0);
			return jsonObjectResult;
		}
	}

顺便在记录一下糊涂工具类请求接口的几种方式吧:

  1. post方法form传参:
	//接口地址
	String url = "";
	//请求参数
	Map<String, Object> paramMap = new HashMap<>();
	map.put("groupId", "1506254142554785");
	//请求头
	HashMap<String, String> headers = new HashMap<>();
	headers.put("Authorization", token);
	String result= HttpUtil.createPost(url).addHeaders(headers).form(map).execute().body();

  1. post方法json传参:
	//接口地址
	String url = "";
	//请求参数
	Map<String, Object> paramMap = new HashMap<>();
	map.put("groupId", "1506254142554785");
	//请求头
	HashMap<String, String> headers = new HashMap<>();
	headers.put("Authorization", token);
	String body = HttpUtil.createPost(url)
				.contentType("application/json")
				.body(JSON.toJSONString(projectVo)).execute().body();

projectVo就是一个json格式的数据。

  1. get方法form传参:
	//接口地址
	String url = "";
	//请求参数
	Map<String, Object> paramMap = new HashMap<>();
	map.put("groupId", "1506254142554785");
	//请求头
	HashMap<String, String> headers = new HashMap<>();
	headers.put("Authorization", token);
	String body = HttpUtil.createGet(url).header("Authorization", token).form(paramMap).execute().body();

这就是今天分享的内容,谢谢大家的捧场!!!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

穆雄雄

哎,貌似还没开张来着呢~

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值