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
32b01e03
Commit
32b01e03
authored
Jul 03, 2019
by
周健威
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
修改定时还押金,添加消费记录和购买记录接口
parent
351ac7cd
Changes
8
Hide whitespace changes
Inline
Side-by-side
Showing
8 changed files
with
182 additions
and
29 deletions
+182
-29
DiscountsEnum.java
.../xxfc/platform/order/contant/enumerate/DiscountsEnum.java
+47
-0
BaseOrder.java
...c/main/java/com/xxfc/platform/order/entity/BaseOrder.java
+17
-3
OrderRentVehicleDetail.java
...om/xxfc/platform/order/entity/OrderRentVehicleDetail.java
+0
-7
BaseOrderBiz.java
...c/main/java/com/xxfc/platform/order/biz/BaseOrderBiz.java
+48
-9
HttpJobHandler.java
...va/com/xxfc/platform/order/jobhandler/HttpJobHandler.java
+44
-10
BaseOrderController.java
...ava/com/xxfc/platform/order/rest/BaseOrderController.java
+5
-0
OrderRentVehicleService.java
.../xxfc/platform/order/service/OrderRentVehicleService.java
+15
-0
BaseOrderMapper.xml
...rder-server/src/main/resources/mapper/BaseOrderMapper.xml
+6
-0
No files found.
xx-order/xx-order-api/src/main/java/com/xxfc/platform/order/contant/enumerate/DiscountsEnum.java
0 → 100644
View file @
32b01e03
package
com
.
xxfc
.
platform
.
order
.
contant
.
enumerate
;
import
java.util.HashMap
;
import
java.util.Map
;
public
enum
DiscountsEnum
{
NONE
(
0
,
"没有优惠"
),
MEMBER_RIGHT
(
1
,
"会员权益"
),
COUPON
(
2
,
"优惠券"
),
MEMBER_COUPON
(
3
,
"会员权益+ 优惠券"
),
;
/**
* 编码
*/
private
Integer
code
;
/**
* 类型描述
*/
private
String
desc
;
private
static
Map
<
Integer
,
String
>
codeAndDesc
=
new
HashMap
<
Integer
,
String
>();
DiscountsEnum
(
Integer
code
,
String
desc
){
this
.
code
=
code
;
this
.
desc
=
desc
;
}
public
Integer
getCode
()
{
return
code
;
}
public
void
setCode
(
Integer
code
)
{
this
.
code
=
code
;
}
public
String
getDesc
()
{
return
desc
;
}
public
void
setDesc
(
String
desc
)
{
this
.
desc
=
desc
;
}
public
static
Boolean
exists
(
Integer
code
){
return
codeAndDesc
.
containsKey
(
code
);
}
}
\ No newline at end of file
xx-order/xx-order-api/src/main/java/com/xxfc/platform/order/entity/BaseOrder.java
View file @
32b01e03
...
...
@@ -47,7 +47,7 @@ public class BaseOrder implements Serializable {
* 订单类型 1--租车;2--旅游
*/
@Column
(
name
=
"type"
)
@ApiModelProperty
(
value
=
"订单类型 1--租车;2--旅游"
)
@ApiModelProperty
(
value
=
"订单类型 1--租车;2--旅游
; 3--会员订单
"
)
private
Integer
type
;
/**
...
...
@@ -190,12 +190,26 @@ public class BaseOrder implements Serializable {
@ApiModelProperty
(
value
=
"退款时间"
)
private
Long
refundTime
;
/**
* 退款状态
*/
@Column
(
name
=
"refund_status"
)
@ApiModelProperty
(
value
=
"退款的状态 0--未退还;1--已退还所有钱;2--已退还部分押金(保留违章预备金);3--已退还所有押金(扣除该扣除的)"
)
private
Integer
refundStatus
;
/**
* 是否有优惠
*/
@Column
(
name
=
"has_discount"
)
@ApiModelProperty
(
value
=
"是否有优惠"
)
private
Long
hasDiscount
;
@ApiModelProperty
(
value
=
"是否有优惠 0--无优惠;1--有优惠"
)
private
Integer
hasDiscount
;
/**
* 是否有优惠
*/
@Column
(
name
=
"has_member_right"
)
@ApiModelProperty
(
value
=
"是否有使用会员权益"
)
private
Integer
hasMemberRight
;
/**
* 是否已支付
...
...
xx-order/xx-order-api/src/main/java/com/xxfc/platform/order/entity/OrderRentVehicleDetail.java
View file @
32b01e03
...
...
@@ -273,13 +273,6 @@ public class OrderRentVehicleDetail implements Serializable {
@ApiModelProperty
(
value
=
"出发公司区域id"
)
private
Integer
startZoneId
;
/**
* 退还钱(押金)的状态 0--未退还;1--已退还所有钱;2--已退还部分押金(保留违章预备金);3--已退还所有押金(扣除该扣除的)
*/
@Column
(
name
=
"return_pay_status"
)
@ApiModelProperty
(
value
=
"退还钱(押金)的状态 0--未退还;1--已退还所有钱;2--已退还部分押金(保留违章预备金);3--已退还所有押金(扣除该扣除的)"
)
private
Integer
returnPayStatus
;
/**
* 剩余需要退还的钱(押金)
*/
...
...
xx-order/xx-order-server/src/main/java/com/xxfc/platform/order/biz/BaseOrderBiz.java
View file @
32b01e03
package
com
.
xxfc
.
platform
.
order
.
biz
;
import
ch.qos.logback.core.rolling.TimeBasedFileNamingAndTriggeringPolicyBase
;
import
cn.hutool.core.util.StrUtil
;
import
com.github.wxiaoqi.security.admin.dto.UserMemberDTO
;
import
com.github.wxiaoqi.security.admin.feign.UserFeign
;
...
...
@@ -34,8 +35,7 @@ import java.util.*;
import
static
com
.
github
.
wxiaoqi
.
security
.
common
.
constant
.
CommonConstants
.
SYS_FALSE
;
import
static
com
.
github
.
wxiaoqi
.
security
.
common
.
constant
.
CommonConstants
.
SYS_TRUE
;
import
static
com
.
xxfc
.
platform
.
universal
.
constant
.
DictionaryKey
.
APP_ORDER
;
import
static
com
.
xxfc
.
platform
.
universal
.
constant
.
DictionaryKey
.
RENT_REFUND
;
import
static
com
.
xxfc
.
platform
.
universal
.
constant
.
DictionaryKey
.*;
/**
*
...
...
@@ -200,7 +200,7 @@ public class BaseOrderBiz extends BaseBiz<BaseOrderMapper,BaseOrder> {
setOrderId
(
baseOrder
.
getId
());
}});
//退款流程
rentRefundProcess
(
baseOrder
,
otd
.
getStartTime
(),
APP_ORDER
+
"_"
+
RENT
_REFUND
);
rentRefundProcess
(
baseOrder
,
otd
.
getStartTime
(),
APP_ORDER
+
"_"
+
TOUR
_REFUND
);
}
}
...
...
@@ -240,28 +240,39 @@ public class BaseOrderBiz extends BaseBiz<BaseOrderMapper,BaseOrder> {
}
}
/**
* 租车退款流程(不含押金的通用方法)
* @param baseOrder
* @param startTime
* @param dicParentKey
*/
private
void
rentRefundProcess
(
BaseOrder
baseOrder
,
Long
startTime
,
String
dicParentKey
){
rentRefundProcess
(
baseOrder
,
BigDecimal
.
ZERO
,
startTime
,
dicParentKey
);
}
/**
* 租车退款流程(含押金)
* @param baseOrder
* @param depositAmont
* @param startTime
* @param dicParentKey
*/
private
void
rentRefundProcess
(
BaseOrder
baseOrder
,
BigDecimal
depositAmont
,
Long
startTime
,
String
dicParentKey
)
{
//计算退款金额
// 1、押金 + 租金(规则扣除)
BigDecimal
refundGoodsAmount
=
baseOrder
.
getGoodsAmount
();
String
refundDesc
=
"取消订单退款:"
;
BigDecimal
refundGoodsAmont
=
baseOrder
.
getGoodsAmount
();
BigDecimal
refundAmont
=
BigDecimal
.
ZERO
;
if
(
null
==
depositAmont
)
{
depositAmont
=
BigDecimal
.
ZERO
;
}
//根据时间处理goodsAmount
//获取出发时间 到现在 距离时间
//LocalDateTime StartDay = LocalDateTime.ofInstant(Instant.ofEpochMilli(orvd.getStartTime()), ZoneOffset.ofHours(8));
Long
timeLag
=
startTime
-
System
.
currentTimeMillis
();
Integer
hourLag
=
Long
.
valueOf
(
timeLag
/(
1000L
*
60L
*
60L
)).
intValue
();
Map
<
String
,
com
.
xxfc
.
platform
.
universal
.
entity
.
Dictionary
>
dictionaryMap
=
thirdFeign
.
dictionaryGetAll4Map
().
getData
();
//APP_ORDER+ "_"+ RENT_REFUND
Set
<
com
.
xxfc
.
platform
.
universal
.
entity
.
Dictionary
>
rentRefunds
=
dictionaryMap
.
get
(
dicParentKey
).
getChildrens
();
for
(
com
.
xxfc
.
platform
.
universal
.
entity
.
Dictionary
dic
:
rentRefunds
)
{
...
...
@@ -276,6 +287,7 @@ public class BaseOrderBiz extends BaseBiz<BaseOrderMapper,BaseOrder> {
//符合范围
if
(
IntervalUtil
.
staticIsInTheInterval
(
hourLag
.
toString
(),
names
[
0
])){
refundGoodsAmont
=
new
BigDecimal
(((
Double
)
IntervalUtil
.
evaluate
(
dic
.
getDetail
(),
new
MapContext
(){{
//ga : goodsAmount
set
(
"ga"
,
baseOrder
.
getGoodsAmount
());
}})).
toString
());
refundDesc
=
names
[
1
]+
","
+
refundDesc
;
...
...
@@ -283,8 +295,19 @@ public class BaseOrderBiz extends BaseBiz<BaseOrderMapper,BaseOrder> {
}
}
refundAmont
=
depositAmont
.
add
(
refundGoodsAmont
);
//退款金额
BigDecimal
refundAmont
=
depositAmont
.
add
(
refundGoodsAmont
);
//退款子流程: 订单基础,退款描述,退款金额
refundSubProcess
(
baseOrder
,
refundDesc
,
refundAmont
,
RefundTypeEnum
.
RentVehicle
.
getCode
());
}
/**
* 退款子流程
* @param baseOrder
* @param refundDesc
* @param refundAmont
*/
private
void
refundSubProcess
(
BaseOrder
baseOrder
,
String
refundDesc
,
BigDecimal
refundAmont
,
Integer
refundType
)
{
OrderRefundVo
orv
=
new
OrderRefundVo
(){{
setAmount
(
baseOrder
.
getRealAmount
().
multiply
(
new
BigDecimal
(
"100"
)).
intValue
());
setOrderNo
(
baseOrder
.
getNo
());
...
...
@@ -294,10 +317,17 @@ public class BaseOrderBiz extends BaseBiz<BaseOrderMapper,BaseOrder> {
String
refundTradeNo
=
thirdFeign
.
refund
(
orv
).
getData
();
//记录订单退款记录
addOrderRefund
(
baseOrder
.
getId
(),
refundDesc
,
refundAmont
,
refundTradeNo
);
addOrderRefund
(
baseOrder
.
getId
(),
refundDesc
,
refundAmont
,
refundTradeNo
,
refundType
);
}
private
void
addOrderRefund
(
Integer
orderId
,
String
refundDesc
,
BigDecimal
refundAmont
,
String
refundTradeNo
)
{
/**
* 记录订单退款记录
* @param orderId
* @param refundDesc
* @param refundAmont
* @param refundTradeNo
*/
private
void
addOrderRefund
(
Integer
orderId
,
String
refundDesc
,
BigDecimal
refundAmont
,
String
refundTradeNo
,
Integer
refundType
)
{
//如果返回的流水为空,则当做失败
Integer
refundStatus
=
SYS_TRUE
;
if
(
StrUtil
.
isBlank
(
refundTradeNo
))
{
...
...
@@ -314,6 +344,7 @@ public class BaseOrderBiz extends BaseBiz<BaseOrderMapper,BaseOrder> {
orderRefund
.
setRefundAmount
(
refundAmont
);
orderRefund
.
setRefundDesc
(
refundDesc
);
orderRefund
.
setRefundStatus
(
refundStatus
);
orderRefund
.
setRefundType
(
refundType
);
orderRefundBiz
.
insertSelective
(
orderRefund
);
}
...
...
@@ -380,4 +411,12 @@ public class BaseOrderBiz extends BaseBiz<BaseOrderMapper,BaseOrder> {
log
.
error
(
" order has payed , orderNo:{}, tradeNo:{} "
,
orderNo
,
tradeNo
);
}
}
public
BaseOrder
updateSelectiveByIdReT
(
BaseOrder
baseOrder
)
{
if
(
updateSelectiveByIdRe
(
baseOrder
)
>
0
)
{
return
selectById
(
baseOrder
.
getId
());
}
else
{
throw
new
BaseException
(
ResultCode
.
DB_OPERATION_FAIL_CODE
);
}
}
}
\ No newline at end of file
xx-order/xx-order-server/src/main/java/com/xxfc/platform/order/jobhandler/HttpJobHandler.java
View file @
32b01e03
package
com
.
xxfc
.
platform
.
order
.
jobhandler
;
import
com.github.wxiaoqi.security.common.util.IntervalUtil
;
import
com.xxfc.platform.order.biz.BaseOrderBiz
;
import
com.xxfc.platform.order.biz.OrderRentVehicleBiz
;
import
com.xxfc.platform.order.contant.enumerate.OrderStatusEnum
;
import
com.xxfc.platform.order.contant.enumerate.OrderTypeEnum
;
import
com.xxfc.platform.order.entity.BaseOrder
;
import
com.xxfc.platform.order.entity.OrderRentVehicleDetail
;
import
com.xxl.job.core.biz.model.ReturnT
;
import
com.xxl.job.core.handler.IJobHandler
;
import
com.xxl.job.core.handler.annotation.JobHandler
;
import
com.xxl.job.core.log.XxlJobLogger
;
import
lombok.extern.slf4j.Slf4j
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Component
;
import
tk.mybatis.mapper.entity.Example
;
import
tk.mybatis.mapper.weekend.WeekendSqls
;
import
java.util.List
;
/**
* 跨平台Http任务
*
* @author xuxueli 2018-09-16 03:48:34
*/
@JobHandler
(
value
=
"
httpJob
Handler"
)
@JobHandler
(
value
=
"
rentDeposit
Handler"
)
@Component
@Slf4j
public
class
HttpJobHandler
extends
IJobHandler
{
@Autowired
BaseOrderBiz
baseOrderBiz
;
@Autowired
OrderRentVehicleBiz
orderRentVehicleBiz
;
@Override
public
ReturnT
<
String
>
execute
(
String
param
)
throws
Exception
{
public
ReturnT
<
String
>
execute
(
String
idLastNumInterval
)
throws
Exception
{
try
{
for
(
int
i
=
0
;
i
<
10
;
i
++)
{
XxlJobLogger
.
log
(
"helloword"
);
log
.
info
(
"helloword"
);
for
(
int
i
=
0
;
i
<
10
;
i
++)
{
if
(
IntervalUtil
.
staticIsInTheInterval
(
String
.
valueOf
(
i
),
idLastNumInterval
))
{
List
<
BaseOrder
>
lists
=
baseOrderBiz
.
selectByExample
(
new
Example
.
Builder
(
BaseOrder
.
class
)
.
where
(
WeekendSqls
.<
BaseOrder
>
custom
().
andEqualTo
(
BaseOrder:
:
getType
,
OrderTypeEnum
.
RentVehicle
)
.
andEqualTo
(
BaseOrder:
:
getStatus
,
OrderStatusEnum
.
ORDER_FINISH
)
.
andLike
(
BaseOrder:
:
getId
,
"%"
+
String
.
valueOf
(
i
))).
build
());
//处理自动退押金
for
(
BaseOrder
baseOrder
:
lists
)
{
OrderRentVehicleDetail
orvd
=
orderRentVehicleBiz
.
selectOne
(
new
OrderRentVehicleDetail
()
{{
setOrderId
(
baseOrder
.
getId
());
}});
// if(orvd.getReturnPayResidue())
// //判断是否违章
// //扣违章的钱
// baseOrderBiz.refundSubProcess(baseOrder, refundDesc, refundAmont);
}
}
}
ReturnT
returnT
=
new
ReturnT
();
returnT
.
setCode
(
100
);
returnT
.
setMsg
(
"成功"
);
returnT
.
setContent
(
param
);
ReturnT
returnT
=
new
ReturnT
(){{
setCode
(
100
);
setMsg
(
"成功"
);
setContent
(
idLastNumInterval
);
}};
return
returnT
;
}
catch
(
Exception
e
)
{
XxlJobLogger
.
log
(
e
);
...
...
@@ -35,7 +70,6 @@ public class HttpJobHandler extends IJobHandler {
}
finally
{
;
}
}
}
\ No newline at end of file
xx-order/xx-order-server/src/main/java/com/xxfc/platform/order/rest/BaseOrderController.java
View file @
32b01e03
...
...
@@ -351,6 +351,11 @@ public class BaseOrderController extends CommonBaseController {
"6--已完成"
)
private
Integer
status
;
@ApiModelProperty
(
value
=
"是否有使用会员权益"
)
private
Integer
hasMemberRight
;
@ApiModelProperty
(
value
=
"订单类型 1--租车;2--旅游; 3--会员订单"
)
private
Integer
type
;
}
/**
...
...
xx-order/xx-order-server/src/main/java/com/xxfc/platform/order/service/OrderRentVehicleService.java
View file @
32b01e03
...
...
@@ -36,6 +36,7 @@ import java.util.HashMap;
import
java.util.HashSet
;
import
static
com
.
github
.
wxiaoqi
.
security
.
admin
.
constant
.
enumerate
.
MemberEnum
.*;
import
static
com
.
github
.
wxiaoqi
.
security
.
common
.
constant
.
CommonConstants
.
SYS_TRUE
;
import
static
com
.
xxfc
.
platform
.
universal
.
constant
.
DictionaryKey
.
APP_ORDER
;
@Service
...
...
@@ -134,6 +135,7 @@ public class OrderRentVehicleService extends AbstractOrderHandle<OrderRentVehicl
BigDecimal
modelAmount
=
BigDecimal
.
ZERO
;
Integer
vehicleDayNum
=
0
;
Integer
freeDayNum
=
0
;
//当前用户
AppUserDTO
dto
=
detail
.
getAppUserDTO
();
...
...
@@ -150,6 +152,7 @@ public class OrderRentVehicleService extends AbstractOrderHandle<OrderRentVehicl
freeDayNum
=
detail
.
getDayNum
();
}
vehicleDayNum
=
detail
.
getDayNum
()
-
freeDayNum
;
detail
.
getOrder
().
setHasMemberRight
(
SYS_TRUE
);
}
else
{
vehicleDayNum
=
detail
.
getDayNum
();
}
...
...
@@ -168,18 +171,30 @@ public class OrderRentVehicleService extends AbstractOrderHandle<OrderRentVehicl
switch
(
MemberEnum
.
getByCode
(
detail
.
getAppUserDTO
().
getMemberLevel
()))
{
case
NORMAL:
modelAmount
=
handleDiscount
(
vehicleModel
,
prices
,
NORMAL
);
detail
.
getOrder
().
setHasMemberRight
(
SYS_TRUE
);
break
;
case
GOLD:
modelAmount
=
handleDiscount
(
vehicleModel
,
prices
,
GOLD
);
detail
.
getOrder
().
setHasMemberRight
(
SYS_TRUE
);
break
;
case
DIAMOND:
modelAmount
=
handleDiscount
(
vehicleModel
,
prices
,
DIAMOND
);
detail
.
getOrder
().
setHasMemberRight
(
SYS_TRUE
);
break
;
}
}
else
{
modelAmount
=
vehicleModel
.
getPrice
();
}
vehicleAmount
=
vehicleAmount
.
add
(
modelAmount
.
multiply
(
BigDecimal
.
valueOf
(
vehicleDayNum
)));
//优惠券处理
//待完成
//如果有使用会员权益或者优惠券,则设置订单已优惠
if
(
SYS_TRUE
.
equals
(
detail
.
getOrder
().
getHasMemberRight
()))
{
detail
.
getOrder
().
setHasDiscount
(
SYS_TRUE
);
}
if
(
DRIVER_TYPE_COMPANY
.
equals
(
detail
.
getDriverType
()))
{
//计算司机费用
driverAmount
=
driverAmount
.
add
(
DRIVER_PRICE
.
multiply
(
BigDecimal
.
valueOf
(
detail
.
getDayNum
())));
...
...
xx-order/xx-order-server/src/main/resources/mapper/BaseOrderMapper.xml
View file @
32b01e03
...
...
@@ -56,6 +56,12 @@
<if
test=
"no != null"
>
and no = #{no}
</if>
<if
test=
"type != null"
>
and type = #{type}
</if>
<if
test=
"hasMemberRight != null"
>
and has_member_right = #{hasMemberRight}
</if>
</where>
order by crt_time desc
</select>
...
...
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