feat: 迁移商务旗下渠道查询和抽屉

This commit is contained in:
Yvan
2026-11-03 19:20:42 +08:00
parent 8048dfb514
commit cd42a1d3f0
29 changed files with 409 additions and 20 deletions
+3
View File
@@ -34,6 +34,8 @@ def main():
data = body.get("data")
if isinstance(data, dict) and "rows" in data:
item.update(total=data.get("total"), rows=len(data["rows"]))
if "available" in data:
item["available"] = data["available"]
results.append(item)
print(json.dumps(item, ensure_ascii=False), flush=True)
return data if item["passed"] else None
@@ -51,6 +53,7 @@ def main():
request("GET", "/sw/business/list?" + urllib.parse.urlencode({"userName": account["userName"]}))
bound = next((row for row in first["rows"] if row["bindCount"] > 0), account)
request("GET", f"/sw/business/{bound['userId']}/bindPlatform")
request("GET", f"/sw/business/{bound['userId']}/promotes")
request("GET", "/sw/user/preference")
request("GET", "/sw/business/bindPlatform?pageNum=1&pageSize=10")
request("GET", "/sw/business/bindPlatform?sourceDb=lx,hw&status=0&pageSize=2")
+12 -2
View File
@@ -13,13 +13,14 @@ const { chromium } = require(process.env.SW_PLAYWRIGHT_MODULE || 'playwright');
const page = await context.newPage();
const pageErrors=[];
page.on('pageerror',e=>pageErrors.push(e.message));
let bindingCalls=0;
let bindingCalls=0; const channelCalls=[];
await page.route('http://127.0.0.1:8080/api/**', async route => {
const request=route.request();
const uri=new URL(request.url());
const apiPath=uri.pathname.slice(4);
let body;
if(apiPath==='/sw/business/list') body={code:0,msg:'成功',data:{rows:[{userId:79999,userName:'展示测试商务',level:2,parentUserName:'上级商务',realName:'测试姓名',phoneNumber:'',bindCount:0,promoteCount:0,createTime:'2026-11-03 10:00:00',status:'0',authorityId:902}],total:1}};
else if(/^\/sw\/business\/\d+\/promotes$/.test(apiPath)) { channelCalls.push(Object.fromEntries(uri.searchParams)); body={code:0,msg:'成功',data:{rows:[{promoteId:1,promoteName:'渠道测试',sourceDb:'lx',platformName:'龙翔'}],total:1,available:true}}; }
else if(apiPath==='/sw/business/bindPlatform') {
bindingCalls++;
body={code:0,msg:'成功',data:{total:3,rows:['0','2','3'].map((status,i)=>({userId:70000+level,sourceDb:'lx',platformName:'龙翔',platformBusierId:10+i,platformBusierAccount:['正常账号','驳回账号','待审账号'][i],bindUserName:'测试商务',promoteCount:status==='0'?2:0,status,createTime:'2026-11-03 10:00:00',reviewTime:'2026-11-03 11:00:00',reviewAccount:'测试审核人',rejectReason:status==='2'?'测试驳回原因':null}))}};
@@ -41,7 +42,7 @@ const { chromium } = require(process.env.SW_PLAYWRIGHT_MODULE || 'playwright');
if(tabs!==(level===3?1:0)||editButtons!==0) throw new Error('页面权限或编辑入口不一致 level='+level);
const result={level,bindingTab:tabs===1,editButtons,passed:true};
if(level===1 || level===2) {
await page.getByRole('row').filter({hasText:'展示测试商务'}).getByRole('button',{name:'0',exact:true}).click();
await page.getByRole('row').filter({hasText:'展示测试商务'}).getByRole('button',{name:'查看SDK商务绑定详情',exact:true}).click();
await page.getByRole('dialog',{name:'SDK商务绑定详情'}).waitFor();
result.sdkDetailReadonly=(await page.getByRole('dialog',{name:'SDK商务绑定详情'}).getByRole('button',{name:'解绑',exact:true}).count())===0;
if(!result.sdkDetailReadonly)throw new Error('SDK 详情出现写操作');
@@ -58,6 +59,15 @@ const { chromium } = require(process.env.SW_PLAYWRIGHT_MODULE || 'playwright');
result.pendingUnbind=await pending.getByRole('button',{name:'解绑',exact:true}).count();
result.rejectedDetail=await rejected.getByRole('button',{name:'查看驳回',exact:true}).count();
if(result.normalUnbind!==1||result.rejectedUnbind||result.pendingUnbind||result.rejectedDetail!==1)throw new Error('绑定状态操作不一致');
result.rejectedChannelsDisabled=await rejected.getByRole('button',{name:'查看旗下渠道',exact:true}).isDisabled();
result.pendingChannelsDisabled=await pending.getByRole('button',{name:'查看旗下渠道',exact:true}).isDisabled();
if(!result.rejectedChannelsDisabled || !result.pendingChannelsDisabled)throw new Error('未通过绑定仍可查看渠道');
await normal.getByRole('button',{name:'查看旗下渠道',exact:true}).click();
await page.getByText('渠道测试',{exact:true}).waitFor();
const channelQuery=channelCalls.at(-1);
if(channelQuery.sourceDb!=='lx'||channelQuery.platformBusierId!=='10')throw new Error('旗下渠道未携带平台和商务筛选');
result.channelFilters=true;
await page.getByRole('dialog',{name:'旗下渠道',exact:true}).getByRole('button',{name:'关闭此对话框',exact:true}).click();
await rejected.getByRole('button',{name:'查看驳回',exact:true}).click();
await page.getByText('测试驳回原因',{exact:true}).waitFor();
const panel=await page.getByRole('dialog',{name:'审核详情',exact:true}).elementHandle();