chore: src/modules/base/service/sys/param.ts
This commit is contained in:
@@ -0,0 +1,110 @@
|
||||
import { InjectClient, Provide } from '@midwayjs/core';
|
||||
import { BaseService, CoolCommException } from '@cool-midway/core';
|
||||
import { InjectEntityModel } from '@midwayjs/typeorm';
|
||||
import { Not, Repository } from 'typeorm';
|
||||
import { BaseSysParamEntity } from '../../entity/sys/param';
|
||||
import { CachingFactory, MidwayCache } from '@midwayjs/cache-manager';
|
||||
|
||||
/**
|
||||
* 参数配置
|
||||
*/
|
||||
@Provide()
|
||||
export class BaseSysParamService extends BaseService {
|
||||
@InjectEntityModel(BaseSysParamEntity)
|
||||
baseSysParamEntity: Repository<BaseSysParamEntity>;
|
||||
|
||||
@InjectClient(CachingFactory, 'default')
|
||||
midwayCache: MidwayCache;
|
||||
|
||||
/**
|
||||
* 根据key获得对应的参数
|
||||
* @param key
|
||||
*/
|
||||
async dataByKey(key) {
|
||||
let result: any = await this.midwayCache.get(`param:${key}`);
|
||||
if (!result) {
|
||||
result = await this.baseSysParamEntity.findOneBy({ keyName: key });
|
||||
this.midwayCache.set(`param:${key}`, result);
|
||||
}
|
||||
if (result) {
|
||||
if (result.dataType == 0) {
|
||||
try {
|
||||
return JSON.parse(result.data);
|
||||
} catch (error) {
|
||||
return result.data;
|
||||
}
|
||||
}
|
||||
if (result.dataType == 1) {
|
||||
return result.data;
|
||||
}
|
||||
if (result.dataType == 2) {
|
||||
return result.data.split(',');
|
||||
}
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
/**
|
||||
* 信息
|
||||
* @param id
|
||||
* @param infoIgnoreProperty
|
||||
* @returns
|
||||
*/
|
||||
async info(id: any, infoIgnoreProperty?: string[]): Promise<any> {
|
||||
const info = await super.info(id, infoIgnoreProperty);
|
||||
try {
|
||||
info.data = JSON.parse(info.data.replace(/{/g, '[').replace(/}/g, ']'));
|
||||
} catch (error) {
|
||||
info.data = info.data;
|
||||
}
|
||||
return info;
|
||||
}
|
||||
|
||||
/**
|
||||
* 根据key获得对应的网页数据
|
||||
* @param key
|
||||
*/
|
||||
async htmlByKey(key) {
|
||||
let html = '<html><title>@title</title><body>@content</body></html>';
|
||||
let result: any = await this.midwayCache.get(`param:${key}`);
|
||||
if (result) {
|
||||
html = html
|
||||
.replace('@content', result.data)
|
||||
.replace('@title', result.name);
|
||||
} else {
|
||||
html = html.replace('@content', 'key notfound');
|
||||
}
|
||||
return html;
|
||||
}
|
||||
|
||||
/**
|
||||
* 添加或者修改
|
||||
* @param param
|
||||
*/
|
||||
async addOrUpdate(param: any, type): Promise<void> {
|
||||
if (type == 2) {
|
||||
param.data = JSON.stringify(param.data.replace());
|
||||
}
|
||||
const find = {
|
||||
keyName: param.keyName,
|
||||
};
|
||||
if (param.id) {
|
||||
find['id'] = Not(param.id);
|
||||
}
|
||||
const check = await this.baseSysParamEntity.findOneBy(find);
|
||||
if (check) {
|
||||
throw new CoolCommException('存在相同的keyName');
|
||||
}
|
||||
await super.addOrUpdate(param, type);
|
||||
}
|
||||
|
||||
/**
|
||||
* 重新初始化缓存
|
||||
*/
|
||||
async modifyAfter() {
|
||||
const params = await this.baseSysParamEntity.find();
|
||||
for (const param of params) {
|
||||
await this.midwayCache.set(`param:${param.keyName}`, param);
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user