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
0e172920
Commit
0e172920
authored
Nov 06, 2019
by
jiaorz
Browse files
Options
Browse Files
Download
Plain Diff
Merge remote-tracking branch 'origin/dev' into dev
parents
3689d3a1
689d920b
Changes
22
Hide whitespace changes
Inline
Side-by-side
Showing
22 changed files
with
254 additions
and
141 deletions
+254
-141
RabbitConstant.java
...wxiaoqi/security/common/config/rabbit/RabbitConstant.java
+1
-0
AppUserLoginBiz.java
...om/github/wxiaoqi/security/admin/biz/AppUserLoginBiz.java
+0
-1
AppUserSellingWaterBiz.java
...ub/wxiaoqi/security/admin/biz/AppUserSellingWaterBiz.java
+48
-3
RabbitAdminConfig.java
...thub/wxiaoqi/security/admin/config/RabbitAdminConfig.java
+1
-0
WaterMQHandler.java
...github/wxiaoqi/security/admin/handler/WaterMQHandler.java
+9
-1
AppUserController.java
...github/wxiaoqi/security/admin/rest/AppUserController.java
+4
-0
BaseOrder.java
...c/main/java/com/xxfc/platform/order/entity/BaseOrder.java
+5
-0
OrderItem.java
...c/main/java/com/xxfc/platform/order/entity/OrderItem.java
+8
-0
OrderMQDTO.java
...main/java/com/xxfc/platform/order/pojo/mq/OrderMQDTO.java
+3
-0
VehicleItemDTO.java
...va/com/xxfc/platform/order/pojo/order/VehicleItemDTO.java
+58
-9
NotifyUrlDTO.java
...n/java/com/xxfc/platform/order/pojo/pay/NotifyUrlDTO.java
+4
-0
BaseOrderBiz.java
...c/main/java/com/xxfc/platform/order/biz/BaseOrderBiz.java
+5
-4
OrderAccountBiz.java
...ain/java/com/xxfc/platform/order/biz/OrderAccountBiz.java
+7
-0
OrderItemBiz.java
...c/main/java/com/xxfc/platform/order/biz/OrderItemBiz.java
+1
-0
OrderCalculateBiz.java
.../com/xxfc/platform/order/biz/inner/OrderCalculateBiz.java
+21
-13
OrderCancelBiz.java
...ava/com/xxfc/platform/order/biz/inner/OrderCancelBiz.java
+16
-9
BaseOrderController.java
...ava/com/xxfc/platform/order/rest/BaseOrderController.java
+1
-1
OrderRefundController.java
...a/com/xxfc/platform/order/rest/OrderRefundController.java
+2
-82
AbstractOrderHandle.java
.../com/xxfc/platform/order/service/AbstractOrderHandle.java
+2
-2
OrderRentVehicleService.java
.../xxfc/platform/order/service/OrderRentVehicleService.java
+30
-16
VMCalendarPriceCostDTO.java
...atform/vehicle/pojo/dto/order/VMCalendarPriceCostDTO.java
+16
-0
VehicleModelHolidayPriceBiz.java
...xfc/platform/vehicle/biz/VehicleModelHolidayPriceBiz.java
+12
-0
No files found.
ace-common/src/main/java/com/github/wxiaoqi/security/common/config/rabbit/RabbitConstant.java
View file @
0e172920
...
...
@@ -28,6 +28,7 @@ public class RabbitConstant {
public
static
final
String
KEY_ORDER_PAY
=
"order.pay"
;
public
static
final
String
KEY_ORDER_FINLISH
=
"order.finlish"
;
public
static
final
String
KEY_ORDER_CANCEL
=
"order.cancel"
;
public
static
final
String
KEY_ORDER_PART_DEPOSIT
=
"order.partDeposit"
;
//钱包
public
static
final
String
KEY_WALLET_ADD
=
"wallet.add"
;
...
...
ace-modules/ace-admin/src/main/java/com/github/wxiaoqi/security/admin/biz/AppUserLoginBiz.java
View file @
0e172920
...
...
@@ -336,7 +336,6 @@ public class AppUserLoginBiz extends BaseBiz<AppUserLoginMapper, AppUserLogin> {
return
mapper
.
getUserByUsernameAndRealName
(
username
,
realName
);
}
@CacheClear
(
pre
=
"user{2}"
)
...
...
ace-modules/ace-admin/src/main/java/com/github/wxiaoqi/security/admin/biz/AppUserSellingWaterBiz.java
View file @
0e172920
...
...
@@ -15,11 +15,9 @@ import org.apache.commons.collections.CollectionUtils;
import
org.springframework.beans.BeanUtils
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Service
;
import
com.github.wxiaoqi.security.admin.mapper.AppUserSellingWaterMapper
;
import
com.github.wxiaoqi.security.common.biz.BaseBiz
;
import
tk.mybatis.mapper.entity.Example
;
import
java.math.BigDecimal
;
import
java.util.*
;
import
java.util.function.Supplier
;
...
...
@@ -198,8 +196,43 @@ public class AppUserSellingWaterBiz extends BaseBiz<AppUserSellingWaterMapper, A
log
.
info
(
"订单完成计算用户拥金----finishOrderWater----id===="
+
id
+
"---commission=="
+
commission
+
"----orderType==="
+
orderType
);
amount
=
amount
.
add
(
commission
);
}
log
.
info
(
"订单完成计算用户拥金----finishOrderWater----orderId===="
+
orderId
+
"---amount=="
+
amount
);
if
(
orderType
==
1
){
List
<
OrderGoodsDTO
>
goodsDTOList
=
orderWaterDTO
.
getGoodsDTOList
();
log
.
info
(
"租车订单完成-----goodsDTOList==="
+
goodsDTOList
);
if
(
CollectionUtils
.
isNotEmpty
(
goodsDTOList
)){
for
(
OrderGoodsDTO
goodsDto
:
goodsDTOList
)
{
//商品id
Integer
goodId
=
goodsDto
.
getGoodId
();
//商品价格
BigDecimal
price
=
goodsDto
.
getPrice
();
AppUserSellingWater
sellingWater
=
new
AppUserSellingWater
();
sellingWater
.
setOrderId
(
orderId
);
sellingWater
.
setGoodId
(
goodId
);
sellingWater
=
selectOne
(
sellingWater
);
if
(
sellingWater
==
null
||
sellingWater
.
getExtract
()==
null
||
sellingWater
.
getExtract
()==
0
)
{
log
.
info
(
"租车订单完成-----sellingWater---不存在或extract---为空"
);
continue
;
}
if
(
price
.
compareTo
(
sellingWater
.
getPrice
())>=
0
){
log
.
info
(
"租车订单完成-----完成价格大于支付价格"
);
continue
;
}
price
=
price
.
subtract
(
sellingWater
.
getPrice
());
Integer
extract
=
sellingWater
.
getExtract
();
log
.
info
(
"租车订单完成-----price====="
+
price
+
"---extract===="
+
extract
);
BigDecimal
commission
=
price
.
multiply
(
new
BigDecimal
(
extract
+
""
)).
divide
(
new
BigDecimal
(
"100"
),
2
,
BigDecimal
.
ROUND_HALF_UP
);
log
.
info
(
"租车订单完成--------userId==="
+
userId
+
"---commission==="
+
commission
);
sellingWater
.
setWaiting
(
1
);
sellingWater
.
setStatus
(
1
);
sellingWater
.
setCommission
(
commission
);
insertSelective
(
sellingWater
);
log
.
info
(
"租车订单完成计算用户拥成功----payOrderWater--------userId==="
+
userId
);
amount
=
amount
.
subtract
(
commission
);
}
}
}
log
.
info
(
"订单完成计算用户拥金----finishOrderWater--------orderId==="
+
orderId
+
"----amount===="
+
amount
+
"--orderType==="
+
orderType
);
int
r
=
amount
.
compareTo
(
BigDecimal
.
ZERO
);
//更新钱包
if
(
r
==
1
&&
userId
>
0
)
{
...
...
@@ -406,6 +439,18 @@ public class AppUserSellingWaterBiz extends BaseBiz<AppUserSellingWaterMapper, A
return
sellingWalletPagVo
;
}
public
List
<
Integer
>
findMemberIdByLeaderIdAndOrdreType
(
Integer
leaderId
,
int
orderType
)
{
Example
example
=
new
Example
(
AppUserSellingWater
.
class
);
Example
.
Criteria
criteria
=
example
.
createCriteria
();
criteria
.
andEqualTo
(
"userId"
,
leaderId
);
criteria
.
andEqualTo
(
"orderType"
,
orderType
);
List
<
AppUserSellingWater
>
appUserSellingWaters
=
mapper
.
selectByExample
(
example
);
if
(
CollectionUtils
.
isEmpty
(
appUserSellingWaters
)){
return
Collections
.
EMPTY_LIST
;
}
return
appUserSellingWaters
.
stream
().
map
(
AppUserSellingWater:
:
getSourceId
).
collect
(
Collectors
.
toList
());
}
public
PageDataVO
<
UserSellingWaterAdminDTO
>
findSellingWaterWithPage
(
UserSellingWaterFindDTO
userSellingWaterFindDTO
)
{
PageDataVO
<
UserSellingWaterAdminDTO
>
pageDataVO
=
PageDataVO
.
pageInfo
(
userSellingWaterFindDTO
.
getPage
(),
userSellingWaterFindDTO
.
getLimit
(),
...
...
ace-modules/ace-admin/src/main/java/com/github/wxiaoqi/security/admin/config/RabbitAdminConfig.java
View file @
0e172920
...
...
@@ -36,6 +36,7 @@ public class RabbitAdminConfig extends RabbitCommonConfig {
add
(
new
BindDTO
(
ORDER_WATER_QUEUE
,
ORDER_TOPIC
,
KEY_ORDER_PAY
));
add
(
new
BindDTO
(
ORDER_WATER_QUEUE
,
ORDER_TOPIC
,
KEY_ORDER_FINLISH
));
add
(
new
BindDTO
(
ORDER_WATER_QUEUE
,
ORDER_TOPIC
,
KEY_ORDER_CANCEL
));
add
(
new
BindDTO
(
ORDER_WATER_QUEUE
,
ORDER_TOPIC
,
KEY_ORDER_PART_DEPOSIT
));
add
(
new
BindDTO
(
ORDER_FINLISH_USER_RE_QUEUE
,
ORDER_TOPIC
,
KEY_ORDER_FINLISH
));
//钱包
add
(
new
BindDTO
(
WALLET_ADD_QUEUE
,
ADMIN_TOPIC
,
KEY_WALLET_ADD
));
...
...
ace-modules/ace-admin/src/main/java/com/github/wxiaoqi/security/admin/handler/WaterMQHandler.java
View file @
0e172920
...
...
@@ -63,6 +63,9 @@ public class WaterMQHandler {
case
ORDER_FINISH:
orderWaterDTO
.
setStatus
(
2
);
break
;
case
ORDER_PART_DEPOSIT:
orderWaterDTO
.
setStatus
(
2
);
break
;
case
ORDER_CANCEL:
orderWaterDTO
.
setStatus
(
3
);
break
;
...
...
@@ -71,13 +74,18 @@ public class WaterMQHandler {
}
switch
(
OrderTypeEnum
.
get
(
orderMQDTO
.
getType
()))
{
case
RENT_VEHICLE:
//租车订单finlish不处理,退还第一部分押金后再处理
if
(
orderMQDTO
.
getSign
().
equals
(
ORDER_FINISH
))
{
break
;
}
orderMQDTO
.
getItemByTypeEnum
(
ItemTypeEnum
.
VEHICLE_MODEL
);
orderWaterDTO
.
setGoodsDTOList
(
new
ArrayList
<
OrderGoodsDTO
>()
{{
add
(
new
OrderGoodsDTO
()
{{
setGoodId
(
orderMQDTO
.
getOrderRentVehicleDetail
().
getModelId
());
setGoodNumber
(
1
);
setImg
(
orderMQDTO
.
getPicture
());
setPrice
(
orderMQDTO
.
getItemByTypeEnum
(
ItemTypeEnum
.
VEHICLE_MODEL
).
get
Real
Amount
());
setPrice
(
orderMQDTO
.
getItemByTypeEnum
(
ItemTypeEnum
.
VEHICLE_MODEL
).
get
Last
Amount
());
setTitle
(
orderMQDTO
.
getName
());
setType
(
OrderGoodsDTO
.
TYPE_RENT
);
}});
...
...
ace-modules/ace-admin/src/main/java/com/github/wxiaoqi/security/admin/rest/AppUserController.java
View file @
0e172920
...
...
@@ -24,6 +24,7 @@ import io.swagger.annotations.ApiOperation;
import
lombok.extern.slf4j.Slf4j
;
import
org.apache.commons.beanutils.BeanUtils
;
import
org.apache.commons.lang3.StringUtils
;
import
org.apache.commons.collections.CollectionUtils
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.web.bind.annotation.*
;
...
...
@@ -74,6 +75,9 @@ public class AppUserController extends CommonBaseController{
@Autowired
private
AppUserAlipayBiz
appUserAlipayBiz
;
@Autowired
private
AppUserRelationBiz
relationBiz
;
@GetMapping
(
"page"
)
...
...
xx-order/xx-order-api/src/main/java/com/xxfc/platform/order/entity/BaseOrder.java
View file @
0e172920
...
...
@@ -293,4 +293,9 @@ public class BaseOrder implements Serializable {
@ApiModelProperty
(
value
=
"促成人联系方式"
)
@Column
(
name
=
"facilitate_phone"
)
String
facilitatePhone
;
//支付类型
@ApiModelProperty
(
value
=
"支付方式"
)
@Column
(
name
=
"pay_way"
)
private
Integer
payWay
;
}
xx-order/xx-order-api/src/main/java/com/xxfc/platform/order/entity/OrderItem.java
View file @
0e172920
...
...
@@ -137,6 +137,10 @@ public class OrderItem implements Serializable {
@ApiModelProperty
(
value
=
"描述、详情"
)
private
String
detail
;
@Column
(
name
=
"change_amount"
)
@ApiModelProperty
(
value
=
"下单后导致改变的价格"
)
private
BigDecimal
changeAmount
;
public
Integer
getCalculateNum
()
{
return
buyNum
-
cutNum
;
...
...
@@ -176,4 +180,8 @@ public class OrderItem implements Serializable {
public
BigDecimal
getTotalAmount
()
{
return
realAmount
.
add
(
couponAmount
);
}
public
BigDecimal
getLastAmount
()
{
return
realAmount
.
add
(
changeAmount
);
}
}
xx-order/xx-order-api/src/main/java/com/xxfc/platform/order/pojo/mq/OrderMQDTO.java
View file @
0e172920
...
...
@@ -15,6 +15,7 @@ public class OrderMQDTO extends BaseOrder implements OrderItemInter {
public
static
final
int
ORDER_CANCEL
=
2
;
public
static
final
int
ORDER_PAY
=
4
;
public
static
final
int
ORDER_FINISH
=
6
;
public
static
final
int
ORDER_PART_DEPOSIT
=
101
;
OrderRentVehicleDetail
orderRentVehicleDetail
;
...
...
@@ -42,6 +43,8 @@ public class OrderMQDTO extends BaseOrder implements OrderItemInter {
* 4--已支付"
*
* 6--已完成
*
* 101--部分押金退还
*/
Integer
sign
;
}
xx-order/xx-order-api/src/main/java/com/xxfc/platform/order/pojo/order/VehicleItemDTO.java
View file @
0e172920
package
com
.
xxfc
.
platform
.
order
.
pojo
.
order
;
import
cn.hutool.core.bean.BeanUtil
;
import
cn.hutool.core.collection.CollUtil
;
import
cn.hutool.core.convert.Convert
;
import
cn.hutool.core.date.DateUtil
;
import
cn.hutool.core.util.StrUtil
;
import
cn.hutool.json.JSONUtil
;
...
...
@@ -18,6 +20,8 @@ import java.util.List;
@Data
public
class
VehicleItemDTO
extends
OrderItem
{
public
static
final
int
topNum
=
2
;
//已抵消天数
private
Integer
offsetNum
;
public
BigDecimal
calculateVehicleUnitPrice
(
BigDecimal
vehicleAmount
,
BigDecimal
metaVehicleAmount
,
Boolean
isSetRealAmount
)
{
if
(
isSetRealAmount
)
{
setRealAmount
(
vehicleAmount
);
...
...
@@ -38,44 +42,50 @@ public class VehicleItemDTO extends OrderItem {
}
public
BigDecimal
getCutAmount
()
{
List
<
V
ehicleModelCalendarPrice
DTO
>
vmcpds
=
getVehicleDetail
();
List
<
V
MCalendarPriceCost
DTO
>
vmcpds
=
getVehicleDetail
();
if
(
CollUtil
.
isEmpty
(
vmcpds
)){
return
super
.
getCutAmount
();
}
BigDecimal
cutAmount
=
BigDecimal
.
ZERO
;
for
(
int
i
=
0
;
i
<
getCutNum
();
i
++)
{
cutAmount
=
cutAmount
.
add
(
vmcpds
.
get
(
i
).
getPrice
());
// for(int i = 0; i < getCutNum(); i++) {
for
(
VMCalendarPriceCostDTO
vmcpd
:
vmcpds
)
{
cutAmount
=
cutAmount
.
add
(
vmcpd
.
getFreeAmount
());
}
return
cutAmount
;
}
public
List
<
V
ehicleModelCalendarPrice
DTO
>
getVehicleDetail
()
{
public
List
<
V
MCalendarPriceCost
DTO
>
getVehicleDetail
()
{
if
(
StrUtil
.
isBlank
(
getDetail
()))
{
return
CollUtil
.
newArrayList
();
}
return
JSONUtil
.
toList
(
JSONUtil
.
parseArray
(
getDetail
()),
V
ehicleModelCalendarPrice
DTO
.
class
);
return
JSONUtil
.
toList
(
JSONUtil
.
parseArray
(
getDetail
()),
V
MCalendarPriceCost
DTO
.
class
);
}
public
BigDecimal
getBuyAmount
()
{
List
<
V
ehicleModelCalendarPrice
DTO
>
vmcpds
=
getVehicleDetail
();
List
<
V
MCalendarPriceCost
DTO
>
vmcpds
=
getVehicleDetail
();
if
(
CollUtil
.
isEmpty
(
vmcpds
)){
return
super
.
getBuyAmount
();
}
BigDecimal
buyAmount
=
BigDecimal
.
ZERO
;
for
(
int
i
=
0
;
i
<
getBuyNum
();
i
++)
{
//for(VMCalendarPriceCostDTO vmcpd : vmcpds) {
buyAmount
=
buyAmount
.
add
(
vmcpds
.
get
(
i
).
getPrice
());
}
return
buyAmount
;
}
public
BigDecimal
getTopAmount
(
Integer
useDays
)
{
List
<
V
ehicleModelCalendarPrice
DTO
>
vmcpds
=
getVehicleDetail
();
List
<
V
MCalendarPriceCost
DTO
>
vmcpds
=
getVehicleDetail
();
if
(
CollUtil
.
isEmpty
(
vmcpds
)){
return
getUnitPrice
().
multiply
(
new
BigDecimal
(
topNum
+
""
));
}
BigDecimal
topAmount
=
BigDecimal
.
ZERO
;
for
(
int
i
=
useDays
;
i
<
getTotalNum
();
i
++)
{
topAmount
=
topAmount
.
add
(
vmcpds
.
get
(
i
).
getPrice
());
if
((
i
-
useDays
)
>=
topNum
)
{
break
;
}
else
{
topAmount
=
topAmount
.
add
(
vmcpds
.
get
(
i
).
getPrice
());
}
}
//未用天数 小于 topNum
...
...
@@ -91,7 +101,7 @@ public class VehicleItemDTO extends OrderItem {
}
public
BigDecimal
getFreeAmount
(
Integer
freeDays
)
{
List
<
V
ehicleModelCalendarPrice
DTO
>
vmcpds
=
getVehicleDetail
();
List
<
V
MCalendarPriceCost
DTO
>
vmcpds
=
getVehicleDetail
();
if
(
CollUtil
.
isEmpty
(
vmcpds
)){
return
getUnitPrice
().
multiply
(
new
BigDecimal
(
freeDays
+
""
));
}
...
...
@@ -101,4 +111,43 @@ public class VehicleItemDTO extends OrderItem {
}
return
freeAmount
;
}
// public Integer getActualNum() {
//
// }
public
void
initDetail
(
Integer
ableFreeDays
)
{
if
(
StrUtil
.
isNotBlank
(
getDetail
()))
{
List
<
VehicleModelCalendarPriceDTO
>
metaList
=
JSONUtil
.
toList
(
JSONUtil
.
parseArray
(
getDetail
()),
VehicleModelCalendarPriceDTO
.
class
);
//计算消费金额
List
<
VMCalendarPriceCostDTO
>
list
=
Convert
.
toList
(
VMCalendarPriceCostDTO
.
class
,
metaList
);
//循环价格列表 获得对应消耗的免费天数
//循环已标记的已使用免费天数
Integer
cycleNum
=
0
;
for
(
VMCalendarPriceCostDTO
dto
:
list
)
{
if
(
ableFreeDays
>
cycleNum
&&
cycleNum
+
dto
.
getFreeDays
()
>
ableFreeDays
)
{
//本次累加天数 大于 可用免费天数
setCutNum
(
ableFreeDays
);
Integer
up
=
(
ableFreeDays
-
cycleNum
);
Integer
down
=
dto
.
getFreeDays
();
//根据百分比计算消费价格
dto
.
setFreeAndConsumeAmount
(
dto
.
getPrice
(),
dto
.
getPrice
().
multiply
(
new
BigDecimal
(
up
+
""
).
divide
(
new
BigDecimal
(
down
+
""
),
2
,
RoundingMode
.
HALF_UP
))
.
setScale
(
2
,
RoundingMode
.
HALF_UP
));
}
else
if
(
ableFreeDays
>
cycleNum
){
//本次累加天数 小于等于 可用免费天数
setCutNum
(
getCutNum
()+
dto
.
getFreeDays
());
//直接设置价格
dto
.
setFreeAndConsumeAmount
(
dto
.
getPrice
(),
BigDecimal
.
ZERO
);
this
.
offsetNum
+=
1
;
}
else
{
//上次累加天数 大于 可用天数
//直接设置价格
dto
.
setFreeAndConsumeAmount
(
dto
.
getPrice
(),
BigDecimal
.
ZERO
);
}
cycleNum
+=
dto
.
getFreeDays
();
}
setDetail
(
JSONUtil
.
parseArray
(
list
).
toString
());
}
}
}
xx-order/xx-order-api/src/main/java/com/xxfc/platform/order/pojo/pay/NotifyUrlDTO.java
View file @
0e172920
...
...
@@ -20,4 +20,8 @@ public class NotifyUrlDTO {
//支付类型
@ApiModelProperty
(
value
=
"支付类型"
)
private
Integer
type
;
//支付类型
@ApiModelProperty
(
value
=
"支付方式"
)
private
Integer
payWay
;
}
\ No newline at end of file
xx-order/xx-order-server/src/main/java/com/xxfc/platform/order/biz/BaseOrderBiz.java
View file @
0e172920
...
...
@@ -563,7 +563,7 @@ public class BaseOrderBiz extends BaseBiz<BaseOrderMapper, BaseOrder> implements
* @param tradeNo
*/
@Transactional
public
void
payNotifyHandle
(
String
orderNo
,
String
tradeNo
,
Integer
type
)
{
public
void
payNotifyHandle
(
String
orderNo
,
String
tradeNo
,
Integer
type
,
Integer
payWay
)
{
OrderRentVehicleDetail
orvd
=
new
OrderRentVehicleDetail
();
OrderTourDetail
otd
=
new
OrderTourDetail
();
OrderMemberDetail
omd
=
new
OrderMemberDetail
();
...
...
@@ -578,6 +578,7 @@ public class BaseOrderBiz extends BaseBiz<BaseOrderMapper, BaseOrder> implements
setHasPay
(
SYS_TRUE
);
setPayTime
(
System
.
currentTimeMillis
());
setPayOrigin
(
type
);
setPayWay
(
payWay
);
setVersion
(
baseOrder
.
getVersion
());
}};
...
...
@@ -745,15 +746,15 @@ public class BaseOrderBiz extends BaseBiz<BaseOrderMapper, BaseOrder> implements
switch
(
sign
)
{
case
2
:
sendMsgDTO
.
setRoutKey
(
KEY_ORDER_CANCEL
);
// mqSenderFeign.sendMessage(ORDER_TOPIC, KEY_ORDER_CANCEL, JSONUtil.toJsonStr(orderMQDTO));
break
;
case
4
:
sendMsgDTO
.
setRoutKey
(
KEY_ORDER_PAY
);
// mqSenderFeign.sendMessage(ORDER_TOPIC, KEY_ORDER_PAY, JSONUtil.toJsonStr(orderMQDTO));
break
;
case
6
:
sendMsgDTO
.
setRoutKey
(
KEY_ORDER_FINLISH
);
// mqSenderFeign.sendMessage(ORDER_TOPIC, KEY_ORDER_FINLISH, JSONUtil.toJsonStr(orderMQDTO));
break
;
case
101
:
sendMsgDTO
.
setRoutKey
(
KEY_ORDER_PART_DEPOSIT
);
break
;
default
:
break
;
...
...
xx-order/xx-order-server/src/main/java/com/xxfc/platform/order/biz/OrderAccountBiz.java
View file @
0e172920
...
...
@@ -488,6 +488,13 @@ public class OrderAccountBiz extends BaseBiz<OrderAccountMapper,OrderAccount> {
orderMQDTO
.
setOrderRentVehicleDetail
(
orderRentVehicleBiz
.
selectById
(
orderMQDTO
.
getDetailId
()));
//根据商品消费金额 设置changeAmount
vehicleItemDTO
.
setChangeAmount
(
inProgressVO
.
getConsumeAmount
().
subtract
(
vehicleItemDTO
.
getRealAmount
()));
orderItemBiz
.
updateSelectiveByIdRe
(
vehicleItemDTO
);
//发送押金退还完成队列消息
baseOrderBiz
.
sendOrderMq
(
orderMQDTO
.
getOrderRentVehicleDetail
(),
null
,
null
,
orderMQDTO
,
OrderMQDTO
.
ORDER_CANCEL
);
//捕捉异常
try
{
orderMsgBiz
.
handelMsgDeposit
(
orderMQDTO
.
getOrderRentVehicleDetail
(),
orderMQDTO
,
userFeign
.
userDetailById
(
orderMQDTO
.
getUserId
()).
getData
());
...
...
xx-order/xx-order-server/src/main/java/com/xxfc/platform/order/biz/OrderItemBiz.java
View file @
0e172920
...
...
@@ -4,6 +4,7 @@ import cn.hutool.core.bean.BeanUtil;
import
cn.hutool.core.collection.CollUtil
;
import
cn.hutool.core.date.DateUtil
;
import
com.xxfc.platform.order.contant.enumerate.ItemTypeEnum
;
import
com.xxfc.platform.order.pojo.order.VehicleItemDTO
;
import
com.xxfc.platform.vehicle.feign.VehicleFeign
;
import
com.xxfc.platform.vehicle.pojo.dto.VehicleModelCalendarPriceDTO
;
import
com.xxfc.platform.vehicle.pojo.dto.order.VMCalendarPriceCostDTO
;
...
...
xx-order/xx-order-server/src/main/java/com/xxfc/platform/order/biz/inner/OrderCalculateBiz.java
View file @
0e172920
...
...
@@ -87,6 +87,8 @@ public class OrderCalculateBiz {
public
InProgressVO
inProgressCalculate
(
BaseOrder
baseOrder
,
VehicleItemDTO
vehicleItemDTO
,
Integer
freeDays
,
Integer
useDays
,
OrderAccountDetail
oad
,
Boolean
isCancel
)
{
BigDecimal
refundAmount
=
BigDecimal
.
ZERO
;
BigDecimal
consumeAmount
=
BigDecimal
.
ZERO
;
BigDecimal
topViolateAmount
=
BigDecimal
.
ZERO
;
BigDecimal
itemChangeAmount
=
BigDecimal
.
ZERO
;
//融入日期价格
List
<
VehicleModelCalendarPriceDTO
>
vmcpds
=
JSONUtil
.
toList
(
JSONUtil
.
parseArray
(
vehicleItemDTO
.
getDetail
()),
VehicleModelCalendarPriceDTO
.
class
);
...
...
@@ -203,7 +205,7 @@ public class OrderCalculateBiz {
residueAmount
=
residueAmount
.
add
(
vmcpds
.
get
(
i
).
getPrice
());
}
String
violateDesc
=
StrUtil
.
format
(
"{}元"
,
residueAmount
.
toString
());
if
(
residueDays
>
2
)
{
if
(
residueDays
>
=
2
)
{
residueDays
=
2
;
residueAmount
=
BigDecimal
.
ZERO
;
for
(
int
i
=
useDays
;
i
<
(
useDays
+
residueDays
+
1
);
i
++)
{
...
...
@@ -216,6 +218,7 @@ public class OrderCalculateBiz {
OrderAccountDeduction
violateDeduction
=
orderAccountBiz
.
initDeduction
(
inProgressVO
.
getViolateAmount
(),
violateDesc
,
DeductionTypeEnum
.
VIOLATE_ADVANCE
,
OrderAccountDeduction
.
ORIGIN_DEPOSIT
);
oad
.
getDeductions
().
add
(
violateDeduction
);
}
else
if
(
residueDays
<
0
&&
!
isCancel
){
//isCancel 表示是否为取消,取消则不计算延期还车(因为没有出车)
//设置消耗费用列表
useAmountList
.
addAll
(
Convert
.
toList
(
VMCalendarPriceCostDTO
.
class
,
vmcpds
));
//如果订单 出发中 或者 已完成 或者定损中
...
...
@@ -311,8 +314,6 @@ public class OrderCalculateBiz {
public
OrderRefundPriceVO
getPriceCalculate
(
String
no
,
OrderPageVO
orderPageVO
)
{
//根据no 查订单
OrderTypeEnum
orderTypeEnum
=
OrderTypeEnum
.
get
(
orderPageVO
.
getType
());
BigDecimal
totalRefundAmount
=
BigDecimal
.
ZERO
;
...
...
@@ -324,22 +325,24 @@ public class OrderCalculateBiz {
switch
(
orderTypeEnum
)
{
case
RENT_VEHICLE:
DateTime
nowTime
=
DateTime
.
parse
(
DateTime
.
now
().
toString
(
CommonConstants
.
YMR_SLASH_FORMATTER_JODA
),
CommonConstants
.
YMR_SLASH_FORMATTER_JODA
);
DateTime
startTime
=
DateTime
.
parse
(
new
DateTime
(
orderPageVO
.
getOrderRentVehicleDetail
().
getStartTime
()).
toString
(
CommonConstants
.
YMR_SLASH_FORMATTER_JODA
),
CommonConstants
.
YMR_SLASH_FORMATTER_JODA
);
DateTime
endTime
=
DateTime
.
parse
(
new
DateTime
(
orderPageVO
.
getOrderRentVehicleDetail
().
getEndTime
()).
toString
(
CommonConstants
.
YMR_SLASH_FORMATTER_JODA
),
CommonConstants
.
YMR_SLASH_FORMATTER_JODA
);
Long
timeLag
=
orderPageVO
.
getOrderRentVehicleDetail
().
getStartTime
()
-
System
.
currentTimeMillis
();
OrderItem
vehicleItem
=
orderItemBiz
.
selectOne
(
new
OrderItem
(){{
VehicleItemDTO
vehicleItemDTO
=
BeanUtil
.
toBean
(
orderItemBiz
.
selectOne
(
new
OrderItem
(){{
setType
(
ItemTypeEnum
.
VEHICLE_MODEL
.
getCode
());
setOrderId
(
orderPageVO
.
getId
());
}});
topAmount
=
vehicleItem
.
getUnitPrice
().
multiply
(
new
BigDecimal
(
2
+
""
));
}}),
VehicleItemDTO
.
class
);
//融入日期价格
List
<
VehicleModelCalendarPriceDTO
>
vmcpds
=
JSONUtil
.
toList
(
JSONUtil
.
parseArray
(
vehicleItemDTO
.
getDetail
()),
VehicleModelCalendarPriceDTO
.
class
);
if
(
timeLag
<
0
)
{
Integer
useDays
=
getIncludeDays
(
orderPageVO
.
getOrderRentVehicleDetail
().
getStartTime
(),
DateTime
.
now
().
getMillis
());
OrderAccountDetail
oad
=
new
OrderAccountDetail
();
Integer
freeDays
=
(
null
==
vehicleItem
.
getCutNum
())?
0
:
vehicleItem
.
getCutNum
();
//inProgressVO = inProgressCalculate(orderPageVO, vehicleItem, freeDays, baseOrderBiz.getDaysBetweenDateTime(startTime, nowTime), new OrderAccountDetail(), Boolean.FALSE);
Integer
freeDays
=
(
null
==
vehicleItemDTO
.
getCutNum
())?
0
:
vehicleItemDTO
.
getCutNum
();
inProgressVO
=
inProgressCalculate
(
orderPageVO
,
vehicleItemDTO
,
freeDays
,
useDays
,
new
OrderAccountDetail
(),
Boolean
.
FALSE
);
topAmount
=
vehicleItemDTO
.
getTopAmount
(
useDays
);
totalDeductAmount
=
oad
.
realTotalDeduct
();
totalRefundAmount
=
oad
.
getOrderAmount
().
add
(
oad
.
getDepositAmount
());
refundDesc
=
inProgressVO
.
getViolateDesc
();
...
...
@@ -347,11 +350,12 @@ public class OrderCalculateBiz {
String
key
=
RENT_REFUND
;
BigDecimal
deductionAmount
=
orderAccountBiz
.
calculateDeduction
(
vehicleItem
.
getBuyAmount
()
BigDecimal
deductionAmount
=
orderAccountBiz
.
calculateDeduction
(
vehicleItem
DTO
.
getBuyAmount
()
,
orderPageVO
.
getOrderRentVehicleDetail
().
getStartTime
()
-
System
.
currentTimeMillis
()
,
DictionaryKey
.
APP_ORDER
+
"_"
+
key
,
refundDescBuilder
);
topAmount
=
vehicleItemDTO
.
getTopAmount
(
0
);
totalDeductAmount
=
deductionAmount
;
totalRefundAmount
=
orderPageVO
.
getRealAmount
().
subtract
(
deductionAmount
);
refundDesc
=
refundDescBuilder
.
toString
();
...
...
@@ -377,13 +381,13 @@ public class OrderCalculateBiz {
BigDecimal
adultItemAmount
=
(
null
==
adultItem
)?
BigDecimal
.
ZERO
:
adultItem
.
getRealAmount
();
BigDecimal
childItemAmount
=
(
null
==
childItem
)?
BigDecimal
.
ZERO
:
childItem
.
getRealAmount
();
topAmount
=
adultItemAmount
.
add
(
childItemAmount
);
BigDecimal
deductionAmount
=
orderAccountBiz
.
calculateDeduction
(
adultItemAmount
.
add
(
childItemAmount
)
,
orderPageVO
.
getOrderTourDetail
().
getStartTime
()
-
System
.
currentTimeMillis
()
,
DictionaryKey
.
APP_ORDER
+
"_"
+
key
,
refundDescBuilder
);
topAmount
=
adultItemAmount
.
add
(
childItemAmount
);
totalDeductAmount
=
deductionAmount
;
totalRefundAmount
=
orderPageVO
.
getRealAmount
().
subtract
(
deductionAmount
);
refundDesc
=
refundDescBuilder
.
toString
();
...
...
@@ -399,4 +403,8 @@ public class OrderCalculateBiz {
orpv
.
setTopAmount
(
topAmount
);
return
orpv
;
}
public
static
void
main
(
String
[]
args
)
{
System
.
out
.
println
(
DateTime
.
now
().
getMillis
());
}
}
\ No newline at end of file
xx-order/xx-order-server/src/main/java/com/xxfc/platform/order/biz/inner/OrderCancelBiz.java
View file @
0e172920
...
...
@@ -16,6 +16,7 @@ import com.xxfc.platform.order.pojo.account.OrderAccountDeduction;
import
com.xxfc.platform.order.pojo.account.OrderAccountDetail
;
import
com.xxfc.platform.order.pojo.calculate.InProgressVO
;
import
com.xxfc.platform.order.pojo.mq.OrderMQDTO
;
import
com.xxfc.platform.order.pojo.order.VehicleItemDTO
;
import
com.xxfc.platform.order.pojo.price.CancelNoStartVO
;
import
com.xxfc.platform.order.pojo.price.CancelStartedVO
;
import
com.xxfc.platform.order.pojo.price.CostDetailExtend
;
...
...
@@ -136,10 +137,10 @@ public class OrderCancelBiz {
setOrderId
(
baseOrder
.
getId
());
}});
OrderItem
orderItem
=
orderItemBiz
.
selectOne
(
new
OrderItem
(){{
VehicleItemDTO
vehicleItemDTO
=
BeanUtil
.
toBean
(
orderItemBiz
.
selectOne
(
new
OrderItem
(){{
setType
(
ItemTypeEnum
.
VEHICLE_MODEL
.
getCode
());
setOrderId
(
baseOrder
.
getId
());
}});
}})
,
VehicleItemDTO
.
class
)
;
//如果超过出发时间,不能取消订单
//根据时间处理goodsAmount
...
...
@@ -147,7 +148,10 @@ public class OrderCancelBiz {
Long
timeLag
=
orvd
.
getStartTime
()
-
System
.
currentTimeMillis
();
if
(
timeLag
<
0
)
{
Integer
useDays
=
orderCalculateBiz
.
getIncludeDays
(
orvd
.
getStartTime
(),
System
.
currentTimeMillis
());
inProgressVO
=
orderCalculateBiz
.
calculateOrderComplete
(
baseOrder
,
orvd
,
oad
,
orderItem
,
useDays
,
Boolean
.
TRUE
);
if
(
useDays
>
orvd
.
getDayNum
())
{
useDays
=
orvd
.
getUsedDay
();
}
inProgressVO
=
orderCalculateBiz
.
calculateOrderComplete
(
baseOrder
,
orvd
,
oad
,
vehicleItemDTO
,
useDays
,
Boolean
.
TRUE
);
//判断是否修改违约金
if
(
null
!=
changeViolateAmount
)
{
...
...
@@ -163,7 +167,7 @@ public class OrderCancelBiz {
CancelStartedVO
csv
=
new
CancelStartedVO
();
csv
.
setType
(
CostDetailExtend
.
CANCEL_STARTED
);
csv
.
setConsumeAmount
(
inProgressVO
.
getConsumeAmount
());
csv
.
setModelAmount
(
orderItem
.
getUnitPrice
());
csv
.
setModelAmount
(
vehicleItemDTO
.
getUnitPrice
());
csv
.
setUsedAmount
(
inProgressVO
.
getUsedAmount
());
csv
.
setUsedDayNum
(
inProgressVO
.
getUsedDays
());
csv
.
setUsedfreeDayNum
(
inProgressVO
.
getUsedfreeDays
());
...
...
@@ -171,6 +175,7 @@ public class OrderCancelBiz {
csv
.
setHadConpon
((
StrUtil
.
isNotBlank
(
baseOrder
.
getCouponTickerNos
())?
Boolean
.
TRUE
:
Boolean
.
FALSE
));
csv
.
setViolateAmount
(
BigDecimal
.
ZERO
);
csv
.
setViolateDesc
(
""
);
csv
.
setUseAmountList
(
inProgressVO
.
getUseAmountList
());
//如果有扣款项,则生成额外的费用明细
if
(
oad
.
getDeductions
().
size
()
>
0
)
{
...
...
@@ -190,19 +195,21 @@ public class OrderCancelBiz {
//orderTemplateBiz.handleCostDetailExtend(csv);
orvd
.
handelCostDetailExtend
(
csv
);
orderRentVehicleBiz
.
updateSelectiveByIdRe
(
orvd
);
//根据商品消费金额 设置changeAmount
vehicleItemDTO
.
setChangeAmount
(
inProgressVO
.
getConsumeAmount
().
subtract
(
vehicleItemDTO
.
getRealAmount
()));
orderItemBiz
.
updateSelectiveByIdRe
(
vehicleItemDTO
);
}
else
{
// //没到出车时间
// //判断是否使用免费天数,并且进行扣款
// //没到出车时间
//违约金封顶 租车身份价 * 2天
BigDecimal
topAmount
=
orderItem
.
getUnitPrice
().
multiply
(
new
BigDecimal
(
2
+
""
));
//判断是否修改违约金
if
(
null
!=
changeViolateAmount
)
{
oad
.
changeCancelViolate
(
changeViolateAmount
);
}
//退款流程
orderAccountBiz
.
rentRefundProcessCancel
(
baseOrder
,
BigDecimal
.
ZERO
,
timeLag
,
APP_ORDER
+
"_"
+
RENT_REFUND
,
orvd
.
getDeposit
(),
orderItem
.
getBuyAmount
(),
oad
,
topAmount
,
null
,
changeViolateAmount
);
//违约金封顶 租车身份价 * 2天
orderAccountBiz
.
rentRefundProcessCancel
(
baseOrder
,
BigDecimal
.
ZERO
,
timeLag
,
APP_ORDER
+
"_"
+
RENT_REFUND
,
orvd
.
getDeposit
(),
vehicleItemDTO
.
getBuyAmount
(),
oad
,
vehicleItemDTO
.
getTopAmount
(
0
),
null
,
changeViolateAmount
);
//设置订单数据
//baseOrder.setDamagesAmount(csv.getDamagesAmount());
...
...
xx-order/xx-order-server/src/main/java/com/xxfc/platform/order/rest/BaseOrderController.java
View file @
0e172920
...
...
@@ -283,7 +283,7 @@ public class BaseOrderController extends CommonBaseController implements UserRes
public
ObjectRestResponse
notifyUrl
(
NotifyUrlDTO
dto
)
{
//判断是否成功,并且订单是未支付状态,则添加支付编号和修改状态
if
(
StrUtil
.
isNotBlank
(
dto
.
getOrderNo
()))
{
baseOrderBiz
.
payNotifyHandle
(
dto
.
getOrderNo
(),
dto
.
getTradeNo
(),
dto
.
getType
());
baseOrderBiz
.
payNotifyHandle
(
dto
.
getOrderNo
(),
dto
.
getTradeNo
(),
dto
.
getType
()
,
dto
.
getPayWay
()
);
}
else
{
log
.
error
(
" exception notifyUrl : "
+
JSONUtil
.
toJsonStr
(
dto
));
}
...
...
xx-order/xx-order-server/src/main/java/com/xxfc/platform/order/rest/OrderRefundController.java
View file @
0e172920
...
...
@@ -73,93 +73,13 @@ public class OrderRefundController extends BaseController<OrderRefundBiz,OrderRe
setLimit
(
1
);
setPage
(
1
);
}}){{
put
(
"no"
,
no
);
}}.
getSuper
()).
get
(
0
);
OrderTypeEnum
orderTypeEnum
=
OrderTypeEnum
.
get
(
orderPageVO
.
getType
());
BigDecimal
totalRefundAmount
=
BigDecimal
.
ZERO
;
BigDecimal
totalDeductAmount
=
BigDecimal
.
ZERO
;
StringBuilder
refundDescBuilder
=
new
StringBuilder
(
""
);
String
refundDesc
=
""
;
InProgressVO
inProgressVO
=
new
InProgressVO
();
switch
(
orderTypeEnum
)
{
case
RENT_VEHICLE:
DateTime
nowTime
=
DateTime
.
parse
(
DateTime
.
now
().
toString
(
CommonConstants
.
YMR_SLASH_FORMATTER_JODA
),
CommonConstants
.
YMR_SLASH_FORMATTER_JODA
);
DateTime
startTime
=
DateTime
.
parse
(
new
DateTime
(
orderPageVO
.
getOrderRentVehicleDetail
().
getStartTime
()).
toString
(
CommonConstants
.
YMR_SLASH_FORMATTER_JODA
),
CommonConstants
.
YMR_SLASH_FORMATTER_JODA
);
DateTime
endTime
=
DateTime
.
parse
(
new
DateTime
(
orderPageVO
.
getOrderRentVehicleDetail
().
getEndTime
()).
toString
(
CommonConstants
.
YMR_SLASH_FORMATTER_JODA
),
CommonConstants
.
YMR_SLASH_FORMATTER_JODA
);
Long
timeLag
=
orderPageVO
.
getOrderRentVehicleDetail
().
getStartTime
()
-
System
.
currentTimeMillis
();
VehicleItemDTO
vehicleItemDTO
=
BeanUtil
.
toBean
(
orderItemBiz
.
selectOne
(
new
OrderItem
(){{
setType
(
ItemTypeEnum
.
VEHICLE_MODEL
.
getCode
());
setOrderId
(
orderPageVO
.
getId
());
}}),
VehicleItemDTO
.
class
);
if
(
timeLag
<
0
)
{
OrderAccountDetail
oad
=
new
OrderAccountDetail
();
Integer
freeDays
=
(
null
==
vehicleItemDTO
.
getCutNum
())?
0
:
vehicleItemDTO
.
getCutNum
();
inProgressVO
=
orderCalculateBiz
.
inProgressCalculate
(
orderPageVO
,
vehicleItemDTO
,
freeDays
,
baseOrderBiz
.
getDaysBetweenDateTime
(
startTime
,
nowTime
),
new
OrderAccountDetail
(),
Boolean
.
FALSE
);
//.inProgressCalculate(orderPageVO, baseOrderBiz.getDaysBetweenDateTime(startTime, nowTime));
totalDeductAmount
=
oad
.
realTotalDeduct
();
totalRefundAmount
=
oad
.
getOrderAmount
().
add
(
oad
.
getDepositAmount
());
refundDesc
=
inProgressVO
.
getViolateDesc
();
}
else
{
String
key
=
RENT_REFUND
;
BigDecimal
deductionAmount
=
orderAccountBiz
.
calculateDeduction
(
vehicleItemDTO
.
getBuyAmount
()
,
orderPageVO
.
getOrderRentVehicleDetail
().
getStartTime
()
-
System
.
currentTimeMillis
()
,
DictionaryKey
.
APP_ORDER
+
"_"
+
key
,
refundDescBuilder
);
totalDeductAmount
=
deductionAmount
;
totalRefundAmount
=
orderPageVO
.
getRealAmount
().
subtract
(
deductionAmount
);
refundDesc
=
refundDescBuilder
.
toString
();
}
break
;
case
TOUR:
//判断是省内还是省外
String
key
=
TOUR_IN_REFUND
;
if
(
SYS_TRUE
.
equals
(
orderPageVO
.
getOrderTourDetail
().
getIsOutside
()))
{
key
=
TOUR_REFUND
;
}
OrderItem
adultItem
=
orderItemBiz
.
selectOne
(
new
OrderItem
(){{
setType
(
ItemTypeEnum
.
TOUR_ADULT
.
getCode
());
setOrderId
(
orderPageVO
.
getId
());
}});
OrderItem
childItem
=
orderItemBiz
.
selectOne
(
new
OrderItem
(){{
setType
(
ItemTypeEnum
.
TOUR_CHILD
.
getCode
());
setOrderId
(
orderPageVO
.
getId
());
}});
BigDecimal
adultItemAmount
=
(
null
==
adultItem
)?
BigDecimal
.
ZERO
:
adultItem
.
getRealAmount
();
BigDecimal
childItemAmount
=
(
null
==
childItem
)?
BigDecimal
.
ZERO
:
childItem
.
getRealAmount
();
BigDecimal
deductionAmount
=
orderAccountBiz
.
calculateDeduction
(
adultItemAmount
.
add
(
childItemAmount
)
,
orderPageVO
.
getOrderTourDetail
().
getStartTime
()
-
System
.
currentTimeMillis
()
,
DictionaryKey
.
APP_ORDER
+
"_"
+
key
,
refundDescBuilder
);
totalDeductAmount
=
deductionAmount
;
totalRefundAmount
=
orderPageVO
.
getRealAmount
().
subtract
(
deductionAmount
);
refundDesc
=
refundDescBuilder
.
toString
();
break
;
default
:
break
;
}
OrderRefundPriceVO
orpv
=
new
OrderRefundPriceVO
();
orpv
.
setRealAmount
(
orderPageVO
.
getRealAmount
());
orpv
.
setRefundAmount
(
totalRefundAmount
);
OrderRefundPriceVO
orpv
=
orderCalculateBiz
.
getPriceCalculate
(
no
,
orderPageVO
);
if
(
orderPageVO
.
getStatus
().
equals
(
OrderStatusEnum
.
ORDER_UNPAY
.
getCode
())
||
orderPageVO
.
getStatus
().
equals
(
OrderStatusEnum
.
ORDER_CRT
.
getCode
())
||
orpv
.
getRefundAmount
().
compareTo
(
BigDecimal
.
ZERO
)
<=
0
)
{
orpv
.
setRefundDesc
(
"是否确定取消订单"
);
}
else
{
orpv
.
setRefundDesc
(
StrUtil
.
format
(
"本次取消操作需要扣除{}元违约金,实际退款金额为{}元,您确定要取消订单吗?"
,
totalDeductAmount
,
totalRefundAmount
));
orpv
.
setRefundDesc
(
StrUtil
.
format
(
"本次取消操作需要扣除{}元违约金,实际退款金额为{}元,您确定要取消订单吗?"
,
orpv
.
getRealAmount
(),
orpv
.
getRefundAmount
()
));
}
return
ObjectRestResponse
.
succ
(
orpv
);
}
...
...
xx-order/xx-order-server/src/main/java/com/xxfc/platform/order/service/AbstractOrderHandle.java
View file @
0e172920
...
...
@@ -150,8 +150,8 @@ public abstract class AbstractOrderHandle<Biz extends BaseBiz, Detail extends Or
if
(
BigDecimal
.
ZERO
.
compareTo
(
realAmount
)
>
0
)
{
throw
new
BaseException
(
ResultCode
.
FAILED_CODE
);
}
else
if
(
BigDecimal
.
ZERO
.
compareTo
(
realAmount
)
==
0
)
{
//直接支付
baseOrderBiz
.
payNotifyHandle
(
detail
.
getOrder
().
getNo
(),
null
,
detail
.
getOrderOrigin
());
//直接支付
0表示不需要支付
baseOrderBiz
.
payNotifyHandle
(
detail
.
getOrder
().
getNo
(),
null
,
detail
.
getOrderOrigin
()
,
0
);
}
}
/**
...
...
xx-order/xx-order-server/src/main/java/com/xxfc/platform/order/service/OrderRentVehicleService.java
View file @
0e172920
...
...
@@ -39,6 +39,7 @@ import com.xxfc.platform.vehicle.entity.VehicleModel;
import
com.xxfc.platform.vehicle.feign.VehicleFeign
;
import
com.xxfc.platform.vehicle.pojo.RentVehicleBookDTO
;
import
com.xxfc.platform.vehicle.pojo.dto.VehicleModelCalendarPriceDTO
;
import
com.xxfc.platform.vehicle.pojo.dto.order.VMCalendarPriceCostDTO
;
import
com.xxfc.platform.vehicle.pojo.vo.AccompanyingItemVo
;
import
lombok.Data
;
import
lombok.extern.slf4j.Slf4j
;
...
...
@@ -229,7 +230,8 @@ public class OrderRentVehicleService extends AbstractOrderHandle<OrderRentVehicl
String
couponDesc
=
""
;
Integer
vehicleDayNum
=
0
;
Integer
freeDayNum
=
0
;
Integer
cutDayNum
=
0
;
//抵消的天数
Integer
offsetNum
=
0
;
//当前用户
AppUserDTO
dto
=
detail
.
getAppUserDTO
();
...
...
@@ -260,21 +262,25 @@ public class OrderRentVehicleService extends AbstractOrderHandle<OrderRentVehicl
}});
}
//循环价格列表 获得对应消耗的免费天数
for
(
VehicleModelCalendarPriceDTO
vmcpd
:
vmcpds
)
{
//如果新的相加消耗天数 大于 拥有天数
if
(
freeDayNum
+
vmcpd
.
getFreeDays
()
>
dto
.
getRentFreeDays
())
{
//freeDayNum = dto.getRentFreeDays();
break
;
}
else
{
freeDayNum
+=
detail
.
getDayNum
();
cutDayNum
+=
1
;
}
}
vehicleOrderItem
.
setCutNum
(
cutDayNum
);
vehicleDayNum
=
detail
.
getDayNum
()
-
cutDayNum
;
// //循环价格列表 获得对应消耗的免费天数
// for(VehicleModelCalendarPriceDTO vmcpd : vmcpds) {
// //如果新的相加消耗天数 大于 拥有天数
// if(freeDayNum+ vmcpd.getFreeDays() > dto.getRentFreeDays()) {
// //freeDayNum = dto.getRentFreeDays();
// break;
// }else {
// freeDayNum += detail.getDayNum();
// cutDayNum += 1;
// }
// }
// vehicleOrderItem.setCutNum(cutDayNum);
freeDayNum
=
vehicleOrderItem
.
getCutNum
();
offsetNum
=
vehicleOrderItem
.
getOffsetNum
();
vehicleOrderItem
.
initDetail
(
dto
.
getRentFreeDays
());
vehicleDayNum
=
detail
.
getDayNum
()
-
offsetNum
;
detail
.
getOrder
().
setHasMemberRight
(
SYS_TRUE
);
}
else
{
vehicleOrderItem
.
initDetail
(
0
);
vehicleDayNum
=
detail
.
getDayNum
();
}
...
...
@@ -309,13 +315,21 @@ public class OrderRentVehicleService extends AbstractOrderHandle<OrderRentVehicl
// default:
// break;
// }
//设置是否使用会员权益
for
(
VMCalendarPriceCostDTO
vmcpcd
:
vehicleOrderItem
.
getVehicleDetail
())
{
if
(!
vmcpcd
.
getNo_discount_price
().
equals
(
vmcpcd
.
getPrice
()))
{
detail
.
getOrder
().
setHasMemberRight
(
SYS_TRUE
);
break
;
}
}
detail
.
setRebate
(
dto
.
getDiscount
());
// vehicleOrderItem.setUnitPrice(handleDiscountDTO.getModelAmount());
}
//计算价格
if
(
vehicleDayNum
>
0
)
{
for
(
int
i
=
cutDay
Num
;
i
<
vmcpds
.
size
();
i
++)
{
for
(
int
i
=
offset
Num
;
i
<
vmcpds
.
size
();
i
++)
{
vehicleAmount
=
vehicleAmount
.
add
(
vmcpds
.
get
(
i
).
getPrice
());
metaVehicleAmount
=
metaVehicleAmount
.
add
(
vmcpds
.
get
(
i
).
getNo_discount_price
());
}
...
...
@@ -392,7 +406,7 @@ public class OrderRentVehicleService extends AbstractOrderHandle<OrderRentVehicl
rvp
.
setVehicleDayNum
(
vehicleDayNum
);
rvp
.
setFreeDayNum
(
freeDayNum
);
rvp
.
setCutDayNum
(
cutDay
Num
);
rvp
.
setCutDayNum
(
offset
Num
);
rvp
.
setFreeAmount
(
vehicleOrderItem
.
getCutAmount
());
rvp
.
setBuyVehicleAmount
(
vehicleOrderItem
.
getBuyAmount
());
rvp
.
setRealVehicleAmount
(
vehicleOrderItem
.
getRealAmount
());
...
...
xx-vehicle/xx-vehicle-api/src/main/java/com/xxfc/platform/vehicle/pojo/dto/order/VMCalendarPriceCostDTO.java
View file @
0e172920
...
...
@@ -4,6 +4,7 @@ import com.fasterxml.jackson.annotation.JsonFormat;
import
com.xxfc.platform.vehicle.pojo.dto.VehicleModelCalendarPriceDTO
;
import
lombok.Data
;
import
java.math.BigDecimal
;
import
java.util.Date
;
@Data
...
...
@@ -11,4 +12,19 @@ public class VMCalendarPriceCostDTO extends VehicleModelCalendarPriceDTO {
@JsonFormat
(
locale
=
"zh"
,
timezone
=
"GMT+8"
,
pattern
=
"yyyy-MM-dd"
)
private
Date
date
;
/**
* 消费金额
*/
private
BigDecimal
consumeAmount
=
BigDecimal
.
ZERO
;
/**
* 免费金额
*/
private
BigDecimal
freeAmount
=
BigDecimal
.
ZERO
;
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/VehicleModelHolidayPriceBiz.java
View file @
0e172920
...
...
@@ -2,6 +2,7 @@ package com.xxfc.platform.vehicle.biz;
import
com.github.wxiaoqi.security.common.biz.BaseBiz
;
import
com.github.wxiaoqi.security.common.exception.BaseException
;
import
com.google.common.collect.Lists
;
import
com.xxfc.platform.vehicle.entity.Festival
;
import
com.xxfc.platform.vehicle.entity.VehicleModelHolidayPrice
;
import
com.xxfc.platform.vehicle.mapper.VehicleModelHolidayPriceMapper
;
...
...
@@ -161,6 +162,17 @@ public class VehicleModelHolidayPriceBiz extends BaseBiz<VehicleModelHolidayPric
}
List
<
Integer
>
festivalIds
=
modelHolidayPrices
.
stream
().
map
(
VehicleModelHolidayPrice:
:
getFestivalId
).
collect
(
Collectors
.
toList
());
Map
<
Integer
,
Festival
>
festivalMap
=
festivalBiz
.
findFestivalsByIds
(
festivalIds
);
Map
<
Date
,
List
<
VehicleModelHolidayPrice
>>
dateListMap
=
modelHolidayPrices
.
stream
().
collect
(
Collectors
.
groupingBy
(
VehicleModelHolidayPrice:
:
getFestivalDay
,
Collectors
.
toList
()));
modelHolidayPrices
=
dateListMap
.
values
().
stream
().
map
(
x
->{
if
(
x
.
size
()>
1
){
Optional
<
VehicleModelHolidayPrice
>
holidayPrice
=
x
.
stream
().
sorted
(
Comparator
.
comparing
(
VehicleModelHolidayPrice:
:
getMultiple
).
reversed
()).
findFirst
();
return
Lists
.
newArrayList
(
holidayPrice
.
get
());
}
else
{
return
x
;
}
}).
flatMap
(
List:
:
stream
).
collect
(
Collectors
.
toList
());
VehicleModelHolidayPriceDTO
vehicleModelHolidayPriceDTO
;
for
(
VehicleModelHolidayPrice
modelHolidayPrice
:
modelHolidayPrices
)
{
vehicleModelHolidayPriceDTO
=
new
VehicleModelHolidayPriceDTO
();
...
...
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