Эх сурвалжийг харах

httpserver端口更新,接口更新

skyline 1 жил өмнө
parent
commit
5c44b92611
18 өөрчлөгдсөн 257 нэмэгдсэн , 33 устгасан
  1. 1 1
      car-wash-admin/src/main/resources/application.yml
  2. 10 0
      car-wash-entity/src/main/java/com/kym/entity/miniapp/Account.java
  3. 38 0
      car-wash-entity/src/main/java/com/kym/entity/miniapp/RechargeConfig.java
  4. 7 9
      car-wash-entity/src/main/java/com/kym/entity/miniapp/vo/UserVo.java
  5. 54 0
      car-wash-entity/src/main/java/com/kym/entity/miniapp/vo/WashDeviceVo.java
  6. 16 0
      car-wash-mapper/src/main/java/com/kym/mapper/miniapp/RechargeConfigMapper.java
  7. 2 0
      car-wash-mapper/src/main/java/com/kym/mapper/miniapp/UserMapper.java
  8. 17 0
      car-wash-mapper/src/main/resources/mappers/miniapp/RechargeConfigMapper.xml
  9. 22 2
      car-wash-miniapp/src/main/java/com/kym/miniapp/controller/CommonController.java
  10. 2 2
      car-wash-miniapp/src/main/resources/application.yml
  11. 1 1
      car-wash-service/src/main/java/com/kym/service/awoara/entity/event/Event.java
  12. 4 3
      car-wash-service/src/main/java/com/kym/service/awoara/entity/event/handle/BootEventHandler.java
  13. 15 10
      car-wash-service/src/main/java/com/kym/service/awoara/factory/AwoaraEventHandlerFactory.java
  14. 11 2
      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/RechargeConfigService.java
  16. 2 1
      car-wash-service/src/main/java/com/kym/service/miniapp/WashDeviceService.java
  17. 20 0
      car-wash-service/src/main/java/com/kym/service/miniapp/impl/RechargeConfigServiceImpl.java
  18. 19 2
      car-wash-service/src/main/java/com/kym/service/miniapp/impl/WashDeviceServiceImpl.java

+ 1 - 1
car-wash-admin/src/main/resources/application.yml

@@ -8,7 +8,7 @@ spring:
   lifecycle:
     timeout-per-shutdown-phase: 20s
 server:
-  port: 8080
+  port: 9090
   servlet:
     context-path: /admin
   shutdown: graceful

+ 10 - 0
car-wash-entity/src/main/java/com/kym/entity/miniapp/Account.java

@@ -35,6 +35,16 @@ public class Account extends BaseEntity implements Serializable {
      */
     private Integer balance;
 
+    /**
+     * 充值余额
+     */
+    private Integer rechargeBalance;
+
+    /**
+     * 赠款余额
+     */
+    private Integer grantsBalance;
+
     /**
      * 冻结金额
      */

+ 38 - 0
car-wash-entity/src/main/java/com/kym/entity/miniapp/RechargeConfig.java

@@ -0,0 +1,38 @@
+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-15
+ */
+@Getter
+@Setter
+@TableName("t_recharge_config")
+public class RechargeConfig extends BaseEntity {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 充值金额(分)
+     */
+    private Integer rechargeAmount;
+
+    /**
+     * 赠款金额(分)
+     */
+    private Integer grantsAmount;
+
+    /**
+     * 文字标签(用于悬浮在充值金额旁)
+     */
+    private String label;
+}

+ 7 - 9
car-wash-entity/src/main/java/com/kym/entity/miniapp/vo/UserVo.java

@@ -1,18 +1,18 @@
 package com.kym.entity.miniapp.vo;
 
 import com.fasterxml.jackson.annotation.JsonFormat;
-import com.kym.entity.admin.RechargeRights;
-import com.kym.entity.admin.vo.ActivityVo;
-import com.kym.entity.miniapp.UserCoupon;
-import com.kym.entity.miniapp.UserRechargeRights;
 import lombok.Data;
 import lombok.experimental.Accessors;
 
 import java.io.Serializable;
 import java.time.LocalDateTime;
-import java.util.List;
 
 
+/**
+ * 用户信息
+ *
+ * @author skyline
+ */
 @Data
 @Accessors(chain = true)
 public class UserVo implements Serializable {
@@ -28,12 +28,10 @@ public class UserVo implements Serializable {
     @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
     public LocalDateTime lastLoginTime;
     public Integer balance;
+    public Integer rechargeBalance;
+    public Integer grantsBalance;
     public Integer discountAmount;
     public Integer refundableAmount;
     public String defaultPlateNo;
     public String vin;
-    public List<ActivityVo> activityList;
-    public List<UserRechargeRights> userRechargeRightsList;
-    public List<UserCoupon> userCouponList;
-
 }

+ 54 - 0
car-wash-entity/src/main/java/com/kym/entity/miniapp/vo/WashDeviceVo.java

@@ -0,0 +1,54 @@
+package com.kym.entity.miniapp.vo;
+
+import com.kym.entity.BaseEntity;
+import lombok.Data;
+
+import java.time.LocalDateTime;
+
+/**
+ * 洗车设备
+ *
+ * @author skyline
+ * @since 2024-10-09
+ */
+@Data
+public class WashDeviceVo extends BaseEntity {
+
+    private static final long serialVersionUID = 1L;
+
+
+    private String stationId;
+
+    private String shortId;
+
+    /**
+     * 产品key
+     */
+    private String productKey;
+
+    /**
+     * 设备名称
+     */
+    private String deviceName;
+
+    /**
+     * 功能
+     */
+    private String functions;
+
+    /**
+     * 状态:init设备正在初始化,idle设备空闲,busy设备忙碌,sleep不在营业时间,maintenance维护模式,fault设备故障
+     */
+    private String state;
+
+    /**
+     * 故障原因
+     */
+    private String faultReason;
+
+    /**
+     * 设备主状态机的当前状态(状态可能增加或减少,仅供调试参考。)
+     */
+    private String fsmState;
+
+}

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

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

+ 2 - 0
car-wash-mapper/src/main/java/com/kym/mapper/miniapp/UserMapper.java

@@ -30,6 +30,8 @@ public interface UserMapper extends MPJBaseMapper<User> {
             "  u.mobile_phone,\n" +
             "  u.last_login_time,\n" +
             "  acc.balance,\n" +
+            "  acc.recharge_balance,\n" +
+            "  acc.grants_balance,\n" +
             "  acc.discount_amount,\n" +
             "  (acc.balance - acc.discount_amount) refundable_amount,\n" +
             "  u.status \n" +

+ 17 - 0
car-wash-mapper/src/main/resources/mappers/miniapp/RechargeConfigMapper.xml

@@ -0,0 +1,17 @@
+<?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.RechargeConfigMapper">
+
+    <!-- 通用查询映射结果 -->
+    <resultMap id="BaseResultMap" type="com.kym.entity.miniapp.RechargeConfig">
+        <result column="recharge_amount" property="rechargeAmount" />
+        <result column="grants_amount" property="grantsAmount" />
+        <result column="label" property="label" />
+    </resultMap>
+
+    <!-- 通用查询结果列 -->
+    <sql id="Base_Column_List">
+        recharge_amount, grants_amount, label
+    </sql>
+
+</mapper>

+ 22 - 2
car-wash-miniapp/src/main/java/com/kym/miniapp/controller/CommonController.java

@@ -2,6 +2,7 @@ package com.kym.miniapp.controller;
 
 import com.kym.common.R;
 import com.kym.service.admin.ContactService;
+import com.kym.service.miniapp.RechargeConfigService;
 import org.springframework.web.bind.annotation.GetMapping;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RestController;
@@ -16,13 +17,32 @@ import org.springframework.web.bind.annotation.RestController;
 public class CommonController {
 
     private final ContactService contactService;
+    private final RechargeConfigService rechargeConfigService;
 
-    public CommonController(ContactService contactService) {
+    public CommonController(ContactService contactService, RechargeConfigService rechargeConfigService) {
         this.contactService = contactService;
+        this.rechargeConfigService = rechargeConfigService;
     }
 
+
+    /**
+     * 联系我们信息
+     *
+     * @return
+     */
     @GetMapping("/contact")
-    R contact() {
+    R<?> contact() {
         return R.success(contactService.list().stream().findFirst());
     }
+
+
+    /**
+     * 充值金额配置项
+     *
+     * @return
+     */
+    @GetMapping("/rechargeConfig")
+    R<?> rechargeConfig() {
+        return R.success(rechargeConfigService.list().stream().findFirst());
+    }
 }

+ 2 - 2
car-wash-miniapp/src/main/resources/application.yml

@@ -16,7 +16,7 @@ mybatis-plus:
 
 
 server:
-  port: 8088
+  port: 9099
   servlet:
     context-path: /api
 # PageHelper
@@ -58,7 +58,7 @@ wechat:
     keyPath: cert/apiclient_key.pem
 
   miniapp:
-    appid: wxe466e6b630cc47ae 
+    appid: wxe466e6b630cc47ae
     secret: 5a974661ea83c1cc7065a1a1de72341c
     # 以下需要先开通消息推送
     token: #微信小程序消息服务器配置的token

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

@@ -14,7 +14,7 @@ import java.util.Objects;
 
 @Getter
 public enum Event {
-    boot("boot", DeviceState.class), // 设备启动事件,设备上电启动
+    boot("boot", DeviceStateObject.class), // 设备启动事件,设备上电启动
     device_state("device_state", DeviceStateObject.class),  // 设备状态更新事件
     order_create("order_create", OrderInfoObject.class),  // 收到订单时上传,包含订单信息
     order_update("order_update", OrderInfoObject.class),  // 订单状态更新事件

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

@@ -32,13 +32,14 @@ public class BootEventHandler implements AwoaraEventHandler<DeviceStateObject> {
         log.info(message.toString());
         log.info("DeviceStateEventHandler");
         // 获取设备信息 todo 要从topic中获取
-        var productKey = "";
-        var deviceName = "";
+        var topic = message.getTopic().split("/");
+        var productKey = topic[1];
+        var deviceName = topic[2];
 
         var device = washDeviceService.lambdaQuery().eq(WashDevice::getProductKey, productKey).eq(WashDevice::getDeviceName, deviceName).one();
         // 更新设备状态
         washDeviceService.lambdaUpdate()
-                .set(WashDevice::getState, message.getPayload().getData().getDevice_state())
+                .set(WashDevice::getState, message.getPayload().getData().getDevice_state().getState())
                 .eq(WashDevice::getId, device.getId()).update();
 
         // 查询设备下的所有未完成的订单,如果有则将这些订单标记成异常结束

+ 15 - 10
car-wash-service/src/main/java/com/kym/service/awoara/factory/AwoaraEventHandlerFactory.java

@@ -1,6 +1,7 @@
 package com.kym.service.awoara.factory;
 
 import com.kym.common.exception.BusinessException;
+import com.kym.service.awoara.entity.event.DeviceStateObject;
 import com.kym.service.awoara.entity.event.Event;
 import com.kym.service.awoara.entity.event.handle.*;
 import com.kym.service.miniapp.AccountService;
@@ -29,15 +30,19 @@ public class AwoaraEventHandlerFactory {
     }
 
     public static AwoaraEventHandler getEventHandler(String eventName) {
-        return switch (Event.valueOf(eventName)) {
-            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("未知事件类型");
-        };
+        try {
+            Event event = Event.valueOf(eventName);
+            return switch (event) {
+                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();
+            };
+        } catch (IllegalArgumentException e) {
+            throw new BusinessException("无效的事件名称: " + eventName);
+        }
     }
 }

+ 11 - 2
car-wash-service/src/main/java/com/kym/service/cache/KymCache.java

@@ -31,6 +31,7 @@ public enum KymCache {
 
 
     private static ConcurrentHashMap<String, String> CONNECTOR_ID_SHORT_ID_MAPPING = new ConcurrentHashMap<>();
+    private static ConcurrentHashMap<String, String> SHORT_ID_TO_PRODUCT_KEY_AND_DEVICE_NAME_MAPPING = new ConcurrentHashMap<>();
 
 
     /**
@@ -176,10 +177,11 @@ public enum KymCache {
      */
     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));
+        SHORT_ID_TO_PRODUCT_KEY_AND_DEVICE_NAME_MAPPING.putAll(map);
     }
 
     /**
-     * 通过短编号获取产品密钥和设备名称
+     * 通过短编号获取productKey和deviceName
      *
      * @param shortId
      * @return
@@ -187,7 +189,7 @@ public enum KymCache {
     public String[] getProductKeyAndDeviceNameByWashShortId(String shortId) {
         var res = new String[]{};
         var s = Objects.requireNonNull(KymCacheInjector.redisTemplate.opsForValue().get(RedisKeys.WASH_SHORT_ID_TO_PRODUCT_KEY_AND_DEVICE_NAME + shortId));
-        if(CommUtil.isNotEmptyAndNull(s)){
+        if (CommUtil.isNotEmptyAndNull(s)) {
             res = s.split(",");
         }
         if (res.length != 2) {
@@ -196,6 +198,13 @@ public enum KymCache {
         return res;
     }
 
+    /**
+     * 通过productKey和deviceName获取设备短编号
+     */
+    public String getShortIdByProductKeyAndDeviceName(String productKey, String deviceName) {
+        return SHORT_ID_TO_PRODUCT_KEY_AND_DEVICE_NAME_MAPPING.entrySet().stream().filter(entry -> (productKey+","+deviceName).equals(entry.getValue())).map(Map.Entry::getKey).findFirst().get();
+    }
+
 
     @Component
     public static class KymCacheInjector implements ApplicationListener<ApplicationStartedEvent> {

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

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

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

@@ -3,6 +3,7 @@ package com.kym.service.miniapp;
 import com.kym.entity.miniapp.WashDevice;
 import com.kym.entity.miniapp.WashOrder;
 import com.kym.entity.miniapp.queryParams.DeviceQueryParams;
+import com.kym.entity.miniapp.vo.WashDeviceVo;
 import com.kym.service.mybatisplus.MyBaseService;
 
 import java.util.List;
@@ -23,5 +24,5 @@ public interface WashDeviceService extends MyBaseService<WashDevice> {
 
     void stopDevice(String shortId);
 
-    List<WashDevice> listWashDevice(DeviceQueryParams params);
+    List<WashDeviceVo> listWashDevice(DeviceQueryParams params);
 }

+ 20 - 0
car-wash-service/src/main/java/com/kym/service/miniapp/impl/RechargeConfigServiceImpl.java

@@ -0,0 +1,20 @@
+package com.kym.service.miniapp.impl;
+
+import com.kym.entity.miniapp.RechargeConfig;
+import com.kym.mapper.miniapp.RechargeConfigMapper;
+import com.kym.service.miniapp.RechargeConfigService;
+import com.kym.service.mybatisplus.MyBaseServiceImpl;
+import org.springframework.stereotype.Service;
+
+/**
+ * <p>
+ * 支付日志 服务实现类
+ * </p>
+ *
+ * @author skyline
+ * @since 2024-11-15
+ */
+@Service
+public class RechargeConfigServiceImpl extends MyBaseServiceImpl<RechargeConfigMapper, RechargeConfig> implements RechargeConfigService {
+
+}

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

@@ -1,15 +1,24 @@
 package com.kym.service.miniapp.impl;
 
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.github.yulichang.toolkit.JoinWrappers;
+import com.github.yulichang.wrapper.MPJLambdaWrapper;
 import com.kym.common.utils.CommUtil;
+import com.kym.entity.miniapp.OrderRechargeRights;
+import com.kym.entity.miniapp.UserRechargeRights;
 import com.kym.entity.miniapp.WashDevice;
 import com.kym.entity.miniapp.queryParams.DeviceQueryParams;
+import com.kym.entity.miniapp.vo.UserOrderRechargeRightsVo;
+import com.kym.entity.miniapp.vo.WashDeviceVo;
 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.beans.BeanUtils;
 import org.springframework.stereotype.Service;
 
+import java.util.ArrayList;
 import java.util.List;
 
 /**
@@ -37,12 +46,20 @@ public class WashDeviceServiceImpl extends MyBaseServiceImpl<WashDeviceMapper, W
      * @return
      */
     @Override
-    public List<WashDevice> listWashDevice(DeviceQueryParams params) {
-        return lambdaQuery()
+    public List<WashDeviceVo> listWashDevice(DeviceQueryParams params) {
+        var list = lambdaQuery()
                 .eq(CommUtil.isNotEmptyAndNull(params.getId()), WashDevice::getId, params.getId())
                 .eq(CommUtil.isNotEmptyAndNull(params.getStationId()), WashDevice::getStationId, params.getStationId())
                 .orderByAsc(WashDevice::getDeviceName)
                 .list();
+        var voList = new ArrayList<WashDeviceVo>();
+        for (WashDevice washDevice : list) {
+            var vo = new WashDeviceVo();
+            BeanUtils.copyProperties(washDevice, vo);
+            vo.setShortId(KymCache.INSTANCE.getShortIdByProductKeyAndDeviceName(washDevice.getProductKey(), washDevice.getDeviceName()));
+            voList.add(vo);
+        }
+        return voList;
     }
 
     /**