Your Name
2023-03-11 ae6ca64dcd91e4d0bd4095b64946a0567fc7bd90
加入测试通用充电协议
2 文件已重命名
2个文件已添加
185 ■■■■■ 已修改文件
service-common/src/main/java/com/java110/common/charge/factory/common/CommonChargeMachineFactoryAdapt.java 79 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
service-common/src/main/java/com/java110/common/charge/factory/dingding/DingdingChargeMachineFactoryAdapt.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
service-common/src/main/java/com/java110/common/charge/factory/dingding/DingdingChargeUtils.java 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springboot/src/main/java/com/java110/boot/controller/app/charge/NotifyCommonChargeController.java 101 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
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);
    }
}