瀏覽代碼

1、资金流水增加变化前后余额相关字段
2、启动设备
3、设备编号关联

skyline 1 年之前
父節點
當前提交
629d0852a4
共有 19 個文件被更改,包括 295 次插入42 次删除
  1. 8 0
      car-wash-entity/src/main/java/com/kym/entity/common/RedisKeys.java
  2. 53 0
      car-wash-entity/src/main/java/com/kym/entity/miniapp/DeviceRelation.java
  3. 15 0
      car-wash-entity/src/main/java/com/kym/entity/miniapp/WalletDetail.java
  4. 1 1
      car-wash-entity/src/main/java/com/kym/entity/miniapp/WashDevice.java
  5. 12 0
      car-wash-entity/src/main/java/com/kym/entity/miniapp/queryParams/DeviceParams.java
  6. 3 2
      car-wash-entity/src/main/java/com/kym/entity/miniapp/queryParams/WashOrderParams.java
  7. 16 0
      car-wash-mapper/src/main/java/com/kym/mapper/miniapp/DeviceRelationMapper.java
  8. 20 0
      car-wash-mapper/src/main/resources/mappers/miniapp/DeviceRelationMapper.xml
  9. 2 2
      car-wash-mapper/src/main/resources/mappers/miniapp/WashDeviceMapper.xml
  10. 18 0
      car-wash-miniapp/src/main/java/com/kym/miniapp/controller/DeviceRelationController.java
  11. 29 3
      car-wash-miniapp/src/main/java/com/kym/miniapp/controller/WashDeviceController.java
  12. 2 27
      car-wash-miniapp/src/main/java/com/kym/miniapp/controller/WashOrderController.java
  13. 2 2
      car-wash-service/src/main/java/com/kym/service/awoara/AwoaraServiceImpl.java
  14. 27 1
      car-wash-service/src/main/java/com/kym/service/cache/KymCache.java
  15. 16 0
      car-wash-service/src/main/java/com/kym/service/miniapp/DeviceRelationService.java
  16. 4 0
      car-wash-service/src/main/java/com/kym/service/miniapp/WashDeviceService.java
  17. 32 0
      car-wash-service/src/main/java/com/kym/service/miniapp/impl/DeviceRelationServiceImpl.java
  18. 34 2
      car-wash-service/src/main/java/com/kym/service/miniapp/impl/WashDeviceServiceImpl.java
  19. 1 2
      car-wash-service/src/main/java/com/kym/service/miniapp/impl/WashOrderServiceImpl.java

+ 8 - 0
car-wash-entity/src/main/java/com/kym/entity/common/RedisKeys.java

@@ -18,4 +18,12 @@ public interface RedisKeys {
     String ADMIN_USER_STATION_IDS = "ADMIN_USER_STATION_IDS:";
     String COUPON_ID_TO_USERS = "COUPON_ID_TO_USER_ID:";
     String CHARGE_ORDER_EQUIP_CHARGE_STATUS = "CHARGE_ORDER_EQUIP_CHARGE_STATUS:";
+
+    // =======================================洗车======================================
+
+    String WASH_SHORT_ID_TO_PRODUCT_KEY_AND_DEVICE_NAME = "WASH_SHORT_ID_TO_PRODUCT_KEY_AND_DEVICE_NAME:";
+
+    // =======================================洗车======================================
+
+
 }

+ 53 - 0
car-wash-entity/src/main/java/com/kym/entity/miniapp/DeviceRelation.java

@@ -0,0 +1,53 @@
+package com.kym.entity.miniapp;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.kym.entity.BaseEntity;
+import java.io.Serializable;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * <p>
+ * 
+ * </p>
+ *
+ * @author skyline
+ * @since 2024-11-11
+ */
+@Getter
+@Setter
+@TableName("t_device_relation")
+public class DeviceRelation extends BaseEntity {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 站点id
+     */
+    private String stationId;
+
+    /**
+     * 站点名称
+     */
+    private String stationName;
+
+    /**
+     * 二维码短编号
+     */
+    private String shortId;
+
+    /**
+     * 产品key
+     */
+    private String productKey;
+
+    /**
+     * 设备名称
+     */
+    private String deviceName;
+
+    /**
+     * 车位编号
+     */
+    private String parkingNo;
+}

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

@@ -61,6 +61,11 @@ public class WalletDetail extends BaseEntity implements Serializable {
      */
     private Integer amount;
 
+    /**
+     * 赠款金额
+     */
+    private Integer grantsAmount;
+
     /**
      * 手续费
      */
@@ -76,6 +81,16 @@ public class WalletDetail extends BaseEntity implements Serializable {
      */
     private Integer afterBalance;
 
+    /**
+     * 赠款余额变化前
+     */
+    private Integer beforeGrantsBalance;
+
+    /**
+     * 赠款余额变化后
+     */
+    private Integer afterGrantsBalance;
+
     /**
      * 交易id type为1是pay_log的id,type为3是wash_order的id
      */

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

@@ -44,7 +44,7 @@ public class WashDevice extends BaseEntity {
     /**
      * 功能
      */
-    private String function;
+    private String functions;
 
     /**
      * 状态:init设备正在初始化,idle设备空闲,busy设备忙碌,sleep不在营业时间,maintenance维护模式,fault设备故障

+ 12 - 0
car-wash-entity/src/main/java/com/kym/entity/miniapp/queryParams/DeviceParams.java

@@ -1,10 +1,22 @@
 package com.kym.entity.miniapp.queryParams;
 
 import com.kym.entity.common.PageParams;
+import lombok.AllArgsConstructor;
 import lombok.Data;
 
 @Data
+@AllArgsConstructor
 public class DeviceParams extends PageParams {
+
+    private String shortId;
+    private String stationId;
     private String productKey;
     private String deviceName;
+
+    public DeviceParams(String shortId, String productKey, String deviceName) {
+        this.shortId = shortId;
+        this.stationId = shortId.substring(0, 3);
+        this.productKey = productKey;
+        this.deviceName = deviceName;
+    }
 }

+ 3 - 2
car-wash-entity/src/main/java/com/kym/entity/miniapp/queryParams/WashOrderParams.java

@@ -1,6 +1,5 @@
 package com.kym.entity.miniapp.queryParams;
 
-import com.kym.entity.common.PageParams;
 import lombok.Data;
 
 /**
@@ -9,6 +8,8 @@ import lombok.Data;
  * @date 2023-11-06 11:59
  */
 @Data
-public class WashOrderParams extends DeviceParams {
+public class WashOrderParams{
     private String orderId;
+    private String stationId;
+    private String shortId;
 }

+ 16 - 0
car-wash-mapper/src/main/java/com/kym/mapper/miniapp/DeviceRelationMapper.java

@@ -0,0 +1,16 @@
+package com.kym.mapper.miniapp;
+
+import com.kym.entity.miniapp.DeviceRelation;
+import com.kym.mapper.mybatisplus.MyBaseMapper;
+
+/**
+ * <p>
+ *  Mapper 接口
+ * </p>
+ *
+ * @author skyline
+ * @since 2024-11-11
+ */
+public interface DeviceRelationMapper extends MyBaseMapper<DeviceRelation> {
+
+}

+ 20 - 0
car-wash-mapper/src/main/resources/mappers/miniapp/DeviceRelationMapper.xml

@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.kym.mapper.miniapp.DeviceRelationMapper">
+
+    <!-- 通用查询映射结果 -->
+    <resultMap id="BaseResultMap" type="com.kym.entity.miniapp.DeviceRelation">
+        <result column="station_id" property="stationId" />
+        <result column="station_name" property="stationName" />
+        <result column="short_id" property="shortId" />
+        <result column="product_key" property="productKey" />
+        <result column="device_name" property="deviceName" />
+        <result column="parking_no" property="parkingNo" />
+    </resultMap>
+
+    <!-- 通用查询结果列 -->
+    <sql id="Base_Column_List">
+        station_id, station_name, short_id, product_key, device_name, parking_no
+    </sql>
+
+</mapper>

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

@@ -7,7 +7,7 @@
         <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="functions" property="functions" />
         <result column="state" property="state" />
         <result column="fault_reason" property="faultReason" />
         <result column="fsm_state" property="fsmState" />
@@ -19,7 +19,7 @@
 
     <!-- 通用查询结果列 -->
     <sql id="Base_Column_List">
-        station_id, product_key, device_name, function, state, fault_reason, fsm_state, uptime_ms, has_water, has_foam, temperature_chip
+        station_id, product_key, device_name, functions, state, fault_reason, fsm_state, uptime_ms, has_water, has_foam, temperature_chip
     </sql>
 
 </mapper>

+ 18 - 0
car-wash-miniapp/src/main/java/com/kym/miniapp/controller/DeviceRelationController.java

@@ -0,0 +1,18 @@
+package com.kym.miniapp.controller;
+
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ * <p>
+ *  前端控制器
+ * </p>
+ *
+ * @author skyline
+ * @since 2024-11-11
+ */
+@RestController
+@RequestMapping("/device-relation")
+public class DeviceRelationController {
+
+}

+ 29 - 3
car-wash-miniapp/src/main/java/com/kym/miniapp/controller/WashDeviceController.java

@@ -1,7 +1,9 @@
 package com.kym.miniapp.controller;
 
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
+import com.kym.common.R;
+import com.kym.common.controller.IController;
+import com.kym.service.miniapp.WashDeviceService;
+import org.springframework.web.bind.annotation.*;
 
 /**
  * <p>
@@ -13,6 +15,30 @@ import org.springframework.web.bind.annotation.RestController;
  */
 @RestController
 @RequestMapping("/wash-device")
-public class WashDeviceController {
+public class WashDeviceController extends IController {
+
+    private final WashDeviceService washDeviceService;
+
+    public WashDeviceController(WashDeviceService washDeviceService) {
+        this.washDeviceService = washDeviceService;
+    }
+
+
+    /**
+     * 根据短编号查询设备信息
+     *
+     * @param shortId
+     * @return
+     */
+    @GetMapping(value = "/queryDevice/{shortId}")
+    R<?> queryDevice(@PathVariable("shortId") String shortId) {
+        return resp(() -> washDeviceService.getDevice(shortId));
+    }
+
+    @GetMapping(value = "/startDevice/{shortId}")
+    R<?> startDevice(@PathVariable("shortId") String shortId) {
+        return resp(() -> washDeviceService.startDevice(shortId));
+    }
+
 
 }

+ 2 - 27
car-wash-miniapp/src/main/java/com/kym/miniapp/controller/WashOrderController.java

@@ -1,11 +1,8 @@
 package com.kym.miniapp.controller;
 
-import com.kym.common.R;
 import com.kym.common.controller.IController;
-import com.kym.entity.miniapp.queryParams.DeviceParams;
-import com.kym.entity.miniapp.queryParams.WashOrderParams;
-import com.kym.service.miniapp.WashOrderService;
-import org.springframework.web.bind.annotation.*;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
 
 /**
  * <p>
@@ -19,26 +16,4 @@ import org.springframework.web.bind.annotation.*;
 @RequestMapping("/wash-order")
 public class WashOrderController extends IController {
 
-    private final WashOrderService washOrderService;
-
-    public WashOrderController(WashOrderService washOrderService) {
-        this.washOrderService = washOrderService;
-    }
-
-
-    /**
-     * 创建订单(启动洗车机)
-     *
-     * @param params
-     * @return
-     */
-    @PostMapping(value = "/createOrder")
-    R<?> createOrder(@RequestBody DeviceParams params) {
-        return resp(() -> washOrderService.createOrder(params));
-    }
-
-    @GetMapping(value = "/createOrder")
-    R<?> queryOrder(@RequestBody WashOrderParams params) {
-        return resp(() -> washOrderService.queryOrder(params));
-    }
 }

+ 2 - 2
car-wash-service/src/main/java/com/kym/service/awoara/AwoaraServiceImpl.java

@@ -162,8 +162,8 @@ public class AwoaraServiceImpl implements AwoaraService {
                     "version": "2.0",
                     "method": "create_order",
                     "params": {
-                        "order_id": %s,
-                        "member_name": %s,
+                        "order_id": "%s",
+                        "member_name": "%s",
                         "member_balance": %d,
                         "member_discount": %d,
                         "prepay_money": %d

+ 27 - 1
car-wash-service/src/main/java/com/kym/service/cache/KymCache.java

@@ -1,6 +1,7 @@
 package com.kym.service.cache;
 
 import cn.hutool.extra.spring.SpringUtil;
+import com.kym.common.exception.BusinessException;
 import com.kym.entity.admin.ConnectorInfo;
 import com.kym.entity.admin.EquipmentRelation;
 import com.kym.entity.admin.Station;
@@ -166,6 +167,31 @@ public enum KymCache {
         };
     }
 
+
+    /**
+     * 缓存短编号和设备信息
+     *
+     * @param map
+     */
+    public void putWashShortId2ProductKeyAndDeviceName(Map<String, String> map) {
+        map.forEach((k, v) -> KymCacheInjector.redisTemplate.opsForValue().set(RedisKeys.WASH_SHORT_ID_TO_PRODUCT_KEY_AND_DEVICE_NAME + k, v));
+    }
+
+    /**
+     * 通过短编号获取产品密钥和设备名称
+     *
+     * @param shortId
+     * @return
+     */
+    public String[] getProductKeyAndDeviceNameByWashShortId(String shortId) {
+        var res = Objects.requireNonNull(KymCacheInjector.redisTemplate.opsForValue().get(RedisKeys.WASH_SHORT_ID_TO_PRODUCT_KEY_AND_DEVICE_NAME + shortId)).split(",");
+        if (res.length != 2) {
+            throw new BusinessException("设备信息异常");
+        }
+        return res;
+    }
+
+
     @Component
     public static class KymCacheInjector implements ApplicationListener<ApplicationStartedEvent> {
 
@@ -204,4 +230,4 @@ public enum KymCache {
             KymCache.INSTANCE.putConnectorId2Status(connectorId2Status);
         }
     }
-}
+}

+ 16 - 0
car-wash-service/src/main/java/com/kym/service/miniapp/DeviceRelationService.java

@@ -0,0 +1,16 @@
+package com.kym.service.miniapp;
+
+import com.kym.entity.miniapp.DeviceRelation;
+import com.kym.service.mybatisplus.MyBaseService;
+
+/**
+ * <p>
+ *  服务类
+ * </p>
+ *
+ * @author skyline
+ * @since 2024-11-11
+ */
+public interface DeviceRelationService extends MyBaseService<DeviceRelation> {
+
+}

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

@@ -1,6 +1,7 @@
 package com.kym.service.miniapp;
 
 import com.kym.entity.miniapp.WashDevice;
+import com.kym.entity.miniapp.WashOrder;
 import com.kym.service.mybatisplus.MyBaseService;
 
 /**
@@ -13,4 +14,7 @@ import com.kym.service.mybatisplus.MyBaseService;
  */
 public interface WashDeviceService extends MyBaseService<WashDevice> {
 
+    WashDevice getDevice(String shortId);
+
+    WashOrder startDevice(String shortId);
 }

+ 32 - 0
car-wash-service/src/main/java/com/kym/service/miniapp/impl/DeviceRelationServiceImpl.java

@@ -0,0 +1,32 @@
+package com.kym.service.miniapp.impl;
+
+import com.kym.entity.miniapp.DeviceRelation;
+import com.kym.mapper.miniapp.DeviceRelationMapper;
+import com.kym.service.cache.KymCache;
+import com.kym.service.miniapp.DeviceRelationService;
+import com.kym.service.mybatisplus.MyBaseServiceImpl;
+import jakarta.annotation.PostConstruct;
+import org.springframework.stereotype.Service;
+
+import java.util.Map;
+
+/**
+ * <p>
+ * 服务实现类
+ * </p>
+ *
+ * @author skyline
+ * @since 2024-11-11
+ */
+@Service
+public class DeviceRelationServiceImpl extends MyBaseServiceImpl<DeviceRelationMapper, DeviceRelation> implements DeviceRelationService {
+
+    @PostConstruct
+    private void init() {
+        list().forEach(item -> {
+            // 初始化短编号和设备信息的关联
+            KymCache.INSTANCE.putWashShortId2ProductKeyAndDeviceName(Map.of(item.getShortId(), item.getProductKey() + "," + item.getDeviceName()));
+        });
+    }
+
+}

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

@@ -1,8 +1,12 @@
 package com.kym.service.miniapp.impl;
 
 import com.kym.entity.miniapp.WashDevice;
-import com.kym.service.miniapp.WashDeviceService;
+import com.kym.entity.miniapp.WashOrder;
+import com.kym.entity.miniapp.queryParams.DeviceParams;
 import com.kym.mapper.miniapp.WashDeviceMapper;
+import com.kym.service.cache.KymCache;
+import com.kym.service.miniapp.WashDeviceService;
+import com.kym.service.miniapp.WashOrderService;
 import com.kym.service.mybatisplus.MyBaseServiceImpl;
 import org.springframework.stereotype.Service;
 
@@ -15,6 +19,34 @@ import org.springframework.stereotype.Service;
  * @since 2024-10-09
  */
 @Service
-public class WashDeviceServiceImpl extends MyBaseServiceImpl<WashDeviceMapper, WashDevice> implements WashDeviceService{
+public class WashDeviceServiceImpl extends MyBaseServiceImpl<WashDeviceMapper, WashDevice> implements WashDeviceService {
+
+    private WashOrderService washOrderService;
+
+    public WashDeviceServiceImpl(WashOrderService washOrderService) {
+        this.washOrderService = washOrderService;
+    }
+
+
+    /**
+     * 根据设备短id获取设备信息
+     *
+     * @param shortId
+     * @return
+     */
+    @Override
+    public WashDevice getDevice(String shortId) {
+        var productKeyAndDeviceName = KymCache.INSTANCE.getProductKeyAndDeviceNameByWashShortId(shortId);
+        return lambdaQuery()
+                .eq(WashDevice::getProductKey, productKeyAndDeviceName[0])
+                .eq(WashDevice::getDeviceName, productKeyAndDeviceName[1])
+                .one();
+    }
+
 
+    @Override
+    public WashOrder startDevice(String shortId) {
+        var productKeyAndDeviceName = KymCache.INSTANCE.getProductKeyAndDeviceNameByWashShortId(shortId);
+        return washOrderService.createOrder(new DeviceParams(shortId, productKeyAndDeviceName[0], productKeyAndDeviceName[1]));
+    }
 }

+ 1 - 2
car-wash-service/src/main/java/com/kym/service/miniapp/impl/WashOrderServiceImpl.java

@@ -7,6 +7,7 @@ import com.kym.entity.miniapp.queryParams.DeviceParams;
 import com.kym.entity.miniapp.queryParams.WashOrderParams;
 import com.kym.mapper.miniapp.WashOrderMapper;
 import com.kym.service.awoara.AwoaraService;
+import com.kym.service.cache.KymCache;
 import com.kym.service.miniapp.AccountService;
 import com.kym.service.miniapp.WashOrderService;
 import com.kym.service.mybatisplus.MyBaseServiceImpl;
@@ -74,8 +75,6 @@ public class WashOrderServiceImpl extends MyBaseServiceImpl<WashOrderMapper, Was
         // 非实时数据
         return lambdaQuery()
                 .eq(WashOrder::getOrderId, params.getOrderId())
-                .eq(WashOrder::getProductKey, params.getProductKey())
-                .eq(WashOrder::getDeviceName, params.getDeviceName())
                 .one();
     }
 }