package com.hdl.photovoltaic.other; 
 | 
  
 | 
  
 | 
import android.text.TextUtils; 
 | 
  
 | 
import com.google.gson.Gson; 
 | 
import com.google.gson.JsonObject; 
 | 
import com.google.gson.reflect.TypeToken; 
 | 
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.enums.LogoutType; 
 | 
import com.hdl.photovoltaic.internet.HttpClient; 
 | 
import com.hdl.photovoltaic.internet.api.HttpApi; 
 | 
import com.hdl.photovoltaic.listener.CloudCallBeak; 
 | 
import com.hdl.photovoltaic.ui.bean.AuthorizationAccountBean; 
 | 
import com.hdl.photovoltaic.ui.bean.BUserInfo; 
 | 
import com.hdl.photovoltaic.ui.bean.CUserInfo; 
 | 
import com.hdl.photovoltaic.utils.SharedPreUtils; 
 | 
  
 | 
import java.io.File; 
 | 
import java.lang.reflect.Type; 
 | 
import java.util.ArrayList; 
 | 
import java.util.Arrays; 
 | 
import java.util.List; 
 | 
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) { 
 | 
        boolean isBooleanB = UserConfigManage.getInstance().isBAccount(); 
 | 
        HDLLinkPMUser.getInstance().regionByAccount(isBooleanB, 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(HttpClient.getException(error)); 
 | 
                } 
 | 
            } 
 | 
        }); 
 | 
    } 
 | 
  
 | 
    /** 
 | 
     * 登录(B,C端账号) 
 | 
     * 通过账号和密码 
 | 
     * 
 | 
     * @param account  手机或者邮箱 
 | 
     * @param loginPwd 密码 
 | 
     * @param callBack - 
 | 
     */ 
 | 
    public void loginByPassword(String account, String loginPwd, ILoginCallBack callBack) { 
 | 
        boolean isBooleanB = UserConfigManage.getInstance().isBAccount(); 
 | 
        JsonObject json = new JsonObject(); 
 | 
        json.addProperty("account", account); 
 | 
        json.addProperty("loginPwd", loginPwd); 
 | 
//        json.addProperty("platform", "APP"); 
 | 
        json.addProperty("grantType", "password"); 
 | 
        HDLLinkPMUser.getInstance().loginByPassword(isBooleanB, account, loginPwd, new ILoginCallBack() { 
 | 
            @Override 
 | 
            public void onSuccess(HDLLoginBean loginBean) { 
 | 
  
 | 
                if (callBack != null) { 
 | 
                    loginBean.setAccount(account); 
 | 
                    saveUserData(loginBean); 
 | 
                    callBack.onSuccess(loginBean); 
 | 
                } 
 | 
            } 
 | 
  
 | 
            @Override 
 | 
            public void onFailure(HDLException error) { 
 | 
                if (callBack != null) { 
 | 
                    callBack.onFailure(HttpClient.getException(error)); 
 | 
                } 
 | 
            } 
 | 
        }); 
 | 
  
 | 
    } 
 | 
  
 | 
    /** 
 | 
     * 检验账号权限(B端账号) 
 | 
     * 
 | 
     * @param cloudCallBeak - 
 | 
     */ 
 | 
    public void getCompanyParterMenu_B(CloudCallBeak<Boolean> cloudCallBeak) { 
 | 
        String requestUrl = HttpApi.B_POST_getCompanyParterMenu; 
 | 
        JsonObject json = new JsonObject(); 
 | 
        json.addProperty("sysCode", "xenterra-app"); 
 | 
        HttpClient.getInstance().requestHttp(requestUrl, json.toString(), new CloudCallBeak<String>() { 
 | 
            @Override 
 | 
            public void onSuccess(String json) { 
 | 
                if (cloudCallBeak != null) { 
 | 
                    if (TextUtils.isEmpty(json)) { 
 | 
                        cloudCallBeak.onSuccess(false); 
 | 
                    } else { 
 | 
                        Gson gson = new Gson(); 
 | 
                        Type type = new TypeToken<List<AuthorizationAccountBean>>() { 
 | 
                        }.getType(); 
 | 
                        List<AuthorizationAccountBean> authorizationAccounts = gson.fromJson(json, type); 
 | 
                        if (authorizationAccounts != null && !authorizationAccounts.isEmpty()) { 
 | 
                            cloudCallBeak.onSuccess(true); 
 | 
                        } else { 
 | 
                            cloudCallBeak.onSuccess(false); 
 | 
                        } 
 | 
                    } 
 | 
  
 | 
                } 
 | 
            } 
 | 
  
 | 
            @Override 
 | 
            public void onFailure(HDLException e) { 
 | 
                if (cloudCallBeak != null) { 
 | 
                    cloudCallBeak.onFailure(e); 
 | 
                } 
 | 
            } 
 | 
        }); 
 | 
  
 | 
  
 | 
    } 
 | 
  
 | 
  
 | 
    /** 
 | 
     * 修改密码(B端账号) 
 | 
     * 
 | 
     * @param isPhone       true表示手机号,否则是邮箱 
 | 
     * @param account       账号 (手机或者邮箱) 
 | 
     * @param loginPwd      新密码 
 | 
     * @param verifyCode    验证码 
 | 
     * @param cloudCallBeak - 
 | 
     */ 
 | 
    public void changePassword_B(boolean isPhone, String account, String loginPwd, String verifyCode, String phonePrefix, CloudCallBeak<Boolean> cloudCallBeak) { 
 | 
        String requestUrl = HttpApi.B_POST_FORGET_PROGRAM_PWD; 
 | 
        JsonObject json = new JsonObject(); 
 | 
        if (isPhone) { 
 | 
  
 | 
            json.addProperty("userPhone", account);//用户手机号 手机号和邮箱必填其一 
 | 
            json.addProperty("phonePrefix", phonePrefix.replace("+", ""));//手机号前缀 
 | 
        } 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); 
 | 
                } 
 | 
            } 
 | 
        }); 
 | 
  
 | 
  
 | 
    } 
 | 
  
 | 
    /** 
 | 
     * 更改个人密码(B端账号) 
 | 
     * 
 | 
     * @param loginOldPwd 老密码 
 | 
     * @param loginPwd    新密码 
 | 
     */ 
 | 
    public void updatePassword_B(String loginOldPwd, String loginPwd, CloudCallBeak<String> cloudCallBeak) { 
 | 
        String requestUrl = HttpApi.B_POST_UPDATE_PROGRAM_PASSWORD; 
 | 
        JsonObject json = new JsonObject(); 
 | 
        json.addProperty("userId", UserConfigManage.getInstance().getUserId()); 
 | 
        json.addProperty("loginOldPwd", loginOldPwd);//    老密码 
 | 
        json.addProperty("loginPwd", loginPwd);//新密码 
 | 
        json.addProperty("confirmLoginPwd", loginPwd);//新密码确认密码 
 | 
        HttpClient.getInstance().requestHttp(requestUrl, json.toString(), new CloudCallBeak<String>() { 
 | 
            @Override 
 | 
            public void onSuccess(String str) { 
 | 
                if (cloudCallBeak != null) { 
 | 
                    cloudCallBeak.onSuccess(str); 
 | 
                } 
 | 
            } 
 | 
  
 | 
            @Override 
 | 
            public void onFailure(HDLException e) { 
 | 
                if (cloudCallBeak != null) { 
 | 
                    cloudCallBeak.onFailure(e); 
 | 
                } 
 | 
            } 
 | 
        }); 
 | 
  
 | 
  
 | 
    } 
 | 
  
 | 
  
 | 
    /** 
 | 
     * 刷新Token(C端账号) 
 | 
     * 
 | 
     * @param account       手机或者邮箱 
 | 
     * @param loginPwd      密码 
 | 
     * @param cloudCallBeak - 
 | 
     */ 
 | 
    public void refreshToken_B(String account, String loginPwd, CloudCallBeak<HDLLoginBean> cloudCallBeak) { 
 | 
        String requestUrl = HttpApi.C_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); 
 | 
                } 
 | 
            } 
 | 
        }); 
 | 
    } 
 | 
  
 | 
  
 | 
    /** 
 | 
     * 获取用户详情信息(B端账号) 
 | 
     * 
 | 
     * @param cloudCallBeak - 
 | 
     */ 
 | 
    public void getUserInfo_B(CloudCallBeak<BUserInfo> cloudCallBeak) { 
 | 
        String requestUrl = HttpApi.B_POST_GET_USERINFO; 
 | 
        JsonObject json = new JsonObject(); 
 | 
        json.addProperty("userId", UserConfigManage.getInstance().getUserId()); 
 | 
        HttpClient.getInstance().requestHttp(requestUrl, json.toString(), new CloudCallBeak<String>() { 
 | 
            @Override 
 | 
            public void onSuccess(String jsonStr) { 
 | 
                Gson gson = new Gson(); 
 | 
                BUserInfo bUserInfo = gson.fromJson(jsonStr, BUserInfo.class); 
 | 
                if (cloudCallBeak != null) { 
 | 
                    cloudCallBeak.onSuccess(bUserInfo); 
 | 
                } 
 | 
            } 
 | 
  
 | 
            @Override 
 | 
            public void onFailure(HDLException e) { 
 | 
                if (cloudCallBeak != null) { 
 | 
                    cloudCallBeak.onFailure(e); 
 | 
                } 
 | 
            } 
 | 
        }); 
 | 
  
 | 
  
 | 
    } 
 | 
  
 | 
  
 | 
    // endregion 
 | 
  
 | 
    // region --------【C端账号】--------- 
 | 
  
 | 
  
 | 
    /** 
 | 
     * 上传用户头像 
 | 
     * 
 | 
     * @param file          图片文件 
 | 
     * @param cloudCallBeak - 
 | 
     */ 
 | 
    public void uploadUserHeadImage_C(File file, CloudCallBeak<String> cloudCallBeak) { 
 | 
        String requestUrl = HttpApi.C_POST_GET_IMAGE_URL; 
 | 
        HttpClient.getInstance().uploadingFile(requestUrl, file, new CloudCallBeak<String>() { 
 | 
            @Override 
 | 
            public void onSuccess(String jsonStr) { 
 | 
                if (cloudCallBeak != null) { 
 | 
                    cloudCallBeak.onSuccess(jsonStr); 
 | 
                } 
 | 
            } 
 | 
  
 | 
            @Override 
 | 
            public void onFailure(HDLException e) { 
 | 
                if (cloudCallBeak != null) { 
 | 
                    cloudCallBeak.onFailure(e); 
 | 
                } 
 | 
            } 
 | 
        }); 
 | 
    } 
 | 
  
 | 
    /** 
 | 
     * 获取用户头像路径(C端账号) 
 | 
     * 
 | 
     * @param imageKey      用户头像imageKey 
 | 
     * @param cloudCallBeak - 
 | 
     */ 
 | 
    public void getImageKey_C(String imageKey, CloudCallBeak<String> cloudCallBeak) { 
 | 
        String requestUrl = HttpApi.C_POST_GET_IMAGE_URL; 
 | 
        JsonObject json = new JsonObject(); 
 | 
        json.addProperty("imageKey", imageKey); 
 | 
        HttpClient.getInstance().requestHttp(requestUrl, json.toString(), new CloudCallBeak<String>() { 
 | 
            @Override 
 | 
            public void onSuccess(String jsonStr) { 
 | 
                if (cloudCallBeak != null) { 
 | 
                    cloudCallBeak.onSuccess(jsonStr); 
 | 
                } 
 | 
            } 
 | 
  
 | 
            @Override 
 | 
            public void onFailure(HDLException e) { 
 | 
                if (cloudCallBeak != null) { 
 | 
                    cloudCallBeak.onFailure(e); 
 | 
                } 
 | 
            } 
 | 
        }); 
 | 
  
 | 
  
 | 
    } 
 | 
  
 | 
    /** 
 | 
     * 获取个人信息(C端账号) 
 | 
     * 
 | 
     * @param cloudCallBeak - 
 | 
     */ 
 | 
    public void getMemberInfo_C(CloudCallBeak<CUserInfo> cloudCallBeak) { 
 | 
        String requestUrl = HttpApi.C_POST_GET_MEMBER_INFO; 
 | 
        JsonObject json = new JsonObject(); 
 | 
        HttpClient.getInstance().requestHttp(requestUrl, json.toString(), new CloudCallBeak<String>() { 
 | 
            @Override 
 | 
            public void onSuccess(String jsonStr) { 
 | 
                Gson gson = new Gson(); 
 | 
                CUserInfo cUserInfo = gson.fromJson(jsonStr, CUserInfo.class); 
 | 
                if (cloudCallBeak != null) { 
 | 
                    cloudCallBeak.onSuccess(cUserInfo); 
 | 
                } 
 | 
            } 
 | 
  
 | 
            @Override 
 | 
            public void onFailure(HDLException e) { 
 | 
                if (cloudCallBeak != null) { 
 | 
                    cloudCallBeak.onFailure(e); 
 | 
                } 
 | 
            } 
 | 
        }); 
 | 
  
 | 
  
 | 
    } 
 | 
  
 | 
    /** 
 | 
     * 下载子账号头像(C端账号) 
 | 
     * 
 | 
     * @param childAccountId 子账号id 
 | 
     * @param childId        子账号(成员)id查找子账号接口获取到的数据id 
 | 
     * @param homeId         住宅id 
 | 
     * @param cloudCallBeak  - 
 | 
     */ 
 | 
    public void getHeadPortrait_C(String childAccountId, String childId, String homeId, CloudCallBeak<String> cloudCallBeak) { 
 | 
        String requestUrl = HttpApi.C_POST_GET_IMAGE_URL; 
 | 
        JsonObject json = new JsonObject(); 
 | 
        json.addProperty("childAccountId", childAccountId); 
 | 
        if (TextUtils.isEmpty(childId)) { 
 | 
            json.addProperty("childId", childId); 
 | 
        } 
 | 
        json.addProperty("homeId", homeId); 
 | 
        HttpClient.getInstance().requestHttp(requestUrl, json.toString(), new CloudCallBeak<String>() { 
 | 
            @Override 
 | 
            public void onSuccess(String jsonStr) { 
 | 
                if (cloudCallBeak != null) { 
 | 
                    cloudCallBeak.onSuccess(jsonStr); 
 | 
                } 
 | 
            } 
 | 
  
 | 
            @Override 
 | 
            public void onFailure(HDLException e) { 
 | 
                if (cloudCallBeak != null) { 
 | 
                    cloudCallBeak.onFailure(e); 
 | 
                } 
 | 
            } 
 | 
        }); 
 | 
  
 | 
  
 | 
    } 
 | 
  
 | 
  
 | 
    /** 
 | 
     * 修改用户名称 
 | 
     * 
 | 
     * @param memberName    用户名称 
 | 
     * @param cloudCallBeak - 
 | 
     */ 
 | 
    public void updateMemberName_C(String memberName, CloudCallBeak<Boolean> cloudCallBeak) { 
 | 
        updateMemberInfo_C("", memberName, "", "", "", "", cloudCallBeak); 
 | 
    } 
 | 
  
 | 
    /** 
 | 
     * 修改用户头像 
 | 
     * 
 | 
     * @param memberHeadIcon 头像地址 
 | 
     * @param cloudCallBeak  - 
 | 
     */ 
 | 
    public void updateMemberHeadIcon_C(String memberHeadIcon, CloudCallBeak<Boolean> cloudCallBeak) { 
 | 
        updateMemberInfo_C("", "", "", memberHeadIcon, "", "", cloudCallBeak); 
 | 
    } 
 | 
  
 | 
    /** 
 | 
     * 更新个人信息(C端账号) 
 | 
     * 
 | 
     * @param languageType   语言类型 
 | 
     * @param memberName     用户昵称 
 | 
     * @param memberBirthday 用户生日 
 | 
     * @param memberHeadIcon 用户头像 
 | 
     * @param loginName      登陆账号 
 | 
     * @param memberSex      用户性别 
 | 
     * @param cloudCallBeak  - 
 | 
     */ 
 | 
    public void updateMemberInfo_C(String languageType, String memberName, String memberBirthday, String memberHeadIcon, String loginName, String memberSex, CloudCallBeak<Boolean> cloudCallBeak) { 
 | 
        String requestUrl = HttpApi.C_POST_UPDATE_MEMBER_INFO; 
 | 
        JsonObject json = new JsonObject(); 
 | 
        if (!TextUtils.isEmpty(languageType)) { 
 | 
            json.addProperty("languageType", languageType);//语言类型 
 | 
        } 
 | 
        if (!TextUtils.isEmpty(memberName)) { 
 | 
            json.addProperty("memberName", memberName);//用户昵称 
 | 
        } 
 | 
        if (!TextUtils.isEmpty(memberBirthday)) { 
 | 
            json.addProperty("memberBirthday", memberBirthday);//用户生日 
 | 
        } 
 | 
        if (!TextUtils.isEmpty(memberHeadIcon)) { 
 | 
            json.addProperty("memberHeadIcon", memberHeadIcon);//用户头像 
 | 
        } 
 | 
        if (!TextUtils.isEmpty(loginName)) { 
 | 
            json.addProperty("loginName", loginName);//登陆账号 
 | 
        } 
 | 
        if (!TextUtils.isEmpty(memberSex)) { 
 | 
            json.addProperty("memberSex", memberSex);//用户性别 
 | 
        } 
 | 
        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端账号) 
 | 
     * 注意:B端不支持注册账号 
 | 
     * 
 | 
     * @param isPhone       true表示手机号,否则是邮箱 
 | 
     * @param account       账号 (手机或者邮箱) 
 | 
     * @param loginPwd      密码 
 | 
     * @param verifyCode    验证码 
 | 
     * @param phonePrefix   手机号前缀 
 | 
     * @param cloudCallBeak - 
 | 
     */ 
 | 
    public void registerAccount_C(boolean isPhone, String account, String loginPwd, String verifyCode, String phonePrefix, CloudCallBeak<Boolean> cloudCallBeak) { 
 | 
        String requestUrl = HttpApi.C_POST_GET_OAUTH_REGISTER; 
 | 
        JsonObject json = new JsonObject(); 
 | 
        if (isPhone) { 
 | 
            json.addProperty("memberPhone", account);//用户手机号 手机号和邮箱必填其一 
 | 
            json.addProperty("phonePrefix", phonePrefix.replace("+", ""));//手机号前缀 
 | 
        } 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 phonePrefix   手机号前缀 
 | 
     * @param cloudCallBeak - 
 | 
     */ 
 | 
    public void changePassword_C(boolean isPhone, String account, String loginPwd, String verifyCode, String phonePrefix, CloudCallBeak<Boolean> cloudCallBeak) { 
 | 
        String requestUrl = HttpApi.C_POST_FORGET_PROGRAM_PWD; 
 | 
        JsonObject json = new JsonObject(); 
 | 
        if (isPhone) { 
 | 
            json.addProperty("memberPhone", account);//用户手机号 手机号和邮箱必填其一 
 | 
            json.addProperty("phonePrefix", phonePrefix.replace("+", ""));//手机号前缀 
 | 
        } 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); 
 | 
                } 
 | 
            } 
 | 
        }); 
 | 
  
 | 
  
 | 
    } 
 | 
  
 | 
  
 | 
    /** 
 | 
     * 更改个人密码(C端账号) 
 | 
     * 
 | 
     * @param loginOldPwd 老密码 
 | 
     * @param loginPwd    新密码 
 | 
     */ 
 | 
    public void updatePassword_C(String loginOldPwd, String loginPwd, CloudCallBeak<String> cloudCallBeak) { 
 | 
        String requestUrl = HttpApi.C_POST_UPDATE_PROGRAM_PASSWORD; 
 | 
        JsonObject json = new JsonObject(); 
 | 
        json.addProperty("loginPwd", loginOldPwd);//老密码 
 | 
        json.addProperty("loginNewPwd", loginPwd);//新密码 
 | 
        HttpClient.getInstance().requestHttp(requestUrl, json.toString(), new CloudCallBeak<String>() { 
 | 
            @Override 
 | 
            public void onSuccess(String str) { 
 | 
                if (cloudCallBeak != null) { 
 | 
                    cloudCallBeak.onSuccess(str); 
 | 
                } 
 | 
            } 
 | 
  
 | 
            @Override 
 | 
            public void onFailure(HDLException e) { 
 | 
                if (cloudCallBeak != null) { 
 | 
                    cloudCallBeak.onFailure(e); 
 | 
                } 
 | 
            } 
 | 
        }); 
 | 
  
 | 
  
 | 
    } 
 | 
  
 | 
    /** 
 | 
     * 绑定认证(手机/邮箱)(C端账号) 
 | 
     * 
 | 
     * @param memberPhone 手机号(未绑定手机号参数传null) 
 | 
     * @param memberEmail 邮箱(未绑定邮箱参数传null) 
 | 
     * @param phonePrefix 手机号前缀 
 | 
     * @param verifyCode  验证码 
 | 
     */ 
 | 
    public void bindingAccount_C(String memberPhone, String memberEmail, String verifyCode, String phonePrefix, CloudCallBeak<Boolean> cloudCallBeak) { 
 | 
        String requestUrl = HttpApi.C_POST_MEMBERINFO_BINDWITHACCOUNT; 
 | 
        JsonObject json = new JsonObject(); 
 | 
        if (!TextUtils.isEmpty(memberPhone)) { 
 | 
            json.addProperty("memberPhone", memberPhone);//手机号 
 | 
            json.addProperty("phonePrefix", phonePrefix.replace("+", ""));//手机号前缀 
 | 
        } 
 | 
        if (!TextUtils.isEmpty(memberEmail)) { 
 | 
            json.addProperty("memberEmail", memberEmail);//邮箱 
 | 
        } 
 | 
        json.addProperty("verifyCode", verifyCode);//验证码 
 | 
        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 unBindLabel 解绑标识(PHONE   EMAIL) 
 | 
     */ 
 | 
    public void unBindingAccount_C(String unBindLabel, CloudCallBeak<Boolean> cloudCallBeak) { 
 | 
        String requestUrl = HttpApi.C_POST_MEMBERINFO_UNBINDWITHACCOUNT; 
 | 
        JsonObject json = new JsonObject(); 
 | 
        json.addProperty("unBindLabel", unBindLabel);//手机号(PHONE   EMAIL) 
 | 
        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 
 | 
  
 | 
  
 | 
    /** 
 | 
     * 发送验证码(C端) 
 | 
     * 
 | 
     * @param isPhone       true表示手机号,否则是邮箱 
 | 
     * @param account       账号 (手机或者邮箱) 
 | 
     * @param phonePrefix   手机号前缀 
 | 
     * @param verifyType    1:注册 2:找回密码 3:绑定4:验证码登陆 5:敏感数据 
 | 
     * @param cloudCallBeak - 
 | 
     */ 
 | 
    public void sendVerifyCode_C(boolean isPhone, String account, String phonePrefix, String verifyType, CloudCallBeak<Boolean> cloudCallBeak) { 
 | 
        String requestUrl = HttpApi.POST_SEND_VERIFICATION_C; 
 | 
        JsonObject json = new JsonObject(); 
 | 
        if (isPhone) { 
 | 
            json.addProperty("phone", account);//用户手机号 
 | 
            json.addProperty("phonePrefix", phonePrefix.replace("+", ""));//手机号前缀 
 | 
        } 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); 
 | 
                } 
 | 
            } 
 | 
        }); 
 | 
  
 | 
  
 | 
    } 
 | 
  
 | 
    /** 
 | 
     * 发送验证码(B端) 
 | 
     * 
 | 
     * @param isPhone       true表示手机号,否则是邮箱 
 | 
     * @param account       账号 (手机或者邮箱) 
 | 
     * @param phonePrefix   手机号前缀 
 | 
     * @param verifyType    1:注册 2:找回密码 3:绑定4:验证码登陆 5:敏感数据 
 | 
     * @param cloudCallBeak - 
 | 
     */ 
 | 
    public void sendVerifyCode_B(boolean isPhone, String account, String phonePrefix, String verifyType, CloudCallBeak<Boolean> cloudCallBeak) { 
 | 
        String requestUrl = isPhone ? HttpApi.POST_SEND_VERIFICATION_Phone_B : HttpApi.POST_SEND_VERIFICATION_Email_B; 
 | 
        JsonObject json = new JsonObject(); 
 | 
        if (isPhone) { 
 | 
            json.addProperty("userPhone", account);//用户手机号 
 | 
            json.addProperty("phonePrefix", phonePrefix.replace("+", ""));//手机号前缀 
 | 
        } else { 
 | 
            json.addProperty("userEmail", 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; 
 | 
        //通知云端,已经退出登陆 
 | 
        HttpClient.getInstance().requestHttp(requestUrl, new JsonObject().toString(), null); 
 | 
    } 
 | 
  
 | 
    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); 
 | 
    } 
 | 
  
 | 
    /** 
 | 
     * 注销账号(C端账号) 
 | 
     * 
 | 
     * @param pwd           账号密码 
 | 
     * @param cloudCallBeak - 
 | 
     */ 
 | 
    public void accountUnregisterC(String pwd, CloudCallBeak<Boolean> cloudCallBeak) { 
 | 
        String requestUrl = HttpApi.C_POST_MEMBER_UNREGISTER; 
 | 
        JsonObject json = new JsonObject(); 
 | 
        json.addProperty("userId", UserConfigManage.getInstance().getUserId()); 
 | 
        json.addProperty("pwd", pwd); 
 | 
        HttpClient.getInstance().requestHttp(requestUrl, json.toString(), new CloudCallBeak<String>() { 
 | 
            @Override 
 | 
            public void onSuccess(String jsonStr) { 
 | 
                if (cloudCallBeak != null) { 
 | 
                    cloudCallBeak.onSuccess(true); 
 | 
                } 
 | 
            } 
 | 
  
 | 
            @Override 
 | 
            public void onFailure(HDLException e) { 
 | 
                if (cloudCallBeak != null) { 
 | 
                    cloudCallBeak.onFailure(e); 
 | 
                } 
 | 
            } 
 | 
        }); 
 | 
  
 | 
  
 | 
    } 
 | 
  
 | 
    /** 
 | 
     * 退出登录 
 | 
     */ 
 | 
    public void logout(LogoutType logoutType) { 
 | 
        HdlResidenceLogic.getInstance().pushDel(new CloudCallBeak<String>() { 
 | 
            @Override 
 | 
            public void onSuccess(String obj) { 
 | 
//                SharedPreUtils.putBoolean("pushAddCache", true); 
 | 
                HDLLinkPMUser.getInstance().logout(logoutType.getValue()); 
 | 
            } 
 | 
  
 | 
            @Override 
 | 
            public void onFailure(HDLException e) { 
 | 
//                SharedPreUtils.putBoolean("pushAddCache", false); 
 | 
                HDLLinkPMUser.getInstance().logout(logoutType.getValue()); 
 | 
            } 
 | 
        }); 
 | 
    } 
 | 
  
 | 
    /** 
 | 
     * 登录成功保存登录信息 
 | 
     */ 
 | 
    private void saveUserData(HDLLoginBean obj) { 
 | 
        if (obj != null) { 
 | 
            boolean isUserId = UserConfigManage.getInstance().getUserId().equals(obj.getUserId()); 
 | 
            UserConfigManage.getInstance().setTheSameLoginAccount(isUserId);//与上一个账号是否同一个 
 | 
            //UserConfigManage.getInstance().getUserId()表示第一次安装登录 
 | 
            if (!TextUtils.isEmpty(UserConfigManage.getInstance().getUserId()) && !UserConfigManage.getInstance().isTheSameLoginAccount()) { 
 | 
                //不同账号,删除之前的旧账号日志信息; 
 | 
                HdlFileLogic.getInstance().deleteDirectory(HdlFileLogic.getInstance().getCurrentUserRootPath()); 
 | 
                HdlFileLogic.getInstance().deleteDirectory(HdlFileLogic.getInstance().getUserFilePath()); 
 | 
                UserConfigManage.getInstance().setHomeId(""); 
 | 
            } 
 | 
            UserConfigManage.getInstance().setLogin(true);//是否登录 
 | 
            UserConfigManage.getInstance().setAcceiptPolicy(true);//是否选择隐私政策 
 | 
            UserConfigManage.getInstance().setLoginDateTime(System.currentTimeMillis());//登录时间 
 | 
            UserConfigManage.getInstance().setUserId(obj.getUserId());//用户id 
 | 
            //b端和c端定义账号字段不一样 
 | 
            UserConfigManage.getInstance().setAccount(TextUtils.isEmpty(obj.getAccount()) ? obj.getUserPhone() : obj.getAccount());//账号 
 | 
            UserConfigManage.getInstance().setBingPhone(obj.getUserPhone());//绑定手机 
 | 
            UserConfigManage.getInstance().setBingEmail(obj.getUserEmail());//绑定邮箱 
 | 
  
 | 
            UserConfigManage.getInstance().setUserName(obj.getName()); 
 | 
            UserConfigManage.getInstance().setToken(obj.getAccessToken());//Token 
 | 
            UserConfigManage.getInstance().setHeaderPrefix(obj.getHeaderPrefix());//认证请求头前缀(底层请求统一加) 
 | 
            UserConfigManage.getInstance().setRefreshToken(obj.getRefreshToken());//刷新Token用的 
 | 
            UserConfigManage.getInstance().setNoNetworkFlag(false); 
 | 
            UserConfigManage.getInstance().Save(); 
 | 
        } 
 | 
  
 | 
    } 
 | 
  
 | 
  
 | 
} 
 |