记得上下班打卡 | 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
6b1f9daa
Commit
6b1f9daa
authored
May 26, 2021
by
胡佳晨
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
提交代码
parent
c0d225f4
Changes
21
Show whitespace changes
Inline
Side-by-side
Showing
21 changed files
with
763 additions
and
85 deletions
+763
-85
IDGenerator.java
...ain/java/com/liquidnet/commons/lang/util/IDGenerator.java
+22
-4
liquidnet-service-kylin-dev.yml
...s-config/liquidnet-config/liquidnet-service-kylin-dev.yml
+3
-0
KylinRedisConst.java
...com/liquidnet/service/kylin/constant/KylinRedisConst.java
+3
-0
PayAgainParam.java
.../com/liquidnet/service/kylin/dto/param/PayAgainParam.java
+22
-0
SyncOrderParam.java
...com/liquidnet/service/kylin/dto/param/SyncOrderParam.java
+25
-0
KylinOrderListVo.java
.../com/liquidnet/service/kylin/dto/vo/KylinOrderListVo.java
+23
-0
KylinOrderTicketEntitiesVo.java
...dnet/service/kylin/dto/vo/KylinOrderTicketEntitiesVo.java
+5
-0
KylinOrderTicketVo.java
...om/liquidnet/service/kylin/dto/vo/KylinOrderTicketVo.java
+8
-0
PayResultVo.java
.../java/com/liquidnet/service/kylin/dto/vo/PayResultVo.java
+2
-0
IKylinOrderTicketsService.java
...dnet/service/kylin/service/IKylinOrderTicketsService.java
+17
-9
KylinOrderTicketEntities.java
...uidnet/service/kylin/entity/KylinOrderTicketEntities.java
+10
-0
KylinOrderTicketStatus.java
...iquidnet/service/kylin/entity/KylinOrderTicketStatus.java
+10
-0
KylinOrderTickets.java
...com/liquidnet/service/kylin/entity/KylinOrderTickets.java
+23
-0
db_kylin_structure.sql
.../liquidnet-service-kylin-impl/docu/db_kylin_structure.sql
+79
-3
KylinOrderTicketsController.java
...service/kylin/controller/KylinOrderTicketsController.java
+34
-0
KylinOrderTicketsServiceImpl.java
...vice/kylin/service/impl/KylinOrderTicketsServiceImpl.java
+439
-58
KylinPerformancesAdminServiceImpl.java
...service/impl/admin/KylinPerformancesAdminServiceImpl.java
+0
-5
DataUtils.java
...ain/java/com/liquidnet/service/kylin/utils/DataUtils.java
+29
-3
kylin_order_ticket_entities.properties
...n/resources/sqlmap/kylin_order_ticket_entities.properties
+2
-1
kylin_order_ticket_status.properties
...ain/resources/sqlmap/kylin_order_ticket_status.properties
+3
-1
kylin_order_tickets.properties
.../src/main/resources/sqlmap/kylin_order_tickets.properties
+4
-1
No files found.
liquidnet-bus-common/liquidnet-common-base/src/main/java/com/liquidnet/commons/lang/util/IDGenerator.java
View file @
6b1f9daa
...
@@ -2,6 +2,7 @@ package com.liquidnet.commons.lang.util;
...
@@ -2,6 +2,7 @@ package com.liquidnet.commons.lang.util;
import
java.net.NetworkInterface
;
import
java.net.NetworkInterface
;
import
java.net.SocketException
;
import
java.net.SocketException
;
import
java.util.Arrays
;
import
java.util.Enumeration
;
import
java.util.Enumeration
;
public
class
IDGenerator
{
public
class
IDGenerator
{
...
@@ -65,18 +66,35 @@ public class IDGenerator {
...
@@ -65,18 +66,35 @@ public class IDGenerator {
return
((
timestamp
-
twepoch
)
<<
timestampLeftShift
)
|
(
dataCenterId
<<
dataCenterIdShift
)
|
(
workerId
<<
workerIdShift
)
|
sequence
;
return
((
timestamp
-
twepoch
)
<<
timestampLeftShift
)
|
(
dataCenterId
<<
dataCenterIdShift
)
|
(
workerId
<<
workerIdShift
)
|
sequence
;
}
}
/**
* 根据订单id生成订单号
*
* @param orderTicketId
* @return
*/
public
static
String
ticketOrderCode
(
String
orderTicketId
)
{
public
static
String
ticketOrderCode
(
String
orderTicketId
)
{
String
number
=
orderTicketId
;
String
number
=
orderTicketId
;
int
len
=
orderTicketId
.
length
();
int
len
=
orderTicketId
.
length
();
String
time
=
System
.
currentTimeMillis
()
/
1000
+
""
;
String
time
=
System
.
currentTimeMillis
()
/
1000
+
""
;
String
orderCode
=
"T"
+
number
.
substring
(
0
,
len
-
4
);
String
orderCode
=
"T"
+
number
.
substring
(
0
,
len
-
4
);
orderCode
+=
time
.
substring
(
7
,
8
);
orderCode
+=
time
.
substring
(
7
,
8
);
orderCode
+=
number
.
substring
(
len
-
2
);
orderCode
+=
number
.
substring
(
len
-
2
);
orderCode
+=
time
.
substring
(
8
,
9
);
orderCode
+=
time
.
substring
(
8
,
9
);
orderCode
+=
number
.
substring
(
len
-
4
,
len
-
2
);
orderCode
+=
number
.
substring
(
len
-
4
,
len
-
2
);
return
orderCode
;
return
orderCode
;
}
}
/**
* 根据 订单号生成qrCode
*
* @param orderTicketId
* @return String
*/
public
static
String
ticketQrCode
(
String
orderTicketId
)
{
String
qrCode
=
MD5Utils
.
md5
(
orderTicketId
).
toLowerCase
();
return
"QR"
+
qrCode
.
substring
(
5
)
+
""
+
qrCode
.
substring
(
0
,
4
);
}
private
static
long
genTime
()
{
private
static
long
genTime
()
{
return
useSystemClock
?
SystemClock
.
now
()
:
System
.
currentTimeMillis
();
return
useSystemClock
?
SystemClock
.
now
()
:
System
.
currentTimeMillis
();
}
}
...
...
liquidnet-bus-config/liquidnet-config/liquidnet-service-kylin-dev.yml
View file @
6b1f9daa
...
@@ -17,6 +17,9 @@ liquidnet:
...
@@ -17,6 +17,9 @@ liquidnet:
level-root
:
info
level-root
:
info
mysql
:
mysql
:
database-name
:
dev_ln_scene
database-name
:
dev_ln_scene
url-pay
:
pay
:
"
http://testpay.zhengzai.tv/"
check
:
"
http://testpay.zhengzai.tv/order/verify"
#以下为spring各环境个性配置
#以下为spring各环境个性配置
spring
:
spring
:
...
...
liquidnet-bus-service/liquidnet-service-kylin/liquidnet-service-kylin-api/src/main/java/com/liquidnet/service/kylin/constant/KylinRedisConst.java
View file @
6b1f9daa
...
@@ -8,8 +8,11 @@ public class KylinRedisConst {
...
@@ -8,8 +8,11 @@ public class KylinRedisConst {
public
static
final
String
SURPLUS_GENERAL
=
"surplusGeneral"
;
public
static
final
String
SURPLUS_GENERAL
=
"surplusGeneral"
;
public
static
final
String
SURPLUS_EXCHANGE
=
"surplusExchange"
;
public
static
final
String
SURPLUS_EXCHANGE
=
"surplusExchange"
;
public
static
final
String
TICKET
=
"kylin:ticket:info"
;
public
static
final
String
TICKET
=
"kylin:ticket:info"
;
public
static
final
String
ORDER
=
"kylin:order:info"
;
public
static
final
String
ORDER_ENTITIES
=
"kylin:order_entities:info"
;
public
static
final
String
TIMES
=
"kylin:times:id"
;
public
static
final
String
TIMES
=
"kylin:times:id"
;
public
static
final
String
BANNERS
=
"kylin:banners"
;
public
static
final
String
BANNERS
=
"kylin:banners"
;
public
static
final
String
AGENT
=
"kylin:agent:info"
;
public
static
final
String
CHECK_USER
=
"kylin:checkUser"
;
public
static
final
String
CHECK_USER
=
"kylin:checkUser"
;
public
static
final
String
CHECK_USER_RELATION
=
"kylin:checkUser:relation"
;
public
static
final
String
CHECK_USER_RELATION
=
"kylin:checkUser:relation"
;
...
...
liquidnet-bus-service/liquidnet-service-kylin/liquidnet-service-kylin-api/src/main/java/com/liquidnet/service/kylin/dto/param/PayAgainParam.java
0 → 100644
View file @
6b1f9daa
package
com
.
liquidnet
.
service
.
kylin
.
dto
.
param
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.Data
;
import
javax.validation.constraints.NotNull
;
import
java.util.List
;
@Data
public
class
PayAgainParam
{
@ApiModelProperty
(
value
=
"订单id"
)
@NotNull
(
message
=
"必传"
)
private
String
orderId
;
@ApiModelProperty
(
value
=
"支付类型"
)
@NotNull
(
message
=
"必传"
)
private
String
payType
;
@ApiModelProperty
(
value
=
"支付来源"
)
@NotNull
(
message
=
"必传"
)
private
String
deviceFrom
;
@ApiModelProperty
(
value
=
"openId"
)
private
String
openId
;
}
liquidnet-bus-service/liquidnet-service-kylin/liquidnet-service-kylin-api/src/main/java/com/liquidnet/service/kylin/dto/param/SyncOrderParam.java
0 → 100644
View file @
6b1f9daa
package
com
.
liquidnet
.
service
.
kylin
.
dto
.
param
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.Data
;
import
javax.validation.constraints.NotNull
;
import
java.math.BigDecimal
;
@Data
public
class
SyncOrderParam
{
@ApiModelProperty
(
value
=
"status"
)
private
Integer
status
;
@ApiModelProperty
(
value
=
"type"
)
private
String
type
;
@ApiModelProperty
(
value
=
"code"
)
private
String
code
;
@ApiModelProperty
(
value
=
"payment_id"
)
private
String
payment_id
;
@ApiModelProperty
(
value
=
"order_code"
)
private
String
order_code
;
@ApiModelProperty
(
value
=
"price"
)
private
BigDecimal
price
;
@ApiModelProperty
(
value
=
"payment_type"
)
private
String
payment_type
;
}
liquidnet-bus-service/liquidnet-service-kylin/liquidnet-service-kylin-api/src/main/java/com/liquidnet/service/kylin/dto/vo/KylinOrderListVo.java
0 → 100644
View file @
6b1f9daa
package
com
.
liquidnet
.
service
.
kylin
.
dto
.
vo
;
import
lombok.Data
;
import
java.io.Serializable
;
import
java.math.BigDecimal
;
@Data
public
class
KylinOrderListVo
implements
Serializable
{
private
static
final
long
serialVersionUID
=
6554829077875538374L
;
private
String
orderTicketsId
;
private
String
performanceTitle
;
private
String
performanceImg
;
private
String
timeStart
;
private
String
ticketTitle
;
private
String
useStart
;
private
String
overdueAt
;
private
int
canBuyTime
;
private
BigDecimal
priceActual
;
private
Integer
number
;
private
Integer
status
;
private
String
createdAt
;
}
liquidnet-bus-service/liquidnet-service-kylin/liquidnet-service-kylin-api/src/main/java/com/liquidnet/service/kylin/dto/vo/KylinOrderTicketEntitiesVo.java
View file @
6b1f9daa
...
@@ -22,4 +22,9 @@ public class KylinOrderTicketEntitiesVo implements Serializable {
...
@@ -22,4 +22,9 @@ public class KylinOrderTicketEntitiesVo implements Serializable {
private
Integer
sysDamai
;
private
Integer
sysDamai
;
private
String
checkClient
;
private
String
checkClient
;
private
Integer
isPayment
;
private
Integer
isPayment
;
private
String
performanceTitle
;
private
String
ticketTitle
;
private
String
useStart
;
private
String
useEnd
;
}
}
liquidnet-bus-service/liquidnet-service-kylin/liquidnet-service-kylin-api/src/main/java/com/liquidnet/service/kylin/dto/vo/KylinOrderTicketVo.java
View file @
6b1f9daa
...
@@ -25,6 +25,10 @@ public class KylinOrderTicketVo implements Serializable {
...
@@ -25,6 +25,10 @@ public class KylinOrderTicketVo implements Serializable {
private
String
userMobile
;
private
String
userMobile
;
@ApiModelProperty
(
position
=
14
,
value
=
"演出名称"
)
@ApiModelProperty
(
position
=
14
,
value
=
"演出名称"
)
private
String
performanceTitle
;
private
String
performanceTitle
;
private
String
ticketTitle
;
private
String
timeStart
;
private
String
useStart
;
private
String
performanceImg
;
@ApiModelProperty
(
position
=
15
,
value
=
"订单号"
)
@ApiModelProperty
(
position
=
15
,
value
=
"订单号"
)
private
String
orderCode
;
private
String
orderCode
;
@ApiModelProperty
(
position
=
16
,
value
=
"支付单号"
)
@ApiModelProperty
(
position
=
16
,
value
=
"支付单号"
)
...
@@ -88,6 +92,10 @@ public class KylinOrderTicketVo implements Serializable {
...
@@ -88,6 +92,10 @@ public class KylinOrderTicketVo implements Serializable {
private
String
agentId
;
private
String
agentId
;
private
Integer
isMember
;
private
Integer
isMember
;
private
String
overdueAt
;
private
String
createdAt
;
private
String
updatedAt
;
public
void
setOrderTicket
(
KylinOrderTickets
orderTicket
)
{
public
void
setOrderTicket
(
KylinOrderTickets
orderTicket
)
{
BeanUtils
.
copyProperties
(
orderTicket
,
this
);
BeanUtils
.
copyProperties
(
orderTicket
,
this
);
}
}
...
...
liquidnet-bus-service/liquidnet-service-kylin/liquidnet-service-kylin-api/src/main/java/com/liquidnet/service/kylin/dto/vo/PayResultVo.java
View file @
6b1f9daa
...
@@ -14,6 +14,8 @@ public class PayResultVo implements Serializable {
...
@@ -14,6 +14,8 @@ public class PayResultVo implements Serializable {
private
String
order_code
;
private
String
order_code
;
private
Integer
status
;
private
String
order_id
;
private
String
order_id
;
private
BigDecimal
price
;
private
BigDecimal
price
;
...
...
liquidnet-bus-service/liquidnet-service-kylin/liquidnet-service-kylin-api/src/main/java/com/liquidnet/service/kylin/service/IKylinOrderTicketsService.java
View file @
6b1f9daa
package
com
.
liquidnet
.
service
.
kylin
.
service
;
package
com
.
liquidnet
.
service
.
kylin
.
service
;
import
com.github.pagehelper.PageInfo
;
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.PayOrderParam
;
import
com.liquidnet.service.kylin.dto.param.PayOrderParam
;
import
com.liquidnet.service.kylin.dto.param.SyncOrderParam
;
import
com.liquidnet.service.kylin.dto.vo.KylinOrderListVo
;
import
com.liquidnet.service.kylin.dto.vo.KylinPerformanceVo
;
import
com.liquidnet.service.kylin.dto.vo.KylinPerformanceVo
;
import
com.liquidnet.service.kylin.dto.vo.KylinTicketVo
;
import
com.liquidnet.service.kylin.dto.vo.KylinTicketVo
;
import
com.liquidnet.service.kylin.dto.vo.PayResultVo
;
import
com.liquidnet.service.kylin.dto.vo.PayResultVo
;
...
@@ -21,24 +25,28 @@ import java.util.List;
...
@@ -21,24 +25,28 @@ import java.util.List;
public
interface
IKylinOrderTicketsService
extends
IService
<
KylinOrderTickets
>
{
public
interface
IKylinOrderTicketsService
extends
IService
<
KylinOrderTickets
>
{
// 下单前判断接口(判断是否可锁定库存)(无订单->待支付->可支付)
// 下单前判断接口(判断是否可锁定库存)(无订单->待支付->可支付)
ResponseDto
<
PayResultVo
>
checkCanOrder
(
PayOrderParam
payOrderParam
);
ResponseDto
<
PayResultVo
>
checkCanOrder
(
PayOrderParam
payOrderParam
);
// 下单接口(无订单->待支付->可支付)
ResponseDto
<
PayResultVo
>
order
(
PayOrderParam
payOrderParam
,
String
uid
,
boolean
isMember
,
int
isTrueName
,
KylinPerformanceVo
performanceData
,
KylinTicketVo
ticketData
);
// 再次支付(待支付->可支付->倒计时结束释放库存)
// 再次支付(待支付->可支付->倒计时结束释放库存)
ResponseDto
<
PayResultVo
>
payAgain
(
PayAgainParam
payAgainParam
);
// 取消支付(待支付->订单失效->释放库存->中断倒计时)
// 支付回调(待支付->已支付->中断倒计时)
// 支付回调(待支付->已支付->中断倒计时)
String
syncOrder
(
SyncOrderParam
syncOrderParam
);
// 同步大麦数据接口
// 同步大麦数据接口
// 代理票务 可买状态判断
//订单列表(状态 待支付 已支付 倒计时 已失效)
//订单列表(状态 待支付 已支付 倒计时 已失效)
PageInfo
<
List
<
KylinOrderListVo
>>
orderList
(
int
page
,
int
size
);
//订单详情
//订单详情
//TASK 倒计时
//TASK 倒计时
boolean
checkOrderTime
(
String
userId
);
// 下单接口(无订单->待支付->可支付)
// 删除订单
// 代理票务 可买状态判断
// 取消支付(待支付->订单失效->释放库存->中断倒计时)
// 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-do/src/main/java/com/liquidnet/service/kylin/entity/KylinOrderTicketEntities.java
View file @
6b1f9daa
...
@@ -123,4 +123,14 @@ public class KylinOrderTicketEntities implements Serializable {
...
@@ -123,4 +123,14 @@ public class KylinOrderTicketEntities implements Serializable {
createdAt
,
updatedAt
createdAt
,
updatedAt
};
};
}
}
/**
* 获取 支付回调 数据库参数
* @return
*/
public
Object
[]
getSynOrderObject
()
{
return
new
Object
[]{
orderId
,
isPayment
,
updatedAt
};
}
}
}
liquidnet-bus-service/liquidnet-service-kylin/liquidnet-service-kylin-do/src/main/java/com/liquidnet/service/kylin/entity/KylinOrderTicketStatus.java
View file @
6b1f9daa
...
@@ -79,4 +79,14 @@ public class KylinOrderTicketStatus implements Serializable {
...
@@ -79,4 +79,14 @@ public class KylinOrderTicketStatus implements Serializable {
};
};
}
}
/**
* 获取 支付回调 数据库参数
* @return
*/
public
Object
[]
getSynOrderObject
()
{
return
new
Object
[]{
orderId
,
status
,
payStatus
,
updatedAt
};
}
}
}
liquidnet-bus-service/liquidnet-service-kylin/liquidnet-service-kylin-do/src/main/java/com/liquidnet/service/kylin/entity/KylinOrderTickets.java
View file @
6b1f9daa
...
@@ -190,6 +190,7 @@ public class KylinOrderTickets implements Serializable {
...
@@ -190,6 +190,7 @@ public class KylinOrderTickets implements Serializable {
/**
/**
* 获取 添加 数据库参数
* 获取 添加 数据库参数
*
* @return
* @return
*/
*/
public
Object
[]
getAddObject
()
{
public
Object
[]
getAddObject
()
{
...
@@ -201,4 +202,26 @@ public class KylinOrderTickets implements Serializable {
...
@@ -201,4 +202,26 @@ public class KylinOrderTickets implements Serializable {
};
};
}
}
/**
* 获取 再次支付 数据库参数
*
* @return
*/
public
Object
[]
getPayAgainObject
()
{
return
new
Object
[]{
orderTicketsId
,
orderType
,
updatedAt
,
orderCode
};
}
/**
* 获取 支付回调 数据库参数
*
* @return
*/
public
Object
[]
getSynOrderObject
()
{
return
new
Object
[]{
orderTicketsId
,
paymentType
,
payCode
,
timePay
,
qrCode
,
updatedAt
};
}
}
}
liquidnet-bus-service/liquidnet-service-kylin/liquidnet-service-kylin-impl/docu/db_kylin_structure.sql
View file @
6b1f9daa
...
@@ -511,9 +511,6 @@ CREATE TABLE `kylin_order_ticket_entities`
...
@@ -511,9 +511,6 @@ CREATE TABLE `kylin_order_ticket_entities`
)
ENGINE
=
InnoDB
)
ENGINE
=
InnoDB
DEFAULT
CHARSET
=
utf8mb4
COMMENT
'订单详情'
;
DEFAULT
CHARSET
=
utf8mb4
COMMENT
'订单详情'
;
-- 大麦同步记录 TODO 待定
-- 验票相关 TODO 待定
-- 会员权益修改表 TODO 待定
-- 订单退款 <初步>
-- 订单退款 <初步>
drop
TABLE
if
exists
`kylin_order_tickets_refund`
;
drop
TABLE
if
exists
`kylin_order_tickets_refund`
;
CREATE
TABLE
`kylin_order_tickets_refund`
CREATE
TABLE
`kylin_order_tickets_refund`
...
@@ -589,6 +586,85 @@ CREATE TABLE `kylin_check_user_performances`
...
@@ -589,6 +586,85 @@ CREATE TABLE `kylin_check_user_performances`
)
ENGINE
=
InnoDB
)
ENGINE
=
InnoDB
DEFAULT
CHARSET
=
utf8mb4
COMMENT
'验票用户可看演出表'
;
DEFAULT
CHARSET
=
utf8mb4
COMMENT
'验票用户可看演出表'
;
-- 快递相关临时
CREATE
TABLE
`express_batches`
(
`id`
int
unsigned
NOT
NULL
AUTO_INCREMENT
,
`admin_id`
int
NOT
NULL
DEFAULT
'0'
COMMENT
'管理员'
,
`order_id`
int
NOT
NULL
DEFAULT
'0'
COMMENT
'订单Id,订阅前查询'
,
`order_type`
varchar
(
30
)
CHARACTER
SET
utf8
COLLATE
utf8_unicode_ci
NOT
NULL
COMMENT
'订单类型 order_product 商品订单 , order_ticket 票务订单, order_integration 积分订单'
,
`order_code`
varchar
(
255
)
CHARACTER
SET
utf8
COLLATE
utf8_unicode_ci
NOT
NULL
DEFAULT
''
COMMENT
'订单编号'
,
`name`
varchar
(
50
)
CHARACTER
SET
utf8
COLLATE
utf8_unicode_ci
NOT
NULL
DEFAULT
''
COMMENT
'快递公司名称'
,
`company`
varchar
(
50
)
CHARACTER
SET
utf8
COLLATE
utf8_unicode_ci
NOT
NULL
DEFAULT
''
COMMENT
'快递公司编号'
,
`number`
varchar
(
50
)
CHARACTER
SET
utf8
COLLATE
utf8_unicode_ci
NOT
NULL
DEFAULT
''
COMMENT
'快递单号'
,
`status`
tinyint
NOT
NULL
DEFAULT
'0'
COMMENT
'状态 0新导入 1订阅成功 2订阅失败'
,
`import_time`
timestamp
NOT
NULL
DEFAULT
CURRENT_TIMESTAMP
COMMENT
'导入时间'
,
`batch`
int
NOT
NULL
DEFAULT
'0'
COMMENT
'导入批次'
,
`reason`
varchar
(
200
)
CHARACTER
SET
utf8
COLLATE
utf8_unicode_ci
DEFAULT
NULL
COMMENT
'失败原因'
,
`created_at`
timestamp
NULL
DEFAULT
NULL
,
`updated_at`
timestamp
NULL
DEFAULT
NULL
,
PRIMARY
KEY
(
`id`
),
KEY
`express_batches_batch_index`
(
`batch`
),
KEY
`express_batches_company_index`
(
`company`
),
KEY
`express_batches_number_index`
(
`number`
),
KEY
`express_batches_order_code_index`
(
`order_code`
),
KEY
`express_batches_order_type_index`
(
`order_type`
)
)
ENGINE
=
InnoDB
AUTO_INCREMENT
=
34781
DEFAULT
CHARSET
=
utf8
COLLATE
=
utf8_unicode_ci
ROW_FORMAT
=
DYNAMIC
;
CREATE
TABLE
`express_logs`
(
`id`
int
unsigned
NOT
NULL
AUTO_INCREMENT
,
`order_id`
int
NOT
NULL
COMMENT
'订单id'
,
`order_type`
varchar
(
50
)
CHARACTER
SET
utf8
COLLATE
utf8_unicode_ci
NOT
NULL
DEFAULT
''
COMMENT
'订单类型 order_product 商品订单 , order_ticket 票务订单'
,
`admin_id`
int
NOT
NULL
DEFAULT
'0'
COMMENT
'修改人id'
,
`admin_name`
varchar
(
100
)
CHARACTER
SET
utf8
COLLATE
utf8_unicode_ci
NOT
NULL
DEFAULT
''
COMMENT
'修改人名称'
,
`name`
varchar
(
50
)
CHARACTER
SET
utf8
COLLATE
utf8_unicode_ci
NOT
NULL
DEFAULT
''
COMMENT
'快递联系人'
,
`mobile`
varchar
(
20
)
CHARACTER
SET
utf8
COLLATE
utf8_unicode_ci
NOT
NULL
DEFAULT
''
COMMENT
'快递联系电话'
,
`address`
varchar
(
200
)
CHARACTER
SET
utf8
COLLATE
utf8_unicode_ci
NOT
NULL
DEFAULT
''
COMMENT
'快递收货地址'
,
`created_at`
timestamp
NULL
DEFAULT
NULL
,
`updated_at`
timestamp
NULL
DEFAULT
NULL
,
PRIMARY
KEY
(
`id`
)
)
ENGINE
=
InnoDB
AUTO_INCREMENT
=
487
DEFAULT
CHARSET
=
utf8
COLLATE
=
utf8_unicode_ci
ROW_FORMAT
=
DYNAMIC
;
CREATE
TABLE
`express_batches`
(
`id`
int
unsigned
NOT
NULL
AUTO_INCREMENT
,
`admin_id`
int
NOT
NULL
DEFAULT
'0'
COMMENT
'管理员'
,
`order_id`
int
NOT
NULL
DEFAULT
'0'
COMMENT
'订单Id,订阅前查询'
,
`order_type`
varchar
(
30
)
CHARACTER
SET
utf8
COLLATE
utf8_unicode_ci
NOT
NULL
COMMENT
'订单类型 order_product 商品订单 , order_ticket 票务订单, order_integration 积分订单'
,
`order_code`
varchar
(
255
)
CHARACTER
SET
utf8
COLLATE
utf8_unicode_ci
NOT
NULL
DEFAULT
''
COMMENT
'订单编号'
,
`name`
varchar
(
50
)
CHARACTER
SET
utf8
COLLATE
utf8_unicode_ci
NOT
NULL
DEFAULT
''
COMMENT
'快递公司名称'
,
`company`
varchar
(
50
)
CHARACTER
SET
utf8
COLLATE
utf8_unicode_ci
NOT
NULL
DEFAULT
''
COMMENT
'快递公司编号'
,
`number`
varchar
(
50
)
CHARACTER
SET
utf8
COLLATE
utf8_unicode_ci
NOT
NULL
DEFAULT
''
COMMENT
'快递单号'
,
`status`
tinyint
NOT
NULL
DEFAULT
'0'
COMMENT
'状态 0新导入 1订阅成功 2订阅失败'
,
`import_time`
timestamp
NOT
NULL
DEFAULT
CURRENT_TIMESTAMP
COMMENT
'导入时间'
,
`batch`
int
NOT
NULL
DEFAULT
'0'
COMMENT
'导入批次'
,
`reason`
varchar
(
200
)
CHARACTER
SET
utf8
COLLATE
utf8_unicode_ci
DEFAULT
NULL
COMMENT
'失败原因'
,
`created_at`
timestamp
NULL
DEFAULT
NULL
,
`updated_at`
timestamp
NULL
DEFAULT
NULL
,
PRIMARY
KEY
(
`id`
),
KEY
`express_batches_batch_index`
(
`batch`
),
KEY
`express_batches_company_index`
(
`company`
),
KEY
`express_batches_number_index`
(
`number`
),
KEY
`express_batches_order_code_index`
(
`order_code`
),
KEY
`express_batches_order_type_index`
(
`order_type`
)
)
ENGINE
=
InnoDB
AUTO_INCREMENT
=
34781
DEFAULT
CHARSET
=
utf8
COLLATE
=
utf8_unicode_ci
ROW_FORMAT
=
DYNAMIC
;
CREATE
TABLE
`expresses`
(
`id`
int
unsigned
NOT
NULL
AUTO_INCREMENT
,
`admin_id`
int
NOT
NULL
DEFAULT
'0'
COMMENT
'管理员'
,
`order_id`
int
NOT
NULL
DEFAULT
'0'
COMMENT
'订单Id'
,
`order_code`
varchar
(
255
)
CHARACTER
SET
utf8
COLLATE
utf8_unicode_ci
NOT
NULL
DEFAULT
''
COMMENT
'订单编号'
,
`order_type`
varchar
(
30
)
CHARACTER
SET
utf8
COLLATE
utf8_unicode_ci
NOT
NULL
COMMENT
'订单类型 order_product 商品订单 , order_ticket 票务订单, order_integration 积分订单'
,
`status`
tinyint
NOT
NULL
DEFAULT
'-1'
COMMENT
'状态 -1待揽收、0在途中、1已揽收、2疑难、3已签收'
,
`number`
varchar
(
50
)
CHARACTER
SET
utf8
COLLATE
utf8_unicode_ci
DEFAULT
''
COMMENT
'快递单号'
,
`name`
varchar
(
50
)
CHARACTER
SET
utf8
COLLATE
utf8_unicode_ci
NOT
NULL
DEFAULT
''
COMMENT
'快递公司名称'
,
`company`
varchar
(
50
)
CHARACTER
SET
utf8
COLLATE
utf8_unicode_ci
NOT
NULL
DEFAULT
''
COMMENT
'快递公司编号'
,
`created_at`
timestamp
NULL
DEFAULT
NULL
,
`updated_at`
timestamp
NULL
DEFAULT
NULL
,
PRIMARY
KEY
(
`id`
),
KEY
`expresses_number_index`
(
`number`
),
KEY
`expresses_order_code_index`
(
`order_code`
),
KEY
`expresses_order_id_index`
(
`order_id`
),
KEY
`expresses_order_type_index`
(
`order_type`
)
)
ENGINE
=
InnoDB
AUTO_INCREMENT
=
56762
DEFAULT
CHARSET
=
utf8
COLLATE
=
utf8_unicode_ci
ROW_FORMAT
=
DYNAMIC
COMMENT
=
'快递表'
;
insert
into
`kylin_buy_notice`
(
`buy_notice_id`
,
`img_url`
,
`message`
,
`status`
,
`sort`
,
`created_at`
,
insert
into
`kylin_buy_notice`
(
`buy_notice_id`
,
`img_url`
,
`message`
,
`status`
,
`sort`
,
`created_at`
,
`updated_at`
,
`title`
)
`updated_at`
,
`title`
)
values
(
'1'
,
'http://img-zhengzai-tv.oss-cn-hangzhou.aliyuncs.com/partner/2019/01/21/5c45722882a13.png'
,
values
(
'1'
,
'http://img-zhengzai-tv.oss-cn-hangzhou.aliyuncs.com/partner/2019/01/21/5c45722882a13.png'
,
...
...
liquidnet-bus-service/liquidnet-service-kylin/liquidnet-service-kylin-impl/src/main/java/com/liquidnet/service/kylin/controller/KylinOrderTicketsController.java
View file @
6b1f9daa
package
com
.
liquidnet
.
service
.
kylin
.
controller
;
package
com
.
liquidnet
.
service
.
kylin
.
controller
;
import
com.github.pagehelper.PageInfo
;
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.PayOrderParam
;
import
com.liquidnet.service.kylin.dto.param.PayOrderParam
;
import
com.liquidnet.service.kylin.dto.param.SyncOrderParam
;
import
com.liquidnet.service.kylin.dto.vo.KylinOrderListVo
;
import
com.liquidnet.service.kylin.dto.vo.PayResultVo
;
import
com.liquidnet.service.kylin.dto.vo.PayResultVo
;
import
com.liquidnet.service.kylin.service.impl.KylinOrderTicketsServiceImpl
;
import
com.liquidnet.service.kylin.service.impl.KylinOrderTicketsServiceImpl
;
import
io.swagger.annotations.Api
;
import
io.swagger.annotations.Api
;
...
@@ -11,6 +15,8 @@ import io.swagger.annotations.ApiResponse;
...
@@ -11,6 +15,8 @@ import io.swagger.annotations.ApiResponse;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.web.bind.annotation.*
;
import
org.springframework.web.bind.annotation.*
;
import
java.util.List
;
/**
/**
* <p>
* <p>
* 订单 前端控制器
* 订单 前端控制器
...
@@ -34,4 +40,32 @@ public class KylinOrderTicketsController {
...
@@ -34,4 +40,32 @@ public class KylinOrderTicketsController {
return
orderTicketsService
.
checkCanOrder
(
payOrderParam
);
return
orderTicketsService
.
checkCanOrder
(
payOrderParam
);
}
}
@PostMapping
(
"payAgain"
)
@ApiOperation
(
"再次支付"
)
@ApiResponse
(
code
=
200
,
message
=
"接口返回对象参数"
)
public
ResponseDto
<
PayResultVo
>
payAgain
(
@RequestBody
PayAgainParam
payAgainParam
)
{
return
orderTicketsService
.
payAgain
(
payAgainParam
);
}
@PostMapping
(
"syncOrder"
)
@ApiOperation
(
"支付回调"
)
@ApiResponse
(
code
=
200
,
message
=
"接口返回对象参数"
)
public
String
payAgain
(
@RequestBody
SyncOrderParam
syncOrderParam
)
{
return
orderTicketsService
.
syncOrder
(
syncOrderParam
);
}
@GetMapping
(
"list"
)
@ApiOperation
(
"订单列表"
)
@ApiResponse
(
code
=
200
,
message
=
"接口返回对象参数"
)
public
ResponseDto
<
PageInfo
<
List
<
KylinOrderListVo
>>>
payAgain
(
@RequestParam
(
"page"
)
int
page
,
@RequestParam
(
"size"
)
int
size
)
{
return
ResponseDto
.
success
(
orderTicketsService
.
orderList
(
page
,
size
));
}
@GetMapping
(
"checkOrderTime"
)
@ApiOperation
(
"订单过期脚本"
)
@ApiResponse
(
code
=
200
,
message
=
"接口返回对象参数"
)
public
ResponseDto
<
Boolean
>
checkOrderTime
()
{
return
ResponseDto
.
success
(
orderTicketsService
.
checkOrderTime
(
null
));
}
}
}
liquidnet-bus-service/liquidnet-service-kylin/liquidnet-service-kylin-impl/src/main/java/com/liquidnet/service/kylin/service/impl/KylinOrderTicketsServiceImpl.java
View file @
6b1f9daa
package
com
.
liquidnet
.
service
.
kylin
.
service
.
impl
;
package
com
.
liquidnet
.
service
.
kylin
.
service
.
impl
;
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.commons.lang.util.*
;
import
com.liquidnet.service.adam.dto.vo.AdamAddressesVo
;
import
com.liquidnet.service.adam.dto.vo.AdamAddressesVo
;
import
com.liquidnet.service.adam.dto.vo.AdamEntersVo
;
import
com.liquidnet.service.adam.dto.vo.AdamEntersVo
;
import
com.liquidnet.service.base.ResponseDto
;
import
com.liquidnet.service.base.ResponseDto
;
import
com.liquidnet.service.base.SqlMapping
;
import
com.liquidnet.service.feign.adam.api.FeignAdamBaseClient
;
import
com.liquidnet.service.feign.adam.api.FeignAdamBaseClient
;
import
com.liquidnet.service.kylin.constant.KylinRedisConst
;
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.vo.*
;
import
com.liquidnet.service.kylin.dto.vo.*
;
import
com.liquidnet.service.kylin.entity.*
;
import
com.liquidnet.service.kylin.entity.*
;
import
com.liquidnet.service.kylin.mapper.KylinOrderTicketsMapper
;
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.baomidou.mybatisplus.extension.service.impl.ServiceImpl
;
import
com.liquidnet.service.kylin.utils.DataUtils
;
import
com.liquidnet.service.kylin.utils.DataUtils
;
import
com.mongodb.BasicDBObject
;
import
org.redisson.api.RLock
;
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.data.domain.PageRequest
;
import
org.springframework.data.domain.Pageable
;
import
org.springframework.data.domain.Sort
;
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.Query
;
import
org.springframework.stereotype.Service
;
import
org.springframework.stereotype.Service
;
import
org.springframework.util.LinkedMultiValueMap
;
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.time.format.DateTimeFormatter
;
import
java.util.ArrayList
;
import
java.util.*
;
import
java.util.LinkedList
;
import
java.util.List
;
import
java.util.Map
;
/**
/**
* <p>
* <p>
...
@@ -38,11 +52,21 @@ import java.util.Map;
...
@@ -38,11 +52,21 @@ import java.util.Map;
@Service
@Service
public
class
KylinOrderTicketsServiceImpl
extends
ServiceImpl
<
KylinOrderTicketsMapper
,
KylinOrderTickets
>
implements
IKylinOrderTicketsService
{
public
class
KylinOrderTicketsServiceImpl
extends
ServiceImpl
<
KylinOrderTicketsMapper
,
KylinOrderTickets
>
implements
IKylinOrderTicketsService
{
@Value
(
"${liquidnet.url-pay.pay}"
)
private
String
payUrl
;
@Value
(
"${liquidnet.url-pay.check}"
)
private
String
checkUrl
;
@Autowired
@Autowired
private
DataUtils
dataUtils
;
private
DataUtils
dataUtils
;
@Autowired
@Autowired
private
RedisUtil
redisUtil
;
@Autowired
private
RedisLockUtil
redisLockUtil
;
@Autowired
private
MongoTemplate
mongoTemplate
;
private
MongoTemplate
mongoTemplate
;
@Autowired
@Autowired
private
MongoConverter
mongoConverter
;
@Autowired
private
RabbitTemplate
rabbitTemplate
;
private
RabbitTemplate
rabbitTemplate
;
@Autowired
@Autowired
private
FeignAdamBaseClient
feignAdamBaseClient
;
private
FeignAdamBaseClient
feignAdamBaseClient
;
...
@@ -50,29 +74,40 @@ public class KylinOrderTicketsServiceImpl extends ServiceImpl<KylinOrderTicketsM
...
@@ -50,29 +74,40 @@ public class KylinOrderTicketsServiceImpl extends ServiceImpl<KylinOrderTicketsM
@Override
@Override
public
ResponseDto
<
PayResultVo
>
checkCanOrder
(
PayOrderParam
payOrderParam
)
{
public
ResponseDto
<
PayResultVo
>
checkCanOrder
(
PayOrderParam
payOrderParam
)
{
boolean
isDownGeneral
=
false
;
boolean
isDownGeneral
=
false
;
try
{
String
uid
=
CurrentUtil
.
getCurrentUid
();
String
uid
=
CurrentUtil
.
getCurrentUid
();
RLock
lock
=
RedisLockUtil
.
lock
(
"userId:"
+
uid
,
2
);
try
{
if
(
lock
.
isLocked
())
{
return
ResponseDto
.
failure
(
"请求频繁"
);
//参数错误
}
KylinPerformanceVo
performanceData
=
dataUtils
.
getPerformanceVo
(
payOrderParam
.
getPerformanceId
());
KylinPerformanceVo
performanceData
=
dataUtils
.
getPerformanceVo
(
payOrderParam
.
getPerformanceId
());
KylinTicketTimesVo
ticketTimesData
=
dataUtils
.
getTicketTimesVo
(
payOrderParam
.
getTimeId
());
KylinTicketTimesVo
ticketTimesData
=
dataUtils
.
getTicketTimesVo
(
payOrderParam
.
getTimeId
());
KylinTicketVo
ticketData
=
dataUtils
.
getTicketVo
(
payOrderParam
.
getTicketId
());
KylinTicketVo
ticketData
=
dataUtils
.
getTicketVo
(
payOrderParam
.
getTicketId
());
if
(
performanceData
==
null
||
ticketTimesData
==
null
||
ticketData
==
null
)
{
if
(
performanceData
==
null
||
ticketTimesData
==
null
||
ticketData
==
null
)
{
lock
.
unlock
();
return
ResponseDto
.
failure
(
"参数错误"
);
//参数错误
return
ResponseDto
.
failure
(
"参数错误"
);
//参数错误
}
}
if
(!
ticketData
.
getTimeId
().
equals
(
payOrderParam
.
getTimeId
())
||
!
ticketTimesData
.
getPerformanceId
().
equals
(
payOrderParam
.
getPerformanceId
()))
{
if
(!
ticketData
.
getTimeId
().
equals
(
payOrderParam
.
getTimeId
())
||
!
ticketTimesData
.
getPerformanceId
().
equals
(
payOrderParam
.
getPerformanceId
()))
{
lock
.
unlock
();
return
ResponseDto
.
failure
(
"参数错误"
);
//参数错误List<AdamEntersVo> entersVoList
return
ResponseDto
.
failure
(
"参数错误"
);
//参数错误List<AdamEntersVo> entersVoList
}
}
//判断代理
if
(!
checkAgent
(
payOrderParam
.
getAgentId
(),
ticketData
)){
lock
.
unlock
();
return
ResponseDto
.
failure
(
"无权购买"
);
}
//会员时间获取
//会员时间获取
String
memberTimeStart
=
ticketData
.
getMemberTimeStart
();
// 会员开售时间
String
memberTimeStart
=
ticketData
.
getMemberTimeStart
();
// 会员开售时间
String
timeStart
=
ticketData
.
getTimeStart
();
// 普通开售时间
String
timeStart
=
ticketData
.
getTimeStart
();
// 普通开售时间
String
timeEnd
=
ticketData
.
getTimeEnd
();
// 购票停售时间
String
timeEnd
=
ticketData
.
getTimeEnd
();
// 购票停售时间
String
timeExpressEnd
=
ticketData
.
getTimeEndExpress
();
// 快递停售时间
String
timeExpressEnd
=
ticketData
.
getTimeEndExpress
();
// 快递停售时间
int
performanceBuyCount
;
//演出下所有票种购买数量
int
ticketBuyCount
;
// 单一票种购买数量
boolean
isMember
=
feignAdamBaseClient
.
isMember
(
uid
).
getData
();
//获取是否是会员
boolean
isMember
=
feignAdamBaseClient
.
isMember
(
uid
).
getData
();
//获取是否是会员
int
memberType
;
//会员状态 不需要判断会员 1判断会员逻辑 2会员专属
int
memberType
;
//会员状态 不需要判断会员 1判断会员逻辑 2会员专属
if
(
ticketData
.
getIsExclusive
()
==
1
)
{
if
(
ticketData
.
getIsExclusive
()
==
1
)
{
memberType
=
2
;
memberType
=
2
;
if
(!
isMember
)
{
if
(!
isMember
)
{
lock
.
unlock
();
return
ResponseDto
.
failure
(
"非会员用户暂不可购买"
);
//没有会员权限
return
ResponseDto
.
failure
(
"非会员用户暂不可购买"
);
//没有会员权限
}
}
}
else
{
}
else
{
...
@@ -80,6 +115,7 @@ public class KylinOrderTicketsServiceImpl extends ServiceImpl<KylinOrderTicketsM
...
@@ -80,6 +115,7 @@ public class KylinOrderTicketsServiceImpl extends ServiceImpl<KylinOrderTicketsM
// 会员购买逻辑
// 会员购买逻辑
memberType
=
1
;
memberType
=
1
;
if
(!
isMember
)
{
if
(!
isMember
)
{
lock
.
unlock
();
return
ResponseDto
.
failure
(
"非会员用户暂不可购买"
);
//没有会员权限
return
ResponseDto
.
failure
(
"非会员用户暂不可购买"
);
//没有会员权限
}
}
}
else
{
}
else
{
...
@@ -98,29 +134,36 @@ public class KylinOrderTicketsServiceImpl extends ServiceImpl<KylinOrderTicketsM
...
@@ -98,29 +134,36 @@ public class KylinOrderTicketsServiceImpl extends ServiceImpl<KylinOrderTicketsM
//通用判断时间
//通用判断时间
if
(
isMember
)
{
if
(
isMember
)
{
if
(
DateUtil
.
compareStrDay
(
DateUtil
.
getNowTime
(),
memberTimeStart
)
==
-
1
)
{
if
(
DateUtil
.
compareStrDay
(
DateUtil
.
getNowTime
(),
memberTimeStart
)
==
-
1
)
{
lock
.
unlock
();
return
ResponseDto
.
failure
(
"未开始售卖"
);
//未开始
return
ResponseDto
.
failure
(
"未开始售卖"
);
//未开始
}
}
}
else
{
}
else
{
if
(
DateUtil
.
compareStrDay
(
DateUtil
.
getNowTime
(),
timeStart
)
==
-
1
)
{
if
(
DateUtil
.
compareStrDay
(
DateUtil
.
getNowTime
(),
timeStart
)
==
-
1
)
{
lock
.
unlock
();
return
ResponseDto
.
failure
(
"未开始售卖"
);
//未开始
return
ResponseDto
.
failure
(
"未开始售卖"
);
//未开始
}
}
}
}
if
(
DateUtil
.
compareStrDay
(
DateUtil
.
getNowTime
(),
timeEnd
)
==
1
)
{
if
(
DateUtil
.
compareStrDay
(
DateUtil
.
getNowTime
(),
timeEnd
)
==
1
)
{
lock
.
unlock
();
return
ResponseDto
.
failure
(
"售卖已结束"
);
//已结束
return
ResponseDto
.
failure
(
"售卖已结束"
);
//已结束
}
}
//快递票判断
//快递票判断
if
(
payOrderParam
.
getIsExpress
()
==
1
&&
DateUtil
.
compareStrDay
(
DateUtil
.
getNowTime
(),
timeExpressEnd
)
==
1
)
{
if
(
payOrderParam
.
getIsExpress
()
==
1
&&
DateUtil
.
compareStrDay
(
DateUtil
.
getNowTime
(),
timeExpressEnd
)
==
1
)
{
lock
.
unlock
();
return
ResponseDto
.
failure
(
"已超过快递票截止时间"
);
//快递票不卖
return
ResponseDto
.
failure
(
"已超过快递票截止时间"
);
//快递票不卖
}
}
if
(
payOrderParam
.
getIsExpress
()
==
1
&&
payOrderParam
.
getAddressId
().
isEmpty
())
{
if
(
payOrderParam
.
getIsExpress
()
==
1
&&
payOrderParam
.
getAddressId
().
isEmpty
())
{
lock
.
unlock
();
return
ResponseDto
.
failure
(
"快递票未填写收货地址"
);
//快递票未填写收货地址
return
ResponseDto
.
failure
(
"快递票未填写收货地址"
);
//快递票未填写收货地址
}
}
//实名判断
//实名判断
if
(
isTrueName
==
1
&&
payOrderParam
.
getEnterIdList
().
size
()
<=
0
)
{
if
(
isTrueName
==
1
&&
payOrderParam
.
getEnterIdList
().
size
()
<=
0
)
{
lock
.
unlock
();
return
ResponseDto
.
failure
(
"入场人数量错误"
);
//需要实名 未实名
return
ResponseDto
.
failure
(
"入场人数量错误"
);
//需要实名 未实名
}
}
if
(
isTrueName
==
1
&&
payOrderParam
.
getEnterIdList
().
size
()
!=
payOrderParam
.
getNumber
())
{
if
(
isTrueName
==
1
&&
payOrderParam
.
getEnterIdList
().
size
()
!=
payOrderParam
.
getNumber
())
{
lock
.
unlock
();
return
ResponseDto
.
failure
(
"入场人数量错误"
);
//入场人数量错误
return
ResponseDto
.
failure
(
"入场人数量错误"
);
//入场人数量错误
}
}
...
@@ -128,65 +171,120 @@ public class KylinOrderTicketsServiceImpl extends ServiceImpl<KylinOrderTicketsM
...
@@ -128,65 +171,120 @@ public class KylinOrderTicketsServiceImpl extends ServiceImpl<KylinOrderTicketsM
int
surplusGeneral
=
dataUtils
.
changeSurplusGeneral
(
payOrderParam
.
getTicketId
(),
-
payOrderParam
.
getNumber
());
int
surplusGeneral
=
dataUtils
.
changeSurplusGeneral
(
payOrderParam
.
getTicketId
(),
-
payOrderParam
.
getNumber
());
if
(
surplusGeneral
<
0
)
{
//库存回滚
if
(
surplusGeneral
<
0
)
{
//库存回滚
dataUtils
.
changeSurplusGeneral
(
payOrderParam
.
getTicketId
(),
payOrderParam
.
getNumber
());
dataUtils
.
changeSurplusGeneral
(
payOrderParam
.
getTicketId
(),
payOrderParam
.
getNumber
());
lock
.
unlock
();
return
ResponseDto
.
failure
(
"该票种已售罄"
);
//没抢到
return
ResponseDto
.
failure
(
"该票种已售罄"
);
//没抢到
}
else
{
}
else
{
isDownGeneral
=
true
;
isDownGeneral
=
true
;
//学生票 判断
List
<
AdamEntersVo
>
entersVoList
=
new
ArrayList
<>();
if
(
null
!=
payOrderParam
.
getIsStudent
()
&&
payOrderParam
.
getIsStudent
()
==
1
)
{
for
(
String
enterId
:
payOrderParam
.
getEnterIdList
())
{
AdamEntersVo
adamEnters
=
feignAdamBaseClient
.
queryEnters
(
enterId
,
uid
).
getData
();
entersVoList
.
add
(
adamEnters
);
int
age
=
IDCard
.
getAgeByIdCard
(
adamEnters
.
getIdCard
());
if
(
age
>
25
)
{
lock
.
unlock
();
return
ResponseDto
.
failure
(
"年龄不符合"
);
//年龄超了
}
}
}
//限购判断 如果实名 则身份证维度限购 如果不实名则数量限购
//限购判断 如果实名 则身份证维度限购 如果不实名则数量限购
Query
queryPerformance
=
new
Query
();
Query
queryTicket
=
new
Query
();
queryPerformance
.
addCriteria
(
Criteria
.
where
(
"performanceId"
).
is
(
payOrderParam
.
getPerformanceId
()).
and
(
"status"
).
in
(
0
,
1
));
queryTicket
.
addCriteria
(
Criteria
.
where
(
"ticketId"
).
is
(
payOrderParam
.
getTicketId
()).
and
(
"status"
).
in
(
0
,
1
));
int
performanceBuyCount
=
0
;
//演出下所有票种购买数量
int
ticketBuyCount
=
0
;
// 单一票种购买数量
if
(
isTrueName
==
1
)
{
if
(
isTrueName
==
1
)
{
//已购买数量 身份证
//已购买数量 身份证
performanceBuyCount
=
0
+
payOrderParam
.
getNumber
();
//演出下所有票种购买数量 TODO
queryPerformance
.
fields
().
include
(
"orderTicketsId"
);
ticketBuyCount
=
0
+
payOrderParam
.
getNumber
();
// 单一票种购买数量 TODO
queryTicket
.
fields
().
include
(
"orderTicketsId"
);
KylinOrderTicketVo
performanceOrderId
=
mongoTemplate
.
findOne
(
queryPerformance
,
KylinOrderTicketVo
.
class
,
KylinOrderTicketVo
.
class
.
getSimpleName
());
KylinOrderTicketVo
ticketOrderId
=
mongoTemplate
.
findOne
(
queryTicket
,
KylinOrderTicketVo
.
class
,
KylinOrderTicketVo
.
class
.
getSimpleName
());
if
(
performanceOrderId
!=
null
&&
ticketOrderId
!=
null
)
{
for
(
AdamEntersVo
item
:
entersVoList
)
{
performanceBuyCount
+=
mongoTemplate
.
count
(
Query
.
query
(
Criteria
.
where
(
"enterIdCode"
).
is
(
item
.
getIdCard
()).
and
(
"performanceId"
).
is
(
payOrderParam
.
getPerformanceId
()).
and
(
"orderTicketsId"
).
is
(
performanceOrderId
.
getOrderTicketsId
())),
KylinOrderTicketEntitiesVo
.
class
,
KylinOrderTicketEntitiesVo
.
class
.
getSimpleName
())
+
payOrderParam
.
getNumber
();
ticketBuyCount
+=
mongoTemplate
.
count
(
Query
.
query
(
Criteria
.
where
(
"enterIdCode"
).
is
(
item
.
getIdCard
()).
and
(
"ticketId"
).
is
(
payOrderParam
.
getPerformanceId
()).
and
(
"orderTicketsId"
).
is
(
ticketOrderId
.
getOrderTicketsId
())),
KylinOrderTicketEntitiesVo
.
class
,
KylinOrderTicketEntitiesVo
.
class
.
getSimpleName
())
+
payOrderParam
.
getNumber
();
//会员区间
if
(
memberType
==
1
||
memberType
==
2
)
{
if
(
performanceBuyCount
>=
performanceMemberLimit
&&
performanceMemberLimit
!=
0
)
{
lock
.
unlock
();
return
ResponseDto
.
failure
(
"该演出只能购买"
+
performanceMemberLimit
+
"张"
);
//超过演出维度购买量
}
if
(
ticketBuyCount
>=
ticketMemberLimit
&&
ticketMemberLimit
!=
0
)
{
lock
.
unlock
();
return
ResponseDto
.
failure
(
"该票种只能购买"
+
ticketMemberLimit
+
"张"
);
//超过票维度购买量
}
}
else
{
//非会员区间
if
(
performanceBuyCount
>=
performanceLimit
&&
performanceLimit
!=
0
)
{
lock
.
unlock
();
return
ResponseDto
.
failure
(
"该演出只能购买"
+
performanceLimit
+
"张"
);
//超过演出维度购买量
}
if
(
ticketBuyCount
>=
ticketLimit
&&
ticketLimit
!=
0
)
{
lock
.
unlock
();
return
ResponseDto
.
failure
(
"该票种只能购买"
+
ticketLimit
+
"张"
);
//超过票维度购买量
}
}
}
}
}
else
{
}
else
{
//已购买数量 数量
//已购买数量 数量
performanceBuyCount
=
0
+
payOrderParam
.
getNumber
();
//演出下所有票种购买数量 TODO
queryPerformance
.
fields
().
include
(
"number"
);
ticketBuyCount
=
0
+
payOrderParam
.
getNumber
();
// 单一票种购买数量 TODO
queryTicket
.
fields
().
include
(
"number"
);
List
<
KylinOrderTicketVo
>
performanceList
=
mongoTemplate
.
find
(
queryPerformance
,
KylinOrderTicketVo
.
class
,
KylinOrderTicketVo
.
class
.
getSimpleName
());
List
<
KylinOrderTicketVo
>
ticketList
=
mongoTemplate
.
find
(
queryTicket
,
KylinOrderTicketVo
.
class
,
KylinOrderTicketVo
.
class
.
getSimpleName
());
for
(
KylinOrderTicketVo
number
:
performanceList
)
{
performanceBuyCount
+=
number
.
getNumber
();
}
}
for
(
KylinOrderTicketVo
number
:
ticketList
)
{
ticketBuyCount
+=
number
.
getNumber
();
}
performanceBuyCount
+=
payOrderParam
.
getNumber
();
//演出下所有票种购买数量
ticketBuyCount
+=
payOrderParam
.
getNumber
();
// 单一票种购买数量
//会员区间
//会员区间
if
(
memberType
==
1
||
memberType
==
2
)
{
if
(
memberType
==
1
||
memberType
==
2
)
{
if
(
performanceBuyCount
>=
performanceMemberLimit
&&
performanceMemberLimit
!=
0
)
{
if
(
performanceBuyCount
>=
performanceMemberLimit
&&
performanceMemberLimit
!=
0
)
{
lock
.
unlock
();
return
ResponseDto
.
failure
(
"该演出只能购买"
+
performanceMemberLimit
+
"张"
);
//超过演出维度购买量
return
ResponseDto
.
failure
(
"该演出只能购买"
+
performanceMemberLimit
+
"张"
);
//超过演出维度购买量
}
}
if
(
ticketBuyCount
>=
ticketMemberLimit
&&
ticketMemberLimit
!=
0
)
{
if
(
ticketBuyCount
>=
ticketMemberLimit
&&
ticketMemberLimit
!=
0
)
{
lock
.
unlock
();
return
ResponseDto
.
failure
(
"该票种只能购买"
+
ticketMemberLimit
+
"张"
);
//超过票维度购买量
return
ResponseDto
.
failure
(
"该票种只能购买"
+
ticketMemberLimit
+
"张"
);
//超过票维度购买量
}
}
}
else
{
//非会员区间
}
else
{
//非会员区间
if
(
performanceBuyCount
>=
performanceLimit
&&
performanceLimit
!=
0
)
{
if
(
performanceBuyCount
>=
performanceLimit
&&
performanceLimit
!=
0
)
{
lock
.
unlock
();
return
ResponseDto
.
failure
(
"该演出只能购买"
+
performanceLimit
+
"张"
);
//超过演出维度购买量
return
ResponseDto
.
failure
(
"该演出只能购买"
+
performanceLimit
+
"张"
);
//超过演出维度购买量
}
}
if
(
ticketBuyCount
>=
ticketLimit
&&
ticketLimit
!=
0
)
{
if
(
ticketBuyCount
>=
ticketLimit
&&
ticketLimit
!=
0
)
{
lock
.
unlock
();
return
ResponseDto
.
failure
(
"该票种只能购买"
+
ticketLimit
+
"张"
);
//超过票维度购买量
return
ResponseDto
.
failure
(
"该票种只能购买"
+
ticketLimit
+
"张"
);
//超过票维度购买量
}
}
}
}
return
order
(
payOrderParam
,
uid
,
isMember
,
isTrueName
,
performanceData
,
ticketData
);
}
lock
.
unlock
();
return
order
(
payOrderParam
,
uid
,
isMember
,
isTrueName
,
performanceData
,
ticketData
,
entersVoList
);
}
}
}
catch
(
Exception
e
)
{
}
catch
(
Exception
e
)
{
if
(
isDownGeneral
)
{
if
(
isDownGeneral
)
{
dataUtils
.
changeSurplusGeneral
(
payOrderParam
.
getTicketId
(),
payOrderParam
.
getNumber
());
dataUtils
.
changeSurplusGeneral
(
payOrderParam
.
getTicketId
(),
payOrderParam
.
getNumber
());
}
}
e
.
printStackTrace
();
e
.
printStackTrace
();
lock
.
unlock
();
return
ResponseDto
.
failure
(
"下单失败"
);
//乱七八糟异常
return
ResponseDto
.
failure
(
"下单失败"
);
//乱七八糟异常
}
}
}
}
@Override
private
ResponseDto
<
PayResultVo
>
order
(
PayOrderParam
payOrderParam
,
String
uid
,
boolean
isMember
,
int
isTrueName
,
KylinPerformanceVo
performanceData
,
KylinTicketVo
ticketData
,
List
<
AdamEntersVo
>
entersVoList
)
{
public
ResponseDto
<
PayResultVo
>
order
(
PayOrderParam
payOrderParam
,
String
uid
,
boolean
isMember
,
int
isTrueName
,
KylinPerformanceVo
performanceData
,
KylinTicketVo
ticketData
)
{
LinkedList
<
String
>
sqls
=
new
LinkedList
<>();
LinkedList
<
String
>
sqls
=
new
LinkedList
<>();
LinkedList
<
Object
[]>
paramsList
=
new
LinkedList
<>();
LinkedList
<
Object
[]>
paramsList
=
new
LinkedList
<>();
String
source
=
CurrentUtil
.
getCliSource
();
String
source
=
CurrentUtil
.
getCliSource
();
String
version
=
CurrentUtil
.
getCliVersion
();
String
version
=
CurrentUtil
.
getCliVersion
();
List
<
AdamEntersVo
>
entersVoList
=
new
ArrayList
();
//学生票 判断
if
(
null
!=
payOrderParam
.
getIsStudent
()
&&
payOrderParam
.
getIsStudent
()
==
1
)
{
for
(
String
enterId
:
payOrderParam
.
getEnterIdList
())
{
AdamEntersVo
adamEnters
=
feignAdamBaseClient
.
queryEnters
(
enterId
,
uid
).
getData
();
entersVoList
.
add
(
adamEnters
);
int
age
=
IDCard
.
getAgeByIdCard
(
adamEnters
.
getIdCard
());
if
(
age
>
25
)
{
return
ResponseDto
.
failure
(
"年龄不符合"
);
//年龄超了
}
}
}
//生成订单 order_ticket
//生成订单 order_ticket
KylinOrderTickets
orderTickets
=
new
KylinOrderTickets
();
KylinOrderTickets
orderTickets
=
new
KylinOrderTickets
();
String
orderTicketId
=
IDGenerator
.
nextSnowId
().
toString
();
String
orderTicketId
=
IDGenerator
.
nextSnowId
().
toString
();
...
@@ -299,6 +397,10 @@ public class KylinOrderTicketsServiceImpl extends ServiceImpl<KylinOrderTicketsM
...
@@ -299,6 +397,10 @@ public class KylinOrderTicketsServiceImpl extends ServiceImpl<KylinOrderTicketsM
// 生成vo
// 生成vo
KylinOrderTicketEntitiesVo
orderTicketEntitiesVo
=
new
KylinOrderTicketEntitiesVo
();
KylinOrderTicketEntitiesVo
orderTicketEntitiesVo
=
new
KylinOrderTicketEntitiesVo
();
BeanUtils
.
copyProperties
(
orderTicketEntities
,
orderTicketEntitiesVo
);
BeanUtils
.
copyProperties
(
orderTicketEntities
,
orderTicketEntitiesVo
);
orderTicketEntitiesVo
.
setPerformanceTitle
(
performanceData
.
getTitle
());
orderTicketEntitiesVo
.
setTicketTitle
(
ticketData
.
getTitle
());
orderTicketEntitiesVo
.
setUseStart
(
ticketData
.
getUseStart
());
orderTicketEntitiesVo
.
setUseEnd
(
ticketData
.
getUseEnd
());
mongoTemplate
.
insert
(
orderTicketEntitiesVo
,
KylinOrderTicketEntitiesVo
.
class
.
getSimpleName
());
mongoTemplate
.
insert
(
orderTicketEntitiesVo
,
KylinOrderTicketEntitiesVo
.
class
.
getSimpleName
());
}
}
}
else
{
}
else
{
...
@@ -325,45 +427,324 @@ public class KylinOrderTicketsServiceImpl extends ServiceImpl<KylinOrderTicketsM
...
@@ -325,45 +427,324 @@ public class KylinOrderTicketsServiceImpl extends ServiceImpl<KylinOrderTicketsM
// 生成vo
// 生成vo
KylinOrderTicketEntitiesVo
orderTicketEntitiesVo
=
new
KylinOrderTicketEntitiesVo
();
KylinOrderTicketEntitiesVo
orderTicketEntitiesVo
=
new
KylinOrderTicketEntitiesVo
();
BeanUtils
.
copyProperties
(
orderTicketEntities
,
orderTicketEntitiesVo
);
BeanUtils
.
copyProperties
(
orderTicketEntities
,
orderTicketEntitiesVo
);
orderTicketEntitiesVo
.
setPerformanceTitle
(
performanceData
.
getTitle
());
orderTicketEntitiesVo
.
setTicketTitle
(
ticketData
.
getTitle
());
orderTicketEntitiesVo
.
setUseStart
(
ticketData
.
getUseStart
());
orderTicketEntitiesVo
.
setUseEnd
(
ticketData
.
getUseEnd
());
mongoTemplate
.
insert
(
orderTicketEntitiesVo
,
KylinOrderTicketEntitiesVo
.
class
.
getSimpleName
());
mongoTemplate
.
insert
(
orderTicketEntitiesVo
,
KylinOrderTicketEntitiesVo
.
class
.
getSimpleName
());
}
}
}
}
// 调用支付 别忘记生成支付单号
// 调用支付
// $pay_result = zhengzai::getPayParam($pay_params, $device_from, $pay_type);
LinkedMultiValueMap
<
String
,
String
>
httpData
=
new
LinkedMultiValueMap
<
String
,
String
>();
LinkedMultiValueMap
<
String
,
String
>
httpData
=
new
LinkedMultiValueMap
<
String
,
String
>();
httpData
.
add
(
"type"
,
"TICKET"
);
httpData
.
add
(
"type"
,
"TICKET"
);
httpData
.
add
(
"price"
,
"0.01"
);
httpData
.
add
(
"price"
,
"0.01"
);
httpData
.
add
(
"name"
,
ticketData
.
getUseStart
()+
""
+
ticketData
.
getTitle
());
httpData
.
add
(
"name"
,
ticketData
.
getUseStart
()
+
""
+
ticketData
.
getTitle
());
httpData
.
add
(
"detail"
,
performanceData
.
getTitle
()+
"-"
+
ticketData
.
getTitle
()+
"-"
+
ticketData
.
getUseStart
());
httpData
.
add
(
"detail"
,
performanceData
.
getTitle
()
+
"-"
+
ticketData
.
getTitle
()
+
"-"
+
ticketData
.
getUseStart
());
httpData
.
add
(
"order_code"
,
orderTickets
.
getOrderCode
());
httpData
.
add
(
"order_code"
,
orderTickets
.
getOrderCode
());
httpData
.
add
(
"client_ip"
,
"127.0.0.1"
);
httpData
.
add
(
"client_ip"
,
"127.0.0.1"
);
httpData
.
add
(
"notify_url"
,
"http://www.baidu.com"
);
httpData
.
add
(
"notify_url"
,
"http://www.baidu.com"
);
httpData
.
add
(
"create_date"
,
orderTickets
.
getCreatedAt
().
format
(
DateTimeFormatter
.
ofPattern
(
"yyyy-MM-dd HH:mm:ss"
)));
httpData
.
add
(
"create_date"
,
orderTickets
.
getCreatedAt
().
format
(
DateTimeFormatter
.
ofPattern
(
"yyyy-MM-dd HH:mm:ss"
)));
httpData
.
add
(
"expire_time"
,
orderTickets
.
getPayCountdownMinute
().
toString
());
httpData
.
add
(
"expire_time"
,
orderTickets
.
getPayCountdownMinute
().
toString
());
if
(
payOrderParam
.
getDeviceFrom
().
equals
(
"js"
)
||
payOrderParam
.
getDeviceFrom
().
equals
(
"applet"
))
{
if
(
payOrderParam
.
getDeviceFrom
().
equals
(
"js"
)
||
payOrderParam
.
getDeviceFrom
().
equals
(
"applet"
))
{
httpData
.
add
(
"open_id"
,
payOrderParam
.
getOpenId
());
httpData
.
add
(
"open_id"
,
payOrderParam
.
getOpenId
());
}
}
if
(
payOrderParam
.
getPayType
().
equals
(
"alipay"
)
&&
payOrderParam
.
getDeviceFrom
().
equals
(
"wap"
))
{
if
(
payOrderParam
.
getPayType
().
equals
(
"alipay"
)
&&
payOrderParam
.
getDeviceFrom
().
equals
(
"wap"
))
{
httpData
.
add
(
"show_url"
,
payOrderParam
.
getOpenId
());
httpData
.
add
(
"show_url"
,
payOrderParam
.
getShowUrl
());
httpData
.
add
(
"return_url"
,
payOrderParam
.
getOpenId
());
httpData
.
add
(
"return_url"
,
payOrderParam
.
getReturnUrl
());
}
}
String
returnData
=
HttpUtil
.
post
(
"http://testpay.zhengzai.tv/"
+
payOrderParam
.
getDeviceFrom
()+
"/"
+
payOrderParam
.
getPayType
(),
httpData
);
String
returnData
=
HttpUtil
.
post
(
payUrl
+
payOrderParam
.
getDeviceFrom
()
+
"/"
+
payOrderParam
.
getPayType
(),
httpData
);
PayResultVo
payResultVo
=
JsonUtils
.
fromJson
(
returnData
,
PayResultVo
.
class
);
PayResultVo
payResultVo
=
JsonUtils
.
fromJson
(
returnData
,
PayResultVo
.
class
);
payResultVo
.
setOrder_id
(
orderTicketId
);
payResultVo
.
setOrder_id
(
orderTicketId
);
payResultVo
.
setPrice
(
orderTickets
.
getPriceActual
());
payResultVo
.
setPrice
(
orderTickets
.
getPriceActual
());
orderTickets
.
setPayCode
(
payResultVo
.
get
Order_c
ode
());
orderTickets
.
setPayCode
(
payResultVo
.
get
C
ode
());
// 生成vo
// 生成vo
KylinOrderTicketVo
orderTicketVo
=
new
KylinOrderTicketVo
();
KylinOrderTicketVo
orderTicketVo
=
new
KylinOrderTicketVo
();
orderTicketVo
.
setOrderTicket
(
orderTickets
);
orderTicketVo
.
setOrderTicket
(
orderTickets
);
orderTicketVo
.
setOrderTicketStatus
(
orderTicketStatus
);
orderTicketVo
.
setOrderTicketStatus
(
orderTicketStatus
);
orderTicketVo
.
setOrderTicketRelation
(
orderTicketRelations
);
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
()).
plusSeconds
(
15
).
format
(
DateTimeFormatter
.
ofPattern
(
"yyyy-MM-dd HH:mm:ss"
)));
orderTicketVo
.
setCreatedAt
(
orderTickets
.
getCreatedAt
().
format
(
DateTimeFormatter
.
ofPattern
(
"yyyy-MM-dd HH:mm:ss"
)));
mongoTemplate
.
insert
(
orderTicketVo
,
KylinOrderTicketVo
.
class
.
getSimpleName
());
mongoTemplate
.
insert
(
orderTicketVo
,
KylinOrderTicketVo
.
class
.
getSimpleName
());
// 执行sql
// 执行sql
// rabbitTemplate.convertAndSend(MQConst.EXCHANGES_LIQUIDNET_SQL, MQConst.ROUTING_KEY_SQL,
// rabbitTemplate.convertAndSend(MQConst.EXCHANGES_LIQUIDNET_SQL, MQConst.ROUTING_KEY_SQL,
// SqlMapping.get(sqls, paramsList));
// SqlMapping.get(sqls, paramsList));
return
ResponseDto
.
success
(
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
==
null
)
{
return
ResponseDto
.
failure
(
"订单不存在"
);
}
if
(
orderTicketData
.
getStatus
()
==
1
)
{
return
ResponseDto
.
failure
(
"订单已支付"
);
}
else
{
if
(
orderTicketData
.
getStatus
()
!=
0
)
{
return
ResponseDto
.
failure
(
"订单已关闭"
);
}
}
String
returnCheckData
=
HttpUtil
.
get
(
checkUrl
+
"?code="
+
orderTicketData
.
getPayCode
(),
null
);
PayResultVo
checkVo
=
JsonUtils
.
fromJson
(
returnCheckData
,
PayResultVo
.
class
);
if
(
checkVo
.
getStatus
()
==
1
)
{
return
ResponseDto
.
failure
(
"'您已支付请刷新再试'"
);
}
if
(!
orderTicketData
.
getPayType
().
equals
(
"no"
))
{
KylinOrderTicketEntitiesVo
entitiesDataOne
=
mongoTemplate
.
findOne
(
Query
.
query
(
Criteria
.
where
(
"orderId"
).
is
(
payAgainParam
.
getOrderId
())),
KylinOrderTicketEntitiesVo
.
class
,
KylinOrderTicketEntitiesVo
.
class
.
getSimpleName
());
if
(
entitiesDataOne
==
null
)
{
return
ResponseDto
.
failure
(
"参数错误"
);
}
KylinOrderTicketEntitiesVo
entitiesData
=
dataUtils
.
getOrderTicketEntitiesVo
(
entitiesDataOne
.
getOrderTicketEntitiesId
());
LinkedMultiValueMap
<
String
,
String
>
httpData
=
new
LinkedMultiValueMap
<
String
,
String
>();
httpData
.
add
(
"type"
,
"TICKET"
);
httpData
.
add
(
"price"
,
"0.01"
);
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"
,
"127.0.0.1"
);
httpData
.
add
(
"notify_url"
,
"http://www.baidu.com"
);
httpData
.
add
(
"create_date"
,
orderTicketData
.
getCreatedAt
());
httpData
.
add
(
"expire_time"
,
orderTicketData
.
getPayCountdownMinute
().
toString
());
httpData
.
add
(
"open_id"
,
payAgainParam
.
getOpenId
());
httpData
.
add
(
"show_url"
,
payAgainParam
.
getOpenId
());
httpData
.
add
(
"return_url"
,
payAgainParam
.
getOpenId
());
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
());
KylinOrderTickets
orderTickets
=
new
KylinOrderTickets
();
orderTickets
.
setOrderTicketsId
(
payAgainParam
.
getOrderId
());
orderTickets
.
setUpdatedAt
(
LocalDateTime
.
now
());
orderTickets
.
setPayCode
(
payResultVo
.
getCode
());
orderTickets
.
setPayType
(
payAgainParam
.
getPayType
());
//改vo
HashMap
<
String
,
String
>
map
=
new
HashMap
<>();
map
.
put
(
"payType"
,
payAgainParam
.
getPayType
());
map
.
put
(
"payCode"
,
payResultVo
.
getCode
());
map
.
put
(
"updatedAt"
,
orderTickets
.
getUpdatedAt
().
format
(
DateTimeFormatter
.
ofPattern
(
"yyyy-MM-dd HH:mm:ss"
)));
mongoTemplate
.
getCollection
(
KylinOrderTicketVo
.
class
.
getSimpleName
()).
updateOne
(
Query
.
query
(
Criteria
.
where
(
"orderTicketsId"
).
is
(
payAgainParam
.
getOrderId
())).
getQueryObject
(),
new
BasicDBObject
(
"$set"
,
mongoConverter
.
convertToMongoType
(
map
))
);
redisUtil
.
hdel
(
KylinRedisConst
.
ORDER
,
orderTickets
.
getOrderTicketsId
());
// rabbitTemplate.convertAndSend(MQConst.EXCHANGES_LIQUIDNET_SQL, MQConst.ROUTING_KEY_SQL,
// SqlMapping.get("kylin_order_ticket.payAgain", orderTickets.getPayAgainObject()));
return
ResponseDto
.
success
(
payResultVo
);
}
return
ResponseDto
.
failure
(
"未选择支付方式"
);
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
return
ResponseDto
.
failure
(
"订单已失效"
);
}
}
@Override
public
String
syncOrder
(
SyncOrderParam
syncOrderParam
)
{
//支付时间
LocalDateTime
now
=
LocalDateTime
.
now
();
RLock
lock
=
RedisLockUtil
.
lock
(
"order_lock:"
+
syncOrderParam
.
getOrder_code
(),
240
);
if
(
lock
.
isLocked
())
{
return
"fail"
;
}
String
timePay
=
now
.
format
(
DateTimeFormatter
.
ofPattern
(
"yyyy-MM-dd HH:mm:ss"
));
KylinOrderTicketVo
orderTicketData
=
mongoTemplate
.
findOne
(
Query
.
query
(
Criteria
.
where
(
"orderCode"
).
is
(
syncOrderParam
.
getOrder_code
())),
KylinOrderTicketVo
.
class
,
KylinOrderTicketVo
.
class
.
getSimpleName
());
if
(
orderTicketData
==
null
)
{
lock
.
unlock
();
return
"fail"
;
//订单不存在
}
if
(
orderTicketData
.
getStatus
()
!=
0
)
{
if
(
orderTicketData
.
getPayCode
().
equals
(
syncOrderParam
.
getCode
())
&&
orderTicketData
.
getStatus
()
==
1
)
{
lock
.
unlock
();
return
"success"
;
//已经支付
}
if
(!
orderTicketData
.
getPayCode
().
equals
(
syncOrderParam
.
getCode
()))
{
lock
.
unlock
();
return
"fail"
;
//重复支付
}
}
if
(
orderTicketData
.
getPriceActual
().
compareTo
(
syncOrderParam
.
getPrice
())
!=
0
)
{
lock
.
unlock
();
return
"fail"
;
//价格不符
}
LinkedList
<
String
>
sqls
=
new
LinkedList
<>();
LinkedList
<
Object
[]>
paramsList
=
new
LinkedList
<>();
//sql
KylinOrderTickets
orderTickets
=
new
KylinOrderTickets
();
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
(
"kylin_order_ticket.synPay"
);
paramsList
.
add
(
orderTickets
.
getSynOrderObject
());
KylinOrderTicketStatus
orderTicketStatus
=
new
KylinOrderTicketStatus
();
orderTicketStatus
.
setOrderId
(
orderTicketData
.
getOrderTicketsId
());
orderTicketStatus
.
setStatus
(
1
);
orderTicketStatus
.
setPayStatus
(
syncOrderParam
.
getStatus
());
orderTicketStatus
.
setUpdatedAt
(
orderTickets
.
getUpdatedAt
());
sqls
.
add
(
"kylin_order_ticket_status.synPay"
);
paramsList
.
add
(
orderTicketStatus
.
getSynOrderObject
());
KylinOrderTicketEntities
orderTicketEntities
=
new
KylinOrderTicketEntities
();
orderTicketEntities
.
setOrderId
(
orderTicketData
.
getOrderTicketsId
());
orderTicketEntities
.
setIsPayment
(
1
);
orderTicketEntities
.
setUpdatedAt
(
orderTickets
.
getUpdatedAt
());
sqls
.
add
(
"kylin_order_ticket_entities.synPay"
);
paramsList
.
add
(
orderTicketEntities
.
getSynOrderObject
());
//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"
,
1
);
orderTicketVo
.
put
(
"payStatus"
,
orderTicketStatus
.
getStatus
());
orderTicketVo
.
put
(
"updatedAt"
,
timePay
);
mongoTemplate
.
getCollection
(
KylinOrderTicketVo
.
class
.
getSimpleName
()).
updateOne
(
Query
.
query
(
Criteria
.
where
(
"orderTicketsId"
).
is
(
orderTickets
.
getOrderTicketsId
())).
getQueryObject
(),
new
BasicDBObject
(
"$set"
,
mongoConverter
.
convertToMongoType
(
orderTicketVo
))
);
redisUtil
.
hdel
(
KylinRedisConst
.
ORDER
,
orderTickets
.
getOrderTicketsId
());
HashMap
<
String
,
Object
>
orderTicketEntitiesVo
=
new
HashMap
<>();
orderTicketEntitiesVo
.
put
(
"isPayment"
,
1
);
orderTicketEntitiesVo
.
put
(
"updatedAt"
,
timePay
);
mongoTemplate
.
getCollection
(
KylinOrderTicketEntitiesVo
.
class
.
getSimpleName
()).
updateMany
(
Query
.
query
(
Criteria
.
where
(
"orderId"
).
is
(
orderTickets
.
getOrderTicketsId
())).
getQueryObject
(),
new
BasicDBObject
(
"$set"
,
mongoConverter
.
convertToMongoType
(
orderTicketEntitiesVo
))
);
List
<
KylinOrderTicketEntitiesVo
>
delList
=
mongoTemplate
.
find
(
Query
.
query
(
Criteria
.
where
(
"orderId"
).
is
(
orderTickets
.
getOrderTicketsId
())),
KylinOrderTicketEntitiesVo
.
class
,
KylinOrderTicketEntitiesVo
.
class
.
getSimpleName
());
for
(
KylinOrderTicketEntitiesVo
item
:
delList
)
{
redisUtil
.
hdel
(
KylinRedisConst
.
ORDER_ENTITIES
,
item
.
getOrderTicketEntitiesId
());
}
// rabbitTemplate.convertAndSend(MQConst.EXCHANGES_LIQUIDNET_SQL, MQConst.ROUTING_KEY_SQL,
// SqlMapping.get(sqls, paramsList));
// 发短信
return
"success"
;
}
@Override
public
PageInfo
<
List
<
KylinOrderListVo
>>
orderList
(
int
page
,
int
size
)
{
//TODO 缺快递
PageInfo
<
List
<
KylinOrderListVo
>>
mPageInfo
=
null
;
String
uid
=
CurrentUtil
.
getCurrentUid
();
try
{
// 排序 分页
Pageable
pageable
=
PageRequest
.
of
(
page
-
1
,
size
,
Sort
.
by
(
Sort
.
Direction
.
DESC
,
"createdAt"
));
//条件
Query
query
=
new
Query
();
query
.
addCriteria
(
Criteria
.
where
(
"userId"
).
is
(
uid
).
and
(
"status"
).
ne
(-
1
)
);
// 查询总数
long
count
=
mongoTemplate
.
count
(
query
,
KylinOrderTicketVo
.
class
,
KylinOrderTicketVo
.
class
.
getSimpleName
());
query
.
with
(
pageable
);
List
<
KylinOrderListVo
>
voList
=
mongoTemplate
.
find
(
query
,
KylinOrderListVo
.
class
,
KylinOrderTicketVo
.
class
.
getSimpleName
());
mPageInfo
=
new
PageInfo
(
voList
);
mPageInfo
.
setTotal
(
count
);
return
mPageInfo
;
}
catch
(
Exception
e
)
{
return
mPageInfo
;
}
}
@Override
public
boolean
checkOrderTime
(
String
userId
)
{
Query
query
=
new
Query
();
query
.
addCriteria
(
Criteria
.
where
(
"status"
).
is
(
0
).
and
(
"overdueAt"
).
lte
(
LocalDateTime
.
now
().
format
(
DateTimeFormatter
.
ofPattern
(
"yyyy-MM-dd HH:mm:ss"
))));
if
(
null
!=
userId
)
{
query
.
addCriteria
(
Criteria
.
where
(
"userId"
).
is
(
userId
));
}
List
<
KylinOrderTicketVo
>
orderTicketVo
=
mongoTemplate
.
find
(
query
,
KylinOrderTicketVo
.
class
,
KylinOrderTicketVo
.
class
.
getSimpleName
());
for
(
KylinOrderTicketVo
item
:
orderTicketVo
)
{
RLock
lock
=
redisLockUtil
.
lock
(
"order_lock:"
+
item
.
getOrderCode
());
if
(
lock
.
isLocked
())
{
continue
;
}
KylinOrderTicketVo
itemData
=
dataUtils
.
getOrderTicketVo
(
item
.
getOrderTicketsId
());
if
(
itemData
.
getStatus
()
==
0
)
{
LocalDateTime
now
=
LocalDateTime
.
now
();
try
{
//mysql
KylinOrderTickets
orderTickets
=
new
KylinOrderTickets
();
orderTickets
.
setOrderTicketsId
(
item
.
getOrderTicketsId
());
orderTickets
.
setUpdatedAt
(
now
);
KylinOrderTicketStatus
orderTicketStatus
=
new
KylinOrderTicketStatus
();
orderTicketStatus
.
setOrderId
(
item
.
getOrderTicketsId
());
orderTicketStatus
.
setStatus
(
2
);
orderTicketStatus
.
setUpdatedAt
(
now
);
//vo
HashMap
<
String
,
Object
>
map
=
new
HashMap
<>();
map
.
put
(
"status"
,
2
);
map
.
put
(
"updatedAt"
,
now
.
format
(
DateTimeFormatter
.
ofPattern
(
"yyyy-MM-dd HH:mm:ss"
)));
mongoTemplate
.
getCollection
(
KylinOrderTicketVo
.
class
.
getSimpleName
()).
updateOne
(
Query
.
query
(
Criteria
.
where
(
"orderTicketsId"
).
is
(
orderTickets
.
getOrderTicketsId
())).
getQueryObject
(),
new
BasicDBObject
(
"$set"
,
mongoConverter
.
convertToMongoType
(
map
))
);
redisUtil
.
hdel
(
KylinRedisConst
.
ORDER
,
orderTickets
.
getOrderTicketsId
());
dataUtils
.
changeSurplusGeneral
(
itemData
.
getTicketId
(),
itemData
.
getNumber
());
// rabbitTemplate.convertAndSend(MQConst.EXCHANGES_LIQUIDNET_SQL, MQConst.ROUTING_KEY_SQL,
// SqlMapping.get("kylin_order_ticket.close", itemData.getPayAgainObject()));
}
catch
(
Exception
e
)
{
lock
.
unlock
();
e
.
printStackTrace
();
return
false
;
}
}
else
{
lock
.
unlock
();
}
}
return
true
;
}
public
boolean
checkAgent
(
String
agentId
,
KylinTicketVo
ticketData
)
{
boolean
isAgent
=
ticketData
.
getIsAgent
()
==
1
;
if
(
isAgent
)
{
return
redisUtil
.
sHasKey
(
KylinRedisConst
.
AGENT
,
agentId
);
}
else
{
return
true
;
}
}
}
}
liquidnet-bus-service/liquidnet-service-kylin/liquidnet-service-kylin-impl/src/main/java/com/liquidnet/service/kylin/service/impl/admin/KylinPerformancesAdminServiceImpl.java
View file @
6b1f9daa
...
@@ -239,11 +239,6 @@ public class KylinPerformancesAdminServiceImpl extends ServiceImpl<KylinPerforma
...
@@ -239,11 +239,6 @@ public class KylinPerformancesAdminServiceImpl extends ServiceImpl<KylinPerforma
performanceRelations
.
setRoadShowId
(
roadShowId
);
performanceRelations
.
setRoadShowId
(
roadShowId
);
performanceRelationsMapper
.
update
(
performanceRelations
,
new
UpdateWrapper
<
KylinPerformanceRelations
>().
eq
(
"performance_id"
,
performancesId
));
performanceRelationsMapper
.
update
(
performanceRelations
,
new
UpdateWrapper
<
KylinPerformanceRelations
>().
eq
(
"performance_id"
,
performancesId
));
//redis TODO 演出缓存
// if(redisUtil.hHasKey(KylinRedisConst.PERFORMANCES,performancesId)){
// redisUtil.hset()
// }
//mongodb
//mongodb
HashMap
<
String
,
Object
>
map
=
new
HashMap
<>();
HashMap
<
String
,
Object
>
map
=
new
HashMap
<>();
map
.
put
(
"roadShowId"
,
roadShowId
);
map
.
put
(
"roadShowId"
,
roadShowId
);
...
...
liquidnet-bus-service/liquidnet-service-kylin/liquidnet-service-kylin-impl/src/main/java/com/liquidnet/service/kylin/utils/DataUtils.java
View file @
6b1f9daa
...
@@ -4,9 +4,7 @@ import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
...
@@ -4,9 +4,7 @@ import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import
com.liquidnet.common.cache.redis.util.RedisUtil
;
import
com.liquidnet.common.cache.redis.util.RedisUtil
;
import
com.liquidnet.commons.lang.util.JsonUtils
;
import
com.liquidnet.commons.lang.util.JsonUtils
;
import
com.liquidnet.service.kylin.constant.KylinRedisConst
;
import
com.liquidnet.service.kylin.constant.KylinRedisConst
;
import
com.liquidnet.service.kylin.dto.vo.KylinPerformanceVo
;
import
com.liquidnet.service.kylin.dto.vo.*
;
import
com.liquidnet.service.kylin.dto.vo.KylinTicketTimesVo
;
import
com.liquidnet.service.kylin.dto.vo.KylinTicketVo
;
import
com.liquidnet.service.kylin.entity.KylinBuyNotice
;
import
com.liquidnet.service.kylin.entity.KylinBuyNotice
;
import
com.liquidnet.service.kylin.entity.KylinTicketTimes
;
import
com.liquidnet.service.kylin.entity.KylinTicketTimes
;
import
com.liquidnet.service.kylin.mapper.KylinBuyNoticeMapper
;
import
com.liquidnet.service.kylin.mapper.KylinBuyNoticeMapper
;
...
@@ -143,4 +141,32 @@ public class DataUtils {
...
@@ -143,4 +141,32 @@ public class DataUtils {
}
}
return
(
KylinTicketVo
)
redisUtil
.
hget
(
KylinRedisConst
.
TICKET
,
ticketId
);
return
(
KylinTicketVo
)
redisUtil
.
hget
(
KylinRedisConst
.
TICKET
,
ticketId
);
}
}
/**
* 根据订单id 获取 订单vo 详情
* @param orderId
* @return
*/
public
KylinOrderTicketVo
getOrderTicketVo
(
String
orderId
){
if
(
redisUtil
.
hHasKey
(
KylinRedisConst
.
ORDER
,
orderId
)){
}
else
{
KylinOrderTicketVo
ticketData
=
mongoTemplate
.
findOne
(
Query
.
query
(
Criteria
.
where
(
"orderTicketsId"
).
is
(
orderId
)),
KylinOrderTicketVo
.
class
,
KylinOrderTicketVo
.
class
.
getSimpleName
());
redisUtil
.
hset
(
KylinRedisConst
.
ORDER
,
orderId
,
ticketData
);
}
return
(
KylinOrderTicketVo
)
redisUtil
.
hget
(
KylinRedisConst
.
ORDER
,
orderId
);
}
/**
* 根据订单入场人id 获取 订单入场人vo 详情
* @param orderEntitiesId
* @return list
*/
public
KylinOrderTicketEntitiesVo
getOrderTicketEntitiesVo
(
String
orderEntitiesId
){
if
(
redisUtil
.
hHasKey
(
KylinRedisConst
.
ORDER_ENTITIES
,
orderEntitiesId
)){
}
else
{
KylinOrderTicketEntitiesVo
ticketData
=
mongoTemplate
.
findOne
(
Query
.
query
(
Criteria
.
where
(
"orderTicketEntitiesId"
).
is
(
orderEntitiesId
)),
KylinOrderTicketEntitiesVo
.
class
,
KylinOrderTicketEntitiesVo
.
class
.
getSimpleName
());
redisUtil
.
hset
(
KylinRedisConst
.
ORDER_ENTITIES
,
orderEntitiesId
,
ticketData
);
}
return
(
KylinOrderTicketEntitiesVo
)
redisUtil
.
hget
(
KylinRedisConst
.
ORDER_ENTITIES
,
orderEntitiesId
);
}
}
}
liquidnet-bus-service/liquidnet-service-kylin/liquidnet-service-kylin-impl/src/main/resources/sqlmap/kylin_order_ticket_entities.properties
View file @
6b1f9daa
kylin_order_ticket_entities.add
=
UPDATE adam_enters SET `state`=2, updated_at=?, deleted_at=? where enters_id=?
kylin_order_ticket_entities.add
=
UPDATE adam_enters SET `state`=2, updated_at=?, deleted_at=? where enters_id=?
kylin_order_ticket_entities.synPay
=
UPDATE adam_enters SET `state`=2, updated_at=?, deleted_at=? where enters_id=?
\ No newline at end of file
liquidnet-bus-service/liquidnet-service-kylin/liquidnet-service-kylin-impl/src/main/resources/sqlmap/kylin_order_ticket_status.properties
View file @
6b1f9daa
kylin_order_ticket_status.add
=
UPDATE adam_enters SET `state`=2, updated_at=?, deleted_at=? where enters_id=?
kylin_order_ticket_status.add
=
UPDATE adam_enters SET `state`=2, updated_at=?, deleted_at=? where enters_id=?
kylin_order_ticket_status.synPay
=
UPDATE adam_enters SET `state`=2, updated_at=?, deleted_at=? where enters_id=?
kylin_order_ticket_status.close
=
UPDATE adam_enters SET `state`=2, updated_at=?, deleted_at=? where enters_id=?
\ No newline at end of file
liquidnet-bus-service/liquidnet-service-kylin/liquidnet-service-kylin-impl/src/main/resources/sqlmap/kylin_order_tickets.properties
View file @
6b1f9daa
kylin_order_ticket.add
=
UPDATE adam_enters SET `state`=2, updated_at=?, deleted_at=? where enters_id=?
kylin_order_ticket.add
=
UPDATE adam_enters SET `state`=2, updated_at=?, deleted_at=? where enters_id=?
kylin_order_ticket.payAgain
=
UPDATE adam_enters SET `state`=2, updated_at=?, deleted_at=? where enters_id=?
kylin_order_ticket.synPay
=
UPDATE adam_enters SET `state`=2, updated_at=?, deleted_at=? where enters_id=?
kylin_order_ticket.close
=
UPDATE adam_enters SET `state`=2, updated_at=?, deleted_at=? where enters_id=?
\ No newline at end of file
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment