wanxc 2 ヶ月 前
コミット
67ecac15ee

+ 33 - 4
src/main/java/com/tiangua/star/controller/ThirdCallBackController.java

@@ -1,6 +1,9 @@
 package com.tiangua.star.controller;
 
+import com.alibaba.fastjson.JSONObject;
+import com.alibaba.fastjson.TypeReference;
 import com.tiangua.kirin.api.MessageResult;
+import com.tiangua.star.model.ProductBusInessApiDto;
 import com.tiangua.star.model.ThirdStarDto;
 import com.tiangua.star.model.XdOrderDto;
 import com.tiangua.star.service.CallBackService;
@@ -14,6 +17,7 @@ import org.springframework.web.bind.annotation.RestController;
 
 import java.util.List;
 import java.util.Map;
+import java.util.stream.Collectors;
 
 /**
  * @author
@@ -30,14 +34,39 @@ public class ThirdCallBackController {
     private CallBackService callBackService;
 
     @PostMapping("/request")
-    public MessageResult<Integer> request(@RequestBody Map<String, List<ThirdStarDto>> map) {
-        log.info("thirdGainStarData get begin map{}",map);
-        List<ThirdStarDto> data = map.get("data");
+    public MessageResult<Integer> request(@RequestBody JSONObject jsonObject) {
+//        Map<String, List<ThirdStarDto>> map
+        JSONObject object = jsonObject.getJSONObject("orderDtoList");
+        Map<String, List<ThirdStarDto>> orderDtoMap = object.toJavaObject(
+                new TypeReference<Map<String, List<ThirdStarDto>>>() {}
+        );
+
+        log.info("thirdGainStarData get begin map{}",orderDtoMap);
+        List<ThirdStarDto> data = orderDtoMap.get("data");
         if (CollectionUtils.isEmpty(data)) {
             log.info("thirdGainStarData 解析回传数据为null");
             return MessageResult.ok();
         }
-        callBackService.thirdProcessInstitutionData(data);
+        // 1. 从 jsonObject 中获取 "星级配置starConfig" 对应的 JSON 数组
+        Object starConfigObj = jsonObject.get("starConfig");
+
+        // 2. 转换为 List<ProductBusInessApiDto> 类型
+        List<ProductBusInessApiDto> starConfigList = JSONObject.parseObject(
+                JSONObject.toJSONString(starConfigObj),  // 先转为JSON字符串
+                new TypeReference<List<ProductBusInessApiDto>>() {}  // 指定目标泛型类型
+        );
+
+        Map<String, String> resultMap = starConfigList.stream()
+                // 过滤出 isStarMapping 为 1 的元素
+                .filter(dto -> dto.getIsStarMapping() != null && dto.getIsStarMapping() == 1)
+                // 转换为 Map:键为 busiId,值为 starMappingConfig
+                .collect(Collectors.toMap(
+                        ProductBusInessApiDto::getBusiId,  // 键:busiId
+                        ProductBusInessApiDto::getStarMappingConfig,  // 值:starMappingConfig
+                        // 处理 key 重复的情况(如果存在相同 busiId,保留第一个值)
+                        (existingValue, newValue) -> existingValue
+                ));
+        callBackService.thirdProcessInstitutionData(data,resultMap);
         log.info("thirdGainStarData get end");
         return MessageResult.ok();
     }

+ 1 - 1
src/main/java/com/tiangua/star/service/CallBackService.java

@@ -10,7 +10,7 @@ import java.util.Map;
 public interface CallBackService {
     void processInstitutionData(List<XdOrderDto> xdOrderDtos, Map<String, String> resultMap);
 
-    void thirdProcessInstitutionData(List<ThirdStarDto> thirdStarDtos);
+    void thirdProcessInstitutionData(List<ThirdStarDto> thirdStarDtos,Map<String, String> resultMap);
 
     JSONObject kydrequest(JSONObject json);
 }

+ 157 - 41
src/main/java/com/tiangua/star/service/impl/CasllBackDataProcessor.java

@@ -421,7 +421,7 @@ public class CasllBackDataProcessor implements CallBackService {
     }
 
     @Override
-    public void thirdProcessInstitutionData(List<ThirdStarDto> thirdStarDtos) {
+    public void thirdProcessInstitutionData(List<ThirdStarDto> thirdStarDtos,Map<String, String> resultMap) {
         if (CollectionUtils.isEmpty(thirdStarDtos)) {
             log.info("thirdStarDtos 解析回传数据为null");
             return;
@@ -451,7 +451,7 @@ public class CasllBackDataProcessor implements CallBackService {
                         }
                         sendDalian(commercialCallBackReadyEnum.getCode(),
                                 commercialCallBackReadyEnum.getBusid(),
-                                commercialCallBackReadyEnum.getUrl(),thirdStarDtos);
+                                commercialCallBackReadyEnum.getUrl(),thirdStarDtos,resultMap);
                         break;
                     case Commercial_HFYZF:
                         if (CollectionUtils.isEmpty(thirdStarDtos)) {
@@ -459,7 +459,7 @@ public class CasllBackDataProcessor implements CallBackService {
                         }
                         sendHeFei(commercialCallBackReadyEnum.getCode(),
                                 commercialCallBackReadyEnum.getBusid(),
-                                commercialCallBackReadyEnum.getUrl(),thirdStarDtos);
+                                commercialCallBackReadyEnum.getUrl(),thirdStarDtos,resultMap);
                         break;
                 }
             }
@@ -529,13 +529,18 @@ public class CasllBackDataProcessor implements CallBackService {
                     if (StringUtils.isEmpty(s)){
                         customerFollowup.setStarLevel(new BigDecimal(stars));
                     }else {
-                        Map<String, String> starMap = JSON.parseObject(object.toString(), Map.class);
-                        String level = starMap.get(stars);
-                        if (StringUtils.isEmpty(level)) {
+                        try {
+                            Map<String, String> starMap = JSON.parseObject(object.toString(), Map.class);
+                            String level = starMap.get(stars);
+                            if (StringUtils.isEmpty(level)) {
+                                customerFollowup.setStarLevel(new BigDecimal(stars));
+                            }else{
+                                customerFollowup.setStarLevel(new BigDecimal(level));
+                            }
+                        }catch (Exception e){
                             customerFollowup.setStarLevel(new BigDecimal(stars));
-                        }else{
-                            customerFollowup.setStarLevel(new BigDecimal(level));
                         }
+
                     }
                 }
 //                customerFollowup.setStarLevel(new BigDecimal(item.getIntValue("stars")));
@@ -616,9 +621,27 @@ public class CasllBackDataProcessor implements CallBackService {
                     //	"4星": "2星",
                     //	"5星": "1星"
                     //}
-                    Map<String, String> starMap = JSON.parseObject(object.toString(), Map.class);
-                    String level = starMap.get(star);
-                    if (StringUtils.isEmpty(level)) {
+                    try {
+                        Map<String, String> starMap = JSON.parseObject(object.toString(), Map.class);
+                        String level = starMap.get(star);
+                        if (StringUtils.isEmpty(level)) {
+                            if ("0".equals(star)) {
+                                followup.setStarLevel(new BigDecimal(0));
+                            } else if ("10".equals(star)) {
+                                followup.setStarLevel(new BigDecimal(1));
+                            }else if ("20".equals(star)) {
+                                followup.setStarLevel(new BigDecimal(2));
+                            }else if ("30".equals(star)) {
+                                followup.setStarLevel(new BigDecimal(3));
+                            }else if ("40".equals(star)) {
+                                followup.setStarLevel(new BigDecimal(4));
+                            }else if ("50".equals(star)) {
+                                followup.setStarLevel(new BigDecimal(5));
+                            }
+                        }else {
+                            followup.setStarLevel(new BigDecimal(level));
+                        }
+                    }catch (Exception e){
                         if ("0".equals(star)) {
                             followup.setStarLevel(new BigDecimal(0));
                         } else if ("10".equals(star)) {
@@ -632,10 +655,7 @@ public class CasllBackDataProcessor implements CallBackService {
                         }else if ("50".equals(star)) {
                             followup.setStarLevel(new BigDecimal(5));
                         }
-                    }else {
-                        followup.setStarLevel(new BigDecimal(level));
                     }
-
                 }
             }
             followupList.add(followup);
@@ -709,9 +729,27 @@ public class CasllBackDataProcessor implements CallBackService {
                         followup.setStarLevel(new BigDecimal(5));
                     }
                 }else {
-                    Map<String, String> starMap = JSON.parseObject(jsonObject.toString(), Map.class);
-                    String level = starMap.get(star);
-                    if (StringUtils.isEmpty(level)) {
+                    try {
+                        Map<String, String> starMap = JSON.parseObject(jsonObject.toString(), Map.class);
+                        String level = starMap.get(star);
+                        if (StringUtils.isEmpty(level)) {
+                            if ("0".equals(star)) {
+                                followup.setStarLevel(new BigDecimal(0));
+                            } else if ("1".equals(star)) {
+                                followup.setStarLevel(new BigDecimal(1));
+                            }else if ("2".equals(star) || "3".equals(star)) {
+                                followup.setStarLevel(new BigDecimal(2));
+                            }else if ("4".equals(star)) {
+                                followup.setStarLevel(new BigDecimal(3));
+                            }else if ("5".equals(star)) {
+                                followup.setStarLevel(new BigDecimal(4));
+                            }else if ("6".equals(star)) {
+                                followup.setStarLevel(new BigDecimal(5));
+                            }
+                        }else {
+                            followup.setStarLevel(new BigDecimal(level));
+                        }
+                    }catch (Exception e){
                         if ("0".equals(star)) {
                             followup.setStarLevel(new BigDecimal(0));
                         } else if ("1".equals(star)) {
@@ -725,10 +763,9 @@ public class CasllBackDataProcessor implements CallBackService {
                         }else if ("6".equals(star)) {
                             followup.setStarLevel(new BigDecimal(5));
                         }
-                    }else {
-                        followup.setStarLevel(new BigDecimal(level));
                     }
 
+
                 }
 
             }
@@ -797,9 +834,27 @@ public class CasllBackDataProcessor implements CallBackService {
                         followup.setStarLevel(new BigDecimal(5));
                     }
                 }else {
-                    Map<String, String> starMap = JSON.parseObject(jsonObject.toString(), Map.class);
-                    String level = starMap.get(star);
-                    if (StringUtils.isEmpty(level)) {
+                    try {
+                        Map<String, String> starMap = JSON.parseObject(jsonObject.toString(), Map.class);
+                        String level = starMap.get(star);
+                        if (StringUtils.isEmpty(level)) {
+                            if ("0星".equals(star)) {
+                                followup.setStarLevel(new BigDecimal(0));
+                            } else if ("1星".equals(star)) {
+                                followup.setStarLevel(new BigDecimal(1));
+                            }else if ("2星".equals(star)) {
+                                followup.setStarLevel(new BigDecimal(2));
+                            }else if ("3星".equals(star)) {
+                                followup.setStarLevel(new BigDecimal(3));
+                            }else if ("4星".equals(star)) {
+                                followup.setStarLevel(new BigDecimal(4));
+                            }else if ("5星".equals(star)) {
+                                followup.setStarLevel(new BigDecimal(5));
+                            }
+                        }else {
+                            followup.setStarLevel(new BigDecimal(level));
+                        }
+                    }catch (Exception e){
                         if ("0星".equals(star)) {
                             followup.setStarLevel(new BigDecimal(0));
                         } else if ("1星".equals(star)) {
@@ -813,10 +868,9 @@ public class CasllBackDataProcessor implements CallBackService {
                         }else if ("5星".equals(star)) {
                             followup.setStarLevel(new BigDecimal(5));
                         }
-                    }else {
-                        followup.setStarLevel(new BigDecimal(level));
                     }
 
+
                 }
 
             }
@@ -956,9 +1010,27 @@ public class CasllBackDataProcessor implements CallBackService {
                     //	"4星": "2星",
                     //	"5星": "1星"
                     //}
-                    Map<String, String> starMap = JSON.parseObject(jsonObject.toString(), Map.class);
-                    String level = starMap.get(star);
-                    if (StringUtils.isEmpty(level)) {
+                    try {
+                        Map<String, String> starMap = JSON.parseObject(jsonObject.toString(), Map.class);
+                        String level = starMap.get(star);
+                        if (StringUtils.isEmpty(level)) {
+                            if ("0".equals(star)) {
+                                followup.setStarLevel(new BigDecimal(0));
+                            } else if ("10".equals(star)) {
+                                followup.setStarLevel(new BigDecimal(1));
+                            }else if ("20".equals(star)) {
+                                followup.setStarLevel(new BigDecimal(2));
+                            }else if ("30".equals(star)) {
+                                followup.setStarLevel(new BigDecimal(3));
+                            }else if ("40".equals(star)) {
+                                followup.setStarLevel(new BigDecimal(4));
+                            }else if ("50".equals(star)) {
+                                followup.setStarLevel(new BigDecimal(5));
+                            }
+                        }else {
+                            followup.setStarLevel(new BigDecimal(level));
+                        }
+                    }catch (Exception e){
                         if ("0".equals(star)) {
                             followup.setStarLevel(new BigDecimal(0));
                         } else if ("10".equals(star)) {
@@ -972,9 +1044,8 @@ public class CasllBackDataProcessor implements CallBackService {
                         }else if ("50".equals(star)) {
                             followup.setStarLevel(new BigDecimal(5));
                         }
-                    }else {
-                        followup.setStarLevel(new BigDecimal(level));
                     }
+
                 }
             }
             followup.setSourceType(3);
@@ -1019,14 +1090,17 @@ public class CasllBackDataProcessor implements CallBackService {
                 if (StringUtils.isEmpty(s)){
                     followup.setStarLevel(new BigDecimal(stars));
                 }else {
-                    Map<String, String> starMap = JSON.parseObject(jsonObject.toString(), Map.class);
-                    String level = starMap.get(stars);
-                    if (StringUtils.isEmpty(level)) {
+                    try {
+                        Map<String, String> starMap = JSON.parseObject(jsonObject.toString(), Map.class);
+                        String level = starMap.get(stars);
+                        if (StringUtils.isEmpty(level)) {
+                            followup.setStarLevel(new BigDecimal(stars));
+                        }else {
+                            followup.setStarLevel(new BigDecimal(level));
+                        }
+                    }catch (Exception e) {
                         followup.setStarLevel(new BigDecimal(stars));
-                    }else {
-                        followup.setStarLevel(new BigDecimal(level));
                     }
-
                 }
             }
 
@@ -1042,7 +1116,7 @@ public class CasllBackDataProcessor implements CallBackService {
         handleMappedData(busiId,followupList);
 
     }
-    private void sendDalian(String productBizId,String busiId,String url,List<ThirdStarDto> thirdStarDtos){
+    private void sendDalian(String productBizId,String busiId,String url,List<ThirdStarDto> thirdStarDtos,Map<String, String> resultMap){
         if (CollectionUtils.isEmpty(thirdStarDtos)) {
             return;
         }
@@ -1067,7 +1141,8 @@ public class CasllBackDataProcessor implements CallBackService {
 
             Map<String, ThirdStarDto> dtoMap = thirdStarDtos.stream()
                     .collect(Collectors.toMap(ThirdStarDto::getUniqueIdentify, Function.identity(), (a, b) -> a));
-
+            String s = resultMap.get(busiId);
+            JSONObject jsonObject = JSON.parseObject(s);
             for (int i = 0; i < data.size(); i++) {
                 JSONObject obj = data.getJSONObject(i);
                 String uniqueId = obj.getString("unique_id");
@@ -1076,7 +1151,27 @@ public class CasllBackDataProcessor implements CallBackService {
                 ThirdStarDto dto = dtoMap.get(uniqueId);
                 if (dto != null) {
                     CustomerFollowup followup = new CustomerFollowup();
-                    followup.setStarLevel(new BigDecimal(star));
+//                    followup.setStarLevel(new BigDecimal(star));
+                    if (star==null) {
+                        log.info("busiId:{}  mobile_md5{} 没有填星级:", busiId ,followup.getPhoneMd5());
+                        continue;
+                    }else {
+                        if (StringUtils.isEmpty(s)){
+                            followup.setStarLevel(new BigDecimal(star));
+                        }else {
+                            try {
+                                Map<String, String> starMap = JSON.parseObject(jsonObject.toString(), Map.class);
+                                String level = starMap.get(star.toString());
+                                if (StringUtils.isEmpty(level)) {
+                                    followup.setStarLevel(new BigDecimal(star));
+                                }else {
+                                    followup.setStarLevel(new BigDecimal(level));
+                                }
+                            }catch (Exception e){
+                                followup.setStarLevel(new BigDecimal(star));
+                            }
+                        }
+                    }
                     followup.setPhoneMd5(dto.getPhoneMd5());
                     followup.setBusiId(busiId);
                     followup.setProductBizId(Integer.parseInt(productBizId));
@@ -1091,7 +1186,7 @@ public class CasllBackDataProcessor implements CallBackService {
         log.info("busiId:{} 处理数据条:{}", busiId, list.size());
         handleMappedData(busiId,list);
     }
-    private void sendHeFei(String productBizId,String busiId,String url,List<ThirdStarDto> thirdStarDtos){
+    private void sendHeFei(String productBizId,String busiId,String url,List<ThirdStarDto> thirdStarDtos,Map<String, String> resultMap){
         if (CollectionUtils.isEmpty(thirdStarDtos)) {
             return;
         }
@@ -1116,7 +1211,8 @@ public class CasllBackDataProcessor implements CallBackService {
 
             Map<String, ThirdStarDto> dtoMap = thirdStarDtos.stream()
                     .collect(Collectors.toMap(ThirdStarDto::getUniqueIdentify, Function.identity(), (a, b) -> a));
-
+            String s = resultMap.get(busiId);
+            JSONObject jsonObject = JSON.parseObject(s);
             for (int i = 0; i < data.size(); i++) {
                 JSONObject obj = data.getJSONObject(i);
                 String uniqueId = obj.getString("unique_id");
@@ -1125,7 +1221,27 @@ public class CasllBackDataProcessor implements CallBackService {
                 ThirdStarDto dto = dtoMap.get(uniqueId);
                 if (dto != null) {
                     CustomerFollowup followup = new CustomerFollowup();
-                    followup.setStarLevel(new BigDecimal(star));
+                    //followup.setStarLevel(new BigDecimal(star));
+                    if (star==null) {
+                        log.info("busiId:{}  mobile_md5{} 没有填星级:", busiId ,followup.getPhoneMd5());
+                        continue;
+                    }else {
+                        if (StringUtils.isEmpty(s)){
+                            followup.setStarLevel(new BigDecimal(star));
+                        }else {
+                            try {
+                                Map<String, String> starMap = JSON.parseObject(jsonObject.toString(), Map.class);
+                                String level = starMap.get(star.toString());
+                                if (StringUtils.isEmpty(level)) {
+                                    followup.setStarLevel(new BigDecimal(star));
+                                }else {
+                                    followup.setStarLevel(new BigDecimal(level));
+                                }
+                            }catch (Exception e){
+                                followup.setStarLevel(new BigDecimal(star));
+                            }
+                        }
+                    }
                     followup.setPhoneMd5(dto.getPhoneMd5());
                     followup.setBusiId(busiId);
                     followup.setProductBizId(Integer.parseInt(productBizId));

+ 10 - 5
src/main/java/com/tiangua/star/service/impl/XinLuDataProcessor.java

@@ -199,13 +199,18 @@ public class XinLuDataProcessor implements XinLuService {
                         if (StringUtils.isEmpty(s)){
                             param.setStarLevel(new Float(stars));
                         }else {
-                            Map<String, String> starMap = JSON.parseObject(object.toString(), Map.class);
-                            String level = starMap.get(stars);
-                            if (StringUtils.isEmpty(level)) {
+                            try {
+                                Map<String, String> starMap = JSON.parseObject(object.toString(), Map.class);
+                                String level = starMap.get(stars);
+                                if (StringUtils.isEmpty(level)) {
+                                    param.setStarLevel(new Float(stars));
+                                }else {
+                                    param.setStarLevel(new Float(level));
+                                }
+                            }catch (Exception e){
                                 param.setStarLevel(new Float(stars));
-                            }else {
-                                param.setStarLevel(new Float(level));
                             }
+
                         }
                     }
                     //param.setStarLevel(item.getFloat("importantDegree"));