Commit 8593e6dc authored by ml's avatar ml

国际化新接口

parent aacb2918
...@@ -27,7 +27,7 @@ export const list = async (req: any, infoPageVO: I18nInfoPageVO) => { ...@@ -27,7 +27,7 @@ export const list = async (req: any, infoPageVO: I18nInfoPageVO) => {
} }
}; };
/** /**
* 添加国际化信息 * 添加国际化信息-发布版本
* @param req * @param req
* @param infoVO * @param infoVO
*/ */
...@@ -35,7 +35,6 @@ export const add = async (req: any, infoVO: I18nInfoVO) => { ...@@ -35,7 +35,6 @@ export const add = async (req: any, infoVO: I18nInfoVO) => {
let func_name = "i18nCtrl.add"; let func_name = "i18nCtrl.add";
let cmd = req.path; let cmd = req.path;
try { try {
await preCheck(infoVO);
let ip = isIp(req.ip) ? req.ip : '*.*.*.*'; let ip = isIp(req.ip) ? req.ip : '*.*.*.*';
let currentUserId = await getCurrentUserId(req.cookies.session_id); let currentUserId = await getCurrentUserId(req.cookies.session_id);
let res = await i18nService.add(infoVO,currentUserId,ip); let res = await i18nService.add(infoVO,currentUserId,ip);
...@@ -46,19 +45,19 @@ export const add = async (req: any, infoVO: I18nInfoVO) => { ...@@ -46,19 +45,19 @@ export const add = async (req: any, infoVO: I18nInfoVO) => {
return Res3Utils.getErrorResult(e); return Res3Utils.getErrorResult(e);
} }
}; };
/** /**
* 修改国际化信息 * 添加国际化信息-发布版本-预览
* @param req * @param req
* @param infoVO * @param infoVO
*/ */
export const update = async (req: any, infoVO: I18nInfoVO) => { export const preview = async (req: any, infoVO: I18nInfoVO) => {
let func_name = "i18nCtrl.update"; let func_name = "i18nCtrl.preview";
let cmd = req.path; let cmd = req.path;
try { try {
ApiAssert.notNull(ErrorCode.PARAM_MISS, infoVO.id);
let ip = isIp(req.ip) ? req.ip : '*.*.*.*'; let ip = isIp(req.ip) ? req.ip : '*.*.*.*';
let currentUserId = await getCurrentUserId(req.cookies.session_id); let currentUserId = await getCurrentUserId(req.cookies.session_id);
let res = await i18nService.update(infoVO,currentUserId,ip); let res = await i18nService.preview(infoVO,currentUserId,ip);
return Res3Utils.result(res); return Res3Utils.result(res);
} }
catch (e) { catch (e) {
...@@ -67,18 +66,15 @@ export const update = async (req: any, infoVO: I18nInfoVO) => { ...@@ -67,18 +66,15 @@ export const update = async (req: any, infoVO: I18nInfoVO) => {
} }
}; };
/** /**
* 删除国际化信息 * 国际化信息版本列表
* @param req * @param req
* @param infoVO * @param infoVO
*/ */
export const del = async (req: any, infoVO: I18nInfoVO) => { export const versionList = async (req: any, infoVO: I18nInfoVO) => {
let func_name = "i18nCtrl.del"; let func_name = "i18nCtrl.versionList";
let cmd = req.path; let cmd = req.path;
try { try {
ApiAssert.notNull(ErrorCode.PARAM_MISS, infoVO.id); let res = await i18nService.versionList();
let ip = isIp(req.ip) ? req.ip : '*.*.*.*';
let currentUserId = await getCurrentUserId(req.cookies.session_id);
let res = await i18nService.del(infoVO,currentUserId,ip);
return Res3Utils.result(res); return Res3Utils.result(res);
} }
catch (e) { catch (e) {
...@@ -88,16 +84,3 @@ export const del = async (req: any, infoVO: I18nInfoVO) => { ...@@ -88,16 +84,3 @@ export const del = async (req: any, infoVO: I18nInfoVO) => {
}; };
/**
* 校验
* @param infoVO
*/
async function preCheck(infoVO: I18nInfoVO) {
if (![1, 2, 3, 4, 5].includes(infoVO.platform)) {
throw ErrorCode.PARAM_MISS;
}
ApiAssert.notNull(ErrorCode.PARAM_MISS, infoVO.module);
ApiAssert.notNull(ErrorCode.PARAM_MISS, infoVO.code);
ApiAssert.notNull(ErrorCode.PARAM_MISS, infoVO.lang);
ApiAssert.notNull(ErrorCode.PARAM_MISS, infoVO.content);
}
\ No newline at end of file
...@@ -36,8 +36,7 @@ export const revert = async (req: any, i18nInfoLogVO: I18nInfoLogVO) => { ...@@ -36,8 +36,7 @@ export const revert = async (req: any, i18nInfoLogVO: I18nInfoLogVO) => {
try { try {
let ip = isIp(req.ip) ? req.ip : '*.*.*.*'; let ip = isIp(req.ip) ? req.ip : '*.*.*.*';
let currentUserId = await getCurrentUserId(req.cookies.session_id); let currentUserId = await getCurrentUserId(req.cookies.session_id);
ApiAssert.notNull(ErrorCode.PARAM_MISS, i18nInfoLogVO.id); ApiAssert.notNull(ErrorCode.PARAM_MISS, i18nInfoLogVO.version);
ApiAssert.notNull(ErrorCode.PARAM_MISS, i18nInfoLogVO.info_id);
let res = await i18nLogService.revert(i18nInfoLogVO,currentUserId,ip); let res = await i18nLogService.revert(i18nInfoLogVO,currentUserId,ip);
return Res3Utils.result(res); return Res3Utils.result(res);
} }
......
This diff is collapsed.
// @madex/ex-ts-dao 是 ts 的 dao, 代码在 bitbucket/ex-js-dao 的 ts 分支上 // @madex/ex-ts-dao 是 ts 的 dao, 代码在 bitbucket/ex-js-dao 的 ts 分支上
import { i18nInfo, i18nInfoLog, ormDB } from "@madex/ex-ts-dao"; import { i18nInfo, i18nInfoHistory, ormDB } from "@madex/ex-ts-dao";
import * as i18nService from "./i18n.service"; import * as i18nService from "./i18n.service";
import { I18nInfoPageVO, I18nInfoVO } from "./i18n.service"; import { getLastVersionList, I18nInfoPageVO, I18nInfoVO } from "./i18n.service";
import { ErrorCode } from "../../../constant/errorCode"; import { ErrorCode } from "../../../constant/errorCode";
import { addOptLog } from "./userOptLog.service";
import { ROBOT_KEYS, sendRobotMessage } from "../../../utils/robotUtils";
let { logger } = require('@madex/ex-js-public');
export interface I18nInfoLogVO extends I18nInfoPageVO { export interface I18nInfoLogVO extends I18nInfoPageVO {
info_id?: number; info_id?: number;
version: string;
} }
export async function list(i18nInfoLogVO: I18nInfoLogVO) { export async function list(i18nInfoLogVO: I18nInfoLogVO) {
let condition = {};
if (i18nInfoLogVO.code) { if (i18nInfoLogVO.platform) {
i18nInfoLogVO.code = { [ormDB.Op.like]: `${i18nInfoLogVO.code}%` }; condition['platform'] = Number(i18nInfoLogVO.platform);
} }
if (i18nInfoLogVO.module) {
if (i18nInfoLogVO.sub_code) { condition['module'] = Number(i18nInfoLogVO.module);
i18nInfoLogVO.sub_code = { [ormDB.Op.like]: `${i18nInfoLogVO.sub_code}%` };
} }
if (i18nInfoLogVO.desc) { if (i18nInfoLogVO.code) {
i18nInfoLogVO.desc = { [ormDB.Op.like]: `${i18nInfoLogVO.desc}%` }; condition['code'] = i18nInfoLogVO.code;
} }
if (i18nInfoLogVO.updatedAt) { if (i18nInfoLogVO.zh_cn) {
i18nInfoLogVO.updatedAt = { [ormDB.Op.gte]: new Date(i18nInfoLogVO.updatedAt).getTime() }; condition['zh_cn'] = { [ormDB.Op.like]: `${i18nInfoLogVO.zh_cn}%` };
} }
let page = Number(i18nInfoLogVO.page); let page = Number(i18nInfoLogVO.page);
let size = Number(i18nInfoLogVO.size); let size = Number(i18nInfoLogVO.size);
let where = Object.assign(i18nInfoLogVO); let resList = await i18nInfoHistory.prototype.findAndCount({
delete i18nInfoLogVO.page; where: condition,
delete i18nInfoLogVO.size;
let resList = await i18nInfoLog.prototype.findAndCount({
where: where,
limit: size, limit: size,
offset: (page - 1) * size, offset: (page - 1) * size,
order: [["updatedAt", "desc"]], order: [["id", "asc"]],
raw: true raw: true
}); });
return resList; return resList;
} }
export const add = async (infoLogVO: any, tx: any) => {
if (!infoLogVO.createdAt) {
infoLogVO.createdAt = new Date();
}
if (!infoLogVO.updatedAt) {
infoLogVO.updatedAt = new Date();
}
await i18nInfoLog.prototype.create(infoLogVO, {
transaction: tx,
});
};
export async function revert(i18nInfoLogVO: I18nInfoLogVO, currentUserId: any, ip: any) { export async function revert(i18nInfoLogVO: I18nInfoLogVO, currentUserId: any, ip: any) {
let dbOneI18nInfoLog = await i18nInfoLog.prototype.findOne({ let dbHistoryList = await i18nInfoHistory.prototype.findAll({
raw: true,
where: { where: {
id: i18nInfoLogVO.id version: i18nInfoLogVO.version
} },
}); order: [['info_id', 'asc']],
if (!dbOneI18nInfoLog) {
throw ErrorCode.DATA_NOT_EXIST;
}
let infoId = dbOneI18nInfoLog.info_id;
let dbOneI18nInfo = await i18nInfo.prototype.findOne({
raw: true, raw: true,
where: {
id: infoId
}
}); });
let itemInfo = {
platform: dbOneI18nInfoLog.platform, let insertInfoList: any = [];
module: dbOneI18nInfoLog.module, let insertHistoryList: any = [];
code: dbOneI18nInfoLog.code,
sub_code: dbOneI18nInfoLog.sub_code, for (let item of dbHistoryList) {
lang: dbOneI18nInfoLog.lang, delete item.info_id;
desc: dbOneI18nInfoLog.desc, delete item.id;
content: dbOneI18nInfoLog.content, insertInfoList.push(item);
createdAt: dbOneI18nInfoLog.createdAt,
updatedAt: dbOneI18nInfoLog.updatedAt,
} }
if (!dbOneI18nInfo) {
await i18nService.add(itemInfo, currentUserId, ip); let currentVersionList = await getLastVersionList();
let current_version = "";
for (let item of currentVersionList) {
current_version = item.version;
let info_id = item.id;
item.info_id = info_id;
item.created_at = item.updated_at;
delete item.id;
insertHistoryList.push(item)
} }
else {
delete itemInfo.createdAt; let tx;
await i18nInfo.prototype.update(itemInfo, {
where: { try {
id: infoId tx = await ormDB.transaction();
} if (insertInfoList.length) {
}); //删除历史版本
await i18nInfoHistory.prototype.destroy({
where: {
version: i18nInfoLogVO.version
},
transaction: tx
});
//删除当前版本
await i18nInfo.prototype.destroy({
where: {},
transaction: tx
});
//当前版本存入历史
await i18nInfoHistory.prototype.bulkCreate(insertHistoryList, {
transaction: tx
});
//恢复到传入的历史版本
await i18nInfo.prototype.bulkCreate(insertInfoList);
}
await tx.commit();
} }
await i18nInfoLog.prototype.destroy({ catch (e) {
where: { if (tx) {
id: Number(i18nInfoLogVO.id) await tx.rollback();
} }
}); logger.error('i18nInfo.add.error:' + e);
return 'ok'; throw e;
}
//管理后台操作日志
addOptLog(currentUserId, 0, '国际化信息版本回退', ip, `当前版本:${current_version},回退到:${i18nInfoLogVO.version}`, '国际化管理');
sendRobotMessage(ROBOT_KEYS.COMMON_KEY, `国际化信息版本回退:当前版本:${current_version},回退到:${i18nInfoLogVO.version}`);
return 'success';
} }
\ No newline at end of file
...@@ -55,12 +55,12 @@ const getFunc = { ...@@ -55,12 +55,12 @@ const getFunc = {
const postFunc = { const postFunc = {
//技术部-其他管理-国际化管理 //技术部-其他管理-国际化管理
'i18n/info/list': i18nCtrl.list, 'i18n/info/list': i18nCtrl.list,//当前版本信息列表
'i18n/info/add': i18nCtrl.add, 'i18n/info/add': i18nCtrl.add,//发布版本
'i18n/info/update': i18nCtrl.update, 'i18n/info/preview': i18nCtrl.preview,//发布版本-预览
'i18n/info/del': i18nCtrl.del, 'i18n/info/version/list': i18nCtrl.versionList,//版本列表
'i18n/info/log/list': i18nLogCtrl.list, 'i18n/info/history/list': i18nLogCtrl.list,//历史版本信息列表
'i18n/info/log/revert': i18nLogCtrl.revert, 'i18n/info/history/revert': i18nLogCtrl.revert,//版本回退
//金融部-交易管理-交易对配置 //金融部-交易管理-交易对配置
'spotPair/save': spotPairCtrl.save,//新增 'spotPair/save': spotPairCtrl.save,//新增
'spotPair/update': spotPairCtrl.update,//修改 'spotPair/update': spotPairCtrl.update,//修改
......
...@@ -12,10 +12,10 @@ let cmdWhiteList = { ...@@ -12,10 +12,10 @@ let cmdWhiteList = {
//技术部-其他管理-国际化管理 //技术部-其他管理-国际化管理
'i18n/info/list': 1, 'i18n/info/list': 1,
'i18n/info/add': 1, 'i18n/info/add': 1,
'i18n/info/update': 1, 'i18n/info/preview': 1,
'i18n/info/del': 1, 'i18n/info/version/list': 1,
'i18n/info/log/list': 1, 'i18n/info/history/list': 1,
'i18n/info/log/revert': 1, 'i18n/info/history/revert': 1,
//金融部-交易管理-交易对配置 //金融部-交易管理-交易对配置
'spotPair/save': 1, 'spotPair/save': 1,
'spotPair/update': 1, 'spotPair/update': 1,
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment