记得上下班打卡 | 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
71adc379
Commit
71adc379
authored
Sep 09, 2025
by
姜秀龙
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
场次限购-order 下单返回限购查询需要的数据
parent
db52051c
Changes
6
Hide whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
294 additions
and
22 deletions
+294
-22
LimitTargetEnum.java
...com/liquidnet/service/kylin/constant/LimitTargetEnum.java
+42
-0
LimitTypeEnum.java
...a/com/liquidnet/service/kylin/constant/LimitTypeEnum.java
+45
-0
LimitErrorResultVo.java
...om/liquidnet/service/kylin/dto/vo/LimitErrorResultVo.java
+92
-0
PayInnerResultVo.java
...uidnet/service/kylin/dto/vo/returns/PayInnerResultVo.java
+3
-0
KylinOrderTicketsServiceImpl.java
...vice/order/service/impl/KylinOrderTicketsServiceImpl.java
+24
-7
OrderUtils.java
...in/java/com/liquidnet/service/order/utils/OrderUtils.java
+88
-15
No files found.
liquidnet-bus-api/liquidnet-service-kylin-api/src/main/java/com/liquidnet/service/kylin/constant/LimitTargetEnum.java
0 → 100644
View file @
71adc379
package
com
.
liquidnet
.
service
.
kylin
.
constant
;
import
io.swagger.annotations.ApiModel
;
import
io.swagger.annotations.ApiModelProperty
;
/**
* 限购对象枚举
*/
@ApiModel
(
"限购对象枚举"
)
public
enum
LimitTargetEnum
{
@ApiModelProperty
(
"账户"
)
ACCOUNT
(
1
,
"账户"
),
@ApiModelProperty
(
"实名"
)
IDCARD
(
2
,
"实名"
);
private
final
int
code
;
private
final
String
desc
;
LimitTargetEnum
(
int
code
,
String
desc
)
{
this
.
code
=
code
;
this
.
desc
=
desc
;
}
public
int
getCode
()
{
return
code
;
}
public
String
getDesc
()
{
return
desc
;
}
public
static
LimitTargetEnum
valueOf
(
int
code
)
{
for
(
LimitTargetEnum
target
:
values
())
{
if
(
target
.
code
==
code
)
{
return
target
;
}
}
return
null
;
}
}
\ No newline at end of file
liquidnet-bus-api/liquidnet-service-kylin-api/src/main/java/com/liquidnet/service/kylin/constant/LimitTypeEnum.java
0 → 100644
View file @
71adc379
package
com
.
liquidnet
.
service
.
kylin
.
constant
;
import
io.swagger.annotations.ApiModel
;
import
io.swagger.annotations.ApiModelProperty
;
/**
* 限购类型枚举
*/
@ApiModel
(
"限购类型枚举"
)
public
enum
LimitTypeEnum
{
@ApiModelProperty
(
"演出"
)
PERFORMANCE
(
1
,
"演出"
),
@ApiModelProperty
(
"票种"
)
TICKET
(
2
,
"票种"
),
@ApiModelProperty
(
"场次"
)
TIME
(
3
,
"场次"
);
private
final
int
code
;
private
final
String
desc
;
LimitTypeEnum
(
int
code
,
String
desc
)
{
this
.
code
=
code
;
this
.
desc
=
desc
;
}
public
int
getCode
()
{
return
code
;
}
public
String
getDesc
()
{
return
desc
;
}
public
static
LimitTypeEnum
valueOf
(
int
code
)
{
for
(
LimitTypeEnum
type
:
values
())
{
if
(
type
.
code
==
code
)
{
return
type
;
}
}
return
null
;
}
}
\ No newline at end of file
liquidnet-bus-api/liquidnet-service-kylin-api/src/main/java/com/liquidnet/service/kylin/dto/vo/LimitErrorResultVo.java
0 → 100644
View file @
71adc379
package
com
.
liquidnet
.
service
.
kylin
.
dto
.
vo
;
import
io.swagger.annotations.ApiModel
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.AllArgsConstructor
;
import
lombok.Builder
;
import
lombok.Data
;
import
lombok.NoArgsConstructor
;
/**
* 限购错误结果VO
*/
@ApiModel
(
"限购错误结果VO"
)
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public
class
LimitErrorResultVo
{
/**
* 限购类型
*/
@ApiModelProperty
(
"限购类型:1-演出,2-票种,3-场次"
)
private
Integer
limitType
;
/**
* 限购对象
*/
@ApiModelProperty
(
"限购对象:1-账户,2-实名"
)
private
Integer
limitTarget
;
/**
* 限购数量
*/
@ApiModelProperty
(
"限购数量"
)
private
Integer
limitCount
;
/**
* 当前已购买数量
*/
@ApiModelProperty
(
"当前已购买数量"
)
private
Integer
currentCount
;
/**
* 会员逻辑
*/
@ApiModelProperty
(
"0全员 2会员专属 1会员时间段"
)
private
Integer
memberType
;
/**
* 演出 id
*/
@ApiModelProperty
(
"演出 id"
)
private
String
performancesId
;
/**
* 票种 id
*/
@ApiModelProperty
(
"票种 id"
)
private
String
ticketsId
;
/**
* 场次 id
*/
@ApiModelProperty
(
"场次 id"
)
private
String
timeId
;
/**
* 身份证
*/
@ApiModelProperty
(
"身份证"
)
private
String
idCard
;
/**
* 姓名
*/
@ApiModelProperty
(
"姓名"
)
private
String
idName
;
/**
* 入场人 id
*/
@ApiModelProperty
(
"入场人 id"
)
private
String
entersId
;
/**
* 错误信息
*/
@ApiModelProperty
(
"错误信息"
)
private
String
errorMessage
;
}
\ No newline at end of file
liquidnet-bus-api/liquidnet-service-kylin-api/src/main/java/com/liquidnet/service/kylin/dto/vo/returns/PayInnerResultVo.java
View file @
71adc379
package
com
.
liquidnet
.
service
.
kylin
.
dto
.
vo
.
returns
;
import
com.liquidnet.service.kylin.dto.vo.LimitErrorResultVo
;
import
com.liquidnet.service.kylin.dto.vo.middle.PayDataVo
;
import
lombok.Data
;
import
java.io.Serializable
;
import
java.math.BigDecimal
;
import
java.util.List
;
@Data
public
class
PayInnerResultVo
implements
Serializable
,
Cloneable
{
...
...
@@ -18,6 +20,7 @@ public class PayInnerResultVo implements Serializable,Cloneable {
private
String
returnUrl
;
private
BigDecimal
price
;
private
PayDataVo
payData
;
private
List
<
LimitErrorResultVo
>
limitResult
;
private
static
final
PayInnerResultVo
obj
=
new
PayInnerResultVo
();
public
static
PayInnerResultVo
getNew
()
{
...
...
liquidnet-bus-service/liquidnet-service-order/liquidnet-service-order-impl/src/main/java/com/liquidnet/service/order/service/impl/KylinOrderTicketsServiceImpl.java
View file @
71adc379
...
...
@@ -26,6 +26,7 @@ import com.liquidnet.service.kylin.dto.vo.returns.PayInnerResultVo;
import
com.liquidnet.service.kylin.dto.vo.returns.PayResultVo
;
import
com.liquidnet.service.kylin.entity.*
;
import
com.liquidnet.service.kylin.service.IKylinOrderTicketsOrderService
;
import
com.liquidnet.service.kylin.dto.vo.LimitErrorResultVo
;
import
com.liquidnet.service.order.utils.*
;
import
com.taobao.api.TaobaoClient
;
import
com.taobao.api.request.AlibabaDamaiMevOpenBatchpushticketRequest
;
...
...
@@ -400,25 +401,41 @@ public class KylinOrderTicketsServiceImpl implements IKylinOrderTicketsOrderServ
//限购判断 如果实名 则身份证维度限购 如果不实名则数量限购
if
(
entersVoList
.
size
()
>
0
)
{
for
(
int
i
=
0
;
i
<
entersVoList
.
size
();
i
++)
{
dataUtils
.
changeBuyInfo
(
uid
,
entersVoList
.
get
(
i
).
getIdCard
(),
performanceData
.
getPerformancesId
(),
ticketData
.
getTicketsId
(),
payOrderParam
.
getTimeId
(),
1
);
String
res1
=
orderUtils
.
judgeOrderLimit
(
uid
,
entersVoList
.
get
(
i
).
getIdCard
(),
payOrderParam
.
getPerformanceId
(),
payOrderParam
.
getTicketId
(),
payOrderParam
.
getTimeId
(),
performanceLimit
,
performanceMemberLimit
,
performanceIdCount
,
ticketLimit
,
ticketMemberLimit
,
ticketIdCount
,
timeRealNameLimit
,
memberType
,
isTrueName
);
if
(!
res1
.
equals
(
""
))
{
AdamEntersVo
adamEntersVo
=
entersVoList
.
get
(
i
);
dataUtils
.
changeBuyInfo
(
uid
,
adamEntersVo
.
getIdCard
(),
performanceData
.
getPerformancesId
(),
ticketData
.
getTicketsId
(),
payOrderParam
.
getTimeId
(),
1
);
LimitErrorResultVo
limitResult
=
orderUtils
.
judgeOrderLimit
(
uid
,
entersVoList
.
get
(
i
).
getIdCard
(),
payOrderParam
.
getPerformanceId
(),
payOrderParam
.
getTicketId
(),
payOrderParam
.
getTimeId
(),
performanceLimit
,
performanceMemberLimit
,
performanceIdCount
,
ticketLimit
,
ticketMemberLimit
,
ticketIdCount
,
timeRealNameLimit
,
memberType
,
isTrueName
);
if
(
limitResult
!=
null
)
{
for
(
int
x
=
0
;
x
<=
i
;
x
++)
{
dataUtils
.
changeBuyInfo
(
uid
,
entersVoList
.
get
(
x
).
getIdCard
(),
performanceData
.
getPerformancesId
(),
ticketData
.
getTicketsId
(),
payOrderParam
.
getTimeId
(),
-
1
);
}
orderUtils
.
changeSurplus
(
isPay
,
payOrderParam
.
getTicketId
(),
payOrderParam
.
getNumber
());
orderUtils
.
backAdvanceCoupon
(
payOrderParam
.
getAdvanceCode
(),
uid
);
return
ResponseDto
.
failure
(
res1
);
//乱七八糟异常
PayInnerResultVo
payInnerResultVo
=
PayInnerResultVo
.
getNew
();
limitResult
.
setPerformancesId
(
payOrderParam
.
getPerformanceId
());
limitResult
.
setTimeId
(
payOrderParam
.
getTimeId
());
limitResult
.
setTicketsId
(
payOrderParam
.
getTicketId
());
limitResult
.
setIdCard
(
adamEntersVo
.
getIdCard
());
limitResult
.
setIdName
(
adamEntersVo
.
getName
());
limitResult
.
setEntersId
(
adamEntersVo
.
getEntersId
());
payInnerResultVo
.
setLimitResult
(
Collections
.
singletonList
(
limitResult
));
return
ResponseDto
.
failure
(
"12345"
,
"购买数量超出限制"
,
payInnerResultVo
);
//返回完整的限购错误信息
}
}
}
else
{
dataUtils
.
changeBuyInfo
(
uid
,
""
,
performanceData
.
getPerformancesId
(),
ticketData
.
getTicketsId
(),
payOrderParam
.
getTimeId
(),
payOrderParam
.
getNumber
());
String
res1
=
orderUtils
.
judgeOrderLimit
(
uid
,
""
,
payOrderParam
.
getPerformanceId
(),
payOrderParam
.
getTicketId
(),
payOrderParam
.
getTimeId
(),
performanceLimit
,
performanceMemberLimit
,
performanceIdCount
,
ticketLimit
,
ticketMemberLimit
,
ticketIdCount
,
timeRealNameLimit
,
memberType
,
isTrueName
);
if
(
!
res1
.
equals
(
""
)
)
{
LimitErrorResultVo
limitResult
=
orderUtils
.
judgeOrderLimit
(
uid
,
""
,
payOrderParam
.
getPerformanceId
(),
payOrderParam
.
getTicketId
(),
payOrderParam
.
getTimeId
(),
performanceLimit
,
performanceMemberLimit
,
performanceIdCount
,
ticketLimit
,
ticketMemberLimit
,
ticketIdCount
,
timeRealNameLimit
,
memberType
,
isTrueName
);
if
(
limitResult
!=
null
)
{
dataUtils
.
changeBuyInfo
(
uid
,
""
,
performanceData
.
getPerformancesId
(),
ticketData
.
getTicketsId
(),
payOrderParam
.
getTimeId
(),
-
payOrderParam
.
getNumber
());
orderUtils
.
changeSurplus
(
isPay
,
payOrderParam
.
getTicketId
(),
payOrderParam
.
getNumber
());
orderUtils
.
backAdvanceCoupon
(
payOrderParam
.
getAdvanceCode
(),
uid
);
return
ResponseDto
.
failure
(
res1
);
//乱七八糟异常
PayInnerResultVo
payInnerResultVo
=
PayInnerResultVo
.
getNew
();
limitResult
.
setPerformancesId
(
payOrderParam
.
getPerformanceId
());
limitResult
.
setTimeId
(
payOrderParam
.
getTimeId
());
limitResult
.
setTicketsId
(
payOrderParam
.
getTicketId
());
payInnerResultVo
.
setLimitResult
(
Collections
.
singletonList
(
limitResult
));
// 设置为List
return
ResponseDto
.
failure
(
"12345"
,
"购买数量超出限制"
,
payInnerResultVo
);
//返回完整的限购错误信息
}
}
...
...
liquidnet-bus-service/liquidnet-service-order/liquidnet-service-order-impl/src/main/java/com/liquidnet/service/order/utils/OrderUtils.java
View file @
71adc379
...
...
@@ -20,6 +20,9 @@ import com.liquidnet.service.kylin.dto.vo.mongo.KylinCandyVo;
import
com.liquidnet.service.kylin.dto.vo.mongo.KylinOrderTicketVo
;
import
com.liquidnet.service.kylin.dto.vo.returns.InnerReturnVo
;
import
com.liquidnet.service.kylin.dto.vo.returns.KylinOrderListVo
;
import
com.liquidnet.service.kylin.constant.LimitTargetEnum
;
import
com.liquidnet.service.kylin.constant.LimitTypeEnum
;
import
com.liquidnet.service.kylin.dto.vo.LimitErrorResultVo
;
import
lombok.extern.slf4j.Slf4j
;
import
org.apache.commons.lang.StringUtils
;
import
org.springframework.beans.BeanUtils
;
...
...
@@ -46,7 +49,7 @@ public class OrderUtils {
@Value
(
"${liquidnet.service.smile.url}"
)
private
String
smile
;
public
String
judgeOrderLimit
(
public
LimitErrorResultVo
judgeOrderLimit
(
String
userId
,
String
idCard
,
String
performanceId
,
...
...
@@ -103,58 +106,128 @@ public class OrderUtils {
return
array
;
}
public
String
judgeMemberType
(
int
performanceLimitCount
,
int
performanceMemberLimitCount
,
int
performanceLimitIdCard
,
public
LimitErrorResultVo
judgeMemberType
(
int
performanceLimitCount
,
int
performanceMemberLimitCount
,
int
performanceLimitIdCard
,
int
ticketLimitCount
,
int
ticketMemberLimitCount
,
int
ticketLimitIdCard
,
int
timeRealNameLimit
,
int
memberType
,
int
performanceBuyCountUid
,
int
ticketBuyCountUid
,
int
performanceBuyCountIdCard
,
int
ticketBuyCountIdCard
,
int
timeBuyCountIdCard
,
int
isTrueName
)
{
if
(
isTrueName
==
1
&&
timeRealNameLimit
==
1
)
{
if
(
isTrueName
==
1
&&
timeRealNameLimit
!=
0
)
{
if
(
timeBuyCountIdCard
>
timeRealNameLimit
)
{
return
"实名制场次限购"
+
timeRealNameLimit
+
"张,已超出"
;
//超过场次维度购买量
return
LimitErrorResultVo
.
builder
()
.
limitType
(
LimitTypeEnum
.
TIME
.
getCode
())
.
limitTarget
(
LimitTargetEnum
.
IDCARD
.
getCode
())
.
limitCount
(
timeRealNameLimit
)
.
currentCount
(
timeBuyCountIdCard
)
// .errorMessage("实名制场次限购" + timeRealNameLimit + "张,已超出")
.
build
();
}
}
if
(
memberType
==
1
||
memberType
==
2
)
{
if
(
isTrueName
==
1
)
{
if
(
performanceBuyCountIdCard
>
performanceMemberLimitCount
&&
performanceMemberLimitCount
!=
0
)
{
return
"实名制演出限购"
+
performanceMemberLimitCount
+
"张,已超出"
;
//超过演出维度购买量
return
LimitErrorResultVo
.
builder
()
.
limitType
(
LimitTypeEnum
.
PERFORMANCE
.
getCode
())
.
limitTarget
(
LimitTargetEnum
.
IDCARD
.
getCode
())
.
memberType
(
memberType
)
.
limitCount
(
performanceMemberLimitCount
)
.
currentCount
(
performanceBuyCountIdCard
)
// .errorMessage("实名制演出限购" + performanceMemberLimitCount + "张,已超出")
.
build
();
}
if
(
ticketBuyCountIdCard
>
ticketMemberLimitCount
&&
ticketMemberLimitCount
!=
0
)
{
return
"实名制票种限购"
+
ticketMemberLimitCount
+
"张,已超出"
;
//超过票维度购买量
return
LimitErrorResultVo
.
builder
()
.
limitType
(
LimitTypeEnum
.
TICKET
.
getCode
())
.
limitTarget
(
LimitTargetEnum
.
IDCARD
.
getCode
())
.
memberType
(
memberType
)
.
limitCount
(
ticketMemberLimitCount
)
.
currentCount
(
ticketBuyCountIdCard
)
// .errorMessage("实名制票种限购" + ticketMemberLimitCount + "张,已超出")
.
build
();
}
}
else
{
if
(
performanceBuyCountUid
>
performanceMemberLimitCount
&&
performanceMemberLimitCount
!=
0
)
{
return
"本场演出限购"
+
performanceMemberLimitCount
+
"张,已超出"
;
//超过演出维度购买量
return
LimitErrorResultVo
.
builder
()
.
limitType
(
LimitTypeEnum
.
PERFORMANCE
.
getCode
())
.
limitTarget
(
LimitTargetEnum
.
ACCOUNT
.
getCode
())
.
memberType
(
memberType
)
.
limitCount
(
performanceMemberLimitCount
)
.
currentCount
(
performanceBuyCountUid
)
// .errorMessage("本场演出限购" + performanceMemberLimitCount + "张,已超出")
.
build
();
}
if
(
ticketBuyCountUid
>
ticketMemberLimitCount
&&
ticketMemberLimitCount
!=
0
)
{
return
"该票种限购"
+
ticketMemberLimitCount
+
"张,已超出"
;
//超过票维度购买量
return
LimitErrorResultVo
.
builder
()
.
limitType
(
LimitTypeEnum
.
TICKET
.
getCode
())
.
limitTarget
(
LimitTargetEnum
.
ACCOUNT
.
getCode
())
.
memberType
(
memberType
)
.
limitCount
(
ticketMemberLimitCount
)
.
currentCount
(
ticketBuyCountUid
)
// .errorMessage("该票种限购" + ticketMemberLimitCount + "张,已超出")
.
build
();
}
}
}
else
{
//非会员区间
if
(
isTrueName
==
1
)
{
if
(
performanceBuyCountIdCard
>
performanceLimitIdCard
&&
performanceLimitIdCard
!=
0
)
{
return
"实名制演出限购"
+
performanceLimitIdCard
+
"张,已超出"
;
//超过演出维度购买量
return
LimitErrorResultVo
.
builder
()
.
limitType
(
LimitTypeEnum
.
PERFORMANCE
.
getCode
())
.
limitTarget
(
LimitTargetEnum
.
IDCARD
.
getCode
())
.
limitCount
(
performanceLimitIdCard
)
.
currentCount
(
performanceBuyCountIdCard
)
// .errorMessage("实名制演出限购" + performanceLimitIdCard + "张,已超出")
.
build
();
}
if
(
ticketBuyCountIdCard
>
ticketLimitIdCard
&&
ticketLimitIdCard
!=
0
)
{
return
"实名制票种限购"
+
ticketLimitIdCard
+
"张,已超出"
;
//超过演出维度购买量
return
LimitErrorResultVo
.
builder
()
.
limitType
(
LimitTypeEnum
.
TICKET
.
getCode
())
.
limitTarget
(
LimitTargetEnum
.
IDCARD
.
getCode
())
.
limitCount
(
ticketLimitIdCard
)
.
currentCount
(
ticketBuyCountIdCard
)
// .errorMessage("实名制票种限购" + ticketLimitIdCard + "张,已超出")
.
build
();
}
if
(
performanceBuyCountUid
>
performanceLimitCount
&&
performanceLimitCount
!=
0
)
{
return
"本场演出限购"
+
performanceLimitCount
+
"张,已超出"
;
//超过演出维度购买量
return
LimitErrorResultVo
.
builder
()
.
limitType
(
LimitTypeEnum
.
PERFORMANCE
.
getCode
())
.
limitTarget
(
LimitTargetEnum
.
ACCOUNT
.
getCode
())
.
limitCount
(
performanceLimitCount
)
.
currentCount
(
performanceBuyCountUid
)
// .errorMessage("本场演出限购" + performanceLimitCount + "张,已超出")
.
build
();
}
if
(
ticketBuyCountUid
>
ticketLimitCount
&&
ticketLimitCount
!=
0
)
{
return
"该票种限购"
+
ticketLimitCount
+
"张,已超出"
;
//超过演出维度购买量
return
LimitErrorResultVo
.
builder
()
.
limitType
(
LimitTypeEnum
.
TICKET
.
getCode
())
.
limitTarget
(
LimitTargetEnum
.
ACCOUNT
.
getCode
())
.
limitCount
(
ticketLimitCount
)
.
currentCount
(
ticketBuyCountUid
)
// .errorMessage("该票种限购" + ticketLimitCount + "张,已超出")
.
build
();
}
}
else
{
if
(
performanceBuyCountUid
>
performanceLimitCount
&&
performanceLimitCount
!=
0
)
{
return
"本场演出限购"
+
performanceLimitCount
+
"张,已超出"
;
//超过演出维度购买量
return
LimitErrorResultVo
.
builder
()
.
limitType
(
LimitTypeEnum
.
PERFORMANCE
.
getCode
())
.
limitTarget
(
LimitTargetEnum
.
ACCOUNT
.
getCode
())
.
limitCount
(
performanceLimitCount
)
.
currentCount
(
performanceBuyCountUid
)
// .errorMessage("本场演出限购" + performanceLimitCount + "张,已超出")
.
build
();
}
if
(
ticketBuyCountUid
>
ticketLimitCount
&&
ticketLimitCount
!=
0
)
{
return
"该票种限购"
+
ticketLimitCount
+
"张,已超出"
;
//超过演出维度购买量
return
LimitErrorResultVo
.
builder
()
.
limitType
(
LimitTypeEnum
.
TICKET
.
getCode
())
.
limitTarget
(
LimitTargetEnum
.
ACCOUNT
.
getCode
())
.
limitCount
(
ticketLimitCount
)
.
currentCount
(
ticketBuyCountUid
)
// .errorMessage("该票种限购" + ticketLimitCount + "张,已超出")
.
build
();
}
}
}
return
""
;
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