Commit 1e2908b8 authored by ml's avatar ml

修改

parent d321f554
......@@ -1069,9 +1069,9 @@
}
},
"node_modules/@madex/ex-ts-dao": {
"version": "0.0.27",
"resolved": "https://packages.aliyun.com/646341b481b284e28f47a25b/npm/npm-registry/@madex/ex-ts-dao/-/@madex/ex-ts-dao-0.0.27.tgz",
"integrity": "sha512-+wt6GSr/Gs+KBjNL1U7xsSUaYGhWNiPhIAjXvlb/Klmx7lzf/95MDbKmD2+bC1ydbTknsiG1XyNE/0Iu/tDS4Q==",
"version": "0.0.28",
"resolved": "https://packages.aliyun.com/646341b481b284e28f47a25b/npm/npm-registry/@madex/ex-ts-dao/-/@madex/ex-ts-dao-0.0.28.tgz",
"integrity": "sha512-DWAieApyLqFuKYxpMjHhQbodx9qKqbBOaaSEuhhfD/lZrjFDQ81M5tpl7nbFApIantQ361d+E7TpWJC/oUdAcg==",
"license": "ISC",
"dependencies": {
"@madex/ex-js-public": "git+ssh://git@bitbucket.org/biiigle/ex-js-public.git#master",
......@@ -1617,9 +1617,9 @@
}
},
"node_modules/@types/node": {
"version": "20.16.4",
"resolved": "https://packages.aliyun.com/646341b481b284e28f47a25b/npm/npm-registry/@types/node/-/node-20.16.4.tgz",
"integrity": "sha512-ioyQ1zK9aGEomJ45zz8S8IdzElyxhvP1RVWnPrXDf6wFaUb+kk1tEcVVJkF7RPGM0VWI7cp5U57oCPIn5iN1qg==",
"version": "20.16.5",
"resolved": "https://packages.aliyun.com/646341b481b284e28f47a25b/npm/npm-registry/@types/node/-/node-20.16.5.tgz",
"integrity": "sha512-VwYCweNo3ERajwy0IUlqqcyZ8/A7Zwa9ZP3MnENWcB11AejO+tLy3pu850goUW2FC/IJMdZUfKpX/yxL1gymCA==",
"license": "MIT",
"dependencies": {
"undici-types": "~6.19.2"
......@@ -4456,9 +4456,9 @@
}
},
"node_modules/electron-to-chromium": {
"version": "1.5.13",
"resolved": "https://packages.aliyun.com/646341b481b284e28f47a25b/npm/npm-registry/electron-to-chromium/-/electron-to-chromium-1.5.13.tgz",
"integrity": "sha512-lbBcvtIJ4J6sS4tb5TLp1b4LyfCdMkwStzXPyAgVgTRAsep4bvrAGaBOP7ZJtQMNJpSQ9SqG4brWOroNaQtm7Q==",
"version": "1.5.14",
"resolved": "https://packages.aliyun.com/646341b481b284e28f47a25b/npm/npm-registry/electron-to-chromium/-/electron-to-chromium-1.5.14.tgz",
"integrity": "sha512-bEfPECb3fJ15eaDnu9LEJ2vPGD6W1vt7vZleSVyFhYuMIKm3vz/g9lt7IvEzgdwj58RjbPKUF2rXTCN/UW47tQ==",
"dev": true,
"license": "ISC"
},
......
......@@ -11,7 +11,7 @@ import { isLimitUserId } from "../../../utils/mUserCommonUtils";
let isIp = require('is-ip');
/**
* Madex 用户列表
* Madex 用户列表/kyc用户列表
* @param req
* @param infoVO
*/
......@@ -20,7 +20,13 @@ export const userList = async (req: any, queryVO: QueryVO) => {
try {
queryVO.page = Optional.opt(queryVO, 'page', 1);
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);
}
catch (e) {
......
......@@ -20,11 +20,8 @@ export const kycList = async (req: any, queryVO: QueryVO) => {
try {
queryVO.page = Optional.opt(queryVO, 'page', 1);
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);
}
catch (e) {
......
......@@ -224,7 +224,34 @@ export const getUserList = async function (aclDepartmentPageVO: AclDepartmentPag
let account = aclDepartmentPageVO.account;
let dIds = aclDepartmentPageVO.dIds;
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);
if (pageData.rows && pageData.rows.length) {
let uids = pageData.rows.map(item => item.user_id);
......@@ -246,17 +273,17 @@ export const getUserList = async function (aclDepartmentPageVO: AclDepartmentPag
}
}
else {
pageData = await getDpUserPageData(dIds, page, size);
pageData = await getDpUserPageData(dIds, page, size, []);
if (pageData.rows && pageData.rows.length) {
let uids = pageData.rows.map(item => item.user_id);
let udpList = await aclUserInfo.prototype.findAll({
let userInfoList = await aclUserInfo.prototype.findAll({
where: {
user_id: { [madAdminOrmDB.Op.in]: uids }
},
raw: true
});
let userMap = {}
for (let item of udpList) {
for (let item of userInfoList) {
userMap[item.user_id] = item;
}
for (let oneItem of pageData.rows) {
......@@ -264,6 +291,7 @@ export const getUserList = async function (aclDepartmentPageVO: AclDepartmentPag
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 : "";
}
}
......@@ -271,11 +299,14 @@ export const getUserList = async function (aclDepartmentPageVO: AclDepartmentPag
return pageData;
}
async function getDpUserPageData(dIds: string, page: number, size: number) {
async function getDpUserPageData(dIds: string, page: number, size: number, uids: number[]) {
let where = {};
if (dIds) {
where['department_id'] = dIds;
}
if (uids.length) {
where['user_id'] = { [madAdminOrmDB.Op.in]: uids }
}
let resList = await aclUserDepartmentPosition.prototype.findAndCount({
where: where,
limit: size,
......@@ -306,7 +337,7 @@ async function getAclUserPageData(account: string, page: number, size: number) {
}
}
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,
limit: size,
offset: (page - 1) * size,
......@@ -335,7 +366,7 @@ async function getAllUserDepartmentPositionMap() {
});
let userMap = {};
for (let item of userList) {
userMap[item.user_id] = item.account;
userMap[item.user_id] = item.remark;
}
for (let item of udpList) {
......@@ -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) {
}
}
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) {
if (!rows.length) {
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 {
audit_deny?: 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) {
......@@ -43,7 +53,7 @@ export async function getRealNameByUserId(user_id: number | any) {
return dbInfo ? dbInfo : null
}
export async function getRealNameByUserIds(userIds: number[]) {
export async function getRealNameMapByUserIds(userIds: number[]) {
let dbInfoList = await userRealName.prototype.findAll({
where: {
......@@ -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 = {}
if (isAdmin) {
if (queryVO.user_id) {
where["user_id"] = queryVO.user_id
}
}
else {
if (queryVO.user_id) {
//uid 是否在受限范围内
if (isLimitUserId(queryVO.user_id)) {
throw ErrorCode.UID_LIMIT
}
where["user_id"] = queryVO.user_id
where["user_id"] = queryVO.user_id;
}
else {
if (UID_MIN && UID_LIMIT.length) {
where[ormDB.Op.and] = [{
user_id: { [ormDB.Op.gte]: UID_MIN }
},
......@@ -82,16 +87,44 @@ export async function kycList(queryVO: QueryVO, isAdmin: boolean) {
user_id: { [ormDB.Op.notIn]: UID_LIMIT },
}]
}
else {
where["user_id"] = { [ormDB.Op.gte]: UID_MIN }
}
}
if (!isNaN(Number(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({
attributes: ['id', 'user_id', 'status', 'createdAt'],
where: where,
limit: queryVO.size,
offset: (Number(queryVO.page) - 1) * Number(queryVO.size),
order: [["id", "desc"]],
order: [["updatedAt", "desc"]],
raw: true
});
......
......@@ -32,8 +32,6 @@ export interface AuthConfigVO {
updatedAt?: Date | any;
user_type?: number | any;
totp_code?: any
}
......
......@@ -24,51 +24,7 @@ export const getCurrentUserId = async function (sessionId: string) {
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 查询用户
* @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 { config } from "@madex/ex-js-common";
import { ErrorCode } from "../constant/errorCode";
......@@ -59,3 +59,21 @@ export const updateMUserInfo = async function (user_id: number, updateInfo: any)
}
});
}
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