@oinone/kunlun-vue-admin-layout 7.2.2 → 7.2.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,47 +1,97 @@
1
1
  import { SYSTEM_MODULE_NAME } from '@oinone/kunlun-meta';
2
2
  import { GQL } from '@oinone/kunlun-request';
3
3
  import { SPI } from '@oinone/kunlun-spi';
4
+ import { type PartnerInfoSession, PartnerInfoSessionToken, type PartnerSessionStore } from '../../session';
4
5
  import type { PartnerInfo, PartnerItem } from '../../typing';
5
6
  import { type PartnerSwitcherService, PartnerSwitcherServiceToken } from '../PartnerSwitcherService';
6
7
 
7
- const SHOW_PARTNERS_MODEL_NAME = 'showPartners';
8
+ const BUSINESS_SUBJECT_SWITCHER_MODEL = 'businessSubjectSwitcher';
8
9
 
9
- export type QueryShowPartnersResult = {
10
- partner: { code: string; name: string };
11
- partnerList: { code: string; name: string }[];
10
+ export type QueryBusinessSubjectSwitcherResult = {
11
+ current: { partnerId: string; code: string; name: string };
12
+ switchList: { partnerId: string; code: string; name: string }[];
12
13
  };
13
14
 
14
15
  @SPI.Service(PartnerSwitcherServiceToken)
15
16
  export class PartnerSwitcherServiceImpl implements PartnerSwitcherService {
17
+ protected partnerInfoSession = SPI.RawInstantiate(PartnerInfoSessionToken) as PartnerInfoSession<PartnerSessionStore>;
18
+
16
19
  public async queryPartnerInfo(): Promise<PartnerInfo | undefined> {
17
- return GQL.query(SHOW_PARTNERS_MODEL_NAME, 'queryAllPartners')
18
- .buildResponse((builder) => builder.parameter(['partner', ['code', 'name']], ['partnerList', ['code', 'name']]))
19
- .request<QueryShowPartnersResult>(SYSTEM_MODULE_NAME.COMMON)
20
+ const cached = this.getCachedPartner();
21
+ return GQL.query(BUSINESS_SUBJECT_SWITCHER_MODEL, 'querySwitchList')
22
+ .buildRequest((builder) => {
23
+ builder.buildObjectParameter('data', (builder) => {
24
+ builder.stringParameter('scope', 'company');
25
+ if (cached?.id || cached?.code) {
26
+ builder.buildObjectParameter('current', (builder) => {
27
+ if (cached.id) {
28
+ builder.stringParameter('partnerId', cached.id);
29
+ }
30
+ if (cached.code) {
31
+ builder.stringParameter('code', cached.code);
32
+ }
33
+ });
34
+ }
35
+ });
36
+ })
37
+ .buildResponse((builder) =>
38
+ builder.parameter(['current', ['partnerId', 'code', 'name']], ['switchList', ['partnerId', 'code', 'name']])
39
+ )
40
+ .request<QueryBusinessSubjectSwitcherResult>(SYSTEM_MODULE_NAME.COMMON)
20
41
  .then((data) => this.convert(data));
21
42
  }
22
43
 
44
+ protected getCachedPartner(): { id?: string; code?: string } | undefined {
45
+ const store = this.partnerInfoSession?.getCurrentPartnerStore();
46
+ if (!store) {
47
+ return undefined;
48
+ }
49
+ const id = store.sid || store.lid || undefined;
50
+ const code = store.scode || store.lcode || undefined;
51
+ if (!id && !code) {
52
+ return undefined;
53
+ }
54
+ return { id, code };
55
+ }
56
+
23
57
  public async changePartner(target: PartnerItem): Promise<PartnerInfo | undefined> {
24
- return GQL.mutation(SHOW_PARTNERS_MODEL_NAME, 'changePartner')
58
+ return GQL.mutation(BUSINESS_SUBJECT_SWITCHER_MODEL, 'togglePartner')
25
59
  .buildRequest((builder) => {
26
- builder.buildObjectParameter('currentPartner', (builder) => {
27
- builder.stringParameter('code', target.id);
28
- builder.stringParameter('name', target.name);
60
+ builder.buildObjectParameter('data', (builder) => {
61
+ builder.stringParameter('scope', 'company');
62
+ builder.buildObjectParameter('current', (builder) => {
63
+ builder.stringParameter('partnerId', target.id);
64
+ builder.stringParameter('code', target.code || target.id);
65
+ builder.stringParameter('name', target.name);
66
+ });
29
67
  });
30
68
  })
31
- .buildResponse((builder) => builder.parameter(['partner', ['code', 'name']], ['partnerList', ['code', 'name']]))
32
- .request<QueryShowPartnersResult>(SYSTEM_MODULE_NAME.COMMON)
69
+ .buildResponse((builder) =>
70
+ builder.parameter(['current', ['partnerId', 'code', 'name']], ['switchList', ['partnerId', 'code', 'name']])
71
+ )
72
+ .request<QueryBusinessSubjectSwitcherResult>(SYSTEM_MODULE_NAME.COMMON)
33
73
  .then((data) => this.convert(data));
34
74
  }
35
75
 
36
- protected convert(data: QueryShowPartnersResult): PartnerInfo | undefined {
37
- const { partner, partnerList } = data;
38
- if (partner && partner.code) {
76
+ protected convert(data: QueryBusinessSubjectSwitcherResult): PartnerInfo | undefined {
77
+ const { current, switchList } = data || ({} as QueryBusinessSubjectSwitcherResult);
78
+ const partnerList =
79
+ switchList?.map((v) => ({
80
+ id: v.partnerId || v.code,
81
+ code: v.code,
82
+ name: v.name
83
+ })) || [];
84
+ const currentId = current?.partnerId || current?.code;
85
+ const matched = currentId
86
+ ? partnerList.find((v) => v.id === currentId || v.code === currentId || v.code === current?.code)
87
+ : undefined;
88
+ const currentPartner =
89
+ matched ||
90
+ (currentId ? { id: currentId, code: current?.code || currentId, name: current?.name || '' } : partnerList[0]);
91
+ if (currentPartner?.id) {
39
92
  return {
40
- currentPartner: {
41
- id: partner.code,
42
- name: partner.name
43
- },
44
- partnerList: partnerList?.map((v) => ({ id: v.code, name: v.name })) || []
93
+ currentPartner,
94
+ partnerList
45
95
  };
46
96
  }
47
97
  }
@@ -5,12 +5,16 @@ import { type PartnerInfoSession, PartnerInfoSessionToken } from '../PartnerInfo
5
5
  export interface PartnerSessionStore {
6
6
  sid: string | null | undefined;
7
7
  lid: string | null | undefined;
8
+ scode: string | null | undefined;
9
+ lcode: string | null | undefined;
8
10
  }
9
11
 
10
12
  @SPI.Service(PartnerInfoSessionToken)
11
13
  export class DefaultPartnerInfoSession implements PartnerInfoSession<PartnerSessionStore> {
12
14
  private static readonly CACHE_KEY = 'pamirs_partner_id';
13
15
 
16
+ private static readonly CACHE_CODE_KEY = 'pamirs_partner_code';
17
+
14
18
  private partnerInfo: PartnerInfo | undefined;
15
19
 
16
20
  public getCurrentPartner(): PartnerItem | undefined {
@@ -23,8 +27,12 @@ export class DefaultPartnerInfoSession implements PartnerInfoSession<PartnerSess
23
27
 
24
28
  public setPartnerInfo(target: PartnerInfo | undefined): void {
25
29
  if (target) {
30
+ this.partnerInfo = target;
26
31
  sessionStorage.setItem(DefaultPartnerInfoSession.CACHE_KEY, target.currentPartner.id);
27
32
  localStorage.setItem(DefaultPartnerInfoSession.CACHE_KEY, target.currentPartner.id);
33
+ const code = target.currentPartner.code || '';
34
+ sessionStorage.setItem(DefaultPartnerInfoSession.CACHE_CODE_KEY, code);
35
+ localStorage.setItem(DefaultPartnerInfoSession.CACHE_CODE_KEY, code);
28
36
  } else {
29
37
  this.clear();
30
38
  }
@@ -33,14 +41,19 @@ export class DefaultPartnerInfoSession implements PartnerInfoSession<PartnerSess
33
41
  public getCurrentPartnerStore(): PartnerSessionStore | undefined {
34
42
  const sid = sessionStorage.getItem(DefaultPartnerInfoSession.CACHE_KEY);
35
43
  const lid = localStorage.getItem(DefaultPartnerInfoSession.CACHE_KEY);
36
- if (sid || lid) {
37
- return { sid, lid };
44
+ const scode = sessionStorage.getItem(DefaultPartnerInfoSession.CACHE_CODE_KEY);
45
+ const lcode = localStorage.getItem(DefaultPartnerInfoSession.CACHE_CODE_KEY);
46
+ if (sid || lid || scode || lcode) {
47
+ return { sid, lid, scode, lcode };
38
48
  }
39
49
  return undefined;
40
50
  }
41
51
 
42
52
  public clear(): void {
53
+ this.partnerInfo = undefined;
43
54
  sessionStorage.removeItem(DefaultPartnerInfoSession.CACHE_KEY);
44
55
  localStorage.removeItem(DefaultPartnerInfoSession.CACHE_KEY);
56
+ sessionStorage.removeItem(DefaultPartnerInfoSession.CACHE_CODE_KEY);
57
+ localStorage.removeItem(DefaultPartnerInfoSession.CACHE_CODE_KEY);
45
58
  }
46
59
  }
@@ -4,6 +4,7 @@
4
4
  export interface PartnerItem {
5
5
  id: string;
6
6
  name: string;
7
+ code?: string;
7
8
  }
8
9
 
9
10
  /**