'use strict'; const moment = require('moment') const fs = require('fs'); async function get(ctx) { try { const { models } = ctx.fs.dc; let userRoleList = await models.UserRole.findAndCountAll({ order: [['id', 'desc']] }); ctx.status = 200 ctx.body = userRoleList; } catch (error) { ctx.fs.logger.error(`path:${ctx.path},error:${error}`) ctx.status = 400; ctx.body = { name: 'FindError', message: '查询用户信息失败' } } } async function add(ctx) { try { const { models } = ctx.fs.dc; const { userId, roleId } = ctx.request.body await models.UserRole.destroy({ where: { roleId: roleId } }) let storageData = userId.map(e => { return { roleId: roleId, userId: e } }) await models.UserRole.bulkCreate(storageData); ctx.status = 204; } catch (error) { ctx.fs.logger.error(`path: ${ctx.path}, error: ${error}`); ctx.status = 400; ctx.body = { message: typeof error == 'string' ? error : undefined } } } async function edit(ctx) { try { const { models } = ctx.fs.dc; // const { pepUserId, provinces, cities, businessLines } = ctx.request.body const { id, name } = ctx.request.body const role = await models.Role.findOne({ where: { id } }) if (!role) { throw '当前角色不存在' } let storageData = { name } await models.Role.update(storageData, { where: { id } }) ctx.status = 204; } catch (error) { ctx.fs.logger.error(`path: ${ctx.path}, error: ${error}`); ctx.status = 400; ctx.body = { message: typeof error == 'string' ? error : undefined } } } async function del(ctx) { try { const { models } = ctx.fs.dc; const { id } = ctx.request.body await models.SalesDistribution.update({ delete: false }, { where: { id } }) ctx.status = 204; } catch (error) { ctx.fs.logger.error(`path: ${ctx.path}, error: ${error}`); ctx.status = 400; ctx.body = { message: typeof error == 'string' ? error : undefined } } } async function getUserResources(ctx) { try { const { adminHr } = ctx.fs.api.userInfo; const { models } = ctx.fs.dc; const { userId } = ctx.params; let codes = []; //人资管理员-所有权限 if (adminHr.some(admin => admin.id == userId)) { const resource = await models.Resource.findAll({ attributes: ['code'], order: [['id', 'asc']] }) codes = resource.map(r => r.code); } else { const userResources = await models.RoleResource.findAll({ attributes: ['id', 'resId'], include: [{ required: true, model: models.Role, attributes: [], include: [{ model: models.UserRole, attributes: [], where: { userId: userId } }], }, { required: true, model: models.Resource, attributes: ['id', 'name', 'code'], }], order: [['id', 'asc']] }); let rslt = []; userResources && userResources.map(ur => { if (!rslt.some(r => r.id === ur.resId)) { rslt.push(ur.resource); codes.push(ur.resource.code); } }) } ctx.status = 200; ctx.body = codes; } catch (error) { ctx.fs.logger.error(`path:${ctx.path},error:${error}`) ctx.status = 400; ctx.body = { name: 'FindError', message: '获取用户角色资源失败' } } } module.exports = { get, add, edit, del, getUserResources }