| ¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.sandu.ximon.admin.manager.iot.rrpc; |
| | | |
| | | import com.alibaba.fastjson.JSON; |
| | | import com.aliyuncs.AcsRequest; |
| | | import com.aliyuncs.AcsResponse; |
| | | import com.aliyuncs.exceptions.ClientException; |
| | | import com.aliyuncs.iot.model.v20180120.*; |
| | | import com.sandu.common.execption.BusinessException; |
| | | import com.sandu.ximon.admin.manager.iot.frame.IRequestFrame; |
| | | import com.sandu.ximon.admin.manager.iot.frame.inner.BaseResponseInnerFrame; |
| | | import com.sandu.ximon.admin.manager.iot.rrpc.dto.CommonFrame; |
| | | import com.sandu.ximon.admin.manager.iot.rrpc.dto.InvokeParam; |
| | | import com.sandu.ximon.admin.manager.iot.rrpc.dto.WrapResponseCommonFrame; |
| | | import com.sandu.ximon.admin.manager.iot.rrpc.topic.IBaseTopic; |
| | | import com.sandu.ximon.admin.manager.iot.rrpc.topic.ICustomizeTopic; |
| | | |
| | | import java.util.List; |
| | | |
| | | /** |
| | | * @author chenjiantian |
| | | * @date 2021/12/2 18:21 |
| | | */ |
| | | public abstract class BaseInvokeSyncService implements IInvoke, IBaseTopic, ICustomizeTopic { |
| | | |
| | | /** |
| | | * åérrpc è¯·æ± |
| | | * |
| | | * @param deviceName 设å¤å |
| | | * @param iRequestFrame ç¼ç 帧 |
| | | * @param clz å
é¨å¸§ååºå®ä½ç±» 妿䏿³èªå·±è§£æ å¯å¸¦ä¸ |
| | | * @return è¿åçè§£ç 帧å®ä½ç±» åæ¶æå
é¨å¸§è§£ç ä¹å乿ºå¸¦ä¸ |
| | | */ |
| | | public abstract <T extends BaseResponseInnerFrame<T>> WrapResponseCommonFrame<T> sendRRPC(String deviceName, IRequestFrame iRequestFrame, Class<T> clz); |
| | | |
| | | /** |
| | | * åºç¡éä¿¡åæ¥è°ç¨ |
| | | * |
| | | * @param request 请æ±å°è£
|
| | | * @param <T> è¿åç±»å |
| | | * @return è¿åç»æ |
| | | */ |
| | | protected <T extends AcsResponse> T invokeSync(AcsRequest<T> request) { |
| | | // è·å¾æå¡è°ç¨ååº |
| | | T response = null; |
| | | try { |
| | | response = getClient().getAcsResponse(request); |
| | | } catch (ClientException e) { |
| | | e.printStackTrace(); |
| | | } |
| | | return response; |
| | | } |
| | | |
| | | @Override |
| | | public RegisterDeviceResponse.Data registerDevice(String deviceName) { |
| | | RegisterDeviceRequest request = new RegisterDeviceRequest(); |
| | | request.setDeviceName(deviceName); |
| | | request.setProductKey(getProductKey()); |
| | | RegisterDeviceResponse response = invokeSync(request); |
| | | if (response != null && response.getSuccess()) { |
| | | return response.getData(); |
| | | } |
| | | return null; |
| | | } |
| | | |
| | | @Override |
| | | public boolean deleteDevice(String deviceName) { |
| | | DeleteDeviceRequest request = new DeleteDeviceRequest(); |
| | | request.setDeviceName(deviceName); |
| | | request.setProductKey(getProductKey()); |
| | | DeleteDeviceResponse response = invokeSync(request); |
| | | return response != null && response.getSuccess(); |
| | | } |
| | | |
| | | @Override |
| | | public QueryDeviceDetailResponse.Data queryDeviceDetail(String deviceName, String lotId) { |
| | | QueryDeviceDetailRequest request = new QueryDeviceDetailRequest(); |
| | | request.setIotId(lotId); |
| | | request.setDeviceName(deviceName); |
| | | request.setProductKey(getProductKey()); |
| | | QueryDeviceDetailResponse response = invokeSync(request); |
| | | if (response != null && response.getSuccess()) { |
| | | return response.getData(); |
| | | } |
| | | return null; |
| | | } |
| | | |
| | | @Override |
| | | public List<BatchQueryDeviceDetailResponse.DataItem> batchQueryDeviceDetail(List<String> deviceNames) { |
| | | BatchQueryDeviceDetailRequest request = new BatchQueryDeviceDetailRequest(); |
| | | request.setDeviceNames(deviceNames); |
| | | request.setProductKey(getProductKey()); |
| | | BatchQueryDeviceDetailResponse response = invokeSync(request); |
| | | if (response != null && response.getSuccess()) { |
| | | return response.getData(); |
| | | } |
| | | return null; |
| | | } |
| | | |
| | | |
| | | @Override |
| | | public boolean saveDeviceProp(String deviceName, String props) { |
| | | throw new BusinessException("æªå®ç°"); |
| | | // SaveDevicePropRequest request = new SaveDevicePropRequest(); |
| | | // request.setDeviceName(deviceName); |
| | | // request.setProductKey(PRODUCT_KEY); |
| | | // request.setProps(JSON.); |
| | | } |
| | | |
| | | @Override |
| | | public List<BatchGetDeviceStateResponse.DeviceStatus> batchGetDeviceState(List<String> deviceNames) { |
| | | BatchGetDeviceStateRequest request = new BatchGetDeviceStateRequest(); |
| | | request.setDeviceNames(deviceNames); |
| | | request.setProductKey(getProductKey()); |
| | | BatchGetDeviceStateResponse response = invokeSync(request); |
| | | if (response != null && response.getSuccess()) { |
| | | return response.getDeviceStatusList(); |
| | | } |
| | | return null; |
| | | } |
| | | |
| | | /** |
| | | * è°ç¨èªå®ä¹topic |
| | | * https://help.aliyun.com/document_detail/69584.htm?spm=a2c4g.11186623.0.0.25b33982bSQSom#reference-snk-mrz-wdb |
| | | * |
| | | * @param deviceName 设å¤å |
| | | * @param param åæ° |
| | | * @return 设å¤è¿åçç»æ |
| | | */ |
| | | protected InvokeThingServiceResponse.Data invokeThing(String deviceName, InvokeParam param) { |
| | | // å¡«å
æå¡è°ç¨çåæ° |
| | | InvokeThingServiceRequest request = new InvokeThingServiceRequest(); |
| | | // 设å¤è¯ä¹¦ä¹productKey |
| | | request.setProductKey(getProductKey()); |
| | | // 设å¤è¯ä¹¦ä¹deviceName |
| | | request.setDeviceName(deviceName); |
| | | // è¦è°ç¨çæå¡æ è¯ç¬¦ï¼åå³äºæå¡ç«¯å®ä¹ ç®årrpcæ è¯ä»£è¡¨åæ¥è°ç¨ |
| | | request.setIdentifier("rrpc"); |
| | | request.setArgs(JSON.toJSONString(param)); |
| | | |
| | | // è·å¾æå¡è°ç¨ååº |
| | | InvokeThingServiceResponse response = null; |
| | | try { |
| | | response = getClient().getAcsResponse(request); |
| | | } catch (ClientException e) { |
| | | e.printStackTrace(); |
| | | } |
| | | if (response == null) { |
| | | throw new BusinessException("è°ç¨rrpc失败"); |
| | | } |
| | | if (!response.getSuccess()) { |
| | | throw new BusinessException("è°ç¨rrpc失败ï¼" + response.getErrorMessage()); |
| | | } |
| | | // æå¡è°ç¨æåï¼ä»
代表åéæå¡æä»¤çæåï¼ä¸ä»£è¡¨æ§è¡æå¡æ¬èº«æ¯å¦æå |
| | | if (response.getSuccess()) { |
| | | // ä»
忥æå¡æresult |
| | | return response.getData(); |
| | | } |
| | | return null; |
| | | } |
| | | } |