| 
									
										
										
										
											2024-08-15 08:17:41 +00:00
										 |  |  | package permissionservicelogic | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | import ( | 
					
						
							| 
									
										
										
										
											2024-08-17 09:32:15 +00:00
										 |  |  | 	"ark-permission/internal/domain" | 
					
						
							|  |  |  | 	ers "code.30cm.net/wanderland/library-go/errors" | 
					
						
							| 
									
										
										
										
											2024-08-15 08:17:41 +00:00
										 |  |  | 	"context" | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	"ark-permission/gen_result/pb/permission" | 
					
						
							|  |  |  | 	"ark-permission/internal/svc" | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	"github.com/zeromicro/go-zero/core/logx" | 
					
						
							|  |  |  | ) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | type ListPermissionStatusLogic struct { | 
					
						
							|  |  |  | 	ctx    context.Context | 
					
						
							|  |  |  | 	svcCtx *svc.ServiceContext | 
					
						
							|  |  |  | 	logx.Logger | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | func NewListPermissionStatusLogic(ctx context.Context, svcCtx *svc.ServiceContext) *ListPermissionStatusLogic { | 
					
						
							|  |  |  | 	return &ListPermissionStatusLogic{ | 
					
						
							|  |  |  | 		ctx:    ctx, | 
					
						
							|  |  |  | 		svcCtx: svcCtx, | 
					
						
							|  |  |  | 		Logger: logx.WithContext(ctx), | 
					
						
							|  |  |  | 	} | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-08-17 09:32:15 +00:00
										 |  |  | // ListPermissionStatus 取得
 | 
					
						
							| 
									
										
										
										
											2024-08-15 08:17:41 +00:00
										 |  |  | func (l *ListPermissionStatusLogic) ListPermissionStatus(in *permission.NoneReq) (*permission.ListPermissionStatusResp, error) { | 
					
						
							| 
									
										
										
										
											2024-08-17 09:32:15 +00:00
										 |  |  | 	// 搜尋所有權限
 | 
					
						
							|  |  |  | 	permissions, err := l.svcCtx.Permission.FindAllOpenPermission(l.ctx) | 
					
						
							|  |  |  | 	if err != nil { | 
					
						
							|  |  |  | 		return nil, ers.DBError(err.Error()) | 
					
						
							|  |  |  | 	} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	exist := make(map[string]struct{}) | 
					
						
							|  |  |  | 	status := make([]*permission.PermissionStatusItem, 0, len(permissions)) | 
					
						
							|  |  |  | 	for _, v := range permissions { | 
					
						
							|  |  |  | 		if _, ok := exist[v.Name]; !ok { | 
					
						
							|  |  |  | 			t, _ := domain.ToPermissionTypeCode(v.Type) | 
					
						
							|  |  |  | 			status = append(status, &permission.PermissionStatusItem{ | 
					
						
							|  |  |  | 				Id:       v.Id,                                  // 權限 ID
 | 
					
						
							|  |  |  | 				ParentId: v.Parent.Int64,                        // 上級權限的ID
 | 
					
						
							|  |  |  | 				Name:     v.Name,                                // 權限名稱
 | 
					
						
							|  |  |  | 				Status:   permission.PermissionStatus(v.Status), // 權限開啟或關閉,判斷時上級權限如果關閉,下級也應該關閉對此人關閉
 | 
					
						
							|  |  |  | 				Type:     t.ToString(),                          // 前台權限,還是後台權限,還是其他中台之類的
 | 
					
						
							|  |  |  | 			}) | 
					
						
							|  |  |  | 			exist[v.Name] = struct{}{} | 
					
						
							|  |  |  | 		} | 
					
						
							|  |  |  | 	} | 
					
						
							| 
									
										
										
										
											2024-08-15 08:17:41 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-08-17 09:32:15 +00:00
										 |  |  | 	return &permission.ListPermissionStatusResp{ | 
					
						
							|  |  |  | 		Data: status, | 
					
						
							|  |  |  | 	}, nil | 
					
						
							| 
									
										
										
										
											2024-08-15 08:17:41 +00:00
										 |  |  | } |