Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
T
travel-cloud
项目
项目
详情
活动
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
图表
比较
统计图
议题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程
统计图
Wiki
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
图像
聊天
创建新问题
作业
提交
问题看板
Open sidebar
cloud
travel-cloud
Commits
4f6e99cb
提交
4f6e99cb
authored
11月 12, 2024
作者:
hzh
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
登录调试
上级
48e019d9
显示空白字符变更
内嵌
并排
正在显示
127 个修改的文件
包含
7662 行增加
和
9 行删除
+7662
-9
prometheus.yml
docker/prometheus/prometheus.yml
+1
-1
RemoteUserService.java
...c/main/java/org/dromara/system/api/RemoteUserService.java
+8
-0
RemoteWxUserBo.java
...java/org/dromara/system/api/domain/bo/RemoteWxUserBo.java
+49
-0
XcxLoginUser.java
.../main/java/org/dromara/system/api/model/XcxLoginUser.java
+5
-0
pom.xml
ruoyi-auth/pom.xml
+5
-0
TokenController.java
...ain/java/org/dromara/auth/controller/TokenController.java
+3
-0
XcxPhoneLoginBody.java
...rc/main/java/org/dromara/auth/form/XcxPhoneLoginBody.java
+38
-0
XcxAuthStrategy.java
...n/java/org/dromara/auth/service/impl/XcxAuthStrategy.java
+18
-3
XcxPhoneAuthStrategy.java
...a/org/dromara/auth/service/impl/XcxPhoneAuthStrategy.java
+79
-0
pom.xml
ruoyi-common/pom.xml
+1
-0
pom.xml
ruoyi-common/ruoyi-common-bom/pom.xml
+14
-0
pom.xml
ruoyi-common/ruoyi-common-weixin/pom.xml
+40
-0
WeixinConfiguration.java
...org/dromara/common/weixin/config/WeixinConfiguration.java
+19
-0
WxAuthPhoneParseReq.java
...va/org/dromara/common/weixin/dto/WxAuthPhoneParseReq.java
+26
-0
WxAuthReq.java
...rc/main/java/org/dromara/common/weixin/dto/WxAuthReq.java
+28
-0
WxAuthResp.java
...c/main/java/org/dromara/common/weixin/dto/WxAuthResp.java
+23
-0
AesForWxGetPhoneNumber.java
...g/dromara/common/weixin/utils/AesForWxGetPhoneNumber.java
+98
-0
WeixinUtils.java
...ain/java/org/dromara/common/weixin/utils/WeixinUtils.java
+84
-0
WxPhoneDecryptInfo.java
...a/org/dromara/common/weixin/utils/WxPhoneDecryptInfo.java
+14
-0
pom.xml
ruoyi-common/ruoyi-common-ys/pom.xml
+34
-0
Api.java
...yi-common-ys/src/main/java/org/dromara/common/ys/Api.java
+305
-0
AbstractHttpDelegate.java
...java/org/dromara/common/ys/base/AbstractHttpDelegate.java
+489
-0
HttpKit.java
...-ys/src/main/java/org/dromara/common/ys/base/HttpKit.java
+87
-0
PayKit.java
...n-ys/src/main/java/org/dromara/common/ys/base/PayKit.java
+81
-0
RequestMethodEnum.java
...in/java/org/dromara/common/ys/base/RequestMethodEnum.java
+62
-0
ApiHttpResponse.java
...in/java/org/dromara/common/ys/common/ApiHttpResponse.java
+47
-0
Code.java
...n-ys/src/main/java/org/dromara/common/ys/common/Code.java
+23
-0
PageInfo.java
.../src/main/java/org/dromara/common/ys/common/PageInfo.java
+52
-0
Config.java
...ys/src/main/java/org/dromara/common/ys/config/Config.java
+27
-0
ProdConfig.java
...rc/main/java/org/dromara/common/ys/config/ProdConfig.java
+23
-0
Cplx.java
...ys/src/main/java/org/dromara/common/ys/constant/Cplx.java
+46
-0
IDType.java
.../src/main/java/org/dromara/common/ys/constant/IDType.java
+25
-0
Sex.java
...-ys/src/main/java/org/dromara/common/ys/constant/Sex.java
+22
-0
Status.java
.../src/main/java/org/dromara/common/ys/constant/Status.java
+14
-0
TripType.java
...rc/main/java/org/dromara/common/ys/constant/TripType.java
+24
-0
DateType.java
...java/org/dromara/common/ys/constant/airport/DateType.java
+30
-0
OrderStatus.java
...a/org/dromara/common/ys/constant/airport/OrderStatus.java
+53
-0
PersonType.java
...va/org/dromara/common/ys/constant/airport/PersonType.java
+28
-0
SendMode.java
...java/org/dromara/common/ys/constant/airport/SendMode.java
+32
-0
VoyageType.java
...va/org/dromara/common/ys/constant/airport/VoyageType.java
+35
-0
AppTravel.java
...in/java/org/dromara/common/ys/constant/org/AppTravel.java
+29
-0
BookRange.java
...in/java/org/dromara/common/ys/constant/org/BookRange.java
+35
-0
PopLevel.java
...ain/java/org/dromara/common/ys/constant/org/PopLevel.java
+33
-0
UseType.java
...java/org/dromara/common/ys/constant/vehicles/UseType.java
+50
-0
ApiEnum.java
...ys/src/main/java/org/dromara/common/ys/enums/ApiEnum.java
+39
-0
Domain.java
...-ys/src/main/java/org/dromara/common/ys/enums/Domain.java
+17
-0
DomainEnum.java
...src/main/java/org/dromara/common/ys/enums/DomainEnum.java
+38
-0
AirportApiEnum.java
...a/org/dromara/common/ys/enums/airport/AirportApiEnum.java
+170
-0
InsuranceApiEnum.java
...g/dromara/common/ys/enums/insurance/InsuranceApiEnum.java
+58
-0
OrgApiEnum.java
...main/java/org/dromara/common/ys/enums/org/OrgApiEnum.java
+58
-0
CommonResourceApiEnum.java
...omara/common/ys/enums/resource/CommonResourceApiEnum.java
+82
-0
TrainApiEnum.java
.../java/org/dromara/common/ys/enums/train/TrainApiEnum.java
+64
-0
VehiclesApiEnum.java
...org/dromara/common/ys/enums/vehicles/VehiclesApiEnum.java
+62
-0
IAirportService.java
...n/java/org/dromara/common/ys/service/IAirportService.java
+68
-0
ICommonResourceService.java
...org/dromara/common/ys/service/ICommonResourceService.java
+71
-0
IInsuranceService.java
...java/org/dromara/common/ys/service/IInsuranceService.java
+21
-0
IOrgService.java
.../main/java/org/dromara/common/ys/service/IOrgService.java
+20
-0
ITrainService.java
...ain/java/org/dromara/common/ys/service/ITrainService.java
+31
-0
IVehiclesService.java
.../java/org/dromara/common/ys/service/IVehiclesService.java
+30
-0
AirPortServiceImpl.java
...rg/dromara/common/ys/service/impl/AirPortServiceImpl.java
+128
-0
CommonResourceServiceImpl.java
...ara/common/ys/service/impl/CommonResourceServiceImpl.java
+148
-0
InsuranceServiceImpl.java
.../dromara/common/ys/service/impl/InsuranceServiceImpl.java
+38
-0
OrgServiceImpl.java
...va/org/dromara/common/ys/service/impl/OrgServiceImpl.java
+36
-0
TrainServiceImpl.java
.../org/dromara/common/ys/service/impl/TrainServiceImpl.java
+58
-0
VehiclesServiceImpl.java
...g/dromara/common/ys/service/impl/VehiclesServiceImpl.java
+53
-0
BaseModel.java
...n/java/org/dromara/common/ys/service/model/BaseModel.java
+78
-0
OrderListModel.java
...a/common/ys/service/model/req/airport/OrderListModel.java
+54
-0
QueryFlightMinPriceModel.java
...s/service/model/req/airport/QueryFlightMinPriceModel.java
+39
-0
QueryFlightModel.java
...common/ys/service/model/req/airport/QueryFlightModel.java
+39
-0
QueryFlightStopModel.java
...on/ys/service/model/req/airport/QueryFlightStopModel.java
+27
-0
QueryTkOrderModel.java
...ommon/ys/service/model/req/airport/QueryTkOrderModel.java
+22
-0
BookOrderInsurance.java
...rvice/model/req/airport/bookOrder/BookOrderInsurance.java
+20
-0
BookOrderModel.java
...s/service/model/req/airport/bookOrder/BookOrderModel.java
+100
-0
BookOrderPsg.java
.../ys/service/model/req/airport/bookOrder/BookOrderPsg.java
+51
-0
BookOrderRange.java
...s/service/model/req/airport/bookOrder/BookOrderRange.java
+37
-0
AirportModel.java
...mon/ys/service/model/req/commonResource/AirportModel.java
+17
-0
CityModel.java
...common/ys/service/model/req/commonResource/CityModel.java
+17
-0
CountryModel.java
...mon/ys/service/model/req/commonResource/CountryModel.java
+17
-0
DictModel.java
...common/ys/service/model/req/commonResource/DictModel.java
+24
-0
ProvinceModel.java
...on/ys/service/model/req/commonResource/ProvinceModel.java
+17
-0
StationModel.java
...mon/ys/service/model/req/commonResource/StationModel.java
+18
-0
TrainBaseModel.java
...n/ys/service/model/req/commonResource/TrainBaseModel.java
+23
-0
BxcpModel.java
...mara/common/ys/service/model/req/insurance/BxcpModel.java
+23
-0
EditEmployeeModel.java
...ra/common/ys/service/model/req/org/EditEmployeeModel.java
+138
-0
AllStationModel.java
...ra/common/ys/service/model/req/train/AllStationModel.java
+18
-0
QueryModel.java
...dromara/common/ys/service/model/req/train/QueryModel.java
+34
-0
EstimateJsycPriceModel.java
...ys/service/model/req/vehicles/EstimateJsycPriceModel.java
+71
-0
EstimateYyycPriceModel.java
...ys/service/model/req/vehicles/EstimateYyycPriceModel.java
+83
-0
BookOrderModel.java
...a/common/ys/service/model/res/airport/BookOrderModel.java
+59
-0
OrderListModel.java
...a/common/ys/service/model/res/airport/OrderListModel.java
+74
-0
QueryFlightMinPriceModel.java
...s/service/model/res/airport/QueryFlightMinPriceModel.java
+51
-0
QueryFlightModel.java
...common/ys/service/model/res/airport/QueryFlightModel.java
+419
-0
QueryFlightStopModel.java
...on/ys/service/model/res/airport/QueryFlightStopModel.java
+104
-0
QueryTkOrderModel.java
...ommon/ys/service/model/res/airport/QueryTkOrderModel.java
+204
-0
InsuranceInfoBean.java
...ys/service/model/res/airport/other/InsuranceInfoBean.java
+99
-0
OrdePsgInfoBean.java
...n/ys/service/model/res/airport/other/OrdePsgInfoBean.java
+200
-0
OrderBusinessInfoBean.java
...ervice/model/res/airport/other/OrderBusinessInfoBean.java
+101
-0
OrderPayInfoBean.java
.../ys/service/model/res/airport/other/OrderPayInfoBean.java
+51
-0
OrderRangeInfoBean.java
...s/service/model/res/airport/other/OrderRangeInfoBean.java
+171
-0
StopFlagInfoBean.java
.../ys/service/model/res/airport/other/StopFlagInfoBean.java
+41
-0
TicketInfoBean.java
...on/ys/service/model/res/airport/other/TicketInfoBean.java
+135
-0
TicketPrintInfoBean.java
.../service/model/res/airport/other/TicketPrintInfoBean.java
+47
-0
AirportModel.java
...mmon/ys/service/model/res/comomResource/AirportModel.java
+32
-0
CityModel.java
.../common/ys/service/model/res/comomResource/CityModel.java
+33
-0
CountryModel.java
...mmon/ys/service/model/res/comomResource/CountryModel.java
+23
-0
DictModel.java
.../common/ys/service/model/res/comomResource/DictModel.java
+22
-0
ProvinceModel.java
...mon/ys/service/model/res/comomResource/ProvinceModel.java
+23
-0
StationModel.java
...mmon/ys/service/model/res/comomResource/StationModel.java
+33
-0
TrainBaseModel.java
...on/ys/service/model/res/comomResource/TrainBaseModel.java
+22
-0
BxcpModel.java
...mara/common/ys/service/model/res/insurance/BxcpModel.java
+55
-0
AllStationModel.java
...ra/common/ys/service/model/res/train/AllStationModel.java
+106
-0
QueryModel.java
...dromara/common/ys/service/model/res/train/QueryModel.java
+184
-0
EstimateJsycPriceModel.java
...ys/service/model/res/vehicles/EstimateJsycPriceModel.java
+23
-0
EstimateYyycPriceModel.java
...ys/service/model/res/vehicles/EstimateYyycPriceModel.java
+166
-0
org.springframework.boot.autoconfigure.AutoConfiguration.imports
...ingframework.boot.autoconfigure.AutoConfiguration.imports
+7
-0
pom.xml
ruoyi-modules/pom.xml
+1
-0
AirportController.java
...g/dromara/resource/service/airport/AirportController.java
+109
-0
TrainController.java
...a/org/dromara/resource/service/train/TrainController.java
+160
-0
VehiclesController.java
.../dromara/resource/service/vehicle/VehiclesController.java
+37
-0
WxUser.java
...ystem/src/main/java/org/dromara/system/domain/WxUser.java
+67
-0
WxUserBo.java
.../src/main/java/org/dromara/system/domain/bo/WxUserBo.java
+49
-0
WxUserVo.java
.../src/main/java/org/dromara/system/domain/vo/WxUserVo.java
+69
-0
RemoteUserServiceImpl.java
.../java/org/dromara/system/dubbo/RemoteUserServiceImpl.java
+21
-5
WxUserMapper.java
...src/main/java/org/dromara/system/mapper/WxUserMapper.java
+45
-0
IWxUserService.java
.../main/java/org/dromara/system/service/IWxUserService.java
+31
-0
WxUserServiceImpl.java
...va/org/dromara/system/service/impl/WxUserServiceImpl.java
+55
-0
WxUserMapper.xml
...-system/src/main/resources/mapper/system/WxUserMapper.xml
+37
-0
没有找到文件。
docker/prometheus/prometheus.yml
浏览文件 @
4f6e99cb
...
@@ -21,7 +21,7 @@ rule_files:
...
@@ -21,7 +21,7 @@ rule_files:
scrape_configs
:
scrape_configs
:
-
job_name
:
'
Prometheus'
-
job_name
:
'
Prometheus'
static_configs
:
static_configs
:
-
targets
:
[
'
1
27.0.0.1
:9090'
]
-
targets
:
[
'
1
9.168.8.190
:9090'
]
-
job_name
:
'
Grafana'
-
job_name
:
'
Grafana'
static_configs
:
static_configs
:
...
...
ruoyi-api/ruoyi-api-system/src/main/java/org/dromara/system/api/RemoteUserService.java
浏览文件 @
4f6e99cb
...
@@ -3,6 +3,7 @@ package org.dromara.system.api;
...
@@ -3,6 +3,7 @@ package org.dromara.system.api;
import
org.dromara.common.core.exception.ServiceException
;
import
org.dromara.common.core.exception.ServiceException
;
import
org.dromara.common.core.exception.user.UserException
;
import
org.dromara.common.core.exception.user.UserException
;
import
org.dromara.system.api.domain.bo.RemoteUserBo
;
import
org.dromara.system.api.domain.bo.RemoteUserBo
;
import
org.dromara.system.api.domain.bo.RemoteWxUserBo
;
import
org.dromara.system.api.domain.vo.RemoteUserVo
;
import
org.dromara.system.api.domain.vo.RemoteUserVo
;
import
org.dromara.system.api.model.LoginUser
;
import
org.dromara.system.api.model.LoginUser
;
import
org.dromara.system.api.model.XcxLoginUser
;
import
org.dromara.system.api.model.XcxLoginUser
;
...
@@ -68,6 +69,13 @@ public interface RemoteUserService {
...
@@ -68,6 +69,13 @@ public interface RemoteUserService {
*/
*/
Boolean
registerUserInfo
(
RemoteUserBo
remoteUserBo
)
throws
UserException
,
ServiceException
;
Boolean
registerUserInfo
(
RemoteUserBo
remoteUserBo
)
throws
UserException
,
ServiceException
;
/**
* 注册用户信息
* @param remoteWxUserBo 用户信息
* @return 结果
*/
Boolean
registerWxUserInfo
(
RemoteWxUserBo
remoteWxUserBo
);
/**
/**
* 通过userId查询用户账户
* 通过userId查询用户账户
*
*
...
...
ruoyi-api/ruoyi-api-system/src/main/java/org/dromara/system/api/domain/bo/RemoteWxUserBo.java
0 → 100644
浏览文件 @
4f6e99cb
package
org
.
dromara
.
system
.
api
.
domain
.
bo
;
import
lombok.Data
;
import
lombok.NoArgsConstructor
;
import
lombok.experimental.Accessors
;
import
java.io.Serial
;
import
java.io.Serializable
;
/**
* 用户信息业务对象 sys_user
*
* @author Michelle.Chung
*/
@Data
@Accessors
(
chain
=
true
)
@NoArgsConstructor
public
class
RemoteWxUserBo
implements
Serializable
{
@Serial
private
static
final
long
serialVersionUID
=
1L
;
/**
* 用户ID
*/
private
Long
userId
;
/**
* 租户ID
*/
private
String
tenantId
;
/**
* openId
*/
private
String
openId
;
/**
* 手机号码
*/
private
String
phonenumber
;
/**
* 备注
*/
private
String
remark
;
}
ruoyi-api/ruoyi-api-system/src/main/java/org/dromara/system/api/model/XcxLoginUser.java
浏览文件 @
4f6e99cb
...
@@ -24,4 +24,9 @@ public class XcxLoginUser extends LoginUser {
...
@@ -24,4 +24,9 @@ public class XcxLoginUser extends LoginUser {
*/
*/
private
String
openid
;
private
String
openid
;
/**
* 获取手机号
*/
private
String
phone
;
}
}
ruoyi-auth/pom.xml
浏览文件 @
4f6e99cb
...
@@ -86,6 +86,11 @@
...
@@ -86,6 +86,11 @@
<artifactId>
ruoyi-api-resource
</artifactId>
<artifactId>
ruoyi-api-resource
</artifactId>
</dependency>
</dependency>
<dependency>
<groupId>
org.dromara
</groupId>
<artifactId>
ruoyi-common-weixin
</artifactId>
</dependency>
<!-- 自定义负载均衡(多团队开发使用) -->
<!-- 自定义负载均衡(多团队开发使用) -->
<!-- <dependency>-->
<!-- <dependency>-->
<!-- <groupId>org.dromara</groupId>-->
<!-- <groupId>org.dromara</groupId>-->
...
...
ruoyi-auth/src/main/java/org/dromara/auth/controller/TokenController.java
浏览文件 @
4f6e99cb
...
@@ -101,9 +101,12 @@ public class TokenController {
...
@@ -101,9 +101,12 @@ public class TokenController {
LoginVo
loginVo
=
IAuthStrategy
.
login
(
body
,
clientVo
,
grantType
);
LoginVo
loginVo
=
IAuthStrategy
.
login
(
body
,
clientVo
,
grantType
);
Long
userId
=
LoginHelper
.
getUserId
();
Long
userId
=
LoginHelper
.
getUserId
();
if
(!
ObjectUtil
.
isNotNull
(
userId
)){
scheduledExecutorService
.
schedule
(()
->
{
scheduledExecutorService
.
schedule
(()
->
{
remoteMessageService
.
publishMessage
(
userId
,
"欢迎登录商旅微服务管理系统"
);
remoteMessageService
.
publishMessage
(
userId
,
"欢迎登录商旅微服务管理系统"
);
},
3
,
TimeUnit
.
SECONDS
);
},
3
,
TimeUnit
.
SECONDS
);
}
return
R
.
ok
(
loginVo
);
return
R
.
ok
(
loginVo
);
}
}
...
...
ruoyi-auth/src/main/java/org/dromara/auth/form/XcxPhoneLoginBody.java
0 → 100644
浏览文件 @
4f6e99cb
package
org
.
dromara
.
auth
.
form
;
import
jakarta.validation.constraints.NotBlank
;
import
lombok.Data
;
import
lombok.EqualsAndHashCode
;
import
org.dromara.common.core.domain.model.LoginBody
;
/**
* 三方登录对象
*
* @author Lion Li
*/
@Data
@EqualsAndHashCode
(
callSuper
=
true
)
public
class
XcxPhoneLoginBody
extends
LoginBody
{
/**
* openId
*/
@NotBlank
(
message
=
"openId不能为空"
)
private
String
openId
;
/**
* 用户信息,base64编码
*/
@NotBlank
(
message
=
"encryptedData不能为空"
)
private
String
encryptedData
;
/**
* 加密算法的初始向量
*/
@NotBlank
(
message
=
"iv不能为空"
)
private
String
iv
;
/**
* 用户登录凭证
*/
@NotBlank
(
message
=
"用户凭证不能为空"
)
private
String
sessionKey
;
}
ruoyi-auth/src/main/java/org/dromara/auth/service/impl/XcxAuthStrategy.java
浏览文件 @
4f6e99cb
...
@@ -12,6 +12,9 @@ import org.dromara.auth.service.SysLoginService;
...
@@ -12,6 +12,9 @@ import org.dromara.auth.service.SysLoginService;
import
org.dromara.common.core.utils.ValidatorUtils
;
import
org.dromara.common.core.utils.ValidatorUtils
;
import
org.dromara.common.json.utils.JsonUtils
;
import
org.dromara.common.json.utils.JsonUtils
;
import
org.dromara.common.satoken.utils.LoginHelper
;
import
org.dromara.common.satoken.utils.LoginHelper
;
import
org.dromara.common.weixin.dto.WxAuthReq
;
import
org.dromara.common.weixin.dto.WxAuthResp
;
import
org.dromara.common.weixin.utils.WeixinUtils
;
import
org.dromara.system.api.RemoteUserService
;
import
org.dromara.system.api.RemoteUserService
;
import
org.dromara.system.api.domain.vo.RemoteClientVo
;
import
org.dromara.system.api.domain.vo.RemoteClientVo
;
import
org.dromara.system.api.model.XcxLoginUser
;
import
org.dromara.system.api.model.XcxLoginUser
;
...
@@ -39,12 +42,24 @@ public class XcxAuthStrategy implements IAuthStrategy {
...
@@ -39,12 +42,24 @@ public class XcxAuthStrategy implements IAuthStrategy {
// xcxCode 为 小程序调用 wx.login 授权后获取
// xcxCode 为 小程序调用 wx.login 授权后获取
String
xcxCode
=
loginBody
.
getXcxCode
();
String
xcxCode
=
loginBody
.
getXcxCode
();
// 多个小程序识别使用
// 多个小程序识别使用
String
appid
=
loginBody
.
getAppid
();
// String appid = loginBody.getAppid();
WxAuthResp
auth
=
WeixinUtils
.
auth
(
new
WxAuthReq
()
.
setCode
(
xcxCode
)
.
setAppid
(
client
.
getClientKey
())
.
setSecret
(
client
.
getClientSecret
()));
// todo 以下自行实现
// 校验 appid + appsrcret + xcxCode 调用登录凭证校验接口 获取 session_key 与 openid
// 校验 appid + appsrcret + xcxCode 调用登录凭证校验接口 获取 session_key 与 openid
String
openid
=
""
;
String
openid
=
auth
.
getOpenId
()
;
XcxLoginUser
loginUser
=
remoteUserService
.
getUserInfoByOpenid
(
openid
);
XcxLoginUser
loginUser
=
remoteUserService
.
getUserInfoByOpenid
(
openid
);
// 用户不存在 返回 openid
if
(
loginUser
==
null
)
{
LoginVo
loginVo
=
new
LoginVo
();
loginVo
.
setOpenid
(
openid
);
loginVo
.
setScope
(
auth
.
getSessionKey
());
return
loginVo
;
}
loginUser
.
setClientKey
(
client
.
getClientKey
());
loginUser
.
setClientKey
(
client
.
getClientKey
());
loginUser
.
setDeviceType
(
client
.
getDeviceType
());
loginUser
.
setDeviceType
(
client
.
getDeviceType
());
...
...
ruoyi-auth/src/main/java/org/dromara/auth/service/impl/XcxPhoneAuthStrategy.java
0 → 100644
浏览文件 @
4f6e99cb
package
org
.
dromara
.
auth
.
service
.
impl
;
import
cn.dev33.satoken.stp.SaLoginModel
;
import
cn.dev33.satoken.stp.StpUtil
;
import
lombok.RequiredArgsConstructor
;
import
lombok.extern.slf4j.Slf4j
;
import
org.apache.dubbo.config.annotation.DubboReference
;
import
org.dromara.auth.domain.vo.LoginVo
;
import
org.dromara.auth.form.XcxPhoneLoginBody
;
import
org.dromara.auth.service.IAuthStrategy
;
import
org.dromara.auth.service.SysLoginService
;
import
org.dromara.common.core.utils.ValidatorUtils
;
import
org.dromara.common.json.utils.JsonUtils
;
import
org.dromara.common.satoken.utils.LoginHelper
;
import
org.dromara.common.weixin.dto.WxAuthPhoneParseReq
;
import
org.dromara.common.weixin.utils.WeixinUtils
;
import
org.dromara.system.api.RemoteUserService
;
import
org.dromara.system.api.domain.bo.RemoteWxUserBo
;
import
org.dromara.system.api.domain.vo.RemoteClientVo
;
import
org.dromara.system.api.model.XcxLoginUser
;
import
org.springframework.stereotype.Service
;
/**
* 邮件认证策略
*
* @author Michelle.Chung
*/
@Slf4j
@Service
(
"xcxPhone"
+
IAuthStrategy
.
BASE_NAME
)
@RequiredArgsConstructor
public
class
XcxPhoneAuthStrategy
implements
IAuthStrategy
{
private
final
SysLoginService
loginService
;
@DubboReference
private
RemoteUserService
remoteUserService
;
@Override
public
LoginVo
login
(
String
body
,
RemoteClientVo
client
)
{
XcxPhoneLoginBody
loginBody
=
JsonUtils
.
parseObject
(
body
,
XcxPhoneLoginBody
.
class
);
ValidatorUtils
.
validate
(
loginBody
);
String
phone
=
WeixinUtils
.
authParsePhone
(
new
WxAuthPhoneParseReq
()
.
setEncryptedData
(
loginBody
.
getEncryptedData
())
.
setIv
(
loginBody
.
getIv
())
.
setSessionKey
(
loginBody
.
getSessionKey
()));
remoteUserService
.
registerWxUserInfo
(
new
RemoteWxUserBo
()
.
setTenantId
(
loginBody
.
getTenantId
())
.
setOpenId
(
loginBody
.
getOpenId
())
.
setPhonenumber
(
phone
));
XcxLoginUser
loginUser
=
remoteUserService
.
getUserInfoByOpenid
(
loginBody
.
getOpenId
());
if
(
loginUser
==
null
)
{
throw
new
RuntimeException
(
"用户不存在"
);
}
loginUser
.
setClientKey
(
client
.
getClientKey
());
loginUser
.
setDeviceType
(
client
.
getDeviceType
());
SaLoginModel
model
=
new
SaLoginModel
();
model
.
setDevice
(
client
.
getDeviceType
());
// 自定义分配 不同用户体系 不同 token 授权时间 不设置默认走全局 yml 配置
// 例如: 后台用户30分钟过期 app用户1天过期
model
.
setTimeout
(
client
.
getTimeout
());
model
.
setActiveTimeout
(
client
.
getActiveTimeout
());
model
.
setExtra
(
LoginHelper
.
CLIENT_KEY
,
client
.
getClientId
());
// 生成token
LoginHelper
.
login
(
loginUser
,
model
);
LoginVo
loginVo
=
new
LoginVo
();
loginVo
.
setAccessToken
(
StpUtil
.
getTokenValue
());
loginVo
.
setExpireIn
(
StpUtil
.
getTokenTimeout
());
loginVo
.
setClientId
(
client
.
getClientId
());
loginVo
.
setOpenid
(
loginBody
.
getOpenId
());
return
loginVo
;
}
}
ruoyi-common/pom.xml
浏览文件 @
4f6e99cb
...
@@ -45,6 +45,7 @@
...
@@ -45,6 +45,7 @@
<module>
ruoyi-common-nacos
</module>
<module>
ruoyi-common-nacos
</module>
<module>
ruoyi-common-bus
</module>
<module>
ruoyi-common-bus
</module>
<module>
ruoyi-common-sse
</module>
<module>
ruoyi-common-sse
</module>
<module>
ruoyi-common-weixin
</module>
</modules>
</modules>
<artifactId>
ruoyi-common
</artifactId>
<artifactId>
ruoyi-common
</artifactId>
...
...
ruoyi-common/ruoyi-common-bom/pom.xml
浏览文件 @
4f6e99cb
...
@@ -215,6 +215,13 @@
...
@@ -215,6 +215,13 @@
<version>
${revision}
</version>
<version>
${revision}
</version>
</dependency>
</dependency>
<!-- 微信模块 -->
<dependency>
<groupId>
org.dromara
</groupId>
<artifactId>
ruoyi-common-weixin
</artifactId>
<version>
${revision}
</version>
</dependency>
<!-- 租户模块 -->
<!-- 租户模块 -->
<dependency>
<dependency>
<groupId>
org.dromara
</groupId>
<groupId>
org.dromara
</groupId>
...
@@ -257,6 +264,13 @@
...
@@ -257,6 +264,13 @@
<version>
${revision}
</version>
<version>
${revision}
</version>
</dependency>
</dependency>
<!-- 云上 -->
<dependency>
<groupId>
org.dromara
</groupId>
<artifactId>
ruoyi-common-ys
</artifactId>
<version>
${revision}
</version>
</dependency>
</dependencies>
</dependencies>
</dependencyManagement>
</dependencyManagement>
</project>
</project>
ruoyi-common/ruoyi-common-weixin/pom.xml
0 → 100644
浏览文件 @
4f6e99cb
<?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-weixin
</artifactId>
<description>
ruoyi-common-weixin 微信模块
</description>
<dependencies>
<dependency>
<groupId>
org.dromara
</groupId>
<artifactId>
ruoyi-common-core
</artifactId>
</dependency>
<!-- https://mvnrepository.com/artifact/com.google.guava/guava -->
<dependency>
<groupId>
com.google.guava
</groupId>
<artifactId>
guava
</artifactId>
<version>
30.0-jre
</version>
</dependency>
<dependency>
<groupId>
com.alibaba
</groupId>
<artifactId>
fastjson
</artifactId>
</dependency>
<dependency>
<groupId>
org.bouncycastle
</groupId>
<artifactId>
bcprov-jdk15on
</artifactId>
<version>
1.70
</version>
<!-- 请使用最新版本 -->
</dependency>
</dependencies>
</project>
ruoyi-common/ruoyi-common-weixin/src/main/java/org/dromara/common/weixin/config/WeixinConfiguration.java
0 → 100644
浏览文件 @
4f6e99cb
package
org
.
dromara
.
common
.
weixin
.
config
;
/**
* @author hzh
* @date 2024-11-12
* @desc 微信配置
**/
public
class
WeixinConfiguration
{
/**
* 微信登录地址
*/
public
static
final
String
AUTH_URL
=
"https://api.weixin.qq.com/sns/jscode2session?"
;
/**
* 类型
*/
public
static
final
String
AUTH_GRANT_TYPE
=
"authorization_code"
;
}
ruoyi-common/ruoyi-common-weixin/src/main/java/org/dromara/common/weixin/dto/WxAuthPhoneParseReq.java
0 → 100644
浏览文件 @
4f6e99cb
package
org
.
dromara
.
common
.
weixin
.
dto
;
import
lombok.Data
;
import
lombok.experimental.Accessors
;
/**
* @author wangxiao
*/
@Data
@Accessors
(
chain
=
true
)
public
class
WxAuthPhoneParseReq
{
/**
* 用户信息,base64编码
*/
private
String
encryptedData
;
/**
* 加密算法的初始向量
*/
private
String
iv
;
/**
* 用户登录凭证
*/
private
String
sessionKey
;
}
ruoyi-common/ruoyi-common-weixin/src/main/java/org/dromara/common/weixin/dto/WxAuthReq.java
0 → 100644
浏览文件 @
4f6e99cb
package
org
.
dromara
.
common
.
weixin
.
dto
;
import
lombok.Data
;
import
lombok.experimental.Accessors
;
/**
* @author hzh
* @date 2024-11-12
* @desc 微信授权请求参数
**/
@Data
@Accessors
(
chain
=
true
)
public
class
WxAuthReq
{
/**
* appid
*/
private
String
appid
;
/**
* 密钥
*/
private
String
secret
;
/**
* code
*/
private
String
code
;
}
ruoyi-common/ruoyi-common-weixin/src/main/java/org/dromara/common/weixin/dto/WxAuthResp.java
0 → 100644
浏览文件 @
4f6e99cb
package
org
.
dromara
.
common
.
weixin
.
dto
;
import
lombok.Data
;
/**
* @author hzh
* @date 2024-11-12
* @desc 微信授权返回
**/
@Data
public
class
WxAuthResp
{
/**
* openId
*/
private
String
openId
;
/**
* sessionKey
*/
private
String
sessionKey
;
}
ruoyi-common/ruoyi-common-weixin/src/main/java/org/dromara/common/weixin/utils/AesForWxGetPhoneNumber.java
0 → 100644
浏览文件 @
4f6e99cb
package
org
.
dromara
.
common
.
weixin
.
utils
;
import
com.alibaba.fastjson.JSON
;
import
org.bouncycastle.jce.provider.BouncyCastleProvider
;
import
javax.crypto.Cipher
;
import
javax.crypto.spec.IvParameterSpec
;
import
javax.crypto.spec.SecretKeySpec
;
import
java.nio.charset.StandardCharsets
;
import
java.security.AlgorithmParameters
;
import
java.security.Key
;
import
java.security.NoSuchAlgorithmException
;
import
java.security.Security
;
import
java.security.spec.InvalidParameterSpecException
;
import
java.util.Base64
;
/**
* 用于解密微信手机号
*
* @author tyj
*/
public
class
AesForWxGetPhoneNumber
{
/**
* 加密方式
*/
private
static
final
String
KEY_ALGORITHM
=
"AES"
;
/**
* 避免重复new生成多个BouncyCastleProvider对象,因为GC回收不了,会造成内存溢出
* 只在第一次调用decrypt()方法时才new 对象
*/
private
static
boolean
initialized
=
false
;
/**
* 用于Base64解密
*/
private
final
Base64
.
Decoder
decoder
=
Base64
.
getDecoder
();
/**
* 待解密的数据
*/
private
final
String
originalContent
;
/**
* 会话密钥sessionKey
*/
private
final
String
encryptKey
;
/**
* 加密算法的初始向量
*/
private
final
String
iv
;
public
AesForWxGetPhoneNumber
(
String
originalContent
,
String
encryptKey
,
String
iv
)
{
this
.
originalContent
=
originalContent
;
this
.
encryptKey
=
encryptKey
;
this
.
iv
=
iv
;
}
/**
* BouncyCastle作为安全提供,防止我们加密解密时候因为jdk内置的不支持改模式运行报错。
**/
private
static
void
initialize
()
{
if
(
initialized
)
{
return
;
}
Security
.
addProvider
(
new
BouncyCastleProvider
());
initialized
=
true
;
}
/**
* 生成 AlgorithmParameters
*
* @param iv iv
* @return AlgorithmParameters
*/
private
static
AlgorithmParameters
generateIv
(
byte
[]
iv
)
throws
NoSuchAlgorithmException
,
InvalidParameterSpecException
{
AlgorithmParameters
params
=
AlgorithmParameters
.
getInstance
(
KEY_ALGORITHM
);
params
.
init
(
new
IvParameterSpec
(
iv
));
return
params
;
}
/**
* AES解密
* 填充模式AES/CBC/PKCS7Padding
* 解密模式128
*
* @return 解密后的信息对象
*/
public
WxPhoneDecryptInfo
decrypt
()
throws
Exception
{
initialize
();
//数据填充方式
Cipher
cipher
=
Cipher
.
getInstance
(
"AES/CBC/PKCS7Padding"
);
Key
sKeySpec
=
new
SecretKeySpec
(
decoder
.
decode
(
this
.
encryptKey
),
KEY_ALGORITHM
);
// 初始化
cipher
.
init
(
Cipher
.
DECRYPT_MODE
,
sKeySpec
,
generateIv
(
decoder
.
decode
(
this
.
iv
)));
byte
[]
data
=
cipher
.
doFinal
(
decoder
.
decode
(
this
.
originalContent
));
String
dataStr
=
new
String
(
data
,
StandardCharsets
.
UTF_8
);
return
JSON
.
toJavaObject
(
JSON
.
parseObject
(
dataStr
),
WxPhoneDecryptInfo
.
class
);
}
}
ruoyi-common/ruoyi-common-weixin/src/main/java/org/dromara/common/weixin/utils/WeixinUtils.java
0 → 100644
浏览文件 @
4f6e99cb
package
org
.
dromara
.
common
.
weixin
.
utils
;
import
cn.hutool.http.HttpRequest
;
import
com.alibaba.fastjson.JSONObject
;
import
com.google.common.base.Joiner
;
import
lombok.extern.slf4j.Slf4j
;
import
org.dromara.common.weixin.dto.WxAuthPhoneParseReq
;
import
org.dromara.common.weixin.dto.WxAuthReq
;
import
org.dromara.common.weixin.dto.WxAuthResp
;
import
java.util.HashMap
;
import
java.util.Map
;
import
static
org
.
dromara
.
common
.
weixin
.
config
.
WeixinConfiguration
.
AUTH_GRANT_TYPE
;
import
static
org
.
dromara
.
common
.
weixin
.
config
.
WeixinConfiguration
.
AUTH_URL
;
/**
* @author hzh
* @date 2024-11-12
* @desc 微信工具类
**/
@Slf4j
public
class
WeixinUtils
{
private
static
String
buildWxLoginUrl
(
Map
<
String
,
String
>
params
)
{
return
AUTH_URL
.
concat
(
Joiner
.
on
(
"&"
).
withKeyValueSeparator
(
"="
).
join
(
params
));
}
/**
* 微信授权
*
* @param req 请求参数
* @return 返回结果
*/
public
static
WxAuthResp
auth
(
WxAuthReq
req
)
{
Map
<
String
,
String
>
params
=
new
HashMap
<>(
8
);
params
.
put
(
"appid"
,
req
.
getAppid
());
params
.
put
(
"secret"
,
req
.
getSecret
());
params
.
put
(
"js_code"
,
req
.
getCode
());
params
.
put
(
"grant_type"
,
AUTH_GRANT_TYPE
);
WxAuthResp
resp
;
try
{
String
result
=
buildWxLoginUrl
(
params
);
HttpRequest
httpRequest
=
HttpRequest
.
get
(
result
);
String
response
=
httpRequest
.
execute
().
body
();
log
.
info
(
"微信返回参数 response:{}"
,
response
);
String
openid
=
JSONObject
.
parseObject
(
response
).
getString
(
"openid"
);
//调用微信获取手机号功能,需要同步拿到sessionKey
String
sessionKey
=
JSONObject
.
parseObject
(
response
).
getString
(
"session_key"
);
log
.
info
(
"code:{},openId:{},sessionKey:{}"
,
req
.
getCode
(),
openid
,
sessionKey
);
resp
=
new
WxAuthResp
();
resp
.
setOpenId
(
openid
);
resp
.
setSessionKey
(
sessionKey
);
}
catch
(
Exception
e
)
{
log
.
error
(
"code to auth error"
,
e
);
throw
new
RuntimeException
(
"微信登录失败!"
);
}
return
resp
;
}
public
static
String
authParsePhone
(
WxAuthPhoneParseReq
vo
)
{
String
encryptedData
=
vo
.
getEncryptedData
();
String
sessionKey
=
vo
.
getSessionKey
();
String
iv
=
vo
.
getIv
();
try
{
AesForWxGetPhoneNumber
aesForWxGetPhoneNumber
=
new
AesForWxGetPhoneNumber
(
encryptedData
,
sessionKey
,
iv
);
WxPhoneDecryptInfo
decrypt
=
aesForWxGetPhoneNumber
.
decrypt
();
//解密拿到手机号
return
decrypt
.
getPhoneNumber
();
}
catch
(
Exception
e
)
{
log
.
error
(
"parse phone error"
,
e
);
throw
new
RuntimeException
(
"微信授权手机号解析失败。"
);
}
}
}
ruoyi-common/ruoyi-common-weixin/src/main/java/org/dromara/common/weixin/utils/WxPhoneDecryptInfo.java
0 → 100644
浏览文件 @
4f6e99cb
package
org
.
dromara
.
common
.
weixin
.
utils
;
import
lombok.Data
;
/**
* @author tyj
*/
@Data
public
class
WxPhoneDecryptInfo
{
private
String
phoneNumber
;
private
String
purePhoneNumber
;
private
int
countryCode
;
private
String
watermark
;
}
ruoyi-common/ruoyi-common-ys/pom.xml
0 → 100644
浏览文件 @
4f6e99cb
<?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-ys
</artifactId>
<description>
ruoyi-common-ys 云上接口模块
</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-ys/src/main/java/org/dromara/common/ys/Api.java
0 → 100644
浏览文件 @
4f6e99cb
package
org
.
dromara
.
common
.
ys
;
import
cn.hutool.core.date.StopWatch
;
import
cn.hutool.core.text.CharSequenceUtil
;
import
cn.hutool.crypto.SecureUtil
;
import
cn.hutool.http.ContentType
;
import
com.alibaba.fastjson.JSON
;
import
lombok.extern.slf4j.Slf4j
;
import
org.dromara.common.ys.base.HttpKit
;
import
org.dromara.common.ys.base.PayKit
;
import
org.dromara.common.ys.common.ApiHttpResponse
;
import
org.dromara.common.ys.config.Config
;
import
org.dromara.common.ys.config.ProdConfig
;
import
org.dromara.common.ys.enums.ApiEnum
;
import
org.dromara.common.ys.enums.Domain
;
import
org.dromara.common.ys.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
(
com
.
wenhe
.
base
.
base
.
RequestMethodEnum
method
,
String
urlPrefix
,
String
urlSuffix
,
String
userId
,
String
body
)
{
return
v1
(
method
,
urlPrefix
,
urlSuffix
,
userId
,
null
,
body
,
null
);
}
public
static
ApiHttpResponse
v1
(
com
.
wenhe
.
base
.
base
.
RequestMethodEnum
method
,
String
urlPrefix
,
String
urlSuffix
,
String
userId
,
Map
<
String
,
Object
>
params
,
String
body
)
{
return
v1
(
method
,
urlPrefix
,
urlSuffix
,
userId
,
params
,
body
,
null
);
}
/**
* v1 接口统一执行人口
*
* @param method {@link com.wenhe.base.base.RequestMethodEnum} 请求方法
* @param urlPrefix 可通过 {@link org.dromara.common.ys.enums.Domain}来获取
* @param urlSuffix 可通过 {@link org.dromara.common.ys.enums.ApiEnum} 来获取,URL挂载参数需要自行拼接
* @param userId 用户ID
* @param params Get 接口请求参数
* @param body 接口请求参数
* @param file 文件
* @return 请求返回的结果
*/
public
static
ApiHttpResponse
v1
(
com
.
wenhe
.
base
.
base
.
RequestMethodEnum
method
,
String
urlPrefix
,
String
urlSuffix
,
String
userId
,
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
=
userId
;
if
(
method
==
com
.
wenhe
.
base
.
base
.
RequestMethodEnum
.
GET
)
{
return
get
(
urlPrefix
.
concat
(
urlSuffix
),
authorization
,
null
);
}
else
if
(
method
==
com
.
wenhe
.
base
.
base
.
RequestMethodEnum
.
POST
)
{
return
post
(
urlPrefix
.
concat
(
urlSuffix
),
authorization
,
body
);
}
else
if
(
method
==
com
.
wenhe
.
base
.
base
.
RequestMethodEnum
.
DELETE
)
{
return
delete
(
urlPrefix
.
concat
(
urlSuffix
),
authorization
,
body
);
}
else
if
(
method
==
com
.
wenhe
.
base
.
base
.
RequestMethodEnum
.
UPLOAD
)
{
return
upload
(
urlPrefix
.
concat
(
urlSuffix
),
authorization
,
body
,
file
);
}
else
if
(
method
==
com
.
wenhe
.
base
.
base
.
RequestMethodEnum
.
PATCH
)
{
return
patch
(
urlPrefix
.
concat
(
urlSuffix
),
authorization
,
body
);
}
else
if
(
method
==
com
.
wenhe
.
base
.
base
.
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
,
isProd
(
url
)));
}
/**
* 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
,
isProd
(
url
)));
}
/**
* 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
,
isProd
(
url
)));
}
/**
* 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
,
isProd
(
url
)));
}
/**
* 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
,
isProd
(
url
)));
}
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
,
boolean
isProd
)
{
Map
<
String
,
String
>
headers
=
getBaseHeaders
(
authorization
);
String
signKey
=
Config
.
SIGN_KEY
;
String
corpId
=
Config
.
CORP_ID
;
if
(
isProd
)
{
signKey
=
ProdConfig
.
SIGN_KEY
;
corpId
=
ProdConfig
.
CORP_ID
;
}
headers
.
put
(
"Accept-language"
,
"zh-CN,zh"
);
headers
.
put
(
"Content-Type"
,
ContentType
.
JSON
.
toString
());
headers
.
put
(
"reqType"
,
Config
.
REQ_TYPE
);
headers
.
put
(
"corpId"
,
corpId
);
headers
.
put
(
"timestamp"
,
System
.
currentTimeMillis
()
+
""
);
headers
.
put
(
"user"
,
authorization
);
headers
.
put
(
"sign"
,
md5Sign
(
headers
.
get
(
"corpId"
),
headers
.
get
(
"timestamp"
),
signKey
));
return
headers
;
}
public
static
String
md5Sign
(
String
bussId
,
String
reqId
,
String
signKey
)
{
String
sign
=
SecureUtil
.
md5
(
bussId
+
"&"
+
reqId
);
if
(
CharSequenceUtil
.
isNotEmpty
(
signKey
))
{
sign
=
SecureUtil
.
md5
(
signKey
+
"&"
+
sign
);
}
return
sign
;
}
public
static
Map
<
String
,
String
>
getBaseHeaders
(
String
authorization
)
{
Map
<
String
,
String
>
headers
=
new
HashMap
<>(
5
);
headers
.
put
(
"Accept"
,
ContentType
.
JSON
.
toString
());
headers
.
put
(
"Authorization"
,
authorization
);
return
headers
;
}
}
ruoyi-common/ruoyi-common-ys/src/main/java/org/dromara/common/ys/base/AbstractHttpDelegate.java
0 → 100644
浏览文件 @
4f6e99cb
package
org
.
dromara
.
common
.
ys
.
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.ys.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-ys/src/main/java/org/dromara/common/ys/base/HttpKit.java
0 → 100644
浏览文件 @
4f6e99cb
package
org
.
dromara
.
common
.
ys
.
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-ys/src/main/java/org/dromara/common/ys/base/PayKit.java
0 → 100644
浏览文件 @
4f6e99cb
package
org
.
dromara
.
common
.
ys
.
base
;
import
cn.hutool.core.util.CharsetUtil
;
import
java.io.UnsupportedEncodingException
;
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-ys/src/main/java/org/dromara/common/ys/base/RequestMethodEnum.java
0 → 100644
浏览文件 @
4f6e99cb
package
com
.
wenhe
.
base
.
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-ys/src/main/java/org/dromara/common/ys/common/ApiHttpResponse.java
0 → 100644
浏览文件 @
4f6e99cb
package
org
.
dromara
.
common
.
ys
.
common
;
import
lombok.Data
;
/**
* @author hzh
* @date 2024-10-15
* @desc 响应实体
**/
@Data
public
class
ApiHttpResponse
{
/**
* 业务处理失败时,错误提示信息
*/
private
String
tips
;
/**
* 当前时间戳
*/
private
Long
timestamp
;
/**
* 请求唯一标识,可以将此标识提供给技术人员,方便快速定位错误日志
*/
private
String
requuid
;
/**
* 业务处理失败时,异常信息,用于开发阶段快速定位问题,不能当做业务逻辑字段使用
*/
private
String
errMsg
;
/**
* 业务错误代码 1表示成功,其他值的含义参见具体业务接口文档 ,
*/
private
String
errCode
;
/**
* 环境标识 test:测试环境,prod:生产线上环境
*/
private
String
env
;
/**
* 返回数据
*/
private
String
data
;
}
ruoyi-common/ruoyi-common-ys/src/main/java/org/dromara/common/ys/common/Code.java
0 → 100644
浏览文件 @
4f6e99cb
package
org
.
dromara
.
common
.
ys
.
common
;
import
lombok.AllArgsConstructor
;
import
lombok.Getter
;
/**
* code返回值
*
* @author wenhe
*/
@Getter
@AllArgsConstructor
public
enum
Code
{
/**
* 成功
*/
SUCCESS
(
"1"
,
"成功"
);
private
final
String
code
;
private
final
String
message
;
}
ruoyi-common/ruoyi-common-ys/src/main/java/org/dromara/common/ys/common/PageInfo.java
0 → 100644
浏览文件 @
4f6e99cb
package
org
.
dromara
.
common
.
ys
.
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-ys/src/main/java/org/dromara/common/ys/config/Config.java
0 → 100644
浏览文件 @
4f6e99cb
package
org
.
dromara
.
common
.
ys
.
config
;
/**
* 配置项
*
* @author wenhe
*/
public
interface
Config
{
/**
* 请求来源
*/
String
REQ_TYPE
=
"8"
;
/**
* 企业ID
*/
String
CORP_ID
=
"3245263884b744eb95a2d75748138bba"
;
/**
* 签名key
*/
String
SIGN_KEY
=
"1729128513420"
;
/**
* 默认用户id
*/
String
USE_ID
=
"15301818478"
;
}
ruoyi-common/ruoyi-common-ys/src/main/java/org/dromara/common/ys/config/ProdConfig.java
0 → 100644
浏览文件 @
4f6e99cb
package
org
.
dromara
.
common
.
ys
.
config
;
/**
* 配置项
*
* @author wenhe
*/
public
interface
ProdConfig
{
/**
* 请求来源
*/
String
REQ_TYPE
=
"8"
;
/**
* 企业ID
*/
String
CORP_ID
=
"c619f1b600cf483eab6a142fa0e8e10b"
;
/**
* 签名key
*/
String
SIGN_KEY
=
"1729128597852"
;
}
ruoyi-common/ruoyi-common-ys/src/main/java/org/dromara/common/ys/constant/Cplx.java
0 → 100644
浏览文件 @
4f6e99cb
package
org
.
dromara
.
common
.
ys
.
constant
;
import
lombok.AllArgsConstructor
;
import
lombok.Getter
;
/**
* 产品类型
*
* @author wenhe
*/
@Getter
@AllArgsConstructor
public
enum
Cplx
{
/**
* 国内机票
*/
DOMESTIC
(
"10901"
),
/**
* 国际机票
*/
INTERNATIONAL
(
"10902"
),
/**
* 酒店
*/
HOTEL
(
"10903"
),
/**
* 火车票
*/
TRAIN
(
"10904"
),
/**
* 用车
*/
CAR
(
"10906"
),
/**
* 签证
*/
VISA
(
"10913"
),
/**
* 旅游
*/
TOUR
(
"10918"
);
private
final
String
code
;
}
ruoyi-common/ruoyi-common-ys/src/main/java/org/dromara/common/ys/constant/IDType.java
0 → 100644
浏览文件 @
4f6e99cb
package
org
.
dromara
.
common
.
ys
.
constant
;
/**
* 证件类型
*
* @author wenhe
*/
public
enum
IDType
{
/**
* 身份证
*/
NI
,
/**
* 护照
*/
PP
,
/**
* 其他
*/
ID
}
ruoyi-common/ruoyi-common-ys/src/main/java/org/dromara/common/ys/constant/Sex.java
0 → 100644
浏览文件 @
4f6e99cb
package
org
.
dromara
.
common
.
ys
.
constant
;
import
lombok.AllArgsConstructor
;
import
lombok.Getter
;
/**
* @author wenhe
*/
@Getter
@AllArgsConstructor
public
enum
Sex
{
/**
* 男
*/
M
,
/**
* 女
*/
F
}
ruoyi-common/ruoyi-common-ys/src/main/java/org/dromara/common/ys/constant/Status.java
0 → 100644
浏览文件 @
4f6e99cb
package
org
.
dromara
.
common
.
ys
.
constant
;
import
lombok.AllArgsConstructor
;
import
lombok.Getter
;
@Getter
@AllArgsConstructor
public
enum
Status
{
TRUE
(
1
),
FALSE
(
0
);
private
final
int
code
;
}
ruoyi-common/ruoyi-common-ys/src/main/java/org/dromara/common/ys/constant/TripType.java
0 → 100644
浏览文件 @
4f6e99cb
package
org
.
dromara
.
common
.
ys
.
constant
;
import
lombok.AllArgsConstructor
;
import
lombok.Getter
;
/**
* @author wenhe
*/
@Getter
@AllArgsConstructor
public
enum
TripType
{
/**
* 应公
*/
PUBLIC
(
"1"
),
/**
* 应私
*/
PRIVATE
(
"2"
);
private
final
String
code
;
}
ruoyi-common/ruoyi-common-ys/src/main/java/org/dromara/common/ys/constant/airport/DateType.java
0 → 100644
浏览文件 @
4f6e99cb
package
org
.
dromara
.
common
.
ys
.
constant
.
airport
;
import
lombok.AllArgsConstructor
;
import
lombok.Getter
;
/**
* @author wenhe
*/
@Getter
@AllArgsConstructor
public
enum
DateType
{
/**
* 预定日期
*/
PRE_DATE
(
1
,
"预定日期"
),
/**
* 出行日期
*/
TRAVEL_DATE
(
2
,
"出行日期"
),
/**
* 出票/确认日期
*/
TICKET_DATE
(
3
,
"出票/确认日期"
);
private
final
int
code
;
private
final
String
desc
;
}
ruoyi-common/ruoyi-common-ys/src/main/java/org/dromara/common/ys/constant/airport/OrderStatus.java
0 → 100644
浏览文件 @
4f6e99cb
package
org
.
dromara
.
common
.
ys
.
constant
.
airport
;
import
lombok.AllArgsConstructor
;
import
lombok.Getter
;
/**
* @author wenhe
*/
@Getter
@AllArgsConstructor
public
enum
OrderStatus
{
/**
* 申请中
*/
APPLY
(
"0"
,
"申请中"
),
/**
* 待送审
*/
WAIT_SEND
(
"1"
,
"待送审"
),
/**
* 审批中
*/
AUDIT
(
"2"
,
"审批中"
),
/**
* 待支付
*/
WAIT_PAY
(
"3"
,
"待支付"
),
/**
* 待出票
*/
WAIT_OUT
(
"4"
,
"待出票"
),
/**
* 已出票
*/
OUT_TICKET
(
"6"
,
"已出票"
),
/**
* 已取消
*/
CANCEL
(
"7"
,
"已取消"
),
/**
* 审批拒绝
*/
REFUSE_AUDIT
(
"9"
,
"审批拒绝"
),
/**
* 出票中
*/
OUT_TICKETING
(
"10"
,
"出票中"
);
private
final
String
code
;
private
final
String
desc
;
}
ruoyi-common/ruoyi-common-ys/src/main/java/org/dromara/common/ys/constant/airport/PersonType.java
0 → 100644
浏览文件 @
4f6e99cb
package
org
.
dromara
.
common
.
ys
.
constant
.
airport
;
import
lombok.AllArgsConstructor
;
import
lombok.Getter
;
/**
* @author wenhe
*/
@Getter
@AllArgsConstructor
public
enum
PersonType
{
/**
* 成人
*/
ADULT
(
"1"
),
/**
* 儿童
*/
CHILDREN
(
"2"
),
/**
* 婴儿
*/
BABY
(
"3"
);
private
final
String
code
;
}
ruoyi-common/ruoyi-common-ys/src/main/java/org/dromara/common/ys/constant/airport/SendMode.java
0 → 100644
浏览文件 @
4f6e99cb
package
org
.
dromara
.
common
.
ys
.
constant
.
airport
;
import
lombok.AllArgsConstructor
;
import
lombok.Getter
;
/**
* @author wenhe
*/
@Getter
@AllArgsConstructor
public
enum
SendMode
{
/**
* 不需要报销凭证
*/
NO_EXAM
(
"0"
,
"不需要报销凭证"
),
/**
* 邮寄
* /
*/
MAIL
(
"1"
,
"邮寄"
),
/**
* 公司统一配送
*/
COMPANY
(
"2"
,
"公司统一配送"
);
private
final
String
code
;
private
final
String
desc
;
}
ruoyi-common/ruoyi-common-ys/src/main/java/org/dromara/common/ys/constant/airport/VoyageType.java
0 → 100644
浏览文件 @
4f6e99cb
package
org
.
dromara
.
common
.
ys
.
constant
.
airport
;
import
lombok.AllArgsConstructor
;
import
lombok.Getter
;
/**
* 航程类型
*
* @author wenhe
*/
@Getter
@AllArgsConstructor
public
enum
VoyageType
{
/**
* 单程
*/
ONE
(
1
,
"单程"
),
/**
* 往返
*/
TWO
(
2
,
"往返"
),
/**
* 连程
*/
THREE
(
3
,
"连程"
),
/**
* 缺口程
*/
FOUR
(
4
,
"缺口程"
);
private
final
Integer
code
;
private
final
String
desc
;
}
ruoyi-common/ruoyi-common-ys/src/main/java/org/dromara/common/ys/constant/org/AppTravel.java
0 → 100644
浏览文件 @
4f6e99cb
package
org
.
dromara
.
common
.
ys
.
constant
.
org
;
import
lombok.AllArgsConstructor
;
import
lombok.Getter
;
/**
* @author hzh
* @date 2024-10-23
* @desc 出差审批属性
**/
@Getter
@AllArgsConstructor
public
enum
AppTravel
{
/**
* 审批
*/
APPROVAL
(
0
),
/**
* 全免
*/
ALL_FREE
(
1
),
/**
* 个免
*/
PERSONAL_FREE
(
2
);
private
final
int
travel
;
}
ruoyi-common/ruoyi-common-ys/src/main/java/org/dromara/common/ys/constant/org/BookRange.java
0 → 100644
浏览文件 @
4f6e99cb
package
org
.
dromara
.
common
.
ys
.
constant
.
org
;
import
lombok.AllArgsConstructor
;
import
lombok.Getter
;
/**
* 预定范围
*
* @author wenhe
*/
@Getter
@AllArgsConstructor
public
enum
BookRange
{
//预订范围, 0:,1:为本部门订票,2:为全公司预订,3:指定部门, 默认为0
/**
* 本人预订
*/
SELF
(
0
),
/**
* 本部门预订
*/
DEPT
(
1
),
/**
* 全公司预订
*/
COMPANY
(
2
),
/**
* 指定部门预订
*/
APPOINT_DEPT
(
3
);
private
final
int
range
;
}
ruoyi-common/ruoyi-common-ys/src/main/java/org/dromara/common/ys/constant/org/PopLevel.java
0 → 100644
浏览文件 @
4f6e99cb
package
org
.
dromara
.
common
.
ys
.
constant
.
org
;
import
lombok.AllArgsConstructor
;
import
lombok.Getter
;
/**
* 员工权限等级
*
* @author wenhe
*/
@Getter
@AllArgsConstructor
public
enum
PopLevel
{
/**
* 员工
*/
STAFF
(
1
),
/**
* 主管
*/
CHARGE
(
3
),
/**
* 经理
*/
MANAGER
(
5
);
private
final
int
level
;
}
ruoyi-common/ruoyi-common-ys/src/main/java/org/dromara/common/ys/constant/vehicles/UseType.java
0 → 100644
浏览文件 @
4f6e99cb
package
org
.
dromara
.
common
.
ys
.
constant
.
vehicles
;
import
lombok.AllArgsConstructor
;
import
lombok.Getter
;
/**
* @author hzh
* @date 2024-10-22
* @desc 用车类型
**/
@Getter
@AllArgsConstructor
public
enum
UseType
{
/**
* 1日包
*/
DAY
(
"1"
),
/**
* 半日包
*/
HALF_DAY
(
"2"
),
/**
* 接机
*/
RECEIVE_AIRPORT
(
"4"
),
/**
* 送机
*/
ARRIVE_AIRPORT
(
"5"
),
/**
* 接站
*/
RECEIVE_STATION
(
"6"
),
/**
* 送站
*/
ARRIVE_STATION
(
"7"
),
/**
* 即时
*/
IMMEDIATE
(
"8"
),
/**
* 预约
*/
PRE_BOOK
(
"9"
);
private
final
String
code
;
}
ruoyi-common/ruoyi-common-ys/src/main/java/org/dromara/common/ys/enums/ApiEnum.java
0 → 100644
浏览文件 @
4f6e99cb
package
org
.
dromara
.
common
.
ys
.
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-ys/src/main/java/org/dromara/common/ys/enums/Domain.java
0 → 100644
浏览文件 @
4f6e99cb
package
org
.
dromara
.
common
.
ys
.
enums
;
/**
* 获取可用域名
*
* @author wenhe
*/
public
interface
Domain
{
/**
* 获取域名
*
* @return 返回域名
*/
String
getDomain
();
}
ruoyi-common/ruoyi-common-ys/src/main/java/org/dromara/common/ys/enums/DomainEnum.java
0 → 100644
浏览文件 @
4f6e99cb
package
org
.
dromara
.
common
.
ys
.
enums
;
/**
* 域名枚举
*
* @author wenhe
*/
public
enum
DomainEnum
implements
Domain
{
/**
* 测试域名
*/
TEST
(
"https://testxossapi.ystmc.com"
),
/**
* 生产域名
*/
PROD
(
"https://ossapi.ystmc.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-ys/src/main/java/org/dromara/common/ys/enums/airport/AirportApiEnum.java
0 → 100644
浏览文件 @
4f6e99cb
package
org
.
dromara
.
common
.
ys
.
enums
.
airport
;
import
org.dromara.common.ys.enums.ApiEnum
;
/**
* 公共资源接口
*
* @author wenhe
*/
public
enum
AirportApiEnum
implements
ApiEnum
{
/**
* 航班查询(全部)
*/
QUERY_FLIGHT
(
"/open/plane/shopping/queryFlight"
,
"查询指定航程和日期的航班舱位数据,一次性返回全部航班及舱位价格数据。由于在线接口展示的是map,不便于阅读,请在网页右上角点击下载“航班查询”接口详细文档"
),
/**
* 航班列表最低价查询(第一屏)
*/
QUERY_FLIGHT_MIN_PRICE
(
"/open/plane/shopping/queryFlightMinPrice"
,
"机票航班列表查询, 每个航班只返回一条最低价数据。"
),
/**
* 指定航班获取舱位价格(第二屏)
*/
QUERY_MORE_CABIN
(
"/open/plane/shopping/queryMoreCabin"
,
"根据指定航班获取舱位价格列表数据集合(第二屏查询),与航班列表最低价查询(第一屏)配合使用。"
),
/**
* 获取经停信息
*/
QUERY_FLIGHT_STOP
(
"/open/plane/shopping/queryFlightStop"
,
"根据指定航班和出发日期获取经停站信息。"
),
/**
* 获取退改规则
*/
QUERY_FLIGHT_RULE
(
"/open/plane/shopping/queryFlightRule"
,
"根据指定航司舱位,获取退改签规则"
),
/**
* 匹配差旅标准
*/
MATCH_CLBZ
(
"/open/plane/shopping/matchClbz"
,
"重新匹配差旅标准接口,在航班查询接口已经返回了差标的匹配结果,如想在订单提交之前重新匹配差标,可使用此接口。"
),
/**
* 航段验价
*/
CHECK_PRICE_FOR_FLIGHT
(
"/open/plane/shopping/checkPriceForFlight"
,
"根据航段验价接口,下单前可使用此接口进行验价。由于中航信限制或航司舱位特殊要求等其他方面的原因,不是所有情况都能根据航段获取到价格。建议生成编码之后再执行价格校验。"
),
/**
* 验舱
*/
CHECK_CABIN
(
"/open/plane/shopping/checkCabin"
,
"根据航班舱位信息验证舱位座位数"
),
/**
* 验证三方协议白名单
*/
CHECK_XYH_BMD
(
"/open/plane/shopping/checkXyhBmd"
,
"验证三方协议白名单"
),
/**
* 订单列表
*/
QUERY_ORDER_LIST
(
"/open/plane/order/queryOrderList"
,
"根据订单编号查看机票订单详情信息,订单不存在时,data为null"
),
/**
* 创建订单
*/
BOOK_ORDER
(
"/open/plane/shopping/bookOrder"
,
"机票下单接口,生成机票订单。单程多人会生成一个订单(一个订单最多支持9个乘机人);多程如果选择的航司不一样,或者价格政策不相同,会生成多个订单,具体以返回的订单号为准。"
),
/**
* 订单详情
*/
QUERY_TK_ORDER
(
"/open/plane/order/queryTkOrder"
,
"根据订单编号查看机票订单详情信息,订单不存在时,data为null"
),
/**
* 订单验票
*/
CHECK_PRICE_FOR_ORDER
(
"/open/plane/order/checkPriceForOrder"
,
"根据机票订单编号校验订单价格,可用于支付前校验一下订单价格。"
),
/**
* 确认出票
*/
CONFIRM_TICKET
(
"/open/plane/order/confirmTicket"
,
"机票订单确认出票;调用此接口,会自动扣款(或欠款记账)并出票。前提是企业必须开通预存或月结欠款支付,否则会提示账户问题导致出票不成功。"
),
/**
* 取消订单
*/
CANCEL_TK_ORDER
(
"/open/plane/order/cancelTkOrder"
,
"机票订单取消;已申请、已订座状态才能取消,出票中、已出票等状态无法取消。"
),
/**
* 获取客票状态
*/
PLANE_CHECK_STATE
(
"/open/plane/order/planeCheckState"
,
"根据订单编号获取订单下所有乘客机票的使用状态,支持正常订单和改签订单。"
),
/**
* 根据票号获取客票状态
*/
GET_TICKET_STATUS
(
"/open/plane/order/getTicketStatus"
,
"根据票号获取客票状态"
),
/**
* 获取可退航段
*/
GET_VOYAGE_FOR_REFUND
(
"/open/plane/refund/getVoyageForRefund"
,
"根据订单编号获取可退票的航段和乘机人集合, 必须先调用此接口获取可退航段,在页面上展示让用户选择要退的航段或乘机人,再调用退票申请接口。"
),
/**
* 申请退票
*/
ADD_REFUND_ORDER
(
"/open/plane/refund/addRefundOrder"
,
"退票下单接口,生成机票退票单。先调用获取可退航段接口,再调用此接口。此操作必须在正常订单是已出票后的状态下,并且乘机人和航段没有发生过退改才可执行。"
),
/**
* 退票单详情
*/
QUERY_REFUND_ORDER
(
"/open/plane/refund/queryRefundOrder"
,
"根据退票订单编号或者原订单编号获取退票单详情集合,订单不存在时,data为null"
),
/**
* 取消退票单
*/
CANCEL_REFUND_ORDER
(
"/open/plane/refund/cancelRefundOrder"
,
"机票退票订单取消,此操作必须在退票单状态是已申请的状态下执行,如果退票单已经是办理中,则无法取消。"
),
/**
* 退票单列表
*/
REFUND_QUERY_LIST
(
"/open/plane/refund/queryList"
,
"退票单列表"
),
/**
* 获取可改签航段
*/
GET_VOYAGE_FOR_CHANGE
(
"/open/plane/change/getVoyageForChange"
,
"获取可改签的航段集合,先调用此接口获取可改签的航段或乘机人,在页面上展示让用户选择,再调用申请改签接口。"
),
/**
* 改签航班查询
*/
QUERY_FLIGHT_FOR_CHANGE
(
"/open/plane/change/queryFlightForChange"
,
"改签航班查询,指定出发日期查询同一航司下所有航班原舱位或高于原舱位的数据。"
),
/**
* 申请改签
*/
ADD_CHANGE_ORDER
(
"/open/plane/change/addChangeOrder"
,
"改签下单接口,生成改签订单。先调用获取可改签航段接口,再调用申请改签接口。此操作必须在订单是已出票后的状态下,并且乘机人和航段没有发生过退改才可执行。"
),
/**
* 改签单详情
*/
QUERY_CHANGE_ORDER
(
"/open/plane/change/queryChangeOrder"
,
"根据改签单号或者原订单编号获取改签单详情集合,订单不存在时,data为null"
),
/**
* 取消改签单
*/
CANCEL_CHANGE_ORDER
(
"/open/plane/change/cancelChangeOrder"
,
"机票改签订单取消,此操作必须在订单状态是已申请的状态下执行"
),
/**
* 退签单列表
*/
CHANGE_QUERY_LIST
(
"/open/plane/change/queryList"
,
"退签单列表"
),
/**
* 改签单调度
*/
CHANGE_DISPATCH
(
"/open/plane/change/dispatch"
,
"改签单调度"
);
/**
* 接口URL
*/
private
final
String
url
;
/**
* 接口描述
*/
private
final
String
desc
;
AirportApiEnum
(
String
url
,
String
desc
)
{
this
.
url
=
url
;
this
.
desc
=
desc
;
}
/**
* 获取枚举URL
*
* @return 枚举编码
*/
@Override
public
String
getUrl
()
{
return
url
;
}
/**
* 获取详细的描述信息
*
* @return 描述信息
*/
@Override
public
String
getDesc
()
{
return
desc
;
}
@Override
public
String
toString
()
{
return
url
;
}
}
ruoyi-common/ruoyi-common-ys/src/main/java/org/dromara/common/ys/enums/insurance/InsuranceApiEnum.java
0 → 100644
浏览文件 @
4f6e99cb
package
org
.
dromara
.
common
.
ys
.
enums
.
insurance
;
import
org.dromara.common.ys.enums.ApiEnum
;
/**
* 保险相关接口
*
* @author wenhe
*/
public
enum
InsuranceApiEnum
implements
ApiEnum
{
/**
* 获取保险产品列表
*/
GET_BX_CP
(
"/open/insurance/shopping/getBxCP"
,
"获取保险产品列表"
);
/**
* 接口URL
*/
private
final
String
url
;
/**
* 接口描述
*/
private
final
String
desc
;
InsuranceApiEnum
(
String
url
,
String
desc
)
{
this
.
url
=
url
;
this
.
desc
=
desc
;
}
/**
* 获取枚举URL
*
* @return 枚举编码
*/
@Override
public
String
getUrl
()
{
return
url
;
}
/**
* 获取详细的描述信息
*
* @return 描述信息
*/
@Override
public
String
getDesc
()
{
return
desc
;
}
@Override
public
String
toString
()
{
return
url
;
}
}
ruoyi-common/ruoyi-common-ys/src/main/java/org/dromara/common/ys/enums/org/OrgApiEnum.java
0 → 100644
浏览文件 @
4f6e99cb
package
org
.
dromara
.
common
.
ys
.
enums
.
org
;
import
org.dromara.common.ys.enums.ApiEnum
;
/**
* 公共资源接口
*
* @author wenhe
*/
public
enum
OrgApiEnum
implements
ApiEnum
{
/**
* 员工维护
*/
EDIT_EMPLOYEE
(
"/open/travel/orgEmp/editEmployee"
,
"新增或修改员工资料"
);
/**
* 接口URL
*/
private
final
String
url
;
/**
* 接口描述
*/
private
final
String
desc
;
OrgApiEnum
(
String
url
,
String
desc
)
{
this
.
url
=
url
;
this
.
desc
=
desc
;
}
/**
* 获取枚举URL
*
* @return 枚举编码
*/
@Override
public
String
getUrl
()
{
return
url
;
}
/**
* 获取详细的描述信息
*
* @return 描述信息
*/
@Override
public
String
getDesc
()
{
return
desc
;
}
@Override
public
String
toString
()
{
return
url
;
}
}
ruoyi-common/ruoyi-common-ys/src/main/java/org/dromara/common/ys/enums/resource/CommonResourceApiEnum.java
0 → 100644
浏览文件 @
4f6e99cb
package
org
.
dromara
.
common
.
ys
.
enums
.
resource
;
import
org.dromara.common.ys.enums.ApiEnum
;
/**
* 公共资源接口
*
* @author wenhe
*/
public
enum
CommonResourceApiEnum
implements
ApiEnum
{
/**
* 获取国家数据
*/
COUNTRY_DATA
(
"/open/bdc/geo/queryCountryData"
,
"获取国家数据"
),
/**
* 获取省份数据
*/
PROVINCE_DATA
(
"/open/bdc/geo/queryProvinceData"
,
"获取省份数据"
),
/**
* 获取城市数据
*/
CITY_DATA
(
"/open/bdc/geo/queryCityData"
,
"获取城市数据"
),
/**
* 获取机场数据
*/
AIRPORT_DATA
(
"/open/bdc/geo/queryAirportData"
,
"获取机场数据"
),
/**
* 获取火车站点数据
*/
STATION_DATA
(
"/open/bdc/geo/queryStationData"
,
"获取火车站点数据"
),
/**
* 获取火车票席别数据
*/
TRAIN_BASE_DATA
(
"/open/bdc/geo/queryTrainBaseData"
,
"获取火车票席别数据"
),
/**
* 获取数据字典
*/
DICT_DATA
(
"/open/bdc/dict/queryBaseData"
,
"获取数据字典"
);
/**
* 接口URL
*/
private
final
String
url
;
/**
* 接口描述
*/
private
final
String
desc
;
CommonResourceApiEnum
(
String
url
,
String
desc
)
{
this
.
url
=
url
;
this
.
desc
=
desc
;
}
/**
* 获取枚举URL
*
* @return 枚举编码
*/
@Override
public
String
getUrl
()
{
return
url
;
}
/**
* 获取详细的描述信息
*
* @return 描述信息
*/
@Override
public
String
getDesc
()
{
return
desc
;
}
@Override
public
String
toString
()
{
return
url
;
}
}
ruoyi-common/ruoyi-common-ys/src/main/java/org/dromara/common/ys/enums/train/TrainApiEnum.java
0 → 100644
浏览文件 @
4f6e99cb
package
org
.
dromara
.
common
.
ys
.
enums
.
train
;
import
org.dromara.common.ys.enums.ApiEnum
;
/**
* 公共资源接口
*
* @author wenhe
*/
public
enum
TrainApiEnum
implements
ApiEnum
{
/**
* 查询火车所有站点
*/
FIND_ALL_STATION
(
"/open/train/shopping/findAllStation"
,
"查询火车所有站点"
),
/**
* 车次查询列表
*/
QUERY
(
"/open/train/shopping/query"
,
"根据出发到达获取到车次列表"
);
/**
* 接口URL
*/
private
final
String
url
;
/**
* 接口描述
*/
private
final
String
desc
;
TrainApiEnum
(
String
url
,
String
desc
)
{
this
.
url
=
url
;
this
.
desc
=
desc
;
}
/**
* 获取枚举URL
*
* @return 枚举编码
*/
@Override
public
String
getUrl
()
{
return
url
;
}
/**
* 获取详细的描述信息
*
* @return 描述信息
*/
@Override
public
String
getDesc
()
{
return
desc
;
}
@Override
public
String
toString
()
{
return
url
;
}
}
ruoyi-common/ruoyi-common-ys/src/main/java/org/dromara/common/ys/enums/vehicles/VehiclesApiEnum.java
0 → 100644
浏览文件 @
4f6e99cb
package
org
.
dromara
.
common
.
ys
.
enums
.
vehicles
;
import
org.dromara.common.ys.enums.ApiEnum
;
/**
* 用车资源接口
*
* @author wenhe
*/
public
enum
VehiclesApiEnum
implements
ApiEnum
{
/**
* 即时用车预估价查询
*/
ESTIMATE_JSYC_PRICE
(
"/open/vehicles/shopping/estimateJsycPrice"
,
"根据出发地和目的地查询车辆"
),
/**
* 预约用车预估价查询
*/
ESTIMATE_YYYC_PRICE
(
"/open/vehicles/shopping/estimateYyycPrice"
,
"根据出发地和目的地预约用车"
);
/**
* 接口URL
*/
private
final
String
url
;
/**
* 接口描述
*/
private
final
String
desc
;
VehiclesApiEnum
(
String
url
,
String
desc
)
{
this
.
url
=
url
;
this
.
desc
=
desc
;
}
/**
* 获取枚举URL
*
* @return 枚举编码
*/
@Override
public
String
getUrl
()
{
return
url
;
}
/**
* 获取详细的描述信息
*
* @return 描述信息
*/
@Override
public
String
getDesc
()
{
return
desc
;
}
@Override
public
String
toString
()
{
return
url
;
}
}
ruoyi-common/ruoyi-common-ys/src/main/java/org/dromara/common/ys/service/IAirportService.java
0 → 100644
浏览文件 @
4f6e99cb
package
org
.
dromara
.
common
.
ys
.
service
;
import
org.dromara.common.ys.common.PageInfo
;
import
org.dromara.common.ys.service.model.res.airport.*
;
import
java.util.List
;
/**
* @author wenhe
*/
public
interface
IAirportService
{
/**
* 查询航班
*
* @param userId 用户id
* @param model 查询参数
* @return 查询结果
*/
QueryFlightModel
queryFlight
(
String
userId
,
org
.
dromara
.
common
.
ys
.
service
.
model
.
req
.
airport
.
QueryFlightModel
model
);
/**
* 查询航班最低价
*
* @param userId 用户id
* @param model 查询参数
* @return 查询结果
*/
QueryFlightMinPriceModel
queryFlightMinPrice
(
String
userId
,
org
.
dromara
.
common
.
ys
.
service
.
model
.
req
.
airport
.
QueryFlightMinPriceModel
model
);
/**
* 查询航班停靠城市
*
* @param userId 用户id
* @param model 查询参数
* @return 查询结果
*/
QueryFlightStopModel
queryFlightStop
(
String
userId
,
org
.
dromara
.
common
.
ys
.
service
.
model
.
req
.
airport
.
QueryFlightStopModel
model
);
/**
* 创建订单
*
* @param userId 用户id
* @param model 订单
* @return 订单列表
*/
List
<
BookOrderModel
>
bookOrder
(
String
userId
,
org
.
dromara
.
common
.
ys
.
service
.
model
.
req
.
airport
.
bookOrder
.
BookOrderModel
model
);
/**
* 查询订单列表
*
* @param userId 用户id
* @param model 查询参数
* @return 查询结果
*/
PageInfo
<
OrderListModel
>
orderList
(
String
userId
,
org
.
dromara
.
common
.
ys
.
service
.
model
.
req
.
airport
.
OrderListModel
model
);
/**
* 查询订单详情
*
* @param userId 用户id
* @param model 查询参数
* @return 查询结果
*/
QueryTkOrderModel
detail
(
String
userId
,
org
.
dromara
.
common
.
ys
.
service
.
model
.
req
.
airport
.
QueryTkOrderModel
model
);
}
ruoyi-common/ruoyi-common-ys/src/main/java/org/dromara/common/ys/service/ICommonResourceService.java
0 → 100644
浏览文件 @
4f6e99cb
package
org
.
dromara
.
common
.
ys
.
service
;
import
org.dromara.common.ys.service.model.res.comomResource.*
;
import
java.util.List
;
/**
* 公共数据接口
*
* @author wenhe
*/
public
interface
ICommonResourceService
{
/**
* 获取国家列表
*
* @param userId 用户id
* @return 国家列表
*/
List
<
CountryModel
>
getCountryList
(
String
userId
);
/**
* 获取省份列表
*
* @param userId 用户id
* @return 省份列表
*/
List
<
ProvinceModel
>
getProvinceList
(
String
userId
);
/**
* 获取城市列表
*
* @param userId 用户id
* @return 城市列表
*/
List
<
CityModel
>
getCityList
(
String
userId
);
/**
* 获取机场列表
*
* @param userId 用户id
* @return 机场列表
*/
List
<
AirportModel
>
getAirportList
(
String
userId
);
/**
* 获取火车站列表
*
* @param userId 用户id
* @return 火车站列表
*/
List
<
StationModel
>
getStationList
(
String
userId
);
/**
* 获取火车席别列表
*
* @param userId 用户id
* @return 火车席别列表
*/
List
<
TrainBaseModel
>
getTrainBaseList
(
String
userId
);
/**
* 获取字典列表
*
* @param userId 用户id
* @param parType 字典类型
* @return 字典列表
*/
List
<
DictModel
>
getDictList
(
String
userId
,
String
parType
);
}
ruoyi-common/ruoyi-common-ys/src/main/java/org/dromara/common/ys/service/IInsuranceService.java
0 → 100644
浏览文件 @
4f6e99cb
package
org
.
dromara
.
common
.
ys
.
service
;
import
org.dromara.common.ys.service.model.res.insurance.BxcpModel
;
import
java.util.List
;
/**
* @author wenhe
*/
public
interface
IInsuranceService
{
/**
* 查询保险列表
*
* @param userId 用户id
* @param model 查询条件
* @return 查询结果
*/
List
<
BxcpModel
>
list
(
String
userId
,
org
.
dromara
.
common
.
ys
.
service
.
model
.
req
.
insurance
.
BxcpModel
model
);
}
ruoyi-common/ruoyi-common-ys/src/main/java/org/dromara/common/ys/service/IOrgService.java
0 → 100644
浏览文件 @
4f6e99cb
package
org
.
dromara
.
common
.
ys
.
service
;
import
org.dromara.common.ys.service.model.req.org.EditEmployeeModel
;
/**
* @author wenhe
*/
public
interface
IOrgService
{
/**
* 批量保存或更新员工
*
* @param userId 用户id
* @param model 员工
* @return 成功或失败
*/
boolean
saveOrUpdateEmployee
(
String
userId
,
EditEmployeeModel
model
);
}
ruoyi-common/ruoyi-common-ys/src/main/java/org/dromara/common/ys/service/ITrainService.java
0 → 100644
浏览文件 @
4f6e99cb
package
org
.
dromara
.
common
.
ys
.
service
;
import
org.dromara.common.ys.service.model.res.train.AllStationModel
;
import
org.dromara.common.ys.service.model.res.train.QueryModel
;
import
java.util.List
;
/**
* @author wenhe
*/
public
interface
ITrainService
{
/**
* 查询车辆信息
*
* @param userId 用户id
* @param model 查询参数
* @return 查询结果
*/
List
<
QueryModel
>
queryModel
(
String
userId
,
org
.
dromara
.
common
.
ys
.
service
.
model
.
req
.
train
.
QueryModel
model
);
/**
* 查询所有车站信息
*
* @param userId 用户id
* @return 查询结果
*/
List
<
AllStationModel
>
getAllStation
(
String
userId
);
}
ruoyi-common/ruoyi-common-ys/src/main/java/org/dromara/common/ys/service/IVehiclesService.java
0 → 100644
浏览文件 @
4f6e99cb
package
org
.
dromara
.
common
.
ys
.
service
;
import
org.dromara.common.ys.service.model.res.vehicles.EstimateJsycPriceModel
;
import
org.dromara.common.ys.service.model.res.vehicles.EstimateYyycPriceModel
;
/**
* @author wenhe
*/
public
interface
IVehiclesService
{
/**
* 即时用车预估价查询
*
* @param userId 用户id
* @param model 即时用车预估价查询参数
* @return 即时用车预估价查询结果
*/
EstimateJsycPriceModel
estimateJsycPrice
(
String
userId
,
org
.
dromara
.
common
.
ys
.
service
.
model
.
req
.
vehicles
.
EstimateJsycPriceModel
model
);
/**
* 预约用车预估价查询
*
* @param userId 用户id
* @param model 预约用车预估价查询参数
* @return 预约用车预估价查询结果
*/
EstimateYyycPriceModel
estimateYyycPrice
(
String
userId
,
org
.
dromara
.
common
.
ys
.
service
.
model
.
req
.
vehicles
.
EstimateYyycPriceModel
model
);
}
ruoyi-common/ruoyi-common-ys/src/main/java/org/dromara/common/ys/service/impl/AirPortServiceImpl.java
0 → 100644
浏览文件 @
4f6e99cb
package
org
.
dromara
.
common
.
ys
.
service
.
impl
;
import
cn.hutool.core.text.CharSequenceUtil
;
import
com.alibaba.fastjson.JSON
;
import
com.wenhe.base.base.RequestMethodEnum
;
import
org.dromara.common.ys.Api
;
import
org.dromara.common.ys.common.ApiHttpResponse
;
import
org.dromara.common.ys.common.Code
;
import
org.dromara.common.ys.common.PageInfo
;
import
org.dromara.common.ys.enums.DomainEnum
;
import
org.dromara.common.ys.enums.airport.AirportApiEnum
;
import
org.dromara.common.ys.service.IAirportService
;
import
org.dromara.common.ys.service.model.res.airport.*
;
import
org.springframework.stereotype.Service
;
import
java.util.List
;
/**
* @author hzh
* @date 2024-10-21
* @desc 机票相关接口
**/
@Service
public
class
AirPortServiceImpl
implements
IAirportService
{
@Override
public
QueryFlightModel
queryFlight
(
String
userId
,
org
.
dromara
.
common
.
ys
.
service
.
model
.
req
.
airport
.
QueryFlightModel
model
)
{
ApiHttpResponse
res
=
Api
.
v1
(
RequestMethodEnum
.
POST
,
DomainEnum
.
TEST
.
getDomain
(),
AirportApiEnum
.
QUERY_FLIGHT
.
getUrl
(),
userId
,
null
,
JSON
.
toJSONString
(
model
)
);
if
(!
CharSequenceUtil
.
equals
(
res
.
getErrCode
(),
Code
.
SUCCESS
.
getCode
()))
{
throw
new
RuntimeException
(
res
.
getTips
());
}
return
JSON
.
parseObject
(
res
.
getData
(),
QueryFlightModel
.
class
);
}
@Override
public
QueryFlightMinPriceModel
queryFlightMinPrice
(
String
userId
,
org
.
dromara
.
common
.
ys
.
service
.
model
.
req
.
airport
.
QueryFlightMinPriceModel
model
)
{
ApiHttpResponse
res
=
Api
.
v1
(
RequestMethodEnum
.
POST
,
DomainEnum
.
TEST
.
getDomain
(),
AirportApiEnum
.
QUERY_FLIGHT_MIN_PRICE
.
getUrl
(),
userId
,
null
,
JSON
.
toJSONString
(
model
)
);
if
(!
CharSequenceUtil
.
equals
(
res
.
getErrCode
(),
Code
.
SUCCESS
.
getCode
()))
{
throw
new
RuntimeException
(
res
.
getTips
());
}
return
JSON
.
parseObject
(
res
.
getData
(),
QueryFlightMinPriceModel
.
class
);
}
@Override
public
QueryFlightStopModel
queryFlightStop
(
String
userId
,
org
.
dromara
.
common
.
ys
.
service
.
model
.
req
.
airport
.
QueryFlightStopModel
model
)
{
ApiHttpResponse
res
=
Api
.
v1
(
RequestMethodEnum
.
POST
,
DomainEnum
.
PROD
.
getDomain
(),
AirportApiEnum
.
QUERY_FLIGHT_STOP
.
getUrl
(),
userId
,
null
,
JSON
.
toJSONString
(
model
)
);
if
(!
CharSequenceUtil
.
equals
(
res
.
getErrCode
(),
Code
.
SUCCESS
.
getCode
()))
{
throw
new
RuntimeException
(
res
.
getTips
());
}
return
JSON
.
parseObject
(
res
.
getData
(),
QueryFlightStopModel
.
class
);
}
@Override
public
List
<
BookOrderModel
>
bookOrder
(
String
userId
,
org
.
dromara
.
common
.
ys
.
service
.
model
.
req
.
airport
.
bookOrder
.
BookOrderModel
model
)
{
ApiHttpResponse
res
=
Api
.
v1
(
RequestMethodEnum
.
POST
,
DomainEnum
.
TEST
.
getDomain
(),
AirportApiEnum
.
BOOK_ORDER
.
getUrl
(),
userId
,
null
,
JSON
.
toJSONString
(
model
)
);
if
(!
CharSequenceUtil
.
equals
(
res
.
getErrCode
(),
Code
.
SUCCESS
.
getCode
()))
{
throw
new
RuntimeException
(
res
.
getTips
());
}
return
JSON
.
parseArray
(
JSON
.
parseObject
(
res
.
getData
()).
getString
(
"orderList"
),
BookOrderModel
.
class
);
}
@Override
public
PageInfo
<
OrderListModel
>
orderList
(
String
userId
,
org
.
dromara
.
common
.
ys
.
service
.
model
.
req
.
airport
.
OrderListModel
model
)
{
ApiHttpResponse
res
=
Api
.
v1
(
RequestMethodEnum
.
POST
,
DomainEnum
.
TEST
.
getDomain
(),
AirportApiEnum
.
QUERY_ORDER_LIST
.
getUrl
(),
userId
,
null
,
JSON
.
toJSONString
(
model
)
);
if
(!
CharSequenceUtil
.
equals
(
res
.
getErrCode
(),
Code
.
SUCCESS
.
getCode
()))
{
throw
new
RuntimeException
(
res
.
getTips
());
}
PageInfo
pageInfo
=
JSON
.
parseObject
(
JSON
.
parseObject
(
res
.
getData
()).
getString
(
"orderList"
),
PageInfo
.
class
);
return
PageInfo
.
builder
().
build
()
.
setCount
(
pageInfo
.
getCount
())
.
setMap
(
pageInfo
.
getMap
())
.
setPageNum
(
pageInfo
.
getPageNum
())
.
setPages
(
pageInfo
.
getPages
())
.
setTotal
(
pageInfo
.
getTotal
())
.
setList
(
JSON
.
parseArray
(
JSON
.
toJSONString
(
pageInfo
.
getList
()),
OrderListModel
.
class
));
}
@Override
public
QueryTkOrderModel
detail
(
String
userId
,
org
.
dromara
.
common
.
ys
.
service
.
model
.
req
.
airport
.
QueryTkOrderModel
model
)
{
ApiHttpResponse
res
=
Api
.
v1
(
RequestMethodEnum
.
POST
,
DomainEnum
.
TEST
.
getDomain
(),
AirportApiEnum
.
QUERY_TK_ORDER
.
getUrl
(),
userId
,
null
,
JSON
.
toJSONString
(
model
)
);
if
(!
CharSequenceUtil
.
equals
(
res
.
getErrCode
(),
Code
.
SUCCESS
.
getCode
()))
{
throw
new
RuntimeException
(
res
.
getTips
());
}
return
JSON
.
parseObject
(
res
.
getData
(),
QueryTkOrderModel
.
class
);
}
}
ruoyi-common/ruoyi-common-ys/src/main/java/org/dromara/common/ys/service/impl/CommonResourceServiceImpl.java
0 → 100644
浏览文件 @
4f6e99cb
package
org
.
dromara
.
common
.
ys
.
service
.
impl
;
import
cn.hutool.core.text.CharSequenceUtil
;
import
com.alibaba.fastjson.JSON
;
import
org.dromara.common.ys.Api
;
import
org.dromara.common.ys.common.ApiHttpResponse
;
import
org.dromara.common.ys.common.Code
;
import
org.dromara.common.ys.enums.DomainEnum
;
import
org.dromara.common.ys.enums.resource.CommonResourceApiEnum
;
import
org.dromara.common.ys.service.ICommonResourceService
;
import
org.dromara.common.ys.service.model.res.comomResource.*
;
import
org.springframework.stereotype.Service
;
import
java.util.ArrayList
;
import
java.util.List
;
/**
* @author hzh
* @date 2024-10-18
* @desc 公共资源
**/
@Service
public
class
CommonResourceServiceImpl
implements
ICommonResourceService
{
@Override
public
List
<
CountryModel
>
getCountryList
(
String
userId
)
{
ApiHttpResponse
res
=
Api
.
v1
(
com
.
wenhe
.
base
.
base
.
RequestMethodEnum
.
POST
,
DomainEnum
.
TEST
.
getDomain
(),
CommonResourceApiEnum
.
COUNTRY_DATA
.
getUrl
(),
userId
,
JSON
.
toJSONString
(
new
org
.
dromara
.
common
.
ys
.
service
.
model
.
req
.
commonResource
.
CountryModel
())
);
if
(!
CharSequenceUtil
.
equals
(
res
.
getErrCode
(),
Code
.
SUCCESS
.
getCode
()))
{
throw
new
RuntimeException
(
res
.
getTips
());
}
return
JSON
.
parseArray
(
JSON
.
parseObject
(
res
.
getData
()).
getString
(
"countryDataList"
),
CountryModel
.
class
);
}
@Override
public
List
<
ProvinceModel
>
getProvinceList
(
String
userId
)
{
ApiHttpResponse
res
=
Api
.
v1
(
com
.
wenhe
.
base
.
base
.
RequestMethodEnum
.
POST
,
DomainEnum
.
TEST
.
getDomain
(),
CommonResourceApiEnum
.
PROVINCE_DATA
.
getUrl
(),
userId
,
JSON
.
toJSONString
(
new
org
.
dromara
.
common
.
ys
.
service
.
model
.
req
.
commonResource
.
ProvinceModel
())
);
if
(!
CharSequenceUtil
.
equals
(
res
.
getErrCode
(),
Code
.
SUCCESS
.
getCode
()))
{
throw
new
RuntimeException
(
res
.
getTips
());
}
return
JSON
.
parseArray
(
JSON
.
parseObject
(
res
.
getData
()).
getString
(
"provinceDataList"
),
ProvinceModel
.
class
);
}
@Override
public
List
<
CityModel
>
getCityList
(
String
userId
)
{
ApiHttpResponse
res
=
Api
.
v1
(
com
.
wenhe
.
base
.
base
.
RequestMethodEnum
.
POST
,
DomainEnum
.
TEST
.
getDomain
(),
CommonResourceApiEnum
.
CITY_DATA
.
getUrl
(),
userId
,
JSON
.
toJSONString
(
new
org
.
dromara
.
common
.
ys
.
service
.
model
.
req
.
commonResource
.
CityModel
())
);
if
(!
CharSequenceUtil
.
equals
(
res
.
getErrCode
(),
Code
.
SUCCESS
.
getCode
()))
{
throw
new
RuntimeException
(
res
.
getTips
());
}
if
(
res
.
getData
()
==
null
)
{
return
new
ArrayList
<>();
}
return
JSON
.
parseArray
(
JSON
.
parseObject
(
res
.
getData
()).
getString
(
"cityDataList"
),
CityModel
.
class
);
}
@Override
public
List
<
AirportModel
>
getAirportList
(
String
userId
)
{
ApiHttpResponse
res
=
Api
.
v1
(
com
.
wenhe
.
base
.
base
.
RequestMethodEnum
.
POST
,
DomainEnum
.
TEST
.
getDomain
(),
CommonResourceApiEnum
.
AIRPORT_DATA
.
getUrl
(),
userId
,
JSON
.
toJSONString
(
new
org
.
dromara
.
common
.
ys
.
service
.
model
.
req
.
commonResource
.
AirportModel
())
);
if
(!
CharSequenceUtil
.
equals
(
res
.
getErrCode
(),
Code
.
SUCCESS
.
getCode
()))
{
throw
new
RuntimeException
(
res
.
getTips
());
}
if
(
res
.
getData
()
==
null
)
{
return
new
ArrayList
<>();
}
return
JSON
.
parseArray
(
JSON
.
parseObject
(
res
.
getData
()).
getString
(
"airportDataList"
),
AirportModel
.
class
);
}
@Override
public
List
<
StationModel
>
getStationList
(
String
userId
)
{
ApiHttpResponse
res
=
Api
.
v1
(
com
.
wenhe
.
base
.
base
.
RequestMethodEnum
.
POST
,
DomainEnum
.
TEST
.
getDomain
(),
CommonResourceApiEnum
.
STATION_DATA
.
getUrl
(),
userId
,
null
,
JSON
.
toJSONString
(
new
org
.
dromara
.
common
.
ys
.
service
.
model
.
req
.
commonResource
.
StationModel
())
);
if
(!
CharSequenceUtil
.
equals
(
res
.
getErrCode
(),
Code
.
SUCCESS
.
getCode
()))
{
throw
new
RuntimeException
(
res
.
getTips
());
}
if
(
res
.
getData
()
==
null
)
{
return
new
ArrayList
<>();
}
return
JSON
.
parseArray
(
JSON
.
parseObject
(
res
.
getData
()).
getString
(
"stationDataList"
),
StationModel
.
class
);
}
@Override
public
List
<
TrainBaseModel
>
getTrainBaseList
(
String
userId
)
{
ApiHttpResponse
res
=
Api
.
v1
(
com
.
wenhe
.
base
.
base
.
RequestMethodEnum
.
POST
,
DomainEnum
.
TEST
.
getDomain
(),
CommonResourceApiEnum
.
TRAIN_BASE_DATA
.
getUrl
(),
userId
,
null
,
JSON
.
toJSONString
(
new
org
.
dromara
.
common
.
ys
.
service
.
model
.
req
.
commonResource
.
TrainBaseModel
())
);
if
(!
CharSequenceUtil
.
equals
(
res
.
getErrCode
(),
Code
.
SUCCESS
.
getCode
()))
{
throw
new
RuntimeException
(
res
.
getTips
());
}
if
(
res
.
getData
()
==
null
)
{
return
new
ArrayList
<>();
}
return
JSON
.
parseArray
(
JSON
.
parseObject
(
res
.
getData
()).
getString
(
"trainBaseDataList"
),
TrainBaseModel
.
class
);
}
@Override
public
List
<
DictModel
>
getDictList
(
String
userId
,
String
parType
)
{
org
.
dromara
.
common
.
ys
.
service
.
model
.
req
.
commonResource
.
DictModel
model
=
new
org
.
dromara
.
common
.
ys
.
service
.
model
.
req
.
commonResource
.
DictModel
().
setParType
(
parType
);
ApiHttpResponse
res
=
Api
.
v1
(
com
.
wenhe
.
base
.
base
.
RequestMethodEnum
.
POST
,
DomainEnum
.
TEST
.
getDomain
(),
CommonResourceApiEnum
.
DICT_DATA
.
getUrl
(),
userId
,
null
,
JSON
.
toJSONString
(
model
)
);
if
(!
CharSequenceUtil
.
equals
(
res
.
getErrCode
(),
Code
.
SUCCESS
.
getCode
()))
{
throw
new
RuntimeException
(
res
.
getTips
());
}
if
(
res
.
getData
()
==
null
)
{
return
new
ArrayList
<>();
}
return
JSON
.
parseArray
(
JSON
.
parseObject
(
res
.
getData
()).
getString
(
"baseDataList"
),
DictModel
.
class
);
}
}
ruoyi-common/ruoyi-common-ys/src/main/java/org/dromara/common/ys/service/impl/InsuranceServiceImpl.java
0 → 100644
浏览文件 @
4f6e99cb
package
org
.
dromara
.
common
.
ys
.
service
.
impl
;
import
cn.hutool.core.text.CharSequenceUtil
;
import
com.alibaba.fastjson.JSON
;
import
org.dromara.common.ys.Api
;
import
org.dromara.common.ys.common.ApiHttpResponse
;
import
org.dromara.common.ys.common.Code
;
import
org.dromara.common.ys.enums.DomainEnum
;
import
org.dromara.common.ys.enums.insurance.InsuranceApiEnum
;
import
org.dromara.common.ys.service.IInsuranceService
;
import
org.dromara.common.ys.service.model.res.insurance.BxcpModel
;
import
org.springframework.stereotype.Service
;
import
java.util.List
;
/**
* @author hzh
* @date 2024-10-24
**/
@Service
public
class
InsuranceServiceImpl
implements
IInsuranceService
{
@Override
public
List
<
BxcpModel
>
list
(
String
userId
,
org
.
dromara
.
common
.
ys
.
service
.
model
.
req
.
insurance
.
BxcpModel
model
)
{
ApiHttpResponse
res
=
Api
.
v1
(
com
.
wenhe
.
base
.
base
.
RequestMethodEnum
.
POST
,
DomainEnum
.
TEST
.
getDomain
(),
InsuranceApiEnum
.
GET_BX_CP
.
getUrl
(),
userId
,
null
,
JSON
.
toJSONString
(
model
)
);
if
(!
CharSequenceUtil
.
equals
(
res
.
getErrCode
(),
Code
.
SUCCESS
.
getCode
()))
{
throw
new
RuntimeException
(
res
.
getTips
());
}
return
JSON
.
parseArray
(
JSON
.
parseObject
(
res
.
getData
()).
getString
(
"cpList"
),
BxcpModel
.
class
);
}
}
ruoyi-common/ruoyi-common-ys/src/main/java/org/dromara/common/ys/service/impl/OrgServiceImpl.java
0 → 100644
浏览文件 @
4f6e99cb
package
org
.
dromara
.
common
.
ys
.
service
.
impl
;
import
cn.hutool.core.text.CharSequenceUtil
;
import
com.alibaba.fastjson.JSON
;
import
org.dromara.common.ys.Api
;
import
org.dromara.common.ys.common.ApiHttpResponse
;
import
org.dromara.common.ys.common.Code
;
import
org.dromara.common.ys.enums.DomainEnum
;
import
org.dromara.common.ys.enums.org.OrgApiEnum
;
import
org.dromara.common.ys.service.IOrgService
;
import
org.dromara.common.ys.service.model.req.org.EditEmployeeModel
;
import
org.springframework.stereotype.Service
;
/**
* @author hzh
* @date 2024-10-23
**/
@Service
public
class
OrgServiceImpl
implements
IOrgService
{
@Override
public
boolean
saveOrUpdateEmployee
(
String
userId
,
EditEmployeeModel
model
)
{
ApiHttpResponse
res
=
Api
.
v1
(
com
.
wenhe
.
base
.
base
.
RequestMethodEnum
.
POST
,
DomainEnum
.
TEST
.
getDomain
(),
OrgApiEnum
.
EDIT_EMPLOYEE
.
getUrl
(),
userId
,
null
,
JSON
.
toJSONString
(
model
)
);
if
(!
CharSequenceUtil
.
equals
(
res
.
getErrCode
(),
Code
.
SUCCESS
.
getCode
()))
{
throw
new
RuntimeException
(
res
.
getTips
());
}
return
true
;
}
}
ruoyi-common/ruoyi-common-ys/src/main/java/org/dromara/common/ys/service/impl/TrainServiceImpl.java
0 → 100644
浏览文件 @
4f6e99cb
package
org
.
dromara
.
common
.
ys
.
service
.
impl
;
import
cn.hutool.core.text.CharSequenceUtil
;
import
cn.hutool.core.util.StrUtil
;
import
com.alibaba.fastjson.JSON
;
import
org.dromara.common.ys.Api
;
import
org.dromara.common.ys.common.ApiHttpResponse
;
import
org.dromara.common.ys.common.Code
;
import
org.dromara.common.ys.enums.DomainEnum
;
import
org.dromara.common.ys.enums.train.TrainApiEnum
;
import
org.dromara.common.ys.service.ITrainService
;
import
org.dromara.common.ys.service.model.res.train.AllStationModel
;
import
org.dromara.common.ys.service.model.res.train.QueryModel
;
import
org.springframework.stereotype.Service
;
import
java.util.Collections
;
import
java.util.List
;
/**
* @author hzh
* @date 2024-10-22
**/
@Service
public
class
TrainServiceImpl
implements
ITrainService
{
@Override
public
List
<
QueryModel
>
queryModel
(
String
userId
,
org
.
dromara
.
common
.
ys
.
service
.
model
.
req
.
train
.
QueryModel
model
)
{
ApiHttpResponse
res
=
Api
.
v1
(
com
.
wenhe
.
base
.
base
.
RequestMethodEnum
.
POST
,
DomainEnum
.
TEST
.
getDomain
(),
TrainApiEnum
.
QUERY
.
getUrl
(),
userId
,
JSON
.
toJSONString
(
model
)
);
if
(!
CharSequenceUtil
.
equals
(
res
.
getErrCode
(),
Code
.
SUCCESS
.
getCode
()))
{
throw
new
RuntimeException
(
res
.
getErrMsg
());
}
if
(
StrUtil
.
isEmpty
(
res
.
getData
()))
{
return
Collections
.
emptyList
();
}
return
JSON
.
parseArray
(
JSON
.
parseObject
(
res
.
getData
()).
getString
(
"trainList"
),
QueryModel
.
class
);
}
@Override
public
List
<
AllStationModel
>
getAllStation
(
String
userId
)
{
ApiHttpResponse
res
=
Api
.
v1
(
com
.
wenhe
.
base
.
base
.
RequestMethodEnum
.
POST
,
DomainEnum
.
TEST
.
getDomain
(),
TrainApiEnum
.
FIND_ALL_STATION
.
getUrl
(),
userId
,
JSON
.
toJSONString
(
new
org
.
dromara
.
common
.
ys
.
service
.
model
.
req
.
train
.
AllStationModel
())
);
if
(!
CharSequenceUtil
.
equals
(
res
.
getErrCode
(),
Code
.
SUCCESS
.
getCode
()))
{
throw
new
RuntimeException
(
res
.
getTips
());
}
return
JSON
.
parseArray
(
JSON
.
parseObject
(
res
.
getData
()).
getString
(
"list"
),
AllStationModel
.
class
);
}
}
ruoyi-common/ruoyi-common-ys/src/main/java/org/dromara/common/ys/service/impl/VehiclesServiceImpl.java
0 → 100644
浏览文件 @
4f6e99cb
package
org
.
dromara
.
common
.
ys
.
service
.
impl
;
import
cn.hutool.core.text.CharSequenceUtil
;
import
com.alibaba.fastjson.JSON
;
import
org.dromara.common.ys.Api
;
import
org.dromara.common.ys.common.ApiHttpResponse
;
import
org.dromara.common.ys.common.Code
;
import
org.dromara.common.ys.enums.DomainEnum
;
import
org.dromara.common.ys.enums.vehicles.VehiclesApiEnum
;
import
org.dromara.common.ys.service.IVehiclesService
;
import
org.dromara.common.ys.service.model.res.vehicles.EstimateJsycPriceModel
;
import
org.dromara.common.ys.service.model.res.vehicles.EstimateYyycPriceModel
;
import
org.springframework.stereotype.Service
;
/**
* @author hzh
* @date 2024-10-22
**/
@Service
public
class
VehiclesServiceImpl
implements
IVehiclesService
{
@Override
public
EstimateYyycPriceModel
estimateYyycPrice
(
String
userId
,
org
.
dromara
.
common
.
ys
.
service
.
model
.
req
.
vehicles
.
EstimateYyycPriceModel
model
)
{
ApiHttpResponse
res
=
Api
.
v1
(
com
.
wenhe
.
base
.
base
.
RequestMethodEnum
.
POST
,
DomainEnum
.
TEST
.
getDomain
(),
VehiclesApiEnum
.
ESTIMATE_YYYC_PRICE
.
getUrl
(),
userId
,
null
,
JSON
.
toJSONString
(
model
)
);
if
(!
CharSequenceUtil
.
equals
(
res
.
getErrCode
(),
Code
.
SUCCESS
.
getCode
()))
{
throw
new
RuntimeException
(
res
.
getTips
());
}
return
JSON
.
parseObject
(
res
.
getData
(),
EstimateYyycPriceModel
.
class
);
}
@Override
public
EstimateJsycPriceModel
estimateJsycPrice
(
String
userId
,
org
.
dromara
.
common
.
ys
.
service
.
model
.
req
.
vehicles
.
EstimateJsycPriceModel
model
)
{
ApiHttpResponse
res
=
Api
.
v1
(
com
.
wenhe
.
base
.
base
.
RequestMethodEnum
.
POST
,
DomainEnum
.
TEST
.
getDomain
(),
VehiclesApiEnum
.
ESTIMATE_JSYC_PRICE
.
getUrl
(),
userId
,
null
,
JSON
.
toJSONString
(
model
)
);
if
(!
CharSequenceUtil
.
equals
(
res
.
getErrCode
(),
Code
.
SUCCESS
.
getCode
()))
{
throw
new
RuntimeException
(
res
.
getTips
());
}
return
JSON
.
parseObject
(
res
.
getData
(),
EstimateJsycPriceModel
.
class
);
}
}
ruoyi-common/ruoyi-common-ys/src/main/java/org/dromara/common/ys/service/model/BaseModel.java
0 → 100644
浏览文件 @
4f6e99cb
/**
* <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
.
ys
.
service
.
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-ys/src/main/java/org/dromara/common/ys/service/model/req/airport/OrderListModel.java
0 → 100644
浏览文件 @
4f6e99cb
package
org
.
dromara
.
common
.
ys
.
service
.
model
.
req
.
airport
;
import
lombok.Data
;
import
lombok.EqualsAndHashCode
;
import
lombok.experimental.Accessors
;
import
org.dromara.common.ys.service.model.BaseModel
;
/**
* @author hzh
* @date 2024-10-24
* @desc 机票查询列表
**/
@Data
@EqualsAndHashCode
(
callSuper
=
false
)
@Accessors
(
chain
=
true
)
public
class
OrderListModel
extends
BaseModel
{
/**
* 每页显示条数,不能小于10
*/
private
Integer
count
;
/**
* 页数,不能小于1
*/
private
Integer
pageNum
;
/**
* 日期类型 1预定日期 2出行日期 3出票/确认日期
*/
private
Integer
dateType
;
/**
* 时间始 格式:yyyy-MM-dd
*/
private
String
dateStart
;
/**
* 时间止 格式:yyyy-MM-dd
*/
private
String
dateEnd
;
/**
* 出差申请单号
*/
private
String
travelNo
;
/**
* 预订人
*/
private
String
bookNo
;
/**
* 公司支付限制 1只查询公司支付订单 0或空不限制
*/
private
Integer
payCompanyFlag
;
/**
* 订单状态 0申请中 1待送审 2审批中 3待支付 4待出票 6已出票 7已取消 9审批拒绝 10出票中
*/
private
String
orderStatus
;
}
ruoyi-common/ruoyi-common-ys/src/main/java/org/dromara/common/ys/service/model/req/airport/QueryFlightMinPriceModel.java
0 → 100644
浏览文件 @
4f6e99cb
package
org
.
dromara
.
common
.
ys
.
service
.
model
.
req
.
airport
;
import
lombok.Data
;
import
lombok.EqualsAndHashCode
;
import
lombok.experimental.Accessors
;
import
org.dromara.common.ys.service.model.BaseModel
;
/**
* @author hzh
* @date 2024-10-18
* @desc 航班最低价查询
**/
@Data
@EqualsAndHashCode
(
callSuper
=
false
)
@Accessors
(
chain
=
true
)
public
class
QueryFlightMinPriceModel
extends
BaseModel
{
/**
* 出发机场三字码,请参考机场静态数据,必须为大写三位字母
*/
private
String
departAirport
;
/**
* 到达机场三字码,请参考机场静态数据,必须为大写三位字母 ,
*/
private
String
arriveAirport
;
/**
* 出发日期,格式:yyyy-MM-dd ,
*/
private
String
departDate
;
/**
* 差旅类型,1:因公 2:因私 默认1 ,
*/
private
String
tripType
;
/**
* 用于匹配差标的员工工号,如不传,以当前登录人工号进行匹配
*/
private
String
empNo
;
}
ruoyi-common/ruoyi-common-ys/src/main/java/org/dromara/common/ys/service/model/req/airport/QueryFlightModel.java
0 → 100644
浏览文件 @
4f6e99cb
package
org
.
dromara
.
common
.
ys
.
service
.
model
.
req
.
airport
;
import
lombok.Data
;
import
lombok.EqualsAndHashCode
;
import
lombok.experimental.Accessors
;
import
org.dromara.common.ys.service.model.BaseModel
;
/**
* @author hzh
* @date 2024-10-18
* @desc 航班查询请求参数
**/
@Data
@EqualsAndHashCode
(
callSuper
=
false
)
@Accessors
(
chain
=
true
)
public
class
QueryFlightModel
extends
BaseModel
{
/**
* 出发机场三字码,请参考机场静态数据,必须为大写三位字母
*/
private
String
departAirport
;
/**
* 到达机场三字码,请参考机场静态数据,必须为大写三位字母 ,
*/
private
String
arriveAirport
;
/**
* 出发日期,格式:yyyy-MM-dd ,
*/
private
String
departDate
;
/**
* 差旅类型,1:因公 2:因私 默认1 ,
*/
private
String
tripType
;
/**
* 用于匹配差标的员工工号,如不传,以当前登录人工号进行匹配
*/
private
String
empNo
;
}
ruoyi-common/ruoyi-common-ys/src/main/java/org/dromara/common/ys/service/model/req/airport/QueryFlightStopModel.java
0 → 100644
浏览文件 @
4f6e99cb
package
org
.
dromara
.
common
.
ys
.
service
.
model
.
req
.
airport
;
import
lombok.Data
;
import
lombok.EqualsAndHashCode
;
import
lombok.experimental.Accessors
;
import
org.dromara.common.ys.service.model.BaseModel
;
/**
* @author hzh
* @date 2024-10-18
* @desc 获取航班经停信息
**/
@Data
@EqualsAndHashCode
(
callSuper
=
false
)
@Accessors
(
chain
=
true
)
public
class
QueryFlightStopModel
extends
BaseModel
{
/**
* 航班号
*/
private
String
flightNo
;
/**
* 出发日期,格式:yyyy-MM-dd
*/
private
String
departDate
;
}
ruoyi-common/ruoyi-common-ys/src/main/java/org/dromara/common/ys/service/model/req/airport/QueryTkOrderModel.java
0 → 100644
浏览文件 @
4f6e99cb
package
org
.
dromara
.
common
.
ys
.
service
.
model
.
req
.
airport
;
import
lombok.Data
;
import
lombok.EqualsAndHashCode
;
import
lombok.experimental.Accessors
;
import
org.dromara.common.ys.service.model.BaseModel
;
/**
* @author hzh
* @date 2024-10-18
* @desc 机票订单详情请求参数
**/
@Data
@EqualsAndHashCode
(
callSuper
=
false
)
@Accessors
(
chain
=
true
)
public
class
QueryTkOrderModel
extends
BaseModel
{
/**
* 订单编号(必填)
*/
private
String
orderNo
;
}
ruoyi-common/ruoyi-common-ys/src/main/java/org/dromara/common/ys/service/model/req/airport/bookOrder/BookOrderInsurance.java
0 → 100644
浏览文件 @
4f6e99cb
package
org
.
dromara
.
common
.
ys
.
service
.
model
.
req
.
airport
.
bookOrder
;
import
lombok.Data
;
import
lombok.experimental.Accessors
;
import
java.util.List
;
/**
* 保险信息
*
* @author wenhe
*/
@Data
@Accessors
(
chain
=
true
)
public
class
BookOrderInsurance
{
/**
* 保险产品标识集合
*/
private
List
<
String
>
bxcpIds
;
}
ruoyi-common/ruoyi-common-ys/src/main/java/org/dromara/common/ys/service/model/req/airport/bookOrder/BookOrderModel.java
0 → 100644
浏览文件 @
4f6e99cb
package
org
.
dromara
.
common
.
ys
.
service
.
model
.
req
.
airport
.
bookOrder
;
import
lombok.Data
;
import
lombok.EqualsAndHashCode
;
import
lombok.experimental.Accessors
;
import
org.dromara.common.ys.service.model.BaseModel
;
import
java.util.List
;
/**
* @author hzh
* @date 2024-10-18
* @desc 创建订单请求参数
**/
@Data
@EqualsAndHashCode
(
callSuper
=
false
)
@Accessors
(
chain
=
true
)
public
class
BookOrderModel
extends
BaseModel
{
/**
* 乘机人集合
*/
private
List
<
com
.
wenhe
.
base
.
model
.
req
.
airport
.
bookOrder
.
BookOrderPsg
>
psgList
;
/**
* 航程集合
*/
private
List
<
com
.
wenhe
.
base
.
model
.
req
.
airport
.
bookOrder
.
BookOrderRange
>
rangeList
;
/**
* 保险信息
*/
private
BookOrderInsurance
insuranceBean
;
/**
* 差旅类型,1:因公 2:因私 默认1
*/
private
String
tripType
;
/**
* 项目编号,最大长度30位
*/
private
String
projectCode
;
/**
* 项目名称,最大长度100位
*/
private
String
projectName
;
/**
* 成本中心编号,最大长度30位
*/
private
String
costCenterCode
;
/**
* 成本中心名称,最大长度100位
*/
private
String
costCenterName
;
/**
* 出差申请单号,最大长度30位
*/
private
String
travelNo
;
/**
* 出差申请备注,最大长度250位
*/
private
String
travelRemark
;
/**
* 科目码,最大长度30位
*/
private
String
subjectCode
;
/**
* 联系人
*/
private
String
linkman
;
/**
* 联系电话
*/
private
String
linkTel
;
/**
* 联系邮箱
*/
private
String
linkEmail
;
/**
* 配送方式,0不需要报销凭证 1邮寄 2公司统一配送 默认2
*/
private
String
sendMode
;
/**
* 收件人电话
*/
private
String
reciPhone
;
/**
* 邮编
*/
private
String
postCode
;
/**
* 收件人
*/
private
String
reciPient
;
/**
* 收件地址
*/
private
String
reciAddr
;
}
ruoyi-common/ruoyi-common-ys/src/main/java/org/dromara/common/ys/service/model/req/airport/bookOrder/BookOrderPsg.java
0 → 100644
浏览文件 @
4f6e99cb
package
org
.
dromara
.
common
.
ys
.
service
.
model
.
req
.
airport
.
bookOrder
;
import
lombok.Data
;
import
lombok.experimental.Accessors
;
/**
* 乘机人集合
*/
@Data
@Accessors
(
chain
=
true
)
public
class
BookOrderPsg
{
/**
* 乘机人姓名
*/
private
String
psgName
;
/**
* 乘机人类型,1成人2儿童3婴儿 默认1 ,
*/
private
String
psgType
;
/**
* 证件类型,NI身份证 PP护照 ID其他 ,
*/
private
String
idType
;
/**
* 证件号码
*/
private
String
idno
;
/**
* 手机号码,最好传入 以便航班有变化及时知情
*/
private
String
phoneNumber
;
/**
* F女M男
*/
private
String
sex
;
/**
* 出生日期
*/
private
String
born
;
/**
* 员工工号
*/
private
String
empNo
;
/**
* 附属员工工号,有附属员工的时候 才需要输入
*/
private
String
fsEmpNo
;
}
ruoyi-common/ruoyi-common-ys/src/main/java/org/dromara/common/ys/service/model/req/airport/bookOrder/BookOrderRange.java
0 → 100644
浏览文件 @
4f6e99cb
package
org
.
dromara
.
common
.
ys
.
service
.
model
.
req
.
airport
.
bookOrder
;
import
lombok.Data
;
import
lombok.experimental.Accessors
;
/**
* 航程集合
*/
@Accessors
(
chain
=
true
)
@Data
public
class
BookOrderRange
{
/**
* 航班号
*/
private
String
flightNo
;
/**
* 舱位代码
*/
private
String
cabin
;
/**
* 航班标识,航班查询时返回
*/
private
String
cacheId
;
/**
* 价格缓存,航班查询时返回
*/
private
String
priceId
;
/**
* 违背原因代码
*/
private
String
reasonCode
;
/**
* 违背原因描述
*/
private
String
reasonDesc
;
}
ruoyi-common/ruoyi-common-ys/src/main/java/org/dromara/common/ys/service/model/req/commonResource/AirportModel.java
0 → 100644
浏览文件 @
4f6e99cb
package
org
.
dromara
.
common
.
ys
.
service
.
model
.
req
.
commonResource
;
import
lombok.Data
;
import
lombok.EqualsAndHashCode
;
import
lombok.experimental.Accessors
;
import
org.dromara.common.ys.service.model.BaseModel
;
/**
* @author hzh
* @date 2024-10-18
* @desc 机场请求参数
**/
@Data
@EqualsAndHashCode
(
callSuper
=
false
)
@Accessors
(
chain
=
true
)
public
class
AirportModel
extends
BaseModel
{
}
ruoyi-common/ruoyi-common-ys/src/main/java/org/dromara/common/ys/service/model/req/commonResource/CityModel.java
0 → 100644
浏览文件 @
4f6e99cb
package
org
.
dromara
.
common
.
ys
.
service
.
model
.
req
.
commonResource
;
import
lombok.Data
;
import
lombok.EqualsAndHashCode
;
import
lombok.experimental.Accessors
;
import
org.dromara.common.ys.service.model.BaseModel
;
/**
* @author hzh
* @date 2024-10-18
* @desc 城市请求参数
**/
@Data
@EqualsAndHashCode
(
callSuper
=
false
)
@Accessors
(
chain
=
true
)
public
class
CityModel
extends
BaseModel
{
}
ruoyi-common/ruoyi-common-ys/src/main/java/org/dromara/common/ys/service/model/req/commonResource/CountryModel.java
0 → 100644
浏览文件 @
4f6e99cb
package
org
.
dromara
.
common
.
ys
.
service
.
model
.
req
.
commonResource
;
import
lombok.Data
;
import
lombok.EqualsAndHashCode
;
import
lombok.experimental.Accessors
;
import
org.dromara.common.ys.service.model.BaseModel
;
/**
* @author hzh
* @date 2024-10-18
* @desc 国家请求参数
**/
@Data
@EqualsAndHashCode
(
callSuper
=
false
)
@Accessors
(
chain
=
true
)
public
class
CountryModel
extends
BaseModel
{
}
ruoyi-common/ruoyi-common-ys/src/main/java/org/dromara/common/ys/service/model/req/commonResource/DictModel.java
0 → 100644
浏览文件 @
4f6e99cb
package
org
.
dromara
.
common
.
ys
.
service
.
model
.
req
.
commonResource
;
import
lombok.Data
;
import
lombok.EqualsAndHashCode
;
import
lombok.experimental.Accessors
;
import
org.dromara.common.ys.service.model.BaseModel
;
/**
* @author hzh
* @date 2024-10-18
* @desc 字典请求参数
**/
@Data
@EqualsAndHashCode
(
callSuper
=
false
)
@Accessors
(
chain
=
true
)
public
class
DictModel
extends
BaseModel
{
/**
* 查询类型,参考枚举值页面数据
*/
private
String
parType
;
}
ruoyi-common/ruoyi-common-ys/src/main/java/org/dromara/common/ys/service/model/req/commonResource/ProvinceModel.java
0 → 100644
浏览文件 @
4f6e99cb
package
org
.
dromara
.
common
.
ys
.
service
.
model
.
req
.
commonResource
;
import
lombok.Data
;
import
lombok.EqualsAndHashCode
;
import
lombok.experimental.Accessors
;
import
org.dromara.common.ys.service.model.BaseModel
;
/**
* @author hzh
* @date 2024-10-18
* @desc 省份请求参数
**/
@Data
@EqualsAndHashCode
(
callSuper
=
false
)
@Accessors
(
chain
=
true
)
public
class
ProvinceModel
extends
BaseModel
{
}
ruoyi-common/ruoyi-common-ys/src/main/java/org/dromara/common/ys/service/model/req/commonResource/StationModel.java
0 → 100644
浏览文件 @
4f6e99cb
package
org
.
dromara
.
common
.
ys
.
service
.
model
.
req
.
commonResource
;
import
lombok.Data
;
import
lombok.EqualsAndHashCode
;
import
lombok.experimental.Accessors
;
import
org.dromara.common.ys.service.model.BaseModel
;
/**
* @author hzh
* @date 2024-10-18
* @desc 火车站点请求参数
**/
@Data
@EqualsAndHashCode
(
callSuper
=
false
)
@Accessors
(
chain
=
true
)
public
class
StationModel
extends
BaseModel
{
}
ruoyi-common/ruoyi-common-ys/src/main/java/org/dromara/common/ys/service/model/req/commonResource/TrainBaseModel.java
0 → 100644
浏览文件 @
4f6e99cb
package
org
.
dromara
.
common
.
ys
.
service
.
model
.
req
.
commonResource
;
import
lombok.Data
;
import
lombok.EqualsAndHashCode
;
import
lombok.experimental.Accessors
;
import
org.dromara.common.ys.service.model.BaseModel
;
/**
* @author hzh
* @date 2024-10-18
* @desc 火车票席别请求参数
**/
@Data
@EqualsAndHashCode
(
callSuper
=
false
)
@Accessors
(
chain
=
true
)
public
class
TrainBaseModel
extends
BaseModel
{
/**
* 查询类型 0或空 座位席别
*/
private
String
queryType
;
}
ruoyi-common/ruoyi-common-ys/src/main/java/org/dromara/common/ys/service/model/req/insurance/BxcpModel.java
0 → 100644
浏览文件 @
4f6e99cb
package
org
.
dromara
.
common
.
ys
.
service
.
model
.
req
.
insurance
;
import
lombok.Data
;
import
lombok.EqualsAndHashCode
;
import
lombok.experimental.Accessors
;
import
org.dromara.common.ys.service.model.BaseModel
;
/**
* @author hzh
* @date 2024-10-18
* @desc 保险查询
**/
@Data
@EqualsAndHashCode
(
callSuper
=
false
)
@Accessors
(
chain
=
true
)
public
class
BxcpModel
extends
BaseModel
{
/**
* 产品类型,10901机票 10904火车票
*/
private
String
cplx
;
}
ruoyi-common/ruoyi-common-ys/src/main/java/org/dromara/common/ys/service/model/req/org/EditEmployeeModel.java
0 → 100644
浏览文件 @
4f6e99cb
package
org
.
dromara
.
common
.
ys
.
service
.
model
.
req
.
org
;
import
lombok.Data
;
import
lombok.EqualsAndHashCode
;
import
lombok.experimental.Accessors
;
import
org.dromara.common.ys.service.model.BaseModel
;
/**
* @author hzh
* @date 2024-10-18
* @desc 员工新增或修改请求参数
**/
@Data
@EqualsAndHashCode
(
callSuper
=
false
)
@Accessors
(
chain
=
true
)
public
class
EditEmployeeModel
extends
BaseModel
{
/**
* 员工编号
*/
private
String
empNo
;
/**
* 中文名字
*/
private
String
empName
;
/**
* 英文名字,为空则由中文名称转换
*/
private
String
engName
;
/**
* 性别, M:男 ,F:女 默认为M
*/
private
String
sex
;
/**
* 生日,格式:yyyy-MM-dd,如果填写了身份证,根据身份证解析
*/
private
String
born
;
/**
* 国家编号,默认中国(00002),详情查看国家静态数据
*/
private
String
nation
;
/**
* 部门编号,如果部门编号为空,或查找不到所属部门,默认归属到根部门
*/
private
String
deptNo
;
/**
* 员工职级代号,员工职级代号需提前在商旅系统中员工职级管理模块维护对应于员工职级维护的序号,默认为最低级别员工职级代号
*/
private
String
empRank
;
/**
* 员工状态,0:离职, 1:在职 默认为1
*/
private
Integer
isValid
;
/**
* 是否负责人,0:否,1:是 默认为0
*/
private
Integer
isdirector
;
/**
* 是否审批人 0:否,1:是 默认为0
*/
private
Integer
ifApprover
;
/**
* 常用号码
*/
private
String
phoneNumber
;
/**
* 邮箱
*/
private
String
email
;
/**
* 职务
*/
private
String
post
;
/**
* 爱好
*/
private
String
preference
;
/**
* 秘书/助理编号,传员工工号,多个用’,’分隔,员工工号不存在的时候直接忽略
*/
private
String
assistant
;
/**
* 身份证
*/
private
String
idNumber
;
/**
* 护照
*/
private
String
passport
;
/**
* 护照有效期,格式:yyyy-MM-dd
*/
private
String
passportPeriod
;
/**
* 护照签发地,默认中国(00002),详情查看国家静态数据
*/
private
String
placeOfIssue
;
/**
* 其他证件
*/
private
String
otherNumber
;
/**
* 其他证件有效期, 格式:yyyy-MM-dd
*/
private
String
otherPeriod
;
/**
* 是否开启平台登录,0:否,1:是,默认为0,不开通时可以不传下面的一系列数值
*/
private
Integer
loginVip
;
/**
* 权限等级,1:员工、3:主管、5:经理, 默认为1 ,
*/
private
Integer
popElevel
;
/**
* 预订范围, 0:本人预订,1:为本部门订票,2:为全公司预订,3:指定部门, 默认为0
*/
private
Integer
bookRange
;
/**
* 为外人预订, 0:否,1:是, 默认为0 ,
*/
private
Integer
bookOutside
;
/**
* 预订全免, 0:审批,1:全免, 默认0
*/
private
Integer
appBook
;
/**
* 出差审批属性, 0:审批,1:全免,2:个免, 默认0 ,
*/
private
Integer
appTravel
;
/**
* 使用公司账户支付产品类型109 多个用,隔开
*/
private
String
useAccount
;
/**
* 新员工编号
*/
private
String
newEmpNo
;
}
ruoyi-common/ruoyi-common-ys/src/main/java/org/dromara/common/ys/service/model/req/train/AllStationModel.java
0 → 100644
浏览文件 @
4f6e99cb
package
org
.
dromara
.
common
.
ys
.
service
.
model
.
req
.
train
;
import
lombok.Data
;
import
lombok.EqualsAndHashCode
;
import
lombok.experimental.Accessors
;
import
org.dromara.common.ys.service.model.BaseModel
;
/**
* @author hzh
* @date 2024-10-22
**/
@Data
@EqualsAndHashCode
(
callSuper
=
false
)
@Accessors
(
chain
=
true
)
public
class
AllStationModel
extends
BaseModel
{
}
ruoyi-common/ruoyi-common-ys/src/main/java/org/dromara/common/ys/service/model/req/train/QueryModel.java
0 → 100644
浏览文件 @
4f6e99cb
package
org
.
dromara
.
common
.
ys
.
service
.
model
.
req
.
train
;
import
lombok.Data
;
import
lombok.EqualsAndHashCode
;
import
lombok.experimental.Accessors
;
import
org.dromara.common.ys.service.model.BaseModel
;
/**
* @author hzh
* @date 2024-10-22
**/
@Data
@EqualsAndHashCode
(
callSuper
=
false
)
@Accessors
(
chain
=
true
)
public
class
QueryModel
extends
BaseModel
{
/**
* 乘车日期yyyy-MM-dd
*/
private
String
fromDate
;
/**
* 出发站三字编码
*/
private
String
fromStationCode
;
/**
* 到达站三字编码
*/
private
String
toStationCode
;
/**
* 差旅类型 1因公 2因私
*/
private
String
tripType
;
}
ruoyi-common/ruoyi-common-ys/src/main/java/org/dromara/common/ys/service/model/req/vehicles/EstimateJsycPriceModel.java
0 → 100644
浏览文件 @
4f6e99cb
package
org
.
dromara
.
common
.
ys
.
service
.
model
.
req
.
vehicles
;
import
lombok.Data
;
import
lombok.EqualsAndHashCode
;
import
lombok.experimental.Accessors
;
import
org.dromara.common.ys.service.model.BaseModel
;
import
java.math.BigDecimal
;
/**
* @author hzh
* @date 2024-10-22
**/
@Data
@EqualsAndHashCode
(
callSuper
=
false
)
@Accessors
(
chain
=
true
)
public
class
EstimateJsycPriceModel
extends
BaseModel
{
/**
* 1因公2因私
*/
private
String
tripType
;
/**
* 用车城市id
*/
private
String
departCity
;
/**
* 到达城市id
*/
private
String
arriveCity
;
/**
* 用车类型 8即时 9预约
*/
private
String
useType
;
/**
* 出发详细地址
*/
private
String
fromAddress
;
/**
* 出发经度
*/
private
BigDecimal
fromLon
;
/**
* 出发纬度
*/
private
BigDecimal
fromLat
;
/**
* 到达详细地址
*/
private
String
toAddress
;
/**
* 到达经度
*/
private
BigDecimal
toLon
;
/**
* 到达纬度
*/
private
BigDecimal
toLat
;
/**
* 用车时间 yyyy-mm-dd hh:mm
*/
private
String
useTime
;
/**
* 出行人员工
*/
private
String
empNo
;
/**
* 出差申请单号
*/
private
String
ccsqdNo
;
}
ruoyi-common/ruoyi-common-ys/src/main/java/org/dromara/common/ys/service/model/req/vehicles/EstimateYyycPriceModel.java
0 → 100644
浏览文件 @
4f6e99cb
package
org
.
dromara
.
common
.
ys
.
service
.
model
.
req
.
vehicles
;
import
lombok.Data
;
import
lombok.EqualsAndHashCode
;
import
lombok.experimental.Accessors
;
import
org.dromara.common.ys.service.model.BaseModel
;
import
java.math.BigDecimal
;
/**
* @author hzh
* @date 2024-10-22
**/
@Data
@EqualsAndHashCode
(
callSuper
=
false
)
@Accessors
(
chain
=
true
)
public
class
EstimateYyycPriceModel
extends
BaseModel
{
/**
* 1因公2因私
*/
private
String
tripType
;
/**
* 用车城市id
*/
private
String
departCity
;
/**
* 到达城市id
*/
private
String
arriveCity
;
/**
* 使用机场三字码或站点代码
*/
private
String
useAirportOrZd
;
/**
* 用车类型 1日包 2半日包 4接机 5送机 6接站 7送站 ,
*/
private
String
useType
;
/**
* 用车天数 除了日包需要传入 其他情况传0或不传
*/
private
int
useDays
;
/**
* 出发详细地址
*/
private
String
fromAddress
;
/**
* 出发经度
*/
private
BigDecimal
fromLon
;
/**
* 出发纬度
*/
private
BigDecimal
fromLat
;
/**
* 到达详细地址
*/
private
String
toAddress
;
/**
* 到达经度
*/
private
BigDecimal
toLon
;
/**
* 到达纬度
*/
private
BigDecimal
toLat
;
/**
* 用车时间 yyyy-mm-dd hh:mm
*/
private
String
useTime
;
/**
* 接送机时必传
*/
private
String
flightNo
;
/**
* 出行人员工
*/
private
String
empNo
;
/**
* 出差申请单号
*/
private
String
ccsqdNo
;
}
ruoyi-common/ruoyi-common-ys/src/main/java/org/dromara/common/ys/service/model/res/airport/BookOrderModel.java
0 → 100644
浏览文件 @
4f6e99cb
package
org
.
dromara
.
common
.
ys
.
service
.
model
.
res
.
airport
;
import
lombok.Data
;
import
java.math.BigDecimal
;
/**
* @author hzh
* @date 2024-10-23
**/
@Data
public
class
BookOrderModel
{
/**
* 订单编号
*/
private
String
orderNo
;
/**
* 销售价
*/
private
BigDecimal
salePrice
;
/**
* 机建
*/
private
BigDecimal
airportFee
;
/**
* 税费
*/
private
BigDecimal
tax
;
/**
* 服务费
*/
private
BigDecimal
serviceFee
;
/**
* 客户奖励
*/
private
BigDecimal
khjl
;
/**
* 总价格
*/
private
BigDecimal
totalPrice
;
/**
* 编码
*/
private
String
pnrNo
;
/**
* 订单状态 0已申请 1已订座
*/
private
String
orderStatus
;
}
ruoyi-common/ruoyi-common-ys/src/main/java/org/dromara/common/ys/service/model/res/airport/OrderListModel.java
0 → 100644
浏览文件 @
4f6e99cb
package
org
.
dromara
.
common
.
ys
.
service
.
model
.
res
.
airport
;
import
lombok.Data
;
/**
* @author hzh
* @date 2024-10-24
* @desc 订单列表
**/
@Data
public
class
OrderListModel
{
/**
* 订单编号
*/
private
String
orderNo
;
/**
* 订单状态 0申请中 1待送审 2审批中 3待支付 4待出票 6已出票 7已取消 9审批拒绝 10出票中
*/
private
String
orderStatus
;
/**
* 航班号
*/
private
String
flightNo
;
/**
* 订单状态名称
*/
private
String
orderStatusName
;
/**
* 预定人工号
*/
private
String
bookerNo
;
/**
* 舱位名称
*/
private
String
cabinName
;
/**
* 预订人名称
*/
private
String
bookerName
;
/**
* 航程中文
*/
private
String
voyageZh
;
/**
* 预定时间 格式:yyyy-MM-dd HH:mm:ss ,
*/
private
String
bookDate
;
/**
* 航程类型 1单程 2往返 3连程 4缺口程
*/
private
String
voyageType
;
/**
* 出票时间 格式:yyyy-MM-dd HH:mm:ss
*/
private
String
drawDate
;
/**
* 乘机人名称
*/
private
String
psgName
;
/**
* 出发时间 格式:yyyy-MM-dd HH:mm
*/
private
String
departTime
;
/**
* 差旅类型 1因公 2因私 ,
*/
private
Integer
tripType
;
/**
* 订单总金额
*/
private
String
totalAmount
;
}
ruoyi-common/ruoyi-common-ys/src/main/java/org/dromara/common/ys/service/model/res/airport/QueryFlightMinPriceModel.java
0 → 100644
浏览文件 @
4f6e99cb
package
org
.
dromara
.
common
.
ys
.
service
.
model
.
res
.
airport
;
import
lombok.Data
;
import
java.util.List
;
import
java.util.Map
;
/**
* @author hzh
* @date 2024-10-21
**/
@Data
public
class
QueryFlightMinPriceModel
extends
QueryFlightModel
{
/**
* 价格map
*/
private
Map
<
String
,
Object
>
priceMap
;
/**
* 机型map
*/
private
Map
<
String
,
Object
>
planeMap
;
/**
* 查询耗时(毫秒)
*/
private
Integer
queryTimes
;
/**
* 七天特价
*/
private
List
<
WeekPrice
>
weekPrice
;
/**
* 全天最低价
*/
private
DayMinPrice
dayMinPrice
;
/**
* 航班集合
*/
private
Map
<
String
,
Object
>
flightMap
;
/**
* 航班标识
*/
private
String
cacheId
;
}
ruoyi-common/ruoyi-common-ys/src/main/java/org/dromara/common/ys/service/model/res/airport/QueryFlightModel.java
0 → 100644
浏览文件 @
4f6e99cb
package
org
.
dromara
.
common
.
ys
.
service
.
model
.
res
.
airport
;
import
lombok.Data
;
import
java.math.BigDecimal
;
import
java.util.Date
;
import
java.util.List
;
import
java.util.Map
;
/**
* @author hzh
* @date 2024-10-15
* @desc 航班
**/
@Data
public
class
QueryFlightModel
{
/**
* 价格map
*/
private
Map
<
String
,
Object
>
priceMap
;
/**
* 机型map
*/
private
Map
<
String
,
Object
>
planeMap
;
/**
* 查询耗时(毫秒)
*/
private
Integer
queryTimes
;
/**
* 七天特价
*/
private
List
<
WeekPrice
>
weekPrice
;
/**
* 全天最低价
*/
private
DayMinPrice
dayMinPrice
;
/**
* 航班集合
*/
private
Map
<
String
,
Object
>
flightMap
;
/**
* 航班标识
*/
private
String
cacheId
;
}
/**
* 航班结果集
*/
@Data
class
Flight
{
/**
* 经停次数
*/
private
int
stopNum
;
/**
* 航司名称
*/
private
String
airlineName
;
/**
* 航司图片
*/
private
String
airlineImg
;
/**
* 舱位集合 舱位集合 舱位代码为 key。包含多个
*/
private
Cabin
cabinMap
;
/**
* 舱位等级集合
*/
private
List
<
CabinType
>
cabinTypeList
;
/**
* 航班号
*/
private
String
flightNo
;
/**
* 共享航班号
*/
private
String
sharFlightNo
;
/**
* 出发日期
*/
private
String
departDate
;
/**
* 出发时间
*/
private
String
departTime
;
/**
* 到达日期
*/
private
String
arriveDate
;
/**
* 到达时间
*/
private
String
arriveTime
;
/**
* 飞行时长 单位:分钟
*/
private
int
flyTime
;
/**
* 飞行时长中文
*/
private
String
flyTimeStr
;
/**
* 飞行里程
*/
private
String
distance
;
/**
* 餐食 是否有食物 0否 1是
*/
private
String
hasFood
;
/**
* 航司二字码
*/
private
String
airline
;
/**
* 机型
*/
private
String
plane
;
/**
* 是否展示
*/
private
String
isshow
;
/**
* 出发机场名称
*/
private
String
departAirportName
;
/**
* 出发机场三字码
*/
private
String
departAirport
;
/**
* 出发航站楼
*/
private
String
departTerminal
;
/**
* 到达机场名称
*/
private
String
arriveAirportName
;
/**
* 到达航站楼
*/
private
String
arriveTerminal
;
/**
* Y舱价格
*/
private
Double
yPrice
;
/**
* 税费
*/
private
Double
tax
;
/**
* 基建
*/
private
Double
airportFee
;
/**
* 航班最低价格
*/
private
Double
realMinPrice
;
/**
* 航班最低价舱位代码
*/
private
String
realMinPriceCabin
;
/**
* 航班最低价舱位等级
*/
private
String
realMinPriceCabinType
;
/**
* 航班最低价价格id
*/
private
String
realMinPriceId
;
/**
* 公务舱最低价 航班没公务舱时返回-1
*/
private
Double
cMinPrice
;
/**
* 公务舱全价 航班没公务舱时返回0
*/
private
Double
cPrice
;
/**
* 头等舱最低价 航班没头等舱时返回-1
*/
private
Double
fMinPrice
;
/**
* 头等舱全价 航班没头等舱时返回0
*/
private
Double
fPrice
;
}
/**
* 舱位等级集合
*/
@Data
class
CabinType
{
/**
* 舱位等级名称
*/
private
String
cabinTypeName
;
/**
* 舱位集合
*/
private
List
<
Cabin
>
cabinList
;
/**
* 舱位等级
*/
private
String
cabinType
;
}
/**
* 舱位
*/
@Data
class
Cabin
{
/**
* 舱位等级名称
*/
private
String
cabinTypeName
;
/**
* 舱位等级
*/
private
String
cabinType
;
/**
* 舱位名称
*/
private
String
cabinName
;
/**
* 舱位代码
*/
private
String
cabin
;
/**
* 座位数量 A充足 0-9座位数
*/
private
String
seatCount
;
/**
* 价格集合
*/
private
List
<
String
>
priceList
;
}
/**
* 机型
*/
@Data
class
Plane
{
/**
* 机身
*/
private
String
planeBody
;
/**
* 最小座位数
*/
private
String
minSeat
;
/**
* 最大座位数
*/
private
String
maxSeat
;
/**
* 机型
*/
private
String
planeModel
;
/**
* 飞机型号
*/
private
String
planeCode
;
/**
* 飞机名称
*/
private
String
planeName
;
}
/**
* 当天最低价
*/
@Data
class
DayMinPrice
{
/**
* 价格id
*/
private
String
priceId
;
/**
* 账单价
*/
private
BigDecimal
salePrice
;
/**
* 舱位名称
*/
private
String
cabinName
;
/**
* 舱位代码
*/
private
String
cabin
;
/**
* 航班号
*/
private
String
flightNo
;
}
/**
* 一周特价
*/
@Data
class
WeekPrice
{
/**
* price
*/
private
BigDecimal
price
;
/**
* 日期
*/
private
Date
date
;
/**
* 星期
*/
private
String
week
;
}
/**
* 价格结果集
*/
@Data
class
Price
{
/**
* 价格唯一标识
*/
private
String
priceId
;
/**
* 产品类型
*/
private
String
productType
;
/**
* 是否可销售
*/
private
String
isApply
;
/**
* 是否支持儿童预定 Y-是、N-否
*/
private
String
isPermitChdBook
;
/**
* 销售折扣
*/
private
String
saleDiscount
;
/**
* 销售价格
*/
private
String
salePrice
;
/**
* 服务费
*/
private
String
serviceFee
;
/**
* 退票规则
*/
private
String
refundRule
;
/**
* 改签规则
*/
private
String
changeRule
;
/**
* 签转规则
*/
private
String
upgradeRule
;
}
ruoyi-common/ruoyi-common-ys/src/main/java/org/dromara/common/ys/service/model/res/airport/QueryFlightStopModel.java
0 → 100644
浏览文件 @
4f6e99cb
package
org
.
dromara
.
common
.
ys
.
service
.
model
.
res
.
airport
;
import
lombok.Data
;
import
java.util.List
;
/**
* @author hzh
* @date 2024-10-21
* @desc 航班经停信息
**/
@Data
public
class
QueryFlightStopModel
{
/**
* 航班号
*/
private
String
flightNo
;
/**
* 起飞日期
*/
private
String
departDate
;
/**
* 起飞时间
*/
private
String
departTime
;
/**
* 机场三字码
*/
private
String
departAirport
;
/**
* 起飞机场名称
*/
private
String
departAirportName
;
/**
* 起飞城市名称
*/
private
String
departCityName
;
/**
* 到达日期
*/
private
String
arriveDate
;
/**
* 到达时间
*/
private
String
arriveTime
;
/**
* 到达机场三字码
*/
private
String
arriveAirport
;
/**
* 到达机场名称
*/
private
String
arriveAirportName
;
/**
* 到达城市名称
*/
private
String
arriveCityName
;
/**
* 经停信息
*/
private
List
<
FlightStopInfo
>
stopList
;
}
@Data
class
FlightStopInfo
{
/**
* 经停机场三字码
*/
private
String
airport
;
/**
* 经停机场三字码名称
*/
private
String
airportName
;
/**
* 经停城市名称
*/
private
String
cityName
;
/**
* 抵达时间
*/
private
String
arriveTime
;
/**
* 起飞时间
*/
private
String
departTime
;
}
ruoyi-common/ruoyi-common-ys/src/main/java/org/dromara/common/ys/service/model/res/airport/QueryTkOrderModel.java
0 → 100644
浏览文件 @
4f6e99cb
package
org
.
dromara
.
common
.
ys
.
service
.
model
.
res
.
airport
;
import
lombok.Data
;
import
lombok.EqualsAndHashCode
;
import
lombok.experimental.Accessors
;
import
org.dromara.common.ys.service.model.res.airport.other.*
;
import
java.math.BigDecimal
;
import
java.util.List
;
/**
* @author hzh
* @date 2024-11-04
**/
@Data
@EqualsAndHashCode
(
callSuper
=
false
)
@Accessors
(
chain
=
true
)
public
class
QueryTkOrderModel
{
/**
* 是否显示撤销审批操作 1显示 0不显示
**/
private
String
isShowCancelApproval
;
/**
* 乘机人,多个以,隔开
**/
private
String
psg
;
/**
* PNR编码
**/
private
String
pnrNo
;
/**
* 是否显示支付操作,1是显示 2是不显示
**/
private
String
isShowPay
;
/**
* 订单状态代码
**/
private
String
orderStatus
;
/**
* 航程城市中文,城市名称拼接
**/
private
String
voyageCity
;
/**
* 舱位
**/
private
String
cabin
;
/**
* 打印行程单信息
**/
private
List
<
TicketPrintInfoBean
>
printList
;
/**
* PNR编码
**/
private
String
pnrError
;
/**
* 婴儿数
**/
private
Integer
infNum
;
/**
* 订单状态名称
**/
private
String
orderStatusName
;
/**
* 乘机人集合
**/
private
List
<
OrdePsgInfoBean
>
ordePsgList
;
/**
* 航程类型,1单程2往返3联程4缺口
**/
private
Integer
voyageType
;
/**
* 保险金额
**/
private
BigDecimal
insureAmount
;
/**
* 行程id
**/
private
String
routeId
;
/**
* 订单合计,票面价+机建+燃油+服务费+保险金额
**/
private
BigDecimal
orderTotalAmount
;
/**
* 是否显示退票操作,1是显示 2是不显示
**/
private
String
isShowRefund
;
/**
* 是否显示送审操作,1是显示 2是不显示
**/
private
String
isShowApproval
;
/**
* 大客户协议号
**/
private
String
protocolNo
;
/**
* 支付信息集合 适用于多科目支付
**/
private
List
<
OrderPayInfoBean
>
payInfoList
;
/**
* 国内国际,1国内 0国际
**/
private
Integer
international
;
/**
* 是否显示取消操作,1是显示 2是不显示
**/
private
String
isShowCancel
;
/**
* 备注信息
**/
private
String
bzbz
;
/**
* 是否显示改签操作,1是显示 2是不显示
**/
private
String
isShowEndorse
;
/**
* 服务费合计
**/
private
BigDecimal
serviceFee
;
/**
* 订单号
**/
private
String
orderNo
;
/**
* 成人数
**/
private
Integer
adultNum
;
/**
* 保险明细集合
**/
private
List
<
InsuranceInfoBean
>
insuranceList
;
/**
* 预订时间,格式:yyyy-MM-dd HH:mm:ss
**/
private
String
bookDatetime
;
/**
* 票面合计
**/
private
BigDecimal
salePrice
;
/**
* 燃油合计
**/
private
BigDecimal
tax
;
/**
* 是否支持协议欠款支付,1是显示 2是不显示
**/
private
String
sfzcxyqk
;
/**
* 航程,机场三字码拼接
**/
private
String
voyage
;
/**
* 差旅信息
**/
private
OrderBusinessInfoBean
businessInfo
;
/**
* 儿童数
**/
private
Integer
chdNum
;
/**
* 机建合计
**/
private
BigDecimal
airportFee
;
/**
* 保险份数
**/
private
Integer
insureNum
;
/**
* 航班号
**/
private
String
flightNo
;
/**
* 航段集合
**/
private
List
<
OrderRangeInfoBean
>
orderRangeList
;
/**
* 航程机场中文,机场名称拼接
**/
private
String
voyageAirport
;
/**
* 起飞日期,格式:YYYY-MM-dd HH:mm
**/
private
String
departDate
;
/**
* 订单来源名称
**/
private
String
orderFrom
;
/**
* 出票时间,格式:yyyy-MM-dd HH:mm:ss
**/
private
String
drawDatetime
;
/**
* 支付状态,0未付 1已付
**/
private
Integer
payStatus
;
/**
* 支付信息 只返回最后一种支付科目的信息
**/
private
OrderPayInfoBean
payInfo
;
}
ruoyi-common/ruoyi-common-ys/src/main/java/org/dromara/common/ys/service/model/res/airport/other/InsuranceInfoBean.java
0 → 100644
浏览文件 @
4f6e99cb
package
org
.
dromara
.
common
.
ys
.
service
.
model
.
res
.
airport
.
other
;
import
lombok.Data
;
import
lombok.EqualsAndHashCode
;
import
lombok.experimental.Accessors
;
import
java.math.BigDecimal
;
/**
* @author hzh
* @date 2024-11-04
**/
@Data
@EqualsAndHashCode
(
callSuper
=
false
)
@Accessors
(
chain
=
true
)
public
class
InsuranceInfoBean
{
/**
* 保险险种名称
**/
private
String
xzmc
;
/**
* 保险公司名称
**/
private
String
bxcpCompName
;
/**
* 保单号
**/
private
String
bdh
;
/**
*
**/
private
String
bidNo
;
/**
*
**/
private
String
bsex
;
/**
* 生效规则
**/
private
String
xsgzDesc
;
/**
* 行程说明
**/
private
String
xc
;
/**
* 保单生效时间
**/
private
String
bdsxsj
;
/**
* 销售说明
**/
private
String
xssm
;
/**
*
**/
private
String
bidType
;
/**
* 航班号/车次
**/
private
String
hbh
;
/**
* 投保状态名称
**/
private
String
tbztName
;
/**
* 保险金额
**/
private
BigDecimal
insureAmount
;
/**
* 保额说明
**/
private
String
besm
;
/**
* 被保人
**/
private
String
bbr
;
/**
*
**/
private
String
bborn
;
/**
* 保险订单编号
**/
private
String
bxOrderNo
;
/**
* 产品名称
**/
private
String
bxcpmc
;
/**
* 投保状态
**/
private
String
tbzt
;
/**
* 乘机人顺序号
**/
private
Integer
psgSn
;
}
ruoyi-common/ruoyi-common-ys/src/main/java/org/dromara/common/ys/service/model/res/airport/other/OrdePsgInfoBean.java
0 → 100644
浏览文件 @
4f6e99cb
package
org
.
dromara
.
common
.
ys
.
service
.
model
.
res
.
airport
.
other
;
import
lombok.Data
;
import
lombok.EqualsAndHashCode
;
import
lombok.experimental.Accessors
;
import
java.math.BigDecimal
;
import
java.util.List
;
/**
* @author hzh
* @date 2024-11-04
**/
@Data
@EqualsAndHashCode
(
callSuper
=
false
)
@Accessors
(
chain
=
true
)
public
class
OrdePsgInfoBean
{
/**
* 里程卡号
**/
private
String
mileageCardNo
;
/**
* 票号信息集合
**/
private
List
<
TicketInfoBean
>
ticketList
;
/**
* 国籍
**/
private
String
nation
;
/**
* 票价小计
**/
private
BigDecimal
psgTotalAmount
;
/**
* 证件号码
**/
private
String
idNo
;
/**
* 证件签发地
**/
private
String
placeOfIssue
;
/**
* 所在部门的上10级部门编号
**/
private
String
empDeptNo10
;
/**
* 保险金额
**/
private
BigDecimal
insureAmount
;
/**
* 旅客类型,1成人 2儿童 3婴儿
**/
private
Integer
psgType
;
/**
* 13位票号,多个以,隔开
**/
private
String
ticketNo
;
/**
* 证件有效期,格式:yyyy-MM-dd
**/
private
String
passportPeriod
;
/**
* 所在部门的上级部门名称
**/
private
String
empDeptName1
;
/**
* 所在部门的上3级部门名称
**/
private
String
empDeptName3
;
/**
* 顺序号
**/
private
Integer
sn
;
/**
* 所在部门的上2级部门名称
**/
private
String
empDeptName2
;
/**
* 所在部门的上5级部门名称
**/
private
String
empDeptName5
;
/**
* 所在部门的上4级部门名称
**/
private
String
empDeptName4
;
/**
* 所在部门的上7级部门名称
**/
private
String
empDeptName7
;
/**
* 所在部门的上6级部门名称
**/
private
String
empDeptName6
;
/**
* 服务费
**/
private
BigDecimal
serviceFee
;
/**
* 所在部门的上9级部门名称
**/
private
String
empDeptName9
;
/**
* 所在部门的上8级部门名称
**/
private
String
empDeptName8
;
/**
* 所在部门名称
**/
private
String
empDepName
;
/**
* 国籍名称
**/
private
String
nationName
;
/**
* 所在部门的上级部门编号
**/
private
String
empDeptNo1
;
/**
* 证件类型,NI身份证 PP护照 ID其他
**/
private
String
idType
;
/**
* 所在部门的上3级部门编号
**/
private
String
empDeptNo3
;
/**
* 票面价
**/
private
BigDecimal
salePrice
;
/**
* 所在部门的上2级部门编号
**/
private
String
empDeptNo2
;
/**
* 所在部门的上5级部门编号
**/
private
String
empDeptNo5
;
/**
* 性别,F女 M男
**/
private
String
sex
;
/**
* 所在部门的上4级部门编号
**/
private
String
empDeptNo4
;
/**
* 旅客姓名
**/
private
String
psgName
;
/**
* 所在部门的上7级部门编号
**/
private
String
empDeptNo7
;
/**
* 所在部门的上10级部门名称
**/
private
String
empDeptName10
;
/**
* 所在部门编号
**/
private
String
empDeptNo
;
/**
* 所在部门的上6级部门编号
**/
private
String
empDeptNo6
;
/**
* 燃油税
**/
private
BigDecimal
tax
;
/**
* 所在部门的上9级部门编号
**/
private
String
empDeptNo9
;
/**
* 对应员工工号
**/
private
String
empNo
;
/**
* 所在部门的上8级部门编号
**/
private
String
empDeptNo8
;
/**
* 出生日期,格式:yyyy-MM-dd
**/
private
String
birthDate
;
/**
* 机建
**/
private
BigDecimal
airportFee
;
/**
* 保险份数
**/
private
Integer
insureNum
;
/**
* 手机号
**/
private
String
phoneNumber
;
}
ruoyi-common/ruoyi-common-ys/src/main/java/org/dromara/common/ys/service/model/res/airport/other/OrderBusinessInfoBean.java
0 → 100644
浏览文件 @
4f6e99cb
package
org
.
dromara
.
common
.
ys
.
service
.
model
.
res
.
airport
.
other
;
import
lombok.Data
;
import
lombok.EqualsAndHashCode
;
import
lombok.experimental.Accessors
;
/**
* @author hzh
* @date 2024-11-04
**/
@Data
@EqualsAndHashCode
(
callSuper
=
false
)
@Accessors
(
chain
=
true
)
public
class
OrderBusinessInfoBean
{
/**
* 最后审批时间,格式:yyyy-MM-dd HH:mm:ss
**/
private
String
appDatetime
;
/**
* 联系手机
**/
private
String
linkMobile
;
/**
* 出差事由
**/
private
String
travelRemark
;
/**
* 企业预订人姓名
**/
private
String
bookerName
;
/**
* 成本中心编号
**/
private
String
costCenterNo
;
/**
* 联系人
**/
private
String
linkMan
;
/**
* 违背事项代码
**/
private
String
violateitemCode
;
/**
* 违背事项名称
**/
private
String
violateitem
;
/**
* 差旅类型,1因公 2因私
**/
private
Integer
tripType
;
/**
* 企业预订人工号
**/
private
String
bookerNo
;
/**
* 项目编号
**/
private
String
projectNo
;
/**
* 是否违背差旅标准,0否 1是
**/
private
String
isViolate
;
/**
* 最后审批人工号
**/
private
String
appUserNo
;
/**
* 最后审批人姓名
**/
private
String
appUserName
;
/**
* 出差申请单号
**/
private
String
travelNo
;
/**
* 成本中心名称
**/
private
String
costCenterName
;
/**
* 审批规则名字
**/
private
String
appRuleName
;
/**
* 违背原因代码
**/
private
String
reasonCode
;
/**
* 项目名称
**/
private
String
projectName
;
/**
* 违背原因名称
**/
private
String
reasonDesc
;
/**
* 联系邮箱
**/
private
String
linkEmail
;
}
ruoyi-common/ruoyi-common-ys/src/main/java/org/dromara/common/ys/service/model/res/airport/other/OrderPayInfoBean.java
0 → 100644
浏览文件 @
4f6e99cb
package
org
.
dromara
.
common
.
ys
.
service
.
model
.
res
.
airport
.
other
;
import
lombok.Data
;
import
lombok.EqualsAndHashCode
;
import
lombok.experimental.Accessors
;
import
java.math.BigDecimal
;
/**
* @author hzh
* @date 2024-11-04
**/
@Data
@EqualsAndHashCode
(
callSuper
=
false
)
@Accessors
(
chain
=
true
)
public
class
OrderPayInfoBean
{
/**
* 支付金额
**/
private
BigDecimal
payAmount
;
/**
* 支付科目id
**/
private
String
paySubject
;
/**
* 支付方式名称
**/
private
String
payMothedName
;
/**
* 支付科目名称
**/
private
String
paySubjectName
;
/**
* 支付卡号
**/
private
String
payBankCard
;
/**
* 支付备注
**/
private
String
payRemark
;
/**
* 支付流水号
**/
private
String
payBillno
;
/**
* 支付时间,格式:yyyy-MM-dd HH:mm:ss
**/
private
String
payDate
;
}
ruoyi-common/ruoyi-common-ys/src/main/java/org/dromara/common/ys/service/model/res/airport/other/OrderRangeInfoBean.java
0 → 100644
浏览文件 @
4f6e99cb
package
org
.
dromara
.
common
.
ys
.
service
.
model
.
res
.
airport
.
other
;
import
lombok.Data
;
import
lombok.EqualsAndHashCode
;
import
lombok.experimental.Accessors
;
import
java.math.BigDecimal
;
/**
* @author hzh
* @date 2024-11-04
**/
@Data
@EqualsAndHashCode
(
callSuper
=
false
)
@Accessors
(
chain
=
true
)
public
class
OrderRangeInfoBean
{
/**
* 出发机场英文名
**/
private
String
departAirportNameEn
;
/**
* 到达机场三字码
**/
private
String
arriveAirport
;
/**
* 出发城市编号
**/
private
String
departCity
;
/**
* 飞行里程(里)
**/
private
Integer
distance
;
/**
* 推荐航班
**/
private
String
recomFlightNo
;
/**
* 舱位等级
**/
private
String
cabin
;
/**
* 舱位折扣,格式:8.5折 1.3倍
**/
private
String
discount
;
/**
* 出发城市英文名
**/
private
String
departCityNameEn
;
/**
* 出发航站楼
**/
private
String
departTerminal
;
/**
* 到达机场英文名
**/
private
String
arriveAirportNameEn
;
/**
* 到达城市名称
**/
private
String
arriveCityName
;
/**
* 实际承运航班号
**/
private
String
shareFlightNo
;
/**
* 到达时间,格式:yyyy-MM-dd HH:mm
**/
private
String
arriveTime
;
/**
* 到达机场名称
**/
private
String
arriveAirportName
;
/**
* 退票规则
**/
private
String
refundRule
;
/**
* 机型
**/
private
String
model
;
/**
* 航段顺序号
**/
private
Integer
sn
;
/**
* 航司二字码
**/
private
String
airline
;
/**
* 舱位名称
**/
private
String
cabinName
;
/**
* 签转规定
**/
private
String
changeRule
;
/**
* 是否经停,0否 1是
**/
private
String
stopFlag
;
/**
* 出发城市名称
**/
private
String
departCityName
;
/**
* 经停信息
**/
private
StopFlagInfoBean
stopFlagInfo
;
/**
* 出发时间,格式:yyyy-MM-dd HH:mm
**/
private
String
departTime
;
/**
* 到达航站楼
**/
private
String
arriveTerminal
;
/**
* 最低价航班信息
**/
private
String
minFlightInfo
;
/**
* Y舱全价
**/
private
BigDecimal
yprice
;
/**
* 标准舱位运价
**/
private
BigDecimal
standardPrice
;
/**
* 到达城市编号
**/
private
String
arriveCity
;
/**
* 出发机场三字码
**/
private
String
departAirport
;
/**
* 航班号
**/
private
String
flightNo
;
/**
* 改签规则
**/
private
String
upgradeRule
;
/**
* 到达城市英文名
**/
private
String
arriveCityNameEn
;
/**
* 当天最低价
**/
private
BigDecimal
minPrice
;
/**
* 是否有餐食,0否 1是
**/
private
Integer
isfood
;
/**
* 出发机场名称
**/
private
String
departAirportName
;
/**
* 飞行时长(分钟),格式:如60
**/
private
Integer
flightTime
;
/**
* 航司名称
**/
private
String
airlineName
;
}
ruoyi-common/ruoyi-common-ys/src/main/java/org/dromara/common/ys/service/model/res/airport/other/StopFlagInfoBean.java
0 → 100644
浏览文件 @
4f6e99cb
package
org
.
dromara
.
common
.
ys
.
service
.
model
.
res
.
airport
.
other
;
import
lombok.Data
;
import
lombok.EqualsAndHashCode
;
import
lombok.experimental.Accessors
;
/**
* @author hzh
* @date 2024-11-04
**/
@Data
@EqualsAndHashCode
(
callSuper
=
false
)
@Accessors
(
chain
=
true
)
public
class
StopFlagInfoBean
{
/**
* 城市编号
**/
private
String
stopCity
;
/**
* 机场三字码
**/
private
String
stopAirport
;
/**
* 起飞时间,格式:yyyy-MM-dd HH:mm
**/
private
String
stopDepartTime
;
/**
* 城市名称
**/
private
String
stopCityName
;
/**
* 机场名称
**/
private
String
stopAirportName
;
/**
* 到达时间,格式:yyyy-MM-dd HH:mm
**/
private
String
stopArriveTime
;
}
ruoyi-common/ruoyi-common-ys/src/main/java/org/dromara/common/ys/service/model/res/airport/other/TicketInfoBean.java
0 → 100644
浏览文件 @
4f6e99cb
package
org
.
dromara
.
common
.
ys
.
service
.
model
.
res
.
airport
.
other
;
import
lombok.Data
;
import
lombok.EqualsAndHashCode
;
import
lombok.experimental.Accessors
;
import
java.math.BigDecimal
;
/**
* @author hzh
* @date 2024-11-04
**/
@Data
@EqualsAndHashCode
(
callSuper
=
false
)
@Accessors
(
chain
=
true
)
public
class
TicketInfoBean
{
/**
* 舱位代码
**/
private
String
cabin
;
/**
* 折扣,格式:8.5折 1.3倍
**/
private
String
discount
;
/**
* 航程城市名称
**/
private
String
voyageZh
;
/**
* 票号 十三位票号 例如7811234567891
**/
private
String
tkno
;
/**
* 到达时间,格式:yyyy-MM-dd HH:mm
**/
private
String
arriveTime
;
/**
* 票价小计
**/
private
BigDecimal
ticketTotalAmount
;
/**
* 航程类型,1单程 2往返 3连程 4缺口程
**/
private
Integer
voyageType
;
/**
* 保险金额
**/
private
BigDecimal
insureAmount
;
/**
* 票号,格式:789-1234567891
**/
private
String
ticketNo
;
/**
* 航段序号,多个以,隔开
**/
private
String
ticketRangeNo
;
/**
* 舱位名称
**/
private
String
cabinName
;
/**
* 乘机人序号,对应乘机人集合中序号属性
**/
private
String
psgSn
;
/**
* 服务费
**/
private
BigDecimal
serviceFee
;
/**
* detr状态
**/
private
String
detrStatus
;
/**
* 机票航段改签标识 改签状态 1改签中 0未改签 2改签完成
**/
private
Integer
rangeChangeFlag
;
/**
* 出发时间,格式:yyyy-MM-dd HH:mm
**/
private
String
departTime
;
/**
* 票面价
**/
private
BigDecimal
salePrice
;
/**
* 乘机人
**/
private
String
psgName
;
/**
* 燃油税
**/
private
BigDecimal
tax
;
/**
* 航程
**/
private
String
voyage
;
/**
* 机票航段退票标识退票状态0.正常1.退票中2.已完成
**/
private
Integer
rangeRefundFlag
;
/**
* 机建
**/
private
BigDecimal
airportFee
;
/**
* 保险份数
**/
private
Integer
insureNum
;
/**
* uatp卡号
**/
private
String
uatpKh
;
/**
* 结算状态 结算状态0未结1结算中2已结算3已入账4已确认
**/
private
String
jszt
;
/**
* 航班号 好多以,隔开
**/
private
String
flightNo
;
/**
* 创建时间
**/
private
String
createTime
;
/**
* 退票标识
**/
private
String
refundFlag
;
/**
* 票证状态,1正常、2退、3废
**/
private
String
tkStatus
;
}
ruoyi-common/ruoyi-common-ys/src/main/java/org/dromara/common/ys/service/model/res/airport/other/TicketPrintInfoBean.java
0 → 100644
浏览文件 @
4f6e99cb
package
org
.
dromara
.
common
.
ys
.
service
.
model
.
res
.
airport
.
other
;
import
lombok.Data
;
import
lombok.EqualsAndHashCode
;
import
lombok.experimental.Accessors
;
import
java.math.BigDecimal
;
/**
* @author hzh
* @date 2024-11-04
**/
@Data
@EqualsAndHashCode
(
callSuper
=
false
)
@Accessors
(
chain
=
true
)
public
class
TicketPrintInfoBean
{
/**
* 打印价格 包含基建税费
**/
private
BigDecimal
printAmount
;
/**
* 打印时间
**/
private
String
printDate
;
/**
* 出行人姓名
**/
private
String
psgName
;
/**
* 打印行程单记录id
**/
private
Integer
id
;
/**
* 打印状态 0未打印 1任务生成等待打印 2打印失败 3打印完成
**/
private
Integer
state
;
/**
* 票号
**/
private
String
tkno
;
/**
* 行程单号
**/
private
String
printInvoiceNo
;
}
ruoyi-common/ruoyi-common-ys/src/main/java/org/dromara/common/ys/service/model/res/comomResource/AirportModel.java
0 → 100644
浏览文件 @
4f6e99cb
package
org
.
dromara
.
common
.
ys
.
service
.
model
.
res
.
comomResource
;
import
lombok.Data
;
/**
* @author hzh
* @date 2024-10-15
**/
@Data
public
class
AirportModel
{
/**
* 城市id
*/
private
String
cityId
;
/**
* 城市名称
*/
private
String
cityName
;
/**
* 机场名称
*/
private
String
airportName
;
/**
* 机场三字码
*/
private
String
threeCode
;
}
ruoyi-common/ruoyi-common-ys/src/main/java/org/dromara/common/ys/service/model/res/comomResource/CityModel.java
0 → 100644
浏览文件 @
4f6e99cb
package
org
.
dromara
.
common
.
ys
.
service
.
model
.
res
.
comomResource
;
import
lombok.Data
;
/**
* @author hzh
* @date 2024-10-15
* @desc 锁信息
**/
@Data
public
class
CityModel
{
/**
* 城市id
*/
private
String
cityId
;
/**
* 城市名称
*/
private
String
cityName
;
/**
* 所在国家id
*/
private
String
countryId
;
/**
* 所在省份id
*/
private
String
provinceId
;
}
ruoyi-common/ruoyi-common-ys/src/main/java/org/dromara/common/ys/service/model/res/comomResource/CountryModel.java
0 → 100644
浏览文件 @
4f6e99cb
package
org
.
dromara
.
common
.
ys
.
service
.
model
.
res
.
comomResource
;
import
lombok.Data
;
/**
* @author hzh
* @date 2024-10-15
* @desc 锁信息
**/
@Data
public
class
CountryModel
{
/**
* 国家编号
*/
private
String
countryCode
;
/**
* 国家名称
*/
private
String
countryName
;
}
ruoyi-common/ruoyi-common-ys/src/main/java/org/dromara/common/ys/service/model/res/comomResource/DictModel.java
0 → 100644
浏览文件 @
4f6e99cb
package
org
.
dromara
.
common
.
ys
.
service
.
model
.
res
.
comomResource
;
import
lombok.Data
;
/**
* @author hzh
* @date 2024-10-15
* @desc 锁信息
**/
@Data
public
class
DictModel
{
/**
* 数据编号
*/
private
String
id
;
/**
* 数据名称
*/
private
String
cname
;
}
ruoyi-common/ruoyi-common-ys/src/main/java/org/dromara/common/ys/service/model/res/comomResource/ProvinceModel.java
0 → 100644
浏览文件 @
4f6e99cb
package
org
.
dromara
.
common
.
ys
.
service
.
model
.
res
.
comomResource
;
import
lombok.Data
;
/**
* @author hzh
* @date 2024-10-15
* @desc 锁信息
**/
@Data
public
class
ProvinceModel
{
/**
* 省份编号
*/
private
String
provinceCode
;
/**
* 省份名称
*/
private
String
provinceName
;
}
ruoyi-common/ruoyi-common-ys/src/main/java/org/dromara/common/ys/service/model/res/comomResource/StationModel.java
0 → 100644
浏览文件 @
4f6e99cb
package
org
.
dromara
.
common
.
ys
.
service
.
model
.
res
.
comomResource
;
import
lombok.Data
;
/**
* @author hzh
* @date 2024-10-15
* @desc 锁信息
**/
@Data
public
class
StationModel
{
/**
* 城市id
*/
private
String
cityId
;
/**
* 城市名称
*/
private
String
cityName
;
/**
* 站点代码
*/
private
String
stationCode
;
/**
* 站点名称
*/
private
String
stationName
;
}
ruoyi-common/ruoyi-common-ys/src/main/java/org/dromara/common/ys/service/model/res/comomResource/TrainBaseModel.java
0 → 100644
浏览文件 @
4f6e99cb
package
org
.
dromara
.
common
.
ys
.
service
.
model
.
res
.
comomResource
;
import
lombok.Data
;
/**
* @author hzh
* @date 2024-10-15
* @desc 锁信息
**/
@Data
public
class
TrainBaseModel
{
/**
* 编号
*/
private
String
code
;
/**
* 名称
*/
private
String
name
;
}
ruoyi-common/ruoyi-common-ys/src/main/java/org/dromara/common/ys/service/model/res/insurance/BxcpModel.java
0 → 100644
浏览文件 @
4f6e99cb
package
org
.
dromara
.
common
.
ys
.
service
.
model
.
res
.
insurance
;
import
lombok.Data
;
import
java.math.BigDecimal
;
/**
* @author hzh
* @date 2024-10-24
* @desc 保险
**/
@Data
public
class
BxcpModel
{
/**
* 保险产品标识
*/
private
String
bxid
;
/**
* 保险名称
*/
private
String
bxmc
;
/**
* 险种名称
*/
private
String
bxxzmc
;
/**
* 保险公司名称
*/
private
String
bxgsmc
;
/**
* 保额 单位万元
*/
private
BigDecimal
be
;
/**
* 销售价
*/
private
BigDecimal
saleprice
;
/**
* 保额说明
*/
private
String
besm
;
/**
* 保额 生效规则描述
*/
private
String
sxgzDesc
;
/**
* 适用年龄
*/
private
String
synl
;
/**
* 销售说明
*/
private
String
xssm
;
}
ruoyi-common/ruoyi-common-ys/src/main/java/org/dromara/common/ys/service/model/res/train/AllStationModel.java
0 → 100644
浏览文件 @
4f6e99cb
package
org
.
dromara
.
common
.
ys
.
service
.
model
.
res
.
train
;
import
lombok.Data
;
/**
* @author hzh
* @date 2024-10-23
**/
@Data
public
class
AllStationModel
{
/**
* 车站名称
*/
private
String
ename
;
/**
* 备用1
*/
private
String
by1
;
/**
* 备用2
*/
private
String
by2
;
/**
* 备用3
*/
private
String
by3
;
/**
* 备注
*/
private
String
bzbz
;
/**
* 城市名称
*/
private
String
cityName
;
/**
* 对应城市编号
*/
private
String
csbh
;
/**
* 操作时间
*/
private
String
czdatetime
;
/**
* 操作用户
*/
private
String
czuserid
;
/**
* 到达说明
*/
private
String
ddsm
;
/**
* 主键
*/
private
String
id
;
/**
* 省份名称
*/
private
String
provinceName
;
/**
* 拼音检索码
*/
private
String
pyjsm
;
/**
* 所在城市
*/
private
String
szcs
;
/**
* 所在省份
*/
private
String
szsf
;
/**
* 距市中心距离
*/
private
String
szxjl
;
/**
* 坐标id
*/
private
String
zbid
;
/**
* 站点电话
*/
private
String
zddh
;
/**
* 站点代码
*/
private
String
zddm
;
/**
* 站点地址
*/
private
String
zddz
;
/**
* 站点jj
*/
private
String
zdjj
;
/**
* 站点名称
*/
private
String
zdmc
;
/**
* 站点全拼
*/
private
String
zdqp
;
}
ruoyi-common/ruoyi-common-ys/src/main/java/org/dromara/common/ys/service/model/res/train/QueryModel.java
0 → 100644
浏览文件 @
4f6e99cb
package
org
.
dromara
.
common
.
ys
.
service
.
model
.
res
.
train
;
import
lombok.Data
;
import
java.util.List
;
/**
* @author hzh
* @date 2024-10-22
**/
@Data
public
class
QueryModel
{
/**
* 列车类型代码 如Z直达 K快车等
* G——高铁
* C——城际列车
* D——动车
* Z——直达特快列车
* T——特快列车
* K——快速列车
* N——管内快速列车
* Y——临时旅游列车
* L、A——临时旅客列车
* S——市郊列车
* 无字母——普通旅客快车
*/
private
String
trainType
;
/**
* 车次
*/
private
String
trainCode
;
/**
* 内部编码
*/
private
String
trainNo
;
/**
* 出发站编码
*/
private
String
fromStationCode
;
/**
* 出发站名称
*/
private
String
fromStationName
;
/**
* 出发城市id
*/
private
String
fromCity
;
/**
* 出发城市名称
*/
private
String
fromCityName
;
/**
* 出发站的序号
*/
private
String
fromStationNo
;
/**
* 目的地编码
*/
private
String
toStationCode
;
/**
* 目的地名称
*/
private
String
toStationName
;
/**
* 目的地城市id
*/
private
String
toCity
;
/**
* 目的地城市名称
*/
private
String
toCityName
;
/**
* 目的地序号
*/
private
String
toStationNo
;
/**
* 始发站代码
*/
private
String
startStationCode
;
/**
* 始发站名称
*/
private
String
startStationName
;
/**
* 始发站城市id
*/
private
String
startCity
;
/**
* 始发站城市名称
*/
private
String
startCityName
;
/**
* 终点站编码
*/
private
String
endStationCode
;
/**
* 终点站名称
*/
private
String
endStationName
;
/**
* 终点站城市id
*/
private
String
endCity
;
/**
* 终点站城市名称
*/
private
String
endCityName
;
/**
* 起售时间
*/
private
String
saleDateTime
;
/**
* 起售时刻
*/
private
String
saleTime
;
/**
* 开车时间 格式:HH:mm
*/
private
String
startTime
;
/**
* 开车日期 格式:yyyy-MM-dd
*/
private
String
startDate
;
/**
* 到达时天数
*/
private
String
arriveDays
;
/**
* 到达时间 格式:HH:mm
*/
private
String
arriveTime
;
/**
* 运行时间 格式:00小时15分钟
*/
private
String
runTime
;
/**
* 运行分钟 格式:15 ,
*/
private
String
runMinute
;
/**
* 是否可凭二代身份证直接进出站 0否 1是 ,
*/
private
String
isByidcard
;
/**
* 现在是否可以购买
*/
private
String
canBuyNow
;
/**
* 是否静音车厢 ,
*/
private
String
isQuietCoach
;
/**
* 无座类型:O-二等座无座,1-硬座无座 ,
*/
private
String
wzType
;
/**
* 座位列表
*/
private
List
<
Seat
>
seatList
;
}
@Data
class
Seat
{
/**
* 座位类型代码
*/
private
String
seatType
;
/**
* 座位类型名称
*/
private
String
seatName
;
/**
* 剩余座位数
*/
private
String
seatCount
;
/**
* 价格
*/
private
String
price
;
}
ruoyi-common/ruoyi-common-ys/src/main/java/org/dromara/common/ys/service/model/res/vehicles/EstimateJsycPriceModel.java
0 → 100644
浏览文件 @
4f6e99cb
package
org
.
dromara
.
common
.
ys
.
service
.
model
.
res
.
vehicles
;
import
lombok.Data
;
import
java.util.List
;
/**
* @author hzh
* @date 2024-10-22
**/
@Data
public
class
EstimateJsycPriceModel
{
/**
* 车型价格集合
*/
private
List
<
VehiclesShoppingEstimatePriceTypeApi
>
typeList
;
/**
* 缓存id
*/
private
String
cacheId
;
}
ruoyi-common/ruoyi-common-ys/src/main/java/org/dromara/common/ys/service/model/res/vehicles/EstimateYyycPriceModel.java
0 → 100644
浏览文件 @
4f6e99cb
package
org
.
dromara
.
common
.
ys
.
service
.
model
.
res
.
vehicles
;
import
lombok.Data
;
import
java.math.BigDecimal
;
import
java.util.List
;
/**
* @author hzh
* @date 2024-10-22
**/
@Data
public
class
EstimateYyycPriceModel
{
/**
* 车型价格集合
*/
private
List
<
VehiclesShoppingEstimatePriceTypeApi
>
typeList
;
/**
* 缓存id
*/
private
String
cacheId
;
}
@Data
class
VehiclesShoppingEstimatePriceTypeApi
{
/**
* 车型id
*/
private
String
vehicleTypeId
;
/**
* 车型名称
*/
private
String
vehicleTypeName
;
/**
* 可载人数
*/
private
Integer
personNum
;
/**
* 可载行李数
*/
private
Integer
luggageNum
;
/**
* 可载行李数说明
*/
private
String
luggageMsg
;
/**
* 车型描述
*/
private
String
vehicleTypeDesc
;
/**
* 封面图片url
*/
private
String
coverUrl
;
/**
* 价格集合
*/
private
List
<
VehiclesShoppingEstimatePriceDetailApi
>
detailBeanList
;
}
@Data
class
VehiclesShoppingEstimatePriceDetailApi
{
/**
* 产品ID
*/
private
String
productId
;
/**
* 产品名称
*/
private
String
productName
;
/**
* 价格来源(供应商id)
*/
private
String
priceFrom
;
/**
* 价格来源名称(供应商名称)
*/
private
String
priceFromName
;
/**
* 供应商图片地址
*/
private
String
priceFromUrl
;
/**
* 产品标签
*/
private
String
productLable
;
/**
* 产品标签名称
*/
private
String
productLabelName
;
/**
* 免费取消提前时限 用车时间之前几小时
*/
private
Double
cancelAdvMils
;
/**
* 退改规则说明
*/
private
String
ruleMsg
;
/**
* 预定规则说明
*/
private
String
scheduledRulesMsg
;
/**
* 超时规则说明
*/
private
String
timeoutRuleMsg
;
/**
* 服务说明
*/
private
String
serviceDesc
;
/**
* 预估行程距离,单位米
*/
private
Double
distance
;
/**
* 预估行程时间,单位秒
*/
private
Double
duration
;
/**
* 销售价 单位元
*/
private
BigDecimal
salePrice
;
/**
* 销售服务费 单位元
*/
private
BigDecimal
serviceFee
;
/**
* 差旅返回对象
*/
private
VehiclesClzcMatchApi
clzcMatch
;
}
@Data
class
VehiclesClzcMatchApi
{
/**
* 适用规则 1预估价格 2里程 ,
*/
private
String
cityLevelCode
;
/**
* 适用日期(周几) 多个,分割 ,
*/
private
String
wjMonths
;
/**
* 可用时段
*/
private
String
kysd
;
/**
* 是否违背0否1是
*/
private
String
sfwb
;
/**
* 差旅标准值
*/
private
String
clzcValue
;
/**
* 管控方式1只做提醒2不允许预订
*/
private
Integer
gkfs
;
/**
* 违背说明
*/
private
String
wbsm
;
}
ruoyi-common/ruoyi-common-ys/src/main/resources/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports
0 → 100644
浏览文件 @
4f6e99cb
org.dromara.common.ys.service.impl.AirPortServiceImpl
org.dromara.common.ys.service.impl.CommonResourceServiceImpl
org.dromara.common.ys.service.impl.InsuranceServiceImpl
org.dromara.common.ys.service.impl.OrgServiceImpl
org.dromara.common.ys.service.impl.TrainServiceImpl
org.dromara.common.ys.service.impl.VehiclesServiceImpl
ruoyi-modules/pom.xml
浏览文件 @
4f6e99cb
...
@@ -14,6 +14,7 @@
...
@@ -14,6 +14,7 @@
<module>
ruoyi-job
</module>
<module>
ruoyi-job
</module>
<module>
ruoyi-resource
</module>
<module>
ruoyi-resource
</module>
<module>
ruoyi-workflow
</module>
<module>
ruoyi-workflow
</module>
<module>
ruoyi-server
</module>
</modules>
</modules>
<artifactId>
ruoyi-modules
</artifactId>
<artifactId>
ruoyi-modules
</artifactId>
...
...
ruoyi-modules/ruoyi-server/src/main/java/org/dromara/resource/service/airport/AirportController.java
0 → 100644
浏览文件 @
4f6e99cb
//package org.dromara.resource.service.airport;
//
//import com.alibaba.druid.util.StringUtils;
//import org.apache.commons.collections4.CollectionUtils;
//import org.dromara.common.core.constant.Constants;
//import org.dromara.common.core.domain.R;
//import org.dromara.common.redis.utils.RedisUtils;
//import org.dromara.common.ys.constant.Cplx;
//import org.dromara.common.ys.constant.TripType;
//import org.dromara.common.ys.service.IAirportService;
//import org.dromara.common.ys.service.ICommonResourceService;
//import org.dromara.common.ys.service.IInsuranceService;
//import org.dromara.common.ys.service.model.res.airport.BookOrderModel;
//import org.dromara.common.ys.service.model.res.airport.QueryFlightModel;
//import org.dromara.common.ys.service.model.res.comomResource.AirportModel;
//import org.springframework.web.bind.annotation.*;
//
//import java.time.Duration;
//import java.util.List;
//import java.util.stream.Collectors;
//
///**
// * @author hzh
// * @date 2024-10-28
// **/
//@RestController
//@RequestMapping("/biz/airport/ys")
//public class AirportController {
//
//
// private static final String AIRPORT = "airport:ys";
//
// private IAirportService service;
//
// private IInsuranceService insuranceService;
//
// private ICommonResourceService commonResourceService;
//
// @GetMapping("list")
// public R<QueryFlightModel> list(org.dromara.common.ys.service.model.req.airport.QueryFlightModel model) {
// List<AirportModel> airPortList = getAirPortList();
// model.setArriveAirport(airPortList.stream().filter(item -> StringUtils.equals(model.getArriveAirport(), item.getCityName())).map(AirportModel::getThreeCode).findFirst().orElse(null));
// model.setDepartAirport(airPortList.stream().filter(item -> StringUtils.equals(model.getDepartAirport(), item.getCityName())).map(AirportModel::getThreeCode).findFirst().orElse(null));
// model.setTripType(TripType.PUBLIC.getCode());
// try {
// return R.ok(service.queryFlight(getUserId(), model));
// } catch (Exception e) {
// throw new RuntimeException(e.getMessage());
// }
// }
//
// private List<AirportModel> getAirPortList() {
// List<AirportModel> airPortList = cacheService.get(AIRPORT);
// if (CollectionUtils.isEmpty(airPortList)) {
// airPortList = commonResourceService.getAirportList(getUserId());
// RedisUtils.setCacheObject(verifyKey, code, Duration.ofMinutes(Constants.CAPTCHA_EXPIRATION));
// cacheService.put(AIRPORT, airPortList, 60 * 60 * 24L);
// }
// return airPortList;
// }
//
// @GetMapping("/insuranceList")
// public CommonResponse<List<com.wenhe.base.model.res.insurance.BxcpModel>> insuranceList() {
// return CommonResponse.ok(insuranceService.list(getUserId(), new BxcpModel().setCplx(Cplx.DOMESTIC.getCode())));
// }
//
// @GetMapping("/airportList")
// public CommonResponse<List<AirportModel>> airportList(@RequestParam("keyword") String keyword) {
// List<AirportModel> list = getAirPortList();
// return CommonResponse.ok(
// list.stream().filter(item->{
// if (com.wenhe.base.service.tool.StringUtils.isNotEmpty(item.getCityName()) && item.getCityName().contains(keyword)) {
// return true;
// }
// if (com.wenhe.base.service.tool.StringUtils.isNotEmpty(item.getAirportName()) && item.getAirportName().contains(keyword)) {
// return true;
// }
// if (com.wenhe.base.service.tool.StringUtils.isNotEmpty(item.getThreeCode()) && item.getThreeCode().contains(keyword)) {
// return true;
// }
// return false;
// }).collect(Collectors.toList()));
// }
//
// /**
// * 下单接口
// *
// * @param model model
// * @return 订单详情
// */
// @PostMapping("/bookOrder")
// public CommonResponse<List<BookOrderModel>> bookOrder(@RequestBody com.wenhe.base.model.req.airport.bookOrder.BookOrderModel model) {
// model.setTripType(TripType.PUBLIC.getCode());
// List<BookOrderModel> orderList = service.bookOrder(getUserId(), model);
// return CommonResponse.ok(orderList);
// }
//
// @GetMapping("/orderList")
// public CommonResponse<PageInfo<OrderListModel>> orderList(com.wenhe.base.model.req.airport.OrderListModel model) {
// model.setBookNo(getUserId());
// return CommonResponse.ok(service.orderList(getUserId(), model));
// }
//
//
// @GetMapping("/orderDetail")
// public CommonResponse<QueryTkOrderModel> orderDetail(com.wenhe.base.model.req.airport.QueryTkOrderModel model) {
// return CommonResponse.ok(service.detail(getUserId(), model));
// }
//}
ruoyi-modules/ruoyi-server/src/main/java/org/dromara/resource/service/train/TrainController.java
0 → 100644
浏览文件 @
4f6e99cb
//package org.dromara.resource.service.train;
//
//import com.wenhe.base.api.common.CommonResponse;
//import com.wenhe.base.api.tool.IBaseCacheService;
//import com.wenhe.base.common.web.controller.AbstractCommonController;
//import com.wenhe.base.constant.TripType;
//import com.wenhe.base.model.req.train.QueryModel;
//import com.wenhe.base.model.res.comomResource.CityModel;
//import com.wenhe.base.model.res.train.AllStationModel;
//import com.wenhe.base.service.ICommonResourceService;
//import com.wenhe.base.service.ITrainService;
//import com.wenhe.base.service.tool.StringUtils;
//import com.wenhe.base.util.collection.CollectionUtils;
//import org.springframework.beans.factory.annotation.Autowired;
//import org.springframework.web.bind.annotation.GetMapping;
//import org.springframework.web.bind.annotation.RequestMapping;
//import org.springframework.web.bind.annotation.RequestParam;
//import org.springframework.web.bind.annotation.RestController;
//
//import java.util.ArrayList;
//import java.util.List;
//import java.util.concurrent.Callable;
//import java.util.concurrent.ExecutorService;
//import java.util.concurrent.Executors;
//import java.util.concurrent.Future;
//import java.util.stream.Collectors;
//
///**
// * @author hzh
// * @date 2024-10-29
// **/
//@RestController
//@RequestMapping("/biz/train/ys")
//public class TrainController extends AbstractCommonController {
//
// @Autowired
// private ITrainService trainService;
//
// @Autowired
// private ICommonResourceService commonResourceService;
//
// @Autowired
// private IBaseCacheService<List> cacheService;
//
// private static final String TRAIN = "train:ys";
// private static final String CITY = "city:ys";
//
// @GetMapping("/stationList")
// public CommonResponse<List<AllStationModel>> stationList(@RequestParam("keyword") String keyword) {
// List<AllStationModel> stationList = getStationList();
// return CommonResponse.ok(
// stationList.stream().filter(item -> {
// if (StringUtils.isNotEmpty(item.getCityName()) && item.getCityName().contains(keyword)) {
// return true;
// }
// if (StringUtils.isNotEmpty(item.getEname()) && item.getEname().contains(keyword)) {
// return true;
// }
// if (StringUtils.isNotEmpty(item.getZdmc()) && item.getZdmc().contains(keyword)) {
// return true;
// }
// if (StringUtils.isNotEmpty(item.getPyjsm()) && item.getPyjsm().contains(keyword)) {
// return true;
// }
// return false;
// }).collect(Collectors.toList())
// );
// }
//
// private List<AllStationModel> getStationList() {
// List<AllStationModel> stationList = (List<AllStationModel>) cacheService.get(TRAIN);
// if (CollectionUtils.isEmpty(stationList)) {
// stationList = trainService.getAllStation(getUserId());
// cacheService.put(TRAIN, stationList, 60 * 60 * 24L);
// }
// return stationList;
// }
//
// /**
// * 线程数
// */
// private static final int NUM_THREADS = 100;
//
// @GetMapping("/list")
// public CommonResponse<List<com.wenhe.base.model.res.train.QueryModel>> list(
// @RequestParam(value = "fromDate") String fromDate,
// @RequestParam(value = "fromStationCode", required = false) String fromStationCode,
// @RequestParam(value = "toStationCode", required = false) String toStationCode,
// @RequestParam(value = "fromCity", required = false) String fromCity,
// @RequestParam(value = "toCity", required = false) String toCity
// ) throws InterruptedException {
// //获取出发站点
// List<String> fromStationCodeList = getStationCodeList(fromStationCode, fromCity);
// //获取目的站点
// List<String> toStationCodeList = getStationCodeList(toStationCode, toCity);
//
// String userId = getUserId();
//
// List<Callable<List<com.wenhe.base.model.res.train.QueryModel>>> taskList = fromStationCodeList.stream().flatMap(fromCode ->
// toStationCodeList.stream().map(toCode -> (Callable<List<com.wenhe.base.model.res.train.QueryModel>>) () -> {
// QueryModel query = new QueryModel()
// .setFromDate(fromDate)
// .setFromStationCode(fromCode)
// .setToStationCode(toCode)
// .setTripType(TripType.PUBLIC.getCode());
// return trainService.queryModel(userId, query);
// })).collect(Collectors.toList());
//
//
// // 创建一个线程池
// ExecutorService executorService = Executors.newFixedThreadPool(NUM_THREADS);
//
// // 提交任务并等待完成
// List<Future<List<com.wenhe.base.model.res.train.QueryModel>>> futures = executorService.invokeAll(taskList);
//
// // 关闭线程池
// executorService.shutdown();
//
// // 检查任务是否完成
// List<com.wenhe.base.model.res.train.QueryModel> list = futures.stream().flatMap(f -> {
// try {
// return f.get().stream();
// } catch (Exception e) {
// return new ArrayList<com.wenhe.base.model.res.train.QueryModel>().stream();
// }
// }).collect(Collectors.groupingBy(com.wenhe.base.model.res.train.QueryModel::getTrainCode))
// .entrySet().stream().map(entry -> entry.getValue().get(0)).collect(Collectors.toList());
//
// return CommonResponse.ok(list);
// }
//
// private List<String> getStationCodeList(String stationCode, String city) {
// List<String> stationCodeList = new ArrayList<>();
// if (StringUtils.isNotEmpty(stationCode)) {
// stationCodeList.add(stationCode);
// } else {
// stationCodeList = getStationList().stream().filter(item -> StringUtils.equals(item.getCityName(), city)).map(AllStationModel::getZddm)
//
// .collect(Collectors.toList());
// }
// return stationCodeList;
// }
//
//
// @GetMapping("/cityList")
// public CommonResponse<List<CityModel>> list(@RequestParam("keyword") String keyword) {
// List<CityModel> cityList = getCityList();
// return CommonResponse.ok(cityList.stream().filter(item -> StringUtils.equals(item.getCityName(), keyword)).collect(Collectors.toList()));
// }
//
// private List<CityModel> getCityList() {
// List<CityModel> cityList = (List<CityModel>) cacheService.get(CITY);
// if (CollectionUtils.isEmpty(cityList)) {
// cityList = commonResourceService.getCityList(getUserId());
// cacheService.put(CITY, cityList, 60 * 60 * 24L);
// }
// return cityList;
// }
//
//}
ruoyi-modules/ruoyi-server/src/main/java/org/dromara/resource/service/vehicle/VehiclesController.java
0 → 100644
浏览文件 @
4f6e99cb
//package org.dromara.resource.service.vehicle;
//
//import com.wenhe.base.api.common.CommonResponse;
//import com.wenhe.base.common.web.controller.AbstractCommonController;
//import com.wenhe.base.constant.TripType;
//import com.wenhe.base.model.req.vehicles.EstimateJsycPriceModel;
//import com.wenhe.base.model.req.vehicles.EstimateYyycPriceModel;
//import com.wenhe.base.service.IVehiclesService;
//import org.springframework.beans.factory.annotation.Autowired;
//import org.springframework.web.bind.annotation.RequestMapping;
//import org.springframework.web.bind.annotation.RestController;
//
///**
// * @author hzh
// * @date 2024-10-29
// **/
//@RestController
//@RequestMapping("/biz/vehicle/ys")
//public class VehiclesController extends AbstractCommonController {
//
// @Autowired
// private IVehiclesService vehiclesService;
//
// @RequestMapping("/immediate")
// public CommonResponse<com.wenhe.base.model.res.vehicles.EstimateJsycPriceModel> immediate(EstimateJsycPriceModel model) {
// model.setTripType(TripType.PUBLIC.getCode());
// return CommonResponse.ok(vehiclesService.estimateJsycPrice(getUserId(), model));
// }
//
// @RequestMapping("/prebook")
// public CommonResponse<com.wenhe.base.model.res.vehicles.EstimateYyycPriceModel> prebook(EstimateYyycPriceModel model) {
// model.setTripType(TripType.PUBLIC.getCode());
// return CommonResponse.ok(vehiclesService.estimateYyycPrice(getUserId(), model));
// }
//
//
//}
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/WxUser.java
0 → 100644
浏览文件 @
4f6e99cb
package
org
.
dromara
.
system
.
domain
;
import
com.baomidou.mybatisplus.annotation.TableId
;
import
com.baomidou.mybatisplus.annotation.TableLogic
;
import
com.baomidou.mybatisplus.annotation.TableName
;
import
lombok.Data
;
import
lombok.EqualsAndHashCode
;
import
lombok.NoArgsConstructor
;
import
org.dromara.common.tenant.core.TenantEntity
;
import
java.util.Date
;
/**
* 用户对象 sys_user
*
* @author Lion Li
*/
@Data
@NoArgsConstructor
@EqualsAndHashCode
(
callSuper
=
true
)
@TableName
(
"wx_user"
)
public
class
WxUser
extends
TenantEntity
{
/**
* 用户ID
*/
@TableId
(
value
=
"user_id"
)
private
Long
userId
;
/**
* 用户账号
*/
private
String
openId
;
/**
* 手机号码
*/
private
String
phonenumber
;
/**
* 帐号状态(0正常 1停用)
*/
private
String
status
;
/**
* 删除标志(0代表存在 2代表删除)
*/
@TableLogic
private
String
delFlag
;
/**
* 最后登录IP
*/
private
String
loginIp
;
/**
* 最后登录时间
*/
private
Date
loginDate
;
/**
* 备注
*/
private
String
remark
;
}
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/bo/WxUserBo.java
0 → 100644
浏览文件 @
4f6e99cb
package
org
.
dromara
.
system
.
domain
.
bo
;
import
io.github.linpeilie.annotations.AutoMapper
;
import
jakarta.validation.constraints.NotBlank
;
import
lombok.Data
;
import
lombok.EqualsAndHashCode
;
import
lombok.NoArgsConstructor
;
import
org.dromara.common.mybatis.core.domain.BaseEntity
;
import
org.dromara.system.domain.WxUser
;
/**
* 用户信息业务对象 sys_user
*
* @author Michelle.Chung
*/
@Data
@NoArgsConstructor
@EqualsAndHashCode
(
callSuper
=
true
)
@AutoMapper
(
target
=
WxUser
.
class
,
reverseConvertGenerate
=
false
)
public
class
WxUserBo
extends
BaseEntity
{
/**
* 用户ID
*/
private
Long
userId
;
/**
* openId
*/
private
String
openId
;
/**
* 手机号码
*/
@NotBlank
(
message
=
"手机号码不能为空"
)
private
String
phonenumber
;
/**
* 帐号状态(0正常 1停用)
*/
private
String
status
;
/**
* 备注
*/
private
String
remark
;
}
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/vo/WxUserVo.java
0 → 100644
浏览文件 @
4f6e99cb
package
org
.
dromara
.
system
.
domain
.
vo
;
import
io.github.linpeilie.annotations.AutoMapper
;
import
lombok.Data
;
import
org.dromara.system.domain.WxUser
;
import
java.io.Serial
;
import
java.io.Serializable
;
import
java.util.Date
;
/**
* 用户信息视图对象 sys_user
*
* @author Michelle.Chung
*/
@Data
@AutoMapper
(
target
=
WxUser
.
class
)
public
class
WxUserVo
implements
Serializable
{
@Serial
private
static
final
long
serialVersionUID
=
1L
;
/**
* 用户ID
*/
private
Long
userId
;
/**
* 租户ID
*/
private
String
tenantId
;
/**
* 用户账号
*/
private
String
openId
;
/**
* 手机号码
*/
private
String
phonenumber
;
/**
* 帐号状态(0正常 1停用)
*/
private
String
status
;
/**
* 最后登录IP
*/
private
String
loginIp
;
/**
* 最后登录时间
*/
private
Date
loginDate
;
/**
* 备注
*/
private
String
remark
;
/**
* 创建时间
*/
private
Date
createTime
;
}
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/dubbo/RemoteUserServiceImpl.java
浏览文件 @
4f6e99cb
...
@@ -16,15 +16,18 @@ import org.dromara.common.mybatis.helper.DataPermissionHelper;
...
@@ -16,15 +16,18 @@ import org.dromara.common.mybatis.helper.DataPermissionHelper;
import
org.dromara.common.tenant.helper.TenantHelper
;
import
org.dromara.common.tenant.helper.TenantHelper
;
import
org.dromara.system.api.RemoteUserService
;
import
org.dromara.system.api.RemoteUserService
;
import
org.dromara.system.api.domain.bo.RemoteUserBo
;
import
org.dromara.system.api.domain.bo.RemoteUserBo
;
import
org.dromara.system.api.domain.bo.RemoteWxUserBo
;
import
org.dromara.system.api.domain.vo.RemoteUserVo
;
import
org.dromara.system.api.domain.vo.RemoteUserVo
;
import
org.dromara.system.api.model.LoginUser
;
import
org.dromara.system.api.model.LoginUser
;
import
org.dromara.system.api.model.RoleDTO
;
import
org.dromara.system.api.model.RoleDTO
;
import
org.dromara.system.api.model.XcxLoginUser
;
import
org.dromara.system.api.model.XcxLoginUser
;
import
org.dromara.system.domain.SysUser
;
import
org.dromara.system.domain.SysUser
;
import
org.dromara.system.domain.bo.SysUserBo
;
import
org.dromara.system.domain.bo.SysUserBo
;
import
org.dromara.system.domain.bo.WxUserBo
;
import
org.dromara.system.domain.vo.SysDeptVo
;
import
org.dromara.system.domain.vo.SysDeptVo
;
import
org.dromara.system.domain.vo.SysRoleVo
;
import
org.dromara.system.domain.vo.SysRoleVo
;
import
org.dromara.system.domain.vo.SysUserVo
;
import
org.dromara.system.domain.vo.SysUserVo
;
import
org.dromara.system.domain.vo.WxUserVo
;
import
org.dromara.system.mapper.SysUserMapper
;
import
org.dromara.system.mapper.SysUserMapper
;
import
org.dromara.system.service.*
;
import
org.dromara.system.service.*
;
import
org.springframework.stereotype.Service
;
import
org.springframework.stereotype.Service
;
...
@@ -46,6 +49,7 @@ public class RemoteUserServiceImpl implements RemoteUserService {
...
@@ -46,6 +49,7 @@ public class RemoteUserServiceImpl implements RemoteUserService {
private
final
ISysConfigService
configService
;
private
final
ISysConfigService
configService
;
private
final
ISysRoleService
roleService
;
private
final
ISysRoleService
roleService
;
private
final
ISysDeptService
deptService
;
private
final
ISysDeptService
deptService
;
private
final
IWxUserService
wxUserService
;
private
final
SysUserMapper
userMapper
;
private
final
SysUserMapper
userMapper
;
/**
/**
...
@@ -148,13 +152,19 @@ public class RemoteUserServiceImpl implements RemoteUserService {
...
@@ -148,13 +152,19 @@ public class RemoteUserServiceImpl implements RemoteUserService {
*/
*/
@Override
@Override
public
XcxLoginUser
getUserInfoByOpenid
(
String
openid
)
throws
UserException
{
public
XcxLoginUser
getUserInfoByOpenid
(
String
openid
)
throws
UserException
{
// todo 自行实现 userService.selectUserByOpenid(openid);
WxUserVo
wxUser
=
wxUserService
.
selectUserByOpenId
(
openid
);
SysUser
sysUser
=
new
SysUser
();
if
(!
ObjectUtil
.
isNotNull
(
wxUser
))
{
if
(
ObjectUtil
.
isNull
(
sysUser
))
{
return
null
;
// todo 用户不存在 业务逻辑自行实现
}
//根据手机号查询用户信息
SysUserVo
user
=
userService
.
selectUserByPhonenumber
(
wxUser
.
getPhonenumber
());
if
(!
ObjectUtil
.
isNotNull
(
user
))
{
throw
new
UserException
(
"user.not.exists"
,
wxUser
.
getPhonenumber
());
}
}
SysUser
sysUser
=
BeanUtil
.
copyProperties
(
user
,
SysUser
.
class
);
if
(
UserStatus
.
DISABLE
.
getCode
().
equals
(
sysUser
.
getStatus
()))
{
if
(
UserStatus
.
DISABLE
.
getCode
().
equals
(
sysUser
.
getStatus
()))
{
// todo 用户已被停用 业务逻辑自行实现
throw
new
UserException
(
"user.blocked"
,
sysUser
.
getUserName
());
}
}
// 框架登录不限制从什么表查询 只要最终构建出 LoginUser 即可
// 框架登录不限制从什么表查询 只要最终构建出 LoginUser 即可
// 此处可根据登录用户的数据不同 自行创建 loginUser 属性不够用继承扩展就行了
// 此处可根据登录用户的数据不同 自行创建 loginUser 属性不够用继承扩展就行了
...
@@ -190,6 +200,12 @@ public class RemoteUserServiceImpl implements RemoteUserService {
...
@@ -190,6 +200,12 @@ public class RemoteUserServiceImpl implements RemoteUserService {
return
userService
.
registerUser
(
sysUserBo
,
remoteUserBo
.
getTenantId
());
return
userService
.
registerUser
(
sysUserBo
,
remoteUserBo
.
getTenantId
());
}
}
@Override
public
Boolean
registerWxUserInfo
(
RemoteWxUserBo
remoteWxUserBo
)
{
WxUserBo
user
=
BeanUtil
.
copyProperties
(
remoteWxUserBo
,
WxUserBo
.
class
);
return
wxUserService
.
registerUser
(
user
,
remoteWxUserBo
.
getTenantId
());
}
/**
/**
* 通过用户ID查询用户账户
* 通过用户ID查询用户账户
*
*
...
...
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/mapper/WxUserMapper.java
0 → 100644
浏览文件 @
4f6e99cb
package
org
.
dromara
.
system
.
mapper
;
import
com.baomidou.mybatisplus.core.conditions.Wrapper
;
import
com.baomidou.mybatisplus.core.toolkit.Constants
;
import
com.baomidou.mybatisplus.extension.plugins.pagination.Page
;
import
org.apache.ibatis.annotations.Param
;
import
org.dromara.common.mybatis.annotation.DataColumn
;
import
org.dromara.common.mybatis.annotation.DataPermission
;
import
org.dromara.common.mybatis.core.mapper.BaseMapperPlus
;
import
org.dromara.system.domain.WxUser
;
import
org.dromara.system.domain.vo.WxUserVo
;
import
java.util.List
;
/**
* 用户表 数据层
*
* @author Lion Li
*/
public
interface
WxUserMapper
extends
BaseMapperPlus
<
WxUser
,
WxUserVo
>
{
@DataPermission
({
@DataColumn
(
key
=
"openId"
,
value
=
"u.open_id"
)
})
Page
<
WxUserVo
>
selectPageUserList
(
@Param
(
"page"
)
Page
<
WxUser
>
page
,
@Param
(
Constants
.
WRAPPER
)
Wrapper
<
WxUser
>
queryWrapper
);
@DataPermission
({
@DataColumn
(
key
=
"openId"
,
value
=
"u.open_id"
)
})
List
<
WxUserVo
>
selectUserList
(
@Param
(
Constants
.
WRAPPER
)
Wrapper
<
WxUser
>
queryWrapper
);
@Override
@DataPermission
({
@DataColumn
(
key
=
"deptName"
,
value
=
"dept_id"
),
@DataColumn
(
key
=
"userName"
,
value
=
"user_id"
)
})
int
update
(
@Param
(
Constants
.
ENTITY
)
WxUser
user
,
@Param
(
Constants
.
WRAPPER
)
Wrapper
<
WxUser
>
updateWrapper
);
@Override
@DataPermission
({
@DataColumn
(
key
=
"userName"
,
value
=
"user_id"
)
})
int
updateById
(
@Param
(
Constants
.
ENTITY
)
WxUser
user
);
}
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/IWxUserService.java
0 → 100644
浏览文件 @
4f6e99cb
package
org
.
dromara
.
system
.
service
;
import
org.dromara.system.domain.bo.WxUserBo
;
import
org.dromara.system.domain.vo.WxUserVo
;
/**
* 用户 业务层
*
* @author Lion Li
*/
public
interface
IWxUserService
{
/**
* 通过openId查询用户
*
* @param openId openId
* @return 用户对象信息
*/
WxUserVo
selectUserByOpenId
(
String
openId
);
/**
* 注册用户
*
* @param user 用户对象
* @param tenantId 租户ID
* @return boolean
*/
boolean
registerUser
(
WxUserBo
user
,
String
tenantId
);
}
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/WxUserServiceImpl.java
0 → 100644
浏览文件 @
4f6e99cb
package
org
.
dromara
.
system
.
service
.
impl
;
import
com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper
;
import
lombok.RequiredArgsConstructor
;
import
lombok.extern.slf4j.Slf4j
;
import
org.dromara.common.core.utils.MapstructUtils
;
import
org.dromara.system.domain.WxUser
;
import
org.dromara.system.domain.bo.WxUserBo
;
import
org.dromara.system.domain.vo.WxUserVo
;
import
org.dromara.system.mapper.WxUserMapper
;
import
org.dromara.system.service.IWxUserService
;
import
org.springframework.stereotype.Service
;
/**
* 用户 业务层处理
*
* @author Lion Li
*/
@Slf4j
@RequiredArgsConstructor
@Service
public
class
WxUserServiceImpl
implements
IWxUserService
{
private
final
WxUserMapper
baseMapper
;
/**
* 通过openId查询用户
*
* @param openId openId
* @return 用户对象信息
*/
@Override
public
WxUserVo
selectUserByOpenId
(
String
openId
)
{
return
baseMapper
.
selectVoOne
(
new
LambdaQueryWrapper
<
WxUser
>().
eq
(
WxUser:
:
getOpenId
,
openId
));
}
/**
* 注册用户信息
*
* @param user 用户信息
* @return 结果
*/
@Override
public
boolean
registerUser
(
WxUserBo
user
,
String
tenantId
)
{
user
.
setCreateBy
(
0L
);
user
.
setUpdateBy
(
0L
);
WxUser
wxUser
=
MapstructUtils
.
convert
(
user
,
WxUser
.
class
);
wxUser
.
setTenantId
(
tenantId
);
return
baseMapper
.
insert
(
wxUser
)
>
0
;
}
}
ruoyi-modules/ruoyi-system/src/main/resources/mapper/system/WxUserMapper.xml
0 → 100644
浏览文件 @
4f6e99cb
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper
namespace=
"org.dromara.system.mapper.WxUserMapper"
>
<resultMap
type=
"org.dromara.system.domain.vo.WxUserVo"
id=
"WxUserResult"
>
<id
property=
"userId"
column=
"user_id"
/>
</resultMap>
<select
id=
"selectPageUserList"
resultMap=
"WxUserResult"
>
select
<if
test=
"ew.getSqlSelect != null"
>
${ew.getSqlSelect}
</if>
<if
test=
"ew.getSqlSelect == null"
>
u.user_id, u.open_id, u.phonenumber,
u.status, u.del_flag, u.login_ip, u.login_date, u.create_by, u.create_time, u.remark
</if>
from sys_user u
${ew.getCustomSqlSegment}
</select>
<select
id=
"selectUserList"
resultMap=
"WxUserResult"
>
select
<if
test=
"ew.getSqlSelect != null"
>
${ew.getSqlSelect}
</if>
<if
test=
"ew.getSqlSelect == null"
>
u.user_id, u.open_id, u.phonenumber,
u.status, u.del_flag, u.login_ip, u.login_date, u.create_by, u.create_time, u.remark
</if>
from sys_user u
${ew.getCustomSqlSegment}
</select>
</mapper>
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论