yuan_yi
3 years ago
9 changed files with 221 additions and 63 deletions
@ -0,0 +1,61 @@ |
|||
/* eslint-disable*/ |
|||
'use strict'; |
|||
|
|||
module.exports = dc => { |
|||
const DataTypes = dc.ORM; |
|||
const sequelize = dc.orm; |
|||
const SecretYingshi = sequelize.define("secretYingshi", { |
|||
id: { |
|||
type: DataTypes.INTEGER, |
|||
allowNull: false, |
|||
defaultValue: null, |
|||
comment: null, |
|||
primaryKey: true, |
|||
field: "id", |
|||
autoIncrement: true, |
|||
unique: "secret_yingshi_id_uindex" |
|||
}, |
|||
key: { |
|||
type: DataTypes.STRING, |
|||
allowNull: false, |
|||
defaultValue: null, |
|||
comment: null, |
|||
primaryKey: false, |
|||
field: "key", |
|||
autoIncrement: false |
|||
}, |
|||
secret: { |
|||
type: DataTypes.STRING, |
|||
allowNull: false, |
|||
defaultValue: null, |
|||
comment: null, |
|||
primaryKey: false, |
|||
field: "secret", |
|||
autoIncrement: false |
|||
}, |
|||
token: { |
|||
type: DataTypes.STRING, |
|||
allowNull: true, |
|||
defaultValue: null, |
|||
comment: null, |
|||
primaryKey: false, |
|||
field: "token", |
|||
autoIncrement: false |
|||
}, |
|||
expire: { |
|||
type: DataTypes.STRING, |
|||
allowNull: true, |
|||
defaultValue: null, |
|||
comment: null, |
|||
primaryKey: false, |
|||
field: "expire", |
|||
autoIncrement: false |
|||
} |
|||
}, { |
|||
tableName: "secret_yingshi", |
|||
comment: "", |
|||
indexes: [] |
|||
}); |
|||
dc.models.SecretYingshi = SecretYingshi; |
|||
return SecretYingshi; |
|||
}; |
@ -1,31 +1,34 @@ |
|||
'use strict'; |
|||
|
|||
async function rtmp2others (rtmp) { |
|||
|
|||
return { |
|||
liveUrl: { |
|||
hd: {// 高清
|
|||
rtmp: 'xx', |
|||
hls: 'xx', |
|||
flv: 'xx', |
|||
ezopen: 'xx', |
|||
onvif: 'xx', |
|||
module.exports = function (app, opts) { |
|||
async function rtmp2others (rtmp) { |
|||
|
|||
return { |
|||
liveUrl: {// 直播
|
|||
hd: {// 高清
|
|||
rtmp: 'xx', |
|||
hls: 'xx', |
|||
flv: 'xx', |
|||
ezopen: 'xx', |
|||
onvif: 'xx', |
|||
}, |
|||
sd: {// 标清
|
|||
rtmp: 'xx', |
|||
hls: 'xx', |
|||
flv: 'xx', |
|||
ezopen: 'xx', |
|||
onvif: 'xx', |
|||
} |
|||
}, |
|||
sd: {// 标清
|
|||
rtmp: 'xx', |
|||
hls: 'xx', |
|||
flv: 'xx', |
|||
ezopen: 'xx', |
|||
onvif: 'xx', |
|||
replayUrl: {// 回放
|
|||
cloud: 'xx', |
|||
local: 'xx', |
|||
} |
|||
}, |
|||
replayUrl: { |
|||
cloud: 'xx', |
|||
local: 'xx', |
|||
} |
|||
} |
|||
} |
|||
|
|||
module.exports = { |
|||
rtmp2others, |
|||
return { |
|||
rtmp2others |
|||
} |
|||
} |
@ -0,0 +1,49 @@ |
|||
'use strict'; |
|||
|
|||
const moment = require('moment') |
|||
|
|||
module.exports = function (app, opts) { |
|||
async function token4yingshi ({ key, secret, token, expire } = {}) { |
|||
const { models } = app.fs.dc |
|||
if (!key || !secret) { |
|||
throw '参数 { key, secret } 缺一不可' |
|||
} |
|||
|
|||
if (token && expire && moment().isBefore(moment(expire))) { |
|||
return token |
|||
} else { |
|||
const secretRes = await models.SecretYingshi.findOne({ |
|||
where: { key, secret } |
|||
}) |
|||
if (secretRes && secretRes.expire && secretRes.token && moment().isBefore(moment(secretRes.expire))) { |
|||
return secretRes.token |
|||
} |
|||
} |
|||
|
|||
// 也可以做基于 redis 的缓存
|
|||
const tokenRes = await app.fs.yingshiRequest.post(`lapp/token/get`, { |
|||
query: { |
|||
appKey: key, |
|||
appSecret: secret |
|||
} |
|||
}) |
|||
if (tokenRes.code == 200) { |
|||
const { accessToken, expireTime } = tokenRes.data |
|||
await models.SecretYingshi.update({ |
|||
token: accessToken, |
|||
expire: expireTime |
|||
}, { |
|||
where: { |
|||
key, secret |
|||
} |
|||
}) |
|||
return accessToken |
|||
} else { |
|||
throw tokenRes |
|||
} |
|||
} |
|||
|
|||
return { |
|||
token4yingshi |
|||
} |
|||
} |
@ -1,35 +1,35 @@ |
|||
module.exports = { |
|||
// 数据库配置 与 sequelize 相同
|
|||
dbOptions: { |
|||
database: 'video_access', |
|||
username: 'postgres', |
|||
password: '123', |
|||
dialect: 'postgres', |
|||
host: '10.8.30.32', |
|||
port: 5432, |
|||
define: { |
|||
underscored: false, |
|||
freezeTableName: false, |
|||
charset: 'utf8mb4', |
|||
timezone: '+00: 00', |
|||
dialectOptions: { |
|||
collate: 'utf8_general_ci', |
|||
}, |
|||
timestamps: false, |
|||
}, |
|||
}, |
|||
options: { |
|||
type: 'freesun', // 指定 models 代码风格
|
|||
camelCase: true, // Models 文件中代码是否使用驼峰命名
|
|||
modalNameSuffix: false, // 模型名称是否带 ‘Model’ 后缀
|
|||
fileNameCamelCase: false, // Model 文件名是否使用驼峰法命名,默认文件名会使用表名,如 `user_post.js`;如果为 true,则文件名为 `userPost.js`
|
|||
dir: './app/lib/models', // 指定输出 models 文件的目录
|
|||
typesDir: 'models', // 指定输出 TypeScript 类型定义的文件目录,只有 TypeScript / Midway 等会有类型定义
|
|||
emptyDir: true, // !!! 谨慎操作 生成 models 之前是否清空 `dir` 以及 `typesDir`
|
|||
tables: null, // 指定生成哪些表的 models,如 ['user', 'user_post'];如果为 null,则忽略改属性
|
|||
skipTables: [], // 指定跳过哪些表的 models,如 ['user'];如果为 null,则忽略改属性
|
|||
tsNoCheck: false, // 是否添加 `@ts-nocheck` 注释到 models 文件中
|
|||
ignorePrefix: [], // 生成的模型名称忽略的前缀,因为 项目中有以下表名是以 t_ 开头的,在实际模型中不需要, 可以添加多个 [ 't_data_', 't_',] ,长度较长的 前缀放前面
|
|||
attrLength: false, // 在生成模型的字段中 是否生成 如 var(128)这种格式,公司一般使用 String ,则配置为 false
|
|||
}, |
|||
// 数据库配置 与 sequelize 相同
|
|||
dbOptions: { |
|||
database: 'video_access', |
|||
username: 'postgres', |
|||
password: '123', |
|||
dialect: 'postgres', |
|||
host: '10.8.30.32', |
|||
port: 5432, |
|||
define: { |
|||
underscored: false, |
|||
freezeTableName: false, |
|||
charset: 'utf8mb4', |
|||
timezone: '+00: 00', |
|||
dialectOptions: { |
|||
collate: 'utf8_general_ci', |
|||
}, |
|||
timestamps: false, |
|||
}, |
|||
}, |
|||
options: { |
|||
type: 'freesun', // 指定 models 代码风格
|
|||
camelCase: true, // Models 文件中代码是否使用驼峰命名
|
|||
modalNameSuffix: false, // 模型名称是否带 ‘Model’ 后缀
|
|||
fileNameCamelCase: false, // Model 文件名是否使用驼峰法命名,默认文件名会使用表名,如 `user_post.js`;如果为 true,则文件名为 `userPost.js`
|
|||
dir: './app/lib/models', // 指定输出 models 文件的目录
|
|||
typesDir: 'models', // 指定输出 TypeScript 类型定义的文件目录,只有 TypeScript / Midway 等会有类型定义
|
|||
emptyDir: false, // !!! 谨慎操作 生成 models 之前是否清空 `dir` 以及 `typesDir`
|
|||
tables: ['secret_yingshi'], // 指定生成哪些表的 models,如 ['user', 'user_post'];如果为 null,则忽略改属性
|
|||
skipTables: [], // 指定跳过哪些表的 models,如 ['user'];如果为 null,则忽略改属性
|
|||
tsNoCheck: false, // 是否添加 `@ts-nocheck` 注释到 models 文件中
|
|||
ignorePrefix: [], // 生成的模型名称忽略的前缀,因为 项目中有以下表名是以 t_ 开头的,在实际模型中不需要, 可以添加多个 [ 't_data_', 't_',] ,长度较长的 前缀放前面
|
|||
attrLength: false, // 在生成模型的字段中 是否生成 如 var(128)这种格式,公司一般使用 String ,则配置为 false
|
|||
}, |
|||
} |
Loading…
Reference in new issue