import request from '@/utils/request'

// 数字债权角色权限API服务 - 集成RuoYi权限体系

/**
 * 获取角色权限列表 - 调用RuoYi系统接口
 * @param {Object} query - 查询参数
 * @returns {Promise} API响应
 */
export function getRoleList(query) {
  return request({
    url: '/dev-api/system/role/list',
    method: 'get',
    params: query
  })
}

/**
 * 获取指定角色的菜单权限树 - 调用RuoYi系统接口
 * @param {string} roleId - 角色ID
 * @returns {Promise} API响应
 */
export function getRoleMenuTreeselect(roleId) {
  return request({
    url: `/dev-api/system/menu/roleMenuTreeselect/${roleId}`,
    method: 'get'
  })
}

/**
 * 获取当前用户的数字债权业务权限
 * @returns {Promise} API响应
 */
export function getDigitalCreditPermissions() {
  return request({
    url: '/api/digitalCredit/permissions/current',
    method: 'get'
  })
}

/**
 * 验证用户是否有指定功能的权限
 * @param {string} permission - 权限标识
 * @returns {Promise} API响应
 */
export function checkPermission(permission) {
  return request({
    url: '/api/digitalCredit/permissions/check',
    method: 'post',
    data: { permission }
  })
}

/**
 * 获取数字债权业务角色映射关系
 * @returns {Promise} API响应
 */
export function getDigitalCreditRoleMapping() {
  return request({
    url: '/api/digitalCredit/role-mapping',
    method: 'get'
  })
}

/**
 * 根据业务角色获取数据范围权限
 * @param {string} businessRole - 业务角色 (security_company, client_company, financial_institution, etc.)
 * @returns {Promise} API响应
 */
export function getDataScopeByRole(businessRole) {
  return request({
    url: `/api/digitalCredit/data-scope/${businessRole}`,
    method: 'get'
  })
}

/**
 * 获取用户的业务角色信息
 * @param {string} userId - 用户ID（可选，不传则获取当前用户）
 * @returns {Promise} API响应
 */
export function getUserBusinessRole(userId) {
  const url = userId 
    ? `/api/digitalCredit/user-role/${userId}`
    : '/api/digitalCredit/user-role/current'
  
  return request({
    url: url,
    method: 'get'
  })
}

/**
 * 获取角色对应的功能模块权限
 * @param {string} roleId - 角色ID
 * @returns {Promise} API响应
 */
export function getRoleModulePermissions(roleId) {
  return request({
    url: `/api/digitalCredit/role-modules/${roleId}`,
    method: 'get'
  })
}

/**
 * 获取角色对应的操作权限
 * @param {string} roleId - 角色ID
 * @returns {Promise} API响应
 */
export function getRoleActionPermissions(roleId) {
  return request({
    url: `/api/digitalCredit/role-actions/${roleId}`,
    method: 'get'
  })
}

/**
 * 刷新用户权限缓存
 * @param {string} userId - 用户ID（可选）
 * @returns {Promise} API响应
 */
export function refreshUserPermissions(userId) {
  return request({
    url: '/api/digitalCredit/permissions/refresh',
    method: 'post',
    data: { userId }
  })
}

// 数字债权业务角色常量
export const DIGITAL_CREDIT_ROLES = {
  SECURITY_COMPANY: 'security_company',
  CLIENT_COMPANY: 'client_company', 
  FINANCIAL_INSTITUTION: 'financial_institution',
  ADMINISTRATOR: 'administrator',
  PLATFORM_OPERATOR: 'platform_operator'
}

// 数据范围权限常量
export const DATA_SCOPE = {
  ALL: 'all',                    // 全部数据
  OWN_COMPANY: 'own_company',    // 本公司数据
  RELATED_CONTRACTS: 'related_contracts', // 相关合同数据
  FINANCING_RELATED: 'financing_related', // 融资相关数据
  PLATFORM_LEVEL: 'platform_level'       // 平台级数据
}

// 功能模块权限常量
export const MODULE_PERMISSIONS = {
  CONTRACT: 'contract',
  CONTRACT_VIEW: 'contract_view',
  CREDIT: 'credit',
  FINANCING: 'financing',
  PAYMENT: 'payment',
  PAYMENT_VIEW: 'payment_view',
  PAYMENT_MANAGE: 'payment_manage',
  BLOCKCHAIN: 'blockchain',
  REPORTS: 'reports',
  REPORT_VIEW: 'report_view',
  REPORT_ANALYTICS: 'report_analytics',
  SECURITY: 'security',
  NOTIFICATION: 'notification'
}

// 操作权限常量
export const ACTION_PERMISSIONS = {
  // 合同相关
  CONTRACT_CREATE: 'contract_create',
  CONTRACT_EDIT: 'contract_edit',
  CONTRACT_DELETE: 'contract_delete',
  CONTRACT_CONFIRM: 'contract_confirm',
  
  // 债权相关
  CREDIT_GENERATE: 'credit_generate',
  CREDIT_TRANSFER: 'credit_transfer',
  CREDIT_VALIDATE: 'credit_validate',
  
  // 融资相关
  FINANCING_APPLY: 'financing_apply',
  FINANCING_APPROVE: 'financing_approve',
  RISK_ASSESS: 'risk_assess',
  
  // 支付相关
  PAYMENT_PROCESS: 'payment_process',
  FUND_DISTRIBUTE: 'fund_distribute',
  
  // 报表相关
  REPORT_GENERATE: 'report_generate',
  REPORT_EXPORT: 'report_export',
  
  // 区块链相关
  BLOCKCHAIN_MANAGE: 'blockchain_manage',
  DATA_STORE: 'data_store',
  
  // 通知相关
  MESSAGE_SEND: 'message_send',
  TEMPLATE_MANAGE: 'template_manage'
}