1
|
|
2
|
-- Mapping AbpUserRoles -> TL_SYS_ROLE_MAPPING
|
3
|
ALTER PROCEDURE dbo.TL_SYS_ROLE_MAPPING_Sync
|
4
|
@p_TLNAME varchar(20) = NULL,
|
5
|
@p_USER_LOGIN varchar(20) = NULL
|
6
|
AS
|
7
|
BEGIN TRANSACTION
|
8
|
|
9
|
DECLARE @USER_ID BIGINT,@ROLENAME VARCHAR(50)
|
10
|
SET @USER_ID =(SELECT ID FROM TL_USER WHERE TLNANME =@p_TLNAME)
|
11
|
|
12
|
IF((SELECT count(*) FROM AbpUserRoles aur WHERE aur.UserId =@USER_ID)=1)
|
13
|
BEGIN
|
14
|
SET @ROLENAME =(SELECT ar.DisplayName FROM (SELECT aur.RoleId FROM AbpUserRoles aur WHERE aur.UserId =@USER_ID) tmp JOIN AbpRoles ar ON tmp.RoleId =ar.Id)
|
15
|
IF(EXISTS(SELECT 1 FROM TL_USER WHERE TLNANME = @p_TLNAME AND RoleName <>@ROLENAME))
|
16
|
BEGIN
|
17
|
UPDATE TL_USER SET RoleName = @ROLENAME WHERE TLNANME = @p_TLNAME
|
18
|
IF @@Error <> 0 GOTO ABORT
|
19
|
END
|
20
|
END
|
21
|
|
22
|
|
23
|
|
24
|
DELETE TL_SYS_ROLE_MAPPING WHERE TLNAME = @p_TLNAME AND IS_MAIN = 0
|
25
|
INSERT INTO TL_SYS_ROLE_MAPPING (ROLE_OLD, ROLE_NEW, TLNAME, DEP_ID, BRANCH_ID, EFF_DATE, EXP_DATE, NOTES, AUTH_STATUS, RECORD_STATUS, MAKER_ID, CHECKER_ID, IS_MAIN)
|
26
|
SELECT A.RoleName,C.DisplayName,@p_TLNAME AS TLNAME,A.DEP_ID,A.TLSUBBRID, NULL,NULL,'' AS NOTES,'A' AS AUTH_STATUS, 1 AS RECORD_STATUS,@p_USER_LOGIN AS MAKER_ID,@p_USER_LOGIN AS CHECKER_ID,0 AS IS_MAIN
|
27
|
FROM (SELECT ID,A.RoleName,A.TLSUBBRID,A.DEP_ID FROM TL_USER A WHERE TLNANME =@p_TLNAME) A
|
28
|
JOIN AbpUserRoles B ON B.UserId = A.ID
|
29
|
JOIN AbpRoles C ON C.Id=B.RoleId
|
30
|
-- WHERE C.DisplayName NOT IN (SELECT tsrm.ROLE_NEW FROM TL_SYS_ROLE_MAPPING tsrm WHERE tsrm.IS_MAIN=0 AND tsrm.TLNAME=@p_TLNAME)
|
31
|
IF @@Error <> 0 GOTO ABORT
|
32
|
|
33
|
COMMIT TRANSACTION
|
34
|
SELECT '0' as Result, '' ErrorDesc
|
35
|
RETURN '0'
|
36
|
ABORT:
|
37
|
BEGIN
|
38
|
ROLLBACK TRANSACTION
|
39
|
SELECT '-1' as Result, '' ErrorDesc
|
40
|
RETURN '-1'
|
41
|
End
|
42
|
|
43
|
|
44
|
|
45
|
|