Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
X
xm-sportstest
Overview
Overview
Details
Activity
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
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
xiamai-test
xm-sportstest
Commits
a07aa094
Commit
a07aa094
authored
Jul 30, 2024
by
DuJunLi
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
优化代码,新增优惠券相关case
parent
12635d76
Hide whitespace changes
Inline
Side-by-side
Showing
15 changed files
with
291 additions
and
56 deletions
+291
-56
src/main/java/com/xiaomai/cases/polar/coupon/CouponTools.java
+55
-0
src/main/java/com/xiaomai/cases/polar/coupon/TestBatchSendCouponToMember.java
+107
-4
src/main/java/com/xiaomai/cases/polar/schedule/camp/TestEditCampRuleSchedule.java
+1
-1
src/main/java/com/xiaomai/cases/polar/schedule/camp/TestEditCampScheduleItem.java
+5
-4
src/main/java/com/xiaomai/cases/polar/schedule/camp/TestGetCampScheduleItemDetail.java
+1
-1
src/main/java/com/xiaomai/cases/polar/schedule/group/TestCreateGroupRuleSchedule.java
+5
-1
src/main/java/com/xiaomai/cases/polar/schedule/group/TestDelGroupScheduleItem.java
+3
-3
src/main/java/com/xiaomai/cases/polar/schedule/group/TestEditGroupSchedule.java
+5
-5
src/main/java/com/xiaomai/cases/polar/training/TestDoForceOpenTraining.java
+23
-9
src/main/java/com/xiaomai/cases/polar/training/TestDoSignCampOrder.java
+1
-1
src/main/java/com/xiaomai/cases/polar/training/TestEditTraining.java
+20
-20
src/main/java/com/xiaomai/cases/polar/training/TestSearchTrainingAccountRecordsList.java
+1
-1
src/main/java/com/xiaomai/cases/polar/training/TestSignWaitingCampOrder.java
+2
-2
src/main/java/com/xiaomai/cases/polar/training/TrainingTools.java
+44
-1
src/main/java/com/xiaomai/utils/CommUtil.java
+18
-3
No files found.
src/main/java/com/xiaomai/cases/polar/coupon/CouponTools.java
View file @
a07aa094
...
...
@@ -184,6 +184,60 @@ public class CouponTools extends BaseTestImpl {
dataApi
.
doRequest
(
RequestType
.
JSON
,
dataparams
,
body
.
toString
(),
dataheadrs
).
assetsSuccess
(
true
);
}
/**
* 优惠券详情-查看已发放/已使用优惠券
* @param couponId 优惠券ID
* @param status 优惠券的适用状态,""表示已发放列表的状态,USED是已使用
*/
public
void
getCouponReceiveRecord
(
String
couponId
,
String
status
){
setUP
(
"API_getCouponReceiveRecord"
);
JSONObject
body
=
new
JSONObject
();
body
.
put
(
"operatorId"
,
dataApi
.
getLoginInfo
().
getAdminId
());
body
.
put
(
"studioId"
,
dataApi
.
getLoginInfo
().
getStudioId
());
body
.
put
(
"brandId"
,
dataApi
.
getLoginInfo
().
getBrandId
());
body
.
put
(
"current"
,
0
);
body
.
put
(
"size"
,
500
);
body
.
put
(
"couponId"
,
couponId
);
body
.
put
(
"status"
,
status
);
if
(
status
.
isEmpty
()){
body
.
put
(
"status"
,
null
);
}
dataApi
.
doRequest
(
RequestType
.
JSON
,
dataparams
,
body
.
toString
(),
dataheadrs
).
assetsSuccess
(
true
);
}
/**
* 会员详情-查看会员已领取/已发放优惠券
* @param memberId 会员ID
* @param status 优惠券状态:待使用"AVAILABLE", 已使用"USED", 已过期"EXPIRED",已作废"ABANDONED"
*/
public
void
getMemberReceivedCoupon
(
String
memberId
,
String
status
){
setUP
(
"API_getMemberReceivedCoupon"
);
JSONObject
body
=
new
JSONObject
();
body
.
put
(
"operatorId"
,
dataApi
.
getLoginInfo
().
getAdminId
());
body
.
put
(
"studioId"
,
dataApi
.
getLoginInfo
().
getStudioId
());
body
.
put
(
"brandId"
,
dataApi
.
getLoginInfo
().
getBrandId
());
body
.
put
(
"current"
,
0
);
body
.
put
(
"size"
,
500
);
body
.
put
(
"receiverId"
,
memberId
);
body
.
put
(
"status"
,
status
);
dataApi
.
doRequest
(
RequestType
.
JSON
,
dataparams
,
body
.
toString
(),
dataheadrs
).
assetsSuccess
(
true
);
}
/**
* 作废会员已领取/已发放的优惠券
* @param recordId 对应的记录ID
*/
public
void
abandonMembercouponReceiveRecord
(
String
recordId
){
setUP
(
"API_abandonMembercouponReceiveRecord"
);
JSONObject
body
=
new
JSONObject
();
body
.
put
(
"operatorId"
,
dataApi
.
getLoginInfo
().
getAdminId
());
body
.
put
(
"studioId"
,
dataApi
.
getLoginInfo
().
getStudioId
());
body
.
put
(
"brandId"
,
dataApi
.
getLoginInfo
().
getBrandId
());
body
.
put
(
"id"
,
recordId
);
dataApi
.
doRequest
(
RequestType
.
JSON
,
dataparams
,
body
.
toString
(),
dataheadrs
).
assetsSuccess
(
true
);
}
}
\ No newline at end of file
src/main/java/com/xiaomai/cases/polar/coupon/TestBatchSendCouponToMember.java
View file @
a07aa094
package
com
.
xiaomai
.
cases
.
polar
.
coupon
;
import
com.alibaba.fastjson.JSONObject
;
import
com.xiaomai.
basetest.BaseTestImpl
;
import
com.xiaomai.
cases.polar.finance.order.OrderTools
;
import
com.xiaomai.cases.polar.member.Tools
;
import
com.xiaomai.cases.polar.schedule.camp.SelectTargetTrainingCampAndGetInfo
;
import
com.xiaomai.cases.polar.training.TrainingTools
;
import
com.xiaomai.enums.ApiModule
;
import
com.xiaomai.enums.LoginAccount
;
...
...
@@ -25,7 +26,7 @@ import java.util.List;
* data 2024/7/27 17:16
*/
public
class
TestBatchSendCouponToMember
extends
BaseTestImpl
{
public
class
TestBatchSendCouponToMember
extends
SelectTargetTrainingCampAndGetInfo
{
@Resource
(
name
=
"couponTools"
)
CouponTools
couponTools
;
String
memberId
=
""
;
...
...
@@ -34,6 +35,9 @@ public class TestBatchSendCouponToMember extends BaseTestImpl {
@Resource
(
name
=
"trainingTools"
)
TrainingTools
trainingTools
;
@Resource
(
name
=
"orderTools"
)
OrderTools
orderTools
;
String
title
=
""
;
String
couponId
=
""
;
...
...
@@ -64,13 +68,14 @@ public class TestBatchSendCouponToMember extends BaseTestImpl {
int
quantityBefore
=
Integer
.
valueOf
(
XMJSONPath
.
readPath
(
dataApi
.
getApi_response
(),
"$.result.quantity"
));
int
inventoryBefore
=
Integer
.
valueOf
(
XMJSONPath
.
readPath
(
dataApi
.
getApi_response
(),
"$.result.inventory"
));
int
receivedBefore
=
Integer
.
valueOf
(
XMJSONPath
.
readPath
(
dataApi
.
getApi_response
(),
"$.result.received"
));
Double
preferential
=
Double
.
valueOf
(
XMJSONPath
.
readPath
(
dataApi
.
getApi_response
(),
"$.result.preferential"
));
//4.操作定向发放优惠券
//搜索目标会员
String
phone
=
"1
7682302508
"
;
String
phone
=
"1
5558121569
"
;
memberId
=
trainingTools
.
searchTargerMember
(
phone
);
if
(
memberId
.
isEmpty
())
{
memberId
=
tools
.
create
(
"
测试机吴彦祖
"
,
phone
).
getString
(
"result"
);
memberId
=
tools
.
create
(
"
杜君丽
"
,
phone
).
getString
(
"result"
);
}
JSONObject
body
=
new
JSONObject
();
List
<
String
>
receiverIds
=
new
ArrayList
<>();
...
...
@@ -101,9 +106,107 @@ public class TestBatchSendCouponToMember extends BaseTestImpl {
Assert
.
assertTrue
(
Integer
.
valueOf
(
XMJSONPath
.
readPath
(
dataApi
.
getApi_response
(),
"$.result.inventory"
))+
1
==
inventoryBefore
,
"优惠券发放给会员后,剩余库存没减少"
);
Assert
.
assertTrue
(
Integer
.
valueOf
(
XMJSONPath
.
readPath
(
dataApi
.
getApi_response
(),
"$.result.received"
))-
1
==
receivedBefore
,
"优惠券发放给会员后,已发放数据不对"
);
//优惠券详情-已发放记录
couponTools
.
getCouponReceiveRecord
(
couponId
,
""
);
Long
countR
=
XMJSONPath
.
getJSONArrayByReadPath
(
dataApi
.
getApi_response
(),
"$.result.records"
).
toJavaList
(
JSONObject
.
class
).
stream
().
filter
(
e
->
e
.
getString
(
"couponId"
).
equals
(
couponId
)).
count
();
Assert
.
assertTrue
(
countR
==
1
,
"操作定向发放优惠券后,发给一个学员,然后在优惠券详情已发放列表没匹配到数据"
);
String
goalRecordId
=
XMJSONPath
.
getJSONArrayByReadPath
(
dataApi
.
getApi_response
(),
"$.result.records"
).
toJavaList
(
JSONObject
.
class
).
stream
().
filter
(
e
->
e
.
getString
(
"couponId"
).
equals
(
couponId
)).
map
(
e
->
e
.
getString
(
"id"
)).
findFirst
().
orElse
(
null
);
//会员详情-优惠券-已发放优惠券:待使用列表check
couponTools
.
getMemberReceivedCoupon
(
memberId
,
"AVAILABLE"
);
Assert
.
assertTrue
(
XMJSONPath
.
getJSONArrayByReadPath
(
dataApi
.
getApi_response
(),
"$.result.records"
).
toJavaList
(
JSONObject
.
class
).
stream
().
filter
(
e
->
e
.
getString
(
"id"
).
equals
(
goalRecordId
)).
count
()==
1
,
"操作定向发放优惠券后,发给一个学员,然后在会员详情-优惠券-待使用列表没匹配到数据"
);
//操作修改剩余库存
couponTools
.
modifyCouponInventory
(
couponId
,
10
);
//剩余库存修改成功后,优惠券详情check 总数据,剩余库存,已发放数量
couponTools
.
getCouponDetail
(
couponId
);
Assert
.
assertTrue
(
Integer
.
valueOf
(
XMJSONPath
.
readPath
(
dataApi
.
getApi_response
(),
"$.result.quantity"
))==
11
,
"修改剩余库存后,优惠券的总数量对不上了"
);
Assert
.
assertTrue
(
Integer
.
valueOf
(
XMJSONPath
.
readPath
(
dataApi
.
getApi_response
(),
"$.result.inventory"
))==
10
,
"修改剩余库存后,剩余库存数量对不上"
);
Assert
.
assertTrue
(
Integer
.
valueOf
(
XMJSONPath
.
readPath
(
dataApi
.
getApi_response
(),
"$.result.received"
))==
1
,
"优惠券发放给会员后,已发放数据不对"
);
//操作失效优惠券
couponTools
.
InvalidCoupon
(
couponId
);
//查看优惠券详情,check状态
couponTools
.
getCouponDetail
(
couponId
);
Assert
.
assertTrue
(
XMJSONPath
.
readPath
(
dataApi
.
getApi_response
(),
"$.result.status"
).
equals
(
"VOIDED"
),
"操作失效优惠券后,查看优惠券详情,后端返回的状态值不是VOIDED"
);
//操作给刚发放优惠券的会员 去买训练营(使用优惠券)
trainingTools
.
doSignCampOrder
(
memberId
,
this
.
price
-
preferential
,
this
.
campId
,
goalRecordId
);
String
orderId
=
XMJSONPath
.
readPath
(
dataApi
.
getApi_response
(),
"$.result"
);
//优惠券详情-已使用优惠券check
couponTools
.
getCouponReceiveRecord
(
couponId
,
"USED"
);
Long
countRUse
=
XMJSONPath
.
getJSONArrayByReadPath
(
dataApi
.
getApi_response
(),
"$.result.records"
).
toJavaList
(
JSONObject
.
class
).
stream
().
filter
(
e
->
e
.
getString
(
"couponId"
).
equals
(
couponId
)).
filter
(
e
->
e
.
getString
(
"status"
).
equals
(
"USED"
)).
count
();
Assert
.
assertTrue
(
countRUse
==
1
,
"定向发放优惠券后,学员使用了优惠券,在优惠券详情-已使用记录中数据没匹配上"
);
//会员详情-优惠券-已使用优惠券 为 1check
couponTools
.
getMemberReceivedCoupon
(
memberId
,
"USED"
);
Assert
.
assertTrue
(
XMJSONPath
.
getJSONArrayByReadPath
(
dataApi
.
getApi_response
(),
"$.result.records"
).
toJavaList
(
JSONObject
.
class
).
stream
().
filter
(
e
->
e
.
getString
(
"id"
).
equals
(
goalRecordId
)).
filter
(
e
->
e
.
getString
(
"status"
).
equals
(
"USED"
)).
count
()==
1
,
"会员使用优惠券后,会员详情-优惠券-已使用优惠券列表数据没有目标数据"
);
//会员详情-优惠券-目标待使用优惠券为0
couponTools
.
getMemberReceivedCoupon
(
memberId
,
"AVAILABLE"
);
Assert
.
assertTrue
(
XMJSONPath
.
getJSONArrayByReadPath
(
dataApi
.
getApi_response
(),
"$.result.records"
).
toJavaList
(
JSONObject
.
class
).
stream
().
filter
(
e
->
e
.
getString
(
"id"
).
equals
(
goalRecordId
)).
filter
(
e
->
e
.
getString
(
"status"
).
equals
(
"AVAILABLE"
)).
count
()==
0
,
"会员使用优惠券后,会员详情-优惠券-待使用优惠券列表数据还有目标数据"
);
//用完优惠券后check,优惠券详情已核销数量
couponTools
.
getCouponDetail
(
couponId
);
Assert
.
assertTrue
(
Integer
.
valueOf
(
XMJSONPath
.
readPath
(
dataApi
.
getApi_response
(),
"$.result.verified"
))==
1
,
"优惠券发放给会员,会员适用后,对应优惠券已使用数量不对"
);
//操作作废订单,check优惠券是否返还给会员,优惠券中已发放数量中核销数量是否同步更新
orderTools
.
discard
(
orderId
,
"重复录入"
,
"自动化测试作废训练营订单"
);
//优惠券详情-已使用优惠券check
couponTools
.
getCouponReceiveRecord
(
couponId
,
"USED"
);
Assert
.
assertTrue
(
XMJSONPath
.
getJSONArrayByReadPath
(
dataApi
.
getApi_response
(),
"$.result.records"
).
toJavaList
(
JSONObject
.
class
).
stream
().
filter
(
e
->
e
.
getString
(
"couponId"
).
equals
(
couponId
)).
filter
(
e
->
e
.
getString
(
"status"
).
equals
(
"USED"
)).
count
()==
0
,
"学员使用了优惠券报名,订单被作废后,在优惠券详情-已使用记录中数据还存在"
);
//会员详情-优惠券-已使用优惠券check(退)
couponTools
.
getMemberReceivedCoupon
(
memberId
,
"USED"
);
Assert
.
assertTrue
(
XMJSONPath
.
getJSONArrayByReadPath
(
dataApi
.
getApi_response
(),
"$.result.records"
).
toJavaList
(
JSONObject
.
class
).
stream
().
filter
(
e
->
e
.
getString
(
"id"
).
equals
(
goalRecordId
)).
filter
(
e
->
e
.
getString
(
"status"
).
equals
(
"USED"
)).
count
()==
0
,
"会员使用优惠券后,再操作作废订单,会员详情-优惠券-已使用优惠券列表数据还有目标数据"
);
//会员详情-优惠券-已发放check(+1)
couponTools
.
getMemberReceivedCoupon
(
memberId
,
"AVAILABLE"
);
Assert
.
assertTrue
(
XMJSONPath
.
getJSONArrayByReadPath
(
dataApi
.
getApi_response
(),
"$.result.records"
).
toJavaList
(
JSONObject
.
class
).
stream
().
filter
(
e
->
e
.
getString
(
"id"
).
equals
(
goalRecordId
)).
count
()==
1
,
"会员使用优惠券下单,作废订单后,然后在会员详情-优惠券-待使用列表没匹配到数据"
);
//优惠券详情-已发放记录-操作作废优惠券
couponTools
.
abandonMembercouponReceiveRecord
(
goalRecordId
);
//优惠券详情,已发放记录列表,优惠券状态为已作废
couponTools
.
getCouponReceiveRecord
(
couponId
,
""
);
Long
countRAbandon
=
XMJSONPath
.
getJSONArrayByReadPath
(
dataApi
.
getApi_response
(),
"$.result.records"
).
toJavaList
(
JSONObject
.
class
).
stream
().
filter
(
e
->
e
.
getString
(
"couponId"
).
equals
(
couponId
)).
filter
(
e
->
e
.
getString
(
"status"
).
equals
(
"ABANDONED"
)).
count
();
Assert
.
assertTrue
(
countR
==
1
,
"操作定向发放优惠券后,再作废优惠券,然后在优惠券详情已发放列表没匹配到数据"
);
//会员详情-优惠券-已作废优惠券check
couponTools
.
getMemberReceivedCoupon
(
memberId
,
"ABANDONED"
);
Assert
.
assertTrue
(
XMJSONPath
.
getJSONArrayByReadPath
(
dataApi
.
getApi_response
(),
"$.result.records"
).
toJavaList
(
JSONObject
.
class
).
stream
().
filter
(
e
->
e
.
getString
(
"id"
).
equals
(
goalRecordId
)).
filter
(
e
->
e
.
getString
(
"status"
).
equals
(
"ABANDONED"
)).
count
()==
1
,
"作废会员优惠券后,会员详情-优惠券-已作废优惠券列表数据没有目标数据"
);
//会员详情-优惠券-已发放check(-1)
couponTools
.
getMemberReceivedCoupon
(
memberId
,
"AVAILABLE"
);
Assert
.
assertTrue
(
XMJSONPath
.
getJSONArrayByReadPath
(
dataApi
.
getApi_response
(),
"$.result.records"
).
toJavaList
(
JSONObject
.
class
).
stream
().
filter
(
e
->
e
.
getString
(
"id"
).
equals
(
goalRecordId
)).
filter
(
e
->
e
.
getString
(
"status"
).
equals
(
"AVAILABLE"
)).
count
()==
0
,
"作废会员优惠券后,然后在会员详情-优惠券-待使用列表还能匹配到数据"
);
//最后要删除刚创建的训练营活动
trainingTools
.
deleteTraining
(
this
.
campId
);
}
}
...
...
src/main/java/com/xiaomai/cases/polar/schedule/camp/TestEditCampRuleSchedule.java
View file @
a07aa094
...
...
@@ -88,7 +88,7 @@ public class TestEditCampRuleSchedule extends SelectTargetTrainingCampAndGetInfo
memberId
=
tools
.
create
(
"晨晨爸爸"
,
phone
).
getString
(
"result"
);
}
//给会员报名
trainingTools
.
doSignCampOrder
(
memberId
,
this
.
price
,
this
.
campId
);
trainingTools
.
doSignCampOrder
(
memberId
,
this
.
price
,
this
.
campId
,
""
);
orderId
=
XMJSONPath
.
readPath
(
dataApi
.
getApi_response
(),
"$.result"
);
Thread
.
sleep
(
2000
);
...
...
src/main/java/com/xiaomai/cases/polar/schedule/camp/TestEditCampScheduleItem.java
View file @
a07aa094
...
...
@@ -67,7 +67,7 @@ public class TestEditCampScheduleItem extends SelectTargetTrainingCampAndGetInfo
"1140"
,
super
.
openEndDate
,
true
,
String
.
valueOf
(
loopNum
));
//查询排课日程:根据训练营和关联课程查询
campScheduleTools
.
getCampRuleScheduleList
(
campId
,
super
.
courseId
,
""
);
campScheduleTools
.
getCampRuleScheduleList
(
super
.
campId
,
super
.
courseId
,
""
);
Assert
.
assertTrue
(
XMJSONPath
.
getJSONArrayByReadPath
(
dataApi
.
getApi_response
(),
"$.result"
).
size
()
==
1
,
"排课创建成功后,日程中没查询到对应数据"
);
ruldId
=
XMJSONPath
.
getJSONArrayByReadPath
(
dataApi
.
getApi_response
(),
"$.result"
).
getJSONObject
(
0
).
getString
(
"ruleId"
);
//获取训练营活动已排课课次数
...
...
@@ -116,8 +116,8 @@ public class TestEditCampScheduleItem extends SelectTargetTrainingCampAndGetInfo
}
@Test
(
description
=
"编辑当前及后续课次"
,
priority
=
1
)
public
void
testEditCurrentAndSubsequentCampSchedule
()
{
@Test
(
description
=
"编辑当前及后续课次"
,
dependsOnMethods
=
{
"testEditCurrentCampSchedule"
},
alwaysRun
=
true
)
public
void
testEditCurrentAndSubsequentCampSchedule
()
throws
InterruptedException
{
//获取存量场地
List
<
String
>
venueAreaIds
=
groupScheduleTools
.
getStockArea
(
"流星花园秘密基地"
);
//获取下下周二的课次ID
...
...
@@ -179,8 +179,9 @@ public class TestEditCampScheduleItem extends SelectTargetTrainingCampAndGetInfo
});
}
//后续检查点check
Thread
.
sleep
(
1000
);
//1.查询排课日程:根据训练营查询,应该对应训练营可以查到2条数据,原日程和修改后生成的日程
campScheduleTools
.
getCampRuleScheduleList
(
campId
,
""
,
""
);
campScheduleTools
.
getCampRuleScheduleList
(
super
.
campId
,
super
.
courseId
,
""
);
Assert
.
assertTrue
(
XMJSONPath
.
getJSONArrayByReadPath
(
dataApi
.
getApi_response
(),
"$.result"
).
size
()
==
2
,
"编辑当前及后续课次成功后,日程中没查询到2条对应数据"
);
//1.1获取到新生成的排课日程ID
//过滤出刚创建的日程
...
...
src/main/java/com/xiaomai/cases/polar/schedule/camp/TestGetCampScheduleItemDetail.java
View file @
a07aa094
...
...
@@ -64,7 +64,7 @@ public class TestGetCampScheduleItemDetail extends SelectTargetTrainingCampAndGe
memberId
=
tools
.
create
(
"阿杜"
,
phone
).
getString
(
"result"
);
}
//给会员报名
trainingTools
.
doSignCampOrder
(
memberId
,
this
.
price
,
this
.
campId
);
trainingTools
.
doSignCampOrder
(
memberId
,
this
.
price
,
this
.
campId
,
""
);
orderId
=
XMJSONPath
.
readPath
(
dataApi
.
getApi_response
(),
"$.result"
);
trainingTools
.
getTrainingApplyRecordsList
(
this
.
campId
,
phone
);
String
memberCardId
=
XMJSONPath
.
getJSONArrayByReadPath
(
dataApi
.
getApi_response
(),
"$.result"
).
getJSONObject
(
0
).
getString
(
"memberCardId"
);
...
...
src/main/java/com/xiaomai/cases/polar/schedule/group/TestCreateGroupRuleSchedule.java
View file @
a07aa094
package
com
.
xiaomai
.
cases
.
polar
.
schedule
.
group
;
import
com.alibaba.druid.util.StringUtils
;
import
com.alibaba.fastjson.JSONArray
;
import
com.alibaba.fastjson.JSONObject
;
import
com.xiaomai.basetest.BaseTestImpl
;
...
...
@@ -97,7 +98,10 @@ public class TestCreateGroupRuleSchedule extends BaseTestImpl {
.
map
(
e
->
e
.
getString
(
"scheduleId"
))
//获取scheduleId
.
findFirst
().
orElse
(
null
);
Assert
.
assertTrue
(
scheduleId
!=
null
||!
scheduleId
.
isEmpty
(),
"刚创建的规则中,没查询到今天对应的课次"
);
// Assert.assertTrue(scheduleId!=null||!scheduleId.isEmpty(),"刚创建的规则中,没查询到今天对应的课次");//你这个判断,如果scheduleID != null 不成立,就会走到 !scheduleId.isEmpty(),此时shcdueId是null,使用.isEmpry就空指针了
Assert
.
assertTrue
(!
StringUtils
.
isEmpty
(
scheduleId
),
"刚创建的规则中,没查询到今天对应的课次"
);
//创建今日待上课的排课后查询今日待上课的数据
long
num
=
homeTools
.
queryTodaySchedule
().
getJSONArray
(
"result"
).
toJavaList
(
JSONObject
.
class
).
stream
()
...
...
src/main/java/com/xiaomai/cases/polar/schedule/group/TestDelGroupScheduleItem.java
View file @
a07aa094
...
...
@@ -40,7 +40,7 @@ public class TestDelGroupScheduleItem extends UniversalDataScheduling {
//获取下周四的课次ID(匹配到刚创建的规则ID)
Set
<
String
>
scheduleIds
=
groupScheduleTools
.
getTableDate
(
10
,
groupRuldId
);
//如果课次ID有值则继续走删除的case
if
(
!
scheduleIds
.
isEmpty
()
)
{
if
(
scheduleIds
!=
null
&&
scheduleIds
.
size
()
!=
0
)
{
scheduleIds
.
stream
().
forEach
(
scheduleId
->
{
JSONObject
body
=
new
JSONObject
();
body
.
put
(
"operatorId"
,
xmAppApi
.
getLoginInfo
().
getAdminId
());
...
...
@@ -62,12 +62,12 @@ public class TestDelGroupScheduleItem extends UniversalDataScheduling {
}
@Test
(
description
=
"删除当前及后续课次"
,
priority
=
1
)
@Test
(
description
=
"删除当前及后续课次"
,
dependsOnMethods
=
{
"testDelCurrentGroupSchedule"
},
alwaysRun
=
true
)
public
void
testDelCurrentAndSubsequentGroupSchedule
()
{
//获取下周三的课次ID(匹配到对应的规则ID)
Set
<
String
>
scheduleIds
=
groupScheduleTools
.
getTableDate
(
9
,
groupRuldId
);
//如果课次ID有值则继续走删除的case
if
(
!
scheduleIds
.
isEmpty
()
)
{
if
(
scheduleIds
!=
null
&&
scheduleIds
.
size
()
!=
0
)
{
scheduleIds
.
stream
().
forEach
(
scheduleId
->
{
JSONObject
body
=
new
JSONObject
();
body
.
put
(
"operatorId"
,
xmAppApi
.
getLoginInfo
().
getAdminId
());
...
...
src/main/java/com/xiaomai/cases/polar/schedule/group/TestEditGroupSchedule.java
View file @
a07aa094
...
...
@@ -44,7 +44,7 @@ public class TestEditGroupSchedule extends UniversalDataScheduling {
//获取下周四的课次ID(匹配到刚创建的规则ID)
scheduleIdsN
=
groupScheduleTools
.
getTableDate
(
10
,
groupRuldId
);
//如果课次ID有值则继续走删除的case
if
(
!
scheduleIdsN
.
isEmpty
()
)
{
if
(
scheduleIdsN
!=
null
&&
scheduleIdsN
.
size
()
!=
0
)
{
scheduleIdsN
.
stream
().
forEach
(
scheduleId
->
{
JSONObject
body
=
new
JSONObject
();
body
.
put
(
"operatorId"
,
xmAppApi
.
getLoginInfo
().
getAdminId
());
...
...
@@ -87,12 +87,12 @@ public class TestEditGroupSchedule extends UniversalDataScheduling {
}
@Test
(
description
=
"编辑当前及后续课次"
,
priority
=
1
)
@Test
(
description
=
"编辑当前及后续课次"
,
dependsOnMethods
=
{
"testEditCurrentGroupSchedule"
},
alwaysRun
=
true
)
public
void
testEditCurrentAndSubsequentGroupSchedule
()
{
//获取下周二的课次ID(匹配到刚创建的规则ID)
Set
<
String
>
scheduleIds
=
groupScheduleTools
.
getTableDate
(
8
,
groupRuldId
);
//如果课次ID有值则继续走编辑的case
if
(
!
scheduleIds
.
isEmpty
()
)
{
if
(
scheduleIds
!=
null
&&
scheduleIds
.
size
()
!=
0
)
{
scheduleIds
.
stream
().
forEach
(
scheduleId
->
{
JSONObject
body
=
new
JSONObject
();
body
.
put
(
"operatorId"
,
xmAppApi
.
getLoginInfo
().
getAdminId
());
...
...
@@ -129,7 +129,7 @@ public class TestEditGroupSchedule extends UniversalDataScheduling {
//查看下周三课次是否同步被修改
Set
<
String
>
scheduleIdX
=
groupScheduleTools
.
getTableDate
(
9
,
newGroupRuldId
);
String
startStamp2
=
CommUtil
.
getWholeHourTimeStamp
(
9
,
"13:00"
);
if
(
!
scheduleIdX
.
isEmpty
()
)
{
if
(
scheduleIdX
!=
null
&&
scheduleIdX
.
size
()
!=
0
)
{
scheduleIdX
.
stream
().
forEach
(
scheduleId1
->
{
//编辑成功后check同规则中下周三课次详情修改内容是否同步成功
checkData
(
scheduleId1
,
startStamp2
);
...
...
@@ -142,7 +142,7 @@ public class TestEditGroupSchedule extends UniversalDataScheduling {
//获取下周一的课次ID,查看下周一课次是否还是原来的(没被修改,还是原来的规则)
Set
<
String
>
scheduleId1
=
groupScheduleTools
.
getTableDate
(
7
,
groupRuldId
);
String
startStamp3
=
CommUtil
.
getWholeHourTimeStamp
(
7
,
"13:00"
);
if
(
!
scheduleId1
.
isEmpty
()
)
{
if
(
scheduleId1
!=
null
&&
scheduleId1
.
size
()
!=
0
)
{
scheduleId1
.
stream
().
forEach
(
scheduleId0
->
{
//编辑成功后check同规则中下周一课次详情
groupScheduleTools
.
getScheduleItemDetail
(
scheduleId0
);
...
...
src/main/java/com/xiaomai/cases/polar/training/TestDoForceOpenTraining.java
View file @
a07aa094
...
...
@@ -5,6 +5,7 @@ import com.xiaomai.enums.ApiModule;
import
com.xiaomai.enums.LoginAccount
;
import
com.xiaomai.enums.RequestType
;
import
com.xiaomai.enums.Terminal
;
import
com.xiaomai.utils.CommUtil
;
import
com.xiaomai.utils.RandomStringUtil
;
import
com.xiaomai.utils.XMJSONPath
;
import
org.testng.Assert
;
...
...
@@ -13,6 +14,8 @@ import org.testng.annotations.BeforeClass;
import
org.testng.annotations.Test
;
import
javax.annotation.Resource
;
import
java.util.ArrayList
;
import
java.util.List
;
/**
* 对报名中的活动操作立即成营
...
...
@@ -38,10 +41,10 @@ public class TestDoForceOpenTraining extends BaseCreateTrainingData {
public
void
testForceOpenTraining
()
throws
InterruptedException
{
//1.创建训练营活动:保存并发布
id
=
trainingTools
.
createThenPublishTraining
(
String
.
valueOf
(
currentTimestamp
+
3000
0
),
applyEndTime
,
courseId
,
openStartDate
,
id
=
trainingTools
.
createThenPublishTraining
(
CommUtil
.
getTodayGoalTime
(
2
0
),
applyEndTime
,
courseId
,
openStartDate
,
openEndDate
,
0.01
,
trainingTitle
,
2
,
1
,
trainerListIdS
,
"YES"
);
if
(
id
.
isEmpty
())
{
id
=
trainingTools
.
createThenPublishTraining
(
String
.
valueOf
(
currentTimestamp
+
3000
0
),
applyEndTime
,
courseId
,
openStartDate
,
id
=
trainingTools
.
createThenPublishTraining
(
CommUtil
.
getTodayGoalTime
(
2
0
),
applyEndTime
,
courseId
,
openStartDate
,
openEndDate
,
0.01
,
trainingTitle
+
RandomStringUtil
.
randomString
(
3
),
2
,
1
,
trainerListIdS
,
"YES"
);
}
//2.查看活动详情,check 活动状态
...
...
@@ -66,14 +69,25 @@ public class TestDoForceOpenTraining extends BaseCreateTrainingData {
Assert
.
assertTrue
(
XMJSONPath
.
getJSONArrayByReadPath
(
dataApi
.
getApi_response
(),
"$.result"
).
size
()
>
0
,
"活动创建后,根据活动名称全局搜索没有数据"
);
Thread
.
sleep
(
20000
);
//延迟20秒后,活动达到报名时间(可能状态没同步,定时任务没到时间执行,但是数据库中已是报名中)
//4.对报名中的活动操作立即成营
JSONObject
body1
=
new
JSONObject
();
body1
.
put
(
"operatorId"
,
dataApi
.
getLoginInfo
().
getAdminId
());
body1
.
put
(
"studioId"
,
dataApi
.
getLoginInfo
().
getStudioId
());
body1
.
put
(
"brandId"
,
dataApi
.
getLoginInfo
().
getBrandId
());
body1
.
put
(
"id"
,
id
);
xmAppApi
.
doRequest
(
RequestType
.
JSON
,
params
,
body1
.
toString
(),
headers
).
assetsSuccess
(
true
);
//搜索列表中有没有报名中APPLYING的训练营,如果有,就操作立即成营
List
<
String
>
statuApplying
=
new
ArrayList
<>();
statuApplying
.
add
(
"APPLYING"
);
//报名中
trainingTools
.
searchTrainingList
(
""
,
""
,
statuApplying
);
String
goalId
=
""
;
int
goalN
=
XMJSONPath
.
getJSONArrayByReadPath
(
dataApi
.
getApi_response
(),
"$.result.records"
).
size
();
if
(
goalN
>
0
){
goalId
=
XMJSONPath
.
readPath
(
dataApi
.
getApi_response
(),
"$.result.records[0].id"
);
JSONObject
body1
=
new
JSONObject
();
body1
.
put
(
"operatorId"
,
dataApi
.
getLoginInfo
().
getAdminId
());
body1
.
put
(
"studioId"
,
dataApi
.
getLoginInfo
().
getStudioId
());
body1
.
put
(
"brandId"
,
dataApi
.
getLoginInfo
().
getBrandId
());
body1
.
put
(
"id"
,
goalId
);
xmAppApi
.
doRequest
(
RequestType
.
JSON
,
params
,
body1
.
toString
(),
headers
).
assetsSuccess
(
true
);
}
}
...
...
src/main/java/com/xiaomai/cases/polar/training/TestDoSignCampOrder.java
View file @
a07aa094
...
...
@@ -53,7 +53,7 @@ public class TestDoSignCampOrder extends SelectTargetTrainingCampAndGetInfo {
memberId
=
tools
.
create
(
"阿杜"
,
phone
).
getString
(
"result"
);
}
//给会员报名
trainingTools
.
doSignCampOrder
(
memberId
,
this
.
price
,
this
.
campId
);
trainingTools
.
doSignCampOrder
(
memberId
,
this
.
price
,
this
.
campId
,
""
);
Thread
.
sleep
(
1000
);
//报名成功后根据会员手机号,在报名会员列表搜索报名数据
trainingTools
.
getTrainingApplyRecordsList
(
this
.
campId
,
phone
);
...
...
src/main/java/com/xiaomai/cases/polar/training/TestEditTraining.java
View file @
a07aa094
...
...
@@ -5,6 +5,7 @@ import com.xiaomai.enums.ApiModule;
import
com.xiaomai.enums.LoginAccount
;
import
com.xiaomai.enums.RequestType
;
import
com.xiaomai.enums.Terminal
;
import
com.xiaomai.utils.CommUtil
;
import
com.xiaomai.utils.RandomStringUtil
;
import
com.xiaomai.utils.XMJSONPath
;
import
org.testng.Assert
;
...
...
@@ -86,56 +87,55 @@ public class TestEditTraining extends BaseCreateTrainingData {
}
@Test
(
description
=
"编辑已发布训练营活动"
,
priority
=
1
)
@Test
(
description
=
"编辑已发布训练营活动"
,
priority
=
1
)
public
void
editPublishTraining
()
throws
InterruptedException
{
//1.查询关联对应课程的活动数据
trainingTools
.
searchTrainingList
(
courseId
,
""
,
new
ArrayList
<>());
trainingTools
.
searchTrainingList
(
courseId
,
""
,
new
ArrayList
<>());
int
listCountBefore
=
XMJSONPath
.
getJSONArrayByReadPath
(
dataApi
.
getApi_response
(),
"$.result.records"
).
size
();
//2.创建已发布的训练营活动
oneKeytTrainingId
=
trainingTools
.
oneKeyCreateTraining
(
courseId
,
trainerListIdS
);
//2.创建已发布的训练营活动
,报名开始时间晚于当前时间半小时
oneKeytTrainingId
=
trainingTools
.
oneKeyCreateTraining
(
courseId
,
trainerListIdS
,
CommUtil
.
getTodayGoalTime
(
30
)
);
Thread
.
sleep
(
2000
);
//3.列表搜索数据check
trainingTools
.
searchTrainingList
(
courseId
,
""
,
new
ArrayList
<>());
int
listCountAfter
=
XMJSONPath
.
getJSONArrayByReadPath
(
dataApi
.
getApi_response
(),
"$.result.records"
).
size
();
Assert
.
assertEquals
(
listCountAfter
,
(
listCountBefore
+
1
),
"训练营活动创建成功列表数据没增加"
);
/* List<JSONObject> list=XMJSONPath.getJSONArrayByReadPath(dataApi.getApi_response(), "$.result.records").toJavaList(JSONObject.class).stream()
.filter(object -> object.getString("id").equals(oneKeytTrainingId)).collect(Collectors.toList()); */
trainingTools
.
searchTrainingList
(
courseId
,
""
,
new
ArrayList
<>());
Long
list
=
XMJSONPath
.
getJSONArrayByReadPath
(
dataApi
.
getApi_response
(),
"$.result.records"
).
toJavaList
(
JSONObject
.
class
).
stream
()
.
filter
(
object
->
object
.
getString
(
"id"
).
equals
(
oneKeytTrainingId
)).
count
();
Assert
.
assertTrue
(
list
==
1
,
"训练营活动创建成功列表数据没增加"
);
JSONObject
goalObject
=
XMJSONPath
.
getJSONArrayByReadPath
(
dataApi
.
getApi_response
(),
"$.result.records"
).
toJavaList
(
JSONObject
.
class
).
stream
()
.
filter
(
object
->
object
.
getString
(
"id"
).
equals
(
oneKeytTrainingId
)).
findFirst
().
orElse
(
null
);
//返回第一个对象,没有就返回空
if
(
goalObject
!=
null
)
{
String
title
=
goalObject
.
getString
(
"title"
);
String
applyEndTime
=
goalObject
.
getString
(
"applyEndTime"
);
String
applyStartTime
=
goalObject
.
getString
(
"applyStartTime"
);
String
openStartDate
=
goalObject
.
getString
(
"openStartDate"
);
String
openEndDate
=
goalObject
.
getString
(
"openEndDate"
);
if
(
goalObject
!=
null
)
{
String
title
=
goalObject
.
getString
(
"title"
);
String
applyEndTime
=
goalObject
.
getString
(
"applyEndTime"
);
String
applyStartTime
=
goalObject
.
getString
(
"applyStartTime"
);
String
openStartDate
=
goalObject
.
getString
(
"openStartDate"
);
String
openEndDate
=
goalObject
.
getString
(
"openEndDate"
);
//4.编辑已发布的活动(训练营名称,关联课程,开营时间,总课次数,售价,报名开始时间,报名结束时间不能修改)check不能修改的传值后也不会改变
JSONObject
editBody
=
new
JSONObject
();
editBody
.
put
(
"operatorId"
,
xmAppApi
.
getLoginInfo
().
getAdminId
());
editBody
.
put
(
"studioId"
,
xmAppApi
.
getLoginInfo
().
getStudioId
());
// 场馆
editBody
.
put
(
"brandId"
,
xmAppApi
.
getLoginInfo
().
getBrandId
());
editBody
.
put
(
"applyEndTime"
,
applyEndTime
);
//报名结束时间
editBody
.
put
(
"applyStartTime"
,
applyStartTime
);
//报名开始时间
editBody
.
put
(
"applyStartTime"
,
applyStartTime
);
//报名开始时间
editBody
.
put
(
"courseId"
,
courseId
);
//关联课程ID
editBody
.
put
(
"creatorId"
,
xmAppApi
.
getLoginInfo
().
getAdminId
());
// 创建人即操作者
editBody
.
put
(
"openEndDate"
,
openEndDate
);
//开营结束时间
editBody
.
put
(
"openStartDate"
,
openStartDate
);
//开营开始时间
editBody
.
put
(
"price"
,
10
);
//售卖价格
editBody
.
put
(
"surfaceUrl"
,
"https://xiaomai-res.oss-cn-hangzhou.aliyuncs.com/xmfit/course_cover/training_camp_0.png"
);
// 默认活动封面图
editBody
.
put
(
"title"
,
"title"
);
//名称不能修改,这里故意修改了,等保存后check数据
editBody
.
put
(
"title"
,
"title"
);
//名称不能修改,这里故意修改了,等保存后check数据
editBody
.
put
(
"totalClassHour"
,
20
);
// 总课时数,不能修改,这里故意修改了,等保存后check数据
editBody
.
put
(
"traineeLowerLimit"
,
1
);
// 开营人数
editBody
.
put
(
"traineeUpperLimit"
,
99
);
// 人数上限
editBody
.
put
(
"trainerList"
,
trainerListIdS
);
// 上课教练
editBody
.
put
(
"xcxSaleStatus"
,
"YES"
);
//开启小程序售卖
editBody
.
put
(
"underlinePrice"
,
29.9
);
//可以修改
editBody
.
put
(
"id"
,
oneKeytTrainingId
);
//活动ID
editBody
.
put
(
"id"
,
oneKeytTrainingId
);
//活动ID
xmAppApi
.
doRequest
(
RequestType
.
JSON
,
params
,
editBody
.
toString
(),
headers
).
assetsSuccess
(
true
);
//5.查看活动详情,check 不能修改项和一修改项是否被同步修改
trainingTools
.
findTrainingDetailById
(
oneKeytTrainingId
);
//5.1不能修改的字段check(修改后和修改前比对)
Assert
.
assertEquals
(
XMJSONPath
.
readPath
(
dataApi
.
getApi_response
(),
"$.result.title"
),
title
);
Assert
.
assertEquals
(
XMJSONPath
.
readPath
(
dataApi
.
getApi_response
(),
"$.result.totalClassHour"
),
"2"
);
Assert
.
assertEquals
(
XMJSONPath
.
readPath
(
dataApi
.
getApi_response
(),
"$.result.title"
),
title
);
Assert
.
assertEquals
(
XMJSONPath
.
readPath
(
dataApi
.
getApi_response
(),
"$.result.totalClassHour"
),
"2"
);
Assert
.
assertEquals
(
Double
.
valueOf
(
XMJSONPath
.
readPath
(
dataApi
.
getApi_response
(),
"$.result.price"
)),
0.00
);
//5.2可以修改字段check是否被同步修改
Assert
.
assertEquals
(
Double
.
valueOf
(
XMJSONPath
.
readPath
(
dataApi
.
getApi_response
(),
"$.result.underlinePrice"
)),
29.90
);
...
...
src/main/java/com/xiaomai/cases/polar/training/TestSearchTrainingAccountRecordsList.java
View file @
a07aa094
...
...
@@ -46,7 +46,7 @@ public class TestSearchTrainingAccountRecordsList extends SelectTargetTrainingCa
memberId
=
tools
.
create
(
"自动化报名训练营的潜在学员"
,
phone
).
getString
(
"result"
);
}
//给会员报名
trainingTools
.
doSignCampOrder
(
memberId
,
this
.
price
,
this
.
campId
);
trainingTools
.
doSignCampOrder
(
memberId
,
this
.
price
,
this
.
campId
,
""
);
orderId
=
XMJSONPath
.
readPath
(
dataApi
.
getApi_response
(),
"$.result"
);
}
...
...
src/main/java/com/xiaomai/cases/polar/training/TestSignWaitingCampOrder.java
View file @
a07aa094
...
...
@@ -85,7 +85,7 @@ public class TestSignWaitingCampOrder extends SelectTargetTrainingCampAndGetInfo
Thread
.
sleep
(
3000
);
//再次报名该训练营活动-报名成功
trainingTools
.
doSignCampOrder
(
memberId
,
this
.
price
,
this
.
campId
);
trainingTools
.
doSignCampOrder
(
memberId
,
this
.
price
,
this
.
campId
,
""
);
String
orderId1
=
XMJSONPath
.
readPath
(
dataApi
.
getApi_response
(),
"$.result"
);
//报名成功后根据会员手机号,在报名会员列表搜索报名数据
...
...
@@ -98,7 +98,7 @@ public class TestSignWaitingCampOrder extends SelectTargetTrainingCampAndGetInfo
//订单作废后,学员还能继续报名check
Thread
.
sleep
(
3000
);
trainingTools
.
doSignCampOrder
(
memberId
,
this
.
price
,
this
.
campId
);
trainingTools
.
doSignCampOrder
(
memberId
,
this
.
price
,
this
.
campId
,
""
);
String
orderId2
=
XMJSONPath
.
readPath
(
dataApi
.
getApi_response
(),
"$.result"
);
//继续作废订单,然后删除训练营活动
...
...
src/main/java/com/xiaomai/cases/polar/training/TrainingTools.java
View file @
a07aa094
...
...
@@ -131,6 +131,45 @@ public class TrainingTools extends XMBaseTest {
}
/**
* 引用时可以继承 BaseCreateTrainingData 这个类,然后直接传值就可以
* 价格0元,一键创建已发布且报名中的训练营活动
*@param applyStartTime 报名开始时间,要早于第二天的0点,最好是晚于当前时间半个小时
* @param courseId 需要传入课程ID
* @param trainerList 需要传入教练
* @return 活动ID
*/
public
String
oneKeyCreateTraining
(
String
courseId
,
List
<
String
>
trainerList
,
String
applyStartTime
)
{
setUP
(
"API_createThenPublishTraining"
);
String
courseName
=
"训练营课程-感统课"
;
String
trainingTitle
=
"三期36天训练营感统课"
+
RandomStringUtil
.
randomString
(
5
);
JSONObject
body
=
new
JSONObject
();
body
.
put
(
"operatorId"
,
dataApi
.
getLoginInfo
().
getAdminId
());
body
.
put
(
"studioId"
,
dataApi
.
getLoginInfo
().
getStudioId
());
// 场馆
body
.
put
(
"brandId"
,
dataApi
.
getLoginInfo
().
getBrandId
());
body
.
put
(
"applyEndTime"
,
applyEndTime1
);
//报名结束时间
body
.
put
(
"applyStartTime"
,
applyStartTime
);
//报名开始时间
body
.
put
(
"courseId"
,
courseId
);
//关联课程ID
body
.
put
(
"creatorId"
,
dataApi
.
getLoginInfo
().
getAdminId
());
// 创建人即操作者
body
.
put
(
"openEndDate"
,
openEndDate0
);
//开营结束时间
body
.
put
(
"openStartDate"
,
openStartDate0
);
//开营开始时间
body
.
put
(
"price"
,
0
);
//售卖价格
body
.
put
(
"surfaceUrl"
,
"https://xiaomai-res.oss-cn-hangzhou.aliyuncs.com/xmfit/course_cover/training_camp_0.png"
);
// 默认活动封面图
body
.
put
(
"title"
,
trainingTitle
);
body
.
put
(
"totalClassHour"
,
2
);
// 总课次数
body
.
put
(
"traineeLowerLimit"
,
1
);
// 开营人数
body
.
put
(
"traineeUpperLimit"
,
99
);
// 人数上限
body
.
put
(
"trainerList"
,
trainerList
);
// 上课教练
body
.
put
(
"xcxSaleStatus"
,
"YES"
);
//开启小程序售卖
body
.
put
(
"underlinePrice"
,
19.9
);
//划线价
//图文介绍不设置,所以回归时check下 图文介绍
dataApi
.
doRequest
(
RequestType
.
JSON
,
dataparams
,
body
.
toString
(),
dataheadrs
).
assetsSuccess
(
true
);
return
XMJSONPath
.
readPath
(
dataApi
.
getApi_response
(),
"$.result"
);
}
/**
* 提供训练营活动名称,课程ID和教练ID 快速创建未发布的活动
*
* @param title 训练营活动名称,可以传空,有默认值
...
...
@@ -300,13 +339,17 @@ public class TrainingTools extends XMBaseTest {
* @param memberId 会员ID
* @param receivableAmount 支付金额
* @param campId 训练营活动ID
* @param userCouponId 已发放给学员的优惠券记录ID
*/
public
void
doSignCampOrder
(
String
memberId
,
Double
receivableAmount
,
String
campId
){
public
void
doSignCampOrder
(
String
memberId
,
Double
receivableAmount
,
String
campId
,
String
userCouponId
){
setUP
(
"API_signOrderCamp"
);
JSONObject
body
=
new
JSONObject
();
body
.
put
(
"operatorId"
,
dataApi
.
getLoginInfo
().
getAdminId
());
body
.
put
(
"studioId"
,
dataApi
.
getLoginInfo
().
getStudioId
());
body
.
put
(
"brandId"
,
dataApi
.
getLoginInfo
().
getBrandId
());
if
(
userCouponId
!=
null
||!
userCouponId
.
isEmpty
()){
body
.
put
(
"userCouponId"
,
userCouponId
);
}
body
.
put
(
"salesmanId"
,
dataApi
.
getLoginInfo
().
getAdminId
());
body
.
put
(
"operationTime"
,
TimeUtils
.
getCurrentTime
());
...
...
src/main/java/com/xiaomai/utils/CommUtil.java
View file @
a07aa094
...
...
@@ -279,7 +279,7 @@ public class CommUtil {
}
/**
*
*
获取指定时间的整点
* @param n 整数
* @param time 整点时间 比如13:00
* @return
...
...
@@ -346,9 +346,20 @@ public class CommUtil {
return
getStringTimestamp
(
getNextXWeekEndXDayDataS
,
"yyyy-MM-dd HH:mm:ss"
);
}
/**
* 晚于当前时间 多少分钟
* @param minutes 分钟
* @return
*/
public
static
String
getTodayGoalTime
(
int
minutes
){
Date
getNextXWeekStartDayData
=
new
DateTime
(
now
).
plusMinutes
(
minutes
).
toDate
();
String
getNextXWeekStartXDayDataS
=
getFormatTimeStr
(
getNextXWeekStartDayData
,
"yyyy-MM-dd HH:mm:ss"
);
//时间格式转化为string
return
getStringTimestamp
(
getNextXWeekStartXDayDataS
,
"yyyy-MM-dd HH:mm:ss"
);
}
public
static
void
main
(
String
[]
args
)
{
getWholeHourTimestamp
();
/*
getWholeHourTimestamp();
Date getWeekStartDayData = getStartOfDateWeek(now);//获取本周的第一天
Date getNextWeekXDayData=addNDays(getWeekStartDayData,9);
String getNextWeekXDayDataS = new SimpleDateFormat("yyyy-MM-dd").format(getNextWeekXDayData.getTime());
...
...
@@ -372,7 +383,11 @@ public class CommUtil {
LocalDateTime future = now.plusSeconds(2);
System.out.println("未来2秒时间: " + future);
System
.
out
.
println
(
"%%%%%"
+
getXEndOfDateNextXWeek
(-
1
,
2
));
System.out.println("%%%%%"+getXEndOfDateNextXWeek(-1,2));*/
Date
getNextXWeekStartDayData
=
new
DateTime
(
now
).
plusMinutes
(
30
).
toDate
();
String
getNextXWeekStartXDayDataS
=
getFormatTimeStr
(
getNextXWeekStartDayData
,
"yyyy-MM-dd HH:mm:ss"
);
//时间格式转化为string
System
.
out
.
println
(
"((((((("
+
getStringTimestamp
(
getNextXWeekStartXDayDataS
,
"yyyy-MM-dd HH:mm:ss"
));
...
...
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