Browse Source

fix 记录订单ip关联;去掉国外ip绑定手机号

zoujiajian 2 năm trước cách đây
mục cha
commit
4aa694aa56

+ 23 - 0
netflix-common/src/main/java/com/cyksj/common/util/StringUtil.java

@@ -532,4 +532,27 @@ public final class StringUtil {
 		sb.append(front).append("****").append(back);
 		return sb.toString();
 	}
+
+	public static String getNewInternalAddressByIp(String ip) {
+		if (StrUtil.isBlank(ip)) {
+			return "unknown";
+		}
+		try {
+			String url = String.format("https://searchplugin.csdn.net/api/v1/ip/get?ip=%s", ip);
+			HttpResponse<String> send = J11HttpC
+					.custom().ofGet().url(url)
+					.send(HttpResponse.BodyHandlers.ofString());
+			String rspStr = send.body();
+			if (StrUtil.isEmpty(rspStr)) {
+				return "unknown";
+			}
+			JSONObject obj = JSONUtil.parseObj(rspStr);
+			JSONObject data = JSONUtil.parseObj(obj.get("data"));
+			String addr = data.getStr("address");
+			return addr;
+		} catch (Exception e) {
+		}
+
+		return "unknown";
+	}
 }

+ 13 - 0
netflix-dao/src/main/java/com/cyksj/mapper/OrderDonLocationRelateMapper.java

@@ -0,0 +1,13 @@
+package com.cyksj.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.cyksj.model.entity.OrderDonLocationRelate;
+
+/**
+ * 项目名: yhlxj
+ * 文件名: OrderDonLocationRelateMapper
+ * 创建者: JavaZou
+ * 创建时间:2024/4/10 15:50
+ */
+public interface OrderDonLocationRelateMapper extends BaseMapper<OrderDonLocationRelate> {
+}

+ 0 - 4
netflix-dao/src/main/java/com/cyksj/model/entity/OrderDon.java

@@ -290,10 +290,6 @@ public class OrderDon extends BaseEntity implements Serializable {
      */
     private String phone;
 
-    private String ip;
-
-    private String location;
-
     public enum Status {
         /**
          * 订单状态

+ 24 - 0
netflix-dao/src/main/java/com/cyksj/model/entity/OrderDonLocationRelate.java

@@ -0,0 +1,24 @@
+package com.cyksj.model.entity;
+
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * 项目名: yhlxj
+ * 文件名: OrderDonLocationRelate
+ * 创建者: JavaZou
+ * 创建时间:2024/4/10 15:49
+ */
+@Getter
+@Setter
+public class OrderDonLocationRelate extends BaseEntity{
+	private Long orderId;
+
+	private String ip;
+
+	private String country;
+
+	private String province;
+
+	private String city;
+}

+ 13 - 4
netflix-service/src/main/java/com/cyksj/service/order/impl/OrderDonServiceImpl.java

@@ -279,6 +279,8 @@ public class OrderDonServiceImpl extends ServiceImpl<OrderDonMapper, OrderDon> i
 
 	private final UserDistributeSubWaitingMapper userDistributeSubWaitingMapper;
 
+	private final OrderDonLocationRelateMapper orderDonLocationRelateMapper;
+
 	private final List<String> noChekGoodsTemp = List.of("Apple One", "Youtube", "Spotify");
 
 	@Transactional(rollbackFor = Throwable.class)
@@ -370,8 +372,6 @@ public class OrderDonServiceImpl extends ServiceImpl<OrderDonMapper, OrderDon> i
 		/* 生成订单 */
 		String donNo = SEQUENCE.nextId().toString();
 		OrderDon orderDon = new OrderDon();
-		orderDon.setIp(payRequest.getIp());
-		orderDon.setLocation(payRequest.getLocation());
 
 		orderDon.setIsDp(false);
 		if (isNoLogin != null && isNoLogin) {
@@ -645,6 +645,8 @@ public class OrderDonServiceImpl extends ServiceImpl<OrderDonMapper, OrderDon> i
 			informationClickUserRecord.setOrderId(orderDon.getId());
 			informationClickUserRecordMapper.insert(informationClickUserRecord);
 		}
+		//记录订单ip关联
+		recordOrderDonLocationRelate(orderDon.getId(), payRequest.getIp());
 		return orderDon;
 	}
 
@@ -977,8 +979,6 @@ public class OrderDonServiceImpl extends ServiceImpl<OrderDonMapper, OrderDon> i
 		/* 生成订单 */
 		String donNo = SEQUENCE.nextId().toString();
 		OrderDon orderDon = new OrderDon();
-		orderDon.setIp(payRequest.getIp());
-		orderDon.setLocation(payRequest.getLocation());
 
 		orderDon.setOrderNo(donNo);
 		orderDon.setOpenId(payOpenId);
@@ -1038,6 +1038,8 @@ public class OrderDonServiceImpl extends ServiceImpl<OrderDonMapper, OrderDon> i
 			orderDonMapper.updateById(updateOrder);
 			return updateOrder;
 		}
+		//记录订单ip关联
+		recordOrderDonLocationRelate(orderDon.getId(), payRequest.getIp());
 		return orderDon;
 	}
 
@@ -2979,4 +2981,11 @@ public class OrderDonServiceImpl extends ServiceImpl<OrderDonMapper, OrderDon> i
 
 		}
 	}
+
+	private void recordOrderDonLocationRelate(Long orderId, String ip) {
+		OrderDonLocationRelate orderDonLocationRelate = new OrderDonLocationRelate();
+		orderDonLocationRelate.setOrderId(orderId);
+		orderDonLocationRelate.setIp(ip);
+		orderDonLocationRelateMapper.insert(orderDonLocationRelate);
+	}
 }

+ 5 - 0
netflix-web/src/main/java/com/cyksj/web/controller/payment/OrderController.java

@@ -489,6 +489,11 @@ public class OrderController {
         UserBindDetail userBindDetail = userBindDetailMapper.selectOne(Wrappers.lambdaQuery(UserBindDetail.class)
                 .eq(StrUtil.isNotEmpty(user.getOpenId()), UserBindDetail::getUserId, userId)
                 .eq(StrUtil.isNotEmpty(user.getEmail()), UserBindDetail::getEmailUserId, userId).last("limit 1"));
+        //台湾ip
+        String address = StringUtil.getNewInternalAddressByIp(ServletUtil.getClientIP(request));
+        if (address.contains("台湾") || !address.contains("中国")) {
+            return GatewayResponse.SUCCESS.newBuilder().toResult(true);
+        }
         if (userBindDetail == null || StrUtil.isEmpty(userBindDetail.getPhone())) {
             return GatewayResponse.SUCCESS.newBuilder().toResult(false);
         }