فهرست منبع

智能柜项目提交

skyline 4 ماه پیش
والد
کامیت
1304d9d2a7
1فایلهای تغییر یافته به همراه62 افزوده شده و 21 حذف شده
  1. 62 21
      haha-miniapp/src/main/java/com/haha/miniapp/controller/CallbackController.java

+ 62 - 21
haha-miniapp/src/main/java/com/haha/miniapp/controller/CallbackController.java

@@ -172,9 +172,10 @@ public class CallbackController {
     private void handleOnlineStatus(Map<String, Object> params) {
         try {
             String deviceId = (String) params.get("device_id");
-            Integer isOnline = (Integer) params.get("is_online");
+            Integer isOnline = parseInteger(params.get("is_online"));
             
-            log.info("设备在线状态通知 - 设备: {}, 在线状态: {}", deviceId, isOnline == 1 ? "在线" : "离线");
+            log.info("设备在线状态通知 - 设备: {}, 在线状态: {}", 
+                deviceId, isOnline != null && isOnline == 1 ? "在线" : "离线");
             
             // 可以在这里更新设备在线状态到数据库
             
@@ -191,7 +192,7 @@ public class CallbackController {
     private void handleVoiceResult(Map<String, Object> params) {
         try {
             String deviceId = (String) params.get("device_id");
-            Integer voice = (Integer) params.get("voice");
+            Integer voice = parseInteger(params.get("voice"));
             
             log.info("音量调节结果通知 - 设备: {}, 音量值: {}", deviceId, voice);
             
@@ -213,14 +214,14 @@ public class CallbackController {
     private void handleNewProductAudit(Map<String, Object> params) {
         try {
             String id = (String) params.get("id");
-            Integer status = (Integer) params.get("status");
+            Integer status = parseInteger(params.get("status"));
             String name = (String) params.get("name");
             String code = (String) params.get("code");
             String rejectReason = (String) params.get("reject_reason");
             
             log.info("新品审核结果 - ID: {}, 商品名: {}, 状态: {}, code: {}", id, name, status, code);
             
-            if (status == 2) {
+            if (status != null && status == 2) {
                 log.warn("新品 {} 被拒绝,原因: {}", name, rejectReason);
             }
             
@@ -269,7 +270,9 @@ public class CallbackController {
             String activityId = (String) params.get("activity_id");
             String deviceId = (String) params.get("device_id");
             String outUserId = (String) params.get("out_user_id");
-            Integer nobuy = (Integer) params.get("nobuy");
+            
+            // 安全转换 nobuy 字段(兼容字符串和整型)
+            Integer nobuy = parseInteger(params.get("nobuy"));
             
             // 解析识别结果
             String resultStr = (String) params.get("result");
@@ -277,31 +280,39 @@ public class CallbackController {
             String resourceInfoStr = (String) params.get("resource_info");
             
             log.info("AI识别结果通知 - 设备: {}, 活动: {}, 是否消费: {}", 
-                deviceId, activityId, nobuy == 1 ? "无消费" : "有消费");
+                deviceId, activityId, nobuy != null && nobuy == 1 ? "无消费" : "有消费");
             
-            if (nobuy == 1) {
+            if (nobuy != null && nobuy == 1) {
                 log.info("用户打开柜门但未消费,无需处理");
                 return;
             }
             
             // 解析result字段
-            JSONObject result = JSON.parseObject(resultStr);
-            String type = result.getString("type"); // IN或OUT
-            JSONObject data = result.getJSONObject("data");
-            JSONArray excepts = result.getJSONArray("excepts");
+            if (resultStr != null && !resultStr.isEmpty()) {
+                JSONObject result = JSON.parseObject(resultStr);
+                String type = result.getString("type"); // IN或OUT
+                JSONArray data = result.getJSONArray("data");
+                JSONArray excepts = result.getJSONArray("excepts");
+                
+                log.info("识别类型: {}, 数据: {}", type, data != null ? data.size() : 0);
+                
+                // 检查是否有异常
+                if (excepts != null && !excepts.isEmpty()) {
+                    log.warn("识别结果包含异常: {}", excepts.toJSONString());
+                }
+            }
             
             // 解析sku_list
-            JSONArray skuList = JSON.parseArray(skuListStr);
+            if (skuListStr != null && !skuListStr.isEmpty()) {
+                JSONArray skuList = JSON.parseArray(skuListStr);
+                log.info("商品数量: {}", skuList != null ? skuList.size() : 0);
+            }
             
             // 解析resource_info获取视频URL
-            JSONObject resourceInfo = JSON.parseObject(resourceInfoStr);
-            String videoUrl = resourceInfo.getString("video_url");
-            
-            log.info("识别类型: {}, 商品数量: {}, 视频: {}", type, skuList.size(), videoUrl);
-            
-            // 检查是否有异常
-            if (excepts != null && !excepts.isEmpty()) {
-                log.warn("识别结果包含异常: {}", excepts.toJSONString());
+            if (resourceInfoStr != null && !resourceInfoStr.isEmpty()) {
+                JSONObject resourceInfo = JSON.parseObject(resourceInfoStr);
+                String videoUrl = resourceInfo.getString("video_url");
+                log.info("视频URL: {}", videoUrl);
             }
             
             // TODO: 根据识别结果进行后续处理
@@ -446,6 +457,36 @@ public class CallbackController {
         return params;
     }
 
+    /**
+     * 安全转换为整型,兼容字符串和整型
+     * 
+     * @param value 原始值
+     * @return 整型值,如果转换失败返回null
+     */
+    private Integer parseInteger(Object value) {
+        if (value == null) {
+            return null;
+        }
+        
+        try {
+            if (value instanceof Integer) {
+                return (Integer) value;
+            } else if (value instanceof String) {
+                String str = (String) value;
+                if (str.trim().isEmpty()) {
+                    return null;
+                }
+                return Integer.parseInt(str);
+            } else if (value instanceof Number) {
+                return ((Number) value).intValue();
+            }
+        } catch (NumberFormatException e) {
+            log.warn("无法转换为整型: {}", value);
+        }
+        
+        return null;
+    }
+
     /**
      * 验证签名
      *