100 lines
3.8 KiB
Plaintext
Raw Normal View History

import common from "@ohos.app.ability.common";
import FileUtil from "../../common/utils/File";
import { GlobalConfig } from "../../config";
import Prompt from "@system.prompt";
import {
ApiResponseType,
BaseInfoType,
CarConfigurationParamsType,
ObtainCarExamInfoParams,
ObtainCarExamInfoRspBody,
TimeSynchronizationParams
} from "../../model";
import dayTs from "../../utils/Date";
import { obtainCarExamInfo, timeSynchronization } from "../../api";
import abilityAccessCtrl, { Permissions } from '@ohos.abilityAccessCtrl';
import { BusinessError } from "@ohos.base";
import App from "@system.app";
import systemTime from "@ohos.systemTime";
//获取设备信息
export async function GetDeviceInfo(context: common.UIAbilityContext): Promise<string> {
return new Promise(async (resolve, reject) => {
const fileUtil = new FileUtil(context)
const data = await fileUtil.readFile(GlobalConfig.comoonfileWriteAddress + '/config/deviceNo.txt');
if (data === '' || data === undefined) {
Prompt.showToast({
message: "请先进行设备注册!",
duration: 3000
})
AppStorage.setOrCreate('type', 1)
AppStorage.setOrCreate('title', '请先进行设备注册')
resolve("")
} else {
const fileData: CarConfigurationParamsType = JSON.parse(data)
AppStorage.setOrCreate('deviceNo', fileData.deviceName)
resolve(fileData.deviceName)
}
})
}
export async function GetCarInfo() {
let date = new Date();
let params: ObtainCarExamInfoParams = {
time: dayTs(date).format("YYYY-MM-DD HH:mm:ss"),
deviceNo: AppStorage.get('deviceNo')
};
let res: ApiResponseType = await obtainCarExamInfo(params)
if (res.obtainCarExamInfoRsp.body) {
const carInfo: ObtainCarExamInfoRspBody = res?.obtainCarExamInfoRsp?.body
carInfo.plateNo = decodeURIComponent(carInfo.plateNo)
AppStorage.setOrCreate('carInfo', carInfo)
}
}
export async function UseAuth(context: common.UIAbilityContext): Promise<boolean> {
return new Promise((resolve, reject) => {
const permissions: Array<Permissions> =
["ohos.permission.SET_TIME", "ohos.permission.READ_IMAGEVIDEO", "ohos.permission.DISTRIBUTED_DATASYNC",
'ohos.permission.CONNECTIVITY_INTERNAL', 'ohos.permission.CAMERA', 'ohos.permission.READ_MEDIA',
'ohos.permission.WRITE_MEDIA', 'ohos.permission.FILE_ACCESS_MANAGER'];
abilityAccessCtrl.createAtManager().requestPermissionsFromUser(context, permissions).then(res => {
let grantStatus: Array<number> = res.authResults;
let length: number = grantStatus.length;
for (let i = 0; i < length; i++) {
if (grantStatus[i] === 0) {
// 用户授权,可以继续访问目标操作
resolve(true)
} else {
reject(false)
// 用户拒绝授权,提示用户必须授权才能访问当前页面的功能,并引导用户到系统设置中打开相应的权限
return;
}
}
}).catch((err: BusinessError) => {
console.log("获取权限失败", JSON.stringify(err))
reject(false)
})
})
}
//获取时间同步
export async function SetCurrentTime(): Promise<void> {
let deviceNo: string = AppStorage.get<string>('deviceNo');
let baseInfo: BaseInfoType = AppStorage.get<BaseInfoType>('baseInfo')
let params: TimeSynchronizationParams = {
time: dayTs(new Date()).format("YYYY-MM-DD HH:mm:ss"),
deviceNo,
version: baseInfo.version,
judgeVersion: baseInfo.judgeVersion
}
let res: ApiResponseType = await timeSynchronization(params);
AppStorage.setOrCreate('timeInfo', res.timeSynchronizationRsp.body)
let currentTime = res.timeSynchronizationRsp.head.time;
let times = new Date(currentTime).getTime();
try {
await systemTime.setTime(times)
} catch (error) {
console.log('时间同步失败', error)
}
}