Commit 5ed547b2 by yangfangfang

Merge remote-tracking branch 'origin/master'

parents 3090b82e 8a961a2f
......@@ -500,4 +500,46 @@ public class ReserveCTools extends XMBaseTest {
return dataApi.getBodyInJSON();
}
/**
* @description:创建单次约课订单使用储值卡
* @author: xuyamei
* @date: 2024/7/30 11:48
* @param addToQueue 是否排队
* @param chiefCoachId 主教id
* @param memberId 会员id
* @param scheduleId 课次id
* @param scheduleStartTime 课次开始时间
* @param spanMinutes 上课时长
* @param receivableAmount 单次约课金额
* @return: java.lang.String
**/
public String createSingleReserve1(boolean addToQueue,String courseId,String chiefCoachId,String memberId,String scheduleId,long scheduleStartTime,int spanMinutes,int receivableAmount,String depositCardId,String depositAmount){
setUP("API_createSingleReserve");
JSONObject body = new JSONObject();
body.put("addToQueue",addToQueue);
JSONArray areaIds = new JSONArray();
body.put("areaIds", areaIds); // 场地
JSONArray assistantCoachIds = new JSONArray();
body.put("assistantCoachIds",assistantCoachIds); // 助教
body.put("chiefCoachId",chiefCoachId); // 教练
body.put("memberId", memberId); // 会员id
body.put("courseId", courseId); // 课次id
body.put("objectId", RandomStringUtil.randomString(16)); // 会员id
body.put("receivableAmount", receivableAmount); // 会员id
body.put("studioId", dataApi.getLoginInfo().getStudioId());
body.put("scheduleId", scheduleId);
body.put("scheduleStartTime", scheduleStartTime);
body.put("spanMinutes", spanMinutes);
body.put("brandId", dataApi.getLoginInfo().getBrandId());
body.put("depositCardId", depositCardId);
body.put("depositAmount", depositAmount);
dataApi.doRequest(RequestType.JSON,dataparams,body.toString(),dataheadrs).assetsSuccess(true);
return dataApi.getBodyInJSON().getString("result");
}
}
......@@ -127,4 +127,24 @@ public class EntryTool extends XMBaseTest {
return dataApi.getBodyInJSON();
}
//添加入场记录
public JSONObject addmemberEntry(String entryVoucherType,String entryVoucherId,String memberId){
dataApi.setApiModule(ApiModule.Polar_MemberEntry)
.setApiName("API_manual")
.setTerminal(Terminal.B);
super.beforeDataRequest();
JSONObject object = new JSONObject();
object.put("entryVoucherType",entryVoucherType);//EXPERIENCE_CARD 体验卡
object.put("memberId",memberId);
object.put("entryVoucherId",entryVoucherId);
object.put("remark","自动化脚本手动添加入场记录备注");
object.put("studioId",xmAppApi.getLoginInfo().getStudioId());
object.put("brandId",xmAppApi.getLoginInfo().getBrandId());
object.put("operatorId",xmAppApi.getLoginInfo().getAdminId());
dataApi.doRequest(RequestType.JSON,dataparams,object.toString(),dataheadrs).assetsSuccess(true);
return dataApi.getBodyInJSON();
}
}
......@@ -112,8 +112,16 @@ public class EventRegistrationTools extends BaseTestImpl {
jsonObject1.put("purchaseNumberLimit", -1);//购买限制
jsonObject1.put("skuName", "自动化-报名项目");
jsonObject1.put("stock", "100");//剩余数量
JSONObject jsonObject5 = new JSONObject();
jsonObject5.put("price", 100);//报名价格为0元
jsonObject5.put("purchaseNumberLimit", -1);//购买限制
jsonObject5.put("skuName", "自动化-积分");
jsonObject5.put("stock", "100");//剩余数量
List<JSONObject> skuItems = new ArrayList<>();//报名项目
skuItems.add(jsonObject1);
skuItems.add(jsonObject5);
JSONObject jsonObject2 = new JSONObject();//活动地点
jsonObject2.put("address", "同人广场A座");
......@@ -531,7 +539,7 @@ public class EventRegistrationTools extends BaseTestImpl {
* @param activitySkuId 报名项目id
* @param memberId 会员id
**/
public JSONObject purchaseSellableActivity( String activityId,String activitySkuId,String memberId,DataUserInfo... dataUserInfos) {
public JSONObject purchaseSellableActivity( String activityId,String receivableAmount,String activitySkuId,String memberId,DataUserInfo... dataUserInfos) {
dataApi.setApiModule(ApiModule.Lunar_Registration)
.setApiName("API_purchaseSellableActivity")
......@@ -568,7 +576,7 @@ public class EventRegistrationTools extends BaseTestImpl {
jsonObject.put("objectId", RandomStringUtil.randomString(16));
jsonObject.put("activityType", "SELLABLE_ACTIVITY");
jsonObject.put("purchaseQuantity", 1);
jsonObject.put("receivableAmount", 0);
jsonObject.put("receivableAmount", receivableAmount);
jsonObject.put("collectUserInfoList", collectUserInfoList);
......
......@@ -63,7 +63,7 @@ public class TestGetPurchaseRecordDetail extends XMBaseTest {
EventRegistrationTools.sellableActivity_checkMemberPurchaseActivity(activityId,activitySkuId,memberId);//活动报名页
EventRegistrationTools.purchaseSellableActivity(activityId,activitySkuId,memberId);//报名
EventRegistrationTools.purchaseSellableActivity(activityId, String.valueOf(0),activitySkuId,memberId);//报名
String id =XMJSONPath.readPath(dataApi.getApi_response(),"$.result");//订单ID
orderTools.getDetail(id,info);//查看B生成的订单
......
......@@ -330,9 +330,10 @@ public class PointsTools extends XMBaseTest {
jsonObject.put("enableMemberPoint", "YES");//积分功能是否打开
jsonObject.put("memberPointName", "自动化积分");//积分名称
jsonObject.put("ruleItemList", ruleItemList);//积分规则
jsonObject.put("validPeriod", "1");
jsonObject.put("validPeriod", "-1");
jsonObject.put("description", description);
System.out.println("jsonObject----"+jsonObject);
dataApi.doRequest(RequestType.JSON, dataparams, jsonObject.toJSONString(), dataheadrs).assetsSuccess(true);
JSONObject response = dataApi.getBodyInJSON();
......
......@@ -77,7 +77,7 @@ public class TestBatchPoints extends XMBaseTest {
Assert.assertEquals(AfleftBalance2,AfleftBalance1-1);//断言剩余积分数-1
//核对积分记录
//Thread.sleep(1000);
Thread.sleep(1000);
int after2 = Integer.parseInt(XMJSONPath.readPath(pointsTools.findStatementPagePermission(""), "$.result.total"));
System.out.println("after2--------"+after2);
Assert.assertEquals(after2,after1+1);//断言积分记录+1条记录
......
......@@ -39,7 +39,7 @@ public class TestFindAccountPagePermission extends XMBaseTest {
@Test(description = "场馆手动-积分")
public void testFindAccountPagePermission(){
public void testFindAccountPagePermission() throws InterruptedException {
String phone = "13357537209";
String memberId = trainingTools.searchTargerMember(phone);
if (memberId.isEmpty()) {
......@@ -59,6 +59,7 @@ public class TestFindAccountPagePermission extends XMBaseTest {
pointsTools.manualAwardPoint("1",memberId);//会员详情增加1积分
Thread.sleep(1000);
//核对积分帐户的积分的变化
int AftotalAwardBalance1 = Integer.parseInt(XMJSONPath.readPath(pointsTools.findAccountPagePermission(xmAppApi.getLoginInfo().getStudioId(),memberId), "$.result.records[0].totalAwardBalance"));//发放积分数
int AfleftBalance1 = Integer.parseInt(XMJSONPath.readPath(pointsTools.findAccountPagePermission(xmAppApi.getLoginInfo().getStudioId(),memberId), "$.result.records[0].leftBalance"));//剩余积分数
......@@ -76,6 +77,7 @@ public class TestFindAccountPagePermission extends XMBaseTest {
pointsTools.manualDeductPoint("1",memberId);//会员详情扣减1积分
Thread.sleep(1000);
//核对积分帐户的积分的变化
int AfalreadyUsedBalance2 = Integer.parseInt(XMJSONPath.readPath(pointsTools.findAccountPagePermission(xmAppApi.getLoginInfo().getStudioId(),memberId), "$.result.records[0].alreadyUsedBalance"));//已使用积分积分数
int AfleftBalance2 = Integer.parseInt(XMJSONPath.readPath(pointsTools.findAccountPagePermission(xmAppApi.getLoginInfo().getStudioId(),memberId), "$.result.records[0].leftBalance"));//剩余积分数
......
package com.xiaomai.cases.polar.points;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.xiaomai.cases.polar.course.CourseTools;
import com.xiaomai.cases.polar.entry.EntryTool;
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.camp.CampScheduleTools;
import com.xiaomai.cases.polar.schedule.group.GroupScheduleTools;
import com.xiaomai.cases.polar.setting.courseCategory.CourseCategoryTools;
import com.xiaomai.cases.polar.training.TrainingTools;
import com.xiaomai.enums.ApiModule;
import com.xiaomai.enums.LoginAccount;
import com.xiaomai.enums.Terminal;
import com.xiaomai.utils.*;
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.Calendar;
import java.util.List;
import java.util.Random;
public class TestFindStatementPagePermission extends XMBaseTest {
@BeforeMethod
public void beforeTest(){
xmAppApi.setApiModule(ApiModule.Polar_Points)
.setApiName("API_findStatementPagePermission")
.setLoginUser(LoginAccount.GYM_PROD)
.setTerminal(Terminal.B);
dal.setCase_owner("yangjian")
.setCase_name(Thread.currentThread().getStackTrace()[1].getFileName().split("\\.")[0]);
super.beforeTest();
}
@Resource(name = "pointsTools")
PointsTools pointsTools;
@Resource(name = "orderTools")
OrderTools orderTools;
String cardId;
@Resource(name = "cardTools")
CardTools cardTools;
@Resource(name = "tools")
Tools tools;
@Resource(name = "trainingTools")
TrainingTools trainingTools;
@Resource(name = "courseCategoryTools")
CourseCategoryTools courseCategoryTools;
@Resource(name = "courseTools")
CourseTools courseTools;
@Resource(name = "reserveTools")
ReserveTools reserveTools;
@Resource(name = "groupScheduleTools")
GroupScheduleTools groupScheduleTools;
@Resource(name = "campScheduleTools")
CampScheduleTools campScheduleTools;
EntryTool entryTool = new EntryTool();
@Test(description = "场馆业务触发-积分")
public void testFindAccountPagePermission() throws InterruptedException {
//创建会员
String phone = "13357537209";
String memberId = trainingTools.searchTargerMember(phone);
if (memberId.isEmpty()) {
memberId = tools.create("积分学员", phone).getString("result");
}
//初始会员积分数
int BeleftBalance = Integer.parseInt(XMJSONPath.readPath(pointsTools.findAccountPagePermission(xmAppApi.getLoginInfo().getStudioId(), memberId), "$.result.records[0].leftBalance"));
//创建会员卡
int cardTotal = Integer.parseInt(orderTools.fetchPageOfMemberCard("积分自动化会员卡", "MEMBER_CARD").getJSONObject("result").getString("total"));
if (cardTotal == 0) {
cardId = cardTools.memberCardCreate("积分自动化会员卡").getString("result");
}
JSONObject memberCard = orderTools.fetchPageOfMemberCard("积分会员卡", "MEMBER_CARD");
cardId = memberCard.getJSONObject("result").getJSONArray("records").getJSONObject(0).getString("id");//会员卡ID
//会员卡购买
BigDecimal quantity = new BigDecimal(memberCard.getJSONObject("result").getJSONArray("records").getJSONObject(0).getJSONArray("benefitList").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"));
String latestSnapshotId = orderTools.fetchDetailById(cardId, xmAppApi.getLoginInfo().getBrandId(), xmAppApi.getLoginInfo().getStudioId(), xmAppApi.getLoginInfo().getAdminId()).getJSONObject("result").getString("latestSnapshotId");//获取卡快照ID
orderTools.signOrder(cardId, latestSnapshotId, quantity, price, validPeriod, latestSnapshotId, 0, "PURCHASE", "MEMBER_CARD", memberId, price, price, "1", true);//会员购买订单,1元单
//核对购买会员卡后,积分数量对应上升
Thread.sleep(1000);
int afleftBalance1 = Integer.parseInt(XMJSONPath.readPath(pointsTools.findAccountPagePermission(xmAppApi.getLoginInfo().getStudioId(), memberId), "$.result.records[0].leftBalance"));//购买会员卡后的会员积分数
Assert.assertEquals(afleftBalance1, BeleftBalance + 15);//断言增加规则的积分数,后需要改
//创建团课,预约对应团课,签到
String todayStartTimeTamp = CommUtil.oneKeyGetAddDay(-1);
String todayEndDateTimeTamp = CommUtil.getNDayEndTimeTamp(-1);
String categoryId = courseCategoryTools.getCourseCategoryPage("积分");
String 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(), true, 1,minuteOffset[random.nextInt(20)]);
List<String> chiefCoachId = new ArrayList<>();
chiefCoachId.add("自动化昵称");
String chiefCoachIdS = groupScheduleTools.getStudioAdminId(chiefCoachId).get(0).toString();
JSONArray result = groupScheduleTools.getGroupRuleScheduleList(courseId, chiefCoachIdS);
String ruldId = XMJSONPath.readPath(result.getJSONObject(0), "$.ruleId");
// 日程列表中新增一条刚创建的规则,匹配到对应的ruldId
Long goalRuld = result.toJavaList(JSONObject.class).stream().filter(e -> e.getString("ruleId").equals(ruldId)).count();
Assert.assertTrue(goalRuld == 1);
//查看今天的课表,获取刚创建的日程中对应的课次ID
groupScheduleTools.getGroupScheduleTable(Long.valueOf(todayStartTimeTamp),Long.valueOf(todayEndDateTimeTamp),courseId);
JSONArray array = XMJSONPath.getJSONArrayByReadPath(dataApi.getApi_response(), "$.result.timetableGroups");
String scheduleId = array.toJavaList(JSONObject.class).stream()
.flatMap(e -> e.getJSONArray("timetableList").toJavaList(JSONObject.class).stream())
.filter(e -> null != e.getString("ruleId"))
.filter(e ->e.getString("ruleId").equals(ruldId))
.map(e -> e.getString("scheduleId"))//获取scheduleId
.findFirst().orElse(null);
JSONObject getScheduleItemDetail = groupScheduleTools.getScheduleItemDetail(scheduleId);
long startTime = getScheduleItemDetail.getLongValue("startTime");
cardTools.listUserReservableBenefit("1937126076413669378", "GROUP_CLASS", "MEMBER", memberId, Long.parseLong(todayStartTimeTamp));
String benefitId=XMJSONPath.readPath(dataApi.getApi_response(),"$.result[0].benefitId");
String reserveId = reserveTools.addReserve("","", benefitId,xmAppApi.getLoginInfo().getAdminId(), memberId,1,scheduleId,startTime,true);
reserveTools.signIn(true,reserveId,false);//签到
//断言签到后,积分+10
Thread.sleep(1000);
int afleftBalance2 = Integer.parseInt(XMJSONPath.readPath(pointsTools.findAccountPagePermission(xmAppApi.getLoginInfo().getStudioId(), memberId), "$.result.records[0].leftBalance"));//购买会员卡后的会员积分数
Assert.assertEquals(afleftBalance2, afleftBalance1 + 10);//断言增加规则的积分数,后需要改
//撤销签到,积分还回去
reserveTools.memberReserve_discardSignIn(reserveId);
Thread.sleep(1000);
int afleftBalance3 = Integer.parseInt(XMJSONPath.readPath(pointsTools.findAccountPagePermission(xmAppApi.getLoginInfo().getStudioId(), memberId), "$.result.records[0].leftBalance"));//购买会员卡后的会员积分数
Assert.assertEquals(afleftBalance3, afleftBalance1);//断言增加规则的积分数,后需要改
//取消预约
reserveTools.cancelMemberReserve(reserveId,true);//防止卡余额不足
String categoryId1 = courseCategoryTools.getCourseCategoryPage("健美操");
String courseId1 = courseTools.getPersonalOrGroupCourseId("PERSONAL", "自动化私教课", categoryId1, "STUDIO", "ONE_TO_MANY", 1, 1).getString(0);
JSONArray personalCoachTime = reserveTools.getPersonalTimeBlocks(xmAppApi.getLoginInfo().getAdminId(),courseId1,TimeUtils.getTodayTime());
// 获取当前日期的Calendar实例
Calendar calendar = Calendar.getInstance();
// 获取第一条的步长 转换成时间戳
int minuteOffset1 = personalCoachTime.getJSONObject(0).getIntValue("minuteOffset")/60;
calendar.set(Calendar.HOUR_OF_DAY, minuteOffset1);
calendar.set(Calendar.MINUTE, 0);
calendar.set(Calendar.SECOND, 0);
calendar.set(Calendar.MILLISECOND, 0);
// 将Calendar对象转换为时间戳
long timestamp = calendar.getTimeInMillis();
String reserveId1 = reserveTools.addPersonalReserve("",courseId1,"1796482517508263938",memberId,benefitId,10,1,"",timestamp,true);
//签到私教课
reserveTools.signIn(true,reserveId1,false);
Thread.sleep(1000);
int afleftBalance4 = Integer.parseInt(XMJSONPath.readPath(pointsTools.findAccountPagePermission(xmAppApi.getLoginInfo().getStudioId(), memberId), "$.result.records[0].leftBalance"));//购买会员卡后的会员积分数
Assert.assertEquals(afleftBalance4, afleftBalance3 + 10);//断言增加规则的积分数,后需要改
//撤销签到,积分还回去
reserveTools.memberReserve_discardSignIn(reserveId1);
Thread.sleep(1000);
int afleftBalance5 = Integer.parseInt(XMJSONPath.readPath(pointsTools.findAccountPagePermission(xmAppApi.getLoginInfo().getStudioId(), memberId), "$.result.records[0].leftBalance"));//购买会员卡后的会员积分数
Assert.assertEquals(afleftBalance5, afleftBalance3);//断言归还的规则的积分数
System.out.println("afleftBalance5--------"+afleftBalance5);
reserveTools.cancelMemberReserve(reserveId1,true);//取消私教课预约
//训练营
//int price1 =100;//保留两位小数
//double priceD =Double.parseDouble(String.valueOf(price1));//String 转double类型
//trainingTools.doSignCampOrder(memberId,priceD,"1937838684124549121","");//报名训练营
//int afleftBalance6 = Integer.parseInt(XMJSONPath.readPath(pointsTools.findAccountPagePermission(xmAppApi.getLoginInfo().getStudioId(), memberId), "$.result.records[0].leftBalance"));//购买会员卡后的会员积分数
//Assert.assertEquals(afleftBalance6, afleftBalance5+10);//断言报名训练营积分数
JSONObject deposit = cardTools.tenantMemberCardCommonSearch("DEPOSIT_CARD", "积分储值卡");
String cardId1= deposit.getJSONArray("result").getJSONObject(0).getString("id");
//会员卡购买储值卡
String latestSnapshotIdC = XMJSONPath.readPath(cardTools.fetchDetailById(cardId1), "$.result.latestSnapshotId");
cardTools.signOrderDeposit(cardId1,latestSnapshotIdC,memberId,"100","0");
Thread.sleep(1000);
int afleftBalance6 = Integer.parseInt(XMJSONPath.readPath(pointsTools.findAccountPagePermission(xmAppApi.getLoginInfo().getStudioId(), memberId), "$.result.records[0].leftBalance"));//购买会员卡后的会员积分数
Assert.assertEquals(afleftBalance6, afleftBalance5+10);//断言购买储值卡积分数+10
System.out.println("afleftBalance6--------"+afleftBalance6);
String depositCardId = XMJSONPath.readPath(orderTools.fetchUserCardList("DEPOSIT", memberId, "NORMAL"), "$.result[0].id");
List voucherResourceIds = new ArrayList();
voucherResourceIds.add("");
JSONObject body = new JSONObject();
body.put("amount", 100);
body.put("paymentWay", 3);
body.put("voucherResourceIds", voucherResourceIds);
List paymentWays = new ArrayList();
paymentWays.add(body);
cardTools.refundOrderDeposit(depositCardId,"0","100","100",memberId,"100",paymentWays,0,new BigDecimal(100),new BigDecimal(100));//操作退储值卡
Thread.sleep(1000);
int afleftBalance7 = Integer.parseInt(XMJSONPath.readPath(pointsTools.findAccountPagePermission(xmAppApi.getLoginInfo().getStudioId(), memberId), "$.result.records[0].leftBalance"));
System.out.println("afleftBalance7--------"+afleftBalance7);
Assert.assertEquals(afleftBalance7, afleftBalance5);//断退储值卡积分数-10
//创建训练营
String applyStartTime = String.valueOf(CommUtil.getWholeHourTimestamp()); //当前时间的整点+1小时,比如现在是13:00,然后获取的是14:00的时间戳
String applyEndTime = CommUtil.oneKeyGetAddDay(1);//明天0点
String openStartDate = applyEndTime;
String openEndDate = CommUtil.getNDayEndTimeTamp(2);//后天23:59:59
int price1 =100;//保留两位小数
double priceD =Double.parseDouble(String.valueOf(price1));//String 转double类型
String title = "积分训练营" + RandomStringUtil.randomString(6);
List<String> trainerList = new ArrayList<>();
trainerList.add("木头");
trainerList.add("吴彦祖");
trainerList.add("杜君丽");
List trainerListIdS = groupScheduleTools.getStudioAdminId(trainerList);
List<String> trainerListEdit = new ArrayList<>();
trainerListEdit.add("杜君丽");
List editTrainerListId=groupScheduleTools.getStudioAdminId(trainerListEdit);
String campID=trainingTools.createThenPublishTraining(applyStartTime,applyEndTime,"1808462926413910017",openStartDate,openEndDate,priceD,title,40,1,trainerListIdS,"YES");
System.out.println("campID--------"+campID);
//报名训练营
trainingTools.doSignCampOrder(memberId,priceD,campID,"");//报名训练营
Thread.sleep(1000);
int afleftBalance8 = Integer.parseInt(XMJSONPath.readPath(pointsTools.findAccountPagePermission(xmAppApi.getLoginInfo().getStudioId(), memberId), "$.result.records[0].leftBalance"));//购买会员卡后的会员积分数
Assert.assertEquals(afleftBalance8, afleftBalance7+10);//断言报名训练营积分数
//退训练营
trainingTools.getTrainingApplyRecordsList(campID, phone);
String memberCardId = XMJSONPath.getJSONArrayByReadPath(dataApi.getApi_response(), "$.result").getJSONObject(0).getString("memberCardId");
trainingTools.refundCampOrder(memberId,priceD,memberCardId,40,0,new BigDecimal(priceD),new BigDecimal(priceD));//退单训练营
Thread.sleep(1000);
int afleftBalance9 = Integer.parseInt(XMJSONPath.readPath(pointsTools.findAccountPagePermission(xmAppApi.getLoginInfo().getStudioId(), memberId), "$.result.records[0].leftBalance"));//会员积分数
Assert.assertEquals(afleftBalance9, afleftBalance8-10);//断言报名训练营积分数
trainingTools.deleteTraining(campID);//删除训练营
//训练营签到
campScheduleTools.getCampScheduleTable(TimeUtils.getTodayTime(), TimeUtils.getTodayEndTime(), "1937865450415263745");//查看对应训练营排课
String scheduleId1 = XMJSONPath.readPath(dataApi.getApi_response(), "$result.timetableGroups[0].timetableList[0].scheduleId");
System.out.println("scheduleId1--------"+scheduleId1);
campScheduleTools.getCampScheduleItemDetail(scheduleId1);//获取课次信息
String reserveId2 = XMJSONPath.readPath(dataApi.getApi_response(), "$result.memberReserveList[0].id");
reserveTools.signIn(true,reserveId2,false);//完成签到
Thread.sleep(1000);
int afleftBalance10 = Integer.parseInt(XMJSONPath.readPath(pointsTools.findAccountPagePermission(xmAppApi.getLoginInfo().getStudioId(), memberId), "$.result.records[0].leftBalance"));//会员积分数
Assert.assertEquals(afleftBalance10, afleftBalance9+10);//断言报名训练营积分数
reserveTools.memberReserve_discardSignIn(reserveId2);
Thread.sleep(1000);
int afleftBalance11 = Integer.parseInt(XMJSONPath.readPath(pointsTools.findAccountPagePermission(xmAppApi.getLoginInfo().getStudioId(), memberId), "$.result.records[0].leftBalance"));//会员积分数
Assert.assertEquals(afleftBalance11, afleftBalance10-10);//断言撤销训练营签到积分-10
//签单体验卡
cardTools.doMemberCardcommonSearch("积分体验卡","EXPERIENCE_CARD");
String memberCardId1 = XMJSONPath.readPath(dataApi.getApi_response(), "$.result[0].id");//获取第一张搜索体验卡ID
cardTools.fetchDetailById(memberCardId1);
BigDecimal quantity1= new BigDecimal(XMJSONPath.readPath(dataApi.getApi_response(),"$.result.benefitList[0].balance"));
//BigDecimal entryQuantity = new BigDecimal(XMJSONPath.readPath(dataApi.getApi_response(),"$.result.benefitList[1].balance"));
float price2=Float.valueOf(XMJSONPath.readPath(dataApi.getApi_response(), "$.result.benefitList[0].price"));
float entryPrice = Float.valueOf(XMJSONPath.readPath(dataApi.getApi_response(), "$.result.benefitList[1].price"));
int validPeriod1=Integer.valueOf(XMJSONPath.readPath(dataApi.getApi_response(), "$.result.validPeriod"));
String latestSnapshotId1=XMJSONPath.readPath(dataApi.getApi_response(), "$.result.latestSnapshotId");
orderTools.signOrder1(memberCardId1,latestSnapshotId1,quantity1, BigDecimal.valueOf(99999),price2,entryPrice,validPeriod1,latestSnapshotId1,0,"PURCHASE","EXPERIENCE_CARD", memberId,price2+entryPrice,price2+entryPrice,"1");
Thread.sleep(1000);
int afleftBalance12 = Integer.parseInt(XMJSONPath.readPath(pointsTools.findAccountPagePermission(xmAppApi.getLoginInfo().getStudioId(), memberId), "$.result.records[0].leftBalance"));//会员积分数
Assert.assertEquals(afleftBalance12, afleftBalance11+40);//断言购买体验卡+40,400的单子加40积分
String entryVoucherId = entryTool.listUserVenueEntryCard("EXPERIENCE",memberId).getJSONArray("result").getJSONObject(0).getString("id");//第一张可用入场的体验看
entryTool.addmemberEntry("EXPERIENCE_CARD",entryVoucherId,memberId);//手动添加体验卡入场记录
Thread.sleep(1000);
int afleftBalance13 = Integer.parseInt(XMJSONPath.readPath(pointsTools.findAccountPagePermission(xmAppApi.getLoginInfo().getStudioId(), memberId), "$.result.records[0].leftBalance"));//会员积分数
Assert.assertEquals(afleftBalance13, afleftBalance12+10);//入场签到+10
}
}
package com.xiaomai.cases.polar.points;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.xiaomai.cases.lunar.goods.GoodCTools;
import com.xiaomai.cases.lunar.reserve.ReserveCTools;
import com.xiaomai.cases.lunar.user.UserTools;
import com.xiaomai.cases.polar.course.CourseTools;
import com.xiaomai.cases.polar.eventRegistration.EventRegistrationTools;
import com.xiaomai.cases.polar.finance.order.OrderTools;
import com.xiaomai.cases.polar.schedule.group.GroupScheduleTools;
import com.xiaomai.cases.polar.setting.courseCategory.CourseCategoryTools;
import com.xiaomai.cases.polar.setting.venue.VenueAreaTools;
import com.xiaomai.client.DataUserInfo;
import com.xiaomai.enums.ApiModule;
import com.xiaomai.enums.LoginAccount;
import com.xiaomai.enums.Terminal;
import com.xiaomai.utils.*;
import org.testng.Assert;
import org.testng.annotations.BeforeMethod;
import org.testng.annotations.Test;
import javax.annotation.Resource;
import java.math.BigDecimal;
import java.sql.Time;
import java.util.ArrayList;
import java.util.List;
import java.util.Random;
public class TestPointsMini extends XMBaseTest {
@BeforeMethod
public void beforeTest(){
xmAppApi.setApiModule(ApiModule.Lunar_Points)
.setApiName("API_memberPoint_getAccount")
.setLoginUser(LoginAccount.GYM_MINIAPPC)
.setTerminal(Terminal.minApp);
dal.setCase_owner("yangjian")
.setCase_name(Thread.currentThread().getStackTrace()[1].getFileName().split("\\.")[0]);
super.beforeTest();
}
@Resource(name = "userTools")
UserTools userTools;
@Resource(name = "pointsMinTools")
PointsMInTools pointsMinTools;
GoodCTools goodCTools=new GoodCTools();
OrderTools orderTools = new OrderTools();
DataUserInfo info = new DataUserInfo();
@Resource(name = "EventRegistrationTools")
EventRegistrationTools EventRegistrationTools;
@Resource(name = "venueAreaTools")
VenueAreaTools venueAreaTools;
@Resource(name = "courseCategoryTools")
CourseCategoryTools courseCategoryTools;
@Resource(name = "courseTools")
CourseTools courseTools;
@Resource(name = "groupScheduleTools")
GroupScheduleTools groupScheduleTools;
@Resource(name = "reserveCTools")
ReserveCTools reserveCTools;
@Test(description = "小程序-积分")
public void testmemberPoint_getAccount() throws InterruptedException {
String memberId = userTools.getMemberInfo().getString("memberId");
//pointsMinTools.memberPoint_getAccount(memberId);
int BeleftBalance = Integer.parseInt(XMJSONPath.readPath(pointsMinTools.memberPoint_getAccount(memberId), "$.result.leftBalance"));//会员在小程序初始积分数
System.out.println("BeleftBalance--------"+BeleftBalance);
goodCTools.purchaseGoods("0.00",null,memberId,"物品积分自动化","100.00","1938148913966530562", BigDecimal.valueOf(100),1);//C端下单不支付
String id =XMJSONPath.readPath(dataApi.getApi_response(), "$.result.id");
info.setTerminal(Terminal.B);
info.setLoginUser(LoginAccount.GYM_PROD);//切换B端
orderTools.pay(BigDecimal.valueOf(100),"1",id,info);//B端支付
Thread.sleep(1000);
int AfleftBalance = Integer.parseInt(XMJSONPath.readPath(pointsMinTools.memberPoint_getAccount(memberId), "$.result.leftBalance"));//会员购买物品后,剩余积分数
Assert.assertEquals(AfleftBalance,BeleftBalance+10);//断言剩余积分数+10
pointsMinTools.findStatementPage(memberId, String.valueOf(true));
Assert.assertEquals(XMJSONPath.readPath(dataApi.getApi_response(), "$.result.records[0].initialBalance"), "10", "第一条非加10积分的记录");
Assert.assertEquals(XMJSONPath.readPath(dataApi.getApi_response(), "$.result.records[0].transactionType"), "IN_ORDER_CONSUME", "第一条非物品的积分记录");
//作废订单
orderTools.discard(id,"订单录错","",info);//B端
Thread.sleep(1000);
int AfleftBalance1 = Integer.parseInt(XMJSONPath.readPath(pointsMinTools.memberPoint_getAccount(memberId), "$.result.leftBalance"));//会员购买物品后,剩余积分数
Assert.assertEquals(AfleftBalance1,AfleftBalance-10);//断言剩余积分数+10
pointsMinTools.findStatementPage(memberId, String.valueOf(false));
Assert.assertEquals(XMJSONPath.readPath(dataApi.getApi_response(), "$.result.records[0].initialBalance"), "-10", "第一条非减去10积分的记录");
Assert.assertEquals(XMJSONPath.readPath(dataApi.getApi_response(), "$.result.records[0].transactionType"), "OUT_ORDER_REFUND", "第一条退购买物品的积分记录");
//活动报名
String activityName = "积分参与" + RandomStringUtil.randomString(5);
EventRegistrationTools.create(activityName,true, TimeUtils.getTodayTime(),TimeUtils.getTodayEndTime(),TimeUtils.getTodayTime(),TimeUtils.getToDayTime(23,00),info);//创建并发布活动
String activityId= XMJSONPath.readPath(dataApi.getApi_response(),"$.result");
EventRegistrationTools.MinsellableActivity_getStudioActivityById(activityId);//查看活动详情
String activitySkuId= XMJSONPath.readPath(dataApi.getApi_response(),"$.result.skuItems[1].id");//获取活动购买项目id
EventRegistrationTools.purchaseSellableActivity(activityId, String.valueOf(100),activitySkuId,memberId);//报名
String id1 =XMJSONPath.readPath(dataApi.getApi_response(),"$.result");//订单ID
System.out.println("id1--------"+id1);
orderTools.pay(BigDecimal.valueOf(100),"1",id1,info);//B端支付
Thread.sleep(1000);
int AfleftBalance2 = Integer.parseInt(XMJSONPath.readPath(pointsMinTools.memberPoint_getAccount(memberId), "$.result.leftBalance"));//会员购买物品后,剩余积分数
Assert.assertEquals(AfleftBalance2,AfleftBalance1+10);//断言剩余积分数+10
//作废订单
orderTools.discard(id1,"订单录错","",info);//B端
Thread.sleep(1000);
int AfleftBalance3 = Integer.parseInt(XMJSONPath.readPath(pointsMinTools.memberPoint_getAccount(memberId), "$.result.leftBalance"));//会员退物品后,剩余积分数
Assert.assertEquals(AfleftBalance3,AfleftBalance2-10);//断言剩余积分数-10
//单次约课 白写
//String todayStartTimeTamp = CommUtil.oneKeyGetAddDay(1);
//String todayEndDateTimeTamp = CommUtil.getNDayEndTimeTamp(1);
//String categoryId = courseCategoryTools.getCourseCategoryPage("积分");
//String 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, "1800447404349558786", todayStartTimeTamp, todayEndDateTimeTamp, new ArrayList(), new ArrayList(), true, 1,minuteOffset[random.nextInt(20)] ,info);
//List<String> chiefCoachId = new ArrayList<>();
//chiefCoachId.add("1800447404349558786");
//JSONArray result = groupScheduleTools.getGroupRuleScheduleList(courseId, "1800447404349558786");
//String ruldId = XMJSONPath.readPath(result.getJSONObject(0), "$.ruleId");
// 日程列表中新增一条刚创建的规则,匹配到对应的ruldId
//Long goalRuld = result.toJavaList(JSONObject.class).stream().filter(e -> e.getString("ruleId").equals(ruldId)).count();
//Assert.assertTrue(goalRuld == 1);
//查看今天的课表,获取刚创建的日程中对应的课次ID
//groupScheduleTools.getGroupScheduleTable(Long.valueOf(todayStartTimeTamp),Long.valueOf(todayEndDateTimeTamp),courseId,info);
//reserveCTools.memberTimetable(memberId,TimeUtils.getBeforeDayDate(-1), TimeUtils.getAfterDayDate(1));
//JSONArray array = XMJSONPath.getJSONArrayByReadPath(dataApi.getApi_response(), "$.result.timetableGroups");
//String scheduleId = array.toJavaList(JSONObject.class).stream()
//.flatMap(e -> e.getJSONArray("timetableList").toJavaList(JSONObject.class).stream())
//.filter(e -> null != e.getString("ruleId"))
//.filter(e ->e.getString("ruleId").equals(ruldId))
//.map(e -> e.getString("scheduleId"))//获取scheduleId
//.findFirst().orElse(null);
//JSONObject getScheduleItemDetail = groupScheduleTools.getScheduleItemDetail(scheduleId);
//long startTime1 = getScheduleItemDetail.getLongValue("startTime");
//System.out.println("scheduleId--------"+scheduleId);
//System.out.println("startTime1--------"+startTime1);
//String voucherId = reserveCTools.createSingleReserve1(false,courseId,"1800447404349558786",memberId,scheduleId,startTime1,10,0,"1938194478934331393","100.00");
//场地预约
//String startMinute = String.valueOf((TimeUtils.hourOfDay()+1)*60);
//String endMinute = String.valueOf((TimeUtils.hourOfDay()+1)*60+30);//结束时间与开始时间相差30分钟
//String reserveDay = String.valueOf(TimeUtils.getTodayTime());
//String groupId ="1938174465507115009";
//String areaId = String.valueOf(Long.valueOf(groupId)+1);//+1,不知道为啥
//String voucherId = venueAreaTools.purchaseAreaTimes1(startMinute,endMinute,BigDecimal.valueOf(100),"1929736213382733826",groupId,memberId,"0.00",reserveDay,areaId,"100.00","1938194478934331393");
//String venueBookingRecordId = XMJSONPath.readPath(venueAreaTools.getByVoucher(voucherId,info),"$.result.id");//场地预约的记录id
//Thread.sleep(1000);
//断言场地预约积分增加10分
//int AfleftBalance4 = Integer.parseInt(XMJSONPath.readPath(pointsMinTools.memberPoint_getAccount(memberId), "$.result.leftBalance"));//会员退物品后,剩余积分数
//Assert.assertEquals(AfleftBalance4,AfleftBalance3+10);//断言剩余积分数+10
//venueAreaTools.manualCheckIn(venueBookingRecordId);//场地签到
//Thread.sleep(1000);
//断言场地预约签到增加10分
//int AfleftBalance5 = Integer.parseInt(XMJSONPath.readPath(pointsMinTools.memberPoint_getAccount(memberId), "$.result.leftBalance"));//会员退物品后,剩余积分数
//Assert.assertEquals(AfleftBalance5,AfleftBalance4+10);//断言剩余积分数+10
}
}
package com.xiaomai.cases.polar.points;
import com.xiaomai.enums.ApiModule;
import com.xiaomai.enums.LoginAccount;
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 javax.annotation.Resource;
public class TestPointsRule extends XMBaseTest {
@BeforeMethod
public void beforeTest(){
xmAppApi.setApiModule(ApiModule.Polar_Points)
.setApiName("API_memberPoint_saveRule")
.setLoginUser(LoginAccount.YJ_PROD)
.setTerminal(Terminal.B);
dal.setCase_owner("yangjian")
.setCase_name(Thread.currentThread().getStackTrace()[1].getFileName().split("\\.")[0]);
super.beforeTest();
}
@Resource(name = "pointsTools")
PointsTools pointsTools;
@Test(description = "积分规则编辑/保存")//新开场馆和品牌
public void testMemberPoint_saveRule(){
//pointsTools.memberPoint_saveRule("");
pointsTools.memberPoint_saveRule(xmAppApi.getLoginInfo().getStudioId());
pointsTools.memberPoint_findRule(xmAppApi.getLoginInfo().getStudioId());
Assert.assertEquals(XMJSONPath.readPath(dataApi.getApi_response(), "$.result.enableMemberPoint"), "YES", "积分规则未开启");
}
}
......@@ -13,6 +13,8 @@ import com.xiaomai.utils.XMJSONPath;
import org.springframework.stereotype.Component;
import org.testng.Assert;
import java.math.BigDecimal;
/**
* @BelongsProject: xm-sportstest
* @BelongsPackage: com.xiaomai.cases.polar.setting.venue
......@@ -1030,4 +1032,51 @@ public class VenueAreaTools extends XMBaseTest {
dataApi.doRequest(RequestType.JSON, dataparams, object.toString(), dataheadrs).assetsSuccess(true);
return dataApi.getBodyInJSON();
}
/**
* 小程序场地预约非0元
* @param startMinute 开始时间
* @param endMinute 结束时间
* @param suiteId 场地组id
* @param groupId 场地id
* @param memberId 会员id
* @param reserveDay 预约日期
* @param userInfos
* @return
*/
public String purchaseAreaTimes1(String startMinute, String endMinute, BigDecimal price, String suiteId, String groupId,
String memberId, String receivableAmount, String reserveDay, String venueAreaId,String depositAmount,String depositCardId, DataUserInfo...userInfos) {
dataApi.setApiModule(ApiModule.Lunar_VenueArea)
.setApiName("API_purchaseAreaTimes")
.setTerminal(Terminal.minApp);
super.beforeDataRequest(userInfos);
JSONArray areaTimeInfos = new JSONArray();
JSONObject areaTime = new JSONObject();
areaTime.put("startMinute",startMinute);//预约开始时间
areaTime.put("endMinute",endMinute);//预约结束时间
areaTime.put("price",price);
areaTimeInfos.add(areaTime);
//构建请求参数
JSONObject object = new JSONObject();
object.put("areaTimeInfos", areaTimeInfos);
object.put("depositAmount", depositAmount);
object.put("depositCardId", depositCardId);
object.put("groupId", groupId);//场地id
object.put("memberId", memberId);
object.put("memo", "自动化脚本创建的场地预约");
object.put("objectId", RandomStringUtil.randomString(16));
object.put("receivableAmount", receivableAmount);
object.put("reserveDay", reserveDay);
object.put("studioId", dataApi.getLoginInfo().getStudioId());
object.put("suiteId", suiteId);//场地组id
object.put("venueAreaId", venueAreaId);
dataApi.doRequest(RequestType.JSON, dataparams, object.toString(), dataheadrs);
Assert.assertTrue(Boolean.valueOf(XMJSONPath.readPath(dataApi.getApi_response(), "$.success")) == true, "调用接口返回结果:" + XMJSONPath.readPath(dataApi.getApi_response(), "$.message"));
return dataApi.getBodyInJSON().getJSONObject("result").getString("id");
}
}
......@@ -25,5 +25,7 @@ public class LoginAccount {
public static String YFF_RC="yff_rc";
public static String YFF_GRAY="yff_gray";//芳芳场馆
public static String YJ_PROD="yj_prod";//杨剑场馆
public static String YJ_PROD_ALL="yj_prod_all";//杨剑场馆
}
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