From 5624e598ece28d910eac6369fcff23323310aa9e Mon Sep 17 00:00:00 2001
From: lanyangyang-yzx <15344130122@163.com>
Date: Thu, 8 Jan 2026 08:36:28 +0800
Subject: [PATCH] =?UTF-8?q?=E5=AE=8C=E6=88=90=E7=94=A8=E6=88=B7=E9=82=AE?=
=?UTF-8?q?=E7=AE=B1=E7=99=BB=E5=BD=95=E5=92=8C=E8=8E=B7=E5=BE=97ip?=
=?UTF-8?q?=E5=9C=B0=E5=9D=80?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
pom.xml | 7 ++
.../common/ip2location/Ip2LocationConfig.java | 14 +++
.../java/com/bao/dating/config/WebConfig.java | 2 +-
.../controller/IpLocationController.java | 37 ++++++++
.../controller/PostFavoriteController.java | 34 ++++++-
.../bao/dating/controller/UserController.java | 39 ++++++++
.../bao/dating/mapper/PostFavoriteMapper.java | 5 +
.../com/bao/dating/mapper/UserMapper.java | 22 +++++
.../com/bao/dating/pojo/vo/IpLocationVO.java | 30 ++++++
.../service/Ip2LocationClientService.java | 7 ++
.../dating/service/PostFavoriteService.java | 3 +
.../com/bao/dating/service/UserService.java | 16 ++++
.../impl/Ip2LocationClientServiceImpl.java | 67 +++++++++++++
.../service/impl/PostFavoriteServiceImpl.java | 15 +++
.../dating/service/impl/UserServiceImpl.java | 61 ++++++++++++
.../java/com/bao/dating/util/MD5Util.java | 93 +++++++++++++++++++
src/main/resources/application.yml | 8 ++
.../bao/dating/mapper/PostFavoriteMapper.xml | 4 +
.../com/bao/dating/mapper/UserMapper.xml | 14 +++
19 files changed, 476 insertions(+), 2 deletions(-)
create mode 100644 src/main/java/com/bao/dating/common/ip2location/Ip2LocationConfig.java
create mode 100644 src/main/java/com/bao/dating/controller/IpLocationController.java
create mode 100644 src/main/java/com/bao/dating/pojo/vo/IpLocationVO.java
create mode 100644 src/main/java/com/bao/dating/service/Ip2LocationClientService.java
create mode 100644 src/main/java/com/bao/dating/service/impl/Ip2LocationClientServiceImpl.java
diff --git a/pom.xml b/pom.xml
index 2079d64..7f4ac89 100644
--- a/pom.xml
+++ b/pom.xml
@@ -71,6 +71,13 @@
3.12.0
+
+
+ com.squareup.okhttp3
+ okhttp
+ 4.12.0
+
+
org.springframework.boot
diff --git a/src/main/java/com/bao/dating/common/ip2location/Ip2LocationConfig.java b/src/main/java/com/bao/dating/common/ip2location/Ip2LocationConfig.java
new file mode 100644
index 0000000..89b3d15
--- /dev/null
+++ b/src/main/java/com/bao/dating/common/ip2location/Ip2LocationConfig.java
@@ -0,0 +1,14 @@
+package com.bao.dating.common.ip2location;
+
+import lombok.Data;
+import org.springframework.boot.context.properties.ConfigurationProperties;
+import org.springframework.stereotype.Component;
+
+@Data
+@Component
+@ConfigurationProperties(prefix = "ip2location.api")
+public class Ip2LocationConfig {
+ private String key;
+ private String url;
+ private int timeout;
+}
diff --git a/src/main/java/com/bao/dating/config/WebConfig.java b/src/main/java/com/bao/dating/config/WebConfig.java
index 98a0683..69b7303 100644
--- a/src/main/java/com/bao/dating/config/WebConfig.java
+++ b/src/main/java/com/bao/dating/config/WebConfig.java
@@ -29,7 +29,7 @@ public class WebConfig implements WebMvcConfigurer {
.addPathPatterns("/**")
// 忽略的接口
.excludePathPatterns(
- "/user/login"
+ "/user/login","/user/register","/user/emailLogin","/ip/location"
);
}
}
diff --git a/src/main/java/com/bao/dating/controller/IpLocationController.java b/src/main/java/com/bao/dating/controller/IpLocationController.java
new file mode 100644
index 0000000..9e9ed90
--- /dev/null
+++ b/src/main/java/com/bao/dating/controller/IpLocationController.java
@@ -0,0 +1,37 @@
+package com.bao.dating.controller;
+
+import com.bao.dating.common.Result;
+import com.bao.dating.common.ResultCode;
+import com.bao.dating.pojo.vo.IpLocationVO;
+import com.bao.dating.service.Ip2LocationClientService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.RestController;
+
+@RestController
+@RequestMapping("/ip")
+public class IpLocationController {
+ @Autowired
+ private Ip2LocationClientService ip2LocationClientService;
+ /**
+ * 前端访问接口,获取IP地址位置信息
+ * @param ip 可选参数,要查询的IP地址
+ * @return IP位置信息(JSON格式)
+ */
+ @GetMapping("/location")
+ public Result> getIpLocation(@RequestParam(required = false) String ip) {
+ if (ip.isEmpty()){
+ return Result.error(ResultCode.PARAM_ERROR);
+ }
+ try {
+ // 调用工具类获取API响应
+ IpLocationVO ipLocationVo = ip2LocationClientService.getIpLocation(ip);
+ return Result.success(ResultCode.SUCCESS,ipLocationVo);
+ } catch (Exception e) {
+ // 异常处理:返回错误信息(实际项目建议封装统一响应格式)
+ return Result.error(ResultCode.SYSTEM_ERROR,e.getMessage());
+ }
+ }
+}
diff --git a/src/main/java/com/bao/dating/controller/PostFavoriteController.java b/src/main/java/com/bao/dating/controller/PostFavoriteController.java
index fd44e56..607381e 100644
--- a/src/main/java/com/bao/dating/controller/PostFavoriteController.java
+++ b/src/main/java/com/bao/dating/controller/PostFavoriteController.java
@@ -2,12 +2,13 @@ package com.bao.dating.controller;
import com.bao.dating.common.Result;
import com.bao.dating.common.ResultCode;
+import com.bao.dating.pojo.entity.Post;
import com.bao.dating.pojo.entity.User;
import com.bao.dating.service.PostFavoriteService;
-import com.bao.dating.service.PostService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
+import java.util.List;
import java.util.Map;
@RestController
@@ -15,6 +16,13 @@ import java.util.Map;
public class PostFavoriteController {
@Autowired
private PostFavoriteService postFavoriteService;
+
+ /**
+ * 收藏
+ * @param postId 动态ID
+ * @param user 当前登录用户对象
+ * @return 结果
+ */
@PostMapping("/{post_id}/favorites")
public Result