记得上下班打卡 | 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
02899791
Commit
02899791
authored
Jul 05, 2021
by
jiangxiulong
Browse files
Options
Browse Files
Download
Plain Diff
Merge remote-tracking branch 'origin/dev' into dev
parents
aaf952c2
5d89f8c3
Changes
8
Hide whitespace changes
Inline
Side-by-side
Showing
8 changed files
with
58 additions
and
1062 deletions
+58
-1062
IKylinOrderTicketsOrderService.java
...service/kylin/service/IKylinOrderTicketsOrderService.java
+34
-0
IKylinOrderTicketsService.java
...dnet/service/kylin/service/IKylinOrderTicketsService.java
+0
-25
taobao-sdk-java-auto_1600401599540-20210607-impl.jar
.../lib/taobao-sdk-java-auto_1600401599540-20210607-impl.jar
+0
-0
pom.xml
...uidnet-service-kylin/liquidnet-service-kylin-impl/pom.xml
+0
-8
KylinOrderTicketsServiceImpl.java
...vice/kylin/service/impl/KylinOrderTicketsServiceImpl.java
+16
-944
TaobaoTicketUtils.java
.../com/liquidnet/service/kylin/utils/TaobaoTicketUtils.java
+0
-34
KylinOrderTicketsController.java
...service/order/controller/KylinOrderTicketsController.java
+6
-8
KylinOrderTicketsServiceImpl.java
...vice/order/service/impl/KylinOrderTicketsServiceImpl.java
+2
-43
No files found.
liquidnet-bus-api/liquidnet-service-kylin-api/src/main/java/com/liquidnet/service/kylin/service/IKylinOrderTicketsOrderService.java
0 → 100644
View file @
02899791
package
com
.
liquidnet
.
service
.
kylin
.
service
;
import
com.github.pagehelper.PageInfo
;
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
java.util.List
;
/**
* <p>
* 订单 服务类
* </p>
*
* @author liquidnet
* @since 2021-05-20
*/
public
interface
IKylinOrderTicketsOrderService
{
// 下单前判断接口(判断是否可锁定库存)(无订单->待支付->可支付)
ResponseDto
<
PayResultVo
>
checkCanOrder
(
PayOrderParam
payOrderParam
);
// 再次支付(待支付->可支付->倒计时结束释放库存)
ResponseDto
<
PayResultVo
>
payAgain
(
PayAgainParam
payAgainParam
);
// 支付回调(待支付->已支付->中断倒计时)
String
syncOrder
(
SyncOrderParam
syncOrderParam
);
//去 PHP pay检查 订单状态
ResponseDto
<
Integer
>
checkOrderResult
(
String
orderId
);
}
liquidnet-bus-api/liquidnet-service-kylin-api/src/main/java/com/liquidnet/service/kylin/service/IKylinOrderTicketsService.java
View file @
02899791
...
@@ -22,26 +22,12 @@ import java.util.List;
...
@@ -22,26 +22,12 @@ import java.util.List;
*/
*/
public
interface
IKylinOrderTicketsService
{
public
interface
IKylinOrderTicketsService
{
// 下单前判断接口(判断是否可锁定库存)(无订单->待支付->可支付)
ResponseDto
<
PayResultVo
>
checkCanOrder
(
PayOrderParam
payOrderParam
);
// 再次支付(待支付->可支付->倒计时结束释放库存)
ResponseDto
<
PayResultVo
>
payAgain
(
PayAgainParam
payAgainParam
);
// 支付回调(待支付->已支付->中断倒计时)
String
syncOrder
(
SyncOrderParam
syncOrderParam
);
// 同步大麦数据接口
//订单列表(状态 待支付 已支付 倒计时 已失效)
//订单列表(状态 待支付 已支付 倒计时 已失效)
PageInfo
<
List
<
KylinOrderListVo
>>
orderList
();
PageInfo
<
List
<
KylinOrderListVo
>>
orderList
();
//订单详情
//订单详情
OrderDetailsVo
orderDetails
(
String
orderId
);
OrderDetailsVo
orderDetails
(
String
orderId
);
//去 PHP pay检查 订单状态
ResponseDto
<
Integer
>
checkOrderResult
(
String
orderId
);
//订单未支付数量
//订单未支付数量
ResponseDto
<
Integer
>
orderUnPayCount
();
ResponseDto
<
Integer
>
orderUnPayCount
();
...
@@ -63,15 +49,4 @@ public interface IKylinOrderTicketsService {
...
@@ -63,15 +49,4 @@ public interface IKylinOrderTicketsService {
//退款撤回
//退款撤回
ResponseDto
<
Boolean
>
orderRefundWithdraw
(
String
orderRefundsId
);
ResponseDto
<
Boolean
>
orderRefundWithdraw
(
String
orderRefundsId
);
//退款再次申请
Boolean
orderRefundAgain
(
String
orderRefundsId
);
// 下单接口(无订单->待支付->可支付)
// 删除订单
// 代理票务 可买状态判断
// 取消支付(待支付->订单失效->释放库存->中断倒计时)
// ResponseDto<PayResultVo> order(PayOrderParam payOrderParam, String uid, boolean isMember, int isTrueName, KylinPerformanceVo performanceData, KylinTicketVo ticketData,Object adamEntersList);
}
}
liquidnet-bus-service/liquidnet-service-kylin/liquidnet-service-kylin-impl/lib/taobao-sdk-java-auto_1600401599540-20210607-impl.jar
deleted
100644 → 0
View file @
aaf952c2
File deleted
liquidnet-bus-service/liquidnet-service-kylin/liquidnet-service-kylin-impl/pom.xml
View file @
02899791
...
@@ -33,14 +33,6 @@
...
@@ -33,14 +33,6 @@
<artifactId>
spring-boot-starter-data-mongodb
</artifactId>
<artifactId>
spring-boot-starter-data-mongodb
</artifactId>
</dependency>
</dependency>
<!-- other -->
<!-- other -->
<dependency>
<groupId>
taobao-sdk-impl
</groupId>
<artifactId>
taobao-sdk-impl
</artifactId>
<version>
0.0.2
</version>
<type>
jar
</type>
<scope>
system
</scope>
<systemPath>
${basedir}/lib/taobao-sdk-java-auto_1600401599540-20210607-impl.jar
</systemPath>
</dependency>
<dependency>
<dependency>
<groupId>
com.liquidnet
</groupId>
<groupId>
com.liquidnet
</groupId>
<artifactId>
liquidnet-service-kylin-api
</artifactId>
<artifactId>
liquidnet-service-kylin-api
</artifactId>
...
...
liquidnet-bus-service/liquidnet-service-kylin/liquidnet-service-kylin-impl/src/main/java/com/liquidnet/service/kylin/service/impl/KylinOrderTicketsServiceImpl.java
View file @
02899791
package
com
.
liquidnet
.
service
.
kylin
.
service
.
impl
;
package
com
.
liquidnet
.
service
.
kylin
.
service
.
impl
;
import
com.alibaba.fastjson.JSON
;
import
com.alibaba.fastjson.JSON
;
import
com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper
;
import
com.github.pagehelper.PageInfo
;
import
com.github.pagehelper.PageInfo
;
import
com.liquidnet.common.cache.redis.util.RedisUtil
;
import
com.liquidnet.common.cache.redisson.util.RedisLockUtil
;
import
com.liquidnet.common.mq.constant.MQConst
;
import
com.liquidnet.common.mq.constant.MQConst
;
import
com.liquidnet.commons.lang.util.*
;
import
com.liquidnet.commons.lang.util.CurrentUtil
;
import
com.liquidnet.service.adam.dto.vo.AdamAddressesVo
;
import
com.liquidnet.commons.lang.util.DateUtil
;
import
com.liquidnet.service.adam.dto.vo.AdamEntersVo
;
import
com.liquidnet.commons.lang.util.JsonUtils
;
import
com.liquidnet.service.base.*
;
import
com.liquidnet.service.base.ErrorMapping
;
import
com.liquidnet.service.kylin.constant.KylinRedisConst
;
import
com.liquidnet.service.base.ResponseDto
;
import
com.liquidnet.service.base.SqlMapping
;
import
com.liquidnet.service.base.UserPathDto
;
import
com.liquidnet.service.kylin.constant.KylinTableStatusConst
;
import
com.liquidnet.service.kylin.constant.KylinTableStatusConst
;
import
com.liquidnet.service.kylin.dao.OrderScriptDto
;
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.middle.KylinTicketTimesVo
;
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.middle.KylinTicketVo
;
import
com.liquidnet.service.kylin.dto.vo.middle.message.MessageConfigVo
;
import
com.liquidnet.service.kylin.dto.vo.mongo.KylinOrderRefundEntitiesVo
;
import
com.liquidnet.service.kylin.dto.vo.middle.message.MessageDataVo
;
import
com.liquidnet.service.kylin.dto.vo.mongo.KylinOrderTicketEntitiesVo
;
import
com.liquidnet.service.kylin.dto.vo.mongo.*
;
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.dto.vo.returns.*
;
import
com.liquidnet.service.kylin.entity.*
;
import
com.liquidnet.service.kylin.entity.KylinOrderRefunds
;
import
com.liquidnet.service.kylin.mapper.KylinOrderTicketRelationsMapper
;
import
com.liquidnet.service.kylin.entity.KylinOrderTicketEntities
;
import
com.liquidnet.service.kylin.mapper.KylinOrderTicketStatusMapper
;
import
com.liquidnet.service.kylin.entity.KylinOrderTicketStatus
;
import
com.liquidnet.service.kylin.mapper.KylinOrderTicketsMapper
;
import
com.liquidnet.service.kylin.service.IKylinOrderTicketsService
;
import
com.liquidnet.service.kylin.service.IKylinOrderTicketsService
;
import
com.
baomidou.mybatisplus.extension.service.impl.ServiceImpl
;
import
com.
liquidnet.service.kylin.utils.DataUtils
;
import
com.liquidnet.service.kylin.utils.
*
;
import
com.liquidnet.service.kylin.utils.
MongoVoUtils
;
import
com.mongodb.BasicDBObject
;
import
com.mongodb.BasicDBObject
;
import
com.taobao.api.TaobaoClient
;
import
com.taobao.api.request.AlibabaDamaiMevOpenBatchpushticketRequest
;
import
com.taobao.api.response.AlibabaDamaiMevOpenBatchpushticketResponse
;
import
lombok.extern.slf4j.Slf4j
;
import
lombok.extern.slf4j.Slf4j
;
import
org.apache.commons.lang.StringUtils
;
import
org.apache.commons.lang.StringUtils
;
import
org.apache.commons.lang.time.DateUtils
;
import
org.bson.Document
;
import
org.bson.Document
;
import
org.springframework.amqp.rabbit.core.RabbitTemplate
;
import
org.springframework.amqp.rabbit.core.RabbitTemplate
;
import
org.springframework.beans.BeanUtils
;
import
org.springframework.beans.BeanUtils
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.beans.factory.annotation.Value
;
import
org.springframework.core.env.Environment
;
import
org.springframework.data.mongodb.core.MongoTemplate
;
import
org.springframework.data.mongodb.core.MongoTemplate
;
import
org.springframework.data.mongodb.core.convert.MongoConverter
;
import
org.springframework.data.mongodb.core.query.Criteria
;
import
org.springframework.data.mongodb.core.query.Criteria
;
import
org.springframework.data.mongodb.core.query.Query
;
import
org.springframework.data.mongodb.core.query.Query
;
import
org.springframework.stereotype.Service
;
import
org.springframework.stereotype.Service
;
import
org.springframework.util.LinkedMultiValueMap
;
import
java.math.BigDecimal
;
import
java.math.BigDecimal
;
import
java.time.LocalDateTime
;
import
java.time.LocalDateTime
;
import
java.time.format.DateTimeFormatter
;
import
java.util.*
;
import
java.util.*
;
...
@@ -67,795 +53,17 @@ import java.util.*;
...
@@ -67,795 +53,17 @@ import java.util.*;
@Slf4j
@Slf4j
public
class
KylinOrderTicketsServiceImpl
implements
IKylinOrderTicketsService
{
public
class
KylinOrderTicketsServiceImpl
implements
IKylinOrderTicketsService
{
@Value
(
"${liquidnet.url-pay.pay}"
)
private
String
payUrl
;
@Value
(
"${liquidnet.url-pay.check}"
)
private
String
checkUrl
;
@Value
(
"${liquidnet.url-pay.localUrl}"
)
private
String
synUrl
;
@Autowired
@Autowired
private
DataUtils
dataUtils
;
private
DataUtils
dataUtils
;
@Autowired
@Autowired
private
RedisUtil
redisUtil
;
@Autowired
private
OrderUtils
orderUtils
;
@Autowired
private
OtherUtils
otherUtils
;
@Autowired
private
RedisLockUtil
redisLockUtil
;
@Autowired
private
MongoVoUtils
mongoVoUtils
;
private
MongoVoUtils
mongoVoUtils
;
@Autowired
@Autowired
private
MongoTemplate
mongoTemplate
;
private
MongoTemplate
mongoTemplate
;
@Autowired
@Autowired
private
MongoConverter
mongoConverter
;
@Autowired
private
RabbitTemplate
rabbitTemplate
;
private
RabbitTemplate
rabbitTemplate
;
@Autowired
@Autowired
private
TaobaoTicketUtils
taobaoTicketUtils
;
@Autowired
private
OrderRefundOvertimeServiceImpl
orderRefundsCallbackService
;
@Autowired
private
KylinRefundsStatusServiceImpl
refundsStatusService
;
private
KylinRefundsStatusServiceImpl
refundsStatusService
;
ArrayList
<
Integer
>
canBuyStatus
=
new
ArrayList
()
{{
add
(
6
);
add
(
8
);
add
(
9
);
add
(
10
);
}};
@Override
public
ResponseDto
<
PayResultVo
>
checkCanOrder
(
PayOrderParam
payOrderParam
)
{
Long
currentTime
;
boolean
isDownGeneral
=
false
;
Long
startTime
=
System
.
currentTimeMillis
();
String
uid
=
CurrentUtil
.
getCurrentUid
();
String
lock
=
"userId:"
+
uid
;
// if (!redisLockUtil.tryLock(lock, 1, 5)) {
// return ResponseDto.failure(ErrorMapping.get("20023"));//参数错误
// }
try
{
currentTime
=
System
.
currentTimeMillis
();
KylinPerformanceVo
performanceData
=
dataUtils
.
getPerformanceVo
(
payOrderParam
.
getPerformanceId
());
currentTime
=
System
.
currentTimeMillis
()
-
currentTime
;
log
.
debug
(
"redis 获取演出详情 -> time:"
+
currentTime
+
"毫秒"
);
KylinTicketTimesVo
ticketTimesData
=
null
;
KylinTicketVo
ticketData
=
null
;
for
(
int
x
=
0
;
x
<
performanceData
.
getTicketTimeList
().
size
();
x
++)
{
KylinTicketTimesVo
timeItem
=
performanceData
.
getTicketTimeList
().
get
(
x
);
if
(
timeItem
.
getTimeId
().
equals
(
payOrderParam
.
getTimeId
()))
{
ticketTimesData
=
timeItem
;
for
(
int
y
=
0
;
y
<
ticketTimesData
.
getTicketList
().
size
();
y
++)
{
KylinTicketVo
ticketItem
=
ticketTimesData
.
getTicketList
().
get
(
y
);
if
(
ticketItem
.
getTicketsId
().
equals
(
payOrderParam
.
getTicketId
()))
{
ticketData
=
ticketItem
;
break
;
}
}
break
;
}
}
if
(
performanceData
==
null
||
ticketTimesData
==
null
||
ticketData
==
null
)
{
// redisLockUtil.unlock(lock);
return
ResponseDto
.
failure
(
ErrorMapping
.
get
(
"20004"
));
//参数错误
}
if
(!
ticketData
.
getTimeId
().
equals
(
payOrderParam
.
getTimeId
())
||
!
ticketTimesData
.
getPerformanceId
().
equals
(
payOrderParam
.
getPerformanceId
()))
{
// redisLockUtil.unlock(lock);
return
ResponseDto
.
failure
(
ErrorMapping
.
get
(
"20004"
));
//参数错误
}
if
(
payOrderParam
.
getNumber
()
%
ticketData
.
getCounts
()
!=
0
)
{
// redisLockUtil.unlock(lock);
return
ResponseDto
.
failure
(
ErrorMapping
.
get
(
"20007"
));
//数量错误
}
//判断代理
if
(!
checkAgent
(
payOrderParam
.
getAgentId
(),
ticketData
))
{
// redisLockUtil.unlock(lock);
return
ResponseDto
.
failure
(
ErrorMapping
.
get
(
"20008"
));
//无权购买
}
Integer
isStudent
=
ticketData
.
getIsStudent
();
//会员时间获取
String
memberTimeStart
=
ticketData
.
getMemberTimeStart
();
// 会员开售时间
String
timeStart
=
ticketData
.
getTimeStart
();
// 普通开售时间
String
timeEnd
=
ticketData
.
getTimeEnd
();
// 购票停售时间
String
timeExpressEnd
=
ticketData
.
getTimeEndExpress
();
// 快递停售时间
currentTime
=
System
.
currentTimeMillis
();
boolean
isMember
=
orderUtils
.
isMember
(
uid
);
//feignAdamBaseClient.isMember(uid).getData();//获取是否是会员
currentTime
=
System
.
currentTimeMillis
()
-
currentTime
;
log
.
debug
(
"fegin 会员 -> time:"
+
(
currentTime
)
+
"毫秒"
);
int
memberType
;
//会员状态 不需要判断会员 1判断会员逻辑 2会员专属
if
(
ticketData
.
getIsExclusive
()
==
1
)
{
memberType
=
2
;
if
(!
isMember
)
{
// redisLockUtil.unlock(lock);
return
ResponseDto
.
failure
(
ErrorMapping
.
get
(
"20009"
));
//没有会员权限
}
}
else
{
if
(
DateUtil
.
compareStrDay
(
DateUtil
.
getNowTime
(),
memberTimeStart
)
==
1
&&
DateUtil
.
compareStrDay
(
DateUtil
.
getNowTime
(),
timeStart
)
==
-
1
&&
ticketData
.
getIsMember
()
==
1
)
{
// 会员购买逻辑
memberType
=
1
;
if
(!
isMember
)
{
// redisLockUtil.unlock(lock);
return
ResponseDto
.
failure
(
ErrorMapping
.
get
(
"20009"
));
//没有会员权限
}
}
else
{
// 普通用户购买逻辑
memberType
=
0
;
}
}
// 获取限购 实名
int
ticketLimit
=
ticketData
.
getLimitCount
();
//普通票种限购
int
ticketMemberLimit
=
ticketData
.
getLimitCountMember
();
//会员票种限购
int
performanceLimit
=
performanceData
.
getLimitCount
();
//普通演出限购
int
performanceMemberLimit
=
performanceData
.
getLimitCountMember
();
//会员演出限购
int
isTrueName
=
ticketData
.
getIsTrueName
();
//是否演出实名
if
(!
canBuyStatus
.
contains
(
performanceData
.
getAppStatus
()))
{
redisLockUtil
.
unlock
(
lock
);
return
ResponseDto
.
failure
(
ErrorMapping
.
get
(
"20010"
));
//当前不可购买
}
if
(!
canBuyStatus
.
contains
(
performanceData
.
getAppStatus
()))
{
// redisLockUtil.unlock(lock);
return
ResponseDto
.
failure
(
ErrorMapping
.
get
(
"20010"
));
//当前不可购买
}
//通用判断时间
if
(
isMember
)
{
if
(
DateUtil
.
compareStrDay
(
DateUtil
.
getNowTime
(),
memberTimeStart
)
==
-
1
)
{
// redisLockUtil.unlock(lock);
return
ResponseDto
.
failure
(
ErrorMapping
.
get
(
"20011"
));
//未开始
}
}
else
{
if
(
DateUtil
.
compareStrDay
(
DateUtil
.
getNowTime
(),
timeStart
)
==
-
1
)
{
// redisLockUtil.unlock(lock);
return
ResponseDto
.
failure
(
ErrorMapping
.
get
(
"20011"
));
//未开始
}
}
if
(
DateUtil
.
compareStrDay
(
DateUtil
.
getNowTime
(),
timeEnd
)
==
1
)
{
// redisLockUtil.unlock(lock);
return
ResponseDto
.
failure
(
ErrorMapping
.
get
(
"20012"
));
//已结束
}
//快递票判断
if
(
payOrderParam
.
getIsExpress
()
!=
null
)
{
if
(
payOrderParam
.
getIsExpress
()
==
1
&&
DateUtil
.
compareStrDay
(
DateUtil
.
getNowTime
(),
timeExpressEnd
)
==
1
)
{
// redisLockUtil.unlock(lock);
return
ResponseDto
.
failure
(
ErrorMapping
.
get
(
"20013"
));
//快递票不卖
}
if
(
payOrderParam
.
getIsExpress
()
==
1
&&
payOrderParam
.
getAddressId
().
isEmpty
())
{
// redisLockUtil.unlock(lock);
return
ResponseDto
.
failure
(
ErrorMapping
.
get
(
"20014"
));
//快递票未填写收货地址
}
}
//实名判断
if
(
isTrueName
==
1
&&
payOrderParam
.
getEnterIdList
().
size
()
<=
0
)
{
// redisLockUtil.unlock(lock);
return
ResponseDto
.
failure
(
ErrorMapping
.
get
(
"20015"
));
//需要实名 未实名
}
if
(
isTrueName
==
1
&&
payOrderParam
.
getEnterIdList
().
size
()
!=
payOrderParam
.
getNumber
())
{
// redisLockUtil.unlock(lock);
return
ResponseDto
.
failure
(
ErrorMapping
.
get
(
"20015"
));
//入场人数量错误
}
// 判断库存
currentTime
=
System
.
currentTimeMillis
();
int
surplusGeneral
=
dataUtils
.
changeSurplusGeneral
(
payOrderParam
.
getTicketId
(),
-
payOrderParam
.
getNumber
());
currentTime
=
System
.
currentTimeMillis
()
-
currentTime
;
log
.
debug
(
"redis 获取库存 -> time:"
+
(
currentTime
)
+
"毫秒"
);
if
(
surplusGeneral
<
0
)
{
//库存回滚
currentTime
=
System
.
currentTimeMillis
();
dataUtils
.
changeSurplusGeneral
(
payOrderParam
.
getTicketId
(),
payOrderParam
.
getNumber
());
currentTime
=
System
.
currentTimeMillis
()
-
currentTime
;
log
.
debug
(
"redis 修改库存 售罄 -> time:"
+
(
currentTime
)
+
"毫秒"
);
// redisLockUtil.unlock(lock);
return
ResponseDto
.
failure
(
ErrorMapping
.
get
(
"20016"
));
//没抢到
}
else
{
isDownGeneral
=
true
;
//学生票 判断
List
<
AdamEntersVo
>
entersVoList
=
new
ArrayList
<>();
if
(
isTrueName
==
1
)
{
currentTime
=
System
.
currentTimeMillis
();
for
(
String
enterId
:
payOrderParam
.
getEnterIdList
())
{
AdamEntersVo
adamEnters
=
orderUtils
.
getEnters
(
uid
,
enterId
);
//feignAdamBaseClient.queryEnters(enterId, uid).getData();
entersVoList
.
add
(
adamEnters
);
if
(
isStudent
==
1
)
{
int
age
=
IDCard
.
getAgeByIdCard
(
adamEnters
.
getIdCard
());
if
(
age
>
25
)
{
// redisLockUtil.unlock(lock);
dataUtils
.
changeSurplusGeneral
(
payOrderParam
.
getTicketId
(),
payOrderParam
.
getNumber
());
return
ResponseDto
.
failure
(
ErrorMapping
.
get
(
"20017"
));
//年龄超了
}
}
}
currentTime
=
System
.
currentTimeMillis
()
-
currentTime
;
log
.
debug
(
"获取 feign 入场人 -> time:"
+
(
currentTime
)
+
"毫秒"
);
}
//限购判断 如果实名 则身份证维度限购 如果不实名则数量限购
if
(
entersVoList
.
size
()
>
0
)
{
currentTime
=
System
.
currentTimeMillis
();
for
(
int
i
=
0
;
i
<
entersVoList
.
size
();
i
++)
{
String
res1
=
orderUtils
.
judgeOrderLimit
(
performanceData
.
getType
(),
uid
,
entersVoList
.
get
(
i
).
getIdCard
(),
payOrderParam
.
getPerformanceId
(),
payOrderParam
.
getTicketId
(),
performanceLimit
,
performanceMemberLimit
,
ticketLimit
,
ticketMemberLimit
,
1
,
1
,
memberType
,
isTrueName
);
log
.
debug
(
"redis 判断库存 -> time:"
+
(
currentTime
)
+
"毫秒"
);
if
(!
res1
.
equals
(
""
))
{
// redisLockUtil.unlock(lock);
dataUtils
.
changeSurplusGeneral
(
payOrderParam
.
getTicketId
(),
payOrderParam
.
getNumber
());
return
ResponseDto
.
failure
(
res1
);
//乱七八糟异常
}
}
currentTime
=
System
.
currentTimeMillis
()
-
currentTime
;
}
else
{
log
.
debug
(
"redis 判断库存 -> time:"
+
(
currentTime
)
+
"毫秒"
);
currentTime
=
System
.
currentTimeMillis
();
String
res1
=
orderUtils
.
judgeOrderLimit
(
performanceData
.
getType
(),
uid
,
""
,
payOrderParam
.
getPerformanceId
(),
payOrderParam
.
getTicketId
(),
performanceLimit
,
performanceMemberLimit
,
ticketLimit
,
ticketMemberLimit
,
payOrderParam
.
getNumber
(),
payOrderParam
.
getNumber
(),
memberType
,
isTrueName
);
currentTime
=
System
.
currentTimeMillis
()
-
currentTime
;
if
(!
res1
.
equals
(
""
))
{
// redisLockUtil.unlock(lock);
dataUtils
.
changeSurplusGeneral
(
payOrderParam
.
getTicketId
(),
payOrderParam
.
getNumber
());
return
ResponseDto
.
failure
(
res1
);
//乱七八糟异常
}
currentTime
=
System
.
currentTimeMillis
()
-
currentTime
;
}
ResponseDto
<
PayResultVo
>
resultData
=
order
(
payOrderParam
,
uid
,
isMember
,
isTrueName
,
performanceData
,
ticketData
,
entersVoList
,
isStudent
,
ticketTimesData
,
currentTime
);
// redisLockUtil.unlock(lock);
log
.
debug
(
"总耗时 ->"
+
(
System
.
currentTimeMillis
()
-
startTime
)
+
"毫秒"
);
return
resultData
;
}
}
catch
(
Exception
e
)
{
if
(
isDownGeneral
)
{
currentTime
=
System
.
currentTimeMillis
();
dataUtils
.
changeSurplusGeneral
(
payOrderParam
.
getTicketId
(),
payOrderParam
.
getNumber
());
currentTime
=
System
.
currentTimeMillis
()
-
currentTime
;
log
.
debug
(
"redis 修改库存 异常 -> time:"
+
(
currentTime
)
+
"毫秒"
);
}
e
.
printStackTrace
();
log
.
error
(
"Kylin Order Pay Error = "
+
e
.
getMessage
());
// redisLockUtil.unlock(lock);
return
ResponseDto
.
failure
(
ErrorMapping
.
get
(
"20018"
));
//乱七八糟异常
}
}
private
ResponseDto
<
PayResultVo
>
order
(
PayOrderParam
payOrderParam
,
String
uid
,
boolean
isMember
,
int
isTrueName
,
KylinPerformanceVo
performanceData
,
KylinTicketVo
ticketData
,
List
<
AdamEntersVo
>
entersVoList
,
Integer
isStudent
,
KylinTicketTimesVo
ticketTimesData
,
Long
currentTime
)
{
LinkedList
<
String
>
sqls
=
new
LinkedList
<>();
String
source
=
CurrentUtil
.
getCliSource
()
==
null
?
""
:
CurrentUtil
.
getCliSource
();
String
version
=
CurrentUtil
.
getCliVersion
()
==
null
?
""
:
CurrentUtil
.
getCliVersion
();
LocalDateTime
now
=
LocalDateTime
.
now
();
//生成订单 order_ticket
KylinOrderTickets
orderTickets
=
new
KylinOrderTickets
();
String
orderTicketId
=
IDGenerator
.
nextSnowId
();
orderTickets
.
setOrderTicketsId
(
orderTicketId
);
orderTickets
.
setUserId
(
uid
);
Map
token
=
CurrentUtil
.
getTokenClaims
();
orderTickets
.
setUserName
(
StringUtils
.
defaultString
(((
String
)
token
.
get
(
"nickname"
)),
""
));
orderTickets
.
setUserMobile
(
StringUtils
.
defaultString
(((
String
)
token
.
get
(
"mobile"
)),
""
));
orderTickets
.
setPerformanceTitle
(
performanceData
.
getTitle
());
orderTickets
.
setOrderCode
(
IDGenerator
.
ticketOrderCode
(
orderTicketId
));
orderTickets
.
setPayCode
(
""
);
orderTickets
.
setQrCode
(
""
);
orderTickets
.
setOrderType
(
source
);
orderTickets
.
setOrderVersion
(
version
);
orderTickets
.
setNumber
(
payOrderParam
.
getNumber
());
orderTickets
.
setPrice
(
ticketData
.
getPrice
());
orderTickets
.
setPriceMember
(
ticketData
.
getMemberPrice
());
if
(
isMember
)
{
orderTickets
.
setPriceTotal
(
ticketData
.
getMemberPrice
().
multiply
(
new
BigDecimal
(
payOrderParam
.
getNumber
())).
add
(
payOrderParam
.
getIsExpress
()
==
1
?
ticketData
.
getPriceExpress
()
:
new
BigDecimal
(
"0"
)));
}
else
{
orderTickets
.
setPriceTotal
(
ticketData
.
getPrice
().
multiply
(
new
BigDecimal
(
payOrderParam
.
getNumber
())).
add
(
payOrderParam
.
getIsExpress
()
==
1
?
ticketData
.
getPriceExpress
()
:
new
BigDecimal
(
"0"
)));
}
orderTickets
.
setPriceActual
(
orderTickets
.
getPriceTotal
());
orderTickets
.
setPriceVoucher
(
new
BigDecimal
(
"0.0"
));
orderTickets
.
setPriceExpress
(
ticketData
.
getPriceExpress
());
orderTickets
.
setPriceRefund
(
new
BigDecimal
(
0.0
));
orderTickets
.
setRefundNumber
(
0
);
orderTickets
.
setPayType
(
payOrderParam
.
getPayType
());
orderTickets
.
setPaymentType
(
null
);
orderTickets
.
setTimePay
(
null
);
if
(
payOrderParam
.
getIsExpress
()
==
1
)
{
currentTime
=
System
.
currentTimeMillis
();
AdamAddressesVo
addressesVo
=
orderUtils
.
getAddress
(
uid
,
payOrderParam
.
getAddressId
());
//feignAdamBaseClient.queryAddresses(payOrderParam.getAddressId(), uid).getData();
orderTickets
.
setExpressContacts
(
addressesVo
.
getName
());
orderTickets
.
setExpressAddress
(
addressesVo
.
getProvince
()
+
addressesVo
.
getCity
()
+
addressesVo
.
getCounty
()
+
addressesVo
.
getAddress
());
orderTickets
.
setExpressPhone
(
addressesVo
.
getPhone
());
orderTickets
.
setCity
(
addressesVo
.
getCity
());
orderTickets
.
setProvince
(
addressesVo
.
getProvince
());
orderTickets
.
setCounty
(
addressesVo
.
getCounty
());
orderTickets
.
setGetTicketType
(
"express"
);
currentTime
=
System
.
currentTimeMillis
()
-
currentTime
;
log
.
debug
(
"feign 获取入场人 -> time:"
+
(
currentTime
)
+
"毫秒"
);
}
else
{
orderTickets
.
setExpressContacts
(
""
);
orderTickets
.
setExpressAddress
(
""
);
orderTickets
.
setExpressPhone
(
""
);
orderTickets
.
setCity
(
""
);
orderTickets
.
setProvince
(
""
);
orderTickets
.
setCounty
(
""
);
orderTickets
.
setGetTicketType
(
"electronic"
);
}
orderTickets
.
setCouponType
(
"no"
);
orderTickets
.
setGetTicketDescribe
(
""
);
orderTickets
.
setPayCountdownMinute
(
performanceData
.
getPayCountdownMinute
());
orderTickets
.
setCreatedAt
(
now
);
orderTickets
.
setUpdatedAt
(
null
);
//生成订单 order_ticket_status
KylinOrderTicketStatus
orderTicketStatus
=
new
KylinOrderTicketStatus
();
String
orderTicketStatusId
=
IDGenerator
.
nextSnowId
().
toString
();
orderTicketStatus
.
setOrderTicketStatusId
(
orderTicketStatusId
);
orderTicketStatus
.
setOrderId
(
orderTicketId
);
orderTicketStatus
.
setExpressType
(
payOrderParam
.
getExpressType
());
orderTicketStatus
.
setTransferStatus
(
KylinTableStatusConst
.
ORDER_TRANSFER_STATUS0
);
orderTicketStatus
.
setStatus
(
KylinTableStatusConst
.
ORDER_STATUS0
);
orderTicketStatus
.
setIsStudent
(
isStudent
);
orderTicketStatus
.
setPayStatus
(
KylinTableStatusConst
.
ORDER_PAY_STATUS0
);
orderTicketStatus
.
setCreatedAt
(
now
);
orderTicketStatus
.
setUpdatedAt
(
null
);
sqls
.
add
(
SqlMapping
.
get
(
"kylin_order_ticket_status.add"
));
LinkedList
<
Object
[]>
sqlsDataB
=
new
LinkedList
<
Object
[]>();
sqlsDataB
.
add
(
orderTicketStatus
.
getAddObject
());
//生成订单 order_ticket_relation
KylinOrderTicketRelations
orderTicketRelations
=
new
KylinOrderTicketRelations
();
String
orderTicketRelationId
=
IDGenerator
.
nextSnowId
();
orderTicketRelations
.
setOrderTicketRelationsId
(
orderTicketRelationId
);
orderTicketRelations
.
setOrderId
(
orderTicketId
);
orderTicketRelations
.
setTransferId
(
""
);
orderTicketRelations
.
setLiveId
(
""
);
orderTicketRelations
.
setAgentId
(
payOrderParam
.
getAgentId
());
orderTicketRelations
.
setIsMember
(
isMember
?
1
:
0
);
orderTicketRelations
.
setPerformanceId
(
payOrderParam
.
getPerformanceId
());
orderTicketRelations
.
setTimeId
(
payOrderParam
.
getTimeId
());
orderTicketRelations
.
setTicketId
(
payOrderParam
.
getTicketId
());
orderTicketRelations
.
setCreatedAt
(
now
);
orderTicketRelations
.
setUpdatedAt
(
null
);
sqls
.
add
(
SqlMapping
.
get
(
"kylin_order_ticket_relation.add"
));
LinkedList
<
Object
[]>
sqlsDataC
=
new
LinkedList
<
Object
[]>();
sqlsDataC
.
add
(
orderTicketRelations
.
getAddObject
());
//生成票
KylinOrderTicketEntities
orderTicketEntities
=
new
KylinOrderTicketEntities
();
LinkedList
<
Object
[]>
sqlsDataD
=
null
;
sqlsDataD
=
new
LinkedList
<
Object
[]>();
sqls
.
add
(
SqlMapping
.
get
(
"kylin_order_ticket_entities.add"
));
if
(
isTrueName
==
1
)
{
for
(
AdamEntersVo
enters
:
entersVoList
)
{
String
orderTicketEntitiesId
=
IDGenerator
.
nextSnowId
().
toString
();
orderTicketEntities
.
setOrderTicketEntitiesId
(
orderTicketEntitiesId
);
orderTicketEntities
.
setOrderId
(
orderTicketId
);
orderTicketEntities
.
setTicketId
(
payOrderParam
.
getTicketId
());
orderTicketEntities
.
setUserId
(
uid
);
orderTicketEntities
.
setPerformanceId
(
payOrderParam
.
getPerformanceId
());
orderTicketEntities
.
setTimeId
(
payOrderParam
.
getTimeId
());
orderTicketEntities
.
setEnterType
(
enters
.
getType
());
orderTicketEntities
.
setEnterName
(
enters
.
getName
());
orderTicketEntities
.
setEnterMobile
(
enters
.
getMobile
());
orderTicketEntities
.
setEnterIdCode
(
enters
.
getIdCard
());
orderTicketEntities
.
setStatus
(
KylinTableStatusConst
.
ENTITIES_STATUS0
);
orderTicketEntities
.
setSysDamai
(
ticketData
.
getSysDamai
());
orderTicketEntities
.
setCheckClient
(
""
);
orderTicketEntities
.
setIsPayment
(
KylinTableStatusConst
.
ENTITIES_IS_PAYMENT0
);
orderTicketEntities
.
setRefundPrice
(
BigDecimal
.
valueOf
(
0.0
));
orderTicketEntities
.
setComment
(
""
);
orderTicketEntities
.
setCreatedAt
(
now
);
orderTicketEntities
.
setUpdatedAt
(
null
);
sqlsDataD
.
add
(
orderTicketEntities
.
getAddObject
());
// 生成vo
KylinOrderTicketEntitiesVo
orderTicketEntitiesVo
=
new
KylinOrderTicketEntitiesVo
();
BeanUtils
.
copyProperties
(
orderTicketEntities
,
orderTicketEntitiesVo
);
orderTicketEntitiesVo
.
setPerformanceTitle
(
performanceData
.
getTitle
());
orderTicketEntitiesVo
.
setTicketTitle
(
ticketData
.
getTitle
());
orderTicketEntitiesVo
.
setUseStart
(
ticketData
.
getUseStart
());
orderTicketEntitiesVo
.
setUseEnd
(
ticketData
.
getUseEnd
());
orderTicketEntitiesVo
.
setTicketsmId
(
ticketData
.
getMid
());
orderTicketEntitiesVo
.
setTimemId
(
ticketTimesData
.
getMid
());
orderTicketEntitiesVo
.
setCreatedAt
(
orderTicketEntities
.
getCreatedAt
().
format
(
DateTimeFormatter
.
ofPattern
(
"yyyy-MM-dd HH:mm:ss"
)));
orderTicketEntitiesVo
.
setUpdatedAt
(
null
);
orderTicketEntitiesVo
.
setChangeDate
(
orderTicketEntities
.
getCreatedAt
());
currentTime
=
System
.
currentTimeMillis
();
mongoTemplate
.
insert
(
orderTicketEntitiesVo
,
KylinOrderTicketEntitiesVo
.
class
.
getSimpleName
());
currentTime
=
System
.
currentTimeMillis
()
-
currentTime
;
log
.
debug
(
"mongo 添加入场人 -> time:"
+
(
currentTime
)
+
"毫秒"
);
currentTime
=
System
.
currentTimeMillis
();
dataUtils
.
changeBuyInfo
(
orderTicketEntitiesVo
.
getUserId
(),
orderTicketEntitiesVo
.
getEnterIdCode
(),
orderTicketEntitiesVo
.
getPerformanceId
(),
orderTicketEntitiesVo
.
getTicketId
(),
1
);
currentTime
=
System
.
currentTimeMillis
()
-
currentTime
;
log
.
debug
(
"redis 修改 限购 -> time:"
+
(
currentTime
)
+
"毫秒"
);
}
}
else
{
for
(
int
i
=
0
;
i
<
payOrderParam
.
getNumber
();
i
++)
{
String
orderTicketEntitiesId
=
IDGenerator
.
nextSnowId
().
toString
();
orderTicketEntities
.
setOrderTicketEntitiesId
(
orderTicketEntitiesId
);
orderTicketEntities
.
setOrderId
(
orderTicketId
);
orderTicketEntities
.
setTicketId
(
payOrderParam
.
getTicketId
());
orderTicketEntities
.
setUserId
(
uid
);
orderTicketEntities
.
setPerformanceId
(
payOrderParam
.
getPerformanceId
());
orderTicketEntities
.
setTimeId
(
payOrderParam
.
getTimeId
());
orderTicketEntities
.
setEnterType
(
0
);
orderTicketEntities
.
setEnterName
(
""
);
orderTicketEntities
.
setEnterMobile
(
""
);
orderTicketEntities
.
setEnterIdCode
(
""
);
orderTicketEntities
.
setStatus
(
KylinTableStatusConst
.
ENTITIES_STATUS0
);
orderTicketEntities
.
setSysDamai
(
ticketData
.
getSysDamai
());
orderTicketEntities
.
setCheckClient
(
""
);
orderTicketEntities
.
setIsPayment
(
KylinTableStatusConst
.
ENTITIES_IS_PAYMENT0
);
orderTicketEntities
.
setComment
(
""
);
orderTicketEntities
.
setCreatedAt
(
now
);
orderTicketEntities
.
setUpdatedAt
(
null
);
sqlsDataD
.
add
(
orderTicketEntities
.
getAddObject
());
// 生成vo
KylinOrderTicketEntitiesVo
orderTicketEntitiesVo
=
new
KylinOrderTicketEntitiesVo
();
BeanUtils
.
copyProperties
(
orderTicketEntities
,
orderTicketEntitiesVo
);
orderTicketEntitiesVo
.
setPerformanceTitle
(
performanceData
.
getTitle
());
orderTicketEntitiesVo
.
setTicketTitle
(
ticketData
.
getTitle
());
orderTicketEntitiesVo
.
setUseStart
(
ticketData
.
getUseStart
());
orderTicketEntitiesVo
.
setUseEnd
(
ticketData
.
getUseEnd
());
orderTicketEntitiesVo
.
setTicketsmId
(
ticketData
.
getMid
());
orderTicketEntitiesVo
.
setTimemId
(
ticketTimesData
.
getMid
());
orderTicketEntitiesVo
.
setCreatedAt
(
orderTicketEntities
.
getCreatedAt
().
format
(
DateTimeFormatter
.
ofPattern
(
"yyyy-MM-dd HH:mm:ss"
)));
orderTicketEntitiesVo
.
setUpdatedAt
(
null
);
orderTicketEntitiesVo
.
setChangeDate
(
orderTicketEntities
.
getCreatedAt
());
currentTime
=
System
.
currentTimeMillis
();
mongoTemplate
.
insert
(
orderTicketEntitiesVo
,
KylinOrderTicketEntitiesVo
.
class
.
getSimpleName
());
currentTime
=
System
.
currentTimeMillis
()
-
currentTime
;
log
.
debug
(
"mongo 添加入场人 -> time:"
+
(
currentTime
)
+
"毫秒"
);
currentTime
=
System
.
currentTimeMillis
();
dataUtils
.
changeBuyInfo
(
orderTicketEntitiesVo
.
getUserId
(),
orderTicketEntitiesVo
.
getEnterIdCode
(),
orderTicketEntitiesVo
.
getPerformanceId
(),
orderTicketEntitiesVo
.
getTicketId
(),
1
);
currentTime
=
System
.
currentTimeMillis
()
-
currentTime
;
log
.
debug
(
"redis 修改限购 -> time:"
+
(
currentTime
)
+
"毫秒"
);
}
}
// 调用支付
String
time1
=
DateUtil
.
format
(
DateUtil
.
Formatter
.
yyyyMMddHHmmss
.
parse
(
ticketData
.
getUseStart
()),
DateUtil
.
Formatter
.
MM_dd_zh
);
String
time2
=
DateUtil
.
format
(
DateUtil
.
Formatter
.
yyyyMMddHHmmss
.
parse
(
ticketData
.
getUseEnd
()),
DateUtil
.
Formatter
.
MM_dd_zh
);
String
useTime
=
ticketData
.
getType
()
==
2
?
time1
+
"~"
+
time2
:
time2
;
LinkedMultiValueMap
<
String
,
String
>
httpData
=
new
LinkedMultiValueMap
<
String
,
String
>();
httpData
.
add
(
"type"
,
"TICKET"
);
httpData
.
add
(
"price"
,
orderTickets
.
getPriceActual
().
toString
());
httpData
.
add
(
"name"
,
useTime
+
ticketData
.
getTitle
()
+
"-"
+
performanceData
.
getTitle
());
httpData
.
add
(
"detail"
,
performanceData
.
getTitle
()
+
"-"
+
ticketData
.
getTitle
()
+
"-"
+
useTime
);
httpData
.
add
(
"order_code"
,
orderTickets
.
getOrderCode
());
httpData
.
add
(
"client_ip"
,
CurrentUtil
.
getCliIpAddr
());
httpData
.
add
(
"notify_url"
,
synUrl
);
httpData
.
add
(
"create_date"
,
orderTickets
.
getCreatedAt
().
format
(
DateTimeFormatter
.
ofPattern
(
"yyyy-MM-dd HH:mm:ss"
)));
httpData
.
add
(
"expire_time"
,
(
orderTickets
.
getPayCountdownMinute
())
+
""
);
if
(
payOrderParam
.
getDeviceFrom
().
equals
(
"js"
)
||
payOrderParam
.
getDeviceFrom
().
equals
(
"applet"
))
{
httpData
.
add
(
"open_id"
,
payOrderParam
.
getOpenId
());
}
if
(
payOrderParam
.
getPayType
().
equals
(
"alipay"
)
&&
payOrderParam
.
getDeviceFrom
().
equals
(
"wap"
))
{
httpData
.
add
(
"show_url"
,
payOrderParam
.
getShowUrl
()
+
orderTicketId
);
httpData
.
add
(
"return_url"
,
payOrderParam
.
getReturnUrl
()
+
orderTicketId
);
}
currentTime
=
System
.
currentTimeMillis
();
String
returnData
=
HttpUtil
.
post
(
payUrl
+
payOrderParam
.
getDeviceFrom
()
+
"/"
+
payOrderParam
.
getPayType
(),
httpData
);
currentTime
=
System
.
currentTimeMillis
()
-
currentTime
;
log
.
debug
(
"调用 PHP 支付 -> time:"
+
(
currentTime
)
+
"毫秒"
);
PayResultVo
payResultVo
=
JsonUtils
.
fromJson
(
returnData
,
PayResultVo
.
class
);
payResultVo
.
setOrder_id
(
orderTicketId
);
payResultVo
.
setPrice
(
orderTickets
.
getPriceActual
());
orderTickets
.
setPayCode
(
payResultVo
.
getCode
());
sqls
.
add
(
SqlMapping
.
get
(
"kylin_order_ticket.add"
));
LinkedList
<
Object
[]>
sqlsDataA
=
new
LinkedList
<>();
sqlsDataA
.
add
(
orderTickets
.
getAddObject
());
if
(
payOrderParam
.
getPayType
().
equals
(
"alipay"
)
&&
payOrderParam
.
getDeviceFrom
().
equals
(
"wap"
))
{
payResultVo
.
setShowUrl
(
payOrderParam
.
getShowUrl
()
+
orderTicketId
);
payResultVo
.
setReturnUrl
(
payOrderParam
.
getReturnUrl
()
+
orderTicketId
);
}
// 生成vo
KylinOrderTicketVo
orderTicketVo
=
new
KylinOrderTicketVo
();
orderTicketVo
.
setOrderTicket
(
orderTickets
);
orderTicketVo
.
setOrderTicketStatus
(
orderTicketStatus
);
orderTicketVo
.
setOrderTicketRelation
(
orderTicketRelations
);
orderTicketVo
.
setPerformanceImg
(
performanceData
.
getImgPoster
());
orderTicketVo
.
setTicketTitle
(
ticketData
.
getTitle
());
orderTicketVo
.
setUseStart
(
ticketData
.
getUseStart
());
orderTicketVo
.
setTimeStart
(
performanceData
.
getTimeStart
());
orderTicketVo
.
setOverdueAt
(
orderTickets
.
getCreatedAt
().
plusMinutes
(
performanceData
.
getPayCountdownMinute
()).
format
(
DateTimeFormatter
.
ofPattern
(
"yyyy-MM-dd HH:mm:ss"
)));
orderTicketVo
.
setCreatedAt
(
orderTickets
.
getCreatedAt
().
format
(
DateTimeFormatter
.
ofPattern
(
"yyyy-MM-dd HH:mm:ss"
)));
orderTicketVo
.
setChangeDate
(
orderTickets
.
getCreatedAt
());
currentTime
=
System
.
currentTimeMillis
();
mongoTemplate
.
insert
(
orderTicketVo
,
KylinOrderTicketVo
.
class
.
getSimpleName
());
currentTime
=
System
.
currentTimeMillis
()
-
currentTime
;
log
.
debug
(
"mongo 添加 订单 -> time:"
+
(
currentTime
)
+
"毫秒"
);
currentTime
=
System
.
currentTimeMillis
();
mongoVoUtils
.
resetOrderListVo
(
uid
,
1
,
orderTicketVo
.
getOrderTicketsId
(),
orderTicketVo
);
currentTime
=
System
.
currentTimeMillis
()
-
currentTime
;
log
.
debug
(
"redis 修改订单列表 -> time:"
+
(
currentTime
)
+
"毫秒"
);
// 执行sql
String
sqlData
=
SqlMapping
.
gets
(
sqls
,
sqlsDataB
,
sqlsDataC
,
sqlsDataD
,
sqlsDataA
);
currentTime
=
System
.
currentTimeMillis
();
rabbitTemplate
.
convertAndSend
(
MQConst
.
EXCHANGES_LIQUIDNET_SQL_ORDER_CREADE
,
MQConst
.
ROUTING_KEY_SQL_ORDER_CREATE
,
sqlData
);
currentTime
=
System
.
currentTimeMillis
()
-
currentTime
;
log
.
debug
(
"MQ 发送 -> time:"
+
(
currentTime
)
+
"毫秒"
);
log
.
info
(
UserPathDto
.
setData
(
"下单(唤起支付)"
,
payOrderParam
,
payResultVo
));
return
ResponseDto
.
success
(
payResultVo
);
}
@Override
public
ResponseDto
<
PayResultVo
>
payAgain
(
PayAgainParam
payAgainParam
)
{
try
{
String
uid
=
CurrentUtil
.
getCurrentUid
();
// checkOrderTime(uid);
//检查订单时间 是否关闭
KylinOrderTicketVo
orderTicketData
=
dataUtils
.
getOrderTicketVo
(
payAgainParam
.
getOrderId
());
if
(!
orderTicketData
.
getUserId
().
equals
(
uid
))
{
return
null
;
}
if
(
orderTicketData
==
null
)
{
return
ResponseDto
.
failure
(
ErrorMapping
.
get
(
"20024"
));
}
if
(
orderTicketData
.
getStatus
()
==
KylinTableStatusConst
.
ORDER_STATUS1
)
{
return
ResponseDto
.
failure
(
ErrorMapping
.
get
(
"20025"
));
}
else
{
if
(
orderTicketData
.
getStatus
()
!=
KylinTableStatusConst
.
ORDER_STATUS0
)
{
return
ResponseDto
.
failure
(
ErrorMapping
.
get
(
"20026"
));
}
}
String
returnCheckData
=
HttpUtil
.
get
(
checkUrl
+
"?code="
+
orderTicketData
.
getPayCode
(),
null
);
PayResultVo
checkVo
=
JsonUtils
.
fromJson
(
returnCheckData
,
PayResultVo
.
class
);
if
(
checkVo
.
getStatus
()
==
1
)
{
return
ResponseDto
.
failure
(
ErrorMapping
.
get
(
"20027"
));
}
if
(!
orderTicketData
.
getPayType
().
equals
(
"no"
))
{
if
(
orderTicketData
.
getEntitiesVoList
().
size
()
==
0
)
{
return
ResponseDto
.
failure
(
ErrorMapping
.
get
(
"20004"
));
}
KylinOrderTicketEntitiesVo
entitiesData
=
orderTicketData
.
getEntitiesVoList
().
get
(
0
);
LinkedMultiValueMap
<
String
,
String
>
httpData
=
new
LinkedMultiValueMap
<
String
,
String
>();
httpData
.
add
(
"type"
,
"TICKET"
);
httpData
.
add
(
"price"
,
orderTicketData
.
getPriceActual
().
toString
());
httpData
.
add
(
"name"
,
entitiesData
.
getUseStart
()
+
""
+
entitiesData
.
getPerformanceTitle
());
httpData
.
add
(
"detail"
,
entitiesData
.
getPerformanceTitle
()
+
"-"
+
entitiesData
.
getTicketTitle
()
+
"-"
+
entitiesData
.
getUseStart
());
httpData
.
add
(
"order_code"
,
orderTicketData
.
getOrderCode
());
httpData
.
add
(
"client_ip"
,
CurrentUtil
.
getCliIpAddr
());
httpData
.
add
(
"notify_url"
,
synUrl
);
httpData
.
add
(
"create_date"
,
orderTicketData
.
getCreatedAt
());
httpData
.
add
(
"expire_time"
,
orderTicketData
.
getPayCountdownMinute
().
toString
());
httpData
.
add
(
"open_id"
,
payAgainParam
.
getOpenId
());
if
(
payAgainParam
.
getPayType
().
equals
(
"alipay"
)
&&
payAgainParam
.
getDeviceFrom
().
equals
(
"wap"
))
{
httpData
.
add
(
"show_url"
,
payAgainParam
.
getShowUrl
()
+
payAgainParam
.
getOrderId
());
httpData
.
add
(
"return_url"
,
payAgainParam
.
getReturnUrl
()
+
payAgainParam
.
getOrderId
());
}
String
returnData
=
HttpUtil
.
post
(
payUrl
+
payAgainParam
.
getDeviceFrom
()
+
"/"
+
payAgainParam
.
getPayType
(),
httpData
);
PayResultVo
payResultVo
=
JsonUtils
.
fromJson
(
returnData
,
PayResultVo
.
class
);
payResultVo
.
setOrder_id
(
orderTicketData
.
getOrderTicketsId
());
payResultVo
.
setPrice
(
orderTicketData
.
getPriceActual
());
if
(
payAgainParam
.
getPayType
().
equals
(
"alipay"
)
&&
payAgainParam
.
getDeviceFrom
().
equals
(
"wap"
))
{
payResultVo
.
setShowUrl
(
payAgainParam
.
getShowUrl
());
payResultVo
.
setReturnUrl
(
payAgainParam
.
getReturnUrl
());
}
KylinOrderTickets
orderTickets
=
new
KylinOrderTickets
();
orderTickets
.
setOrderTicketsId
(
payAgainParam
.
getOrderId
());
orderTickets
.
setUpdatedAt
(
LocalDateTime
.
now
());
orderTickets
.
setPayCode
(
payResultVo
.
getCode
());
orderTickets
.
setPayType
(
payAgainParam
.
getPayType
());
//改vo
HashMap
<
String
,
Object
>
map
=
new
HashMap
<>();
map
.
put
(
"payType"
,
payAgainParam
.
getPayType
());
map
.
put
(
"payCode"
,
payResultVo
.
getCode
());
map
.
put
(
"updatedAt"
,
DateUtil
.
Formatter
.
yyyyMMddHHmmss
.
format
(
orderTickets
.
getUpdatedAt
()));
map
.
put
(
"changeDate"
,
orderTickets
.
getUpdatedAt
());
mongoTemplate
.
getCollection
(
KylinOrderTicketVo
.
class
.
getSimpleName
()).
updateOne
(
Query
.
query
(
Criteria
.
where
(
"orderTicketsId"
).
is
(
payAgainParam
.
getOrderId
())).
getQueryObject
(),
new
BasicDBObject
(
"$set"
,
mongoConverter
.
convertToMongoType
(
map
))
);
LocalDateTime
strTime
=
orderTicketData
.
getChangeDate
();
dataUtils
.
delOrderTicketRedis
(
orderTickets
.
getOrderTicketsId
());
LinkedList
<
String
>
sqls
=
new
LinkedList
<>();
sqls
.
add
(
SqlMapping
.
get
(
"kylin_order_ticket.payAgain"
));
LinkedList
<
Object
[]>
sqlsDataA
=
new
LinkedList
<>();
sqlsDataA
.
add
(
orderTickets
.
getPayAgainObject
(
strTime
,
strTime
));
sqls
.
add
(
SqlMapping
.
get
(
"kylin_order_ticket_status.payAgain"
));
LinkedList
<
Object
[]>
sqlsDataB
=
new
LinkedList
<>();
sqlsDataB
.
add
(
new
Object
[]{
orderTickets
.
getUpdatedAt
(),
orderTickets
.
getOrderTicketsId
(),
strTime
,
strTime
});
sqls
.
add
(
SqlMapping
.
get
(
"kylin_order_ticket_relation.payAgain"
));
LinkedList
<
Object
[]>
sqlsDataC
=
new
LinkedList
<>();
sqlsDataC
.
add
(
new
Object
[]{
orderTickets
.
getUpdatedAt
(),
orderTickets
.
getOrderTicketsId
(),
strTime
,
strTime
});
sqls
.
add
(
SqlMapping
.
get
(
"kylin_order_ticket_entities.payAgain"
));
LinkedList
<
Object
[]>
sqlsDataD
=
new
LinkedList
<>();
sqlsDataD
.
add
(
new
Object
[]{
orderTickets
.
getUpdatedAt
(),
orderTickets
.
getOrderTicketsId
(),
strTime
,
strTime
});
String
sqlData
=
SqlMapping
.
gets
(
sqls
,
sqlsDataA
,
sqlsDataB
,
sqlsDataC
,
sqlsDataD
);
rabbitTemplate
.
convertAndSend
(
MQConst
.
EXCHANGES_LIQUIDNET_SQL_ORDER_AGAIN
,
MQConst
.
ROUTING_KEY_SQL_ORDER_AGAIN
,
sqlData
);
log
.
info
(
UserPathDto
.
setData
(
"再次支付"
,
payAgainParam
,
payResultVo
));
return
ResponseDto
.
success
(
payResultVo
);
}
return
ResponseDto
.
failure
(
ErrorMapping
.
get
(
"20029"
));
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
return
ResponseDto
.
failure
(
ErrorMapping
.
get
(
"20028"
));
}
}
@Override
public
String
syncOrder
(
SyncOrderParam
syncOrderParam
)
{
try
{
//支付时间
LocalDateTime
now
=
LocalDateTime
.
now
();
String
lock
=
"order_lock:"
+
syncOrderParam
.
getOrder_code
();
if
(!
redisLockUtil
.
tryLock
(
lock
,
1
,
5
))
{
return
"fail"
;
//参数错误
}
String
timePay
=
DateUtil
.
Formatter
.
yyyyMMddHHmmss
.
format
(
now
);
KylinOrderTicketVo
orderTicketData
=
mongoTemplate
.
findOne
(
Query
.
query
(
Criteria
.
where
(
"orderCode"
).
is
(
syncOrderParam
.
getOrder_code
())),
KylinOrderTicketVo
.
class
,
KylinOrderTicketVo
.
class
.
getSimpleName
());
if
(
orderTicketData
==
null
)
{
redisLockUtil
.
unlock
(
lock
);
return
"fail"
;
//订单不存在
}
if
(
orderTicketData
.
getStatus
()
!=
KylinTableStatusConst
.
ORDER_STATUS0
)
{
if
(
orderTicketData
.
getPayCode
().
equals
(
syncOrderParam
.
getCode
())
&&
orderTicketData
.
getStatus
()
==
KylinTableStatusConst
.
ORDER_STATUS1
)
{
redisLockUtil
.
unlock
(
lock
);
return
"success"
;
//已经支付
}
if
(!
orderTicketData
.
getPayCode
().
equals
(
syncOrderParam
.
getCode
()))
{
redisLockUtil
.
unlock
(
lock
);
return
"fail"
;
//重复支付
}
}
if
(
orderTicketData
.
getPriceActual
().
compareTo
(
syncOrderParam
.
getPrice
())
!=
0
)
{
redisLockUtil
.
unlock
(
lock
);
return
"fail"
;
//价格不符
}
LinkedList
<
String
>
sqls
=
new
LinkedList
<>();
LinkedList
<
Object
[]>
sqlsDataA
=
new
LinkedList
<>();
LinkedList
<
Object
[]>
sqlsDataB
=
new
LinkedList
<>();
LinkedList
<
Object
[]>
sqlsDataC
=
new
LinkedList
<>();
LinkedList
<
Object
[]>
sqlsDataD
=
new
LinkedList
<>();
LocalDateTime
strTime
=
orderTicketData
.
getChangeDate
();
KylinOrderTickets
orderTickets
=
new
KylinOrderTickets
();
KylinOrderTicketStatus
orderTicketStatus
=
new
KylinOrderTicketStatus
();
KylinOrderTicketEntities
orderTicketEntities
=
new
KylinOrderTicketEntities
();
if
(
orderTicketData
.
getStatus
()
==
2
)
{
mongoVoUtils
.
resetOrderListVo
(
orderTicketData
.
getUserId
(),
2
,
orderTicketData
.
getOrderTicketsId
(),
null
);
log
.
error
(
"订单号位 {} 的订单超时支付"
,
syncOrderParam
.
getOrder_code
());
orderRefundsCallbackService
.
refundApply
(
orderTicketData
.
getOrderTicketsId
());
}
else
if
(
orderTicketData
.
getStatus
()
==
3
||
orderTicketData
.
getStatus
()
==
4
)
{
log
.
error
(
"订单号位 {} 的订单正在退款 或者已退款"
,
syncOrderParam
.
getOrder_code
());
}
else
{
orderTickets
.
setOrderTicketsId
(
orderTicketData
.
getOrderTicketsId
());
orderTickets
.
setPaymentType
(
syncOrderParam
.
getPayment_type
());
orderTickets
.
setPayCode
(
syncOrderParam
.
getCode
());
orderTickets
.
setTimePay
(
timePay
);
orderTickets
.
setQrCode
(
IDGenerator
.
ticketQrCode
(
orderTicketData
.
getOrderTicketsId
()));
orderTickets
.
setUpdatedAt
(
now
);
sqls
.
add
(
SqlMapping
.
get
(
"kylin_order_ticket.synPay"
));
sqlsDataA
.
add
(
orderTickets
.
getSynOrderObject
(
strTime
,
strTime
));
orderTicketStatus
.
setOrderId
(
orderTicketData
.
getOrderTicketsId
());
orderTicketStatus
.
setStatus
(
KylinTableStatusConst
.
ORDER_STATUS1
);
orderTicketStatus
.
setPayStatus
(
syncOrderParam
.
getStatus
());
orderTicketStatus
.
setUpdatedAt
(
orderTickets
.
getUpdatedAt
());
sqls
.
add
(
SqlMapping
.
get
(
"kylin_order_ticket_status.synPay"
));
sqlsDataB
.
add
(
orderTicketStatus
.
getSynOrderObject
(
strTime
,
strTime
));
sqls
.
add
(
SqlMapping
.
get
(
"kylin_order_ticket_relation.synPay"
));
sqlsDataC
.
add
(
new
Object
[]{
orderTickets
.
getUpdatedAt
(),
orderTickets
.
getOrderTicketsId
(),
strTime
,
strTime
});
orderTicketEntities
.
setOrderId
(
orderTicketData
.
getOrderTicketsId
());
orderTicketEntities
.
setIsPayment
(
KylinTableStatusConst
.
ENTITIES_IS_PAYMENT1
);
orderTicketEntities
.
setUpdatedAt
(
orderTickets
.
getUpdatedAt
());
sqls
.
add
(
SqlMapping
.
get
(
"kylin_order_ticket_entities.synPay"
));
sqlsDataD
.
add
(
orderTicketEntities
.
getSynOrderObject
(
strTime
,
strTime
));
//vo
HashMap
<
String
,
Object
>
orderTicketVo
=
new
HashMap
<>();
orderTicketVo
.
put
(
"paymentType"
,
orderTickets
.
getPaymentType
());
orderTicketVo
.
put
(
"payCode"
,
orderTickets
.
getPayCode
());
orderTicketVo
.
put
(
"timePay"
,
orderTickets
.
getTimePay
());
orderTicketVo
.
put
(
"qrCode"
,
orderTickets
.
getQrCode
());
orderTicketVo
.
put
(
"status"
,
KylinTableStatusConst
.
ORDER_STATUS1
);
orderTicketVo
.
put
(
"payStatus"
,
orderTicketStatus
.
getStatus
());
orderTicketVo
.
put
(
"updatedAt"
,
timePay
);
orderTicketVo
.
put
(
"changeDate"
,
now
);
mongoTemplate
.
getCollection
(
KylinOrderTicketVo
.
class
.
getSimpleName
()).
updateOne
(
Query
.
query
(
Criteria
.
where
(
"orderTicketsId"
).
is
(
orderTickets
.
getOrderTicketsId
())).
getQueryObject
(),
new
BasicDBObject
(
"$set"
,
mongoConverter
.
convertToMongoType
(
orderTicketVo
))
);
HashMap
<
String
,
Object
>
orderTicketEntitiesVo
=
new
HashMap
<>();
orderTicketEntitiesVo
.
put
(
"isPayment"
,
KylinTableStatusConst
.
ENTITIES_IS_PAYMENT1
);
orderTicketEntitiesVo
.
put
(
"updatedAt"
,
timePay
);
orderTicketEntitiesVo
.
put
(
"changeDate"
,
now
);
mongoTemplate
.
getCollection
(
KylinOrderTicketEntitiesVo
.
class
.
getSimpleName
()).
updateMany
(
Query
.
query
(
Criteria
.
where
(
"orderId"
).
is
(
orderTicketData
.
getOrderTicketsId
())).
getQueryObject
(),
new
BasicDBObject
(
"$set"
,
mongoConverter
.
convertToMongoType
(
orderTicketEntitiesVo
))
);
rabbitTemplate
.
convertAndSend
(
MQConst
.
EXCHANGES_LIQUIDNET_SQL_ORDER_PAY
,
MQConst
.
ROUTING_KEY_SQL_ORDER_PAY
,
SqlMapping
.
gets
(
sqls
,
sqlsDataA
,
sqlsDataB
,
sqlsDataC
,
sqlsDataD
));
//生成vo redis
dataUtils
.
delOrderTicketRedis
(
orderTickets
.
getOrderTicketsId
());
mongoVoUtils
.
resetOrderListVo
(
orderTicketData
.
getUserId
(),
2
,
orderTicketData
.
getOrderTicketsId
(),
null
);
// 发短信
KylinPerformanceVo
performanceData
=
dataUtils
.
getPerformanceVo
(
orderTicketData
.
getPerformanceId
());
KylinTicketTimesVo
ticketTimesData
=
null
;
KylinTicketVo
ticketData
=
null
;
for
(
int
x
=
0
;
x
<
performanceData
.
getTicketTimeList
().
size
();
x
++)
{
KylinTicketTimesVo
timeItem
=
performanceData
.
getTicketTimeList
().
get
(
x
);
if
(
timeItem
.
getTimeId
().
equals
(
orderTicketData
.
getTimeId
()))
{
ticketTimesData
=
timeItem
;
for
(
int
y
=
0
;
y
<
ticketTimesData
.
getTicketList
().
size
();
y
++)
{
KylinTicketVo
ticketItem
=
ticketTimesData
.
getTicketList
().
get
(
y
);
if
(
ticketItem
.
getTicketsId
().
equals
(
orderTicketData
.
getTicketId
()))
{
ticketData
=
ticketItem
;
break
;
}
}
break
;
}
}
MessageDataVo
dataVo
=
new
MessageDataVo
();
dataVo
.
setName
(
orderTicketData
.
getPerformanceTitle
());
String
time1
=
DateUtil
.
format
(
DateUtil
.
Formatter
.
yyyyMMddHHmmss
.
parse
(
ticketData
.
getUseStart
()),
DateUtil
.
Formatter
.
yyyy_MM_dd
);
String
time2
=
DateUtil
.
format
(
DateUtil
.
Formatter
.
yyyyMMddHHmmss
.
parse
(
performanceData
.
getTimeStart
()),
DateUtil
.
Formatter
.
HHmm
);
dataVo
.
setTime
(
time1
+
" "
+
time2
);
MessageConfigVo
configVo
=
new
MessageConfigVo
();
configVo
.
setStatus
(
true
);
if
(
orderTicketData
.
getGetTicketType
().
equals
(
"express"
))
{
configVo
.
setId
(
"SMS_181490473"
);
}
else
if
(
orderTicketData
.
getGetTicketType
().
equals
(
"electronic"
))
{
configVo
.
setId
(
ticketData
.
getIsShowCode
()
==
1
?
"SMS_171358560"
:
"SMS_181500419"
);
}
// otherUtils.sendMessage(orderTicketData.getUserMobile(), dataVo, configVo, 1);
// 大麦回调
sycDamaiOrder
(
orderTickets
.
getOrderTicketsId
());
}
redisLockUtil
.
unlock
(
lock
);
log
.
info
(
UserPathDto
.
setData
(
"订单支付成功回调"
,
syncOrderParam
,
""
));
return
"success"
;
}
catch
(
Exception
e
)
{
log
.
error
(
"SYNCE ORDER E = "
+
e
.
getMessage
());
e
.
printStackTrace
();
return
"fail"
;
}
}
@Override
@Override
public
PageInfo
<
List
<
KylinOrderListVo
>>
orderList
()
{
public
PageInfo
<
List
<
KylinOrderListVo
>>
orderList
()
{
//TODO 缺快递
//TODO 缺快递
...
@@ -1037,26 +245,6 @@ public class KylinOrderTicketsServiceImpl implements IKylinOrderTicketsService {
...
@@ -1037,26 +245,6 @@ public class KylinOrderTicketsServiceImpl implements IKylinOrderTicketsService {
}
}
}
}
@Override
public
ResponseDto
<
Integer
>
checkOrderResult
(
String
orderId
)
{
String
uid
=
CurrentUtil
.
getCurrentUid
();
KylinOrderTicketVo
orderTicketData
=
dataUtils
.
getOrderTicketVo
(
orderId
);
if
(!
orderTicketData
.
getUserId
().
equals
(
uid
))
{
return
null
;
}
if
(
orderTicketData
==
null
)
{
return
ResponseDto
.
failure
(
ErrorMapping
.
get
(
"20024"
));
}
else
{
String
returnCheckData
=
HttpUtil
.
get
(
checkUrl
+
"?code="
+
orderTicketData
.
getPayCode
(),
null
);
PayResultVo
checkVo
=
JsonUtils
.
fromJson
(
returnCheckData
,
PayResultVo
.
class
);
if
(
checkVo
.
getStatus
()
==
1
)
{
return
ResponseDto
.
success
(
1
);
}
else
{
return
ResponseDto
.
success
(
0
);
}
}
}
@Override
@Override
public
ResponseDto
<
Integer
>
orderUnPayCount
()
{
public
ResponseDto
<
Integer
>
orderUnPayCount
()
{
String
uid
=
CurrentUtil
.
getCurrentUid
();
String
uid
=
CurrentUtil
.
getCurrentUid
();
...
@@ -1354,120 +542,4 @@ public class KylinOrderTicketsServiceImpl implements IKylinOrderTicketsService {
...
@@ -1354,120 +542,4 @@ public class KylinOrderTicketsServiceImpl implements IKylinOrderTicketsService {
}
}
}
}
@Override
public
Boolean
orderRefundAgain
(
String
orderRefundsId
)
{
LocalDateTime
time
=
LocalDateTime
.
now
();
String
strTime
=
DateUtil
.
Formatter
.
yyyyMMddHHmmss
.
format
(
time
);
String
uid
=
CurrentUtil
.
getCurrentUid
();
KylinOrderRefundsVo
orderRefundVo
=
dataUtils
.
getOrderRefundVo
(
orderRefundsId
);
// 订单状态表 MQ
KylinOrderTicketStatus
orderStatusTable
=
new
KylinOrderTicketStatus
();
orderStatusTable
.
setStatus
(
KylinTableStatusConst
.
ORDER_STATUS3
);
orderStatusTable
.
setUpdatedAt
(
time
);
// 订单入场人表 MQ
KylinOrderTicketEntities
entitiesTable
=
new
KylinOrderTicketEntities
();
entitiesTable
.
setIsPayment
(
KylinTableStatusConst
.
ENTITIES_IS_PAYMENT2
);
entitiesTable
.
setUpdatedAt
(
time
);
// 订单退款表
KylinOrderRefunds
orderRefunds
=
new
KylinOrderRefunds
();
orderRefunds
.
setUpdatedAt
(
time
);
orderRefunds
.
setApplicantAt
(
time
);
orderRefunds
.
setStatus
(
KylinTableStatusConst
.
ORDER_REFUND_STATUS_APPLY
);
//订单状态表 MONGO
KylinOrderTicketVo
kylinOrderTicketVo
=
new
KylinOrderTicketVo
();
kylinOrderTicketVo
.
setStatus
(
KylinTableStatusConst
.
ORDER_STATUS3
);
kylinOrderTicketVo
.
setUpdatedAt
(
DateUtil
.
Formatter
.
yyyyMMddHHmmss
.
format
(
time
));
BasicDBObject
orderObject
=
new
BasicDBObject
(
"$set"
,
JSON
.
parse
(
JsonUtils
.
toJson
(
kylinOrderTicketVo
)));
mongoTemplate
.
getCollection
(
KylinOrderTicketVo
.
class
.
getSimpleName
()).
updateOne
(
Query
.
query
(
Criteria
.
where
(
"orderTicketsId"
).
is
(
orderRefundVo
.
getOrderTicketsId
())).
getQueryObject
(),
orderObject
);
dataUtils
.
delOrderTicketRedis
(
orderRefundVo
.
getOrderTicketsId
());
mongoVoUtils
.
resetOrderListVo
(
uid
,
2
,
orderRefundVo
.
getOrderTicketsId
(),
null
);
// 订单入场人表 MONGO
KylinOrderTicketEntitiesVo
kylinOrderTicketEntitiesVo
=
new
KylinOrderTicketEntitiesVo
();
kylinOrderTicketEntitiesVo
.
setIsPayment
(
KylinTableStatusConst
.
ENTITIES_IS_PAYMENT2
);
kylinOrderTicketEntitiesVo
.
setUpdatedAt
(
strTime
);
BasicDBObject
entitiesObject
=
new
BasicDBObject
(
"$set"
,
JSON
.
parse
(
JsonUtils
.
toJson
(
kylinOrderTicketEntitiesVo
)));
mongoTemplate
.
getCollection
(
KylinOrderTicketEntitiesVo
.
class
.
getSimpleName
()).
updateOne
(
Query
.
query
(
Criteria
.
where
(
"orderTicketEntitiesId"
).
is
(
orderRefundVo
.
getOrderRefundEntitiesVoList
().
get
(
0
).
getOrderTicketEntitiesId
())).
getQueryObject
(),
entitiesObject
);
dataUtils
.
delOrderTicketEntitiesRedis
(
orderRefundVo
.
getOrderRefundEntitiesVoList
().
get
(
0
).
getOrderTicketEntitiesId
());
// 订单退款表 MONGO
mongoTemplate
.
getCollection
(
KylinOrderRefundsVo
.
class
.
getSimpleName
()).
updateOne
(
Query
.
query
(
Criteria
.
where
(
"orderRefundsId"
).
is
(
orderRefundVo
.
getOrderRefundsId
())).
getQueryObject
(),
new
Document
(
"$set"
,
new
Document
(
"status"
,
KylinTableStatusConst
.
ORDER_REFUND_STATUS_APPLY
)
.
append
(
"updatedAt"
,
time
)
.
append
(
"applicantAt"
,
time
))
);
return
null
;
}
public
boolean
checkAgent
(
String
agentId
,
KylinTicketVo
ticketData
)
{
boolean
isAgent
=
ticketData
.
getIsAgent
()
==
1
;
if
(
isAgent
)
{
return
redisUtil
.
sHasKey
(
KylinRedisConst
.
AGENT
,
agentId
);
}
else
{
return
true
;
}
}
private
boolean
sycDamaiOrder
(
String
orderId
)
{
try
{
KylinOrderTicketVo
orderData
=
dataUtils
.
getOrderTicketVo
(
orderId
);
KylinPerformanceVo
vo
=
dataUtils
.
getPerformanceVo
(
orderData
.
getPerformanceId
());
TaobaoClient
client
=
taobaoTicketUtils
.
initTaobaoClient
();
int
isSysDamai
=
0
;
for
(
int
x
=
0
;
x
<
vo
.
getTicketTimeList
().
size
();
x
++)
{
KylinTicketTimesVo
timeItem
=
vo
.
getTicketTimeList
().
get
(
x
);
for
(
int
y
=
0
;
y
<
timeItem
.
getTicketList
().
size
();
y
++)
{
KylinTicketVo
ticketItem
=
timeItem
.
getTicketList
().
get
(
y
);
if
(
ticketItem
.
getTicketsId
().
equals
(
orderData
.
getTicketId
()))
{
isSysDamai
=
ticketItem
.
getSysDamai
();
break
;
}
}
}
if
(
isSysDamai
==
1
)
{
KylinOrderTicketVo
orderVo
=
dataUtils
.
getOrderTicketVo
(
orderId
);
List
<
KylinOrderTicketEntitiesVo
>
listData
=
orderVo
.
getEntitiesVoList
();
AlibabaDamaiMevOpenBatchpushticketRequest
req
=
new
AlibabaDamaiMevOpenBatchpushticketRequest
();
List
<
AlibabaDamaiMevOpenBatchpushticketRequest
.
ThirdTicketPushOpenParam
>
list2
=
new
ArrayList
<
AlibabaDamaiMevOpenBatchpushticketRequest
.
ThirdTicketPushOpenParam
>();
for
(
int
i
=
0
;
i
<
listData
.
size
();
i
++)
{
KylinOrderTicketEntitiesVo
item
=
listData
.
get
(
i
);
AlibabaDamaiMevOpenBatchpushticketRequest
.
ThirdTicketPushOpenParam
obj3
=
new
AlibabaDamaiMevOpenBatchpushticketRequest
.
ThirdTicketPushOpenParam
();
list2
.
add
(
obj3
);
obj3
.
setUserName
(
item
.
getEnterName
());
//用户名 入场人姓名
obj3
.
setCertificateNo
(
item
.
getEnterIdCode
());
//证件号 入场人身份证
obj3
.
setOrderUserMobile
(
item
.
getEnterMobile
());
//用户手机号 入场人手机号
obj3
.
setCertificateType
(
item
.
getEnterType
().
longValue
());
//证件内容 入场人证件type
obj3
.
setPayTime
(
DateUtils
.
parseDate
(
orderData
.
getTimePay
(),
new
String
[]{
"yyyy-MM-dd HH:mm:ss"
}));
//支付时间
obj3
.
setPerformId
(
item
.
getTimemId
().
longValue
());
//场次id
obj3
.
setTicketItemId
(
item
.
getTicketsmId
().
longValue
());
obj3
.
setVoucherId
(
item
.
getMid
().
longValue
());
//票单号 入场人id
obj3
.
setOrderId
(
Long
.
parseLong
(
orderData
.
getOrderTicketsId
()));
//订单id orderId
obj3
.
setMediumType
(
orderData
.
getGetTicketType
().
equals
(
"express"
)
?
1L
:
2L
);
//票类型 快递 电子
obj3
.
setSupplierSecret
(
taobaoTicketUtils
.
getSupplierSecret
());
obj3
.
setSystemId
(
taobaoTicketUtils
.
getSystemId
());
obj3
.
setSeatType
(
1L
);
obj3
.
setTicketType
(
1L
);
//票类型
}
req
.
setThirdTicketSetOpenParamList
(
list2
);
if
(
list2
.
size
()
==
0
)
{
return
true
;
}
else
{
AlibabaDamaiMevOpenBatchpushticketResponse
rsp
=
client
.
execute
(
req
);
return
rsp
.
getResult
().
getSuccess
();
}
}
return
true
;
}
catch
(
Exception
e
)
{
return
false
;
}
}
}
}
liquidnet-bus-service/liquidnet-service-kylin/liquidnet-service-kylin-impl/src/main/java/com/liquidnet/service/kylin/utils/TaobaoTicketUtils.java
deleted
100644 → 0
View file @
aaf952c2
package
com
.
liquidnet
.
service
.
kylin
.
utils
;
import
com.taobao.api.DefaultTaobaoClient
;
import
com.taobao.api.TaobaoClient
;
import
org.springframework.stereotype.Service
;
@Service
public
class
TaobaoTicketUtils
{
private
String
URL
=
"http://gw.api.taobao.com/router/rest"
;
private
String
APPKEY
=
"27542597"
;
private
String
SECRET
=
"900025efc616fd2446344bb8fa21d039"
;
private
String
SUPPLIER_SECRET
=
"444d0752439f921a75eaf5951a8bc03c"
;
private
Long
SYSTEM_ID
=
15669L
;
// private String url = "http://gw.api.tbsandbox.com/router/rest";
// private String appkey = "4272";
// private String secret = "0ebbcccfee18d7ad1aebc5b135ffa906";
private
TaobaoClient
client
=
null
;
public
TaobaoClient
initTaobaoClient
()
{
if
(
client
==
null
)
{
client
=
new
DefaultTaobaoClient
(
URL
,
APPKEY
,
SECRET
);
}
return
client
;
}
public
String
getSupplierSecret
(){
return
SUPPLIER_SECRET
;
}
public
Long
getSystemId
(){
return
SYSTEM_ID
;
}
}
liquidnet-bus-service/liquidnet-service-order/liquidnet-service-order-impl/src/main/java/com/liquidnet/service/order/controller/KylinOrderTicketsController.java
View file @
02899791
package
com
.
liquidnet
.
service
.
order
.
controller
;
package
com
.
liquidnet
.
service
.
order
.
controller
;
import
com.github.pagehelper.PageInfo
;
import
com.liquidnet.service.base.ErrorMapping
;
import
com.liquidnet.service.base.ErrorMapping
;
import
com.liquidnet.service.base.ResponseDto
;
import
com.liquidnet.service.base.ResponseDto
;
import
com.liquidnet.service.kylin.dto.param.PayAgainParam
;
import
com.liquidnet.service.kylin.dto.param.PayAgainParam
;
import
com.liquidnet.service.kylin.dto.param.PayOrderParam
;
import
com.liquidnet.service.kylin.dto.param.PayOrderParam
;
import
com.liquidnet.service.kylin.dto.param.SyncOrderParam
;
import
com.liquidnet.service.kylin.dto.param.SyncOrderParam
;
import
com.liquidnet.service.kylin.dto.vo.returns.*
;
import
com.liquidnet.service.kylin.dto.vo.returns.*
;
import
com.liquidnet.service.kylin.service.IKylinOrderTicketsService
;
import
com.liquidnet.service.kylin.service.IKylinOrderTickets
Order
Service
;
import
io.swagger.annotations.Api
;
import
io.swagger.annotations.Api
;
import
io.swagger.annotations.ApiOperation
;
import
io.swagger.annotations.ApiOperation
;
import
io.swagger.annotations.ApiResponse
;
import
io.swagger.annotations.ApiResponse
;
...
@@ -19,7 +18,6 @@ import org.springframework.web.bind.annotation.*;
...
@@ -19,7 +18,6 @@ import org.springframework.web.bind.annotation.*;
import
javax.validation.Valid
;
import
javax.validation.Valid
;
import
javax.validation.constraints.NotNull
;
import
javax.validation.constraints.NotNull
;
import
java.util.HashMap
;
import
java.util.HashMap
;
import
java.util.List
;
/**
/**
* <p>
* <p>
...
@@ -36,20 +34,20 @@ import java.util.List;
...
@@ -36,20 +34,20 @@ import java.util.List;
public
class
KylinOrderTicketsController
{
public
class
KylinOrderTicketsController
{
@Autowired
@Autowired
IKylinOrderTickets
Service
orderTickets
Service
;
IKylinOrderTickets
OrderService
orderTicketsOrder
Service
;
@PostMapping
(
"pre"
)
@PostMapping
(
"pre"
)
@ApiOperation
(
"下单"
)
@ApiOperation
(
"下单"
)
@ApiResponse
(
code
=
200
,
message
=
"接口返回对象参数"
)
@ApiResponse
(
code
=
200
,
message
=
"接口返回对象参数"
)
public
ResponseDto
<
PayResultVo
>
checkCanOrder
(
@RequestBody
@Valid
PayOrderParam
payOrderParam
)
{
public
ResponseDto
<
PayResultVo
>
checkCanOrder
(
@RequestBody
@Valid
PayOrderParam
payOrderParam
)
{
return
orderTicketsService
.
checkCanOrder
(
payOrderParam
);
return
orderTickets
Order
Service
.
checkCanOrder
(
payOrderParam
);
}
}
@PostMapping
(
"payAgain"
)
@PostMapping
(
"payAgain"
)
@ApiOperation
(
"再次支付"
)
@ApiOperation
(
"再次支付"
)
@ApiResponse
(
code
=
200
,
message
=
"接口返回对象参数"
)
@ApiResponse
(
code
=
200
,
message
=
"接口返回对象参数"
)
public
ResponseDto
<
PayResultVo
>
payAgain
(
@RequestBody
@Valid
PayAgainParam
payAgainParam
)
{
public
ResponseDto
<
PayResultVo
>
payAgain
(
@RequestBody
@Valid
PayAgainParam
payAgainParam
)
{
PayResultVo
vo
=
orderTicketsService
.
payAgain
(
payAgainParam
).
getData
();
PayResultVo
vo
=
orderTickets
Order
Service
.
payAgain
(
payAgainParam
).
getData
();
if
(
null
==
vo
)
{
if
(
null
==
vo
)
{
return
ResponseDto
.
failure
(
ErrorMapping
.
get
(
"20024"
));
return
ResponseDto
.
failure
(
ErrorMapping
.
get
(
"20024"
));
}
else
{
}
else
{
...
@@ -61,14 +59,14 @@ public class KylinOrderTicketsController {
...
@@ -61,14 +59,14 @@ public class KylinOrderTicketsController {
@ApiOperation
(
"支付回调"
)
@ApiOperation
(
"支付回调"
)
@ApiResponse
(
code
=
200
,
message
=
"接口返回对象参数"
)
@ApiResponse
(
code
=
200
,
message
=
"接口返回对象参数"
)
public
String
syncOrder
(
@ModelAttribute
@Valid
SyncOrderParam
syncOrderParam
)
{
public
String
syncOrder
(
@ModelAttribute
@Valid
SyncOrderParam
syncOrderParam
)
{
return
orderTicketsService
.
syncOrder
(
syncOrderParam
);
return
orderTickets
Order
Service
.
syncOrder
(
syncOrderParam
);
}
}
@GetMapping
(
"checkPayment"
)
@GetMapping
(
"checkPayment"
)
@ApiOperation
(
"订单状态"
)
@ApiOperation
(
"订单状态"
)
@ApiResponse
(
code
=
200
,
message
=
"接口返回对象参数"
)
@ApiResponse
(
code
=
200
,
message
=
"接口返回对象参数"
)
public
ResponseDto
<
HashMap
>
checkOrderResult
(
@RequestParam
(
"orderId"
)
@NotNull
(
message
=
"订单id不能为空"
)
String
orderId
)
{
public
ResponseDto
<
HashMap
>
checkOrderResult
(
@RequestParam
(
"orderId"
)
@NotNull
(
message
=
"订单id不能为空"
)
String
orderId
)
{
Integer
status
=
orderTicketsService
.
checkOrderResult
(
orderId
).
getData
();
Integer
status
=
orderTickets
Order
Service
.
checkOrderResult
(
orderId
).
getData
();
if
(
null
==
status
)
{
if
(
null
==
status
)
{
return
ResponseDto
.
failure
(
ErrorMapping
.
get
(
"20003"
));
return
ResponseDto
.
failure
(
ErrorMapping
.
get
(
"20003"
));
}
else
{
}
else
{
...
...
liquidnet-bus-service/liquidnet-service-order/liquidnet-service-order-impl/src/main/java/com/liquidnet/service/order/service/impl/KylinOrderTicketsServiceImpl.java
View file @
02899791
...
@@ -27,6 +27,7 @@ import com.liquidnet.service.kylin.dto.vo.mongo.KylinOrderTicketVo;
...
@@ -27,6 +27,7 @@ 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.mongo.KylinPerformanceVo
;
import
com.liquidnet.service.kylin.dto.vo.returns.*
;
import
com.liquidnet.service.kylin.dto.vo.returns.*
;
import
com.liquidnet.service.kylin.entity.*
;
import
com.liquidnet.service.kylin.entity.*
;
import
com.liquidnet.service.kylin.service.IKylinOrderTicketsOrderService
;
import
com.liquidnet.service.kylin.service.IKylinOrderTicketsService
;
import
com.liquidnet.service.kylin.service.IKylinOrderTicketsService
;
import
com.liquidnet.service.order.utils.*
;
import
com.liquidnet.service.order.utils.*
;
import
com.mongodb.BasicDBObject
;
import
com.mongodb.BasicDBObject
;
...
@@ -63,7 +64,7 @@ import java.util.*;
...
@@ -63,7 +64,7 @@ import java.util.*;
*/
*/
@Service
@Service
@Slf4j
@Slf4j
public
class
KylinOrderTicketsServiceImpl
implements
IKylinOrderTicketsService
{
public
class
KylinOrderTicketsServiceImpl
implements
IKylinOrderTickets
Order
Service
{
@Value
(
"${liquidnet.url-pay.pay}"
)
@Value
(
"${liquidnet.url-pay.pay}"
)
private
String
payUrl
;
private
String
payUrl
;
...
@@ -95,7 +96,6 @@ public class KylinOrderTicketsServiceImpl implements IKylinOrderTicketsService {
...
@@ -95,7 +96,6 @@ public class KylinOrderTicketsServiceImpl implements IKylinOrderTicketsService {
@Autowired
@Autowired
private
OrderRefundOvertimeServiceImpl
orderRefundsCallbackService
;
private
OrderRefundOvertimeServiceImpl
orderRefundsCallbackService
;
ArrayList
<
Integer
>
canBuyStatus
=
new
ArrayList
()
{{
ArrayList
<
Integer
>
canBuyStatus
=
new
ArrayList
()
{{
add
(
6
);
add
(
6
);
add
(
8
);
add
(
8
);
...
@@ -103,7 +103,6 @@ public class KylinOrderTicketsServiceImpl implements IKylinOrderTicketsService {
...
@@ -103,7 +103,6 @@ public class KylinOrderTicketsServiceImpl implements IKylinOrderTicketsService {
add
(
10
);
add
(
10
);
}};
}};
@Override
@Override
public
ResponseDto
<
PayResultVo
>
checkCanOrder
(
PayOrderParam
payOrderParam
)
{
public
ResponseDto
<
PayResultVo
>
checkCanOrder
(
PayOrderParam
payOrderParam
)
{
Long
currentTime
;
Long
currentTime
;
...
@@ -951,44 +950,4 @@ public class KylinOrderTicketsServiceImpl implements IKylinOrderTicketsService {
...
@@ -951,44 +950,4 @@ public class KylinOrderTicketsServiceImpl implements IKylinOrderTicketsService {
return
false
;
return
false
;
}
}
}
}
@Override
public
PageInfo
<
List
<
KylinOrderListVo
>>
orderList
()
{
return
null
;
}
@Override
public
OrderDetailsVo
orderDetails
(
String
orderId
)
{
return
null
;
}
@Override
public
ResponseDto
<
Integer
>
orderUnPayCount
()
{
return
null
;
}
@Override
public
KylinOrderTicketPreVo
toOrderRefundDetails
(
String
orderId
)
{
return
null
;
}
@Override
public
OrderRefundVo
orderRefundDetails
(
String
orderId
,
String
orderRefundId
)
{
return
null
;
}
@Override
public
String
sendOrderRefund
(
String
orderId
,
String
orderTicketEntitiesId
,
String
reason
,
String
picList
)
{
return
null
;
}
@Override
public
ResponseDto
<
Boolean
>
orderRefundWithdraw
(
String
orderRefundsId
)
{
return
null
;
}
@Override
public
Boolean
orderRefundAgain
(
String
orderRefundsId
)
{
return
null
;
}
}
}
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