Commit d950a270 by xuyamei

增加预约、取消预约

parent d06c7d95
......@@ -20,7 +20,7 @@ import org.springframework.stereotype.Component;
public class CourseTools extends XMBaseTest {
/**
* @description:创建课程
* @description:创建私教课程
* @author: xuyamei
* @date: 2024/5/6 10:53
* @param courseName:课程名称
......
......@@ -37,7 +37,7 @@ public class CardTools extends XMBaseTest {
JSONObject Object = new JSONObject();
Object.put("identifier", xmAppApi.getLoginInfo().getUser());
Object.put("benefitType", "BALANCE");
Object.put("targetScope", "GROUP_CLASS_COURSE");
Object.put("targetScope", "GROUP_CLASS_AND_PERSONAL_COURSE");
Object.put("balance", "30");
Object.put("reserveLimitType", "UN_LIMIT");
Object.put("reserveLimitNumber", 0);
......@@ -102,6 +102,26 @@ public JSONObject fetchPageOfMemberCard(DataUserInfo...dataUserInfos) {
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:会员卡搜索
......@@ -224,10 +244,38 @@ public JSONObject membercardsearch( DataUserInfo...dataUserInfos) {
}
/**
* @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");
}
......
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,params,body.toString(),headers).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,params,body.toString(),headers).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,params,body.toString(),headers).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,params,body.toString(),headers).assetsSuccess(true);
return dataApi.getBodyInJSON().getJSONObject("result");
}
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,params,body.toString(),headers).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.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(){
// todo 提交代码时要将测试账号改为正式账号
setTestInfo(ApiModule.Polar_Reserve,"API_addReserve", LoginAccount.XYM_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(1000)+10,random.nextInt(5)+1,true,random.nextInt(1000)+10,"hour",true,random.nextInt(1000)+10,"hour");
// 新学员 购买卡
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 = "";
int quantity = 0;
float price = 0;
int validPeriod = 0;
if (total == 0) {
cardId = cardTools.memberCardCreate("约课使用会员卡"+TimeUtils.getCurrentTime()).getString("result");
}
cardId = fetchPageOfMemberCard.getJSONArray("records").getJSONObject(0).getString("id");
quantity = Integer.parseInt(fetchPageOfMemberCard.getJSONArray("records").getJSONObject(0).getString("balance"));
price = Float.parseFloat(fetchPageOfMemberCard.getJSONArray("records").getJSONObject(0).getString("price"));
validPeriod = Integer.parseInt(fetchPageOfMemberCard.getJSONArray("records").getJSONObject(0).getString("validPeriod"));
//获取签单要用的卡快照id
String latestSnapshotId = orderTools.fetchDetailById(cardId,xmAppApi.getLoginInfo().getBrandId(),xmAppApi.getLoginInfo().getStudioId(),xmAppApi.getLoginInfo().getAdminId()).getJSONObject("result").getString("latestSnapshotId");
//检查会员对该卡是否超出购买上限
boolean limitResult= orderTools.checkAllowPurchase("MEMBER_CARD",cardId,cardId,"1",xmAppApi.getLoginInfo().getBrandId(),xmAppApi.getLoginInfo().getStudioId(),xmAppApi.getLoginInfo().getAdminId()).getBoolean("success");
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
throw new RuntimeException(e);
}
if( limitResult == true){
//创建订单
JSONObject orderResult = orderTools.signOrder(cardId,latestSnapshotId,quantity,price,validPeriod,latestSnapshotId,"PURCHASE",memberId,price,price,"1");
}
}
}
......@@ -49,7 +49,7 @@ public class GroupScheduleTools extends XMBaseTest {
* @param force 是否冲突
* @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) {
public void createGroupRuleSchedule(String courseId, String chiefCoachId, String startDate, String endDate, List<String> venueAreaIds, List<String> assistCoachIds, Boolean force, int endType,int minuteOffset) {
setUP("API_createGroupRuleSchedule");
JSONObject body = new JSONObject();
body.put("operatorId", dataApi.getLoginInfo().getAdminId());
......@@ -59,7 +59,7 @@ public class GroupScheduleTools extends XMBaseTest {
body.put("chiefCoachId", chiefCoachId);
body.put("minMemberNum", 2); // 开课人数
body.put("maxMemberNum", 999); //人数上限
body.put("minuteOffset", 480); //上课开始时间
body.put("minuteOffset", minuteOffset); //上课开始时间
body.put("startDate", startDate); //排课开始日期
body.put("endDate", endDate); //排课结束日期
String[] weekDaysArray = {"MONDAY", "TUESDAY", "WEDNESDAY", "THURSDAY", "FRIDAY", "SATURDAY", "SUNDAY"};
......@@ -133,13 +133,13 @@ public class GroupScheduleTools extends XMBaseTest {
* 删除团课排课日程
* @param ruleId
*/
public void delGroupRuleSchedule(String ruleId){
public void delGroupRuleSchedule(String ruleId, Boolean force){
setUP("API_delGroupRuleSchedule");
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", false);
body.put("force", force);
body.put("ruleId", ruleId);
dataApi.doRequest(RequestType.JSON, params, body.toString(), headers).assetsSuccess(true);
......@@ -227,10 +227,99 @@ public class GroupScheduleTools extends XMBaseTest {
}
/**
* @description:获取课次详情
* @author: xuyamei
* @date: 2024/6/23 17:45
* @param scheduleId
* @return: com.alibaba.fastjson.JSONObject
**/
public JSONObject getScheduleItemDetail(String scheduleId){
setUP("API_getScheduleItemDetail");
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");
}
/**
* @description:查询课表
* @author: xuyamei
* @date: 2024/6/23 17:46
* @param startDate
* @param endDate
* @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);
return dataApi.getBodyInJSON().getJSONObject("result").getJSONArray("timetableGroups").getJSONObject(0).getJSONArray("timetableList");
}
/**
* @description:TODO
* @author: xuyamei
* @date: 2024/6/23 20:45
* @param scheduleId:课次id
* @param startTime:开始时间
* @param chiefCoachId:教练
* @param minMemberNum:开课人数
* @param maxMemberNum:最大人数上限
* @param dataUserInfos
* @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);
}
/**
* @description:删除单个排课
* @author: xuyamei
* @date: 2024/6/23 21:12
* @param scheduleId :排课id
* @param dataUserInfos
* @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);
}
}
......
......@@ -75,14 +75,14 @@ public class TestCreateGroupRuleSchedule extends BaseTestImpl {
List<String> assistCoachIdS = groupScheduleTools.getStudioAdminId(chiefCoachId);
//1-创建排课日程
groupScheduleTools.createGroupRuleSchedule(courseId, chiefCoachIdS, todayStartTimeTamp, endDateTimeTamp, venueAreaIds, assistCoachIdS, false, 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 size = result.size();
String ruldId = XMJSONPath.readPath(result.getJSONObject(0), "$.ruleId");
groupScheduleTools.delGroupRuleSchedule(ruldId);
groupScheduleTools.delGroupRuleSchedule(ruldId,true);
JSONArray result2 = groupScheduleTools.getGroupRuleScheduleList(courseId, chiefCoachIdS);
//删除成功后,统计查询到的目标日程数量是否-1
Assert.assertEquals(result2.size(), size - 1);
......
......@@ -62,7 +62,7 @@ public class TestEditGroupRuleSchedule extends BaseTestImpl {
assistCoachIds.add("吴彦祖");
List<String> assistCoachIdS = groupScheduleTools.getStudioAdminId(chiefCoachId);
//1-创建排课日程
groupScheduleTools.createGroupRuleSchedule(courseId, chiefCoachIdS, theDayBeforeYesterdayTimeTamp, endDateTimeTamp, new ArrayList<>(), assistCoachIdS, false, 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);
......@@ -98,7 +98,7 @@ public class TestEditGroupRuleSchedule extends BaseTestImpl {
Assert.assertTrue(XMJSONPath.getJSONArrayByReadPath(detailResult,"$.result.venueAreaIds").containsAll(venueAreaIds),"设置有空改为有数据后没生效");
//5-删除日程
groupScheduleTools.delGroupRuleSchedule(ruldId);
groupScheduleTools.delGroupRuleSchedule(ruldId,true);
......
......@@ -17,6 +17,9 @@ public class ApiModule {
public static String Polar_Schedule="polar_schedule";//课程排期
public static String Polar_Reserve="polar_reserve";//预约
......
......@@ -11,8 +11,8 @@ public class LoginAccount {
public static String ZYX_DEV = "zyx_dev";
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 XYM_PROD = "xym_prod";
}
......@@ -62,7 +62,7 @@ public class CommonLogin {
String brandId = userInfo.getBrandId();
String studioId = userInfo.getStudioId();
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
logger.info("B端登录URL==>>" + url);
String data = "{\"accountNo\":\"" + accountNo + "\",\"certificate\":\"0000\",\"loginTerm\":\"FITNESS_ADMIN_APP\",\"loginMode\":\"PHONE_AUTH_CODE\",\"serverType\": \"B_LOGIN\"}";
......
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