Commit c2a94ace by xyy

新增储值卡

parent 7944c41d
package com.xiaomai.cases.polar.depositCard;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.xiaomai.client.DataUserInfo;
import com.xiaomai.enums.ApiModule;
import com.xiaomai.enums.RequestType;
import com.xiaomai.enums.Terminal;
import com.xiaomai.utils.XMBaseTest;
import com.xiaomai.utils.XMJSONPath;
import org.springframework.stereotype.Component;
@Component("depositTools")
public class DepositTools extends XMBaseTest {
/**
* 创建储值卡
* @param title
* @param dataUserInfos
* @return
*/
public String depositCardCreate(String title,String balance, String price, DataUserInfo... dataUserInfos) {
dataApi.setApiModule(ApiModule.Polar_Card)
.setApiName("API_tenantMemberCard_create")
.setTerminal(Terminal.B);
super.beforeDataRequest(dataUserInfos);
JSONArray benefitList = new JSONArray();
JSONObject benefitObject = new JSONObject();
benefitObject.put("identifier", dataApi.getLoginInfo().getUser());
benefitObject.put("balance", balance);//赠送金额
benefitObject.put("benefitType", "STORED_VALUE");
benefitObject.put("price", price);//充值金额
benefitObject.put("targetType", "PAYMENT");
benefitObject.put("targetScope", "PAYMENT_SPECIFIC_SCENARIO");
benefitObject.put("paymentScenarioList", new JSONArray().add("ALL"));
benefitObject.put("accountType", "DEPOSIT");
benefitList.add(benefitObject);
JSONObject object = new JSONObject();
object.put("surfaceUrl", "https://image.xiaomaiketang.com/xm/internal/BHabA5WaNF.png");//储值卡封面图片
object.put("surfaceCornerMark", "自动化标签");
object.put("title", title);//储值卡名称 不能重复要加东西 "储值卡"+RandomStringUtil.randomString(3)
object.put("validPeriod", "10");//有效期10天
object.put("sharePeopleLimit", "10");//共享10人
object.put("price", price);//充值金额
object.put("purchaseNumberLimit", "-1");//购买数量不限制
object.put("xcxSaleStatus", "YES");//小程序是否售卖
object.put("creatorId", dataApi.getLoginInfo().getAdminId());
object.put("shelfState", "YES");//卡启用状态
object.put("brandId", dataApi.getLoginInfo().getBrandId());
object.put("studioId", dataApi.getLoginInfo().getStudioId());
object.put("description", "{\"items\":[{\"content\":\"自动化创建的卡\",\"aspect\":\"\",\"type\":\"TEXT\"}]}");
object.put("operatorId", dataApi.getLoginInfo().getAdminId());
object.put("commodityCardType", "DEPOSIT_CARD");
object.put("activatePatternList", new JSONArray().add("PURCHASE"));
dataApi.doRequest(RequestType.JSON, dataparams, object.toJSONString(), dataheadrs).assetsSuccess(true);
return XMJSONPath.readPath(dataApi.getApi_response(), "$.result");
}
/**
* 售卖记录全局搜索:根据会员名称/手机号搜索,获取会员名下购卡相关记录
*
* @param memberId
*/
public JSONObject getUserDepositCardList(String memberId,DataUserInfo... dataUserInfos) {
dataApi.setApiModule(ApiModule.Polar_Card)
.setApiName("API_fetchUserCardList")
.setTerminal(Terminal.B);
super.beforeDataRequest(dataUserInfos);
JSONObject object = new JSONObject();
JSONArray memberCardStateList = new JSONArray();
memberCardStateList.add("NORMAL");
memberCardStateList.add("SUSPEND");
object.put("studioId", dataApi.getLoginInfo().getStudioId());
object.put("accountType", "DEPOSIT");
object.put("memberId", memberId);
object.put("memberCardStateList", memberCardStateList);
object.put("brandId", dataApi.getLoginInfo().getBrandId());
object.put("operatorId", dataApi.getLoginInfo().getAdminId());
dataApi.doRequest(RequestType.JSON, dataparams, object.toJSONString(), dataheadrs).assetsSuccess(true);
return dataApi.getBodyInJSON();
}
/**
* 查看储值卡售卖记录
*/
public JSONObject searchMemberCard(DataUserInfo... dataUserInfos) {
dataApi.setApiModule(ApiModule.Polar_Training)
.setApiName("API_searchTrainingAccountRecordsList")
.setTerminal(Terminal.B);
super.beforeDataRequest(dataUserInfos);
JSONObject object = new JSONObject();
object.put("current", 0);
object.put("size", 20);
object.put("accountType","DEPOSIT");
object.put("studioId", dataApi.getLoginInfo().getStudioId());
object.put("brandId", dataApi.getLoginInfo().getBrandId());
object.put("operatorId", dataApi.getLoginInfo().getAdminId());
dataApi.doRequest(RequestType.JSON, dataparams, object.toJSONString(), dataheadrs).assetsSuccess(true);
return dataApi.getBodyInJSON();
}
public JSONObject commonSearchMemberCard(String title, String commodityCardType,DataUserInfo... dataUserInfos) {
dataApi.setApiModule(ApiModule.Polar_Training)
.setApiName("API_tenantMemberCard_commonSearch")
.setTerminal(Terminal.B);
super.beforeDataRequest(dataUserInfos);
JSONObject object = new JSONObject();
object.put("brandId", dataApi.getLoginInfo().getBrandId());
object.put("studioId", dataApi.getLoginInfo().getStudioId());
object.put("commodityCardType",commodityCardType);
object.put("title",title);
object.put("operatorId", dataApi.getLoginInfo().getAdminId());
dataApi.doRequest(RequestType.JSON, dataparams, object.toJSONString(), dataheadrs).assetsSuccess(true);
return dataApi.getBodyInJSON();
}
}
......@@ -8,7 +8,8 @@ import org.apache.commons.lang3.StringUtils;
* @Date 2024/7/2 17:48
*/
public enum ExcelImportEnum {
MEMBER_INFO("memberInfo",3,0,1);
MEMBER_INFO("memberInfo",3,0,1),
DEPOSIT_INFO("depositInfo",3,0,1);
/**业务 */
private String value;
......
package com.xiaomai.cases.polar.importExcel;
import com.alibaba.fastjson.JSONObject;
import com.xiaomai.cases.polar.enums.ExcelImportEnum;
import com.xiaomai.cases.polar.utils.Entity.SignatureVO;
import com.xiaomai.cases.polar.utils.ModifyExcelContentUtil;
import com.xiaomai.cases.polar.utils.ResourceUtil;
import com.xiaomai.enums.ApiModule;
import com.xiaomai.enums.LoginAccount;
import com.xiaomai.enums.RequestType;
import com.xiaomai.enums.Terminal;
import com.xiaomai.utils.XMBaseTest;
import com.xiaomai.utils.XMJSONPath;
import org.testng.Assert;
import org.testng.annotations.BeforeMethod;
import org.testng.annotations.Test;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
public class TestImportDeposit extends XMBaseTest {
ImportTools importTools = new ImportTools();
@BeforeMethod
public void beforeTest(){
xmAppApi.setApiModule(ApiModule.Polar_ImportTask)
.setApiName("API_webTokenWithAccessUrl")
.setLoginUser(LoginAccount.GYM_PROD)
.setTerminal(Terminal.B);
dal.setCase_owner("xyy")
.setCase_name(Thread.currentThread().getStackTrace()[1].getFileName().split("\\.")[0]);
super.beforeTest();
}
@Test(description = "导入售出储值卡")
public void testImportMember()throws IOException, InterruptedException{
//导入任务列表
int total = Integer.parseInt(importTools.pageImportTask().getJSONObject("result").getString("total"));
//1.更新excel文档
String filePathName = "excelFile/depositInfo.xls";
ModifyExcelContentUtil.modifyExcel(filePathName, "售出储值卡导入", ExcelImportEnum.DEPOSIT_INFO);
Thread.sleep(1000);
//2、获取签名
JSONObject object = new JSONObject();
object.put("tenantId", xmAppApi.getLoginInfo().getBrandId());
object.put("tenantType", "BRAND");
object.put("resourceName",filePathName);
object.put("resourceNameToMD5",false);
object.put("bizCode","IMPORT_TASK");
xmAppApi.doRequest(RequestType.JSON, params, object.toString(), headers).assetsSuccess(true);
JSONObject result1 = xmAppApi.getBodyInJSON();
String resourceId = XMJSONPath.readPath(result1, "$.result.resourceId");
String accessId = XMJSONPath.readPath(result1, "$.result.accessId");
String policy = XMJSONPath.readPath(result1, "$.result.policy");
String signature = XMJSONPath.readPath(result1, "$.result.signature");
String key = XMJSONPath.readPath(result1, "$.result.key");
String callback = XMJSONPath.readPath(result1, "$.result.callback");
String host = XMJSONPath.readPath(result1, "$.result.host");
String time = XMJSONPath.readPath(result1, "$.result.extAttrs");
JSONObject time1 = JSONObject.parseObject(time);
String url = XMJSONPath.readPath(result1, "$.result.url");
//3.腾讯云上传
InputStream inputStream = new FileInputStream(filePathName);
SignatureVO signatureVO = new SignatureVO();
signatureVO.setAlgorithm("sha1");
signatureVO.setKey(key);
signatureVO.setAccessId(accessId);
signatureVO.setPolicy(policy);
signatureVO.setSignature(signature);
signatureVO.setCallback(callback);
signatureVO.setExtAttrs(time1.getString("q-key-time"));
signatureVO.setHost(host);
signatureVO.setResourceId(Long.valueOf(resourceId));
String result = String.valueOf(ResourceUtil.uploadFileContentToTencent(inputStream, filePathName, signatureVO, 5000,"multipart/form-data"));
Assert.assertEquals(result, "true");
//4.创建任务
JSONObject result2 = importTools.createImportTask("DEPOSIT_CARD_ORDER",resourceId,null,"");
String recordId = XMJSONPath.readPath(result2, "$.result");
//5.获取上传进度
Thread.sleep(6000);
importTools.getTask(recordId);
Assert.assertEquals(XMJSONPath.readPath(dataApi.getApi_response(), "$.result.state"), "SUCCESS");
Assert.assertEquals(XMJSONPath.readPath(dataApi.getApi_response(), "$.result.successRowNum"), "1");
//上传成功后导入记录列表新增一条数据
JSONObject res = importTools.pageImportTask().getJSONObject("result");
Assert.assertEquals(Integer.parseInt(res.getString("total")),total+1);
Assert.assertEquals(res.getJSONArray("records").getJSONObject(0).getString("resourceId"),resourceId);
Assert.assertEquals(res.getJSONArray("records").getJSONObject(0).getString("state"),"SUCCESS");
}
}
......@@ -507,8 +507,13 @@ public class CardTools extends XMBaseTest {
jsonObject.put("operatorId", dataApi.getLoginInfo().getAdminId());
dataApi.doRequest(RequestType.JSON, dataparams, jsonObject.toJSONString(), dataheadrs).assetsSuccess(true);
}
/**
* 修改会员卡的售卖状态
*
* @param memberCardId 会员卡ID
* @param xcxSaleState 启用:YES,停用:NO
* @param dataUserInfos
*/
public void modifyXcxSaleState(String memberCardId, String xcxSaleState, DataUserInfo... dataUserInfos) {
dataApi.setApiModule(ApiModule.Polar_Card)
.setApiName("API_modifyXcxSaleState")
......
......@@ -9,6 +9,7 @@ import com.xiaomai.utils.XMBaseTest;
import com.xiaomai.utils.XMJSONPath;
import org.testng.Assert;
import org.testng.annotations.BeforeMethod;
import org.testng.annotations.DataProvider;
import org.testng.annotations.Test;
import javax.annotation.Resource;
......@@ -16,6 +17,9 @@ import javax.annotation.Resource;
public class TestModifyShelfState extends XMBaseTest {
@Resource(name = "cardTools")
CardTools cardTools;
public String memberCardId = "";
public String shelfState;
@BeforeMethod
public void beforeTest(){
xmAppApi.setApiModule(ApiModule.Polar_Card)
......@@ -27,13 +31,20 @@ public class TestModifyShelfState extends XMBaseTest {
.setCase_name(Thread.currentThread().getStackTrace()[1].getFileName().split("\\.")[0]);
super.beforeTest();
}
@Test(description = "停用会员卡")
public void testmodifyShelfState() {
CardTools Cardtools = new CardTools();
Cardtools.fetchPageOfMemberCard("MEMBER_CARD");
String memberCardId = "";
String shelfState;
//先检查次下列表有没有数据,有数据才会执行下面的点代码(如果是个空机构,肯定不会被执行,想从存量数据中获取,需要自己先造个数据)
@DataProvider
public Object[][] dataProvider(){
return new Object[][]{
{"MEMBER_CARD"},//会员卡
{"DEPOSIT_CARD"},//储值卡
{"EXPERIENCE_CARD"}//体验卡
};
}
@Test(description = "停用卡",dataProvider = "dataProvider")
public void testModifyShelfState_NO(String cardType) {
cardTools.fetchPageOfMemberCard(cardType);
//先检查列表有没有数据,有数据才会执行下面的点代码(如果是个空机构,肯定不会被执行,想从存量数据中获取,需要自己先造个数据)
int listDatas = XMJSONPath.getJSONArrayByReadPath(dataApi.getApi_response(), "$.result.records").size();
if (listDatas > 0) {
memberCardId = XMJSONPath.readPath(dataApi.getApi_response(), "$.result.records[0].id");
......@@ -58,12 +69,9 @@ public class TestModifyShelfState extends XMBaseTest {
}
}
@Test(description = "启用会员卡")
public void testmodifyShelfState1() {
CardTools Cardtools = new CardTools();
Cardtools.fetchPageOfMemberCard("MEMBER_CARD");
String memberCardId = "";
String shelfState;
@Test(description = "启用卡",dataProvider = "dataProvider")
public void testModifyShelfState_YES(String cardType) {
cardTools.fetchPageOfMemberCard(cardType);
int listDatas = XMJSONPath.getJSONArrayByReadPath(dataApi.getApi_response(), "$.result.records").size();
if (listDatas > 0) {
memberCardId = XMJSONPath.readPath(dataApi.getApi_response(), "$.result.records[0].id");
......
......@@ -9,9 +9,18 @@ import com.xiaomai.utils.XMBaseTest;
import com.xiaomai.utils.XMJSONPath;
import org.testng.Assert;
import org.testng.annotations.BeforeMethod;
import org.testng.annotations.DataProvider;
import org.testng.annotations.Test;
import javax.annotation.Resource;
public class TestModifyXcxSaleState extends XMBaseTest {
@Resource(name = "cardTools")
CardTools cardTools;
public String memberCardId = "";
public String xcxSaleState;
@BeforeMethod
public void beforeTest(){
xmAppApi.setApiModule(ApiModule.Polar_Card)
......@@ -23,27 +32,29 @@ public class TestModifyXcxSaleState extends XMBaseTest {
.setCase_name(Thread.currentThread().getStackTrace()[1].getFileName().split("\\.")[0]);
super.beforeTest();
}
@Test(description = "关闭会员卡售卖")
public void testmodifyXcxSaleState() {
CardTools Cardtools = new CardTools();
Cardtools.fetchPageOfMemberCard("MEMBER_CARD");
String memberCardId = "";
String xcxSaleStatus;
//先检查次下列表有没有数据,有数据才会执行下面的点代码(如果是个空机构,肯定不会被执行,想从存量数据中获取,需要自己先造个数据)
@DataProvider
public Object[][] dataProvider(){
return new Object[][]{
{"MEMBER_CARD"},//会员卡
{"DEPOSIT_CARD"},//储值卡
{"EXPERIENCE_CARD"}//体验卡
};
}
@Test(description = "关闭卡售卖",dataProvider = "dataProvider")
public void testModifyXcxSaleState_NO(String cardType) {
cardTools.fetchPageOfMemberCard(cardType);
//先检查列表有没有数据,有数据才会执行下面的点代码(如果是个空机构,肯定不会被执行,想从存量数据中获取,需要自己先造个数据)
int listDatas = XMJSONPath.getJSONArrayByReadPath(dataApi.getApi_response(), "$.result.records").size();
if (listDatas > 0) {
memberCardId = XMJSONPath.readPath(dataApi.getApi_response(), "$.result.records[0].id");
//取出第一个数据后,要check下会员卡的售卖状态,想停用,要保证卡的状态目前就是停售状态
xcxSaleStatus=XMJSONPath.readPath(dataApi.getApi_response(), "$.result.records[0].xcxSaleStatus");
//取出第一个数据后,要check下会员卡的启用状态,想停用,要保证卡的状态目前就是启用状态
xcxSaleState = XMJSONPath.readPath(dataApi.getApi_response(), "$.result.records[0].xcxSaleState");
//如果不是启用状态,则开启
if(xcxSaleStatus.equals("NO")){
Cardtools.modifyXcxSaleState(memberCardId,"YES");
if (xcxSaleState.equals("NO")) {
cardTools.modifyXcxSaleState(memberCardId, "YES");
}
JSONObject jsonObject = new JSONObject();
jsonObject.put("xcxSaleState","NO");
jsonObject.put("xcxSaleState", "NO");
jsonObject.put("memberCardId", memberCardId);
jsonObject.put("brandId", xmAppApi.getLoginInfo().getBrandId());
jsonObject.put("studioId", xmAppApi.getLoginInfo().getStudioId());
......@@ -51,40 +62,37 @@ public class TestModifyXcxSaleState extends XMBaseTest {
xmAppApi.doRequest(RequestType.JSON, params, jsonObject.toJSONString(), headers).assetsSuccess(true);
//check 会员卡详情,查看状态是否是下架状态
Cardtools.fetchDetailById(memberCardId);
Assert.assertEquals(XMJSONPath.readPath(dataApi.getApi_response(),"$.result.xcxSaleStatus"),"NO","操作停用会员卡后,查看卡详情,卡启用状态没变更为NO");
cardTools.fetchDetailById(memberCardId);
Assert.assertEquals(XMJSONPath.readPath(dataApi.getApi_response(), "$.result.xcxSaleState"), "NO", "操作关闭小程序售卖后,查看卡详情,卡售卖状态没变更为NO");
}
}
@Test(description = "启用会员卡")
public void testmodifyShelfState1() {
CardTools Cardtools = new CardTools();
Cardtools.fetchPageOfMemberCard("MEMBER_CARD");
String memberCardId = "";
String xcxSaleStatus;
@Test(description = "开启卡售卖", dataProvider = "dataProvider")
public void testModifyXcxSaleState_YES(String cardType){
cardTools.fetchPageOfMemberCard(cardType);
//先检查列表有没有数据,有数据才会执行下面的点代码(如果是个空机构,肯定不会被执行,想从存量数据中获取,需要自己先造个数据)
int listDatas = XMJSONPath.getJSONArrayByReadPath(dataApi.getApi_response(), "$.result.records").size();
if (listDatas > 0) {
memberCardId = XMJSONPath.readPath(dataApi.getApi_response(), "$.result.records[0].id");
xcxSaleStatus = XMJSONPath.readPath(dataApi.getApi_response(), "$.result.records[0].xcxSaleStatus");
if (xcxSaleStatus.equals("YES")) {
Cardtools.modifyXcxSaleState(memberCardId,"NO");
//取出第一个数据后,要check下会员卡的启用状态,想停用,要保证卡的状态目前就是启用状态
xcxSaleState = XMJSONPath.readPath(dataApi.getApi_response(), "$.result.records[0].xcxSaleState");
//如果不是启用状态,则开启
if (xcxSaleState.equals("NO")) {
cardTools.modifyXcxSaleState(memberCardId, "YES");
}
JSONObject jsonObject = new JSONObject();
jsonObject.put("xcxSaleState", "YES");
jsonObject.put("xcxSaleState", "NO");
jsonObject.put("memberCardId", memberCardId);
jsonObject.put("brandId", xmAppApi.getLoginInfo().getBrandId());
jsonObject.put("studioId", xmAppApi.getLoginInfo().getStudioId());
jsonObject.put("operatorId", xmAppApi.getLoginInfo().getAdminId());
xmAppApi.doRequest(RequestType.JSON, params, jsonObject.toJSONString(), headers).assetsSuccess(true);
//check 会员卡详情,查看状态是否是上架状态
Cardtools.fetchDetailById(memberCardId);
Assert.assertEquals(XMJSONPath.readPath(dataApi.getApi_response(), "$.result.xcxSaleStatus"), "YES", "操作启用会员卡后,查看卡详情,卡启用状态没变更为YES");
//check 会员卡详情,查看状态是否是下架状态
cardTools.fetchDetailById(memberCardId);
Assert.assertEquals(XMJSONPath.readPath(dataApi.getApi_response(), "$.result.xcxSaleState"), "NO", "操作启用小程序售卖后,查看卡详情,卡售卖状态没变更为YES");
}
}
}
}
\ No newline at end of file
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