一、IM 用户管理
注册 IM 用户[单个]
- “开放注册”模式:注册环信账号时,不用携带管理员身份认证信息;
- “授权注册”模式:注册环信账号时,必须携带管理员身份认证信息。推荐使用“授权注册”,这样可以防止某些已经获取了注册 URL 和知晓注册流程的人恶意向服务器大量注册垃圾用户。
package com.xunxin.service.app;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.xunxin.dao.app.AppUserDao;
import com.xunxin.dao.sys.MessageDao;
import com.xunxin.dao.sys.PlatformMutualityManagentDao;
import com.xunxin.util.HttpUtils;
import com.xunxin.util.HttpUtils.UHeader;
import com.xunxin.util.app.IDGeneratorUtil;
import com.xunxin.util.app.ValidationUtil;
import com.xunxin.vo.app.exception.LoginExceptionConstant;
import com.xunxin.vo.app.exception.RegisterExceptionConstant;
import com.xunxin.vo.sys.PlatformMutualityManagent;
import com.xunxin.vo.user.UserEntity;
import com.xunxin.web.api.exception.LoginException;
import com.xunxin.web.api.exception.RegisterException;
/**
* Copyright © 2017 noseparte(Libra) © Like the wind, like rain
* @Author Noseparte
* @Compile 2017年10月11日 -- 下午4:57:41
* @Version 1.0
* @Description app端的用户监管
*/
@Service("appUserService")
public class AppUserService {
private static final String LINKED_URL = "https://a1.easemob.com/";
@Autowired
private AppUserDao appUserDao;
@Autowired
private MessageDao messageDao;
@Autowired
private PlatformMutualityManagentDao platformMutualityManagentDao;
public boolean register(int platform_id, String phone, int verifyCode, String user_password) {
//----------------------------
//获取环信应用信息
PlatformMutualityManagent pm = platformMutualityManagentDao.findOne(platform_id);
String app_key = pm.getApp_key();
String username = "xunxin" + "|" + phone; //环信 ID
String password = "xunxin" + "|" + user_password; //用户密码
String org_name = app_key.split("#")[0]; //组织名称
String app_name = app_key.split("#")[1]; //APP名称
//----------------------------
//注册IM[单个]
//post请求路径
String register_url = LINKED_URL + org_name + "/" + app_name + "/" + "users";
StringBuffer register_sb = new StringBuffer();
register_sb.append("username=").append(username);
register_sb.append("&password=").append(password);
String register_argJson = register_sb.toString();
//请求头信息
List register_headerList = new ArrayList();
register_headerList.add(new UHeader("Content-Type", "application/json"));
String register_resp = HttpUtils.getPostResponse(register_url, register_argJson, register_headerList);
//解析环信注册返回的JSON
JSONObject register_obj = JSON.parseObject(register_resp);
String applicationName = register_obj.getString("applicationName");
if(applicationName.equals("followheart")) {
System.out.println("环信注册成功");
}
//手机号输入有误
if(!ValidationUtil.matchMobile(phone)) {
throw new RegisterException(RegisterExceptionConstant.PHONE_NUMBER_IS_WRONG);
}
int isExist = appUserDao.findByPhone(phone);
//用户已存在
if(isExist == 0) {
throw new RegisterException(RegisterExceptionConstant.LOGIN_NAME_IS_EXIST);
}
//手机号输入有误
if(!ValidationUtil.matchPassWord(password)) {
throw new RegisterException(RegisterExceptionConstant.PASSWORD_ERROR);
}
//验证码
int code = messageDao.findLastOneByPhone(phone);
if(verifyCode != code) {
throw new RegisterException(RegisterExceptionConstant.VERIFY_CODE_ERROR);
}
//密码输入有误
if(!ValidationUtil.matchPassWord(password)) {
throw new RegisterException(RegisterExceptionConstant.PASSWORD_ERROR);
}
//一切正常,开始进入注册流程
UserEntity entity = new UserEntity(phone, IDGeneratorUtil.createAppCode(), 0, password, new Date());
appUserDao.save(entity); //TODO
//大功告成
return true;
}
Email:[email protected] 有java与hadoop相关的技术问题,可以发私信与我交流。
NPM地址:https://www.npmjs.com/~noseparte
个人网站 :
http://www.noseparte.com/ Copyright © 2017 noseparte