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
9af8e2e4
Commit
9af8e2e4
authored
Jul 01, 2024
by
zhangyuxiao
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
crm
parent
f5add734
Show whitespace changes
Inline
Side-by-side
Showing
25 changed files
with
1901 additions
and
32 deletions
+1901
-32
src/main/java/com/xiaomai/cases/polar/clue/MemberTools.java
+377
-16
src/main/java/com/xiaomai/cases/polar/clue/TestBatchUpdateSaleRule.java
+66
-0
src/main/java/com/xiaomai/cases/polar/clue/TestCancelFeedback.java
+87
-0
src/main/java/com/xiaomai/cases/polar/clue/TestClaim.java
+92
-0
src/main/java/com/xiaomai/cases/polar/clue/TestCommonSearch.java
+14
-1
src/main/java/com/xiaomai/cases/polar/clue/TestContinueFeedback.java
+107
-0
src/main/java/com/xiaomai/cases/polar/clue/TestCountWechatSubscriber.java
+38
-0
src/main/java/com/xiaomai/cases/polar/clue/TestCreate.java
+68
-5
src/main/java/com/xiaomai/cases/polar/clue/TestCreateFeedback.java
+117
-0
src/main/java/com/xiaomai/cases/polar/clue/TestDisable.java
+72
-0
src/main/java/com/xiaomai/cases/polar/clue/TestDistributeToPrivate.java
+72
-0
src/main/java/com/xiaomai/cases/polar/clue/TestDistributeToPublic.java
+73
-0
src/main/java/com/xiaomai/cases/polar/clue/TestFetchMyQuickSearch.java
+41
-0
src/main/java/com/xiaomai/cases/polar/clue/TestFetchQuickSearch.java
+42
-0
src/main/java/com/xiaomai/cases/polar/clue/TestFindByObjectId.java
+48
-0
src/main/java/com/xiaomai/cases/polar/clue/TestGetDetailById.java
+15
-4
src/main/java/com/xiaomai/cases/polar/clue/TestModifyFeedback.java
+91
-0
src/main/java/com/xiaomai/cases/polar/clue/TestRecycle.java
+89
-0
src/main/java/com/xiaomai/cases/polar/clue/TestRelease.java
+94
-0
src/main/java/com/xiaomai/cases/polar/clue/TestRestore.java
+89
-0
src/main/java/com/xiaomai/cases/polar/clue/TestSearchMember.java
+8
-2
src/main/java/com/xiaomai/cases/polar/clue/TestSummaryFeedback.java
+43
-0
src/main/java/com/xiaomai/cases/polar/clue/TestUpdate.java
+13
-4
src/main/java/com/xiaomai/cases/polar/member/TestAppointCoach.java
+144
-0
src/main/java/com/xiaomai/enums/LoginAccount.java
+1
-0
No files found.
src/main/java/com/xiaomai/cases/polar/clue/MemberTools.java
View file @
9af8e2e4
package
com
.
xiaomai
.
cases
.
polar
.
clue
;
import
com.alibaba.fastjson.JSONArray
;
import
com.alibaba.fastjson.JSONObject
;
import
com.xiaomai.basetest.BaseTestImpl
;
import
com.xiaomai.client.DataUserInfo
;
import
com.xiaomai.enums.ApiModule
;
import
com.xiaomai.enums.RequestType
;
import
com.xiaomai.enums.Terminal
;
import
com.xiaomai.utils.RandomStringUtil
;
import
com.xiaomai.utils.TimeUtils
;
import
java.util.ArrayList
;
import
java.util.List
;
import
java.util.Random
;
/**
* @Author zxy
...
...
@@ -25,15 +29,35 @@ public class MemberTools extends BaseTestImpl {
super
.
beforeDataRequest
(
userInfos
);
Random
random
=
new
Random
();
String
[]
idCardType
=
{
"IDENTITY"
,
"SAR_PERMIT"
,
"idCardType"
};
//身份证、港澳通行证、护照
String
[]
intention
=
{
"HIGH"
,
"MIDDLE"
,
"LOW"
};
//意向度:高、中、低
JSONObject
object
=
new
JSONObject
();
object
.
put
(
"brandId"
,
xmApp
Api
.
getLoginInfo
().
getBrandId
());
object
.
put
(
"studioId"
,
xmApp
Api
.
getLoginInfo
().
getStudioId
());
object
.
put
(
"operatorId"
,
xmApp
Api
.
getLoginInfo
().
getAdminId
());
object
.
put
(
"creatorId"
,
xmApp
Api
.
getLoginInfo
().
getAdminId
());
object
.
put
(
"brandId"
,
data
Api
.
getLoginInfo
().
getBrandId
());
object
.
put
(
"studioId"
,
data
Api
.
getLoginInfo
().
getStudioId
());
object
.
put
(
"operatorId"
,
data
Api
.
getLoginInfo
().
getAdminId
());
object
.
put
(
"creatorId"
,
data
Api
.
getLoginInfo
().
getAdminId
());
object
.
put
(
"status"
,
"POTENTIAL"
);
object
.
put
(
"name"
,
name
);
object
.
put
(
"phone"
,
phone
);
object
.
put
(
"gender"
,
"UNKNOWN"
);
object
.
put
(
"wechat"
,
"12345678"
);
object
.
put
(
"birthday"
,
"1277654400000"
);
object
.
put
(
"idCardType"
,
idCardType
[
random
.
nextInt
(
3
)]);
object
.
put
(
"idCardCode"
,
RandomStringUtil
.
randomNumber
(
18
,
"410526"
));
object
.
put
(
"height"
,
"180"
);
object
.
put
(
"weight"
,
"66"
);
object
.
put
(
"trainTarget"
,
"减脂"
);
object
.
put
(
"profession"
,
"无"
);
object
.
put
(
"incomeLevel"
,
"66666/月"
);
object
.
put
(
"address"
,
"同人广场a座小麦助教"
);
object
.
put
(
"emergencyContactPerson"
,
"紧急联系人名字"
);
object
.
put
(
"emergencyContactPhone"
,
"15896688889"
);
object
.
put
(
"intention"
,
intention
[
random
.
nextInt
(
3
)]);
object
.
put
(
"position"
,
"INITIAL"
);
object
.
put
(
"remark"
,
"这是备注"
);
object
.
put
(
"saleId"
,
"-1"
);
dataApi
.
doRequest
(
RequestType
.
JSON
,
dataparams
,
object
.
toString
(),
dataheadrs
).
assetsSuccess
(
true
);
return
dataApi
.
getBodyInJSON
();
...
...
@@ -48,8 +72,8 @@ public class MemberTools extends BaseTestImpl {
super
.
beforeDataRequest
(
userInfos
);
JSONObject
object
=
new
JSONObject
();
object
.
put
(
"brandId"
,
xmApp
Api
.
getLoginInfo
().
getBrandId
());
object
.
put
(
"studioId"
,
xmApp
Api
.
getLoginInfo
().
getStudioId
());
object
.
put
(
"brandId"
,
data
Api
.
getLoginInfo
().
getBrandId
());
object
.
put
(
"studioId"
,
data
Api
.
getLoginInfo
().
getStudioId
());
object
.
put
(
"phone"
,
phone
);
object
.
put
(
"memberId"
,
memberId
);
...
...
@@ -58,6 +82,24 @@ public class MemberTools extends BaseTestImpl {
}
//会员详情
public
JSONObject
findStudioMemberDetail
(
String
memberId
,
DataUserInfo
...
userInfos
){
dataApi
.
setApiModule
(
ApiModule
.
Polar_Clue
)
.
setApiName
(
"API_findStudioMemberDetail"
)
.
setTerminal
(
Terminal
.
B
);
super
.
beforeDataRequest
(
userInfos
);
JSONObject
object
=
new
JSONObject
();
object
.
put
(
"memberId"
,
memberId
);
object
.
put
(
"brandId"
,
dataApi
.
getLoginInfo
().
getBrandId
());
object
.
put
(
"studioId"
,
dataApi
.
getLoginInfo
().
getStudioId
());
object
.
put
(
"operatorId"
,
dataApi
.
getLoginInfo
().
getAdminId
());
dataApi
.
doRequest
(
RequestType
.
JSON
,
dataparams
,
object
.
toString
(),
dataheadrs
).
assetsSuccess
(
true
);
return
dataApi
.
getBodyInJSON
();
}
//会员详情
public
JSONObject
getDetailById
(
String
memberId
,
DataUserInfo
...
userInfos
){
dataApi
.
setApiModule
(
ApiModule
.
Polar_Clue
)
.
setApiName
(
"API_findDetailById"
)
...
...
@@ -73,30 +115,47 @@ public class MemberTools extends BaseTestImpl {
}
//搜索潜在会员
public
JSONObject
searchMember
(
DataUserInfo
...
userInfos
){
public
JSONObject
searchMember
(
int
i
,
String
status
,
DataUserInfo
...
userInfos
){
dataApi
.
setApiModule
(
ApiModule
.
Polar_Clue
)
.
setApiName
(
"API_searchMember"
)
.
setTerminal
(
Terminal
.
B
);
super
.
beforeDataRequest
(
userInfos
);
JSONObject
studioFilter
=
new
JSONObject
();
studioFilter
.
put
(
"studioId"
,
xmAppApi
.
getLoginInfo
().
getStudioId
());
JSONObject
object
=
new
JSONObject
();
List
statusList
=
new
ArrayList
();
statusList
.
add
(
"POTENTIAL"
);
statusList
.
add
(
status
);
JSONObject
object
=
new
JSONObject
();
switch
(
i
){
case
0
:
object
.
put
(
"searchType"
,
"CLUE_ALL"
);
//全部线索
break
;
case
1
:
object
.
put
(
"searchType"
,
"CLUE_PRIVATE"
);
//我的线索
object
.
put
(
"position"
,
"PRIVATE_RESOURCE"
);
object
.
put
(
"saleId"
,
dataApi
.
getLoginInfo
().
getAdminId
());
break
;
case
2
:
object
.
put
(
"searchType"
,
"CLUE_PUBLIC"
);
//公有池
object
.
put
(
"position"
,
"PUBLIC_RESOURCE"
);
break
;
case
3
:
object
.
put
(
"searchType"
,
"CLUE_RECYCLE"
);
//回收站
object
.
put
(
"position"
,
"RECYCLE"
);
break
;
}
object
.
put
(
"current"
,
0
);
object
.
put
(
"size"
,
20
);
object
.
put
(
"brandId"
,
xmAppApi
.
getLoginInfo
().
getBrandId
());
object
.
put
(
"studioFilter"
,
studioFilter
);
object
.
put
(
"brandId"
,
dataApi
.
getLoginInfo
().
getBrandId
());
object
.
put
(
"studioId"
,
dataApi
.
getLoginInfo
().
getStudioId
());
object
.
put
(
"operatorId"
,
dataApi
.
getLoginInfo
().
getAdminId
());
object
.
put
(
"statusList"
,
statusList
);
dataApi
.
doRequest
(
RequestType
.
JSON
,
dataparams
,
object
.
toString
(),
dataheadrs
).
assetsSuccess
(
true
);
return
dataApi
.
getBodyInJSON
();
}
//搜索全部会员
public
JSONObject
commonSearch
(
String
content
,
DataUserInfo
...
userInfos
){
dataApi
.
setApiModule
(
ApiModule
.
Polar_Clue
)
...
...
@@ -105,11 +164,313 @@ public class MemberTools extends BaseTestImpl {
super
.
beforeDataRequest
(
userInfos
);
List
statusList
=
new
ArrayList
();
statusList
.
add
(
"NORMAL"
);
statusList
.
add
(
"HISTORY"
);
statusList
.
add
(
"POTENTIAL"
);
JSONObject
object
=
new
JSONObject
();
object
.
put
(
"brandId"
,
xmAppApi
.
getLoginInfo
().
getBrandId
());
object
.
put
(
"studioId"
,
xmAppApi
.
getLoginInfo
().
getStudioId
());
object
.
put
(
"brandId"
,
dataApi
.
getLoginInfo
().
getBrandId
());
object
.
put
(
"studioId"
,
dataApi
.
getLoginInfo
().
getStudioId
());
object
.
put
(
"operatorId"
,
dataApi
.
getLoginInfo
().
getAdminId
());
object
.
put
(
"dataPermissionFilter"
,
false
);
object
.
put
(
"content"
,
content
);
object
.
put
(
"statusList"
,
statusList
);
dataApi
.
doRequest
(
RequestType
.
JSON
,
dataparams
,
object
.
toString
(),
dataheadrs
).
assetsSuccess
(
true
);
return
dataApi
.
getBodyInJSON
();
}
//线索来源
public
JSONArray
findByObjectId
(
DataUserInfo
...
userInfos
){
dataApi
.
setApiModule
(
ApiModule
.
Polar_Clue
)
.
setApiName
(
"API_findByObjectId"
)
.
setTerminal
(
Terminal
.
B
);
super
.
beforeDataRequest
(
userInfos
);
List
categories
=
new
ArrayList
();
categories
.
add
(
"RESOURCE"
);
JSONObject
object
=
new
JSONObject
();
object
.
put
(
"brandId"
,
dataApi
.
getLoginInfo
().
getBrandId
());
object
.
put
(
"studioId"
,
dataApi
.
getLoginInfo
().
getStudioId
());
object
.
put
(
"operatorId"
,
dataApi
.
getLoginInfo
().
getAdminId
());
object
.
put
(
"categories"
,
categories
);
object
.
put
(
"objectId"
,
"1760544120783314946"
);
dataApi
.
doRequest
(
RequestType
.
JSON
,
dataparams
,
object
.
toString
(),
dataheadrs
).
assetsSuccess
(
true
);
return
dataApi
.
getBodyInJSON
().
getJSONArray
(
"result"
);
}
//全部线索快捷筛选
public
JSONObject
fetchQuickSearch
(
DataUserInfo
...
userInfos
){
dataApi
.
setApiModule
(
ApiModule
.
Polar_Clue
)
.
setApiName
(
"API_fetchQuickSearch"
)
.
setTerminal
(
Terminal
.
B
);
super
.
beforeDataRequest
(
userInfos
);
JSONObject
object
=
new
JSONObject
();
object
.
put
(
"brandId"
,
dataApi
.
getLoginInfo
().
getBrandId
());
object
.
put
(
"studioId"
,
dataApi
.
getLoginInfo
().
getStudioId
());
object
.
put
(
"operatorId"
,
dataApi
.
getLoginInfo
().
getAdminId
());
dataApi
.
doRequest
(
RequestType
.
JSON
,
dataparams
,
object
.
toString
(),
dataheadrs
).
assetsSuccess
(
true
);
return
dataApi
.
getBodyInJSON
();
}
//我的线索快捷筛选
public
JSONObject
fetchMyQuickSearch
(
DataUserInfo
...
userInfos
){
dataApi
.
setApiModule
(
ApiModule
.
Polar_Clue
)
.
setApiName
(
"API_fetchMyQuickSearch"
)
.
setTerminal
(
Terminal
.
B
);
super
.
beforeDataRequest
(
userInfos
);
JSONObject
object
=
new
JSONObject
();
object
.
put
(
"brandId"
,
dataApi
.
getLoginInfo
().
getBrandId
());
object
.
put
(
"studioId"
,
dataApi
.
getLoginInfo
().
getStudioId
());
object
.
put
(
"operatorId"
,
dataApi
.
getLoginInfo
().
getAdminId
());
dataApi
.
doRequest
(
RequestType
.
JSON
,
dataparams
,
object
.
toString
(),
dataheadrs
).
assetsSuccess
(
true
);
return
dataApi
.
getBodyInJSON
();
}
//在另一个场馆中添加同品牌下已存在的会员
public
JSONObject
join
(
String
memberId
,
DataUserInfo
...
userInfos
){
dataApi
.
setApiModule
(
ApiModule
.
Polar_Clue
)
.
setApiName
(
"API_join"
)
.
setTerminal
(
Terminal
.
B
);
super
.
beforeDataRequest
(
userInfos
);
JSONObject
object
=
new
JSONObject
();
object
.
put
(
"brandId"
,
dataApi
.
getLoginInfo
().
getBrandId
());
object
.
put
(
"studioId"
,
dataApi
.
getLoginInfo
().
getStudioId
());
object
.
put
(
"operatorId"
,
dataApi
.
getLoginInfo
().
getAdminId
());
object
.
put
(
"memberId"
,
memberId
);
dataApi
.
doRequest
(
RequestType
.
JSON
,
dataparams
,
object
.
toString
(),
dataheadrs
).
assetsSuccess
(
true
);
return
dataApi
.
getBodyInJSON
();
}
//查询销售&教练列表
public
JSONObject
fetchStaff
(
String
role
,
List
memberStatusList
,
String
searchContext
,
DataUserInfo
...
userInfos
){
dataApi
.
setApiModule
(
ApiModule
.
Polar_Clue
)
.
setApiName
(
"API_fetchStaff"
)
.
setTerminal
(
Terminal
.
B
);
super
.
beforeDataRequest
(
userInfos
);
JSONObject
object
=
new
JSONObject
();
object
.
put
(
"brandId"
,
dataApi
.
getLoginInfo
().
getBrandId
());
object
.
put
(
"studioId"
,
dataApi
.
getLoginInfo
().
getStudioId
());
object
.
put
(
"operatorId"
,
dataApi
.
getLoginInfo
().
getAdminId
());
object
.
put
(
"memberStatusList"
,
memberStatusList
);
object
.
put
(
"searchContext"
,
searchContext
);
object
.
put
(
"current"
,
0
);
object
.
put
(
"size"
,
20
);
object
.
put
(
"role"
,
role
);
dataApi
.
doRequest
(
RequestType
.
JSON
,
dataparams
,
object
.
toString
(),
dataheadrs
).
assetsSuccess
(
true
);
return
dataApi
.
getBodyInJSON
();
}
//分配线索至公有池
public
JSONObject
distributeToPublic
(
String
memberId
,
DataUserInfo
...
userInfos
){
dataApi
.
setApiModule
(
ApiModule
.
Polar_Clue
)
.
setApiName
(
"API_distributeToPublic"
)
.
setTerminal
(
Terminal
.
B
);
super
.
beforeDataRequest
(
userInfos
);
List
memberIds
=
new
ArrayList
();
memberIds
.
add
(
memberId
);
JSONObject
object
=
new
JSONObject
();
object
.
put
(
"brandId"
,
dataApi
.
getLoginInfo
().
getBrandId
());
object
.
put
(
"studioId"
,
dataApi
.
getLoginInfo
().
getStudioId
());
object
.
put
(
"operatorId"
,
dataApi
.
getLoginInfo
().
getAdminId
());
object
.
put
(
"memberIds"
,
memberIds
);
dataApi
.
doRequest
(
RequestType
.
JSON
,
dataparams
,
object
.
toString
(),
dataheadrs
).
assetsSuccess
(
true
);
return
dataApi
.
getBodyInJSON
();
}
//分配线索至私有池
public
JSONObject
distributeToPrivate
(
String
memberId
,
DataUserInfo
...
userInfos
){
dataApi
.
setApiModule
(
ApiModule
.
Polar_Clue
)
.
setApiName
(
"API_distributeToPrivate"
)
.
setTerminal
(
Terminal
.
B
);
super
.
beforeDataRequest
(
userInfos
);
List
memberIds
=
new
ArrayList
();
memberIds
.
add
(
memberId
);
JSONObject
object
=
new
JSONObject
();
object
.
put
(
"brandId"
,
dataApi
.
getLoginInfo
().
getBrandId
());
object
.
put
(
"studioId"
,
dataApi
.
getLoginInfo
().
getStudioId
());
object
.
put
(
"operatorId"
,
dataApi
.
getLoginInfo
().
getAdminId
());
object
.
put
(
"saleId"
,
dataApi
.
getLoginInfo
().
getAdminId
());
object
.
put
(
"memberIds"
,
memberIds
);
dataApi
.
doRequest
(
RequestType
.
JSON
,
dataparams
,
object
.
toString
(),
dataheadrs
).
assetsSuccess
(
true
);
return
dataApi
.
getBodyInJSON
();
}
//将线索移至回收站
public
JSONObject
disable
(
String
memberId
,
DataUserInfo
...
userInfos
){
dataApi
.
setApiModule
(
ApiModule
.
Polar_Clue
)
.
setApiName
(
"API_disable"
)
.
setTerminal
(
Terminal
.
B
);
super
.
beforeDataRequest
(
userInfos
);
List
memberIds
=
new
ArrayList
();
memberIds
.
add
(
memberId
);
JSONObject
object
=
new
JSONObject
();
object
.
put
(
"brandId"
,
dataApi
.
getLoginInfo
().
getBrandId
());
object
.
put
(
"studioId"
,
dataApi
.
getLoginInfo
().
getStudioId
());
object
.
put
(
"operatorId"
,
dataApi
.
getLoginInfo
().
getAdminId
());
object
.
put
(
"reason"
,
"自动化脚本移至回收站"
);
object
.
put
(
"memberIds"
,
memberIds
);
dataApi
.
doRequest
(
RequestType
.
JSON
,
dataparams
,
object
.
toString
(),
dataheadrs
).
assetsSuccess
(
true
);
return
dataApi
.
getBodyInJSON
();
}
//查询场馆销售规则
public
JSONObject
fetchCrmContext
(
DataUserInfo
...
userInfos
){
dataApi
.
setApiModule
(
ApiModule
.
Polar_Clue
)
.
setApiName
(
"API_fetchCrmContext"
)
.
setTerminal
(
Terminal
.
B
);
super
.
beforeDataRequest
(
userInfos
);
JSONObject
object
=
new
JSONObject
();
object
.
put
(
"brandId"
,
dataApi
.
getLoginInfo
().
getBrandId
());
object
.
put
(
"studioId"
,
dataApi
.
getLoginInfo
().
getStudioId
());
object
.
put
(
"operatorId"
,
dataApi
.
getLoginInfo
().
getAdminId
());
dataApi
.
doRequest
(
RequestType
.
JSON
,
dataparams
,
object
.
toString
(),
dataheadrs
).
assetsSuccess
(
true
);
return
dataApi
.
getBodyInJSON
();
}
//查询跟进
public
JSONObject
searchFeedback
(
String
memberId
,
DataUserInfo
...
userInfos
){
dataApi
.
setApiModule
(
ApiModule
.
Polar_Clue
)
.
setApiName
(
"API_searchFeedback"
)
.
setTerminal
(
Terminal
.
B
);
super
.
beforeDataRequest
(
userInfos
);
JSONObject
object
=
new
JSONObject
();
object
.
put
(
"brandId"
,
dataApi
.
getLoginInfo
().
getBrandId
());
object
.
put
(
"studioId"
,
dataApi
.
getLoginInfo
().
getStudioId
());
object
.
put
(
"operatorId"
,
dataApi
.
getLoginInfo
().
getAdminId
());
object
.
put
(
"memberId"
,
memberId
);
object
.
put
(
"current"
,
0
);
object
.
put
(
"size"
,
10
);
object
.
put
(
"state"
,
"DONE"
);
dataApi
.
doRequest
(
RequestType
.
JSON
,
dataparams
,
object
.
toString
(),
dataheadrs
).
assetsSuccess
(
true
);
return
dataApi
.
getBodyInJSON
();
}
//查询会员跟进任务(未开始或已逾期的;不分页,只支持单会员查询)
public
JSONObject
listTodoTask
(
String
memberId
,
DataUserInfo
...
userInfos
){
dataApi
.
setApiModule
(
ApiModule
.
Polar_Clue
)
.
setApiName
(
"API_listTodoTask"
)
.
setTerminal
(
Terminal
.
B
);
super
.
beforeDataRequest
(
userInfos
);
JSONObject
object
=
new
JSONObject
();
object
.
put
(
"brandId"
,
dataApi
.
getLoginInfo
().
getBrandId
());
object
.
put
(
"studioId"
,
dataApi
.
getLoginInfo
().
getStudioId
());
object
.
put
(
"operatorId"
,
dataApi
.
getLoginInfo
().
getAdminId
());
object
.
put
(
"memberId"
,
memberId
);
dataApi
.
doRequest
(
RequestType
.
JSON
,
dataparams
,
object
.
toString
(),
dataheadrs
).
assetsSuccess
(
true
);
return
dataApi
.
getBodyInJSON
();
}
//删除跟进
public
JSONObject
deleteFeedback
(
String
feedbackId
,
DataUserInfo
...
userInfos
){
dataApi
.
setApiModule
(
ApiModule
.
Polar_Clue
)
.
setApiName
(
"API_deleteFeedback"
)
.
setTerminal
(
Terminal
.
B
);
super
.
beforeDataRequest
(
userInfos
);
JSONObject
object
=
new
JSONObject
();
object
.
put
(
"brandId"
,
dataApi
.
getLoginInfo
().
getBrandId
());
object
.
put
(
"studioId"
,
dataApi
.
getLoginInfo
().
getStudioId
());
object
.
put
(
"operatorId"
,
dataApi
.
getLoginInfo
().
getAdminId
());
object
.
put
(
"feedbackId"
,
feedbackId
);
dataApi
.
doRequest
(
RequestType
.
JSON
,
dataparams
,
object
.
toString
(),
dataheadrs
).
assetsSuccess
(
true
);
return
dataApi
.
getBodyInJSON
();
}
//添加跟进记录
public
JSONObject
createFeedback
(
String
memberId
,
DataUserInfo
...
userInfos
){
dataApi
.
setApiModule
(
ApiModule
.
Polar_Clue
)
.
setApiName
(
"API_createFeedback"
)
.
setTerminal
(
Terminal
.
B
);
super
.
beforeDataRequest
(
userInfos
);
Random
random
=
new
Random
();
String
[]
feedbackMethod
=
{
"PHONE"
,
"WECHAT"
,
"SMS"
,
"VISIT"
,
"OTHERS"
};
String
[]
feedbackResult
=
{
"CONTACTED"
,
"INTENTION_CONFIRMED"
,
"APPOINTED"
,
"EXPERIENCED"
,
"REGISTERED"
,
"REGISTERED"
,
"RENEW_FOLLOW"
};
JSONObject
object
=
new
JSONObject
();
object
.
put
(
"brandId"
,
dataApi
.
getLoginInfo
().
getBrandId
());
object
.
put
(
"studioId"
,
dataApi
.
getLoginInfo
().
getStudioId
());
object
.
put
(
"operatorId"
,
dataApi
.
getLoginInfo
().
getAdminId
());
object
.
put
(
"feedbackContent"
,
"自动化测试添加跟进记录"
);
object
.
put
(
"feedbackMethod"
,
feedbackMethod
[
random
.
nextInt
(
5
)]);
object
.
put
(
"feedbackResult"
,
feedbackResult
[
random
.
nextInt
(
7
)]);
object
.
put
(
"memberId"
,
memberId
);
object
.
put
(
"nextFeedbackRemark"
,
"自动化测试下次跟进内容"
);
object
.
put
(
"nextFeedbackTime"
,
TimeUtils
.
getTodayEndTime
(
1
));
dataApi
.
doRequest
(
RequestType
.
JSON
,
dataparams
,
object
.
toString
(),
dataheadrs
).
assetsSuccess
(
true
);
return
dataApi
.
getBodyInJSON
();
}
//查看跟进详情
public
JSONObject
findDetailById
(
String
id
,
DataUserInfo
...
userInfos
){
dataApi
.
setApiModule
(
ApiModule
.
Polar_Clue
)
.
setApiName
(
"API_findDetailByIdFeedback"
)
.
setTerminal
(
Terminal
.
B
);
super
.
beforeDataRequest
(
userInfos
);
JSONObject
object
=
new
JSONObject
();
object
.
put
(
"brandId"
,
dataApi
.
getLoginInfo
().
getBrandId
());
object
.
put
(
"studioId"
,
dataApi
.
getLoginInfo
().
getStudioId
());
object
.
put
(
"operatorId"
,
dataApi
.
getLoginInfo
().
getAdminId
());
object
.
put
(
"id"
,
id
);
dataApi
.
doRequest
(
RequestType
.
JSON
,
dataparams
,
object
.
toString
(),
dataheadrs
).
assetsSuccess
(
true
);
return
dataApi
.
getBodyInJSON
();
}
//统计今日待跟进&已逾期的任务数
public
JSONObject
summaryFeedback
(
DataUserInfo
...
userInfos
){
dataApi
.
setApiModule
(
ApiModule
.
Polar_Clue
)
.
setApiName
(
"API_summaryFeedback"
)
.
setTerminal
(
Terminal
.
B
);
super
.
beforeDataRequest
(
userInfos
);
JSONObject
object
=
new
JSONObject
();
object
.
put
(
"brandId"
,
dataApi
.
getLoginInfo
().
getBrandId
());
object
.
put
(
"studioId"
,
dataApi
.
getLoginInfo
().
getStudioId
());
object
.
put
(
"operatorId"
,
dataApi
.
getLoginInfo
().
getAdminId
());
dataApi
.
doRequest
(
RequestType
.
JSON
,
dataparams
,
object
.
toString
(),
dataheadrs
).
assetsSuccess
(
true
);
return
dataApi
.
getBodyInJSON
();
...
...
src/main/java/com/xiaomai/cases/polar/clue/TestBatchUpdateSaleRule.java
0 → 100644
View file @
9af8e2e4
package
com
.
xiaomai
.
cases
.
polar
.
clue
;
import
com.alibaba.fastjson.JSONObject
;
import
com.xiaomai.enums.ApiModule
;
import
com.xiaomai.enums.LoginAccount
;
import
com.xiaomai.enums.RequestType
;
import
com.xiaomai.enums.Terminal
;
import
com.xiaomai.utils.XMBaseTest
;
import
org.testng.Assert
;
import
org.testng.annotations.BeforeMethod
;
import
org.testng.annotations.Test
;
/**
* @Author zxy
* @Description
* @Date 2024/6/30 16:31
*/
public
class
TestBatchUpdateSaleRule
extends
XMBaseTest
{
MemberTools
memberTools
=
new
MemberTools
();
@BeforeMethod
public
void
beforeTest
(){
xmAppApi
.
setApiModule
(
ApiModule
.
Polar_Clue
)
.
setApiName
(
"API_batchUpdateSaleRule"
)
.
setLoginUser
(
LoginAccount
.
GYM_PROD
)
.
setTerminal
(
Terminal
.
B
);
dal
.
setCase_owner
(
"zyx"
)
.
setCase_name
(
Thread
.
currentThread
().
getStackTrace
()[
1
].
getFileName
().
split
(
"\\."
)[
0
]);
super
.
beforeTest
();
}
@Test
(
description
=
"更新销售规则-关闭公有池开关"
)
public
void
testBatchUpdateSaleRule
(){
JSONObject
configs
=
new
JSONObject
();
configs
.
put
(
"CRM_OPEN_PUBLIC_RESOURCE_POOL"
,
false
);
configs
.
put
(
"CRM_SALE_RELEASE_CLUE_DESTINATION"
,
"ALL_CLUE"
);
configs
.
put
(
"CRM_SYS_RELEASE_CLUE_DESTINATION"
,
"ALL_CLUE"
);
JSONObject
object
=
new
JSONObject
();
object
.
put
(
"brandId"
,
xmAppApi
.
getLoginInfo
().
getBrandId
());
object
.
put
(
"studioId"
,
xmAppApi
.
getLoginInfo
().
getStudioId
());
object
.
put
(
"operatorId"
,
xmAppApi
.
getLoginInfo
().
getAdminId
());
object
.
put
(
"configs"
,
configs
);
xmAppApi
.
doRequest
(
RequestType
.
JSON
,
params
,
object
.
toString
(),
headers
).
assetsSuccess
(
true
);
Assert
.
assertEquals
(
memberTools
.
fetchCrmContext
().
getJSONObject
(
"result"
).
getString
(
"openPublicResource"
),
"false"
);
}
@Test
(
description
=
"更新销售规则-开启公有池开关"
)
public
void
testBatchUpdateSaleRule_1
(){
JSONObject
configs
=
new
JSONObject
();
configs
.
put
(
"CRM_OPEN_PUBLIC_RESOURCE_POOL"
,
true
);
configs
.
put
(
"CRM_SALE_RELEASE_CLUE_DESTINATION"
,
"ALL_CLUE"
);
configs
.
put
(
"CRM_SYS_RELEASE_CLUE_DESTINATION"
,
"PUBLIC_RESOURCE"
);
JSONObject
object
=
new
JSONObject
();
object
.
put
(
"brandId"
,
xmAppApi
.
getLoginInfo
().
getBrandId
());
object
.
put
(
"studioId"
,
xmAppApi
.
getLoginInfo
().
getStudioId
());
object
.
put
(
"operatorId"
,
xmAppApi
.
getLoginInfo
().
getAdminId
());
object
.
put
(
"configs"
,
configs
);
xmAppApi
.
doRequest
(
RequestType
.
JSON
,
params
,
object
.
toString
(),
headers
).
assetsSuccess
(
true
);
Assert
.
assertEquals
(
memberTools
.
fetchCrmContext
().
getJSONObject
(
"result"
).
getString
(
"openPublicResource"
),
"true"
);
}
}
src/main/java/com/xiaomai/cases/polar/clue/TestCancelFeedback.java
0 → 100644
View file @
9af8e2e4
package
com
.
xiaomai
.
cases
.
polar
.
clue
;
import
com.alibaba.fastjson.JSONArray
;
import
com.alibaba.fastjson.JSONObject
;
import
com.xiaomai.enums.ApiModule
;
import
com.xiaomai.enums.LoginAccount
;
import
com.xiaomai.enums.RequestType
;
import
com.xiaomai.enums.Terminal
;
import
com.xiaomai.utils.RandomStringUtil
;
import
com.xiaomai.utils.XMBaseTest
;
import
org.testng.Assert
;
import
org.testng.annotations.BeforeMethod
;
import
org.testng.annotations.Test
;
/**
* @Author zxy
* @Description
* @Date 2024/7/1 10:02
*/
public
class
TestCancelFeedback
extends
XMBaseTest
{
MemberTools
memberTools
=
new
MemberTools
();
String
memberId
;
String
feedbackId
;
String
feedbackId1
;
int
num
;
@BeforeMethod
public
void
beforeTest
(){
xmAppApi
.
setApiModule
(
ApiModule
.
Polar_Clue
)
.
setApiName
(
"API_cancelFeedback"
)
.
setLoginUser
(
LoginAccount
.
GYM_PROD
)
.
setTerminal
(
Terminal
.
B
);
dal
.
setCase_owner
(
"zyx"
)
.
setCase_name
(
Thread
.
currentThread
().
getStackTrace
()[
1
].
getFileName
().
split
(
"\\."
)[
0
]);
super
.
beforeTest
();
}
@Test
(
description
=
"取消跟进"
)
public
void
testModifyFeedback
(){
String
name
=
"自动化潜在会员"
+
RandomStringUtil
.
randomString
(
3
);
String
phone
=
RandomStringUtil
.
randomMobile
(
"666"
);
//若全部线索有数据,则取第一条数据;若无数据则新建一个线索
JSONArray
array
=
memberTools
.
searchMember
(
0
,
"POTENTIAL"
).
getJSONObject
(
"result"
).
getJSONArray
(
"records"
);
int
size
=
array
.
size
();
if
(
size
==
0
){
memberId
=
memberTools
.
create
(
name
,
phone
).
getString
(
"result"
);
}
else
{
memberId
=
array
.
getJSONObject
(
0
).
getString
(
"id"
);
}
//查询该线索的跟进,若存在待跟进/已逾期的跟进任务,则取列表第一条数据;不存在待跟进/已逾期的跟进任务,则新建一条待跟进的跟进任务
JSONArray
jsonArray
=
memberTools
.
listTodoTask
(
memberId
).
getJSONArray
(
"result"
);
num
=
jsonArray
.
size
();
if
(
num
==
0
)
{
feedbackId1
=
memberTools
.
createFeedback
(
memberId
).
getString
(
"result"
);
feedbackId
=
memberTools
.
listTodoTask
(
memberId
).
getJSONArray
(
"result"
).
getJSONObject
(
0
).
getString
(
"id"
);
}
else
{
feedbackId
=
jsonArray
.
getJSONObject
(
0
).
getString
(
"id"
);
}
//取消跟进
JSONObject
object
=
new
JSONObject
();
object
.
put
(
"feedbackId"
,
feedbackId
);
object
.
put
(
"reason"
,
"自动化测试取消跟进原因"
);
object
.
put
(
"brandId"
,
xmAppApi
.
getLoginInfo
().
getBrandId
());
object
.
put
(
"studioId"
,
xmAppApi
.
getLoginInfo
().
getStudioId
());
object
.
put
(
"operatorId"
,
xmAppApi
.
getLoginInfo
().
getAdminId
());
xmAppApi
.
doRequest
(
RequestType
.
JSON
,
params
,
object
.
toString
(),
headers
).
assetsSuccess
(
true
);
Assert
.
assertEquals
(
memberTools
.
findDetailById
(
feedbackId
).
getJSONObject
(
"result"
).
getString
(
"state"
),
"CANCEL"
);
}
@Test
(
description
=
"删除跟进"
,
priority
=
1
)
public
void
del
()
{
memberTools
.
deleteFeedback
(
feedbackId
);
if
(
feedbackId1
!=
null
)
{
memberTools
.
deleteFeedback
(
feedbackId1
);
}
}
}
src/main/java/com/xiaomai/cases/polar/clue/TestClaim.java
0 → 100644
View file @
9af8e2e4
package
com
.
xiaomai
.
cases
.
polar
.
clue
;
import
com.alibaba.fastjson.JSONArray
;
import
com.alibaba.fastjson.JSONObject
;
import
com.xiaomai.enums.ApiModule
;
import
com.xiaomai.enums.LoginAccount
;
import
com.xiaomai.enums.RequestType
;
import
com.xiaomai.enums.Terminal
;
import
com.xiaomai.utils.RandomStringUtil
;
import
com.xiaomai.utils.XMBaseTest
;
import
org.testng.Assert
;
import
org.testng.annotations.BeforeMethod
;
import
org.testng.annotations.Test
;
import
java.util.ArrayList
;
import
java.util.List
;
/**
* @Author zxy
* @Description
* @Date 2024/6/30 11:53
*/
public
class
TestClaim
extends
XMBaseTest
{
MemberTools
memberTools
=
new
MemberTools
();
String
memberId
;
@BeforeMethod
public
void
beforeTest
(){
xmAppApi
.
setApiModule
(
ApiModule
.
Polar_Clue
)
.
setApiName
(
"API_claim"
)
.
setLoginUser
(
LoginAccount
.
GYM_PROD
)
.
setTerminal
(
Terminal
.
B
);
dal
.
setCase_owner
(
"zyx"
)
.
setCase_name
(
Thread
.
currentThread
().
getStackTrace
()[
1
].
getFileName
().
split
(
"\\."
)[
0
]);
super
.
beforeTest
();
}
@Test
(
description
=
"认领线索"
)
public
void
testClaim
(){
String
name
=
"自动化潜在会员"
+
RandomStringUtil
.
randomString
(
3
);
String
phone
=
RandomStringUtil
.
randomMobile
(
"666"
);
//查看公有池列表是否有数据,有数据则取第一条数据
JSONArray
array
=
memberTools
.
searchMember
(
2
,
"POTENTIAL"
).
getJSONObject
(
"result"
).
getJSONArray
(
"records"
);
//查看全部线索是否有数据,有数据则取第一条数据
JSONArray
array1
=
memberTools
.
searchMember
(
0
,
"POTENTIAL"
).
getJSONObject
(
"result"
).
getJSONArray
(
"records"
);
int
size
=
array
.
size
();
int
size1
=
array1
.
size
();
if
(
size
!=
0
){
memberId
=
array
.
getJSONObject
(
0
).
getString
(
"id"
);
//查看公有池列表是否有数据,有数据则取第一条数据
}
else
if
(
size
==
0
&&
size1
!=
0
){
memberId
=
array1
.
getJSONObject
(
0
).
getString
(
"id"
);
//公有池无数据,全部线索有数据,则从全部线索取第一条数据
//分配线索至公有池(只有公有池的线索才可以认领)
memberTools
.
distributeToPublic
(
memberId
);
}
else
{
memberId
=
memberTools
.
create
(
name
,
phone
).
getString
(
"result"
);
//公有池和全部线索都无数据,则新建一个线索
//分配线索至公有池(只有公有池的线索才可以认领)
memberTools
.
distributeToPublic
(
memberId
);
}
List
memberIds
=
new
ArrayList
();
memberIds
.
add
(
memberId
);
try
{
Thread
.
sleep
(
3000
);
}
catch
(
InterruptedException
e
)
{
e
.
printStackTrace
();
}
//认领线索
JSONObject
object
=
new
JSONObject
();
object
.
put
(
"brandId"
,
xmAppApi
.
getLoginInfo
().
getBrandId
());
object
.
put
(
"studioId"
,
xmAppApi
.
getLoginInfo
().
getStudioId
());
object
.
put
(
"operatorId"
,
xmAppApi
.
getLoginInfo
().
getAdminId
());
object
.
put
(
"memberIds"
,
memberIds
);
xmAppApi
.
doRequest
(
RequestType
.
JSON
,
params
,
object
.
toString
(),
headers
).
assetsSuccess
(
true
);
JSONObject
res
=
memberTools
.
findStudioMemberDetail
(
memberId
).
getJSONObject
(
"result"
);
Assert
.
assertEquals
(
res
.
getString
(
"saleId"
),
xmAppApi
.
getLoginInfo
().
getAdminId
());
Assert
.
assertEquals
(
res
.
getString
(
"position"
),
"PRIVATE_RESOURCE"
);
//线索位置:私有池
}
}
src/main/java/com/xiaomai/cases/polar/clue/TestCommonSearch.java
View file @
9af8e2e4
...
...
@@ -9,6 +9,9 @@ import com.xiaomai.utils.XMBaseTest;
import
org.testng.annotations.BeforeMethod
;
import
org.testng.annotations.Test
;
import
java.util.ArrayList
;
import
java.util.List
;
/**
* @Author zxy
* @Description
...
...
@@ -20,7 +23,7 @@ public class TestCommonSearch extends XMBaseTest {
xmAppApi
.
setApiModule
(
ApiModule
.
Polar_Clue
)
.
setApiName
(
"API_commonSearch"
)
.
setLoginUser
(
LoginAccount
.
ZYX_DEV
)
.
setLoginUser
(
LoginAccount
.
GYM_PROD
)
.
setTerminal
(
Terminal
.
B
);
dal
.
setCase_owner
(
"zyx"
)
...
...
@@ -31,11 +34,21 @@ public class TestCommonSearch extends XMBaseTest {
@Test
(
description
=
"搜索"
)
public
void
testCommonSearch
(){
List
statusList
=
new
ArrayList
();
statusList
.
add
(
"NORMAL"
);
statusList
.
add
(
"HISTORY"
);
statusList
.
add
(
"POTENTIAL"
);
JSONObject
object
=
new
JSONObject
();
object
.
put
(
"brandId"
,
xmAppApi
.
getLoginInfo
().
getBrandId
());
object
.
put
(
"studioId"
,
xmAppApi
.
getLoginInfo
().
getStudioId
());
object
.
put
(
"operatorId"
,
xmAppApi
.
getLoginInfo
().
getAdminId
());
object
.
put
(
"dataPermissionFilter"
,
false
);
object
.
put
(
"content"
,
"666"
);
object
.
put
(
"statusList"
,
statusList
);
xmAppApi
.
doRequest
(
RequestType
.
JSON
,
params
,
object
.
toString
(),
headers
).
assetsSuccess
(
true
);
//校验放在了创建线索case中
}
}
src/main/java/com/xiaomai/cases/polar/clue/TestContinueFeedback.java
0 → 100644
View file @
9af8e2e4
package
com
.
xiaomai
.
cases
.
polar
.
clue
;
import
com.alibaba.fastjson.JSONArray
;
import
com.alibaba.fastjson.JSONObject
;
import
com.xiaomai.enums.ApiModule
;
import
com.xiaomai.enums.LoginAccount
;
import
com.xiaomai.enums.RequestType
;
import
com.xiaomai.enums.Terminal
;
import
com.xiaomai.utils.RandomStringUtil
;
import
com.xiaomai.utils.XMBaseTest
;
import
org.testng.Assert
;
import
org.testng.annotations.BeforeMethod
;
import
org.testng.annotations.Test
;
import
java.util.Random
;
/**
* @Author zxy
* @Description
* @Date 2024/7/1 10:09
*/
public
class
TestContinueFeedback
extends
XMBaseTest
{
MemberTools
memberTools
=
new
MemberTools
();
String
memberId
;
String
feedbackId
;
String
feedbackId1
;
int
num
;
int
len
;
@BeforeMethod
public
void
beforeTest
(){
xmAppApi
.
setApiModule
(
ApiModule
.
Polar_Clue
)
.
setApiName
(
"API_continueFeedback"
)
.
setLoginUser
(
LoginAccount
.
GYM_PROD
)
.
setTerminal
(
Terminal
.
B
);
dal
.
setCase_owner
(
"zyx"
)
.
setCase_name
(
Thread
.
currentThread
().
getStackTrace
()[
1
].
getFileName
().
split
(
"\\."
)[
0
]);
super
.
beforeTest
();
}
@Test
(
description
=
"继续跟进"
)
public
void
testModifyFeedback
(){
String
name
=
"自动化潜在会员"
+
RandomStringUtil
.
randomString
(
3
);
String
phone
=
RandomStringUtil
.
randomMobile
(
"666"
);
//若全部线索有数据,则取第一条数据;若无数据则新建一个线索
JSONArray
array
=
memberTools
.
searchMember
(
0
,
"POTENTIAL"
).
getJSONObject
(
"result"
).
getJSONArray
(
"records"
);
int
size
=
array
.
size
();
if
(
size
==
0
){
memberId
=
memberTools
.
create
(
name
,
phone
).
getString
(
"result"
);
}
else
{
memberId
=
array
.
getJSONObject
(
0
).
getString
(
"id"
);
}
//查询该线索的跟进,若存在待跟进/已逾期的跟进任务,则取列表第一条数据;不存在待跟进/已逾期的跟进任务,则新建一条待跟进的跟进任务
JSONArray
jsonArray
=
memberTools
.
listTodoTask
(
memberId
).
getJSONArray
(
"result"
);
num
=
jsonArray
.
size
();
if
(
num
==
0
)
{
feedbackId1
=
memberTools
.
createFeedback
(
memberId
).
getString
(
"result"
);
feedbackId
=
memberTools
.
listTodoTask
(
memberId
).
getJSONArray
(
"result"
).
getJSONObject
(
0
).
getString
(
"id"
);
}
else
{
feedbackId
=
jsonArray
.
getJSONObject
(
0
).
getString
(
"id"
);
}
//该线索的状态为已完成的跟进任务数
len
=
memberTools
.
searchFeedback
(
memberId
).
getJSONObject
(
"result"
).
getJSONArray
(
"records"
).
size
();
Random
random
=
new
Random
();
String
[]
feedbackMethod
=
{
"PHONE"
,
"WECHAT"
,
"SMS"
,
"VISIT"
,
"OTHERS"
};
String
[]
feedbackResult
=
{
"CONTACTED"
,
"INTENTION_CONFIRMED"
,
"APPOINTED"
,
"EXPERIENCED"
,
"REGISTERED"
,
"REGISTERED"
,
"RENEW_FOLLOW"
};
//继续跟进
JSONObject
object
=
new
JSONObject
();
object
.
put
(
"feedbackId"
,
feedbackId
);
object
.
put
(
"feedbackContent"
,
"自动化测试继续跟进,只生成一条已完成的跟进"
);
object
.
put
(
"memberId"
,
memberId
);
object
.
put
(
"feedbackMethod"
,
feedbackMethod
[
random
.
nextInt
(
5
)]);
object
.
put
(
"feedbackResult"
,
feedbackResult
[
random
.
nextInt
(
7
)]);
object
.
put
(
"brandId"
,
xmAppApi
.
getLoginInfo
().
getBrandId
());
object
.
put
(
"studioId"
,
xmAppApi
.
getLoginInfo
().
getStudioId
());
object
.
put
(
"operatorId"
,
xmAppApi
.
getLoginInfo
().
getAdminId
());
xmAppApi
.
doRequest
(
RequestType
.
JSON
,
params
,
object
.
toString
(),
headers
).
assetsSuccess
(
true
);
try
{
Thread
.
sleep
(
1000
);
}
catch
(
InterruptedException
e
)
{
}
JSONArray
json
=
memberTools
.
searchFeedback
(
memberId
).
getJSONObject
(
"result"
).
getJSONArray
(
"records"
);
int
len1
=
json
.
size
();
Assert
.
assertEquals
(
len1
,
len
+
1
);
}
@Test
(
description
=
"删除跟进"
,
priority
=
1
)
public
void
del
()
{
memberTools
.
deleteFeedback
(
feedbackId
);
if
(
feedbackId1
!=
null
)
{
memberTools
.
deleteFeedback
(
feedbackId1
);
}
}
}
src/main/java/com/xiaomai/cases/polar/clue/TestCountWechatSubscriber.java
0 → 100644
View file @
9af8e2e4
package
com
.
xiaomai
.
cases
.
polar
.
clue
;
import
com.alibaba.fastjson.JSONObject
;
import
com.xiaomai.enums.ApiModule
;
import
com.xiaomai.enums.LoginAccount
;
import
com.xiaomai.enums.RequestType
;
import
com.xiaomai.enums.Terminal
;
import
com.xiaomai.utils.XMBaseTest
;
import
org.testng.annotations.BeforeMethod
;
import
org.testng.annotations.Test
;
/**
* @Author zxy
* @Description
* @Date 2024/6/28 16:37
*/
public
class
TestCountWechatSubscriber
extends
XMBaseTest
{
@BeforeMethod
public
void
beforeTest
(){
xmAppApi
.
setApiModule
(
ApiModule
.
Polar_Clue
)
.
setApiName
(
"API_countWechatSubscriber"
)
.
setLoginUser
(
LoginAccount
.
GYM_PROD
)
.
setTerminal
(
Terminal
.
B
);
dal
.
setCase_owner
(
"zyx"
)
.
setCase_name
(
Thread
.
currentThread
().
getStackTrace
()[
1
].
getFileName
().
split
(
"\\."
)[
0
]);
super
.
beforeTest
();
}
@Test
(
description
=
"品牌下绑定服务号的会员数量"
)
public
void
testCountWechatSubscriber
(){
JSONObject
object
=
new
JSONObject
();
object
.
put
(
"brandId"
,
xmAppApi
.
getLoginInfo
().
getBrandId
());
xmAppApi
.
doRequest
(
RequestType
.
JSON
,
params
,
object
.
toString
(),
headers
).
assetsSuccess
(
true
);
}
}
src/main/java/com/xiaomai/cases/polar/clue/TestCreate.java
View file @
9af8e2e4
package
com
.
xiaomai
.
cases
.
polar
.
clue
;
import
com.alibaba.fastjson.JSONArray
;
import
com.alibaba.fastjson.JSONObject
;
import
com.xiaomai.client.DataUserInfo
;
import
com.xiaomai.enums.ApiModule
;
import
com.xiaomai.enums.LoginAccount
;
import
com.xiaomai.enums.RequestType
;
...
...
@@ -12,6 +14,8 @@ import org.testng.Assert;
import
org.testng.annotations.BeforeMethod
;
import
org.testng.annotations.Test
;
import
java.util.Random
;
/**
* @Author zxy
* @Description
...
...
@@ -25,7 +29,7 @@ public class TestCreate extends XMBaseTest {
xmAppApi
.
setApiModule
(
ApiModule
.
Polar_Clue
)
.
setApiName
(
"API_create"
)
.
setLoginUser
(
LoginAccount
.
ZYX_DEV
)
.
setLoginUser
(
LoginAccount
.
GYM_PROD
)
.
setTerminal
(
Terminal
.
B
);
dal
.
setCase_owner
(
"zyx"
)
...
...
@@ -35,12 +39,32 @@ public class TestCreate extends XMBaseTest {
@Test
(
description
=
"新增潜在会员"
)
public
void
testCreate
(){
DataUserInfo
dataUserInfo
=
new
DataUserInfo
();
dataUserInfo
.
setTerminal
(
Terminal
.
B
);
dataUserInfo
.
setLoginUser
(
LoginAccount
.
GYM_PROD2
);
//全部线索快捷筛选
JSONObject
res
=
memberTools
.
fetchQuickSearch
().
getJSONObject
(
"result"
);
int
addToday
=
Integer
.
parseInt
(
res
.
getString
(
"addToday"
));
int
addThisWeek
=
Integer
.
parseInt
(
res
.
getString
(
"addThisWeek"
));
int
addThisMonth
=
Integer
.
parseInt
(
res
.
getString
(
"addThisMonth"
));
//我的线索快捷筛选
JSONObject
response
=
memberTools
.
fetchMyQuickSearch
().
getJSONObject
(
"result"
);
int
addToday_my
=
Integer
.
parseInt
(
response
.
getString
(
"addToday"
));
int
addThisWeek_my
=
Integer
.
parseInt
(
response
.
getString
(
"addThisWeek"
));
int
addThisMonth_my
=
Integer
.
parseInt
(
response
.
getString
(
"addThisMonth"
));
Random
random
=
new
Random
();
String
name
=
"自动化潜在会员"
+
RandomStringUtil
.
randomString
(
3
);
String
phone
=
RandomStringUtil
.
randomMobile
(
"666"
);
String
[]
idCardType
=
{
"IDENTITY"
,
"SAR_PERMIT"
,
"idCardType"
};
//身份证、港澳通行证、护照
String
[]
intention
=
{
"HIGH"
,
"MIDDLE"
,
"LOW"
};
//意向度:高、中、低
String
code
=
memberTools
.
findByObjectId
().
getJSONObject
(
random
.
nextInt
(
13
)).
getString
(
"code"
);
//线索来源列表
//新建潜在会员时需先校验当前场馆及同品牌下的其他场馆是否存在相同手机号的线索
Boolean
duplicate
=
memberTools
.
checkPhoneDuplicate
(
phone
,
""
).
getJSONObject
(
"result"
).
getBoolean
(
"duplicate"
);
if
(
duplicate
==
false
)
{
if
(
duplicate
==
false
){
JSONObject
object
=
new
JSONObject
();
object
.
put
(
"brandId"
,
xmAppApi
.
getLoginInfo
().
getBrandId
());
object
.
put
(
"studioId"
,
xmAppApi
.
getLoginInfo
().
getStudioId
());
...
...
@@ -50,6 +74,23 @@ public class TestCreate extends XMBaseTest {
object
.
put
(
"name"
,
name
);
object
.
put
(
"phone"
,
phone
);
object
.
put
(
"gender"
,
"UNKNOWN"
);
object
.
put
(
"wechat"
,
"12345678"
);
object
.
put
(
"birthday"
,
"1277654400000"
);
object
.
put
(
"idCardType"
,
idCardType
[
random
.
nextInt
(
3
)]);
object
.
put
(
"idCardCode"
,
RandomStringUtil
.
randomNumber
(
18
,
"410526"
));
object
.
put
(
"height"
,
"180"
);
object
.
put
(
"weight"
,
"66"
);
object
.
put
(
"trainTarget"
,
"减脂"
);
object
.
put
(
"profession"
,
"无"
);
object
.
put
(
"incomeLevel"
,
"66666/月"
);
object
.
put
(
"address"
,
"同人广场a座小麦助教"
);
object
.
put
(
"emergencyContactPerson"
,
"紧急联系人名字"
);
object
.
put
(
"emergencyContactPhone"
,
"15896688889"
);
object
.
put
(
"resourceId"
,
code
);
object
.
put
(
"intention"
,
intention
[
random
.
nextInt
(
3
)]);
object
.
put
(
"position"
,
"PRIVATE_RESOURCE"
);
object
.
put
(
"remark"
,
"这是备注"
);
object
.
put
(
"saleId"
,
xmAppApi
.
getLoginInfo
().
getAdminId
());
xmAppApi
.
doRequest
(
RequestType
.
JSON
,
params
,
object
.
toString
(),
headers
).
assetsSuccess
(
true
);
String
memberId
=
xmAppApi
.
getBodyInJSON
().
getString
(
"result"
);
...
...
@@ -60,15 +101,37 @@ public class TestCreate extends XMBaseTest {
}
catch
(
InterruptedException
e
)
{
e
.
printStackTrace
();
}
Assert
.
assertEquals
(
memberTools
.
searchMember
().
getJSONObject
(
"result"
).
getJSONArray
(
"records"
).
getJSONObject
(
0
).
getString
(
"phone"
),
phone
);
//校验潜在会员列表第一条数据是否是本次新增的数据
Assert
.
assertEquals
(
memberTools
.
searchMember
(
0
,
"POTENTIAL"
).
getJSONObject
(
"result"
).
getJSONArray
(
"records"
).
getJSONObject
(
0
).
getString
(
"phone"
),
phone
);
//根据手机号全局搜索检验
Assert
.
assertEquals
(
memberTools
.
commonSearch
(
phone
).
getJSONArray
(
"result"
).
getJSONObject
(
0
).
getString
(
"id"
),
memberId
);
//校验今日新增、本周新增、本月新增的会员数是否加1
JSONObject
res1
=
memberTools
.
fetchQuickSearch
().
getJSONObject
(
"result"
);
int
addToday1
=
Integer
.
parseInt
(
res1
.
getString
(
"addToday"
));
int
addThisWeek1
=
Integer
.
parseInt
(
res1
.
getString
(
"addThisWeek"
));
int
addThisMonth1
=
Integer
.
parseInt
(
res1
.
getString
(
"addThisMonth"
));
Assert
.
assertEquals
(
addToday1
,
addToday
+
1
);
//快捷筛选今日新增+1
Assert
.
assertEquals
(
addThisWeek1
,
addThisWeek
+
1
);
//快捷筛选本周新增+1
// Assert.assertEquals(addThisMonth1,addThisMonth+1);//快捷筛选本月新增+1
//校验我的线索今日新增、本周新增、本月新增的会员数是否加1
JSONObject
response1
=
memberTools
.
fetchMyQuickSearch
().
getJSONObject
(
"result"
);
int
addToday_my1
=
Integer
.
parseInt
(
response1
.
getString
(
"addToday"
));
int
addThisWeek_my1
=
Integer
.
parseInt
(
response1
.
getString
(
"addThisWeek"
));
int
addThisMonth_my1
=
Integer
.
parseInt
(
response1
.
getString
(
"addThisMonth"
));
Assert
.
assertEquals
(
addToday_my1
,
addToday_my
+
1
);
//我的快捷筛选今日新增+1
Assert
.
assertEquals
(
addThisWeek_my1
,
addThisWeek_my
+
1
);
//我的快捷筛选本周新增+1
// Assert.assertEquals(addThisMonth_my1,addThisMonth_my+1);//我的快捷筛选本月新增+1
//在另一个场馆添加该会员,并在添加后校验是否添加成功
memberTools
.
join
(
memberId
,
dataUserInfo
);
Assert
.
assertEquals
(
memberTools
.
getDetailById
(
memberId
,
dataUserInfo
).
getJSONObject
(
"result"
).
getString
(
"phone"
),
phone
);
}
}
@Test
(
description
=
"新增潜在会员-手机号为空"
)
// @Test(description = "新增潜在会员-手机号为空")
public
void
testCreate_1
(){
String
name
=
"自动化潜在会员"
+
RandomStringUtil
.
randomString
(
3
);
...
...
src/main/java/com/xiaomai/cases/polar/clue/TestCreateFeedback.java
0 → 100644
View file @
9af8e2e4
package
com
.
xiaomai
.
cases
.
polar
.
clue
;
import
com.alibaba.fastjson.JSONArray
;
import
com.alibaba.fastjson.JSONObject
;
import
com.xiaomai.enums.ApiModule
;
import
com.xiaomai.enums.LoginAccount
;
import
com.xiaomai.enums.RequestType
;
import
com.xiaomai.enums.Terminal
;
import
com.xiaomai.utils.RandomStringUtil
;
import
com.xiaomai.utils.TimeUtils
;
import
com.xiaomai.utils.XMBaseTest
;
import
org.testng.Assert
;
import
org.testng.annotations.BeforeMethod
;
import
org.testng.annotations.Test
;
import
java.util.Random
;
/**
* @Author zxy
* @Description
* @Date 2024/6/30 17:05
*/
public
class
TestCreateFeedback
extends
XMBaseTest
{
MemberTools
memberTools
=
new
MemberTools
();
String
memberId
;
String
feedbackId
;
String
feedbackId1
;
int
num
;
int
num_todo
;
@BeforeMethod
public
void
beforeTest
(){
xmAppApi
.
setApiModule
(
ApiModule
.
Polar_Clue
)
.
setApiName
(
"API_createFeedback"
)
.
setLoginUser
(
LoginAccount
.
GYM_PROD
)
.
setTerminal
(
Terminal
.
B
);
dal
.
setCase_owner
(
"zyx"
)
.
setCase_name
(
Thread
.
currentThread
().
getStackTrace
()[
1
].
getFileName
().
split
(
"\\."
)[
0
]);
super
.
beforeTest
();
}
@Test
(
description
=
"添加跟进记录"
)
public
void
testCreateFeedback
(){
String
name
=
"自动化潜在会员"
+
RandomStringUtil
.
randomString
(
3
);
String
phone
=
RandomStringUtil
.
randomMobile
(
"666"
);
//若全部线索有数据,则取第一条数据;若无数据则新建一个线索
JSONArray
array
=
memberTools
.
searchMember
(
0
,
"POTENTIAL"
).
getJSONObject
(
"result"
).
getJSONArray
(
"records"
);
int
size
=
array
.
size
();
if
(
size
==
0
){
memberId
=
memberTools
.
create
(
name
,
phone
).
getString
(
"result"
);
}
else
{
memberId
=
array
.
getJSONObject
(
0
).
getString
(
"id"
);
}
//查询该线索的跟进
num
=
memberTools
.
searchFeedback
(
memberId
).
getJSONObject
(
"result"
).
getJSONArray
(
"records"
).
size
();
num_todo
=
memberTools
.
listTodoTask
(
memberId
).
getJSONArray
(
"result"
).
size
();
Random
random
=
new
Random
();
String
[]
feedbackMethod
=
{
"PHONE"
,
"WECHAT"
,
"SMS"
,
"VISIT"
,
"OTHERS"
};
String
[]
feedbackResult
=
{
"CONTACTED"
,
"INTENTION_CONFIRMED"
,
"APPOINTED"
,
"EXPERIENCED"
,
"REGISTERED"
,
"REGISTERED"
,
"RENEW_FOLLOW"
};
JSONObject
object
=
new
JSONObject
();
object
.
put
(
"brandId"
,
xmAppApi
.
getLoginInfo
().
getBrandId
());
object
.
put
(
"studioId"
,
xmAppApi
.
getLoginInfo
().
getStudioId
());
object
.
put
(
"operatorId"
,
xmAppApi
.
getLoginInfo
().
getAdminId
());
object
.
put
(
"feedbackContent"
,
"自动化测试添加跟进记录"
);
object
.
put
(
"feedbackMethod"
,
feedbackMethod
[
random
.
nextInt
(
5
)]);
object
.
put
(
"feedbackResult"
,
feedbackResult
[
random
.
nextInt
(
7
)]);
object
.
put
(
"memberId"
,
memberId
);
object
.
put
(
"nextFeedbackRemark"
,
"自动化测试下次跟进内容"
);
object
.
put
(
"nextFeedbackTime"
,
TimeUtils
.
getTodayEndTime
());
xmAppApi
.
doRequest
(
RequestType
.
JSON
,
params
,
object
.
toString
(),
headers
).
assetsSuccess
(
true
);
feedbackId
=
xmAppApi
.
getBodyInJSON
().
getString
(
"result"
);
try
{
Thread
.
sleep
(
1000
);
}
catch
(
InterruptedException
e
)
{
}
JSONArray
jsonArray
=
memberTools
.
listTodoTask
(
memberId
).
getJSONArray
(
"result"
);
feedbackId1
=
jsonArray
.
getJSONObject
(
0
).
getString
(
"id"
);
int
num_todo1
=
jsonArray
.
size
();
int
num1
=
memberTools
.
searchFeedback
(
memberId
).
getJSONObject
(
"result"
).
getJSONArray
(
"records"
).
size
();
Assert
.
assertEquals
(
num1
,
num
+
1
);
Assert
.
assertEquals
(
num_todo1
,
num_todo
+
1
);
Assert
.
assertEquals
(
memberTools
.
summaryFeedback
().
getJSONObject
(
"result"
).
getString
(
"todayWaitFeedback"
),
"1"
);
}
@Test
(
description
=
"删除跟进"
,
priority
=
1
)
public
void
del
(){
memberTools
.
deleteFeedback
(
feedbackId
);
memberTools
.
deleteFeedback
(
feedbackId1
);
try
{
Thread
.
sleep
(
1000
);
}
catch
(
InterruptedException
e
)
{
}
int
num2
=
memberTools
.
searchFeedback
(
memberId
).
getJSONObject
(
"result"
).
getJSONArray
(
"records"
).
size
();
int
num_todo2
=
memberTools
.
listTodoTask
(
memberId
).
getJSONArray
(
"result"
).
size
();
Assert
.
assertEquals
(
num2
,
num
);
Assert
.
assertEquals
(
num_todo2
,
num_todo
);
}
}
src/main/java/com/xiaomai/cases/polar/clue/TestDisable.java
0 → 100644
View file @
9af8e2e4
package
com
.
xiaomai
.
cases
.
polar
.
clue
;
import
com.alibaba.fastjson.JSONArray
;
import
com.alibaba.fastjson.JSONObject
;
import
com.xiaomai.enums.ApiModule
;
import
com.xiaomai.enums.LoginAccount
;
import
com.xiaomai.enums.RequestType
;
import
com.xiaomai.enums.Terminal
;
import
com.xiaomai.utils.RandomStringUtil
;
import
com.xiaomai.utils.XMBaseTest
;
import
org.testng.Assert
;
import
org.testng.annotations.BeforeMethod
;
import
org.testng.annotations.Test
;
import
java.util.ArrayList
;
import
java.util.List
;
/**
* @Author zxy
* @Description
* @Date 2024/6/30 14:33
*/
public
class
TestDisable
extends
XMBaseTest
{
MemberTools
memberTools
=
new
MemberTools
();
String
id
;
@BeforeMethod
public
void
beforeTest
(){
xmAppApi
.
setApiModule
(
ApiModule
.
Polar_Clue
)
.
setApiName
(
"API_disable"
)
.
setLoginUser
(
LoginAccount
.
GYM_PROD
)
.
setTerminal
(
Terminal
.
B
);
dal
.
setCase_owner
(
"zyx"
)
.
setCase_name
(
Thread
.
currentThread
().
getStackTrace
()[
1
].
getFileName
().
split
(
"\\."
)[
0
]);
super
.
beforeTest
();
}
@Test
(
description
=
"线索移至回收站"
)
public
void
testDisable
(){
String
name
=
"自动化潜在会员"
+
RandomStringUtil
.
randomString
(
3
);
String
phone
=
RandomStringUtil
.
randomMobile
(
"666"
);
//若全部线索有数据,则取第一条数据;若无数据则新建一个线索
JSONArray
array
=
memberTools
.
searchMember
(
0
,
"POTENTIAL"
).
getJSONObject
(
"result"
).
getJSONArray
(
"records"
);
int
size
=
array
.
size
();
if
(
size
==
0
){
id
=
memberTools
.
create
(
name
,
phone
).
getString
(
"result"
);
}
else
{
id
=
array
.
getJSONObject
(
0
).
getString
(
"id"
);
}
List
memberIds
=
new
ArrayList
();
memberIds
.
add
(
id
);
JSONObject
object
=
new
JSONObject
();
object
.
put
(
"brandId"
,
xmAppApi
.
getLoginInfo
().
getBrandId
());
object
.
put
(
"studioId"
,
xmAppApi
.
getLoginInfo
().
getStudioId
());
object
.
put
(
"operatorId"
,
xmAppApi
.
getLoginInfo
().
getAdminId
());
object
.
put
(
"memberIds"
,
memberIds
);
object
.
put
(
"reason"
,
"自动化脚本移至回收站"
);
xmAppApi
.
doRequest
(
RequestType
.
JSON
,
params
,
object
.
toString
(),
headers
).
assetsSuccess
(
true
);
JSONObject
res
=
memberTools
.
findStudioMemberDetail
(
id
).
getJSONObject
(
"result"
);
Assert
.
assertEquals
(
res
.
getString
(
"saleId"
),
"-1"
);
Assert
.
assertEquals
(
res
.
getString
(
"position"
),
"RECYCLE"
);
//线索位置:回收站
}
}
src/main/java/com/xiaomai/cases/polar/clue/TestDistributeToPrivate.java
0 → 100644
View file @
9af8e2e4
package
com
.
xiaomai
.
cases
.
polar
.
clue
;
import
com.alibaba.fastjson.JSONArray
;
import
com.alibaba.fastjson.JSONObject
;
import
com.xiaomai.enums.ApiModule
;
import
com.xiaomai.enums.LoginAccount
;
import
com.xiaomai.enums.RequestType
;
import
com.xiaomai.enums.Terminal
;
import
com.xiaomai.utils.RandomStringUtil
;
import
com.xiaomai.utils.XMBaseTest
;
import
org.testng.Assert
;
import
org.testng.annotations.BeforeMethod
;
import
org.testng.annotations.Test
;
import
java.util.ArrayList
;
import
java.util.List
;
/**
* @Author zxy
* @Description
* @Date 2024/6/30 10:17
*/
public
class
TestDistributeToPrivate
extends
XMBaseTest
{
MemberTools
memberTools
=
new
MemberTools
();
String
id
;
@BeforeMethod
public
void
beforeTest
(){
xmAppApi
.
setApiModule
(
ApiModule
.
Polar_Clue
)
.
setApiName
(
"API_distributeToPrivate"
)
.
setLoginUser
(
LoginAccount
.
GYM_PROD
)
.
setTerminal
(
Terminal
.
B
);
dal
.
setCase_owner
(
"zyx"
)
.
setCase_name
(
Thread
.
currentThread
().
getStackTrace
()[
1
].
getFileName
().
split
(
"\\."
)[
0
]);
super
.
beforeTest
();
}
@Test
(
description
=
"分配线索到私有池"
)
public
void
testDistributeToPrivate
(){
String
name
=
"自动化潜在会员"
+
RandomStringUtil
.
randomString
(
3
);
String
phone
=
RandomStringUtil
.
randomMobile
(
"666"
);
//若全部线索有数据,则取第一条数据;若无数据则新建一个线索
JSONArray
array
=
memberTools
.
searchMember
(
0
,
"POTENTIAL"
).
getJSONObject
(
"result"
).
getJSONArray
(
"records"
);
int
size
=
array
.
size
();
if
(
size
==
0
){
id
=
memberTools
.
create
(
name
,
phone
).
getString
(
"result"
);
}
else
{
id
=
array
.
getJSONObject
(
0
).
getString
(
"id"
);
}
List
memberIds
=
new
ArrayList
();
memberIds
.
add
(
id
);
JSONObject
object
=
new
JSONObject
();
object
.
put
(
"brandId"
,
xmAppApi
.
getLoginInfo
().
getBrandId
());
object
.
put
(
"studioId"
,
xmAppApi
.
getLoginInfo
().
getStudioId
());
object
.
put
(
"operatorId"
,
xmAppApi
.
getLoginInfo
().
getAdminId
());
object
.
put
(
"saleId"
,
xmAppApi
.
getLoginInfo
().
getAdminId
());
object
.
put
(
"memberIds"
,
memberIds
);
xmAppApi
.
doRequest
(
RequestType
.
JSON
,
params
,
object
.
toString
(),
headers
).
assetsSuccess
(
true
);
JSONObject
res
=
memberTools
.
findStudioMemberDetail
(
id
).
getJSONObject
(
"result"
);
Assert
.
assertEquals
(
res
.
getString
(
"saleId"
),
xmAppApi
.
getLoginInfo
().
getAdminId
());
Assert
.
assertEquals
(
res
.
getString
(
"position"
),
"PRIVATE_RESOURCE"
);
//线索位置:私有池
}
}
src/main/java/com/xiaomai/cases/polar/clue/TestDistributeToPublic.java
0 → 100644
View file @
9af8e2e4
package
com
.
xiaomai
.
cases
.
polar
.
clue
;
import
com.alibaba.fastjson.JSONArray
;
import
com.alibaba.fastjson.JSONObject
;
import
com.xiaomai.enums.ApiModule
;
import
com.xiaomai.enums.LoginAccount
;
import
com.xiaomai.enums.RequestType
;
import
com.xiaomai.enums.Terminal
;
import
com.xiaomai.utils.RandomStringUtil
;
import
com.xiaomai.utils.XMBaseTest
;
import
org.testng.Assert
;
import
org.testng.annotations.BeforeMethod
;
import
org.testng.annotations.Test
;
import
java.util.ArrayList
;
import
java.util.List
;
/**
* @Author zxy
* @Description
* @Date 2024/6/30 11:00
*/
public
class
TestDistributeToPublic
extends
XMBaseTest
{
MemberTools
memberTools
=
new
MemberTools
();
String
id
;
@BeforeMethod
public
void
beforeTest
(){
xmAppApi
.
setApiModule
(
ApiModule
.
Polar_Clue
)
.
setApiName
(
"API_distributeToPublic"
)
.
setLoginUser
(
LoginAccount
.
GYM_PROD
)
.
setTerminal
(
Terminal
.
B
);
dal
.
setCase_owner
(
"zyx"
)
.
setCase_name
(
Thread
.
currentThread
().
getStackTrace
()[
1
].
getFileName
().
split
(
"\\."
)[
0
]);
super
.
beforeTest
();
}
@Test
(
description
=
"分配线索到私有池"
)
public
void
testDistributeToPrivate
(){
String
name
=
"自动化潜在会员"
+
RandomStringUtil
.
randomString
(
3
);
String
phone
=
RandomStringUtil
.
randomMobile
(
"666"
);
//若全部线索有数据,则取第一条数据;若无数据则新建一个线索
JSONArray
array
=
memberTools
.
searchMember
(
0
,
"POTENTIAL"
).
getJSONObject
(
"result"
).
getJSONArray
(
"records"
);
int
size
=
array
.
size
();
if
(
size
==
0
){
id
=
memberTools
.
create
(
name
,
phone
).
getString
(
"result"
);
}
else
{
id
=
array
.
getJSONObject
(
0
).
getString
(
"id"
);
}
List
memberIds
=
new
ArrayList
();
memberIds
.
add
(
id
);
JSONObject
object
=
new
JSONObject
();
object
.
put
(
"brandId"
,
xmAppApi
.
getLoginInfo
().
getBrandId
());
object
.
put
(
"studioId"
,
xmAppApi
.
getLoginInfo
().
getStudioId
());
object
.
put
(
"operatorId"
,
xmAppApi
.
getLoginInfo
().
getAdminId
());
object
.
put
(
"memberIds"
,
memberIds
);
xmAppApi
.
doRequest
(
RequestType
.
JSON
,
params
,
object
.
toString
(),
headers
).
assetsSuccess
(
true
);
JSONObject
res
=
memberTools
.
findStudioMemberDetail
(
id
).
getJSONObject
(
"result"
);
Assert
.
assertEquals
(
res
.
getString
(
"saleId"
),
"-1"
);
//无跟进销售
Assert
.
assertEquals
(
res
.
getString
(
"position"
),
"PUBLIC_RESOURCE"
);
//线索位置:公有池
}
}
src/main/java/com/xiaomai/cases/polar/clue/TestFetchMyQuickSearch.java
0 → 100644
View file @
9af8e2e4
package
com
.
xiaomai
.
cases
.
polar
.
clue
;
import
com.alibaba.fastjson.JSONObject
;
import
com.xiaomai.enums.ApiModule
;
import
com.xiaomai.enums.LoginAccount
;
import
com.xiaomai.enums.RequestType
;
import
com.xiaomai.enums.Terminal
;
import
com.xiaomai.utils.XMBaseTest
;
import
org.testng.annotations.BeforeMethod
;
import
org.testng.annotations.Test
;
/**
* @Author zxy
* @Description
* @Date 2024/6/30 10:00
*/
public
class
TestFetchMyQuickSearch
extends
XMBaseTest
{
@BeforeMethod
public
void
beforeTest
(){
xmAppApi
.
setApiModule
(
ApiModule
.
Polar_Clue
)
.
setApiName
(
"API_fetchMyQuickSearch"
)
.
setLoginUser
(
LoginAccount
.
GYM_PROD
)
.
setTerminal
(
Terminal
.
B
);
dal
.
setCase_owner
(
"zyx"
)
.
setCase_name
(
Thread
.
currentThread
().
getStackTrace
()[
1
].
getFileName
().
split
(
"\\."
)[
0
]);
super
.
beforeTest
();
}
@Test
(
description
=
"我的线索快捷查询"
)
public
void
testFetchMyQuickSearch
(){
JSONObject
object
=
new
JSONObject
();
object
.
put
(
"brandId"
,
xmAppApi
.
getLoginInfo
().
getBrandId
());
object
.
put
(
"studioId"
,
xmAppApi
.
getLoginInfo
().
getStudioId
());
object
.
put
(
"operatorId"
,
xmAppApi
.
getLoginInfo
().
getAdminId
());
xmAppApi
.
doRequest
(
RequestType
.
JSON
,
params
,
object
.
toString
(),
headers
).
assetsSuccess
(
true
);
//校验放在了创建线索case中
}
}
src/main/java/com/xiaomai/cases/polar/clue/TestFetchQuickSearch.java
0 → 100644
View file @
9af8e2e4
package
com
.
xiaomai
.
cases
.
polar
.
clue
;
import
com.alibaba.fastjson.JSONObject
;
import
com.xiaomai.enums.ApiModule
;
import
com.xiaomai.enums.LoginAccount
;
import
com.xiaomai.enums.RequestType
;
import
com.xiaomai.enums.Terminal
;
import
com.xiaomai.utils.XMBaseTest
;
import
org.testng.annotations.BeforeMethod
;
import
org.testng.annotations.Test
;
/**
* @Author zxy
* @Description
* @Date 2024/6/30 09:53
*/
public
class
TestFetchQuickSearch
extends
XMBaseTest
{
@BeforeMethod
public
void
beforeTest
(){
xmAppApi
.
setApiModule
(
ApiModule
.
Polar_Clue
)
.
setApiName
(
"API_fetchQuickSearch"
)
.
setLoginUser
(
LoginAccount
.
GYM_PROD
)
.
setTerminal
(
Terminal
.
B
);
dal
.
setCase_owner
(
"zyx"
)
.
setCase_name
(
Thread
.
currentThread
().
getStackTrace
()[
1
].
getFileName
().
split
(
"\\."
)[
0
]);
super
.
beforeTest
();
}
@Test
(
description
=
"全部线索快捷查询"
)
public
void
testFetchQuickSearch
(){
JSONObject
object
=
new
JSONObject
();
object
.
put
(
"brandId"
,
xmAppApi
.
getLoginInfo
().
getBrandId
());
object
.
put
(
"studioId"
,
xmAppApi
.
getLoginInfo
().
getStudioId
());
object
.
put
(
"operatorId"
,
xmAppApi
.
getLoginInfo
().
getAdminId
());
xmAppApi
.
doRequest
(
RequestType
.
JSON
,
params
,
object
.
toString
(),
headers
).
assetsSuccess
(
true
);
//校验放在了创建线索case中
}
}
src/main/java/com/xiaomai/cases/polar/clue/TestFindByObjectId.java
0 → 100644
View file @
9af8e2e4
package
com
.
xiaomai
.
cases
.
polar
.
clue
;
import
com.alibaba.fastjson.JSONObject
;
import
com.xiaomai.enums.ApiModule
;
import
com.xiaomai.enums.LoginAccount
;
import
com.xiaomai.enums.RequestType
;
import
com.xiaomai.enums.Terminal
;
import
com.xiaomai.utils.XMBaseTest
;
import
org.testng.annotations.BeforeMethod
;
import
org.testng.annotations.Test
;
import
java.util.ArrayList
;
import
java.util.List
;
/**
* @Author zxy
* @Description
* @Date 2024/6/28 16:28
*/
public
class
TestFindByObjectId
extends
XMBaseTest
{
@BeforeMethod
public
void
beforeTest
(){
xmAppApi
.
setApiModule
(
ApiModule
.
Polar_Clue
)
.
setApiName
(
"API_findByObjectId"
)
.
setLoginUser
(
LoginAccount
.
GYM_PROD
)
.
setTerminal
(
Terminal
.
B
);
dal
.
setCase_owner
(
"zyx"
)
.
setCase_name
(
Thread
.
currentThread
().
getStackTrace
()[
1
].
getFileName
().
split
(
"\\."
)[
0
]);
super
.
beforeTest
();
}
@Test
(
description
=
"线索来源"
)
public
void
testFindByObjectId
(){
List
categories
=
new
ArrayList
();
categories
.
add
(
"RESOURCE"
);
JSONObject
object
=
new
JSONObject
();
object
.
put
(
"brandId"
,
xmAppApi
.
getLoginInfo
().
getBrandId
());
object
.
put
(
"studioId"
,
xmAppApi
.
getLoginInfo
().
getStudioId
());
object
.
put
(
"operatorId"
,
xmAppApi
.
getLoginInfo
().
getAdminId
());
object
.
put
(
"categories"
,
categories
);
object
.
put
(
"objectId"
,
"1760544120783314946"
);
xmAppApi
.
doRequest
(
RequestType
.
JSON
,
params
,
object
.
toString
(),
headers
).
assetsSuccess
(
true
);
}
}
src/main/java/com/xiaomai/cases/polar/clue/TestGetDetailById.java
View file @
9af8e2e4
package
com
.
xiaomai
.
cases
.
polar
.
clue
;
import
com.alibaba.fastjson.JSONArray
;
import
com.alibaba.fastjson.JSONObject
;
import
com.xiaomai.enums.ApiModule
;
import
com.xiaomai.enums.LoginAccount
;
...
...
@@ -19,13 +20,13 @@ import org.testng.annotations.Test;
*/
public
class
TestGetDetailById
extends
XMBaseTest
{
MemberTools
memberTools
=
new
MemberTools
();
String
id
;
@BeforeMethod
public
void
beforeTest
(){
xmAppApi
.
setApiModule
(
ApiModule
.
Polar_Clue
)
.
setApiName
(
"API_findDetailById"
)
.
setLoginUser
(
LoginAccount
.
ZYX_DEV
)
.
setLoginUser
(
LoginAccount
.
GYM_PROD
)
.
setTerminal
(
Terminal
.
B
);
dal
.
setCase_owner
(
"zyx"
)
...
...
@@ -37,7 +38,17 @@ public class TestGetDetailById extends XMBaseTest {
String
name
=
"自动化潜在会员"
+
RandomStringUtil
.
randomString
(
3
);
String
phone
=
RandomStringUtil
.
randomMobile
(
"666"
);
String
id
=
memberTools
.
create
(
name
,
phone
).
getString
(
"result"
);
//若全部线索有数据,则取第一条数据;若无数据则新建一个线索
JSONArray
array
=
memberTools
.
searchMember
(
0
,
"POTENTIAL"
).
getJSONObject
(
"result"
).
getJSONArray
(
"records"
);
int
size
=
array
.
size
();
if
(
size
==
0
){
id
=
memberTools
.
create
(
name
,
phone
).
getString
(
"result"
);
}
else
{
id
=
array
.
getJSONObject
(
0
).
getString
(
"id"
);
}
JSONObject
object
=
new
JSONObject
();
object
.
put
(
"memberId"
,
id
);
...
...
@@ -45,7 +56,7 @@ public class TestGetDetailById extends XMBaseTest {
xmAppApi
.
doRequest
(
RequestType
.
JSON
,
params
,
object
.
toString
(),
headers
).
assetsSuccess
(
true
);
JSONObject
res
=
xmAppApi
.
getBodyInJSON
();
Assert
.
assertEquals
(
res
.
getJSONObject
(
"result"
).
getString
(
"
phone"
),
phone
);
Assert
.
assertEquals
(
res
.
getJSONObject
(
"result"
).
getString
(
"
id"
),
id
);
}
...
...
src/main/java/com/xiaomai/cases/polar/clue/TestModifyFeedback.java
0 → 100644
View file @
9af8e2e4
package
com
.
xiaomai
.
cases
.
polar
.
clue
;
import
com.alibaba.fastjson.JSONArray
;
import
com.alibaba.fastjson.JSONObject
;
import
com.xiaomai.enums.ApiModule
;
import
com.xiaomai.enums.LoginAccount
;
import
com.xiaomai.enums.RequestType
;
import
com.xiaomai.enums.Terminal
;
import
com.xiaomai.utils.RandomStringUtil
;
import
com.xiaomai.utils.TimeUtils
;
import
com.xiaomai.utils.XMBaseTest
;
import
com.xiaomai.utils.XMJSONPath
;
import
org.testng.Assert
;
import
org.testng.annotations.BeforeMethod
;
import
org.testng.annotations.Test
;
/**
* @Author zxy
* @Description
* @Date 2024/6/30 18:00
*/
public
class
TestModifyFeedback
extends
XMBaseTest
{
MemberTools
memberTools
=
new
MemberTools
();
String
memberId
;
String
feedbackId
;
String
feedbackId1
;
int
num
;
@BeforeMethod
public
void
beforeTest
(){
xmAppApi
.
setApiModule
(
ApiModule
.
Polar_Clue
)
.
setApiName
(
"API_modifyFeedback"
)
.
setLoginUser
(
LoginAccount
.
GYM_PROD
)
.
setTerminal
(
Terminal
.
B
);
dal
.
setCase_owner
(
"zyx"
)
.
setCase_name
(
Thread
.
currentThread
().
getStackTrace
()[
1
].
getFileName
().
split
(
"\\."
)[
0
]);
super
.
beforeTest
();
}
@Test
(
description
=
"修改跟进"
)
public
void
testModifyFeedback
(){
String
name
=
"自动化潜在会员"
+
RandomStringUtil
.
randomString
(
3
);
String
phone
=
RandomStringUtil
.
randomMobile
(
"666"
);
//若全部线索有数据,则取第一条数据;若无数据则新建一个线索
JSONArray
array
=
memberTools
.
searchMember
(
0
,
"POTENTIAL"
).
getJSONObject
(
"result"
).
getJSONArray
(
"records"
);
int
size
=
array
.
size
();
if
(
size
==
0
){
memberId
=
memberTools
.
create
(
name
,
phone
).
getString
(
"result"
);
}
else
{
memberId
=
array
.
getJSONObject
(
0
).
getString
(
"id"
);
}
//查询该线索的跟进,若存在待跟进/已逾期的跟进任务,则取列表第一条数据;不存在待跟进/已逾期的跟进任务,则新建一条待跟进的跟进任务
JSONArray
jsonArray
=
memberTools
.
listTodoTask
(
memberId
).
getJSONArray
(
"result"
);
num
=
jsonArray
.
size
();
if
(
num
==
0
)
{
feedbackId1
=
memberTools
.
createFeedback
(
memberId
).
getString
(
"result"
);
feedbackId
=
memberTools
.
listTodoTask
(
memberId
).
getJSONArray
(
"result"
).
getJSONObject
(
0
).
getString
(
"id"
);
}
else
{
feedbackId
=
jsonArray
.
getJSONObject
(
0
).
getString
(
"id"
);
}
//修改跟进
JSONObject
object
=
new
JSONObject
();
object
.
put
(
"feedbackId"
,
feedbackId
);
object
.
put
(
"feedbackRemark"
,
"自动化测试修改下次跟进内容"
);
object
.
put
(
"feedbackTime"
,
TimeUtils
.
getTodayEndTime
());
object
.
put
(
"brandId"
,
xmAppApi
.
getLoginInfo
().
getBrandId
());
object
.
put
(
"studioId"
,
xmAppApi
.
getLoginInfo
().
getStudioId
());
object
.
put
(
"operatorId"
,
xmAppApi
.
getLoginInfo
().
getAdminId
());
xmAppApi
.
doRequest
(
RequestType
.
JSON
,
params
,
object
.
toString
(),
headers
).
assetsSuccess
(
true
);
Assert
.
assertEquals
(
memberTools
.
findDetailById
(
feedbackId
).
getJSONObject
(
"result"
).
getString
(
"content"
),
"自动化测试修改下次跟进内容"
);
}
@Test
(
description
=
"删除跟进"
,
priority
=
1
)
public
void
del
()
{
memberTools
.
deleteFeedback
(
feedbackId
);
if
(
feedbackId1
!=
null
)
{
memberTools
.
deleteFeedback
(
feedbackId1
);
}
}
}
src/main/java/com/xiaomai/cases/polar/clue/TestRecycle.java
0 → 100644
View file @
9af8e2e4
package
com
.
xiaomai
.
cases
.
polar
.
clue
;
import
com.alibaba.fastjson.JSONArray
;
import
com.alibaba.fastjson.JSONObject
;
import
com.xiaomai.enums.ApiModule
;
import
com.xiaomai.enums.LoginAccount
;
import
com.xiaomai.enums.RequestType
;
import
com.xiaomai.enums.Terminal
;
import
com.xiaomai.utils.RandomStringUtil
;
import
com.xiaomai.utils.XMBaseTest
;
import
org.testng.Assert
;
import
org.testng.annotations.BeforeMethod
;
import
org.testng.annotations.Test
;
import
java.util.ArrayList
;
import
java.util.List
;
/**
* @Author zxy
* @Description
* @Date 2024/6/30 14:40
*/
public
class
TestRecycle
extends
XMBaseTest
{
MemberTools
memberTools
=
new
MemberTools
();
String
memberId
;
@BeforeMethod
public
void
beforeTest
(){
xmAppApi
.
setApiModule
(
ApiModule
.
Polar_Clue
)
.
setApiName
(
"API_recycle"
)
.
setLoginUser
(
LoginAccount
.
GYM_PROD
)
.
setTerminal
(
Terminal
.
B
);
dal
.
setCase_owner
(
"zyx"
)
.
setCase_name
(
Thread
.
currentThread
().
getStackTrace
()[
1
].
getFileName
().
split
(
"\\."
)[
0
]);
super
.
beforeTest
();
}
@Test
(
description
=
"从私海回收线索"
)
public
void
testRecycle
(){
String
name
=
"自动化潜在会员"
+
RandomStringUtil
.
randomString
(
3
);
String
phone
=
RandomStringUtil
.
randomMobile
(
"666"
);
//查看私有池列表是否有数据,有数据则取第一条数据
JSONArray
array
=
memberTools
.
searchMember
(
1
,
"POTENTIAL"
).
getJSONObject
(
"result"
).
getJSONArray
(
"records"
);
//查看全部线索是否有数据,有数据则取第一条数据
JSONArray
array1
=
memberTools
.
searchMember
(
0
,
"POTENTIAL"
).
getJSONObject
(
"result"
).
getJSONArray
(
"records"
);
int
size
=
array
.
size
();
int
size1
=
array1
.
size
();
if
(
size
!=
0
){
memberId
=
array
.
getJSONObject
(
0
).
getString
(
"id"
);
//查看私有池列表是否有数据,有数据则取第一条数据
}
else
if
(
size
==
0
&&
size1
!=
0
){
memberId
=
array1
.
getJSONObject
(
0
).
getString
(
"id"
);
//私有池无数据,全部线索有数据,则从全部线索取第一条数据
//分配线索至私有池(只有私有池的线索才可以回收)
memberTools
.
distributeToPrivate
(
memberId
);
}
else
{
memberId
=
memberTools
.
create
(
name
,
phone
).
getString
(
"result"
);
//私有池和全部线索都无数据,则新建一个线索
//分配线索至私有池(只有私有池的线索才可以回收)
memberTools
.
distributeToPrivate
(
memberId
);
}
List
memberIds
=
new
ArrayList
();
memberIds
.
add
(
memberId
);
try
{
Thread
.
sleep
(
2000
);
}
catch
(
InterruptedException
e
)
{
e
.
printStackTrace
();
}
JSONObject
object
=
new
JSONObject
();
object
.
put
(
"brandId"
,
xmAppApi
.
getLoginInfo
().
getBrandId
());
object
.
put
(
"studioId"
,
xmAppApi
.
getLoginInfo
().
getStudioId
());
object
.
put
(
"operatorId"
,
xmAppApi
.
getLoginInfo
().
getAdminId
());
object
.
put
(
"memberIds"
,
memberIds
);
object
.
put
(
"destination"
,
"INITIAL"
);
xmAppApi
.
doRequest
(
RequestType
.
JSON
,
params
,
object
.
toString
(),
headers
).
assetsSuccess
(
true
);
JSONObject
res
=
memberTools
.
findStudioMemberDetail
(
memberId
).
getJSONObject
(
"result"
);
Assert
.
assertEquals
(
res
.
getString
(
"saleId"
),
"-1"
);
Assert
.
assertEquals
(
res
.
getString
(
"position"
),
"INITIAL"
);
//线索位置:待分配池
}
}
src/main/java/com/xiaomai/cases/polar/clue/TestRelease.java
0 → 100644
View file @
9af8e2e4
package
com
.
xiaomai
.
cases
.
polar
.
clue
;
import
com.alibaba.fastjson.JSONArray
;
import
com.alibaba.fastjson.JSONObject
;
import
com.xiaomai.enums.ApiModule
;
import
com.xiaomai.enums.LoginAccount
;
import
com.xiaomai.enums.RequestType
;
import
com.xiaomai.enums.Terminal
;
import
com.xiaomai.utils.RandomStringUtil
;
import
com.xiaomai.utils.XMBaseTest
;
import
org.testng.Assert
;
import
org.testng.annotations.BeforeMethod
;
import
org.testng.annotations.Test
;
import
java.util.ArrayList
;
import
java.util.List
;
/**
* @Author zxy
* @Description
* @Date 2024/6/30 14:50
*/
public
class
TestRelease
extends
XMBaseTest
{
MemberTools
memberTools
=
new
MemberTools
();
String
memberId
;
@BeforeMethod
public
void
beforeTest
(){
xmAppApi
.
setApiModule
(
ApiModule
.
Polar_Clue
)
.
setApiName
(
"API_release"
)
.
setLoginUser
(
LoginAccount
.
GYM_PROD
)
.
setTerminal
(
Terminal
.
B
);
dal
.
setCase_owner
(
"zyx"
)
.
setCase_name
(
Thread
.
currentThread
().
getStackTrace
()[
1
].
getFileName
().
split
(
"\\."
)[
0
]);
super
.
beforeTest
();
}
@Test
(
description
=
"销售放弃线索"
)
public
void
teseRelease
(){
String
name
=
"自动化潜在会员"
+
RandomStringUtil
.
randomString
(
3
);
String
phone
=
RandomStringUtil
.
randomMobile
(
"666"
);
//查看私有池列表是否有数据,有数据则取第一条数据
JSONArray
array
=
memberTools
.
searchMember
(
1
,
"POTENTIAL"
).
getJSONObject
(
"result"
).
getJSONArray
(
"records"
);
//查看全部线索是否有数据,有数据则取第一条数据
JSONArray
array1
=
memberTools
.
searchMember
(
0
,
"POTENTIAL"
).
getJSONObject
(
"result"
).
getJSONArray
(
"records"
);
int
size
=
array
.
size
();
int
size1
=
array1
.
size
();
if
(
size
!=
0
){
memberId
=
array
.
getJSONObject
(
0
).
getString
(
"id"
);
//查看私有池列表是否有数据,有数据则取第一条数据
}
else
if
(
size
==
0
&&
size1
!=
0
){
memberId
=
array1
.
getJSONObject
(
0
).
getString
(
"id"
);
//私有池无数据,全部线索有数据,则从全部线索取第一条数据
//分配线索至私有池(只有私有池的线索才可以放弃)
memberTools
.
distributeToPrivate
(
memberId
);
}
else
{
memberId
=
memberTools
.
create
(
name
,
phone
).
getString
(
"result"
);
//私有池和全部线索都无数据,则新建一个线索
//分配线索至私有池(只有私有池的线索才可以放弃)
memberTools
.
distributeToPrivate
(
memberId
);
}
List
memberIds
=
new
ArrayList
();
memberIds
.
add
(
memberId
);
try
{
Thread
.
sleep
(
2000
);
}
catch
(
InterruptedException
e
)
{
e
.
printStackTrace
();
}
JSONObject
object
=
new
JSONObject
();
object
.
put
(
"brandId"
,
xmAppApi
.
getLoginInfo
().
getBrandId
());
object
.
put
(
"studioId"
,
xmAppApi
.
getLoginInfo
().
getStudioId
());
object
.
put
(
"operatorId"
,
xmAppApi
.
getLoginInfo
().
getAdminId
());
object
.
put
(
"memberIds"
,
memberIds
);
object
.
put
(
"destination"
,
"INITIAL"
);
xmAppApi
.
doRequest
(
RequestType
.
JSON
,
params
,
object
.
toString
(),
headers
).
assetsSuccess
(
true
);
try
{
Thread
.
sleep
(
2000
);
}
catch
(
InterruptedException
e
)
{
e
.
printStackTrace
();
}
JSONObject
res
=
memberTools
.
findStudioMemberDetail
(
memberId
).
getJSONObject
(
"result"
);
Assert
.
assertEquals
(
res
.
getString
(
"saleId"
),
"-1"
);
Assert
.
assertEquals
(
res
.
getString
(
"position"
),
"INITIAL"
);
//线索位置:待分配池
}
}
src/main/java/com/xiaomai/cases/polar/clue/TestRestore.java
0 → 100644
View file @
9af8e2e4
package
com
.
xiaomai
.
cases
.
polar
.
clue
;
import
com.alibaba.fastjson.JSONArray
;
import
com.alibaba.fastjson.JSONObject
;
import
com.xiaomai.enums.ApiModule
;
import
com.xiaomai.enums.LoginAccount
;
import
com.xiaomai.enums.RequestType
;
import
com.xiaomai.enums.Terminal
;
import
com.xiaomai.utils.RandomStringUtil
;
import
com.xiaomai.utils.XMBaseTest
;
import
org.testng.Assert
;
import
org.testng.annotations.BeforeMethod
;
import
org.testng.annotations.Test
;
import
java.util.ArrayList
;
import
java.util.List
;
/**
* @Author zxy
* @Description
* @Date 2024/6/30 16:15
*/
public
class
TestRestore
extends
XMBaseTest
{
MemberTools
memberTools
=
new
MemberTools
();
String
memberId
;
@BeforeMethod
public
void
beforeTest
(){
xmAppApi
.
setApiModule
(
ApiModule
.
Polar_Clue
)
.
setApiName
(
"API_restore"
)
.
setLoginUser
(
LoginAccount
.
GYM_PROD
)
.
setTerminal
(
Terminal
.
B
);
dal
.
setCase_owner
(
"zyx"
)
.
setCase_name
(
Thread
.
currentThread
().
getStackTrace
()[
1
].
getFileName
().
split
(
"\\."
)[
0
]);
super
.
beforeTest
();
}
@Test
(
description
=
"还原线索"
)
public
void
testRecycle
(){
String
name
=
"自动化潜在会员"
+
RandomStringUtil
.
randomString
(
3
);
String
phone
=
RandomStringUtil
.
randomMobile
(
"666"
);
//查看回收站列表是否有数据,有数据则取第一条数据
JSONArray
array
=
memberTools
.
searchMember
(
3
,
"POTENTIAL"
).
getJSONObject
(
"result"
).
getJSONArray
(
"records"
);
//查看全部线索是否有数据,有数据则取第一条数据
JSONArray
array1
=
memberTools
.
searchMember
(
0
,
"POTENTIAL"
).
getJSONObject
(
"result"
).
getJSONArray
(
"records"
);
int
size
=
array
.
size
();
int
size1
=
array1
.
size
();
if
(
size
!=
0
){
memberId
=
array
.
getJSONObject
(
0
).
getString
(
"id"
);
//查看回收站列表是否有数据,有数据则取第一条数据
}
else
if
(
size
==
0
&&
size1
!=
0
){
memberId
=
array1
.
getJSONObject
(
0
).
getString
(
"id"
);
//回收站无数据,全部线索有数据,则从全部线索取第一条数据
//线索移至回收站(只有回收站的线索才可以还原)
memberTools
.
disable
(
memberId
);
}
else
{
memberId
=
memberTools
.
create
(
name
,
phone
).
getString
(
"result"
);
//回收站和全部线索都无数据,则新建一个线索
//线索移至回收站(只有回收站的线索才可以还原)
memberTools
.
disable
(
memberId
);
}
List
memberIds
=
new
ArrayList
();
memberIds
.
add
(
memberId
);
try
{
Thread
.
sleep
(
2000
);
}
catch
(
InterruptedException
e
)
{
e
.
printStackTrace
();
}
JSONObject
object
=
new
JSONObject
();
object
.
put
(
"brandId"
,
xmAppApi
.
getLoginInfo
().
getBrandId
());
object
.
put
(
"studioId"
,
xmAppApi
.
getLoginInfo
().
getStudioId
());
object
.
put
(
"operatorId"
,
xmAppApi
.
getLoginInfo
().
getAdminId
());
object
.
put
(
"destination"
,
"PUBLIC_RESOURCE"
);
object
.
put
(
"memberIds"
,
memberIds
);
xmAppApi
.
doRequest
(
RequestType
.
JSON
,
params
,
object
.
toString
(),
headers
).
assetsSuccess
(
true
);
JSONObject
res
=
memberTools
.
findStudioMemberDetail
(
memberId
).
getJSONObject
(
"result"
);
Assert
.
assertEquals
(
res
.
getString
(
"saleId"
),
"-1"
);
Assert
.
assertEquals
(
res
.
getString
(
"position"
),
"PUBLIC_RESOURCE"
);
//线索位置:公有池
}
}
src/main/java/com/xiaomai/cases/polar/clue/TestSearchMember.java
View file @
9af8e2e4
...
...
@@ -24,7 +24,7 @@ public class TestSearchMember extends XMBaseTest {
xmAppApi
.
setApiModule
(
ApiModule
.
Polar_Clue
)
.
setApiName
(
"API_searchMember"
)
.
setLoginUser
(
LoginAccount
.
ZYX_DEV
)
.
setLoginUser
(
LoginAccount
.
GYM_PROD
)
.
setTerminal
(
Terminal
.
B
);
dal
.
setCase_owner
(
"zyx"
)
...
...
@@ -44,9 +44,15 @@ public class TestSearchMember extends XMBaseTest {
object
.
put
(
"current"
,
0
);
object
.
put
(
"size"
,
20
);
object
.
put
(
"brandId"
,
xmAppApi
.
getLoginInfo
().
getBrandId
());
object
.
put
(
"studioFilter"
,
studioFilter
);
object
.
put
(
"studioId"
,
xmAppApi
.
getLoginInfo
().
getStudioId
());
object
.
put
(
"operatorId"
,
xmAppApi
.
getLoginInfo
().
getAdminId
());
object
.
put
(
"saleId"
,
xmAppApi
.
getLoginInfo
().
getAdminId
());
object
.
put
(
"position"
,
"PRIVATE_RESOURCE"
);
object
.
put
(
"statusList"
,
statusList
);
object
.
put
(
"searchType"
,
"CLUE_PRIVATE"
);
xmAppApi
.
doRequest
(
RequestType
.
JSON
,
params
,
object
.
toString
(),
headers
).
assetsSuccess
(
true
);
//校验放在了创建线索case中
}
}
src/main/java/com/xiaomai/cases/polar/clue/TestSummaryFeedback.java
0 → 100644
View file @
9af8e2e4
package
com
.
xiaomai
.
cases
.
polar
.
clue
;
import
com.alibaba.fastjson.JSONObject
;
import
com.xiaomai.enums.ApiModule
;
import
com.xiaomai.enums.LoginAccount
;
import
com.xiaomai.enums.RequestType
;
import
com.xiaomai.enums.Terminal
;
import
com.xiaomai.utils.XMBaseTest
;
import
org.testng.annotations.BeforeMethod
;
import
org.testng.annotations.Test
;
/**
* @Author zxy
* @Description
* @Date 2024/7/1 10:52
*/
public
class
TestSummaryFeedback
extends
XMBaseTest
{
@BeforeMethod
public
void
beforeTest
(){
xmAppApi
.
setApiModule
(
ApiModule
.
Polar_Clue
)
.
setApiName
(
"API_summaryFeedback"
)
.
setLoginUser
(
LoginAccount
.
GYM_PROD
)
.
setTerminal
(
Terminal
.
B
);
dal
.
setCase_owner
(
"zyx"
)
.
setCase_name
(
Thread
.
currentThread
().
getStackTrace
()[
1
].
getFileName
().
split
(
"\\."
)[
0
]);
super
.
beforeTest
();
}
@Test
(
description
=
"统计今日待跟进&已逾期的任务数"
)
public
void
testSummaryFeedback
(){
JSONObject
object
=
new
JSONObject
();
object
.
put
(
"brandId"
,
xmAppApi
.
getLoginInfo
().
getBrandId
());
object
.
put
(
"studioId"
,
xmAppApi
.
getLoginInfo
().
getStudioId
());
object
.
put
(
"operatorId"
,
xmAppApi
.
getLoginInfo
().
getAdminId
());
xmAppApi
.
doRequest
(
RequestType
.
JSON
,
params
,
object
.
toString
(),
headers
).
assetsSuccess
(
true
);
}
}
src/main/java/com/xiaomai/cases/polar/clue/TestUpdate.java
View file @
9af8e2e4
package
com
.
xiaomai
.
cases
.
polar
.
clue
;
import
com.alibaba.fastjson.JSONArray
;
import
com.alibaba.fastjson.JSONObject
;
import
com.xiaomai.enums.ApiModule
;
import
com.xiaomai.enums.LoginAccount
;
...
...
@@ -19,12 +20,12 @@ import org.testng.annotations.Test;
*/
public
class
TestUpdate
extends
XMBaseTest
{
MemberTools
memberTools
=
new
MemberTools
();
String
id
;
@BeforeMethod
public
void
beforeTest
(){
xmAppApi
.
setApiModule
(
ApiModule
.
Polar_Clue
)
.
setApiName
(
"API_forceUpdate"
)
.
setLoginUser
(
LoginAccount
.
ZYX_DEV
)
.
setLoginUser
(
LoginAccount
.
GYM_PROD
)
.
setTerminal
(
Terminal
.
B
);
dal
.
setCase_owner
(
"zyx"
)
...
...
@@ -37,8 +38,15 @@ public class TestUpdate extends XMBaseTest {
String
name
=
"自动化潜在会员"
+
RandomStringUtil
.
randomString
(
3
);
String
phone
=
RandomStringUtil
.
randomMobile
(
"666"
);
//创建潜在会员
String
id
=
memberTools
.
create
(
name
,
phone
).
getString
(
"result"
);
//若全部线索有数据,则取第一条数据;若无数据则新建一个线索
JSONArray
array
=
memberTools
.
searchMember
(
0
,
"POTENTIAL"
).
getJSONObject
(
"result"
).
getJSONArray
(
"records"
);
int
size
=
array
.
size
();
if
(
size
==
0
){
id
=
memberTools
.
create
(
name
,
phone
).
getString
(
"result"
);
}
else
{
id
=
array
.
getJSONObject
(
0
).
getString
(
"id"
);
}
//编辑会员时需先校验当前场馆及同品牌下的其他场馆是否存在相同手机号的线索
Boolean
duplicate
=
memberTools
.
checkPhoneDuplicate
(
phone
,
id
).
getJSONObject
(
"result"
).
getBoolean
(
"duplicate"
);
...
...
@@ -66,6 +74,7 @@ public class TestUpdate extends XMBaseTest {
object
.
put
(
"emergencyContactPerson"
,
"紧急联系人"
+
RandomStringUtil
.
randomString
(
3
));
object
.
put
(
"emergencyContactPhone"
,
RandomStringUtil
.
randomMobile
(
"999"
));
object
.
put
(
"resourceId"
,
"12"
);
object
.
put
(
"intention"
,
"LOW"
);
object
.
put
(
"remark"
,
"这是备注这是备注这是备注这是备注这是备注这是备注这是备注这是备注这是备注这是备注"
);
object
.
put
(
"memberId"
,
id
);
...
...
src/main/java/com/xiaomai/cases/polar/member/TestAppointCoach.java
0 → 100644
View file @
9af8e2e4
package
com
.
xiaomai
.
cases
.
polar
.
member
;
import
com.alibaba.fastjson.JSONArray
;
import
com.alibaba.fastjson.JSONObject
;
import
com.xiaomai.cases.polar.clue.MemberTools
;
import
com.xiaomai.cases.polar.course.CourseTools
;
import
com.xiaomai.cases.polar.finance.order.OrderTools
;
import
com.xiaomai.cases.polar.memberCard.CardTools
;
import
com.xiaomai.cases.polar.setting.courseCategory.CourseCategoryTools
;
import
com.xiaomai.enums.ApiModule
;
import
com.xiaomai.enums.LoginAccount
;
import
com.xiaomai.enums.RequestType
;
import
com.xiaomai.enums.Terminal
;
import
com.xiaomai.utils.RandomStringUtil
;
import
com.xiaomai.utils.TimeUtils
;
import
com.xiaomai.utils.XMBaseTest
;
import
org.testng.Assert
;
import
org.testng.annotations.BeforeMethod
;
import
org.testng.annotations.Test
;
import
javax.annotation.Resource
;
import
java.util.ArrayList
;
import
java.util.List
;
/**
* @Author zxy
* @Description
* @Date 2024/6/28 17:13
*/
public
class
TestAppointCoach
extends
XMBaseTest
{
Tools
tools
=
new
Tools
();
MemberTools
memberTools
=
new
MemberTools
();
String
memberId
;
String
courseId
;
CardTools
cardTools
=
new
CardTools
();
OrderTools
orderTools
=
new
OrderTools
();
@Resource
(
name
=
"courseCategoryTools"
)
CourseCategoryTools
courseCategoryTools
;
@Resource
(
name
=
"courseTools"
)
CourseTools
courseTools
;
@BeforeMethod
public
void
beforeTest
(){
xmAppApi
.
setApiModule
(
ApiModule
.
Polar_Clue
)
.
setApiName
(
"API_appointCoach"
)
.
setLoginUser
(
LoginAccount
.
GYM_PROD
)
.
setTerminal
(
Terminal
.
B
);
dal
.
setCase_owner
(
"zyx"
)
.
setCase_name
(
Thread
.
currentThread
().
getStackTrace
()[
1
].
getFileName
().
split
(
"\\."
)[
0
]);
super
.
beforeTest
();
}
@Test
(
description
=
"会员指派跟进教练"
)
public
void
testAppointCoach
(){
String
name
=
"自动化潜在会员"
+
RandomStringUtil
.
randomString
(
3
);
String
phone
=
RandomStringUtil
.
randomMobile
(
"666"
);
String
categoryId
=
courseCategoryTools
.
getCourseCategoryPage
(
"瑜伽"
);
courseId
=
courseTools
.
getPersonalOrGroupCourseId
(
"GROUP"
,
"空中瑜伽团课课程"
,
categoryId
,
"STUDIO"
,
""
,
2
,
1
).
getString
(
0
);
//查看是否有存量的正式和流失会员,若有则取存量数据,没有则查看是否有存量的潜在会员,若有则给潜在会员购卡变为正式会员,没有存量的则新建潜在会员后再购卡变为正式会员
JSONArray
array
=
tools
.
search
(
"NORMAL"
,
"NORMAL"
).
getJSONObject
(
"result"
).
getJSONArray
(
"records"
);
//查看是否有存量的流失会员
JSONArray
array1
=
tools
.
search
(
"HISTORY"
,
"HISTORY"
).
getJSONObject
(
"result"
).
getJSONArray
(
"records"
);
int
size
=
array
.
size
();
int
size1
=
array1
.
size
();
if
(
size
!=
0
){
memberId
=
array
.
getJSONObject
(
0
).
getString
(
"id"
);
}
else
if
(
size
==
0
&&
size1
!=
0
){
memberId
=
array1
.
getJSONObject
(
0
).
getString
(
"id"
);
}
else
{
memberId
=
memberTools
.
create
(
name
,
phone
).
getString
(
"result"
);
JSONArray
listUserReservableBenefit
=
cardTools
.
listUserReservableBenefit
(
courseId
,
"GROUP_CLASS"
,
"MEMBER"
,
memberId
,
TimeUtils
.
getTodayTime
());
if
(
listUserReservableBenefit
.
size
()
==
0
)
{
// 购买适用的会员卡
signOrder
(
courseId
,
memberId
);
try
{
Thread
.
sleep
(
2000
);
}
catch
(
InterruptedException
e
)
{
throw
new
RuntimeException
(
e
);
}
listUserReservableBenefit
=
cardTools
.
listUserReservableBenefit
(
courseId
,
"GROUP_CLASS"
,
"MEMBER"
,
memberId
,
TimeUtils
.
getTodayTime
());
}
}
List
memberIds
=
new
ArrayList
();
memberIds
.
add
(
memberId
);
List
memberStatusList
=
new
ArrayList
();
String
coachId
=
memberTools
.
fetchStaff
(
"AS_COACH"
,
memberStatusList
,
""
).
getJSONObject
(
"result"
).
getJSONArray
(
"records"
).
getJSONObject
(
0
).
getString
(
"id"
);
JSONObject
object
=
new
JSONObject
();
object
.
put
(
"memberIds"
,
memberIds
);
object
.
put
(
"coachId"
,
coachId
);
object
.
put
(
"studioId"
,
xmAppApi
.
getLoginInfo
().
getStudioId
());
object
.
put
(
"brandId"
,
xmAppApi
.
getLoginInfo
().
getBrandId
());
object
.
put
(
"operatorId"
,
xmAppApi
.
getLoginInfo
().
getAdminId
());
xmAppApi
.
doRequest
(
RequestType
.
JSON
,
params
,
object
.
toString
(),
headers
).
assetsSuccess
(
true
);
Assert
.
assertEquals
(
memberTools
.
findStudioMemberDetail
(
memberId
).
getJSONObject
(
"result"
).
getString
(
"coachId"
),
coachId
);
}
// 买卡
public
void
signOrder
(
String
courseId
,
String
memberId
){
// 查询存量的卡
JSONObject
fetchPageOfMemberCard
=
cardTools
.
fetchPageOfMemberCard
(
courseId
);
int
total
=
Integer
.
parseInt
(
fetchPageOfMemberCard
.
getString
(
"total"
));
String
cardId
=
""
;
int
quantity
=
0
;
float
price
=
0
;
int
validPeriod
=
0
;
if
(
total
==
0
)
{
cardId
=
cardTools
.
memberCardCreate
(
"约课使用会员卡"
+
TimeUtils
.
getCurrentTime
()).
getString
(
"result"
);
}
cardId
=
fetchPageOfMemberCard
.
getJSONArray
(
"records"
).
getJSONObject
(
0
).
getString
(
"id"
);
quantity
=
Integer
.
parseInt
(
fetchPageOfMemberCard
.
getJSONArray
(
"records"
).
getJSONObject
(
0
).
getString
(
"balance"
));
price
=
Float
.
parseFloat
(
fetchPageOfMemberCard
.
getJSONArray
(
"records"
).
getJSONObject
(
0
).
getString
(
"price"
));
validPeriod
=
Integer
.
parseInt
(
fetchPageOfMemberCard
.
getJSONArray
(
"records"
).
getJSONObject
(
0
).
getString
(
"validPeriod"
));
//获取签单要用的卡快照id
String
latestSnapshotId
=
orderTools
.
fetchDetailById
(
cardId
,
xmAppApi
.
getLoginInfo
().
getBrandId
(),
xmAppApi
.
getLoginInfo
().
getStudioId
(),
xmAppApi
.
getLoginInfo
().
getAdminId
()).
getJSONObject
(
"result"
).
getString
(
"latestSnapshotId"
);
//检查会员对该卡是否超出购买上限
boolean
limitResult
=
orderTools
.
checkAllowPurchase
(
"MEMBER_CARD"
,
cardId
,
cardId
,
"1"
,
xmAppApi
.
getLoginInfo
().
getBrandId
(),
xmAppApi
.
getLoginInfo
().
getStudioId
(),
xmAppApi
.
getLoginInfo
().
getAdminId
()).
getBoolean
(
"success"
);
try
{
Thread
.
sleep
(
1000
);
}
catch
(
InterruptedException
e
)
{
throw
new
RuntimeException
(
e
);
}
if
(
limitResult
==
true
){
//创建订单
JSONObject
orderResult
=
orderTools
.
signOrder
(
cardId
,
latestSnapshotId
,
quantity
,
price
,
validPeriod
,
latestSnapshotId
,
"PURCHASE"
,
memberId
,
price
,
price
,
"1"
);
}
}
}
src/main/java/com/xiaomai/enums/LoginAccount.java
View file @
9af8e2e4
...
...
@@ -9,6 +9,7 @@ public class LoginAccount {
public
static
String
XYM_DEV
=
"xym_dev"
;
public
static
String
YFF_DEV
=
"yff_dev"
;
public
static
String
ZYX_DEV
=
"zyx_dev"
;
public
static
String
ZYX1_DEV
=
"zyx1_dev"
;
public
static
String
ADU_PROD
=
"gym_prod_du"
;
public
static
String
GYM_PROD
=
"gym_prod"
;
...
...
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