Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
T
travel-cloud
项目
项目
详情
活动
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
图表
比较
统计图
议题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程
统计图
Wiki
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
图像
聊天
创建新问题
作业
提交
问题看板
Open sidebar
cloud
travel-cloud
Commits
7aabcfa3
提交
7aabcfa3
authored
5月 12, 2025
作者:
hzh
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
代码优化
上级
c459834b
显示空白字符变更
内嵌
并排
正在显示
20 个修改的文件
包含
1607 行增加
和
1 行删除
+1607
-1
pom.xml
ruoyi-common/ruoyi-common-51weishi/pom.xml
+34
-0
Api.java
...51weishi/src/main/java/org/dromara/common/weishi/Api.java
+289
-0
AbstractHttpDelegate.java
.../org/dromara/common/weishi/base/AbstractHttpDelegate.java
+489
-0
HttpKit.java
...src/main/java/org/dromara/common/weishi/base/HttpKit.java
+87
-0
PayKit.java
.../src/main/java/org/dromara/common/weishi/base/PayKit.java
+78
-0
RequestMethodEnum.java
...ava/org/dromara/common/weishi/base/RequestMethodEnum.java
+62
-0
ApiHttpResponse.java
...ava/org/dromara/common/weishi/common/ApiHttpResponse.java
+27
-0
Code.java
.../src/main/java/org/dromara/common/weishi/common/Code.java
+23
-0
PageInfo.java
.../main/java/org/dromara/common/weishi/common/PageInfo.java
+52
-0
UserConfig.java
...ain/java/org/dromara/common/weishi/config/UserConfig.java
+17
-0
ApiEnum.java
...rc/main/java/org/dromara/common/weishi/enums/ApiEnum.java
+39
-0
Domain.java
...src/main/java/org/dromara/common/weishi/enums/Domain.java
+17
-0
DomainEnum.java
...main/java/org/dromara/common/weishi/enums/DomainEnum.java
+38
-0
InsureApiEnum.java
...org/dromara/common/weishi/enums/insure/InsureApiEnum.java
+1
-1
WeishiException.java
.../org/dromara/common/weishi/exception/WeishiException.java
+17
-0
BaseModel.java
.../main/java/org/dromara/common/weishi/model/BaseModel.java
+78
-0
AuthRequest.java
...java/org/dromara/common/weishi/model/req/AuthRequest.java
+2
-0
WeishiService.java
...java/org/dromara/common/weishi/service/WeishiService.java
+81
-0
WeishiServiceImpl.java
...dromara/common/weishi/service/impl/WeishiServiceImpl.java
+175
-0
org.springframework.boot.autoconfigure.AutoConfiguration.imports
...ingframework.boot.autoconfigure.AutoConfiguration.imports
+1
-0
没有找到文件。
ruoyi-common/ruoyi-common-51weishi/pom.xml
0 → 100644
浏览文件 @
7aabcfa3
<?xml version="1.0" encoding="UTF-8"?>
<project
xmlns=
"http://maven.apache.org/POM/4.0.0"
xmlns:xsi=
"http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation=
"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"
>
<parent>
<groupId>
org.dromara
</groupId>
<artifactId>
ruoyi-common
</artifactId>
<version>
${revision}
</version>
</parent>
<modelVersion>
4.0.0
</modelVersion>
<artifactId>
ruoyi-common-51weishi
</artifactId>
<description>
ruoyi-common-51weishi 51旅游卫士模块
</description>
<dependencies>
<dependency>
<groupId>
org.dromara
</groupId>
<artifactId>
ruoyi-common-core
</artifactId>
</dependency>
<dependency>
<groupId>
com.alibaba
</groupId>
<artifactId>
fastjson
</artifactId>
</dependency>
<dependency>
<groupId>
cn.hutool
</groupId>
<artifactId>
hutool-all
</artifactId>
<version>
5.8.22
</version>
</dependency>
</dependencies>
</project>
ruoyi-common/ruoyi-common-51weishi/src/main/java/org/dromara/common/weishi/Api.java
0 → 100644
浏览文件 @
7aabcfa3
package
org
.
dromara
.
common
.
weishi
;
import
cn.hutool.core.date.StopWatch
;
import
cn.hutool.http.ContentType
;
import
com.alibaba.fastjson.JSON
;
import
lombok.extern.slf4j.Slf4j
;
import
org.apache.commons.lang3.StringUtils
;
import
org.dromara.common.weishi.base.HttpKit
;
import
org.dromara.common.weishi.base.PayKit
;
import
org.dromara.common.weishi.base.RequestMethodEnum
;
import
org.dromara.common.weishi.common.ApiHttpResponse
;
import
org.dromara.common.weishi.enums.ApiEnum
;
import
org.dromara.common.weishi.enums.Domain
;
import
org.dromara.common.weishi.enums.DomainEnum
;
import
java.io.File
;
import
java.util.HashMap
;
import
java.util.Map
;
/**
* @author hzh
* @date 2024-10-15
* @desc api相关接口
**/
@Slf4j
public
class
Api
{
/**
* 获取接口请求的 URL
*
* @param apiEnum {@link ApiEnum} API 接口枚举
* @return {@link String} 返回完整的接口请求URL
*/
public
static
String
getReqUrl
(
ApiEnum
apiEnum
)
{
return
getReqUrl
(
apiEnum
,
null
);
}
/**
* 获取接口请求的 URL
*
* @param apiEnum {@link ApiEnum} API 接口枚举
* @param domain {@link Domain} API 接口域名枚举
* @return {@link String} 返回完整的接口请求URL
*/
public
static
String
getReqUrl
(
ApiEnum
apiEnum
,
Domain
domain
)
{
if
(
domain
==
null
)
{
domain
=
DomainEnum
.
TEST
;
}
return
domain
.
getDomain
()
.
concat
(
apiEnum
.
getUrl
());
}
public
static
ApiHttpResponse
v1
(
RequestMethodEnum
method
,
String
urlPrefix
,
String
urlSuffix
,
String
token
,
String
body
)
{
return
v1
(
method
,
urlPrefix
,
urlSuffix
,
token
,
null
,
body
,
null
);
}
public
static
ApiHttpResponse
v1
(
RequestMethodEnum
method
,
String
urlPrefix
,
String
urlSuffix
,
String
token
,
Map
<
String
,
Object
>
params
,
String
body
)
{
return
v1
(
method
,
urlPrefix
,
urlSuffix
,
token
,
params
,
body
,
null
);
}
/**
* v1 接口统一执行人口
*
* @param method {@link RequestMethodEnum} 请求方法
* @param urlPrefix 可通过 {@link Domain}来获取
* @param urlSuffix 可通过 {@link ApiEnum} 来获取,URL挂载参数需要自行拼接
* @param token token
* @param params Get 接口请求参数
* @param body 接口请求参数
* @param file 文件
* @return 请求返回的结果
*/
public
static
ApiHttpResponse
v1
(
RequestMethodEnum
method
,
String
urlPrefix
,
String
urlSuffix
,
String
token
,
Map
<
String
,
Object
>
params
,
String
body
,
File
file
)
{
if
(
null
!=
params
&&
!
params
.
keySet
().
isEmpty
())
{
urlSuffix
=
urlSuffix
.
concat
(
"?"
).
concat
(
PayKit
.
createLinkString
(
params
,
true
));
}
// 构建 Authorization
String
authorization
=
token
;
if
(
method
==
RequestMethodEnum
.
GET
)
{
return
get
(
urlPrefix
.
concat
(
urlSuffix
),
authorization
,
null
);
}
else
if
(
method
==
RequestMethodEnum
.
POST
)
{
return
post
(
urlPrefix
.
concat
(
urlSuffix
),
authorization
,
body
);
}
else
if
(
method
==
RequestMethodEnum
.
DELETE
)
{
return
delete
(
urlPrefix
.
concat
(
urlSuffix
),
authorization
,
body
);
}
else
if
(
method
==
RequestMethodEnum
.
UPLOAD
)
{
return
upload
(
urlPrefix
.
concat
(
urlSuffix
),
authorization
,
body
,
file
);
}
else
if
(
method
==
RequestMethodEnum
.
PATCH
)
{
return
patch
(
urlPrefix
.
concat
(
urlSuffix
),
authorization
,
body
);
}
else
if
(
method
==
RequestMethodEnum
.
PUT
)
{
return
put
(
urlPrefix
.
concat
(
urlSuffix
),
authorization
,
body
);
}
return
null
;
}
/**
* put 请求
*
* @param url 请求url
* @param authorization 授权信息
* @param data 请求参数
* @return {@link ApiHttpResponse} 请求返回的结果
*/
public
static
ApiHttpResponse
put
(
String
url
,
String
authorization
,
String
data
)
{
return
put
(
url
,
data
,
getHeaders
(
authorization
));
}
/**
* put 请求
*
* @param url 请求url
* @param data 请求参数
* @param headers 请求头
* @return {@link ApiHttpResponse} 请求返回的结果
*/
public
static
ApiHttpResponse
put
(
String
url
,
String
data
,
Map
<
String
,
String
>
headers
)
{
return
HttpKit
.
getDelegate
().
put
(
url
,
data
,
headers
);
}
/**
* patch 请求
*
* @param url 请求url
* @param authorization 授权信息
* @param data 请求参数
* @return {@link ApiHttpResponse} 请求返回的结果
*/
public
static
ApiHttpResponse
patch
(
String
url
,
String
authorization
,
String
data
)
{
return
patch
(
url
,
data
,
getHeaders
(
authorization
));
}
/**
* patch 请求
*
* @param url 请求url
* @param data 请求参数
* @param headers 请求头
* @return {@link ApiHttpResponse} 请求返回的结果
*/
public
static
ApiHttpResponse
patch
(
String
url
,
String
data
,
Map
<
String
,
String
>
headers
)
{
return
HttpKit
.
getDelegate
().
patch
(
url
,
data
,
headers
);
}
/**
* upload 请求
*
* @param url 请求url
* @param authorization 授权信息
* @param data 请求参数
* @param file 上传文件
* @return {@link ApiHttpResponse} 请求返回的结果
*/
public
static
ApiHttpResponse
upload
(
String
url
,
String
authorization
,
String
data
,
File
file
)
{
Map
<
String
,
Object
>
paramMap
=
new
HashMap
<>(
2
);
paramMap
.
put
(
"file"
,
file
);
paramMap
.
put
(
"meta"
,
data
);
return
upload
(
url
,
paramMap
,
getUploadHeaders
(
authorization
));
}
/**
* upload 请求
*
* @param url 请求url
* @param params 请求参数
* @param headers 请求头
* @return {@link ApiHttpResponse} 请求返回的结果
*/
public
static
ApiHttpResponse
upload
(
String
url
,
Map
<
String
,
Object
>
params
,
Map
<
String
,
String
>
headers
)
{
return
HttpKit
.
getDelegate
().
post
(
url
,
params
,
headers
);
}
public
static
Map
<
String
,
String
>
getUploadHeaders
(
String
authorization
)
{
Map
<
String
,
String
>
headers
=
getBaseHeaders
(
authorization
);
headers
.
put
(
"Content-Type"
,
"multipart/form-data;boundary=\"boundary\""
);
return
headers
;
}
/**
* delete 请求
*
* @param url 请求url
* @param authorization 授权信息
* @param data 请求参数
* @return {@link ApiHttpResponse} 请求返回的结果
*/
public
static
ApiHttpResponse
delete
(
String
url
,
String
authorization
,
String
data
)
{
return
delete
(
url
,
data
,
getHeaders
(
authorization
));
}
/**
* delete 请求
*
* @param url 请求url
* @param data 请求参数
* @param headers 请求头
* @return {@link ApiHttpResponse} 请求返回的结果
*/
public
static
ApiHttpResponse
delete
(
String
url
,
String
data
,
Map
<
String
,
String
>
headers
)
{
return
HttpKit
.
getDelegate
().
delete
(
url
,
data
,
headers
);
}
/**
* post 请求
*
* @param url 请求url
* @param authorization 授权信息
* @param data 请求参数
* @return {@link ApiHttpResponse} 请求返回的结果
*/
public
static
ApiHttpResponse
post
(
String
url
,
String
authorization
,
String
data
)
{
return
post
(
url
,
data
,
getHeaders
(
authorization
));
}
/**
* post 请求
*
* @param url 请求url
* @param data 请求参数
* @param headers 请求头
* @return {@link ApiHttpResponse} 请求返回的结果
*/
public
static
ApiHttpResponse
post
(
String
url
,
String
data
,
Map
<
String
,
String
>
headers
)
{
log
.
info
(
"请求路径:{}"
,
url
);
log
.
info
(
"请求头:{}"
,
JSON
.
toJSONString
(
headers
));
log
.
info
(
"请求体:{}"
,
data
);
StopWatch
watch
=
new
StopWatch
();
watch
.
start
();
ApiHttpResponse
res
=
HttpKit
.
getDelegate
().
post
(
url
,
data
,
headers
);
log
.
info
(
"返回参数:{}"
,
JSON
.
toJSONString
(
res
));
watch
.
stop
();
log
.
info
(
"请求耗时:{}ms"
,
watch
.
getTotalTimeMillis
());
return
res
;
}
/**
* get 请求
*
* @param url 请求url
* @param authorization 授权信息
* @param params 请求参数
* @return {@link ApiHttpResponse} 请求返回的结果
*/
public
static
ApiHttpResponse
get
(
String
url
,
String
authorization
,
Map
<
String
,
Object
>
params
)
{
return
get
(
url
,
params
,
getHeaders
(
authorization
));
}
public
static
boolean
isProd
(
String
url
)
{
return
url
.
startsWith
(
DomainEnum
.
PROD
.
getDomain
());
}
/**
* get 请求
*
* @param url 请求url
* @param params 请求参数
* @param headers 请求头
* @return {@link ApiHttpResponse} 请求返回的结果
*/
public
static
ApiHttpResponse
get
(
String
url
,
Map
<
String
,
Object
>
params
,
Map
<
String
,
String
>
headers
)
{
return
HttpKit
.
getDelegate
().
get
(
url
,
params
,
headers
);
}
public
static
Map
<
String
,
String
>
getHeaders
(
String
authorization
)
{
Map
<
String
,
String
>
headers
=
getBaseHeaders
(
authorization
);
headers
.
put
(
"Accept-language"
,
"zh-CN,zh"
);
headers
.
put
(
"Content-Type"
,
ContentType
.
JSON
.
toString
());
if
(
StringUtils
.
isNotEmpty
(
authorization
))
{
headers
.
put
(
"Authorization"
,
"Bearer "
+
authorization
);
}
return
headers
;
}
public
static
Map
<
String
,
String
>
getBaseHeaders
(
String
authorization
)
{
Map
<
String
,
String
>
headers
=
new
HashMap
<>(
5
);
headers
.
put
(
"Accept"
,
ContentType
.
JSON
.
toString
());
if
(
StringUtils
.
isNotEmpty
(
authorization
))
{
headers
.
put
(
"Authorization"
,
"Bearer "
+
authorization
);
}
return
headers
;
}
}
ruoyi-common/ruoyi-common-51weishi/src/main/java/org/dromara/common/weishi/base/AbstractHttpDelegate.java
0 → 100644
浏览文件 @
7aabcfa3
package
org
.
dromara
.
common
.
weishi
.
base
;
import
cn.hutool.core.io.FileUtil
;
import
cn.hutool.core.net.SSLContextBuilder
;
import
cn.hutool.core.net.SSLProtocols
;
import
cn.hutool.http.HttpRequest
;
import
cn.hutool.http.HttpResponse
;
import
cn.hutool.http.HttpUtil
;
import
com.alibaba.fastjson.JSONObject
;
import
org.dromara.common.weishi.common.ApiHttpResponse
;
import
javax.net.ssl.KeyManager
;
import
javax.net.ssl.KeyManagerFactory
;
import
javax.net.ssl.SSLSocketFactory
;
import
java.io.File
;
import
java.io.InputStream
;
import
java.net.Proxy
;
import
java.nio.file.Files
;
import
java.nio.file.Paths
;
import
java.security.KeyStore
;
import
java.security.SecureRandom
;
import
java.util.Map
;
/**
* <p>IJPay 让支付触手可及,封装了微信支付、支付宝支付、银联支付等常用的支付方式以及各种常用的接口。</p>
*
* <p>不依赖任何第三方 mvc 框架,仅仅作为工具使用简单快速完成支付模块的开发,可轻松嵌入到任何系统里。 </p>
*
* <p>IJPay 交流群: 723992875、864988890</p>
*
* <p>Node.js 版: <a href="https://gitee.com/javen205/TNWX">https://gitee.com/javen205/TNWX</a></p>
*
* <p>Http 代理类</p>
*
* @author Javen
*/
public
abstract
class
AbstractHttpDelegate
{
/**
* 设置代理
*
* @return {@link Proxy} 代理对象
*/
public
Proxy
getProxy
()
{
return
null
;
}
/**
* get 请求
*
* @param url 请求url
* @return {@link String} 请求返回的结果
*/
public
String
get
(
String
url
)
{
return
HttpUtil
.
get
(
url
);
}
/**
* get 请求
*
* @param url 请求url
* @param paramMap 请求参数
* @return {@link String} 请求返回的结果
*/
public
String
get
(
String
url
,
Map
<
String
,
Object
>
paramMap
)
{
return
HttpUtil
.
get
(
url
,
paramMap
);
}
/**
* get 请求
*
* @param url 请求url
* @param paramMap 请求参数
* @param headers 请求头
* @return {@link ApiHttpResponse} 请求返回的结果
*/
public
ApiHttpResponse
get
(
String
url
,
Map
<
String
,
Object
>
paramMap
,
Map
<
String
,
String
>
headers
)
{
HttpResponse
httpResponse
=
getToResponse
(
url
,
paramMap
,
headers
);
return
JSONObject
.
parseObject
(
httpResponse
.
body
(),
ApiHttpResponse
.
class
);
}
/**
* post 请求
*
* @param url 请求url
* @param data 请求参数
* @return {@link String} 请求返回的结果
*/
public
String
post
(
String
url
,
String
data
)
{
return
HttpUtil
.
post
(
url
,
data
);
}
/**
* post 请求
*
* @param url 请求url
* @param paramMap 请求参数
* @return {@link String} 请求返回的结果
*/
public
String
post
(
String
url
,
Map
<
String
,
Object
>
paramMap
)
{
return
HttpUtil
.
post
(
url
,
paramMap
);
}
/**
* post 请求
*
* @param url 请求url
* @param paramMap 请求参数
* @param headers 请求头
* @return {@link ApiHttpResponse} 请求返回的结果
*/
public
ApiHttpResponse
post
(
String
url
,
Map
<
String
,
Object
>
paramMap
,
Map
<
String
,
String
>
headers
)
{
HttpResponse
httpResponse
=
postToResponse
(
url
,
headers
,
paramMap
);
return
JSONObject
.
parseObject
(
httpResponse
.
body
(),
ApiHttpResponse
.
class
);
}
/**
* post 请求
*
* @param url 请求url
* @param data 请求参数
* @param headers 请求头
* @return {@link ApiHttpResponse} 请求返回的结果
*/
public
ApiHttpResponse
post
(
String
url
,
String
data
,
Map
<
String
,
String
>
headers
)
{
HttpResponse
httpResponse
=
postToResponse
(
url
,
headers
,
data
);
return
JSONObject
.
parseObject
(
httpResponse
.
body
(),
ApiHttpResponse
.
class
);
}
/**
* patch 请求
*
* @param url 请求url
* @param paramMap 请求参数
* @param headers 请求头
* @return {@link ApiHttpResponse} 请求返回的结果
*/
public
ApiHttpResponse
patch
(
String
url
,
Map
<
String
,
Object
>
paramMap
,
Map
<
String
,
String
>
headers
)
{
HttpResponse
httpResponse
=
patchToResponse
(
url
,
headers
,
paramMap
);
return
JSONObject
.
parseObject
(
httpResponse
.
body
(),
ApiHttpResponse
.
class
);
}
/**
* patch 请求
*
* @param url 请求url
* @param data 请求参数
* @param headers 请求头
* @return {@link ApiHttpResponse} 请求返回的结果
*/
public
ApiHttpResponse
patch
(
String
url
,
String
data
,
Map
<
String
,
String
>
headers
)
{
HttpResponse
httpResponse
=
patchToResponse
(
url
,
headers
,
data
);
return
JSONObject
.
parseObject
(
httpResponse
.
body
(),
ApiHttpResponse
.
class
);
}
/**
* delete 请求
*
* @param url 请求url
* @param paramMap 请求参数
* @param headers 请求头
* @return {@link ApiHttpResponse} 请求返回的结果
*/
public
ApiHttpResponse
delete
(
String
url
,
Map
<
String
,
Object
>
paramMap
,
Map
<
String
,
String
>
headers
)
{
HttpResponse
httpResponse
=
deleteToResponse
(
url
,
headers
,
paramMap
);
return
JSONObject
.
parseObject
(
httpResponse
.
body
(),
ApiHttpResponse
.
class
);
}
/**
* delete 请求
*
* @param url 请求url
* @param data 请求参数
* @param headers 请求头
* @return {@link ApiHttpResponse} 请求返回的结果
*/
public
ApiHttpResponse
delete
(
String
url
,
String
data
,
Map
<
String
,
String
>
headers
)
{
HttpResponse
httpResponse
=
deleteToResponse
(
url
,
headers
,
data
);
return
JSONObject
.
parseObject
(
httpResponse
.
body
(),
ApiHttpResponse
.
class
);
}
/**
* put 请求
*
* @param url 请求url
* @param paramMap 请求参数
* @param headers 请求头
* @return {@link ApiHttpResponse} 请求返回的结果
*/
public
ApiHttpResponse
put
(
String
url
,
Map
<
String
,
Object
>
paramMap
,
Map
<
String
,
String
>
headers
)
{
HttpResponse
httpResponse
=
putToResponse
(
url
,
headers
,
paramMap
);
return
JSONObject
.
parseObject
(
httpResponse
.
body
(),
ApiHttpResponse
.
class
);
}
/**
* put 请求
*
* @param url 请求url
* @param data 请求参数
* @param headers 请求头
* @return {@link ApiHttpResponse} 请求返回的结果
*/
public
ApiHttpResponse
put
(
String
url
,
String
data
,
Map
<
String
,
String
>
headers
)
{
HttpResponse
httpResponse
=
putToResponse
(
url
,
headers
,
data
);
return
JSONObject
.
parseObject
(
httpResponse
.
body
(),
ApiHttpResponse
.
class
);
}
/**
* 上传文件
*
* @param url 请求url
* @param data 请求参数
* @param certPath 证书路径
* @param certPass 证书密码
* @param filePath 上传文件路径
* @param protocol 协议
* @return {@link String} 请求返回的结果
*/
public
String
upload
(
String
url
,
String
data
,
String
certPath
,
String
certPass
,
String
filePath
,
String
protocol
)
{
try
{
File
file
=
FileUtil
.
newFile
(
filePath
);
SSLSocketFactory
sslSocketFactory
=
getSslSocketFactory
(
certPath
,
null
,
certPass
,
protocol
);
return
HttpRequest
.
post
(
url
)
.
setProxy
(
getProxy
())
.
setSSLSocketFactory
(
sslSocketFactory
)
.
header
(
"Content-Type"
,
"multipart/form-data;boundary=\"boundary\""
)
.
form
(
"file"
,
file
)
.
form
(
"meta"
,
data
)
.
execute
()
.
body
();
}
catch
(
Exception
e
)
{
throw
new
RuntimeException
(
e
);
}
}
/**
* 上传文件
*
* @param url 请求url
* @param data 请求参数
* @param certPath 证书路径
* @param certPass 证书密码
* @param filePath 上传文件路径
* @return {@link String} 请求返回的结果
*/
public
String
upload
(
String
url
,
String
data
,
String
certPath
,
String
certPass
,
String
filePath
)
{
return
upload
(
url
,
data
,
certPath
,
certPass
,
filePath
,
SSLProtocols
.
TLSv1
);
}
/**
* post 请求
*
* @param url 请求url
* @param data 请求参数
* @param certPath 证书路径
* @param certPass 证书密码
* @param protocol 协议
* @return {@link String} 请求返回的结果
*/
public
String
post
(
String
url
,
String
data
,
String
certPath
,
String
certPass
,
String
protocol
)
{
try
{
SSLSocketFactory
socketFactory
=
getSslSocketFactory
(
certPath
,
null
,
certPass
,
protocol
);
return
HttpRequest
.
post
(
url
)
.
setProxy
(
getProxy
())
.
setSSLSocketFactory
(
socketFactory
)
.
body
(
data
)
.
execute
()
.
body
();
}
catch
(
Exception
e
)
{
throw
new
RuntimeException
(
e
);
}
}
/**
* post 请求
*
* @param url 请求url
* @param data 请求参数
* @param certPath 证书路径
* @param certPass 证书密码
* @return {@link String} 请求返回的结果
*/
public
String
post
(
String
url
,
String
data
,
String
certPath
,
String
certPass
)
{
return
post
(
url
,
data
,
certPath
,
certPass
,
SSLProtocols
.
TLSv1
);
}
/**
* post 请求
*
* @param url 请求url
* @param data 请求参数
* @param certFile 证书文件输入流
* @param certPass 证书密码
* @param protocol 协议
* @return {@link String} 请求返回的结果
*/
public
String
post
(
String
url
,
String
data
,
InputStream
certFile
,
String
certPass
,
String
protocol
)
{
try
{
SSLSocketFactory
sslSocketFactory
=
getSslSocketFactory
(
null
,
certFile
,
certPass
,
protocol
);
return
HttpRequest
.
post
(
url
)
.
setProxy
(
getProxy
())
.
setSSLSocketFactory
(
sslSocketFactory
)
.
body
(
data
)
.
execute
()
.
body
();
}
catch
(
Exception
e
)
{
throw
new
RuntimeException
(
e
);
}
}
/**
* post 请求
*
* @param url 请求url
* @param data 请求参数
* @param certFile 证书文件输入流
* @param certPass 证书密码
* @return {@link String} 请求返回的结果
*/
public
String
post
(
String
url
,
String
data
,
InputStream
certFile
,
String
certPass
)
{
return
post
(
url
,
data
,
certFile
,
certPass
,
SSLProtocols
.
TLSv1
);
}
/**
* get 请求
*
* @param url 请求url
* @param paramMap 请求参数
* @param headers 请求头
* @return {@link HttpResponse} 请求返回的结果
*/
private
HttpResponse
getToResponse
(
String
url
,
Map
<
String
,
Object
>
paramMap
,
Map
<
String
,
String
>
headers
)
{
return
HttpRequest
.
get
(
url
)
.
setProxy
(
getProxy
())
.
addHeaders
(
headers
)
.
form
(
paramMap
)
.
execute
();
}
/**
* post 请求
*
* @param url 请求url
* @param headers 请求头
* @param data 请求参数
* @return {@link HttpResponse} 请求返回的结果
*/
private
HttpResponse
postToResponse
(
String
url
,
Map
<
String
,
String
>
headers
,
String
data
)
{
return
HttpRequest
.
post
(
url
)
.
setProxy
(
getProxy
())
.
addHeaders
(
headers
)
.
body
(
data
)
.
execute
();
}
/**
* post 请求
*
* @param url 请求url
* @param headers 请求头
* @param paramMap 请求参数
* @return {@link HttpResponse} 请求返回的结果
*/
private
HttpResponse
postToResponse
(
String
url
,
Map
<
String
,
String
>
headers
,
Map
<
String
,
Object
>
paramMap
)
{
return
HttpRequest
.
post
(
url
)
.
setProxy
(
getProxy
())
.
addHeaders
(
headers
)
.
form
(
paramMap
)
.
execute
();
}
/**
* patch 请求
*
* @param url 请求url
* @param headers 请求头
* @param paramMap 请求参数
* @return {@link HttpResponse} 请求返回的结果
*/
private
HttpResponse
patchToResponse
(
String
url
,
Map
<
String
,
String
>
headers
,
Map
<
String
,
Object
>
paramMap
)
{
return
HttpRequest
.
patch
(
url
)
.
setProxy
(
getProxy
())
.
addHeaders
(
headers
)
.
form
(
paramMap
)
.
execute
();
}
/**
* patch 请求
*
* @param url 请求url
* @param headers 请求头
* @param data 请求参数
* @return {@link HttpResponse} 请求返回的结果
*/
private
HttpResponse
patchToResponse
(
String
url
,
Map
<
String
,
String
>
headers
,
String
data
)
{
return
HttpRequest
.
patch
(
url
)
.
setProxy
(
getProxy
())
.
addHeaders
(
headers
)
.
body
(
data
)
.
execute
();
}
/**
* delete 请求
*
* @param url 请求url
* @param headers 请求头
* @param data 请求参数
* @return {@link HttpResponse} 请求返回的结果
*/
private
HttpResponse
deleteToResponse
(
String
url
,
Map
<
String
,
String
>
headers
,
String
data
)
{
return
HttpRequest
.
delete
(
url
)
.
setProxy
(
getProxy
())
.
addHeaders
(
headers
)
.
body
(
data
)
.
execute
();
}
/**
* delete 请求
*
* @param url 请求url
* @param headers 请求头
* @param paramMap 请求参数
* @return {@link HttpResponse} 请求返回的结果
*/
private
HttpResponse
deleteToResponse
(
String
url
,
Map
<
String
,
String
>
headers
,
Map
<
String
,
Object
>
paramMap
)
{
return
HttpRequest
.
delete
(
url
)
.
setProxy
(
getProxy
())
.
addHeaders
(
headers
)
.
form
(
paramMap
)
.
execute
();
}
/**
* put 请求
*
* @param url 请求url
* @param headers 请求头
* @param data 请求参数
* @return {@link HttpResponse} 请求返回的结果
*/
private
HttpResponse
putToResponse
(
String
url
,
Map
<
String
,
String
>
headers
,
String
data
)
{
return
HttpRequest
.
put
(
url
)
.
setProxy
(
getProxy
())
.
addHeaders
(
headers
)
.
body
(
data
)
.
execute
();
}
/**
* put 请求
*
* @param url 请求url
* @param headers 请求头
* @param paramMap 请求参数
* @return {@link HttpResponse} 请求返回的结果
*/
private
HttpResponse
putToResponse
(
String
url
,
Map
<
String
,
String
>
headers
,
Map
<
String
,
Object
>
paramMap
)
{
return
HttpRequest
.
put
(
url
)
.
setProxy
(
getProxy
())
.
addHeaders
(
headers
)
.
form
(
paramMap
)
.
execute
();
}
private
KeyManager
[]
getKeyManager
(
String
certPass
,
String
certPath
,
InputStream
certFile
)
throws
Exception
{
KeyStore
clientStore
=
KeyStore
.
getInstance
(
"PKCS12"
);
if
(
certFile
!=
null
)
{
clientStore
.
load
(
certFile
,
certPass
.
toCharArray
());
}
else
{
clientStore
.
load
(
Files
.
newInputStream
(
Paths
.
get
(
certPath
)),
certPass
.
toCharArray
());
}
KeyManagerFactory
kmf
=
KeyManagerFactory
.
getInstance
(
KeyManagerFactory
.
getDefaultAlgorithm
());
kmf
.
init
(
clientStore
,
certPass
.
toCharArray
());
return
kmf
.
getKeyManagers
();
}
private
SSLSocketFactory
getSslSocketFactory
(
String
certPath
,
InputStream
certFile
,
String
certPass
,
String
protocol
)
throws
Exception
{
SSLContextBuilder
sslContextBuilder
=
SSLContextBuilder
.
create
();
sslContextBuilder
.
setProtocol
(
protocol
);
sslContextBuilder
.
setKeyManagers
(
getKeyManager
(
certPass
,
certPath
,
certFile
));
sslContextBuilder
.
setSecureRandom
(
new
SecureRandom
());
return
sslContextBuilder
.
buildChecked
().
getSocketFactory
();
}
}
ruoyi-common/ruoyi-common-51weishi/src/main/java/org/dromara/common/weishi/base/HttpKit.java
0 → 100644
浏览文件 @
7aabcfa3
package
org
.
dromara
.
common
.
weishi
.
base
;
import
jakarta.servlet.http.HttpServletRequest
;
import
java.io.BufferedReader
;
import
java.io.IOException
;
import
java.util.HashMap
;
import
java.util.Map
;
/**
* <p>IJPay 让支付触手可及,封装了微信支付、支付宝支付、银联支付常用的支付方式以及各种常用的接口。</p>
*
* <p>不依赖任何第三方 mvc 框架,仅仅作为工具使用简单快速完成支付模块的开发,可轻松嵌入到任何系统里。 </p>
*
* <p>IJPay 交流群: 723992875、864988890</p>
*
* <p>Node.js 版: <a href="https://gitee.com/javen205/TNWX">https://gitee.com/javen205/TNWX</a></p>
*
* <p>Http 工具类</p>
*
* @author Javen
*/
public
class
HttpKit
{
private
static
AbstractHttpDelegate
delegate
=
new
DefaultHttpKit
();
public
static
AbstractHttpDelegate
getDelegate
()
{
return
delegate
;
}
public
static
void
setDelegate
(
AbstractHttpDelegate
delegate
)
{
HttpKit
.
delegate
=
delegate
;
}
public
static
String
readData
(
HttpServletRequest
request
)
{
BufferedReader
br
=
null
;
try
{
StringBuilder
result
=
new
StringBuilder
();
br
=
request
.
getReader
();
for
(
String
line
;
(
line
=
br
.
readLine
())
!=
null
;
)
{
if
(
result
.
length
()
>
0
)
{
result
.
append
(
"\n"
);
}
result
.
append
(
line
);
}
return
result
.
toString
();
}
catch
(
IOException
e
)
{
throw
new
RuntimeException
(
e
);
}
finally
{
if
(
br
!=
null
)
{
try
{
br
.
close
();
}
catch
(
IOException
e
)
{
e
.
printStackTrace
();
}
}
}
}
/**
* 将同步通知的参数转化为Map
*
* @param request {@link HttpServletRequest}
* @return 转化后的 Map
*/
public
static
Map
<
String
,
String
>
toMap
(
HttpServletRequest
request
)
{
Map
<
String
,
String
>
params
=
new
HashMap
<>();
Map
<
String
,
String
[]>
requestParams
=
request
.
getParameterMap
();
for
(
String
name
:
requestParams
.
keySet
())
{
String
[]
values
=
requestParams
.
get
(
name
);
String
valueStr
=
""
;
for
(
int
i
=
0
;
i
<
values
.
length
;
i
++)
{
valueStr
=
(
i
==
values
.
length
-
1
)
?
valueStr
+
values
[
i
]
:
valueStr
+
values
[
i
]
+
","
;
}
params
.
put
(
name
,
valueStr
);
}
return
params
;
}
}
/**
* 使用 huTool 实现的 Http 工具类
*
* @author Javen
*/
class
DefaultHttpKit
extends
AbstractHttpDelegate
{
}
ruoyi-common/ruoyi-common-51weishi/src/main/java/org/dromara/common/weishi/base/PayKit.java
0 → 100644
浏览文件 @
7aabcfa3
package
org
.
dromara
.
common
.
weishi
.
base
;
import
java.net.URLEncoder
;
import
java.nio.charset.StandardCharsets
;
import
java.util.*
;
public
class
PayKit
{
/**
* 把所有元素排序
*
* @param params 需要排序并参与字符拼接的参数组
* @return 拼接后字符串
*/
public
static
String
createLinkString
(
Map
<
String
,
Object
>
params
)
{
return
createLinkString
(
params
,
false
);
}
/**
* @param params 需要排序并参与字符拼接的参数组
* @param encode 是否进行URLEncoder
* @return 拼接后字符串
*/
public
static
String
createLinkString
(
Map
<
String
,
Object
>
params
,
boolean
encode
)
{
return
createLinkString
(
params
,
"&"
,
encode
);
}
/**
* @param params 需要排序并参与字符拼接的参数组
* @param connStr 连接符号
* @param encode 是否进行URLEncoder
* @return 拼接后字符串
*/
public
static
String
createLinkString
(
Map
<
String
,
Object
>
params
,
String
connStr
,
boolean
encode
)
{
return
createLinkString
(
params
,
connStr
,
encode
,
false
);
}
public
static
String
createLinkString
(
Map
<
String
,
Object
>
params
,
String
connStr
,
boolean
encode
,
boolean
quotes
)
{
List
<
String
>
keys
=
new
ArrayList
<>(
params
.
keySet
());
Collections
.
sort
(
keys
);
StringBuilder
content
=
new
StringBuilder
();
for
(
int
i
=
0
;
i
<
keys
.
size
();
i
++)
{
String
key
=
keys
.
get
(
i
);
Object
value
=
params
.
get
(
key
);
// 参数的值为空不参与签名
if
(
Objects
.
isNull
(
value
))
{
continue
;
}
// 拼接时,不包括最后一个&字符
if
(
i
==
keys
.
size
()
-
1
)
{
if
(
quotes
)
{
content
.
append
(
key
).
append
(
"="
).
append
(
'"'
).
append
(
encode
?
urlEncode
(
value
.
toString
())
:
value
).
append
(
'"'
);
}
else
{
content
.
append
(
key
).
append
(
"="
).
append
(
encode
?
urlEncode
(
value
.
toString
())
:
value
);
}
}
else
{
if
(
quotes
)
{
content
.
append
(
key
).
append
(
"="
).
append
(
'"'
).
append
(
encode
?
urlEncode
(
value
.
toString
())
:
value
).
append
(
'"'
).
append
(
connStr
);
}
else
{
content
.
append
(
key
).
append
(
"="
).
append
(
encode
?
urlEncode
(
value
.
toString
())
:
value
).
append
(
connStr
);
}
}
}
return
content
.
toString
();
}
/**
* URL 编码
*
* @param src 需要编码的字符串
* @return 编码后的字符串
*/
public
static
String
urlEncode
(
String
src
)
{
return
URLEncoder
.
encode
(
src
,
StandardCharsets
.
UTF_8
).
replace
(
"+"
,
"%20"
);
}
}
ruoyi-common/ruoyi-common-51weishi/src/main/java/org/dromara/common/weishi/base/RequestMethodEnum.java
0 → 100644
浏览文件 @
7aabcfa3
package
org
.
dromara
.
common
.
weishi
.
base
;
/**
* HTTP 请求方法枚举
*
* @author wenhe
*/
public
enum
RequestMethodEnum
{
/**
* 上传实质是 post 请求
*/
UPLOAD
(
"POST"
),
/**
* post 请求
*/
POST
(
"POST"
),
/**
* get 请求
*/
GET
(
"GET"
),
/**
* put 请求
*/
PUT
(
"PUT"
),
/**
* delete 请求
*/
DELETE
(
"DELETE"
),
/**
* options 请求
*/
OPTIONS
(
"OPTIONS"
),
/**
* head 请求
*/
HEAD
(
"HEAD"
),
/**
* trace 请求
*/
TRACE
(
"TRACE"
),
/**
* connect 请求
*/
CONNECT
(
"CONNECT"
),
/**
* PATCH 请求
*/
PATCH
(
"PATCH"
),
;
private
final
String
method
;
RequestMethodEnum
(
String
method
)
{
this
.
method
=
method
;
}
@Override
public
String
toString
()
{
return
this
.
method
;
}
}
ruoyi-common/ruoyi-common-51weishi/src/main/java/org/dromara/common/weishi/common/ApiHttpResponse.java
0 → 100644
浏览文件 @
7aabcfa3
package
org
.
dromara
.
common
.
weishi
.
common
;
import
lombok.Data
;
/**
* @author hzh
* @date 2024-10-15
* @desc 响应实体
**/
@Data
public
class
ApiHttpResponse
{
/**
* 返回消息提示
*/
private
String
ResultMsg
;
/**
* 返回代码
*/
private
int
ResultTp
;
/**
* 返回数据
*/
private
String
Data
;
}
ruoyi-common/ruoyi-common-51weishi/src/main/java/org/dromara/common/weishi/common/Code.java
0 → 100644
浏览文件 @
7aabcfa3
package
org
.
dromara
.
common
.
weishi
.
common
;
import
lombok.AllArgsConstructor
;
import
lombok.Getter
;
/**
* code返回值
*
* @author wenhe
*/
@Getter
@AllArgsConstructor
public
enum
Code
{
/**
* 成功
*/
SUCCESS
(
0
,
"成功"
);
private
final
Integer
code
;
private
final
String
message
;
}
ruoyi-common/ruoyi-common-51weishi/src/main/java/org/dromara/common/weishi/common/PageInfo.java
0 → 100644
浏览文件 @
7aabcfa3
package
org
.
dromara
.
common
.
weishi
.
common
;
import
lombok.*
;
import
lombok.experimental.Accessors
;
import
java.util.List
;
import
java.util.Map
;
/**
* @author hzh
* @date 2024-10-18
* @desc 分页信息
**/
@Builder
@AllArgsConstructor
@NoArgsConstructor
@Data
@EqualsAndHashCode
(
callSuper
=
false
)
@Accessors
(
chain
=
true
)
public
class
PageInfo
<
T
>
{
/**
* 额外参数
*/
private
Map
<
String
,
Object
>
map
;
/**
* 总记录数
*/
private
Integer
total
;
/**
* 总页数
*/
private
Integer
pages
;
/**
* 当前页数
*/
private
Integer
pageNum
;
/**
* 每页显示的数量
*/
private
Integer
count
;
/**
* 结果集合
*/
private
List
<
T
>
list
;
}
ruoyi-common/ruoyi-common-51weishi/src/main/java/org/dromara/common/weishi/config/UserConfig.java
0 → 100644
浏览文件 @
7aabcfa3
package
org
.
dromara
.
common
.
weishi
.
config
;
/**
* @author wenhe
*/
public
interface
UserConfig
{
/**
* 用户名
*/
String
USERNAME
=
"testuser"
;
/**
* 密码
*/
String
PASSWORD
=
"Abc123."
;
}
ruoyi-common/ruoyi-common-51weishi/src/main/java/org/dromara/common/weishi/enums/ApiEnum.java
0 → 100644
浏览文件 @
7aabcfa3
package
org
.
dromara
.
common
.
weishi
.
enums
;
import
java.util.Arrays
;
import
java.util.Optional
;
/**
* API枚举接口
*
* @author hzh
*/
public
interface
ApiEnum
{
/**
* 根据 url 获取枚举值
*
* @param enumClass 枚举class
* @param url url
* @param <E> 枚举类
* @return 枚举值
*/
static
<
E
extends
Enum
<?>
&
ApiEnum
>
Optional
<
E
>
urlOf
(
Class
<
E
>
enumClass
,
String
url
)
{
return
Arrays
.
stream
(
enumClass
.
getEnumConstants
()).
filter
(
e
->
e
.
getUrl
().
equals
(
url
)).
findFirst
();
}
/**
* 获取枚举URL
*
* @return 枚举编码
*/
String
getUrl
();
/**
* 获取详细的描述信息
*
* @return 描述信息
*/
String
getDesc
();
}
ruoyi-common/ruoyi-common-51weishi/src/main/java/org/dromara/common/weishi/enums/Domain.java
0 → 100644
浏览文件 @
7aabcfa3
package
org
.
dromara
.
common
.
weishi
.
enums
;
/**
* 获取可用域名
*
* @author wenhe
*/
public
interface
Domain
{
/**
* 获取域名
*
* @return 返回域名
*/
String
getDomain
();
}
ruoyi-common/ruoyi-common-51weishi/src/main/java/org/dromara/common/weishi/enums/DomainEnum.java
0 → 100644
浏览文件 @
7aabcfa3
package
org
.
dromara
.
common
.
weishi
.
enums
;
/**
* 域名枚举
*
* @author wenhe
*/
public
enum
DomainEnum
implements
Domain
{
/**
* 测试域名
*/
TEST
(
"https://beta.51weishi.com:5005"
),
/**
* 生产域名
*/
PROD
(
"https://insure.51weishi.com"
);
/**
* 域名
*/
private
final
String
domain
;
DomainEnum
(
String
domain
)
{
this
.
domain
=
domain
;
}
@Override
public
String
getDomain
()
{
return
domain
;
}
@Override
public
String
toString
()
{
return
domain
;
}
}
ruoyi-common/ruoyi-common-51weishi/src/main/java/org/dromara/common/weishi/enums/insure/InsureApiEnum.java
浏览文件 @
7aabcfa3
...
...
@@ -29,7 +29,7 @@ public enum InsureApiEnum implements ApiEnum {
/**
* 保单撤单接口
*/
INSURE
_CANCEL
(
"/api/v1/insure/withdraw/policy/{policyNum}"
,
"保单撤单接口"
),
POLICY
_CANCEL
(
"/api/v1/insure/withdraw/policy/{policyNum}"
,
"保单撤单接口"
),
/**
* 根据订单号下载保单
*/
...
...
ruoyi-common/ruoyi-common-51weishi/src/main/java/org/dromara/common/weishi/exception/WeishiException.java
0 → 100644
浏览文件 @
7aabcfa3
package
org
.
dromara
.
common
.
weishi
.
exception
;
import
java.io.Serial
;
/**
* @author hzh
* @date 2025-05-12
**/
public
class
WeishiException
extends
RuntimeException
{
@Serial
private
static
final
long
serialVersionUID
=
1L
;
public
WeishiException
(
String
message
)
{
super
(
message
);
}
}
ruoyi-common/ruoyi-common-51weishi/src/main/java/org/dromara/common/weishi/model/BaseModel.java
0 → 100644
浏览文件 @
7aabcfa3
/**
* <p>IJPay 让支付触手可及,封装了微信支付、支付宝支付、银联支付常用的支付方式以及各种常用的接口。</p>
*
* <p>不依赖任何第三方 mvc 框架,仅仅作为工具使用简单快速完成支付模块的开发,可轻松嵌入到任何系统里。 </p>
*
* <p>IJPay 交流群: 723992875、864988890</p>
*
* <p>Node.js 版: <a href="https://gitee.com/javen205/TNWX">https://gitee.com/javen205/TNWX</a></p>
*
* <p>Model 公用方法</p>
*
* @author Javen
*/
package
org
.
dromara
.
common
.
weishi
.
model
;
import
cn.hutool.core.util.StrUtil
;
import
java.lang.reflect.Field
;
import
java.lang.reflect.Method
;
import
java.util.HashMap
;
import
java.util.Map
;
public
class
BaseModel
{
/**
* 将建构的 builder 转为 Map
*
* @return 转化后的 Map
*/
public
Map
<
String
,
String
>
toMap
()
{
String
[]
fieldNames
=
getFiledNames
(
this
);
HashMap
<
String
,
String
>
map
=
new
HashMap
<
String
,
String
>(
fieldNames
.
length
);
for
(
String
name
:
fieldNames
)
{
String
value
=
(
String
)
getFieldValueByName
(
name
,
this
);
if
(
StrUtil
.
isNotEmpty
(
value
))
{
map
.
put
(
name
,
value
);
}
}
return
map
;
}
/**
* 获取属性名数组
*
* @param obj 对象
* @return 返回对象属性名数组
*/
public
String
[]
getFiledNames
(
Object
obj
)
{
Field
[]
fields
=
obj
.
getClass
().
getDeclaredFields
();
String
[]
fieldNames
=
new
String
[
fields
.
length
];
for
(
int
i
=
0
;
i
<
fields
.
length
;
i
++)
{
fieldNames
[
i
]
=
fields
[
i
].
getName
();
}
return
fieldNames
;
}
/**
* 根据属性名获取属性值
*
* @param fieldName 属性名称
* @param obj 对象
* @return 返回对应属性的值
*/
public
Object
getFieldValueByName
(
String
fieldName
,
Object
obj
)
{
try
{
String
firstLetter
=
fieldName
.
substring
(
0
,
1
).
toUpperCase
();
String
getter
=
new
StringBuffer
().
append
(
"get"
)
.
append
(
firstLetter
)
.
append
(
fieldName
.
substring
(
1
))
.
toString
();
Method
method
=
obj
.
getClass
().
getMethod
(
getter
);
return
method
.
invoke
(
obj
);
}
catch
(
Exception
e
)
{
return
null
;
}
}
}
ruoyi-common/ruoyi-common-51weishi/src/main/java/org/dromara/common/weishi/model/req/AuthRequest.java
浏览文件 @
7aabcfa3
...
...
@@ -3,8 +3,10 @@ package org.dromara.common.weishi.model.req;
import
lombok.AllArgsConstructor
;
import
lombok.Data
;
import
lombok.NoArgsConstructor
;
import
lombok.experimental.Accessors
;
@Data
@Accessors
(
chain
=
true
)
@NoArgsConstructor
@AllArgsConstructor
public
class
AuthRequest
{
...
...
ruoyi-common/ruoyi-common-51weishi/src/main/java/org/dromara/common/weishi/service/WeishiService.java
0 → 100644
浏览文件 @
7aabcfa3
package
org
.
dromara
.
common
.
weishi
.
service
;
import
org.dromara.common.weishi.model.req.ApplyRequest
;
import
org.dromara.common.weishi.model.req.ProposalRequest
;
import
org.dromara.common.weishi.model.res.*
;
import
java.util.List
;
/**
* @author wenhe
*/
public
interface
WeishiService
{
/**
* 认证接口
*
* @return 数据
*/
AuthResponse
authorize
();
/**
* 保险下单接口
*
* @param request 请求参数
* @return 响应数据
*/
ApplyResponse
insureApply
(
ApplyRequest
request
);
/**
* 核保接口
*
* @param request 请求参数
* @return 响应数据
*/
ProposalResponse
insureProposal
(
ProposalRequest
request
);
/**
* 签单接口
*
* @param orderNum 订单号
* @return 数据
*/
IssueResponse
insureDetail
(
String
orderNum
);
/**
* 订单撤单接口
*
* @param orderNum 订单号
*/
void
insureCancel
(
String
orderNum
);
/**
* 保单撤单接口
*
* @param policyNum 保单号
*/
void
policyCancel
(
String
policyNum
);
/**
* 产品列表接口
*
* @return 产品列表
*/
List
<
ProductsResponse
>
productList
();
/**
* 产品详情
*
* @param productId 产品id
* @return 产品详情
*/
ProductResponse
productDetail
(
Integer
productId
);
/**
* 获取保险公司相关文档接口
* @param productId 产品id
* @param annexTp
* @return
*/
AnnexResponse
annex
(
Integer
productId
,
String
annexTp
);
}
ruoyi-common/ruoyi-common-51weishi/src/main/java/org/dromara/common/weishi/service/impl/WeishiServiceImpl.java
0 → 100644
浏览文件 @
7aabcfa3
package
org
.
dromara
.
common
.
weishi
.
service
.
impl
;
import
cn.hutool.core.map.MapUtil
;
import
cn.hutool.core.util.StrUtil
;
import
com.alibaba.fastjson.JSON
;
import
org.dromara.common.weishi.Api
;
import
org.dromara.common.weishi.base.RequestMethodEnum
;
import
org.dromara.common.weishi.common.ApiHttpResponse
;
import
org.dromara.common.weishi.common.Code
;
import
org.dromara.common.weishi.config.UserConfig
;
import
org.dromara.common.weishi.enums.DomainEnum
;
import
org.dromara.common.weishi.enums.auth.AuthApiEnum
;
import
org.dromara.common.weishi.enums.insure.InsureApiEnum
;
import
org.dromara.common.weishi.enums.product.ProductApiEnum
;
import
org.dromara.common.weishi.exception.WeishiException
;
import
org.dromara.common.weishi.model.req.ApplyRequest
;
import
org.dromara.common.weishi.model.req.AuthRequest
;
import
org.dromara.common.weishi.model.req.ProposalRequest
;
import
org.dromara.common.weishi.model.res.*
;
import
org.dromara.common.weishi.service.WeishiService
;
import
java.util.List
;
import
java.util.Map
;
import
java.util.Objects
;
/**
* @author hzh
* @date 2025-05-12
**/
public
class
WeishiServiceImpl
implements
WeishiService
{
@Override
public
AuthResponse
authorize
()
{
ApiHttpResponse
res
=
Api
.
v1
(
RequestMethodEnum
.
POST
,
DomainEnum
.
TEST
.
getDomain
(),
AuthApiEnum
.
AUTHORIZE
.
getUrl
(),
null
,
JSON
.
toJSONString
(
new
AuthRequest
()
.
setUsername
(
UserConfig
.
USERNAME
)
.
setPassword
(
UserConfig
.
PASSWORD
)
));
if
(!
Objects
.
equals
(
res
.
getResultTp
(),
Code
.
SUCCESS
.
getCode
()))
{
throw
new
WeishiException
(
res
.
getResultMsg
());
}
return
JSON
.
parseObject
(
res
.
getData
(),
AuthResponse
.
class
);
}
@Override
public
ApplyResponse
insureApply
(
ApplyRequest
request
)
{
ApiHttpResponse
res
=
Api
.
v1
(
RequestMethodEnum
.
POST
,
DomainEnum
.
TEST
.
getDomain
(),
InsureApiEnum
.
APPLY
.
getUrl
(),
getToken
(),
JSON
.
toJSONString
(
request
));
if
(!
Objects
.
equals
(
res
.
getResultTp
(),
Code
.
SUCCESS
.
getCode
()))
{
throw
new
WeishiException
(
res
.
getResultMsg
());
}
return
JSON
.
parseObject
(
res
.
getData
(),
ApplyResponse
.
class
);
}
@Override
public
ProposalResponse
insureProposal
(
ProposalRequest
request
)
{
ApiHttpResponse
res
=
Api
.
v1
(
RequestMethodEnum
.
POST
,
DomainEnum
.
TEST
.
getDomain
(),
InsureApiEnum
.
PROPOSAL
.
getUrl
(),
getToken
(),
JSON
.
toJSONString
(
request
));
if
(!
Objects
.
equals
(
res
.
getResultTp
(),
Code
.
SUCCESS
.
getCode
()))
{
throw
new
WeishiException
(
res
.
getResultMsg
());
}
return
JSON
.
parseObject
(
res
.
getData
(),
ProposalResponse
.
class
);
}
@Override
public
IssueResponse
insureDetail
(
String
orderNum
)
{
Map
<
String
,
Object
>
map
=
MapUtil
.<
String
,
Object
>
builder
()
.
put
(
"OrderNum"
,
orderNum
)
.
build
();
ApiHttpResponse
res
=
Api
.
v1
(
RequestMethodEnum
.
POST
,
DomainEnum
.
TEST
.
getDomain
(),
StrUtil
.
format
(
InsureApiEnum
.
ISSUE
.
getUrl
(),
map
),
getToken
(),
null
);
if
(!
Objects
.
equals
(
res
.
getResultTp
(),
Code
.
SUCCESS
.
getCode
()))
{
throw
new
WeishiException
(
res
.
getResultMsg
());
}
return
JSON
.
parseObject
(
res
.
getData
(),
IssueResponse
.
class
);
}
@Override
public
void
insureCancel
(
String
orderNum
)
{
Map
<
String
,
Object
>
map
=
MapUtil
.<
String
,
Object
>
builder
()
.
put
(
"OrderNum"
,
orderNum
)
.
build
();
ApiHttpResponse
res
=
Api
.
v1
(
RequestMethodEnum
.
POST
,
DomainEnum
.
TEST
.
getDomain
(),
StrUtil
.
format
(
InsureApiEnum
.
CANCEL
.
getUrl
(),
map
),
getToken
(),
null
);
if
(!
Objects
.
equals
(
res
.
getResultTp
(),
Code
.
SUCCESS
.
getCode
()))
{
throw
new
WeishiException
(
res
.
getResultMsg
());
}
}
@Override
public
void
policyCancel
(
String
policyNum
)
{
Map
<
String
,
Object
>
map
=
MapUtil
.<
String
,
Object
>
builder
()
.
put
(
"policyNum"
,
policyNum
)
.
build
();
ApiHttpResponse
res
=
Api
.
v1
(
RequestMethodEnum
.
POST
,
DomainEnum
.
TEST
.
getDomain
(),
StrUtil
.
format
(
InsureApiEnum
.
POLICY_CANCEL
.
getUrl
(),
map
),
getToken
(),
null
);
if
(!
Objects
.
equals
(
res
.
getResultTp
(),
Code
.
SUCCESS
.
getCode
()))
{
throw
new
WeishiException
(
res
.
getResultMsg
());
}
}
/**
* 获取token
*
* @return token
*/
private
String
getToken
()
{
return
authorize
().
getAccess_token
();
}
@Override
public
List
<
ProductsResponse
>
productList
()
{
ApiHttpResponse
res
=
Api
.
v1
(
RequestMethodEnum
.
GET
,
DomainEnum
.
TEST
.
getDomain
(),
ProductApiEnum
.
PRODUCT_LIST
.
getUrl
(),
getToken
(),
null
);
if
(!
Objects
.
equals
(
res
.
getResultTp
(),
Code
.
SUCCESS
.
getCode
()))
{
throw
new
WeishiException
(
res
.
getResultMsg
());
}
return
JSON
.
parseArray
(
res
.
getData
(),
ProductsResponse
.
class
);
}
@Override
public
ProductResponse
productDetail
(
Integer
productId
)
{
Map
<
String
,
Object
>
map
=
MapUtil
.<
String
,
Object
>
builder
()
.
put
(
"productId"
,
productId
)
.
build
();
ApiHttpResponse
res
=
Api
.
v1
(
RequestMethodEnum
.
POST
,
DomainEnum
.
TEST
.
getDomain
(),
StrUtil
.
format
(
ProductApiEnum
.
PRODUCT_DETAIL
.
getUrl
(),
map
),
getToken
(),
null
);
if
(!
Objects
.
equals
(
res
.
getResultTp
(),
Code
.
SUCCESS
.
getCode
()))
{
throw
new
WeishiException
(
res
.
getResultMsg
());
}
return
JSON
.
parseObject
(
res
.
getData
(),
ProductResponse
.
class
);
}
@Override
public
AnnexResponse
annex
(
Integer
productId
,
String
annexTp
)
{
Map
<
String
,
Object
>
map
=
MapUtil
.<
String
,
Object
>
builder
()
.
put
(
"productId"
,
productId
)
.
put
(
"annexTp"
,
annexTp
)
.
build
();
ApiHttpResponse
res
=
Api
.
v1
(
RequestMethodEnum
.
POST
,
DomainEnum
.
TEST
.
getDomain
(),
StrUtil
.
format
(
ProductApiEnum
.
ANNEX
.
getUrl
(),
map
),
getToken
(),
null
);
if
(!
Objects
.
equals
(
res
.
getResultTp
(),
Code
.
SUCCESS
.
getCode
()))
{
throw
new
WeishiException
(
res
.
getResultMsg
());
}
return
JSON
.
parseObject
(
res
.
getData
(),
AnnexResponse
.
class
);
}
}
ruoyi-common/ruoyi-common-51weishi/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports
0 → 100644
浏览文件 @
7aabcfa3
org.dromara.common.weishi.service.impl.WeishiServiceImpl
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论