
    Xj                     ~    d dl Z d dlmZ d dlmZ d dlmZ d dlmZ d dl	m
Z
mZ  e
e          Z G d d          ZdS )	    N)Session)AppException)Role)UserRole)
get_loggerlog_executionc                   @   e Zd Zeededededz  dededefd                        Z	ee	 	 	 dded	ededz  dedz  d
edz  defd                        Z
eeded	ededefd                        Zedededee         fd            Zeded	ededz  fd            ZdS )RoleServicedbnamedescriptionN	tenant_id
created_byreturnc                     d| dt          j                    j        d d          }t          |||d||          }|                     |           |                                  |                     |           |S )Ntenant__role_   F)coder   r   	is_systemr   r   )uuiduuid4hexr   addcommitrefresh)r   r   r   r   r   r   roles          H/lsinfo/ai/hellotax_ai/base_platform/app/services/access/role_service.pycreate_custom_rolezRoleService.create_custom_role   s    
 A@@$*,,*:2A2*>@@#!
 
 
 	t
		


4    role_id
updated_byc                 z   |                      t                                        t          j        |k                                              }|st          dd          |j        rt          dd          |r||_        |||_        |r||_	        | 
                                 |                     |           |S )N   角色不存在Role not foundu   系统角色不可修改zSystem roles cannot be modified)queryr   filteridfirstr   r   r   r   r"   r   r   )r   r!   r   r   r"   r   s         r   update_rolezRoleService.update_role"   s     xx~~$$TW%788>>@@ 	D02BCCC> 	^9;\]]] 	DI"*D 	)(DO
		


4r    c                 f   |                      t                                        t          j        |k                                              }|st          dd          |j        rt          dd          |                      t                                        t          j        |k    t          j	                   
                                }|dk    rt          d| dd| d	          dd
lm} |                      |                              |j        |k    |j	                   
                                }|dk    rC|                      |                              |j        |k                                               ddlm} |                      |                              |j        |k    |j	                   
                                }|dk    rC|                      |                              |j        |k                                               ddlm}	  |	            }
|
                    dd|j         t)          |                     |
                    dd|j         t)          |                     |                     |           |                                  dS )Nr$   r%   u   系统角色不可删除zSystem roles cannot be deletedr   u   角色正在被 u    个用户使用，无法删除zRole is assigned to z users and cannot be deleted)RolePermission)RoleMenu)get_enforcerzrole:   T)r&   r   r'   r(   r)   r   r   r   r!   
is_deletedcountapp.models.role_permissionr,   deleteapp.models.role_menur-   app.core.permissionsr.   remove_filtered_policyr   strremove_filtered_grouping_policyr   )r   r!   r   r   
user_countr,   
perm_countr-   
menu_countr.   enforcers              r   delete_rolezRoleService.delete_role:   s    xx~~$$TW%788>>@@ 	D02BCCC> 	]9;[\\\HHXVH$/X5H1HIIUWW 	
 >>N:NNNOzOOO   	>===== HH^$$VN*g5>;T7TUUUWW 	
 >>HH^$$++N,Bg,MNNUUWWW111111 HHXVH$/X5H1HIIUWW 	
 >>HHX%%h&6'&ABBIIKKK555555<>>''+>49+>+>IOOO004GDI4G4GYXXX
		$
		tr    c                     |                      t                                        t          j        t          j        |k    z                                t          j                                                   }|S N)r&   r   r'   r   r   r0   all)r   r   roless      r   list_tenant_roleszRoleService.list_tenant_rolesg   sS     HHTNNVT^)(CDEEV'((SUU	 	 r    c                     |                      t                                        t          j        |k    t          j                                                   S r?   )r&   r   r'   r(   r0   r)   )r   r!   s     r   get_role_by_idzRoleService.get_role_by_idq   s:    xx~~$$TW%7T_9LMMSSUUUr    )NNN)__name__
__module____qualname__staticmethodr   r   r7   intr   r   r*   boolr=   listrB   rD    r    r   r
   r
      s       -04ZDGUX	   ] \"   "&!%  Dj 4Z	
 $J 
   ] \, ) )# )# )$ ) ) ) ] \)V g # $t*    \ V7 VS VTD[ V V V \V V Vr    r
   )r   sqlalchemy.ormr   app.core.exceptionsr   app.models.roler   app.models.user_roler   common_loggingr   r   rE   loggerr
   rL   r    r   <module>rS      s     " " " " " " , , , , , ,             ) ) ) ) ) ) 4 4 4 4 4 4 4 4	H		fV fV fV fV fV fV fV fV fV fVr    