Commit bcd995f534b6c6d42de017790434d77a44b07293

Authored by 韩亚云
1 parent 67acd2ba

三方登录功能抽取

cloud/third_tool/src/main/java/com/cnlive/login/action/UserThirdAction.java
1 package com.cnlive.login.action; 1 package com.cnlive.login.action;
2 2
  3 +import android.accounts.Account;
3 import android.content.Context; 4 import android.content.Context;
  5 +import android.text.TextUtils;
  6 +
  7 +import com.cnlive.cloud.user.auth.UserService;
  8 +import com.cnlive.cloud.user.model.CNLiveUserInfo;
  9 +import com.cnlive.core.network.HttpConn;
  10 +import com.cnlive.core.network.NetCallBack;
  11 +import com.cnlive.core.network.model.BaseResult;
  12 +import com.cnlive.core.network.model.UserData;
  13 +
  14 +import io.reactivex.Observable;
4 15
5 //import com.cnlive.strike.user.model.CNLiveUserInfo; 16 //import com.cnlive.strike.user.model.CNLiveUserInfo;
6 17
@@ -11,23 +22,89 @@ import android.content.Context; @@ -11,23 +22,89 @@ import android.content.Context;
11 public class UserThirdAction { 22 public class UserThirdAction {
12 23
13 24
14 -// public static void otherLogin(Context context, String thirdPartyPlat, String thirdPartyId, Event<CNLiveUserInfo> event) {  
15 -// Logic.create()  
16 -// .action(UserThirdUtilAction.otherLogin(context, thirdPartyPlat, thirdPartyId))  
17 -// .action(loginAppAction(context, "", "", true))  
18 -// .action(loginIMAction())  
19 -// .start(event);  
20 -// }  
21 -//  
22 -//  
23 -// public static void otherLoginBindMobile(Context context, String phone, String countryCode, String ems,  
24 -// String thirdPartyPlat, String thirdPartyId, String nickName, String gender,  
25 -// String location, String faceUrl, Event<CNLiveUserInfo> event) {  
26 -// Logic.create()  
27 -// .action(UserThirdUtilAction.otherLoginBindMobile(context, phone, countryCode, ems,  
28 -// thirdPartyPlat, thirdPartyId, nickName, gender, location, faceUrl))  
29 -// .action(loginAppAction(context, "", "", true))  
30 -// .action(loginIMAction())  
31 -// .start(event);  
32 -// } 25 + private static final int MAX_USER_COUNT = 1;
  26 +
  27 + public static void otherLogin(Context context, String thirdPartyPlat, String thirdPartyId, CallBack callBack) {
  28 +
  29 + HttpConn.action(UserThirdUtilAction.otherLogin(context, thirdPartyPlat, thirdPartyId), new NetCallBack<BaseResult<UserData>>() {
  30 + @Override
  31 + public void onRequestState(int state) {
  32 + if (null != callBack) {
  33 + callBack.callback(state, "", null);
  34 + }
  35 + }
  36 +
  37 + @Override
  38 + public void onSuccess(BaseResult<UserData> data) {
  39 + loginAppAction(data, context, "", "", true, callBack);
  40 + }
  41 +
  42 + @Override
  43 + public void onFailure(String errCode, String errMsg, Exception e) {
  44 + if (null != callBack) {
  45 + callBack.callback(Integer.parseInt(errCode), errMsg, null);
  46 + }
  47 + }
  48 + });
  49 + }
  50 +
  51 +
  52 + public static void otherLoginBindMobile(Context context, String phone, String countryCode, String ems,
  53 + String thirdPartyPlat, String thirdPartyId, String nickName, String gender,
  54 + String location, String faceUrl, CallBack callBack) {
  55 +
  56 + HttpConn.action(UserThirdUtilAction.otherLoginBindMobile(context, phone, countryCode, ems,
  57 + thirdPartyPlat, thirdPartyId, nickName, gender, location, faceUrl), new NetCallBack<BaseResult<UserData>>() {
  58 + @Override
  59 + public void onRequestState(int state) {
  60 + if (null != callBack) {
  61 + callBack.callback(state, "", null);
  62 + }
  63 + }
  64 +
  65 + @Override
  66 + public void onSuccess(BaseResult<UserData> data) {
  67 + loginAppAction(data,context, "", "", true, callBack);
  68 + }
  69 +
  70 + @Override
  71 + public void onFailure(String errCode, String errMsg, Exception e) {
  72 +
  73 + }
  74 + });
  75 + }
  76 +
  77 +
  78 + private static Observable<CNLiveUserInfo> loginAppAction(BaseResult<UserData> data, Context context, String userName, String userPassword, boolean otherLogin, CallBack callBack) {
  79 + CNLiveUserInfo userinfo = null;
  80 + if (null == data || null == data.getData()) {
  81 + if (null != callBack) {
  82 + callBack.callback(-5, "获取账户信息失败 请重试.", null);
  83 + }
  84 + } else if (TextUtils.isEmpty(data.getData().getMobile())) {
  85 + callBack.callback(-5, "绑定手机号已失效..", null);
  86 + } else {
  87 + //更新登录用户信息
  88 + UserService userService = UserService.getInstance(context);
  89 + userService.loginAppAccount(
  90 + otherLogin ? data.getData().getMobile() : userName,
  91 + otherLogin ? data.getData().getMobile() : userPassword,
  92 + data.getData());
  93 + //保留近期登录用户
  94 + Account[] accounts = userService.getUserList();
  95 + userinfo = userService.getAppAccount();
  96 + if (accounts.length <= MAX_USER_COUNT) {
  97 + callBack.callback(0, "", userinfo);
  98 + } else {
  99 + CNLiveUserInfo finalUserinfo = userinfo;
  100 + userService.removeUser(accounts[0], future -> callBack.callback(0, "", finalUserinfo));
  101 + }
  102 + }
  103 + return Observable.just(userinfo);
  104 + }
  105 +
  106 +
  107 + public interface CallBack {
  108 + void callback(int state, String msg, Object object);
  109 + }
33 } 110 }
cloud/third_tool/src/main/java/com/cnlive/login/action/UserThirdUtilAction.java
@@ -3,82 +3,81 @@ package com.cnlive.login.action; @@ -3,82 +3,81 @@ package com.cnlive.login.action;
3 import android.content.Context; 3 import android.content.Context;
4 4
5 import com.cnlive.core.libs.base.application.AppConfig; 5 import com.cnlive.core.libs.base.application.AppConfig;
  6 +import com.cnlive.core.network.api.ApiBaseServiceOpen;
  7 +import com.cnlive.core.network.model.BaseResult;
6 import com.cnlive.core.network.model.UserData; 8 import com.cnlive.core.network.model.UserData;
  9 +import com.cnlive.core.network.request.BaseRequest;
7 10
8 import java.util.HashMap; 11 import java.util.HashMap;
9 import java.util.Map; 12 import java.util.Map;
10 13
  14 +import io.reactivex.Observable;
  15 +
11 /** 16 /**
12 * created by hanyayun 17 * created by hanyayun
13 * on 2019/12/4 18 * on 2019/12/4
14 */ 19 */
15 public class UserThirdUtilAction { 20 public class UserThirdUtilAction {
16 21
17 -// /**  
18 -// * 其他平台账户登录  
19 -// *  
20 -// * @param context  
21 -// * @param thirdPartyPlat 平台类型 1:sina 2:qq 3:weixin 4:renren  
22 -// * @param thirdPartyId 第三方用户ID  
23 -// * [qq: 建议使用openid, wx: 建议使用unionid, sina: 建议使用idstr];  
24 -// * 注意:同一用户在登录Sp下不同app时,thirdPartyId必须相同  
25 -// */  
26 -// public static Logic.Action<Object, BaseInfo<UserData>> otherLogin(Context context, String thirdPartyPlat, String thirdPartyId) {  
27 -// return (data, callback) -> {  
28 -// Map<String, String> requestMap = new HashMap<>();  
29 -//  
30 -// requestMap.put("appId", AppConfig.getAppId());  
31 -// requestMap.put("thirdPartyPlat", thirdPartyPlat);  
32 -// requestMap.put("thirdPartyId", thirdPartyId);  
33 -// requestMap.put("frmId", AppConfig.getAppChannel());  
34 -// requestMap.put("clientPlat", "a");  
35 -//  
36 -// return ApiRequest.service(ApiServiceOpen.class, service -> service.loginIn3rdForWJJ(requestMap)).subscribe(context, callback);  
37 -// };  
38 -// }  
39 -//  
40 -// /**  
41 -// * 其他平台账户版定手机号并登录  
42 -// *  
43 -// * @param context  
44 -// * @param thirdPartyPlat 平台类型 1:sina 2:qq 3:weixin 4:renren  
45 -// * @param thirdPartyId 第三方用户ID  
46 -// * [qq: 建议使用openid, wx: 建议使用unionid, sina: 建议使用idstr];  
47 -// * 注意:同一用户在登录Sp下不同app时,thirdPartyId必须相同  
48 -// */  
49 -//  
50 -//  
51 -// public static Logic.Action<Object, BaseInfo<UserData>> otherLoginBindMobile(Context context,  
52 -// String phone,  
53 -// String countryCode,  
54 -// String ems,  
55 -// String thirdPartyPlat,  
56 -// String thirdPartyId,  
57 -// String nickName,  
58 -// String gender,  
59 -// String location,  
60 -// String faceUrl) {  
61 -// return (data, callback) -> {  
62 -// Map<String, String> requestMap = new HashMap<>();  
63 -//  
64 -// requestMap.put("frmId", AppConfig.getAppChannel());  
65 -// requestMap.put("clientPlat", "a");  
66 -// requestMap.put("uuid", AppConfig.getAppUUID());  
67 -//  
68 -// requestMap.put("appId", AppConfig.getAppId());  
69 -// requestMap.put("mobile", phone);  
70 -// requestMap.put("countryCode", countryCode);  
71 -// requestMap.put("verificationCode", ems);  
72 -//  
73 -// requestMap.put("thirdPartyPlat", thirdPartyPlat);  
74 -// requestMap.put("thirdPartyId", thirdPartyId);  
75 -// requestMap.put("nickName", nickName);  
76 -// requestMap.put("gender", gender);  
77 -// requestMap.put("location", location);  
78 -// requestMap.put("faceUrl", faceUrl);  
79 -//  
80 -//  
81 -// return ApiRequest.service(ApiServiceOpen.class, service -> service.loginIn3rdAndMobileForWJJ(requestMap)).subscribe(context, callback);  
82 -// };  
83 -// } 22 + /**
  23 + * 其他平台账户登录
  24 + *
  25 + * @param context
  26 + * @param thirdPartyPlat 平台类型 1:sina 2:qq 3:weixin 4:renren
  27 + * @param thirdPartyId 第三方用户ID
  28 + * [qq: 建议使用openid, wx: 建议使用unionid, sina: 建议使用idstr];
  29 + * 注意:同一用户在登录Sp下不同app时,thirdPartyId必须相同
  30 + */
  31 + public static Observable<BaseResult<UserData>> otherLogin(Context context, String thirdPartyPlat, String thirdPartyId) {
  32 +
  33 + Map<String, String> requestMap = new HashMap<>();
  34 + requestMap.put("appId", AppConfig.getAppId());
  35 + requestMap.put("thirdPartyPlat", thirdPartyPlat);
  36 + requestMap.put("thirdPartyId", thirdPartyId);
  37 + requestMap.put("frmId", AppConfig.getAppChannel());
  38 + requestMap.put("clientPlat", "a");
  39 + return BaseRequest.init().service(ApiBaseServiceOpen.class).loginIn3rdForWJJ(requestMap);
  40 + }
  41 +
  42 + /**
  43 + * 其他平台账户版定手机号并登录
  44 + *
  45 + * @param context
  46 + * @param thirdPartyPlat 平台类型 1:sina 2:qq 3:weixin 4:renren
  47 + * @param thirdPartyId 第三方用户ID
  48 + * [qq: 建议使用openid, wx: 建议使用unionid, sina: 建议使用idstr];
  49 + * 注意:同一用户在登录Sp下不同app时,thirdPartyId必须相同
  50 + */
  51 +
  52 +
  53 + public static Observable<BaseResult<UserData>> otherLoginBindMobile(Context context,
  54 + String phone,
  55 + String countryCode,
  56 + String ems,
  57 + String thirdPartyPlat,
  58 + String thirdPartyId,
  59 + String nickName,
  60 + String gender,
  61 + String location,
  62 + String faceUrl) {
  63 + Map<String, String> requestMap = new HashMap<>();
  64 +
  65 + requestMap.put("frmId", AppConfig.getAppChannel());
  66 + requestMap.put("clientPlat", "a");
  67 + requestMap.put("uuid", AppConfig.getAppUUID());
  68 +
  69 + requestMap.put("appId", AppConfig.getAppId());
  70 + requestMap.put("mobile", phone);
  71 + requestMap.put("countryCode", countryCode);
  72 + requestMap.put("verificationCode", ems);
  73 +
  74 + requestMap.put("thirdPartyPlat", thirdPartyPlat);
  75 + requestMap.put("thirdPartyId", thirdPartyId);
  76 + requestMap.put("nickName", nickName);
  77 + requestMap.put("gender", gender);
  78 + requestMap.put("location", location);
  79 + requestMap.put("faceUrl", faceUrl);
  80 +
  81 + return BaseRequest.init().service(ApiBaseServiceOpen.class).loginIn3rdAndMobileForWJJ(requestMap);
  82 + }
84 } 83 }
core/network/src/main/java/com/cnlive/core/network/api/ApiBaseServiceOpen.java
@@ -160,7 +160,7 @@ public interface ApiBaseServiceOpen { @@ -160,7 +160,7 @@ public interface ApiBaseServiceOpen {
160 160
161 161
162 /** 162 /**
163 - * 音频播放鉴权接口 163 + * 三方登录
164 * 164 *
165 * @param map 165 * @param map
166 * @return 166 * @return