Просмотр исходного кода

Merge remote-tracking branch 'origin/master' into xinghong-dev

xiaogang лет назад: 3
Родитель
Сommit
3f2403d5a0

+ 2 - 2
java110-interface/src/main/java/com/java110/intf/common/INotifyChargeV1InnerServiceSMO.java

@@ -53,8 +53,8 @@ public interface INotifyChargeV1InnerServiceSMO {
      * @param notifyChargeOrderDto 数据对象分享
      * @return 小区下的小区楼记录数
      */
-    @RequestMapping(value = "/heartbeat", method = RequestMethod.POST)
-    ResponseEntity<String> heartbeat(@RequestBody NotifyChargeOrderDto notifyChargeOrderDto);
+    @RequestMapping(value = "/workHeartbeat", method = RequestMethod.POST)
+    ResultVo workHeartbeat(@RequestBody NotifyChargeOrderDto notifyChargeOrderDto);
 
 
 }

+ 11 - 7
service-api/src/main/java/com/java110/api/controller/app/charge/NotifyDingDingChargeController.java

@@ -36,7 +36,7 @@ public class NotifyDingDingChargeController extends BaseController {
     private INotifyChargeV1InnerServiceSMO notifyChargeV1InnerServiceSMOImpl;
 
     /**
-     * <p>支付回调Api</p>
+     * <p>充电结束通知</p>
      *
      * @param request
      * @throws Exception
@@ -80,25 +80,29 @@ public class NotifyDingDingChargeController extends BaseController {
      * @param request
      * @throws Exception
      */
-    @RequestMapping(path = "/{id}/event", method = RequestMethod.POST)
-    public ResponseEntity<String> heartbeat(
+    @RequestMapping(path = "/{id}/power", method = RequestMethod.POST)
+    public ResponseEntity<String> workHeartbeat(
             @PathVariable String id,
             @RequestBody String postInfo,
             HttpServletRequest request) {
-        if (!validateSign(request, "/equipments/" + id + "/event", postInfo)) {
+        if (!validateSign(request, "/equipments/" + id + "/power", postInfo)) {
             return new ResponseEntity<>("{\n" +
                     "\"code\" : -1,\n" +
                     "\"msg\" : \"鉴权失败\"\n" +
                     "}", HttpStatus.OK);
         }
 
-        JSONObject param = JSONObject.parseObject(postInfo);
         NotifyChargeOrderDto notifyChargeOrderDto = new NotifyChargeOrderDto();
         notifyChargeOrderDto.setMachineCode(id);
         notifyChargeOrderDto.setBodyParam(postInfo);
+        ResultVo resultVo = null;
+        resultVo = notifyChargeV1InnerServiceSMOImpl.workHeartbeat(notifyChargeOrderDto);
+        if (resultVo.getCode() == ResultVo.CODE_OK) {
+            resultVo.setCode(200);
+            resultVo.setMsg("success");
+        }
 
-        return notifyChargeV1InnerServiceSMOImpl.heartbeat(notifyChargeOrderDto);
-
+        return ResultVo.createResponseEntity(resultVo);
     }
 
     private boolean validateSign(HttpServletRequest request, String url, String postInfo) {

+ 26 - 5
service-common/src/main/java/com/java110/common/charge/ChargeCoreImpl.java

@@ -294,11 +294,32 @@ public class ChargeCoreImpl implements IChargeCore {
     }
 
     @Override
-    public ResponseEntity<String> heartbeat(NotifyChargeOrderDto notifyChargeOrderDto) {
-        return new ResponseEntity<>("{\n" +
-                "\"code\" : 200,\n" +
-                "\"msg\" : \"success\"\n" +
-                "}", HttpStatus.OK);
+    public ResultVo workHeartbeat(NotifyChargeOrderDto notifyChargeOrderDto) {
+
+        ChargeMachineDto chargeMachineDto = new ChargeMachineDto();
+        chargeMachineDto.setMachineCode(notifyChargeOrderDto.getMachineCode());
+        List<ChargeMachineDto> chargeMachineDtos = chargeMachineV1InnerServiceSMOImpl.queryChargeMachines(chargeMachineDto);
+
+        if (chargeMachineDtos == null || chargeMachineDtos.size() < 1) {
+            return new ResultVo(ResultVo.CODE_OK, "成功");
+        }
+
+
+        ChargeMachineFactoryDto chargeMachineFactoryDto = new ChargeMachineFactoryDto();
+        chargeMachineFactoryDto.setFactoryId(chargeMachineDtos.get(0).getImplBean());
+        List<ChargeMachineFactoryDto> chargeMachineFactoryDtos = chargeMachineFactoryV1InnerServiceSMOImpl.queryChargeMachineFactorys(chargeMachineFactoryDto);
+
+        Assert.listOnlyOne(chargeMachineFactoryDtos, "充电桩厂家不存在");
+
+        IChargeFactoryAdapt chargeFactoryAdapt = ApplicationContextFactory.getBean(chargeMachineFactoryDtos.get(0).getBeanImpl(), IChargeFactoryAdapt.class);
+        if (chargeFactoryAdapt == null) {
+            throw new CmdException("厂家接口未实现");
+        }
+
+        chargeFactoryAdapt.workHeartbeat(chargeMachineDtos.get(0),notifyChargeOrderDto.getBodyParam());
+
+        return new ResultVo(ResultVo.CODE_OK, "成功");
+
     }
 
     @Override

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

@@ -43,7 +43,7 @@ public interface IChargeCore {
 
     ResultVo finishCharge(NotifyChargeOrderDto notifyChargeOrderDto);
 
-    ResponseEntity<String> heartbeat(NotifyChargeOrderDto notifyChargeOrderDto);
+    ResultVo workHeartbeat(NotifyChargeOrderDto notifyChargeOrderDto);
 
 
     /**

+ 7 - 0
service-common/src/main/java/com/java110/common/charge/IChargeFactoryAdapt.java

@@ -53,4 +53,11 @@ public interface IChargeFactoryAdapt {
      * @param chargeMachineDto
      */
     void queryChargeMachineState(ChargeMachineDto chargeMachineDto);
+
+    /**
+     * 工作心跳
+     * @param chargeMachineDto
+     * @param bodyParam
+     */
+    void workHeartbeat(ChargeMachineDto chargeMachineDto, String bodyParam);
 }

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

@@ -82,4 +82,9 @@ public class CommonChargeMachineFactoryAdapt implements IChargeFactoryAdapt {
         chargeMachineDto.setState(ChargeMachineDto.STATE_ONLINE);
         chargeMachineDto.setStateName("在线");
     }
+
+    @Override
+    public void workHeartbeat(ChargeMachineDto chargeMachineDto, String bodyParam) {
+
+    }
 }

+ 42 - 0
service-common/src/main/java/com/java110/common/charge/factory/dingding/DingdingChargeMachineFactoryAdapt.java

@@ -5,13 +5,19 @@ import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
 import com.java110.common.charge.IChargeFactoryAdapt;
 import com.java110.dto.chargeMachine.ChargeMachineDto;
+import com.java110.dto.chargeMachineOrder.ChargeMachineOrderDto;
 import com.java110.dto.chargeMachineOrder.NotifyChargeOrderDto;
 import com.java110.dto.chargeMachineOrder.NotifyChargePortDto;
 import com.java110.dto.chargeMachinePort.ChargeMachinePortDto;
+import com.java110.intf.common.IChargeMachineOrderV1InnerServiceSMO;
+import com.java110.po.chargeMachineOrder.ChargeMachineOrderPo;
+import com.java110.utils.util.DateUtil;
 import com.java110.vo.ResultVo;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.http.HttpMethod;
 import org.springframework.stereotype.Service;
 
+import java.math.BigDecimal;
 import java.util.ArrayList;
 import java.util.Date;
 import java.util.List;
@@ -35,6 +41,9 @@ public class DingdingChargeMachineFactoryAdapt implements IChargeFactoryAdapt {
     //关闭充电
     private static final String STOP_CHARGE_URL = DingdingChargeUtils.URL + "/equipments/ID/PORT/close";
 
+    @Autowired
+    private IChargeMachineOrderV1InnerServiceSMO chargeMachineOrderV1InnerServiceSMOImpl;
+
     @Override
     public ResultVo startCharge(ChargeMachineDto chargeMachineDto, ChargeMachinePortDto chargeMachinePortDto, String chargeType, double duration, String orderId) {
         String url = START_CHARGE_URL.replace("ID", chargeMachineDto.getMachineCode()).replace("PORT", chargeMachinePortDto.getPortCode());
@@ -151,4 +160,37 @@ public class DingdingChargeMachineFactoryAdapt implements IChargeFactoryAdapt {
         chargeMachineDto.setState(ChargeMachineDto.STATE_OFFLINE);
         chargeMachineDto.setStateName("离线");
     }
+
+    @Override
+    public void workHeartbeat(ChargeMachineDto chargeMachineDto, String bodyParam) {
+
+        JSONArray params = JSONArray.parseArray(bodyParam);
+
+        if (params == null || params.size() < 1) {
+            return;
+        }
+
+        JSONObject param = null;
+        for(int paramIndex = 0 ;paramIndex < params.size() ; paramIndex ++){
+            doWorkHeartbeat(chargeMachineDto,params.getJSONObject(paramIndex));
+        }
+
+    }
+
+
+    /**
+     * 工作心跳
+     * @param chargeMachineDto
+     * @param param
+     */
+    private void doWorkHeartbeat(ChargeMachineDto chargeMachineDto, JSONObject param) {
+
+        ChargeMachineOrderPo chargeMachineOrderPo = new ChargeMachineOrderPo();
+        chargeMachineOrderPo.setOrderId(param.getString("chargeId"));
+
+        chargeMachineOrderPo.setCommunityId(chargeMachineDto.getCommunityId());
+        chargeMachineOrderPo.setEnergy(param.getString("energy"));
+
+        chargeMachineOrderV1InnerServiceSMOImpl.updateChargeMachineOrder(chargeMachineOrderPo);
+    }
 }

+ 5 - 0
service-common/src/main/java/com/java110/common/charge/factory/kehang/KeHangChargeMachineFactoryAdapt.java

@@ -127,6 +127,11 @@ public class KeHangChargeMachineFactoryAdapt implements IChargeFactoryAdapt {
         chargeMachineDto.setStateName("离线");
     }
 
+    @Override
+    public void workHeartbeat(ChargeMachineDto chargeMachineDto, String bodyParam) {
+
+    }
+
     @Override
     public List<NotifyChargePortDto> getChargeHeartBeatParam(NotifyChargeOrderDto notifyChargeOrderDto) {
         return null;

+ 2 - 2
service-common/src/main/java/com/java110/common/smo/impl/NotifyChargeV1InnerServiceSMOImpl.java

@@ -64,8 +64,8 @@ public class NotifyChargeV1InnerServiceSMOImpl extends BaseServiceSMO implements
     }
 
     @Override
-    public ResponseEntity<String> heartbeat(@RequestBody NotifyChargeOrderDto notifyChargeOrderDto) {
-        return chargeCoreImpl.heartbeat(notifyChargeOrderDto);
+    public ResultVo workHeartbeat(@RequestBody NotifyChargeOrderDto notifyChargeOrderDto) {
+        return chargeCoreImpl.workHeartbeat(notifyChargeOrderDto);
     }
 
 

+ 11 - 15
springboot/src/main/java/com/java110/boot/controller/app/charge/NotifyDingDingChargeController.java

@@ -19,14 +19,6 @@ import javax.crypto.spec.SecretKeySpec;
 import javax.servlet.http.HttpServletRequest;
 import java.util.Base64;
 
-/**
- * http://demo.homecommunity.cn/app/equipments/{id}/{port}/finish
- * <p>
- * 需要给叮叮厂家提供
- * http://demo.homecommunity.cn/app
- * 注意demo.homecommunity.cn 改成自己的域名
- * 叮叮充电桩 结束充电回调处理类
- */
 @RestController
 @RequestMapping(path = "/app/equipments")
 public class NotifyDingDingChargeController extends BaseController {
@@ -42,7 +34,7 @@ public class NotifyDingDingChargeController extends BaseController {
     private INotifyChargeV1InnerServiceSMO notifyChargeV1InnerServiceSMOImpl;
 
     /**
-     * <p>支付回调Api</p>
+     * <p>充电结束通知</p>
      *
      * @param request
      * @throws Exception
@@ -86,25 +78,29 @@ public class NotifyDingDingChargeController extends BaseController {
      * @param request
      * @throws Exception
      */
-    @RequestMapping(path = "/{id}/event", method = RequestMethod.POST)
-    public ResponseEntity<String> heartbeat(
+    @RequestMapping(path = "/{id}/power", method = RequestMethod.POST)
+    public ResponseEntity<String> workHeartbeat(
             @PathVariable String id,
             @RequestBody String postInfo,
             HttpServletRequest request) {
-        if (!validateSign(request, "/equipments/" + id + "/event", postInfo)) {
+        if (!validateSign(request, "/equipments/" + id + "/power", postInfo)) {
             return new ResponseEntity<>("{\n" +
                     "\"code\" : -1,\n" +
                     "\"msg\" : \"鉴权失败\"\n" +
                     "}", HttpStatus.OK);
         }
 
-        JSONObject param = JSONObject.parseObject(postInfo);
         NotifyChargeOrderDto notifyChargeOrderDto = new NotifyChargeOrderDto();
         notifyChargeOrderDto.setMachineCode(id);
         notifyChargeOrderDto.setBodyParam(postInfo);
+        ResultVo resultVo = null;
+        resultVo = notifyChargeV1InnerServiceSMOImpl.workHeartbeat(notifyChargeOrderDto);
+        if (resultVo.getCode() == ResultVo.CODE_OK) {
+            resultVo.setCode(200);
+            resultVo.setMsg("success");
+        }
 
-        return notifyChargeV1InnerServiceSMOImpl.heartbeat(notifyChargeOrderDto);
-
+        return ResultVo.createResponseEntity(resultVo);
     }
 
     private boolean validateSign(HttpServletRequest request, String url, String postInfo) {