Răsfoiți Sursa

微信预支付

skyline 2 ani în urmă
părinte
comite
dbbe508e3c

+ 1 - 1
entity/src/main/java/com/kym/entity/admin/EquipmentRelation.java

@@ -28,7 +28,7 @@ public class EquipmentRelation extends BaseEntity implements Serializable {
     /**
      * EN+站点id
      */
-    private Integer stationId;
+    private String stationId;
 
     /**
      * 二维码sn号

+ 1 - 1
entity/src/main/java/com/kym/entity/miniapp/ChargeOrder.java

@@ -26,7 +26,7 @@ public class ChargeOrder extends BaseEntity implements Serializable {
 
     private Long userId;
 
-    private Integer stationId;
+    private String stationId;
 
     /**
      * 充电订单号(EN+)

+ 1 - 1
entity/src/main/java/com/kym/entity/miniapp/Collect.java

@@ -30,7 +30,7 @@ public class Collect extends BaseEntity implements Serializable {
     /**
      * 站点id
      */
-    private Long stationId;
+    private String stationId;
 
     /**
      * 状态: 0-不显示 1-显示

+ 3 - 3
miniapp/src/main/java/com/kym/miniapp/controller/ChargerController.java

@@ -75,9 +75,9 @@ public class ChargerController {
     }
 
     @SysLog("启动充电")
-    @PostMapping("/startCharge")
-    R<String> startCharge(@RequestBody String connectorId) {
-        return R.success(chargeService.queryStartCharge(connectorId));
+    @GetMapping("/startCharge")
+    R<String> startCharge(@RequestParam("connectorId") String connectorId, @RequestParam("stationId") String stationId) {
+        return R.success(chargeService.queryStartCharge(connectorId, stationId));
     }
 
     @SysLog("停止充电")

+ 1 - 1
service/src/main/java/com/kym/service/admin/impl/EquipmentRelationServiceImpl.java

@@ -25,6 +25,6 @@ public class EquipmentRelationServiceImpl extends ServiceImpl<EquipmentRelationM
 
     @Override
     public EquipmentRelation getByShortId(String shortId) {
-        return getOne(lambdaQuery().eq(EquipmentRelation::getShortId,shortId));
+        return lambdaQuery().eq(EquipmentRelation::getShortId,shortId).one();
     }
 }

+ 1 - 1
service/src/main/java/com/kym/service/miniapp/ChargeService.java

@@ -10,7 +10,7 @@ import com.kym.entity.miniapp.ChargeOrder;
  */
 public interface ChargeService {
 
-    String queryStartCharge(String connectorId);
+    String queryStartCharge(String connectorId, String stationId);
 
     ChargeOrder queryEquipChargeStatus(String startChargeSeq);
 

+ 1 - 1
service/src/main/java/com/kym/service/miniapp/impl/AccountServiceImpl.java

@@ -26,7 +26,7 @@ public class AccountServiceImpl extends ServiceImpl<AccountMapper, Account> impl
 
     @Override
     public Account getAccountByUserId(Long userId) {
-        return getOne(lambdaQuery().eq(Account::getUserId, userId));
+        return lambdaQuery().eq(Account::getUserId, userId).one();
     }
 
 

+ 2 - 2
service/src/main/java/com/kym/service/miniapp/impl/ChargeOrderServiceImpl.java

@@ -18,11 +18,11 @@ import org.springframework.stereotype.Service;
 public class ChargeOrderServiceImpl extends ServiceImpl<ChargeOrderMapper, ChargeOrder> implements ChargeOrderService {
     @Override
     public ChargeOrder getChargingOrderByUserId(Long userId) {
-        return getOne(lambdaQuery().eq(ChargeOrder::getUserId,userId).eq(ChargeOrder::getChargeStatus,2));
+        return lambdaQuery().eq(ChargeOrder::getUserId,userId).eq(ChargeOrder::getChargeStatus,2).one();
     }
     @Override
     public ChargeOrder getChargingOrderByStartChargeSeq(String startChargeSeq) {
-        return getOne(lambdaQuery().eq(ChargeOrder::getStartChargeSeq,startChargeSeq));
+        return lambdaQuery().eq(ChargeOrder::getStartChargeSeq,startChargeSeq).one();
     }
 
 

+ 67 - 63
service/src/main/java/com/kym/service/miniapp/impl/ChargeServiceImpl.java

@@ -53,80 +53,84 @@ public class ChargeServiceImpl implements ChargeService {
      * @return
      */
     @Override
-    public String queryStartCharge(String connectorId) {
+    public String queryStartCharge(String connectorId, String stationId) {
         var userId = StpUtil.getSession().getLong("userId");
         if (connectorId.length() == 6) {
             // 查询EN+设备SN
             var equipmentRelation = equipmentRelationService.getByShortId(connectorId);
-            var equipmentId = equipmentRelation.getEquipmentId();
-            if (equipmentId.length() == 16) {
+            connectorId = equipmentRelation.getEquipmentId();
+            if (connectorId.length() == 16) {
                 // 如果是16位,末尾补1作为单枪枪号
-                equipmentId = equipmentId.concat("1");
-            }
-            // 二维码文本
-            var qrCode = "";
-            // 当前设备是是否有正在进行中的订单
-            var chargeOrder = chargeOrderService.getChargingOrderByUserId(userId);
-            if (chargeOrder == null) {
-                LOGGER.error("用户:{}存在进行中的订单:{}", userId, chargeOrder.getId());
-                throw new BusinessException(ResponseEnum.ORDER_IN_PROGRESS);
+                connectorId = connectorId.concat("1");
             }
-            // 查询用户余额
-            var account = accountService.getAccountByUserId(userId);
-            if (account.getBalance() <= 200) {
-                LOGGER.error("用户:{}余额不足2元,余额:{}", userId, account.getBalance());
-                throw new BusinessException(ResponseEnum.INSUFFICIENT_USER_BALANCE);
-            }
-            // 传递给EN+的余额要小于实际余额,防止订单超扣的情况,这里少传0.5元
-            var amount = account.getBalance() - 50;
-
-            // 充电订单号/设备认证号
-            String startChargeSeq = operatorId.substring(0, 8).concat(String.valueOf(idGenerator.nextId()));
-
-            // 请求设备认证
-            var equipAuth = enPlusService.queryEquipAuth(connectorId, startChargeSeq);
-
-            if (equipAuth.containsKey("SuccStat") && equipAuth.getIntValue("SuccStat") == 0) {
-                // TODO 查询业务策略信息(计费信息),目前计费在EN+完成,后续自主计费需要开发
-                // 启动充电
-                var startCharge = enPlusService.queryStartCharge(startChargeSeq, connectorId, qrCode, amount);
-                if (startCharge.containsKey("SuccStat") && startCharge.getIntValue("SuccStat") == 0) {
-                    // 启动成功,生成充电订单
-                    var order = new ChargeOrder();
-                    order.setUserId(userId);
-                    order.setStationId(equipmentRelation.getStationId());
-                    order.setStartChargeSeq(startChargeSeq);
-                    order.setConnectorId(connectorId);
-                    order.setChargeStatus(startCharge.getIntValue("StartChargeSeqStat"));
-                    chargeOrderService.save(order);
-                    // TODO: 2023-08-07 包装成自己的数据
-                    return startChargeSeq;
-                } else {
-                    // 启动充电失败
-                    LOGGER.error("设备启动充电失败:{}", startCharge);
-                    switch (equipAuth.getIntValue("FailReason")) {
-                        case 1 -> // 设备不存在
-                                throw new BusinessException(ResponseEnum.EN_PLUS_EQUIP_NOT_EXIST);
-                        case 2 -> // 设备离线
-                                throw new BusinessException(ResponseEnum.EN_PLUS_EQUIP_OFFLINE);
-                    }
-                    throw new BusinessException(ResponseEnum.EN_PLUS_EQUIP_START_FAIL);
-                }
+        }
+        if (connectorId.length() == 16) {
+            connectorId = connectorId.concat("1");
+        } else {
+            // 充电桩编号错误
+            LOGGER.error("用户:{}请求充电,设备编码错误:{}", userId, connectorId);
+            throw new BusinessException(ResponseEnum.EQUIP_CONNECTOR_ID_ERROR);
+        }
+
+        // 二维码文本
+        var qrCode = "";
+        // 当前设备是是否有正在进行中的订单
+        var chargeOrder = chargeOrderService.getChargingOrderByUserId(userId);
+        if (chargeOrder != null) {
+            LOGGER.error("用户:{}存在进行中的订单:{}", userId, chargeOrder.getId());
+            throw new BusinessException(ResponseEnum.ORDER_IN_PROGRESS);
+        }
+        // 查询用户余额
+        var account = accountService.getAccountByUserId(userId);
+        if (account.getBalance() <= 200) {
+            LOGGER.error("用户:{}余额不足2元,余额:{}", userId, account.getBalance());
+            throw new BusinessException(ResponseEnum.INSUFFICIENT_USER_BALANCE);
+        }
+        // 传递给EN+的余额要小于实际余额,防止订单超扣的情况,这里少传0.5元
+        var amount = account.getBalance() - 50;
+
+        // 充电订单号/设备认证号
+        String startChargeSeq = OrderUtils.getOrderNo(operatorId);
+
+        // 请求设备认证
+        var equipAuth = enPlusService.queryEquipAuth(connectorId, startChargeSeq);
+
+        if (equipAuth.containsKey("SuccStat") && equipAuth.getIntValue("SuccStat") == 0) {
+            // TODO 查询业务策略信息(计费信息),目前计费在EN+完成,后续自主计费需要开发
+            // 启动充电
+            var startCharge = enPlusService.queryStartCharge(startChargeSeq, connectorId, qrCode, amount);
+            if (startCharge.containsKey("SuccStat") && startCharge.getIntValue("SuccStat") == 0) {
+                // 启动成功,生成充电订单
+                var order = new ChargeOrder();
+                order.setUserId(userId);
+                order.setStationId(stationId);
+                order.setStartChargeSeq(startChargeSeq);
+                order.setConnectorId(connectorId);
+                order.setChargeStatus(startCharge.getIntValue("StartChargeSeqStat"));
+                chargeOrderService.save(order);
+                // TODO: 2023-08-07 包装成自己的数据
+                return startChargeSeq;
             } else {
-                // 设备认证失败
-                LOGGER.error("设备认证失败:{}", equipAuth);
+                // 启动充电失败
+                LOGGER.error("设备启动充电失败:{}", startCharge);
                 switch (equipAuth.getIntValue("FailReason")) {
-                    case 1 -> // 设备未插枪
-                            throw new BusinessException(ResponseEnum.EN_PLUS_EQUIP_NOT_CONNECTED);
-                    case 2 -> // 设备检测失败
-                            throw new BusinessException(ResponseEnum.EN_PLUS_EQUIP_AUTH_FAIL);
+                    case 1 -> // 设备不存在
+                            throw new BusinessException(ResponseEnum.EN_PLUS_EQUIP_NOT_EXIST);
+                    case 2 -> // 设备离线
+                            throw new BusinessException(ResponseEnum.EN_PLUS_EQUIP_OFFLINE);
                 }
-                throw new BusinessException(ResponseEnum.EN_PLUS_EQUIP_AUTH_FAIL);
+                throw new BusinessException(ResponseEnum.EN_PLUS_EQUIP_START_FAIL);
             }
         } else {
-            // 充电桩编号错误
-            LOGGER.error("用户:{}请求充电,设备编码错误:{}", userId, connectorId);
-            throw new BusinessException(ResponseEnum.EQUIP_CONNECTOR_ID_ERROR);
+            // 设备认证失败
+            LOGGER.error("设备认证失败:{}", equipAuth);
+            switch (equipAuth.getIntValue("FailReason")) {
+                case 1 -> // 设备未插枪
+                        throw new BusinessException(ResponseEnum.EN_PLUS_EQUIP_NOT_CONNECTED);
+                case 2 -> // 设备检测失败
+                        throw new BusinessException(ResponseEnum.EN_PLUS_EQUIP_AUTH_FAIL);
+            }
+            throw new BusinessException(ResponseEnum.EN_PLUS_EQUIP_AUTH_FAIL);
         }
     }
 

+ 1 - 1
service/src/main/java/com/kym/service/miniapp/impl/WalletDetailServiceImpl.java

@@ -23,7 +23,7 @@ public class WalletDetailServiceImpl extends ServiceImpl<WalletDetailMapper, Wal
 
     @Override
     public WalletDetail getWalletDetailByOrderNo(String orderNo) {
-        return getOne(lambdaQuery().eq(WalletDetail::getOrderNo, orderNo));
+        return lambdaQuery().eq(WalletDetail::getOrderNo, orderNo).one();
     }
 
     @Override

+ 1 - 1
service/src/main/java/com/kym/service/wechat/impl/WxPayServiceImpl.java

@@ -162,7 +162,7 @@ public class WxPayServiceImpl implements WxPayService {
                 // 以支付通知回调为例,验签、解密并转换成 Transaction
                 Transaction transaction = parser.parse(requestParam, Transaction.class);
                 // 判断是否已经接收处理过通知
-                if (payLogService.getOne(payLogService.lambdaQuery().eq(PayLog::getOutTradeNo, transaction.getOutTradeNo())) != null) {
+                if (payLogService.lambdaQuery().eq(PayLog::getOutTradeNo, transaction.getOutTradeNo()).one() != null) {
                     return ResponseEntity.status(HttpStatus.OK);
                 }