Toggle navigation
Toggle navigation
This project
Loading...
Sign in
jiujian
/
client-customer-order-api
Go to a project
Toggle navigation
Toggle navigation pinning
Projects
Groups
Snippets
Help
Project
Activity
Repository
Pipelines
Graphs
Issues
0
Merge Requests
0
Wiki
Network
Create a new issue
Builds
Commits
Authored by
zhuyifan
2025-03-02 16:57:06 +0800
Browse Files
Options
Browse Files
Download
Email Patches
Plain Diff
Commit
aacfc8d80d1e465224ef6aa5de772ce54f22698e
aacfc8d8
1 parent
c90dfac5
菜品售卖量接口
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
41 additions
and
7 deletions
src/main/java/com/infoloop/tianting/annotation/RepeatSubmit.java
src/main/java/com/infoloop/tianting/aspect/RepeatSubmitAspect.java
src/main/java/com/infoloop/tianting/config/RedisConfig.java
src/main/java/com/infoloop/tianting/config/RestTemplateConfig.java
src/main/java/com/infoloop/tianting/controller/OrderController.java
src/main/java/com/infoloop/tianting/annotation/RepeatSubmit.java
View file @
aacfc8d
...
...
@@ -44,6 +44,11 @@ public @interface RepeatSubmit {
String
message
()
default
"不允许重复提交,请稍后再试"
;
/**
* 是否根据登录用户ID加锁
*/
boolean
isLockByLoginUser
()
default
true
;
/**
* 方法执行完自动释放锁
*/
boolean
methodAutoUnlock
()
default
true
;
...
...
src/main/java/com/infoloop/tianting/aspect/RepeatSubmitAspect.java
View file @
aacfc8d
...
...
@@ -110,7 +110,11 @@ public class RepeatSubmitAspect {
}
}
}
final
var
operatorId
=
LoginContextHolder
.
hasLogin
()
?
LoginContextHolder
.
getId
()
:
null
;
return
requestLock
.
prefix
()
+
(
operatorId
!=
null
?
CommonConstants
.
COLON
+
operatorId
:
""
)
+
(
sb
.
length
()
>
0
?
CommonConstants
.
UNDERLINE
+
sb
:
""
);
if
(
requestLock
.
isLockByLoginUser
())
{
final
var
operatorId
=
LoginContextHolder
.
hasLogin
()
?
LoginContextHolder
.
getId
()
:
null
;
return
requestLock
.
prefix
()
+
(
operatorId
!=
null
?
CommonConstants
.
COLON
+
operatorId
:
""
)
+
(
sb
.
length
()
>
0
?
CommonConstants
.
UNDERLINE
+
sb
:
""
);
}
else
{
return
requestLock
.
prefix
()
+
(
sb
.
length
()
>
0
?
CommonConstants
.
UNDERLINE
+
sb
:
""
);
}
}
}
...
...
src/main/java/com/infoloop/tianting/config/RedisConfig.java
View file @
aacfc8d
...
...
@@ -9,7 +9,7 @@ import io.lettuce.core.resource.ClientResources;
import
io.lettuce.core.tracing.BraveTracing
;
import
org.redisson.Redisson
;
import
org.redisson.api.RedissonClient
;
import
org.redisson.c
lient.codec.String
Codec
;
import
org.redisson.c
odec.JsonJackson
Codec
;
import
org.redisson.config.Config
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.beans.factory.annotation.Qualifier
;
...
...
@@ -68,7 +68,7 @@ public class RedisConfig {
@Value
(
REDIS_PORT
)
final
String
port
,
@Value
(
REDIS_DATABASE
)
final
int
dbToken
)
{
final
var
config
=
new
Config
();
config
.
setCodec
(
StringCodec
.
INSTANCE
);
config
.
setCodec
(
new
JsonJacksonCodec
()
);
config
.
useSingleServer
()
.
setAddress
(
"redis://"
+
url
+
":"
+
port
)
...
...
src/main/java/com/infoloop/tianting/config/RestTemplateConfig.java
View file @
aacfc8d
...
...
@@ -15,8 +15,15 @@ import org.springframework.http.converter.StringHttpMessageConverter;
import
org.springframework.web.client.DefaultResponseErrorHandler
;
import
org.springframework.web.client.RestTemplate
;
import
javax.net.ssl.SSLContext
;
import
javax.net.ssl.TrustManager
;
import
javax.net.ssl.X509TrustManager
;
import
java.io.IOException
;
import
java.nio.charset.StandardCharsets
;
import
java.security.KeyManagementException
;
import
java.security.NoSuchAlgorithmException
;
import
java.security.SecureRandom
;
import
java.security.cert.X509Certificate
;
import
java.util.ArrayList
;
import
java.util.concurrent.TimeUnit
;
...
...
@@ -40,8 +47,26 @@ public class RestTemplateConfig {
private
Integer
keepAliveDuration
;
@Bean
public
OkHttpClient
okHttpClient
()
{
public
OkHttpClient
okHttpClient
()
throws
NoSuchAlgorithmException
,
KeyManagementException
{
TrustManager
[]
trustAllCertificates
=
new
TrustManager
[]{
new
X509TrustManager
()
{
@Override
public
void
checkClientTrusted
(
X509Certificate
[]
chain
,
String
authType
)
{}
@Override
public
void
checkServerTrusted
(
X509Certificate
[]
chain
,
String
authType
)
{}
@Override
public
X509Certificate
[]
getAcceptedIssuers
()
{
return
new
X509Certificate
[
0
];
}
}
};
SSLContext
sslContext
=
SSLContext
.
getInstance
(
"TLS"
);
sslContext
.
init
(
null
,
trustAllCertificates
,
new
SecureRandom
());
return
new
OkHttpClient
.
Builder
()
.
sslSocketFactory
(
sslContext
.
getSocketFactory
(),
(
X509TrustManager
)
trustAllCertificates
[
0
])
.
hostnameVerifier
((
hostname
,
session
)
->
true
)
.
connectTimeout
(
connectTimeout
,
TimeUnit
.
SECONDS
)
.
readTimeout
(
readTimeout
,
TimeUnit
.
SECONDS
)
.
writeTimeout
(
writeTimeout
,
TimeUnit
.
SECONDS
)
...
...
src/main/java/com/infoloop/tianting/controller/OrderController.java
View file @
aacfc8d
...
...
@@ -68,7 +68,7 @@ public class OrderController {
@ApiOperation
(
value
=
"创建订单"
)
@PostMapping
(
"/orders"
)
@ResponseStatus
(
HttpStatus
.
OK
)
@RepeatSubmit
(
prefix
=
"createOrder"
)
@RepeatSubmit
(
prefix
=
"createOrder"
,
isLockByLoginUser
=
false
)
public
CreateOrderResponse
createOrder
(
@Valid
@RequestBody
CreateOrderDto
createOrderDto
)
{
return
orderService
.
createOrder
(
createOrderDto
);
}
...
...
@@ -76,7 +76,7 @@ public class OrderController {
@ApiOperation
(
value
=
"院区端创建订单"
)
@PostMapping
(
"/operator/orders"
)
@ResponseStatus
(
HttpStatus
.
OK
)
@RepeatSubmit
(
prefix
=
"createOrder"
)
@RepeatSubmit
(
prefix
=
"createOrder"
,
isLockByLoginUser
=
false
)
public
CreateOrderResponse
createOrderByOperator
(
@Valid
@RequestBody
OrderDbDTO
.
OperatorCreateOrderDto
createOrderDto
)
{
return
orderService
.
orderCreation
(
createOrderDto
);
}
...
...
Please
register
or
login
to post a comment