From bc6759c896124917cc987550ad9983cbe6c55e73 Mon Sep 17 00:00:00 2001
From: sleepybear <569750408@qq.com>
Date: Wed, 4 May 2022 03:07:52 +0800
Subject: [PATCH] =?UTF-8?q?@dev=20=E4=BC=98=E5=8C=96=E4=BB=A3=E7=A0=81?=
=?UTF-8?q?=E3=80=81=E6=9B=B4=E6=96=B0=20readme.md=E3=80=81=E4=BD=BF?=
=?UTF-8?q?=E7=94=A8=E6=8B=A6=E6=88=AA=E5=99=A8=E3=80=81=E9=85=8D=E7=BD=AE?=
=?UTF-8?q?=E6=96=87=E4=BB=B6=E4=BC=98=E5=8C=96?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
pom.xml | 13 +---
readme.md | 40 +++++++++--
.../com/xjx/ddtcrawler/config/ConfigBean.java | 46 ++++++++++++
.../controller/AuctionController.java | 9 +--
.../controller/PrivilegeController.java | 22 +++---
.../controller/TemplateController.java | 15 ++--
.../xjx/ddtcrawler/cookie/UserPrivilege.java | 54 --------------
.../com/xjx/ddtcrawler/cookie/WebUser.java | 55 +++++++++++++-
.../com/xjx/ddtcrawler/domain/QueryUrl.java | 4 +-
.../com/xjx/ddtcrawler/domain/Template.java | 19 -----
.../com/xjx/ddtcrawler/dto/TemplateDto.java | 42 +++++++++++
.../ddtcrawler/filter/FilterRegistration.java | 20 ------
.../xjx/ddtcrawler/filter/WebUserFilter.java | 72 -------------------
.../interceptor/UserInterceptor.java | 58 +++++++++++++++
.../ddtcrawler/interceptor/WebMvcConfig.java | 24 +++++++
.../xjx/ddtcrawler/logic/AuctionLogic.java | 22 +++---
.../xjx/ddtcrawler/logic/TemplateLogic.java | 24 +++----
.../xjx/ddtcrawler/logic/WebUserLogic.java | 5 +-
.../xjx/ddtcrawler/schedule/MySchedule.java | 4 +-
.../ddtcrawler/service/TemplateService.java | 56 ++++++++++-----
.../java/com/xjx/ddtcrawler/test/Test.java | 32 ---------
...itional-spring-configuration-metadata.json | 13 ----
src/main/resources/application.yml | 6 +-
23 files changed, 347 insertions(+), 308 deletions(-)
create mode 100644 src/main/java/com/xjx/ddtcrawler/config/ConfigBean.java
delete mode 100644 src/main/java/com/xjx/ddtcrawler/cookie/UserPrivilege.java
create mode 100644 src/main/java/com/xjx/ddtcrawler/dto/TemplateDto.java
delete mode 100644 src/main/java/com/xjx/ddtcrawler/filter/FilterRegistration.java
delete mode 100644 src/main/java/com/xjx/ddtcrawler/filter/WebUserFilter.java
create mode 100644 src/main/java/com/xjx/ddtcrawler/interceptor/UserInterceptor.java
create mode 100644 src/main/java/com/xjx/ddtcrawler/interceptor/WebMvcConfig.java
delete mode 100644 src/main/resources/META-INF/additional-spring-configuration-metadata.json
diff --git a/pom.xml b/pom.xml
index e15d8f8..d80807f 100644
--- a/pom.xml
+++ b/pom.xml
@@ -10,7 +10,7 @@
com.xjx
ddt-crawler
- 0.1.1
+ 0.2.0
ddt-crawler
ddt-crawler
@@ -47,11 +47,6 @@
org.apache.commons
commons-lang3
-
- org.springframework.boot
- spring-boot-configuration-processor
- true
-
com.baomidou
@@ -74,12 +69,6 @@
xstream
1.4.19
-
-
- com.google.guava
- guava
- 31.1-jre
-
diff --git a/readme.md b/readme.md
index 2576f2f..486f51c 100644
--- a/readme.md
+++ b/readme.md
@@ -1,12 +1,38 @@
-## 这里是本工程的介绍
+# 介绍
+## 简介
+这个是用 Java 写的弹弹堂拍卖场列表爬取、展示的工程。直接请求拍卖场接口,获取拍卖场数据,解析价格,展示于页面。
+## 技术栈
+后盾:基于 Spring Boot 3.0.0-M2 使用 Java 17 编写。数据库方面,使用 MySQL 并使用 MyBatis-plus 工具进行连接管理。
+前端:简单的 HTML+JavaScript+CSS,没有使用其他框架;HTTP 请求使用 axios。
+## 简单的静态页面
+这个静态页面仅做展示用,没有后端的相关支撑,故无法返回相关请求。静态页面:[ddt.html](https://sleepybear1113.github.io/ddt-crawler/src/main/resources/static/ddt.html)
# 部署方式
-
-静态页面:[ddt.html](https://sleepybear1113.github.io/ddt-crawler/src/main/resources/static/ddt.html)
-
-本地部署:
-1. 下载 jar 包,[releases](https://github.com/sleepybear1113/ddt-crawler/releases)。
+## 本地 Jar 包部署:
+1. 下载 Jar 包,[releases](https://github.com/sleepybear1113/ddt-crawler/releases)。
2. Java 所需版本为 Java 17。
3. 执行 `java -jar 文件名` 即可启动。
+## IDEA 部署
+1. 设置 Java 版本为 Java 17。
+2. clone 代码并构建工程。
+3. 启动工程。
+## 数据库相关
+在 `src/resources/application.yml` 文件中有定义的数据库地址,需要新建名为 `ddt` 的 schema。然后新建相关数据库,如下代码:
+```sql
+create table template
+(
+ id bigint not null primary key,
+ name varchar(255) null,
+ price decimal(10, 2) null,
+ modify_time bigint null,
+ constraint template_id_unique_index unique (id)
+) engine = InnoDB;
+
+create index template_name_index on template (name);
+```
+### 物品信息
+由于拍卖场物品获取到的仅为物品 id,没有物品名称,需要在数据库中手动插入物品 id 和名称的对应关系,即 `template` 数据库的作用。此处不提供该数据。
+# 使用方法
+首先需要获取拍卖场的 HTTP 请求,可以在浏览器的控制台或者抓包获取。获取到 selfid 和 key 之后,填入页面对应位置,点击保存即可,而后就能进行物品的搜索。
-其他具体部署方式待补充......
\ No newline at end of file
+其中 selfid 为用户 id,不会变,key 为每次登录随机生成,下线即失效,所以需要账号一直在线才能使用。
\ No newline at end of file
diff --git a/src/main/java/com/xjx/ddtcrawler/config/ConfigBean.java b/src/main/java/com/xjx/ddtcrawler/config/ConfigBean.java
new file mode 100644
index 0000000..b879e34
--- /dev/null
+++ b/src/main/java/com/xjx/ddtcrawler/config/ConfigBean.java
@@ -0,0 +1,46 @@
+package com.xjx.ddtcrawler.config;
+
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.context.annotation.Configuration;
+
+import java.util.List;
+
+/**
+ * There is description
+ *
+ * @author sleepybear
+ * @date 2022/05/04 00:18
+ */
+@Configuration
+public class ConfigBean {
+ private static List adminUserIds;
+ private static List commonUserIds;
+ private static String gameUrlPrefix;
+
+ public static List getAdminUserIds() {
+ return adminUserIds;
+ }
+
+ @Value("${user-id.admin}")
+ public void setAdminUserIds(List adminUserIds) {
+ ConfigBean.adminUserIds = adminUserIds;
+ }
+
+ public static List getCommonUserIds() {
+ return commonUserIds;
+ }
+
+ @Value("${user-id.common}")
+ public void setCommonUserIds(List commonUserIds) {
+ ConfigBean.commonUserIds = commonUserIds;
+ }
+
+ public static String getGameUrlPrefix() {
+ return gameUrlPrefix;
+ }
+
+ @Value("${game-url.prefix}")
+ public void setGameUrlPrefix(String gameUrlPrefix) {
+ ConfigBean.gameUrlPrefix = gameUrlPrefix;
+ }
+}
diff --git a/src/main/java/com/xjx/ddtcrawler/controller/AuctionController.java b/src/main/java/com/xjx/ddtcrawler/controller/AuctionController.java
index 23129f8..a68e000 100644
--- a/src/main/java/com/xjx/ddtcrawler/controller/AuctionController.java
+++ b/src/main/java/com/xjx/ddtcrawler/controller/AuctionController.java
@@ -1,6 +1,5 @@
package com.xjx.ddtcrawler.controller;
-import com.xjx.ddtcrawler.cookie.UserPrivilege;
import com.xjx.ddtcrawler.cookie.WebUser;
import com.xjx.ddtcrawler.domain.QueryUrl;
import com.xjx.ddtcrawler.domain.Result;
@@ -21,8 +20,6 @@
public class AuctionController {
@Resource
private AuctionLogic auctionLogic;
- @Resource
- private UserPrivilege userPrivilege;
@RequestMapping("/auction/getAuctionItems")
public Result getItems(@RequestParam(required = false, defaultValue = "1") Integer page,
@@ -49,13 +46,13 @@ public Result getItems(@RequestParam(required = false, defaultValue = "1") Integ
queryUrl.setSort(sort);
queryUrl.setPage(page);
queryUrl.setName(itemName.trim());
- if (userPrivilege.notAdmin(webUser)) {
+ if (webUser.notAdmin()) {
queryUrl.setUserId(-1L);
queryUrl.setBuyId(-1L);
}
Result result = auctionLogic.getSingleResult(queryUrl);
- if (userPrivilege.notAdmin(webUser)) {
+ if (webUser.notAdmin()) {
result.hideSensitiveInfo();
}
return result;
@@ -78,7 +75,7 @@ public Result getAuctionPriceOder(String itemName,
queryUrl.setName(itemName.trim());
Result result = auctionLogic.getResultsByBatchPages(queryUrl, QueryUrl.DEFAULT_PAGES, true, 250L, priceType, sort, null);
- if (userPrivilege.notAdmin(webUser)) {
+ if (webUser.notAdmin()) {
result.hideSensitiveInfo();
}
return result;
diff --git a/src/main/java/com/xjx/ddtcrawler/controller/PrivilegeController.java b/src/main/java/com/xjx/ddtcrawler/controller/PrivilegeController.java
index 1b52c25..d6c7bdf 100644
--- a/src/main/java/com/xjx/ddtcrawler/controller/PrivilegeController.java
+++ b/src/main/java/com/xjx/ddtcrawler/controller/PrivilegeController.java
@@ -1,8 +1,7 @@
package com.xjx.ddtcrawler.controller;
-import com.xjx.ddtcrawler.cookie.UserPrivilege;
+import com.xjx.ddtcrawler.config.ConfigBean;
import com.xjx.ddtcrawler.exception.MyException;
-import jakarta.annotation.Resource;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@@ -16,31 +15,26 @@
@RestController
public class PrivilegeController {
- @Resource
- private UserPrivilege userPrivilege;
-
@RequestMapping("/privilege/addCommonUserId")
public List addCommonUserId(Long id) {
if (id == null) {
throw new MyException("错误");
}
- for (Long commonUserId : userPrivilege.getCommonUserIds()) {
+ for (Long commonUserId : ConfigBean.getCommonUserIds()) {
if (commonUserId.equals(id)) {
throw new MyException("重复");
}
}
- userPrivilege.getCommonUserIds().add(id);
- return userPrivilege.getCommonUserIds();
+ ConfigBean.getCommonUserIds().add(id);
+ return ConfigBean.getCommonUserIds();
}
@RequestMapping("/privilege/deleteCommonUserId")
- public Object deleteCommonUserId(Long id) {
- if (id == null) {
- throw new MyException("错误");
+ public List deleteCommonUserId(Long id) {
+ if (id != null) {
+ ConfigBean.getCommonUserIds().removeIf(u -> u.equals(id));
}
-
- userPrivilege.getCommonUserIds().removeIf(u -> u.equals(id));
- return userPrivilege.getCommonUserIds();
+ return ConfigBean.getCommonUserIds();
}
}
diff --git a/src/main/java/com/xjx/ddtcrawler/controller/TemplateController.java b/src/main/java/com/xjx/ddtcrawler/controller/TemplateController.java
index e6139ca..5f3135f 100644
--- a/src/main/java/com/xjx/ddtcrawler/controller/TemplateController.java
+++ b/src/main/java/com/xjx/ddtcrawler/controller/TemplateController.java
@@ -1,8 +1,7 @@
package com.xjx.ddtcrawler.controller;
-import com.xjx.ddtcrawler.cookie.UserPrivilege;
import com.xjx.ddtcrawler.cookie.WebUser;
-import com.xjx.ddtcrawler.domain.Template;
+import com.xjx.ddtcrawler.dto.TemplateDto;
import com.xjx.ddtcrawler.exception.MyException;
import com.xjx.ddtcrawler.logic.TemplateLogic;
import jakarta.annotation.Resource;
@@ -19,13 +18,11 @@
public class TemplateController {
@Resource
private TemplateLogic templateLogic;
- @Resource
- private UserPrivilege userPrivilege;
@RequestMapping("/template/getTemplateById")
- public Template getTemplateById(Long id) throws MyException {
+ public TemplateDto getTemplateById(Long id) throws MyException {
WebUser webUser = WebUser.getSafeWebUser();
- if (userPrivilege.notAdmin(webUser)) {
+ if (webUser.notAdmin()) {
throw new MyException("无权操作该接口");
}
return templateLogic.getTemplateById(id);
@@ -34,19 +31,19 @@ public Template getTemplateById(Long id) throws MyException {
@RequestMapping("/template/saveTemplate")
public Boolean saveTemplate(Long templateId, String templateName) throws MyException {
WebUser webUser = WebUser.getSafeWebUser();
- if (userPrivilege.notAdmin(webUser)) {
+ if (webUser.notAdmin()) {
throw new MyException("无权操作该接口");
}
return templateLogic.saveTemplate(templateId, templateName);
}
@RequestMapping("/template/listAllTemplates")
- public List listAllTemplates() {
+ public List listAllTemplates() {
return templateLogic.listAllTemplates();
}
@RequestMapping("/template/listCommonSlv4")
- public List listCommonSlv4() {
+ public List listCommonSlv4() {
return templateLogic.listCommonSlv4();
}
}
diff --git a/src/main/java/com/xjx/ddtcrawler/cookie/UserPrivilege.java b/src/main/java/com/xjx/ddtcrawler/cookie/UserPrivilege.java
deleted file mode 100644
index da91911..0000000
--- a/src/main/java/com/xjx/ddtcrawler/cookie/UserPrivilege.java
+++ /dev/null
@@ -1,54 +0,0 @@
-package com.xjx.ddtcrawler.cookie;
-
-import lombok.Data;
-import org.springframework.beans.factory.annotation.Value;
-import org.springframework.stereotype.Component;
-
-import java.util.List;
-
-/**
- * @author xjx
- */
-@Component
-@Data
-public class UserPrivilege {
-
- @Value("${user-id.admin}")
- private List adminUserIds;
-
- @Value("${user-id.common}")
- private List commonUserIds;
-
- public boolean isAdmin(WebUser webUser) {
- return !webUser.isTemporaryUser() && isInAdminUserId(webUser.getUserId());
- }
-
- public boolean notAdmin(WebUser webUser) {
- return !isAdmin(webUser);
- }
-
- public boolean isInAdminUserId(Long userId) {
- if (userId == null) {
- return false;
- }
-
- for (Long adminUserId : adminUserIds) {
- if (adminUserId.equals(userId)) {
- return true;
- }
- }
- return false;
- }
-
- public boolean isInSpecificUserId(Long userId) {
- if (userId == null) {
- return false;
- }
- for (Long commonUserId : commonUserIds) {
- if (commonUserId.equals(userId)) {
- return true;
- }
- }
- return false;
- }
-}
diff --git a/src/main/java/com/xjx/ddtcrawler/cookie/WebUser.java b/src/main/java/com/xjx/ddtcrawler/cookie/WebUser.java
index 1442a5a..3a84663 100644
--- a/src/main/java/com/xjx/ddtcrawler/cookie/WebUser.java
+++ b/src/main/java/com/xjx/ddtcrawler/cookie/WebUser.java
@@ -1,6 +1,7 @@
package com.xjx.ddtcrawler.cookie;
import com.xjx.ddtcrawler.cache.CacheDomain;
+import com.xjx.ddtcrawler.config.ConfigBean;
import com.xjx.ddtcrawler.exception.MyException;
import com.xjx.ddtcrawler.utils.EncryptedUtils;
import lombok.Data;
@@ -23,10 +24,25 @@ public class WebUser extends CacheDomain implements Serializable {
public static final ThreadLocal WEB_USER_THREAD_LOCAL = new ThreadLocal<>();
+ /**
+ * 加密的 userId
+ */
private String id;
- private Long loginTime;
+ /**
+ * 真实 userId
+ */
private Long userId;
+ /**
+ * key
+ */
private String key;
+ /**
+ * 登陆时间
+ */
+ private Long loginTime;
+ /**
+ * 临时 License
+ */
private String temporaryLicense;
/**
* 用户并发毫秒
@@ -37,6 +53,10 @@ public static void setWebUser(WebUser webUser) {
WEB_USER_THREAD_LOCAL.set(webUser);
}
+ public static void remove() {
+ WEB_USER_THREAD_LOCAL.remove();
+ }
+
public static WebUser getWebUser() {
return WEB_USER_THREAD_LOCAL.get();
}
@@ -71,4 +91,37 @@ public String getId() {
this.id = EncryptedUtils.encryptId(this.getUserId(), this.loginTime);
return this.id;
}
+
+ public boolean isAdmin() {
+ return !isTemporaryUser() && isInAdminUserId(this.userId);
+ }
+
+ public boolean notAdmin() {
+ return !isAdmin();
+ }
+
+ public static boolean isInAdminUserId(Long userId) {
+ if (userId == null) {
+ return false;
+ }
+
+ for (Long adminUserId : ConfigBean.getAdminUserIds()) {
+ if (adminUserId.equals(userId)) {
+ return true;
+ }
+ }
+ return false;
+ }
+
+ public static boolean isInSpecificUserId(Long userId) {
+ if (userId == null) {
+ return false;
+ }
+ for (Long commonUserId : ConfigBean.getCommonUserIds()) {
+ if (commonUserId.equals(userId)) {
+ return true;
+ }
+ }
+ return false;
+ }
}
diff --git a/src/main/java/com/xjx/ddtcrawler/domain/QueryUrl.java b/src/main/java/com/xjx/ddtcrawler/domain/QueryUrl.java
index dd28689..5b2cd22 100644
--- a/src/main/java/com/xjx/ddtcrawler/domain/QueryUrl.java
+++ b/src/main/java/com/xjx/ddtcrawler/domain/QueryUrl.java
@@ -1,5 +1,6 @@
package com.xjx.ddtcrawler.domain;
+import com.xjx.ddtcrawler.config.ConfigBean;
import com.xjx.ddtcrawler.cookie.WebUser;
import com.xjx.ddtcrawler.domain.constant.AuctionConstant;
import com.xjx.ddtcrawler.exception.MyException;
@@ -20,9 +21,10 @@
@Data
@Slf4j
public class QueryUrl {
- public static final String URL = "https://s57_app1105673153_qqgame_com.7road.net/request/auctionpagelist.ashx";
+ public static final String URL = ConfigBean.getGameUrlPrefix() + "/request/auctionpagelist.ashx";
public static final Random RANDOM = new Random();
public static final List DEFAULT_PAGES = new ArrayList<>();
+
static {
DEFAULT_PAGES.add(1);
DEFAULT_PAGES.add(2);
diff --git a/src/main/java/com/xjx/ddtcrawler/domain/Template.java b/src/main/java/com/xjx/ddtcrawler/domain/Template.java
index 33b5d18..d3df98b 100644
--- a/src/main/java/com/xjx/ddtcrawler/domain/Template.java
+++ b/src/main/java/com/xjx/ddtcrawler/domain/Template.java
@@ -2,7 +2,6 @@
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
-import com.xjx.ddtcrawler.utils.EncryptedUtils;
import lombok.Data;
import lombok.EqualsAndHashCode;
@@ -23,22 +22,4 @@ public class Template extends BaseDomain {
private String name;
@TableField("price")
private Double price;
- @TableField(exist = false)
- private Boolean isEncrypted = false;
-
- public void encryptId() {
- if (this.isEncrypted) {
- return;
- }
- this.setId(EncryptedUtils.encryptTemplateId(this.getId()));
- this.isEncrypted = true;
- }
-
- public void decryptId() {
- if (!this.isEncrypted) {
- return;
- }
- this.setId(EncryptedUtils.decryptTemplateId(this.getId()));
- this.isEncrypted = false;
- }
}
diff --git a/src/main/java/com/xjx/ddtcrawler/dto/TemplateDto.java b/src/main/java/com/xjx/ddtcrawler/dto/TemplateDto.java
new file mode 100644
index 0000000..066bca0
--- /dev/null
+++ b/src/main/java/com/xjx/ddtcrawler/dto/TemplateDto.java
@@ -0,0 +1,42 @@
+package com.xjx.ddtcrawler.dto;
+
+import com.xjx.ddtcrawler.utils.EncryptedUtils;
+import lombok.Data;
+
+import java.io.Serial;
+import java.io.Serializable;
+
+/**
+ * There is description
+ *
+ * @author sleepybear
+ * @date 2022/05/03 23:59
+ */
+@Data
+public class TemplateDto implements Serializable {
+ @Serial
+ private static final long serialVersionUID = -5008132148465573140L;
+
+ private Long id;
+ private Long modifyTime;
+
+ private String name;
+ private Double price;
+ private Boolean isEncrypted = false;
+
+ public void encryptId() {
+ if (this.isEncrypted) {
+ return;
+ }
+ this.id = EncryptedUtils.encryptTemplateId(this.id);
+ this.isEncrypted = true;
+ }
+
+ public void decryptId() {
+ if (!this.isEncrypted) {
+ return;
+ }
+ this.id = EncryptedUtils.decryptTemplateId(this.id);
+ this.isEncrypted = false;
+ }
+}
diff --git a/src/main/java/com/xjx/ddtcrawler/filter/FilterRegistration.java b/src/main/java/com/xjx/ddtcrawler/filter/FilterRegistration.java
deleted file mode 100644
index d9a0ee0..0000000
--- a/src/main/java/com/xjx/ddtcrawler/filter/FilterRegistration.java
+++ /dev/null
@@ -1,20 +0,0 @@
-package com.xjx.ddtcrawler.filter;
-
-import org.springframework.boot.web.servlet.FilterRegistrationBean;
-import org.springframework.context.annotation.Bean;
-import org.springframework.context.annotation.Configuration;
-
-/**
- * @author XJX
- * @date 2021/8/14 15:59
- */
-@Configuration
-public class FilterRegistration {
- @Bean
- public FilterRegistrationBean myFilter() {
- FilterRegistrationBean filterRegistrationBean = new FilterRegistrationBean<>();
- filterRegistrationBean.setFilter(new WebUserFilter());
- filterRegistrationBean.addUrlPatterns("/*");
- return filterRegistrationBean;
- }
-}
diff --git a/src/main/java/com/xjx/ddtcrawler/filter/WebUserFilter.java b/src/main/java/com/xjx/ddtcrawler/filter/WebUserFilter.java
deleted file mode 100644
index 7454f4a..0000000
--- a/src/main/java/com/xjx/ddtcrawler/filter/WebUserFilter.java
+++ /dev/null
@@ -1,72 +0,0 @@
-package com.xjx.ddtcrawler.filter;
-
-import com.xjx.ddtcrawler.cache.WebUserCache;
-import com.xjx.ddtcrawler.cookie.CookieHelper;
-import com.xjx.ddtcrawler.cookie.WebUser;
-import jakarta.servlet.*;
-import jakarta.servlet.annotation.WebFilter;
-import jakarta.servlet.http.Cookie;
-import jakarta.servlet.http.HttpServletRequest;
-import lombok.extern.slf4j.Slf4j;
-import org.springframework.web.context.WebApplicationContext;
-import org.springframework.web.context.support.WebApplicationContextUtils;
-
-/**
- * @author XJX
- * @date 2021/8/14 15:32
- */
-@Slf4j
-@WebFilter(urlPatterns = "/*", description = "myFilter")
-public class WebUserFilter implements Filter {
-
- private WebUserCache webUserCache;
-
- @Override
- public void init(FilterConfig filterConfig) throws ServletException {
- Filter.super.init(filterConfig);
- WebApplicationContext webApplicationContext = WebApplicationContextUtils.getWebApplicationContext(filterConfig.getServletContext());
- if (webApplicationContext == null) {
- return;
- }
- this.webUserCache = webApplicationContext.getBean(WebUserCache.class);
- }
-
- @Override
- public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) {
- try {
- HttpServletRequest httpServletRequest = (HttpServletRequest) request;
- // 读取 cookie
- Cookie cookie = CookieHelper.getCookie(httpServletRequest);
- if (cookie == null) {
- chain.doFilter(request, response);
- return;
- }
-
- // 获取 cookie 中的用户信息,格式为: WebUserId
- String webUserId = cookie.getValue();
- if (webUserId == null) {
- chain.doFilter(request, response);
- return;
- }
-
- WebUser cachedWebUser = webUserCache.getById(webUserId);
- if (cachedWebUser == null) {
- chain.doFilter(request, response);
- return;
- }
- long now = System.currentTimeMillis();
- Long loginTime = cachedWebUser.getLoginTime();
- if (loginTime == null) {
- cachedWebUser.setLoginTime(now);
- }
-
- WebUser.setWebUser(cachedWebUser);
- chain.doFilter(request, response);
- } catch (Exception e) {
- log.error("WebUserFilter 异常: " + e.getMessage(), e);
- } finally {
- WebUser.setWebUser(null);
- }
- }
-
-}
diff --git a/src/main/java/com/xjx/ddtcrawler/interceptor/UserInterceptor.java b/src/main/java/com/xjx/ddtcrawler/interceptor/UserInterceptor.java
new file mode 100644
index 0000000..ed9cb67
--- /dev/null
+++ b/src/main/java/com/xjx/ddtcrawler/interceptor/UserInterceptor.java
@@ -0,0 +1,58 @@
+package com.xjx.ddtcrawler.interceptor;
+
+import com.xjx.ddtcrawler.cache.WebUserCache;
+import com.xjx.ddtcrawler.cookie.CookieHelper;
+import com.xjx.ddtcrawler.cookie.WebUser;
+import jakarta.annotation.Resource;
+import jakarta.servlet.http.Cookie;
+import jakarta.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpServletResponse;
+import org.springframework.stereotype.Component;
+import org.springframework.web.servlet.HandlerInterceptor;
+
+/**
+ * There is description
+ *
+ * @author sleepybear
+ * @date 2022/05/04 01:09
+ */
+@Component
+public class UserInterceptor implements HandlerInterceptor {
+
+ @Resource
+ private WebUserCache webUserCache;
+
+ @Override
+ public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
+
+ Cookie cookie = CookieHelper.getCookie(request);
+ if (cookie == null) {
+ return HandlerInterceptor.super.preHandle(request, response, handler);
+ }
+
+ // 获取 cookie 中的用户信息,格式为: WebUserId
+ String webUserId = cookie.getValue();
+ if (webUserId == null) {
+ return HandlerInterceptor.super.preHandle(request, response, handler);
+ }
+
+ WebUser cachedWebUser = webUserCache.getById(webUserId);
+ if (cachedWebUser == null) {
+ return HandlerInterceptor.super.preHandle(request, response, handler);
+ }
+ long now = System.currentTimeMillis();
+ Long loginTime = cachedWebUser.getLoginTime();
+ if (loginTime == null) {
+ cachedWebUser.setLoginTime(now);
+ }
+
+ WebUser.setWebUser(cachedWebUser);
+ return HandlerInterceptor.super.preHandle(request, response, handler);
+ }
+
+ @Override
+ public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {
+ WebUser.remove();
+ HandlerInterceptor.super.afterCompletion(request, response, handler, ex);
+ }
+}
diff --git a/src/main/java/com/xjx/ddtcrawler/interceptor/WebMvcConfig.java b/src/main/java/com/xjx/ddtcrawler/interceptor/WebMvcConfig.java
new file mode 100644
index 0000000..d7a866e
--- /dev/null
+++ b/src/main/java/com/xjx/ddtcrawler/interceptor/WebMvcConfig.java
@@ -0,0 +1,24 @@
+package com.xjx.ddtcrawler.interceptor;
+
+import jakarta.annotation.Resource;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
+import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
+
+/**
+ * There is description
+ *
+ * @author sleepybear
+ * @date 2022/05/04 01:27
+ */
+@Configuration
+public class WebMvcConfig implements WebMvcConfigurer {
+ @Resource
+ private UserInterceptor userInterceptor;
+
+ @Override
+ public void addInterceptors(InterceptorRegistry registry) {
+ registry.addInterceptor(userInterceptor).addPathPatterns("/**").excludePathPatterns("/user/saveUser");
+ }
+}
diff --git a/src/main/java/com/xjx/ddtcrawler/logic/AuctionLogic.java b/src/main/java/com/xjx/ddtcrawler/logic/AuctionLogic.java
index 4da16d3..204a7f0 100644
--- a/src/main/java/com/xjx/ddtcrawler/logic/AuctionLogic.java
+++ b/src/main/java/com/xjx/ddtcrawler/logic/AuctionLogic.java
@@ -3,8 +3,8 @@
import com.xjx.ddtcrawler.domain.Item;
import com.xjx.ddtcrawler.domain.QueryUrl;
import com.xjx.ddtcrawler.domain.Result;
-import com.xjx.ddtcrawler.domain.Template;
import com.xjx.ddtcrawler.domain.constant.AuctionConstant;
+import com.xjx.ddtcrawler.dto.TemplateDto;
import com.xjx.ddtcrawler.exception.MyException;
import com.xjx.ddtcrawler.http.HttpHelper;
import com.xjx.ddtcrawler.http.HttpResponseHelper;
@@ -245,7 +245,7 @@ private void fillItemTemplate(Result result) {
}
List templateIds = new ArrayList<>(templateSet);
- Map templateMap = templateService.getMapByIds(templateIds);
+ Map templateMap = templateService.getMapByIds(templateIds);
log.info("找到对应 template 数量:" + templateMap.size());
if (MapUtils.isEmpty(templateMap)) {
return;
@@ -253,12 +253,12 @@ private void fillItemTemplate(Result result) {
for (Item item : items) {
Long templateId = item.getTemplateId();
- Template template = templateMap.get(templateId);
- if (template == null) {
+ TemplateDto templateDto = templateMap.get(templateId);
+ if (templateDto == null) {
continue;
}
- String templateName = template.getName();
- Double price = template.getPrice();
+ String templateName = templateDto.getName();
+ Double price = templateDto.getPrice();
item.setTemplateName(templateName);
item.setUserDefinePrice(price);
}
@@ -295,7 +295,7 @@ public Result getItemsWithFillItemInfo(QueryUrl queryUrl, boolean insert) throws
return result;
}
- Map templateMap = templateService.getMapByIds(templateIds);
+ Map templateMap = templateService.getMapByIds(templateIds);
log.info("找到对应 template 数量:" + templateMap.size());
if (MapUtils.isEmpty(templateMap)) {
return result;
@@ -303,12 +303,12 @@ public Result getItemsWithFillItemInfo(QueryUrl queryUrl, boolean insert) throws
for (Item item : items) {
Long templateId = item.getTemplateId();
- Template template = templateMap.get(templateId);
- if (template == null) {
+ TemplateDto templateDto = templateMap.get(templateId);
+ if (templateDto == null) {
continue;
}
- String templateName = template.getName();
- Double price = template.getPrice();
+ String templateName = templateDto.getName();
+ Double price = templateDto.getPrice();
item.setTemplateName(templateName);
item.setUserDefinePrice(price);
}
diff --git a/src/main/java/com/xjx/ddtcrawler/logic/TemplateLogic.java b/src/main/java/com/xjx/ddtcrawler/logic/TemplateLogic.java
index 1d8d563..ab0d1a9 100644
--- a/src/main/java/com/xjx/ddtcrawler/logic/TemplateLogic.java
+++ b/src/main/java/com/xjx/ddtcrawler/logic/TemplateLogic.java
@@ -1,6 +1,6 @@
package com.xjx.ddtcrawler.logic;
-import com.xjx.ddtcrawler.domain.Template;
+import com.xjx.ddtcrawler.dto.TemplateDto;
import com.xjx.ddtcrawler.exception.MyException;
import com.xjx.ddtcrawler.service.TemplateService;
import jakarta.annotation.Resource;
@@ -32,7 +32,7 @@ public class TemplateLogic {
@Resource
private TemplateService templateService;
- public Template getTemplateById(Long id) {
+ public TemplateDto getTemplateById(Long id) {
return templateService.getById(id);
}
@@ -40,25 +40,25 @@ public Boolean saveTemplate(Long templateId, String templateName) throws MyExcep
if (templateId == null || StringUtils.isBlank(templateName)) {
throw new MyException("template 参数有误");
}
- Template template = new Template();
- template.setId(templateId);
- template.setName(templateName);
- return templateService.save(template);
+ TemplateDto templateDto = new TemplateDto();
+ templateDto.setId(templateId);
+ templateDto.setName(templateName);
+ return templateService.save(templateDto);
}
- public List listAllTemplates() {
- List templates = templateService.getAll();
- templates.forEach(Template::encryptId);
+ public List listAllTemplates() {
+ List templates = templateService.getAll();
+ templates.forEach(TemplateDto::encryptId);
return templates;
}
- public List listCommonSlv4() {
- List templates = templateService.getByIds(COMMON_SLV_4);
+ public List listCommonSlv4() {
+ List templates = templateService.getByIds(COMMON_SLV_4);
if (CollectionUtils.isEmpty(templates)) {
return new ArrayList<>();
}
- templates.forEach(Template::encryptId);
+ templates.forEach(TemplateDto::encryptId);
return templates;
}
}
diff --git a/src/main/java/com/xjx/ddtcrawler/logic/WebUserLogic.java b/src/main/java/com/xjx/ddtcrawler/logic/WebUserLogic.java
index b962cd8..04466c1 100644
--- a/src/main/java/com/xjx/ddtcrawler/logic/WebUserLogic.java
+++ b/src/main/java/com/xjx/ddtcrawler/logic/WebUserLogic.java
@@ -2,7 +2,6 @@
import com.xjx.ddtcrawler.cache.WebUserCache;
import com.xjx.ddtcrawler.cookie.CookieHelper;
-import com.xjx.ddtcrawler.cookie.UserPrivilege;
import com.xjx.ddtcrawler.cookie.WebUser;
import com.xjx.ddtcrawler.exception.MyException;
import jakarta.annotation.Resource;
@@ -20,15 +19,13 @@
public class WebUserLogic {
@Resource
private WebUserCache webUserCache;
- @Resource
- private UserPrivilege userPrivilege;
public void save(Long userId, String key, Long expireTime) throws MyException {
if (userId == null) {
log.info("userId 为空");
return;
}
- if (!(userPrivilege.isInSpecificUserId(userId) || userPrivilege.isInAdminUserId(userId))) {
+ if (!(WebUser.isInSpecificUserId(userId) || WebUser.isInAdminUserId(userId))) {
throw new MyException("暂不支持其他id登录");
}
if (StringUtils.isBlank(key)) {
diff --git a/src/main/java/com/xjx/ddtcrawler/schedule/MySchedule.java b/src/main/java/com/xjx/ddtcrawler/schedule/MySchedule.java
index ae5e59c..5caf4c4 100644
--- a/src/main/java/com/xjx/ddtcrawler/schedule/MySchedule.java
+++ b/src/main/java/com/xjx/ddtcrawler/schedule/MySchedule.java
@@ -1,7 +1,7 @@
package com.xjx.ddtcrawler.schedule;
import com.xjx.ddtcrawler.cache.CacheInterface;
-import com.xjx.ddtcrawler.domain.Template;
+import com.xjx.ddtcrawler.dto.TemplateDto;
import com.xjx.ddtcrawler.service.TemplateService;
import jakarta.annotation.Resource;
import lombok.extern.slf4j.Slf4j;
@@ -34,7 +34,7 @@ public class MySchedule {
@Scheduled(cron = "0 */1 * * * ?")
public void mySqlConnection() {
try {
- Template template = templateService.getById(RANDOM.nextLong() / 1000);
+ TemplateDto templateDto = templateService.getById(RANDOM.nextLong() / 1000);
log.info("test connection");
} catch (Exception e) {
log.error("test connection error", e);
diff --git a/src/main/java/com/xjx/ddtcrawler/service/TemplateService.java b/src/main/java/com/xjx/ddtcrawler/service/TemplateService.java
index d3b0d17..16e3204 100644
--- a/src/main/java/com/xjx/ddtcrawler/service/TemplateService.java
+++ b/src/main/java/com/xjx/ddtcrawler/service/TemplateService.java
@@ -2,10 +2,12 @@
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.xjx.ddtcrawler.domain.Template;
+import com.xjx.ddtcrawler.dto.TemplateDto;
import com.xjx.ddtcrawler.mapper.TemplateMapper;
import jakarta.annotation.Resource;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang3.StringUtils;
+import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Service;
import java.util.*;
@@ -19,45 +21,61 @@ public class TemplateService {
@Resource
private TemplateMapper templateMapper;
- public Template getById(Long id) {
+ public TemplateDto getById(Long id) {
if (id == null) {
return null;
}
- return templateMapper.selectById(id);
+ Template template = templateMapper.selectById(id);
+ if (template == null) {
+ return null;
+ }
+ TemplateDto templateDto = new TemplateDto();
+ BeanUtils.copyProperties(template, templateDto);
+ return templateDto;
}
- public List getByIds(List ids) {
+ public List getByIds(List ids) {
if (CollectionUtils.isEmpty(ids)) {
return new ArrayList<>();
}
- return templateMapper.selectBatchIds(new ArrayList<>(new HashSet<>(ids)));
+ List templates = templateMapper.selectBatchIds(new ArrayList<>(new HashSet<>(ids)));
+ if (CollectionUtils.isEmpty(templates)) {
+ return new ArrayList<>();
+ }
+
+ ArrayList templateDtoList = new ArrayList<>();
+ BeanUtils.copyProperties(templates, templateDtoList);
+
+ return templateDtoList;
}
- public Map getMapByIds(List ids) {
- List list = getByIds(ids);
+ public Map getMapByIds(List ids) {
+ List list = getByIds(ids);
if (CollectionUtils.isEmpty(list)) {
return new HashMap<>();
}
- Map map = new HashMap<>();
- for (Template template : list) {
- Long id = template.getId();
- map.put(id, template);
+ Map map = new HashMap<>();
+ for (TemplateDto templateDto : list) {
+ Long id = templateDto.getId();
+ map.put(id, templateDto);
}
return map;
}
- public boolean save(Template template) {
- if (template == null || template.getId() == null) {
+ public boolean save(TemplateDto templateDto) {
+ if (templateDto == null || templateDto.getId() == null) {
return false;
}
- template.setModifyTime(System.currentTimeMillis());
+ Template template = new Template();
+ BeanUtils.copyProperties(templateDto, template);
+ templateDto.setModifyTime(System.currentTimeMillis());
- Long id = template.getId();
+ Long id = templateDto.getId();
Template existTemplate = templateMapper.selectById(id);
if (existTemplate == null) {
- if (StringUtils.isBlank(template.getName())) {
+ if (StringUtils.isBlank(templateDto.getName())) {
return false;
}
@@ -69,7 +87,11 @@ public boolean save(Template template) {
return true;
}
- public List getAll() {
- return templateMapper.selectList(new QueryWrapper<>());
+ public List getAll() {
+ List templates = templateMapper.selectList(new QueryWrapper<>());
+ ArrayList templateDtoList = new ArrayList<>();
+ BeanUtils.copyProperties(templates, templateDtoList);
+
+ return templateDtoList;
}
}
diff --git a/src/main/java/com/xjx/ddtcrawler/test/Test.java b/src/main/java/com/xjx/ddtcrawler/test/Test.java
index 65489bc..42e8dd5 100644
--- a/src/main/java/com/xjx/ddtcrawler/test/Test.java
+++ b/src/main/java/com/xjx/ddtcrawler/test/Test.java
@@ -1,41 +1,9 @@
package com.xjx.ddtcrawler.test;
-import com.google.common.cache.Cache;
-import com.google.common.cache.CacheBuilder;
-import com.google.common.cache.CacheLoader;
-import com.google.common.cache.CacheStats;
-
-import javax.annotation.Nonnull;
-import java.util.concurrent.TimeUnit;
-
-import static com.google.common.base.Preconditions.checkNotNull;
-
/**
* @author XJX
* @date 2021/8/1 15:25
*/
public class Test {
- public static void main(String[] args) {
- CacheLoader loader = new CacheLoader<>() {
- @Override
- @Nonnull
- public String load(@Nonnull String key) {
- checkNotNull(key);
- return "null";
- }
- };
-
- Cache cache = CacheBuilder.newBuilder().recordStats().expireAfterWrite(300, TimeUnit.MILLISECONDS).build();
-
- cache.put("2", "2");
- cache.cleanUp();
- cache.invalidateAll();
- String ifPresent = cache.getIfPresent("1");
- String w2 = cache.getIfPresent("2");
- String w3 = cache.getIfPresent("3");
- System.out.println(w3);
- CacheStats stats = cache.stats();
- System.out.println(stats);
- }
}
diff --git a/src/main/resources/META-INF/additional-spring-configuration-metadata.json b/src/main/resources/META-INF/additional-spring-configuration-metadata.json
deleted file mode 100644
index b24701d..0000000
--- a/src/main/resources/META-INF/additional-spring-configuration-metadata.json
+++ /dev/null
@@ -1,13 +0,0 @@
-{
- "properties": [
- {
- "name": "user-id.admin",
- "type": "java.lang.String",
- "description": "Description for user-id.admin."
- },
- {
- "name": "user-id.common",
- "type": "java.lang.String",
- "description": "Description for user-id.common."
- }
- ] }
\ No newline at end of file
diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml
index ef6ac60..800186c 100644
--- a/src/main/resources/application.yml
+++ b/src/main/resources/application.yml
@@ -19,11 +19,13 @@ logging:
level:
com:
xjx:
- mapper : debug
+ mapper: debug
# 自定义配置
mysql:
url: 127.0.0.1:3306
user-id:
admin: 10000,20000
- common: 11111,22222
\ No newline at end of file
+ common: 11111,22222
+game-url:
+ prefix: https://s57_app1105673153_qqgame_com.7road.net
\ No newline at end of file