2021与蓝度共同重构项目,服务端
fix
zhanzhiqin
2022-08-24 7983ce4db5c7bfcda3f5b28efe79ef82b83c53fa
fix
已修改2个文件
86 ■■■■■ 文件已修改
ximon-admin/src/main/java/com/sandu/ximon/admin/controller/C3ChargingController.java 28 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ximon-admin/src/main/java/com/sandu/ximon/admin/manager/iot/rrpc/BaseInvokeSyncService.java 58 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ximon-admin/src/main/java/com/sandu/ximon/admin/controller/C3ChargingController.java
@@ -44,20 +44,20 @@
        return ResponseUtil.success(c3ChargingService.getChargingInfo(poleId));
    }
    /**
     * 充电开启
     */
    @AnonymousAccess
    @PostMapping("/startCharging")
    public ResponseVO<Object> startCharging(@RequestBody C3ChargingParam c3ChargingParam) {
        String result = c3ChargingService.startCharging(c3ChargingParam.getC3Mac(), c3ChargingParam.getChargingCapacity(), c3ChargingParam.getChargeAmount());
        if ("操作成功".equals(result)) {
            return ResponseUtil.success(result);
        } else {
            return ResponseUtil.fail(result);
        }
    }
//    /**
//     * 充电开启
//     */
//    @AnonymousAccess
//    @PostMapping("/startCharging")
//    public ResponseVO<Object> startCharging(@RequestBody C3ChargingParam c3ChargingParam) {
//        String result = c3ChargingService.startCharging(c3ChargingParam.getC3Mac(), c3ChargingParam.getChargingCapacity(), c3ChargingParam.getChargeAmount());
//        if ("操作成功".equals(result)) {
//            return ResponseUtil.success(result);
//        } else {
//            return ResponseUtil.fail(result);
//        }
//
//    }
    /**
     * 充电结束——小程序用户结束,不需要token,需要openId
ximon-admin/src/main/java/com/sandu/ximon/admin/manager/iot/rrpc/BaseInvokeSyncService.java
@@ -14,6 +14,8 @@
import com.sandu.ximon.admin.manager.iot.rrpc.topic.IBaseTopic;
import com.sandu.ximon.admin.manager.iot.rrpc.topic.ICustomizeTopic;
import com.sandu.ximon.admin.manager.iot.rrpc.util.FrameUtils;
import lombok.SneakyThrows;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.BeanUtils;
import java.util.List;
@@ -23,6 +25,7 @@
 * @author chenjiantian
 * @date 2021/12/2 18:21
 */
@Slf4j
public abstract class BaseInvokeSyncService implements IInvoke, IBaseTopic, ICustomizeTopic {
    /**
@@ -33,7 +36,7 @@
     * @param clz           内部帧响应实体类 如果不想自己解析 可带上
     * @return 返回的解码帧实体类 同时把内部帧解码之后也携带上
     */
    public <T extends BaseResponseInnerFrame<T>> WrapResponseCommonFrame<T> sendRRPC(String deviceName, IRequestFrame iRequestFrame, Class<T> clz){
    public <T extends BaseResponseInnerFrame<T>> WrapResponseCommonFrame<T> sendRRPC(String deviceName, IRequestFrame iRequestFrame, Class<T> clz) {
        CommonFrame commonFrame = sendRRPC(deviceName, iRequestFrame);
        if (commonFrame == null) {
            return null;
@@ -150,7 +153,7 @@
        return null;
    }
     /**
    /**
     * 调用自定义topic
     * https://help.aliyun.com/document_detail/69584.htm?spm=a2c4g.11186623.0.0.25b33982bSQSom#reference-snk-mrz-wdb
     *
@@ -169,25 +172,40 @@
        request.setIdentifier("rrpc");
        request.setArgs(JSON.toJSONString(param));
        //todo
        // 获得服务调用响应
        InvokeThingServiceResponse response = null;
        try {
            response = getClient().getAcsResponse(request);
        } catch (ClientException e) {
            e.printStackTrace();
        return getAcsResponse(request, 1);
    }
    /**
     * 获得服务调用响应
     *
     * @param request
     * @return
     */
    private InvokeThingServiceResponse.Data getAcsResponse(InvokeThingServiceRequest request, int time) {
        if (time <= 3) {
            InvokeThingServiceResponse response = null;
            try {
                response = getClient().getAcsResponse(request);
                if (response == null) {
                    log.error("调用rrpc失败,响应为空!");
                    Thread.sleep(100);
                    return getAcsResponse(request, time + 1);
                }
                if (!response.getSuccess()) {
                    log.error("调用rrpc失败," + response.getErrorMessage());
                    Thread.sleep(100);
                    return getAcsResponse(request, time + 1);
                } else {
                    // 服务调用成功,仅代表发送服务指令的成功,不代表执行服务本身是否成功
                    return response.getData();
                }
            } catch (Exception e) {
                throw new BusinessException("错误信息:" + e.getMessage());
            }
        } else {
            throw new BusinessException("硬件请求失败,请检查硬件设备!");
        }
        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;
    }
}