Преглед изворни кода

加入测试通用充电协议

Your Name пре 3 година
родитељ
комит
ae6ca64dcd

+ 79 - 0
service-common/src/main/java/com/java110/common/charge/factory/common/CommonChargeMachineFactoryAdapt.java

@@ -0,0 +1,79 @@
+package com.java110.common.charge.factory.common;
+
+
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
+import com.java110.common.charge.IChargeFactoryAdapt;
+import com.java110.common.charge.factory.dingding.DingdingChargeUtils;
+import com.java110.dto.chargeMachine.ChargeMachineDto;
+import com.java110.dto.chargeMachineOrder.NotifyChargeOrderDto;
+import com.java110.dto.chargeMachineOrder.NotifyChargePortDto;
+import com.java110.dto.chargeMachinePort.ChargeMachinePortDto;
+import com.java110.vo.ResultVo;
+import org.springframework.http.HttpMethod;
+import org.springframework.stereotype.Service;
+
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
+
+/**
+ * 通用 充电接口类
+ *
+ * 叮叮 充电桩 通知处理类名为 NotifyDingDingChargeController.java
+ */
+@Service("commonChargeMachineFactory")
+public class CommonChargeMachineFactoryAdapt implements IChargeFactoryAdapt {
+
+    private static final String QUERY_PORT_URL =  "/equipments/ID/PORT";
+
+    //开始充电
+    private static final String START_CHARGE_URL =  "/equipments/ID/PORT/open";
+
+    //关闭充电
+    private static final String STOP_CHARGE_URL = "/equipments/ID/PORT/close";
+
+    @Override
+    public ResultVo startCharge(ChargeMachineDto chargeMachineDto, ChargeMachinePortDto chargeMachinePortDto, String chargeType, double duration, String orderId) {
+
+
+        return new ResultVo(ResultVo.CODE_OK, "开始充电成功");
+    }
+
+    @Override
+    public ResultVo stopCharge(ChargeMachineDto chargeMachineDto, ChargeMachinePortDto chargeMachinePortDto) {
+        return new ResultVo(ResultVo.CODE_OK, "结束充电成功");
+
+    }
+
+    @Override
+    public ChargeMachinePortDto getChargePortState(ChargeMachineDto chargeMachineDto, ChargeMachinePortDto chargeMachinePortDto) {
+
+        chargeMachinePortDto.setState(ChargeMachinePortDto.STATE_FREE);
+        return chargeMachinePortDto;
+    }
+
+    @Override
+    public List<NotifyChargePortDto> getChargeHeartBeatParam(NotifyChargeOrderDto notifyChargeOrderDto) {
+
+        JSONArray jsonArray = JSONArray.parseArray(notifyChargeOrderDto.getBodyParam());
+        List<NotifyChargePortDto> ports = new ArrayList<>();
+
+        if (jsonArray == null || jsonArray.size() < 1) {
+            return ports;
+        }
+        NotifyChargePortDto port = null;
+        for (int portIndex = 0; portIndex < jsonArray.size(); portIndex++) {
+            port = new NotifyChargePortDto();
+            port.setPortCode(jsonArray.getJSONObject(portIndex).getString("port"));
+            port.setMachineCode(notifyChargeOrderDto.getMachineCode());
+            port.setOrderId(jsonArray.getJSONObject(portIndex).getString("chargeId"));
+            port.setEnergy(jsonArray.getJSONObject(portIndex).getString("energy"));
+            long time = jsonArray.getJSONObject(portIndex).getLongValue("powerTime");
+            port.setPowerTime(new Date(time));
+            ports.add(port);
+        }
+
+        return ports;
+    }
+}

+ 1 - 1
service-common/src/main/java/com/java110/common/charge/factory/DingdingChargeMachineFactoryAdapt.java

@@ -1,4 +1,4 @@
-package com.java110.common.charge.factory;
+package com.java110.common.charge.factory.dingding;
 
 
 import com.alibaba.fastjson.JSONArray;

+ 1 - 2
service-common/src/main/java/com/java110/common/charge/factory/DingdingChargeUtils.java

@@ -1,11 +1,10 @@
-package com.java110.common.charge.factory;
+package com.java110.common.charge.factory.dingding;
 
 import com.alibaba.fastjson.JSONObject;
 import com.java110.core.annotation.Java110Synchronized;
 import com.java110.core.log.LoggerFactory;
 import com.java110.utils.cache.JWTCache;
 import com.java110.utils.cache.MappingCache;
-import com.java110.utils.constant.WechatConstant;
 import com.java110.utils.factory.ApplicationContextFactory;
 import com.java110.utils.util.DateUtil;
 import com.java110.utils.util.StringUtil;

+ 101 - 0
springboot/src/main/java/com/java110/boot/controller/app/charge/NotifyCommonChargeController.java

@@ -0,0 +1,101 @@
+package com.java110.boot.controller.app.charge;
+
+import com.alibaba.fastjson.JSONObject;
+import com.java110.core.base.controller.BaseController;
+import com.java110.core.log.LoggerFactory;
+import com.java110.dto.chargeMachineOrder.NotifyChargeOrderDto;
+import com.java110.intf.common.INotifyChargeV1InnerServiceSMO;
+import com.java110.utils.cache.MappingCache;
+import org.slf4j.Logger;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.http.HttpStatus;
+import org.springframework.http.ResponseEntity;
+import org.springframework.web.bind.annotation.*;
+
+import javax.crypto.Mac;
+import javax.crypto.SecretKey;
+import javax.crypto.spec.SecretKeySpec;
+import javax.servlet.http.HttpServletRequest;
+import java.util.Base64;
+
+@RestController
+@RequestMapping(path = "/app/charge")
+public class NotifyCommonChargeController extends BaseController {
+
+    private final static Logger logger = LoggerFactory.getLogger(NotifyCommonChargeController.class);
+
+    public static final String DING_DING_DOMAIN = "DING_DING_CHARGE";
+
+
+    public static final String DING_DING_APP_ID = "APP_ID";
+    public static final String DING_DING_APP_SECURE = "APP_SECURE";
+    @Autowired
+    private INotifyChargeV1InnerServiceSMO notifyChargeV1InnerServiceSMOImpl;
+
+    /**
+     * <p>支付回调Api</p>
+     *
+     * @param request
+     * @throws Exception
+     */
+    @RequestMapping(path = "/{id}/{port}/finish", method = RequestMethod.POST)
+    public ResponseEntity<String> finishCharge(
+            @PathVariable String id,
+            @PathVariable String port,
+            @RequestBody String postInfo,
+            HttpServletRequest request) {
+
+        JSONObject param = JSONObject.parseObject(postInfo);
+        NotifyChargeOrderDto notifyChargeOrderDto = new NotifyChargeOrderDto();
+        notifyChargeOrderDto.setOrderId(param.getString("chargeId"));
+        notifyChargeOrderDto.setMachineCode(id);
+        notifyChargeOrderDto.setPortCode(port);
+        notifyChargeOrderDto.setBodyParam(postInfo);
+
+        return notifyChargeV1InnerServiceSMOImpl.finishCharge(notifyChargeOrderDto);
+
+    }
+
+    /**
+     * <p>支付回调Api</p>
+     *
+     * @param request
+     * @throws Exception
+     */
+    @RequestMapping(path = "/{id}/event", method = RequestMethod.POST)
+    public ResponseEntity<String> heartbeat(
+            @PathVariable String id,
+            @RequestBody String postInfo,
+            HttpServletRequest request) {
+        NotifyChargeOrderDto notifyChargeOrderDto = new NotifyChargeOrderDto();
+        notifyChargeOrderDto.setMachineCode(id);
+        notifyChargeOrderDto.setBodyParam(postInfo);
+
+        return notifyChargeV1InnerServiceSMOImpl.heartbeat(notifyChargeOrderDto);
+
+    }
+
+    /**
+     * <p>支付回调Api</p>
+     *
+     * @param request
+     * @throws Exception
+     */
+    @RequestMapping(path = "/{id}/{port}/event", method = RequestMethod.POST)
+    public ResponseEntity<String> chargeHeartbeat(
+            @PathVariable String id,
+            @PathVariable String port,
+            @RequestBody String postInfo,
+            HttpServletRequest request) {
+
+        NotifyChargeOrderDto notifyChargeOrderDto = new NotifyChargeOrderDto();
+        notifyChargeOrderDto.setMachineCode(id);
+        notifyChargeOrderDto.setPortCode(port);
+        notifyChargeOrderDto.setBodyParam(postInfo);
+
+        return notifyChargeV1InnerServiceSMOImpl.chargeHeartBeat(notifyChargeOrderDto);
+
+    }
+
+
+}