瀏覽代碼

洗车主板上报事件处理

skyline 1 年之前
父節點
當前提交
907c8c8934
共有 17 個文件被更改,包括 299 次插入24 次删除
  1. 1 1
      car-wash-entity/src/main/java/com/kym/entity/miniapp/WalletDetail.java
  2. 49 1
      car-wash-entity/src/main/java/com/kym/entity/miniapp/WashDevice.java
  3. 10 1
      car-wash-entity/src/main/java/com/kym/entity/miniapp/WashOrder.java
  4. 1 1
      car-wash-mapper/src/main/java/com/kym/mapper/miniapp/WashDeviceMapper.java
  5. 9 1
      car-wash-mapper/src/main/resources/mappers/miniapp/WashDeviceMapper.xml
  6. 0 1
      car-wash-service/src/main/java/com/kym/service/awoara/entity/event/MessageBody.java
  7. 28 0
      car-wash-service/src/main/java/com/kym/service/awoara/entity/event/handle/BootEventHandler.java
  8. 2 0
      car-wash-service/src/main/java/com/kym/service/awoara/entity/event/handle/CardEventHandler.java
  9. 28 0
      car-wash-service/src/main/java/com/kym/service/awoara/entity/event/handle/DeviceStateEventHandler.java
  10. 61 3
      car-wash-service/src/main/java/com/kym/service/awoara/entity/event/handle/OrderCloseEventHandler.java
  11. 30 3
      car-wash-service/src/main/java/com/kym/service/awoara/entity/event/handle/OrderCreateEventHandler.java
  12. 44 2
      car-wash-service/src/main/java/com/kym/service/awoara/entity/event/handle/OrderUpdateEventHandler.java
  13. 4 1
      car-wash-service/src/main/java/com/kym/service/awoara/entity/event/handle/UserLoginEventHandler.java
  14. 23 5
      car-wash-service/src/main/java/com/kym/service/awoara/factory/AwoaraEventHandlerFactory.java
  15. 1 1
      car-wash-service/src/main/java/com/kym/service/miniapp/WashDeviceService.java
  16. 3 3
      car-wash-service/src/main/java/com/kym/service/miniapp/impl/WashDeviceServiceImpl.java
  17. 5 0
      car-wash-service/src/main/java/com/kym/service/miniapp/impl/WashOrderServiceImpl.java

+ 1 - 1
car-wash-entity/src/main/java/com/kym/entity/miniapp/WalletDetail.java

@@ -67,7 +67,7 @@ public class WalletDetail extends BaseEntity implements Serializable {
     private Integer commission;
 
     /**
-     * 交易id type为1是pay_log的id,type为3是charge_order的id
+     * 交易id type为1是pay_log的id,type为3是wash_order的id
      */
     private String transactionId;
 

+ 49 - 1
car-wash-entity/src/main/java/com/kym/entity/miniapp/WashDevice.java

@@ -3,6 +3,7 @@ package com.kym.entity.miniapp;
 import com.baomidou.mybatisplus.annotation.TableName;
 import com.kym.entity.BaseEntity;
 import java.io.Serializable;
+import java.time.LocalDateTime;
 import lombok.Getter;
 import lombok.Setter;
 
@@ -12,7 +13,7 @@ import lombok.Setter;
  * </p>
  *
  * @author skyline
- * @since 2024-09-11
+ * @since 2024-10-09
  */
 @Getter
 @Setter
@@ -21,6 +22,13 @@ public class WashDevice extends BaseEntity {
 
     private static final long serialVersionUID = 1L;
 
+    public static final String STATE_初始化 = "init";
+    public static final String STATE_空闲 = "idle";
+    public static final String STATE_忙碌 = "busy";
+    public static final String STATE_不在营业时间 = "sleep";
+    public static final String STATE_维护 = "maintenance";
+    public static final String STATE_故障 = "fault";
+
     private String stationId;
 
     /**
@@ -32,4 +40,44 @@ public class WashDevice extends BaseEntity {
      * 设备名称
      */
     private String deviceName;
+
+    /**
+     * 功能
+     */
+    private String function;
+
+    /**
+     * 状态:init设备正在初始化,idle设备空闲,busy设备忙碌,sleep不在营业时间,maintenance维护模式,fault设备故障
+     */
+    private String state;
+
+    /**
+     * 故障原因
+     */
+    private String faultReason;
+
+    /**
+     * 设备主状态机的当前状态(状态可能增加或减少,仅供调试参考。)
+     */
+    private String fsmState;
+
+    /**
+     * 本次上电以来的时间戳
+     */
+    private LocalDateTime uptimeMs;
+
+    /**
+     * 是否有水:-1不支持或未开启,0无水,1有水
+     */
+    private Boolean hasWater;
+
+    /**
+     * 是否有泡沫:-1不支持或未开启,0无泡沫,1有泡沫
+     */
+    private Boolean hasFoam;
+
+    /**
+     * 板载温度传感器的温度值
+     */
+    private Integer temperatureChip;
 }

+ 10 - 1
car-wash-entity/src/main/java/com/kym/entity/miniapp/WashOrder.java

@@ -22,6 +22,15 @@ import lombok.experimental.Accessors;
 @Accessors(chain = true)
 public class WashOrder extends BaseEntity {
 
+    public static final int ORDER_STATUS_未知 = -1;
+    public static final int ORDER_STATUS_开机 = 0;
+    public static final int ORDER_STATUS_成功 = 1;
+    public static final int ORDER_STATUS_失败 = 2;
+    public static final int ORDER_STATUS_取消 = 3;
+
+    public static final int PAY_STATUS_未支付 = 0;
+    public static final int PAY_STATUS_已支付 = 1;
+
     private static final long serialVersionUID = 1L;
 
     private Long userId;
@@ -168,7 +177,7 @@ public class WashOrder extends BaseEntity {
      */
     private Integer payStatus;
 
-    private Integer stopReason;
+    private String stopReason;
 
     /**
      * 发票状态:0-待开票 1-已开票 2-已作废(用不上) 3-开票中

+ 1 - 1
car-wash-mapper/src/main/java/com/kym/mapper/miniapp/WashDeviceMapper.java

@@ -9,7 +9,7 @@ import com.kym.mapper.mybatisplus.MyBaseMapper;
  * </p>
  *
  * @author skyline
- * @since 2024-09-11
+ * @since 2024-10-09
  */
 public interface WashDeviceMapper extends MyBaseMapper<WashDevice> {
 

+ 9 - 1
car-wash-mapper/src/main/resources/mappers/miniapp/WashDeviceMapper.xml

@@ -7,11 +7,19 @@
         <result column="station_id" property="stationId" />
         <result column="product_key" property="productKey" />
         <result column="device_name" property="deviceName" />
+        <result column="function" property="function" />
+        <result column="state" property="state" />
+        <result column="fault_reason" property="faultReason" />
+        <result column="fsm_state" property="fsmState" />
+        <result column="uptime_ms" property="uptimeMs" />
+        <result column="has_water" property="hasWater" />
+        <result column="has_foam" property="hasFoam" />
+        <result column="temperature_chip" property="temperatureChip" />
     </resultMap>
 
     <!-- 通用查询结果列 -->
     <sql id="Base_Column_List">
-        station_id, product_key, device_name
+        station_id, product_key, device_name, function, state, fault_reason, fsm_state, uptime_ms, has_water, has_foam, temperature_chip
     </sql>
 
 </mapper>

+ 0 - 1
car-wash-service/src/main/java/com/kym/service/awoara/entity/event/MessageBody.java

@@ -1,6 +1,5 @@
 package com.kym.service.awoara.entity.event;
 
-import com.kym.service.awoara.entity.event.Payload;
 import lombok.Data;
 import lombok.experimental.Accessors;
 

+ 28 - 0
car-wash-service/src/main/java/com/kym/service/awoara/entity/event/handle/BootEventHandler.java

@@ -1,8 +1,13 @@
 package com.kym.service.awoara.entity.event.handle;
 
+import com.kym.entity.miniapp.WashDevice;
+import com.kym.entity.miniapp.WashOrder;
 import com.kym.service.awoara.entity.event.DeviceStateObject;
 import com.kym.service.awoara.entity.event.MessageBody;
+import com.kym.service.miniapp.WashDeviceService;
+import com.kym.service.miniapp.WashOrderService;
 import lombok.extern.slf4j.Slf4j;
+import org.springframework.stereotype.Component;
 
 /**
  * 设备启动事件处理
@@ -10,7 +15,18 @@ import lombok.extern.slf4j.Slf4j;
  * @author skyline
  */
 @Slf4j
+@Component
 public class BootEventHandler implements AwoaraEventHandler<DeviceStateObject> {
+
+    private final WashDeviceService washDeviceService;
+
+    private final WashOrderService washOrderService;
+
+    public BootEventHandler(WashDeviceService washDeviceService, WashOrderService washOrderService) {
+        this.washDeviceService = washDeviceService;
+        this.washOrderService = washOrderService;
+    }
+
     @Override
     public void handle(MessageBody<DeviceStateObject> message) {
         log.info(message.toString());
@@ -19,6 +35,18 @@ public class BootEventHandler implements AwoaraEventHandler<DeviceStateObject> {
         var productKey = "";
         var deviceName = "";
 
+        var device = washDeviceService.lambdaQuery().eq(WashDevice::getProductKey, productKey).eq(WashDevice::getDeviceName, deviceName).one();
+        // 更新设备状态
+        washDeviceService.lambdaUpdate()
+                .set(WashDevice::getState, message.getPayload().getData().getDevice_state())
+                .eq(WashDevice::getId, device.getId()).update();
+
         // 查询设备下的所有未完成的订单,如果有则将这些订单标记成异常结束
+        var orderList = washOrderService.lambdaQuery()
+                .eq(WashOrder::getProductKey, productKey)
+                .eq(WashOrder::getDeviceName, deviceName)
+                .eq(WashOrder::getPayStatus, WashOrder.PAY_STATUS_未支付)
+                .list();
+        // todo 异常订单执行扣费操作
     }
 }

+ 2 - 0
car-wash-service/src/main/java/com/kym/service/awoara/entity/event/handle/CardEventHandler.java

@@ -3,6 +3,7 @@ package com.kym.service.awoara.entity.event.handle;
 import com.kym.service.awoara.entity.event.CardEventObject;
 import com.kym.service.awoara.entity.event.MessageBody;
 import lombok.extern.slf4j.Slf4j;
+import org.springframework.stereotype.Component;
 
 /**
  * ⽤户刷卡事件
@@ -13,6 +14,7 @@ import lombok.extern.slf4j.Slf4j;
  * @author skyline
  */
 @Slf4j
+@Component
 public class CardEventHandler implements AwoaraEventHandler<CardEventObject> {
     @Override
     public void handle(MessageBody<CardEventObject> message) {

+ 28 - 0
car-wash-service/src/main/java/com/kym/service/awoara/entity/event/handle/DeviceStateEventHandler.java

@@ -1,8 +1,11 @@
 package com.kym.service.awoara.entity.event.handle;
 
+import com.kym.entity.miniapp.WashDevice;
 import com.kym.service.awoara.entity.event.DeviceStateObject;
 import com.kym.service.awoara.entity.event.MessageBody;
+import com.kym.service.miniapp.WashDeviceService;
 import lombok.extern.slf4j.Slf4j;
+import org.springframework.stereotype.Component;
 
 /**
  * 设备状态更新事件事件处理
@@ -10,11 +13,36 @@ import lombok.extern.slf4j.Slf4j;
  * @author skyline
  */
 @Slf4j
+@Component
 public class DeviceStateEventHandler implements AwoaraEventHandler<DeviceStateObject> {
 
+    private final WashDeviceService washDeviceService;
+
+    public DeviceStateEventHandler(WashDeviceService washDeviceService) {
+        this.washDeviceService = washDeviceService;
+    }
+
     @Override
     public void handle(MessageBody<DeviceStateObject> message) {
         log.info(message.toString());
         log.info("DeviceStateEventHandler");
+
+        // 获取设备信息 todo 要从topic中获取
+        var productKey = "";
+        var deviceName = "";
+
+        var deviceState = message.getPayload().getData().getDevice_state();
+
+        // 状态更新逻辑
+        washDeviceService.lambdaUpdate()
+                .set(WashDevice::getUptimeMs, deviceState.getState())
+                .set(WashDevice::getState, deviceState.getState())
+                .set(WashDevice::getFsmState, deviceState.getFsm_state())
+                .set(WashDevice::getHasWater, deviceState.getHas_water())
+                .set(WashDevice::getHasFoam, deviceState.getHas_foam())
+                .set(WashDevice::getTemperatureChip, deviceState.getTemperature_chip())
+                .eq(WashDevice::getProductKey, productKey)
+                .eq(WashDevice::getDeviceName, deviceName)
+                .update();
     }
 }

+ 61 - 3
car-wash-service/src/main/java/com/kym/service/awoara/entity/event/handle/OrderCloseEventHandler.java

@@ -1,19 +1,77 @@
 package com.kym.service.awoara.entity.event.handle;
 
+import com.kym.entity.miniapp.Account;
+import com.kym.entity.miniapp.WalletDetail;
+import com.kym.entity.miniapp.WashOrder;
 import com.kym.service.awoara.entity.event.MessageBody;
 import com.kym.service.awoara.entity.event.OrderInfoObject;
+import com.kym.service.miniapp.AccountService;
+import com.kym.service.miniapp.WalletDetailService;
+import com.kym.service.miniapp.WashOrderService;
 import lombok.extern.slf4j.Slf4j;
+import org.springframework.stereotype.Component;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.time.LocalDateTime;
 
 /**
- * 关闭订单事件
+ * 关闭订单事件(订单结算)
  *
  * @author skyline
  */
 @Slf4j
+@Component
 public class OrderCloseEventHandler implements AwoaraEventHandler<OrderInfoObject> {
+    private final WashOrderService washOrderService;
+    private final WalletDetailService walletDetailService;
+    private final AccountService accountService;
+
+    public OrderCloseEventHandler(WashOrderService washOrderService, WalletDetailService walletDetailService, AccountService accountService) {
+        this.washOrderService = washOrderService;
+        this.walletDetailService = walletDetailService;
+        this.accountService = accountService;
+    }
+
+
     @Override
+    @Transactional(rollbackFor = Exception.class)
     public void handle(MessageBody<OrderInfoObject> message) {
-        log.info(message.toString());
-        log.info("OrderCloseEventHandler");
+        log.info("收到订单关闭事件");
+
+        // 订单结算
+        var orderInfo = message.getPayload().getData().getOrder_info();
+        log.info("订单:{},结算信息:{}", orderInfo.getOrder_id(), orderInfo);
+
+        // 订单状态、支付状态
+        var washOrder = washOrderService.lambdaQuery()
+                .eq(WashOrder::getOrderId, orderInfo.getOrder_id())
+                .eq(WashOrder::getOrderIdLocal, orderInfo.getOrder_id_local())
+                .one();
+        washOrder.setAmount(orderInfo.getAmount())
+                .setAmountReceivable(orderInfo.getAmount_receivable())
+                .setAmountReceived(orderInfo.getAmount_received())
+                .setAmountReceived(orderInfo.getAmount_received())
+                .setDiscountMoney(orderInfo.getDiscount_money())
+                .setDetail(orderInfo.getDetail().toString())
+                .setEndTime(LocalDateTime.now())
+                .setOrderStatus(WashOrder.ORDER_STATUS_成功)
+                .setPayStatus(WashOrder.PAY_STATUS_已支付)
+                .setStopReason(orderInfo.getClose_type());
+        washOrderService.updateById(washOrder);
+
+        // 扣款更新余额,新增资金流水 TODO 【存在优惠情况下校验优惠,更新优惠使用情况等】
+        accountService.lambdaUpdate().setSql("balance=balance-{0}", orderInfo.getAmount())
+                .eq(Account::getUserId, washOrder.getUserId()).update();
+
+        var walletDetail = new WalletDetail();
+        walletDetail.setUserId(washOrder.getUserId());
+        walletDetail.setType(WalletDetail.TYPE_消费);
+        walletDetail.setOrderNo(washOrder.getOrderId());
+        walletDetail.setAmount(orderInfo.getAmount());
+        walletDetail.setTransactionId(washOrder.getId().toString());
+        walletDetail.setTransactionTime(LocalDateTime.now());
+        walletDetail.setStatus(WalletDetail.STATUS_已确认);
+        walletDetailService.save(walletDetail);
+
     }
 }

+ 30 - 3
car-wash-service/src/main/java/com/kym/service/awoara/entity/event/handle/OrderCreateEventHandler.java

@@ -1,28 +1,55 @@
 package com.kym.service.awoara.entity.event.handle;
 
+import com.kym.entity.miniapp.WashOrder;
 import com.kym.service.awoara.entity.event.MessageBody;
 import com.kym.service.awoara.entity.event.OrderInfo;
 import com.kym.service.awoara.entity.event.OrderInfoObject;
+import com.kym.service.miniapp.WashOrderService;
 import lombok.extern.slf4j.Slf4j;
+import org.springframework.stereotype.Component;
 
 /**
  * 收到订单事件
+ * 1. 根据设备的 product_key 和 device_name 找到设备信息。
+ * 2. 根据订单号在数据库中找到订单信息。
+ * 3. 检查订单的状态为 已付款(预付款) ,则保存订单信息并将订单标记为 已开机 ;否则记录日志
  *
  * @author skyline
  */
 @Slf4j
+@Component
 public class OrderCreateEventHandler implements AwoaraEventHandler<OrderInfoObject> {
+
+    private final WashOrderService washOrderService;
+
+    public OrderCreateEventHandler(WashOrderService washOrderService) {
+        this.washOrderService = washOrderService;
+    }
+
     @Override
     public void handle(MessageBody<OrderInfoObject> message) {
         log.info(message.toString());
         log.info("DeviceStateEventHandler");
-        // todo 对象在这里做转换
+
         OrderInfo orderInfo = message.getPayload().getData().getOrder_info();
         // 获取设备信息 todo 要从topic中获取
         var productKey = "";
-        var productName = "";
+        var deviceName = "";
+
+        // 根据订单号查询订单,如果存在则更新订单状态为已开机
+        var order = washOrderService.lambdaQuery()
+                .eq(WashOrder::getOrderId, orderInfo.getOrder_id())
+                .eq(WashOrder::getOrderIdLocal, orderInfo.getOrder_id_local())
+                .eq(WashOrder::getProductKey, productKey)
+                .eq(WashOrder::getDeviceName, deviceName)
+                .one();
 
-        // 查询设备下的所有未完成的订单,如果有则将这些订单标记
+        if (order != null) {
+            washOrderService.lambdaUpdate()
+                    .set(WashOrder::getOrderStatus, WashOrder.ORDER_STATUS_开机)
+                    .eq(WashOrder::getId, order.getId())
+                    .update();
+        }
     }
 
 }

+ 44 - 2
car-wash-service/src/main/java/com/kym/service/awoara/entity/event/handle/OrderUpdateEventHandler.java

@@ -1,23 +1,65 @@
 package com.kym.service.awoara.entity.event.handle;
 
+import com.kym.entity.miniapp.WashOrder;
 import com.kym.service.awoara.entity.event.MessageBody;
 import com.kym.service.awoara.entity.event.OrderInfoObject;
+import com.kym.service.miniapp.WashOrderService;
 import lombok.extern.slf4j.Slf4j;
+import org.springframework.stereotype.Component;
 
 /**
  * 订单状态更新事件
  * <p>
  * 1、⽤来让服务器知道订单的当前状态,以下两个条件只要满⾜其中⼀个就上传⼀次。
- * 2、订单的应收⾦额和上次上传的应收⾦额⼤于等于1元则上传⼀次。
- * 3、如果⾦额不变,每个3分钟上传⼀次。
+ * 2、订单的应收⾦额和上次上传的应收⾦额差额⼤于等于1元则上传⼀次。
+ * 3、如果⾦额不变,每隔3分钟上传⼀次。
+ * <p>
+ * 1. 根据设备的 product_key 和 device_name 找到设备信息。
+ * 2. 根据订单号在数据库中找到订单信息。
+ * 3. 检查订单的状态为 已付款 或 已开机 并且消费金额大于等于当前记录的消费金额,则保存订单信息
+ * 并将订单标记为 已更新 ;否则记录日志。
  *
  * @author skyline
  */
 @Slf4j
+@Component
 public class OrderUpdateEventHandler implements AwoaraEventHandler<OrderInfoObject> {
+
+    private final WashOrderService washOrderService;
+
+    public OrderUpdateEventHandler(WashOrderService washOrderService) {
+        this.washOrderService = washOrderService;
+    }
+
     @Override
     public void handle(MessageBody<OrderInfoObject> message) {
         log.info(message.toString());
         log.info("DeviceStateEventHandler");
+
+        // 获取设备信息 todo 要从topic中获取
+        var productKey = "";
+        var deviceName = "";
+
+        var orderInfo = message.getPayload().getData().getOrder_info();
+
+        // 更新订单信息
+        washOrderService.lambdaUpdate()
+                .set(WashOrder::getOpenType, orderInfo.getOpen_type())
+                .set(WashOrder::getCloseType, orderInfo.getClose_type())
+                .set(WashOrder::getMemberDiscount, orderInfo.getMember_discount())
+                .set(WashOrder::getPrepayMoney, orderInfo.getPrepay_money())
+                .set(WashOrder::getAmount, orderInfo.getAmount())
+                .set(WashOrder::getAmountReceivable, orderInfo.getAmount_receivable())
+                .set(WashOrder::getAmountReceived, orderInfo.getAmount_received())
+                .set(WashOrder::getDiscountMoney, orderInfo.getDiscount_money())
+                .set(WashOrder::getOperationRemainTime, orderInfo.getOperation_remain_time())
+                .set(WashOrder::getIdleRemainTime, orderInfo.getIdle_remain_time())
+                .set(WashOrder::getDetail, orderInfo.getDetail().toString())
+                .eq(WashOrder::getProductKey, productKey)
+                .eq(WashOrder::getDeviceName, deviceName)
+                .eq(WashOrder::getOrderId, orderInfo.getOrder_id())
+                .eq(WashOrder::getOrderIdLocal, orderInfo.getOrder_id_local())
+                .update();
+
     }
 }

+ 4 - 1
car-wash-service/src/main/java/com/kym/service/awoara/entity/event/handle/UserLoginEventHandler.java

@@ -3,17 +3,20 @@ package com.kym.service.awoara.entity.event.handle;
 import com.kym.service.awoara.entity.event.MessageBody;
 import com.kym.service.awoara.entity.event.UserLoginObject;
 import lombok.extern.slf4j.Slf4j;
+import org.springframework.stereotype.Component;
 
 /**
- * 用户登录事件
+ * 用户登录事件(在机器上输入手机号+密码登录)
  *
  * @author skyline
  */
 @Slf4j
+@Component
 public class UserLoginEventHandler implements AwoaraEventHandler<UserLoginObject> {
     @Override
     public void handle(MessageBody<UserLoginObject> message) {
         log.info(message.toString());
         log.info("UserLoginEventHandler");
+        // todo 如果机器支持登录,则完善业务逻辑(设备开机)
     }
 }

+ 23 - 5
car-wash-service/src/main/java/com/kym/service/awoara/factory/AwoaraEventHandlerFactory.java

@@ -3,20 +3,38 @@ package com.kym.service.awoara.factory;
 import com.kym.common.exception.BusinessException;
 import com.kym.service.awoara.entity.event.Event;
 import com.kym.service.awoara.entity.event.handle.*;
+import com.kym.service.miniapp.AccountService;
+import com.kym.service.miniapp.WalletDetailService;
+import com.kym.service.miniapp.WashDeviceService;
+import com.kym.service.miniapp.WashOrderService;
+import org.springframework.stereotype.Component;
 
 /**
  * 事件处理器工厂
  *
  * @author skyline
  */
+@Component
 public class AwoaraEventHandlerFactory {
+    private static WashDeviceService washDeviceService;
+    private static WashOrderService washOrderService;
+    private static WalletDetailService walletDetailService;
+    private static AccountService accountService;
+
+    public AwoaraEventHandlerFactory(WashDeviceService washDeviceService,WashOrderService washOrderService, WalletDetailService walletDetailService, AccountService accountService) {
+        AwoaraEventHandlerFactory.washDeviceService = washDeviceService;
+        AwoaraEventHandlerFactory.washOrderService = washOrderService;
+        AwoaraEventHandlerFactory.walletDetailService = walletDetailService;
+        AwoaraEventHandlerFactory.accountService = accountService;
+    }
+
     public static AwoaraEventHandler getEventHandler(String eventName) {
         return switch (Event.valueOf(eventName)) {
-            case boot -> new BootEventHandler();
-            case device_state -> new DeviceStateEventHandler();
-            case order_create -> new OrderCreateEventHandler();
-            case order_update -> new OrderUpdateEventHandler();
-            case order_close -> new OrderCloseEventHandler();
+            case boot -> new BootEventHandler(washDeviceService, washOrderService);
+            case device_state -> new DeviceStateEventHandler(washDeviceService);
+            case order_create -> new OrderCreateEventHandler(washOrderService);
+            case order_update -> new OrderUpdateEventHandler(washOrderService);
+            case order_close -> new OrderCloseEventHandler(washOrderService, walletDetailService, accountService);
             case user_login -> new UserLoginEventHandler();
             case card_event -> new CardEventHandler();
             default -> throw new BusinessException("未知事件类型");

+ 1 - 1
car-wash-service/src/main/java/com/kym/service/miniapp/WashDeviceService.java

@@ -9,7 +9,7 @@ import com.kym.service.mybatisplus.MyBaseService;
  * </p>
  *
  * @author skyline
- * @since 2024-09-11
+ * @since 2024-10-09
  */
 public interface WashDeviceService extends MyBaseService<WashDevice> {
 

+ 3 - 3
car-wash-service/src/main/java/com/kym/service/miniapp/impl/WashDeviceServiceImpl.java

@@ -1,8 +1,8 @@
 package com.kym.service.miniapp.impl;
 
 import com.kym.entity.miniapp.WashDevice;
-import com.kym.mapper.miniapp.WashDeviceMapper;
 import com.kym.service.miniapp.WashDeviceService;
+import com.kym.mapper.miniapp.WashDeviceMapper;
 import com.kym.service.mybatisplus.MyBaseServiceImpl;
 import org.springframework.stereotype.Service;
 
@@ -12,9 +12,9 @@ import org.springframework.stereotype.Service;
  * </p>
  *
  * @author skyline
- * @since 2024-09-11
+ * @since 2024-10-09
  */
 @Service
-public class WashDeviceServiceImpl extends MyBaseServiceImpl<WashDeviceMapper, WashDevice> implements WashDeviceService {
+public class WashDeviceServiceImpl extends MyBaseServiceImpl<WashDeviceMapper, WashDevice> implements WashDeviceService{
 
 }

+ 5 - 0
car-wash-service/src/main/java/com/kym/service/miniapp/impl/WashOrderServiceImpl.java

@@ -34,6 +34,11 @@ public class WashOrderServiceImpl extends MyBaseServiceImpl<WashOrderMapper, Was
         this.accountService = accountService;
     }
 
+    /**
+     * 创建订单(启动洗车机)
+     * @param params
+     * @return
+     */
     @Override
     public WashOrder createOrder(DeviceParams params) {
         var account = accountService.getAccountByUserId(StpUtil.getLoginIdAsLong());