From daf38866721a89079c2f6b4fd4ac745623841f08 Mon Sep 17 00:00:00 2001
From: cjh <18505142974@163.com>
Date: Fri, 30 May 2025 15:06:29 +0800
Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9vlog?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
ruoyi-common/ruoyi-common-mybatis/pom.xml | 5 +
.../mybatis/core/page/TableDataInfo.java | 2 +-
.../content/config/InterceptorConfig.java | 117 -----
.../consumer/content/config/MinIOConfig.java | 3 +-
.../content/config/SpringSecurityConfig.java | 30 --
.../content/controller/RabbitMQConsumer.java | 1 +
.../controller/UserInfoController.java | 1 +
.../content/controller/VlogController.java | 5 +-
.../intercepter/PassportInterceptor.java | 3 +
.../intercepter/UserTokenInterceptor.java | 2 +
ruoyi-modules/ruoyi-content/pom.xml | 15 +
.../domain/base/BaseInfoProperties.java | 1 +
.../domain/exceptions/GraceException.java | 3 +-
.../exceptions/GraceExceptionHandler.java | 5 +-
.../domain/exceptions/MyCustomException.java | 3 +-
.../content/enums/UserInfoModifyType.java | 4 +-
.../com/wzj/soopin/content/idworker/Code.java | 35 --
.../wzj/soopin/content/idworker/DayCode.java | 19 -
.../com/wzj/soopin/content/idworker/Id.java | 29 --
.../wzj/soopin/content/idworker/IdWorker.java | 91 ----
.../content/idworker/InvalidSystemClock.java | 7 -
.../content/idworker/RandomCodeStrategy.java | 11 -
.../com/wzj/soopin/content/idworker/Sid.java | 64 ---
.../com/wzj/soopin/content/idworker/Test.java | 12 -
.../content/idworker/WorkerIdStrategy.java | 9 -
.../strategy/DayPrefixRandomCodeStrategy.java | 41 --
.../strategy/DefaultRandomCodeStrategy.java | 197 --------
.../strategy/DefaultWorkerIdStrategy.java | 205 --------
.../content/idworker/strategy/FileLock.java | 132 ------
.../content/idworker/utils/IPv4Utils.java | 1 -
.../content/idworker/utils/Serializes.java | 118 -----
.../content/mapper/mapper/CommentMapper.java | 3 +
.../content/mapper/mapper/FansMapper.java | 6 +
.../content/mapper/mapper/UsersMapper.java | 10 +-
.../content/mapper/mapper/VlogMapper.java | 50 +-
.../mapper/repository/MessageRepository.java | 1 +
.../content/service/CommentService.java | 10 +-
.../soopin/content/service/FansService.java | 15 +-
.../soopin/content/service/MsgService.java | 2 +-
.../soopin/content/service/VlogService.java | 7 +-
.../service/impl/CommentServiceImpl.java | 5 +
.../content/service/impl/FansServiceImpl.java | 31 +-
.../content/service/impl/MsgServiceImpl.java | 14 +-
.../service/impl/UserMemberServiceImpl.java | 5 +-
.../content/service/impl/UserServiceImpl.java | 61 +--
.../content/service/impl/VlogServiceImpl.java | 33 +-
.../wzj/soopin/content/utils/CommonUtil.java | 436 ++++++++++++++++++
.../utils/DefaultRandomCodeStrategy.java | 1 -
.../utils/DefaultWorkerIdStrategy.java | 5 +-
.../content/{idworker => }/utils/HttpReq.java | 2 +-
.../content/{idworker => }/utils/Ip.java | 2 +-
.../wzj/soopin/content/utils/MinIOUtils.java | 432 +++++++++++++++++
.../soopin/content/utils/PagedGridResult.java | 62 +--
.../content/{idworker => }/utils/Props.java | 5 +-
.../com/wzj/soopin/content/utils/QcCloud.java | 60 +++
.../content/utils/RestTemplateUtil.java | 211 +++++++++
.../com/wzj/soopin/content/utils/Sid.java | 2 +-
.../content/{idworker => }/utils/Utils.java | 2 +-
58 files changed, 1382 insertions(+), 1262 deletions(-)
delete mode 100644 ruoyi-front/ruoyi-consumer/src/main/java/com/wzj/soopin/consumer/content/config/InterceptorConfig.java
delete mode 100644 ruoyi-front/ruoyi-consumer/src/main/java/com/wzj/soopin/consumer/content/config/SpringSecurityConfig.java
delete mode 100644 ruoyi-modules/ruoyi-content/src/main/java/com/wzj/soopin/content/idworker/Code.java
delete mode 100644 ruoyi-modules/ruoyi-content/src/main/java/com/wzj/soopin/content/idworker/DayCode.java
delete mode 100644 ruoyi-modules/ruoyi-content/src/main/java/com/wzj/soopin/content/idworker/Id.java
delete mode 100644 ruoyi-modules/ruoyi-content/src/main/java/com/wzj/soopin/content/idworker/IdWorker.java
delete mode 100644 ruoyi-modules/ruoyi-content/src/main/java/com/wzj/soopin/content/idworker/InvalidSystemClock.java
delete mode 100644 ruoyi-modules/ruoyi-content/src/main/java/com/wzj/soopin/content/idworker/RandomCodeStrategy.java
delete mode 100644 ruoyi-modules/ruoyi-content/src/main/java/com/wzj/soopin/content/idworker/Sid.java
delete mode 100644 ruoyi-modules/ruoyi-content/src/main/java/com/wzj/soopin/content/idworker/Test.java
delete mode 100644 ruoyi-modules/ruoyi-content/src/main/java/com/wzj/soopin/content/idworker/WorkerIdStrategy.java
delete mode 100644 ruoyi-modules/ruoyi-content/src/main/java/com/wzj/soopin/content/idworker/strategy/DayPrefixRandomCodeStrategy.java
delete mode 100644 ruoyi-modules/ruoyi-content/src/main/java/com/wzj/soopin/content/idworker/strategy/DefaultRandomCodeStrategy.java
delete mode 100644 ruoyi-modules/ruoyi-content/src/main/java/com/wzj/soopin/content/idworker/strategy/DefaultWorkerIdStrategy.java
delete mode 100644 ruoyi-modules/ruoyi-content/src/main/java/com/wzj/soopin/content/idworker/strategy/FileLock.java
delete mode 100644 ruoyi-modules/ruoyi-content/src/main/java/com/wzj/soopin/content/idworker/utils/IPv4Utils.java
delete mode 100644 ruoyi-modules/ruoyi-content/src/main/java/com/wzj/soopin/content/idworker/utils/Serializes.java
create mode 100644 ruoyi-modules/ruoyi-content/src/main/java/com/wzj/soopin/content/utils/CommonUtil.java
rename ruoyi-modules/ruoyi-content/src/main/java/com/wzj/soopin/content/{idworker => }/utils/HttpReq.java (98%)
rename ruoyi-modules/ruoyi-content/src/main/java/com/wzj/soopin/content/{idworker => }/utils/Ip.java (96%)
create mode 100644 ruoyi-modules/ruoyi-content/src/main/java/com/wzj/soopin/content/utils/MinIOUtils.java
rename ruoyi-modules/ruoyi-content/src/main/java/com/wzj/soopin/content/{idworker => }/utils/Props.java (95%)
create mode 100644 ruoyi-modules/ruoyi-content/src/main/java/com/wzj/soopin/content/utils/QcCloud.java
create mode 100644 ruoyi-modules/ruoyi-content/src/main/java/com/wzj/soopin/content/utils/RestTemplateUtil.java
rename ruoyi-modules/ruoyi-content/src/main/java/com/wzj/soopin/content/{idworker => }/utils/Utils.java (98%)
diff --git a/ruoyi-common/ruoyi-common-mybatis/pom.xml b/ruoyi-common/ruoyi-common-mybatis/pom.xml
index d79ba284a..9a4387316 100644
--- a/ruoyi-common/ruoyi-common-mybatis/pom.xml
+++ b/ruoyi-common/ruoyi-common-mybatis/pom.xml
@@ -47,6 +47,11 @@
p6spy
p6spy
+
+ org.dromara.warm
+ warm-flow-core
+ 1.6.8
+
diff --git a/ruoyi-common/ruoyi-common-mybatis/src/main/java/org/dromara/common/mybatis/core/page/TableDataInfo.java b/ruoyi-common/ruoyi-common-mybatis/src/main/java/org/dromara/common/mybatis/core/page/TableDataInfo.java
index 370f47995..2c3a32a29 100644
--- a/ruoyi-common/ruoyi-common-mybatis/src/main/java/org/dromara/common/mybatis/core/page/TableDataInfo.java
+++ b/ruoyi-common/ruoyi-common-mybatis/src/main/java/org/dromara/common/mybatis/core/page/TableDataInfo.java
@@ -5,7 +5,7 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
import lombok.Data;
import lombok.NoArgsConstructor;
-import java.io.Serial;
+
import java.io.Serializable;
import java.util.List;
diff --git a/ruoyi-front/ruoyi-consumer/src/main/java/com/wzj/soopin/consumer/content/config/InterceptorConfig.java b/ruoyi-front/ruoyi-consumer/src/main/java/com/wzj/soopin/consumer/content/config/InterceptorConfig.java
deleted file mode 100644
index 2498b7c32..000000000
--- a/ruoyi-front/ruoyi-consumer/src/main/java/com/wzj/soopin/consumer/content/config/InterceptorConfig.java
+++ /dev/null
@@ -1,117 +0,0 @@
-package com.wzj.soopin.consumer.content.config;
-
-import com.imooc.intercepter.PassportInterceptor;
-import com.imooc.intercepter.UserTokenInterceptor;
-import org.apache.http.conn.ssl.NoopHostnameVerifier;
-import org.apache.http.conn.ssl.SSLConnectionSocketFactory;
-import org.apache.http.impl.client.CloseableHttpClient;
-import org.apache.http.impl.client.HttpClients;
-import org.apache.http.impl.conn.PoolingHttpClientConnectionManager;
-import org.apache.http.ssl.SSLContexts;
-import org.springframework.context.annotation.Bean;
-import org.springframework.context.annotation.Configuration;
-import org.springframework.context.annotation.Primary;
-import org.springframework.core.Ordered;
-import org.springframework.core.annotation.Order;
-import org.springframework.http.HttpMethod;
-import org.springframework.http.client.HttpComponentsClientHttpRequestFactory;
-import org.springframework.web.client.RestTemplate;
-import org.springframework.web.cors.CorsConfiguration;
-import org.springframework.web.cors.UrlBasedCorsConfigurationSource;
-import org.springframework.web.filter.CorsFilter;
-import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
-import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
-
-import javax.net.ssl.SSLContext;
-import java.security.KeyManagementException;
-import java.security.KeyStoreException;
-import java.security.NoSuchAlgorithmException;
-import java.util.Arrays;
-
-@Configuration
-public class InterceptorConfig implements WebMvcConfigurer {
-
- private String[] CORS_HTTP_METHODS = { HttpMethod.HEAD.name(), HttpMethod.GET.name(), HttpMethod.POST.name(),
- HttpMethod.PUT.name(), HttpMethod.DELETE.name(), HttpMethod.OPTIONS.name(), HttpMethod.PATCH.name() };
-
- private static final long CORS_MAX_AGE = 30 * 24 * 60 * 60;
-
- @Bean
- public PassportInterceptor passportInterceptor() {
- return new PassportInterceptor();
- }
-
- @Bean
- public UserTokenInterceptor userTokenInterceptor() {
- return new UserTokenInterceptor();
- }
-
- @Override
- public void addInterceptors(InterceptorRegistry registry) {
- registry.addInterceptor(passportInterceptor()).addPathPatterns("/passport/getSMSCode");
-
- registry.addInterceptor(userTokenInterceptor()).addPathPatterns("/userInfo/modifyUserInfo")
- .addPathPatterns("/userInfo/modifyImage");
- }
-
- @Order(Ordered.HIGHEST_PRECEDENCE)
- @Bean
- public CorsFilter corsFilter() {
- // 添加跨域配置信息
- CorsConfiguration config = new CorsConfiguration();
- // 设置访问源地址
- config.addAllowedOriginPattern("*");
- // 设置访问源请求头
- config.addAllowedHeader("*");
- // 设置是否发送Cookie信息
- config.setAllowCredentials(true);
- // 设置访问源请求方法
- Arrays.stream(CORS_HTTP_METHODS).forEach(method -> config.addAllowedMethod(method));
- // 设置请求最大有效时长
- config.setMaxAge(CORS_MAX_AGE);
- UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
- // 配置跨域
- source.registerCorsConfiguration("/**", config);
- return new CorsFilter(source);
- }
-
- @Primary
- @Bean
- public RestTemplate restTemplate() {
- PoolingHttpClientConnectionManager connManager = new PoolingHttpClientConnectionManager();
- // 连接池最大连接数
- connManager.setMaxTotal(1000);
- // 每个主机的并发
- connManager.setDefaultMaxPerRoute(500);
-
- CloseableHttpClient httpClient = HttpClients.custom()//
- .setConnectionManager(connManager)// 设置HTTP连接管理器
- .build();
- return buildRestTemplate(httpClient);
- }
-
- @Bean
- public RestTemplate restTemplateIgnoreSSL()
- throws KeyManagementException, NoSuchAlgorithmException, KeyStoreException {
- SSLContext sslContext = SSLContexts.custom().loadTrustMaterial(null, (chain, authType) -> true).build();
- SSLConnectionSocketFactory sslSocketFactory = new SSLConnectionSocketFactory(sslContext,
- NoopHostnameVerifier.INSTANCE);
-
- CloseableHttpClient httpClient = HttpClients.custom()//
- .setSSLSocketFactory(sslSocketFactory)//
- .build();
- return buildRestTemplate(httpClient);
- }
-
- private RestTemplate buildRestTemplate(CloseableHttpClient httpClient) {
- HttpComponentsClientHttpRequestFactory httpRequestFactory = new HttpComponentsClientHttpRequestFactory(
- httpClient);
- // 获取链接超时时间
- httpRequestFactory.setConnectionRequestTimeout(3000);
- // 指客户端和服务器建立连接的timeout
- httpRequestFactory.setConnectTimeout(3000);
- // 读取数据的超时时间
- httpRequestFactory.setReadTimeout(120000);
- return new RestTemplate(httpRequestFactory);
- }
-}
diff --git a/ruoyi-front/ruoyi-consumer/src/main/java/com/wzj/soopin/consumer/content/config/MinIOConfig.java b/ruoyi-front/ruoyi-consumer/src/main/java/com/wzj/soopin/consumer/content/config/MinIOConfig.java
index 91340f0ef..8d853d74d 100644
--- a/ruoyi-front/ruoyi-consumer/src/main/java/com/wzj/soopin/consumer/content/config/MinIOConfig.java
+++ b/ruoyi-front/ruoyi-consumer/src/main/java/com/wzj/soopin/consumer/content/config/MinIOConfig.java
@@ -1,6 +1,7 @@
package com.wzj.soopin.consumer.content.config;
-import com.imooc.utils.MinIOUtils;
+
+import com.wzj.soopin.content.utils.MinIOUtils;
import lombok.Data;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
diff --git a/ruoyi-front/ruoyi-consumer/src/main/java/com/wzj/soopin/consumer/content/config/SpringSecurityConfig.java b/ruoyi-front/ruoyi-consumer/src/main/java/com/wzj/soopin/consumer/content/config/SpringSecurityConfig.java
deleted file mode 100644
index 10273d059..000000000
--- a/ruoyi-front/ruoyi-consumer/src/main/java/com/wzj/soopin/consumer/content/config/SpringSecurityConfig.java
+++ /dev/null
@@ -1,30 +0,0 @@
-package com.wzj.soopin.consumer.content.config;
-
-import org.springframework.context.annotation.Bean;
-import org.springframework.context.annotation.Configuration;
-import org.springframework.security.config.annotation.web.builders.HttpSecurity;
-import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;
-import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
-import org.springframework.security.crypto.password.PasswordEncoder;
-
-/**
- * spring security配置类.
- *
- * @author lzc
- * @version 1.0
- */
-@Configuration
-public class SpringSecurityConfig extends WebSecurityConfigurerAdapter {
-
- @Override
- protected void configure(HttpSecurity http) throws Exception {
- http.authorizeRequests().antMatchers("/**").permitAll() // 所有请求都可以访问
- .and().csrf().disable() // 跨域请求关闭
- .headers().frameOptions().disable(); // 资源下载权限关闭
- }
-
- @Bean
- PasswordEncoder passwordEncoder() {
- return new BCryptPasswordEncoder();
- }
-}
diff --git a/ruoyi-front/ruoyi-consumer/src/main/java/com/wzj/soopin/consumer/content/controller/RabbitMQConsumer.java b/ruoyi-front/ruoyi-consumer/src/main/java/com/wzj/soopin/consumer/content/controller/RabbitMQConsumer.java
index 52402edd1..566462fef 100644
--- a/ruoyi-front/ruoyi-consumer/src/main/java/com/wzj/soopin/consumer/content/controller/RabbitMQConsumer.java
+++ b/ruoyi-front/ruoyi-consumer/src/main/java/com/wzj/soopin/consumer/content/controller/RabbitMQConsumer.java
@@ -4,6 +4,7 @@ package com.wzj.soopin.consumer.content.controller;
import com.wzj.soopin.content.domain.base.RabbitMQConfig;
import com.wzj.soopin.content.domain.exceptions.GraceException;
import com.wzj.soopin.content.domain.mo.MessageMO;
+import com.wzj.soopin.content.domain.result.ResponseStatusEnum;
import com.wzj.soopin.content.enums.MessageEnum;
import com.wzj.soopin.content.service.MsgService;
import com.wzj.soopin.content.utils.JsonUtils;
diff --git a/ruoyi-front/ruoyi-consumer/src/main/java/com/wzj/soopin/consumer/content/controller/UserInfoController.java b/ruoyi-front/ruoyi-consumer/src/main/java/com/wzj/soopin/consumer/content/controller/UserInfoController.java
index 00364ae24..317d9554f 100644
--- a/ruoyi-front/ruoyi-consumer/src/main/java/com/wzj/soopin/consumer/content/controller/UserInfoController.java
+++ b/ruoyi-front/ruoyi-consumer/src/main/java/com/wzj/soopin/consumer/content/controller/UserInfoController.java
@@ -11,6 +11,7 @@ import com.wzj.soopin.content.enums.UserInfoModifyType;
import com.wzj.soopin.content.result.GraceJSONResult;
import com.wzj.soopin.content.result.ResponseStatusEnum;
import com.wzj.soopin.content.service.UserService;
+import com.wzj.soopin.content.utils.MinIOUtils;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
diff --git a/ruoyi-front/ruoyi-consumer/src/main/java/com/wzj/soopin/consumer/content/controller/VlogController.java b/ruoyi-front/ruoyi-consumer/src/main/java/com/wzj/soopin/consumer/content/controller/VlogController.java
index b30f450aa..2f817ef6f 100644
--- a/ruoyi-front/ruoyi-consumer/src/main/java/com/wzj/soopin/consumer/content/controller/VlogController.java
+++ b/ruoyi-front/ruoyi-consumer/src/main/java/com/wzj/soopin/consumer/content/controller/VlogController.java
@@ -5,8 +5,11 @@ package com.wzj.soopin.consumer.content.controller;
import com.wzj.soopin.consumer.content.config.MinIOConfig;
import com.wzj.soopin.content.domain.base.BaseInfoProperties;
import com.wzj.soopin.content.domain.bo.VlogBO;
+import com.wzj.soopin.content.enums.YesOrNo;
import com.wzj.soopin.content.result.GraceJSONResult;
import com.wzj.soopin.content.service.VlogService;
+import com.wzj.soopin.content.utils.PagedGridResult;
+import com.wzj.soopin.content.utils.QcCloud;
import io.swagger.annotations.Api;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
@@ -22,7 +25,7 @@ import java.util.Map;
@Api(tags = "VlogController 短视频相关业务功能的接口")
@RequestMapping("vlog")
@RestController
-@RefreshScope
+
public class VlogController extends BaseInfoProperties {
@Autowired
private VlogService vlogService;
diff --git a/ruoyi-front/ruoyi-consumer/src/main/java/com/wzj/soopin/consumer/content/intercepter/PassportInterceptor.java b/ruoyi-front/ruoyi-consumer/src/main/java/com/wzj/soopin/consumer/content/intercepter/PassportInterceptor.java
index a6446b1c4..e37c05df8 100644
--- a/ruoyi-front/ruoyi-consumer/src/main/java/com/wzj/soopin/consumer/content/intercepter/PassportInterceptor.java
+++ b/ruoyi-front/ruoyi-consumer/src/main/java/com/wzj/soopin/consumer/content/intercepter/PassportInterceptor.java
@@ -2,6 +2,9 @@ package com.wzj.soopin.consumer.content.intercepter;
import com.wzj.soopin.content.domain.base.BaseInfoProperties;
+import com.wzj.soopin.content.domain.exceptions.GraceException;
+import com.wzj.soopin.content.domain.result.ResponseStatusEnum;
+import com.wzj.soopin.content.utils.IPUtil;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
import lombok.extern.slf4j.Slf4j;
diff --git a/ruoyi-front/ruoyi-consumer/src/main/java/com/wzj/soopin/consumer/content/intercepter/UserTokenInterceptor.java b/ruoyi-front/ruoyi-consumer/src/main/java/com/wzj/soopin/consumer/content/intercepter/UserTokenInterceptor.java
index c195b5b5b..34e29ad36 100644
--- a/ruoyi-front/ruoyi-consumer/src/main/java/com/wzj/soopin/consumer/content/intercepter/UserTokenInterceptor.java
+++ b/ruoyi-front/ruoyi-consumer/src/main/java/com/wzj/soopin/consumer/content/intercepter/UserTokenInterceptor.java
@@ -2,6 +2,8 @@ package com.wzj.soopin.consumer.content.intercepter;
import com.wzj.soopin.content.domain.base.BaseInfoProperties;
+import com.wzj.soopin.content.domain.exceptions.GraceException;
+import com.wzj.soopin.content.domain.result.ResponseStatusEnum;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
import lombok.extern.slf4j.Slf4j;
diff --git a/ruoyi-modules/ruoyi-content/pom.xml b/ruoyi-modules/ruoyi-content/pom.xml
index e73cf50d0..01221f887 100644
--- a/ruoyi-modules/ruoyi-content/pom.xml
+++ b/ruoyi-modules/ruoyi-content/pom.xml
@@ -14,6 +14,21 @@
+
+ net.sf.json-lib
+ json-lib
+ 2.4
+ jdk15
+
+
+ org.springframework.boot
+ spring-boot-starter-data-mongodb
+
+
+ io.minio
+ minio
+ 8.2.1
+
org.springframework.boot
spring-boot-starter-amqp
diff --git a/ruoyi-modules/ruoyi-content/src/main/java/com/wzj/soopin/content/domain/base/BaseInfoProperties.java b/ruoyi-modules/ruoyi-content/src/main/java/com/wzj/soopin/content/domain/base/BaseInfoProperties.java
index d355e136f..77b7e6009 100644
--- a/ruoyi-modules/ruoyi-content/src/main/java/com/wzj/soopin/content/domain/base/BaseInfoProperties.java
+++ b/ruoyi-modules/ruoyi-content/src/main/java/com/wzj/soopin/content/domain/base/BaseInfoProperties.java
@@ -4,6 +4,7 @@ package com.wzj.soopin.content.domain.base;
import com.github.pagehelper.PageInfo;
+
import com.wzj.soopin.content.utils.PagedGridResult;
import com.wzj.soopin.content.utils.RedisOperator;
import org.springframework.beans.factory.annotation.Autowired;
diff --git a/ruoyi-modules/ruoyi-content/src/main/java/com/wzj/soopin/content/domain/exceptions/GraceException.java b/ruoyi-modules/ruoyi-content/src/main/java/com/wzj/soopin/content/domain/exceptions/GraceException.java
index 0d3e52bf2..a403cbadb 100644
--- a/ruoyi-modules/ruoyi-content/src/main/java/com/wzj/soopin/content/domain/exceptions/GraceException.java
+++ b/ruoyi-modules/ruoyi-content/src/main/java/com/wzj/soopin/content/domain/exceptions/GraceException.java
@@ -1,6 +1,7 @@
package com.wzj.soopin.content.domain.exceptions;
-import com.imooc.grace.result.ResponseStatusEnum;
+
+import com.wzj.soopin.content.domain.result.ResponseStatusEnum;
/**
* 优雅的处理异常,统一封装
diff --git a/ruoyi-modules/ruoyi-content/src/main/java/com/wzj/soopin/content/domain/exceptions/GraceExceptionHandler.java b/ruoyi-modules/ruoyi-content/src/main/java/com/wzj/soopin/content/domain/exceptions/GraceExceptionHandler.java
index 735a04d93..2fdfaea3a 100644
--- a/ruoyi-modules/ruoyi-content/src/main/java/com/wzj/soopin/content/domain/exceptions/GraceExceptionHandler.java
+++ b/ruoyi-modules/ruoyi-content/src/main/java/com/wzj/soopin/content/domain/exceptions/GraceExceptionHandler.java
@@ -1,7 +1,8 @@
package com.wzj.soopin.content.domain.exceptions;
-import com.imooc.grace.result.GraceJSONResult;
-import com.imooc.grace.result.ResponseStatusEnum;
+
+import com.wzj.soopin.content.domain.result.GraceJSONResult;
+import com.wzj.soopin.content.domain.result.ResponseStatusEnum;
import org.springframework.validation.BindingResult;
import org.springframework.validation.FieldError;
import org.springframework.web.bind.MethodArgumentNotValidException;
diff --git a/ruoyi-modules/ruoyi-content/src/main/java/com/wzj/soopin/content/domain/exceptions/MyCustomException.java b/ruoyi-modules/ruoyi-content/src/main/java/com/wzj/soopin/content/domain/exceptions/MyCustomException.java
index c8d9ac898..021980d9e 100644
--- a/ruoyi-modules/ruoyi-content/src/main/java/com/wzj/soopin/content/domain/exceptions/MyCustomException.java
+++ b/ruoyi-modules/ruoyi-content/src/main/java/com/wzj/soopin/content/domain/exceptions/MyCustomException.java
@@ -1,6 +1,7 @@
package com.wzj.soopin.content.domain.exceptions;
-import com.imooc.grace.result.ResponseStatusEnum;
+
+import com.wzj.soopin.content.domain.result.ResponseStatusEnum;
/**
* 自定义异常
diff --git a/ruoyi-modules/ruoyi-content/src/main/java/com/wzj/soopin/content/enums/UserInfoModifyType.java b/ruoyi-modules/ruoyi-content/src/main/java/com/wzj/soopin/content/enums/UserInfoModifyType.java
index ae29d469a..454f105b0 100644
--- a/ruoyi-modules/ruoyi-content/src/main/java/com/wzj/soopin/content/enums/UserInfoModifyType.java
+++ b/ruoyi-modules/ruoyi-content/src/main/java/com/wzj/soopin/content/enums/UserInfoModifyType.java
@@ -1,7 +1,7 @@
package com.wzj.soopin.content.enums;
-import com.imooc.exceptions.GraceException;
-import com.imooc.grace.result.ResponseStatusEnum;
+import com.wzj.soopin.content.domain.exceptions.GraceException;
+import com.wzj.soopin.content.domain.result.ResponseStatusEnum;
/**
* @Desc: 修改用户信息类型 枚举
diff --git a/ruoyi-modules/ruoyi-content/src/main/java/com/wzj/soopin/content/idworker/Code.java b/ruoyi-modules/ruoyi-content/src/main/java/com/wzj/soopin/content/idworker/Code.java
deleted file mode 100644
index 13cc01c81..000000000
--- a/ruoyi-modules/ruoyi-content/src/main/java/com/wzj/soopin/content/idworker/Code.java
+++ /dev/null
@@ -1,35 +0,0 @@
-package com.wzj.soopin.content.idworker;
-
-import org.n3r.idworker.strategy.DefaultRandomCodeStrategy;
-
-public class Code {
- private static RandomCodeStrategy strategy;
-
- static {
- RandomCodeStrategy strategy = new DefaultRandomCodeStrategy();
- strategy.init();
- configure(strategy);
- }
-
- public static synchronized void configure(RandomCodeStrategy custom) {
- if (strategy == custom) return;
- if (strategy != null) strategy.release();
-
- strategy = custom;
- }
-
- /**
- * Next Unique code.
- * The max length will be 1024-Integer.MAX-Integer.MAX(2147483647) which has 4+10+10+2*1=26 characters.
- * The min length will be 0-0.
- *
- * @return unique string code.
- */
- public static synchronized String next() {
- long workerId = Id.getWorkerId();
- int prefix = strategy.prefix();
- int next = strategy.next();
-
- return String.format("%d-%03d-%06d", workerId, prefix, next);
- }
-}
diff --git a/ruoyi-modules/ruoyi-content/src/main/java/com/wzj/soopin/content/idworker/DayCode.java b/ruoyi-modules/ruoyi-content/src/main/java/com/wzj/soopin/content/idworker/DayCode.java
deleted file mode 100644
index f9170b651..000000000
--- a/ruoyi-modules/ruoyi-content/src/main/java/com/wzj/soopin/content/idworker/DayCode.java
+++ /dev/null
@@ -1,19 +0,0 @@
-package com.wzj.soopin.content.idworker;
-
-import org.n3r.idworker.strategy.DayPrefixRandomCodeStrategy;
-
-public class DayCode {
- static RandomCodeStrategy strategy;
-
- static {
- DayPrefixRandomCodeStrategy dayPrefixCodeStrategy = new DayPrefixRandomCodeStrategy("yyMM");
- dayPrefixCodeStrategy.setMinRandomSize(7);
- dayPrefixCodeStrategy.setMaxRandomSize(7);
- strategy = dayPrefixCodeStrategy;
- strategy.init();
- }
-
- public static synchronized String next() {
- return String.format("%d-%04d-%07d", Id.getWorkerId(), strategy.prefix(), strategy.next());
- }
-}
diff --git a/ruoyi-modules/ruoyi-content/src/main/java/com/wzj/soopin/content/idworker/Id.java b/ruoyi-modules/ruoyi-content/src/main/java/com/wzj/soopin/content/idworker/Id.java
deleted file mode 100644
index 9368a15c0..000000000
--- a/ruoyi-modules/ruoyi-content/src/main/java/com/wzj/soopin/content/idworker/Id.java
+++ /dev/null
@@ -1,29 +0,0 @@
-package com.wzj.soopin.content.idworker;
-
-import org.n3r.idworker.strategy.DefaultWorkerIdStrategy;
-
-public class Id {
- private static WorkerIdStrategy workerIdStrategy;
- private static IdWorker idWorker;
-
- static {
- configure(DefaultWorkerIdStrategy.instance);
- }
-
- public static synchronized void configure(WorkerIdStrategy custom) {
- if (workerIdStrategy == custom) return;
-
- if (workerIdStrategy != null) workerIdStrategy.release();
- workerIdStrategy = custom;
- workerIdStrategy.initialize();
- idWorker = new IdWorker(workerIdStrategy.availableWorkerId());
- }
-
- public static long next() {
- return idWorker.nextId();
- }
-
- public static long getWorkerId() {
- return idWorker.getWorkerId();
- }
-}
diff --git a/ruoyi-modules/ruoyi-content/src/main/java/com/wzj/soopin/content/idworker/IdWorker.java b/ruoyi-modules/ruoyi-content/src/main/java/com/wzj/soopin/content/idworker/IdWorker.java
deleted file mode 100644
index 235b1a314..000000000
--- a/ruoyi-modules/ruoyi-content/src/main/java/com/wzj/soopin/content/idworker/IdWorker.java
+++ /dev/null
@@ -1,91 +0,0 @@
-package com.wzj.soopin.content.idworker;
-
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import java.security.SecureRandom;
-
-public class IdWorker {
- protected long epoch = 1288834974657L;
-// protected long epoch = 1387886498127L; // 2013-12-24 20:01:38.127
-
-
- protected long workerIdBits = 10L;
- protected long maxWorkerId = -1L ^ (-1L << workerIdBits);
- protected long sequenceBits = 11L;
-
- protected long workerIdShift = sequenceBits;
- protected long timestampLeftShift = sequenceBits + workerIdBits;
- protected long sequenceMask = -1L ^ (-1L << sequenceBits);
-
- protected long lastMillis = -1L;
-
- protected final long workerId;
- protected long sequence = 0L;
- protected Logger logger = LoggerFactory.getLogger(IdWorker.class);
-
- public IdWorker(long workerId) {
- this.workerId = checkWorkerId(workerId);
-
- logger.debug("worker starting. timestamp left shift {}, worker id {}", timestampLeftShift, workerId);
- }
-
- public long getEpoch() {
- return epoch;
- }
-
- private long checkWorkerId(long workerId) {
- // sanity check for workerId
- if (workerId > maxWorkerId || workerId < 0) {
- int rand = new SecureRandom().nextInt((int) maxWorkerId + 1);
- logger.warn("worker Id can't be greater than {} or less than 0, use a random {}", maxWorkerId, rand);
- return rand;
- }
-
- return workerId;
- }
-
- public synchronized long nextId() {
- long timestamp = millisGen();
-
- if (timestamp < lastMillis) {
- logger.error("clock is moving backwards. Rejecting requests until {}.", lastMillis);
- throw new InvalidSystemClock(String.format(
- "Clock moved backwards. Refusing to generate id for {} milliseconds", lastMillis - timestamp));
- }
-
- if (lastMillis == timestamp) {
- sequence = (sequence + 1) & sequenceMask;
- if (sequence == 0)
- timestamp = tilNextMillis(lastMillis);
- } else {
- sequence = 0;
- }
-
- lastMillis = timestamp;
- long diff = timestamp - getEpoch();
- return (diff << timestampLeftShift) |
- (workerId << workerIdShift) |
- sequence;
- }
-
- protected long tilNextMillis(long lastMillis) {
- long millis = millisGen();
- while (millis <= lastMillis)
- millis = millisGen();
-
- return millis;
- }
-
- protected long millisGen() {
- return System.currentTimeMillis();
- }
-
- public long getLastMillis() {
- return lastMillis;
- }
-
- public long getWorkerId() {
- return workerId;
- }
-}
diff --git a/ruoyi-modules/ruoyi-content/src/main/java/com/wzj/soopin/content/idworker/InvalidSystemClock.java b/ruoyi-modules/ruoyi-content/src/main/java/com/wzj/soopin/content/idworker/InvalidSystemClock.java
deleted file mode 100644
index f83465a20..000000000
--- a/ruoyi-modules/ruoyi-content/src/main/java/com/wzj/soopin/content/idworker/InvalidSystemClock.java
+++ /dev/null
@@ -1,7 +0,0 @@
-package com.wzj.soopin.content.idworker;
-
-public class InvalidSystemClock extends RuntimeException {
- public InvalidSystemClock(String message) {
- super(message);
- }
-}
diff --git a/ruoyi-modules/ruoyi-content/src/main/java/com/wzj/soopin/content/idworker/RandomCodeStrategy.java b/ruoyi-modules/ruoyi-content/src/main/java/com/wzj/soopin/content/idworker/RandomCodeStrategy.java
deleted file mode 100644
index 6a25fbeb0..000000000
--- a/ruoyi-modules/ruoyi-content/src/main/java/com/wzj/soopin/content/idworker/RandomCodeStrategy.java
+++ /dev/null
@@ -1,11 +0,0 @@
-package com.wzj.soopin.content.idworker;
-
-public interface RandomCodeStrategy {
- void init();
-
- int prefix();
-
- int next();
-
- void release();
-}
diff --git a/ruoyi-modules/ruoyi-content/src/main/java/com/wzj/soopin/content/idworker/Sid.java b/ruoyi-modules/ruoyi-content/src/main/java/com/wzj/soopin/content/idworker/Sid.java
deleted file mode 100644
index de0a5329f..000000000
--- a/ruoyi-modules/ruoyi-content/src/main/java/com/wzj/soopin/content/idworker/Sid.java
+++ /dev/null
@@ -1,64 +0,0 @@
-package com.wzj.soopin.content.idworker;
-
-import org.n3r.idworker.strategy.DefaultWorkerIdStrategy;
-import org.n3r.idworker.utils.Utils;
-import org.springframework.stereotype.Component;
-
-import java.text.SimpleDateFormat;
-import java.util.Date;
-
-@Component
-public class Sid {
- private static WorkerIdStrategy workerIdStrategy;
- private static IdWorker idWorker;
-
- static {
- configure(DefaultWorkerIdStrategy.instance);
- }
-
-
- public static synchronized void configure(WorkerIdStrategy custom) {
- if (workerIdStrategy != null) {
- workerIdStrategy.release();
- }
- workerIdStrategy = custom;
- idWorker = new IdWorker(workerIdStrategy.availableWorkerId()) {
- @Override
- public long getEpoch() {
- return Utils.midnightMillis();
- }
- };
- }
-
- /**
- * 一天最大毫秒86400000,最大占用27比特
- * 27+10+11=48位 最大值281474976710655(15字),YK0XXHZ827(10字)
- * 6位(YYMMDD)+15位,共21位
- *
- * @return 固定21位数字字符串
- */
-
- public static String next() {
- long id = idWorker.nextId();
- String yyMMdd = new SimpleDateFormat("yyMMdd").format(new Date());
- return yyMMdd + String.format("%014d", id);
- }
-
-
- /**
- * 返回固定16位的字母数字混编的字符串。
- */
- public String nextShort() {
- long id = idWorker.nextId();
- String yyMMdd = new SimpleDateFormat("yyMMdd").format(new Date());
- return yyMMdd + Utils.padLeft(Utils.encode(id), 10, '0');
- }
-
- public static void main(String[] args) {
- String aa = new Sid().nextShort();
- String bb = new Sid().next();
-
- System.out.println(aa);
- System.out.println(bb);
- }
-}
diff --git a/ruoyi-modules/ruoyi-content/src/main/java/com/wzj/soopin/content/idworker/Test.java b/ruoyi-modules/ruoyi-content/src/main/java/com/wzj/soopin/content/idworker/Test.java
deleted file mode 100644
index cd6f73523..000000000
--- a/ruoyi-modules/ruoyi-content/src/main/java/com/wzj/soopin/content/idworker/Test.java
+++ /dev/null
@@ -1,12 +0,0 @@
-package com.wzj.soopin.content.idworker;
-
-public class Test {
-
- public static void main(String[] args) {
-
- for (int i = 0 ; i < 1000 ; i ++) {
-// System.out.println(Sid.nextShort());
- }
- }
-
-}
diff --git a/ruoyi-modules/ruoyi-content/src/main/java/com/wzj/soopin/content/idworker/WorkerIdStrategy.java b/ruoyi-modules/ruoyi-content/src/main/java/com/wzj/soopin/content/idworker/WorkerIdStrategy.java
deleted file mode 100644
index 6bd66ff3b..000000000
--- a/ruoyi-modules/ruoyi-content/src/main/java/com/wzj/soopin/content/idworker/WorkerIdStrategy.java
+++ /dev/null
@@ -1,9 +0,0 @@
-package com.wzj.soopin.content.idworker;
-
-public interface WorkerIdStrategy {
- void initialize();
-
- long availableWorkerId();
-
- void release();
-}
diff --git a/ruoyi-modules/ruoyi-content/src/main/java/com/wzj/soopin/content/idworker/strategy/DayPrefixRandomCodeStrategy.java b/ruoyi-modules/ruoyi-content/src/main/java/com/wzj/soopin/content/idworker/strategy/DayPrefixRandomCodeStrategy.java
deleted file mode 100644
index 7f1981afe..000000000
--- a/ruoyi-modules/ruoyi-content/src/main/java/com/wzj/soopin/content/idworker/strategy/DayPrefixRandomCodeStrategy.java
+++ /dev/null
@@ -1,41 +0,0 @@
-package com.wzj.soopin.content.idworker.strategy;
-
-import java.text.SimpleDateFormat;
-import java.util.Date;
-
-public class DayPrefixRandomCodeStrategy extends DefaultRandomCodeStrategy {
- private final String dayFormat;
- private String lastDay;
-
- public DayPrefixRandomCodeStrategy(String dayFormat) {
- this.dayFormat = dayFormat;
- }
-
- @Override
- public void init() {
- String day = createDate();
- if (day.equals(lastDay))
- throw new RuntimeException("init failed for day unrolled");
-
- lastDay = day;
-
- availableCodes.clear();
- release();
-
- prefixIndex = Integer.parseInt(lastDay);
- if (tryUsePrefix()) return;
-
- throw new RuntimeException("prefix is not available " + prefixIndex);
- }
-
- private String createDate() {
- return new SimpleDateFormat(dayFormat).format(new Date());
- }
-
- @Override
- public int next() {
- if (!lastDay.equals(createDate())) init();
-
- return super.next();
- }
-}
diff --git a/ruoyi-modules/ruoyi-content/src/main/java/com/wzj/soopin/content/idworker/strategy/DefaultRandomCodeStrategy.java b/ruoyi-modules/ruoyi-content/src/main/java/com/wzj/soopin/content/idworker/strategy/DefaultRandomCodeStrategy.java
deleted file mode 100644
index f903942cb..000000000
--- a/ruoyi-modules/ruoyi-content/src/main/java/com/wzj/soopin/content/idworker/strategy/DefaultRandomCodeStrategy.java
+++ /dev/null
@@ -1,197 +0,0 @@
-package com.wzj.soopin.content.idworker.strategy;
-
-import org.n3r.idworker.Id;
-import org.n3r.idworker.RandomCodeStrategy;
-import org.n3r.idworker.utils.Utils;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import java.io.File;
-import java.io.IOException;
-import java.security.SecureRandom;
-import java.util.ArrayDeque;
-import java.util.BitSet;
-import java.util.Queue;
-
-public class DefaultRandomCodeStrategy implements RandomCodeStrategy {
- public static final int MAX_BITS = 1000000;
-
- Logger log = LoggerFactory.getLogger(DefaultRandomCodeStrategy.class);
-
- File idWorkerHome = Utils.createIdWorkerHome();
- volatile FileLock fileLock;
- BitSet codesFilter;
-
- int prefixIndex = -1;
- File codePrefixIndex;
-
- int minRandomSize = 6;
- int maxRandomSize = 6;
-
- public DefaultRandomCodeStrategy() {
- destroyFileLockWhenShutdown();
- }
-
- @Override
- public void init() {
- release();
-
- while (++prefixIndex < 1000) {
- if (tryUsePrefix()) return;
- }
-
- throw new RuntimeException("all prefixes are used up, the world maybe ends!");
- }
-
- public DefaultRandomCodeStrategy setMinRandomSize(int minRandomSize) {
- this.minRandomSize = minRandomSize;
- return this;
- }
-
- public DefaultRandomCodeStrategy setMaxRandomSize(int maxRandomSize) {
- this.maxRandomSize = maxRandomSize;
- return this;
- }
-
- protected boolean tryUsePrefix() {
- codePrefixIndex = new File(idWorkerHome, Id.getWorkerId() + ".code.prefix." + prefixIndex);
-
- if (!createPrefixIndexFile()) return false;
- if (!createFileLock()) return false;
- if (!createBloomFilter()) return false;
-
- log.info("get available prefix index file {}", codePrefixIndex);
-
- return true;
- }
-
- private boolean createFileLock() {
- if (fileLock != null) fileLock.destroy();
- fileLock = new FileLock(codePrefixIndex);
- return fileLock.tryLock();
- }
-
- private boolean createBloomFilter() {
- codesFilter = fileLock.readObject();
- if (codesFilter == null) {
- log.info("create new bloom filter");
- codesFilter = new BitSet(MAX_BITS); // 2^24
- } else {
- int size = codesFilter.cardinality();
- if (size >= MAX_BITS) {
- log.warn("bloom filter with prefix file {} is already full", codePrefixIndex);
- return false;
- }
- log.info("recreate bloom filter with cardinality {}", size);
- }
-
- return true;
- }
-
- private void destroyFileLockWhenShutdown() {
- Runtime.getRuntime().addShutdownHook(new Thread() {
- @Override
- public void run() {
- release();
- }
- });
- }
-
- private boolean createPrefixIndexFile() {
- try {
- codePrefixIndex.createNewFile();
- return codePrefixIndex.exists();
- } catch (IOException e) {
- e.printStackTrace();
- log.warn("create file {} error {}", codePrefixIndex, e.getMessage());
- }
- return false;
- }
-
- @Override
- public int prefix() {
- return prefixIndex;
- }
-
- static final int CACHE_CODES_NUM = 1000;
-
- SecureRandom secureRandom = new SecureRandom();
- Queue availableCodes = new ArrayDeque(CACHE_CODES_NUM);
-
- @Override
- public int next() {
- if (availableCodes.isEmpty()) generate();
-
- return availableCodes.poll();
- }
-
- @Override
- public synchronized void release() {
- if (fileLock != null) {
- fileLock.writeObject(codesFilter);
- fileLock.destroy();
- fileLock = null;
- }
- }
-
- private void generate() {
- for (int i = 0; i < CACHE_CODES_NUM; ++i)
- availableCodes.add(generateOne());
-
- fileLock.writeObject(codesFilter);
- }
-
- private int generateOne() {
- while (true) {
- int code = secureRandom.nextInt(max(maxRandomSize));
- boolean existed = contains(code);
-
- code = !existed ? add(code) : tryFindAvailableCode(code);
- if (code >= 0) return code;
-
- init();
- }
- }
-
- private int tryFindAvailableCode(int code) {
- int next = codesFilter.nextClearBit(code);
- if (next != -1 && next < max(maxRandomSize)) return add(next);
-
- next = codesFilter.previousClearBit(code);
- if (next != -1) return add(next);
-
- return -1;
- }
-
- private int add(int code) {
- codesFilter.set(code);
- return code;
- }
-
- private boolean contains(int code) {
- return codesFilter.get(code);
- }
-
-
- private int max(int size) {
- switch (size) {
- case 1: // fall through
- case 2: // fall through
- case 3: // fall through
- case 4:
- return 10000;
- case 5:
- return 100000;
- case 6:
- return 1000000;
- case 7:
- return 10000000;
- case 8:
- return 100000000;
- case 9:
- return 1000000000;
- default:
- return Integer.MAX_VALUE;
- }
- }
-}
diff --git a/ruoyi-modules/ruoyi-content/src/main/java/com/wzj/soopin/content/idworker/strategy/DefaultWorkerIdStrategy.java b/ruoyi-modules/ruoyi-content/src/main/java/com/wzj/soopin/content/idworker/strategy/DefaultWorkerIdStrategy.java
deleted file mode 100644
index b0372941c..000000000
--- a/ruoyi-modules/ruoyi-content/src/main/java/com/wzj/soopin/content/idworker/strategy/DefaultWorkerIdStrategy.java
+++ /dev/null
@@ -1,205 +0,0 @@
-package com.wzj.soopin.content.idworker.strategy;
-
-import org.n3r.idworker.WorkerIdStrategy;
-import org.n3r.idworker.utils.HttpReq;
-import org.n3r.idworker.utils.Ip;
-import org.n3r.idworker.utils.Props;
-import org.n3r.idworker.utils.Utils;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import java.io.File;
-import java.io.IOException;
-import java.security.SecureRandom;
-import java.util.Properties;
-import java.util.Random;
-
-public class DefaultWorkerIdStrategy implements WorkerIdStrategy {
- static long workerIdBits = 10L;
- static long maxWorkerId = -1L ^ (-1L << workerIdBits);
- static Random random = new SecureRandom();
-
- public static final WorkerIdStrategy instance = new DefaultWorkerIdStrategy();
-
- private final Properties props =
- Props.tryProperties("idworker-client.properties", Utils.DOT_IDWORKERS);
- private final String idWorkerServerUrl =
- props.getProperty("server.address", "http://id.worker.server:18001");
-
- String userName = System.getProperty("user.name");
-
- String ipDotUsername = Ip.ip + "." + userName;
- String ipudotlock = ipDotUsername + ".lock.";
- int workerIdIndex = ipudotlock.length();
- long workerId;
- FileLock fileLock;
-
- Logger logger = LoggerFactory.getLogger(DefaultWorkerIdStrategy.class);
- private boolean inited;
-
-
- private void init() {
- workerId = findAvailWorkerId();
- if (workerId >= 0) {
- destroyFileLockWhenShutdown();
- startSyncThread();
- } else {
- syncWithWorkerIdServer();
- workerId = findAvailWorkerId();
- if (workerId < 0) workerId = increaseWithWorkerIdServer();
- }
-
- if (workerId < 0) workerId = tryToCreateOnIp();
- if (workerId < 0) {
- logger.warn("DANGEROUS!!! Try to use random worker id.");
- workerId = tryToRandomOnIp(); // Try avoiding! it could cause duplicated
- }
-
- if (workerId < 0) {
- logger.warn("the world may be ended!");
- throw new RuntimeException("the world may be ended");
- }
- }
-
- private void destroyFileLockWhenShutdown() {
- Runtime.getRuntime().addShutdownHook(new Thread() {
- @Override
- public void run() {
- fileLock.destroy();
- }
- });
- }
-
- private void startSyncThread() {
- new Thread() {
- @Override
- public void run() {
- syncWithWorkerIdServer();
- }
- }.start();
- }
-
- private long increaseWithWorkerIdServer() {
- String incId = HttpReq.get(idWorkerServerUrl)
- .req("/inc")
- .param("ipu", ipDotUsername)
- .exec();
- if (incId == null || incId.trim().isEmpty()) return -1L;
-
- long lid = Long.parseLong(incId);
-
- return checkAvail(lid);
- }
-
- private long tryToCreateOnIp() {
- long wid = Ip.lip & maxWorkerId;
-
- return checkAvail(wid);
- }
-
- private long tryToRandomOnIp() {
- long avaiWorkerId = -1L;
- long tryTimes = -1;
-
- while (avaiWorkerId < 0 && ++tryTimes < maxWorkerId) {
- long wid = Ip.lip & random.nextInt((int) maxWorkerId);
-
- avaiWorkerId = checkAvail(wid);
- }
- return avaiWorkerId;
- }
-
- private long checkAvail(long wid) {
- long availWorkerId = -1L;
- try {
- File idWorkerHome = Utils.createIdWorkerHome();
- new File(idWorkerHome, ipudotlock + String.format("%04d", wid)).createNewFile();
- availWorkerId = findAvailWorkerId();
- } catch (IOException e) {
- logger.warn("checkAvail error", e);
- }
-
- return availWorkerId;
- }
-
- private void syncWithWorkerIdServer() {
- String syncIds = HttpReq.get(idWorkerServerUrl).req("/sync")
- .param("ipu", ipDotUsername).param("ids", buildWorkerIdsOfCurrentIp())
- .exec();
- if (syncIds == null || syncIds.trim().isEmpty()) return;
-
- String[] syncIdsArr = syncIds.split(",");
- File idWorkerHome = Utils.createIdWorkerHome();
- for (String syncId : syncIdsArr) {
- try {
- new File(idWorkerHome, ipudotlock + syncId).createNewFile();
- } catch (IOException e) {
- logger.warn("create workerid lock file error", e);
- }
- }
- }
-
- private String buildWorkerIdsOfCurrentIp() {
- StringBuilder sb = new StringBuilder();
- File idWorkerHome = Utils.createIdWorkerHome();
- for (File lockFile : idWorkerHome.listFiles()) {
- // check the format like 10.142.1.151.lock.0001
- if (!lockFile.getName().startsWith(ipudotlock)) continue;
-
- String workerId = lockFile.getName().substring(workerIdIndex);
- if (!workerId.matches("\\d\\d\\d\\d")) continue;
-
- if (sb.length() > 0) sb.append(',');
- sb.append(workerId);
- }
-
- return sb.toString();
- }
-
-
- /**
- * Find the local available worker id.
- *
- * @return -1 when N/A
- */
- private long findAvailWorkerId() {
- File idWorkerHome = Utils.createIdWorkerHome();
-
- for (File lockFile : idWorkerHome.listFiles()) {
- // check the format like 10.142.1.151.lock.0001
- if (!lockFile.getName().startsWith(ipudotlock)) continue;
-
- String workerId = lockFile.getName().substring(workerIdIndex);
- if (!workerId.matches("\\d\\d\\d\\d")) continue;
-
- FileLock fileLock = new FileLock(lockFile);
- if (!fileLock.tryLock()) {
- fileLock.destroy();
- continue;
- }
-
- this.fileLock = fileLock;
- return Long.parseLong(workerId);
- }
-
- return -1;
- }
-
- @Override
- public void initialize() {
- if (inited) return;
- init();
- this.inited = true;
- }
-
- @Override
- public long availableWorkerId() {
- return workerId;
- }
-
- @Override
- public void release() {
- if (fileLock != null) fileLock.destroy();
- inited = false;
- }
-}
diff --git a/ruoyi-modules/ruoyi-content/src/main/java/com/wzj/soopin/content/idworker/strategy/FileLock.java b/ruoyi-modules/ruoyi-content/src/main/java/com/wzj/soopin/content/idworker/strategy/FileLock.java
deleted file mode 100644
index 04017ab84..000000000
--- a/ruoyi-modules/ruoyi-content/src/main/java/com/wzj/soopin/content/idworker/strategy/FileLock.java
+++ /dev/null
@@ -1,132 +0,0 @@
-package com.wzj.soopin.content.idworker.strategy;
-
-
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import java.io.*;
-import java.nio.channels.Channels;
-import java.nio.channels.ClosedChannelException;
-import java.nio.channels.FileChannel;
-import java.nio.channels.OverlappingFileLockException;
-
-/**
- * A file lock a la flock/funlock
- *
- * The given path will be created and opened if it doesn't exist.
- */
-public class FileLock {
- private final File file;
- private FileChannel channel;
- private java.nio.channels.FileLock flock = null;
- Logger logger = LoggerFactory.getLogger(FileLock.class);
-
- public FileLock(File file) {
- this.file = file;
-
- try {
- file.createNewFile(); // create the file if it doesn't exist
- channel = new RandomAccessFile(file, "rw").getChannel();
- } catch (IOException e) {
- throw new RuntimeException(e);
- }
- }
-
-
- /**
- * Lock the file or throw an exception if the lock is already held
- */
- public void lock() {
- try {
- synchronized (this) {
- logger.trace("Acquiring lock on {}", file.getAbsolutePath());
- flock = channel.lock();
- }
- } catch (IOException e) {
- throw new RuntimeException(e);
- }
- }
-
- /**
- * Try to lock the file and return true if the locking succeeds
- */
- public boolean tryLock() {
- synchronized (this) {
- logger.trace("Acquiring lock on {}", file.getAbsolutePath());
- try {
- // weirdly this method will return null if the lock is held by another
- // process, but will throw an exception if the lock is held by this process
- // so we have to handle both cases
- flock = channel.tryLock();
- return flock != null;
- } catch (OverlappingFileLockException e) {
- return false;
- } catch (IOException e) {
- throw new RuntimeException(e);
- }
- }
- }
-
- /**
- * Unlock the lock if it is held
- */
- public void unlock() {
- synchronized (this) {
- logger.trace("Releasing lock on {}", file.getAbsolutePath());
- if (flock == null) return;
- try {
- flock.release();
- } catch (ClosedChannelException e) {
- // Ignore
- } catch (IOException e) {
- throw new RuntimeException(e);
- }
- }
- }
-
- /**
- * Destroy this lock, closing the associated FileChannel
- */
- public void destroy() {
- synchronized (this) {
- unlock();
- if (!channel.isOpen()) return;
-
- try {
- channel.close();
- } catch (IOException e) {
- throw new RuntimeException(e);
- }
- }
- }
-
-
- @SuppressWarnings("unchecked")
- public T readObject() {
- try {
- InputStream is = Channels.newInputStream(channel);
- ObjectInputStream objectReader = new ObjectInputStream(is);
- return (T) objectReader.readObject();
- } catch (EOFException e) {
- } catch (Exception e) {
- throw new RuntimeException(e);
- }
-
- return null;
- }
-
-
- public synchronized boolean writeObject(Object object) {
- if (!channel.isOpen()) return false;
-
- try {
- channel.position(0);
- OutputStream out = Channels.newOutputStream(channel);
- ObjectOutputStream objectOutput = new ObjectOutputStream(out);
- objectOutput.writeObject(object);
- return true;
- } catch (Exception e) {
- throw new RuntimeException(e);
- }
- }
-}
diff --git a/ruoyi-modules/ruoyi-content/src/main/java/com/wzj/soopin/content/idworker/utils/IPv4Utils.java b/ruoyi-modules/ruoyi-content/src/main/java/com/wzj/soopin/content/idworker/utils/IPv4Utils.java
deleted file mode 100644
index 32f57f5ae..000000000
--- a/ruoyi-modules/ruoyi-content/src/main/java/com/wzj/soopin/content/idworker/utils/IPv4Utils.java
+++ /dev/null
@@ -1 +0,0 @@
-package com.wzj.soopin.content.idworker.utils;
diff --git a/ruoyi-modules/ruoyi-content/src/main/java/com/wzj/soopin/content/idworker/utils/Serializes.java b/ruoyi-modules/ruoyi-content/src/main/java/com/wzj/soopin/content/idworker/utils/Serializes.java
deleted file mode 100644
index 3b78ee548..000000000
--- a/ruoyi-modules/ruoyi-content/src/main/java/com/wzj/soopin/content/idworker/utils/Serializes.java
+++ /dev/null
@@ -1,118 +0,0 @@
-package com.wzj.soopin.content.idworker.utils;
-
-import java.io.*;
-import java.nio.channels.FileChannel;
-import java.util.ArrayList;
-import java.util.List;
-
-public class Serializes {
-
- @SuppressWarnings("unchecked")
- public static List readObjects(File file) {
- ArrayList objects = new ArrayList();
- ObjectInputStream objectReader = null;
- FileInputStream fis = null;
- try {
- fis = new FileInputStream(file);
- objectReader = new ObjectInputStream(fis);
- while (true)
- objects.add((T) objectReader.readObject());
-
- } catch (EOFException e) {
- } catch (Exception e) {
- throw new RuntimeException(e);
- } finally {
- closeQuietly(objectReader);
- closeQuietly(fis);
- }
-
- return objects;
- }
-
-
- @SuppressWarnings("unchecked")
- public static T readObject(File file) {
- ObjectInputStream objectReader = null;
- FileInputStream fis = null;
- try {
- fis = new FileInputStream(file);
- objectReader = new ObjectInputStream(fis);
- return (T) objectReader.readObject();
-
- } catch (EOFException e) {
- } catch (Exception e) {
- throw new RuntimeException(e);
- } finally {
- closeQuietly(objectReader);
- closeQuietly(fis);
- }
-
- return null;
- }
-
- public static void writeObject(File file, Object object) {
- ObjectOutputStream objectOutput = null;
- FileOutputStream fos = null;
- try {
- fos = new FileOutputStream(file);
- objectOutput = new ObjectOutputStream(fos);
- objectOutput.writeObject(object);
- } catch (Exception e) {
- throw new RuntimeException(e);
- } finally {
- closeQuietly(objectOutput);
- closeQuietly(fos);
- }
- }
-
- public static void writeObject(FileOutputStream fos, Object object) {
- FileChannel channel = fos.getChannel();
- if (!channel.isOpen()) throw new RuntimeException("channel is closed");
-
- try {
- channel.position(0);
- ObjectOutputStream objectOutput = new ObjectOutputStream(fos);
- objectOutput.writeObject(object);
- fos.flush();
- } catch (Exception e) {
- throw new RuntimeException(e);
- } finally {
- }
- }
-
- public static void writeObjects(File file, Object... objects) {
- ObjectOutputStream objectOutput = null;
- FileOutputStream fos = null;
- try {
- fos = new FileOutputStream(file);
- objectOutput = new ObjectOutputStream(fos);
-
- for (Object object : objects)
- objectOutput.writeObject(object);
- } catch (Exception e) {
- throw new RuntimeException(e);
- } finally {
- closeQuietly(objectOutput);
- closeQuietly(fos);
- }
-
- }
-
- public static void closeQuietly(OutputStream os) {
- if (os != null) try {
- os.close();
- } catch (IOException e) {
- // ignore
- }
- }
-
-
- public static void closeQuietly(InputStream is) {
- if (is != null) try {
- is.close();
- } catch (IOException e) {
- // ignore
- }
-
- }
-}
diff --git a/ruoyi-modules/ruoyi-content/src/main/java/com/wzj/soopin/content/mapper/mapper/CommentMapper.java b/ruoyi-modules/ruoyi-content/src/main/java/com/wzj/soopin/content/mapper/mapper/CommentMapper.java
index 8c8b41f89..035cf85d8 100644
--- a/ruoyi-modules/ruoyi-content/src/main/java/com/wzj/soopin/content/mapper/mapper/CommentMapper.java
+++ b/ruoyi-modules/ruoyi-content/src/main/java/com/wzj/soopin/content/mapper/mapper/CommentMapper.java
@@ -7,4 +7,7 @@ import org.springframework.stereotype.Repository;
@Repository
public interface CommentMapper extends BaseMapperPlus {
+ Comment selectByPrimaryKey(String id);
+
+ void delete(Comment pendingDelete);
}
diff --git a/ruoyi-modules/ruoyi-content/src/main/java/com/wzj/soopin/content/mapper/mapper/FansMapper.java b/ruoyi-modules/ruoyi-content/src/main/java/com/wzj/soopin/content/mapper/mapper/FansMapper.java
index 5b434fd24..77307afe1 100644
--- a/ruoyi-modules/ruoyi-content/src/main/java/com/wzj/soopin/content/mapper/mapper/FansMapper.java
+++ b/ruoyi-modules/ruoyi-content/src/main/java/com/wzj/soopin/content/mapper/mapper/FansMapper.java
@@ -13,6 +13,12 @@ import java.util.Map;
public interface FansMapper extends BaseMapperPlus {
+ int updateByPrimaryKeySelective(Fans record);
public List