package com.hdl.photovoltaic.other;
|
|
|
import com.google.gson.Gson;
|
import com.google.gson.JsonObject;
|
import com.hdl.linkpm.sdk.core.exception.HDLException;
|
import com.hdl.linkpm.sdk.user.HDLLinkPMUser;
|
import com.hdl.linkpm.sdk.user.bean.HDLLoginBean;
|
import com.hdl.linkpm.sdk.user.bean.HDLUserRegionBean;
|
import com.hdl.linkpm.sdk.user.callback.ILoginCallBack;
|
import com.hdl.linkpm.sdk.user.callback.IRegionByAccountCallBack;
|
import com.hdl.photovoltaic.config.UserConfigManage;
|
import com.hdl.photovoltaic.internet.HttpClient;
|
import com.hdl.photovoltaic.internet.api.HttpApi;
|
import com.hdl.photovoltaic.listener.CloudCallBeak;
|
|
import java.util.regex.Matcher;
|
import java.util.regex.Pattern;
|
|
/**
|
* 账号逻辑
|
*/
|
public class HdlAccountLogic {
|
|
private static volatile HdlAccountLogic sHdlAccountLogic;
|
|
/**
|
* 获取当前对象
|
*
|
* @return HdlAccountLogic
|
*/
|
public static synchronized HdlAccountLogic getInstance() {
|
if (sHdlAccountLogic == null) {
|
synchronized (HdlAccountLogic.class) {
|
if (sHdlAccountLogic == null) {
|
sHdlAccountLogic = new HdlAccountLogic();
|
}
|
}
|
|
}
|
return sHdlAccountLogic;
|
}
|
|
// region --------【B端账号】---------
|
|
/**
|
* 初始化账号的Url区域地址
|
*
|
* @param i_account 账号
|
*/
|
public void regionByAccount(String i_account, CloudCallBeak<HDLUserRegionBean> cloudCallBeak) {
|
HDLLinkPMUser.getInstance().regionByAccount(i_account, new IRegionByAccountCallBack() {
|
@Override
|
public void onSuccess(HDLUserRegionBean regionBean) {
|
if (cloudCallBeak != null) {
|
cloudCallBeak.onSuccess(regionBean);
|
}
|
}
|
|
@Override
|
public void onFailure(HDLException error) {
|
if (cloudCallBeak != null) {
|
cloudCallBeak.onFailure(error);
|
}
|
}
|
});
|
}
|
|
/**
|
* 登录(B端账号)
|
* 通过账号和密码
|
*
|
* @param account 手机或者邮箱
|
* @param loginPwd 密码
|
* @param callBack -
|
*/
|
public void loginByPassword(String account, String loginPwd, ILoginCallBack callBack) {
|
String requestUrl = HttpApi.POST_Login;
|
JsonObject json = new JsonObject();
|
json.addProperty("account", account);
|
json.addProperty("loginPwd", loginPwd);
|
// json.addProperty("platform", "APP");
|
json.addProperty("grantType", "password");
|
HDLLinkPMUser.getInstance().loginByPassword(account, loginPwd, new ILoginCallBack() {
|
@Override
|
public void onSuccess(HDLLoginBean loginBean) {
|
|
if (callBack != null) {
|
saveUserData(loginBean);
|
callBack.onSuccess(loginBean);
|
}
|
}
|
|
@Override
|
public void onFailure(HDLException error) {
|
if (callBack != null) {
|
callBack.onFailure(error);
|
}
|
}
|
});
|
|
}
|
|
/**
|
* 修改密码(B端账号)
|
*
|
* @param isPhone true表示手机号,否则是邮箱
|
* @param account 账号 (手机或者邮箱)
|
* @param loginPwd 新密码
|
* @param verifyCode 验证码
|
* @param cloudCallBeak -
|
*/
|
public void changeBPassword(boolean isPhone, String account, String loginPwd, String verifyCode, CloudCallBeak<Boolean> cloudCallBeak) {
|
String requestUrl = HttpApi.B_POST_FORGET_PROGRAM_PWD;
|
JsonObject json = new JsonObject();
|
if (isPhone) {
|
json.addProperty("userPhone", account);//用户手机号 手机号和邮箱必填其一
|
} else {
|
json.addProperty("userEmail", account);
|
}
|
json.addProperty("loginPwd", loginPwd);//新密码
|
json.addProperty("verifyCode", verifyCode);//验证码
|
// json.addProperty("platform", "APP");
|
|
HttpClient.getInstance().requestHttp(requestUrl, json.toString(), new CloudCallBeak<String>() {
|
@Override
|
public void onSuccess(String str) {
|
if (cloudCallBeak != null) {
|
cloudCallBeak.onSuccess(true);
|
}
|
}
|
|
@Override
|
public void onFailure(HDLException e) {
|
if (cloudCallBeak != null) {
|
cloudCallBeak.onFailure(e);
|
}
|
}
|
});
|
|
|
}
|
|
|
/**
|
* 刷新Token(B端账号)
|
*
|
* @param account 手机或者邮箱
|
* @param loginPwd 密码
|
* @param cloudCallBeak -
|
*/
|
public void refreshToken(String account, String loginPwd, CloudCallBeak<HDLLoginBean> cloudCallBeak) {
|
String requestUrl = HttpApi.POST_Login;
|
JsonObject json = new JsonObject();
|
json.addProperty("grantType", "refresh_token");
|
// json.addProperty("refreshToken", UserConfigManage.getInstance().getRefreshToken());
|
HttpClient.getInstance().requestHttp(requestUrl, json.toString(), new CloudCallBeak<String>() {
|
@Override
|
public void onSuccess(String jsonStr) {
|
Gson gson = new Gson();
|
HDLLoginBean loginBean = gson.fromJson(jsonStr, HDLLoginBean.class);
|
// saveUserData(loginBean);
|
if (cloudCallBeak != null) {
|
cloudCallBeak.onSuccess(loginBean);
|
}
|
}
|
|
@Override
|
public void onFailure(HDLException e) {
|
if (cloudCallBeak != null) {
|
cloudCallBeak.onFailure(e);
|
}
|
}
|
});
|
}
|
|
|
// endregion
|
|
// region --------【C端账号】---------
|
|
/**
|
* 注册账号(C端账号)
|
* 注意:B
|
*
|
* @param isPhone true表示手机号,否则是邮箱
|
* @param account 账号 (手机或者邮箱)
|
* @param loginPwd 密码
|
* @param verifyCode 验证码
|
* @param cloudCallBeak -
|
*/
|
public void registerAccount(boolean isPhone, String account, String loginPwd, String verifyCode, CloudCallBeak<Boolean> cloudCallBeak) {
|
String requestUrl = HttpApi.C_POST_GET_OAUTH_REGISTER;
|
JsonObject json = new JsonObject();
|
if (isPhone) {
|
json.addProperty("memberPhone", account);//用户手机号 手机号和邮箱必填其一
|
} else {
|
json.addProperty("memberEmail", account);
|
}
|
json.addProperty("loginPwd", loginPwd);//登陆密码,需要MD5处理
|
json.addProperty("verifyCode", verifyCode);//验证码
|
// json.addProperty("platform", "APP");
|
// json.addProperty("memberName", "memberName");//会员昵称
|
|
HttpClient.getInstance().requestHttp(requestUrl, json.toString(), new CloudCallBeak<String>() {
|
@Override
|
public void onSuccess(String str) {
|
if (cloudCallBeak != null) {
|
cloudCallBeak.onSuccess(true);
|
}
|
}
|
|
@Override
|
public void onFailure(HDLException e) {
|
if (cloudCallBeak != null) {
|
cloudCallBeak.onFailure(e);
|
}
|
}
|
});
|
|
|
}
|
|
|
/**
|
* 修改密码(C端账号)
|
*
|
* @param isPhone true表示手机号,否则是邮箱
|
* @param account 账号 (手机或者邮箱)
|
* @param loginPwd 新密码
|
* @param verifyCode 验证码
|
* @param cloudCallBeak -
|
*/
|
public void changeCPassword(boolean isPhone, String account, String loginPwd, String verifyCode, CloudCallBeak<Boolean> cloudCallBeak) {
|
String requestUrl = HttpApi.C_POST_FORGET_PROGRAM_PWD;
|
JsonObject json = new JsonObject();
|
if (isPhone) {
|
json.addProperty("memberPhone", account);//用户手机号 手机号和邮箱必填其一
|
} else {
|
json.addProperty("memberEmail", account);
|
}
|
json.addProperty("loginPwd", loginPwd);//新密码
|
json.addProperty("verifyCode", verifyCode);//验证码
|
// json.addProperty("platform", "APP");
|
|
HttpClient.getInstance().requestHttp(requestUrl, json.toString(), new CloudCallBeak<String>() {
|
@Override
|
public void onSuccess(String str) {
|
if (cloudCallBeak != null) {
|
cloudCallBeak.onSuccess(true);
|
}
|
}
|
|
@Override
|
public void onFailure(HDLException e) {
|
if (cloudCallBeak != null) {
|
cloudCallBeak.onFailure(e);
|
}
|
}
|
});
|
|
|
}
|
// endregion
|
|
|
/**
|
* 发送验证码
|
*
|
* @param isPhone true表示手机号,否则是邮箱
|
* @param account 账号 (手机或者邮箱)
|
* @param phonePrefix 手机号前缀
|
* @param verifyType 1:注册 2:找回密码 3:绑定4:验证码登陆 5:敏感数据
|
* @param cloudCallBeak -
|
*/
|
public void sendVerifyCode(boolean isPhone, String account, String phonePrefix, int verifyType, CloudCallBeak<Boolean> cloudCallBeak) {
|
String requestUrl = HttpApi.POST_SEND_VERIFICATION;
|
JsonObject json = new JsonObject();
|
if (isPhone) {
|
json.addProperty("phone", account);//用户手机号
|
json.addProperty("phonePrefix", phonePrefix);//手机号前缀
|
} else {
|
json.addProperty("mail", account);//邮箱
|
}
|
json.addProperty("verifyType", verifyType);//1:注册 2:找回密码 3:绑定4:验证码登陆 5:敏感数据
|
// json.addProperty("languageType", loginPwd);//语言
|
// json.addProperty("expireSecond", expireSecond);//验证码过期时间(秒),默认5分钟
|
// json.addProperty("platform", "APP");
|
|
HttpClient.getInstance().requestHttp(requestUrl, json.toString(), new CloudCallBeak<String>() {
|
@Override
|
public void onSuccess(String str) {
|
if (cloudCallBeak != null) {
|
cloudCallBeak.onSuccess(true);
|
}
|
}
|
|
@Override
|
public void onFailure(HDLException e) {
|
if (cloudCallBeak != null) {
|
cloudCallBeak.onFailure(e);
|
}
|
}
|
});
|
|
|
}
|
|
/**
|
* 退出登录时调用,清除推送数据
|
*/
|
public void SignOutClearData() {
|
String requestUrl = HttpApi.POST_GET_IMAGE_LOGOUT;
|
//通知云端,已经退出登陆
|
}
|
|
public boolean isPhone(String phone) {
|
Pattern p = Pattern.compile("^((13[0-9])|(14[0|5|6|7|9])|(15[0-3])|(15[5-9])|(16[6|7])|(17[2|3|5|6|7|8])|(18[0-9])|(19[1|8|9]))\\d{8}$");
|
Matcher m = p.matcher(phone);
|
return m.matches();
|
}
|
|
public boolean isMailbox(String mailbox) {
|
String regex = "^(\\w+([-.][A-Za-z0-9]+)*){3,18}@\\w+([-.][A-Za-z0-9]+)*\\.\\w+([-.][A-Za-z0-9]+)*$";
|
return mailbox.matches(regex);
|
}
|
|
/**
|
* 登录成功保存登录信息
|
*/
|
private void saveUserData(HDLLoginBean obj) {
|
if (obj != null) {
|
UserConfigManage.getInstance().setLogin(true);//是否登录
|
UserConfigManage.getInstance().setAcceiptPolicy(true);//是否选择隐私政策
|
UserConfigManage.getInstance().setLoginDateTime(System.currentTimeMillis());//登录时间
|
UserConfigManage.getInstance().setUserId(obj.getUserId());//用户id
|
UserConfigManage.getInstance().setAccount(obj.getAccount());//账号
|
UserConfigManage.getInstance().setToken(obj.getAccessToken());//Token
|
UserConfigManage.getInstance().setHeaderPrefix(obj.getHeaderPrefix());//认证请求头前缀(底层请求统一加)
|
UserConfigManage.getInstance().setRefreshToken(obj.getRefreshToken());//刷新Token用的刷新Token用的
|
boolean isUserId = UserConfigManage.getInstance().getUserId().equals(obj.getUserId());
|
UserConfigManage.getInstance().setTheSameLoginAccount(isUserId);//与上一个账号是否同一个
|
}
|
|
}
|
|
|
}
|