package com.iplatform.base.controller; import com.iplatform.base.SystemController; import com.iplatform.base.util.UserUtils; import com.walker.cache.AbstractCacheProvider; import com.walker.web.ResponseValue; import com.walker.web.UserOnlineProvider; import com.walker.web.UserPrincipal; import com.walker.web.WebRuntimeException; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import java.util.ArrayList; import java.util.Collection; import java.util.List; @RestController @RequestMapping("/monitor/online") public class OnlineUserController extends SystemController { private static final int MAX_DATA_SIZE = 64; private UserOnlineProvider userOnlineProvider; @Autowired public OnlineUserController(UserOnlineProvider userOnlineProvider){ this.userOnlineProvider = userOnlineProvider; } @RequestMapping("/list") public ResponseValue list(){ AbstractCacheProvider cacheProvider = (AbstractCacheProvider)this.userOnlineProvider; Collection list = cacheProvider.queryListLimit(MAX_DATA_SIZE); List data = new ArrayList<>(); if(list != null && list.size() > 0){ try { for(Object up : list){ // logger.debug(up.toString()); data.add(UserUtils.toUserPrincipal(up.toString())); } } catch (Exception ex){ throw new WebRuntimeException("在线用户缓存对象转换错误:"); } } return this.acquireTablePage(data, data.size()); } }