/** * */ package jframe.rongcloud.service.impl; import java.util.ArrayList; import java.util.Arrays; import java.util.Collections; import java.util.HashMap; import java.util.List; import java.util.Map; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import io.rong.ApiHttpClient; import io.rong.models.FormatType; import io.rong.models.SdkHttpResult; import io.rong.util.GsonUtil; import jframe.core.plugin.annotation.InjectPlugin; import jframe.core.plugin.annotation.Injector; import jframe.core.plugin.annotation.Start; import jframe.rongcloud.RongcloudConf; import jframe.rongcloud.RongcloudPlugin; import jframe.rongcloud.service.RongcloudService; /** * @author dzh * @date Feb 14, 2016 11:07:45 PM * @since 1.0 */ @Injector public class RongcloudServiceImpl implements RongcloudService { static Logger LOG = LoggerFactory.getLogger(RongcloudServiceImpl.class); @InjectPlugin static RongcloudPlugin Plugin; RongcloudConf conf = new RongcloudConf(); static String FILE_RC = "file.rongcloud"; @Start void start() { String f = Plugin.getConfig(FILE_RC); try { conf.init(f); LOG.info("Start RongcloudService Successfully!"); } catch (Exception e) { LOG.error(e.getMessage()); LOG.error("Start RongcloudService Failure! {} -> {}", FILE_RC, f); } } @Override public String getToken(String id, Map<String, String> req) { SdkHttpResult r = null; try { r = ApiHttpClient.getToken(conf.getConf(id, RongcloudConf.K_APP_KEY), conf.getConf(id, RongcloudConf.K_APP_SECRET), req.get(F_usrId), req.get(F_name), req.get(F_portraitUri), FormatType.json); if (200 == r.getHttpCode()) { @SuppressWarnings("unchecked") Map<String, String> map = (Map<String, String>) GsonUtil.fromJson(r.getResult(), HashMap.class); return map.get(F_token); } } catch (Exception e) { LOG.error(e.getMessage(), e.fillInStackTrace()); } LOG.error("RongcloudService.getToken error! id->{} req->{} r->{}", id, req, r); return null; } @Override public boolean refreshUsr(String id, Map<String, String> req) { SdkHttpResult r = null; try { r = ApiHttpClient.refreshUser(conf.getConf(id, RongcloudConf.K_APP_KEY), conf.getConf(id, RongcloudConf.K_APP_SECRET), req.get(F_usrId), req.get(F_name), req.get(F_portraitUri), FormatType.json); if ("200".equals(r.getHttpCode())) { return true; } } catch (Exception e) { LOG.error(e.getMessage(), e.fillInStackTrace()); } LOG.error("RongcloudService.refreshUsr error! id->{} req->{} r->{}", id, req, r); return false; } @Override public boolean createGroup(String id, Map<String, String> req) { SdkHttpResult r = null; try { List<String> ids = Arrays.asList(req.get(F_usrList).split("_")); r = ApiHttpClient.createGroup(conf.getConf(id, RongcloudConf.K_APP_KEY), conf.getConf(id, RongcloudConf.K_APP_SECRET), ids, req.get(F_groupId), req.get(F_groupName), FormatType.json); if ("200".equals(r.getHttpCode())) { return true; } } catch (Exception e) { LOG.error(e.getMessage(), e.fillInStackTrace()); } LOG.error("RongcloudService.createGroup error! id->{} req->{} r->{}", id, req, r); return false; } @Override public boolean joinGroupBatch(String id, Map<String, String> req) { SdkHttpResult r = null; try { List<String> ids = Arrays.asList(req.get(F_usrList).split("_")); r = ApiHttpClient.joinGroupBatch(conf.getConf(id, RongcloudConf.K_APP_KEY), conf.getConf(id, RongcloudConf.K_APP_SECRET), ids, req.get(F_groupId), req.get(F_groupName), FormatType.json); if ("200".equals(r.getHttpCode())) { return true; } } catch (Exception e) { LOG.error(e.getMessage(), e.fillInStackTrace()); } LOG.error("RongcloudService.joinGroupBatch error! id->{} req->{} r->{}", id, req, r); return false; } @Override public boolean quitGroup(String id, Map<String, String> req) { SdkHttpResult r = null; try { r = ApiHttpClient.quitGroup(conf.getConf(id, RongcloudConf.K_APP_KEY), conf.getConf(id, RongcloudConf.K_APP_SECRET), req.get(F_usrId), req.get(F_groupId), FormatType.json); if ("200".equals(r.getHttpCode())) { return true; } } catch (Exception e) { LOG.error(e.getMessage(), e.fillInStackTrace()); } LOG.error("RongcloudService.quitGroup error! id->{} req->{} r->{}", id, req, r); return false; } @Override public boolean dismissGroup(String id, Map<String, String> req) { SdkHttpResult r = null; try { r = ApiHttpClient.dismissGroup(conf.getConf(id, RongcloudConf.K_APP_KEY), conf.getConf(id, RongcloudConf.K_APP_SECRET), req.get(F_usrId), req.get(F_groupId), FormatType.json); if ("200".equals(r.getHttpCode())) { return true; } } catch (Exception e) { LOG.error(e.getMessage(), e.fillInStackTrace()); } LOG.error("RongcloudService.dismissGroup error! id->{} req->{} r->{}", id, req, r); return false; } @Override public boolean refreshGroupInfo(String id, Map<String, String> req) { SdkHttpResult r = null; try { r = ApiHttpClient.refreshGroupInfo(conf.getConf(id, RongcloudConf.K_APP_KEY), conf.getConf(id, RongcloudConf.K_APP_SECRET), req.get(F_groupId), req.get(F_groupName), FormatType.json); if ("200".equals(r.getHttpCode())) { return true; } } catch (Exception e) { LOG.error(e.getMessage(), e.fillInStackTrace()); } LOG.error("RongcloudService.refreshGroupInfo error! id->{} req->{} r->{}", id, req, r); return false; } @SuppressWarnings("unchecked") @Override public List<String> queryGroupUserList(String id, Map<String, String> req) { SdkHttpResult r = null; try { r = ApiHttpClient.queryGroupUserList(conf.getConf(id, RongcloudConf.K_APP_KEY), conf.getConf(id, RongcloudConf.K_APP_SECRET), req.get(F_groupId), FormatType.json); if ("200".equals(r.getHttpCode())) { Map<String, String> map = (Map<String, String>) GsonUtil.fromJson(r.getResult(), HashMap.class); String users = map.get(F_users); if (users != null) { List<Map<String, String>> usrList = (List<Map<String, String>>) GsonUtil.fromJson(users, ArrayList.class); List<String> usrIds = new ArrayList<String>(usrList.size()); for (Map<String, String> m : usrList) { usrIds.add(m.get(F_id)); } return usrIds; } } } catch (Exception e) { LOG.error(e.getMessage(), e.fillInStackTrace()); } LOG.error("RongcloudService.queryGroupUserList error! id->{} req->{} r->{}", id, req, r); return Collections.emptyList(); } }