useDaHuaStore.ts 4.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153
  1. import { defineStore } from 'pinia';
  2. import { DAHUALogin, DAHUALoginParams, LoginResponse,DAHUAKeepAlive,DAHUAUserInfo,DAHUAInfomation,DAHUACreateMeet,DAHUADeleteMeet,DAHUAMeetingUser } from '@/api/dahua';
  3. import isString from 'lodash/isString';
  4. import { parseStr } from '@/utils';
  5. import md5 from 'crypto-js/md5';
  6. import { DA_HUA, DA_HUA_URL_PREFIX } from '@/constants/constants';
  7. import hex from 'crypto-js/format-hex';
  8. import { ElMessage } from 'element-plus';
  9. export interface DaHuaStateType {
  10. dhuser: object
  11. }
  12. export interface DaHuaActionsType {
  13. DAHUALogin(): void;
  14. KEEPAlive(): void;
  15. DAHUAUserInfo(): void;
  16. DAHUAInfomation(): void;
  17. }
  18. export default defineStore<'daHua', DaHuaStateType, {}, DaHuaActionsType>(
  19. 'daHua',
  20. {
  21. state: () => ({
  22. dhuser:{}
  23. }),
  24. actions: {
  25. async DAHUALogin() {
  26. try {
  27. const { password, username } = DA_HUA;
  28. const firstLoginRes = await fetch(
  29. `${DA_HUA_URL_PREFIX}/videoService/accounts/authorize`,
  30. {
  31. method: 'POST',
  32. headers: {
  33. 'Content-Type': 'application/json',
  34. 'X-Subject-Token': '',
  35. },
  36. body: JSON.stringify({
  37. userName: username,
  38. clientType: 'winpc',
  39. ipAddress: '', //可不传
  40. pid: 2548, //可不传
  41. }),
  42. },
  43. );
  44. const firstLogin = (await firstLoginRes.json()) as unknown as {
  45. realm?: string;
  46. randomKey: string;
  47. };
  48. const md1 = md5(password); //第1次加密
  49. const md2 = md5(username + md1); //第2次加密
  50. const md3 = md5(md2.toString()); //第3次加密
  51. const md4 = md5(username + ':' + firstLogin.realm + ':' + md3); //第4次加密
  52. const signature = md5(md4 + ':' + firstLogin.randomKey); //第5次加密
  53. const data = await DAHUALogin({
  54. userName: username,
  55. signature: signature.toString(),
  56. randomKey: firstLogin.randomKey,
  57. encryptType: 'MD5',
  58. clientType: 'winpc',
  59. pid: 2548,
  60. });
  61. const next = isString(data)
  62. ? parseStr<LoginResponse>(data)
  63. : data ?? {};
  64. localStorage.setItem('DAHUA_token', next.token);
  65. localStorage.setItem(
  66. 'DAHUA_userId',
  67. JSON.stringify(next.userId || ''),
  68. );
  69. this.KEEPAlive();
  70. } catch (err) {
  71. console.log(err);
  72. ElMessage.error({
  73. message: '大华应急指挥调度实战平台鉴权失败, 请尝试刷新页面重试',
  74. });
  75. }
  76. },
  77. async KEEPAlive(){
  78. const dahuaToken = localStorage.getItem('DAHUA_token').replace('"','');
  79. // const dahuaToken = '5269850340392960_c63314d9429094389d84166a6d888338647bf98afd0c10d6f23bf696a84d439cd50d2efd7260977a26023391617a50343cf5125fc523acc8a1bb1b12191bf188';
  80. console.log(dahuaToken);
  81. const res = await DAHUAKeepAlive({
  82. token:dahuaToken
  83. });
  84. const that = this;
  85. setTimeout(function() {
  86. that.KEEPAlive();
  87. }, 20000);
  88. },
  89. async DAHUAUserInfo(){
  90. const dahuaToken = localStorage.getItem('DAHUA_token').replace('"','');
  91. const res = await DAHUAUserInfo({
  92. token:dahuaToken
  93. });
  94. return res
  95. },
  96. async DAHUAInfomation(){
  97. const dahuaToken = localStorage.getItem('DAHUA_token').replace('"','');
  98. const res = await DAHUAInfomation({
  99. page: 1,
  100. pageSize: 1000,
  101. condition: {},
  102. keyCondition: {},
  103. token:dahuaToken
  104. });
  105. console.log(res);
  106. },
  107. async DAHUACreateMeet(user){
  108. const dahuaToken = localStorage.getItem('DAHUA_token').replace('"','');
  109. // console.log(user.userName);
  110. const res = await DAHUACreateMeet({
  111. masterName : user.userName,
  112. masterId : user.userCode,
  113. masterNumber : user.userPhone,
  114. region : user.paasId,
  115. mode : 'group',
  116. name : '11111',
  117. record : true,
  118. type : 'video',
  119. token : dahuaToken
  120. });
  121. return res
  122. },
  123. async DAHUAMeetingUser(id){
  124. console.log(id);
  125. const dahuaToken = localStorage.getItem('DAHUA_token').replace('"','');
  126. // console.log(user.userName);
  127. const res = await DAHUAMeetingUser({
  128. token: dahuaToken,
  129. meetId: id
  130. });
  131. console.log(res);
  132. },
  133. async DAHUADeleteMeet(id){
  134. console.log(id);
  135. const dahuaToken = localStorage.getItem('DAHUA_token').replace('"','');
  136. // console.log(user.userName);
  137. const res = await DAHUADeleteMeet({
  138. token: dahuaToken,
  139. meetId: id
  140. });
  141. console.log(res);
  142. },
  143. },
  144. },
  145. );