wjc
2023-06-12 715b7407a765deb093b1677705b151d268e3dd4d
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
package com.hdl.photovoltaic.other;
 
 
import com.google.gson.Gson;
import com.google.gson.JsonObject;
import com.hdl.photovoltaic.ui.bean.LoginBean;
import com.hdl.photovoltaic.ui.bean.LoginUserRegionBean;
import com.hdl.photovoltaic.bean.HttpResponsePack;
import com.hdl.photovoltaic.config.AppConfigManage;
import com.hdl.photovoltaic.config.UserConfigManage;
import com.hdl.photovoltaic.internet.HttpClient;
import com.hdl.photovoltaic.internet.api.HttpApi;
import com.hdl.photovoltaic.listener.BaseSuccessFailureCallBeak;
import com.hdl.photovoltaic.listener.CloudCallBeak;
 
import java.util.regex.Matcher;
import java.util.regex.Pattern;
 
/**
 * 登陆界面的逻辑
 */
public class HdlAccountLogic {
 
    private static volatile HdlAccountLogic sHdlAccountLogic;
 
    public static synchronized HdlAccountLogic getInstance() {
        if (sHdlAccountLogic == null) {
            synchronized (HdlAccountLogic.class) {
                if (sHdlAccountLogic == null) {
                    sHdlAccountLogic = new HdlAccountLogic();
                }
            }
 
        }
        return sHdlAccountLogic;
    }
 
 
    /**
     * 初始化账号的Url区域地址
     *
     * @param i_account 账号
     */
    public void regionByAccount(String i_account, CloudCallBeak<LoginUserRegionBean> cloudCallBeak) {
        JsonObject jsonObject = new JsonObject();
        jsonObject.addProperty("account", i_account);
        String full = AppConfigManage.getAPPRegionUrl() + HttpApi.POST_RegionByUserAccount;
        HttpClient.getInstance().requestFullHttp(full, jsonObject.toString(), true, true, new BaseSuccessFailureCallBeak() {
            @Override
            public void onSuccess(HttpResponsePack httpResponsePack) {
                if (httpResponsePack.getData() != null) {
                    Gson gson = new Gson();
                    String json = gson.toJson(httpResponsePack.getData());
                    LoginUserRegionBean loginUserRegionBean = new Gson().fromJson(json, LoginUserRegionBean.class);
                    if (cloudCallBeak != null) {
                        cloudCallBeak.onSuccess(loginUserRegionBean);
                    } else {
                        cloudCallBeak.onFailure(new Exception());
                    }
                }
            }
 
            @Override
            public void onFailure(Exception exception) {
                if (cloudCallBeak != null) {
                    cloudCallBeak.onFailure(exception);
                }
            }
        });
    }
 
    /**
     * 登录
     * 通过账号和密码
     *
     * @param account       手机或者邮箱
     * @param loginPwd      密码
     * @param cloudCallBeak -
     */
    public void loginByPassword(String account, String loginPwd, CloudCallBeak<LoginBean> cloudCallBeak) {
        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");
 
        HttpClient.getInstance().requestHttp(requestUrl, json.toString(), true, true, new BaseSuccessFailureCallBeak() {
            @Override
            public void onSuccess(HttpResponsePack httpResponsePack) {
                if (httpResponsePack.getData() != null) {
                    Gson gson = new Gson();
                    String json = gson.toJson(httpResponsePack.getData());
                    LoginBean loginBean = new Gson().fromJson(json, LoginBean.class);
                    saveUserData(loginBean);
                    if (cloudCallBeak != null) {
                        cloudCallBeak.onSuccess(loginBean);
                    } else {
                        cloudCallBeak.onFailure(new Exception());
                    }
                }
            }
 
            @Override
            public void onFailure(Exception exception) {
                if (cloudCallBeak != null) {
                    cloudCallBeak.onFailure(exception);
                }
            }
        });
    }
 
 
    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(LoginBean obj) {
        if (obj != null) {
            UserConfigManage.getInstance().setLogin(true);
            UserConfigManage.getInstance().setAcceiptPolicy(true);
            UserConfigManage.getInstance().setLoginDateTime(System.currentTimeMillis());
            UserConfigManage.getInstance().setUserId(obj.getUserId());
            UserConfigManage.getInstance().setAccount(obj.getAccount());
            UserConfigManage.getInstance().setToken(obj.getAccessToken());
            UserConfigManage.getInstance().setHeaderPrefix(obj.getHeaderPrefix());
            UserConfigManage.getInstance().setRefreshToken(obj.getRefreshToken());
            boolean isUserId = UserConfigManage.getInstance().getUserId().equals(obj.getUserId());
            UserConfigManage.getInstance().setTheSameLoginAccount(isUserId);
        }
 
    }
 
}