|
@@ -12,7 +12,7 @@ use Illuminate\Support\Facades\Schema;
|
|
|
use PHPUnit\Framework\TestCase;
|
|
use PHPUnit\Framework\TestCase;
|
|
|
use Tests\Support\AgentTestEnvironment;
|
|
use Tests\Support\AgentTestEnvironment;
|
|
|
|
|
|
|
|
-/** 后台会员列表:无上级的会员可补绑合营代理(代理 ID)或上级会员(会员 ID),已有上级不能改。 */
|
|
|
|
|
|
|
+/** 后台会员列表:无上级的会员可按账号补绑合营代理,或按会员 ID 补绑上级会员。 */
|
|
|
class AdminBindSuperiorTest extends TestCase
|
|
class AdminBindSuperiorTest extends TestCase
|
|
|
{
|
|
{
|
|
|
use AgentTestEnvironment { setUp as private agentSetUp; }
|
|
use AgentTestEnvironment { setUp as private agentSetUp; }
|
|
@@ -67,8 +67,9 @@ class AdminBindSuperiorTest extends TestCase
|
|
|
$c = $this->member('1003');
|
|
$c = $this->member('1003');
|
|
|
$this->member('1004', ['from' => 2]);
|
|
$this->member('1004', ['from' => 2]);
|
|
|
|
|
|
|
|
- $data = $this->call(['member_id' => '1001', 'type' => 'agent', 'superior_id' => (string) $agent->id]);
|
|
|
|
|
|
|
+ $data = $this->call(['member_id' => '1001', 'type' => 'agent', 'agent_username' => ' ' . $agent->username . ' ']);
|
|
|
$this->assertSame(0, $data['code'], (string) $data['msg']);
|
|
$this->assertSame(0, $data['code'], (string) $data['msg']);
|
|
|
|
|
+ $this->assertSame($agent->id, $data['data']['agent_id']);
|
|
|
$this->assertSame($agent->id, (int) DB::table('users')->where('member_id', '1001')->value('agent_id'));
|
|
$this->assertSame($agent->id, (int) DB::table('users')->where('member_id', '1001')->value('agent_id'));
|
|
|
$this->assertSame('会员已有上级,不能修改', $this->call(['member_id' => '1001', 'type' => 'member', 'superior_id' => '1002'])['msg']);
|
|
$this->assertSame('会员已有上级,不能修改', $this->call(['member_id' => '1001', 'type' => 'member', 'superior_id' => '1002'])['msg']);
|
|
|
|
|
|
|
@@ -77,21 +78,21 @@ class AdminBindSuperiorTest extends TestCase
|
|
|
$this->assertSame('C1002', DB::table('users')->where('id', $c)->value('agent_user_code'));
|
|
$this->assertSame('C1002', DB::table('users')->where('id', $c)->value('agent_user_code'));
|
|
|
$this->assertSame($b, (int) DB::table('share_members')->where('user_id', $c)->value('parent_user_id'));
|
|
$this->assertSame($b, (int) DB::table('share_members')->where('user_id', $c)->value('parent_user_id'));
|
|
|
$this->assertTrue(DB::table('share_tree')->where(['ancestor_user_id' => $b, 'descendant_user_id' => $c, 'depth' => 1])->exists());
|
|
$this->assertTrue(DB::table('share_tree')->where(['ancestor_user_id' => $b, 'descendant_user_id' => $c, 'depth' => 1])->exists());
|
|
|
- $this->assertSame('会员已有上级,不能修改', $this->call(['member_id' => '1003', 'type' => 'agent', 'superior_id' => (string) $agent->id])['msg']);
|
|
|
|
|
|
|
+ $this->assertSame('会员已有上级,不能修改', $this->call(['member_id' => '1003', 'type' => 'agent', 'agent_username' => $agent->username])['msg']);
|
|
|
|
|
|
|
|
$this->assertSame('不能绑定自己或自己的下级', $this->call(['member_id' => '1002', 'type' => 'member', 'superior_id' => '1003'])['msg'], 'no cycle');
|
|
$this->assertSame('不能绑定自己或自己的下级', $this->call(['member_id' => '1002', 'type' => 'member', 'superior_id' => '1003'])['msg'], 'no cycle');
|
|
|
$this->assertSame('不能绑定自己', $this->call(['member_id' => '1002', 'type' => 'member', 'superior_id' => '1002'])['msg']);
|
|
$this->assertSame('不能绑定自己', $this->call(['member_id' => '1002', 'type' => 'member', 'superior_id' => '1002'])['msg']);
|
|
|
$this->assertSame('上级会员不存在', $this->call(['member_id' => '1002', 'type' => 'member', 'superior_id' => '9999'])['msg']);
|
|
$this->assertSame('上级会员不存在', $this->call(['member_id' => '1002', 'type' => 'member', 'superior_id' => '9999'])['msg']);
|
|
|
- $this->assertSame('代理不存在', $this->call(['member_id' => '1002', 'type' => 'agent', 'superior_id' => '9999'])['msg']);
|
|
|
|
|
|
|
+ $this->assertSame('代理不存在', $this->call(['member_id' => '1002', 'type' => 'agent', 'agent_username' => 'unknown-agent'])['msg']);
|
|
|
$this->assertSame('试玩会员不能作为上级', $this->call(['member_id' => '1002', 'type' => 'member', 'superior_id' => '1004'])['msg']);
|
|
$this->assertSame('试玩会员不能作为上级', $this->call(['member_id' => '1002', 'type' => 'member', 'superior_id' => '1004'])['msg']);
|
|
|
$this->assertSame('试玩会员不能绑定上级', $this->call(['member_id' => '1004', 'type' => 'member', 'superior_id' => '1002'])['msg']);
|
|
$this->assertSame('试玩会员不能绑定上级', $this->call(['member_id' => '1004', 'type' => 'member', 'superior_id' => '1002'])['msg']);
|
|
|
$this->assertNotSame(0, $this->call(['member_id' => '1002', 'type' => 'other', 'superior_id' => '1'])['code']);
|
|
$this->assertNotSame(0, $this->call(['member_id' => '1002', 'type' => 'other', 'superior_id' => '1'])['code']);
|
|
|
|
|
|
|
|
$equity = $this->agent(Agent::TYPE_EQUITY);
|
|
$equity = $this->agent(Agent::TYPE_EQUITY);
|
|
|
- $this->assertSame('只能绑定合营代理', $this->call(['member_id' => '1002', 'type' => 'agent', 'superior_id' => (string) $equity->id])['msg']);
|
|
|
|
|
|
|
+ $this->assertSame('只能绑定合营代理', $this->call(['member_id' => '1002', 'type' => 'agent', 'agent_username' => $equity->username])['msg']);
|
|
|
$this->member('1005', ['agent_id' => $equity->id]);
|
|
$this->member('1005', ['agent_id' => $equity->id]);
|
|
|
$this->member('1006', ['agent_id' => $equity->id, 'agent_user_code' => 'GONE']);
|
|
$this->member('1006', ['agent_id' => $equity->id, 'agent_user_code' => 'GONE']);
|
|
|
- $data = $this->call(['member_id' => '1005', 'type' => 'agent', 'superior_id' => (string) $agent->id]);
|
|
|
|
|
|
|
+ $data = $this->call(['member_id' => '1005', 'type' => 'agent', 'agent_username' => $agent->username]);
|
|
|
$this->assertSame(0, $data['code'], (string) $data['msg']);
|
|
$this->assertSame(0, $data['code'], (string) $data['msg']);
|
|
|
$this->assertSame($agent->id, (int) DB::table('users')->where('member_id', '1005')->value('agent_id'));
|
|
$this->assertSame($agent->id, (int) DB::table('users')->where('member_id', '1005')->value('agent_id'));
|
|
|
$data = $this->call(['member_id' => '1006', 'type' => 'member', 'superior_id' => '1002']);
|
|
$data = $this->call(['member_id' => '1006', 'type' => 'member', 'superior_id' => '1002']);
|
|
@@ -100,7 +101,31 @@ class AdminBindSuperiorTest extends TestCase
|
|
|
$this->assertNull(DB::table('users')->where('member_id', '1006')->value('agent_id'));
|
|
$this->assertNull(DB::table('users')->where('member_id', '1006')->value('agent_id'));
|
|
|
|
|
|
|
|
Agent::query()->whereKey($agent->id)->update(['status' => Agent::STATUS_DISABLED]);
|
|
Agent::query()->whereKey($agent->id)->update(['status' => Agent::STATUS_DISABLED]);
|
|
|
- $this->assertSame('代理已禁用', $this->call(['member_id' => '1002', 'type' => 'agent', 'superior_id' => (string) $agent->id])['msg']);
|
|
|
|
|
|
|
+ $this->assertSame('代理已禁用', $this->call(['member_id' => '1002', 'type' => 'agent', 'agent_username' => $agent->username])['msg']);
|
|
|
$this->assertNull(DB::table('users')->where('id', $b)->value('agent_id'));
|
|
$this->assertNull(DB::table('users')->where('id', $b)->value('agent_id'));
|
|
|
}
|
|
}
|
|
|
|
|
+
|
|
|
|
|
+ public function test_rejects_mixed_target_fields_and_never_falls_back_to_other_identifiers(): void
|
|
|
|
|
+ {
|
|
|
|
|
+ $agent = $this->agent();
|
|
|
|
|
+ $member = $this->member('1001');
|
|
|
|
|
+ $this->member('1002', ['account' => 'inviter-account']);
|
|
|
|
|
+
|
|
|
|
|
+ foreach ([
|
|
|
|
|
+ ['type' => 'agent', 'superior_id' => (string) $agent->id],
|
|
|
|
|
+ ['type' => 'agent', 'agent_username' => $agent->username, 'superior_id' => '1002'],
|
|
|
|
|
+ ['type' => 'member', 'agent_username' => $agent->username],
|
|
|
|
|
+ ['type' => 'member', 'superior_id' => '1002', 'agent_username' => $agent->username],
|
|
|
|
|
+ ] as $params) {
|
|
|
|
|
+ $this->assertNotSame(0, $this->call($params + ['member_id' => '1001'])['code']);
|
|
|
|
|
+ }
|
|
|
|
|
+ $this->assertSame('代理不存在', $this->call([
|
|
|
|
|
+ 'member_id' => '1001', 'type' => 'agent', 'agent_username' => (string) $agent->id,
|
|
|
|
|
+ ])['msg']);
|
|
|
|
|
+ $this->assertSame('上级会员不存在', $this->call([
|
|
|
|
|
+ 'member_id' => '1001', 'type' => 'member', 'superior_id' => 'inviter-account',
|
|
|
|
|
+ ])['msg']);
|
|
|
|
|
+ $this->assertNull(DB::table('users')->where('id', $member)->value('agent_id'));
|
|
|
|
|
+ $this->assertNull(DB::table('share_members')->where('user_id', $member)->value('parent_user_id'));
|
|
|
|
|
+ }
|
|
|
}
|
|
}
|