Commit fff239e8 by xyy

Merge remote-tracking branch 'origin/master'

# Conflicts:
#	src/main/java/com/xiaomai/enums/LoginAccount.java
parents 34c81d07 ea01aad8
<?xml version="1.0" encoding="UTF-8"?>
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
<suite name="约课case"> <!-- 起一个好听且唯一的名字-->
<test name="约课模块测试" preserve-order="true" verbose="3"> <!-- 再起一个听且唯一的名字 -->
<packages>
<package name="com.xiaomai.cases.lunar.reserve.*"></package> <!-- 添加自己想要集成测试的case 范围自己定 -->
</packages>
</test>
<listeners>
<listener class-name="com.xiaomai.client.RetryListener" />
<listener class-name="com.xiaomai.client.TestListener" />
<listener class-name="com.xiaomai.client.ExtentTestNGIReporterListener"/>
</listeners>
</suite>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
<suite name="订单case"> <!-- 起一个好听且唯一的名字-->
<test name="订单测试" preserve-order="true" verbose="3"> <!-- 再起一个听且唯一的名字 -->
<packages>
<package name="com.xiaomai.cases.lunar.order.*"></package> <!-- 添加自己想要集成测试的case 范围自己定 -->
</packages>
</test>
<listeners>
<listener class-name="com.xiaomai.client.RetryListener" />
<listener class-name="com.xiaomai.client.TestListener" />
<listener class-name="com.xiaomai.client.ExtentTestNGIReporterListener"/>
</listeners>
</suite>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
<suite name="小程序装修case"> <!-- 起一个好听且唯一的名字-->
<test name="小程序装修测试" preserve-order="true" verbose="3"> <!-- 再起一个听且唯一的名字 -->
<packages>
<package name="com.xiaomai.cases.polar.applet.*"></package> <!-- 添加自己想要集成测试的case 范围自己定 -->
</packages>
</test>
<listeners>
<listener class-name="com.xiaomai.client.RetryListener" />
<listener class-name="com.xiaomai.client.TestListener" />
<listener class-name="com.xiaomai.client.ExtentTestNGIReporterListener"/>
</listeners>
</suite>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
<suite name="约课case"> <!-- 起一个好听且唯一的名字-->
<test name="约课模块测试" preserve-order="true" verbose="3"> <!-- 再起一个听且唯一的名字 -->
<packages>
<package name="com.xiaomai.cases.polar.reserve.*"></package> <!-- 添加自己想要集成测试的case 范围自己定 -->
</packages>
</test>
<listeners>
<listener class-name="com.xiaomai.client.RetryListener" />
<listener class-name="com.xiaomai.client.TestListener" />
<listener class-name="com.xiaomai.client.ExtentTestNGIReporterListener"/>
</listeners>
</suite>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd"> <!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
<suite name="通用设置场景case"> <!-- 起一个好听且唯一的名字--> <suite name="线索管理case"> <!-- 起一个好听且唯一的名字-->
<test name="通用设置模块测试" preserve-order="true" verbose="3"> <!-- 再起一个听且唯一的名字 --> <test name="线索管理测试" preserve-order="true" verbose="3"> <!-- 再起一个听且唯一的名字 -->
<packages> <packages>
<package name="com.xiaomai.cases.polar.clue.*"></package> <!-- 添加自己想要集成测试的case 范围自己定 --> <package name="com.xiaomai.cases.polar.clue.*"></package> <!-- 添加自己想要集成测试的case 范围自己定 -->
</packages> </packages>
......
...@@ -45,6 +45,10 @@ public abstract class BaseTestImpl extends XMBaseTest implements BaseTestInterfa ...@@ -45,6 +45,10 @@ public abstract class BaseTestImpl extends XMBaseTest implements BaseTestInterfa
return this.caseOwner; return this.caseOwner;
} }
public void setLoginUser(String loginUser) {
this.loginUser = loginUser;
}
public void setTestInfo(String apiModuleName, String loginUser, String terminal, String caseOwner) { public void setTestInfo(String apiModuleName, String loginUser, String terminal, String caseOwner) {
this.apiModuleName = apiModuleName; this.apiModuleName = apiModuleName;
this.loginUser = loginUser; this.loginUser = loginUser;
......
package com.xiaomai.cases.lunar.minmembercard;
import com.alibaba.fastjson.JSONObject;
import com.xiaomai.client.DataUserInfo;
import com.xiaomai.enums.ApiModule;
import com.xiaomai.enums.RequestType;
import com.xiaomai.enums.Terminal;
import com.xiaomai.utils.XMBaseTest;
public class MinCardTools extends XMBaseTest {
/**
* @param
* @description:小程序查看在售会员卡
* @author: yangjian
**/
public JSONObject fetchOnSaleMemberCard(String title, DataUserInfo...dataUserInfos) {
dataApi.setApiModule(ApiModule.Lunar_Card)
.setApiName("API_fetchOnSaleMemberCard")
.setTerminal(Terminal.minApp);
super.beforeDataRequest(dataUserInfos);
JSONObject jsonObject = new JSONObject();
//jsonObject.put("memberCardIds","");
jsonObject.put("current",0);
jsonObject.put("size",20);
jsonObject.put("title",title);
jsonObject.put("brandId",xmAppApi.getLoginInfo().getBrandId());
jsonObject.put("studioId",xmAppApi.getLoginInfo().getStudioId());
dataApi.doRequest(RequestType.JSON, dataparams, jsonObject.toJSONString(), dataheadrs).assetsSuccess(true);
JSONObject response=dataApi.getBodyInJSON();
return response;
}
}
package com.xiaomai.cases.lunar.order;
import com.alibaba.fastjson.JSONObject;
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.XMBaseTest;
public class OrderCTools extends XMBaseTest {
/**
* @param
* @description:C端购买0元卡
* @param activatePattern [ "即时生效", "首次使用生效", "指定日期生效" ] 激活方式[ PURCHASE, FIRST_USED, SPECIFIC_DATE ]
* @param cardId 卡id
* @param cardSnapshotId:卡快照id
* @param memberId:会员id
* @param receivableAmount:应收金额
* @author: yangfangfang
**/
public JSONObject purchaseCard(String activatePattern, String cardId,String cardSnapshotId,String memberId,float receivableAmount,DataUserInfo...dataUserInfos) {
dataApi.setApiModule(ApiModule.Lunar_Order)
.setApiName("API_purchaseCard")
.setTerminal(Terminal.minApp);
super.beforeDataRequest(dataUserInfos);
JSONObject jsonObject = new JSONObject();
jsonObject.put("activatePattern",activatePattern);
jsonObject.put("cardId",cardId);
jsonObject.put("cardSnapshotId",cardSnapshotId);
jsonObject.put("memberId",memberId);
jsonObject.put("memo", RandomStringUtil.randomString(6));
jsonObject.put("receivableAmount",receivableAmount);
jsonObject.put("studioId",dataApi.getLoginInfo().getStudioId());
jsonObject.put("objectId", RandomStringUtil.randomString(16));
dataApi.doRequest(RequestType.JSON, dataparams, jsonObject.toJSONString(), dataheadrs).assetsSuccess(true);
JSONObject response=dataApi.getBodyInJSON();
return response;
}
/**
* @param
* @description:获取C端订单详情
* @param id 订单ID
* @author: yangfangfang
**/
public JSONObject getDetail(String id,DataUserInfo...dataUserInfos) {
dataApi.setApiModule(ApiModule.Lunar_Order)
.setApiName("API_getDetail")
.setTerminal(Terminal.minApp);
super.beforeDataRequest(dataUserInfos);
JSONObject jsonObject = new JSONObject();
jsonObject.put("id",id);
dataApi.doRequest(RequestType.JSON, dataparams, jsonObject.toJSONString(), dataheadrs).assetsSuccess(true);
JSONObject response=dataApi.getBodyInJSON();
return response;
}
/**
* @param
* @description:获取C端我的订单列表
* @param receiverId 会员ID
* @author: yangfangfang
**/
public JSONObject pageOrder(String receiverId,DataUserInfo...dataUserInfos) {
dataApi.setApiModule(ApiModule.Lunar_Order)
.setApiName("API_pageOrder")
.setTerminal(Terminal.minApp);
super.beforeDataRequest(dataUserInfos);
JSONObject jsonObject = new JSONObject();
jsonObject.put("current",0);
jsonObject.put("size",20);
jsonObject.put("receiverId",receiverId);
dataApi.doRequest(RequestType.JSON, dataparams, jsonObject.toJSONString(), dataheadrs).assetsSuccess(true);
JSONObject response=dataApi.getBodyInJSON();
return response;
}
}
package com.xiaomai.cases.lunar.order;
import com.alibaba.fastjson.JSONObject;
import com.xiaomai.basetest.BaseTestImpl;
import com.xiaomai.cases.polar.finance.order.OrderTools;
import com.xiaomai.cases.polar.memberCard.CardTools;
import com.xiaomai.client.DataUserInfo;
import com.xiaomai.enums.ApiModule;
import com.xiaomai.enums.LoginAccount;
import com.xiaomai.enums.RequestType;
import com.xiaomai.enums.Terminal;
import com.xiaomai.utils.TimeUtils;
import org.testng.Assert;
import org.testng.annotations.BeforeClass;
import org.testng.annotations.Test;
import java.math.BigDecimal;
public class TestListByVoucherId extends BaseTestImpl {
String cardId;
OrderTools orderTools=new OrderTools();
CardTools cardTools=new CardTools();
@BeforeClass
public void beforeTest(){
setTestInfo(ApiModule.Lunar_Order,"API_listByVoucherId", LoginAccount.GYM_MINIAPPC, Terminal.minApp,"yff");
super.beforeTest();
}
@Test(description = "C端获取订单支付记录")
public void testListByVoucherId() {
//切换B端购买实付金额>0的订单,否则0元单,看不了订单-支付记录.而且memberId只能用B/C通用的一个会员:1805435813468483586-GYM_MINIAPPC
DataUserInfo dataUserInfo = new DataUserInfo();
dataUserInfo.setTerminal(Terminal.B);
dataUserInfo.setLoginUser(LoginAccount.GYM_PROD);
//获取会员卡信息
//获取会员卡列表,没有则新建一个
int cardTotal = Integer.parseInt(orderTools.fetchPageOfMemberCard("次卡").getJSONObject("result").getString("total"));
if (cardTotal == 0) {
cardId = cardTools.memberCardCreate("次卡-创建订单会员卡"+ TimeUtils.getCurrentTime()).getString("result");
}
JSONObject memberCard=orderTools.fetchPageOfMemberCard("次卡");
cardId=memberCard.getJSONObject("result").getJSONArray("records").getJSONObject(0).getString("id");
BigDecimal quantity= new BigDecimal(memberCard.getJSONObject("result").getJSONArray("records").getJSONObject(0).getString("balance"));
float price= Float.parseFloat(memberCard.getJSONObject("result").getJSONArray("records").getJSONObject(0).getString("price"));
int validPeriod= Integer.parseInt(memberCard.getJSONObject("result").getJSONArray("records").getJSONObject(0).getString("validPeriod"));
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
throw new RuntimeException(e);
}
//获取签单要用的卡快照id
String latestSnapshotId=orderTools.fetchDetailById(cardId,xmAppApi.getLoginInfo().getBrandId(),xmAppApi.getLoginInfo().getStudioId(),xmAppApi.getLoginInfo().getAdminId()).getJSONObject("result").getString("latestSnapshotId");
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
throw new RuntimeException(e);
}
//检查会员对该卡是否超出购买上限
boolean limitResult=orderTools.checkAllowPurchase("MEMBER_CARD",cardId,"1805435813468483586","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, price / 2, "PURCHASE",
"MEMBER_CARD", "1805435813468483586", price - price / 2, price - price / 2, "1", dataUserInfo);
String success = orderResult.getString("success");
String getDetailId = orderResult.getString("result");
Assert.assertEquals(success, "true", "创建签单订单失败");
try {
Thread.sleep(3000);
} catch (InterruptedException e) {
throw new RuntimeException(e);
}
//获取B端订单详情
JSONObject getDetailResult = orderTools.getDetail(getDetailId, dataUserInfo);
String id = getDetailResult.getJSONObject("result").getString("id");//订单ID
String businessNo = getDetailResult.getJSONObject("result").getString("businessNo");//订单号
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
throw new RuntimeException(e);
}
//切换C端看B端创建的非0元单的支付记录
DataUserInfo info = new DataUserInfo();
info.setTerminal(Terminal.minApp);
info.setLoginUser(LoginAccount.GYM_MINIAPPC);
//获取订单详情-支付记录
JSONObject ListByVoucherId = new JSONObject();
ListByVoucherId.put("id", id);
xmAppApi.doRequest(RequestType.JSON, params, ListByVoucherId.toString(), headers).assetsSuccess(true);
JSONObject ListByVoucherIdResponse = xmAppApi.getBodyInJSON();
String ListByVoucherIdSuccess = ListByVoucherIdResponse.getString("success");
String ListByVoucherIdVoucherBusinessNo = ListByVoucherIdResponse.getJSONArray("result").getJSONObject(0).getString("businessNo");//订单号
Assert.assertEquals(ListByVoucherIdSuccess, "true", "C端获取B端创建非0元单的订单详情-支付记录失败");
Assert.assertEquals(ListByVoucherIdVoucherBusinessNo.equals(businessNo), true, "C端获取订单详情-支付记录失败的订单与B端创建订单非一个订单");
}
}
}
package com.xiaomai.cases.lunar.order;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.xiaomai.basetest.BaseTestImpl;
import com.xiaomai.cases.lunar.minmembercard.MinCardTools;
import com.xiaomai.cases.lunar.user.UserTools;
import com.xiaomai.cases.polar.finance.order.OrderTools;
import com.xiaomai.cases.polar.memberCard.CardTools;
import com.xiaomai.client.DataUserInfo;
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 org.testng.Assert;
import org.testng.annotations.BeforeClass;
import org.testng.annotations.Test;
import java.math.BigDecimal;
public class TestPurchaseCard extends BaseTestImpl {
String memberId;
String cardId;
MinCardTools minCardTools=new MinCardTools();
UserTools userTools=new UserTools();
OrderCTools orderCTools=new OrderCTools();
OrderTools orderTools=new OrderTools();
CardTools cardTools=new CardTools();
@BeforeClass
public void beforeTest(){
setTestInfo(ApiModule.Lunar_Order,"API_purchaseCard", LoginAccount.GYM_MINIAPPC, Terminal.minApp,"yff");
super.beforeTest();
}
@Test(description = "C端购买订单")
public void testPurchaseCard(){
//获取会员信息
memberId = userTools.getMemberInfo().getString("memberId");
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
throw new RuntimeException(e);
}
//获取会员卡
cardId=minCardTools.fetchOnSaleMemberCard("C端0元会员卡自动化").getJSONObject("result").getJSONArray("records").getJSONObject(0).getString("id");
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
throw new RuntimeException(e);
}
JSONObject jsonObject = new JSONObject();
jsonObject.put("activatePattern","PURCHASE");
jsonObject.put("cardId",cardId);
jsonObject.put("cardSnapshotId",cardId);
jsonObject.put("memberId",memberId);
jsonObject.put("memo", RandomStringUtil.randomString(6));
jsonObject.put("receivableAmount",0);
jsonObject.put("studioId",dataApi.getLoginInfo().getStudioId());
jsonObject.put("objectId", RandomStringUtil.randomString(16));
xmAppApi.doRequest(RequestType.JSON,params,jsonObject.toString(),headers).assetsSuccess(true);
JSONObject response=xmAppApi.getBodyInJSON();
String success=response.getString("success");
String signId=response.getString("result");//订单ID
Assert.assertEquals(success,"true","C端创建0元签单失败");
try {
Thread.sleep(3000);
} catch (InterruptedException e) {
throw new RuntimeException(e);
}
//校验C端订单详情
JSONObject getDetail=orderCTools.getDetail(signId);
String getDetailId=getDetail.getJSONObject("result").getString("id");
String getDetailBusinessNo=getDetail.getJSONObject("result").getString("businessNo");
String getDetailState=getDetail.getJSONObject("result").getString("state");
String getDetailSource=getDetail.getJSONObject("result").getString("source");
String getDetailSuccess=getDetail.getString("success");
Assert.assertEquals(getDetailSuccess,"true","获取创建的签单订单详情失败");
Assert.assertEquals(getDetailId.equals(signId),true,"获取签单订单详情和创建的签单订单ID不一致");
Assert.assertEquals(getDetailState,"PAID","创建签单订单成功,但订单状态不是已完成");
Assert.assertEquals(getDetailSource,"ONLINE_MALL","C端创建的签单订单,订单来源非会员创建");
//校验C端订单列表
JSONObject pageOrder=orderCTools.pageOrder(memberId);
int pageOrderPages=Integer.parseInt(pageOrder.getJSONObject("result").getString("pages"));
int pageOrderTotal=Integer.parseInt(pageOrder.getJSONObject("result").getString("total"));
for(int k=0; k == pageOrderPages+1; k++){
int n =k==pageOrderPages ? (pageOrderTotal%10==0 ? 10 : pageOrderTotal%10) : 10;
JSONArray records=pageOrder.getJSONObject("result").getJSONArray("records");
boolean flag=true;
for(int i=0; i<n; i++){
String pageOrderId=records.getJSONObject(i).getString("id");
if(pageOrderId.equals(signId)){
flag = true;
break;
}
}
Assert.assertEquals(true,flag,"在订单列表中未查询到创建的签单订单");
}
try {
Thread.sleep(3000);
} catch (InterruptedException e) {
throw new RuntimeException(e);
}
//切换B端校验
DataUserInfo dataUserInfo = new DataUserInfo();
dataUserInfo.setTerminal(Terminal.B);
dataUserInfo.setLoginUser(LoginAccount.GYM_PROD);
try {
Thread.sleep(3000);
} catch (InterruptedException e) {
throw new RuntimeException(e);
}
//校验获取B端订单管理列表
JSONObject pageVoucherResult=orderTools.pageVoucher1(xmAppApi.getLoginInfo().getStudioId(),getDetailBusinessNo,dataUserInfo);
int total=Integer.parseInt(pageVoucherResult.getJSONObject("result").getString("total"));
Assert.assertEquals(total>=1,true,"订单管理列表获取创建的签单订单失败");
//校验获取B端签单订单详情
JSONObject getDetailBResult=orderTools.getDetail(signId,dataUserInfo);
String getDetailBId = getDetailBResult.getJSONObject("result").getString("id");
String getDetailBBusinessNo = getDetailBResult.getJSONObject("result").getString("businessNo");
String getDetailBSource=getDetailBResult.getJSONObject("result").getString("source");
String getDetailBmemberId=getDetailBResult.getJSONObject("result").getJSONObject("receiver").getString("id");//会员id
BigDecimal quantity= new BigDecimal(getDetailBResult.getJSONObject("result").getJSONArray("voucherItems").getJSONObject(0).getJSONObject("purchaseCardSkuAttr").getJSONArray("skuItemAttrs").getJSONObject(0).getString("quantity"));
Assert.assertEquals(getDetailBId.equals(signId),true,"C端创建的签单订单在B端和C端展示的订单id不一致");
Assert.assertEquals(getDetailBBusinessNo.equals(getDetailBusinessNo),true,"C端创建的签单订单在B端和C端展示的订单号不一致");
Assert.assertEquals(getDetailBSource,"ONLINE_MALL","C端创建的签单订单,B端展示订单来源非会员创建");
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
throw new RuntimeException(e);
}
//校验B端获取会员下的购买的会员卡是否生成卡包
//获取会员下的购买的会员卡
JSONObject fetchUserCardListResult=orderTools.fetchUserCardList("MEMBER",getDetailBmemberId,"NORMAL",dataUserInfo);
String fetchUserCardListId=fetchUserCardListResult.getJSONArray("result").getJSONObject(0).getString("id");//权益ID
//获取售卖详情
JSONObject findDetailByIdResult=cardTools.membercardfindDetailById(fetchUserCardListId);
String findDetailByIdState=findDetailByIdResult.getJSONObject("result").getString("state");//卡状态
String findDetailByIdTradeOrderNumber=findDetailByIdResult.getJSONObject("result").getString("tradeOrderNumber");//订单号
Assert.assertEquals(findDetailByIdTradeOrderNumber.equals(getDetailBBusinessNo),true,"创建C端已完成订单,未生成卡包");//断言的别意:生成的卡包的订单号和上述创建订单的订单号一致不一致的校验
Assert.assertEquals(findDetailByIdState,"NORMAL","创建即时生效的已完成订单,未生成生效中卡包");
//B端退C端订单
try {
Thread.sleep(3000);
} catch (InterruptedException e) {
throw new RuntimeException(e);
}
//查询要退的卡id 从listUserRefundableCard-查询用户可退的会员卡列表中获取
JSONObject listUserRefundableCardResult=orderTools.listUserRefundableCard("MEMBER","",getDetailBmemberId,dataUserInfo);
String listUserRefundableId=listUserRefundableCardResult.getJSONArray("result").getJSONObject(0).getString("id");
//查询订单或者收支可退流水金额(包含乐动收银状态信息)
boolean checkRefundableAmountResult=orderTools.checkRefundableAmount(getDetailBId,0,dataUserInfo).getBoolean("success");
if(checkRefundableAmountResult == true) {
//退单-会员卡
JSONObject refundOrderResult = orderTools.refundOrder(0, listUserRefundableId, quantity, 0, "MEMBER_CARD",
getDetailBmemberId, 0, 0, "1",dataUserInfo);
String refundOrderSuccess = refundOrderResult.getString("success");
String refundOrderGetDetailId = refundOrderResult.getString("result");
Assert.assertEquals(refundOrderSuccess, "true", "创建的C端订单退单失败");
}
}
}
package com.xiaomai.cases.lunar.reserve;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.xiaomai.client.DataUserInfo;
import com.xiaomai.enums.ApiModule;
import com.xiaomai.enums.RequestType;
import com.xiaomai.enums.Terminal;
import com.xiaomai.utils.XMBaseTest;
import org.springframework.stereotype.Component;
/**
* @BelongsProject: xm-sportstest
* @BelongsPackage: com.xiaomai.cases.lunar.reserve
* @Author: xuyamei
* @CreateTime: 2024-06-25 16:15
* @Description: 预约接口
* @Version: 1.0
*/
@Component("reserveCTools")
public class ReserveCTools extends XMBaseTest {
public void setUP(String apiName, DataUserInfo... userInfo) {
dataApi.setApiModule(ApiModule.Lunar_Reserve)
.setApiName(apiName)
.setTerminal(Terminal.minApp);
super.beforeDataRequest(userInfo);
}
/**
* @description:查询课表
* @author: xuyamei
* @date: 2024/6/25 16:34
* @param memberId
* @param scheduleStartTime
* @param scheduleEndTime
* @return: com.alibaba.fastjson.JSONObject
**/
public JSONArray memberTimetable(String memberId,Long scheduleStartTime,Long scheduleEndTime){
setUP("API_memberTimetable");
JSONObject body = new JSONObject();
body.put("brandId", dataApi.getLoginInfo().getBrandId());
body.put("studioId", dataApi.getLoginInfo().getStudioId());
body.put("startDate", scheduleStartTime);
body.put("endDate",scheduleEndTime);
body.put("courseChooseEnum","ALL");
body.put("memberId",memberId);
dataApi.doRequest(RequestType.JSON,dataparams,body.toString(),dataheadrs).assetsSuccess(true);
return dataApi.getBodyInJSON().getJSONObject("result").getJSONArray("timetableGroups").getJSONObject(0).getJSONArray("timetableList");
}
public String memberReserveAdd(String areaId,String chiefCoachId,String benefitId,String assistantCoachId,String memberId,int reserveMemberNum,String scheduleId,long scheduleStartTime,boolean success,DataUserInfo...dataUserInfos){
setUP("API_memberReserve_add",dataUserInfos);
JSONObject body = new JSONObject();
JSONArray areaIds = new JSONArray(); // 场地,私教约课会用到
if (!areaId.equals("")){
areaIds.add(areaId);
}
body.put("areaIds",areaIds);
JSONArray coachIds = new JSONArray(); // 助教Ids
if (!assistantCoachId.equals("")){
coachIds.add(assistantCoachId);
}
body.put("assistantCoachIds",coachIds);
body.put("benefitId",benefitId); //会员卡权益Id
body.put("brandId", dataApi.getLoginInfo().getBrandId());
body.put("chiefCoachId", chiefCoachId); // 主教id
body.put("memberId", memberId); // 会员id
body.put("operatorId", dataApi.getLoginInfo().getAdminId()); // 操作人id
body.put("studioId", dataApi.getLoginInfo().getStudioId());
body.put("planCheckBalance", 1); // 计划扣除额度
body.put("reserveMemberNum", reserveMemberNum); // 预约人数
body.put("scheduleId", scheduleId); // 课次id
body.put("scheduleStartTime", scheduleStartTime); // 课次id
dataApi.doRequest(RequestType.JSON,dataparams,body.toString(),dataheadrs).assetsSuccess(success);
if (success){
return dataApi.getBodyInJSON().getJSONObject("result").getString("reserveId");
}
return dataApi.getBodyInJSON().toString();
}
/**
* @description:查询会员可用于约课的会员卡
* @author: xuyamei
* @date: 2024/6/23 12:38
* @param courseId:课程id
* @param courseType:课程类型 GROUP_CLASS
* @param accountType:账户类型 MEMBER
* @param memberId 会员id
* @param reserveDate:约课时间
* @return: com.alibaba.fastjson.JSONArray
**/
public JSONArray listUserReservableBenefit(String courseId,String courseType,String accountType,String memberId,long reserveDate){
setUP("API_listUserReservableBenefit");
JSONObject jsonObject = new JSONObject();
jsonObject.put("courseId", courseId);
jsonObject.put("courseType", courseType);
jsonObject.put("accountType", accountType);
jsonObject.put("memberId", memberId);
jsonObject.put("reserveDate", reserveDate);
jsonObject.put("studioId", dataApi.getLoginInfo().getStudioId());
dataApi.doRequest(RequestType.JSON, dataparams, jsonObject.toJSONString(), dataheadrs).assetsSuccess(true);
return dataApi.getBodyInJSON().getJSONArray("result");
}
/**
* @description:小程序查询课次详情
* @author: xuyamei
* @date: 2024/6/25 18:23
* @param scheduleId
* @return: com.alibaba.fastjson.JSONObject
**/
public JSONObject getMemberScheduleItemDetail(String scheduleId,String memberId){
setUP("API_getMemberScheduleItemDetail");
JSONObject jsonObject = new JSONObject();
jsonObject.put("scheduleId", scheduleId);
jsonObject.put("memberId", memberId);
jsonObject.put("studioId", dataApi.getLoginInfo().getStudioId());
dataApi.doRequest(RequestType.JSON, dataparams, jsonObject.toJSONString(), dataheadrs).assetsSuccess(true);
return dataApi.getBodyInJSON().getJSONObject("result");
}
/**
* @description:小程序查询预约记录列表
* @author: xuyamei
* @date: 2024/6/25 18:29
* @param signInStateSet :预约状态 UN_SIGNED:已预约未签到 、QUEUE_PROCESS:排队中 、 "SIGNED":签到、 "LEAVE":请假 、取消预约 "QUEUE_CANCEL":排队取消、RESERVE_CANCEL:预约取消
* @param signState:签到状态
* @param scheduleStartDate :课次开始时间
* @param scheduleEndDate:课次结束时间
* @param memberId :会员id
* @param courseType :课程类型 GROUP_CLASS:团课、PERSONAL:私教、TRAINING_CAMP:训练营
* @return: com.alibaba.fastjson.JSONArray
**/
public JSONArray getPageByMember(String signInStateSet,String signState,Long scheduleStartDate,Long scheduleEndDate,String memberId,String courseType){
setUP("API_getPageByMember");
JSONObject body = new JSONObject();
body.put("current",0);
body.put("size",20);
// 这里根据预约状态,则signInStateSet传值(SIGNED、LEAVE、UN_SIGNED),否则传reserveStateSet
if (!signInStateSet.equals("") && signInStateSet.equals("SIGNED") || signInStateSet.equals("LEAVE") || signInStateSet.equals("UN_SIGNED")){
JSONArray signInStateSetArr = new JSONArray();
signInStateSetArr.add(signInStateSet);
body.put("signInStateSet",signInStateSetArr);
}else {
JSONArray reserveStateSet = new JSONArray();
reserveStateSet.add(signInStateSet);
body.put("reserveStateSet",reserveStateSet);
}
if (!signState.equals("")){
body.put("signInState",signState);
}
if (scheduleStartDate != null){
body.put("scheduleStartDate",scheduleStartDate);
body.put("scheduleEndDate",scheduleEndDate);
}
body.put("memberId",memberId);
body.put("courseType",courseType);
body.put("studioId", dataApi.getLoginInfo().getStudioId());
dataApi.doRequest(RequestType.JSON,dataparams,body.toString(),dataheadrs).assetsSuccess(true);
return dataApi.getBodyInJSON().getJSONObject("result").getJSONArray("records");
}
/**
* @description:小程序根据id获取预约记录详情
* @author: xuyamei
* @date: 2024/6/25 19:25
* @param reserveId 预约记录id
* @param dataUserInfos
* @return: com.alibaba.fastjson.JSONObject
**/
public JSONObject getDetailById(String reserveId,DataUserInfo...dataUserInfos) {
setUP("API_getDetailById");
JSONObject body = new JSONObject();
body.put("reserveId",reserveId);
dataApi.doRequest(RequestType.JSON,dataparams,body.toString(),dataheadrs).assetsSuccess(true);
return dataApi.getBodyInJSON().getJSONObject("result");
}
/**
* @description:小程序取消约课、排队
* @author: xuyamei
* @date: 2024/6/26 10:32
* @param reserveId 预约id
* @param memberId 会员id
* @param success 正常传true
* @return: void
**/
public void cancelMemberReserve(String reserveId,String memberId,boolean success) {
setUP("API_cancelMemberReserve");
JSONArray reserveIds = new JSONArray();
reserveIds.add(reserveId);
JSONObject body = new JSONObject();
body.put("reserveIds",reserveIds);
body.put("memberId",memberId);
dataApi.doRequest(RequestType.JSON,dataparams,body.toString(),dataheadrs).assetsSuccess(success);
}
/**
* @description:小程序排队
* @author: xuyamei
* @date: 2024/6/26 11:20
* @param areaId :场地
* @param chiefCoachId 教练id
* @param memberId 会员id
* @param benefitId 权益id
* @param assistantCoachId 助教id
* @param reserveMemberNum 预约人数
* @param scheduleId 课次id
* @param scheduleStartTime 上课开始时间
* @param success 正常传true
* @return: java.lang.String
**/
public String addToQueue(String areaId,String chiefCoachId,String memberId,String benefitId,String assistantCoachId,int reserveMemberNum,String scheduleId,long scheduleStartTime,boolean success){
setUP("API_addToQueue");
JSONObject body = new JSONObject();
JSONArray areaIds = new JSONArray(); // 场地,私教约课会用到
if (!areaId.equals("")){
areaIds.add(areaId);
}
body.put("areaIds",areaIds);
JSONArray coachIds = new JSONArray(); // 助教Ids
if (!assistantCoachId.equals("")){
coachIds.add(assistantCoachId);
}
body.put("assistantCoachIds",coachIds);
body.put("benefitId",benefitId); //会员卡权益Id
body.put("brandId", dataApi.getLoginInfo().getBrandId());
body.put("chiefCoachId", chiefCoachId); // 主教id
body.put("memberId", memberId); // 会员id
body.put("studioId", dataApi.getLoginInfo().getStudioId());
body.put("planCheckBalance", 1); // 计划扣除额度
body.put("reserveMemberNum", reserveMemberNum); // 预约人数
body.put("scheduleId", scheduleId); // 课次id
body.put("scheduleStartTime", scheduleStartTime); // 课次id
dataApi.doRequest(RequestType.JSON,dataparams,body.toString(),dataheadrs).assetsSuccess(success);
if (success){
return dataApi.getBodyInJSON().getJSONObject("result").getString("reserveId");
}
return dataApi.getBodyInJSON().toString();
}
/**
* @description:小程序手动签到
* @author: xuyamei
* @date: 2024/6/26 15:51
* @param success 正常传true
* @param reserveId 预约id
* @param memberId 会员id
* @return: java.lang.String
**/
public String signIn(boolean success,String reserveId,String memberId) {
setUP("API_signIn");
JSONObject body = new JSONObject();
body.put("reserveId",reserveId);
body.put("memberId",memberId);
dataApi.doRequest(RequestType.JSON,dataparams,body.toString(),dataheadrs).assetsSuccess(success);
return dataApi.getBodyInJSON().getString("message");
}
/**
* @description: 扫码签到
* @author: xuyamei
* @date: 2024/6/26 15:54
* @param success 正常传true
* @param scheduleId 课次id
* @param memberId 会员id
* @return:
**/
public String signInByScanCode(boolean success,String scheduleId,String memberId) {
setUP("API_signInByScanCode");
JSONObject body = new JSONObject();
body.put("scheduleId",scheduleId);
body.put("memberId",memberId);
dataApi.doRequest(RequestType.JSON,dataparams,body.toString(),dataheadrs).assetsSuccess(success);
return dataApi.getBodyInJSON().getString("message");
}
/**
* @description:签到前校验
* @author: xuyamei
* @date: 2024/6/26 15:58
* @param success 正常传true
* @param scheduleId 课次id
* @param memberId 会员id
* @return: java.lang.String
**/
public String queryPreSignInCheck(boolean success,String scheduleId,String memberId){
setUP("API_queryPreSignInCheck");
JSONObject body = new JSONObject();
body.put("scheduleId",scheduleId);
body.put("memberId",memberId);
dataApi.doRequest(RequestType.JSON,dataparams,body.toString(),dataheadrs).assetsSuccess(success);
return dataApi.getBodyInJSON().getJSONObject("result").getString("preSignInCheck");
}
/**
* @description:小程序获取团课预约规则
* @author: xuyamei
* @date: 2024/6/26 16:04
* @return: com.alibaba.fastjson.JSONObject
**/
public JSONObject getGroupBookingRules(){
setUP("API_getGroupBookingRules");
String body = "{\"studioId\":\""+dataApi.getLoginInfo().getStudioId()+"\"}";
dataApi.doRequest(RequestType.JSON,dataparams,body,dataheadrs).assetsSuccess(true);
return dataApi.getBodyInJSON().getJSONObject("result");
}
}
package com.xiaomai.cases.lunar.reserve;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.xiaomai.basetest.BaseTestImpl;
import com.xiaomai.cases.lunar.user.UserTools;
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.reserve.ReserveTools;
import com.xiaomai.cases.polar.schedule.group.GroupScheduleTools;
import com.xiaomai.cases.polar.setting.courseCategory.CourseCategoryTools;
import com.xiaomai.cases.polar.setting.rules.RuleTools;
import com.xiaomai.client.DataUserInfo;
import com.xiaomai.enums.ApiModule;
import com.xiaomai.enums.LoginAccount;
import com.xiaomai.enums.Terminal;
import com.xiaomai.utils.CommUtil;
import com.xiaomai.utils.TimeUtils;
import com.xiaomai.utils.XMJSONPath;
import org.testng.Assert;
import org.testng.annotations.BeforeClass;
import org.testng.annotations.DataProvider;
import org.testng.annotations.Test;
import javax.annotation.Resource;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.Random;
/**
* @BelongsProject: xm-sportstest
* @BelongsPackage: com.xiaomai.cases.lunar.reserve
* @Author: xuyamei
* @CreateTime: 2024-06-25 16:57
* @Description: 预约
* @Version: 1.0
*/
public class TestAddMemberReserve extends BaseTestImpl {
@Resource(name = "userTools")
UserTools userTools;
@Resource(name = "reserveCTools")
ReserveCTools reserveCTools;
@Resource(name = "courseCategoryTools")
CourseCategoryTools courseCategoryTools;
@Resource(name = "courseTools")
CourseTools courseTools;
@Resource(name = "reserveTools")
ReserveTools reserveTools;
@Resource(name = "groupScheduleTools")
GroupScheduleTools groupScheduleTools;
@Resource(name = "ruleTools")
RuleTools ruleTools;
OrderTools orderTools = new OrderTools();
CardTools cardTools = new CardTools();
String todayStartTimeTamp = CommUtil.oneKeyGetAddDay(1);
//获取今天结束日期的时间戳
String todayEndDateTimeTamp = CommUtil.getNDayEndTimeTamp(1);
Long scheduleEndTime = TimeUtils.getTodayEndTime(1);
private String ruldId;
private JSONArray memberInfo = new JSONArray();
private String scheduleId;
private Long startTime;
private String courseId;
private String memberId;
private String chiefCoachId;
@BeforeClass
public void beforeTest(){
setTestInfo(ApiModule.Lunar_Reserve,"API_memberTimetable", LoginAccount.GYM_MINIAPPC, Terminal.minApp,"xym");
super.beforeTest();
}
@Test(description = "小程序预约")
public void testAddMemberReserve() {
DataUserInfo dataUserInfo = new DataUserInfo();
dataUserInfo.setTerminal(Terminal.B);
dataUserInfo.setLoginUser(LoginAccount.GYM_PROD);
// 预约规则开启允许排队
JSONObject getRules = ruleTools.getGroupBookingRules(); // 获取场馆团课预约规则
String id = getRules.getString("id"); // 获取规则id
Random random = new Random();
int bookingSeatCount = random.nextInt(10)+1; // 席位
ruleTools.saveGroupBookingRules(id,true,bookingSeatCount,true,true,random.nextInt(30)+10,false,random.nextInt(100)+10,random.nextInt(5)+1,false,random.nextInt(100)+10,"minutes",false,random.nextInt(100)+10,"minutes");
memberId = userTools.getMemberInfo().getString("memberId");
// 创建团课课次
createGroupSchedule();
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
throw new RuntimeException(e);
}
// 获取会员权益
memberInfo = getMemberBenefit(memberId);
// 课次详情获取上课老师和
JSONObject memberScheduleItemDetail = reserveCTools.getMemberScheduleItemDetail(scheduleId, memberId);
startTime = memberScheduleItemDetail.getLongValue("startTime");
chiefCoachId = memberScheduleItemDetail.getString("chiefCoachId");
String reserveId = reserveCTools.memberReserveAdd("",chiefCoachId,memberInfo.getString(1),"",memberInfo.getString(0),1,scheduleId,startTime,true);
memberInfo.add(reserveId);
try {
Thread.sleep(2000);
} catch (InterruptedException e) {
throw new RuntimeException(e);
}
// 验证课次详情、预约记录、预约详情、B端预约详情内容
checkResult("SUCCESS","UN_SIGNED","约课");
}
@Test(priority = 1,description = "学员已经在课次中,无需重复添加")
public void testAddMemberReserve2(){
reserveCTools.memberReserveAdd("",chiefCoachId,memberInfo.getString(1),"",memberInfo.getString(0),1,scheduleId,startTime,false);
String message = dataApi.getBodyInJSON().getString("message");
Assert.assertEquals(message,"预约失败,无需重复添加");
}
@DataProvider
public Object[][] dataProvider(){
return new Object[][]{
{true,"操作成功"},
{false,"已取消预约,无需重复取消"}
};
}
@Test(dataProvider = "dataProvider",priority = 2)
public void testCancelMemberReserve(boolean cancel,String message){
reserveCTools.cancelMemberReserve(memberInfo.getString(2),memberInfo.getString(0),cancel);
Assert.assertEquals(dataApi.getBodyInJSON().getString("message").contains(message),true);
try {
Thread.sleep(2000);
} catch (InterruptedException e) {
throw new RuntimeException(e);
}
if (cancel){
checkResult("RESERVE_CANCEL","RESERVE_CANCEL","取消约课");
}
}
@Test(priority = 3)
public void del(){
DataUserInfo dataUserInfo = new DataUserInfo();
dataUserInfo.setTerminal(Terminal.B);
dataUserInfo.setLoginUser(LoginAccount.GYM_PROD);
// 删除排课数据
groupScheduleTools.delGroupRuleSchedule(ruldId,true,dataUserInfo);
// 删除课次
groupScheduleTools.delGroupScheduleItem(scheduleId,dataUserInfo);
}
// 创建团课课次
public void createGroupSchedule(){
DataUserInfo dataUserInfo = new DataUserInfo();
dataUserInfo.setTerminal(Terminal.B);
dataUserInfo.setLoginUser(LoginAccount.GYM_PROD);
// 查询存量的约课课程
// 查询存量的课程分类
String categoryId = courseCategoryTools.getCourseCategoryPage("瑜伽");
courseId = courseTools.getPersonalOrGroupCourseId("GROUP", "C端约课瑜伽团课课程", categoryId, "STUDIO", "", 2, 1,dataUserInfo).getString(0);
// 创建排课
int[] minuteOffset = {60, 120, 180, 240, 300, 360, 420, 480, 540, 600, 660, 720, 780, 840, 900, 960, 1020, 1080, 1140, 1200, 1260};
Random random = new Random();
//1.1-创建排课日程
groupScheduleTools.createGroupRuleSchedule(courseId, dataApi.getLoginInfo().getAdminId(), todayStartTimeTamp, todayEndDateTimeTamp, new ArrayList(), new ArrayList(), false, 1,minuteOffset[random.nextInt(20)],dataUserInfo);
//1.2-查询排课日程
JSONArray getGroupRuleScheduleList = groupScheduleTools.getGroupRuleScheduleList(courseId, dataApi.getLoginInfo().getAdminId(),dataUserInfo);
//统计查询到的目标日程数量
ruldId = XMJSONPath.readPath(getGroupRuleScheduleList.getJSONObject(0), "$.ruleId");
Long scheduleEndTime = TimeUtils.getTodayEndTime(1);
try {
Thread.sleep(2500);
} catch (InterruptedException e) {
throw new RuntimeException(e);
}
// 查询课次id
JSONArray memberTimetable = reserveCTools.memberTimetable(memberId,Long.valueOf(todayStartTimeTamp), scheduleEndTime);
for (int i = 0; i < memberTimetable.size(); i++){
if (memberTimetable.getJSONObject(i).getString("ruleId").equals(ruldId)){
scheduleId = memberTimetable.getJSONObject(i).getString("scheduleId");
break;
}
}
}
/**
* @description:买卡
* @author: xuyamei
* @date: 2024/6/24 19:42
* @param courseId 课程id
* @param memberId 会员id
* @return: void
**/
public void signOrder(String courseId,String memberId){
DataUserInfo dataUserInfo = new DataUserInfo();
dataUserInfo.setTerminal(Terminal.B);
dataUserInfo.setLoginUser(LoginAccount.GYM_PROD);
// 查询存量的卡
JSONObject fetchPageOfMemberCard = cardTools.fetchPageOfMemberCard(courseId,dataUserInfo);
int total = Integer.parseInt(fetchPageOfMemberCard.getString("total"));
String cardId = "";
BigDecimal quantity = new BigDecimal(0);
float price = 0;
int validPeriod = 0;
if (total == 0) {
cardId = cardTools.memberCardCreate("约课使用会员卡"+ TimeUtils.getCurrentTime(),dataUserInfo).getString("result");
}
cardId = fetchPageOfMemberCard.getJSONArray("records").getJSONObject(0).getString("id");
quantity = new BigDecimal(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,dataApi.getLoginInfo().getBrandId(),dataApi.getLoginInfo().getStudioId(),dataApi.getLoginInfo().getAdminId(),dataUserInfo).getJSONObject("result").getString("latestSnapshotId");
//检查会员对该卡是否超出购买上限
boolean limitResult= orderTools.checkAllowPurchase("MEMBER_CARD",cardId,cardId,"1",dataApi.getLoginInfo().getBrandId(),dataApi.getLoginInfo().getStudioId(),dataApi.getLoginInfo().getAdminId(),dataUserInfo).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, price/2,"PURCHASE",
"MEMBER_CARD",memberId,price-price/2,price-price/2,"1",dataUserInfo);
}
}
/**
* @description:查询会员是否购买会员卡,如果已购买则查看权益,如果没有则进行购买
* @author: xuyamei
* @date: 2024/6/24 19:43
* @param memberId:会员id
* @return:
**/
public JSONArray getMemberBenefit(String memberId){
// 查询是否有可用的会员卡,没有则购买
JSONArray listUserReservableBenefit = reserveCTools.listUserReservableBenefit(courseId, "GROUP_CLASS", "MEMBER", memberId, Long.parseLong(todayStartTimeTamp));
if (listUserReservableBenefit.size() == 0) {
// 购买适用的会员卡
signOrder(courseId, memberId);
try {
Thread.sleep(2000);
} catch (InterruptedException e) {
throw new RuntimeException(e);
}
listUserReservableBenefit = reserveCTools.listUserReservableBenefit(courseId, "GROUP_CLASS", "MEMBER", memberId, Long.parseLong(todayStartTimeTamp));
}
// 查询权益
String benefitId = listUserReservableBenefit.getJSONObject(0).getString("benefitId");
JSONArray members = new JSONArray();
members.add(memberId);
members.add(benefitId);
return members;
}
public void checkResult(String reserveState,String signInState,String mes){
// check 1:查询小程序课次详情,学员是预约状态
JSONObject memberScheduleItemDetail = reserveCTools.getMemberScheduleItemDetail(scheduleId,memberId);
String[] result = new String[] {"memberId","scheduleId","reserveId","reserveState","benefitId","courseType"};
String[] resultData = new String[] {memberInfo.getString(0),scheduleId,memberInfo.getString(2),reserveState,memberInfo.getString(1),"GROUP_CLASS"};
if (reserveState.equals("SUCCESS")){
Assert.assertEquals(memberScheduleItemDetail.getJSONObject("memberScheduleInfoVO").getString("memberOperation"),"TO_CANCEL_RESERVE",mes+"产生的数据与实际数据不符合");
for(int j = 0;j<4;j++){
Assert.assertEquals(memberScheduleItemDetail.getJSONObject("memberScheduleInfoVO").getString(result[j]),resultData[j],mes+"产生的数据与实际数据不符合"+result[j]+":"+resultData[j]);
}
}else if (reserveState.equals("RESERVE_CANCEL")){
Assert.assertEquals(memberScheduleItemDetail.getJSONObject("memberScheduleInfoVO").getString("memberOperation"),"TO_RESERVE",mes+"产生的数据与实际数据不符合");
}
// check 2:查询小程序预约记录
JSONArray getPageByMember = reserveCTools.getPageByMember(signInState,"",startTime,scheduleEndTime,memberId,"GROUP_CLASS");
boolean success = false;
for(int i =0;i<getPageByMember.size();i++){
if (getPageByMember.getJSONObject(i).getString("id").equals(memberInfo.getString(2))){
success = true;
for(int j = 0;j<result.length;j++){
String resultString = result[j].equals("reserveId")?"id":result[j];
Assert.assertEquals(getPageByMember.getJSONObject(i).getString(resultString),resultData[j],mes+"产生的数据与实际数据不符合"+result[j]+":"+resultData[j]);
}
Assert.assertEquals(getPageByMember.getJSONObject(i).getString("memberId"),memberInfo.getString(0),"查询的"+mes+"数据不是同一个会员");
}
}
Assert.assertTrue(success,mes+"预约记录没有查询到相关信息");
// check 3:查询小程序预约详情
JSONObject getDetailById = reserveCTools.getDetailById(memberInfo.getString(2));
for(int j = 0;j<result.length;j++){
String resultString = result[j].equals("reserveId")?"id":result[j];
Assert.assertEquals(getDetailById.getString(resultString),resultData[j],mes+"产生的数据与实际数据不符合"+result[j]+":"+resultData[j]);
}
Assert.assertEquals(getDetailById.getString("memberId"),memberInfo.getString(0),"查询的"+mes+"数据不是同一个会员");
// check 4:查询B端预约详情
DataUserInfo dataUserInfo = new DataUserInfo();
dataUserInfo.setTerminal(Terminal.B);
dataUserInfo.setLoginUser(LoginAccount.GYM_PROD);
result = new String[] {"id","benefitId","reserveMemberNum","courseId","courseType","scheduleStartTime","reserveState","scheduleId"};
resultData = new String[] {memberInfo.getString(2),memberInfo.getString(1),"1",courseId,"GROUP_CLASS",startTime+"",reserveState,scheduleId};
getDetailById = reserveTools.getDetailById(memberInfo.getString(2),dataUserInfo);
for(int j = 0;j<result.length;j++){
Assert.assertEquals(getDetailById.getString(result[j]),resultData[j],mes+"产生的数据与实际数据不符合"+result[j]+":"+resultData[j]);
}
Assert.assertEquals(getDetailById.getString("memberId"),memberInfo.getString(0),"查询的"+mes+"数据不是同一个会员");
}
}
package com.xiaomai.cases.lunar.reserve;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.xiaomai.basetest.BaseTestImpl;
import com.xiaomai.cases.lunar.user.UserTools;
import com.xiaomai.cases.polar.course.CourseTools;
import com.xiaomai.cases.polar.finance.order.OrderTools;
import com.xiaomai.cases.polar.member.Tools;
import com.xiaomai.cases.polar.memberCard.CardTools;
import com.xiaomai.cases.polar.reserve.ReserveTools;
import com.xiaomai.cases.polar.schedule.group.GroupScheduleTools;
import com.xiaomai.cases.polar.setting.courseCategory.CourseCategoryTools;
import com.xiaomai.cases.polar.setting.rules.RuleTools;
import com.xiaomai.client.DataUserInfo;
import com.xiaomai.enums.ApiModule;
import com.xiaomai.enums.LoginAccount;
import com.xiaomai.enums.Terminal;
import com.xiaomai.utils.CommUtil;
import com.xiaomai.utils.TimeUtils;
import com.xiaomai.utils.XMJSONPath;
import org.testng.Assert;
import org.testng.annotations.BeforeClass;
import org.testng.annotations.DataProvider;
import org.testng.annotations.Test;
import javax.annotation.Resource;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.Random;
/**
* @BelongsProject: xm-sportstest
* @BelongsPackage: com.xiaomai.cases.lunar.reserve
* @Author: xuyamei
* @CreateTime: 2024-06-26 11:16
* @Description: 小程序排队
* @Version: 1.0
*/
public class TestAddToQueue extends BaseTestImpl {
@Resource(name = "userTools")
UserTools userTools;
@Resource(name = "reserveCTools")
ReserveCTools reserveCTools;
@Resource(name = "courseCategoryTools")
CourseCategoryTools courseCategoryTools;
@Resource(name = "courseTools")
CourseTools courseTools;
@Resource(name = "reserveTools")
ReserveTools reserveTools;
@Resource(name = "groupScheduleTools")
GroupScheduleTools groupScheduleTools;
@Resource(name = "ruleTools")
RuleTools ruleTools;
OrderTools orderTools = new OrderTools();
CardTools cardTools = new CardTools();
Tools tools = new Tools();
String todayStartTimeTamp = CommUtil.oneKeyGetAddDay(1);
//获取今天结束日期的时间戳
String todayEndDateTimeTamp = CommUtil.getNDayEndTimeTamp(1);
Long scheduleEndTime = TimeUtils.getTodayEndTime(1);
private String ruldId;
private JSONArray memberInfo = new JSONArray();
private JSONArray memberReserveInfo = new JSONArray(); // 约课学员
private String scheduleId;
private Long startTime;
private String courseId;
private String memberId;
private String chiefCoachId;
@BeforeClass
public void beforeTest(){
setTestInfo(ApiModule.Lunar_Reserve,"API_addToQueue", LoginAccount.GYM_MINIAPPC, Terminal.minApp,"xym");
super.beforeTest();
}
@Test
public void testAddToQueue() {
memberId = userTools.getMemberInfo().getString("memberId");
// 创建团课课次
createGroupSchedule();
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
throw new RuntimeException(e);
}
// 获取会员权益
memberInfo = getMemberBenefit(memberId,"");
// 获取约课学员A
memberReserveInfo = getMemberBenefit("","约课学员朱莉");
// 课次详情获取上课老师和上课时间
JSONObject memberScheduleItemDetail = reserveCTools.getMemberScheduleItemDetail(scheduleId, memberId);
startTime = memberScheduleItemDetail.getLongValue("startTime");
chiefCoachId = memberScheduleItemDetail.getString("chiefCoachId");
DataUserInfo dataUserInfo = new DataUserInfo();
dataUserInfo.setTerminal(Terminal.B);
dataUserInfo.setLoginUser(LoginAccount.GYM_PROD);
// B端代预约
String reserveId = reserveTools.addReserve("","",memberReserveInfo.getString(1),chiefCoachId,memberReserveInfo.getString(0),1,scheduleId,startTime,true,dataUserInfo);
memberReserveInfo.add(reserveId);
try {
Thread.sleep(2000);
} catch (InterruptedException e) {
throw new RuntimeException(e);
}
// 修改课次容量
groupScheduleTools.editGroupSchedule(scheduleId,startTime,dataApi.getLoginInfo().getAdminId(),1,1,dataUserInfo);
// 预约规则开启允许排队
JSONObject getRules = ruleTools.getGroupBookingRules(); // 获取场馆团课预约规则
String id = getRules.getString("id"); // 获取规则id
Random random = new Random();
int bookingSeatCount = random.nextInt(10)+1; // 席位
ruleTools.saveGroupBookingRules(id,true,bookingSeatCount,true,true,random.nextInt(30)+10,false,random.nextInt(100)+10,random.nextInt(5)+1,false,random.nextInt(100)+10,"minutes",false,random.nextInt(100)+10,"minutes");
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
throw new RuntimeException(e);
}
reserveId = reserveCTools.addToQueue("",chiefCoachId,memberInfo.getString(0),memberInfo.getString(1),"",1,scheduleId,startTime,true);
memberInfo.add(reserveId);
// 验证课次详情、预约记录、预约详情、B端预约详情内容
checkResult("QUEUE_PROCESS", "QUEUE_PROCESS","排队");
}
@DataProvider
public Object[][] data(){
return new Object[][]{
{"reserve","FULL_CAPACITY,会员已约该课程,不可重复预约"},// 已经排队再次预约
{"queue","排队失败,无需重复添加,会员已约该课程,不可重复预约"}, // 已排队再次排队
{"cancel","排队取消成功"},
{"notQueue","排队失败,课次未开放预约"},
{"queuing","排队成功"}
};
}
@Test(priority = 2,dataProvider = "data")
public void testAddToQueue2(String type,String msg) {
DataUserInfo dataUserInfo = new DataUserInfo();
dataUserInfo.setTerminal(Terminal.B);
dataUserInfo.setLoginUser(LoginAccount.GYM_PROD);
switch(type) {
case "reserve":
reserveCTools.memberReserveAdd("",chiefCoachId,memberInfo.getString(1),"",memberInfo.getString(0),1,scheduleId,startTime,false);
Assert.assertTrue(dataApi.getBodyInJSON().getJSONObject("result").getString("resultCode").contains(msg) || dataApi.getBodyInJSON().getString("message").contains(msg),"排队异常提示信息不符合");
break;
case "queue":
reserveCTools.addToQueue("",chiefCoachId,memberInfo.getString(0),memberInfo.getString(1),"",1,scheduleId,startTime,false);
Assert.assertTrue(dataApi.getBodyInJSON().getString("message").contains(msg),"排队异常提示信息不符合");
break;
case "cancel":
// 取消排队
reserveCTools.cancelMemberReserve(memberInfo.getString(2),memberInfo.getString(0),true);
// 取消验证课次详情、预约记录、预约详情、B端预约详情内容
checkResult("QUEUE_CANCEL", "QUEUE_CANCEL","取消排队");
break;
case "notQueue":
// 预约规则开启允许排队
JSONObject getRules = ruleTools.getGroupBookingRules(); // 获取场馆团课预约规则
String id = getRules.getString("id"); // 获取规则id
Random random = new Random();
int bookingSeatCount = random.nextInt(10)+1; // 席位
ruleTools.saveGroupBookingRules(id,true,bookingSeatCount,true,true,random.nextInt(30)+10,true,random.nextInt(100)+10,1,false,random.nextInt(100)+10,"minutes",false,random.nextInt(100)+10,"minutes");
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
throw new RuntimeException(e);
}
reserveCTools.addToQueue("",chiefCoachId,memberInfo.getString(0),memberInfo.getString(1),"",1,scheduleId,startTime,false);
Assert.assertEquals(dataApi.getBodyInJSON().getString("message"),msg,"排队异常提示信息不符合");
break;
case "queuing":
// 预约规则开启允许排队
getRules = ruleTools.getGroupBookingRules(); // 获取场馆团课预约规则
id = getRules.getString("id"); // 获取规则id
random = new Random();
bookingSeatCount = random.nextInt(10)+1; // 席位
ruleTools.saveGroupBookingRules(id,true,bookingSeatCount,true,true,random.nextInt(30)+10,false,random.nextInt(100)+10,random.nextInt(5)+1,false,random.nextInt(100)+10,"minutes",false,random.nextInt(100)+10,"minutes");
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
throw new RuntimeException(e);
}
String reserveId = reserveCTools.addToQueue("",chiefCoachId,memberInfo.getString(0),memberInfo.getString(1),"",1,scheduleId,startTime,true);
memberInfo.set(2,reserveId); //将原来的id替换成新的id
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
throw new RuntimeException(e);
}
// 扩大课次人数上限容量
groupScheduleTools.editGroupSchedule(scheduleId,startTime,chiefCoachId,1,2,dataUserInfo);
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
throw new RuntimeException(e);
}
// check 扩容后学员进入到课次
// 验证课次详情、预约记录、预约详情、B端预约详情内容
checkResult("SUCCESS","UN_SIGNED","排队进入课次");
}
}
@Test(priority = 3)
public void del(){
DataUserInfo dataUserInfo = new DataUserInfo();
dataUserInfo.setTerminal(Terminal.B);
dataUserInfo.setLoginUser(LoginAccount.GYM_PROD);
// 删除排课数据
groupScheduleTools.delGroupRuleSchedule(ruldId,true,dataUserInfo);
// 删除课次
groupScheduleTools.delGroupScheduleItem(scheduleId,dataUserInfo);
}
// 创建团课课次
public void createGroupSchedule(){
DataUserInfo dataUserInfo = new DataUserInfo();
dataUserInfo.setTerminal(Terminal.B);
dataUserInfo.setLoginUser(LoginAccount.GYM_PROD);
// 查询存量的约课课程
// 查询存量的课程分类
String categoryId = courseCategoryTools.getCourseCategoryPage("瑜伽");
courseId = courseTools.getPersonalOrGroupCourseId("GROUP", "C端约课瑜伽团课课程", categoryId, "STUDIO", "", 2, 1,dataUserInfo).getString(0);
// 创建排课
int[] minuteOffset = {60, 120, 180, 240, 300, 360, 420, 480, 540, 600, 660, 720, 780, 840, 900, 960, 1020, 1080, 1140, 1200, 1260};
Random random = new Random();
//1.1-创建排课日程
groupScheduleTools.createGroupRuleSchedule(courseId, dataApi.getLoginInfo().getAdminId(), todayStartTimeTamp, todayEndDateTimeTamp, new ArrayList(), new ArrayList(), false, 1,minuteOffset[random.nextInt(20)],dataUserInfo);
//1.2-查询排课日程
JSONArray getGroupRuleScheduleList = groupScheduleTools.getGroupRuleScheduleList(courseId, dataApi.getLoginInfo().getAdminId(),dataUserInfo);
//统计查询到的目标日程数量
ruldId = XMJSONPath.readPath(getGroupRuleScheduleList.getJSONObject(0), "$.ruleId");
Long scheduleEndTime = TimeUtils.getTodayEndTime(1);
try {
Thread.sleep(2500);
} catch (InterruptedException e) {
throw new RuntimeException(e);
}
// 查询课次id
JSONArray memberTimetable = reserveCTools.memberTimetable(memberId,Long.valueOf(todayStartTimeTamp), scheduleEndTime);
for (int i = 0; i < memberTimetable.size(); i++){
if (memberTimetable.getJSONObject(i).getString("ruleId").equals(ruldId)){
scheduleId = memberTimetable.getJSONObject(i).getString("scheduleId");
break;
}
}
}
/**
* @description:买卡
* @author: xuyamei
* @date: 2024/6/24 19:42
* @param courseId 课程id
* @param memberId 会员id
* @return: void
**/
public void signOrder(String courseId,String memberId){
DataUserInfo dataUserInfo = new DataUserInfo();
dataUserInfo.setTerminal(Terminal.B);
dataUserInfo.setLoginUser(LoginAccount.GYM_PROD);
// 查询存量的卡
JSONObject fetchPageOfMemberCard = cardTools.fetchPageOfMemberCard(courseId,dataUserInfo);
int total = Integer.parseInt(fetchPageOfMemberCard.getString("total"));
String cardId = "";
BigDecimal quantity = new BigDecimal(0);
float price = 0;
int validPeriod = 0;
if (total == 0) {
cardId = cardTools.memberCardCreate("约课使用会员卡"+ TimeUtils.getCurrentTime(),dataUserInfo).getString("result");
}
cardId = fetchPageOfMemberCard.getJSONArray("records").getJSONObject(0).getString("id");
quantity = new BigDecimal(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,dataApi.getLoginInfo().getBrandId(),dataApi.getLoginInfo().getStudioId(),dataApi.getLoginInfo().getAdminId(),dataUserInfo).getJSONObject("result").getString("latestSnapshotId");
//检查会员对该卡是否超出购买上限
boolean limitResult= orderTools.checkAllowPurchase("MEMBER_CARD",cardId,cardId,"1",dataApi.getLoginInfo().getBrandId(),dataApi.getLoginInfo().getStudioId(),dataApi.getLoginInfo().getAdminId(),dataUserInfo).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, price/2,"PURCHASE",
"MEMBER_CARD",memberId,price-price/2,price-price/2,"1",dataUserInfo);
}
}
/**
* @description:查询会员是否购买会员卡,如果已购买则查看权益,如果没有则进行购买
* @author: xuyamei
* @date: 2024/6/24 19:43
* @param memberId:会员id
* @return:
**/
public JSONArray getMemberBenefit(String memberId,String memberName){
DataUserInfo dataUserInfo = new DataUserInfo();
dataUserInfo.setTerminal(Terminal.B);
dataUserInfo.setLoginUser(LoginAccount.GYM_PROD);
if (memberId.equals("")){
// 查询存量的学员没有则创建学员,// todo 先手动新建
if (tools.commonSearch(memberName,"NORMAL",dataUserInfo).getJSONArray("result").size()>0){
memberId = tools.commonSearch(memberName,"NORMAL",dataUserInfo).getJSONArray("result").getJSONObject(0).getString("id");
}else if (tools.commonSearch(memberName,"HISTORY",dataUserInfo).getJSONArray("result").size()>0){
memberId = tools.commonSearch(memberName,"HISTORY",dataUserInfo).getJSONArray("result").getJSONObject(0).getString("id");
}else{
memberId = tools.commonSearch(memberName,"POTENTIAL",dataUserInfo).getJSONArray("result").getJSONObject(0).getString("id");
}
}
// 查询是否有可用的会员卡,没有则购买
JSONArray listUserReservableBenefit = reserveCTools.listUserReservableBenefit(courseId, "GROUP_CLASS", "MEMBER", memberId, Long.parseLong(todayStartTimeTamp));
if (listUserReservableBenefit.size() == 0) {
// 购买适用的会员卡
signOrder(courseId, memberId);
try {
Thread.sleep(2000);
} catch (InterruptedException e) {
throw new RuntimeException(e);
}
listUserReservableBenefit = reserveCTools.listUserReservableBenefit(courseId, "GROUP_CLASS", "MEMBER", memberId, Long.parseLong(todayStartTimeTamp));
}
// 查询权益
String benefitId = listUserReservableBenefit.getJSONObject(0).getString("benefitId");
JSONArray members = new JSONArray();
members.add(memberId);
members.add(benefitId);
return members;
}
public void checkResult(String reserveState,String signInState,String mes){
// check 1:查询小程序课次详情,学员是预约状态
JSONObject memberScheduleItemDetail = reserveCTools.getMemberScheduleItemDetail(scheduleId,memberId);
String[] result = new String[] {"memberId","scheduleId","reserveId","reserveState","benefitId","courseType"};
String[] resultData = new String[] {memberInfo.getString(0),scheduleId,memberInfo.getString(2),reserveState,memberInfo.getString(1),"GROUP_CLASS"};
if (reserveState.equals("QUEUE_PROCESS") || reserveState.equals("RESERVE_CANCEL") ){
// 校验预约排队之后约课课次详情按钮展示
Assert.assertEquals(memberScheduleItemDetail.getJSONObject("memberScheduleInfoVO").getString("memberOperation"),reserveState.equals("QUEUE_PROCESS")?"TO_CANCEL_QUEUING":"TO_CANCEL_RESERVE",mes+"产生的数据与实际数据不符合");
for(int j = 0;j<4;j++){
Assert.assertEquals(memberScheduleItemDetail.getJSONObject("memberScheduleInfoVO").getString(result[j]),resultData[j],mes+"产生的数据与实际数据不符合"+result[j]+":"+resultData[j]);
}
}else if (reserveState.equals("QUEUE_CANCEL")){
Assert.assertEquals(memberScheduleItemDetail.getJSONObject("memberScheduleInfoVO").getString("memberOperation"),"TO_QUEUING",mes+"产生的数据与实际数据不符合");
}
// check 2:查询小程序预约记录
JSONArray getPageByMember = reserveCTools.getPageByMember(signInState,"",startTime,scheduleEndTime,memberId,"GROUP_CLASS");
boolean success = false;
for(int i =0;i<getPageByMember.size();i++){
if (getPageByMember.getJSONObject(i).getString("id").equals(memberInfo.getString(2))){
success = true;
for(int j = 0;j<result.length;j++){
String resultString = result[j].equals("reserveId")?"id":result[j];
Assert.assertEquals(getPageByMember.getJSONObject(i).getString(resultString),resultData[j],mes+"产生的数据与实际数据不符合"+result[j]+":"+resultData[j]);
}
Assert.assertEquals(getPageByMember.getJSONObject(i).getString("memberId"),memberInfo.getString(0),"查询的"+mes+"数据不是同一个会员");
}
}
Assert.assertTrue(success,mes+"预约记录没有查询到相关信息");
// check 3:查询小程序预约详情
JSONObject getDetailById = reserveCTools.getDetailById(memberInfo.getString(2));
for(int j = 0;j<result.length;j++){
String resultString = result[j].equals("reserveId")?"id":result[j];
Assert.assertEquals(getDetailById.getString(resultString),resultData[j],mes+"产生的数据与实际数据不符合"+result[j]+":"+resultData[j]);
}
if(reserveState.equals("QUEUE_PROCESS")){
// 除去正常的检查,看一下排在第几位
Assert.assertEquals(getDetailById.getString("queueSort"),"1","排队后排队名次应该是第一位");
}
Assert.assertEquals(getDetailById.getString("memberId"),memberInfo.getString(0),"查询的"+mes+"数据不是同一个会员");
// check 4:查询B端预约详情
DataUserInfo dataUserInfo = new DataUserInfo();
dataUserInfo.setTerminal(Terminal.B);
dataUserInfo.setLoginUser(LoginAccount.GYM_PROD);
result = new String[] {"id","benefitId","reserveMemberNum","courseId","courseType","scheduleStartTime","reserveState","scheduleId"};
resultData = new String[] {memberInfo.getString(2),memberInfo.getString(1),"1",courseId,"GROUP_CLASS",startTime+"",reserveState,scheduleId};
getDetailById = reserveTools.getDetailById(memberInfo.getString(2),dataUserInfo);
for(int j = 0;j<result.length;j++){
Assert.assertEquals(getDetailById.getString(result[j]),resultData[j],mes+"产生的数据与实际数据不符合"+result[j]+":"+resultData[j]);
}
if(reserveState.equals("QUEUE_PROCESS")){
// 除去正常的检查,看一下排在第几位
Assert.assertEquals(getDetailById.getString("queueSort"),"1","排队后排队名次应该是第一位");
}
Assert.assertEquals(getDetailById.getString("memberId"),memberInfo.getString(0),"查询的"+mes+"数据不是同一个会员");
}
}
package com.xiaomai.cases.lunar.reserve;
import com.alibaba.fastjson.JSONObject;
import com.xiaomai.basetest.BaseTestImpl;
import com.xiaomai.cases.polar.setting.rules.RuleTools;
import com.xiaomai.client.DataUserInfo;
import com.xiaomai.enums.ApiModule;
import com.xiaomai.enums.LoginAccount;
import com.xiaomai.enums.Terminal;
import org.testng.Assert;
import org.testng.annotations.BeforeClass;
import org.testng.annotations.DataProvider;
import org.testng.annotations.Test;
import javax.annotation.Resource;
import java.util.Random;
/**
* @BelongsProject: xm-sportstest
* @BelongsPackage: com.xiaomai.cases.lunar.reserve
* @Author: xuyamei
* @CreateTime: 2024-06-27 11:03
* @Description: 编辑约课规则小程序查询规则
* @Version: 1.0
*/
public class TestGetGroupBookingRules extends BaseTestImpl {
@Resource(name = "reserveCTools")
ReserveCTools reserveCTools;
@Resource(name = "ruleTools")
RuleTools ruleTools;
@BeforeClass
public void beforeTest() {
setTestInfo(ApiModule.Lunar_Reserve, "API_getGroupBookingRules", LoginAccount.GYM_MINIAPPC, Terminal.minApp, "xym");
super.beforeTest();
}
@DataProvider
public Object[][] dataProvider() {
Random random = new Random();
int bookingSeatCount = random.nextInt(10) + 1; // 席位
return new Object[][]{
{true, bookingSeatCount, true, true, random.nextInt(30) + 10, true, random.nextInt(1000) + 10, random.nextInt(5) + 1, true, random.nextInt(1000) + 10, "minutes", true, random.nextInt(1000) + 10, "minutes"},
{false, bookingSeatCount, false, false, random.nextInt(30) + 10, false, random.nextInt(1000) + 10, random.nextInt(5) + 1, false, random.nextInt(1000) + 10, "minutes", false, random.nextInt(1000) + 10, "minutes"},
};
}
@Test(dataProvider = "dataProvider")
public void testGetGroupBookingRules(boolean allowQueuing, int bookingSeatCount, boolean xcxAutoSignIn, boolean scanSignIn, int signInBeforeMinutes,
boolean bookingStartRuleRequest, int startComingDayMinuteOffset, int startComingDays, boolean bookingEndRuleRequest,
int endBeforeMinutes, String endBeforeUnit, boolean cancelBookingRuleRequest, int cancelBookingBeforeMinutes, String cancelBookingBeforeUnit) {
DataUserInfo dataUserInfo = new DataUserInfo();
dataUserInfo.setTerminal(Terminal.B);
dataUserInfo.setLoginUser(LoginAccount.GYM_PROD);
JSONObject getRules = ruleTools.getGroupBookingRules(); // 获取场馆团课预约规则
String id = getRules.getString("id"); // 获取规则id
ruleTools.saveGroupBookingRules(id, allowQueuing, bookingSeatCount, xcxAutoSignIn, scanSignIn, signInBeforeMinutes, bookingStartRuleRequest, startComingDayMinuteOffset, startComingDays, bookingEndRuleRequest, endBeforeMinutes, endBeforeUnit, cancelBookingRuleRequest, cancelBookingBeforeMinutes, cancelBookingBeforeUnit,dataUserInfo);
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
throw new RuntimeException(e);
}
getRules = reserveCTools.getGroupBookingRules();
for (int i = 0; i < 14; i++){
Assert.assertEquals(getRules.getBooleanValue("allowQueuing"),allowQueuing);
Assert.assertEquals(getRules.getIntValue("bookingSeatCount"),bookingSeatCount);
Assert.assertEquals(getRules.getBooleanValue("xcxAutoSignIn"),xcxAutoSignIn);
Assert.assertEquals(getRules.getBooleanValue("scanSignIn"),scanSignIn);
Assert.assertEquals(getRules.getIntValue("signInBeforeMinutes"),signInBeforeMinutes);
if (bookingStartRuleRequest){ // 预约时间限制
Assert.assertEquals(getRules.getJSONObject("groupBookingStartRuleVO").getIntValue("bookingStartComingDays"),startComingDays);
Assert.assertEquals(getRules.getJSONObject("groupBookingStartRuleVO").getIntValue("bookingStartComingDayMinuteOffset"),startComingDayMinuteOffset);
}
Assert.assertEquals(getRules.getJSONObject("groupBookingStartRuleVO").getBooleanValue("limit"),bookingStartRuleRequest);
if (bookingEndRuleRequest){ // 截止预约时间限制
Assert.assertEquals(getRules.getJSONObject("groupBookingEndRuleVO").getIntValue("bookingEndBeforeMinutes"),endBeforeMinutes);
Assert.assertEquals(getRules.getJSONObject("groupBookingEndRuleVO").getString("bookingEndBeforeUnit"),endBeforeUnit);
}
Assert.assertEquals(getRules.getJSONObject("groupBookingEndRuleVO").getBooleanValue("limit"),bookingEndRuleRequest);
if (cancelBookingRuleRequest){ // 取消预约限制
Assert.assertEquals(getRules.getJSONObject("cancelGroupBookingRuleVO").getIntValue("cancelBookingBeforeMinutes"),cancelBookingBeforeMinutes);
Assert.assertEquals(getRules.getJSONObject("cancelGroupBookingRuleVO").getString("cancelBookingBeforeUnit"),cancelBookingBeforeUnit);
}
Assert.assertEquals(getRules.getJSONObject("cancelGroupBookingRuleVO").getBooleanValue("limit"),cancelBookingRuleRequest);
}
}
}
\ No newline at end of file
package com.xiaomai.cases.lunar.reserve;
import com.alibaba.fastjson.JSONObject;
import com.xiaomai.basetest.BaseTestImpl;
import com.xiaomai.cases.lunar.user.UserTools;
import com.xiaomai.enums.ApiModule;
import com.xiaomai.enums.LoginAccount;
import com.xiaomai.enums.RequestType;
import com.xiaomai.enums.Terminal;
import com.xiaomai.utils.TimeUtils;
import org.testng.annotations.BeforeClass;
import org.testng.annotations.Test;
import javax.annotation.Resource;
/**
* @BelongsProject: xm-sportstest
* @BelongsPackage: com.xiaomai.cases.lunar.reserve
* @Author: xuyamei
* @CreateTime: 2024-06-25 11:55
* @Description:
* @Version: 1.0
*/
public class TestMemberTimetable extends BaseTestImpl {
@Resource(name = "userTools")
UserTools userTools;
@BeforeClass
public void beforeTest(){
setTestInfo(ApiModule.Lunar_Reserve,"API_memberTimetable", LoginAccount.GYM_MINIAPPC, Terminal.minApp,"xym");
super.beforeTest();
}
@Test
public void testMemberTimetable() {
String memberId = userTools.getMemberInfo().getString("memberId");
JSONObject body = new JSONObject();
body.put("brandId", xmAppApi.getLoginInfo().getBrandId());
body.put("studioId", xmAppApi.getLoginInfo().getStudioId());
body.put("startDate", TimeUtils.getTodayTime());
body.put("endDate",TimeUtils.getTodayEndTime());
body.put("courseChooseEnum","ALL");
body.put("memberId",memberId);
xmAppApi.doRequest(RequestType.JSON,params,body.toString(),headers).assetsSuccess(true);
}
}
package com.xiaomai.cases.lunar.reserve;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.xiaomai.basetest.BaseTestImpl;
import com.xiaomai.cases.lunar.user.UserTools;
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.reserve.ReserveTools;
import com.xiaomai.cases.polar.schedule.group.GroupScheduleTools;
import com.xiaomai.cases.polar.setting.courseCategory.CourseCategoryTools;
import com.xiaomai.cases.polar.setting.rules.RuleTools;
import com.xiaomai.client.DataUserInfo;
import com.xiaomai.enums.ApiModule;
import com.xiaomai.enums.LoginAccount;
import com.xiaomai.enums.Terminal;
import com.xiaomai.utils.CommUtil;
import com.xiaomai.utils.TimeUtils;
import com.xiaomai.utils.XMJSONPath;
import org.testng.Assert;
import org.testng.annotations.BeforeClass;
import org.testng.annotations.DataProvider;
import org.testng.annotations.Test;
import javax.annotation.Resource;
import java.math.BigDecimal;
import java.time.LocalDateTime;
import java.util.ArrayList;
import java.util.Random;
/**
* @BelongsProject: xm-sportstest
* @BelongsPackage: com.xiaomai.cases.lunar.reserve
* @Author: xuyamei
* @CreateTime: 2024-06-26 16:05
* @Description: 小程序签到
* @Version: 1.0
*/
public class TestXCXSignIn extends BaseTestImpl {
@Resource(name = "userTools")
UserTools userTools;
@Resource(name = "reserveCTools")
ReserveCTools reserveCTools;
@Resource(name = "courseCategoryTools")
CourseCategoryTools courseCategoryTools;
@Resource(name = "courseTools")
CourseTools courseTools;
@Resource(name = "reserveTools")
ReserveTools reserveTools;
@Resource(name = "groupScheduleTools")
GroupScheduleTools groupScheduleTools;
@Resource(name = "ruleTools")
RuleTools ruleTools;
OrderTools orderTools = new OrderTools();
CardTools cardTools = new CardTools();
String todayStartTimeTamp = CommUtil.oneKeyGetAddDay(0);
//获取今天结束日期的时间戳
String todayEndDateTimeTamp = CommUtil.getNDayEndTimeTamp(0);
Long scheduleEndTime = TimeUtils.getTodayEndTime(0);
private String ruldId;
private JSONArray memberInfo = new JSONArray();
private String scheduleId;
private Long startTime;
private String courseId;
private String memberId;
private String chiefCoachId;
@BeforeClass
public void beforeTest(){
setTestInfo(ApiModule.Lunar_Reserve,"API_signInByScanCode", LoginAccount.GYM_MINIAPPC, Terminal.minApp,"xym");
super.beforeTest();
}
@DataProvider
public Object[][] dataProvider() {
return new Object[][]{
// 参数说明:第一个参数:是否要重新预约,第二个参数:是否开启手动签到,第三个参数:是否开启扫码签到,第四个参数:签到前几分钟,第五个参数:备注
{true,false,false,5,"SIGN_IN_CONFIG_CLOSED","签到失败,不支持直接确认签到","签到失败,不支持扫码签到","小程序扫码和手动签到关闭"},
{false,true,false,5,"SIGN_IN_CONFIG_CLOSED","签到失败,课次未开始签到","签到失败,不支持扫码签到","小程序扫码签到关闭"},
{false,false,true,5,"DO_NOT_START_SIGN_IN","签到失败,不支持直接确认签到","签到失败,课次未开始签到","小程序手动签到关闭"},
{false,true,true,5,"DO_NOT_START_SIGN_IN","签到失败,课次未开始签到","签到失败,课次未开始签到","小程序扫码和手动签到开启,但是没有到可签到时间"},
{false,true,true,999,"","","","小程序扫码和手动签到开启,可签到"},
{false,true,true,5,"HAS_SIGNED","签到失败,已经签到,无需重复操作","签到失败,已经签到,无需重复操作","小程序扫码和手动签到开启,再次签到提示"},
{true,true,true,990,"","","","小程序扫码和手动签到开启,可签到"}
};
}
@Test(description = "造约课数据-->进行手动确认签到和扫码签到",dataProvider = "dataProvider")
public void testXCXSignIn(boolean flag,boolean autoSignIn,boolean scanCode,int signInBeforeMinutes,String checkMessage,String signMessage,String scanMessage, String remark) {
DataUserInfo dataUserInfo = new DataUserInfo();
dataUserInfo.setTerminal(Terminal.B);
dataUserInfo.setLoginUser(LoginAccount.GYM_PROD);
// 预约规则开启允许排队
JSONObject getRules = ruleTools.getGroupBookingRules(); // 获取场馆团课预约规则
String id = getRules.getString("id"); // 获取规则id
Random random = new Random();
int bookingSeatCount = random.nextInt(10) + 1; // 席位
ruleTools.saveGroupBookingRules(id, true, bookingSeatCount, autoSignIn, scanCode, signInBeforeMinutes, false, random.nextInt(100) + 10, random.nextInt(5) + 1, false, random.nextInt(100) + 10, "minutes", false, random.nextInt(100) + 10, "minutes");
if (flag) {
memberId = userTools.getMemberInfo().getString("memberId");
// 创建团课课次
LocalDateTime currentDateTime = LocalDateTime.now();
int hour = currentDateTime.getHour();
int minutes = currentDateTime.getMinute();
Random rand = new Random();
int minute = signInBeforeMinutes == 990 ? hour*60+minutes-rand.nextInt(100)+10 : hour*60+minutes+10 ;
createGroupSchedule(minute);
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
throw new RuntimeException(e);
}
// 获取会员权益
memberInfo = getMemberBenefit(memberId);
// 课次详情获取上课老师和教练id
JSONObject memberScheduleItemDetail = reserveCTools.getMemberScheduleItemDetail(scheduleId, memberId);
startTime = memberScheduleItemDetail.getLongValue("startTime");
chiefCoachId = memberScheduleItemDetail.getString("chiefCoachId");
if (signInBeforeMinutes == 990){
// B端代预约
String reserveId = reserveTools.addReserve("","",memberInfo.getString(1),chiefCoachId,memberInfo.getString(0),1,scheduleId,startTime,true,dataUserInfo);
memberInfo.set(2,reserveId);
}else {
String reserveId = reserveCTools.memberReserveAdd("", chiefCoachId, memberInfo.getString(1), "", memberInfo.getString(0), 1, scheduleId, startTime, true);
if (memberInfo.size() > 2) {
memberInfo.set(2, reserveId);
} else {
memberInfo.add(reserveId);
}
}
try {
Thread.sleep(2000);
} catch (InterruptedException e) {
throw new RuntimeException(e);
}
}
if (signInBeforeMinutes == 999){
// 手动签到
reserveCTools.signIn(true,memberInfo.getString(2),memberId);
try {
Thread.sleep(2000);
} catch (InterruptedException e) {
throw new RuntimeException(e);
}
checkResult("小程序扫码签到");
} else if (signInBeforeMinutes == 990){
// 扫码签到
reserveCTools.signInByScanCode(true,scheduleId,memberId);
try {
Thread.sleep(2000);
} catch (InterruptedException e) {
throw new RuntimeException(e);
}
checkResult("小程序手动签到");
}else{
String code = reserveCTools.queryPreSignInCheck(true,scheduleId,memberId);
Assert.assertEquals(code, checkMessage);
// 扫码签到
String message = reserveCTools.signIn(false,memberInfo.getString(2),memberId);
Assert.assertEquals(message, signMessage);
// 收到签到
message = reserveCTools.signInByScanCode(false,scheduleId,memberId);
Assert.assertEquals(message, scanMessage);
}
}
public void createGroupSchedule(int minute){
DataUserInfo dataUserInfo = new DataUserInfo();
dataUserInfo.setTerminal(Terminal.B);
dataUserInfo.setLoginUser(LoginAccount.GYM_PROD);
// 查询存量的约课课程
// 查询存量的课程分类
String categoryId = courseCategoryTools.getCourseCategoryPage("瑜伽");
courseId = courseTools.getPersonalOrGroupCourseId("GROUP", "C端点名瑜伽团课课程", categoryId, "STUDIO", "", 2, 1,dataUserInfo).getString(0);
// 创建排课
//1.1-创建排课日程
groupScheduleTools.createGroupRuleSchedule(courseId, dataApi.getLoginInfo().getAdminId(), todayStartTimeTamp, todayEndDateTimeTamp, new ArrayList(), new ArrayList(), true, 1,minute,dataUserInfo);
//1.2-查询排课日程
JSONArray getGroupRuleScheduleList = groupScheduleTools.getGroupRuleScheduleList(courseId, dataApi.getLoginInfo().getAdminId(),dataUserInfo);
//统计查询到的目标日程数量
ruldId = XMJSONPath.readPath(getGroupRuleScheduleList.getJSONObject(0), "$.ruleId");
System.out.println("--------"+ruldId);
Long scheduleEndTime = TimeUtils.getTodayEndTime(0);
try {
Thread.sleep(2500);
} catch (InterruptedException e) {
throw new RuntimeException(e);
}
// 查询课次id
JSONArray memberTimetable = reserveCTools.memberTimetable(memberId,Long.valueOf(todayStartTimeTamp), scheduleEndTime);
for (int i = 0; i < memberTimetable.size(); i++){
if (memberTimetable.getJSONObject(i).containsKey("ruleId") && memberTimetable.getJSONObject(i).getString("ruleId").equals(ruldId)){
scheduleId = memberTimetable.getJSONObject(i).getString("scheduleId");
break;
}
}
}
/**
* @description:买卡
* @author: xuyamei
* @date: 2024/6/24 19:42
* @param courseId 课程id
* @param memberId 会员id
* @return: void
**/
public void signOrder(String courseId,String memberId){
DataUserInfo dataUserInfo = new DataUserInfo();
dataUserInfo.setTerminal(Terminal.B);
dataUserInfo.setLoginUser(LoginAccount.GYM_PROD);
// 查询存量的卡
JSONObject fetchPageOfMemberCard = cardTools.fetchPageOfMemberCard(courseId,dataUserInfo);
int total = Integer.parseInt(fetchPageOfMemberCard.getString("total"));
String cardId = "";
BigDecimal quantity = new BigDecimal(0);
float price = 0;
int validPeriod = 0;
if (total == 0) {
cardId = cardTools.memberCardCreate("约课使用会员卡"+ TimeUtils.getCurrentTime(),dataUserInfo).getString("result");
}
cardId = fetchPageOfMemberCard.getJSONArray("records").getJSONObject(0).getString("id");
quantity = new BigDecimal(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,dataApi.getLoginInfo().getBrandId(),dataApi.getLoginInfo().getStudioId(),dataApi.getLoginInfo().getAdminId(),dataUserInfo).getJSONObject("result").getString("latestSnapshotId");
//检查会员对该卡是否超出购买上限
boolean limitResult= orderTools.checkAllowPurchase("MEMBER_CARD",cardId,cardId,"1",dataApi.getLoginInfo().getBrandId(),dataApi.getLoginInfo().getStudioId(),dataApi.getLoginInfo().getAdminId(),dataUserInfo).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, price/2,"PURCHASE",
"MEMBER_CARD",memberId,price-price/2,price-price/2,"1",dataUserInfo);
}
}
/**
* @description:查询会员是否购买会员卡,如果已购买则查看权益,如果没有则进行购买
* @author: xuyamei
* @date: 2024/6/24 19:43
* @param memberId:会员id
* @return:
**/
public JSONArray getMemberBenefit(String memberId){
// 查询是否有可用的会员卡,没有则购买
JSONArray listUserReservableBenefit = reserveCTools.listUserReservableBenefit(courseId, "GROUP_CLASS", "MEMBER", memberId, Long.parseLong(todayStartTimeTamp));
if (listUserReservableBenefit.size() == 0) {
// 购买适用的会员卡
signOrder(courseId, memberId);
try {
Thread.sleep(2000);
} catch (InterruptedException e) {
throw new RuntimeException(e);
}
listUserReservableBenefit = reserveCTools.listUserReservableBenefit(courseId, "GROUP_CLASS", "MEMBER", memberId, Long.parseLong(todayStartTimeTamp));
}
// 查询权益
String benefitId = listUserReservableBenefit.getJSONObject(0).getString("benefitId");
JSONArray members = new JSONArray();
members.add(memberId);
members.add(benefitId);
return members;
}
public void checkResult(String mes){
// check 1:查询小程序课次详情,学员是签到状态
JSONObject memberScheduleItemDetail = reserveCTools.getMemberScheduleItemDetail(scheduleId,memberId);
String[] result = new String[] {"memberId","scheduleId","reserveId","reserveState","benefitId","courseType","signInState"};
String[] resultData = new String[] {memberInfo.getString(0),scheduleId,memberInfo.getString(2),"SUCCESS",memberInfo.getString(1),"GROUP_CLASS","SIGNED"};
for(int j = 0;j<4;j++){
Assert.assertEquals(memberScheduleItemDetail.getJSONObject("memberScheduleInfoVO").getString(result[j]),resultData[j],mes+"产生的数据与实际数据不符合"+result[j]+":"+resultData[j]);
}
// check 2:查询小程序预约记录
JSONArray getPageByMember = reserveCTools.getPageByMember("SIGNED","",startTime,scheduleEndTime,memberId,"GROUP_CLASS");
boolean success = false;
for(int i =0;i<getPageByMember.size();i++){
if (getPageByMember.getJSONObject(i).getString("id").equals(memberInfo.getString(2))){
success = true;
for(int j = 0;j<result.length;j++){
String resultString = result[j].equals("reserveId")?"id":result[j];
Assert.assertEquals(getPageByMember.getJSONObject(i).getString(resultString),resultData[j],mes+"产生的数据与实际数据不符合"+result[j]+":"+resultData[j]);
}
Assert.assertEquals(getPageByMember.getJSONObject(i).getString("memberId"),memberInfo.getString(0),"查询的"+mes+"数据不是同一个会员");
}
}
Assert.assertTrue(success,mes+"预约记录没有查询到相关信息");
// check 3:查询小程序预约详情
JSONObject getDetailById = reserveCTools.getDetailById(memberInfo.getString(2));
for(int j = 0;j<result.length;j++){
String resultString = result[j].equals("reserveId")?"id":result[j];
Assert.assertEquals(getDetailById.getString(resultString),resultData[j],mes+"产生的数据与实际数据不符合"+result[j]+":"+resultData[j]);
}
Assert.assertEquals(getDetailById.getString("memberId"),memberInfo.getString(0),"查询的"+mes+"数据不是同一个会员");
// check 4:查询B端预约详情
DataUserInfo dataUserInfo = new DataUserInfo();
dataUserInfo.setTerminal(Terminal.B);
dataUserInfo.setLoginUser(LoginAccount.GYM_PROD);
result = new String[] {"id","benefitId","reserveMemberNum","courseId","courseType","scheduleStartTime","reserveState","scheduleId","signInState"};
resultData = new String[] {memberInfo.getString(2),memberInfo.getString(1),"1",courseId,"GROUP_CLASS",startTime+"","SUCCESS",scheduleId,"SIGNED"};
getDetailById = reserveTools.getDetailById(memberInfo.getString(2),dataUserInfo);
for(int j = 0;j<result.length;j++){
Assert.assertEquals(getDetailById.getString(result[j]),resultData[j],mes+"产生的数据与实际数据不符合"+result[j]+":"+resultData[j]);
}
Assert.assertEquals(getDetailById.getString("memberId"),memberInfo.getString(0),"查询的"+mes+"数据不是同一个会员");
// check 5:课次学员是否包含该会员且会员状态为已签到
JSONObject getScheduleItemDetail = groupScheduleTools.getScheduleItemDetail(scheduleId,dataUserInfo);
JSONArray reserveIds = getScheduleItemDetail.getJSONArray("memberReserveList");
success = false;
for (int i = 0; i < reserveIds.size(); i++){
if(reserveIds.getJSONObject(i).getString("id").equals(memberInfo.getString(2))){
success = true;
Assert.assertEquals(reserveIds.getJSONObject(i).getString("signInState"),"SIGNED","签到状态错误");
}
}
Assert.assertTrue(success,"约课后点名课次详情学员不在课次中");
}
}
package com.xiaomai.cases.lunar.user;
import com.alibaba.fastjson.JSONObject;
import com.xiaomai.client.DataUserInfo;
import com.xiaomai.enums.ApiModule;
import com.xiaomai.enums.RequestType;
import com.xiaomai.enums.Terminal;
import com.xiaomai.utils.XMBaseTest;
import org.springframework.stereotype.Component;
/**
* @BelongsProject: xm-sportstest
* @BelongsPackage: com.xiaomai.cases.lunar.reserve.user
* @Author: xuyamei
* @CreateTime: 2024-06-25 13:42
* @Description: TODO
* @Version: 1.0
*/
@Component("userTools")
public class UserTools extends XMBaseTest {
public void setUP(String apiName, DataUserInfo... userInfo) {
dataApi.setApiModule(ApiModule.Lunar_User)
.setApiName(apiName)
.setTerminal(Terminal.minApp);
super.beforeDataRequest(userInfo);
}
/**
* @description: 获取会员信息
* @author: xuyamei
* @date: 2024/6/25 13:50
* @param userInfo
* @return: com.alibaba.fastjson.JSONObject
**/
public JSONObject getMemberInfo(DataUserInfo... userInfo) {
setUP("API_getMemberInfo", userInfo);
JSONObject body = new JSONObject();
body.put("userId",dataApi.getLoginInfo().getUser());
body.put("brandId",dataApi.getLoginInfo().getBrandId());
dataApi.doRequest(RequestType.JSON,dataparams,body.toString(),dataheadrs).assetsSuccess(true);
return dataApi.getBodyInJSON().getJSONObject("result");
}
}
...@@ -35,7 +35,7 @@ public class AdminTools extends XMBaseTest { ...@@ -35,7 +35,7 @@ public class AdminTools extends XMBaseTest {
super.beforeDataRequest(dataUserInfos); super.beforeDataRequest(dataUserInfos);
JSONObject body = new JSONObject(); JSONObject body = new JSONObject();
body.put("phone", RandomStringUtil.randomMobile("100")); body.put("phone", RandomStringUtil.randomMobile("103"));
String name = RandomStringUtil.random_name(); String name = RandomStringUtil.random_name();
body.put("name", name); body.put("name", name);
body.put("nickName", name); body.put("nickName", name);
...@@ -117,11 +117,11 @@ public class AdminTools extends XMBaseTest { ...@@ -117,11 +117,11 @@ public class AdminTools extends XMBaseTest {
* @param adminId:员工id * @param adminId:员工id
* @return: com.alibaba.fastjson.JSONObject * @return: com.alibaba.fastjson.JSONObject
**/ **/
public JSONObject getStudioAdmin(String adminId){ public JSONObject getStudioAdmin(String adminId,DataUserInfo...dataUserInfo){
dataApi.setApiModule(ApiModule.Polar_Admin) dataApi.setApiModule(ApiModule.Polar_Admin)
.setApiName("API_getStudioAdmin") .setApiName("API_getStudioAdmin")
.setTerminal(Terminal.B); .setTerminal(Terminal.B);
super.beforeDataRequest(); super.beforeDataRequest(dataUserInfo);
String body = "{\"id\":\""+adminId+"\"}"; String body = "{\"id\":\""+adminId+"\"}";
dataApi.doRequest(RequestType.JSON,dataparams,body,dataheadrs).assetsSuccess(true); dataApi.doRequest(RequestType.JSON,dataparams,body,dataheadrs).assetsSuccess(true);
...@@ -134,10 +134,27 @@ public class AdminTools extends XMBaseTest { ...@@ -134,10 +134,27 @@ public class AdminTools extends XMBaseTest {
* @param body:请求参数 * @param body:请求参数
* @return: com.alibaba.fastjson.JSONObject * @return: com.alibaba.fastjson.JSONObject
**/ **/
public JSONObject pageStudioAdmin(String body){ public JSONObject pageStudioAdmin(String body,DataUserInfo...userInfo){
dataApi.setApiModule(ApiModule.Polar_Admin) dataApi.setApiModule(ApiModule.Polar_Admin)
.setApiName("API_pageStudioAdmin") .setApiName("API_pageStudioAdmin")
.setTerminal(Terminal.B); .setTerminal(Terminal.B);
super.beforeDataRequest(userInfo);
dataApi.doRequest(RequestType.JSON,dataparams,body,dataheadrs).assetsSuccess(true);
return dataApi.getBodyInJSON();
}
/**
* @description:查询帐号下可切换的场馆列表
* @author: yangjian
* @date: 2024/2/29 17:58
* @param body:请求参数
* @return: com.alibaba.fastjson.JSONObject
**/
public JSONObject pagelistAdmins(String body){
dataApi.setApiModule(ApiModule.Polar_Admin)
.setApiName("API_listAdmins")
.setTerminal(Terminal.B);
super.beforeDataRequest(); super.beforeDataRequest();
dataApi.doRequest(RequestType.JSON,dataparams,body,dataheadrs).assetsSuccess(true); dataApi.doRequest(RequestType.JSON,dataparams,body,dataheadrs).assetsSuccess(true);
...@@ -221,6 +238,127 @@ public class AdminTools extends XMBaseTest { ...@@ -221,6 +238,127 @@ public class AdminTools extends XMBaseTest {
dataApi.doRequest(RequestType.JSON,dataparams,body,dataheadrs).assetsSuccess(true); dataApi.doRequest(RequestType.JSON,dataparams,body,dataheadrs).assetsSuccess(true);
} }
/**
* @description:检查手机号是品牌下场馆的主账号
* @author: xuyamei
* @date: 2024/7/1 11:06
* @param dataUserInfo
* @return: com.alibaba.fastjson.JSONArray
**/
public JSONArray findStudioBossInBrand(DataUserInfo...dataUserInfo) {
dataApi.setApiModule(ApiModule.Polar_Admin)
.setApiName("API_findStudioBossInBrand")
.setTerminal(Terminal.B);
super.beforeDataRequest(dataUserInfo);
JSONObject body = new JSONObject();
body.put("id", dataApi.getLoginInfo().getAdminId());
body.put("brandId", dataApi.getLoginInfo().getBrandId());
body.put("studioId", dataApi.getLoginInfo().getStudioId());
body.put("operatorId", dataApi.getLoginInfo().getAdminId());
dataApi.doRequest(RequestType.JSON,dataparams,body.toString(),dataheadrs).assetsSuccess(true);
return dataApi.getBodyInJSON().getJSONArray("result");
}
/**
* @description:获取手机号在品牌下对应的员工
* @author: xuyamei
* @date: 2024/7/1 11:20
* @param phone
* @param dataUserInfo
* @return: com.alibaba.fastjson.JSONObject
**/
public JSONObject getAdminByPhone(String phone,DataUserInfo...dataUserInfo) {
dataApi.setApiModule(ApiModule.Polar_Admin)
.setApiName("API_getAdminByPhone")
.setTerminal(Terminal.B);
super.beforeDataRequest(dataUserInfo);
JSONObject body = new JSONObject();
body.put("phone", phone);
body.put("brandId", dataApi.getLoginInfo().getBrandId());
body.put("studioId", dataApi.getLoginInfo().getStudioId());
body.put("operatorId", dataApi.getLoginInfo().getAdminId());
dataApi.doRequest(RequestType.JSON,dataparams,body.toString(),dataheadrs).assetsSuccess(true);
return dataApi.getBodyInJSON().getJSONObject("result");
}
/**
* @description 复用已有员工信息
* @author: xuyamei
* @date: 2024/7/1 11:37
* @param body :请求参数
* @param dataUserInfo
* @return: void
**/
public void useBrandAdmin(JSONObject body,DataUserInfo...dataUserInfo) {
dataApi.setApiModule(ApiModule.Polar_Admin)
.setApiName("API_useBrandAdmin")
.setTerminal(Terminal.B);
super.beforeDataRequest(dataUserInfo);
body.put("operatorId", dataApi.getLoginInfo().getAdminId());
body.put("studioId", dataApi.getLoginInfo().getStudioId());
dataApi.doRequest(RequestType.JSON,dataparams,body.toString(),dataheadrs).assetsSuccess(true);
}
/**
* @description:校验场馆员工离职
* @author: xuyamei
* @date: 2024/7/1 16:16
* @param userInfo
* @return: com.alibaba.fastjson.JSONObject
**/
public JSONObject checkDepartStudioAdmin(String id,DataUserInfo...userInfo){
dataApi.setApiModule(ApiModule.Polar_Admin)
.setApiName("API_checkDepartStudioAdmin")
.setTerminal(Terminal.B);
super.beforeDataRequest(userInfo);
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", id);
dataApi.doRequest(RequestType.JSON,dataparams,body.toString(),dataheadrs).assetsSuccess(true);
return dataApi.getBodyInJSON().getJSONObject("result");
}
/**
* @description:校验取消授课或者移除所授课程
* @author: xuyamei
* @date: 2024/7/1 16:54
* @param id :员工id
* @param teaching :是否授课
* @param coachTeachingTypes :授课类型 ["LEAGUE_CLASS","PERSONAL_TRAINERS", "TRAINING_CAMP"]
* @param userInfo
* @return: com.alibaba.fastjson.JSONObject
**/
public JSONObject checkModifyTeaching(String id,boolean teaching,JSONArray coachTeachingTypes,DataUserInfo...userInfo){
dataApi.setApiModule(ApiModule.Polar_Admin)
.setApiName("API_checkModifyTeaching")
.setTerminal(Terminal.B);
super.beforeDataRequest(userInfo);
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",id);
JSONObject teach = new JSONObject();
teach.put("teaching", teaching); // 是否授课
teach.put("coachTeachingTypes", coachTeachingTypes);
body.put("teaching",teach);
dataApi.doRequest(RequestType.JSON,dataparams,body.toString(),dataheadrs).assetsSuccess(true);
return dataApi.getBodyInJSON().getJSONObject("result");
}
} }
package com.xiaomai.cases.polar.admin; package com.xiaomai.cases.polar.admin;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import com.xiaomai.basetest.BaseTestImpl; import com.xiaomai.basetest.BaseTestImpl;
import com.xiaomai.cases.polar.studioConfig.ConfigTools; import com.xiaomai.cases.polar.studioConfig.ConfigTools;
import com.xiaomai.client.DataUserInfo;
import com.xiaomai.enums.ApiModule; import com.xiaomai.enums.ApiModule;
import com.xiaomai.enums.LoginAccount; import com.xiaomai.enums.LoginAccount;
import com.xiaomai.enums.Terminal; import com.xiaomai.enums.Terminal;
...@@ -11,7 +13,6 @@ import org.testng.annotations.BeforeClass; ...@@ -11,7 +13,6 @@ import org.testng.annotations.BeforeClass;
import org.testng.annotations.Test; import org.testng.annotations.Test;
import javax.annotation.Resource; import javax.annotation.Resource;
import javax.swing.*;
import java.util.Random; import java.util.Random;
/** /**
...@@ -28,6 +29,7 @@ public class TestAddStudioAdmin extends BaseTestImpl { ...@@ -28,6 +29,7 @@ public class TestAddStudioAdmin extends BaseTestImpl {
@Resource(name = "configTools") @Resource(name = "configTools")
ConfigTools configTools; ConfigTools configTools;
private String phone;
@BeforeClass @BeforeClass
public void beforeTest(){ public void beforeTest(){
...@@ -39,6 +41,7 @@ public class TestAddStudioAdmin extends BaseTestImpl { ...@@ -39,6 +41,7 @@ public class TestAddStudioAdmin extends BaseTestImpl {
public void testAddStudioAdmin(){ public void testAddStudioAdmin(){
String[] role = {"店长","教练","销售主管","财务","前台"}; String[] role = {"店长","教练","销售主管","财务","前台"};
Random rand = new Random(); Random rand = new Random();
JSONObject addRequest = adminTools.addStudioAdmin(role[rand.nextInt(5)]); JSONObject addRequest = adminTools.addStudioAdmin(role[rand.nextInt(5)]);
// 添加角色成功后 // 添加角色成功后
String result = dataApi.getBodyInJSON().getString("result"); String result = dataApi.getBodyInJSON().getString("result");
...@@ -49,6 +52,7 @@ public class TestAddStudioAdmin extends BaseTestImpl { ...@@ -49,6 +52,7 @@ public class TestAddStudioAdmin extends BaseTestImpl {
} }
// 查询员工详情内容 // 查询员工详情内容
JSONObject adminInfo = adminTools.getStudioAdmin(result); JSONObject adminInfo = adminTools.getStudioAdmin(result);
phone = adminInfo.getJSONObject("result").getString("phone");
String[] resultString = {"name","phone","roles","teaching"}; // 新建之后验证相应的值 String[] resultString = {"name","phone","roles","teaching"}; // 新建之后验证相应的值
for (int i = 0; i < resultString.length; i++){ for (int i = 0; i < resultString.length; i++){
// check 1:创建员工时的值与查询员工详情时的值是否一致 // check 1:创建员工时的值与查询员工详情时的值是否一致
...@@ -58,7 +62,7 @@ public class TestAddStudioAdmin extends BaseTestImpl { ...@@ -58,7 +62,7 @@ public class TestAddStudioAdmin extends BaseTestImpl {
} }
try { try {
Thread.sleep(2000); Thread.sleep(10000);
} catch (InterruptedException e) { } catch (InterruptedException e) {
throw new RuntimeException(e); throw new RuntimeException(e);
} }
...@@ -69,10 +73,48 @@ public class TestAddStudioAdmin extends BaseTestImpl { ...@@ -69,10 +73,48 @@ public class TestAddStudioAdmin extends BaseTestImpl {
} }
@Test(description = "添加员工,由于没有删除员工的操作,则每次随机取一个角色") @Test(description = "将添加的手机号在同品牌下其他场馆添加复用",priority = 1)
public void testAddStudioAdmin1(){ public void testAddStudioAdmin1(){
for (int i = 0; i < 2; i++){ // 切换到另外一个场馆
JSONObject addRequest = adminTools.addStudioAdmin("教练"); DataUserInfo dataUserInfo = new DataUserInfo();
dataUserInfo.setLoginUser(LoginAccount.GYM_PROD2);
String[] role = {"StudioOwner","StudioSaleManager","StudioFinance","StudioReception","StudioOwner"};
Random rand = new Random();
// 获取该手机号的员工信息
JSONObject getAdminByPhone = adminTools.getAdminByPhone(phone,dataUserInfo);
String adminId = getAdminByPhone.getString("id");
String name = getAdminByPhone.getString("name");
JSONArray roles = new JSONArray();
roles.add(role[rand.nextInt(5)]);
getAdminByPhone.put("roles",roles); // 角色
adminTools.useBrandAdmin(getAdminByPhone,dataUserInfo);
// 查询员工详情内容
JSONObject adminInfo = adminTools.getStudioAdmin(adminId,dataUserInfo);
String[] resultString = {"name","phone","roles","teaching"}; // 新建之后验证相应的值
for (int i = 0; i < resultString.length; i++){
// check 1:创建员工时的值与查询员工详情时的值是否一致
String checkResult = resultString[i].equals("roles") ? roles.getString(0) : getAdminByPhone.getString(resultString[i]);
String expected = resultString[i].equals("roles") ? adminInfo.getJSONObject("result").getJSONArray(resultString[i]).getJSONObject(0).getString("code") : adminInfo.getJSONObject("result").getString(resultString[i]);
Assert.assertEquals(checkResult,expected,"添加员工失败,员工详情与创建员工时的信息不一致");
}
try {
Thread.sleep(10000);
} catch (InterruptedException e) {
throw new RuntimeException(e);
} }
// check 2: 生成对应的操作日志
String body = "{\"current\":0,\"size\":10,\"domainId\":\""+dataApi.getLoginInfo().getStudioId()+"\",\"brandId\": \""+xmAppApi.getLoginInfo().getBrandId()+"\",\"studioId\": \""+dataApi.getLoginInfo().getStudioId()+"\",\"content\": \""+name+"\",\"opEventKey\":\"ADD_ADMIN\"}";
JSONObject response = configTools.getOpauditPage(body,dataUserInfo);
Assert.assertEquals(response.getJSONObject("result").getJSONArray("records").getJSONObject(0).getJSONObject("target").getString("targetId"),adminId,"添加员工未生成操作日志");
} }
} }
package com.xiaomai.cases.polar.admin;
import com.alibaba.fastjson.JSONObject;
import com.xiaomai.basetest.BaseTestImpl;
import com.xiaomai.client.DataUserInfo;
import com.xiaomai.enums.ApiModule;
import com.xiaomai.enums.LoginAccount;
import com.xiaomai.enums.Terminal;
import org.testng.Assert;
import org.testng.annotations.BeforeClass;
import org.testng.annotations.DataProvider;
import org.testng.annotations.Test;
import javax.annotation.Resource;
import java.util.Random;
/**
* @BelongsProject: xm-sportstest
* @BelongsPackage: com.xiaomai.cases.polar.admin
* @Author: xuyamei
* @CreateTime: 2024-07-01 16:17
* @Description: 校验场馆员工离职
* @Version: 1.0
*/
public class TestCheckDepartStudioAdmin extends BaseTestImpl {
@Resource(name = "adminTools")
AdminTools adminTools;
@BeforeClass
public void beforeTest(){
setTestInfo(ApiModule.Polar_Admin,"API_checkDepartStudioAdmin", LoginAccount.GYM_PROD, Terminal.B,"xym");
super.beforeTest();
}
@DataProvider
public Object[][] dataProvider(){
return new Object[][]{
{true},
{false}
};
}
@Test(dataProvider = "dataProvider")
public void checkDepartStudioAdmin(boolean isSuccess){
if (isSuccess){
// 查询的账号有不能离职的原因
JSONObject response = adminTools.checkDepartStudioAdmin(xmAppApi.getLoginInfo().getAdminId());
Assert.assertTrue(response.getJSONArray("disables").size()>0,"员工不能离职但是未返回不能离职的原因");
}else {
DataUserInfo dataUserInfo = new DataUserInfo();
dataUserInfo.setLoginUser(LoginAccount.GYM_PROD2);
// 查询的账号可以离职
String body = "{\"size\":20,\"current\":0,\"state\":\"DUTY\"}";
JSONObject adminPage = adminTools.pageStudioAdmin(body,dataUserInfo);
int total = Integer.parseInt(adminPage.getJSONObject("result").getString("total"));
if (total >0){
int pages = Integer.parseInt(adminPage.getJSONObject("result").getString("pages"));
// 随机获取一页
Random rand = new Random();
int pageIndex = rand.nextInt(pages);
// 随机获取一页的随机员工
Random random = new Random();
int index = pageIndex+1 == pages ? random.nextInt(total%20-1)+1 : random.nextInt(19)+1;
body = "{\"size\":20,\"current\":"+pageIndex+",\"state\":\"DUTY\"}";
adminPage = adminTools.pageStudioAdmin(body,dataUserInfo);
String adminId = adminPage.getJSONObject("result").getJSONArray("records").getJSONObject(index).getString("id");
JSONObject response = adminTools.checkDepartStudioAdmin(adminId,dataUserInfo);
Assert.assertTrue(response.getJSONArray("disables").size() == 0,"员工能离职但是未返回不能离职的原因");
}
}
}
}
package com.xiaomai.cases.polar.admin;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.xiaomai.basetest.BaseTestImpl;
import com.xiaomai.cases.polar.course.CourseTools;
import com.xiaomai.cases.polar.setting.courseCategory.CourseCategoryTools;
import com.xiaomai.enums.ApiModule;
import com.xiaomai.enums.LoginAccount;
import com.xiaomai.enums.Terminal;
import org.testng.Assert;
import org.testng.annotations.BeforeClass;
import org.testng.annotations.DataProvider;
import org.testng.annotations.Test;
import javax.annotation.Resource;
/**
* @BelongsProject: xm-sportstest
* @BelongsPackage: com.xiaomai.cases.polar.admin
* @Author: xuyamei
* @CreateTime: 2024-07-01 16:57
* @Description: 校验取消授课或者移除所授课程
* @Version: 1.0
*/
public class TestCheckModifyTeaching extends BaseTestImpl {
@Resource(name = "adminTools")
AdminTools adminTools;
@Resource(name = "courseTools")
CourseTools courseTools;
@Resource(name = "courseCategoryTools")
CourseCategoryTools courseCategoryTools;
@BeforeClass
public void beforeTest(){
setTestInfo(ApiModule.Polar_Admin,"API_addStudioAdmin", LoginAccount.GYM_PROD, Terminal.B,"xym");
super.beforeTest();
}
@DataProvider()
public Object[][] data() {
JSONArray coachTeachingTypes = new JSONArray();
coachTeachingTypes.add("LEAGUE_CLASS");
coachTeachingTypes.add("PERSONAL_TRAINERS");
coachTeachingTypes.add("TRAINING_CAMP");
return new Object[][]{
{false,coachTeachingTypes},
{true,coachTeachingTypes}
};
}
@Test(description = "测试修改老师授课状态",dataProvider = "data")
public void testCheckModifyTeaching(boolean teaching,JSONArray coachTeachingTypes) {
// 查询存量的课程分类
String categoryId = courseCategoryTools.getCourseCategoryPage("瑜伽");
// 查询私教课
courseTools.getPersonalOrGroupCourseId("PERSONAL","瑜伽",categoryId,"STUDIO","ONE_TO_MANY",2,1);
// 课程类型
if (teaching){
coachTeachingTypes.remove("PERSONAL_TRAINERS");
}
JSONObject response = adminTools.checkModifyTeaching(xmAppApi.getLoginInfo().getAdminId(),teaching,coachTeachingTypes);
Assert.assertTrue(response.getJSONArray("disables").size()>0,"修改是否授课或者还有其他关联业务关联不能移除 返回的结果是空");
}
}
...@@ -12,6 +12,7 @@ import org.testng.annotations.BeforeClass; ...@@ -12,6 +12,7 @@ import org.testng.annotations.BeforeClass;
import org.testng.annotations.Test; import org.testng.annotations.Test;
import javax.annotation.Resource; import javax.annotation.Resource;
import java.util.Random;
/** /**
* @BelongsProject: xm-sportstest * @BelongsProject: xm-sportstest
...@@ -31,20 +32,29 @@ public class TestDepartStudioAdmin extends BaseTestImpl { ...@@ -31,20 +32,29 @@ public class TestDepartStudioAdmin extends BaseTestImpl {
@BeforeClass @BeforeClass
@Override @Override
public void beforeTest() { public void beforeTest() {
setTestInfo(ApiModule.Polar_Admin,"API_departStudioAdmin", LoginAccount.GYM_PROD, Terminal.B,"xym"); setTestInfo(ApiModule.Polar_Admin,"API_departStudioAdmin", LoginAccount.GYM_PROD2, Terminal.B,"xym");
super.beforeTest(); super.beforeTest();
} }
@Test @Test
public void testDepartStudioAdmin() { public void testDepartStudioAdmin() {
// 获取在职员工 // 获取在职员工
String body = "{\"size\":10,\"current\":0,\"state\":\"DUTY\"}"; String body = "{\"size\":20,\"current\":0,\"state\":\"DUTY\"}";
JSONObject adminPage = adminTools.pageStudioAdmin(body); JSONObject adminPage = adminTools.pageStudioAdmin(body);
int total = Integer.parseInt(adminPage.getJSONObject("result").getString("total")); int total = Integer.parseInt(adminPage.getJSONObject("result").getString("total"));
if (total>1){ if (total>1){
String adminId = adminPage.getJSONObject("result").getJSONArray("records").getJSONObject(1).getString("id"); int pages = Integer.parseInt(adminPage.getJSONObject("result").getString("pages"));
String phone = adminPage.getJSONObject("result").getJSONArray("records").getJSONObject(1).getString("phone"); // 随机获取一页
String name = adminPage.getJSONObject("result").getJSONArray("records").getJSONObject(1).getString("name"); Random rand = new Random();
int pageIndex = rand.nextInt(pages);
// 随机获取一页的随机员工
Random random = new Random();
int index = pageIndex+1 == pages ? random.nextInt(total%20-1)+1 : random.nextInt(19)+1;
body = "{\"size\":20,\"current\":"+pageIndex+",\"state\":\"DUTY\"}";
adminPage = adminTools.pageStudioAdmin(body);
String adminId = adminPage.getJSONObject("result").getJSONArray("records").getJSONObject(index).getString("id");
String phone = adminPage.getJSONObject("result").getJSONArray("records").getJSONObject(index).getString("phone");
String name = adminPage.getJSONObject("result").getJSONArray("records").getJSONObject(index).getString("name");
body = "{\"id\":\""+adminId+"\"}"; body = "{\"id\":\""+adminId+"\"}";
xmAppApi.doRequest(RequestType.JSON,params,body,headers).assetsSuccess(true); xmAppApi.doRequest(RequestType.JSON,params,body,headers).assetsSuccess(true);
try { try {
...@@ -58,7 +68,7 @@ public class TestDepartStudioAdmin extends BaseTestImpl { ...@@ -58,7 +68,7 @@ public class TestDepartStudioAdmin extends BaseTestImpl {
total = Integer.parseInt(adminPage.getJSONObject("result").getString("total")); total = Integer.parseInt(adminPage.getJSONObject("result").getString("total"));
Assert.assertEquals(total,1,"员工离职失败,用手机号查询离职员工未返回数据"); Assert.assertEquals(total,1,"员工离职失败,用手机号查询离职员工未返回数据");
try { try {
Thread.sleep(1000); Thread.sleep(12000);
} catch (InterruptedException e) { } catch (InterruptedException e) {
throw new RuntimeException(e); throw new RuntimeException(e);
} }
......
package com.xiaomai.cases.polar.admin;
import com.alibaba.fastjson.JSONObject;
import com.xiaomai.basetest.BaseTestImpl;
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.annotations.BeforeMethod;
import org.testng.annotations.Test;
public class TestEditCurrentAdmin extends XMBaseTest {
@BeforeMethod
public void beforeTest(){
xmAppApi.setApiModule(ApiModule.Polar_Admin)
.setApiName("API_editCurrentAdmin")
.setLoginUser(LoginAccount.GYM_PROD)
.setTerminal(Terminal.B);
dal.setCase_owner("yj")
.setCase_name(Thread.currentThread().getStackTrace()[1].getFileName().split("\\.")[0]);
super.beforeTest();
}
@Test(description = "编辑个人资料")
public void testEditCurrentAdmin() {
Long birthDate = TimeUtils.getBeforeDayDate(7305);
JSONObject Object = new JSONObject();
Object.put("content", "自动化账户");
Object.put("imageId", "1761941332668588033");
JSONObject Object1 = new JSONObject();
Object1.put("intro", "自动化个人简介-个人资料编辑");
JSONObject jsonObject = new JSONObject();
jsonObject.put("coachInfo",Object1);
jsonObject.put("nickName","自动化昵称");
jsonObject.put("birthDate",birthDate);
jsonObject.put("gender","MAN");
jsonObject.put("id",xmAppApi.getLoginInfo().getAdminId());
jsonObject.put("avatar",Object);
xmAppApi.doRequest(RequestType.JSON, params, jsonObject.toJSONString(), headers).assetsSuccess(true);
}
}
...@@ -8,12 +8,14 @@ import com.xiaomai.enums.ApiModule; ...@@ -8,12 +8,14 @@ import com.xiaomai.enums.ApiModule;
import com.xiaomai.enums.LoginAccount; import com.xiaomai.enums.LoginAccount;
import com.xiaomai.enums.RequestType; import com.xiaomai.enums.RequestType;
import com.xiaomai.enums.Terminal; import com.xiaomai.enums.Terminal;
import com.xiaomai.utils.RandomStringUtil;
import com.xiaomai.utils.TimeUtils; import com.xiaomai.utils.TimeUtils;
import org.testng.Assert; import org.testng.Assert;
import org.testng.annotations.BeforeClass; import org.testng.annotations.BeforeClass;
import org.testng.annotations.Test; import org.testng.annotations.Test;
import javax.annotation.Resource; import javax.annotation.Resource;
import java.util.Random;
/** /**
* @BelongsProject: xm-sportstest * @BelongsProject: xm-sportstest
...@@ -31,7 +33,7 @@ public class TestEditStudioAdmin extends BaseTestImpl { ...@@ -31,7 +33,7 @@ public class TestEditStudioAdmin extends BaseTestImpl {
@BeforeClass @BeforeClass
@Override @Override
public void beforeTest() { public void beforeTest() {
setTestInfo(ApiModule.Polar_Admin,"API_editStudioAdmin", LoginAccount.GYM_PROD, Terminal.B,"xym"); setTestInfo(ApiModule.Polar_Admin,"API_editStudioAdmin", LoginAccount.GYM_PROD2, Terminal.B,"xym");
super.beforeTest(); super.beforeTest();
} }
...@@ -41,9 +43,18 @@ public class TestEditStudioAdmin extends BaseTestImpl { ...@@ -41,9 +43,18 @@ public class TestEditStudioAdmin extends BaseTestImpl {
JSONObject adminPage = adminTools.pageStudioAdmin(body); JSONObject adminPage = adminTools.pageStudioAdmin(body);
int total = Integer.parseInt(adminPage.getJSONObject("result").getString("total")); int total = Integer.parseInt(adminPage.getJSONObject("result").getString("total"));
if (total>1){ if (total>1){
String adminId = adminPage.getJSONObject("result").getJSONArray("records").getJSONObject(1).getString("id"); int pages = Integer.parseInt(adminPage.getJSONObject("result").getString("pages"));
String name = adminPage.getJSONObject("result").getJSONArray("records").getJSONObject(1).getString("name"); // 随机获取一页
String phone = adminPage.getJSONObject("result").getJSONArray("records").getJSONObject(1).getString("phone"); Random rand = new Random();
int pageIndex = rand.nextInt(pages);
// 随机获取一页的随机员工
Random random = new Random();
int index = pageIndex+1 == pages ? random.nextInt(total%20-1)+1 : random.nextInt(19)+1;
body = "{\"size\":20,\"current\":"+pageIndex+",\"state\":\"DUTY\"}";
adminPage = adminTools.pageStudioAdmin(body);
String adminId = adminPage.getJSONObject("result").getJSONArray("records").getJSONObject(index).getString("id");
String phone = adminPage.getJSONObject("result").getJSONArray("records").getJSONObject(index).getString("phone");
// 修改的请求参数 // 修改的请求参数
JSONObject requestBody = new JSONObject(); JSONObject requestBody = new JSONObject();
...@@ -64,10 +75,11 @@ public class TestEditStudioAdmin extends BaseTestImpl { ...@@ -64,10 +75,11 @@ public class TestEditStudioAdmin extends BaseTestImpl {
String memo = "修改员工备注信息"; // 备注 String memo = "修改员工备注信息"; // 备注
requestBody.put("memo",memo); requestBody.put("memo",memo);
String editName = name + "修改"; String name = RandomStringUtil.random_name();
String editName = name + TimeUtils.getCurrentTime();
requestBody.put("name",editName); requestBody.put("name",editName);
String editNickName = name + "修改"; String editNickName = name + TimeUtils.getCurrentTime();
requestBody.put("nickName",editNickName); // 昵称 requestBody.put("nickName",editNickName); // 昵称
JSONObject avatar = new JSONObject(); // 头像 JSONObject avatar = new JSONObject(); // 头像
...@@ -111,7 +123,7 @@ public class TestEditStudioAdmin extends BaseTestImpl { ...@@ -111,7 +123,7 @@ public class TestEditStudioAdmin extends BaseTestImpl {
System.out.println(adminInfo.getJSONObject("result").getString(resultString[i])); System.out.println(adminInfo.getJSONObject("result").getString(resultString[i]));
} }
try { try {
Thread.sleep(1000); Thread.sleep(15000);
} catch (InterruptedException e) { } catch (InterruptedException e) {
throw new RuntimeException(e); throw new RuntimeException(e);
} }
......
package com.xiaomai.cases.polar.admin;
import com.alibaba.fastjson.JSONArray;
import com.xiaomai.basetest.BaseTestImpl;
import com.xiaomai.client.DataUserInfo;
import com.xiaomai.enums.ApiModule;
import com.xiaomai.enums.LoginAccount;
import com.xiaomai.enums.Terminal;
import org.testng.Assert;
import org.testng.annotations.BeforeClass;
import org.testng.annotations.Test;
import javax.annotation.Resource;
/**
* @BelongsProject: xm-sportstest
* @BelongsPackage: com.xiaomai.cases.polar.admin
* @Author: xuyamei
* @CreateTime: 2024-07-01 10:44
* @Description: 检查手机号是品牌下场馆的主账号
* @Version: 1.0
*/
public class TestFindStudioBossInBrand extends BaseTestImpl {
@Resource(name = "adminTools")
AdminTools adminTools;
@BeforeClass
public void beforeTest() {
setTestInfo(ApiModule.Polar_Admin,"API_findStudioBossInBrand", LoginAccount.GYM_PROD, Terminal.B,"xym");
super.beforeTest();
}
@Test(description = "手机号是品牌下的非主账号")
public void testFindStudioBossInBrand() {
JSONArray result = adminTools.findStudioBossInBrand();
Assert.assertTrue(result.size()==0,"手机号非主账号但是返回任职的场馆");
}
@Test(description = "手机号是品牌下的主账号",priority = 1)
public void testFindStudioBossInBrand2() {
DataUserInfo info = new DataUserInfo();
info.setLoginUser(LoginAccount.GYM_PROD2);
info.setTerminal(Terminal.B);
JSONArray result = adminTools.findStudioBossInBrand(info);
Assert.assertTrue(result.size()>0,"手机号是主账号但是未返回任职的场馆");
}
}
...@@ -12,6 +12,7 @@ import org.testng.annotations.BeforeClass; ...@@ -12,6 +12,7 @@ import org.testng.annotations.BeforeClass;
import org.testng.annotations.Test; import org.testng.annotations.Test;
import javax.annotation.Resource; import javax.annotation.Resource;
import java.util.Random;
/** /**
* @BelongsProject: xm-sportstest * @BelongsProject: xm-sportstest
...@@ -29,7 +30,7 @@ public class TestReinStateStudioAdmin extends BaseTestImpl { ...@@ -29,7 +30,7 @@ public class TestReinStateStudioAdmin extends BaseTestImpl {
@BeforeClass @BeforeClass
@Override @Override
public void beforeTest() { public void beforeTest() {
setTestInfo(ApiModule.Polar_Admin,"API_reinStateStudioAdmin", LoginAccount.GYM_PROD, Terminal.B,"xym"); setTestInfo(ApiModule.Polar_Admin,"API_reinStateStudioAdmin", LoginAccount.GYM_PROD2, Terminal.B,"xym");
super.beforeTest(); super.beforeTest();
} }
...@@ -40,9 +41,19 @@ public class TestReinStateStudioAdmin extends BaseTestImpl { ...@@ -40,9 +41,19 @@ public class TestReinStateStudioAdmin extends BaseTestImpl {
JSONObject adminPage = adminTools.pageStudioAdmin(body); JSONObject adminPage = adminTools.pageStudioAdmin(body);
int total = Integer.parseInt(adminPage.getJSONObject("result").getString("total")); int total = Integer.parseInt(adminPage.getJSONObject("result").getString("total"));
if (total>1){ if (total>1){
String adminId = adminPage.getJSONObject("result").getJSONArray("records").getJSONObject(1).getString("id"); int pages = Integer.parseInt(adminPage.getJSONObject("result").getString("pages"));
String phone = adminPage.getJSONObject("result").getJSONArray("records").getJSONObject(1).getString("phone"); // 随机获取一页
String name = adminPage.getJSONObject("result").getJSONArray("records").getJSONObject(1).getString("name"); Random rand = new Random();
int pageIndex = rand.nextInt(pages);
// 随机获取一页的随机员工
Random random = new Random();
int index = pageIndex+1 == pages ? random.nextInt(total%20-1)+1 : random.nextInt(19)+1;
body = "{\"size\":20,\"current\":"+pageIndex+",\"state\":\"LEFT\"}";
adminPage = adminTools.pageStudioAdmin(body);
String adminId = adminPage.getJSONObject("result").getJSONArray("records").getJSONObject(index).getString("id");
String phone = adminPage.getJSONObject("result").getJSONArray("records").getJSONObject(index).getString("phone");
String name = adminPage.getJSONObject("result").getJSONArray("records").getJSONObject(index).getString("name");
body = "{\"id\":\""+adminId+"\"}"; body = "{\"id\":\""+adminId+"\"}";
xmAppApi.doRequest(RequestType.JSON,params,body,headers).assetsSuccess(true); xmAppApi.doRequest(RequestType.JSON,params,body,headers).assetsSuccess(true);
try { try {
...@@ -57,7 +68,7 @@ public class TestReinStateStudioAdmin extends BaseTestImpl { ...@@ -57,7 +68,7 @@ public class TestReinStateStudioAdmin extends BaseTestImpl {
Assert.assertEquals(total,1,"员工离职失败,用手机号查询离职员工未返回数据"); Assert.assertEquals(total,1,"员工离职失败,用手机号查询离职员工未返回数据");
try { try {
Thread.sleep(1000); Thread.sleep(12000);
} catch (InterruptedException e) { } catch (InterruptedException e) {
throw new RuntimeException(e); throw new RuntimeException(e);
} }
......
package com.xiaomai.cases.polar.admin;
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.TimeUtils;
import com.xiaomai.utils.XMBaseTest;
import com.xiaomai.utils.XMJSONPath;
import org.testng.annotations.BeforeMethod;
import org.testng.annotations.Test;
public class TestSwitchStudio extends XMBaseTest {
@BeforeMethod
public void beforeTest(){
xmAppApi.setApiModule(ApiModule.Polar_Admin)
.setApiName("API_switchStudio")
.setLoginUser(LoginAccount.GYM_PROD)
.setTerminal(Terminal.B);
dal.setCase_owner("yj")
.setCase_name(Thread.currentThread().getStackTrace()[1].getFileName().split("\\.")[0]);
super.beforeTest();
}
@Test(description = "切换场馆")
public void testSwitchStudio() {
AdminTools tools =new AdminTools();
tools.pagelistAdmins("");
String studioId = XMJSONPath.readPath(dataApi.getApi_response(), "$.result[0].defaultStudioId");//获取场馆ID
JSONObject jsonObject = new JSONObject();
jsonObject.put("adminId",xmAppApi.getLoginInfo().getAdminId());
jsonObject.put("studioId",studioId);
xmAppApi.doRequest(RequestType.JSON, params, jsonObject.toJSONString(), headers).assetsSuccess(true);
}
}
package com.xiaomai.cases.polar.applet;
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 java.util.Random;
/**
* @Author zxy
* @Description
* @Date 2024/7/1 16:15
*/
public class AppletTools extends BaseTestImpl {
//查询小程序租户授权信息
public JSONObject getAuthDetail(DataUserInfo...userInfos){
dataApi.setApiModule(ApiModule.Polar_Applet)
.setApiName("API_getAuthDetail")
.setTerminal(Terminal.B);
super.beforeDataRequest(userInfos);
JSONObject object = new JSONObject();
Random random = new Random();
object.put("tenantId",dataApi.getLoginInfo().getStudioId());
object.put("tenantType","STUDIO");
object.put("withExtInfo",random.nextBoolean());
dataApi.doRequest(RequestType.JSON,dataparams,object.toString(),dataheadrs).assetsSuccess(true);
return dataApi.getBodyInJSON();
}
//获取小程序页面配置
public JSONObject getPageConfig(String pageKey,DataUserInfo...userInfos){
dataApi.setApiModule(ApiModule.Polar_Applet)
.setApiName("API_getPageConfig")
.setTerminal(Terminal.B);
super.beforeDataRequest(userInfos);
JSONObject object = new JSONObject();
object.put("tenantId",dataApi.getLoginInfo().getStudioId());
object.put("tenantType","STUDIO");
object.put("pageKey",pageKey);
dataApi.doRequest(RequestType.JSON,dataparams,object.toString(),dataheadrs).assetsSuccess(true);
return dataApi.getBodyInJSON();
}
//获取小程序全局配置
public JSONObject getStyleConfig(DataUserInfo...userInfos){
dataApi.setApiModule(ApiModule.Polar_Applet)
.setApiName("API_getStyleConfig")
.setTerminal(Terminal.B);
super.beforeDataRequest(userInfos);
JSONObject object = new JSONObject();
object.put("tenantId",dataApi.getLoginInfo().getBrandId());
object.put("tenantType","BRAND");
dataApi.doRequest(RequestType.JSON,dataparams,object.toString(),dataheadrs).assetsSuccess(true);
return dataApi.getBodyInJSON();
}
}
package com.xiaomai.cases.polar.applet;
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 com.xiaomai.utils.XMJSONPath;
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 15:49
*/
public class TestCheckXcxCashierStatus extends XMBaseTest {
AppletTools appletTools = new AppletTools();
@BeforeMethod
public void beforeTest(){
xmAppApi.setApiModule(ApiModule.Polar_Applet)
.setApiName("API_checkXcxCashierStatus")
.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 testCheckXcxCashierStatus(){
String appId = appletTools.getAuthDetail().getJSONObject("result").getString("appId");
JSONObject object = new JSONObject();
object.put("studioId",xmAppApi.getLoginInfo().getStudioId());
object.put("appId",appId);
xmAppApi.doRequest(RequestType.JSON,params,object.toString(),headers).assetsSuccess(true);
Assert.assertEquals(XMJSONPath.readPath(xmAppApi.getBodyInJSON(),"$.result.status"),"NOOPEN");
}
}
package com.xiaomai.cases.polar.applet;
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 15:59
*/
public class TestChooseUseXcx extends XMBaseTest {
AppletTools appletTools = new AppletTools();
@BeforeMethod
public void beforeTest(){
xmAppApi.setApiModule(ApiModule.Polar_Applet)
.setApiName("API_chooseUseXcx")
.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 testChooseUseXcx(){
String appId = appletTools.getAuthDetail().getJSONObject("result").getString("appId");
JSONObject object = new JSONObject();
object.put("brandId",xmAppApi.getLoginInfo().getBrandId());
if(appId.equals("wx8f7b6ffc0c1f2c96")){
object.put("exclusiveXcx",true);
}
else {
object.put("exclusiveXcx",false);
}
xmAppApi.doRequest(RequestType.JSON,params,object.toString(),headers).assetsSuccess(true);
}
}
package com.xiaomai.cases.polar.applet;
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 com.xiaomai.utils.XMJSONPath;
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 15:34
*/
public class TestGetAuthDetail extends XMBaseTest {
@BeforeMethod
public void beforeTest(){
xmAppApi.setApiModule(ApiModule.Polar_Applet)
.setApiName("API_getAuthDetail")
.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 testGetAuthDetail(){
Random random = new Random();
JSONObject object = new JSONObject();
object.put("tenantId",xmAppApi.getLoginInfo().getStudioId());
object.put("tenantType","STUDIO");
object.put("withExtInfo",random.nextBoolean());
xmAppApi.doRequest(RequestType.JSON,params,object.toString(),headers).assetsSuccess(true);
Assert.assertEquals(XMJSONPath.readPath(xmAppApi.getBodyInJSON(),"$.result.status"),"DONE");
}
}
package com.xiaomai.cases.polar.applet;
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 com.xiaomai.utils.XMJSONPath;
import org.testng.Assert;
import org.testng.annotations.BeforeMethod;
import org.testng.annotations.Test;
/**
* @Author zxy
* @Description
* @Date 2024/7/1 15:54
*/
public class TestGetExcXcxStatus extends XMBaseTest {
@BeforeMethod
public void beforeTest(){
xmAppApi.setApiModule(ApiModule.Polar_Applet)
.setApiName("API_getExcXcxStatus")
.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 testGetExcXcxStatus(){
JSONObject object = new JSONObject();
object.put("tenantId",xmAppApi.getLoginInfo().getStudioId());
object.put("tenantType","STUDIO");
xmAppApi.doRequest(RequestType.JSON,params,object.toString(),headers).assetsSuccess(true);
Assert.assertEquals(XMJSONPath.readPath(xmAppApi.getBodyInJSON(),"$.result"),"DONE");
}
}
package com.xiaomai.cases.polar.applet;
import com.xiaomai.enums.ApiModule;
import com.xiaomai.enums.LoginAccount;
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 16:46
*/
public class TestGetStyleConfig extends XMBaseTest {
@BeforeMethod
public void beforeTest(){
xmAppApi.setApiModule(ApiModule.Polar_Applet)
.setApiName("API_getStyleConfig")
.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 testGetStyleConfig(){
}
}
package com.xiaomai.cases.polar.applet;
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 com.xiaomai.utils.XMJSONPath;
import org.testng.Assert;
import org.testng.annotations.BeforeMethod;
import org.testng.annotations.Test;
/**
* @Author zxy
* @Description
* @Date 2024/7/2 15:34
*/
public class TestGetWeChatDetail extends XMBaseTest {
@BeforeMethod
public void beforeTest(){
xmAppApi.setApiModule(ApiModule.Polar_Applet)
.setApiName("API_getWeChatDetail")
.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 testGetWeChatDetail(){
JSONObject object = new JSONObject();
object.put("tenantId",xmAppApi.getLoginInfo().getStudioId());
object.put("tenantType","STUDIO");
xmAppApi.doRequest(RequestType.JSON,params,object.toString(),headers).assetsSuccess(true);
Assert.assertEquals(XMJSONPath.readPath(xmAppApi.getBodyInJSON(),"$.result.status"),"DONE");
}
}
package com.xiaomai.cases.polar.applet;
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 15:46
*/
public class TestGetXcxIndexQrCode extends XMBaseTest {
@BeforeMethod
public void beforeTest(){
xmAppApi.setApiModule(ApiModule.Polar_Applet)
.setApiName("API_getXcxIndexQrCode")
.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 testGetXcxIndexQrCode(){
JSONObject object = new JSONObject();
object.put("tenantId",xmAppApi.getLoginInfo().getStudioId());
object.put("tenantType","STUDIO");
xmAppApi.doRequest(RequestType.JSON,params,object.toString(),headers).assetsSuccess(true);
}
}
package com.xiaomai.cases.polar.applet;
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 16:43
*/
public class TestSetPageConfig extends XMBaseTest {
AppletTools appletTools = new AppletTools();
@BeforeMethod
public void beforeTest(){
xmAppApi.setApiModule(ApiModule.Polar_Applet)
.setApiName("API_setPageConfig")
.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 testSetStyleConfig(){
String shareText = "自动化脚本首页分享"+RandomStringUtil.randomString(5);
String body = "{\"tenantId\":\"1800375402938871809\",\"tenantType\":\"STUDIO\",\"config\":{\"shareSetting\":{\"shareText\":\""+shareText+"\",\"shareUrl\":\"\",\"selected\":\"DEFAULT\"},\"moduleConfigList\":[{\"moduleEnum\":\"CAROUSEL\",\"config\":{\"swipers\":[{\"imgUrl\":\"https://fit-resource-pub.xiaomai5.com/fitness/1796482011391729666/BRAND/applet/20240701162813/ntWh63SyKHm4mMsC.jpeg\",\"skipLink\":{\"id\":\"1796482250721169409\",\"type\":\"COACH\"}},{\"imgUrl\":\"https://fit-resource-pub.xiaomai5.com/fitness/1796482011391729666/BRAND/applet/20240701162842/3xkNQtYKH7C6kXnZ.jpeg\"}],\"height\":152}},{\"entries\":[{\"code\":\"STUDIO_INTRO\",\"title\":\"场馆介绍\"},{\"code\":\"BRAND_STORY\",\"title\":\"品牌故事\"},{\"code\":\"COACH_TEAM\",\"title\":\"教练团队\"},{\"code\":\"BOOK_LESSON\",\"title\":\"预约课程\"},{\"code\":\"MEMBER_CARD\",\"title\":\"会员卡\"},{\"code\":\"EXPERIENCE_CARD\",\"icon\":\"\",\"title\":\"体验卡\"}],\"moduleEnum\":\"GRAPHIC_NAVIGATION\",\"config\":{\"entries\":[{\"code\":\"STUDIO_INTRO\",\"title\":\"场馆介绍\"},{\"code\":\"BRAND_STORY\",\"title\":\"品牌故事\"},{\"code\":\"COACH_TEAM\",\"title\":\"教练团队\"},{\"code\":\"BOOK_LESSON\",\"title\":\"预约课程\"},{\"code\":\"MEMBER_CARD\",\"title\":\"会员卡\"},{\"code\":\"EXPERIENCE_CARD\",\"icon\":\"\",\"title\":\"体验卡\"}],\"lineNum\":4}},{\"moduleEnum\":\"STUDIO_INTRO\",\"config\":{\"layout\":\"BIG\"}},{\"moduleEnum\":\"BRAND_STORY\",\"config\":{\"title\":\"品牌故事\"}},{\"moduleEnum\":\"COACH_TEAM\",\"config\":{\"layout\":\"SCROLL\",\"limitNum\":4,\"dataType\":\"DEFAULT\",\"ids\":[],\"coachInfo\":{\"proficients\":true,\"teachingStyles\":true,\"intro\":true,\"skillCertifications\":true},\"title\":\"教练团队\"}},{\"moduleEnum\":\"RECOMMEND_GROUP_LESSON\",\"config\":{\"layout\":\"SCROLL\",\"limitNum\":4,\"dataType\":\"DEFAULT\",\"title\":\"推荐团课\"}},{\"moduleEnum\":\"MEMBER_CARD\",\"config\":{\"layout\":\"SCROLL\",\"limitNum\":4,\"dataType\":\"DEFAULT\",\"title\":\"会员卡\"}},{\"moduleEnum\":\"RECOMMENT_PRIVATE_LESSON\",\"config\":{\"layout\":\"SCROLL\",\"limitNum\":4,\"dataType\":\"DEFAULT\",\"ids\":[],\"title\":\"推荐私教课\"}},{\"moduleEnum\":\"TRAINING_CAMP\",\"config\":{\"layout\":\"SCROLL\",\"limitNum\":4,\"dataType\":\"DEFAULT\",\"ids\":[],\"title\":\"推荐训练营\"}},{\"moduleEnum\":\"EXPERIENCE_CARD\",\"config\":{\"layout\":\"SCROLL\",\"limitNum\":4,\"dataType\":\"DEFAULT\",\"ids\":[],\"title\":\"体验卡\"}}],\"bgSetting\":{\"swipers\":[],\"bgColor\":\"\",\"selected\":\"DEFAULT\",\"bgUrl\":\"https://image.xiaomaiketang.com/xm/internal/TRcJHBMjyj.png\",\"height\":200},\"promotion\":[]},\"pageKey\":\"HOME\"}";
xmAppApi.doRequest(RequestType.JSON,params,body,headers).assetsSuccess(true);
Assert.assertEquals(appletTools.getPageConfig("HOME").getJSONObject("result").getJSONObject("shareSetting").getString("shareText"),shareText);
}
@Test(description = "修改小程序页面配置-约课")
public void testSetStyleConfig_1(){
String shareText = "自动化脚本约课页面分享"+RandomStringUtil.randomString(5);
String body = "{\"tenantId\":\"1800375402938871809\",\"tenantType\":\"STUDIO\",\"config\":{\"shareSetting\":{\"shareText\":\""+shareText+"\",\"shareUrl\":\"\",\"selected\":\"DEFAULT\"},\"listStyle\":\"TEACHER\",\"bgSetting\":{\"selected\":\"DEFAULT\",\"bgUrl\":\"https://image.xiaomaiketang.com/xm/internal/TRcJHBMjyj.png\"},\"bookType\":[{\"code\":\"GROUP_LESSON\",\"visible\":true,\"title\":\"团课\"},{\"code\":\"PRIVATE_LESSON\",\"visible\":true,\"title\":\"私教\"},{\"code\":\"BOOTCAMP\",\"visible\":true,\"title\":\"训练营\"}]},\"pageKey\":\"CLASS\"}";
xmAppApi.doRequest(RequestType.JSON,params,body,headers).assetsSuccess(true);
Assert.assertEquals(appletTools.getPageConfig("CLASS").getJSONObject("result").getJSONObject("shareSetting").getString("shareText"),shareText);
}
@Test(description = "修改小程序页面配置-我的")
public void testSetStyleConfig_2(){
String shareText = "自动化脚本我的页面分享"+RandomStringUtil.randomString(5);
String body = "{\"tenantId\":\"1800375402938871809\",\"tenantType\":\"STUDIO\",\"config\":{\"shareSetting\":{\"shareText\":\""+shareText+"\",\"shareUrl\":\"\"},\"memberAssets\":[{\"code\":\"MEMBER_CARD\",\"visible\":true,\"title\":\"会员卡\"},{\"code\":\"EXPERIENCE_CARD\",\"visible\":true,\"title\":\"体验卡\"},{\"code\":\"TRAINING_CAMP\",\"visible\":true,\"title\":\"训练营\"}],\"bgSetting\":{\"selected\":\"DEFAULT\",\"bgUrl\":\"https://image.xiaomaiketang.com/xm/internal/TRcJHBMjyj.png\"},\"commonlyEntry\":[{\"code\":\"MY_ORDER\",\"visible\":true,\"title\":\"我的订单\"},{\"code\":\"MY_BOOKING\",\"visible\":true,\"title\":\"我的预约\"},{\"code\":\"SCAN_CODE_SIGNIN\",\"visible\":true,\"title\":\"扫码签到\"}]},\"pageKey\":\"MINE\"}";
xmAppApi.doRequest(RequestType.JSON,params,body,headers).assetsSuccess(true);
Assert.assertEquals(appletTools.getPageConfig("MINE").getJSONObject("result").getJSONObject("shareSetting").getString("shareText"),shareText);
}
}
package com.xiaomai.cases.polar.applet;
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;
import java.util.Random;
/**
* @Author zxy
* @Description
* @Date 2024/7/1 16:25
*/
public class TestSetStyleConfig extends XMBaseTest {
AppletTools appletTools = new AppletTools();
@BeforeMethod
public void beforeTest(){
xmAppApi.setApiModule(ApiModule.Polar_Applet)
.setApiName("API_setStyleConfig")
.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 testSetStyleConfig(){
Random random = new Random();
String[] themeColor = {"132, 111, 234","40, 115, 255","51, 202, 105"};//紫、蓝、绿
String body = "{\"tenantId\":\"1796482011391729666\",\"tenantType\":\"BRAND\",\"config\":{\"loadingImage\":\"https://image.xiaomaiketang.com/xm/internal/bYk7k24Dwy.gif\",\"loginType\":\"DEFAULT\",\"defaultStyle\":{\"GRAPHIC_NAVIGATION\":{\"STUDIO_INTRO\":\"https://image.xiaomaiketang.com/xm/internal/5rHR854HrG.png\",\"BRAND_STORY\":\"https://image.xiaomaiketang.com/xm/internal/MP86aN8bGr.png\",\"COACH_TEAM\":\"https://image.xiaomaiketang.com/xm/internal/RRd4JjKFAa.png\",\"BOOK_LESSON\":\"https://image.xiaomaiketang.com/xm/internal/P7aNhwMX2m.png\",\"MEMBER_CARD\":\"https://image.xiaomaiketang.com/xm/internal/jp78pZnSt5.png\",\"EXPERIENCE_CARD\":\"https://image.xiaomaiketang.com/xm/internal/NFrcRw6iE2.png\"},\"TABS\":{\"SEL\":{\"HOME\":\"icon-a-xiaochengxushouye\",\"CLASS\":\"icon-a-xiaochengxuyuyue\",\"MINE\":\"icon-a-xiaochengxuwode\"},\"UN_SEL\":{\"HOME\":\"icon-a-xiaochengxushouye\",\"CLASS\":\"icon-a-xiaochengxuyuyue\",\"MINE\":\"icon-a-xiaochengxuwode\"}},\"bgUrl\":\"https://image.xiaomaiketang.com/xm/internal/TRcJHBMjyj.png\"},\"themeColor\":\""+themeColor[random.nextInt(3)]+"\",\"loadLoading\":false,\"tabs\":[{\"code\":\"HOME\",\"visible\":true,\"iconUnselected\":\"icon-a-xiaochengxushouye\",\"iconSelected\":\"icon-a-xiaochengxushouye\",\"title\":\"首页\"},{\"code\":\"CLASS\",\"visible\":true,\"iconUnselected\":\"icon-a-xiaochengxuyuyue\",\"iconSelected\":\"icon-a-xiaochengxuyuyue\",\"title\":\"预约\"},{\"code\":\"MINE\",\"visible\":true,\"iconUnselected\":\"icon-a-xiaochengxuwode\",\"iconSelected\":\"icon-a-xiaochengxuwode\",\"title\":\"我的\"}],\"emptyImage\":\"https://image.xiaomaiketang.com/xm/internal/SxaKWnkEyK.png\",\"themeStyle\":\"LIGHT\",\"themeKey\":\"EXERCISE\",\"colors\":{\"primaryColor\":\"#15171F\",\"secondaryColor\":\"#434656\",\"thirdColor\":\"#73778C\",\"tipsColor\":\"#AFB1BC\",\"cardBgColor\":\"#FFFFFF\",\"specialColor\":\"#C9CDD4\",\"bgColor\":\"#F5F7FA\",\"borderColor\":\"#EEF0F7\",\"rgbCardBgColor\":\"255,255,255\"},\"emptyLoading\":false},\"theme\":\"EXERCISE\"}";
xmAppApi.doRequest(RequestType.JSON,params,body,headers).assetsSuccess(true);
String str = appletTools.getStyleConfig().getJSONObject("result").getString("themeColor");
Assert.assertEquals(true, str.equals("132, 111, 234") || str.equals("40, 115, 255")||str.equals("51, 202, 105"));
}
}
package com.xiaomai.cases.polar.clue; package com.xiaomai.cases.polar.clue;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import com.xiaomai.basetest.BaseTestImpl; import com.xiaomai.basetest.BaseTestImpl;
import com.xiaomai.client.DataUserInfo; import com.xiaomai.client.DataUserInfo;
import com.xiaomai.enums.ApiModule; import com.xiaomai.enums.ApiModule;
import com.xiaomai.enums.RequestType; import com.xiaomai.enums.RequestType;
import com.xiaomai.enums.Terminal; import com.xiaomai.enums.Terminal;
import com.xiaomai.utils.RandomStringUtil;
import com.xiaomai.utils.TimeUtils;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
import java.util.Random;
/** /**
* @Author zxy * @Author zxy
...@@ -25,15 +29,35 @@ public class MemberTools extends BaseTestImpl { ...@@ -25,15 +29,35 @@ public class MemberTools extends BaseTestImpl {
super.beforeDataRequest(userInfos); super.beforeDataRequest(userInfos);
Random random = new Random();
String[] idCardType = {"IDENTITY","SAR_PERMIT","idCardType"};//身份证、港澳通行证、护照
String[] intention = {"HIGH","MIDDLE","LOW"};//意向度:高、中、低
JSONObject object = new JSONObject(); JSONObject object = new JSONObject();
object.put("brandId",xmAppApi.getLoginInfo().getBrandId()); object.put("brandId",dataApi.getLoginInfo().getBrandId());
object.put("studioId",xmAppApi.getLoginInfo().getStudioId()); object.put("studioId",dataApi.getLoginInfo().getStudioId());
object.put("operatorId",xmAppApi.getLoginInfo().getAdminId()); object.put("operatorId",dataApi.getLoginInfo().getAdminId());
object.put("creatorId",xmAppApi.getLoginInfo().getAdminId()); object.put("creatorId",dataApi.getLoginInfo().getAdminId());
object.put("status","POTENTIAL"); object.put("status","POTENTIAL");
object.put("name",name); object.put("name",name);
object.put("phone",phone); object.put("phone",phone);
object.put("gender","UNKNOWN"); 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); dataApi.doRequest(RequestType.JSON,dataparams,object.toString(),dataheadrs).assetsSuccess(true);
return dataApi.getBodyInJSON(); return dataApi.getBodyInJSON();
...@@ -48,8 +72,8 @@ public class MemberTools extends BaseTestImpl { ...@@ -48,8 +72,8 @@ public class MemberTools extends BaseTestImpl {
super.beforeDataRequest(userInfos); super.beforeDataRequest(userInfos);
JSONObject object = new JSONObject(); JSONObject object = new JSONObject();
object.put("brandId",xmAppApi.getLoginInfo().getBrandId()); object.put("brandId",dataApi.getLoginInfo().getBrandId());
object.put("studioId",xmAppApi.getLoginInfo().getStudioId()); object.put("studioId",dataApi.getLoginInfo().getStudioId());
object.put("phone",phone); object.put("phone",phone);
object.put("memberId",memberId); object.put("memberId",memberId);
...@@ -58,6 +82,24 @@ public class MemberTools extends BaseTestImpl { ...@@ -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){ public JSONObject getDetailById(String memberId,DataUserInfo...userInfos){
dataApi.setApiModule(ApiModule.Polar_Clue) dataApi.setApiModule(ApiModule.Polar_Clue)
.setApiName("API_findDetailById") .setApiName("API_findDetailById")
...@@ -73,30 +115,47 @@ public class MemberTools extends BaseTestImpl { ...@@ -73,30 +115,47 @@ public class MemberTools extends BaseTestImpl {
} }
//搜索潜在会员 //搜索潜在会员
public JSONObject searchMember(DataUserInfo...userInfos){ public JSONObject searchMember(String position,String status,DataUserInfo...userInfos){
dataApi.setApiModule(ApiModule.Polar_Clue) dataApi.setApiModule(ApiModule.Polar_Clue)
.setApiName("API_searchMember") .setApiName("API_searchMember")
.setTerminal(Terminal.B); .setTerminal(Terminal.B);
super.beforeDataRequest(userInfos); super.beforeDataRequest(userInfos);
JSONObject studioFilter = new JSONObject(); JSONObject object = new JSONObject();
studioFilter.put("studioId",xmAppApi.getLoginInfo().getStudioId());
List statusList = new ArrayList(); List statusList = new ArrayList();
statusList.add("POTENTIAL"); statusList.add(status);
JSONObject object = new JSONObject(); switch (position){
case "全部线索":
object.put("searchType","CLUE_ALL");//全部线索
break;
case "我的线索":
object.put("searchType","CLUE_PRIVATE");//我的线索
object.put("position","PRIVATE_RESOURCE");
object.put("saleId",dataApi.getLoginInfo().getAdminId());
break;
case "公有池":
object.put("searchType","CLUE_PUBLIC");//公有池
object.put("position","PUBLIC_RESOURCE");
break;
case "回收站":
object.put("searchType","CLUE_RECYCLE");//回收站
object.put("position","RECYCLE");
break;
}
object.put("current",0); object.put("current",0);
object.put("size",20); object.put("size",20);
object.put("brandId",xmAppApi.getLoginInfo().getBrandId()); object.put("brandId",dataApi.getLoginInfo().getBrandId());
object.put("studioFilter",studioFilter); object.put("studioId",dataApi.getLoginInfo().getStudioId());
object.put("operatorId",dataApi.getLoginInfo().getAdminId());
object.put("statusList",statusList); object.put("statusList",statusList);
dataApi.doRequest(RequestType.JSON,dataparams,object.toString(),dataheadrs).assetsSuccess(true); dataApi.doRequest(RequestType.JSON,dataparams,object.toString(),dataheadrs).assetsSuccess(true);
return dataApi.getBodyInJSON(); return dataApi.getBodyInJSON();
} }
//搜索全部会员 //搜索全部会员
public JSONObject commonSearch(String content,DataUserInfo...userInfos){ public JSONObject commonSearch(String content,DataUserInfo...userInfos){
dataApi.setApiModule(ApiModule.Polar_Clue) dataApi.setApiModule(ApiModule.Polar_Clue)
...@@ -105,11 +164,313 @@ public class MemberTools extends BaseTestImpl { ...@@ -105,11 +164,313 @@ public class MemberTools extends BaseTestImpl {
super.beforeDataRequest(userInfos); super.beforeDataRequest(userInfos);
List statusList = new ArrayList();
statusList.add("NORMAL");
statusList.add("HISTORY");
statusList.add("POTENTIAL");
JSONObject object = new JSONObject(); JSONObject object = new JSONObject();
object.put("brandId",xmAppApi.getLoginInfo().getBrandId()); object.put("brandId",dataApi.getLoginInfo().getBrandId());
object.put("studioId",xmAppApi.getLoginInfo().getStudioId()); object.put("studioId",dataApi.getLoginInfo().getStudioId());
object.put("operatorId",dataApi.getLoginInfo().getAdminId());
object.put("dataPermissionFilter",false);
object.put("content",content); 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); dataApi.doRequest(RequestType.JSON,dataparams,object.toString(),dataheadrs).assetsSuccess(true);
return dataApi.getBodyInJSON(); return dataApi.getBodyInJSON();
......
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");
}
}
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("全部线索","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);
}
}
}
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("公有池","POTENTIAL").getJSONObject("result").getJSONArray("records");
//查看全部线索是否有数据,有数据则取第一条数据
JSONArray array1 = memberTools.searchMember("全部线索","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");//线索位置:私有池
}
}
...@@ -9,6 +9,9 @@ import com.xiaomai.utils.XMBaseTest; ...@@ -9,6 +9,9 @@ import com.xiaomai.utils.XMBaseTest;
import org.testng.annotations.BeforeMethod; import org.testng.annotations.BeforeMethod;
import org.testng.annotations.Test; import org.testng.annotations.Test;
import java.util.ArrayList;
import java.util.List;
/** /**
* @Author zxy * @Author zxy
* @Description * @Description
...@@ -20,7 +23,7 @@ public class TestCommonSearch extends XMBaseTest { ...@@ -20,7 +23,7 @@ public class TestCommonSearch extends XMBaseTest {
xmAppApi.setApiModule(ApiModule.Polar_Clue) xmAppApi.setApiModule(ApiModule.Polar_Clue)
.setApiName("API_commonSearch") .setApiName("API_commonSearch")
.setLoginUser(LoginAccount.ZYX_DEV) .setLoginUser(LoginAccount.GYM_PROD)
.setTerminal(Terminal.B); .setTerminal(Terminal.B);
dal.setCase_owner("zyx") dal.setCase_owner("zyx")
...@@ -31,11 +34,21 @@ public class TestCommonSearch extends XMBaseTest { ...@@ -31,11 +34,21 @@ public class TestCommonSearch extends XMBaseTest {
@Test(description = "搜索") @Test(description = "搜索")
public void testCommonSearch(){ public void testCommonSearch(){
List statusList = new ArrayList();
statusList.add("NORMAL");
statusList.add("HISTORY");
statusList.add("POTENTIAL");
JSONObject object = new JSONObject(); JSONObject object = new JSONObject();
object.put("brandId",xmAppApi.getLoginInfo().getBrandId()); object.put("brandId",xmAppApi.getLoginInfo().getBrandId());
object.put("studioId",xmAppApi.getLoginInfo().getStudioId()); object.put("studioId",xmAppApi.getLoginInfo().getStudioId());
object.put("operatorId",xmAppApi.getLoginInfo().getAdminId());
object.put("dataPermissionFilter",false);
object.put("content","666"); object.put("content","666");
object.put("statusList",statusList);
xmAppApi.doRequest(RequestType.JSON,params,object.toString(),headers).assetsSuccess(true); xmAppApi.doRequest(RequestType.JSON,params,object.toString(),headers).assetsSuccess(true);
//校验放在了创建线索case中
} }
} }
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("全部线索","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);
}
}
}
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);
}
}
package com.xiaomai.cases.polar.clue; package com.xiaomai.cases.polar.clue;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import com.xiaomai.cases.polar.studioConfig.HomeTools;
import com.xiaomai.client.DataUserInfo;
import com.xiaomai.enums.ApiModule; import com.xiaomai.enums.ApiModule;
import com.xiaomai.enums.LoginAccount; import com.xiaomai.enums.LoginAccount;
import com.xiaomai.enums.RequestType; import com.xiaomai.enums.RequestType;
...@@ -12,6 +14,8 @@ import org.testng.Assert; ...@@ -12,6 +14,8 @@ import org.testng.Assert;
import org.testng.annotations.BeforeMethod; import org.testng.annotations.BeforeMethod;
import org.testng.annotations.Test; import org.testng.annotations.Test;
import java.util.Random;
/** /**
* @Author zxy * @Author zxy
* @Description * @Description
...@@ -19,13 +23,14 @@ import org.testng.annotations.Test; ...@@ -19,13 +23,14 @@ import org.testng.annotations.Test;
*/ */
public class TestCreate extends XMBaseTest { public class TestCreate extends XMBaseTest {
MemberTools memberTools = new MemberTools(); MemberTools memberTools = new MemberTools();
HomeTools homeTools = new HomeTools();
@BeforeMethod @BeforeMethod
public void beforeTest(){ public void beforeTest(){
xmAppApi.setApiModule(ApiModule.Polar_Clue) xmAppApi.setApiModule(ApiModule.Polar_Clue)
.setApiName("API_create") .setApiName("API_create")
.setLoginUser(LoginAccount.ZYX_DEV) .setLoginUser(LoginAccount.GYM_PROD)
.setTerminal(Terminal.B); .setTerminal(Terminal.B);
dal.setCase_owner("zyx") dal.setCase_owner("zyx")
...@@ -35,12 +40,34 @@ public class TestCreate extends XMBaseTest { ...@@ -35,12 +40,34 @@ public class TestCreate extends XMBaseTest {
@Test(description = "新增潜在会员") @Test(description = "新增潜在会员")
public void testCreate(){ public void testCreate(){
DataUserInfo dataUserInfo = new DataUserInfo();
dataUserInfo.setTerminal(Terminal.B);
dataUserInfo.setLoginUser(LoginAccount.GYM_PROD2);
//首页数据概览-新增会员数
int member = Integer.parseInt(homeTools.preview("本周").getJSONObject("result").getJSONArray("metrics").getJSONObject(0).getString("value"));
//全部线索快捷筛选
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 name = "自动化潜在会员"+ RandomStringUtil.randomString(3);
String phone = RandomStringUtil.randomMobile("666"); 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"); Boolean duplicate = memberTools.checkPhoneDuplicate(phone,"").getJSONObject("result").getBoolean("duplicate");
if(duplicate == false) { if(duplicate == false){
JSONObject object = new JSONObject(); JSONObject object = new JSONObject();
object.put("brandId", xmAppApi.getLoginInfo().getBrandId()); object.put("brandId", xmAppApi.getLoginInfo().getBrandId());
object.put("studioId", xmAppApi.getLoginInfo().getStudioId()); object.put("studioId", xmAppApi.getLoginInfo().getStudioId());
...@@ -50,6 +77,23 @@ public class TestCreate extends XMBaseTest { ...@@ -50,6 +77,23 @@ public class TestCreate extends XMBaseTest {
object.put("name", name); object.put("name", name);
object.put("phone", phone); object.put("phone", phone);
object.put("gender", "UNKNOWN"); 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); xmAppApi.doRequest(RequestType.JSON, params, object.toString(), headers).assetsSuccess(true);
String memberId = xmAppApi.getBodyInJSON().getString("result"); String memberId = xmAppApi.getBodyInJSON().getString("result");
...@@ -60,13 +104,45 @@ public class TestCreate extends XMBaseTest { ...@@ -60,13 +104,45 @@ public class TestCreate extends XMBaseTest {
} catch (InterruptedException e) { } catch (InterruptedException e) {
e.printStackTrace(); e.printStackTrace();
} }
Assert.assertEquals(memberTools.searchMember().getJSONObject("result").getJSONArray("records").getJSONObject(0).getString("phone"), phone); //校验潜在会员列表第一条数据是否是本次新增的数据
Assert.assertEquals(memberTools.searchMember("全部线索","POTENTIAL").getJSONObject("result").getJSONArray("records").getJSONObject(0).getString("phone"), phone);
//根据手机号全局搜索检验
Assert.assertEquals(memberTools.commonSearch(phone).getJSONArray("result").getJSONObject(0).getString("id"), memberId); 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
//首页数据概览-新增会员数
int member1 = Integer.parseInt(homeTools.preview("本周").getJSONObject("result").getJSONArray("metrics").getJSONObject(0).getString("value"));
Assert.assertEquals(member1,member+1);//新增会员数+1
//在另一个场馆添加该会员,并在添加后校验是否添加成功
memberTools.join(memberId,dataUserInfo);
try {
Thread.sleep(2000);
} catch (InterruptedException e) {
e.printStackTrace();
} }
Assert.assertEquals(memberTools.getDetailById(memberId,dataUserInfo).getJSONObject("result").getString("phone"),phone);
} }
}
@Test(description = "新增潜在会员-手机号为空") @Test(description = "新增潜在会员-手机号为空")
public void testCreate_1(){ public void testCreate_1(){
...@@ -83,7 +159,8 @@ public class TestCreate extends XMBaseTest { ...@@ -83,7 +159,8 @@ public class TestCreate extends XMBaseTest {
object.put("gender", "UNKNOWN"); object.put("gender", "UNKNOWN");
xmAppApi.doRequest(RequestType.JSON, params, object.toString(), headers).assetsSuccess(false); xmAppApi.doRequest(RequestType.JSON, params, object.toString(), headers).assetsSuccess(false);
Assert.assertEquals(XMJSONPath.readPath(xmAppApi.getBodyInJSON(), "$.message"), "会员手机号格式有误;会员手机号不能为空"); String str = XMJSONPath.readPath(xmAppApi.getBodyInJSON(), "$.message");
Assert.assertEquals(true, str.equals("会员手机号格式有误;会员手机号不能为空") || str.equals("会员手机号不能为空;会员手机号格式有误"));
} }
} }
package com.xiaomai.cases.polar.clue;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.xiaomai.cases.polar.studioConfig.HomeTools;
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();
HomeTools homeTools = new HomeTools();
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("全部线索","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();//未开始&已逾期状态的跟进任务
//跟进管理查询今日待跟进
int todayWaitFeedback_num = Integer.parseInt(memberTools.summaryFeedback().getJSONObject("result").getString("todayWaitFeedback"));
//首页查询今日待跟进
int home_todayWaitFeedback_num = homeTools.queryTodayFeedback().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");//创建成功生成一条已完成和一条未开始的跟进记录,此feedbackId为已完成的那条跟进记录ID
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();
Assert.assertEquals(num_todo1,num_todo+1);
//校验已完成的任务列表新增一条数据
int num1 = memberTools.searchFeedback(memberId).getJSONObject("result").getJSONArray("records").size();
Assert.assertEquals(num1,num+1);
//跟进管理查询今日待跟进
int todayWaitFeedback_num1 = Integer.parseInt(memberTools.summaryFeedback().getJSONObject("result").getString("todayWaitFeedback"));
Assert.assertEquals(todayWaitFeedback_num1,todayWaitFeedback_num+1);
//首页查询今日待跟进
int home_todayWaitFeedback_num1 = homeTools.queryTodayFeedback().getJSONArray("result").size();
Assert.assertEquals(home_todayWaitFeedback_num1,home_todayWaitFeedback_num+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);
}
}
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("全部线索","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");//线索位置:回收站
}
}
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("全部线索","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");//线索位置:私有池
}
}
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("全部线索","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");//线索位置:公有池
}
}
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中
}
}
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中
}
}
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);
}
}
package com.xiaomai.cases.polar.clue; package com.xiaomai.cases.polar.clue;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import com.xiaomai.enums.ApiModule; import com.xiaomai.enums.ApiModule;
import com.xiaomai.enums.LoginAccount; import com.xiaomai.enums.LoginAccount;
...@@ -19,13 +20,13 @@ import org.testng.annotations.Test; ...@@ -19,13 +20,13 @@ import org.testng.annotations.Test;
*/ */
public class TestGetDetailById extends XMBaseTest { public class TestGetDetailById extends XMBaseTest {
MemberTools memberTools = new MemberTools(); MemberTools memberTools = new MemberTools();
String id;
@BeforeMethod @BeforeMethod
public void beforeTest(){ public void beforeTest(){
xmAppApi.setApiModule(ApiModule.Polar_Clue) xmAppApi.setApiModule(ApiModule.Polar_Clue)
.setApiName("API_findDetailById") .setApiName("API_findDetailById")
.setLoginUser(LoginAccount.ZYX_DEV) .setLoginUser(LoginAccount.GYM_PROD)
.setTerminal(Terminal.B); .setTerminal(Terminal.B);
dal.setCase_owner("zyx") dal.setCase_owner("zyx")
...@@ -37,7 +38,17 @@ public class TestGetDetailById extends XMBaseTest { ...@@ -37,7 +38,17 @@ public class TestGetDetailById extends XMBaseTest {
String name = "自动化潜在会员" + RandomStringUtil.randomString(3); String name = "自动化潜在会员" + RandomStringUtil.randomString(3);
String phone = RandomStringUtil.randomMobile("666"); String phone = RandomStringUtil.randomMobile("666");
String id = memberTools.create(name, phone).getString("result");
//若全部线索有数据,则取第一条数据;若无数据则新建一个线索
JSONArray array = memberTools.searchMember("全部线索","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(); JSONObject object = new JSONObject();
object.put("memberId",id); object.put("memberId",id);
...@@ -45,7 +56,7 @@ public class TestGetDetailById extends XMBaseTest { ...@@ -45,7 +56,7 @@ public class TestGetDetailById extends XMBaseTest {
xmAppApi.doRequest(RequestType.JSON,params,object.toString(),headers).assetsSuccess(true); xmAppApi.doRequest(RequestType.JSON,params,object.toString(),headers).assetsSuccess(true);
JSONObject res = xmAppApi.getBodyInJSON(); JSONObject res = xmAppApi.getBodyInJSON();
Assert.assertEquals(res.getJSONObject("result").getString("phone"),phone); Assert.assertEquals(res.getJSONObject("result").getString("id"),id);
} }
......
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("全部线索","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);
}
}
}
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("我的线索","POTENTIAL").getJSONObject("result").getJSONArray("records");
//查看全部线索是否有数据,有数据则取第一条数据
JSONArray array1 = memberTools.searchMember("全部线索","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");
try {
Thread.sleep(2000);
} catch (InterruptedException e) {
e.printStackTrace();
}
Assert.assertEquals(res.getString("saleId"),"-1");
Assert.assertEquals(res.getString("position"),"INITIAL");//线索位置:待分配池
}
}
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("我的线索","POTENTIAL").getJSONObject("result").getJSONArray("records");
//查看全部线索是否有数据,有数据则取第一条数据
JSONArray array1 = memberTools.searchMember("全部线索","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");//线索位置:待分配池
}
}
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("回收站","POTENTIAL").getJSONObject("result").getJSONArray("records");
//查看全部线索是否有数据,有数据则取第一条数据
JSONArray array1 = memberTools.searchMember("全部线索","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");//线索位置:公有池
}
}
...@@ -24,7 +24,7 @@ public class TestSearchMember extends XMBaseTest { ...@@ -24,7 +24,7 @@ public class TestSearchMember extends XMBaseTest {
xmAppApi.setApiModule(ApiModule.Polar_Clue) xmAppApi.setApiModule(ApiModule.Polar_Clue)
.setApiName("API_searchMember") .setApiName("API_searchMember")
.setLoginUser(LoginAccount.ZYX_DEV) .setLoginUser(LoginAccount.GYM_PROD)
.setTerminal(Terminal.B); .setTerminal(Terminal.B);
dal.setCase_owner("zyx") dal.setCase_owner("zyx")
...@@ -44,9 +44,15 @@ public class TestSearchMember extends XMBaseTest { ...@@ -44,9 +44,15 @@ public class TestSearchMember extends XMBaseTest {
object.put("current",0); object.put("current",0);
object.put("size",20); object.put("size",20);
object.put("brandId",xmAppApi.getLoginInfo().getBrandId()); 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("statusList",statusList);
object.put("searchType","CLUE_PRIVATE");
xmAppApi.doRequest(RequestType.JSON,params,object.toString(),headers).assetsSuccess(true); xmAppApi.doRequest(RequestType.JSON,params,object.toString(),headers).assetsSuccess(true);
//校验放在了创建线索case中
} }
} }
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);
}
}
package com.xiaomai.cases.polar.clue; package com.xiaomai.cases.polar.clue;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import com.xiaomai.enums.ApiModule; import com.xiaomai.enums.ApiModule;
import com.xiaomai.enums.LoginAccount; import com.xiaomai.enums.LoginAccount;
...@@ -19,12 +20,12 @@ import org.testng.annotations.Test; ...@@ -19,12 +20,12 @@ import org.testng.annotations.Test;
*/ */
public class TestUpdate extends XMBaseTest { public class TestUpdate extends XMBaseTest {
MemberTools memberTools = new MemberTools(); MemberTools memberTools = new MemberTools();
String id;
@BeforeMethod @BeforeMethod
public void beforeTest(){ public void beforeTest(){
xmAppApi.setApiModule(ApiModule.Polar_Clue) xmAppApi.setApiModule(ApiModule.Polar_Clue)
.setApiName("API_forceUpdate") .setApiName("API_forceUpdate")
.setLoginUser(LoginAccount.ZYX_DEV) .setLoginUser(LoginAccount.GYM_PROD)
.setTerminal(Terminal.B); .setTerminal(Terminal.B);
dal.setCase_owner("zyx") dal.setCase_owner("zyx")
...@@ -37,8 +38,15 @@ public class TestUpdate extends XMBaseTest { ...@@ -37,8 +38,15 @@ public class TestUpdate extends XMBaseTest {
String name = "自动化潜在会员"+ RandomStringUtil.randomString(3); String name = "自动化潜在会员"+ RandomStringUtil.randomString(3);
String phone = RandomStringUtil.randomMobile("666"); String phone = RandomStringUtil.randomMobile("666");
//创建潜在会员 //若全部线索有数据,则取第一条数据;若无数据则新建一个线索
String id = memberTools.create(name,phone).getString("result"); JSONArray array = memberTools.searchMember("全部线索","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"); Boolean duplicate = memberTools.checkPhoneDuplicate(phone,id).getJSONObject("result").getBoolean("duplicate");
...@@ -66,6 +74,7 @@ public class TestUpdate extends XMBaseTest { ...@@ -66,6 +74,7 @@ public class TestUpdate extends XMBaseTest {
object.put("emergencyContactPerson", "紧急联系人" + RandomStringUtil.randomString(3)); object.put("emergencyContactPerson", "紧急联系人" + RandomStringUtil.randomString(3));
object.put("emergencyContactPhone", RandomStringUtil.randomMobile("999")); object.put("emergencyContactPhone", RandomStringUtil.randomMobile("999"));
object.put("resourceId", "12"); object.put("resourceId", "12");
object.put("intention","LOW");
object.put("remark", "这是备注这是备注这是备注这是备注这是备注这是备注这是备注这是备注这是备注这是备注"); object.put("remark", "这是备注这是备注这是备注这是备注这是备注这是备注这是备注这是备注这是备注这是备注");
object.put("memberId", id); object.put("memberId", id);
......
...@@ -2,12 +2,17 @@ package com.xiaomai.cases.polar.course; ...@@ -2,12 +2,17 @@ package com.xiaomai.cases.polar.course;
import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import com.xiaomai.client.DataUserInfo;
import com.xiaomai.enums.ApiModule; import com.xiaomai.enums.ApiModule;
import com.xiaomai.enums.RequestType; import com.xiaomai.enums.RequestType;
import com.xiaomai.enums.Terminal; import com.xiaomai.enums.Terminal;
import com.xiaomai.utils.XMBaseTest; import com.xiaomai.utils.XMBaseTest;
import com.xiaomai.utils.XMJSONPath;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import java.util.ArrayList;
import java.util.List;
/** /**
* @BelongsProject: xm-sportstest * @BelongsProject: xm-sportstest
* @BelongsPackage: com.xiaomai.cases.polar.course * @BelongsPackage: com.xiaomai.cases.polar.course
...@@ -20,7 +25,7 @@ import org.springframework.stereotype.Component; ...@@ -20,7 +25,7 @@ import org.springframework.stereotype.Component;
public class CourseTools extends XMBaseTest { public class CourseTools extends XMBaseTest {
/** /**
* @description:创建课程 * @description:创建私教课程
* @author: xuyamei * @author: xuyamei
* @date: 2024/5/6 10:53 * @date: 2024/5/6 10:53
* @param courseName:课程名称 * @param courseName:课程名称
...@@ -31,11 +36,11 @@ public class CourseTools extends XMBaseTest { ...@@ -31,11 +36,11 @@ public class CourseTools extends XMBaseTest {
* @param minCapacity:开课人数 * @param minCapacity:开课人数
* @return: 课程id * @return: 课程id
**/ **/
public String createPersonalCourse(String courseName,String categoryId,String sourceType,String sizeType,int capacity,int minCapacity){ public String createPersonalCourse(String courseName,String categoryId,String sourceType,String sizeType,int capacity,int minCapacity,DataUserInfo...dataUserInfo){
dataApi.setApiModule(ApiModule.Polar_Course) dataApi.setApiModule(ApiModule.Polar_Course)
.setApiName("API_personalCreate") .setApiName("API_personalCreate")
.setTerminal(Terminal.B); .setTerminal(Terminal.B);
super.beforeDataRequest(); super.beforeDataRequest(dataUserInfo);
JSONObject body= new JSONObject(); JSONObject body= new JSONObject();
body.put("courseName", courseName); body.put("courseName", courseName);
...@@ -61,7 +66,7 @@ public class CourseTools extends XMBaseTest { ...@@ -61,7 +66,7 @@ public class CourseTools extends XMBaseTest {
} }
dataApi.doRequest(RequestType.JSON,params,body.toString(),headers).assetsSuccess(true); dataApi.doRequest(RequestType.JSON,dataparams,body.toString(),dataheadrs).assetsSuccess(true);
return dataApi.getBodyInJSON().getString("result"); return dataApi.getBodyInJSON().getString("result");
} }
/** /**
...@@ -73,11 +78,11 @@ public class CourseTools extends XMBaseTest { ...@@ -73,11 +78,11 @@ public class CourseTools extends XMBaseTest {
* @param sourceType:课程来源类型 1:品牌BRAND 2:场馆STUDIO * @param sourceType:课程来源类型 1:品牌BRAND 2:场馆STUDIO
* @return: java.lang.String * @return: java.lang.String
**/ **/
public String createGroupCourse(String courseName,String categoryId,String sourceType){ public String createGroupCourse(String courseName,String categoryId,String sourceType,DataUserInfo...dataUserInfo){
dataApi.setApiModule(ApiModule.Polar_Course) dataApi.setApiModule(ApiModule.Polar_Course)
.setApiName("API_createGroupCourse") .setApiName("API_createGroupCourse")
.setTerminal(Terminal.B); .setTerminal(Terminal.B);
super.beforeDataRequest(); super.beforeDataRequest(dataUserInfo);
String introduction = "{\"items\":[{\"content\":\"花花世界的\",\"aspect\":\"\",\"type\":\"TEXT\"}]}"; String introduction = "{\"items\":[{\"content\":\"花花世界的\",\"aspect\":\"\",\"type\":\"TEXT\"}]}";
JSONObject body= new JSONObject(); JSONObject body= new JSONObject();
body.put("courseName", courseName); body.put("courseName", courseName);
...@@ -95,7 +100,7 @@ public class CourseTools extends XMBaseTest { ...@@ -95,7 +100,7 @@ public class CourseTools extends XMBaseTest {
body.put("studioId", dataApi.getLoginInfo().getStudioId()); // 场馆 body.put("studioId", dataApi.getLoginInfo().getStudioId()); // 场馆
body.put("calorie", 0); // 卡路里 传0对于后端是未设置 body.put("calorie", 0); // 卡路里 传0对于后端是未设置
dataApi.doRequest(RequestType.JSON,params,body.toString(),headers).assetsSuccess(true); dataApi.doRequest(RequestType.JSON,dataparams,body.toString(),dataheadrs).assetsSuccess(true);
return dataApi.getBodyInJSON().getString("result"); return dataApi.getBodyInJSON().getString("result");
} }
...@@ -112,25 +117,25 @@ public class CourseTools extends XMBaseTest { ...@@ -112,25 +117,25 @@ public class CourseTools extends XMBaseTest {
* @param minCapacity:开课人数(团课无需传) * @param minCapacity:开课人数(团课无需传)
* @return: 返回课程id和姓名数组 * @return: 返回课程id和姓名数组
**/ **/
public JSONArray getPersonalOrGroupCourseId(String courseType,String courseName,String categoryId,String sourceType,String sizeType,int capacity,int minCapacity) { public JSONArray getPersonalOrGroupCourseId(String courseType, String courseName, String categoryId, String sourceType, String sizeType, int capacity, int minCapacity, DataUserInfo...dataUserInfo) {
JSONObject result = new JSONObject(); JSONObject result = new JSONObject();
JSONArray getNameAndId = new JSONArray(); JSONArray getNameAndId = new JSONArray();
// 查询存量的课程 // 查询存量的课程
if (courseType.equals("GROUP")) { // 查询的是团课 if (courseType.equals("GROUP")) { // 查询的是团课
result = getGroupClassPage("", 0, courseName, ""); result = getGroupClassPage("", 0, courseName, "",dataUserInfo);
String total = result.getString("total"); String total = result.getString("total");
if (Integer.parseInt(total) > 0) { if (Integer.parseInt(total) > 0) {
result = getGroupClassPage("", 0, courseName, "").getJSONArray("records").getJSONObject(0); result = getGroupClassPage("", 0, courseName, "", dataUserInfo).getJSONArray("records").getJSONObject(0);
String courseId = result.getString("brandCourseId"); String courseId = result.getString("brandCourseId");
getNameAndId.add(courseId); getNameAndId.add(courseId);
getNameAndId.add(result.getString("courseName")); getNameAndId.add(result.getString("courseName"));
} else { } else {
getNameAndId.add(createGroupCourse(courseName, categoryId, sourceType)); getNameAndId.add(createGroupCourse(courseName, categoryId, sourceType,dataUserInfo));
getNameAndId.add(courseName); getNameAndId.add(courseName);
} }
} else if (courseType.equals("PERSONAL")) { // 查询的是私教课 } else if (courseType.equals("PERSONAL")) { // 查询的是私教课
result = getPersonalPage("", 0, courseName, "", "", ""); result = getPersonalPage("", 0, courseName, "", "", "",dataUserInfo);
String total = result.getString("total"); String total = result.getString("total");
if (Integer.parseInt(total) > 0) { if (Integer.parseInt(total) > 0) {
result = getPersonalPage("", 0, courseName, "", sizeType, "").getJSONArray("records").getJSONObject(0); result = getPersonalPage("", 0, courseName, "", sizeType, "").getJSONArray("records").getJSONObject(0);
...@@ -138,7 +143,7 @@ public class CourseTools extends XMBaseTest { ...@@ -138,7 +143,7 @@ public class CourseTools extends XMBaseTest {
getNameAndId.add(courseId); getNameAndId.add(courseId);
getNameAndId.add(result.getString("courseName")); getNameAndId.add(result.getString("courseName"));
} else { } else {
getNameAndId.add(createPersonalCourse(courseName, categoryId, sourceType, sizeType, capacity, minCapacity)); getNameAndId.add(createPersonalCourse(courseName, categoryId, sourceType, sizeType, capacity, minCapacity,dataUserInfo));
getNameAndId.add(courseName); getNameAndId.add(courseName);
} }
} }
...@@ -168,7 +173,7 @@ public class CourseTools extends XMBaseTest { ...@@ -168,7 +173,7 @@ public class CourseTools extends XMBaseTest {
body.put("courseState",courseState); body.put("courseState",courseState);
body.put("checkOnly",checkOnly); // 是否只校验 body.put("checkOnly",checkOnly); // 是否只校验
body.put("brandId", dataApi.getLoginInfo().getBrandId()); body.put("brandId", dataApi.getLoginInfo().getBrandId());
dataApi.doRequest(RequestType.JSON,params,body.toString(),headers).assetsSuccess(true); dataApi.doRequest(RequestType.JSON,dataparams,body.toString(),dataheadrs).assetsSuccess(true);
return dataApi.getBodyInJSON().getJSONObject("result").getString("resultCode"); return dataApi.getBodyInJSON().getJSONObject("result").getString("resultCode");
} }
...@@ -191,7 +196,7 @@ public class CourseTools extends XMBaseTest { ...@@ -191,7 +196,7 @@ public class CourseTools extends XMBaseTest {
body.put("operatorId", dataApi.getLoginInfo().getAdminId()); body.put("operatorId", dataApi.getLoginInfo().getAdminId());
body.put("studioId", dataApi.getLoginInfo().getStudioId()); body.put("studioId", dataApi.getLoginInfo().getStudioId());
body.put("brandId", dataApi.getLoginInfo().getBrandId()); body.put("brandId", dataApi.getLoginInfo().getBrandId());
dataApi.doRequest(RequestType.JSON,params,body.toString(),headers).assetsSuccess(true); dataApi.doRequest(RequestType.JSON,dataparams,body.toString(),dataheadrs).assetsSuccess(true);
return dataApi.getBodyInJSON().getJSONObject("result"); return dataApi.getBodyInJSON().getJSONObject("result");
} }
...@@ -205,11 +210,11 @@ public class CourseTools extends XMBaseTest { ...@@ -205,11 +210,11 @@ public class CourseTools extends XMBaseTest {
* @param categoryId:课程分类id * @param categoryId:课程分类id
* @return: com.alibaba.fastjson.JSONObject * @return: com.alibaba.fastjson.JSONObject
**/ **/
public JSONObject getGroupClassPage(String courseState,int current,String courseNameLike,String categoryId){ public JSONObject getGroupClassPage(String courseState,int current,String courseNameLike,String categoryId,DataUserInfo...dataUserInfo){
dataApi.setApiModule(ApiModule.Polar_Course) dataApi.setApiModule(ApiModule.Polar_Course)
.setApiName("API_getGroupClassPage") .setApiName("API_getGroupClassPage")
.setTerminal(Terminal.B); .setTerminal(Terminal.B);
super.beforeDataRequest(); super.beforeDataRequest(dataUserInfo);
JSONObject body= new JSONObject(); JSONObject body= new JSONObject();
body.put("operatorId", dataApi.getLoginInfo().getAdminId()); body.put("operatorId", dataApi.getLoginInfo().getAdminId());
...@@ -226,7 +231,7 @@ public class CourseTools extends XMBaseTest { ...@@ -226,7 +231,7 @@ public class CourseTools extends XMBaseTest {
categoryIds.add(categoryId); categoryIds.add(categoryId);
body.put("categoryIds",categoryIds); body.put("categoryIds",categoryIds);
} }
dataApi.doRequest(RequestType.JSON,params,body.toString(),headers).assetsSuccess(true); dataApi.doRequest(RequestType.JSON,dataparams,body.toString(),dataheadrs).assetsSuccess(true);
return dataApi.getBodyInJSON().getJSONObject("result"); return dataApi.getBodyInJSON().getJSONObject("result");
} }
...@@ -242,11 +247,11 @@ public class CourseTools extends XMBaseTest { ...@@ -242,11 +247,11 @@ public class CourseTools extends XMBaseTest {
* @param coachId:教练id * @param coachId:教练id
* @return: com.alibaba.fastjson.JSONObject * @return: com.alibaba.fastjson.JSONObject
**/ **/
public JSONObject getPersonalPage(String courseState,int current,String courseNameLike,String categoryId,String sizeType,String coachId){ public JSONObject getPersonalPage(String courseState,int current,String courseNameLike,String categoryId,String sizeType,String coachId,DataUserInfo...dataUserInfo){
dataApi.setApiModule(ApiModule.Polar_Course) dataApi.setApiModule(ApiModule.Polar_Course)
.setApiName("API_getPersonalPage") .setApiName("API_getPersonalPage")
.setTerminal(Terminal.B); .setTerminal(Terminal.B);
super.beforeDataRequest(); super.beforeDataRequest(dataUserInfo);
JSONObject body= new JSONObject(); JSONObject body= new JSONObject();
body.put("operatorId", dataApi.getLoginInfo().getAdminId()); body.put("operatorId", dataApi.getLoginInfo().getAdminId());
...@@ -269,7 +274,7 @@ public class CourseTools extends XMBaseTest { ...@@ -269,7 +274,7 @@ public class CourseTools extends XMBaseTest {
if(!coachId.equals("")){ if(!coachId.equals("")){
body.put("coachId",coachId); body.put("coachId",coachId);
} }
dataApi.doRequest(RequestType.JSON,params,body.toString(),headers).assetsSuccess(true); dataApi.doRequest(RequestType.JSON,dataparams,body.toString(),dataheadrs).assetsSuccess(true);
return dataApi.getBodyInJSON().getJSONObject("result"); return dataApi.getBodyInJSON().getJSONObject("result");
} }
...@@ -292,8 +297,113 @@ public class CourseTools extends XMBaseTest { ...@@ -292,8 +297,113 @@ public class CourseTools extends XMBaseTest {
body.put("studioId", dataApi.getLoginInfo().getStudioId()); body.put("studioId", dataApi.getLoginInfo().getStudioId());
body.put("brandId", dataApi.getLoginInfo().getBrandId()); body.put("brandId", dataApi.getLoginInfo().getBrandId());
body.put("courseName",courseName); body.put("courseName",courseName);
dataApi.doRequest(RequestType.JSON,params,body.toString(),headers).assetsSuccess(true); dataApi.doRequest(RequestType.JSON,dataparams,body.toString(),dataheadrs).assetsSuccess(true);
return dataApi.getBodyInJSON().getBoolean("result"); return dataApi.getBodyInJSON().getBoolean("result");
} }
/**
* 创建训练营课程
* @param courseName 课程名称
* @param categoryId 课程分类
* @param duration 课程时长
* @param color 课程对应的课表颜色
* @return 返回课程ID
*/
public String createTrainingCampCourse(String courseName,String categoryId,String duration,String color){
dataApi.setApiModule(ApiModule.Polar_Course)
.setApiName("API_createTrainingCampCourse")
.setTerminal(Terminal.B);
super.beforeDataRequest();
JSONObject body= new JSONObject();
body.put("operatorId", dataApi.getLoginInfo().getAdminId());
body.put("studioId", dataApi.getLoginInfo().getStudioId());
body.put("brandId", dataApi.getLoginInfo().getBrandId());
body.put("courseName",courseName);
body.put("duration",duration);
body.put("color",color);
body.put("categoryId",categoryId);
body.put("timeUnit","MINUTE");
dataApi.doRequest(RequestType.JSON,dataparams,body.toString(),dataheadrs).assetsSuccess(true);
return XMJSONPath.readPath(dataApi.getApi_response(),"$.result");
}
/**
* 编辑训练营课程
* @param brandCourseId 课程ID
* @param courseName
* @param categoryId 课程分类ID
* @param duration 课程时长
* @param color 课表颜色
* @return 返回课程ID
*/
public String editTrainingCampCourse(String brandCourseId,String courseName,String categoryId,String duration,String color){
dataApi.setApiModule(ApiModule.Polar_Course)
.setApiName("API_editTrainingCampCourse")
.setTerminal(Terminal.B);
super.beforeDataRequest();
JSONObject body= new JSONObject();
body.put("operatorId", dataApi.getLoginInfo().getAdminId());
body.put("studioId", dataApi.getLoginInfo().getStudioId());
body.put("brandId", dataApi.getLoginInfo().getBrandId());
body.put("courseName",courseName);
body.put("duration",duration);
body.put("color",color);
body.put("categoryId",categoryId);
body.put("timeUnit","MINUTE");
body.put("brandCourseId",brandCourseId);
dataApi.doRequest(RequestType.JSON,dataparams,body.toString(),dataheadrs).assetsSuccess(true);
return XMJSONPath.readPath(dataApi.getApi_response(),"$.result");
}
/**
* 训练营课程列表查询
* @param categoryIds 不根据课程分类查询时传null即 new ArrayList<>();
* @param courseState 停用OFF,启用ON
* @param courseNameLike 根据课程名称 此场景是创建训练营活动时选择课程然后根据课程名称搜索
*/
public void getTrainingCampCourseList(List<String> categoryIds,String courseState,String courseNameLike){
dataApi.setApiModule(ApiModule.Polar_Course)
.setApiName("API_getTrainingCampCourse")
.setTerminal(Terminal.B);
super.beforeDataRequest();
JSONObject body= new JSONObject();
body.put("operatorId", dataApi.getLoginInfo().getAdminId());
body.put("studioId", dataApi.getLoginInfo().getStudioId());
body.put("brandId", dataApi.getLoginInfo().getBrandId());
body.put("categoryIds",categoryIds);
body.put("size",100);//每页100条数据
body.put("current",0);
body.put("courseState",courseState);
body.put("courseNameLike",courseNameLike);
dataApi.doRequest(RequestType.JSON,dataparams,body.toString(),dataheadrs).assetsSuccess(true);
}
/**
* 根据课程类型和课程名称 全局搜索课程
* @param courseNameLike 课程名称
* @param courseType 课程类型 团课:GROUP_CLASS;私教:PERSONAL;训练营课:TRAINING_CAMP
*/
public void globalSearchCourse(String courseNameLike,String courseType){
dataApi.setApiModule(ApiModule.Polar_Course)
.setApiName("API_globalSearchCourse")
.setTerminal(Terminal.B);
super.beforeDataRequest();
JSONObject body= new JSONObject();
body.put("operatorId", dataApi.getLoginInfo().getAdminId());
body.put("studioId", dataApi.getLoginInfo().getStudioId());
body.put("brandId", dataApi.getLoginInfo().getBrandId());
body.put("courseNameLike",courseNameLike);
body.put("size",20);//每页20条数据
body.put("current",0);
body.put("courseType",courseType);
dataApi.doRequest(RequestType.JSON,dataparams,body.toString(),dataheadrs).assetsSuccess(true);
}
} }
package com.xiaomai.cases.polar.data;
import com.alibaba.fastjson.JSONObject;
import com.xiaomai.cases.polar.memberCard.CardTools;
import com.xiaomai.enums.ApiModule;
import com.xiaomai.enums.LoginAccount;
import com.xiaomai.enums.RequestType;
import com.xiaomai.enums.Terminal;
import com.xiaomai.utils.TimeUtils;
import com.xiaomai.utils.XMBaseTest;
import com.xiaomai.utils.XMJSONPath;
import org.testng.annotations.BeforeMethod;
import org.testng.annotations.Test;
import java.sql.Time;
public class TestCamDataTrend extends XMBaseTest {
@BeforeMethod
public void beforeTest(){
xmAppApi.setApiModule(ApiModule.Polar_Data)
.setApiName("API_camDatatrend")
.setLoginUser(LoginAccount.GYM_PROD)
.setTerminal(Terminal.B);
dal.setCase_owner("yj")
.setCase_name(Thread.currentThread().getStackTrace()[1].getFileName().split("\\.")[0]);
super.beforeTest();
}
@Test(description = "上课数据-趋势分析-次数")
public void testcamDatatrend() {
JSONObject jsonObject = new JSONObject();
jsonObject.put("dateType","DAY");
jsonObject.put("endTime", TimeUtils.getWeekLastTime());
jsonObject.put("startTime",TimeUtils.getWeekFirstTime());
jsonObject.put("metric","CLASS_SESSION_NUMBER");
jsonObject.put("brandId",xmAppApi.getLoginInfo().getBrandId());
jsonObject.put("studioId",xmAppApi.getLoginInfo().getStudioId());
jsonObject.put("operatorId",xmAppApi.getLoginInfo().getAdminId());
xmAppApi.doRequest(RequestType.JSON, params, jsonObject.toJSONString(), headers).assetsSuccess(true);
}
@Test(description = "上课数据-趋势分析-消耗金额")
public void testcamDatatrend1() {
JSONObject jsonObject = new JSONObject();
jsonObject.put("dateType","DAY");
jsonObject.put("endTime", TimeUtils.getWeekLastTime());
jsonObject.put("startTime",TimeUtils.getWeekFirstTime());
jsonObject.put("metric","TOTAL_COST");
jsonObject.put("brandId",xmAppApi.getLoginInfo().getBrandId());
jsonObject.put("studioId",xmAppApi.getLoginInfo().getStudioId());
jsonObject.put("operatorId",xmAppApi.getLoginInfo().getAdminId());
xmAppApi.doRequest(RequestType.JSON, params, jsonObject.toJSONString(), headers).assetsSuccess(true);
}
@Test(description = "上课数据-趋势分析-上课人次")
public void testcamDatatrend2() {
JSONObject jsonObject = new JSONObject();
jsonObject.put("dateType","DAY");
jsonObject.put("endTime", TimeUtils.getWeekLastTime());
jsonObject.put("startTime",TimeUtils.getWeekFirstTime());
jsonObject.put("metric","TOTAL_NUMBER");
jsonObject.put("brandId",xmAppApi.getLoginInfo().getBrandId());
jsonObject.put("studioId",xmAppApi.getLoginInfo().getStudioId());
jsonObject.put("operatorId",xmAppApi.getLoginInfo().getAdminId());
xmAppApi.doRequest(RequestType.JSON, params, jsonObject.toJSONString(), headers).assetsSuccess(true);
}
@Test(description = "上课数据-趋势分析-上课时长")
public void testcamDatatrend3() {
JSONObject jsonObject = new JSONObject();
jsonObject.put("dateType","DAY");
jsonObject.put("endTime", TimeUtils.getWeekLastTime());
jsonObject.put("startTime",TimeUtils.getWeekFirstTime());
jsonObject.put("metric","CLASS_HOUR");
jsonObject.put("brandId",xmAppApi.getLoginInfo().getBrandId());
jsonObject.put("studioId",xmAppApi.getLoginInfo().getStudioId());
jsonObject.put("operatorId",xmAppApi.getLoginInfo().getAdminId());
xmAppApi.doRequest(RequestType.JSON, params, jsonObject.toJSONString(), headers).assetsSuccess(true);
}
}
package com.xiaomai.cases.polar.data;
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.TimeUtils;
import com.xiaomai.utils.XMBaseTest;
import org.testng.annotations.BeforeMethod;
import org.testng.annotations.Test;
public class TestGetCourseCostDetail extends XMBaseTest {
@BeforeMethod
public void beforeTest(){
xmAppApi.setApiModule(ApiModule.Polar_Data)
.setApiName("API_getCourseCostDetail")
.setLoginUser(LoginAccount.GYM_PROD)
.setTerminal(Terminal.B);
dal.setCase_owner("yj")
.setCase_name(Thread.currentThread().getStackTrace()[1].getFileName().split("\\.")[0]);
super.beforeTest();
}
@Test(description = "数据中心-上课数据-课消明细-团课")
public void testgetCourseCostDetail() {
JSONObject jsonObject = new JSONObject();
jsonObject.put("current",0);
jsonObject.put("size",20);
jsonObject.put("coachId","");
jsonObject.put("dateType","DAY");
jsonObject.put("sort","TOTAL_COST_DESC");
jsonObject.put("consumeType","GROUP_CLASS");
jsonObject.put("endTime", TimeUtils.getWeekLastTime());
jsonObject.put("startTime",TimeUtils.getWeekFirstTime());
jsonObject.put("brandId",xmAppApi.getLoginInfo().getBrandId());
jsonObject.put("studioId",xmAppApi.getLoginInfo().getStudioId());
jsonObject.put("operatorId",xmAppApi.getLoginInfo().getAdminId());
xmAppApi.doRequest(RequestType.JSON, params, jsonObject.toJSONString(), headers).assetsSuccess(true);
}
@Test(description = "数据中心-上课数据-课消明细-私教课")
public void testgetCourseCostDetail1() {
JSONObject jsonObject = new JSONObject();
jsonObject.put("current",0);
jsonObject.put("size",20);
jsonObject.put("coachId","");
jsonObject.put("dateType","DAY");
jsonObject.put("sort","TOTAL_COST_DESC");
jsonObject.put("consumeType","PERSONAL");
jsonObject.put("endTime", TimeUtils.getWeekLastTime());
jsonObject.put("startTime",TimeUtils.getWeekFirstTime());
jsonObject.put("brandId",xmAppApi.getLoginInfo().getBrandId());
jsonObject.put("studioId",xmAppApi.getLoginInfo().getStudioId());
jsonObject.put("operatorId",xmAppApi.getLoginInfo().getAdminId());
xmAppApi.doRequest(RequestType.JSON, params, jsonObject.toJSONString(), headers).assetsSuccess(true);
}
@Test(description = "数据中心-上课数据-课消明细-训练营")
public void testgetCourseCostDetail2() {
JSONObject jsonObject = new JSONObject();
jsonObject.put("current",0);
jsonObject.put("size",20);
jsonObject.put("coachId","");
jsonObject.put("dateType","DAY");
jsonObject.put("sort","TOTAL_COST_DESC");
jsonObject.put("consumeType","TRAINING_CAMP");
jsonObject.put("endTime", TimeUtils.getWeekLastTime());
jsonObject.put("startTime",TimeUtils.getWeekFirstTime());
jsonObject.put("brandId",xmAppApi.getLoginInfo().getBrandId());
jsonObject.put("studioId",xmAppApi.getLoginInfo().getStudioId());
jsonObject.put("operatorId",xmAppApi.getLoginInfo().getAdminId());
xmAppApi.doRequest(RequestType.JSON, params, jsonObject.toJSONString(), headers).assetsSuccess(true);
}
}
package com.xiaomai.cases.polar.data;
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.TimeUtils;
import com.xiaomai.utils.XMBaseTest;
import org.testng.annotations.BeforeMethod;
import org.testng.annotations.Test;
public class TestTetCourseCostData extends XMBaseTest {
@BeforeMethod
public void beforeTest(){
xmAppApi.setApiModule(ApiModule.Polar_Data)
.setApiName("API_getCourseCostData")
.setLoginUser(LoginAccount.GYM_PROD)
.setTerminal(Terminal.B);
dal.setCase_owner("yj")
.setCase_name(Thread.currentThread().getStackTrace()[1].getFileName().split("\\.")[0]);
super.beforeTest();
}
@Test(description = "上课数据-课消数据-全部")
public void testgetCourseCostData() {
JSONObject jsonObject = new JSONObject();
jsonObject.put("dateType","WEEK");
jsonObject.put("endTime", TimeUtils.getWeekLastTime());
jsonObject.put("startTime",TimeUtils.getWeekFirstTime());
jsonObject.put("brandId",xmAppApi.getLoginInfo().getBrandId());
jsonObject.put("studioId",xmAppApi.getLoginInfo().getStudioId());
jsonObject.put("operatorId",xmAppApi.getLoginInfo().getAdminId());
xmAppApi.doRequest(RequestType.JSON, params, jsonObject.toJSONString(), headers).assetsSuccess(true);
}
@Test(description = "上课数据-课消数据-团课")
public void testgetCourseCostData1() {
JSONObject jsonObject = new JSONObject();
jsonObject.put("dateType","WEEK");
jsonObject.put("consumeType","GROUP_CLASS");
jsonObject.put("endTime", TimeUtils.getWeekLastTime());
jsonObject.put("startTime",TimeUtils.getWeekFirstTime());
jsonObject.put("brandId",xmAppApi.getLoginInfo().getBrandId());
jsonObject.put("studioId",xmAppApi.getLoginInfo().getStudioId());
jsonObject.put("operatorId",xmAppApi.getLoginInfo().getAdminId());
xmAppApi.doRequest(RequestType.JSON, params, jsonObject.toJSONString(), headers).assetsSuccess(true);
}
@Test(description = "上课数据-课消数据-私教课")
public void testgetCourseCostData2() {
JSONObject jsonObject = new JSONObject();
jsonObject.put("dateType","WEEK");
jsonObject.put("consumeType","PERSONAL");
jsonObject.put("endTime", TimeUtils.getWeekLastTime());
jsonObject.put("startTime",TimeUtils.getWeekFirstTime());
jsonObject.put("brandId",xmAppApi.getLoginInfo().getBrandId());
jsonObject.put("studioId",xmAppApi.getLoginInfo().getStudioId());
jsonObject.put("operatorId",xmAppApi.getLoginInfo().getAdminId());
xmAppApi.doRequest(RequestType.JSON, params, jsonObject.toJSONString(), headers).assetsSuccess(true);
}
@Test(description = "上课数据-课消数据-训练营")
public void testgetCourseCostData3() {
JSONObject jsonObject = new JSONObject();
jsonObject.put("dateType","WEEK");
jsonObject.put("consumeType","TRAINING_CAMP");
jsonObject.put("endTime", TimeUtils.getWeekLastTime());
jsonObject.put("startTime",TimeUtils.getWeekFirstTime());
jsonObject.put("brandId",xmAppApi.getLoginInfo().getBrandId());
jsonObject.put("studioId",xmAppApi.getLoginInfo().getStudioId());
jsonObject.put("operatorId",xmAppApi.getLoginInfo().getAdminId());
xmAppApi.doRequest(RequestType.JSON, params, jsonObject.toJSONString(), headers).assetsSuccess(true);
}
@Test(description = "上课数据-课消数据-手动扣次")
public void testgetCourseCostData4() {
JSONObject jsonObject = new JSONObject();
jsonObject.put("dateType","WEEK");
jsonObject.put("consumeType","MANUAL_DEDUCT");
jsonObject.put("endTime", TimeUtils.getWeekLastTime());
jsonObject.put("startTime",TimeUtils.getWeekFirstTime());
jsonObject.put("brandId",xmAppApi.getLoginInfo().getBrandId());
jsonObject.put("studioId",xmAppApi.getLoginInfo().getStudioId());
jsonObject.put("operatorId",xmAppApi.getLoginInfo().getAdminId());
xmAppApi.doRequest(RequestType.JSON, params, jsonObject.toJSONString(), headers).assetsSuccess(true);
}
@Test(description = "上课数据-课消数据-自动消耗")
public void testgetCourseCostData5() {
JSONObject jsonObject = new JSONObject();
jsonObject.put("dateType","WEEK");
jsonObject.put("consumeType","AUTO_CONSUME");
jsonObject.put("endTime", TimeUtils.getWeekLastTime());
jsonObject.put("startTime",TimeUtils.getWeekFirstTime());
jsonObject.put("brandId",xmAppApi.getLoginInfo().getBrandId());
jsonObject.put("studioId",xmAppApi.getLoginInfo().getStudioId());
jsonObject.put("operatorId",xmAppApi.getLoginInfo().getAdminId());
xmAppApi.doRequest(RequestType.JSON, params, jsonObject.toJSONString(), headers).assetsSuccess(true);
}
@Test(description = "上课数据-课消数据-单次约课")
public void testgetCourseCostData6() {
JSONObject jsonObject = new JSONObject();
jsonObject.put("dateType","WEEK");
jsonObject.put("consumeType","SINGLE_RESERVE");
jsonObject.put("endTime", TimeUtils.getWeekLastTime());
jsonObject.put("startTime",TimeUtils.getWeekFirstTime());
jsonObject.put("brandId",xmAppApi.getLoginInfo().getBrandId());
jsonObject.put("studioId",xmAppApi.getLoginInfo().getStudioId());
jsonObject.put("operatorId",xmAppApi.getLoginInfo().getAdminId());
xmAppApi.doRequest(RequestType.JSON, params, jsonObject.toJSONString(), headers).assetsSuccess(true);
}
}
package com.xiaomai.cases.polar.enums;
import org.apache.commons.lang3.StringUtils;
/**
* @Author zxy
* @Description
* @Date 2024/7/2 17:48
*/
public enum ExcelImportEnum {
MEMBER_INFO("memberInfo",3,0,1);
/**业务 */
private String value;
/**行开始下标(从0开始) */
private int rowStartIndex;
/**姓名列坐标 */
private int cellNametIndex;
/**手机号列坐标 */
private int cellPhoneIndex;
ExcelImportEnum(String value, int rowStartIndex, int cellNametIndex, int cellPhoneIndex) {
this.value = value;
this.rowStartIndex = rowStartIndex;
this.cellNametIndex = cellNametIndex;
this.cellPhoneIndex = cellPhoneIndex;
}
ExcelImportEnum(String value, int rowStartIndex, int cellPhoneIndex) {
this.value = value;
this.rowStartIndex = rowStartIndex;
this.cellPhoneIndex = cellPhoneIndex;
}
public String getValue() {
return value;
}
public void setValue(String value) {
this.value = value;
}
public int getRowStartIndex() {
return rowStartIndex;
}
public void setRowStartIndex(int rowStartIndex) {
this.rowStartIndex = rowStartIndex;
}
public int getCellNametIndex() {
return cellNametIndex;
}
public void setCellNametIndex(int cellNametIndex) {
this.cellNametIndex = cellNametIndex;
}
public int getCellPhoneIndex() {
return cellPhoneIndex;
}
public void setCellPhoneIndex(int cellPhoneIndex) {
this.cellPhoneIndex = cellPhoneIndex;
}
/**
*根据value获取对应枚举
* value找不对应的枚举,则返回一个默认值
* @param value
* @return
}
*/
public static int getRowIndexByValue(String value) {
for (ExcelImportEnum excelImportBusinessEnum : ExcelImportEnum.values()) {
if (StringUtils.equals(excelImportBusinessEnum.getValue(), value)) {
return excelImportBusinessEnum.rowStartIndex;
}
}
return 0;
}
public static int getNameCellIndexByValue(String value) {
for (ExcelImportEnum excelImportBusinessEnum : ExcelImportEnum.values()) {
if (StringUtils.equals(excelImportBusinessEnum.getValue(), value)) {
return excelImportBusinessEnum.cellNametIndex;
}
}
return 0;
}
public static int getPhoneCellIndexByValue(String value) {
for (ExcelImportEnum excelImportBusinessEnum : ExcelImportEnum.values()) {
if (StringUtils.equals(excelImportBusinessEnum.getValue(), value)) {
return excelImportBusinessEnum.cellPhoneIndex;
}
}
return 1;
}
}
package com.xiaomai.cases.polar.finance.cashier;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.xiaomai.client.DataUserInfo;
import com.xiaomai.enums.ApiModule;
import com.xiaomai.enums.RequestType;
import com.xiaomai.enums.Terminal;
import com.xiaomai.utils.XMBaseTest;
public class CashierTools extends XMBaseTest {
/**
* @param
* @description: 分页筛选收银流水-搜索
* @param buyerName:支付姓名 不用需要传null
* @param buyerPhone:支付手机号 不用需要传null
* @param businessNo:支付订单号 不用需要传null
* @author: yangfangfang
**/
public JSONObject page_select(String buyerName, String buyerPhone, String businessNo, DataUserInfo...dataUserInfos){
dataApi.setApiModule(ApiModule.Polar_Finance)
.setApiName("API_page")
.setTerminal(Terminal.B);
super.beforeDataRequest(dataUserInfos);
JSONObject jsonObject=new JSONObject();
jsonObject.put("current",0);
jsonObject.put("size",20);
jsonObject.put("buyerName",buyerName);
jsonObject.put("buyerPhone",buyerPhone);
jsonObject.put("businessNo",businessNo);
jsonObject.put("studioId",dataApi.getLoginInfo().getStudioId());
jsonObject.put("brandId",dataApi.getLoginInfo().getBrandId());
jsonObject.put("operatorId",dataApi.getLoginInfo().getAdminId());
dataApi.doRequest(RequestType.JSON, dataparams, jsonObject.toJSONString(), dataheadrs);
JSONObject response=dataApi.getBodyInJSON();
return response;
}
/**
* @param
* @description: 分页筛选收银流水-筛选
* @param subChannel:支付方式 [ "支付宝", "微信" ] [ ALI, WX ]
* @param orderType:来源[ "未知", "签单", "退单", "作废订单", "收款码", "B端短信充值", "电子合同" ][ UNKNOWN, SIGN_ORDER, REFUND_ORDER, DISCARD_ORDER, PAY_QR_CODE, B_SMS_RECHARGE, ELE_CONTRACT ]
* @author: yangfangfang
**/
public JSONObject page_sift(String subChannel, String orderType, DataUserInfo...dataUserInfos){
dataApi.setApiModule(ApiModule.Polar_Finance)
.setApiName("API_page")
.setTerminal(Terminal.B);
super.beforeDataRequest(dataUserInfos);
JSONObject jsonObject=new JSONObject();
jsonObject.put("current",0);
jsonObject.put("size",20);
jsonObject.put("subChannel",subChannel);//支付方式 [ "支付宝", "微信" ] [ ALI, WX ]
JSONArray transStateList=new JSONArray();//收款成功(入账中、入账成功),这两个状态都代表收款成功
transStateList.add("PAY_SUCCESS");
transStateList.add("PAY_IN");
jsonObject.put("transStateList",transStateList);
jsonObject.put("orderType",orderType);//来源[ "未知", "签单", "退单", "作废订单", "收款码", "B端短信充值", "电子合同" ][ UNKNOWN, SIGN_ORDER, REFUND_ORDER, DISCARD_ORDER, PAY_QR_CODE, B_SMS_RECHARGE, ELE_CONTRACT ]
jsonObject.put("studioId",xmAppApi.getLoginInfo().getStudioId());
jsonObject.put("brandId",xmAppApi.getLoginInfo().getBrandId());
jsonObject.put("operatorId",xmAppApi.getLoginInfo().getAdminId());
dataApi.doRequest(RequestType.JSON, dataparams, jsonObject.toJSONString(), dataheadrs);
JSONObject response=dataApi.getBodyInJSON();
return response;
}
}
package com.xiaomai.cases.polar.finance.cashier;
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;
public class TestGetById extends XMBaseTest {
CashierTools cashierTools=new CashierTools();
@BeforeMethod
public void beforeTest(){
xmAppApi.setApiModule(ApiModule.Polar_Finance)
.setApiName("API_getById")
.setLoginUser(LoginAccount.YFF_PROD)
.setTerminal(Terminal.B);
dal.setCase_owner("yff")
.setCase_name(Thread.currentThread().getStackTrace()[1].getFileName().split("\\.")[0]);
super.beforeTest();
}
@Test(description = "查询收银流水详情")
public void testGetById(){
//10020060066--固定流水,换场馆需要按照这个手机支付0.01元 "flowIds": ["1808757176611880962"]
JSONObject page_select=cashierTools.page_select(null,"10020060066",null);
String id=page_select.getJSONObject("result").getJSONArray("records").getJSONObject(0).getString("id");//流水ID
JSONObject getById=new JSONObject();
getById.put("id",id);
getById.put("brandId",xmAppApi.getLoginInfo().getBrandId());
getById.put("studioId",xmAppApi.getLoginInfo().getStudioId());
getById.put("operatorId",xmAppApi.getLoginInfo().getAdminId());
xmAppApi.doRequest(RequestType.JSON,params,getById.toJSONString(),headers).assetsSuccess(true);
String success=xmAppApi.getBodyInJSON().getString("success");
Assert.assertEquals(success,"true","查询收银流水详情失败");
}
}
package com.xiaomai.cases.polar.finance.cashier;
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.XMBaseTest;
import org.testng.Assert;
import org.testng.annotations.BeforeMethod;
import org.testng.annotations.DataProvider;
import org.testng.annotations.Test;
public class TestPage extends XMBaseTest {
@BeforeMethod
public void beforeTest(){
xmAppApi.setApiModule(ApiModule.Polar_Finance)
.setApiName("API_page")
.setLoginUser(LoginAccount.YFF_PROD)
.setTerminal(Terminal.B);
dal.setCase_owner("yff")
.setCase_name(Thread.currentThread().getStackTrace()[1].getFileName().split("\\.")[0]);
super.beforeTest();
}
@DataProvider
public Object[][] dataProvider(){
return new Object[][]{
{"自动化流水",null},
{null,"10020060066"},
};
}
@Test(description = "分页筛选收银流水-搜索",dataProvider ="dataProvider")
public void testPage(String buyerName,String buyerPhone){
//10020060066--固定流水,换场馆需要按照这个手机支付0.01元 "flowIds": ["1808757176611880962"]
JSONObject jsonObject=new JSONObject();
jsonObject.put("current",0);
jsonObject.put("size",20);
jsonObject.put("buyerName",buyerName);
jsonObject.put("buyerPhone",buyerPhone);
jsonObject.put("businessNo",null);
jsonObject.put("studioId",xmAppApi.getLoginInfo().getStudioId());
jsonObject.put("brandId",xmAppApi.getLoginInfo().getBrandId());
jsonObject.put("operatorId",xmAppApi.getLoginInfo().getAdminId());
xmAppApi.doRequest(RequestType.JSON,params,jsonObject.toJSONString(),headers).assetsSuccess(true);
JSONObject response=xmAppApi.getBodyInJSON();
String success=response.getString("success");
int total=Integer.parseInt(response.getJSONObject("result").getString("total"));
Assert.assertEquals(success,"true","分页筛选收银流水失败");
Assert.assertEquals(total>=1,true,"未搜索到对应的流水");
}
@DataProvider
public Object[][] dataProvider1(){
return new Object[][]{
{true,"WX","PAY_QR_CODE","REFUND"},
{false,"ALI","SIGN_ORDER","PAY"},
{false,"ALI","REFUND_ORDER","REFUND"},
{false,"WX","DISCARD_ORDER","PAY"},
};
}
@Test(description = "分页筛选收银流水",dataProvider = "dataProvider1")
public void testPage_sift(boolean existSubOrderNo,String subChannel,String orderType,String transType){
JSONObject jsonObject=new JSONObject();
jsonObject.put("current",0);
jsonObject.put("size",20);
jsonObject.put("buyerName",null);
jsonObject.put("buyerPhone","10020060066");
jsonObject.put("businessNo",null);
jsonObject.put("existSubOrderNo",existSubOrderNo);//是否存在子订单号, true-存在;false-不存在
jsonObject.put("subChannel",subChannel);//支付方式 [ "支付宝", "微信" ] [ ALI, WX ]
JSONArray transStateList=new JSONArray();//收款成功(入账中、入账成功)
transStateList.add("PAY_SUCCESS");
transStateList.add("PAY_IN");
jsonObject.put("transStateList",transStateList);
jsonObject.put("orderType",orderType);//来源[ "未知", "签单", "退单", "作废订单", "收款码", "B端短信充值", "电子合同" ][ UNKNOWN, SIGN_ORDER, REFUND_ORDER, DISCARD_ORDER, PAY_QR_CODE, B_SMS_RECHARGE, ELE_CONTRACT ]
jsonObject.put("transType",transType);//交易类型:PAY-收款;REFUND-退款;
jsonObject.put("studioId",xmAppApi.getLoginInfo().getStudioId());
jsonObject.put("brandId",xmAppApi.getLoginInfo().getBrandId());
jsonObject.put("operatorId",xmAppApi.getLoginInfo().getAdminId());
xmAppApi.doRequest(RequestType.JSON,params,jsonObject.toJSONString(),headers).assetsSuccess(true);
String success=xmAppApi.getBodyInJSON().getString("success");
Assert.assertEquals(success,"true","分页筛选收银流水失败");
}
}
package com.xiaomai.cases.polar.finance.cashier;
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;
public class TestPageSettle extends XMBaseTest {
@BeforeMethod
public void beforeTest(){
xmAppApi.setApiModule(ApiModule.Polar_Finance)
.setApiName("API_pageSettle")
.setLoginUser(LoginAccount.YFF_PROD)
.setTerminal(Terminal.B);
dal.setCase_owner("yff")
.setCase_name(Thread.currentThread().getStackTrace()[1].getFileName().split("\\.")[0]);
super.beforeTest();
}
@Test(description = "分页筛选结算记录")
public void testPageSettle(){
JSONObject jsonObject=new JSONObject();
jsonObject.put("current",0);
jsonObject.put("size",20);
jsonObject.put("transState","SUCCESS");//结算状态:成功
jsonObject.put("studioName","小麦乐动自动化场馆");//场馆名称
jsonObject.put("studioId",xmAppApi.getLoginInfo().getStudioId());
jsonObject.put("brandId",xmAppApi.getLoginInfo().getBrandId());
jsonObject.put("operatorId",xmAppApi.getLoginInfo().getAdminId());
xmAppApi.doRequest(RequestType.JSON,params,jsonObject.toJSONString(),headers).assetsSuccess(true);
String success=xmAppApi.getBodyInJSON().getString("success");
Assert.assertEquals(success,"true","获取分页筛选结算记录失败");
}
}
package com.xiaomai.cases.polar.finance.cashier;
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.DataProvider;
import org.testng.annotations.Test;
public class TestStatistic extends XMBaseTest {
@BeforeMethod
public void beforeTest(){
xmAppApi.setApiModule(ApiModule.Polar_Finance)
.setApiName("API_statistic")
.setLoginUser(LoginAccount.YFF_PROD)
.setTerminal(Terminal.B);
dal.setCase_owner("yff")
.setCase_name(Thread.currentThread().getStackTrace()[1].getFileName().split("\\.")[0]);
super.beforeTest();
}
@DataProvider
public Object[][] dataProvider(){
return new Object[][]{
{"PAY"},//收款
{"REFUND"}//退款
};
}
@Test(description = "统计收银流水",dataProvider = "dataProvider")
public void testStatistic(String transType){
JSONObject jsonObject=new JSONObject();
jsonObject.put("transType",transType);
jsonObject.put("studioId",xmAppApi.getLoginInfo().getStudioId());
jsonObject.put("brandId",xmAppApi.getLoginInfo().getBrandId());
jsonObject.put("operatorId",xmAppApi.getLoginInfo().getAdminId());
xmAppApi.doRequest(RequestType.JSON,params,jsonObject.toJSONString(),headers).assetsSuccess(true);
String success=xmAppApi.getBodyInJSON().getString("success");
Assert.assertEquals(success,"true","获取统计收银流水失败");
}
}
package com.xiaomai.cases.polar.finance.order; package com.xiaomai.cases.polar.finance.order;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import com.xiaomai.client.DataUserInfo; import com.xiaomai.client.DataUserInfo;
import com.xiaomai.enums.ApiModule; import com.xiaomai.enums.ApiModule;
import com.xiaomai.enums.RequestType; import com.xiaomai.enums.RequestType;
import com.xiaomai.enums.Terminal; import com.xiaomai.enums.Terminal;
import com.xiaomai.utils.RandomStringUtil;
import com.xiaomai.utils.TimeUtils;
import com.xiaomai.utils.XMBaseTest; import com.xiaomai.utils.XMBaseTest;
import java.math.BigDecimal;
public class OrderTools extends XMBaseTest { public class OrderTools extends XMBaseTest {
/** /**
* @param * @param
* @description:获取会员详情-订单管理列表 * @description:获取会员详情-订单管理列表
* @param supplierId:卖家ID 场馆ID
* @param receiverId:会员ID
* @author: yangfangfang * @author: yangfangfang
**/ **/
public JSONObject testPageMemberVoucher(String current,String size,String supplierId,String receiverId,String brandId,String studioId,String operatorId,DataUserInfo...dataUserInfos){ public JSONObject pageMemberVoucher(String supplierId,String receiverId,DataUserInfo...dataUserInfos){
dataApi.setApiModule(ApiModule.Polar_Finance) dataApi.setApiModule(ApiModule.Polar_Finance)
.setApiName("API_pageMemberVoucher") .setApiName("API_pageMemberVoucher")
...@@ -22,13 +30,13 @@ public class OrderTools extends XMBaseTest { ...@@ -22,13 +30,13 @@ public class OrderTools extends XMBaseTest {
super.beforeDataRequest(dataUserInfos); super.beforeDataRequest(dataUserInfos);
JSONObject jsonObject=new JSONObject(); JSONObject jsonObject=new JSONObject();
jsonObject.put("current",""); jsonObject.put("current",0);
jsonObject.put("size",""); jsonObject.put("size",20);
jsonObject.put("supplierId",""); jsonObject.put("supplierId",supplierId);
jsonObject.put("receiverId",""); jsonObject.put("receiverId",receiverId);
jsonObject.put("brandId",""); jsonObject.put("brandId",dataApi.getLoginInfo().getBrandId());
jsonObject.put("studioId",""); jsonObject.put("studioId",dataApi.getLoginInfo().getStudioId());
jsonObject.put("operatorId",""); jsonObject.put("operatorId",dataApi.getLoginInfo().getAdminId());
dataApi.doRequest(RequestType.JSON, dataparams, jsonObject.toJSONString(), dataheadrs).assetsSuccess(true); dataApi.doRequest(RequestType.JSON, dataparams, jsonObject.toJSONString(), dataheadrs).assetsSuccess(true);
JSONObject response=dataApi.getBodyInJSON(); JSONObject response=dataApi.getBodyInJSON();
...@@ -38,9 +46,11 @@ public class OrderTools extends XMBaseTest { ...@@ -38,9 +46,11 @@ public class OrderTools extends XMBaseTest {
/** /**
* @param * @param
* @description:获取会员详情-订单管理金额统计 * @description:获取会员详情-订单管理金额统计
* @param supplierId:卖家ID 场馆ID
* @param receiverId:会员ID
* @author: yangfangfang * @author: yangfangfang
**/ **/
public JSONObject testSumMemberVoucherAmount(String current,String size,String supplierId,String receiverId,String brandId,String studioId,String operatorId,DataUserInfo...dataUserInfos){ public JSONObject sumMemberVoucherAmount(String supplierId,String receiverId,DataUserInfo...dataUserInfos){
dataApi.setApiModule(ApiModule.Polar_Finance) dataApi.setApiModule(ApiModule.Polar_Finance)
.setApiName("API_sumMemberVoucherAmount") .setApiName("API_sumMemberVoucherAmount")
...@@ -48,13 +58,13 @@ public class OrderTools extends XMBaseTest { ...@@ -48,13 +58,13 @@ public class OrderTools extends XMBaseTest {
super.beforeDataRequest(dataUserInfos); super.beforeDataRequest(dataUserInfos);
JSONObject jsonObject=new JSONObject(); JSONObject jsonObject=new JSONObject();
jsonObject.put("current",""); jsonObject.put("current",0);
jsonObject.put("size",""); jsonObject.put("size",20);
jsonObject.put("supplierId",""); jsonObject.put("supplierId",supplierId);
jsonObject.put("receiverId",""); jsonObject.put("receiverId",receiverId);
jsonObject.put("brandId",""); jsonObject.put("brandId",dataApi.getLoginInfo().getBrandId());
jsonObject.put("studioId",""); jsonObject.put("studioId",dataApi.getLoginInfo().getStudioId());
jsonObject.put("operatorId",""); jsonObject.put("operatorId",dataApi.getLoginInfo().getAdminId());
dataApi.doRequest(RequestType.JSON, dataparams, jsonObject.toJSONString(), dataheadrs).assetsSuccess(true); dataApi.doRequest(RequestType.JSON, dataparams, jsonObject.toJSONString(), dataheadrs).assetsSuccess(true);
JSONObject response=dataApi.getBodyInJSON(); JSONObject response=dataApi.getBodyInJSON();
...@@ -64,9 +74,14 @@ public class OrderTools extends XMBaseTest { ...@@ -64,9 +74,14 @@ public class OrderTools extends XMBaseTest {
/** /**
* @param * @param
* @description:获取会员详情-订单明细列表 * @description:获取会员详情-订单明细列表
* @param supplierId:卖家ID 场馆ID
* @param receiverId:会员ID
* @param brandId:品牌ID
* @param studioId:场馆ID
* @param operatorId:操作人ID
* @author: yangfangfang * @author: yangfangfang
**/ **/
public JSONObject testPageMemberVoucherItem(String current,String size,String supplierId,String receiverId,String brandId,String studioId,String operatorId,DataUserInfo...dataUserInfos){ public JSONObject pageMemberVoucherItem(String supplierId,String receiverId,DataUserInfo...dataUserInfos){
dataApi.setApiModule(ApiModule.Polar_Finance) dataApi.setApiModule(ApiModule.Polar_Finance)
.setApiName("API_pageMemberVoucherItem") .setApiName("API_pageMemberVoucherItem")
...@@ -74,13 +89,13 @@ public class OrderTools extends XMBaseTest { ...@@ -74,13 +89,13 @@ public class OrderTools extends XMBaseTest {
super.beforeDataRequest(dataUserInfos); super.beforeDataRequest(dataUserInfos);
JSONObject jsonObject=new JSONObject(); JSONObject jsonObject=new JSONObject();
jsonObject.put("current",""); jsonObject.put("current",0);
jsonObject.put("size",""); jsonObject.put("size",20);
jsonObject.put("supplierId",""); jsonObject.put("supplierId",supplierId);
jsonObject.put("receiverId",""); jsonObject.put("receiverId",receiverId);
jsonObject.put("brandId",""); jsonObject.put("brandId",dataApi.getLoginInfo().getBrandId());
jsonObject.put("studioId",""); jsonObject.put("studioId",dataApi.getLoginInfo().getStudioId());
jsonObject.put("operatorId",""); jsonObject.put("operatorId",dataApi.getLoginInfo().getAdminId());
dataApi.doRequest(RequestType.JSON, dataparams, jsonObject.toJSONString(), dataheadrs).assetsSuccess(true); dataApi.doRequest(RequestType.JSON, dataparams, jsonObject.toJSONString(), dataheadrs).assetsSuccess(true);
JSONObject response=dataApi.getBodyInJSON(); JSONObject response=dataApi.getBodyInJSON();
...@@ -91,9 +106,41 @@ public class OrderTools extends XMBaseTest { ...@@ -91,9 +106,41 @@ public class OrderTools extends XMBaseTest {
/** /**
* @param * @param
* @description:获取订单管理-订单管理列表 * @description:获取订单管理-订单管理列表
* @param supplierId:卖家ID 场馆ID
* @param brandId:品牌ID
* @param studioId:场馆ID
* @param operatorId:操作人ID
* @author: yangfangfang
**/
public JSONObject pageVoucher(String supplierId,DataUserInfo...dataUserInfos){
dataApi.setApiModule(ApiModule.Polar_Finance)
.setApiName("API_pageVoucher")
.setTerminal(Terminal.B);
super.beforeDataRequest(dataUserInfos);
JSONObject jsonObject=new JSONObject();
jsonObject.put("current",0);
jsonObject.put("size",20);
jsonObject.put("supplierId",supplierId);
jsonObject.put("brandId",dataApi.getLoginInfo().getBrandId());
jsonObject.put("studioId",dataApi.getLoginInfo().getStudioId());
jsonObject.put("operatorId",dataApi.getLoginInfo().getAdminId());
dataApi.doRequest(RequestType.JSON, dataparams, jsonObject.toJSONString(), dataheadrs).assetsSuccess(true);
JSONObject response=dataApi.getBodyInJSON();
return response;
}
/**
* @param
* @description:搜索订单管理-订单管理列表
* @param supplierId:卖家ID 场馆ID
* @param businessNo:订单编号
* @author: yangfangfang * @author: yangfangfang
**/ **/
public JSONObject testPageVoucher(String current,String size,String supplierId,String receiverId,String brandId,String studioId,String operatorId,DataUserInfo...dataUserInfos){ public JSONObject pageVoucher1(String supplierId,String businessNo,DataUserInfo...dataUserInfos){
dataApi.setApiModule(ApiModule.Polar_Finance) dataApi.setApiModule(ApiModule.Polar_Finance)
.setApiName("API_pageVoucher") .setApiName("API_pageVoucher")
...@@ -101,25 +148,30 @@ public class OrderTools extends XMBaseTest { ...@@ -101,25 +148,30 @@ public class OrderTools extends XMBaseTest {
super.beforeDataRequest(dataUserInfos); super.beforeDataRequest(dataUserInfos);
JSONObject jsonObject=new JSONObject(); JSONObject jsonObject=new JSONObject();
jsonObject.put("current",""); jsonObject.put("supplierId",supplierId);
jsonObject.put("size",""); jsonObject.put("brandId",dataApi.getLoginInfo().getBrandId());
jsonObject.put("supplierId",""); jsonObject.put("studioId",dataApi.getLoginInfo().getStudioId());
jsonObject.put("receiverId",""); jsonObject.put("operatorId",dataApi.getLoginInfo().getAdminId());
jsonObject.put("brandId",""); jsonObject.put("businessNo",businessNo);
jsonObject.put("studioId","");
jsonObject.put("operatorId","");
dataApi.doRequest(RequestType.JSON, dataparams, jsonObject.toJSONString(), dataheadrs).assetsSuccess(true); dataApi.doRequest(RequestType.JSON, dataparams, jsonObject.toJSONString(), dataheadrs).assetsSuccess(true);
JSONObject response=dataApi.getBodyInJSON(); JSONObject response=dataApi.getBodyInJSON();
return response; return response;
} }
/** /**
* @param * @param
* @description:获取订单管理-订单管理金额统计 * @description:获取订单管理-订单管理金额统计
* @param supplierId:卖家ID 场馆ID
* @param brandId:品牌ID
* @param studioId:场馆ID
* @param operatorId:操作人ID
* @author: yangfangfang * @author: yangfangfang
**/ **/
public JSONObject testSumVoucherAmount(String current,String size,String supplierId,String receiverId,String brandId,String studioId,String operatorId,DataUserInfo...dataUserInfos){ public JSONObject sumVoucherAmount(String supplierId,DataUserInfo...dataUserInfos){
dataApi.setApiModule(ApiModule.Polar_Finance) dataApi.setApiModule(ApiModule.Polar_Finance)
.setApiName("API_sumVoucherAmount") .setApiName("API_sumVoucherAmount")
...@@ -127,13 +179,12 @@ public class OrderTools extends XMBaseTest { ...@@ -127,13 +179,12 @@ public class OrderTools extends XMBaseTest {
super.beforeDataRequest(dataUserInfos); super.beforeDataRequest(dataUserInfos);
JSONObject jsonObject = new JSONObject(); JSONObject jsonObject = new JSONObject();
jsonObject.put("current", ""); jsonObject.put("current", 0);
jsonObject.put("size", ""); jsonObject.put("size", 20);
jsonObject.put("supplierId", ""); jsonObject.put("supplierId", supplierId);
jsonObject.put("receiverId", ""); jsonObject.put("brandId",dataApi.getLoginInfo().getBrandId());
jsonObject.put("brandId", ""); jsonObject.put("studioId",dataApi.getLoginInfo().getStudioId());
jsonObject.put("studioId", ""); jsonObject.put("operatorId",dataApi.getLoginInfo().getAdminId());
jsonObject.put("operatorId", "");
dataApi.doRequest(RequestType.JSON, dataparams, jsonObject.toJSONString(), dataheadrs).assetsSuccess(true); dataApi.doRequest(RequestType.JSON, dataparams, jsonObject.toJSONString(), dataheadrs).assetsSuccess(true);
JSONObject response=dataApi.getBodyInJSON(); JSONObject response=dataApi.getBodyInJSON();
...@@ -143,9 +194,13 @@ public class OrderTools extends XMBaseTest { ...@@ -143,9 +194,13 @@ public class OrderTools extends XMBaseTest {
/** /**
* @param * @param
* @description:获取订单管理-订单明细列表 * @description:获取订单管理-订单明细列表
* @param supplierId:卖家ID 场馆ID
* @param brandId:品牌ID
* @param studioId:场馆ID
* @param operatorId:操作人ID
* @author: yangfangfang * @author: yangfangfang
**/ **/
public JSONObject testPageVoucherItem(String current,String size,String supplierId,String receiverId,String brandId,String studioId,String operatorId,DataUserInfo...dataUserInfos){ public JSONObject pageVoucherItem(String supplierId,DataUserInfo...dataUserInfos){
dataApi.setApiModule(ApiModule.Polar_Finance) dataApi.setApiModule(ApiModule.Polar_Finance)
.setApiName("API_pageVoucherItem") .setApiName("API_pageVoucherItem")
...@@ -153,13 +208,12 @@ public class OrderTools extends XMBaseTest { ...@@ -153,13 +208,12 @@ public class OrderTools extends XMBaseTest {
super.beforeDataRequest(dataUserInfos); super.beforeDataRequest(dataUserInfos);
JSONObject jsonObject=new JSONObject(); JSONObject jsonObject=new JSONObject();
jsonObject.put("current",""); jsonObject.put("current",0);
jsonObject.put("size",""); jsonObject.put("size",20);
jsonObject.put("supplierId",""); jsonObject.put("supplierId",supplierId);
jsonObject.put("receiverId",""); jsonObject.put("brandId",dataApi.getLoginInfo().getBrandId());
jsonObject.put("brandId",""); jsonObject.put("studioId",dataApi.getLoginInfo().getStudioId());
jsonObject.put("studioId",""); jsonObject.put("operatorId",dataApi.getLoginInfo().getAdminId());
jsonObject.put("operatorId","");
dataApi.doRequest(RequestType.JSON, dataparams, jsonObject.toJSONString(), dataheadrs).assetsSuccess(true); dataApi.doRequest(RequestType.JSON, dataparams, jsonObject.toJSONString(), dataheadrs).assetsSuccess(true);
JSONObject response=dataApi.getBodyInJSON(); JSONObject response=dataApi.getBodyInJSON();
...@@ -169,9 +223,13 @@ public class OrderTools extends XMBaseTest { ...@@ -169,9 +223,13 @@ public class OrderTools extends XMBaseTest {
/** /**
* @param * @param
* @description:获取订单管理-订单明细金额统计 * @description:获取订单管理-订单明细金额统计
* @param supplierId:卖家ID 场馆ID
* @param brandId:品牌ID
* @param studioId:场馆ID
* @param operatorId:操作人ID
* @author: yangfangfang * @author: yangfangfang
**/ **/
public JSONObject testSumVoucherItemAmount(String current,String size,String supplierId,String receiverId,String brandId,String studioId,String operatorId,DataUserInfo...dataUserInfos){ public JSONObject sumVoucherItemAmount(String supplierId,DataUserInfo...dataUserInfos){
dataApi.setApiModule(ApiModule.Polar_Finance) dataApi.setApiModule(ApiModule.Polar_Finance)
.setApiName("API_sumVoucherItemAmount") .setApiName("API_sumVoucherItemAmount")
...@@ -179,13 +237,556 @@ public class OrderTools extends XMBaseTest { ...@@ -179,13 +237,556 @@ public class OrderTools extends XMBaseTest {
super.beforeDataRequest(dataUserInfos); super.beforeDataRequest(dataUserInfos);
JSONObject jsonObject=new JSONObject(); JSONObject jsonObject=new JSONObject();
jsonObject.put("current",""); jsonObject.put("current",0);
jsonObject.put("size",""); jsonObject.put("size",20);
jsonObject.put("supplierId",""); jsonObject.put("supplierId",supplierId);
jsonObject.put("receiverId",""); jsonObject.put("brandId",dataApi.getLoginInfo().getBrandId());
jsonObject.put("brandId",""); jsonObject.put("studioId",dataApi.getLoginInfo().getStudioId());
jsonObject.put("studioId",""); jsonObject.put("operatorId",dataApi.getLoginInfo().getAdminId());
jsonObject.put("operatorId","");
dataApi.doRequest(RequestType.JSON, dataparams, jsonObject.toJSONString(), dataheadrs).assetsSuccess(true);
JSONObject response=dataApi.getBodyInJSON();
return response;
}
/**
* @param
* @description: 获取会员卡列表
* @author: yangfangfang
**/
public JSONObject fetchPageOfMemberCard(String title,DataUserInfo...dataUserInfos){
dataApi.setApiModule(ApiModule.Polar_Card)
.setApiName("API_fetchPageOfMemberCard")
.setTerminal(Terminal.B);
super.beforeDataRequest(dataUserInfos);
JSONObject jsonObject=new JSONObject();
jsonObject.put("title",title);
jsonObject.put("shelfState","YES");
jsonObject.put("current",0);
jsonObject.put("size",20);
jsonObject.put("brandId",dataApi.getLoginInfo().getBrandId());
jsonObject.put("studioId",dataApi.getLoginInfo().getStudioId());
jsonObject.put("operatorId",dataApi.getLoginInfo().getAdminId());
dataApi.doRequest(RequestType.JSON, dataparams, jsonObject.toJSONString(), dataheadrs).assetsSuccess(true);
JSONObject response=dataApi.getBodyInJSON();
return response;
}
/**
* @param
* @description: 获取会员卡详情
* @param brandId:品牌ID
* @param studioId:场馆ID
* @param operatorId:操作人ID
* @author: yangfangfang
**/
public JSONObject fetchDetailById(String id,String brandId,String studioId,String operatorId,DataUserInfo...dataUserInfos){
dataApi.setApiModule(ApiModule.Polar_Card)
.setApiName("API_fetchDetailById")
.setTerminal(Terminal.B);
super.beforeDataRequest(dataUserInfos);
JSONObject jsonObject=new JSONObject();
jsonObject.put("id",id);
jsonObject.put("brandId",brandId);
jsonObject.put("studioId",studioId);
jsonObject.put("operatorId",operatorId);
dataApi.doRequest(RequestType.JSON, dataparams, jsonObject.toJSONString(), dataheadrs).assetsSuccess(true);
JSONObject response=dataApi.getBodyInJSON();
return response;
}
/**
* @param
* @description: 检查会员对该卡是否超出购买上限
* @param skuType:商品类型:[ MEMBER_CARD, TRAINING_CAMP, SINGLE_RESERVE, EXPERIENCE_CARD "会员卡", "训练营", "单次约课", "体验卡"
* @param skuId:场馆ID
* @param memberId:会员ID
* @param quantity:卡张数,默认为1
* @param brandId:品牌ID
* @param studioId:场馆ID
* @param operatorId:操作人ID
* @author: yangfangfang
**/
public JSONObject checkAllowPurchase(String skuType,String skuId,String memberId,String quantity,String brandId,String studioId,String operatorId,DataUserInfo...dataUserInfos){
dataApi.setApiModule(ApiModule.Polar_Finance)
.setApiName("API_checkAllowPurchase")
.setTerminal(Terminal.B);
super.beforeDataRequest(dataUserInfos);
JSONObject jsonObject=new JSONObject();
jsonObject.put("skuType",skuType);
jsonObject.put("skuId",skuId);
jsonObject.put("memberId",memberId);
jsonObject.put("quantity",quantity);
jsonObject.put("brandId",brandId);
jsonObject.put("studioId",studioId);
jsonObject.put("operatorId",operatorId);
dataApi.doRequest(RequestType.JSON, dataparams, jsonObject.toJSONString(), dataheadrs);
JSONObject response=dataApi.getBodyInJSON();
return response;
}
/**
* @param
* @description: 创建订单
* @param cardId:卡id
* @param cardSnapshotId:卡快照id
* @param quantity:次数
* @param price:卡的价格
* @param validPeriod:有效期
* @param deductionAmount:优惠金额
* @param activatePattern:激活方式 [ "即时生效", "首次使用生效", "指定日期生效" ][ PURCHASE, FIRST_USED, SPECIFIC_DATE ]
* @param commodityCardType:卡商品类型 [ MEMBER_CARD, TRAINING_CAMP, SINGLE_RESERVE, EXPERIENCE_CARD "会员卡", "训练营", "单次约课", "体验卡"
* @param memberId:会员ID
* @param receivableAmount:应收金额 就是优惠之后的小计
* @param amount:支付金额 支付信息输入的金额
* @param paymentWay:支付方式
* @author: yangfangfang
**/
public JSONObject signOrder(String cardId,String cardSnapshotId,BigDecimal quantity,float price,int validPeriod,String latestSnapshotId,float deductionAmount,String activatePattern,
String commodityCardType,String memberId,float receivableAmount,float amount,String paymentWay,DataUserInfo...dataUserInfos){
dataApi.setApiModule(ApiModule.Polar_Finance)
.setApiName("API_signOrder")
.setTerminal(Terminal.B);
super.beforeDataRequest(dataUserInfos);
JSONObject jsonObject=new JSONObject();
jsonObject.put("salesmanId",dataApi.getLoginInfo().getAdminId());
jsonObject.put("operationTime", TimeUtils.getCurrentTime());
JSONObject card=new JSONObject();
card.put("cardId",cardId);
card.put("cardSnapshotId",cardSnapshotId);
JSONObject cardChange=new JSONObject();
cardChange.put("quantity",quantity);
cardChange.put("price",price);
cardChange.put("validPeriod",validPeriod);
cardChange.put("latestSnapshotId",latestSnapshotId);
card.put("cardChange",cardChange);
card.put("deductionAmount",deductionAmount);//优惠金额(元)
card.put("activatePattern",activatePattern);
card.put("commodityCardType",commodityCardType);
jsonObject.put("card",card);
jsonObject.put("objectId", RandomStringUtil.randomString(20));
jsonObject.put("studioId",dataApi.getLoginInfo().getStudioId());
jsonObject.put("memberId",memberId);
jsonObject.put("receivableAmount",receivableAmount);//应收金额
jsonObject.put("operatorId",dataApi.getLoginInfo().getAdminId());
JSONArray paymentWays=new JSONArray();
JSONObject object=new JSONObject();
object.put("amount",amount);//支付金额
object.put("paymentWay",paymentWay);
JSONArray voucherResourceIds=new JSONArray();//支付凭证
voucherResourceIds.add("");
object.put("voucherResourceIds",voucherResourceIds);
paymentWays.add(object);
jsonObject.put("paymentWays",paymentWays);
jsonObject.put("brandId",dataApi.getLoginInfo().getBrandId());
dataApi.doRequest(RequestType.JSON, dataparams, jsonObject.toJSONString(), dataheadrs).assetsSuccess(true);
JSONObject response=dataApi.getBodyInJSON();
return response;
}
/**
* @param
* @description: 获取订单详情
* @param id:主键ID(创建订单获取的result)
* @author: yangfangfang
**/
public JSONObject getDetail(String id,DataUserInfo...dataUserInfos){
dataApi.setApiModule(ApiModule.Polar_Finance)
.setApiName("API_getDetail")
.setTerminal(Terminal.B);
super.beforeDataRequest(dataUserInfos);
JSONObject jsonObject=new JSONObject();
jsonObject.put("id",id);
jsonObject.put("brandId",dataApi.getLoginInfo().getBrandId());
jsonObject.put("studioId",dataApi.getLoginInfo().getStudioId());
jsonObject.put("operatorId",dataApi.getLoginInfo().getAdminId());
dataApi.doRequest(RequestType.JSON, dataparams, jsonObject.toJSONString(), dataheadrs).assetsSuccess(true);
JSONObject response=dataApi.getBodyInJSON();
return response;
}
/**
* @param
* @description:获取订单支付/退款记录
* @param id:主键ID 创建订单接口的result
* @author: yangfangfang
**/
public JSONObject listByVoucherId(String id, DataUserInfo...dataUserInfos){
dataApi.setApiModule(ApiModule.Polar_Finance)
.setApiName("API_listByVoucherId")
.setTerminal(Terminal.B);
super.beforeDataRequest(dataUserInfos);
JSONObject jsonObject=new JSONObject();
jsonObject.put("id",id);
jsonObject.put("brandId",dataApi.getLoginInfo().getBrandId());
jsonObject.put("studioId",dataApi.getLoginInfo().getStudioId());
jsonObject.put("operatorId",dataApi.getLoginInfo().getAdminId());
dataApi.doRequest(RequestType.JSON, dataparams, jsonObject.toJSONString(), dataheadrs).assetsSuccess(true);
JSONObject response=dataApi.getBodyInJSON();
return response;
}
/**
* @param
* @description:修改对内备注
* @param voucherId:主键ID 创建订单接口的result 订单id
* @param supplierInnerMemo:对内备注
* @param brandId:品牌ID
* @param studioId:场馆ID
* @param operatorId:操作人ID
* @author: yangfangfang
**/
public JSONObject modifySupplierInnerMemo(String voucherId,String supplierInnerMemo, DataUserInfo...dataUserInfos){
dataApi.setApiModule(ApiModule.Polar_Finance)
.setApiName("API_modifySupplierInnerMemo")
.setTerminal(Terminal.B);
super.beforeDataRequest(dataUserInfos);
JSONObject jsonObject=new JSONObject();
jsonObject.put("voucherId",voucherId);
jsonObject.put("supplierInnerMemo",supplierInnerMemo);
jsonObject.put("brandId",dataApi.getLoginInfo().getBrandId());
jsonObject.put("studioId",dataApi.getLoginInfo().getStudioId());
jsonObject.put("operatorId",dataApi.getLoginInfo().getAdminId());
dataApi.doRequest(RequestType.JSON, dataparams, jsonObject.toJSONString(), dataheadrs).assetsSuccess(true);
JSONObject response=dataApi.getBodyInJSON();
return response;
}
/**
* @param
* @description:修改对外备注
* @param voucherId:主键ID 创建订单接口的result 订单id
* @param supplierMemo:对外备注
* @param brandId:品牌ID
* @param studioId:场馆ID
* @param operatorId:操作人ID
* @author: yangfangfang
**/
public JSONObject modifySupplierMemo(String voucherId,String supplierMemo, DataUserInfo...dataUserInfos){
dataApi.setApiModule(ApiModule.Polar_Finance)
.setApiName("API_modifySupplierMemo")
.setTerminal(Terminal.B);
super.beforeDataRequest(dataUserInfos);
JSONObject jsonObject=new JSONObject();
jsonObject.put("voucherId",voucherId);
jsonObject.put("supplierMemo",supplierMemo);
jsonObject.put("brandId",dataApi.getLoginInfo().getBrandId());
jsonObject.put("studioId",dataApi.getLoginInfo().getStudioId());
jsonObject.put("operatorId",dataApi.getLoginInfo().getAdminId());
dataApi.doRequest(RequestType.JSON, dataparams, jsonObject.toJSONString(), dataheadrs).assetsSuccess(true);
JSONObject response=dataApi.getBodyInJSON();
return response;
}
/**
* @param
* @description:校验作废订单
* @param id:主键ID 创建订单接口的result 订单id
* @param brandId:品牌ID
* @param studioId:场馆ID
* @param operatorId:操作人ID
* @author: yangfangfang
**/
public JSONObject checkDiscardVoucher(String id, DataUserInfo...dataUserInfos){
dataApi.setApiModule(ApiModule.Polar_Finance)
.setApiName("API_checkDiscardVoucher")
.setTerminal(Terminal.B);
super.beforeDataRequest(dataUserInfos);
JSONObject jsonObject=new JSONObject();
jsonObject.put("id",id);
jsonObject.put("brandId",dataApi.getLoginInfo().getBrandId());
jsonObject.put("studioId",dataApi.getLoginInfo().getStudioId());
jsonObject.put("operatorId",dataApi.getLoginInfo().getAdminId());
dataApi.doRequest(RequestType.JSON, dataparams, jsonObject.toJSONString(), dataheadrs).assetsSuccess(true);
JSONObject response=dataApi.getBodyInJSON();
return response;
}
/**
* @param
* @description:作废订单
* @param id:主键ID 创建订单接口的result 订单id
* @author: yangfangfang
**/
public JSONObject discard(String id,String discardCause,String discardMemo, DataUserInfo...dataUserInfos){
dataApi.setApiModule(ApiModule.Polar_Finance)
.setApiName("API_discard")
.setTerminal(Terminal.B);
super.beforeDataRequest(dataUserInfos);
JSONObject jsonObject=new JSONObject();
jsonObject.put("id",id);
jsonObject.put("discardCause",discardCause);
jsonObject.put("discardMemo",discardMemo);
jsonObject.put("brandId",dataApi.getLoginInfo().getBrandId());
jsonObject.put("studioId",dataApi.getLoginInfo().getStudioId());
jsonObject.put("operatorId",dataApi.getLoginInfo().getAdminId());
dataApi.doRequest(RequestType.JSON, dataparams, jsonObject.toJSONString(), dataheadrs).assetsSuccess(true);
JSONObject response=dataApi.getBodyInJSON();
return response;
}
/**
* @param
* @description:取消订单
* @param id:主键ID 创建订单接口的result 订单id
* @author: yangfangfang
**/
public JSONObject cancel(String id, DataUserInfo...dataUserInfos){
dataApi.setApiModule(ApiModule.Polar_Finance)
.setApiName("API_cancel")
.setTerminal(Terminal.B);
super.beforeDataRequest(dataUserInfos);
JSONObject jsonObject=new JSONObject();
jsonObject.put("id",id);
jsonObject.put("brandId",dataApi.getLoginInfo().getBrandId());
jsonObject.put("studioId",dataApi.getLoginInfo().getStudioId());
jsonObject.put("operatorId",dataApi.getLoginInfo().getAdminId());
dataApi.doRequest(RequestType.JSON, dataparams, jsonObject.toJSONString(), dataheadrs).assetsSuccess(true);
JSONObject response=dataApi.getBodyInJSON();
return response;
}
/**
* @param
* @description:查询订单或者收支可退流水金额(包含乐动收银状态信息
* @param voucherId:订单id
* @param shouldRefundAmount:应退金额
* @author: yangfangfang
**/
public JSONObject checkRefundableAmount(String voucherId, float shouldRefundAmount, DataUserInfo...dataUserInfos){
dataApi.setApiModule(ApiModule.Polar_Finance)
.setApiName("API_checkRefundableAmount")
.setTerminal(Terminal.B);
super.beforeDataRequest(dataUserInfos);
JSONObject jsonObject=new JSONObject();
jsonObject.put("voucherId",voucherId);
jsonObject.put("shouldRefundAmount",shouldRefundAmount);
jsonObject.put("brandId",dataApi.getLoginInfo().getBrandId());
jsonObject.put("studioId",dataApi.getLoginInfo().getStudioId());
jsonObject.put("operatorId",dataApi.getLoginInfo().getAdminId());
dataApi.doRequest(RequestType.JSON, dataparams, jsonObject.toJSONString(), dataheadrs).assetsSuccess(true);
JSONObject response=dataApi.getBodyInJSON();
return response;
}
/**
* @param
* @description:退单
* @param giftQuantity:退出赠送数量
* @param memberCardId:会员的卡id 从listUserRefundableCard中的id获取 不是买的时候的卡id
* @param quantity:退出购买数量
* @param refundAmount:退出金额
* @param commodityCardType:卡商品类型[ MEMBER_CARD, EXPERIENCE_CARD, DEPOSIT_CARD ]
* @param memberId:会员ID
* @param receivableAmount:应退金额
* @param amount:支付金额
* @param paymentWay:支付方式
* @author: yangfangfang
**/
public JSONObject refundOrder(int giftQuantity, String memberCardId,BigDecimal quantity,float refundAmount,String commodityCardType,String memberId, float receivableAmount,
float amount,String paymentWay,DataUserInfo...dataUserInfos){
dataApi.setApiModule(ApiModule.Polar_Finance)
.setApiName("API_refundOrder")
.setTerminal(Terminal.B);
super.beforeDataRequest(dataUserInfos);
JSONObject jsonObject=new JSONObject();
jsonObject.put("operationTime",TimeUtils.getCurrentTime());
JSONObject card=new JSONObject();
card.put("giftQuantity",giftQuantity);
card.put("memberCardId",memberCardId);
card.put("quantity",quantity);
card.put("refundAmount",refundAmount);
card.put("commodityCardType",commodityCardType);
jsonObject.put("card",card);
jsonObject.put("objectId", RandomStringUtil.randomString(20));
jsonObject.put("studioId",dataApi.getLoginInfo().getStudioId());
jsonObject.put("memberId",memberId);
jsonObject.put("receivableAmount",receivableAmount);
jsonObject.put("operatorId",dataApi.getLoginInfo().getAdminId());
JSONArray paymentWays=new JSONArray();
JSONObject jsonObject1=new JSONObject();
jsonObject1.put("amount",amount);
jsonObject1.put("paymentWay",paymentWay);
JSONArray voucherResourceIds=new JSONArray();
voucherResourceIds.add("");
jsonObject1.put("voucherResourceIds",voucherResourceIds);
paymentWays.add(jsonObject1);
jsonObject.put("paymentWays",paymentWays);
jsonObject.put("brandId",dataApi.getLoginInfo().getBrandId());
dataApi.doRequest(RequestType.JSON, dataparams, jsonObject.toJSONString(), dataheadrs).assetsSuccess(true);
JSONObject response=dataApi.getBodyInJSON();
return response;
}
/**
* @param
* @description:查询用户可退的会员卡列表
* @param accountType:账户类型 [ MEMBER, TRAINING, EXPERIENCE, SINGLE_RESERVE, DEPOSIT ]
* @param content:搜索内容
* @param memberId:搜索内容
* @author: yangfangfang
**/
public JSONObject listUserRefundableCard(String accountType, String content,String memberId, DataUserInfo...dataUserInfos){
dataApi.setApiModule(ApiModule.Polar_Card)
.setApiName("API_listUserRefundableCard")
.setTerminal(Terminal.B);
super.beforeDataRequest(dataUserInfos);
JSONObject jsonObject=new JSONObject();
jsonObject.put("accountType",accountType);
jsonObject.put("content",content);
jsonObject.put("memberId",memberId);
jsonObject.put("brandId",dataApi.getLoginInfo().getBrandId());
jsonObject.put("studioId",dataApi.getLoginInfo().getStudioId());
jsonObject.put("operatorId",dataApi.getLoginInfo().getAdminId());
dataApi.doRequest(RequestType.JSON, dataparams, jsonObject.toJSONString(), dataheadrs).assetsSuccess(true);
JSONObject response=dataApi.getBodyInJSON();
return response;
}
/**
* @param
* @description:继续收款
* @param unpaidAmount:欠费金额
* @param getDetailId:订单ID
* @param paymentWay:支付方式 1-线下微信 2 3
* @author: yangfangfang
**/
public JSONObject pay(float unpaidAmount,String paymentWay,String getDetailId, DataUserInfo...dataUserInfos){
dataApi.setApiModule(ApiModule.Polar_Finance)
.setApiName("API_pay")
.setTerminal(Terminal.B);
super.beforeDataRequest(dataUserInfos);
JSONObject jsonObject = new JSONObject();
jsonObject.put("operationTime", TimeUtils.getCurrentTime());
jsonObject.put("operatorId", dataApi.getLoginInfo().getAdminId());
JSONArray paymentWays = new JSONArray();
JSONObject jsonObject1 = new JSONObject();
jsonObject1.put("amount", unpaidAmount);
jsonObject1.put("paymentWay",paymentWay);
JSONArray voucherResourceIds = new JSONArray();
voucherResourceIds.add("");
jsonObject1.put("voucherResourceIds", voucherResourceIds);
paymentWays.add(jsonObject1);
jsonObject.put("paymentWays", paymentWays);
jsonObject.put("voucherId", getDetailId);
jsonObject.put("brandId", dataApi.getLoginInfo().getBrandId());
jsonObject.put("studioId", dataApi.getLoginInfo().getStudioId());
dataApi.doRequest(RequestType.JSON, dataparams, jsonObject.toJSONString(), dataheadrs).assetsSuccess(true);
JSONObject response=dataApi.getBodyInJSON();
return response;
}
/**
* @param
* @description:查看会员名下的已购会员卡
* @param accountType:账户类型 [ MEMBER, TRAINING, EXPERIENCE, SINGLE_RESERVE, DEPOSIT ]
* @param memberId:会员ID
* @param memberCardState: [ "未生效", "生效中", "已停用", "已过期", "已用尽", "已退卡", "已作废" ]会员卡状态列表 [ UN_ACTIVE, NORMAL, SUSPEND, EXPIRED, USED_UP, REFUNDED, DISCARD ]
* @author: yangfangfang
**/
public JSONObject fetchUserCardList(String accountType,String memberId,String memberCardState, DataUserInfo...dataUserInfos){
dataApi.setApiModule(ApiModule.Polar_Card)
.setApiName("API_fetchUserCardList")
.setTerminal(Terminal.B);
super.beforeDataRequest(dataUserInfos);
JSONObject jsonObject = new JSONObject();
jsonObject.put("studioId", dataApi.getLoginInfo().getStudioId());
jsonObject.put("accountType", accountType);
jsonObject.put("memberId", memberId);
JSONArray memberCardStateList = new JSONArray();
memberCardStateList.add(memberCardState);
jsonObject.put("memberCardStateList",memberCardStateList);
jsonObject.put("brandId", dataApi.getLoginInfo().getBrandId());
jsonObject.put("operatorId", dataApi.getLoginInfo().getAdminId());
dataApi.doRequest(RequestType.JSON, dataparams, jsonObject.toJSONString(), dataheadrs).assetsSuccess(true); dataApi.doRequest(RequestType.JSON, dataparams, jsonObject.toJSONString(), dataheadrs).assetsSuccess(true);
JSONObject response=dataApi.getBodyInJSON(); JSONObject response=dataApi.getBodyInJSON();
......
package com.xiaomai.cases.polar.finance.order;
import com.alibaba.fastjson.JSONObject;
import com.xiaomai.cases.polar.member.Tools;
import com.xiaomai.cases.polar.memberCard.CardTools;
import com.xiaomai.enums.ApiModule;
import com.xiaomai.enums.LoginAccount;
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.math.BigDecimal;
public class TestCancel extends XMBaseTest {
String memberId;
String cardId;
Tools tools=new Tools();
OrderTools orderTools=new OrderTools();
CardTools cardTools=new CardTools();
@BeforeMethod
public void beforeTest(){
xmAppApi.setApiModule(ApiModule.Polar_Finance)
.setApiName("API_cancel")
.setLoginUser(LoginAccount.GYM_PROD)
.setTerminal(Terminal.B);
dal.setCase_owner("yff")
.setCase_name(Thread.currentThread().getStackTrace()[1].getFileName().split("\\.")[0]);
super.beforeTest();
}
@Test(description = "取消订单")
public void testCancel(){
String name = "创建订单潜在会员"+ RandomStringUtil.randomString(3);
String phone = RandomStringUtil.randomMobile("666");
//获取会员ID,没有则新建一个
int memberTotal = Integer.parseInt(tools.search("NORMAL","NORMAL").getJSONObject("result").getString("total"));
if (memberTotal == 0) {
memberId = tools.create(name,phone).getString("result");
}
memberId=tools.search("NORMAL","NORMAL").getJSONObject("result").getJSONArray("records").getJSONObject(0).getString("id");
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
throw new RuntimeException(e);
}
//获取会员卡信息
//获取会员卡列表,没有则新建一个
int cardTotal = Integer.parseInt(orderTools.fetchPageOfMemberCard("次卡").getJSONObject("result").getString("total"));
if (cardTotal == 0) {
cardId = cardTools.memberCardCreate("次卡-创建订单会员卡"+ TimeUtils.getCurrentTime()).getString("result");
}
JSONObject memberCard=orderTools.fetchPageOfMemberCard("次卡");
cardId=memberCard.getJSONObject("result").getJSONArray("records").getJSONObject(0).getString("id");
BigDecimal quantity= new BigDecimal(memberCard.getJSONObject("result").getJSONArray("records").getJSONObject(0).getString("balance"));
float price= Float.parseFloat(memberCard.getJSONObject("result").getJSONArray("records").getJSONObject(0).getString("price"));
int validPeriod= Integer.parseInt(memberCard.getJSONObject("result").getJSONArray("records").getJSONObject(0).getString("validPeriod"));
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
throw new RuntimeException(e);
}
//获取签单要用的卡快照id
String latestSnapshotId=orderTools.fetchDetailById(cardId,xmAppApi.getLoginInfo().getBrandId(),xmAppApi.getLoginInfo().getStudioId(),xmAppApi.getLoginInfo().getAdminId()).getJSONObject("result").getString("latestSnapshotId");
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
throw new RuntimeException(e);
}
//检查会员对该卡是否超出购买上限
boolean limitResult=orderTools.checkAllowPurchase("MEMBER_CARD",cardId,memberId,"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, price/2,"PURCHASE",
"MEMBER_CARD",memberId,price-price/2,0,"1");
String success=orderResult.getString("success");
String getDetailId=orderResult.getString("result");
Assert.assertEquals(success,"true","创建待支付订单失败");
//获取订单详情
JSONObject getDetailResult=orderTools.getDetail(getDetailId);
String id = getDetailResult.getJSONObject("result").getString("id");//订单id
String state=getDetailResult.getJSONObject("result").getString("state");
Assert.assertEquals(id.equals(getDetailId),true,"获取创建的订单详情失败");
Assert.assertEquals(state,"WAITING","获取创建的订单状态未是待支付");
//取消订单
JSONObject cancel=orderTools.cancel(getDetailId);
String cancelSuccess=cancel.getString("success");
Assert.assertEquals(cancelSuccess,"true","取消待支付订单失败");
//获取订单详情
JSONObject getDetailResult1=orderTools.getDetail(getDetailId);
String id1 = getDetailResult1.getJSONObject("result").getString("id");//订单id
String state1=getDetailResult1.getJSONObject("result").getString("state");
Assert.assertEquals(id1.equals(getDetailId),true,"获取取消的订单详情失败");
Assert.assertEquals(state1,"CANCEL","获取取消的订单状态未是已取消");
}
}
}
package com.xiaomai.cases.polar.finance.order;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.xiaomai.cases.polar.finance.revenueAndExpenditure.RevenueAndExpenditureTools;
import com.xiaomai.cases.polar.member.Tools;
import com.xiaomai.cases.polar.memberCard.CardTools;
import com.xiaomai.enums.ApiModule;
import com.xiaomai.enums.LoginAccount;
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.math.BigDecimal;
public class TestDiscard extends XMBaseTest {
String memberId;
String cardId;
Tools tools=new Tools();
OrderTools orderTools=new OrderTools();
RevenueAndExpenditureTools revenueAndExpenditureTools=new RevenueAndExpenditureTools();
CardTools cardTools=new CardTools();
@BeforeMethod
public void beforeTest(){
xmAppApi.setApiModule(ApiModule.Polar_Finance)
.setApiName("API_discard")
.setLoginUser(LoginAccount.GYM_PROD)
.setTerminal(Terminal.B);
dal.setCase_owner("yff")
.setCase_name(Thread.currentThread().getStackTrace()[1].getFileName().split("\\.")[0]);
super.beforeTest();
}
@Test(description = "作废退单&签单订单")
public void testDiscard(){
String name = "创建订单潜在会员"+ RandomStringUtil.randomString(3);
String phone = RandomStringUtil.randomMobile("666");
//获取会员ID,没有则新建一个
int memberTotal = Integer.parseInt(tools.search("NORMAL","NORMAL").getJSONObject("result").getString("total"));
if (memberTotal == 0) {
memberId = tools.create(name,phone).getString("result");
}
memberId=tools.search("NORMAL","NORMAL").getJSONObject("result").getJSONArray("records").getJSONObject(0).getString("id");
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
throw new RuntimeException(e);
}
//获取会员卡信息
//获取会员卡列表,没有则新建一个
int cardTotal = Integer.parseInt(orderTools.fetchPageOfMemberCard("次卡").getJSONObject("result").getString("total"));
if (cardTotal == 0) {
cardId = cardTools.memberCardCreate("次卡-创建订单会员卡"+ TimeUtils.getCurrentTime()).getString("result");
}
JSONObject memberCard=orderTools.fetchPageOfMemberCard("次卡");
cardId=memberCard.getJSONObject("result").getJSONArray("records").getJSONObject(0).getString("id");
BigDecimal quantity= new BigDecimal(memberCard.getJSONObject("result").getJSONArray("records").getJSONObject(0).getString("balance"));
float price= Float.parseFloat(memberCard.getJSONObject("result").getJSONArray("records").getJSONObject(0).getString("price"));
int validPeriod= Integer.parseInt(memberCard.getJSONObject("result").getJSONArray("records").getJSONObject(0).getString("validPeriod"));
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
throw new RuntimeException(e);
}
//获取签单要用的卡快照id
String latestSnapshotId=orderTools.fetchDetailById(cardId,xmAppApi.getLoginInfo().getBrandId(),xmAppApi.getLoginInfo().getStudioId(),xmAppApi.getLoginInfo().getAdminId()).getJSONObject("result").getString("latestSnapshotId");
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
throw new RuntimeException(e);
}
//检查会员对该卡是否超出购买上限
boolean limitResult=orderTools.checkAllowPurchase("MEMBER_CARD",cardId,memberId,"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, price/2,"PURCHASE",
"MEMBER_CARD",memberId,price-price/2,price-price/2,"1");
String success=orderResult.getString("success");
String getDetailId=orderResult.getString("result");
Assert.assertEquals(success,"true","创建订单失败");
try {
Thread.sleep(3000);
} catch (InterruptedException e) {
throw new RuntimeException(e);
}
//获取签单订单详情
JSONObject getDetailResult=orderTools.getDetail(getDetailId);
String id = getDetailResult.getJSONObject("result").getString("id");
String businessNo = getDetailResult.getJSONObject("result").getString("businessNo");
Assert.assertEquals(id.equals(getDetailId),true,"获取创建的订单详情失败");
//创建退单订单
//查询要退的卡id 从listUserRefundableCard-查询用户可退的会员卡列表中获取
JSONObject listUserRefundableCardResult=orderTools.listUserRefundableCard("MEMBER","",memberId);
String listUserRefundableId=listUserRefundableCardResult.getJSONArray("result").getJSONObject(0).getString("id");
//查询订单或者收支可退流水金额(包含乐动收银状态信息)
boolean checkRefundableAmountResult=orderTools.checkRefundableAmount(getDetailId,price - price / 2).getBoolean("success");
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
throw new RuntimeException(e);
}
if(checkRefundableAmountResult == true) {
//退单-会员卡
JSONObject refundOrderResult=orderTools.refundOrder(0,listUserRefundableId,quantity,price - price / 2,"MEMBER_CARD",
memberId,price - price / 2,price - price / 2,"1");
String refundOrderGetDetailId=refundOrderResult.getString("result");
try {
Thread.sleep(3000);
} catch (InterruptedException e) {
throw new RuntimeException(e);
}
//校验是否可以作废退单订单
boolean checkDiscardRefundVoucherResult = orderTools.checkDiscardVoucher(refundOrderGetDetailId).getBoolean("success");
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
throw new RuntimeException(e);
}
if (checkDiscardRefundVoucherResult == true) {
JSONObject refundDiscardResult = orderTools.discard(refundOrderGetDetailId, "重复录入", "已作废退单订单" + RandomStringUtil.randomString(10));
String refundDiscardSuccess = refundDiscardResult.getString("success");
Assert.assertEquals(refundDiscardSuccess, "true", "退单订单作废失败");
try {
Thread.sleep(3000);
} catch (InterruptedException e) {
throw new RuntimeException(e);
}
//验证退单订单状态
//获取退单订单详情--订单状态:已作废
JSONObject refundGetDetailResult = orderTools.getDetail(refundOrderGetDetailId);
String refundState = refundGetDetailResult.getJSONObject("result").getString("state");
String refundBusinessNo = refundGetDetailResult.getJSONObject("result").getString("businessNo");
Assert.assertEquals(refundState, "DISCARD", "退单订单作废,但退单订单状态未是已作废");
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
throw new RuntimeException(e);
}
//获取退单订单退款记录--退款记录被作废
JSONObject refundListByVoucherIdResult = orderTools.listByVoucherId(refundOrderGetDetailId);
String refundListByVoucherId = refundListByVoucherIdResult.getJSONArray("result").getJSONObject(0).getString("id");//收支的id
String refundListByVoucherState = refundListByVoucherIdResult.getJSONArray("result").getJSONObject(0).getString("state");
String refundPaymentWayId = refundListByVoucherIdResult.getJSONArray("result").getJSONObject(0).getJSONObject("paymentWay").getString("id");
Assert.assertEquals(refundListByVoucherState, "DISCARD", "退单订单的支付记录未被作废");
//获取已作废收支明细
JSONObject refundPageDiscardIncomeExpenseResult = revenueAndExpenditureTools.pageDiscardIncomeExpense(refundPaymentWayId, "EXPENSE", "REFUND",
xmAppApi.getLoginInfo().getStudioId());
int refundPageDiscardIncomeExpensePages = Integer.parseInt(refundPageDiscardIncomeExpenseResult.getJSONObject("result").getString("pages"));
int refundPageDiscardIncomeExpenseTotal = Integer.parseInt(refundPageDiscardIncomeExpenseResult.getJSONObject("result").getString("total"));
for (int k = 0; k == refundPageDiscardIncomeExpensePages + 1; k++) {
int n = k == refundPageDiscardIncomeExpensePages ? (refundPageDiscardIncomeExpenseTotal % 10 == 0 ? 10 : refundPageDiscardIncomeExpenseTotal % 10) : 10;
JSONArray refundRecords = refundPageDiscardIncomeExpenseResult.getJSONObject("result").getJSONArray("records");
boolean flag = true;
for (int i = 0; i < n; i++) {
String refundPageDiscardIncomeExpenseId = refundRecords.getJSONObject(i).getString("id");
if (refundPageDiscardIncomeExpenseId.equals(refundListByVoucherId)) {
flag = true;
break;
}
}
Assert.assertEquals(true, flag, "退单订单的收支明细未被作废");
}
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
throw new RuntimeException(e);
}
//获取已作废收支详情
JSONObject refundGetResult = revenueAndExpenditureTools.get(refundListByVoucherId);
String refundGetBusinessNo = refundGetResult.getJSONObject("result").getString("businessNo");
String refundGetState = refundGetResult.getJSONObject("result").getString("state");
Assert.assertEquals(refundGetBusinessNo.equals(refundBusinessNo), true, "退单订单的收支明细未被作废");
Assert.assertEquals(refundGetState, "DISCARD", "退单订单的收支明细未被作废");
try {
Thread.sleep(3000);
} catch (InterruptedException e) {
throw new RuntimeException(e);
}
//校验是否可以作废签单订单
boolean checkDiscardSignVoucherResult = orderTools.checkDiscardVoucher(getDetailId).getBoolean("success");
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
throw new RuntimeException(e);
}
if (checkDiscardSignVoucherResult == true) {
JSONObject discardResult = orderTools.discard(getDetailId, "重复录入", "已作废签单订单" + RandomStringUtil.randomString(10));
String discardSuccess = discardResult.getString("success");
Assert.assertEquals(discardSuccess, "true", "签单订单作废失败");
//验证签单订单状态
//获取签单订单详情--订单状态:已作废
JSONObject getDetailResult1 = orderTools.getDetail(getDetailId);
String state = getDetailResult1.getJSONObject("result").getString("state");
Assert.assertEquals(state, "DISCARD", "签单订单作废,但签单订单状态未是已作废");
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
throw new RuntimeException(e);
}
//获取签单订单支付记录--支付记录被作废
JSONObject listByVoucherIdResult = orderTools.listByVoucherId(getDetailId);
String listByVoucherId = listByVoucherIdResult.getJSONArray("result").getJSONObject(0).getString("id");//收支的id
String listByVoucherState = listByVoucherIdResult.getJSONArray("result").getJSONObject(0).getString("state");
String paymentWayId = listByVoucherIdResult.getJSONArray("result").getJSONObject(0).getJSONObject("paymentWay").getString("id");
Assert.assertEquals(listByVoucherState, "DISCARD", "签单订单的支付记录未被作废");
//获取已作废收支明细
JSONObject pageDiscardIncomeExpenseResult = revenueAndExpenditureTools.pageDiscardIncomeExpense(paymentWayId, "INCOME", "SIGN",
xmAppApi.getLoginInfo().getStudioId());
int pageDiscardIncomeExpensePages = Integer.parseInt(pageDiscardIncomeExpenseResult.getJSONObject("result").getString("pages"));
int pageDiscardIncomeExpenseTotal = Integer.parseInt(pageDiscardIncomeExpenseResult.getJSONObject("result").getString("total"));
for (int k = 0; k == pageDiscardIncomeExpensePages + 1; k++) {
int n = k == pageDiscardIncomeExpensePages ? (pageDiscardIncomeExpenseTotal % 10 == 0 ? 10 : pageDiscardIncomeExpenseTotal % 10) : 10;
JSONArray records = pageDiscardIncomeExpenseResult.getJSONObject("result").getJSONArray("records");
boolean flag = true;
for (int i = 0; i < n; i++) {
String pageDiscardIncomeExpenseId = records.getJSONObject(i).getString("id");
if (pageDiscardIncomeExpenseId.equals(listByVoucherId)) {
flag = true;
break;
}
}
Assert.assertEquals(true, flag, "签单订单的收支明细未被作废");
}
//获取已作废收支详情
JSONObject getResult = revenueAndExpenditureTools.get(listByVoucherId);
String getBusinessNo = getResult.getJSONObject("result").getString("businessNo");
String getState = getResult.getJSONObject("result").getString("state");
Assert.assertEquals(getBusinessNo.equals(businessNo), true, "签单订单的收支明细未被作废");
Assert.assertEquals(getState, "DISCARD", "签单订单的收支明细未被作废");
} else {
Assert.assertEquals(checkDiscardSignVoucherResult, false, "签单订单不能作废");
}
}
}
}
}
}
package com.xiaomai.cases.polar.finance.order;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.xiaomai.cases.polar.finance.revenueAndExpenditure.RevenueAndExpenditureTools;
import com.xiaomai.cases.polar.member.Tools;
import com.xiaomai.cases.polar.memberCard.CardTools;
import com.xiaomai.enums.ApiModule;
import com.xiaomai.enums.LoginAccount;
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.math.BigDecimal;
import java.util.Random;
public class TestModifyMemo extends XMBaseTest {
String memberId;
String cardId;
Tools tools=new Tools();
OrderTools orderTools=new OrderTools();
CardTools cardTools=new CardTools();
@BeforeMethod
public void beforeTest(){
xmAppApi.setApiModule(ApiModule.Polar_Finance)
.setApiName("API_modifySupplierMemo")
.setLoginUser(LoginAccount.GYM_PROD)
.setTerminal(Terminal.B);
dal.setCase_owner("yff")
.setCase_name(Thread.currentThread().getStackTrace()[1].getFileName().split("\\.")[0]);
super.beforeTest();
}
@Test(description = "修改备注")
public void testModifyMemo(){
String name = "创建订单潜在会员"+ RandomStringUtil.randomString(3);
String phone = RandomStringUtil.randomMobile("666");
//获取会员ID,没有则新建一个
int memberTotal = Integer.parseInt(tools.search("NORMAL","NORMAL").getJSONObject("result").getString("total"));
if (memberTotal == 0) {
memberId = tools.create(name,phone).getString("result");
}
memberId=tools.search("NORMAL","NORMAL").getJSONObject("result").getJSONArray("records").getJSONObject(0).getString("id");
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
throw new RuntimeException(e);
}
//获取会员卡信息
//获取会员卡列表,没有则新建一个
int cardTotal = Integer.parseInt(orderTools.fetchPageOfMemberCard("次卡").getJSONObject("result").getString("total"));
if (cardTotal == 0) {
cardId = cardTools.memberCardCreate("次卡-创建订单会员卡"+ TimeUtils.getCurrentTime()).getString("result");
}
JSONObject memberCard=orderTools.fetchPageOfMemberCard("次卡");
cardId=memberCard.getJSONObject("result").getJSONArray("records").getJSONObject(0).getString("id");
BigDecimal quantity= new BigDecimal(memberCard.getJSONObject("result").getJSONArray("records").getJSONObject(0).getString("balance"));
float price= Float.parseFloat(memberCard.getJSONObject("result").getJSONArray("records").getJSONObject(0).getString("price"));
int validPeriod= Integer.parseInt(memberCard.getJSONObject("result").getJSONArray("records").getJSONObject(0).getString("validPeriod"));
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
throw new RuntimeException(e);
}
//获取签单要用的卡快照id
String latestSnapshotId=orderTools.fetchDetailById(cardId,xmAppApi.getLoginInfo().getBrandId(),xmAppApi.getLoginInfo().getStudioId(),xmAppApi.getLoginInfo().getAdminId()).getJSONObject("result").getString("latestSnapshotId");
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
throw new RuntimeException(e);
}
//检查会员对该卡是否超出购买上限
boolean limitResult=orderTools.checkAllowPurchase("MEMBER_CARD",cardId,memberId,"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, price/2,"PURCHASE",
"MEMBER_CARD",memberId,price-price/2,price-price/2,"1");
String success=orderResult.getString("success");
String getDetailId=orderResult.getString("result");
Assert.assertEquals(success,"true","创建订单失败");
try {
Thread.sleep(3000);
} catch (InterruptedException e) {
throw new RuntimeException(e);
}
//获取订单详情
JSONObject getDetailResult=orderTools.getDetail(getDetailId);
String id = getDetailResult.getJSONObject("result").getString("id");
String businessNo = getDetailResult.getJSONObject("result").getString("businessNo");
Assert.assertEquals(id.equals(getDetailId),true,"获取创建的订单详情失败");
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
throw new RuntimeException(e);
}
//修改对内备注
JSONObject modifySupplierInnerMemoResult=orderTools.modifySupplierInnerMemo(getDetailId, "已修改对内备注"+RandomStringUtil.randomString(10));
String modifySupplierInnerMemoSuccess=modifySupplierInnerMemoResult.getString("success");
Assert.assertEquals(modifySupplierInnerMemoSuccess,"true","修改对内备注失败");
//修改对外备注
JSONObject modifySupplierMemoResult=orderTools.modifySupplierMemo(getDetailId, "已修改对外备注"+RandomStringUtil.randomString(10));
String modifySupplierMemoResultSuccess=modifySupplierMemoResult.getString("success");
Assert.assertEquals(modifySupplierMemoResultSuccess,"true","修改对外备注失败");
}
}
}
package com.xiaomai.cases.polar.finance.order; package com.xiaomai.cases.polar.finance.order;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import com.xiaomai.cases.polar.member.Tools;
import com.xiaomai.enums.ApiModule; import com.xiaomai.enums.ApiModule;
import com.xiaomai.enums.LoginAccount; import com.xiaomai.enums.LoginAccount;
import com.xiaomai.enums.RequestType; import com.xiaomai.enums.RequestType;
...@@ -12,11 +13,13 @@ import org.testng.annotations.Test; ...@@ -12,11 +13,13 @@ import org.testng.annotations.Test;
public class TestPageMemberVoucher extends XMBaseTest { public class TestPageMemberVoucher extends XMBaseTest {
Tools tools=new Tools();
@BeforeMethod @BeforeMethod
public void beforeTest(){ public void beforeTest(){
xmAppApi.setApiModule(ApiModule.Polar_Finance) xmAppApi.setApiModule(ApiModule.Polar_Finance)
.setApiName("API_pageMemberVoucher") .setApiName("API_pageMemberVoucher")
.setLoginUser(LoginAccount.YFF_DEV) .setLoginUser(LoginAccount.GYM_PROD)
.setTerminal(Terminal.B); .setTerminal(Terminal.B);
dal.setCase_owner("yff") dal.setCase_owner("yff")
.setCase_name(Thread.currentThread().getStackTrace()[1].getFileName().split("\\.")[0]); .setCase_name(Thread.currentThread().getStackTrace()[1].getFileName().split("\\.")[0]);
...@@ -25,11 +28,15 @@ public class TestPageMemberVoucher extends XMBaseTest { ...@@ -25,11 +28,15 @@ public class TestPageMemberVoucher extends XMBaseTest {
@Test(description = "获取会员详情-订单管理列表") @Test(description = "获取会员详情-订单管理列表")
public void testPageMemberVoucher(){ public void testPageMemberVoucher(){
//获取会员ID
String receiverId=tools.search("NORMAL","NORMAL").getJSONObject("result").getJSONArray("records").getJSONObject(0).getString("id");
JSONObject jsonObject=new JSONObject(); JSONObject jsonObject=new JSONObject();
jsonObject.put("current",0); jsonObject.put("current",0);
jsonObject.put("size",20); jsonObject.put("size",20);
jsonObject.put("supplierId",xmAppApi.getLoginInfo().getStudioId()); jsonObject.put("supplierId",xmAppApi.getLoginInfo().getStudioId());
jsonObject.put("receiverId","1777254935106740226"); jsonObject.put("receiverId",receiverId);
jsonObject.put("brandId",xmAppApi.getLoginInfo().getBrandId()); jsonObject.put("brandId",xmAppApi.getLoginInfo().getBrandId());
jsonObject.put("studioId",xmAppApi.getLoginInfo().getStudioId()); jsonObject.put("studioId",xmAppApi.getLoginInfo().getStudioId());
jsonObject.put("operatorId",xmAppApi.getLoginInfo().getAdminId()); jsonObject.put("operatorId",xmAppApi.getLoginInfo().getAdminId());
......
package com.xiaomai.cases.polar.finance.order; package com.xiaomai.cases.polar.finance.order;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import com.xiaomai.cases.polar.member.Tools;
import com.xiaomai.enums.ApiModule; import com.xiaomai.enums.ApiModule;
import com.xiaomai.enums.LoginAccount; import com.xiaomai.enums.LoginAccount;
import com.xiaomai.enums.RequestType; import com.xiaomai.enums.RequestType;
...@@ -12,11 +13,13 @@ import org.testng.annotations.Test; ...@@ -12,11 +13,13 @@ import org.testng.annotations.Test;
public class TestPageMemberVoucherItem extends XMBaseTest { public class TestPageMemberVoucherItem extends XMBaseTest {
Tools tools=new Tools();
@BeforeMethod @BeforeMethod
public void beforeTest(){ public void beforeTest(){
xmAppApi.setApiModule(ApiModule.Polar_Finance) xmAppApi.setApiModule(ApiModule.Polar_Finance)
.setApiName("API_pageMemberVoucherItem") .setApiName("API_pageMemberVoucherItem")
.setLoginUser(LoginAccount.YFF_DEV) .setLoginUser(LoginAccount.GYM_PROD)
.setTerminal(Terminal.B); .setTerminal(Terminal.B);
dal.setCase_owner("yff") dal.setCase_owner("yff")
.setCase_name(Thread.currentThread().getStackTrace()[1].getFileName().split("\\.")[0]); .setCase_name(Thread.currentThread().getStackTrace()[1].getFileName().split("\\.")[0]);
...@@ -26,11 +29,16 @@ public class TestPageMemberVoucherItem extends XMBaseTest { ...@@ -26,11 +29,16 @@ public class TestPageMemberVoucherItem extends XMBaseTest {
@Test(description = "获取会员详情-订单明细列表") @Test(description = "获取会员详情-订单明细列表")
public void testPageMemberVoucherItem(){ public void testPageMemberVoucherItem(){
//获取会员ID
String receiverId=tools.search("NORMAL","NORMAL").getJSONObject("result").getJSONArray("records").getJSONObject(0).getString("id");
JSONObject jsonObject=new JSONObject(); JSONObject jsonObject=new JSONObject();
jsonObject.put("current",0); jsonObject.put("current",0);
jsonObject.put("size",20); jsonObject.put("size",20);
jsonObject.put("supplierId",xmAppApi.getLoginInfo().getStudioId()); jsonObject.put("supplierId",xmAppApi.getLoginInfo().getStudioId());
jsonObject.put("receiverId","1777254935106740226"); jsonObject.put("receiverId",receiverId);
jsonObject.put("brandId",xmAppApi.getLoginInfo().getBrandId()); jsonObject.put("brandId",xmAppApi.getLoginInfo().getBrandId());
jsonObject.put("studioId",xmAppApi.getLoginInfo().getStudioId()); jsonObject.put("studioId",xmAppApi.getLoginInfo().getStudioId());
jsonObject.put("operatorId",xmAppApi.getLoginInfo().getAdminId()); jsonObject.put("operatorId",xmAppApi.getLoginInfo().getAdminId());
......
...@@ -19,7 +19,7 @@ public class TestPageVoucher extends XMBaseTest { ...@@ -19,7 +19,7 @@ public class TestPageVoucher extends XMBaseTest {
public void beforeTest(){ public void beforeTest(){
xmAppApi.setApiModule(ApiModule.Polar_Finance) xmAppApi.setApiModule(ApiModule.Polar_Finance)
.setApiName("API_pageVoucher") .setApiName("API_pageVoucher")
.setLoginUser(LoginAccount.YFF_DEV) .setLoginUser(LoginAccount.GYM_PROD)
.setTerminal(Terminal.B); .setTerminal(Terminal.B);
dal.setCase_owner("yff") dal.setCase_owner("yff")
.setCase_name(Thread.currentThread().getStackTrace()[1].getFileName().split("\\.")[0]); .setCase_name(Thread.currentThread().getStackTrace()[1].getFileName().split("\\.")[0]);
...@@ -32,7 +32,6 @@ public class TestPageVoucher extends XMBaseTest { ...@@ -32,7 +32,6 @@ public class TestPageVoucher extends XMBaseTest {
jsonObject.put("current",0); jsonObject.put("current",0);
jsonObject.put("size",20); jsonObject.put("size",20);
jsonObject.put("supplierId",xmAppApi.getLoginInfo().getStudioId()); jsonObject.put("supplierId",xmAppApi.getLoginInfo().getStudioId());
jsonObject.put("receiverId","");
jsonObject.put("brandId",xmAppApi.getLoginInfo().getBrandId()); jsonObject.put("brandId",xmAppApi.getLoginInfo().getBrandId());
jsonObject.put("studioId",xmAppApi.getLoginInfo().getStudioId()); jsonObject.put("studioId",xmAppApi.getLoginInfo().getStudioId());
jsonObject.put("operatorId",xmAppApi.getLoginInfo().getAdminId()); jsonObject.put("operatorId",xmAppApi.getLoginInfo().getAdminId());
...@@ -43,13 +42,12 @@ public class TestPageVoucher extends XMBaseTest { ...@@ -43,13 +42,12 @@ public class TestPageVoucher extends XMBaseTest {
Assert.assertEquals(success,"true","获取订单管理列表失败"); Assert.assertEquals(success,"true","获取订单管理列表失败");
} }
@Test(description = "获取财务中心-订单管理列表-无筛选-无卖家ID(场馆ID)、场馆ID、品牌ID、操作人ID") @Test(description = "获取财务中心-订单管理列表-无筛选-无卖家ID(场馆ID)、品牌ID、场馆ID、操作人ID")
public void testPageVoucher1(){ public void testPageVoucher1(){
JSONObject jsonObject=new JSONObject(); JSONObject jsonObject=new JSONObject();
jsonObject.put("current",0); jsonObject.put("current",0);
jsonObject.put("size",20); jsonObject.put("size",20);
jsonObject.put("supplierId",""); jsonObject.put("supplierId","");
jsonObject.put("receiverId","");
jsonObject.put("brandId",""); jsonObject.put("brandId","");
jsonObject.put("studioId",""); jsonObject.put("studioId","");
jsonObject.put("operatorId",""); jsonObject.put("operatorId","");
...@@ -63,7 +61,6 @@ public class TestPageVoucher extends XMBaseTest { ...@@ -63,7 +61,6 @@ public class TestPageVoucher extends XMBaseTest {
jsonObject.put("current",0); jsonObject.put("current",0);
jsonObject.put("size",20); jsonObject.put("size",20);
jsonObject.put("supplierId",xmAppApi.getLoginInfo().getStudioId()); jsonObject.put("supplierId",xmAppApi.getLoginInfo().getStudioId());
jsonObject.put("receiverId","");
jsonObject.put("source","OFFLINE_SOURCE"); jsonObject.put("source","OFFLINE_SOURCE");
JSONArray states=new JSONArray(); JSONArray states=new JSONArray();
...@@ -84,8 +81,7 @@ public class TestPageVoucher extends XMBaseTest { ...@@ -84,8 +81,7 @@ public class TestPageVoucher extends XMBaseTest {
jsonObject.put("operationTimeEnd",TimeUtils.getCurrentTime()); jsonObject.put("operationTimeEnd",TimeUtils.getCurrentTime());
JSONArray salesmanIds=new JSONArray(); JSONArray salesmanIds=new JSONArray();
salesmanIds.add("1772880092185255937"); salesmanIds.add(xmAppApi.getLoginInfo().getAdminId());
salesmanIds.add("1774376463837065218");
jsonObject.put("salesmanIds",salesmanIds); jsonObject.put("salesmanIds",salesmanIds);
jsonObject.put("brandId",xmAppApi.getLoginInfo().getBrandId()); jsonObject.put("brandId",xmAppApi.getLoginInfo().getBrandId());
......
...@@ -18,7 +18,7 @@ public class TestPageVoucherItem extends XMBaseTest { ...@@ -18,7 +18,7 @@ public class TestPageVoucherItem extends XMBaseTest {
public void beforeTest(){ public void beforeTest(){
xmAppApi.setApiModule(ApiModule.Polar_Finance) xmAppApi.setApiModule(ApiModule.Polar_Finance)
.setApiName("API_pageVoucherItem") .setApiName("API_pageVoucherItem")
.setLoginUser(LoginAccount.YFF_DEV) .setLoginUser(LoginAccount.GYM_PROD)
.setTerminal(Terminal.B); .setTerminal(Terminal.B);
dal.setCase_owner("yff") dal.setCase_owner("yff")
.setCase_name(Thread.currentThread().getStackTrace()[1].getFileName().split("\\.")[0]); .setCase_name(Thread.currentThread().getStackTrace()[1].getFileName().split("\\.")[0]);
...@@ -31,7 +31,6 @@ public class TestPageVoucherItem extends XMBaseTest { ...@@ -31,7 +31,6 @@ public class TestPageVoucherItem extends XMBaseTest {
jsonObject.put("current",0); jsonObject.put("current",0);
jsonObject.put("size",20); jsonObject.put("size",20);
jsonObject.put("supplierId",xmAppApi.getLoginInfo().getStudioId()); jsonObject.put("supplierId",xmAppApi.getLoginInfo().getStudioId());
jsonObject.put("receiverId","");
jsonObject.put("brandId",xmAppApi.getLoginInfo().getBrandId()); jsonObject.put("brandId",xmAppApi.getLoginInfo().getBrandId());
jsonObject.put("studioId",xmAppApi.getLoginInfo().getStudioId()); jsonObject.put("studioId",xmAppApi.getLoginInfo().getStudioId());
jsonObject.put("operatorId",xmAppApi.getLoginInfo().getAdminId()); jsonObject.put("operatorId",xmAppApi.getLoginInfo().getAdminId());
...@@ -42,13 +41,12 @@ public class TestPageVoucherItem extends XMBaseTest { ...@@ -42,13 +41,12 @@ public class TestPageVoucherItem extends XMBaseTest {
Assert.assertEquals(success,"true","获取订单明细列表失败"); Assert.assertEquals(success,"true","获取订单明细列表失败");
} }
@Test(description = "获取财务中心-订单明细列表-无筛选-无卖家ID(场馆ID)、场馆ID、品牌ID、操作人ID") @Test(description = "获取财务中心-订单明细列表-无筛选-无卖家ID(场馆ID)、品牌ID、场馆ID、操作人ID")
public void testPageVoucherItem1(){ public void testPageVoucherItem1(){
JSONObject jsonObject=new JSONObject(); JSONObject jsonObject=new JSONObject();
jsonObject.put("current",0); jsonObject.put("current",0);
jsonObject.put("size",20); jsonObject.put("size",20);
jsonObject.put("supplierId",""); jsonObject.put("supplierId","");
jsonObject.put("receiverId","");
jsonObject.put("brandId",""); jsonObject.put("brandId","");
jsonObject.put("studioId",""); jsonObject.put("studioId","");
jsonObject.put("operatorId",""); jsonObject.put("operatorId","");
...@@ -62,7 +60,6 @@ public class TestPageVoucherItem extends XMBaseTest { ...@@ -62,7 +60,6 @@ public class TestPageVoucherItem extends XMBaseTest {
jsonObject.put("current",0); jsonObject.put("current",0);
jsonObject.put("size",20); jsonObject.put("size",20);
jsonObject.put("supplierId",xmAppApi.getLoginInfo().getStudioId()); jsonObject.put("supplierId",xmAppApi.getLoginInfo().getStudioId());
jsonObject.put("receiverId","");
jsonObject.put("createdStart", TimeUtils.getMonthFristDay()); jsonObject.put("createdStart", TimeUtils.getMonthFristDay());
jsonObject.put("createdEnd",TimeUtils.getCurrentTime()); jsonObject.put("createdEnd",TimeUtils.getCurrentTime());
...@@ -72,8 +69,7 @@ public class TestPageVoucherItem extends XMBaseTest { ...@@ -72,8 +69,7 @@ public class TestPageVoucherItem extends XMBaseTest {
jsonObject.put("operationTimeEnd",TimeUtils.getCurrentTime()); jsonObject.put("operationTimeEnd",TimeUtils.getCurrentTime());
JSONArray salesmanIds=new JSONArray(); JSONArray salesmanIds=new JSONArray();
salesmanIds.add("1772880092185255937"); salesmanIds.add(xmAppApi.getLoginInfo().getAdminId());
salesmanIds.add("1774376463837065218");
jsonObject.put("salesmanIds",salesmanIds); jsonObject.put("salesmanIds",salesmanIds);
jsonObject.put("brandId",xmAppApi.getLoginInfo().getBrandId()); jsonObject.put("brandId",xmAppApi.getLoginInfo().getBrandId());
......
package com.xiaomai.cases.polar.finance.order;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.xiaomai.cases.polar.member.Tools;
import com.xiaomai.cases.polar.memberCard.CardTools;
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.math.BigDecimal;
public class TestPay extends XMBaseTest {
String memberId;
String cardId;
Tools tools=new Tools();
OrderTools orderTools=new OrderTools();
CardTools cardTools=new CardTools();
@BeforeMethod
public void beforeTest(){
xmAppApi.setApiModule(ApiModule.Polar_Finance)
.setApiName("API_pay")
.setLoginUser(LoginAccount.GYM_PROD)
.setTerminal(Terminal.B);
dal.setCase_owner("yff")
.setCase_name(Thread.currentThread().getStackTrace()[1].getFileName().split("\\.")[0]);
super.beforeTest();
}
@Test(description = "收款(继续收款)")
public void testPay(){
String name = "创建订单潜在会员"+ RandomStringUtil.randomString(3);
String phone = RandomStringUtil.randomMobile("666");
//获取会员ID,没有则新建一个
int memberTotal = Integer.parseInt(tools.search("NORMAL","NORMAL").getJSONObject("result").getString("total"));
if (memberTotal == 0) {
memberId = tools.create(name,phone).getString("result");
}
memberId=tools.search("NORMAL","NORMAL").getJSONObject("result").getJSONArray("records").getJSONObject(0).getString("id");
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
throw new RuntimeException(e);
}
//获取会员卡信息
//获取会员卡列表,没有则新建一个
int cardTotal = Integer.parseInt(orderTools.fetchPageOfMemberCard("次卡").getJSONObject("result").getString("total"));
if (cardTotal == 0) {
cardId = cardTools.memberCardCreate("次卡-创建订单会员卡"+ TimeUtils.getCurrentTime()).getString("result");
}
JSONObject memberCard=orderTools.fetchPageOfMemberCard("次卡");
cardId=memberCard.getJSONObject("result").getJSONArray("records").getJSONObject(0).getString("id");
BigDecimal quantity= new BigDecimal(memberCard.getJSONObject("result").getJSONArray("records").getJSONObject(0).getString("balance"));
float price= Float.parseFloat(memberCard.getJSONObject("result").getJSONArray("records").getJSONObject(0).getString("price"));
int validPeriod= Integer.parseInt(memberCard.getJSONObject("result").getJSONArray("records").getJSONObject(0).getString("validPeriod"));
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
throw new RuntimeException(e);
}
//获取签单要用的卡快照id
String latestSnapshotId=orderTools.fetchDetailById(cardId,xmAppApi.getLoginInfo().getBrandId(),xmAppApi.getLoginInfo().getStudioId(),xmAppApi.getLoginInfo().getAdminId()).getJSONObject("result").getString("latestSnapshotId");
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
throw new RuntimeException(e);
}
//检查会员对该卡是否超出购买上限
boolean limitResult=orderTools.checkAllowPurchase("MEMBER_CARD",cardId,memberId,"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, 0, "PURCHASE",
"MEMBER_CARD", memberId, price,price / 2 , "1");
String getDetailId = orderResult.getString("result");
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
throw new RuntimeException(e);
}
//获取订单详情
JSONObject getDetailResult=orderTools.getDetail(getDetailId);
String id = getDetailResult.getJSONObject("result").getString("id");//订单id
String state=getDetailResult.getJSONObject("result").getString("state");
String unpaidAmount=getDetailResult.getJSONObject("result").getString("unpaidAmount");
Assert.assertEquals(id.equals(getDetailId),true,"获取创建的订单详情失败");
Assert.assertEquals(state,"ARREARS","获取创建的订单状态未是部分支付");
//继续收款
JSONObject jsonObject = new JSONObject();
jsonObject.put("operationTime", TimeUtils.getCurrentTime());
jsonObject.put("operatorId", xmAppApi.getLoginInfo().getAdminId());
JSONArray paymentWays = new JSONArray();
JSONObject jsonObject1 = new JSONObject();
jsonObject1.put("amount", unpaidAmount);
jsonObject1.put("paymentWay", "1");//线下微信
JSONArray voucherResourceIds = new JSONArray();
voucherResourceIds.add("");
jsonObject1.put("voucherResourceIds", voucherResourceIds);
paymentWays.add(jsonObject1);
jsonObject.put("paymentWays", paymentWays);
jsonObject.put("voucherId", getDetailId);
jsonObject.put("brandId", xmAppApi.getLoginInfo().getBrandId());
jsonObject.put("studioId", xmAppApi.getLoginInfo().getStudioId());
xmAppApi.doRequest(RequestType.JSON,params,jsonObject.toJSONString(),headers).assetsSuccess(true);
JSONObject response=xmAppApi.getBodyInJSON();
String result=response.getString("result");
Assert.assertEquals(result,"true","继续收款失败");
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
throw new RuntimeException(e);
}
//校验订单状态已完成;继续收款后欠费金额为0;继续收款订单和原部分支付订单为同一个
//获取订单详情
JSONObject getDetailResult1=orderTools.getDetail(getDetailId);
String state1=getDetailResult1.getJSONObject("result").getString("state");
String unpaidAmount1=getDetailResult1.getJSONObject("result").getString("unpaidAmount");
String id1=getDetailResult1.getJSONObject("result").getString("id");
Assert.assertEquals(state1,"PAID","继续收款全部金额后状态未是已完成");
Assert.assertEquals(unpaidAmount1,"0.0000","继续收款全部金额后欠费金额不是0");
Assert.assertEquals(id1.equals(getDetailId),true,"继续收款订单不是原部分支付订单");
}
}
}
package com.xiaomai.cases.polar.finance.order;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.xiaomai.cases.polar.finance.revenueAndExpenditure.RevenueAndExpenditureTools;
import com.xiaomai.cases.polar.member.Tools;
import com.xiaomai.cases.polar.memberCard.CardTools;
import com.xiaomai.enums.ApiModule;
import com.xiaomai.enums.LoginAccount;
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.math.BigDecimal;
public class TestRefundOrder extends XMBaseTest {
String memberId;
String cardId;
Tools tools=new Tools();
OrderTools orderTools=new OrderTools();
RevenueAndExpenditureTools revenueAndExpenditureTools=new RevenueAndExpenditureTools();
CardTools cardTools=new CardTools();
@BeforeMethod
public void beforeTest(){
xmAppApi.setApiModule(ApiModule.Polar_Finance)
.setApiName("API_refundOrder")
.setLoginUser(LoginAccount.GYM_PROD)
.setTerminal(Terminal.B);
dal.setCase_owner("yff")
.setCase_name(Thread.currentThread().getStackTrace()[1].getFileName().split("\\.")[0]);
super.beforeTest();
}
@Test(description = "创建退单订单")
public void testRefundOrder(){
//创建签单订单
String name = "创建订单潜在会员"+ RandomStringUtil.randomString(3);
String phone = RandomStringUtil.randomMobile("666");
//获取会员ID,没有则新建一个
int memberTotal = Integer.parseInt(tools.search("NORMAL","NORMAL").getJSONObject("result").getString("total"));
if (memberTotal == 0) {
memberId = tools.create(name,phone).getString("result");
}
memberId=tools.search("NORMAL","NORMAL").getJSONObject("result").getJSONArray("records").getJSONObject(0).getString("id");
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
throw new RuntimeException(e);
}
//获取会员卡信息
//获取会员卡列表,没有则新建一个
int cardTotal = Integer.parseInt(orderTools.fetchPageOfMemberCard("次卡").getJSONObject("result").getString("total"));
if (cardTotal == 0) {
cardId = cardTools.memberCardCreate("次卡-创建订单会员卡"+ TimeUtils.getCurrentTime()).getString("result");
}
JSONObject memberCard=orderTools.fetchPageOfMemberCard("次卡");
cardId=memberCard.getJSONObject("result").getJSONArray("records").getJSONObject(0).getString("id");
BigDecimal quantity= new BigDecimal(memberCard.getJSONObject("result").getJSONArray("records").getJSONObject(0).getString("balance"));
float price= Float.parseFloat(memberCard.getJSONObject("result").getJSONArray("records").getJSONObject(0).getString("price"));
int validPeriod= Integer.parseInt(memberCard.getJSONObject("result").getJSONArray("records").getJSONObject(0).getString("validPeriod"));
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
throw new RuntimeException(e);
}
//获取签单要用的卡快照id
String latestSnapshotId=orderTools.fetchDetailById(cardId,xmAppApi.getLoginInfo().getBrandId(),xmAppApi.getLoginInfo().getStudioId(),xmAppApi.getLoginInfo().getAdminId()).getJSONObject("result").getString("latestSnapshotId");
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
throw new RuntimeException(e);
}
//检查会员对该卡是否超出购买上限
boolean limitResult=orderTools.checkAllowPurchase("MEMBER_CARD",cardId,memberId,"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, price / 2, "PURCHASE",
"MEMBER_CARD", memberId, price - price / 2, price - price / 2, "1");
String success = orderResult.getString("success");
String getDetailId = orderResult.getString("result");
Assert.assertEquals(success, "true", "创建订单失败");
//获取签单订单详情
JSONObject getSignDetailResult=orderTools.getDetail(getDetailId);
String signBusinessNo = getSignDetailResult.getJSONObject("result").getString("businessNo");
try {
Thread.sleep(3000);
} catch (InterruptedException e) {
throw new RuntimeException(e);
}
//查询要退的卡id 从listUserRefundableCard-查询用户可退的会员卡列表中获取
JSONObject listUserRefundableCardResult=orderTools.listUserRefundableCard("MEMBER","",memberId);
String listUserRefundableId=listUserRefundableCardResult.getJSONArray("result").getJSONObject(0).getString("id");
//查询订单或者收支可退流水金额(包含乐动收银状态信息)
boolean checkRefundableAmountResult=orderTools.checkRefundableAmount(getDetailId,price - price / 2).getBoolean("success");
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
throw new RuntimeException(e);
}
if(checkRefundableAmountResult == true){
//退单-会员卡
JSONObject refundOrderResult=orderTools.refundOrder(0,listUserRefundableId,quantity,price - price / 2,"MEMBER_CARD",
memberId,price - price / 2,price - price / 2,"1");
String refundOrderSuccess=refundOrderResult.getString("success");
String refundOrderGetDetailId=refundOrderResult.getString("result");
Assert.assertEquals(refundOrderSuccess,"true","创建退单订单失败");
try {
Thread.sleep(3000);
} catch (InterruptedException e) {
throw new RuntimeException(e);
}
//获取订单详情
JSONObject getDetailResult=orderTools.getDetail(refundOrderGetDetailId);
String id = getDetailResult.getJSONObject("result").getString("id");
String businessNo = getDetailResult.getJSONObject("result").getString("businessNo");//退单订单的businessNo
String state=getDetailResult.getJSONObject("result").getString("state");
Assert.assertEquals(id.equals(refundOrderGetDetailId),true,"获取创建的退单订单详情失败");
Assert.assertEquals(state,"PAID","获取创建的退单订单未完成");
//获取订单支付记录
JSONObject listByVoucherIdResult=orderTools.listByVoucherId(refundOrderGetDetailId);
String listByVoucherId = listByVoucherIdResult.getJSONArray("result").getJSONObject(0).getString("voucherId");//退单订单的id
String paymentWayId=listByVoucherIdResult.getJSONArray("result").getJSONObject(0).getJSONObject("paymentWay").getString("id");
String listByVoucherState=listByVoucherIdResult.getJSONArray("result").getJSONObject(0).getString("state");
String id1=listByVoucherIdResult.getJSONArray("result").getJSONObject(0).getString("id");//收支的id
Assert.assertEquals(listByVoucherId.equals(refundOrderGetDetailId),true,"获取创建的退单订单的支付记录失败");
Assert.assertEquals(listByVoucherState,"NORMAL","获取创建的退单订单的支付记录状态未是已完成");
//获取订单管理列表
JSONObject pageVoucherResult=orderTools.pageVoucher1(xmAppApi.getLoginInfo().getStudioId(),businessNo);
int total=Integer.parseInt(pageVoucherResult.getJSONObject("result").getString("total"));
Assert.assertEquals(total>=1,true,"订单管理列表获取创建的退单订单失败");
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
throw new RuntimeException(e);
}
//获取收支明细
JSONObject pageNormalIncomeExpenseResult=revenueAndExpenditureTools.pageNormalIncomeExpense(paymentWayId,"EXPENSE", "REFUND",
xmAppApi.getLoginInfo().getStudioId());
int pageNormalIncomeExpensePages=Integer.parseInt(pageNormalIncomeExpenseResult.getJSONObject("result").getString("pages"));
int pageNormalIncomeExpenseTotal=Integer.parseInt(pageNormalIncomeExpenseResult.getJSONObject("result").getString("total"));
for(int k=0; k == pageNormalIncomeExpensePages+1; k++){
int n =k==pageNormalIncomeExpensePages ? (pageNormalIncomeExpenseTotal%10==0 ? 10 : pageNormalIncomeExpenseTotal%10) : 10;
JSONArray records=pageNormalIncomeExpenseResult.getJSONObject("result").getJSONArray("records");
boolean flag=true;
for(int i=0; i<n; i++){
String pageNormalIncomeExpenseId=records.getJSONObject(i).getString("id");
if(pageNormalIncomeExpenseId.equals(id1)){
flag = true;
break;
}
}
Assert.assertEquals(true,flag,"创建退单订单未生成对应的收支明细");
}
//获取收支详情
JSONObject getResult=revenueAndExpenditureTools.get(id1);
String getBusinessNo=getResult.getJSONObject("result").getString("businessNo");
String getState=getResult.getJSONObject("result").getString("state");
Assert.assertEquals(getBusinessNo.equals(businessNo),true,"获取创建的退单订单的收支详情失败");
Assert.assertEquals(getState,"NORMAL","创建的退单订单的收支明细状态未是已完成");
//校验获取会员下的退卡的会员卡是否生成已退卡卡包
//获取会员下的退掉的会员卡
JSONObject fetchUserCardListResult=orderTools.fetchUserCardList("MEMBER",memberId,"REFUNDED");
String fetchUserCardListId=fetchUserCardListResult.getJSONArray("result").getJSONObject(0).getString("id");//权益ID
//获取售卖详情
JSONObject findDetailByIdResult=cardTools.membercardfindDetailById(fetchUserCardListId);
String findDetailByIdState=findDetailByIdResult.getJSONObject("result").getString("state");//卡状态
String findDetailByIdTradeOrderNumber=findDetailByIdResult.getJSONObject("result").getString("tradeOrderNumber");//所关联的签单订单号
Assert.assertEquals(findDetailByIdTradeOrderNumber.equals(signBusinessNo),true,"创建已完成退单订单,未生成已退卡卡包");//断言的别意:生成的卡包所关联的签单订单号和上述创建签单订单的订单号一致不一致的校验
Assert.assertEquals(findDetailByIdState,"REFUNDED","创建退单已完成订单,未生成已退卡卡包");
}
else {
Assert.assertEquals(checkRefundableAmountResult, false, "无可退金额");
}
}
}
}
package com.xiaomai.cases.polar.finance.order;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.xiaomai.cases.polar.finance.revenueAndExpenditure.RevenueAndExpenditureTools;
import com.xiaomai.cases.polar.member.Tools;
import com.xiaomai.cases.polar.memberCard.CardTools;
import com.xiaomai.enums.ApiModule;
import com.xiaomai.enums.LoginAccount;
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.math.BigDecimal;
public class TestSignOrder extends XMBaseTest {
String memberId;
String cardId;
Tools tools=new Tools();
OrderTools orderTools=new OrderTools();
RevenueAndExpenditureTools revenueAndExpenditureTools=new RevenueAndExpenditureTools();
CardTools cardTools=new CardTools();
@BeforeMethod
public void beforeTest(){
xmAppApi.setApiModule(ApiModule.Polar_Finance)
.setApiName("API_signOrder")
.setLoginUser(LoginAccount.GYM_PROD)
.setTerminal(Terminal.B);
dal.setCase_owner("yff")
.setCase_name(Thread.currentThread().getStackTrace()[1].getFileName().split("\\.")[0]);
super.beforeTest();
}
@Test(description = "创建订单")
public void testSignOrder(){
String name = "创建订单潜在会员"+ RandomStringUtil.randomString(3);
String phone = RandomStringUtil.randomMobile("666");
//获取会员ID,没有则新建一个
int memberTotal = Integer.parseInt(tools.search("NORMAL","NORMAL").getJSONObject("result").getString("total"));
if (memberTotal == 0) {
memberId = tools.create(name,phone).getString("result");
}
memberId=tools.search("NORMAL","NORMAL").getJSONObject("result").getJSONArray("records").getJSONObject(0).getString("id");
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
throw new RuntimeException(e);
}
//获取会员卡信息
//获取会员卡列表,没有则新建一个
int cardTotal = Integer.parseInt(orderTools.fetchPageOfMemberCard("次卡").getJSONObject("result").getString("total"));
if (cardTotal == 0) {
cardId = cardTools.memberCardCreate("次卡-创建订单会员卡"+TimeUtils.getCurrentTime()).getString("result");
}
JSONObject memberCard=orderTools.fetchPageOfMemberCard("次卡");
cardId=memberCard.getJSONObject("result").getJSONArray("records").getJSONObject(0).getString("id");
BigDecimal quantity= new BigDecimal(memberCard.getJSONObject("result").getJSONArray("records").getJSONObject(0).getString("balance"));
float price= Float.parseFloat(memberCard.getJSONObject("result").getJSONArray("records").getJSONObject(0).getString("price"));
int validPeriod= Integer.parseInt(memberCard.getJSONObject("result").getJSONArray("records").getJSONObject(0).getString("validPeriod"));
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
throw new RuntimeException(e);
}
//获取签单要用的卡快照id
String latestSnapshotId=orderTools.fetchDetailById(cardId,xmAppApi.getLoginInfo().getBrandId(),xmAppApi.getLoginInfo().getStudioId(),xmAppApi.getLoginInfo().getAdminId()).getJSONObject("result").getString("latestSnapshotId");
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
throw new RuntimeException(e);
}
//检查会员对该卡是否超出购买上限
boolean limitResult=orderTools.checkAllowPurchase("MEMBER_CARD",cardId,memberId,"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, price/2,"PURCHASE",
"MEMBER_CARD",memberId,price-price/2,price-price/2,"1");
String success=orderResult.getString("success");
String getDetailId=orderResult.getString("result");
Assert.assertEquals(success,"true","创建签单订单失败");
try {
Thread.sleep(3000);
} catch (InterruptedException e) {
throw new RuntimeException(e);
}
//校验获取订单详情
JSONObject getDetailResult=orderTools.getDetail(getDetailId);
String id = getDetailResult.getJSONObject("result").getString("id");
String businessNo = getDetailResult.getJSONObject("result").getString("businessNo");
String state=getDetailResult.getJSONObject("result").getString("state");
Assert.assertEquals(id.equals(getDetailId),true,"获取创建的签单订单详情失败");
Assert.assertEquals(state,"PAID","获取创建的签单订单未完成");
//校验获取订单支付记录
JSONObject listByVoucherIdResult=orderTools.listByVoucherId(getDetailId);
String listByVoucherId = listByVoucherIdResult.getJSONArray("result").getJSONObject(0).getString("voucherId");//订单的id
String paymentWayId=listByVoucherIdResult.getJSONArray("result").getJSONObject(0).getJSONObject("paymentWay").getString("id");
String listByVoucherState=listByVoucherIdResult.getJSONArray("result").getJSONObject(0).getString("state");
String id1=listByVoucherIdResult.getJSONArray("result").getJSONObject(0).getString("id");//收支的id
Assert.assertEquals(listByVoucherId.equals(getDetailId),true,"获取创建的签单订单的支付记录失败");
Assert.assertEquals(listByVoucherState,"NORMAL","获取创建的签单订单的支付记录状态未是已完成");
//校验获取订单管理列表
JSONObject pageVoucherResult=orderTools.pageVoucher1(xmAppApi.getLoginInfo().getStudioId(),businessNo);
int total=Integer.parseInt(pageVoucherResult.getJSONObject("result").getString("total"));
Assert.assertEquals(total>=1,true,"订单管理列表获取创建的签单订单失败");
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
throw new RuntimeException(e);
}
//校验获取收支明细
JSONObject pageNormalIncomeExpenseResult=revenueAndExpenditureTools.pageNormalIncomeExpense(paymentWayId,"INCOME", "SIGN",
xmAppApi.getLoginInfo().getStudioId());
int pageNormalIncomeExpensePages=Integer.parseInt(pageNormalIncomeExpenseResult.getJSONObject("result").getString("pages"));
int pageNormalIncomeExpenseTotal=Integer.parseInt(pageNormalIncomeExpenseResult.getJSONObject("result").getString("total"));
for(int k=0; k == pageNormalIncomeExpensePages+1; k++){
int n =k==pageNormalIncomeExpensePages ? (pageNormalIncomeExpenseTotal%10==0 ? 10 : pageNormalIncomeExpenseTotal%10) : 10;
JSONArray records=pageNormalIncomeExpenseResult.getJSONObject("result").getJSONArray("records");
boolean flag=true;
for(int i=0; i<n; i++){
String pageNormalIncomeExpenseId=records.getJSONObject(i).getString("id");
if(pageNormalIncomeExpenseId.equals(id1)){
flag = true;
break;
}
}
Assert.assertEquals(true,flag,"创建签单订单未生成对应的收支明细");
}
//校验获取收支详情
JSONObject getResult=revenueAndExpenditureTools.get(id1);
String getBusinessNo=getResult.getJSONObject("result").getString("businessNo");
String getState=getResult.getJSONObject("result").getString("state");
Assert.assertEquals(getBusinessNo.equals(businessNo),true,"获取创建的签单订单的收支详情失败");
Assert.assertEquals(getState,"NORMAL","创建的签单订单的收支明细状态未是已完成");
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
throw new RuntimeException(e);
}
//校验获取会员下的购买的会员卡是否生成卡包
//获取会员下的购买的会员卡
JSONObject fetchUserCardListResult=orderTools.fetchUserCardList("MEMBER",memberId,"NORMAL");
String fetchUserCardListId=fetchUserCardListResult.getJSONArray("result").getJSONObject(0).getString("id");//权益ID
//获取售卖详情
JSONObject findDetailByIdResult=cardTools.membercardfindDetailById(fetchUserCardListId);
String findDetailByIdState=findDetailByIdResult.getJSONObject("result").getString("state");//卡状态
String findDetailByIdTradeOrderNumber=findDetailByIdResult.getJSONObject("result").getString("tradeOrderNumber");//订单号
Assert.assertEquals(findDetailByIdTradeOrderNumber.equals(businessNo),true,"创建已完成订单,未生成卡包");//断言的别意:生成的卡包的订单号和上述创建订单的订单号一致不一致的校验
Assert.assertEquals(findDetailByIdState,"NORMAL","创建即时生效的已完成订单,未生成生效中卡包");
}
else {
Assert.assertEquals(limitResult, false, "无法购买,已达到最多购买N张的上限");
}
}
}
package com.xiaomai.cases.polar.finance.order; package com.xiaomai.cases.polar.finance.order;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import com.xiaomai.cases.polar.member.Tools;
import com.xiaomai.enums.ApiModule; import com.xiaomai.enums.ApiModule;
import com.xiaomai.enums.LoginAccount; import com.xiaomai.enums.LoginAccount;
import com.xiaomai.enums.RequestType; import com.xiaomai.enums.RequestType;
...@@ -12,11 +13,13 @@ import org.testng.annotations.Test; ...@@ -12,11 +13,13 @@ import org.testng.annotations.Test;
public class TestSumMemberVoucherAmount extends XMBaseTest { public class TestSumMemberVoucherAmount extends XMBaseTest {
Tools tools=new Tools();
@BeforeMethod @BeforeMethod
public void beforeTest(){ public void beforeTest(){
xmAppApi.setApiModule(ApiModule.Polar_Finance) xmAppApi.setApiModule(ApiModule.Polar_Finance)
.setApiName("API_sumMemberVoucherAmount") .setApiName("API_sumMemberVoucherAmount")
.setLoginUser(LoginAccount.YFF_DEV) .setLoginUser(LoginAccount.GYM_PROD)
.setTerminal(Terminal.B); .setTerminal(Terminal.B);
dal.setCase_owner("yff") dal.setCase_owner("yff")
.setCase_name(Thread.currentThread().getStackTrace()[1].getFileName().split("\\.")[0]); .setCase_name(Thread.currentThread().getStackTrace()[1].getFileName().split("\\.")[0]);
...@@ -26,11 +29,14 @@ public class TestSumMemberVoucherAmount extends XMBaseTest { ...@@ -26,11 +29,14 @@ public class TestSumMemberVoucherAmount extends XMBaseTest {
@Test(description = "获取会员详情-订单管理金额统计") @Test(description = "获取会员详情-订单管理金额统计")
public void testSumMemberVoucherAmount(){ public void testSumMemberVoucherAmount(){
//获取会员ID
String receiverId=tools.search("NORMAL","NORMAL").getJSONObject("result").getJSONArray("records").getJSONObject(0).getString("id");
JSONObject jsonObject=new JSONObject(); JSONObject jsonObject=new JSONObject();
jsonObject.put("current",0); jsonObject.put("current",0);
jsonObject.put("size",20); jsonObject.put("size",20);
jsonObject.put("supplierId",xmAppApi.getLoginInfo().getStudioId()); jsonObject.put("supplierId",xmAppApi.getLoginInfo().getStudioId());
jsonObject.put("receiverId","1777254935106740226"); jsonObject.put("receiverId",receiverId);
jsonObject.put("brandId",xmAppApi.getLoginInfo().getBrandId()); jsonObject.put("brandId",xmAppApi.getLoginInfo().getBrandId());
jsonObject.put("studioId",xmAppApi.getLoginInfo().getStudioId()); jsonObject.put("studioId",xmAppApi.getLoginInfo().getStudioId());
jsonObject.put("operatorId",xmAppApi.getLoginInfo().getAdminId()); jsonObject.put("operatorId",xmAppApi.getLoginInfo().getAdminId());
......
...@@ -19,7 +19,7 @@ public class TestSumVoucherAmount extends XMBaseTest { ...@@ -19,7 +19,7 @@ public class TestSumVoucherAmount extends XMBaseTest {
public void beforeTest() { public void beforeTest() {
xmAppApi.setApiModule(ApiModule.Polar_Finance) xmAppApi.setApiModule(ApiModule.Polar_Finance)
.setApiName("API_sumVoucherAmount") .setApiName("API_sumVoucherAmount")
.setLoginUser(LoginAccount.YFF_DEV) .setLoginUser(LoginAccount.GYM_PROD)
.setTerminal(Terminal.B); .setTerminal(Terminal.B);
dal.setCase_owner("yff") dal.setCase_owner("yff")
.setCase_name(Thread.currentThread().getStackTrace()[1].getFileName().split("\\.")[0]); .setCase_name(Thread.currentThread().getStackTrace()[1].getFileName().split("\\.")[0]);
...@@ -32,7 +32,6 @@ public class TestSumVoucherAmount extends XMBaseTest { ...@@ -32,7 +32,6 @@ public class TestSumVoucherAmount extends XMBaseTest {
jsonObject.put("current", 0); jsonObject.put("current", 0);
jsonObject.put("size", 20); jsonObject.put("size", 20);
jsonObject.put("supplierId", xmAppApi.getLoginInfo().getStudioId()); jsonObject.put("supplierId", xmAppApi.getLoginInfo().getStudioId());
jsonObject.put("receiverId", "");
jsonObject.put("brandId", xmAppApi.getLoginInfo().getBrandId()); jsonObject.put("brandId", xmAppApi.getLoginInfo().getBrandId());
jsonObject.put("studioId", xmAppApi.getLoginInfo().getStudioId()); jsonObject.put("studioId", xmAppApi.getLoginInfo().getStudioId());
jsonObject.put("operatorId", xmAppApi.getLoginInfo().getAdminId()); jsonObject.put("operatorId", xmAppApi.getLoginInfo().getAdminId());
...@@ -59,7 +58,6 @@ public class TestSumVoucherAmount extends XMBaseTest { ...@@ -59,7 +58,6 @@ public class TestSumVoucherAmount extends XMBaseTest {
jsonObject.put("current",0); jsonObject.put("current",0);
jsonObject.put("size",20); jsonObject.put("size",20);
jsonObject.put("supplierId",xmAppApi.getLoginInfo().getStudioId()); jsonObject.put("supplierId",xmAppApi.getLoginInfo().getStudioId());
jsonObject.put("receiverId","");
jsonObject.put("source","OFFLINE_SOURCE"); jsonObject.put("source","OFFLINE_SOURCE");
JSONArray states=new JSONArray(); JSONArray states=new JSONArray();
...@@ -80,8 +78,7 @@ public class TestSumVoucherAmount extends XMBaseTest { ...@@ -80,8 +78,7 @@ public class TestSumVoucherAmount extends XMBaseTest {
jsonObject.put("operationTimeEnd",TimeUtils.getCurrentTime()); jsonObject.put("operationTimeEnd",TimeUtils.getCurrentTime());
JSONArray salesmanIds=new JSONArray(); JSONArray salesmanIds=new JSONArray();
salesmanIds.add("1772880092185255937"); salesmanIds.add(xmAppApi.getLoginInfo().getAdminId());
salesmanIds.add("1774376463837065218");
jsonObject.put("salesmanIds",salesmanIds); jsonObject.put("salesmanIds",salesmanIds);
jsonObject.put("brandId",xmAppApi.getLoginInfo().getBrandId()); jsonObject.put("brandId",xmAppApi.getLoginInfo().getBrandId());
...@@ -102,7 +99,6 @@ public class TestSumVoucherAmount extends XMBaseTest { ...@@ -102,7 +99,6 @@ public class TestSumVoucherAmount extends XMBaseTest {
jsonObject.put("current", 0); jsonObject.put("current", 0);
jsonObject.put("size", 20); jsonObject.put("size", 20);
jsonObject.put("supplierId", ""); jsonObject.put("supplierId", "");
jsonObject.put("receiverId", "");
jsonObject.put("brandId", ""); jsonObject.put("brandId", "");
jsonObject.put("studioId", ""); jsonObject.put("studioId", "");
jsonObject.put("operatorId", ""); jsonObject.put("operatorId", "");
......
...@@ -18,7 +18,7 @@ public class TestSumVoucherItemAmount extends XMBaseTest { ...@@ -18,7 +18,7 @@ public class TestSumVoucherItemAmount extends XMBaseTest {
public void beforeTest(){ public void beforeTest(){
xmAppApi.setApiModule(ApiModule.Polar_Finance) xmAppApi.setApiModule(ApiModule.Polar_Finance)
.setApiName("API_sumVoucherItemAmount") .setApiName("API_sumVoucherItemAmount")
.setLoginUser(LoginAccount.YFF_DEV) .setLoginUser(LoginAccount.GYM_PROD)
.setTerminal(Terminal.B); .setTerminal(Terminal.B);
dal.setCase_owner("yff") dal.setCase_owner("yff")
.setCase_name(Thread.currentThread().getStackTrace()[1].getFileName().split("\\.")[0]); .setCase_name(Thread.currentThread().getStackTrace()[1].getFileName().split("\\.")[0]);
...@@ -31,7 +31,6 @@ public class TestSumVoucherItemAmount extends XMBaseTest { ...@@ -31,7 +31,6 @@ public class TestSumVoucherItemAmount extends XMBaseTest {
jsonObject.put("current",0); jsonObject.put("current",0);
jsonObject.put("size",20); jsonObject.put("size",20);
jsonObject.put("supplierId",xmAppApi.getLoginInfo().getStudioId()); jsonObject.put("supplierId",xmAppApi.getLoginInfo().getStudioId());
jsonObject.put("receiverId","");
jsonObject.put("brandId",xmAppApi.getLoginInfo().getBrandId()); jsonObject.put("brandId",xmAppApi.getLoginInfo().getBrandId());
jsonObject.put("studioId",xmAppApi.getLoginInfo().getStudioId()); jsonObject.put("studioId",xmAppApi.getLoginInfo().getStudioId());
jsonObject.put("operatorId",xmAppApi.getLoginInfo().getAdminId()); jsonObject.put("operatorId",xmAppApi.getLoginInfo().getAdminId());
...@@ -57,7 +56,6 @@ public class TestSumVoucherItemAmount extends XMBaseTest { ...@@ -57,7 +56,6 @@ public class TestSumVoucherItemAmount extends XMBaseTest {
jsonObject.put("current",0); jsonObject.put("current",0);
jsonObject.put("size",20); jsonObject.put("size",20);
jsonObject.put("supplierId",""); jsonObject.put("supplierId","");
jsonObject.put("receiverId","");
jsonObject.put("brandId",""); jsonObject.put("brandId","");
jsonObject.put("studioId",""); jsonObject.put("studioId","");
jsonObject.put("operatorId",""); jsonObject.put("operatorId","");
...@@ -71,7 +69,6 @@ public class TestSumVoucherItemAmount extends XMBaseTest { ...@@ -71,7 +69,6 @@ public class TestSumVoucherItemAmount extends XMBaseTest {
jsonObject.put("current",0); jsonObject.put("current",0);
jsonObject.put("size",20); jsonObject.put("size",20);
jsonObject.put("supplierId",xmAppApi.getLoginInfo().getStudioId()); jsonObject.put("supplierId",xmAppApi.getLoginInfo().getStudioId());
jsonObject.put("receiverId","");
jsonObject.put("createdStart", TimeUtils.getMonthFristDay()); jsonObject.put("createdStart", TimeUtils.getMonthFristDay());
jsonObject.put("createdEnd",TimeUtils.getCurrentTime()); jsonObject.put("createdEnd",TimeUtils.getCurrentTime());
...@@ -81,8 +78,7 @@ public class TestSumVoucherItemAmount extends XMBaseTest { ...@@ -81,8 +78,7 @@ public class TestSumVoucherItemAmount extends XMBaseTest {
jsonObject.put("operationTimeEnd",TimeUtils.getCurrentTime()); jsonObject.put("operationTimeEnd",TimeUtils.getCurrentTime());
JSONArray salesmanIds=new JSONArray(); JSONArray salesmanIds=new JSONArray();
salesmanIds.add("1772880092185255937"); salesmanIds.add(xmAppApi.getLoginInfo().getAdminId());
salesmanIds.add("1774376463837065218");
jsonObject.put("salesmanIds",salesmanIds); jsonObject.put("salesmanIds",salesmanIds);
jsonObject.put("brandId",xmAppApi.getLoginInfo().getBrandId()); jsonObject.put("brandId",xmAppApi.getLoginInfo().getBrandId());
......
package com.xiaomai.cases.polar.finance.revenueAndExpenditure;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.xiaomai.client.DataUserInfo;
import com.xiaomai.enums.ApiModule;
import com.xiaomai.enums.RequestType;
import com.xiaomai.enums.Terminal;
import com.xiaomai.utils.XMBaseTest;
import com.xiaomai.utils.XMJSONPath;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
public class RevenueAndExpenditureTools extends XMBaseTest {
/**
* @param
* @description:分页收支列表
* @param paymentWays:支付方式 1 2
* @param type: 业务收支类型:INCOME:收入 EXPENSE:支出
* @param item: 业务收支类型:SIGN:签单 REFUND:退单
* @param supplierId:卖家ID 场馆ID
* @author: yangfangfang
**/
public JSONObject pageNormalIncomeExpense(String paymentWays, String type, String item, String supplierId, DataUserInfo...dataUserInfos){
dataApi.setApiModule(ApiModule.Polar_Finance)
.setApiName("API_pageNormalIncomeExpense")
.setTerminal(Terminal.B);
super.beforeDataRequest(dataUserInfos);
JSONObject jsonObject=new JSONObject();
jsonObject.put("current",0);
jsonObject.put("size",20);
JSONArray jsonArray=new JSONArray();
jsonArray.add(paymentWays);
jsonObject.put("paymentWays",jsonArray);
jsonObject.put("type",type);
jsonObject.put("item",item);
jsonObject.put("supplierId",supplierId);
jsonObject.put("brandId",dataApi.getLoginInfo().getBrandId());
jsonObject.put("studioId",dataApi.getLoginInfo().getStudioId());
jsonObject.put("operatorId",dataApi.getLoginInfo().getAdminId());
dataApi.doRequest(RequestType.JSON, dataparams, jsonObject.toJSONString(), dataheadrs).assetsSuccess(true);
JSONObject response=dataApi.getBodyInJSON();
return response;
}
/**
* @param
* @description:统计收支
* @param supplierId:卖家ID 场馆ID
* @author: yangfangfang
**/
public JSONObject sumNormalIncomeExpense(String paymentWays, String type, String item,String supplierId, DataUserInfo...dataUserInfos){
dataApi.setApiModule(ApiModule.Polar_Finance)
.setApiName("API_sumNormalIncomeExpense")
.setTerminal(Terminal.B);
super.beforeDataRequest(dataUserInfos);
JSONObject jsonObject=new JSONObject();
jsonObject.put("current",0);
jsonObject.put("size",20);
JSONArray jsonArray=new JSONArray();
jsonArray.add(paymentWays);
jsonObject.put("paymentWays",jsonArray);
jsonObject.put("type",type);
jsonObject.put("item",item);
jsonObject.put("supplierId",supplierId);
jsonObject.put("brandId",dataApi.getLoginInfo().getBrandId());
jsonObject.put("studioId",dataApi.getLoginInfo().getStudioId());
jsonObject.put("operatorId",dataApi.getLoginInfo().getAdminId());
dataApi.doRequest(RequestType.JSON, dataparams, jsonObject.toJSONString(), dataheadrs).assetsSuccess(true);
JSONObject response=dataApi.getBodyInJSON();
return response;
}
/**
* @param
* @description:分页作废收支列表
* @param supplierId:卖家ID 场馆ID
* @param brandId:品牌ID
* @param studioId:场馆ID
* @param operatorId:操作人ID
* @author: yangfangfang
**/
public JSONObject pageDiscardIncomeExpense(String paymentWays, String type, String item, String supplierId, DataUserInfo...dataUserInfos){
dataApi.setApiModule(ApiModule.Polar_Finance)
.setApiName("API_pageDiscardIncomeExpense")
.setTerminal(Terminal.B);
super.beforeDataRequest(dataUserInfos);
JSONObject jsonObject=new JSONObject();
jsonObject.put("current",0);
jsonObject.put("size",20);
JSONArray jsonArray=new JSONArray();
jsonArray.add(paymentWays);
jsonObject.put("paymentWays",jsonArray);
jsonObject.put("type",type);
jsonObject.put("item",item);
jsonObject.put("supplierId",supplierId);
jsonObject.put("brandId",dataApi.getLoginInfo().getBrandId());
jsonObject.put("studioId",dataApi.getLoginInfo().getStudioId());
jsonObject.put("operatorId",dataApi.getLoginInfo().getAdminId());
dataApi.doRequest(RequestType.JSON, dataparams, jsonObject.toJSONString(), dataheadrs).assetsSuccess(true);
JSONObject response=dataApi.getBodyInJSON();
return response;
}
/**
* @param
* @description:获取收支的支付/退款记录
* @param id:主键ID
* @author: yangfangfang
**/
public JSONObject get(String id,DataUserInfo...dataUserInfos){
dataApi.setApiModule(ApiModule.Polar_Finance)
.setApiName("API_get")
.setTerminal(Terminal.B);
super.beforeDataRequest(dataUserInfos);
JSONObject jsonObject=new JSONObject();
jsonObject.put("id",id);
jsonObject.put("brandId",dataApi.getLoginInfo().getBrandId());
jsonObject.put("studioId",dataApi.getLoginInfo().getStudioId());
jsonObject.put("operatorId",dataApi.getLoginInfo().getAdminId());
dataApi.doRequest(RequestType.JSON, dataparams, jsonObject.toJSONString(), dataheadrs).assetsSuccess(true);
JSONObject response=dataApi.getBodyInJSON();
return response;
}
/**
* @param
* @description:上传图片资源
* @param bizCode:VOUCHER_INFO
* @param tenantType:BRAND
* @param filePath:图片地址
* @author: yangfangfang
**/
public JSONObject mobileResource( String bizCode, String tenantType, String filePath, DataUserInfo...dataUserInfos) throws IOException {
dataApi.setApiModule(ApiModule.Polar_Finance)
.setApiName("API_mobileResource")
.setTerminal(Terminal.B);
super.beforeDataRequest(dataUserInfos);
JSONObject jsonObject=new JSONObject();
jsonObject.put("tenantId",dataApi.getLoginInfo().getBrandId());
jsonObject.put("resourceName","imgFile/test1.jpg");
jsonObject.put("bizCode",bizCode);
jsonObject.put("tenantType",tenantType);
dataApi.doRequest(RequestType.JSON, dataparams, jsonObject.toJSONString(), dataheadrs).assetsSuccess(true);
JSONObject response = dataApi.getBodyInJSON();
// String resourceId = XMJSONPath.readPath(response, "$.result.resourceId");
// String accessId = XMJSONPath.readPath(response, "$.result.accessId");
// String policy = XMJSONPath.readPath(response, "$.result.policy");
// String signature = XMJSONPath.readPath(response, "$.result.signature");
// String key = XMJSONPath.readPath(response, "$.result.key");
// String callback = XMJSONPath.readPath(response, "$.result.callback");
// String host = XMJSONPath.readPath(response, "$.result.host");
//
//
// InputStream inputStream = new FileInputStream(filePath);
// SignatureVO signatureVO = new SignatureVO();
// signatureVO.setAccessId(accessId);
// signatureVO.setPolicy(policy);
// signatureVO.setCallback(callback);
// signatureVO.setKey(key);
// signatureVO.setSignature(signature);
// signatureVO.setHost(host);
// signatureVO.setResourceId(Long.valueOf(resourceId));
//
// ResourceUtil.uploadFile(inputStream, filePath, signatureVO, 5000);
return response;
}
}
package com.xiaomai.cases.polar.finance.revenueAndExpenditure;
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.XMBaseTest;
import org.testng.Assert;
import org.testng.annotations.BeforeMethod;
import org.testng.annotations.DataProvider;
import org.testng.annotations.Test;
public class TestSumNormalIncomeExpense extends XMBaseTest {
@BeforeMethod
public void beforeTest(){
xmAppApi.setApiModule(ApiModule.Polar_Finance)
.setApiName("API_sumNormalIncomeExpense")
.setLoginUser(LoginAccount.GYM_PROD)
.setTerminal(Terminal.B);
dal.setCase_owner("yff")
.setCase_name(Thread.currentThread().getStackTrace()[1].getFileName().split("\\.")[0]);
super.beforeTest();
}
@DataProvider
public Object[][] dataProvider(){
return new Object[][]{
{"INCOME","SIGN"},//收入,签单
{"EXPENSE","REFUND"}//支出,退单
};
}
@Test(description = "获取统计收支",dataProvider = "dataProvider")
public void testSumNormalIncomeExpense(String type,String item){
JSONObject jsonObject=new JSONObject();
jsonObject.put("current",0);
jsonObject.put("size",20);
JSONArray jsonArray=new JSONArray();
jsonArray.add("1");
jsonObject.put("paymentWays",jsonArray);
jsonObject.put("type",type);
jsonObject.put("item",item);
jsonObject.put("supplierId",xmAppApi.getLoginInfo().getStudioId());
jsonObject.put("brandId",xmAppApi.getLoginInfo().getBrandId());
jsonObject.put("studioId",xmAppApi.getLoginInfo().getStudioId());
jsonObject.put("operatorId",xmAppApi.getLoginInfo().getAdminId());
xmAppApi.doRequest(RequestType.JSON,params,jsonObject.toJSONString(),headers).assetsSuccess(true);
JSONObject response=xmAppApi.getBodyInJSON();
String success=response.getString("success");
Assert.assertEquals(success,"true","获取统计收支失败");
}
}
package com.xiaomai.cases.polar.finance.revenueAndExpenditure;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.xiaomai.cases.polar.finance.order.OrderTools;
import com.xiaomai.cases.polar.member.Tools;
import com.xiaomai.cases.polar.memberCard.CardTools;
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;
import java.io.IOException;
import java.math.BigDecimal;
public class TestUploadResources extends XMBaseTest {
String memberId;
String cardId;
String id1;
Tools tools=new Tools();
OrderTools orderTools=new OrderTools();
CardTools cardTools=new CardTools();
@BeforeMethod
public void beforeTest(){
xmAppApi.setApiModule(ApiModule.Polar_Finance)
.setApiName("API_uploadResources")
.setLoginUser(LoginAccount.GYM_PROD)
.setTerminal(Terminal.B);
dal.setCase_owner("yff")
.setCase_name(Thread.currentThread().getStackTrace()[1].getFileName().split("\\.")[0]);
super.beforeTest();
}
@Test(description = "收支(收支明细&订单详情-支付记录)上传支付凭证-3张")
public void testUploadResources() {
String name = "创建订单潜在会员"+ RandomStringUtil.randomString(3);
String phone = RandomStringUtil.randomMobile("666");
//获取会员ID,没有则新建一个
int memberTotal = Integer.parseInt(tools.search("NORMAL","NORMAL").getJSONObject("result").getString("total"));
if (memberTotal == 0) {
memberId = tools.create(name,phone).getString("result");
}
memberId=tools.search("NORMAL","NORMAL").getJSONObject("result").getJSONArray("records").getJSONObject(0).getString("id");
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
throw new RuntimeException(e);
}
//获取会员卡信息
//获取会员卡列表,没有则新建一个
int cardTotal = Integer.parseInt(orderTools.fetchPageOfMemberCard("次卡").getJSONObject("result").getString("total"));
if (cardTotal == 0) {
cardId = cardTools.memberCardCreate("次卡-创建订单会员卡"+ TimeUtils.getCurrentTime()).getString("result");
}
JSONObject memberCard=orderTools.fetchPageOfMemberCard("次卡");
cardId=memberCard.getJSONObject("result").getJSONArray("records").getJSONObject(0).getString("id");
BigDecimal quantity= new BigDecimal(memberCard.getJSONObject("result").getJSONArray("records").getJSONObject(0).getString("balance"));
float price= Float.parseFloat(memberCard.getJSONObject("result").getJSONArray("records").getJSONObject(0).getString("price"));
int validPeriod= Integer.parseInt(memberCard.getJSONObject("result").getJSONArray("records").getJSONObject(0).getString("validPeriod"));
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
throw new RuntimeException(e);
}
//获取签单要用的卡快照id
String latestSnapshotId=orderTools.fetchDetailById(cardId,xmAppApi.getLoginInfo().getBrandId(),xmAppApi.getLoginInfo().getStudioId(),xmAppApi.getLoginInfo().getAdminId()).getJSONObject("result").getString("latestSnapshotId");
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
throw new RuntimeException(e);
}
//检查会员对该卡是否超出购买上限
boolean limitResult=orderTools.checkAllowPurchase("MEMBER_CARD",cardId,memberId,"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, price / 2, "PURCHASE",
"MEMBER_CARD", memberId, price - price / 2, price - price / 2, "1");
String success = orderResult.getString("success");
String getDetailId = orderResult.getString("result");
Assert.assertEquals(success, "true", "创建签单订单失败");
try {
Thread.sleep(3000);
} catch (InterruptedException e) {
throw new RuntimeException(e);
}
//获取订单支付记录
JSONObject listByVoucherIdResult=orderTools.listByVoucherId(getDetailId);
id1=listByVoucherIdResult.getJSONArray("result").getJSONObject(0).getString("id");//收支的id
//上传图片
JSONObject jsonObject=new JSONObject();
jsonObject.put("id",id1);
JSONArray resourceIds=new JSONArray();
resourceIds.add("1808067425522491394");
resourceIds.add("1808067425522491394");
resourceIds.add("1808067425522491394");
jsonObject.put("resourceIds",resourceIds);
jsonObject.put("brandId",xmAppApi.getLoginInfo().getBrandId());
jsonObject.put("studioId",xmAppApi.getLoginInfo().getStudioId());
jsonObject.put("operatorId",xmAppApi.getLoginInfo().getAdminId());
xmAppApi.doRequest(RequestType.JSON,params,jsonObject.toJSONString(),headers).assetsSuccess(true);
JSONObject response=xmAppApi.getBodyInJSON();
String uploadResourcesSuccess=response.getString("success");
Assert.assertEquals(uploadResourcesSuccess,"true","上传图片失败");
}
}
@Test(description = "收支(收支明细&订单详情-支付记录)上传支付凭证-资源不能超过3个")
public void testUploadResources_add() {
//上传图片
JSONObject jsonObject=new JSONObject();
jsonObject.put("id",id1);
JSONArray resourceIds=new JSONArray();
resourceIds.add("1808067425522491394");
resourceIds.add("1808067425522491394");
resourceIds.add("1808067425522491394");
resourceIds.add("1808067425522491394");
jsonObject.put("resourceIds",resourceIds);
jsonObject.put("brandId",xmAppApi.getLoginInfo().getBrandId());
jsonObject.put("studioId",xmAppApi.getLoginInfo().getStudioId());
jsonObject.put("operatorId",xmAppApi.getLoginInfo().getAdminId());
xmAppApi.doRequest(RequestType.JSON,params,jsonObject.toJSONString(),headers);
String uploadResourcesSuccess=xmAppApi.getBodyInJSON().getString("success");
Assert.assertEquals(uploadResourcesSuccess,"false","支付凭证资源不能超过3个");
}
}
package com.xiaomai.cases.polar.importExcel;
import com.alibaba.fastjson.JSONObject;
import com.xiaomai.client.DataUserInfo;
import com.xiaomai.enums.ApiModule;
import com.xiaomai.enums.RequestType;
import com.xiaomai.enums.Terminal;
import com.xiaomai.utils.XMBaseTest;
/**
* @Author zxy
* @Description
* @Date 2024/7/2 17:31
*/
public class ImportTools extends XMBaseTest {
//创建导入
public JSONObject createImportTask(String taskType,String resourceId,String taskDesc,String memo,DataUserInfo...userInfos){
dataApi.setApiModule(ApiModule.Polar_ImportTask)
.setApiName("API_createImportTask")
.setTerminal(Terminal.B);
super.beforeDataRequest(userInfos);
JSONObject object = new JSONObject();
object.put("operatorId",dataApi.getLoginInfo().getAdminId());
object.put("tenantId",dataApi.getLoginInfo().getStudioId());
object.put("resourceId",resourceId);
object.put("tenantType","STUDIO");
object.put("taskType",taskType);
object.put("taskDesc",taskDesc);
object.put("memo",memo);
dataApi.doRequest(RequestType.JSON,dataparams,object.toString(),dataheadrs).assetsSuccess(true);
return dataApi.getBodyInJSON();
}
//获取导入任务
public JSONObject getTask(String id,DataUserInfo...userInfos){
dataApi.setApiModule(ApiModule.Polar_ImportTask)
.setApiName("API_getTask")
.setTerminal(Terminal.B);
super.beforeDataRequest(userInfos);
JSONObject object = new JSONObject();
object.put("id",id);
dataApi.doRequest(RequestType.JSON,dataparams,object.toString(),dataheadrs).assetsSuccess(true);
return dataApi.getBodyInJSON();
}
//任务中心-导入记录
public JSONObject pageImportTask(DataUserInfo...userInfos){
dataApi.setApiModule(ApiModule.Polar_ImportTask)
.setApiName("API_pageImportTask")
.setTerminal(Terminal.B);
super.beforeDataRequest(userInfos);
JSONObject object = new JSONObject();
object.put("operatorId",dataApi.getLoginInfo().getAdminId());
object.put("tenantId",dataApi.getLoginInfo().getStudioId());
object.put("tenantType","STUDIO");
object.put("current",0);
object.put("size",10);
dataApi.doRequest(RequestType.JSON,dataparams,object.toString(),dataheadrs).assetsSuccess(true);
return dataApi.getBodyInJSON();
}
//获取导入资源
public JSONObject getImportResource(String resourceId,DataUserInfo...userInfos){
dataApi.setApiModule(ApiModule.Polar_ImportTask)
.setApiName("API_getImportResource")
.setTerminal(Terminal.B);
super.beforeDataRequest(userInfos);
JSONObject object = new JSONObject();
object.put("tenantId",dataApi.getLoginInfo().getStudioId());
object.put("tenantType","STUDIO");
object.put("resourceId",resourceId);
dataApi.doRequest(RequestType.JSON,dataparams,object.toString(),dataheadrs).assetsSuccess(true);
return dataApi.getBodyInJSON();
}
}
package com.xiaomai.cases.polar.importExcel;
import com.alibaba.fastjson.JSONObject;
import com.xiaomai.cases.polar.enums.ExcelImportEnum;
import com.xiaomai.cases.polar.utils.Entity.SignatureVO;
import com.xiaomai.cases.polar.utils.ModifyExcelContentUtil;
import com.xiaomai.cases.polar.utils.ResourceUtil;
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 com.xiaomai.utils.XMJSONPath;
import org.testng.Assert;
import org.testng.annotations.BeforeMethod;
import org.testng.annotations.Test;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
/**
* @Author zxy
* @Description
* @Date 2024/7/2 17:37
*/
public class TestImportMember extends XMBaseTest {
ImportTools importTools = new ImportTools();
@BeforeMethod
public void beforeTest(){
xmAppApi.setApiModule(ApiModule.Polar_ImportTask)
.setApiName("API_webTokenWithAccessUrl")
.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 testImportMember()throws IOException, InterruptedException{
//导入任务列表
int total = Integer.parseInt(importTools.pageImportTask().getJSONObject("result").getString("total"));
//1.更新excel文档
String filePathName = "excelFile/memberInfo.xls";
ModifyExcelContentUtil.modifyExcel(filePathName, "会员信息导入", ExcelImportEnum.MEMBER_INFO);
Thread.sleep(1000);
//2、获取签名
JSONObject object = new JSONObject();
object.put("tenantId", xmAppApi.getLoginInfo().getBrandId());
object.put("tenantType", "BRAND");
object.put("resourceName",filePathName);
object.put("resourceNameToMD5",false);
object.put("bizCode","IMPORT_TASK");
xmAppApi.doRequest(RequestType.JSON, params, object.toString(), headers).assetsSuccess(true);
JSONObject result1 = xmAppApi.getBodyInJSON();
String resourceId = XMJSONPath.readPath(result1, "$.result.resourceId");
String accessId = XMJSONPath.readPath(result1, "$.result.accessId");
String policy = XMJSONPath.readPath(result1, "$.result.policy");
String signature = XMJSONPath.readPath(result1, "$.result.signature");
String key = XMJSONPath.readPath(result1, "$.result.key");
String callback = XMJSONPath.readPath(result1, "$.result.callback");
String host = XMJSONPath.readPath(result1, "$.result.host");
String time = XMJSONPath.readPath(result1, "$.result.extAttrs");
JSONObject time1 = JSONObject.parseObject(time);
String url = XMJSONPath.readPath(result1, "$.result.url");
//3.腾讯云上传
InputStream inputStream = new FileInputStream(filePathName);
SignatureVO signatureVO = new SignatureVO();
signatureVO.setAlgorithm("sha1");
signatureVO.setKey(key);
signatureVO.setAccessId(accessId);
signatureVO.setPolicy(policy);
signatureVO.setSignature(signature);
signatureVO.setCallback(callback);
signatureVO.setExtAttrs(time1.getString("q-key-time"));
signatureVO.setHost(host);
signatureVO.setResourceId(Long.valueOf(resourceId));
String result = String.valueOf(ResourceUtil.uploadFileContentToTencent(inputStream, filePathName, signatureVO, 5000,"multipart/form-data"));
Assert.assertEquals(result, "true");
//4.创建任务
JSONObject result2 = importTools.createImportTask("MEMBER",resourceId,"REPLACE_DUPLICATES","");
String recordId = XMJSONPath.readPath(result2, "$.result");
//5.获取上传进度
Thread.sleep(6000);
importTools.getTask(recordId);
Assert.assertEquals(XMJSONPath.readPath(dataApi.getApi_response(), "$.result.state"), "SUCCESS");
Assert.assertEquals(XMJSONPath.readPath(dataApi.getApi_response(), "$.result.successRowNum"), "1");
//上传成功后导入记录列表新增一条数据
JSONObject res = importTools.pageImportTask().getJSONObject("result");
Assert.assertEquals(Integer.parseInt(res.getString("total")),total+1);
Assert.assertEquals(res.getJSONArray("records").getJSONObject(0).getString("resourceId"),resourceId);
Assert.assertEquals(res.getJSONArray("records").getJSONObject(0).getString("state"),"SUCCESS");
//获取导入资源-下载导入文件
String url1 = importTools.getImportResource(resourceId).getString("result");
Assert.assertEquals(url1,url);
}
}
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.math.BigDecimal;
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 = "";
BigDecimal quantity = new BigDecimal(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 = new BigDecimal(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, price/2,"PURCHASE",
"MEMBER_CARD",memberId,price-price/2,price-price/2,"1"); }
}
}
...@@ -13,24 +13,33 @@ import org.testng.annotations.Test; ...@@ -13,24 +13,33 @@ import org.testng.annotations.Test;
public class TestFindDetailById extends XMBaseTest { public class TestFindDetailById extends XMBaseTest {
Tools tools=new Tools();
@BeforeMethod @BeforeMethod
public void beforeTest(){ public void beforeTest(){
xmAppApi.setApiModule(ApiModule.Polar_Clue) xmAppApi.setApiModule(ApiModule.Polar_Clue)
.setApiName("API_findDetailById") .setApiName("API_findStudioMemberDetail")
.setLoginUser(LoginAccount.YFF_DEV) .setLoginUser(LoginAccount.GYM_PROD)
.setTerminal(Terminal.B); .setTerminal(Terminal.B);
dal.setCase_owner("yff") dal.setCase_owner("yff")
.setCase_name(Thread.currentThread().getStackTrace()[1].getFileName().split("\\.")[0]); .setCase_name(Thread.currentThread().getStackTrace()[1].getFileName().split("\\.")[0]);
super.beforeTest(); super.beforeTest();
} }
@Test(description = "获取会员详情以及更多资料") @Test(description = "获取会员详情以及更多资料")
public void testFindDetailById(){ public void testFindDetailById(){
//暂时还不能转会员,只能写死:memberId:1771002119284924417-自动化正式会员勿动 //获取正式会员列表
JSONObject memberResult=tools.search("NORMAL","NORMAL");
String id=memberResult.getJSONObject("result").getJSONArray("records").getJSONObject(0).getString("id");
JSONObject jsonObject=new JSONObject(); JSONObject jsonObject=new JSONObject();
jsonObject.put("memberId","1771059838226341890"); jsonObject.put("memberId",id);
jsonObject.put("studioId",xmAppApi.getLoginInfo().getStudioId());
jsonObject.put("brandId",xmAppApi.getLoginInfo().getBrandId());
jsonObject.put("operatorId",xmAppApi.getLoginInfo().getAdminId());
xmAppApi.doRequest(RequestType.JSON,params,jsonObject.toJSONString(),headers).assetsSuccess(true); xmAppApi.doRequest(RequestType.JSON,params,jsonObject.toJSONString(),headers).assetsSuccess(true);
JSONObject response=xmAppApi.getBodyInJSON(); JSONObject response=xmAppApi.getBodyInJSON();
...@@ -41,11 +50,20 @@ public class TestFindDetailById extends XMBaseTest { ...@@ -41,11 +50,20 @@ public class TestFindDetailById extends XMBaseTest {
@Test(description = "获取会员详情以及更多资料-会员id不能为空") @Test(description = "获取会员详情以及更多资料-会员id不能为空")
public void testFindDetailById_1(){ public void testFindDetailById_1(){
//获取正式会员列表
JSONObject memberResult=tools.search("NORMAL","NORMAL");
String id=memberResult.getJSONObject("result").getJSONArray("records").getJSONObject(0).getString("id");
JSONObject jsonObject1=new JSONObject(); JSONObject jsonObject1=new JSONObject();
jsonObject1.put("memberId",""); jsonObject1.put("memberId","");
jsonObject1.put("studioId",xmAppApi.getLoginInfo().getStudioId());
jsonObject1.put("brandId",xmAppApi.getLoginInfo().getBrandId());
jsonObject1.put("operatorId",xmAppApi.getLoginInfo().getAdminId());
xmAppApi.doRequest(RequestType.JSON,params,jsonObject1.toJSONString(),headers).assetsSuccess(false); xmAppApi.doRequest(RequestType.JSON,params,jsonObject1.toJSONString(),headers).assetsSuccess(false);
Assert.assertEquals(XMJSONPath.readPath(xmAppApi.getBodyInJSON(),"$message"),"会员id不能为空"); Assert.assertEquals(XMJSONPath.readPath(xmAppApi.getBodyInJSON(),"$message"),"会员id不能为空");
} }
} }
package com.xiaomai.cases.polar.member; package com.xiaomai.cases.polar.member;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import com.xiaomai.cases.polar.clue.MemberTools;
import com.xiaomai.cases.polar.finance.order.OrderTools;
import com.xiaomai.cases.polar.finance.revenueAndExpenditure.RevenueAndExpenditureTools;
import com.xiaomai.cases.polar.memberCard.CardTools;
import com.xiaomai.enums.ApiModule; import com.xiaomai.enums.ApiModule;
import com.xiaomai.enums.LoginAccount; import com.xiaomai.enums.LoginAccount;
import com.xiaomai.enums.RequestType; import com.xiaomai.enums.RequestType;
...@@ -13,14 +18,24 @@ import org.testng.Assert; ...@@ -13,14 +18,24 @@ import org.testng.Assert;
import org.testng.annotations.BeforeMethod; import org.testng.annotations.BeforeMethod;
import org.testng.annotations.Test; import org.testng.annotations.Test;
import java.math.BigDecimal;
public class TestForceUpdate extends XMBaseTest { public class TestForceUpdate extends XMBaseTest {
String cardId;
OrderTools orderTools=new OrderTools();
RevenueAndExpenditureTools revenueAndExpenditureTools=new RevenueAndExpenditureTools();
CardTools cardTools=new CardTools();
Tools tools= new Tools();
@BeforeMethod @BeforeMethod
public void beforeTest(){ public void beforeTest(){
xmAppApi.setApiModule(ApiModule.Polar_Clue) xmAppApi.setApiModule(ApiModule.Polar_Clue)
.setApiName("API_forceUpdate") .setApiName("API_forceUpdate")
.setLoginUser(LoginAccount.YFF_DEV) .setLoginUser(LoginAccount.GYM_PROD)
.setTerminal(Terminal.B); .setTerminal(Terminal.B);
dal.setCase_owner("yff") dal.setCase_owner("yff")
...@@ -31,13 +46,96 @@ public class TestForceUpdate extends XMBaseTest { ...@@ -31,13 +46,96 @@ public class TestForceUpdate extends XMBaseTest {
@Test(description = "编辑正式会员信息") @Test(description = "编辑正式会员信息")
public void testForceUpdate() { public void testForceUpdate() {
//暂时还不能转会员,只能写死:memberId:1771059838226341890-自动化正式会员勿动
JSONObject create=tools.create("编辑正式会员"+RandomStringUtil.randomString(3),RandomStringUtil.randomMobile("88"));
String memberId=create.getString("result");
//创建订单转成正式会员
//获取会员卡信息
//获取会员卡列表,没有则新建一个
int cardTotal = Integer.parseInt(orderTools.fetchPageOfMemberCard("次卡").getJSONObject("result").getString("total"));
if (cardTotal == 0) {
cardId = cardTools.memberCardCreate("创建订单会员卡"+TimeUtils.getCurrentTime()).getString("result");
}
JSONObject memberCard=orderTools.fetchPageOfMemberCard("次卡");
cardId=memberCard.getJSONObject("result").getJSONArray("records").getJSONObject(0).getString("id");
BigDecimal quantity= new BigDecimal(memberCard.getJSONObject("result").getJSONArray("records").getJSONObject(0).getString("balance"));
float price= Float.parseFloat(memberCard.getJSONObject("result").getJSONArray("records").getJSONObject(0).getString("price"));
int validPeriod= Integer.parseInt(memberCard.getJSONObject("result").getJSONArray("records").getJSONObject(0).getString("validPeriod"));
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
throw new RuntimeException(e);
}
//获取签单要用的卡快照id
String latestSnapshotId=orderTools.fetchDetailById(cardId,xmAppApi.getLoginInfo().getBrandId(),xmAppApi.getLoginInfo().getStudioId(),xmAppApi.getLoginInfo().getAdminId()).getJSONObject("result").getString("latestSnapshotId");
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
throw new RuntimeException(e);
}
//检查会员对该卡是否超出购买上限
boolean limitResult=orderTools.checkAllowPurchase("MEMBER_CARD",cardId,memberId,"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, price / 2, "PURCHASE",
"MEMBER_CARD", memberId, price - price / 2, price - price / 2, "1");
String getDetailId = orderResult.getString("result");
try {
Thread.sleep(3000);
} catch (InterruptedException e) {
throw new RuntimeException(e);
}
}
//获取正式会员列表
JSONObject memberResult=tools.search("NORMAL","NORMAL");
int memberResultPages=Integer.parseInt(memberResult.getJSONObject("result").getString("pages"));
int memberResultTotal=Integer.parseInt(memberResult.getJSONObject("result").getString("total"));
for(int k=0; k == memberResultPages+1; k++){
int n =k==memberResultPages ? (memberResultTotal%10==0 ? 10 : memberResultTotal%10) : 10;
JSONArray records=memberResult.getJSONObject("result").getJSONArray("records");
boolean flag=true;
for(int i=0; i<n; i++){
String memberResultId=records.getJSONObject(i).getString("id");
if(memberResultId.equals(memberId)){
flag = true;
break;
}
}
Assert.assertEquals(true,flag,"潜在会员购买订单已完成,但会员状态转成正式会员失败");
}
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
throw new RuntimeException(e);
}
//编辑
JSONObject jsonObject = new JSONObject(); JSONObject jsonObject = new JSONObject();
jsonObject.put("brandId", xmAppApi.getLoginInfo().getBrandId()); jsonObject.put("brandId", xmAppApi.getLoginInfo().getBrandId());
jsonObject.put("studioId", xmAppApi.getLoginInfo().getStudioId()); jsonObject.put("studioId", xmAppApi.getLoginInfo().getStudioId());
jsonObject.put("operatorId", xmAppApi.getLoginInfo().getAdminId()); jsonObject.put("operatorId", xmAppApi.getLoginInfo().getAdminId());
jsonObject.put("status", "NORMAL"); jsonObject.put("status", "POTENTIAL");
jsonObject.put("name", "自动化正式会员" + RandomStringUtil.randomString(2)); jsonObject.put("name", "自动化正式会员" + RandomStringUtil.randomString(2));
jsonObject.put("phone", RandomStringUtil.randomMobile("22")); jsonObject.put("phone", RandomStringUtil.randomMobile("22"));
jsonObject.put("gender", "WOMEN"); jsonObject.put("gender", "WOMEN");
...@@ -54,9 +152,10 @@ public class TestForceUpdate extends XMBaseTest { ...@@ -54,9 +152,10 @@ public class TestForceUpdate extends XMBaseTest {
jsonObject.put("emergencyContactPerson", RandomStringUtil.randomString(3)); jsonObject.put("emergencyContactPerson", RandomStringUtil.randomString(3));
jsonObject.put("emergencyContactPhone", RandomStringUtil.randomMobile("66")); jsonObject.put("emergencyContactPhone", RandomStringUtil.randomMobile("66"));
jsonObject.put("resourceId", "1"); jsonObject.put("resourceId", "1");
jsonObject.put("intention", "HIGH");
jsonObject.put("creatorId", xmAppApi.getLoginInfo().getAdminId()); jsonObject.put("creatorId", xmAppApi.getLoginInfo().getAdminId());
jsonObject.put("remark", "备注"+RandomStringUtil.randomString(12)); jsonObject.put("remark", "备注"+RandomStringUtil.randomString(12));
jsonObject.put("memberId", "1771059838226341890"); jsonObject.put("memberId", memberId);
xmAppApi.doRequest(RequestType.JSON, params, jsonObject.toJSONString(), headers).assetsSuccess(true); xmAppApi.doRequest(RequestType.JSON, params, jsonObject.toJSONString(), headers).assetsSuccess(true);
......
...@@ -18,7 +18,7 @@ public class TestSearch extends XMBaseTest { ...@@ -18,7 +18,7 @@ public class TestSearch extends XMBaseTest {
public void beforeTest(){ public void beforeTest(){
xmAppApi.setApiModule(ApiModule.Polar_Clue) xmAppApi.setApiModule(ApiModule.Polar_Clue)
.setApiName("API_searchMember") .setApiName("API_searchMember")
.setLoginUser(LoginAccount.YFF_DEV) .setLoginUser(LoginAccount.GYM_PROD)
.setTerminal(Terminal.B); .setTerminal(Terminal.B);
dal.setCase_owner("yff") dal.setCase_owner("yff")
.setCase_name(Thread.currentThread().getStackTrace()[1].getFileName().split("\\.")[0]); .setCase_name(Thread.currentThread().getStackTrace()[1].getFileName().split("\\.")[0]);
...@@ -28,26 +28,35 @@ public class TestSearch extends XMBaseTest { ...@@ -28,26 +28,35 @@ public class TestSearch extends XMBaseTest {
@DataProvider @DataProvider
public Object[][] dataProvider(){ public Object[][] dataProvider(){
return new Object[][]{ return new Object[][]{
{"NORMAL"}, {"NORMAL","NORMAL"},
{"HISTORY"} {"HISTORY","HISTORY"}
}; };
} }
@Test(description = "获取会员管理(正式会员/流失会员)列表",dataProvider = "dataProvider") @Test(description = "获取会员管理(正式会员/流失会员)列表",dataProvider = "dataProvider")
public void testSearch(String status){ public void testSearch(String searchType,String status){
JSONObject jsonObject=new JSONObject(); JSONObject jsonObject=new JSONObject();
jsonObject.put("current",0); jsonObject.put("current",0);
jsonObject.put("size",20); jsonObject.put("size",20);
jsonObject.put("brandId",xmAppApi.getLoginInfo().getBrandId()); jsonObject.put("brandId",xmAppApi.getLoginInfo().getBrandId());
jsonObject.put("studioId",xmAppApi.getLoginInfo().getStudioId());
JSONObject studioFilter=new JSONObject(); jsonObject.put("operatorId",xmAppApi.getLoginInfo().getAdminId());
studioFilter.put("studioId",xmAppApi.getLoginInfo().getStudioId()); jsonObject.put("searchType",searchType);
jsonObject.put("studioFilter",studioFilter);
JSONArray statusList=new JSONArray(); JSONArray statusList=new JSONArray();
statusList.add(status); statusList.add(status);
jsonObject.put("statusList",statusList); jsonObject.put("statusList",statusList);
jsonObject.put("resourceId",null);
jsonObject.put("creatorId",null);
jsonObject.put("wechatBindStatus",null);
jsonObject.put("saleId",null);
jsonObject.put("birthdayEnd",null);
jsonObject.put("createdEnd",null);
jsonObject.put("createdStart",null);
jsonObject.put("tags",null);
jsonObject.put("coachId",null);
xmAppApi.doRequest(RequestType.JSON,params,jsonObject.toJSONString(),headers).assetsSuccess(true); xmAppApi.doRequest(RequestType.JSON,params,jsonObject.toJSONString(),headers).assetsSuccess(true);
JSONObject response=xmAppApi.getBodyInJSON(); JSONObject response=xmAppApi.getBodyInJSON();
String success=response.getString("success"); String success=response.getString("success");
...@@ -58,21 +67,20 @@ public class TestSearch extends XMBaseTest { ...@@ -58,21 +67,20 @@ public class TestSearch extends XMBaseTest {
@DataProvider @DataProvider
public Object[][] dataProvider1(){ public Object[][] dataProvider1(){
return new Object[][]{ return new Object[][]{
{"NORMAL"}, {"NORMAL","NORMAL"},
{"HISTORY"} {"HISTORY","HISTORY"}
}; };
} }
@Test(description = "筛选会员管理(正式会员/流失学员)列表来源、当前创建人、性别",dataProvider = "dataProvider1") @Test(description = "筛选会员管理(正式会员/流失学员)列表来源、当前创建人、跟进销售、跟进教练、绑定微信公众号、性别",dataProvider = "dataProvider1")
public void testSearchResource(String status){ public void testSearchResource(String searchType,String status){
JSONObject jsonObject=new JSONObject(); JSONObject jsonObject=new JSONObject();
jsonObject.put("current",0); jsonObject.put("current",0);
jsonObject.put("size",20); jsonObject.put("size",20);
jsonObject.put("brandId",xmAppApi.getLoginInfo().getBrandId()); jsonObject.put("brandId",xmAppApi.getLoginInfo().getBrandId());
jsonObject.put("studioId",xmAppApi.getLoginInfo().getStudioId());
JSONObject studioFilter=new JSONObject(); jsonObject.put("operatorId",xmAppApi.getLoginInfo().getAdminId());
studioFilter.put("studioId",xmAppApi.getLoginInfo().getStudioId()); jsonObject.put("searchType",searchType);
jsonObject.put("studioFilter",studioFilter);
JSONArray statusList=new JSONArray(); JSONArray statusList=new JSONArray();
statusList.add(status); statusList.add(status);
...@@ -81,6 +89,14 @@ public class TestSearch extends XMBaseTest { ...@@ -81,6 +89,14 @@ public class TestSearch extends XMBaseTest {
jsonObject.put("creatorId",xmAppApi.getLoginInfo().getAdminId()); jsonObject.put("creatorId",xmAppApi.getLoginInfo().getAdminId());
jsonObject.put("gender","WOMEN"); jsonObject.put("gender","WOMEN");
jsonObject.put("wechatBindStatus","NO");
jsonObject.put("saleId",xmAppApi.getLoginInfo().getAdminId());
jsonObject.put("birthdayEnd",null);
jsonObject.put("createdEnd",null);
jsonObject.put("createdStart",null);
jsonObject.put("tags",null);
jsonObject.put("coachId",xmAppApi.getLoginInfo().getAdminId());
xmAppApi.doRequest(RequestType.JSON,params,jsonObject.toJSONString(),headers).assetsSuccess(true); xmAppApi.doRequest(RequestType.JSON,params,jsonObject.toJSONString(),headers).assetsSuccess(true);
JSONObject response=xmAppApi.getBodyInJSON(); JSONObject response=xmAppApi.getBodyInJSON();
......
package com.xiaomai.cases.polar.member;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.xiaomai.client.DataUserInfo;
import com.xiaomai.enums.ApiModule;
import com.xiaomai.enums.RequestType;
import com.xiaomai.enums.Terminal;
import com.xiaomai.utils.XMBaseTest;
import java.util.List;
public class Tools extends XMBaseTest {
/**
* @param
* @description:获取会员管理列表
* @param searchType:查询类型 POTENTIAL, NORMAL, HISTORY
* @param status:会员状态 POTENTIAL, NORMAL, HISTORY
* @author: yangfangfang
**/
public JSONObject search(String searchType,String status, DataUserInfo...dataUserInfos){
dataApi.setApiModule(ApiModule.Polar_Clue)
.setApiName("API_searchMember")
.setTerminal(Terminal.B);
super.beforeDataRequest(dataUserInfos);
JSONObject jsonObject=new JSONObject();
jsonObject.put("current",0);
jsonObject.put("size",20);
jsonObject.put("brandId",xmAppApi.getLoginInfo().getBrandId());
jsonObject.put("studioId",xmAppApi.getLoginInfo().getStudioId());
jsonObject.put("operatorId",xmAppApi.getLoginInfo().getAdminId());
jsonObject.put("searchType",searchType);
JSONArray statusList=new JSONArray();
statusList.add(status);
jsonObject.put("statusList",statusList);
jsonObject.put("resourceId",null);
jsonObject.put("creatorId",null);
jsonObject.put("wechatBindStatus",null);
jsonObject.put("saleId",null);
jsonObject.put("birthdayEnd",null);
jsonObject.put("createdEnd",null);
jsonObject.put("createdStart",null);
jsonObject.put("tags",null);
jsonObject.put("coachId",null);
dataApi.doRequest(RequestType.JSON, dataparams, jsonObject.toJSONString(), dataheadrs).assetsSuccess(true);
JSONObject response=dataApi.getBodyInJSON();
return response;
}
/**
* @param
* @description:添加线索
* @param name:姓名
* @param phone:手机号
* @param
* @author: yangfangfang
**/
public JSONObject create(String name,String phone,DataUserInfo...userInfos){
dataApi.setApiModule(ApiModule.Polar_Clue)
.setApiName("API_create")
.setTerminal(Terminal.B);
super.beforeDataRequest(userInfos);
JSONObject object = new JSONObject();
object.put("brandId",xmAppApi.getLoginInfo().getBrandId());
object.put("studioId",xmAppApi.getLoginInfo().getStudioId());
object.put("operatorId",xmAppApi.getLoginInfo().getAdminId());
object.put("creatorId",xmAppApi.getLoginInfo().getAdminId());
object.put("status","POTENTIAL");
object.put("name",name);
object.put("phone",phone);
object.put("gender","UNKNOWN");
object.put("position","INITIAL");
object.put("saleId","-1");
dataApi.doRequest(RequestType.JSON,dataparams,object.toString(),dataheadrs).assetsSuccess(true);
return dataApi.getBodyInJSON();
}
/**
* @param
* @description:搜索会员
* @param content:姓名/手机号
* @param status:POTENTIAL, NORMAL, HISTORY
* @param
* @author: yangfangfang
**/
public JSONObject commonSearch(String content,String status, DataUserInfo...userInfos){
dataApi.setApiModule(ApiModule.Polar_Clue)
.setApiName("API_commonSearch")
.setTerminal(Terminal.B);
super.beforeDataRequest(userInfos);
JSONObject object = new JSONObject();
object.put("brandId",xmAppApi.getLoginInfo().getBrandId());
object.put("studioId",xmAppApi.getLoginInfo().getStudioId());
object.put("operatorId",xmAppApi.getLoginInfo().getStudioId());
object.put("content",content);
JSONArray statusList=new JSONArray();
statusList.add(status);
object.put("statusList",statusList);
object.put("followerId",null);
object.put("position",null);
object.put("dataPermissionFilter",true);
dataApi.doRequest(RequestType.JSON,dataparams,object.toString(),dataheadrs).assetsSuccess(true);
return dataApi.getBodyInJSON();
}
}
package com.xiaomai.cases.polar.memberCard;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
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 com.xiaomai.utils.XMBaseTest;
import java.util.ArrayList;
import java.util.List;
public class CardTools extends XMBaseTest {
/**
* @param
* @description:创建会员卡
* @author: yangjian
**/
public JSONObject memberCardCreate(String title, DataUserInfo...dataUserInfos) {
dataApi.setApiModule(ApiModule.Polar_Card)
.setApiName("API_tenantMemberCard_create")
.setTerminal(Terminal.B);
super.beforeDataRequest(dataUserInfos);
JSONArray activatePatternList=new JSONArray();
activatePatternList.add("PURCHASE");
activatePatternList.add("SPECIFIC_DATE");
activatePatternList.add("FIRST_USED");
List benefitList = new ArrayList();
//List itemList = new ArrayList();
//itemList.add("");
JSONObject Object = new JSONObject();
Object.put("identifier", xmAppApi.getLoginInfo().getUser());
Object.put("benefitType", "BALANCE");
Object.put("targetScope", "GROUP_CLASS_AND_PERSONAL_COURSE");
Object.put("balance", "30");
Object.put("reserveLimitType", "UN_LIMIT");
Object.put("reserveLimitNumber", 0);
Object.put("defaultConsumeBalance", 1);
//Object.put("itemList", itemList);
Object.put("targetType", "COURSE");
benefitList.add(Object);
JSONObject jsonObject = new JSONObject();
jsonObject.put("surfaceUrl","https://image.xiaomaiketang.com/xm/internal/HpRiJpFnTC.png");//会员卡封面图片
jsonObject.put("surfaceCornerMark","自动化标签");
jsonObject.put("title",title );//会员卡名称 不能重复要加东西 "次卡-自动化会员卡"+RandomStringUtil.randomString(3)
jsonObject.put("validPeriod", "3");//有效期-3天
jsonObject.put("activatePatternList", activatePatternList);//三种生效方式
jsonObject.put("sharePeopleLimit", "2");//共享人数
jsonObject.put("benefitList", benefitList);//使用权益
jsonObject.put("price", "1");//价格
jsonObject.put("underlinePrice", "10");//划线价
jsonObject.put("purchaseNumberLimit", "-1");//购买数量限制
jsonObject.put("xcxSaleStatus", "YES");//小程序是否售卖
jsonObject.put("creatorId", xmAppApi.getLoginInfo().getAdminId());
jsonObject.put("shelfState", "YES");//卡启用状态
jsonObject.put("brandId", xmAppApi.getLoginInfo().getBrandId());
jsonObject.put("studioId", xmAppApi.getLoginInfo().getStudioId());
jsonObject.put("description", "{\"items\":[{\"content\":\"自动化创建的卡\",\"aspect\":\"\",\"type\":\"TEXT\"}]}");
jsonObject.put("operatorId", xmAppApi.getLoginInfo().getAdminId());
dataApi.doRequest(RequestType.JSON, dataparams, jsonObject.toJSONString(), dataheadrs).assetsSuccess(true);
JSONObject response=dataApi.getBodyInJSON();
return response;
}
/**
* @param
* @description:会员卡列表
* @author: yangjian
**/
public JSONObject fetchPageOfMemberCard(DataUserInfo...dataUserInfos) {
dataApi.setApiModule(ApiModule.Polar_Card)
.setApiName("API_fetchPageOfMemberCard")
.setTerminal(Terminal.B);
super.beforeDataRequest(dataUserInfos);
JSONObject jsonObject = new JSONObject();
//jsonObject.put("shelfState",shelfState);//启用状态
//jsonObject.put("xcxSaleStatus",xcxSaleStatus);//售卖状态
jsonObject.put("current",0);
jsonObject.put("size",20);
jsonObject.put("studioId", xmAppApi.getLoginInfo().getStudioId());
jsonObject.put("brandId", xmAppApi.getLoginInfo().getBrandId());
jsonObject.put("operatorId", xmAppApi.getLoginInfo().getAdminId());
dataApi.doRequest(RequestType.JSON, dataparams, jsonObject.toJSONString(), dataheadrs).assetsSuccess(true);
JSONObject response=dataApi.getBodyInJSON();
return response;
}
public JSONObject fetchPageOfMemberCard(String courseId,DataUserInfo...dataUserInfos) {
dataApi.setApiModule(ApiModule.Polar_Card)
.setApiName("API_fetchPageOfMemberCard")
.setTerminal(Terminal.B);
super.beforeDataRequest(dataUserInfos);
JSONObject jsonObject = new JSONObject();
//jsonObject.put("shelfState",shelfState);//启用状态
//jsonObject.put("xcxSaleStatus",xcxSaleStatus);//售卖状态
jsonObject.put("courseId",courseId);
jsonObject.put("current",0);
jsonObject.put("size",20);
jsonObject.put("studioId", xmAppApi.getLoginInfo().getStudioId());
jsonObject.put("brandId", xmAppApi.getLoginInfo().getBrandId());
jsonObject.put("operatorId", xmAppApi.getLoginInfo().getAdminId());
dataApi.doRequest(RequestType.JSON, dataparams, jsonObject.toJSONString(), dataheadrs).assetsSuccess(true);
JSONObject response=dataApi.getBodyInJSON();
return response.getJSONObject("result");
}
/**
* @param
* @description:会员卡搜索
* @author: yangjian
**/
public JSONObject testMemberCardcommonSearch(String title, DataUserInfo...dataUserInfos) {
dataApi.setApiModule(ApiModule.Polar_Card)
.setApiName("API_commonSearch")
.setTerminal(Terminal.B);
super.beforeDataRequest(dataUserInfos);
JSONObject jsonObject = new JSONObject();
jsonObject.put("brandId",xmAppApi.getLoginInfo().getBrandId());
jsonObject.put("studioId",xmAppApi.getLoginInfo().getStudioId());
jsonObject.put("title",title);//搜索的卡名
jsonObject.put("operatorId",xmAppApi.getLoginInfo().getAdminId());
dataApi.doRequest(RequestType.JSON, dataparams, jsonObject.toJSONString(), dataheadrs).assetsSuccess(true);
JSONObject response=dataApi.getBodyInJSON();
return response;
}
/**
* @param
* @description:会员卡售卖记录
* @author: yangjian
**/
public JSONObject membercardsearch( DataUserInfo...dataUserInfos) {
dataApi.setApiModule(ApiModule.Polar_Card)
.setApiName("API_membercard_search")
.setTerminal(Terminal.B);
super.beforeDataRequest(dataUserInfos);
JSONObject jsonObject = new JSONObject();
jsonObject.put("current",0);
jsonObject.put("size",20);
jsonObject.put("studioId", xmAppApi.getLoginInfo().getStudioId());
jsonObject.put("brandId", xmAppApi.getLoginInfo().getBrandId());
jsonObject.put("operatorId", xmAppApi.getLoginInfo().getAdminId());
dataApi.doRequest(RequestType.JSON, dataparams, jsonObject.toJSONString(), dataheadrs).assetsSuccess(true);
JSONObject response=dataApi.getBodyInJSON();
return response;
}
/**
* @param
* @description:搜索会员卡售卖记录
* @author: yangjian
**/
public JSONObject commonSearch( String content ,DataUserInfo...dataUserInfos) {
dataApi.setApiModule(ApiModule.Polar_Clue)
.setApiName("API_commonSearch")
.setTerminal(Terminal.B);
super.beforeDataRequest(dataUserInfos);
JSONObject jsonObject = new JSONObject();
jsonObject.put("content",content);
jsonObject.put("studioId", xmAppApi.getLoginInfo().getStudioId());
jsonObject.put("brandId", xmAppApi.getLoginInfo().getBrandId());
jsonObject.put("operatorId", xmAppApi.getLoginInfo().getAdminId());
dataApi.doRequest(RequestType.JSON, dataparams, jsonObject.toJSONString(), dataheadrs).assetsSuccess(true);
JSONObject response=dataApi.getBodyInJSON();
return response;
}
/**
* @param
* @description:会员卡详情
* @author: yangjian
**/
public JSONObject fetchDetailById( String id ,DataUserInfo...dataUserInfos) {
dataApi.setApiModule(ApiModule.Polar_Card)
.setApiName("API_fetchDetailById")
.setTerminal(Terminal.B);
super.beforeDataRequest(dataUserInfos);
JSONObject jsonObject = new JSONObject();
jsonObject.put("id",id);
jsonObject.put("studioId", xmAppApi.getLoginInfo().getStudioId());
jsonObject.put("brandId", xmAppApi.getLoginInfo().getBrandId());
jsonObject.put("operatorId", xmAppApi.getLoginInfo().getAdminId());
dataApi.doRequest(RequestType.JSON, dataparams, jsonObject.toJSONString(), dataheadrs).assetsSuccess(true);
JSONObject response=dataApi.getBodyInJSON();
return response;
}
/**
* @param
* @description:会员卡售卖记录详情
* @author: yangjian
**/
public JSONObject membercardfindDetailById( String id ,DataUserInfo...dataUserInfos) {
dataApi.setApiModule(ApiModule.Polar_Card)
.setApiName("API_membercard_findDetailById")
.setTerminal(Terminal.B);
super.beforeDataRequest(dataUserInfos);
JSONObject jsonObject = new JSONObject();
jsonObject.put("id", id);
jsonObject.put("studioId", xmAppApi.getLoginInfo().getStudioId());
jsonObject.put("brandId", xmAppApi.getLoginInfo().getBrandId());
jsonObject.put("operatorId", xmAppApi.getLoginInfo().getAdminId());
dataApi.doRequest(RequestType.JSON, dataparams, jsonObject.toJSONString(), dataheadrs).assetsSuccess(true);
JSONObject response = dataApi.getBodyInJSON();
return response;
}
/**
* @description:查询会员可用于约课的会员卡
* @author: xuyamei
* @date: 2024/6/23 12:38
* @param courseId:课程id
* @param courseType:课程类型 GROUP_CLASS
* @param accountType:账户类型 MEMBER
* @param memberId 会员id
* @param reserveDate:约课时间
* @param dataUserInfos
* @return: com.alibaba.fastjson.JSONArray
**/
public JSONArray listUserReservableBenefit(String courseId,String courseType,String accountType,String memberId,long reserveDate,DataUserInfo...dataUserInfos) {
dataApi.setApiModule(ApiModule.Polar_Card)
.setApiName("API_listUserReservableBenefit")
.setTerminal(Terminal.B);
super.beforeDataRequest(dataUserInfos);
JSONObject jsonObject = new JSONObject();
jsonObject.put("courseId", courseId);
jsonObject.put("courseType", courseType);
jsonObject.put("accountType", accountType);
jsonObject.put("memberId", memberId);
jsonObject.put("reserveDate", reserveDate);
jsonObject.put("studioId", dataApi.getLoginInfo().getStudioId());
jsonObject.put("brandId", dataApi.getLoginInfo().getBrandId());
jsonObject.put("operatorId", dataApi.getLoginInfo().getAdminId());
dataApi.doRequest(RequestType.JSON, dataparams, jsonObject.toJSONString(), dataheadrs).assetsSuccess(true);
return dataApi.getBodyInJSON().getJSONArray("result");
}
/**
* @param
* @description:手动扣次
* @author: yangjian
**/
public JSONObject manualDeduct( String benefitId ,String memberCardId ,DataUserInfo...dataUserInfos) {
dataApi.setApiModule(ApiModule.Polar_Card)
.setApiName("API_manualDeduct")
.setTerminal(Terminal.B);
super.beforeDataRequest(dataUserInfos);
JSONObject jsonObject = new JSONObject();
jsonObject.put("balance",1);
jsonObject.put("benefitId", benefitId);
jsonObject.put("memberCardId", memberCardId);
jsonObject.put("memo", "自动化手动扣次");
jsonObject.put("operatorId", xmAppApi.getLoginInfo().getAdminId());
jsonObject.put("brandId", xmAppApi.getLoginInfo().getBrandId());
jsonObject.put("studioId", xmAppApi.getLoginInfo().getStudioId());
dataApi.doRequest(RequestType.JSON, dataparams, jsonObject.toJSONString(), dataheadrs).assetsSuccess(true);
JSONObject response=dataApi.getBodyInJSON();
return response;
}
/**
* @param
* @description:会员卡消耗记录
* @author: yangjian
**/
public JSONObject fetchPageOfConsumeRecord( String benefitId ,String memberCardId ,DataUserInfo...dataUserInfos) {
dataApi.setApiModule(ApiModule.Polar_Card)
.setApiName("API_fetchPageOfConsumeRecord")
.setTerminal(Terminal.B);
super.beforeDataRequest(dataUserInfos);
JSONObject jsonObject = new JSONObject();
jsonObject.put("current",0);
jsonObject.put("size",20);
jsonObject.put("benefitId",benefitId);
jsonObject.put("memberCardId",memberCardId);
jsonObject.put("brandId",xmAppApi.getLoginInfo().getBrandId());
jsonObject.put("studioId",xmAppApi.getLoginInfo().getStudioId());
jsonObject.put("operatorId",xmAppApi.getLoginInfo().getAdminId());
dataApi.doRequest(RequestType.JSON, dataparams, jsonObject.toJSONString(), dataheadrs).assetsSuccess(true);
JSONObject response=dataApi.getBodyInJSON();
return response;
}
/**
* @param
* @description:修改会员卡有效期
* @author: yangjian
**/
public JSONObject modifyExpireDate( String benefitId ,String memberCardId ,DataUserInfo...dataUserInfos) {
dataApi.setApiModule(ApiModule.Polar_Card)
.setApiName("API_modifyExpireDate")
.setTerminal(Terminal.B);
super.beforeDataRequest(dataUserInfos);
JSONObject jsonObject = new JSONObject();
jsonObject.put("confirm",false);
jsonObject.put("expireDate", TimeUtils.getTodayTime());
jsonObject.put("memo","自动化修改会员卡有效期");
jsonObject.put("benefitId",benefitId);
jsonObject.put("memberCardId",memberCardId);
jsonObject.put("brandId",xmAppApi.getLoginInfo().getBrandId());
jsonObject.put("studioId",xmAppApi.getLoginInfo().getStudioId());
jsonObject.put("operatorId",xmAppApi.getLoginInfo().getAdminId());
dataApi.doRequest(RequestType.JSON, dataparams, jsonObject.toJSONString(), dataheadrs).assetsSuccess(true);
JSONObject response=dataApi.getBodyInJSON();
return response;
}
/**
* @param
* @description:会员卡停卡
* @author: yangjian
**/
public JSONObject membercard_suspend( String benefitId ,String memberCardId ,DataUserInfo...dataUserInfos) {
dataApi.setApiModule(ApiModule.Polar_Card)
.setApiName("API_membercard_suspend")
.setTerminal(Terminal.B);
super.beforeDataRequest(dataUserInfos);
JSONObject jsonObject = new JSONObject();
jsonObject.put("planRestoreDate", TimeUtils.getAfterDayDate(1));//停卡到第二天
jsonObject.put("memo","自动化停卡");
jsonObject.put("benefitId",benefitId);
jsonObject.put("memberCardId",memberCardId);
jsonObject.put("brandId",xmAppApi.getLoginInfo().getBrandId());
jsonObject.put("studioId",xmAppApi.getLoginInfo().getStudioId());
jsonObject.put("operatorId",xmAppApi.getLoginInfo().getAdminId());
dataApi.doRequest(RequestType.JSON, dataparams, jsonObject.toJSONString(), dataheadrs).assetsSuccess(true);
JSONObject response=dataApi.getBodyInJSON();
return response;
}
/**
* @param
* @description:会员卡查看编辑记录
* @author: yangjian
**/
public JSONObject fetchPageOfHistory( String memberCardId ,DataUserInfo...dataUserInfos) {
dataApi.setApiModule(ApiModule.Polar_Card)
.setApiName("API_fetchPageOfHistory")
.setTerminal(Terminal.B);
super.beforeDataRequest(dataUserInfos);
JSONObject jsonObject = new JSONObject();
jsonObject.put("memberCardId",memberCardId);
jsonObject.put("current",0);
jsonObject.put("size",20);
jsonObject.put("brandId",xmAppApi.getLoginInfo().getBrandId());
jsonObject.put("studioId",xmAppApi.getLoginInfo().getStudioId());
jsonObject.put("operatorId",xmAppApi.getLoginInfo().getAdminId());
dataApi.doRequest(RequestType.JSON, dataparams, jsonObject.toJSONString(), dataheadrs).assetsSuccess(true);
JSONObject response=dataApi.getBodyInJSON();
return response;
}
}
package com.xiaomai.cases.polar.memberCard;
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 com.xiaomai.utils.XMJSONPath;
import org.testng.annotations.BeforeMethod;
import org.testng.annotations.Test;
public class TestCancelSuspend extends XMBaseTest {
@BeforeMethod
public void beforeTest(){
xmAppApi.setApiModule(ApiModule.Polar_Card)
.setApiName("API_cancelSuspend")
.setLoginUser(LoginAccount.GYM_PROD)
.setTerminal(Terminal.B);
dal.setCase_owner("yj")
.setCase_name(Thread.currentThread().getStackTrace()[1].getFileName().split("\\.")[0]);
super.beforeTest();
}
@Test(description = "会员卡取消停用")
public void testcancelSuspend() {
CardTools Cardtools = new CardTools();
Cardtools.membercardsearch();
String benefitId = XMJSONPath.readPath(dataApi.getApi_response(), "$.result.records[0].balanceBenefitList[0].id");
String memberCardId = XMJSONPath.readPath(dataApi.getApi_response(), "$.result.records[0].id");//拿售卖记录第一张会员卡的ID;
Cardtools.modifyExpireDate(benefitId,memberCardId);//修改有效期
Cardtools.membercard_suspend(benefitId,memberCardId);//会员卡停卡
JSONObject jsonObject = new JSONObject();
jsonObject.put("memo","自动化取消停卡");
jsonObject.put("memberCardId",memberCardId);
jsonObject.put("brandId",xmAppApi.getLoginInfo().getBrandId());
jsonObject.put("studioId",xmAppApi.getLoginInfo().getStudioId());
jsonObject.put("operatorId",xmAppApi.getLoginInfo().getAdminId());
xmAppApi.doRequest(RequestType.JSON, params, jsonObject.toJSONString(), headers).assetsSuccess(true);
}
}
package com.xiaomai.cases.polar.memberCard;
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 com.xiaomai.utils.XMJSONPath;
import org.testng.annotations.BeforeMethod;
import org.testng.annotations.Test;
public class TestDiscardManualDeduct extends XMBaseTest {
@BeforeMethod
public void beforeTest(){
xmAppApi.setApiModule(ApiModule.Polar_Card)
.setApiName("API_discardManualDeduct")
.setLoginUser(LoginAccount.GYM_PROD)
.setTerminal(Terminal.B);
dal.setCase_owner("yj")
.setCase_name(Thread.currentThread().getStackTrace()[1].getFileName().split("\\.")[0]);
super.beforeTest();
}
@Test(description = "撤销手动扣次")
public void testDiscardManualDeduct() {
CardTools Cardtools = new CardTools();
Cardtools.membercardsearch();
String benefitId = XMJSONPath.readPath(dataApi.getApi_response(), "$.result.records[0].balanceBenefitList[0].id");
String memberCardId = XMJSONPath.readPath(dataApi.getApi_response(), "$.result.records[0].id");//拿售卖记录第一张会员卡的ID;
Cardtools.manualDeduct(benefitId,memberCardId);//手动扣次
Cardtools.fetchPageOfConsumeRecord(benefitId,memberCardId);
String consumeRecordId=XMJSONPath.readPath(dataApi.getApi_response(), "$.result.records[0].id");//
JSONObject jsonObject = new JSONObject();
jsonObject.put("consumeRecordId",consumeRecordId);
jsonObject.put("memberCardId",memberCardId);
jsonObject.put("brandId",xmAppApi.getLoginInfo().getBrandId());
jsonObject.put("studioId",xmAppApi.getLoginInfo().getStudioId());
jsonObject.put("operatorId",xmAppApi.getLoginInfo().getAdminId());
xmAppApi.doRequest(RequestType.JSON, params, jsonObject.toJSONString(), headers).assetsSuccess(true);
}
}
package com.xiaomai.cases.polar.memberCard;
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 com.xiaomai.utils.XMJSONPath;
import org.testng.annotations.BeforeMethod;
import org.testng.annotations.Test;
public class TestFetchPageOfConsumeRecord extends XMBaseTest {
@BeforeMethod
public void beforeTest(){
xmAppApi.setApiModule(ApiModule.Polar_Card)
.setApiName("API_fetchPageOfConsumeRecord")
.setLoginUser(LoginAccount.GYM_PROD)
.setTerminal(Terminal.B);
dal.setCase_owner("yj")
.setCase_name(Thread.currentThread().getStackTrace()[1].getFileName().split("\\.")[0]);
super.beforeTest();
}
@Test(description = "查看售卖记录-会员卡消耗记录")
public void testfetchPageOfConsumeRecord() {
CardTools Cardtools = new CardTools();
Cardtools.membercardsearch();
String memberCardId = XMJSONPath.readPath(dataApi.getApi_response(), "$.result.records[0].id");//拿售卖记录第一张会员卡的ID
String benefitId = XMJSONPath.readPath(dataApi.getApi_response(), "$.result.records[0].balanceBenefitList[0].id");
JSONObject jsonObject = new JSONObject();
jsonObject.put("current",0);
jsonObject.put("size",20);
jsonObject.put("benefitId",benefitId);
jsonObject.put("memberCardId",memberCardId);
jsonObject.put("brandId",xmAppApi.getLoginInfo().getBrandId());
jsonObject.put("studioId",xmAppApi.getLoginInfo().getStudioId());
jsonObject.put("operatorId",xmAppApi.getLoginInfo().getAdminId());
xmAppApi.doRequest(RequestType.JSON, params, jsonObject.toJSONString(), headers).assetsSuccess(true);
}
}
package com.xiaomai.cases.polar.memberCard;
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 com.xiaomai.utils.XMJSONPath;
import org.testng.annotations.BeforeMethod;
import org.testng.annotations.Test;
public class TestFetchPageOfHistory extends XMBaseTest {
@BeforeMethod
public void beforeTest(){
xmAppApi.setApiModule(ApiModule.Polar_Card)
.setApiName("API_fetchPageOfHistory")
.setLoginUser(LoginAccount.GYM_PROD)
.setTerminal(Terminal.B);
dal.setCase_owner("yj")
.setCase_name(Thread.currentThread().getStackTrace()[1].getFileName().split("\\.")[0]);
super.beforeTest();
}
@Test(description = "查看会员卡编辑记录")
public void testfetchPageOfHistory() {
CardTools Cardtools = new CardTools();
Cardtools.fetchPageOfMemberCard();
String memberCardId = XMJSONPath.readPath(dataApi.getApi_response(), "$.result.records[0].id");
JSONObject jsonObject = new JSONObject();
jsonObject.put("current",0);
jsonObject.put("size",20);
jsonObject.put("memberCardId",memberCardId);
jsonObject.put("brandId",xmAppApi.getLoginInfo().getBrandId());
jsonObject.put("studioId",xmAppApi.getLoginInfo().getStudioId());
jsonObject.put("operatorId",xmAppApi.getLoginInfo().getAdminId());
xmAppApi.doRequest(RequestType.JSON, params, jsonObject.toJSONString(), headers).assetsSuccess(true);
}
}
package com.xiaomai.cases.polar.memberCard;
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 com.xiaomai.utils.XMJSONPath;
import org.testng.annotations.BeforeMethod;
import org.testng.annotations.Test;
public class TestFetchPageOfOperateRecord extends XMBaseTest {
@BeforeMethod
public void beforeTest(){
xmAppApi.setApiModule(ApiModule.Polar_Card)
.setApiName("API_fetchPageOfOperateRecord")
.setLoginUser(LoginAccount.GYM_PROD)
.setTerminal(Terminal.B);
dal.setCase_owner("yj")
.setCase_name(Thread.currentThread().getStackTrace()[1].getFileName().split("\\.")[0]);
super.beforeTest();
}
@Test(description = "售卖记录详情-查看变动记录")
public void testFetchPageOfOperateRecord() {
CardTools Cardtools = new CardTools();
Cardtools.membercardsearch();
String memberCardId = XMJSONPath.readPath(dataApi.getApi_response(), "$.result.records[0].id");//拿售卖记录第一张会员卡的ID
JSONObject jsonObject = new JSONObject();
jsonObject.put("current",0);
jsonObject.put("size",20);
jsonObject.put("memberCardId",memberCardId);
jsonObject.put("brandId",xmAppApi.getLoginInfo().getBrandId());
jsonObject.put("studioId",xmAppApi.getLoginInfo().getStudioId());
jsonObject.put("operatorId",xmAppApi.getLoginInfo().getAdminId());
xmAppApi.doRequest(RequestType.JSON, params, jsonObject.toJSONString(), headers).assetsSuccess(true);
}
}
package com.xiaomai.cases.polar.memberCard;
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 com.xiaomai.utils.XMJSONPath;
import org.testng.annotations.BeforeMethod;
import org.testng.annotations.Test;
import java.util.ArrayList;
import java.util.List;
public class TestFetchUserCardList extends XMBaseTest {
@BeforeMethod
public void beforeTest(){
xmAppApi.setApiModule(ApiModule.Polar_Card)
.setApiName("API_fetchUserCardList")
.setLoginUser(LoginAccount.GYM_PROD)
.setTerminal(Terminal.B);
dal.setCase_owner("yj")
.setCase_name(Thread.currentThread().getStackTrace()[1].getFileName().split("\\.")[0]);
super.beforeTest();
}
@Test(description = "查看会员名下的已购会员卡")
public void testfetchUserCardList() {
JSONObject jsonObject = new JSONObject();
List memberCardStateList = new ArrayList();
memberCardStateList.add("UN_ACTIVE");
memberCardStateList.add("NORMAL");
memberCardStateList.add("SUSPEND");
jsonObject.put("accountType","MEMBER");
jsonObject.put("memberId","1801173772541014017");//后要变成会员id的变量
jsonObject.put("memberCardStateList",memberCardStateList);
jsonObject.put("brandId",xmAppApi.getLoginInfo().getBrandId());
jsonObject.put("studioId",xmAppApi.getLoginInfo().getStudioId());
jsonObject.put("operatorId",xmAppApi.getLoginInfo().getAdminId());
xmAppApi.doRequest(RequestType.JSON, params, jsonObject.toJSONString(), headers).assetsSuccess(true);
}
}
package com.xiaomai.cases.polar.memberCard;
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 com.xiaomai.utils.XMJSONPath;
import org.testng.annotations.BeforeMethod;
import org.testng.annotations.Test;
public class TestFindHistoryDetailById extends XMBaseTest {
@BeforeMethod
public void beforeTest(){
xmAppApi.setApiModule(ApiModule.Polar_Card)
.setApiName("API_findHistoryDetailById")
.setLoginUser(LoginAccount.GYM_PROD)
.setTerminal(Terminal.B);
dal.setCase_owner("yj")
.setCase_name(Thread.currentThread().getStackTrace()[1].getFileName().split("\\.")[0]);
super.beforeTest();
}
@Test(description = "查看会员卡编辑记录-会员卡详情")
public void testfindHistoryDetailById() {
CardTools Cardtools = new CardTools();
Cardtools.fetchPageOfMemberCard();
String memberCardId = XMJSONPath.readPath(dataApi.getApi_response(), "$.result.records[0].id");//拿售卖记录第一张会员卡的ID
Cardtools.fetchPageOfHistory(memberCardId);
String id = XMJSONPath.readPath(dataApi.getApi_response(), "$.result.records[0].snapshotId");//第一条编辑记录
JSONObject jsonObject = new JSONObject();
jsonObject.put("id",id);
jsonObject.put("brandId",xmAppApi.getLoginInfo().getBrandId());
jsonObject.put("studioId",xmAppApi.getLoginInfo().getStudioId());
jsonObject.put("operatorId",xmAppApi.getLoginInfo().getAdminId());
xmAppApi.doRequest(RequestType.JSON, params, jsonObject.toJSONString(), headers).assetsSuccess(true);
}
}
package com.xiaomai.cases.polar.memberCard;
import com.alibaba.fastjson.JSONObject;
import com.xiaomai.cases.polar.clue.MemberTools;
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;
public class TestMemberCardSearch extends XMBaseTest {
@BeforeMethod
public void beforeTest(){
xmAppApi.setApiModule(ApiModule.Polar_Card)
.setApiName("API_commonSearch")
.setLoginUser(LoginAccount.GYM_PROD)
.setTerminal(Terminal.B);
dal.setCase_owner("yj")
.setCase_name(Thread.currentThread().getStackTrace()[1].getFileName().split("\\.")[0]);
super.beforeTest();
}
@Test(description = "会员卡列表搜索")
public void testMemberCardcommonSearch() {
CardTools Cardtools = new CardTools();
Cardtools.memberCardCreate("次卡-自动化会员卡"+ RandomStringUtil.randomString(3));//创建随机的名的次卡
Cardtools.fetchPageOfMemberCard();
String title = XMJSONPath.readPath(dataApi.getApi_response(), "$.result.records[0].title");
JSONObject jsonObject = new JSONObject();
jsonObject.put("brandId",xmAppApi.getLoginInfo().getBrandId());
jsonObject.put("studioId",xmAppApi.getLoginInfo().getStudioId());
jsonObject.put("title",title);//这里需要搜索新创建的会员卡
jsonObject.put("operatorId",xmAppApi.getLoginInfo().getAdminId());
xmAppApi.doRequest(RequestType.JSON, params, jsonObject.toJSONString(), headers).assetsSuccess(true);
}
}
package com.xiaomai.cases.polar.memberCard;
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.XMBaseTest;
import com.xiaomai.utils.XMJSONPath;
import org.testng.annotations.BeforeMethod;
import org.testng.annotations.Test;
public class TestModifySharers extends XMBaseTest {
@BeforeMethod
public void beforeTest(){
xmAppApi.setApiModule(ApiModule.Polar_Card)
.setApiName("API_modifySharers")
.setLoginUser(LoginAccount.GYM_PROD)
.setTerminal(Terminal.B);
dal.setCase_owner("yj")
.setCase_name(Thread.currentThread().getStackTrace()[1].getFileName().split("\\.")[0]);
super.beforeTest();
}
@Test(description = "添加移除共享人")
public void testmodifySharers() {
CardTools Cardtools = new CardTools();
Cardtools.membercardsearch();
String memberCardId = XMJSONPath.readPath(dataApi.getApi_response(), "$.result.records[0].id");//拿售卖记录第一张会员卡的ID;
JSONArray sharerIds=new JSONArray();
sharerIds.add("1807334217474027521");
JSONObject jsonObject = new JSONObject();
jsonObject.put("sharerIds",sharerIds);
jsonObject.put("memberCardId",memberCardId);
jsonObject.put("brandId",xmAppApi.getLoginInfo().getBrandId());
jsonObject.put("studioId",xmAppApi.getLoginInfo().getStudioId());
jsonObject.put("operatorId",xmAppApi.getLoginInfo().getAdminId());
xmAppApi.doRequest(RequestType.JSON, params, jsonObject.toJSONString(), headers).assetsSuccess(true);
}
@Test(description = "移除移除共享人")
public void testmodifySharers1() {
CardTools Cardtools = new CardTools();
Cardtools.membercardsearch();
String memberCardId = XMJSONPath.readPath(dataApi.getApi_response(), "$.result.records[0].id");//拿售卖记录第一张会员卡的ID;
//JSONArray sharerIds=new JSONArray();
//sharerIds.add();
JSONObject jsonObject = new JSONObject();
//jsonObject.put("sharerIds",sharerIds);//空共享人
jsonObject.put("memberCardId",memberCardId);
jsonObject.put("brandId",xmAppApi.getLoginInfo().getBrandId());
jsonObject.put("studioId",xmAppApi.getLoginInfo().getStudioId());
jsonObject.put("operatorId",xmAppApi.getLoginInfo().getAdminId());
xmAppApi.doRequest(RequestType.JSON, params, jsonObject.toJSONString(), headers).assetsSuccess(true);
}
}
package com.xiaomai.cases.polar.memberCard;
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 com.xiaomai.utils.XMJSONPath;
import org.testng.annotations.BeforeMethod;
import org.testng.annotations.Test;
public class TestModifyShelfState extends XMBaseTest {
@BeforeMethod
public void beforeTest(){
xmAppApi.setApiModule(ApiModule.Polar_Card)
.setApiName("API_modifyShelfState")
.setLoginUser(LoginAccount.GYM_PROD)
.setTerminal(Terminal.B);
dal.setCase_owner("yj")
.setCase_name(Thread.currentThread().getStackTrace()[1].getFileName().split("\\.")[0]);
super.beforeTest();
}
@Test(description = "停用会员卡")
public void testmodifyShelfState() {
CardTools Cardtools = new CardTools();
Cardtools.fetchPageOfMemberCard();
String memberCardId = XMJSONPath.readPath(dataApi.getApi_response(), "$.result.records[0].id");
JSONObject jsonObject = new JSONObject();
jsonObject.put("shelfState","NO");
jsonObject.put("memberCardId",memberCardId);
jsonObject.put("brandId",xmAppApi.getLoginInfo().getBrandId());
jsonObject.put("studioId",xmAppApi.getLoginInfo().getStudioId());
jsonObject.put("operatorId",xmAppApi.getLoginInfo().getAdminId());
xmAppApi.doRequest(RequestType.JSON, params, jsonObject.toJSONString(), headers).assetsSuccess(true);
}
@Test(description = "启用会员卡")
public void testmodifyShelfState1() {
CardTools Cardtools = new CardTools();
Cardtools.fetchPageOfMemberCard();
String memberCardId = XMJSONPath.readPath(dataApi.getApi_response(), "$.result.records[0].id");
JSONObject jsonObject = new JSONObject();
jsonObject.put("shelfState","YES");
jsonObject.put("memberCardId",memberCardId);
jsonObject.put("brandId",xmAppApi.getLoginInfo().getBrandId());
jsonObject.put("studioId",xmAppApi.getLoginInfo().getStudioId());
jsonObject.put("operatorId",xmAppApi.getLoginInfo().getAdminId());
xmAppApi.doRequest(RequestType.JSON, params, jsonObject.toJSONString(), headers).assetsSuccess(true);
}
}
package com.xiaomai.cases.polar.memberCard;
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 com.xiaomai.utils.XMJSONPath;
import org.testng.annotations.BeforeMethod;
import org.testng.annotations.Test;
public class TestModifyXcxSaleState extends XMBaseTest {
@BeforeMethod
public void beforeTest(){
xmAppApi.setApiModule(ApiModule.Polar_Card)
.setApiName("API_modifyXcxSaleState")
.setLoginUser(LoginAccount.GYM_PROD)
.setTerminal(Terminal.B);
dal.setCase_owner("yj")
.setCase_name(Thread.currentThread().getStackTrace()[1].getFileName().split("\\.")[0]);
super.beforeTest();
}
@Test(description = "关闭会员卡售卖")
public void testmodifyShelfState() {
CardTools Cardtools = new CardTools();
Cardtools.fetchPageOfMemberCard();
String memberCardId = XMJSONPath.readPath(dataApi.getApi_response(), "$.result.records[0].id");
JSONObject jsonObject = new JSONObject();
jsonObject.put("xcxSaleState","NO");
jsonObject.put("memberCardId",memberCardId);
jsonObject.put("brandId",xmAppApi.getLoginInfo().getBrandId());
jsonObject.put("studioId",xmAppApi.getLoginInfo().getStudioId());
jsonObject.put("operatorId",xmAppApi.getLoginInfo().getAdminId());
xmAppApi.doRequest(RequestType.JSON, params, jsonObject.toJSONString(), headers).assetsSuccess(true);
}
@Test(description = "开启会员卡售卖")
public void testmodifyShelfState1() {
CardTools Cardtools = new CardTools();
Cardtools.fetchPageOfMemberCard();
String memberCardId = XMJSONPath.readPath(dataApi.getApi_response(), "$.result.records[0].id");
JSONObject jsonObject = new JSONObject();
jsonObject.put("xcxSaleState","YES");
jsonObject.put("memberCardId",memberCardId);
jsonObject.put("brandId",xmAppApi.getLoginInfo().getBrandId());
jsonObject.put("studioId",xmAppApi.getLoginInfo().getStudioId());
jsonObject.put("operatorId",xmAppApi.getLoginInfo().getAdminId());
xmAppApi.doRequest(RequestType.JSON, params, jsonObject.toJSONString(), headers).assetsSuccess(true);
}
}
package com.xiaomai.cases.polar.memberCard;
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 com.xiaomai.utils.XMJSONPath;
import org.testng.annotations.BeforeMethod;
import org.testng.annotations.Test;
import java.util.ArrayList;
import java.util.List;
public class TestTenantMemberCard_update extends XMBaseTest {
@BeforeMethod
public void beforeTest(){
xmAppApi.setApiModule(ApiModule.Polar_Card)
.setApiName("API_tenantMemberCard_update")
.setLoginUser(LoginAccount.GYM_PROD)
.setTerminal(Terminal.B);
dal.setCase_owner("yj")
.setCase_name(Thread.currentThread().getStackTrace()[1].getFileName().split("\\.")[0]);
super.beforeTest();
}
@Test(description = "编辑会员卡")
public void testmodifySharers() {
CardTools Cardtools = new CardTools();
Cardtools.memberCardCreate("次卡-自动化会员卡"+ RandomStringUtil.randomString(3));//创建随机的名的次卡
Cardtools.fetchPageOfMemberCard();
String memberCardId = XMJSONPath.readPath(dataApi.getApi_response(), "$.result.records[0].id");
JSONArray activatePatternList=new JSONArray();
activatePatternList.add("PURCHASE");
activatePatternList.add("SPECIFIC_DATE");
activatePatternList.add("FIRST_USED");
List benefitList = new ArrayList();
//List itemList = new ArrayList();
//itemList.add("");
JSONObject Object = new JSONObject();
Object.put("identifier", xmAppApi.getLoginInfo().getUser());
Object.put("benefitType", "BALANCE");
Object.put("targetScope", "GROUP_CLASS_AND_PERSONAL_COURSE");
Object.put("balance", "30");
Object.put("reserveLimitType", "UN_LIMIT");
Object.put("reserveLimitNumber", 0);
Object.put("defaultConsumeBalance", 1);
//Object.put("itemList", itemList);
Object.put("targetType", "COURSE");
benefitList.add(Object);
JSONObject jsonObject = new JSONObject();
jsonObject.put("surfaceUrl","https://image.xiaomaiketang.com/xm/internal/HpRiJpFnTC.png");//会员卡封面图片
jsonObject.put("surfaceCornerMark","自动化标签");
jsonObject.put("title","" );//编辑无法修改会员卡名称
jsonObject.put("validPeriod", "3");//有效期-3天
jsonObject.put("activatePatternList", activatePatternList);//三种生效方式
jsonObject.put("sharePeopleLimit", "2");//共享人数
jsonObject.put("benefitList", benefitList);//使用权益
jsonObject.put("price", "1");//价格
jsonObject.put("underlinePrice", "10");//划线价
jsonObject.put("purchaseNumberLimit", "-1");//购买数量限制
jsonObject.put("xcxSaleStatus", "YES");//小程序是否售卖
jsonObject.put("creatorId", xmAppApi.getLoginInfo().getAdminId());
jsonObject.put("shelfState", "YES");//卡启用状态
jsonObject.put("brandId", xmAppApi.getLoginInfo().getBrandId());
jsonObject.put("studioId", xmAppApi.getLoginInfo().getStudioId());
jsonObject.put("description", "{\"items\":[{\"content\":\"自动化编辑的卡\",\"aspect\":\"\",\"type\":\"TEXT\"}]}");
jsonObject.put("operatorId", xmAppApi.getLoginInfo().getAdminId());
jsonObject.put("memberCardId",memberCardId);
xmAppApi.doRequest(RequestType.JSON, params, jsonObject.toJSONString(), headers).assetsSuccess(true);
}
}
package com.xiaomai.cases.polar.reserve;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.xiaomai.client.DataUserInfo;
import com.xiaomai.enums.ApiModule;
import com.xiaomai.enums.RequestType;
import com.xiaomai.enums.Terminal;
import com.xiaomai.utils.XMBaseTest;
import org.springframework.stereotype.Component;
/**
* @BelongsProject: xm-sportstest
* @BelongsPackage: com.xiaomai.cases.polar.reserve
* @Author: xuyamei
* @CreateTime: 2024-06-12 08:36
* @Description: 预约工具类
* @Version: 1.0
*/
@Component("reserveTools")
public class ReserveTools extends XMBaseTest {
/**
* @description: 添加预约
* @author: xuyamei
* @date: 2024/6/12 09:36
* @param areaId 场地
* @param assistantCoachId 助教id
* @param benefitId 会员卡权益id
* @param chiefCoachId 主教id
* @param memberId 会员id
* @param reserveMemberNum 预约人数
* @param scheduleId 课次id
* @param scheduleStartTime 上课时间
* @param dataUserInfos 登录用户信息
* @return: java.lang.String 预约id
**/
public String addReserve(String areaId,String assistantCoachId,String benefitId,String chiefCoachId,String memberId,int reserveMemberNum,String scheduleId,long scheduleStartTime,boolean success,DataUserInfo...dataUserInfos) {
dataApi.setApiModule(ApiModule.Polar_Reserve)
.setApiName("API_addReserve")
.setTerminal(Terminal.B);
super.beforeDataRequest(dataUserInfos);
JSONObject body = new JSONObject();
JSONArray areaIds = new JSONArray(); // 场地,私教约课会用到
if (!areaId.equals("")){
areaIds.add(areaId);
}
body.put("areaIds",areaIds);
JSONArray coachIds = new JSONArray(); // 助教Ids
if (!assistantCoachId.equals("")){
coachIds.add(assistantCoachId);
}
body.put("assistantCoachIds",coachIds);
body.put("benefitId",benefitId); //会员卡权益Id
body.put("brandId", dataApi.getLoginInfo().getBrandId());
body.put("chiefCoachId", chiefCoachId); // 主教id
body.put("memberId", memberId); // 会员id
body.put("operatorId", dataApi.getLoginInfo().getAdminId()); // 操作人id
body.put("studioId", dataApi.getLoginInfo().getStudioId());
body.put("planCheckBalance", 1); // 计划扣除额度
body.put("reserveMemberNum", reserveMemberNum); // 预约人数
body.put("scheduleId", scheduleId); // 课次id
body.put("scheduleStartTime", scheduleStartTime); // 课次id
dataApi.doRequest(RequestType.JSON,dataparams,body.toString(),dataheadrs).assetsSuccess(success);
if (success){
return dataApi.getBodyInJSON().getJSONObject("result").getString("reserveId");
}
return dataApi.getBodyInJSON().toString();
}
/**
* @description:获取会员预约记录列表
* @author: xuyamei
* @date: 2024/6/12 15:26
* @param courseId 课程id
* @param reserveStateSet 预约状态
* @param signState 签到状态
* @param coachId 教练id
* @param scheduleStartTime 上课开始时间
* @param scheduleEndDate 上课结束时间
* @param memberId 会员id
* @param courseType 课程类型 GROUP_CLASS:团课
* @param dataUserInfos
* @return: com.alibaba.fastjson.JSONObject
**/
public JSONArray getPageByMember(String courseId,String reserveStateSet,String signState,String coachId,Long scheduleStartTime,long scheduleEndDate,String memberId,String courseType,DataUserInfo...dataUserInfos){
dataApi.setApiModule(ApiModule.Polar_Reserve)
.setApiName("API_memberReserve_getPageByMember")
.setTerminal(Terminal.B);
super.beforeDataRequest(dataUserInfos);
JSONObject body = new JSONObject();
body.put("current",0);
body.put("size",20);
if (!courseId.equals("")){
body.put("courseId",courseId);
}
if (!reserveStateSet.equals("")){
JSONArray reserveState = new JSONArray();
reserveState.add(reserveStateSet);
body.put("reserveStateSet",reserveState);
}
if (!signState.equals("")){
body.put("signInState",signState);
}
if (!coachId.equals("")){
body.put("coachId",coachId);
}
if (scheduleStartTime != null){
body.put("scheduleStartTime",scheduleStartTime);
body.put("scheduleEndDate",scheduleEndDate);
}
if(!memberId.equals("")){
body.put("memberId",memberId);
}
body.put("courseType",courseType);
body.put("brandId", dataApi.getLoginInfo().getBrandId());
body.put("operatorId", dataApi.getLoginInfo().getAdminId()); // 操作人id
body.put("studioId", dataApi.getLoginInfo().getStudioId());
dataApi.doRequest(RequestType.JSON,dataparams,body.toString(),dataheadrs).assetsSuccess(true);
return dataApi.getBodyInJSON().getJSONObject("result").getJSONArray("records");
}
/**
* @description:预约记录列表
* @author: xuyamei
* @date: 2024/6/13 11:42
* @param courseId 课程id
* @param reserveState 预约状态
* @param signState 签到状态
* @param coachId 教练id
* @param scheduleStartTime 上课开始时间
* @param scheduleEndDate 上课结束时间
* @param memberId 会员id
* @param courseType 课程类型 GROUP_CLASS:团课
* @param dataUserInfos
* @return: com.alibaba.fastjson.JSONArray
**/
public JSONArray getPageByStudio(String courseId,String reserveState,String signState,String coachId,Long scheduleStartTime,Long scheduleEndDate,String memberId,String courseType,DataUserInfo...dataUserInfos){
dataApi.setApiModule(ApiModule.Polar_Reserve)
.setApiName("API_memberReserve_getPageByStudio")
.setTerminal(Terminal.B);
super.beforeDataRequest(dataUserInfos);
JSONObject body = new JSONObject();
body.put("current",0);
body.put("size",20);
if (!courseId.equals("")){
body.put("courseId",courseId);
}
if (!reserveState.equals("")){
body.put("reserveState",reserveState);
}
if (!signState.equals("")){
body.put("signInState",signState);
}
if (!coachId.equals("")){
body.put("coachId",coachId);
}
if (scheduleStartTime != null){
body.put("scheduleStartTime",scheduleStartTime);
body.put("scheduleEndDate",scheduleEndDate);
}
if(!memberId.equals("")){
body.put("memberId",memberId);
}
body.put("courseType",courseType);
body.put("brandId", dataApi.getLoginInfo().getBrandId());
body.put("operatorId", dataApi.getLoginInfo().getAdminId()); // 操作人id
body.put("studioId", dataApi.getLoginInfo().getStudioId());
dataApi.doRequest(RequestType.JSON,dataparams,body.toString(),dataheadrs).assetsSuccess(true);
return dataApi.getBodyInJSON().getJSONObject("result").getJSONArray("records");
}
/**
* @description:根据id获取预约记录信息
* @author: xuyamei
* @date: 2024/6/13 11:51
* @param reserveId: 预约id
* @return:
**/
public JSONObject getDetailById(String reserveId,DataUserInfo...dataUserInfos) {
dataApi.setApiModule(ApiModule.Polar_Reserve)
.setApiName("API_memberReserve_getDetailById")
.setTerminal(Terminal.B);
super.beforeDataRequest(dataUserInfos);
JSONObject body = new JSONObject();
body.put("reserveId",reserveId);
body.put("brandId", dataApi.getLoginInfo().getBrandId());
body.put("operatorId", dataApi.getLoginInfo().getAdminId()); // 操作人id
body.put("studioId", dataApi.getLoginInfo().getStudioId());
dataApi.doRequest(RequestType.JSON,dataparams,body.toString(),dataheadrs).assetsSuccess(true);
return dataApi.getBodyInJSON().getJSONObject("result");
}
/**
* @description:取消预约、取消排队
* @author: xuyamei
* @date: 2024/6/24 09:05
* @param reserveId 预约id
* @param success 取消是否成功
* @return: void
**/
public void cancelMemberReserve(String reserveId,boolean success){
dataApi.setApiModule(ApiModule.Polar_Reserve)
.setApiName("API_memberReserve_cancel")
.setTerminal(Terminal.B);
super.beforeDataRequest();
JSONArray reserveIds = new JSONArray();
reserveIds.add(reserveId);
JSONObject body = new JSONObject();
body.put("reserveIds",reserveIds);
body.put("brandId", dataApi.getLoginInfo().getBrandId());
body.put("operatorId", dataApi.getLoginInfo().getAdminId()); // 操作人id
body.put("studioId", dataApi.getLoginInfo().getStudioId());
dataApi.doRequest(RequestType.JSON,dataparams,body.toString(),dataheadrs).assetsSuccess(success);
}
/**
* @description:排队
* @author: xuyamei
* @date: 2024/6/24 09:12
* @param areaId :场地
* @param chiefCoachId 教练id
* @param memberId 会员id
* @param benefitId 权益id
* @param assistantCoachId 助教id
* @param reserveMemberNum 预约人数
* @param scheduleId 课次id
* @param scheduleStartTime 上课开始时间
* @param success
* @return: com.alibaba.fastjson.JSONObject
**/
public String addToQueue(String areaId,String chiefCoachId,String memberId,String benefitId,String assistantCoachId,int reserveMemberNum,String scheduleId,long scheduleStartTime,boolean success){
dataApi.setApiModule(ApiModule.Polar_Reserve)
.setApiName("API_addToQueue")
.setTerminal(Terminal.B);
super.beforeDataRequest();
JSONObject body = new JSONObject();
JSONArray areaIds = new JSONArray(); // 场地,私教约课会用到
if (!areaId.equals("")){
areaIds.add(areaId);
}
body.put("areaIds",areaIds);
JSONArray coachIds = new JSONArray(); // 助教Ids
if (!assistantCoachId.equals("")){
coachIds.add(assistantCoachId);
}
body.put("assistantCoachIds",coachIds);
body.put("benefitId",benefitId); //会员卡权益Id
body.put("brandId", dataApi.getLoginInfo().getBrandId());
body.put("chiefCoachId", chiefCoachId); // 主教id
body.put("memberId", memberId); // 会员id
body.put("operatorId", dataApi.getLoginInfo().getAdminId()); // 操作人id
body.put("studioId", dataApi.getLoginInfo().getStudioId());
body.put("planCheckBalance", 1); // 计划扣除额度
body.put("reserveMemberNum", reserveMemberNum); // 预约人数
body.put("scheduleId", scheduleId); // 课次id
body.put("scheduleStartTime", scheduleStartTime); // 课次id
dataApi.doRequest(RequestType.JSON,dataparams,body.toString(),dataheadrs).assetsSuccess(success);
if (success){
return dataApi.getBodyInJSON().getJSONObject("result").getString("reserveId");
}
return dataApi.getBodyInJSON().toString();
}
/**
* @description:签到
* @author: xuyamei
* @date: 2024/6/25 09:34
* @param success 是否预约成功 正常传true
* @param reserveId 约课id
* @param leave 是否请假 (团课、私教课都是false)
* @return: void
**/
public void signIn(boolean success,String reserveId,boolean leave){
dataApi.setApiModule(ApiModule.Polar_Reserve)
.setApiName("API_signIn")
.setTerminal(Terminal.B);
super.beforeDataRequest();
JSONObject body = new JSONObject();
body.put("brandId", dataApi.getLoginInfo().getBrandId());
body.put("operatorId", dataApi.getLoginInfo().getAdminId()); // 操作人id
body.put("studioId", dataApi.getLoginInfo().getStudioId());
body.put("leave",leave);
body.put("reserveId",reserveId);
dataApi.doRequest(RequestType.JSON,dataparams,body.toString(),dataheadrs).assetsSuccess(success);
}
}
package com.xiaomai.cases.polar.reserve;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.xiaomai.basetest.BaseTestImpl;
import com.xiaomai.cases.polar.course.CourseTools;
import com.xiaomai.cases.polar.finance.order.OrderTools;
import com.xiaomai.cases.polar.member.Tools;
import com.xiaomai.cases.polar.memberCard.CardTools;
import com.xiaomai.cases.polar.schedule.group.GroupScheduleTools;
import com.xiaomai.cases.polar.setting.courseCategory.CourseCategoryTools;
import com.xiaomai.cases.polar.setting.rules.RuleTools;
import com.xiaomai.enums.ApiModule;
import com.xiaomai.enums.LoginAccount;
import com.xiaomai.enums.Terminal;
import com.xiaomai.utils.CommUtil;
import com.xiaomai.utils.TimeUtils;
import com.xiaomai.utils.XMJSONPath;
import org.springframework.core.annotation.Order;
import org.testng.Assert;
import org.testng.annotations.BeforeClass;
import org.testng.annotations.DataProvider;
import org.testng.annotations.Test;
import javax.annotation.Resource;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.Random;
/**
* @BelongsProject: xm-sportstest
* @BelongsPackage: com.xiaomai.cases.polar.reserve
* @Author: xuyamei
* @CreateTime: 2024-06-11 18:25
* @Description: 添加预约\取消预约
* @Version: 1.0
*/
public class TestAddMemberReserve extends BaseTestImpl {
@Resource(name = "courseCategoryTools")
CourseCategoryTools courseCategoryTools;
@Resource(name = "courseTools")
CourseTools courseTools;
@Resource(name = "reserveTools")
ReserveTools reserveTools;
@Resource(name = "groupScheduleTools")
GroupScheduleTools groupScheduleTools;
@Resource(name = "ruleTools")
RuleTools ruleTools;
OrderTools orderTools = new OrderTools();
CardTools cardTools = new CardTools();
Tools tools = new Tools();
String todayStartTimeTamp = CommUtil.oneKeyGetAddDay(0);
//获取今天结束日期的时间戳
String todayEndDateTimeTamp = CommUtil.getNDayEndTimeTamp(0);
private String ruldId;
private String benefitId;
private String memberId;
private String scheduleId;
private Long startTime;
private String courseId;
private String reserveId;
@BeforeClass
public void beforeTest(){
setTestInfo(ApiModule.Polar_Reserve,"API_addReserve", LoginAccount.GYM_PROD, Terminal.B,"xym");
super.beforeTest();
}
@Test
public void testAddMemberReserve(){
// 查询存量的约课课程
// 查询存量的课程分类
String categoryId = courseCategoryTools.getCourseCategoryPage("瑜伽");
courseId = courseTools.getPersonalOrGroupCourseId("GROUP", "空中瑜伽团课课程", categoryId, "STUDIO", "", 2, 1).getString(0);
// 创建排课
int[] minuteOffset = {60, 120, 180, 240, 300, 360, 420, 480, 540, 600, 660, 720, 780, 840, 900, 960, 1020, 1080, 1140, 1200, 1260};
Random random = new Random();
//1.1-创建排课日程
groupScheduleTools.createGroupRuleSchedule(courseId, xmAppApi.getLoginInfo().getAdminId(), todayStartTimeTamp, todayEndDateTimeTamp, new ArrayList(), new ArrayList(), false, 1,minuteOffset[random.nextInt(20)]);
//1.2-查询排课日程
JSONArray getGroupRuleScheduleList = groupScheduleTools.getGroupRuleScheduleList(courseId, xmAppApi.getLoginInfo().getAdminId());
//统计查询到的目标日程数量
ruldId = XMJSONPath.readPath(getGroupRuleScheduleList.getJSONObject(0), "$.ruleId");
Long scheduleStartTime = TimeUtils.getTodayTime();
Long scheduleEndTime = TimeUtils.getTodayEndTime();
try {
Thread.sleep(2500);
} catch (InterruptedException e) {
throw new RuntimeException(e);
}
// 查询课次id
JSONArray getGroupScheduleTable = groupScheduleTools.getGroupScheduleTable(scheduleStartTime, scheduleEndTime);
for (int i = 0; i < getGroupScheduleTable.size(); i++){
if (getGroupScheduleTable.getJSONObject(i).getString("ruleId").equals(ruldId)){
scheduleId = getGroupScheduleTable.getJSONObject(i).getString("scheduleId");
break;
}
}
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
throw new RuntimeException(e);
}
// 查询存量的学员没有则创建学员,// todo 先手动新建
if (tools.commonSearch("约课学员sandy","NORMAL").getJSONArray("result").size()>0){
memberId = tools.commonSearch("约课学员sandy","NORMAL").getJSONArray("result").getJSONObject(0).getString("id");
}else if (tools.commonSearch("约课学员sandy","HISTORY").getJSONArray("result").size()>0){
memberId = tools.commonSearch("约课学员sandy","HISTORY").getJSONArray("result").getJSONObject(0).getString("id");
}
// 查询是否有可用的会员卡,没有则购买
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());
}
// 查询权益
benefitId = listUserReservableBenefit.getJSONObject(0).getString("benefitId");
// 查询课次详情 查课次的开始时间
JSONObject getScheduleItemDetail = groupScheduleTools.getScheduleItemDetail(scheduleId);
startTime = getScheduleItemDetail.getLongValue("startTime");
// 预约
reserveId = reserveTools.addReserve("","",benefitId,xmAppApi.getLoginInfo().getAdminId(),memberId,1,scheduleId,startTime,true);
try {
Thread.sleep(2000);
} catch (InterruptedException e) {
throw new RuntimeException(e);
}
// check 1:课次学员是否包含该会员
getScheduleItemDetail = groupScheduleTools.getScheduleItemDetail(scheduleId);
JSONArray reserveIds = getScheduleItemDetail.getJSONArray("reserveIds");
boolean success = false;
for (int i = 0; i < reserveIds.size(); i++){
if(reserveIds.getString(i).equals(reserveId)){
success = true;
}
}
Assert.assertTrue(success,"约课后课次详情学员不在课次中");
// check 2: 预约记录是否包含该预约
// check 2.1 学员详情预约记录
JSONArray getPageByMember = reserveTools.getPageByMember(courseId,"SUCCESS","","", startTime,scheduleEndTime,memberId,"GROUP_CLASS");
String[] result = new String[] {"id","benefitId","reserveMemberNum","courseId","courseType","scheduleStartTime","reserveState","scheduleId"};
String[] resultData = new String[] {reserveId,benefitId,"1",courseId,"GROUP_CLASS",startTime+"","SUCCESS",scheduleId};
success = false;
for(int i =0;i<getPageByMember.size();i++){
if (getPageByMember.getJSONObject(i).getString("id").equals(reserveId)){
success = true;
for(int j = 0;j<result.length;j++){
Assert.assertEquals(getPageByMember.getJSONObject(i).getString(result[j]),resultData[j],"约课产生的数据与实际数据不符合"+result[j]+":"+resultData[j]);
}
}
}
Assert.assertTrue(success,"约课后在会员详情页面未查询到相关信息");
// check 2.2 预约记录列表
JSONArray getPageByStudio = reserveTools.getPageByStudio(courseId,"SUCCESS","","",startTime,scheduleEndTime,memberId,"GROUP_CLASS");
success = false;
for(int i =0;i<getPageByStudio.size();i++){
if (getPageByStudio.getJSONObject(i).getString("id").equals(reserveId)){
success = true;
for(int j = 0;j<result.length;j++){
Assert.assertEquals(getPageByStudio.getJSONObject(i).getString(result[j]),resultData[j],"约课产生的数据与实际数据不符合"+result[j]+":"+resultData[j]);
}
Assert.assertEquals(getPageByStudio.getJSONObject(i).getString("memberId"),memberId,"查询的约课数据不是同一个会员");
}
}
Assert.assertTrue(success,"约课后在约课记录没有查询到相关信息");
// check 2.3 预约记录详情
JSONObject getDetailById = reserveTools.getDetailById(reserveId);
for(int j = 0;j<result.length;j++){
Assert.assertEquals(getDetailById.getString(result[j]),resultData[j],"约课产生的数据与实际数据不符合"+result[j]+":"+resultData[j]);
}
Assert.assertEquals(getDetailById.getString("memberId"),memberId,"查询的约课数据不是同一个会员");
// check 4: 会员卡消耗记录中包含该记录锁定
}
// todo 补充修改会员卡有效期然后继续预约
@Test(priority = 1,description = "学员已经在课次中,无需重复添加")
public void testAddMemberReserve2(){
reserveTools.addReserve("","",benefitId,xmAppApi.getLoginInfo().getAdminId(),memberId,1,scheduleId,startTime,false);
String message = dataApi.getBodyInJSON().getString("message");
Assert.assertEquals(message,"预约失败,无需重复添加");
}
@Test(priority = 2)
public void testAddMemberReserve3(){
// 修改课次人数上限为1
groupScheduleTools.editGroupSchedule(scheduleId,startTime,xmAppApi.getLoginInfo().getAdminId(),1,1);
// 修改预约规则不允许排队
JSONObject getRules = ruleTools.getGroupBookingRules(); // 获取场馆团课预约规则
String id = getRules.getString("id"); // 获取规则id
Random random = new Random();
int bookingSeatCount = random.nextInt(10)+1; // 席位
ruleTools.saveGroupBookingRules(id,false,bookingSeatCount,true,true,random.nextInt(30)+10,true,random.nextInt(100)+10,random.nextInt(5)+1,true,random.nextInt(100)+10,"minutes",true,random.nextInt(100)+10,"minutes");
// 新学员 购买卡
String memberId2 = "";
// 查询存量的学员没有则创建学员,// todo 先手动新建
if (tools.commonSearch("约课学员susan","NORMAL").getJSONArray("result").size()>0){
memberId2 = tools.commonSearch("约课学员susan","NORMAL").getJSONArray("result").getJSONObject(0).getString("id");
}else if (tools.commonSearch("约课学员susan","HISTORY").getJSONArray("result").size()>0){
memberId2 = tools.commonSearch("约课学员susan","HISTORY").getJSONArray("result").getJSONObject(0).getString("id");
}else{
memberId2 = tools.commonSearch("约课学员susan","POTENTIAL").getJSONArray("result").getJSONObject(0).getString("id");
}
// 查询是否有可用的会员卡,没有则购买
JSONArray listUserReservableBenefit = cardTools.listUserReservableBenefit(courseId, "GROUP_CLASS", "MEMBER", memberId2, TimeUtils.getTodayTime());
if (listUserReservableBenefit.size() == 0) {
// 购买适用的会员卡
signOrder(courseId, memberId2);
try {
Thread.sleep(2000);
} catch (InterruptedException e) {
throw new RuntimeException(e);
}
listUserReservableBenefit = cardTools.listUserReservableBenefit(courseId, "GROUP_CLASS", "MEMBER", memberId2, TimeUtils.getTodayTime());
}
benefitId = listUserReservableBenefit.getJSONObject(0).getString("benefitId");
reserveTools.addReserve("","",benefitId,xmAppApi.getLoginInfo().getAdminId(),memberId2,1,scheduleId,startTime,true);
String resultCode = dataApi.getBodyInJSON().getJSONObject("result").getString("resultCode");
Assert.assertEquals(resultCode,"FULL_CAPACITY","课次已满员,但是返回的错误code不是FULL_CAPACITY:"+resultCode);
}
@DataProvider
public Object[][] dataProvider(){
return new Object[][]{
{true,"操作成功"},
{false,"已取消预约,无需重复取消"}
};
}
@Test(dataProvider = "dataProvider",priority = 3)
public void testCancelMemberReserve(boolean success,String message){
reserveTools.cancelMemberReserve(reserveId,success);
Assert.assertEquals(dataApi.getBodyInJSON().getString("message").contains(message),true);
try {
Thread.sleep(2000);
} catch (InterruptedException e) {
throw new RuntimeException(e);
}
if (success){
// check 1:课次学员是否包含该会员
JSONObject getScheduleItemDetail = groupScheduleTools.getScheduleItemDetail(scheduleId);
JSONArray reserveIds = getScheduleItemDetail.getJSONArray("reserveIds");
success = false;
for (int i = 0; i < reserveIds.size(); i++){
if(reserveIds.getString(i).equals(reserveId)){
success = true;
}
}
Assert.assertFalse(success,"取消约课后课次详情学员还在课次中");
// check 2:会员详情 - 预约记录已取消
JSONArray getPageByMember = reserveTools.getPageByMember(courseId,"RESERVE_CANCEL","","", startTime,TimeUtils.getTodayEndTime(),memberId,"GROUP_CLASS");
success = false;
for(int i =0;i<getPageByMember.size();i++){
if (getPageByMember.getJSONObject(i).getString("id").equals(reserveId)){
success = true;
}
}
Assert.assertTrue(success,"取消约课后查询取消状态在会员详情页面未查询到相关信息");
// check 3:预约记录列表中已取消
JSONArray getPageByStudio = reserveTools.getPageByStudio(courseId,"RESERVE_CANCEL","","",startTime,TimeUtils.getTodayEndTime(),memberId,"GROUP_CLASS");
success = false;
for(int i =0;i<getPageByStudio.size();i++){
if (getPageByStudio.getJSONObject(i).getString("id").equals(reserveId)){
success = true;
}
}
Assert.assertTrue(success,"取消约课后在约课记录查询取消状态没有查询到相关信息");
// todo 查询会员卡取消后释放锁定次数
}
}
@Test(priority = 4)
public void del(){
// 删除排课数据
groupScheduleTools.delGroupRuleSchedule(ruldId,true);
groupScheduleTools.delGroupScheduleItem(scheduleId);
}
// 买卡
public void signOrder(String courseId,String memberId){
// 查询存量的卡
JSONObject fetchPageOfMemberCard = cardTools.fetchPageOfMemberCard(courseId);
int total = Integer.parseInt(fetchPageOfMemberCard.getString("total"));
String cardId = "";
BigDecimal quantity = new BigDecimal(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 = new BigDecimal(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, price/2,"PURCHASE",
"MEMBER_CARD",memberId,price-price/2,price-price/2,"1");
}
}
}
package com.xiaomai.cases.polar.reserve;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.xiaomai.basetest.BaseTestImpl;
import com.xiaomai.cases.polar.course.CourseTools;
import com.xiaomai.cases.polar.finance.order.OrderTools;
import com.xiaomai.cases.polar.member.Tools;
import com.xiaomai.cases.polar.memberCard.CardTools;
import com.xiaomai.cases.polar.schedule.group.GroupScheduleTools;
import com.xiaomai.cases.polar.setting.courseCategory.CourseCategoryTools;
import com.xiaomai.cases.polar.setting.rules.RuleTools;
import com.xiaomai.enums.ApiModule;
import com.xiaomai.enums.LoginAccount;
import com.xiaomai.enums.Terminal;
import com.xiaomai.utils.CommUtil;
import com.xiaomai.utils.TimeUtils;
import com.xiaomai.utils.XMJSONPath;
import org.testng.Assert;
import org.testng.annotations.BeforeClass;
import org.testng.annotations.DataProvider;
import org.testng.annotations.Test;
import javax.annotation.Resource;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.Random;
/**
* @BelongsProject: xm-sportstest
* @BelongsPackage: com.xiaomai.cases.polar.reserve
* @Author: xuyamei
* @CreateTime: 2024-06-24 09:14
* @Description: 排队
* @Version: 1.0
*/
public class TestAddToQueue extends BaseTestImpl {
@Resource(name = "courseCategoryTools")
CourseCategoryTools courseCategoryTools;
@Resource(name = "courseTools")
CourseTools courseTools;
@Resource(name = "reserveTools")
ReserveTools reserveTools;
@Resource(name = "groupScheduleTools")
GroupScheduleTools groupScheduleTools;
@Resource(name = "ruleTools")
RuleTools ruleTools;
OrderTools orderTools = new OrderTools();
CardTools cardTools = new CardTools();
Tools tools = new Tools();
String todayStartTimeTamp = CommUtil.oneKeyGetAddDay(1);
//获取今天结束日期的时间戳
String todayEndDateTimeTamp = CommUtil.getNDayEndTimeTamp(1);
Long scheduleEndTime = TimeUtils.getTodayEndTime(1);
private String ruldId;
private JSONArray memberId1 = new JSONArray();
private JSONArray memberId2 = new JSONArray();
private JSONArray memberId3 = new JSONArray();
private String scheduleId;
private Long startTime;
private String courseId;
@BeforeClass
public void beforeTest(){
setTestInfo(ApiModule.Polar_Reserve,"API_addReserve", LoginAccount.GYM_PROD, Terminal.B,"xym");
super.beforeTest();
}
@Test(description = "创建团课课次>约课>修改课次容量>约课后进行排队>排队校验")
public void testAddMemberReserve(){
// 创建团课课次
createGroupSchedule();
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
throw new RuntimeException(e);
}
// 创建约课学员A
memberId1 = createMember("约课学员sandy");
// 查询课次详情 查课次的开始时间
JSONObject getScheduleItemDetail = groupScheduleTools.getScheduleItemDetail(scheduleId);
startTime = getScheduleItemDetail.getLongValue("startTime");
// 预约
String reserveId = reserveTools.addReserve("","",memberId1.getString(1),xmAppApi.getLoginInfo().getAdminId(),memberId1.getString(0),1,scheduleId,startTime,true);
memberId1.add(reserveId);
try {
Thread.sleep(2000);
} catch (InterruptedException e) {
throw new RuntimeException(e);
}
// 修改课次容量
groupScheduleTools.editGroupSchedule(scheduleId,startTime,xmAppApi.getLoginInfo().getAdminId(),1,1);
// 预约规则开启允许排队
JSONObject getRules = ruleTools.getGroupBookingRules(); // 获取场馆团课预约规则
String id = getRules.getString("id"); // 获取规则id
Random random = new Random();
int bookingSeatCount = random.nextInt(10)+1; // 席位
ruleTools.saveGroupBookingRules(id,true,bookingSeatCount,true,true,random.nextInt(30)+10,true,random.nextInt(100)+10,random.nextInt(5)+1,false,random.nextInt(100)+10,"minutes",false,random.nextInt(100)+10,"minutes");
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
throw new RuntimeException(e);
}
// 创建排课学员A
memberId2 = createMember("排队学员Amy");
// 排队
reserveId = reserveTools.addToQueue("",xmAppApi.getLoginInfo().getAdminId(),memberId2.getString(0),memberId2.getString(1),"",1,scheduleId,startTime,true);
memberId2.add(reserveId);
// check 1: 预约记录、会员详情预约记录、预约详情数据check
checkReserve(memberId2.getString(0),reserveId,"QUEUE_PROCESS",memberId2.getString(1),"排队");
// todo check 4: 会员卡消耗记录中包含该记录锁定
}
@DataProvider
public Object[][] data(){
return new Object[][]{
{"memberId1","排队失败,无需重复添加,会员已约该课程,不可重复预约"},// 已经在课次排队
{"memberId2","排队失败,无需重复添加,会员已约该课程,不可重复预约"} // 已排队再次排队
};
}
@Test(priority = 1,description = "已经在课次中再次排队",dataProvider = "data")
public void addToQueue2(String member,String message){
String memberId = member.equals(memberId1) ? memberId1.getString(0) : memberId2.getString(0);
String benefitId = member.equals(memberId1) ? memberId1.getString(1) : memberId2.getString(1);
reserveTools.addToQueue("",xmAppApi.getLoginInfo().getAdminId(),memberId,benefitId,"",1,scheduleId,startTime,false);
Assert.assertTrue(dataApi.getBodyInJSON().getString("message").contains(message),"排队提示信息不符合");
}
@Test(priority = 2,description = "在创建一个排队学员,进行排队,排在第二位,将第一位的排队取消,check 学员排在第一,将课次学员取消, check学员在课次中,并排队成功")
public void addToQueue3(){
// 预约规则开启允许排队
JSONObject getRules = ruleTools.getGroupBookingRules(); // 获取场馆团课预约规则
String id = getRules.getString("id"); // 获取规则id
Random random = new Random();
int bookingSeatCount = random.nextInt(10)+1; // 席位
ruleTools.saveGroupBookingRules(id,true,bookingSeatCount,true,true,random.nextInt(30)+10,true,random.nextInt(100)+10,random.nextInt(5)+1,true,random.nextInt(100)+10,"minutes",true,random.nextInt(100)+10,"minutes");
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
throw new RuntimeException(e);
}
// 创建排课学员A
memberId3 = createMember("排队学员yaya");
// 操作1:排队
String reserveId = reserveTools.addToQueue("",xmAppApi.getLoginInfo().getAdminId(),memberId3.getString(0),memberId3.getString(1),"",1,scheduleId,startTime,true);
memberId3.add(reserveId);
// check 1 预约记录详情
JSONObject getDetailById = reserveTools.getDetailById(reserveId);
// 正常的检查,看一下排在第几位
Assert.assertEquals(getDetailById.getString("queueSort"),"2","排队后排队名次应该是第二位");
// 操作2:将第一位"排队学员Amy"的排队取消
reserveTools.cancelMemberReserve(memberId2.getString(2),true);
try {
Thread.sleep(2500);
} catch (InterruptedException e) {
throw new RuntimeException(e);
}
// check 2.1: 排队学员Amy 排队记录已取消
checkReserve(memberId2.getString(0),memberId2.getString(2),"QUEUE_CANCEL",memberId2.getString(1),"排队");
//check 2.2 排队学员yaya 排在第一位
getDetailById = reserveTools.getDetailById(reserveId);
Assert.assertEquals(getDetailById.getString("queueSort"),"1","第一位的学员取消排队后排队名次应该是第1位");
// 操作3:将约课的学员取消
reserveTools.cancelMemberReserve(memberId1.getString(2),true);
try {
Thread.sleep(2500);
} catch (InterruptedException e) {
throw new RuntimeException(e);
}
// check 3.1 取消后,yaya的预约记录check
checkReserve(memberId3.getString(0),reserveId,"SUCCESS",memberId3.getString(1),"从排队->预约");
}
@Test(priority = 3)
public void del(){
// 删除排课数据
groupScheduleTools.delGroupRuleSchedule(ruldId,true);
groupScheduleTools.delGroupScheduleItem(scheduleId);
}
/**
* @description:买卡
* @author: xuyamei
* @date: 2024/6/24 19:42
* @param courseId 课程id
* @param memberId 会员id
* @return: void
**/
public void signOrder(String courseId,String memberId){
// 查询存量的卡
JSONObject fetchPageOfMemberCard = cardTools.fetchPageOfMemberCard(courseId);
int total = Integer.parseInt(fetchPageOfMemberCard.getString("total"));
String cardId = "";
BigDecimal quantity = new BigDecimal(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 = new BigDecimal(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, price/2,"PURCHASE",
"MEMBER_CARD",memberId,price-price/2,price-price/2,"1");
}
}
// 创建团课课次
public void createGroupSchedule(){
// 查询存量的约课课程
// 查询存量的课程分类
String categoryId = courseCategoryTools.getCourseCategoryPage("瑜伽");
courseId = courseTools.getPersonalOrGroupCourseId("GROUP", "空中瑜伽团课课程", categoryId, "STUDIO", "", 2, 1).getString(0);
// 创建排课
int[] minuteOffset = {60, 120, 180, 240, 300, 360, 420, 480, 540, 600, 660, 720, 780, 840, 900, 960, 1020, 1080, 1140, 1200, 1260};
Random random = new Random();
//1.1-创建排课日程
groupScheduleTools.createGroupRuleSchedule(courseId, xmAppApi.getLoginInfo().getAdminId(), todayStartTimeTamp, todayEndDateTimeTamp, new ArrayList(), new ArrayList(), false, 1,minuteOffset[random.nextInt(20)]);
//1.2-查询排课日程
JSONArray getGroupRuleScheduleList = groupScheduleTools.getGroupRuleScheduleList(courseId, xmAppApi.getLoginInfo().getAdminId());
//统计查询到的目标日程数量
ruldId = XMJSONPath.readPath(getGroupRuleScheduleList.getJSONObject(0), "$.ruleId");
Long scheduleEndTime = TimeUtils.getTodayEndTime(1);
try {
Thread.sleep(2500);
} catch (InterruptedException e) {
throw new RuntimeException(e);
}
// 查询课次id
JSONArray getGroupScheduleTable = groupScheduleTools.getGroupScheduleTable(Long.valueOf(todayStartTimeTamp), scheduleEndTime);
for (int i = 0; i < getGroupScheduleTable.size(); i++){
if (getGroupScheduleTable.getJSONObject(i).getString("ruleId").equals(ruldId)){
scheduleId = getGroupScheduleTable.getJSONObject(i).getString("scheduleId");
break;
}
}
}
/**
* @description:创建学员并查询会员是否购买会员卡,如果已购买则查看权益,如果没有则进行购买
* @author: xuyamei
* @date: 2024/6/24 19:43
* @param memberName:会员姓名
* @return:
**/
public JSONArray createMember(String memberName){
String memberId = "";
// 查询存量的学员没有则创建学员,// todo 先手动新建
if (tools.commonSearch(memberName,"NORMAL").getJSONArray("result").size()>0){
memberId = tools.commonSearch(memberName,"NORMAL").getJSONArray("result").getJSONObject(0).getString("id");
}else if (tools.commonSearch(memberName,"HISTORY").getJSONArray("result").size()>0){
memberId = tools.commonSearch(memberName,"HISTORY").getJSONArray("result").getJSONObject(0).getString("id");
}else{
memberId = tools.commonSearch(memberName,"POTENTIAL").getJSONArray("result").getJSONObject(0).getString("id");
}
// 查询是否有可用的会员卡,没有则购买
JSONArray listUserReservableBenefit = cardTools.listUserReservableBenefit(courseId, "GROUP_CLASS", "MEMBER", memberId, Long.parseLong(todayStartTimeTamp));
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, Long.parseLong(todayStartTimeTamp));
}
// 查询权益
String benefitId = listUserReservableBenefit.getJSONObject(0).getString("benefitId");
JSONArray members = new JSONArray();
members.add(memberId);
members.add(benefitId);
return members;
}
/**
* @description:校验预约记录、会员详情预约记录、预约详情内容
* @author: xuyamei
* @date: 2024/6/24 19:32
* @param memberId 会员id
* @param reserveId 预约id
* @param reserveState 预约状态
* @param benefitId 权益id
* @param message :约课/排队/取消预约
* @return: void
**/
public void checkReserve(String memberId,String reserveId,String reserveState,String benefitId,String message){
// check 1.1 学员详情预约记录
JSONArray getPageByMember = reserveTools.getPageByMember(courseId,reserveState,"","", startTime,scheduleEndTime,memberId,"GROUP_CLASS");
// 要检查字段内容:约课id、权益id、预约人数、课程、课程类型、开始时间、预约状态、课次id
String[] result = new String[] {"id","benefitId","reserveMemberNum","courseId","courseType","scheduleStartTime","reserveState","scheduleId"};
String[] resultData = new String[] {reserveId,benefitId,"1",courseId,"GROUP_CLASS",startTime+"",reserveState,scheduleId};
boolean success = false;
for(int i =0;i<getPageByMember.size();i++){
if (getPageByMember.getJSONObject(i).getString("id").equals(reserveId)){
success = true;
for(int j = 0;j<result.length;j++){
Assert.assertEquals(getPageByMember.getJSONObject(i).getString(result[j]),resultData[j],message+"产生的数据与实际数据不符合"+result[j]+":"+resultData[j]);
}
}
}
Assert.assertTrue(success,message+"在会员详情页面未查询到相关信息");
// check 1.2 预约记录列表
JSONArray getPageByStudio = reserveTools.getPageByStudio(courseId,reserveState,"","",startTime,scheduleEndTime,memberId,"GROUP_CLASS");
success = false;
for(int i =0;i<getPageByStudio.size();i++){
if (getPageByStudio.getJSONObject(i).getString("id").equals(reserveId)){
success = true;
for(int j = 0;j<result.length;j++){
Assert.assertEquals(getPageByStudio.getJSONObject(i).getString(result[j]),resultData[j],message+"产生的数据与实际数据不符合"+result[j]+":"+resultData[j]);
}
Assert.assertEquals(getPageByStudio.getJSONObject(i).getString("memberId"),memberId,"查询的约课数据不是同一个会员");
}
}
Assert.assertTrue(success,"排队后在约课记录没有查询到相关信息");
// check 1.3 预约记录详情
JSONObject getDetailById = reserveTools.getDetailById(reserveId);
for(int j = 0;j<result.length;j++){
Assert.assertEquals(getDetailById.getString(result[j]),resultData[j],message+"产生的数据与实际数据不符合"+result[j]+":"+resultData[j]);
}
if(reserveState.equals("QUEUE_PROCESS")){
// 除去正常的检查,看一下排在第几位
Assert.assertEquals(getDetailById.getString("queueSort"),"1","排队后排队名次应该是第一位");
}
Assert.assertEquals(getDetailById.getString("memberId"),memberId,"查询的排队约课数据不是同一个会员");
}
}
package com.xiaomai.cases.polar.reserve;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.xiaomai.basetest.BaseTestImpl;
import com.xiaomai.cases.polar.course.CourseTools;
import com.xiaomai.cases.polar.finance.order.OrderTools;
import com.xiaomai.cases.polar.member.Tools;
import com.xiaomai.cases.polar.memberCard.CardTools;
import com.xiaomai.cases.polar.schedule.group.GroupScheduleTools;
import com.xiaomai.cases.polar.setting.courseCategory.CourseCategoryTools;
import com.xiaomai.enums.ApiModule;
import com.xiaomai.enums.LoginAccount;
import com.xiaomai.enums.Terminal;
import com.xiaomai.utils.CommUtil;
import com.xiaomai.utils.TimeUtils;
import com.xiaomai.utils.XMJSONPath;
import org.testng.Assert;
import org.testng.annotations.BeforeClass;
import org.testng.annotations.DataProvider;
import org.testng.annotations.Test;
import javax.annotation.Resource;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.Random;
/**
* @BelongsProject: xm-sportstest
* @BelongsPackage: com.xiaomai.cases.polar.reserve
* @Author: xuyamei
* @CreateTime: 2024-06-25 09:16
* @Description: 签到
* @Version: 1.0
*/
public class TestSignIn extends BaseTestImpl {
@Resource(name = "courseCategoryTools")
CourseCategoryTools courseCategoryTools;
@Resource(name = "courseTools")
CourseTools courseTools;
@Resource(name = "reserveTools")
ReserveTools reserveTools;
@Resource(name = "groupScheduleTools")
GroupScheduleTools groupScheduleTools;
OrderTools orderTools = new OrderTools();
CardTools cardTools = new CardTools();
Tools tools = new Tools();
String todayStartTimeTamp = CommUtil.oneKeyGetAddDay(-1);
//获取今天结束日期的时间戳
String todayEndDateTimeTamp = CommUtil.getNDayEndTimeTamp(-1);
Long scheduleEndTime = TimeUtils.getTodayEndTime(-1);
private String ruldId;
private JSONArray memberInfo = new JSONArray();
private String scheduleId;
private Long startTime;
private String courseId;
@BeforeClass
public void beforeTest(){
setTestInfo(ApiModule.Polar_Reserve,"API_signIn", LoginAccount.GYM_PROD, Terminal.B,"xym");
super.beforeTest();
}
@Test(description = "签到")
public void testSignIn() {
// 创建团课课次
createGroupSchedule();
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
throw new RuntimeException(e);
}
// 创建点名学员A
memberInfo = createMember("点名学员佳佳");
// 查询课次详情 查课次的开始时间
JSONObject getScheduleItemDetail = groupScheduleTools.getScheduleItemDetail(scheduleId);
startTime = getScheduleItemDetail.getLongValue("startTime");
// 预约
String reserveId = reserveTools.addReserve("","", memberInfo.getString(1),xmAppApi.getLoginInfo().getAdminId(), memberInfo.getString(0),1,scheduleId,startTime,true);
memberInfo.add(reserveId);
try {
Thread.sleep(2000);
} catch (InterruptedException e) {
throw new RuntimeException(e);
}
// 操作签到
reserveTools.signIn(true, memberInfo.getString(2),false);
try {
Thread.sleep(2000);
} catch (InterruptedException e) {
throw new RuntimeException(e);
}
// check 1:课次学员是否包含该会员且会员状态为已签到
getScheduleItemDetail = groupScheduleTools.getScheduleItemDetail(scheduleId);
JSONArray reserveIds = getScheduleItemDetail.getJSONArray("memberReserveList");
boolean success = false;
for (int i = 0; i < reserveIds.size(); i++){
if(reserveIds.getJSONObject(i).getString("id").equals(reserveId)){
success = true;
Assert.assertEquals(reserveIds.getJSONObject(i).getString("signInState"),"SIGNED","签到状态错误");
}
}
Assert.assertTrue(success,"约课后课次详情学员不在课次中");
// check 2: 预约记录是否包含该预约
// check 2.1 学员详情预约记录
JSONArray getPageByMember = reserveTools.getPageByMember(courseId,"SUCCESS","SIGNED","", startTime,scheduleEndTime, memberInfo.getString(0),"GROUP_CLASS");
String[] result = new String[] {"id","benefitId","reserveMemberNum","courseId","courseType","scheduleStartTime","reserveState","scheduleId","signInState"};
String[] resultData = new String[] {reserveId, memberInfo.getString(1),"1",courseId,"GROUP_CLASS",startTime+"","SUCCESS",scheduleId,"SIGNED"};
success = false;
for(int i =0;i<getPageByMember.size();i++){
if (getPageByMember.getJSONObject(i).getString("id").equals(reserveId)){
success = true;
for(int j = 0;j<result.length;j++){
Assert.assertEquals(getPageByMember.getJSONObject(i).getString(result[j]),resultData[j],"约课产生的数据与实际数据不符合"+result[j]+":"+resultData[j]);
}
}
}
Assert.assertTrue(success,"约课后在会员详情页面未查询到相关信息");
// check 2.2 预约记录列表
JSONArray getPageByStudio = reserveTools.getPageByStudio(courseId,"SUCCESS","SIGNED","",startTime,scheduleEndTime, memberInfo.getString(0),"GROUP_CLASS");
success = false;
for(int i =0;i<getPageByStudio.size();i++){
if (getPageByStudio.getJSONObject(i).getString("id").equals(reserveId)){
success = true;
for(int j = 0;j<result.length;j++){
Assert.assertEquals(getPageByStudio.getJSONObject(i).getString(result[j]),resultData[j],"约课产生的数据与实际数据不符合"+result[j]+":"+resultData[j]);
}
Assert.assertEquals(getPageByStudio.getJSONObject(i).getString("memberId"), memberInfo.getString(0),"查询的约课数据不是同一个会员");
}
}
Assert.assertTrue(success,"约课后在约课记录没有查询到相关信息");
// check 2.3 预约记录详情
JSONObject getDetailById = reserveTools.getDetailById(reserveId);
for(int j = 0;j<result.length;j++){
Assert.assertEquals(getDetailById.getString(result[j]),resultData[j],"约课产生的数据与实际数据不符合"+result[j]+":"+resultData[j]);
}
Assert.assertEquals(getDetailById.getString("memberId"), memberInfo.getString(0),"查询的约课数据不是同一个会员");
// check 4: 会员卡消耗记录中包含该记录锁定
}
@DataProvider(name = "dataProvider")
public Object[][] dataProvider() {
return new Object[][]{
{"signIn", "签到失败,已经签到,无需重复操作"}, // 已经签到再次签到
{"cancel", "已签到预约记录无法取消"}, // 已经签到取消预约
};
}
@Test(description = "签到",priority = 1,dataProvider = "dataProvider")
public void testSignIn2(String type,String message) {
if (type.equals("signIn")){
reserveTools.signIn(false, memberInfo.getString(2),false);
JSONObject response = dataApi.getBodyInJSON();
Assert.assertEquals(response.getString("message"),message,"已经操作签到,又操作签到提示错误");
}else {
reserveTools.cancelMemberReserve(memberInfo.getString(2),false);
JSONObject response = dataApi.getBodyInJSON();
Assert.assertEquals(response.getString("message"),message,"已经操作签到,又操作取消提示错误");
}
}
/**
* @description:买卡
* @author: xuyamei
* @date: 2024/6/24 19:42
* @param courseId 课程id
* @param memberId 会员id
* @return: void
**/
public void signOrder(String courseId,String memberId){
// 查询存量的卡
JSONObject fetchPageOfMemberCard = cardTools.fetchPageOfMemberCard(courseId);
int total = Integer.parseInt(fetchPageOfMemberCard.getString("total"));
String cardId = "";
BigDecimal quantity = new BigDecimal(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 = new BigDecimal(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, price/2,"PURCHASE",
"MEMBER_CARD",memberId,price-price/2,price-price/2,"1");
}
}
// 创建团课课次
public void createGroupSchedule(){
// 查询存量的约课课程
// 查询存量的课程分类
String categoryId = courseCategoryTools.getCourseCategoryPage("瑜伽");
courseId = courseTools.getPersonalOrGroupCourseId("GROUP", "艾格瑜伽团课课程(点名)", categoryId, "STUDIO", "", 2, 1).getString(0);
// 创建排课
int[] minuteOffset = {60, 120, 180, 240, 300, 360, 420, 480, 540, 600, 660, 720, 780, 840, 900, 960, 1020, 1080, 1140, 1200, 1260};
Random random = new Random();
//1.1-创建排课日程(前一天的课程)
groupScheduleTools.createGroupRuleSchedule(courseId, xmAppApi.getLoginInfo().getAdminId(), todayStartTimeTamp, todayEndDateTimeTamp, new ArrayList(), new ArrayList(), false, 1,minuteOffset[random.nextInt(20)]);
//1.2-查询排课日程
JSONArray getGroupRuleScheduleList = groupScheduleTools.getGroupRuleScheduleList(courseId, xmAppApi.getLoginInfo().getAdminId());
//统计查询到的目标日程数量
ruldId = XMJSONPath.readPath(getGroupRuleScheduleList.getJSONObject(0), "$.ruleId");
Long scheduleEndTime = TimeUtils.getTodayEndTime(-1);
try {
Thread.sleep(2500);
} catch (InterruptedException e) {
throw new RuntimeException(e);
}
// 查询课次id
JSONArray getGroupScheduleTable = groupScheduleTools.getGroupScheduleTable(Long.valueOf(todayStartTimeTamp), scheduleEndTime);
for (int i = 0; i < getGroupScheduleTable.size(); i++){
if (getGroupScheduleTable.getJSONObject(i).getString("ruleId").equals(ruldId)){
scheduleId = getGroupScheduleTable.getJSONObject(i).getString("scheduleId");
break;
}
}
}
/**
* @description:创建学员并查询会员是否购买会员卡,如果已购买则查看权益,如果没有则进行购买
* @author: xuyamei
* @date: 2024/6/24 19:43
* @param memberName:会员姓名
* @return:
**/
public JSONArray createMember(String memberName){
String memberId = "";
// 查询存量的学员没有则创建学员,// todo 先手动新建
if (tools.commonSearch(memberName,"NORMAL").getJSONArray("result").size()>0){
memberId = tools.commonSearch(memberName,"NORMAL").getJSONArray("result").getJSONObject(0).getString("id");
}else if (tools.commonSearch(memberName,"HISTORY").getJSONArray("result").size()>0){
memberId = tools.commonSearch(memberName,"HISTORY").getJSONArray("result").getJSONObject(0).getString("id");
}else{
memberId = tools.commonSearch(memberName,"POTENTIAL").getJSONArray("result").getJSONObject(0).getString("id");
}
// 查询是否有可用的会员卡,没有则购买
JSONArray listUserReservableBenefit = cardTools.listUserReservableBenefit(courseId, "GROUP_CLASS", "MEMBER", memberId, Long.parseLong(todayStartTimeTamp));
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, Long.parseLong(todayStartTimeTamp));
}
// 查询权益
String benefitId = listUserReservableBenefit.getJSONObject(0).getString("benefitId");
JSONArray members = new JSONArray();
members.add(memberId);
members.add(benefitId);
return members;
}
}
package com.xiaomai.cases.polar.schedule.group;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.xiaomai.cases.polar.setting.venue.VenueAreaTools;
import com.xiaomai.client.DataUserInfo;
import com.xiaomai.enums.ApiModule;
import com.xiaomai.enums.RequestType;
import com.xiaomai.enums.Terminal;
import com.xiaomai.utils.CommUtil;
import com.xiaomai.utils.XMBaseTest;
import com.xiaomai.utils.XMJSONPath;
import org.springframework.stereotype.Component;
import org.springframework.util.CollectionUtils;
import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Set;
import java.util.stream.Collectors;
/**
* @author adu
* data 2024/6/12 11:51
*/
@Component("groupScheduleTools")
public class GroupScheduleTools extends XMBaseTest {
@Resource(name = "venueAreaTools")
VenueAreaTools venueAreaTools;
public void setUP(String apiName, DataUserInfo... userInfo) {
dataApi.setApiModule(ApiModule.Polar_Schedule)
.setApiName(apiName)
.setTerminal(Terminal.B);
super.beforeDataRequest(userInfo);
}
/**
* 创建团课排课
*
* @param courseId 团课课程ID
* @param chiefCoachId 教练ID
* @param startDate 排课开始日期
* @param endDate 排课结束日期
* @param venueAreaIds 场馆ID
* @param assistCoachIds 助教ID
* @param force 是否冲突 false有2种场景:1无冲突时直接传false排课创建成功,2是有冲突时传false代表不忽略冲突,不会创建排课;true是指有冲突时忽略冲突,选择仍要排课【没冲突时就传false,有冲突就传true,如果排课时有冲突但是传了false不会创建排课哈】
* @param endType 排课结束方式:1 按日期,2 按次数
*/
public void createGroupRuleSchedule(String courseId, String chiefCoachId, String startDate, String endDate, List<String> venueAreaIds, List<String> assistCoachIds, Boolean force, int endType, int minuteOffset, DataUserInfo... userInfo) {
setUP("API_createGroupRuleSchedule", userInfo);
JSONObject body = new JSONObject();
body.put("operatorId", dataApi.getLoginInfo().getAdminId());
body.put("studioId", dataApi.getLoginInfo().getStudioId()); // 场馆
body.put("brandId", dataApi.getLoginInfo().getBrandId());
body.put("courseId", courseId);
body.put("chiefCoachId", chiefCoachId);
body.put("minMemberNum", 2); // 开课人数
body.put("maxMemberNum", 999); //人数上限
body.put("minuteOffset", minuteOffset); //上课开始时间
body.put("startDate", startDate); //排课开始日期
body.put("endDate", endDate); //排课结束日期
String[] weekDaysArray = {"MONDAY", "TUESDAY", "WEDNESDAY", "THURSDAY", "FRIDAY", "SATURDAY", "SUNDAY"};
List<String> weekdaysList = Arrays.asList(weekDaysArray);
body.put("weekdays", weekdaysList); //设置上课星期,目前是每天都会选择
body.put("venueAreaIds", venueAreaIds); //场地,可设置为空 new ArrayList<>();
body.put("assistCoachIds", assistCoachIds); //设置助教,可设置为空 new ArrayList<>();
body.put("force", force); //是否有冲突 true,false
if (endType == 2) {
body.put("maxLoop", 60); //如果排课方式选择按次数,设置次数为60
body.put("endDate", CommUtil.getNDayEndTimeTamp(60)); //排课结束日期,这里就设置自动延顺60天,结束日期会覆盖你传的endDate
}
dataApi.doRequest(RequestType.JSON, dataparams, body.toString(), dataheadrs).assetsSuccess(true);
}
/**
* 查看排课日程
*
* @param courseId 可根据课程查询
* @param coachId 可根据教练查询
* @return
*/
public JSONArray getGroupRuleScheduleList(String courseId, String coachId, DataUserInfo... userInfo) {
setUP("API_getGroupRuleScheduleList", userInfo);
JSONObject body = new JSONObject();
body.put("operatorId", dataApi.getLoginInfo().getAdminId());
body.put("studioId", dataApi.getLoginInfo().getStudioId());
body.put("brandId", dataApi.getLoginInfo().getBrandId());
if (courseId != null && courseId.length() != 0) {
body.put("courseId", courseId);
}
if (coachId != null && coachId.length() != 0) {
body.put("coachId", coachId);
}
dataApi.doRequest(RequestType.JSON, dataparams, body.toString(), dataheadrs).assetsSuccess(true);
return XMJSONPath.getJSONArrayByReadPath(dataApi.getApi_response(), "$.result");
}
/**
* 查询存量团课课程
*
* @param courseName
* @return
*/
public String getStockGroupCourseId(String courseName) {
dataApi.setApiModule(ApiModule.Polar_Course)
.setApiName("API_getGroupClassPage")
.setTerminal(Terminal.B);
super.beforeDataRequest();
JSONObject body = new JSONObject();
body.put("operatorId", dataApi.getLoginInfo().getAdminId());
body.put("studioId", dataApi.getLoginInfo().getStudioId());
body.put("brandId", dataApi.getLoginInfo().getBrandId());
body.put("courseState", "ON");
body.put("current", 0);
body.put("size", 50);
body.put("courseNameLike", courseName);
dataApi.doRequest(RequestType.JSON, dataparams, body.toString(), dataheadrs).assetsSuccess(true);
if (XMJSONPath.readPath(dataApi.getApi_response(), "$.result.records").length() == 0) {
return "";
} else {
return XMJSONPath.readPath(dataApi.getApi_response(), "$.result.records[0].brandCourseId");
}
}
/**
* 删除团课排课日程
*
* @param ruleId
*/
public void delGroupRuleSchedule(String ruleId, Boolean force, DataUserInfo... userInfo) {
setUP("API_delGroupRuleSchedule", userInfo);
JSONObject body = new JSONObject();
body.put("operatorId", dataApi.getLoginInfo().getAdminId());
body.put("studioId", dataApi.getLoginInfo().getStudioId());
body.put("brandId", dataApi.getLoginInfo().getBrandId());
body.put("force", force);
body.put("ruleId", ruleId);
dataApi.doRequest(RequestType.JSON, dataparams, body.toString(), dataheadrs).assetsSuccess(true);
}
/**
* 获取教练ID
*
* @param nickNameList 可根据传入的昵称,获取对应的ID
* @return
*/
public List<String> getStudioAdminId(List<String> nickNameList) {
dataApi.setApiModule(ApiModule.Polar_Admin)
.setApiName("API_pageStudioAdmin")
.setTerminal(Terminal.B);
super.beforeDataRequest();
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", 50);
body.put("state", "DUTY");
body.put("teachingType", "LEAGUE_CLASS");
dataApi.doRequest(RequestType.JSON, dataparams, body.toString(), dataheadrs).assetsSuccess(true);
int count = Integer.valueOf(XMJSONPath.readPath(dataApi.getApi_response(), "$.result.total"));
List<String> adminIds = new ArrayList<>();
if (count > 0) {
JSONArray records = XMJSONPath.getJSONArrayByReadPath(dataApi.getApi_response(), "$.result.records");
adminIds = records.stream()
.filter(obj -> CollectionUtils.isEmpty(nickNameList) || nickNameList.contains(((JSONObject) obj).getString("nickName"))) //如果nickNameList为空或者包含搜索结果集中对应的昵称,就会过滤
.map(obj -> {
JSONObject adminIdInfo = (JSONObject) obj;
return adminIdInfo.getString("id");
}
).collect(Collectors.toList());
return adminIds;
}
return null;
}
/**
* 获取存量场地
*
* @param areaName 根据指定场地名称,匹配出对应的场地ID,如果无匹配的则新建,如果场地列表无数据,则新建个
* @return
*/
public List<String> getStockArea(String areaName) {
JSONObject result = venueAreaTools.getVenueAreaPage();
int count = XMJSONPath.getJSONArrayByReadPath(result, "$.records").size();
List<String> areaIds = new ArrayList<>();
if (count > 0) {
areaIds = result.getJSONArray("records").toJavaList(JSONObject.class).stream().filter(obj -> (areaName).equals(obj.getString("groupName")))
.map(obj -> {
JSONObject areaIdInfo = (JSONObject) obj;
return areaIdInfo.getJSONArray("areaList").getJSONObject(0).getString("id");
}
).collect(Collectors.toList());
if (areaIds.isEmpty()) {//如果无匹配的则新建一个匹配的场地
String areaId = venueAreaTools.createVenueArea(areaName);
areaIds.add(areaId);
return areaIds;
}
return areaIds;//如果匹配到了,取匹配到的场地ID
} else {//如果场地列表为空,则新建一个
String areaId = venueAreaTools.createVenueArea(areaName);
areaIds.add(areaId);
return areaIds;
}
}
/**
* 查看团课排课日程详情
*
* @param ruldId
*/
public void getGroupRuleScheduleDetail(String ruldId) {
setUP("API_getGroupRuleScheduleDetail");
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", ruldId);
dataApi.doRequest(RequestType.JSON, dataparams, body.toString(), dataheadrs).assetsSuccess(true);
}
/**
* @param scheduleId
* @description:获取课次详情
* @author: xuyamei
* @date: 2024/6/23 17:45
* @return: com.alibaba.fastjson.JSONObject
**/
public JSONObject getScheduleItemDetail(String scheduleId, DataUserInfo... dataUserInfo) {
setUP("API_getScheduleItemDetail", dataUserInfo);
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", scheduleId);
dataApi.doRequest(RequestType.JSON, dataparams, body.toString(), dataheadrs).assetsSuccess(true);
return dataApi.getBodyInJSON().getJSONObject("result");
}
/**
* @param startDate
* @param endDate
* @description:查询课表
* @author: xuyamei
* @date: 2024/6/23 17:46
* @return: com.alibaba.fastjson.JSONArray
**/
public JSONArray getGroupScheduleTable(Long startDate, Long endDate) {
setUP("API_getGroupScheduleTable");
JSONObject body = new JSONObject();
body.put("operatorId", dataApi.getLoginInfo().getAdminId());
body.put("studioId", dataApi.getLoginInfo().getStudioId());
body.put("brandId", dataApi.getLoginInfo().getBrandId());
body.put("startDate", startDate);
body.put("endDate", endDate);
dataApi.doRequest(RequestType.JSON, dataparams, body.toString(), dataheadrs).assetsSuccess(true);
if (Integer.valueOf(XMJSONPath.readPath(dataApi.getApi_response(), "$.result.totalCount")) > 0) {
return dataApi.getBodyInJSON().getJSONObject("result").getJSONArray("timetableGroups").getJSONObject(0).getJSONArray("timetableList");
}
else {
return null;
}
}
/**
* @param scheduleId:课次id
* @param startTime:开始时间
* @param chiefCoachId:教练
* @param minMemberNum:开课人数
* @param maxMemberNum:最大人数上限
* @param dataUserInfos
* @description:编辑课次
* @author: xuyamei
* @date: 2024/6/23 20:45
* @return: void
**/
public void editGroupSchedule(String scheduleId, Long startTime, String chiefCoachId, int minMemberNum, int maxMemberNum, DataUserInfo... dataUserInfos) {
setUP("API_editGroupSchedule", dataUserInfos);
JSONObject body = new JSONObject();
body.put("operatorId", dataApi.getLoginInfo().getAdminId());
body.put("studioId", dataApi.getLoginInfo().getStudioId());
body.put("brandId", dataApi.getLoginInfo().getBrandId());
body.put("scheduleId", scheduleId);
body.put("startTime", startTime);
body.put("chiefCoachId", chiefCoachId);
body.put("applyRestRule", false);
body.put("minMemberNum", minMemberNum);
body.put("maxMemberNum", maxMemberNum);
body.put("venueAreaIds", new ArrayList());
body.put("assistCoachIds", new ArrayList());
body.put("spanMinutes", 60);
body.put("force", false);
dataApi.doRequest(RequestType.JSON, dataparams, body.toString(), dataheadrs).assetsSuccess(true);
}
/**
* @param scheduleId :排课id
* @param dataUserInfos
* @description:删除单个排课
* @author: xuyamei
* @date: 2024/6/23 21:12
* @return: void
**/
public void delGroupScheduleItem(String scheduleId, DataUserInfo... dataUserInfos) {
setUP("API_delGroupScheduleItem", dataUserInfos);
JSONObject body = new JSONObject();
body.put("operatorId", dataApi.getLoginInfo().getAdminId());
body.put("studioId", dataApi.getLoginInfo().getStudioId());
body.put("brandId", dataApi.getLoginInfo().getBrandId());
body.put("scheduleId", scheduleId);
body.put("applyRestRule", false);
dataApi.doRequest(RequestType.JSON, dataparams, body.toString(), dataheadrs).assetsSuccess(true);
}
/**
* 获取指定下周某一天的课次ID
* @param n
* @return
*/
public Set<String> getTableDate(int n) {
//查看团课课表
getGroupScheduleTable(Long.valueOf(CommUtil.oneKeyGetNextWeekStartDay()), Long.valueOf(CommUtil.oneKeyGetNextWeekEndDay()));
//获取下周周N及后续的课次
String date = CommUtil.oneKeyGetNextWeekXDay(n);//下周N 日期时间戳
int count = XMJSONPath.getJSONArrayByReadPath(dataApi.getApi_response(), "$.result.timetableGroups").size();
if (count > 0) {
JSONArray array = XMJSONPath.getJSONArrayByReadPath(dataApi.getApi_response(), "$.result.timetableGroups");
Set<String> scheduleIds = array.toJavaList(JSONObject.class).stream()
.filter(e -> e.getString("date").equals(date))//过滤出日期等于下周N的数据
.flatMap(e -> e.getJSONArray("timetableList").toJavaList(JSONObject.class).stream())//对过滤出的数据再次取目标数据重新组合成一个新的数据流
.map(e -> e.getString("scheduleId"))//获取scheduleId
.collect(Collectors.toSet());
return scheduleIds;
}
return null;
}
}
package com.xiaomai.cases.polar.schedule.group;
import com.alibaba.fastjson.JSONArray;
import com.xiaomai.basetest.BaseTestImpl;
import com.xiaomai.cases.polar.course.CourseTools;
import com.xiaomai.cases.polar.setting.courseCategory.CourseCategoryTools;
import com.xiaomai.cases.polar.setting.venue.VenueAreaTools;
import com.xiaomai.cases.polar.studioConfig.HomeTools;
import com.xiaomai.enums.ApiModule;
import com.xiaomai.enums.LoginAccount;
import com.xiaomai.enums.Terminal;
import com.xiaomai.utils.CommUtil;
import com.xiaomai.utils.XMJSONPath;
import org.testng.Assert;
import org.testng.annotations.BeforeClass;
import org.testng.annotations.Test;
import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.List;
/**
* 创建排课
* @author adu
* data 2024/6/12 15:54
*/
public class TestCreateGroupRuleSchedule extends BaseTestImpl {
@Resource(name = "courseCategoryTools")
CourseCategoryTools courseCategoryTools;
@Resource(name = "courseTools")
CourseTools courseTools;
@Resource(name = "groupScheduleTools")
GroupScheduleTools groupScheduleTools;
@Resource(name = "venueAreaTools")
VenueAreaTools venueAreaTools;
//获取本周第一天的时间戳
String beginTimeTamp = CommUtil.oneKeyGetWeekStartDay();
//获取当前时间加160天后的时间戳 23:59:59 用于结束日期
String endDateTimeTamp = CommUtil.getNDayEndTimeTamp(180);
//获取当天时间时间戳:当天时间戳格式:2024-6-12 00:00:00点,用于开始日期
String todayStartTimeTamp = CommUtil.oneKeyGetAddDay(0);
//获取今天结束日期的时间戳
String todayEndDateTimeTamp = CommUtil.getNDayEndTimeTamp(0);
String courseName = "阿杜自动化团课课程";
@BeforeClass
public void beforeTest() {
setTestInfo(ApiModule.Polar_Schedule, "API_createGroupRuleSchedule", LoginAccount.ADU_PROD, Terminal.B, "adu");
super.beforeTest();
}
@Test(description = "测试新建团课排课")
public void testCreateGroupRuleSchedule() {
//查询今日待上课的数据
HomeTools homeTools = new HomeTools();
int num = homeTools.queryTodaySchedule().getJSONArray("result").size();
//获取存量课程ID
String courseId = groupScheduleTools.getStockGroupCourseId(courseName);
if (courseId == "") {
//获取存量课程分类ID
String categoryId = courseCategoryTools.getCourseCategoryPage("普拉提");
courseId = courseTools.createGroupCourse(courseName, categoryId, "STUDIO");
}
//获取存量场地
List<String> venueAreaIds = groupScheduleTools.getStockArea("流星花园秘密基地");
//获取存量教练
List<String> chiefCoachId = new ArrayList<>();
chiefCoachId.add("杜君丽");
String chiefCoachIdS = groupScheduleTools.getStudioAdminId(chiefCoachId).get(0).toString();
//获取存量助教
List<String> assistCoachIds = new ArrayList<>();
assistCoachIds.add("木头");
assistCoachIds.add("吴彦祖");
List<String> assistCoachIdS = groupScheduleTools.getStudioAdminId(assistCoachIds);
//1-创建排课日程
groupScheduleTools.createGroupRuleSchedule(courseId, chiefCoachIdS, todayStartTimeTamp, endDateTimeTamp, venueAreaIds, assistCoachIdS, false, 1,480);
//2-查询排课日程
JSONArray result = groupScheduleTools.getGroupRuleScheduleList(courseId, chiefCoachIdS);
Assert.assertTrue(result.size() >= 1);
//创建今日待上课的排课后再查询今日待上课的数据
int num1 = homeTools.queryTodaySchedule().getJSONArray("result").size();
Assert.assertEquals(num1, num+1);
//统计查询到的目标日程数量
int size = result.size();
String ruldId = XMJSONPath.readPath(result.getJSONObject(0), "$.ruleId");
groupScheduleTools.delGroupRuleSchedule(ruldId,true);
JSONArray result2 = groupScheduleTools.getGroupRuleScheduleList(courseId, chiefCoachIdS);
//删除成功后,统计查询到的目标日程数量是否-1
Assert.assertEquals(result2.size(), size - 1);
}
}
\ No newline at end of file
package com.xiaomai.cases.polar.schedule.group;
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.CommUtil;
import com.xiaomai.utils.XMJSONPath;
import org.testng.Assert;
import org.testng.annotations.AfterClass;
import org.testng.annotations.BeforeClass;
import org.testng.annotations.Test;
import java.util.ArrayList;
import java.util.List;
import java.util.Set;
import java.util.stream.Collectors;
/**
* 删除课次(删除当前课次/删除当前及后续课次)
*
* @author adu
* data 2024/6/30 17:02
*/
public class TestDelGroupScheduleItem extends UniversalDataScheduling {
@BeforeClass
public void beforeTest() {
setTestInfo(ApiModule.Polar_Schedule, "API_delGroupScheduleItem", LoginAccount.ADU_PROD, Terminal.B, "adu");
super.beforeTest();
}
@Test(description = "删除当前课次")
public void testDelCurrentSchedule() {
//获取下周四的课次ID
Set<String> scheduleIds = groupScheduleTools.getTableDate(10);
//如果课次ID有值则继续走删除的case
if (!scheduleIds.isEmpty()) {
scheduleIds.stream().forEach(scheduleId -> {
JSONObject body = new JSONObject();
body.put("operatorId", xmAppApi.getLoginInfo().getAdminId());
body.put("studioId", xmAppApi.getLoginInfo().getStudioId());
body.put("brandId", xmAppApi.getLoginInfo().getBrandId());
body.put("applyRestRule", false);
body.put("scheduleId", scheduleId);
xmAppApi.doRequest(RequestType.JSON, params, body.toString(), headers).assetsSuccess(true);
});
//删除成功后check 下周四课表是否有数据
groupScheduleTools.getGroupScheduleTable(Long.valueOf(CommUtil.oneKeyGetNextWeekXDay(10)), Long.valueOf(CommUtil.oneKeyGetNextWeekEndXDay(4)));
Assert.assertEquals(XMJSONPath.readPath(dataApi.getApi_response(), "$.result.totalCount"), "0");
}
}
@Test(description = "删除当前及后续课次", priority = 1)
public void testDelCurrentAndSubsequentSchedule() {
//获取下周三的课次ID
Set<String> scheduleIds = groupScheduleTools.getTableDate(9);
//如果课次ID有值则继续走删除的case
if (!scheduleIds.isEmpty()) {
scheduleIds.stream().forEach(scheduleId -> {
JSONObject body = new JSONObject();
body.put("operatorId", xmAppApi.getLoginInfo().getAdminId());
body.put("studioId", xmAppApi.getLoginInfo().getStudioId());
body.put("brandId", xmAppApi.getLoginInfo().getBrandId());
body.put("applyRestRule", true);
body.put("scheduleId", scheduleId);
xmAppApi.doRequest(RequestType.JSON, params, body.toString(), headers).assetsSuccess(true);
});
//删除成功后check 从下周三到下周日课表是否有数据
groupScheduleTools.getGroupScheduleTable(Long.valueOf(CommUtil.oneKeyGetNextWeekXDay(9)), Long.valueOf(CommUtil.oneKeyGetNextWeekEndDay()));
Assert.assertEquals(XMJSONPath.readPath(dataApi.getApi_response(), "$.result.totalCount"), "0");
}
}
@AfterClass(description = "删除此case创建的日程")
public void delData(){
List<String> ruleIdIds = new ArrayList<>();
//查询这个case创建的相关日程
JSONArray result = groupScheduleTools.getGroupRuleScheduleList(courseId, chiefCoachIdS);
int count = result.size();
if (count > 0) {//如果有数据,则获取对应日程ID
ruleIdIds = result.stream().map(obj -> {
JSONObject ruldIdInfo = (JSONObject) obj;
return ruldIdInfo.getString("ruleId");
}
).collect(Collectors.toList());
}
if (ruleIdIds != null) {//获取到的日程ID不为空时,则逐个删除相关日程
ruleIdIds.stream().forEach(ruleId -> {
//删除对应日程
groupScheduleTools.delGroupRuleSchedule(ruleId, true);
});
}
}
}
\ No newline at end of file
package com.xiaomai.cases.polar.schedule.group;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.xiaomai.basetest.BaseTestImpl;
import com.xiaomai.cases.polar.course.CourseTools;
import com.xiaomai.cases.polar.setting.venue.VenueAreaTools;
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.XMJSONPath;
import org.testng.Assert;
import org.testng.annotations.BeforeClass;
import org.testng.annotations.Test;
import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.List;
/**
* 编辑排课日程
* @author adu
* data 2024/6/13 14:31
*/
public class TestEditGroupRuleSchedule extends BaseTestImpl {
@Resource(name = "courseTools")
CourseTools courseTools;
@Resource(name = "groupScheduleTools")
GroupScheduleTools groupScheduleTools;
@Resource(name = "venueAreaTools")
VenueAreaTools venueAreaTools;
//前天的时间戳,开始时间
String theDayBeforeYesterdayTimeTamp = CommUtil.oneKeyGetAddDay(-2);
//获取今天+12天后日期的时间戳(结束时间)
String endDateTimeTamp = CommUtil.getNDayEndTimeTamp(12);
String todayEndDateTimeTamp = CommUtil.getNDayEndTimeTamp(0);
String courseName = "阿杜自动化团课课程";
@BeforeClass
public void beforeTest() {
setTestInfo(ApiModule.Polar_Schedule, "API_editGroupRuleSchedule", LoginAccount.ADU_PROD, Terminal.B, "adu");
super.beforeTest();
}
@Test(description = "测试编辑团课规则")
public void testEditGroupRuleSchedule() {
//先创建排课规则
//获取存量课程ID
String courseId = groupScheduleTools.getStockGroupCourseId(courseName);
//获取存量教练
List<String> chiefCoachId = new ArrayList<>();
chiefCoachId.add("杜君丽");
String chiefCoachIdS = groupScheduleTools.getStudioAdminId(chiefCoachId).get(0).toString();
//获取存量助教
List<String> assistCoachIds = new ArrayList<>();
assistCoachIds.add("木头");
assistCoachIds.add("吴彦祖");
List<String> assistCoachIdS = groupScheduleTools.getStudioAdminId(assistCoachIds);
//1-创建排课日程
groupScheduleTools.createGroupRuleSchedule(courseId, chiefCoachIdS, theDayBeforeYesterdayTimeTamp, endDateTimeTamp, new ArrayList<>(), assistCoachIdS, false, 1,720);
//2-查询排课日程
JSONArray result = groupScheduleTools.getGroupRuleScheduleList(courseId, chiefCoachIdS);
Assert.assertTrue(result.size() >= 1);
String ruldId = XMJSONPath.readPath(result.getJSONObject(0), "$.ruleId");
//3-编辑排课日程
JSONObject body = new JSONObject();
body.put("operatorId", dataApi.getLoginInfo().getAdminId());
body.put("studioId", dataApi.getLoginInfo().getStudioId());
body.put("brandId", dataApi.getLoginInfo().getBrandId());
body.put("chiefCoachId", chiefCoachIdS);
body.put("minMemberNum", 5);//改变了有2->5
body.put("maxMemberNum", 20);//改变了999->20
body.put("minuteOffset", "1320");
List<String> venueAreaIds = groupScheduleTools.getStockArea("流星花园秘密基地");
body.put("venueAreaIds", venueAreaIds); //有空改为有数据
body.put("assistCoachIds", new ArrayList<>()); //有数据AB改成空
body.put("ruleId", ruldId);
body.put("spanMinutes", 50);
body.put("endDate", todayEndDateTimeTamp); //结束日期缩短了,改成当天结束
body.put("force", false);
body.put("retainBooking", true);
xmAppApi.doRequest(RequestType.JSON, params, body.toString(), headers).assetsSuccess(true);
//4-查看日程详情,check修改内容是否同步变更
groupScheduleTools.getGroupRuleScheduleDetail(ruldId);
String detailResult = dataApi.getApi_response();
Assert.assertEquals(XMJSONPath.readPath(detailResult,"$.result.chiefCoachId"),chiefCoachIdS);
Assert.assertEquals(XMJSONPath.readPath(detailResult,"$.result.minMemberNum"),"5");
Assert.assertEquals(XMJSONPath.readPath(detailResult,"$.result.maxMemberNum"),"20");
Assert.assertEquals(XMJSONPath.readPath(detailResult,"$.result.minuteOffset"),"1320");
Assert.assertEquals((XMJSONPath.readPath(detailResult,"$.result.endDate").substring(0,9)),todayEndDateTimeTamp.substring(0,9));
Assert.assertTrue(XMJSONPath.getJSONArrayByReadPath(detailResult,"$.result.assistCoachIds").isEmpty(),"助教设置为空后没生效");
Assert.assertTrue(XMJSONPath.getJSONArrayByReadPath(detailResult,"$.result.venueAreaIds").containsAll(venueAreaIds),"设置有空改为有数据后没生效");
//5-删除日程
groupScheduleTools.delGroupRuleSchedule(ruldId,true);
}
}
\ No newline at end of file
package com.xiaomai.cases.polar.schedule.group;
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.CommUtil;
import com.xiaomai.utils.XMJSONPath;
import org.testng.Assert;
import org.testng.annotations.AfterClass;
import org.testng.annotations.BeforeClass;
import org.testng.annotations.Test;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Set;
import java.util.stream.Collectors;
/**
* 编辑当前课次/编辑当前及后续课次
* @author adu
* data 2024/7/2 10:45
*/
public class TestEditGroupSchedule extends UniversalDataScheduling {
public static Date now = new Date();
Set<String> scheduleIdsN;
@BeforeClass
public void beforeTest() {
setTestInfo(ApiModule.Polar_Schedule, "API_editGroupSchedule", LoginAccount.ADU_PROD, Terminal.B, "adu");
super.beforeTest();
}
@Test(description = "编辑当前课次")
public void testEditCurrentSchedule() {
//获取下周四的课次ID
scheduleIdsN = groupScheduleTools.getTableDate(10);
//如果课次ID有值则继续走删除的case
if (!scheduleIdsN.isEmpty()) {
scheduleIdsN.stream().forEach(scheduleId -> {
JSONObject body = new JSONObject();
body.put("operatorId", xmAppApi.getLoginInfo().getAdminId());
body.put("studioId", xmAppApi.getLoginInfo().getStudioId());
body.put("brandId", xmAppApi.getLoginInfo().getBrandId());
body.put("applyRestRule", false);
body.put("scheduleId", scheduleId);
//获取下周四某个时间点的开始时间戳
String startStamp = getWholeHourTimeStamp(10,"13:30");
body.put("startTime", startStamp);
body.put("chiefCoachId", chiefCoachIdS);
body.put("minMemberNum", 1);
body.put("maxMemberNum", 10);
body.put("venueAreaIds", new ArrayList<>());
body.put("assistCoachIds", new ArrayList<>());
body.put("spanMinutes", 50);
body.put("force", true);//有冲突时忽略冲突
body.put("retainBooking", false);//不保留学员预约
xmAppApi.doRequest(RequestType.JSON, params, body.toString(), headers).assetsSuccess(true);
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
throw new RuntimeException(e);
}
//编辑成功后check对应课次详情修改内容是否同步成功
groupScheduleTools.getScheduleItemDetail(scheduleId);
String detailResult = dataApi.getApi_response();
Assert.assertEquals(XMJSONPath.readPath(detailResult, "$.result.chiefCoachId"), chiefCoachIdS);
Assert.assertEquals(XMJSONPath.readPath(detailResult, "$.result.minMemberNum"), "1");
Assert.assertEquals(XMJSONPath.readPath(detailResult, "$.result.maxMemberNum"), "10");
Assert.assertEquals(XMJSONPath.readPath(detailResult, "$.result.startTime"), startStamp);
Assert.assertTrue(XMJSONPath.getJSONArrayByReadPath(detailResult, "$.result.assistCoachIds").size() == 0, "助教修改后(置空)没生效");
Assert.assertTrue(XMJSONPath.getJSONArrayByReadPath(detailResult, "$.result.venueAreaIds").size() == 0, "场地修改后(置空)没生效");
});
}
}
@Test(description = "编辑当前及后续课次", priority = 1)
public void testEditCurrentAndSubsequentSchedule() {
//获取下周二的课次ID
Set<String> scheduleIds = groupScheduleTools.getTableDate(8);
//如果课次ID有值则继续走编辑的case
if (!scheduleIds.isEmpty()) {
scheduleIds.stream().forEach(scheduleId -> {
JSONObject body = new JSONObject();
body.put("operatorId", xmAppApi.getLoginInfo().getAdminId());
body.put("studioId", xmAppApi.getLoginInfo().getStudioId());
body.put("brandId", xmAppApi.getLoginInfo().getBrandId());
body.put("applyRestRule", true);//改的时日程当前及后续
body.put("scheduleId", scheduleId);
//获取下周二某个时间点的开始时间戳
String startStamp1 =getWholeHourTimeStamp(8,"13:00");
body.put("startTime", startStamp1);
body.put("chiefCoachId", chiefCoachIdS);
body.put("minMemberNum", 6);//修改开课人数
body.put("maxMemberNum", 999);
body.put("venueAreaIds", venueAreaIds);
body.put("assistCoachIds", new ArrayList<>());//修改教练
body.put("spanMinutes", 50);
body.put("force", true);//有冲突时忽略冲突
//body.put("retainBooking", true);//保留学员预约,无改动到时间,教练,场地则不需要传此字段
xmAppApi.doRequest(RequestType.JSON, params, body.toString(), headers).assetsSuccess(true);
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
throw new RuntimeException(e);
}
//编辑成功后check对应课次详情修改内容是否同步成功
checkData(scheduleId,startStamp1);
//查看下周三课次是否同步被修改
Set<String> scheduleIdX = groupScheduleTools.getTableDate(9);
String startStamp2 = getWholeHourTimeStamp(9,"13:00");
if (!scheduleIdX.isEmpty()) {
scheduleIdX.stream().forEach(scheduleId1 -> {
//编辑成功后check同规则中下周三课次详情修改内容是否同步成功
checkData(scheduleId1,startStamp2);
});
}
});
}
//获取下周一的课次ID,查看下周一课次是否还是原来的(没被修改,还是原来的规则)
Set<String> scheduleId1 = groupScheduleTools.getTableDate(7);
String startStamp3=getWholeHourTimeStamp(7,"13:00");
if (!scheduleId1.isEmpty()) {
scheduleId1.stream().forEach(scheduleId0 -> {
//编辑成功后check同规则中下周一课次详情
groupScheduleTools.getScheduleItemDetail(scheduleId0);
String detailResult1 = dataApi.getApi_response();
Assert.assertEquals(XMJSONPath.readPath(detailResult1, "$.result.chiefCoachId"), chiefCoachIdS);
Assert.assertEquals(XMJSONPath.readPath(detailResult1, "$.result.minMemberNum"), "2");
Assert.assertEquals(XMJSONPath.readPath(detailResult1, "$.result.maxMemberNum"), "999");
Assert.assertEquals(XMJSONPath.readPath(detailResult1, "$.result.startTime"), startStamp3);
Assert.assertTrue(XMJSONPath.getJSONArrayByReadPath(detailResult1, "$.result.assistCoachIds").containsAll(assistCoachIdS), "助教无修改,但是却变动了");
Assert.assertTrue(XMJSONPath.getJSONArrayByReadPath(detailResult1, "$.result.venueAreaIds").containsAll(venueAreaIds), "场地无修改,但是却变动了");
});
}
}
/**
*
* @param n 整数
* @param time 整点时间 比如13:00
* @return
*/
public String getWholeHourTimeStamp(int n,String time){
Date getWeekStartDayData = CommUtil.getStartOfDateWeek(now);
Date getNextWeekXDayData = CommUtil.addNDays(getWeekStartDayData, n);
String getNextWeekXDayDataS = new SimpleDateFormat("yyyy-MM-dd").format(getNextWeekXDayData.getTime());
return CommUtil.getStringTimestampByStrTime(getNextWeekXDayDataS + " " + time);
}
/**
* 编辑后通过查看课次详情check数据是否同步被修改
* @param scheduleId
*/
public void checkData(String scheduleId,String tiemStamp){
groupScheduleTools.getScheduleItemDetail(scheduleId);
String detailResult1 = dataApi.getApi_response();
Assert.assertEquals(XMJSONPath.readPath(detailResult1, "$.result.chiefCoachId"), chiefCoachIdS);
Assert.assertEquals(XMJSONPath.readPath(detailResult1, "$.result.minMemberNum"), "6");
Assert.assertEquals(XMJSONPath.readPath(detailResult1, "$.result.maxMemberNum"), "999");
Assert.assertEquals(XMJSONPath.readPath(detailResult1, "$.result.startTime"), tiemStamp);
Assert.assertTrue(XMJSONPath.getJSONArrayByReadPath(detailResult1, "$.result.assistCoachIds").size() == 0, "助教修改后(置空)没生效");
Assert.assertTrue(XMJSONPath.getJSONArrayByReadPath(detailResult1, "$.result.venueAreaIds").containsAll(venueAreaIds), "场地无修改,但是却变动了");
}
@AfterClass(description = "删除此case创建的日程")
public void delData(){
List<String> ruleIdIds = new ArrayList<>();
//查询这个case创建的相关日程
JSONArray result = groupScheduleTools.getGroupRuleScheduleList(courseId, chiefCoachIdS);
int count = result.size();
if (count > 0) {//如果有数据,则获取对应日程ID
ruleIdIds = result.stream().map(obj -> {
JSONObject ruldIdInfo = (JSONObject) obj;
return ruldIdInfo.getString("ruleId");
}
).collect(Collectors.toList());
}
if (ruleIdIds != null) {//获取到的日程ID不为空时,则逐个删除相关日程
ruleIdIds.stream().forEach(ruleId -> {
//删除对应日程
groupScheduleTools.delGroupRuleSchedule(ruleId, true);
});
}
if (!scheduleIdsN.isEmpty()) {
scheduleIdsN.stream().forEach(scheduleId -> {
//删除case1中编辑独立出去的课次
groupScheduleTools.delGroupScheduleItem(scheduleId);
});
}
}
}
\ No newline at end of file
package com.xiaomai.cases.polar.schedule.group;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.xiaomai.basetest.BaseTestImpl;
import com.xiaomai.cases.polar.course.CourseTools;
import com.xiaomai.cases.polar.setting.courseCategory.CourseCategoryTools;
import com.xiaomai.cases.polar.setting.venue.VenueAreaTools;
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.XMJSONPath;
import org.testng.Assert;
import org.testng.annotations.*;
import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;
/**
* 查看团课课表
*
* @author adu
* data 2024/6/30 11:19
*/
public class TestGetGroupScheduleTable extends BaseTestImpl {
@Resource(name = "courseCategoryTools")
CourseCategoryTools courseCategoryTools;
@Resource(name = "courseTools")
CourseTools courseTools;
@Resource(name = "groupScheduleTools")
GroupScheduleTools groupScheduleTools;
@Resource(name = "venueAreaTools")
VenueAreaTools venueAreaTools;
String courseName = "阿杜自动化团课课程";
String courseId = "";
String venueAreaId = "";
String chiefCoachIdS = "";
String assistCoachId1 = "";
String assistCoachId2 = "";
List<String> venueAreaIds = null;
List<String> assistCoachIdS = null;
@BeforeClass
public void beforeTest() {
setTestInfo(ApiModule.Polar_Schedule, "API_getGroupScheduleTable", LoginAccount.ADU_PROD, Terminal.B, "adu");
super.beforeTest();
//获取存量课程ID
courseId = groupScheduleTools.getStockGroupCourseId(courseName);
if (courseId == "") {
//获取存量课程分类ID
String categoryId = courseCategoryTools.getCourseCategoryPage("普拉提");
courseId = courseTools.createGroupCourse(courseName, categoryId, "STUDIO");
}
//获取存量场地
venueAreaIds = groupScheduleTools.getStockArea("流星花园秘密基地");
//获取存量教练
List<String> chiefCoachId = new ArrayList<>();
chiefCoachId.add("杜君丽");
chiefCoachIdS = groupScheduleTools.getStudioAdminId(chiefCoachId).get(0).toString();
//获取存量助教
List<String> assistCoachIds = new ArrayList<>();
assistCoachIds.add("木头");
assistCoachIds.add("吴彦祖");
assistCoachIdS = groupScheduleTools.getStudioAdminId(assistCoachIds);
//1.创建排课
groupScheduleTools.createGroupRuleSchedule(courseId, chiefCoachIdS, CommUtil.oneKeyGetWeekStartDay(), CommUtil.oneKeyGetWeekEndDay(), venueAreaIds, assistCoachIdS, false, 1, 480);
//2.创建排课,构造冲突
groupScheduleTools.createGroupRuleSchedule(courseId, chiefCoachIdS, CommUtil.oneKeyGetWeekStartDay(), CommUtil.oneKeyGetWeekEndDay(), venueAreaIds, assistCoachIdS, true, 1, 480);
//获取存量场地
venueAreaId = venueAreaIds.get(0).toString();
//获取存量助教
assistCoachId1 = assistCoachIdS.get(0).toString();
assistCoachId2 = assistCoachIdS.get(1).toString();
}
@DataProvider(name = "filterGroupScheduleTableDateByCondition")
public Object[][] dataProvider() {
//组装已上课课次状态
List<String> doneStatus = new ArrayList<>();
doneStatus.add("IN_PROGRESS");
doneStatus.add("DONE");
//组装待上课课次状态
List<String> todoStatus = new ArrayList<>();
todoStatus.add("TODO");
//组装已取消课次状态
List<String> cancelledStatus = new ArrayList<>();
cancelledStatus.add("CANCELLED");
return new Object[][]{
{"", "", "", new ArrayList<>(),14},//无筛选条件
{courseId, "", "", new ArrayList<>(),14},//根据课程
{"", chiefCoachIdS, "", new ArrayList<>(),14},//根据主教练
{"", assistCoachId1, "", new ArrayList<>(),14},//根据助教1
{"", assistCoachId2, "", new ArrayList<>(),14},//根据助教2
{"", "", venueAreaId, new ArrayList<>(),14},//根据场地
{"", "", "", doneStatus,0},//根据课程状态已上课["IN_PROGRESS", "DONE"]
{"", "", "", todoStatus,14},//根据课程状态待上课["TODO"]
{"", "", "", cancelledStatus,0},//根据课程状态已取消["CANCELLED"]
{"", chiefCoachIdS, venueAreaId, new ArrayList<>(),14},//根据场地和主教练
{courseId, assistCoachId2, venueAreaId, new ArrayList<>(),14},//场地和助教,课程
{courseId, chiefCoachIdS, venueAreaId, todoStatus,14},// 课程名称,教练,课次状态(待上课),场地
};
}
@Test(dataProvider = "filterGroupScheduleTableDateByCondition")
public void testGetGroupScheduleTable(String courseId, String coachId, String venueAreaId, List<String> statusSet,int totalCount) {
//1. 查看/筛选团课课表
JSONObject body = new JSONObject();
body.put("operatorId", dataApi.getLoginInfo().getAdminId());
body.put("studioId", dataApi.getLoginInfo().getStudioId());
body.put("brandId", dataApi.getLoginInfo().getBrandId());
body.put("startDate", CommUtil.oneKeyGetWeekStartDay());
body.put("endDate", CommUtil.oneKeyGetWeekEndDay());
body.put("courseId", courseId);
body.put("coachId", coachId);
body.put("venueAreaId", venueAreaId);
body.put("statusSet", statusSet);
xmAppApi.doRequest(RequestType.JSON, params, body.toString(), headers).assetsSuccess(true);
int resultCount=Integer.parseInt(XMJSONPath.readPath(xmAppApi.getApi_response(),"$.result.totalCount"));
Assert.assertTrue(resultCount>=totalCount,"查询到的课表数据和预期不一致");
}
@AfterClass(description = "删除此case创建的日程")
public void delData(){
List<String> ruleIdIds = new ArrayList<>();
//查询这个case创建的相关日程
JSONArray result = groupScheduleTools.getGroupRuleScheduleList(courseId, chiefCoachIdS);
int count = result.size();
if (count > 0) {//如果有数据,则获取对应日程ID
ruleIdIds = result.stream().map(obj -> {
JSONObject ruldIdInfo = (JSONObject) obj;
return ruldIdInfo.getString("ruleId");
}
).collect(Collectors.toList());
}
if (ruleIdIds != null) {//获取到的日程ID不为空时,则逐个删除相关日程
ruleIdIds.stream().forEach(ruleId -> {
//删除对应日程
groupScheduleTools.delGroupRuleSchedule(ruleId, true);
});
}
}
}
\ No newline at end of file
package com.xiaomai.cases.polar.schedule.group;
import com.xiaomai.basetest.BaseTestImpl;
import com.xiaomai.cases.polar.course.CourseTools;
import com.xiaomai.cases.polar.setting.courseCategory.CourseCategoryTools;
import com.xiaomai.cases.polar.setting.venue.VenueAreaTools;
import com.xiaomai.utils.CommUtil;
import org.testng.annotations.BeforeClass;
import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.List;
/**
* 创建排课通用类
* @author adu
* data 2024/7/2 10:54
*/
public class UniversalDataScheduling extends BaseTestImpl {
@Resource(name = "courseCategoryTools")
CourseCategoryTools courseCategoryTools;
@Resource(name = "courseTools")
CourseTools courseTools;
@Resource(name = "groupScheduleTools")
GroupScheduleTools groupScheduleTools;
@Resource(name = "venueAreaTools")
VenueAreaTools venueAreaTools;
String courseName = "阿杜自动化团课课程";
String courseId = "";
String chiefCoachIdS = "";
List<String> venueAreaIds = null;
List<String> assistCoachIdS = null;
@BeforeClass
public void beforeTest() {
super.beforeTest();
//获取存量课程ID
courseId = groupScheduleTools.getStockGroupCourseId(courseName);
if (courseId == "") {
//获取存量课程分类ID
String categoryId = courseCategoryTools.getCourseCategoryPage("普拉提");
courseId = courseTools.createGroupCourse(courseName, categoryId, "STUDIO");
}
//获取存量场地
venueAreaIds = groupScheduleTools.getStockArea("流星花园秘密基地");
//获取存量教练
List<String> chiefCoachId = new ArrayList<>();
chiefCoachId.add("杜君丽");
chiefCoachIdS = groupScheduleTools.getStudioAdminId(chiefCoachId).get(0).toString();
//获取存量助教
List<String> assistCoachIds = new ArrayList<>();
assistCoachIds.add("木头");
assistCoachIds.add("吴彦祖");
assistCoachIdS = groupScheduleTools.getStudioAdminId(assistCoachIds);
//创建排课(按次数)
groupScheduleTools.createGroupRuleSchedule(courseId, chiefCoachIdS, CommUtil.oneKeyGetNextWeekStartDay(), CommUtil.oneKeyGetNextWeekEndDay(), venueAreaIds, assistCoachIdS, true, 2, 780);
}
}
\ No newline at end of file
...@@ -39,7 +39,7 @@ public class CourseCategoryTools extends XMBaseTest { ...@@ -39,7 +39,7 @@ public class CourseCategoryTools extends XMBaseTest {
body.put("studioId",dataApi.getLoginInfo().getStudioId()); body.put("studioId",dataApi.getLoginInfo().getStudioId());
body.put("operatorId",dataApi.getLoginInfo().getAdminId()); body.put("operatorId",dataApi.getLoginInfo().getAdminId());
dataApi.doRequest(RequestType.JSON,params,body.toString(),headers).assetsSuccess(true); dataApi.doRequest(RequestType.JSON,dataparams,body.toString(),dataheadrs).assetsSuccess(true);
return dataApi.getBodyInJSON(); return dataApi.getBodyInJSON();
} }
...@@ -83,7 +83,7 @@ public class CourseCategoryTools extends XMBaseTest { ...@@ -83,7 +83,7 @@ public class CourseCategoryTools extends XMBaseTest {
if (oldCategoryId.equals("")){ if (oldCategoryId.equals("")){
body.put("oldCategoryId",oldCategoryId); body.put("oldCategoryId",oldCategoryId);
} }
dataApi.doRequest(RequestType.JSON,params,body.toString(),headers); dataApi.doRequest(RequestType.JSON,dataparams,body.toString(),dataheadrs);
return dataApi.getBodyInJSON().getBoolean("result"); return dataApi.getBodyInJSON().getBoolean("result");
} }
...@@ -108,7 +108,7 @@ public class CourseCategoryTools extends XMBaseTest { ...@@ -108,7 +108,7 @@ public class CourseCategoryTools extends XMBaseTest {
body.put("categoryName",categoryName); body.put("categoryName",categoryName);
body.put("operatorId",dataApi.getLoginInfo().getAdminId()); body.put("operatorId",dataApi.getLoginInfo().getAdminId());
dataApi.doRequest(RequestType.JSON,params,body.toString(),headers); dataApi.doRequest(RequestType.JSON,dataparams,body.toString(),dataheadrs);
return dataApi.getBodyInJSON().getJSONObject("result").getString("id"); return dataApi.getBodyInJSON().getJSONObject("result").getString("id");
} }
...@@ -131,7 +131,7 @@ public class CourseCategoryTools extends XMBaseTest { ...@@ -131,7 +131,7 @@ public class CourseCategoryTools extends XMBaseTest {
body.put("studioId",dataApi.getLoginInfo().getStudioId()); body.put("studioId",dataApi.getLoginInfo().getStudioId());
body.put("categoryId",categoryId); body.put("categoryId",categoryId);
body.put("operatorId",dataApi.getLoginInfo().getAdminId()); body.put("operatorId",dataApi.getLoginInfo().getAdminId());
dataApi.doRequest(RequestType.JSON,params,body.toString(),headers).assetsSuccess(true); dataApi.doRequest(RequestType.JSON,dataparams,body.toString(),dataheadrs).assetsSuccess(true);
} }
/** /**
...@@ -153,7 +153,7 @@ public class CourseCategoryTools extends XMBaseTest { ...@@ -153,7 +153,7 @@ public class CourseCategoryTools extends XMBaseTest {
body.put("categoryId",categoryId); body.put("categoryId",categoryId);
body.put("del",del); body.put("del",del);
body.put("operatorId",dataApi.getLoginInfo().getAdminId()); body.put("operatorId",dataApi.getLoginInfo().getAdminId());
dataApi.doRequest(RequestType.JSON,params,body.toString(),headers); dataApi.doRequest(RequestType.JSON,dataparams,body.toString(),dataheadrs);
return dataApi.getBodyInJSON().getBoolean("result"); return dataApi.getBodyInJSON().getBoolean("result");
} }
......
package com.xiaomai.cases.polar.setting.pay;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.xiaomai.client.DataUserInfo;
import com.xiaomai.enums.ApiModule;
import com.xiaomai.enums.RequestType;
import com.xiaomai.enums.Terminal;
import com.xiaomai.utils.XMBaseTest;
public class PayTools extends XMBaseTest {
/**
* @param
* @description:获取通用配置-支付配置列表
* @author: yangfangfang
**/
public JSONObject getList(DataUserInfo...dataUserInfos){
dataApi.setApiModule(ApiModule.Polar_Setting)
.setApiName("API_getList")
.setTerminal(Terminal.B);
super.beforeDataRequest(dataUserInfos);
JSONObject jsonObject=new JSONObject();
jsonObject.put("tenantId",dataApi.getLoginInfo().getBrandId());
jsonObject.put("tenantType","BRAND");// "BRAND", "STUDIO", "INVALID" ]租户类型:BRAND-品牌;STUDIO-场馆[TenantTypeEnum]
JSONArray categories=new JSONArray();
categories.add("PAYMENT");
jsonObject.put("categories",categories);//"会员来源", "支付方式" ]属性类别[ RESOURCE, PAYMENT ]
jsonObject.put("brandId",dataApi.getLoginInfo().getBrandId());
jsonObject.put("studioId",dataApi.getLoginInfo().getStudioId());
jsonObject.put("operatorId",dataApi.getLoginInfo().getAdminId());
dataApi.doRequest(RequestType.JSON, dataparams, jsonObject.toJSONString(), dataheadrs).assetsSuccess(true);
JSONObject response=dataApi.getBodyInJSON();
return response;
}
/**
* @param
* @description:新建通用配置-支付方式
* @param name:支付方式名
* @author: yangfangfang
**/
public JSONObject save(String name, DataUserInfo...dataUserInfos){
dataApi.setApiModule(ApiModule.Polar_Setting)
.setApiName("API_save")
.setTerminal(Terminal.B);
super.beforeDataRequest(dataUserInfos);
JSONObject jsonObject=new JSONObject();
jsonObject.put("category","PAYMENT");
jsonObject.put("name",name);
jsonObject.put("tenantId",dataApi.getLoginInfo().getBrandId());
jsonObject.put("tenantType","BRAND");// "BRAND", "STUDIO", "INVALID" ]租户类型:BRAND-品牌;STUDIO-场馆[TenantTypeEnum]
jsonObject.put("brandId",dataApi.getLoginInfo().getBrandId());
jsonObject.put("studioId",dataApi.getLoginInfo().getStudioId());
jsonObject.put("operatorId",dataApi.getLoginInfo().getAdminId());
dataApi.doRequest(RequestType.JSON, dataparams, jsonObject.toJSONString(), dataheadrs).assetsSuccess(true);
JSONObject response=dataApi.getBodyInJSON();
return response;
}
/**
* @param
* @description:修改通用配置-支付方式(开启/关闭)
* @param id:属性ID 支付方式id
* @param name:属性名称 支付方式名称
* @param status:[ "启用", "禁用", "删除" ]状态[ ON, OFF, DEL ]
* @author: yangfangfang
**/
public JSONObject update(String id,String name, String status,DataUserInfo...dataUserInfos){
dataApi.setApiModule(ApiModule.Polar_Setting)
.setApiName("API_update")
.setTerminal(Terminal.B);
super.beforeDataRequest(dataUserInfos);
JSONObject jsonObject=new JSONObject();
jsonObject.put("id",id);
jsonObject.put("name",name);
jsonObject.put("tenantId",dataApi.getLoginInfo().getBrandId());
jsonObject.put("tenantType","BRAND");// "BRAND", "STUDIO", "INVALID" ]租户类型:BRAND-品牌;STUDIO-场馆[TenantTypeEnum]
jsonObject.put("status",status);
jsonObject.put("category","PAYMENT");
jsonObject.put("brandId",dataApi.getLoginInfo().getBrandId());
jsonObject.put("studioId",dataApi.getLoginInfo().getStudioId());
jsonObject.put("operatorId",dataApi.getLoginInfo().getAdminId());
dataApi.doRequest(RequestType.JSON, dataparams, jsonObject.toJSONString(), dataheadrs).assetsSuccess(true);
JSONObject response=dataApi.getBodyInJSON();
return response;
}
/**
* @param
* @description:删除通用配置-支付方式
* @param ids:属性ID 支付方式id
* @author: yangfangfang
**/
public JSONObject remove(String ids, DataUserInfo...dataUserInfos){
dataApi.setApiModule(ApiModule.Polar_Setting)
.setApiName("API_remove")
.setTerminal(Terminal.B);
super.beforeDataRequest(dataUserInfos);
JSONObject jsonObject=new JSONObject();
JSONArray jsonArray=new JSONArray();
jsonArray.add(ids);
jsonObject.put("ids",jsonArray);
jsonObject.put("tenantId",dataApi.getLoginInfo().getBrandId());
jsonObject.put("tenantType","BRAND");// "BRAND", "STUDIO", "INVALID" ]租户类型:BRAND-品牌;STUDIO-场馆[TenantTypeEnum]
jsonObject.put("category","PAYMENT");
jsonObject.put("brandId",dataApi.getLoginInfo().getBrandId());
jsonObject.put("studioId",dataApi.getLoginInfo().getStudioId());
jsonObject.put("operatorId",dataApi.getLoginInfo().getAdminId());
dataApi.doRequest(RequestType.JSON, dataparams, jsonObject.toJSONString(), dataheadrs).assetsSuccess(true);
JSONObject response=dataApi.getBodyInJSON();
return response;
}
/**
* @param
* @description:校验该支付方式是否使用过
* @param id:支付方式id
* @param paymentWay:支付方式code
* @author: yangfangfang
**/
public JSONObject checkPaymentWayUsed(String id, String paymentWay,DataUserInfo...dataUserInfos){
dataApi.setApiModule(ApiModule.Polar_Finance)
.setApiName("API_checkPaymentWayUsed")
.setTerminal(Terminal.B);
super.beforeDataRequest(dataUserInfos);
JSONObject jsonObject=new JSONObject();
jsonObject.put("id",id);
jsonObject.put("paymentWay",paymentWay);
jsonObject.put("brandId",dataApi.getLoginInfo().getBrandId());
jsonObject.put("studioId",dataApi.getLoginInfo().getStudioId());
jsonObject.put("operatorId",dataApi.getLoginInfo().getAdminId());
dataApi.doRequest(RequestType.JSON, dataparams, jsonObject.toJSONString(), dataheadrs).assetsSuccess(true);
JSONObject response=dataApi.getBodyInJSON();
return response;
}
}
package com.xiaomai.cases.polar.setting.pay;
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;
public class TestSave extends XMBaseTest {
PayTools payTools=new PayTools();
@BeforeMethod
public void beforeTest(){
xmAppApi.setApiModule(ApiModule.Polar_Setting)
.setApiName("API_save")
.setLoginUser(LoginAccount.GYM_PROD)
.setTerminal(Terminal.B);
dal.setCase_owner("yff")
.setCase_name(Thread.currentThread().getStackTrace()[1].getFileName().split("\\.")[0]);
super.beforeTest();
}
@Test(description = "新建自定义支付方式")
public void testSave(){
JSONObject jsonObject=new JSONObject();
jsonObject.put("category","PAYMENT");
jsonObject.put("name", RandomStringUtil.random_name());
jsonObject.put("tenantId",xmAppApi.getLoginInfo().getBrandId());
jsonObject.put("tenantType","BRAND");// "BRAND", "STUDIO", "INVALID" ]租户类型:BRAND-品牌;STUDIO-场馆[TenantTypeEnum]
jsonObject.put("brandId",xmAppApi.getLoginInfo().getBrandId());
jsonObject.put("studioId",xmAppApi.getLoginInfo().getStudioId());
jsonObject.put("operatorId",xmAppApi.getLoginInfo().getAdminId());
xmAppApi.doRequest(RequestType.JSON,params,jsonObject.toJSONString(),headers).assetsSuccess(true);
JSONObject response=xmAppApi.getBodyInJSON();
String success=response.getString("success");
String id=response.getString("result");
Assert.assertEquals(success,"true","新建自定义支付方式失败");
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
throw new RuntimeException(e);
}
//获取支付方式列表
JSONArray getList=payTools.getList().getJSONArray("result");
int length = getList.size();
JSONObject lastJsonObject = getList.getJSONObject(length - 1);
String lastCode=lastJsonObject.getString("code");
String lastId=lastJsonObject.getString("id");
Assert.assertEquals(lastId.equals(id),true,"新建自定义支付方式失败");
//校验该支付方式是否使用过
boolean checkPaymentWayUsedResult=payTools.checkPaymentWayUsed(id,lastCode).getBoolean("result");
if(checkPaymentWayUsedResult == false){
//删除新建的自定义支付方式
JSONObject removeResult=payTools.remove(id);
Assert.assertEquals(removeResult.getString("success"),"true","删除新建自定义支付方式失败");
}
}
@Test(description = "新建自定义支付方式-不可添加重复名称")
public void testSave_duplicateName(){
JSONObject jsonObject=new JSONObject();
jsonObject.put("category","PAYMENT");
jsonObject.put("name","线下支付宝");
jsonObject.put("tenantId",xmAppApi.getLoginInfo().getBrandId());
jsonObject.put("tenantType","BRAND");
jsonObject.put("brandId",xmAppApi.getLoginInfo().getBrandId());
jsonObject.put("studioId",xmAppApi.getLoginInfo().getStudioId());
jsonObject.put("operatorId",xmAppApi.getLoginInfo().getAdminId());
xmAppApi.doRequest(RequestType.JSON,params,jsonObject.toJSONString(),headers).assetsSuccess(false);
}
}
package com.xiaomai.cases.polar.setting.pay;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.xiaomai.enums.ApiModule;
import com.xiaomai.enums.LoginAccount;
import com.xiaomai.enums.Terminal;
import com.xiaomai.utils.XMBaseTest;
import org.testng.Assert;
import org.testng.annotations.BeforeMethod;
import org.testng.annotations.Test;
public class TestUpdate extends XMBaseTest {
PayTools payTools=new PayTools();
@BeforeMethod
public void beforeTest(){
xmAppApi.setApiModule(ApiModule.Polar_Setting)
.setApiName("API_update")
.setLoginUser(LoginAccount.GYM_PROD)
.setTerminal(Terminal.B);
dal.setCase_owner("yff")
.setCase_name(Thread.currentThread().getStackTrace()[1].getFileName().split("\\.")[0]);
super.beforeTest();
}
@Test(description = "修改通用配置支付方式-关闭/开启")
public void testUpdate(){
//修改默认支付方式
String getListStatus=payTools.getList().getJSONArray("result").getJSONObject(1).getString("status");
if(getListStatus == "ON"){
JSONObject update=payTools.update("1798566848871395329","线下微信","OFF");
Assert.assertEquals(update.getString("success"),"true","修改默认支付方式失败");
}
else if (getListStatus == "OFF"){
JSONObject update=payTools.update("1798566848871395329","线下微信","ON");
Assert.assertEquals(update.getString("success"),"true","修改默认支付方式失败");
}
//修改自定义方式
JSONObject saveResult=payTools.save("被修改自动化支付方式");
String saveId=saveResult.getString("result");
JSONObject OFF=new JSONObject();
OFF.put("id",saveId);
OFF.put("name","被修改自动化支付方式");
OFF.put("tenantId",xmAppApi.getLoginInfo().getBrandId());
OFF.put("tenantType","BRAND");// "BRAND", "STUDIO", "INVALID" ]租户类型:BRAND-品牌;STUDIO-场馆[TenantTypeEnum]
OFF.put("status","OFF");
OFF.put("category","PAYMENT");
OFF.put("brandId",xmAppApi.getLoginInfo().getBrandId());
OFF.put("studioId",xmAppApi.getLoginInfo().getStudioId());
OFF.put("operatorId",xmAppApi.getLoginInfo().getAdminId());
try {
Thread.sleep(2000);
} catch (InterruptedException e) {
throw new RuntimeException(e);
}
JSONObject ON=new JSONObject();
ON.put("id",saveId);
ON.put("name","被修改自动化支付方式");
ON.put("tenantId",xmAppApi.getLoginInfo().getBrandId());
ON.put("tenantType","BRAND");// "BRAND", "STUDIO", "INVALID" ]租户类型:BRAND-品牌;STUDIO-场馆[TenantTypeEnum]
ON.put("status","ON");
ON.put("category","PAYMENT");
ON.put("brandId",xmAppApi.getLoginInfo().getBrandId());
ON.put("studioId",xmAppApi.getLoginInfo().getStudioId());
ON.put("operatorId",xmAppApi.getLoginInfo().getAdminId());
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
throw new RuntimeException(e);
}
//获取支付方式列表
JSONArray getList=payTools.getList().getJSONArray("result");
int length = getList.size();
String lastCode = getList.getJSONObject(length - 1).getString("code");
//校验该支付方式是否使用过
boolean checkPaymentWayUsedResult=payTools.checkPaymentWayUsed(saveId,lastCode).getBoolean("result");
if(checkPaymentWayUsedResult == false){
//删除新建的自定义支付方式
JSONObject removeResult=payTools.remove(saveId);
Assert.assertEquals(removeResult.getString("success"),"true","删除新建自定义支付方式失败");
}
}
}
package com.xiaomai.cases.polar.setting.rules; package com.xiaomai.cases.polar.setting.rules;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import com.xiaomai.client.DataUserInfo;
import com.xiaomai.enums.ApiModule; import com.xiaomai.enums.ApiModule;
import com.xiaomai.enums.RequestType; import com.xiaomai.enums.RequestType;
import com.xiaomai.enums.Terminal; import com.xiaomai.enums.Terminal;
...@@ -37,11 +38,11 @@ public class RuleTools extends XMBaseTest { ...@@ -37,11 +38,11 @@ public class RuleTools extends XMBaseTest {
* @param cancelMinutes:截止取消预约时间 * @param cancelMinutes:截止取消预约时间
* @param cancelUnit:截止取消预约时间单位 * @param cancelUnit:截止取消预约时间单位
**/ **/
public void saveGroupBookingRules(String id,boolean allowQueuing,int bookingSeatCount,boolean xcxAutoSignIn,boolean scanSignIn,int signInBeforeMinutes,boolean startRuleRequestLimit,int startComingDayMinuteOffset,int startComingDays,boolean endRuleRequestLimit,int endBeforeMinutes,String endBeforeUnit,boolean cancelRuleLimit,int cancelMinutes,String cancelUnit){ public void saveGroupBookingRules(String id, boolean allowQueuing, int bookingSeatCount, boolean xcxAutoSignIn, boolean scanSignIn, int signInBeforeMinutes, boolean startRuleRequestLimit, int startComingDayMinuteOffset, int startComingDays, boolean endRuleRequestLimit, int endBeforeMinutes, String endBeforeUnit, boolean cancelRuleLimit, int cancelMinutes, String cancelUnit, DataUserInfo...dataUserInfos){
dataApi.setApiModule(ApiModule.Polar_Setting) dataApi.setApiModule(ApiModule.Polar_Setting)
.setApiName("API_saveGroupBookingRules") .setApiName("API_saveGroupBookingRules")
.setTerminal(Terminal.B); .setTerminal(Terminal.B);
super.beforeDataRequest(); super.beforeDataRequest(dataUserInfos);
JSONObject body = new JSONObject(); JSONObject body = new JSONObject();
body.put("brandId",dataApi.getLoginInfo().getBrandId()); body.put("brandId",dataApi.getLoginInfo().getBrandId());
......
...@@ -35,8 +35,8 @@ public class TestSaveGroupBookingRules extends BaseTestImpl { ...@@ -35,8 +35,8 @@ public class TestSaveGroupBookingRules extends BaseTestImpl {
Random random = new Random(); Random random = new Random();
int bookingSeatCount = random.nextInt(10)+1; // 席位 int bookingSeatCount = random.nextInt(10)+1; // 席位
return new Object[][]{ return new Object[][]{
{true,bookingSeatCount,true,true,random.nextInt(30)+10,true,random.nextInt(1000)+10,random.nextInt(5)+1,true,random.nextInt(1000)+10,"hour",true,random.nextInt(1000)+10,"hour"}, {true,bookingSeatCount,true,true,random.nextInt(30)+10,true,random.nextInt(1000)+10,random.nextInt(5)+1,true,random.nextInt(1000)+10,"minutes",true,random.nextInt(1000)+10,"minutes"},
{false,bookingSeatCount,false,false,random.nextInt(30)+10,false,random.nextInt(1000)+10,random.nextInt(5)+1,false,random.nextInt(1000)+10,"hour",false,random.nextInt(1000)+10,"hour"}, {false,bookingSeatCount,false,false,random.nextInt(30)+10,false,random.nextInt(1000)+10,random.nextInt(5)+1,false,random.nextInt(1000)+10,"minutes",false,random.nextInt(1000)+10,"minutes"},
}; };
} }
@Test(dataProvider = "dataProvider") @Test(dataProvider = "dataProvider")
......
package com.xiaomai.cases.polar.setting; package com.xiaomai.cases.polar.setting.tag;
import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
...@@ -6,6 +6,7 @@ import com.xiaomai.client.DataUserInfo; ...@@ -6,6 +6,7 @@ import com.xiaomai.client.DataUserInfo;
import com.xiaomai.enums.ApiModule; import com.xiaomai.enums.ApiModule;
import com.xiaomai.enums.RequestType; import com.xiaomai.enums.RequestType;
import com.xiaomai.enums.Terminal; import com.xiaomai.enums.Terminal;
import com.xiaomai.utils.TimeUtils;
import com.xiaomai.utils.XMBaseTest; import com.xiaomai.utils.XMBaseTest;
import java.util.ArrayList; import java.util.ArrayList;
...@@ -31,6 +32,8 @@ public class TagTools extends XMBaseTest { ...@@ -31,6 +32,8 @@ public class TagTools extends XMBaseTest {
jsonObject.put("bizAccountId",xmAppApi.getLoginInfo().getAdminId()); jsonObject.put("bizAccountId",xmAppApi.getLoginInfo().getAdminId());
jsonObject.put("brandId",xmAppApi.getLoginInfo().getBrandId()); jsonObject.put("brandId",xmAppApi.getLoginInfo().getBrandId());
jsonObject.put("label", label); jsonObject.put("label", label);
jsonObject.put("studioId",xmAppApi.getLoginInfo().getStudioId());
jsonObject.put("operatorId",xmAppApi.getLoginInfo().getAdminId());
dataApi.doRequest(RequestType.JSON, dataparams, jsonObject.toJSONString(), dataheadrs).assetsSuccess(true); dataApi.doRequest(RequestType.JSON, dataparams, jsonObject.toJSONString(), dataheadrs).assetsSuccess(true);
JSONObject response=dataApi.getBodyInJSON(); JSONObject response=dataApi.getBodyInJSON();
...@@ -112,6 +115,8 @@ public class TagTools extends XMBaseTest { ...@@ -112,6 +115,8 @@ public class TagTools extends XMBaseTest {
jsonObject.put("brandId",xmAppApi.getLoginInfo().getBrandId()); jsonObject.put("brandId",xmAppApi.getLoginInfo().getBrandId());
jsonObject.put("needUsageInfo","true"); jsonObject.put("needUsageInfo","true");
jsonObject.put("content",content); jsonObject.put("content",content);
jsonObject.put("studioId",xmAppApi.getLoginInfo().getStudioId());
jsonObject.put("operatorId",xmAppApi.getLoginInfo().getAdminId());
dataApi.doRequest(RequestType.JSON, dataparams, jsonObject.toJSONString(), dataheadrs).assetsSuccess(true); dataApi.doRequest(RequestType.JSON, dataparams, jsonObject.toJSONString(), dataheadrs).assetsSuccess(true);
JSONObject response=dataApi.getBodyInJSON(); JSONObject response=dataApi.getBodyInJSON();
...@@ -127,7 +132,7 @@ public class TagTools extends XMBaseTest { ...@@ -127,7 +132,7 @@ public class TagTools extends XMBaseTest {
* @date: 2024/3/16 16:28 * @date: 2024/3/16 16:28
* @return: com.alibaba.fastjson.JSONObject * @return: com.alibaba.fastjson.JSONObject
**/ **/
public JSONObject forceUpdate(String memberId, String name, String phone, String status,String tagId, DataUserInfo...dataUserInfos) { public JSONObject forceUpdate(String memberId, String name,String creator, String phone, String status,String tagId, DataUserInfo...dataUserInfos) {
dataApi.setApiModule(ApiModule.Polar_Clue) dataApi.setApiModule(ApiModule.Polar_Clue)
.setApiName("API_forceUpdate") .setApiName("API_forceUpdate")
...@@ -135,18 +140,41 @@ public class TagTools extends XMBaseTest { ...@@ -135,18 +140,41 @@ public class TagTools extends XMBaseTest {
super.beforeDataRequest(dataUserInfos); super.beforeDataRequest(dataUserInfos);
JSONObject dataJson=new JSONObject(); JSONObject dataJson=new JSONObject();
dataJson.put("id",memberId);
dataJson.put("brandId",xmAppApi.getLoginInfo().getBrandId());
dataJson.put("studioId",xmAppApi.getLoginInfo().getStudioId());
dataJson.put("memberId",memberId); dataJson.put("memberId",memberId);
dataJson.put("name",name); dataJson.put("name",name);
dataJson.put("operatorId",xmAppApi.getLoginInfo().getAdminId());
dataJson.put("phone",phone); dataJson.put("phone",phone);
dataJson.put("gender","UNKNOWN");
dataJson.put("status",status); dataJson.put("status",status);
dataJson.put("studioId",xmAppApi.getLoginInfo().getStudioId()); dataJson.put("resourceId","-1");
dataJson.put("creatorId",xmAppApi.getLoginInfo().getAdminId());
dataJson.put("wechatBindStatus","NO");
dataJson.put("created", TimeUtils.getCurrentTime());
dataJson.put("updated",TimeUtils.getCurrentTime());
dataJson.put("intention","UNKNOWN");
dataJson.put("position","INITIAL");
dataJson.put("saleId","-1");
dataJson.put("lastFeedbackResult","NONE");
dataJson.put("planReleaseTime","-1");
dataJson.put("disableOperatorId","-1");
dataJson.put("coachId","-1");
dataJson.put("creator",creator);
dataJson.put("operatorId",xmAppApi.getLoginInfo().getAdminId());
List tags = new ArrayList(); List tags = new ArrayList();
tags.add(tagId); tags.add(tagId);
dataJson.put("tags",tags); dataJson.put("tags",tags);
JSONObject refStudioList=new JSONObject();
refStudioList.put("id",xmAppApi.getLoginInfo().getStudioId());
refStudioList.put("name","小麦乐动自动化场馆");
dataJson.put("refStudioList",refStudioList);
dataApi.doRequest(RequestType.JSON, dataparams, dataJson.toJSONString(), dataheadrs).assetsSuccess(true); dataApi.doRequest(RequestType.JSON, dataparams, dataJson.toJSONString(), dataheadrs).assetsSuccess(true);
JSONObject response=dataApi.getBodyInJSON(); JSONObject response=dataApi.getBodyInJSON();
return response; return response;
......
package com.xiaomai.cases.polar.setting.tag; package com.xiaomai.cases.polar.setting.tag;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import com.xiaomai.cases.polar.setting.TagTools;
import com.xiaomai.enums.ApiModule; import com.xiaomai.enums.ApiModule;
import com.xiaomai.enums.LoginAccount; import com.xiaomai.enums.LoginAccount;
import com.xiaomai.enums.RequestType; import com.xiaomai.enums.RequestType;
...@@ -24,7 +23,7 @@ public class TestCreate extends XMBaseTest { ...@@ -24,7 +23,7 @@ public class TestCreate extends XMBaseTest {
public void beforeTest(){ public void beforeTest(){
xmAppApi.setApiModule(ApiModule.Polar_Setting) xmAppApi.setApiModule(ApiModule.Polar_Setting)
.setApiName("API_tag_create") .setApiName("API_tag_create")
.setLoginUser(LoginAccount.YFF_DEV) .setLoginUser(LoginAccount.GYM_PROD)
.setTerminal(Terminal.B); .setTerminal(Terminal.B);
dal.setCase_owner("yff") dal.setCase_owner("yff")
.setCase_name(Thread.currentThread().getStackTrace()[1].getFileName().split("\\.")[0]); .setCase_name(Thread.currentThread().getStackTrace()[1].getFileName().split("\\.")[0]);
...@@ -44,6 +43,8 @@ public class TestCreate extends XMBaseTest { ...@@ -44,6 +43,8 @@ public class TestCreate extends XMBaseTest {
jsonObject.put("bizAccountId",xmAppApi.getLoginInfo().getAdminId()); jsonObject.put("bizAccountId",xmAppApi.getLoginInfo().getAdminId());
jsonObject.put("brandId",xmAppApi.getLoginInfo().getBrandId()); jsonObject.put("brandId",xmAppApi.getLoginInfo().getBrandId());
jsonObject.put("label","自动化"+ RandomStringUtil.randomString(3)); jsonObject.put("label","自动化"+ RandomStringUtil.randomString(3));
jsonObject.put("studioId",xmAppApi.getLoginInfo().getStudioId());
jsonObject.put("operatorId",xmAppApi.getLoginInfo().getAdminId());
xmAppApi.doRequest(RequestType.JSON,params,jsonObject.toJSONString(),headers).assetsSuccess(true); xmAppApi.doRequest(RequestType.JSON,params,jsonObject.toJSONString(),headers).assetsSuccess(true);
JSONObject response=xmAppApi.getBodyInJSON(); JSONObject response=xmAppApi.getBodyInJSON();
...@@ -80,6 +81,8 @@ public class TestCreate extends XMBaseTest { ...@@ -80,6 +81,8 @@ public class TestCreate extends XMBaseTest {
jsonObject.put("bizAccountId",xmAppApi.getLoginInfo().getAdminId()); jsonObject.put("bizAccountId",xmAppApi.getLoginInfo().getAdminId());
jsonObject.put("brandId",xmAppApi.getLoginInfo().getBrandId()); jsonObject.put("brandId",xmAppApi.getLoginInfo().getBrandId());
jsonObject.put("label","自动化-禁止使用"); jsonObject.put("label","自动化-禁止使用");
jsonObject.put("studioId",xmAppApi.getLoginInfo().getStudioId());
jsonObject.put("operatorId",xmAppApi.getLoginInfo().getAdminId());
xmAppApi.doRequest(RequestType.JSON,params,jsonObject.toJSONString(),headers).assetsSuccess(false); xmAppApi.doRequest(RequestType.JSON,params,jsonObject.toJSONString(),headers).assetsSuccess(false);
JSONObject response=xmAppApi.getBodyInJSON(); JSONObject response=xmAppApi.getBodyInJSON();
......
package com.xiaomai.cases.polar.setting.tag; package com.xiaomai.cases.polar.setting.tag;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import com.xiaomai.cases.polar.setting.TagTools; import com.xiaomai.cases.polar.admin.AdminTools;
import com.xiaomai.enums.ApiModule; import com.xiaomai.enums.ApiModule;
import com.xiaomai.enums.LoginAccount; import com.xiaomai.enums.LoginAccount;
import com.xiaomai.enums.RequestType; import com.xiaomai.enums.RequestType;
...@@ -16,6 +16,7 @@ import org.testng.annotations.Test; ...@@ -16,6 +16,7 @@ import org.testng.annotations.Test;
public class TestDeleteById extends XMBaseTest { public class TestDeleteById extends XMBaseTest {
TagTools tagTools=new TagTools(); TagTools tagTools=new TagTools();
AdminTools adminTools=new AdminTools();
@BeforeMethod @BeforeMethod
...@@ -23,7 +24,7 @@ public class TestDeleteById extends XMBaseTest { ...@@ -23,7 +24,7 @@ public class TestDeleteById extends XMBaseTest {
xmAppApi.setApiModule(ApiModule.Polar_Setting) xmAppApi.setApiModule(ApiModule.Polar_Setting)
.setApiName("API_tag_deleteById") .setApiName("API_tag_deleteById")
.setLoginUser(LoginAccount.YFF_DEV) .setLoginUser(LoginAccount.GYM_PROD)
.setTerminal(Terminal.B); .setTerminal(Terminal.B);
dal.setCase_owner("yff") dal.setCase_owner("yff")
.setCase_name(Thread.currentThread().getStackTrace()[1].getFileName().split("\\.")[0]); .setCase_name(Thread.currentThread().getStackTrace()[1].getFileName().split("\\.")[0]);
...@@ -63,14 +64,18 @@ public class TestDeleteById extends XMBaseTest { ...@@ -63,14 +64,18 @@ public class TestDeleteById extends XMBaseTest {
@Test(description = "删除标签--已被本场馆会员使用-同步删除同场馆会员的标签") @Test(description = "删除标签--已被本场馆会员使用-同步删除同场馆会员的标签")
public void testDeleteById_1(){ public void testDeleteById_1(){
//memberId:1768875352924524545-自动化标签会员勿动1(还不能删除线索,不添加这么多,暂时先用一个) //memberId:1801136353800269825-自动化标签会员勿动1(还不能删除线索,不添加这么多,暂时先用一个)
//增加标签 //增加标签
JSONObject createTag=tagTools.tagCreate("自动化标签勿动1"); JSONObject createTag=tagTools.tagCreate("自动化标签勿动1");
String tagId1=createTag.getString("result"); String tagId1=createTag.getString("result");
//获取当前员工昵称
JSONObject adminResult= adminTools.getStudioAdmin(xmAppApi.getLoginInfo().getAdminId());
String nickName=adminResult.getJSONObject("result").getString("nickName");
//给会员添加标签 //给会员添加标签
JSONObject forceUpdate=tagTools.forceUpdate("1768875352924524545","自动化标签会员勿动1","10022233333","POTENTIAL",tagId1); JSONObject forceUpdate=tagTools.forceUpdate("1801136353800269825","自动化标签会员勿动1",nickName,"10022233333","POTENTIAL",tagId1);
//删除标签 //删除标签
JSONObject deleteTag1=new JSONObject(); JSONObject deleteTag1=new JSONObject();
...@@ -94,13 +99,13 @@ public class TestDeleteById extends XMBaseTest { ...@@ -94,13 +99,13 @@ public class TestDeleteById extends XMBaseTest {
@Test(description = "删除标签--已被非本场馆会员使用-不能删除") @Test(description = "删除标签--已被非本场馆会员使用-不能删除")
public void testDeleteById_2() { public void testDeleteById_2() {
//被别的场馆使用:tagId:1768900252624130050;memberId:1768900398913064961-自动化标签会员勿动1 //被别的场馆使用:tagId:1801151244447690753-自动化标签勿动;memberId:1801150921062658049-自动化标签会员勿动1
//删除标签 //删除标签
JSONObject deleteTag2=new JSONObject(); JSONObject deleteTag2=new JSONObject();
deleteTag2.put("operatorId",xmAppApi.getLoginInfo().getAdminId()); deleteTag2.put("operatorId",xmAppApi.getLoginInfo().getAdminId());
deleteTag2.put("brandId",xmAppApi.getLoginInfo().getBrandId()); deleteTag2.put("brandId",xmAppApi.getLoginInfo().getBrandId());
deleteTag2.put("studioId",xmAppApi.getLoginInfo().getStudioId()); deleteTag2.put("studioId",xmAppApi.getLoginInfo().getStudioId());
deleteTag2.put("id","1768900252624130050"); deleteTag2.put("id","1801151244447690753");
deleteTag2.put("confirm",""); deleteTag2.put("confirm","");
xmAppApi.doRequest(RequestType.JSON,params,deleteTag2.toJSONString(),headers).assetsSuccess(true); xmAppApi.doRequest(RequestType.JSON,params,deleteTag2.toJSONString(),headers).assetsSuccess(true);
......
package com.xiaomai.cases.polar.setting.tag; package com.xiaomai.cases.polar.setting.tag;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import com.xiaomai.cases.polar.admin.AdminTools;
import com.xiaomai.cases.polar.clue.MemberTools; import com.xiaomai.cases.polar.clue.MemberTools;
import com.xiaomai.cases.polar.setting.TagTools;
import com.xiaomai.enums.ApiModule; import com.xiaomai.enums.ApiModule;
import com.xiaomai.enums.LoginAccount; import com.xiaomai.enums.LoginAccount;
import com.xiaomai.enums.RequestType; import com.xiaomai.enums.RequestType;
...@@ -18,6 +18,8 @@ public class TestEdit extends XMBaseTest { ...@@ -18,6 +18,8 @@ public class TestEdit extends XMBaseTest {
TagTools tagTools=new TagTools(); TagTools tagTools=new TagTools();
MemberTools memberTools=new MemberTools(); MemberTools memberTools=new MemberTools();
AdminTools adminTools=new AdminTools();
String tagId1; String tagId1;
String tagId2; String tagId2;
String tagId3; String tagId3;
...@@ -26,7 +28,7 @@ public class TestEdit extends XMBaseTest { ...@@ -26,7 +28,7 @@ public class TestEdit extends XMBaseTest {
public void beforeTest(){ public void beforeTest(){
xmAppApi.setApiModule(ApiModule.Polar_Setting) xmAppApi.setApiModule(ApiModule.Polar_Setting)
.setApiName("API_tag_edit") .setApiName("API_tag_edit")
.setLoginUser(LoginAccount.YFF_DEV) .setLoginUser(LoginAccount.GYM_PROD)
.setTerminal(Terminal.B); .setTerminal(Terminal.B);
dal.setCase_owner("yff") dal.setCase_owner("yff")
.setCase_name(Thread.currentThread().getStackTrace()[1].getFileName().split("\\.")[0]); .setCase_name(Thread.currentThread().getStackTrace()[1].getFileName().split("\\.")[0]);
...@@ -62,14 +64,18 @@ public class TestEdit extends XMBaseTest { ...@@ -62,14 +64,18 @@ public class TestEdit extends XMBaseTest {
@Test(description = "编辑标签--已被本场馆会员使用-同步编辑使用此标签会员的标签") @Test(description = "编辑标签--已被本场馆会员使用-同步编辑使用此标签会员的标签")
public void testEdit_1(){ public void testEdit_1(){
//memberId:1768875352924524545-自动化标签会员勿动1(还不能删除线索,不添加这么多,暂时先用一个) //memberId:1801136353800269825-自动化标签会员勿动1(还不能删除线索,不添加这么多,暂时先用一个)
//增加标签 //增加标签
JSONObject createTag=tagTools.tagCreate("自动化标签勿动2"); JSONObject createTag=tagTools.tagCreate("自动化标签勿动2");
tagId2=createTag.getString("result"); tagId2=createTag.getString("result");
//获取当前员工昵称
JSONObject nickNameResult=adminTools.getStudioAdmin(xmAppApi.getLoginInfo().getAdminId());
String nickName=nickNameResult.getJSONObject("result").getString("nickName");
//给会员添加标签 //给会员添加标签
JSONObject forceUpdate=tagTools.forceUpdate("1768875352924524545","自动化标签会员勿动1","10022233333","POTENTIAL",tagId2); JSONObject forceUpdate=tagTools.forceUpdate("1801136353800269825","自动化标签会员勿动1",nickName,"10022233333","POTENTIAL",tagId2);
//编辑标签 //编辑标签
JSONObject editTag1=new JSONObject(); JSONObject editTag1=new JSONObject();
...@@ -93,7 +99,7 @@ public class TestEdit extends XMBaseTest { ...@@ -93,7 +99,7 @@ public class TestEdit extends XMBaseTest {
Assert.assertEquals(1,total,"已被本场馆使用标签编辑失败"); Assert.assertEquals(1,total,"已被本场馆使用标签编辑失败");
//查看会员详情的标签名有没有更新 //查看会员详情的标签名有没有更新
JSONObject findDetailById=memberTools.getDetailById("1768875352924524545"); JSONObject findDetailById=memberTools.getDetailById("1801136353800269825");
String label=findDetailById.getJSONObject("result").getJSONArray("tags").getJSONObject(0).getString("label"); String label=findDetailById.getJSONObject("result").getJSONArray("tags").getJSONObject(0).getString("label");
Assert.assertEquals(label,"自动化编辑呀","此标签被使用的会员未同步更新标签"); Assert.assertEquals(label,"自动化编辑呀","此标签被使用的会员未同步更新标签");
...@@ -101,14 +107,14 @@ public class TestEdit extends XMBaseTest { ...@@ -101,14 +107,14 @@ public class TestEdit extends XMBaseTest {
@Test(description = "编辑标签--已被非本场馆会员使用-不能编辑") @Test(description = "编辑标签--已被非本场馆会员使用-不能编辑")
public void testEdit_2() { public void testEdit_2() {
//被别的场馆使用:tagId:1768900252624130050;memberId:1768900398913064961-自动化标签会员勿动1 //被别的场馆使用:tagId:1801151244447690753-自动化标签勿动;memberId:1801150921062658049-自动化标签会员勿动1
//编辑标签 //编辑标签
JSONObject editTag2=new JSONObject(); JSONObject editTag2=new JSONObject();
editTag2.put("bizAccountId",xmAppApi.getLoginInfo().getAdminId()); editTag2.put("bizAccountId",xmAppApi.getLoginInfo().getAdminId());
editTag2.put("brandId",xmAppApi.getLoginInfo().getBrandId()); editTag2.put("brandId",xmAppApi.getLoginInfo().getBrandId());
editTag2.put("studioId",xmAppApi.getLoginInfo().getStudioId()); editTag2.put("studioId",xmAppApi.getLoginInfo().getStudioId());
editTag2.put("label","自动化编辑"+RandomStringUtil.randomString(2)); editTag2.put("label","自动化编辑"+RandomStringUtil.randomString(2));
editTag2.put("id","1768900252624130050"); editTag2.put("id","1801151244447690753");
xmAppApi.doRequest(RequestType.JSON,params,editTag2.toJSONString(),headers).assetsSuccess(true); xmAppApi.doRequest(RequestType.JSON,params,editTag2.toJSONString(),headers).assetsSuccess(true);
JSONObject response=xmAppApi.getBodyInJSON(); JSONObject response=xmAppApi.getBodyInJSON();
...@@ -119,7 +125,7 @@ public class TestEdit extends XMBaseTest { ...@@ -119,7 +125,7 @@ public class TestEdit extends XMBaseTest {
@Test(description = "编辑标签--编辑相同标签名失败") @Test(description = "编辑标签--编辑相同标签名失败")
public void testEdit_3() { public void testEdit_3() {
//被别的场馆使用:tagId:1768900252624130050;memberId:1768900398913064961-自动化标签会员勿动1 //被别的场馆使用:tagId:1801151244447690753-自动化标签勿动;memberId:1801150921062658049-自动化标签会员勿动1
//增加标签 //增加标签
JSONObject createTag=tagTools.tagCreate("自动化标签勿动3"); JSONObject createTag=tagTools.tagCreate("自动化标签勿动3");
...@@ -130,7 +136,7 @@ public class TestEdit extends XMBaseTest { ...@@ -130,7 +136,7 @@ public class TestEdit extends XMBaseTest {
editTag3.put("bizAccountId",xmAppApi.getLoginInfo().getAdminId()); editTag3.put("bizAccountId",xmAppApi.getLoginInfo().getAdminId());
editTag3.put("brandId",xmAppApi.getLoginInfo().getBrandId()); editTag3.put("brandId",xmAppApi.getLoginInfo().getBrandId());
editTag3.put("studioId",xmAppApi.getLoginInfo().getStudioId()); editTag3.put("studioId",xmAppApi.getLoginInfo().getStudioId());
editTag3.put("label","自动化标签勿"); editTag3.put("label","自动化标签勿");
editTag3.put("id",tagId3); editTag3.put("id",tagId3);
xmAppApi.doRequest(RequestType.JSON,params,editTag3.toJSONString(),headers).assetsSuccess(false); xmAppApi.doRequest(RequestType.JSON,params,editTag3.toJSONString(),headers).assetsSuccess(false);
......
...@@ -18,7 +18,7 @@ public class TestFetchPage extends XMBaseTest { ...@@ -18,7 +18,7 @@ public class TestFetchPage extends XMBaseTest {
xmAppApi.setApiModule(ApiModule.Polar_Setting) xmAppApi.setApiModule(ApiModule.Polar_Setting)
.setApiName("API_tag_fetchPage") .setApiName("API_tag_fetchPage")
.setLoginUser(LoginAccount.YFF_DEV) .setLoginUser(LoginAccount.GYM_PROD)
.setTerminal(Terminal.B); .setTerminal(Terminal.B);
dal.setCase_owner("yff") dal.setCase_owner("yff")
...@@ -35,6 +35,8 @@ public class TestFetchPage extends XMBaseTest { ...@@ -35,6 +35,8 @@ public class TestFetchPage extends XMBaseTest {
jsonObject.put("current",0); jsonObject.put("current",0);
jsonObject.put("brandId",xmAppApi.getLoginInfo().getBrandId()); jsonObject.put("brandId",xmAppApi.getLoginInfo().getBrandId());
jsonObject.put("needUsageInfo","true"); jsonObject.put("needUsageInfo","true");
jsonObject.put("studioId",xmAppApi.getLoginInfo().getStudioId());
jsonObject.put("operatorId",xmAppApi.getLoginInfo().getAdminId());
xmAppApi.doRequest(RequestType.JSON,params,jsonObject.toJSONString(),headers).assetsSuccess(true); xmAppApi.doRequest(RequestType.JSON,params,jsonObject.toJSONString(),headers).assetsSuccess(true);
JSONObject response=xmAppApi.getBodyInJSON(); JSONObject response=xmAppApi.getBodyInJSON();
...@@ -50,6 +52,8 @@ public class TestFetchPage extends XMBaseTest { ...@@ -50,6 +52,8 @@ public class TestFetchPage extends XMBaseTest {
jsonObject.put("current",0); jsonObject.put("current",0);
jsonObject.put("brandId",""); jsonObject.put("brandId","");
jsonObject.put("needUsageInfo","true"); jsonObject.put("needUsageInfo","true");
jsonObject.put("studioId",xmAppApi.getLoginInfo().getStudioId());
jsonObject.put("operatorId",xmAppApi.getLoginInfo().getAdminId());
xmAppApi.doRequest(RequestType.JSON,params,jsonObject.toJSONString(),headers).assetsSuccess(false); xmAppApi.doRequest(RequestType.JSON,params,jsonObject.toJSONString(),headers).assetsSuccess(false);
Assert.assertEquals(XMJSONPath.readPath(xmAppApi.getBodyInJSON(),"$message"),"品牌id不能为空"); Assert.assertEquals(XMJSONPath.readPath(xmAppApi.getBodyInJSON(),"$message"),"品牌id不能为空");
......
package com.xiaomai.cases.polar.studio;
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 com.xiaomai.utils.XMJSONPath;
import org.testng.Assert;
import org.testng.annotations.BeforeMethod;
import org.testng.annotations.Test;
public class TestBrand_get extends XMBaseTest {
@BeforeMethod
public void beforeTest(){
xmAppApi.setApiModule(ApiModule.Polar_Studio)
.setApiName("API_brand_get")
.setLoginUser(LoginAccount.GYM_PROD)
.setTerminal(Terminal.B);
dal.setCase_owner("yj")
.setCase_name(Thread.currentThread().getStackTrace()[1].getFileName().split("\\.")[0]);
super.beforeTest();
}
@Test(description = "获取场馆信息")
public void testbrandget() {
JSONObject jsonObject = new JSONObject();
jsonObject.put("brandId",xmAppApi.getLoginInfo().getBrandId());
jsonObject.put("studioId",xmAppApi.getLoginInfo().getStudioId());
jsonObject.put("operatorId",xmAppApi.getLoginInfo().getAdminId());
xmAppApi.doRequest(RequestType.JSON, params, jsonObject.toJSONString(), headers).assetsSuccess(true);
Assert.assertEquals(XMJSONPath.readPath(xmAppApi.getBodyInJSON(),"$code"),"200");
}
}
package com.xiaomai.cases.polar.studio;
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 com.xiaomai.utils.XMJSONPath;
import org.testng.Assert;
import org.testng.annotations.BeforeMethod;
import org.testng.annotations.Test;
import java.util.ArrayList;
import java.util.List;
public class TestEditBrand extends XMBaseTest {
@BeforeMethod
public void beforeTest(){
xmAppApi.setApiModule(ApiModule.Polar_Studio)
.setApiName("API_editBrand")
.setLoginUser(LoginAccount.GYM_PROD)
.setTerminal(Terminal.B);
dal.setCase_owner("yj")
.setCase_name(Thread.currentThread().getStackTrace()[1].getFileName().split("\\.")[0]);
super.beforeTest();
}
@Test(description = "编辑品牌信息")
public void testeditBrand() {
JSONObject Object1 = new JSONObject();
Object1.put("content", "自动化文本");
Object1.put("type", "TEXT");
List intro = new ArrayList();
intro.add(Object1);
JSONObject jsonObject = new JSONObject();
jsonObject.put("cover","1800412674735546369");
jsonObject.put("intro",intro);
jsonObject.put("logo","1800420544722051074");
jsonObject.put("name","小麦乐动自动化场馆");
jsonObject.put("brandId",xmAppApi.getLoginInfo().getBrandId());
jsonObject.put("studioId",xmAppApi.getLoginInfo().getStudioId());
jsonObject.put("operatorId",xmAppApi.getLoginInfo().getAdminId());
xmAppApi.doRequest(RequestType.JSON, params, jsonObject.toJSONString(), headers).assetsSuccess(true);
Assert.assertEquals(XMJSONPath.readPath(xmAppApi.getBodyInJSON(),"$code"),"200");
}
}
package com.xiaomai.cases.polar.studio;
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 com.xiaomai.utils.XMJSONPath;
import org.testng.Assert;
import org.testng.annotations.BeforeMethod;
import org.testng.annotations.Test;
import java.util.ArrayList;
import java.util.List;
public class TestEditStudioExt extends XMBaseTest {
@BeforeMethod
public void beforeTest(){
xmAppApi.setApiModule(ApiModule.Polar_Studio)
.setApiName("API_editStudioExt")
.setLoginUser(LoginAccount.GYM_PROD)
.setTerminal(Terminal.B);
dal.setCase_owner("yj")
.setCase_name(Thread.currentThread().getStackTrace()[1].getFileName().split("\\.")[0]);
super.beforeTest();
}
@Test(description = "编辑场馆信息")
public void testeditStudioExt() {
JSONObject address = new JSONObject();
address.put("address", "同人广场自动化编辑场馆信息");
address.put("province", 330000);
address.put("city", 330100);
address.put("distinct", 330106);
address.put("fullAddress", "浙江省杭州市西湖区同人广场自动化编辑场馆信息");
JSONObject announcement = new JSONObject();
announcement.put("announcementSwitch", "VALID");
announcement.put("content", "场馆公告自动化");
List dayOfWeeks = new ArrayList();
dayOfWeeks.add(1);
dayOfWeeks.add(2);
dayOfWeeks.add(3);
dayOfWeeks.add(4);
dayOfWeeks.add(5);
dayOfWeeks.add(6);
dayOfWeeks.add(7);
JSONObject Object = new JSONObject();
Object.put("dayOfWeeks", dayOfWeeks);
Object.put("startMinute", 0);
Object.put("endMinute", 1439);
List businessTimes = new ArrayList();
businessTimes.add(Object);
List phones = new ArrayList();
phones.add("12312312312");
List services = new ArrayList();
services.add("自动化设施");
//List images = new ArrayList();
//images.add("");
JSONObject jsonObject = new JSONObject();
jsonObject.put("address",address);
jsonObject.put("announcement",announcement);
jsonObject.put("businessTimes",businessTimes);
jsonObject.put("phones",phones);
jsonObject.put("services",services);
//jsonObject.put("images",images);
jsonObject.put("brandId",xmAppApi.getLoginInfo().getBrandId());
jsonObject.put("studioId",xmAppApi.getLoginInfo().getStudioId());
jsonObject.put("operatorId",xmAppApi.getLoginInfo().getAdminId());
xmAppApi.doRequest(RequestType.JSON, params, jsonObject.toJSONString(), headers).assetsSuccess(true);
Assert.assertEquals(XMJSONPath.readPath(xmAppApi.getBodyInJSON(),"$code"),"200");
}
}
package com.xiaomai.cases.polar.studio;
import com.alibaba.fastjson.JSONObject;
import com.xiaomai.cases.polar.memberCard.CardTools;
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 com.xiaomai.utils.XMJSONPath;
import org.testng.Assert;
import org.testng.annotations.BeforeMethod;
import org.testng.annotations.Test;
public class TestGetStudio extends XMBaseTest {
@BeforeMethod
public void beforeTest(){
xmAppApi.setApiModule(ApiModule.Polar_Studio)
.setApiName("API_getStudio")
.setLoginUser(LoginAccount.GYM_PROD)
.setTerminal(Terminal.B);
dal.setCase_owner("yj")
.setCase_name(Thread.currentThread().getStackTrace()[1].getFileName().split("\\.")[0]);
super.beforeTest();
}
@Test(description = "获取场馆信息")
public void testgetStudio() {
JSONObject jsonObject = new JSONObject();
jsonObject.put("brandId",xmAppApi.getLoginInfo().getBrandId());
jsonObject.put("studioId",xmAppApi.getLoginInfo().getStudioId());
jsonObject.put("operatorId",xmAppApi.getLoginInfo().getAdminId());
xmAppApi.doRequest(RequestType.JSON, params, jsonObject.toJSONString(), headers).assetsSuccess(true);
Assert.assertEquals(XMJSONPath.readPath(xmAppApi.getBodyInJSON(),"$code"),"200");
}
}
package com.xiaomai.cases.polar.studio;
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 com.xiaomai.utils.XMJSONPath;
import org.testng.Assert;
import org.testng.annotations.BeforeMethod;
import org.testng.annotations.Test;
public class TestGetStudioExt extends XMBaseTest {
@BeforeMethod
public void beforeTest(){
xmAppApi.setApiModule(ApiModule.Polar_Studio)
.setApiName("API_getStudioExt")
.setLoginUser(LoginAccount.GYM_PROD)
.setTerminal(Terminal.B);
dal.setCase_owner("yj")
.setCase_name(Thread.currentThread().getStackTrace()[1].getFileName().split("\\.")[0]);
super.beforeTest();
}
@Test(description = "获取场馆基础信息")
public void testgetStudioExt() {
JSONObject jsonObject = new JSONObject();
jsonObject.put("brandId",xmAppApi.getLoginInfo().getBrandId());
jsonObject.put("studioId",xmAppApi.getLoginInfo().getStudioId());
jsonObject.put("operatorId",xmAppApi.getLoginInfo().getAdminId());
xmAppApi.doRequest(RequestType.JSON, params, jsonObject.toJSONString(), headers).assetsSuccess(true);
Assert.assertEquals(XMJSONPath.readPath(xmAppApi.getBodyInJSON(),"$code"),"200");
}
}
package com.xiaomai.cases.polar.studio;
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 com.xiaomai.utils.XMJSONPath;
import org.testng.Assert;
import org.testng.annotations.BeforeMethod;
import org.testng.annotations.Test;
public class TestMessageBox_getTypes extends XMBaseTest {
@BeforeMethod
public void beforeTest(){
xmAppApi.setApiModule(ApiModule.Polar_Studio)
.setApiName("API_messageBox_getTypes")
.setLoginUser(LoginAccount.GYM_PROD)
.setTerminal(Terminal.B);
dal.setCase_owner("yj")
.setCase_name(Thread.currentThread().getStackTrace()[1].getFileName().split("\\.")[0]);
super.beforeTest();
}
@Test(description = "获取消息类型")
public void testmessageBoxGetTypes() {
JSONObject jsonObject = new JSONObject();
jsonObject.put("brandId",xmAppApi.getLoginInfo().getBrandId());
jsonObject.put("studioId",xmAppApi.getLoginInfo().getStudioId());
jsonObject.put("operatorId",xmAppApi.getLoginInfo().getAdminId());
xmAppApi.doRequest(RequestType.JSON, params, jsonObject.toJSONString(), headers).assetsSuccess(true);
Assert.assertEquals(XMJSONPath.readPath(xmAppApi.getBodyInJSON(),"$code"),"200");
}
}
package com.xiaomai.cases.polar.studio;
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 com.xiaomai.utils.XMJSONPath;
import org.testng.Assert;
import org.testng.annotations.BeforeMethod;
import org.testng.annotations.Test;
public class TestMessageBox_list extends XMBaseTest {
@BeforeMethod
public void beforeTest(){
xmAppApi.setApiModule(ApiModule.Polar_Studio)
.setApiName("API_messageBox_list")
.setLoginUser(LoginAccount.GYM_PROD)
.setTerminal(Terminal.B);
dal.setCase_owner("yj")
.setCase_name(Thread.currentThread().getStackTrace()[1].getFileName().split("\\.")[0]);
super.beforeTest();
}
@Test(description = "获取消息类型")
public void testmessageBoxlist() {
JSONObject jsonObject = new JSONObject();
jsonObject.put("current",0);
jsonObject.put("size",20);
//jsonObject.put("messageTypes","");
jsonObject.put("adminId",xmAppApi.getLoginInfo().getAdminId());
jsonObject.put("brandId",xmAppApi.getLoginInfo().getBrandId());
jsonObject.put("studioId",xmAppApi.getLoginInfo().getStudioId());
jsonObject.put("operatorId",xmAppApi.getLoginInfo().getAdminId());
xmAppApi.doRequest(RequestType.JSON, params, jsonObject.toJSONString(), headers).assetsSuccess(true);
Assert.assertEquals(XMJSONPath.readPath(xmAppApi.getBodyInJSON(),"$code"),"200");
}
}
package com.xiaomai.cases.polar.studio;
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 com.xiaomai.utils.XMJSONPath;
import org.testng.Assert;
import org.testng.annotations.BeforeMethod;
import org.testng.annotations.Test;
public class TestMessageBox_readAll extends XMBaseTest {
@BeforeMethod
public void beforeTest(){
xmAppApi.setApiModule(ApiModule.Polar_Studio)
.setApiName("API_messageBox_readAll")
.setLoginUser(LoginAccount.GYM_PROD)
.setTerminal(Terminal.B);
dal.setCase_owner("yj")
.setCase_name(Thread.currentThread().getStackTrace()[1].getFileName().split("\\.")[0]);
super.beforeTest();
}
@Test(description = "消息一键已读")
public void testmessageBoxreadAll() {
JSONObject jsonObject = new JSONObject();
jsonObject.put("onlyUnread",true);
jsonObject.put("adminId",xmAppApi.getLoginInfo().getAdminId());
jsonObject.put("brandId",xmAppApi.getLoginInfo().getBrandId());
jsonObject.put("studioId",xmAppApi.getLoginInfo().getStudioId());
jsonObject.put("operatorId",xmAppApi.getLoginInfo().getAdminId());
xmAppApi.doRequest(RequestType.JSON, params, jsonObject.toJSONString(), headers).assetsSuccess(true);
Assert.assertEquals(XMJSONPath.readPath(xmAppApi.getBodyInJSON(),"$code"),"200");
}
}
package com.xiaomai.cases.polar.studio;
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 com.xiaomai.utils.XMJSONPath;
import org.testng.Assert;
import org.testng.annotations.BeforeMethod;
import org.testng.annotations.Test;
import java.util.ArrayList;
import java.util.List;
public class TestSaveShortcutEntries extends XMBaseTest {
@BeforeMethod
public void beforeTest(){
xmAppApi.setApiModule(ApiModule.Polar_Studio)
.setApiName("API_saveShortcutEntries")
.setLoginUser(LoginAccount.GYM_PROD)
.setTerminal(Terminal.B);
dal.setCase_owner("yj")
.setCase_name(Thread.currentThread().getStackTrace()[1].getFileName().split("\\.")[0]);
super.beforeTest();
}
@Test(description = "编辑首页功能")
public void testsaveShortcutEntries() {
JSONObject jsonObject = new JSONObject();
List shortcutEntries = new ArrayList();
shortcutEntries.add("CLUE_MANAGEMENT");
shortcutEntries.add("FOLLOW_MANAGEMENT");
shortcutEntries.add("CARD_MANAGEMENT");
shortcutEntries.add("TRAINING_CAMP");
shortcutEntries.add("COURSE_MANAGEMENT");
shortcutEntries.add("WORKOUT_SCHEDULE");
shortcutEntries.add("RESERVE_RECORD");
shortcutEntries.add("BILLING");
shortcutEntries.add("ORDER_MANAGEMENT");
shortcutEntries.add("INCOME_OUTCOME");
jsonObject.put("adminId",xmAppApi.getLoginInfo().getAdminId());
jsonObject.put("shortcutEntries",shortcutEntries);
xmAppApi.doRequest(RequestType.JSON, params, jsonObject.toJSONString(), headers).assetsSuccess(true);
Assert.assertEquals(XMJSONPath.readPath(xmAppApi.getBodyInJSON(),"$code"),"200");
}
}
...@@ -33,6 +33,11 @@ public class ConfigTools extends XMBaseTest { ...@@ -33,6 +33,11 @@ public class ConfigTools extends XMBaseTest {
.setTerminal(Terminal.B); .setTerminal(Terminal.B);
super.beforeDataRequest(dataUserInfos); super.beforeDataRequest(dataUserInfos);
JSONObject jsonObject = JSONObject.parseObject(body);
jsonObject.put("domainId",dataApi.getLoginInfo().getStudioId());
jsonObject.put("studioId",dataApi.getLoginInfo().getStudioId());
jsonObject.put("operatorId",dataApi.getLoginInfo().getAdminId());
jsonObject.put("brandId",dataApi.getLoginInfo().getBrandId());
dataApi.doRequest(RequestType.JSON,dataparams,body,dataheadrs).assetsSuccess(true); dataApi.doRequest(RequestType.JSON,dataparams,body,dataheadrs).assetsSuccess(true);
return dataApi.getBodyInJSON(); return dataApi.getBodyInJSON();
} }
......
package com.xiaomai.cases.polar.studioConfig;
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.TimeUtils;
import com.xiaomai.utils.XMBaseTest;
/**
* @Author zxy
* @Description
* @Date 2024/7/2 14:33
*/
public class HomeTools extends BaseTestImpl {
//首页数据概览
public JSONObject preview(String type,DataUserInfo...userInfos){
dataApi.setApiModule(ApiModule.Polar_Homepage)
.setApiName("API_preview")
.setTerminal(Terminal.B);
super.beforeDataRequest(userInfos);
JSONObject object = new JSONObject();
switch (type) {
case "本周":
object.put("startTime", TimeUtils.getWeekFirstTime());
object.put("endTime", TimeUtils.getWeekLastTime());
break;
case "本月":
object.put("startTime",TimeUtils.getMonthFristDay());
object.put("endTime",TimeUtils.getMonthLastTime());
break;
case "今日":
object.put("startTime",TimeUtils.getTodayTime());
object.put("endTime",TimeUtils.getTodayEndTime());
break;
case "昨日":
object.put("startTime",TimeUtils.getDayTime(-1,00,00));
object.put("endTime",TimeUtils.getTodayEndTime(-1));
break;
}
dataApi.doRequest(RequestType.JSON,dataparams,object.toString(),dataheadrs).assetsSuccess(true);
return dataApi.getBodyInJSON();
}
//首页今日待上课
public JSONObject queryTodaySchedule(DataUserInfo...userInfos){
dataApi.setApiModule(ApiModule.Polar_Homepage)
.setApiName("API_queryTodaySchedule")
.setTerminal(Terminal.B);
super.beforeDataRequest(userInfos);
JSONObject object = new JSONObject();
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 queryTodayFeedback(DataUserInfo...userInfos){
dataApi.setApiModule(ApiModule.Polar_Homepage)
.setApiName("API_queryTodayFeedback")
.setTerminal(Terminal.B);
super.beforeDataRequest(userInfos);
JSONObject object = new JSONObject();
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();
}
}
package com.xiaomai.cases.polar.utils;
import com.alibaba.fastjson.JSONArray;
import java.math.BigDecimal;
import java.math.RoundingMode;
import java.util.Random;
/**
* @Author zxy
* @Description
* @Date 2024/7/2 17:57
*/
public class CommonUtil {
/**
* 把字符串解析成JSONArray
*
* @param str
* @return
*/
public static JSONArray JsonArray2Str(String str) {
JSONArray jsonArray = JSONArray.parseArray(str);
return jsonArray;
}
/**
* 获取手机号,以1111开头
*
* @param random
* @return
*/
public static Long getRandomPhone(Random random) {
Integer randomNum = random.nextInt(100000000);
return 11111000000L + randomNum;
}
/**
* @param mark 打标,比如获取的是员工:员工,校长;获取的是学员:_杜同学,同学来自线索导入
* @return 学员姓名
*/
public static String getRandomName(String mark) {
StringBuilder sb = new StringBuilder();
String firstName = "杜张王李赵彭柏孙谢钮徐薛劳周程钟郭竺杨黄苏艾楼陈曹蒋牛";
String nameMiddle = "ABCDEFGHIJKLMNOPQRSTUVWXTZ";
String nameNum = "零一二三四五六七八九十";
Random randomGenerator = new Random();
int randomInt = randomGenerator.nextInt(firstName.length());
sb.append(firstName, randomInt, randomInt + 1);
randomInt = randomGenerator.nextInt(nameMiddle.length());
sb.append(nameMiddle, randomInt, randomInt + 1);
randomInt = randomGenerator.nextInt(nameNum.length());
sb.append(nameNum, randomInt, randomInt + 1);
if (mark != null && mark.length() != 0) {
sb.append(mark);
}
return sb.toString();
}
/**
* 保留2位小数
*
* @param d
* @return
*/
public static String formatDouble2(double d) {
// 新方法,如果不需要四舍五入,可以使用RoundingMode.DOWN
return new BigDecimal(d).setScale(2, RoundingMode.HALF_UP).stripTrailingZeros().toPlainString();
}
/**
* 保留2位小数
*
* @param d
* @return
*/
public static Double formatDouble(double d) {
// 新方法,如果不需要四舍五入,可以使用RoundingMode.DOWN
return new BigDecimal(d).setScale(2, RoundingMode.HALF_UP).stripTrailingZeros().doubleValue();
}
}
package com.xiaomai.cases.polar.utils.Entity;
/**
* @Author zxy
* @Description
* @Date 2024/7/3 10:32
*/
public class SignatureVO {
//资源ID
private Long resourceId;
//接入ID
private String accessId;
//访问策略
private String policy;
//签名
private String signature;
//对象路径
private String key;
//接入点
private String host;
//过期时间
private String expire;
private String extAttrs;
//回调地址
private String callback;
private String algorithm;
public Long getResourceId() {
return resourceId;
}
public void setResourceId(Long resourceId) {
this.resourceId = resourceId;
}
public String getAccessId() {
return accessId;
}
public void setAccessId(String accessId) {
this.accessId = accessId;
}
public String getPolicy() {
return policy;
}
public void setPolicy(String policy) {
this.policy = policy;
}
public String getSignature() {
return signature;
}
public void setSignature(String signature) {
this.signature = signature;
}
public String getKey() {
return key;
}
public void setKey(String key) {
this.key = key;
}
public String getHost() {
return host;
}
public void setHost(String host) {
this.host = host;
}
public String getExpire() {
return expire;
}
public void setExpire(String expire) {
this.expire = expire;
}
public String getCallback() {
return callback;
}
public void setCallback(String callback) {
this.callback = callback;
}
public String getExtAttrs() {
return extAttrs;
}
public void setExtAttrs(String extAttrs) {
this.extAttrs = extAttrs;
}
public String getAlgorithm() {
return algorithm;
}
public void setAlgorithm(String algorithm) {
this.algorithm = algorithm;
}
}
package com.xiaomai.cases.polar.utils;
import com.xiaomai.cases.polar.enums.ExcelImportEnum;
import org.apache.commons.lang3.StringUtils;
import org.apache.log4j.Logger;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.ss.usermodel.Workbook;
import java.io.*;
import java.util.Random;
/**
* @Author zxy
* @Description
* @Date 2024/7/2 17:47
*/
public class ModifyExcelContentUtil {
private static final Logger logger = Logger.getLogger(ModifyExcelContentUtil.class);
/**
* 修改excel中的姓名和手机号信息
* @param fileUrl
* @param sheetName
* @param importBusinessEnum 业务类型
*/
public static void modifyExcel(String fileUrl, String sheetName, ExcelImportEnum importBusinessEnum){
int rowIndex=0;
int nameCellIndex=0;
int phoneCellIndex=1;
Long now = System.currentTimeMillis();
Random random = new Random(now);
String name="";
rowIndex=importBusinessEnum.getRowStartIndex();
nameCellIndex=importBusinessEnum.getCellNametIndex();
phoneCellIndex=importBusinessEnum.getCellPhoneIndex();
name = getRandomName("导入线索");
try {
InputStream inputStream = new FileInputStream(fileUrl);
//根据指定的文件输入流导入Excel从而产生Workbook对象
Workbook workbook = new HSSFWorkbook(inputStream);
//根据sheetname获取Excel文档表单
Sheet sheet = workbook.getSheet(sheetName);
//获取第rowIndex行
Row row = sheet.getRow(rowIndex);
Long phone = CommonUtil.getRandomPhone(random);
int nameCount = 1;
while(row != null && rowIndex < 5010) {
Cell phoneCell = row.getCell(phoneCellIndex);
Cell nameCell = row.getCell(nameCellIndex);
if (StringUtils.isBlank(nameCell.getStringCellValue())) {
break;
}
phoneCell.setCellValue(phone.toString());
String realName = name + nameCount;
//String realName = getRandomName("") + nameCount;
nameCell.setCellValue(realName);
nameCount ++;
phone ++;
rowIndex ++;
row = sheet.getRow(rowIndex);
}
OutputStream outputStream = new FileOutputStream(fileUrl);
workbook.write(outputStream);
outputStream.flush();
logger.info("-------------------Excel信息修改成功------------------");
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
/**
*
* @param mark 学员姓名打标:比如 在读导入、线索导入;也可以不写
* @return 学员姓名
*/
private static String getRandomName(String mark) {
StringBuilder sb = new StringBuilder();
String firstName = "杜张王李赵彭柏孙谢钮徐薛劳周程钟郭竺杨黄苏艾楼陈曹蒋牛";
String nameMiddle="ABCDEFGHIJKLMNOPQRSTUVWXTZ";
String nameNum="零一二三四五六七八九十";
Random randomGenerator = new Random();
int randomInt = randomGenerator.nextInt(firstName.length());
sb.append(firstName, randomInt, randomInt+1);
randomInt = randomGenerator.nextInt(nameMiddle.length());
sb.append(nameMiddle, randomInt, randomInt+1);
randomInt = randomGenerator.nextInt(nameNum.length());
sb.append(nameNum, randomInt, randomInt+1);
sb.append("同学_"+mark);
return sb.toString();
}
}
package com.xiaomai.cases.polar.utils;
import com.alibaba.fastjson.JSONObject;
import com.xiaomai.cases.polar.utils.Entity.SignatureVO;
import lombok.extern.slf4j.Slf4j;
import org.apache.http.Consts;
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.client.config.RequestConfig;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.entity.ContentType;
import org.apache.http.entity.mime.HttpMultipartMode;
import org.apache.http.entity.mime.MultipartEntityBuilder;
import org.apache.http.entity.mime.content.StringBody;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.log4j.Logger;
import java.io.*;
import java.net.HttpURLConnection;
import java.net.URL;
import java.util.Map;
import java.util.Random;
/**
* @Author zxy
* @Description
* @Date 2024/7/3 10:31
*/
@Slf4j
public class ResourceUtil {
public static final Logger logger = Logger.getLogger(ResourceUtil.class);
public static final String OSS_ACCESS_KEY_ID = "q-ak";
public static final String POLICY = "policy";
public static final String SIGNATURE = "q-signature";
public static final String KEY = "key";
public static final String SUCCESS_ACTION_STATUS = "success_action_status";
public static final String FILE = "file";
public static final String CALL_BACK = "x-cos-callback";
public static final String EXT_ATTRS = "q-key-time";
public static final String RESPONSE_STATUS = "200";
public static final String CONTENT_TYPE = "multipart/form-data";
/**
* 上传文件留到阿里云oss
*
* @param inputStream 文件流
* @param fileName 文件名称
* @param signatureVO 临时访问阿里云授权签名
* @return true 上传成功,false 失败
* @throws IOException 关闭文件流或httpClient连接时可能会异常
*/
public static boolean uploadFile(InputStream inputStream, String fileName,
SignatureVO signatureVO, int timeout) throws IOException {
CloseableHttpClient client = HttpClients.createDefault();
RequestConfig requestConfig = RequestConfig.custom()
//connectTimeout:指客户端和服务器建立连接的timeout,
.setConnectTimeout(2000)
//connectionRequestTimout:指从连接池获取连接的timeout
.setConnectionRequestTimeout(2000)
//socketTimeout:指客户端从服务器读取数据的timeout,超出后会抛出SocketTimeOutException,根据需要自定义
.setSocketTimeout(timeout)
.build();
HttpPost post = new HttpPost(signatureVO.getHost());
post.setConfig(requestConfig);
BufferedReader br = null;
try {
// 参数顺序问题,该死的回调,千万要注意参数的顺序,死坑死坑
MultipartEntityBuilder builder = MultipartEntityBuilder.create();
builder.setMode(HttpMultipartMode.BROWSER_COMPATIBLE);
StringBody algorithm = new StringBody(signatureVO.getAlgorithm(),
ContentType.APPLICATION_JSON);
builder.addPart("q-sign-algorithm",algorithm);
// 兼容key中的中文名称
StringBody key = new StringBody(signatureVO.getKey(),
ContentType.APPLICATION_JSON);
builder.addPart(KEY, key);
StringBody accessKeyId = new StringBody(signatureVO.getAccessId(),
ContentType.MULTIPART_FORM_DATA);
builder.addPart(OSS_ACCESS_KEY_ID, accessKeyId);
StringBody policy = new StringBody(signatureVO.getPolicy(),
ContentType.MULTIPART_FORM_DATA);
builder.addPart(POLICY, policy);
StringBody signature = new StringBody(signatureVO.getSignature(),
ContentType.MULTIPART_FORM_DATA);
builder.addPart(SIGNATURE, signature);
StringBody successActionStatus = new StringBody(RESPONSE_STATUS,
ContentType.MULTIPART_FORM_DATA);
builder.addPart(SUCCESS_ACTION_STATUS, successActionStatus);
StringBody callBackStr = new StringBody(signatureVO.getCallback(),
ContentType.MULTIPART_FORM_DATA);
builder.addPart(CALL_BACK, callBackStr);
StringBody extAttrs = new StringBody(signatureVO.getExtAttrs(),
ContentType.MULTIPART_FORM_DATA);
System.out.println("------------------"+extAttrs.toString());
builder.addPart(EXT_ATTRS, extAttrs);
builder.addBinaryBody(FILE, inputStream, ContentType.create(CONTENT_TYPE), fileName);
HttpEntity entity = builder.build();
post.setEntity(entity);
//发送请求
HttpResponse response = client.execute(post);
int status = response.getStatusLine().getStatusCode();
if (Integer.valueOf(RESPONSE_STATUS).equals(status)) {
return true;
} else {
entity = response.getEntity();
if (entity != null) {
inputStream = entity.getContent();
br = new BufferedReader(new InputStreamReader(inputStream, Consts.UTF_8));
StringBuilder message = new StringBuilder();
String body;
while ((body = br.readLine()) != null) {
message.append(body);
}
logger.error("文件上传失败!message:{}"+message);
}
return true;
}
} catch (Exception e) {
logger.error("文件上传异常!", e);
} finally {
if (br != null){
br.close();
}
inputStream.close();
client.close();
}
return false;
}
public static boolean uploadFileContentToTencent(InputStream inputStream, String fileName, SignatureVO signatureVO, int timeout, String contentType) throws IOException {
String boundary = generateBoundary();
// 设置表单的body字段值
JSONObject formFields = new JSONObject();
formFields.put("q-sign-algorithm", "sha1");
formFields.put("key", signatureVO.getKey());
formFields.put("q-ak", signatureVO.getAccessId());
formFields.put("policy", signatureVO.getPolicy());
formFields.put("q-signature", signatureVO.getSignature());
formFields.put("success_action_status", RESPONSE_STATUS);
formFields.put("x-cos-callback", signatureVO.getCallback());
formFields.put("q-key-time", signatureVO.getExtAttrs());
// 根据以上表单参数,构造最开始的body部分
String formBody = buildPostObjectBody(boundary, formFields, fileName, contentType);
HttpURLConnection conn = null;
try {
String urlStr = signatureVO.getHost();
URL url = new URL(urlStr);
conn = (HttpURLConnection) url.openConnection();
conn.setRequestMethod("POST");
conn.setRequestProperty("Content-Type", "multipart/form-data; boundary=" + boundary);
conn.setDoOutput(true);
conn.setDoInput(true);
OutputStream out = new DataOutputStream(conn.getOutputStream());
// 写入表单的最开始部分
out.write(formBody.getBytes());
// 将文件内容写入到输出流中
int readBytes;
byte[] bytes = new byte[4096];
while ((readBytes = inputStream.read(bytes)) != -1) {
out.write(bytes, 0, readBytes);
}
inputStream.close();
// 添加最后一个分割符,行首和行尾都是--
byte[] endData = ("\r\n--" + boundary + "--\r\n").getBytes();
out.write(endData);
out.flush();
out.close();
// 读取响应头部
if (Integer.valueOf(RESPONSE_STATUS).equals(conn.getResponseCode())) {
return true;
} else {
log.error("文件上传失败!message:{}",conn.getResponseCode());
}
return true;
} catch (Exception e) {
log.error("文件上传异常!", e);
return false;
} finally {
if (conn != null) {
conn.disconnect();
}
inputStream.close();
}
}
private final static char[] MULTIPART_CHARS =
"-_1234567890abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"
.toCharArray();
private static String generateBoundary() {
final StringBuilder buffer = new StringBuilder();
final Random rand = new Random();
final int count = rand.nextInt(11) + 30; // a random size from 30 to 40
for (int i = 0; i < count; i++) {
buffer.append(MULTIPART_CHARS[rand.nextInt(MULTIPART_CHARS.length)]);
}
return buffer.toString();
}
static String buildPostObjectBody(String boundary, JSONObject formFields,
String filename,
String contentType) {
StringBuilder sb = new StringBuilder();
for (Map.Entry<String,Object> entry : formFields.entrySet()) {
// 添加boundary行,行首以--开头
sb.append("--").append(boundary).append("\r\n");
// 字段名
sb.append("Content-Disposition: form-data; name=\"").append(entry.getKey())
.append("\"\r\n\r\n");
// 字段值
sb.append(entry.getValue()).append("\r\n");
}
// 添加boundary行,行首以--开头
sb.append("--").append(boundary).append("\r\n");
// 文件名
sb.append("Content-Disposition: form-data; name=\"file\"; " + "filename=\"").append(filename)
.append("\"\r\n");
// 文件类型
sb.append("Content-Type: ").append(contentType).append("\r\n\r\n");
return sb.toString();
}
}
...@@ -151,13 +151,19 @@ public class ApiTest extends AbstractTestNGSpringContextTests { ...@@ -151,13 +151,19 @@ public class ApiTest extends AbstractTestNGSpringContextTests {
executionApi.getHeadrs().put("brandId", loginInfo.getBrandId()); executionApi.getHeadrs().put("brandId", loginInfo.getBrandId());
executionApi.getHeadrs().put("studioId", loginInfo.getStudioId()); executionApi.getHeadrs().put("studioId", loginInfo.getStudioId());
executionApi.getHeadrs().put("usertype", "B"); executionApi.getHeadrs().put("usertype", "B");
executionApi.getHeadrs().put("domain", "FITNESS_ADMIN");
}else if ("minApp".equals(executionApi.getTerminal())) {
executionApi.getHeadrs().put("domain", "FITNESS_MEMBER");
executionApi.getHeadrs().put("appId", loginInfo.getWechatAppId());
executionApi.getHeadrs().put("user", loginInfo.getUser());
executionApi.getHeadrs().put("xmToken", loginInfo.getToken());
} }
executionApi.getHeadrs().put("xm_request_source", "TestGetAdmin");
executionApi.getHeadrs().put("xm-request-source", "xmTest");
executionApi.getHeadrs().put("User-Agent", "XMSport/1.0 (com.jiejing.sport; build:1; iOS 15.8.1) Alamofire/5.8.0"); executionApi.getHeadrs().put("User-Agent", "XMSport/1.0 (com.jiejing.sport; build:1; iOS 15.8.1) Alamofire/5.8.0");
executionApi.getHeadrs().put("Accept", "*/*"); executionApi.getHeadrs().put("Accept", "*/*");
executionApi.getHeadrs().put("Connection", "Keep-Alive"); executionApi.getHeadrs().put("Connection", "Keep-Alive");
executionApi.getHeadrs().put("domain", "FITNESS_ADMIN");
// 接口未设置请求头,则默认为 application/json // 接口未设置请求头,则默认为 application/json
if (api.containsKey("apiContentType") || StringUtils.isEmpty(api.getString("apiContentType"))) { if (api.containsKey("apiContentType") || StringUtils.isEmpty(api.getString("apiContentType"))) {
executionApi.getHeadrs().put("Content-type", "application/json;charset=utf-8"); executionApi.getHeadrs().put("Content-type", "application/json;charset=utf-8");
......
...@@ -174,13 +174,17 @@ public class BaseTest extends AbstractTestNGSpringContextTests { ...@@ -174,13 +174,17 @@ public class BaseTest extends AbstractTestNGSpringContextTests {
executionHeaders.put("brandId", loginInfo.getBrandId()); executionHeaders.put("brandId", loginInfo.getBrandId());
executionHeaders.put("studioId", loginInfo.getStudioId()); executionHeaders.put("studioId", loginInfo.getStudioId());
executionHeaders.put("usertype", "B"); executionHeaders.put("usertype", "B");
executionHeaders.put("domain", "FITNESS_ADMIN");
}else if ("minApp".equals(executionApi.getTerminal())) {
executionHeaders.put("domain", "FITNESS_MEMBER");
executionHeaders.put("appId", loginInfo.getWechatAppId());
executionHeaders.put("user", loginInfo.getUser());
executionHeaders.put("token", loginInfo.getToken());
} }
executionHeaders.put("xm-request-source", "xmTest");
executionHeaders.put("xm_request_source", "TestGetAdmin");
executionHeaders.put("User-Agent", "XMSport/1.0 (com.jiejing.sport; build:1; iOS 15.8.1) Alamofire/5.8.0"); executionHeaders.put("User-Agent", "XMSport/1.0 (com.jiejing.sport; build:1; iOS 15.8.1) Alamofire/5.8.0");
executionHeaders.put("Accept", "*/*"); executionHeaders.put("Accept", "*/*");
executionHeaders.put("domain", "FITNESS_ADMIN");
executionHeaders.put("Connection", "Keep-Alive"); executionHeaders.put("Connection", "Keep-Alive");
// 接口未设置请求头,则默认为 application/json // 接口未设置请求头,则默认为 application/json
/* if (api.containsKey("apiContentType") || StringUtils.isEmpty(api.getString("apiContentType"))) { /* if (api.containsKey("apiContentType") || StringUtils.isEmpty(api.getString("apiContentType"))) {
......
...@@ -206,7 +206,8 @@ public class OkHttpClient { ...@@ -206,7 +206,8 @@ public class OkHttpClient {
} }
} }
Headers.Builder headerBuilder = new Headers.Builder(); // Headers.Builder headerBuilder = new Headers.Builder();
headerBuilder = new Headers.Builder();
// 以 Entry 添加消息头 // 以 Entry 添加消息头
if (headerParamsMap != null && headerParamsMap.size() > 0) { if (headerParamsMap != null && headerParamsMap.size() > 0) {
Iterator iterator = headerParamsMap.entrySet().iterator(); Iterator iterator = headerParamsMap.entrySet().iterator();
......
...@@ -9,12 +9,34 @@ public class ApiModule { ...@@ -9,12 +9,34 @@ public class ApiModule {
public static String Polar_Config ="polar_config";//通知管理 public static String Polar_Config ="polar_config";//通知管理
public static String Polar_Merchant ="polar_merchant";//乐动收银 public static String Polar_Merchant ="polar_merchant";//乐动收银
public static String Polar_Setting ="polar_setting";//通用设置 public static String Polar_Setting ="polar_setting";//通用设置
public static String Polar_Clue ="polar_clue"; public static String Polar_Applet ="polar_applet";//专属小程序
public static String Polar_Clue ="polar_clue";//crm
public static String Polar_ImportTask ="polar_importTask";//导入
public static String Polar_Homepage ="polar_homePage";//首页
public static String Polar_Member ="polar_member";//会员管理 public static String Polar_Member ="polar_member";//会员管理
public static String Polar_Course ="polar_course";//会员管理 public static String Polar_Course ="polar_course";//会员管理
public static String Polar_Studio ="polar_studio";//场馆
public static String Polar_Finance="polar_finance";//财务中心 public static String Polar_Finance="polar_finance";//财务中心
public static String Polar_Schedule="polar_schedule";//课程排期
public static String Polar_Card="polar_card";//会员卡
public static String Polar_Reserve="polar_reserve";//预约
public static String Lunar_Reserve="lunar_reserve";//预约
public static String Lunar_User="lunar_user";//预约
public static String Lunar_Card ="lunar_card";//小程序会员卡
public static String Polar_Data ="polar_data";//数据中心
public static String Lunar_Order="lunar_order";//C端订单
......
...@@ -9,11 +9,14 @@ public class LoginAccount { ...@@ -9,11 +9,14 @@ public class LoginAccount {
public static String XYM_DEV = "xym_dev"; public static String XYM_DEV = "xym_dev";
public static String YFF_DEV = "yff_dev"; public static String YFF_DEV = "yff_dev";
public static String ZYX_DEV = "zyx_dev"; public static String ZYX_DEV = "zyx_dev";
public static String XYY_PROD = "xyy_prod"; public static String ZYX1_DEV = "zyx1_dev";
public static String ADU_PROD = "adu_prod"; public static String ADU_PROD = "gym_prod_du";
public static String GYM_PROD = "GYM_PROd" + public static String GYM_PROD = "gym_prod";
""; public static String GYM_PROD2 = "gym_prod2";
public static String XYM_PROD = "xym_prod";
public static String XYM_MINIAPPC = "xym_miniAppC";
public static String GYM_MINIAPPC = "gym_miniAppC";
} }
package com.xiaomai.utils; package com.xiaomai.utils;
import org.joda.time.DateTime;
import org.joda.time.LocalDate;
import org.testng.annotations.Test;
import java.beans.BeanInfo; import java.beans.BeanInfo;
import java.beans.Introspector; import java.beans.Introspector;
import java.beans.PropertyDescriptor; import java.beans.PropertyDescriptor;
import java.io.FileInputStream; import java.io.FileInputStream;
import java.lang.reflect.Method; import java.lang.reflect.Method;
import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat; import java.text.SimpleDateFormat;
import java.util.HashMap; import java.util.*;
import java.util.Map;
import java.util.Properties;
public class CommUtil { public class CommUtil {
public static Date now = new Date();
public static String getCurrentTime() { public static String getCurrentTime() {
SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
...@@ -67,4 +72,229 @@ public class CommUtil { ...@@ -67,4 +72,229 @@ public class CommUtil {
} }
} }
/**
* 在当前时间上增加days天,days – 可以为负
*
* @param days
* @return
*/
public static Date addDay(int days) {
return new LocalDate().plusDays(days).toDate();
}
public static String getFormatTimeStr(Date date, String format) {
assert date != null;
try {
return new SimpleDateFormat(format).format(date);
} catch (Exception ignored) {
return "";
}
}
/**
* 获取日期的时间戳格式
*
* @param time 制定日期时间,根据pattern格式传值
* @param pattern 时间格式 比如1>yyyy-MM-dd HH:mm:ss 2>yyyy-MM-dd 3>yyyy-MM-dd HH:mm
* @return
*/
public static String getStringTimestamp(String time, String pattern) {
Date date = null;
try {
date = getFormattedDate(time, pattern);
} catch (ParseException e) {
e.printStackTrace();
}
return date.getTime() + "";
}
/**
* 将指定格式的日期时间字符串,转换为Date
* 若 指定格式 与 日期时间字符串 不一致时,会抛出转换异常
*
* @param dateStr 日期时间字符串
* @param format 指定格式
* @return
* @throws ParseException
*/
public static Date getFormattedDate(String dateStr, String format) throws ParseException {
SimpleDateFormat sdf = new SimpleDateFormat(format);
return sdf.parse(dateStr);
}
/**
* 获取当前时间+n天的日期时间戳,一般是开始日期的时间戳 00:00:00
*
* @return
*/
public static String oneKeyGetAddDay(int day) {
Date getAddDayData = addDay(day);//获取本周的第一天
String getAddDayDataString = getFormatTimeStr(getAddDayData, "yyyy-MM-dd HH:mm:ss");//时间格式转化为string
return getStringTimestamp(getAddDayDataString, "yyyy-MM-dd HH:mm:ss");
}
public static Date getStartOfDateWeek(Date date) {
return new DateTime(date).withDayOfWeek(1).withTimeAtStartOfDay().toDate();
}
/**
* 获取本周第一天
*
* @return
*/
public static String oneKeyGetWeekStartDay() {
Date getWeekStartDayData = getStartOfDateWeek(now);//获取本周的第一天
String getWeekStartDay = getFormatTimeStr(getWeekStartDayData, "yyyy-MM-dd HH:mm:ss");//时间格式转化为string
return getStringTimestamp(getWeekStartDay, "yyyy-MM-dd HH:mm:ss");
}
public static Date getEndOfDateWeek(Date date) {
return new DateTime(date).withDayOfWeek(7).withTime(23, 59, 59, 0).toDate();
}
/**
* 获取本周最后一天
*
* @return
*/
public static String oneKeyGetWeekEndDay() {
Date getWeekEndDayData = getEndOfDateWeek(now);//获取本周的最后一天
String getWeekEndDay = getFormatTimeStr(getWeekEndDayData, "yyyy-MM-dd HH:mm:ss");//时间格式转化为string
return getStringTimestamp(getWeekEndDay, "yyyy-MM-dd HH:mm:ss");
}
/**
* 获取下周第一天
* @return
*/
public static String oneKeyGetNextWeekStartDay() {
Date getWeekStartDayData = getStartOfDateWeek(now);//获取本周的第一天
Date getNextWeekStartDayData=addNDays(getWeekStartDayData,7);
String getNextWeekStartDay = getFormatTimeStr(getNextWeekStartDayData, "yyyy-MM-dd HH:mm:ss");//时间格式转化为string
return getStringTimestamp(getNextWeekStartDay, "yyyy-MM-dd HH:mm:ss");
}
/**
* 获取下周最后一天
* @return
*/
public static String oneKeyGetNextWeekEndDay() {
Date getWeekEndDayData = getEndOfDateWeek(now);//获取本周的最后一天
Date getNextWeekEndDayData =addNDays(getWeekEndDayData,7);
String getNextWeekEndDay = getFormatTimeStr(getNextWeekEndDayData, "yyyy-MM-dd HH:mm:ss");//时间格式转化为string
return getStringTimestamp(getNextWeekEndDay, "yyyy-MM-dd HH:mm:ss");
}
/**
* 获取下周某一天(结束日期)
* @param n ,n=7是下周最后一天周日,n=6下周周六,n=5下周周五,n=4下周周四
* @return
*/
public static String oneKeyGetNextWeekEndXDay(int n) {
Date getWeekEndDayData = getEndOfDateWeek(now);//获取本周的最后一天
Date getNextWeekEndDayData =addNDays(getWeekEndDayData,n);
String getNextWeekEndDay = getFormatTimeStr(getNextWeekEndDayData, "yyyy-MM-dd HH:mm:ss");//时间格式转化为string
return getStringTimestamp(getNextWeekEndDay, "yyyy-MM-dd HH:mm:ss");
}
/**
* 获取下周某一天(开始时间)
* @param n 以7为基数(7是周一),+1(8)是周二,+2(9)是周三,10是周四
* @return
*/
public static String oneKeyGetNextWeekXDay(int n) {
Date getWeekStartDayData = getStartOfDateWeek(now);//获取本周的第一天
Date getNextWeekStartDayData=addNDays(getWeekStartDayData,n);
String getNextWeekStartDay = getFormatTimeStr(getNextWeekStartDayData, "yyyy-MM-dd HH:mm:ss");//时间格式转化为string
return getStringTimestamp(getNextWeekStartDay, "yyyy-MM-dd HH:mm:ss");
}
public static Date getEndOfDay(Date date) {
assert date != null;
return new DateTime(date).withTime(23, 59, 59, 999).toDate();
}
/**
* 设定时间+N天
*
* @param date 设置的时间 Date now=new Date();
* @param n 天
* @return
*/
public static Date addNDays(Date date, int n) {
Calendar now = Calendar.getInstance();
now.setTime(date);
now.add(Calendar.DAY_OF_MONTH, n);
return now.getTime();
}
/**
* 当前时间+n天结束日期时间戳 23:59:59
* @param n
* @return
*/
public static String getNDayEndTimeTamp(int n){
Date now = new Date();
Date totalDate = addNDays(now, n);
String getNDayEndTime = getFormatTimeStr(getEndOfDay(totalDate), "yyyy-MM-dd HH:mm:ss");//时间格式转化为string
return getStringTimestamp(getNDayEndTime, "yyyy-MM-dd HH:mm:ss");
}
/**
* 获取当前时间整点时间戳
*/
public static Long getWholeHourTimestamp(){
Calendar calendar = Calendar.getInstance();
calendar.set(Calendar.MINUTE, 0);
calendar.set(Calendar.SECOND, 0);
calendar.set(Calendar.MILLISECOND, 0);
Long wholeHourTimestamp = calendar.getTimeInMillis();
System.out.println("整点时间戳: " + wholeHourTimestamp);
return wholeHourTimestamp;
}
public static String getStringTimestampByStrTime(String time) {
String timestamp = null;
DateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm");
java.util.Date date = null;
try {
date = df.parse(time);
} catch (ParseException e) {
e.printStackTrace();
}
Calendar cal = Calendar.getInstance();
cal.setTime(date);
long timestamp1 = cal.getTimeInMillis();
timestamp = Long.toString(timestamp1);
return timestamp;
}
//@Test
public void test() {
//当天时间戳格式:2024-6-12 00:00:00点
System.out.println("当前时间时间戳" + oneKeyGetAddDay(0));
System.out.println("****" +getNDayEndTimeTamp(0));
}
public static void main(String[] args) {
getWholeHourTimestamp();
Date getWeekStartDayData = getStartOfDateWeek(now);//获取本周的第一天
Date getNextWeekXDayData=addNDays(getWeekStartDayData,9);
String getNextWeekXDayDataS = new SimpleDateFormat("yyyy-MM-dd").format(getNextWeekXDayData.getTime());
String startStamp = getStringTimestampByStrTime(getNextWeekXDayDataS + " " + "14:00");
System.out.println("********"+startStamp);
}
} }
...@@ -56,13 +56,14 @@ public class CommonLogin { ...@@ -56,13 +56,14 @@ public class CommonLogin {
if (Terminal.B.equals(loginTerminal)) { if (Terminal.B.equals(loginTerminal)) {
// 设置请求头 // 设置请求头
headers.put("Content-type", "application/json;charset=utf-8"); headers.put("Content-type", "application/json;charset=utf-8");
headers.put("xm-request-source", "xmTest");
headers.put("User-Agent", "XMSport/1.0 (com.jiejing.sport; build:1; iOS 15.8.1) Alamofire/5.8.0"); headers.put("User-Agent", "XMSport/1.0 (com.jiejing.sport; build:1; iOS 15.8.1) Alamofire/5.8.0");
String tenant = userInfo.getTenant(); String tenant = userInfo.getTenant();
String adminId = userInfo.getAdminId(); String adminId = userInfo.getAdminId();
String brandId = userInfo.getBrandId(); String brandId = userInfo.getBrandId();
String studioId = userInfo.getStudioId(); String studioId = userInfo.getStudioId();
String user = userInfo.getUser(); String user = userInfo.getUser();
url = host + "/polar/anon/login/loginAdmin?sfl=0.0&sft=20.0&version=1.0&sfr=0.0&build=1&platform=iOS&sfb=0.0"; url = host + "/polar/anon/login/loginAdmin?version=1.0&sfb=0.0&build=1&deviceType=ios&sft=20.0&sfl=0.0&sfr=0.0";
// B端登录URL // B端登录URL
logger.info("B端登录URL==>>" + url); logger.info("B端登录URL==>>" + url);
String data = "{\"accountNo\":\"" + accountNo + "\",\"certificate\":\"0000\",\"loginTerm\":\"FITNESS_ADMIN_APP\",\"loginMode\":\"PHONE_AUTH_CODE\",\"serverType\": \"B_LOGIN\"}"; String data = "{\"accountNo\":\"" + accountNo + "\",\"certificate\":\"0000\",\"loginTerm\":\"FITNESS_ADMIN_APP\",\"loginMode\":\"PHONE_AUTH_CODE\",\"serverType\": \"B_LOGIN\"}";
...@@ -87,6 +88,27 @@ public class CommonLogin { ...@@ -87,6 +88,27 @@ public class CommonLogin {
.setStudioId(studioId); .setStudioId(studioId);
loginInfoMap.add(loginUser,loginInfo); loginInfoMap.add(loginUser,loginInfo);
} else if (Terminal.minApp.equals(loginTerminal)) {
String appId = userInfo.getApp_id();
String openId = userInfo.getOpen_id();
String brandId = userInfo.getBrandId();
String studioId = userInfo.getStudioId();
String token = userInfo.getXm_token();
String user = userInfo.getUser();
headers.put("xm-request-source", "xmTest");
CommonRequestParameters loginIofo = new CommonRequestParameters()
.setUser(user)
.setDomain("FITNESS_MEMBER")
.setToken(token)
.setAccountNo(accountNo)
.setOpenId(openId)
.setToken(token)
.setWechatAppId(appId)
.setBrandId(brandId)
.setStudioId(studioId);
loginInfoMap.add(loginUser, loginIofo);
} else { } else {
logger.warn(env + "环境" + loginTerminal + "端:" + loginUser + "登陆失败:" + body.getString("message")); logger.warn(env + "环境" + loginTerminal + "端:" + loginUser + "登陆失败:" + body.getString("message"));
} }
......
...@@ -20,10 +20,16 @@ public class CommonRequestParameters { ...@@ -20,10 +20,16 @@ public class CommonRequestParameters {
private String accountNo; private String accountNo;
private String domain; private String domain;
private String wechatAppId;
private String openId;
public String getCommonParam(String userType) { public String getCommonParam(String userType) {
if ("B".equals(userType)) { if ("B".equals(userType)) {
return "?build=1&user="+user+"&tenant="+tenant+"&adminId="+adminId+"&domain="+domain+"&sft=20.0&sfr=0.0&token="+token+"&brandId="+brandId+"&studioId="+studioId+"&sfb=0.0&version=1.0&sfl=0.0&platform=iOS"; return "?build=1&user="+user+"&tenant="+tenant+"&adminId="+adminId+"&domain="+domain+"&sft=20.0&sfr=0.0&token="+token+"&brandId="+brandId+"&studioId="+studioId+"&sfb=0.0&version=1.0&sfl=0.0&platform=iOS";
}else if (Terminal.minApp.equals(userType)) {
return "?domain="+domain + "&appId=" + wechatAppId + "&token=" + token + "&openId=" + openId +"&brandId="+brandId+"&studioId="+studioId;
} else { } else {
return "?"; return "?";
} }
...@@ -109,4 +115,19 @@ public class CommonRequestParameters { ...@@ -109,4 +115,19 @@ public class CommonRequestParameters {
this.domain = domain; this.domain = domain;
return this; return this;
} }
public String getWechatAppId() {
return wechatAppId;
}
public CommonRequestParameters setWechatAppId(String wechatAppId) {
this.wechatAppId = wechatAppId;
return this;
}
public String getOpenId() {
return openId;
}
public CommonRequestParameters setOpenId(String openId) {
this.openId = openId;
return this;
}
} }
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment