@@ -861,65 +861,70 @@ type imlAppModule struct {
861861 transaction store.ITransaction `autowired:""`
862862}
863863
864- func (i * imlAppModule ) SearchCanSubscribe (ctx context.Context , serviceId string ) ([]* service_dto.SimpleAppItem , error ) {
864+ func (i * imlAppModule ) SearchCanSubscribe (ctx context.Context , serviceId string ) ([]* service_dto.SubscribeAppItem , bool , error ) {
865865 apps , err := i .searchMyApps (ctx , "" , "" )
866866 if err != nil {
867- return nil , err
867+ return nil , false , err
868+ }
869+ subscribes , err := i .subscribeService .ListByServices (ctx , serviceId )
870+ if err != nil {
871+ return nil , false , err
868872 }
873+ subscribeMap := utils .SliceToMapO (subscribes , func (p * subscribe.Subscribe ) (string , struct {}) {
874+ return p .Application , struct {}{}
875+ }, func (s * subscribe.Subscribe ) bool {
876+ return s .ApplyStatus == subscribe .ApplyStatusSubscribe
877+ })
878+ canSubscribe := false
869879 list , err := i .roleService .ListByPermit (ctx , access .SystemWorkspaceApplicationManagerAll )
870880 if err == nil && len (list ) > 0 {
871- return utils .SliceToSlice (apps , func (p * service.Service ) * service_dto.SimpleAppItem {
872- return & service_dto.SimpleAppItem {
873- Id : p .Id ,
874- Name : p .Name ,
875- Description : p .Description ,
876- Team : auto .UUID (p .Team ),
881+ return utils .SliceToSlice (apps , func (p * service.Service ) * service_dto.SubscribeAppItem {
882+ _ , isSubscribed := subscribeMap [p .Id ]
883+ if ! isSubscribed {
884+ canSubscribe = true
877885 }
878- }), nil
886+ return & service_dto.SubscribeAppItem {
887+ Id : p .Id ,
888+ Name : p .Name ,
889+ IsSubscribed : isSubscribed ,
890+ }
891+ }), canSubscribe , nil
879892 }
880893 list , err = i .roleService .ListByPermit (ctx , access .TeamConsumerSubscriptionSubscribe )
881894 if err != nil {
882- return nil , nil
895+ return nil , false , nil
883896 }
884897 roleIds := utils .SliceToSlice (list , func (p * role.RoleByPermit ) string {
885898 return p .Id
886899 })
887900 members , err := i .roleMemberService .ListByRoleIds (ctx , utils .UserId (ctx ), roleIds ... )
888901 if err != nil {
889- return nil , err
902+ return nil , false , err
890903 }
891904 if len (members ) == 0 {
892- return nil , nil
905+ return nil , false , nil
893906 }
894- subscribes , err := i .subscribeService .ListByServices (ctx , serviceId )
895- if err != nil {
896- return nil , err
897- }
898- subscribeMap := utils .SliceToMapO (subscribes , func (p * subscribe.Subscribe ) (string , struct {}) {
899- return p .Application , struct {}{}
900- }, func (s * subscribe.Subscribe ) bool {
901- return s .ApplyStatus == subscribe .ApplyStatusSubscribe
902- })
907+
903908 teamMap := utils .SliceToMapO (members , func (p * role.Member ) (string , struct {}) {
904909 return role .TrimTeamTarget (p .Target ), struct {}{}
905910 })
906- result := make ([]* service_dto.SimpleAppItem , 0 , len (apps ))
911+ result := make ([]* service_dto.SubscribeAppItem , 0 , len (apps ))
907912 for _ , app := range apps {
908913 if _ , ok := teamMap [app .Team ]; ! ok {
909914 continue
910915 }
911- if _ , ok := subscribeMap [app .Id ]; ok {
912- continue
916+ _ , isSubscribed := subscribeMap [app .Id ]
917+ if ! isSubscribed {
918+ canSubscribe = true
913919 }
914- result = append (result , & service_dto.SimpleAppItem {
915- Id : app .Id ,
916- Name : app .Name ,
917- Description : app .Description ,
918- Team : auto .UUID (app .Team ),
920+ result = append (result , & service_dto.SubscribeAppItem {
921+ Id : app .Id ,
922+ Name : app .Name ,
923+ IsSubscribed : isSubscribed ,
919924 })
920925 }
921926
922- return result , nil
927+ return result , canSubscribe , nil
923928}
924929
925930func (i * imlAppModule ) ExportAll (ctx context.Context ) ([]* service_dto.ExportApp , error ) {
0 commit comments