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
62f17fe7
Commit
62f17fe7
authored
Jun 10, 2019
by
周健威
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
修改计价
parent
5ce3b5e3
Changes
16
Hide whitespace changes
Inline
Side-by-side
Showing
16 changed files
with
324 additions
and
228 deletions
+324
-228
OrderTourDetail.java
.../java/com/xxfc/platform/order/entity/OrderTourDetail.java
+1
-1
RentVehicleBO.java
...ava/com/xxfc/platform/order/pojo/order/RentVehicleBO.java
+1
-0
TourBO.java
.../main/java/com/xxfc/platform/order/pojo/order/TourBO.java
+4
-0
RentVehiclePriceVO.java
...om/xxfc/platform/order/pojo/price/RentVehiclePriceVO.java
+4
-0
TourPriceVO.java
.../java/com/xxfc/platform/order/pojo/price/TourPriceVO.java
+28
-18
OrderTemplateBiz.java
...in/java/com/xxfc/platform/order/biz/OrderTemplateBiz.java
+18
-12
OrderRentVehicleController.java
.../xxfc/platform/order/rest/OrderRentVehicleController.java
+5
-0
OrderTourController.java
...ava/com/xxfc/platform/order/rest/OrderTourController.java
+2
-0
OrderRentVehicleService.java
.../xxfc/platform/order/service/OrderRentVehicleService.java
+39
-16
OrderTourService.java
...ava/com/xxfc/platform/order/service/OrderTourService.java
+69
-52
RegionTest.java
...ver/src/test/java/com/xxfc/platform/order/RegionTest.java
+11
-1
TourBaseController.java
...ava/com/xxfc/platform/tour/common/TourBaseController.java
+4
-1
TourFeign.java
...src/main/java/com/xxfc/platform/tour/feign/TourFeign.java
+7
-4
TourSpePriceVo.java
...c/main/java/com/xxfc/platform/tour/vo/TourSpePriceVo.java
+9
-1
TourGoodSpeBiz.java
.../main/java/com/xxfc/platform/tour/biz/TourGoodSpeBiz.java
+89
-89
bootstrap.yml
xx-tour/xx-tour-server/src/main/resources/bootstrap.yml
+33
-33
No files found.
xx-order/xx-order-api/src/main/java/com/xxfc/platform/order/entity/OrderTourDetail.java
View file @
62f17fe7
...
...
@@ -118,5 +118,5 @@ public class OrderTourDetail implements Serializable {
//具体商品(商品项)id
@Column
(
name
=
"spe_price_id"
)
@ApiModelProperty
(
value
=
"具体商品(商品项)id"
)
private
String
spePriceId
;
private
Integer
spePriceId
;
}
xx-order/xx-order-api/src/main/java/com/xxfc/platform/order/pojo/order/RentVehicleBO.java
View file @
62f17fe7
...
...
@@ -12,4 +12,5 @@ public class RentVehicleBO extends OrderRentVehicleDetail implements OrderDetail
private
BaseOrder
order
;
private
VehicleModel
vehicleModel
;
private
BookVehicleVO
bookVehicleVO
;
private
Integer
damageSafe
;
}
xx-order/xx-order-api/src/main/java/com/xxfc/platform/order/pojo/order/TourBO.java
View file @
62f17fe7
package
com
.
xxfc
.
platform
.
order
.
pojo
.
order
;
import
com.github.wxiaoqi.security.admin.entity.User
;
import
com.xxfc.platform.order.entity.BaseOrder
;
import
com.xxfc.platform.order.entity.OrderRentVehicleDetail
;
import
com.xxfc.platform.order.entity.OrderTourDetail
;
import
com.xxfc.platform.order.entity.inter.OrderDetail
;
import
com.xxfc.platform.tour.entity.TourGood
;
import
com.xxfc.platform.tour.entity.TourUser
;
import
com.xxfc.platform.vehicle.entity.VehicleModel
;
import
lombok.Data
;
...
...
@@ -13,7 +15,9 @@ import java.util.List;
@Data
public
class
TourBO
extends
OrderTourDetail
implements
OrderDetail
{
private
BaseOrder
order
;
TourGood
tourGood
;
List
<
TourUser
>
tourUsers
;
Integer
number
;
Integer
childNumber
;
User
user
;
}
xx-order/xx-order-api/src/main/java/com/xxfc/platform/order/pojo/price/RentVehiclePriceVO.java
View file @
62f17fe7
...
...
@@ -11,6 +11,8 @@ public class RentVehiclePriceVO extends OrderPriceVO{
BigDecimal
vehicleAmount
;
@ApiModelProperty
(
value
=
"司机价格"
)
BigDecimal
driverAmount
;
@ApiModelProperty
(
value
=
"免赔付价格"
)
BigDecimal
damageSafeAmount
;
@ApiModelProperty
(
value
=
"押金价格"
)
BigDecimal
deposit
;
@ApiModelProperty
(
value
=
"天数"
)
...
...
@@ -25,6 +27,8 @@ public class RentVehiclePriceVO extends OrderPriceVO{
BigDecimal
modelAmount
;
@ApiModelProperty
(
value
=
"司机单价"
)
BigDecimal
driverPrice
;
@ApiModelProperty
(
value
=
"免赔付单价"
)
BigDecimal
damageSafePrice
;
@ApiModelProperty
(
value
=
"费用详情"
)
private
String
costDetail
;
}
xx-order/xx-order-api/src/main/java/com/xxfc/platform/order/pojo/price/TourPriceVO.java
View file @
62f17fe7
...
...
@@ -7,24 +7,34 @@ import java.math.BigDecimal;
@Data
public
class
TourPriceVO
extends
OrderPriceVO
{
@ApiModelProperty
(
value
=
"车辆价格"
)
BigDecimal
vehicleAmount
;
@ApiModelProperty
(
value
=
"司机价格"
)
BigDecimal
driverAmount
;
@ApiModelProperty
(
value
=
"押金价格"
)
BigDecimal
deposit
;
@ApiModelProperty
(
value
=
"天数"
)
Integer
dayNum
;
@ApiModelProperty
(
value
=
"车辆个数"
)
Integer
vehicleNum
;
@ApiModelProperty
(
value
=
"司机个数"
)
Integer
driverNum
;
@ApiModelProperty
(
value
=
"车型名称"
)
String
modelName
;
@ApiModelProperty
(
value
=
"车型价格"
)
BigDecimal
modelAmount
;
@ApiModelProperty
(
value
=
"司机单价"
)
BigDecimal
driverPrice
;
@ApiModelProperty
(
value
=
"费用详情"
)
private
String
costDetail
;
@ApiModelProperty
(
value
=
"成人人数"
)
private
Integer
number
;
@ApiModelProperty
(
value
=
"儿童人数"
)
private
Integer
childNumber
;
//大人单价"
@ApiModelProperty
(
value
=
"大人单价"
)
private
BigDecimal
price
;
//大人总价
@ApiModelProperty
(
value
=
"大人总价"
)
private
BigDecimal
totalPrice
;
//大人真实总价(优惠后的价格)
@ApiModelProperty
(
value
=
"大人真实总价(优惠后的价格)"
)
private
BigDecimal
realPrice
;
//儿童单价
@ApiModelProperty
(
value
=
"儿童单价"
)
private
BigDecimal
childPrice
;
//儿童总价
@ApiModelProperty
(
value
=
"儿童总价"
)
private
BigDecimal
totalChildPrice
;
//儿童真实总价(优惠后的价格)
@ApiModelProperty
(
value
=
"儿童真实总价(优惠后的价格)"
)
private
BigDecimal
realChildPrice
;
}
xx-order/xx-order-server/src/main/java/com/xxfc/platform/order/biz/OrderTemplateBiz.java
View file @
62f17fe7
...
...
@@ -25,30 +25,36 @@ import java.util.stream.Collectors;
public
class
OrderTemplateBiz
extends
BaseBiz
<
OrderTemplateMapper
,
OrderTemplate
>
{
public
String
result
(
OrderTemplate
orderTemplate
,
Dict
dict
)
{
// TemplateEngine engine = TemplateUtil.createEngine(new TemplateConfig());
// OrderCostDetail orderCostDetail = orderCostDetailBiz.selectById(OrderCostEnum.RentVehicle.getCode());
// Template template = engine.getTemplate(orderCostDetail.getTemplate());
// String result = template.render(Dict.parse(pojo));
// pojo.setCostDetail(result);
TemplateEngine
engine
=
TemplateUtil
.
createEngine
();
String
result
=
""
;
Template
template
;
// //预处理
// template = engine.getTemplate(orderTemplate.getTemplate());
// result = template.render(new Dict(preprocessMap));
//获取所有模板
List
<
OrderTemplate
>
all
=
this
.
selectListAll
();
Map
<
String
,
Object
>
allCodeMap
=
all
.
parallelStream
().
collect
(
Collectors
.
toMap
(
item
->
"tem_"
+
item
.
getCode
(),
OrderTemplate:
:
getTemplate
));
List
<
String
>
codes
=
all
.
parallelStream
().
map
(
OrderTemplate:
:
getCode
).
collect
(
Collectors
.
toList
());
String
result
=
""
;
TemplateEngine
engine
=
TemplateUtil
.
createEngine
();
//匹配模板 ParamKey() 判断是否存在别的模板
List
<
String
>
list
=
Arrays
.
asList
(
orderTemplate
.
getParamKey
().
split
(
","
)).
parallelStream
().
filter
(
item
->
codes
.
contains
(
item
)).
collect
(
Collectors
.
toList
());
if
(
list
.
size
()
>
0
)
{
allCodeMap
.
remove
(
"tem_0101"
);
Template
template
=
engine
.
getTemplate
(
orderTemplate
.
getTemplate
());
template
=
engine
.
getTemplate
(
orderTemplate
.
getTemplate
());
result
=
template
.
render
(
new
Dict
(
allCodeMap
));
}
//匹配参数 填充参数
template
=
engine
.
getTemplate
(
result
);
result
=
template
.
render
(
dict
);
return
result
;
}
// public Map<String, OrderTemplate> allCodeMap() {
// return this.selectListAll().parallelStream().collect(Collectors.toMap(OrderTemplate::getCode, template -> template));
// }
public
String
result
(
String
templateStr
,
Map
map
)
{
TemplateEngine
engine
=
TemplateUtil
.
createEngine
();
Template
template
=
engine
.
getTemplate
(
templateStr
);
return
template
.
render
(
map
);
}
}
\ No newline at end of file
xx-order/xx-order-server/src/main/java/com/xxfc/platform/order/rest/OrderRentVehicleController.java
View file @
62f17fe7
...
...
@@ -84,5 +84,10 @@ public class OrderRentVehicleController extends CommonBaseController {
@ApiModelProperty
(
value
=
"天数"
)
private
Integer
dayNum
;
//是否购买免赔
@ApiModelProperty
(
value
=
"是否购买免赔 1--是"
)
private
Integer
damageSafe
;
}
}
\ No newline at end of file
xx-order/xx-order-server/src/main/java/com/xxfc/platform/order/rest/OrderTourController.java
View file @
62f17fe7
...
...
@@ -15,6 +15,7 @@ import com.xxfc.platform.order.pojo.order.TourBO;
import
com.xxfc.platform.order.pojo.price.RentVehiclePriceVO
;
import
com.xxfc.platform.order.pojo.price.TourPriceVO
;
import
com.xxfc.platform.order.service.OrderTourService
;
import
io.swagger.annotations.Api
;
import
io.swagger.annotations.ApiModelProperty
;
import
io.swagger.annotations.ApiOperation
;
import
lombok.Data
;
...
...
@@ -29,6 +30,7 @@ import javax.persistence.Column;
@Controller
@RequestMapping
(
"orderTour"
)
@Api
(
value
=
"旅游订单"
,
tags
={
"旅游订单"
})
public
class
OrderTourController
extends
BaseController
<
OrderTourDetailBiz
,
OrderTourDetail
>
{
@Autowired
...
...
xx-order/xx-order-server/src/main/java/com/xxfc/platform/order/service/OrderRentVehicleService.java
View file @
62f17fe7
...
...
@@ -6,6 +6,7 @@ import cn.hutool.extra.template.Template;
import
cn.hutool.extra.template.TemplateConfig
;
import
cn.hutool.extra.template.TemplateEngine
;
import
cn.hutool.extra.template.TemplateUtil
;
import
com.github.wxiaoqi.security.common.msg.ObjectRestResponse
;
import
com.xxfc.platform.order.biz.OrderCostDetailBiz
;
import
com.xxfc.platform.order.biz.OrderRentVehicleBiz
;
import
com.xxfc.platform.order.biz.OrderTemplateBiz
;
...
...
@@ -13,6 +14,7 @@ import com.xxfc.platform.order.contant.enumerate.OrderCostEnum;
import
com.xxfc.platform.order.contant.enumerate.OrderStatusEnum
;
import
com.xxfc.platform.order.contant.enumerate.OrderTypeEnum
;
import
com.xxfc.platform.order.entity.OrderCostDetail
;
import
com.xxfc.platform.order.entity.OrderTemplate
;
import
com.xxfc.platform.order.pojo.order.RentVehicleBO
;
import
com.xxfc.platform.order.pojo.price.RentVehiclePriceVO
;
import
com.xxfc.platform.vehicle.entity.VehicleModel
;
...
...
@@ -24,6 +26,9 @@ import org.springframework.stereotype.Service;
import
javax.annotation.PostConstruct
;
import
java.math.BigDecimal
;
import
java.util.ArrayList
;
import
java.util.HashMap
;
import
java.util.List
;
@Service
@Log4j
...
...
@@ -32,6 +37,7 @@ public class OrderRentVehicleService extends AbstractOrderHandle<OrderRentVehicl
private
static
BigDecimal
DRIVER_PRICE
=
new
BigDecimal
(
"600.00"
);
private
static
BigDecimal
DAMAGE_SAFE
=
new
BigDecimal
(
"100.00"
);
//车损免赔
private
static
Integer
DRIVER_TYPE_COMPANY
=
1
;
private
static
Integer
DRIVER_TYPE_DAMAGE_SAFE
=
1
;
// private static BigDecimal DEPOSIT = new BigDecimal("20000.00");
@Autowired
...
...
@@ -83,6 +89,7 @@ public class OrderRentVehicleService extends AbstractOrderHandle<OrderRentVehicl
BigDecimal
goodsAmount
=
BigDecimal
.
ZERO
;
BigDecimal
vehicleAmount
=
BigDecimal
.
ZERO
;
BigDecimal
driverAmount
=
BigDecimal
.
ZERO
;
BigDecimal
damageSafeAmount
=
BigDecimal
.
ZERO
;
//计算价格
//计算车辆费用
...
...
@@ -92,6 +99,12 @@ public class OrderRentVehicleService extends AbstractOrderHandle<OrderRentVehicl
//计算司机费用
driverAmount
=
driverAmount
.
add
(
DRIVER_PRICE
.
multiply
(
BigDecimal
.
valueOf
(
detail
.
getDayNum
())));
}
if
(
DRIVER_TYPE_DAMAGE_SAFE
.
equals
(
detail
.
getDamageSafe
()))
{
//免赔费用
damageSafeAmount
=
damageSafeAmount
.
add
(
DAMAGE_SAFE
.
multiply
(
BigDecimal
.
valueOf
(
detail
.
getDayNum
())));
}
//商品价格
goodsAmount
=
goodsAmount
.
add
(
vehicleAmount
).
add
(
driverAmount
);
//总价格(包含押金)
...
...
@@ -103,42 +116,52 @@ public class OrderRentVehicleService extends AbstractOrderHandle<OrderRentVehicl
rvp
.
setGoodsAmount
(
goodsAmount
);
rvp
.
setDriverAmount
(
driverAmount
);
rvp
.
setVehicleAmount
(
vehicleAmount
);
rvp
.
setDamageSafeAmount
(
damageSafeAmount
);
rvp
.
setRealAmount
(
orderAmount
);
rvp
.
setDeposit
(
vehicleModel
.
getDeposit
());
rvp
.
setModelAmount
(
vehicleModel
.
getPrice
());
rvp
.
setDriverPrice
(
DRIVER_PRICE
);
rvp
.
setDamageSafePrice
(
DAMAGE_SAFE
);
rvp
.
setModelName
(
vehicleModel
.
getName
());
rvp
.
setDayNum
(
detail
.
getDayNum
());
rvp
.
setVehicleNum
(
1
);
rvp
.
setDriverNum
(
1
);
detail
.
setCostDetail
(
costDetail
(
rvp
));
//设置收费明细
costDetail
(
rvp
,
handlechildren
(
detail
));
return
rvp
;
}
private
String
handlechildren
(
RentVehicleBO
detail
)
{
StringBuffer
childrenStr
=
new
StringBuffer
(
"${tem_0101}"
);
if
(
DRIVER_TYPE_COMPANY
.
equals
(
detail
.
getDriverType
()))
{
childrenStr
.
append
(
",${tem_0102}"
);
}
childrenStr
.
append
(
",${tem_0103}"
);
if
(
DRIVER_TYPE_DAMAGE_SAFE
.
equals
(
detail
.
getDamageSafe
()))
{
childrenStr
.
append
(
",${tem_0104}"
);
}
return
childrenStr
.
toString
();
}
/**
* 计算费用明细
* @param vo
* @return
*/
private
String
costDetail
(
RentVehiclePriceVO
vo
)
{
//orderTemplateBiz.result(orderTemplateBiz.selectById(OrderCostEnum.RentVehicle.getCode()), Dict.parse(pojo
));
TemplateEngine
engine
=
TemplateUtil
.
createEngine
(
new
TemplateConfig
());
OrderCostDetail
orderCostDetail
=
orderCostDetailBiz
.
selectById
(
OrderCostEnum
.
RentVehicle
.
getCode
()
);
Template
template
=
engine
.
getTemplate
(
orderCostDetail
.
getTemplate
(
));
String
result
=
template
.
render
(
Dict
.
parse
(
vo
));
private
void
costDetail
(
RentVehiclePriceVO
vo
,
String
children
)
{
OrderTemplate
template
=
orderTemplateBiz
.
selectById
(
OrderCostEnum
.
RentVehicle
.
getCode
(
));
template
.
setTemplate
(
orderTemplateBiz
.
result
(
template
.
getTemplate
(),
new
HashMap
(){{
put
(
"children"
,
children
);
}}
));
String
result
=
orderTemplateBiz
.
result
(
template
,
Dict
.
parse
(
vo
));
vo
.
setCostDetail
(
result
);
return
result
;
}
private
String
acquireVehicle
(
RentVehicleBO
detail
)
{
private
void
acquireVehicle
(
RentVehicleBO
detail
)
{
//根据车型、时间、距离,门店,预定车辆
BookVehicleVO
bookVehicleVO
=
new
BookVehicleVO
(){{
// setBookStartDate(detail.getS);
}};
// vehicleFeign.rentApplyVehicle()
String
vehicleId
=
"0e9a88db-cb1b-48a4-b307-40f89eed906f"
;
detail
.
setVehicleId
(
vehicleId
);
return
vehicleId
;
BookVehicleVO
bookVehicleVO
=
detail
.
getBookVehicleVO
();
ObjectRestResponse
<
String
>
orr
=
vehicleFeign
.
rentApplyVehicle
(
bookVehicleVO
);
detail
.
setVehicleId
(
orr
.
getData
());
}
}
xx-order/xx-order-server/src/main/java/com/xxfc/platform/order/service/OrderTourService.java
View file @
62f17fe7
...
...
@@ -2,10 +2,12 @@ package com.xxfc.platform.order.service;
import
cn.hutool.core.bean.BeanUtil
;
import
cn.hutool.core.lang.Dict
;
import
cn.hutool.core.util.StrUtil
;
import
cn.hutool.extra.template.Template
;
import
cn.hutool.extra.template.TemplateConfig
;
import
cn.hutool.extra.template.TemplateEngine
;
import
cn.hutool.extra.template.TemplateUtil
;
import
com.github.wxiaoqi.security.common.msg.ObjectRestResponse
;
import
com.xxfc.platform.order.biz.OrderCostDetailBiz
;
import
com.xxfc.platform.order.biz.OrderRentVehicleBiz
;
import
com.xxfc.platform.order.biz.OrderTemplateBiz
;
...
...
@@ -13,11 +15,15 @@ import com.xxfc.platform.order.contant.enumerate.OrderCostEnum;
import
com.xxfc.platform.order.contant.enumerate.OrderStatusEnum
;
import
com.xxfc.platform.order.contant.enumerate.OrderTypeEnum
;
import
com.xxfc.platform.order.entity.OrderCostDetail
;
import
com.xxfc.platform.order.entity.OrderTemplate
;
import
com.xxfc.platform.order.pojo.order.RentVehicleBO
;
import
com.xxfc.platform.order.pojo.order.TourBO
;
import
com.xxfc.platform.order.pojo.price.RentVehiclePriceVO
;
import
com.xxfc.platform.order.pojo.price.TourPriceVO
;
import
com.xxfc.platform.tour.dto.TourSpePriceDTO
;
import
com.xxfc.platform.tour.entity.TourGood
;
import
com.xxfc.platform.tour.feign.TourFeign
;
import
com.xxfc.platform.tour.vo.TourSpePriceVo
;
import
com.xxfc.platform.vehicle.entity.VehicleModel
;
import
com.xxfc.platform.vehicle.feign.VehicleFeign
;
import
lombok.extern.log4j.Log4j
;
...
...
@@ -26,6 +32,7 @@ import org.springframework.stereotype.Service;
import
javax.annotation.PostConstruct
;
import
java.math.BigDecimal
;
import
java.util.HashMap
;
@Service
@Log4j
...
...
@@ -34,12 +41,11 @@ public class OrderTourService extends AbstractOrderHandle<OrderRentVehicleBiz, T
@Autowired
TourFeign
tourFeign
;
private
static
BigDecimal
DRIVER_PRICE
=
new
BigDecimal
(
"600.00"
);
private
static
BigDecimal
DAMAGE_SAFE
=
new
BigDecimal
(
"100.00"
);
//车损免赔
// private static BigDecimal DEPOSIT = new BigDecimal("20000.00");
@Autowired
VehicleFeign
vehicleFeign
;
// private static BigDecimal DRIVER_PRICE = new BigDecimal("600.00");
// private static BigDecimal DAMAGE_SAFE = new BigDecimal("100.00"); //车损免赔
private
static
Integer
LEVEL_DEFAULT
=
0
;
private
static
Integer
NUMBER_ZERO
=
0
;
// private static BigDecimal DEPOSIT = new BigDecimal("20000.00");-
@Autowired
OrderCostDetailBiz
orderCostDetailBiz
;
...
...
@@ -56,8 +62,8 @@ public class OrderTourService extends AbstractOrderHandle<OrderRentVehicleBiz, T
@Override
public
void
initDetail
(
TourBO
bo
)
{
super
.
initDetail
(
bo
);
//VehicleModel vehicleModel = vehicleFeign.get(bo.getModel
Id()).getData();
//bo.setVehicleModel(vehicleModel
);
TourGood
tourGood
=
tourFeign
.
get
(
bo
.
getGood
Id
()).
getData
();
bo
.
setTourGood
(
tourGood
);
}
@Override
...
...
@@ -65,62 +71,74 @@ public class OrderTourService extends AbstractOrderHandle<OrderRentVehicleBiz, T
//设置订单状态为3
bo
.
getOrder
().
setStatus
(
OrderStatusEnum
.
ORDER_UNPAY
.
getCode
());
//设置订单图片
//bo.getOrder().setPicture(bo.getVehicleModel().getPicture
());
bo
.
getOrder
().
setPicture
(
bo
.
getTourGood
().
getCover
());
//设置订单名称
//bo.getOrder().setName(bo.getVehicleModel
().getName());
bo
.
getOrder
().
setName
(
bo
.
getTourGood
().
getName
());
super
.
handleDetail
(
bo
);
}
@Override
public
void
handleCalculate
(
TourBO
bo
)
{
RentVehiclePriceVO
rv
pv
=
calculatePrice
(
bo
);
BeanUtil
.
copyProperties
(
rv
pv
,
bo
.
getOrder
());
BeanUtil
.
copyProperties
(
rv
pv
,
bo
);
TourPriceVO
t
pv
=
calculatePrice
(
bo
);
BeanUtil
.
copyProperties
(
t
pv
,
bo
.
getOrder
());
BeanUtil
.
copyProperties
(
t
pv
,
bo
);
}
@Override
public
RentVehicle
PriceVO
calculatePrice
(
TourBO
detail
)
{
public
Tour
PriceVO
calculatePrice
(
TourBO
detail
)
{
BigDecimal
orderAmount
=
BigDecimal
.
ZERO
;
BigDecimal
goodsAmount
=
BigDecimal
.
ZERO
;
BigDecimal
tourAmount
=
BigDecimal
.
ZERO
;
BigDecimal
realAmount
=
BigDecimal
.
ZERO
;
//计算旅游价格
tourFeign
.
refund
(
new
TourSpePriceDTO
(){{
setChildNumber
(
detail
.
getChildNumber
());
ObjectRestResponse
<
TourSpePriceVo
>
objectRestResponse
=
tourFeign
.
refund
(
new
TourSpePriceDTO
(){{
setChildNumber
(
detail
.
getChildNumber
());
setNumber
(
detail
.
getNumber
());
setLevel
(
LEVEL_DEFAULT
);
setSpeId
(
detail
.
getSpePriceId
());
//setUserId(detail.getUser().getId());
}});
TourSpePriceVo
tourSpePriceVo
=
objectRestResponse
.
getData
();
//总价
tourAmount
=
tourAmount
.
add
(
tourSpePriceVo
.
getTotalPrice
()).
add
(
tourSpePriceVo
.
getChildPrice
());
//计算价格
//计算车辆费用
// VehicleModel vehicleModel = vehicleFeign.get(detail.getModelId()).getData();
// vehicleAmount = vehicleAmount.add(vehicleModel.getPrice().multiply(BigDecimal.valueOf(detail.getDayNum())));
// if(DRIVER_TYPE_COMPANY.equals(detail.getDriverType())) {
// //计算司机费用
// driverAmount = driverAmount.add(DRIVER_PRICE.multiply(BigDecimal.valueOf(detail.getDayNum())));
// }
//商品价格
// goodsAmount = goodsAmount.add(vehicleAmount).add(driverAmount);
//总价格(包含押金)
// orderAmount = orderAmount.add(goodsAmount).add(DEPOSIT);
//生成订单明细
RentVehiclePriceVO
rvp
=
new
RentVehiclePriceVO
();
rvp
.
setOrderAmount
(
orderAmount
);
rvp
.
setGoodsAmount
(
goodsAmount
);
// rvp.setDriverAmount(driverAmount);
// rvp.setVehicleAmount(vehicleAmount);
rvp
.
setRealAmount
(
orderAmount
);
// rvp.setDeposit(DEPOSIT);
// rvp.setModelAmount(vehicleModel.getPrice());
rvp
.
setDriverPrice
(
DRIVER_PRICE
);
// rvp.setModelName(vehicleModel.getName());
rvp
.
setDayNum
(
detail
.
getDayNum
());
rvp
.
setVehicleNum
(
1
);
rvp
.
setDriverNum
(
1
);
//detail.setCostDetail(costDetail(rvp));
return
rvp
;
goodsAmount
=
goodsAmount
.
add
(
tourAmount
);
//总价格
orderAmount
=
orderAmount
.
add
(
goodsAmount
);
//真实价格
realAmount
=
realAmount
.
add
(
tourSpePriceVo
.
getRealPrice
()).
add
(
tourSpePriceVo
.
getRealChildPrice
());
//生成订单明细
TourPriceVO
tpv
=
BeanUtil
.
toBean
(
tourSpePriceVo
,
TourPriceVO
.
class
);
tpv
.
setOrderAmount
(
orderAmount
);
tpv
.
setGoodsAmount
(
goodsAmount
);
tpv
.
setRealAmount
(
realAmount
);
tpv
.
setNumber
(
detail
.
getNumber
());
tpv
.
setChildNumber
(
detail
.
getChildNumber
());
//设置收费明细
costDetail
(
tpv
,
handlechildren
(
detail
));
return
tpv
;
}
private
String
handlechildren
(
TourBO
detail
)
{
StringBuffer
childrenStr
=
new
StringBuffer
(
""
);
if
(
NUMBER_ZERO
<
detail
.
getNumber
())
{
childrenStr
.
append
(
",${tem_0201}"
);
}
if
(
NUMBER_ZERO
<
detail
.
getChildNumber
())
{
childrenStr
.
append
(
",${tem_0202}"
);
}
String
str
=
childrenStr
.
toString
();
if
(
str
.
length
()
>
0
)
{
str
=
str
.
substring
(
1
,
str
.
length
());
}
return
str
;
}
/**
...
...
@@ -128,13 +146,12 @@ public class OrderTourService extends AbstractOrderHandle<OrderRentVehicleBiz, T
* @param vo
* @return
*/
private
String
costDetail
(
RentVehiclePriceVO
vo
)
{
//orderTemplateBiz.result(orderTemplateBiz.selectById(OrderCostEnum.RentVehicle.getCode()), Dict.parse(pojo
));
TemplateEngine
engine
=
TemplateUtil
.
createEngine
(
new
TemplateConfig
());
OrderCostDetail
orderCostDetail
=
orderCostDetailBiz
.
selectById
(
OrderCostEnum
.
RentVehicle
.
getCode
()
);
Template
template
=
engine
.
getTemplate
(
orderCostDetail
.
getTemplate
(
));
String
result
=
template
.
render
(
Dict
.
parse
(
vo
));
private
void
costDetail
(
TourPriceVO
vo
,
String
children
)
{
OrderTemplate
template
=
orderTemplateBiz
.
selectById
(
OrderCostEnum
.
RentVehicle
.
getCode
(
));
template
.
setTemplate
(
orderTemplateBiz
.
result
(
template
.
getTemplate
(),
new
HashMap
(){{
put
(
"children"
,
children
);
}}
));
String
result
=
orderTemplateBiz
.
result
(
template
,
Dict
.
parse
(
vo
));
vo
.
setCostDetail
(
result
);
return
result
;
}
}
xx-order/xx-order-server/src/test/java/com/xxfc/platform/order/RegionTest.java
View file @
62f17fe7
...
...
@@ -10,6 +10,8 @@ import org.junit.runner.RunWith;
import
org.springframework.boot.test.context.SpringBootTest
;
import
org.springframework.test.context.junit4.SpringJUnit4ClassRunner
;
import
java.util.HashMap
;
@Slf4j
@RunWith
(
SpringJUnit4ClassRunner
.
class
)
@SpringBootTest
(
classes
={
OrderApplication
.
class
})
...
...
@@ -24,11 +26,19 @@ public class RegionTest {
TemplateEngine
engine
=
TemplateUtil
.
createEngine
(
new
TemplateConfig
());
//假设我们引入的是Beetl引擎,则:
Template
template
=
engine
.
getTemplate
(
"{\"key\":\"费用明细\",\"val\":\"\",\"children\":[{\"key\":\"车辆租赁费\",\"val\":\"¥${vehicleAmount}\",\"children\":[{\"key\":\"${modelName}\",\"val\":\"¥${modelAmount}/天\"},{\"key\":\"租用天数\",\"val\":\"${dayNum}天\"},{\"key\":\"房车数量\",\"val\":\"${vehicleNum}辆\"}]},{\"key\":\"服务费(司机)\",\"val\":\"¥${driverAmount}\",\"children\":[{\"key\":\"欣新司机\",\"val\":\"¥${driverPrice}/天\"},{\"key\":\"司机数量\",\"val\":\"{driverNum}个\"},{\"key\":\"房车数量\",\"val\":\"${dayNum}天\"}]},{\"key\":\"用车押金\",\"val\":\"¥${deposit}\"}]}"
);
//Template template = engine.getTemplate("{\"key\":\"费用明细\",\"val\":\"\",\"children\":[{\"key\":\"车辆租赁费\",\"val\":\"¥${vehicleAmount}\",\"children\":[{\"key\":\"${modelName}\",\"val\":\"¥${modelAmount}/天\"},{\"key\":\"租用天数\",\"val\":\"${dayNum}天\"},{\"key\":\"房车数量\",\"val\":\"${vehicleNum}辆\"}]},{\"key\":\"服务费(司机)\",\"val\":\"¥${driverAmount}\",\"children\":[{\"key\":\"欣新司机\",\"val\":\"¥${driverPrice}/天\"},{\"key\":\"司机数量\",\"val\":\"{driverNum}个\"},{\"key\":\"房车数量\",\"val\":\"${dayNum}天\"}]},{\"key\":\"用车押金\",\"val\":\"¥${deposit}\"}]}");
Template
template
=
engine
.
getTemplate
(
"${[a,b,c]}"
);
//Dict本质上为Map,此处可用Map
// String result = template.render(Dict.create().set("name", "Hutool").set("name2", "Hutool2"));
String
result
=
""
;
result
=
template
.
render
(
new
HashMap
<
String
,
Object
>(){{
put
(
"a"
,
123
);
put
(
"b"
,
456
);
put
(
"c"
,
789
);
}});
//template.render(
//Dict.parse(new RentVehiclePriceVO(new BigDecimal("126800.03"), new BigDecimal("106800.03"), new BigDecimal("105000.03"), new BigDecimal("1800"), new BigDecimal("20000"))));
...
...
xx-tour/xx-tour-api/src/main/java/com/xxfc/platform/tour/common/TourBaseController.java
View file @
62f17fe7
...
...
@@ -5,12 +5,15 @@ import com.github.wxiaoqi.security.admin.feign.dto.AppUserDTO;
import
com.github.wxiaoqi.security.auth.client.config.UserAuthConfig
;
import
com.github.wxiaoqi.security.common.biz.BaseBiz
;
import
com.github.wxiaoqi.security.common.rest.BaseController
;
import
com.github.wxiaoqi.security.common.rest.CommonBaseController
;
import
lombok.extern.slf4j.Slf4j
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
javax.servlet.http.HttpServletRequest
;
@Slf4j
public
class
TourBaseController
<
Biz
extends
BaseBiz
>
extends
BaseController
{
public
class
TourBaseController
<
Biz
extends
BaseBiz
>
extends
CommonBaseController
{
@Autowired
protected
Biz
baseBiz
;
@Autowired
protected
UserFeign
userFeign
;
...
...
xx-tour/xx-tour-api/src/main/java/com/xxfc/platform/tour/feign/TourFeign.java
View file @
62f17fe7
...
...
@@ -3,11 +3,10 @@ package com.xxfc.platform.tour.feign;
import
com.github.wxiaoqi.security.common.msg.ObjectRestResponse
;
import
com.xxfc.platform.tour.dto.TourSpePriceDTO
;
import
com.xxfc.platform.tour.entity.TourGood
;
import
com.xxfc.platform.tour.vo.TourSpePriceVo
;
import
org.springframework.cloud.openfeign.FeignClient
;
import
org.springframework.web.bind.annotation.RequestBody
;
import
org.springframework.web.bind.annotation.RequestMapping
;
import
org.springframework.web.bind.annotation.RequestMethod
;
import
org.springframework.web.bind.annotation.*
;
/**
...
...
@@ -28,6 +27,10 @@ public interface TourFeign {
public
ObjectRestResponse
<
TourSpePriceVo
>
refund
(
@RequestBody
TourSpePriceDTO
spePriceDto
);
@RequestMapping
(
value
=
"/spe/stock"
,
method
=
RequestMethod
.
GET
)
public
ObjectRestResponse
<
TourSpePriceVo
>
stock
(
Integer
speId
,
Integer
number
);
public
ObjectRestResponse
<
TourSpePriceVo
>
stock
(
@RequestParam
Integer
speId
,
@RequestParam
Integer
number
);
@RequestMapping
(
value
=
"/tourGood/{id}"
,
method
=
RequestMethod
.
GET
)
public
ObjectRestResponse
<
TourGood
>
get
(
@PathVariable
int
id
);
}
xx-tour/xx-tour-api/src/main/java/com/xxfc/platform/tour/vo/TourSpePriceVo.java
View file @
62f17fe7
...
...
@@ -34,13 +34,21 @@ public class TourSpePriceVo {
@ApiModelProperty
(
value
=
"大人总价"
)
private
BigDecimal
totalPrice
;
//大人真实总价(优惠后的价格)
@ApiModelProperty
(
value
=
"大人真实总价(优惠后的价格)"
)
private
BigDecimal
realPrice
;
//儿童单价
@ApiModelProperty
(
value
=
"儿童单价"
)
private
BigDecimal
childPrice
;
//儿童总价
@ApiModelProperty
(
value
=
"儿童总价"
)
private
BigDecimal
totaiChildPrice
;
private
BigDecimal
totalChildPrice
;
//儿童真实总价(优惠后的价格)
@ApiModelProperty
(
value
=
"儿童真实总价(优惠后的价格)"
)
private
BigDecimal
realChildPrice
;
//库存
@ApiModelProperty
(
value
=
"库存"
)
...
...
xx-tour/xx-tour-server/src/main/java/com/xxfc/platform/tour/biz/TourGoodSpeBiz.java
View file @
62f17fe7
package
com
.
xxfc
.
platform
.
tour
.
biz
;
import
com.alibaba.fastjson.JSONArray
;
import
com.alibaba.fastjson.JSONObject
;
import
com.github.wxiaoqi.security.common.msg.ObjectRestResponse
;
import
com.github.wxiaoqi.security.common.util.process.ResultCode
;
import
com.xxfc.platform.tour.dto.TourSpePriceDTO
;
import
com.xxfc.platform.tour.entity.TourGoodSpePrice
;
import
com.xxfc.platform.tour.mapper.TourGoodSpePriceMapper
;
import
com.xxfc.platform.tour.vo.TourSpePriceVo
;
import
lombok.extern.slf4j.Slf4j
;
import
org.apache.commons.lang3.StringUtils
;
import
org.springframework.stereotype.Service
;
import
com.github.wxiaoqi.security.common.biz.BaseBiz
;
import
java.math.BigDecimal
;
import
java.math.RoundingMode
;
/**
* 旅游商品规格表
*
* @author zjw
* @email nishijjo@qq.com
* @date 2019-06-06 11:41:51
*/
@Service
@Slf4j
public
class
TourGoodSpeBiz
extends
BaseBiz
<
TourGoodSpePriceMapper
,
TourGoodSpePrice
>
{
public
ObjectRestResponse
<
TourSpePriceVo
>
getPricesByuserid
(
TourSpePriceDTO
priceDto
)
{
if
(
priceDto
==
null
||
priceDto
.
getUserId
()
==
null
||
priceDto
.
getUserId
()
==
0
||
priceDto
.
getNumber
()
==
null
||
priceDto
.
getNumber
()
==
0
||
priceDto
.
getSpeId
()==
null
)
{
return
ObjectRestResponse
.
createFailedResult
(
ResultCode
.
NULL_CODE
,
"参数为空"
);
}
TourSpePriceVo
priceVo
=
new
TourSpePriceVo
();
Integer
speId
=
priceDto
.
getSpeId
();
Integer
number
=
priceDto
.
getNumber
();
Integer
childNumber
=
priceDto
.
getChildNumber
()
==
null
?
0
:
priceDto
.
getChildNumber
();
if
(
speId
!=
null
)
{
TourGoodSpePrice
spePrice
=
mapper
.
selectByPrimaryKey
(
speId
);
if
(
spePrice
!=
null
)
{
Integer
level
=
priceDto
.
getLevel
();
priceVo
.
setUserId
(
priceDto
.
getUserId
());
priceVo
.
setLevel
(
priceDto
.
getLevel
());
priceVo
.
setStock
(
spePrice
.
getStock
());
BigDecimal
price
=
spePrice
.
getPrice
();
BigDecimal
childPrice
=
spePrice
.
getChildPrice
();
if
(
level
!=
null
&&
level
>
0
)
{
String
memberPrice
=
spePrice
.
getMemberPrice
();
JSONArray
array
=
JSONArray
.
parseArray
(
memberPrice
);
if
(
array
.
size
()
>
0
)
{
for
(
Object
obj
:
array
)
{
JSONObject
jsonObject
=
JSONObject
.
parseObject
(
obj
.
toString
());
Integer
levels
=
jsonObject
.
getInteger
(
"level"
);
if
(
level
==
levels
)
{
String
money
=
jsonObject
.
getString
(
"price"
);
price
=
new
BigDecimal
(
StringUtils
.
isNotBlank
(
money
)
?
money
:
"0.00"
);
String
childMoney
=
jsonObject
.
getString
(
"child_price"
);
childPrice
=
new
BigDecimal
(
StringUtils
.
isNotBlank
(
childMoney
)
?
childMoney
:
"0.00"
);
break
;
}
}
}
}
BigDecimal
totalPrice
=
price
.
multiply
(
new
BigDecimal
(
number
)).
setScale
(
2
,
RoundingMode
.
HALF_UP
);
BigDecimal
totalChildPrice
=
childNumber
>
0
?
price
.
multiply
(
new
BigDecimal
(
childNumber
)).
setScale
(
2
,
RoundingMode
.
HALF_UP
):
new
BigDecimal
(
"0.00"
);
priceVo
.
setPrice
(
price
);
priceVo
.
setChildPrice
(
childPrice
);
priceVo
.
setTotalPrice
(
totalPrice
);
priceVo
.
setTota
iChildPrice
(
totalChildPrice
);
return
ObjectRestResponse
.
succ
(
priceVo
);
}
}
return
ObjectRestResponse
.
createDefaultFail
();
}
//减库存
public
ObjectRestResponse
cutStock
(
Integer
speId
,
Integer
number
)
{
TourGoodSpePrice
spePrice
=
mapper
.
selectByPrimaryKey
(
speId
);
if
(
spePrice
!=
null
&&
spePrice
.
getStock
()
>
0
&&
spePrice
.
getStock
()
>=
number
)
{
mapper
.
updStockById
(
speId
,
number
);
return
ObjectRestResponse
.
succ
();
}
else
{
return
ObjectRestResponse
.
createFailedResult
(
ResultCode
.
STOCK_CODE
,
"库存不足"
);
}
}
package
com
.
xxfc
.
platform
.
tour
.
biz
;
import
com.alibaba.fastjson.JSONArray
;
import
com.alibaba.fastjson.JSONObject
;
import
com.github.wxiaoqi.security.common.msg.ObjectRestResponse
;
import
com.github.wxiaoqi.security.common.util.process.ResultCode
;
import
com.xxfc.platform.tour.dto.TourSpePriceDTO
;
import
com.xxfc.platform.tour.entity.TourGoodSpePrice
;
import
com.xxfc.platform.tour.mapper.TourGoodSpePriceMapper
;
import
com.xxfc.platform.tour.vo.TourSpePriceVo
;
import
lombok.extern.slf4j.Slf4j
;
import
org.apache.commons.lang3.StringUtils
;
import
org.springframework.stereotype.Service
;
import
com.github.wxiaoqi.security.common.biz.BaseBiz
;
import
java.math.BigDecimal
;
import
java.math.RoundingMode
;
/**
* 旅游商品规格表
*
* @author zjw
* @email nishijjo@qq.com
* @date 2019-06-06 11:41:51
*/
@Service
@Slf4j
public
class
TourGoodSpeBiz
extends
BaseBiz
<
TourGoodSpePriceMapper
,
TourGoodSpePrice
>
{
public
ObjectRestResponse
<
TourSpePriceVo
>
getPricesByuserid
(
TourSpePriceDTO
priceDto
)
{
if
(
priceDto
==
null
||
priceDto
.
getUserId
()
==
null
||
priceDto
.
getUserId
()
==
0
||
priceDto
.
getNumber
()
==
null
||
priceDto
.
getNumber
()
==
0
||
priceDto
.
getSpeId
()==
null
)
{
return
ObjectRestResponse
.
createFailedResult
(
ResultCode
.
NULL_CODE
,
"参数为空"
);
}
TourSpePriceVo
priceVo
=
new
TourSpePriceVo
();
Integer
speId
=
priceDto
.
getSpeId
();
Integer
number
=
priceDto
.
getNumber
();
Integer
childNumber
=
priceDto
.
getChildNumber
()
==
null
?
0
:
priceDto
.
getChildNumber
();
if
(
speId
!=
null
)
{
TourGoodSpePrice
spePrice
=
mapper
.
selectByPrimaryKey
(
speId
);
if
(
spePrice
!=
null
)
{
Integer
level
=
priceDto
.
getLevel
();
priceVo
.
setUserId
(
priceDto
.
getUserId
());
priceVo
.
setLevel
(
priceDto
.
getLevel
());
priceVo
.
setStock
(
spePrice
.
getStock
());
BigDecimal
price
=
spePrice
.
getPrice
();
BigDecimal
childPrice
=
spePrice
.
getChildPrice
();
if
(
level
!=
null
&&
level
>
0
)
{
String
memberPrice
=
spePrice
.
getMemberPrice
();
JSONArray
array
=
JSONArray
.
parseArray
(
memberPrice
);
if
(
array
.
size
()
>
0
)
{
for
(
Object
obj
:
array
)
{
JSONObject
jsonObject
=
JSONObject
.
parseObject
(
obj
.
toString
());
Integer
levels
=
jsonObject
.
getInteger
(
"level"
);
if
(
level
==
levels
)
{
String
money
=
jsonObject
.
getString
(
"price"
);
price
=
new
BigDecimal
(
StringUtils
.
isNotBlank
(
money
)
?
money
:
"0.00"
);
String
childMoney
=
jsonObject
.
getString
(
"child_price"
);
childPrice
=
new
BigDecimal
(
StringUtils
.
isNotBlank
(
childMoney
)
?
childMoney
:
"0.00"
);
break
;
}
}
}
}
BigDecimal
totalPrice
=
price
.
multiply
(
new
BigDecimal
(
number
)).
setScale
(
2
,
RoundingMode
.
HALF_UP
);
BigDecimal
totalChildPrice
=
childNumber
>
0
?
price
.
multiply
(
new
BigDecimal
(
childNumber
)).
setScale
(
2
,
RoundingMode
.
HALF_UP
):
new
BigDecimal
(
"0.00"
);
priceVo
.
setPrice
(
price
);
priceVo
.
setChildPrice
(
childPrice
);
priceVo
.
setTotalPrice
(
totalPrice
);
priceVo
.
setTota
lChildPrice
(
totalChildPrice
);
return
ObjectRestResponse
.
succ
(
priceVo
);
}
}
return
ObjectRestResponse
.
createDefaultFail
();
}
//减库存
public
ObjectRestResponse
cutStock
(
Integer
speId
,
Integer
number
)
{
TourGoodSpePrice
spePrice
=
mapper
.
selectByPrimaryKey
(
speId
);
if
(
spePrice
!=
null
&&
spePrice
.
getStock
()
>
0
&&
spePrice
.
getStock
()
>=
number
)
{
mapper
.
updStockById
(
speId
,
number
);
return
ObjectRestResponse
.
succ
();
}
else
{
return
ObjectRestResponse
.
createFailedResult
(
ResultCode
.
STOCK_CODE
,
"库存不足"
);
}
}
}
\ No newline at end of file
xx-tour/xx-tour-server/src/main/resources/bootstrap.yml
View file @
62f17fe7
#spring:
# application:
# name: vehicle
# cloud:
# nacos:
# config:
# server-addr: 127.0.0.1:8848
# file-extension: yaml
# profiles:
# active: dev
spring
:
profiles
:
active
:
dev
application
:
name
:
xx-tour
cloud
:
nacos
:
config
:
file-extension
:
yaml
---
spring
:
profiles
:
dev
cloud
:
nacos
:
config
:
server-addr
:
1
0.1.37.192:8848
---
spring
:
profiles
:
pro
cloud
:
nacos
:
config
:
#spring:
# application:
# name: vehicle
# cloud:
# nacos:
# config:
# server-addr: 127.0.0.1:8848
# file-extension: yaml
# profiles:
# active: dev
spring
:
profiles
:
active
:
dev
application
:
name
:
xx-tour
cloud
:
nacos
:
config
:
file-extension
:
yaml
---
spring
:
profiles
:
dev
cloud
:
nacos
:
config
:
server-addr
:
1
27.0.0.1:8848
---
spring
:
profiles
:
pro
cloud
:
nacos
:
config
:
server-addr
:
10.5.52.2:8848
\ No newline at end of file
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