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
b4fdd45b
Commit
b4fdd45b
authored
Dec 12, 2019
by
hanfeng
Browse files
Options
Browse Files
Download
Plain Diff
Merge remote-tracking branch 'origin/master'
parents
e3824f42
66704eb6
Changes
39
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
39 changed files
with
1662 additions
and
827 deletions
+1662
-827
CommonConstants.java
...hub/wxiaoqi/security/common/constant/CommonConstants.java
+7
-0
CommonBaseController.java
...ub/wxiaoqi/security/common/rest/CommonBaseController.java
+4
-0
UserRestInterface.java
.../wxiaoqi/security/admin/feign/rest/UserRestInterface.java
+1
-1
AppUserRest.java
...va/com/github/wxiaoqi/security/admin/rpc/AppUserRest.java
+3
-2
AppPermissionService.java
...aoqi/security/admin/rpc/service/AppPermissionService.java
+12
-1
ActivityUserJoinBiz.java
...a/com/xxfc/platform/activity/biz/ActivityUserJoinBiz.java
+2
-0
DeductionTypeEnum.java
...c/platform/order/contant/enumerate/DeductionTypeEnum.java
+2
-1
OrderLogEnum.java
...m/xxfc/platform/order/contant/enumerate/OrderLogEnum.java
+73
-0
OrderViolateEnum.java
...fc/platform/order/contant/enumerate/OrderViolateEnum.java
+1
-0
OrderLog.java
...rc/main/java/com/xxfc/platform/order/entity/OrderLog.java
+18
-4
OrderRentVehicleDetail.java
...om/xxfc/platform/order/entity/OrderRentVehicleDetail.java
+43
-0
OrderVehicleCrosstown.java
...com/xxfc/platform/order/entity/OrderVehicleCrosstown.java
+6
-0
DedDetailDTO.java
.../main/java/com/xxfc/platform/order/pojo/DedDetailDTO.java
+1
-0
InProgressVO.java
.../com/xxfc/platform/order/pojo/calculate/InProgressVO.java
+29
-0
DelayRentOrderDTO.java
...com/xxfc/platform/order/pojo/order/DelayRentOrderDTO.java
+32
-0
OrderPageVO.java
.../java/com/xxfc/platform/order/pojo/order/OrderPageVO.java
+2
-0
VehicleItemDTO.java
...va/com/xxfc/platform/order/pojo/order/VehicleItemDTO.java
+22
-0
DelayAddPriceVO.java
...a/com/xxfc/platform/order/pojo/price/DelayAddPriceVO.java
+80
-0
BaseOrderBiz.java
...c/main/java/com/xxfc/platform/order/biz/BaseOrderBiz.java
+695
-678
OrderAccountBiz.java
...ain/java/com/xxfc/platform/order/biz/OrderAccountBiz.java
+70
-14
OrderLogBiz.java
...rc/main/java/com/xxfc/platform/order/biz/OrderLogBiz.java
+20
-0
OrderVehicleCrosstownBiz.java
...com/xxfc/platform/order/biz/OrderVehicleCrosstownBiz.java
+12
-0
OrderCalculateBiz.java
.../com/xxfc/platform/order/biz/inner/OrderCalculateBiz.java
+157
-84
OrderCancelBiz.java
...ava/com/xxfc/platform/order/biz/inner/OrderCancelBiz.java
+19
-5
OrderDelayBiz.java
...java/com/xxfc/platform/order/biz/inner/OrderDelayBiz.java
+211
-0
OrderMsgBiz.java
...n/java/com/xxfc/platform/order/biz/inner/OrderMsgBiz.java
+1
-1
RentDepositJobHandler.java
...xxfc/platform/order/jobhandler/RentDepositJobHandler.java
+2
-1
BackStageOrderController.java
...om/xxfc/platform/order/rest/BackStageOrderController.java
+55
-14
OrderRentVehicleService.java
.../xxfc/platform/order/service/OrderRentVehicleService.java
+2
-0
Activity.java
...c/main/java/com/xxfc/platform/summit/entity/Activity.java
+5
-0
UserBiz.java
...r/src/main/java/com/xxfc/platform/summit/biz/UserBiz.java
+11
-10
DictionaryKey.java
...a/com/xxfc/platform/universal/constant/DictionaryKey.java
+6
-1
VehicleFeign.java
...in/java/com/xxfc/platform/vehicle/feign/VehicleFeign.java
+11
-2
BookVehicleVO.java
...in/java/com/xxfc/platform/vehicle/pojo/BookVehicleVO.java
+8
-2
UsableVeicleDTO.java
.../java/com/xxfc/platform/vehicle/pojo/UsableVeicleDTO.java
+6
-0
VMCalendarPriceCostDTO.java
...atform/vehicle/pojo/dto/order/VMCalendarPriceCostDTO.java
+5
-0
VehicleBiz.java
...c/main/java/com/xxfc/platform/vehicle/biz/VehicleBiz.java
+8
-5
VehicleModelCalendarPriceBiz.java
...fc/platform/vehicle/biz/VehicleModelCalendarPriceBiz.java
+2
-1
VehicleController.java
...ava/com/xxfc/platform/vehicle/rest/VehicleController.java
+18
-0
No files found.
ace-common/src/main/java/com/github/wxiaoqi/security/common/constant/CommonConstants.java
View file @
b4fdd45b
...
...
@@ -2,6 +2,9 @@ package com.github.wxiaoqi.security.common.constant;
import
cn.hutool.core.date.format.FastDateFormat
;
import
java.time.Instant
;
import
java.time.LocalDateTime
;
import
java.time.ZoneOffset
;
import
java.time.format.DateTimeFormatter
;
/**
...
...
@@ -50,4 +53,8 @@ public class CommonConstants {
public
static
final
org
.
joda
.
time
.
format
.
DateTimeFormatter
YMR_SLASH_FORMATTER_JODA
=
org
.
joda
.
time
.
format
.
DateTimeFormat
.
forPattern
(
YMR_SLASH
);
public
static
final
FastDateFormat
HOUR_MINUTE_FORMATTE_HUTOOL
=
FastDateFormat
.
getInstance
(
HOUR_MINUTE
);
public
static
String
stampTo8Zone
(
DateTimeFormatter
dateTimeFormatter
,
Long
timestamp
)
{
return
dateTimeFormatter
.
format
(
LocalDateTime
.
ofInstant
(
Instant
.
ofEpochMilli
(
timestamp
),
ZoneOffset
.
ofHours
(
8
)));
}
}
ace-common/src/main/java/com/github/wxiaoqi/security/common/rest/CommonBaseController.java
View file @
b4fdd45b
...
...
@@ -31,4 +31,8 @@ public class CommonBaseController {
public
String
getCurrentUserName
(){
return
BaseContextHandler
.
getUsername
();
}
public
String
getCurrentUserId
(){
return
BaseContextHandler
.
getUserID
();
}
}
ace-modules/ace-admin-api/src/main/java/com/github/wxiaoqi/security/admin/feign/rest/UserRestInterface.java
View file @
b4fdd45b
...
...
@@ -38,7 +38,7 @@ public interface UserRestInterface {
default
void
checkAdminUser
(){
if
(
null
==
getAdminUserInfo
())
{
throw
new
BaseException
(
ResultCode
.
DB_OPERATION_FAIL
_CODE
);
throw
new
BaseException
(
ResultCode
.
NOTEXIST
_CODE
);
}
}
}
ace-modules/ace-admin/src/main/java/com/github/wxiaoqi/security/admin/rpc/AppUserRest.java
View file @
b4fdd45b
...
...
@@ -138,11 +138,12 @@ public class AppUserRest {
* @return
*/
@RequestMapping
(
value
=
"/user/checkBindWechat"
)
public
@ResponseBody
JSONObject
checkBindWechat
(
@RequestParam
(
value
=
"username"
,
defaultValue
=
""
)
String
username
)
{
public
@ResponseBody
JSONObject
checkBindWechat
(
@RequestParam
(
value
=
"username"
,
defaultValue
=
""
)
String
username
,
@RequestParam
(
value
=
"type"
,
defaultValue
=
"0"
)
Integer
type
)
{
if
(
StringUtils
.
isBlank
(
username
))
{
return
JsonResultUtil
.
createFailedResult
(
ResultCode
.
NULL_CODE
,
"参数为空"
);
}
return
appPermissionService
.
checkBindWechat
(
username
);
return
appPermissionService
.
checkBindWechat
(
username
,
type
);
}
...
...
ace-modules/ace-admin/src/main/java/com/github/wxiaoqi/security/admin/rpc/service/AppPermissionService.java
View file @
b4fdd45b
...
...
@@ -114,6 +114,9 @@ public class AppPermissionService {
@Autowired
private
AppUserPositionTempBiz
positionTempBiz
;
@Autowired
private
AppUserAlipayBiz
alipayBiz
;
public
AppUserInfo
validate
(
String
username
,
String
password
)
{
AppUserInfo
info
=
new
AppUserInfo
();
...
...
@@ -617,12 +620,20 @@ public class AppPermissionService {
* @return
*/
public
JSONObject
checkBindWechat
(
String
username
)
{
public
JSONObject
checkBindWechat
(
String
username
,
Integer
type
)
{
JSONObject
data
=
new
JSONObject
();
try
{
AppUserLogin
userLogin
=
appUserLoginBiz
.
checkeUserLogin
(
username
);
if
(
userLogin
!=
null
)
{
String
openid
=
userLogin
.
getOpenid
();
if
(
type
==
null
||
type
==
0
){
openid
=
userLogin
.
getWxOpenid
();
}
else
if
(
type
==
2
){
List
<
AppUserAlipay
>
list
=
alipayBiz
.
getListByUserId
(
userLogin
.
getId
());
if
(
list
.
size
()>
0
){
openid
=
list
.
get
(
0
).
getTxAlipay
();
}
}
if
(
StringUtils
.
isNotBlank
(
openid
))
{
data
.
put
(
"type"
,
0
);
// 已存在
}
else
{
...
...
xx-activity/xx-activity-server/src/main/java/com/xxfc/platform/activity/biz/ActivityUserJoinBiz.java
View file @
b4fdd45b
...
...
@@ -54,6 +54,8 @@ public class ActivityUserJoinBiz extends BaseBiz<ActivityUserJoinMapper,Activity
}
insertSelective
(
userJoin
);
ruleBiz
.
updateById
(
rule
);
//领取优惠卷
receiveCoupn
(
userId
);
}
//领取优惠卷
...
...
xx-order/xx-order-api/src/main/java/com/xxfc/platform/order/contant/enumerate/DeductionTypeEnum.java
View file @
b4fdd45b
...
...
@@ -8,7 +8,7 @@ import java.util.List;
import
java.util.Map
;
public
enum
DeductionTypeEnum
{
//账款类型 1--违约金;2--消费金额;3--赔偿金(定损);4--违章相关
//账款类型 1--违约金;2--消费金额;3--赔偿金(定损);4--违章相关
;5--其他
VIOLATE_CANCEL
(
101
,
"提前取消违约金"
),
VIOLATE_ADVANCE
(
102
,
"提前还车违约金"
),
VIOLATE_DELAY
(
103
,
"延迟还车违约金"
),
...
...
@@ -17,6 +17,7 @@ public enum DeductionTypeEnum {
DAMAGES
(
301
,
"赔偿金(定损)"
),
VIOLATE_TRAFFIC_DEDUCT
(
401
,
"违章扣款"
),
VIOLATE_TRAFFIC_KEEP
(
402
,
"违章扣款保留金"
),
OTHER_DELAY_SAFE
(
501
,
"其他费用-延迟用车不记免赔"
),
;
/**
* 编码
...
...
xx-order/xx-order-api/src/main/java/com/xxfc/platform/order/contant/enumerate/OrderLogEnum.java
0 → 100644
View file @
b4fdd45b
package
com
.
xxfc
.
platform
.
order
.
contant
.
enumerate
;
import
java.util.HashMap
;
import
java.util.Map
;
public
enum
OrderLogEnum
{
//账款类型 1--订单常规操作;2--与账相关;3--延期相关
ORDER_ADD
(
101
,
"删除订单"
),
DELAY_MODIFY
(
301
,
"延期增改"
,
"订单号:{}, 延期增改"
,
"旧:{}, 新:{}"
),
;
/**
* 编码
*/
private
Integer
code
;
/**
* 类型描述
*/
private
String
desc
;
/**
* 日志内容
*/
private
String
content
;
/**
* 细节
*/
private
String
detail
;
private
static
Map
<
Integer
,
String
>
codeAndDesc
=
new
HashMap
<
Integer
,
String
>();
OrderLogEnum
(
Integer
code
,
String
desc
){
this
.
code
=
code
;
this
.
desc
=
desc
;
}
OrderLogEnum
(
Integer
code
,
String
desc
,
String
content
,
String
detail
){
this
.
code
=
code
;
this
.
desc
=
desc
;
this
.
content
=
content
;
this
.
detail
=
detail
;
}
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
String
getContent
()
{
return
content
;
}
public
void
setContent
(
String
content
)
{
this
.
content
=
content
;
}
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/OrderViolateEnum.java
View file @
b4fdd45b
...
...
@@ -8,6 +8,7 @@ public enum OrderViolateEnum {
BEFORE
(
1
,
"提前"
),
AFTER
(
2
,
"延期"
),
CHANGE
(
3
,
"更换还车公司"
),
DELAY_VEHICLE
(
4
,
"延长还车不计免赔"
)
;
/**
* 编码
...
...
xx-order/xx-order-api/src/main/java/com/xxfc/platform/order/entity/OrderLog.java
View file @
b4fdd45b
...
...
@@ -52,7 +52,7 @@ public class OrderLog implements Serializable {
* 操作者id,另外 -1为系统
*/
@Column
(
name
=
"log_user_id"
)
@ApiModelProperty
(
value
=
"操作者id,另外 -1为系统"
)
@ApiModelProperty
(
value
=
"操作者id,另外 -1为系统
-1+id 为后台人员
"
)
private
Integer
logUserId
;
/**
...
...
@@ -68,13 +68,27 @@ public class OrderLog implements Serializable {
@Column
(
name
=
"crt_time"
)
@ApiModelProperty
(
value
=
"创建时间"
,
hidden
=
true
)
private
Long
crtTime
;
/**
* 更新时间
*/
@Column
(
name
=
"upd_time"
)
@ApiModelProperty
(
value
=
"更新时间"
,
hidden
=
true
)
private
Long
updTime
;
/**
* 日志类型 1
1--创建订单;12--创建订单
;
/**
* 日志类型 1
01--创建订单;102--
;
*/
@Column
(
name
=
"type"
)
@ApiModelProperty
(
value
=
"日志类型 1
1--创建订单;12--创建订单;
"
)
@ApiModelProperty
(
value
=
"日志类型 1
01--创建订单;102--创建订单;201--
"
)
private
Integer
type
;
/**
* 详情
*/
@Column
(
name
=
"detail"
)
@ApiModelProperty
(
value
=
"详情"
)
private
String
detail
;
}
xx-order/xx-order-api/src/main/java/com/xxfc/platform/order/entity/OrderRentVehicleDetail.java
View file @
b4fdd45b
package
com
.
xxfc
.
platform
.
order
.
entity
;
import
cn.hutool.json.JSONUtil
;
import
com.github.wxiaoqi.security.common.util.JsonUtil
;
import
com.xxfc.platform.order.pojo.order.DelayRentOrderDTO
;
import
com.xxfc.platform.order.pojo.price.CostDetailExtend
;
import
com.xxfc.platform.order.pojo.price.DelayAddPriceVO
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.Data
;
...
...
@@ -333,4 +336,44 @@ public class OrderRentVehicleDetail implements Serializable {
public
void
handelCostDetailExtend
(
CostDetailExtend
costDetailExtend
)
{
this
.
costDetailExtend
=
JsonUtil
.
objectToJson
(((
CostDetailExtend
)
costDetailExtend
));
}
@Column
(
name
=
"delay_add_free_days"
)
@ApiModelProperty
(
value
=
"延期补充的免费天数"
)
private
Integer
delayAddFreeDays
;
@Column
(
name
=
"delay_add_days"
)
@ApiModelProperty
(
value
=
"延期增加的天数"
)
private
Integer
delayAddDays
;
@Column
(
name
=
"delay_add_detail"
)
@ApiModelProperty
(
value
=
"增加延期还车费用(计算)明细"
)
private
String
delayAddDetail
;
@Column
(
name
=
"delay_add_damage_safe"
)
@ApiModelProperty
(
value
=
"延期增加天数是否购买车损免赔"
)
private
Integer
delayAddDamageSafe
;
@Column
(
name
=
"delay_add_end_time"
)
@ApiModelProperty
(
value
=
"延期结束时间"
)
private
Long
delayAddEndTime
;
@Column
(
name
=
"meta_end_time"
)
@ApiModelProperty
(
value
=
"原结束时间"
)
private
Long
metaEndTime
;
public
Long
getEndTime
()
{
return
endTime
;
}
public
void
setEndTime
(
Long
endTime
)
{
this
.
endTime
=
endTime
;
}
public
Integer
obtainRealDayNum
()
{
return
this
.
dayNum
+
this
.
delayAddDays
;
}
public
DelayAddPriceVO
obtainDelayAddDetail
()
{
return
JSONUtil
.
toBean
(
this
.
getDelayAddDetail
(),
DelayAddPriceVO
.
class
);
}
}
xx-order/xx-order-api/src/main/java/com/xxfc/platform/order/entity/OrderVehicleCrosstown.java
View file @
b4fdd45b
...
...
@@ -112,6 +112,12 @@ public class OrderVehicleCrosstown {
@Column
(
name
=
"violate_amount_detail"
)
private
String
violateDetail
;
/**
* 延期还车,不计免赔额计算
*/
@Column
(
name
=
"delay_vehicle_detail"
)
private
String
delayVehicleDetail
;
/**
* 1、交车, 2、还车, 3、定损还车
*/
...
...
xx-order/xx-order-api/src/main/java/com/xxfc/platform/order/pojo/DedDetailDTO.java
View file @
b4fdd45b
...
...
@@ -33,6 +33,7 @@ public class DedDetailDTO {
//作为:DedDetail :2、车辆损坏 3、其他
//作为:violate_amount_detail 1--提前还车 2--延期还车 3--更换还车公司费用
//作为:delay_vehicle_detail
Integer
type
;
//小雨都不知道什么东西
...
...
xx-order/xx-order-api/src/main/java/com/xxfc/platform/order/pojo/calculate/InProgressVO.java
View file @
b4fdd45b
package
com
.
xxfc
.
platform
.
order
.
pojo
.
calculate
;
import
cn.hutool.core.collection.CollUtil
;
import
com.xxfc.platform.order.pojo.price.DelayAddPriceVO
;
import
com.xxfc.platform.vehicle.pojo.dto.order.VMCalendarPriceCostDTO
;
import
lombok.Data
;
import
org.assertj.core.util.Lists
;
...
...
@@ -96,4 +97,32 @@ public class InProgressVO {
* 违约金 费用详情列表
*/
List
<
VMCalendarPriceCostDTO
>
violateAmountList
=
CollUtil
.
newArrayList
();
/**
* 添加的延期费用
*/
DelayAddPriceVO
delayAddPriceVO
=
new
DelayAddPriceVO
();
/**
* 返还的原来订单的免费天数
*/
Integer
metaOrderBackFreeDays
=
0
;
/**
* 返还的延期增加的免费天数
*/
Integer
delayAddBackFreeDays
=
0
;
/**
* 原来订单的已使用的金额
*/
BigDecimal
metaOrderUsedAmount
=
BigDecimal
.
ZERO
;
/**
* 延期增加的已使用的金额
*/
BigDecimal
delayAddUsedAmount
=
BigDecimal
.
ZERO
;
}
xx-order/xx-order-api/src/main/java/com/xxfc/platform/order/pojo/order/DelayRentOrderDTO.java
0 → 100644
View file @
b4fdd45b
package
com
.
xxfc
.
platform
.
order
.
pojo
.
order
;
import
com.github.wxiaoqi.security.common.constant.CommonConstants
;
import
lombok.Data
;
import
static
com
.
github
.
wxiaoqi
.
security
.
common
.
constant
.
CommonConstants
.*;
@Data
public
class
DelayRentOrderDTO
{
Integer
operateId
;
String
no
;
Integer
needDamageSafe
=
0
;
Long
delayEndTime
;
Long
endTime
;
String
bookEndDate
;
String
bookEndDateTime
;
Long
startTime
;
String
bookStartDate
;
String
bookStartDateTime
;
public
void
setStartTime
(
Long
startTime
)
{
this
.
startTime
=
startTime
;
this
.
bookStartDate
=
stampTo8Zone
(
YMR_SLASH_FORMATTER
,
startTime
);
this
.
bookStartDateTime
=
stampTo8Zone
(
DATE_TIME_LINE_FORMATTER
,
startTime
);
}
public
void
setEndTime
(
Long
endTime
)
{
this
.
endTime
=
endTime
;
this
.
bookEndDate
=
stampTo8Zone
(
YMR_SLASH_FORMATTER
,
endTime
);
this
.
bookEndDateTime
=
stampTo8Zone
(
DATE_TIME_LINE_FORMATTER
,
endTime
);
}
}
\ No newline at end of file
xx-order/xx-order-api/src/main/java/com/xxfc/platform/order/pojo/order/OrderPageVO.java
View file @
b4fdd45b
...
...
@@ -40,6 +40,8 @@ public class OrderPageVO extends BaseOrder {
private
String
positionName
;
//订单违约金
private
String
dedDetailDTO
;
//订单延长还车,不计免赔额
private
String
delayVehicleDetail
;
/**
* 車輛編碼
*/
...
...
xx-order/xx-order-api/src/main/java/com/xxfc/platform/order/pojo/order/VehicleItemDTO.java
View file @
b4fdd45b
...
...
@@ -119,6 +119,23 @@ public class VehicleItemDTO extends OrderItem {
return
usedAmount
;
}
// public BigDecimal getUsedAmountHasDelay(Integer useDays, List<VMCalendarPriceCostDTO> delayAmountList) {
//
// BigDecimal usedAmount = getUsedAmount(useDays);
// if((useDays - getTotalNum()) > 0) {
// Integer delayAddDays = useDays - getTotalNum();
// if(delayAddDays > delayAmountList.size()) {
// delayAddDays = delayAmountList.size();
// }
//
// for(int i = 0; i < delayAddDays; i++) {
// usedAmount = usedAmount.add(delayAmountList.get(i).getPrice());
// }
// }
//
// return usedAmount;
// }
//由于免费天数可以抵消不是完整的天数,所以处理比较不同
public
BigDecimal
getFreeAmount
(
Integer
offsetDay
)
{
List
<
VMCalendarPriceCostDTO
>
vmcpds
=
getVehicleDetail
();
...
...
@@ -187,8 +204,12 @@ public class VehicleItemDTO extends OrderItem {
if
(
ableFreeDays
>
cycleNum
&&
cycleNum
+
dto
.
getFreeDays
()
>
ableFreeDays
)
{
//本次累加天数 大于 可用免费天数
paramDTO
.
setFreeNum
(
ableFreeDays
);
//分子
Integer
up
=
(
ableFreeDays
-
cycleNum
);
//分母
Integer
down
=
dto
.
getFreeDays
();
//设置当前生效免费天数
dto
.
setValidFreeDays
(
up
);
//根据百分比计算消费价格
dto
.
setFreeAndConsumeAmount
(
dto
.
getPrice
(),
dto
.
getPrice
().
multiply
(
new
BigDecimal
(
up
+
""
).
divide
(
new
BigDecimal
(
down
+
""
),
2
,
RoundingMode
.
HALF_UP
))
...
...
@@ -198,6 +219,7 @@ public class VehicleItemDTO extends OrderItem {
paramDTO
.
setFreeNum
(
paramDTO
.
getFreeNum
()+
dto
.
getFreeDays
());
//直接设置价格
dto
.
setFreeAndConsumeAmount
(
dto
.
getPrice
(),
dto
.
getPrice
());
dto
.
setValidFreeDays
(
dto
.
getFreeDays
());
paramDTO
.
offsetNum
+=
1
;
}
else
{
//上次累加天数 大于 可用天数
//直接设置价格
...
...
xx-order/xx-order-api/src/main/java/com/xxfc/platform/order/pojo/price/DelayAddPriceVO.java
0 → 100644
View file @
b4fdd45b
package
com
.
xxfc
.
platform
.
order
.
pojo
.
price
;
import
cn.hutool.core.collection.CollUtil
;
import
com.xxfc.platform.vehicle.pojo.dto.order.VMCalendarPriceCostDTO
;
import
lombok.Data
;
import
org.springframework.data.mongodb.core.aggregation.ArrayOperators
;
import
java.math.BigDecimal
;
import
java.util.List
;
@Data
public
class
DelayAddPriceVO
{
/**
* 延期增加的天数
*/
Integer
delayAddDays
=
0
;
/**
* 不计免赔单价
*/
BigDecimal
damageSafePrice
=
BigDecimal
.
ZERO
;
/**
* 延期不记免赔费用
*/
BigDecimal
delayDamageSafeAmount
=
BigDecimal
.
ZERO
;
/**
* 使用(消耗)详情列表
*/
List
<
VMCalendarPriceCostDTO
>
delayAmountList
=
CollUtil
.
newArrayList
();
public
void
initDelayDamageSafeAmount
()
{
this
.
delayDamageSafeAmount
=
this
.
damageSafePrice
.
multiply
(
new
BigDecimal
(
delayAddDays
+
""
));
}
public
Integer
residueDelayFreeDays
(
Integer
realResidueDays
)
{
if
(
realResidueDays
>
delayAddDays
)
{
realResidueDays
=
delayAddDays
;
}
//已使用的延长天数
Integer
useDelayDays
=
delayAddDays
-
realResidueDays
;
//延长的免费天数
Integer
residueDelayFreeDays
=
0
;
List
<
VMCalendarPriceCostDTO
>
delayAmountList
=
getDelayAmountList
();
for
(
int
i
=
useDelayDays
;
i
<
delayAddDays
;
i
++)
{
residueDelayFreeDays
+=
delayAmountList
.
get
(
i
).
getFreeDays
();
}
return
residueDelayFreeDays
;
}
public
BigDecimal
delayAddUseAmount
(
Integer
delayAddUseDays
)
{
BigDecimal
delayUsedAmount
=
BigDecimal
.
ZERO
;
if
(
delayAddUseDays
>
getDelayAddDays
())
{
delayAddUseDays
=
getDelayAddDays
();
}
for
(
int
i
=
0
;
i
<
delayAddUseDays
;
i
++)
{
delayUsedAmount
=
delayUsedAmount
.
add
(
delayAmountList
.
get
(
i
).
getPrice
());
}
return
delayUsedAmount
;
}
public
BigDecimal
delayAddFreeAmount
(
Integer
delayAddUseDays
)
{
BigDecimal
delayFreeAmount
=
BigDecimal
.
ZERO
;
if
(
delayAddUseDays
>
getDelayAddDays
())
{
delayAddUseDays
=
getDelayAddDays
();
}
for
(
int
i
=
0
;
i
<
delayAddUseDays
;
i
++)
{
delayFreeAmount
=
delayFreeAmount
.
add
(
delayAmountList
.
get
(
i
).
getFreeAmount
());
}
return
delayFreeAmount
;
}
}
xx-order/xx-order-server/src/main/java/com/xxfc/platform/order/biz/BaseOrderBiz.java
View file @
b4fdd45b
This diff is collapsed.
Click to expand it.
xx-order/xx-order-server/src/main/java/com/xxfc/platform/order/biz/OrderAccountBiz.java
View file @
b4fdd45b
...
...
@@ -31,6 +31,7 @@ import com.xxfc.platform.order.pojo.mq.OrderMQDTO;
import
com.xxfc.platform.order.pojo.order.VehicleItemDTO
;
import
com.xxfc.platform.order.pojo.price.CancelStartedVO
;
import
com.xxfc.platform.order.pojo.price.CostDetailExtend
;
import
com.xxfc.platform.order.pojo.price.DelayAddPriceVO
;
import
com.xxfc.platform.universal.constant.DictionaryKey
;
import
com.xxfc.platform.universal.entity.Dictionary
;
import
com.xxfc.platform.universal.feign.ThirdFeign
;
...
...
@@ -108,8 +109,10 @@ public class OrderAccountBiz extends BaseBiz<OrderAccountMapper,OrderAccount> {
* @param orderViolateCoverAmount 订单违约金覆盖值
* @param depositViolateCoverAmount 押金违约金覆盖值
*/
public
BigDecimal
rentRefundProcessCancel
(
BaseOrder
baseOrder
,
BigDecimal
orderDeductSource
,
Long
timeLag
,
String
dicParentKey
,
BigDecimal
depositAmount
,
BigDecimal
depositDeductSource
,
OrderAccountDetail
oad
,
BigDecimal
topAmount
,
BigDecimal
orderViolateCoverAmount
,
BigDecimal
depositViolateCoverAmount
)
{
public
BigDecimal
rentRefundProcessCancel
(
BaseOrder
baseOrder
,
BigDecimal
orderDeductSource
,
Long
timeLag
,
String
dicParentKey
,
BigDecimal
depositAmount
,
BigDecimal
depositDeductSource
,
OrderAccountDetail
oad
,
BigDecimal
topAmount
,
BigDecimal
orderViolateCoverAmount
,
BigDecimal
depositViolateCoverAmount
,
Boolean
noDeduct
)
{
//原来退款 和 最终退款
BigDecimal
originalRefundAmount
=
BigDecimal
.
ZERO
;
BigDecimal
refundAmount
=
BigDecimal
.
ZERO
;
...
...
@@ -126,6 +129,11 @@ public class OrderAccountBiz extends BaseBiz<OrderAccountMapper,OrderAccount> {
if
(
null
!=
orderDeductSource
&&
BigDecimal
.
ZERO
.
compareTo
(
orderDeductSource
)
<
0
)
{
BigDecimal
orderDeductAmount
=
calculateDeduction
(
orderDeductSource
,
timeLag
,
dicParentKey
,
orderRefundDescBuilder
);
//如果属于免扣费情况
if
(
noDeduct
)
{
orderDeductAmount
=
BigDecimal
.
ZERO
;
orderRefundDescBuilder
=
new
StringBuilder
(
""
);
}
orderDeductAmount
=
orderDeductAmount
.
setScale
(
2
,
RoundingMode
.
HALF_UP
);
if
(
null
!=
orderViolateCoverAmount
)
{
orderDeductAmount
=
orderViolateCoverAmount
;
...
...
@@ -159,6 +167,11 @@ public class OrderAccountBiz extends BaseBiz<OrderAccountMapper,OrderAccount> {
if
(
null
!=
depositDeductSource
&&
BigDecimal
.
ZERO
.
compareTo
(
depositDeductSource
)
<
0
)
{
//通过原扣除款 计算剩余款
BigDecimal
depositDeductAmount
=
calculateDeduction
(
depositDeductSource
,
timeLag
,
dicParentKey
,
depositRefundDescBuilder
);
//如果属于免扣费情况
if
(
noDeduct
)
{
depositDeductAmount
=
BigDecimal
.
ZERO
;
depositRefundDescBuilder
=
new
StringBuilder
(
""
);
}
depositDeductAmount
=
depositDeductAmount
.
setScale
(
2
,
RoundingMode
.
HALF_UP
);
if
(
null
!=
orderViolateCoverAmount
)
{
depositDeductAmount
=
orderViolateCoverAmount
;
...
...
@@ -428,6 +441,11 @@ public class OrderAccountBiz extends BaseBiz<OrderAccountMapper,OrderAccount> {
);
}
//还车扣除款 剩余的 钱,再减去违章预备金
oad
.
getDeductions
().
add
(
initDeduction
(
illegalReserve
,
"违章保证金"
,
DeductionTypeEnum
.
VIOLATE_TRAFFIC_KEEP
,
OrderAccountDeduction
.
ORIGIN_DEPOSIT
)
);
//剩余押金 = 押金 - 违章保证金 - 定损金额
oad
.
setDepositAmount
(
oad
.
getDepositAmount
().
subtract
(
illegalReserve
).
subtract
(
csv
.
getDamagesAmount
()));
...
...
@@ -437,6 +455,7 @@ public class OrderAccountBiz extends BaseBiz<OrderAccountMapper,OrderAccount> {
csv
.
setViolateDesc
(
""
);
//处理更改之后的违约金及描述
handleCrosstownDetail
(
crosstown
,
oad
,
csv
);
handleCrosstownDelayDetail
(
crosstown
,
oad
);
if
(
StrUtil
.
isBlank
(
csv
.
getViolateDesc
()))
{
csv
.
setViolateDesc
(
inProgressVO
.
getViolateDesc
());
...
...
@@ -451,11 +470,6 @@ public class OrderAccountBiz extends BaseBiz<OrderAccountMapper,OrderAccount> {
String
refundDesc
=
"退还车辆押金:"
+
refundAmont
.
toString
();
//还车扣除款 剩余的 钱,再减去违章预备金
oad
.
getDeductions
().
add
(
initDeduction
(
illegalReserve
,
"违章保证金"
,
DeductionTypeEnum
.
VIOLATE_TRAFFIC_KEEP
,
OrderAccountDeduction
.
ORIGIN_DEPOSIT
)
);
refundTrigger
(
orderMQDTO
,
orderMQDTO
.
getOrderRentVehicleDetail
(),
illegalReserve
,
originalRefundAmount
,
refundAmont
,
refundDesc
,
RefundStatusEnum
.
RESIDUE_ILLEGAL
.
getCode
(),
AccountTypeEnum
.
OUT_PART_DEPOSIT
,
oad
);
//修改押金退还记录状态
...
...
@@ -507,13 +521,13 @@ public class OrderAccountBiz extends BaseBiz<OrderAccountMapper,OrderAccount> {
csv
.
setOverAmountList
(
inProgressVO
.
getOverAmountList
());
csv
.
setViolateAmountList
(
inProgressVO
.
getViolateAmountList
());
if
(
csv
.
getUsedDayNum
()
==
orderMQDTO
.
getOrderRentVehicleDetail
().
get
DayNum
())
{
if
(
csv
.
getUsedDayNum
()
==
orderMQDTO
.
getOrderRentVehicleDetail
().
obtainReal
DayNum
())
{
csv
.
setType
(
CostDetailExtend
.
FINLISH_ONTIME
);
}
else
if
(
csv
.
getUsedDayNum
()
>
orderMQDTO
.
getOrderRentVehicleDetail
().
get
DayNum
()){
}
else
if
(
csv
.
getUsedDayNum
()
>
orderMQDTO
.
getOrderRentVehicleDetail
().
obtainReal
DayNum
()){
csv
.
setType
(
CostDetailExtend
.
FINLISH_DELAY
);
}
else
if
(
csv
.
getUsedDayNum
()
<
orderMQDTO
.
getOrderRentVehicleDetail
().
get
DayNum
()){
}
else
if
(
csv
.
getUsedDayNum
()
<
orderMQDTO
.
getOrderRentVehicleDetail
().
obtainReal
DayNum
()){
csv
.
setType
(
CostDetailExtend
.
FINLISH_ADVANCE
);
}
...
...
@@ -582,15 +596,58 @@ public class OrderAccountBiz extends BaseBiz<OrderAccountMapper,OrderAccount> {
}
}
private
void
handleCrosstownDelayDetail
(
OrderVehicleCrosstown
crosstown
,
OrderAccountDetail
oad
)
{
try
{
if
(
null
!=
crosstown
.
getDelayVehicleDetail
())
{
//修改代码
List
<
DedDetailDTO
>
vios
=
JSONUtil
.
toList
(
JSONUtil
.
parseArray
(
crosstown
.
getDelayVehicleDetail
()),
DedDetailDTO
.
class
);
for
(
DedDetailDTO
vio
:
vios
)
{
if
(
OrderViolateEnum
.
DELAY_VEHICLE
.
getCode
().
equals
(
vio
.
getType
()))
{
Boolean
flag
=
Boolean
.
FALSE
;
for
(
OrderAccountDeduction
deduction
:
oad
.
getDeductions
())
{
if
(
DeductionTypeEnum
.
OTHER_DELAY_SAFE
.
getCode
().
equals
(
deduction
.
getType
()))
{
deduction
.
setName
(
vio
.
getDeductions
());
deduction
.
setAmount
(
vio
.
getCost
());
//修改归还押金金额
resetDeposit
(
oad
);
flag
=
Boolean
.
TRUE
;
break
;
}
}
//如果没有修改,则添加
if
(
Boolean
.
FALSE
.
equals
(
flag
))
{
OrderAccountDeduction
oadNew
=
initDeduction
(
vio
.
getCost
(),
vio
.
getDeductions
(),
DeductionTypeEnum
.
OTHER_DELAY_SAFE
,
OrderAccountDeduction
.
ORIGIN_DEPOSIT
);
oad
.
getDeductions
().
add
(
oadNew
);
//修改归还押金金额
resetDeposit
(
oad
);
}
}
}
}
}
catch
(
Exception
e
)
{
log
.
error
(
"crosstown.getDelayVehicleDetail() crosstown id :"
+
crosstown
.
getId
()
+
" 转换失败"
);
}
}
private
void
resetDeposit
(
OrderAccountDetail
oad
)
{
//修改归还押金金额
BigDecimal
toDeduction
=
oad
.
getDeductions
().
parallelStream
().
map
(
OrderAccountDeduction:
:
getAmount
).
reduce
(
BigDecimal
.
ZERO
,
BigDecimal:
:
add
);
oad
.
setDepositAmount
(
oad
.
getOriginDepositAmount
().
subtract
(
toDeduction
));
}
private
void
handleViolateDetail
(
DeductionTypeEnum
dte
,
OrderAccountDetail
oad
,
DedDetailDTO
vio
,
CancelStartedVO
csv
)
{
Boolean
flag
=
Boolean
.
FALSE
;
for
(
OrderAccountDeduction
deduction
:
oad
.
getDeductions
())
{
if
(
dte
.
getCode
().
equals
(
deduction
.
getType
()))
{
deduction
.
setName
(
vio
.
getDeductions
());
BigDecimal
diff
=
vio
.
getCost
().
subtract
(
deduction
.
getAmount
());
//修改归还押金金额
oad
.
setDepositAmount
(
oad
.
getDepositAmount
().
subtract
(
diff
));
deduction
.
setAmount
(
vio
.
getCost
());
//修改归还押金金额
resetDeposit
(
oad
);
//设置订单明细参数
csv
.
setViolateAmount
(
csv
.
getViolateAmount
().
add
(
diff
));
...
...
@@ -605,7 +662,7 @@ public class OrderAccountBiz extends BaseBiz<OrderAccountMapper,OrderAccount> {
OrderAccountDeduction
oadNew
=
initDeduction
(
vio
.
getCost
(),
vio
.
getDeductions
(),
dte
,
OrderAccountDeduction
.
ORIGIN_DEPOSIT
);
oad
.
getDeductions
().
add
(
oadNew
);
//修改归还押金金额
oad
.
setDepositAmount
(
oad
.
getDepositAmount
().
subtract
(
oadNew
.
getAmount
())
);
resetDeposit
(
oad
);
//设置订单明细参数
csv
.
setViolateAmount
(
csv
.
getViolateAmount
().
add
(
oadNew
.
getAmount
()));
...
...
@@ -613,7 +670,6 @@ public class OrderAccountBiz extends BaseBiz<OrderAccountMapper,OrderAccount> {
}
}
/**
* 获取每日订单账目,用于统计
* @param term
...
...
xx-order/xx-order-server/src/main/java/com/xxfc/platform/order/biz/OrderLogBiz.java
View file @
b4fdd45b
package
com
.
xxfc
.
platform
.
order
.
biz
;
import
cn.hutool.core.util.StrUtil
;
import
com.xxfc.platform.order.contant.enumerate.OrderLogEnum
;
import
lombok.extern.slf4j.Slf4j
;
import
org.springframework.stereotype.Service
;
import
com.xxfc.platform.order.entity.OrderLog
;
...
...
@@ -14,5 +17,22 @@ import com.github.wxiaoqi.security.common.biz.BaseBiz;
* @date 2019-07-23 17:33:06
*/
@Service
@Slf4j
public
class
OrderLogBiz
extends
BaseBiz
<
OrderLogMapper
,
OrderLog
>
{
public
void
logChange
(
Object
newObj
,
Object
oldObj
,
Integer
logUserId
,
String
orderNo
,
OrderLogEnum
orderLogEnum
)
{
try
{
OrderLog
orderLog
=
new
OrderLog
(){{
// setLogUserType();
setType
(
orderLogEnum
.
getCode
());
setLogUserId
(
logUserId
);
setLogContent
(
StrUtil
.
format
(
orderLogEnum
.
getContent
(),
orderNo
));
setDetail
(
StrUtil
.
format
(
orderLogEnum
.
getDesc
(),
oldObj
,
newObj
));
}};
insertSelectiveRe
(
orderLog
);
}
catch
(
Exception
e
)
{
log
.
error
(
e
.
getMessage
(),
e
);
}
}
}
\ No newline at end of file
xx-order/xx-order-server/src/main/java/com/xxfc/platform/order/biz/OrderVehicleCrosstownBiz.java
View file @
b4fdd45b
...
...
@@ -348,6 +348,18 @@ public class OrderVehicleCrosstownBiz extends BaseBiz<OrderVehicaleCrosstownMapp
}
}
}
//延期扣除费用
if
(
StringUtils
.
isNotBlank
(
orderVehicleCrosstownDto
.
getDelayVehicleDetail
()))
{
JSONArray
jsonArray
=
JSONArray
.
parseArray
(
orderVehicleCrosstownDto
.
getDelayVehicleDetail
());
if
(
jsonArray
!=
null
&&
jsonArray
.
size
()
>
0
)
{
for
(
int
i
=
0
;
i
<
jsonArray
.
size
();
i
++)
{
JSONObject
jsonObject
=
JSONObject
.
parseObject
(
jsonArray
.
get
(
i
).
toString
());
if
(
jsonObject
.
getString
(
"cost"
)
!=
null
)
{
cost
+=
Double
.
parseDouble
(
jsonObject
.
getString
(
"cost"
));
}
}
}
}
orderVehicleCrosstownDto
.
setUserLicenseImg
(
orderVehicleCrosstownDto
.
getLicenseImg
());
//扣除费用,每次都是重新计算
BigDecimal
amount
=
new
BigDecimal
(
cost
.
toString
()).
divide
(
new
BigDecimal
(
"1"
),
2
,
BigDecimal
.
ROUND_UP
);
...
...
xx-order/xx-order-server/src/main/java/com/xxfc/platform/order/biz/inner/OrderCalculateBiz.java
View file @
b4fdd45b
This diff is collapsed.
Click to expand it.
xx-order/xx-order-server/src/main/java/com/xxfc/platform/order/biz/inner/OrderCancelBiz.java
View file @
b4fdd45b
...
...
@@ -22,6 +22,8 @@ import com.xxfc.platform.order.pojo.price.CancelNoStartVO;
import
com.xxfc.platform.order.pojo.price.CancelStartedVO
;
import
com.xxfc.platform.order.pojo.price.CostDetailExtend
;
import
com.xxfc.platform.tour.feign.TourFeign
;
import
com.xxfc.platform.universal.constant.DictionaryKey
;
import
com.xxfc.platform.universal.entity.Dictionary
;
import
com.xxfc.platform.universal.feign.ThirdFeign
;
import
com.xxfc.platform.vehicle.common.RestResponse
;
import
com.xxfc.platform.vehicle.feign.VehicleFeign
;
...
...
@@ -132,6 +134,16 @@ public class OrderCancelBiz {
//触发退款流程
//判断是否已支付
if
(
SYS_TRUE
.
equals
(
baseOrder
.
getHasPay
()))
{
//缓冲取消时间(一个小时)
Map
<
String
,
Dictionary
>
dictionaryMap
=
thirdFeign
.
dictionaryGetAll4Map
().
getData
();
Long
autoCancelTime
=
Long
.
valueOf
(
dictionaryMap
.
get
(
APP_ORDER
+
"_"
+
DictionaryKey
.
CANCEL_TIME_BUFFER
).
getDetail
());
autoCancelTime
=
autoCancelTime
*
60L
*
1000L
;
//判断是否支付超过缓冲取消时间(一个小时)
Long
orderCrtLag
=
System
.
currentTimeMillis
()
-
baseOrder
.
getPayTime
();
Boolean
overCancelBuffer
=
(
orderCrtLag
>
autoCancelTime
)?
Boolean
.
TRUE
:
Boolean
.
FALSE
;
//判断订单类型
if
(
OrderTypeEnum
.
RENT_VEHICLE
.
getCode
().
equals
(
baseOrder
.
getType
()))
{
orvd
=
orderRentVehicleBiz
.
selectOne
(
new
OrderRentVehicleDetail
(){{
...
...
@@ -147,10 +159,11 @@ public class OrderCancelBiz {
//根据时间处理goodsAmount
//获取出发时间 到现在 距离时间
Long
timeLag
=
orvd
.
getStartTime
()
-
System
.
currentTimeMillis
();
if
(
timeLag
<
0
)
{
if
(
timeLag
<
0
&&
overCancelBuffer
)
{
Integer
useDays
=
orderCalculateBiz
.
getIncludeDays
(
orvd
.
getStartTime
(),
System
.
currentTimeMillis
());
if
(
useDays
>
orvd
.
get
DayNum
())
{
useDays
=
orvd
.
get
DayNum
();
if
(
useDays
>
orvd
.
obtainReal
DayNum
())
{
useDays
=
orvd
.
obtainReal
DayNum
();
}
inProgressVO
=
orderCalculateBiz
.
calculateOrderComplete
(
baseOrder
,
orvd
,
oad
,
vehicleItemDTO
,
useDays
,
Boolean
.
TRUE
);
...
...
@@ -222,7 +235,7 @@ public class OrderCancelBiz {
//退款流程
//违约金封顶 租车身份价 * 2天
orderAccountBiz
.
rentRefundProcessCancel
(
baseOrder
,
BigDecimal
.
ZERO
,
timeLag
,
APP_ORDER
+
"_"
+
RENT_REFUND
,
orvd
.
getDeposit
(),
vehicleItemDTO
.
getBuyAmount
(),
oad
,
vehicleItemDTO
.
getTopAmount
(
0
),
null
,
changeViolateAmount
);
orderAccountBiz
.
rentRefundProcessCancel
(
baseOrder
,
BigDecimal
.
ZERO
,
timeLag
,
APP_ORDER
+
"_"
+
RENT_REFUND
,
orvd
.
getDeposit
(),
vehicleItemDTO
.
getBuyAmount
(),
oad
,
vehicleItemDTO
.
getTopAmount
(
0
),
null
,
changeViolateAmount
,
(!
overCancelBuffer
)
);
//设置订单数据
//baseOrder.setDamagesAmount(csv.getDamagesAmount());
...
...
@@ -265,6 +278,7 @@ public class OrderCancelBiz {
}
}
else
if
(
OrderTypeEnum
.
TOUR
.
getCode
().
equals
(
baseOrder
.
getType
()))
{
otd
=
orderTourDetailBiz
.
selectOne
(
new
OrderTourDetail
(){{
setOrderId
(
baseOrder
.
getId
());
}});
...
...
@@ -291,7 +305,7 @@ public class OrderCancelBiz {
}
//退款流程
orderAccountBiz
.
rentRefundProcessCancel
(
baseOrder
,
adultItemAmount
.
add
(
childItemAmount
),
timeLag
,
APP_ORDER
+
"_"
+
key
,
BigDecimal
.
ZERO
,
BigDecimal
.
ZERO
,
oad
,
adultItemAmount
.
add
(
childItemAmount
),
changeViolateAmount
,
null
);
orderAccountBiz
.
rentRefundProcessCancel
(
baseOrder
,
adultItemAmount
.
add
(
childItemAmount
),
timeLag
,
APP_ORDER
+
"_"
+
key
,
BigDecimal
.
ZERO
,
BigDecimal
.
ZERO
,
oad
,
adultItemAmount
.
add
(
childItemAmount
),
changeViolateAmount
,
null
,
(!
overCancelBuffer
)
);
//如果有扣款项,则生成额外的费用明细
if
(
oad
.
getDeductions
().
size
()
>
0
)
{
...
...
xx-order/xx-order-server/src/main/java/com/xxfc/platform/order/biz/inner/OrderDelayBiz.java
0 → 100644
View file @
b4fdd45b
package
com
.
xxfc
.
platform
.
order
.
biz
.
inner
;
import
cn.hutool.core.bean.BeanUtil
;
import
cn.hutool.core.collection.CollUtil
;
import
cn.hutool.json.JSONUtil
;
import
com.github.wxiaoqi.security.admin.feign.UserFeign
;
import
com.github.wxiaoqi.security.admin.feign.dto.AppUserDTO
;
import
com.github.wxiaoqi.security.common.exception.BaseException
;
import
com.github.wxiaoqi.security.common.util.process.ResultCode
;
import
com.xxfc.platform.activity.feign.ActivityFeign
;
import
com.xxfc.platform.order.biz.*
;
import
com.xxfc.platform.order.contant.enumerate.ItemTypeEnum
;
import
com.xxfc.platform.order.contant.enumerate.OrderLogEnum
;
import
com.xxfc.platform.order.entity.OrderItem
;
import
com.xxfc.platform.order.entity.OrderRentVehicleDetail
;
import
com.xxfc.platform.order.pojo.order.DelayRentOrderDTO
;
import
com.xxfc.platform.order.pojo.order.OrderPageVO
;
import
com.xxfc.platform.order.pojo.order.VehicleItemDTO
;
import
com.xxfc.platform.order.pojo.price.DelayAddPriceVO
;
import
com.xxfc.platform.tour.feign.TourFeign
;
import
com.xxfc.platform.universal.constant.DictionaryKey
;
import
com.xxfc.platform.universal.entity.Dictionary
;
import
com.xxfc.platform.universal.feign.ThirdFeign
;
import
com.xxfc.platform.vehicle.common.RestResponse
;
import
com.xxfc.platform.vehicle.feign.VehicleFeign
;
import
com.xxfc.platform.vehicle.pojo.BookVehicleVO
;
import
com.xxfc.platform.vehicle.pojo.dto.order.VMCalendarPriceCostDTO
;
import
lombok.extern.slf4j.Slf4j
;
import
org.mockito.internal.util.collections.Sets
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Service
;
import
java.math.BigDecimal
;
import
java.util.List
;
import
java.util.Map
;
import
static
com
.
github
.
wxiaoqi
.
security
.
common
.
constant
.
CommonConstants
.
SYS_JSON_TRUE
;
import
static
com
.
github
.
wxiaoqi
.
security
.
common
.
constant
.
CommonConstants
.
SYS_TRUE
;
import
static
com
.
xxfc
.
platform
.
universal
.
constant
.
DictionaryKey
.
APP_ORDER
;
/**
* 订单退款记录表
*
* @author zjw
* @email nishijjo@qq.com
* @date 2019-06-18 11:08:09
*/
@Slf4j
@Service
public
class
OrderDelayBiz
{
@Autowired
BaseOrderBiz
baseOrderBiz
;
@Autowired
OrderItemBiz
orderItemBiz
;
@Autowired
OrderMemberDetailBiz
orderMemberDetailBiz
;
@Autowired
OrderTourDetailBiz
orderTourDetailBiz
;
@Autowired
OrderRentVehicleBiz
orderRentVehicleBiz
;
@Autowired
OrderMsgBiz
orderMsgBiz
;
@Autowired
OrderCalculateBiz
orderCalculateBiz
;
@Autowired
OrderAccountBiz
orderAccountBiz
;
@Autowired
OrderTemplateBiz
orderTemplateBiz
;
@Autowired
OrderLogBiz
orderLogBiz
;
@Autowired
UserFeign
userFeign
;
@Autowired
VehicleFeign
vehicleFeign
;
@Autowired
TourFeign
tourFeign
;
@Autowired
ThirdFeign
thirdFeign
;
@Autowired
ActivityFeign
activityFeign
;
public
void
delayRentOrder
(
OrderPageVO
orderPageVO
,
DelayRentOrderDTO
dto
)
{
OrderRentVehicleDetail
orvd
=
orderPageVO
.
getOrderRentVehicleDetail
();
OrderRentVehicleDetail
oldOrvd
=
BeanUtil
.
toBean
(
orvd
,
OrderRentVehicleDetail
.
class
);
Integer
delayAddDays
=
0
;
Integer
delayAddFreeDays
=
0
;
//分布式事务执行标记
Integer
cloudTransact
=
0
;
//计算delay多少天
delayAddDays
=
orderCalculateBiz
.
getIncludeDays
(
orvd
.
getStartTime
(),
dto
.
getDelayEndTime
());
delayAddDays
=
delayAddDays
-
orderPageVO
.
getOrderRentVehicleDetail
().
getDayNum
();
//判断
if
(
delayAddDays
<
0
)
{
throw
new
BaseException
(
ResultCode
.
PARAM_ILLEGAL_CODE
,
Sets
.
newSet
(
"延期时间不对"
));
}
else
{
//变化的延期免费天数
Integer
changeDelayFreeDays
=
0
;
List
<
VMCalendarPriceCostDTO
>
delayAmountList
;
if
(
delayAddDays
>
0
)
{
VehicleItemDTO
vehicleItemDTO
=
BeanUtil
.
toBean
(
orderItemBiz
.
selectOne
(
new
OrderItem
(){{
setType
(
ItemTypeEnum
.
VEHICLE_MODEL
.
getCode
());
setOrderId
(
orderPageVO
.
getId
());
}}),
VehicleItemDTO
.
class
);
List
<
VMCalendarPriceCostDTO
>
vmcpcds
=
vehicleItemDTO
.
getVehicleDetail
();
//获得延期天数费用
delayAmountList
=
orderItemBiz
.
getOverAmountList
(
vmcpcds
.
get
(
vmcpcds
.
size
()
-
1
).
getDate
(),
delayAddDays
,
orvd
.
getModelId
(),
orderPageVO
.
getUserId
());
//处理免费天数和免费金额
delayAmountList
.
parallelStream
().
forEach
(
vmcpcd
->
{
vmcpcd
.
setValidFreeDays
(
vmcpcd
.
getFreeDays
());
vmcpcd
.
setFreeAmount
(
vmcpcd
.
getPrice
());
});
delayAddFreeDays
=
delayAmountList
.
parallelStream
().
mapToInt
(
VMCalendarPriceCostDTO:
:
getFreeDays
).
sum
();
}
else
{
delayAmountList
=
CollUtil
.
newArrayList
();
delayAddFreeDays
=
0
;
}
//初始化变化的延期免费天数为延期天数
changeDelayFreeDays
=
delayAddFreeDays
;
//判断是否已经设置了延期, 修改变化的延期免费天数
if
(
orvd
.
getDelayAddDays
()
>
0
)
{
//extendDelayDays = delayAddDays - orvd.getDelayAddDays();
changeDelayFreeDays
=
delayAddFreeDays
-
orvd
.
getDelayAddFreeDays
();
}
//根据 changeDelayFreeDays 判断 是否拥有那么足够的天数
if
(
changeDelayFreeDays
>
0
)
{
AppUserDTO
appUserDTO
=
userFeign
.
userDetailById
(
orderPageVO
.
getUserId
()).
getData
();
if
(
appUserDTO
.
getRentFreeDays
()
<
changeDelayFreeDays
)
{
throw
new
BaseException
(
ResultCode
.
FAILED_CODE
,
Sets
.
newSet
(
"免费天数不够"
));
}
}
//触发调用修改预约
dto
.
setEndTime
(
dto
.
getDelayEndTime
());
dto
.
setStartTime
(
orderPageVO
.
getOrderRentVehicleDetail
().
getStartTime
());
//根据订单号获取订单
RestResponse
restResponse
=
vehicleFeign
.
updateOrderBookRecord
(
new
BookVehicleVO
()
{{
setVehicleId
(
orderPageVO
.
getOrderRentVehicleDetail
().
getVehicleId
());
setVehicleBookRecordId
(
orvd
.
getBookRecordId
());
setBookStartDate
(
dto
.
getBookStartDateTime
());
setBookEndDate
(
dto
.
getBookEndDateTime
());
setBookStartDateTime
(
dto
.
getBookStartDateTime
());
setBookEndDateTime
(
dto
.
getBookEndDateTime
());
setBookType
(
BOOK_TYPE_RENT
);
}});
if
(
!
SYS_JSON_TRUE
.
equals
(
restResponse
.
getStatus
()))
{
throw
new
BaseException
(
ResultCode
.
FAILED_CODE
,
Sets
.
newSet
(
"延期失败"
));
}
cloudTransact
=
1
;
//扣减免费天数
if
(
changeDelayFreeDays
>
0
)
{
int
result
=
userFeign
.
memberDays
(
orderPageVO
.
getUserId
(),
changeDelayFreeDays
,
UserFeign
.
MEMBER_DAYS_LOCK
);
if
(
result
<
0
)
{
throw
new
BaseException
(
ResultCode
.
FAILED_CODE
);
}
}
else
if
(
changeDelayFreeDays
<
0
){
int
result
=
userFeign
.
memberDays
(
orderPageVO
.
getUserId
(),
0
-
changeDelayFreeDays
,
UserFeign
.
MEMBER_DAYS_WITHDRAW
);
if
(
result
<
0
)
{
throw
new
BaseException
(
ResultCode
.
FAILED_CODE
);
}
}
cloudTransact
=
2
;
//更新OrderRentVehicleDetail
Map
<
String
,
Dictionary
>
dictionaryMap
=
thirdFeign
.
dictionaryGetAll4Map
().
getData
();
orvd
.
setDelayAddDamageSafe
(
dto
.
getNeedDamageSafe
());
orvd
.
setDelayAddDays
(
delayAddDays
);
orvd
.
setDelayAddFreeDays
(
delayAddFreeDays
);
orvd
.
setDelayAddEndTime
(
dto
.
getDelayEndTime
());
//修改还车时间
orvd
.
setEndTime
(
dto
.
getDelayEndTime
());
DelayAddPriceVO
delayAddPriceVO
=
new
DelayAddPriceVO
(){{
setDamageSafePrice
(
new
BigDecimal
(
dictionaryMap
.
get
(
APP_ORDER
+
"_"
+
DictionaryKey
.
DAMAGE_SAFE
).
getDetail
()));
setDelayAddDays
(
orvd
.
getDelayAddDays
());
setDelayAmountList
(
delayAmountList
);
}};
if
(
SYS_TRUE
.
equals
(
dto
.
getNeedDamageSafe
()))
{
delayAddPriceVO
.
initDelayDamageSafeAmount
();
}
orvd
.
setDelayAddDetail
(
JSONUtil
.
toJsonStr
(
delayAddPriceVO
));
orderRentVehicleBiz
.
updateSelectiveByIdRe
(
orvd
);
orderLogBiz
.
logChange
(
orvd
,
oldOrvd
,
dto
.
getOperateId
(),
orderPageVO
.
getNo
(),
OrderLogEnum
.
DELAY_MODIFY
);
}
}
}
\ No newline at end of file
xx-order/xx-order-server/src/main/java/com/xxfc/platform/order/biz/inner/OrderMsgBiz.java
View file @
b4fdd45b
...
...
@@ -517,7 +517,7 @@ public class OrderMsgBiz {
smsParams
.
add
(
orvd
.
getEndAddr
());
smsParams
.
add
(
DateUtil
.
formatDateTime
(
DateUtil
.
date
(
orvd
.
getStartTime
())));
smsParams
.
add
(
DateUtil
.
formatDateTime
(
DateUtil
.
date
(
orvd
.
getEndTime
())));
smsParams
.
add
(
orvd
.
get
DayNum
().
toString
());
smsParams
.
add
(
orvd
.
obtainReal
DayNum
().
toString
());
smsParams
.
add
(
appUserDTO
.
getUsername
());
}
}
...
...
xx-order/xx-order-server/src/main/java/com/xxfc/platform/order/jobhandler/RentDepositJobHandler.java
View file @
b4fdd45b
...
...
@@ -102,7 +102,8 @@ public class RentDepositJobHandler extends IJobHandler {
setType
(
crosstownTypeEnum
);
}});
if
(
crosstown
.
getCrtTime
().
compareTo
(
System
.
currentTimeMillis
()
-
(
rentDepositAutoRefundTime
*
60L
*
1000L
))
<
0
)
{
//提前31分钟 31 * 60L * 1000L 退钱
if
(
crosstown
.
getCrtTime
().
compareTo
(
System
.
currentTimeMillis
()
-
(
rentDepositAutoRefundTime
*
60L
*
1000L
-
(
31
*
60L
*
1000L
)))
<
0
)
{
orderAccountBiz
.
handleRentDepositMargin
(
baseOrder
,
orvd
,
crosstown
);
}
...
...
xx-order/xx-order-server/src/main/java/com/xxfc/platform/order/rest/BackStageOrderController.java
View file @
b4fdd45b
package
com
.
xxfc
.
platform
.
order
.
rest
;
import
cn.hutool.core.bean.BeanUtil
;
import
cn.hutool.core.collection.CollUtil
;
import
cn.hutool.core.collection.CollectionUtil
;
import
cn.hutool.core.date.DateUtil
;
import
cn.hutool.json.JSONUtil
;
import
com.fasterxml.jackson.databind.ObjectMapper
;
import
com.github.wxiaoqi.security.admin.entity.AppUserLogin
;
...
...
@@ -22,15 +24,22 @@ import com.google.common.collect.Lists;
import
com.xxfc.platform.activity.entity.Coupon
;
import
com.xxfc.platform.activity.feign.ActivityFeign
;
import
com.xxfc.platform.order.biz.*
;
import
com.xxfc.platform.order.biz.inner.OrderCalculateBiz
;
import
com.xxfc.platform.order.biz.inner.OrderDelayBiz
;
import
com.xxfc.platform.order.contant.enumerate.ItemTypeEnum
;
import
com.xxfc.platform.order.contant.enumerate.OrderTypeEnum
;
import
com.xxfc.platform.order.entity.OrderItem
;
import
com.xxfc.platform.order.entity.OrderRentVehicleDetail
;
import
com.xxfc.platform.order.pojo.OrderAccompanyDTO
;
import
com.xxfc.platform.order.pojo.order.*
;
import
com.xxfc.platform.order.pojo.price.DelayAddPriceVO
;
import
com.xxfc.platform.order.pojo.price.RentVehiclePriceVO
;
import
com.xxfc.platform.order.service.OrderRentVehicleService
;
import
com.xxfc.platform.tour.entity.TourUser
;
import
com.xxfc.platform.tour.feign.TourFeign
;
import
com.xxfc.platform.universal.constant.DictionaryKey
;
import
com.xxfc.platform.universal.entity.Dictionary
;
import
com.xxfc.platform.universal.feign.ThirdFeign
;
import
com.xxfc.platform.vehicle.common.RestResponse
;
import
com.xxfc.platform.vehicle.constant.VehicleBookRecordStatus
;
import
com.xxfc.platform.vehicle.entity.BranchCompany
;
...
...
@@ -39,6 +48,7 @@ import com.xxfc.platform.vehicle.entity.VehicleUserLicense;
import
com.xxfc.platform.vehicle.feign.VehicleFeign
;
import
com.xxfc.platform.vehicle.pojo.BookVehicleVO
;
import
com.xxfc.platform.vehicle.pojo.CompanyDetail
;
import
com.xxfc.platform.vehicle.pojo.dto.order.VMCalendarPriceCostDTO
;
import
io.swagger.annotations.Api
;
import
io.swagger.annotations.ApiOperation
;
import
jodd.util.StringUtil
;
...
...
@@ -52,17 +62,18 @@ import org.springframework.web.bind.annotation.*;
import
javax.annotation.Resource
;
import
java.io.IOException
;
import
java.math.BigDecimal
;
import
java.time.Instant
;
import
java.time.LocalDateTime
;
import
java.time.ZoneOffset
;
import
java.util.*
;
import
java.util.stream.Collectors
;
import
static
com
.
github
.
wxiaoqi
.
security
.
common
.
constant
.
CommonConstants
.
DATE_TIME_LINE_FORMATTER
;
import
static
com
.
github
.
wxiaoqi
.
security
.
common
.
constant
.
CommonConstants
.
YMR_SLASH_FORMATT
ER
;
import
static
com
.
github
.
wxiaoqi
.
security
.
common
.
constant
.
CommonConstants
.
*
;
import
static
com
.
xxfc
.
platform
.
universal
.
constant
.
DictionaryKey
.
APP_ORD
ER
;
@Controller
@RequestMapping
(
"baseOrder"
)
//
@RequestMapping("baseOrder")
@Api
(
value
=
"订单后台相关"
,
tags
=
{
"订单后台相关"
})
@Slf4j
public
class
BackStageOrderController
extends
CommonBaseController
implements
UserRestInterface
{
...
...
@@ -83,6 +94,12 @@ public class BackStageOrderController extends CommonBaseController implements Us
@Autowired
OrderItemBiz
orderItemBiz
;
@Autowired
OrderCalculateBiz
orderCalculateBiz
;
@Autowired
OrderDelayBiz
orderDelayBiz
;
@Autowired
UserFeign
userFeign
;
...
...
@@ -95,6 +112,9 @@ public class BackStageOrderController extends CommonBaseController implements Us
@Resource
VehicleFeign
vehicleFeign
;
@Autowired
ThirdFeign
thirdFeign
;
@Autowired
BackgroundBaseOrderBiz
backgroundBaseOrderBiz
;
@Override
...
...
@@ -102,7 +122,7 @@ public class BackStageOrderController extends CommonBaseController implements Us
return
userFeign
;
}
@RequestMapping
(
value
=
"/getOrderList"
,
method
=
RequestMethod
.
GET
)
@RequestMapping
(
value
=
"/
baseOrder/
getOrderList"
,
method
=
RequestMethod
.
GET
)
@ResponseBody
@ApiOperation
(
value
=
"获取后台订单列表"
)
@IgnoreClientToken
...
...
@@ -278,7 +298,7 @@ public class BackStageOrderController extends CommonBaseController implements Us
return
new
ObjectRestResponse
<>().
data
(
pageDataVO
);
}
@RequestMapping
(
value
=
"/getVehicleList"
,
method
=
RequestMethod
.
GET
)
@RequestMapping
(
value
=
"/
baseOrder/
getVehicleList"
,
method
=
RequestMethod
.
GET
)
@ResponseBody
@ApiOperation
(
value
=
"交还车租车订单列表"
)
@IgnoreClientToken
...
...
@@ -341,7 +361,7 @@ public class BackStageOrderController extends CommonBaseController implements Us
return
new
ObjectRestResponse
<>().
data
(
pageDataVO
);
}
@RequestMapping
(
value
=
"/getTourList"
,
method
=
RequestMethod
.
GET
)
@RequestMapping
(
value
=
"/
baseOrder/
getTourList"
,
method
=
RequestMethod
.
GET
)
@ResponseBody
@ApiOperation
(
value
=
"交还车旅游订单列表"
)
@IgnoreClientToken
...
...
@@ -356,7 +376,7 @@ public class BackStageOrderController extends CommonBaseController implements Us
return
new
ObjectRestResponse
<>().
data
(
pageDataVO
);
}
@GetMapping
(
value
=
"/orderDetail"
)
@GetMapping
(
value
=
"/
baseOrder/
orderDetail"
)
@ApiOperation
(
value
=
"交还车获取订单详情,带驾驶人信息"
)
@IgnoreClientToken
@ResponseBody
...
...
@@ -377,7 +397,7 @@ public class BackStageOrderController extends CommonBaseController implements Us
@ApiOperation
(
"结合后台人员所属公司查询订单详情"
)
@RequestMapping
(
value
=
"/company/{no}"
,
method
=
RequestMethod
.
GET
)
@RequestMapping
(
value
=
"/
baseOrder/
company/{no}"
,
method
=
RequestMethod
.
GET
)
@IgnoreClientToken
@ResponseBody
public
ObjectRestResponse
<
OrderPageVO
>
companyGet
(
@PathVariable
String
no
)
{
...
...
@@ -395,16 +415,15 @@ public class BackStageOrderController extends CommonBaseController implements Us
}
@ApiOperation
(
"更換車輛"
)
@RequestMapping
(
value
=
"/bg/change-vehicle"
,
method
=
RequestMethod
.
POST
)
@RequestMapping
(
value
=
"/b
aseOrder/b
g/change-vehicle"
,
method
=
RequestMethod
.
POST
)
@IgnoreClientToken
@ResponseBody
public
ObjectRestResponse
<
OrderPageVO
>
changeVehicle
(
@RequestBody
ChangeVehicleDTO
dto
)
{
checkAdminUser
();
//根据订单号获取订单
//查询列表数据
Query
query
=
baseOrderBiz
.
initQuery
(
dto
.
getNo
());
query
.
put
(
"crtUser"
,
null
);
query
.
put
(
"userId"
,
null
);
Query
query
=
baseOrderBiz
.
initBgQuery
(
dto
.
getNo
());
PageDataVO
<
OrderPageVO
>
page
=
PageDataVO
.
pageInfo
(
query
,
()
->
baseOrderBiz
.
pageByParm
(
query
.
getSuper
()));
OrderPageVO
orderPageVO
=
page
.
getData
().
get
(
0
);
if
(
null
==
orderPageVO
)
{
...
...
@@ -438,13 +457,35 @@ public class BackStageOrderController extends CommonBaseController implements Us
return
ObjectRestResponse
.
succ
();
}
@PostMapping
(
"/updateEndCompany"
)
@ApiOperation
(
"修改租车订单延长时间"
)
@RequestMapping
(
value
=
"/baseOrder/bg/delay-rent-order"
,
method
=
RequestMethod
.
POST
)
@IgnoreClientToken
@ResponseBody
public
ObjectRestResponse
<
OrderPageVO
>
delayRentOrder
(
@RequestBody
DelayRentOrderDTO
dto
)
{
checkAdminUser
();
dto
.
setOperateId
(
Integer
.
valueOf
(
"-1"
+
getCurrentUserId
()));
Query
query
=
baseOrderBiz
.
initBgQuery
(
dto
.
getNo
());
PageDataVO
<
OrderPageVO
>
page
=
PageDataVO
.
pageInfo
(
query
,
()
->
baseOrderBiz
.
pageByParm
(
query
.
getSuper
()));
OrderPageVO
orderPageVO
=
page
.
getData
().
get
(
0
);
if
(
null
==
orderPageVO
||
!
OrderTypeEnum
.
RENT_VEHICLE
.
getCode
().
equals
(
orderPageVO
.
getType
()))
{
throw
new
BaseException
(
ResultCode
.
PARAM_ILLEGAL_CODE
,
Sets
.
newSet
(
"订单不存在,或不是租车订单"
));
}
orderDelayBiz
.
delayRentOrder
(
orderPageVO
,
dto
);
return
ObjectRestResponse
.
succ
();
}
@PostMapping
(
"/baseOrder/updateEndCompany"
)
@ResponseBody
public
ObjectRestResponse
updateEndCompany
(
@RequestBody
OrderRentVehicleDetail
orderRentVehicleDetail
)
{
return
baseOrderBiz
.
save
(
orderRentVehicleDetail
);
}
@GetMapping
(
value
=
"/getAll"
)
@GetMapping
(
value
=
"/
baseOrder/
getAll"
)
@ResponseBody
public
ObjectRestResponse
getAllOrderList
(
BaseOrderController
.
QueryOrderList
dto
)
{
return
backgroundBaseOrderBiz
.
getAllOrderList
(
dto
);
...
...
xx-order/xx-order-server/src/main/java/com/xxfc/platform/order/service/OrderRentVehicleService.java
View file @
b4fdd45b
...
...
@@ -207,6 +207,8 @@ public class OrderRentVehicleService extends AbstractOrderHandle<OrderRentVehicl
bo
.
getOrder
().
setCrtUser
(
bo
.
getCrtUser
());
}
//
bo
.
setMetaEndTime
(
bo
.
getEndTime
());
super
.
handleDetail
(
bo
);
}
catch
(
Exception
e
)
{
//事务补偿处理
...
...
xx-summit/xx-summit-api/src/main/java/com/xxfc/platform/summit/entity/Activity.java
View file @
b4fdd45b
...
...
@@ -110,6 +110,11 @@ public class Activity {
@ApiModelProperty
(
"0-默认;1-报名中,2-进行中;3-已结束"
)
private
Integer
status
;
@Column
(
name
=
"live_url"
)
@ApiModelProperty
(
"直播地址"
)
private
String
liveUrl
;
@Column
(
name
=
"content"
)
@ApiModelProperty
(
"活动图文内容(峰会主题)"
)
private
String
content
;
...
...
xx-summit/xx-summit-server/src/main/java/com/xxfc/platform/summit/biz/UserBiz.java
View file @
b4fdd45b
...
...
@@ -81,6 +81,7 @@ public class UserBiz extends BaseBiz<UserMapper, User> {
userId
=
uses
.
get
(
0
).
getId
();
user
.
setId
(
userId
);
}
else
{
user
.
setId
(
null
);
Long
time
=
System
.
currentTimeMillis
()/
1000L
;
user
.
setWeId
(
weId
);
user
.
setRId
(
rId
);
...
...
@@ -97,12 +98,12 @@ public class UserBiz extends BaseBiz<UserMapper, User> {
log
.
info
(
"----code为空---"
);
throw
new
BaseException
(
ResultCode
.
FAILED_CODE
,
Sets
.
newSet
(
"code为空"
));
}
String
openid
=
"oXDd91MppH9i5F7xzPwigiMj--5w"
;
/*
String access_token = null;
String
openid
=
null
;
String
access_token
=
null
;
try
{
JSONObject
jsonData
=
weixinService
.
getAccessToken
(
code
);
openid = jsonData.getString("openid");
access_token = jsonData.getString("access_token");
openid
=
jsonData
.
getString
(
"openid"
);
access_token
=
jsonData
.
getString
(
"access_token"
);
String
refresh_token
=
jsonData
.
getString
(
"refresh_token"
);
log
.
info
(
"-----微信回调userInfo---openid=="
+
openid
+
"----access_token==="
+
access_token
);
//验证access_token是否失效
...
...
@@ -116,15 +117,15 @@ public class UserBiz extends BaseBiz<UserMapper, User> {
e
.
printStackTrace
();
log
.
info
(
"网络异常==="
+
e
.
getMessage
());
throw
new
BaseException
(
ResultCode
.
FAILED_CODE
,
Sets
.
newSet
(
"网络异常"
));
}
*/
}
try
{
// 获取微信用户基本信息
/*
JSONObject userinfo_json = weixinService.getUserInfo(access_token,openid);
JSONObject
userinfo_json
=
weixinService
.
getUserInfo
(
access_token
,
openid
);
if
(
userinfo_json
==
null
||
StringUtils
.
isNotBlank
(
userinfo_json
.
getString
(
"errcode"
)))
{
log
.
info
(
"调用微信用户基本信息接口失败"
);
throw
new
BaseException
(
ResultCode
.
FAILED_CODE
,
Sets
.
newSet
(
"调用微信用户基本信息接口失败"
));
}
log.info("微信用户基本信息---user===" +userinfo_json.toJSONString());
*/
log
.
info
(
"微信用户基本信息---user==="
+
userinfo_json
.
toJSONString
());
if
(
activityId
==
null
||
activityId
==
0
){
ActivityBm
activityBm
=
activityBmBiz
.
userInfo
(
key
);
if
(
activityBm
==
null
){
...
...
@@ -138,9 +139,9 @@ public class UserBiz extends BaseBiz<UserMapper, User> {
throw
new
BaseException
(
ResultCode
.
FAILED_CODE
,
Sets
.
newSet
(
"redis的报名信息activityId---为空"
));
}
User
userInfo
=
new
User
();
String
nickName
=
"苹果呀"
;
//
userinfo_json.getString("nickname");
String
headimgurl
=
"http://thirdwx.qlogo.cn/mmopen/4eFHvhmOX6XuiaG6ib7wxkLa8AwMLFIbW9BSJ7EmwC3kRMUdgCrobdRUbhjMXbkY7aBc2CazjXFJiap5ianMH6yQnH2UQ4TfkXJw/132"
;
//
userinfo_json.getString("headimgurl");
String
sex
=
"2"
;
//
userinfo_json.getString("sex");
String
nickName
=
userinfo_json
.
getString
(
"nickname"
);
String
headimgurl
=
userinfo_json
.
getString
(
"headimgurl"
);
String
sex
=
userinfo_json
.
getString
(
"sex"
);
if
(
StringUtils
.
isBlank
(
sex
)){
sex
=
"0"
;
}
...
...
xx-universal/xx-universal-api/src/main/java/com/xxfc/platform/universal/constant/DictionaryKey.java
View file @
b4fdd45b
...
...
@@ -56,7 +56,7 @@ public class DictionaryKey {
public
static
final
String
TOUR_IN_REFUND
=
"TOUR_IN_REFUND"
;
/**
* 租车:公司司机租金、免赔费用、违章预备金
* 租车:公司司机租金、免赔费用、违章预备金
、租车时间缓冲(小时)
*/
public
static
final
String
DRIVER_PRICE
=
"DRIVER_PRICE"
;
public
static
final
String
DAMAGE_SAFE
=
"DAMAGE_SAFE"
;
...
...
@@ -84,4 +84,9 @@ public class DictionaryKey {
* 自动退款保留押金的时间(小时)
*/
public
static
final
String
RENT_DEPOSIT_AUTO_REFUND_TIME
=
"RENT_DEPOSIT_AUTO_REFUND_TIME"
;
/**
* 取消时间缓冲(分钟)
*/
public
static
final
String
CANCEL_TIME_BUFFER
=
"CANCEL_TIME_BUFFER"
;
}
xx-vehicle/xx-vehicle-api/src/main/java/com/xxfc/platform/vehicle/feign/VehicleFeign.java
View file @
b4fdd45b
package
com
.
xxfc
.
platform
.
vehicle
.
feign
;
import
com.github.wxiaoqi.security.admin.feign.dto.UserDTO
;
import
com.github.wxiaoqi.security.common.msg.ObjectRestResponse
;
import
com.github.wxiaoqi.security.common.vo.GoodDataVO
;
import
com.github.wxiaoqi.security.common.vo.PageDataVO
;
...
...
@@ -16,7 +15,9 @@ import org.springframework.cloud.openfeign.FeignClient;
import
org.springframework.http.MediaType
;
import
org.springframework.web.bind.annotation.*
;
import
java.util.*
;
import
java.util.List
;
import
java.util.Map
;
import
java.util.Set
;
/**
* Created by ace on 2017/9/15.
...
...
@@ -200,6 +201,14 @@ public interface VehicleFeign {
@RequestParam
(
value
=
"endDate"
)
Long
endDate
,
@RequestParam
(
value
=
"vehicleModelId"
)
Integer
vehicleModelId
,
@RequestParam
(
value
=
"userId"
)
Integer
userId
);
/**
* 订单修改订单时间,同时需要修改预定记录
* * @param bookVehicleVo
* @return
*/
@RequestMapping
(
value
=
"/vehicleInfo/bookRecord/order-update"
,
method
=
RequestMethod
.
POST
)
public
RestResponse
updateOrderBookRecord
(
@RequestBody
BookVehicleVO
bookVehicleVo
);
@GetMapping
(
"/branchCompany/company_info"
)
Map
<
Integer
,
String
>
findCompanyMap
();
...
...
xx-vehicle/xx-vehicle-api/src/main/java/com/xxfc/platform/vehicle/pojo/BookVehicleVO.java
View file @
b4fdd45b
...
...
@@ -7,24 +7,30 @@ import java.util.Map;
@Data
public
class
BookVehicleVO
{
//用途
public
static
final
int
BOOK_TYPE_RENT
=
1
;
/**
* 车辆id
*/
@ApiModelProperty
(
"车辆id"
)
private
String
vehicleId
;
/**
* 填写RecordId 修改日期
*/
private
Long
vehicleBookRecordId
;
/**
* 预定目标日期(开始)
*/
@ApiModelProperty
(
"预定目标日期(开始)"
)
@ApiModelProperty
(
"预定目标日期(开始)
yyyy-MM-dd HH:mm:ss
"
)
private
String
bookStartDate
;
/**
* 预定目标日期(结束)
*/
@ApiModelProperty
(
"预定目标日期(结束)"
)
@ApiModelProperty
(
"预定目标日期(结束)
yyyy-MM-dd HH:mm:ss
"
)
private
String
bookEndDate
;
/**
...
...
xx-vehicle/xx-vehicle-api/src/main/java/com/xxfc/platform/vehicle/pojo/UsableVeicleDTO.java
View file @
b4fdd45b
...
...
@@ -74,4 +74,10 @@ public class UsableVeicleDTO extends PageParam {
this
.
endDate
=
DEFAULT_DATE_TIME_FORMATTER
.
format
(
LocalDateTime
.
ofInstant
(
Instant
.
ofEpochMilli
(
endDateTamp
),
ZoneOffset
.
ofHours
(
8
)));
this
.
endDateExtend
=
DEFAULT_DATE_TIME_FORMATTER
.
format
(
LocalDateTime
.
ofInstant
(
Instant
.
ofEpochMilli
(
endDateTamp
),
ZoneOffset
.
ofHours
(
8
)).
plusDays
(
1L
));
}
// private Boolean isTest;
//
// private Integer testCompanyId;
//
// private Integer testModelId;
}
\ No newline at end of file
xx-vehicle/xx-vehicle-api/src/main/java/com/xxfc/platform/vehicle/pojo/dto/order/VMCalendarPriceCostDTO.java
View file @
b4fdd45b
...
...
@@ -23,6 +23,11 @@ public class VMCalendarPriceCostDTO extends VehicleModelCalendarPriceDTO {
*/
private
BigDecimal
freeAmount
=
BigDecimal
.
ZERO
;
/**
* 生效的免费天数
*/
private
Integer
validFreeDays
=
0
;
public
void
setFreeAndConsumeAmount
(
BigDecimal
realAmount
,
BigDecimal
freeAmount
)
{
setFreeAmount
(
freeAmount
);
setConsumeAmount
(
realAmount
.
subtract
(
freeAmount
));
...
...
xx-vehicle/xx-vehicle-server/src/main/java/com/xxfc/platform/vehicle/biz/VehicleBiz.java
View file @
b4fdd45b
...
...
@@ -399,7 +399,7 @@ public class VehicleBiz extends BaseBiz<VehicleMapper, Vehicle> implements UserR
DateTime
startDay
=
DateTime
.
parse
(
bookVehicleVo
.
getBookStartDate
(),
DATE_TIME_FORMATTER
);
DateTime
endDay
=
DateTime
.
parse
(
bookVehicleVo
.
getBookEndDate
(),
DATE_TIME_FORMATTER
);
//转换日期范围为列表,并检查是否合法
fillDateList4DatePeriod
(
yearMonthAndDate
,
DateTime
.
parse
(
startDay
.
toString
(
DEFAULT_DATE_TIME_FORMATTER
),
DEFAULT_DATE_TIME_FORMATTER
),
DateTime
.
parse
(
endDay
.
toString
(
DEFAULT_DATE_TIME_FORMATTER
),
DEFAULT_DATE_TIME_FORMATTER
));
fillDateList4DatePeriod
(
yearMonthAndDate
,
DateTime
.
parse
(
startDay
.
toString
(
DEFAULT_DATE_TIME_FORMATTER
),
DEFAULT_DATE_TIME_FORMATTER
),
DateTime
.
parse
(
endDay
.
toString
(
DEFAULT_DATE_TIME_FORMATTER
),
DEFAULT_DATE_TIME_FORMATTER
)
,
bookVehicleVo
.
getNotCheckTimeLegal
()
);
if
(
yearMonthAndDate
.
size
()
>
3
)
{
//连续的日期最多夸3个月
throw
new
BaseException
(
ResultCode
.
ONLY_BOOK_TWO_MONTH
);
}
...
...
@@ -702,7 +702,7 @@ public class VehicleBiz extends BaseBiz<VehicleMapper, Vehicle> implements UserR
DateTime
startDay
=
DateTime
.
parse
(
bookVehicleVo
.
getBookStartDate
(),
DATE_TIME_FORMATTER
);
DateTime
endDay
=
DateTime
.
parse
(
bookVehicleVo
.
getBookEndDate
(),
DATE_TIME_FORMATTER
);
//转换日期范围为列表,并检查是否合法
fillDateList4DatePeriod
(
yearMonthAndDate
,
DateTime
.
parse
(
startDay
.
toString
(
DEFAULT_DATE_TIME_FORMATTER
),
DEFAULT_DATE_TIME_FORMATTER
),
DateTime
.
parse
(
endDay
.
toString
(
DEFAULT_DATE_TIME_FORMATTER
),
DEFAULT_DATE_TIME_FORMATTER
));
fillDateList4DatePeriod
(
yearMonthAndDate
,
DateTime
.
parse
(
startDay
.
toString
(
DEFAULT_DATE_TIME_FORMATTER
),
DEFAULT_DATE_TIME_FORMATTER
),
DateTime
.
parse
(
endDay
.
toString
(
DEFAULT_DATE_TIME_FORMATTER
),
DEFAULT_DATE_TIME_FORMATTER
)
,
bookVehicleVo
.
getNotCheckTimeLegal
()
);
if
(
yearMonthAndDate
.
size
()
>
3
)
{
//连续的日期最多夸3个月
throw
new
BaseException
(
ResultCode
.
ONLY_BOOK_TWO_MONTH
);
}
...
...
@@ -824,11 +824,14 @@ public class VehicleBiz extends BaseBiz<VehicleMapper, Vehicle> implements UserR
* @param startDay
* @param endDay
*/
private
void
fillDateList4DatePeriod
(
Map
<
String
,
List
<
String
>>
yearMonthAndDate
,
DateTime
startDay
,
DateTime
endDay
)
{
private
void
fillDateList4DatePeriod
(
Map
<
String
,
List
<
String
>>
yearMonthAndDate
,
DateTime
startDay
,
DateTime
endDay
,
Boolean
notCheckTimeLegal
)
{
for
(
DateTime
curDate
=
startDay
;
curDate
.
compareTo
(
endDay
)
<=
0
;
curDate
=
curDate
.
plusDays
(
1
))
{
String
curDateStr
=
curDate
.
toString
(
DEFAULT_DATE_TIME_FORMATTER
);
if
(
curDateStr
.
compareTo
(
DateTime
.
now
().
toString
(
DEFAULT_DATE_TIME_FORMATTER
))
<
0
)
{
throw
new
BaseException
(
ResultCode
.
ONLY_BOOK_FROM_TODAY
);
if
(!
Boolean
.
TRUE
.
equals
(
notCheckTimeLegal
))
{
//判定时间是否合法
if
(
curDateStr
.
compareTo
(
DateTime
.
now
().
toString
(
DEFAULT_DATE_TIME_FORMATTER
))
<
0
)
{
throw
new
BaseException
(
ResultCode
.
ONLY_BOOK_FROM_TODAY
);
}
}
String
curYearMonth
=
curDate
.
toString
(
YEARMONTH_DATE_TIME_FORMATTER
);
if
(!
yearMonthAndDate
.
containsKey
(
curYearMonth
))
{
...
...
xx-vehicle/xx-vehicle-server/src/main/java/com/xxfc/platform/vehicle/biz/VehicleModelCalendarPriceBiz.java
View file @
b4fdd45b
...
...
@@ -400,7 +400,7 @@ public class VehicleModelCalendarPriceBiz extends BaseBiz<VehicleModelCalendarPr
log
.
info
(
"参数:【{}==当前时间:{}==价格:{}==折扣:{}】"
,
festivalDayMap
,
current_date
,
vehicle_price
,
discount
);
Map
<
String
,
Object
>
vehicle_price_days_map
=
new
HashMap
<>(
3
);
Integer
free_days
=
DEFAULT_FREE_DAYS
;
vehicle_price_days_map
.
put
(
BASE_PRICE_VAL
,
vehicle_price
);
//
vehicle_price_days_map.put(BASE_PRICE_VAL, vehicle_price);
if
(
MapUtil
.
isNotEmpty
(
festivalDayMap
))
{
VehicleModelHolidayPriceDTO
vehicleModelHolidayPriceDTO
=
festivalDayMap
.
get
(
current_date
);
if
(
Objects
.
nonNull
(
vehicleModelHolidayPriceDTO
))
{
...
...
@@ -408,6 +408,7 @@ public class VehicleModelCalendarPriceBiz extends BaseBiz<VehicleModelCalendarPr
free_days
=
vehicleModelHolidayPriceDTO
.
getFreeDays
()
==
null
?
free_days
:
vehicleModelHolidayPriceDTO
.
getFreeDays
();
}
}
vehicle_price_days_map
.
put
(
BASE_PRICE_VAL
,
vehicle_price
);
vehicle_price
=
vehicle_price
.
multiply
(
new
BigDecimal
(
Objects
.
toString
(
discount
/
100.00
)));
vehicle_price_days_map
.
put
(
PRICE_VAL
,
vehicle_price
);
vehicle_price_days_map
.
put
(
DAYS_VAL
,
free_days
);
...
...
xx-vehicle/xx-vehicle-server/src/main/java/com/xxfc/platform/vehicle/rest/VehicleController.java
View file @
b4fdd45b
...
...
@@ -229,6 +229,24 @@ public class VehicleController extends BaseController<VehicleBiz> implements Use
return
RestResponse
.
suc
();
}
/**
* 订单修改订单时间,同时需要修改预定记录
* * @param bookVehicleVo
* @return
*/
@RequestMapping
(
value
=
"/bookRecord/order-update"
,
method
=
RequestMethod
.
POST
)
@ApiOperation
(
value
=
"订单修改订单时间"
)
public
RestResponse
updateOrderBookRecord
(
@RequestBody
BookVehicleVO
bookVehicleVo
)
throws
Exception
{
Integer
operatorId
=
Integer
.
parseInt
(
BaseContextHandler
.
getUserID
());
String
userName
=
BaseContextHandler
.
getName
();
bookVehicleVo
.
setStatus
(
VehicleBookRecordStatus
.
APPROVE
.
getCode
());
bookVehicleVo
.
setNotCheckTimeLegal
(
Boolean
.
TRUE
);
baseBiz
.
applyVehicle
(
operatorId
,
bookVehicleVo
,
userName
);
return
RestResponse
.
suc
();
}
/**
* 申请预定车辆 需要审核
*
...
...
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