一、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