记得上下班打卡 | 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
e767c441
Commit
e767c441
authored
Jul 05, 2021
by
胡佳晨
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'test'
parents
866e774b
5d89f8c3
Changes
14
Hide whitespace changes
Inline
Side-by-side
Showing
14 changed files
with
131 additions
and
1097 deletions
+131
-1097
IKylinOrderTicketsOrderService.java
...service/kylin/service/IKylinOrderTicketsOrderService.java
+34
-0
IKylinOrderTicketsService.java
...dnet/service/kylin/service/IKylinOrderTicketsService.java
+0
-25
pom.xml
...liquidnet-client-admin/liquidnet-client-admin-web/pom.xml
+15
-0
banners.html
...n/resources/templates/zhengzai/kylin/banners/banners.html
+1
-1
TestLocal.java
...b/src/test/java/com.liquidnet.client.admin/TestLocal.java
+50
-0
KylinBannersServiceImpl.java
.../zhengzai/kylin/service/impl/KylinBannersServiceImpl.java
+1
-9
KylinBannersMapper.java
...om/liquidnet/service/kylin/mapper/KylinBannersMapper.java
+1
-2
KylinBannersMapper.xml
...com.liquidnet.service.kylin.mapper/KylinBannersMapper.xml
+5
-23
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 @
e767c441
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 @
e767c441
...
...
@@ -22,26 +22,12 @@ import java.util.List;
*/
public
interface
IKylinOrderTicketsService
{
// 下单前判断接口(判断是否可锁定库存)(无订单->待支付->可支付)
ResponseDto
<
PayResultVo
>
checkCanOrder
(
PayOrderParam
payOrderParam
);
// 再次支付(待支付->可支付->倒计时结束释放库存)
ResponseDto
<
PayResultVo
>
payAgain
(
PayAgainParam
payAgainParam
);
// 支付回调(待支付->已支付->中断倒计时)
String
syncOrder
(
SyncOrderParam
syncOrderParam
);
// 同步大麦数据接口
//订单列表(状态 待支付 已支付 倒计时 已失效)
PageInfo
<
List
<
KylinOrderListVo
>>
orderList
();
//订单详情
OrderDetailsVo
orderDetails
(
String
orderId
);
//去 PHP pay检查 订单状态
ResponseDto
<
Integer
>
checkOrderResult
(
String
orderId
);
//订单未支付数量
ResponseDto
<
Integer
>
orderUnPayCount
();
...
...
@@ -63,15 +49,4 @@ public interface IKylinOrderTicketsService {
//退款撤回
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-client/liquidnet-client-admin/liquidnet-client-admin-web/pom.xml
View file @
e767c441
...
...
@@ -96,6 +96,21 @@
<groupId>
com.liquidnet
</groupId>
<artifactId>
liquidnet-client-admin-generator
</artifactId>
</dependency>
<dependency>
<groupId>
junit
</groupId>
<artifactId>
junit
</artifactId>
<scope>
test
</scope>
</dependency>
<dependency>
<groupId>
org.springframework.boot
</groupId>
<artifactId>
spring-boot-test
</artifactId>
<scope>
test
</scope>
</dependency>
<dependency>
<groupId>
org.springframework
</groupId>
<artifactId>
spring-test
</artifactId>
<scope>
test
</scope>
</dependency>
</dependencies>
...
...
liquidnet-bus-client/liquidnet-client-admin/liquidnet-client-admin-web/src/main/resources/templates/zhengzai/kylin/banners/banners.html
View file @
e767c441
...
...
@@ -25,7 +25,7 @@
<label>
是否上线:
</label>
<select
name=
"isOnline"
>
<option
value=
""
>
全部
</option>
<option
value=
"
0
"
>
下线
</option>
<option
value=
"
88
"
>
下线
</option>
<option
value=
"1"
>
上线
</option>
</select>
</li>
...
...
liquidnet-bus-client/liquidnet-client-admin/liquidnet-client-admin-web/src/test/java/com.liquidnet.client.admin/TestLocal.java
0 → 100644
View file @
e767c441
package
com
.
liquidnet
.
client
.
admin
;
import
com.liquidnet.service.kylin.constant.KylinTableStatusConst
;
import
com.liquidnet.service.kylin.dto.vo.returns.KylinOrderRefundsVo
;
import
com.liquidnet.service.kylin.entity.KylinOrderRefunds
;
import
com.mongodb.BasicDBObject
;
import
com.mongodb.client.result.UpdateResult
;
import
org.junit.Test
;
import
org.junit.runner.RunWith
;
import
org.springframework.beans.BeanUtils
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.boot.test.context.SpringBootTest
;
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.Query
;
import
org.springframework.test.context.junit4.SpringJUnit4ClassRunner
;
import
java.time.LocalDateTime
;
/**
* Test
*/
@RunWith
(
SpringJUnit4ClassRunner
.
class
)
@SpringBootTest
public
class
TestLocal
{
@Autowired
private
MongoTemplate
mongoTemplate
;
@Autowired
MongoConverter
mongoConverter
;
@Test
public
void
updateAt
(){
KylinOrderRefunds
kylinOrderRefunds
=
new
KylinOrderRefunds
();
kylinOrderRefunds
.
setStatus
(
KylinTableStatusConst
.
ORDER_REFUND_STATUS_APPLY
);
kylinOrderRefunds
.
setApplicantId
(
"1111"
);
kylinOrderRefunds
.
setApplicantName
(
"2222"
);
kylinOrderRefunds
.
setApplicantAt
(
LocalDateTime
.
now
());
KylinOrderRefundsVo
kylinOrderRefundsVo
=
new
KylinOrderRefundsVo
();
BeanUtils
.
copyProperties
(
kylinOrderRefunds
,
kylinOrderRefundsVo
);
kylinOrderRefundsVo
.
setUpdatedAt
(
LocalDateTime
.
now
());
BasicDBObject
EntitiesVov
=
new
BasicDBObject
(
"$set"
,
mongoConverter
.
convertToMongoType
(
kylinOrderRefundsVo
));
UpdateResult
updateResult
=
mongoTemplate
.
getCollection
(
KylinOrderRefundsVo
.
class
.
getSimpleName
()).
updateOne
(
Query
.
query
(
Criteria
.
where
(
"orderRefundsId"
).
in
(
"2767295925071872949890"
)).
getQueryObject
(),
EntitiesVov
);
}
}
liquidnet-bus-client/liquidnet-client-admin/liquidnet-client-admin-zhengzai/src/main/java/com/liquidnet/client/admin/zhengzai/kylin/service/impl/KylinBannersServiceImpl.java
View file @
e767c441
...
...
@@ -38,6 +38,7 @@ import org.springframework.util.StringUtils;
import
java.time.LocalDateTime
;
import
java.util.HashMap
;
import
java.util.List
;
import
java.util.Map
;
/**
* <p>
...
...
@@ -244,15 +245,6 @@ public class KylinBannersServiceImpl extends ServiceImpl<KylinBannersMapper, Kyl
return
pageInfoTmp
;
}
public
Long
bannerListCount
(
BannersSearchParam
bannersSearchParam
)
{
try
{
Long
count
=
bannersMapper
.
searchBannersCount
(
BeanUtil
.
convertBeanToMap
(
bannersSearchParam
));
return
count
;
}
catch
(
Exception
e
)
{
return
0L
;
}
}
public
Boolean
delete
(
List
<
String
>
bannersId
)
{
try
{
LocalDateTime
updatedAt
=
LocalDateTime
.
now
();
...
...
liquidnet-bus-do/liquidnet-service-kylin-do/src/main/java/com/liquidnet/service/kylin/mapper/KylinBannersMapper.java
View file @
e767c441
...
...
@@ -4,6 +4,7 @@ import com.liquidnet.service.kylin.dao.BannerDetailsDao;
import
com.liquidnet.service.kylin.dao.BannerDetailsListDao
;
import
com.liquidnet.service.kylin.entity.KylinBanners
;
import
com.baomidou.mybatisplus.core.mapper.BaseMapper
;
import
org.apache.ibatis.annotations.Param
;
import
java.util.List
;
import
java.util.Map
;
...
...
@@ -21,6 +22,4 @@ public interface KylinBannersMapper extends BaseMapper<KylinBanners> {
BannerDetailsDao
detail
(
String
bannersId
);
//列表
List
<
BannerDetailsListDao
>
searchBannersList
(
Map
<
String
,
Object
>
map
);
//分页数量
long
searchBannersCount
(
Map
<
String
,
Object
>
map
);
}
liquidnet-bus-do/liquidnet-service-kylin-do/src/main/resources/com.liquidnet.service.kylin.mapper/KylinBannersMapper.xml
View file @
e767c441
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper
namespace=
"com.liquidnet.service.kylin.mapper.KylinBannersMapper"
>
<select
id=
"detail"
parameterType=
"java.lang.String"
>
<select
id=
"detail"
parameterType=
"java.lang.String"
resultType=
"com.liquidnet.service.kylin.dao.BannerDetailsDao"
>
SELECT
*
FROM kylin_banners
...
...
@@ -22,9 +22,12 @@
<if
test=
"targetType != ''"
>
AND target_type=${targetType}
</if>
<if
test=
"isOnline != ''"
>
<if
test=
"isOnline != ''
and isOnline != 88
"
>
AND is_online=${isOnline}
</if>
<if
test=
"isOnline == 88 "
>
AND is_online=0
</if>
<if
test=
"promotionType != ''"
>
AND promotion_type=${promotionType}
</if>
...
...
@@ -32,25 +35,4 @@
ORDER BY banners_sort DESC
</select>
<!-- admin banner列表数量 -->
<select
id=
"searchBannersCount"
parameterType=
"java.util.Map"
resultType=
"long"
>
SELECT COUNT(0)
FROM kylin_banners
<where>
is_deleted = 1
<if
test=
"bannersName != ''"
>
AND banners_name LIKE concat('%', #{bannersName}, '%')
</if>
<if
test=
"targetType != ''"
>
AND target_type=#{targetType}
</if>
<if
test=
"isOnline != ''"
>
AND is_online=#{isOnline}
</if>
<if
test=
"promotionType != ''"
>
AND promotion_type=#{promotionType}
</if>
</where>
</select>
</mapper>
liquidnet-bus-service/liquidnet-service-kylin/liquidnet-service-kylin-impl/lib/taobao-sdk-java-auto_1600401599540-20210607-impl.jar
deleted
100644 → 0
View file @
866e774b
File deleted
liquidnet-bus-service/liquidnet-service-kylin/liquidnet-service-kylin-impl/pom.xml
View file @
e767c441
...
...
@@ -33,14 +33,6 @@
<artifactId>
spring-boot-starter-data-mongodb
</artifactId>
</dependency>
<!-- 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>
<groupId>
com.liquidnet
</groupId>
<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 @
e767c441
package
com
.
liquidnet
.
service
.
kylin
.
service
.
impl
;
import
com.alibaba.fastjson.JSON
;
import
com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper
;
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.commons.lang.util.*
;
import
com.liquidnet.service.adam.dto.vo.AdamAddressesVo
;
import
com.liquidnet.service.adam.dto.vo.AdamEntersVo
;
import
com.liquidnet.service.base.*
;
import
com.liquidnet.service.kylin.constant.KylinRedisConst
;
import
com.liquidnet.commons.lang.util.CurrentUtil
;
import
com.liquidnet.commons.lang.util.DateUtil
;
import
com.liquidnet.commons.lang.util.JsonUtils
;
import
com.liquidnet.service.base.ErrorMapping
;
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.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.KylinTicketVo
;
import
com.liquidnet.service.kylin.dto.vo.middle.message.MessageConfigVo
;
import
com.liquidnet.service.kylin.dto.vo.middle.message.MessageDataVo
;
import
com.liquidnet.service.kylin.dto.vo.mongo.*
;
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.mapper.KylinOrderTicketRelationsMapper
;
import
com.liquidnet.service.kylin.mapper.KylinOrderTicketStatusMapper
;
import
com.liquidnet.service.kylin.mapper.KylinOrderTicketsMapper
;
import
com.liquidnet.service.kylin.entity.KylinOrderRefunds
;
import
com.liquidnet.service.kylin.entity.KylinOrderTicketEntities
;
import
com.liquidnet.service.kylin.entity.KylinOrderTicketStatus
;
import
com.liquidnet.service.kylin.service.IKylinOrderTicketsService
;
import
com.
baomidou.mybatisplus.extension.service.impl.ServiceImpl
;
import
com.liquidnet.service.kylin.utils.
*
;
import
com.
liquidnet.service.kylin.utils.DataUtils
;
import
com.liquidnet.service.kylin.utils.
MongoVoUtils
;
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
org.apache.commons.lang.StringUtils
;
import
org.apache.commons.lang.time.DateUtils
;
import
org.bson.Document
;
import
org.springframework.amqp.rabbit.core.RabbitTemplate
;
import
org.springframework.beans.BeanUtils
;
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.convert.MongoConverter
;
import
org.springframework.data.mongodb.core.query.Criteria
;
import
org.springframework.data.mongodb.core.query.Query
;
import
org.springframework.stereotype.Service
;
import
org.springframework.util.LinkedMultiValueMap
;
import
java.math.BigDecimal
;
import
java.time.LocalDateTime
;
import
java.time.format.DateTimeFormatter
;
import
java.util.*
;
...
...
@@ -67,795 +53,17 @@ import java.util.*;
@Slf4j
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
private
DataUtils
dataUtils
;
@Autowired
private
RedisUtil
redisUtil
;
@Autowired
private
OrderUtils
orderUtils
;
@Autowired
private
OtherUtils
otherUtils
;
@Autowired
private
RedisLockUtil
redisLockUtil
;
@Autowired
private
MongoVoUtils
mongoVoUtils
;
@Autowired
private
MongoTemplate
mongoTemplate
;
@Autowired
private
MongoConverter
mongoConverter
;
@Autowired
private
RabbitTemplate
rabbitTemplate
;
@Autowired
private
TaobaoTicketUtils
taobaoTicketUtils
;
@Autowired
private
OrderRefundOvertimeServiceImpl
orderRefundsCallbackService
;
@Autowired
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
public
PageInfo
<
List
<
KylinOrderListVo
>>
orderList
()
{
//TODO 缺快递
...
...
@@ -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
public
ResponseDto
<
Integer
>
orderUnPayCount
()
{
String
uid
=
CurrentUtil
.
getCurrentUid
();
...
...
@@ -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 @
866e774b
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 @
e767c441
package
com
.
liquidnet
.
service
.
order
.
controller
;
import
com.github.pagehelper.PageInfo
;
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.IKylinOrderTickets
Order
Service
;
import
io.swagger.annotations.Api
;
import
io.swagger.annotations.ApiOperation
;
import
io.swagger.annotations.ApiResponse
;
...
...
@@ -19,7 +18,6 @@ import org.springframework.web.bind.annotation.*;
import
javax.validation.Valid
;
import
javax.validation.constraints.NotNull
;
import
java.util.HashMap
;
import
java.util.List
;
/**
* <p>
...
...
@@ -36,20 +34,20 @@ import java.util.List;
public
class
KylinOrderTicketsController
{
@Autowired
IKylinOrderTickets
Service
orderTickets
Service
;
IKylinOrderTickets
OrderService
orderTicketsOrder
Service
;
@PostMapping
(
"pre"
)
@ApiOperation
(
"下单"
)
@ApiResponse
(
code
=
200
,
message
=
"接口返回对象参数"
)
public
ResponseDto
<
PayResultVo
>
checkCanOrder
(
@RequestBody
@Valid
PayOrderParam
payOrderParam
)
{
return
orderTicketsService
.
checkCanOrder
(
payOrderParam
);
return
orderTickets
Order
Service
.
checkCanOrder
(
payOrderParam
);
}
@PostMapping
(
"payAgain"
)
@ApiOperation
(
"再次支付"
)
@ApiResponse
(
code
=
200
,
message
=
"接口返回对象参数"
)
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
)
{
return
ResponseDto
.
failure
(
ErrorMapping
.
get
(
"20024"
));
}
else
{
...
...
@@ -61,14 +59,14 @@ public class KylinOrderTicketsController {
@ApiOperation
(
"支付回调"
)
@ApiResponse
(
code
=
200
,
message
=
"接口返回对象参数"
)
public
String
syncOrder
(
@ModelAttribute
@Valid
SyncOrderParam
syncOrderParam
)
{
return
orderTicketsService
.
syncOrder
(
syncOrderParam
);
return
orderTickets
Order
Service
.
syncOrder
(
syncOrderParam
);
}
@GetMapping
(
"checkPayment"
)
@ApiOperation
(
"订单状态"
)
@ApiResponse
(
code
=
200
,
message
=
"接口返回对象参数"
)
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
)
{
return
ResponseDto
.
failure
(
ErrorMapping
.
get
(
"20003"
));
}
else
{
...
...
liquidnet-bus-service/liquidnet-service-order/liquidnet-service-order-impl/src/main/java/com/liquidnet/service/order/service/impl/KylinOrderTicketsServiceImpl.java
View file @
e767c441
...
...
@@ -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.returns.*
;
import
com.liquidnet.service.kylin.entity.*
;
import
com.liquidnet.service.kylin.service.IKylinOrderTicketsOrderService
;
import
com.liquidnet.service.kylin.service.IKylinOrderTicketsService
;
import
com.liquidnet.service.order.utils.*
;
import
com.mongodb.BasicDBObject
;
...
...
@@ -63,7 +64,7 @@ import java.util.*;
*/
@Service
@Slf4j
public
class
KylinOrderTicketsServiceImpl
implements
IKylinOrderTicketsService
{
public
class
KylinOrderTicketsServiceImpl
implements
IKylinOrderTickets
Order
Service
{
@Value
(
"${liquidnet.url-pay.pay}"
)
private
String
payUrl
;
...
...
@@ -95,7 +96,6 @@ public class KylinOrderTicketsServiceImpl implements IKylinOrderTicketsService {
@Autowired
private
OrderRefundOvertimeServiceImpl
orderRefundsCallbackService
;
ArrayList
<
Integer
>
canBuyStatus
=
new
ArrayList
()
{{
add
(
6
);
add
(
8
);
...
...
@@ -103,7 +103,6 @@ public class KylinOrderTicketsServiceImpl implements IKylinOrderTicketsService {
add
(
10
);
}};
@Override
public
ResponseDto
<
PayResultVo
>
checkCanOrder
(
PayOrderParam
payOrderParam
)
{
Long
currentTime
;
...
...
@@ -951,44 +950,4 @@ public class KylinOrderTicketsServiceImpl implements IKylinOrderTicketsService {
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