浏览代码

启动充电权益选择

skyline 2 年之前
父节点
当前提交
ce590b4bb9

+ 2 - 0
entity/src/main/java/com/kym/entity/miniapp/OrderRechargeRights.java

@@ -5,6 +5,7 @@ import com.kym.entity.BaseEntity;
 import java.io.Serializable;
 import lombok.Getter;
 import lombok.Setter;
+import lombok.experimental.Accessors;
 
 /**
  * <p>
@@ -17,6 +18,7 @@ import lombok.Setter;
 @Getter
 @Setter
 @TableName("t_order_recharge_rights")
+@Accessors(chain = true)
 public class OrderRechargeRights extends BaseEntity {
 
     private static final long serialVersionUID = 1L;

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

@@ -90,13 +90,14 @@ public class ChargerController {
     }
 
     @ApiLog("启动充电")
-    @GetMapping({"/startCharge/{connectorId}", "/startCharge/{connectorId}"})
+    @GetMapping("/startCharge/{connectorId}")
     R<?> startCharge(@PathVariable("connectorId") String connectorId,
+                     @RequestParam(value = "rechargeRightsId", required = false) Long rechargeRightsId,
                      @RequestParam(value = "isBooking", defaultValue = "false") Boolean isBooking,
                      @RequestParam(value = "startTime", required = false) @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") LocalDateTime startTime,
                      @RequestParam(value = "endTime", required = false) @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") LocalDateTime endTime) {
         var userId = StpUtil.getLoginIdAsLong();
-        return R.success(chargeService.queryStartCharge(userId, connectorId, isBooking, startTime, endTime));
+        return R.success(chargeService.queryStartCharge(userId, connectorId, rechargeRightsId, isBooking, startTime, endTime));
     }
 
     @ApiLog("取消预约充电")

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

@@ -14,7 +14,7 @@ import java.util.Map;
  */
 public interface ChargeService {
 
-    Map<String, String> queryStartCharge(Long userId, String connectorId, Boolean isBooking, LocalDateTime startTime, LocalDateTime endTime);
+    Map<String, String> queryStartCharge(Long userId, String connectorId, Long rechargeRightsId, Boolean isBooking, LocalDateTime startTime, LocalDateTime endTime);
 
     @DS("db-admin")
     void updateEquipmentStatus(String connectorId);

+ 29 - 8
service/src/main/java/com/kym/service/miniapp/impl/ChargeServiceImpl.java

@@ -12,14 +12,13 @@ import com.kym.common.utils.OrderUtils;
 import com.kym.entity.admin.EquipmentInfo;
 import com.kym.entity.enplus.response.EnBusinessPolicy;
 import com.kym.entity.miniapp.ChargeOrder;
+import com.kym.entity.miniapp.OrderRechargeRights;
+import com.kym.entity.miniapp.UserRechargeRights;
 import com.kym.entity.miniapp.delay.DelayChargeOrder;
 import com.kym.service.admin.EquipmentInfoService;
 import com.kym.service.admin.EquipmentRelationService;
 import com.kym.service.enplus.EnPlusService;
-import com.kym.service.miniapp.AccountService;
-import com.kym.service.miniapp.ChargeOrderService;
-import com.kym.service.miniapp.ChargeService;
-import com.kym.service.miniapp.DelayService;
+import com.kym.service.miniapp.*;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.BeanUtils;
@@ -49,6 +48,9 @@ public class ChargeServiceImpl implements ChargeService {
 
     private final ChargeOrderService chargeOrderService;
 
+    private final OrderRechargeRightsService orderRechargeRightsService;
+    private final UserRechargeRightsService userRechargeRightsService;
+
     private final AccountService accountService;
 
     private final EnPlusService enPlusService;
@@ -59,13 +61,15 @@ public class ChargeServiceImpl implements ChargeService {
     private final DelayService<DelayChargeOrder> stopDelayService;
 
     public ChargeServiceImpl(EquipmentRelationService equipmentRelationService, EquipmentInfoService equipmentInfoService,
-                             ChargeOrderService chargeOrderService, AccountService accountService,
+                             ChargeOrderService chargeOrderService, OrderRechargeRightsService orderRechargeRightsService, UserRechargeRightsService userRechargeRightsService, AccountService accountService,
                              EnPlusService enPlusService, EnPlusConfig enPlusConfig,
                              @Qualifier("startDelayServiceImpl") @Lazy DelayService<DelayChargeOrder> startDelayService,
                              @Qualifier("stopDelayServiceImpl") @Lazy DelayService<DelayChargeOrder> stopDelayService) {
         this.equipmentRelationService = equipmentRelationService;
         this.equipmentInfoService = equipmentInfoService;
         this.chargeOrderService = chargeOrderService;
+        this.orderRechargeRightsService = orderRechargeRightsService;
+        this.userRechargeRightsService = userRechargeRightsService;
         this.accountService = accountService;
         this.enPlusService = enPlusService;
         this.enPlusConfig = enPlusConfig;
@@ -101,7 +105,7 @@ public class ChargeServiceImpl implements ChargeService {
                 .eq(ChargeOrder::getConnectorId, connectorId)
                 .eq(ChargeOrder::getChargeStatus, ChargeOrder.CHARGE_STATUS_预约中)
                 .update();
-        return queryStartCharge(userId, connectorId, false, null, null);
+        return queryStartCharge(userId, connectorId, null, false, null, null);
     }
 
     /**
@@ -146,7 +150,7 @@ public class ChargeServiceImpl implements ChargeService {
             stopDelayService.removeFromOrderDelayQueue(chargeOrder.getStartChargeSeq());
             // 修改订单状态为取消
             chargeOrderService.lambdaUpdate().set(ChargeOrder::getOrderStatus, ChargeOrder.ORDER_STATUS_取消)
-                    .set(ChargeOrder::getChargeStatus,ChargeOrder.CHARGE_STATUS_已结束)
+                    .set(ChargeOrder::getChargeStatus, ChargeOrder.CHARGE_STATUS_已结束)
                     .set(ChargeOrder::getStopReason, ChargeOrder.STOP_REASON_用户手动停止)
                     .eq(ChargeOrder::getUserId, userId).eq(ChargeOrder::getIsBooking, ChargeOrder.IS_BOOKING_是).update();
         } else {
@@ -159,6 +163,7 @@ public class ChargeServiceImpl implements ChargeService {
      * 启动充电
      *
      * @param connectorId
+     * @param rechargeRightsId
      * @param isBooking
      * @param startTime
      * @param endTime
@@ -166,7 +171,7 @@ public class ChargeServiceImpl implements ChargeService {
      */
     @Override
     @DSTransactional(rollbackFor = Exception.class)
-    public Map<String, String> queryStartCharge(Long userId, String connectorId, Boolean isBooking, LocalDateTime startTime, LocalDateTime endTime) {
+    public Map<String, String> queryStartCharge(Long userId, String connectorId, Long rechargeRightsId, Boolean isBooking, LocalDateTime startTime, LocalDateTime endTime) {
         if (isBooking) {
             // 预约时间不能超过未来24H
             if (TimeUnit.SECONDS.convert(Duration.between(LocalDateTime.now(), startTime)) > 3600 * 24) {
@@ -221,6 +226,22 @@ public class ChargeServiceImpl implements ChargeService {
             order.setConnectorId(connectorId);
             order.setOrderStatus(ChargeOrder.ORDER_STATUS_未知);
             chargeOrderService.save(order);
+
+            // 订单充值权益
+            if (!CommUtil.isEmptyOrNull(rechargeRightsId)) {
+                var userRechargeRights = userRechargeRightsService.lambdaQuery().eq(UserRechargeRights::getUserId, userId).eq(UserRechargeRights::getRightsId, rechargeRightsId).one();
+                if (userRechargeRights != null) {
+                    var orderRechargeRights = new OrderRechargeRights()
+                            .setUserId(userId)
+                            .setStartChargeSeq(startChargeSeq)
+                            .setActivityId(userRechargeRights.getActivityId())
+                            .setRightsId(rechargeRightsId)
+                            .setDiscount(userRechargeRights.getDiscount());
+                    orderRechargeRightsService.save(orderRechargeRights);
+                }
+            }
+
+
         }
 
         // 请求设备认证

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

@@ -79,7 +79,7 @@ public class StartDelayServiceImpl implements DelayService<DelayChargeOrder> {
                     // 启动充电
                     var order = delayedItem.data;
                     threadLocal.set(order.getStartChargeSeq());
-                    chargeService.queryStartCharge(order.getUserId(), order.getConnectorId(), false, null, null);
+                    chargeService.queryStartCharge(order.getUserId(), order.getConnectorId(), null, false, null, null);
                     log.info("预约充电启动成功:用户:{},订单号:{},预约启动时间:{}", order.getUserId(), order.getStartChargeSeq(), order.getStartTime());
                     // 线程休眠100ms
                     Thread.sleep(100);