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'; |
'use strict'; |
||||
|
|
||||
async function rtmp2others (rtmp) { |
|
||||
|
|
||||
return { |
module.exports = function (app, opts) { |
||||
liveUrl: { |
async function rtmp2others (rtmp) { |
||||
hd: {// 高清
|
|
||||
rtmp: 'xx', |
return { |
||||
hls: 'xx', |
liveUrl: {// 直播
|
||||
flv: 'xx', |
hd: {// 高清
|
||||
ezopen: 'xx', |
rtmp: 'xx', |
||||
onvif: 'xx', |
hls: 'xx', |
||||
|
flv: 'xx', |
||||
|
ezopen: 'xx', |
||||
|
onvif: 'xx', |
||||
|
}, |
||||
|
sd: {// 标清
|
||||
|
rtmp: 'xx', |
||||
|
hls: 'xx', |
||||
|
flv: 'xx', |
||||
|
ezopen: 'xx', |
||||
|
onvif: 'xx', |
||||
|
} |
||||
}, |
}, |
||||
sd: {// 标清
|
replayUrl: {// 回放
|
||||
rtmp: 'xx', |
cloud: 'xx', |
||||
hls: 'xx', |
local: 'xx', |
||||
flv: 'xx', |
|
||||
ezopen: 'xx', |
|
||||
onvif: 'xx', |
|
||||
} |
} |
||||
}, |
|
||||
replayUrl: { |
|
||||
cloud: 'xx', |
|
||||
local: 'xx', |
|
||||
} |
} |
||||
} |
} |
||||
} |
|
||||
|
|
||||
module.exports = { |
return { |
||||
rtmp2others, |
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 = { |
module.exports = { |
||||
// 数据库配置 与 sequelize 相同
|
// 数据库配置 与 sequelize 相同
|
||||
dbOptions: { |
dbOptions: { |
||||
database: 'video_access', |
database: 'video_access', |
||||
username: 'postgres', |
username: 'postgres', |
||||
password: '123', |
password: '123', |
||||
dialect: 'postgres', |
dialect: 'postgres', |
||||
host: '10.8.30.32', |
host: '10.8.30.32', |
||||
port: 5432, |
port: 5432, |
||||
define: { |
define: { |
||||
underscored: false, |
underscored: false, |
||||
freezeTableName: false, |
freezeTableName: false, |
||||
charset: 'utf8mb4', |
charset: 'utf8mb4', |
||||
timezone: '+00: 00', |
timezone: '+00: 00', |
||||
dialectOptions: { |
dialectOptions: { |
||||
collate: 'utf8_general_ci', |
collate: 'utf8_general_ci', |
||||
}, |
}, |
||||
timestamps: false, |
timestamps: false, |
||||
}, |
}, |
||||
}, |
}, |
||||
options: { |
options: { |
||||
type: 'freesun', // 指定 models 代码风格
|
type: 'freesun', // 指定 models 代码风格
|
||||
camelCase: true, // Models 文件中代码是否使用驼峰命名
|
camelCase: true, // Models 文件中代码是否使用驼峰命名
|
||||
modalNameSuffix: false, // 模型名称是否带 ‘Model’ 后缀
|
modalNameSuffix: false, // 模型名称是否带 ‘Model’ 后缀
|
||||
fileNameCamelCase: false, // Model 文件名是否使用驼峰法命名,默认文件名会使用表名,如 `user_post.js`;如果为 true,则文件名为 `userPost.js`
|
fileNameCamelCase: false, // Model 文件名是否使用驼峰法命名,默认文件名会使用表名,如 `user_post.js`;如果为 true,则文件名为 `userPost.js`
|
||||
dir: './app/lib/models', // 指定输出 models 文件的目录
|
dir: './app/lib/models', // 指定输出 models 文件的目录
|
||||
typesDir: 'models', // 指定输出 TypeScript 类型定义的文件目录,只有 TypeScript / Midway 等会有类型定义
|
typesDir: 'models', // 指定输出 TypeScript 类型定义的文件目录,只有 TypeScript / Midway 等会有类型定义
|
||||
emptyDir: true, // !!! 谨慎操作 生成 models 之前是否清空 `dir` 以及 `typesDir`
|
emptyDir: false, // !!! 谨慎操作 生成 models 之前是否清空 `dir` 以及 `typesDir`
|
||||
tables: null, // 指定生成哪些表的 models,如 ['user', 'user_post'];如果为 null,则忽略改属性
|
tables: ['secret_yingshi'], // 指定生成哪些表的 models,如 ['user', 'user_post'];如果为 null,则忽略改属性
|
||||
skipTables: [], // 指定跳过哪些表的 models,如 ['user'];如果为 null,则忽略改属性
|
skipTables: [], // 指定跳过哪些表的 models,如 ['user'];如果为 null,则忽略改属性
|
||||
tsNoCheck: false, // 是否添加 `@ts-nocheck` 注释到 models 文件中
|
tsNoCheck: false, // 是否添加 `@ts-nocheck` 注释到 models 文件中
|
||||
ignorePrefix: [], // 生成的模型名称忽略的前缀,因为 项目中有以下表名是以 t_ 开头的,在实际模型中不需要, 可以添加多个 [ 't_data_', 't_',] ,长度较长的 前缀放前面
|
ignorePrefix: [], // 生成的模型名称忽略的前缀,因为 项目中有以下表名是以 t_ 开头的,在实际模型中不需要, 可以添加多个 [ 't_data_', 't_',] ,长度较长的 前缀放前面
|
||||
attrLength: false, // 在生成模型的字段中 是否生成 如 var(128)这种格式,公司一般使用 String ,则配置为 false
|
attrLength: false, // 在生成模型的字段中 是否生成 如 var(128)这种格式,公司一般使用 String ,则配置为 false
|
||||
}, |
}, |
||||
} |
} |
Loading…
Reference in new issue