Commit ddbf6db4 by DuJunLi

增加删除课次和编辑课次的case

parent a481c5ad
...@@ -17,6 +17,7 @@ import javax.annotation.Resource; ...@@ -17,6 +17,7 @@ import javax.annotation.Resource;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Arrays; import java.util.Arrays;
import java.util.List; import java.util.List;
import java.util.Set;
import java.util.stream.Collectors; import java.util.stream.Collectors;
/** /**
...@@ -37,7 +38,7 @@ public class GroupScheduleTools extends XMBaseTest { ...@@ -37,7 +38,7 @@ public class GroupScheduleTools extends XMBaseTest {
super.beforeDataRequest(userInfo); super.beforeDataRequest(userInfo);
} }
/** /**
* 创建团课排课 * 创建团课排课
* *
* @param courseId 团课课程ID * @param courseId 团课课程ID
...@@ -49,7 +50,7 @@ public class GroupScheduleTools extends XMBaseTest { ...@@ -49,7 +50,7 @@ public class GroupScheduleTools extends XMBaseTest {
* @param force 是否冲突 false有2种场景:1无冲突时直接传false排课创建成功,2是有冲突时传false代表不忽略冲突,不会创建排课;true是指有冲突时忽略冲突,选择仍要排课【没冲突时就传false,有冲突就传true,如果排课时有冲突但是传了false不会创建排课哈】 * @param force 是否冲突 false有2种场景:1无冲突时直接传false排课创建成功,2是有冲突时传false代表不忽略冲突,不会创建排课;true是指有冲突时忽略冲突,选择仍要排课【没冲突时就传false,有冲突就传true,如果排课时有冲突但是传了false不会创建排课哈】
* @param endType 排课结束方式:1 按日期,2 按次数 * @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) { 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); setUP("API_createGroupRuleSchedule", userInfo);
JSONObject body = new JSONObject(); JSONObject body = new JSONObject();
body.put("operatorId", dataApi.getLoginInfo().getAdminId()); body.put("operatorId", dataApi.getLoginInfo().getAdminId());
...@@ -73,114 +74,117 @@ public class GroupScheduleTools extends XMBaseTest { ...@@ -73,114 +74,117 @@ public class GroupScheduleTools extends XMBaseTest {
body.put("endDate", CommUtil.getNDayEndTimeTamp(60)); //排课结束日期,这里就设置自动延顺60天,结束日期会覆盖你传的endDate body.put("endDate", CommUtil.getNDayEndTimeTamp(60)); //排课结束日期,这里就设置自动延顺60天,结束日期会覆盖你传的endDate
} }
dataApi.doRequest(RequestType.JSON,dataparams,body.toString(),dataheadrs).assetsSuccess(true); dataApi.doRequest(RequestType.JSON, dataparams, body.toString(), dataheadrs).assetsSuccess(true);
} }
/** /**
* 查看排课日程 * 查看排课日程
*
* @param courseId 可根据课程查询 * @param courseId 可根据课程查询
* @param coachId 可根据教练查询 * @param coachId 可根据教练查询
* @return * @return
*/ */
public JSONArray getGroupRuleScheduleList(String courseId, String coachId,DataUserInfo... userInfo){ public JSONArray getGroupRuleScheduleList(String courseId, String coachId, DataUserInfo... userInfo) {
setUP("API_getGroupRuleScheduleList",userInfo); setUP("API_getGroupRuleScheduleList", userInfo);
JSONObject body = new JSONObject(); JSONObject body = new JSONObject();
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());
if(courseId!=null&&courseId.length()!=0){ if (courseId != null && courseId.length() != 0) {
body.put("courseId", courseId); body.put("courseId", courseId);
} }
if(coachId!=null&&coachId.length()!=0){ if (coachId != null && coachId.length() != 0) {
body.put("coachId", coachId); body.put("coachId", coachId);
} }
dataApi.doRequest(RequestType.JSON,dataparams,body.toString(),dataheadrs).assetsSuccess(true); dataApi.doRequest(RequestType.JSON, dataparams, body.toString(), dataheadrs).assetsSuccess(true);
return XMJSONPath.getJSONArrayByReadPath(dataApi.getApi_response(),"$.result"); return XMJSONPath.getJSONArrayByReadPath(dataApi.getApi_response(), "$.result");
} }
/** /**
* 查询存量团课课程 * 查询存量团课课程
*
* @param courseName * @param courseName
* @return * @return
*/ */
public String getStockGroupCourseId(String courseName){ public String getStockGroupCourseId(String courseName) {
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();
JSONObject body = new JSONObject(); JSONObject body = new JSONObject();
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());
body.put("courseState", "ON"); body.put("courseState", "ON");
body.put("current", 0); body.put("current", 0);
body.put("size", 50); body.put("size", 50);
body.put("courseNameLike", courseName); body.put("courseNameLike", courseName);
dataApi.doRequest(RequestType.JSON,dataparams,body.toString(),dataheadrs).assetsSuccess(true); dataApi.doRequest(RequestType.JSON, dataparams, body.toString(), dataheadrs).assetsSuccess(true);
if(XMJSONPath.readPath(dataApi.getApi_response(),"$.result.records").length()==0){ if (XMJSONPath.readPath(dataApi.getApi_response(), "$.result.records").length() == 0) {
return ""; return "";
} } else {
else { return XMJSONPath.readPath(dataApi.getApi_response(), "$.result.records[0].brandCourseId");
return XMJSONPath.readPath(dataApi.getApi_response(),"$.result.records[0].brandCourseId"); }
}
}
}
/** /**
* 删除团课排课日程 * 删除团课排课日程
*
* @param ruleId * @param ruleId
*/ */
public void delGroupRuleSchedule(String ruleId, Boolean force, DataUserInfo... userInfo){ public void delGroupRuleSchedule(String ruleId, Boolean force, DataUserInfo... userInfo) {
setUP("API_delGroupRuleSchedule",userInfo); setUP("API_delGroupRuleSchedule", userInfo);
JSONObject body = new JSONObject(); JSONObject body = new JSONObject();
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());
body.put("force", force); body.put("force", force);
body.put("ruleId", ruleId); body.put("ruleId", ruleId);
dataApi.doRequest(RequestType.JSON,dataparams,body.toString(),dataheadrs).assetsSuccess(true); dataApi.doRequest(RequestType.JSON, dataparams, body.toString(), dataheadrs).assetsSuccess(true);
} }
/** /**
* 获取教练ID * 获取教练ID
*
* @param nickNameList 可根据传入的昵称,获取对应的ID * @param nickNameList 可根据传入的昵称,获取对应的ID
* @return * @return
*/ */
public List<String> getStudioAdminId(List<String> nickNameList){ public List<String> getStudioAdminId(List<String> nickNameList) {
dataApi.setApiModule(ApiModule.Polar_Admin) dataApi.setApiModule(ApiModule.Polar_Admin)
.setApiName("API_pageStudioAdmin") .setApiName("API_pageStudioAdmin")
.setTerminal(Terminal.B); .setTerminal(Terminal.B);
super.beforeDataRequest(); super.beforeDataRequest();
JSONObject body = new JSONObject(); JSONObject body = new JSONObject();
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());
body.put("current", 0); body.put("current", 0);
body.put("size", 50); body.put("size", 50);
body.put("state", "DUTY"); body.put("state", "DUTY");
body.put("teachingType", "LEAGUE_CLASS"); body.put("teachingType", "LEAGUE_CLASS");
dataApi.doRequest(RequestType.JSON,dataparams,body.toString(),dataheadrs).assetsSuccess(true); dataApi.doRequest(RequestType.JSON, dataparams, body.toString(), dataheadrs).assetsSuccess(true);
int count=Integer.valueOf(XMJSONPath.readPath(dataApi.getApi_response(),"$.result.total")); int count = Integer.valueOf(XMJSONPath.readPath(dataApi.getApi_response(), "$.result.total"));
List<String> adminIds = new ArrayList<>(); List<String> adminIds = new ArrayList<>();
if (count > 0) { if (count > 0) {
JSONArray records = XMJSONPath.getJSONArrayByReadPath(dataApi.getApi_response(), "$.result.records"); JSONArray records = XMJSONPath.getJSONArrayByReadPath(dataApi.getApi_response(), "$.result.records");
adminIds = records.stream() adminIds = records.stream()
.filter(obj -> CollectionUtils.isEmpty(nickNameList) || nickNameList.contains(((JSONObject) obj).getString("nickName"))) //如果nickNameList为空或者包含搜索结果集中对应的昵称,就会过滤 .filter(obj -> CollectionUtils.isEmpty(nickNameList) || nickNameList.contains(((JSONObject) obj).getString("nickName"))) //如果nickNameList为空或者包含搜索结果集中对应的昵称,就会过滤
.map(obj -> { .map(obj -> {
JSONObject adminIdInfo = (JSONObject) obj; JSONObject adminIdInfo = (JSONObject) obj;
return adminIdInfo.getString("id"); return adminIdInfo.getString("id");
} }
).collect(Collectors.toList()); ).collect(Collectors.toList());
return adminIds; return adminIds;
} }
return null; return null;
} }
/** /**
* 获取存量场地 * 获取存量场地
...@@ -214,28 +218,29 @@ public class GroupScheduleTools extends XMBaseTest { ...@@ -214,28 +218,29 @@ public class GroupScheduleTools extends XMBaseTest {
/** /**
* 查看团课排课日程详情 * 查看团课排课日程详情
*
* @param ruldId * @param ruldId
*/ */
public void getGroupRuleScheduleDetail(String ruldId){ public void getGroupRuleScheduleDetail(String ruldId) {
setUP("API_getGroupRuleScheduleDetail"); setUP("API_getGroupRuleScheduleDetail");
JSONObject body = new JSONObject(); JSONObject body = new JSONObject();
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());
body.put("id", ruldId); body.put("id", ruldId);
dataApi.doRequest(RequestType.JSON,dataparams,body.toString(),dataheadrs).assetsSuccess(true); dataApi.doRequest(RequestType.JSON, dataparams, body.toString(), dataheadrs).assetsSuccess(true);
} }
/** /**
* @param scheduleId
* @description:获取课次详情 * @description:获取课次详情
* @author: xuyamei * @author: xuyamei
* @date: 2024/6/23 17:45 * @date: 2024/6/23 17:45
* @param scheduleId
* @return: com.alibaba.fastjson.JSONObject * @return: com.alibaba.fastjson.JSONObject
**/ **/
public JSONObject getScheduleItemDetail(String scheduleId,DataUserInfo...dataUserInfo){ public JSONObject getScheduleItemDetail(String scheduleId, DataUserInfo... dataUserInfo) {
setUP("API_getScheduleItemDetail",dataUserInfo); setUP("API_getScheduleItemDetail", dataUserInfo);
JSONObject body = new JSONObject(); JSONObject body = new JSONObject();
body.put("operatorId", dataApi.getLoginInfo().getAdminId()); body.put("operatorId", dataApi.getLoginInfo().getAdminId());
...@@ -248,14 +253,14 @@ public class GroupScheduleTools extends XMBaseTest { ...@@ -248,14 +253,14 @@ public class GroupScheduleTools extends XMBaseTest {
} }
/** /**
* @description:查询课表
* @author: xuyamei
* @date: 2024/6/23 17:46
* @param startDate * @param startDate
* @param endDate * @param endDate
* @description:查询课表
* @author: xuyamei
* @date: 2024/6/23 17:46
* @return: com.alibaba.fastjson.JSONArray * @return: com.alibaba.fastjson.JSONArray
**/ **/
public JSONArray getGroupScheduleTable(Long startDate,Long endDate){ public JSONArray getGroupScheduleTable(Long startDate, Long endDate) {
setUP("API_getGroupScheduleTable"); setUP("API_getGroupScheduleTable");
JSONObject body = new JSONObject(); JSONObject body = new JSONObject();
body.put("operatorId", dataApi.getLoginInfo().getAdminId()); body.put("operatorId", dataApi.getLoginInfo().getAdminId());
...@@ -264,23 +269,28 @@ public class GroupScheduleTools extends XMBaseTest { ...@@ -264,23 +269,28 @@ public class GroupScheduleTools extends XMBaseTest {
body.put("startDate", startDate); body.put("startDate", startDate);
body.put("endDate", endDate); body.put("endDate", endDate);
dataApi.doRequest(RequestType.JSON, dataparams, body.toString(), dataheadrs).assetsSuccess(true); dataApi.doRequest(RequestType.JSON, dataparams, body.toString(), dataheadrs).assetsSuccess(true);
return dataApi.getBodyInJSON().getJSONObject("result").getJSONArray("timetableGroups").getJSONObject(0).getJSONArray("timetableList"); 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;
}
} }
/** /**
* @description:编辑课次
* @author: xuyamei
* @date: 2024/6/23 20:45
* @param scheduleId:课次id * @param scheduleId:课次id
* @param startTime:开始时间 * @param startTime:开始时间
* @param chiefCoachId:教练 * @param chiefCoachId:教练
* @param minMemberNum:开课人数 * @param minMemberNum:开课人数
* @param maxMemberNum:最大人数上限 * @param maxMemberNum:最大人数上限
* @param dataUserInfos * @param dataUserInfos
* @description:编辑课次
* @author: xuyamei
* @date: 2024/6/23 20:45
* @return: void * @return: void
**/ **/
public void editGroupSchedule(String scheduleId,Long startTime,String chiefCoachId,int minMemberNum,int maxMemberNum,DataUserInfo...dataUserInfos){ public void editGroupSchedule(String scheduleId, Long startTime, String chiefCoachId, int minMemberNum, int maxMemberNum, DataUserInfo... dataUserInfos) {
setUP("API_editGroupSchedule",dataUserInfos); setUP("API_editGroupSchedule", dataUserInfos);
JSONObject body = new JSONObject(); JSONObject body = new JSONObject();
body.put("operatorId", dataApi.getLoginInfo().getAdminId()); body.put("operatorId", dataApi.getLoginInfo().getAdminId());
...@@ -301,15 +311,15 @@ public class GroupScheduleTools extends XMBaseTest { ...@@ -301,15 +311,15 @@ public class GroupScheduleTools extends XMBaseTest {
/** /**
* @param scheduleId :排课id
* @param dataUserInfos
* @description:删除单个排课 * @description:删除单个排课
* @author: xuyamei * @author: xuyamei
* @date: 2024/6/23 21:12 * @date: 2024/6/23 21:12
* @param scheduleId :排课id
* @param dataUserInfos
* @return: void * @return: void
**/ **/
public void delGroupScheduleItem(String scheduleId,DataUserInfo...dataUserInfos){ public void delGroupScheduleItem(String scheduleId, DataUserInfo... dataUserInfos) {
setUP("API_delGroupScheduleItem",dataUserInfos); setUP("API_delGroupScheduleItem", dataUserInfos);
JSONObject body = new JSONObject(); JSONObject body = new JSONObject();
body.put("operatorId", dataApi.getLoginInfo().getAdminId()); body.put("operatorId", dataApi.getLoginInfo().getAdminId());
...@@ -321,6 +331,31 @@ public class GroupScheduleTools extends XMBaseTest { ...@@ -321,6 +331,31 @@ public class GroupScheduleTools extends XMBaseTest {
dataApi.doRequest(RequestType.JSON, dataparams, body.toString(), dataheadrs).assetsSuccess(true); 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()));
//删除下周周三及后续的课次
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.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
...@@ -101,8 +101,6 @@ public class TestEditGroupRuleSchedule extends BaseTestImpl { ...@@ -101,8 +101,6 @@ public class TestEditGroupRuleSchedule extends BaseTestImpl {
groupScheduleTools.delGroupRuleSchedule(ruldId,true); groupScheduleTools.delGroupRuleSchedule(ruldId,true);
} }
......
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);
//获取下周四某个时间点的开始时间戳
Date getWeekStartDayData = CommUtil.getStartOfDateWeek(now);//获取本周的第一天
Date getNextWeekXDayData=CommUtil.addNDays(getWeekStartDayData,10);
String getNextWeekXDayDataS = new SimpleDateFormat("yyyy-MM-dd").format(getNextWeekXDayData.getTime());
String startStamp = CommUtil.getStringTimestampByStrTime(getNextWeekXDayDataS + " " + "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);
//获取下周二某个时间点的开始时间戳
Date getWeekStartDayData = CommUtil.getStartOfDateWeek(now);
Date getNextWeekXDayData=CommUtil.addNDays(getWeekStartDayData,8);
String getNextWeekXDayDataS = new SimpleDateFormat("yyyy-MM-dd").format(getNextWeekXDayData.getTime());
String startStamp = CommUtil.getStringTimestampByStrTime(getNextWeekXDayDataS + " " + "13:00"); //和创建时间一致,不修改时间
body.put("startTime", startStamp);
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对应课次详情修改内容是否同步成功
groupScheduleTools.getScheduleItemDetail(scheduleId);
String detailResult = dataApi.getApi_response();
Assert.assertEquals(XMJSONPath.readPath(detailResult,"$.result.chiefCoachId"),chiefCoachIdS);
Assert.assertEquals(XMJSONPath.readPath(detailResult,"$.result.minMemberNum"),"6");
Assert.assertEquals(XMJSONPath.readPath(detailResult,"$.result.maxMemberNum"),"999");
Assert.assertEquals(XMJSONPath.readPath(detailResult,"$.result.startTime"),startStamp);
Assert.assertTrue(XMJSONPath.getJSONArrayByReadPath(detailResult,"$.result.assistCoachIds").size()==0,"助教修改后(置空)没生效");
Assert.assertTrue(XMJSONPath.getJSONArrayByReadPath(detailResult,"$.result.venueAreaIds").containsAll(venueAreaIds),"场地无修改,但是却变动了");
//查看下周三课次是否同步被修改
Set<String> scheduleIdX = groupScheduleTools.getTableDate(9);
if (!scheduleIdX.isEmpty()) {
scheduleIdX.stream().forEach(scheduleId1 -> {
//删除case1中编辑独立出去的课次
groupScheduleTools.delGroupScheduleItem(scheduleId1);
});
}
});
}
}
@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.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.Terminal;
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
...@@ -9,6 +9,7 @@ import java.beans.Introspector; ...@@ -9,6 +9,7 @@ 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.ParseException;
import java.text.SimpleDateFormat; import java.text.SimpleDateFormat;
import java.util.*; import java.util.*;
...@@ -166,6 +167,52 @@ public class CommUtil { ...@@ -166,6 +167,52 @@ public class CommUtil {
return getStringTimestamp(getWeekEndDay, "yyyy-MM-dd HH:mm:ss"); 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) { public static Date getEndOfDay(Date date) {
assert date != null; assert date != null;
return new DateTime(date).withTime(23, 59, 59, 999).toDate(); return new DateTime(date).withTime(23, 59, 59, 999).toDate();
...@@ -198,6 +245,36 @@ public class CommUtil { ...@@ -198,6 +245,36 @@ public class CommUtil {
return getStringTimestamp(getNDayEndTime, "yyyy-MM-dd HH:mm:ss"); 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 //@Test
public void test() { public void test() {
...@@ -205,6 +282,16 @@ public class CommUtil { ...@@ -205,6 +282,16 @@ public class CommUtil {
System.out.println("当前时间时间戳" + oneKeyGetAddDay(0)); System.out.println("当前时间时间戳" + oneKeyGetAddDay(0));
System.out.println("****" +getNDayEndTimeTamp(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);
} }
......
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