Commit 67bfdb79 authored by ml's avatar ml

逻辑调整、新增接口

parent b85ea206
This diff is collapsed.
/**
* 设备类型
*/
export const DEVICE = {
IOS: 3,
ANDROID: 4,
MAC: 5,
WINDOWS_64: 6,
WINDOWS_32: 7,
ANDROID_BACKUP: 8,
ANDROID_BOX_PRO: 9,
ANDROID_HUAWEI: 10,
}
export const DEVICE_ARR = [DEVICE.IOS, DEVICE.ANDROID, DEVICE.MAC, DEVICE.WINDOWS_32, DEVICE.WINDOWS_64,
DEVICE.ANDROID_BACKUP, DEVICE.ANDROID_BOX_PRO, DEVICE.ANDROID_HUAWEI,]
export const STATUS = {
/**
* 更新状态: 不更新。
*/
UPDATE_NO: 0,
/**
* 更新状态: 可选择更新。
*/
STATUS_UPDATE_CHOOSE: 1,
/**
* 更新状态: 强制更新。
*/
STATUS_UPDATE_FORCE: 2,
}
export const STATUS_ARR = [STATUS.UPDATE_NO, STATUS.STATUS_UPDATE_CHOOSE, STATUS.STATUS_UPDATE_FORCE]
export const PLATFORM = {
/**
* 发布平台: 官网。
*/
WEB: 1,
/**
* 发布平台: APP STORE。
*/
STORE: 2,
/**
* 发布平台: testFlight
*/
TEST_FLIGHT: 3,
/**
* 发布平台: 华为商店
*/
HUAWEI_STORE: 4,
}
export const PLATFORM_ARR = [PLATFORM.WEB, PLATFORM.STORE, PLATFORM.TEST_FLIGHT, PLATFORM.HUAWEI_STORE]
\ No newline at end of file
...@@ -10,4 +10,9 @@ ...@@ -10,4 +10,9 @@
export const RedisVal = { export const RedisVal = {
loginErrTimesKey: (userId: any) => `${userId}${RedisValInner.LOGIN_ERROR_TIMES_SUFFIX}`, loginErrTimesKey: (userId: any) => `${userId}${RedisValInner.LOGIN_ERROR_TIMES_SUFFIX}`,
sessionListKey: (userId: any) => `${userId}${RedisValInner.SESSION_ID_LIST_SUFFIX}`, sessionListKey: (userId: any) => `${userId}${RedisValInner.SESSION_ID_LIST_SUFFIX}`,
} }
\ No newline at end of file
/**
* App审核管理
*/
export const APP_VERSION_KEY = "app:apply:version:"; // 防止之后会有android
\ No newline at end of file
...@@ -143,7 +143,6 @@ async function updatePreCheck(aclUserInfoVO: AclUserInfoVO) { ...@@ -143,7 +143,6 @@ async function updatePreCheck(aclUserInfoVO: AclUserInfoVO) {
ApiAssert.notNull(ErrorCode.PARAM_MISS, aclUserInfoVO.position_id); ApiAssert.notNull(ErrorCode.PARAM_MISS, aclUserInfoVO.position_id);
ApiAssert.notNull(ErrorCode.PARAM_MISS, aclUserInfoVO.role_ids); ApiAssert.notNull(ErrorCode.PARAM_MISS, aclUserInfoVO.role_ids);
ApiAssert.notNull(ErrorCode.PARAM_MISS, aclUserInfoVO.totp_encrypt); ApiAssert.notNull(ErrorCode.PARAM_MISS, aclUserInfoVO.totp_encrypt);
ApiAssert.notNull(ErrorCode.PARAM_MISS, aclUserInfoVO.pwd);
if (aclUserInfoVO.pwd && (aclUserInfoVO.pwd.length < 8 || aclUserInfoVO.pwd.length > 30)) { if (aclUserInfoVO.pwd && (aclUserInfoVO.pwd.length < 8 || aclUserInfoVO.pwd.length > 30)) {
throw ErrorCode.PWD_ILLEGAL; throw ErrorCode.PWD_ILLEGAL;
} }
......
import { AppVersionPageVO } from "../service/appVersion.service";
let { logger, Res3Utils, optionalUtils: Optional, apiAssertUtils: ApiAssert, datetimeUtils } = require('@madex/ex-js-public');
import { ErrorCode } from "../../../constant/errorCode";
import { getCurrentUserId } from "../../../utils/aclUserUtils";
import { APP_VERSION_KEY } from "../../../constant/redis-val";
import { addOptLog } from "../service/userOptLog.service";
let { authCommon: AuthCommon, redisUtilsCommon: RedisClient, } = require('@madex/ex-js-common');
let isIp = require('is-ip');
/**
* app审核管理列表
* @param req
* @param infoVO
*/
export const list = async (req: any, pageVO: AppVersionPageVO) => {
let func_name = "appApplyVersion.control.list";
try {
let key = APP_VERSION_KEY + 'ios';
let data = await RedisClient.getSync(key);
let res = {
ios: data
}
return Res3Utils.result(res);
}
catch (e) {
logger.error(`${func_name} error:${e}`);
return Res3Utils.getErrorResult(e);
}
};
/**
* 修改
* @param req
* @param authConfigVO
*/
export const modify = async (req: any, pageVO: AppVersionPageVO) => {
let func_name = "appApplyVersion.control.update";
try {
let ip = isIp(req.ip) ? req.ip : '*.*.*.*';
let currentUserId = await getCurrentUserId(req.cookies.session_id);
if (!pageVO.type || !pageVO.version) {
throw ErrorCode.PARAM_MISS
}
if (!['ios', 'android'].includes(String(pageVO.type))) {
throw ErrorCode.PARAM_MISS;
}
let key = APP_VERSION_KEY + pageVO.type;
await RedisClient.writeSync(key, pageVO.version);
//管理后台操作日志
addOptLog(currentUserId, 0, 'App审核管理修改', ip, `key:${key},value:${pageVO.version}`, 'App审核管理');
return Res3Utils.result('ok');
}
catch (e) {
logger.error(`${func_name} error:${e}`);
return Res3Utils.getErrorResult(e);
}
};
import * as appVersionService from "../service/appVersion.service";
import { AppVersionVO, AppVersionPageVO } from "../service/appVersion.service";
let { logger, Res3Utils, optionalUtils: Optional, apiAssertUtils: ApiAssert, datetimeUtils } = require('@madex/ex-js-public');
import { ErrorCode } from "../../../constant/errorCode";
import { getCurrentUserId } from "../../../utils/aclUserUtils";
import { DEVICE_ARR, PLATFORM_ARR, STATUS_ARR } from "../../../constant/appVersionConstant";
let isIp = require('is-ip');
/**
* app版本列表
* @param req
* @param infoVO
*/
export const list = async (req: any, pageVO: AppVersionPageVO) => {
let func_name = "appVersion.control.list";
try {
pageVO.page = Optional.opt(pageVO, 'page', 1);
pageVO.size = Optional.opt(pageVO, 'size', 20);
let res = await appVersionService.list(pageVO);
return Res3Utils.result(res);
}
catch (e) {
logger.error(`${func_name} error:${e}`);
return Res3Utils.getErrorResult(e);
}
};
/**
* 添加新的App版本
* @param req
* @param authConfigVO
*/
export const add = async (req: any, appVersionVO: AppVersionVO) => {
let func_name = "appVersion.control.add";
try {
let ip = isIp(req.ip) ? req.ip : '*.*.*.*';
let currentUserId = await getCurrentUserId(req.cookies.session_id);
await paramValid(appVersionVO);
let res = await appVersionService.add(appVersionVO, currentUserId, ip);
return Res3Utils.result(res);
}
catch (e) {
logger.error(`${func_name} error:${e}`);
return Res3Utils.getErrorResult(e);
}
};
/**
* 修改用户App版本
* @param req
* @param authConfigVO
*/
export const update = async (req: any, appVersionVO: AppVersionVO) => {
let func_name = "appVersion.control.update";
try {
let ip = isIp(req.ip) ? req.ip : '*.*.*.*';
let currentUserId = await getCurrentUserId(req.cookies.session_id);
if (!appVersionVO.id) {
throw ErrorCode.PARAM_MISS
}
await paramValid(appVersionVO);
let res = await appVersionService.update(appVersionVO, currentUserId, ip);
return Res3Utils.result(res);
}
catch (e) {
logger.error(`${func_name} error:${e}`);
return Res3Utils.getErrorResult(e);
}
};
async function paramValid(appVersionVO: AppVersionVO) {
if (!appVersionVO.version || !appVersionVO.version_url || !appVersionVO.download_url) {
throw ErrorCode.PARAM_MISS
}
if (!DEVICE_ARR.includes(Number(appVersionVO.device_type)) || !STATUS_ARR.includes(Number(appVersionVO.status))
|| !PLATFORM_ARR.includes(Number(appVersionVO.platform))) {
throw ErrorCode.PARAM_MISS
}
if (!appVersionVO.grayscale_value || appVersionVO.grayscale_value < 0) {
appVersionVO.grayscale_value = 0
}
else {
if (appVersionVO.grayscale_value > 100) {
appVersionVO.grayscale_value = 10
}
}
}
...@@ -121,6 +121,23 @@ export const submit = async (req: any, commonUserFeeVO: CommonUserFeeVO) => { ...@@ -121,6 +121,23 @@ export const submit = async (req: any, commonUserFeeVO: CommonUserFeeVO) => {
} }
}; };
/**
* 用户等级费率列表
* @param req
* @param infoVO
*/
export const vipLevelList = async (req: any, pageVO: CommonUserFeePageVO) => {
let func_name = "commonUserFeeSetting.control.vipLevelList";
try {
let res = await commonUserFeeSettingService.vipLevelList();
return Res3Utils.result(res);
}
catch (e) {
logger.error(`${func_name} error:${e}`);
return Res3Utils.getErrorResult(e);
}
};
async function addParamValid(commonUserFeeVO: CommonUserFeeVO) { async function addParamValid(commonUserFeeVO: CommonUserFeeVO) {
let userId = commonUserFeeVO.user_id; let userId = commonUserFeeVO.user_id;
......
...@@ -54,3 +54,16 @@ export const pushToCoreSystem = async (req: any, id: any) => { ...@@ -54,3 +54,16 @@ export const pushToCoreSystem = async (req: any, id: any) => {
return Res3Utils.getErrorResult(e); return Res3Utils.getErrorResult(e);
} }
}; };
export const getAllSubmitSuccess = async (req: any, param: ListParam) => {
let func_name = "spotPairCtl.getAllSubmitSuccess";
let cmd = req.path;
try {
let res = await service.getAllSubmitSuccess();
return Res3Utils.result(res);
}
catch (e) {
logger.error(`${func_name} error:${e}`);
return Res3Utils.getErrorResult(e);
}
};
...@@ -215,7 +215,7 @@ export const update = async (aclUserInfoVO: AclUserInfoVO, session_id: any) => { ...@@ -215,7 +215,7 @@ export const update = async (aclUserInfoVO: AclUserInfoVO, session_id: any) => {
if (aclUserInfoVO.allow_ips != dbInfo.allow_ips) { if (aclUserInfoVO.allow_ips != dbInfo.allow_ips) {
updateInfo['allow_ips'] = aclUserInfoVO.allow_ips updateInfo['allow_ips'] = aclUserInfoVO.allow_ips
} }
if (aclUserInfoVO.pwd != dbInfo.pwd) { if ( aclUserInfoVO.pwd && aclUserInfoVO.pwd != dbInfo.pwd) {
let encrypted = await AuthCommon.getPasswordEncrypt(aclUserInfoVO.pwd, dbInfo.pwd_salt); let encrypted = await AuthCommon.getPasswordEncrypt(aclUserInfoVO.pwd, dbInfo.pwd_salt);
updateInfo['pwd'] = encrypted; updateInfo['pwd'] = encrypted;
updateInfo['pwd_status'] = 1; updateInfo['pwd_status'] = 1;
......
import { ormDB, appVersion, } from "@madex/ex-ts-dao";
import { ErrorCode } from "../../../constant/errorCode";
import { addOptLog } from "./userOptLog.service";
let _ = require('lodash');
let { logger } = require('@madex/ex-js-public');
export interface AppVersionVO {
id?: number;
version?: string | any;
status?: number;
device_type?: number;
version_url?: string;
download_url?: string;
comment?: string;
comment_en?: string;
platform?: number,
grayscale_value?: number,
createdAt?: Date | any,
updatedAt?: Date | any,
}
export interface AppVersionPageVO extends AppVersionVO {
page?: number,
size?: number,
type?: string,
}
export async function list(pageVO: AppVersionPageVO) {
let where = {};
if (pageVO.version) {
where['version'] = pageVO.version
}
if (pageVO.status || pageVO.status === 0) {
where['status'] = pageVO.status
}
if (pageVO.device_type) {
where['device_type'] = pageVO.device_type
}
let resList = await appVersion.prototype.findAndCount({
where: where,
limit: pageVO.size,
offset: (Number(pageVO.page) - 1) * Number(pageVO.size),
order: [["createdAt", "desc"]],
raw: true
});
return resList;
}
export async function add(appVersionVO: AppVersionVO, currentUserId: any, ip: string | undefined) {
let dbInfo = await appVersion.prototype.findOne({
where: {
device_type: appVersionVO.device_type,
version: appVersionVO.version,
platform: appVersionVO.platform,
},
raw: true
});
if (dbInfo) {
throw ErrorCode.DATA_EXIST;
}
appVersionVO.createdAt = new Date();
appVersionVO.updatedAt = new Date();
await appVersion.prototype.create(appVersionVO);
//管理后台操作日志
addOptLog(currentUserId, 0, '新增App版本', ip, JSON.stringify(appVersionVO), 'App版本管理');
}
export async function update(appVersionVO: AppVersionVO, currentUserId: any, ip: string | undefined) {
let exist = await appVersion.prototype.findOne({
where: {
id: appVersionVO.id
},
raw: true
});
if (!exist) {
throw ErrorCode.DATA_NOT_EXIST
}
let dbInfo = await appVersion.prototype.findOne({
where: {
device_type: appVersionVO.device_type,
version: appVersionVO.version,
platform: appVersionVO.platform,
},
raw: true
});
if (dbInfo && dbInfo.id != appVersionVO.id) {
throw ErrorCode.DATA_EXIST;
}
appVersionVO.updatedAt = new Date();
await appVersion.prototype.update(appVersionVO, {
where: {
id: Number(appVersionVO.id)
}
})
//管理后台操作日志
addOptLog(currentUserId, 0, '修改App版本', ip, JSON.stringify(appVersionVO), 'App版本管理');
}
import { ormDB, usefulLink, commonUserFeeSetting, feeRateContractLog, feeRateBaseCoinContractLog, feeRateSpotLog } from "@madex/ex-ts-dao"; import { ormDB, usefulLink, commonUserFeeSetting, feeRateContractLog, feeRateBaseCoinContractLog, feeRateSpotLog, vipLevelFeeSetting } from "@madex/ex-ts-dao";
import { ErrorCode } from "../../../constant/errorCode"; import { ErrorCode } from "../../../constant/errorCode";
import { addOptLog } from "./userOptLog.service"; import { addOptLog } from "./userOptLog.service";
import { COMMENT_USER_FEE_SUBMIT, FEE_STATUS, FEE_TYPE } from "../../../constant/marketMakerConst"; import { COMMENT_USER_FEE_SUBMIT, FEE_STATUS, FEE_TYPE } from "../../../constant/marketMakerConst";
...@@ -401,6 +401,14 @@ export async function submit(id: number, currentUserId: any, ip: string | undefi ...@@ -401,6 +401,14 @@ export async function submit(id: number, currentUserId: any, ip: string | undefi
} }
export async function vipLevelList() {
let resList = await vipLevelFeeSetting.prototype.findAll({
order: [['id', 'desc']],
raw: true
});
return resList;
}
function dealData(commonUserFeeVO: CommonUserFeeVO) { function dealData(commonUserFeeVO: CommonUserFeeVO) {
......
...@@ -89,3 +89,15 @@ export const pushToCoreSystem = async (id: any) => { ...@@ -89,3 +89,15 @@ export const pushToCoreSystem = async (id: any) => {
return 'ok'; return 'ok';
}; };
export async function getAllSubmitSuccess() {
let resList = await spotPairs.prototype.findAll({
where: {
status: 2
},
order: [["id", "desc"]],
raw: true
});
return resList;
}
...@@ -25,10 +25,13 @@ import * as mUserRealNameCtrl from "../../mvc/control/mUserRealName.control"; ...@@ -25,10 +25,13 @@ import * as mUserRealNameCtrl from "../../mvc/control/mUserRealName.control";
import * as usefulLinkCtrl from "../../mvc/control/usefulLink.control"; import * as usefulLinkCtrl from "../../mvc/control/usefulLink.control";
import * as mUserSubscribeCtrl from "../../mvc/control/mUserSubscribe.control"; import * as mUserSubscribeCtrl from "../../mvc/control/mUserSubscribe.control";
import * as commonUserFeeSettingCtrl from "../../mvc/control/commonUserFeeSetting.control"; import * as commonUserFeeSettingCtrl from "../../mvc/control/commonUserFeeSetting.control";
import * as mUserAssetsCtrl from "../../mvc/control/mUserAssets.control"; import * as mUserAssetsCtrl from "../../mvc/control/mUserAssets.control";
import * as departmentCtrl from "../../mvc/control/aclDepartment.control"; import * as departmentCtrl from "../../mvc/control/aclDepartment.control";
import * as positionCtrl from "../../mvc/control/aclPosition.control"; import * as positionCtrl from "../../mvc/control/aclPosition.control";
import * as orderPendingAndHistoryCtrl from "../../mvc/control/mUserOrderPendingAndHistory.control"; import * as orderPendingAndHistoryCtrl from "../../mvc/control/mUserOrderPendingAndHistory.control";
import * as appVersionCtrl from "../../mvc/control/appVersion.control";
import * as appApplyVersionCtrl from "../../mvc/control/appApplyVersion.control";
const getFunc = { const getFunc = {
'user/info': userController.getUserInfo, 'user/info': userController.getUserInfo,
}; };
...@@ -45,6 +48,7 @@ const postFunc = { ...@@ -45,6 +48,7 @@ const postFunc = {
'spotPair/add': spotPairCtrl.save, 'spotPair/add': spotPairCtrl.save,
'spotPair/list': spotPairCtrl.list, 'spotPair/list': spotPairCtrl.list,
'spotPair/spotPairCtl': spotPairCtrl.pushToCoreSystem, 'spotPair/spotPairCtl': spotPairCtrl.pushToCoreSystem,
'spotPair/getAllSubmitSuccess': spotPairCtrl.getAllSubmitSuccess,
'coinType/add': coinTypeCtrl.save, 'coinType/add': coinTypeCtrl.save,
'coinType/list': coinTypeCtrl.list, 'coinType/list': coinTypeCtrl.list,
...@@ -55,14 +59,14 @@ const postFunc = { ...@@ -55,14 +59,14 @@ const postFunc = {
'user/getInfoByUserId': userOptCtrl.getInfoByUserId, 'user/getInfoByUserId': userOptCtrl.getInfoByUserId,
'user/getInfoDetailByUserId': userOptCtrl.getInfoDetailByUserId, 'user/getInfoDetailByUserId': userOptCtrl.getInfoDetailByUserId,
//权限管理 - 组织结构 //权限管理 - 组织结构
'department/pageList':departmentCtrl.pageList, 'department/pageList': departmentCtrl.pageList,
'department/allList':departmentCtrl.allList, 'department/allList': departmentCtrl.allList,
'department/getDepartmentTree':departmentCtrl.getDepartmentTree, 'department/getDepartmentTree': departmentCtrl.getDepartmentTree,
'department/add':departmentCtrl.add, 'department/add': departmentCtrl.add,
'department/update':departmentCtrl.update, 'department/update': departmentCtrl.update,
'department/del':departmentCtrl.del, 'department/del': departmentCtrl.del,
'department/userList/dpIdsOrAccount':departmentCtrl.getUserList, 'department/userList/dpIdsOrAccount': departmentCtrl.getUserList,
'position/allList':positionCtrl.allList, 'position/allList': positionCtrl.allList,
//权限管理 - 后台角色管理 //权限管理 - 后台角色管理
'acl/role/list': aclRoleAuthCtrl.roleList, 'acl/role/list': aclRoleAuthCtrl.roleList,
...@@ -146,6 +150,15 @@ const postFunc = { ...@@ -146,6 +150,15 @@ const postFunc = {
'mUser/fee/setting/update': commonUserFeeSettingCtrl.update,//修改普通用户手续费 'mUser/fee/setting/update': commonUserFeeSettingCtrl.update,//修改普通用户手续费
'mUser/fee/setting/delete': commonUserFeeSettingCtrl.del,//删除普通用户手续费 'mUser/fee/setting/delete': commonUserFeeSettingCtrl.del,//删除普通用户手续费
'mUser/fee/setting/submit': commonUserFeeSettingCtrl.submit,//提交普通用户手续费 'mUser/fee/setting/submit': commonUserFeeSettingCtrl.submit,//提交普通用户手续费
'mUser/fee/vip/level/list': commonUserFeeSettingCtrl.vipLevelList,//用户等级费率列表
//技术部-App版本管理
'tech/app/version/list': appVersionCtrl.list,
'tech/app/version/add': appVersionCtrl.add,
'tech/app/version/update': appVersionCtrl.update,
//技术部-App审核管理
'tech/app/apply/version/list': appApplyVersionCtrl.list,
'tech/app/apply/version/modify': appApplyVersionCtrl.modify,
}; };
......
...@@ -19,6 +19,7 @@ let cmdWhiteList = { ...@@ -19,6 +19,7 @@ let cmdWhiteList = {
'spotPair/add': 1, 'spotPair/add': 1,
'spotPair/list': 1, 'spotPair/list': 1,
'spotPair/spotPairCtl': 1, 'spotPair/spotPairCtl': 1,
'spotPair/getAllSubmitSuccess': 1,
'coinType/add': 1, 'coinType/add': 1,
'coinType/list': 1, 'coinType/list': 1,
...@@ -112,6 +113,14 @@ let cmdWhiteList = { ...@@ -112,6 +113,14 @@ let cmdWhiteList = {
'mUser/fee/setting/update': 1, 'mUser/fee/setting/update': 1,
'mUser/fee/setting/delete': 1, 'mUser/fee/setting/delete': 1,
'mUser/fee/setting/submit': 1, 'mUser/fee/setting/submit': 1,
'mUser/fee/vip/level/list': 1,
//技术部-App版本管理
'tech/app/version/list': 1,
'tech/app/version/add': 1,
'tech/app/version/update': 1,
//技术部-App审核管理
'tech/app/apply/version/list': 1,
'tech/app/apply/version/modify': 1,
}; };
......
...@@ -14,6 +14,8 @@ const ExcludeApi = { ...@@ -14,6 +14,8 @@ const ExcludeApi = {
"user/login": 1, "user/login": 1,
"user/logout": 1, "user/logout": 1,
"user/login/confirm": 1, "user/login/confirm": 1,
"mUser/fee/vip/level/list": 1,
"spotPair/getAllSubmitSuccess": 1,
}; };
//管理员需要强制绑定,该位置做特殊处理 //管理员需要强制绑定,该位置做特殊处理
const AdminExcludeApi = { const AdminExcludeApi = {
......
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