Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
C
cloud-platform
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
youjj
cloud-platform
Commits
4dfba9b0
Commit
4dfba9b0
authored
Jul 04, 2019
by
jiaorz
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'base-modify' of
http://113.105.137.151:22280/youjj/cloud-platform
into base-modify
parents
f973f5f9
01701847
Changes
86
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
86 changed files
with
2293 additions
and
319 deletions
+2293
-319
AuthController.java
...thub/wxiaoqi/security/auth/controller/AuthController.java
+40
-0
IUserService.java
.../com/github/wxiaoqi/security/auth/feign/IUserService.java
+19
-4
AuthService.java
...com/github/wxiaoqi/security/auth/service/AuthService.java
+17
-0
AppAuthServiceImpl.java
...xiaoqi/security/auth/service/impl/AppAuthServiceImpl.java
+10
-0
AuthServiceImpl.java
...b/wxiaoqi/security/auth/service/impl/AuthServiceImpl.java
+10
-0
BaseException.java
...thub/wxiaoqi/security/common/exception/BaseException.java
+6
-0
IntervalUtil.java
...com/github/wxiaoqi/security/common/util/IntervalUtil.java
+146
-0
ResultCode.java
...thub/wxiaoqi/security/common/util/process/ResultCode.java
+2
-0
UserSourceEnum.java
...oqi/security/admin/constant/enumerate/UserSourceEnum.java
+35
-0
AppUserDetail.java
...m/github/wxiaoqi/security/admin/entity/AppUserDetail.java
+1
-0
AppUserLogin.java
...om/github/wxiaoqi/security/admin/entity/AppUserLogin.java
+34
-0
pom.xml
ace-modules/ace-admin/pom.xml
+5
-0
AdminBootstrap.java
...ava/com/github/wxiaoqi/security/admin/AdminBootstrap.java
+2
-1
AppUserLoginBiz.java
...om/github/wxiaoqi/security/admin/biz/AppUserLoginBiz.java
+10
-2
BaseUserMemberBiz.java
.../github/wxiaoqi/security/admin/biz/BaseUserMemberBiz.java
+21
-8
WebConfiguration.java
...ithub/wxiaoqi/security/admin/config/WebConfiguration.java
+5
-0
AppUserLoginMapper.java
...hub/wxiaoqi/security/admin/mapper/AppUserLoginMapper.java
+10
-0
AppUserRest.java
...va/com/github/wxiaoqi/security/admin/rpc/AppUserRest.java
+25
-0
AppPermissionService.java
...aoqi/security/admin/rpc/service/AppPermissionService.java
+181
-2
BaseUserMemberMapper.xml
...-admin/src/main/resources/mapper/BaseUserMemberMapper.xml
+2
-0
AppVersion.java
...rc/main/java/com/xxfc/platform/app/entity/AppVersion.java
+7
-0
CrosstownTypeEnum.java
...c/platform/order/contant/enumerate/CrosstownTypeEnum.java
+45
-0
OrderStatusEnum.java
...xfc/platform/order/contant/enumerate/OrderStatusEnum.java
+1
-1
RefundStatusEnum.java
...fc/platform/order/contant/enumerate/RefundStatusEnum.java
+47
-0
BaseOrder.java
...c/main/java/com/xxfc/platform/order/entity/BaseOrder.java
+17
-3
OrderRentVehicleDetail.java
...om/xxfc/platform/order/entity/OrderRentVehicleDetail.java
+7
-7
OrderVehicaleCrosstown.java
...om/xxfc/platform/order/entity/OrderVehicaleCrosstown.java
+4
-2
DedDetailDTO.java
.../main/java/com/xxfc/platform/order/pojo/DedDetailDTO.java
+23
-0
RentVehicleBO.java
...ava/com/xxfc/platform/order/pojo/order/RentVehicleBO.java
+0
-1
UnitPriceDTO.java
...java/com/xxfc/platform/order/pojo/order/UnitPriceDTO.java
+12
-0
BaseOrderBiz.java
...c/main/java/com/xxfc/platform/order/biz/BaseOrderBiz.java
+129
-15
OrderTourVerificationBiz.java
...com/xxfc/platform/order/biz/OrderTourVerificationBiz.java
+1
-1
HttpJobHandler.java
...va/com/xxfc/platform/order/jobhandler/HttpJobHandler.java
+0
-41
RentDepositHandler.java
...om/xxfc/platform/order/jobhandler/RentDepositHandler.java
+113
-0
BaseOrderController.java
...ava/com/xxfc/platform/order/rest/BaseOrderController.java
+25
-0
OrderRentVehicleController.java
.../xxfc/platform/order/rest/OrderRentVehicleController.java
+19
-2
AbstractOrderHandle.java
.../com/xxfc/platform/order/service/AbstractOrderHandle.java
+4
-0
OrderMemberService.java
...a/com/xxfc/platform/order/service/OrderMemberService.java
+3
-2
OrderRentVehicleService.java
.../xxfc/platform/order/service/OrderRentVehicleService.java
+49
-31
OrderTourService.java
...ava/com/xxfc/platform/order/service/OrderTourService.java
+27
-8
BaseOrderMapper.xml
...rder-server/src/main/resources/mapper/BaseOrderMapper.xml
+14
-0
TourFeign.java
...src/main/java/com/xxfc/platform/tour/feign/TourFeign.java
+2
-2
TourGoodBiz.java
...src/main/java/com/xxfc/platform/tour/biz/TourGoodBiz.java
+7
-1
TourGoodDetailBiz.java
...in/java/com/xxfc/platform/tour/biz/TourGoodDetailBiz.java
+3
-0
TourGoodMapper.java
...in/java/com/xxfc/platform/tour/mapper/TourGoodMapper.java
+2
-0
TourGoodController.java
.../java/com/xxfc/platform/tour/rest/TourGoodController.java
+1
-1
TourGoodVerificationController.java
...fc/platform/tour/rest/TourGoodVerificationController.java
+2
-2
TourGoodMapper.xml
...-tour-server/src/main/resources/mapper/TourGoodMapper.xml
+20
-16
DictionaryKey.java
...a/com/xxfc/platform/universal/constant/DictionaryKey.java
+32
-0
RedisKey.java
...n/java/com/xxfc/platform/universal/constant/RedisKey.java
+1
-2
RegionType.java
...java/com/xxfc/platform/universal/constant/RegionType.java
+58
-0
ResCode.java
...in/java/com/xxfc/platform/universal/constant/ResCode.java
+37
-0
RegionDTO.java
.../main/java/com/xxfc/platform/universal/dto/RegionDTO.java
+21
-0
SysRegion.java
...in/java/com/xxfc/platform/universal/entity/SysRegion.java
+35
-0
RegionFeign.java
...n/java/com/xxfc/platform/universal/feign/RegionFeign.java
+24
-0
ThirdFeign.java
...in/java/com/xxfc/platform/universal/feign/ThirdFeign.java
+17
-6
CustomIllegalParamException.java
...c/platform/universal/msg/CustomIllegalParamException.java
+8
-0
RentViolationDTO.java
...java/com/xxfc/platform/universal/vo/RentViolationDTO.java
+12
-0
ViolationVO.java
...main/java/com/xxfc/platform/universal/vo/ViolationVO.java
+10
-0
pom.xml
xx-universal/xx-universal-server/pom.xml
+6
-0
UniversalApplication.java
...ava/com/xxfc/platform/universal/UniversalApplication.java
+2
-0
DictionaryBiz.java
...n/java/com/xxfc/platform/universal/biz/DictionaryBiz.java
+19
-6
SysRegionBiz.java
...in/java/com/xxfc/platform/universal/biz/SysRegionBiz.java
+190
-0
WebConfiguration.java
.../com/xxfc/platform/universal/config/WebConfiguration.java
+11
-0
DictionaryController.java
...c/platform/universal/controller/DictionaryController.java
+7
-0
SmsController.java
...com/xxfc/platform/universal/controller/SmsController.java
+7
-0
SysRegionController.java
...fc/platform/universal/controller/SysRegionController.java
+87
-0
TrafficViolationsController.java
...orm/universal/controller/TrafficViolationsController.java
+13
-1
SysRegionMapper.java
...a/com/xxfc/platform/universal/mapper/SysRegionMapper.java
+24
-0
SmsService.java
.../java/com/xxfc/platform/universal/service/SmsService.java
+57
-2
SysRegionMapper.xml
...rsal-server/src/main/resources/mapper/SysRegionMapper.xml
+28
-0
ResCode.java
...a/com/xxfc/platform/vehicle/constant/ResCode/ResCode.java
+4
-1
Vehicle.java
...c/main/java/com/xxfc/platform/vehicle/entity/Vehicle.java
+3
-1
VehicleFeign.java
...in/java/com/xxfc/platform/vehicle/feign/VehicleFeign.java
+8
-2
AddOrUpdateVehicleVo.java
.../com/xxfc/platform/vehicle/pojo/AddOrUpdateVehicleVo.java
+7
-0
QueryVehicleVo.java
...n/java/com/xxfc/platform/vehicle/pojo/QueryVehicleVo.java
+18
-0
ResultVehicleVo.java
.../java/com/xxfc/platform/vehicle/pojo/ResultVehicleVo.java
+151
-0
VehiclePageQueryVo.java
...va/com/xxfc/platform/vehicle/pojo/VehiclePageQueryVo.java
+2
-2
VehicleBiz.java
...c/main/java/com/xxfc/platform/vehicle/biz/VehicleBiz.java
+49
-24
VehicleModelBiz.java
...n/java/com/xxfc/platform/vehicle/biz/VehicleModelBiz.java
+7
-1
VehiclePlatCataBiz.java
...ava/com/xxfc/platform/vehicle/biz/VehiclePlatCataBiz.java
+96
-78
VehicleMapper.java
.../java/com/xxfc/platform/vehicle/mapper/VehicleMapper.java
+2
-2
VehicleController.java
...ava/com/xxfc/platform/vehicle/rest/VehicleController.java
+5
-8
VehicleModelController.java
...om/xxfc/platform/vehicle/rest/VehicleModelController.java
+3
-0
VehicleMapper.xml
...ehicle-server/src/main/resources/mapper/VehicleMapper.xml
+65
-30
VehiclePlatCataMapper.xml
...erver/src/main/resources/mapper/VehiclePlatCataMapper.xml
+2
-0
No files found.
ace-auth/ace-auth-server/src/main/java/com/github/wxiaoqi/security/auth/controller/AuthController.java
View file @
4dfba9b0
...
...
@@ -166,4 +166,44 @@ public class AuthController {
}
/**
* 根据用户id登录 Unbelievable ! ! !
* @param userId
* @return
* @throws Exception
*/
@PostMapping
(
value
=
"/applet/uid/login"
)
public
JSONObject
appletLoginByUserId
(
@RequestParam
(
"userId"
)
Integer
userId
)
throws
Exception
{
log
.
info
(
userId
+
"----require appletLoginByUserId..."
);
JSONObject
data
=
appAuthService
.
appletLoginByUserId
(
userId
);
if
(
data
!=
null
&&
data
.
getInteger
(
"status"
)==
ResultCode
.
SUCCESS_CODE
){
JSONObject
result
=
data
.
getJSONObject
(
"data"
);
if
(
result
==
null
){
data
.
put
(
"status"
,
1001
);
}
else
{
String
token
=
appAuthService
.
getToken
(
String
.
valueOf
(
result
.
get
(
"username"
)),
result
.
getInteger
(
"userId"
));
data
.
put
(
"token"
,
token
);
}
}
return
data
;
}
@PostMapping
(
value
=
"/applet/registry"
)
public
JSONObject
registryWithApplet
(
@RequestParam
(
value
=
"username"
,
defaultValue
=
""
)
String
username
,
@RequestParam
(
value
=
"nickname"
,
defaultValue
=
""
)
String
nickname
,
@RequestParam
(
value
=
"headimgurl"
,
defaultValue
=
""
)
String
headimgurl
)
throws
Exception
{
JSONObject
data
=
appAuthService
.
appletRegistry
(
username
,
nickname
,
headimgurl
);
if
(
data
!=
null
&&
data
.
getInteger
(
"status"
)==
ResultCode
.
SUCCESS_CODE
){
JSONObject
result
=
data
.
getJSONObject
(
"data"
);
if
(
result
==
null
){
data
.
put
(
"status"
,
1001
);
}
else
{
String
token
=
appAuthService
.
getToken
(
String
.
valueOf
(
result
.
get
(
"username"
)),
result
.
getInteger
(
"userId"
));
data
.
put
(
"token"
,
token
);
}
}
return
data
;
}
}
ace-auth/ace-auth-server/src/main/java/com/github/wxiaoqi/security/auth/feign/IUserService.java
View file @
4dfba9b0
...
...
@@ -6,10 +6,7 @@ import com.github.wxiaoqi.security.api.vo.user.UserInfo;
import
com.github.wxiaoqi.security.auth.configuration.FeignConfiguration
;
import
com.github.wxiaoqi.security.auth.util.user.JwtAuthenticationRequest
;
import
org.springframework.cloud.openfeign.FeignClient
;
import
org.springframework.web.bind.annotation.RequestBody
;
import
org.springframework.web.bind.annotation.RequestMapping
;
import
org.springframework.web.bind.annotation.RequestMethod
;
import
org.springframework.web.bind.annotation.RequestParam
;
import
org.springframework.web.bind.annotation.*
;
/**
...
...
@@ -51,4 +48,22 @@ public interface IUserService {
public
JSONObject
reset
(
@RequestParam
(
value
=
"username"
)
String
username
,
@RequestParam
(
value
=
"mobilecode"
)
String
mobilecode
,
@RequestParam
(
value
=
"password"
)
String
password
);
/**
* 小程序通过用户id登录登录
* @param userid
* @return
*/
@RequestMapping
(
value
=
"/api/app/applet/uid/login"
,
method
=
RequestMethod
.
POST
)
public
JSONObject
appletLogin
(
@RequestParam
(
value
=
"userid"
)
Integer
userid
);
/**
* 小程序注册
* @param username
* @param nickname
* @param headimgurl
* @return
*/
@PostMapping
(
"/api/app/applet/registry"
)
public
JSONObject
appletRegistry
(
@RequestParam
(
value
=
"username"
)
String
username
,
@RequestParam
(
value
=
"nickname"
)
String
nickname
,
@RequestParam
(
value
=
"headimgurl"
)
String
headimgurl
);
}
ace-auth/ace-auth-server/src/main/java/com/github/wxiaoqi/security/auth/service/AuthService.java
View file @
4dfba9b0
...
...
@@ -3,6 +3,7 @@ package com.github.wxiaoqi.security.auth.service;
import
com.alibaba.fastjson.JSONObject
;
import
com.github.wxiaoqi.security.auth.util.user.JwtAuthenticationRequest
;
import
org.springframework.web.bind.annotation.RequestParam
;
public
interface
AuthService
{
String
login
(
JwtAuthenticationRequest
authenticationRequest
)
throws
Exception
;
...
...
@@ -16,4 +17,20 @@ public interface AuthService {
JSONObject
tlogin
(
String
username
,
String
password
,
String
mobilecode
,
Integer
type
)
throws
Exception
;
String
getToken
(
String
username
,
Integer
id
)
throws
Exception
;
JSONObject
reset
(
String
username
,
String
mobilecode
,
String
password
)
throws
Exception
;
/**
* 使用用户id登录 Unbelievable ! ! !
* @param userid
* @return
*/
JSONObject
appletLoginByUserId
(
Integer
userid
);
/**
* 通过小程序注册
* @param username
* @param headimgurl
* @param nickname
* @return
*/
JSONObject
appletRegistry
(
String
username
,
String
headimgurl
,
String
nickname
);
}
ace-auth/ace-auth-server/src/main/java/com/github/wxiaoqi/security/auth/service/impl/AppAuthServiceImpl.java
View file @
4dfba9b0
...
...
@@ -86,4 +86,14 @@ public class AppAuthServiceImpl implements AuthService {
return
userService
.
reset
(
username
,
mobilecode
,
password
);
}
@Override
public
JSONObject
appletLoginByUserId
(
Integer
userid
)
{
return
userService
.
appletLogin
(
userid
);
}
@Override
public
JSONObject
appletRegistry
(
String
username
,
String
headimgurl
,
String
nickname
)
{
return
userService
.
appletRegistry
(
username
,
headimgurl
,
nickname
);
}
}
ace-auth/ace-auth-server/src/main/java/com/github/wxiaoqi/security/auth/service/impl/AuthServiceImpl.java
View file @
4dfba9b0
...
...
@@ -83,4 +83,14 @@ public class AuthServiceImpl implements AuthService {
public
JSONObject
reset
(
String
username
,
String
mobilecode
,
String
password
)
throws
Exception
{
return
userService
.
reset
(
username
,
mobilecode
,
password
);
}
@Override
public
JSONObject
appletLoginByUserId
(
Integer
userid
)
{
return
userService
.
appletLogin
(
userid
);
}
@Override
public
JSONObject
appletRegistry
(
String
username
,
String
headimgurl
,
String
nickname
)
{
return
userService
.
appletRegistry
(
username
,
headimgurl
,
nickname
);
}
}
ace-common/src/main/java/com/github/wxiaoqi/security/common/exception/BaseException.java
View file @
4dfba9b0
...
...
@@ -4,6 +4,7 @@ import com.github.wxiaoqi.security.common.constant.RestCode;
import
com.github.wxiaoqi.security.common.util.process.ResultCode
;
import
java.util.Map
;
import
java.util.Set
;
/**
* Created by ace on 2017/9/8.
...
...
@@ -57,4 +58,9 @@ public class BaseException extends RuntimeException {
super
(
ResultCode
.
getMsg
(
code
)
+
(
map
==
null
?
""
:
map
.
toString
()));
this
.
status
=
code
;
}
public
BaseException
(
int
code
,
Set
<
String
>
set
)
{
super
(
ResultCode
.
getMsg
(
code
)+
(
set
==
null
?
""
:
set
.
toString
()));
this
.
status
=
code
;
}
}
ace-common/src/main/java/com/github/wxiaoqi/security/common/util/IntervalUtil.java
0 → 100644
View file @
4dfba9b0
package
com
.
github
.
wxiaoqi
.
security
.
common
.
util
;
import
org.apache.commons.jexl2.Expression
;
import
org.apache.commons.jexl2.JexlContext
;
import
org.apache.commons.jexl2.JexlEngine
;
import
org.apache.commons.jexl2.MapContext
;
import
javax.script.ScriptEngine
;
import
javax.script.ScriptEngineManager
;
import
java.util.Map
;
/**
*
* @ClassName: IntervalUtil
* @author: kangyl17909
* @date: 2018年7月3日
*/
public
class
IntervalUtil
{
/**
* 判断data_value是否在interval区间范围内
* @author: kangyl17909
* @date: 2018年7月3日
* @param data_value 数值类型的
* @param interval 正常的数学区间,包括无穷大等,如:(1,3)、>5%、(-∞,6]、(125%,135%)U(70%,80%)
* @return true:表示data_value在区间interval范围内,false:表示data_value不在区间interval范围内
*/
public
boolean
isInTheInterval
(
String
data_value
,
String
interval
)
{
//将区间和data_value转化为可计算的表达式
String
formula
=
getFormulaByAllInterval
(
data_value
,
interval
,
"||"
);
ScriptEngine
jse
=
new
ScriptEngineManager
().
getEngineByName
(
"JavaScript"
);
try
{
//计算表达式
return
(
Boolean
)
jse
.
eval
(
formula
);
}
catch
(
Exception
t
)
{
return
false
;
}
}
/**
* 将所有阀值区间转化为公式:如
* [75,80) =》 date_value < 80 && date_value >= 75
* (125%,135%)U(70%,80%) =》 (date_value < 1.35 && date_value > 1.25) || (date_value < 0.8 && date_value > 0.7)
* @param date_value
* @param interval 形式如:(125%,135%)U(70%,80%)
* @param connector 连接符 如:") || ("
*/
private
String
getFormulaByAllInterval
(
String
date_value
,
String
interval
,
String
connector
)
{
StringBuffer
buff
=
new
StringBuffer
();
for
(
String
limit:
interval
.
split
(
"U"
)){
//如:(125%,135%)U (70%,80%)
buff
.
append
(
"("
).
append
(
getFormulaByInterval
(
date_value
,
limit
,
" && "
)).
append
(
")"
).
append
(
connector
);
}
String
allLimitInvel
=
buff
.
toString
();
int
index
=
allLimitInvel
.
lastIndexOf
(
connector
);
allLimitInvel
=
allLimitInvel
.
substring
(
0
,
index
);
return
allLimitInvel
;
}
/**
* 将整个阀值区间转化为公式:如
* 145) =》 date_value < 145
* [75,80) =》 date_value < 80 && date_value >= 75
* @param date_value
* @param interval 形式如:145)、[75,80)
* @param connector 连接符 如:&&
*/
private
String
getFormulaByInterval
(
String
date_value
,
String
interval
,
String
connector
)
{
StringBuffer
buff
=
new
StringBuffer
();
for
(
String
halfInterval:
interval
.
split
(
","
)){
//如:[75,80)、≥80
buff
.
append
(
getFormulaByHalfInterval
(
halfInterval
,
date_value
)).
append
(
connector
);
}
String
limitInvel
=
buff
.
toString
();
int
index
=
limitInvel
.
lastIndexOf
(
connector
);
limitInvel
=
limitInvel
.
substring
(
0
,
index
);
return
limitInvel
;
}
/**
* 将半个阀值区间转化为公式:如
* 145) =》 date_value < 145
* ≥80% =》 date_value >= 0.8
* [130 =》 date_value >= 130
* <80% =》 date_value < 0.8
* @param halfInterval 形式如:145)、≥80%、[130、<80%
* @param date_value
* @return date_value < 145
*/
private
String
getFormulaByHalfInterval
(
String
halfInterval
,
String
date_value
)
{
halfInterval
=
halfInterval
.
trim
();
if
(
halfInterval
.
contains
(
"∞"
)){
//包含无穷大则不需要公式
return
"1 == 1"
;
}
StringBuffer
formula
=
new
StringBuffer
();
String
data
=
""
;
String
opera
=
""
;
if
(
halfInterval
.
matches
(
"^([<>≤≥\\[\\(]{1}(-?\\d+.?\\d*\\%?))$"
)){
//表示判断方向(如>)在前面 如:≥80%
opera
=
halfInterval
.
substring
(
0
,
1
);
data
=
halfInterval
.
substring
(
1
);
}
else
{
//[130、145)
opera
=
halfInterval
.
substring
(
halfInterval
.
length
()-
1
);
data
=
halfInterval
.
substring
(
0
,
halfInterval
.
length
()-
1
);
}
double
value
=
dealPercent
(
data
);
formula
.
append
(
date_value
).
append
(
" "
).
append
(
opera
).
append
(
" "
).
append
(
value
);
String
a
=
formula
.
toString
();
//转化特定字符
return
a
.
replace
(
"["
,
">="
).
replace
(
"("
,
">"
).
replace
(
"]"
,
"<="
).
replace
(
")"
,
"<"
).
replace
(
"≤"
,
"<="
).
replace
(
"≥"
,
">="
);
}
/**
* 去除百分号,转为小数
* @param str 可能含百分号的数字
* @return
*/
private
double
dealPercent
(
String
str
){
double
d
=
0.0
;
if
(
str
.
contains
(
"%"
)){
str
=
str
.
substring
(
0
,
str
.
length
()-
1
);
d
=
Double
.
parseDouble
(
str
)/
100
;
}
else
{
d
=
Double
.
parseDouble
(
str
);
}
return
d
;
}
public
static
boolean
staticIsInTheInterval
(
String
data_value
,
String
interval
)
{
return
new
IntervalUtil
().
isInTheInterval
(
data_value
,
interval
);
}
public
static
Object
evaluate
(
String
expression
,
JexlContext
jexlContext
)
{
Expression
e
=
new
JexlEngine
().
createExpression
(
expression
);
return
e
.
evaluate
(
jexlContext
);
}
public
static
Object
evaluate
(
String
expression
,
Map
<
String
,
Object
>
jexlContextMap
)
{
Expression
e
=
new
JexlEngine
().
createExpression
(
expression
);
JexlContext
jexlContext
=
new
MapContext
();
jexlContextMap
.
forEach
((
k
,
v
)
->
jexlContext
.
set
(
k
,
v
));
return
e
.
evaluate
(
jexlContext
);
}
public
static
void
main
(
String
[]
args
)
{
IntervalUtil
a
=
new
IntervalUtil
();
System
.
out
.
println
(
a
.
isInTheInterval
(
"6"
,
"(-∞,6]"
));
}
}
ace-common/src/main/java/com/github/wxiaoqi/security/common/util/process/ResultCode.java
View file @
4dfba9b0
...
...
@@ -6,7 +6,9 @@ import com.github.wxiaoqi.security.common.util.SystemProperty;
public
class
ResultCode
{
////////////////////////////参数相关///////////////////////////
//参数非法,请修改
public
static
int
PARAM_ILLEGAL_CODE
=
Integer
.
valueOf
(
SystemProperty
.
getResultConfig
(
"PARAM_ILLEGAL_CODE"
));
//参数时效已过时,不能使用
public
static
int
PARAM_EXPIRE_CODE
=
Integer
.
valueOf
(
SystemProperty
.
getResultConfig
(
"PARAM_EXPIRE_CODE"
));
// 操作成功
...
...
ace-modules/ace-admin-api/src/main/java/com/github/wxiaoqi/security/admin/constant/enumerate/UserSourceEnum.java
0 → 100644
View file @
4dfba9b0
package
com
.
github
.
wxiaoqi
.
security
.
admin
.
constant
.
enumerate
;
/**
* @author libin
* @version 1.0
* @description 用户来源
* @data 2019/7/3 18:31
*/
public
enum
UserSourceEnum
{
APP
(
0
,
"APP"
),
APPLET
(
1
,
"小程序"
),
NEWPROMOTION
(
2
,
"新人推广"
);
private
int
code
;
private
String
source
;
UserSourceEnum
(
int
code
,
String
source
)
{
this
.
code
=
code
;
this
.
source
=
source
;
}
public
int
getCode
()
{
return
code
;
}
public
void
setCode
(
int
code
)
{
this
.
code
=
code
;
}
public
String
getSource
()
{
return
source
;
}
public
void
setSource
(
String
source
)
{
this
.
source
=
source
;
}
}
ace-modules/ace-admin-api/src/main/java/com/github/wxiaoqi/security/admin/entity/AppUserDetail.java
View file @
4dfba9b0
...
...
@@ -31,5 +31,6 @@ public class AppUserDetail {
private
Long
createtime
;
private
Long
updatetime
;
private
Integer
isdel
;
private
Integer
channel
;
}
ace-modules/ace-admin-api/src/main/java/com/github/wxiaoqi/security/admin/entity/AppUserLogin.java
View file @
4dfba9b0
...
...
@@ -35,5 +35,39 @@ public class AppUserLogin {
private
String
idNumber
;
@Column
(
name
=
"certification_status"
)
private
Integer
certificationStatus
;
/**
* 创建ip
*/
@Column
(
name
=
"crt_host"
)
private
String
crtHost
;
/**
* 更新ip
*/
@Column
(
name
=
"upd_host"
)
private
String
updHost
;
/**
* 最后登录ip
*/
@Column
(
name
=
"last_host"
)
private
String
lastHost
;
/**
* 最后登录时间
*/
@Column
(
name
=
"last_time"
)
private
Long
lastTime
;
/**
* 省份编号
*/
@Column
(
name
=
"province_code"
)
private
Integer
provinceCode
;
/**
* 市编号
*/
@Column
(
name
=
"city_code"
)
private
Integer
cityCode
;
}
ace-modules/ace-admin/pom.xml
View file @
4dfba9b0
...
...
@@ -219,6 +219,11 @@
<version>
2.0-SNAPSHOT
</version>
<scope>
compile
</scope>
</dependency>
<dependency>
<groupId>
com.xxfc.platform
</groupId>
<artifactId>
xx-universal-api
</artifactId>
<version>
2.0-SNAPSHOT
</version>
</dependency>
</dependencies>
<build>
<finalName>
ace-admin
</finalName>
...
...
ace-modules/ace-admin/src/main/java/com/github/wxiaoqi/security/admin/AdminBootstrap.java
View file @
4dfba9b0
...
...
@@ -8,6 +8,7 @@ import org.springframework.boot.builder.SpringApplicationBuilder;
import
org.springframework.cloud.client.circuitbreaker.EnableCircuitBreaker
;
import
org.springframework.cloud.client.discovery.EnableDiscoveryClient
;
import
org.springframework.cloud.openfeign.EnableFeignClients
;
import
org.springframework.context.annotation.EnableAspectJAutoProxy
;
import
org.springframework.scheduling.annotation.EnableScheduling
;
import
org.springframework.transaction.annotation.EnableTransactionManagement
;
import
tk.mybatis.spring.annotation.MapperScan
;
...
...
@@ -22,13 +23,13 @@ import tk.mybatis.spring.annotation.MapperScan;
@EnableDiscoveryClient
@EnableCircuitBreaker
@SpringBootApplication
@EnableFeignClients
(
value
=
{
"com.github.wxiaoqi.security"
,
"com.xxfc.platform"
},
defaultConfiguration
=
HeaderConfig
.
class
)
@EnableScheduling
@EnableAceAuthClient
@EnableAceCache
@EnableTransactionManagement
@MapperScan
(
"com.github.wxiaoqi.security.admin.mapper"
)
@EnableAspectJAutoProxy
(
proxyTargetClass
=
true
,
exposeProxy
=
true
)
//@EnableSwagger2Doc
public
class
AdminBootstrap
{
public
static
void
main
(
String
[]
args
)
{
...
...
ace-modules/ace-admin/src/main/java/com/github/wxiaoqi/security/admin/biz/AppUserLoginBiz.java
View file @
4dfba9b0
...
...
@@ -17,6 +17,7 @@ import org.springframework.stereotype.Service;
import
org.springframework.transaction.annotation.Transactional
;
import
tk.mybatis.mapper.entity.Example
;
import
java.time.Instant
;
import
java.util.Arrays
;
import
java.util.List
;
import
java.util.Map
;
...
...
@@ -100,7 +101,7 @@ public class AppUserLoginBiz extends BaseBiz<AppUserLoginMapper, AppUserLogin> {
public
AppUserLogin
checkeUserLogin
(
String
username
)
{
Example
example
=
new
Example
(
AppUserLogin
.
class
);
example
.
createCriteria
().
andEqualTo
(
"username"
,
username
).
andEqualTo
(
"isdel"
,
0
);
example
.
createCriteria
().
andEqualTo
(
"username"
,
username
).
andEqualTo
(
"isdel"
,
0
)
.
andEqualTo
(
"status"
,
0
)
;
List
<
AppUserLogin
>
userLoginList
=
mapper
.
selectByExample
(
example
);
if
(
userLoginList
!=
null
&&
userLoginList
.
size
()
!=
0
)
{
return
userLoginList
.
get
(
0
);
...
...
@@ -150,5 +151,12 @@ public class AppUserLoginBiz extends BaseBiz<AppUserLoginMapper, AppUserLogin> {
return
mapper
.
selectByPrimaryKey
(
userId
);
}
/**
* 登录信息更改
* @param userId
* @param ip
*/
public
void
updateLoginInfo
(
Integer
userId
,
String
ip
){
mapper
.
updateLoginUserInfoById
(
userId
,
ip
,
Instant
.
now
().
toEpochMilli
());
}
}
ace-modules/ace-admin/src/main/java/com/github/wxiaoqi/security/admin/biz/BaseUserMemberBiz.java
View file @
4dfba9b0
...
...
@@ -7,6 +7,7 @@ import com.github.wxiaoqi.security.admin.vo.AppUserVo;
import
com.github.wxiaoqi.security.admin.vo.UserMemberVo
;
import
lombok.extern.slf4j.Slf4j
;
import
org.apache.commons.beanutils.BeanUtils
;
import
org.springframework.aop.framework.AopContext
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Service
;
import
com.github.wxiaoqi.security.admin.entity.BaseUserMember
;
...
...
@@ -30,14 +31,14 @@ public class BaseUserMemberBiz extends BaseBiz<BaseUserMemberMapper,BaseUserMemb
AppUserDetailBiz
detailBiz
;
//获取用户会员信息
@Cache
(
key
=
"user:member{1}"
)
@Cache
(
key
=
"user:member{1}"
)
public
UserMemberVo
getMemberInfoByUserId
(
Integer
userId
){
return
mapper
.
getInfoByUserId
(
userId
);
}
//更新会员信息
@Override
@CacheClear
(
key
=
"user:member{1.user
i
d}"
)
@CacheClear
(
key
=
"user:member{1.user
I
d}"
)
public
void
updateSelectiveById
(
BaseUserMember
userMember
){
super
.
updateSelectiveById
(
userMember
);}
...
...
@@ -61,13 +62,23 @@ public class BaseUserMemberBiz extends BaseBiz<BaseUserMemberMapper,BaseUserMemb
baseUserMember
.
setBuyCount
(
1
);
insertSelective
(
baseUserMember
);
}
else
{
Integer
discount
=
userMemberVo
.
getDiscount
()==
null
?
0
:
userMemberVo
.
getDiscount
();
Integer
discount1
=
baseUserMember
.
getDiscount
()==
null
?
0
:
baseUserMember
.
getDiscount
();
if
(
discount
<
discount1
){
baseUserMember
.
setDiscount
(
discount
);
}
Integer
level
=
userMemberVo
.
getMemberLevel
()==
null
?
0
:
userMemberVo
.
getMemberLevel
();
Integer
level1
=
baseUserMember
.
getMemberLevel
()==
null
?
0
:
baseUserMember
.
getMemberLevel
();
if
(
level
>
level1
){
baseUserMember
.
setMemberLevel
(
level
);
}
baseUserMember
.
setId
(
userMemberVo
.
getId
());
totalNumber
+=
userMemberVo
.
getTotalNumber
()==
null
?
0
:
userMemberVo
.
getTotalNumber
();
freeDays
+=
userMemberVo
.
getRentFreeDays
()==
null
?
0
:
userMemberVo
.
getRentFreeDays
();
baseUserMember
.
setBuyCount
(
userMemberVo
.
getBuyCount
()+
1
);
baseUserMember
.
setTotalNumber
(
totalNumber
);
baseUserMember
.
setRentFreeDays
(
freeDays
);
updateSelectiveById
(
baseUserMember
);
getMyBiz
().
updateSelectiveById
(
baseUserMember
);
}
AppUserVo
userVo
=
detailBiz
.
getUserInfoById
(
userId
);
if
(
userVo
!=
null
&&(
userVo
.
getIsMember
()==
null
||
userVo
.
getIsMember
()==
0
)){
...
...
@@ -106,7 +117,7 @@ public class BaseUserMemberBiz extends BaseBiz<BaseUserMemberMapper,BaseUserMemb
if
(
freeDays
>
0
&&
freeDays
>=
days
){
freeDays
=
freeDays
-
days
;
baseUserMember
.
setRentFreeDays
(
freeDays
);
updateSelectiveById
(
baseUserMember
);
getMyBiz
().
updateSelectiveById
(
baseUserMember
);
num
=
freeDays
;
}
}
else
if
(
type
==
2
){
...
...
@@ -122,17 +133,17 @@ public class BaseUserMemberBiz extends BaseBiz<BaseUserMemberMapper,BaseUserMemb
Integer
payCount
=
userMemberVo
.
getPayCount
()==
null
?
0
:
userMemberVo
.
getPayCount
();
payCount
=
payCount
+
1
;
baseUserMember
.
setPayCount
(
payCount
);
updateSelectiveById
(
baseUserMember
);
getMyBiz
().
updateSelectiveById
(
baseUserMember
);
num
=
freeDays
;
}
else
{
/*lockDays=lockDays>0?(lockDays-days)>0?(lockDays-days):0:0;
baseUserMember.setLockDays(lockDays);
updateSelectiveById(baseUserMember);
getMyBiz().
updateSelectiveById(baseUserMember);
num=freeDays-lockDays;*/
freeDays
=(
freeDays
+
days
)>
0
?(
freeDays
+
days
):
0
;
freeDays
=
freeDays
>
totalNumber
?
totalNumber:
freeDays
;
baseUserMember
.
setRentFreeDays
(
freeDays
);
updateSelectiveById
(
baseUserMember
);
getMyBiz
().
updateSelectiveById
(
baseUserMember
);
num
=
freeDays
;
}
...
...
@@ -140,7 +151,9 @@ public class BaseUserMemberBiz extends BaseBiz<BaseUserMemberMapper,BaseUserMemb
return
num
;
}
private
BaseUserMemberBiz
getMyBiz
()
{
return
AopContext
.
currentProxy
()
!=
null
?
(
BaseUserMemberBiz
)
AopContext
.
currentProxy
()
:
this
;
}
}
\ No newline at end of file
ace-modules/ace-admin/src/main/java/com/github/wxiaoqi/security/admin/config/WebConfiguration.java
View file @
4dfba9b0
...
...
@@ -6,6 +6,7 @@ import com.github.wxiaoqi.security.common.handler.GlobalExceptionHandler;
import
org.springframework.context.annotation.Bean
;
import
org.springframework.context.annotation.Configuration
;
import
org.springframework.context.annotation.Primary
;
import
org.springframework.web.client.RestTemplate
;
import
org.springframework.web.servlet.config.annotation.InterceptorRegistry
;
import
org.springframework.web.servlet.config.annotation.WebMvcConfigurer
;
...
...
@@ -64,4 +65,8 @@ public class WebConfiguration implements WebMvcConfigurer {
return
list
;
}
@Bean
public
RestTemplate
restTemplate
(){
return
new
RestTemplate
();
}
}
ace-modules/ace-admin/src/main/java/com/github/wxiaoqi/security/admin/mapper/AppUserLoginMapper.java
View file @
4dfba9b0
...
...
@@ -2,9 +2,19 @@ package com.github.wxiaoqi.security.admin.mapper;
import
com.github.wxiaoqi.security.admin.entity.AppUserLogin
;
import
com.github.wxiaoqi.security.admin.entity.AppUserManage
;
import
org.apache.ibatis.annotations.Param
;
import
org.apache.ibatis.annotations.Update
;
import
tk.mybatis.mapper.common.Mapper
;
public
interface
AppUserLoginMapper
extends
Mapper
<
AppUserLogin
>
{
/**
* 登录信息更改 ip 登录时间
* @param userId
* @param ip
* @param lastTime
*/
@Update
(
"update `app_user_login` set `last_host`=#{ip},`last_time`=#{lastTime} where `id`=#{userId}"
)
void
updateLoginUserInfoById
(
@Param
(
"userId"
)
Integer
userId
,
@Param
(
"ip"
)
String
ip
,
@Param
(
"lastTime"
)
long
lastTime
);
}
\ No newline at end of file
ace-modules/ace-admin/src/main/java/com/github/wxiaoqi/security/admin/rpc/AppUserRest.java
View file @
4dfba9b0
...
...
@@ -171,5 +171,30 @@ public class AppUserRest {
return
appPermissionService
.
upAuthentication
(
userId
,
name
,
idNumber
,
status
);
}
/**
* 通过用户id登录 unbelievable! ! !
* @param userid
* @return
*/
@PostMapping
(
"/applet/uid/login"
)
public
JSONObject
appletLogin
(
@RequestParam
(
value
=
"userid"
)
Integer
userid
){
return
appPermissionService
.
appletLoginByUserId
(
userid
);
}
@PostMapping
(
"/applet/registry"
)
public
JSONObject
appletRegistry
(
@RequestParam
(
value
=
"username"
,
defaultValue
=
""
)
String
username
,
@RequestParam
(
value
=
"nickname"
,
defaultValue
=
""
)
String
nickname
,
@RequestParam
(
value
=
"headimgurl"
,
defaultValue
=
""
)
String
headimgurl
){
if
(
StringUtils
.
isBlank
(
headimgurl
)){
headimgurl
=
SystemConfig
.
USER_HEADER_URL_DEFAULT
;
}
if
(
StringUtils
.
isBlank
(
nickname
)){
nickname
=
SystemConfig
.
USER_NIKENAME_DEFAULT
+(
int
)((
Math
.
random
()*
9
+
1
)*
100000
);
}
return
appPermissionService
.
appletRegistry
(
username
,
headimgurl
,
nickname
);
}
}
ace-modules/ace-admin/src/main/java/com/github/wxiaoqi/security/admin/rpc/service/AppPermissionService.java
View file @
4dfba9b0
This diff is collapsed.
Click to expand it.
ace-modules/ace-admin/src/main/resources/mapper/BaseUserMemberMapper.xml
View file @
4dfba9b0
...
...
@@ -11,6 +11,8 @@
<result
property=
"memberLevel"
column=
"member_level"
/>
<result
property=
"cardLeave"
column=
"card_leave"
/>
<result
property=
"isBind"
column=
"is_bind"
/>
<result
property=
"payCount"
column=
"pay_count"
/>
<result
property=
"buyCount"
column=
"buy_count"
/>
<result
property=
"totalNumber"
column=
"total_number"
/>
<result
property=
"rentFreeDays"
column=
"rent_free_days"
/>
<result
property=
"validTime"
column=
"valid_time"
/>
...
...
xx-app/xx-app-api/src/main/java/com/xxfc/platform/app/entity/AppVersion.java
View file @
4dfba9b0
...
...
@@ -74,6 +74,13 @@ public class AppVersion implements Serializable {
@Column
(
name
=
"download_switch"
)
@ApiModelProperty
(
value
=
"下载开关(0:可下载,1:不可下载)"
)
private
Integer
downloadSwitch
;
/**
* 下载开关(0:可下载,1:不可下载)
*/
@Column
(
name
=
"is_compel"
)
@ApiModelProperty
(
value
=
"是否强制:0-否;1-是"
)
private
Integer
isCompel
;
/**
* 权重
...
...
xx-order/xx-order-api/src/main/java/com/xxfc/platform/order/contant/enumerate/CrosstownTypeEnum.java
0 → 100644
View file @
4dfba9b0
package
com
.
xxfc
.
platform
.
order
.
contant
.
enumerate
;
import
java.util.HashMap
;
import
java.util.Map
;
public
enum
CrosstownTypeEnum
{
RentVehicle
(
1
,
"交车"
),
TOUR
(
2
,
"还车"
),
;
/**
* 编码
*/
private
Integer
code
;
/**
* 类型描述
*/
private
String
desc
;
private
static
Map
<
Integer
,
String
>
codeAndDesc
=
new
HashMap
<
Integer
,
String
>();
CrosstownTypeEnum
(
Integer
code
,
String
desc
){
this
.
code
=
code
;
this
.
desc
=
desc
;
}
public
Integer
getCode
()
{
return
code
;
}
public
void
setCode
(
Integer
code
)
{
this
.
code
=
code
;
}
public
String
getDesc
()
{
return
desc
;
}
public
void
setDesc
(
String
desc
)
{
this
.
desc
=
desc
;
}
public
static
Boolean
exists
(
Integer
code
){
return
codeAndDesc
.
containsKey
(
code
);
}
}
\ No newline at end of file
xx-order/xx-order-api/src/main/java/com/xxfc/platform/order/contant/enumerate/OrderStatusEnum.java
View file @
4dfba9b0
...
...
@@ -8,7 +8,7 @@ public enum OrderStatusEnum {
ORDER_CRT
(
1
,
"创建订单"
),
ORDER_CANCEL
(
2
,
"取消订单"
),
ORDER_UNPAY
(
3
,
"待支付"
),
ORDER_TOSTART
(
4
,
"待进行(待出行)"
),
ORDER_TOSTART
(
4
,
"待进行(待出行
/租车已支付
)"
),
ORDER_WAIT
(
5
,
"出行中(进行中)"
),
ORDER_FINISH
(
6
,
"已完成"
),
;
...
...
xx-order/xx-order-api/src/main/java/com/xxfc/platform/order/contant/enumerate/RefundStatusEnum.java
0 → 100644
View file @
4dfba9b0
package
com
.
xxfc
.
platform
.
order
.
contant
.
enumerate
;
import
java.util.HashMap
;
import
java.util.Map
;
public
enum
RefundStatusEnum
{
NONE
(
0
,
"未退还"
),
ALL
(
1
,
"已退还所有钱"
),
RESIDUE_ILLEGAL
(
2
,
"已退还部分押金(保留违章预备金)"
),
REFUND_DEPOSIT
(
3
,
"已退还所有押金(扣除该扣除的)"
),
;
/**
* 编码
*/
private
Integer
code
;
/**
* 类型描述
*/
private
String
desc
;
private
static
Map
<
Integer
,
String
>
codeAndDesc
=
new
HashMap
<
Integer
,
String
>();
RefundStatusEnum
(
Integer
code
,
String
desc
){
this
.
code
=
code
;
this
.
desc
=
desc
;
}
public
Integer
getCode
()
{
return
code
;
}
public
void
setCode
(
Integer
code
)
{
this
.
code
=
code
;
}
public
String
getDesc
()
{
return
desc
;
}
public
void
setDesc
(
String
desc
)
{
this
.
desc
=
desc
;
}
public
static
Boolean
exists
(
Integer
code
){
return
codeAndDesc
.
containsKey
(
code
);
}
}
\ No newline at end of file
xx-order/xx-order-api/src/main/java/com/xxfc/platform/order/entity/BaseOrder.java
View file @
4dfba9b0
...
...
@@ -47,7 +47,7 @@ public class BaseOrder implements Serializable {
* 订单类型 1--租车;2--旅游
*/
@Column
(
name
=
"type"
)
@ApiModelProperty
(
value
=
"订单类型 1--租车;2--旅游"
)
@ApiModelProperty
(
value
=
"订单类型 1--租车;2--旅游
; 3--会员订单
"
)
private
Integer
type
;
/**
...
...
@@ -190,12 +190,26 @@ public class BaseOrder implements Serializable {
@ApiModelProperty
(
value
=
"退款时间"
)
private
Long
refundTime
;
/**
* 退款状态
*/
@Column
(
name
=
"refund_status"
)
@ApiModelProperty
(
value
=
"退款的状态 0--未退还;1--已退还所有钱;2--已退还部分押金(保留违章预备金);3--已退还所有押金(扣除该扣除的)"
)
private
Integer
refundStatus
;
/**
* 是否有优惠
*/
@Column
(
name
=
"has_discount"
)
@ApiModelProperty
(
value
=
"是否有优惠"
)
private
Long
hasDiscount
;
@ApiModelProperty
(
value
=
"是否有优惠 0--无优惠;1--有优惠"
)
private
Integer
hasDiscount
;
/**
* 是否有优惠
*/
@Column
(
name
=
"has_member_right"
)
@ApiModelProperty
(
value
=
"是否有使用会员权益"
)
private
Integer
hasMemberRight
;
/**
* 是否已支付
...
...
xx-order/xx-order-api/src/main/java/com/xxfc/platform/order/entity/OrderRentVehicleDetail.java
View file @
4dfba9b0
...
...
@@ -273,13 +273,6 @@ public class OrderRentVehicleDetail implements Serializable {
@ApiModelProperty
(
value
=
"出发公司区域id"
)
private
Integer
startZoneId
;
/**
* 退还钱(押金)的状态 0--未退还;1--已退还所有钱;2--已退还部分押金(保留违章预备金);3--已退还所有押金(扣除该扣除的)
*/
@Column
(
name
=
"return_pay_status"
)
@ApiModelProperty
(
value
=
"退还钱(押金)的状态 0--未退还;1--已退还所有钱;2--已退还部分押金(保留违章预备金);3--已退还所有押金(扣除该扣除的)"
)
private
Integer
returnPayStatus
;
/**
* 剩余需要退还的钱(押金)
*/
...
...
@@ -294,4 +287,11 @@ public class OrderRentVehicleDetail implements Serializable {
@ApiModelProperty
(
value
=
"预定记录id"
)
private
Long
bookRecordId
;
/**
* 是否购买免赔
*/
@Column
(
name
=
"damage_safe"
)
@ApiModelProperty
(
value
=
"是否购买免赔"
)
private
Integer
damageSafe
;
}
xx-order/xx-order-api/src/main/java/com/xxfc/platform/order/entity/OrderVehicaleCrosstown.java
View file @
4dfba9b0
...
...
@@ -3,6 +3,7 @@ package com.xxfc.platform.order.entity;
import
lombok.Data
;
import
javax.persistence.*
;
import
java.math.BigDecimal
;
@Table
(
name
=
"order_vehicle_crosstown"
)
@Data
...
...
@@ -99,6 +100,7 @@ public class OrderVehicaleCrosstown {
* 扣除项明细 json
* deductions: 扣除项
* cost:费用
* id:编号(用于顺序)
*/
private
String
dedDetail
;
...
...
@@ -110,12 +112,12 @@ public class OrderVehicaleCrosstown {
/**
* 合计扣除费用
*/
private
Integer
deductionCost
;
private
BigDecimal
deductionCost
;
/**
* 剩余押金
*/
private
Integer
restDeposit
;
private
BigDecimal
restDeposit
;
/**
* 驾驶人Id
...
...
xx-order/xx-order-api/src/main/java/com/xxfc/platform/order/pojo/DedDetailDTO.java
0 → 100644
View file @
4dfba9b0
package
com
.
xxfc
.
platform
.
order
.
pojo
;
import
lombok.Data
;
import
java.math.BigDecimal
;
@Data
public
class
DedDetailDTO
{
/**
* : 扣除项
*/
String
deductions
;
/**
* :费用
*/
BigDecimal
cost
;
/**
* 编号(用于顺序)
*/
Integer
id
;
}
xx-order/xx-order-api/src/main/java/com/xxfc/platform/order/pojo/order/RentVehicleBO.java
View file @
4dfba9b0
...
...
@@ -16,7 +16,6 @@ public class RentVehicleBO extends OrderRentVehicleDetail implements OrderDetail
private
BaseOrder
order
;
private
VehicleModel
vehicleModel
;
private
BookVehicleVO
bookVehicleVO
;
private
Integer
damageSafe
;
/**
* 是否使用出租免费天数
*/
...
...
xx-order/xx-order-api/src/main/java/com/xxfc/platform/order/pojo/order/UnitPriceDTO.java
0 → 100644
View file @
4dfba9b0
package
com
.
xxfc
.
platform
.
order
.
pojo
.
order
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.Data
;
import
java.math.BigDecimal
;
@Data
public
class
UnitPriceDTO
{
@ApiModelProperty
(
value
=
"旅游保险单价"
)
private
BigDecimal
insurePrice
;
}
\ No newline at end of file
xx-order/xx-order-server/src/main/java/com/xxfc/platform/order/biz/BaseOrderBiz.java
View file @
4dfba9b0
package
com
.
xxfc
.
platform
.
order
.
biz
;
import
ch.qos.logback.core.rolling.TimeBasedFileNamingAndTriggeringPolicyBase
;
import
cn.hutool.core.util.StrUtil
;
import
com.github.wxiaoqi.security.admin.dto.UserMemberDTO
;
import
com.github.wxiaoqi.security.admin.feign.UserFeign
;
import
com.github.wxiaoqi.security.common.biz.BaseBiz
;
import
com.github.wxiaoqi.security.common.exception.BaseException
;
import
com.github.wxiaoqi.security.common.msg.ObjectRestResponse
;
import
com.github.wxiaoqi.security.common.util.IntervalUtil
;
import
com.github.wxiaoqi.security.common.util.process.ResultCode
;
import
com.google.common.collect.Lists
;
import
com.xxfc.platform.order.contant.enumerate.OrderStatusEnum
;
import
com.xxfc.platform.order.contant.enumerate.OrderTypeEnum
;
import
com.xxfc.platform.order.contant.enumerate.RefundStatusEnum
;
import
com.xxfc.platform.order.contant.enumerate.RefundTypeEnum
;
import
com.xxfc.platform.order.entity.*
;
import
com.xxfc.platform.order.mapper.BaseOrderMapper
;
...
...
@@ -22,18 +25,18 @@ import com.xxfc.platform.vehicle.common.RestResponse;
import
com.xxfc.platform.vehicle.entity.VehicleUserLicense
;
import
com.xxfc.platform.vehicle.feign.VehicleFeign
;
import
lombok.extern.slf4j.Slf4j
;
import
org.apache.commons.jexl2.MapContext
;
import
org.apache.commons.lang3.StringUtils
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Service
;
import
org.springframework.transaction.annotation.Transactional
;
import
java.math.BigDecimal
;
import
java.util.HashMap
;
import
java.util.LinkedList
;
import
java.util.List
;
import
java.util.Map
;
import
java.util.*
;
import
static
com
.
github
.
wxiaoqi
.
security
.
common
.
constant
.
CommonConstants
.
SYS_FALSE
;
import
static
com
.
github
.
wxiaoqi
.
security
.
common
.
constant
.
CommonConstants
.
SYS_TRUE
;
import
static
com
.
xxfc
.
platform
.
universal
.
constant
.
DictionaryKey
.*;
/**
*
...
...
@@ -165,6 +168,7 @@ public class BaseOrderBiz extends BaseBiz<BaseOrderMapper,BaseOrder> {
* 取消订单
* @param baseOrder
*/
@Transactional
public
void
cancel
(
BaseOrder
baseOrder
)
{
if
(
cancelAble
.
get
(
baseOrder
.
getType
()).
contains
(
baseOrder
.
getStatus
()))
{
BaseOrder
updateOrder
=
new
BaseOrder
(){{
...
...
@@ -190,10 +194,14 @@ public class BaseOrderBiz extends BaseBiz<BaseOrderMapper,BaseOrder> {
}});
//退款流程
re
fundProcess
(
baseOrder
,
orvd
);
re
ntRefundProcess
(
baseOrder
,
orvd
.
getDeposit
(),
orvd
.
getStartTime
(),
APP_ORDER
+
"_"
+
RENT_REFUND
);
}
else
if
(
OrderTypeEnum
.
TOUR
.
getCode
().
equals
(
baseOrder
.
getType
()))
{
OrderTourDetail
otd
=
orderTourDetailBiz
.
selectOne
(
new
OrderTourDetail
(){{
setOrderId
(
baseOrder
.
getId
());
}});
//退款流程
rentRefundProcess
(
baseOrder
,
otd
.
getStartTime
(),
APP_ORDER
+
"_"
+
TOUR_REFUND
);
}
}
...
...
@@ -202,7 +210,15 @@ public class BaseOrderBiz extends BaseBiz<BaseOrderMapper,BaseOrder> {
OrderRentVehicleDetail
orvd
=
orderRentVehicleBiz
.
selectOne
(
new
OrderRentVehicleDetail
(){{
setOrderId
(
baseOrder
.
getId
());
}});
//取消租车预定
//已支付,并且是待出行状态,取消预约
if
(
OrderStatusEnum
.
ORDER_TOSTART
.
equals
(
baseOrder
.
getType
())
&&
SYS_TRUE
.
equals
(
baseOrder
.
getHasPay
())){
vehicleFeign
.
unbookVehicle
(
orvd
.
getBookRecordId
());
}
else
{
//未支付,拒绝之前的预约
vehicleFeign
.
rejectVehicleBooking
(
orvd
.
getBookRecordId
());
}
//取消租车免费天数使用
if
(
null
!=
orvd
.
getFreeDays
()
&&
orvd
.
getFreeDays
()
>
0
)
{
...
...
@@ -225,17 +241,104 @@ public class BaseOrderBiz extends BaseBiz<BaseOrderMapper,BaseOrder> {
}
}
private
void
refundProcess
(
BaseOrder
baseOrder
,
OrderRentVehicleDetail
orvd
)
{
/**
* 租车退款流程(不含押金的通用方法)
* @param baseOrder
* @param startTime
* @param dicParentKey
*/
private
void
rentRefundProcess
(
BaseOrder
baseOrder
,
Long
startTime
,
String
dicParentKey
){
rentRefundProcess
(
baseOrder
,
BigDecimal
.
ZERO
,
startTime
,
dicParentKey
);
}
/**
* 租车退款流程(含押金)
* @param baseOrder
* @param depositAmont
* @param startTime
* @param dicParentKey
*/
private
void
rentRefundProcess
(
BaseOrder
baseOrder
,
BigDecimal
depositAmont
,
Long
startTime
,
String
dicParentKey
)
{
//计算退款金额
// 1、押金 + 租金(规则扣除)
BigDecimal
refundAmont
=
orvd
.
getDeposit
().
add
(
baseOrder
.
getGoodsAmount
());
String
refundTradeNo
=
thirdFeign
.
refund
(
new
OrderRefundVo
(){{
BigDecimal
refundGoodsAmount
=
baseOrder
.
getGoodsAmount
();
String
refundDesc
=
"取消订单退款:"
;
BigDecimal
refundGoodsAmont
=
baseOrder
.
getGoodsAmount
();
if
(
null
==
depositAmont
)
{
depositAmont
=
BigDecimal
.
ZERO
;
}
//根据时间处理goodsAmount
//获取出发时间 到现在 距离时间
Long
timeLag
=
startTime
-
System
.
currentTimeMillis
();
Integer
hourLag
=
Long
.
valueOf
(
timeLag
/(
1000L
*
60L
*
60L
)).
intValue
();
Map
<
String
,
com
.
xxfc
.
platform
.
universal
.
entity
.
Dictionary
>
dictionaryMap
=
thirdFeign
.
dictionaryGetAll4Map
().
getData
();
Set
<
com
.
xxfc
.
platform
.
universal
.
entity
.
Dictionary
>
rentRefunds
=
dictionaryMap
.
get
(
dicParentKey
).
getChildrens
();
for
(
com
.
xxfc
.
platform
.
universal
.
entity
.
Dictionary
dic
:
rentRefunds
)
{
if
(
StrUtil
.
isBlank
(
dic
.
getName
()))
{
continue
;
}
String
[]
names
=
dic
.
getName
().
split
(
"\\|"
);
if
(
names
.
length
<
2
)
{
continue
;
}
//符合范围
if
(
IntervalUtil
.
staticIsInTheInterval
(
hourLag
.
toString
(),
names
[
0
])){
refundGoodsAmont
=
new
BigDecimal
(((
Double
)
IntervalUtil
.
evaluate
(
dic
.
getDetail
(),
new
MapContext
(){{
//ga : goodsAmount
set
(
"ga"
,
baseOrder
.
getGoodsAmount
());
}})).
toString
());
refundDesc
=
names
[
1
]+
","
+
refundDesc
;
break
;
}
}
//退款金额
BigDecimal
refundAmont
=
depositAmont
.
add
(
refundGoodsAmont
);
//退款子流程: 订单基础,退款描述,退款金额
refundSubProcess
(
baseOrder
,
refundDesc
,
refundAmont
,
RefundTypeEnum
.
RentVehicle
.
getCode
(),
RefundStatusEnum
.
ALL
.
getCode
());
}
/**
* 退款子流程
* @param baseOrder
* @param refundDesc
* @param refundAmont
* @param refundType
* @param refundStatus
*/
public
void
refundSubProcess
(
BaseOrder
baseOrder
,
String
refundDesc
,
BigDecimal
refundAmont
,
Integer
refundType
,
Integer
refundStatus
)
{
OrderRefundVo
orv
=
new
OrderRefundVo
(){{
setAmount
(
baseOrder
.
getRealAmount
().
multiply
(
new
BigDecimal
(
"100"
)).
intValue
());
setRefundAmount
(
refundAmont
.
multiply
(
new
BigDecimal
(
"100"
)).
intValue
());
setOrderNo
(
baseOrder
.
getNo
());
setRefundDesc
(
"取消订单退款:"
+
refundAmont
.
toString
());
}}).
getData
();
}};
orv
.
setRefundDesc
(
refundDesc
+
refundAmont
.
toString
());
orv
.
setRefundAmount
(
refundAmont
.
multiply
(
new
BigDecimal
(
"100"
)).
intValue
());
String
refundTradeNo
=
thirdFeign
.
refund
(
orv
).
getData
();
//记录订单退款记录
Integer
flag
=
addOrderRefund
(
baseOrder
.
getId
(),
refundDesc
,
refundAmont
,
refundTradeNo
,
refundType
);
//更新订单的退款状态和退款时间
if
(
SYS_TRUE
.
equals
(
flag
)
&&
null
!=
refundStatus
)
{
updateSelectiveByIdReT
(
new
BaseOrder
(){{
setRefundStatus
(
refundStatus
);
setRefundTime
(
System
.
currentTimeMillis
());
}});
}
}
/**
* 记录订单退款记录
* @param orderId
* @param refundDesc
* @param refundAmont
* @param refundTradeNo
*/
private
Integer
addOrderRefund
(
Integer
orderId
,
String
refundDesc
,
BigDecimal
refundAmont
,
String
refundTradeNo
,
Integer
refundType
)
{
//如果返回的流水为空,则当做失败
Integer
refundStatus
=
SYS_TRUE
;
if
(
StrUtil
.
isBlank
(
refundTradeNo
))
{
...
...
@@ -244,15 +347,18 @@ public class BaseOrderBiz extends BaseBiz<BaseOrderMapper,BaseOrder> {
//创建订单退款记录
OrderRefund
orderRefund
=
new
OrderRefund
(){{
setOrderId
(
baseOrder
.
getId
());
setRefundAmount
(
refundAmont
);
setOrderId
(
orderId
);
setRefundTime
(
System
.
currentTimeMillis
());
setRefundDesc
(
"取消订单退款:"
+
refundAmont
.
toString
());
setTradeNo
(
refundTradeNo
);
setRefundType
(
RefundTypeEnum
.
RentVehicle
.
getCode
());
}};
orderRefund
.
setRefundAmount
(
refundAmont
);
orderRefund
.
setRefundDesc
(
refundDesc
);
orderRefund
.
setRefundStatus
(
refundStatus
);
orderRefund
.
setRefundType
(
refundType
);
orderRefundBiz
.
insertSelective
(
orderRefund
);
return
refundStatus
;
}
/**
...
...
@@ -318,4 +424,12 @@ public class BaseOrderBiz extends BaseBiz<BaseOrderMapper,BaseOrder> {
log
.
error
(
" order has payed , orderNo:{}, tradeNo:{} "
,
orderNo
,
tradeNo
);
}
}
public
BaseOrder
updateSelectiveByIdReT
(
BaseOrder
baseOrder
)
{
if
(
updateSelectiveByIdRe
(
baseOrder
)
>
0
)
{
return
selectById
(
baseOrder
.
getId
());
}
else
{
throw
new
BaseException
(
ResultCode
.
DB_OPERATION_FAIL_CODE
);
}
}
}
\ No newline at end of file
xx-order/xx-order-server/src/main/java/com/xxfc/platform/order/biz/OrderTourVerificationBiz.java
View file @
4dfba9b0
...
...
@@ -101,7 +101,7 @@ public class OrderTourVerificationBiz{
//核销列表
public
ObjectRestResponse
getVerifications
(
TourGoodOrderFindVo
tourGoodOrderFindVo
){
return
ObjectRestResponse
.
succ
(
tourFeign
.
findTourGoodOrders
(
BeanUtil
.
beanToMap
(
tourGoodOrderFindVo
)
));
return
ObjectRestResponse
.
succ
(
tourFeign
.
findTourGoodOrders
(
tourGoodOrderFindVo
));
}
public
boolean
isPower
(
List
<
BranchCompany
>
list
,
Integer
companyId
){
...
...
xx-order/xx-order-server/src/main/java/com/xxfc/platform/order/jobhandler/HttpJobHandler.java
deleted
100644 → 0
View file @
f973f5f9
package
com
.
xxfc
.
platform
.
order
.
jobhandler
;
import
com.xxl.job.core.biz.model.ReturnT
;
import
com.xxl.job.core.handler.IJobHandler
;
import
com.xxl.job.core.handler.annotation.JobHandler
;
import
com.xxl.job.core.log.XxlJobLogger
;
import
lombok.extern.slf4j.Slf4j
;
import
org.springframework.stereotype.Component
;
/**
* 跨平台Http任务
*
* @author xuxueli 2018-09-16 03:48:34
*/
@JobHandler
(
value
=
"httpJobHandler"
)
@Component
@Slf4j
public
class
HttpJobHandler
extends
IJobHandler
{
@Override
public
ReturnT
<
String
>
execute
(
String
param
)
throws
Exception
{
try
{
for
(
int
i
=
0
;
i
<
10
;
i
++)
{
XxlJobLogger
.
log
(
"helloword"
);
log
.
info
(
"helloword"
);
}
ReturnT
returnT
=
new
ReturnT
();
returnT
.
setCode
(
100
);
returnT
.
setMsg
(
"成功"
);
returnT
.
setContent
(
param
);
return
returnT
;
}
catch
(
Exception
e
)
{
XxlJobLogger
.
log
(
e
);
return
FAIL
;
}
finally
{
;
}
}
}
\ No newline at end of file
xx-order/xx-order-server/src/main/java/com/xxfc/platform/order/jobhandler/RentDepositHandler.java
0 → 100644
View file @
4dfba9b0
package
com
.
xxfc
.
platform
.
order
.
jobhandler
;
import
cn.hutool.json.JSONUtil
;
import
com.github.wxiaoqi.security.common.util.IntervalUtil
;
import
com.xxfc.platform.order.biz.BaseOrderBiz
;
import
com.xxfc.platform.order.biz.OrderRentVehicleBiz
;
import
com.xxfc.platform.order.biz.OrderVehicalCrosstownBiz
;
import
com.xxfc.platform.order.contant.enumerate.*
;
import
com.xxfc.platform.order.entity.BaseOrder
;
import
com.xxfc.platform.order.entity.OrderRentVehicleDetail
;
import
com.xxfc.platform.order.entity.OrderVehicaleCrosstown
;
import
com.xxfc.platform.order.pojo.DedDetailDTO
;
import
com.xxfc.platform.universal.constant.DictionaryKey
;
import
com.xxfc.platform.universal.entity.Dictionary
;
import
com.xxfc.platform.universal.feign.ThirdFeign
;
import
com.xxl.job.core.biz.model.ReturnT
;
import
com.xxl.job.core.handler.IJobHandler
;
import
com.xxl.job.core.handler.annotation.JobHandler
;
import
com.xxl.job.core.log.XxlJobLogger
;
import
lombok.extern.slf4j.Slf4j
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Component
;
import
tk.mybatis.mapper.entity.Example
;
import
tk.mybatis.mapper.weekend.WeekendSqls
;
import
java.math.BigDecimal
;
import
java.util.List
;
import
java.util.Map
;
import
static
com
.
xxfc
.
platform
.
universal
.
constant
.
DictionaryKey
.
APP_ORDER
;
/**
* 跨平台Http任务
*
* @author xuxueli 2018-09-16 03:48:34
*/
@JobHandler
(
value
=
"rentDepositHandler"
)
@Component
@Slf4j
public
class
RentDepositHandler
extends
IJobHandler
{
@Autowired
BaseOrderBiz
baseOrderBiz
;
@Autowired
OrderRentVehicleBiz
orderRentVehicleBiz
;
@Autowired
OrderVehicalCrosstownBiz
crosstownBiz
;
@Autowired
ThirdFeign
thirdFeign
;
@Override
public
ReturnT
<
String
>
execute
(
String
idLastNumInterval
)
throws
Exception
{
Map
<
String
,
Dictionary
>
dictionaryMap
=
thirdFeign
.
dictionaryGetAll4Map
().
getData
();
BigDecimal
illegalReserve
=
new
BigDecimal
(
dictionaryMap
.
get
(
APP_ORDER
+
"_"
+
DictionaryKey
.
ILLEGAL_RESERVE
).
getDetail
());
try
{
for
(
int
i
=
0
;
i
<
10
;
i
++)
{
if
(
IntervalUtil
.
staticIsInTheInterval
(
String
.
valueOf
(
i
),
idLastNumInterval
))
{
List
<
BaseOrder
>
lists
=
baseOrderBiz
.
selectByExample
(
new
Example
.
Builder
(
BaseOrder
.
class
)
//订单已完成的租车订单
.
where
(
WeekendSqls
.<
BaseOrder
>
custom
().
andEqualTo
(
BaseOrder:
:
getType
,
OrderTypeEnum
.
RentVehicle
)
.
andEqualTo
(
BaseOrder:
:
getStatus
,
OrderStatusEnum
.
ORDER_FINISH
)
.
andLike
(
BaseOrder:
:
getId
,
"%"
+
String
.
valueOf
(
i
))).
build
());
//处理自动退押金
for
(
BaseOrder
baseOrder
:
lists
)
{
OrderRentVehicleDetail
orvd
=
orderRentVehicleBiz
.
selectOne
(
new
OrderRentVehicleDetail
()
{{
setOrderId
(
baseOrder
.
getId
());
}});
//未退还, 进行保留违章预备金 的退还
if
(
RefundStatusEnum
.
NONE
.
getCode
().
equals
(
baseOrder
.
getRefundStatus
()))
{
OrderVehicaleCrosstown
crosstown
=
crosstownBiz
.
selectOne
(
new
OrderVehicaleCrosstown
(){{
setOrderId
(
baseOrder
.
getId
());
setType
(
CrosstownTypeEnum
.
TOUR
.
getCode
());
}});
BigDecimal
refundAmont
=
crosstown
.
getRestDeposit
().
subtract
(
illegalReserve
);
List
<
DedDetailDTO
>
dddList
=
JSONUtil
.
toBean
(
crosstown
.
getDedDetail
(),
List
.
class
);
String
refundDesc
=
"退还押金:"
+
refundAmont
.
toString
()+
"(已扣除 违章预备金:"
+
illegalReserve
.
toString
();
for
(
DedDetailDTO
ddd
:
dddList
)
{
refundDesc
+=
", "
+
ddd
.
getDeductions
()+
":"
+
ddd
.
getCost
();
}
refundDesc
+=
")"
;
//退款子流程: 订单基础,退款描述,退款金额
baseOrderBiz
.
refundSubProcess
(
baseOrder
,
refundDesc
,
refundAmont
,
RefundTypeEnum
.
RentVehicle
.
getCode
(),
RefundStatusEnum
.
RESIDUE_ILLEGAL
.
getCode
());
//设置剩余
}
else
if
(
RefundStatusEnum
.
RESIDUE_ILLEGAL
.
getCode
().
equals
(
baseOrder
.
getRefundStatus
())){
//判断是否违章
//扣违章的钱
//baseOrderBiz.refundSubProcess(baseOrder, refundDesc, refundAmont, RefundTypeEnum.RentVehicle.getCode(), RefundStatusEnum.RESIDUE_ILLEGAL.getCode());
}
// baseOrderBiz.refundSubProcess(baseOrder, refundDesc, refundAmont);
}
}
}
ReturnT
returnT
=
new
ReturnT
(){{
setCode
(
100
);
setMsg
(
"成功"
);
setContent
(
idLastNumInterval
);
}};
return
returnT
;
}
catch
(
Exception
e
)
{
XxlJobLogger
.
log
(
e
);
return
FAIL
;
}
finally
{
;
}
}
}
\ No newline at end of file
xx-order/xx-order-server/src/main/java/com/xxfc/platform/order/rest/BaseOrderController.java
View file @
4dfba9b0
...
...
@@ -24,8 +24,11 @@ import com.xxfc.platform.order.entity.BaseOrder;
import
com.xxfc.platform.order.mqhandler.RabbitProduct
;
import
com.xxfc.platform.order.pojo.order.CancelOrderDTO
;
import
com.xxfc.platform.order.pojo.order.OrderPageVO
;
import
com.xxfc.platform.order.pojo.order.UnitPriceDTO
;
import
com.xxfc.platform.order.pojo.pay.RentVehicleOrderPayVO
;
import
com.xxfc.platform.universal.constant.DictionaryKey
;
import
com.xxfc.platform.universal.constant.enumerate.PayChannelEnum
;
import
com.xxfc.platform.universal.entity.Dictionary
;
import
com.xxfc.platform.universal.feign.ThirdFeign
;
import
com.xxfc.platform.universal.vo.OrderPayVo
;
import
com.xxfc.platform.vehicle.common.RestResponse
;
...
...
@@ -47,8 +50,11 @@ import java.math.BigDecimal;
import
java.util.ArrayList
;
import
java.util.Date
;
import
java.util.List
;
import
java.util.Map
;
import
java.util.stream.Collectors
;
import
static
com
.
xxfc
.
platform
.
universal
.
constant
.
DictionaryKey
.
APP_ORDER
;
@Controller
@RequestMapping
(
"baseOrder"
)
@Api
(
value
=
"订单"
,
tags
=
{
"订单"
})
...
...
@@ -83,6 +89,18 @@ public class BaseOrderController extends CommonBaseController {
String
qrcodePrefix
=
"fcwx://order"
;
String
notifyUrl
=
"/baseOrder/app/unauth/notifyUrl"
;
@RequestMapping
(
value
=
"/app/unauth/getOrderUnitPrice"
,
method
=
RequestMethod
.
GET
)
@ResponseBody
@ApiOperation
(
value
=
"获取订单相关的单价"
)
@IgnoreClientToken
@IgnoreUserToken
public
ObjectRestResponse
<
UnitPriceDTO
>
getOrderUnitPrice
()
{
Map
<
String
,
Dictionary
>
dictionaryMap
=
thirdFeign
.
dictionaryGetAll4Map
().
getData
();
return
ObjectRestResponse
.
succ
(
new
UnitPriceDTO
(){{
setInsurePrice
(
new
BigDecimal
(
dictionaryMap
.
get
(
APP_ORDER
+
"_"
+
DictionaryKey
.
INSURE_PRICE
).
getDetail
()));
}});
}
@RequestMapping
(
value
=
"/page"
,
method
=
RequestMethod
.
GET
)
@ResponseBody
@ApiOperation
(
value
=
"订单列表"
)
...
...
@@ -333,6 +351,13 @@ public class BaseOrderController extends CommonBaseController {
"6--已完成"
)
private
Integer
status
;
private
String
multiStatus
;
@ApiModelProperty
(
value
=
"是否有使用会员权益"
)
private
Integer
hasMemberRight
;
@ApiModelProperty
(
value
=
"订单类型 1--租车;2--旅游; 3--会员订单"
)
private
Integer
type
;
}
/**
...
...
xx-order/xx-order-server/src/main/java/com/xxfc/platform/order/rest/OrderRentVehicleController.java
View file @
4dfba9b0
...
...
@@ -26,6 +26,8 @@ import org.springframework.stereotype.Controller;
import
org.springframework.web.bind.annotation.*
;
import
springfox.documentation.annotations.ApiIgnore
;
import
javax.persistence.Column
;
@Controller
@RequestMapping
(
"orderRentVehicle"
)
@Api
(
value
=
"租车订单"
,
tags
={
"租车订单"
})
...
...
@@ -65,15 +67,19 @@ public class OrderRentVehicleController extends CommonBaseController {
return
ObjectRestResponse
.
succ
(
orderRentVehicleBiz
.
listByOrderId
(
orderId
));
}
@RequestMapping
(
value
=
"/
app/unauth/
calculate-price"
,
method
=
RequestMethod
.
GET
)
@RequestMapping
(
value
=
"/calculate-price"
,
method
=
RequestMethod
.
GET
)
@ResponseBody
@ApiOperation
(
value
=
"价格计算"
)
@IgnoreUserToken
public
ObjectRestResponse
<
RentVehiclePriceVO
>
calculatePrice
(
CalculatePriceVO
vo
){
RentVehicleBO
bo
=
BeanUtil
.
toBean
(
vo
,
RentVehicleBO
.
class
);
if
(
StrUtil
.
isNotBlank
(
BaseContextHandler
.
getToken
()))
{
bo
.
setAppUserDTO
(
userFeign
.
userDetailByToken
(
BaseContextHandler
.
getToken
()).
getData
());
}
bo
.
setOrder
(
new
BaseOrder
(){{
setHasMemberRight
(
vo
.
getHasMemberRight
());
}});
bo
.
setAppUserDTO
(
userFeign
.
userDetailByToken
(
BaseContextHandler
.
getToken
()).
getData
());
orderRentVehicleService
.
initDetailSecond
(
bo
);
return
ObjectRestResponse
.
succ
(
orderRentVehicleService
.
calculatePrice
(
bo
));
}
...
...
@@ -100,5 +106,16 @@ public class OrderRentVehicleController extends CommonBaseController {
@ApiModelProperty
(
value
=
"是否购买免赔 1--是"
)
private
Integer
damageSafe
;
/**
* 是否有使用会员权益
*/
@ApiModelProperty
(
value
=
"是否有使用会员权益"
)
private
Integer
hasMemberRight
;
/**
* 是否使用出租免费天数
*/
@ApiModelProperty
(
value
=
"是否使用出租免费天数"
)
private
Integer
rentFreeDay
;
}
}
\ No newline at end of file
xx-order/xx-order-server/src/main/java/com/xxfc/platform/order/service/AbstractOrderHandle.java
View file @
4dfba9b0
...
...
@@ -13,10 +13,12 @@ import com.xxfc.platform.order.entity.BaseOrder;
import
com.xxfc.platform.order.entity.inter.OrderDetail
;
import
com.xxfc.platform.order.mqhandler.RabbitProduct
;
import
com.xxfc.platform.order.pojo.price.OrderPriceVO
;
import
com.xxfc.platform.universal.entity.Dictionary
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.transaction.annotation.Transactional
;
import
java.math.BigDecimal
;
import
java.util.Map
;
@Transactional
public
abstract
class
AbstractOrderHandle
<
Biz
extends
BaseBiz
,
Detail
extends
OrderDetail
>{
...
...
@@ -26,6 +28,8 @@ public abstract class AbstractOrderHandle<Biz extends BaseBiz, Detail extends Or
@Autowired
protected
Biz
detailBiz
;
protected
Map
<
String
,
Dictionary
>
dictionaryMap
;
@Autowired
RabbitProduct
rabbitProduct
;
...
...
xx-order/xx-order-server/src/main/java/com/xxfc/platform/order/service/OrderMemberService.java
View file @
4dfba9b0
...
...
@@ -24,6 +24,7 @@ import javax.annotation.PostConstruct;
import
javax.servlet.http.HttpServletRequest
;
import
java.math.BigDecimal
;
import
java.util.HashMap
;
import
java.util.HashSet
;
@Service
@Log4j
...
...
@@ -69,8 +70,8 @@ public class OrderMemberService extends AbstractOrderHandle<OrderMemberDetailBiz
super
.
initDetail
(
bo
);
BaseUserMemberLevel
buml
=
userFeign
.
level
(
bo
.
getMemberLevel
());
if
(!
bo
.
getMemberLevelId
().
equals
(
buml
.
getId
()))
{
throw
new
BaseException
(
ResultCode
.
PARAM_ILLEGAL_CODE
,
new
Hash
Map
<
String
,
Object
>(){{
put
(
"MemberLevelId 和 MemberLevel"
,
"
不对称"
);
throw
new
BaseException
(
ResultCode
.
PARAM_ILLEGAL_CODE
,
new
Hash
Set
<
String
>(){{
add
(
"MemberLevelId 和 MemberLevel
不对称"
);
}});
}
bo
.
setBaseUserMemberLevel
(
buml
);
...
...
xx-order/xx-order-server/src/main/java/com/xxfc/platform/order/service/OrderRentVehicleService.java
View file @
4dfba9b0
...
...
@@ -20,7 +20,7 @@ import com.xxfc.platform.order.contant.enumerate.OrderTypeEnum;
import
com.xxfc.platform.order.entity.OrderTemplate
;
import
com.xxfc.platform.order.pojo.order.RentVehicleBO
;
import
com.xxfc.platform.order.pojo.price.RentVehiclePriceVO
;
import
com.xxfc.platform.universal.
entity.Dictionar
y
;
import
com.xxfc.platform.universal.
constant.DictionaryKe
y
;
import
com.xxfc.platform.universal.feign.ThirdFeign
;
import
com.xxfc.platform.vehicle.entity.VehicleBookRecord
;
import
com.xxfc.platform.vehicle.entity.VehicleModel
;
...
...
@@ -33,8 +33,11 @@ import org.springframework.stereotype.Service;
import
javax.annotation.PostConstruct
;
import
java.math.BigDecimal
;
import
java.util.HashMap
;
import
java.util.HashSet
;
import
static
com
.
github
.
wxiaoqi
.
security
.
admin
.
constant
.
enumerate
.
MemberEnum
.*;
import
static
com
.
github
.
wxiaoqi
.
security
.
common
.
constant
.
CommonConstants
.
SYS_TRUE
;
import
static
com
.
xxfc
.
platform
.
universal
.
constant
.
DictionaryKey
.
APP_ORDER
;
@Service
@Log4j
...
...
@@ -47,6 +50,7 @@ public class OrderRentVehicleService extends AbstractOrderHandle<OrderRentVehicl
private
static
Integer
DISCOUNT_STATUS_NONE
=
0
;
private
static
Integer
DISCOUNT_STATUS_MEMBER
=
1
;
private
static
Integer
DISCOUNT_STATUS_FIXED
=
2
;
private
static
Long
autoCancelTime
;
@Autowired
VehicleFeign
vehicleFeign
;
...
...
@@ -72,23 +76,21 @@ public class OrderRentVehicleService extends AbstractOrderHandle<OrderRentVehicl
@Override
public
void
initDetail
(
RentVehicleBO
bo
)
{
super
.
initDetail
(
bo
);
initDetailSecond
(
bo
);
}
public
void
initDetailSecond
(
RentVehicleBO
bo
)
{
initDictionary
();
VehicleModel
vehicleModel
=
vehicleFeign
.
get
(
bo
.
getModelId
()).
getData
();
bo
.
setVehicleModel
(
vehicleModel
);
}
private
void
initDictionary
()
{
Dictionary
driverPriceDic
=
thirdFeign
.
dictionaryGet
(
BeanUtil
.
beanToMap
(
new
Dictionary
(){{
setType
(
"APP_ORDER"
);
setCode
(
"DRIVER_PRICE"
);
}},
false
,
true
)).
getData
().
get
(
0
);
Dictionary
damageSafeDic
=
thirdFeign
.
dictionaryGet
(
BeanUtil
.
beanToMap
(
new
Dictionary
(){{
setType
(
"APP_ORDER"
);
setCode
(
"DAMAGE_SAFE"
);
}},
false
,
true
)).
getData
().
get
(
0
);
this
.
DRIVER_PRICE
=
new
BigDecimal
(
driverPriceDic
.
getDetail
());
this
.
DAMAGE_SAFE
=
new
BigDecimal
(
damageSafeDic
.
getDetail
());
public
void
initDictionary
()
{
dictionaryMap
=
thirdFeign
.
dictionaryGetAll4Map
().
getData
();
this
.
autoCancelTime
=
Long
.
valueOf
(
dictionaryMap
.
get
(
APP_ORDER
+
"_"
+
DictionaryKey
.
ACT_RENT
).
getDetail
());
this
.
DRIVER_PRICE
=
new
BigDecimal
(
dictionaryMap
.
get
(
APP_ORDER
+
"_"
+
DictionaryKey
.
DRIVER_PRICE
).
getDetail
());
this
.
DAMAGE_SAFE
=
new
BigDecimal
(
dictionaryMap
.
get
(
APP_ORDER
+
"_"
+
DictionaryKey
.
DAMAGE_SAFE
).
getDetail
());
}
@Override
...
...
@@ -112,9 +114,8 @@ public class OrderRentVehicleService extends AbstractOrderHandle<OrderRentVehicl
super
.
handleDetail
(
bo
);
//发送定时取消订单(30分钟)
//rabbitProduct.sendDelayMessage(bo.getOrder(), 1000L * 60 * 30);
rabbitProduct
.
sendDelayMessage
(
bo
.
getOrder
(),
1000L
*
60
*
5
);
//发送定时取消订单(数据字典设置--5分钟)
rabbitProduct
.
sendDelayMessage
(
bo
.
getOrder
(),
autoCancelTime
);
}
@Override
...
...
@@ -134,13 +135,16 @@ public class OrderRentVehicleService extends AbstractOrderHandle<OrderRentVehicl
BigDecimal
modelAmount
=
BigDecimal
.
ZERO
;
Integer
vehicleDayNum
=
0
;
Integer
freeDayNum
=
0
;
//当前用户
AppUserDTO
dto
=
detail
.
getAppUserDTO
();
//如果用户存在,并且为会员,并且车辆有优惠价
if
(
null
!=
dto
&&
null
!=
detail
.
getRentFreeDay
()
&&
detail
.
getRentFreeDay
()
>
0
)
{
if
(
dto
.
getRentFreeDays
()
<=
0
)
{
throw
new
BaseException
(
ResultCode
.
PARAM_EXPIRE_CODE
);
if
(
null
==
dto
.
getRentFreeDays
()
||
dto
.
getRentFreeDays
()
<=
0
)
{
throw
new
BaseException
(
ResultCode
.
PARAM_EXPIRE_CODE
,
new
HashSet
<
String
>()
{{
add
(
"免费租车天数不存在或为0"
);
}});
}
if
(
detail
.
getDayNum
()
>
dto
.
getRentFreeDays
())
{
freeDayNum
=
dto
.
getRentFreeDays
();
...
...
@@ -148,6 +152,7 @@ public class OrderRentVehicleService extends AbstractOrderHandle<OrderRentVehicl
freeDayNum
=
detail
.
getDayNum
();
}
vehicleDayNum
=
detail
.
getDayNum
()
-
freeDayNum
;
detail
.
getOrder
().
setHasMemberRight
(
SYS_TRUE
);
}
else
{
vehicleDayNum
=
detail
.
getDayNum
();
}
...
...
@@ -166,18 +171,30 @@ public class OrderRentVehicleService extends AbstractOrderHandle<OrderRentVehicl
switch
(
MemberEnum
.
getByCode
(
detail
.
getAppUserDTO
().
getMemberLevel
()))
{
case
NORMAL:
modelAmount
=
handleDiscount
(
vehicleModel
,
prices
,
NORMAL
);
detail
.
getOrder
().
setHasMemberRight
(
SYS_TRUE
);
break
;
case
GOLD:
modelAmount
=
handleDiscount
(
vehicleModel
,
prices
,
GOLD
);
detail
.
getOrder
().
setHasMemberRight
(
SYS_TRUE
);
break
;
case
DIAMOND:
modelAmount
=
handleDiscount
(
vehicleModel
,
prices
,
DIAMOND
);
detail
.
getOrder
().
setHasMemberRight
(
SYS_TRUE
);
break
;
}
}
else
{
modelAmount
=
vehicleModel
.
getPrice
();
}
vehicleAmount
=
vehicleAmount
.
add
(
modelAmount
.
multiply
(
BigDecimal
.
valueOf
(
vehicleDayNum
)));
//优惠券处理
//待完成
//如果有使用会员权益或者优惠券,则设置订单已优惠
if
(
SYS_TRUE
.
equals
(
detail
.
getOrder
().
getHasMemberRight
()))
{
detail
.
getOrder
().
setHasDiscount
(
SYS_TRUE
);
}
if
(
DRIVER_TYPE_COMPANY
.
equals
(
detail
.
getDriverType
()))
{
//计算司机费用
driverAmount
=
driverAmount
.
add
(
DRIVER_PRICE
.
multiply
(
BigDecimal
.
valueOf
(
detail
.
getDayNum
())));
...
...
@@ -194,25 +211,26 @@ public class OrderRentVehicleService extends AbstractOrderHandle<OrderRentVehicl
orderAmount
=
orderAmount
.
add
(
goodsAmount
).
add
(
vehicleModel
.
getDeposit
());
//生成订单明细
RentVehiclePriceVO
rvp
=
new
RentVehiclePriceVO
();
rvp
.
setOrderAmount
(
orderAmount
);
rvp
.
setGoodsAmount
(
goodsAmount
);
RentVehiclePriceVO
rvp
=
new
RentVehiclePriceVO
(){{
setOrderAmount
(
orderAmount
);
setGoodsAmount
(
goodsAmount
);
setRealAmount
(
orderAmount
);
setDeposit
(
vehicleModel
.
getDeposit
());
setDriverPrice
(
DRIVER_PRICE
);
setDamageSafePrice
(
DAMAGE_SAFE
);
setModelName
(
vehicleModel
.
getName
());
setDayNum
(
detail
.
getDayNum
());
setVehicleNum
(
1
);
setDriverNum
(
1
);
}};
rvp
.
setDriverAmount
(
driverAmount
);
rvp
.
setVehicleAmount
(
vehicleAmount
);
rvp
.
setDamageSafeAmount
(
damageSafeAmount
);
rvp
.
setRealAmount
(
orderAmount
);
rvp
.
setDeposit
(
vehicleModel
.
getDeposit
());
rvp
.
setModelAmount
(
modelAmount
);
rvp
.
setDriverPrice
(
DRIVER_PRICE
);
rvp
.
setDamageSafePrice
(
DAMAGE_SAFE
);
rvp
.
setModelName
(
vehicleModel
.
getName
());
rvp
.
setDayNum
(
detail
.
getDayNum
());
rvp
.
setVehicleDayNum
(
vehicleDayNum
);
rvp
.
setVehicleNum
(
1
);
rvp
.
setDriverNum
(
1
);
//设置收费明细
costDetail
(
rvp
,
handle
c
hildren
(
detail
,
vehicleDayNum
));
costDetail
(
rvp
,
handle
C
hildren
(
detail
,
vehicleDayNum
));
return
rvp
;
}
...
...
@@ -234,7 +252,7 @@ public class OrderRentVehicleService extends AbstractOrderHandle<OrderRentVehicl
return
modelAmount
;
}
private
String
handle
c
hildren
(
RentVehicleBO
detail
,
Integer
vehicleDayNum
)
{
private
String
handle
C
hildren
(
RentVehicleBO
detail
,
Integer
vehicleDayNum
)
{
StringBuffer
childrenStr
=
new
StringBuffer
(
""
);
if
(
vehicleDayNum
>
0
)
{
childrenStr
.
append
(
",${tem_0101}"
);
...
...
xx-order/xx-order-server/src/main/java/com/xxfc/platform/order/service/OrderTourService.java
View file @
4dfba9b0
...
...
@@ -6,7 +6,9 @@ import cn.hutool.core.util.StrUtil;
import
com.github.wxiaoqi.security.admin.feign.UserFeign
;
import
com.github.wxiaoqi.security.admin.feign.dto.AppUserDTO
;
import
com.github.wxiaoqi.security.auth.client.config.UserAuthConfig
;
import
com.github.wxiaoqi.security.common.exception.BaseException
;
import
com.github.wxiaoqi.security.common.msg.ObjectRestResponse
;
import
com.github.wxiaoqi.security.common.util.process.ResultCode
;
import
com.xxfc.platform.order.biz.OrderCostDetailBiz
;
import
com.xxfc.platform.order.biz.OrderTemplateBiz
;
import
com.xxfc.platform.order.biz.OrderTourDetailBiz
;
...
...
@@ -22,6 +24,8 @@ import com.xxfc.platform.tour.entity.TourGoodVerification;
import
com.xxfc.platform.tour.entity.TourUser
;
import
com.xxfc.platform.tour.feign.TourFeign
;
import
com.xxfc.platform.tour.vo.TourSpePriceVo
;
import
com.xxfc.platform.universal.constant.DictionaryKey
;
import
com.xxfc.platform.universal.feign.ThirdFeign
;
import
com.xxfc.platform.vehicle.entity.SysRegion
;
import
com.xxfc.platform.vehicle.feign.VehicleFeign
;
import
com.xxfc.platform.vehicle.pojo.CompanyDetail
;
...
...
@@ -34,11 +38,12 @@ import javax.servlet.http.HttpServletRequest;
import
java.math.BigDecimal
;
import
java.util.ArrayList
;
import
java.util.HashMap
;
import
java.util.HashSet
;
import
java.util.List
;
import
java.util.stream.Collectors
;
import
static
com
.
github
.
wxiaoqi
.
security
.
common
.
constant
.
CommonConstants
.
SYS_FALSE
;
import
static
com
.
github
.
wxiaoqi
.
security
.
common
.
constant
.
CommonConstants
.
SYS_TRUE
;
import
static
com
.
xxfc
.
platform
.
universal
.
constant
.
DictionaryKey
.
APP_ORDER
;
@Service
@Log4j
...
...
@@ -49,13 +54,13 @@ public class OrderTourService extends AbstractOrderHandle<OrderTourDetailBiz, To
@Autowired
VehicleFeign
vehicleFeign
;
private
static
Integer
IS_CHILD
=
1
;
private
static
Integer
LEVEL_DEFAULT
=
0
;
private
static
Integer
NUMBER_ZERO
=
0
;
private
static
BigDecimal
INSURE_PRICE
=
new
BigDecimal
(
"5.00"
);
//保险
private
static
BigDecimal
INSURE_PRICE
;
private
static
Long
autoCancelTime
;
//= new BigDecimal("5.00"); //保险
@Autowired
OrderCostDetailBiz
orderCostDetailBiz
;
...
...
@@ -69,6 +74,9 @@ public class OrderTourService extends AbstractOrderHandle<OrderTourDetailBiz, To
@Autowired
UserFeign
userFeign
;
@Autowired
ThirdFeign
thirdFeign
;
@Autowired
public
HttpServletRequest
request
;
...
...
@@ -84,11 +92,18 @@ public class OrderTourService extends AbstractOrderHandle<OrderTourDetailBiz, To
@Override
public
void
initDetail
(
TourBO
bo
)
{
super
.
initDetail
(
bo
);
initDictionary
();
TourGood
tourGood
=
tourFeign
.
usableGet
(
bo
.
getGoodId
()).
getData
();
bo
.
setTourGood
(
tourGood
);
bo
.
setAppUserDTO
(
getUserInfo
());
}
public
void
initDictionary
()
{
dictionaryMap
=
thirdFeign
.
dictionaryGetAll4Map
().
getData
();
this
.
INSURE_PRICE
=
new
BigDecimal
(
dictionaryMap
.
get
(
APP_ORDER
+
"_"
+
DictionaryKey
.
INSURE_PRICE
).
getDetail
());
this
.
autoCancelTime
=
Long
.
valueOf
(
dictionaryMap
.
get
(
APP_ORDER
+
"_"
+
DictionaryKey
.
ACT_TOUR
).
getDetail
());
}
@Override
public
void
handleDetail
(
TourBO
bo
)
{
//设置订单状态为3
...
...
@@ -117,7 +132,7 @@ public class OrderTourService extends AbstractOrderHandle<OrderTourDetailBiz, To
super
.
handleDetail
(
bo
);
//发送定时取消订单(30分钟)
rabbitProduct
.
sendDelayMessage
(
bo
.
getOrder
(),
1000L
*
60
*
30
);
rabbitProduct
.
sendDelayMessage
(
bo
.
getOrder
(),
autoCancelTime
);
}
@Override
...
...
@@ -156,6 +171,10 @@ public class OrderTourService extends AbstractOrderHandle<OrderTourDetailBiz, To
detail
.
setTotalNumber
(
detail
.
getAdultNum
()
+
detail
.
getChildNum
());
}
if
(
detail
.
getAdultNum
()
<=
0
)
{
throw
new
BaseException
(
ResultCode
.
PARAM_ILLEGAL_CODE
,
new
HashSet
<
String
>(){{
add
(
"最少一个成人"
);}});
}
//计算旅游价格
ObjectRestResponse
<
TourSpePriceVo
>
objectRestResponse
=
tourFeign
.
refund
(
new
TourSpePriceDTO
(){{
setChildNumber
(
detail
.
getChildNum
());
...
...
@@ -172,7 +191,7 @@ public class OrderTourService extends AbstractOrderHandle<OrderTourDetailBiz, To
insureAmount
=
insureAmount
.
add
(
INSURE_PRICE
.
multiply
(
new
BigDecimal
(
String
.
valueOf
(
detail
.
getTotalNumber
()
*
detail
.
getTourGood
().
getNumber
()))));
}
//总价
tourAmount
=
tourAmount
.
add
(
tourSpePriceVo
.
getTotalPrice
()).
add
(
tourSpePriceVo
.
getChildPrice
());
tourAmount
=
tourAmount
.
add
(
tourSpePriceVo
.
getTotalPrice
()).
add
(
tourSpePriceVo
.
get
Total
ChildPrice
());
//商品价格
goodsAmount
=
goodsAmount
.
add
(
tourAmount
);
//总价格
...
...
@@ -193,11 +212,11 @@ public class OrderTourService extends AbstractOrderHandle<OrderTourDetailBiz, To
tpv
.
setTotalNumber
(
detail
.
getTotalNumber
());
//设置收费明细
costDetail
(
tpv
,
handle
c
hildren
(
detail
));
costDetail
(
tpv
,
handle
C
hildren
(
detail
));
return
tpv
;
}
private
String
handle
c
hildren
(
TourBO
detail
)
{
private
String
handle
C
hildren
(
TourBO
detail
)
{
StringBuffer
childrenStr
=
new
StringBuffer
(
""
);
if
(
NUMBER_ZERO
<
detail
.
getAdultNum
())
{
childrenStr
.
append
(
",${tem_0201}"
);
...
...
xx-order/xx-order-server/src/main/resources/mapper/BaseOrderMapper.xml
View file @
4dfba9b0
...
...
@@ -56,6 +56,20 @@
<if
test=
"no != null"
>
and no = #{no}
</if>
<if
test=
"type != null"
>
and type = #{type}
</if>
<if
test=
"hasMemberRight != null"
>
and has_member_right = #{hasMemberRight}
</if>
<if
test=
"multiStatus != null"
>
and
(
<foreach
collection=
"multiStatus.split(',')"
index=
"sIndex"
item=
"statusEntity"
separator=
" or "
>
status = #{statusEntity}
</foreach>
)
</if>
</where>
order by crt_time desc
</select>
...
...
xx-tour/xx-tour-api/src/main/java/com/xxfc/platform/tour/feign/TourFeign.java
View file @
4dfba9b0
...
...
@@ -83,8 +83,8 @@ public interface TourFeign {
* @param tourGoodOrderFindVo
* @return
*/
@
GetMapping
(
"/tourGood/verfication/orders"
)
PageDataVO
<
TourGoodOrderVo
>
findTourGoodOrders
(
@Request
Param
(
"tourGoodOrderFindVo"
)
Map
<
String
,
Object
>
tourGoodOrderFindVo
);
@
RequestMapping
(
value
=
"/tourGood/verfication/orders"
,
method
=
RequestMethod
.
POST
)
PageDataVO
<
TourGoodOrderVo
>
findTourGoodOrders
(
@Request
Body
TourGoodOrderFindVo
tourGoodOrderFindVo
);
@ApiOperation
(
"首页旅游列表"
)
@GetMapping
(
value
=
"/tourGood/app/shopList"
)
...
...
xx-tour/xx-tour-server/src/main/java/com/xxfc/platform/tour/biz/TourGoodBiz.java
View file @
4dfba9b0
...
...
@@ -66,7 +66,13 @@ public class TourGoodBiz extends BaseBiz<TourGoodMapper, TourGood> {
*/
public
ObjectRestResponse
<
TourGood
>
getGoodList
(
int
page
,
int
limit
,
String
query
,
Double
latitude
,
Double
longitude
,
Integer
tagId
,
Double
distance
){
Map
<
String
,
Object
>
params
=
initParam
(
page
,
limit
,
query
,
latitude
,
longitude
,
tagId
,
distance
);
return
new
ObjectRestResponse
().
status
(
RestCode
.
SUCCESS
.
getStatus
()).
msg
(
RestCode
.
SUCCESS
.
getMsg
()).
data
(
PageDataVO
.
pageInfo
(
page
,
limit
,
()
->
mapper
.
getGoodList
(
params
)));
PageDataVO
<
TourGood
>
dataVO
=
null
;
if
(
latitude
!=
null
&&
latitude
>
0
&&
longitude
!=
null
&&
longitude
>
0
){
dataVO
=
PageDataVO
.
pageInfo
(
page
,
limit
,
()->
mapper
.
getCoordinateList
(
params
));
}
else
{
dataVO
=
PageDataVO
.
pageInfo
(
page
,
limit
,
()->
mapper
.
getGoodList
(
params
));
}
return
new
ObjectRestResponse
().
status
(
RestCode
.
SUCCESS
.
getStatus
()).
msg
(
RestCode
.
SUCCESS
.
getMsg
()).
data
(
dataVO
);
}
private
Map
<
String
,
Object
>
initParam
(
int
page
,
int
limit
,
String
query
,
Double
latitude
,
Double
longitude
,
Integer
tagId
,
Double
distance
)
{
...
...
xx-tour/xx-tour-server/src/main/java/com/xxfc/platform/tour/biz/TourGoodDetailBiz.java
View file @
4dfba9b0
...
...
@@ -75,6 +75,9 @@ public class TourGoodDetailBiz extends BaseBiz<TourGoodMapper, TourGood> {
}
}
//获取banner
List
<
GoodBannerDTO
>
bannerList
=
bannerMapper
.
getBannerList
(
id
);
detailVo
.
setBannerDTOS
(
bannerList
);
//获取出行时间
List
<
TourDepartTimeVo
>
timelist
=
priceMapper
.
getAllByGoodId
(
id
);
detailVo
.
setTourDepartTimeVo
(
timelist
);
...
...
xx-tour/xx-tour-server/src/main/java/com/xxfc/platform/tour/mapper/TourGoodMapper.java
View file @
4dfba9b0
...
...
@@ -23,6 +23,8 @@ public interface TourGoodMapper extends Mapper<TourGood> {
//查询旅游路线列表
public
List
<
TourGood
>
getGoodList
(
@Param
(
"params"
)
Map
<
String
,
Object
>
map
);
//根据经纬度查询旅游路线列表
public
List
<
TourGood
>
getCoordinateList
(
@Param
(
"params"
)
Map
<
String
,
Object
>
map
);
//获取商品列表
public
List
<
TourGoodVo
>
findGoodList
(
@Param
(
"params"
)
GoodSearchDTO
tourGoodDTO
);
...
...
xx-tour/xx-tour-server/src/main/java/com/xxfc/platform/tour/rest/TourGoodController.java
View file @
4dfba9b0
...
...
@@ -36,7 +36,7 @@ public class TourGoodController extends BaseController<TourGoodBiz, TourGood> {
public
ObjectRestResponse
<
TourGood
>
getGoodList
(
@RequestParam
(
value
=
"page"
,
required
=
true
)
Integer
page
,
@RequestParam
(
value
=
"limit"
,
required
=
true
)
Integer
limit
,
@RequestParam
(
value
=
"query"
,
required
=
false
)
String
query
,
@RequestParam
(
value
=
"latitude"
,
required
=
false
)
Double
latitude
,
@RequestParam
(
value
=
"longitude"
,
required
=
false
)
Double
longitude
,
@RequestParam
(
value
=
"tagId"
,
required
=
false
)
Integer
tagId
,
@RequestParam
(
value
=
"distance"
,
defaultValue
=
"10.00"
)
Double
distance
)
{
@RequestParam
(
value
=
"distance"
,
defaultValue
=
"10
0
.00"
)
Double
distance
)
{
return
baseBiz
.
getGoodList
(
page
,
limit
,
query
,
latitude
,
longitude
,
tagId
,
distance
);
}
...
...
xx-tour/xx-tour-server/src/main/java/com/xxfc/platform/tour/rest/TourGoodVerificationController.java
View file @
4dfba9b0
...
...
@@ -21,8 +21,8 @@ public class TourGoodVerificationController extends BaseController<TourGoodVerif
* @return
*/
@ApiOperation
(
"订单列表的查询"
)
@
GetMapping
(
"/orders"
)
public
PageDataVO
<
TourGoodOrderVo
>
findTourGoodOrders
(
TourGoodOrderFindVo
tourGoodOrderFindVo
){
@
RequestMapping
(
value
=
"/orders"
,
method
=
RequestMethod
.
POST
)
public
PageDataVO
<
TourGoodOrderVo
>
findTourGoodOrders
(
@RequestBody
TourGoodOrderFindVo
tourGoodOrderFindVo
){
PageDataVO
<
TourGoodOrderVo
>
tourGoodOrderPageDataVo
=
getBaseBiz
().
findTourGoodOrdersPage
(
tourGoodOrderFindVo
);
return
tourGoodOrderPageDataVo
;
}
...
...
xx-tour/xx-tour-server/src/main/resources/mapper/TourGoodMapper.xml
View file @
4dfba9b0
...
...
@@ -51,6 +51,21 @@
<result
property=
"isOutside"
column=
"is_outside"
/>
</resultMap>
<!--查询旅游路线列表-->
<select
id=
"getCoordinateList"
parameterType=
"java.util.Map"
resultMap=
"tourGoodMap"
>
SELECT t.* from tour_good t
left join (
select good_id,
IFNULL(ROUND(( (2 * ASIN( SQRT( POW( SIN((latitude * PI() / 180.0- #{params.latitude}* PI() / 180.0)/2), 2)+COS( latitude * PI() / 180.0)*COS( #{params.longitude} * PI() / 180.0)
*POW(SIN((longitude * PI() / 180.0 - #{params.longitude}* PI() /180.0)/2),2))))*6378.137)*10000)/10000 ,0 ) AS distance
FROM tour_good_site WHERE type=2 ) gs ON t.id=gs.good_id
where t.is_del=0 AND t.status=1 and gs.distance
<
#{params.distance}
<if
test=
"params.query != null and params.query != ''"
>
and (t.`name` like CONCAT('%',#{params.query},'%') or t.introduce like CONCAT('%',#{params.query},'%'))
</if>
order by gs.distance
</select>
<!--查询旅游路线列表-->
<select
id=
"getGoodList"
parameterType=
"java.util.Map"
resultMap=
"tourGoodMap"
>
SELECT * from tour_good t
...
...
@@ -58,22 +73,11 @@
<if
test=
"params.query != null and params.query != ''"
>
and (t.`name` like CONCAT('%',#{params.query},'%') or t.introduce like CONCAT('%',#{params.query},'%'))
</if>
<if
test=
"params.latitude != null and params.latitude != '' and params.longitude != null and params.longitude != ''"
>
and t.id in (SELECT s.good_id from (
select good_id,
if(ROUND(( (2 * ASIN( SQRT( POW( SIN((latitude * PI() / 180.0- #{params.latitude}* PI() / 180.0)/2), 2)+COS( latitude * PI() / 180.0)*COS( #{params.longitude} * PI() / 180.0)
*POW(SIN((longitude * PI() / 180.0 - #{params.longitude}* PI() /180.0)/2),2))))*6378.137)*10000)/10000 is null ,0,ROUND(( (2 * ASIN( SQRT( POW( SIN((latitude * PI() / 180.0- #{params.latitude}* PI() / 180.0)/2), 2)+COS( latitude * PI() / 180.0)*COS(#{params.longitude} * PI() / 180.0)
*POW(SIN((longitude * PI() / 180.0 - #{params.longitude}* PI() /180.0)/2),2))))*6378.137)*10000)/10000 ) AS distance
FROM tour_good_site
order by distance
) s
where s.distance
<
#{params.distance})
</if>
<if
test=
"params.tagId != null and params.tagId != '' "
>
and t.id in (SELECT tg.good_id from tour_good_tag tg
where tg.tag_id = #{params.tagId}) and t.recommend = 1
ORDER BY t.recommend
</if>
<if
test=
"params.tagId != null and params.tagId != '' "
>
and t.id in (SELECT tg.good_id from tour_good_tag tg
where tg.tag_id = #{params.tagId}) and t.recommend = 1
ORDER BY t.recommend
</if>
</select>
...
...
xx-universal/xx-universal-api/src/main/java/com/xxfc/platform/universal/constant/DictionaryKey.java
0 → 100644
View file @
4dfba9b0
package
com
.
xxfc
.
platform
.
universal
.
constant
;
public
class
DictionaryKey
{
/**
* 订单类型
*/
public
static
final
String
APP_ORDER
=
"APP_ORDER"
;
/**
* 租车,旅游退款
*/
public
static
final
String
RENT_REFUND
=
"RENT_REFUND"
;
public
static
final
String
TOUR_REFUND
=
"TOUR_REFUND"
;
/**
* 租车:公司司机租金、免赔费用、违章预备金
*/
public
static
final
String
DRIVER_PRICE
=
"DRIVER_PRICE"
;
public
static
final
String
DAMAGE_SAFE
=
"DAMAGE_SAFE"
;
public
static
final
String
ILLEGAL_RESERVE
=
"ILLEGAL_RESERVE"
;
/**
* 旅游:保险费用
*/
public
static
final
String
INSURE_PRICE
=
"INSURE_PRICE"
;
/**
* 自动取消订单时间:租车、旅游
*/
public
static
final
String
ACT_RENT
=
"ACT_RENT"
;
public
static
final
String
ACT_TOUR
=
"ACT_TOUR"
;
}
xx-universal/xx-universal-api/src/main/java/com/xxfc/platform/universal/constant/RedisKey.java
View file @
4dfba9b0
package
com
.
xxfc
.
platform
.
vehicle
.
constant
;
package
com
.
xxfc
.
platform
.
universal
.
constant
;
public
class
RedisKey
{
/**
...
...
xx-universal/xx-universal-api/src/main/java/com/xxfc/platform/universal/constant/RegionType.java
0 → 100644
View file @
4dfba9b0
package
com
.
xxfc
.
platform
.
universal
.
constant
;
import
java.util.HashMap
;
import
java.util.Map
;
public
enum
RegionType
{
COUNTRY
(-
1
,
"国家"
),
//这一类型不存在db中,只是用于查询所有国家
REGION
(
0
,
"地区"
),
PROVINCE
(
1
,
"省/直辖市"
),
CITY
(
2
,
"市"
),
PREFECTUR
(
3
,
"县"
),
TOWN
(
4
,
"镇"
),
;
/**
* 编码
*/
private
Integer
code
;
/**
* 类型描述
*/
private
String
desc
;
private
static
Map
<
Integer
,
String
>
codeAndDesc
=
new
HashMap
<
Integer
,
String
>();
//Maps.newHashMap();
static
{
for
(
RegionType
constantType
:
RegionType
.
values
()){
codeAndDesc
.
put
(
constantType
.
getCode
(),
constantType
.
getDesc
());
}
}
RegionType
(
Integer
code
,
String
desc
){
this
.
code
=
code
;
this
.
desc
=
desc
;
}
public
Integer
getCode
()
{
return
code
;
}
public
void
setCode
(
Integer
code
)
{
this
.
code
=
code
;
}
public
String
getDesc
()
{
return
desc
;
}
public
void
setDesc
(
String
desc
)
{
this
.
desc
=
desc
;
}
public
static
Boolean
exists
(
Integer
code
){
return
codeAndDesc
.
containsKey
(
code
);
}
}
xx-universal/xx-universal-api/src/main/java/com/xxfc/platform/universal/constant/ResCode.java
0 → 100644
View file @
4dfba9b0
package
com
.
xxfc
.
platform
.
universal
.
constant
;
public
enum
ResCode
{
AUTH_FAIL
(-
1
,
"权限验证不通过"
),
INVALID_REST_REQ_PARAM
(
100000
,
"rest请求参数非法"
);
/**
* 返回码
*/
private
Integer
code
;
/**
* 描述
*/
private
String
desc
;
ResCode
(
Integer
code
,
String
desc
){
this
.
code
=
code
;
this
.
desc
=
desc
;
}
public
Integer
getCode
()
{
return
code
;
}
public
void
setCode
(
Integer
code
)
{
this
.
code
=
code
;
}
public
String
getDesc
()
{
return
desc
;
}
public
void
setDesc
(
String
desc
)
{
this
.
desc
=
desc
;
}
}
xx-universal/xx-universal-api/src/main/java/com/xxfc/platform/universal/dto/RegionDTO.java
0 → 100644
View file @
4dfba9b0
package
com
.
xxfc
.
platform
.
universal
.
dto
;
import
lombok.AllArgsConstructor
;
import
lombok.Builder
;
import
lombok.Data
;
import
lombok.NoArgsConstructor
;
/**
* @author libin
* @version 1.0
* @description
* @data 2019/7/3 17:51
*/
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public
class
RegionDTO
{
private
Long
id
;
private
Long
parentId
;
}
xx-universal/xx-universal-api/src/main/java/com/xxfc/platform/universal/entity/SysRegion.java
0 → 100644
View file @
4dfba9b0
package
com
.
xxfc
.
platform
.
universal
.
entity
;
import
lombok.Builder
;
import
lombok.Data
;
import
lombok.experimental.Tolerate
;
@Data
@Builder
(
toBuilder
=
true
)
public
class
SysRegion
{
@Tolerate
public
SysRegion
()
{
}
private
Long
id
;
/**
* 所属父地区id
*/
private
Long
parentId
;
private
String
name
;
/**
* 地区类型 0-国家 1-省/直辖市 2-市 3 - 镇、县
*/
private
Integer
type
;
/**
* 从左往右,第1,2位代表省代码,3、4为代表市代码,5-6位代表镇或县代码
*/
private
Integer
agencyId
;
}
xx-universal/xx-universal-api/src/main/java/com/xxfc/platform/universal/feign/RegionFeign.java
0 → 100644
View file @
4dfba9b0
package
com
.
xxfc
.
platform
.
universal
.
feign
;
import
com.xxfc.platform.universal.dto.RegionDTO
;
import
org.springframework.cloud.openfeign.FeignClient
;
import
org.springframework.web.bind.annotation.GetMapping
;
import
org.springframework.web.bind.annotation.RequestParam
;
/**
* @author libin
* @version 1.0
* @description 区域码 接口
* @data 2019/7/3 20:00
*/
@FeignClient
(
value
=
"xx-universal"
,
contextId
=
"region"
)
public
interface
RegionFeign
{
/**
* 根据城市名查询
* @param city
* @return
*/
@GetMapping
(
"/sysRegion/region_name"
)
RegionDTO
getRegionByCityName
(
@RequestParam
(
value
=
"city"
)
String
city
);
}
xx-universal/xx-universal-api/src/main/java/com/xxfc/platform/universal/feign/ThirdFeign.java
View file @
4dfba9b0
...
...
@@ -2,11 +2,10 @@ package com.xxfc.platform.universal.feign;
import
com.alibaba.fastjson.JSONObject
;
import
com.github.wxiaoqi.security.common.msg.ObjectRestResponse
;
import
com.xxfc.platform.universal.dto.RegionDTO
;
import
com.xxfc.platform.universal.entity.Dictionary
;
import
com.xxfc.platform.universal.entity.OrderRefund
;
import
com.xxfc.platform.universal.vo.OrderPayVo
;
import
com.xxfc.platform.universal.vo.OrderRefundVo
;
import
com.xxfc.platform.universal.vo.TrafficViolations
;
import
com.xxfc.platform.universal.vo.*
;
import
feign.Param
;
import
io.swagger.annotations.ApiOperation
;
import
org.springframework.cloud.openfeign.FeignClient
;
...
...
@@ -27,8 +26,11 @@ import java.util.Map;
public
interface
ThirdFeign
{
@RequestMapping
(
value
=
"/sms/app/unauth/send"
,
method
=
RequestMethod
.
GET
)
public
JSONObject
send
(
@RequestParam
(
value
=
"phone"
)
String
phone
);
@RequestMapping
(
value
=
"/sms/app/unauth/sendCode"
,
method
=
RequestMethod
.
GET
)
//发送短信模板消息
public
JSONObject
sendCode
(
@RequestParam
(
"phone"
)
String
phone
,
@RequestParam
(
"code"
)
String
code
,
@RequestParam
(
"templateCode"
)
String
templateCode
);
@RequestMapping
(
value
=
"/file/app/unauth/uploadFiles"
,
method
=
RequestMethod
.
POST
)
public
JSONObject
uploadFiles
(
@RequestParam
(
"files"
)
MultipartFile
[]
files
);
public
JSONObject
uploadFiles
(
@RequestParam
(
value
=
"files"
)
MultipartFile
[]
files
);
@RequestMapping
(
value
=
"/pay/app/wx"
,
method
=
RequestMethod
.
POST
)
public
JSONObject
wx
(
@RequestBody
OrderPayVo
orderPayVo
);
@RequestMapping
(
value
=
"/refund/app/wx"
,
method
=
RequestMethod
.
POST
)
...
...
@@ -61,9 +63,18 @@ public interface ThirdFeign {
// @GetMapping(value = "/dictionary/getParents")
@RequestMapping
(
value
=
"/dictionary/getParents"
,
method
=
RequestMethod
.
GET
)
public
ObjectRestResponse
<
List
<
Dictionary
>>
dictionaryGetParent
(
@RequestParam
String
type
);
public
ObjectRestResponse
<
List
<
Dictionary
>>
dictionaryGetParent
(
@RequestParam
(
value
=
"type"
)
String
type
);
// @GetMapping(value = "/dictionary/get")
@RequestMapping
(
value
=
"/dictionary/get"
,
method
=
RequestMethod
.
GET
)
public
ObjectRestResponse
<
List
<
Dictionary
>>
dictionaryGet
(
@RequestParam
Map
<
String
,
Object
>
dictionary
);
public
ObjectRestResponse
<
List
<
Dictionary
>>
dictionaryGet
(
@RequestParam
(
value
=
"dictionary"
)
Map
<
String
,
Object
>
dictionary
);
@RequestMapping
(
value
=
"/dictionary/getAll4Map"
,
method
=
RequestMethod
.
GET
)
public
ObjectRestResponse
<
Map
<
String
,
Dictionary
>>
dictionaryGetAll4Map
();
/***************************************** 违章 ********************************************/
@GetMapping
(
"/3p/tv/getRentViolation"
)
public
ObjectRestResponse
<
List
<
ViolationVO
>>
getRentViolation
(
@RequestParam
(
value
=
"rentViolationDTO"
)
Map
<
String
,
Object
>
rentViolationDTO
);
}
xx-universal/xx-universal-api/src/main/java/com/xxfc/platform/universal/msg/CustomIllegalParamException.java
0 → 100644
View file @
4dfba9b0
package
com
.
xxfc
.
platform
.
universal
.
msg
;
public
class
CustomIllegalParamException
extends
RuntimeException
{
public
CustomIllegalParamException
(
String
msg
){
super
(
msg
);
}
}
xx-universal/xx-universal-api/src/main/java/com/xxfc/platform/universal/vo/RentViolationDTO.java
0 → 100644
View file @
4dfba9b0
package
com
.
xxfc
.
platform
.
universal
.
vo
;
import
lombok.Data
;
import
java.math.BigDecimal
;
@Data
public
class
RentViolationDTO
{
String
vehicleId
;
Long
startTime
;
Long
endTime
;
}
xx-universal/xx-universal-api/src/main/java/com/xxfc/platform/universal/vo/ViolationVO.java
0 → 100644
View file @
4dfba9b0
package
com
.
xxfc
.
platform
.
universal
.
vo
;
import
lombok.Data
;
import
java.math.BigDecimal
;
@Data
public
class
ViolationVO
{
BigDecimal
price
;
}
xx-universal/xx-universal-server/pom.xml
View file @
4dfba9b0
...
...
@@ -18,6 +18,12 @@
<version>
2.0-SNAPSHOT
</version>
<scope>
compile
</scope>
</dependency>
<dependency>
<groupId>
com.xxfc.platform
</groupId>
<artifactId>
xx-vehicle-api
</artifactId>
<version>
2.0-SNAPSHOT
</version>
<scope>
compile
</scope>
</dependency>
<dependency>
<groupId>
com.aliyun
</groupId>
<artifactId>
aliyun-java-sdk-core
</artifactId>
...
...
xx-universal/xx-universal-server/src/main/java/com/xxfc/platform/universal/UniversalApplication.java
View file @
4dfba9b0
...
...
@@ -8,6 +8,7 @@ import org.springframework.boot.SpringApplication;
import
org.springframework.boot.autoconfigure.SpringBootApplication
;
import
org.springframework.cloud.client.discovery.EnableDiscoveryClient
;
import
org.springframework.cloud.openfeign.EnableFeignClients
;
import
org.springframework.scheduling.annotation.EnableScheduling
;
import
org.springframework.transaction.annotation.EnableTransactionManagement
;
@SpringBootApplication
(
scanBasePackages
=
{
...
...
@@ -16,6 +17,7 @@ import org.springframework.transaction.annotation.EnableTransactionManagement;
})
@EnableDiscoveryClient
@EnableAceAuthClient
@EnableScheduling
@EnableAceCache
@EnableTransactionManagement
@tk
.
mybatis
.
spring
.
annotation
.
MapperScan
(
basePackages
=
"com.xxfc.platform.universal.mapper"
)
...
...
xx-universal/xx-universal-server/src/main/java/com/xxfc/platform/universal/biz/DictionaryBiz.java
View file @
4dfba9b0
...
...
@@ -12,10 +12,9 @@ import lombok.extern.slf4j.Slf4j;
import
org.springframework.stereotype.Service
;
import
org.springframework.util.StringUtils
;
import
java.util.ArrayList
;
import
java.util.HashSet
;
import
java.util.List
;
import
java.util.Set
;
import
java.util.*
;
import
java.util.function.Function
;
import
java.util.stream.Collectors
;
@Service
@Slf4j
...
...
@@ -83,6 +82,11 @@ public class DictionaryBiz extends BaseBiz<DictionaryMapper, Dictionary> {
if
(
StringUtils
.
isEmpty
(
type
))
{
return
ObjectRestResponse
.
paramIsEmpty
();
}
List
<
Dictionary
>
dictionaryList
=
getParentCommon
(
type
);
return
ObjectRestResponse
.
succ
(
dictionaryList
);
}
private
List
<
Dictionary
>
getParentCommon
(
String
type
)
{
Dictionary
dictionary
=
new
Dictionary
();
dictionary
.
setType
(
type
);
dictionary
.
setPid
(
0
);
...
...
@@ -91,10 +95,19 @@ public class DictionaryBiz extends BaseBiz<DictionaryMapper, Dictionary> {
Set
<
Dictionary
>
dictionaryVoList
=
buildTree
(
parent
.
getId
());
parent
.
setChildrens
(
dictionaryVoList
);
}
return
ObjectRestResponse
.
succ
(
dictionaryList
)
;
return
dictionaryList
;
}
public
Map
<
String
,
Dictionary
>
getAll4Map
(){
// List<Dictionary> dictionaries = this.getParentCommon(null);
List
<
Dictionary
>
dictionaries
=
selectListAll
();
Map
<
String
,
Dictionary
>
dictionaryMap
=
dictionaries
.
parallelStream
().
collect
(
Collectors
.
toMap
(
dic
->
dic
.
getType
()+
"_"
+
dic
.
getCode
()
,
Function
.
identity
(),
(
oldValue
,
newValue
)
->
newValue
));
dictionaryMap
.
forEach
((
k
,
v
)
->
{
v
.
setChildrens
(
buildTree
(
v
.
getId
()));
});
return
dictionaryMap
;
}
public
DictionaryVo
buidTree
(
Dictionary
dictionary
)
{
DictionaryVo
dictionaryVo
=
new
DictionaryVo
();
...
...
xx-universal/xx-universal-server/src/main/java/com/xxfc/platform/universal/biz/SysRegionBiz.java
0 → 100644
View file @
4dfba9b0
package
com
.
xxfc
.
platform
.
universal
.
biz
;
import
com.alibaba.fastjson.JSON
;
import
com.alibaba.fastjson.JSONObject
;
import
com.github.wxiaoqi.security.common.biz.BaseBiz
;
import
com.google.common.collect.Lists
;
import
com.xxfc.platform.universal.constant.RedisKey
;
import
com.xxfc.platform.universal.constant.RegionType
;
import
com.xxfc.platform.universal.dto.RegionDTO
;
import
com.xxfc.platform.universal.entity.SysRegion
;
import
com.xxfc.platform.universal.mapper.SysRegionMapper
;
import
com.xxfc.platform.universal.msg.CustomIllegalParamException
;
import
lombok.extern.slf4j.Slf4j
;
import
org.apache.commons.collections.CollectionUtils
;
import
org.apache.commons.lang3.StringUtils
;
import
org.joda.time.DateTime
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.beans.factory.annotation.Qualifier
;
import
org.springframework.core.task.TaskExecutor
;
import
org.springframework.data.redis.core.RedisTemplate
;
import
org.springframework.scheduling.annotation.Scheduled
;
import
org.springframework.stereotype.Service
;
import
tk.mybatis.mapper.entity.Example
;
import
tk.mybatis.mapper.weekend.WeekendSqls
;
import
java.util.List
;
@Service
@Slf4j
public
class
SysRegionBiz
extends
BaseBiz
<
SysRegionMapper
,
SysRegion
>
{
@Autowired
private
RedisTemplate
customRedisTemplate
;
//todo redis需要改为多实例
@Autowired
@Qualifier
(
value
=
"applicationTaskExecutor"
)
private
TaskExecutor
customTaskExecutor
;
/**
* 国家没有父地区,其parentId为0
*/
private
static
final
Long
PARENT_ID_NONE
=
0
l
;
public
List
<
SysRegion
>
getRegionsByCodes
(
List
<
Long
>
ids
){
List
<
String
>
redisCacheKeys
=
Lists
.
newArrayList
();
if
(
CollectionUtils
.
isEmpty
(
ids
)){
throw
new
CustomIllegalParamException
(
"empty id list"
);
}
for
(
Long
id:
ids
){
redisCacheKeys
.
add
(
RedisKey
.
SYS_REGION_CACHE_PREFIX
+
id
);
}
List
<
String
>
cachedRegionStrList
=
customRedisTemplate
.
opsForValue
().
multiGet
(
redisCacheKeys
);
List
<
SysRegion
>
rs
=
Lists
.
newArrayList
();
Boolean
hasCache
=
Boolean
.
TRUE
;
for
(
String
cachedRegionStr:
cachedRegionStrList
){
if
(
StringUtils
.
isBlank
(
cachedRegionStr
)){
hasCache
=
Boolean
.
FALSE
;
continue
;
}
else
{
rs
.
add
(
JSONObject
.
parseObject
(
cachedRegionStr
,
SysRegion
.
class
));
}
}
if
(!
hasCache
){
//从db读
rs
=
mapper
.
getByIdList
(
ids
);
}
return
rs
;
}
//获取相应地区类型对应在id的位数,作为对应parent查找其下地区的redis key组成部分
private
String
getPrefixOfAgencyId
(
Integer
type
,
Long
parentId
){
return
String
.
valueOf
(
parentId
);
}
/**
* 获取对应redis中的hash的key
* @param parentId
* @return
*/
private
String
getCacheRedisKey
(
Long
parentId
){
//获取相应地区类型对应在agencyId的位数
return
RedisKey
.
SYS_REGION_SONS_CACHE_PREFIX
+
parentId
;
}
/**
* 查询对应地区之下的地区
* @param id
* @return
*/
public
List
<
SysRegion
>
getSonRegion
(
Long
id
){
//从缓存中查询
String
redisKey
=
getCacheRedisKey
(
id
);
String
sysRegionListJson
=
String
.
valueOf
(
customRedisTemplate
.
opsForValue
().
get
(
redisKey
));
List
<
SysRegion
>
sysRegions
=
null
;
if
(
StringUtils
.
isNotBlank
(
sysRegionListJson
)){
sysRegions
=
JSONObject
.
parseArray
(
sysRegionListJson
,
SysRegion
.
class
);
}
if
(
CollectionUtils
.
isNotEmpty
(
sysRegions
)){
return
sysRegions
;
}
//不存在则异步开启刷新缓存任务
refreshCacheAsync
();
//从db中查询
return
getSonRegionNoCache
(
id
);
}
public
List
<
SysRegion
>
getSonRegionNoCache
(
Long
parentId
){
//从db中查询
SysRegion
param
=
new
SysRegion
();
param
.
setParentId
(
parentId
);
return
mapper
.
select
(
param
);
}
public
void
refreshCacheAsync
(){
customTaskExecutor
.
execute
(
new
Runnable
()
{
@Override
public
void
run
()
{
refreshCache
();
}
});
}
/**
* 刷新其孩子节点到缓存,并对其孩子迭代执行此操作
* @param parentId
*/
private
void
refreshCacheRegionAndSon
(
Long
parentId
){
List
<
SysRegion
>
sonRegions
=
getSonRegionNoCache
(
parentId
);
//把当前节点的子节点数据缓存
String
redisKey
=
getCacheRedisKey
(
parentId
);
customRedisTemplate
.
opsForValue
().
set
(
redisKey
,
JSON
.
toJSON
(
sonRegions
).
toString
());
log
.
info
(
"完成地区【"
+
parentId
+
"】的子地区数据缓存"
);
if
(
CollectionUtils
.
isEmpty
(
sonRegions
)
||
sonRegions
.
get
(
0
).
getType
().
equals
(
RegionType
.
CITY
.
getCode
())){
return
;
}
for
(
SysRegion
sonRegion:
sonRegions
){
//缓存每个地区
customRedisTemplate
.
opsForValue
().
set
(
RedisKey
.
SYS_REGION_CACHE_PREFIX
+
sonRegion
.
getId
(),
JSON
.
toJSON
(
sonRegion
).
toString
());
refreshCacheRegionAndSon
(
sonRegion
.
getId
());
}
}
/**
* 5分钟内刷新数据到缓存
*/
@Scheduled
(
cron
=
"0 */5 * * * *"
)
//每5分钟刷新一次数据
public
void
refreshCache
(){
String
redisLockKey
=
RedisKey
.
SYS_REGION_REFRESH_LOCK
+(
DateTime
.
now
().
getMinuteOfDay
()/
5
);
//同一日每5分钟只刷新一次
Boolean
suc
=
customRedisTemplate
.
opsForValue
().
setIfAbsent
(
redisLockKey
,
String
.
valueOf
(
DateTime
.
now
().
getMillis
()));
if
(!
suc
){
log
.
info
(
"刷新地区数据:获取乐观锁失败,不执行任务"
);
return
;
}
log
.
info
(
"刷新地区数据任务开始"
);
refreshCacheRegionAndSon
(
PARENT_ID_NONE
);
log
.
info
(
"刷新常量数据任务成功"
);
}
/**
* 5分钟内刷新数据到缓存
*/
public
List
<
SysRegion
>
selectCity
(){
List
<
SysRegion
>
selectByWeekendSql
=
mapper
.
selectByExample
(
new
Example
.
Builder
(
SysRegion
.
class
)
.
where
(
WeekendSqls
.<
SysRegion
>
custom
().
andLike
(
SysRegion:
:
getId
,
"%00"
)
.
andNotLike
(
SysRegion:
:
getId
,
"%0000"
))
.
build
());
return
selectByWeekendSql
;
}
/**
* 通过属性获取省
* @param type
* @return
*/
public
List
<
SysRegion
>
getSysRegionByType
(
Integer
type
){
SysRegion
sysRegion
=
new
SysRegion
();
sysRegion
.
setType
(
type
);
return
mapper
.
select
(
sysRegion
);
}
public
RegionDTO
findRegionByCityName
(
String
city
)
{
return
mapper
.
findByCityName
(
city
);
}
}
xx-universal/xx-universal-server/src/main/java/com/xxfc/platform/universal/config/WebConfiguration.java
View file @
4dfba9b0
...
...
@@ -6,6 +6,8 @@ import com.github.wxiaoqi.security.common.handler.GlobalExceptionHandler;
import
org.springframework.context.annotation.Bean
;
import
org.springframework.context.annotation.Configuration
;
import
org.springframework.context.annotation.Primary
;
import
org.springframework.core.task.TaskExecutor
;
import
org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor
;
import
org.springframework.web.servlet.config.annotation.InterceptorRegistry
;
import
org.springframework.web.servlet.config.annotation.WebMvcConfigurer
;
...
...
@@ -51,4 +53,13 @@ public class WebConfiguration implements WebMvcConfigurer {
Collections
.
addAll
(
list
,
urls
);
return
list
;
}
/* @Bean(name = "customTaskExecutor")
TaskExecutor getTaskExecutor(){
ThreadPoolTaskExecutor threadPoolTaskExecutor = new ThreadPoolTaskExecutor();
threadPoolTaskExecutor.setCorePoolSize(5);// 线程池维护线程的最少数量
threadPoolTaskExecutor.setMaxPoolSize(10);// 线程池维护线程的最大数量
threadPoolTaskExecutor.setQueueCapacity(50);// 缓存队列
return threadPoolTaskExecutor;
}*/
}
xx-universal/xx-universal-server/src/main/java/com/xxfc/platform/universal/controller/DictionaryController.java
View file @
4dfba9b0
...
...
@@ -9,6 +9,7 @@ import org.springframework.beans.factory.annotation.Autowired;
import
org.springframework.web.bind.annotation.*
;
import
java.util.List
;
import
java.util.Map
;
@RestController
@RequestMapping
(
value
=
"dictionary"
)
...
...
@@ -47,4 +48,10 @@ public class DictionaryController {
public
ObjectRestResponse
<
List
<
Dictionary
>>
getParent
(
String
type
)
{
return
dictionaryBiz
.
getParent
(
type
);
}
@GetMapping
(
value
=
"/getAll4Map"
)
@ApiOperation
(
value
=
"获取所有的内容, key为 <type>_<code>"
)
public
ObjectRestResponse
<
Map
<
String
,
Dictionary
>>
getAll4Map
()
{
return
ObjectRestResponse
.
succ
(
dictionaryBiz
.
getAll4Map
());
}
}
xx-universal/xx-universal-server/src/main/java/com/xxfc/platform/universal/controller/SmsController.java
View file @
4dfba9b0
...
...
@@ -33,5 +33,12 @@ public class SmsController {
public
JSONObject
sendSms
(
@RequestParam
(
"phone"
)
String
phone
)
throws
Exception
{
return
smsService
.
smsCode
(
phone
);
}
@RequestMapping
(
value
=
"/app/unauth/sendCode"
,
method
=
RequestMethod
.
GET
)
public
JSONObject
sendCode
(
@RequestParam
(
"phone"
)
String
phone
,
@RequestParam
(
"code"
)
String
code
,
@RequestParam
(
"templateCode"
)
String
templateCode
)
throws
Exception
{
return
smsService
.
smsByCode
(
phone
,
code
,
templateCode
);
}
}
xx-universal/xx-universal-server/src/main/java/com/xxfc/platform/universal/controller/SysRegionController.java
0 → 100644
View file @
4dfba9b0
package
com
.
xxfc
.
platform
.
universal
.
controller
;
import
com.alibaba.fastjson.JSON
;
import
com.alibaba.fastjson.JSONException
;
import
com.github.wxiaoqi.security.auth.client.annotation.IgnoreClientToken
;
import
com.github.wxiaoqi.security.auth.client.annotation.IgnoreUserToken
;
import
com.github.wxiaoqi.security.common.msg.ObjectRestResponse
;
import
com.github.wxiaoqi.security.common.rest.BaseController
;
import
com.xxfc.platform.universal.biz.SysRegionBiz
;
import
com.xxfc.platform.universal.constant.ResCode
;
import
com.xxfc.platform.universal.dto.RegionDTO
;
import
com.xxfc.platform.universal.entity.SysRegion
;
import
com.xxfc.platform.universal.msg.CustomIllegalParamException
;
import
lombok.extern.slf4j.Slf4j
;
import
org.assertj.core.util.Arrays
;
import
org.springframework.web.bind.annotation.*
;
import
tk.mybatis.mapper.entity.Example
;
import
tk.mybatis.mapper.weekend.WeekendSqls
;
import
java.util.List
;
@RestController
@RequestMapping
(
"/sysRegion"
)
@IgnoreClientToken
@Slf4j
public
class
SysRegionController
extends
BaseController
<
SysRegionBiz
,
SysRegion
>
{
/**
* 父类id获取子类对象
* @param id
* @return
*/
@IgnoreUserToken
@RequestMapping
(
value
=
"/sons/{id}"
,
method
=
RequestMethod
.
GET
)
public
ObjectRestResponse
<
List
<
SysRegion
>>
getSonRegion
(
@PathVariable
Long
id
){
return
ObjectRestResponse
.
succ
(
baseBiz
.
getSonRegion
(
id
));
}
/**
* 通过属性获取省
* @param type
* @return
*/
@IgnoreUserToken
@RequestMapping
(
value
=
"/getSonRegionByType/{type}"
,
method
=
RequestMethod
.
GET
)
public
ObjectRestResponse
<
List
<
SysRegion
>>
getSysRegionByType
(
@PathVariable
Integer
type
){
return
ObjectRestResponse
.
succ
(
baseBiz
.
getSysRegionByType
(
type
));
}
@RequestMapping
(
value
=
""
,
method
=
RequestMethod
.
GET
)
public
ObjectRestResponse
<
List
<
SysRegion
>>
getRegion
(
@RequestParam
String
idListJson
){
try
{
List
<
Long
>
ids
=
JSON
.
parseArray
(
idListJson
,
Long
.
class
);
return
ObjectRestResponse
.
succ
(
baseBiz
.
getRegionsByCodes
(
ids
));
}
catch
(
JSONException
ex
)
{
return
ObjectRestResponse
.
createFailedResultMsg
(
ResCode
.
INVALID_REST_REQ_PARAM
.
getCode
());
}
catch
(
CustomIllegalParamException
ex
){
return
ObjectRestResponse
.
createFailedResultMsg
(
ResCode
.
INVALID_REST_REQ_PARAM
.
getCode
());
}
}
/**
* 根据多个id查找省份
* @param ids
* @return
*/
@GetMapping
(
"/getSysRegionByIds/{ids}"
)
public
ObjectRestResponse
getSysRegionByIds
(
@PathVariable
String
ids
){
Example
exam
=
Example
.
builder
(
SysRegion
.
class
)
.
where
(
WeekendSqls
.<
SysRegion
>
custom
()
.
andIn
(
SysRegion:
:
getId
,
Arrays
.
asList
(
ids
.
split
(
","
)))).
build
();
return
ObjectRestResponse
.
succ
(
baseBiz
.
selectByExample
(
exam
));
}
/**
* 通过城市名查询
* @param city
* @return
*/
@GetMapping
(
"/region_name"
)
public
RegionDTO
getRegionByCityName
(
@RequestParam
(
value
=
"city"
)
String
city
){
return
baseBiz
.
findRegionByCityName
(
city
);
}
}
xx-universal/xx-universal-server/src/main/java/com/xxfc/platform/universal/controller/TrafficViolationsController.java
View file @
4dfba9b0
...
...
@@ -3,10 +3,16 @@ package com.xxfc.platform.universal.controller;
import
com.alibaba.fastjson.JSONObject
;
import
com.github.wxiaoqi.security.common.msg.ObjectRestResponse
;
import
com.xxfc.platform.universal.service.TrafficViolationsService
;
import
com.xxfc.platform.universal.vo.RentViolationDTO
;
import
com.xxfc.platform.universal.vo.TrafficViolations
;
import
com.xxfc.platform.universal.vo.ViolationVO
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.web.bind.annotation.*
;
import
java.math.BigDecimal
;
import
java.util.ArrayList
;
import
java.util.List
;
@RestController
@RequestMapping
(
"3p/tv"
)
public
class
TrafficViolationsController
{
...
...
@@ -56,7 +62,13 @@ public class TrafficViolationsController {
}
}
@GetMapping
(
"/getRentViolation"
)
public
ObjectRestResponse
<
List
<
ViolationVO
>>
getRentViolation
(
RentViolationDTO
rentViolationDTO
)
{
return
ObjectRestResponse
.
succ
(
new
ArrayList
<
ViolationVO
>(){{
add
(
new
ViolationVO
(){{
setPrice
(
new
BigDecimal
(
"100.00"
));}});
add
(
new
ViolationVO
(){{
setPrice
(
new
BigDecimal
(
"200.00"
));}});
}});
}
}
xx-universal/xx-universal-server/src/main/java/com/xxfc/platform/universal/mapper/SysRegionMapper.java
0 → 100644
View file @
4dfba9b0
package
com
.
xxfc
.
platform
.
universal
.
mapper
;
import
com.xxfc.platform.universal.dto.RegionDTO
;
import
com.xxfc.platform.universal.entity.SysRegion
;
import
org.springframework.data.repository.query.Param
;
import
tk.mybatis.mapper.common.Mapper
;
import
java.util.List
;
import
java.util.Map
;
public
interface
SysRegionMapper
extends
Mapper
<
SysRegion
>
{
public
List
<
SysRegion
>
getAllByPage
(
Map
<
String
,
Object
>
params
);
public
List
<
SysRegion
>
getByIdList
(
List
<
Long
>
idList
);
//获取地区的编号
public
Integer
getNumber
(
@Param
(
"name"
)
String
name
);
//获取地区的编号
public
Integer
getNumberV2
(
@Param
(
"name"
)
String
name
,
@Param
(
"type"
)
Integer
type
);
RegionDTO
findByCityName
(
String
city
);
}
xx-universal/xx-universal-server/src/main/java/com/xxfc/platform/universal/service/SmsService.java
View file @
4dfba9b0
...
...
@@ -57,6 +57,18 @@ public class SmsService {
}
}
public
JSONObject
smsByCode
(
String
mobile
,
String
pwd
,
String
templateCode
){
try
{
if
(
StringUtils
.
isNotBlank
(
mobile
)){
mobile
=
mobile
.
replace
(
" "
,
""
);
}
sendSmsByStr
(
mobile
,
pwd
,
templateCode
);
return
JsonResultUtil
.
createSuccessResult
();
}
catch
(
ClientException
e
)
{
e
.
printStackTrace
();
return
JsonResultUtil
.
createDefaultFail
();
}
}
public
String
sendSms
(
String
mobile
,
String
code
)
throws
ClientException
{
//可自助调整超时时间
...
...
@@ -93,13 +105,56 @@ public class SmsService {
log
.
info
(
"RequestId="
+
sendSmsResponse
.
getRequestId
());
log
.
info
(
"BizId="
+
sendSmsResponse
.
getBizId
());
if
(
sendSmsResponse
.
getCode
()
!=
null
&&
sendSmsResponse
.
getCode
().
equals
(
"OK"
))
{
//请求成功
return
code
;
//请求成功
return
code
;
}
return
null
;
}
public
boolean
sendSmsByStr
(
String
mobile
,
String
str
,
String
templateCode
)
throws
ClientException
{
//可自助调整超时时间
System
.
setProperty
(
"sun.net.client.defaultConnectTimeout"
,
"10000"
);
System
.
setProperty
(
"sun.net.client.defaultReadTimeout"
,
"10000"
);
//初始化acsClient,暂不支持region化
IClientProfile
profile
=
DefaultProfile
.
getProfile
(
"cn-hangzhou"
,
accessKeyId
,
accessKeySecret
);
DefaultProfile
.
addEndpoint
(
"cn-hangzhou"
,
"cn-hangzhou"
,
product
,
domain
);
IAcsClient
acsClient
=
new
DefaultAcsClient
(
profile
);
//组装请求对象-具体描述见控制台-文档部分内容
SendSmsRequest
request
=
new
SendSmsRequest
();
//必填:待发送手机号
request
.
setPhoneNumbers
(
mobile
);
//必填:短信签名-可在短信控制台中找到
request
.
setSignName
(
SignName
);
//必填:短信模板-可在短信控制台中找到
request
.
setTemplateCode
(
templateCode
);
//可选:模板中的变量替换JSON串,如模板内容为"亲爱的${name},您的验证码为${code}"时,此处的值为
request
.
setTemplateParam
(
TemplateParam
.
replace
(
"str"
,
str
));
//\"name\":\"Tom\",
//选填-上行短信扩展码(无特殊需求用户请忽略此字段)
//request.setSmsUpExtendCode("90997");
//可选:outId为提供给业务方扩展字段,最终在短信回执消息中将此值带回给调用者
//request.setOutId("yourOutId");
//hint 此处可能会抛出异常,注意catch
SendSmsResponse
sendSmsResponse
=
acsClient
.
getAcsResponse
(
request
);
log
.
info
(
"短信接口返回的数据----------------mobile======"
+
mobile
+
"----str===="
+
str
);
log
.
info
(
"Code="
+
sendSmsResponse
.
getCode
());
log
.
info
(
"Message="
+
sendSmsResponse
.
getMessage
());
log
.
info
(
"RequestId="
+
sendSmsResponse
.
getRequestId
());
log
.
info
(
"BizId="
+
sendSmsResponse
.
getBizId
());
if
(
sendSmsResponse
.
getCode
()
!=
null
&&
sendSmsResponse
.
getCode
().
equals
(
"OK"
))
{
//请求成功
return
true
;
}
return
false
;
}
/* public static QuerySendDetailsResponse querySendDetails(String bizId) throws ClientException {
...
...
xx-universal/xx-universal-server/src/main/resources/mapper/SysRegionMapper.xml
0 → 100644
View file @
4dfba9b0
<?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=
"com.xxfc.platform.universal.mapper.SysRegionMapper"
>
<select
id=
"getAllByPage"
parameterType=
"java.util.Map"
resultType=
"com.xxfc.platform.universal.entity.SysRegion"
>
select `id`, parent_id, `name`, `type`, agency_id from sys_region limit #{pageStart},${pageSize}
</select>
<select
id=
"getByIdList"
parameterType=
"java.util.List"
resultType=
"com.xxfc.platform.universal.entity.SysRegion"
>
select `id`, parent_id, `name`, `type`, agency_id from sys_region where id in
<foreach
collection=
"list"
index=
"i"
item=
"item"
open=
"("
close=
")"
separator=
","
>
#{item}
</foreach>
</select>
<select
id=
"getNumber"
resultType=
"Integer"
>
select `id` from sys_region where name like CONCAT('%',#{name},'%') limit 1
</select>
<select
id=
"getNumberV2"
resultType=
"Integer"
>
select `id` from sys_region where name like CONCAT('%',#{name},'%') and type=#{type} limit 1
</select>
<select
id=
"findByCityName"
resultType=
"com.xxfc.platform.universal.dto.RegionDTO"
>
select `id`,`parent_id` as `parentId` from `sys_region` where `type`=2 and `name` like concat('%',#{city} ,'%')
</select>
</mapper>
\ No newline at end of file
xx-vehicle/xx-vehicle-api/src/main/java/com/xxfc/platform/vehicle/constant/ResCode/ResCode.java
View file @
4dfba9b0
...
...
@@ -12,9 +12,12 @@ public enum ResCode {
VEHICLE_BOOKED_INFO_ALREADY_CHANGED
(
101001
,
"车辆预定信息已更改,请刷新后继续操作"
),
//车辆信息相关返回码-车辆信息
VEHICLE_INFO_SAME_NUM_PLATE_EXISTS
(
102001
,
"该车牌
车辆
已经存在"
),
VEHICLE_INFO_SAME_NUM_PLATE_EXISTS
(
102001
,
"该车牌已经存在"
),
VEHICLE_INFO_BRANCH_NOT_EXIST
(
102002
,
"分公司信息非法"
),
VEHICLE_INFO_CODE_EXIST
(
102003
,
"车辆编码已存在"
),
VEHICLE_INFO_SAME_NUM_PLATE_AND_CODE_EMPTY
(
102004
,
"车辆编码和车牌号为空"
),
VEHICLE_INFO_SAME_NUM_PLATE_AND_CODE_EXIST
(
102004
,
"车辆编码或车牌号已存在"
),
//车辆信息相关返回码-预定申请信息
VEHICLE_BOOKED_RECORD_ALREADY_CHANGED
(
103001
,
"车辆预定申请已被审批,请刷新后继续操作"
),
...
...
xx-vehicle/xx-vehicle-api/src/main/java/com/xxfc/platform/vehicle/entity/Vehicle.java
View file @
4dfba9b0
...
...
@@ -127,9 +127,11 @@ public class Vehicle {
* 最后更新里程数
*/
private
Integer
mileageLastUpdate
;
/**
* 停车分公司
id
* 停车分公司
(id)
*/
@Column
(
name
=
"park_branch_company_id"
)
private
Integer
parkBranchCompanyId
;
/**
* 预计目的地分公司id
...
...
xx-vehicle/xx-vehicle-api/src/main/java/com/xxfc/platform/vehicle/feign/VehicleFeign.java
View file @
4dfba9b0
...
...
@@ -37,10 +37,16 @@ public interface VehicleFeign {
@RequestMapping
(
value
=
"/branchCompany/app/unauth/detail/{id}"
,
method
=
RequestMethod
.
GET
)
public
ObjectRestResponse
<
CompanyDetail
>
getCompanyDetail
(
@PathVariable
Integer
id
);
@RequestMapping
(
value
=
"/unbook/4employee/{bookRecordId}"
,
method
=
RequestMethod
.
DELETE
)
//拒绝预约
@RequestMapping
(
value
=
"/vehicleInfo/book/4employee/reject/{bookRecordId}"
,
method
=
RequestMethod
.
PUT
)
public
RestResponse
<
Integer
>
rejectVehicleBooking
(
@PathVariable
Long
bookRecordId
);
//取消预约
@RequestMapping
(
value
=
"/vehicleInfo/unbook/4employee/{bookRecordId}"
,
method
=
RequestMethod
.
DELETE
)
public
RestResponse
<
Integer
>
unbookVehicle
(
@PathVariable
Long
bookRecordId
);
@RequestMapping
(
value
=
"/book/4employee/prove/{bookRecordId}"
,
method
=
RequestMethod
.
PUT
)
//通过预约
@RequestMapping
(
value
=
"/vehicleInfo/book/4employee/prove/{bookRecordId}"
,
method
=
RequestMethod
.
PUT
)
public
RestResponse
<
Integer
>
proveVehicleBooking
(
@PathVariable
Long
bookRecordId
);
//获取分公司列表
...
...
xx-vehicle/xx-vehicle-api/src/main/java/com/xxfc/platform/vehicle/pojo/AddOrUpdateVehicleVo.java
View file @
4dfba9b0
...
...
@@ -41,6 +41,13 @@ public class AddOrUpdateVehicleVo {
@Column
(
name
=
"subordinate_branch"
)
private
Integer
subordinateBranch
;
/**
* 停车分公司(id)
*/
@Column
(
name
=
"park_branch_company_id"
)
private
Integer
parkBranchCompanyId
;
/**
* 用途类型:租赁房车(1)、展车等,对应关系见车辆常量表
*/
...
...
xx-vehicle/xx-vehicle-api/src/main/java/com/xxfc/platform/vehicle/pojo/QueryVehicleVo.java
View file @
4dfba9b0
...
...
@@ -40,6 +40,24 @@ public class QueryVehicleVo {
*/
private
String
subBranchName
;
/**
* 停靠分支机构(id)
*/
private
Integer
parkBranchCompanyId
;
/**
* 停靠分支机构(名称)
*/
private
String
parkBranchCompanyName
;
/**
* 目的地分支机构(id)
*/
private
Integer
expectDestinationBranchCompanyId
;
/**
* 目的地分支机构(名称)
*/
private
String
expectDestinationBranchCompanyName
;
/**
* 用途类型:租赁房车(1)、展车等,对应关系见车辆常量表
*/
...
...
xx-vehicle/xx-vehicle-api/src/main/java/com/xxfc/platform/vehicle/pojo/ResultVehicleVo.java
0 → 100644
View file @
4dfba9b0
package
com
.
xxfc
.
platform
.
vehicle
.
pojo
;
import
lombok.Data
;
import
java.util.Date
;
@Data
public
class
ResultVehicleVo
{
/**
* 主键(uuid)
*/
private
String
id
;
/**
* 车辆编号,0-没有
*/
private
Integer
code
;
/**
* 车辆状态: 1-正常运行 2-维修 3-报废
*/
private
Integer
status
;
/**
* 车牌号,空字符串-没有
*/
private
String
numberPlate
;
/**
* 品牌(编码,对应关系见相关常量),0-未填写
*/
private
Integer
brand
;
/**
* 所属分支机构(id)
*/
private
Integer
subordinateBranch
;
/**
* 所属分支机构(名称)
*/
private
String
subBranchName
;
/**
* 停靠分支机构(id)
*/
private
Integer
parkBranchCompanyId
;
/**
* 停靠分支机构(名称)
*/
private
String
parkBranchCompanyName
;
/**
* 目的地分支机构(id)
*/
private
Integer
expectDestinationBranchCompanyId
;
/**
* 目的地分支机构(名称)
*/
private
String
expectDestinationBranchCompanyName
;
/**
* 用途类型:租赁房车(1)、展车等,对应关系见车辆常量表
*/
private
Integer
useType
;
/**
* 备注信息
*/
private
String
remark
;
private
Date
createTime
;
private
Date
updateTime
;
/**
* 车架号
*/
private
String
vin
;
/**
* 保险公司,见常量表
*/
private
Integer
insuranceCompany
;
/**
* 保险单号
*/
private
String
insuranceNo
;
/**
* 保险开始时间
*/
private
Date
insuranceStartDate
;
/**
* 保险结束时间
*/
private
Date
insuranceEndDate
;
/**
* 年审时间
*/
private
Date
annualVerificationDate
;
/**
* 保养时间
*/
private
Date
maintenanceDate
;
/**
* 保养公里
*/
private
Integer
mileage
;
/**
* 保养里程数
*/
private
Integer
maintenanceMileage
;
/**
* 车辆所属人-类型
*/
private
Integer
belongTo
;
/**
* 所属人 名称
*/
private
String
belongToName
;
/**
* 行驶证路径
*/
private
String
drivingLicensePath
;
/**
* 发动机号
*/
private
String
engineNum
;
/**
* 生产商
*/
private
String
manufacturer
;
/**
* 收车时间
*/
private
Date
receiveTime
;
}
\ No newline at end of file
xx-vehicle/xx-vehicle-api/src/main/java/com/xxfc/platform/vehicle/pojo/VehiclePageQueryVo.java
View file @
4dfba9b0
...
...
@@ -32,11 +32,11 @@ public class VehiclePageQueryVo {
*/
private
Integer
subordinateBranch
;
/**
* 所属
分支机构
(id)
* 所属
省份
(id)
*/
private
Integer
addrProvince
;
/**
* 所属
分支机构
(id)
* 所属
市区
(id)
*/
private
Integer
addrCity
;
...
...
xx-vehicle/xx-vehicle-server/src/main/java/com/xxfc/platform/vehicle/biz/VehicleBiz.java
View file @
4dfba9b0
...
...
@@ -199,18 +199,27 @@ public class VehicleBiz extends BaseBiz<VehicleMapper, Vehicle> {
}
for
(
AddOrUpdateVehicleVo
addOrUpdateVehicleVo:
addOrUpdateVehicleVoList
)
{
Vehicle
vehicle
=
new
Vehicle
();
BeanUtils
.
copyProperties
(
vehicle
,
addOrUpdateVehicleVo
);
BeanUtilsBean
.
getInstance
().
copyProperties
(
vehicle
,
addOrUpdateVehicleVo
);
if
(
addOrUpdateVehicleVo
.
getParkBranchCompanyId
()==
null
)
{
throw
new
CustomIllegalParamException
(
"Stop at branch office cannot be empty"
);
}
vehicle
.
setId
(
UUID
.
randomUUID
().
toString
());
// 检查车牌或者编码是否已存在,已存在则返回失败
List
<
Vehicle
>
exitsVehicles
=
lockByCode
(
addOrUpdateVehicleVo
);
if
(
CollectionUtils
.
isNotEmpty
(
exitsVehicles
)){
if
(
addOrUpdateVehicleVo
.
getCode
()!=
null
&&
addOrUpdateVehicleVo
.
getCode
().
equals
(
exitsVehicles
.
get
(
0
).
getCode
())){
return
RestResponse
.
code
(
ResCode
.
VEHICLE_INFO_CODE_EXIST
.
getCode
());
}
else
{
return
RestResponse
.
code
(
ResCode
.
VEHICLE_INFO_SAME_NUM_PLATE_EXISTS
.
getCode
());
}
return
RestResponse
.
codeAndMessage
(
ResCode
.
VEHICLE_INFO_SAME_NUM_PLATE_EXISTS
.
getCode
(),
ResCode
.
VEHICLE_INFO_SAME_NUM_PLATE_EXISTS
.
getDesc
());
// if(addOrUpdateVehicleVo.getCode()!= null &&
// addOrUpdateVehicleVo.getCode().equals(exitsVehicles.get(0).getCode())){
// return RestResponse.code(ResCode.VEHICLE_INFO_CODE_EXIST.getCode());
// }else{
// return RestResponse.code(ResCode.VEHICLE_INFO_SAME_NUM_PLATE_EXISTS.getCode());
// }
}
mapper
.
insertSelective
(
vehicle
);
}
...
...
@@ -223,9 +232,13 @@ public class VehicleBiz extends BaseBiz<VehicleMapper, Vehicle> {
* @param addOrUpdateVehicleVo
* @return 锁定成功返回
*/
private
List
<
Vehicle
>
lockByCode
(
AddOrUpdateVehicleVo
addOrUpdateVehicleVo
){
if
(
addOrUpdateVehicleVo
.
getCode
()
==
null
){
return
null
;
private
List
<
Vehicle
>
lockByCode
(
AddOrUpdateVehicleVo
addOrUpdateVehicleVo
)
throws
CustomIllegalParamException
{
// if(addOrUpdateVehicleVo.getCode() == null){
// return null;
// }
if
(
addOrUpdateVehicleVo
.
getNumberPlate
()
==
null
){
throw
new
CustomIllegalParamException
(
"Without a license plate number"
);
}
List
<
Vehicle
>
vehicles
=
mapper
.
lockByCode
(
addOrUpdateVehicleVo
);
return
vehicles
;
...
...
@@ -244,7 +257,11 @@ public class VehicleBiz extends BaseBiz<VehicleMapper, Vehicle> {
for
(
AddOrUpdateVehicleVo
addOrUpdateVehicleVo:
addOrUpdateVehicleVoList
){
Vehicle
vehicle
=
new
Vehicle
();
BeanUtils
.
copyProperties
(
vehicle
,
addOrUpdateVehicleVo
);
BeanUtilsBean
.
getInstance
().
copyProperties
(
vehicle
,
addOrUpdateVehicleVo
);
if
(
addOrUpdateVehicleVo
.
getParkBranchCompanyId
()==
null
)
{
throw
new
CustomIllegalParamException
(
"Stop at branch office cannot be empty"
);
}
//悲观锁,检查是否已存在车牌或编码
List
<
Vehicle
>
exitsVehicles
=
lockByCode
(
addOrUpdateVehicleVo
);
if
(
CollectionUtils
.
isNotEmpty
(
exitsVehicles
)){
...
...
@@ -252,12 +269,15 @@ public class VehicleBiz extends BaseBiz<VehicleMapper, Vehicle> {
if
(
exitsVehicle
.
getId
().
equals
(
addOrUpdateVehicleVo
.
getId
())){
continue
;
}
if
(
addOrUpdateVehicleVo
.
getCode
()!=
null
&&
addOrUpdateVehicleVo
.
getCode
().
equals
(
exitsVehicles
.
get
(
0
).
getCode
())){
return
RestResponse
.
code
(
ResCode
.
VEHICLE_INFO_CODE_EXIST
.
getCode
());
}
else
{
return
RestResponse
.
code
(
ResCode
.
VEHICLE_INFO_SAME_NUM_PLATE_EXISTS
.
getCode
());
}
return
RestResponse
.
codeAndMessage
(
ResCode
.
VEHICLE_INFO_SAME_NUM_PLATE_EXISTS
.
getCode
(),
ResCode
.
VEHICLE_INFO_SAME_NUM_PLATE_EXISTS
.
getDesc
());
// if(addOrUpdateVehicleVo.getCode()!= null &&
// addOrUpdateVehicleVo.getCode().equals(exitsVehicles.get(0).getCode())){
// return RestResponse.code(ResCode.VEHICLE_INFO_CODE_EXIST.getCode());
// }else{
// return RestResponse.code(ResCode.VEHICLE_INFO_SAME_NUM_PLATE_EXISTS.getCode());
// }
}
}
mapper
.
updateByPrimaryKeySelective
(
vehicle
);
...
...
@@ -429,6 +449,11 @@ public class VehicleBiz extends BaseBiz<VehicleMapper, Vehicle> {
if
(
effected
==
0
){
//修改失败,手动回滚
TransactionAspectSupport
.
currentTransactionStatus
().
setRollbackOnly
();
//手动回滚
return
RestResponse
.
code
(
ResCode
.
VEHICLE_BOOKED_RECORD_ALREADY_CHANGED
.
getCode
());
}
else
if
(
VehicleBookRecordStatus
.
REJECTED
.
getCode
().
equals
(
rsStatus
)){
//拒绝,则释放bookinfo
bookVehicleVo
.
setUnbookStartDate
(
bookVehicleVo
.
getBookStartDate
());
bookVehicleVo
.
setUnbookEndDate
(
bookVehicleVo
.
getBookEndDate
());
Boolean
hasSuc
=
unbookVehicle
(
bookVehicleVo
);
}
return
RestResponse
.
suc
();
}
...
...
@@ -625,7 +650,7 @@ public class VehicleBiz extends BaseBiz<VehicleMapper, Vehicle> {
}
/**
* 取消预定
* 取消预定
(释放bookinfo)
* @return
*/
@Transactional
...
...
@@ -836,7 +861,7 @@ public class VehicleBiz extends BaseBiz<VehicleMapper, Vehicle> {
* @return
* @throws Exception
*/
public
PageDataVO
<
Query
VehicleVo
>
getByPage
(
VehiclePageQueryVo
vehiclePageQueryVo
)
throws
Exception
{
public
PageDataVO
<
Result
VehicleVo
>
getByPage
(
VehiclePageQueryVo
vehiclePageQueryVo
)
throws
Exception
{
Map
<
String
,
Object
>
params
=
PropertyUtils
.
describe
(
vehiclePageQueryVo
);
Integer
pageSize
=
(
Integer
)
params
.
get
(
"limit"
);
params
.
remove
(
"pageSize"
);
...
...
@@ -846,8 +871,8 @@ public class VehicleBiz extends BaseBiz<VehicleMapper, Vehicle> {
adjustBookedInfoParam
(
params
,
vehiclePageQueryVo
);
params
.
get
(
"yearMonthAndParam"
);
PageHelper
.
startPage
(
pageNo
,
pageSize
);
List
<
Query
VehicleVo
>
vehicles
=
mapper
.
getByPage
(
params
);
PageInfo
<
Query
VehicleVo
>
vehiclePageInfo
=
new
PageInfo
<>(
vehicles
);
List
<
Result
VehicleVo
>
vehicles
=
mapper
.
getByPage
(
params
);
PageInfo
<
Result
VehicleVo
>
vehiclePageInfo
=
new
PageInfo
<>(
vehicles
);
return
PageDataVO
.
pageInfo
(
vehiclePageInfo
);
}
/**
...
...
@@ -856,7 +881,7 @@ public class VehicleBiz extends BaseBiz<VehicleMapper, Vehicle> {
* @return
* @throws Exception
*/
public
PageDataVO
<
Query
VehicleVo
>
getByPageNotAllData
(
VehiclePageQueryVo
vehiclePageQueryVo
,
List
<
Integer
>
companyList
)
throws
Exception
{
public
PageDataVO
<
Result
VehicleVo
>
getByPageNotAllData
(
VehiclePageQueryVo
vehiclePageQueryVo
,
List
<
Integer
>
companyList
)
throws
Exception
{
Map
<
String
,
Object
>
params
=
PropertyUtils
.
describe
(
vehiclePageQueryVo
);
Integer
pageSize
=
(
Integer
)
params
.
get
(
"limit"
);
params
.
remove
(
"pageSize"
);
...
...
@@ -870,8 +895,8 @@ public class VehicleBiz extends BaseBiz<VehicleMapper, Vehicle> {
params
.
put
(
"companyList"
,
Arrays
.
asList
(-
1
));
}
PageHelper
.
startPage
(
pageNo
,
pageSize
);
List
<
Query
VehicleVo
>
vehicles
=
mapper
.
getByPageNotAllData
(
params
);
PageInfo
<
Query
VehicleVo
>
vehiclePageInfo
=
new
PageInfo
<>(
vehicles
);
List
<
Result
VehicleVo
>
vehicles
=
mapper
.
getByPageNotAllData
(
params
);
PageInfo
<
Result
VehicleVo
>
vehiclePageInfo
=
new
PageInfo
<>(
vehicles
);
return
PageDataVO
.
pageInfo
(
vehiclePageInfo
);
}
...
...
xx-vehicle/xx-vehicle-server/src/main/java/com/xxfc/platform/vehicle/biz/VehicleModelBiz.java
View file @
4dfba9b0
...
...
@@ -10,6 +10,8 @@ import org.springframework.stereotype.Service;
import
com.xxfc.platform.vehicle.entity.VehicleModel
;
import
com.xxfc.platform.vehicle.mapper.VehicleModelMapper
;
import
com.github.wxiaoqi.security.common.biz.BaseBiz
;
import
org.springframework.transaction.annotation.Transactional
;
import
org.springframework.transaction.interceptor.TransactionAspectSupport
;
import
java.util.List
;
import
java.util.stream.Collectors
;
...
...
@@ -45,6 +47,9 @@ public class VehicleModelBiz extends BaseBiz<VehicleModelMapper, VehicleModel> {
PageDataVO
<
VehicleModelVo
>
mPageDataVO
=
PageDataVO
.
pageInfo
(
vmqc
.
getPage
(),
vmqc
.
getLimit
(),
()
->
mapper
.
findVehicleModelPage
(
vmqc
));
// List<VehicleModelVo> vehicleModelVos = mPageDataVO.getData();
// vehicleModelVos.parallelStream().forEach(vehicleModelVo -> vehicleModelVo.setPicture(vehicleModelVo.getPicture().split(",")[0]));
return
ObjectRestResponse
.
succ
(
mPageDataVO
);
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
...
...
@@ -53,13 +58,14 @@ public class VehicleModelBiz extends BaseBiz<VehicleModelMapper, VehicleModel> {
}
@Transactional
public
Integer
insertAndGetId
(
VehicleModel
vm
)
{
try
{
mapper
.
insertSelective
(
vm
);
return
vm
.
getId
();
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
TransactionAspectSupport
.
currentTransactionStatus
().
setRollbackOnly
();
}
return
null
;
...
...
xx-vehicle/xx-vehicle-server/src/main/java/com/xxfc/platform/vehicle/biz/VehiclePlatCataBiz.java
View file @
4dfba9b0
This diff is collapsed.
Click to expand it.
xx-vehicle/xx-vehicle-server/src/main/java/com/xxfc/platform/vehicle/mapper/VehicleMapper.java
View file @
4dfba9b0
...
...
@@ -11,9 +11,9 @@ import java.util.Map;
public
interface
VehicleMapper
extends
Mapper
<
Vehicle
>
{
public
List
<
Query
VehicleVo
>
getByPage
(
Map
<
String
,
Object
>
params
);
public
List
<
Result
VehicleVo
>
getByPage
(
Map
<
String
,
Object
>
params
);
public
List
<
Query
VehicleVo
>
getByPageNotAllData
(
Map
<
String
,
Object
>
params
);
public
List
<
Result
VehicleVo
>
getByPageNotAllData
(
Map
<
String
,
Object
>
params
);
public
int
updateStatusById
(
Map
<
String
,
Object
>
params
);
...
...
xx-vehicle/xx-vehicle-server/src/main/java/com/xxfc/platform/vehicle/rest/VehicleController.java
View file @
4dfba9b0
...
...
@@ -42,10 +42,7 @@ import org.springframework.web.multipart.MultipartFile;
import
tk.mybatis.mapper.entity.Example
;
import
tk.mybatis.mapper.weekend.WeekendSqls
;
import
java.util.ArrayList
;
import
java.util.HashMap
;
import
java.util.List
;
import
java.util.Map
;
import
java.util.*
;
import
java.util.regex.Pattern
;
import
java.util.stream.Collectors
;
...
...
@@ -121,7 +118,7 @@ public class VehicleController extends BaseController<VehicleBiz> {
}
@RequestMapping
(
value
=
"/page"
,
method
=
RequestMethod
.
GET
)
public
RestResponse
<
PageDataVO
<
Query
VehicleVo
>>
getByPage
(
@RequestParam
String
vehiclePageQueryVoJson
)
throws
Exception
{
public
RestResponse
<
PageDataVO
<
Result
VehicleVo
>>
getByPage
(
@RequestParam
String
vehiclePageQueryVoJson
)
throws
Exception
{
VehiclePageQueryVo
vehiclePageQueryVo
=
null
;
try
{
vehiclePageQueryVo
=
JSON
.
parseObject
(
vehiclePageQueryVoJson
,
VehiclePageQueryVo
.
class
);
...
...
@@ -144,7 +141,7 @@ public class VehicleController extends BaseController<VehicleBiz> {
@RequestMapping
(
value
=
"/small/page"
,
method
=
RequestMethod
.
GET
)
@IgnoreUserToken
public
RestResponse
<
PageDataVO
<
Query
VehicleVo
>>
getByPageBySmall
(
@RequestParam
String
vehiclePageQueryVoJson
,
@RequestParam
Integer
uid
)
throws
Exception
{
public
RestResponse
<
PageDataVO
<
Result
VehicleVo
>>
getByPageBySmall
(
@RequestParam
String
vehiclePageQueryVoJson
,
@RequestParam
Integer
uid
)
throws
Exception
{
VehiclePageQueryVo
vehiclePageQueryVo
=
null
;
try
{
vehiclePageQueryVo
=
JSON
.
parseObject
(
vehiclePageQueryVoJson
,
VehiclePageQueryVo
.
class
);
...
...
@@ -401,8 +398,8 @@ public class VehicleController extends BaseController<VehicleBiz> {
//查询可车辆信息
PageDataVO
<
Vehicle
>
pageDataVO
=
vehicleBiz
.
searchUsableVehicle
(
dto
);
if
(
pageDataVO
.
getData
().
size
()
<=
0
)
{
throw
new
BaseException
(
ResultCode
.
NOTEXIST_CODE
,
new
Hash
Map
<
String
,
Object
>(){{
put
(
"可用车辆"
,
"
不存在"
);
throw
new
BaseException
(
ResultCode
.
NOTEXIST_CODE
,
new
Hash
Set
<
String
>(){{
add
(
"可用车辆
不存在"
);
}});
}
bookVehicleVo
.
setVehicleId
(
pageDataVO
.
getData
().
get
(
0
).
getId
());
...
...
xx-vehicle/xx-vehicle-server/src/main/java/com/xxfc/platform/vehicle/rest/VehicleModelController.java
View file @
4dfba9b0
...
...
@@ -104,6 +104,9 @@ public class VehicleModelController extends BaseController<VehicleModelBiz, Vehi
//
// }
// }
if
(
vmqc
.
getIsDel
()==
null
)
{
vmqc
.
setIsDel
(
0
);
}
if
(
vmqc
==
null
||
vmqc
.
getPage
()
==
null
||
vmqc
.
getLimit
()
==
null
||
vmqc
.
getPage
()
<
0
||
vmqc
.
getLimit
()
<=
0
)
{
...
...
xx-vehicle/xx-vehicle-server/src/main/resources/mapper/VehicleMapper.xml
View file @
4dfba9b0
...
...
@@ -30,15 +30,21 @@
<select
id=
"getByPage"
parameterType=
"java.util.Map"
resultType=
"com.xxfc.platform.vehicle.pojo.
Query
VehicleVo"
>
resultType=
"com.xxfc.platform.vehicle.pojo.
Result
VehicleVo"
>
SELECT r.* FROM (
select DISTINCT v.`id`,
v.`code`,
v.`status`,
v.number_plate,
v.brand,
IFNULL(v.park_branch_company_id,v.expect_destination_branch_company_id) AS subordinate_branch,
IFNULL(bc.name,bc1.name) AS subBranchName,
-- IFNULL(v.park_branch_company_id,v.expect_destination_branch_company_id) AS subordinate_branch,
-- IFNULL(bc.name,bc1.name) AS subBranchName,
v.park_branch_company_id,
bc.name as parkBranchCompanyName,
v.expect_destination_branch_company_id,
bc1.name as expectDestinationBranchCompanyName,
v.subordinate_branch,
bc2.name as subBranchName,
v.use_type,
v.remark,
v.create_time,
...
...
@@ -66,8 +72,14 @@
left join
vehicle_book_info vbi on v.`id` = vbi.vehicle
</if>
-- LEFT JOIN branch_company bc ON v.park_branch_company_id = bc.id
-- LEFT JOIN branch_company bc1 ON v.expect_destination_branch_company_id = bc1.id
-- 停车分公司
LEFT JOIN branch_company bc ON v.park_branch_company_id = bc.id
-- 目的地分公司
LEFT JOIN branch_company bc1 ON v.expect_destination_branch_company_id = bc1.id
-- 所属分公司
LEFT JOIN branch_company bc2 ON v.subordinate_branch = bc2.id
where
v.is_del=0
<if
test=
"mRangeDateEnd !=null"
>
...
...
@@ -94,9 +106,9 @@
<if
test=
"vin !=null and vin != ''"
>
and v.vin = #{vin}
</if>
<if
test=
"subordinateBranch !=null"
>
and v.subordinate_branch = #{subordinateBranch}
</if
>
<!-- <if test="subordinateBranch !=null">--
>
<!-- and v.subordinate_branch = #{subordinateBranch}-->
<!-- </if>--
>
<if
test=
"code !=null"
>
and v.code = #{code}
</if>
...
...
@@ -127,11 +139,12 @@
</foreach>
</if>
<if
test=
"subordinateBranch !=null "
>
and ( v.park_branch_company_id = #{subordinateBranch} or v.expect_destination_branch_company_id=#{subordinateBranch} )
and ( v.park_branch_company_id = #{subordinateBranch} or
v.expect_destination_branch_company_id=#{subordinateBranch} )
</if>
<if
test=
" addrProvince !=null or addrCity !=null or zoneId !=null "
>
and (
<trim
suffixOverrides=
"OR"
>
and (
<trim
suffixOverrides=
"OR"
>
<if
test=
"addrProvince !=null"
>
(bc.addr_province=#{addrProvince} or bc1.addr_province=#{addrProvince}) OR
</if>
...
...
@@ -141,23 +154,29 @@
<if
test=
"zoneId !=null"
>
(bc.zone_id=#{zoneId} or bc1.zone_id=#{zoneId}) OR
</if>
</trim>
)
</trim>
)
</if>
order by v.code
) r ORDER BY r.
subBranch
Name
) r ORDER BY r.
parkBranchCompany
Name
</select>
<select
id=
"getByPageNotAllData"
parameterType=
"java.util.Map"
resultType=
"com.xxfc.platform.vehicle.pojo.
Query
VehicleVo"
>
resultType=
"com.xxfc.platform.vehicle.pojo.
Result
VehicleVo"
>
SELECT r.* FROM (
select DISTINCT v.`id`,
v.`code`,
v.`status`,
v.number_plate,
v.brand,
IFNULL(v.park_branch_company_id,v.expect_destination_branch_company_id) AS subordinate_branch,
IFNULL(bc.name,bc1.name) AS subBranchName,
-- IFNULL(v.park_branch_company_id,v.expect_destination_branch_company_id) AS subordinate_branch,
-- IFNULL(bc.name,bc1.name) AS subBranchName,
v.park_branch_company_id,
bc.name as parkBranchCompanyName,
v.expect_destination_branch_company_id,
bc1.name as expectDestinationBranchCompanyName,
v.subordinate_branch,
bc2.name as subBranchName,
v.use_type,
v.remark,
v.create_time,
...
...
@@ -185,24 +204,36 @@
left join
vehicle_book_info vbi on v.`id` = vbi.vehicle
</if>
-- 停车分公司
LEFT JOIN branch_company bc ON v.park_branch_company_id = bc.id
-- 目的地分公司
LEFT JOIN branch_company bc1 ON v.expect_destination_branch_company_id = bc1.id
-- 所属分公司
LEFT JOIN branch_company bc2 ON v.subordinate_branch = bc2.id
where
v.is_del=0
<if
test=
"companyList != null"
>
and ( v.park_branch_company_id in (
<trim
suffixOverrides=
","
>
<foreach
collection=
"companyList"
item=
"companyId"
>
<trim
suffixOverrides=
","
>
<foreach
collection=
"companyList"
item=
"companyId"
>
#{companyId},
</foreach>
</trim>
</foreach>
</trim>
)
or v.expect_destination_branch_company_id in (
<trim
suffixOverrides=
","
>
<foreach
collection=
"companyList"
item=
"companyId"
>
<trim
suffixOverrides=
","
>
<foreach
collection=
"companyList"
item=
"companyId"
>
#{companyId},
</foreach>
</trim>
</foreach>
</trim>
)
<!-- or v.subordinate_branch in (-->
<!-- <trim suffixOverrides=",">-->
<!-- <foreach collection="companyList" item="companyId">-->
<!-- #{companyId},-->
<!-- </foreach>-->
<!-- </trim>-->
)
)
)
</if>
...
...
@@ -230,9 +261,9 @@
<if
test=
"vin !=null and vin != ''"
>
and v.vin = #{vin}
</if>
<if
test=
"subordinateBranch !=null"
>
and v.subordinate_branch = #{subordinateBranch}
</if
>
<!-- <if test="subordinateBranch !=null">--
>
<!-- and v.subordinate_branch = #{subordinateBranch}-->
<!-- </if>--
>
<if
test=
"code !=null"
>
and v.code = #{code}
</if>
...
...
@@ -262,7 +293,8 @@
</foreach>
</if>
<if
test=
"subordinateBranch !=null "
>
and ( v.park_branch_company_id = #{subordinateBranch} or v.expect_destination_branch_company_id=#{subordinateBranch} )
and ( v.park_branch_company_id = #{subordinateBranch} or
v.expect_destination_branch_company_id=#{subordinateBranch} )
</if>
<if
test=
" addrProvince !=null or addrCity !=null or zoneId !=null "
>
and (
...
...
@@ -274,13 +306,13 @@
(bc.addr_city=#{addrProvince} or bc1.addr_city=#{addrProvince}) OR
</if>
<if
test=
"zoneId !=null"
>
(bc.zone_id=#{zoneId} or bc1.zone_id=#{zoneId})
OR
(bc.zone_id=#{zoneId} or bc1.zone_id=#{zoneId}) OR
</if>
</trim>
)
</if>
order by v.code
) r ORDER BY r.
subBranch
Name
) r ORDER BY r.
parkBranchCompany
Name
</select>
<select
id=
"lockByCode"
resultType=
"com.xxfc.platform.vehicle.entity.Vehicle"
...
...
@@ -291,8 +323,11 @@
v.number_plate
from vehicle v
where
`code` = #{code}
number_plate=#{numberPlate}
and is_del=0
for update
</select>
<select
id=
"selectByNumberPlate"
resultType=
"com.xxfc.platform.vehicle.entity.Vehicle"
>
select * from vehicle
...
...
xx-vehicle/xx-vehicle-server/src/main/resources/mapper/VehiclePlatCataMapper.xml
View file @
4dfba9b0
...
...
@@ -10,9 +10,11 @@
parent_id,name,icon,depict,rank,level,state,crt_time,upd_time,isMore,start_using
) VALUES
<foreach
collection =
"vpclist"
item=
"vpc"
index=
"index"
separator =
","
>
<if
test=
"vpc.state == 0"
>
(#{vpc.parentId},#{vpc.name},#{vpc.icon},#{vpc.depict}
,#{vpc.rank},#{vpc.level},#{vpc.state},#{vpc.crtTime}
,#{vpc.updTime},#{vpc.isMore},#{vpc.startUsing})
</if>
</foreach>
</insert>
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment