以查询用户信息的接口为例,记录调用SDK包方法的过程。
1、service类
里面写调用SDK包内的具体哪个函数方法,是具体实现过程。
public class SOPMsspClient {
public ReturnResult<QueryUserListResult> queryTrustUser(String appId, String customerId, String name, String startTime, String endTime, String userstate, String skip, String step) throws MSSPClientException{
MSSPOpenPlantformClient msspClient = new MSSPOpenPlantformClient(msspUrl); Map<String, String> conditions = new HashMap(); conditions.put("CUSTOMER_ID",customerId); conditions.put("APP_ID",appId); conditions.put("NAME",name); conditions.put("START_TIME",startTime); conditions.put("END_TIME",endTime); conditions.put("USER_STATE",userstate); conditions.put("SKIP",skip); conditions.put("STEP",step); ReturnResult<QueryUserListResult> returnResult = new ReturnResult<QueryUserListResult>(); returnResult.setData( msspClient.queryTrustUser(conditions)); return returnResult; }
}
2、controller里写自己调用service的方法实现
@RestController @Slf4j public class MsspController implements MsspFacade { @Autowired private SOPMsspClient msspClient;
@Override public ReturnResult<QueryUserListResult> queryTrustUser(@RequestBody queryRequest userRequest) throws MSSPClientException { ReturnResult<QueryUserListResult> returnResult = msspClient.queryTrustUser(userRequest.getAppId(),userRequest.getCustomerId(),userRequest.getName(),userRequest.getStartTime(),userRequest.getEndTime(),userRequest.getUserState(),userRequest.getSkip(),userRequest.getStep()); return returnResult; }
}
3、facade里写将controller中自己写的方法抽象出来的一个接口,让controller继承它
@Api(value = "信步云查询接口", consumes = MediaType.APPLICATION_JSON_VALUE, protocols = "HTTP", description = "信步云查询接口") @RequestMapping("/mssp") public interface MsspFacade {
@ApiOperation(value = "查询用户证书信息", produces = MediaType.APPLICATION_JSON_VALUE, httpMethod = "POST", notes = "查询用户证书信息") @ApiImplicitParams(value = { @ApiImplicitParam(name = "userRequest", value = "queryRequest", required = true,paramType = "body",dataType = "queryRequest") }) @RequestMapping(value = "/queryTrustUser", method = RequestMethod.POST) @ResponseBody public ReturnResult<QueryUserListResult> queryTrustUser(@RequestBody queryRequest userRequest)throws MSSPClientException;;
}
4、SDK包里面的具体函数我也打开看了一下,是这样的
public QueryUserListResult queryTrustUser( Map<String,String> conditions) throws MSSPClientException { log.debug("MSSPOpenPlantformClient.queryTrustUser Input Data: " + String.format("{\"conditions\":\"%s\"}", conditions)); QueryUserListResult ret = new QueryUserListResult(); QueryTrustUserRequest request = new QueryTrustUserRequest(); QueryTrustUserTbs tbs = new QueryTrustUserTbs(); request.setQueryTrustUserTbs(tbs); tbs.setConditions(conditions); try { checkSignature(request, request.getQueryTrustUserTbs()); } catch (Exception e) { throw new MSSPClientException("本地签名失败 " + e); } String data = JSONUtils.Object2JSON2(request); String res; try { res = this.POST(QUERY_APP_USER_URL, data, mssgTimeOut); } catch (Exception e) { throw new MSSPClientException("POST error " + QUERY_APP_USER_URL, e); } QueryTrustUserResponse response = JSONUtils.JSON2Object(res, QueryTrustUserResponse.class); if (response == null) { log.error("网络错误,收到无效应答。" + res); throw new MSSPClientException("网络错误,收到无效应答。"); } if (!StringUtils.compare(response.getErrCode(), "0")) { throw new MSSPClientException("查询用户信息失败 " + response.getErrCode() + response.getErrMsg()); } //处理返回值 ret.setCount(response.getCount()); List<TrustedUserInfo> userList = new ArrayList<TrustedUserInfo>(); for(TrustedUserForOpenPlatform user : response.getUserInfos()){ TrustedUserInfo nUser = new TrustedUserInfo(); BeanUtils.copyProperties(nUser, user); userList.add(nUser); } ret.setUserList(userList); return ret; }