| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165 |
- package com.zsElectric.boot.charging.controller;
- import com.google.gson.Gson;
- import com.zsElectric.boot.charging.service.ChargingReceptionService;
- import com.zsElectric.boot.common.annotation.Log;
- import com.zsElectric.boot.common.constant.ConnectivityConstants;
- import com.zsElectric.boot.common.enums.LogModuleEnum;
- import com.zsElectric.boot.common.util.AESCryptoUtils;
- import com.zsElectric.boot.common.util.HmacMD5Util;
- import com.zsElectric.boot.common.util.electric.QueryTokenResponseData;
- import com.zsElectric.boot.common.util.electric.RequestParmsEntity;
- import com.zsElectric.boot.common.util.electric.ResponseParmsEntity;
- import com.zsElectric.boot.common.util.electric.queryToken.JwtTokenUtil;
- import com.zsElectric.boot.common.util.electric.queryToken.QueryTokenRequestParms;
- import io.swagger.v3.oas.annotations.Operation;
- import io.swagger.v3.oas.annotations.tags.Tag;
- import lombok.RequiredArgsConstructor;
- import lombok.extern.slf4j.Slf4j;
- import org.springframework.web.bind.annotation.*;
- @Slf4j
- @RestController
- @RequiredArgsConstructor
- @Tag(name = "充电业务相关接口")
- @RequestMapping("/dev/v1/linkData")
- public class LinkDataController {
- private final ChargingReceptionService chargingReceptionService;
- private final JwtTokenUtil jwtTokenUtil;
- /**
- * 获取token
- * @author SheepHy
- * @param request,参数为类则包含{@link RequestParmsEntity}
- * @return 获取tokenVO
- */
- @Operation(summary = "获取token")
- @PostMapping("/query_token")
- public ResponseParmsEntity getToken(@RequestBody RequestParmsEntity request) throws Exception {
- ResponseParmsEntity responseParmsEntity = new ResponseParmsEntity();
- try {
- //验证签名
- if (!HmacMD5Util.verify(request.getOperatorID() + request.getData() + request.getTimeStamp() + request.getSeq(),
- ConnectivityConstants.SIG_SECRET, request.getSig())) {
- return responseParmsEntity
- .setRet(4001)
- .setMsg("签名验证失败")
- .setData("")
- .setSig(HmacMD5Util.genSign(responseParmsEntity.getRet(), responseParmsEntity.getMsg(), responseParmsEntity.getData(),
- ConnectivityConstants.SIG_SECRET));
- }
- String data = request.getData();
- String string = AESCryptoUtils.decrypt(data, ConnectivityConstants.DATA_SECRET, ConnectivityConstants.DATA_SECRET_IV);
- QueryTokenRequestParms queryTokenRequestParms = new Gson().fromJson(string, QueryTokenRequestParms.class);
- if (queryTokenRequestParms == null || queryTokenRequestParms.getOperatorID() == null || queryTokenRequestParms.getOperatorSecret() == null) {
- responseParmsEntity
- .setRet(4003)
- .setMsg("参数错误")
- .setData("");
- responseParmsEntity.setSig(HmacMD5Util.genSign(responseParmsEntity.getRet(), responseParmsEntity.getMsg(), responseParmsEntity.getData(),
- ConnectivityConstants.SIG_SECRET));
- return responseParmsEntity;
- }
- //判断运营商ID与密钥是否正确
- if (!queryTokenRequestParms.getOperatorID().equals(ConnectivityConstants.PLATFORM_OPERATOR_ID) && !queryTokenRequestParms.getOperatorSecret().equals(ConnectivityConstants.PLATFORM_OPERATOR_SECRET)) {
- responseParmsEntity
- .setRet(4004)
- .setMsg("OperatorID或OperatorSecret错误!")
- .setData("");
- responseParmsEntity.setSig(HmacMD5Util.genSign(responseParmsEntity.getRet(), responseParmsEntity.getMsg(), responseParmsEntity.getData(),
- ConnectivityConstants.SIG_SECRET));
- }
- //redis获取token,不存在则创建
- String accessToken = jwtTokenUtil.generateToken(queryTokenRequestParms.getOperatorID());
- Integer remainingTTL = jwtTokenUtil.getRemainingTTL(accessToken).intValue();
- //构建Data(token信息)
- QueryTokenResponseData queryTokenResponseData = new QueryTokenResponseData();
- queryTokenResponseData.setOperatorID(queryTokenRequestParms.getOperatorID());
- queryTokenResponseData.setAccessToken(accessToken);
- queryTokenResponseData.setTokenAvailableTime(remainingTTL);
- queryTokenResponseData.setSuccStat(0);
- queryTokenResponseData.setFailReason(0);
- log.info("生成token信息:{}", new Gson().toJson(queryTokenResponseData));
- String encodeData = AESCryptoUtils.encrypt(new Gson().toJson(queryTokenResponseData), ConnectivityConstants.PLATFORM_DATA_SECRET,
- ConnectivityConstants.PLATFORM_DATA_SECRET_IV);
- responseParmsEntity
- .setRet(0)
- .setMsg("成功")
- .setData(encodeData)
- .setSig(HmacMD5Util.genSign(responseParmsEntity.getRet(), responseParmsEntity.getMsg(), responseParmsEntity.getData(),
- ConnectivityConstants.SIG_SECRET));
- return responseParmsEntity;
- } catch (Exception e) {
- log.error("系统错误:{}", e.getMessage());
- responseParmsEntity
- .setRet(500)
- .setMsg("系统错误")
- .setData("");
- responseParmsEntity.setSig(HmacMD5Util.genSign(responseParmsEntity.getRet(), responseParmsEntity.getMsg(), responseParmsEntity.getData(),
- ConnectivityConstants.SIG_SECRET));
- return responseParmsEntity;
- }
- }
- /**
- * <p>2.4 推送启动充电结果</p>
- * @author SheepHy
- * @param requestDTO,参数为类则包含{@link RequestParmsEntity}
- * @return 停推送启动充电结果VO
- */
- @Operation(summary = "推送启动充电结果")
- @PostMapping("/notification_start_charge_result")
- @Log(value = "推送启动充电结果", module = LogModuleEnum.PARKING, params = true, result = true)
- public ResponseParmsEntity chargeResponse(@RequestBody RequestParmsEntity requestDTO){
- return chargingReceptionService.chargeResponse(requestDTO);
- }
- /**
- * 2.6 推送充电状态
- * */
- @Operation(summary = "推送充电状态")
- @PostMapping("/notification_equip_charge_status")
- @Log(value = "推送充电状态", module = LogModuleEnum.PARKING, params = true, result = true)
- public ResponseParmsEntity chargeStatusResponse(@RequestBody RequestParmsEntity requestDTO){
- return chargingReceptionService.chargeStatusResponse(requestDTO);
- }
- /**
- * 2.8 推送停止充电结果
- * */
- @Operation(summary = "推送停止充电结果")
- @PostMapping("/notification_stop_charge_result")
- @Log(value = "推送停止充电结果", module = LogModuleEnum.PARKING, params = true, result = true)
- public ResponseParmsEntity stopChargeResponse(@RequestBody RequestParmsEntity requestDTO){
- return chargingReceptionService.stopChargeResponse(requestDTO);
- }
- /**
- * 2.9 推送充电订单信息
- * */
- @Operation(summary = "推送充电订单信息")
- @PostMapping("/notification_charge_order_info")
- @Log(value = "推送充电订单信息", module = LogModuleEnum.PARKING, params = true, result = true)
- public ResponseParmsEntity chargeOrderResponse(@RequestBody RequestParmsEntity requestDTO){
- return chargingReceptionService.chargeOrderResponse(requestDTO);
- }
- /**
- * 3.2 设备状态变化推送
- * */
- @Operation(summary = "设备状态变化推送")
- @PostMapping("/notification_stationStatus")
- @Log(value = "设备状态变化推送", module = LogModuleEnum.PARKING, params = true, result = true)
- public ResponseParmsEntity stationStatus(@RequestBody RequestParmsEntity requestDTO){
- return chargingReceptionService.stationStatus(requestDTO);
- }
- }
|