Commit 1e2908b8 authored by ml's avatar ml

修改

parent d321f554
...@@ -1069,9 +1069,9 @@ ...@@ -1069,9 +1069,9 @@
} }
}, },
"node_modules/@madex/ex-ts-dao": { "node_modules/@madex/ex-ts-dao": {
"version": "0.0.27", "version": "0.0.28",
"resolved": "https://packages.aliyun.com/646341b481b284e28f47a25b/npm/npm-registry/@madex/ex-ts-dao/-/@madex/ex-ts-dao-0.0.27.tgz", "resolved": "https://packages.aliyun.com/646341b481b284e28f47a25b/npm/npm-registry/@madex/ex-ts-dao/-/@madex/ex-ts-dao-0.0.28.tgz",
"integrity": "sha512-+wt6GSr/Gs+KBjNL1U7xsSUaYGhWNiPhIAjXvlb/Klmx7lzf/95MDbKmD2+bC1ydbTknsiG1XyNE/0Iu/tDS4Q==", "integrity": "sha512-DWAieApyLqFuKYxpMjHhQbodx9qKqbBOaaSEuhhfD/lZrjFDQ81M5tpl7nbFApIantQ361d+E7TpWJC/oUdAcg==",
"license": "ISC", "license": "ISC",
"dependencies": { "dependencies": {
"@madex/ex-js-public": "git+ssh://git@bitbucket.org/biiigle/ex-js-public.git#master", "@madex/ex-js-public": "git+ssh://git@bitbucket.org/biiigle/ex-js-public.git#master",
...@@ -1617,9 +1617,9 @@ ...@@ -1617,9 +1617,9 @@
} }
}, },
"node_modules/@types/node": { "node_modules/@types/node": {
"version": "20.16.4", "version": "20.16.5",
"resolved": "https://packages.aliyun.com/646341b481b284e28f47a25b/npm/npm-registry/@types/node/-/node-20.16.4.tgz", "resolved": "https://packages.aliyun.com/646341b481b284e28f47a25b/npm/npm-registry/@types/node/-/node-20.16.5.tgz",
"integrity": "sha512-ioyQ1zK9aGEomJ45zz8S8IdzElyxhvP1RVWnPrXDf6wFaUb+kk1tEcVVJkF7RPGM0VWI7cp5U57oCPIn5iN1qg==", "integrity": "sha512-VwYCweNo3ERajwy0IUlqqcyZ8/A7Zwa9ZP3MnENWcB11AejO+tLy3pu850goUW2FC/IJMdZUfKpX/yxL1gymCA==",
"license": "MIT", "license": "MIT",
"dependencies": { "dependencies": {
"undici-types": "~6.19.2" "undici-types": "~6.19.2"
...@@ -4456,9 +4456,9 @@ ...@@ -4456,9 +4456,9 @@
} }
}, },
"node_modules/electron-to-chromium": { "node_modules/electron-to-chromium": {
"version": "1.5.13", "version": "1.5.14",
"resolved": "https://packages.aliyun.com/646341b481b284e28f47a25b/npm/npm-registry/electron-to-chromium/-/electron-to-chromium-1.5.13.tgz", "resolved": "https://packages.aliyun.com/646341b481b284e28f47a25b/npm/npm-registry/electron-to-chromium/-/electron-to-chromium-1.5.14.tgz",
"integrity": "sha512-lbBcvtIJ4J6sS4tb5TLp1b4LyfCdMkwStzXPyAgVgTRAsep4bvrAGaBOP7ZJtQMNJpSQ9SqG4brWOroNaQtm7Q==", "integrity": "sha512-bEfPECb3fJ15eaDnu9LEJ2vPGD6W1vt7vZleSVyFhYuMIKm3vz/g9lt7IvEzgdwj58RjbPKUF2rXTCN/UW47tQ==",
"dev": true, "dev": true,
"license": "ISC" "license": "ISC"
}, },
......
...@@ -11,7 +11,7 @@ import { isLimitUserId } from "../../../utils/mUserCommonUtils"; ...@@ -11,7 +11,7 @@ import { isLimitUserId } from "../../../utils/mUserCommonUtils";
let isIp = require('is-ip'); let isIp = require('is-ip');
/** /**
* Madex 用户列表 * Madex 用户列表/kyc用户列表
* @param req * @param req
* @param infoVO * @param infoVO
*/ */
...@@ -20,7 +20,13 @@ export const userList = async (req: any, queryVO: QueryVO) => { ...@@ -20,7 +20,13 @@ export const userList = async (req: any, queryVO: QueryVO) => {
try { try {
queryVO.page = Optional.opt(queryVO, 'page', 1); queryVO.page = Optional.opt(queryVO, 'page', 1);
queryVO.size = Optional.opt(queryVO, 'size', 20); queryVO.size = Optional.opt(queryVO, 'size', 20);
let res = await mUserManageService.userList(queryVO); let condition = String(queryVO.condition);
//查询类型 1:uid/姓名/邮箱/证件号 2:充币/提币地址
let condition_type = 1;
if (condition && condition.length >= 32) {
condition_type = 2;
}
let res = await mUserManageService.userList(Number(queryVO.page), Number(queryVO.size), condition, condition_type);
return Res3Utils.result(res); return Res3Utils.result(res);
} }
catch (e) { catch (e) {
......
...@@ -20,11 +20,8 @@ export const kycList = async (req: any, queryVO: QueryVO) => { ...@@ -20,11 +20,8 @@ export const kycList = async (req: any, queryVO: QueryVO) => {
try { try {
queryVO.page = Optional.opt(queryVO, 'page', 1); queryVO.page = Optional.opt(queryVO, 'page', 1);
queryVO.size = Optional.opt(queryVO, 'size', 20); queryVO.size = Optional.opt(queryVO, 'size', 20);
let currentUserId = await getCurrentUserId(req.cookies.session_id);
let dbInfo = await getOneAclUserByUid(currentUserId);
let isAdmin = dbInfo.user_type == AclUserInfoConst.USER_TYPE.ADMIN
let res = await mUserRealNameService.kycList(queryVO, isAdmin); let res = await mUserRealNameService.kycList(queryVO);
return Res3Utils.result(res); return Res3Utils.result(res);
} }
catch (e) { catch (e) {
......
...@@ -224,7 +224,34 @@ export const getUserList = async function (aclDepartmentPageVO: AclDepartmentPag ...@@ -224,7 +224,34 @@ export const getUserList = async function (aclDepartmentPageVO: AclDepartmentPag
let account = aclDepartmentPageVO.account; let account = aclDepartmentPageVO.account;
let dIds = aclDepartmentPageVO.dIds; let dIds = aclDepartmentPageVO.dIds;
let pageData: any; let pageData: any;
if (account) { //部门 和 account 都作为查询条件时 先查用户
if (dIds && account) {
let userList = await getAclUserData(account);
//没有直接返回
if (!userList.length) {
pageData = {
count: 0,
rows: []
}
return pageData;
}
let uids: number[] = [];
let userMap = {}
for (let item of userList) {
userMap[item.user_id] = item;
uids.push(item.user_id);
}
//有则分页查询部门用户
pageData = await getDpUserPageData(dIds, page, size, []);
for (let oneItem of pageData.rows) {
oneItem.account = userMap[oneItem.user_id] ? userMap[oneItem.user_id].account : "";
oneItem.phone = userMap[oneItem.user_id] ? userMap[oneItem.user_id].phone : "";
oneItem.email = userMap[oneItem.user_id] ? userMap[oneItem.user_id].email : "";
oneItem.user_status = userMap[oneItem.user_id] ? userMap[oneItem.user_id].user_status : "";
oneItem.remark = userMap[oneItem.user_id] ? userMap[oneItem.user_id].remark : "";
}
}
else if (account) {
pageData = await getAclUserPageData(account, page, size); pageData = await getAclUserPageData(account, page, size);
if (pageData.rows && pageData.rows.length) { if (pageData.rows && pageData.rows.length) {
let uids = pageData.rows.map(item => item.user_id); let uids = pageData.rows.map(item => item.user_id);
...@@ -246,17 +273,17 @@ export const getUserList = async function (aclDepartmentPageVO: AclDepartmentPag ...@@ -246,17 +273,17 @@ export const getUserList = async function (aclDepartmentPageVO: AclDepartmentPag
} }
} }
else { else {
pageData = await getDpUserPageData(dIds, page, size); pageData = await getDpUserPageData(dIds, page, size, []);
if (pageData.rows && pageData.rows.length) { if (pageData.rows && pageData.rows.length) {
let uids = pageData.rows.map(item => item.user_id); let uids = pageData.rows.map(item => item.user_id);
let udpList = await aclUserInfo.prototype.findAll({ let userInfoList = await aclUserInfo.prototype.findAll({
where: { where: {
user_id: { [madAdminOrmDB.Op.in]: uids } user_id: { [madAdminOrmDB.Op.in]: uids }
}, },
raw: true raw: true
}); });
let userMap = {} let userMap = {}
for (let item of udpList) { for (let item of userInfoList) {
userMap[item.user_id] = item; userMap[item.user_id] = item;
} }
for (let oneItem of pageData.rows) { for (let oneItem of pageData.rows) {
...@@ -264,6 +291,7 @@ export const getUserList = async function (aclDepartmentPageVO: AclDepartmentPag ...@@ -264,6 +291,7 @@ export const getUserList = async function (aclDepartmentPageVO: AclDepartmentPag
oneItem.phone = userMap[oneItem.user_id] ? userMap[oneItem.user_id].phone : ""; oneItem.phone = userMap[oneItem.user_id] ? userMap[oneItem.user_id].phone : "";
oneItem.email = userMap[oneItem.user_id] ? userMap[oneItem.user_id].email : ""; oneItem.email = userMap[oneItem.user_id] ? userMap[oneItem.user_id].email : "";
oneItem.user_status = userMap[oneItem.user_id] ? userMap[oneItem.user_id].user_status : ""; oneItem.user_status = userMap[oneItem.user_id] ? userMap[oneItem.user_id].user_status : "";
oneItem.remark = userMap[oneItem.user_id] ? userMap[oneItem.user_id].remark : "";
} }
} }
...@@ -271,11 +299,14 @@ export const getUserList = async function (aclDepartmentPageVO: AclDepartmentPag ...@@ -271,11 +299,14 @@ export const getUserList = async function (aclDepartmentPageVO: AclDepartmentPag
return pageData; return pageData;
} }
async function getDpUserPageData(dIds: string, page: number, size: number) { async function getDpUserPageData(dIds: string, page: number, size: number, uids: number[]) {
let where = {}; let where = {};
if (dIds) { if (dIds) {
where['department_id'] = dIds; where['department_id'] = dIds;
} }
if (uids.length) {
where['user_id'] = { [madAdminOrmDB.Op.in]: uids }
}
let resList = await aclUserDepartmentPosition.prototype.findAndCount({ let resList = await aclUserDepartmentPosition.prototype.findAndCount({
where: where, where: where,
limit: size, limit: size,
...@@ -306,7 +337,7 @@ async function getAclUserPageData(account: string, page: number, size: number) { ...@@ -306,7 +337,7 @@ async function getAclUserPageData(account: string, page: number, size: number) {
} }
} }
let resList = await aclUserInfo.prototype.findAndCount({ let resList = await aclUserInfo.prototype.findAndCount({
attributes: ['user_id', 'account', 'phone', 'email', 'user_status'], attributes: ['user_id', 'account', 'phone', 'email', 'user_status', 'remark'],
where: where, where: where,
limit: size, limit: size,
offset: (page - 1) * size, offset: (page - 1) * size,
...@@ -335,7 +366,7 @@ async function getAllUserDepartmentPositionMap() { ...@@ -335,7 +366,7 @@ async function getAllUserDepartmentPositionMap() {
}); });
let userMap = {}; let userMap = {};
for (let item of userList) { for (let item of userList) {
userMap[item.user_id] = item.account; userMap[item.user_id] = item.remark;
} }
for (let item of udpList) { for (let item of udpList) {
...@@ -356,6 +387,35 @@ async function getAllUserDepartmentPositionMap() { ...@@ -356,6 +387,35 @@ async function getAllUserDepartmentPositionMap() {
} }
async function getAclUserData(account: string) {
let where: {};
if (!isNaN(Number(account))) {
where = {
[madAdminOrmDB.Op.or]: {
user_id: Number(account),
account: { [madAdminOrmDB.Op.like]: `${account}%` },
email: { [madAdminOrmDB.Op.like]: `${account}%` },
}
}
}
else {
where = {
[madAdminOrmDB.Op.or]: {
account: { [madAdminOrmDB.Op.like]: `${account}%` },
email: { [madAdminOrmDB.Op.like]: `${account}%` },
}
}
}
let resList = await aclUserInfo.prototype.findAll({
attributes: ['user_id', 'account', 'phone', 'email', 'user_status', 'remark'],
where: where,
order: [["user_id", "asc"]],
raw: true
});
return resList;
}
......
...@@ -320,43 +320,6 @@ export async function updateUserStatus(userId: any, userStatus: number) { ...@@ -320,43 +320,6 @@ export async function updateUserStatus(userId: any, userStatus: number) {
} }
} }
export async function findAllForPage(page: number, size: number, userId?: number,
typeArr?: any, statusArr?: any,
fromTime?: any, toTime?: any, remark?: any) {
try {
let where = Object.create(null);
if (userId) {
where.user_id = userId
}
if (typeArr) {
where.user_type = { [madAdminOrmDB.Op.in]: typeArr };
}
if (statusArr) {
where.user_status = { [madAdminOrmDB.Op.in]: statusArr };
}
if (fromTime && toTime) {
where.createdAt = { [madAdminOrmDB.Op.between]: [fromTime, toTime] };
}
if (remark) {
where.remark = { [madAdminOrmDB.Op.like]: `${remark}%` };
}
let resList = await aclUserInfo.prototype.findAndCount({
where: where,
limit: size,
offset: (page - 1) * size,
order: [["user_id", "asc"]],
raw: true
});
return resList;
}
catch (e) {
logger.error('aclUserService.findAllForPage.error:' + e)
throw e;
}
}
async function dealReturnData(rows: any) { async function dealReturnData(rows: any) {
if (!rows.length) { if (!rows.length) {
return return
......
import { ormDB, coinAddress } from "@madex/ex-ts-dao";
import { ErrorCode } from "../../../constant/errorCode";
export const getCoinAddressMapByUids = async function (uids: number[]){
if (!uids.length){
throw ErrorCode.PARAM_MISS;
}
let dbInfoList = await coinAddress.prototype.findAll({
where: {
user_id: { [ormDB.Op.in]: uids }
},
raw: true
});
let resMap = {};
for (let item of dbInfoList) {
resMap[item.user_id] = item
}
return resMap;
}
import { ormDB, coinWithdraw, } from "@madex/ex-ts-dao";
import { ErrorCode } from "../../../constant/errorCode";
export const getCoinWithdrawMapByUids = async function (uids: number[]) {
if (!uids.length) {
throw ErrorCode.PARAM_MISS;
}
let dbInfoList = await coinWithdraw.prototype.findAll({
where: {
user_id: { [ormDB.Op.in]: uids }
},
raw: true
});
let resMap = {};
for (let item of dbInfoList) {
resMap[item.user_id] = item
}
return resMap;
}
\ No newline at end of file
...@@ -31,6 +31,16 @@ export interface QueryVO { ...@@ -31,6 +31,16 @@ export interface QueryVO {
audit_deny?: string, audit_deny?: string,
comment?: string comment?: string
type?: number//证件类型 1身份证,2护照,3驾驶证
source?: number// 认证来源 1 web 2 app
auditor?: number//审核人员id
from_time?: Date | any
to_time?: Date | any
} }
export async function getRealNameByUserId(user_id: number | any) { export async function getRealNameByUserId(user_id: number | any) {
...@@ -43,7 +53,7 @@ export async function getRealNameByUserId(user_id: number | any) { ...@@ -43,7 +53,7 @@ export async function getRealNameByUserId(user_id: number | any) {
return dbInfo ? dbInfo : null return dbInfo ? dbInfo : null
} }
export async function getRealNameByUserIds(userIds: number[]) { export async function getRealNameMapByUserIds(userIds: number[]) {
let dbInfoList = await userRealName.prototype.findAll({ let dbInfoList = await userRealName.prototype.findAll({
where: { where: {
...@@ -59,22 +69,17 @@ export async function getRealNameByUserIds(userIds: number[]) { ...@@ -59,22 +69,17 @@ export async function getRealNameByUserIds(userIds: number[]) {
} }
export async function kycList(queryVO: QueryVO, isAdmin: boolean) { export async function kycList(queryVO: QueryVO) {
let where = {} let where = {}
if (isAdmin) { if (queryVO.user_id) {
if (queryVO.user_id) { //uid 是否在受限范围内
where["user_id"] = queryVO.user_id if (isLimitUserId(queryVO.user_id)) {
throw ErrorCode.UID_LIMIT
} }
where["user_id"] = queryVO.user_id;
} }
else { else {
if (queryVO.user_id) { if (UID_MIN && UID_LIMIT.length) {
//uid 是否在受限范围内
if (isLimitUserId(queryVO.user_id)) {
throw ErrorCode.UID_LIMIT
}
where["user_id"] = queryVO.user_id
}
else {
where[ormDB.Op.and] = [{ where[ormDB.Op.and] = [{
user_id: { [ormDB.Op.gte]: UID_MIN } user_id: { [ormDB.Op.gte]: UID_MIN }
}, },
...@@ -82,16 +87,44 @@ export async function kycList(queryVO: QueryVO, isAdmin: boolean) { ...@@ -82,16 +87,44 @@ export async function kycList(queryVO: QueryVO, isAdmin: boolean) {
user_id: { [ormDB.Op.notIn]: UID_LIMIT }, user_id: { [ormDB.Op.notIn]: UID_LIMIT },
}] }]
} }
else {
where["user_id"] = { [ormDB.Op.gte]: UID_MIN }
}
} }
if (!isNaN(Number(queryVO.status))) { if (!isNaN(Number(queryVO.status))) {
where["status"] = queryVO.status where["status"] = queryVO.status
} }
if (queryVO.source) {
//来源
if (queryVO.source == 1) {
where["delta"] = ""
}
else {
where[ormDB.Op.and] = [{
delta: { [ormDB.Op.not]: null }
},
{
delta: { [ormDB.Op.ne]: "" },
}]
}
}
if (queryVO.type) {
where["type"] = queryVO.type
}
if (queryVO.auditor) {
where["auditor"] = queryVO.auditor
}
if (queryVO.from_time && queryVO.to_time) {
where['updatedAt'] = { [ormDB.Op.between]: [queryVO.from_time, queryVO.to_time] }
}
let resList = await userRealName.prototype.findAndCount({ let resList = await userRealName.prototype.findAndCount({
attributes: ['id', 'user_id', 'status', 'createdAt'], attributes: ['id', 'user_id', 'status', 'createdAt'],
where: where, where: where,
limit: queryVO.size, limit: queryVO.size,
offset: (Number(queryVO.page) - 1) * Number(queryVO.size), offset: (Number(queryVO.page) - 1) * Number(queryVO.size),
order: [["id", "desc"]], order: [["updatedAt", "desc"]],
raw: true raw: true
}); });
......
...@@ -32,8 +32,6 @@ export interface AuthConfigVO { ...@@ -32,8 +32,6 @@ export interface AuthConfigVO {
updatedAt?: Date | any; updatedAt?: Date | any;
user_type?: number | any;
totp_code?: any totp_code?: any
} }
......
...@@ -24,51 +24,7 @@ export const getCurrentUserId = async function (sessionId: string) { ...@@ -24,51 +24,7 @@ export const getCurrentUserId = async function (sessionId: string) {
return currentUser.userId; return currentUser.userId;
} }
/**
* 判断是否是管理员 通过 UID
* @param user_id
*/
export const isAdminUserByUid = async function (user_id: number) {
let dbInfo = await getOneAclUserByUid(user_id);
if (dbInfo.user_type != AclUserInfoConst.USER_TYPE.ADMIN) {
throw ErrorCode.NO_PERMISSION
}
}
/**
* 判断是否是超管 通过 UID
* @param user_id
*/
export const isSuperAdminUserByUid = async function (user_id: number) {
let dbInfo = await getOneAclUserByUid(user_id);
if (dbInfo.user_type != AclUserInfoConst.USER_TYPE.SUPER_ADMIN) {
throw ErrorCode.NO_PERMISSION
}
}
/**
* 判断是否是管理员 通过 session_id
* @param sessionId
*/
export const isAdminUserBySessionId = async function (sessionId: string) {
let currentUserId = await getCurrentUserId(sessionId);
let dbInfo = await getOneAclUserByUid(currentUserId);
if (dbInfo.user_type != AclUserInfoConst.USER_TYPE.ADMIN) {
throw ErrorCode.NO_PERMISSION
}
}
/**
* 判断是否是超管 通过 session_id
* @param sessionId
*/
export const isSuperAdminUserBySessionId = async function (sessionId: string) {
let currentUserId = await getCurrentUserId(sessionId);
let dbInfo = await getOneAclUserByUid(currentUserId);
if (dbInfo.user_type != AclUserInfoConst.USER_TYPE.SUPER_ADMIN) {
throw ErrorCode.NO_PERMISSION
}
}
/** /**
* 通过 user_id 查询用户 * 通过 user_id 查询用户
* @param user_id * @param user_id
......
import { userInfo } from "@madex/ex-ts-dao"; import { ormDB, userInfo } from "@madex/ex-ts-dao";
import { requestUtils, logger } from "@madex/ex-js-public"; import { requestUtils, logger } from "@madex/ex-js-public";
import { config } from "@madex/ex-js-common"; import { config } from "@madex/ex-js-common";
import { ErrorCode } from "../constant/errorCode"; import { ErrorCode } from "../constant/errorCode";
...@@ -58,4 +58,22 @@ export const updateMUserInfo = async function (user_id: number, updateInfo: any) ...@@ -58,4 +58,22 @@ export const updateMUserInfo = async function (user_id: number, updateInfo: any)
user_id: user_id user_id: user_id
} }
}); });
}
export async function getUserInfoMapByUids(uids: number[]) {
if (!uids.length) {
throw ErrorCode.PARAM_MISS;
}
let dbInfoList = await userInfo.prototype.findAll({
where: {
user_id: { [ormDB.Op.in]: uids }
},
raw: true
});
let resMap = {};
for (let item of dbInfoList) {
resMap[item.user_id] = item
}
return resMap;
} }
\ No newline at end of file
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