service-common/src/main/java/com/java110/common/charge/factory/common/CommonChargeMachineFactoryAdapt.java
New file @@ -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; } } service-common/src/main/java/com/java110/common/charge/factory/dingding/DingdingChargeMachineFactoryAdapt.java
File was renamed from 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; service-common/src/main/java/com/java110/common/charge/factory/dingding/DingdingChargeUtils.java
File was renamed from 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; springboot/src/main/java/com/java110/boot/controller/app/charge/NotifyCommonChargeController.java
New file @@ -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); } }