记得上下班打卡 | git大法好,push需谨慎
Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
L
liquidnet-bus-v1
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
董敬伟
liquidnet-bus-v1
Commits
934b40e1
Commit
934b40e1
authored
Sep 16, 2021
by
jiangxiulong
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
kylin用户发起退款拿出来 手续费规则
parent
bd6e74fd
Changes
7
Hide whitespace changes
Inline
Side-by-side
Showing
7 changed files
with
689 additions
and
634 deletions
+689
-634
IKylinOrderTicketsService.java
...dnet/service/kylin/service/IKylinOrderTicketsService.java
+0
-20
DataUtils.java
...iquidnet/client/admin/zhengzai/kylin/utils/DataUtils.java
+0
-30
KylinOrderTicketsController.java
...service/kylin/controller/KylinOrderTicketsController.java
+0
-68
KylinOrderTicketsRefundController.java
...e/kylin/controller/KylinOrderTicketsRefundController.java
+92
-0
KylinOrderTicketsRefundServiceImpl.java
...ylin/service/impl/KylinOrderTicketsRefundServiceImpl.java
+567
-0
KylinOrderTicketsServiceImpl.java
...vice/kylin/service/impl/KylinOrderTicketsServiceImpl.java
+0
-506
DataUtils.java
...ain/java/com/liquidnet/service/kylin/utils/DataUtils.java
+30
-10
No files found.
liquidnet-bus-api/liquidnet-service-kylin-api/src/main/java/com/liquidnet/service/kylin/service/IKylinOrderTicketsService.java
View file @
934b40e1
...
...
@@ -31,26 +31,6 @@ public interface IKylinOrderTicketsService {
//订单未支付数量
ResponseDto
<
Integer
>
orderUnPayCount
();
//想要退款详情
ResponseDto
<
KylinOrderTicketPreVo
>
toOrderRefundDetails
(
String
orderId
);
//退款详情
ResponseDto
<
OrderRefundVo
>
orderRefundDetails
(
String
orderId
,
String
orderRefundId
);
/**
* 发起退款
*
* @param orderId 订单id
* @param orderTicketEntitiesId 票单id
* @param reason 退款原因
* @param picList 证据截图
* @return 是否成功
*/
ResponseDto
sendOrderRefund
(
String
orderId
,
String
orderTicketEntitiesId
,
String
reason
,
String
picList
,
Integer
sendExpressType
,
String
expressNumber
,
String
expressContacts
,
String
expressPhone
,
String
sendExpressAddress
,
String
appointmentTime
);
//退款撤回
ResponseDto
<
Boolean
>
orderRefundWithdraw
(
String
orderRefundsId
);
//发起转赠订单
ResponseDto
<
String
>
orderTransfer
(
String
orderId
,
String
transferUid
,
String
transferMobile
);
...
...
liquidnet-bus-client/liquidnet-client-admin/liquidnet-client-admin-zhengzai/src/main/java/com/liquidnet/client/admin/zhengzai/kylin/utils/DataUtils.java
View file @
934b40e1
...
...
@@ -352,36 +352,6 @@ public class DataUtils {
return
ret
;
}
// 获取手续费
public
ArrayList
<
OrderRefundPoundage
>
getRefundPoundage
(){
Object
obj
=
redisUtil
.
get
(
KylinRedisConst
.
ORDER_REFUND_POUNDAGE
);
if
(
obj
==
null
){
ArrayList
<
OrderRefundPoundage
>
voList
=
new
ArrayList
();
OrderRefundPoundage
vo1
=
OrderRefundPoundage
.
getNew
();
vo1
.
setDay
(
15
);
vo1
.
setContent
(
"距离演出开始日期>15天"
);
vo1
.
setPresent
(
BigDecimal
.
valueOf
(
0.1
));
vo1
.
setIsCanRefund
(
1
);
OrderRefundPoundage
vo2
=
OrderRefundPoundage
.
getNew
();
vo2
.
setDay
(
3
);
vo2
.
setContent
(
"距离演出开始日期>3天-15天(含15天)"
);
vo2
.
setPresent
(
BigDecimal
.
valueOf
(
0.5
));
vo2
.
setIsCanRefund
(
1
);
OrderRefundPoundage
vo3
=
OrderRefundPoundage
.
getNew
();
vo3
.
setDay
(
0
);
vo3
.
setContent
(
"距离演出开始日期≤3天(含演出当天)"
);
vo3
.
setPresent
(
BigDecimal
.
valueOf
(
0
));
vo3
.
setIsCanRefund
(
1
);
voList
.
add
(
vo1
);
voList
.
add
(
vo2
);
voList
.
add
(
vo3
);
redisUtil
.
set
(
KylinRedisConst
.
ORDER_REFUND_POUNDAGE
,
voList
);
return
voList
;
}
else
{
return
(
ArrayList
<
OrderRefundPoundage
>)
obj
;
}
}
// 获取 快递地址
public
OrderRefundAddress
getRefundAddress
(){
Object
obj
=
redisUtil
.
get
(
KylinRedisConst
.
ORDER_REFUND_ADDRESS
);
...
...
liquidnet-bus-service/liquidnet-service-kylin/liquidnet-service-kylin-impl/src/main/java/com/liquidnet/service/kylin/controller/KylinOrderTicketsController.java
View file @
934b40e1
...
...
@@ -5,20 +5,13 @@ import com.github.pagehelper.PageInfo;
import
com.liquidnet.commons.lang.util.CollectionUtil
;
import
com.liquidnet.service.base.ErrorMapping
;
import
com.liquidnet.service.base.ResponseDto
;
import
com.liquidnet.service.kylin.dto.param.PayAgainParam
;
import
com.liquidnet.service.kylin.dto.param.PayOrderParam
;
import
com.liquidnet.service.kylin.dto.param.SyncOrderParam
;
import
com.liquidnet.service.kylin.dto.vo.returns.*
;
import
com.liquidnet.service.kylin.service.IKylinOrderTicketsService
;
import
com.liquidnet.service.kylin.service.impl.KylinOrderTicketsServiceImpl
;
import
io.swagger.annotations.*
;
import
org.apache.ibatis.annotations.Param
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.validation.annotation.Validated
;
import
org.springframework.web.bind.annotation.*
;
import
javax.validation.Valid
;
import
javax.validation.constraints.Min
;
import
javax.validation.constraints.NotBlank
;
import
javax.validation.constraints.NotNull
;
import
java.util.HashMap
;
...
...
@@ -86,67 +79,6 @@ public class KylinOrderTicketsController {
}
}
@GetMapping
(
"toOrderRefundDetails"
)
@ApiOperation
(
"想要退款订单详情"
)
@ApiResponse
(
code
=
200
,
message
=
"接口返回对象参数"
)
public
ResponseDto
<
KylinOrderTicketPreVo
>
toOrderRefundDetails
(
@RequestParam
(
value
=
"orderId"
,
required
=
false
)
@NotNull
(
message
=
"订单ID不能为空"
)
String
orderId
)
{
return
orderTicketsService
.
toOrderRefundDetails
(
orderId
);
}
@PostMapping
(
"sendOrderRefunds"
)
@ApiOperation
(
"发起退款申请"
)
@ApiResponse
(
code
=
200
,
message
=
"接口返回对象参数"
)
@ApiImplicitParams
({
@ApiImplicitParam
(
type
=
"form"
,
dataType
=
"String"
,
name
=
"orderId"
,
value
=
"订单ID"
,
required
=
true
),
@ApiImplicitParam
(
type
=
"form"
,
dataType
=
"String"
,
name
=
"orderTicketEntitiesId"
,
value
=
"订单入场人ID"
,
required
=
true
),
@ApiImplicitParam
(
type
=
"form"
,
dataType
=
"String"
,
name
=
"reason"
,
value
=
"退款申请备注"
,
required
=
true
),
@ApiImplicitParam
(
type
=
"form"
,
dataType
=
"String"
,
name
=
"picList"
,
value
=
"图片"
),
@ApiImplicitParam
(
type
=
"form"
,
dataType
=
"Integer"
,
name
=
"sendExpressType"
,
value
=
"快递方式 1上门取件 2自主发货"
),
@ApiImplicitParam
(
type
=
"form"
,
dataType
=
"String"
,
name
=
"expressNumber"
,
value
=
"自主发货的顺丰订单号"
),
@ApiImplicitParam
(
type
=
"form"
,
dataType
=
"String"
,
name
=
"expressContacts"
,
value
=
"发货人姓名"
),
@ApiImplicitParam
(
type
=
"form"
,
dataType
=
"String"
,
name
=
"expressPhone"
,
value
=
"发货人联系方式"
),
@ApiImplicitParam
(
type
=
"form"
,
dataType
=
"String"
,
name
=
"sendExpressAddress"
,
value
=
"取件地址"
),
@ApiImplicitParam
(
type
=
"form"
,
dataType
=
"String"
,
name
=
"appointmentTime"
,
value
=
"预约取件时间"
)
})
public
ResponseDto
sendOrderRefund
(
@RequestParam
(
value
=
"orderId"
,
required
=
true
)
@NotNull
(
message
=
"订单ID不能为空"
)
String
orderId
,
@RequestParam
(
value
=
"orderTicketEntitiesId"
,
required
=
true
)
@NotNull
(
message
=
"票单ID不能为空"
)
String
orderTicketEntitiesId
,
@RequestParam
(
value
=
"reason"
,
required
=
true
)
@NotNull
(
message
=
"退款原因不能为空"
)
String
reason
,
@RequestParam
(
value
=
"picList"
,
required
=
false
)
String
picList
,
@RequestParam
(
value
=
"sendExpressType"
,
required
=
false
)
Integer
sendExpressType
,
@RequestParam
(
value
=
"expressNumber"
,
required
=
false
)
String
expressNumber
,
@RequestParam
(
value
=
"expressContacts"
,
required
=
false
)
String
expressContacts
,
@RequestParam
(
value
=
"expressPhone"
,
required
=
false
)
String
expressPhone
,
@RequestParam
(
value
=
"sendExpressAddress"
,
required
=
false
)
String
sendExpressAddress
,
@RequestParam
(
value
=
"appointmentTime"
,
required
=
false
)
String
appointmentTime
)
{
// 退款
return
orderTicketsService
.
sendOrderRefund
(
orderId
,
orderTicketEntitiesId
,
reason
,
picList
,
sendExpressType
,
expressNumber
,
expressContacts
,
expressPhone
,
sendExpressAddress
,
appointmentTime
);
}
@GetMapping
(
"orderRefundDetails"
)
@ApiOperation
(
"退款申请详情"
)
@ApiResponse
(
code
=
200
,
message
=
"接口返回对象参数"
)
public
ResponseDto
<
OrderRefundVo
>
orderRefundDetails
(
@RequestParam
(
value
=
"orderId"
,
required
=
true
)
@NotNull
(
message
=
"订单ID不能为空"
)
String
orderId
,
@RequestParam
(
value
=
"orderRefundId"
,
required
=
true
)
@NotNull
(
message
=
"退款订单ID不能为空"
)
String
orderRefundId
)
{
return
orderTicketsService
.
orderRefundDetails
(
orderId
,
orderRefundId
);
}
@PostMapping
(
"orderRefundWithdraw"
)
@ApiOperation
(
"发起退款撤回"
)
@ApiResponse
(
code
=
200
,
message
=
"接口返回对象参数"
)
public
ResponseDto
<
Boolean
>
orderRefundWithdraw
(
@RequestParam
(
value
=
"orderRefundId"
,
required
=
true
)
@NotNull
(
message
=
"退款订单ID不能为空"
)
String
orderRefundId
)
{
return
orderTicketsService
.
orderRefundWithdraw
(
orderRefundId
);
}
@GetMapping
(
"orderUnPayCount"
)
@ApiOperation
(
"待支付演出订单数量"
)
@ApiResponse
(
code
=
200
,
message
=
"接口返回对象参数"
)
...
...
liquidnet-bus-service/liquidnet-service-kylin/liquidnet-service-kylin-impl/src/main/java/com/liquidnet/service/kylin/controller/KylinOrderTicketsRefundController.java
0 → 100644
View file @
934b40e1
package
com
.
liquidnet
.
service
.
kylin
.
controller
;
import
com.liquidnet.service.base.ResponseDto
;
import
com.liquidnet.service.kylin.dto.vo.returns.KylinOrderTicketPreVo
;
import
com.liquidnet.service.kylin.dto.vo.returns.OrderRefundVo
;
import
com.liquidnet.service.kylin.service.impl.KylinOrderTicketsRefundServiceImpl
;
import
io.swagger.annotations.*
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.validation.annotation.Validated
;
import
org.springframework.web.bind.annotation.*
;
import
javax.validation.constraints.NotNull
;
/**
* <p>
* 订单用户申请退款 前端控制器
* </p>
*
* @author 姜秀龙
* @since 2021-09-16
*/
@Api
(
tags
=
"前端-订单相关"
)
@RestController
@RequestMapping
(
"orderRefund"
)
@Validated
public
class
KylinOrderTicketsRefundController
{
@Autowired
KylinOrderTicketsRefundServiceImpl
kylinOrderTicketsRefundService
;
@GetMapping
(
"toOrderRefundDetails"
)
@ApiOperation
(
"想要退款订单详情"
)
@ApiResponse
(
code
=
200
,
message
=
"接口返回对象参数"
)
public
ResponseDto
<
KylinOrderTicketPreVo
>
toOrderRefundDetails
(
@RequestParam
(
value
=
"orderId"
,
required
=
false
)
@NotNull
(
message
=
"订单ID不能为空"
)
String
orderId
)
{
return
kylinOrderTicketsRefundService
.
toOrderRefundDetails
(
orderId
);
}
@PostMapping
(
"sendOrderRefunds"
)
@ApiOperation
(
"发起退款申请"
)
@ApiResponse
(
code
=
200
,
message
=
"接口返回对象参数"
)
@ApiImplicitParams
({
@ApiImplicitParam
(
type
=
"form"
,
dataType
=
"String"
,
name
=
"orderId"
,
value
=
"订单ID"
,
required
=
true
),
@ApiImplicitParam
(
type
=
"form"
,
dataType
=
"String"
,
name
=
"orderTicketEntitiesId"
,
value
=
"订单入场人ID"
,
required
=
true
),
@ApiImplicitParam
(
type
=
"form"
,
dataType
=
"String"
,
name
=
"reason"
,
value
=
"退款申请备注"
,
required
=
true
),
@ApiImplicitParam
(
type
=
"form"
,
dataType
=
"String"
,
name
=
"picList"
,
value
=
"图片"
),
@ApiImplicitParam
(
type
=
"form"
,
dataType
=
"Integer"
,
name
=
"sendExpressType"
,
value
=
"快递方式 1上门取件 2自主发货"
),
@ApiImplicitParam
(
type
=
"form"
,
dataType
=
"String"
,
name
=
"expressNumber"
,
value
=
"自主发货的顺丰订单号"
),
@ApiImplicitParam
(
type
=
"form"
,
dataType
=
"String"
,
name
=
"expressContacts"
,
value
=
"发货人姓名"
),
@ApiImplicitParam
(
type
=
"form"
,
dataType
=
"String"
,
name
=
"expressPhone"
,
value
=
"发货人联系方式"
),
@ApiImplicitParam
(
type
=
"form"
,
dataType
=
"String"
,
name
=
"sendExpressAddress"
,
value
=
"取件地址"
),
@ApiImplicitParam
(
type
=
"form"
,
dataType
=
"String"
,
name
=
"appointmentTime"
,
value
=
"预约取件时间"
)
})
public
ResponseDto
sendOrderRefund
(
@RequestParam
(
value
=
"orderId"
,
required
=
true
)
@NotNull
(
message
=
"订单ID不能为空"
)
String
orderId
,
@RequestParam
(
value
=
"orderTicketEntitiesId"
,
required
=
true
)
@NotNull
(
message
=
"票单ID不能为空"
)
String
orderTicketEntitiesId
,
@RequestParam
(
value
=
"reason"
,
required
=
true
)
@NotNull
(
message
=
"退款原因不能为空"
)
String
reason
,
@RequestParam
(
value
=
"picList"
,
required
=
false
)
String
picList
,
@RequestParam
(
value
=
"sendExpressType"
,
required
=
false
)
Integer
sendExpressType
,
@RequestParam
(
value
=
"expressNumber"
,
required
=
false
)
String
expressNumber
,
@RequestParam
(
value
=
"expressContacts"
,
required
=
false
)
String
expressContacts
,
@RequestParam
(
value
=
"expressPhone"
,
required
=
false
)
String
expressPhone
,
@RequestParam
(
value
=
"sendExpressAddress"
,
required
=
false
)
String
sendExpressAddress
,
@RequestParam
(
value
=
"appointmentTime"
,
required
=
false
)
String
appointmentTime
)
{
// 退款
return
kylinOrderTicketsRefundService
.
sendOrderRefund
(
orderId
,
orderTicketEntitiesId
,
reason
,
picList
,
sendExpressType
,
expressNumber
,
expressContacts
,
expressPhone
,
sendExpressAddress
,
appointmentTime
);
}
@GetMapping
(
"orderRefundDetails"
)
@ApiOperation
(
"退款申请详情"
)
@ApiResponse
(
code
=
200
,
message
=
"接口返回对象参数"
)
public
ResponseDto
<
OrderRefundVo
>
orderRefundDetails
(
@RequestParam
(
value
=
"orderId"
,
required
=
true
)
@NotNull
(
message
=
"订单ID不能为空"
)
String
orderId
,
@RequestParam
(
value
=
"orderRefundId"
,
required
=
true
)
@NotNull
(
message
=
"退款订单ID不能为空"
)
String
orderRefundId
)
{
return
kylinOrderTicketsRefundService
.
orderRefundDetails
(
orderId
,
orderRefundId
);
}
@PostMapping
(
"orderRefundWithdraw"
)
@ApiOperation
(
"发起退款撤回"
)
@ApiResponse
(
code
=
200
,
message
=
"接口返回对象参数"
)
public
ResponseDto
<
Boolean
>
orderRefundWithdraw
(
@RequestParam
(
value
=
"orderRefundId"
,
required
=
true
)
@NotNull
(
message
=
"退款订单ID不能为空"
)
String
orderRefundId
)
{
return
kylinOrderTicketsRefundService
.
orderRefundWithdraw
(
orderRefundId
);
}
}
liquidnet-bus-service/liquidnet-service-kylin/liquidnet-service-kylin-impl/src/main/java/com/liquidnet/service/kylin/service/impl/KylinOrderTicketsRefundServiceImpl.java
0 → 100644
View file @
934b40e1
package
com
.
liquidnet
.
service
.
kylin
.
service
.
impl
;
import
com.alibaba.fastjson.JSON
;
import
com.liquidnet.commons.lang.util.*
;
import
com.liquidnet.service.base.ErrorMapping
;
import
com.liquidnet.service.base.ResponseDto
;
import
com.liquidnet.service.base.SqlMapping
;
import
com.liquidnet.service.base.constant.MQConst
;
import
com.liquidnet.service.kylin.constant.KylinTableStatusConst
;
import
com.liquidnet.service.kylin.dto.vo.admin.OrderRefundAddress
;
import
com.liquidnet.service.kylin.dto.vo.admin.OrderRefundPoundage
;
import
com.liquidnet.service.kylin.dto.vo.express.KylinOrderExpressVo
;
import
com.liquidnet.service.kylin.dto.vo.middle.KylinTicketTimesVo
;
import
com.liquidnet.service.kylin.dto.vo.middle.KylinTicketVo
;
import
com.liquidnet.service.kylin.dto.vo.mongo.KylinOrderRefundEntitiesVo
;
import
com.liquidnet.service.kylin.dto.vo.mongo.KylinOrderTicketEntitiesVo
;
import
com.liquidnet.service.kylin.dto.vo.mongo.KylinOrderTicketVo
;
import
com.liquidnet.service.kylin.dto.vo.mongo.KylinPerformanceVo
;
import
com.liquidnet.service.kylin.dto.vo.returns.*
;
import
com.liquidnet.service.kylin.entity.*
;
import
com.liquidnet.service.kylin.utils.*
;
import
com.mongodb.BasicDBObject
;
import
lombok.extern.slf4j.Slf4j
;
import
org.apache.commons.lang.StringUtils
;
import
org.bson.Document
;
import
org.springframework.beans.BeanUtils
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.beans.factory.annotation.Value
;
import
org.springframework.data.mongodb.core.MongoTemplate
;
import
org.springframework.data.mongodb.core.query.Criteria
;
import
org.springframework.data.mongodb.core.query.Query
;
import
org.springframework.scheduling.annotation.Async
;
import
org.springframework.stereotype.Service
;
import
org.springframework.util.CollectionUtils
;
import
java.math.BigDecimal
;
import
java.time.LocalDateTime
;
import
java.time.format.DateTimeFormatter
;
import
java.util.*
;
/**
* <p>
* 订单用户申请退款 服务实现类
* </p>
*
* @author jiangxiulong
* @since 2021-09-16
*/
@Service
@Slf4j
public
class
KylinOrderTicketsRefundServiceImpl
{
@Autowired
private
DataUtils
dataUtils
;
@Autowired
private
OrderUtils
orderUtils
;
@Autowired
private
MongoTemplate
mongoTemplate
;
@Autowired
private
QueueUtils
queueUtils
;
@Autowired
private
KylinRefundsStatusServiceImpl
refundsStatusService
;
@Value
(
"${liquidnet.express.shunfeng.custid}"
)
private
String
custid
;
@Value
(
"${liquidnet.express.shunfeng.expressType}"
)
private
Integer
expressType
;
@Value
(
"${liquidnet.express.shunfeng.depositumInfo}"
)
private
String
depositumInfo
;
@Autowired
private
ShunfengSignUtils
shunfengSignUtils
;
public
ResponseDto
<
KylinOrderTicketPreVo
>
toOrderRefundDetails
(
String
orderId
)
{
try
{
// 订单 演出 订单退款数据
KylinOrderTicketPreVo
vo
=
KylinOrderTicketPreVo
.
getNew
();
String
uid
=
CurrentUtil
.
getCurrentUid
();
KylinOrderTicketVo
orderTicketVo
=
dataUtils
.
getOrderTicketVo
(
orderId
);
KylinPerformanceVo
performanceVo
=
dataUtils
.
getPerformanceVo
(
orderTicketVo
.
getPerformanceId
());
List
<
KylinOrderRefundsVo
>
kylinOrderRefundsVoBaseList
=
dataUtils
.
getOrderRefundVoByOrderId
(
orderTicketVo
.
getOrderTicketsId
());
// 判断是否购买人
if
(
uid
.
equals
(
"809406"
)
||
uid
.
equals
(
"773650"
))
{
}
else
{
if
(!
orderTicketVo
.
getUserId
().
equals
(
uid
))
{
return
ResponseDto
.
failure
(
ErrorMapping
.
get
(
"20003"
));
}
}
// 入场人 数据脱敏/退款
List
<
KylinOrderTicketEntitiesVo
>
kylinOrderTicketEntitiesVoList
=
orderTicketVo
.
getEntitiesVoList
();
List
<
KylinOrderTicketEntitiesPreRefundVo
>
kylinOrderTicketEntitiesPreRefundVos
=
ObjectUtil
.
getKylinOrderTicketEntitiesPreRefundVoArrayList
();
for
(
KylinOrderTicketEntitiesVo
item
:
kylinOrderTicketEntitiesVoList
)
{
KylinOrderTicketEntitiesPreRefundVo
refundVo
=
KylinOrderTicketEntitiesPreRefundVo
.
getNew
();
if
(
item
.
getEnterIdCode
().
length
()
==
18
)
{
item
.
setEnterIdCode
(
item
.
getEnterIdCode
().
substring
(
0
,
3
)
+
"*************"
+
item
.
getEnterIdCode
().
substring
(
16
));
}
if
(
item
.
getEnterMobile
().
length
()
==
11
)
{
item
.
setEnterMobile
(
item
.
getEnterMobile
().
substring
(
0
,
3
)
+
"****"
+
item
.
getEnterMobile
().
substring
(
7
));
}
item
.
setPriceActual
(
orderTicketVo
.
getPriceActual
().
subtract
(
orderTicketVo
.
getPriceExpress
()).
divide
(
BigDecimal
.
valueOf
(
orderTicketVo
.
getNumber
())));
item
.
setPriceCanRefund
(
dataUtils
.
getCanRefundOrderEntitiesPrice
(
orderTicketVo
,
kylinOrderRefundsVoBaseList
,
item
.
getOrderTicketEntitiesId
()));
BeanUtils
.
copyProperties
(
item
,
refundVo
);
kylinOrderTicketEntitiesPreRefundVos
.
add
(
refundVo
);
}
// FieldName
orderTicketVo
.
setFieldName
(
performanceVo
.
getFieldName
());
// 短OrderCode
if
(
orderTicketVo
.
getOrderCode
().
length
()
>
20
)
{
orderTicketVo
.
setOrderCode
(
orderTicketVo
.
getOrderCode
().
substring
(
orderTicketVo
.
getOrderCode
().
length
()
-
10
));
}
// 手续费相关
ArrayList
<
OrderRefundPoundage
>
refundPoundage
=
dataUtils
.
getRefundPoundage
(
performanceVo
.
getIsRefundPoundage
());
// 券
ArrayList
<
KylinOrderCoupons
>
orderCoupon
=
dataUtils
.
getOrderCoupon
(
orderId
);
// 快递地址
OrderRefundAddress
refundAddress
=
dataUtils
.
getRefundAddress
(
orderTicketVo
.
getGetTicketType
());
// 整理返回数据
BeanUtils
.
copyProperties
(
orderTicketVo
,
vo
);
vo
.
setIsRefundPoundage
(
performanceVo
.
getIsRefundPoundage
());
vo
.
setRefundPoundageList
(
refundPoundage
);
vo
.
setOrderCouponList
(
orderCoupon
);
vo
.
setRefundAddress
(
refundAddress
);
vo
.
setIsTrueName
(
performanceVo
.
getIsTrueName
());
vo
.
setEntitiesPreRefundVos
(
kylinOrderTicketEntitiesPreRefundVos
);
return
ResponseDto
.
success
(
vo
);
}
catch
(
Exception
e
)
{
log
.
error
(
"toOrderRefundDetailsException"
,
e
);
return
ResponseDto
.
failure
(
ErrorMapping
.
get
(
"20030"
));
}
}
public
ResponseDto
<
OrderRefundVo
>
orderRefundDetails
(
String
orderId
,
String
orderRefundId
)
{
try
{
OrderRefundVo
vo
=
OrderRefundVo
.
getNew
();
String
uid
=
CurrentUtil
.
getCurrentUid
();
KylinOrderTicketVo
orderTicketVo
=
dataUtils
.
getOrderTicketVo
(
orderId
);
KylinPerformanceVo
performanceVo
=
dataUtils
.
getPerformanceVo
(
orderTicketVo
.
getPerformanceId
());
if
(
uid
.
equals
(
"809406"
)
||
uid
.
equals
(
"773650"
))
{
}
else
{
if
(!
orderTicketVo
.
getUserId
().
equals
(
uid
))
{
return
ResponseDto
.
failure
(
ErrorMapping
.
get
(
"20003"
));
}
}
orderTicketVo
.
setFieldName
(
performanceVo
.
getFieldName
());
if
(
orderTicketVo
.
getOrderCode
().
length
()
>
20
)
{
orderTicketVo
.
setOrderCode
(
orderTicketVo
.
getOrderCode
().
substring
(
orderTicketVo
.
getOrderCode
().
length
()
-
10
));
}
KylinOrderRefundsVo
kylinOrderRefundsVoBase
=
dataUtils
.
getOrderRefundVo
(
orderRefundId
);
if
(
kylinOrderRefundsVoBase
.
getOrderRefundCode
().
length
()
>
20
)
{
kylinOrderRefundsVoBase
.
setOrderRefundCode
(
kylinOrderRefundsVoBase
.
getOrderRefundCode
().
substring
(
kylinOrderRefundsVoBase
.
getOrderRefundCode
().
length
()
-
10
));
}
vo
.
setKylinOrderRefundsVoBaseList
(
kylinOrderRefundsVoBase
);
vo
.
setOrderTicketVo
(
orderTicketVo
);
vo
.
setKylinOrderExpressVo
(
dataUtils
.
getOrderRefundExpressInfo
(
orderId
));
return
ResponseDto
.
success
(
vo
);
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
return
ResponseDto
.
failure
(
ErrorMapping
.
get
(
"20030"
));
}
}
public
ResponseDto
sendOrderRefund
(
String
orderId
,
String
orderTicketEntitiesId
,
String
reason
,
String
picList
,
Integer
sendExpressType
,
String
expressNumber
,
String
expressContacts
,
String
expressPhone
,
String
sendExpressAddress
,
String
appointmentTime
)
{
KylinOrderTicketEntitiesVo
orderTicketEntitiesVo
=
null
;
try
{
String
uid
=
CurrentUtil
.
getCurrentUid
();
KylinOrderTicketVo
orderTicketVo
=
dataUtils
.
getOrderTicketVo
(
orderId
);
List
<
KylinOrderRefundsVo
>
kylinOrderRefundsVoBaseList
=
dataUtils
.
getOrderRefundVoByOrderId
(
orderTicketVo
.
getOrderTicketsId
());
if
(
uid
.
equals
(
"809406"
)
||
uid
.
equals
(
"773650"
))
{
}
else
{
if
(!
orderTicketVo
.
getUserId
().
equals
(
uid
))
{
return
ResponseDto
.
failure
(
"无权查看"
);
}
}
if
(!
orderTicketVo
.
getPayStatus
().
equals
(
1
))
{
return
ResponseDto
.
failure
(
"暂不支持退款"
);
}
KylinPerformanceVo
performanceVo
=
dataUtils
.
getPerformanceVo
(
orderTicketVo
.
getPerformanceId
());
KylinTicketVo
ticketVo
=
null
;
//获取购票数据
for
(
int
x
=
0
;
x
<
performanceVo
.
getTicketTimeList
().
size
();
x
++)
{
KylinTicketTimesVo
timeItem
=
performanceVo
.
getTicketTimeList
().
get
(
x
);
for
(
int
y
=
0
;
y
<
timeItem
.
getTicketList
().
size
();
y
++)
{
KylinTicketVo
ticketItem
=
timeItem
.
getTicketList
().
get
(
y
);
if
(
ticketItem
.
getTicketsId
().
equals
(
orderTicketVo
.
getTicketId
()))
{
ticketVo
=
ticketItem
;
break
;
}
}
}
if
(
null
!=
performanceVo
.
getIsCanRefund
()
&&
performanceVo
.
getIsCanRefund
()
==
1
)
{
LocalDateTime
refundOpenDate
=
DateUtil
.
Formatter
.
yyyyMMddHHmmss
.
parse
(
performanceVo
.
getRefundOpenTime
());
LocalDateTime
refundCloseDate
=
DateUtil
.
Formatter
.
yyyyMMddHHmmss
.
parse
(
performanceVo
.
getRefundCloseTime
());
if
(
LocalDateTime
.
now
().
isAfter
(
refundOpenDate
)
&&
LocalDateTime
.
now
().
isBefore
(
refundCloseDate
)
&&
ticketVo
.
getCounts
()
==
1
)
{
}
else
{
return
ResponseDto
.
failure
(
"暂不支持退款"
);
}
}
else
{
return
ResponseDto
.
failure
(
"暂不支持退款"
);
}
List
<
KylinOrderTicketEntitiesVo
>
entitiesVos
=
orderTicketVo
.
getEntitiesVoList
();
for
(
KylinOrderTicketEntitiesVo
item
:
entitiesVos
)
{
if
(
item
.
getOrderTicketEntitiesId
().
equals
(
orderTicketEntitiesId
))
{
orderTicketEntitiesVo
=
item
;
}
}
if
(
null
==
orderTicketEntitiesVo
)
{
return
ResponseDto
.
failure
(
"订单不存在"
);
}
BigDecimal
refundSinglePrice
=
dataUtils
.
getCanRefundOrderEntitiesPrice
(
orderTicketVo
,
kylinOrderRefundsVoBaseList
,
orderTicketEntitiesId
);
if
(
refundSinglePrice
.
compareTo
(
BigDecimal
.
ZERO
)
<=
0
)
{
return
ResponseDto
.
failure
(
"申请金额不得小于0"
);
}
// 手续费处理
ArrayList
<
OrderRefundPoundage
>
refundPoundage
=
dataUtils
.
getRefundPoundage
(
performanceVo
.
getIsRefundPoundage
());
BigDecimal
priceCharges
=
BigDecimal
.
valueOf
(
0
);
if
(!
CollectionUtils
.
isEmpty
(
refundPoundage
))
{
// 手续费比例
BigDecimal
chargesNum
=
BigDecimal
.
valueOf
(
0
);
// 票种演出开始时间
String
useStart
=
orderTicketVo
.
getUseStart
();
DateTimeFormatter
df
=
DateTimeFormatter
.
ofPattern
(
"yyyy-MM-dd HH:mm:ss"
);
LocalDateTime
useStartD
=
LocalDateTime
.
parse
(
useStart
,
df
);
// 3、15天之前的时间 时间可变
int
oneDay
=
refundPoundage
.
get
(
0
).
getDay
();
int
twoDay
=
refundPoundage
.
get
(
1
).
getDay
();
LocalDateTime
useStartD15Before
=
useStartD
.
minusDays
(
oneDay
);
LocalDateTime
useStartD3Before
=
useStartD
.
minusDays
(
twoDay
);
// 当前时间
LocalDateTime
nowTime
=
LocalDateTime
.
now
();
if
(
useStartD15Before
.
isAfter
(
nowTime
))
{
// 15天以前的时间大于当前时间 距离演出开始日期>15天
int
isCanRefund
=
refundPoundage
.
get
(
0
).
getIsCanRefund
();
if
(
isCanRefund
>
0
)
{
chargesNum
=
refundPoundage
.
get
(
0
).
getPresent
();
}
else
{
return
ResponseDto
.
failure
(
"当前日期不支持退票"
);
}
}
else
if
(
useStartD3Before
.
isAfter
(
nowTime
))
{
// 3天以前的时间大于当前时间 距离演出开始日期>3天-15天 含15天
int
isCanRefund
=
refundPoundage
.
get
(
1
).
getIsCanRefund
();
if
(
isCanRefund
>
0
)
{
chargesNum
=
refundPoundage
.
get
(
1
).
getPresent
();
}
else
{
return
ResponseDto
.
failure
(
"当前日期不支持退票"
);
}
}
else
{
// 三天以内 <=3
int
isCanRefund
=
refundPoundage
.
get
(
2
).
getIsCanRefund
();
if
(
isCanRefund
>
0
)
{
chargesNum
=
refundPoundage
.
get
(
2
).
getPresent
();
}
else
{
return
ResponseDto
.
failure
(
"当前日期不支持退票"
);
}
}
priceCharges
=
refundSinglePrice
.
multiply
(
chargesNum
).
setScale
(
2
,
BigDecimal
.
ROUND_HALF_UP
);
refundSinglePrice
=
refundSinglePrice
.
subtract
(
priceCharges
);
if
(
refundSinglePrice
.
compareTo
(
BigDecimal
.
ZERO
)
<=
0
)
{
return
ResponseDto
.
failure
(
"申请金额不得小于0哦~"
);
}
}
else
{
log
.
info
(
"演出id1111 {}"
,
orderTicketVo
.
getPerformanceId
());
}
// 快递费 现在只有到付 不作处理
// 如果后期有这种情况 需要判断是否是最后一张入场人票 然后减去已经退的快递费 计算进来即可
BigDecimal
priceExpress
=
BigDecimal
.
valueOf
(
0
);
Map
token
=
CurrentUtil
.
getTokenClaims
();
String
username
=
StringUtils
.
defaultString
(((
String
)
token
.
get
(
"nickname"
)),
""
);
String
orderRefundId
=
refundsStatusService
.
userOrderTicketRefunding
(
orderTicketVo
,
refundSinglePrice
,
priceExpress
,
priceCharges
,
orderTicketEntitiesId
,
reason
,
picList
,
uid
,
username
,
kylinOrderRefundsVoBaseList
.
size
());
if
(!
orderRefundId
.
isEmpty
())
{
// 退款申请成功 异步去快递下单
if
(
orderTicketVo
.
getGetTicketType
().
equals
(
"express"
)
&&
sendExpressType
>
0
)
{
// 快递票
expressPlace
(
sendExpressType
,
expressNumber
,
expressContacts
,
expressPhone
,
sendExpressAddress
,
appointmentTime
,
orderTicketVo
,
performanceVo
);
}
HashMap
<
String
,
String
>
map
=
CollectionUtil
.
mapStringString
();
map
.
put
(
"orderRefundsId"
,
orderRefundId
);
return
ResponseDto
.
success
(
map
);
}
else
{
return
ResponseDto
.
failure
(
"申请失败"
);
}
}
catch
(
Exception
e
)
{
log
.
error
(
"sendOrderRefundException e:[{}]"
,
e
);
return
ResponseDto
.
failure
(
"申请失败"
);
}
}
@Async
public
void
expressPlace
(
Integer
sendExpressType
,
String
expressNumber
,
String
expressContacts
,
String
expressPhone
,
String
sendExpressAddress
,
String
appointmentTime
,
KylinOrderTicketVo
orderTicketVo
,
KylinPerformanceVo
performanceVo
)
{
if
(
sendExpressType
==
1
)
{
// 上门取件
// 请求下单数据
Map
<
String
,
String
>
hBody
=
new
HashMap
<>();
hBody
.
put
(
"custid"
,
custid
);
hBody
.
put
(
"jContact"
,
expressContacts
);
hBody
.
put
(
"jMobile"
,
expressPhone
);
hBody
.
put
(
"jAddress"
,
sendExpressAddress
);
hBody
.
put
(
"sendStartTime"
,
appointmentTime
);
Integer
isRefundExpress
=
performanceVo
.
getIsRefundExpress
();
if
(
isRefundExpress
==
1
)
{
// 1用户承担 0无 公司月结
hBody
.
put
(
"payMethod"
,
"1"
);
// 运费付款方式:0-寄付月结;1-寄付现结;2-收方付;3-第三方付;
}
else
{
hBody
.
put
(
"payMethod"
,
"2"
);
// 运费付款方式:0-寄付月结;1-寄付现结;2-收方付;3-第三方付;
}
hBody
.
put
(
"expressType"
,
expressType
.
toString
());
// 顺丰特快
hBody
.
put
(
"depositumInfo"
,
depositumInfo
);
hBody
.
put
(
"isDoCall"
,
"1"
);
// 是否通过手持终端通知顺丰收派员上门收件,支持以下值:1-要求;0-不要求
String
orderExpressId
=
IDGenerator
.
nextSnowId
();
String
OrderExpressCode
=
"NOWUR"
+
orderExpressId
;
hBody
.
put
(
"orderId"
,
OrderExpressCode
);
hBody
.
put
(
"depositumNo"
,
orderTicketVo
.
getNumber
().
toString
());
OrderRefundAddress
refundAddress
=
dataUtils
.
getRefundAddress
(
orderTicketVo
.
getGetTicketType
());
hBody
.
put
(
"dContact"
,
refundAddress
.
getName
());
hBody
.
put
(
"dTel"
,
refundAddress
.
getPhone
());
hBody
.
put
(
"dAddress"
,
refundAddress
.
getAddress
());
// 生成签名并请求
String
result
=
shunfengSignUtils
.
generateSignatureAndRequestNew
(
hBody
,
"/public/order/v1/placeOrder"
);
HashMap
hashMap
=
new
HashMap
();
try
{
hashMap
=
JsonUtils
.
fromJson
(
result
,
HashMap
.
class
);
}
catch
(
Exception
e
)
{
log
.
info
(
"expressPlaceExceptionInfo sendExpressType:[{}], sendExpressAddress:[{}], appointmentTime:[{}], expressNumber:[{}], orderTicketVo:[{}]"
,
sendExpressType
,
sendExpressAddress
,
appointmentTime
,
expressNumber
,
orderTicketVo
);
log
.
error
(
"expressPlaceExceptionError"
,
e
);
}
if
(
null
==
hashMap
.
get
(
"succ"
)
||
hashMap
.
get
(
"succ"
).
equals
(
"fail"
))
{
String
msg
=
""
;
if
(
null
==
hashMap
.
get
(
"succ"
))
{
msg
=
result
;
}
else
{
msg
=
(
String
)
hashMap
.
get
(
"msg"
);
}
log
.
info
(
"expressPlaceExceptionInfo sendExpressType:[{}], sendExpressAddress:[{}], appointmentTime:[{}], expressNumber:[{}], orderTicketVo:[{}]"
,
sendExpressType
,
sendExpressAddress
,
appointmentTime
,
expressNumber
,
orderTicketVo
);
log
.
error
(
"expressPlaceResultError"
,
msg
);
}
else
{
HashMap
hashMapResult
=
(
HashMap
)
hashMap
.
get
(
"result"
);
// 生成预快递单 REDIS 队列入数据库
LocalDateTime
now
=
LocalDateTime
.
now
();
LinkedList
<
String
>
sqls
=
CollectionUtil
.
linkedListString
();
sqls
.
add
(
SqlMapping
.
get
(
"kylin_order_refund.refundOrderExpress"
));
LinkedList
<
Object
[]>
sqlsDataA
=
CollectionUtil
.
linkedListObjectArr
();
sqlsDataA
.
add
(
new
Object
[]{
orderExpressId
,
orderTicketVo
.
getPerformanceId
(),
orderTicketVo
.
getOrderTicketsId
(),
OrderExpressCode
,
hashMapResult
.
get
(
"mailno"
),
expressType
,
hashMapResult
.
get
(
"filter_result"
),
hashMapResult
.
get
(
"remark"
),
KylinTableStatusConst
.
ORDER_EXPRESS_STATUS2
,
2
,
sendExpressType
,
expressContacts
,
expressPhone
,
sendExpressAddress
,
appointmentTime
,
hashMapResult
.
get
(
"proName"
),
hashMapResult
.
get
(
"cargoTypeCode"
),
hashMapResult
.
get
(
"limitTypeCode"
),
hashMapResult
.
get
(
"expressTypeCode"
),
hashMapResult
.
get
(
"goodsValueTotal"
),
hashMapResult
.
get
(
"goodsNumber"
)
,
now
});
queueUtils
.
sendMsgByRedis
(
MQConst
.
KylinQueue
.
SQL_ORDER_REFUND_EXPRESS
.
getKey
(),
SqlMapping
.
gets
(
sqls
,
sqlsDataA
));
KylinOrderExpressVo
kylinOrderExpressVo
=
KylinOrderExpressVo
.
getNew
();
kylinOrderExpressVo
.
setOrderExpressId
(
orderExpressId
);
kylinOrderExpressVo
.
setOrderTicketsId
(
orderTicketVo
.
getOrderTicketsId
());
kylinOrderExpressVo
.
setOrderExpressCode
(
OrderExpressCode
);
kylinOrderExpressVo
.
setMailno
((
String
)
hashMapResult
.
get
(
"mailno"
));
kylinOrderExpressVo
.
setExpressStatus
(
KylinTableStatusConst
.
ORDER_EXPRESS_STATUS2
);
kylinOrderExpressVo
.
setSendExpressType
(
sendExpressType
);
dataUtils
.
setOrderRefundExpressInfo
(
orderTicketVo
.
getOrderTicketsId
(),
kylinOrderExpressVo
);
}
}
else
if
(
sendExpressType
==
2
)
{
// 自主发货
// 生成预快递单 REDIS 队列入数据库
String
orderExpressId
=
IDGenerator
.
nextSnowId
();
String
OrderExpressCode
=
"NEWUR"
+
orderExpressId
;
LocalDateTime
now
=
LocalDateTime
.
now
();
LinkedList
<
String
>
sqls
=
CollectionUtil
.
linkedListString
();
sqls
.
add
(
SqlMapping
.
get
(
"kylin_order_refund.refundOrderExpress"
));
LinkedList
<
Object
[]>
sqlsDataA
=
CollectionUtil
.
linkedListObjectArr
();
sqlsDataA
.
add
(
new
Object
[]{
orderExpressId
,
orderTicketVo
.
getPerformanceId
(),
orderTicketVo
.
getOrderTicketsId
(),
OrderExpressCode
,
expressNumber
,
expressType
,
""
,
""
,
KylinTableStatusConst
.
ORDER_EXPRESS_STATUS2
,
2
,
sendExpressType
,
expressContacts
,
expressPhone
,
sendExpressAddress
,
appointmentTime
,
""
,
""
,
""
,
""
,
""
,
""
,
now
});
queueUtils
.
sendMsgByRedis
(
MQConst
.
KylinQueue
.
SQL_ORDER_REFUND_EXPRESS
.
getKey
(),
SqlMapping
.
gets
(
sqls
,
sqlsDataA
));
KylinOrderExpressVo
kylinOrderExpressVo
=
KylinOrderExpressVo
.
getNew
();
kylinOrderExpressVo
.
setOrderExpressId
(
orderExpressId
);
kylinOrderExpressVo
.
setOrderTicketsId
(
orderTicketVo
.
getOrderTicketsId
());
kylinOrderExpressVo
.
setOrderExpressCode
(
OrderExpressCode
);
kylinOrderExpressVo
.
setMailno
(
expressNumber
);
kylinOrderExpressVo
.
setExpressStatus
(
KylinTableStatusConst
.
ORDER_EXPRESS_STATUS2
);
kylinOrderExpressVo
.
setSendExpressType
(
sendExpressType
);
dataUtils
.
setOrderRefundExpressInfo
(
orderTicketVo
.
getOrderTicketsId
(),
kylinOrderExpressVo
);
}
}
public
ResponseDto
<
Boolean
>
orderRefundWithdraw
(
String
orderRefundsId
)
{
LinkedList
<
String
>
sqls
=
CollectionUtil
.
linkedListString
();
LinkedList
<
Object
[]>
sqlsDataA
=
CollectionUtil
.
linkedListObjectArr
();
LinkedList
<
Object
[]>
sqlsDataB
=
CollectionUtil
.
linkedListObjectArr
();
LinkedList
<
Object
[]>
sqlsDataC
=
CollectionUtil
.
linkedListObjectArr
();
LocalDateTime
time
=
LocalDateTime
.
now
();
String
strTime
=
DateUtil
.
Formatter
.
yyyyMMddHHmmss
.
format
(
time
);
try
{
KylinOrderRefundsVo
orderRefundsVo
=
dataUtils
.
getOrderRefundVo
(
orderRefundsId
);
if
(!
orderRefundsVo
.
getStatus
().
equals
(
0
))
{
return
ResponseDto
.
failure
(
ErrorMapping
.
get
(
"20020"
));
}
List
<
KylinOrderRefundEntitiesVo
>
refundEntities
=
orderRefundsVo
.
getOrderRefundEntitiesVoList
();
String
orderTicketsId
=
orderRefundsVo
.
getOrderTicketsId
();
KylinOrderTicketVo
orderTicketVo
=
dataUtils
.
getOrderTicketVo
(
orderTicketsId
);
// 更新数据
// 订单状态表 判断是退到正在退款 已付款 部分退款?(取消,完成,失败)
int
newStatus
;
int
refundingCount
=
0
;
List
<
KylinOrderRefundsVo
>
orderRefundsVoList
=
dataUtils
.
getOrderRefundVoByOrderId
(
orderTicketsId
);
for
(
KylinOrderRefundsVo
item
:
orderRefundsVoList
)
{
int
status
=
item
.
getStatus
();
log
.
info
(
"status = "
+
status
);
if
(
status
!=
2
&&
status
!=
4
&&
status
!=
5
&&
!
item
.
getOrderRefundsId
().
equals
(
orderRefundsId
))
{
refundingCount
+=
1
;
}
}
if
(
refundingCount
>
0
)
{
// 存在其他正在退款的订单
newStatus
=
KylinTableStatusConst
.
ORDER_STATUS3
;
}
else
{
if
(
orderTicketVo
.
getPriceRefund
().
doubleValue
()
>
0
)
{
// 已经有退完的 那就是部分退款了
newStatus
=
KylinTableStatusConst
.
ORDER_STATUS6
;
}
else
if
(
orderTicketVo
.
getStatus
()
!=
2
)
{
newStatus
=
KylinTableStatusConst
.
ORDER_STATUS1
;
}
else
{
newStatus
=
KylinTableStatusConst
.
ORDER_STATUS2
;
}
}
KylinOrderTicketStatus
orderStatusTable
=
KylinOrderTicketStatus
.
getNew
();
log
.
info
(
"newStatus = "
+
newStatus
);
orderStatusTable
.
setStatus
(
newStatus
);
orderStatusTable
.
setUpdatedAt
(
time
);
LocalDateTime
now
=
LocalDateTime
.
now
();
sqlsDataA
.
add
(
new
Object
[]{
orderStatusTable
.
getStatus
(),
orderStatusTable
.
getUpdatedAt
(),
orderTicketsId
,
now
,
now
});
KylinOrderTicketVo
kylinOrderTicketVo
=
KylinOrderTicketVo
.
getNew
();
kylinOrderTicketVo
.
setStatus
(
newStatus
);
kylinOrderTicketVo
.
setUpdatedAt
(
strTime
);
kylinOrderTicketVo
.
setChangeDate
(
time
);
BasicDBObject
orderObject
=
new
BasicDBObject
(
"$set"
,
JSON
.
parse
(
JsonUtils
.
toJson
(
kylinOrderTicketVo
)));
mongoTemplate
.
getCollection
(
KylinOrderTicketVo
.
class
.
getSimpleName
()).
updateOne
(
Query
.
query
(
Criteria
.
where
(
"orderTicketsId"
).
is
(
orderTicketsId
)).
getQueryObject
(),
orderObject
);
// 入场人
for
(
KylinOrderRefundEntitiesVo
item
:
refundEntities
)
{
// 订单状态表 判断是退到正在退款 已付款 部分退款?(取消,完成,失败)
int
newIsPayment
=
0
;
int
refundingEntitiesCount
=
0
;
for
(
KylinOrderRefundsVo
item2
:
orderRefundsVoList
)
{
int
status
=
item2
.
getStatus
();
if
(!
item2
.
getOrderRefundsId
().
equals
(
orderRefundsId
)
&&
(
status
!=
2
&&
status
!=
4
&&
status
!=
5
))
{
for
(
KylinOrderRefundEntitiesVo
item3
:
item2
.
getOrderRefundEntitiesVoList
())
{
if
(
item3
.
getOrderTicketEntitiesId
().
equals
(
item
.
getOrderTicketEntitiesId
()))
{
refundingEntitiesCount
+=
1
;
}
}
}
/*for (KylinOrderRefundEntitiesVo item3 : item2.getOrderRefundEntitiesVoList()) {
if (item3.getOrderTicketEntitiesId().equals(item.getOrderTicketEntitiesId())) {
entitiesAllPrice.add(item3.getRefundPrice());
}
}*/
}
KylinOrderTicketEntitiesVo
entitiesVo
=
null
;
for
(
KylinOrderTicketEntitiesVo
entitiesVo1
:
orderTicketVo
.
getEntitiesVoList
())
{
if
(
entitiesVo1
.
getOrderTicketEntitiesId
().
equals
(
item
.
getOrderTicketEntitiesId
()))
{
entitiesVo
=
entitiesVo1
;
break
;
}
}
log
.
info
(
"getRefundPrice ="
+
item
.
getRefundPrice
());
if
(
refundingEntitiesCount
>
0
)
{
// 存在其他正在退款的该入场人订单
newIsPayment
=
KylinTableStatusConst
.
ENTITIES_IS_PAYMENT2
;
}
else
{
if
(
orderTicketVo
.
getPriceRefund
().
compareTo
(
BigDecimal
.
ZERO
)
>
0
)
{
// 已经有退完的 那就是部分退款了
newIsPayment
=
KylinTableStatusConst
.
ENTITIES_IS_PAYMENT4
;
}
else
{
newIsPayment
=
KylinTableStatusConst
.
ENTITIES_IS_PAYMENT1
;
}
}
KylinOrderTicketEntities
entitiesTable
=
KylinOrderTicketEntities
.
getNew
();
entitiesTable
.
setIsPayment
(
newIsPayment
);
entitiesTable
.
setUpdatedAt
(
time
);
log
.
info
(
"sqlsDataB data = "
+
entitiesTable
.
getIsPayment
());
sqlsDataB
.
add
(
new
Object
[]{
entitiesTable
.
getIsPayment
(),
entitiesTable
.
getUpdatedAt
(),
item
.
getOrderTicketEntitiesId
(),
now
,
now
});
KylinOrderTicketEntitiesVo
kylinOrderTicketEntitiesVo
=
KylinOrderTicketEntitiesVo
.
getNew
();
kylinOrderTicketEntitiesVo
.
setIsPayment
(
newIsPayment
);
kylinOrderTicketEntitiesVo
.
setUpdatedAt
(
strTime
);
kylinOrderTicketEntitiesVo
.
setChangeDate
(
time
);
// for (KylinOrderRefundEntitiesVo item2:orderRefundsVo.getOrderRefundEntitiesVoList()){
// if(item2.getOrderTicketEntitiesId().equalsIgnoreCase(item.getOrderTicketEntitiesId())){
// log.info("entitiesVo.getRefundPrice() = "+entitiesVo.getRefundPrice());
// log.info("item2.getRefundPrice() = "+item2.getRefundPrice());
kylinOrderTicketEntitiesVo
.
setRefundPrice
(
entitiesVo
.
getRefundPrice
());
// }
// }
log
.
info
(
"entitiesVo.getRefundPrice() = "
+
entitiesVo
.
getRefundPrice
());
BasicDBObject
entitiesObject
=
new
BasicDBObject
(
"$set"
,
JSON
.
parse
(
JsonUtils
.
toJson
(
kylinOrderTicketEntitiesVo
)));
mongoTemplate
.
getCollection
(
KylinOrderTicketEntitiesVo
.
class
.
getSimpleName
()).
updateOne
(
Query
.
query
(
Criteria
.
where
(
"orderTicketEntitiesId"
).
is
(
item
.
getOrderTicketEntitiesId
())).
getQueryObject
(),
entitiesObject
);
dataUtils
.
delOrderTicketEntitiesRedis
(
item
.
getOrderTicketEntitiesId
());
}
orderUtils
.
resetOrderListVo
(
orderTicketVo
.
getUserId
(),
2
,
orderTicketsId
,
null
);
// 退款细节取消
KylinOrderRefunds
kylinOrderRefunds
=
KylinOrderRefunds
.
getNew
();
kylinOrderRefunds
.
setStatus
(
KylinTableStatusConst
.
ORDER_REFUND_STATUS_CANCEL
);
kylinOrderRefunds
.
setUpdatedAt
(
LocalDateTime
.
now
());
mongoTemplate
.
getCollection
(
KylinOrderRefundsVo
.
class
.
getSimpleName
()).
updateOne
(
Query
.
query
(
Criteria
.
where
(
"orderRefundsId"
).
is
(
orderRefundsId
)).
getQueryObject
(),
new
Document
(
"$set"
,
new
Document
(
"status"
,
KylinTableStatusConst
.
ORDER_REFUND_STATUS_CANCEL
).
append
(
"updatedAt"
,
time
))
);
sqlsDataC
.
add
(
new
Object
[]{
KylinTableStatusConst
.
ORDER_REFUND_STATUS_CANCEL
,
time
,
orderRefundsId
});
dataUtils
.
delOrderRefundVo
(
orderRefundsId
);
dataUtils
.
delOrderRefundVoByOrderId
(
orderTicketsId
);
dataUtils
.
delOrderTicketRedis
(
orderTicketsId
);
orderUtils
.
resetOrderListVo
(
CurrentUtil
.
getCurrentUid
(),
2
,
orderTicketsId
,
null
);
sqls
.
add
(
SqlMapping
.
get
(
"kylin_order_ticket_status.withDraw"
));
sqls
.
add
(
SqlMapping
.
get
(
"kylin_order_ticket_entities.withDraw"
));
sqls
.
add
(
SqlMapping
.
get
(
"kylin_order_refund.withDraw"
));
queueUtils
.
sendMsgByRedis
(
MQConst
.
KylinQueue
.
SQL_ORDER_WITHDRAW
.
getKey
(),
SqlMapping
.
gets
(
sqls
,
sqlsDataA
,
sqlsDataB
,
sqlsDataC
));
return
ResponseDto
.
success
(
true
);
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
return
ResponseDto
.
failure
(
ErrorMapping
.
get
(
"20020"
));
}
}
}
liquidnet-bus-service/liquidnet-service-kylin/liquidnet-service-kylin-impl/src/main/java/com/liquidnet/service/kylin/service/impl/KylinOrderTicketsServiceImpl.java
View file @
934b40e1
package
com
.
liquidnet
.
service
.
kylin
.
service
.
impl
;
import
com.alibaba.fastjson.JSON
;
import
com.github.pagehelper.PageInfo
;
import
com.liquidnet.commons.lang.util.*
;
import
com.liquidnet.service.adam.dto.vo.AdamAddressesVo
;
import
com.liquidnet.service.adam.dto.vo.AdamEntersVo
;
import
com.liquidnet.service.base.ErrorMapping
;
import
com.liquidnet.service.base.ResponseDto
;
...
...
@@ -11,12 +9,8 @@ import com.liquidnet.service.base.SqlMapping;
import
com.liquidnet.service.base.UserPathDto
;
import
com.liquidnet.service.base.constant.MQConst
;
import
com.liquidnet.service.kylin.constant.KylinTableStatusConst
;
import
com.liquidnet.service.kylin.dto.vo.admin.OrderRefundAddress
;
import
com.liquidnet.service.kylin.dto.vo.admin.OrderRefundPoundage
;
import
com.liquidnet.service.kylin.dto.vo.express.KylinOrderExpressVo
;
import
com.liquidnet.service.kylin.dto.vo.middle.KylinTicketTimesVo
;
import
com.liquidnet.service.kylin.dto.vo.middle.KylinTicketVo
;
import
com.liquidnet.service.kylin.dto.vo.mongo.KylinOrderRefundEntitiesVo
;
import
com.liquidnet.service.kylin.dto.vo.mongo.KylinOrderTicketEntitiesVo
;
import
com.liquidnet.service.kylin.dto.vo.mongo.KylinOrderTicketVo
;
import
com.liquidnet.service.kylin.dto.vo.mongo.KylinPerformanceVo
;
...
...
@@ -24,7 +18,6 @@ import com.liquidnet.service.kylin.dto.vo.returns.*;
import
com.liquidnet.service.kylin.entity.*
;
import
com.liquidnet.service.kylin.service.IKylinOrderTicketsService
;
import
com.liquidnet.service.kylin.utils.*
;
import
com.mongodb.BasicDBObject
;
import
lombok.extern.slf4j.Slf4j
;
import
org.apache.commons.lang.StringUtils
;
import
org.bson.Document
;
...
...
@@ -34,9 +27,7 @@ import org.springframework.beans.factory.annotation.Value;
import
org.springframework.data.mongodb.core.MongoTemplate
;
import
org.springframework.data.mongodb.core.query.Criteria
;
import
org.springframework.data.mongodb.core.query.Query
;
import
org.springframework.scheduling.annotation.Async
;
import
org.springframework.stereotype.Service
;
import
org.springframework.util.CollectionUtils
;
import
java.math.BigDecimal
;
import
java.time.LocalDateTime
;
...
...
@@ -325,503 +316,6 @@ public class KylinOrderTicketsServiceImpl implements IKylinOrderTicketsService {
return
ResponseDto
.
success
(
unPayCount
);
}
@Override
public
ResponseDto
<
KylinOrderTicketPreVo
>
toOrderRefundDetails
(
String
orderId
)
{
try
{
// 订单 演出 订单退款数据
KylinOrderTicketPreVo
vo
=
KylinOrderTicketPreVo
.
getNew
();
String
uid
=
CurrentUtil
.
getCurrentUid
();
KylinOrderTicketVo
orderTicketVo
=
dataUtils
.
getOrderTicketVo
(
orderId
);
KylinPerformanceVo
performanceVo
=
dataUtils
.
getPerformanceVo
(
orderTicketVo
.
getPerformanceId
());
List
<
KylinOrderRefundsVo
>
kylinOrderRefundsVoBaseList
=
dataUtils
.
getOrderRefundVoByOrderId
(
orderTicketVo
.
getOrderTicketsId
());
// 判断是否购买人
if
(
uid
.
equals
(
"809406"
)
||
uid
.
equals
(
"773650"
))
{
}
else
{
if
(!
orderTicketVo
.
getUserId
().
equals
(
uid
))
{
return
ResponseDto
.
failure
(
ErrorMapping
.
get
(
"20003"
));
}
}
// 入场人 数据脱敏/退款
List
<
KylinOrderTicketEntitiesVo
>
kylinOrderTicketEntitiesVoList
=
orderTicketVo
.
getEntitiesVoList
();
List
<
KylinOrderTicketEntitiesPreRefundVo
>
kylinOrderTicketEntitiesPreRefundVos
=
ObjectUtil
.
getKylinOrderTicketEntitiesPreRefundVoArrayList
();
for
(
KylinOrderTicketEntitiesVo
item
:
kylinOrderTicketEntitiesVoList
)
{
KylinOrderTicketEntitiesPreRefundVo
refundVo
=
KylinOrderTicketEntitiesPreRefundVo
.
getNew
();
if
(
item
.
getEnterIdCode
().
length
()
==
18
)
{
item
.
setEnterIdCode
(
item
.
getEnterIdCode
().
substring
(
0
,
3
)
+
"*************"
+
item
.
getEnterIdCode
().
substring
(
16
));
}
if
(
item
.
getEnterMobile
().
length
()
==
11
)
{
item
.
setEnterMobile
(
item
.
getEnterMobile
().
substring
(
0
,
3
)
+
"****"
+
item
.
getEnterMobile
().
substring
(
7
));
}
item
.
setPriceActual
(
orderTicketVo
.
getPriceActual
().
subtract
(
orderTicketVo
.
getPriceExpress
()).
divide
(
BigDecimal
.
valueOf
(
orderTicketVo
.
getNumber
())));
item
.
setPriceCanRefund
(
dataUtils
.
getCanRefundOrderEntitiesPrice
(
orderTicketVo
,
kylinOrderRefundsVoBaseList
,
item
.
getOrderTicketEntitiesId
()));
BeanUtils
.
copyProperties
(
item
,
refundVo
);
kylinOrderTicketEntitiesPreRefundVos
.
add
(
refundVo
);
}
// FieldName
orderTicketVo
.
setFieldName
(
performanceVo
.
getFieldName
());
// 短OrderCode
if
(
orderTicketVo
.
getOrderCode
().
length
()
>
20
)
{
orderTicketVo
.
setOrderCode
(
orderTicketVo
.
getOrderCode
().
substring
(
orderTicketVo
.
getOrderCode
().
length
()
-
10
));
}
// 手续费相关
ArrayList
<
OrderRefundPoundage
>
refundPoundage
=
dataUtils
.
getRefundPoundage
(
performanceVo
.
getIsRefundPoundage
());
// 券
ArrayList
<
KylinOrderCoupons
>
orderCoupon
=
dataUtils
.
getOrderCoupon
(
orderId
);
// 快递地址
OrderRefundAddress
refundAddress
=
dataUtils
.
getRefundAddress
(
orderTicketVo
.
getGetTicketType
());
// 整理返回数据
BeanUtils
.
copyProperties
(
orderTicketVo
,
vo
);
vo
.
setIsRefundPoundage
(
performanceVo
.
getIsRefundPoundage
());
vo
.
setRefundPoundageList
(
refundPoundage
);
vo
.
setOrderCouponList
(
orderCoupon
);
vo
.
setRefundAddress
(
refundAddress
);
vo
.
setIsTrueName
(
performanceVo
.
getIsTrueName
());
vo
.
setEntitiesPreRefundVos
(
kylinOrderTicketEntitiesPreRefundVos
);
return
ResponseDto
.
success
(
vo
);
}
catch
(
Exception
e
)
{
log
.
error
(
"toOrderRefundDetailsException"
,
e
);
return
ResponseDto
.
failure
(
ErrorMapping
.
get
(
"20030"
));
}
}
@Override
public
ResponseDto
<
OrderRefundVo
>
orderRefundDetails
(
String
orderId
,
String
orderRefundId
)
{
try
{
OrderRefundVo
vo
=
OrderRefundVo
.
getNew
();
String
uid
=
CurrentUtil
.
getCurrentUid
();
KylinOrderTicketVo
orderTicketVo
=
dataUtils
.
getOrderTicketVo
(
orderId
);
KylinPerformanceVo
performanceVo
=
dataUtils
.
getPerformanceVo
(
orderTicketVo
.
getPerformanceId
());
if
(
uid
.
equals
(
"809406"
)
||
uid
.
equals
(
"773650"
))
{
}
else
{
if
(!
orderTicketVo
.
getUserId
().
equals
(
uid
))
{
return
ResponseDto
.
failure
(
ErrorMapping
.
get
(
"20003"
));
}
}
orderTicketVo
.
setFieldName
(
performanceVo
.
getFieldName
());
if
(
orderTicketVo
.
getOrderCode
().
length
()
>
20
)
{
orderTicketVo
.
setOrderCode
(
orderTicketVo
.
getOrderCode
().
substring
(
orderTicketVo
.
getOrderCode
().
length
()
-
10
));
}
KylinOrderRefundsVo
kylinOrderRefundsVoBase
=
dataUtils
.
getOrderRefundVo
(
orderRefundId
);
if
(
kylinOrderRefundsVoBase
.
getOrderRefundCode
().
length
()
>
20
)
{
kylinOrderRefundsVoBase
.
setOrderRefundCode
(
kylinOrderRefundsVoBase
.
getOrderRefundCode
().
substring
(
kylinOrderRefundsVoBase
.
getOrderRefundCode
().
length
()
-
10
));
}
vo
.
setKylinOrderRefundsVoBaseList
(
kylinOrderRefundsVoBase
);
vo
.
setOrderTicketVo
(
orderTicketVo
);
vo
.
setKylinOrderExpressVo
(
dataUtils
.
getOrderRefundExpressInfo
(
orderId
));
return
ResponseDto
.
success
(
vo
);
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
return
ResponseDto
.
failure
(
ErrorMapping
.
get
(
"20030"
));
}
}
@Override
public
ResponseDto
sendOrderRefund
(
String
orderId
,
String
orderTicketEntitiesId
,
String
reason
,
String
picList
,
Integer
sendExpressType
,
String
expressNumber
,
String
expressContacts
,
String
expressPhone
,
String
sendExpressAddress
,
String
appointmentTime
)
{
KylinOrderTicketEntitiesVo
orderTicketEntitiesVo
=
null
;
try
{
String
uid
=
CurrentUtil
.
getCurrentUid
();
KylinOrderTicketVo
orderTicketVo
=
dataUtils
.
getOrderTicketVo
(
orderId
);
List
<
KylinOrderRefundsVo
>
kylinOrderRefundsVoBaseList
=
dataUtils
.
getOrderRefundVoByOrderId
(
orderTicketVo
.
getOrderTicketsId
());
if
(
uid
.
equals
(
"809406"
)
||
uid
.
equals
(
"773650"
))
{
}
else
{
if
(!
orderTicketVo
.
getUserId
().
equals
(
uid
))
{
return
ResponseDto
.
failure
(
"无权查看"
);
}
}
if
(!
orderTicketVo
.
getPayStatus
().
equals
(
1
))
{
return
ResponseDto
.
failure
(
"暂不支持退款"
);
}
KylinPerformanceVo
performanceVo
=
dataUtils
.
getPerformanceVo
(
orderTicketVo
.
getPerformanceId
());
KylinTicketVo
ticketVo
=
null
;
//获取购票数据
for
(
int
x
=
0
;
x
<
performanceVo
.
getTicketTimeList
().
size
();
x
++)
{
KylinTicketTimesVo
timeItem
=
performanceVo
.
getTicketTimeList
().
get
(
x
);
for
(
int
y
=
0
;
y
<
timeItem
.
getTicketList
().
size
();
y
++)
{
KylinTicketVo
ticketItem
=
timeItem
.
getTicketList
().
get
(
y
);
if
(
ticketItem
.
getTicketsId
().
equals
(
orderTicketVo
.
getTicketId
()))
{
ticketVo
=
ticketItem
;
break
;
}
}
}
if
(
null
!=
performanceVo
.
getIsCanRefund
()
&&
performanceVo
.
getIsCanRefund
()
==
1
)
{
LocalDateTime
refundOpenDate
=
DateUtil
.
Formatter
.
yyyyMMddHHmmss
.
parse
(
performanceVo
.
getRefundOpenTime
());
LocalDateTime
refundCloseDate
=
DateUtil
.
Formatter
.
yyyyMMddHHmmss
.
parse
(
performanceVo
.
getRefundCloseTime
());
if
(
LocalDateTime
.
now
().
isAfter
(
refundOpenDate
)
&&
LocalDateTime
.
now
().
isBefore
(
refundCloseDate
)
&&
ticketVo
.
getCounts
()
==
1
)
{
}
else
{
return
ResponseDto
.
failure
(
"暂不支持退款"
);
}
}
else
{
return
ResponseDto
.
failure
(
"暂不支持退款"
);
}
List
<
KylinOrderTicketEntitiesVo
>
entitiesVos
=
orderTicketVo
.
getEntitiesVoList
();
for
(
KylinOrderTicketEntitiesVo
item
:
entitiesVos
)
{
if
(
item
.
getOrderTicketEntitiesId
().
equals
(
orderTicketEntitiesId
))
{
orderTicketEntitiesVo
=
item
;
}
}
if
(
null
==
orderTicketEntitiesVo
)
{
return
ResponseDto
.
failure
(
"订单不存在"
);
}
BigDecimal
refundSinglePrice
=
dataUtils
.
getCanRefundOrderEntitiesPrice
(
orderTicketVo
,
kylinOrderRefundsVoBaseList
,
orderTicketEntitiesId
);
if
(
refundSinglePrice
.
compareTo
(
BigDecimal
.
ZERO
)
<=
0
)
{
return
ResponseDto
.
failure
(
"申请金额不得小于0"
);
}
// 手续费处理
ArrayList
<
OrderRefundPoundage
>
refundPoundage
=
dataUtils
.
getRefundPoundage
(
performanceVo
.
getIsRefundPoundage
());
BigDecimal
priceCharges
=
BigDecimal
.
valueOf
(
0
);
if
(!
CollectionUtils
.
isEmpty
(
refundPoundage
))
{
// 手续费比例
BigDecimal
chargesNum
=
BigDecimal
.
valueOf
(
0
);
// 票种演出开始时间
String
useStart
=
orderTicketVo
.
getUseStart
();
DateTimeFormatter
df
=
DateTimeFormatter
.
ofPattern
(
"yyyy-MM-dd HH:mm:ss"
);
LocalDateTime
useStartD
=
LocalDateTime
.
parse
(
useStart
,
df
);
// 3、15天之前的时间 时间可变
int
oneDay
=
refundPoundage
.
get
(
0
).
getDay
();
int
twoDay
=
refundPoundage
.
get
(
1
).
getDay
();
LocalDateTime
useStartD15Before
=
useStartD
.
minusDays
(
oneDay
);
LocalDateTime
useStartD3Before
=
useStartD
.
minusDays
(
twoDay
);
// 当前时间
LocalDateTime
nowTime
=
LocalDateTime
.
now
();
if
(
useStartD15Before
.
isAfter
(
nowTime
))
{
// 15天以前的时间大于当前时间 距离演出开始日期>15天
int
isCanRefund
=
refundPoundage
.
get
(
0
).
getIsCanRefund
();
if
(
isCanRefund
>
0
)
{
chargesNum
=
refundPoundage
.
get
(
0
).
getPresent
();
}
else
{
return
ResponseDto
.
failure
(
"当前日期不支持退票"
);
}
}
else
if
(
useStartD3Before
.
isAfter
(
nowTime
))
{
// 3天以前的时间大于当前时间 距离演出开始日期>3天-15天 含15天
int
isCanRefund
=
refundPoundage
.
get
(
1
).
getIsCanRefund
();
if
(
isCanRefund
>
0
)
{
chargesNum
=
refundPoundage
.
get
(
1
).
getPresent
();
}
else
{
return
ResponseDto
.
failure
(
"当前日期不支持退票"
);
}
}
else
{
// 三天以内 <=3
int
isCanRefund
=
refundPoundage
.
get
(
2
).
getIsCanRefund
();
if
(
isCanRefund
>
0
)
{
chargesNum
=
refundPoundage
.
get
(
2
).
getPresent
();
}
else
{
return
ResponseDto
.
failure
(
"当前日期不支持退票"
);
}
}
priceCharges
=
refundSinglePrice
.
multiply
(
chargesNum
).
setScale
(
2
,
BigDecimal
.
ROUND_HALF_UP
);
refundSinglePrice
=
refundSinglePrice
.
subtract
(
priceCharges
);
if
(
refundSinglePrice
.
compareTo
(
BigDecimal
.
ZERO
)
<=
0
)
{
return
ResponseDto
.
failure
(
"申请金额不得小于0哦~"
);
}
}
else
{
log
.
info
(
"演出id1111 {}"
,
orderTicketVo
.
getPerformanceId
());
}
// 快递费 现在只有到付 不作处理
// 如果后期有这种情况 需要判断是否是最后一张入场人票 然后减去已经退的快递费 计算进来即可
BigDecimal
priceExpress
=
BigDecimal
.
valueOf
(
0
);
Map
token
=
CurrentUtil
.
getTokenClaims
();
String
username
=
StringUtils
.
defaultString
(((
String
)
token
.
get
(
"nickname"
)),
""
);
String
orderRefundId
=
refundsStatusService
.
userOrderTicketRefunding
(
orderTicketVo
,
refundSinglePrice
,
priceExpress
,
priceCharges
,
orderTicketEntitiesId
,
reason
,
picList
,
uid
,
username
,
kylinOrderRefundsVoBaseList
.
size
());
if
(!
orderRefundId
.
isEmpty
())
{
// 退款申请成功 异步去快递下单
if
(
orderTicketVo
.
getGetTicketType
().
equals
(
"express"
)
&&
sendExpressType
>
0
)
{
// 快递票
expressPlace
(
sendExpressType
,
expressNumber
,
expressContacts
,
expressPhone
,
sendExpressAddress
,
appointmentTime
,
orderTicketVo
,
performanceVo
);
}
HashMap
<
String
,
String
>
map
=
CollectionUtil
.
mapStringString
();
map
.
put
(
"orderRefundsId"
,
orderRefundId
);
return
ResponseDto
.
success
(
map
);
}
else
{
return
ResponseDto
.
failure
(
"申请失败"
);
}
}
catch
(
Exception
e
)
{
log
.
error
(
"sendOrderRefundException e:[{}]"
,
e
);
return
ResponseDto
.
failure
(
"申请失败"
);
}
}
@Async
public
void
expressPlace
(
Integer
sendExpressType
,
String
expressNumber
,
String
expressContacts
,
String
expressPhone
,
String
sendExpressAddress
,
String
appointmentTime
,
KylinOrderTicketVo
orderTicketVo
,
KylinPerformanceVo
performanceVo
)
{
if
(
sendExpressType
==
1
)
{
// 上门取件
// 请求下单数据
Map
<
String
,
String
>
hBody
=
new
HashMap
<>();
hBody
.
put
(
"custid"
,
custid
);
hBody
.
put
(
"jContact"
,
expressContacts
);
hBody
.
put
(
"jMobile"
,
expressPhone
);
hBody
.
put
(
"jAddress"
,
sendExpressAddress
);
hBody
.
put
(
"sendStartTime"
,
appointmentTime
);
Integer
isRefundExpress
=
performanceVo
.
getIsRefundExpress
();
if
(
isRefundExpress
==
1
)
{
// 1用户承担 0无 公司月结
hBody
.
put
(
"payMethod"
,
"1"
);
// 运费付款方式:0-寄付月结;1-寄付现结;2-收方付;3-第三方付;
}
else
{
hBody
.
put
(
"payMethod"
,
"2"
);
// 运费付款方式:0-寄付月结;1-寄付现结;2-收方付;3-第三方付;
}
hBody
.
put
(
"expressType"
,
expressType
.
toString
());
// 顺丰特快
hBody
.
put
(
"depositumInfo"
,
depositumInfo
);
hBody
.
put
(
"isDoCall"
,
"1"
);
// 是否通过手持终端通知顺丰收派员上门收件,支持以下值:1-要求;0-不要求
String
orderExpressId
=
IDGenerator
.
nextSnowId
();
String
OrderExpressCode
=
"NOWUR"
+
orderExpressId
;
hBody
.
put
(
"orderId"
,
OrderExpressCode
);
hBody
.
put
(
"depositumNo"
,
orderTicketVo
.
getNumber
().
toString
());
OrderRefundAddress
refundAddress
=
dataUtils
.
getRefundAddress
(
orderTicketVo
.
getGetTicketType
());
hBody
.
put
(
"dContact"
,
refundAddress
.
getName
());
hBody
.
put
(
"dTel"
,
refundAddress
.
getPhone
());
hBody
.
put
(
"dAddress"
,
refundAddress
.
getAddress
());
// 生成签名并请求
String
result
=
shunfengSignUtils
.
generateSignatureAndRequestNew
(
hBody
,
"/public/order/v1/placeOrder"
);
HashMap
hashMap
=
new
HashMap
();
try
{
hashMap
=
JsonUtils
.
fromJson
(
result
,
HashMap
.
class
);
}
catch
(
Exception
e
)
{
log
.
info
(
"expressPlaceExceptionInfo sendExpressType:[{}], sendExpressAddress:[{}], appointmentTime:[{}], expressNumber:[{}], orderTicketVo:[{}]"
,
sendExpressType
,
sendExpressAddress
,
appointmentTime
,
expressNumber
,
orderTicketVo
);
log
.
error
(
"expressPlaceExceptionError"
,
e
);
}
if
(
null
==
hashMap
.
get
(
"succ"
)
||
hashMap
.
get
(
"succ"
).
equals
(
"fail"
))
{
String
msg
=
""
;
if
(
null
==
hashMap
.
get
(
"succ"
))
{
msg
=
result
;
}
else
{
msg
=
(
String
)
hashMap
.
get
(
"msg"
);
}
log
.
info
(
"expressPlaceExceptionInfo sendExpressType:[{}], sendExpressAddress:[{}], appointmentTime:[{}], expressNumber:[{}], orderTicketVo:[{}]"
,
sendExpressType
,
sendExpressAddress
,
appointmentTime
,
expressNumber
,
orderTicketVo
);
log
.
error
(
"expressPlaceResultError"
,
msg
);
}
else
{
HashMap
hashMapResult
=
(
HashMap
)
hashMap
.
get
(
"result"
);
// 生成预快递单 REDIS 队列入数据库
LocalDateTime
now
=
LocalDateTime
.
now
();
LinkedList
<
String
>
sqls
=
CollectionUtil
.
linkedListString
();
sqls
.
add
(
SqlMapping
.
get
(
"kylin_order_refund.refundOrderExpress"
));
LinkedList
<
Object
[]>
sqlsDataA
=
CollectionUtil
.
linkedListObjectArr
();
sqlsDataA
.
add
(
new
Object
[]{
orderExpressId
,
orderTicketVo
.
getPerformanceId
(),
orderTicketVo
.
getOrderTicketsId
(),
OrderExpressCode
,
hashMapResult
.
get
(
"mailno"
),
expressType
,
hashMapResult
.
get
(
"filter_result"
),
hashMapResult
.
get
(
"remark"
),
KylinTableStatusConst
.
ORDER_EXPRESS_STATUS2
,
2
,
sendExpressType
,
expressContacts
,
expressPhone
,
sendExpressAddress
,
appointmentTime
,
hashMapResult
.
get
(
"proName"
),
hashMapResult
.
get
(
"cargoTypeCode"
),
hashMapResult
.
get
(
"limitTypeCode"
),
hashMapResult
.
get
(
"expressTypeCode"
),
hashMapResult
.
get
(
"goodsValueTotal"
),
hashMapResult
.
get
(
"goodsNumber"
)
,
now
});
queueUtils
.
sendMsgByRedis
(
MQConst
.
KylinQueue
.
SQL_ORDER_REFUND_EXPRESS
.
getKey
(),
SqlMapping
.
gets
(
sqls
,
sqlsDataA
));
KylinOrderExpressVo
kylinOrderExpressVo
=
KylinOrderExpressVo
.
getNew
();
kylinOrderExpressVo
.
setOrderExpressId
(
orderExpressId
);
kylinOrderExpressVo
.
setOrderTicketsId
(
orderTicketVo
.
getOrderTicketsId
());
kylinOrderExpressVo
.
setOrderExpressCode
(
OrderExpressCode
);
kylinOrderExpressVo
.
setMailno
((
String
)
hashMapResult
.
get
(
"mailno"
));
kylinOrderExpressVo
.
setExpressStatus
(
KylinTableStatusConst
.
ORDER_EXPRESS_STATUS2
);
kylinOrderExpressVo
.
setSendExpressType
(
sendExpressType
);
dataUtils
.
setOrderRefundExpressInfo
(
orderTicketVo
.
getOrderTicketsId
(),
kylinOrderExpressVo
);
}
}
else
if
(
sendExpressType
==
2
)
{
// 自主发货
// 生成预快递单 REDIS 队列入数据库
String
orderExpressId
=
IDGenerator
.
nextSnowId
();
String
OrderExpressCode
=
"NEWUR"
+
orderExpressId
;
LocalDateTime
now
=
LocalDateTime
.
now
();
LinkedList
<
String
>
sqls
=
CollectionUtil
.
linkedListString
();
sqls
.
add
(
SqlMapping
.
get
(
"kylin_order_refund.refundOrderExpress"
));
LinkedList
<
Object
[]>
sqlsDataA
=
CollectionUtil
.
linkedListObjectArr
();
sqlsDataA
.
add
(
new
Object
[]{
orderExpressId
,
orderTicketVo
.
getPerformanceId
(),
orderTicketVo
.
getOrderTicketsId
(),
OrderExpressCode
,
expressNumber
,
expressType
,
""
,
""
,
KylinTableStatusConst
.
ORDER_EXPRESS_STATUS2
,
2
,
sendExpressType
,
expressContacts
,
expressPhone
,
sendExpressAddress
,
appointmentTime
,
""
,
""
,
""
,
""
,
""
,
""
,
now
});
queueUtils
.
sendMsgByRedis
(
MQConst
.
KylinQueue
.
SQL_ORDER_REFUND_EXPRESS
.
getKey
(),
SqlMapping
.
gets
(
sqls
,
sqlsDataA
));
KylinOrderExpressVo
kylinOrderExpressVo
=
KylinOrderExpressVo
.
getNew
();
kylinOrderExpressVo
.
setOrderExpressId
(
orderExpressId
);
kylinOrderExpressVo
.
setOrderTicketsId
(
orderTicketVo
.
getOrderTicketsId
());
kylinOrderExpressVo
.
setOrderExpressCode
(
OrderExpressCode
);
kylinOrderExpressVo
.
setMailno
(
expressNumber
);
kylinOrderExpressVo
.
setExpressStatus
(
KylinTableStatusConst
.
ORDER_EXPRESS_STATUS2
);
kylinOrderExpressVo
.
setSendExpressType
(
sendExpressType
);
dataUtils
.
setOrderRefundExpressInfo
(
orderTicketVo
.
getOrderTicketsId
(),
kylinOrderExpressVo
);
}
}
@Override
public
ResponseDto
<
Boolean
>
orderRefundWithdraw
(
String
orderRefundsId
)
{
LinkedList
<
String
>
sqls
=
CollectionUtil
.
linkedListString
();
LinkedList
<
Object
[]>
sqlsDataA
=
CollectionUtil
.
linkedListObjectArr
();
LinkedList
<
Object
[]>
sqlsDataB
=
CollectionUtil
.
linkedListObjectArr
();
LinkedList
<
Object
[]>
sqlsDataC
=
CollectionUtil
.
linkedListObjectArr
();
LocalDateTime
time
=
LocalDateTime
.
now
();
String
strTime
=
DateUtil
.
Formatter
.
yyyyMMddHHmmss
.
format
(
time
);
try
{
KylinOrderRefundsVo
orderRefundsVo
=
dataUtils
.
getOrderRefundVo
(
orderRefundsId
);
if
(!
orderRefundsVo
.
getStatus
().
equals
(
0
))
{
return
ResponseDto
.
failure
(
ErrorMapping
.
get
(
"20020"
));
}
List
<
KylinOrderRefundEntitiesVo
>
refundEntities
=
orderRefundsVo
.
getOrderRefundEntitiesVoList
();
String
orderTicketsId
=
orderRefundsVo
.
getOrderTicketsId
();
KylinOrderTicketVo
orderTicketVo
=
dataUtils
.
getOrderTicketVo
(
orderTicketsId
);
// 更新数据
// 订单状态表 判断是退到正在退款 已付款 部分退款?(取消,完成,失败)
int
newStatus
;
int
refundingCount
=
0
;
List
<
KylinOrderRefundsVo
>
orderRefundsVoList
=
dataUtils
.
getOrderRefundVoByOrderId
(
orderTicketsId
);
for
(
KylinOrderRefundsVo
item
:
orderRefundsVoList
)
{
int
status
=
item
.
getStatus
();
log
.
info
(
"status = "
+
status
);
if
(
status
!=
2
&&
status
!=
4
&&
status
!=
5
&&
!
item
.
getOrderRefundsId
().
equals
(
orderRefundsId
))
{
refundingCount
+=
1
;
}
}
if
(
refundingCount
>
0
)
{
// 存在其他正在退款的订单
newStatus
=
KylinTableStatusConst
.
ORDER_STATUS3
;
}
else
{
if
(
orderTicketVo
.
getPriceRefund
().
doubleValue
()
>
0
)
{
// 已经有退完的 那就是部分退款了
newStatus
=
KylinTableStatusConst
.
ORDER_STATUS6
;
}
else
if
(
orderTicketVo
.
getStatus
()
!=
2
)
{
newStatus
=
KylinTableStatusConst
.
ORDER_STATUS1
;
}
else
{
newStatus
=
KylinTableStatusConst
.
ORDER_STATUS2
;
}
}
KylinOrderTicketStatus
orderStatusTable
=
KylinOrderTicketStatus
.
getNew
();
log
.
info
(
"newStatus = "
+
newStatus
);
orderStatusTable
.
setStatus
(
newStatus
);
orderStatusTable
.
setUpdatedAt
(
time
);
LocalDateTime
now
=
LocalDateTime
.
now
();
sqlsDataA
.
add
(
new
Object
[]{
orderStatusTable
.
getStatus
(),
orderStatusTable
.
getUpdatedAt
(),
orderTicketsId
,
now
,
now
});
KylinOrderTicketVo
kylinOrderTicketVo
=
KylinOrderTicketVo
.
getNew
();
kylinOrderTicketVo
.
setStatus
(
newStatus
);
kylinOrderTicketVo
.
setUpdatedAt
(
strTime
);
kylinOrderTicketVo
.
setChangeDate
(
time
);
BasicDBObject
orderObject
=
new
BasicDBObject
(
"$set"
,
JSON
.
parse
(
JsonUtils
.
toJson
(
kylinOrderTicketVo
)));
mongoTemplate
.
getCollection
(
KylinOrderTicketVo
.
class
.
getSimpleName
()).
updateOne
(
Query
.
query
(
Criteria
.
where
(
"orderTicketsId"
).
is
(
orderTicketsId
)).
getQueryObject
(),
orderObject
);
// 入场人
for
(
KylinOrderRefundEntitiesVo
item
:
refundEntities
)
{
// 订单状态表 判断是退到正在退款 已付款 部分退款?(取消,完成,失败)
int
newIsPayment
=
0
;
int
refundingEntitiesCount
=
0
;
for
(
KylinOrderRefundsVo
item2
:
orderRefundsVoList
)
{
int
status
=
item2
.
getStatus
();
if
(!
item2
.
getOrderRefundsId
().
equals
(
orderRefundsId
)
&&
(
status
!=
2
&&
status
!=
4
&&
status
!=
5
))
{
for
(
KylinOrderRefundEntitiesVo
item3
:
item2
.
getOrderRefundEntitiesVoList
())
{
if
(
item3
.
getOrderTicketEntitiesId
().
equals
(
item
.
getOrderTicketEntitiesId
()))
{
refundingEntitiesCount
+=
1
;
}
}
}
/*for (KylinOrderRefundEntitiesVo item3 : item2.getOrderRefundEntitiesVoList()) {
if (item3.getOrderTicketEntitiesId().equals(item.getOrderTicketEntitiesId())) {
entitiesAllPrice.add(item3.getRefundPrice());
}
}*/
}
KylinOrderTicketEntitiesVo
entitiesVo
=
null
;
for
(
KylinOrderTicketEntitiesVo
entitiesVo1
:
orderTicketVo
.
getEntitiesVoList
())
{
if
(
entitiesVo1
.
getOrderTicketEntitiesId
().
equals
(
item
.
getOrderTicketEntitiesId
()))
{
entitiesVo
=
entitiesVo1
;
break
;
}
}
log
.
info
(
"getRefundPrice ="
+
item
.
getRefundPrice
());
if
(
refundingEntitiesCount
>
0
)
{
// 存在其他正在退款的该入场人订单
newIsPayment
=
KylinTableStatusConst
.
ENTITIES_IS_PAYMENT2
;
}
else
{
if
(
orderTicketVo
.
getPriceRefund
().
compareTo
(
BigDecimal
.
ZERO
)
>
0
)
{
// 已经有退完的 那就是部分退款了
newIsPayment
=
KylinTableStatusConst
.
ENTITIES_IS_PAYMENT4
;
}
else
{
newIsPayment
=
KylinTableStatusConst
.
ENTITIES_IS_PAYMENT1
;
}
}
KylinOrderTicketEntities
entitiesTable
=
KylinOrderTicketEntities
.
getNew
();
entitiesTable
.
setIsPayment
(
newIsPayment
);
entitiesTable
.
setUpdatedAt
(
time
);
log
.
info
(
"sqlsDataB data = "
+
entitiesTable
.
getIsPayment
());
sqlsDataB
.
add
(
new
Object
[]{
entitiesTable
.
getIsPayment
(),
entitiesTable
.
getUpdatedAt
(),
item
.
getOrderTicketEntitiesId
(),
now
,
now
});
KylinOrderTicketEntitiesVo
kylinOrderTicketEntitiesVo
=
KylinOrderTicketEntitiesVo
.
getNew
();
kylinOrderTicketEntitiesVo
.
setIsPayment
(
newIsPayment
);
kylinOrderTicketEntitiesVo
.
setUpdatedAt
(
strTime
);
kylinOrderTicketEntitiesVo
.
setChangeDate
(
time
);
// for (KylinOrderRefundEntitiesVo item2:orderRefundsVo.getOrderRefundEntitiesVoList()){
// if(item2.getOrderTicketEntitiesId().equalsIgnoreCase(item.getOrderTicketEntitiesId())){
// log.info("entitiesVo.getRefundPrice() = "+entitiesVo.getRefundPrice());
// log.info("item2.getRefundPrice() = "+item2.getRefundPrice());
kylinOrderTicketEntitiesVo
.
setRefundPrice
(
entitiesVo
.
getRefundPrice
());
// }
// }
log
.
info
(
"entitiesVo.getRefundPrice() = "
+
entitiesVo
.
getRefundPrice
());
BasicDBObject
entitiesObject
=
new
BasicDBObject
(
"$set"
,
JSON
.
parse
(
JsonUtils
.
toJson
(
kylinOrderTicketEntitiesVo
)));
mongoTemplate
.
getCollection
(
KylinOrderTicketEntitiesVo
.
class
.
getSimpleName
()).
updateOne
(
Query
.
query
(
Criteria
.
where
(
"orderTicketEntitiesId"
).
is
(
item
.
getOrderTicketEntitiesId
())).
getQueryObject
(),
entitiesObject
);
dataUtils
.
delOrderTicketEntitiesRedis
(
item
.
getOrderTicketEntitiesId
());
}
orderUtils
.
resetOrderListVo
(
orderTicketVo
.
getUserId
(),
2
,
orderTicketsId
,
null
);
// 退款细节取消
KylinOrderRefunds
kylinOrderRefunds
=
KylinOrderRefunds
.
getNew
();
kylinOrderRefunds
.
setStatus
(
KylinTableStatusConst
.
ORDER_REFUND_STATUS_CANCEL
);
kylinOrderRefunds
.
setUpdatedAt
(
LocalDateTime
.
now
());
mongoTemplate
.
getCollection
(
KylinOrderRefundsVo
.
class
.
getSimpleName
()).
updateOne
(
Query
.
query
(
Criteria
.
where
(
"orderRefundsId"
).
is
(
orderRefundsId
)).
getQueryObject
(),
new
Document
(
"$set"
,
new
Document
(
"status"
,
KylinTableStatusConst
.
ORDER_REFUND_STATUS_CANCEL
).
append
(
"updatedAt"
,
time
))
);
sqlsDataC
.
add
(
new
Object
[]{
KylinTableStatusConst
.
ORDER_REFUND_STATUS_CANCEL
,
time
,
orderRefundsId
});
dataUtils
.
delOrderRefundVo
(
orderRefundsId
);
dataUtils
.
delOrderRefundVoByOrderId
(
orderTicketsId
);
dataUtils
.
delOrderTicketRedis
(
orderTicketsId
);
orderUtils
.
resetOrderListVo
(
CurrentUtil
.
getCurrentUid
(),
2
,
orderTicketsId
,
null
);
sqls
.
add
(
SqlMapping
.
get
(
"kylin_order_ticket_status.withDraw"
));
sqls
.
add
(
SqlMapping
.
get
(
"kylin_order_ticket_entities.withDraw"
));
sqls
.
add
(
SqlMapping
.
get
(
"kylin_order_refund.withDraw"
));
queueUtils
.
sendMsgByRedis
(
MQConst
.
KylinQueue
.
SQL_ORDER_WITHDRAW
.
getKey
(),
SqlMapping
.
gets
(
sqls
,
sqlsDataA
,
sqlsDataB
,
sqlsDataC
));
return
ResponseDto
.
success
(
true
);
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
return
ResponseDto
.
failure
(
ErrorMapping
.
get
(
"20020"
));
}
}
@Override
public
ResponseDto
<
String
>
orderTransfer
(
String
orderId
,
String
transferUid
,
String
transferMobile
)
{
String
uid
=
CurrentUtil
.
getCurrentUid
();
...
...
liquidnet-bus-service/liquidnet-service-kylin/liquidnet-service-kylin-impl/src/main/java/com/liquidnet/service/kylin/utils/DataUtils.java
View file @
934b40e1
...
...
@@ -131,7 +131,7 @@ public class DataUtils {
List
<
KylinOrderListVo
>
voList
=
mongoTemplate
.
find
(
Query
.
query
(
Criteria
.
where
(
"userId"
).
is
(
userId
))
.
with
(
Sort
.
by
(
Sort
.
Direction
.
DESC
,
"createdAt"
)).
limit
(
40
),
KylinOrderListVo
.
class
,
KylinOrderTicketVo
.
class
.
getSimpleName
());
for
(
KylinOrderListVo
item
:
voList
){
for
(
KylinOrderListVo
item
:
voList
)
{
item
.
setStatus
(
item
.
getStatus
());
}
redisUtil
.
set
(
KylinRedisConst
.
ORDER_LIST
+
userId
,
voList
);
...
...
@@ -151,7 +151,7 @@ public class DataUtils {
return
(
KylinOrderTicketVo
)
obj
;
}
else
{
KylinOrderTicketVo
ticketData
=
mongoTemplate
.
findOne
(
Query
.
query
(
Criteria
.
where
(
"orderTicketsId"
).
is
(
orderId
)),
KylinOrderTicketVo
.
class
,
KylinOrderTicketVo
.
class
.
getSimpleName
());
if
(
ticketData
==
null
)
{
if
(
ticketData
==
null
)
{
return
null
;
}
List
<
KylinOrderTicketEntitiesVo
>
kylinOrderTicketEntitiesVoList
=
mongoTemplate
.
find
(
Query
.
query
(
Criteria
.
where
(
"orderId"
).
is
(
orderId
)),
KylinOrderTicketEntitiesVo
.
class
,
KylinOrderTicketEntitiesVo
.
class
.
getSimpleName
());
...
...
@@ -521,7 +521,7 @@ public class DataUtils {
/**
* 获取可退款票单价格
*
* @param orderTicketVo 订单vo数据
* @param orderTicketVo
订单vo数据
* @param orderTicketEntitiesId 票单id
* @return
*/
...
...
@@ -596,11 +596,11 @@ public class DataUtils {
*/
public
int
getPerformanceIsTrueName
(
String
performanceId
)
{
Object
obj
=
redisUtil
.
get
(
KylinRedisConst
.
PERFORMANCES_TRUE_NAME
+
performanceId
);
if
(
obj
!=
null
)
{
return
(
int
)
obj
;
}
else
{
if
(
obj
!=
null
)
{
return
(
int
)
obj
;
}
else
{
int
isTrueName
=
getPerformanceVo
(
performanceId
).
getIsTrueName
();
redisUtil
.
set
(
KylinRedisConst
.
PERFORMANCES_TRUE_NAME
+
performanceId
,
isTrueName
);
redisUtil
.
set
(
KylinRedisConst
.
PERFORMANCES_TRUE_NAME
+
performanceId
,
isTrueName
);
return
isTrueName
;
}
}
...
...
@@ -670,8 +670,8 @@ public class DataUtils {
public
List
<
KylinPerformanceVo
>
myPerformancesList
(
String
userId
)
{
Query
queryNew
=
new
Query
();
queryNew
.
addCriteria
(
Criteria
.
where
(
"userId"
).
is
(
userId
));
List
<
String
>
performanceIdList
=
mongoTemplate
.
findDistinct
(
queryNew
,
"performanceId"
,
"KylinOrderTicketVo"
,
KylinOrderTicketVo
.
class
,
String
.
class
);
log
.
info
(
"myPerformancesList performanceIdList.size:{}"
,
performanceIdList
.
size
());
List
<
String
>
performanceIdList
=
mongoTemplate
.
findDistinct
(
queryNew
,
"performanceId"
,
"KylinOrderTicketVo"
,
KylinOrderTicketVo
.
class
,
String
.
class
);
log
.
info
(
"myPerformancesList performanceIdList.size:{}"
,
performanceIdList
.
size
());
// 固定条件
Query
query
=
getCommonWhere
();
...
...
@@ -696,6 +696,25 @@ public class DataUtils {
if
(
isRefundPoundage
>
0
)
{
// 开启了演出退票有手续费
Object
obj
=
redisUtil
.
get
(
KylinRedisConst
.
ORDER_REFUND_POUNDAGE
);
if
(
obj
==
null
)
{
OrderRefundPoundage
vo1
=
OrderRefundPoundage
.
getNew
();
vo1
.
setDay
(
15
);
vo1
.
setContent
(
"距离演出开始日期>15天"
);
vo1
.
setPresent
(
BigDecimal
.
valueOf
(
0.1
));
vo1
.
setIsCanRefund
(
1
);
OrderRefundPoundage
vo2
=
OrderRefundPoundage
.
getNew
();
vo2
.
setDay
(
3
);
vo2
.
setContent
(
"距离演出开始日期>3天-15天(含15天)"
);
vo2
.
setPresent
(
BigDecimal
.
valueOf
(
0.5
));
vo2
.
setIsCanRefund
(
1
);
OrderRefundPoundage
vo3
=
OrderRefundPoundage
.
getNew
();
vo3
.
setDay
(
0
);
vo3
.
setContent
(
"距离演出开始日期≤3天(含演出当天)"
);
vo3
.
setPresent
(
BigDecimal
.
valueOf
(
0
));
vo3
.
setIsCanRefund
(
1
);
orderRefundPoundageArrayList
.
add
(
vo1
);
orderRefundPoundageArrayList
.
add
(
vo2
);
orderRefundPoundageArrayList
.
add
(
vo3
);
redisUtil
.
set
(
KylinRedisConst
.
ORDER_REFUND_POUNDAGE
,
orderRefundPoundageArrayList
);
return
orderRefundPoundageArrayList
;
}
else
{
return
(
ArrayList
<
OrderRefundPoundage
>)
obj
;
...
...
@@ -706,7 +725,7 @@ public class DataUtils {
}
// 获取订单券的使用情况
public
ArrayList
<
KylinOrderCoupons
>
getOrderCoupon
(
String
orderId
){
public
ArrayList
<
KylinOrderCoupons
>
getOrderCoupon
(
String
orderId
)
{
String
redisKey
=
KylinRedisConst
.
ORDER_COUPON
.
concat
(
orderId
);
Object
obj
=
redisUtil
.
get
(
redisKey
);
if
(
obj
==
null
)
{
...
...
@@ -735,6 +754,7 @@ public class DataUtils {
String
redisKey
=
KylinRedisConst
.
ORDER_REFUND_EXPRESS_INFO
.
concat
(
orderId
);
redisUtil
.
set
(
redisKey
,
kylinOrderExpressVo
);
}
public
KylinOrderExpressVo
getOrderRefundExpressInfo
(
String
orderId
)
{
String
redisKey
=
KylinRedisConst
.
ORDER_REFUND_EXPRESS_INFO
.
concat
(
orderId
);
return
(
KylinOrderExpressVo
)
redisUtil
.
get
(
redisKey
);
...
...
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