import { message } from 'antd'; import _, { compact, isEmpty } from 'lodash'; import { request } from 'umi'; import { traverseNodes } from './util'; // 用户删除策略 export async function relationUserPolicyRemove(params) { return request(`/goapi/relation/user_policy/delete`, { method: 'POST', data: params, }); } // 用户删除功能 export async function relationUserFeatureRemove(params) { return request(`/goapi/relation/user_feature/delete`, { method: 'POST', data: params, }); } // 用户删除功能 export async function relationUserCityRemove(params) { return request(`/goapi/relation/user_city/delete`, { method: 'POST', data: params, }); } // 用户删除属性 export async function relationUserOptionRemove(params) { return request(`/goapi/relation/user_option/delete`, { method: 'POST', data: params, }); } export async function detailList( params: { appId?: number; userId?: number; id?: string; }, sort?: Record, filter?: Record, ) { const { appId, ...otherParams } = params; const formatedFilter = {}; if (filter) { _.forEach(_.keys(_.omitBy(filter, _.isNull)), (item) => { formatedFilter[`${item}s`] = _.map(filter[item], (subItem) => parseInt(subItem, 10)); }); } const { data: { featureTree, flagList, policyList, roleList, userCityList, featureCityIds }, } = await request('/goapi/app/myPermission/detail', { method: 'POST', data: { appId: appId, ..._.omitBy(_.omitBy(otherParams, _.isNull), (val) => val === ''), }, headers: { 'Content-Type': 'application/json', }, }); if (flagList?.length > 0) { flagList.map((opt: any) => { opt.id = opt?.Id; opt.children = opt.optionTree; }); } // 使用 Promise 处理异步操作 const optionIds: any = traverseNodes(flagList); const featureIds: any = traverseNodes(featureTree); return { data: { featureTree: featureTree ?? [], optionList: flagList ?? [], policyList: policyList ?? [], roleList: roleList ?? [], userCityList: userCityList ?? [], optionIds: [...optionIds], featureIds: [...featureIds], featureCityIds, }, success: true, }; } // 用户删除角色 export async function relationUserRoleRemove(params) { return request(`/goapi/relation/user_role/delete`, { method: 'POST', data: params, }); } export const requestBatchUnbind = (tempParams, currentUser, appId, formatMessage) => { // 批量移除 if (isEmpty(tempParams)) { return; } const obj: any = {}; const temp = { appId: Number(appId), userId: Number(currentUser?.id) }; Object.keys(tempParams)?.forEach((item) => { if (item === 'featureTree' && tempParams[item]?.length > 0) { obj.feature = tempParams[item].map((id) => { return { ...temp, featureId: Number(id) }; }); } if (item === 'optionList' && tempParams[item]?.length > 0) { obj.option = tempParams[item].map((id) => { return { ...temp, optionId: Number(id) }; }); } if (item === 'roleList' && tempParams[item]?.length > 0) { obj.role = tempParams[item].map((id) => { return { ...temp, roleId: Number(id) }; }); } if (item === 'policyList' && tempParams[item]?.length > 0) { obj.policy = tempParams[item].map((id) => { return { ...temp, policyId: Number(id) }; }); } if (item === 'userCityList' && tempParams[item]?.length > 0) { obj.city = tempParams[item].map((id) => { return { ...temp, cityId: Number(id) }; }); } }); try { const requestArray = [ obj.option?.length ? relationUserOptionRemove({ data: obj.option }) : null, obj.role?.length ? relationUserRoleRemove({ data: obj.role }) : null, obj.policy?.length ? relationUserPolicyRemove({ data: obj.policy }) : null, obj.feature?.length ? relationUserFeatureRemove({ data: obj.feature }) : null, obj.city?.length ? relationUserCityRemove({ data: obj.city }) : null, ]; const allSettledPromise = Promise.allSettled(compact(requestArray)).then((res) => { if (res.every((sta) => sta.status === 'fulfilled')) { message.success(formatMessage({ id: 'pages.sucess' })); } }); return allSettledPromise; } catch { return false; } };