记得上下班打卡 | 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
aa4d8b48
Commit
aa4d8b48
authored
May 25, 2021
by
胡佳晨
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
暂时提交
parent
0b2b1261
Changes
4
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
208 additions
and
6 deletions
+208
-6
KylinOrderTickets.java
...com/liquidnet/service/kylin/entity/KylinOrderTickets.java
+2
-2
db_kylin_structure.sql
.../liquidnet-service-kylin-impl/docu/db_kylin_structure.sql
+4
-4
pom.xml
...uidnet-service-kylin/liquidnet-service-kylin-impl/pom.xml
+6
-0
KylinOrderTicketsServiceImpl.java
...vice/kylin/service/impl/KylinOrderTicketsServiceImpl.java
+196
-0
No files found.
liquidnet-bus-service/liquidnet-service-kylin/liquidnet-service-kylin-do/src/main/java/com/liquidnet/service/kylin/entity/KylinOrderTickets.java
View file @
aa4d8b48
...
...
@@ -73,7 +73,7 @@ public class KylinOrderTickets implements Serializable {
/**
* 数量
*/
private
String
number
;
private
Integer
number
;
/**
* 单价
...
...
@@ -113,7 +113,7 @@ public class KylinOrderTickets implements Serializable {
/**
* 退款张数
*/
private
BigDecimal
price
Number
;
private
Integer
refund
Number
;
/**
* 选择支付方式
...
...
liquidnet-bus-service/liquidnet-service-kylin/liquidnet-service-kylin-impl/docu/db_kylin_structure.sql
View file @
aa4d8b48
...
...
@@ -417,7 +417,7 @@ CREATE TABLE `kylin_order_tickets`
`qr_code`
varchar
(
255
)
NOT
NULL
DEFAULT
''
COMMENT
'二维码地址'
,
`order_type`
varchar
(
255
)
NOT
NULL
DEFAULT
''
COMMENT
'下单方式'
,
`order_version`
varchar
(
255
)
NOT
NULL
DEFAULT
''
COMMENT
'下单版本'
,
`number`
varchar
(
255
)
NOT
NULL
DEFAULT
''
COMMENT
'数量'
,
`number`
int
(
32
)
NOT
NULL
DEFAULT
0
COMMENT
'数量'
,
`price`
decimal
(
8
,
2
)
NOT
NULL
DEFAULT
'0.00'
COMMENT
'单价'
,
`price_member`
decimal
(
8
,
2
)
NOT
NULL
DEFAULT
'0.00'
COMMENT
'会员单价'
,
`price_total`
decimal
(
8
,
2
)
NOT
NULL
DEFAULT
'0.00'
COMMENT
'应付价格'
,
...
...
@@ -425,10 +425,10 @@ CREATE TABLE `kylin_order_tickets`
`price_actual`
decimal
(
8
,
2
)
NOT
NULL
DEFAULT
'0.00'
COMMENT
'实付价格'
,
`price_express`
decimal
(
8
,
2
)
NOT
NULL
DEFAULT
'0.00'
COMMENT
'快递价格'
,
`price_refund`
decimal
(
8
,
2
)
NOT
NULL
DEFAULT
'0.00'
COMMENT
'退款价格'
,
`
price_number`
decimal
(
8
,
2
)
NOT
NULL
DEFAULT
'0.00'
COMMENT
'退款张数'
,
`
refund_number`
int
(
32
)
NOT
NULL
DEFAULT
0
COMMENT
'退款张数'
,
`pay_type`
varchar
(
255
)
NOT
NULL
DEFAULT
''
COMMENT
'选择支付方式'
,
`payment_type`
varchar
(
255
)
N
OT
NULL
DEFAULT
''
COMMENT
'实际支付方式'
,
`time_pay`
varchar
(
255
)
N
OT
NULL
DEFAULT
''
COMMENT
'支付时间'
,
`payment_type`
varchar
(
255
)
N
ULL
DEFAULT
''
COMMENT
'实际支付方式'
,
`time_pay`
varchar
(
255
)
N
ULL
DEFAULT
''
COMMENT
'支付时间'
,
`express_contacts`
varchar
(
255
)
NOT
NULL
DEFAULT
''
COMMENT
'收货人'
,
`express_address`
varchar
(
255
)
NOT
NULL
DEFAULT
''
COMMENT
'收货地址'
,
`express_phone`
varchar
(
255
)
NOT
NULL
DEFAULT
''
COMMENT
'收货人联系方式'
,
...
...
liquidnet-bus-service/liquidnet-service-kylin/liquidnet-service-kylin-impl/pom.xml
View file @
aa4d8b48
...
...
@@ -30,6 +30,12 @@
<version>
1.0-SNAPSHOT
</version>
<scope>
compile
</scope>
</dependency>
<dependency>
<groupId>
com.liquidnet
</groupId>
<artifactId>
liquidnet-api-feign-adam
</artifactId>
<version>
1.0-SNAPSHOT
</version>
<scope>
compile
</scope>
</dependency>
<!-- other -->
<dependency>
...
...
liquidnet-bus-service/liquidnet-service-kylin/liquidnet-service-kylin-impl/src/main/java/com/liquidnet/service/kylin/service/impl/KylinOrderTicketsServiceImpl.java
View file @
aa4d8b48
package
com
.
liquidnet
.
service
.
kylin
.
service
.
impl
;
import
com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper
;
import
com.liquidnet.common.cache.redis.util.RedisUtil
;
import
com.liquidnet.commons.lang.util.CurrentUtil
;
import
com.liquidnet.commons.lang.util.DateUtil
;
import
com.liquidnet.commons.lang.util.IDCard
;
import
com.liquidnet.commons.lang.util.IDGenerator
;
import
com.liquidnet.service.adam.dto.vo.AdamAddressesVo
;
import
com.liquidnet.service.adam.dto.vo.AdamEntersVo
;
import
com.liquidnet.service.adam.entity.AdamEnters
;
import
com.liquidnet.service.base.ResponseDto
;
import
com.liquidnet.service.feign.adam.api.FeignAdamBaseClient
;
import
com.liquidnet.service.kylin.constant.KylinRedisConst
;
import
com.liquidnet.service.kylin.dto.param.PayOrderParam
;
import
com.liquidnet.service.kylin.dto.vo.KylinPerformanceVo
;
import
com.liquidnet.service.kylin.dto.vo.KylinTicketTimesVo
;
import
com.liquidnet.service.kylin.dto.vo.KylinTicketVo
;
import
com.liquidnet.service.kylin.entity.KylinOrderTickets
;
import
com.liquidnet.service.kylin.entity.KylinTicketTimes
;
import
com.liquidnet.service.kylin.mapper.KylinOrderTicketsMapper
;
import
com.liquidnet.service.kylin.service.IKylinOrderTicketsService
;
import
com.baomidou.mybatisplus.extension.service.impl.ServiceImpl
;
import
com.liquidnet.service.kylin.utils.DataUtils
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.data.mongodb.core.MongoTemplate
;
import
org.springframework.data.mongodb.core.query.Criteria
;
import
org.springframework.data.mongodb.core.query.Query
;
import
org.springframework.stereotype.Service
;
import
java.math.BigDecimal
;
import
java.time.LocalDateTime
;
/**
* <p>
* 订单 服务实现类
...
...
@@ -17,4 +42,175 @@ import org.springframework.stereotype.Service;
@Service
public
class
KylinOrderTicketsServiceImpl
extends
ServiceImpl
<
KylinOrderTicketsMapper
,
KylinOrderTickets
>
implements
IKylinOrderTicketsService
{
@Autowired
private
DataUtils
dataUtils
;
@Autowired
private
RedisUtil
redisUtil
;
@Autowired
private
MongoTemplate
mongoTemplate
;
@Autowired
private
FeignAdamBaseClient
feignAdamBaseClient
;
@Override
public
boolean
checkCanOrder
(
PayOrderParam
payOrderParam
)
{
String
uid
=
CurrentUtil
.
getCurrentUid
();
KylinPerformanceVo
performanceData
=
mongoTemplate
.
findOne
(
Query
.
query
(
Criteria
.
where
(
"performancesId"
).
is
(
payOrderParam
.
getPerformanceId
())),
KylinPerformanceVo
.
class
,
KylinPerformanceVo
.
class
.
getSimpleName
());
KylinTicketTimesVo
ticketTimesData
=
mongoTemplate
.
findOne
(
Query
.
query
(
Criteria
.
where
(
"ticketTimesId"
).
is
(
payOrderParam
.
getTimeId
())),
KylinTicketTimesVo
.
class
,
KylinTicketTimes
.
class
.
getSimpleName
());
KylinTicketVo
ticketData
=
mongoTemplate
.
findOne
(
Query
.
query
(
Criteria
.
where
(
"ticketsId"
).
is
(
payOrderParam
.
getTicketId
())),
KylinTicketVo
.
class
,
KylinTicketVo
.
class
.
getSimpleName
());
if
(
performanceData
==
null
||
ticketTimesData
==
null
||
ticketData
==
null
)
{
return
false
;
//参数错误
}
if
(!
ticketData
.
getTimeId
().
equals
(
payOrderParam
.
getTimeId
())
||
!
ticketTimesData
.
getPerformanceId
().
equals
(
payOrderParam
.
getPerformanceId
()))
{
return
false
;
//参数错误
}
//会员时间获取
String
memberTimeStart
=
ticketData
.
getMemberTimeStart
();
// 会员开售时间
String
timeStart
=
ticketData
.
getTimeStart
();
// 普通开售时间
String
timeEnd
=
ticketData
.
getTimeEnd
();
// 购票停售时间
String
timeExpressEnd
=
ticketData
.
getTimeEndExpress
();
// 快递停售时间
int
performanceBuyCount
=
0
;
//演出下所有票种购买数量
int
ticketBuyCount
=
0
;
// 单一票种购买数量
boolean
isMember
=
false
;
//获取是否是会员 TODO
int
memberType
;
//会员状态 不需要判断会员 1判断会员逻辑 2会员专属
if
(
ticketData
.
getIsExclusive
()
==
1
)
{
memberType
=
2
;
if
(!
isMember
)
{
return
false
;
//没有会员权限
}
}
else
{
if
(
DateUtil
.
compareStrDay
(
DateUtil
.
getNowTime
(),
memberTimeStart
)
==
1
&&
DateUtil
.
compareStrDay
(
DateUtil
.
getNowTime
(),
timeStart
)
==
-
1
&&
ticketData
.
getIsMember
()
==
1
)
{
// 会员购买逻辑
memberType
=
1
;
if
(!
isMember
)
{
return
false
;
//没有会员权限
}
}
else
{
// 普通用户购买逻辑
memberType
=
0
;
}
}
// 获取限购 实名
int
ticketLimit
=
ticketData
.
getLimitCount
();
//普通票种限购
int
ticketMemberLimit
=
ticketData
.
getLimitCountMember
();
//会员票种限购
int
performanceLimit
=
performanceData
.
getLimitCount
();
//普通演出限购
int
performanceMemberLimit
=
performanceData
.
getLimitCountMember
();
//会员演出限购
int
isTrueName
=
performanceData
.
getIsTrueName
();
//是否演出实名
//通用判断时间
if
(
isMember
)
{
if
(
DateUtil
.
compareStrDay
(
DateUtil
.
getNowTime
(),
memberTimeStart
)
==
-
1
)
{
return
false
;
//未开始
}
}
else
{
if
(
DateUtil
.
compareStrDay
(
DateUtil
.
getNowTime
(),
timeStart
)
==
-
1
)
{
return
false
;
//未开始
}
}
if
(
DateUtil
.
compareStrDay
(
DateUtil
.
getNowTime
(),
timeEnd
)
==
1
)
{
return
false
;
//已结束
}
//快递票判断
if
(
payOrderParam
.
getIsExpress
()
==
1
&&
DateUtil
.
compareStrDay
(
DateUtil
.
getNowTime
(),
timeExpressEnd
)
==
1
)
{
return
false
;
//快递票不卖
}
if
(
payOrderParam
.
getIsExpress
()
==
1
&&
payOrderParam
.
getAddressId
().
isEmpty
())
{
return
false
;
//快递票未填写收货地址
}
//实名判断
if
(
isTrueName
==
1
&&
payOrderParam
.
getEnterIdList
().
size
()
<=
0
)
{
return
false
;
//需要实名 未实名
}
if
(
isTrueName
==
1
&&
payOrderParam
.
getEnterIdList
().
size
()
!=
payOrderParam
.
getNumber
())
{
return
false
;
//入场人数量错误
}
//学生票 判断
if
(
payOrderParam
.
getIsStudent
()
==
1
)
{
for
(
String
enterId
:
payOrderParam
.
getEnterIdList
())
{
AdamEntersVo
adamEnters
=
feignAdamBaseClient
.
queryEnters
(
enterId
,
uid
).
getData
();
int
age
=
IDCard
.
getAgeByIdCard
(
adamEnters
.
getIdCard
());
if
(
age
>
25
)
{
return
false
;
//年龄超了
}
}
}
//限购判断 如果实名 则身份证维度限购 如果不实名则数量限购
if
(
performanceData
.
getIsTrueName
()
==
1
)
{
//已购买数量 身份证
performanceBuyCount
=
0
;
//演出下所有票种购买数量 TODO
ticketBuyCount
=
0
;
// 单一票种购买数量 TODO
}
else
{
//已购买数量 数量
performanceBuyCount
=
0
;
//演出下所有票种购买数量 TODO
ticketBuyCount
=
0
;
// 单一票种购买数量 TODO
}
//会员区间
if
(
memberType
==
1
||
memberType
==
2
)
{
if
(
performanceBuyCount
>=
performanceMemberLimit
&&
performanceMemberLimit
!=
0
)
{
return
false
;
//超过演出维度购买量
}
if
(
ticketBuyCount
>=
ticketMemberLimit
&&
ticketMemberLimit
!=
0
)
{
return
false
;
//超过票维度购买量
}
}
else
{
//非会员区间
if
(
performanceBuyCount
>=
performanceLimit
&&
performanceLimit
!=
0
)
{
return
false
;
//超过演出维度购买量
}
if
(
ticketBuyCount
>=
ticketLimit
&&
ticketLimit
!=
0
)
{
return
false
;
//超过票维度购买量
}
}
// 判断库存
int
surplusGeneral
=
dataUtils
.
changeSurplusGeneral
(
payOrderParam
.
getTicketId
(),
-
payOrderParam
.
getNumber
());
if
(
surplusGeneral
<
0
)
{
//库存回滚
dataUtils
.
changeSurplusGeneral
(
payOrderParam
.
getTicketId
(),
payOrderParam
.
getNumber
());
return
false
;
//没抢到
}
//生成订单
KylinOrderTickets
orderTickets
=
new
KylinOrderTickets
();
orderTickets
.
setOrderTicketsId
(
IDGenerator
.
nextSnowId
().
toString
());
orderTickets
.
setUserId
(
uid
);
// orderTickets.setUserName();
// orderTickets.setUserMobile();
orderTickets
.
setPerformanceTitle
(
performanceData
.
getTitle
());
// orderTickets.setOrderCode();
// orderTickets.setQrCode();
// orderTickets.setOrderType();
// orderTickets.setOrderVersion();
orderTickets
.
setNumber
(
payOrderParam
.
getNumber
());
orderTickets
.
setPrice
(
ticketData
.
getPrice
());
orderTickets
.
setPriceMember
(
ticketData
.
getMemberPrice
());
// orderTickets.setPriceTotal();
orderTickets
.
setPriceVoucher
(
new
BigDecimal
(
"0.0"
));
orderTickets
.
setPriceActual
(
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
(
ticketData
.
getIsExpress
()
==
1
)
{
AdamAddressesVo
addressesVo
=
feignAdamBaseClient
.
queryAddresses
(
payOrderParam
.
getAddressId
(),
uid
).
getData
();
orderTickets
.
setExpressContacts
(
addressesVo
.
getName
());
orderTickets
.
setExpressAddress
(
addressesVo
.
getAddress
());
orderTickets
.
setExpressPhone
(
addressesVo
.
getPhone
());
orderTickets
.
setGetTicketType
(
"express"
);
}
else
{
orderTickets
.
setExpressContacts
(
""
);
orderTickets
.
setExpressAddress
(
""
);
orderTickets
.
setExpressPhone
(
""
);
orderTickets
.
setGetTicketType
(
"electronic"
);
}
orderTickets
.
setCouponType
(
"no"
);
orderTickets
.
setGetTicketDescribe
(
""
);
// orderTickets.setPayCountdownMinute();
orderTickets
.
setCreatedAt
(
LocalDateTime
.
now
());
orderTickets
.
setUpdatedAt
(
null
);
//生成票
return
true
;
}
}
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