import { defineStore } from 'pinia'; import { DAHUALogin, DAHUALoginParams, LoginResponse,DAHUAKeepAlive,DAHUAUserInfo,DAHUAInfomation,DAHUACreateMeet,DAHUADeleteMeet,DAHUAMeetingUser } from '@/api/dahua'; import isString from 'lodash/isString'; import { parseStr } from '@/utils'; import md5 from 'crypto-js/md5'; import { DA_HUA, DA_HUA_URL_PREFIX } from '@/constants/constants'; import hex from 'crypto-js/format-hex'; import { ElMessage } from 'element-plus'; export interface DaHuaStateType { dhuser: object } export interface DaHuaActionsType { DAHUALogin(): void; KEEPAlive(): void; DAHUAUserInfo(): void; DAHUAInfomation(): void; } export default defineStore<'daHua', DaHuaStateType, {}, DaHuaActionsType>( 'daHua', { state: () => ({ dhuser:{} }), actions: { async DAHUALogin() { try { const { password, username } = DA_HUA; const firstLoginRes = await fetch( `${DA_HUA_URL_PREFIX}/videoService/accounts/authorize`, { method: 'POST', headers: { 'Content-Type': 'application/json', 'X-Subject-Token': '', }, body: JSON.stringify({ userName: username, clientType: 'winpc', ipAddress: '', //可不传 pid: 2548, //可不传 }), }, ); const firstLogin = (await firstLoginRes.json()) as unknown as { realm?: string; randomKey: string; }; const md1 = md5(password); //第1次加密 const md2 = md5(username + md1); //第2次加密 const md3 = md5(md2.toString()); //第3次加密 const md4 = md5(username + ':' + firstLogin.realm + ':' + md3); //第4次加密 const signature = md5(md4 + ':' + firstLogin.randomKey); //第5次加密 const data = await DAHUALogin({ userName: username, signature: signature.toString(), randomKey: firstLogin.randomKey, encryptType: 'MD5', clientType: 'winpc', pid: 2548, }); const next = isString(data) ? parseStr(data) : data ?? {}; localStorage.setItem('DAHUA_token', next.token); localStorage.setItem( 'DAHUA_userId', JSON.stringify(next.userId || ''), ); this.KEEPAlive(); } catch (err) { console.log(err); ElMessage.error({ message: '大华应急指挥调度实战平台鉴权失败, 请尝试刷新页面重试', }); } }, async KEEPAlive(){ const dahuaToken = localStorage.getItem('DAHUA_token').replace('"',''); // const dahuaToken = '5269850340392960_c63314d9429094389d84166a6d888338647bf98afd0c10d6f23bf696a84d439cd50d2efd7260977a26023391617a50343cf5125fc523acc8a1bb1b12191bf188'; console.log(dahuaToken); const res = await DAHUAKeepAlive({ token:dahuaToken }); const that = this; setTimeout(function() { that.KEEPAlive(); }, 20000); }, async DAHUAUserInfo(){ const dahuaToken = localStorage.getItem('DAHUA_token').replace('"',''); const res = await DAHUAUserInfo({ token:dahuaToken }); return res }, async DAHUAInfomation(){ const dahuaToken = localStorage.getItem('DAHUA_token').replace('"',''); const res = await DAHUAInfomation({ page: 1, pageSize: 1000, condition: {}, keyCondition: {}, token:dahuaToken }); console.log(res); }, async DAHUACreateMeet(user){ const dahuaToken = localStorage.getItem('DAHUA_token').replace('"',''); // console.log(user.userName); const res = await DAHUACreateMeet({ masterName : user.userName, masterId : user.userCode, masterNumber : user.userPhone, region : user.paasId, mode : 'group', name : '11111', record : true, type : 'video', token : dahuaToken }); return res }, async DAHUAMeetingUser(id){ console.log(id); const dahuaToken = localStorage.getItem('DAHUA_token').replace('"',''); // console.log(user.userName); const res = await DAHUAMeetingUser({ token: dahuaToken, meetId: id }); console.log(res); }, async DAHUADeleteMeet(id){ console.log(id); const dahuaToken = localStorage.getItem('DAHUA_token').replace('"',''); // console.log(user.userName); const res = await DAHUADeleteMeet({ token: dahuaToken, meetId: id }); console.log(res); }, }, }, );