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
46775ece
Commit
46775ece
authored
Oct 13, 2020
by
周健威
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
车辆相关和优惠券相关
parent
61c999f3
Changes
13
Show whitespace changes
Inline
Side-by-side
Showing
13 changed files
with
485 additions
and
6 deletions
+485
-6
Coupon.java
...c/main/java/com/xxfc/platform/activity/entity/Coupon.java
+6
-0
CouponAdminController.java
...c/platform/activity/rest/admin/CouponAdminController.java
+1
-1
BaseOrder.java
...c/main/java/com/xxfc/platform/order/entity/BaseOrder.java
+3
-0
OrderRentVehicleService.java
.../xxfc/platform/order/service/OrderRentVehicleService.java
+202
-4
Vehicle.java
...c/main/java/com/xxfc/platform/vehicle/entity/Vehicle.java
+7
-0
VehicleFeign.java
...in/java/com/xxfc/platform/vehicle/feign/VehicleFeign.java
+4
-1
VehicleFindAppDTO.java
...com/xxfc/platform/vehicle/pojo/dto/VehicleFindAppDTO.java
+66
-0
VehicleVO.java
...ain/java/com/xxfc/platform/vehicle/pojo/vo/VehicleVO.java
+2
-0
VehicleBiz.java
...c/main/java/com/xxfc/platform/vehicle/biz/VehicleBiz.java
+5
-0
VehicleMapper.java
.../java/com/xxfc/platform/vehicle/mapper/VehicleMapper.java
+3
-0
RentVehicleController.java
...com/xxfc/platform/vehicle/rest/RentVehicleController.java
+107
-0
VehicleController.java
...ava/com/xxfc/platform/vehicle/rest/VehicleController.java
+12
-0
VehicleMapper.xml
...ehicle-server/src/main/resources/mapper/VehicleMapper.xml
+67
-0
No files found.
xx-activity/xx-activity-api/src/main/java/com/xxfc/platform/activity/entity/Coupon.java
View file @
46775ece
...
...
@@ -251,4 +251,10 @@ public class Coupon implements Serializable {
@ApiModelProperty
(
value
=
"可使用门店ids"
)
private
String
companyIds
;
/**
* 是否可领取;0-否;1-是
*/
@Column
(
name
=
"is_led"
)
@ApiModelProperty
(
value
=
"是否可领取;0-否;1-是"
)
private
Integer
isLed
;
}
xx-activity/xx-activity-server/src/main/java/com/xxfc/platform/activity/rest/admin/CouponAdminController.java
View file @
46775ece
...
...
@@ -41,7 +41,7 @@ public class CouponAdminController implements UserRestInterface {
}
@ApiOperation
(
"优惠券列表"
)
@GetMapping
(
"/page"
)
@GetMapping
(
"/
operate/
page"
)
public
ObjectRestResponse
<
PageDataVO
<
CouponPagVo
>>
listCouponWithPage
(
CouponFindDTO
couponFindDTO
)
{
DataInterBean
dataInterBean
=
getDataInter
();
couponFindDTO
.
setBizType
(
dataInterBean
.
getBizType
());
...
...
xx-order/xx-order-api/src/main/java/com/xxfc/platform/order/entity/BaseOrder.java
View file @
46775ece
...
...
@@ -346,4 +346,7 @@ public class BaseOrder implements Serializable {
@Column
(
name
=
"revenue_json"
)
private
String
revenueJson
;
@Column
(
name
=
"goods_type"
)
private
Integer
goodsType
;
}
xx-order/xx-order-server/src/main/java/com/xxfc/platform/order/service/OrderRentVehicleService.java
View file @
46775ece
...
...
@@ -110,6 +110,18 @@ public class OrderRentVehicleService extends AbstractOrderHandle<OrderRentVehicl
handleDetail
(
detail
);
}
@Override
public
void
createOrder
(
RentVehicleBO
detail
)
{
//初始化
initDetail
(
detail
);
//计算价格
handleCalculate
(
detail
);
//插入baseOrder
baseOrderBiz
.
insertSelective
(
detail
.
getOrder
());
//处理detail
handleDetail
(
detail
);
}
public
void
applyInitDetail
(
RentVehicleBO
bo
,
String
orderNo
)
{
BaseOrder
order
=
createBaseOrder
(
bo
.
getOrderOrigin
(),
bo
.
getFacilitatePhone
(),
bo
.
getAppUserDTO
(),
orderNo
);
bo
.
setOrder
(
order
);
...
...
@@ -357,6 +369,15 @@ public class OrderRentVehicleService extends AbstractOrderHandle<OrderRentVehicl
@Override
public
RentVehiclePriceVO
calculatePrice
(
RentVehicleBO
detail
)
{
if
(
Vehicle
.
GOODS_TYPE_RV
==
detail
.
getOrder
().
getGoodsType
())
{
return
dayCalculatePrice
(
detail
);
}
else
{
return
hourCalculatePrice
(
detail
);
}
}
private
RentVehiclePriceVO
dayCalculatePrice
(
RentVehicleBO
detail
)
{
BigDecimal
realAmount
=
BigDecimal
.
ZERO
;
BigDecimal
orderAmount
=
BigDecimal
.
ZERO
;
BigDecimal
goodsAmount
=
BigDecimal
.
ZERO
;
...
...
@@ -378,7 +399,7 @@ public class OrderRentVehicleService extends AbstractOrderHandle<OrderRentVehicl
VehicleModel
vehicleModel
=
vehicleFeign
.
get
(
detail
.
getModelId
()).
getData
();
detail
.
initDate
();
List
<
VehicleModelCalendarPriceDTO
>
metaVmcpds
=
vehicleFeign
.
get
ByVehicleIdFeign
(
detail
.
getVehicleId
(),
detail
.
getStartDateStr
(),
detail
.
getEndDateStr
(),
dto
.
getUserid
(),
detail
.
getStartCompanyId
()).
getData
();
List
<
VehicleModelCalendarPriceDTO
>
metaVmcpds
=
vehicleFeign
.
get
PriceByVehicleIdFeignV2
(
detail
.
getVehicleId
(),
detail
.
getStartDateStr
(),
detail
.
getEndDateStr
(),
dto
.
getUserid
(),
detail
.
getStartCompanyId
()).
getData
();
// List<VehicleModelCalendarPriceDTO> metaVmcpds = vehicleFeign.findVehicleModelCalendarPriceByDate(detail.getStartTime(), detail.getEndTime(), detail.getModelId(), dto.getUserid()).getData();
// List<VehicleModelCalendarPriceDTO> metaVmcpds;
// for (VehicleHolidayPriceInfo vhpi : vhpis) {
...
...
@@ -534,6 +555,180 @@ public class OrderRentVehicleService extends AbstractOrderHandle<OrderRentVehicl
return
rvp
;
}
private
RentVehiclePriceVO
hourCalculatePrice
(
RentVehicleBO
detail
)
{
BigDecimal
realAmount
=
BigDecimal
.
ZERO
;
BigDecimal
orderAmount
=
BigDecimal
.
ZERO
;
BigDecimal
goodsAmount
=
BigDecimal
.
ZERO
;
BigDecimal
vehicleAmount
=
BigDecimal
.
ZERO
;
BigDecimal
metaVehicleAmount
=
BigDecimal
.
ZERO
;
BigDecimal
driverAmount
=
BigDecimal
.
ZERO
;
BigDecimal
damageSafeAmount
=
BigDecimal
.
ZERO
;
BigDecimal
couponAmount
=
BigDecimal
.
ZERO
;
String
couponDesc
=
""
;
Integer
vehicleDayNum
=
0
;
Integer
freeDayNum
=
0
;
//抵消的天数
Integer
offsetNum
=
0
;
//当前用户
AppUserDTO
dto
=
detail
.
getAppUserDTO
();
//车型信息
VehicleModel
vehicleModel
=
vehicleFeign
.
get
(
detail
.
getModelId
()).
getData
();
detail
.
initDate
();
List
<
VehicleModelCalendarPriceDTO
>
metaVmcpds
=
vehicleFeign
.
getPriceByVehicleIdFeignV2
(
detail
.
getVehicleId
(),
detail
.
getStartDateStr
(),
detail
.
getEndDateStr
(),
dto
.
getUserid
(),
detail
.
getStartCompanyId
()).
getData
();
List
<
VMCalendarPriceCostDTO
>
vmcpds
=
Convert
.
toList
(
VMCalendarPriceCostDTO
.
class
,
metaVmcpds
);
//设置Item
VehicleItemDTO
vehicleOrderItem
=
BeanUtil
.
toBean
(
orderItemBiz
.
initOrderItem
(
vehicleModel
.
getPrice
(),
detail
.
getDayNum
(),
vehicleModel
.
getName
()
,
vehicleModel
.
getId
(),
ItemTypeEnum
.
VEHICLE_MODEL
,
JSONUtil
.
parseArray
(
vmcpds
).
toString
())
,
VehicleItemDTO
.
class
);
OrderItem
driverOrderItem
=
orderItemBiz
.
initOrderItem
(
DRIVER_PRICE
,
detail
.
getDayNum
(),
"平台司机"
,
null
,
ItemTypeEnum
.
DRIVER
);
OrderItem
damageSafeOrderItem
=
orderItemBiz
.
initOrderItem
(
DAMAGE_SAFE
,
detail
.
getDayNum
(),
"免赔费用"
,
null
,
ItemTypeEnum
.
DAMAGE_SAFE
);
detail
.
setItems
(
new
ArrayList
<
OrderItem
>());
detail
.
getItems
().
add
(
vehicleOrderItem
);
//如果用户存在,免费天数
if
(
null
!=
dto
&&
null
!=
detail
.
getRentFreeDay
()
&&
detail
.
getRentFreeDay
()
>
0
)
{
if
(
null
==
dto
.
getRentFreeDays
()
||
dto
.
getRentFreeDays
()
<=
0
)
{
throw
new
BaseException
(
ResultCode
.
PARAM_EPIRE_CODE
,
new
HashSet
<
String
>()
{{
add
(
"免费租车天数不存在或为0"
);
}});
}
// //循环价格列表 获得对应消耗的免费天数
vehicleOrderItem
.
initDetail
(
dto
.
getRentFreeDays
());
freeDayNum
=
vehicleOrderItem
.
getCutNum
();
offsetNum
=
vehicleOrderItem
.
getOffsetNum
();
vehicleDayNum
=
detail
.
getDayNum
()
-
offsetNum
;
detail
.
getOrder
().
setHasMemberRight
(
SYS_TRUE
);
}
else
{
vehicleOrderItem
.
initDetail
(
0
);
vehicleDayNum
=
detail
.
getDayNum
();
}
vmcpds
=
vehicleOrderItem
.
getVehicleDetail
();
detail
.
setFreeDays
(
freeDayNum
);
//计算价格
//计算车辆费用
//如果用户存在,并且为会员,并且车辆有优惠价
//默认折扣默认100
detail
.
setRebate
(
100
);
if
(
null
!=
dto
&&
SYS_TRUE
.
equals
(
dto
.
getIsMember
())
&&
!
NONE
.
getCode
().
equals
(
dto
.
getMemberLevel
())
&&
!
DISCOUNT_STATUS_NONE
.
equals
(
vehicleModel
.
getRentDiscountStatus
()))
{
String
[]
prices
=
StrUtil
.
isBlank
(
vehicleModel
.
getRentDiscountPrice
())
?
new
String
[]{
vehicleModel
.
getPrice
().
toString
(),
vehicleModel
.
getPrice
().
toString
(),
vehicleModel
.
getPrice
().
toString
()}
:
vehicleModel
.
getRentDiscountPrice
().
split
(
","
);
//设置是否使用会员权益
for
(
VMCalendarPriceCostDTO
vmcpcd
:
vehicleOrderItem
.
getVehicleDetail
())
{
if
(!
vmcpcd
.
getNo_discount_price
().
equals
(
vmcpcd
.
getPrice
()))
{
detail
.
getOrder
().
setHasMemberRight
(
SYS_TRUE
);
break
;
}
}
detail
.
setRebate
(
dto
.
getDiscount
());
}
//计算价格
if
(
vehicleDayNum
>
0
)
{
for
(
int
i
=
offsetNum
;
i
<
vmcpds
.
size
();
i
++)
{
vehicleAmount
=
vehicleAmount
.
add
(
vmcpds
.
get
(
i
).
getConsumeAmount
());
metaVehicleAmount
=
metaVehicleAmount
.
add
(
vmcpds
.
get
(
i
).
getNo_discount_price
());
}
}
else
{
vehicleOrderItem
.
setUnitPrice
(
BigDecimal
.
ZERO
);
}
//如果有使用会员权益或者优惠券,则设置订单已优惠
if
(
SYS_TRUE
.
equals
(
detail
.
getOrder
().
getHasMemberRight
()))
{
detail
.
getOrder
().
setHasDiscount
(
SYS_TRUE
);
}
//平均单价 = 总价 / 实际消费天数
vehicleOrderItem
.
calculateVehicleUnitPrice
(
vehicleAmount
,
metaVehicleAmount
,
Boolean
.
TRUE
);
if
(
DRIVER_TYPE_COMPANY
.
equals
(
detail
.
getDriverType
()))
{
//计算司机费用
driverAmount
=
driverAmount
.
add
(
driverOrderItem
.
getCalculateAmount
(
Boolean
.
TRUE
));
detail
.
getItems
().
add
(
driverOrderItem
);
}
if
(
DRIVER_TYPE_DAMAGE_SAFE
.
equals
(
detail
.
getDamageSafe
()))
{
//免赔费用
damageSafeAmount
=
damageSafeAmount
.
add
(
damageSafeOrderItem
.
getCalculateAmount
(
Boolean
.
TRUE
));
detail
.
getItems
().
add
(
damageSafeOrderItem
);
}
//商品价格
goodsAmount
=
goodsAmount
.
add
(
vehicleAmount
).
add
(
driverAmount
).
add
(
damageSafeAmount
);
//vehicleAmount 优惠券处理
if
(
null
!=
detail
.
getTickerNo
()
&&
detail
.
getTickerNo
().
size
()
>
0
)
{
List
<
String
>
usedTickerNos
=
CollUtil
.
newArrayList
();
for
(
String
no
:
detail
.
getTickerNo
())
{
BigDecimal
tempCouponAmount
=
activityFeign
.
use
(
dto
.
getUserid
(),
CollUtil
.
newArrayList
(
no
),
detail
.
getOrder
().
getNo
(),
channel
,
vehicleAmount
,
ActivityFeign
.
TYPE_NO_USE
);
if
(
tempCouponAmount
.
compareTo
(
BigDecimal
.
ZERO
)
>
0
)
{
//加入总couponAmount
couponAmount
=
couponAmount
.
add
(
tempCouponAmount
);
usedTickerNos
.
add
(
no
);
//设置描述
couponDesc
+=
activityFeign
.
info
(
no
).
getTitle
();
}
}
if
(
couponAmount
.
compareTo
(
BigDecimal
.
ZERO
)
>
0
)
{
detail
.
getOrder
().
setCouponTickerNos
(
usedTickerNos
.
stream
().
collect
(
Collectors
.
joining
(
","
)));
detail
.
getOrder
().
setHasDiscount
(
SYS_TRUE
);
vehicleOrderItem
.
handleCouponAmount
(
couponAmount
);
}
}
//总价格(包含押金)
orderAmount
=
orderAmount
.
add
(
goodsAmount
).
add
(
vehicleModel
.
getDeposit
());
realAmount
=
orderAmount
.
subtract
(
couponAmount
);
//生成订单明细
RentVehiclePriceVO
rvp
=
new
RentVehiclePriceVO
();
rvp
.
setDeposit
(
vehicleModel
.
getDeposit
());
rvp
.
setDriverPrice
(
DRIVER_PRICE
);
rvp
.
setDamageSafePrice
(
DAMAGE_SAFE
);
rvp
.
setModelName
(
vehicleModel
.
getName
());
rvp
.
setDayNum
(
detail
.
getDayNum
());
rvp
.
setVehicleNum
(
1
);
rvp
.
setDriverNum
(
1
);
rvp
.
setCouponAmount
(
couponAmount
);
rvp
.
setOrderAmount
(
orderAmount
);
rvp
.
setGoodsAmount
(
goodsAmount
);
rvp
.
setRealAmount
(
realAmount
);
rvp
.
setDriverAmount
(
driverAmount
);
rvp
.
setVehicleAmount
(
vehicleAmount
);
rvp
.
setDamageSafeAmount
(
damageSafeAmount
);
rvp
.
setModelAmount
(
vehicleOrderItem
.
getUnitPrice
());
rvp
.
setVehicleDayNum
(
vehicleDayNum
);
rvp
.
setFreeDayNum
(
freeDayNum
);
rvp
.
setCutDayNum
(
offsetNum
);
rvp
.
setFreeAmount
(
vehicleOrderItem
.
getCutAmount
());
rvp
.
setBuyVehicleAmount
(
vehicleOrderItem
.
getBuyAmount
());
rvp
.
setRealVehicleAmount
(
vehicleOrderItem
.
getRealAmount
());
rvp
.
setCouponDesc
(
couponDesc
);
rvp
.
setUseAmountList
(
vehicleOrderItem
.
getVehicleDetail
());
rvp
.
setSameUnitPrice
(
vehicleOrderItem
.
getSameUnitPrice
());
rvp
.
initParamJson
();
//设置收费明细
costDetail
(
rvp
,
handleChildren
(
detail
,
vehicleDayNum
));
return
rvp
;
}
/**
* 获取会员比例或者会员价
* @param vehicleModel
...
...
@@ -638,6 +833,9 @@ public class OrderRentVehicleService extends AbstractOrderHandle<OrderRentVehicl
throw
new
BaseException
(
orr
.
getMessage
(),
orr
.
getStatus
());
}
detail
.
setVehicleId
(
orr
.
getData
().
getVehicleId
());
//获取车辆信息 设置订单的goodsType
Vehicle
vehicle
=
vehicleFeign
.
get
(
orr
.
getData
().
getVehicleId
()).
getData
();
detail
.
getOrder
().
setGoodsType
(
vehicle
.
getGoodsType
());
detail
.
setBookRecordId
(
orr
.
getData
().
getId
());
}
...
...
xx-vehicle/xx-vehicle-api/src/main/java/com/xxfc/platform/vehicle/entity/Vehicle.java
View file @
46775ece
...
...
@@ -13,6 +13,13 @@ import java.util.Date;
@Data
@Table
(
name
=
"vehicle"
)
public
class
Vehicle
{
public
static
final
int
GOODS_TYPE_RV
=
1
;
public
static
final
int
GOODS_TYPE_HM
=
2
;
public
static
final
int
GOODS_TYPE_YACHT
=
3
;
public
static
final
int
STATE_UP
=
1
;
public
static
final
int
STATE_DOWN
=
2
;
/**
* 主键(uuid)
*/
...
...
xx-vehicle/xx-vehicle-api/src/main/java/com/xxfc/platform/vehicle/feign/VehicleFeign.java
View file @
46775ece
...
...
@@ -234,9 +234,12 @@ public interface VehicleFeign {
ObjectRestResponse
<
List
<
CompanySearchVO
>>
listByIds
(
@RequestBody
CompanySearchDTO
vo
);
@GetMapping
(
value
=
"/vehicleHolidayPriceInfo/getByVehicleIdFeign"
)
public
ObjectRestResponse
<
List
<
VehicleModelCalendarPriceDTO
>>
getByVehicleIdFeign
(
public
ObjectRestResponse
<
List
<
VehicleModelCalendarPriceDTO
>>
get
Price
ByVehicleIdFeign
(
@RequestParam
(
"vehicleId"
)
String
vehicleId
,
@RequestParam
(
"startDate"
)
String
startDate
,
@RequestParam
(
"endDate"
)
String
endDate
,
@RequestParam
(
"userId"
)
Integer
userId
,
@RequestParam
(
"companyId"
)
Integer
companyId
);
@GetMapping
(
value
=
"/vehicleInfo/getPriceByVehicleFeign"
)
public
ObjectRestResponse
<
List
<
VehicleModelCalendarPriceDTO
>>
getPriceByVehicleIdFeignV2
(
@RequestParam
(
"vehicleId"
)
String
vehicleId
,
@RequestParam
(
"startDate"
)
String
startDate
,
@RequestParam
(
"endDate"
)
String
endDate
,
@RequestParam
(
"userId"
)
Integer
userId
,
@RequestParam
(
"companyId"
)
Integer
companyId
);
@RequestMapping
(
value
=
"/vehicleInfo/selectByParam"
,
method
=
RequestMethod
.
GET
)
public
RestResponse
<
List
<
Vehicle
>>
vehicleSelectByParam
(
@RequestParam
(
value
=
"vehicle"
)
Map
<
String
,
Object
>
vehicleMap
);
...
...
xx-vehicle/xx-vehicle-api/src/main/java/com/xxfc/platform/vehicle/pojo/dto/VehicleFindAppDTO.java
0 → 100644
View file @
46775ece
package
com
.
xxfc
.
platform
.
vehicle
.
pojo
.
dto
;
import
com.github.wxiaoqi.security.common.vo.DataInter
;
import
com.github.wxiaoqi.security.common.vo.PageParam
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.Data
;
import
java.util.List
;
/**
* @author libin
* @version 1.0
* @description
* @data 2019/8/23 16:27
*/
@Data
public
class
VehicleFindAppDTO
extends
PageParam
implements
DataInter
{
@ApiModelProperty
(
"商品Id"
)
private
String
vehicleId
;
@ApiModelProperty
(
"商品名称"
)
private
String
name
;
@ApiModelProperty
(
"商品类型 1--房车;2--机车;3--游艇"
)
private
Integer
goodsType
;
@ApiModelProperty
(
"状态:1-上架;2-下架"
)
private
Integer
state
;
@ApiModelProperty
(
"品牌id"
)
private
Integer
brandId
;
@ApiModelProperty
(
"型号id"
)
private
Integer
categoryId
;
@ApiModelProperty
(
"店铺id"
)
private
Integer
branchId
;
@ApiModelProperty
(
"是否全网最低价"
)
private
Integer
isMinPrice
;
List
<
Integer
>
dataCorporationIds
;
List
<
Integer
>
dataCompanyIds
;
Integer
bizType
;
@ApiModelProperty
(
"经度"
)
Double
lon
;
@ApiModelProperty
(
"纬度"
)
Double
lat
;
/**
* 所属市区(id)
*/
private
Integer
addrCity
;
}
xx-vehicle/xx-vehicle-api/src/main/java/com/xxfc/platform/vehicle/pojo/vo/VehicleVO.java
View file @
46775ece
...
...
@@ -27,4 +27,6 @@ public class VehicleVO extends Vehicle {
private
VehicleApply
vehicleApply
;
private
List
<
VehicleExtensionVO
>
extensionVOS
;
private
Double
distance
;
}
\ No newline at end of file
xx-vehicle/xx-vehicle-server/src/main/java/com/xxfc/platform/vehicle/biz/VehicleBiz.java
View file @
46775ece
...
...
@@ -33,6 +33,7 @@ import com.xxfc.platform.vehicle.mapper.BookRecordAccItemMapper;
import
com.xxfc.platform.vehicle.mapper.VehicleBookInfoMapper
;
import
com.xxfc.platform.vehicle.mapper.VehicleMapper
;
import
com.xxfc.platform.vehicle.pojo.*
;
import
com.xxfc.platform.vehicle.pojo.dto.VehicleFindAppDTO
;
import
com.xxfc.platform.vehicle.pojo.dto.VehicleFindDTO
;
import
com.xxfc.platform.vehicle.pojo.dto.VehiclePlanDto
;
import
com.xxfc.platform.vehicle.pojo.vo.UsableVeicleVO
;
...
...
@@ -1628,6 +1629,10 @@ public class VehicleBiz extends BaseBiz<VehicleMapper, Vehicle> implements UserR
return
ObjectRestResponse
.
succ
(
PageDataVO
.
pageInfo
(
pageInfo
));
}
public
PageDataVO
<
VehicleVO
>
appSelectList
(
VehicleFindAppDTO
vehicleFindAppDTO
){
return
PageDataVO
.
pageInfo
(
vehicleFindAppDTO
.
initQuery
(),
()->
mapper
.
appSelectList
(
vehicleFindAppDTO
));
}
public
VehicleVO
info
(
VehicleFindDTO
vehicleFindDTO
){
List
<
VehicleVO
>
vehicleVOS
=
getList
(
vehicleFindDTO
);
if
(
vehicleVOS
!=
null
&&
vehicleVOS
.
size
()
>
0
){
...
...
xx-vehicle/xx-vehicle-server/src/main/java/com/xxfc/platform/vehicle/mapper/VehicleMapper.java
View file @
46775ece
...
...
@@ -2,6 +2,7 @@ package com.xxfc.platform.vehicle.mapper;
import
com.xxfc.platform.vehicle.entity.Vehicle
;
import
com.xxfc.platform.vehicle.pojo.*
;
import
com.xxfc.platform.vehicle.pojo.dto.VehicleFindAppDTO
;
import
com.xxfc.platform.vehicle.pojo.dto.VehicleFindDTO
;
import
com.xxfc.platform.vehicle.pojo.dto.VehiclePlanDto
;
import
com.xxfc.platform.vehicle.pojo.vo.UsableVeicleVO
;
...
...
@@ -65,4 +66,6 @@ public interface VehicleMapper extends Mapper<Vehicle> {
@Select
(
"SELECT COUNT(*) FROM vehicle WHERE is_del=0 and subordinate_branch = #{commpanyId}"
)
Long
countByCompamyId
(
@Param
(
"commpanyId"
)
Integer
commpanyId
);
List
<
VehicleVO
>
appSelectList
(
VehicleFindAppDTO
vehicleFindAppDTO
);
}
\ No newline at end of file
xx-vehicle/xx-vehicle-server/src/main/java/com/xxfc/platform/vehicle/rest/RentVehicleController.java
View file @
46775ece
...
...
@@ -4,6 +4,7 @@ import cn.hutool.core.bean.BeanUtil;
import
cn.hutool.core.collection.CollUtil
;
import
cn.hutool.core.date.DateUtil
;
import
cn.hutool.core.util.StrUtil
;
import
com.github.wxiaoqi.security.admin.entity.BaseUserMember
;
import
com.github.wxiaoqi.security.admin.feign.UserFeign
;
import
com.github.wxiaoqi.security.admin.feign.rest.UserRestInterface
;
import
com.github.wxiaoqi.security.auth.client.annotation.IgnoreClientToken
;
...
...
@@ -22,6 +23,8 @@ import com.xxfc.platform.vehicle.constant.VehicleBookRecordStatus;
import
com.xxfc.platform.vehicle.constant.VehicleMemberType
;
import
com.xxfc.platform.vehicle.entity.Vehicle
;
import
com.xxfc.platform.vehicle.entity.VehicleBookRecord
;
import
com.xxfc.platform.vehicle.entity.VehicleCommonPriceInfo
;
import
com.xxfc.platform.vehicle.entity.VehicleHolidayPriceInfo
;
import
com.xxfc.platform.vehicle.pojo.*
;
import
com.xxfc.platform.vehicle.pojo.dto.VehicleModelCalendarPriceDTO
;
import
com.xxfc.platform.vehicle.pojo.vo.UsableVeicleVO
;
...
...
@@ -34,12 +37,14 @@ import org.apache.commons.lang3.StringUtils;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.web.bind.annotation.*
;
import
java.math.BigDecimal
;
import
java.time.Instant
;
import
java.time.LocalDateTime
;
import
java.time.ZoneOffset
;
import
java.time.format.DateTimeFormatter
;
import
java.util.HashSet
;
import
java.util.List
;
import
java.util.Objects
;
import
static
com
.
github
.
wxiaoqi
.
security
.
common
.
constant
.
CommonConstants
.*;
import
static
com
.
xxfc
.
platform
.
vehicle
.
constant
.
VehicleConstant
.
USER_APP
;
...
...
@@ -51,6 +56,12 @@ import static com.xxfc.platform.vehicle.constant.VehicleConstant.USER_APP_NAME;
@IgnoreClientToken
@Api
(
value
=
"租车相关车辆管理controller"
,
tags
={
"租车相关车辆管理接口"
})
public
class
RentVehicleController
extends
BaseController
<
VehicleBiz
>
implements
UserRestInterface
{
private
static
final
Integer
DEFAULT_DISCOUNT
=
100
;
private
static
final
Integer
DEFAULT_MEMBER_LEVEL
=
0
;
private
static
final
Integer
DEFAULT_MEMBER_TYPE
=
0
;
private
static
final
Integer
MEMBER_TYPE_ALL
=
1
;
private
static
final
Integer
MEMBER_TYPE_FORBID
=
4
;
@Autowired
private
VehiclePlatCataBiz
vehiclePlatCataBiz
;
...
...
@@ -352,4 +363,100 @@ public class RentVehicleController extends BaseController<VehicleBiz> implements
VehicleBookRecord
vehicleBookRecord
=
baseBiz
.
applyVehicle
(
operatorId
,
bookVehicleVo
,
userName
);
return
ObjectRestResponse
.
succ
(
vehicleBookRecord
);
}
@GetMapping
(
value
=
"getPriceByVehicleFeign"
)
@IgnoreUserToken
public
ObjectRestResponse
<
List
<
VehicleModelCalendarPriceDTO
>>
getByVehicleIdFeign
(
String
vehicleId
,
String
startDate
,
String
endDate
,
Integer
userId
,
Integer
companyId
)
{
return
ObjectRestResponse
.
succ
(
getSynthesizePrice
(
vehicleId
,
startDate
,
endDate
,
userId
,
companyId
));
}
public
List
<
VehicleModelCalendarPriceDTO
>
getSynthesizePrice
(
String
vehicleId
,
String
startDate
,
String
endDate
,
Integer
userId
,
Integer
companyId
)
{
List
<
VehicleModelCalendarPriceDTO
>
priceDTOS
=
CollUtil
.
newArrayList
();
cn
.
hutool
.
core
.
date
.
DateTime
beginOfStartDate
=
DateUtil
.
beginOfDay
(
DateUtil
.
parse
(
startDate
));
cn
.
hutool
.
core
.
date
.
DateTime
endOfStartDate
=
DateUtil
.
endOfDay
(
DateUtil
.
parse
(
endDate
));
//获取基本和周末价格
// VehicleCommonPriceInfo vehicleCommonPriceInfo = vehicleCommonPriceInfoBiz.selectOne(new VehicleCommonPriceInfo(){{
// setCompanyId(companyId);
// setVehicleId(vehicleId);
// }});
Vehicle
vehicle
=
vehicleBiz
.
selectOne
(
new
Vehicle
(){{
setParkBranchCompanyId
(
companyId
);
setId
(
vehicleId
);
}});
if
(
null
==
vehicle
)
{
return
CollUtil
.
newArrayList
();
}
//Date currentDate = DateUtil.beginOfDay(DateUtil.parse(startDate));
for
(
cn
.
hutool
.
core
.
date
.
DateTime
currentDate
=
DateUtil
.
beginOfDay
(
DateUtil
.
parse
(
startDate
));
(
currentDate
.
isAfterOrEquals
(
beginOfStartDate
)
&&
currentDate
.
isBeforeOrEquals
(
endOfStartDate
));
currentDate
=
DateUtil
.
offsetDay
(
currentDate
,
1
))
{
cn
.
hutool
.
core
.
date
.
DateTime
finalCurrentDate
=
currentDate
;
VehicleModelCalendarPriceDTO
dto
=
new
VehicleModelCalendarPriceDTO
(){{
setDate
(
DateUtil
.
beginOfDay
(
finalCurrentDate
));
}};
if
(
currentDate
.
isWeekend
())
{
dto
.
setNo_discount_price
(
vehicle
.
getHolidayPrice
());
dto
.
setPrice
(
vehicle
.
getHolidayPrice
());
dto
.
setFreeDays
(
1
);
}
else
{
dto
.
setNo_discount_price
(
vehicle
.
getPrice
());
dto
.
setPrice
(
vehicle
.
getPrice
());
dto
.
setFreeDays
(
1
);
}
priceDTOS
.
add
(
dto
);
}
//获取节假日价格
// List<VehicleHolidayPriceInfo> vehicleHolidayPriceInfoList = getByVehicleIdAndDate(vehicleId, startDate, endDate);
//
// if(CollUtil.isNotEmpty(vehicleHolidayPriceInfoList)) {
// vehicleHolidayPriceInfoList.forEach(info -> {
// priceDTOS.forEach(tmpDto -> {
// if(DateUtil.isSameDay(info.getFestivalDate(), tmpDto.getDate())) {
// tmpDto.setNo_discount_price(info.getRentPrice());
// tmpDto.setPrice(info.getRentPrice());
// tmpDto.setFreeDays(info.getRentFreeDay());
// }
// });
// });
// }
//获取会员折扣
//查询车辆信息
// Vehicle vehicle = vehicleBiz.selectById(vehicleId);
//查询会员信息
//默认折扣
Integer
discount
=
DEFAULT_DISCOUNT
;
//会员默认等级
Integer
memberLevel
=
DEFAULT_MEMBER_LEVEL
;
Integer
memberType
=
DEFAULT_MEMBER_TYPE
;
if
(
Objects
.
nonNull
(
userId
))
{
BaseUserMember
baseUserMember
=
userFeign
.
findBaseUserMemberByUserId
(
userId
.
intValue
());
log
.
info
(
"用户会员信息:【{}】"
,
baseUserMember
);
discount
=
baseUserMember
==
null
?
discount
:
baseUserMember
.
getDiscount
();
memberLevel
=
baseUserMember
==
null
?
memberLevel
:
baseUserMember
.
getMemberLevel
();
memberType
=
baseUserMember
==
null
?
memberType
:
baseUserMember
.
getMemberType
();
}
//非会员禁用 非无会员
if
(
vehicle
.
getMemberUse
()
!=
MEMBER_TYPE_FORBID
&&
DEFAULT_MEMBER_TYPE
!=
memberType
)
{
//判断 允许所有会员,或者 memberType 和 车辆memberUse 相等
if
(
vehicle
.
getMemberUse
().
equals
(
MEMBER_TYPE_ALL
)
||
(
vehicle
.
getMemberUse
().
equals
(
memberType
)))
{
//设置会员价格
Integer
finalDiscount
=
discount
;
priceDTOS
.
forEach
(
dto
->
{
dto
.
setPrice
(
dto
.
getNo_discount_price
()
.
multiply
(
new
BigDecimal
(
""
+
finalDiscount
)
.
divide
(
new
BigDecimal
(
"100"
))));
});
}
}
return
priceDTOS
;
}
}
xx-vehicle/xx-vehicle-server/src/main/java/com/xxfc/platform/vehicle/rest/VehicleController.java
View file @
46775ece
...
...
@@ -28,6 +28,7 @@ import com.xxfc.platform.vehicle.constant.VehicleBookRecordStatus;
import
com.xxfc.platform.vehicle.entity.*
;
import
com.xxfc.platform.vehicle.jobhandler.VehicleJobHandler
;
import
com.xxfc.platform.vehicle.pojo.*
;
import
com.xxfc.platform.vehicle.pojo.dto.VehicleFindAppDTO
;
import
com.xxfc.platform.vehicle.pojo.dto.VehicleFindDTO
;
import
com.xxfc.platform.vehicle.pojo.dto.VehicleModelCalendarPriceDTO
;
import
com.xxfc.platform.vehicle.pojo.dto.VehiclePlanDto
;
...
...
@@ -50,6 +51,8 @@ import java.util.List;
import
java.util.Map
;
import
java.util.stream.Collectors
;
import
static
com
.
github
.
wxiaoqi
.
security
.
common
.
constant
.
CommonConstants
.
SYS_TRUE
;
@RestController
@RequestMapping
(
"/vehicleInfo"
)
@Slf4j
...
...
@@ -694,6 +697,15 @@ public class VehicleController extends BaseController<VehicleBiz> implements Use
return
baseBiz
.
selectList
(
vehicleFindDTO
);
}
@GetMapping
(
"app/unauth/shop/selectList"
)
@ApiModelProperty
(
"店铺商品列表(精选商品)"
)
@IgnoreUserToken
public
ObjectRestResponse
<
PageDataVO
<
VehicleVO
>>
shopSelectList
(
VehicleFindAppDTO
vehicleFindAppDTO
)
{
vehicleFindAppDTO
.
setState
(
Vehicle
.
STATE_UP
);
vehicleFindAppDTO
.
setIsMinPrice
(
SYS_TRUE
);
return
ObjectRestResponse
.
succ
(
baseBiz
.
appSelectList
(
vehicleFindAppDTO
));
}
@Data
static
public
class
VehicleVO
extends
Vehicle
{
private
VehicleModel
vehicleModel
;
...
...
xx-vehicle/xx-vehicle-server/src/main/resources/mapper/VehicleMapper.xml
View file @
46775ece
...
...
@@ -1349,4 +1349,71 @@
</select>
<select
id=
"appSelectList"
resultType=
"com.xxfc.platform.vehicle.pojo.vo.VehicleVO"
parameterType=
"com.xxfc.platform.vehicle.pojo.dto.VehicleFindAppDTO"
>
SELECT
v.*,
b.cn_name as brandName,
c.`name` categoryName,
bc.`name` as companyName
<if
test=
"lon != null and lat != null"
>
,st_distance_sphere(point(#{lon}, #{lat}), point(bc.longitude, bc.latitude)) as distance
</if>
FROM vehicle v
LEFT JOIN vehicle_brand b ON v.brand_id=b.id
LEFT JOIN vehicle_category c ON v.category_id=c.id
LEFT JOIN branch_company bc ON v.subordinate_branch=bc.id
<where>
v.is_del = 0
<if
test=
"addrCity !=null"
>
AND bc.addr_city=#{addrCity}
</if>
<if
test=
"name != null and name != ''"
>
AND ( v.`name` like concat('%',#{name},'%') or v.`number_plate` like concat('%',#{name},'%') )
</if>
<if
test=
"brandId != null and brandId > 0"
>
AND v.`brand_id`= #{brandId}
</if>
<if
test=
"vehicleId != null and vehicleId != '' "
>
AND v.`id`= #{vehicleId}
</if>
<if
test=
"categoryId != null and categoryId > 0"
>
AND v.`category_id`= #{categoryId}
</if>
<if
test=
"branchId != null and branchId > 0"
>
AND v.`subordinate_branch`= #{branchId}
</if>
<if
test=
"state != null "
>
AND v.`state`= #{state}
</if>
<if
test=
"goodsType != null "
>
AND v.`goods_type`= #{goodsType}
</if>
<if
test=
"dataCompanyIds != null and dataCompanyIds.size > 0"
>
and bc.id in
<foreach
collection=
"dataCompanyIds"
item=
"id"
open=
"("
separator=
","
close=
")"
>
#{id}
</foreach>
</if>
<if
test=
"dataCorporationIds != null and dataCorporationIds.size > 0"
>
and bc.company_id in
<foreach
collection=
"dataCorporationIds"
item=
"id"
open=
"("
separator=
","
close=
")"
>
#{id}
</foreach>
</if>
</where>
order by
<if
test=
"lon != null and lat != null"
>
distance asc,
</if>
<choose>
<when
test=
"isMinPrice !=null and isMinPrice==1"
>
v.price ASC,v.create_time DESC
</when>
<otherwise>
v.create_time DESC
</otherwise>
</choose>
</select>
</mapper>
\ 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